OS/8 Emacs

874 views
Skip to first unread message

Bill Silver

unread,
Apr 3, 2020, 10:40:08 PM4/3/20
to PiDP-8

I have written an emacs-like editor for my new pidp8/i that runs under OS/8 and communicates with the user via character I/O on the console terminal. The console is expected to be, or behave like, a simple fixed-size character-oriented display terminal of the sort that was available in the 1970's, able to process a few basic ANSI escape sequences. Both MobaXTerm and the basic Linux screen (e.g. CTRL-ALT-F1) support this protocol.


The attached photo shows the editor (“E8”) displaying a portion of its pal8 source code. You can see the typical emacs mode line showing that the file has changed, the filename, and the size in characters. The displayed code shows the command dispatch tables, giving a rough feel for the control, alt, and ^X commands that have been implemented. The only important remaining task is to implement incremental search, which should be done in a day or so.


E8 is pretty responsive, even throttled down to 300K, close to real 8/I speed. It goes to some trouble to minimize characters written to the display, and should run just fine at 1970’s bandwidth, e.g. 9600 baud. (OK, late 70's)


If people are interested in this sort of thing, I can share the source code. It’s just a bunch of pal8 files and is easy to assemble and run under OS/8. Don’t try to assemble it at 300K, though.


E8 screen shot.PNG

Ian Schofield

unread,
Apr 4, 2020, 1:21:57 PM4/4/20
to PiDP-8
Dear Bill,

 If you have come up with a screen editor for OS/8, that is brilliant. Anything is better than TECO. (Now I will be flamed by all DEC fanatics!).

Regards, Ian.

William Cattey

unread,
Apr 4, 2020, 9:07:03 PM4/4/20
to PiDP-8
Wow! 

That’s super impressive. 

I’m definitely interested in this!

Bill Silver

unread,
Apr 4, 2020, 11:50:14 PM4/4/20
to pid...@googlegroups.com
Thanks for the interest and kind words. I'll write some documentation on how to assemble and use and then make the source available. If you're familiar with Emacs it should be pretty natural, although of course this is nowhere near contemporary Emacs in capabilities. But I am using E8 to develop its own source code, and yes it's worlds better than line-oriented editors designed for teletypes. I don't know how I managed that back in 1973, but I was 19 and didn't yet know any better.

Incremental search is now mostly working. See attached picture.

search.PNG

Frank Laczko

unread,
Apr 5, 2020, 12:06:26 AM4/5/20
to Bill Silver, PiDP-8
Interesting. I would like to try it when you're done. 



Sent from my T-Mobile 4G LTE Device

--
You received this message because you are subscribed to the Google Groups "PiDP-8" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pidp-8+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/pidp-8/3b970999-ab38-4ad1-8800-9812dec8e929%40googlegroups.com.

Bill Silver

unread,
Apr 5, 2020, 3:04:11 PM4/5/20
to PiDP-8
Attached is source code and documentation. No doubt there will be problems, so let me know how it goes.
E8.zip

Folke Will

unread,
Apr 5, 2020, 5:27:18 PM4/5/20
to PiDP-8
Awesome!

I was able to assemble and run it on my SoC PDP-8/I implementation with enabled EAE. Thanks for not using 8/E instructions and EAE mode 1 only! 

To get the files onto my machine, I loaded them as papertape images and then loaded them in PIP using lines like E8.PA<PTR:. That way, I didn't have to ctrl+z. Instead, I had to insert trailer bytes at the beginning of the files because the first byte is usually lost when reading papertapes.

Assembling on OS/8 V8 went without errors. The assembling process took less than a minute with original speed and reading from a simulated RF08.

Unfortunately I haven't implemented a TTY yet, but I could see the escape sequences on my ASR33 simulation as shown on the attached screenshot. Finally a reason to implement a terminal. 


e8.jpg

William Cattey

unread,
Apr 5, 2020, 9:34:22 PM4/5/20
to PiDP-8
I've downloaded the zip file, and glanced at the documentation.
Very professional in style.

I've got a couple other projects going right now, but I'll try to play with e8 before too long.

Thanks for sharing this!

-Bill (the CATT, not Silver.)  :-)

Bill Silver

unread,
Apr 6, 2020, 9:14:17 AM4/6/20
to pid...@googlegroups.com
Regarding 8/e and EAE instructions: The 1970 edition of the Small Computer Handbook, which describes the 8/I,, says nothing about what happens if you combine the MQA and MQL bits. The result is the SWP instruction, which very usefully swaps AC and MQ. SWP is documented for the 8/e, and if it was ever documented for the 8/I I an mot aware of it. But it did work on the 8/I, or at least it worked on the 8/I that I used. So E8 uses SWP in one or two places, and if you have an 8/I simulator and want to run E8, you need to have SWP.

Bill Silver

unread,
Apr 8, 2020, 7:44:19 PM4/8/20
to PiDP-8
Attached is a new version dedicated to updated documentation. The instructions have a few clarifying remarks, and one important missing item--the ^F option during an incremental search. The code has lots more comments, and the executable is unchanged expect for a couple of trivial simplifications.

Thinking about query-replace...
E8v1.zip

Bill Silver

unread,
Apr 9, 2020, 7:31:41 PM4/9/20
to PiDP-8
Attached is a new version with five new commands, including search for previous search string, and forward and back one word.

I've noticed that there have been over 130 views of this thread, but no significant comments that indicate that anyone has tried this out and what they found. So I can't tell if this is of much interest to the community and whether I should continue development for other than my personal amusement. I don't really know what kind of things do interest folks, and it's quite OK if this is not one of them.

E8v2.zip

John Kennedy

unread,
Apr 9, 2020, 7:36:04 PM4/9/20
to PiDP-8
I'll be trying it this evening or at the weekend.

Mike Katz

unread,
Apr 9, 2020, 7:44:15 PM4/9/20
to John Kennedy, PiDP-8
I am interested I just haven't have time to try it yet.  I was thinking of writing a key mapper to emulate my favorite editor, Brief, by Underware. 

The last time I used EMACS Gerald Ford was president :)

I'm currently using the Slickedit Editor with Brief Emulation on Windows and Linux.
--
You received this message because you are subscribed to the Google Groups "PiDP-8" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pidp-8+un...@googlegroups.com.

Bill Silver

unread,
Apr 9, 2020, 8:13:20 PM4/9/20
to PiDP-8
The command dispatch tables in E8.PA define the key mapping, and you could change them to whatever you want, although you'd still get Emacs-like behavior just with different command keys. I've been thinking about other customizations that users could define.

Bill Silver

unread,
Apr 10, 2020, 8:36:42 PM4/10/20
to PiDP-8
Hey, if you used Emacs during the Ford administration (say 1976), were you at the MIT AI Lab? Or was it running somewhere else that early?


On Thursday, April 9, 2020 at 7:44:15 PM UTC-4, Mike Katz wrote:

Bill Silver

unread,
Apr 11, 2020, 3:08:42 PM4/11/20
to PiDP-8
New version with query-replace. I'm thinking this is the last major "must-have" for a competent editor.

Also, source files reorganized and simplified for those using better methods than PIP to copy to OS/8. PIP still works. The manual gives details.

Happy to answer any and all questions, fix bugs, etc. This project has been highly amusing for me personally, and I hope others may find it useful. 

E8v3.zip

Obsolescence

unread,
Apr 12, 2020, 7:33:51 AM4/12/20
to PiDP-8
Bill,

Amazing! This must be the most significant new PDP-8 program in a long long time. I always hoped for a nice OS/8 editor... it completes the PDP-8 as a fully fledged personal computer IMHO.

A simpler way to move the source code over:
I used os8-cp to copy the source files onto the regular OS/8 RK05 disk image:

   sudo ./os8-cp -rk0s <path and file of disk img> -a <path and file of source file to be copied> DSK:

And then your compile recipe worked flawlessly. Amazingly for a modern piece of software, E8 compiled and ran straight away. This is a major improvement in my life with the PDP-8. I always cross-compiled with palbart due to the lack of a comfortable OS/8 editor, to be honest... TECO is a bit too spartan for most of us (avoiding the word 'me' here), and I never got far with VT52-edit.

These weeks, I am forced to migrate from vi to emacs because of my pidp-10 project, so having a PDP-8 version is a MAJOR thing. I'll be the first one on the planet to learn & get comfortable with emacs - on a PDP-8!

I have not tested out all the features (that comes next) but all the basics work as they should for sure.

Thank you so much!

Kind regards,

Oscar.

(*disclaimer: I used regular simh, as I am PiDP-less in my current location, thanks to this bloody virus. But it does not matter I would think).

Obsolescence

unread,
Apr 12, 2020, 7:49:50 AM4/12/20
to PiDP-8
All features seem to work fine here, although I have not tried editing/inserting very large files yet.

How did you complete such a large programming project? Was it something you had been working on back in the day, or something from scratch?

Thank you!

Vincent Slyngstad

unread,
Apr 12, 2020, 10:26:38 AM4/12/20
to PiDP-8
Loving this and hoping to play with it more soon!

Here's my tiny suggestion to allow E8 to build with different assemblers:
*** e8.pa-      2020-04-12 00:21:44.553211800 -0700
--- e8.pa       2020-04-12 00:21:58.771754400 -0700
***************
*** 20,25 ****
--- 20,27 ----
  LSR=7417
  CAM=7621
  SWP=7521
+ MQL=7421      / Added by VRS
+ MQA=7501      / Added by VRS

  / DISPLAY SCREEN DIMENSIONS. WD * (HT+1) MUST BE < 3968 TO AVOID
  / RUNNING INTO OS/8 USE OF LAST PAGE OF FIELD 1

