mirror of
https://github.com/erkyrath/infocom-zcode-terps.git
synced 2026-02-08 01:01:24 +00:00
79 lines
2.4 KiB
Plaintext
79 lines
2.4 KiB
Plaintext
SUBTTL SETUP - TOP LEVEL STUFF
|
|
PAGE +
|
|
|
|
; READ THE SETUP FILE
|
|
; SSETUP HAS UNDER GONE TO SETS OF REVISIONS. REVISION 6 IS RESPONSIBLE
|
|
; FOR ALL OF THE DOS 2.0 FILE HANDLING PATCHES. REVISION 7 IS RESPONSIBLE
|
|
; FOR SETTING UP COLOR OR MONOCHROME BASED ON THE VIDEO SETTINGS AND WHAT
|
|
; WAS SPECIFIED ON THE COMMAND LINE.
|
|
;
|
|
PUBLIC SSETUP
|
|
SSETUP PROC NEAR
|
|
MOV AH,15 ; (7) CHECK VIDEO STATE
|
|
INT 10H ; (7) TO SEE IF IN A COLOR MOOD
|
|
CMP AL,0 ; (7) THIS IS 40x25 BW
|
|
JNZ SSET5
|
|
SSET0: FATAL FTL14 ; (A1) SCREEN IS NOT 80 CHARS WIDE
|
|
SSET4A: MOV IBMPC,0 ; (A15) TURNED OFF IF SWITCH IS USED
|
|
TEST CMDLIN,3 ; (A15) ANY COLOR BITS SET?
|
|
JZ SSET$$ ; (A15) NOPE, GO ASK
|
|
TEST CMDLIN,1 ; (7) WAS THIS SET ON CMD LINE
|
|
JNZ SSET6 ; (7) YES, CANNOT OVERRIDE
|
|
JMP SSET4B ; (A15) BIT 2 IS ON, TURN ON COLOR
|
|
|
|
SSET$$: PRINT WANTCO ; (A1) DO YOU WANT COLOR?
|
|
SSET1A: MOV AH,CNOECHO ; (A1) GET A CHARACTER
|
|
INT 21H ; (A1) FROM THE KEYBOARD
|
|
AND AL,5FH ; (A1) UPPERCASIFY IT
|
|
CMP AL,'Y' ; (A1) CHECK FOR YES NO
|
|
JNZ SSET3A ; (A1) AND SET COLOR APPROPRIATELY
|
|
|
|
SSET4B: MOV COLFLG,1 ; (7) SET COLOR FLAG
|
|
MOV SCRATR,COLATR ; (7) SET VIDEO ATTRIBUTE
|
|
JMP SSET6 ; (A1) THANKS FOR YOUR TIME
|
|
|
|
SSET3A: CMP AL,'N' ; (A1) IS IT A NO
|
|
JNZ SSET1A ; (A1) IF NOT, THEN ASK AGAIN
|
|
JMP SSET6 ; (A1) OTHERWISE ECHO IT
|
|
|
|
SSET5: CMP AL,1 ; (A1) 1 40x25 COLOR
|
|
JZ SSET0 ; (A1) SO DIE APPROPRIATELY
|
|
CMP AL,2 ; (A17) 80x25 BW?
|
|
JE SSET4A ; (A17) CHECK CMDLINE AND ASK
|
|
CMP AL,3 ; (7) THIS IS 80x25 COLOR
|
|
JZ SSET4A
|
|
TEST CMDLIN,2 ; (7) DID THEY SET COLOR FROM CMD LINE
|
|
JNZ SSET4A ; (7) TURN IT ON
|
|
SSET6: CMP FITS,1 ; (A1) IF FITS, THE LOAD WILL BE LONG
|
|
JNZ SSET7
|
|
CALL CLRSCR ; (A1) CLEAR THE SCREEN
|
|
MOV BX,OFFSET WAIT ; (A0) INFORM WAIT
|
|
CALL MSPRT
|
|
SSET7: RET
|
|
SSETUP ENDP
|
|
|
|
;INITIALIZATION
|
|
PUBLIC TSETUP
|
|
TSETUP PROC
|
|
MOV AL,SLPP ; NUMBER OF LINES
|
|
SUB AH,AH ; ASCIIFY THIS NUMBER INTO AX
|
|
INC AX ; FOR SLPP = 24, THE CURSOR IS AT 25
|
|
DIV RADIX ; SO THAT WE CAN PUT THE CURSOR
|
|
ADD AH,"0" ; THERE WHEN WE FINISH THE STATUS
|
|
ADD AL,"0" ; LINE OUTPUT IN MSOUT
|
|
MOV BX,OFFSET CLS1 ; (7t) PATCH CLEAR SCREEN
|
|
MOV [BX],AX ; (7t) SO THAT IT RESTORE CURPOS
|
|
MOV BX,OFFSET CLS1C ; (7t) PATCH IT IN COLOR TOO
|
|
MOV [BX],AX
|
|
MOV BX,OFFSET OUTBUF ; NO DETERMINE END OF OUTPUT BUFFER
|
|
MOV CL,SCPL
|
|
SUB CH,CH
|
|
ADD BX,CX
|
|
DEC BX ; (7v) SHORTEN BY ONE TO AVOID HARD
|
|
MOV ENDBUF,BX ; WRAP
|
|
MOV BYTE PTR [BX],0
|
|
CALL MINIT
|
|
RET
|
|
TSETUP ENDP
|
|
|