Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- HW_Expansion_Data = $A10007
- HW_Port_1_Control = $A10009
- HW_Port_2_Control = $A1000B
- HW_Expansion_Control = $A1000D
- Z80_RAM = $A00000 ; start of Z80 RAM
- Z80_RAM_end = $A02000 ; end of non-reserved Z80 RAM
- Z80_bus_request = $A11100
- Z80_reset = $A11200
- lea HW_Port_1_Control,a1
- move.b -8(a1),d0
- andi.b #$F,d0
- beq.s .SkipSecurity
- move.l Console.w,$A14000-HW_Port_1_Control(a1)
- ; put z80 reset program in
- .SkipSecurity lea $2D0.w,a4
- lea Z80_RAM,a0
- move.w #$100,Z80_bus_request-HW_Port_1_Control(a1)
- move.w #$100,Z80_reset-HW_Port_1_Control(a1)
- .waitz80 btst #0,Z80_bus_request-HW_Port_1_Control(a1)
- bne.s .waitz80
- moveq #$26-1,d2
- .loadz80 move.b (a4)+,(a0)+
- dbf d2,.loadz80
- ; reset PSG
- add.w #12,a4 ; advance by 12 bytes
- rept 4
- move.b (a4)+,$C00011 ; send command
- endr
- move.w #0,Z80_reset-HW_Port_1_Control(a1)
- rept 4
- nop
- endr
- move.w #$100,Z80_reset-HW_Port_1_Control(a1)
- move.w #0,Z80_bus_request-HW_Port_1_Control(a1)
- [ some code here ]
- SndDrvInit:
- nop
- move.w #$100,Z80_bus_request
- move.w #$100,Z80_reset ; release Z80 reset
- lea kos_z80,a0
- lea Z80_RAM,a1
- jsr KosDec.w
- move.b #$11,Z80_RAM+$1C03
- move.b #$F2,Z80_RAM+$106C
- move.w #0,Z80_reset ; reset Z80
- nop
- nop
- nop
- nop
- move.w #$100,Z80_reset ; release reset
- move.w #0,Z80_bus_request ; start the Z80
- rts
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement