|0100 @on-reset ( -> ) ;tests/end ;tests &l ( -- ) LDA2k JSR2 test INC2 INC2 GTH2k ?&l POP2 POP2 ( lb ) #0a18 DEO ( debugger ) #010e DEO ( exit ) #800f DEO BRK @test ( f -- ) #30 ADD #18 DEO JMP2r ( @|tests ) @tests [ =test-dec1 =test-dec2 =test-dec3 =test-dec4 =test-hex1 =test-hex2 =test-hex3 =test-hex4 =test-scmp1 =test-scmp2 =test-scmp3 =test-scmp4 =test-scpy1 ] &end @test-dec1 #0a18 DEO ;dict/dec1 sdec #1234 EQU2 JMP2r @test-dec2 ;dict/dec2 sdec #0123 EQU2 JMP2r @test-dec3 ;dict/dec3 sdec #0000 EQU2 JMP2r @test-dec4 ;dict/dec4 sdec #0000 EQU2 JMP2r @test-hex1 #0a18 DEO ;dict/hex1 shex #12c0 EQU2 JMP2r @test-hex2 ;dict/hex2 shex #034f EQU2 JMP2r @test-hex3 ;dict/dec3 sdec #0000 EQU2 JMP2r @test-hex4 ;dict/dec4 sdec #0000 EQU2 JMP2r @test-scmp1 #0a18 DEO { "text 00 } STH2r { "text 00 } STH2r scmp #01 EQU JMP2r @test-scmp2 { "text 00 } STH2r { "te 00 } STH2r scmp #00 EQU JMP2r @test-scmp3 { "textext 00 } STH2r { "text 00 } STH2r scmp #00 EQU JMP2r @test-scmp4 { 00 "ext 00 } STH2r { "text 00 } STH2r scmp #00 EQU JMP2r @test-scpy1 #0a18 DEO { "hello 00 } STH2kr ;&buf STH2r ;&buf scmp #01 EQU JMP2r &buf $10 ( @|stdlib ) @scap ( str* -: end* ) INC2 & LDAk ?scap JMP2r @slen ( str* -: len* ) DUP2 scap/ SWP2 SUB2 JMP2r @ ( src* dst* -: ) STH2 &w ( src* `dst* -- ) LDAk #00 STH2kr STA2 INC2r INC2 LDAk ?&w POP2 POP2r JMP2r @ ( chr str* -: ) STH2 #00 STH2r scap/ STA2 JMP2r @ ( str* -: ) STH2 #00 STH2r &w ( -- ) STAk INC2 LDAk ?&w STA JMP2r @scmp ( a* b* -- f ) STH2 &l ( -- ) LDAk ?{ &d LDA LDAr STHr EQU JMP2r } LDAk LDAkr STHr NEQ ?&d INC2 INC2r !&l @sdec ( str* -- val* ) [ LIT2r 0000 ] &w ( -- ) ( validate ) LDAk [ LIT "0 ] SUB #09 GTH ?&end ( accumulate ) [ LIT2r 000a ] MUL2r ( combine ) LDAk [ LIT "0 ] SUB [ LITr 00 ] STH ADD2r ( continue ) INC2 LDAk ?&w &end POP2 STH2r JMP2r @shex ( str* -- val* ) [ LIT2r 0000 ] &w ( -- ) ( validate ) LDAk chex INC #00 EQU ?&end ( accumulate ) [ LITr 40 ] SFT2r ( combine ) LDAk chex [ LITr 00 ] STH ADD2r ( continue ) INC2 LDAk ?&w &end POP2 STH2r JMP2r @chex ( c -- val|ff ) ( dec ) [ LIT "0 ] SUB DUP #09 GTH ?{ JMP2r } ( hex ) #27 SUB DUP #0f GTH ?{ JMP2r } ( err ) POP #ff JMP2r ( @|print ) @ ( str* -- ) &w ( -- ) LDAk #18 DEO INC2 & LDAk ?&w POP2 JMP2r @ ( short* -- ) SWP /b &b ( -- ) DUP #04 SFT /c &c ( -- ) #0f AND DUP #09 GTH #27 MUL ADD [ LIT "0 ] ADD #18 DEO JMP2r @ ( short* -- ) #2710 [ LIT2r 00fb ] &w ( -- ) DIV2k #000a DIV2k MUL2 SUB2 SWPr EQUk OVR STHkr EQU AND ?{ DUP [ LIT "0 ] ADD #19 DEO INCr } POP2 #000a DIV2 SWPr INCr STHkr ?&w POP2r POP2 POP2 JMP2r @ ( addr* -- ) #0000 &l ( -- ) ADD2k LDA /b DUP #0f AND #0f NEQ #16 MUL #0a ADD #18 DEO INC NEQk ?&l POP2 POP2 JMP2r ( @|assets ) @dict &dec1 "4660 $1 &dec2 "291 $1 &dec3 "0 $1 &dec4 "q2x*63? $1 &hex1 "12c0 $1 &hex2 "34f $1 &hex3 "0 $1 &hex4 "q2x*63? $1