files
SDK/Examples/Console/ConBoard/ConBoard.dpr

68 lines
1.7 KiB
ObjectPascal

program ConBoard;
uses
CRT, KolibriOS;
var
LogFilePath: PKolibriChar = '/tmp0/1/BOARDLOG.TXT';
Ch: KolibriChar;
Prefix: array[0..3] of KolibriChar; // #0#0#0#0 by program start
PrefixIndex: LongWord = 0; // 0 by program start but warning
IsStartLine: Boolean = True;
Attr: TFileAttributes;
BytesWritten: LongWord;
begin
InitConsole('Console board');
if CmdLine^ <> #0 then
LogFilePath := CmdLine;
repeat
if DebugRead(Ch) then
begin
if IsStartLine then
begin
Prefix[PrefixIndex] := Ch;
if PrefixIndex = High(Prefix) - 1 then
begin
// Kernel
if (Prefix[0] = 'K') and (Prefix[1] = ' ') and (Prefix[2] = ':') then
TextColor(Yellow)
else
// Launcher
if (Prefix[0] = 'L') and (Prefix[1] = ':') and (Prefix[2] = ' ') then
TextColor(White)
else
TextColor(LightGray);
IsStartLine := False;
PrefixIndex := Low(Prefix);
with GetSystemTime do
con_printf('[%02x:%02x:%02x] ', Hours, Minutes, Seconds);
con_write_asciiz(Prefix);
LongWord(Prefix) := 0; // Prefix := #0#0#0#0;
end
else
Inc(PrefixIndex);
end
else
begin
con_write_string(@Ch, 1);
if Ch = #10 then
begin
IsStartLine := True;
TextColor(LightGray);
end;
end;
if GetFileAttributes(LogFilePath, Attr) = ERROR_FILE_NOT_FOUND then
begin
CreateFile(LogFilePath);
Attr.Size := 0;
end;
WriteFile(LogFilePath, Ch, SizeOf(Ch), Attr.Size, BytesWritten);
end;
until LongBool(con_get_flags and CON_WINDOW_CLOSED);
end.