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