Files
erkyrath.infocom-zcode-terps/apple/zip/cold.k
Andrew Plotkin b642da811e Initial commit.
2023-11-16 18:19:54 -05:00

112 lines
2.0 KiB
Plaintext

PAGE
SBTTL "--- MACHINE COLDSTART: APPLE II ---"
; ---------
; COLDSTART
; ---------
COL80: DB 0 ; 80-COLUMN FLAG
SIG: DB 0 ; IIc FLAG
STRYSL: DB 0 ; BOOT SLOT
STRYDR: DB 0 ; BOOT DRIVE
P80: DB "80-COLUMN DISPLAY? (Y/N) >"
P80L EQU $-P80
; FINISH LOADING THE ZIP
COLD: LDA BSLOT ; SET UP
STA DCBSLT ; CURRENT AND
STA DCBPSL ; PREVIOUS SLOT IDS
LDA #HIGH COUT1 ; SET SCREEN OUTPUT
STA CSW+HI ; IN CASE OF PR#6
LDA #LOW COUT1 ; WHICH SETS ALL IN & OUTPUT
STA CSW+LO ; TO PR #6
LDX #0
STX DCBSEC ; START WITH SECTOR 0
STX DBUFF+LO ; CLEAR LSB OF [DBUFF]
INX ; = 1
STX DCBTRK ; START WITH TRACK 1
STX DCBDRV ; SET UP CURRENT
STX DCBPDR ; AND PREVIOUS DRIVE ID
LDA #$18 ; START LOAD AT $1800
STA DBUFF+HI
LDA #17 ; LOAD ALL OF
STA I+LO ; TRACK 1
COLD0: JSR GETRES ; GO THRU ZDOS
DEC I+LO ; DONE LOADING?
BNE COLD0 ; NO, SO LOOP BACK
LDA #$FF ;SET TO NORMAL DISPLAY
STA INVFLG
; DETERMINE SCREEN CONFIGURATION
LDA $FBB3 ; CHECK ID BYTE
STA SIG ; SAVE MACHINE ID FOR LATER
CMP #$06 ; IS IT A IIE OR IIC?
BNE DO40 ; NO, SO DO 40-COL
LDA $FBC0 ; IS IT A IIE OR! A IIC
BNE COLD1 ; IIE
STA SIG ; 0 = IIC
COLD1: LDA $C017 ; IS TOP BIT SET?
BMI DO40 ; YES, NO 80-COLUMN CARD
; MAKE SURE PLAYER WANTS 80-COLUMN DISPLAY
JSR CLS ;CLEAR SCREEN 1ST
LDA #10 ;CENTER DISPLAY
STA CV
LDA #5
STA CH
JSR BASCAL ;FORCE IT
LDX #LOW P80
LDA #HIGH P80
LDY #P80L
JSR DLINE ; PRINT 80-COL PROMPT
GET80: JSR RDKEY
CMP #$EE ; "n"
BEQ DO40
CMP #$CE ; "N"
BEQ DO40
CMP #$F9 ; "y"
BEQ DO80
CMP #$D9 ; "Y"
BEQ DO80
; CMP #$8D ; EOL? (COMMENTED OUT TO FORCE Y/N Le)
; BEQ DO80
JSR BOOP
JMP GET80
; SET [COL80] "TRUE" FOR 80-COLUMN
DO80: JSR $C300 ; INIT 80 COL (PR#3)
LDA #$FF
BNE SETCOL
; SET [COL80] "FALSE" FOR 40-COLUMN
DO40: LDA #0
SETCOL: STA COL80
; ---------------
; WARMSTART ENTRY
; ---------------
WARM: LDA DCBPSL ;SAVE STORY DRIVE AND SLOT
LDX DCBPDR ;IN CASE CHANGED BY "SAVE"
STA STRYSL
STX STRYDR
JSR CLS
END