-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMainWindow.axaml
184 lines (182 loc) · 10.6 KB
/
MainWindow.axaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:emul="clr-namespace:Nema"
mc:Ignorable="d"
Width="1400"
Height="750"
MinWidth="1300"
MinHeight="700"
x:Class="Nema.MainWindow"
Title="NEMA-8">
<DockPanel>
<Menu DockPanel.Dock="Top">
<MenuItem Header="_File">
<MenuItem Header="_Open Ctrl+O" Command="{Binding _loadFile}" HotKey="Ctrl+O" />
<MenuItem Header="_Open Ctrl+N" Command="{Binding _newFile}" HotKey="Ctrl+N" />
<MenuItem Header="_Save Ctrl+S" Command="{Binding _saveFile}"
CommandParameter="False" HotKey="Ctrl+S" />
<MenuItem Header="Save _as Ctrl+Shift+S" Command="{Binding _saveFile}"
CommandParameter="True" HotKey="Ctrl+Shift+S" />
<Separator />
<MenuItem Header="_Load ROM Ctrl+Shift+G"
ToolTip.Tip="Load data from ROM file to memory" Command="{Binding _loadRom}"
HotKey="Ctrl+Shift+G" />
<MenuItem Header="_Dump ROM Ctrl+Shift+D"
ToolTip.Tip="Dump current contents of ROM into a file"
Command="{Binding _dumpRom}" HotKey="Ctrl+Shift+D" />
<Separator />
<MenuItem Header="_Dump RAM"
ToolTip.Tip="Dump current contents of RAM into a file for viewing in hex editors"
Command="{Binding _dumpRam}" />
<Separator />
<MenuItem Header="_Quit" Click="_onExitRequested" />
</MenuItem>
<MenuItem Header="_Emulation">
<MenuItem Header="_Run F5" ToolTip.Tip="Assembles and runs code"
Command="{Binding _run}" HotKey="F5" />
<MenuItem Header="_Step Ctrl+F5" ToolTip.Tip="Steps through the code"
Command="{Binding _step}" HotKey="Ctrl+F5" />
<MenuItem Header="_Assemble Ctrl+Shift+B" ToolTip.Tip="Assembles the code"
Command="{Binding _assemble}" HotKey="Ctrl+Shift+B" />
<MenuItem Header="_Stop F6" ToolTip.Tip="Stops the execution"
Command="{Binding _stopEmulation}" HotKey="F6" />
<MenuItem Header="_Clear ROM Ctrl+F7" ToolTip.Tip="Clears ROM"
Command="{Binding _clearRom}" HotKey="Ctrl+F7" />
</MenuItem>
<MenuItem Header="_Help F1" Command="{Binding _displayHelp}" HotKey="F1" />
<MenuItem Header="_Settings F2" Command="{Binding _displaySettings}" HotKey="F2" />
</Menu>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<StackPanel MaxWidth="500">
<Border BorderBrush="LightGray" BorderThickness="2">
<ScrollViewer MaxHeight="600">
<DockPanel>
<TextBlock x:Name="LineNumberBox"
DockPanel.Dock="Left"
HorizontalAlignment="Left"
Margin="2 6 2 2"
Text="{Binding LineNumberText}"
MinWidth="10"
FontSize="16" />
<TextBox DockPanel.Dock="Right"
Name="CodeInputBox"
TextWrapping="Wrap"
AcceptsReturn="True"
MinHeight="450"
MinWidth="200"
FontSize="16"
Text="{Binding CodeText}" />
</DockPanel>
</ScrollViewer>
</Border>
<DockPanel>
<TextBlock DockPanel.Dock="Top">Ошибки: </TextBlock>
</DockPanel>
<!-- List for displaying compilation, syntax, etc. errors-->
<ScrollViewer DockPanel.Dock="Top" Height="100" MaxHeight="100" Margin="5"
VerticalScrollBarVisibility="Visible" HorizontalScrollBarVisibility="Visible">
<TextBlock x:Name="ErrorMsgBox" />
</ScrollViewer>
</StackPanel>
<DockPanel>
<DockPanel DockPanel.Dock="Top">
<DockPanel DockPanel.Dock="Left">
<StackPanel Orientation="Horizontal" DockPanel.Dock="Top" Spacing="5">
<StackPanel>
<TextBlock>A</TextBlock>
<TextBlock Text="{Binding Registers.A ,StringFormat= {}{0:X2}}"></TextBlock>
</StackPanel>
<StackPanel>
<TextBlock>B</TextBlock>
<TextBlock Text="{Binding Registers.B ,StringFormat= {}{0:X2}}"></TextBlock>
</StackPanel>
<StackPanel>
<TextBlock>C</TextBlock>
<TextBlock Text="{Binding Registers.C ,StringFormat= {}{0:X2}}"></TextBlock>
</StackPanel>
<StackPanel>
<TextBlock>D</TextBlock>
<TextBlock Text="{Binding Registers.D ,StringFormat= {}{0:X2}}"></TextBlock>
</StackPanel>
<StackPanel>
<TextBlock>E</TextBlock>
<TextBlock Text="{Binding Registers.E ,StringFormat= {}{0:X2}}"></TextBlock>
</StackPanel>
<StackPanel>
<TextBlock>H</TextBlock>
<TextBlock Text="{Binding Registers.H ,StringFormat= {}{0:X2}}"></TextBlock>
</StackPanel>
<StackPanel>
<TextBlock>L</TextBlock>
<TextBlock Text="{Binding Registers.L ,StringFormat= {}{0:X2}}"></TextBlock>
</StackPanel>
</StackPanel>
<StackPanel Orientation="Horizontal" DockPanel.Dock="Top" Spacing="5">
<StackPanel>
<TextBlock>S</TextBlock>
<TextBlock Text="{Binding Flags.S ,StringFormat= {}{0:X2}}"></TextBlock>
</StackPanel>
<StackPanel>
<TextBlock>Z</TextBlock>
<TextBlock Text="{Binding Flags.Z ,StringFormat= {}{0:X2}}"></TextBlock>
</StackPanel>
<StackPanel>
<TextBlock>Ac</TextBlock>
<TextBlock Text="{Binding Flags.Ac ,StringFormat= {}{0:X2}}"></TextBlock>
</StackPanel>
<StackPanel>
<TextBlock>P</TextBlock>
<TextBlock Text="{Binding Flags.P ,StringFormat= {}{0:X2}}"></TextBlock>
</StackPanel>
<StackPanel>
<TextBlock>C</TextBlock>
<TextBlock Text="{Binding Flags.C ,StringFormat= {}{0:X2}}"></TextBlock>
</StackPanel>
</StackPanel>
</DockPanel>
<DockPanel DockPanel.Dock="Right">
<ItemsControl Items="{Binding Output}" FontSize="32">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" Spacing="1" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
<CheckBox DockPanel.Dock="Left" IsChecked="{Binding DisplayOutAsText}">Display
out as ASCII text</CheckBox>
<TextBlock Name="ProgramCounterLabel" Text="{Binding ProgramCounter}" />
</DockPanel>
</DockPanel>
<TextBlock DockPanel.Dock="Top">Input</TextBlock>
<emul:InputPorts DockPanel.Dock="Top" Name="InputTable" />
<TextBlock DockPanel.Dock="Top">Memory</TextBlock>
<!-- Using data grid to dispaly memory cells-->
<DataGrid FrozenColumnCount="1" Name="MemoryGrid" HorizontalAlignment="Stretch"
DockPanel.Dock="Top" CanUserSortColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Адрес" Binding="{Binding Address}"
IsReadOnly="True" />
<DataGridTextColumn Header="0" Binding="{ Binding X0 }" />
<DataGridTextColumn Header="1" Binding="{ Binding X1 }" />
<DataGridTextColumn Header="2" Binding="{ Binding X2 }" />
<DataGridTextColumn Header="3" Binding="{ Binding X3 }" />
<DataGridTextColumn Header="4" Binding="{ Binding X4 }" />
<DataGridTextColumn Header="5" Binding="{ Binding X5 }" />
<DataGridTextColumn Header="6" Binding="{ Binding X6 }" />
<DataGridTextColumn Header="7" Binding="{ Binding X7 }" />
<DataGridTextColumn Header="8" Binding="{ Binding X8 }" />
<DataGridTextColumn Header="9" Binding="{ Binding X9 }" />
<DataGridTextColumn Header="A" Binding="{ Binding XA }" />
<DataGridTextColumn Header="B" Binding="{ Binding XB }" />
<DataGridTextColumn Header="C" Binding="{ Binding XC }" />
<DataGridTextColumn Header="D" Binding="{ Binding XD }" />
<DataGridTextColumn Header="E" Binding="{ Binding XE }" />
<DataGridTextColumn Header="F" Binding="{ Binding XF }" />
</DataGrid.Columns>
</DataGrid>
</DockPanel>
</StackPanel>
</DockPanel>
</Window>