home *** CD-ROM | disk | FTP | other *** search
File List | 1998-05-10 | 12.1 KB | 548 lines |
- .OPT NO LIST
- ;
- ; UPDATE EMUOS.LIS
- ; Start Emulator
- ; Insert MAC/65 Cartridge
- ; ENTER #H5:EMUOS.LIS,A
- ; ASM,,#H0:EMUOS.OBJ
- ; Exit Emulator
- ; mkimg -input emuos.obj -image emuos.img -header emuos.h c000 ffff
- ;
- BOOT = $09
- RTCLOK = $12
- VVBLKI = $0222
- VVBLKD = $0224
- ;
- ; ============================
- ; OS Hardware Shadow Registers
- ; ============================
- ;
- CHART = $02F3
- CHBAS = $02F4
- CH = $02FC
- COLOR4 = $02C8
- COLOR0 = $02C4
- COLOR1 = $02C5
- COLOR2 = $02C6
- COLOR3 = $02C7
- PCOLR0 = $02C0
- PCOLR1 = $02C1
- PCOLR2 = $02C2
- PCOLR3 = $02C3
- SDLSTH = $0231
- SDLSTL = $0230
- SDMCTL = $022F
- STICK0 = $0278
- STICK1 = $0279
- STICK2 = $027A
- STICK3 = $027B
- GPRIOR = $026F
- SSKCTL = $0232
- STRIG0 = $0284
- STRIG1 = $0285
- STRIG2 = $0286
- STRIG3 = $0287
- ;
- DDEVIC = $0300
- DUNIT = $0301
- DCOMND = $0302
- DSTATS = $0303
- DBUFLO = $0304
- DBUFHI = $0305
- DTIMLO = $0306
- DTIMHI = $0307
- DBYTLO = $0308
- DBYTHI = $0309
- DAUX1 = $030A
- DAUX2 = $030B
- ;
- ; ==================
- ; Hardware Registers
- ; ==================
- ;
- CHACTL = $D401
- CHBASE = $D409
- COLBK = $D01A
- COLPF0 = $D016
- COLPF1 = $D017
- COLPF2 = $D018
- COLPF3 = $D019
- COLPM0 = $D012
- COLPM1 = $D013
- COLPM2 = $D014
- COLPM3 = $D015
- CONSOL = $D01F
- DLISTH = $D403
- DLISTL = $D402
- DMACTL = $D400
- KBCODE = $D209
- IRQEN = $D20E
- IRQST = $D20E
- NMIRES = $D40F
- NMIST = $D40F
- PACTL = $D302
- PORTA = $D300
- PORTB = $D301
- PRIOR = $D01B
- SKCTL = $D20F
- TRIG0 = $D010
- TRIG1 = $D011
- TRIG2 = $D012
- TRIG3 = $D013
- VCOUNT = $D40B
- ;
- *= $E000
- .BYTE $00,$00,$00,$00,$00,$00,$00,$00
- .BYTE $00,$18,$18,$18,$18,$00,$18,$00
- .BYTE $00,$66,$66,$66,$00,$00,$00,$00
- .BYTE $00,$66,$FF,$66,$66,$FF,$66,$00
- .BYTE $18,$3E,$60,$3C,$06,$7C,$18,$00
- .BYTE $00,$66,$6C,$18,$30,$66,$46,$00
- .BYTE $1C,$36,$1C,$38,$6F,$66,$3B,$00
- .BYTE $00,$18,$18,$18,$00,$00,$00,$00
- .BYTE $00,$0E,$1C,$18,$18,$1C,$0E,$00
- .BYTE $00,$70,$38,$18,$18,$38,$70,$00
- .BYTE $00,$66,$3C,$FF,$3C,$66,$00,$00
- .BYTE $00,$18,$18,$7E,$18,$18,$00,$00
- .BYTE $00,$00,$00,$00,$00,$18,$18,$30
- .BYTE $00,$00,$00,$7E,$00,$00,$00,$00
- .BYTE $00,$00,$00,$00,$00,$18,$18,$00
- .BYTE $00,$06,$0C,$18,$30,$60,$40,$00
- .BYTE $00,$3C,$66,$6E,$76,$66,$3C,$00
- .BYTE $00,$18,$38,$18,$18,$18,$7E,$00
- .BYTE $00,$3C,$66,$0C,$18,$30,$7E,$00
- .BYTE $00,$7E,$0C,$18,$0C,$66,$3C,$00
- .BYTE $00,$0C,$1C,$3C,$6C,$7E,$0C,$00
- .BYTE $00,$7E,$60,$7C,$06,$66,$3C,$00
- .BYTE $00,$3C,$60,$7C,$66,$66,$3C,$00
- .BYTE $00,$7E,$06,$0C,$18,$30,$30,$00
- .BYTE $00,$3C,$66,$3C,$66,$66,$3C,$00
- .BYTE $00,$3C,$66,$3E,$06,$0C,$38,$00
- .BYTE $00,$00,$18,$18,$00,$18,$18,$00
- .BYTE $00,$00,$18,$18,$00,$18,$18,$30
- .BYTE $06,$0C,$18,$30,$18,$0C,$06,$00
- .BYTE $00,$00,$7E,$00,$00,$7E,$00,$00
- .BYTE $60,$30,$18,$0C,$18,$30,$60,$00
- .BYTE $00,$3C,$66,$0C,$18,$00,$18,$00
- .BYTE $00,$3C,$66,$6E,$6E,$60,$3E,$00
- .BYTE $00,$18,$3C,$66,$66,$7E,$66,$00
- .BYTE $00,$7C,$66,$7C,$66,$66,$7C,$00
- .BYTE $00,$3C,$66,$60,$60,$66,$3C,$00
- .BYTE $00,$78,$6C,$66,$66,$6C,$78,$00
- .BYTE $00,$7E,$60,$7C,$60,$60,$7E,$00
- .BYTE $00,$7E,$60,$7C,$60,$60,$60,$00
- .BYTE $00,$3E,$60,$60,$6E,$66,$3E,$00
- .BYTE $00,$66,$66,$7E,$66,$66,$66,$00
- .BYTE $00,$7E,$18,$18,$18,$18,$7E,$00
- .BYTE $00,$06,$06,$06,$06,$66,$3C,$00
- .BYTE $00,$66,$6C,$78,$78,$6C,$66,$00
- .BYTE $00,$60,$60,$60,$60,$60,$7E,$00
- .BYTE $00,$63,$77,$7F,$6B,$63,$63,$00
- .BYTE $00,$66,$76,$7E,$7E,$6E,$66,$00
- .BYTE $00,$3C,$66,$66,$66,$66,$3C,$00
- .BYTE $00,$7C,$66,$66,$7C,$60,$60,$00
- .BYTE $00,$3C,$66,$66,$66,$6C,$36,$00
- .BYTE $00,$7C,$66,$66,$7C,$6C,$66,$00
- .BYTE $00,$3C,$60,$3C,$06,$06,$3C,$00
- .BYTE $00,$7E,$18,$18,$18,$18,$18,$00
- .BYTE $00,$66,$66,$66,$66,$66,$7E,$00
- .BYTE $00,$66,$66,$66,$66,$3C,$18,$00
- .BYTE $00,$63,$63,$6B,$7F,$77,$63,$00
- .BYTE $00,$66,$66,$3C,$3C,$66,$66,$00
- .BYTE $00,$66,$66,$3C,$18,$18,$18,$00
- .BYTE $00,$7E,$0C,$18,$30,$60,$7E,$00
- .BYTE $00,$1E,$18,$18,$18,$18,$1E,$00
- .BYTE $00,$40,$60,$30,$18,$0C,$06,$00
- .BYTE $00,$78,$18,$18,$18,$18,$78,$00
- .BYTE $00,$08,$1C,$36,$63,$00,$00,$00
- .BYTE $00,$00,$00,$00,$00,$00,$FF,$00
- .BYTE $00,$36,$7F,$7F,$3E,$1C,$08,$00
- .BYTE $18,$18,$18,$1F,$1F,$18,$18,$18
- .BYTE $03,$03,$03,$03,$03,$03,$03,$03
- .BYTE $18,$18,$18,$F8,$F8,$00,$00,$00
- .BYTE $18,$18,$18,$F8,$F8,$18,$18,$18
- .BYTE $00,$00,$00,$F8,$F8,$18,$18,$18
- .BYTE $03,$07,$0E,$1C,$38,$70,$E0,$C0
- .BYTE $C0,$E0,$70,$38,$1C,$0E,$07,$03
- .BYTE $01,$03,$07,$0F,$1F,$3F,$7F,$FF
- .BYTE $00,$00,$00,$00,$0F,$0F,$0F,$0F
- .BYTE $80,$C0,$E0,$F0,$F8,$FC,$FE,$FF
- .BYTE $0F,$0F,$0F,$0F,$00,$00,$00,$00
- .BYTE $F0,$F0,$F0,$F0,$00,$00,$00,$00
- .BYTE $FF,$FF,$00,$00,$00,$00,$00,$00
- .BYTE $00,$00,$00,$00,$00,$00,$FF,$FF
- .BYTE $00,$00,$00,$00,$F0,$F0,$F0,$F0
- .BYTE $00,$1C,$1C,$77,$77,$08,$1C,$00
- .BYTE $00,$00,$00,$1F,$1F,$18,$18,$18
- .BYTE $00,$00,$00,$FF,$FF,$00,$00,$00
- .BYTE $18,$18,$18,$FF,$FF,$18,$18,$18
- .BYTE $00,$00,$3C,$7E,$7E,$7E,$3C,$00
- .BYTE $00,$00,$00,$00,$FF,$FF,$FF,$FF
- .BYTE $C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0
- .BYTE $00,$00,$00,$FF,$FF,$18,$18,$18
- .BYTE $18,$18,$18,$FF,$FF,$00,$00,$00
- .BYTE $F0,$F0,$F0,$F0,$F0,$F0,$F0,$F0
- .BYTE $18,$18,$18,$1F,$1F,$00,$00,$00
- .BYTE $78,$60,$78,$60,$7E,$18,$1E,$00
- .BYTE $00,$18,$3C,$7E,$18,$18,$18,$00
- .BYTE $00,$18,$18,$18,$7E,$3C,$18,$00
- .BYTE $00,$18,$30,$7E,$30,$18,$00,$00
- .BYTE $00,$18,$0C,$7E,$0C,$18,$00,$00
- .BYTE $00,$18,$3C,$7E,$7E,$3C,$18,$00
- .BYTE $00,$00,$3C,$06,$3E,$66,$3E,$00
- .BYTE $00,$60,$60,$7C,$66,$66,$7C,$00
- .BYTE $00,$00,$3C,$60,$60,$60,$3C,$00
- .BYTE $00,$06,$06,$3E,$66,$66,$3E,$00
- .BYTE $00,$00,$3C,$66,$7E,$60,$3C,$00
- .BYTE $00,$0E,$18,$3E,$18,$18,$18,$00
- .BYTE $00,$00,$3E,$66,$66,$3E,$06,$7C
- .BYTE $00,$60,$60,$7C,$66,$66,$66,$00
- .BYTE $00,$18,$00,$38,$18,$18,$3C,$00
- .BYTE $00,$06,$00,$06,$06,$06,$06,$3C
- .BYTE $00,$60,$60,$6C,$78,$6C,$66,$00
- .BYTE $00,$38,$18,$18,$18,$18,$3C,$00
- .BYTE $00,$00,$66,$7F,$7F,$6B,$63,$00
- .BYTE $00,$00,$7C,$66,$66,$66,$66,$00
- .BYTE $00,$00,$3C,$66,$66,$66,$3C,$00
- .BYTE $00,$00,$7C,$66,$66,$7C,$60,$60
- .BYTE $00,$00,$3E,$66,$66,$3E,$06,$06
- .BYTE $00,$00,$7C,$66,$60,$60,$60,$00
- .BYTE $00,$00,$3E,$60,$3C,$06,$7C,$00
- .BYTE $00,$18,$7E,$18,$18,$18,$0E,$00
- .BYTE $00,$00,$66,$66,$66,$66,$3E,$00
- .BYTE $00,$00,$66,$66,$66,$3C,$18,$00
- .BYTE $00,$00,$63,$6B,$7F,$3E,$36,$00
- .BYTE $00,$00,$66,$3C,$18,$3C,$66,$00
- .BYTE $00,$00,$66,$66,$66,$3E,$0C,$78
- .BYTE $00,$00,$7E,$0C,$18,$30,$7E,$00
- .BYTE $00,$18,$3C,$7E,$7E,$18,$3C,$00
- .BYTE $18,$18,$18,$18,$18,$18,$18,$18
- .BYTE $00,$7E,$78,$7C,$6E,$66,$06,$00
- .BYTE $08,$18,$38,$78,$38,$18,$08,$00
- .BYTE $10,$18,$1C,$1E,$1C,$18,$10,$00
- ;
- DISKIV = $E450
- DSKINV = $E453
- CIOV = $E456
- SIOV = $E459
- SETVBV = $E45C
- SYSVBV = $E45F
- XITVBV = $E462
- SIOINV = $E465
- SENDEV = $E468
- INTINV = $E46B
- CIOINV = $E46E
- BLKBDV = $E471
- WARMSV = $E474
- COLDSV = $E477
- RBLOKV = $E47A
- CSOPIV = $E47D
- ;
- *= DISKIV
- JMP HALT
- *= DSKINV
- JMP HALT
- *= CIOV
- JMP HALT
- *= SIOV
- JMP HALT
- *= SETVBV
- JMP HALT
- *= SYSVBV
- JMP HALT
- *= XITVBV
- JMP XITVBL
- *= SIOINV
- JMP HALT
- *= SENDEV
- JMP HALT
- *= INTINV
- JMP HALT
- *= CIOINV
- JMP HALT
- *= BLKBDV
- JMP HALT
- *= WARMSV
- JMP COLDSTART
- *= COLDSV
- JMP COLDSTART
- *= RBLOKV
- JMP HALT
- *= CSOPIV
- JMP HALT
- ;
- *= $F800
- COLDSTART
- LDX #$FF
- TXS
- LDA # <SYSVBL
- STA VVBLKI
- LDA # >SYSVBL
- STA VVBLKI+1
- LDA # <XITVBL
- STA VVBLKD
- LDA # >XITVBL
- STA VVBLKD+1
- LDA # <IRQ
- STA $0216
- LDA # >IRQ
- STA $0217
- LDA $0000
- BNE RPIIMG ; Run pre-installed image
- LDA $0001
- BNE RPIIMG ; Run pre-installed image
- LDA $BFFC
- INC $BFFC
- CMP $BFFC
- BNE BOOTDISK
- ; BNE MONTY
- JSR CART.INIT
- JMP ($BFFA)
- CART.INIT
- JMP ($BFFE)
- ;MONTY
- ; STA $BFFC ; Restore original value to $BFFC
- ; JMP $0115 ; Run Montezummas Revenge
- RPIIMG
- JMP ($0000) ; Run pre-installed image
- ;
- BOOTDISK
- LDA #$31
- STA DDEVIC
- LDA #$01
- STA DUNIT
- LDA #$52
- STA DCOMND
- LDA #0
- STA DBUFLO
- LDA #4
- STA DBUFHI
- LDA #$80
- STA DBYTLO
- LDA #$00
- STA DBYTHI
- LDA #1
- STA DAUX1
- LDA #0
- STA DAUX2
- JSR SIOV
- BMI HALT
- LDA $0400
- CMP #$FF
- BNE BOOTDISK.1
- LDA $0401
- CMP #$FF
- BEQ BINARY.FILE
- BOOTDISK.1
- STA 0
- CLC
- LDA $0402
- STA DBUFLO
- ADC #6
- STA 1
- LDA $0403
- STA DBUFHI
- ADC #0
- STA 2
- LDA $0404
- STA 3
- LDA $0405
- STA 4
- ?L1
- JSR SIOV
- BMI HALT
- CLC
- LDA DBUFLO
- ADC #$80
- STA DBUFLO
- LDA DBUFHI
- ADC #0
- STA DBUFHI
- INC DAUX1
- BNE ?L2
- INC DAUX2
- ?L2
- DEC 0
- BNE ?L1
- DEC 5
- BPL ?L1
- JSR ?L3 ; Run initialisation code
- LDA #1
- STA BOOT
- JSR ?L4 ; Run main program
- RTS
- ?L3
- JMP ($01)
- ?L4
- JMP ($03)
- ;
- BINARY.FILE
- ;
- HALT
- LDA # <DLIST
- STA SDLSTL
- STA DLISTL
- LDA # >DLIST
- STA SDLSTH
- STA DLISTH
- LDA #$E0
- STA CHBASE
- STA CHBAS
- LDA #$22
- STA DMACTL
- STA SDMCTL
- LDA #$02
- STA CHACTL
- STA CHART
- LDA #$CA
- STA COLBK
- STA COLOR4
- LDA #$94
- STA COLPF2
- STA COLOR2
- LDA #$0A
- STA COLPF1
- STA COLOR1
- ;
- HALT2
- JMP HALT2
- DLIST
- .BYTE $70,$70,$70
- .BYTE $42, <HALTMSG, >HALTMSG
- .BYTE $02,$02,$02,$02,$02
- .BYTE $02,$02,$02,$02,$02
- .BYTE $02,$02,$02,$02,$02
- .BYTE $02,$02,$02,$02,$02
- .BYTE $02,$02,$02
- .BYTE $41, <DLIST, >DLIST
- ;
- HALTMSG
- .SBYTE " Atari800/OS Emulation Halted "
- .SBYTE " Copright (c) 1997 David J. Firth "
- .SBYTE " "
- .SBYTE " E-Mail: david@signus.demon.co.uk "
- .SBYTE " http://www.signus.demon.co.uk/david/ "
- .SBYTE " "
- .SBYTE "Sorry this program needs a real Atari/OS"
- .SBYTE " "
- .SBYTE " "
- .SBYTE " "
- .SBYTE " "
- .SBYTE " "
- .SBYTE " "
- .SBYTE " "
- .SBYTE " "
- .SBYTE " "
- .SBYTE " "
- .SBYTE " "
- .SBYTE " "
- .SBYTE " "
- .SBYTE " "
- .SBYTE " "
- .SBYTE " "
- .SBYTE " "
- ;
- NMI
- BIT NMIST
- BPL VBI
- JMP ($0200)
- VBI
- PHA
- TXA
- PHA
- TYA
- PHA
- STA NMIRES
- JMP (VVBLKI)
- SYSVBL
- INC RTCLOK+2
- BNE SYSVBL.1
- INC RTCLOK+1
- BNE SYSVBL.1
- INC RTCLOK
- SYSVBL.1
- LDA SDMCTL
- STA DMACTL
- LDA SDLSTL
- STA DLISTL
- LDA SDLSTH
- STA DLISTH
- LDA COLOR4
- STA COLBK
- LDA COLOR0
- STA COLPF0
- LDA COLOR1
- STA COLPF1
- LDA COLOR2
- STA COLPF2
- LDA COLOR3
- STA COLPF3
- LDA PCOLR0
- STA COLPM0
- LDA PCOLR1
- STA COLPM1
- LDA PCOLR2
- STA COLPM2
- LDA PCOLR3
- STA COLPM3
- LDA CHART
- STA CHACTL
- LDA CHBAS
- STA CHBASE
- LDA PORTA
- AND #$0F
- STA STICK0
- LDA PORTA
- ASL A
- ASL A
- ASL A
- ASL A
- STA STICK1
- LDA PORTB
- AND #$0F
- STA STICK2
- LDA PORTB
- ASL A
- ASL A
- ASL A
- ASL A
- STA STICK3
- LDA GPRIOR
- STA PRIOR
- LDA SSKCTL
- STA SKCTL
- LDA TRIG0
- STA STRIG0
- LDA TRIG1
- STA STRIG1
- LDA TRIG2
- STA STRIG2
- LDA TRIG3
- STA STRIG3
- JMP (VVBLKD)
- XITVBL
- PLA
- TAY
- PLA
- TAX
- PLA
- IRQ.VECTOR
- JMP ($0216)
- IRQ
- PHA
- LDA IRQST ; Get Interrupt Status
- AND #$40
- BNE IRQ.EXIT
- LDA KBCODE
- STA CH
- IRQ.EXIT
- PLA
- RTI
- ;
- *= $FFFA
- .WORD NMI
- *= $FFFC
- .WORD COLDSTART
- *= $FFFE
- .WORD IRQ.VECTOR
-