The IBM 1710 was a 1620 enhanced for process control. It had interrupts. Dave Wise ________________________________ From: Paul Koning via cctalk <cctalk@classiccmp.org> Sent: Thursday, October 3, 2024 7:05 AM To: cctalk@classiccmp.org <cctalk@classiccmp.org> Cc: Paul Koning <paulkon...@comcast.net> Subject: [cctalk] Re: Might be antique computer parts
> On Oct 2, 2024, at 5:23 PM, Van Snyder via cctalk <cctalk@classiccmp.org> > wrote: > > On Wed, 2024-10-02 at 16:39 -0400, Paul Koning via cctalk wrote: >> For the earlier 1311, lack of overlap made perfect sense. After all, >> the 1620 has no interrupts, no parallelism of any kind: every I/O >> operation stalls the CPU until the operation is finished. (That and >> the BB instruction are among the reasons why Dijkstra rejected the >> 1620.) > > 1401 had overlap, but as far as I can tell, only for cards and tape. > The 1403 had a buffer, and 1401 had instructions to test whether the > printer or carriage were busy, but that "overlap" didn't work the same > as for cards and tape. > > I remember the 1620 being called CADET, but not because it was a > beginner computer. It didn't have arithmetic hardware. It was done by > table lookup. CADET meant "Can't Add, Doesn't Even Try." One of my > colleagues exploited the table-based arithmetic to do octal arithmetic > for satellite telemetry processing. That would be the Model 1, which had "add-multiply tables" in lowcore. Adding and multiplying was done by looking up entries in those tables. I assume the address was formed from the two input digits, producing a two-digit result (or for add, maybe a one digit result plus a carry bit encoded in the sign bit). Core memory of course is non-volatile so unless you had a program scribble wildly, those tables would carry from one run to the next. When in doubt, you could boot the add-multiply tables card deck to load the correct values. And yes, you could do octal arithmetic that way, in the sense of interpreting a string of digits in memory as octal rather than decimal digits. Neat hack. Ours was a Model 2, which differs in a number of ways; one major difference is that it has add and multiply hardware. So while we did have an add-multiply card deck sitting around, it wasn't actually needed. A fun aspect of both machines is that they would do arithmetic on variable length operands, of any length if you were patient enough. So you could add a pair of 5000 digit numbers. The same was true for floating point (I don't know if that was only in Model 2), the mantissa was variable length (the exponent always two digits). I remember the Fortran compiler had a compiler option setting to choose the "field length" (number of digits) for the integer and real data types, allowing you to pick any length up to 20 digits separately for each. Speaking of interrupts vs. blocking I/O, there's an interesting hybrid technique I've seen only in one place: the Electrologica X1 will interrupt on completion of an I/O, but also allows you to start a new I/O on a device that's still busy with the preceding one. If you do that, the second I/O command will block the CPU until the first one is done, then it will issue the I/O start and the instruction is then complete. In practice, I/O was interrupt driven, but with the help of what is arguably the world's first BIOS, a set of ROM resident I/O library routines originally written by Dijkstra for his Ph.D. project. As far as I can tell, the X1 was the world's first production computer with interrupts as a standard feature. paul