mirror of
https://github.com/erkyrath/infocom-zcode-terps.git
synced 2026-01-13 23:27:21 +00:00
126 lines
2.4 KiB
Plaintext
126 lines
2.4 KiB
Plaintext
PAGE
|
|
SBTTL "--- MACHINE COLDSTART: ATARI ---"
|
|
|
|
ORG ZIP
|
|
|
|
; -----------------
|
|
; ATARI BOOT HEADER
|
|
; -----------------
|
|
|
|
DB 0 ; FLAG BYTE (IGNORED)
|
|
DB 56 ; LOAD 7K OF CODE
|
|
DW ZIP ; WHERE TO LOAD THE SECTORS
|
|
DW DUMMY ; POINT TO INIT SUBROUTINE
|
|
|
|
; --------------
|
|
; BOOT COLDSTART
|
|
; --------------
|
|
|
|
LDA #LOW COLD ; POINT [DOSVEC] TO
|
|
STA DOSVEC+LO ; THE COLDSTART ROUTINE
|
|
LDA #HIGH COLD
|
|
STA DOSVEC+HI
|
|
|
|
DUMMY: LDA #$FF ; DISABLE BASIC ROM
|
|
STA PORTB ; IN XL-SERIES MACHINES
|
|
CLC ; SUCCESS FLAG
|
|
RTS
|
|
|
|
; -------------------
|
|
; CUSTOM DISPLAY LIST
|
|
; -------------------
|
|
|
|
DLIST: DB $70,$70,$50 ; 22 BLANK LINES
|
|
DB $42 ; 1 TEXT LINE W/LMS
|
|
DW SCREEN ; ADDR OF SCREEN RAM
|
|
DB $10 ; 2 BLANK LINES
|
|
DB $02,$02,$02,$02,$02,$02,$02 ; 7 TEXT LINES
|
|
DB $02,$02,$02,$02,$02,$02,$02,$02 ; 8 TEXT LINES
|
|
DB $02,$02,$02,$02,$02,$02,$02,$02 ; 8 TEXT LINES
|
|
DB $41 ; JVB
|
|
DW DLIST ; ADDR OF D-LIST
|
|
|
|
SLD: DB "The story is loading ..."
|
|
DB EOL
|
|
SLDL EQU $-SLD
|
|
|
|
; ---------
|
|
; COLDSTART
|
|
; ---------
|
|
|
|
COLD: CLD
|
|
LDX #$FF ; RESET THE
|
|
TXS ; HARDWARE STACK
|
|
STX CH ; AND KEYBOARD REGISTER
|
|
STX PORTB ; REMOVE BASIC ROM IN XL MACHINES
|
|
INX ; = 0
|
|
STX COLDST ; COLDSTART OKAY
|
|
STX AUDCTL ; CLEAR SOUND
|
|
STX LMARGN ; NO LEFT MARGIN
|
|
STX SCRIPT ; DISABLE SCRIPTING
|
|
STX SFLAG ; DISABLE PREVIOS SCRIPT (BM 5/14/85)
|
|
INX ; = 1
|
|
STX BOOT ; BOOT SUCCESSFUL
|
|
STX GPRIOR ; MAXIMUM PMG PRIORITY
|
|
STX CRSINH ; INHIBIT OS CURSOR
|
|
|
|
LDA #3
|
|
STA SKCTL ; RESET SOUND
|
|
STA GRACTL ; ENABLE PLAYERS & MISSILES
|
|
|
|
LDA #$70
|
|
STA POKMSK ; DISABLE
|
|
STA IRQEN ; THE BREAK KEY
|
|
|
|
LDA #12 ; WHITE
|
|
STA COLOR1 ; TEXT
|
|
LDA #148
|
|
STA COLOR4 ; BLUE BORDER
|
|
|
|
LDX #$11 ; CLEAR ALL PMG REGISTERS
|
|
LDA #0
|
|
PMG0: STA HPOSP0,X
|
|
DEX
|
|
BPL PMG0
|
|
|
|
TAX ; [X] & [A] = 0
|
|
PMG1: STA MISSL,X ; CLEAR CURSOR RAM
|
|
INX
|
|
BNE PMG1
|
|
|
|
LDA #1 ; DOUBLE-WIDTH FOR
|
|
STA SIZEM ; MISSILE #0
|
|
LDA #HIGH PLMRAM ; POINT TO LOCATION
|
|
STA PMBASE ; OF PMG RAM
|
|
|
|
LDA #LOW DLIST ; ENABLE
|
|
STA SDLSTL+LO ; CUSTOM
|
|
LDA #HIGH DLIST ; DISPLAY
|
|
STA SDLSTL+HI ; LIST
|
|
|
|
; FALL THROUGH ...
|
|
|
|
; ---------------
|
|
; WARMSTART ENTRY
|
|
; ---------------
|
|
|
|
WARM: JSR CLS ; CLEAR SCREEN
|
|
|
|
LDA #8 ; POSITION CURSOR
|
|
STA COLCRS+LO ; AT (8,0)
|
|
LDA #0
|
|
STA ROWCRS
|
|
|
|
LDX #LOW SLD
|
|
LDA #HIGH SLD
|
|
LDY #SLDL
|
|
JSR SROOM ; "THE STORY IS LOADING ..."
|
|
|
|
LDA #%00111110 ; ENABLE 1-LINE PMG, STANDARD FIELD
|
|
STA SDMCTL ; RESTORE ANTIC
|
|
|
|
; FALL THROUGH TO ZIP WARMSTART ...
|
|
|
|
END
|
|
|