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

391 lines
4.4 KiB
Plaintext

;------------------------------------------
; NEW ZIP LOADER
; RESIDES ON TRACK 34 OF CO-CO DISK
; AND IS LOADED BY CO-CO WITH 'DOS' COMMAND
;------------------------------------------
PIA0 EQU $FF00
KEYBUF EQU $0152
CASFLG EQU $011A
DEBVAL EQU $011B
DEVNUM EQU $6F
BS EQU $08
SPACE EQU $20
IRQVEC EQU $10C
RDYTMR EQU $985
DCDRV EQU $EB
DRGRAM EQU $986
DCTRK EQU $EC
DSKREG EQU $FF40
DCSTA EQU $F0
DCOPC EQU $EA
DR0TRK EQU $97E
FDCREG EQU $FF48
ZERO EQU $8A
DSEC EQU $ED
DNMIVC EQU $983
DCBPT EQU $EE
NMIFLG EQU $982
SKP2 EQU $8C
DCB EQU $EA
RVEC3 EQU $0167
CR EQU $0D
VIDRAM EQU $0400
CURPOS EQU $88
; EQUATES
BUG EQU 0
ZSTART EQU $1100
ZEND EQU $3000+BUG
ORG $2600
DB "OS" ; REQUIRED BY DOS
MOVE: LDX #00 ; SET UP TO MOVE BOOT CODE OUT OF WAY OF ZIP
MOVLP: LDD HERE,X
STD THERE,X
LEAX 2,X
CMPX #$800
BLO MOVLP
JMP RUN
HERE: EQU $
ORG $5000
THERE: EQU $
RUN: LDX #DIRQSV ;SET VECTOR
STX IRQVEC+1
LDA #$7E ;JMP OP
STA IRQVEC
LDD #$0001
STD TRACK
LDD #ZSTART
STD BUFFER
LOOP: LDX #DCB
LDD #$0200
STD ,X
LDD TRACK
STD 2,X
INCB
CMPB #19
BLO DOBUFF
LDB #1
INCA
DOBUFF: STD TRACK
LDD BUFFER
STD 4,X
INCA
STD BUFFER
LBSR MYCON
TST 6,X
BNE ERROR
CMPD #ZEND
BLO LOOP
JMP ZSTART
;ERROR HANDLER
ERRM: DB $0D
DB "DISK ERRROR!"
DB $0D
ERRML: EQU $-ERRM
ERROR: LDX #ERRM
LDB #ERRML
ELOOP: LDA ,X+
LBSR MYCHR
DECB
BNE ELOOP
FREEZ: BRA FREEZ
TRACK: DB $00,$00
BUFFER: DB $00,$00
ZZZ: EQU $
;-----------------------------------------------------------------------------
; ROM- ROUTINES
; IRQ HANDLER NEEDED FOR RDYTMR
DIRQSV: LDA PIA0+3
BPL DRTI
LDA PIA0+2
LDA RDYTMR
BEQ DRTI
DECA
STA RDYTMR
BNE DRTI
LDA DRGRAM
ANDA #$B0
STA DRGRAM
STA DSKREG
DRTI: RTI
;POLCAT
LA7D1: LDX ZERO
LA7D3: LEAX -1,X
BNE LA7D3
RTS
;------------------------
; COPY OF CHROUT FROM ROM
;------------------------
;
MYCHR: JSR RVEC3 ;HOOK INTO RAM THE BOOK SAYS (BUT WHY I ASK)
PSHS B
LDB DEVNUM
INCB
PULS B
BMI LA2BF
BNE LA30A
;SEND TO CASSETTE NOT NEEDED
LA2BF: RTS
LA30A: PSHS A,B,X
LDX CURPOS
CMPA #BS
BNE LA31D
CMPX #VIDRAM
BEQ LA35D
LDA #$60
STA ,-X
BRA LA344
LA31D: CMPA #CR
BNE LA32F
LDX CURPOS
LA323: LDA #$60
STA ,X+
TFR X,D
BITB #$1F
BNE LA323
BRA LA344
LA32F: CMPA #SPACE
BLO LA35D
TSTA
BMI LA342
CMPA #$40
BLO LA340
CMPA #$60
BLO LA342
ANDA #$DF
LA340: EORA #$40
LA342: STA ,X+
LA344: STX CURPOS
CMPX #VIDRAM+511
BLS LA35D
LDX #VIDRAM
LA34E: LDD 32,X
STD ,X++
CMPX #VIDRAM+$1E0
BLO LA34E
LDB #$60
BSR LA92D
LA35D: PULS A,B,X,PC
LA92D: STX CURPOS
LA92F: STB ,X+
CMPX #VIDRAM+511
BLS LA92F
RTS
;----------------------------------
;COPY OF DISK CODE FROM ROM SOURCES
;----------------------------------
MYCON: PSHS U,Y,X,D ;AT $D75F IN LISTING
LDA #5
PSHS A
LD672: CLR RDYTMR
LDB DCDRV
LDX #LD7AA
LDA DRGRAM
ANDA #$A8
ORA B,X
ORA #$20
LDB DCTRK
CMPB #22
BLO LD68B
ORA #$10
LD68B: TFR A,B
ORA #8
STA DRGRAM
STA DSKREG
BITB #8
BNE LD69F
JSR LA7D1
JSR LA7D1
LD69F: BSR LD6DE
BNE LD6AD
CLR DCSTA
LDX #LD7A2
LDB DCOPC
ASLB
JSR [B,X]
LD6AD: PULS A
LDB DCSTA
BEQ LD6BE
DECA
BEQ LD6BE
PSHS A
BSR LD6C5
BNE LD6AD
BRA LD672
LD6BE: LDA #120
STA RDYTMR
PULS PC,U,Y,X,D
LD6C5: LDX #DR0TRK
LDB DCDRV
CLR B,X
LDA #3
STA FDCREG
EXG A,A
EXG A,A
BSR LD6DE
BSR LD6FD
ANDA #$10
STA DCSTA
LD6DD: RTS
LD6DE: LDX ZERO
LD6E0: LEAX -1,X
BEQ LD6EC
LDA FDCREG
BITA #1
BNE LD6E0
RTS
LD6EC: LDA #$D0
STA FDCREG
EXG A,A
EXG A,A
LDA FDCREG
LDA #$80
STA DCSTA
RTS
LD6FD: LDX #8750
LD700: LEAX -1,X
BNE LD700
RTS
LD705: LDA #$80
DB SKP2
LD708: LDA #$A0
PSHS A
LDX #DR0TRK
LDB DCDRV
ABX
LDB ,X
STB FDCREG+1
CMPB DCTRK
BEQ LD739
LDA DCTRK
STA FDCREG+3
STA ,X
LDA #$17
STA FDCREG
EXG A,A
EXG A,A
BSR LD6DE
BNE LD737
BSR LD6FD
ANDA #$18
BEQ LD739
STA DCSTA
LD737: PULS PC,A
LD739: LDA DSEC
STA FDCREG+2
LDX #LD798
STX DNMIVC
LDX DCBPT
LDA FDCREG
LDA DRGRAM
ORA #$80
PULS B
LDY ZERO
LDU #FDCREG
COM NMIFLG
ORCC #$50
STB FDCREG
EXG A,A
EXG A,A
CMPB #$80
BEQ LD782
LDB #2
LD768: BITB ,U
BNE LD778
LEAY -1,Y
BNE LD768
LD770: CLR NMIFLG
ANDCC #$AF
JMP LD6EC
;WRITE A SECTOR
LD778: LDB ,X+
STB FDCREG+3
STA DSKREG
BRA LD778
LD782: LDB #2
LD784: BITB ,U
BNE LD78E
LEAY -1,Y
BNE LD784
BRA LD770
LD78E: LDB FDCREG+3
STB ,X+
STA DSKREG
BRA LD78E
LD798: ANDCC #$AF
LDA FDCREG
ANDA #$7C
STA DCSTA
RTS
LD7A2: DW LD6C5
DW LD6DD
DW LD705
DW LD708
LD7AA: DB 1
DB 2
DB 4
DB $40
END