source: branches/bigint/Forms/FormMain.pas

Last change on this file was 12, checked in by chronos, 2 months ago
  • Added: More CPU instructions.
  • Added: Mouse device.
File size: 1.8 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 function MouseGetPosition: TPoint;
21 public
22 SubFormDisassembler: TFormDisassembler;
23 SubFormMemory: TFormMemory;
24 Machine: TMachine;
25 end;
26
27var
28 FormMain: TFormMain;
29
30
31implementation
32
33{$R *.lfm}
34
35{ TFormMain }
36
37procedure TFormMain.FormCreate(Sender: TObject);
38begin
39 Machine := TMachine.Create;
40 Machine.Console.OnWrite := ConsoleWrite;
41 Machine.Mouse.OnGetPosition := MouseGetPosition;
42end;
43
44procedure TFormMain.FormDestroy(Sender: TObject);
45begin
46 FreeAndNil(SubFormMemory);
47 FreeAndNil(SubFormDisassembler);
48 FreeAndNil(Machine);
49end;
50
51procedure TFormMain.FormShow(Sender: TObject);
52var
53 Assembler: TAssembler;
54 Lines: TStringList;
55begin
56 Lines := TStringList.Create;
57 Lines.LoadFromFile('Example.asm');
58
59 Assembler := TAssembler.Create;
60 with Assembler do begin
61 Compile(Lines.Text);
62 Machine.Memory.CopyFrom(Memory, 0, 0, Memory.Size);
63 Free;
64 end;
65
66 Lines.Free;
67
68 Machine.Run;
69
70 SubFormDisassembler := TFormDisassembler.Create(nil);
71 SubFormDisassembler.Disassembler.Memory := Machine.Memory;
72 SubFormDisassembler.Show;
73
74 SubFormMemory := TFormMemory.Create(nil);
75 SubFormMemory.Memory := Machine.Memory;
76 SubFormMemory.Show;
77end;
78
79procedure TFormMain.ConsoleWrite(Sender: TObject);
80begin
81 Memo1.Lines.Text := Memo1.Lines.Text + Machine.Console.OutputBuffer;
82 Machine.Console.OutputBuffer := '';
83end;
84
85function TFormMain.MouseGetPosition: TPoint;
86begin
87 Result := Mouse.CursorPos;
88end;
89
90end.
91
Note: See TracBrowser for help on using the repository browser.