Last change
on this file was 12, checked in by chronos, 2 weeks ago |
- Added: More CPU instructions.
- Added: Mouse device.
|
File size:
1.2 KB
|
Line | |
---|
1 | unit Console;
|
---|
2 |
|
---|
3 | interface
|
---|
4 |
|
---|
5 | uses
|
---|
6 | Classes, SysUtils, Device, Int;
|
---|
7 |
|
---|
8 | type
|
---|
9 |
|
---|
10 | { TConsole }
|
---|
11 |
|
---|
12 | TConsole = class(TDevice)
|
---|
13 | private
|
---|
14 | FOnRead: TNotifyEvent;
|
---|
15 | FOnWrite: TNotifyEvent;
|
---|
16 | procedure WriteChar(Data: TInt);
|
---|
17 | function ReadChar: TInt;
|
---|
18 | function ReadInputBufferSize: TInt;
|
---|
19 | public
|
---|
20 | InputBuffer: string;
|
---|
21 | OutputBuffer: string;
|
---|
22 | function GetHandlers: THandlers; override;
|
---|
23 | property OnWrite: TNotifyEvent read FOnWrite write FOnWrite;
|
---|
24 | property OnRead: TNotifyEvent read FOnRead write FOnRead;
|
---|
25 | end;
|
---|
26 |
|
---|
27 |
|
---|
28 | implementation
|
---|
29 |
|
---|
30 | { TConsole }
|
---|
31 |
|
---|
32 | function TConsole.GetHandlers: THandlers;
|
---|
33 | begin
|
---|
34 | Result := THandlers.Create;
|
---|
35 | Result.ReadHandlers.Add(ReadChar);
|
---|
36 | Result.ReadHandlers.Add(ReadInputBufferSize);
|
---|
37 | Result.WriteHandlers.Add(WriteChar);
|
---|
38 | end;
|
---|
39 |
|
---|
40 | procedure TConsole.WriteChar(Data: TInt);
|
---|
41 | begin
|
---|
42 | OutputBuffer := OutputBuffer + Chr(Data);
|
---|
43 | if Assigned(FOnWrite) then FOnWrite(Self);
|
---|
44 | end;
|
---|
45 |
|
---|
46 | function TConsole.ReadChar: TInt;
|
---|
47 | begin
|
---|
48 | if Length(InputBuffer) > 0 then begin
|
---|
49 | Result := Ord(InputBuffer[1]);
|
---|
50 | Delete(InputBuffer, 1, 1);
|
---|
51 | end else Result := 0;
|
---|
52 | end;
|
---|
53 |
|
---|
54 | function TConsole.ReadInputBufferSize: TInt;
|
---|
55 | begin
|
---|
56 | Result := Length(InputBuffer);
|
---|
57 | end;
|
---|
58 |
|
---|
59 | end.
|
---|
60 |
|
---|
Note:
See
TracBrowser
for help on using the repository browser.