Changeset 13 for trunk/Forms/FormDisassembler.pas
- Timestamp:
- Apr 21, 2026, 2:55:51 PM (6 days ago)
- File:
-
- 1 edited
-
trunk/Forms/FormDisassembler.pas (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Forms/FormDisassembler.pas
r12 r13 5 5 uses 6 6 Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, 7 ExtCtrls, Menus, Disassembler, Z80;7 ExtCtrls, Menus, Disassembler, Base, Debugger; 8 8 9 9 type 10 TAddressEvent = procedure (Address: Word) of object;11 12 10 { TFormDisassembler } 13 11 … … 18 16 MenuItemSetAddress: TMenuItem; 19 17 PopupMenu1: TPopupMenu; 18 Timer1: TTimer; 20 19 procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); 21 20 procedure FormCreate(Sender: TObject); … … 27 26 procedure MenuItemSetAddressClick(Sender: TObject); 28 27 procedure PopupMenu1Popup(Sender: TObject); 28 procedure Timer1Timer(Sender: TObject); 29 29 private 30 FReloadPending: Boolean; 30 31 FOnAddBreakPoint: TAddressEvent; 31 32 FOnChangePC: TAddressEvent; … … 33 34 procedure DoAddBreakPoint(Address: Word); 34 35 public 35 Cpu: TCpuZ80;36 Debugger: TDebugger; 36 37 Disassembler: TDisassembler; 37 38 procedure Disassemble(Sender: TObject); 38 39 procedure SelectAddress(Address: Word); 39 40 procedure ReloadList; 41 procedure Reload; 40 42 function GetCurrentAddress: Word; 41 43 property OnChangePC: TAddressEvent read FOnChangePC write FOnChangePC; … … 60 62 procedure TFormDisassembler.FormCreate(Sender: TObject); 61 63 begin 62 Disassembler := TDisassembler.Create;63 64 end; 64 65 65 66 procedure TFormDisassembler.FormDestroy(Sender: TObject); 66 67 begin 67 FreeAndNil(Disassembler);68 68 end; 69 69 70 70 procedure TFormDisassembler.FormShow(Sender: TObject); 71 71 begin 72 Disassemble(nil);72 Reload; 73 73 end; 74 74 … … 79 79 if Item.Index < Disassembler.DecodedInstructions.Count then 80 80 with TDecodedInstruction(Disassembler.DecodedInstructions[Item.Index]) do begin 81 if Cpu.BreakPoints.Contains(Address) then BreakPoint := ' @'81 if Debugger.BreakPoints.Contains(Address) then BreakPoint := ' @' 82 82 else BreakPoint := ''; 83 83 Item.Caption := IntToHex(Address, 4) + BreakPoint; … … 93 93 begin 94 94 if Assigned(ListView1.Selected) then begin 95 Cpu.BreakPoints.Add(TDecodedInstruction(ListView1.Selected.Data).Address);95 Debugger.BreakPoints.Add(TDecodedInstruction(ListView1.Selected.Data).Address); 96 96 ReloadList; 97 97 end; … … 101 101 begin 102 102 if Assigned(ListView1.Selected) then begin 103 Cpu.BreakPoints.Remove(TDecodedInstruction(ListView1.Selected.Data).Address);103 Debugger.BreakPoints.Remove(TDecodedInstruction(ListView1.Selected.Data).Address); 104 104 ReloadList; 105 105 end; … … 116 116 procedure TFormDisassembler.PopupMenu1Popup(Sender: TObject); 117 117 begin 118 119 118 MenuItemSetAddress.Enabled := Assigned(ListView1.Selected); 120 119 if Assigned(ListView1.Selected) then begin … … 127 126 end; 128 127 128 procedure TFormDisassembler.Timer1Timer(Sender: TObject); 129 begin 130 if FReloadPending then begin 131 FReloadPending := False; 132 Disassembler.Disassemble; 133 ReloadList; 134 end; 135 end; 136 129 137 procedure TFormDisassembler.Disassemble(Sender: TObject); 130 138 begin 131 Disassembler.Disassemble; 132 ReloadList; 139 Reload; 133 140 end; 134 141 … … 146 153 var 147 154 Item: TListItem; 148 DecodedInstruction: TDecodedInstruction;149 155 Index: Integer; 150 156 begin 151 157 Index := Disassembler.DecodedInstructions.SearchAddressIndex(Address); 152 158 if Index >= 0 then begin 153 DecodedInstruction := Disassembler.DecodedInstructions[Index];154 159 Item := ListView1.Items[Index]; 155 160 if Assigned(Item) then begin … … 172 177 end; 173 178 179 procedure TFormDisassembler.Reload; 180 begin 181 FReloadPending := True; 182 end; 183 174 184 function TFormDisassembler.GetCurrentAddress: Word; 175 185 begin
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/mzxemu/chrome/site/your_project_logo.png)