ROMBUSDriver/entry.s

81 lines
1.2 KiB
ArmAsm
Raw Normal View History

2020-08-11 18:57:00 +00:00
.EQU killCode, 1
.EQU noQueueBit, 9
.EQU kioTrap, 6
.EQU kioResult, 16
.EQU kcsCode, 26
.EQU JIODone, 0x08FC
dc.l 0x00000000, 0x00000000, 0x00000000, 0x00000000
dc.l 0x00000000, 0x00000000, 0x00000000, 0x00000000
2021-05-22 21:40:15 +00:00
2022-12-18 13:46:39 +00:00
RDiskSig:
.ascii "\5RDisk\0"
.align 4
RDiskDBGDisPos:
dc.l 0x00000031
RDiskCDRDisPos:
dc.l 0xFFFFFFFF
RDiskDBGNameAddr:
dc.l 0x4088002A
RDiskCDRNameAddr:
dc.l 0x00000000
RDiskDBGDisByte:
dc.b 0x44
RDiskCDRDisByte:
dc.b 0x44
RDiskRAMRequired:
.ascii "16"
2021-05-22 21:40:15 +00:00
.align 4
2021-08-07 05:01:54 +00:00
RDiskSize:
dc.l 0x00780000
2020-08-11 18:57:00 +00:00
DOpen:
movem.l %A0-%A1, -(%SP)
2021-08-07 17:20:49 +00:00
bsr RBOpen
2020-08-11 18:57:00 +00:00
movem.l (%SP)+, %A0-%A1
rts
DClose:
movem.l %A0-%A1, -(%SP)
2021-08-07 17:20:49 +00:00
bsr RBClose
2020-08-11 18:57:00 +00:00
movem.l (%SP)+, %A0-%A1
rts
DPrime:
movem.l %A0-%A1, -(%SP)
2021-08-07 17:20:49 +00:00
bsr RBPrime
2020-08-11 18:57:00 +00:00
movem.l (%SP)+, %A0-%A1
bra.b IOReturn
DControl:
movem.l %A0-%A1, -(%SP)
2021-08-07 17:20:49 +00:00
bsr RBCtl
2020-08-11 18:57:00 +00:00
movem.l (%SP)+, %A0-%A1
cmpi.w #killCode, kcsCode(%A0)
bne.b IOReturn
rts
DStatus:
movem.l %A0-%A1, -(%SP)
2021-08-07 17:20:49 +00:00
bsr RBStat
2020-08-11 18:57:00 +00:00
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:
move.l JIODone, -(%SP)
rts