-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
6fbf96d
commit 2a88a89
Showing
3 changed files
with
47 additions
and
20 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
--- | ||
layout: post | ||
title: "vt52, sos, ddt" | ||
--- | ||
using a vt52 emulator talking to tops-10 and working in sos editor and ddt debugger, some keyboard topics quickly become apparent. the vt52 had a line feed lf key, but modern keyboards don't. so, there's not an obvious way to send lf alone. | ||
|
||
in sos, lf prints the next line. with esc printing the previous line, lf and esc 'scroll down and up' through the file. it has a similar role in ddt, where it 'examines the next instruction'. | ||
|
||
tangentially, here's some interesting discussion from the gorin book. this belongs in the dictionary under 'unintended consequences'. | ||
|
||
_as a user of the decsystem-10 you are aware that usually you end a line by typing the carriage return key. when tops-10 sees the return key, it adds a line feed after the return. thus, usually, a program will see both a carriage return and a line feed when it reads the terminal. however, please note that tops-10 considers the line feed to be end of the line, so a program that is searching for the end of a line should not be satisfied until it finds the line feed._ | ||
|
||
the tops-10 'rubout' delete key is also a topic. the modern backspace key seems to be a dead end. the delete key to the right of the enter key is correct. there's some qualifiers on that though, at least for tops-10. | ||
|
||
for line feed, the answer is to use ctrl-j. discovered this while googling 'vt52 emulator with line feed', and it instantly made sos and ddt completely usable. this was a night to day change and seems to be essential knowledge for using tops-10 now. | ||
|
||
as an additional note, ctrl-h plays an inverse role to ctrl-j, at least within ddt. there ctrl-h closes current location and moves upward, and ctrl-j does similar but moves downward. so nutshell summary - | ||
|
||
sos | ||
print upward - esc | ||
print downward - ctrl-j | ||
|
||
ddt | ||
examine upward - ctrl-h | ||
examine downward - ctrl-j | ||
|
||
for the 'rubout' delete key, use the one to the right of the enter key, but note tops-10 echoes the characters as they're rubbed out, surrounded by \ delimiter character. this can be disorienting at first. so for example typing 'test', then delete twice, then ' hello' results in 'test\ts\ hello' on screen. the end result is 'test hello'. | ||
|
||
the sos commands | ||
|
||
^ = first line | ||
. = curr line | ||
* = last line | ||
esc = print prev, exit insert mode if inside | ||
ctrl-j = print next | ||
pln1:ln2 = print lines in range | ||
iln1 = insert mode at ln1 | ||
cln1,ln2:ln3 = copy range to ln1 | ||
tln1,ln2:ln3 = move range to ln1 | ||
rln1:ln2 = delete range and insert at ln1 | ||
fstring$ln1:ln2 = find string in range | ||
sstring$ln1:ln2 = substitute string in range | ||
nx = renumber lines using step x | ||
w = save | ||
e = save and exit | ||
es = save without line numbers | ||
eq = exit without save |