mirror of
https://github.com/livingcomputermuseum/sImlac.git
synced 2026-01-11 23:53:24 +00:00
Changed SDL wrapper to SDL-CS for better cross-platform support.
This commit is contained in:
parent
8d866c46c4
commit
024d95994b
3
.vs/ProjectSettings.json
Normal file
3
.vs/ProjectSettings.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"CurrentProjectSetting": null
|
||||
}
|
||||
8
.vs/VSWorkspaceState.json
Normal file
8
.vs/VSWorkspaceState.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"ExpandedNodes": [
|
||||
"",
|
||||
"\\imlac"
|
||||
],
|
||||
"SelectedNode": "\\imlac",
|
||||
"PreviewInSolutionExplorer": false
|
||||
}
|
||||
BIN
.vs/imlac/DesignTimeBuild/.dtbcache
Normal file
BIN
.vs/imlac/DesignTimeBuild/.dtbcache
Normal file
Binary file not shown.
BIN
.vs/imlac/v15/Server/sqlite3/storage.ide
Normal file
BIN
.vs/imlac/v15/Server/sqlite3/storage.ide
Normal file
Binary file not shown.
BIN
.vs/imlac/v15/Server/sqlite3/storage.ide-shm
Normal file
BIN
.vs/imlac/v15/Server/sqlite3/storage.ide-shm
Normal file
Binary file not shown.
BIN
.vs/imlac/v15/Server/sqlite3/storage.ide-wal
Normal file
BIN
.vs/imlac/v15/Server/sqlite3/storage.ide-wal
Normal file
Binary file not shown.
BIN
.vs/slnx.sqlite
Normal file
BIN
.vs/slnx.sqlite
Normal file
Binary file not shown.
@ -124,7 +124,7 @@ namespace imlac
|
||||
|
||||
static void PrintHerald()
|
||||
{
|
||||
Console.WriteLine("sImlac v0.1. (c) 2016, 2017 Living Computers: Museum+Labs");
|
||||
Console.WriteLine("sImlac v0.2. (c) 2016-2018 Living Computers: Museum+Labs");
|
||||
Console.WriteLine();
|
||||
}
|
||||
|
||||
|
||||
@ -28,7 +28,111 @@ namespace imlac
|
||||
SGR1, // reduced intensity
|
||||
Point, // increased intensity
|
||||
Debug, // For debugging purposes
|
||||
}
|
||||
}
|
||||
|
||||
public enum VKeys
|
||||
{
|
||||
// Keys that map to Imlac keyboard keys
|
||||
Shift = 0x10,
|
||||
Ctrl = 0x11,
|
||||
Alt = 0x12,
|
||||
|
||||
End = 0x23,
|
||||
DownArrow = 0x28,
|
||||
RightArrow = 0x27,
|
||||
UpArrow = 0x26,
|
||||
LeftArrow = 0x25,
|
||||
Tab = 0x9,
|
||||
Return = 0xd,
|
||||
PageUp = 0x21,
|
||||
PageDown = 0x22,
|
||||
Home = 0x24,
|
||||
Pause = 0x91,
|
||||
Escape = 0x1b,
|
||||
Space = 0x20,
|
||||
|
||||
Comma = 0xbc,
|
||||
Plus = 0xbb,
|
||||
Period = 0xbe,
|
||||
QuestionMark = 0xbf,
|
||||
Zero = 0x30,
|
||||
One = 0x31,
|
||||
Two = 0x32,
|
||||
Three = 0x33,
|
||||
Four = 0x34,
|
||||
Five = 0x35,
|
||||
Six = 0x36,
|
||||
Seven = 0x37,
|
||||
Eight = 0x38,
|
||||
Nine = 0x39,
|
||||
Minus = 0xbd,
|
||||
Semicolon = 0xba,
|
||||
|
||||
Keypad0 = 0x60,
|
||||
Keypad2 = 0x62,
|
||||
Keypad4 = 0x64,
|
||||
Keypad5 = 0x65,
|
||||
Keypad6 = 0x66,
|
||||
DoubleQuote = 0xde,
|
||||
|
||||
A = 0x41,
|
||||
B = 0x42,
|
||||
C = 0x43,
|
||||
D = 0x44,
|
||||
E = 0x45,
|
||||
F = 0x46,
|
||||
G = 0x47,
|
||||
H = 0x48,
|
||||
I = 0x49,
|
||||
J = 0x4a,
|
||||
K = 0x4b,
|
||||
L = 0x4c,
|
||||
M = 0x4d,
|
||||
N = 0x4e,
|
||||
O = 0x4f,
|
||||
P = 0x50,
|
||||
Q = 0x51,
|
||||
R = 0x52,
|
||||
S = 0x53,
|
||||
T = 0x54,
|
||||
U = 0x55,
|
||||
V = 0x56,
|
||||
W = 0x57,
|
||||
X = 0x58,
|
||||
Y = 0x59,
|
||||
Z = 0x5a,
|
||||
|
||||
Delete = 0x8,
|
||||
|
||||
// Additional keys, not used by the Imlac but available
|
||||
// for data switch mapping.
|
||||
F1 = 0x70,
|
||||
F2 = 0x71,
|
||||
F3 = 0x72,
|
||||
F4 = 0x73,
|
||||
F5 = 0x74,
|
||||
F6 = 0x75,
|
||||
F7 = 0x76,
|
||||
F8 = 0x77,
|
||||
F9 = 0x78,
|
||||
F10 = 0x79,
|
||||
F11 = 0x7a,
|
||||
F12 = 0x7b,
|
||||
|
||||
Keypad1 = 0x61,
|
||||
Keypad3 = 0x63,
|
||||
Keypad7 = 0x67,
|
||||
Keypad8 = 0x68,
|
||||
Keypad9 = 0x69,
|
||||
|
||||
|
||||
// hack to toggle fullscreen.
|
||||
Insert = 0x2d,
|
||||
|
||||
// Special values for data switch mappings
|
||||
None0 = 0, // No key mapped to data switch, DS for this bit is set to 0
|
||||
None1 = 1, // Ditto, but for the value 1
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// IImlacConsole provides the interface for the components making up a standard
|
||||
|
||||
@ -43,8 +43,7 @@ namespace imlac
|
||||
{
|
||||
_system = system;
|
||||
_mem = _system.Memory;
|
||||
_instructionCache = new Instruction[Memory.Size];
|
||||
_instructionState = ExecState.Fetch;
|
||||
_instructionCache = new Instruction[Memory.Size];
|
||||
|
||||
_iotDispatch = new IIOTDevice[0x200]; // 9 bits of IOT instructions
|
||||
|
||||
@ -58,6 +57,7 @@ namespace imlac
|
||||
_link = 0;
|
||||
_currentInstruction = null;
|
||||
_currentIndirectAddress = 0x0000;
|
||||
_instructionState = ExecState.Fetch;
|
||||
_state = ProcessorState.Halted;
|
||||
}
|
||||
|
||||
|
||||
1106
imlac/SDLConsole.cs
1106
imlac/SDLConsole.cs
File diff suppressed because it is too large
Load Diff
@ -35,9 +35,8 @@
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="SdlDotNet, Version=6.1.0.0, Culture=neutral, PublicKeyToken=26ad4f7e10c61408, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\Windows\assembly\GAC_MSIL\SdlDotNet\6.1.0.0__26ad4f7e10c61408\SdlDotNet.dll</HintPath>
|
||||
<Reference Include="SDL2-CS, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\SDL2-CS.dll.2.0.0.0\lib\net20\SDL2-CS.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
@ -98,6 +97,7 @@
|
||||
<None Include="boot\tty">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
sImlac v0.1 README - (c) 2016, 2017 Living Computers: Museum+Labs
|
||||
sImlac v0.2 README - (c) 2016-2018 Living Computers: Museum+Labs
|
||||
-----------------------------------------------------------------
|
||||
|
||||
1. Overview
|
||||
@ -23,12 +23,29 @@ This is enough to have fun with the small amount of archived software that's out
|
||||
there. Support for additional hardware is planned, but is mostly dependent on
|
||||
finding software that requires it.
|
||||
|
||||
Since this is v0.1, there are still likely to be bugs.
|
||||
Since this is v0.2, there are still likely to be bugs.
|
||||
|
||||
Questions, comments, or bug reports can be directed at
|
||||
joshd@livingcomputers.org.
|
||||
|
||||
2. Getting Started
|
||||
2. System Requirements
|
||||
----------------------
|
||||
|
||||
sImlac is a .NET application and should run on will run on any Windows PC running
|
||||
Windows Vista or later, with version 4.5.3 or later of the .NET Framework installed.
|
||||
.NET should be present by default on Windows Vista and later; if it is not installed
|
||||
on your computer it can be obtained at https://www.microsoft.com/net.
|
||||
|
||||
As ContrAlto is a .NET application it will also run under Mono
|
||||
(http://www.mono-project.com/) on Unix and OS X.
|
||||
|
||||
sImlac uses SDL 2.0 for display and input. On Windows the appropriate SDL.dll is
|
||||
included in the distribution package. On Linux, use your system's package manager
|
||||
to install SDL 2.0; on OS X the easiest way to get SDL 2.0 is to use Homebrew
|
||||
(https://brew.sh/), via the "brew install sdl2" command.
|
||||
|
||||
|
||||
3. Getting Started
|
||||
------------------
|
||||
|
||||
Bootstrapping an Imlac is a pretty straightforward process:
|
||||
@ -70,10 +87,10 @@ halt if bit 0 is not set.
|
||||
|
||||
Will usually set you right.
|
||||
|
||||
3. Usage
|
||||
4. Usage
|
||||
--------
|
||||
|
||||
3.1 Command line arguments
|
||||
4.1 Command line arguments
|
||||
--------------------------
|
||||
|
||||
sImlac accepts one optional command line argument, which specifies a file to
|
||||
@ -85,7 +102,7 @@ the contents of "otherscript.txt" to be loaded and executed as a script.)
|
||||
Whitespace is ignored.
|
||||
|
||||
|
||||
3.2 The sImlac console/debugger
|
||||
4.2 The sImlac console/debugger
|
||||
-------------------------------
|
||||
|
||||
After startup, you will be at the sImlac debugger prompt (a '>' character).
|
||||
@ -106,7 +123,7 @@ While the simulated Imlac is running (via the 'go' or other commands) the
|
||||
console is inactive; press Ctrl-C to stop the Imlac and return to the command
|
||||
prompt.
|
||||
|
||||
3.3 The sImlac display
|
||||
4.3 The sImlac display
|
||||
----------------------
|
||||
|
||||
sImlac creates a window that simulates the Imlac's vector display and allows
|
||||
@ -114,7 +131,7 @@ keyboard input to the Imlac. When Imlac programs are running, their output
|
||||
will be displayed here. By default, the display is shown in a window, pressing
|
||||
the "Insert" key will toggle between window and fullscreen modes.
|
||||
|
||||
3.4 Commands
|
||||
4.4 Commands
|
||||
------------
|
||||
|
||||
reset : Resets the Imlac, but does not clear its memory.
|
||||
@ -237,7 +254,7 @@ show breakpoints : Lists the defined breakpoints.
|
||||
show commands : Displays a synopsis of available console commands.
|
||||
|
||||
|
||||
3.5 Data Switch Mappings
|
||||
4.5 Data Switch Mappings
|
||||
------------------------
|
||||
|
||||
Some Imlac software (mostly games) use the Data Switches on the Imlac's front
|
||||
@ -309,3 +326,12 @@ Thanks go out to:
|
||||
on it!
|
||||
|
||||
- Bitsavers.org for making documentation for the Imlac available.
|
||||
|
||||
|
||||
7. Revision History
|
||||
-------------------
|
||||
|
||||
v0.2 - Updated to use SDL-CS for better cross-platform support.
|
||||
|
||||
v0.1 - Initial Release
|
||||
|
||||
|
||||
4
imlac/packages.config
Normal file
4
imlac/packages.config
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="SDL2-CS.dll" version="2.0.0.0" targetFramework="net40" />
|
||||
</packages>
|
||||
Loading…
x
Reference in New Issue
Block a user