From a9ba9c8013e27875b600fd84328a419915475ddc Mon Sep 17 00:00:00 2001 From: OmniaX Date: Sun, 18 Aug 2024 05:50:13 +0200 Subject: [PATCH] Added some export functionality to dasm --- extra/dragon/disk1.dr | Bin 4194304 -> 4194304 bytes extra/dss/bios/data.dss | 31 +++++++++++++++++++++++++++++++ extra/dss/bios_api.dss | 11 +++++++++++ extra/dss/drake/bootsector.dss | 4 +--- extra/dss/drake/dpt.dss | 13 ------------- extra/dss/drake/loader.dss | 2 +- extra/info/info | 3 +++ extra/info/todo.txt | 6 +++--- src/assembler/Assembler.cpp | 26 +++++++++++++++++++++++++- 9 files changed, 75 insertions(+), 21 deletions(-) diff --git a/extra/dragon/disk1.dr b/extra/dragon/disk1.dr index 38f951e2ca179d0f9ba5ee311803a7a4829e6d47..aa357662d7a6bb9a9d272575c2826724397c1da7 100644 GIT binary patch delta 245 zcmWN}xlsaP0D#e5#NPu%77xDlzyt3C@m53$EI?-*i!d}WGuScs8rU98Omu9(LMXs0 z90^|fvMeiP1E0;1l&iJ+?O*#oiXPIJ_%(gbJE0YS_^e#_gA<}@}E$8Lt-h& zkQ8NDf{e(hjLEo^q%0Fskx8jaA~l(kX_=8(smtI=WlrX0K^CPUOR_90vMNnklXcmU qP1%xd*^yn@lYME)fwbjNj^tQQ?4?_e$ELdwe02~x6n z+n48gDIfT3Mag$RiyJ{Tt|xc>>>&sq)7S7VeJMIoJM0zDQMddP1W#YR=)P9`l`8K@ zC?y$^vQ#9JVHuH88Iy6T%7jeHl*Ce#x-?{3W@J_p89b@X$-FGcqAW>MmSsg&r6p^! tE*r8bTe2-XvMYPCFKs!HOb+Epj-?|faw=zXE*EksS8^>ka{EE|_aANWLHhsz 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) (?