On 3/11/23 14:34, Chuck Guzis via cctalk wrote: > On 3/11/23 13:28, Paul Koning wrote: > >> >> Dijkstra said as much when he evaluated the 1620 for possible use by the TU >> Eindhoven -- a big problem is that it was unable to handle arbitrary 8-bit >> data. >
Perhaps I need to elaborate on my earlier response for those not familiar with the 1620. First of all, the 1620 is a decimal machine, digit addressable with bits CF8421. C is the parity bit and only shows up on the console display--it's not something that a program sees. Second of all, the 1620 has no user-addressable registers--it's all memory-to-memory. Instructions are all 12 digits. Opcode 2 digits, P and Q fields 5 digits each. *Variable word length*, with words being addressed by the low-order digit and with the high-order digit flagged with the F bit. Negative numbers have the F bit set in the lowest order digit. Words may be grouped up into records, addressed by the lowest address of the record and terminated with the record mark (x8x2x). Addition, subtraction and multiplication on the CADET (model 1 1620) is done through tables in low memory, which must be loaded after boot time to get any useful work done. There are two modes for typewriter/printer/card/tape I/O--numeric (each digit represents a character) and alpha (pairs of digits represent characters). There are a a couple of special non-numeric bit combinations--the record mark (x8x2x bits), the numeric blank (x84xx) and the group mark (used for disk I/O) (x842x); any may carry a flag bit. As mentioned, the group mark is used for disk I/O when the contents of a group may contain records. On other I/O devices, the record mark determines the end of a record. There are rules about what can be on odd- or even-address boundaries. for example, an instruction must start on an even address boundary. The numeric blank prints as a space when doing numeric I/O. Otherwise, it cannot be used in math operations, nor can it be generated using them--you read it from an I/O device and move it around. There is no stack,but there is a single register that holds a single return address when a Branch-and-transmit instruction is executed. There is a single instruction that branches to the location held in that register; the register itself is not addressable. You can see that the limit is one call depth using this register--it's most handy when debugging because it can be display on the console lamps. Serious programs usually use the Branch and Transmit Immediate, where the Immediate (Q) field is deposited just ahead of the branch address. The custom is to use this field as a return address for subroutines. The 1620 comes with 20K digits of storage standard, with optional added memory to 40K or 60K digits. The maximum length of a numeric value is 20K digits. Given the variable-length nature of the machine, clearing memory to any value can be done with a single instruction. Hope this provides some background for what irked Dijkgstra. I should note that what I've described describes the Model 1 1620. The model 2 was considerably improved and even had an option for binary manipulation of values. The IBM 1710 was essentially a 1620 with interrupts, added I/O capabilities and a real-time clock and was used for industrial control. --Chuck