From 421ca5112f091f8ba3322a13e128e083e6bd1615 Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Sat, 2 Jan 2021 15:32:08 -0500 Subject: [PATCH] Remove one level of C< override Two was too many. --- blk.fs | 101 ++++++++++++++++++++++++---------------------------------- cvm/stage.bin | Bin 4852 -> 4800 bytes doc/impl.txt | 2 +- 3 files changed, 42 insertions(+), 61 deletions(-) diff --git a/blk.fs b/blk.fs index 5b9d3a6..8379e72 100644 --- a/blk.fs +++ b/blk.fs @@ -1684,11 +1684,9 @@ with "390 LOAD" : IN> 0x30 RAM+ ; ( current position in INBUF ) : IN( 0x60 RAM+ ; ( points to INBUF ) : IN$ 0 IN( DUP IN> ! ! ; ( flush input buffer ) -: QUIT - (resRS) 0 0x08 RAM+ ! ( C<* override ) IN$ - LIT" (main)" FIND DROP EXECUTE -; -1 31 LOADR+ +: C<* 0x0c RAM+ ; +: QUIT (resRS) 0 C<* ! IN$ LIT" (main)" FIND DROP EXECUTE ; +1 28 LOADR+ ( ----- 354 ) : ABORT (resSP) QUIT ; : = CMP NOT ; : < CMP -1 = ; : > CMP 1 = ; @@ -1784,31 +1782,49 @@ XCURRENT @ _xapply ORG @ 0x13 ( stable ABI oflw ) + ! DUP '0' '1' =><= NOT IF 2DROP 0 UNLOOP EXIT THEN '0' - SWAP 1 LSHIFT + ( a r*2+n ) LOOP NIP 1 ; -( ----- 362 ) -: (parse) ( a -- n ) +: (parse) ( a -- n ) _pc IF EXIT THEN _ph IF EXIT THEN _pb IF EXIT THEN _pd IF EXIT THEN - ( nothing works ) - (wnf) -; + ( nothing works ) (wnf) ; +( ----- 362 ) +: EOT? EOT = ; +SYSVARS 0x55 + :** KEY? +: KEY BEGIN KEY? UNTIL ; +( del is same as backspace ) +: BS? DUP 0x7f = SWAP BS = OR ; +: RDLN ( Read 1 line in input buff and make IN> point to it ) + IN$ BEGIN + ( buffer overflow? same as if we typed a newline ) + IN> @ IN( - 0x3e = IF CR ELSE KEY THEN ( c ) + DUP BS? IF + IN> @ IN( > IF -1 IN> +! BS EMIT THEN SPC> BS EMIT + ELSE DUP LF = IF DROP CR THEN ( same as CR ) + DUP EMIT ( echo back ) + DUP IN> @ ! 1 IN> +! THEN ( c ) + DUP CR = SWAP EOT? OR UNTIL IN( IN> ! ; ( ----- 363 ) +: RDLN< + IN> @ C@ ( c ) + DUP IF ( not EOL? good, inc and return ) + 1 IN> +! + ELSE ( EOL ? readline. we still return null though ) + RDLN + THEN ( c ) + ( update C @ C@ 0 > 0x06 RAM+ ! ( 06 == C point to it ) - IN$ BEGIN - ( buffer overflow? same as if we typed a newline ) - IN> @ IN( - 0x3e = IF CR ELSE KEY THEN ( c ) - DUP BS? IF - IN> @ IN( > IF -1 IN> +! BS EMIT THEN SPC> BS EMIT - ELSE DUP LF = IF DROP CR THEN ( same as CR ) - DUP EMIT ( echo back ) - DUP IN> @ ! 1 IN> +! THEN ( c ) - DUP CR = SWAP EOT? OR UNTIL IN( IN> ! ; -( ----- 380 ) -: RDLN< - IN> @ C@ ( c ) - DUP IF ( not EOL? good, inc and return ) - 1 IN> +! - ELSE ( EOL ? readline. we still return null though ) - RDLN - THEN ( c ) - ( update C @ C@ 0 > 0x06 RAM+ ! ( 06 == C LOOP ; -( ----- 382 ) +( ----- 379 ) : INTERPRET BEGIN WORD DUP @ 0x0401 = ( EOT ) IF DROP EXIT THEN @@ -2016,28 +2006,20 @@ SYSVARS 0x55 + :** KEY? ( 2e == BOOT C< PTR ) 0x2e ( BOOT C< PTR ) RAM+ @ DUP C@ ( a c ) SWAP 1 + 0x2e RAM+ ! ( c ) ; -( pre-comment for tight LOAD: The 0x08==I check after INTERPRET - is to check whether we're restoring to "_", the word above. - if yes, then we're in a nested load. Also, the 1 in 0x06 is - to avoid tons of "ok" displays. ) -( ----- 383 ) +( ----- 380 ) : LOAD BLK> @ >R ( save restorable variables to RSP ) - 0x08 RAM+ @ >R ( 08 == C<* override ) + C<* @ >R 0x06 RAM+ @ >R ( CR ( boot ptr ) BLK@ BLK( 0x2e RAM+ ! ( Point to beginning of BLK ) - ['] (boot<) 0x08 RAM+ ! + ['] (boot<) 0x0c RAM+ ! 1 0x06 RAM+ ! ( 06 == C 0x2e RAM+ ! R> 0x06 RAM+ ! - I 0x08 RAM+ @ = IF ( nested load ) - R> DROP ( C<* ) R> BLK@ - ELSE ( not nested ) - R> 0x08 RAM+ ! R> DROP ( BLK> ) - THEN ; -( ----- 384 ) + R> C<* ! R> BLK@ ; +( ----- 381 ) : LOAD+ BLK> @ + LOAD ; ( b1 b2 -- ) : LOADR 1+ SWAP DO I DUP . SPC> LOAD LOOP ; @@ -2048,13 +2030,12 @@ SYSVARS 0x55 + :** KEY? : BOOT 0x02 RAM+ CURRENT* ! CURRENT @ 0x2e RAM+ ! ( 2e == BOOT C< PTR ) - 0 0x08 RAM+ ! ( 08 == C<* override ) 0 0x50 RAM+ C! ( NL> ) ['] (emit) ['] EMIT **! ['] (key?) ['] KEY? **! - ['] (boot<) ['] C<* **! + ['] (boot<) C<* ! ( boot< always has a char waiting. 06 == C (main) ; XCURRENT @ _xapply ORG @ 0x04 ( stable ABI BOOT ) + ! diff --git a/cvm/stage.bin b/cvm/stage.bin index 5fc72b96459bdea38313395f0aa2b78ce9045807..4badec7bd85bba769eb5d9c237688c9a91f8f54d 100644 GIT binary patch delta 2647 zcmYjTeN0=|6+idAXZ!iv5JJfM9EgGN5ds9ZOmiW?11B+YY%nH)p(uQmq*}5N0V5-o zX101wr>Pq2ZK=>$9X48!CLvW#s%e_kNztlGRa9xMv`E#YRTV|+IyK3vX@3y5-+2$J zT6)j-o_oH}@0|O-to&1D5#e_%WIC1#d1d`Z-zZvC!ksO(g`^6Te6%GD>g|tb{G^F# zA;p`Dd|Ua3>mWJA)8elDyRt9)NHOTRhlF@mEDGKOs8ksZqRj?MV0rOrJ@0v59?x`8pDbRK^Ft4W&S)wWi1=ZBR2Pb|#)FAkFdH z?Y_)lPfQ2HvMR+eEvrlNbuIbr2ig+Yk_m*!Dd|B<_RcY)w(HIc70;PZQ<%`Ba>6(HRI$G5hs#h&@b)3f7pNTJ1pWHavMu!+A0B)w>3uJ>DXYK z7X^K78!IR5-*h$5mO*A8$Vi3{j%JaGJiVtqlEeNd206*jPf$#C-j$| z9t7yUCFYa@?LDAi+j>`0S&se+Q%KtaeWK-1_#Cl782D%29H^{+R(|L|bgFI5g=Gd(J>ppj#K~kg63d z;VgB-`=DF?O7Gay?4Cezs&veWKe!nH>YV&SuMjt6k^B4EK`l>@p?zrl>h$F7`65(( zS$$p|@{B0`$c8TF^%b4h9DKFKR1*PHvwPBmJf>qEnHUH4iic+fM}4*<9q%v`u{{9s zszv2)KaonGjG^D1;?M3JpuKK2LiR<^c=0@hI#bEMOh+?Qj9PL-hT-vt>lSNOgr z(_Rdj9I@06nha|5F(E8ow$#|Fq1ypy*&5HCiT5B>P2BgIM4A+rv^gIt25MK^UIex% zKJ(u94r5jvg+<2>sEoS^P%*poy zb4IOhnelI9WNL727>3Km=N8+xb_c`b!2;NH>u6cc(E~94i0qkxU>I~u8U~(M2K@)J zd4H69I}z{8aAX5MlR}p0Nr05?dFU~Z&~43WnQTW|0!W==9k#>6JlUyY=29zIYp$c6 zIBTDJ9Z|Y%P&}E5rF+t`%ow==I`-Klp;doXw+Y;DKzy&u>eox?sRr_GW7aDZmsd5f zyc76VCl|VxxVw8{jE8`|;x^*dfRAg+yD+rh4cPZDPnF$~F(;1(_ZkDx5f%gBN93uF zuEXC0K3KUTHsxHf_z=gs8Hm!C_IdiS0bJM&c?)hF_9gkpU^8R-VX%?^%0sncP9{TD zS-#?GVY4J;BG-*5z)H}hn=W464Y2L6c@*Gpg0Og1=_c*M)a=xxr<=T;6IZT`T$>s% zOZ6dmM|B8yRP7|P&HbsNKe^eWwY4G4B_=s`NEb%Op1v%#f)KtO8YtLJuF=V|iJ6O6 zaG_#)bfqfjCva?-<}nO7xKvM&a-c*liY`6~aqlPMnWX*QV1mxJs(tih(M_VJ+5HT< z;yxr```2@GBi9woWp$Qo|d@k$u)lx1~kG zo!c0=^(?-QDzSKdq!fnk6_~WDv0oi#DxHZG&~xGo&^DEMUA7k*aCt=8%|L%L6HgS= zPhrw_Z}(uR5Q&%z7nsLs@xo_Hb_pqrSA6;NsCY-opmzL2hI XT3mMbWAas$Rh7j~^tH>63itmXNW(A* delta 2719 zcmYjTYiv{J8GgTW@j1RH4o#ssA#Q?aNGS=cwra*9$w?fVVC>X6kWh$78iJ6Z7?H3p z+gf+2$Aq?SiayCK60Mn{DNLHs&}iW&Keo1;*4_SqRMh=S5L-KS4XT6`kv;D@iG(E| zf9Jhlp7;HHJMl2FiST))=0*MQF+RDU;p>~`mDtM%`<*({#I%sYCX-f${Il{*DM7k8 zDQ+khb(kc?+hUb0N_)pE;y&nm11^2ueQ8ezNrC=aX^mMO{PvaN>U8*VUUSdwdpiQ8 zim=Lzy=i9Hq|kL*QXK-XMYT`7AwN)`#q+M3!n00$UKC}w z)*yUxRQqQ0Q7xxglsVAv)RLwzJRWim4`xi{P*J5Aql!8wuWPv%m$W&E<+6xfg@-|8 zyIZ_NZRDHN5)`&6Ommt|0X$)?P}l~s%i2BpZM{h(|> z@z;yzj>pdwr{gDz=g%Bxfn#Tnk55cAkqG4uUy-K@L>ndo^(|x6l z)J425A+Nf)%<3#@DJvDO##RX+uGm;-We)*w4fuA}rG)v}{Vk+*O!W zQP++4C1P99u;_gd=Vjg(+dQJSk>3l=A`WgG-xD+*57}FE z!Tb5l`}u?J63?TKJ?T#FfK5I$ss$PH{zR?)SGQutdAwVREi-Gn*F0E9R%ikMlZhejJ2A5s@s zSE*GjA`WiSE~LcmS~fmM(Uz;!Zkpm6v|0sg__|Ew(r(J{`@8ELvxs1lJbj;&Q&&`Z(LSZZF8|n}JX+)fczr36~QW|6b}N8;)=L~r$u&l|Fa3y z>rS9We1z{b0LOed%pM$iX*1^R0mw)?6MRCas~$RKVl5sbx1nP}CNzopx4AkDvr;ypa2nHVo#xRJx;nAodmV0W7{>Rx39&Uo> zSg=YnLH3df$~&Pw8D16MtOR*L=d>##A|4|Wo4$j^wjLVqmoF^pOreJ@A{oN)aywbd z4=Fhu-g&ARn$!4e(XNp#0PKpm6uQKcylGi71?y$H6k5TK(h%Ah9Jh$iU9lDIeN5(; z6^NNGtD=@^34(8~&n1#!)XizwCM5qG-ulArP>NP9+MhYxiOlq0KgP+2N!Sx^W4b+r zN#N~*CSz!-bX&VGe`_=x=6d_?A|bUmT&4n~o8AJ@exY!-=+Rq>PrHpxyW&0*6fe_X zFivhI?jiwBf)yH3Zk8?6U9hW|qqzBvl8+6a4zmF7$u-3re+ERhf5>S=4`xv58aK&( zm?sVp+ZFcJ6)ou&rwa{?pvj8M>_RQ8P`~Z>8J9S(HD4JKZ&;U&swxq z%*xi9WXbc$e-rrPY{hT7#zr?2K-tGpoA!kH#Q9+nYfolp)4y@KGW9)WfV5*%GgHz( zK*65k>C@w9rzYe1AyiM#*5IydokhEN7irixsR$Ux%Je4_D48Z8 zc>z$-`;3v=1bqU4^>w<@w7I_L1@BeorA)345tV6Nxu_boRooJ|da^^iV)HeJ>@u5LSDaGGoBf@lHlp0Z%b zP|PZEO*SfUFz57V>*>dE>4mq!I1)o4W`U_uAJX>_*ONam*q_Zr=qI=hMrt=|c4VDC iT2B|jV9!UAqXBx`mGYJz7XG$)GM?!h>XM7GE&m6fpiB7x diff --git a/doc/impl.txt b/doc/impl.txt index 724284d..ea5a632 100644 --- a/doc/impl.txt +++ b/doc/impl.txt @@ -165,7 +165,7 @@ SYSVARS FUTURE USES +3c BLK(* +02 CURRENT +3e ~C!* +04 HERE +41 ~C!ERR +06 C character ++08 FUTURE USES +50 NL> character +0a FUTURE USES +51 CURRENTPTR +0c C<* +53 EMIT ialias +0e WORDBUF +55 KEY? ialias