source: branches/bigint/Forms/FormMain.pas

Last change on this file was 8, checked in by chronos, 3 months ago
  • Added: Common package.
  • Added: Memory form to show content of memory.
File size: 1.6 KB
Line 
1unit FormMain;
2
3interface
4
5uses
6 Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, Machine,
7 Assembler, FormDisassembler, FormEx, FormMemory;
8
9type
10
11 { TFormMain }
12
13 TFormMain = class(TFormEx)
14 Memo1: TMemo;
15 procedure FormCreate(Sender: TObject);
16 procedure FormDestroy(Sender: TObject);
17 procedure FormShow(Sender: TObject);
18 private
19 procedure ConsoleWrite(Sender: TObject);
20 public
21 SubFormDisassembler: TFormDisassembler;
22 SubFormMemory: TFormMemory;
23 Machine: TMachine;
24 end;
25
26var
27 FormMain: TFormMain;
28
29
30implementation
31
32{$R *.lfm}
33
34{ TFormMain }
35
36procedure TFormMain.FormCreate(Sender: TObject);
37begin
38 Machine := TMachine.Create;
39 Machine.Console.OnWrite := ConsoleWrite;
40end;
41
42procedure TFormMain.FormDestroy(Sender: TObject);
43begin
44 FreeAndNil(SubFormMemory);
45 FreeAndNil(SubFormDisassembler);
46 FreeAndNil(Machine);
47end;
48
49procedure TFormMain.FormShow(Sender: TObject);
50var
51 Assembler: TAssembler;
52 Lines: TStringList;
53begin
54 Lines := TStringList.Create;
55 Lines.LoadFromFile('Example.asm');
56
57 Assembler := TAssembler.Create;
58 with Assembler do begin
59 Compile(Lines.Text);
60 Machine.Memory.CopyFrom(Memory, 0, 0, Memory.Size);
61 Free;
62 end;
63
64 Lines.Free;
65
66 Machine.Run;
67
68 SubFormDisassembler := TFormDisassembler.Create(nil);
69 SubFormDisassembler.Disassembler.Memory := Machine.Memory;
70 SubFormDisassembler.Show;
71
72 SubFormMemory := TFormMemory.Create(nil);
73 SubFormMemory.Memory := Machine.Memory;
74 SubFormMemory.Show;
75end;
76
77procedure TFormMain.ConsoleWrite(Sender: TObject);
78begin
79 Memo1.Lines.Text := Memo1.Lines.Text + Machine.Console.OutputBuffer;
80 Machine.Console.OutputBuffer := '';
81end;
82
83end.
84
Note: See TracBrowser for help on using the repository browser.