• Please review our updated Terms and Rules here

Learning PDPs

Self-modifying code is unavoidable on certain architectures. For example, on the 8080 there are only the immediate I/O instructions (IN and OUT). Short of some sort of table-driven approach, the only way to use a variable I/O port address is to plug an IN our OUT instruction. Similarly, without patching addresses, it's not possible to write location-independent code on the 8080--conditional jumps and calls reference absolute addresses only. Self-modifying code wasn't viewed as a bad thing, back in the day.
 
Somewhere I still have a softcover book I bought back in the days when an 8080 was the trick setup. it was a commented disassembly of (I think) the version of Microsoft Basic that came with the TRS80 Mod I. The integer subtraction routine changed a single instruction in the Addition routine, changing an ADD to a SUB and then jumped to the Addition routine's start point. Voila, one routine plus a little extra code instead of two separate routines. And thats how it was done until multiuser multitasking reentrant systems became the way to go.
 
Somewhere I still have a softcover book I bought back in the days when an 8080 was the trick setup. it was a commented disassembly of (I think) the version of Microsoft Basic that came with the TRS80 Mod I. The integer subtraction routine changed a single instruction in the Addition routine, changing an ADD to a SUB and then jumped to the Addition routine's start point. Voila, one routine plus a little extra code instead of two separate routines. And thats how it was done until multiuser multitasking reentrant systems became the way to go.
This is the book.

 
That's a great book! I borrowed it from a schoolfriend and typed in the 12K of machine code (as hex) from it into my Applied Technology S-100 system and it only required some very minimal patching to the screen location and keyboard fetch routine to get it to run. I used my own machine's cassette save/load monitor routines.

I've found Simh to be great for experimenting with PDP-11 o/s, although I have only used it in 11/20, 11/03 and 11/05 CPU mode.
 
What roadmap would you lay out for someone new to PDP computers .. who only had background with PCs, Macs, and servers from the '80s and newer?
If you're interested in the details of the early PDP-11 processors, you could check out the training material that new DEC field service techs were expected to sit through (and pass the quizzes) before being allowed to visit customer sites.

see: Introduction to the PDP-11 Student Workbook

Does anyone know if the original audio/video content (on cartridges) was copied to a newer format or exists online anywhere?
 
Thanks, that sure does look like it. Nice to see that content made the transition from tape cartridge to streaming Internet media.
 
@ foothillGeek As mentioned both books to read, I've done also and do the examples.
The "PDP8 Introduction to programming" Paperback book f.i. I have decades (30+) before I actualy did own a PDP8.

These old machines it is nice to know also the basic architect structure of CPU's them selves.
What is a register, Address, Accumulator etc. So How a CPU does its job.
It does not matter if you read 6800,68000, intell 8086,8088, ZX80 etc the principles are all the same.
I learned back in the 1980'-90 , ZX81(Basic),6800(Machine code) 8086,Basic,pascal,c++, a bit, at some basic levels.
To day lots of old CPU architecture books are on line to find.

You really have to know the basics of what a cpu does to understand what these old machines need to get going.

In basic these machines are the same as the 2021 builds, only they made it easy to preload the majority to get it all going.
At PDP 1970's you have to do it all your self at first.
At start up those machines know little.
So first Load a little program that tells the machine what to do. f.i. read a Program from paper tape from a serial device that listen at a device address 03 and read that into memory. With that program cpu can read a 2nd type program you f.i. tell the cpu to load a program from an other device. F.i. a floppy disk. At that FFD there is your Operating Boot software that pre loads software to load all kinds of little software to get it all going.

At those new build 2021 systems these start ups you probably know, Its in BIOS memory and on hard drive.
In those new build 2021 PCs or Tablets Or Phones those all also need to know what to load, what devices you have, what drivers its need to load to get some devices get to work. That software is that intelligent to look up its hardware and find on hard disk or online the drivers.

Just think with these old machines you have to pre load first to get it even going.
The How To's is read a lot and know basics of computing how a cpu know's what to do in sequence.
At start with these machines you just have to know, the machines at startup are empty, you have to do the work.

To know what hardware is and how it can be connected to a system.
So read about f.i. a floppy drive how it connects to a system and what it needs to get going.

In principle Toggle switches and a program on paper are the same as a papertape, Floppydisk, hard disk, USB stick etc.

If you want to write a letter on paper you have also learn making some steps first.
Look for a pencil, done?
Look for a paper, done?
Take pencil in hand.
Start at top left, is line empty, if not go to next line, else start writing.
Look in memory first character to write.
If first character is 'a' send program write a to hand. etc.

Beware "Look for a Pencil" is also a little program as well as Look for a paper.
So both use the same program "Look For" with an argument.
Write is also a program to operate your hand. To operate hand it needs muscles, to operate muscles it needs etc.

Then if you forget to pre load the program "Look For" the machine does not understand the line in the main program
"Look for a pencil" .

Same with addresses of device cards. If your cards is set at an address 12, so its reading constant the databus for that
code 12. If it "hears"its own number it starts to listen for arguments what to do.
But if your program code is defined address 15 the arguments never reach that card.
Same with sending a letter to a friend, if City, postal code and street name is right but home number is different,
your letter is not reaching your friend. As you waiting for an answer back you can wait indefinitely.
You have call your friend did you get my letter, friend look at postalbox, nob its empty.
You have to figure out what went wrong.
Same with device cards, you have to read program docs what settings it has and check card if it has the same.

If you have a machine with toggle switches and lights . you are the handler.
You have "software" to know how to use your eyes, hands, read from paper or screen and can translate that to
a handling to toggle a row of switches, than read back the lights and compare toggle input to the output.
If its the same go to next. Els jump 1 line back repeat input. etc.

Next step in line is to put a card in the machine that hold that first input boot program, instead of you toggle that.
And with a switch you tell cpu to read that card and put that program into memory.
That switch is hardware preprogramed and cpu knows what to do read card X.
There for next level machines did not have those toggle switches.
Then next level machines have cards replaced by logic ICs that are pre programmed cq autostart at power up.

That program f.i. is a read paper tape (string tape with a program). You have to look for a program tape in a storage case,
take that one out, put in the machine, start the machine, take out the tape, back in storage case.

Next in line is a floppy disk.
Now you have to load a program first that knows how to read from a floppy drive.

Then Terminals, basic a very dumb pc. From a serial line of bits it can translate to screen characters and can
send back characters with a keyboard. So withhold logic to read key switches and translate that to a stream of bits.
Machine have to learn were and how to send and read its data to and from.
To send and read you have to set both cpu card and Terminal at same Bit rate and data stream parameters,

I think these kind of principles you have to know to easy understand how to use those really old machines.
 
Back
Top