this post was submitted on 24 Nov 2024
9 points (100.0% liked)

Programming

0 readers
1 users here now

A magazine created for the discussion of computer programming-related topics.

Rules

Please keep submissions on topic and of high quality. No image posts, no memes, no politics. Keep the magazine focused on programming topics not general computing topics. Direct links to app demos (unrelated to programming) will be removed. No surveys.

founded 2 years ago
MODERATORS
 

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

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 1 points 1 month ago* (last edited 1 month ago) (3 children)

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.

#retrocomputing #programming #bendixg15

[–] [email protected] 1 points 1 month ago (1 children)

@[email protected] Looking up sexadecimal suggests it is 16 digits too, but 0-9 v-z is 15 digits.

[–] [email protected] 1 points 1 month ago (1 children)

@jgrg Oops, it's u-z. Corrected the post now, thanks for pointing that out.

[–] [email protected] 1 points 1 month ago

@[email protected] I'm glad we don't use that notation. "u" and "v" are too similar.

load more comments (1 replies)