Then I wouldn't have to keep patching it :-).  Also, I've got a simple Makefile that keeps the various source modules synced so you needn't edit everything 3 times.

I wondered if it would be worthwhile documenting and/or eliminating differences from pico or nano?

    Vince

Bill Silver

unread,
Apr 12, 2020, 2:38:15 PM4/12/20
to PiDP-8
I first thought of writing E8 two weeks ago when I got my PiDP8/I working. I got it mostly to write code, rather than just running old programs. When I thought about a good first program to write, I remembered what text editing was like back then and realized that I’m just too old for that. So E8 was an ideal project. I have written emacs-like editors twice before, and well remember how to do it (once for the TI-980 minicomputer and once for the Z80 micro, both over 40 years ago). I wrote most of it using modern Emacs on my Windows PC, and then switched to E8 itself when it became functional enough. 

For your PiDP-10, are you going to run ITS or some DEC OS? I ask because you mentioned migrating to Emacs for that project, and Emacs was introduced on a PDP-10 running ITS.

Bill Silver

unread,
Apr 12, 2020, 2:41:11 PM4/12/20
to PiDP-8
I added those EAE definitions. You'll see them in the release I plan for later today. What are pico and nano?

Steve Tockey

unread,
Apr 12, 2020, 3:09:42 PM4/12/20
to PiDP-8
Bill,
I loaded the E8 source code and got it built just fine. However, I am running my PiDP-8/Is with the OS/8 console in a Raspbian Terminal window. It's not responding to the ESC sequences as I thought it should. I was under the impression that Raspbian Terminal windows did handle standard VT-100 commands. At least it appears to so on my PiDP-11/70. Anyway, more work needs to be done on my end before E8 does what it is supposed to in my configuration. If I need to edit the E8 source code to make it use different ESC sequences, do you have a quick start pointer to where in the E8 code base I need to go (hint: that would be a useful thing to include in the manual)?

Vincent Slyngstad

unread,
Apr 12, 2020, 3:10:03 PM4/12/20
to PiDP-8


On Sunday, April 12, 2020 at 11:41:11 AM UTC-7, Bill Silver wrote:
I added those EAE definitions. You'll see them in the release I plan for later today. What are pico and nano?

My understanding is that the PINE email client comes with an editor called pico, which is a very small, very fast emacs-like editor,  for composing emails and replies and such.  The license has since been relaxed, but at one point licensing issues meant that it was not possible to include it in the open source Linux base.  So, nano was created, instead.  Nano is the default editor in the Linux distributions I've tried.  I was thinking that a new generation of folks is growing up with nano "muscle memory".

Vince

Oscar Vermeulen

unread,
Apr 12, 2020, 3:24:52 PM4/12/20
to Steve Tockey, PiDP-8
Steve,

Make sure that you have
   set tti 7b
in your boot script.

Kind regards,

Oscar.

Bill Silver

unread,
Apr 12, 2020, 3:48:19 PM4/12/20
to PiDP-8
If "Raspian Terminal window" is what you get when you do CTRL-ALT-F1, then it works fine on my end. Maybe Oscar's advice will do the trick. If not, it's easy to change the escape sequences. In E8BASE search for "CLRSC," (clear screen), "CLREOL," (clear to end of line), and "SETCUR," (set cursor). The first two are simple 0-terminated strings. SETCUR is a subroutine. Let me know how it goes. Good idea to include this in the manual.

Steve Tockey

unread,
Apr 12, 2020, 3:51:09 PM4/12/20
to PiDP-8
Oscar, Thanks, that did it.

Bill Silver

unread,
Apr 12, 2020, 7:24:56 PM4/12/20
to PiDP-8
Attached is version 4. Major feature is a limited undo to recover deleted characters--see the manual for a description. Also followed suggestions from Vince and Steve. Note that this version doesn't clear the screen on exit, it just puts the cursor at the last line. 

Not sure if I can think of any practical thing left to do, but this has been amusing and I don't really want to stop, but we're almost out of memory for more code, and I have a day job, so who knows.

e8v4.zip

Steve Tockey

unread,
Apr 12, 2020, 7:32:54 PM4/12/20
to PiDP-8
Bill,

> . . . but we're almost out of memory for more code . . .

It’s not a *real* PDP-8 project until you have to struggle with compressing what you already have in order to make room for just a little bit more.

Vincent Slyngstad

unread,
Apr 12, 2020, 8:48:49 PM4/12/20
to PiDP-8


On Sunday, April 12, 2020 at 4:24:56 PM UTC-7, Bill Silver wrote:
Not sure if I can think of any practical thing left to do, but this has been amusing and I don't really want to stop, but we're almost out of memory for more code, and I have a day job, so who knows.

I hadn't wanted to distract from your development, but for running on real hardware, the EAE requirement limits the number of machines that can be used.

Vince

Bill Silver

unread,
Apr 12, 2020, 9:23:25 PM4/12/20
to PiDP-8
Interesting. It would be a pain, but no EAE could be done. How many PDP-8s are still running in the world, do you think? How many have EAE? Do the ones without EAE have enough core? I suppose if someone had a specific 8 who wanted to run E8 and had enough core, I'd pay attention. 

Steve Tockey

unread,
Apr 12, 2020, 9:34:05 PM4/12/20
to PiDP-8
That would be a good question to also ask on the alt.sys.pdp8 group as well?

Vincent Slyngstad

unread,
Apr 12, 2020, 10:19:55 PM4/12/20
to PiDP-8


On Sunday, April 12, 2020 at 6:23:25 PM UTC-7, Bill Silver wrote:
Interesting. It would be a pain, but no EAE could be done. How many PDP-8s are still running in the world, do you think? How many have EAE? Do the ones without EAE have enough core? I suppose if someone had a specific 8 who wanted to run E8 and had enough core, I'd pay attention. 

I was thinking about doing it eventually, as I have some machines like that.  I also know of a few 8/E which don't have the option.  For space war, I tacked on a DECUS EAE emulator and tweaked the source.  That needs a couple of code pages free, though.

Also, IAC cannot be combined with RAL or RAR on some CPUs, and you've got an instance of that in your code, too.

    Vince

Oscar Vermeulen

unread,
Apr 13, 2020, 7:28:53 AM4/13/20
to Bill Silver, PiDP-8
Bill,

On Sun, 12 Apr 2020 at 20:38, Bill Silver <bsi...@tidewater.net> wrote:
I first thought of writing E8 two weeks ago when I got my PiDP8/I working. I got it mostly to write code, rather than just running old programs.

I wish I could say that. Mostly because the lack of a comfortable editor so far has been a bit of a pain for spoiled youngsters (I qualify for that label at 52, in the PDP-8 world?), I only wrote programs using palbart as a cross-compiler, which os8-cp makes very simple to do. Or even just used the built-in simh features. Which do not feel the same as native development obviously. I once thought of porting the tiny CP/M VDE editor, but quickly shrank back from the reaiity of doing so...

For your PiDP-10, are you going to run ITS or some DEC OS? I ask because you mentioned migrating to Emacs for that project, and Emacs was introduced on a PDP-10 running ITS.

The PiDP-10 simply uses Rich Cornwell's KA10 simulator, so it will run anything, no credit to me. But ITS was my motivator, it is the ultimate retrocomputing playground when you invest an hour or so to get comfortable with the basics. Lars (and Angelo, and all the other ITS contributors, he pointed out to me!) made the ITS distribution very rich in fun things to do. Like all the graphics options, firing up the attached PDP-6 with simulated front panel, and loads of languages and applications. The ITS simulation project ventures out way beyond giving you the CPU through a text terminal.

Kind regards,

Oscar.

Bill Silver

unread,
Apr 13, 2020, 8:32:45 AM4/13/20
to PiDP-8
I used ITS in my grad school years. I don't remember much about the details, but I remember how it felt to be part of that community. Rebel Alliance against the Empire (IBM). The total lack of privacy and security on ITS was a real sign of those times, which we'll never see again.

Ian Schofield

unread,
Apr 13, 2020, 5:48:25 PM4/13/20
to PiDP-8
Dear Bill,

 Really good job. Works a treat and flashes the lights in a most satisfactory manner!
 Only 1 request for us non EMACS users, is it possible to code in the cursor keys as well as using ^P ^N etc.?
 Next, the EAE issue which is of consequence.
 The place to look is http://homepage.divms.uiowa.edu/~jones/pdp8/models/ . There is quite a bit of info but the 'different' EAE options are
 slightly unclear. Anyway, as I understand it the 8/S and 8/L did not have an MQ register at all.
 The next step is as seen on a basic (eg) 8/A which has an MQ register but no other mode A  functions see: http://homepage.divms.uiowa.edu/~jones/pdp8/refcard/74.html
 Then, with a KE8 module as seen in the 8/I and later as omnibus cards (M8340 M8341), you got the whole thing with mode A/B etc. etc.
 In context, given that your editor is built for OS/8 for which you need at least 8K, I think there is a good argument for specifying a processor with the minimal
 EAE functions as above. I have to admit an interest as my c compiler/runtime makes extensive use of the MQ register as it is an absolute space saver!!!

Regards, Ian.

 

Bill Silver

unread,
Apr 13, 2020, 6:57:21 PM4/13/20
to PiDP-8
Attached is a new version, which seems to be becoming a daily habit. This one has no changes in the executable code, some tweaks to comments in a few places, and, most significant, a theory of operation in the manual. I also include pages.txt, which I forgot to include in v4, which shows the number of unused words of memory on each page of field 0, where all the code is. As you can see I've got one free page, two pages with some usable free space, and the others are packed pretty tight. I could move IOBUF to field 1 to free up two more pages, at a minor cost of reducing the max screen size by 256 characters.

