mirror of
https://github.com/livingcomputermuseum/ContrAlto.git
synced 2026-02-28 01:16:11 +00:00
Updated documentation.
This commit is contained in:
@@ -278,7 +278,7 @@ namespace Contralto
|
||||
public static void ReadConfiguration()
|
||||
{
|
||||
if (Configuration.Platform == PlatformType.Windows
|
||||
&& !string.IsNullOrWhiteSpace(StartupOptions.ConfigurationFile))
|
||||
&& string.IsNullOrWhiteSpace(StartupOptions.ConfigurationFile))
|
||||
{
|
||||
//
|
||||
// By default, on Windows we use the app Settings functionality
|
||||
|
||||
2
Contralto/Properties/Resources.Designer.cs
generated
2
Contralto/Properties/Resources.Designer.cs
generated
@@ -19,7 +19,7 @@ namespace Contralto.Properties {
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
@@ -160,4 +160,64 @@
|
||||
<data name="dragon" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\dragon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="MouseCaptureActiveText" xml:space="preserve">
|
||||
<value>Alto Mouse/Keyboard captured. Press Alt to release.</value>
|
||||
</data>
|
||||
<data name="MouseCaptureInactiveText" xml:space="preserve">
|
||||
<value>Click on display to capture Alto Mouse/Keyboard.</value>
|
||||
</data>
|
||||
<data name="NoImageLoadedText" xml:space="preserve">
|
||||
<value><no image loaded></value>
|
||||
</data>
|
||||
<data name="PlaybackInProgressText" xml:space="preserve">
|
||||
<value>Script playback in Progress.</value>
|
||||
</data>
|
||||
<data name="RecordingInProgressText" xml:space="preserve">
|
||||
<value>Script recording in Progress.</value>
|
||||
</data>
|
||||
<data name="ScreenshotDefaultFileName" xml:space="preserve">
|
||||
<value>Screenshot.png</value>
|
||||
</data>
|
||||
<data name="ScreenshotErrorText" xml:space="preserve">
|
||||
<value>Could not save screenshot. Check the specified filename and path and try again.</value>
|
||||
</data>
|
||||
<data name="ScreenshotFilter" xml:space="preserve">
|
||||
<value>PNG Images (*.png)|*.png|All Files (*.*)|*.*</value>
|
||||
</data>
|
||||
<data name="ScreenshotTitle" xml:space="preserve">
|
||||
<value>Select destination for screenshot.</value>
|
||||
</data>
|
||||
<data name="ScriptFilter" xml:space="preserve">
|
||||
<value>Alto Script Files (*.script)|*.script|All Files (*.*)|*.*</value>
|
||||
</data>
|
||||
<data name="ScriptPlaybackTitle" xml:space="preserve">
|
||||
<value>Select script file to play</value>
|
||||
</data>
|
||||
<data name="ScriptRecordTitle" xml:space="preserve">
|
||||
<value>Select path for script file to record</value>
|
||||
</data>
|
||||
<data name="StartPlaybackText" xml:space="preserve">
|
||||
<value>Play Script...</value>
|
||||
</data>
|
||||
<data name="StartRecordingText" xml:space="preserve">
|
||||
<value>Record Script...</value>
|
||||
</data>
|
||||
<data name="StopPlaybackText" xml:space="preserve">
|
||||
<value>Stop Playback</value>
|
||||
</data>
|
||||
<data name="StopRecordingText" xml:space="preserve">
|
||||
<value>Stop Recording</value>
|
||||
</data>
|
||||
<data name="SystemErrorText" xml:space="preserve">
|
||||
<value>Alto Stopped due to error. See Debugger.</value>
|
||||
</data>
|
||||
<data name="SystemRunningText" xml:space="preserve">
|
||||
<value>Alto Running.</value>
|
||||
</data>
|
||||
<data name="SystemStoppedText" xml:space="preserve">
|
||||
<value>Alto Stopped.</value>
|
||||
</data>
|
||||
<data name="TridentFilter" xml:space="preserve">
|
||||
<value>Alto Trident Disk Images (*.dsk80, *.dsk300)|*.dsk80;*.dsk300|Trident T80 Disk Images (*.dsk80)|*.dsk80|Trident T300 Disk Images (*.dsk300)|*.dsk300|All Files (*.*)|*.*</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -492,7 +492,14 @@ namespace Contralto.SdlUI
|
||||
_sdlRenderer = SDL.SDL_CreateRenderer(_sdlWindow, -1, SDL.SDL_RendererFlags.SDL_RENDERER_ACCELERATED);
|
||||
if (_sdlRenderer == IntPtr.Zero)
|
||||
{
|
||||
throw new InvalidOperationException("SDL_CreateRenderer failed.");
|
||||
// Fall back to software
|
||||
_sdlRenderer = SDL.SDL_CreateRenderer(_sdlWindow, -1, SDL.SDL_RendererFlags.SDL_RENDERER_SOFTWARE);
|
||||
|
||||
if (_sdlRenderer == IntPtr.Zero)
|
||||
{
|
||||
// Still no luck.
|
||||
throw new InvalidOperationException("SDL_CreateRenderer failed.");
|
||||
}
|
||||
}
|
||||
|
||||
_displayTexture = SDL.SDL_CreateTexture(
|
||||
|
||||
@@ -73,7 +73,8 @@ namespace Contralto.SdlUI
|
||||
|
||||
CommandResult state = CommandResult.Normal;
|
||||
|
||||
while (state != CommandResult.Quit)
|
||||
while (state != CommandResult.Quit &&
|
||||
state != CommandResult.QuitNoSave)
|
||||
{
|
||||
state = CommandResult.Normal;
|
||||
try
|
||||
@@ -97,6 +98,11 @@ namespace Contralto.SdlUI
|
||||
//
|
||||
_controller.StopExecution();
|
||||
|
||||
//
|
||||
// Commit disks if asked to do so.
|
||||
//
|
||||
_commitDisksAtShutdown = (state == CommandResult.Quit);
|
||||
|
||||
//
|
||||
// Ensure the main window is closed.
|
||||
//
|
||||
|
||||
@@ -329,7 +329,7 @@ AlternateBootType: The type of boot to default to (Section 5.0)
|
||||
|
||||
EnablePrinting: Enables or disables printing via the emulated Orbit / Dover interface.
|
||||
|
||||
PrintOutputPath: Specifies the folder that output PDFs are written to. When the Alto
|
||||
PrintOutputPath: Specifies the folder that output PDFs are written to. When the Alto
|
||||
prints a new document, a new PDF file will be created in this
|
||||
directory containing the printer's output.
|
||||
|
||||
@@ -337,8 +337,8 @@ ReversePageOrder: Controls the order in which pages are written to the PDF --
|
||||
the way the original Dover printer worked, most Alto software printed
|
||||
documents in reverse order (i.e. the last page printed first) so
|
||||
that the pages didn't have to be reshuffled when picked up from the
|
||||
tray. By default, leaving this box checked is probably what you want,
|
||||
but if your documents come out backwards, uncheck it.
|
||||
tray. By default, setting this to true is probably what you want,
|
||||
but if your documents come out backwards, set it to false.
|
||||
|
||||
|
||||
4.1 Ethernet Encapsulation Setup
|
||||
@@ -403,7 +403,7 @@ Load Disk <drive> <path> - Loads the specified Diablo drive (0 or 1) with the re
|
||||
|
||||
Unload Disk <drive> - Unloads the specified Diablo drive (0 or 1). Changes to disk contents are saved.
|
||||
|
||||
Create Disk <drive> - Creates a new (empty) disk image and loads the specified Diablo drive with it.
|
||||
New Disk <drive> - Creates a new (empty) disk image and loads the specified Diablo drive with it.
|
||||
|
||||
Show Disk <drive> - Displays the currently loaded image for the specified Diablo drive (0 or 1).
|
||||
|
||||
@@ -413,7 +413,7 @@ Load Trident <drive> <path> - Loads the specified Trident drive (0 through 7) wi
|
||||
Unload Trident <drive> - Unloads the specified Trident drive (0 through 7). Changes to disk
|
||||
contents are saved.
|
||||
|
||||
Create Trident <drive> - Creates a new (empty) disk image and loads the specified Trident drive with it.
|
||||
New Trident <drive> - Creates a new (empty) disk image and loads the specified Trident drive with it.
|
||||
Specifying a file extension of ".dsk80" will create a new T-80 disk; an extension
|
||||
of ".dsk300" will create a new T-300 disk.
|
||||
|
||||
@@ -436,6 +436,15 @@ Set Keyboard Net Boot File - Sets the boot file used for net booting. Values be
|
||||
Set Keyboard Disk Boot Address - Sets the boot address used for disk booting. Values between 0 and
|
||||
177777 are allowed.
|
||||
|
||||
Start Recording <script path> - Begins recording of mouse and keyboard inputs to the specified
|
||||
script file.
|
||||
|
||||
Stop Recording - Ends any active script being recorded.
|
||||
|
||||
Start Playback <script path> - Begins playback of the specified script file.
|
||||
|
||||
Stop Playback - Ends any active script being replayed.
|
||||
|
||||
Show Commands - Shows debugger commands and their descriptions.
|
||||
|
||||
|
||||
@@ -457,9 +466,97 @@ specifying the address to be booted from disk.
|
||||
|
||||
The "Set Keyboard Net Boot Address" command accepts a 16-bit octal value (from 0 to 177777)
|
||||
specifying the file to be net booted.
|
||||
|
||||
|
||||
6.0 Scripting
|
||||
=============
|
||||
|
||||
ContrAlto supports scripting of mouse and keyboard inputs as well as loading and
|
||||
unloading of disk packs. Scripts can be recorded live, using the emulator or
|
||||
they can be handcrafted using a text editor of your choice.
|
||||
|
||||
|
||||
6.1 Recording
|
||||
-------------
|
||||
|
||||
Recording of a new script can be started by using the "Start Recording"
|
||||
debugger command Recording is only active while the emulated Alto system is running.
|
||||
|
||||
During recording, mouse and keyboard inputs are captured, as are the following
|
||||
actions:
|
||||
- Loading, unloading, or creating new disk packs
|
||||
- Resetting the emulated Alto
|
||||
- Quitting ContrAlto
|
||||
|
||||
Recording may be stopped at any time by using the "Stop Recording" debugger command.
|
||||
|
||||
|
||||
6.2 Playback
|
||||
------------
|
||||
|
||||
Playback of an existing script can be started by using the "Start Playback" debugger
|
||||
command. If the emulated Alto is not currently running when a script is played,
|
||||
it will be started.
|
||||
|
||||
During playback, mouse and keyboard input is disabled. You can stop playback
|
||||
at any time via the "Stop Playback" debugger command.
|
||||
|
||||
|
||||
6.3 Script Format
|
||||
-----------------
|
||||
The script file format is very very basic; it’s plaintext, one entry per line.
|
||||
Each entry is of the form:
|
||||
|
||||
[timestamp] [action]
|
||||
|
||||
Where [timestamp] is a relative time specified either in nanoseconds (no
|
||||
suffix) or milliseconds (‘ms’ suffix). Additionally, a timestamp specified as
|
||||
a “-“ (dash) indicates that the action should occur immediately (i.e. at a
|
||||
relative timestamp of 0).
|
||||
|
||||
Any line beginning with "#" is a comment to end-of-line.
|
||||
|
||||
Each non-comment line specifies an action to take and the time
|
||||
(relative to the previous line) to execute it. The first line’s execution time
|
||||
is relative to the time at which the script is started.
|
||||
|
||||
There are a number of actions which can be specified, these are:
|
||||
|
||||
KeyDown [key]: Presses the specified key on the keyboard
|
||||
|
||||
KeyUp [key]: Releases the specified key on the keyboard
|
||||
|
||||
MouseDown [button]: Presses the specified mouse button (“Left”, “Right”, or “Middle”)
|
||||
|
||||
MouseUp [button]: Releases the specified mouse button
|
||||
|
||||
MouseMove [dx,dy]: Specifies a relative mouse movement.
|
||||
|
||||
MouseMoveAbsolute [x,y]: Specifies an absolute mouse movement.
|
||||
|
||||
Command [command string]: Executes the specified ContrAlto command (these are
|
||||
identical to those typed at the debug console -- see Section 5.1), and all
|
||||
commands are supported except for those that display status (“show
|
||||
trident disk”, for example).
|
||||
|
||||
KeyStroke [key1]...[keyN]: Presses and then releases the specified keys.
|
||||
(e.g. "KeyStroke Ctrl A" will press Ctrl and A simultaneously, then release them.)
|
||||
|
||||
Type [string]: Sends keystrokes to type the given ASCII string
|
||||
|
||||
TypeLine [string]: as above, but terminates with a CR.
|
||||
|
||||
Wait: Waits for the Alto to execute a STARTIO with bit 2 set (in the
|
||||
Xerox bit ordering where MSB is bit 0). Used to synchronize execution.
|
||||
|
||||
Valid values for KeyDown/KeyUp/KeyStroke are:
|
||||
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z D0 D1 D2 D3 D4 D5 D6 D7
|
||||
D8 D9 Space Plus Minus Comma Period Semicolon Quote LBracket RBracket
|
||||
FSlash BSlash Arrow Lock LShift RShift LF BS DEL ESC TAB CTRL Return
|
||||
BlankTop BlankMiddle BlankBottom
|
||||
|
||||
|
||||
6.0 Known Issues
|
||||
7.0 Known Issues
|
||||
================
|
||||
|
||||
At the moment, the following issues are known and being worked on. If you find
|
||||
@@ -473,7 +570,7 @@ an issue not listed here, see section 7.0 to report a new bug.
|
||||
- Fullscreen video is not yet implemented on Unix / OS X.
|
||||
|
||||
|
||||
7.0 Reporting Bugs
|
||||
8.0 Reporting Bugs
|
||||
==================
|
||||
|
||||
If you believe you have found a new issue (or have a feature request) please
|
||||
@@ -490,7 +587,7 @@ The more detailed the bug report, the more possible it is for me to track down
|
||||
the cause.
|
||||
|
||||
|
||||
8.0 Source Code
|
||||
9.0 Source Code
|
||||
===============
|
||||
|
||||
The complete source code is available under the GPLv3 license on GitHub at:
|
||||
@@ -500,7 +597,7 @@ https://github.com/livingcomputermuseum/ContrAlto
|
||||
Contributions are welcome!
|
||||
|
||||
|
||||
9.0 Thanks and Acknowledgements
|
||||
10.0 Thanks and Acknowledgements
|
||||
===============================
|
||||
|
||||
ContrAlto would not have been possible without the amazing preservation work of
|
||||
@@ -518,9 +615,17 @@ https://github.com/flibitijibibo/SDL2-CS.
|
||||
|
||||
PDF generation is provided by the iTextSharp library, see: https://github.com/itext.
|
||||
|
||||
10.0 Change History
|
||||
11.0 Change History
|
||||
===================
|
||||
|
||||
V1.2.3
|
||||
------
|
||||
- Added basic scripting support.
|
||||
- Tweaked mouse handling to avoid Alto microcode bug and to smooth mouse
|
||||
movement.
|
||||
- Fix for stale packets left in ethernet input queue when receiver is off.
|
||||
- Minor code cleanup.
|
||||
|
||||
V1.2.2
|
||||
------
|
||||
- Initial support for the Trident controller and associated T-80 and T-300
|
||||
|
||||
@@ -488,15 +488,107 @@ Reserved Memory:
|
||||
Shows the contents of most "well known" memory locations. See the
|
||||
Alto HW Reference manual (link in Sectoin 3.1.2) for what these mean.
|
||||
|
||||
|
||||
6.0 Known Issues
|
||||
|
||||
6.0 Scripting
|
||||
=============
|
||||
|
||||
ContrAlto supports scripting of mouse and keyboard inputs as well as loading and
|
||||
unloading of disk packs. Scripts can be recorded live, using the emulator or
|
||||
they can be handcrafted using a text editor of your choice.
|
||||
|
||||
|
||||
6.1 Recording
|
||||
-------------
|
||||
|
||||
Recording of a new script can be started by using the
|
||||
"File->Script->Record Script..." menu item. You will be prompted for a
|
||||
filename for the script after which recording will start. Recording is only
|
||||
active while the emulated Alto system is running.
|
||||
|
||||
During recording, mouse and keyboard inputs are captured, as are the following
|
||||
actions:
|
||||
- Loading, unloading, or creating new disk packs
|
||||
- Resetting the emulated Alto
|
||||
- Quitting ContrAlto
|
||||
|
||||
Recording may be stopped at any time by using the "File->Script->Stop Recording"
|
||||
menu.
|
||||
|
||||
|
||||
6.2 Playback
|
||||
------------
|
||||
|
||||
Playback of an existing script can be started by using the
|
||||
"File->Script->Play Script..." menu item. You will be prompted for a
|
||||
filename for the script after which playback will start. If the emulated Alto
|
||||
is not currently running when a script is played, it will be started.
|
||||
|
||||
During playback, mouse and keyboard input is disabled. You can stop playback
|
||||
at any time via the "File->Script->Stop Playback" menu item.
|
||||
|
||||
|
||||
6.3 Script Format
|
||||
-----------------
|
||||
The script file format is very very basic; it’s plaintext, one entry per line.
|
||||
Each entry is of the form:
|
||||
|
||||
[timestamp] [action]
|
||||
|
||||
Where [timestamp] is a relative time specified either in nanoseconds (no
|
||||
suffix) or milliseconds (‘ms’ suffix). Additionally, a timestamp specified as
|
||||
a “-“ (dash) indicates that the action should occur immediately (i.e. at a
|
||||
relative timestamp of 0).
|
||||
|
||||
Any line beginning with "#" is a comment to end-of-line.
|
||||
|
||||
Each non-comment line specifies an action to take and the time
|
||||
(relative to the previous line) to execute it. The first line’s execution time
|
||||
is relative to the time at which the script is started.
|
||||
|
||||
There are a number of actions which can be specified, these are:
|
||||
|
||||
KeyDown [key]: Presses the specified key on the keyboard
|
||||
|
||||
KeyUp [key]: Releases the specified key on the keyboard
|
||||
|
||||
MouseDown [button]: Presses the specified mouse button (“Left”, “Right”, or “Middle”)
|
||||
|
||||
MouseUp [button]: Releases the specified mouse button
|
||||
|
||||
MouseMove [dx,dy]: Specifies a relative mouse movement.
|
||||
|
||||
MouseMoveAbsolute [x,y]: Specifies an absolute mouse movement.
|
||||
|
||||
Command [command string]: Executes the specified ContrAlto command (these are
|
||||
identical to those typed at the debug console -- see readme-mono.txt), and all
|
||||
commands are supported except for those that display status (“show
|
||||
trident disk”, for example).
|
||||
|
||||
KeyStroke [key1]...[keyN]: Presses and then releases the specified keys.
|
||||
(e.g. "KeyStroke Ctrl A" will press Ctrl and A simultaneously, then release them.)
|
||||
|
||||
Type [string]: Sends keystrokes to type the given ASCII string.
|
||||
|
||||
TypeLine <string>: as above, but terminates with a CR. <string> is optional.
|
||||
|
||||
Wait: Waits for the Alto to execute a STARTIO with bit 2 set (in the
|
||||
Xerox bit ordering where MSB is bit 0). Used to synchronize execution.
|
||||
|
||||
Valid values for KeyDown/KeyUp/KeyStroke are:
|
||||
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z D0 D1 D2 D3 D4 D5 D6 D7
|
||||
D8 D9 Space Plus Minus Comma Period Semicolon Quote LBracket RBracket
|
||||
FSlash BSlash Arrow Lock LShift RShift LF BS DEL ESC TAB CTRL Return
|
||||
BlankTop BlankMiddle BlankBottom
|
||||
|
||||
|
||||
7.0 Known Issues
|
||||
================
|
||||
|
||||
- TriEx reports a status of "00000" randomly when doing read operations from
|
||||
Trident disks. TFU and IFS work correctly.
|
||||
|
||||
|
||||
7.0 Reporting Bugs
|
||||
8.0 Reporting Bugs
|
||||
==================
|
||||
|
||||
If you believe you have found a new issue (or have a feature request) please
|
||||
@@ -513,7 +605,7 @@ The more detailed the bug report, the more possible it is for me to track down
|
||||
the cause.
|
||||
|
||||
|
||||
8.0 Source Code
|
||||
9.0 Source Code
|
||||
===============
|
||||
|
||||
The complete source code is available under the GPLv3 license on GitHub at:
|
||||
@@ -523,7 +615,7 @@ https://github.com/livingcomputermuseum/ContrAlto
|
||||
Contributions are welcome!
|
||||
|
||||
|
||||
9.0 Thanks and Acknowledgements
|
||||
10.0 Thanks and Acknowledgements
|
||||
===============================
|
||||
|
||||
ContrAlto would not have been possible without the amazing preservation work of
|
||||
@@ -542,9 +634,17 @@ https://github.com/flibitijibibo/SDL2-CS.
|
||||
PDF generation is provided by the iTextSharp library, see: https://github.com/itext.
|
||||
|
||||
|
||||
10.0 Change History
|
||||
11.0 Change History
|
||||
===================
|
||||
|
||||
V1.2.3
|
||||
------
|
||||
- Added basic scripting support.
|
||||
- Tweaked mouse handling to avoid Alto microcode bug and to smooth mouse
|
||||
movement.
|
||||
- Fix for stale packets left in ethernet input queue when receiver is off.
|
||||
- Minor code cleanup.
|
||||
|
||||
V1.2.2
|
||||
------
|
||||
- Initial support for the Trident controller and associated T-80 and T-300
|
||||
|
||||
Reference in New Issue
Block a user