@@ 18,7 18,7 @@
DUP [ LIT "[ ] NEQ ?{ Loops/open }
DUP [ LIT "] ] NEQ ?{ Loops/close }
- DUP [ LIT ", ] NEQ ?{ Labels/get POP2 }
+ DUP [ LIT ", ] NEQ ?{ Labels/get Labels/print-label }
Code/emit
BRK
@@ 35,7 35,10 @@
DUP #0a LTH ?{ #27 ADD }
#30 ADD .Console/write DEO
JMP2r
-
+@puts ( addr* -- )
+ LDAk DUP ?{ POP2 POP JMP2r }
+ .Console/write DEO
+ INC2 !puts
@Code/tab
"+ =/add
@@ 44,7 47,7 @@
"< =/prev
". =/out
", =/in
- "[ =/open
+ "[ =/close
"] =/close
$1
@@ 54,8 57,9 @@
&prev "OVR 20 "STZ 20 "STHrk 20 "SUB 20 "LDZk 0a
&out "DUP 20 "#18 20 "DEO 0a
&in 20 "POP 20 ";{ 20 "#10 20 "DEO2 20 "BRK 20 "} 20 "#12 20 "DEI 0a
-&open 20 "DUP 20 "#00 20 "EQU 20 "?{ 0a
-&close 20 "} 0a
+
+&open 20 "DUP 20 "#00 20 "EQU 20 $1
+&close "r 0a $1
&intro "|100 20 "( 20 "generated 20 "by 20 "bfc.rom 20 ") 0a
&intro2 "LITr 20 "01 0a
@@ 81,11 85,14 @@
@Labels/get ( -- label* )
[ LIT2 &ctr $2 ] INC2k ,/ctr STR2 ( get next loop idx )
- DUP2
- ( >> )
+ JMP2r
+
&print-label ( n* -- )
[ LIT2 "@ -Console/write ] DEO
!/print-name
+&print-jci ( n* -- )
+ [ LIT2 "? -Console/write ] DEO
+ !/print-name
&print-jmi ( n* -- )
[ LIT2 "! -Console/write ] DEO
( >> )
@@ 95,7 102,9 @@
JMP2r
@Loops/open ( -- )
- Labels/get
+ Labels/get DUP2 Labels/print-label
+ ;Code/open puts
+ DUP2 Labels/print-jci
[ LIT2 &ptr =/stack ] INC2k INC2 ,/ptr STR2 ( increment stack pointer )
STA2 ( store idx )
JMP2r
@@ 103,7 112,9 @@
&close ( -- )
,/ptr LDR2 #0002 SUB2 ( decrement stack pointer )
LDA2k INC2k ORA ?{ ;errs/underflow errs/die }
- Labels/print-jmi
+ DUP2 Labels/print-jmi
+ [ LIT2 20 -Console/write ] DEO
+ Labels/print-label
,/ptr STR2
JMP2r