Changeset 6 for trunk/SharpMz800.pas


Ignore:
Timestamp:
Apr 19, 2026, 10:45:05 AM (8 days ago)
Author:
chronos
Message:
  • Modified: Execute instructions from array of methods instead of big case statement.
  • Added: Check which instructions are missing in InstructionInfo.
  • Added: Instruction generator.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SharpMz800.pas

    r5 r6  
    44
    55uses
    6   Classes, SysUtils, CpuZ80, Memory, Base;
     6  Classes, SysUtils, Z80, Memory, Base;
    77
    88type
     
    1414  TSharpMz800 = class
    1515  private
     16    FOnMemoryMappingChange: TNotifyEvent;
    1617    WriteFormatRegister: Byte; // WF
    1718    ReadFormatRegister: Byte; // RF
     
    2728    procedure MesssageExecute(Text: string);
    2829    procedure UpdateMemoryMapping;
     30    procedure DoMemoryMappingChange;
    2931  public
    3032    Cpu: TCpuZ80;
     
    4143    destructor Destroy; override;
    4244    property OnMessage: TMessageEvent read FOnMessage write FOnMessage;
     45    property OnMemoryMappingChange: TNotifyEvent read FOnMemoryMappingChange
     46      write FOnMemoryMappingChange;
    4347  end;
    4448
     
    7579    end;
    7680    $e0..$e6: MemoryBankControl[Address - $e0] := Data;
     81    else MesssageExecute('Unsupported I/O port ' + IntToHex(Address, 4) + ' data ' + IntToHex(Data, 2));
    7782  end;
    7883end;
     
    102107  end;
    103108  MappedMemory.Areas.AddNew($0, Memory);
     109  if Assigned(Cpu) then
     110    TThread.Synchronize(Cpu.Thread, DoMemoryMappingChange);
     111end;
     112
     113procedure TSharpMz800.DoMemoryMappingChange;
     114begin
     115  if Assigned(OnMemoryMappingChange) then
     116    FOnMemoryMappingChange(nil);
    104117end;
    105118
     
    141154  MappedIO.Size := 8;
    142155  MappedIO.BasePort := $d0;
     156  MappedIO.OnInput := CpuInput;
     157  MappedIO.OnOutput := CpuOutput;
    143158  UpdateMemoryMapping;
    144159  Cpu := TCpuZ80.Create;
Note: See TracChangeset for help on using the changeset viewer.