Regarding the cursor keys: easy to do, but I have to check to make sure that I've got the right escape sequence that keyboards send. Generally I'm typing at MobaXterm on a Windows PC--I don't use Raspian much (at my age I'm trying to avoid learning new things). So I know what my Windows keyboard is sending, but I want to check it out with a Raspian terminal window.

I now have two requests (Ian and Vince) to eliminate the EAE requirement (I only use mode A, which is what my real 8/I had back in the day). I've been assuming that E8 would be used on a simulator with EAE and eight fields of memory, e.g. a PiDP-8/I. Ian, I agree that there is a good argument in principal, but I'd like to know more about the "consequence" you speak of. Is it practical or hypothetical? I could eliminate the EAE requirement, but is there some real, non-hypothetical, near-term intent to run it on an actual machine that doesn't have EAE and has enough core? Or some other non-hypothetical reason? 
e8v5.zip

Steve Tockey

unread,
Apr 13, 2020, 7:35:22 PM4/13/20
to PiDP-8
Bill,

"... which shows the number of unused words of memory on each page of field 0, where all the code is"

Are you aware of the OS/8 utility program BITMAP? It will generate a map of what memory locations are being used how many times in a pretty readable format. You feed it one or more *.BN files and it makes the map for you as output to any OS/8 device/file.

See page 2-26 of "DEC-S8-OSHBA-A OS8 Handbook.pdf" (page 189 in the PDF) for instructions on how to use BITMAP.


Bill Silver

unread,
Apr 13, 2020, 7:50:37 PM4/13/20
to PiDP-8
Wasn't aware. That's totally awesome, thanks!

Steve Tockey

unread,
Apr 13, 2020, 7:59:50 PM4/13/20
to PiDP-8

You are most welcome. While we are at it, you might also want to look at CREF. It generates cross-reference listings which are useful for where-is-this-symbol-defined? and where-is-this-symbol-used? kinds of analysis.


Cheers.

Vincent Slyngstad

unread,
Apr 14, 2020, 3:38:16 AM4/14/20
to PiDP-8


On Monday, April 13, 2020 at 3:57:21 PM UTC-7, Bill Silver wrote:
I now have two requests (Ian and Vince) to eliminate the EAE requirement (I only use mode A, which is what my real 8/I had back in the day). I've been assuming that E8 would be used on a simulator with EAE and eight fields of memory, e.g. a PiDP-8/I. Ian, I agree that there is a good argument in principal, but I'd like to know more about the "consequence" you speak of. Is it practical or hypothetical? I could eliminate the EAE requirement, but is there some real, non-hypothetical, near-term intent to run it on an actual machine that doesn't have EAE and has enough core? Or some other non-hypothetical reason? 

I think the 8/A is a reasonably compelling reason.  There are a bunch of those in decent working order around.

Here's my attempt to be part of the solution :-).  In the sub-directory "vrs" you'll find a slightly tweaked V5 with an EAE emulator tacked on.  I was able to create a file and later edit it with this version on SIMH with EAE disabled, so I think it is fairly close.  The EAE emulator fits in the remaining page in field 0, and there are IFZERO, etc directives to build with or without emulation.  It creates a pseudo MQ and SC on page zero, and uses a few more words of page zero as dispatch pointers.

The EAE emulator has a few restrictions.  Since most EAE instructions get turned into calls, those that require an operand in the second word must be issued with DF=IF.  You also can't combine EAE instructions, which means you must say CAM, not "CLA MQL", and "CLA MQA" doesn't work.

I also broke up the IAC RTL stuff into multiple instructions to be "family of 8" compliant.

The .zip is my whole directory structure, so it has all the old versions, etc.  (Hopefully everyone has a high speed connection these days!)

I also hope this doesn't ugly up the code too badly.  Bill's code is really nicely done!

    Vince
e8.zip

Ian Schofield

unread,
Apr 14, 2020, 6:25:30 AM4/14/20
to PiDP-8
Dear All,

 Vince; thanks for your note. I think we can agree that a minimal 8/A is a reasonable target. The reason I used the term 'of consequence' merely reflects the fact that the PDP8 has evolved since its inception and inevitably, there are bits of software that are machine dependant. In this regard, the fact that the simh version we use emulates an FPU is not quite cricket with the target being the PiDP8I!. Similarly, I could raise the byteswap (BSW) issue as another function only available on some models. Finally, I am in the process of porting E8 to my DECMate III. Again, yes it is a PDP8 but the functionality does have some differences.
This is not a new problem as we live in a time where the X86 architecture continues to evolve and, thank goodness, some slightly better architectures are around as well (ARM).
 So, keep up the good work in developing useful software for a machine that can do something useful and interesting while using a million times less ram than my desktop machine (Dell+8Gb)!!!

Regards, Ian.

Bill Silver

unread,
Apr 14, 2020, 10:57:58 AM4/14/20
to PiDP-8

Nice work Vince. I like the conditional assembly to use hardware or emulation, and I like how little you actually had to change.


Y’all have convinced me that you are serious about this. I still wonder if running on real hardware is hypothetical, but since you believe that someone might actually do it, I’ll make an “official” non-EAE option. It will be similar to what Vince has done, but I’m going to clean things up some and check every change for subtle bugs. I really only need to emulate DVI and the shift instructions, the one multiply I have isn’t really necessary. I may also stop using MQ for argument passing and temporary storage, the alternatives are fine. I’m probably going to write my own emulator for the instructions I need, DEC’s is just too ugly for my emotional well-being. Should have this done in a day or two, I’ve got some day job things to deal with first.


Please do let me know if someone runs E8 on a real PDP-8 . It sure would be amusing to see. I haven’t seen an 8 running at all since 1977, and until now didn’t even know that they still existed.

William Cattey

unread,
Apr 14, 2020, 11:33:42 AM4/14/20
to PiDP-8
I hang around with folks with museum pieces.  The EAE started off as "DEC's over-priced, under-powered arithmetic enhancement," that very few customers bought.  (The Floating Point Processor was, "Too expensive except for the very few applications with the bucks to pay for the critical need for that much power.)  So I was surprised to hear someone used an 8i with EAE.  My sense is that very few of the surviving museum piece PDP-8's have EAE.  The 8E and 8A did get the MQ register, and a 6-bit swap instruction, but the multiply, divide, etc. instructions required that expensive add-on board.  PDP-8's before the 8e didn't have the MQ register.

The work I've done with OS/8 media creation on the tangentsoft site for the PiDP-8/i has always been done with an eye to the ability to burn physical media from the images and run them on physical (museum piece) hardware.

The outcome I'd most strongly advocate for with this amazing Emacs software is that it be runable on as many of the "Family of 8" as possible.

This means:

1. Avoid use of EAE instructions.
2. Avoid use of the MQ register.
3. Avoid use of the BSW instruction.
4. Avoid certain combinations of instructions forbidden on 8/i and maybe even "straight 8" hardware.
5. Give up trying to run it on the 8/s and the 5 as even DEC decided they were "outside the Family."

-Bill C.

Mike Katz

unread,
Apr 14, 2020, 12:07:40 PM4/14/20
to William Cattey, PiDP-8
I'm inclined to agree with Bill.  To keep with Charlie Lasner's image of compatible with everything in the "Family of 8", the new E8 should be compatible with everything as the default condition, with build time options or, in the spirit of the family of 8, self modifying code or overlays to enable EAE, BSW and possible combined micro-instruction incompatibilities.

We all appreciate your efforts for E8 once I get a chance to copy the source over to my PiDP-8i I will start using it to write code.

I would like to make a suggestion for an addition:  Instead of compiling/assembling in the screen size, allow passing in the height and width as command line options.  This allows for much greater flexibility on the size of the SSH or VNC window.

Again, thanks for the good work.

One question, is there a way, through SSH or VNC to trap the ALT key?  This will allow modifying the key map to have more flexibility to emulate other editors.
--
You received this message because you are subscribed to the Google Groups "PiDP-8" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pidp-8+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/pidp-8/ddef5e71-0372-4a24-a32a-5e3383040568%40googlegroups.com.

Vincent Slyngstad

unread,
Apr 14, 2020, 1:46:18 PM4/14/20
to PiDP-8
On Tuesday, April 14, 2020 at 7:57:58 AM UTC-7, Bill Silver wrote:

Nice work Vince. I like the conditional assembly to use hardware or emulation, and I like how little you actually had to change.


Thanks!  I tried not to mess with the style, and didn't want to introduce random new bugs.

Y’all have convinced me that you are serious about this. I still wonder if running on real hardware is hypothetical, but since you believe that someone might actually do it, I’ll make an “official” non-EAE option. It will be similar to what Vince has done, but I’m going to clean things up some and check every change for subtle bugs.


The eae module is quite ugly as I left it.  Not because the original DECUS stuff was bad, but because both here and earlier when I did this with space war, I wanted to preserve as much of the original code as I could, just commenting it out the old and sticking the new right after.  Easier to argue about the correctness that way.

Initially, I had just wanted to see how much code space to ask for, but as I got into it, I saw you weren't using some of the bigger routines, and then it fit!

For this, just removing the UNUSED ifdefs and redundant comments would go quite a way to restoring the readability.
 

Please do let me know if someone runs E8 on a real PDP-8 . It sure would be amusing to see. I haven’t seen an 8 running at all since 1977, and until now didn’t even know that they still existed.


I've got a room full of them (and their associated clutter),  Very old photos on the so-much-stuff website.  (Most from my previous residence, actually.)

    Vince

Bill Silver

unread,
Apr 14, 2020, 2:29:03 PM4/14/20
to PiDP-8
On Tuesday, April 14, 2020 at 12:07:40 PM UTC-4, Mike Katz wrote:

I would like to make a suggestion for an addition:  Instead of compiling/assembling in the screen size, allow passing in the height and width as command line options.  This allows for much greater flexibility on the size of the SSH or VNC window.
 
OS/8 doesn't really have a "command line". But even if it did, cramming all this functionality into a PDP-8 pushes me to make parameters like screen size known at assembly time, rather than run time. However, I do think requiring people to edit the source for their specific setup is not a great plan. So for the next release, I intend to pull all setup definitions (screen size, memory size, and EAE use) into a tiny file that PAL8 reads first. Then people can make this file once for their setup and not have to edit the source every time there is an update. Comments on this idea appreciated.

One question, is there a way, through SSH or VNC to trap the ALT key?  This will allow modifying the key map to have more flexibility to emulate other editors.
I have no idea, but I will point out that the command dispatch tables define the key map and are easily changed, although the actual commands will still do the same thing.

Steve Tockey

unread,
Apr 14, 2020, 4:43:59 PM4/14/20
to PiDP-8
"I intend to pull all setup definitions (screen size, memory size, and EAE use) into a tiny file that PAL8 reads first. Then people can make this file once for their setup and not have to edit the source every time there is an update. Comments on this idea appreciated."

I would say that this probably makes the most sense. Even if you could find a way to get command line parameters into E8 (which, IMHO, is either at least non-trivial if not altogether impossible given the limitations imposed by CCL), it would require the user re-typing those parameters every time they wanted to run E8. An alternative would be to have a kind of E8.config file on SYS: or DSK: but the added code overhead of getting the contents out of that file and into E8 each time you run it could be prohibitive. As long as all of the end-user customize-able elements are contained in a single, well-explained source code file then making it a assembly-time configuration is not at all unreasonable.

SYSGEN for E8.  :^)

