git-svn-id: https://spexeah.com:8443/svn/Asuro@747 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c

This commit is contained in:
kieron 2018-09-29 12:50:40 +00:00
parent 8066634367
commit 0c939b8b31
3 changed files with 129 additions and 7 deletions

View File

@ -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

View File

@ -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
View 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.