-
Notifications
You must be signed in to change notification settings - Fork 133
LINC: New emulator for the classic LINC computer. #505
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Adds support for the ISO/European "left backslash" or "less than" key. It's found between left shift and Z.
e26e0cf to
04d4627
Compare
04d4627 to
8be804e
Compare
We'll also want to add it to the CMake build. |
8be804e to
9eb4620
Compare
|
Oh right. I added the CMake stuff. |
5421f2b to
30cace1
Compare
|
@markpizz sent me the Visual Studio files and I added them here. |
1f8d1f1 to
feb44a0
Compare
|
@LegalizeAdulthood said:
Well, the .vcxproj, .vcxproj.filters and .vcxproj.user files for all the simulators were added back in February of 2023 by @tlhackque. None of them actually needs to be in source control, since they will be autogenerated when a newer Visual Studio version opens the simh.sln file. This takes several minutes, so it seems reasonable as to why they were added, The .user files have nothing special or concerning in them except for 4 lines of XML. The new linc.vcxproj file has been provided the same way all the other existing .vcxproj files were including the .vcxproj.user files. |
|
They aren't intended to be shared among developers; they are per-user settings. They don't belong in source control. It doesn't matter if they were added previously because a previous mistake doesn't make for a correct action now. |
|
I'm happy to remove the .user file, and will probably do so given the information above. I'll raise the more general issue on the mailing list. |
38e271e to
d5cbfa6
Compare
|
This documentation should make it easier to use the emulator: https://github.com/larsbrinkhoff/open-simh/blob/lars/linc/linc/README.md |
d5cbfa6 to
9859821
Compare
|
This has still not been merged, so I added a TTY device. This is a teletype connected to relay output 0. LAP6 will bit bang this output to send text for printing. (So the teletype can't be used for input.) The emulator samples the output to find the start bit edge, and then decodes bits at 110 baud (relative to CPU speed). Tested with PM (print manuscript) and PX (print index) from LAP6. |
36bc036 to
4d013a3
Compare
|
On 10/18/2025 5:20 AM, Abolish ICE wrote:
I believe one of the NIH recipients had their LINC repossessed for not
making effective use of the equipment (a rather infamous dolphin
researcher, if I remember right).
From what I read, the LINC was totally unsuited to the corrosive
environment at sea, and thus basically unusable by Dr. Lilly.
(Especially the LINCtape drives.)
|
4d013a3 to
2e71faf
Compare
|
Updated again to add a modified DO command. Without arguments, it will act like the DO button which executes a command from the switches. (With an argument, run a script like usual.) BOOT TAPE now accepts RCG=, RDC=, and START= to say how to boot. It works like toggling in a tape read command, pushing DO, and then starting at the specified address. The default is RCG 7300 and starting from 20; this is the conventional way to start LAP6. |
4b105e5 to
f3199c3
Compare
|
Added symbolic input. |
c7aba05 to
a5b3391
Compare
|
There's a companion repository with a LAP6 compatible assembler and filing tool. |
This emulates the classic LINC. The design was settled in 1965, increasing memory to 2048 words, and adding a Z register, an overflow flag, and an interrupt facility.
a5b3391 to
098526d
Compare
|
Steering committee @pkoning2 et al, feel free to merge this at any time. It's ready to go. I may push minor tweaks in the meanwhile, but that doesn't mean the emulator is unstable. |
|
Future directions: I might add support for the Spear, Inc micro-LINC 300 if software and documentation becomes available. There are LINCtapes with tests for the 300, but I would also like to see some more useful software. I'm unlikely to make additions to support the LINC-8 or PDP-12. Please refer to @vrs42's https://github.com/vrs42/simh for PDP-12 emulation. |
|
Thanks Lars. I would hope that other work will get merged here at some point. Having Open SIMH forks is perfectly valid of course, but it's more desirable to have new emulators merged. Otherwise things can diverge painfully far, as we can see with the unfortunate case of XHomer. |
|
Using your current code, "make linc" works fine and the self-test passes quickly. But "cmake/cmake-builder.sh --target linc" does the build without problem but the selftest hangs and eventually times out. |
These are tests for the classic LINC, including the features new in 1965: 2048 words of memory, a Z register, an overflow flag, and an interrupt facility.
Block 45 held damaged data, and block 51 was identical to block 52.
098526d to
4d38373
Compare
|
By the way: I try to avoid force-push and amended commits after the original push, but if you must, in the future at least please include |
|
I would recommend you do revise commits in an open pull request. If well done, it makes pull requests easier to review, and the history more useful in the future if it's necessary to go back and check what happened. I can very well use --date=now. I tested cmake and the tests passed for me. Is this something that happens consistently? |
|
It was consistently broken before your last commit, and worked after that, which is why I did the merge. |
This emulates the classic LINC from 1965. Out of scope: earlier models e.g. with only 1024 words of memory, or newer models such as micro-LINC 300, LINC-8, or PDP-12. The emulator passes diagnostics provided by the System Source Museum. It can run Mary Allen Wilke's LAP6 "LINC assembly program" which provides text editing, assembling, and tape filing.
I didn't dare mess with the Visual Studio projects. Someone, help?Fixed, Mark P sent me the files.The first commit adds support for the "left backslash" key between left shift and Z. It's useful because the LINC keyboard had a key there. It's also mapped from the regular left bracket key.

Typing is a bit quirky. I haven't decided on the kep mapping yet. For now, host keys are mapped to the closest corresponding LINC key. But some LINC keys require pressing CASE first to get the upper case symbol. E.g. to get comma, press and release CASE (mapped from shift), and type comma. Plain comma generates minus, since that is the unshifted (or un-CASE'ed) key. Typing minus also generates minus. Zero is mapped from both 0 and backtick, because the LINC keyboard had 0 to the left of 1. LAP6 uses CASE-0 and CASE-Q to move text by the page, and CASE-1 and CASE-W to move by the line; this arrangement is more apparent with the original key placement. F1 is mapped to the p/u key; I can think of no other suitable key. The LINC has three lower case letters: i, p, and u, but they are used as special assembly language symbols, not text.