Changeset 5 for trunk/Forms


Ignore:
Timestamp:
Apr 18, 2026, 7:24:02 PM (4 weeks ago)
Author:
chronos
Message:
  • Added: Some I/O ports handling.
  • Added: Messages form for capturing error messages.
  • Added: Go to address action.
  • Added: Allow to view all used memory areas in Memory window.
  • Added: Allow to reset CPU execution.
  • Modified: Improved memory mapping for MZ-700 and MZ-800 modes.
  • Fixed: Focusing currently executed instruction position.
  • Fixed: Wrong order or 8-bit registers in 16-bit pair.
Location:
trunk/Forms
Files:
5 added
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Forms/FormCpu.pas

    r2 r5  
    2020  end;
    2121
     22
    2223implementation
    2324
  • trunk/Forms/FormDisassembler.lfm

    r2 r5  
    88  ClientWidth = 1056
    99  DesignTimePPI = 144
     10  LCLVersion = '4.6.0.0'
    1011  OnClose = FormClose
    1112  OnCreate = FormCreate
    1213  OnDestroy = FormDestroy
    1314  OnShow = FormShow
    14   LCLVersion = '2.2.6.0'
    1515  object ListView1: TListView
    1616    Left = 0
  • trunk/Forms/FormDisassembler.pas

    r2 r5  
    7171  Item: TListItem;
    7272  DecodedInstruction: TDecodedInstruction;
     73  Index: Integer;
    7374begin
    74   DecodedInstruction := Disassembler.DecodedInstructions.SearchAddress(Address);
    75   if Assigned(DecodedInstruction) then begin
    76     Item := ListView1.Items[Disassembler.DecodedInstructions.IndexOf(DecodedInstruction)];
     75  Index := Disassembler.DecodedInstructions.SearchAddressIndex(Address);
     76  if Index >= 0 then begin
     77    DecodedInstruction := Disassembler.DecodedInstructions[Index];
     78    Item := ListView1.Items[Index];
    7779    if Assigned(Item) then begin
    7880      Item.MakeVisible(False);
    79       Item.Focused := True;
    80       Item.Selected := True;
     81      //Item.Focused := False;
     82      //Item.Selected := False;
     83      //Item.Focused := True;
     84      //Item.Selected := True;
     85      ListView1.ItemIndex := Index;
     86      ListView1.Selected := ListView1.Items[Index];
     87      ListView1.Items[Index].Focused := True;
    8188    end;
    8289  end;
  • trunk/Forms/FormMain.lfm

    r2 r5  
    55  Width = 1061
    66  Caption = 'SHARP MZ-800 emulator'
    7   ClientHeight = 682
     7  ClientHeight = 716
    88  ClientWidth = 1061
    99  DesignTimePPI = 144
    1010  Menu = MainMenu1
     11  LCLVersion = '4.6.0.0'
    1112  OnClose = FormClose
    1213  OnCreate = FormCreate
    1314  OnDestroy = FormDestroy
    1415  OnShow = FormShow
    15   LCLVersion = '2.2.6.0'
    1616  object PanelLeft: TPanel
    1717    Left = 0
    18     Height = 682
     18    Height = 716
    1919    Top = 0
    2020    Width = 231
     
    2525  object PanelRight: TPanel
    2626    Left = 806
    27     Height = 682
     27    Height = 716
    2828    Top = 0
    2929    Width = 255
     
    3434  object Splitter1: TSplitter
    3535    Left = 231
    36     Height = 682
     36    Height = 716
    3737    Top = 0
    3838    Width = 8
     
    4040  object Splitter2: TSplitter
    4141    Left = 798
    42     Height = 682
     42    Height = 716
    4343    Top = 0
    4444    Width = 8
     
    4848  object PanelCenter: TPanel
    4949    Left = 239
    50     Height = 682
     50    Height = 716
    5151    Top = 0
    5252    Width = 559
    5353    Align = alClient
    5454    BevelOuter = bvNone
     55    ClientHeight = 716
     56    ClientWidth = 559
    5557    TabOrder = 4
     58    object PanelBottom: TPanel
     59      Left = 0
     60      Height = 164
     61      Top = 552
     62      Width = 559
     63      Align = alBottom
     64      BevelOuter = bvNone
     65      TabOrder = 0
     66    end
    5667  end
    5768  object MainMenu1: TMainMenu
    5869    Left = 216
    5970    Top = 64
    60     object MenuItem1: TMenuItem
     71    object MenuItemFile: TMenuItem
    6172      Caption = 'File'
    6273      object MenuItem4: TMenuItem
     
    6475      end
    6576    end
    66     object MenuItem5: TMenuItem
     77    object MenuItemEdit: TMenuItem
     78      Caption = 'Edit'
     79      object MenuItem1: TMenuItem
     80        Action = Core.AGoToAddress
     81      end
     82    end
     83    object MenuItemView: TMenuItem
    6784      Caption = 'View'
    6885      object MenuItem6: TMenuItem
     
    7996      end
    8097    end
    81     object MenuItem2: TMenuItem
     98    object MenuItemDebug: TMenuItem
    8299      Caption = 'Debug'
    83100      object MenuItem3: TMenuItem
     
    86103      object MenuItem8: TMenuItem
    87104        Action = Core.APause
     105      end
     106      object MenuItem2: TMenuItem
     107        Action = Core.AReset
     108      end
     109      object Separator1: TMenuItem
     110        Caption = '-'
    88111      end
    89112      object MenuItem13: TMenuItem
  • trunk/Forms/FormMain.pas

    r2 r5  
    1313    MainMenu1: TMainMenu;
    1414    MenuItem1: TMenuItem;
     15    MenuItem2: TMenuItem;
     16    Separator1: TMenuItem;
     17    MenuItemFile: TMenuItem;
    1518    MenuItem10: TMenuItem;
    1619    MenuItem11: TMenuItem;
     
    1922    MenuItem14: TMenuItem;
    2023    MenuItem15: TMenuItem;
    21     MenuItem2: TMenuItem;
     24    MenuItemEdit: TMenuItem;
     25    MenuItemDebug: TMenuItem;
    2226    MenuItem3: TMenuItem;
    2327    MenuItem4: TMenuItem;
    24     MenuItem5: TMenuItem;
     28    MenuItemView: TMenuItem;
    2529    MenuItem6: TMenuItem;
    2630    MenuItem7: TMenuItem;
    2731    MenuItem8: TMenuItem;
    2832    MenuItem9: TMenuItem;
     33    PanelBottom: TPanel;
    2934    PanelLeft: TPanel;
    3035    PanelRight: TPanel;
     
    6671  Core.Core.AViewScreen.Execute;
    6772  Core.Core.AViewDissssembler.Execute;
     73  Core.Core.AViewMessages.Execute;
    6874  DockForm(Core.Core.FormScreen, PanelCenter);
    6975  DockForm(Core.Core.FormCpu, PanelRight);
    7076  DockForm(Core.Core.FormDisassembler, PanelLeft);
     77  DockForm(Core.Core.FormMessages, PanelBottom);
    7178end;
    7279
  • trunk/Forms/FormMemory.lfm

    r2 r5  
    88  ClientWidth = 1150
    99  DesignTimePPI = 144
     10  LCLVersion = '4.6.0.0'
     11  OnCreate = FormCreate
     12  OnDestroy = FormDestroy
    1013  OnShow = FormShow
    11   LCLVersion = '2.2.6.0'
    1214  object ListViewMemory: TListView
    13     Left = 8
    14     Height = 850
    15     Top = 8
    16     Width = 1134
    17     Align = alClient
     15    Left = 0
     16    Height = 810
     17    Top = 48
     18    Width = 1142
     19    Align = alCustom
    1820    Anchors = [akTop, akLeft, akBottom]
    1921    BorderSpacing.Around = 8
     
    2931      item
    3032        Caption = 'ASCII'
    31         Width = 356
     33        Width = 364
    3234      end>
    3335    Font.Height = -20
     
    3941    OnData = ListViewMemoryData
    4042  end
     43  object Label1: TLabel
     44    Left = 8
     45    Height = 26
     46    Top = 8
     47    Width = 44
     48    Caption = 'Area:'
     49  end
     50  object ComboBoxArea: TComboBox
     51    Left = 104
     52    Height = 42
     53    Top = 0
     54    Width = 334
     55    ItemHeight = 0
     56    Style = csDropDownList
     57    TabOrder = 1
     58    OnSelect = ComboBoxAreaSelect
     59  end
    4160  object Timer1: TTimer
    4261    Interval = 500
  • trunk/Forms/FormMemory.pas

    r2 r5  
    55uses
    66  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, ExtCtrls,
    7   Memory;
     7  StdCtrls, Memory, Generics.Collections;
    88
    99type
     
    1313
    1414  TFormMemory = class(TForm)
     15    ComboBoxArea: TComboBox;
     16    Label1: TLabel;
    1517    ListViewMemory: TListView;
    1618    Timer1: TTimer;
     19    procedure ComboBoxAreaSelect(Sender: TObject);
     20    procedure FormCreate(Sender: TObject);
     21    procedure FormDestroy(Sender: TObject);
    1722    procedure FormShow(Sender: TObject);
    1823    procedure ListViewMemoryData(Sender: TObject; Item: TListItem);
    1924    procedure Timer1Timer(Sender: TObject);
    20   public
     25  private
    2126    Memory: TMemory;
    2227    Size: Integer;
     28  public
     29    Areas: TObjectList<TMemory>;
     30    procedure ReloadAreas;
    2331    procedure Reload;
    2432  end;
     
    6573procedure TFormMemory.FormShow(Sender: TObject);
    6674begin
     75  ReloadAreas;
     76  ComboBoxAreaSelect(nil);
     77end;
     78
     79procedure TFormMemory.FormCreate(Sender: TObject);
     80begin
     81  Areas := TObjectList<TMemory>.Create(False);
     82end;
     83
     84procedure TFormMemory.ComboBoxAreaSelect(Sender: TObject);
     85begin
     86  if ComboBoxArea.ItemIndex >= 0 then begin
     87    Memory := TMemory(ComboBoxArea.Items.Objects[ComboBoxArea.ItemIndex]);
     88    Size := Memory.Size;
     89  end else begin
     90    Memory := nil;
     91    Size := 0;
     92  end;
    6793  Reload;
     94end;
     95
     96procedure TFormMemory.FormDestroy(Sender: TObject);
     97begin
     98  FreeAndNil(Areas);
    6899end;
    69100
     
    73104end;
    74105
     106procedure TFormMemory.ReloadAreas;
     107var
     108  I: Integer;
     109begin
     110  ComboBoxArea.Items.BeginUpdate;
     111  try
     112    while ComboBoxArea.Items.Count > Areas.Count do
     113      ComboBoxArea.Items.Delete(ComboBoxArea.Items.Count - 1);
     114    while ComboBoxArea.Items.Count < Areas.Count do
     115      ComboBoxArea.Items.Add('');
     116    for I := 0 to Areas.Count - 1 do begin
     117      ComboBoxArea.Items.Strings[I] := Areas[I].Title;
     118      ComboBoxArea.Items.Objects[I] := Areas[I];
     119    end;
     120    if (ComboBoxArea.ItemIndex = -1) and (ComboBoxArea.Items.Count > 0) then
     121      ComboBoxArea.ItemIndex := 0;
     122  finally
     123    ComboBoxArea.Items.EndUpdate;
     124  end;
     125end;
     126
    75127end.
    76128
Note: See TracChangeset for help on using the changeset viewer.