mirror of
https://github.com/garrettsworkshop/MacIIROMDiskDriver.git
synced 2024-05-31 20:41:28 +00:00
New build system
This commit is contained in:
parent
627b879755
commit
5568fe98b1
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -3,3 +3,7 @@ obj/
|
||||||
RDiskCP/RDiskCP.rsrc
|
RDiskCP/RDiskCP.rsrc
|
||||||
RDiskCP/GW ROM Disk
|
RDiskCP/GW ROM Disk
|
||||||
RDiskCP/RDiskCP
|
RDiskCP/RDiskCP
|
||||||
|
bin/IIsi/
|
||||||
|
bin/IIci/
|
||||||
|
bin/IIfx/
|
||||||
|
bin/IIxIIcxSE30/
|
||||||
|
|
166
Makefile
166
Makefile
|
@ -5,13 +5,22 @@ LD=$(PREFIX)-ld
|
||||||
OBJCOPY=$(PREFIX)-objcopy
|
OBJCOPY=$(PREFIX)-objcopy
|
||||||
OBJDUMP=$(PREFIX)-objdump
|
OBJDUMP=$(PREFIX)-objdump
|
||||||
|
|
||||||
all: bin/rom16M_swap.bin obj/rdisk7M5.s obj/driver7M5.s obj/entry_rel.sym obj/driver_abs.sym
|
all: bin/IIxIIcxSE30/IIxIIcxSE30_8M.bin bin/IIci/IIci_8M.bin bin/IIfx/IIfx_8M.bin bin/IIsi/IIsi_8M.bin bin/GWSys71_8M.bin bin/GWSys6_8M.bin bin/GWSys6T_2M.bin obj/rdisk.s obj/driver.s obj/driver_abs.sym
|
||||||
|
|
||||||
obj:
|
obj:
|
||||||
mkdir obj
|
mkdir $@
|
||||||
|
|
||||||
bin:
|
bin:
|
||||||
mkdir bin
|
mkdir $@
|
||||||
|
bin/IIsi: bin
|
||||||
|
mkdir $@
|
||||||
|
bin/IIxIIcxSE30: bin
|
||||||
|
mkdir $@
|
||||||
|
bin/IIci: bin
|
||||||
|
mkdir $@
|
||||||
|
bin/IIfx: bin
|
||||||
|
mkdir $@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
obj/entry.o: entry.s obj
|
obj/entry.o: entry.s obj
|
||||||
|
@ -21,37 +30,146 @@ obj/entry_rel.sym: obj obj/entry.o
|
||||||
$(OBJDUMP) -t obj/entry.o > $@
|
$(OBJDUMP) -t obj/entry.o > $@
|
||||||
|
|
||||||
|
|
||||||
obj/rdisk7M5.o: rdisk.c obj
|
obj/rdisk.o: rdisk.c obj
|
||||||
$(CC) -Wall -DRDiskSize=7864320 -march=68030 -c -Os $< -o $@
|
$(CC) -Wall -march=68030 -c -Os $< -o $@
|
||||||
|
|
||||||
obj/rdisk7M5.s: obj obj/rdisk7M5.o
|
obj/rdisk.s: obj obj/rdisk.o
|
||||||
$(OBJDUMP) -d obj/rdisk7M5.o > $@
|
$(OBJDUMP) -d obj/rdisk.o > $@
|
||||||
|
|
||||||
obj/driver7M5.o: obj obj/entry.o obj/rdisk7M5.o
|
obj/driver.o: obj obj/entry.o obj/rdisk.o
|
||||||
$(LD) -Ttext=40851D70 -o $@ obj/entry.o obj/rdisk7M5.o
|
$(LD) -Ttext=40851D70 -o $@ obj/entry.o obj/rdisk.o
|
||||||
|
|
||||||
obj/driver7M5.s: obj obj/driver7M5.o
|
obj/driver.s: obj obj/driver.o
|
||||||
$(OBJDUMP) -d obj/driver7M5.o > $@
|
$(OBJDUMP) -d obj/driver.o > $@
|
||||||
|
|
||||||
obj/driver_abs.sym: obj obj/driver7M5.o
|
obj/driver_abs.sym: obj obj/driver.o
|
||||||
$(OBJDUMP) -t obj/driver7M5.o > $@
|
$(OBJDUMP) -t obj/driver.o > $@
|
||||||
|
|
||||||
|
|
||||||
bin/driver7M5.bin: bin obj/driver7M5.o
|
bin/driver.bin: bin obj/driver.o
|
||||||
$(OBJCOPY) -O binary obj/driver7M5.o $@
|
$(OBJCOPY) -O binary obj/driver.o $@
|
||||||
|
|
||||||
bin/rom8M.bin: bin baserom.bin RDisk7M5.dsk bin bin/driver7M5.bin obj/driver_abs.sym obj/entry_rel.sym
|
bin/baserom_romdisk_ramtest.bin: bin roms/baserom.bin bin/driver.bin obj/driver_abs.sym obj/entry_rel.sym
|
||||||
cp baserom.bin $@ # Copy base rom
|
cp roms/baserom.bin $@ # Copy base rom
|
||||||
# Patch driver
|
# Patch driver
|
||||||
dd if=bin/driver7M5.bin of=$@ bs=1 seek=335248 skip=32 conv=notrunc # Copy driver code
|
dd if=bin/driver.bin of=$@ bs=1 seek=335248 skip=32 conv=notrunc # Copy driver code
|
||||||
printf '\x78' | dd of=$@ bs=1 seek=335168 count=1 conv=notrunc # Set resource flags
|
printf '\x78' | dd of=$@ bs=1 seek=335168 count=1 conv=notrunc # Set resource flags
|
||||||
printf '\x4F' | dd of=$@ bs=1 seek=335216 count=1 conv=notrunc # Set driver flags
|
printf '\x4F' | dd of=$@ bs=1 seek=335216 count=1 conv=notrunc # Set driver flags
|
||||||
cat obj/entry_rel.sym | grep "DOpen" | cut -c5-8 | xxd -r -p - | dd of=$@ bs=1 seek=335224 count=2 conv=notrunc
|
cat obj/entry_rel.sym | grep "[0-9]\s*DOpen" | cut -c5-8 | xxd -r -p - | dd of=$@ bs=1 seek=335224 count=2 conv=notrunc
|
||||||
cat obj/entry_rel.sym | grep "DPrime" | cut -c5-8 | xxd -r -p - | dd of=$@ bs=1 seek=335226 count=2 conv=notrunc
|
cat obj/entry_rel.sym | grep "[0-9]\s*DPrime" | cut -c5-8 | xxd -r -p - | dd of=$@ bs=1 seek=335226 count=2 conv=notrunc
|
||||||
cat obj/entry_rel.sym | grep "DControl" | cut -c5-8 | xxd -r -p - | dd of=$@ bs=1 seek=335228 count=2 conv=notrunc
|
cat obj/entry_rel.sym | grep "[0-9]\s*DControl" | cut -c5-8 | xxd -r -p - | dd of=$@ bs=1 seek=335228 count=2 conv=notrunc
|
||||||
cat obj/entry_rel.sym | grep "DStatus" | cut -c5-8 | xxd -r -p - | dd of=$@ bs=1 seek=335230 count=2 conv=notrunc
|
cat obj/entry_rel.sym | grep "[0-9]\s*DStatus" | cut -c5-8 | xxd -r -p - | dd of=$@ bs=1 seek=335230 count=2 conv=notrunc
|
||||||
cat obj/entry_rel.sym | grep "DClose" | cut -c5-8 | xxd -r -p - | dd of=$@ bs=1 seek=335232 count=2 conv=notrunc
|
cat obj/entry_rel.sym | grep "[0-9]\s*DClose" | cut -c5-8 | xxd -r -p - | dd of=$@ bs=1 seek=335232 count=2 conv=notrunc
|
||||||
dd if=RDisk7M5.dsk of=$@ bs=1024 seek=512 count=7680 conv=notrunc # copy disk image
|
|
||||||
|
bin/baserom_romdisk_noramtest.bin: bin bin/baserom_romdisk_ramtest.bin
|
||||||
|
cp bin/baserom_romdisk_ramtest.bin $@ # Copy base rom
|
||||||
|
# Disable RAM test
|
||||||
|
printf '\x4E\xD6' | dd of=$@ bs=1 seek=288736 count=2 conv=notrunc
|
||||||
|
printf '\x4E\xD6' | dd of=$@ bs=1 seek=289016 count=2 conv=notrunc
|
||||||
|
|
||||||
|
|
||||||
|
bin/GWSys71_8M.bin: bin bin/baserom_romdisk_noramtest.bin disks/RDisk7M5.dsk
|
||||||
|
# Copy base rom with ROM disk driver
|
||||||
|
cp bin/baserom_romdisk_noramtest.bin $@
|
||||||
|
# Patch ROM disk driver parameter table
|
||||||
|
printf '\x00\x01\x2A\x29' | dd of=$@ bs=1 seek=335260 count=4 conv=notrunc # Patch CDR patch offset
|
||||||
|
printf '\x40\x89\x2A\x14' | dd of=$@ bs=1 seek=335268 count=4 conv=notrunc # Patch CDR name address
|
||||||
|
printf '\x44' | dd of=$@ bs=1 seek=335273 count=1 conv=notrunc # Patch CDR disable byte
|
||||||
|
printf '\x00\x78\x00\x00' | dd of=$@ bs=1 seek=335276 count=4 conv=notrunc # Patch ROM disk size
|
||||||
|
# Copy ROM disk image
|
||||||
|
dd if=disks/RDisk7M5.dsk of=$@ bs=1024 seek=512 conv=notrunc
|
||||||
|
# Compute checksum
|
||||||
|
#python checksum.py $@ | cut -c3-10 | xxd -r -p - | dd of=$@ bs=1 seek=0 count=4 conv=notrunc
|
||||||
|
printf '\x36\x9D\x3E\x51' | dd of=$@ bs=1 seek=0 count=4 conv=notrunc # Insert fake checksum (BMoW)
|
||||||
|
|
||||||
|
|
||||||
|
bin/GWSys6_4M.bin: bin bin/baserom_romdisk_noramtest.bin disks/RDisk3M5.dsk
|
||||||
|
# Copy base rom with ROM disk driver
|
||||||
|
cp bin/baserom_romdisk_noramtest.bin $@
|
||||||
|
# Patch ROM disk driver parameter table
|
||||||
|
printf '\xFF\xFF\xFF\xFF' | dd of=$@ bs=1 seek=335260 count=4 conv=notrunc # Patch CDR patch offset
|
||||||
|
printf '\x00\x00\x00\x00' | dd of=$@ bs=1 seek=335268 count=4 conv=notrunc # Patch CDR name address
|
||||||
|
printf '\x44' | dd of=$@ bs=1 seek=335273 count=1 conv=notrunc # Patch CDR disable byte
|
||||||
|
printf '\x00\x38\x00\x00' | dd of=$@ bs=1 seek=335276 count=4 conv=notrunc # Patch ROM disk size
|
||||||
|
# Copy ROM disk image
|
||||||
|
dd if=disks/RDisk3M5.dsk of=$@ bs=1024 seek=512 conv=notrunc
|
||||||
|
# Compute checksum
|
||||||
|
#python checksum.py $@ | cut -c3-10 | xxd -r -p - | dd of=$@ bs=1 seek=0 count=4 conv=notrunc
|
||||||
|
printf '\x36\x9D\x3E\x51' | dd of=$@ bs=1 seek=0 count=4 conv=notrunc # Insert fake checksum (BMoW)
|
||||||
|
|
||||||
|
bin/GWSys6_8M.bin: bin/GWSys6_4M.bin
|
||||||
|
cat bin/GWSys6_4M.bin > $@
|
||||||
|
cat bin/GWSys6_4M.bin >> $@
|
||||||
|
|
||||||
|
|
||||||
|
bin/GWSys6T_2M.bin: bin bin/baserom_romdisk_ramtest.bin disks/RDisk1M5.dsk
|
||||||
|
# Copy base rom with ROM disk driver
|
||||||
|
cp bin/baserom_romdisk_ramtest.bin $@
|
||||||
|
# Patch ROM disk driver parameter table
|
||||||
|
printf '\xFF\xFF\xFF\xFF' | dd of=$@ bs=1 seek=335260 count=4 conv=notrunc # Patch CDR patch offset
|
||||||
|
printf '\x00\x00\x00\x00' | dd of=$@ bs=1 seek=335268 count=4 conv=notrunc # Patch CDR name address
|
||||||
|
printf '\x44' | dd of=$@ bs=1 seek=335273 count=1 conv=notrunc # Patch CDR disable byte
|
||||||
|
printf '\x00\x18\x00\x00' | dd of=$@ bs=1 seek=335276 count=4 conv=notrunc # Patch ROM disk size
|
||||||
|
# Copy ROM disk image
|
||||||
|
dd if=disks/RDisk1M5.dsk of=$@ bs=1024 seek=512 conv=notrunc
|
||||||
|
# Compute checksum
|
||||||
|
#python checksum.py $@ | cut -c3-10 | xxd -r -p - | dd of=$@ bs=1 seek=0 count=4 conv=notrunc
|
||||||
|
printf '\x36\x9D\x3E\x51' | dd of=$@ bs=1 seek=0 count=4 conv=notrunc # Insert fake checksum (BMoW)
|
||||||
|
|
||||||
|
|
||||||
|
bin/IIxIIcxSE30/IIxIIcxSE30_512k.bin: bin/IIxIIcxSE30 roms/IIxIIcxSE30.bin
|
||||||
|
cat roms/IIxIIcxSE30.bin > $@; cat roms/IIxIIcxSE30.bin >> $@
|
||||||
|
|
||||||
|
bin/IIxIIcxSE30/IIxIIcxSE30_1M.bin: bin/IIxIIcxSE30 bin/IIxIIcxSE30/IIxIIcxSE30_512k.bin
|
||||||
|
cat bin/IIxIIcxSE30/IIxIIcxSE30_512k.bin > $@; cat bin/IIxIIcxSE30/IIxIIcxSE30_512k.bin >> $@
|
||||||
|
|
||||||
|
bin/IIxIIcxSE30/IIxIIcxSE30_2M.bin: bin/IIxIIcxSE30 bin/IIxIIcxSE30/IIxIIcxSE30_1M.bin
|
||||||
|
cat bin/IIxIIcxSE30/IIxIIcxSE30_1M.bin > $@; cat bin/IIxIIcxSE30/IIxIIcxSE30_1M.bin >> $@
|
||||||
|
|
||||||
|
bin/IIxIIcxSE30/IIxIIcxSE30_4M.bin: bin/IIxIIcxSE30 bin/IIxIIcxSE30/IIxIIcxSE30_2M.bin
|
||||||
|
cat bin/IIxIIcxSE30/IIxIIcxSE30_2M.bin > $@; cat bin/IIxIIcxSE30/IIxIIcxSE30_2M.bin >> $@
|
||||||
|
|
||||||
|
bin/IIxIIcxSE30/IIxIIcxSE30_8M.bin: bin/IIxIIcxSE30 bin/IIxIIcxSE30/IIxIIcxSE30_4M.bin
|
||||||
|
cat bin/IIxIIcxSE30/IIxIIcxSE30_4M.bin > $@; cat bin/IIxIIcxSE30/IIxIIcxSE30_4M.bin >> $@
|
||||||
|
|
||||||
|
|
||||||
|
bin/IIci/IIci_1M.bin: bin/IIci roms/IIci.bin
|
||||||
|
cat roms/IIci.bin > $@; cat roms/IIci.bin >> $@
|
||||||
|
|
||||||
|
bin/IIci/IIci_2M.bin: bin/IIci bin/IIci/IIci_1M.bin
|
||||||
|
cat bin/IIci/IIci_1M.bin > $@; cat bin/IIci/IIci_1M.bin >> $@
|
||||||
|
|
||||||
|
bin/IIci/IIci_4M.bin: bin/IIci bin/IIci/IIci_2M.bin
|
||||||
|
cat bin/IIci/IIci_2M.bin > $@; cat bin/IIci/IIci_2M.bin >> $@
|
||||||
|
|
||||||
|
bin/IIci/IIci_8M.bin: bin/IIci bin/IIci/IIci_4M.bin
|
||||||
|
cat bin/IIci/IIci_4M.bin > $@; cat bin/IIci/IIci_4M.bin >> $@
|
||||||
|
|
||||||
|
|
||||||
|
bin/IIfx/IIfx_1M.bin: bin/IIfx roms/IIfx.bin
|
||||||
|
cat roms/IIfx.bin > $@; cat roms/IIfx.bin >> $@
|
||||||
|
|
||||||
|
bin/IIfx/IIfx_2M.bin: bin/IIfx bin/IIfx/IIfx_1M.bin
|
||||||
|
cat bin/IIfx/IIfx_1M.bin > $@; cat bin/IIfx/IIfx_1M.bin >> $@
|
||||||
|
|
||||||
|
bin/IIfx/IIfx_4M.bin: bin/IIfx bin/IIfx/IIfx_2M.bin
|
||||||
|
cat bin/IIfx/IIfx_2M.bin > $@; cat bin/IIfx/IIfx_2M.bin >> $@
|
||||||
|
|
||||||
|
bin/IIfx/IIfx_8M.bin: bin/IIfx bin/IIfx/IIfx_4M.bin
|
||||||
|
cat bin/IIfx/IIfx_4M.bin > $@; cat bin/IIfx/IIfx_4M.bin >> $@
|
||||||
|
|
||||||
|
|
||||||
|
bin/IIsi/IIsi_1M.bin: bin/IIsi roms/IIsi.bin
|
||||||
|
cat roms/IIsi.bin > $@; cat roms/IIsi.bin >> $@
|
||||||
|
|
||||||
|
bin/IIsi/IIsi_2M.bin: bin/IIsi bin/IIsi/IIsi_1M.bin
|
||||||
|
cat bin/IIsi/IIsi_1M.bin > $@; cat bin/IIsi/IIsi_1M.bin >> $@
|
||||||
|
|
||||||
|
bin/IIsi/IIsi_4M.bin: bin/IIsi bin/IIsi/IIsi_2M.bin
|
||||||
|
cat bin/IIsi/IIsi_2M.bin > $@; cat bin/IIsi/IIsi_2M.bin >> $@
|
||||||
|
|
||||||
|
bin/IIsi/IIsi_8M.bin: bin/IIsi bin/IIsi/IIsi_4M.bin
|
||||||
|
cat bin/IIsi/IIsi_4M.bin > $@; cat bin/IIsi/IIsi_4M.bin >> $@
|
||||||
|
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
|
|
BIN
bin/GWSys6T_2M.bin
Executable file
BIN
bin/GWSys6T_2M.bin
Executable file
Binary file not shown.
BIN
bin/GWSys6_4M.bin
Executable file
BIN
bin/GWSys6_4M.bin
Executable file
Binary file not shown.
BIN
bin/GWSys6_8M.bin
Normal file
BIN
bin/GWSys6_8M.bin
Normal file
Binary file not shown.
Binary file not shown.
BIN
bin/baserom_romdisk_noramtest.bin
Executable file
BIN
bin/baserom_romdisk_noramtest.bin
Executable file
Binary file not shown.
BIN
bin/baserom_romdisk_ramtest.bin
Executable file
BIN
bin/baserom_romdisk_ramtest.bin
Executable file
Binary file not shown.
BIN
bin/driver.bin
Executable file
BIN
bin/driver.bin
Executable file
Binary file not shown.
Binary file not shown.
11
checksum.py
Normal file
11
checksum.py
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
import sys
|
||||||
|
import struct
|
||||||
|
|
||||||
|
with open(sys.argv[1], mode='rb') as file:
|
||||||
|
file.read(4) # discard first four bytes
|
||||||
|
rombin = file.read() # read rest of file
|
||||||
|
cksum = 0
|
||||||
|
for i in struct.unpack('>' + str(len(rombin)/2) + 'H', rombin):
|
||||||
|
cksum += i;
|
||||||
|
cksum &= 0xFFFFFFFF
|
||||||
|
print(hex(cksum))
|
Binary file not shown.
BIN
disks/RDisk3M5.dsk
Normal file
BIN
disks/RDisk3M5.dsk
Normal file
Binary file not shown.
7
entry.s
7
entry.s
|
@ -21,11 +21,11 @@ RDiskSig:
|
||||||
RDiskDBGDisPos:
|
RDiskDBGDisPos:
|
||||||
dc.l 0x00000031
|
dc.l 0x00000031
|
||||||
RDiskCDRDisPos:
|
RDiskCDRDisPos:
|
||||||
dc.l 0x00012A29
|
dc.l 0xFFFFFFFF
|
||||||
RDiskDBGNameAddr:
|
RDiskDBGNameAddr:
|
||||||
dc.l 0x4088002A
|
dc.l 0x4088002A
|
||||||
RDiskCDRNameAddr:
|
RDiskCDRNameAddr:
|
||||||
dc.l 0x40892A14
|
dc.l 0x00000000
|
||||||
RDiskDBGDisByte:
|
RDiskDBGDisByte:
|
||||||
dc.b 0x44
|
dc.b 0x44
|
||||||
RDiskCDRDisByte:
|
RDiskCDRDisByte:
|
||||||
|
@ -34,6 +34,9 @@ RDiskRAMRequired:
|
||||||
.ascii "16"
|
.ascii "16"
|
||||||
|
|
||||||
.align 4
|
.align 4
|
||||||
|
RDiskSize:
|
||||||
|
dc.l 0x00780000
|
||||||
|
|
||||||
DOpen:
|
DOpen:
|
||||||
movem.l %A0-%A1, -(%SP)
|
movem.l %A0-%A1, -(%SP)
|
||||||
bsr RDOpen
|
bsr RDOpen
|
||||||
|
|
33
rdisk.c
33
rdisk.c
|
@ -118,6 +118,10 @@ OSErr RDOpen(IOParamPtr p, DCtlPtr d) {
|
||||||
// Find first available drive number
|
// Find first available drive number
|
||||||
drvNum = RDFindDrvNum();
|
drvNum = RDFindDrvNum();
|
||||||
|
|
||||||
|
// Get debug and CD-ROM disable settings from ROM table
|
||||||
|
c->dbgDisByte = RDiskDBGDisByte;
|
||||||
|
c->cdrDisByte = RDiskCDRDisByte;
|
||||||
|
|
||||||
// Set drive status
|
// Set drive status
|
||||||
//c->status.track = 0;
|
//c->status.track = 0;
|
||||||
c->status.writeProt = -1; // nonzero is write protected
|
c->status.writeProt = -1; // nonzero is write protected
|
||||||
|
@ -182,24 +186,19 @@ static void RDInit(IOParamPtr p, DCtlPtr d, RDiskStorage_t *c) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get debug and CD-ROM disable settings from ROM table
|
|
||||||
c->dbgDisPos = *(long*)0x40851D98;
|
|
||||||
c->cdrDisPos = *(long*)0x40851D9C;
|
|
||||||
c->dbgDisByte = *(char*)0x40851DA8;
|
|
||||||
c->cdrDisByte = *(char*)0x40851DA9;
|
|
||||||
// Patch
|
// Patch
|
||||||
if (c->dbgDisPos < RDiskSize) {
|
if (RDiskDBGDisPos < RDiskSize) {
|
||||||
if (c->ramdisk && !dbgEN) {
|
if (c->ramdisk && !dbgEN) {
|
||||||
poke24(c->ramdisk + c->dbgDisPos, c->dbgDisByte);
|
poke24(c->ramdisk + RDiskDBGDisPos, c->dbgDisByte);
|
||||||
} else if (dbgEN) {
|
} else if (dbgEN) {
|
||||||
peek24(RDiskBuf + c->dbgDisPos, c->dbgDisByte);
|
peek24(RDiskBuf + RDiskDBGDisPos, c->dbgDisByte);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (c->cdrDisPos < RDiskSize) {
|
if (RDiskCDRDisPos < RDiskSize) {
|
||||||
if (c->ramdisk && !cdrEN) {
|
if (c->ramdisk && !cdrEN) {
|
||||||
poke24(c->ramdisk + c->cdrDisPos, c->cdrDisByte);
|
poke24(c->ramdisk + RDiskCDRDisPos, c->cdrDisByte);
|
||||||
} else if (cdrEN) {
|
} else if (cdrEN) {
|
||||||
peek24(RDiskBuf + c->cdrDisPos, c->cdrDisByte);
|
peek24(RDiskBuf + RDiskCDRDisPos, c->cdrDisByte);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -242,13 +241,13 @@ OSErr RDPrime(IOParamPtr p, DCtlPtr d) {
|
||||||
// Read from disk into buffer.
|
// Read from disk into buffer.
|
||||||
if (*MMU32bit) { BlockMove(disk, p->ioBuffer, p->ioReqCount); }
|
if (*MMU32bit) { BlockMove(disk, p->ioBuffer, p->ioReqCount); }
|
||||||
else { copy24(disk, StripAddress(p->ioBuffer), p->ioReqCount); }
|
else { copy24(disk, StripAddress(p->ioBuffer), p->ioReqCount); }
|
||||||
if (!c->ramdisk && c->dbgDisPos >= d->dCtlPosition &&
|
if (!c->ramdisk && RDiskDBGDisPos >= d->dCtlPosition &&
|
||||||
c->dbgDisPos < d->dCtlPosition + p->ioReqCount) {
|
RDiskDBGDisPos < d->dCtlPosition + p->ioReqCount) {
|
||||||
p->ioBuffer[c->dbgDisPos - d->dCtlPosition] = c->dbgDisByte;
|
p->ioBuffer[RDiskDBGDisPos - d->dCtlPosition] = c->dbgDisByte;
|
||||||
}
|
}
|
||||||
if (!c->ramdisk && c->cdrDisPos >= d->dCtlPosition &&
|
if (!c->ramdisk && RDiskCDRDisPos >= d->dCtlPosition &&
|
||||||
c->cdrDisPos < d->dCtlPosition + p->ioReqCount) {
|
RDiskCDRDisPos < d->dCtlPosition + p->ioReqCount) {
|
||||||
p->ioBuffer[c->cdrDisPos - d->dCtlPosition] = c->cdrDisByte;
|
p->ioBuffer[RDiskCDRDisPos - d->dCtlPosition] = c->cdrDisByte;
|
||||||
}
|
}
|
||||||
} else if (cmd == aWrCmd) { // Write
|
} else if (cmd == aWrCmd) { // Write
|
||||||
// Fail if write protected or RAM disk buffer not set up
|
// Fail if write protected or RAM disk buffer not set up
|
||||||
|
|
8
rdisk.h
8
rdisk.h
|
@ -6,6 +6,12 @@
|
||||||
#define MemTop ((Ptr*)0x108)
|
#define MemTop ((Ptr*)0x108)
|
||||||
#define MMU32bit ((char*)0xCB2)
|
#define MMU32bit ((char*)0xCB2)
|
||||||
|
|
||||||
|
#define RDiskDBGDisPos (*(const unsigned long*)0x40851D98)
|
||||||
|
#define RDiskCDRDisPos (*(const unsigned long*)0x40851D9C)
|
||||||
|
#define RDiskDBGDisByte (*(const char*)0x40851DA8)
|
||||||
|
#define RDiskCDRDisByte (*(const char*)0x40851DA9)
|
||||||
|
#define RDiskSize (*(const unsigned long*)0x40851DAC)
|
||||||
|
|
||||||
#define RDISK_COMPRESS_ICON_ENABLE
|
#define RDISK_COMPRESS_ICON_ENABLE
|
||||||
|
|
||||||
#pragma parameter __D0 RDiskReadXPRAM(__D0, __D1, __A0)
|
#pragma parameter __D0 RDiskReadXPRAM(__D0, __D1, __A0)
|
||||||
|
@ -22,8 +28,6 @@ typedef struct RDiskStorage_s {
|
||||||
DrvSts2 status;
|
DrvSts2 status;
|
||||||
char initialized;
|
char initialized;
|
||||||
Ptr ramdisk;
|
Ptr ramdisk;
|
||||||
long dbgDisPos;
|
|
||||||
long cdrDisPos;
|
|
||||||
char dbgDisByte;
|
char dbgDisByte;
|
||||||
char cdrDisByte;
|
char cdrDisByte;
|
||||||
#ifdef RDISK_COMPRESS_ICON_ENABLE
|
#ifdef RDISK_COMPRESS_ICON_ENABLE
|
||||||
|
|
BIN
roms/IIci.bin
Executable file
BIN
roms/IIci.bin
Executable file
Binary file not shown.
BIN
roms/IIfx.bin
Executable file
BIN
roms/IIfx.bin
Executable file
Binary file not shown.
BIN
roms/IIxIIcxSE30.bin
Executable file
BIN
roms/IIxIIcxSE30.bin
Executable file
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user