The 5100 is the unicorn of IBM systems. It was 2001 space odyssey special.
On Sat, Sep 20, 2025 at 5:41 AM Robert Marinelli via cctalk <
cctalk(a)classiccmp.org> wrote:
I've been digging through CHM and bitsavers and
haven't found an IMF for
5100 or 5110 yet. It seems a lot of CE material was just not saved.
However, I've been tracing execution of ExecROS and the APL ROS - thanks
to your excellent emulator and the extracted ROS files this works well.
Have learned a few things about the jump tables, I'd imagine that the
type 23 files would likely install themselves in high memory and modify
an IOCB jump entry to point to the new/patch code. Kind of like how you
take over the printer IOCB.
One little issue I found with your emulator is behavior of interrupts
while in HOLD.
Per the APL and BASIC manuals, pressing HOLD while a program is running
should pause the output (mostly so you can read the screen before output
scrolls up), and then pressing HOLD again is supposed to continue
execution.
In emu5110 that didn't work, pressing HOLD always stopped but a 2nd
press wanders off in to never land (hang or bogus error or junk on screen).
While tracing & learning I noticed that if code was being executed from
one of the language ROS, HOLD would fail. But HOLD/resume worked fine
on an idle machine - idle is a short loop that just blinks the _ cursor
at location 0x0200+902 in APL.
So looking through the pseudo-schematics/block diagrams in SY31-0552-3
IBM 5110 System Logic there is quite a bit of gate logic on the multiple
ROS cards, plenty of wires between them. Maybe, hardware interrupts are
held off in hardware when we are doing reads from the language ROS
cards. The interrupt bits are properly shown in a register, but nothing
detailing gating of interrupt -> CPU.
To test the idea I made this change in emu.c:
175c175,176
< check_int(); /* check for pending interrupts */
---
if(curr_ros==ExecROS) /* if in ExecROS we can
HOLD/resume */
check_int(); /* check for pending
interrupts */
and now HOLD works as expected.
Norbert's JavaScript port had the same issue with HOLD, he ported the
above and confirmed that the HOLD now works properly.
As a side note, the MAME emulation (which may have been done
independently) has the same problem, likely could use the same fix.
Anyone know how to contact the MAME author?
There was a lot of interest in the CHM release of APL\360 source along
with auto-operator and I've tried contact a few of those folks, we just
need one CE or user who kept a box of floppies.
-Robert