aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/block.c31
-rw-r--r--src/block.h10
-rw-r--r--src/cdrom.c17
-rw-r--r--src/disk.c53
-rw-r--r--src/util.h1
5 files changed, 52 insertions, 60 deletions
diff --git a/src/block.c b/src/block.c
index aff263c..7892be5 100644
--- a/src/block.c
+++ b/src/block.c
@@ -7,7 +7,6 @@
#include "biosvar.h" // GET_GLOBAL
#include "block.h" // process_op
-#include "bregs.h" // struct bregs
#include "hw/ata.h" // process_ata_op
#include "hw/ahci.h" // process_ahci_op
#include "hw/blockcmd.h" // cdb_*
@@ -280,36 +279,6 @@ map_floppy_drive(struct drive_s *drive)
/****************************************************************
- * Return status functions
- ****************************************************************/
-
-void
-__disk_ret(struct bregs *regs, u32 linecode, const char *fname)
-{
- u8 code = linecode;
- if (regs->dl < EXTSTART_HD)
- SET_BDA(floppy_last_status, code);
- else
- SET_BDA(disk_last_status, code);
- if (code)
- __set_code_invalid(regs, linecode, fname);
- else
- set_code_success(regs);
-}
-
-void
-__disk_ret_unimplemented(struct bregs *regs, u32 linecode, const char *fname)
-{
- u8 code = linecode;
- if (regs->dl < EXTSTART_HD)
- SET_BDA(floppy_last_status, code);
- else
- SET_BDA(disk_last_status, code);
- __set_code_unimplemented(regs, linecode, fname);
-}
-
-
-/****************************************************************
* Extended Disk Drive (EDD) get drive parameters
****************************************************************/
diff --git a/src/block.h b/src/block.h
index 945e6fe..aa01ed7 100644
--- a/src/block.h
+++ b/src/block.h
@@ -99,20 +99,10 @@ int getDriveId(u8 exttype, struct drive_s *drive);
void map_floppy_drive(struct drive_s *drive);
void map_hd_drive(struct drive_s *drive);
void map_cd_drive(struct drive_s *drive);
-struct bregs;
-void __disk_ret(struct bregs *regs, u32 linecode, const char *fname);
-void __disk_ret_unimplemented(struct bregs *regs, u32 linecode
- , const char *fname);
struct int13dpt_s;
int fill_edd(u16 seg, struct int13dpt_s *param_far, struct drive_s *drive_gf);
int process_op(struct disk_op_s *op);
int send_disk_op(struct disk_op_s *op);
int create_bounce_buf(void);
-// Helper function for setting up a return code.
-#define disk_ret(regs, code) \
- __disk_ret((regs), (code) | (__LINE__ << 8), __func__)
-#define disk_ret_unimplemented(regs, code) \
- __disk_ret_unimplemented((regs), (code) | (__LINE__ << 8), __func__)
-
#endif // block.h
diff --git a/src/cdrom.c b/src/cdrom.c
index f0d8a1a..86e3f0c 100644
--- a/src/cdrom.c
+++ b/src/cdrom.c
@@ -132,23 +132,6 @@ cdrom_prepboot(void)
drive->sectors = (u64)-1;
}
-// ElTorito - Terminate disk emu
-void
-cdemu_134b(struct bregs *regs)
-{
- memcpy_far(regs->ds, (void*)(regs->si+0), SEG_LOW, &CDEmu, sizeof(CDEmu));
-
- // If we have to terminate emulation
- if (regs->al == 0x00) {
- // FIXME ElTorito Various. Should be handled accordingly to spec
- SET_LOW(CDEmu.media, 0x00); // bye bye
-
- // XXX - update floppy/hd count.
- }
-
- disk_ret(regs, DISK_RET_SUCCESS);
-}
-
/****************************************************************
* CD booting
diff --git a/src/disk.c b/src/disk.c
index 635d7b9..2aadd8a 100644
--- a/src/disk.c
+++ b/src/disk.c
@@ -18,19 +18,53 @@
/****************************************************************
- * Helper functions
+ * Return status functions
****************************************************************/
static void
+__disk_ret(struct bregs *regs, u32 linecode, const char *fname)
+{
+ u8 code = linecode;
+ if (regs->dl < EXTSTART_HD)
+ SET_BDA(floppy_last_status, code);
+ else
+ SET_BDA(disk_last_status, code);
+ if (code)
+ __set_code_invalid(regs, linecode, fname);
+ else
+ set_code_success(regs);
+}
+
+static void
+__disk_ret_unimplemented(struct bregs *regs, u32 linecode, const char *fname)
+{
+ u8 code = linecode;
+ if (regs->dl < EXTSTART_HD)
+ SET_BDA(floppy_last_status, code);
+ else
+ SET_BDA(disk_last_status, code);
+ __set_code_unimplemented(regs, linecode, fname);
+}
+
+static void
__disk_stub(struct bregs *regs, int lineno, const char *fname)
{
__warn_unimplemented(regs, lineno, fname);
__disk_ret(regs, DISK_RET_SUCCESS | (lineno << 8), fname);
}
+#define disk_ret(regs, code) \
+ __disk_ret((regs), (code) | (__LINE__ << 8), __func__)
+#define disk_ret_unimplemented(regs, code) \
+ __disk_ret_unimplemented((regs), (code) | (__LINE__ << 8), __func__)
#define DISK_STUB(regs) \
__disk_stub((regs), __LINE__, __func__)
+
+/****************************************************************
+ * Helper functions
+ ****************************************************************/
+
// Get the cylinders/heads/sectors for the given drive.
static struct chs_s
getLCHS(struct drive_s *drive_gf)
@@ -608,6 +642,23 @@ floppy_13(struct bregs *regs, struct drive_s *drive_gf)
}
}
+// ElTorito - Terminate disk emu
+static void
+cdemu_134b(struct bregs *regs)
+{
+ memcpy_far(regs->ds, (void*)(regs->si+0), SEG_LOW, &CDEmu, sizeof(CDEmu));
+
+ // If we have to terminate emulation
+ if (regs->al == 0x00) {
+ // FIXME ElTorito Various. Should be handled accordingly to spec
+ SET_LOW(CDEmu.media, 0x00); // bye bye
+
+ // XXX - update floppy/hd count.
+ }
+
+ disk_ret(regs, DISK_RET_SUCCESS);
+}
+
/****************************************************************
* Entry points
diff --git a/src/util.h b/src/util.h
index 74b58f4..493d01d 100644
--- a/src/util.h
+++ b/src/util.h
@@ -49,7 +49,6 @@ extern struct drive_s *cdemu_drive_gf;
struct disk_op_s;
int process_cdemu_op(struct disk_op_s *op);
void cdrom_prepboot(void);
-void cdemu_134b(struct bregs *regs);
int cdrom_boot(struct drive_s *drive_g);
// clock.c