PiSCSI boot ROM+custom file systems working

This commit is contained in:
beeanyew
2021-02-16 22:48:23 +01:00
parent 24d09251d5
commit 7f741a460b
5 changed files with 25 additions and 14 deletions

3
data/README.md Normal file
View File

@@ -0,0 +1,3 @@
# Data directory
This is the directory used for storing emulator-related volatile and non-volatile items such as temporary files (volatile) and the CDTV/CD32 SRAM (non-volatile).

View File

@@ -310,21 +310,21 @@ PartitionLoop:
EndPartitions:
move.l #8,PiSCSIDebugMe
move.l #8,PiSCSIDebugMe
move.l a6,a1
move.l #800,PiSCSIDebugMe
move.l #800,PiSCSIDebugMe
movea.l 4,a6
move.l #801,PiSCSIDebugMe
move.l #801,PiSCSIDebugMe
jsr CloseLibrary(a6)
move.l #802,PiSCSIDebugMe
move.l #802,PiSCSIDebugMe
move.l (a7)+,a6 ; Pop A6 from stack
move.l #803,PiSCSIDebugMe
move.l (a7)+,a6 ; Pop A6 from stack
move.l #803,PiSCSIDebugMe
move.w #$80B8,$dff09a ; Re-enable interrupts
move.l #804,PiSCSIDebugMe
move.l #804,PiSCSIDebugMe
moveq.l #1,d0 ; indicate "success"
move.l #805,PiSCSIDebugMe
move.l #805,PiSCSIDebugMe
rts
align 4

View File

@@ -258,8 +258,9 @@ skip_fs_load_lseg:;
read(d->fd, fhb_block, 512);
}
if (!fs_found)
if (!fs_found) {
DEBUG("[!!!FSHD] No file systems found on hard drive!\n");
}
fs_done:;
if (fhb_block)
@@ -372,8 +373,9 @@ void print_piscsi_debug_message(int index) {
DEBUG("[PISCSI] Initializing devices.\n");
break;
case DBG_OPENDEV:
if (piscsi_dbg[0] != 255)
if (piscsi_dbg[0] != 255) {
DEBUG("[PISCSI] Opening device %d (%d). Flags: %d (%.2X)\n", piscsi_dbg[0], piscsi_dbg[2], piscsi_dbg[1], piscsi_dbg[1]);
}
break;
case DBG_CLEANUP:
DEBUG("[PISCSI] Cleaning up.\n");
@@ -559,8 +561,9 @@ void handle_piscsi_write(uint32_t addr, uint32_t val, uint8_t type) {
if (piscsi_cur_drive > NUM_UNITS)
piscsi_cur_drive = 255;
if (piscsi_cur_drive != 255)
if (piscsi_cur_drive != 255) {
DEBUG("[PISCSI] (%s) Drive number set to %d (%d)\n", op_type_names[type], piscsi_cur_drive, val);
}
break;
case PISCSI_CMD_DEBUGME:
piscsi_debugme(val);
@@ -679,17 +682,18 @@ skip_disk:;
DEBUG("[PISCSI] Partition DOSType is %c%c%c/%d\n", dosID[0], dosID[1], dosID[2], dosID[3]);
for (i = 0; i < piscsi_num_fs; i++) {
if (rom_partition_dostype[rom_cur_partition] == filesystems[i].FS_ID) {
node->dn_SegList = htobe32(filesystems[i].handler);
node->dn_SegList = htobe32((filesystems[i].handler >> 2));
node->dn_GlobalVec = 0xFFFFFFFF;
goto fs_found;
}
}
DEBUG("[!!!PISCSI] Found no handler for file system!\n");
fs_found:;
DEBUG("[FS-HANDLER] Next: %d Type: %d\n", BE(node->dn_Next), BE(node->dn_Type));
DEBUG("[FS-HANDLER] Next: %d Type: %.8X\n", BE(node->dn_Next), BE(node->dn_Type));
DEBUG("[FS-HANDLER] Task: %d Lock: %d\n", BE(node->dn_Task), BE(node->dn_Lock));
DEBUG("[FS-HANDLER] Handler: %d Stacksize: %d\n", BE((uint32_t)node->dn_Handler), BE(node->dn_StackSize));
DEBUG("[FS-HANDLER] Priority: %d Startup: %d\n", BE((uint32_t)node->dn_Priority), BE(node->dn_Startup));
DEBUG("[FS-HANDLER] SegList: %d GlobalVec: %d\n", BE((uint32_t)node->dn_SegList), BE(node->dn_GlobalVec));
DEBUG("[FS-HANDLER] SegList: %.8X GlobalVec: %d\n", BE((uint32_t)node->dn_SegList), BE(node->dn_GlobalVec));
DEBUG("[PISCSI] Handler for partition %.8X set to %.8X (%.8X).\n", BE((uint32_t)node->dn_Name), filesystems[i].FS_ID, filesystems[i].handler);
}
break;

View File

@@ -14,6 +14,10 @@ Physical drives can also be mounted using their mount point files on Linux, such
You can mount up to 7 disk images using setvar `piscsi0` through `piscsi6`.
If you want EVEN MORE speed, either adjust the size of your hard drive image so that it gets properly detected with 16 heads in HDToolBox or manually edit the Cylinders/Heads settings when setting up your drive.
(The trackdisk device on the Amiga seems to enable transfers bigger than 512 bytes (one sector) only if the drive is identified as having more than one drive head/surface.)
# Making changes to the driver
If you make changes to the driver, you can always test these on the Amiga as a regular file in `DEVS:`, but the Z2 device has to be disabled for this to work properly.