1
0
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:
Josh Dersch 2018-10-05 12:32:01 -07:00
parent 8d866c46c4
commit 024d95994b
14 changed files with 722 additions and 561 deletions

3
.vs/ProjectSettings.json Normal file
View File

@ -0,0 +1,3 @@
{
"CurrentProjectSetting": null
}

View File

@ -0,0 +1,8 @@
{
"ExpandedNodes": [
"",
"\\imlac"
],
"SelectedNode": "\\imlac",
"PreviewInSolutionExplorer": false
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
.vs/slnx.sqlite Normal file

Binary file not shown.

View File

@ -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();
}

View File

@ -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

View File

@ -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;
}

File diff suppressed because it is too large Load Diff

View File

@ -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.

View File

@ -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
View 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>