source: branches/ByteArray/Machine.pas

Last change on this file was 59, checked in by chronos, 6 months ago
  • Fixed: Assembler and disassembler to work correctly with supported instructions.
File size: 1.2 KB
Line 
1unit Machine;
2
3interface
4
5uses
6 Classes, SysUtils, Cpu, Memory, FrameBuffer, DeviceMapper, Storage, Serial;
7
8type
9
10 { TMachine }
11
12 TMachine = class
13 public
14 Cpu: TCpu;
15 Memory: TMemory;
16 FrameBuffer: TFrameBuffer;
17 Storage: TStorage;
18 Serial: TSerial;
19 DeviceMapper: TDeviceMapper;
20 procedure PowerOn;
21 procedure PowerOff;
22 constructor Create;
23 destructor Destroy; override;
24 end;
25
26
27implementation
28
29{ TMachine }
30
31procedure TMachine.PowerOn;
32begin
33 Cpu.Start;
34end;
35
36procedure TMachine.PowerOff;
37begin
38 Cpu.Stop;
39end;
40
41constructor TMachine.Create;
42begin
43 Memory := TMemory.Create;
44 Memory.Size := 10000;
45 FrameBuffer := TFrameBuffer.Create;
46 Storage := TStorage.Create;
47 Serial := TSerial.Create;
48 DeviceMapper := TDeviceMapper.Create;
49 DeviceMapper.RegisterDevice(FrameBuffer);
50 DeviceMapper.RegisterDevice(Storage);
51 DeviceMapper.RegisterDevice(Serial);
52 Cpu := TCpu.Create;
53 Memory.SetChannel(Cpu.Memory);
54 DeviceMapper.SetChannel(Cpu.IO);
55end;
56
57destructor TMachine.Destroy;
58begin
59 FreeAndNil(Cpu);
60 FreeAndNil(DeviceMapper);
61 FreeAndNil(FrameBuffer);
62 FreeAndNil(Storage);
63 FreeAndNil(Memory);
64 FreeAndNil(Serial);
65 inherited;
66end;
67
68end.
69
Note: See TracBrowser for help on using the repository browser.