Idea: use an RPI Zero W (should have multiple cores, doesn't need much RAM) to collect the VSYNC, HSYNC, and video Data lines that are output to the Lisa's video analog board, and render output off the HDMI port. You'll need level converters since these are 5V on the Lisa, but the RPi wants 3.3V. You might be able to go cheap and use 3 resistors, but that might be noisy, etc.
Can be done with something other than an RPI, but the board must have multiple cores, be relatively fast, and have video output and GPIO.
Preferably all 3 lines coming from the Lisa should be readable by the SBC (Single Board Computer) in one read and not multiple. i.e. a single read byte or word.
To make it easier to detect, perhaps VSYNC should be put on a high bit so that you can test the "N" flag (negative) with a simple branch. Or perhaps it might be better to put the HSYNC line there instead as that will be tested more often.
The board should launch two processes at high priority (assuming we're using Linux) and leave any remaining cores for the OS running on it.
One process will collect data from the input lines, the second will render them onto the display (frame buffer). No other connectivity, such as ethernet, or USB is needed for this project.
The first phase of the first project will count the number of lines on a frame (or more) to figure out if we're running on a 3A system ROM, or standard (D-H) ROM.
while (read_gpio_bits && count<3) {
if (gpio & HSYNC) linecount++;
if (gpio & VSYNC) count++;
}
lines= linecount/count; // do some averaging here and decide which system type we're on.
To do this count the number of HSYNC pulses between each pair of VSYNC pulses. You'll also need to carefully clock the rate of the data bits coming in.
Once we know how many lines to render, we'll start collecting and plotting the Data bit onto a shared memory 32KB area that's also accessible by the second process.It may be advantageous to use multiple 32KB areas as well.
VSYNC is used to signal the end of a frame, and HSYNC is used to end a line.
while (read_gpio_bits) {
if (gpio & VSYNC) {x=0; y=0;}
if (gpio & HSYNC) {x=0; y++;}
plot(x,y,gpio & DATA); }
The second process could then use one of many algorithms to render video on the frame buffer (we don't want X11 here), perhaps using SDL or some other library.You could steal the HQ3X, or AA, or AA with Gray Replacement algos from LisaEm for this.
This board could also be hooked up to the VSROM and some other point on the CPU board where the video Data bit could be read from in order to display output on an HDMI or VGA/etc LCD monitor.
It could also be used to replace a dead video system by removing the analog board and CRT with a properly sized 12" monitor that accepts HDMI signals.
(You could then use a USB HDMI capture card to capture the output of the Lisa and put it on a video projector, or for use with a video podcast, etc.)
Edit: forgot to mention, for this project you should either compile in the RTOS Linux patches, and/or pin these two processes to a specific core and set it to the realtime class.