~aleteoryx/uxn

ad6afdf57e4e3b79e4f582bc70a2b241badbe43b — Aleteoryx 8 months ago e998c9e
replace lambdas with labels
1 files changed, 20 insertions(+), 9 deletions(-)

M bfc.tal
M bfc.tal => bfc.tal +20 -9
@@ 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