From b18c12b4513c1b9edba60b6c92b13de2ecc5085b Mon Sep 17 00:00:00 2001 From: Sylar Date: Thu, 23 Oct 2025 14:19:20 +0200 Subject: [PATCH] Sync push --- .vscode/c_cpp_properties.json | 3 +-- extra/dragon/disk1.dr | Bin 4194304 -> 4194304 bytes extra/dss/DragonOS/kernel0/kernel0.dss | 2 +- extra/dss/sdk/bios_api.dss | 1 + extra/scripts/build_dragonos | 2 +- src/debugger/Debugger.cpp | 5 +++++ src/hardware/VirtualCPU.cpp | 1 + 7 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json index 0cf1531..9b1a582 100644 --- a/.vscode/c_cpp_properties.json +++ b/.vscode/c_cpp_properties.json @@ -3,8 +3,7 @@ { "name": "Linux", "includePath": [ - "${default}", - "${workspaceRoot}/../omnia-framework/src" + "${default}" ], "defines": [], "compilerPath": "/usr/bin/clang++", diff --git a/extra/dragon/disk1.dr b/extra/dragon/disk1.dr index 433ada39d85a8cff6c7c92032caedc2676e377a8..31f9c44c0d847b459d49fb8886f0ea9f5b21b189 100644 GIT binary patch delta 430 zcmZo@Xkcmp;Vq0x4UEU8D>pD6st*ldUAWBgTxqub&i6`lmMM? zU>TVjolpOTxrCYo*cf<=b@jP`bYi)#Er_lv1=4|B!rVI2f!sjV0SwFm3@pJqtq$Bm uI?~)Vy0&0r1%w$?{}}*zq5r{PvpVNqrcDw8FBS_(jACdQY!;9>e;WYHwVn?E delta 406 zcmZo@Xkcmp;Vq0x4UDIzD>pD63KZb~wJJ1#fgyl_F<56!fDQ+kk;*8dBMlN{2-Z0Y zCQ|}*euJfCYIMH;7v>Ub5@2KCE!H*R0@8`)x=tXvs#Mo$x?v-utbh|(zko1<>OX@T dU8m5^ik$nHHc1G)SS%nhilJe!SwQ0aZ2&2EmdXGC diff --git a/extra/dss/DragonOS/kernel0/kernel0.dss b/extra/dss/DragonOS/kernel0/kernel0.dss index 27e1815..6af20a9 100644 --- a/extra/dss/DragonOS/kernel0/kernel0.dss +++ b/extra/dss/DragonOS/kernel0/kernel0.dss @@ -28,7 +28,7 @@ _kernel0_main: push $test_str push 1 call $_print_string - debug_break + ## debug_break mov [$cursor_x], 0 diff --git a/extra/dss/sdk/bios_api.dss b/extra/dss/sdk/bios_api.dss index 22650a1..a164a9a 100644 --- a/extra/dss/sdk/bios_api.dss +++ b/extra/dss/sdk/bios_api.dss @@ -24,6 +24,7 @@ SCREEN_WIDTH { MemoryAddresses.CMOS + 0x0007 } SCREEN_HEIGHT { MemoryAddresses.CMOS + 0x0009 } BOOT_DISK { MemoryAddresses.CMOS + 0x0010 } + STACK_SIZE { MemoryAddresses.CMOS + 0x0011 } DISK_LIST { MemoryAddresses.CMOS + 0x007E } @end ## -- diff --git a/extra/scripts/build_dragonos b/extra/scripts/build_dragonos index 5154402..1117346 100644 --- a/extra/scripts/build_dragonos +++ b/extra/scripts/build_dragonos @@ -15,4 +15,4 @@ printf "\n" cp dragon/disk1.dr ../extra/dragon/disk1.dr -rm dragon/kernel0.bin +# rm dragon/kernel0.bin diff --git a/src/debugger/Debugger.cpp b/src/debugger/Debugger.cpp index 396d0bd..d8d6380 100644 --- a/src/debugger/Debugger.cpp +++ b/src/debugger/Debugger.cpp @@ -1605,6 +1605,11 @@ namespace dragon int32_t Debugger::normal_runtime(bool& outUserQuit) { bool result = DragonRuntime::runStep(data().trackedAddresses); + if (Utils::isBreakPoint((uint16_t)DragonRuntime::cpu.readRegister(data::Registers::IP))) + { + data().args.step_exec = true; + return step_execution(outUserQuit, false); + } bool hasError = DragonRuntime::hasError(); bool enableStepExec = !result || hasError || Utils::isEscapeKeyPressed() || DragonRuntime::cpu.isInDebugBreakPoint(); data().args.step_exec = enableStepExec; diff --git a/src/hardware/VirtualCPU.cpp b/src/hardware/VirtualCPU.cpp index 28a0d0b..53dabd7 100644 --- a/src/hardware/VirtualCPU.cpp +++ b/src/hardware/VirtualCPU.cpp @@ -827,6 +827,7 @@ namespace dragon int16_t arg_data = m_memory.read16(pp_val); writeRegister16(data::Registers::PP, pp_val - 2); writeRegister16(regAddr, arg_data); + std::cout << ostd::Utils::getHexStr(readRegister(data::Registers::IP), true, 2) << "\n"; } break; case data::OpCodes::RetInt: