Skip to content
This repository has been archived by the owner on Dec 24, 2020. It is now read-only.

PCjs and Sticky Machines

Compare
Choose a tag to compare
@jeffpar jeffpar released this 04 Jan 01:47
· 2381 commits to master since this release

PDPjs is able to run a variety of old DEC operating systems, such as RT-11 and RSTS/E, and while there are manuals available online, thanks to the efforts of those who operate and contribute to websites like bitsavers.org, I suspect most people don't have a lot of interest or time to spend reading old manuals.

In an effort to remedy that situation, I'm adding some new features to PCjs. The first feature is what I call "Sticky Machines", and it's really just a new feature of the PCjs website. At the top of any PCjs webpage, in the machines section, a machine can now define a sticky property. For now, the only supported value is "top"; e.g.:

machines:
  - id: vt100
    type: pc8080
    config: /devices/pc8080/machine/vt100/machine.xml
    connection: serialPort->test1170.dl11
    sticky: top

A sticky machine makes it easier to construct a tutorial page for a single machine, by preventing that machine from scrolling off the top; it "sticks" to the top instead. The rest of the page scrolls normally, allowing the user to progress at their own pace through the text and/or images of an accompanying tutorial.

The second feature is a generalized method for sending commands to components within a machine. For example, if we want to send some serial data to a machine:

{% include machine-command.html type='button' label='Try It!' machine='vt100' component='SerialPort' command='receiveData' value='Hello World' %}

which should translate into a control that looks like:

<button type="button" onclick="commandMachine('vt100','SerialPort','receiveData','Hello World')">Try It!</button>

Obviously, every component we want to control will need to be updated to export the necessary "command" functions.

So expect some PDPjs tutorials in the near future, featuring sticky machines and built-in command demos. Some commands will be very simple, like the data injection command shown above. Others will perform more sophisticated operations, such as loading and booting a particular disk, running a particular application, automatically flipping selected Front Panel switches, and so on.

[NOTE: There was a v1.32.0, but it was largely just a "new year" update. I don't think there were any important changes in that update, which is probably why I forgot to mark it as a new release.]