Make the card reader work on TOPS-10 and TOPS-20.
Augmented Image ECO was not implemented.
Simplify UI by defining commands for the various options/models emulated based on the simulator being built.
Document, and make the help conditional on model where that reduces clutter.
Deal with <CR><LF> reading ASCII files (file is opened 'rb' in scp's attach ; it shouldn't be.
Add translation support for DEC 026/029 full 7-bit ASCII, an ANSI standard & used by TOPS-10/20.
Deliver EOF at the correct time(s).
Preliminary support for update to card image spec being negotiated with the author.
Add Optical VFU support
Correct some inconsistencies with the hardware.
Add documentation and help.
Flush output file after 10 seconds of idleness to allow external watchers/processors to access entire job without forcing a simulator halt or detach/attach.
Make CR return to column 0, not column 1.
Make DAVFU contents accessible via SHOW.
Initialize RAM structures on power-up reset, but not reboot.
Implement keep-alive and os-requested reload functions of FE.
Preserve HW config flags during (re-) boot.
Allow IPL30 device to interrupt.
Add 18-bit DMA functions.
Implement DMA to/from I/O space.
Optimize DMA memory mapping - once per page, not once per byte.
Teach SHOW IO to report vectors and BR levels as well as CSR addresses.
Add DUP and KDP to Autoconfigure table.
Make the boot ROMs a bit easier to maintain.
Add assertion that the two variants of each are the same size.
Add offsets to the comments so it's easier to see where jumps are going.
The boot rom for tape didn't handle a tapes coming on-line, didn't take
the RH/TM/addresses from the FE. The launcher also didn't handle
autoboot.
Now it does, with the restriction that ITS will only talk to UBA1.
The boot rom for tape didn't handle a tapes coming on-line, didn't take
the RH/TM/addresses from the FE. The launcher also didn't handle
autoboot.
Now it does, with the restriction that ITS will only talk to UBA1.
The KS10's 8080 interfaces to the OS thru a small communications region.
The documentation is rather lacking, and the 8080 microcode is difficult
to follow. Many years ago (while still at DEC), I worked it out, and
put definitions into TOPS-10. They're now here, too.
Also, properly initialize the KLINIK communication words and the
keep-alive word.
The KS front end microcode actually reads the wrong alternate HOM block.
Teach the bootstrap to try the wrong one (in case someone counts on
this), but also the correct block.
Implement boot -A to emulate an autoboot - the boot that happens on
power-on or when the boot switch is pressed. No questions, just boots.
The pdp10_rp emulator had several problems:
1) disks are not recognized properly when they come on-line. Same issue
as tapes, but not the same code paths.
2) The bootstrap code did not wait for disks to become ready.
3) The bootstrap code did not take the RH CSR address from the front end
(device). Hence, would not boot if the device address was changed.
4) The bootstrap looked for the second HOM block at block 10 of the
disk. Unfortunately, it read block 8. 10 is decimal; you need all 10
(decimal) fingers.
Fixes:
1) Implement spin-up delay. A device that is attached/re-attached comes
on-line a second later. Replace tests for 'attached' with tests for
up-to-speed.
2) Wait for the drive to become ready after issuing a controller clear.
When it's ready, write the attention summary register to prevent the
un-tended on-line interrupt for looking like an error.
3) Read the RHBASE from main memory instead of storing it there. Teach
the bootstrap command to put it in memory from the dib, as it did with
the unit.
4) Read the correct block.
FILSER now gets on-line and off-line interrupts.
Tape on-line interrupts weren't happening when a tape was attached or
replace on the TH11/TM0x emulation.
The OS never saw a MOL transition in the case of replacement, where the
detach is implicit.
This patch defers reporting MOL for 100 msec; faster than a human can
change tapes, but long enough for an OS to see the 1->0->1 transition of
MOL.
Further, checks for UNIT_ATT should be for MOL.
This makes GALAXY automatic tape recognition work.
Thanks to Ian Hammond, Lou Ernst, Malcolm Macloud, and Jack Rubin,
In addition, I've added the CAPS11 bootstrap into the emulator module, so no more toggle-in required.
Lou Ernst reported that RT11 V5 does not work with the TA11, even on real hardware. The simulated TA11 does work under RT11 V4; it's included in the stock FB monitor.
One anomaly with RT11 V4 - after writing files to CT0: and then doing a DIRECTORY, all the files lengths are 0. The files are there. I can type them and DIFF them against their source.
It does not fix the problem that MMR1 is not used for floating point instructions.
I don't know if I will fix the FP MMR1 problem. It does not seem to impact running software. It is consistent with the architecture spec - just not with the actual J11 implementation. The J11 microcode has a variety of exception exits for FP conditions, and I have to trace which ones invoke fix-up, and which do not.