mirror of
https://github.com/erkyrath/infocom-zcode-terps.git
synced 2026-02-08 01:01:24 +00:00
112 lines
2.0 KiB
Plaintext
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
|
|
|