mirror of
https://github.com/erkyrath/infocom-zcode-terps.git
synced 2026-01-21 01:57:54 +00:00
162 lines
3.4 KiB
Plaintext
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
|
|
|