source: branches/bigint/Machine.pas

Last change on this file was 8, checked in by chronos, 3 months ago
  • Added: Common package.
  • Added: Memory form to show content of memory.
File size: 921 bytes
Line 
1unit Machine;
2
3interface
4
5uses
6 Classes, SysUtils, Cpu, IntMemory, Console, DeviceManager;
7
8type
9
10 { TMachine }
11
12 TMachine = class
13 Cpu: TCpu;
14 Memory: TIntMemory;
15 Console: TConsole;
16 DeviceManager: TDeviceManager;
17 constructor Create;
18 destructor Destroy; override;
19 procedure Run;
20 end;
21
22implementation
23
24{ TMachine }
25
26constructor TMachine.Create;
27begin
28 Memory := TIntMemory.Create;
29 Memory.Size := 10000;
30 Console := TConsole.Create;
31 DeviceManager := TDeviceManager.Create;
32 DeviceManager.RegisterDevice(Console);
33 Cpu := TCpu.Create;
34 Cpu.OnWriteMem := Memory.Write;
35 Cpu.OnReadMem := Memory.Read;
36 Cpu.OnWriteIo := DeviceManager.Write;
37 Cpu.OnReadIo := DeviceManager.Read;
38end;
39
40destructor TMachine.Destroy;
41begin
42 FreeAndNil(Cpu);
43 FreeAndNil(Memory);
44 FreeAndNil(DeviceManager);
45 FreeAndNil(Console);
46 inherited;
47end;
48
49procedure TMachine.Run;
50begin
51 Cpu.Run;
52end;
53
54end.
55
Note: See TracBrowser for help on using the repository browser.