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

162 lines
3.4 KiB
Plaintext

PAGE
SBTTL "--- MACHINE COLDSTART: ATARI ---"
ORG GRIP
; -----------------
; ATARI BOOT HEADER
; -----------------
DB 0 ; FLAG BYTE (IGNORED)
DB 53 ; LOAD ALL OF TRACKS 0, 1 AND 2
DW GRIP ; 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
; -------------
; DISPLAY LISTS
; -------------
; LIST 1: SCREEN W/STATUS LINE
DL1: DB $70,$70,$60 ; 23 BLANK LINES
DB $42 ; TEXT LINE W/LMS
DW TEXT ; ADDRESS OF TEXT LINE
DB $02 ; A SECOND LINE OF TEXT
DB $01 ; JUMP INSTRUCTION
DW DL2A ; INTO DL2
; LIST 2: SCREEN W/O STATUS LINE (NORMAL)
DL2: DB $70,$70,$70 ; 24 BLANK LINES
DB $4F ; 1 SCAN LINE W/LMS
DW SCREEN ; ADDRESS OF SCREEN RAM
DB $0F,$0F,$0F,$0F ; 7 MORE
DB $0F,$0F,$0F ; SCAN LINES (0)
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; (2)
DL2A: DB $4F ; 1 SCAN LINE W/LMS
DW SCREEN+640 ; ADDRESS OF 8TH SCAN LINE
DB $0F,$0F,$0F,$0F ; 7 MORE
DB $0F,$0F,$0F ; SCAN LINES (1)
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; (3)
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; (4)
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; (5)
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; (6)
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; (7)
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; (8)
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; (9)
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; (10)
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; (11)
DB $4F ; 1 SCAN LINE W/LMS
DW SCREEN+3840 ; ADDRESS OF 96TH SCAN LINE
DB $0F,$0F,$0F,$0F ; 7 MORE
DB $0F,$0F,$0F ; SCAN LINES (12)
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; (13)
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; (14)
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; (15)
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; (16)
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; (17)
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; (18)
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; (19)
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; (20)
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; (21)
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; (22)
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; (23)
DB $41 ; JUMP ON VERTICAL BLANK
DLTOP: DW DL2 ; TO TOP OF D-LIST 2
; ---------
; COLDSTART
; ---------
COLD: CLD
LDX #$FF ; RESET THE
TXS ; HARDWARE STACK
STX CH ; AND KEYBOARD REGISTER
STX PORTB ; REMOVE BASIC ROM IN XL-SERIES MACHINES
INX ; = 0
STX DMACTL ; SHUT OFF
STX SDMCTL ; ANTIC
STX COLOR2 ; BLACK BACKGROUND
STX COLDST ; COLDSTART OKAY
STX AUDCTL ; CLEAR SOUND
STX SOUNDR ; PREVENT I/O BEEPS
INX ; = 1
STX BOOT ; BOOT SUCCESSFUL
LDA #3
STA SKCTL ; RESET SOUND
LDA #$70
STA POKMSK ; DISABLE
STA IRQEN ; THE BREAK KEY
LDA #14 ; WHITE
STA COLOR1 ; GRAPHICS
; SET UP THE PLOT TABLES
LDA #LOW SCREEN ; ADDRESS OF SCAN LINE 0
STA VLOWS ; HARD-WIRE THE 1ST POSITION
STA I+LO ; ALSO INIT INDEX
LDA #HIGH SCREEN ; SAME FOR MSBS
STA VHIGHS
STA I+HI
LDX #1 ; START AT LINE 1
PTCALC: LDA I+LO
CLC
ADC #40
STA I+LO
STA VLOWS,X
LDA I+HI
ADC #0
STA I+HI
STA VHIGHS,X
INX
CPX #192
BNE PTCALC
LDA #$7F
STA ARG1+LO
STA ARG1+HI
JSR GCLEAR ; CLEAR SCREEN TO BLACK
IF DEBUG
JSR BUGNIT ; SET UP DEBUGGER
ELSE
LDA #LOW DL2 ; ELSE USE FULL-SCREEN
STA SDLSTL+LO
STA DLTOP+LO
LDA #HIGH DL2
STA SDLSTL+HI
STA DLTOP+HI
ENDIF
LDA #$22
STA SDMCTL ; RESTORE ANTIC
; FALL THROUGH TO WARMSTART ...
END