Jack Rubin

unread,
Apr 14, 2020, 7:42:12 PM4/14/20
to PiDP-8

ComputerariumPano.jpg


Just raising another hand for a collection of non-EAE non-BSW hardware running  with 8+ K of memory.

Bill Silver

unread,
Apr 14, 2020, 9:27:22 PM4/14/20
to PiDP-8
The attached version does not use EAE. At all. There is no option, it just doesn't.
As I looked in detail at my many uses of EAE, I realized that the only cases where EAE is of significant value is the use of divide. So I changed all other cases to non-EAE equivalents; some got a little less elegant, but whatever. Then I wrote a divide subroutine, modeled on the one from DEC that Vince gave me but not so ugly.
I think the final result is cleaner is some ways. Thanks to the many voices who advocated for this. Requiring EAE as I did when it's not really of significant value is a bad engineering choice.
e8v6.zip

Vincent Slyngstad

unread,
Apr 15, 2020, 3:03:36 AM4/15/20
to PiDP-8
On Tuesday, April 14, 2020 at 6:27:22 PM UTC-7, Bill Silver wrote:
The attached version does not use EAE. At all. There is no option, it just doesn't.
 
Awesome!  That frees up that page again for more features :-).

    Vince

William Cattey

unread,
Apr 15, 2020, 4:56:00 PM4/15/20
to PiDP-8
One COULD read the front panel switches for a specification of terminal size. It would be tricky mapping 12 bits to the space of terminal sizes.

Another alternative would be to allow setting the width and height in two well-defined locations.  Then it's a trivial ODT script to adjust them.
Indeed, the patching scripts I have in the pidp8 software development tree would allow extremely easy approaches to this.

Imagine if 0100 had the height, and 0101 had the width. You'd set 24x80 as follows:

GET SYS EMACS.SV
ODT
0100 / 30
0101 / 120
^C
SAVE SYS EMACS.SV

My scripts could also directly work the .SV file using FUTIL

.../media/os8/patches/PAL8-21.22.4M.patch8  is an example.

Bill Silver

unread,
Apr 15, 2020, 7:06:25 PM4/15/20
to PiDP-8
I appreciable the suggestions, but I'd need to add some code to make screen size a run-time parameter instead of assembly time. I'm not convinced that there would be enough value to be worth the additional trouble.

Bill Silver

unread,
Apr 15, 2020, 7:13:41 PM4/15/20
to PiDP-8
With all the talk about running on real hardware, I've been doing speed testing at throttle 400k. I was not happy with the screen update time, and I'm now testing a much faster version. It should be out tomorrow.

I have noticed some odd behavior unrelated to E8 at 400k. Just typing a character at the OS/8 command prompt seems much slower than makes any sense. I need to gather more data, but if anyone has an idea let me know.

Bill Silver

unread,
Apr 16, 2020, 6:58:16 PM4/16/20
to PiDP-8
Significant release:
  • Two important bug fixes. One prevents OS/8 from incorrectly believing that the DSK device handler is already in core when E8 requests it be loaded. The other involved incorrect handling of the mark. Both caused a hard crash in certain rare cases.
  • Much faster screen update. Useful at real PDP-8 speeds, not noticeable on superspeed simulators.
  • Custom screen and memory size settings are made without editing E8 source. See the manual for details.
  • E8 responds to escape sequences sent by special keys on modern keyboards. The arrow keys, home, end, page up/down, delete. The manual has more details.

e8v7.zip

Neil Higgins

unread,
Apr 16, 2020, 8:40:52 PM4/16/20
to PiDP-8
Just a quick note to say thanks. You have indeed done a magnificent thing here. Although it’s anachronistic to use an ANSI-type terminal on a PDP-8 (Charles will be rolling in his grave) , having a good screen editor significantly lowers the barrier to entry for beginners, especially non-typists. This is a keeper!

Mike Katz

unread,
Apr 16, 2020, 10:57:07 PM4/16/20
to PiDP-8
Please forgive me for my stupidity but I spent a few hours reading documentation and when I try to use os8-cp to copy the E8 files to OS/8 DSK: I don't see them under OS/8

Here is the os8-cp command and verbose results:

pi@PiDP8:~/pidp8i/E8 $ ../bin/os8-cp -d -v -a E8.PA dsk:
File parsing of: E8.PA
E8.PA is POSIX.
Globber: Setting initial source: E8.PA and mode: a
File parsing of: dsk:
Setting initial destination: dsk:
Destination: dsk:
{'sys': None, 'mount': [], 'copy': [['a', 'E8.PA', 'DSK:', 'into']]}
Attaching rk0 to /home/pi/pidp8i/bin/v3d.rk05
Booting rk0...
Source: E8.PA, Destination: DSK:, Mode: a.
Format converting E8.PA
Detaching rk0
Quitting simh.

I then type the following:

pidp8i stop
pidp8i start
pidp8i

I then do a DIR DSK: and I don't see the E8.PA file on DSK: (the TEST.PA is unrelated).

I checked the ../bin/v3d.rk05 file and it's file modified time has changed to the time when I ran the os8-cp command.

The only think that I can think of is the simh is not booting from ../bin/v3d.RK05.

My IF switches are all off.

Help please...  thank you


PDP-8 simulator V4.0-0 Current        git commit id: 4e0450cf
PiDP-8/I pi4-gpio-hack:id[bd10d4dde2] [pi3b] [ils] [stdpcb] [gpio] [rt]Loading OS/8 from the RK05 cartridge disk...

PiDP-8/I pkg:vUNKNOWN - OS/8 V3D - KBM V3Q - CCL V1F
Configured by pi@PiDP8 on 2019.08.16 at 14:08:32 CDT

Restart address = 07600

Type:
    .DIR                -  to get a list of files on DSK:
    .DIR SYS:           -  to get a list of files on SYS:
    .R PROGNAME         -  to run a system program
    .HELP FILENAME      -  to type a help file

.DIR DSK:



ADVENT.TX 201               ADVENT.FT  11               ADVENT.DC   9
ADVENT.RL   4               ADVENT.LD 145               AINDX .DA  50
ATEXT .DA 144               ADVENT.IN   1               BINGO .BA  13
BLKJAC.BA  22               BLKJAK.BA   7               BUNNY .BA   7
CALNDR.BA   5               CHECKR.BA  12               CRAPS .BA   8
DICE  .BA   2               FOOTBL.BA  23               FOTBAL.BA  21
GOLF  .BA  17               HELLO .BA  11               HOCKEY.BA  16
KING  .BA  23               LIFE  .BA   5               LIFE2 .BA   7
MONPLY.BA  22               POKER .BA  22               ROCKET.BA   9
ROCKT1.BA   8               ROULET.BA  17               SIGNS .BA  19
SNOOPY.BA  10               SPACWR.BA  39               TICTAC.BA   7
WAR   .BA   7               WAR2  .BA   9               WEKDAY.BA  10
WUMPUS.BA  17               YAHTZE.BA  27               MONPLY.B1   6
YAHTZE.IN   7               INIT  .CM   1               INIT  .TX   1
HEADER.SB   8               CCR   .BI   1               LIBC  .RL  23
FIB   .C    1               CALC  .C    5               PS    .C    1
TEST  .PA   4               TEST  .BN   1               TEST  .LS   5


2190 FREE BLOCKS

.


Steve Tockey

unread,
Apr 17, 2020, 4:59:55 AM4/17/20
to PiDP-8
Mike,
I believe that the /home/Pi... path is where everything gets built when you install the PiDP-8/I distribution software. The actual running images are in /opt/pidp8i/share/media/os8 or something close to that. You need to be doing the os8-cp into the /opt/pidp8i/... RK05 image.

