git-svn-id: https://spexeah.com:8443/svn/Asuro@747 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c
This commit is contained in:
parent
8066634367
commit
0c939b8b31
@ -3,20 +3,20 @@ unit asuro;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
const
|
const
|
||||||
VERSION = '1.0.1-745ia';
|
VERSION = '1.0.1-746ia';
|
||||||
VERSION_MAJOR = '1';
|
VERSION_MAJOR = '1';
|
||||||
VERSION_MINOR = '0';
|
VERSION_MINOR = '0';
|
||||||
VERSION_SUB = '1';
|
VERSION_SUB = '1';
|
||||||
REVISION = '745';
|
REVISION = '746';
|
||||||
RELEASE = 'ia';
|
RELEASE = 'ia';
|
||||||
LINE_COUNT = 29372;
|
LINE_COUNT = 29502;
|
||||||
FILE_COUNT = 110;
|
FILE_COUNT = 104;
|
||||||
DRIVER_COUNT = 32;
|
DRIVER_COUNT = 32;
|
||||||
FPC_VERSION = '2.6.4';
|
FPC_VERSION = '2.6.4';
|
||||||
NASM_VERSION = '2.10.09';
|
NASM_VERSION = '2.10.09';
|
||||||
MAKE_VERSION = '3.81';
|
MAKE_VERSION = '3.81';
|
||||||
COMPILE_DATE = '22/05/18';
|
COMPILE_DATE = '29/09/18';
|
||||||
COMPILE_TIME = '04:31:53';
|
COMPILE_TIME = '13:46:48';
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
@ -45,7 +45,8 @@ uses
|
|||||||
themer,
|
themer,
|
||||||
netlog,
|
netlog,
|
||||||
vmlog,
|
vmlog,
|
||||||
vm;
|
vm,
|
||||||
|
vmstate;
|
||||||
|
|
||||||
procedure kmain(mbinfo: Pmultiboot_info_t; mbmagic: uint32); stdcall;
|
procedure kmain(mbinfo: Pmultiboot_info_t; mbmagic: uint32); stdcall;
|
||||||
|
|
||||||
@ -217,6 +218,8 @@ begin
|
|||||||
netlog.init();
|
netlog.init();
|
||||||
tracer.push_trace('kmain.VMLOGINIT');
|
tracer.push_trace('kmain.VMLOGINIT');
|
||||||
vmlog.init();
|
vmlog.init();
|
||||||
|
tracer.push_trace('kmain.VMSTATEINIT');
|
||||||
|
vmstate.init();
|
||||||
|
|
||||||
terminal.run();
|
terminal.run();
|
||||||
|
|
||||||
|
119
src/prog/vmstate.pas
Normal file
119
src/prog/vmstate.pas
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
unit vmstate;
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
console, terminal, keyboard, util, strings, tracer,
|
||||||
|
vm_scheduler, vm_instance;
|
||||||
|
|
||||||
|
procedure init();
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
var
|
||||||
|
Handle : HWND = 0;
|
||||||
|
|
||||||
|
procedure OnClose();
|
||||||
|
begin
|
||||||
|
Handle:= 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure OnDraw();
|
||||||
|
begin
|
||||||
|
if Handle <> 0 then begin
|
||||||
|
clearWND(Handle);
|
||||||
|
if vm_instance.Task.Valid then begin
|
||||||
|
console.writeStringlnWND(' ', Handle);
|
||||||
|
|
||||||
|
console.writeStringWND(' Task: ', Handle);
|
||||||
|
console.writeIntWND (vm_instance.Task.State^.TASK_ID, Handle);
|
||||||
|
console.writeStringWND(' | SCHED: ', Handle);
|
||||||
|
console.writeintlnWND (vm_scheduler.getActiveTask, Handle);
|
||||||
|
|
||||||
|
console.writeStringlnWND(' ', Handle);
|
||||||
|
|
||||||
|
console.writeStringWND(' OBJ1: ', Handle);
|
||||||
|
console.writeintWND (vm_instance.Task.State^.Registers[OBJ1], Handle);
|
||||||
|
console.writeStringWND(' | OBJ2: ', Handle);
|
||||||
|
console.writeintlnWND (vm_instance.Task.State^.Registers[OBJ2], Handle);
|
||||||
|
|
||||||
|
console.writeStringWND(' C1: ', Handle);
|
||||||
|
console.writeintWND (vm_instance.Task.State^.Registers[C1], Handle);
|
||||||
|
console.writeStringWND(' | C2: ', Handle);
|
||||||
|
console.writeintlnWND (vm_instance.Task.State^.Registers[C2], Handle);
|
||||||
|
|
||||||
|
console.writeStringWND(' RET: ', Handle);
|
||||||
|
console.writeintlnWND (vm_instance.Task.State^.Registers[RET], Handle);
|
||||||
|
|
||||||
|
console.writeStringWND(' INSTANCEID: ', Handle);
|
||||||
|
console.writeintlnWND (vm_instance.Task.State^.Registers[INSTANCEID], Handle);
|
||||||
|
|
||||||
|
console.writeStringWND(' PC: ', Handle);
|
||||||
|
console.writeintlnWND (vm_instance.Task.State^.Registers[PC], Handle);
|
||||||
|
|
||||||
|
console.writeStringWND(' STORE1: ', Handle);
|
||||||
|
console.writeintWND (vm_instance.Task.State^.Registers[STORE1], Handle);
|
||||||
|
console.writeStringWND(' | STORE2: ', Handle);
|
||||||
|
console.writeintlnWND (vm_instance.Task.State^.Registers[STORE2], Handle);
|
||||||
|
|
||||||
|
console.writeStringWND(' STORE3: ', Handle);
|
||||||
|
console.writeintWND (vm_instance.Task.State^.Registers[STORE3], Handle);
|
||||||
|
console.writeStringWND(' | STORE4: ', Handle);
|
||||||
|
console.writeintlnWND (vm_instance.Task.State^.Registers[STORE4], Handle);
|
||||||
|
|
||||||
|
console.writeStringWND(' STORE5: ', Handle);
|
||||||
|
console.writeintlnWND (vm_instance.Task.State^.Registers[STORE1], Handle);
|
||||||
|
{WriteLn('Task: ', Task.State^.TASK_ID);
|
||||||
|
WriteLn('OBJ1: ', Task.State^.Registers[OBJ1]);
|
||||||
|
WriteLn('OBJ2: ', Task.State^.Registers[OBJ2]);
|
||||||
|
WriteLn('C1: ', Task.State^.Registers[C1]);
|
||||||
|
WriteLn('C2: ', Task.State^.Registers[C2]);
|
||||||
|
WriteLn('RET: ', Task.State^.Registers[RET]);
|
||||||
|
WriteLn('INSTANCEID: ', Task.State^.Registers[INSTANCEID]);
|
||||||
|
WriteLn('PC: ', Task.State^.Registers[PC]);
|
||||||
|
WriteLn('STORE1: ', Task.State^.Registers[STORE1]);
|
||||||
|
WriteLn('STORE2: ', Task.State^.Registers[STORE2]);
|
||||||
|
WriteLn('STORE3: ', Task.State^.Registers[STORE3]);
|
||||||
|
WriteLn('STORE4: ', Task.State^.Registers[STORE4]);
|
||||||
|
WriteLn('STORE5: ', Task.State^.Registers[STORE5]);
|
||||||
|
Writeln(' ');}
|
||||||
|
end else begin
|
||||||
|
console.writeStringlnWND(' ', Handle);
|
||||||
|
console.writeStringWND (' Task: IDLE |', Handle);
|
||||||
|
console.writeStringWND (' SCHED: ', Handle);
|
||||||
|
console.writeintlnWND (vm_scheduler.getActiveTask, Handle);
|
||||||
|
console.writeStringlnWND(' ', Handle);
|
||||||
|
console.writeStringWND (' OBJ1: IDLE |', Handle);
|
||||||
|
console.writeStringlnWND(' OBJ2: IDLE', Handle);
|
||||||
|
console.writeStringWND (' C1: IDLE |', Handle);
|
||||||
|
console.writeStringlnWND(' C2: IDLE', Handle);
|
||||||
|
console.writeStringlnWND(' RET: IDLE', Handle);
|
||||||
|
console.writeStringlnWND(' INSTANCEID: IDLE', Handle);
|
||||||
|
console.writeStringlnWND(' PC: IDLE', Handle);
|
||||||
|
console.writeStringWND (' STORE1: IDLE |', Handle);
|
||||||
|
console.writeStringlnWND(' STORE2: IDLE', Handle);
|
||||||
|
console.writeStringWND (' STORE3: IDLE |', Handle);
|
||||||
|
console.writeStringlnWND(' STORE4: IDLE', Handle);
|
||||||
|
console.writeStringlnWND(' STORE5: IDLE', Handle);
|
||||||
|
//console.writeHexWND(vm_instance.Task.State^.TASK_ID);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure run(Params : PParamList);
|
||||||
|
begin
|
||||||
|
if Handle = 0 then begin
|
||||||
|
Handle:= newWindow(20, 40, 63, 14, 'VMSTATE');
|
||||||
|
clearWND(Handle);
|
||||||
|
registerEventHandler(Handle, EVENT_CLOSE, void(@OnClose));
|
||||||
|
registerEventHandler(Handle, EVENT_DRAW, void(@OnDraw));
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure init();
|
||||||
|
begin
|
||||||
|
tracer.push_trace('vmstate.init');
|
||||||
|
terminal.registerCommand('VMSTATE', @Run, 'View virtual-machine state.');
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
Loading…
x
Reference in New Issue
Block a user