MacIIROMDiskDriver/entry.s

69 lines
1.0 KiB
ArmAsm
Raw Normal View History

2020-06-26 07:12:08 +00:00
dc.l 0x00000000, 0x00000000, 0x00000000, 0x00000000
dc.l 0x00000000, 0x00000000, 0x00000000, 0x00000000
dc.l 0x00000000, 0x00000000, 0x00000000, 0x00000000
dc.l 0x00000000, 0x00000000, 0x00000000, 0x00000000
.EQU killCode, 1
.EQU noQueueBit, 9
.EQU kioTrap, 6
.EQU kioResult, 16
.EQU kcsCode, 26
.EQU JIODone, 0x08FC
DOpen:
movem.l %A0-%A1,-(%SP)
bsr RDiskOpen
movem.l (%SP)+,%A0-%A1
rts
DClose:
movem.l %A0-%A1,-(%SP)
bsr RDiskClose
movem.l (%SP)+,%A0-%A1
rts
DPrime:
movem.l %A0-%A1,-(%SP)
bsr RDiskPrime
movem.l (%SP)+,%A0-%A1
bra.b IOReturn
DControl:
movem.l %A0-%A1,-(%SP)
bsr RDiskControl
movem.l (%SP)+,%A0-%A1
cmpi.w #killCode, kcsCode(%A0)
bne.b IOReturn
rts
DStatus:
movem.l %A0-%A1,-(%SP)
bsr RDiskStatus
movem.l (%SP)+,%A0-%A1
IOReturn:
move.w kioTrap(%A0),%D1
btst #noQueueBit,%D1
beq.b Queued
NotQueued:
tst.w %D0
ble.b ImmedRTS
clr.w %D0
ImmedRTS:
move.w %D0,kioResult(%A0)
rts
Queued:
tst.w %D0
ble.b MyIODone
clr.w %D0
rts
MyIODone:
move.l JIODone,-(%SP)
rts