mirror of
https://github.com/livingcomputermuseum/sImlac.git
synced 2026-02-02 15:01:32 +00:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
024d95994b | ||
|
|
8d866c46c4 |
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()
|
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();
|
Console.WriteLine();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,111 @@ namespace imlac
|
|||||||
SGR1, // reduced intensity
|
SGR1, // reduced intensity
|
||||||
Point, // increased intensity
|
Point, // increased intensity
|
||||||
Debug, // For debugging purposes
|
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>
|
/// <summary>
|
||||||
/// IImlacConsole provides the interface for the components making up a standard
|
/// IImlacConsole provides the interface for the components making up a standard
|
||||||
|
|||||||
@@ -43,8 +43,7 @@ namespace imlac
|
|||||||
{
|
{
|
||||||
_system = system;
|
_system = system;
|
||||||
_mem = _system.Memory;
|
_mem = _system.Memory;
|
||||||
_instructionCache = new Instruction[Memory.Size];
|
_instructionCache = new Instruction[Memory.Size];
|
||||||
_instructionState = ExecState.Fetch;
|
|
||||||
|
|
||||||
_iotDispatch = new IIOTDevice[0x200]; // 9 bits of IOT instructions
|
_iotDispatch = new IIOTDevice[0x200]; // 9 bits of IOT instructions
|
||||||
|
|
||||||
@@ -58,6 +57,7 @@ namespace imlac
|
|||||||
_link = 0;
|
_link = 0;
|
||||||
_currentInstruction = null;
|
_currentInstruction = null;
|
||||||
_currentIndirectAddress = 0x0000;
|
_currentIndirectAddress = 0x0000;
|
||||||
|
_instructionState = ExecState.Fetch;
|
||||||
_state = ProcessorState.Halted;
|
_state = ProcessorState.Halted;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace imlac
|
|
||||||
{
|
|
||||||
class Program
|
|
||||||
{
|
|
||||||
static void Main(string[] args)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
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>
|
<WarningLevel>4</WarningLevel>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="SdlDotNet, Version=6.1.0.0, Culture=neutral, PublicKeyToken=26ad4f7e10c61408, processorArchitecture=MSIL">
|
<Reference Include="SDL2-CS, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<HintPath>..\packages\SDL2-CS.dll.2.0.0.0\lib\net20\SDL2-CS.dll</HintPath>
|
||||||
<HintPath>..\..\..\Windows\assembly\GAC_MSIL\SdlDotNet\6.1.0.0__26ad4f7e10c61408\SdlDotNet.dll</HintPath>
|
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
@@ -98,6 +97,7 @@
|
|||||||
<None Include="boot\tty">
|
<None Include="boot\tty">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</None>
|
</None>
|
||||||
|
<None Include="packages.config" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- 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
|
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
|
there. Support for additional hardware is planned, but is mostly dependent on
|
||||||
finding software that requires it.
|
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
|
Questions, comments, or bug reports can be directed at
|
||||||
joshd@livingcomputers.org.
|
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:
|
Bootstrapping an Imlac is a pretty straightforward process:
|
||||||
@@ -70,10 +87,10 @@ halt if bit 0 is not set.
|
|||||||
|
|
||||||
Will usually set you right.
|
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
|
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.
|
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).
|
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
|
console is inactive; press Ctrl-C to stop the Imlac and return to the command
|
||||||
prompt.
|
prompt.
|
||||||
|
|
||||||
3.3 The sImlac display
|
4.3 The sImlac display
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
sImlac creates a window that simulates the Imlac's vector display and allows
|
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
|
will be displayed here. By default, the display is shown in a window, pressing
|
||||||
the "Insert" key will toggle between window and fullscreen modes.
|
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.
|
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.
|
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
|
Some Imlac software (mostly games) use the Data Switches on the Imlac's front
|
||||||
@@ -309,3 +326,12 @@ Thanks go out to:
|
|||||||
on it!
|
on it!
|
||||||
|
|
||||||
- Bitsavers.org for making documentation for the Imlac available.
|
- 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>
|
||||||
Reference in New Issue
Block a user