Changeset 13 for trunk/Forms
- Timestamp:
- Apr 21, 2026, 2:55:51 PM (3 weeks ago)
- Location:
- trunk/Forms
- Files:
-
- 2 added
- 1 deleted
- 9 edited
-
Base.pas (deleted)
-
FormCallStack.lfm (added)
-
FormCallStack.pas (added)
-
FormCpu.lfm (modified) (2 diffs)
-
FormDisassembler.lfm (modified) (1 diff)
-
FormDisassembler.pas (modified) (12 diffs)
-
FormMain.lfm (modified) (2 diffs)
-
FormMain.pas (modified) (2 diffs)
-
FormMemory.lfm (modified) (1 diff)
-
FormMemory.pas (modified) (7 diffs)
-
FormMessages.lfm (modified) (2 diffs)
-
FormMessages.pas (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Forms/FormCpu.lfm
r11 r13 1 1 object FormCpu: TFormCpu 2 2 Left = 834 3 Height = 6 573 Height = 610 4 4 Top = 501 5 Width = 2745 Width = 302 6 6 Caption = 'CPU' 7 ClientHeight = 6 578 ClientWidth = 2747 ClientHeight = 610 8 ClientWidth = 302 9 9 DesignTimePPI = 144 10 10 LCLVersion = '4.6.0.0' 11 11 object GroupBox1: TGroupBox 12 Left = 2212 Left = 8 13 13 Height = 546 14 14 Top = 22 15 Width = 2 3015 Width = 256 16 16 Caption = 'Registers' 17 17 ClientHeight = 519 18 ClientWidth = 2 2818 ClientWidth = 254 19 19 TabOrder = 0 20 20 object ValueListEditor1: TValueListEditor … … 22 22 Height = 499 23 23 Top = 5 24 Width = 19224 Width = 218 25 25 Anchors = [akTop, akLeft, akRight, akBottom] 26 DefaultColWidth = 100 26 27 RowCount = 2 27 28 TabOrder = 0 28 29 ColWidths = ( 29 9630 9430 100 31 116 31 32 ) 32 33 end -
trunk/Forms/FormDisassembler.lfm
r12 r13 65 65 end 66 66 end 67 object Timer1: TTimer 68 Interval = 100 69 OnTimer = Timer1Timer 70 Left = 568 71 Top = 352 72 end 67 73 end -
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 -
trunk/Forms/FormMain.lfm
r6 r13 65 65 TabOrder = 0 66 66 end 67 object PanelCallStack: TPanel 68 Left = 0 69 Height = 280 70 Top = 272 71 Width = 559 72 Align = alBottom 73 BevelOuter = bvNone 74 TabOrder = 1 75 end 67 76 end 68 77 object MainMenu1: TMainMenu … … 94 103 object MenuItem15: TMenuItem 95 104 Action = Core.AViewScreen 105 end 106 object MenuItem16: TMenuItem 107 Action = Core.AViewCallStack 108 end 109 object MenuItem17: TMenuItem 110 Action = Core.AViewMessages 96 111 end 97 112 end -
trunk/Forms/FormMain.pas
r6 r13 13 13 MainMenu1: TMainMenu; 14 14 MenuItem1: TMenuItem; 15 MenuItem16: TMenuItem; 16 MenuItem17: TMenuItem; 15 17 MenuItem2: TMenuItem; 16 18 MenuItem5: TMenuItem; 17 19 MenuItemTools: TMenuItem; 20 PanelCallStack: TPanel; 18 21 Separator1: TMenuItem; 19 22 MenuItemFile: TMenuItem; … … 74 77 Core.Core.AViewScreen.Execute; 75 78 Core.Core.AViewDissssembler.Execute; 79 Core.Core.AViewCallStack.Execute; 76 80 DockForm(Core.Core.FormScreen, PanelCenter); 77 81 DockForm(Core.Core.FormCpu, PanelRight); 78 82 DockForm(Core.Core.FormDisassembler, PanelLeft); 79 83 DockForm(Core.Core.FormMessages, PanelBottom); 84 DockForm(Core.Core.FormCallStack, PanelCallStack); 80 85 end; 81 86 -
trunk/Forms/FormMemory.lfm
r5 r13 59 59 end 60 60 object Timer1: TTimer 61 Interval = 50061 Interval = 100 62 62 OnTimer = Timer1Timer 63 63 Left = 469 -
trunk/Forms/FormMemory.pas
r5 r13 5 5 uses 6 6 Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, ExtCtrls, 7 StdCtrls, Memory , Generics.Collections;7 StdCtrls, MemoryTypes, Generics.Collections; 8 8 9 9 type … … 24 24 procedure Timer1Timer(Sender: TObject); 25 25 private 26 Memory: TMemory; 27 Size: Integer; 26 FReloadPending: Boolean; 27 FMemory: TMemory; 28 FSize: Integer; 28 29 public 29 30 Areas: TObjectList<TMemory>; … … 45 46 procedure TFormMemory.Reload; 46 47 begin 47 ListViewMemory.Items.Count := Size div ItemsPerLine;48 ListViewMemory.Items.Count := FSize div ItemsPerLine; 48 49 ListViewMemory.Refresh; 49 50 end; … … 56 57 One: Byte; 57 58 begin 58 if Item.Index < Size div ItemsPerLine then begin59 if Item.Index < FSize div ItemsPerLine then begin 59 60 Line := ''; 60 61 Text := ''; 61 62 for I := 0 to ItemsPerLine - 1 do begin 62 One := Memory.Read(Item.Index * ItemsPerLine + I);63 One := FMemory.Read(Item.Index * ItemsPerLine + I); 63 64 Line := Line + IntToHex(One, 2) + ' '; 64 65 if One >= 32 then Text := Text + Char(One) … … 75 76 ReloadAreas; 76 77 ComboBoxAreaSelect(nil); 78 FReloadPending := True; 77 79 end; 78 80 … … 85 87 begin 86 88 if ComboBoxArea.ItemIndex >= 0 then begin 87 Memory := TMemory(ComboBoxArea.Items.Objects[ComboBoxArea.ItemIndex]);88 Size :=Memory.Size;89 FMemory := TMemory(ComboBoxArea.Items.Objects[ComboBoxArea.ItemIndex]); 90 FSize := FMemory.Size; 89 91 end else begin 90 Memory := nil;91 Size := 0;92 FMemory := nil; 93 FSize := 0; 92 94 end; 93 95 Reload; … … 101 103 procedure TFormMemory.Timer1Timer(Sender: TObject); 102 104 begin 103 if Visible then Reload; 105 if FReloadPending then begin 106 FReloadPending := False; 107 Reload; 108 end; 104 109 end; 105 110 -
trunk/Forms/FormMessages.lfm
r5 r13 9 9 DesignTimePPI = 144 10 10 LCLVersion = '4.6.0.0' 11 OnCreate = FormCreate 12 OnDestroy = FormDestroy 11 13 object Memo1: TMemo 12 14 Left = 8 … … 20 22 TabOrder = 0 21 23 end 24 object Timer1: TTimer 25 Interval = 100 26 OnTimer = Timer1Timer 27 Left = 357 28 Top = 284 29 end 22 30 end -
trunk/Forms/FormMessages.pas
r5 r13 4 4 5 5 uses 6 Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls; 6 Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls, 7 Generics.Collections; 7 8 8 9 type 10 TMessage = class 11 Text: string; 12 end; 13 14 { TMessages } 15 16 TMessages = class(TObjectList<TMessage>) 17 function AddNew(Text: string): TMessage; 18 end; 9 19 10 20 { TFormMessages } … … 12 22 TFormMessages = class(TForm) 13 23 Memo1: TMemo; 24 Timer1: TTimer; 25 procedure FormCreate(Sender: TObject); 26 procedure FormDestroy(Sender: TObject); 27 procedure Timer1Timer(Sender: TObject); 14 28 private 15 29 FMessages: TMessages; 30 FReloadPending: Boolean; 16 31 public 17 32 procedure AddMessage(Text: string); … … 23 38 {$R *.lfm} 24 39 40 { TMessages } 41 42 function TMessages.AddNew(Text: string): TMessage; 43 begin 44 Result := TMessage.Create; 45 Result.Text := Text; 46 Add(Result); 47 end; 48 25 49 { TFormMessages } 50 51 procedure TFormMessages.Timer1Timer(Sender: TObject); 52 var 53 I: Integer; 54 begin 55 if FReloadPending then begin 56 FReloadPending := False; 57 Memo1.Lines.BeginUpdate; 58 Memo1.Lines.Clear; 59 for I := 0 to FMessages.Count - 1 do 60 Memo1.Lines.Add(FMessages[I].Text); 61 Memo1.Lines.EndUpdate; 62 end; 63 end; 64 65 procedure TFormMessages.FormCreate(Sender: TObject); 66 begin 67 FMessages := TMessages.Create; 68 end; 69 70 procedure TFormMessages.FormDestroy(Sender: TObject); 71 begin 72 FreeAndNil(FMessages); 73 end; 26 74 27 75 procedure TFormMessages.AddMessage(Text: string); 28 76 begin 29 Memo1.Lines.Add(Text); 77 FMessages.AddNew(Text); 78 FReloadPending := True; 30 79 end; 31 80
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)