mirror of
https://github.com/erkyrath/infocom-zcode-terps.git
synced 2026-02-09 01:31:14 +00:00
66 lines
1.4 KiB
NASM
66 lines
1.4 KiB
NASM
* SCRIPT A USER INPUT LINE, START IN A0, LEN IN D0, FLAG IN D1 FOR CR
|
|
* (CALLED AFTER USER INPUT IS FINISHED, TO AVOID PROBLEMS WITH BACKSPACES)
|
|
|
|
SCRINP MOVEM.L A2/D2,-(SP)
|
|
MOVE.L A0,A2 * PROTECT ARGS
|
|
MOVE.W D0,D2
|
|
|
|
IFEQ EZIP
|
|
TST.W VOPRNT(A6) * SCRIPTING?
|
|
ENDC
|
|
IFEQ CZIP
|
|
BSR TSTSCR * CHECK FOR SCRIPT REQUEST -- ACTIVE?
|
|
ENDC
|
|
BEQ.B SCRIX3 * NO, EXIT
|
|
|
|
TST.W D2 * LENGTH OF INPUT
|
|
BEQ.B SCRIX2 * ZERO, JUST DO THE CR
|
|
|
|
SCRIX1 MOVE.B (A2)+,D0 * SCRIPT NEXT CHAR
|
|
BSR SCRCHR * (USE BUFFERING, SO WRAP IS CORRECT)
|
|
SUBQ.W #1,D2
|
|
BNE.B SCRIX1
|
|
|
|
SCRIX2 TST.W D1 * CR REQUESTED?
|
|
BEQ SCRIX3 * NO
|
|
MOVEQ #13,D0 * YES, ADD THE CR
|
|
BSR SCRCHR
|
|
|
|
SCRIX3 MOVEM.L (SP)+,D2/A2
|
|
RTS
|
|
|
|
* OUTPUT THE SAVE/RESTORE FILENAME TO THE TRANSCRIPT (IF SCRIPTING)
|
|
* (USER SELECTED NAME THROUGH A SPECIAL FILE DIALOG)
|
|
|
|
SCRNAM MOVE.L D1,-(SP)
|
|
|
|
LEA MSGSCN,A0 * 'File is '
|
|
BSR STRLEN * LEAVE LENGTH OF STRING IN D0
|
|
CLR.W D1 * NO CR YET
|
|
BSR SCRINP
|
|
DATA
|
|
MSGSCN DC.B 'File is ',0
|
|
TEXT
|
|
|
|
LEA _filename,A0 * NO PATHSPEC, TYPE IS ALWAYS '.SAV'
|
|
BSR STRLEN * LEAVE LENGTH OF STRING IN D0
|
|
MOVEQ #1,D1 * END WITH CR
|
|
BSR SCRINP
|
|
|
|
MOVE.L (SP)+,D1
|
|
RTS
|
|
|
|
* FIND LENGTH OF ASCIZ STRING, POINTER IN A0
|
|
* RETURN POINTER IN A0 AND LENGTH IN D0
|
|
|
|
STRLEN MOVE.L A1,-(SP)
|
|
MOVE.L A0,A1
|
|
STRLX1 TST.B (A1)+ * SEARCH FOR NULL
|
|
BNE.B STRLX1
|
|
TST.B -(A1) * FOUND IT, BACKUP TO THE NULL
|
|
MOVE.L A1,D0
|
|
SUB.L A0,D0 * RETURN LENGTH
|
|
MOVE.L (SP)+,A1
|
|
RTS
|
|
|