On Friday, October 9th, 2026 at 19:59, [email protected] 
<[email protected]> wrote:

> I used to own a VT-125, this had an internal card 

> cage with an LSI-11 computer board. I can't remember
> what I did with it.


I had one of those on my desk for a couple of weeks. I 

think it ran CPM.

I was working for an engineering company at the time. 

We had a big contract in the Middle East that required 

us to put a computer in our local construction office 

in that country, but had nothing about what it had to 

be used for.

So we sent it over there.

The one thing that we set it up to do was to be able 

to dial into our PDP 11/70 at the engineering company 

to transfer reports back and forth.  That turned out 

to be useless because, as near as we could tell, that 

country would drop the connection as soon as they 

realized it wasn't a voice call.  They must have been 

listening to everything that was said on their telephone 

system.

The first time we tried it in the morning, it would 

stay connected for a minute or two before going down.  

From then one, every time we tried it that day, it would 

drop in seconds.

By the way, we may have had the fastest PDP 11/70 

around running the RSTS/E operating system.  One year, 

(1982, I think) we did an expensive upgrade -- $15,000
for one megabyte of memory, $15,000 each for two RM05 

disk drives, and $15,000 for a disk controller. The 

problem is that the operating system could only use 

something like 530,000 bytes directly.  So we set it 

to use the rest of the megabyte for disk caching. To 

do so, you normally had to specify precisely which 

files would be cached. The funny thing is that the 

disk caching really didn't do much to improve 

performance.

It turned out that when it cached a disk block, it
remained cached for a minimum of 30 seconds. Think 

about how often you need to work with the same block 

of data from the disk for 30 seconds. You could also 

set it to cache all disk blocks, but they were still 

cached for 30 seconds.  If you needed another disk 

block from the same file less than 30 seconds later, 

it just did disk I/O for those.

It always appeared to me that if there was already a
block cached for that file, it would not cache any more
blocks from that file until the 30 seconds had elapsed
and the block was removed from memory. I didn't
understand the idea on that.

I patched the operating system to reduce the cache 

time to something like two or three seconds and 

enabled caching for all files.

Before that, the computer ran at about 25% to 35% of 

capacity all day long -- most of the time, the CPU was 

idle.  After making those changes, the CPU time pretty 

much ran at 100% of capacity all day long.  The 

resulting increase in capacity was clearly noticeable 

to everyone.

It didn't cross my mind at the time, but the CPU
probably ran hotter since it was running at 100% of
capacity.

Also, one year in the mid 1980s, I went to a DECUS 

(DEC User Society) convention in New Orleans.  One of 

the DEC employees showed me something on one their 

older PDP 11's that they had at the convention. That 

PDP 11 had real core memory.  He started the computer, 

found a large directory, and did a directory listing. 

Back then, the listing went slow enough that you could 

sit there and read every file name with no problems at 

all.

While it was listing the directory, he reached over 

and turned the machine off. So on the monitor, it 

showed how far the computer had reached.  After about 

thirty seconds or so, he turned it back on.  Since it 

was core memory, it continued on from where it was 

without having to reboot.  In the directory listing, it 

only lost the one character it had been processing when 

he turned the computer off. So that particular file 

name was just missing one character of the name.

They also had a thing in RSTS/E called I and D space.  

I for Instruction space and D for data space.  If you 

used I and D space, any reference to memory for data 

was in D space.  Any reference for execution was in 

I space.  So the same numerical memory address pointed 

to different places in real memory depending on whether 

you were trying to execute it or to use it as data.

In other words, with the limited address space available,
you could potentially double the amount of space a
program could have. The address location 04000 (octal)
might be the location of a subroutine in I space and
the location of a string in D space.

This did mess up the MARK N instruction which was an 

instruction placed into the stack in a subroutine call.  

The purpose of the MARK N instruction was to simplify 

cleaning up the stack at the end of a subroutine. The N 

referred to the number of words used in the stack for 

the subroutine call. Instead of restoring the stack and 

executing a return instruction, you would execute the 

MARK N instruction which was stored on the stack.  


As near as I could tell, hardly anyone used the MARK N 

instruction.  If not for the processor manual, I might 

never have figured out exactly how to use it.

At that DECUS, there was a birds of a feather discussion 

about assembly language.  Somebody asked the moderator 

about the MARK N instruction and the moderator asked the 

150 to 200 people in the room how many had ever used it.  

I was apparently the only one there to raise my hand. I 

don't know if I was the only one who used it or the 

only one who would admit that I used it.

Here is an example of the MARK N instruction from a
terminal emulator I wrote in the mid 1980s so
that I could dial into other computers (aren't
backups great?):

.MACRO  EXEC    SUBNAM,ARGLST
        MOV     R5,-(SP)       ; MOVE R5 TO STACK
C=0
.IRP    PARAM,<ARGLST>
        MOV     PARAM,-(SP)    ; MOVE ARGUMENT ONTO STACK
C=C+1
.ENDM
C=C+6400
        MOV     #C,-(SP)       ; INSERT ARGUMENT COUNT
        MOV     SP,R5          ; MOVE STACK POINTER TO R5
        JSR     PC,SUBNAM      ; GO TO ROUTINE
.ENDM

In this example, the C=C+6400 created a MARK N instruction
where N was the number of arguments in ARGLST.  It was
placed on the stack and then the stack pointer went
into register 5. At the end of the subroutine, an "RTS R5"
would would clean up the stack and return.

I liked those old PDP 11's even more than the VAX computers!

VAX VMS had one thing that I would love to see available
in OpenBSD -- the use of versioning. When you edited a file,
it would create a new version of the file while leaving
the previous one in place. If I remember correctly, the
file name would include a ';' and a version number.  For
example, "FOOBAR;76".  When you edit FOOBAR, it would 

find the latest version to edit to create the next 

version, for example "FOOBAR;77". There was a purge 

command to purge all but the latest N versions of the file.

Eric

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to