The division problem above was caused by an error in TIL; in D/MOD the line
mov1: ld d,a ; store divisor
Should be
mov1: ld e,a ; store divisor
This sets up the arguments to $UD/ correctly, resulting in a correct division.
Now ZIP can print numbers:
DP .
yields
FA OK
DP @ .
yields
C4F OK
Started in on the number interpreter….
Debugging revealed a couple of transcription errors, and a assembly dialect issue:
Where TIL codes “ADC A”, z80asm needs “ADC A,A”, otherwise it assembles an “ADC A,IXL” instruction.
Now zip can
1000 .
yielding
1000 OK
ZIP is printing a garbage character at the end of the “.” string. TIL pushes a space character with the high bit set as an end-of-string marker. I suspect that on Loeliger’s system the terminal ignored the high bit and printed an ordinary space. I am adding a bit of code to clear the high bit.
Works:
! C! @ C@
1 2 + 0 OK
Plus not working.
plus: dw $+2 pop hl ; get first word pop de ; get second word add hl,de ; add them push hl ; push sum nxt
That sure looks ok
Heh. I traced “1 2 + .” and it never executed that code. I made a typo; the “=” keyword has an incorrect entry “+”.
Ok, + works.
1 2 + . 3 OK
2000 @ . 0 OK 1234 2000 ! 2000 @ . 1234 OK 56 2000 C! 2000 @ . 1256 OK 2000 C@ . 56 OK 2000 @ . 10 2000 +! 2000 @ . 1256 1266 OK
+! works
DP @ . C52 OK 1234 , DP @ .
Crash…. comma not working.
Transcription error; forgot the nxt.
DP @ . C54 OK 1234 , DP @ . C56 OK C54 @ . 1234 OK
comma works
2 1 - . -1 OK
That’s wrong…
Typo in -1
db 1, “-1 “
should be
db 2,”-1”
2 1 - . 1 OK 1 2 - . -1 OK -1 . -1 OK
minus works
1 0= . 0 OK 0 0= . 1 OK -1 0= . 0 OK 8000 0= . 0 OK
0= works.
1 2+ . 3 OK
2+ works
1 ABS . 1 OK -1 ABS . 1 OK 0 ASCII . 30 OK F ASCII . 46 OK ASPACE . 20 OK BASE @ . 10 OK 12 C, crash
Forgot nxt
DP @ . C56 OK DP @ C@ . 2 OK 12 C, C56 C@ . 12 OK
C, works
1234 2000 ! 2000 C0SET 2000 @ . 1200 OK
C0SET works
Skipping CA!
3 CCONSTANT 3 ` RESTART
Not good.
CREATE FOO RESTART
The problem seems to be in CREATE.
Forgot the trailing semi
CREATE FOO OK 3 CCONSTANT FOO OK FOO . FOO ? DP @ . C58 OK 3 CCONSTANT FOO OK C58 C@ . 3 OK C59 C@ . 46 OK C5A C@ . 4F OK C5B C@ . 4F OK FOO FOO ?
It is building the dictionary entry correctly, but not finding it. Almost certainly a problem in the vocabulary words.
CURRENT @ . A11 OK
0a11 3c inc a ; else bump high
That’s not right.
CURRENT . 0 OK
Ahh. Not initialized?
Ahh. SYS needs to be page aligned.
CURRENT . 10E OK CURRENT @ . 9AF OK 3 CCONSTANT FOO OK FOO . 3 OK
Skipping COMPILER, CORE, CONTEXT, CURRENT, DOES>
(Can’t test DOES> without <BUILDS)
1 2 DROP . 1 OK 3 DUP . . 3 3 OK ENTRY . ENTRY ?
Typo; length byte wrong.
ENTRY . C46 OK HERE . C58 OK LBP . LBP ?
Length byte wrong
LBP . 104 OK 1 2 OVER . . . 1 2 1 OK
Skipping R>
1 2 SWAP . . 1 2 OK
Skipping VOCABULAARY
That’s all of the defined words.
Added tick; crashes.
aspace token dp OK context @ @ search OK . 0 OK .
Hangs when the address is printed??
Back jump address in *END
' dp . A9E OK
Committed and pushed.
Added *
But:
zip.l.asm:841: error: `,' expected. Remainder of line: _uds ; multiply 16x8 call _isign ; field input signs call p_uds ; multiply 16x8 call _posign ; Justify result
I have no idea what it is complaining about
Huh. no embedded underscores… Ok when defined, fail when referenced… only when referenced by call; jumping to them is okay.
2 2 * . 4 OK
Added
*+LOOP */ */MOD *C+LOOP *CDO *CLEAVE *CLOOP *DO *LEAVE *LOOP
Top comments (0)