To be 100% sure, look at the 0.script file in /opt/pidp8i/share/boot and see what paths and file names it is using when it does the ATTACH RK0 ...

That should get you on the air.

David Richards

unread,
Apr 17, 2020, 8:56:47 AM4/17/20
to PiDP-8
Greetings, I used this command to transfer the source file to the working disk image:
../bin/os8-cp -v -rk0s /opt/pidp8i/share/media/os8/v3d.rk05 -a E8ALL.PA dsk:

Ithe compiled it using the commands shown in the manual:

.R PAL8
*E8<E8ALL/L
US  2400
ERRORS DETECTED: 1
LINKS GENERATED: 314

.

However the compiler finishes with an error, an object file is made though.
E8.BN (18 blocks)

I can load the file and run it
LOAD E8
START

and it runs ok.
I tried this and it seem to have made a working .SV file too.

LOAD E8
SA SYS E8;200=1000

I dont know what I'm doing wrong, but making some progress.
I updated my pidp8i today withthe latest trunk version just in case
The version linux is a bit old though.
Kind regards, David.

Mike Katz

unread,
Apr 17, 2020, 9:50:30 AM4/17/20
to Steve Tockey, PiDP-8
You are correct, 0.script has the following attach line:

att rk0 /opt/pidp8i/share/media/os8/v3d.rk05

Thank you.

Bill Silver

unread,
Apr 17, 2020, 10:10:38 AM4/17/20
to PiDP-8
I see the problem, thanks for finding and reporting it. I used PIP to transfer the source back to my PC for making the distribution kit. Apparently PIP breaks up any lines longer than 72 characters, which caused "TS" to be on a separate line and is the undefined symbol. Search for "2400" and you'll see it just before "FIX24". The TS belongs on the previous line to make "RESULTS".

David Richards

unread,
Apr 17, 2020, 10:21:09 AM4/17/20
to PiDP-8
Greetings Bill,
Problem sorted, assembly works just like in the manual now.
I made a listing file and searched for the error but there isnt one. It just assemnbled the 'TS' line into a 0 word.
Looks as if it could run ok like that too as the extra word was after one function and before another, Iit seemed ok anyway.
Thanks for the speedy response.
Kind regards, David.

Ian Schofield

unread,
Apr 17, 2020, 10:33:57 AM4/17/20
to PiDP-8
Dear Bill,

 Many thanks for the update … cursor keys now work for those of us who haven't got any idea how to use a computer!
 Further to this thread, Dave has a problem which is not obvious in that assembling E8ALL.PA does result in 1 error.
PAL8 is not exactly helpful sometimes!
It is due to a wrapped comment line at line# 1193/4.
Fix this and it woks absolutely fine..

Regards, Ian.

Mike Katz

unread,
Apr 17, 2020, 1:10:43 PM4/17/20
to Ian Schofield, PiDP-8
Thank every one I was able to compile and get E8 running by typing

LOAD E8/G

However, when I try to run

R E8

The system hangs.

I ran the

.SA SYS E8;200=1000

command and the resultant SYS:E8.SV file was only 2 blocks.

What did I do wrong?

Thanks again for you help.

             Mike
--
You received this message because you are subscribed to the Google Groups "PiDP-8" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pidp-8+un...@googlegroups.com.

Bill Silver

unread,
Apr 17, 2020, 1:13:35 PM4/17/20
to PiDP-8
One possibility (which has happened to me a few times) is that if you copy an SV file with PIP you must you the /I option. One of the symptoms of forgetting the /I is that the file is much too small.

Mike Katz

unread,
Apr 17, 2020, 1:22:47 PM4/17/20
to Bill Silver, PiDP-8
I didn't copy it the

.SA SYS E8;200=1000

command created the file on SYS:
--
You received this message because you are subscribed to the Google Groups "PiDP-8" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pidp-8+un...@googlegroups.com.

Steve Tockey

unread,
Apr 17, 2020, 4:57:43 PM4/17/20
to PiDP-8
A possibility for you to consider . . .

.LOAD E8/G

only loads and runs the last E8.BN file that got assembled from E8.PA. The OS/8 LOAD command does NOT automatically make a new .SV image for you. That must be done explicitly. By you. So whatever got run when you did type

.R E8

is whatever got assembled, loaded, and SAVEd the last time you did any .SAVE E8 . . . command. Instead, try (without the /G):

.LOAD E8

.SA SYS E8;200=1000

Now you should be able to 

.R E8

As long as the last version of E8.BN assembled with PAL8 is the correct one, then E8.SV should also now be correct.


Vincent Slyngstad

unread,
Apr 17, 2020, 5:32:45 PM4/17/20
to PiDP-8
On Friday, April 17, 2020 at 10:22:47 AM UTC-7, Mike Katz wrote:
I didn't copy it the

.SA SYS E8;200=1000

command created the file on SYS:

One AHA! moment, for me, was the realization that the name of the thing is e8all, not e8.
So maybe

.GET E8ALL
.SA SYS E8;200=1000

I definitely loaded a couple of E8, which promptly crashed, before realizing this.

    Vince

Mike Katz

unread,
Apr 17, 2020, 5:39:48 PM4/17/20
to Steve Tockey, PiDP-8
Thanks everyone, worked like a charm!!!

I have spent several hours in order to take a step back 45 years to my high school days.

Is this one of the definitions of insanity:-P
--
You received this message because you are subscribed to the Google Groups "PiDP-8" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pidp-8+un...@googlegroups.com.

Mike Katz

unread,
Apr 17, 2020, 5:47:53 PM4/17/20
to PiDP-8
This is really fantastic.  Thank you!!!!

One question, is there any easy (ie E8DEFS way) to change the behavior
when the cursor hits the bottom line of the screen but there is more
left in the file.

Right now is centers the next line in the display.  For me, I would
prefer it just to scroll up 1 line.

I am sure we will all find many ways we want to customize the editor.

Thanks again!!!

Mike Katz

unread,
Apr 17, 2020, 6:22:12 PM4/17/20
to Vincent Slyngstad, PiDP-8
On helpful suggestion you will need to turn off CTRL-S/CTRL-Q handshaking in your terminal emulator.

You can use ALT-S you can search but ALT-Q is insert next character as control character and CTRL-Q is insert next types char as is.

What are you guys using for your terminal emulator?

I've tried PUTTY and the terminal emulator and LXTerminal.
--
You received this message because you are subscribed to the Google Groups "PiDP-8" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pidp-8+un...@googlegroups.com.

Mike Katz

unread,
Apr 17, 2020, 6:25:48 PM4/17/20
to Vincent Slyngstad, PiDP-8
I think this needs to be turned off in your shell not your terminal emulator.  Please forgive me for my mistake.

Mike Katz

unread,
Apr 17, 2020, 6:28:54 PM4/17/20
to Vincent Slyngstad, PiDP-8

stty -ixon will do that for the current shell.

Mike Katz

unread,
Apr 17, 2020, 6:39:59 PM4/17/20
to Vincent Slyngstad, PiDP-8
The defaults In the E8.pdf files are incorrect:

SCRWD=120
SCRHT=24
MEMSIZ=6

The defaults are

IFNDEF SCRWD <SCRWD=80>
IFNDEF SCRHT <SCRHT=42>
IFNDEF MEMSIZ <MEMSIZ=10>

Just for reference.

This editor is fantastic.

Thanks again


Bill Silver

unread,
Apr 17, 2020, 8:22:56 PM4/17/20
to PiDP-8
Comments on some previous posts:
  • Thanks big time for "stty -ixon". I've been wondering for quite a while if there was some way to stop the interception of ^Q and ^S.
  • The lines in E8.pdf about setting up an E8DEFS file are not incorrect, they are an example of a non-default setup. Perhaps the text is not as clear about that as I intended.
  • I wouldn't change the behavior when the cursor is at the bottom of the screen, but it would be easy to create new commands to scroll the screen one line up or down regardless of where the cursor is. This is a desirable feature and one I use constantly with modern editors. However, modern machines have powerful graphics capabilities that make scrolling smooth and easy. With E8 a one line scroll would force an entire screen redraw, and wouldn't be as satisfying as one might expect. Still I might do it anyway.
Please keep the comments, suggestions, and bug reports coming. Always happy to answer questions about the use, development, and operation of E8. 

Mike Katz

unread,
Apr 17, 2020, 8:47:05 PM4/17/20
to Bill Silver, PiDP-8
Bill,

Thanks again for everything.

stty raw

will turn off all keyboard control character interpretation.  This include CTRL/W which closed the terminal window.

It feels like old times again, I'm writing PAL8 assembler for the first time in many many many years and I wish I had E8 way back then.  The closest i had was a brain dead version written as teco macros (ported from the PDP-11).

E8 is just marvelous.  Now if only I would stop trying to position the cursor with the mouse:-P

As for the screen redraw.  I ran an editor that scrolled one line at a time at 9600 baud on an ADM-3A and it wasn't all that slow.

