I love the introductory chapter in the Bendix G15 Programmers’s Reference Manual - when computers were still fresh enough that you had to start from the very basic concepts.
http://www.bitsavers.org/pdf/bendix/g-15/G15D_Programmers_Ref_Man.pdf
#retrocomputing #programming #bendixg15
Some random notes after glancing over the G15D programmer’s reference manual:
- Bendix G-15 doesn’t use hex, but sex: The notation is 0-9 u-z (sexadecimal).
- Section 3.2.3 goes into details on how to optimize performance: You need to carefully plan the order of instructions and data on the drums for optimal speed. The most optimal code will overlay computation and memory accesses. This reminds me of “the story of Mel”. The optimization tricks done don’t differ much from handcrafting optimal assembly code on more modern systems where external memory accesses are very expensive vs computation within registers.
- The addressing notation directly addresses line on the drum and offset of the word on that line. There are 20 lines with 108 29-bit words on each. Arithmetic operations operate on a separate short “register” lines that circulate much faster than the actual memory (27x speed vs memory drum).
- Considering how slow it’s to process individual memory loads / stores, it makes perfect sense that the system has block copy instructions.
- Each instruction has offset within the line to the next instructions to execute. That is, there’s always an explicit jump encoded in each instruction. Conditional code execution occurs by suppressing the jump when condition is met, in which case the jump is not taken and next instruction is executed instead. In modern architectures you generally execute next instructions address and there are dedicated branch instructions.
- Code execution can happen from 7 long lines (0, 1, 2, 3, 4, 5, 19) and one short line (23). Some lines have reserved roles and offsets, at least when using the libraries provided by Bendix.
- As there is no built-in stack register or stack a return address for subroutine calls must be handled manually. This is reminiscent to link register on some later platforms (such as PowerPC). It of course is entirely possible to manually maintain a stack on some line, dedicating some fixed address as stack pointer. All code must then agree on this decided calling convention.
- Punched (paper) tape and magnetic tape is available for input, as well as typewriter (console). Output can be (IBM) punch cards, magnetic tape or typewriter (console). The typewriter also has some switches for control.
@harrysintonen@infosec.exchange Looking up sexadecimal suggests it is 16 digits too, but 0-9 v-z is 15 digits.
@jgrg Oops, it’s u-z. Corrected the post now, thanks for pointing that out.
@harrysintonen@infosec.exchange I’m glad we don’t use that notation. “u” and “v” are too similar.