2023-11-16 18:19:54 -05:00

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