Will Senn
2022-02-07 00:39:25 UTC
All,
I have been working to get my mind wrapped around how the sending of key presses to OS/8 work. I'm not really understanding what's going on at what level. I press a key combination on my mac, in the simulated ASR33. Something get's generated (I'm guessing the source code is definitive for what), OS/8 receives something (I'm guessing based on the OS/8 handbook that this is an 8-bit ascii keycode in the range 000-377. I can pretty much predict what's gonna happen if I type an uppercase letter or a punctuation character, but lower case letters appear to be ignored. Also, I'm a little lost as to how to generate characters like Leader/Trailer (or why I might want to) or FORM, or Blank, or RUBOUT (fnDelete on the Mac, but this appears to be the sim, not a standard control sequence)... After some painstaking research on what ASCII is (surprisingly little quality discussion of it is out there, and asking around, I figure out that I could use CONTROL-letter to send some of the control characters that are understood by OS/8 - CTRL-J for LINE FEED, CTRL-G for BELL (this appears to be related to the ASCII itself, not just an arbitrary mapping).
The chart in the handbook (and elsewhere) shows characters I would expect to see plus this list (I added the binary and the 7bit octal interpretation in parens following):
11 011 110 - Arrow up, open paren, carat, close paren, superscript 2 (whatever that's supposed to represent ): 336 (136)
11 011 111 - Arrow left, open paren, underscore, close paren, superscript 2 (whatever that's supposed to represent ): 337 (137)
10 000 000 - Leader/Trailer: 200 (0)
10 001 010 - LINE FEED: 212 (12)
10 001 101 - Carriage RETURN: 215 (15)
10 100 000 - SPACE: 240 (40)
11 111 111 - RUBOUT: 377 (177)
00 000 000 - Blank: 0 (0)
10 000 111 - BELL: 207 (7)
10 001 001 - TAB: 211 (11)
10 001 100 - FORM: 214 (14)
At first, I was l confused by the big numbers. Then I figured it out:
A is shown to be 301 in the table, which is 11 000 001 binary. This is 193 in decimal (way bigger than 127, which is what I thought the biggest character was supposed to be. This is why, when working with DEC stuff, you should stick to octal. So, since A is 101, in octal (65 in decimal), it looks like it's off by 200 octal. Subtract 200 from anything in the list and it looks like it maps back to modern ASCII pretty well.
I still don't know why RUBOUT needs to be fn-DEL, what Blank is, or those Arrow key things, or the Leader/Trailer stuff.
Anyhow, my question is - where's a good source of information on what's going on with the ASR33 -> OS/8 side of things.... other than the ASR33 manuals which go into WAY too much detail about levers and tines and such?
Later,
Will
I have been working to get my mind wrapped around how the sending of key presses to OS/8 work. I'm not really understanding what's going on at what level. I press a key combination on my mac, in the simulated ASR33. Something get's generated (I'm guessing the source code is definitive for what), OS/8 receives something (I'm guessing based on the OS/8 handbook that this is an 8-bit ascii keycode in the range 000-377. I can pretty much predict what's gonna happen if I type an uppercase letter or a punctuation character, but lower case letters appear to be ignored. Also, I'm a little lost as to how to generate characters like Leader/Trailer (or why I might want to) or FORM, or Blank, or RUBOUT (fnDelete on the Mac, but this appears to be the sim, not a standard control sequence)... After some painstaking research on what ASCII is (surprisingly little quality discussion of it is out there, and asking around, I figure out that I could use CONTROL-letter to send some of the control characters that are understood by OS/8 - CTRL-J for LINE FEED, CTRL-G for BELL (this appears to be related to the ASCII itself, not just an arbitrary mapping).
The chart in the handbook (and elsewhere) shows characters I would expect to see plus this list (I added the binary and the 7bit octal interpretation in parens following):
11 011 110 - Arrow up, open paren, carat, close paren, superscript 2 (whatever that's supposed to represent ): 336 (136)
11 011 111 - Arrow left, open paren, underscore, close paren, superscript 2 (whatever that's supposed to represent ): 337 (137)
10 000 000 - Leader/Trailer: 200 (0)
10 001 010 - LINE FEED: 212 (12)
10 001 101 - Carriage RETURN: 215 (15)
10 100 000 - SPACE: 240 (40)
11 111 111 - RUBOUT: 377 (177)
00 000 000 - Blank: 0 (0)
10 000 111 - BELL: 207 (7)
10 001 001 - TAB: 211 (11)
10 001 100 - FORM: 214 (14)
At first, I was l confused by the big numbers. Then I figured it out:
A is shown to be 301 in the table, which is 11 000 001 binary. This is 193 in decimal (way bigger than 127, which is what I thought the biggest character was supposed to be. This is why, when working with DEC stuff, you should stick to octal. So, since A is 101, in octal (65 in decimal), it looks like it's off by 200 octal. Subtract 200 from anything in the list and it looks like it maps back to modern ASCII pretty well.
I still don't know why RUBOUT needs to be fn-DEL, what Blank is, or those Arrow key things, or the Leader/Trailer stuff.
Anyhow, my question is - where's a good source of information on what's going on with the ASR33 -> OS/8 side of things.... other than the ASR33 manuals which go into WAY too much detail about levers and tines and such?
Later,
Will