Files
erkyrath.infocom-zcode-terps/amiga/frag-read.asm
Andrew Plotkin b642da811e Initial commit.
2023-11-16 18:19:54 -05:00

43 lines
1.0 KiB
NASM

FLUSH ONLY THOSE WORDS THAT OVERFLOWED. CHANGED IN AMIGA, YET TO BE DONE
FOR ST AND MAC.
-----------------------------------------------------------------------------
RDX8 ADDQ.B #1,RDNWDS(A6) * INCREMENT FOUND WORD COUNT
MOVE.B RDNWDS(A6),D0 * GET NEW COUNT
MOVE.L RDRET(A6),A0 * RETURN TABLE POINTER (1ST BYTE MAX WORDS)
CMP.B (A0),D0 * FOUND WORD COUNT GREATER THAN MAX ALLOWED?
BLE.S RDX9 * NO
BSR PUTNEW * YES, INFORM LOSER
LEA MSGIO1,A0
BSR OUTMSG0 * 'Too many words ...'
SECTION ZDATA
MSGIO1 DC.B 'Too many words for internal buffer, flushing "',0
SECTION ZCODE
MOVE.L RDEOS(A6),A1 * END OF INPUT STRING (+1)
MOVE.B (A1),-(SP) * SAVE THIS BYTE TO BE SAFE
CLR.B (A1) * MAKE STRING ASCIZ
MOVE.L RDBOW(A6),A0 * START OF FLUSHED WORD/STRING
BSR OUTMSG0 * ECHO IT
MOVE.B (SP)+,(A1) * RESTORE LAST BYTE
LEA MSGIO2,A0
BSR OUTMSG * '".'
SECTION ZDATA
MSGIO2 DC.B '".',0
SECTION ZCODE
BSR PUTNEW
SUBQ.B #1,RDNWDS(A6) * THE LATEST WORD IS FLUSHED
BRA RDX10 * AND WE'RE DONE
*** BUILD THE ZWORD TABLE ...