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 8f2b38c..d76708f 100644 Binary files a/extra/dragon/disk1.dr and b/extra/dragon/disk1.dr differ 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