diff --git a/Asuro.iso b/Asuro.iso index 98ac390b..a0343626 100644 Binary files a/Asuro.iso and b/Asuro.iso differ diff --git a/bin/kernel.bin b/bin/kernel.bin index 90a27603..b5356ff0 100755 Binary files a/bin/kernel.bin and b/bin/kernel.bin differ diff --git a/iso/boot/asuro.bin b/iso/boot/asuro.bin index 90a27603..b5356ff0 100755 Binary files a/iso/boot/asuro.bin and b/iso/boot/asuro.bin differ diff --git a/lib/ACE.ppu b/lib/ACE.ppu index 26b42d78..f09f6baf 100644 Binary files a/lib/ACE.ppu and b/lib/ACE.ppu differ diff --git a/lib/BPE.ppu b/lib/BPE.ppu index 9863c99c..cef367a8 100644 Binary files a/lib/BPE.ppu and b/lib/BPE.ppu differ diff --git a/lib/BTSSE.ppu b/lib/BTSSE.ppu index 65ce1b2c..3844ea25 100644 Binary files a/lib/BTSSE.ppu and b/lib/BTSSE.ppu differ diff --git a/lib/CFE.ppu b/lib/CFE.ppu index 6951376b..72772343 100644 Binary files a/lib/CFE.ppu and b/lib/CFE.ppu differ diff --git a/lib/CSOE.ppu b/lib/CSOE.ppu index 941e84f2..7ce44af3 100644 Binary files a/lib/CSOE.ppu and b/lib/CSOE.ppu differ diff --git a/lib/DBGE.ppu b/lib/DBGE.ppu index 2b8a31a0..cdb3ac1e 100644 Binary files a/lib/DBGE.ppu and b/lib/DBGE.ppu differ diff --git a/lib/DBZ.ppu b/lib/DBZ.ppu index b3752269..da43c006 100644 Binary files a/lib/DBZ.ppu and b/lib/DBZ.ppu differ diff --git a/lib/DFE.ppu b/lib/DFE.ppu index da75909f..9493cbec 100644 Binary files a/lib/DFE.ppu and b/lib/DFE.ppu differ diff --git a/lib/E1000.ppu b/lib/E1000.ppu index ad4336a2..a4baaf7a 100644 Binary files a/lib/E1000.ppu and b/lib/E1000.ppu differ diff --git a/lib/GPF.ppu b/lib/GPF.ppu index 76580ee1..674d61b2 100644 Binary files a/lib/GPF.ppu and b/lib/GPF.ppu differ diff --git a/lib/IDE.ppu b/lib/IDE.ppu index 00f3a229..e616918a 100644 Binary files a/lib/IDE.ppu and b/lib/IDE.ppu differ diff --git a/lib/IDOE.ppu b/lib/IDOE.ppu index 94f4b3c3..5f238954 100644 Binary files a/lib/IDOE.ppu and b/lib/IDOE.ppu differ diff --git a/lib/IOPE.ppu b/lib/IOPE.ppu index 39ccb84b..b61e8d94 100644 Binary files a/lib/IOPE.ppu and b/lib/IOPE.ppu differ diff --git a/lib/MCE.ppu b/lib/MCE.ppu index 324f158c..fac3ffb0 100644 Binary files a/lib/MCE.ppu and b/lib/MCE.ppu differ diff --git a/lib/NCE.ppu b/lib/NCE.ppu index e518fe6b..8f8853b0 100644 Binary files a/lib/NCE.ppu and b/lib/NCE.ppu differ diff --git a/lib/NMIE.ppu b/lib/NMIE.ppu index fa05882c..20dc215f 100644 Binary files a/lib/NMIE.ppu and b/lib/NMIE.ppu differ diff --git a/lib/OOBE.ppu b/lib/OOBE.ppu index b27894a6..f96c7df6 100644 Binary files a/lib/OOBE.ppu and b/lib/OOBE.ppu differ diff --git a/lib/PCI.ppu b/lib/PCI.ppu index cb7d4215..c0c3bd0a 100644 Binary files a/lib/PCI.ppu and b/lib/PCI.ppu differ diff --git a/lib/PF.ppu b/lib/PF.ppu index f9ab75f5..18be69bb 100644 Binary files a/lib/PF.ppu and b/lib/PF.ppu differ diff --git a/lib/PS2_KEYBOARD_ISR.ppu b/lib/PS2_KEYBOARD_ISR.ppu index de21e3ac..73aa63ab 100644 Binary files a/lib/PS2_KEYBOARD_ISR.ppu and b/lib/PS2_KEYBOARD_ISR.ppu differ diff --git a/lib/RTC.ppu b/lib/RTC.ppu index cebf96ab..bb2e61ac 100644 Binary files a/lib/RTC.ppu and b/lib/RTC.ppu differ diff --git a/lib/SFE.ppu b/lib/SFE.ppu index 41b7c59b..0ead53d9 100644 Binary files a/lib/SFE.ppu and b/lib/SFE.ppu differ diff --git a/lib/SNPE.ppu b/lib/SNPE.ppu index cfad3caa..49c7e257 100644 Binary files a/lib/SNPE.ppu and b/lib/SNPE.ppu differ diff --git a/lib/TMR_0_ISR.ppu b/lib/TMR_0_ISR.ppu index 4d99ab06..a7094f66 100644 Binary files a/lib/TMR_0_ISR.ppu and b/lib/TMR_0_ISR.ppu differ diff --git a/lib/UIE.ppu b/lib/UIE.ppu index 49538e8c..63c116d7 100644 Binary files a/lib/UIE.ppu and b/lib/UIE.ppu differ diff --git a/lib/USB.ppu b/lib/USB.ppu index 6ddf7f51..3b5ddf3b 100644 Binary files a/lib/USB.ppu and b/lib/USB.ppu differ diff --git a/lib/arp.ppu b/lib/arp.ppu index 5ef009cb..6cd83a9a 100644 Binary files a/lib/arp.ppu and b/lib/arp.ppu differ diff --git a/lib/asuro.ppu b/lib/asuro.ppu index 99cc5b13..a6173b28 100644 Binary files a/lib/asuro.ppu and b/lib/asuro.ppu differ diff --git a/lib/bios_data_area.ppu b/lib/bios_data_area.ppu index 9f6c7cab..ac540914 100644 Binary files a/lib/bios_data_area.ppu and b/lib/bios_data_area.ppu differ diff --git a/lib/console.o b/lib/console.o index 8e2af6ca..f6b54c67 100644 Binary files a/lib/console.o and b/lib/console.o differ diff --git a/lib/console.ppu b/lib/console.ppu index 847bea8e..225c84b6 100644 Binary files a/lib/console.ppu and b/lib/console.ppu differ diff --git a/lib/drivermanagement.ppu b/lib/drivermanagement.ppu index cf3fc079..99a8ff1a 100644 Binary files a/lib/drivermanagement.ppu and b/lib/drivermanagement.ppu differ diff --git a/lib/drivertypes.ppu b/lib/drivertypes.ppu index 1ee6aad9..84ab3abf 100644 Binary files a/lib/drivertypes.ppu and b/lib/drivertypes.ppu differ diff --git a/lib/eth2.ppu b/lib/eth2.ppu index 14846340..d941ff96 100644 Binary files a/lib/eth2.ppu and b/lib/eth2.ppu differ diff --git a/lib/fat32.ppu b/lib/fat32.ppu index a8277ecd..562cdcb2 100644 Binary files a/lib/fat32.ppu and b/lib/fat32.ppu differ diff --git a/lib/faults.ppu b/lib/faults.ppu index b63430f5..8a8ace44 100644 Binary files a/lib/faults.ppu and b/lib/faults.ppu differ diff --git a/lib/fonts.ppu b/lib/fonts.ppu index bc461db4..68cba500 100644 Binary files a/lib/fonts.ppu and b/lib/fonts.ppu differ diff --git a/lib/gdt.ppu b/lib/gdt.ppu index 5ecbb0c2..8bedb292 100644 Binary files a/lib/gdt.ppu and b/lib/gdt.ppu differ diff --git a/lib/idt.ppu b/lib/idt.ppu index 9d0f4174..5066fb63 100644 Binary files a/lib/idt.ppu and b/lib/idt.ppu differ diff --git a/lib/ipv4.ppu b/lib/ipv4.ppu index 6925500f..dfae377b 100644 Binary files a/lib/ipv4.ppu and b/lib/ipv4.ppu differ diff --git a/lib/irq.ppu b/lib/irq.ppu index 0a6e295f..4b4039f5 100644 Binary files a/lib/irq.ppu and b/lib/irq.ppu differ diff --git a/lib/isr.ppu b/lib/isr.ppu index 50450550..d58a7e67 100644 Binary files a/lib/isr.ppu and b/lib/isr.ppu differ diff --git a/lib/isr_types.ppu b/lib/isr_types.ppu index 6b021c3d..b67a64f0 100644 Binary files a/lib/isr_types.ppu and b/lib/isr_types.ppu differ diff --git a/lib/isrmanager.ppu b/lib/isrmanager.ppu index 2e406ad8..fd55df11 100644 Binary files a/lib/isrmanager.ppu and b/lib/isrmanager.ppu differ diff --git a/lib/kernel.ppu b/lib/kernel.ppu index ed3d897f..2aff3703 100644 Binary files a/lib/kernel.ppu and b/lib/kernel.ppu differ diff --git a/lib/keyboard.ppu b/lib/keyboard.ppu index da09df7b..4f7afa61 100644 Binary files a/lib/keyboard.ppu and b/lib/keyboard.ppu differ diff --git a/lib/libpconsole.a b/lib/libpconsole.a index 657935f8..31e2fa47 100644 Binary files a/lib/libpconsole.a and b/lib/libpconsole.a differ diff --git a/lib/libpmultiboot.a b/lib/libpmultiboot.a index 17b09bcb..e7bb48fa 100644 Binary files a/lib/libpmultiboot.a and b/lib/libpmultiboot.a differ diff --git a/lib/libpsystem.a b/lib/libpsystem.a index 6354360e..2eb662ec 100644 Binary files a/lib/libpsystem.a and b/lib/libpsystem.a differ diff --git a/lib/lists.ppu b/lib/lists.ppu index 1a4c12cd..a0ece310 100644 Binary files a/lib/lists.ppu and b/lib/lists.ppu differ diff --git a/lib/lmemorymanager.ppu b/lib/lmemorymanager.ppu index 2785a763..c6e204e5 100644 Binary files a/lib/lmemorymanager.ppu and b/lib/lmemorymanager.ppu differ diff --git a/lib/memview.ppu b/lib/memview.ppu index ac371d96..e65963d1 100644 Binary files a/lib/memview.ppu and b/lib/memview.ppu differ diff --git a/lib/mouse.ppu b/lib/mouse.ppu index fd56597f..1a15ecdf 100644 Binary files a/lib/mouse.ppu and b/lib/mouse.ppu differ diff --git a/lib/multiboot.ppu b/lib/multiboot.ppu index 835ec52a..c1118b8b 100644 Binary files a/lib/multiboot.ppu and b/lib/multiboot.ppu differ diff --git a/lib/net.ppu b/lib/net.ppu index acbf5714..8caeeee9 100644 Binary files a/lib/net.ppu and b/lib/net.ppu differ diff --git a/lib/nettypes.ppu b/lib/nettypes.ppu index 5f68b15a..1877512e 100644 Binary files a/lib/nettypes.ppu and b/lib/nettypes.ppu differ diff --git a/lib/netutils.ppu b/lib/netutils.ppu index 9d005457..5b4313b1 100644 Binary files a/lib/netutils.ppu and b/lib/netutils.ppu differ diff --git a/lib/pmemorymanager.ppu b/lib/pmemorymanager.ppu index c3092c9f..8a0cca4b 100644 Binary files a/lib/pmemorymanager.ppu and b/lib/pmemorymanager.ppu differ diff --git a/lib/scheduler.ppu b/lib/scheduler.ppu index 0c67574d..88d610f0 100644 Binary files a/lib/scheduler.ppu and b/lib/scheduler.ppu differ diff --git a/lib/serial.ppu b/lib/serial.ppu index b342f294..f425cf10 100644 Binary files a/lib/serial.ppu and b/lib/serial.ppu differ diff --git a/lib/shell.ppu b/lib/shell.ppu index c6635c99..35bd499e 100644 Binary files a/lib/shell.ppu and b/lib/shell.ppu differ diff --git a/lib/splash.ppu b/lib/splash.ppu index ace12d1e..7956a5f8 100644 Binary files a/lib/splash.ppu and b/lib/splash.ppu differ diff --git a/lib/storagemanagement.ppu b/lib/storagemanagement.ppu index 82a6b3d1..28f44425 100644 Binary files a/lib/storagemanagement.ppu and b/lib/storagemanagement.ppu differ diff --git a/lib/strings.ppu b/lib/strings.ppu index 31289073..afaf9617 100644 Binary files a/lib/strings.ppu and b/lib/strings.ppu differ diff --git a/lib/system.o b/lib/system.o index f2e2b777..35acf11d 100644 Binary files a/lib/system.o and b/lib/system.o differ diff --git a/lib/system.ppu b/lib/system.ppu index d8cfe2e8..d97e26b0 100644 Binary files a/lib/system.ppu and b/lib/system.ppu differ diff --git a/lib/terminal.ppu b/lib/terminal.ppu index 79fefb79..e6a5a539 100644 Binary files a/lib/terminal.ppu and b/lib/terminal.ppu differ diff --git a/lib/testdriver.ppu b/lib/testdriver.ppu index 48661c03..e44f6ab8 100644 Binary files a/lib/testdriver.ppu and b/lib/testdriver.ppu differ diff --git a/lib/tracer.ppu b/lib/tracer.ppu index c77ab976..d68e3dbf 100644 Binary files a/lib/tracer.ppu and b/lib/tracer.ppu differ diff --git a/lib/tss.ppu b/lib/tss.ppu index 22243ef8..b8c106d0 100644 Binary files a/lib/tss.ppu and b/lib/tss.ppu differ diff --git a/lib/util.ppu b/lib/util.ppu index 11d6a5f6..44e85175 100644 Binary files a/lib/util.ppu and b/lib/util.ppu differ diff --git a/lib/vmemorymanager.ppu b/lib/vmemorymanager.ppu index 1bc29060..659fa9a1 100644 Binary files a/lib/vmemorymanager.ppu and b/lib/vmemorymanager.ppu differ diff --git a/src/console.pas b/src/console.pas index a86a9e25..3be4cb5a 100644 --- a/src/console.pas +++ b/src/console.pas @@ -136,6 +136,7 @@ procedure writewordexWND(i: DWORD; attributes: uint32; WND : uint32); procedure writewordlnexWND(i: DWORD; attributes: uint32; WND : uint32); procedure writehexpairWND(b : uint8; WND : uint32); +procedure writehexpairExWND(b : uint8; Attributes : uint32; WND : uint32); procedure writehexWND(i: DWORD; WND : uint32); procedure writehexlnWND(i: DWORD; WND : uint32); procedure writehexexWND(i : DWORD; attributes: uint32; WND : uint32); @@ -888,7 +889,7 @@ begin Default_Char.visible:= true; Window_Border.Character:= ' '; - Window_Border.Attributes:= console.combinecolors($01C3, $07EE);//$0000FFFF; + Window_Border.Attributes:= console.combinecolors($01C3, $07EE); Window_Border.visible:= true; For w:=0 to MAX_WINDOWS-1 do begin @@ -1771,6 +1772,11 @@ begin end; procedure writehexpairWND(b : uint8; WND : uint32); +begin + writehexpairExWND(b, Console_Properties.Default_Attribute, WND); +end; + +procedure writehexpairExWND(b : uint8; Attributes : uint32; WND : uint32); var bn : Array[0..1] of uint8; i : uint8; @@ -1780,22 +1786,22 @@ begin bn[1]:= b AND $0F; for i:=0 to 1 do begin case bn[i] of - 0 :writestringWND('0', WND); - 1 :writestringWND('1', WND); - 2 :writestringWND('2', WND); - 3 :writestringWND('3', WND); - 4 :writestringWND('4', WND); - 5 :writestringWND('5', WND); - 6 :writestringWND('6', WND); - 7 :writestringWND('7', WND); - 8 :writestringWND('8', WND); - 9 :writestringWND('9', WND); - 10:writestringWND('A', WND); - 11:writestringWND('B', WND); - 12:writestringWND('C', WND); - 13:writestringWND('D', WND); - 14:writestringWND('E', WND); - 15:writestringWND('F', WND); + 0 :writestringExWND('0', Attributes, WND); + 1 :writestringExWND('1', Attributes, WND); + 2 :writestringExWND('2', Attributes, WND); + 3 :writestringExWND('3', Attributes, WND); + 4 :writestringExWND('4', Attributes, WND); + 5 :writestringExWND('5', Attributes, WND); + 6 :writestringExWND('6', Attributes, WND); + 7 :writestringExWND('7', Attributes, WND); + 8 :writestringExWND('8', Attributes, WND); + 9 :writestringExWND('9', Attributes, WND); + 10:writestringExWND('A', Attributes, WND); + 11:writestringExWND('B', Attributes, WND); + 12:writestringExWND('C', Attributes, WND); + 13:writestringExWND('D', Attributes, WND); + 14:writestringExWND('E', Attributes, WND); + 15:writestringExWND('F', Attributes, WND); end; end; end; diff --git a/src/include/system.pas b/src/include/system.pas index 07b5ed4a..690921da 100644 --- a/src/include/system.pas +++ b/src/include/system.pas @@ -97,6 +97,19 @@ type TMask = bitpacked array[0..7] of Boolean; PMask = ^TMask; + TRGB565 = bitpacked record + B : UBit5; + G : UBit6; + R : UBit5 + end; + PRGB565 = ^TRGB565; + + TRGB565Pair = bitpacked record + Background : TRGB565; + Foreground : TRGB565; + end; + PRGB565Pair = ^TRGB565Pair; + implementation end. diff --git a/src/include/util.pas b/src/include/util.pas index 944c37c9..954ec494 100644 --- a/src/include/util.pas +++ b/src/include/util.pas @@ -346,7 +346,8 @@ var z : uint32; begin - disable_cursor; + console.disable_cursor; + console.mouseEnabled(false); console.forceQuitAll; if not BSOD_ENABLE then exit; console.setdefaultattribute(console.combinecolors($FFFF, $F800)); diff --git a/src/prog/memview.pas b/src/prog/memview.pas index db9f144a..7964c571 100644 --- a/src/prog/memview.pas +++ b/src/prog/memview.pas @@ -12,41 +12,95 @@ implementation uses strings, tracer; +type + TMode = (tmHex, tmChar); + var Handle : HWND = 0; MEM_LOC : uint32; + NEW_LOC : Boolean; + Colors : uint32; + Changed : uint32; + Data : Array[0..176] of byte; + Mode : TMode; -procedure mvprintmemory(source : uint32; length : uint32; col : uint32; delim : PChar; offset_row : boolean); +procedure printmemoryaschar(source : uint32; length : uint32; col : uint32; delim : PChar; offset_row : boolean); var buf : puint8; i : uint32; -begin +begin tracer.push_trace('memview.printmemory'); buf:= puint8(source); - console.writestringlnWND(' ', Handle); - console.writestringlnWND(' ', Handle); + if NEW_LOC then begin + NEW_LOC:= false; + for i:=0 to length-1 do begin + Data[i]:= buf[i]; + end; + end; + console.writestringlnExWND(' ', Colors, Handle); + console.writestringlnExWND(' ', Colors, Handle); for i:=0 to length-1 do begin if offset_row and (i = 0) then begin - console.writestringWND(' ', Handle); - console.writehexWND(source + (i), Handle); - console.writestringWND(': ', Handle); + console.writestringExWND(' ', Colors, Handle); + console.writehexExWND(source + (i), Colors, Handle); + console.writestringExWND(': ', Colors, Handle); end; - console.writehexpairWND(buf[i], Handle); + if buf[i] = Data[i] then console.writecharExWND(char(buf[i]), Colors, Handle) else console.writecharExWND(char(buf[i]), Changed, Handle); + console.writecharExWND(' ', Colors, Handle); if i<>length-1 then begin if ((i+1) MOD col) = 0 then begin - console.writestringlnWND(' ', Handle); + console.writestringlnExWND(' ', Colors, Handle); if offset_row then begin - console.writestringWND(' ', Handle); - console.writehexWND(source + (i + 1), Handle); - console.writestringWND(': ', Handle); + console.writestringExWND(' ', Colors, Handle); + console.writehexExWND(source + (i + 1), Colors, Handle); + console.writestringExWND(': ', Colors, Handle); end; end else begin - console.writestringWND(delim, Handle); + console.writestringExWND(delim, Colors, Handle); end; end; end; - console.writestringlnWND(' ', Handle); + console.writestringlnExWND(' ', Colors, Handle); +end; + +procedure printmemoryashex(source : uint32; length : uint32; col : uint32; delim : PChar; offset_row : boolean); +var + buf : puint8; + i : uint32; + +begin + tracer.push_trace('memview.printmemory'); + buf:= puint8(source); + if NEW_LOC then begin + NEW_LOC:= false; + for i:=0 to length-1 do begin + Data[i]:= buf[i]; + end; + end; + console.writestringlnExWND(' ', Colors, Handle); + console.writestringlnExWND(' ', Colors, Handle); + for i:=0 to length-1 do begin + if offset_row and (i = 0) then begin + console.writestringExWND(' ', Colors, Handle); + console.writehexExWND(source + (i), Colors, Handle); + console.writestringExWND(': ', Colors, Handle); + end; + if buf[i] = Data[i] then console.writehexpairExWND(buf[i], Colors, Handle) else console.writehexpairExWND(buf[i], Changed, Handle); + if i<>length-1 then begin + if ((i+1) MOD col) = 0 then begin + console.writestringlnExWND(' ', Colors, Handle); + if offset_row then begin + console.writestringExWND(' ', Colors, Handle); + console.writehexExWND(source + (i + 1), Colors, Handle); + console.writestringExWND(': ', Colors, Handle); + end; + end else begin + console.writestringExWND(delim, Colors, Handle); + end; + end; + end; + console.writestringlnExWND(' ', Colors, Handle); end; procedure OnClose(); @@ -58,8 +112,12 @@ procedure Draw(); begin tracer.push_trace('memview.draw'); if Handle <> 0 then begin - clearWND(Handle); - mvprintmemory(MEM_LOC, 176, 16, ' ', true); + clearWNDEx(Handle, Colors); + case mode of + tmHex:printmemoryashex(MEM_LOC, 176, 16, ' ', true); + tmChar:printmemoryaschar(MEM_LOC, 176, 16, ' ', true); + end; + end; end; @@ -67,9 +125,17 @@ procedure OnKeyPressed(info : TKeyInfo); begin if info.key_code = 16 then begin dec(MEM_LOC, 16); + NEW_LOC:= true; end; if info.key_code = 18 then begin inc(MEM_LOC, 16); + NEW_LOC:= true; + end; + if info.key_code = uint8('c') then begin + Mode:= tmChar; + end; + if info.key_code = uint8('h') then begin + Mode:= tmHex; end; end; @@ -100,6 +166,7 @@ begin end; end else begin MEM_LOC:= stringToInt(loc); + NEW_LOC:= true; if Handle = 0 then begin Handle:= newWindow(20, 40, 63, 14, 'MEMVIEW'); registerEventHandler(Handle, EVENT_DRAW, void(@Draw)); @@ -118,6 +185,9 @@ procedure init(); begin tracer.push_trace('memview.init'); terminal.registerCommand('MEMVIEW', @Run, 'View a location in memory [MEMVIEW ]'); + Colors:= combineColors($0000, $FFFF); + Changed:= combineColors($F800, $FFFF); + Mode:= tmHex; end; end. \ No newline at end of file diff --git a/src/prog/shell.pas b/src/prog/shell.pas index 00ba82ef..b9409154 100644 --- a/src/prog/shell.pas +++ b/src/prog/shell.pas @@ -92,7 +92,7 @@ procedure init(); begin Takbar_Colors:= console.combinecolors($0000, $FFFF); Explore_Colors:= console.combinecolors($01C3, $07EE); - Desktop_Colors:= console.combinecolors($01C3, $A55F); + Desktop_Colors:= console.combinecolors($01C3, $34DB); DesktopHandle:= Console.newWindow(0, 0, 159, 63, 'DESKTOP'); TaskBarHandle:= Console.newWindow(0, 63, 159, 1, 'SHELL'); diff --git a/src/prog/terminal.pas b/src/prog/terminal.pas index aea666b4..6e6909e6 100644 --- a/src/prog/terminal.pas +++ b/src/prog/terminal.pas @@ -428,6 +428,11 @@ begin resetSystem; end; +procedure teapot(Params : PParamList); +begin + console.writestringlnWND('Teapot?', getTerminalHWND); +end; + procedure init; begin console.writestringln('TERMINAL: INIT BEGIN.'); @@ -440,6 +445,7 @@ begin registerCommand('TIME', @printTime, 'Print the current time.'); registerCommandEx('SERIAL', @SendSerial, 'Send ''helloworld'' through COM1.', true); registerCommand('REBOOT', @Reboot, 'Reboot the system.'); + registerCommandEx('LOLWUT', @teapot, '?', true); console.writestringln('TERMINAL: INIT END.'); end;