diff --git a/extra/dragon/disk1.dr b/extra/dragon/disk1.dr index 38f951e..aa35766 100644 Binary files a/extra/dragon/disk1.dr and b/extra/dragon/disk1.dr differ diff --git a/extra/dss/bios/data.dss b/extra/dss/bios/data.dss index e7873f6..1efdada 100644 --- a/extra/dss/bios/data.dss +++ b/extra/dss/bios/data.dss @@ -82,6 +82,37 @@ @define INST_BIOS_NODE_TOGGLE 0x02 ## =============================================================================================== + + +## ========================================== Other Data ========================================= +@export_comment /BIOS_API "Structure of a DPT (Dragon Partition Table)." +@group /BIOS_API DPTStructure + DISK_ADDR 0x0200 + ENTRIES_START 0x000C + + ENTRY_START_ADDR 0x0000 + ENTRY_PART_SIZE 0x0004 + ENTRY_FLAGS 0x0008 + ENTRY_PART_LBL 0x0024 + + ID_CODE 0xF1CA + ENTRY_SIZE_B 100 +@end +@export_comment /BIOS_API "\n" + + +@export_start /BIOS_API +@struct DPTBlock + ID:2 + VersionMaj:1 + VersionMin:1 + PartCount:1 + Reserved:7 + Entries:500 +@end +@export_end +## =============================================================================================== + .data $_bios_version_number_maj 0x00, 0x00 $_bios_version_number_min 0x00, 0x04 diff --git a/extra/dss/bios_api.dss b/extra/dss/bios_api.dss index 3abbff7..b9b303f 100644 --- a/extra/dss/bios_api.dss +++ b/extra/dss/bios_api.dss @@ -46,3 +46,14 @@ @define Sig_VGA_Text_Single_Color.CLEAR_SCREEN 0xE1 ## -- +## -- Structure of a DPT (Dragon Partition Table). +@define DPTStructure.DISK_ADDR 0x0200 +@define DPTStructure.ENTRIES_START 0x000C +@define DPTStructure.ENTRY_START_ADDR 0x0000 +@define DPTStructure.ENTRY_PART_SIZE 0x0004 +@define DPTStructure.ENTRY_FLAGS 0x0008 +@define DPTStructure.ENTRY_PART_LBL 0x0024 +@define DPTStructure.ID_CODE 0xF1CA +@define DPTStructure.ENTRY_SIZE_B 100 +## -- + diff --git a/extra/dss/drake/bootsector.dss b/extra/dss/drake/bootsector.dss index 13fbfb0..dec16e9 100644 --- a/extra/dss/drake/bootsector.dss +++ b/extra/dss/drake/bootsector.dss @@ -8,8 +8,6 @@ $dpt_block .code - mov R10, 0xE0 - int 0x30 mov R10, 0x0C mov R9, $string int 0x30 @@ -33,7 +31,7 @@ _load_dpt_block: mov [$ddd.MemoryAddress], $dpt_block.ID and FL, 0b1111111111111110 ## Disable interrupts mov FL, ACC - push $ddd.Mode + push $ddd push 1 call $_disk_load_from_ddd_blocking or FL, 0b0000000000000001 ## Enable interrupts diff --git a/extra/dss/drake/dpt.dss b/extra/dss/drake/dpt.dss index e19a87c..53b4ba6 100644 --- a/extra/dss/drake/dpt.dss +++ b/extra/dss/drake/dpt.dss @@ -1,18 +1,5 @@ @guard _DPT_DSS_ -@group DPTStructure - DISK_ADDR 0x0200 - ENTRIES_START 0x000C - - ENTRY_START_ADDR 0x0000 - ENTRY_PART_SIZE 0x0004 - ENTRY_FLAGS 0x0008 - ENTRY_PART_LBL 0x0024 - - ID_CODE 0xF1CA - ENTRY_SIZE_B 100 -@end - @struct DPTBlock ID:2 VersionMaj:1 diff --git a/extra/dss/drake/loader.dss b/extra/dss/drake/loader.dss index 236a2f1..e336ea4 100644 --- a/extra/dss/drake/loader.dss +++ b/extra/dss/drake/loader.dss @@ -27,7 +27,7 @@ and FL, 0b1111111111111110 ## Disable interrupts mov FL, ACC - push $ddd.Mode + push $ddd push 1 call $_disk_load_from_ddd_blocking or FL, 0b0000000000000001 ## Enable interrupts diff --git a/extra/info/info b/extra/info/info index 93a4db7..887d1a2 100644 --- a/extra/info/info +++ b/extra/info/info @@ -177,6 +177,9 @@ Registers (case-insensitive) (?