We are, technically, running a virtual terminal and limited by the CPU speed (I'm on a 3b and thinking of using a 4b like the one I have in my PiDP-11/70).  These are pretty hefty CPUs.

If you are using standard VT-100/ANSI escape codes then EscD is scroll Up 1 line and EscM is scroll down one line.  This would let the linux or putty type program handle the scrolling rather then having to rewrite the entire screen one line at a time.

I worked on an editor many years ago called the Programma Improved Editor (PIE, copyright Programma International) and I had to make 2 different versions of the screen driver, depending on the terminal using it, one used scroll up and down and the other used clear screen and re-wrote each line.  This could be done with conditional assembly.

This program is awesome and please don't think that by making my suggestions I am in any way belittling your hard work but like any TRUE Hacker (not the current meaning of that word) I want to improve a perfectly working program.

     Mike
--
You received this message because you are subscribed to the Google Groups "PiDP-8" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pidp-8+un...@googlegroups.com.

Bill Silver

unread,
Apr 17, 2020, 9:36:51 PM4/17/20
to PiDP-8
Thanks for the comments Mike. It feels like old times for me too. In my home office is a 250-page listing of code I wrote for an 8/I in the mid-70's, all done with OS/8 on DECtape, OS/8 Edit, and an ASR-33. I have no idea how I did that, but I was young and didn't know any better. I take no offense in any way at your comments, or anyone's. I am an old EE in the Maine woods and quite content. And there was no hard work involved. Every minute was a delight. Well, maybe not every minute, but still...

William Cattey

unread,
Apr 18, 2020, 5:34:56 PM4/18/20
to PiDP-8
I finally got round to trying out E8 today. (e8v7).

Very nice!  I'm not used to programs working the first time I try them! 

I found that os8-cp had no trouble copying E8ALL.PA to my image.

I also did a quick read of the code.  Nice design. Nice structure. Nice style.

    bin/os8-cp -rk0s bin/v3d.rk05 -a ~/PDP-8/Bill_Silver_Emacs/e8v7/E8ALL.PA DSK:

Thanks for great software.

-Bill C.

Bill Silver

unread,
Apr 19, 2020, 4:45:22 PM4/19/20
to PiDP-8
The attached version 8 provides commands to scroll the screen one line up (^\) or down (ALT-\), keeping the cursor at the same screen position. Some background:

A few days ago Mike Katz and I had a discussion in this thread about one-line scrolling. We both agreed that this would be valuable, but I was concerned that as E8 is written, a one-line scroll would redraw the entire screen and might not be as responsive as one would like. Mike pointed out that VT-100 terminals or emulators have escape sequences to scroll the screen without a full redraw. I left the discussion at a "maybe".

Yesterday I implemented one-line scroll commands using full redraw. Doing that was much easier than I had imagined, less than 20 lines of code. It is really delightful to have, and blazing fast running on my Pi4 with WiFi comm speeds and a PC graphics engine.

Then I did the VT-100 scroll thing. I had to throttle down to 300K to see it make a speed difference, which it does. But there is enough delicacy in operating the terminal that it may not work right on all terminals, and it probably won't be needed in most setups. So I made it an assembly-time option, not used by default. The Manual has details.

e8v8.zip

David Richards

unread,
Apr 19, 2020, 4:55:55 PM4/19/20
to PiDP-8
Greetings Bill,
I have taken the opportunity to customize E8 to fit a real glass tube terminal, the terminal can show 24 lines of 80 characters.
If I set the width and height in e8defs to these values then the last two character positions of the line are blank.
If I set the width to 81 then I can display 78 characters and the cursor position at the end is blank.
If I set the width to 82 then I can display all 80 characters of text, the cursor can only go to the last (80th) character - this may be not be right.

My terminal does not fully support all the required escape sequences needed by E8, it does not have screen position addressing, but I dont think this is the complete cause of the problem I'm seeing. When I exit the editor the cursor is where I last had it in the editor.

I'm testing with a simple text file full of numbers like this:
012345678901234...
000000000001111...
as expected extra characters beyong the end of screen are hidden from view but remain in the file.
This is no serious problem for my but I thought I'd let you know.

n..b. Bill C mentions that he had no problem transfering e8all.pa using his os8-cp, I had no problem with that either, I assume the line wrap error in the source file is in the distributed zip archive, When you told me where the problem was I corrected it in Linux and then transfered it again. 


KInd regards, David.


On Saturday, 18 April 2020 01:22:56 UTC+1, Bill Silver wrote:
Comments on some previous posts:

Bill Silver

unread,
Apr 19, 2020, 5:40:55 PM4/19/20
to PiDP-8
What you should see with SCRWD=80 is the first 79 characters of a line, with the 80th column blank. If the insertion point is beyond the 79 visible characters, the cursor will be on that 80th blank column. But there is no way you'll get a correct display if your terminal doesn't implement the escape sequences in the Manual. You might get something usable if you don't have the clear screen command, but the other two are necessary. What kind of terminal is it? Does it have another escape sequence for addressing the cursor?

David Richards

unread,
Apr 19, 2020, 6:57:25 PM4/19/20
to PiDP-8
Hi Bill,
I appreciate thet my dodgy terminal will never be very good as it lacks some needed escape sequences.
luckily cursor movement and rubout are working properly and it is very useful nevertheless.

The main point I was making is that I think the screen size setting is off by one.
Even though you say it shows one less than the maximum.
If I set SCRWD to 80 then I can only display 78 characters.
I get this in terminal emulation and glass terminal.
I hope I'm not wasting your time and I havnt counted properly but it seems to be the case afik.

btw, my terminal is an Alcatel Prestel terminal operating in 80 colums Ansi mode at 4800 bps.
It is being fed from a usb to rs232 adapter connected to pidp8i.
SHown here with scrwd set to 82 allowing the full screen to be used.
(ignore the L A in top right they are in unusable status area of display)
Apart from its shortcomings I like the little monitor its scale is in keeping with the pidp8i
I have little documentation about the supported escape codes I dont think it has any more than what is in the manual.
It has a very limited keyboard but seems able to do most things in OS-8, I revert to putty/ssh when needed.
I have now given up trying to learn TECO in full screen mode, so thats all right then.
Kind regards, David.

IMG_20200419_234259a.png

Bill Silver

unread,
Apr 19, 2020, 8:40:26 PM4/19/20
to PiDP-8
You are quite correct, it's a bug. Introduced in version 7. Thanks for finding and reporting. Excellent attention to detail. I'll fix in next version.

Mike Katz

unread,
Apr 19, 2020, 11:18:27 PM4/19/20
to Bill Silver, PiDP-8
Bill

This is about version 7 not version 8

I found an interesting behavior.  If you type a line that is the maximum
width (in my case 78 characters) and place the cursor at then 79th
position with the end key, the cursor will not move from the end of the
with the left arrow.  The home key will take the cursor back to column 1
and the arrow keys will work.  I haven't looked at the code but it looks
like the end key isn't setting the cursor column correctly when it is at
the last position on the screen.  If you use the end key to go to a line
shorted than the screen width, there isn't a problem.

I did not try the control combination for left and right cursor.

If you right arrow to the end of the line, you can left arrow back.
However, if you right arrow to the end of the line and then cursor 5
more times, it will take you 6 left arrow key presses until the cursor
starts to move.  I think that E8 doesn't realize that it is at the end
of the line and keeps counting the cursor position even though it is at
the end of screen.

Thank you for taking my suggestion about the one line scrolling.

I have a suggestion for the future, when you feel like digging into
crazy complications of a text editor.

My suggestion would be for sideways scrolling, so that the length of a
line can be greater than the width of the screen.  This can cause some
crazy redraw issues so I will leave it for a day when you feel like
jumping into the snaked den.

One question I have, for storage, do you store each line as the width of
the screen (ie each line takes up one screen width bytes regardless of
whether there are 5 bytes or 80 bytes on the line).

If that is the way that you do it, I once wrote an editor that kept a
table in memory of the starting address and length of every line, this
allows for easy insertion and deletion of lines without having to large
memory copies.  If you are already doing this then just consider this
suggestion useless :)

One other suggestion, for the prompts (like the 'SAVE? (Y, N, ^G):'
prompt), would it be possible to take both upper and lower case for the
'Y' & 'N'?

Thank you again for this amazing program.

           Mike



Bill Silver

unread,
Apr 20, 2020, 5:49:07 AM4/20/20
to PiDP-8
Replies inline below

On Sunday, April 19, 2020 at 11:18:27 PM UTC-4, Mike Katz wrote:
Bill

This is about version 7 not version 8

I found an interesting behavior.  If you type a line that is the maximum
width (in my case 78 characters) and place the cursor at then 79th
position with the end key, the cursor will not move from the end of the
with the left arrow.  The home key will take the cursor back to column 1
and the arrow keys will work.  I haven't looked at the code but it looks
like the end key isn't setting the cursor column correctly when it is at
the last position on the screen.  If you use the end key to go to a line
shorted than the screen width, there isn't a problem.

I did not try the control combination for left and right cursor.

If you right arrow to the end of the line, you can left arrow back.
However, if you right arrow to the end of the line and then cursor 5
more times, it will take you 6 left arrow key presses until the cursor
starts to move.  I think that E8 doesn't realize that it is at the end
of the line and keeps counting the cursor position even though it is at
the end of screen.
 
