diff --git a/cli/format-c/format-c.tal b/cli/format-c/format-c.tal index be68d84..0ae79af 100644 --- a/cli/format-c/format-c.tal +++ b/cli/format-c/format-c.tal @@ -7,62 +7,70 @@ @src $40 -|0100 @on-reset ( -> ) +|0100 +@on-reset ( -> ) ;on-console .Console/vector DEO2 - -BRK + BRK @on-console ( -> ) - - [ LIT2r =src ] - ( read input ) - .Console/read DEI - DUP #20 LTH OVR #7f GTH ORA ?&>end - STH2kr slen #003f GTH2 ?&>end - STH2kr scap STA POP2r BRK - &>end - POP - STH2r - #010f DEO - -BRK + .Console/read DEI .src skey ?{ BRK } + + #800f DEO + BRK @ ( src* -- ) - - .File/name DEO2 + ;src .File/name DEO2 #0001 .File/length DEO2 - ;dict/header pstr - LIT2r 0000 + ;dict/header + [ LIT2r 0000 ] &stream ( -- ) - #00 ,&buf STR - ;&buf .File/read DEO2 - .File/success DEI2 #0000 EQU2 ?&end - [ LIT2 "0 18 ] DEO [ LIT2 "x 18 ] DEO - [ LIT &buf $1 ] phex/b - [ LIT2 ", 18 ] DEO #2018 DEO + ;&buf feof ?&end + [ LIT2 "0 18 ] DEO + [ LIT2 "x 18 ] DEO + [ LIT &buf $1 ] /b + [ LIT2 ", 18 ] DEO + #2018 DEO INC2r - ( linebreak ) - STH2kr #000f AND2 ORA ?&no-lb - #0a18 DEO #0918 DEO - &no-lb - .File/success DEI2 ORA ?&stream - &end - POP2r - #0a18 DEO - ;dict/footer - -!pstr + ( lb ) STHkr #0f AND ?{ + #0a18 DEO + #0918 DEO } + !&stream + &end POP2r #0a18 DEO + ;dict/footer ! ( @|stdlib ) -@slen ( str* -- len* ) DUP2 scap SWP2 SUB2 JMP2r -@scap ( str* -- end* ) LDAk #00 NEQ [ JMP JMP2r ] &w INC2 LDAk ?&w JMP2r -@phex ( short* -- ) SWP phex/b &b DUP #04 SFT phex/c &c #0f AND DUP #09 GTH #27 MUL ADD #30 ADD #18 DEO JMP2r -@pstr ( str* -- ) &while LDAk #18 DEO INC2 LDAk ?&while POP2 JMP2r +@skey ( key buf -- proc ) + OVR #21 LTH ?{ + #00 SWP scap/ STA + #00 JMP2r } + POP2 #01 JMP2r -@dict - &header "unsigned 20 "char 20 "rom[] 20 "= 20 "{ 0a 09 $1 +@scap ( str* -- end* ) + &w ( -- ) + INC2 & LDAk ?&w + JMP2r + +@feof ( buf* -- f ) + .File/read DEO2 + .File/success DEI2 #0000 EQU2 JMP2r + +@ ( short* -- ) + SWP /b + &b ( -- ) + DUP #04 SFT /c + &c ( -- ) + #0f AND DUP #09 GTH #27 MUL ADD #30 ADD #18 DEO + JMP2r + +@ ( str* -- ) + &w ( -- ) + LDAk #18 DEO + INC2 & LDAk ?&w + POP2 JMP2r + +@dict &header "unsigned 20 "char 20 "rom[] 20 "= 20 "{ 0a 09 $1 &footer "}; 0a 00