From cd75566dc5b64e90a82d4259b6afaf796d18fe5f Mon Sep 17 00:00:00 2001 From: Noah Smith Date: Sun, 14 Jul 2024 10:30:34 +0200 Subject: [PATCH] vt52 --- _drafts/tops-10.md | 20 ------- _drafts/vt52.md | 47 +++++++++++++++++ ...7-06- tops-10.md => 2024-07-06-tops-10.md} | 0 _posts/2024-07-14-vt52.md | 52 +++++++++++++++++++ 4 files changed, 99 insertions(+), 20 deletions(-) delete mode 100644 _drafts/tops-10.md create mode 100644 _drafts/vt52.md rename _posts/{2024-07-06- tops-10.md => 2024-07-06-tops-10.md} (100%) create mode 100644 _posts/2024-07-14-vt52.md diff --git a/_drafts/tops-10.md b/_drafts/tops-10.md deleted file mode 100644 index 3d10583..0000000 --- a/_drafts/tops-10.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: post -title: "tops-10" ---- - -on thursday june 6 2024 an article appeared on a news website about the [pidp-10](https://obsolescence.dev/pidp10.html). by saturday june 8 the simh hardware side of that was [running here local](https://photos.app.goo.gl/7BEa6RberDfcsWLp7). the efforts over the years to keep all of this alive had been followed all along via usenet, slashdot, and rss news feeds. the pidp-10 news just pushed a button. the timing of all this is interesting, as on april 1 had moved to a new website and the third post was about the [pdp-10](https://statespace.dev/pdp-10.html). - -for the first two or three weeks of june, the focus was on exploring its and simh. playing adventure for the first time in decades. first time running spacewar on a type 340 display. first time using emacs rather than sos or teco. hello world lisp program compiled and run. for background on why all of this is exciting in itself, can recommend firstly the [newquist ai book](https://a.co/d/0fizN5g7) and secondly the [levy book](https://a.co/d/0eyKbrFf). also the [arpanet book](https://a.co/d/0baPMYaQ). and, as always, [soul of a new machine](https://a.co/d/0baPMYaQ). - -by the third and fourth weeks, attention shifted to tops-10. this post is simply a walk-through of why, and what it's all about. - -first of all, the concept is to do some numerical code in assembly. and naturally, fortran as well. to make this concrete, to reproduce some of what feynman is discussing towards the end of [this chapter here](https://www.feynmanlectures.caltech.edu/I_22.html). purely for the pleasure of ideas. for actually doing this, the [gorin book](https://archive.org/details/introductiontodecsystem10assemblylangpgmgjul85text) seems to be a reasonable starting point. it's tops-10, macro, ddt based. and for fortran, there's [this from 69](https://bitsavers.org/pdf/dec/pdp10/TOPS10/DEC-10-AFC0-D_PDP-10_FORTRAN_IV_Programming_Manual_Aug69.pdf) and [this from 77](https://bitsavers.org/pdf/dec/pdp10/TOPS10/AA-0944E-TB_FORTRAN-10_Programmers_Reference_Ver_5_Jan77.pdf). - -and then, secondly and lastly. [decwar](http://hsnewman.freeshell.org/decwar.htm). official utaustin [catalog record](https://repositories.lib.utexas.edu/items/e0e0aa09-2dc3-49c5-a919-19210d7916d3/full). again, fortran and assembly. - -while working on the previous paragraph, some questions were answered by the [wikipedia page](https://en.wikipedia.org/wiki/Decwar#Other_versions). especially note the following. - - Later the CIS (CompuServe Information Service) version of Decwar was released to the public by The University of Texas. This version was highly modified to run on CIS's version of TOPS-10. Merlyn Cousins (Drforbin) later reverse engineered the source back to a form which would run on standard TOPS-10 and simh. This code is archived at the Briscoe Center for American History.[8] The source is also available on GitHub.[9]) - -note - while creating this post, stumbled on this highly recommendable [article from 88](https://www.columbia.edu/cu/computinghistory/dec20.html). fun read. laughing out loud. diff --git a/_drafts/vt52.md b/_drafts/vt52.md new file mode 100644 index 0000000..e21ae47 --- /dev/null +++ b/_drafts/vt52.md @@ -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 diff --git a/_posts/2024-07-06- tops-10.md b/_posts/2024-07-06-tops-10.md similarity index 100% rename from _posts/2024-07-06- tops-10.md rename to _posts/2024-07-06-tops-10.md diff --git a/_posts/2024-07-14-vt52.md b/_posts/2024-07-14-vt52.md new file mode 100644 index 0000000..83ab7ee --- /dev/null +++ b/_posts/2024-07-14-vt52.md @@ -0,0 +1,52 @@ +--- +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 + move upward - esc + move downward - ctrl-j + + ddt + move upward - ctrl-h + move 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 + + ln = line, line number, etc + ^ = first ln + . = curr ln + * = last ln + + esc = print prev, exit insert mode if in it + ctrl-j = print next + pln1:ln2 = print lines in range + + iln1 = insert mode at ln1 + cln1,ln2:ln3 = copy range to ln1 + tln1,ln2:ln4 = 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 + + nint = renumber lines using step int + w = save + e = save and exit + es = save without line numbers + eq = exit without save