From 626b1b28e7ee75fa8605b6865ebc46c10b126ed9 Mon Sep 17 00:00:00 2001 From: OmniaX-dev Date: Tue, 30 Apr 2024 16:50:55 +0200 Subject: [PATCH] Sync push --- .../dpt_4_partitions_on_4_mb_disk.bin} | Bin ....txt => dpt_4_partitions_on_4_mb_disk.txt} | 0 extra/{ => dragon info}/font_big.bmp | Bin extra/dragon/disk1.dr | Bin 4194304 -> 4194304 bytes extra/dss/drake/bootsector.dss | 15 +++++++++++++++ extra/dss/drake/{entry.dss => loader.dss} | 9 +++++++++ extra/make_and_debug | 2 +- extra/make_and_run | 2 +- extra/scripts/load_mbr | 6 +++--- 9 files changed, 29 insertions(+), 5 deletions(-) rename extra/{dpt_2_partitions_on_4_mb_disk.bin => dragon info/dpt_4_partitions_on_4_mb_disk.bin} (100%) rename extra/dragon info/{dpt_2_partitions_on_4_mb_disk.txt => dpt_4_partitions_on_4_mb_disk.txt} (100%) rename extra/{ => dragon info}/font_big.bmp (100%) mode change 100755 => 100644 create mode 100644 extra/dss/drake/bootsector.dss rename extra/dss/drake/{entry.dss => loader.dss} (91%) diff --git a/extra/dpt_2_partitions_on_4_mb_disk.bin b/extra/dragon info/dpt_4_partitions_on_4_mb_disk.bin similarity index 100% rename from extra/dpt_2_partitions_on_4_mb_disk.bin rename to extra/dragon info/dpt_4_partitions_on_4_mb_disk.bin diff --git a/extra/dragon info/dpt_2_partitions_on_4_mb_disk.txt b/extra/dragon info/dpt_4_partitions_on_4_mb_disk.txt similarity index 100% rename from extra/dragon info/dpt_2_partitions_on_4_mb_disk.txt rename to extra/dragon info/dpt_4_partitions_on_4_mb_disk.txt diff --git a/extra/font_big.bmp b/extra/dragon info/font_big.bmp old mode 100755 new mode 100644 similarity index 100% rename from extra/font_big.bmp rename to extra/dragon info/font_big.bmp diff --git a/extra/dragon/disk1.dr b/extra/dragon/disk1.dr index 8f2b38c7daf2eae949eeeadcd84979796e9fdaba..d76708f99eb7aff0c1d007910169b2772503840e 100644 GIT binary patch delta 209 zcmWN>$5BF206@`smyCiRP(+fL2ueoDXls91+y?A{wVm04Ba3t5I3_;(i9!h9QTRO~ zLCz;6DJe-yMzWHVyj;ko6r?Cu5=lwQQju%9k*eHEP41*F4QWbC+Hx-)d5}kWl4p65 quJoiY19_D<8Olh;GLfmwWG)MNmk(LWO4hQGt?Xnk2l+hl_4f}%LoihU delta 272 zcmWl|TT+2x007YWP$aoUbkF^slIS9~_RsXt0@_G#mSqS2jx%$jC`v^B6~k{S?7rjh z6NkfuNmCwqY}$+`W<53MnRyEqEm`*5id8SHS@+T_uf6fsJMVq4VbhjvJ9h2aci_;G fV<$d3^~q;vzBu>Qg-hRj_rp(De!1SpVH5WMRgrKd diff --git a/extra/dss/drake/bootsector.dss b/extra/dss/drake/bootsector.dss new file mode 100644 index 0000000..a36494e --- /dev/null +++ b/extra/dss/drake/bootsector.dss @@ -0,0 +1,15 @@ +.load 0x0000 + +@define S_REG_3 0x09 + +.data + +.code + mov R10, 0xE0 + int 0x30 + mov R10, 0x0C + mov R9, $string + int 0x30 + +.dynamic_data + $string "Hello BOOTSECTOR!!" diff --git a/extra/dss/drake/entry.dss b/extra/dss/drake/loader.dss similarity index 91% rename from extra/dss/drake/entry.dss rename to extra/dss/drake/loader.dss index e04346e..dcf32f6 100644 --- a/extra/dss/drake/entry.dss +++ b/extra/dss/drake/loader.dss @@ -21,7 +21,15 @@ call $_load_boot_sector or FL, 0b0000000000000001 ## Enable interrupts mov FL, ACC + + mov reg(S_REG_3), MemoryAddresses.RAM + inc reg(S_REG_3) + mov R1, *reg(S_REG_3) + addip R1, reg(S_REG_3) + mov *reg(S_REG_3), R1 + dec reg(S_REG_3) jmp MemoryAddresses.RAM + _infinite_loop: jmp $_infinite_loop hlt @@ -53,6 +61,7 @@ _load_boot_sector: mov [{MemoryAddresses.DISK_INTERFACE + 0x9}], MemoryAddresses.RAM ## MemoryAddress movb [MemoryAddresses.DISK_INTERFACE], 0x00 ## Signal = Start _load_boot_sector_block_wait_loop: + debug_break mov ACC, [{MemoryAddresses.DISK_INTERFACE + 0xB}] ## Moving register into ACC jne $_load_boot_sector_block_wait_loop, 0x00 ## If register not Free, loop around and wait ret diff --git a/extra/make_and_debug b/extra/make_and_debug index d8cc29f..173f08d 100755 --- a/extra/make_and_debug +++ b/extra/make_and_debug @@ -14,6 +14,7 @@ printf "${green}\n============================================================== if [ $? -eq 0 ]; then cd scripts /bin/bash ./bios_flash + cp dss/bios_api.dss ../extra/dss/bios_api.dss /bin/bash ./load_mbr cd .. printf "${green}Compiling Test Program...\n" @@ -24,5 +25,4 @@ if [ $? -eq 0 ]; then ./ddb config/testMachine.dvm --verbose-load cp dragon/disk1.dr ../extra/dragon/disk1.dr cp dragon/cmos.dr ../extra/dragon/cmos.dr - cp dss/bios_api.dss ../extra/dss/bios_api.dss fi diff --git a/extra/make_and_run b/extra/make_and_run index bf0da44..1fc5120 100755 --- a/extra/make_and_run +++ b/extra/make_and_run @@ -14,6 +14,7 @@ printf "${green}\n============================================================== if [ $? -eq 0 ]; then cd scripts /bin/bash ./bios_flash + cp dss/bios_api.dss ../extra/dss/bios_api.dss /bin/bash ./load_mbr cd .. printf "${green}Compiling Test Program...\n" @@ -24,5 +25,4 @@ if [ $? -eq 0 ]; then # ./dvm config/testMachine.dvm --force-load activeTest.bin 0x00 cp dragon/disk1.dr ../extra/dragon/disk1.dr cp dragon/cmos.dr ../extra/dragon/cmos.dr - cp dss/bios_api.dss ../extra/dss/bios_api.dss fi diff --git a/extra/scripts/load_mbr b/extra/scripts/load_mbr index b33cd73..d6e376c 100644 --- a/extra/scripts/load_mbr +++ b/extra/scripts/load_mbr @@ -6,8 +6,8 @@ clear='\033[0m' printf "\n${green}Reloading MBR Block...\n${clear}" cd .. cp ../extra/dss/drake/* ./dss/drake/ -./dasm dss/drake/entry.dss -o dragon/drake.bin --extalu --save-disassembly disassembly/drake.dds --verbose -./dtools load-binary dragon/disk1.dr dragon/drake.bin 0x00000000 +./dasm dss/drake/loader.dss -o dragon/drake_loader.bin --extalu --save-disassembly disassembly/drake_loader.dds --verbose +./dtools load-binary dragon/disk1.dr dragon/drake_loader.bin 0x00000000 printf "\n" cp dragon/disk1.dr ../extra/dragon/disk1.dr -rm dragon/drake.bin +rm dragon/drake_loader.bin