mirror of
https://github.com/garrettsworkshop/MacIIROMDiskDriver.git
synced 2024-06-25 20:29:29 +00:00
Try avoiding indexed instructions...
This commit is contained in:
parent
a2f6c2fa2c
commit
6a3bc43f05
Binary file not shown.
BIN
bin/rom8M.bin
BIN
bin/rom8M.bin
Binary file not shown.
4
entry.s
4
entry.s
|
@ -22,9 +22,9 @@ RDiskDBGDisPos:
|
|||
dc.l 0x00000031
|
||||
RDiskCDROMDisPos:
|
||||
dc.l 0x00012CAF
|
||||
RDiskDBGNamePos:
|
||||
RDiskDBGNameAddr:
|
||||
dc.l 0x4088002A
|
||||
RDiskCDROMNamePos:
|
||||
RDiskCDROMNameAddr:
|
||||
dc.l 0x40892C96
|
||||
RDiskDBGDisByte:
|
||||
dc.b 0x44
|
||||
|
|
14
rdisk.c
14
rdisk.c
|
@ -58,12 +58,13 @@ void C24(Ptr sourcePtr, Ptr destPtr, unsigned long byteCount) {
|
|||
|
||||
// Switch to 32-bit mode and patch
|
||||
void P24(Ptr ramdisk, char dbgEN, char cdromEN) {
|
||||
if (!ramdisk) { return; }
|
||||
signed char mode = true32b;
|
||||
SwapMMUMode(&mode);
|
||||
register Ptr dbg __asm__("%a1") = &ramdisk[*RDiskDBGDisPos];
|
||||
register Ptr cdrom __asm__("%a2") = &ramdisk[*RDiskCDROMDisPos];
|
||||
// Patch debug and CD-ROM disable bytes
|
||||
//if (!dbgEN) { ramdisk[*RDiskDBGDisPos] = *RDiskDBGDisByte; }
|
||||
//if (!cdromEN) { ramdisk[*RDiskCDROMDisPos] = *RDiskCDROMDisByte; }
|
||||
if (!dbgEN) { *dbg = *RDiskDBGDisByte; }
|
||||
if (!cdromEN) { *cdrom = *RDiskCDROMDisByte; }
|
||||
SwapMMUMode(&mode);
|
||||
}
|
||||
|
||||
|
@ -153,6 +154,8 @@ static void RDInit(IOParamPtr p, DCtlPtr d, RDiskStorage_t *c) {
|
|||
BlockMove(RDiskBuf, c->ramdisk, RDiskSize);
|
||||
// Clearing write protect marks RAM disk enabled
|
||||
c->status.writeProt = 0;
|
||||
// Patch debug and CD-ROM enable bytes
|
||||
patch24(c->ramdisk, dbgEN, cdromEN);
|
||||
}
|
||||
} else { // 24-bit mode
|
||||
// Put RAM disk just past 8MB
|
||||
|
@ -165,12 +168,11 @@ static void RDInit(IOParamPtr p, DCtlPtr d, RDiskStorage_t *c) {
|
|||
copy24(RDiskBuf, c->ramdisk, RDiskSize);
|
||||
// Clearing write protect marks RAM disk enabled
|
||||
c->status.writeProt = 0;
|
||||
// Patch debug and CD-ROM enable bytes
|
||||
patch24(c->ramdisk, dbgEN, cdromEN);
|
||||
}
|
||||
}
|
||||
|
||||
// Patch debug and CD-ROM enable bytes
|
||||
patch24(c->ramdisk, dbgEN, cdromEN);
|
||||
|
||||
// Unmount if not booting from ROM disk
|
||||
if (unmountEN) { c->status.diskInPlace = 0; }
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user