diff --git a/src/drifblim.tal b/src/drifblim.tal index 95e9d14..e357815 100644 --- a/src/drifblim.tal +++ b/src/drifblim.tal @@ -70,23 +70,27 @@ ;src ( >> ) -@handle-file ( f* -- ) +@ ( f* -- ) .File/name DEO2 #0001 .File/length DEO2 #0000 &>s ( len* -- ) ;&c feof ?{ - INC2 [ LIT &c $1 ] handle-char !&>s } + INC2 [ LIT &c $1 ] + [ LIT2 00 -halt ] LDZ EQU ?&>s } ORA ?{ ;include/mem ;token ;err/source ! } JMP2r -@handle-char ( c -- ) +@ ( c -- ) DUP #20 GTH ?{ POP ;token LDAk ?{ POP2 JMP2r } DUP2 ! } - #00 ;token scap/ STA2 + #00 ;token scap/ + ( | test token size ) + DUP2 ;token SUB2 NIP #30 LTH ?{ ;err/token } + STA2 JMP2r @ ( t* -- ) @@ -267,7 +271,7 @@ &comment POP2 ! &inctal INC2k ;include/mem - ;include/mem !handle-file + ;include/mem ! &ignore POP2 JMP2r ( @@ -561,9 +565,10 @@ &hex "Hexadecimal 20 "invalid: $1 &zeropage "Writing 20 "zero-page: $1 &opcode "Opcode 20 "invalid: $1 - &length "Length $1 - &reference "Reference $1 + &reference "Reference 20 "invalid: $1 &distance "Reference 20 "too 20 "far: $1 + &length "Program 20 "size 20 "exceeded. $1 + &token "Token 20 "size 20 "exceeded: $1 &sublabel "Sublabel $1 &refs-overflow "Refs 20 "Overflow $1 diff --git a/tests.sh b/tests.sh index c4f294f..92e1d36 100755 --- a/tests.sh +++ b/tests.sh @@ -53,7 +53,7 @@ echo "Opcode invalid: ADD2q" $asm "tests/err-opc.tal" "bin/res.rom" echo "" -echo "Label unknown: .missing" +echo "Reference invalid: missing" $asm "tests/err-ref.tal" "bin/res.rom" echo "" @@ -65,19 +65,10 @@ echo "Reference too far: prev" $asm "tests/err-farbwd.tal" "bin/res.rom" echo "" -echo " Length ab in RESET" +echo "Program size exceeded." $asm "tests/err-length.tal" "bin/res.rom" echo "" -echo " Token @token-length-30-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa in reset" -$asm "tests/err-toklen.tal" "bin/res.rom" +echo "Token size exceeded: @aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" +$asm "tests/err-token.tal" "bin/res.rom" -echo "" -echo " Sublabel &some-long-sublabel in token-length-20-aaaaaaaaaaaaaaaa" -$asm "tests/err-lablen.tal" "bin/res.rom" -echo "" - - -echo "" -echo "Assembled bin/res.rom in 148 bytes" -$asm "tests/err-farall.tal" "bin/res.rom" diff --git a/tests/err-farbwd.tal b/tests/err-farbwd.tal index ac28217..ad0a4d9 100644 --- a/tests/err-farbwd.tal +++ b/tests/err-farbwd.tal @@ -1,3 +1,4 @@ ( distance too far, backward ) -( fails ff7f -129 ) &back $7e ,&back \ No newline at end of file +( fails ff7f -129 ) &back $7e ,&back + diff --git a/tests/err-farfwd.tal b/tests/err-farfwd.tal index 952f853..f4255a3 100644 --- a/tests/err-farfwd.tal +++ b/tests/err-farfwd.tal @@ -1,3 +1,4 @@ ( distance too far, forward ) -( fails 0080 +128 ) ,&next $81 &next \ No newline at end of file +( fails 0080 +128 ) ,&next $81 &next + diff --git a/tests/err-token.tal b/tests/err-token.tal new file mode 100644 index 0000000..c2e5652 --- /dev/null +++ b/tests/err-token.tal @@ -0,0 +1,3 @@ +( token length too long ) + +@aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1234 diff --git a/tests/err-toklen.tal b/tests/err-toklen.tal deleted file mode 100644 index cb43a15..0000000 --- a/tests/err-toklen.tal +++ /dev/null @@ -1,5 +0,0 @@ -( token length too long ) -|0100 #1234 BRK - -@token-length-30-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -