Compare commits

...

5 Commits
1.0 ... master

Author SHA1 Message Date
April Ayres-Griffiths
719868a94c Merge branch 'master' of github.com:paleotronic/microm8-gui 2019-05-26 20:43:50 +10:00
April Ayres-Griffiths
7c7795de3b Update profiles / add irata to menu 2019-05-26 20:43:24 +10:00
Melody Ayres-Griffiths
558b2656d7
Update README.md 2019-04-21 14:34:55 +10:00
Melody Ayres-Griffiths
c49dc99296
Update README.md 2019-04-21 14:34:27 +10:00
Melody Ayres-Griffiths
6cc960b9d2
Create README.md 2019-04-20 14:33:50 +10:00
14 changed files with 735 additions and 538 deletions

12
README.md Normal file
View File

@ -0,0 +1,12 @@
# microm8-gui
GUI for the microM8 Apple II Emulator https://paleotronic.com/microm8/
Recently weve had requests from users for both an API (an interface for controlling our microM8 Apple II emulator externally) and a GUI (a graphical user-interface native to the host operating system).
The lack of a native GUI has always been an issue for users: microM8 is designed using a cross-platform OpenGL framework called GLFW, but GLFW offers little in the way of UI controls. Also, an API would allow people to automate emulation functions, for example to test .WOZ-format disks created with Applesauce.
We realised that we could kill two birds with one stone we could build a GUI “frontend” application, and then have it control microM8. For efficiency, we used a cross-platform GUI development kit called Lazarus, which is based on FreePascal.
Now the GUI is not perfect: because the GUI and microM8 are two separate applications, there can be the occasional issue keeping them synchronised, especially if you swap between multiple applications. But if youre using microM8+GUI alone or on its own screen then they seem to generally behave themselves. Also, while the Lazarus framework is very cool, its not perfect either. But we felt we had got it to a point where it would be usable for most users, and give those who are less comfortable using microM8 s keyboard-based interface another option.
And the GUI serves as a great example of what you can do with the API! The microM8 GUI is GPLv2 licensed.

View File

@ -6,7 +6,7 @@ object GUIForm: TGUIForm
AllowDropFiles = True
AlphaBlendValue = 128
Caption = 'microM8 GUI'
ClientHeight = 650
ClientHeight = 630
ClientWidth = 1078
Constraints.MinWidth = 1078
DoubleBuffered = False
@ -28,11 +28,11 @@ object GUIForm: TGUIForm
OnUTF8KeyPress = FormUTF8KeyPress
OnWindowStateChange = FormWindowStateChange
ParentDoubleBuffered = False
LCLVersion = '2.1.0.0'
LCLVersion = '2.0.0.4'
object StatusBar1: TStatusBar
Left = 0
Height = 18
Top = 632
Height = 23
Top = 607
Width = 1078
Panels = <>
end
@ -317,31 +317,31 @@ object GUIForm: TGUIForm
end
object pnlContainer: TPanel
Left = 0
Height = 596
Height = 571
Top = 36
Width = 1078
Align = alClient
BevelOuter = bvNone
ClientHeight = 596
ClientHeight = 571
ClientWidth = 1078
ParentColor = False
TabOrder = 2
object sidecarPanel: TPanel
Left = 908
Height = 559
Height = 534
Top = 0
Width = 170
Align = alRight
BevelOuter = bvNone
Caption = 'sidecarPanel'
ClientHeight = 559
ClientHeight = 534
ClientWidth = 170
Color = clBlack
ParentColor = False
TabOrder = 0
object Image1: TImage
Left = 0
Height = 559
Height = 534
Top = 0
Width = 170
Align = alClient
@ -5435,12 +5435,12 @@ object GUIForm: TGUIForm
end
object embedPanel: TPanel
Left = 0
Height = 559
Height = 534
Top = 0
Width = 908
Align = alClient
BevelOuter = bvNone
ClientHeight = 559
ClientHeight = 534
ClientWidth = 908
Color = clBlack
Font.Color = clWhite
@ -5452,7 +5452,7 @@ object GUIForm: TGUIForm
OnMouseUp = FormMouseUp
object backdrop: TImage
Left = 0
Height = 559
Height = 534
Top = 0
Width = 908
Align = alClient
@ -5465,7 +5465,7 @@ object GUIForm: TGUIForm
object pnlMemory: TPanel
Left = 0
Height = 37
Top = 559
Top = 534
Width = 1078
Align = alBottom
ClientHeight = 37
@ -5476,7 +5476,7 @@ object GUIForm: TGUIForm
OnResize = pnlMemoryResize
object txtAddress: TEdit
Left = 136
Height = 21
Height = 23
Top = 8
Width = 80
OnKeyPress = txtAddressKeyPress
@ -5486,23 +5486,23 @@ object GUIForm: TGUIForm
end
object Label1: TLabel
Left = 9
Height = 16
Height = 15
Top = 10
Width = 141
Width = 122
Caption = 'Memory Address (hex):'
ParentColor = False
end
object Label2: TLabel
Left = 240
Height = 16
Height = 15
Top = 10
Width = 72
Width = 60
Caption = 'Value (hex):'
ParentColor = False
end
object txtValue: TEdit
Left = 312
Height = 21
Height = 23
Top = 8
Width = 80
OnKeyPress = txtValueKeyPress
@ -5555,8 +5555,8 @@ object GUIForm: TGUIForm
end
object MainMenu1: TMainMenu
Images = ToolbarIcons
Left = 168
Top = 48
left = 168
top = 48
object MenuItem1: TMenuItem
Caption = 'File'
OnClick = MenuItem1Click
@ -5584,6 +5584,16 @@ object GUIForm: TGUIForm
RadioItem = True
OnClick = miPRFIIplusClick
end
object miPRFIIAuto: TMenuItem
Caption = 'Apple ][ (Autostart)'
RadioItem = True
OnClick = miPRFIIAutoClick
end
object miPRFAppleII: TMenuItem
Caption = 'Apple ]['
RadioItem = True
OnClick = miPRFAppleIIClick
end
end
object MenuItem9: TMenuItem
Caption = 'Interpreters'
@ -6552,10 +6562,6 @@ object GUIForm: TGUIForm
end
object miApps: TMenuItem
Caption = 'Applications'
object miAppsTerminal: TMenuItem
Caption = 'Terminal'
OnClick = miAppsTerminalClick
end
object miAppsPrintShop: TMenuItem
Caption = 'Print Shop'
OnClick = miAppsPrintShopClick
@ -6564,6 +6570,21 @@ object GUIForm: TGUIForm
Caption = '816 Paint'
OnClick = miApps816PaintClick
end
object miAppsTerminal: TMenuItem
Caption = 'Dial BBSes'
OnClick = miAppsTerminalClick
end
object MenuItem13: TMenuItem
Caption = 'Platoterm'
object MenuItem17: TMenuItem
Caption = 'Irata Online'
OnClick = MenuItem11Click
end
object MenuItem18: TMenuItem
Caption = 'Cyberserv'
OnClick = MenuItem12Click
end
end
end
object miTools: TMenuItem
Caption = 'Tools'
@ -6594,8 +6615,8 @@ object GUIForm: TGUIForm
Height = 32
Scaled = True
Width = 32
Left = 96
Top = 48
left = 96
top = 48
Bitmap = {
4C691E0000002000000020000000CA9BCA00B16DB100B16DB100B16DB100B16D
B100B16DB100B16DB100B16DB100B16DB100B16DB100B16DB100AD72BB0E8C68
@ -10443,8 +10464,8 @@ object GUIForm: TGUIForm
object DiskMenu: TPopupMenu
OnPopup = DiskMenuPopup
OnClose = DiskMenuClose
Left = 240
Top = 104
left = 240
top = 104
object MenuItem10: TMenuItem
Caption = 'Insert Disk'
OnClick = MenuItem10Click
@ -10467,26 +10488,26 @@ object GUIForm: TGUIForm
Enabled = False
Interval = 50
OnTimer = CheckTimerTimer
Left = 168
Top = 104
left = 168
top = 104
end
object odDiskImages: TOpenDialog
Title = 'Open Disk Image'
DefaultExt = '.*'
Filter = 'All Floppy Images|*.dsk; *.do; *.po; *.woz; *.nib|All HDD Images|*.po; *.2mg; *.hdv|MicroPAK|*.pak|Disk Image|*.dsk|ProDOS Ordered Image|*.po|DOS Ordered Image|*.do|Nibble Image|*.nib|WOZ Image|*.woz|2MG Image|*.2mg|HDV Image|*.hdv'
Left = 24
Top = 104
left = 24
top = 104
end
object MouseTimer: TTimer
Enabled = False
Interval = 50
OnTimer = MouseTimerTimer
Left = 96
Top = 104
left = 96
top = 104
end
object TintMode: TPopupMenu
Left = 24
Top = 48
left = 24
top = 48
object miTintOff: TMenuItem
Caption = 'Off'
ImageIndex = 0
@ -10514,13 +10535,13 @@ object GUIForm: TGUIForm
object ToolTimer: TTimer
Enabled = False
OnTimer = ToolTimerTimer
Left = 24
Top = 160
left = 24
top = 160
end
object SideImages: TImageList
Scaled = True
Left = 240
Top = 48
left = 240
top = 48
end
object MicroM8Process: TAsyncProcess
Active = False
@ -10541,32 +10562,32 @@ object GUIForm: TGUIForm
WindowWidth = 0
FillAttribute = 0
OnTerminate = MicroM8ProcessTerminate
Left = 240
Top = 160
left = 240
top = 160
end
object odFreezeFiles: TOpenDialog
DefaultExt = '.*.frz'
Filter = 'MicroM8 Freeze|*.frz'
Left = 96
Top = 160
left = 96
top = 160
end
object FSTimer: TTimer
OnTimer = FSTimerTimer
Left = 168
Top = 160
left = 168
top = 160
end
object sdFreezeFiles: TSaveDialog
Title = 'Save state as'
DefaultExt = '.*.frz'
Filter = 'MicroM8 Freeze|*.frz'
Left = 24
Top = 216
left = 24
top = 216
end
object RecordingMenu: TPopupMenu
Images = ToolbarIcons
ImagesWidth = 32
Left = 96
Top = 216
left = 96
top = 216
object miStartDiskRec: TMenuItem
Caption = 'Start Disk Recording'
ImageIndex = 10
@ -10581,8 +10602,8 @@ object GUIForm: TGUIForm
end
end
object ProfileMenu: TPopupMenu
Left = 168
Top = 216
left = 168
top = 216
object miPMApple2eEnh: TMenuItem
Caption = 'Apple //e Enhanced'
OnClick = miPRFIIeEnhancedClick
@ -10599,6 +10620,14 @@ object GUIForm: TGUIForm
Caption = 'Apple ][+'
OnClick = miPRFIIplusClick
end
object miPRFSMApple2Auto: TMenuItem
Caption = 'Apple ][ (Autostart)'
OnClick = miPRFSMApple2AutoClick
end
object miPRFSMApple2: TMenuItem
Caption = 'Apple ]['
OnClick = miPRFSMApple2Click
end
object N14: TMenuItem
Caption = '-'
end
@ -10611,14 +10640,14 @@ object GUIForm: TGUIForm
Enabled = False
Interval = 50
OnTimer = WaitReposTimer
Left = 238
Top = 223
left = 238
top = 223
end
object SPMenu: TPopupMenu
OnPopup = DiskMenuPopup
OnClose = DiskMenuClose
Left = 24
Top = 272
left = 24
top = 272
object miSPConnect: TMenuItem
Caption = 'Connect Disk'
OnClick = miSPFileClick

View File

@ -25,6 +25,13 @@ type
btnRead: TButton;
btnWrite: TButton;
btnHide: TButton;
MenuItem13: TMenuItem;
MenuItem17: TMenuItem;
MenuItem18: TMenuItem;
miPRFSMApple2: TMenuItem;
miPRFSMApple2Auto: TMenuItem;
miPRFAppleII: TMenuItem;
miPRFIIAuto: TMenuItem;
miDisableScanlines: TMenuItem;
miIssue: TMenuItem;
SPMenu: TPopupMenu;
@ -369,9 +376,12 @@ type
Shift: TShiftState; X, Y: Integer);
procedure InputClick(Sender: TObject);
procedure MenuItem10Click(Sender: TObject);
procedure MenuItem11Click(Sender: TObject);
procedure MenuItem12Click(Sender: TObject);
procedure MenuItem14Click(Sender: TObject);
procedure MenuItem15Click(Sender: TObject);
procedure MenuItem16Click(Sender: TObject);
procedure MenuItem17Click(Sender: TObject);
procedure MicroM8ProcessTerminate(Sender: TObject);
procedure miD1InsBlankClick(Sender: TObject);
procedure miD2InsBlankClick(Sender: TObject);
@ -454,11 +464,15 @@ type
procedure miOpenPAKClick(Sender: TObject);
procedure miPasteTextClick(Sender: TObject);
procedure miPDFTO5sClick(Sender: TObject);
procedure miPRFAppleIIClick(Sender: TObject);
procedure miPRFIIAutoClick(Sender: TObject);
procedure miPRFIIeClick(Sender: TObject);
procedure miPRFIIeEnhancedClick(Sender: TObject);
procedure miPRFIIeEnhancedSoftcardClick(Sender: TObject);
procedure miPRFIIplusClick(Sender: TObject);
procedure miPRFRebootClick(Sender: TObject);
procedure miPRFSMApple2AutoClick(Sender: TObject);
procedure miPRFSMApple2Click(Sender: TObject);
procedure miPrinterPDFClick(Sender: TObject);
procedure miProfilesClick(Sender: TObject);
procedure miPSG0m100Click(Sender: TObject);
@ -881,7 +895,8 @@ end;
procedure TGUIForm.miAppsTerminalClick(Sender: TObject);
begin
BootFreeze( '/boot/apps/proterm.frz' );
//BootFreeze( '/boot/apps/proterm.frz' );
LaunchPAK('/micropaks/comms/proterm.pak');
end;
procedure TGUIForm.miAR100Click(Sender: TObject);
@ -1426,6 +1441,16 @@ begin
UpdateConfig( 'hardware/init.printer.timeout', TMenuItem(sender).Caption, true );
end;
procedure TGUIForm.miPRFAppleIIClick(Sender: TObject);
begin
SimpleGet( baseUrl+'/api/control/system/profile/set/apple2' );
end;
procedure TGUIForm.miPRFIIAutoClick(Sender: TObject);
begin
SimpleGet( baseUrl+'/api/control/system/profile/set/apple2-dsys' );
end;
procedure TGUIForm.miPRFIIeClick(Sender: TObject);
var
reply: integer;
@ -1459,6 +1484,16 @@ begin
SimpleGet( baseUrl+'/api/control/system/reboot' );
end;
procedure TGUIForm.miPRFSMApple2AutoClick(Sender: TObject);
begin
SimpleGet( baseUrl+'/api/control/system/profile/set/apple2-dsys' );
end;
procedure TGUIForm.miPRFSMApple2Click(Sender: TObject);
begin
SimpleGet( baseUrl+'/api/control/system/profile/set/apple2' );
end;
procedure TGUIForm.miPrinterPDFClick(Sender: TObject);
begin
case GetConfig( 'hardware/init.printer.timeout' ) of
@ -1477,7 +1512,9 @@ begin
'apple2e-en': miPRFIIeEnhanced.Checked := true;
'apple2e-en-cpm': miPRFIIeEnhancedSoftcard.Checked := true;
'apple2e': miPRFIIe.Checked := true;
'apple2plus': miPRFIIplus.Checked := true;
'apple2-plus': miPRFIIplus.Checked := true;
'apple2-dsys': miPRFIIAuto.Checked := true;
'apple2': miPRFAppleII.Checked := true;
end;
end;
@ -3127,15 +3164,16 @@ begin
//StatusBar1.SimpleText := 'Shift+Ctrl+'+char(Key);
Result := (Integer(Key) - 65) + SHIFT_CTRL_A;
end
else if (ssShift in Shift) or Caps then
Result := Integer(Key)
else if ssCtrl in Shift then
begin
keyDesc := 'Ctrl+'+char(Key);
if Key = 67 then
Result := 3
else
Result := CTRL_A + Integer(Key-65);
end
else if (ssShift in Shift) or Caps then
Result := Integer(Key)
else if ssAlt in Shift then
begin
Result := (Integer(Key) - 65) + OPEN_APPLE_A;
@ -3170,14 +3208,15 @@ begin
code := MapKeyCode(Key,Shift,false);
if code <> 0 then
SendKey( code, 0, 1, MapShiftState(Key, Shift) );
if not ssAlt in Shift then
if not (ssAlt in Shift) then
Key := 0;
//StatusBar1.SimpleText := IntToStr(code) + ' ' + keydesc;
end;
procedure TGUIForm.FormKeyPress(Sender: TObject; var Key: char);
begin
//SendKey( Integer(Ord(Key)), 0, 1, 0 );
//if Key = #1 then
// SendKey( $e042, 0, 1, 0 );
end;
procedure TGUIForm.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
@ -3271,6 +3310,16 @@ begin
ShowM8;
end;
procedure TGUIForm.MenuItem11Click(Sender: TObject);
begin
LaunchPAK('/micropaks/comms/platoterm-irataonline.pak');
end;
procedure TGUIForm.MenuItem12Click(Sender: TObject);
begin
LaunchPAK('/micropaks/comms/platoterm-cyberserv.pak');
end;
procedure TGUIForm.MenuItem14Click(Sender: TObject);
begin
{ do fullscreen here }
@ -3327,6 +3376,11 @@ begin
end;
end;
procedure TGUIForm.MenuItem17Click(Sender: TObject);
begin
end;
procedure TGUIForm.MicroM8ProcessTerminate(Sender: TObject);
begin
//lblTerm.Caption := 'core has terminated';

View File

@ -1,13 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectOptions>
<Version Value="12"/>
<Version Value="11"/>
<PathDelim Value="\"/>
<General>
<Flags>
<CompatibilityMode Value="True"/>
</Flags>
<SessionStorage Value="InProjectDir"/>
<MainUnit Value="0"/>
<Title Value="microm8-gui"/>
<Scaled Value="True"/>
<ResourceType Value="res"/>

View File

@ -1,186 +1,186 @@
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectSession>
<PathDelim Value="\"/>
<Version Value="12"/>
<BuildModes Active="Default"/>
<Units Count="5">
<Unit0>
<Filename Value="poc.lpr"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="-1"/>
<WindowIndex Value="-1"/>
<TopLine Value="-1"/>
<CursorPos X="-1" Y="-1"/>
<UsageCount Value="323"/>
</Unit0>
<Unit1>
<Filename Value="main.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="GUIForm"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<IsVisibleTab Value="True"/>
<TopLine Value="3152"/>
<CursorPos Y="3173"/>
<UsageCount Value="323"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
</Unit1>
<Unit2>
<Filename Value="mixer.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="frmMixer"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="-1"/>
<TopLine Value="3"/>
<CursorPos X="26" Y="25"/>
<UsageCount Value="206"/>
</Unit2>
<Unit3>
<Filename Value="C:\lazarus\lcl\include\picture.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="576"/>
<CursorPos X="49" Y="591"/>
<UsageCount Value="93"/>
</Unit3>
<Unit4>
<Filename Value="images\memory.pas"/>
<ComponentName Value="memform"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="-1"/>
<TopLine Value="40"/>
<CursorPos X="17" Y="44"/>
<UsageCount Value="7"/>
</Unit4>
</Units>
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="main.pas"/>
<Caret Line="3046" Column="36" TopLine="3032"/>
</Position1>
<Position2>
<Filename Value="main.pas"/>
<Caret Line="2882" Column="27" TopLine="2867"/>
</Position2>
<Position3>
<Filename Value="main.pas"/>
<Caret Line="2888" Column="23" TopLine="2877"/>
</Position3>
<Position4>
<Filename Value="main.pas"/>
<Caret Line="2752" Column="28" TopLine="2729"/>
</Position4>
<Position5>
<Filename Value="main.pas"/>
<Caret Line="1788" Column="61" TopLine="1785"/>
</Position5>
<Position6>
<Filename Value="main.pas"/>
<Caret Line="2341" Column="6" TopLine="2313"/>
</Position6>
<Position7>
<Filename Value="main.pas"/>
<Caret Line="1801" Column="28" TopLine="1786"/>
</Position7>
<Position8>
<Filename Value="main.pas"/>
<Caret Line="2900" Column="14" TopLine="2888"/>
</Position8>
<Position9>
<Filename Value="main.pas"/>
<Caret Line="1897" Column="16" TopLine="1894"/>
</Position9>
<Position10>
<Filename Value="main.pas"/>
<Caret Line="426" Column="15" TopLine="408"/>
</Position10>
<Position11>
<Filename Value="main.pas"/>
<Caret Line="1183" TopLine="1178"/>
</Position11>
<Position12>
<Filename Value="main.pas"/>
<Caret Line="1923" Column="42" TopLine="1895"/>
</Position12>
<Position13>
<Filename Value="main.pas"/>
<Caret Line="2892" Column="43" TopLine="2879"/>
</Position13>
<Position14>
<Filename Value="main.pas"/>
<Caret Line="2899" Column="43" TopLine="2886"/>
</Position14>
<Position15>
<Filename Value="main.pas"/>
<Caret Line="1833" Column="87" TopLine="1829"/>
</Position15>
<Position16>
<Filename Value="main.pas"/>
<Caret Line="1839" Column="38" TopLine="1820"/>
</Position16>
<Position17>
<Filename Value="main.pas"/>
<Caret Line="1098" Column="15" TopLine="1092"/>
</Position17>
<Position18>
<Filename Value="main.pas"/>
<Caret Line="1925" Column="3" TopLine="1923"/>
</Position18>
<Position19>
<Filename Value="main.pas"/>
<Caret Line="3205" Column="13" TopLine="3198"/>
</Position19>
<Position20>
<Filename Value="main.pas"/>
<Caret Line="3279" Column="24" TopLine="3223"/>
</Position20>
<Position21>
<Filename Value="main.pas"/>
<Caret Line="581" Column="11" TopLine="563"/>
</Position21>
<Position22>
<Filename Value="main.pas"/>
<Caret Line="2250" Column="17" TopLine="2231"/>
</Position22>
<Position23>
<Filename Value="main.pas"/>
<Caret Line="2255" Column="14" TopLine="2231"/>
</Position23>
<Position24>
<Filename Value="main.pas"/>
<Caret Line="2265" Column="21" TopLine="2234"/>
</Position24>
<Position25>
<Filename Value="main.pas"/>
<Caret Line="3202" Column="9" TopLine="3174"/>
</Position25>
<Position26>
<Filename Value="main.pas"/>
<Caret Line="893" Column="40" TopLine="871"/>
</Position26>
<Position27>
<Filename Value="main.pas"/>
<Caret Line="348" Column="22" TopLine="330"/>
</Position27>
<Position28>
<Filename Value="main.pas"/>
<Caret Line="349" Column="22" TopLine="330"/>
</Position28>
<Position29>
<Filename Value="main.pas"/>
<Caret Line="350" Column="22" TopLine="330"/>
</Position29>
<Position30>
<Filename Value="main.pas"/>
<Caret Line="3189" Column="12" TopLine="3152"/>
</Position30>
</JumpHistory>
<RunParams>
<FormatVersion Value="2"/>
<Modes Count="0" ActiveMode=""/>
</RunParams>
</ProjectSession>
</CONFIG>
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectSession>
<PathDelim Value="\"/>
<Version Value="11"/>
<BuildModes Active="Default"/>
<Units Count="5">
<Unit0>
<Filename Value="poc.lpr"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="-1"/>
<WindowIndex Value="-1"/>
<TopLine Value="-1"/>
<CursorPos X="-1" Y="-1"/>
<UsageCount Value="323"/>
</Unit0>
<Unit1>
<Filename Value="main.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="GUIForm"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<IsVisibleTab Value="True"/>
<TopLine Value="1433"/>
<CursorPos X="69" Y="1445"/>
<UsageCount Value="323"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
</Unit1>
<Unit2>
<Filename Value="mixer.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="frmMixer"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="-1"/>
<TopLine Value="3"/>
<CursorPos X="26" Y="25"/>
<UsageCount Value="206"/>
</Unit2>
<Unit3>
<Filename Value="C:\lazarus\lcl\include\picture.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="576"/>
<CursorPos X="49" Y="591"/>
<UsageCount Value="93"/>
</Unit3>
<Unit4>
<Filename Value="images\memory.pas"/>
<ComponentName Value="memform"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="-1"/>
<TopLine Value="40"/>
<CursorPos X="17" Y="44"/>
<UsageCount Value="7"/>
</Unit4>
</Units>
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="main.pas"/>
<Caret Line="2900" Column="14" TopLine="2888"/>
</Position1>
<Position2>
<Filename Value="main.pas"/>
<Caret Line="1897" Column="16" TopLine="1894"/>
</Position2>
<Position3>
<Filename Value="main.pas"/>
<Caret Line="426" Column="15" TopLine="408"/>
</Position3>
<Position4>
<Filename Value="main.pas"/>
<Caret Line="1183" TopLine="1178"/>
</Position4>
<Position5>
<Filename Value="main.pas"/>
<Caret Line="1923" Column="42" TopLine="1895"/>
</Position5>
<Position6>
<Filename Value="main.pas"/>
<Caret Line="2892" Column="43" TopLine="2879"/>
</Position6>
<Position7>
<Filename Value="main.pas"/>
<Caret Line="2899" Column="43" TopLine="2886"/>
</Position7>
<Position8>
<Filename Value="main.pas"/>
<Caret Line="1833" Column="87" TopLine="1829"/>
</Position8>
<Position9>
<Filename Value="main.pas"/>
<Caret Line="1839" Column="38" TopLine="1820"/>
</Position9>
<Position10>
<Filename Value="main.pas"/>
<Caret Line="1098" Column="15" TopLine="1092"/>
</Position10>
<Position11>
<Filename Value="main.pas"/>
<Caret Line="1925" Column="3" TopLine="1923"/>
</Position11>
<Position12>
<Filename Value="main.pas"/>
<Caret Line="3205" Column="13" TopLine="3198"/>
</Position12>
<Position13>
<Filename Value="main.pas"/>
<Caret Line="3279" Column="24" TopLine="3223"/>
</Position13>
<Position14>
<Filename Value="main.pas"/>
<Caret Line="581" Column="11" TopLine="563"/>
</Position14>
<Position15>
<Filename Value="main.pas"/>
<Caret Line="2250" Column="17" TopLine="2231"/>
</Position15>
<Position16>
<Filename Value="main.pas"/>
<Caret Line="2255" Column="14" TopLine="2231"/>
</Position16>
<Position17>
<Filename Value="main.pas"/>
<Caret Line="2265" Column="21" TopLine="2234"/>
</Position17>
<Position18>
<Filename Value="main.pas"/>
<Caret Line="3202" Column="9" TopLine="3174"/>
</Position18>
<Position19>
<Filename Value="main.pas"/>
<Caret Line="893" Column="40" TopLine="871"/>
</Position19>
<Position20>
<Filename Value="main.pas"/>
<Caret Line="348" Column="22" TopLine="330"/>
</Position20>
<Position21>
<Filename Value="main.pas"/>
<Caret Line="349" Column="22" TopLine="330"/>
</Position21>
<Position22>
<Filename Value="main.pas"/>
<Caret Line="350" Column="22" TopLine="330"/>
</Position22>
<Position23>
<Filename Value="main.pas"/>
<Caret Line="3189" Column="12" TopLine="3152"/>
</Position23>
<Position24>
<Filename Value="main.pas"/>
<Caret Line="3156" Column="25" TopLine="3153"/>
</Position24>
<Position25>
<Filename Value="main.pas"/>
<Caret Line="3157" Column="25" TopLine="3154"/>
</Position25>
<Position26>
<Filename Value="main.pas"/>
<Caret Line="3158" Column="25" TopLine="3155"/>
</Position26>
<Position27>
<Filename Value="main.pas"/>
<Caret Line="1479" Column="33" TopLine="1468"/>
</Position27>
<Position28>
<Filename Value="main.pas"/>
<Caret Line="2711" Column="3" TopLine="2709"/>
</Position28>
<Position29>
<Filename Value="main.pas"/>
<Caret Line="1462" Column="3" TopLine="1458"/>
</Position29>
<Position30>
<Filename Value="main.pas"/>
<Caret Line="1440" Column="66" TopLine="1438"/>
</Position30>
</JumpHistory>
<RunParams>
<FormatVersion Value="2"/>
<Modes Count="0" ActiveMode=""/>
</RunParams>
</ProjectSession>
</CONFIG>

View File

@ -1,7 +1,7 @@
object GUIForm: TGUIForm
Left = 290
Left = 420
Height = 650
Top = 130
Top = 127
Width = 1078
AllowDropFiles = True
AlphaBlendValue = 128
@ -60,7 +60,7 @@ object GUIForm: TGUIForm
end
object tbRMVoxels: TToolButton
Tag = 1
Left = 577
Left = 585
Hint = 'Voxel Render'
Top = 2
Caption = 'Voxels'
@ -74,7 +74,7 @@ object GUIForm: TGUIForm
Style = tbsCheck
end
object tbRMDots: TToolButton
Left = 613
Left = 621
Hint = 'Dot Render'
Top = 2
Caption = 'Dots'
@ -87,7 +87,7 @@ object GUIForm: TGUIForm
end
object tbRMRaster: TToolButton
Tag = 2
Left = 649
Left = 657
Hint = 'Raster Render'
Top = 2
Caption = 'Raster'
@ -99,7 +99,7 @@ object GUIForm: TGUIForm
Style = tbsCheck
end
object tbRMColor: TToolButton
Left = 685
Left = 693
Hint = 'Toggle Color/Mono'
Top = 2
Caption = 'tbRMColor'
@ -109,7 +109,7 @@ object GUIForm: TGUIForm
ShowHint = True
end
object tbRECState: TToolButton
Left = 753
Left = 761
Hint = 'Start Recording'
Top = 2
Caption = 'tbRECState'
@ -119,7 +119,7 @@ object GUIForm: TGUIForm
ShowHint = True
end
object ToolButton5: TToolButton
Left = 789
Left = 797
Hint = 'Rewind'
Top = 2
Caption = 'ToolButton5'
@ -129,7 +129,7 @@ object GUIForm: TGUIForm
ShowHint = True
end
object ToolButton6: TToolButton
Left = 825
Left = 833
Hint = 'Forwards'
Top = 2
Caption = 'ToolButton6'
@ -139,7 +139,7 @@ object GUIForm: TGUIForm
ShowHint = True
end
object ToolButton7: TToolButton
Left = 861
Left = 869
Hint = 'Resume'
Top = 2
Caption = 'ToolButton7'
@ -149,7 +149,7 @@ object GUIForm: TGUIForm
ShowHint = True
end
object ToolButton8: TToolButton
Left = 897
Left = 905
Hint = 'Stop Recording'
Top = 2
Caption = 'ToolButton8'
@ -159,7 +159,7 @@ object GUIForm: TGUIForm
ShowHint = True
end
object ToolButton9: TToolButton
Left = 933
Left = 941
Hint = 'Pause'
Top = 2
Caption = 'ToolButton9'
@ -169,7 +169,7 @@ object GUIForm: TGUIForm
ShowHint = True
end
object ToolButton10: TToolButton
Left = 721
Left = 729
Top = 2
Caption = 'ToolButton10'
Enabled = False
@ -226,13 +226,12 @@ object GUIForm: TGUIForm
Left = 213
Height = 32
Top = 2
Width = 96
Width = 100
OnChange = tbMasterVolumeChange
Position = 0
ScalePos = trBottom
TabStop = False
TickMarks = tmBoth
TickStyle = tsManual
OnEnter = tbMasterVolumeEnter
OnMouseDown = tbMasterVolumeMouseDown
OnMouseUp = tbMasterVolumeMouseUp
@ -241,7 +240,7 @@ object GUIForm: TGUIForm
TabOrder = 0
end
object tbVolUp: TToolButton
Left = 309
Left = 313
Hint = 'Volume Up'
Top = 2
Caption = 'tbVolUp'
@ -251,13 +250,13 @@ object GUIForm: TGUIForm
ShowHint = True
end
object ToolButton3: TToolButton
Left = 345
Left = 349
Top = 2
Caption = 'ToolButton3'
Enabled = False
end
object tbSpeedDown: TToolButton
Left = 377
Left = 381
Hint = 'CPU Speed Down'
Top = 2
Caption = 'tbSpeedDown'
@ -267,17 +266,16 @@ object GUIForm: TGUIForm
ShowHint = True
end
object TrackBar2: TTrackBar
Left = 413
Left = 417
Height = 32
Top = 2
Width = 96
Width = 100
Max = 4
OnChange = TrackBar2Change
Position = 0
ScalePos = trBottom
TabStop = False
TickMarks = tmBoth
TickStyle = tsManual
OnMouseDown = TrackBar2MouseDown
OnMouseUp = TrackBar2MouseUp
OnKeyDown = FormKeyDown
@ -285,7 +283,7 @@ object GUIForm: TGUIForm
TabOrder = 1
end
object tbSpeedUp: TToolButton
Left = 509
Left = 517
Hint = 'CPU Speed Up'
Top = 2
Caption = 'tbSpeedUp'
@ -295,19 +293,19 @@ object GUIForm: TGUIForm
ShowHint = True
end
object ToolButton18: TToolButton
Left = 545
Left = 553
Top = 2
Caption = 'ToolButton18'
Enabled = False
end
object ToolButton1: TToolButton
Left = 969
Left = 977
Top = 2
Caption = 'ToolButton1'
Enabled = False
end
object tbFullscreen: TToolButton
Left = 1001
Left = 1009
Hint = 'Fullscreen'
Top = 2
Caption = 'tbFullscreen'
@ -5586,6 +5584,16 @@ object GUIForm: TGUIForm
RadioItem = True
OnClick = miPRFIIplusClick
end
object miPRFIIAuto: TMenuItem
Caption = 'Apple ][ (Autostart)'
RadioItem = True
OnClick = miPRFIIAutoClick
end
object miPRFAppleII: TMenuItem
Caption = 'Apple ]['
RadioItem = True
OnClick = miPRFAppleIIClick
end
end
object MenuItem9: TMenuItem
Caption = 'Interpreters'
@ -6554,10 +6562,6 @@ object GUIForm: TGUIForm
end
object miApps: TMenuItem
Caption = 'Applications'
object miAppsTerminal: TMenuItem
Caption = 'Terminal'
OnClick = miAppsTerminalClick
end
object miAppsPrintShop: TMenuItem
Caption = 'Print Shop'
OnClick = miAppsPrintShopClick
@ -6566,6 +6570,21 @@ object GUIForm: TGUIForm
Caption = '816 Paint'
OnClick = miApps816PaintClick
end
object miAppsTerminal: TMenuItem
Caption = 'Dial BBSes'
OnClick = miAppsTerminalClick
end
object MenuItem13: TMenuItem
Caption = 'Platoterm'
object MenuItem17: TMenuItem
Caption = 'Irata Online'
OnClick = MenuItem11Click
end
object MenuItem18: TMenuItem
Caption = 'Cyberserv'
OnClick = MenuItem12Click
end
end
end
object miTools: TMenuItem
Caption = 'Tools'
@ -10601,6 +10620,14 @@ object GUIForm: TGUIForm
Caption = 'Apple ][+'
OnClick = miPRFIIplusClick
end
object miPRFSMApple2Auto: TMenuItem
Caption = 'Apple ][ (Autostart)'
OnClick = miPRFSMApple2AutoClick
end
object miPRFSMApple2: TMenuItem
Caption = 'Apple ]['
OnClick = miPRFSMApple2Click
end
object N14: TMenuItem
Caption = '-'
end

Binary file not shown.

Binary file not shown.

Binary file not shown.

143
main.lfm
View File

@ -6,7 +6,7 @@ object GUIForm: TGUIForm
AllowDropFiles = True
AlphaBlendValue = 128
Caption = 'microM8 GUI'
ClientHeight = 650
ClientHeight = 630
ClientWidth = 1078
Constraints.MinWidth = 1078
DoubleBuffered = False
@ -28,11 +28,11 @@ object GUIForm: TGUIForm
OnUTF8KeyPress = FormUTF8KeyPress
OnWindowStateChange = FormWindowStateChange
ParentDoubleBuffered = False
LCLVersion = '2.1.0.0'
LCLVersion = '2.0.0.4'
object StatusBar1: TStatusBar
Left = 0
Height = 18
Top = 632
Height = 23
Top = 607
Width = 1078
Panels = <>
end
@ -317,31 +317,31 @@ object GUIForm: TGUIForm
end
object pnlContainer: TPanel
Left = 0
Height = 596
Height = 571
Top = 36
Width = 1078
Align = alClient
BevelOuter = bvNone
ClientHeight = 596
ClientHeight = 571
ClientWidth = 1078
ParentColor = False
TabOrder = 2
object sidecarPanel: TPanel
Left = 908
Height = 559
Height = 534
Top = 0
Width = 170
Align = alRight
BevelOuter = bvNone
Caption = 'sidecarPanel'
ClientHeight = 559
ClientHeight = 534
ClientWidth = 170
Color = clBlack
ParentColor = False
TabOrder = 0
object Image1: TImage
Left = 0
Height = 559
Height = 534
Top = 0
Width = 170
Align = alClient
@ -5435,12 +5435,12 @@ object GUIForm: TGUIForm
end
object embedPanel: TPanel
Left = 0
Height = 559
Height = 534
Top = 0
Width = 908
Align = alClient
BevelOuter = bvNone
ClientHeight = 559
ClientHeight = 534
ClientWidth = 908
Color = clBlack
Font.Color = clWhite
@ -5452,7 +5452,7 @@ object GUIForm: TGUIForm
OnMouseUp = FormMouseUp
object backdrop: TImage
Left = 0
Height = 559
Height = 534
Top = 0
Width = 908
Align = alClient
@ -5465,7 +5465,7 @@ object GUIForm: TGUIForm
object pnlMemory: TPanel
Left = 0
Height = 37
Top = 559
Top = 534
Width = 1078
Align = alBottom
ClientHeight = 37
@ -5476,7 +5476,7 @@ object GUIForm: TGUIForm
OnResize = pnlMemoryResize
object txtAddress: TEdit
Left = 136
Height = 21
Height = 23
Top = 8
Width = 80
OnKeyPress = txtAddressKeyPress
@ -5486,23 +5486,23 @@ object GUIForm: TGUIForm
end
object Label1: TLabel
Left = 9
Height = 16
Height = 15
Top = 10
Width = 141
Width = 122
Caption = 'Memory Address (hex):'
ParentColor = False
end
object Label2: TLabel
Left = 240
Height = 16
Height = 15
Top = 10
Width = 72
Width = 60
Caption = 'Value (hex):'
ParentColor = False
end
object txtValue: TEdit
Left = 312
Height = 21
Height = 23
Top = 8
Width = 80
OnKeyPress = txtValueKeyPress
@ -5555,8 +5555,8 @@ object GUIForm: TGUIForm
end
object MainMenu1: TMainMenu
Images = ToolbarIcons
Left = 168
Top = 48
left = 168
top = 48
object MenuItem1: TMenuItem
Caption = 'File'
OnClick = MenuItem1Click
@ -5584,6 +5584,16 @@ object GUIForm: TGUIForm
RadioItem = True
OnClick = miPRFIIplusClick
end
object miPRFIIAuto: TMenuItem
Caption = 'Apple ][ (Autostart)'
RadioItem = True
OnClick = miPRFIIAutoClick
end
object miPRFAppleII: TMenuItem
Caption = 'Apple ]['
RadioItem = True
OnClick = miPRFAppleIIClick
end
end
object MenuItem9: TMenuItem
Caption = 'Interpreters'
@ -6552,10 +6562,6 @@ object GUIForm: TGUIForm
end
object miApps: TMenuItem
Caption = 'Applications'
object miAppsTerminal: TMenuItem
Caption = 'Terminal'
OnClick = miAppsTerminalClick
end
object miAppsPrintShop: TMenuItem
Caption = 'Print Shop'
OnClick = miAppsPrintShopClick
@ -6564,6 +6570,21 @@ object GUIForm: TGUIForm
Caption = '816 Paint'
OnClick = miApps816PaintClick
end
object miAppsTerminal: TMenuItem
Caption = 'Dial BBSes'
OnClick = miAppsTerminalClick
end
object MenuItem13: TMenuItem
Caption = 'Platoterm'
object MenuItem17: TMenuItem
Caption = 'Irata Online'
OnClick = MenuItem11Click
end
object MenuItem18: TMenuItem
Caption = 'Cyberserv'
OnClick = MenuItem12Click
end
end
end
object miTools: TMenuItem
Caption = 'Tools'
@ -6594,8 +6615,8 @@ object GUIForm: TGUIForm
Height = 32
Scaled = True
Width = 32
Left = 96
Top = 48
left = 96
top = 48
Bitmap = {
4C691E0000002000000020000000CA9BCA00B16DB100B16DB100B16DB100B16D
B100B16DB100B16DB100B16DB100B16DB100B16DB100B16DB100AD72BB0E8C68
@ -10443,8 +10464,8 @@ object GUIForm: TGUIForm
object DiskMenu: TPopupMenu
OnPopup = DiskMenuPopup
OnClose = DiskMenuClose
Left = 240
Top = 104
left = 240
top = 104
object MenuItem10: TMenuItem
Caption = 'Insert Disk'
OnClick = MenuItem10Click
@ -10467,26 +10488,26 @@ object GUIForm: TGUIForm
Enabled = False
Interval = 50
OnTimer = CheckTimerTimer
Left = 168
Top = 104
left = 168
top = 104
end
object odDiskImages: TOpenDialog
Title = 'Open Disk Image'
DefaultExt = '.*'
Filter = 'All Floppy Images|*.dsk; *.do; *.po; *.woz; *.nib|All HDD Images|*.po; *.2mg; *.hdv|MicroPAK|*.pak|Disk Image|*.dsk|ProDOS Ordered Image|*.po|DOS Ordered Image|*.do|Nibble Image|*.nib|WOZ Image|*.woz|2MG Image|*.2mg|HDV Image|*.hdv'
Left = 24
Top = 104
left = 24
top = 104
end
object MouseTimer: TTimer
Enabled = False
Interval = 50
OnTimer = MouseTimerTimer
Left = 96
Top = 104
left = 96
top = 104
end
object TintMode: TPopupMenu
Left = 24
Top = 48
left = 24
top = 48
object miTintOff: TMenuItem
Caption = 'Off'
ImageIndex = 0
@ -10514,13 +10535,13 @@ object GUIForm: TGUIForm
object ToolTimer: TTimer
Enabled = False
OnTimer = ToolTimerTimer
Left = 24
Top = 160
left = 24
top = 160
end
object SideImages: TImageList
Scaled = True
Left = 240
Top = 48
left = 240
top = 48
end
object MicroM8Process: TAsyncProcess
Active = False
@ -10541,32 +10562,32 @@ object GUIForm: TGUIForm
WindowWidth = 0
FillAttribute = 0
OnTerminate = MicroM8ProcessTerminate
Left = 240
Top = 160
left = 240
top = 160
end
object odFreezeFiles: TOpenDialog
DefaultExt = '.*.frz'
Filter = 'MicroM8 Freeze|*.frz'
Left = 96
Top = 160
left = 96
top = 160
end
object FSTimer: TTimer
OnTimer = FSTimerTimer
Left = 168
Top = 160
left = 168
top = 160
end
object sdFreezeFiles: TSaveDialog
Title = 'Save state as'
DefaultExt = '.*.frz'
Filter = 'MicroM8 Freeze|*.frz'
Left = 24
Top = 216
left = 24
top = 216
end
object RecordingMenu: TPopupMenu
Images = ToolbarIcons
ImagesWidth = 32
Left = 96
Top = 216
left = 96
top = 216
object miStartDiskRec: TMenuItem
Caption = 'Start Disk Recording'
ImageIndex = 10
@ -10581,8 +10602,8 @@ object GUIForm: TGUIForm
end
end
object ProfileMenu: TPopupMenu
Left = 168
Top = 216
left = 168
top = 216
object miPMApple2eEnh: TMenuItem
Caption = 'Apple //e Enhanced'
OnClick = miPRFIIeEnhancedClick
@ -10599,6 +10620,14 @@ object GUIForm: TGUIForm
Caption = 'Apple ][+'
OnClick = miPRFIIplusClick
end
object miPRFSMApple2Auto: TMenuItem
Caption = 'Apple ][ (Autostart)'
OnClick = miPRFSMApple2AutoClick
end
object miPRFSMApple2: TMenuItem
Caption = 'Apple ]['
OnClick = miPRFSMApple2Click
end
object N14: TMenuItem
Caption = '-'
end
@ -10611,14 +10640,14 @@ object GUIForm: TGUIForm
Enabled = False
Interval = 50
OnTimer = WaitReposTimer
Left = 238
Top = 223
left = 238
top = 223
end
object SPMenu: TPopupMenu
OnPopup = DiskMenuPopup
OnClose = DiskMenuClose
Left = 24
Top = 272
left = 24
top = 272
object miSPConnect: TMenuItem
Caption = 'Connect Disk'
OnClick = miSPFileClick

View File

@ -25,6 +25,13 @@ type
btnRead: TButton;
btnWrite: TButton;
btnHide: TButton;
MenuItem13: TMenuItem;
MenuItem17: TMenuItem;
MenuItem18: TMenuItem;
miPRFSMApple2: TMenuItem;
miPRFSMApple2Auto: TMenuItem;
miPRFAppleII: TMenuItem;
miPRFIIAuto: TMenuItem;
miDisableScanlines: TMenuItem;
miIssue: TMenuItem;
SPMenu: TPopupMenu;
@ -369,9 +376,12 @@ type
Shift: TShiftState; X, Y: Integer);
procedure InputClick(Sender: TObject);
procedure MenuItem10Click(Sender: TObject);
procedure MenuItem11Click(Sender: TObject);
procedure MenuItem12Click(Sender: TObject);
procedure MenuItem14Click(Sender: TObject);
procedure MenuItem15Click(Sender: TObject);
procedure MenuItem16Click(Sender: TObject);
procedure MenuItem17Click(Sender: TObject);
procedure MicroM8ProcessTerminate(Sender: TObject);
procedure miD1InsBlankClick(Sender: TObject);
procedure miD2InsBlankClick(Sender: TObject);
@ -454,11 +464,15 @@ type
procedure miOpenPAKClick(Sender: TObject);
procedure miPasteTextClick(Sender: TObject);
procedure miPDFTO5sClick(Sender: TObject);
procedure miPRFAppleIIClick(Sender: TObject);
procedure miPRFIIAutoClick(Sender: TObject);
procedure miPRFIIeClick(Sender: TObject);
procedure miPRFIIeEnhancedClick(Sender: TObject);
procedure miPRFIIeEnhancedSoftcardClick(Sender: TObject);
procedure miPRFIIplusClick(Sender: TObject);
procedure miPRFRebootClick(Sender: TObject);
procedure miPRFSMApple2AutoClick(Sender: TObject);
procedure miPRFSMApple2Click(Sender: TObject);
procedure miPrinterPDFClick(Sender: TObject);
procedure miProfilesClick(Sender: TObject);
procedure miPSG0m100Click(Sender: TObject);
@ -881,7 +895,8 @@ end;
procedure TGUIForm.miAppsTerminalClick(Sender: TObject);
begin
BootFreeze( '/boot/apps/proterm.frz' );
//BootFreeze( '/boot/apps/proterm.frz' );
LaunchPAK('/micropaks/comms/proterm.pak');
end;
procedure TGUIForm.miAR100Click(Sender: TObject);
@ -1426,6 +1441,16 @@ begin
UpdateConfig( 'hardware/init.printer.timeout', TMenuItem(sender).Caption, true );
end;
procedure TGUIForm.miPRFAppleIIClick(Sender: TObject);
begin
SimpleGet( baseUrl+'/api/control/system/profile/set/apple2' );
end;
procedure TGUIForm.miPRFIIAutoClick(Sender: TObject);
begin
SimpleGet( baseUrl+'/api/control/system/profile/set/apple2-dsys' );
end;
procedure TGUIForm.miPRFIIeClick(Sender: TObject);
var
reply: integer;
@ -1459,6 +1484,16 @@ begin
SimpleGet( baseUrl+'/api/control/system/reboot' );
end;
procedure TGUIForm.miPRFSMApple2AutoClick(Sender: TObject);
begin
SimpleGet( baseUrl+'/api/control/system/profile/set/apple2-dsys' );
end;
procedure TGUIForm.miPRFSMApple2Click(Sender: TObject);
begin
SimpleGet( baseUrl+'/api/control/system/profile/set/apple2' );
end;
procedure TGUIForm.miPrinterPDFClick(Sender: TObject);
begin
case GetConfig( 'hardware/init.printer.timeout' ) of
@ -1477,7 +1512,9 @@ begin
'apple2e-en': miPRFIIeEnhanced.Checked := true;
'apple2e-en-cpm': miPRFIIeEnhancedSoftcard.Checked := true;
'apple2e': miPRFIIe.Checked := true;
'apple2plus': miPRFIIplus.Checked := true;
'apple2-plus': miPRFIIplus.Checked := true;
'apple2-dsys': miPRFIIAuto.Checked := true;
'apple2': miPRFAppleII.Checked := true;
end;
end;
@ -3127,15 +3164,12 @@ begin
//StatusBar1.SimpleText := 'Shift+Ctrl+'+char(Key);
Result := (Integer(Key) - 65) + SHIFT_CTRL_A;
end
else if (ssShift in Shift) or Caps then
Result := Integer(Key)
else if ssCtrl in Shift then
begin
if Key = 67 then
Result := 3
else
Result := CTRL_A + Integer(Key-65);
Result := Integer(Key-64);
end
else if (ssShift in Shift) or Caps then
Result := Integer(Key)
else if ssAlt in Shift then
begin
Result := (Integer(Key) - 65) + OPEN_APPLE_A;
@ -3177,7 +3211,8 @@ end;
procedure TGUIForm.FormKeyPress(Sender: TObject; var Key: char);
begin
//SendKey( Integer(Ord(Key)), 0, 1, 0 );
//if Key = #1 then
// SendKey( $e042, 0, 1, 0 );
end;
procedure TGUIForm.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
@ -3271,6 +3306,16 @@ begin
ShowM8;
end;
procedure TGUIForm.MenuItem11Click(Sender: TObject);
begin
LaunchPAK('/micropaks/comms/platoterm-irataonline.pak');
end;
procedure TGUIForm.MenuItem12Click(Sender: TObject);
begin
LaunchPAK('/micropaks/comms/platoterm-cyberserv.pak');
end;
procedure TGUIForm.MenuItem14Click(Sender: TObject);
begin
{ do fullscreen here }
@ -3327,6 +3372,11 @@ begin
end;
end;
procedure TGUIForm.MenuItem17Click(Sender: TObject);
begin
end;
procedure TGUIForm.MicroM8ProcessTerminate(Sender: TObject);
begin
//lblTerm.Caption := 'core has terminated';

View File

@ -1,13 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectOptions>
<Version Value="12"/>
<Version Value="11"/>
<PathDelim Value="\"/>
<General>
<Flags>
<CompatibilityMode Value="True"/>
</Flags>
<SessionStorage Value="InProjectDir"/>
<MainUnit Value="0"/>
<Title Value="microm8-gui"/>
<Scaled Value="True"/>
<ResourceType Value="res"/>

372
poc.lps
View File

@ -1,186 +1,186 @@
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectSession>
<PathDelim Value="\"/>
<Version Value="12"/>
<BuildModes Active="Default"/>
<Units Count="5">
<Unit0>
<Filename Value="poc.lpr"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="-1"/>
<WindowIndex Value="-1"/>
<TopLine Value="-1"/>
<CursorPos X="-1" Y="-1"/>
<UsageCount Value="323"/>
</Unit0>
<Unit1>
<Filename Value="main.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="GUIForm"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<IsVisibleTab Value="True"/>
<TopLine Value="3152"/>
<CursorPos X="10" Y="3173"/>
<UsageCount Value="323"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
</Unit1>
<Unit2>
<Filename Value="mixer.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="frmMixer"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="-1"/>
<TopLine Value="3"/>
<CursorPos X="26" Y="25"/>
<UsageCount Value="206"/>
</Unit2>
<Unit3>
<Filename Value="C:\lazarus\lcl\include\picture.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="576"/>
<CursorPos X="49" Y="591"/>
<UsageCount Value="93"/>
</Unit3>
<Unit4>
<Filename Value="images\memory.pas"/>
<ComponentName Value="memform"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="-1"/>
<TopLine Value="40"/>
<CursorPos X="17" Y="44"/>
<UsageCount Value="7"/>
</Unit4>
</Units>
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="main.pas"/>
<Caret Line="3046" Column="36" TopLine="3032"/>
</Position1>
<Position2>
<Filename Value="main.pas"/>
<Caret Line="2882" Column="27" TopLine="2867"/>
</Position2>
<Position3>
<Filename Value="main.pas"/>
<Caret Line="2888" Column="23" TopLine="2877"/>
</Position3>
<Position4>
<Filename Value="main.pas"/>
<Caret Line="2752" Column="28" TopLine="2729"/>
</Position4>
<Position5>
<Filename Value="main.pas"/>
<Caret Line="1788" Column="61" TopLine="1785"/>
</Position5>
<Position6>
<Filename Value="main.pas"/>
<Caret Line="2341" Column="6" TopLine="2313"/>
</Position6>
<Position7>
<Filename Value="main.pas"/>
<Caret Line="1801" Column="28" TopLine="1786"/>
</Position7>
<Position8>
<Filename Value="main.pas"/>
<Caret Line="2900" Column="14" TopLine="2888"/>
</Position8>
<Position9>
<Filename Value="main.pas"/>
<Caret Line="1897" Column="16" TopLine="1894"/>
</Position9>
<Position10>
<Filename Value="main.pas"/>
<Caret Line="426" Column="15" TopLine="408"/>
</Position10>
<Position11>
<Filename Value="main.pas"/>
<Caret Line="1183" TopLine="1178"/>
</Position11>
<Position12>
<Filename Value="main.pas"/>
<Caret Line="1923" Column="42" TopLine="1895"/>
</Position12>
<Position13>
<Filename Value="main.pas"/>
<Caret Line="2892" Column="43" TopLine="2879"/>
</Position13>
<Position14>
<Filename Value="main.pas"/>
<Caret Line="2899" Column="43" TopLine="2886"/>
</Position14>
<Position15>
<Filename Value="main.pas"/>
<Caret Line="1833" Column="87" TopLine="1829"/>
</Position15>
<Position16>
<Filename Value="main.pas"/>
<Caret Line="1839" Column="38" TopLine="1820"/>
</Position16>
<Position17>
<Filename Value="main.pas"/>
<Caret Line="1098" Column="15" TopLine="1092"/>
</Position17>
<Position18>
<Filename Value="main.pas"/>
<Caret Line="1925" Column="3" TopLine="1923"/>
</Position18>
<Position19>
<Filename Value="main.pas"/>
<Caret Line="3205" Column="13" TopLine="3198"/>
</Position19>
<Position20>
<Filename Value="main.pas"/>
<Caret Line="3279" Column="24" TopLine="3223"/>
</Position20>
<Position21>
<Filename Value="main.pas"/>
<Caret Line="581" Column="11" TopLine="563"/>
</Position21>
<Position22>
<Filename Value="main.pas"/>
<Caret Line="2250" Column="17" TopLine="2231"/>
</Position22>
<Position23>
<Filename Value="main.pas"/>
<Caret Line="2255" Column="14" TopLine="2231"/>
</Position23>
<Position24>
<Filename Value="main.pas"/>
<Caret Line="2265" Column="21" TopLine="2234"/>
</Position24>
<Position25>
<Filename Value="main.pas"/>
<Caret Line="3202" Column="9" TopLine="3174"/>
</Position25>
<Position26>
<Filename Value="main.pas"/>
<Caret Line="893" Column="40" TopLine="871"/>
</Position26>
<Position27>
<Filename Value="main.pas"/>
<Caret Line="348" Column="22" TopLine="330"/>
</Position27>
<Position28>
<Filename Value="main.pas"/>
<Caret Line="349" Column="22" TopLine="330"/>
</Position28>
<Position29>
<Filename Value="main.pas"/>
<Caret Line="350" Column="22" TopLine="330"/>
</Position29>
<Position30>
<Filename Value="main.pas"/>
<Caret Line="3189" Column="12" TopLine="3152"/>
</Position30>
</JumpHistory>
<RunParams>
<FormatVersion Value="2"/>
<Modes Count="0" ActiveMode=""/>
</RunParams>
</ProjectSession>
</CONFIG>
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectSession>
<PathDelim Value="\"/>
<Version Value="11"/>
<BuildModes Active="Default"/>
<Units Count="5">
<Unit0>
<Filename Value="poc.lpr"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="-1"/>
<WindowIndex Value="-1"/>
<TopLine Value="-1"/>
<CursorPos X="-1" Y="-1"/>
<UsageCount Value="323"/>
</Unit0>
<Unit1>
<Filename Value="main.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="GUIForm"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<IsVisibleTab Value="True"/>
<TopLine Value="3311"/>
<CursorPos X="3" Y="3313"/>
<UsageCount Value="323"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
</Unit1>
<Unit2>
<Filename Value="mixer.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="frmMixer"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="-1"/>
<TopLine Value="3"/>
<CursorPos X="26" Y="25"/>
<UsageCount Value="206"/>
</Unit2>
<Unit3>
<Filename Value="C:\lazarus\lcl\include\picture.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="576"/>
<CursorPos X="49" Y="591"/>
<UsageCount Value="93"/>
</Unit3>
<Unit4>
<Filename Value="images\memory.pas"/>
<ComponentName Value="memform"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="-1"/>
<TopLine Value="40"/>
<CursorPos X="17" Y="44"/>
<UsageCount Value="7"/>
</Unit4>
</Units>
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="main.pas"/>
<Caret Line="3189" Column="12" TopLine="3152"/>
</Position1>
<Position2>
<Filename Value="main.pas"/>
<Caret Line="3156" Column="25" TopLine="3153"/>
</Position2>
<Position3>
<Filename Value="main.pas"/>
<Caret Line="3157" Column="25" TopLine="3154"/>
</Position3>
<Position4>
<Filename Value="main.pas"/>
<Caret Line="3158" Column="25" TopLine="3155"/>
</Position4>
<Position5>
<Filename Value="main.pas"/>
<Caret Line="1479" Column="33" TopLine="1468"/>
</Position5>
<Position6>
<Filename Value="main.pas"/>
<Caret Line="2711" Column="3" TopLine="2709"/>
</Position6>
<Position7>
<Filename Value="main.pas"/>
<Caret Line="1462" Column="3" TopLine="1458"/>
</Position7>
<Position8>
<Filename Value="main.pas"/>
<Caret Line="1440" Column="66" TopLine="1438"/>
</Position8>
<Position9>
<Filename Value="main.pas"/>
<Caret Line="1445" Column="69" TopLine="1433"/>
</Position9>
<Position10>
<Filename Value="main.pas"/>
<Caret Line="1446" Column="69" TopLine="1434"/>
</Position10>
<Position11>
<Filename Value="main.pas"/>
<Caret Line="1448" Column="69" TopLine="1436"/>
</Position11>
<Position12>
<Filename Value="main.pas"/>
<Caret Line="1482" Column="66" TopLine="1480"/>
</Position12>
<Position13>
<Filename Value="main.pas"/>
<Caret Line="1491" Column="122" TopLine="1480"/>
</Position13>
<Position14>
<Filename Value="main.pas"/>
<Caret Line="1492" Column="122" TopLine="1481"/>
</Position14>
<Position15>
<Filename Value="main.pas"/>
<Caret Line="1493" Column="122" TopLine="1482"/>
</Position15>
<Position16>
<Filename Value="main.pas"/>
<Caret Line="895" Column="7" TopLine="892"/>
</Position16>
<Position17>
<Filename Value="main.pas"/>
<Caret Line="592" Column="45" TopLine="576"/>
</Position17>
<Position18>
<Filename Value="main.pas"/>
<Caret Line="586" Column="25" TopLine="576"/>
</Position18>
<Position19>
<Filename Value="main.pas"/>
<Caret Line="895" Column="13" TopLine="882"/>
</Position19>
<Position20>
<Filename Value="main.pas"/>
<Caret Line="1417" Column="16" TopLine="1407"/>
</Position20>
<Position21>
<Filename Value="main.pas"/>
<Caret Line="2400" Column="34" TopLine="2400"/>
</Position21>
<Position22>
<Filename Value="main.pas"/>
<Caret Line="3318" Column="65" TopLine="3309"/>
</Position22>
<Position23>
<Filename Value="main.pas"/>
<Caret Line="3316" Column="50" TopLine="3309"/>
</Position23>
<Position24>
<Filename Value="main.pas"/>
<Caret Line="3317" Column="50" TopLine="3310"/>
</Position24>
<Position25>
<Filename Value="main.pas"/>
<Caret Line="3319" Column="50" TopLine="3312"/>
</Position25>
<Position26>
<Filename Value="main.pas"/>
<Caret Line="3380" Column="3" TopLine="3378"/>
</Position26>
<Position27>
<Filename Value="main.pas"/>
<Caret Line="3314" Column="3" TopLine="3312"/>
</Position27>
<Position28>
<Filename Value="main.pas"/>
<Caret Line="3315" Column="3" TopLine="3313"/>
</Position28>
<Position29>
<Filename Value="main.pas"/>
<Caret Line="3314" Column="3" TopLine="3312"/>
</Position29>
<Position30>
<Filename Value="main.pas"/>
<Caret Line="3313" Column="3" TopLine="3311"/>
</Position30>
</JumpHistory>
<RunParams>
<FormatVersion Value="2"/>
<Modes Count="0" ActiveMode=""/>
</RunParams>
</ProjectSession>
</CONFIG>

BIN
poc.res

Binary file not shown.