mirror of
https://github.com/erkyrath/infocom-zcode-terps.git
synced 2026-02-08 01:01:24 +00:00
76 lines
1.8 KiB
NASM
76 lines
1.8 KiB
NASM
|
|
[MORE] WAS BEING INVOKED TOO LATE WHEN THE [MORE] LINE BEGAN WITH
|
|
BOLDFACE TEXT. HERE'S THE FIX.
|
|
|
|
-----------------------------------------------------------------------
|
|
|
|
OPREAD ...
|
|
|
|
MOVE.W #1,LINES(A6) * RESET COUNTER, PREVENTS A DEGENERATE [MORE]
|
|
BSR PUTLIN * THEN FORCE OUT ANY QUEUED TEXT (THE PROMPT)
|
|
...
|
|
|
|
* CHECK FOR END-OF-PAGE CONDITION
|
|
|
|
NXTLIN MOVE.W _rows,D0
|
|
SUB.W _split_row,D0 * LINES AVAILABLE FOR DISPLAY
|
|
SUBQ.W #1,D0 * ALLOW SPACE FOR [MORE]
|
|
|
|
CMP.W LINES(A6),D0 * PAGE FULL YET?
|
|
BNE NXTLX2 * NO
|
|
|
|
IFEQ CZIP
|
|
MOVEM.L D1-D7/A1-A5,-(SP)
|
|
BSR OPUSL * YES, UPDATE STATUS LINE NOW
|
|
MOVEM.L (SP)+,D1-D7/A1-A5
|
|
ENDC
|
|
|
|
LEA MSGMOR,A0 * DISPLAY MORE MESSAGE (NO CR)
|
|
MOVEQ #6,D0
|
|
BSR PRINT * WRITE DIRECTLY TO SCREEN
|
|
DATA
|
|
MSGMOR DC.B '[MORE]',0
|
|
TEXT
|
|
|
|
BSR TTYIN * WAIT FOR A KEY, NO ECHO
|
|
SUBQ.W #6,_cur_column * BACKUP CURSOR
|
|
|
|
LEA MSGNOM,A0 * ERASE MORE MESSAGE (NO CR)
|
|
MOVEQ #6,D0
|
|
BSR PRINT * WRITE DIRECTLY TO SCREEN
|
|
DATA
|
|
MSGNOM DC.B ' ',0
|
|
TEXT
|
|
|
|
SUBQ.W #6,_cur_column * BACKUP CURSOR
|
|
MOVE.W #1,LINES(A6) * RESET COUNTER, ALLOWING FOR ONE PREVIOUS LINE
|
|
NXTLX2 RTS
|
|
|
|
* OUTPUT THE LINE BUFFER, BEGINNING AND END IN A0, D0
|
|
* FIRST CHECK FOR END-OF-SCREEN CONDITION (UNLESS IN WINDOW 1)
|
|
|
|
BUFOUT TST.W WIND1(A6) * IN WINDOW 1?
|
|
BNE BUFUX1 * YES, SKIP THE SCREEN CHECK
|
|
|
|
MOVEM.L D0/A0,-(SP)
|
|
BSR NXTLIN * PAUSE FOR [MORE] IF NECESSARY
|
|
MOVEM.L (SP)+,D0/A0
|
|
|
|
BUFUX1 SUB.L A0,D0 * CURRENT LENGTH OF BUFFER IN D0.W
|
|
BLE BUFUX2 * EXIT IF ZERO
|
|
BSR PRINT * OTHERWISE, DISPLAY IT
|
|
BUFUX2 RTS
|
|
|
|
* OUTPUT THE LINE BUFFER THEN ADD A CR, BEGINNING AND END IN A0, D0
|
|
* ALSO UPDATE THE CUMULATIVE LINE COUNTER
|
|
|
|
LINOUT BSR BUFOUT * DISPLAY IT
|
|
MOVEQ #13,D0
|
|
BSR OUTCHR * AND TACK ON A CR
|
|
|
|
TST.W WIND1(A6) * IN WINDOW 1?
|
|
BNE LINOX1 * YES, IGNORE COUNTER
|
|
ADDQ.W #1,LINES(A6) * OTHERWISE UPDATE THE COUNTER
|
|
LINOX1 RTS
|
|
|