Part of what you observe is a result of the one-off bug discussed in the posts just before yours (which I've fixed but not yet posted). But mostly this behavior is as expected but not clearly explained. Only the first SCRWD-1 characters of a line are displayed. But editing (insert, delete, cursor motion) is independent of display and can be beyond what you can see. If the true cursor position is beyond what's displayed, the screen cursor is placed in column SCRWD. If you move beyond what's displayed by any means, then left-moving commands will properly move the true cursor but not move the screen cursor until it reaches the displayed text. So it appears like nothing is happening. There are much better ways of handling long lines, but I've been constrained by what I could reasonably cram into a PDP-8 and went with something easy to code.

Thank you for taking my suggestion about the one line scrolling.

I have a suggestion for the future, when you feel like digging into
crazy complications of a text editor.

My suggestion would be for sideways scrolling, so that the length of a
line can be greater than the width of the screen.  This can cause some
crazy redraw issues so I will leave it for a day when you feel like
jumping into the snaked den.

One better way to handle long lines is to wrap them to the next screen line, with an indication in column SCRWD (e.g. !)  that the line has been wrapped. But this would significantly increase the complexity of the display system, and keep in mind just how little program memory I have to work with. I couldn't justify the complexity for the uncommon case of very long lines.

Sideways scrolling is an interesting suggestion because it might not add too much complexity (although I am very low on memory). But are long lines common enough to be worth the trouble?

If you have a long line you can always see it all by moving the cursor to column SCRWD-1 and hitting ENTER to break up the line. Then if you want you can delete the newline character to put the long line back to what it was.

One question I have, for storage, do you store each line as the width of
the screen (ie each line takes up one screen width bytes regardless of
whether there are 5 bytes or 80 bytes on the line).

The Theory of Operation in the manual tells exactly how text is stored. Short answer: the text buffer has no notion of lines, only characters. The newline character (CR) is just another character, like any other. 

If that is the way that you do it, I once wrote an editor that kept a
table in memory of the starting address and length of every line, this
allows for easy insertion and deletion of lines without having to large
memory copies.  If you are already doing this then just consider this
suggestion useless :)

There is no insertion/deletion of lines, only characters. Inserting and deleting requires no memory copies. Moving the cursor does, but rarely very much. The manual has details.

One other suggestion, for the prompts (like the 'SAVE? (Y, N, ^G):'
prompt), would it be possible to take both upper and lower case for the
'Y' & 'N'?

Possible yes. I figured that discarding changes should not be done casually, so requiring N seemed to make sense. 

William Cattey

unread,
Apr 20, 2020, 3:38:26 PM4/20/20
to PiDP-8
This message contains two topics:

1. An odd build behavior I just noticed.
2. A suggestion for improving the code style to eliminate Links, and thereby get back as much as a whole page of memory.

----

Odd build behavior:

When I was building an earlier version I got "ERRORS DETECTED: 0" and a bunch of Links generated.

It wasn't until I started working on a suggestion to reduce/eliminate links that I noticed the build of v7 gives an undefined symbol error:

.R PAL8

*E8<E8ALL/L

US  2400

ERRORS DETECTED: 1

LINKS GENERATED: 314


Is this because I'm not creating a E8DEFS.PA?  Normally, I'd expect a US error to have a symbol name beginning with an Alphabetic character. So I'm confused by the symbol name "2400".


Any guess what's going on here?  A search for "2400" in E8ALL.PA doesn't give anything obvious.


----


Style Suggestion:


There is a school of thought in PDP-8 programming that Links are a messy thing that should be avoided.

Indeed there's a way to avoid them through the use of the equals syntax to define page zero based subroutine calls.


Conceptually you define JMS I . <Destination> in page zero.  Here are context diffs against v7 EALL.PA that eliminate 3 links (a net savings of 1 word of memory) by defining page zero links to the two subroutines SCINIT and IOINIT:


wdc-home2:e8v7 wdc$ diff -c E8ALL.PA E8NALL.PA

*** E8ALL.PA    2020-04-16 17:27:44.000000000 -0400

--- E8NALL.PA        2020-04-20 12:44:18.000000000 -0400

***************

*** 80,92 ****

 LASTPT,       0; ENDFLD       / PREVIOUS POINT

 LASTGP,       0; BUFFLD       / PREVIOUS GAP

 

 / LARGE COMMON LITERAL TABLE HERE

 

 / TOP LEVEL

     *200    /------------

  TLS

!    JMS SCINIT

!     JMS IOINIT

     JMP 7600        / FILE SYS ERR, QUIT

 

 TOP,    TAD MLHOLD      / CLEAR MODE LINE TEXT UNLESS BEING HELD

--- 80,98 ----

 LASTPT, 0; ENDFLD       / PREVIOUS POINT

 LASTGP,       0; BUFFLD       / PREVIOUS GAP

 

+ / ELIMINATE LINKS BY CREATING PAGE 0 INSTRUCTIONS HERE

+ XSCINI=JMS I .

+       SCINIT

+ XIOINI=JMS I .

+         IOINIT

+

  / LARGE COMMON LITERAL TABLE HERE

 

 / TOP LEVEL

     *200    /------------

  TLS

!    XSCINI

!         XIOINI

         JMP 7600        / FILE SYS ERR, QUIT

 

 TOP,    TAD MLHOLD      / CLEAR MODE LINE TEXT UNLESS BEING HELD

***************

*** 1383,1389 ****

 

 / ERASE SCREEN, SET TOS SO THAT CURSOR IS IN MIDDLE OF SCREEN

 REDRAW,     0

