Changeset 42 for branches/simple/Devices/Console.pas
- Timestamp:
- Sep 8, 2023, 11:20:27 PM (9 months ago)
- Location:
- branches/simple/Devices
- Files:
-
- 1 added
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
branches/simple/Devices/Console.pas
r41 r42 4 4 5 5 uses 6 Classes, SysUtils, Device, DeviceMa pper;6 Classes, SysUtils, Device, DeviceManager, Channel; 7 7 8 8 type 9 { TConsole }10 9 11 TConsole = class(TDevice16) 10 { TConsole8 } 11 12 TConsole8 = class(TDevice8) 12 13 private 13 14 FOnRead: TReadEvent8; … … 16 17 function Read8: Byte; 17 18 public 18 procedure RegisterMapper8(Mapper: TDeviceMapper8); override; 19 procedure RegisterMapper16(Mapper: TDeviceMapper16); override; 19 function GetHandlerCount: Integer; override; 20 function GetHandler(Address: Integer): TChannel8; override; 21 property OnWrite: TWriteEvent8 read FOnWrite write FOnWrite; 22 property OnRead: TReadEvent8 read FOnRead write FOnRead; 23 end; 24 25 { TConsole16 } 26 27 TConsole16 = class(TDevice16) 28 private 29 FOnRead: TReadEvent8; 30 FOnWrite: TWriteEvent8; 31 procedure Write8(Data: Byte); 32 function Read8: Byte; 33 public 34 function GetHandlerCount: Integer; override; 35 function GetHandler(Address: Integer): TChannel16; override; 20 36 property OnWrite: TWriteEvent8 read FOnWrite write FOnWrite; 21 37 property OnRead: TReadEvent8 read FOnRead write FOnRead; … … 25 41 implementation 26 42 27 { TConsole }43 { TConsole8 } 28 44 29 procedure TConsole.RegisterMapper8(Mapper: TDeviceMapper8); 30 begin 31 Mapper.RegisterReadHandler(Read8); 32 Mapper.RegisterWriteHandler(Write8); 33 end; 34 35 procedure TConsole.RegisterMapper16(Mapper: TDeviceMapper16); 36 begin 37 Mapper.RegisterReadHandler(Read8, nil); 38 Mapper.RegisterWriteHandler(Write8, nil); 39 end; 40 41 procedure TConsole.Write8(Data: Byte); 45 procedure TConsole8.Write8(Data: Byte); 42 46 begin 43 47 if Assigned(FOnWrite) then FOnWrite(Data); 44 48 end; 45 49 46 function TConsole .Read8: Byte;50 function TConsole8.Read8: Byte; 47 51 begin 48 52 if Assigned(FOnRead) then Result := FOnRead … … 50 54 end; 51 55 56 function TConsole8.GetHandlerCount: Integer; 57 begin 58 Result := 1; 59 end; 60 61 function TConsole8.GetHandler(Address: Integer): TChannel8; 62 begin 63 if Address = 0 then begin 64 Result := TChannel8.Create; 65 Result.Read8 := Read8; 66 Result.Write8 := Write8; 67 end; 68 end; 69 70 { TConsole16 } 71 72 procedure TConsole16.Write8(Data: Byte); 73 begin 74 if Assigned(FOnWrite) then FOnWrite(Data); 75 end; 76 77 function TConsole16.Read8: Byte; 78 begin 79 if Assigned(FOnRead) then Result := FOnRead 80 else Result := 0; 81 end; 82 83 function TConsole16.GetHandlerCount: Integer; 84 begin 85 Result := 1; 86 end; 87 88 function TConsole16.GetHandler(Address: Integer): TChannel16; 89 begin 90 if Address = 0 then begin 91 Result := TChannel16.Create; 92 Result.Read8 := Read8; 93 Result.Write8 := Write8; 94 end; 95 end; 52 96 53 97 end.
Note:
See TracChangeset
for help on using the changeset viewer.