Folke Will has written SoCDP-8, an in-browser emulator of the PDP-8, with an assembler for writing short programs, and a functional front panel - also an emulated teletype, in case you want more I/O than just blinking lights. And tape, paper tape, and disk.
Something I’ve been wondering, regarding emulated blinken-lights: is it more common to sample the current state at display update, or is this rather “true” down sampling to the update frequency?
(E.g., if the emulated machine is running at 500Hz and I’m displaying at 60Hz, there is a huge chance of missing activity. With down sampling, If a light is on 3 times during a display interval – 1 display update at every 8.3 emulation frames in our example – , this would give you 0.36 illumination…)
I haven’t found a manual and it’s unclear what format files have to be (upload dump).
I tried a bin and bn file, working on other emulators.
Toggled in the start address of 200. Load ADDR and start.
I tried the bin loader via load snippet (start 7777). And load a paper tape file.
There’s an ASCII title displayed in the paper tape row, I haven’t seen before.
1st file is a bootable OS/8 DECTape image.
Upload file to TC08 image 0.
Load snippet TC08 os/8 loader, toggle 7613 in the switch register (left to start switch 111110001011, 1=up)
push load adress and start.
The DECTape should also show the tape and select should be yellow. Maybe load again the snippet.
In the PT08 window I’ve chosen 19200 Baud and VT100 style.
The promt (.) appears. type DIR and it shows the directory.
It’s a bit slow.
Disk files have a limit. I tried to upload advent.rk05 (3.2 MB). The limit is 524K
It’s a bit slow.
Disk files have a limit. I tried to upload advent.rk05 (3.2 MB). The limit is 524K
The game is really slow. SBC6120 PDP8 / IDE drive, I had once,
I wonder how quick the PDP 10 Version is?
Ben.
As off topic, Steam has graphic version of this adventure.
“Colossal Cave Adventure” version #2
BTW The emulator doesn’t work in private browsing.
I don’t like it. It’s for those who like it very close to the original or need switch registers or LEDs. I prefer modern ones with debugging, memory display etc. and without limits like SIMH. Who wants both, there’s the Mac emu. Or the online aconit emu (latter one still missing disk units).
I still don’t know why the papertape doesn’t work. I rarely use the switch registers, RIM/BIN loaders etc. as modern emulators has them built in.
Most DEC software had manuals like when to push what switch and especially the start address. I think the BIN loader has to be first loaded by a RIM loader? (I had a thread: a loader that loads a loader…)
Yamas doesn’t work. I had a java script syntax error: Unexpected token ‘.’ (?.). Might work somehow in HTML but not in js.
Demonstration of it running on a PDP-8/f vs. my PiDP8
I wrote my own PDP-8 emulator for the PiDP8 system - made it as cycle accurate as I could on a Pi Zero @ 1GHz then added in the “ILS” or Incandescent Lamp Simulator which everyone was seemingly after.
One day I’ll find the time & energy to tidy it all up and release it, but not today.
Which is for some modern Web APIs not being available in private mode (and no fallback solution being implemented).
Regarding RIM and BIN loaders: I see these often used ambiguously and/or synonymously.
I’m personally more familiar with the earlier PDP-1, which has an actual RIM mode. This “Read Into Memory” mode runs automatically and reads alternating instructions from paper tape for setting addresses and loading values into these locations, until a jump instruction is encountered, to which the control is transferred, thus exiting RIM mode. As may be seen, this is a very basic and slow routine. This is, where BIN loaders for reading blocks of binary payloads and check sums come in. The one used by DEC seems to have originated on the TX/0 (but I wouldn’t be surprised if there had been prehistory on Whirlwind.) The important difference is that RIM mode is implemented in hardware and a binary loader is yet another program (usually located at the very top of the core memory, where it may survive multiple loading and start cycles, as programs tend to respectfully stay away from this memory region, if possible).
To provide a little variety, binary images of programs using the standard binary loader are found both with “.rim” and “.bin” extensions, while being the same thing. This is really, because these tapes usually start with the binary loader and are to be loaded using RIM mode (which is a hardware console switch) – and probably also, where the confusion arises from. And much of this carries over to later DEC models.
The PDP-8 doesn’t have a RIM mode in the strict sense, which is also the great hour of the toggle switches for toggling in the binary loader, with the operator featuring as RIM mode.
So, on a PDP-8 RIM and BIN loaders should be the same thing.
However, there may be cases, where the usual binary loader may be used to load an even more sophisticated loader, as there’s never a definitive end to this.
(Notably, there are also variants of the standard BIN loader, depending on the kind of media used to read the program from.)
Not a RIM mode as such, but the RIM loader is built-in - It was printed on the front panel for you to key into your fresh PDP-8… In the image above, see the list of octal numbers to the left - that’s the RIM loader…
In a lot of cases as it was core memory it would stay there for life - of-course some programs would crash and scramble core then you’d need to key it in again and in the day memorising those instructions wasn’t hard. The BIN loader was much longer and no-one really wanted to key it in, so keying in RIM, then running that to load BIN was a thing, and again, unless your application really needed all the RAM then the BIN loader would often stay in core for a long time.
I owned a PDP-8/a for a while and used it to test my emulated PDP-8/i on the PiDP8 hardware, although the 8a has a keypad rather than toggle switches it was still a nice taste of the past and with real core memory power cycling it wasn’t an issue - the RIM loader was there time after time…
(It also had a ROM with the loader but for fun times I disabled it)
@drogon You’re right, the loader on the front panel is actually just the equivalent of the hardware RIM mode of the PDP-1. So the operations are much the same as described for the PDP-1.
I was somehow under the impression that this is already the BIN loader. What contributed to this is the program lengths: on the PDP-1, the BIN loader is just 21 instructions long, while the RIM loader on the PDP-8 is already 16, and the BIN loader on the PDP-8 is much more complex, coping with data and instruction fields, etc.
There are different RIM, BIN and HELP loaders. And each for Low-Speed and High Speed Readers (different addresses). Low-Speed readers and Help reader missing in that manual.
Yes, they might kept in memory, but in our cases the memory is empty.
The later CMOS models don’t have them as they don’t have a switch register.
The emulator missing a low-speed reader.
And usually emulators have them implemented.
But I think usually most tapes were in BIN format. But I think you always need the RIM loader first.
Maybe most using OS/8 disk or magnetic tape images and not paper tapes.
Here’s a direct comparison. Paper tapes can also be in ASCII.