!      JMS SCINIT              / ERASE

        ISZ REDRAW              / CAN'T FAIL

   TAD (-HALFHT            / COUNT LINES

  DCA REDRN

--- 1389,1395 ----

 

 / ERASE SCREEN, SET TOS SO THAT CURSOR IS IN MIDDLE OF SCREEN

 REDRAW,   0

!      XSCINI                  / ERASE

        ISZ REDRAW              / CAN'T FAIL

   TAD (-HALFHT            / COUNT LINES

  DCA REDRN




Instead of doing JMS SCINIT and JMS IOINIT you call XSCINI and XIOINI respectively.

This is a tradeoff of precious page zero space for space elsewhere in the program, but for frequently called routines it's worth the expense.

In my example, I did the opposite of the usual convention which would have been to rename SCINIT to XCINIT and name the new call SCINIT.

Is this style change something that appeals to you, Bill?

-Bill C.

Ian Schofield

unread,
Apr 20, 2020, 4:47:19 PM4/20/20
to PiDP-8

Dear Bill,

 Sorry to drop this one in. The assemble error in E8ALL.PA  is due to a wrapped line.
...
It is due to a wrapped comment line at line# 1193/4.
Fix this and it works absolutely fine..
...
Your point about page zero links is quite correct but, page zero is very valuable and this option should be used judiciously. Having loads of links generated by PAL8 is fine provided you leave enough space for them.
The trick here is to collect commonly used links/literals to page zero when you need to … ie you are short on space. If not, no problem. However, this is where PAL8 can fall down a bit in that you have to put
suitable PAGE pseudo ops in yourself in between subroutines/data that must stay inline etc etc.. This can waste quite a bit of space as well unless you are prepared to move the subs around to match available page space.
This is the attraction of SABR in that the code is similar but you do not need to worry about page layout, only overall size. SABR manages the per page literals/links and provides page fall though code for split subroutines.
But... as Bill Silver undoubtedly knows, there are other traps in store for the unwary using this assembler!!!!


Regards, Ian.

William Cattey

unread,
Apr 20, 2020, 7:03:45 PM4/20/20
to PiDP-8
Actually, a bit of grep'ing through the listing file, I have the following sorted list of links.  If the top ten were implemented as page zero defines, it would cut on the order of 140 links.  That's probably justified.

  20 SNE15;

 19 INC15

 17 WR6

 14 WRTTY

 13 SFWDPT

 13 GOFWD

 12 SUB15

 11 UPDATE

 11 RDTTY

 11 LD24

  8 SREVGP

  7 INSERT

  7 GOREV

  6 WRMLT

  6 SCHSTR

  6 GET15

  6 CLRMLT

  5 WRDEC

  5 SKIPAN

  5 PACK

  4 UPPER

  4 SREV

  4 SFWD

  4 INSFIL

  4 FILENM+3

  4 ADD15

  3 WRRND

  3 RNDINI

  3 LUFILE

  3 GOBEG

  3 GETFIL

  3 DEC15

  3 7600

  2 WRSTR

  2 WRITEF

  2 SETPM

  2 SETFN

  2 SCINIT

  2 RNDFIN

  2 PACKP

  2 OFFER

  2 GOEND

  2 GETSTR

  2 FIXMRK

  2 FIX24

  2 FILENM

  2 ERMLT

  2 DIVIDE

  2 DEVNUM

  2 CLSIZ

  2 CLRFN

  2 CLFILE

  1 WRREG

  1 WROCT

  1 WRFBLK

  1 SVFILE

  1 STRSIZ

  1 ST24

  1 SSTRNG

  1 SETTOS

  1 SETCUR

  1 RNDMLT

  1 RNDFLD

  1 RMODE

  1 RENDER

  1 RCZONE

  1 PUT15;

  1 PACKX

  1 PACKIO

  1 PACKBL

  1 NEWLN

  1 MOREOK

  1 IOINIT

  1 HAVEFN

  1 FILLOC

  1 FILBLK

  1 EXGPM

  1 ENSIZ

  1 ENFILE

  1 CLRBUF

  1 BUFSIZ

Bill Silver

unread,
Apr 20, 2020, 9:14:49 PM4/20/20
to PiDP-8
Ian, thanks for replying about the wrapped line issue that was discussed earlier in this topic. Bill, when Pal8 reports an undefined symbol it tells you the address of the line where the symbol appears, not the symbol itself.

I've tried to put all commonly used numeric literals on page 0 (using "[" instead of "("), although it's an imperfect process. However, I didn't think to do this with common links, and as your analysis shows it would be even more useful than common numeric literals. Another and cleaner way to do it would be, e.g.

XSCINI=JMS I [SCINIT

This is one simple, clear line that lets the assembler figure out where to put the links. I may move towards this style in future versions. Thanks for pointing it out.

I don't like using SABR. When I'm writing in assembly, I want full control of certain things, particularly anything that affects execution time, and for the 8 that includes page layout. I've got some tight loops that I want to be sure don't cross page boundaries, for example.

Vincent Slyngstad

unread,
Apr 20, 2020, 9:56:17 PM4/20/20
to PiDP-8
On Monday, April 20, 2020 at 6:14:49 PM UTC-7, Bill Silver wrote:
Ian, thanks for replying about the wrapped line issue that was discussed earlier in this topic. Bill, when Pal8 reports an undefined symbol it tells you the address of the line where the symbol appears, not the symbol itself.

I've tried to put all commonly used numeric literals on page 0 (using "[" instead of "("), although it's an imperfect process. However, I didn't think to do this with common links, and as your analysis shows it would be even more useful than common numeric literals. Another and cleaner way to do it would be, e.g.

XSCINI=JMS I [SCINIT

Alas, this doesn't work (at least for me with the assembler I am using).

There's a subtlety that the address of the literal is not known at the time the definition is made.  An actual
    JMS I [SCINT
would get fixed up in pass 2, but the "=" assignment won't.

    Vince

Steve Tockey

unread,
Apr 20, 2020, 10:14:44 PM4/20/20
to PiDP-8

The normal way of doing this is:

FUNCT=JMS I .
XFUNCT

Where XFUNCT is the entry point of the function to be called:

XFUNCT, 0
...
JMP I XFUNCT

Bill Silver

unread,
Apr 20, 2020, 10:22:26 PM4/20/20
to PiDP-8
Hmm, I found that the = form does work. I'm using Pal8-V10D that came with the OS/8 build on my PiDP8/I. But my DEC Pal8 documentation says it shouldn't. Maybe DEC made it work in late releases?

Neil Higgins

unread,
Apr 21, 2020, 5:03:41 AM4/21/20
to PiDP-8
My bit of totally unwelcome but seemingly unavoidable frivolity:

“Actually, a bit of grep'ing through the listing file, ...”

Since when was grep subject to the baker’s apostrophe? It suggests the grep is owned by an ing. I have seen grep but I don’t know what an ing is.

Too much wine ...

Ian Schofield

unread,
Apr 21, 2020, 6:24:34 AM4/21/20
to PiDP-8
G'day Neil !!!!!

 Now, I think I have misused an apostrophe as well.

Best of, Ian. 

Neil Higgins

unread,
Apr 21, 2020, 8:12:14 AM4/21/20
to PiDP-8
Well ... y’know ... It took 1500 years for Brits to create the language, but it only took us Aussies 200 years to perfect it.

Bill Silver

unread,
Apr 22, 2020, 2:54:06 PM4/22/20
to PiDP-8
The discussion about links and use of page 0 has inspired me to write a program to analyze the literal tables on every page, and across the entire program, both numerics and links. The analysis is attached. The grep that Bill did is informative but it overestimates the number of references, because there is only one link to a particular location on a given page no matter how many times it's referenced on that page. I'm going to use this analysis to improve my use of both kinds of literals and save some space.

I've got a few more things that I want to do after that. Then I think it might make sense to create a Git repository for the source, perhaps somewhere on GitHub where the PDP-8 community keeps such things. Then the folks who maintain and build the package that is distributed with the PiDP-8/I can decide whether to add E8 to the kit, and if so in what form.

I use Git professionally and well appreciate its value, but I have avoided learning any more about it than I have to to get my work done. What this means specifically is that I use the Git GUI, and if anything is complex enough to need the command line, or beyond what I want to know, I get help from others. So if people think we should go this way, I'd want to work with others to figure out what exactly to do. I'm generally not comfortable giving up any control of my source code, but I think some compromise on that score is in order.

literals.txt

Folke Will

unread,
Apr 23, 2020, 12:53:48 PM4/23/20
to PiDP-8
I've got a few more things that I want to do after that. Then I think it might make sense to create a Git repository for the source, perhaps somewhere on GitHub where the PDP-8 community keeps such things. Then the folks who maintain and build the package that is distributed with the PiDP-8/I can decide whether to add E8 to the kit, and if so in what form.

That's a good idea. 
 
I use Git professionally and well appreciate its value, but I have avoided learning any more about it than I have to to get my work done. What this means specifically is that I use the Git GUI, and if anything is complex enough to need the command line, or beyond what I want to know, I get help from others. So if people think we should go this way, I'd want to work with others to figure out what exactly to do. I'm generally not comfortable giving up any control of my source code, but I think some compromise on that score is in order.

I have a few projects on GitHub, some smaller ones and a medium size project. You can use the git GUI for GitHub as well if you want, there is no need to use the command line if you don't like it. It's even possible to do most things via their web interface.

If you need any help getting your project on GitHub, feel free to contact me. I would love to see E8 there. That way I could integrate it into my PDP-8 implementation as well.

Bill Silver

unread,
Apr 27, 2020, 1:23:03 PM4/27/20
to PiDP-8
With help and encouragement from Warren Young, E8 development will now take place in a Fossil repository on tangentsoft. The version 9 release is there, with code and manual updates. Here is the link: https://tangentsoft.com/e8. The v9 changes are:
  • Improved handling of lines that are too long for the screen width. E8 now marks lines that have invisible characters beyond the end, and shows when the edit cursor is at an invisible position. See the manual for more details. Also, the SCRWD off-by-one bug introduced in version 7 is fixed.
  • ^S added to incremental search to match Emacs, now that I know how to stop it from being intercepted. ^F still works.
  • Screen update is a little faster.
  • Complete reorganization of literals (numeric and links) to optimize use of page 0. The optimization was carried out automatically by a C# program, and saved a nice amount of core on almost all pages.

Bill Silver

unread,
May 7, 2020, 2:53:01 PM5/7/20
to PiDP-8
Pushed a new version to  https://tangentsoft.com/e8. Fixed a few minor, cosmetic bugs that don't affect the integrity of the text, and fixed a typo in the manual.

There were a couple of odd cases where the ">" at the end of a line was incorrectly displayed or not displayed. Now fixed.

The other problem was only discovered with a more accurate simulation of TTY timing. If a TSF is executed to test the state of the teleprinter flag, and it doesn't skip, there is no way to tell if TTY is busy printing and the flag will soon be set, or if TTY is idle after a reset and you'll wait forever for the flag to be set. The conventional way to deal with this is to print a null at the start of a program to set the flag, after which the non-skip condition is unambiguous. OS/8 has to do this when entered at its starting address (07600) because it doesn't know if it's being started after a reset. If a program exits to OS/8 while a character is being printed, OS/8 may stomp on that character, depending on the TTY printer speed and the CPU execution speed. It's a timing dependent race condition.

E8 does some printing on exit, which was always fine with our simulayed CPU and TTY interface. I've got a different simulator that can accurately simulate TTY timing at any baud rate. At 9600 baud OS/8 was stomping on the final character E8 was printing on exit, causing the screen to be left in an unattractive state; at 115200 baud it was not. Now E8 waits for the final character to be done before exiting to OS/8.

David Richards

unread,
May 8, 2020, 12:14:53 PM5/8/20
to PiDP-8
Thanks for the update Bill.

On another forum WIlliam Cattey suggested using os8-run to transfer files to os8-media. I have given it a go to put e8 onto an rk disk an pt tape.
The needed commands to transfer and build the image are here:
mount rk0 $media/os8/v3d.rk05 required
mount dt0 $media/os8/e8.tu56 new
boot rk0
os8 ZERO DTA0:

cpto $src/src/e8/e8defs.pa     RKA0:E8DEFS.PA
cpto $src/src/e8/e8ALL.pa      RKA0:E8ALL.PA
cpto $src/src/e8/e8base.pa     RKA0:E8BASE.PA
cpto $src/src/e8/e8file.pa     RKA0:E8FILE.PA
cpto $src/src/e8/e8srch.pa     RKA0:E8SRCH.PA

begin cdprog SYS:PAL8.SV
#E8<E8DEFS,E8BASE,E8FILE,E8RSCH/L
E8<E8DEFS,E8ALL/L
end cdprog SYS:PAL8.SV
os8 SAVE SYS E8;200=1000

begin cdprog RKA0:FOTP.SV
DTA0:<RKA0:E8DEFS.PA
DTA0:<RKA0:E8ALL.PA
DTA0:<RKA0:E8BASE.PA
DTA0:<RKA0:E8FILE.PA
DTA0:<RKA0:E8SRCH.PA
DTA0:<SYS:E8.SV
end cdprog RKA0:FOTP.SV

This script transfers the files onto the os8 disk, assembles and saves the binary.
Finally copying the files onto a paper tape image.
I can then import the tape image into another system.
Full explanation of the tools used are here: https://tangentsoft.com/e8/doc/trunk/doc/manual.md
I manually created an E8DEFS.PA file on the Raspi before starting, if you dont need then it may be ommited.
This is the first time ive tried using this tool so any feedback gratefully received.
I tried to compile the binary using the three seperate source files but something went wrong and the binary didnt run properly.
n.b. to get the e8all.pa make needs to be run in the source directory.
Kind regards, David.

William Cattey

unread,
Jun 15, 2020, 1:34:47 AM6/15/20
to PiDP-8
I just finished a draft integration of E8 into the tangentsoft.com pidp8i system.

I crafted a couple short reminder text files to help with remembering the key commands.

Now I see that ^N and ^P go to the beginning of the line when they go to next or previous.
Why is that? That's not what is done with all the Emacs-en I am familiar with.

Is it possible to make ^N and ^P go to the same index on the line as they go up and down?

-Bill C.
It is loading more messages.
0 new messages