3 ms·
> Terminals like the 3270 were even half duplex so would process the input and then send it off as a block, to make the channel controllers more efficient! The
by msla 7y ago
> Terminals like the 3270 were even half duplex so would process the input and then send it off as a block, to make the channel controllers more efficient!
The block mode terminals (like the 3270) were/are kinda like HTML forms: The mainframe sends a form to the terminal, and the terminal has enough local smarts to know how forms work, that only some regions of the form are writable, and how to send a response back one form at a time, as opposed to the character-at-a-time terminals which Unix and VMS and ITS were built around. There's a lack of flexibility, but it allows mainframes to service tons of interactive users, for a certain definition of interactive.
The Blit terminal was the next step beyond block mode terminals, in some sense: Blits could be character-cell terminals with fundamentally the same model as the VT100, but they could also accept software in binary form and run interactive graphical programs locally. Think WASM, only with machine code instead of architecture-independent bytecode.
https://en.wikipedia.org/wiki/Blit_(computer_terminal) https://en.wikipedia.org/wiki/Blit_(computer_terminal)
> When initially switched on, the Blit looked like an ordinary textual "dumb" terminal, although taller than usual. However, after logging into a Unix host (connected to the terminal through a serial port), the host could (via special escape sequences) load software to be executed by the processor of the terminal. This software could make use of the terminal's full graphics capabilities and attached peripherals such as a computer mouse. Normally, users would load the window systems mpx (or its successor mux), which replaced the terminal's user interface by a mouse-driven windowing interface, with multiple terminal windows all multiplexed over the single available serial-line connection to the host.
> Each window initially ran a simple terminal emulator, which could be replaced by a downloaded interactive graphical application, for example a more advanced terminal emulator, an editor, or a clock application. The resulting properties were similar to those of a modern Unix windowing system; however, to avoid having user interaction slowed by the serial connection, the interactive interface and the host application ran on separate systems—an early implementation of distributed computing.
That was 8th and 9th Edition Research Unix; it was an influence on Plan 9, which took the distributed GUI computer system concept and ran with it.
> So you could log into a remote machine and run EMACS, and while you were editing a remote file with a remote editor all the screen updating would be done by your local computer!
Also, ITS had the neat feature of detaching job trees: You could login, get your own HACTRN (the hacked-up debugger ITS used as a shell), run a few other programs which would then be children of that HACTRN job, and detach the whole tree and logout. When you logged back in, you could re-attach the tree and carry on like nothing happened. It's kinda like screen or tmux.
- DonHopkins 7y ago>Also, ITS had the neat feature of detaching job trees: You could login, get your own HACTRN (the hacked-up debugger ITS used as a shell), run a few other programs which would then be children of that HACTRN job, and detach the whole tree and logout. When you logged back in, you could re-attach the tree and carry on like nothing happened. It's kinda like screen or tmux. You could also detach any particular job sub-tree, and other users could reattach it. Useful for passing a live ZORK or LISP or EMACS back and forth between different logged-in users. "Here, can you fix this please?" There was also a :SNARF command for picking a sub-job out of a detached tree (good for snarfing just your EMACS from your old HACTRN/DDT tree left after you disconnected, and attaching it to your current DDT). https://github.com/PDP-10/its/blob/master/src/sysen1/ddt.1547#L8798 https://github.com/PDP-10/its/blob/master/src/sysen1/ddt.154... It helped that ITS had no security whatsoever! But it had some very obscure commands, like $$^R (literally: two escapes followed by a control-R). There was an obscure symbol that went with it called "DPSTOK" ("DePoSiT OK", presumably) that, if you set it to -1, allowed you to type $$^R to mess with other people's jobs, dynamically patch their code, etc. (The DDT top level shell had a built-in assembler/debugger, and anyone could read anybody else's job's memory, but you needed to use $$^R to enable writing). Since ITS epitomized "security through obscurity", the magic symbol DPSTOK was never supposed to be spoken of or written down, except in the source code. But if you found and read the source code, then you passed the test, and deserved to know! There was a trick if you wanted to set DPSTOK in your login script (which everyone could read), or if somebody was OS output spying on you (which people did all the time), and you wanted to change their prompt or patch some PDP-10 instructions into their job without them learning how to do it back to you. The trick was to take advantage of the fact that DPSTOK happened to come right after BYERUN. So you could set BYERUN/-1, which everybody does (to run "BYE" to show a joke or funny quote when you log out), then type a line feed to go to the next address without mentioning it name, then set that to -1 anonymously. So knowing the name and incantation of the secret symbol implied you'd actually read the DDT source code, which meant you had high moral principles, and were qualified to hate unix, which didn't let you do cool stuff like that. ;) https://github.com/larsbrinkhoff/its-archives/blob/master/email/its.bugs#L218 https://github.com/larsbrinkhoff/its-archives/blob/master/em... From: "Stephen E. Robbins" <stever@ai.mit.edu> Date: Thu, 21 Dec 89 13:25:56 EST To: CENT%AI.AI.MIT.EDU@mintaka.lcs.mit.edu Subject: Where unix-haters-request is Date: Wed, 20 Dec 89 22:13:42 EST From: "Pandora B. Berman" <CENT%AI.AI.MIT.EDU@mintaka.lcs.mit.edu> ....Candidates for entry into this august body must either prove their worth by a short rant on their pet piece of unix brain death, or produce witnesses of known authority to attest to their adherence to our high moral principles.. Does knowing about :DDTSYM DPSTOK/-1 followed by $$^R qualify as attesting to adherence of high moral principles? - Stephen Here are the symbols in the source: https://github.com/PDP-10/its/blob/master/src/sysen1/ddt.1547#L504 https://github.com/PDP-10/its/blob/master/src/sysen1/ddt.154... BYERUN: 0 ;-1 => RUN :BYE AT LOGOUT TIME. DPSTOK: 0 ;-1 => $$^R OK on non-SYS jobs Here's the $$^R handling code that slyly prints out " OP? " to pretend it didn't understand you. (In case anybody's watching!) https://github.com/PDP-10/its/blob/master/src/sysen1/ddt.1547#L8747 https://github.com/PDP-10/its/blob/master/src/sysen1/ddt.154... N2ACR: SKIPN SYSSW ;$$^R jrst n2acr0 ; Not the system? SETOM SYSDPS jrst n2acr9 n2acr0: skipn dpstok ;Feature enabled? jrst n2acr9 ; nope skipe intbit(U) ;Is it foreign? jrst n2acr9 ; no, either SYS (special) or our own (OK anyway!) movei d,%URDPS iorm d,urandm(u) ;turn on winnage n2acr9: 7NRTYP [ASCIZ/ OP? /]