mirror of
https://github.com/erkyrath/infocom-zcode-terps.git
synced 2026-01-21 10:03:09 +00:00
106 lines
1.7 KiB
Plaintext
106 lines
1.7 KiB
Plaintext
PAGE
|
|
SBTTL "--- MACHINE COLDSTART: CBM PLUS/4 ---"
|
|
|
|
ORG ZIP
|
|
|
|
; ---------
|
|
; COLDSTART
|
|
; ---------
|
|
|
|
COLD: SEI ; DISABLE INTERRUPTS
|
|
|
|
LDA #6 ; DISABLE FUNCTION KEYS 7-1
|
|
STA FKEY ; LEAVE "HELP" (F8) ALONE
|
|
COLD0: LDA #0
|
|
JSR FUNCT
|
|
DEC FKEY
|
|
LDA FKEY
|
|
BPL COLD0
|
|
|
|
LDA #$C0 ; COPY $C000-$FCFF TO RAM
|
|
STA I+HI ; SET UP MSB
|
|
TAX ; INIT PAGE COUNTER
|
|
|
|
LDA #0 ; SET UP LSB
|
|
STA I+LO
|
|
TAY ; INIT PAGE INDEX
|
|
|
|
COLD1: LDA (I),Y ; COPY ROM
|
|
STA (I),Y ; INTO RAM
|
|
INY
|
|
BNE COLD1
|
|
INC I+HI ; NEXT PAGE
|
|
INX
|
|
CPX #$FD
|
|
BCC COLD1
|
|
|
|
LDA #$FF ; COPY $FF40-$FFFF
|
|
STA I+HI
|
|
LDY #$40
|
|
COLD2: LDA (I),Y
|
|
STA (I),Y
|
|
INY
|
|
BNE COLD2
|
|
|
|
STA ROMOUT ; DISABLE ROMS
|
|
LDA #$3F ; PATCH THIS KERNAL ROUTINE
|
|
STA $07E1 ; TO PREVENT ROM INTERFERENCE
|
|
|
|
; LDA #LOW WARM1 ; CHANGE THE HARDWARE RESET VECTOR
|
|
; STA $FFFC ; TO POINT TO WARMSTART
|
|
; LDA #HIGH WARM1
|
|
; STA $FFFD
|
|
|
|
CLI ; RE-ENABLE INTERRUPTS
|
|
|
|
LDA #%00110001 ; GRAY
|
|
STA BGCOL0 ; BACKGROUND
|
|
STA BORDER ; AND BORDER
|
|
|
|
LDA #$0E
|
|
JSR CHROUT ; USE UPPER/LOWER CHARS
|
|
LDA #$08
|
|
JSR CHROUT ; DISABLE CHARSET CHANGES
|
|
|
|
LDA #0
|
|
JSR SETMSG ; DISABLE KERNAL MESSAGES
|
|
|
|
JMP WARM1 ; BRANCH ALWAYS
|
|
|
|
; ---------------
|
|
; WARMSTART ENTRY
|
|
; ---------------
|
|
|
|
SLOAD: DB "The story is loading ..."
|
|
DB EOL
|
|
SLOADL EQU $-SLOAD
|
|
|
|
WARM1: CLD
|
|
LDX #$FF
|
|
TXS ; RESET MACHINE STACK
|
|
JSR CLALL ; CLOSE EVERYTHING
|
|
|
|
JSR CLS ; CLEAR SCREEN, ETC.
|
|
|
|
LDY #8 ; POSITION "STORY LOADING" MESSAGE
|
|
LDX #11 ; AT (8,11)
|
|
CLC
|
|
JSR PLOT
|
|
|
|
LDX #LOW SLOAD
|
|
LDA #HIGH SLOAD
|
|
LDY #SLOADL
|
|
JSR DLINE ; "THE STORY IS LOADING ..."
|
|
|
|
LDA #8 ; MAKE BOOT DRIVE
|
|
JSR DOPEN ; AND OPEN IT
|
|
|
|
; LDA FAST ; FAST-READ AVAILABLE?
|
|
; BEQ WARM2 ; NO, SKIP AHEAD
|
|
; JSR FINIT ; ELSE INIT FAST-READ
|
|
|
|
; FALL THROUGH TO ZIP WARMSTART AT "WARM2"
|
|
|
|
END
|
|
|