Changeset 14 for trunk/Core.pas
- Timestamp:
- Apr 21, 2026, 3:52:53 PM (6 days ago)
- File:
-
- 1 edited
-
trunk/Core.pas (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Core.pas
r13 r14 85 85 { TCore } 86 86 87 procedure TCore.AExitExecute(Sender: TObject); 88 begin 89 Application.Terminate; 90 end; 91 92 procedure TCore.AGoToAddressExecute(Sender: TObject); 93 var 94 FormGoToAddress: TFormGoToAddress; 95 Address: LongInt; 96 begin 97 FormGoToAddress := TFormGoToAddress.Create(nil); 98 try 99 if FormGoToAddress.ShowModal = mrOk then begin 100 if TryStrToInt(FormGoToAddress.EditAddress.Text, Address) then 101 FormDisassembler.SelectAddress(Address); 102 end; 103 finally 104 FormGoToAddress.Free; 105 end; 106 end; 107 108 procedure TCore.AInstructionSetGenExecute(Sender: TObject); 109 var 110 InstructionSetGen: TInstructionSetGen; 111 begin 112 InstructionSetGen := TInstructionSetGen.Create; 113 InstructionSetGen.Generate('Z80/InstructionSet.html'); 114 InstructionSetGen.Free; 115 end; 116 117 procedure TCore.APauseExecute(Sender: TObject); 118 begin 119 SharpMz800.Cpu.Paused := True; 120 UpdateInterface; 121 end; 122 123 procedure TCore.AResetExecute(Sender: TObject); 124 var 125 IsRunning: Boolean; 126 IsPaused: Boolean; 127 begin 128 IsRunning := SharpMz800.Cpu.Running; 129 IsPaused := SharpMz800.Cpu.Paused; 130 SharpMz800.Cpu.Running := False; 131 SharpMz800.Cpu.Reset; 132 Debugger.Reset; 133 if Assigned(FormMessages) then FormMessages.Messages.Clear; 134 SharpMz800.Cpu.Running := IsRunning; 135 SharpMz800.Cpu.Paused := IsPaused; 136 UpdateInterface; 137 end; 138 139 procedure TCore.ARunExecute(Sender: TObject); 140 begin 141 SharpMz800.Cpu.Running := True; 142 UpdateInterface; 143 end; 144 145 procedure TCore.ARunToCursorExecute(Sender: TObject); 146 begin 147 Debugger.DebugMode := dmStopAddress; 148 Debugger.DebugStopAddress := FormDisassembler.GetCurrentAddress; 149 Debugger.Cpu.Running := True; 150 UpdateInterface; 151 end; 152 153 procedure TCore.AStepInExecute(Sender: TObject); 154 begin 155 Debugger.DebugMode := dmStepIn; 156 Debugger.Cpu.Running := True; 157 UpdateInterface; 158 end; 159 160 procedure TCore.AStepOutExecute(Sender: TObject); 161 begin 162 Debugger.DebugMode := dmStepOut; 163 Debugger.Cpu.Running := True; 164 UpdateInterface; 165 end; 166 167 procedure TCore.AStepOverExecute(Sender: TObject); 168 begin 169 Debugger.DebugMode := dmStepOver; 170 Debugger.Cpu.Running := True; 171 UpdateInterface; 172 end; 173 174 procedure TCore.AStopExecute(Sender: TObject); 175 begin 176 SharpMz800.Cpu.Running := False; 177 UpdateInterface; 178 end; 179 180 procedure TCore.AViewCallStackExecute(Sender: TObject); 181 begin 182 if not Assigned(FormCallStack) then begin 183 FormCallStack := TFormCallStack.Create(nil); 184 FormCallStack.Debugger := Debugger; 185 end; 186 FormCallStack.Show; 187 end; 188 189 procedure TCore.AViewCpuExecute(Sender: TObject); 190 begin 191 if not Assigned(FormCpu) then begin 192 FormCpu := TFormCpu.Create(nil); 193 FormCpu.Cpu := SharpMz800.Cpu; 194 end; 195 FormCpu.Show; 196 end; 197 198 procedure TCore.AViewDissssemblerExecute(Sender: TObject); 199 begin 200 if not Assigned(FormDisassembler) then begin 201 FormDisassembler := TFormDisassembler.Create(nil); 202 FormDisassembler.OnChangePC := DoChangePC; 203 FormDisassembler.Debugger := Debugger; 204 FormDisassembler.Disassembler := Disassembler; 205 SharpMz800.OnMemoryMappingChange := FormDisassembler.Disassemble; 206 end; 207 FormDisassembler.Show; 208 FormMessages.AddMessage(FormDisassembler.Disassembler.InstructionSet.Check(SharpMz800.Cpu.Instructions)); 209 end; 210 211 procedure TCore.AViewMemoryExecute(Sender: TObject); 212 begin 213 if not Assigned(FormMemory) then begin 214 FormMemory := TFormMemory.Create(nil); 215 FormMemory.Areas.Add(SharpMz800.Memory); 216 FormMemory.Areas.Add(SharpMz800.BaseRom); 217 FormMemory.Areas.Add(SharpMz800.ExtendedRom); 218 FormMemory.Areas.Add(SharpMz800.VideoRam); 219 FormMemory.Areas.Add(SharpMz800.CharacterRom); 220 FormMemory.Areas.Add(SharpMz800.MappedIO); 221 end; 222 FormMemory.Show; 223 end; 224 225 procedure TCore.AViewMessagesExecute(Sender: TObject); 226 begin 227 if not Assigned(FormMessages) then begin 228 FormMessages := TFormMessages.Create(nil); 229 SharpMz800.OnMessage := FormMessages.AddMessage; 230 end; 231 FormMessages.Show; 232 end; 233 234 procedure TCore.AViewScreenExecute(Sender: TObject); 235 begin 236 if not Assigned(FormScreen) then begin 237 FormScreen := TFormScreen.Create(nil); 238 end; 239 FormScreen.Show; 240 end; 241 87 242 procedure TCore.DataModuleCreate(Sender: TObject); 88 243 begin … … 95 250 Debugger.OnChange := DebuggerChange; 96 251 Debugger.Disassembler := Disassembler; 97 // SharpMz800.PowerOn;98 252 FormMain := TFormMain.Create(nil); 99 253 FormMain.Show; 100 254 end; 101 255 102 procedure TCore.AExitExecute(Sender: TObject); 103 begin 104 Application.Terminate; 105 end; 106 107 procedure TCore.AGoToAddressExecute(Sender: TObject); 108 var 109 FormGoToAddress: TFormGoToAddress; 110 Address: LongInt; 111 begin 112 FormGoToAddress := TFormGoToAddress.Create(nil); 113 try 114 if FormGoToAddress.ShowModal = mrOk then begin 115 if TryStrToInt(FormGoToAddress.EditAddress.Text, Address) then 116 FormDisassembler.SelectAddress(Address); 117 end; 118 finally 119 FormGoToAddress.Free; 120 end; 121 end; 122 123 procedure TCore.AInstructionSetGenExecute(Sender: TObject); 124 var 125 InstructionSetGen: TInstructionSetGen; 126 begin 127 InstructionSetGen := TInstructionSetGen.Create; 128 InstructionSetGen.Generate('Z80/InstructionSet.html'); 129 InstructionSetGen.Free; 130 end; 131 132 procedure TCore.APauseExecute(Sender: TObject); 256 procedure TCore.DataModuleDestroy(Sender: TObject); 133 257 begin 134 258 SharpMz800.Cpu.Running := False; 135 UpdateInterface;136 end;137 138 procedure TCore.AResetExecute(Sender: TObject);139 var140 IsRunning: Boolean;141 begin142 IsRunning := SharpMz800.Cpu.Running;143 SharpMz800.Cpu.Running := False;144 SharpMz800.Cpu.Reset;145 SharpMz800.Cpu.Running := IsRunning;146 UpdateInterface;147 end;148 149 procedure TCore.ARunExecute(Sender: TObject);150 begin151 SharpMz800.Cpu.Running := True;152 UpdateInterface;153 end;154 155 procedure TCore.ARunToCursorExecute(Sender: TObject);156 begin157 Debugger.DebugMode := dmStopAddress;158 Debugger.DebugStopAddress := FormDisassembler.GetCurrentAddress;159 Debugger.Cpu.Running := True;160 UpdateInterface;161 end;162 163 procedure TCore.AStepInExecute(Sender: TObject);164 begin165 Debugger.DebugMode := dmStepIn;166 Debugger.Cpu.Running := True;167 UpdateInterface;168 end;169 170 procedure TCore.AStepOutExecute(Sender: TObject);171 begin172 Debugger.DebugMode := dmStepOut;173 Debugger.Cpu.Running := True;174 UpdateInterface;175 end;176 177 procedure TCore.AStepOverExecute(Sender: TObject);178 begin179 Debugger.DebugMode := dmStepOver;180 Debugger.Cpu.Running := True;181 UpdateInterface;182 end;183 184 procedure TCore.AStopExecute(Sender: TObject);185 begin186 SharpMz800.Cpu.Running := False;187 SharpMz800.Cpu.Reset;188 UpdateInterface;189 end;190 191 procedure TCore.AViewCallStackExecute(Sender: TObject);192 begin193 if not Assigned(FormCallStack) then begin194 FormCallStack := TFormCallStack.Create(nil);195 FormCallStack.Debugger := Debugger;196 end;197 FormCallStack.Show;198 end;199 200 procedure TCore.AViewCpuExecute(Sender: TObject);201 begin202 if not Assigned(FormCpu) then begin203 FormCpu := TFormCpu.Create(nil);204 FormCpu.Cpu := SharpMz800.Cpu;205 end;206 FormCpu.Show;207 end;208 209 procedure TCore.AViewDissssemblerExecute(Sender: TObject);210 begin211 if not Assigned(FormDisassembler) then begin212 FormDisassembler := TFormDisassembler.Create(nil);213 FormDisassembler.OnChangePC := DoChangePC;214 FormDisassembler.Debugger := Debugger;215 FormDisassembler.Disassembler := Disassembler;216 SharpMz800.OnMemoryMappingChange := FormDisassembler.Disassemble;217 end;218 FormDisassembler.Show;219 FormMessages.AddMessage(FormDisassembler.Disassembler.InstructionSet.Check(SharpMz800.Cpu.Instructions));220 end;221 222 procedure TCore.AViewMemoryExecute(Sender: TObject);223 begin224 if not Assigned(FormMemory) then begin225 FormMemory := TFormMemory.Create(nil);226 FormMemory.Areas.Add(SharpMz800.Memory);227 FormMemory.Areas.Add(SharpMz800.BaseRom);228 FormMemory.Areas.Add(SharpMz800.ExtendedRom);229 FormMemory.Areas.Add(SharpMz800.VideoRam);230 FormMemory.Areas.Add(SharpMz800.CharacterRom);231 FormMemory.Areas.Add(SharpMz800.MappedIO);232 end;233 FormMemory.Show;234 end;235 236 procedure TCore.AViewMessagesExecute(Sender: TObject);237 begin238 if not Assigned(FormMessages) then begin239 FormMessages := TFormMessages.Create(nil);240 SharpMz800.OnMessage := FormMessages.AddMessage;241 end;242 FormMessages.Show;243 end;244 245 procedure TCore.AViewScreenExecute(Sender: TObject);246 begin247 if not Assigned(FormScreen) then begin248 FormScreen := TFormScreen.Create(nil);249 end;250 FormScreen.Show;251 end;252 253 procedure TCore.DataModuleDestroy(Sender: TObject);254 begin255 259 if Assigned(FormCpu) then FreeAndNil(FormCpu); 256 260 if Assigned(FormDisassembler) then FreeAndNil(FormDisassembler); … … 292 296 procedure TCore.UpdateInterface; 293 297 begin 294 ARun.Enabled := not SharpMz800.Cpu.Running ;295 AStop.Enabled := SharpMz800.Cpu.Running ;296 APause.Enabled := SharpMz800.Cpu.Running ;297 AStepIn.Enabled := not SharpMz800.Cpu.Running ;298 AStepOut.Enabled := not SharpMz800.Cpu.Running ;299 AStepOver.Enabled := not SharpMz800.Cpu.Running ;300 ARunToCursor.Enabled := not SharpMz800.Cpu.Running ;298 ARun.Enabled := not SharpMz800.Cpu.Running or (SharpMz800.Cpu.Running and SharpMz800.Cpu.Paused); 299 AStop.Enabled := SharpMz800.Cpu.Running and not SharpMz800.Cpu.Paused; 300 APause.Enabled := SharpMz800.Cpu.Running and not SharpMz800.Cpu.Paused; 301 AStepIn.Enabled := not SharpMz800.Cpu.Running or (SharpMz800.Cpu.Running and SharpMz800.Cpu.Paused); 302 AStepOut.Enabled := not SharpMz800.Cpu.Running or (SharpMz800.Cpu.Running and SharpMz800.Cpu.Paused); 303 AStepOver.Enabled := not SharpMz800.Cpu.Running or (SharpMz800.Cpu.Running and SharpMz800.Cpu.Paused); 304 ARunToCursor.Enabled := not SharpMz800.Cpu.Running or (SharpMz800.Cpu.Running and SharpMz800.Cpu.Paused); 301 305 end; 302 306
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)