Ignore:
Timestamp:
Sep 8, 2023, 11:20:27 PM (8 months ago)
Author:
chronos
Message:
  • Modified: Improved simple virtual machine.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/simple/Machine.pas

    r41 r42  
    44
    55uses
    6   Classes, SysUtils, Cpu, Memory, DeviceMapper, Console, Screen;
     6  Classes, SysUtils, Cpu, Memory, DeviceManager, Console, Screen;
    77
    88type
     
    2525    procedure SetPoweredOn(AValue: Boolean); override;
    2626  public
    27     DeviceMapper: TDeviceMapper8;
     27    DeviceManager: TDeviceManager8;
    2828    Memory: TMemory8;
    29     Console: TConsole;
     29    Console: TConsole8;
    3030    Cpu: TCpu8;
    3131    Screen: TScreen8;
     
    4141    procedure SetPoweredOn(AValue: Boolean); override;
    4242  public
    43     DeviceMapper: TDeviceMapper16;
     43    DeviceManager: TDeviceManager16;
    4444    Memory: TMemory16;
    45     Console: TConsole;
     45    Console: TConsole16;
    4646    Cpu: TCpu16;
    4747    Screen: TScreen16;
     
    7272constructor TMachine16.Create;
    7373begin
    74   DeviceMapper := TDeviceMapper16.Create;
    75   Console := TConsole.Create;
    76   Console.RegisterMapper16(DeviceMapper);
     74  Cpu := TCpu16.Create;
     75  Console := TConsole16.Create;
    7776  Screen := TScreen16.Create;
    78   Screen.RegisterMapper16(DeviceMapper);
     77  DeviceManager := TDeviceManager16.Create;
     78  DeviceManager.RegisterDevice(Console);
     79  DeviceManager.RegisterDevice(Screen);
     80  DeviceManager.SetDataBus(Cpu.IO);
    7981  Memory := TMemory16.Create;
    8082  Memory.Size := 65535;
    81   Cpu := TCpu16.Create;
    82   Cpu.IO := DeviceMapper;
    83   Cpu.Memory := Memory;
     83  Memory.SetDataBus(Cpu.Memory);
    8484end;
    8585
     
    8787begin
    8888  FreeAndNil(Cpu);
    89   FreeAndNil(DeviceMapper);
     89  FreeAndNil(DeviceManager);
    9090  FreeAndNil(Console);
    9191  FreeAndNil(Memory);
     
    105105constructor TMachine8.Create;
    106106begin
    107   DeviceMapper := TDeviceMapper8.Create;
    108   Console := TConsole.Create;
    109   Console.RegisterMapper8(DeviceMapper);
     107  Cpu := TCpu8.Create;
     108  Console := TConsole8.Create;
    110109  Screen := TScreen8.Create;
    111   Screen.RegisterMapper8(DeviceMapper);
     110  DeviceManager := TDeviceManager8.Create;
     111  DeviceManager.RegisterDevice(Console);
     112  DeviceManager.RegisterDevice(Screen);
     113  DeviceManager.SetDataBus(Cpu.IO);
    112114  Memory := TMemory8.Create;
    113115  Memory.Size := 255;
    114   Cpu := TCpu8.Create;
    115   Cpu.IO := DeviceMapper;
    116   Cpu.Memory := Memory;
     116  Memory.SetDataBus(Cpu.Memory);
    117117end;
    118118
     
    120120begin
    121121  FreeAndNil(Cpu);
    122   FreeAndNil(DeviceMapper);
     122  FreeAndNil(DeviceManager);
    123123  FreeAndNil(Console);
    124124  FreeAndNil(Memory);
Note: See TracChangeset for help on using the changeset viewer.