diff --git a/extra/dragon/disk1.dr b/extra/dragon/disk1.dr index 8d132cf..c49dec6 100644 Binary files a/extra/dragon/disk1.dr and b/extra/dragon/disk1.dr differ diff --git a/extra/dss/DragonOS/kernel0/kernel0.dss b/extra/dss/DragonOS/kernel0/kernel0.dss index 4ae66be..281eb66 100644 --- a/extra/dss/DragonOS/kernel0/kernel0.dss +++ b/extra/dss/DragonOS/kernel0/kernel0.dss @@ -3,10 +3,10 @@ .entry _kernel0_main .header KERNEL0_BOOT -@include @include <../drivers/display_driver.dss> @include <../drivers/keyboard_driver.dss> @include +@include ## ========================================================================================================================= @@ -28,7 +28,7 @@ _kernel0_main: push $test_str push 1 call $_print_string - ## debug_break + debug_break _infinite_loop_0: ## jmp $_infinite_loop_0 diff --git a/extra/dss/DragonOS/kernel0/memory.dss b/extra/dss/DragonOS/kernel0/memory.dss index 31899b9..a1177ba 100644 --- a/extra/dss/DragonOS/kernel0/memory.dss +++ b/extra/dss/DragonOS/kernel0/memory.dss @@ -11,6 +11,5 @@ .code _init_memory_handler: + nop ret - -_alloc_memory: \ No newline at end of file diff --git a/extra/reload_env.sh b/extra/reload_env.sh index e6c6e06..dc5167c 100755 --- a/extra/reload_env.sh +++ b/extra/reload_env.sh @@ -18,7 +18,7 @@ printf "\n${green}2) bootsector.dss\n${clear}" printf "\n${green}Compiling DragonOS...\n${clear}" printf "\n${green}1) kernel0.dss\n${clear}" -./dasm dss/DragonOS/kernel0/kernel0.dss -o dragon/kernel0.bin -I dss $1 +./dasm dss/DragonOS/kernel0/kernel0.dss -o dragon/kernel0.bin -I dss --save-final-stage ./kernel0_final_stage.txt $1 ./dtools load-binary dragon/disk1.dr dragon/kernel0.bin 0x00018000 printf "\n" diff --git a/src/assembler/Assembler.cpp b/src/assembler/Assembler.cpp index ec17b92..3372386 100644 --- a/src/assembler/Assembler.cpp +++ b/src/assembler/Assembler.cpp @@ -2,6 +2,7 @@ #include #include #include +#include #include #include #include @@ -51,7 +52,7 @@ namespace dragon replaceLabelRefs(); combineDataAndCode(); createExportFiles(); - if (Application::args.disassembly_file_path.trim() != "") + if (Application::args.final_stage_path.trim() != "") saveCurrentStageToFile(); m_programSize = m_code.size(); if (m_fixedSize > 0 && m_code.size() > m_fixedSize) @@ -774,7 +775,8 @@ namespace dragon void Assembler::saveCurrentStageToFile(void) { - + std::cout << "LINES: " << (int)m_lines.size() << "\n"; + ostd::FileSystem::writeTextFile(Application::args.final_stage_path, m_lines); } diff --git a/src/hardware/VirtualCPU.cpp b/src/hardware/VirtualCPU.cpp index 96fb923..676ecff 100644 --- a/src/hardware/VirtualCPU.cpp +++ b/src/hardware/VirtualCPU.cpp @@ -1,7 +1,6 @@ #include "VirtualCPU.hpp" #include "../tools/GlobalData.hpp" -#include #include #include "../runtime/DragonRuntime.hpp" @@ -804,17 +803,9 @@ namespace dragon break; case data::OpCodes::CallImm: { - bool test = false; - if (readRegister(data::Registers::IP) == 0x2CF1) - test = true; uint16_t subroutineAddr = fetch16(); pushStackFrame(); writeRegister16(data::Registers::IP, subroutineAddr); - if (test) - { - std::cout << ostd::String::getHexStr(subroutineAddr, true, 2) << "\n"; - std::cin.get(); - } m_subroutineCounter++; } break; @@ -836,18 +827,12 @@ namespace dragon break; case data::OpCodes::ArgReg: { - if (isInDebugBreakPoint()) - { - std::cout << ostd::String::getHexStr(readRegister(data::Registers::IP)); - std::cin.get(); - } uint8_t regAddr = fetch8(); if (!isInSubRoutine()) break; int16_t pp_val = readRegister(data::Registers::PP); int16_t arg_data = m_memory.read16(pp_val); writeRegister16(data::Registers::PP, pp_val - 2); writeRegister16(regAddr, arg_data); - // std::cout << ostd::String::getHexStr(readRegister(data::Registers::IP), true, 2) << "\n"; } break; case data::OpCodes::RetInt: