]> git.sesse.net Git - pistorm/blobdiff - platforms/amiga/piscsi/piscsi.h
PiSCSI hunk reloc change
[pistorm] / platforms / amiga / piscsi / piscsi.h
index d3271255b8dc80fb74078ac8cc92f673f866b7d3..a9fd3535f843cdeae40900be6bf31ae340e2f02d 100644 (file)
@@ -1,3 +1,9 @@
+// SPDX-License-Identifier: MIT
+
+#include <stdint.h>
+
+#include "platforms/amiga/hunk-reloc.h"
+
 #define        TDF_EXTCOM (1<<15)
 
 #define CMD_INVALID    0
@@ -66,7 +72,7 @@ struct piscsi_dev {
     uint32_t lba;
     uint32_t num_partitions;
     uint32_t fshd_offs;
-    // Will parse max eight partitions per disk
+    uint32_t block_size;
     struct PartitionBlock *pb[16];
     struct RigidDiskBlock *rdb;
 };
@@ -75,7 +81,7 @@ struct piscsi_fs {
    struct FileSysHeaderBlock * fhb;
    uint32_t FS_ID;
    uint32_t handler;
-   struct hunk_reloc relocs[512];
+   struct hunk_reloc relocs[4096];
    struct hunk_info h_info;
    uint8_t *binary_data;
 };
@@ -215,6 +221,15 @@ struct SCSICmd_ModeSense6 {
     uint8_t control;
 };
 
+struct SCSICmd_RW10 {
+    uint8_t opcode;
+    uint8_t rdprotect_flags;
+    uint32_t block;
+    uint8_t res_groupnum;
+    uint16_t len;
+    uint8_t control;
+};
+
 struct FileSysHeaderBlock {
     uint32_t   fhb_ID;
     uint32_t   fhb_SummedLongs;
@@ -240,7 +255,10 @@ struct FileSysHeaderBlock {
 };
 
 void piscsi_init();
+void piscsi_shutdown();
 void piscsi_map_drive(char *filename, uint8_t index);
+void piscsi_unmap_drive(uint8_t index);
+struct piscsi_dev *piscsi_get_dev(uint8_t index);
 
 void handle_piscsi_write(uint32_t addr, uint32_t val, uint8_t type);
 uint32_t handle_piscsi_read(uint32_t addr, uint8_t type);