CDC 6600 - Why so awesome?
swiftgriggs at gmail.com
Wed Jun 22 20:45:37 CDT 2016
On Wed, 22 Jun 2016, Rich Alderson wrote:
> We have one running at LCM, attached to an instance of dtCyber, the
> 6000/Cyber simulator, via John Zabolitzky's Xilinx-based display
> adapter. We're in the process of refurbing the one that came with the
> 6500, which we may attach to the system at some point.
Is that "Living Computer Museum" ? You are in Seattle, right? I'll stop by
for sure if I'm in the area. I'm in Denver.
> Not a matter of "didn't bother with", but rather "were never allowed
> to". You don't get to fuck with the console of a multimillion dollar
> machine if you're not part of the operations or systems programming
Like I was saying with Chuck, I just wasn't thinking about that, but it
makes total sense when you put the $$$ into perspective.
> For the same reason you do it in the PDP-6/PDP-10: Data often comes in
> the form of text characters, which are much smaller than the word size,
> so it makes sense to pack them in.
I get it. I just wondered about the mechanics of it.
> On the 6/10, the common method was 7-bit ASCII packed 5 per word. [...]
Everyone had some whack-a-doodle way to encode character sets back then
(and now it's just as bad or worse with things like UTF-8). People who
complain about twos-compliment being a weird hack should focus more on all
the ways folks encoded their charset. That's a veritable cornucopia of the
> ADJBP (ADJust Byte Pointer, which can back up as well as move forward).
I find that weird, but possibly useful once I figured out how to implement
it. Did that morph into something else as the platform matured or newer
microcode hit the deck?
> The networking code uses a lot of 8- and 16-bit byte pointers, to handle
> the fields in IP datagrams.
Convenient in this case, for sure. Hehe, not as convenient as me calling
bind(), connect(), and send(), but hey apples to oranges, I know. :-)
> Other I/O code uses other byte sizes, to pull out or set the relevant
> parts of device register values.
Well, I'd think it'd be helpful with I/O related code to deal with the
real-world constellation of block devices from different devices. You
could ratchet up when you needed throughput, and back down when you needed
lower latency and finesse.
> A quick example, which substitutes a space for a rubout in a text string
> without having to copy it into a second:
> txtptr: point 7,string ; sets up to point to the non-existent byte
> ; before string
> move 10,txtptr ; initialize pointer in loop
> top: ildb 11,10 ; increments pointer, copies byte into AC 11
> skipn 11 ; non-null value?
> jrst bottom ; no, end of string, exit loop
> caie 11,177 ; is it a rubout character
> jrst top ; no, get next character in string
> movei 11,40 ; change a rubout to a space
> dpb 11,10 ; deposit byte into same location it came from
> jrst top ; and continue
> bottom: <whatever>
Ah. labels are grand, and yes no extra register or buffer needed!
> PDP-10 operating systems in general use null-terminated strings.
You mean the way $DIETY intended? :-)
> Hope that helps you with capital wrapping.
Har! These days folks let the MS Paper Clip do that!
More information about the cctalk