mirror of
https://github.com/danbulant/Cosmos
synced 2026-06-10 02:02:30 +00:00
This commit is contained in:
parent
ba605bced9
commit
fab48a3121
4 changed files with 91 additions and 34 deletions
|
|
@ -92,7 +92,7 @@ Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "Docs", "..\Docs", "{67E7DEF
|
||||||
Release.AspNetCompiler.ForceOverwrite = "true"
|
Release.AspNetCompiler.ForceOverwrite = "true"
|
||||||
Release.AspNetCompiler.FixedNames = "false"
|
Release.AspNetCompiler.FixedNames = "false"
|
||||||
Release.AspNetCompiler.Debug = "False"
|
Release.AspNetCompiler.Debug = "False"
|
||||||
VWDPort = "1091"
|
VWDPort = "52631"
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cosmos.Debug.Consts", "..\source2\IL2CPU\Cosmos.IL2CPU.Debug\Cosmos.Debug.Consts.csproj", "{9998B4EA-385E-4DA2-8905-2BBEB5B2C6E2}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cosmos.Debug.Consts", "..\source2\IL2CPU\Cosmos.IL2CPU.Debug\Cosmos.Debug.Consts.csproj", "{9998B4EA-385E-4DA2-8905-2BBEB5B2C6E2}"
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
|
|
||||||
|
|
||||||
DebugStub_ProcessCommand2:
|
DebugStub_ProcessCommandNew:
|
||||||
Call DebugStub_ComReadAL
|
Call DebugStub_ComReadAL
|
||||||
Push EAX
|
Push EAX
|
||||||
|
|
||||||
Cmp AL, DebugStub_Const_Vs2Ds_Noop
|
Cmp AL, DebugStub_Const_Vs2Ds_Noop
|
||||||
JE DebugStub_ProcessCommand2_Exit
|
JE DebugStub_ProcessCommandNew_Exit
|
||||||
|
|
||||||
Mov EAX, 0
|
Mov EAX, 0
|
||||||
Call DebugStub_ComReadAL
|
Call DebugStub_ComReadAL
|
||||||
|
|
@ -14,19 +14,60 @@ Mov [DebugStub_CommandID], EAX
|
||||||
Mov EAX, [ESP + 0]
|
Mov EAX, [ESP + 0]
|
||||||
|
|
||||||
Cmp EAX, DebugStub_Const_Vs2Ds_TraceOff
|
Cmp EAX, DebugStub_Const_Vs2Ds_TraceOff
|
||||||
JNE DebugStub_ProcessCommand2_Block1End
|
JNE DebugStub_ProcessCommandNew_Block1End
|
||||||
Call DebugStub_TraceOff
|
Call DebugStub_TraceOff
|
||||||
Jmp DebugStub_ProcessCommand2_Exit
|
Jmp DebugStub_ProcessCommandNew_Exit
|
||||||
DebugStub_ProcessCommand2_Block1End:
|
DebugStub_ProcessCommandNew_Block1End:
|
||||||
|
Cmp EAX, DebugStub_Const_Vs2Ds_TraceOn
|
||||||
|
JNE DebugStub_ProcessCommandNew_Block2End
|
||||||
|
Call DebugStub_TraceOn
|
||||||
|
Jmp DebugStub_ProcessCommandNew_Exit
|
||||||
|
DebugStub_ProcessCommandNew_Block2End:
|
||||||
|
Cmp EAX, DebugStub_Const_Vs2Ds_Break
|
||||||
|
JNE DebugStub_ProcessCommandNew_Block3End
|
||||||
|
Call DebugStub_Break
|
||||||
|
Jmp DebugStub_ProcessCommandNew_Exit
|
||||||
|
DebugStub_ProcessCommandNew_Block3End:
|
||||||
|
Cmp EAX, DebugStub_Const_Vs2Ds_BreakOnAddress
|
||||||
|
JNE DebugStub_ProcessCommandNew_Block4End
|
||||||
|
Call DebugStub_BreakOnAddress
|
||||||
|
Jmp DebugStub_ProcessCommandNew_Exit
|
||||||
|
DebugStub_ProcessCommandNew_Block4End:
|
||||||
|
Cmp EAX, DebugStub_Const_Vs2Ds_SendMethodContext
|
||||||
|
JNE DebugStub_ProcessCommandNew_Block5End
|
||||||
|
Call DebugStub_SendMethodContext
|
||||||
|
Jmp DebugStub_ProcessCommandNew_Exit
|
||||||
|
DebugStub_ProcessCommandNew_Block5End:
|
||||||
|
Cmp EAX, DebugStub_Const_Vs2Ds_SendMemory
|
||||||
|
JNE DebugStub_ProcessCommandNew_Block6End
|
||||||
|
Call DebugStub_SendMemory
|
||||||
|
Jmp DebugStub_ProcessCommandNew_Exit
|
||||||
|
DebugStub_ProcessCommandNew_Block6End:
|
||||||
|
Cmp EAX, DebugStub_Const_Vs2Ds_SendRegisters
|
||||||
|
JNE DebugStub_ProcessCommandNew_Block7End
|
||||||
|
Call DebugStub_SendRegisters
|
||||||
|
Jmp DebugStub_ProcessCommandNew_Exit
|
||||||
|
DebugStub_ProcessCommandNew_Block7End:
|
||||||
|
Cmp EAX, DebugStub_Const_Vs2Ds_SendFrame
|
||||||
|
JNE DebugStub_ProcessCommandNew_Block8End
|
||||||
|
Call DebugStub_SendFrame
|
||||||
|
Jmp DebugStub_ProcessCommandNew_Exit
|
||||||
|
DebugStub_ProcessCommandNew_Block8End:
|
||||||
|
Cmp EAX, DebugStub_Const_Vs2Ds_SendStack
|
||||||
|
JNE DebugStub_ProcessCommandNew_Block9End
|
||||||
|
Call DebugStub_SendStack
|
||||||
|
Jmp DebugStub_ProcessCommandNew_Exit
|
||||||
|
DebugStub_ProcessCommandNew_Block9End:
|
||||||
|
Cmp EAX, DebugStub_Const_Vs2Ds_Ping
|
||||||
|
JNE DebugStub_ProcessCommandNew_Block10End
|
||||||
|
Call DebugStub_Ping
|
||||||
|
Jmp DebugStub_ProcessCommandNew_Exit
|
||||||
|
DebugStub_ProcessCommandNew_Block10End:
|
||||||
|
|
||||||
DebugStub_ProcessCommand2_Exit:
|
DebugStub_ProcessCommandNew_Exit:
|
||||||
Pop EAX
|
Pop EAX
|
||||||
Ret
|
Ret
|
||||||
|
|
||||||
DebugStub_CheckCmd2:
|
|
||||||
DebugStub_CheckCmd2_Exit:
|
|
||||||
Ret
|
|
||||||
|
|
||||||
DebugStub_AckCommand:
|
DebugStub_AckCommand:
|
||||||
|
|
||||||
Mov AL, DebugStub_Const_Ds2Vs_CmdCompleted
|
Mov AL, DebugStub_Const_Ds2Vs_CmdCompleted
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
// Modifies: AL, DX (ComReadAL)
|
// Modifies: AL, DX (ComReadAL)
|
||||||
// Returns: AL
|
// Returns: AL
|
||||||
function ProcessCommand2 {
|
function ProcessCommandNew {
|
||||||
ComReadAL()
|
ComReadAL()
|
||||||
// Some callers expect AL to be returned, so we preserve it
|
// Some callers expect AL to be returned, so we preserve it
|
||||||
// in case any commands modify AL.
|
// in case any commands modify AL.
|
||||||
|
|
@ -25,16 +25,42 @@ function ProcessCommand2 {
|
||||||
TraceOff()
|
TraceOff()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
//CheckCmd("TraceOff", Vs2Ds.TraceOff)
|
if EAX = #Vs2Ds_TraceOn {
|
||||||
//CheckCmd("TraceOn", Vs2Ds.TraceOn)
|
TraceOn()
|
||||||
//CheckCmd("Break", Vs2Ds.Break)
|
return
|
||||||
//CheckCmd("BreakOnAddress", Vs2Ds.BreakOnAddress)
|
}
|
||||||
//CheckCmd("SendMethodContext", Vs2Ds.SendMethodContext)
|
if EAX = #Vs2Ds_Break {
|
||||||
//CheckCmd("SendMemory", Vs2Ds.SendMemory)
|
Break()
|
||||||
//CheckCmd("SendRegisters", Vs2Ds.SendRegisters)
|
return
|
||||||
//CheckCmd("SendFrame", Vs2Ds.SendFrame)
|
}
|
||||||
//CheckCmd("SendStack", Vs2Ds.SendStack)
|
if EAX = #Vs2Ds_BreakOnAddress {
|
||||||
//CheckCmd("Ping", Vs2Ds.Ping)
|
BreakOnAddress()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if EAX = #Vs2Ds_SendMethodContext {
|
||||||
|
SendMethodContext()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if EAX = #Vs2Ds_SendMemory {
|
||||||
|
SendMemory()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if EAX = #Vs2Ds_SendRegisters {
|
||||||
|
SendRegisters()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if EAX = #Vs2Ds_SendFrame {
|
||||||
|
SendFrame()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if EAX = #Vs2Ds_SendStack {
|
||||||
|
SendStack()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if EAX = #Vs2Ds_Ping {
|
||||||
|
Ping()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
Exit:
|
Exit:
|
||||||
// Restore AL for callers who check the command and do
|
// Restore AL for callers who check the command and do
|
||||||
|
|
@ -42,16 +68,6 @@ Exit:
|
||||||
-EAX
|
-EAX
|
||||||
}
|
}
|
||||||
|
|
||||||
function CheckCmd2 {
|
|
||||||
// AL.Compare(aCmd)
|
|
||||||
// string xAfterLabel = NewLabel()
|
|
||||||
// JumpIf(Flags.NotEqual, xAfterLabel)
|
|
||||||
// Call("DebugStub_" + aLabel)
|
|
||||||
// Call("DebugStub_AckCommand")
|
|
||||||
// Jump(".End")
|
|
||||||
// Label = xAfterLabel
|
|
||||||
}
|
|
||||||
|
|
||||||
function AckCommand {
|
function AckCommand {
|
||||||
// We acknowledge receipt of the command AND the processing of it.
|
// We acknowledge receipt of the command AND the processing of it.
|
||||||
// -In the past the ACK only acknowledged receipt.
|
// -In the past the ACK only acknowledged receipt.
|
||||||
|
|
|
||||||
|
|
@ -167,7 +167,7 @@ namespace Cosmos.Debug.DebugStub {
|
||||||
// If a command is waiting, process it and then check for another.
|
// If a command is waiting, process it and then check for another.
|
||||||
// If no command waiting, break from loop.
|
// If no command waiting, break from loop.
|
||||||
JumpIf(Flags.Zero, ".CheckForCmd_Break");
|
JumpIf(Flags.Zero, ".CheckForCmd_Break");
|
||||||
Call<ProcessCommand>();
|
Call("DebugStub_ProcessCommand");
|
||||||
// See if there are more commands waiting
|
// See if there are more commands waiting
|
||||||
Jump(".CheckForCmd");
|
Jump(".CheckForCmd");
|
||||||
|
|
||||||
|
|
@ -191,7 +191,7 @@ namespace Cosmos.Debug.DebugStub {
|
||||||
Label = ".WaitCmd";
|
Label = ".WaitCmd";
|
||||||
{
|
{
|
||||||
// Check for common commands first
|
// Check for common commands first
|
||||||
Call<ProcessCommand>();
|
Call("DebugStub_ProcessCommand");
|
||||||
|
|
||||||
// Now check for commands that are only valid in break state or commands that require special handling while in break state.
|
// Now check for commands that are only valid in break state or commands that require special handling while in break state.
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue