From ad6afdf57e4e3b79e4f582bc70a2b241badbe43b Mon Sep 17 00:00:00 2001 From: Aleteoryx Date: Tue, 25 Mar 2025 00:09:01 -0400 Subject: [PATCH] replace lambdas with labels --- bfc.tal | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/bfc.tal b/bfc.tal index 4227f96ffc792d4cd60a99b6cbc395c7a090b9cf..07dd0a39659959ec073ab483de23a5a74398271d 100644 --- a/bfc.tal +++ b/bfc.tal @@ -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