diff --git a/cli/checksum/checksum.tal b/cli/checksum/checksum.tal index 4926935..0afbad1 100644 --- a/cli/checksum/checksum.tal +++ b/cli/checksum/checksum.tal @@ -7,71 +7,84 @@ @src $40 -|0100 ( -> ) - - .Console/type DEI ?&on-arg - ;dict/usage &w LDAk #19 DEO INC2 LDAk ?&w POP2 - #010f DEO - -BRK - -&on-arg ( -> ) +|0100 +@on-reset ( -> ) + .Console/type DEI ?&>has-arg + ;dict/usage + #010f DEO + BRK &>has-arg ;await-src .Console/vector DEO2 - -BRK + BRK @await-src ( -> ) - - .Console/read DEI .src skey - ?on-ready - -BRK + .Console/read DEI .src skey ?on-ready + BRK @on-ready ( -> ) - - ;src - DUP2 hash plong #2018 DEO - pstr #0a18 DEO + ;src DUP2 hash + #2018 DEO + + #0a18 DEO #800f DEO - -BRK + BRK ( @|core ) @hash ( filename* -- x* y* ) - .File/name DEO2 #0001 .File/length DEO2 - #1234 ,&x STR2 #abcd ,&y STR2 - #2443 ,&a STR2 #118d ,&b STR2 - &w + #1234 ,&x STR2 + #abcd ,&y STR2 + #2443 ,&a STR2 + #118d ,&b STR2 + &w ( -- ) ;&c .File/read DEO2 - [ LIT &c $1 ] DUP DUP2 - [ LIT2 &x $2 ] [ LIT2 &a $2 ] MUL2 ADD2 ,&x STR2 + [ LIT &c $1 ] DUP DUP2 [ LIT2 &x $2 ] [ LIT2 &a $2 ] MUL2 ADD2 ,&x STR2 [ LIT2 &y $2 ] [ LIT2 &b $2 ] MUL2 ADD2 ,&y STR2 .File/success DEI2 ORA ?&w - ,&x LDR2 ,&y LDR2 - -JMP2r + ,&x LDR2 ,&y LDR2 JMP2r ( @|stdlib ) @scap ( str* -- end* ) - LDAk #00 NEQ [ JMP JMP2r ] &w INC2 LDAk ?&w JMP2r -@sput ( chr str* -- ) - scap STA JMP2r -@skey ( key buf -- proc ) - OVR #21 LTH ?&eval #00 SWP sput #00 JMP2r &eval POP2 #01 JMP2r -@pstr ( str* -- ) - &w LDAk #18 DEO INC2 LDAk ?&w POP2 JMP2r -@plong ( a* b* -> ) - SWP2 plong/s - &s SWP plong/b - &b DUP #04 SFT plong/c - &c #0f AND DUP #09 GTH #27 MUL ADD #30 ADD #18 DEO JMP2r -@dict - &usage "usage: 20 "checksum.rom 20 "input.bin 0a $1 + !&a + &w ( -- ) + INC2 &a LDAk ?&w + JMP2r + +@sput ( chr str* -- ) + scap ROT #00 SWP2 STA2 + JMP2r + +@skey ( key buf -- proc ) + OVR #21 LTH ?&eval + #00 SWP sput #00 JMP2r + &eval POP2 #01 JMP2r + +@ ( str* -- ) + &w ( -- ) + LDAk #18 DEO + INC2 LDAk ?&w + POP2 JMP2r + +@ ( str* -- ) + &w ( -- ) + LDAk #19 DEO + INC2 LDAk ?&w + POP2 JMP2r + +@ ( a* b* -> ) + SWP2 /s + &s ( -- ) + SWP /b + &b ( -- ) + DUP #04 SFT /c + &c ( -- ) + #0f AND DUP #09 GTH #27 MUL ADD #30 ADD #18 DEO + JMP2r + +@dict &usage "usage: 20 "checksum.rom 20 "input.bin 0a $1