I would have thought that system code overlays (SOCALs) would be created by the core load builder rather than being included as *LOCALs. It is acceptable to list the IO routines on *LOCAL cards and this would be the only way for assembly language main programs because SOCALs are never created for these types of programs. Nevertheless, the FLIPR code looks at $IOCT and waits for all IO to complete before performing an overlay. See line 115 of u5flipr.lst in Brian’s emulator.
FL115 MDX L $IOCT,0 WAIT OUT ANY PENDING INTER-
FL120 MDX *-3 *RUPTS BEFORE OVERLAYING
As near as I can tell, there is one LOCAL area and one SOCAL area (if necessary).
As a result of my very brief perusal of FLIPR and the Monitor guide, it would seem to me that there would be no need for any of the compilers to get involved with IO issues. They simply create a CALL or LIBF through the transfer vector and the vector is pointing at FLIPR. The program code doesn’t know if the IO routines are in core and doesn’t need to know. Nothing happens regarding card IO until FLIPR has loaded the code. I didn’t check CARD0 but I imagine is increments $IOCT as soon as it starts to read a card. The interrupt entry point will point back to code in the CARD0 image in the overlay area.
If both CARD0 and PRNT3 are *LOCALs, I don’t see how they could both be in core at the same time. So, I guess I don’t see how overlapped IO could work if both IO routines are either *LOCALs or SOCALs. I would think a better approach would be to specify one as *LOCAL and let the core load builder create a SOCAL for the other.
The people who created the IBM1130 and its code were geniuses. But at some point, the machine is just too small. If it just had an MMU...
Richard
--
You received this message because you are subscribed to the Google Groups "IBM1130" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ibm1130+u...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.