Files
erkyrath.infocom-zcode-terps/ibm/setup.ezp
Andrew Plotkin b642da811e Initial commit.
2023-11-16 18:19:54 -05:00

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