@@Andy-fd5fg "Adverts"? Are you serious right now? Why aren't you using proper adblockers, like Ublock Origin and RUclips ReVanced? Why would anybody willingly put up with ads on the internet, especially when they're so easy to block?
Ah, memories... I still am at it at 64 years old. Bank switching was fun. My first personal computer was an Apple II (Integer). Did a lot of work with a Sperry Univac. The replacement of the PDP 11, a full VAX actually was an awesome machine. First time I could step backwards in a debugger. Love your videos. I saw the IBM PC in your garage. I put together hundreds of those when I was working through school at Mississippi State. Have a great day. Great memories.
Fond memories feeding punch cards to our university's Sperry as data for solving math problems. Liked computers more than maths, ceased trying astrophysics, and became a software engineer...
Dave, these are ABSOLUTELY retro computing GOLD! Your work here is building a priceless archive of our computing history. Thank you so much for your ongoing work!
Fun fact: The entire CompuServe network was a couple thousand PDP-11 nodes with DEC-10 hosts running the applications. All the network code was written in assembler and the applications were mostly written in BLISS. The PDP-11's were slowly phased out beginning in 1988 when we began deploying 386-based nodes.
There was a bit of real-time history at the Cosci Museum in Columbus, Ohio. They had working PDP-11 based ConpuServe node in a glass enclosed room on the museum floor when I visited there back in the 1980s.
I met the founder of CompuServ. He claimed to have salvaged the initial PDP-11 from the flooded basement of a building on the Ohio State University campus. His house had a shamrock-shaped swimming pool, and the first salvaged PDP-11 had a place of honor in the house. He had sold time-share time to commercial organizations during the day, and thought it would be fun to sell time to hobbyists and amateurs in the evening. He quickly discovered how much pent-up need there was, and switched the focus of his business to create what we recall today. I did my Master's at Ohio State, on a PDP-11/45. The boot code had been toggled into core memory, and as long as we didn't screw it up (which we did, on occasion), we could just toggle in the start address and kick it off. The RK05 platters would start winding up, and a few moments later, we'd be in business. When we screwed up the boot code, there was a fairly short (maybe 128 words) of code we'd have to toggle in that comprised the cold boot. I can't remember it now, but I did for quite some time. I'm glad you discussed the beauty of the PDP-11 instruction set. I've always appreciated it; truly orthogonal, symmetric instructions. One of my favorite projects (when I wasn't frantically wiring up A-to-D and D-to-A converter modules and their control logic) was to wire up a General Instruments top octave generator, a half-dozen selectors and a half-dozen programmable dividers, to create a six-voice music synthesizer. While Wendy Carlos was producing "Switched On Bach" our lab had Ravel and Debussy playing on a PDP-11. The A-to-D and D-to-A assembly? It ran Robert Murphy's hexapod robot. In 1979.
I became a CompuServe subscriber in 1990as a way to stay in touch with my company's HQ in the UK as I traveled around the world on their behalf. Those international POPs (Points Of Presence) were a real lifeline for me! I had that subscription for about ten years until the WWW became a thing and I moved to Earthlink as my ISP as I was now based, full time, in the US. 🤓
Little know fact: Microsoft heard about people building virtual hardware (CPUs, even PCs) in Minecraft blocks. So a VP at Microsoft lobbied to purchase Minecraft for several billion dollars with the goal of moving all hardware into the virtual Minecraft ecosystem. The stated goal was to implement this recursively, and eliminate all hardware all the way down. Microsoft envisioned a hardware-free implementation of personal computing. Everything would be virtualized all the way down, zero hardware anywhere. This may sound silly, but how else do you explain the purchase of Minecraft by Microsoft ? 🙂 !!
@@nezbrun872 Nah, that's a choice by the manufacturer. No shot that they'd spend the money and time for engineers to optimize all that boot/initialization code. They could if they wanted to and if there was demand for it, we'd have that talent trained up to do so.
We despair at the small business where I consult for bare metal programmers. Best one we got so far is a lady in her 50s who I intro to bare metal on new MCUs. It is indeed a long time since I saw and worked with PDP-11. My wife, who loved puppy dogs, cooking, swimming, knitting and guitar, surprised me one time by asking, "what do you do at work?" When I told her, she said, "Can I try some of that?" Knowing better than to try instructing her myself, we went to the community college which had a course programming on a PDP-11. I chuckled...BUT she passed flying colors! She tried math...disaster. Music...flying colors. More computer languages...flying colors. I have never figured it out (and now she is passed away) and never found another like her nor a machine like the PDP-11.
Im sorry to hear your wife passed and relatively young it feels. She sounds like marvelous person. Cherish her memories i learned when my little brother died. Those memories of the good times are my most priced possessions and nobody can take those from me. And I’m sure that’s the same for you, hearing you speak about her like this - so loving and endearing.
@@jgharston yeah I was wondering that too. Here in the Netherlands there’s no demand. The lowest you can get (and that’s getting harder and harder) is C++
"Four linear feet" of RSX-11M docs: that says less about RSX than it does about documentation practices. They believed in giving you *full* documentation back then. Plus, it was all hard copy -- no electronic versions. To be perceived as an expert, you didn't need to know all the things -- but only where in the manual set to find them. Other examples: - The original IBM PC (1981) included a source listing of the BIOS - The Seagate ST-506 hard drive (1980): its manual included schematics for the logic boards. That proved invaluable a few years ago, when we needed to hack an ST-506 to get the data off it - If you open up consumer electronics of the day (radios, TV sets and whatnot), you'll often find a schematic inside the case. Right to repair went without saying...
Most Un*x programs from "back then" come with quite extensive documentation. GNU also adds info. Emacs and friends are self-documenting. People who release even simple programs have a great example before their eyes and try to follow. But in the Windows world it's a plague. I partly blame MS for that: how long did it take for the CHM format to appear, only to be declared obsolete in Vista? (You had to tweak the registry to enable rendering them; I do not know how much of a security hole they are, but that was the reason.) They work OOB in Windows 8 (?) and later, tho. But they drag the IE rendering engine behind them into the second quarter of this century...
Exactly, and that information can be of immense value. The original NEC APC included a full source listing of the BIOS, plus a diagram showing all the logical connection of the parts. That was awesome, since the native OS, CPM/86 was horrid. Having all that info allowed me to enhance the OS significantly with an interrupt driven printer driver (much faster, plus you could multi-task) and a memory resident interrupt controller/menu system, allowing direct chaining from one program to another. (The native way in CPM/86 to get from one program to another was to write a batch file to the disk calling the next program, then terminate and chain to the batch file.)
My first exposure to computers was as a high school sophomore in 1980 where we had to do a 3 week class. Following that class I spent all my free time in the school computer lab. When I entered college, I got to take an assembly language class in the spring of '83 on a PDP-11 (I think it was a 44 that had added parts to make it behave like a 70). From the moment I learned about addressing modes and the crazy control you have, I was hooked. I was one of the weirdos that bought the PDP-11 architecture handbook from the school bookstore and read it cover-to-cover like a novel. Honestly, most of that video felt like I was watching you read my mind. I desperately wanted a 68000 based machine that I could play with at the assembly level. Thanks for really stoking up those old memories!
A lot of people here say they learned to program in the 1970s, but I am learning to program now and these videos are very insightful for seeing how computers evolved. thanks
The best one yet, this puts a huge smile on my face. I worked at DEC in the Galway plant in Ireland building PDP 8’s and then PDP 11’s. Lots of assembly in diagnostics, and we had to start using binary (012737…) entered through the front console before the machine could do anything. Yes, the switches and the lights! We would create short loops to exercise a fault area, like a stuck bit, so that we could stick a scope on a clock/enable signal and see what was going on. Those were happy days. Thank you for this piece of nostalgia, it’s been 40 years. Subscribed.
I worked at the Augusta, Maine plant as a tech where we made various comm devices, including the early generations of Ethernet interfaces for PDP-11s and VAX Systems. First class I took on being hired was PDP-11 machine language.
I remember writing PDP11 asm in college in the late 70s, and then soon on a Zilog chip - it took a while to get used to the DST, SRC sequencing on the Zilog/Intel chips, but it sure helped that MOV became LD. I have very fond memories of writing large projects in assembler, including debuggers, disassemblers, and assemblers. Can still remember the Z80 machine language bytes for a lot of the opcodes. I recall decoding what the CPU was executing by watching what bytes were being fetched on the logic analyzer. Converting hex to ASCII in my head. That was a grand time. Later, much work on 80x86/87, 68k and a whole lot of fun on the 56k DSP. The Moto chips brought back memories of PDP11 architecture. Loved this video. Got a little misty-eyed. Thank you for this, Dave. Just realized I was not subscribed! Fixed that.
Zilog and Dec have the syntax the correct way around. Move *from* source *to* dest; load dest *with* source. As with Dav, I can't get my head around Intex syntax and it still hurts having to think about it when I'm reading code.
@@jgharston'move' should move the data from the left operand to the right operand and 'load' from the right operand to the left one, I think. Btw. the assembler can easily reverse this from language to actual operation. And what should 'store' do? I think it should also move the data to the right operand.
I have been really enjoying watching your videos on the PDP 11. I am a genuine grey beard. I became an OEM dealer for DEC's business computer division way back in 1975. I was actually president of the DECUS business user special interest group from 1977 to 1981. This is all fascinating to me that you are resurrecting it. I have to wonder if you know what you have. A DEC Data system was actually packaged as a business system. What you probably have is a Dec DataSystem 350 series, probably a 354. It probably shipped with the DEC operating system based on RT-11 with a multi-user operating system layered above. The normal programming language was DIBOL. You could typically run a maximum of three terminals (although 2 was optimal) with the RT-11 based system. You could also run the 500 based operating system based on RSTS-E with some business extensions. The underlying machines were identical to DEC's standard machines. They ran RT-11, RSX-11 and Linux just fine. It is forgotten though, that before the IBM PC came out, DEC was heavily involved in business computers for the industry. So whether you realize it or not, not only do you have a PDP 11/34 you have one that is even more rare because it is a DataSystem. Treasure it, it is something very special. I have so many memories of those days.
You might not believe me, but in 1978, my university had a PDP 11/34, and as a student I had some machine time available. I programmed in Fortran 77, mostly, but I remember I also ventured into assembly, after the professor had explained the register set and part of the instruction set. I still clearly remember the peculiar fact that R6 and R7 had that special meaning. Combined with indirect addressing, and autoincrement, this allowed some very nice tricks. It really was a wonderful architecture! Thank you so much for sending me back in time to those enthusiastic days!
I developed a term insurance/ mutual fund application (competing with full life) in 1977 on my Processor Tech Sol...that cost me $5,000. The company wanted to go nationwide so I bought a PDP 11/23 for about $35,000. The program was written in PT Basic. When I converted it to run on the PDP 11/23 it wouldn't fit. And I only had 4K bytes of static ram on the Sol. I had more memory on the PDP but the RSX-11 used it all up. I really took a bath on that deal. Even after I got it working and on-line, the company that needed it stiffed me. Live and learn.
Wow, you got a story to tell out of that deal. What did you end up doing with the PDP 11/23? Did you at least get some enjoyment out of owning it, or other projects? 35K is more money than our family home cost in the 70's.
I hung around a computer store and they were developing an Amniocentesis analysis program on a Sol-20. They decided it was better to give me a job testing the app at minimum wage then letting me sit around and play on their computers. They gave me test script to run and check expected results and to note deviations from the expected results. Not a bad job for a 12 y/o. I worked for three months for an hour a day after school. I always had to disappear if the client was on site.
We had a PDP 11/44 to write an operating system on for computer science in college. Then they moved on to an IBM AT. The first program on the IBM was write a keyboard handler. That claimed most people in the class.
much the same with me, I started wit logic circuits on my electronics kits as a kid, then used slide rules and calculators until I forst used a trs-80 II to control an experiment at a technical college in 77-78. Then used PDP11-10 mark-sense card reader at uni, explains my tenuous and highly bemused grasp of reality to this day :) Then my own trs-80 after working all summer in a steel mill to pay for it. I still have it, but sadly may have to let it go soon. Then onto another PDP running RSTS, then a VAX at Uni. Then 6502 SBC's in assembler, and onto the first PC's. Been a fun trip, kinda.
My first computer was a “Video Genie” which was a TRS80 II clone. It also had a tape drive. Then we upgraded it to the Stringy Floppy which was a credit card sized cassette with an endless loop tape. Worked really well until the tape unraveled, which happened often !!
Love it! I used to teach PDP 11/34 (and others) field engineers for DEC. Brings back a lot of fine memories. A good friend was the last RT11 engineer. We lived in Maynard, MA
Well that does bring back memories! Learned how to program both in MACRO11 and FORTRAN IV on a PDP11/40 running RSX11M and have run my own PDP11/23+ and a PDT for many years. Thank you!
This brought back a bunch of fond memories, Dave. The first minicomputer I worked on was from Data General and was delivered without an operating system back in the early 70s. Assembly language was our only option. In the 80s, I did a lot of direct hardware interaction using assembly language on embedded systems using 80x86 processors. It took a lot longer to develop programs than using high level languages, but we knew exactly what was going on in the hardware. Since our focus was on authenticating the system's operation, that was important. Some of that code I developed is still in use 40 years after I wrote it.
Thanks, these are great memories. We used the Xerox Sigma 9 (don't remember the model though) and my code of choice was METASYM (Meta-Symbol) the standard for Sigma 9. We wrote compilers using METASYM. What else was funny, the assembler I wrote was in Fortran 4 with University of Waterloo WATFOR and WATFIV. This was back in the early '70's. Magnificent memories. Thanks so much for sharing.
Ex VAX and Novell Netware guy here. We wrote a Bindery syncing tool for our Netware system, ran on a VAX, to sync the user-accounts and passwords between domains. We would create accounts only in VMS, but inject the users credentials into each Novell Bindery every 10 minutes. The code was only 50-60 lines long and was blisteringly fast. Added more comprehensive error checking a little later on, but basically we had a 4000-user network running on 50 Netware servers, with unified accounts at all sites, with the integration making everything so nice. Windows NT Advanced Server and SQL changed all of that in 1995.. All went away...
Great stuff, Dave! Really triggered my recollections from the seventies using PDP 11 equipment. I got my first taste of programming in college back in '76 on the RSTS 11 system on our school's PDP 11/40. My roommate got me started learning BASIC. Not long after, as a BSEE student, I got access to the the EE department's computer lab (not much more than a closet, but it had a rack mounted PDP 11/10) where I fumbled my way through the documentation for booting the 11/10. I wasn't taking any CS classes and had to figure things out alone. I toggled in my first machine code program using the switches on the front panel. That program sent a single character to the hardware register for the system console terminal, an old ASR 33 teletype. When it sprang to life and printed "A" I got excited. I needed to make a loop to print more characters. I got stuck trying to figure out how to branch backward and searched the manuals for a clue. That's how I learned about two's complement arithmetic and got my conditional branch to loop back. I tried sending more characters to the ASR 33. It didn't work reliably because I was overrunning the printer's ability to keep up. I figured out that I needed a delay and made one that worked, but was uncomfortable that it wouldn't be reliable and that I needed some kind of of feedback from the hardware. Along about this time, I started wondering why there wasn't an easier way to have the computer do this calculation for me (didn't know about assemblers but saw intriguing references to the mnemonics and labels in the manual). More digging and I discovered that there was an assembler available in the rack of paper tapes in the lab. I had to toggle in the insctructions for the boot loader, which in turn allowed the Absolute Loader to be read in from paper tape, destroying the boot loader in the process. Finally, I got the macro assembler loaded and was able to experiment with assembly language. I spent many hours reading everything I could find and experimenting. This gave me a firm underpinning for understanding computers and laid the groundwork for my entire career as a BSEE specializing in digital electronics and microcomputing.
Great stuff, in the 80's I was an assembly programmer writing games released under Ocean, US Gold and AMSoft for 8 the bit micro computer market and as the 6502 & Z80 processors ran so slowly, it was vital to optimise the code to run as fast as possible... for example on the Z80, the SP took fewer clock cycles to PUSH data to memory than a LOAD to (HL) so the SP was hi-jacked to point to screen memory and graphics were "pushed" in reverse to the screen mem. Tying in with that exam question, as the SP had been appropriated, many subroutines were coded such that instead of RETuring to the calling code a return flag was loaded with an identifier and conditional jumps were used to load the PC to the specific next address of the calling PC location, denoted by the identifier (the next address after the "call" being labled for the compiler). Thus subroutines with no RET lol... Of course, with this approach careful attention was given to any possible recursion but Speed was of the essence!!! cheers🍻
Niche? I spent two years doing exactly this on a PDP-11 - and getting paid for it. The PDP-11 was a dream to program and its instruction set was easy to learn and really well designed. Driving devices was easy if you could use polling (as in your example), but it was a lot more fun using interrupts. And once again the PDP-11 blew all its contemporaries out of the water, with a dedicated interrupt vector for each device type, and a multi-level interrupt priority scheme. A couple of years later, I had to do it all again with the Texas 9900 microprocessor, whose instruction set was clearly influenced by the PDP-11. That was also great fun. It is truly amazing just what you can do with just 8K of RAM and no operating system.
Thank you Dave as this reminds me of the first 15 years of my work after finishing the university. We did logging and automating industrial plants, mainly in electric power generation and distribution. In 1975 we made the first high-voltage switchyard automation running on a pdp-11/10. I was the first and only European user of Dave Cutler's RSX-11A kernel. Later, it was migrated to RSX-11M/S and implemented in over 50 substations. The last one was replaced in 1999 because people feared the millennium bug. The switching control program became quite long, with about 2k words of assembly code. For pure binary decisions assembly coding was much more proper than higher languages (we used FORTRAN at this time). We said one can write pdp-11 assembler code even while traveling with a train or streetcar.
During my Royal Air Force trade training as an air defence radar technician in 1984 my course was the first in my trade to do the "Digital" course as part of initial trade training. It was something like six weeks in the summer of 1984. As part of that course we had to do an introduction to programming using assembler on a PDP11/??. We also had to cover programming on a 6502 with just a hex key pad and a bunch of seven segment LEDs. This was on a board called an EMMA, which allowed you to add boards to do stuff like program a set of traffic lights. Never went near a computer again during my nine years in the RAF. Spent lots of time in a world where we mixed analogue and digital hardware techniques while processing the returned signals for the radar. Given of course that were were using a "pulse" radar.
Most programmer today often do not know that C was influenced by the PDP-11 assembler and its various ways to address memory. In C it was called 'pointers'. So if someone knew PDP-11 assembler, learning C was just straight forward. Direct addresses, indirect addresses (aka pointers in C), post-increment, pre-decrement etc
A mate of mine always used to say how sad it is that the basics and the beginning is forgotten. Now people can use the things they got, but what if all that fails, the old things are lost. I think he had a good thought here and that is why I enjoy videos like these even not understanding everything. WiseG you did have a good thought there.
Loving this series of videos. Back in the day, you would see the words “Maynard, Massachusetts” on the vast majority of PDP front panels. Very occasionally, you’d see “Galway, Ireland”. As a native of Galway, I have always had a fondness for DEC and their wonderful hardware and OSes, particularly VMS and the glorious VAX.
@petergibson2318 in 1983 or '84 they connected all the secondary schools in the city to a VAX 11/780. Donated a bunch of VT100s and venerable VT52s and some miltiplexors to each school. It gave us kids a taste of 'real computers' when everyone else was playing with Spectrums and VIC20s. Fond memories. @@petergibson2318
Ohh man. I'm an ECE and I love working as close to the silicon as I can. Seeing stuff like this makes me wish I was born in the 60s but it also gives me a real appreciation for all the abstract goodies we have today. Really hoping my son takes an interest in computation and electronics, I would love to be a dad that shares his knowledge with the patience and passion that you have. Ur freaking cool Dave.
I worked on later models of the PDP-11, the LSI-11/23 with RT-11, and later the MicroPDP-11/73, using RSX-11M+. The operating systems were very well organized and the processors were designed for good software. One of the interesting things is that the interrupt process was significantly slower than polled hardware. So when doing data acquisition, I elected to poll the hardware instead attempting to process interrupts. This made foreground/background processing in RT-11 work very well for me. So those of you who are wondering why Dave didn't use interrupts for I/O there was a good reason: Not only was it simpler, it was FASTER.
In my first job out of college, I worked with several PDP-11s, including the earliest model (eventually called the 11/20, but this machine had no model designation on the front panel). It was equipped with a (removable) disk drive but booting required hand-loading the boot loaded into memory via the binary switched on the console (about 20-30 instructions, IIRC). Talk about bare metal... I also loved the instruction set. It was so rational, most of my co-workers and I could manually disassemble an octal dump of code. My company also performed some magic leveraging the PDP-11's Unibus architecture, which was also exciting to work with. I later moved on to the Motorola 68000, which had a similarly "orthogonal" instruction set and some advantages (more and larger registers), but was not as simple and pure as the PDP-11. Thanks for the memories!
This brings back great memories from the Digital (Equipment) days. My first personal computer was a PDP-8/e in 1972. We had one in our basement and wrote programs for stock brokers in BASIC. I also built a hardware interface to an external tape drive for it. Much simpler than your PDP-11/34, I know, but definitely bare metal. Thanks for keeping this legacy alive and running.
Programming bare metal since late 80's with 8086 and 8051, I suddenly feel I need the PDP. The assembly is so similar, and I can live with mov from,to syntax. Thank you for this video.
I can't express how much I enjoy your videos. I know quite a bit about computers and computing, but not as deep as I'd like. I know enough to understand 95% of what you talk about, and the other 5% I can figure out from the context. But yeah, I'm a geek, and I love hearing your stories and explanations, and learning or refreshing my memory with it all. Thanks, Dave!
I agree with the great video and great memories. The PDP-11 and RSX were a great pair. I implemented many industrial process control systems in either Macro or Fortran , using memory mapping over the I/O page and then inputting / outputting directly to the device registers. I also love the comments section of the macro programs. I did 10's if not 1000's of "sysgens" that configured the operating system for the machine I was using. We had the whole source code of RSX on the disk. Things like looking at the module of RSX where it tried to dig it's way out of a stack issue, if it failed it went to address "Crash", where there was a HALT instruction, with the comment "Die Horribly" .
Thank you Dave, for sharing your knowledge! I'm too young to have had the privilege to work on machines like these yet I'm deeply intrigued by coding & computing with much of the abstractions torn away. Practical examples shown in such a simple manner are extremely helpful.
It's just crazy to think how far we have come with the colorful and type ahead predictions of Visual Studio. Thank you for this awesome look back in time.
Great memories! Back in the early 80s, I attended a DEC PDP-11 assembler programming course that had us writing machine code before we could use the assembler. I still have the workbooks 😀 Fun times.
For those of us lesser mortals who don't have a physical PDP, there is simh (simh.trailing-edge) and the software kits for RSTS/E and RT11. These provide a simulation of physical computers. There are also ones for PDP-10 (Tops 10/20), HP (TSB) etc. PDP-11 assembler was the first assembler I used. I thought it was great. I did a lot of PDP-11 assembler programming in the 1970's and 1980's. I also used the 68000/68020 which were fine. Then I came to the 8086/80286/80386 et al. Oh dear. What's with ptr, offset and operands from right to left?? Can names be named for who came up with notation for MASM? Great videos. Keep up the good work!
That was great Dave,, thanks! I learned assembly on a pdp-8 and did a little pdp-11 assembly. I was a professional ibm 360 programmer for many years. In a lot of ways assembly is like an exact science.
Now we're talking! Yes, more of this please, Dave. Appreciated the preamble (including the dudes using a PDP to cross-assemble to a C64, rofl) before you broke out the "big pants" and dived into the assembly coding. 👍
Dave, you're really bringing back memories. Though most of the rail control system code we ran on our PDP was in FORTRAN, we did use assembler for important operations like resource locking between tasks, time-critical I/O, and code that needed to be re-entrant. That was circa 1990-1994, about 30 years ago. Thanks for the memories.
Wow, I was working at DEC back in 1979 as circuit pack repair technician for the RL01/2 disk drive while I was in college. I had to be able to control the drive at the register level and hand wrote many PDP11 assembly language routines to be able to control the hardware at the bit level. This past year I was going through old papers and came across my DEC PDP11 programmers reference pocket guide. Programing at the assembly level was a lot of fun and, back in those days, it opened a world of imagination of what was to come. Thanks for the memories, and keep them coming!
At my former university in Brazil we still do our computer architecture courses based on a series of increasingly complex architectures created by one of our professors, but based on simplified versions of historical architectures; one of them is "Cesar" which is inspired by the PDP-11, including its assembly language One of our assignments actually involved using timer interrupts or something like that to read input from the keyboard and write bytes directly into addresses mapped to a simulated LCD screen So seeing PDP-11 code actually brings me back, despite never having seen one in my life and not being old enough to be around during the heyday of these computers
For your next video, I recommend getting even closer to the metal: machine language. The PDP-11 instruction set is quite elegant, particularly when you use octal. For example, 011507 is MOV (R5), R7 with 01 specifying the MOV instruction, 15 specifying deferred addressing for register 5, and 07 specifying direct addressing for register 7. I was pleasantly surprised when I found out that one of my courses in the late 80's was taught on a PDP-11. I enjoyed it a lot. I remember going back to the building where it was taught a year or two later, only to discover that the PDP-11 had been moved to the stairwell and now had a placard describing it as the museum piece it was! An elegant computer for a more civilized age.
Thanks Dave, this is very nice to see. It reminds me of my early years in programming in the 70ties. I started with Z80 assembly language on a Sinclair ZX80 with 1 Kb of RAM.
Ah! The good ole days! I started work in 1966 for NCR as a field technician. Got trained on their 315 system. We were expected to write our own diagnostic code for the specific problem we were having. It was a hoot! My first PC was an Apple II integer, but I soon sold it to a highschool kid and upgraded to a //e. Had and built many PCs over the years, trying to keep skills relevant. I always enjoy your posts.
I'm 20 year old game developer, I mostly write C++ and C# code, so this kind of thing fascinates me. I love your videos, thanks for teaching us so much!
Brings back memories of 37 years ago. Writing custom boot code for process control system loading. Very satisfying loading memory management and not mapping the code out. Daunting at first a completely bare machine,band then only your code running.
Your PDP 11 story across multiple videos is like a trip down memory lane. I still remember being exchange student at University of Kansas, Lawrence, Kansas back in 1982-83. The time when my uni days really were like National Lampoon's Animal House. Anyways, one of my classes was assembly programming for the PDP11. I love your channel, keep it coming! BTW: In my residence hall we had one terminal with acoustic modem connection to university's main-frame computer. Speed 1200/75 baud which roughly becomes 8 chars/sec keyboard typing and 100-125 chars/sec display on terminal. World was different back then.
I call that JSR RTS question a "trick" question. Just because multiple JSR instructions may use the same RTS instruction DOESN'T mean that each JSR instruction doesn't require a RTS, they just don't each need Their OWN RTS instruction.
RTS is not required if JSR is not intended to ever return, eg infinite loop or intentional HALT. That might leave something on the stack but in those circumstances it doesn't matter.
There are cases where, for example, JSR is used to call an error handler, where JSR is used to automatically push the program counter to the stack, and where the error handler never returns to the program. (the error handler pops the address from the stack without RTS)
@@a4d9that was one of my first thoughts too. And rop chains are rts without jsr. And you can put stack into rom and just use push/jsr to change the stack pointer, pop/rts will grab values from rom. I suspect that most teachers wouldn't comprehend these methods, but they would have taught students better what was going on in the CPU
Lots of memories there. I started UofR in 1979. Used a dec pdp 11, to write my first code. The machine was actually in the computer lab with us, but we had only a teletype writer to code on. Never forget when I got something to run rather than spitting out error messages on rims of 36 inch folding printer paper. At least it was better than the punch cards for the IBM assembly language I would write a year later. We have come a long way.
Fabulous. I used to keep my PDP-11 pocket coding quick reference card with me at all times. I'm sure that I still have it somewhere. The instruction set was elegant and logical.
I'm in agreement about the beauty both the PDP-11 instruction set and the 68xxx instruction set. Very clean, very easy to use. No real surprises when coding at that level.
+1. The first two instruction sets I learned were for the IBM 360 and the PDP-11 (writing an emulator for the latter in the former for a course). A little later I learned the 68000 ISP which was an easy follow on to those. Eventually I encountered the x86 architecture and I’m like what? Address calculation isis done how? Fortunately I rarely had to dive down to that level when programming for x86 boxes.
@@NathanielMishkin Interesting. The 360 instruction set with it's (I think) segmented architecture has made me think that it was an inspiration for the x86 architecture. I had to learn a superset of the 360 instruction set for an avionics processor called an AP-101C, which is like what flew originally in the shuttle, and is like the 360 instruction set, but has specific instructions for doing trig operations.
Ah, no on your inspiration point (at least not for ground-based 360 CPUs :-). No segmentation. If anything it was the 68000 instruction set that was inspired by the 360.
The mini that the college was running on when I got my computer degree was the PDP-11/70 (released in 1975. 1 years before the 11/34). I learned a whole raft of languages on that computer, including assembly. You are bringing lots of memories back to me.
Dave, love your channel and subjects, I started out in the 70's on an IBM 1130, a PDP 11/40 and then on to the Intel 8008 and 8080. Keep up the great work!
My first job after graduation involved programming in Fortran on a PDP11/34. Removable storage at the time consisted of 14" diameter 1Mb disks. I shared this computer with two other software engineers. Every so often I had to run a large simulation. Had to arrange with the other two engineers to tie up the PDP11/34 for an entire week!
I actually shouted it before the flash showed. I did a lot of MACRO11 and whilst I haven't used it for a very long time, I suspect I might remember quite a lot about it.
Reminds me of the 1401! My first computer job was programming and operating a computer that was only one year younger than I was. Autocoder also used the more rational from/to method to move data. Every assembler I've coded in since uses to/from and I've never really understood why. When my company finally switched to an HP/3000, I salvaged some things: A core storage unit from a 1403 line printer, some random 1401 blade cards and manuals for both the 1401 system and Autocoder language. Life was so much simpler then. with no operating system, punched cards, and a physical Bit-Bucket I had to dump at the end of my shift. Remember Coding Sheets -- and the maxim, "Real programmers code in INK"?
I still jave my COBOL and ASSEMBLER coding sheets. I began on 407 accounting machine doing plugboard wiring then a 1401, onto 360/30, 370/138, 4300 series [4331, 4341, 4361, 4381] Then to 3090, Amdahl 5880 and s/390. I was a systems programmer on all those machines, wrote millions of line of assembly code. I get a kick out of people calling ANY PDP computer "big iron"' I am well versed in 13 languages, but my fav is assembly on REAL big iron where there is no silly stack pointer and other silly things
So much fun! I wrote PDP-8 and PDP-11 code in college and Data General NOVA assembler in early jobs. Then on to VAX/VMS writing special purpose drivers for material handling systems. Proprietary protocols for distributed controllers. No email in those days!
WOW, that sure brought back memories. Tens of thousands of lines of assembly code written for direct hardware control on multiple platforms, includind PDP 11 and PDP 10. Thanks for sharing.
This video brings back fond memories, thank you. I graduated with a BSCS from the University of Utah in 1974. I learned to program on a mainframe, the Univac 1108. At the time of graduation I was working at Sperry Univac as an electronics technician in R&D. With degree in hand I was promoted to programmer and began coding for mini computers. (Unfortunately, I did not get any DEC experience back in the day. I do have PiDP-8 and PiDP-11 to play with now though.) I spent 20 years with Univac->Unisys where I mostly coded in assembly language for 8080, Z80, 8048, 6800, and my favorite, the 68000 series. Mostly using home grown OSes. In the late 90s I worked at Novell on their core OS which is where I got most of my x86 experience. The last 10+ years of my career were spent with C++, and although I was more productive in C++, it was no where near as enjoyable of a job as was writing assemble language in the 70s and 80s for the mini and micro computers.
I started my IT career on an IBM 360/20 card system using Assembly Language. As my time on Mainframes grew I got into COBOL and PL1. Later on I had a PDP 11/70 in my office when we were porting to some new software. As time went on we grew into an IBM 370/195 and its follow on systems. My path led to systems like Cray, Burroughs, Univac, Unisys, and several IBM Midrange Computers from IBM 32 to 38’s and AS400’s. My last 25 years were mainly spent on very large Linux Systems with Terabytes of memory and Petabytes of SSD, running Oracle Databases and E-Business Suite. But up to my retirement day I was still using Assembly Language to interface a multitude of varying hardware back to Oracle! Even though we used a lot of C and other languages, I always had Assembly to fall back on. Keep up the good work Dave!
I'm used to "big iron" referring to mainframe computers. A venerable minicomputer like this might have been referred to as "medium iron." I started programming in Assembler using punch cards on an IBM 370 clone by Burroughs in 1980. In '81 I decided I needed to learn BASIC so I took a class to learn Microsoft BASIC on an Ohio Scientific minicomputer. Considering that, contrary to my Assembler professor's opinion, microcomputers were becoming a "thing," those all ran some version of BASIC. But I understood that Assembly Language was really where it was at.
I know that the pdp exist but there goes the end of my knowledge, but these two episodes is the most interesting you have done lately, keep them coming:)
1975 was my first year PDP11 coding on DOS11 and then RT11. (I still have my DECtape from that year). I continued coding in MACRO11 for many many years. Thanks for bring back the memories!
My first machine was a PDP-11/20. Many decades and hundreds of thousands of lines later I still write code for that elegant instruction set. And RT-11 I rewrote a few times as well, for different environments. I'm just finishing moving XXDP, the PDP-11 diagnostic operating system, to run in an RT-11 environment. Because the PDP-11 is such a delight.
We are of the same age (vintage?) and my assembly language journey was 6502. At the height of my powers in high school/college, I could do most 6502 assembly programming without having to review back to the manual for my Apple ][. I did have access to a PDP 11/40 in high school that lived at a local college across the street where I could load BASIC programs on the RSTS/E system, but this machine was so above my perceived skills, I didn't even consider doing assembly on it. In reality, I really should have since it would have probably been a lot of fun and useful for my programming skills. Considering that in college I had direct access to DEC-20 and VAX systems, I'm kinda kicking myself for not taking the opportunity to get a little more bare metal experience with these systems. Thanks for your video to demystify all this.
I am glad you are doing this series. The PDP-11 was a fun machine. Though, I only ever had the emulator that ran in a PC on an FAA certified flight simulator. By the time I got there the hardware had been replaced. I do have some real old hardware experience though. I am not much older than you but I started at a small flight simulator training company in 1986 and had a simulator that had see a DDP-124 for the host and a Varian 620/L for the visual. Both used paper tape and I assure you, pranks were pulled with the bits that were punched out. I rather miss programming in Assembly or just punching in a quick program for diagnostics using the data and register switches on the front panel.
Nice episode that brings back memories. Remember my early days at Fairchild and their attempt on doing the 9440 Microflame in 1977. A copy of the DG Nova computer with some added extra microcode. Thanks for your efforts playing successfully with the old time bare metal. 😀☀️☀️ Lots of fun watching and following along.
I have always loved coding in assembly because I had total control over the CPU in those days. I cut my teeth on it as a kid with various MCU's - 6800, 8085, Z80... My formative commercial years were on bare metal and very constrained single processor embedded microcontroller systems before the PIC's and similar arrived . I spent YEARS developing code for a Hitachi H400 4-bit microcontroller on a 4.77MHz PC development system using using Word Perfect as an editor (RIP Bruce Bastian) native Hitachi tools, programming to a UV reprogrammable part with broken legs (they were expensive) and crash and burn, bringing out test pins to unused I/O as traps. Code ran into hundreds of pages and I came up with my own bottom-up coding methodology that worked at the time and at the higher level of the programme the systems became almost high level configurable although with some faff. Happy days.
Seeing that shelf of orange binders brings back memories. I recall getting sets of errata manual pages with the new version of the OS. Starting with the first binder, replace pages 7,8 with pages 7a, 8a, 8b. Sometimes just a page or two per chapter. Sometimes whole chapters were dropped and replaced with a new chapter. Keep repeating until all the relevant pages were replaced. And we actually referred to the manuals often and needed them kept up-to-date.
This brought back memories of the last time I wrote machine code, Z80 on our school System 80s (antipodean version of TRS-80) in the mid 1980s. When I first realised what was possible, I got a book from the library on Z80, and was reading it balanced on the handlebars of my bike while riding home from school.... then crashed my bike into the back of a parked car. That was the first of many adventures in Z80, the rest of which included hand-dissassembling the BASIC interpreter, working out how to transparently recover from the non maskable interrupt, making a full graphic screendump onto the dot matrix printer, and all sorts of associated hackery. The rest of the class were learning FOR loops in BASIC. Happy days.
As an old FORTH developer (Max-FORTH, embedded in the Motorola 68F11 was my project), playing games with the stack and return addresses was just another day at the office. So, let's see, you could JSR, pop the return address and store it someplace, and if you decided you really wanted to return from whence you came you could jump indirect. That would be a JSR without an RTS. I remember writing some subroutines that had to run twice on two different halves of a value. The subroutines did some setup and then did a JSR to the immediately following location in memory. An RTS returned to the location following the JSR. The second time the RTS got executed it returned to the real caller. It's assembly. It's the wild west. Everything is possible, including unholy ideas no one in his right head would consider. Cool stuff, in other words. Enjoyable video. Took me back!
I absolutely love your channel, dude.. It's one of my favorites. NOt even just because of the content, but your personality makes the channel worth watching. Thanks dude..
I wrote 6800 and 6809 assembly language professionally for 10 years. We wrote everything from the real-time-multi-tasking-interrupt driven operating system. From reset vector to the power-down non-maskable interrupt driver. This was before windows and the internet. Talk about a sound foundation. 40 years in the business
Thanks Dave. Love your work. My "bare metal" in 1966 was an IBM 1620 M1 with an 80 col card reader. Great to learn on as it operated in decimal, and no bootsrap as it had a "Load" button (read card image into pos 0 and branched there). It had no registers, just storage to storage commands (well one for a sub call to store return address). Then we got a 360 so I had to learn hex and operating systems.
Thank you for NOT having a 5-minute-lasting "Let's get right into it!" intro!
and for not repeating what you just said before the adverts.
Microsoft stocks make that unnecessary :)
I don't think he could imagine doing that.
@@Andy-fd5fg "Adverts"? Are you serious right now? Why aren't you using proper adblockers, like Ublock Origin and RUclips ReVanced? Why would anybody willingly put up with ads on the internet, especially when they're so easy to block?
Is that a dig against Adrian?
Ah, memories... I still am at it at 64 years old. Bank switching was fun. My first personal computer was an Apple II (Integer). Did a lot of work with a Sperry Univac. The replacement of the PDP 11, a full VAX actually was an awesome machine. First time I could step backwards in a debugger. Love your videos. I saw the IBM PC in your garage. I put together hundreds of those when I was working through school at Mississippi State. Have a great day. Great memories.
Same here ... this also reminded me on a time many decades ago, when I was programming a VAX11/780 in assembler.
Fond memories feeding punch cards to our university's Sperry as data for solving math problems. Liked computers more than maths, ceased trying astrophysics, and became a software engineer...
Holy S... I can barely do fundamental Matlab and some labview ... this is way beyond my comprehension of what a comouter is ...
I'm curious, what was it like writing bank switching code back then? I've never written anything like that, only observed it in old Nintendo games.
Dave, these are ABSOLUTELY retro computing GOLD! Your work here is building a priceless archive of our computing history. Thank you so much for your ongoing work!
Fun fact: The entire CompuServe network was a couple thousand PDP-11 nodes with DEC-10 hosts running the applications. All the network code was written in assembler and the applications were mostly written in BLISS. The PDP-11's were slowly phased out beginning in 1988 when we began deploying 386-based nodes.
I knew a guy who claimed his friend took the code from CompuServe. I have no idea how, doubt through a 1200 bps modem, but maybe.
That's impressive. That makes me feel a little proud to have had them as my first ISP.
There was a bit of real-time history at the Cosci Museum in Columbus, Ohio. They had working PDP-11 based ConpuServe node in a glass enclosed room on the museum floor when I visited there back in the 1980s.
I met the founder of CompuServ. He claimed to have salvaged the initial PDP-11 from the flooded basement of a building on the Ohio State University campus. His house had a shamrock-shaped swimming pool, and the first salvaged PDP-11 had a place of honor in the house. He had sold time-share time to commercial organizations during the day, and thought it would be fun to sell time to hobbyists and amateurs in the evening. He quickly discovered how much pent-up need there was, and switched the focus of his business to create what we recall today.
I did my Master's at Ohio State, on a PDP-11/45. The boot code had been toggled into core memory, and as long as we didn't screw it up (which we did, on occasion), we could just toggle in the start address and kick it off. The RK05 platters would start winding up, and a few moments later, we'd be in business. When we screwed up the boot code, there was a fairly short (maybe 128 words) of code we'd have to toggle in that comprised the cold boot. I can't remember it now, but I did for quite some time.
I'm glad you discussed the beauty of the PDP-11 instruction set. I've always appreciated it; truly orthogonal, symmetric instructions.
One of my favorite projects (when I wasn't frantically wiring up A-to-D and D-to-A converter modules and their control logic) was to wire up a General Instruments top octave generator, a half-dozen selectors and a half-dozen programmable dividers, to create a six-voice music synthesizer. While Wendy Carlos was producing "Switched On Bach" our lab had Ravel and Debussy playing on a PDP-11. The A-to-D and D-to-A assembly? It ran Robert Murphy's hexapod robot. In 1979.
I became a CompuServe subscriber in 1990as a way to stay in touch with my company's HQ in the UK as I traveled around the world on their behalf. Those international POPs (Points Of Presence) were a real lifeline for me! I had that subscription for about ten years until the WWW became a thing and I moved to Earthlink as my ISP as I was now based, full time, in the US. 🤓
Too many coders today are so disconnected from the proper hardware. More like this is just fantastic.
There's nothing wrong with that
Little know fact: Microsoft heard about people building virtual hardware (CPUs, even PCs) in Minecraft blocks. So a VP at Microsoft lobbied to purchase Minecraft for several billion dollars with the goal of moving all hardware into the virtual Minecraft ecosystem. The stated goal was to implement this recursively, and eliminate all hardware all the way down. Microsoft envisioned a hardware-free implementation of personal computing. Everything would be virtualized all the way down, zero hardware anywhere.
This may sound silly, but how else do you explain the purchase of Minecraft by Microsoft ?
🙂 !!
@@MathewPanicker1010 "There's nothing wrong with that" is why your new TV takes longer to boot today than an old tube set from the 50s did to warm up.
@@nezbrun872 Nah, that's a choice by the manufacturer. No shot that they'd spend the money and time for engineers to optimize all that boot/initialization code. They could if they wanted to and if there was demand for it, we'd have that talent trained up to do so.
@@JxH this makes 0 sense.
We despair at the small business where I consult for bare metal programmers. Best one we got so far is a lady in her 50s who I intro to bare metal on new MCUs.
It is indeed a long time since I saw and worked with PDP-11. My wife, who loved puppy dogs, cooking, swimming, knitting and guitar, surprised me one time by asking, "what do you do at work?" When I told her, she said, "Can I try some of that?" Knowing better than to try instructing her myself, we went to the community college which had a course programming on a PDP-11. I chuckled...BUT she passed flying colors! She tried math...disaster. Music...flying colors. More computer languages...flying colors. I have never figured it out (and now she is passed away) and never found another like her nor a machine like the PDP-11.
Im sorry to hear your wife passed and relatively young it feels. She sounds like marvelous person. Cherish her memories i learned when my little brother died. Those memories of the good times are my most priced possessions and nobody can take those from me. And I’m sure that’s the same for you, hearing you speak about her like this - so loving and endearing.
@@CallousCoder Thank you - Terry
You mean there is actually a market for bare metal programmers? Where are the adverts?
I'm sorry to hear of your loss.... I would be devastated if my wife passed before me..
@@jgharston yeah I was wondering that too. Here in the Netherlands there’s no demand. The lowest you can get (and that’s getting harder and harder) is C++
"Four linear feet" of RSX-11M docs: that says less about RSX than it does about documentation practices. They believed in giving you *full* documentation back then. Plus, it was all hard copy -- no electronic versions.
To be perceived as an expert, you didn't need to know all the things -- but only where in the manual set to find them.
Other examples:
- The original IBM PC (1981) included a source listing of the BIOS
- The Seagate ST-506 hard drive (1980): its manual included schematics for the logic boards. That proved invaluable a few years ago, when we needed to hack an ST-506 to get the data off it
- If you open up consumer electronics of the day (radios, TV sets and whatnot), you'll often find a schematic inside the case. Right to repair went without saying...
Most Un*x programs from "back then" come with quite extensive documentation. GNU also adds info. Emacs and friends are self-documenting. People who release even simple programs have a great example before their eyes and try to follow. But in the Windows world it's a plague. I partly blame MS for that: how long did it take for the CHM format to appear, only to be declared obsolete in Vista? (You had to tweak the registry to enable rendering them; I do not know how much of a security hole they are, but that was the reason.) They work OOB in Windows 8 (?) and later, tho. But they drag the IE rendering engine behind them into the second quarter of this century...
Exactly, and that information can be of immense value. The original NEC APC included a full source listing of the BIOS, plus a diagram showing all the logical connection of the parts. That was awesome, since the native OS, CPM/86 was horrid. Having all that info allowed me to enhance the OS significantly with an interrupt driven printer driver (much faster, plus you could multi-task) and a memory resident interrupt controller/menu system, allowing direct chaining from one program to another. (The native way in CPM/86 to get from one program to another was to write a batch file to the disk calling the next program, then terminate and chain to the batch file.)
I’m 67 and my first assembly programming was on a PDP8. Love the channel.
I'm 69, and I first programmed a PDP8e.
My first exposure to computers was as a high school sophomore in 1980 where we had to do a 3 week class. Following that class I spent all my free time in the school computer lab. When I entered college, I got to take an assembly language class in the spring of '83 on a PDP-11 (I think it was a 44 that had added parts to make it behave like a 70). From the moment I learned about addressing modes and the crazy control you have, I was hooked. I was one of the weirdos that bought the PDP-11 architecture handbook from the school bookstore and read it cover-to-cover like a novel. Honestly, most of that video felt like I was watching you read my mind. I desperately wanted a 68000 based machine that I could play with at the assembly level. Thanks for really stoking up those old memories!
A lot of people here say they learned to program in the 1970s, but I am learning to program now and these videos are very insightful for seeing how computers evolved. thanks
Thank you so much for bringing back some great memories and help sharing this knowledge out to the next generations!
The best one yet, this puts a huge smile on my face. I worked at DEC in the Galway plant in Ireland building PDP 8’s and then PDP 11’s. Lots of assembly in diagnostics, and we had to start using binary (012737…) entered through the front console before the machine could do anything. Yes, the switches and the lights! We would create short loops to exercise a fault area, like a stuck bit, so that we could stick a scope on a clock/enable signal and see what was going on. Those were happy days. Thank you for this piece of nostalgia, it’s been 40 years. Subscribed.
I worked at the Augusta, Maine plant as a tech where we made various comm devices, including the early generations of Ethernet interfaces for PDP-11s and VAX Systems. First class I took on being hired was PDP-11 machine language.
I remember writing PDP11 asm in college in the late 70s, and then soon on a Zilog chip - it took a while to get used to the DST, SRC sequencing on the Zilog/Intel chips, but it sure helped that MOV became LD.
I have very fond memories of writing large projects in assembler, including debuggers, disassemblers, and assemblers. Can still remember the Z80 machine language bytes for a lot of the opcodes. I recall decoding what the CPU was executing by watching what bytes were being fetched on the logic analyzer. Converting hex to ASCII in my head. That was a grand time. Later, much work on 80x86/87, 68k and a whole lot of fun on the 56k DSP. The Moto chips brought back memories of PDP11 architecture.
Loved this video. Got a little misty-eyed. Thank you for this, Dave. Just realized I was not subscribed! Fixed that.
Zilog and Dec have the syntax the correct way around. Move *from* source *to* dest; load dest *with* source. As with Dav, I can't get my head around Intex syntax and it still hurts having to think about it when I'm reading code.
@@jgharston'move' should move the data from the left operand to the right operand and 'load' from the right operand to the left one, I think. Btw. the assembler can easily reverse this from language to actual operation. And what should 'store' do? I think it should also move the data to the right operand.
I have been really enjoying watching your videos on the PDP 11. I am a genuine grey beard. I became an OEM dealer for DEC's business computer division way back in 1975. I was actually president of the DECUS business user special interest group from 1977 to 1981. This is all fascinating to me that you are resurrecting it.
I have to wonder if you know what you have. A DEC Data system was actually packaged as a business system. What you probably have is a Dec DataSystem 350 series, probably a 354. It probably shipped with the DEC operating system based on RT-11 with a multi-user operating system layered above. The normal programming language was DIBOL. You could typically run a maximum of three terminals (although 2 was optimal) with the RT-11 based system. You could also run the 500 based operating system based on RSTS-E with some business extensions.
The underlying machines were identical to DEC's standard machines. They ran RT-11, RSX-11 and Linux just fine.
It is forgotten though, that before the IBM PC came out, DEC was heavily involved in business computers for the industry.
So whether you realize it or not, not only do you have a PDP 11/34 you have one that is even more rare because it is a DataSystem.
Treasure it, it is something very special. I have so many memories of those days.
You might not believe me, but in 1978, my university had a PDP 11/34, and as a student I had some machine time available. I programmed in Fortran 77, mostly, but I remember I also ventured into assembly, after the professor had explained the register set and part of the instruction set. I still clearly remember the peculiar fact that R6 and R7 had that special meaning. Combined with indirect addressing, and autoincrement, this allowed some very nice tricks. It really was a wonderful architecture! Thank you so much for sending me back in time to those enthusiastic days!
I developed a term insurance/ mutual fund application (competing with full life) in 1977 on my Processor Tech Sol...that cost me $5,000. The company wanted to go nationwide so I bought a PDP 11/23 for about $35,000. The program was written in PT Basic. When I converted it to run on the PDP 11/23 it wouldn't fit. And I only had 4K bytes of static ram on the Sol. I had more memory on the PDP but the RSX-11 used it all up. I really took a bath on that deal. Even after I got it working and on-line, the company that needed it stiffed me. Live and learn.
Wow, you got a story to tell out of that deal. What did you end up doing with the PDP 11/23? Did you at least get some enjoyment out of owning it, or other projects? 35K is more money than our family home cost in the 70's.
I loved my Sol, too. Especially the first original PTDOS that limited Random Access files to 16k in length. .
I hung around a computer store and they were developing an Amniocentesis analysis program on a Sol-20. They decided it was better to give me a job testing the app at minimum wage then letting me sit around and play on their computers. They gave me test script to run and check expected results and to note deviations from the expected results. Not a bad job for a 12 y/o. I worked for three months for an hour a day after school. I always had to disappear if the client was on site.
We used a PDP-11 in my CS classes in the mid-80’s. I started programming on a TRS-80 model 1 with tape recorder storage. Wow! A blast from the past.
We had a PDP 11/44 to write an operating system on for computer science in college.
Then they moved on to an IBM AT. The first program on the IBM was write a keyboard handler. That claimed most people in the class.
much the same with me, I started wit logic circuits on my electronics kits as a kid, then used slide rules and calculators until I forst used a trs-80 II to control an experiment at a technical college in 77-78. Then used PDP11-10 mark-sense card reader at uni, explains my tenuous and highly bemused grasp of reality to this day :) Then my own trs-80 after working all summer in a steel mill to pay for it. I still have it, but sadly may have to let it go soon. Then onto another PDP running RSTS, then a VAX at Uni. Then 6502 SBC's in assembler, and onto the first PC's. Been a fun trip, kinda.
My first computer was a “Video Genie” which was a TRS80 II clone. It also had a tape drive. Then we upgraded it to the Stringy Floppy which was a credit card sized cassette with an endless loop tape. Worked really well until the tape unraveled, which happened often !!
Love it! I used to teach PDP 11/34 (and others) field engineers for DEC. Brings back a lot of fine memories. A good friend was the last RT11 engineer. We lived in Maynard, MA
Well that does bring back memories! Learned how to program both in MACRO11 and FORTRAN IV on a PDP11/40 running RSX11M and have run my own PDP11/23+ and a PDT for many years. Thank you!
I still have a copy of the LSI11 PDP11/03 handbook on my bookshelf, a souvenir from an assembly language programming class in college.
This brought back a bunch of fond memories, Dave. The first minicomputer I worked on was from Data General and was delivered without an operating system back in the early 70s. Assembly language was our only option. In the 80s, I did a lot of direct hardware interaction using assembly language on embedded systems using 80x86 processors. It took a lot longer to develop programs than using high level languages, but we knew exactly what was going on in the hardware. Since our focus was on authenticating the system's operation, that was important. Some of that code I developed is still in use 40 years after I wrote it.
Thanks, these are great memories. We used the Xerox Sigma 9 (don't remember the model though) and my code of choice was METASYM (Meta-Symbol) the standard for Sigma 9. We wrote compilers using METASYM. What else was funny, the assembler I wrote was in Fortran 4 with University of Waterloo WATFOR and WATFIV. This was back in the early '70's. Magnificent memories. Thanks so much for sharing.
Ex VAX and Novell Netware guy here. We wrote a Bindery syncing tool for our Netware system, ran on a VAX, to sync the user-accounts and passwords between domains. We would create accounts only in VMS, but inject the users credentials into each Novell Bindery every 10 minutes. The code was only 50-60 lines long and was blisteringly fast. Added more comprehensive error checking a little later on, but basically we had a 4000-user network running on 50 Netware servers, with unified accounts at all sites, with the integration making everything so nice.
Windows NT Advanced Server and SQL changed all of that in 1995.. All went away...
Great stuff, Dave! Really triggered my recollections from the seventies using PDP 11 equipment.
I got my first taste of programming in college back in '76 on the RSTS 11 system on our school's PDP 11/40. My roommate got me started learning BASIC. Not long after, as a BSEE student, I got access to the the EE department's computer lab (not much more than a closet, but it had a rack mounted PDP 11/10) where I fumbled my way through the documentation for booting the 11/10.
I wasn't taking any CS classes and had to figure things out alone. I toggled in my first machine code program using the switches on the front panel. That program sent a single character to the hardware register for the system console terminal, an old ASR 33 teletype. When it sprang to life and printed "A" I got excited. I needed to make a loop to print more characters.
I got stuck trying to figure out how to branch backward and searched the manuals for a clue. That's how I learned about two's complement arithmetic and got my conditional branch to loop back. I tried sending more characters to the ASR 33. It didn't work reliably because I was overrunning the printer's ability to keep up. I figured out that I needed a delay and made one that worked, but was uncomfortable that it wouldn't be reliable and that I needed some kind of of feedback from the hardware.
Along about this time, I started wondering why there wasn't an easier way to have the computer do this calculation for me (didn't know about assemblers but saw intriguing references to the mnemonics and labels in the manual). More digging and I discovered that there was an assembler available in the rack of paper tapes in the lab. I had to toggle in the insctructions for the boot loader, which in turn allowed the Absolute Loader to be read in from paper tape, destroying the boot loader in the process.
Finally, I got the macro assembler loaded and was able to experiment with assembly language. I spent many hours reading everything I could find and experimenting. This gave me a firm underpinning for understanding computers and laid the groundwork for my entire career as a BSEE specializing in digital electronics and microcomputing.
Great stuff, in the 80's I was an assembly programmer writing games released under Ocean, US Gold and AMSoft for 8 the bit micro computer market and as the 6502 & Z80 processors ran so slowly, it was vital to optimise the code to run as fast as possible... for example on the Z80, the SP took fewer clock cycles to PUSH data to memory than a LOAD to (HL) so the SP was hi-jacked to point to screen memory and graphics were "pushed" in reverse to the screen mem. Tying in with that exam question, as the SP had been appropriated, many subroutines were coded such that instead of RETuring to the calling code a return flag was loaded with an identifier and conditional jumps were used to load the PC to the specific next address of the calling PC location, denoted by the identifier (the next address after the "call" being labled for the compiler). Thus subroutines with no RET lol... Of course, with this approach careful attention was given to any possible recursion but Speed was of the essence!!! cheers🍻
Niche? I spent two years doing exactly this on a PDP-11 - and getting paid for it. The PDP-11 was a dream to program and its instruction set was easy to learn and really well designed. Driving devices was easy if you could use polling (as in your example), but it was a lot more fun using interrupts. And once again the PDP-11 blew all its contemporaries out of the water, with a dedicated interrupt vector for each device type, and a multi-level interrupt priority scheme.
A couple of years later, I had to do it all again with the Texas 9900 microprocessor, whose instruction set was clearly influenced by the PDP-11. That was also great fun.
It is truly amazing just what you can do with just 8K of RAM and no operating system.
Andrew Tanenbaum gave DEC an A for their design of the PDP11 / VAX architecture, Motorola a B for the 680x0 family, and Intel a C for the 80x86.
@@markteague8889 I dread to think what he gave the appalling DG Nova and HP-1000 ;-)
Yes, niche.
Thank you Dave as this reminds me of the first 15 years of my work after finishing the university. We did logging and automating industrial plants, mainly in electric power generation and distribution. In 1975 we made the first high-voltage switchyard automation running on a pdp-11/10. I was the first and only European user of Dave Cutler's RSX-11A kernel. Later, it was migrated to RSX-11M/S and implemented in over 50 substations. The last one was replaced in 1999 because people feared the millennium bug. The switching control program became quite long, with about 2k words of assembly code. For pure binary decisions assembly coding was much more proper than higher languages (we used FORTRAN at this time). We said one can write pdp-11 assembler code even while traveling with a train or streetcar.
Did you know anyting about the Ferranti Proces Computer with real IO-cards inside. I forgot which OS is was running ...
During my Royal Air Force trade training as an air defence radar technician in 1984 my course was the first in my trade to do the "Digital" course as part of initial trade training. It was something like six weeks in the summer of 1984. As part of that course we had to do an introduction to programming using assembler on a PDP11/??. We also had to cover programming on a 6502 with just a hex key pad and a bunch of seven segment LEDs. This was on a board called an EMMA, which allowed you to add boards to do stuff like program a set of traffic lights. Never went near a computer again during my nine years in the RAF. Spent lots of time in a world where we mixed analogue and digital hardware techniques while processing the returned signals for the radar. Given of course that were were using a "pulse" radar.
Yay! I was subjected to EMMA as a sophomore in high school in Norway almost 30 years ago.
Most programmer today often do not know that C was influenced by the PDP-11 assembler and its various ways to address memory. In C it was called 'pointers'. So if someone knew PDP-11 assembler, learning C was just straight forward. Direct addresses, indirect addresses (aka pointers in C), post-increment, pre-decrement etc
I remember using the original Kernihan and Ritchie "C' book.
Still have it lol
C was initialy described to me by one of the early programmers as a portable PDP11 assembler
I'm pretty sure that every time Dave startup the PDP, the lights in the city fade.
neh, that's his CRAY X1E in the other room, lol. /sarcasm
A mate of mine always used to say how sad it is that the basics and the beginning is forgotten. Now people can use the things they got, but what if all that fails, the old things are lost. I think he had a good thought here and that is why I enjoy videos like these even not understanding everything. WiseG you did have a good thought there.
These assembly instructions really intrigues me, and makes me understand more about how computer executes code. Hope you make more of these❤❤
Loving this series of videos. Back in the day, you would see the words “Maynard, Massachusetts” on the vast majority of PDP front panels. Very occasionally, you’d see “Galway, Ireland”. As a native of Galway, I have always had a fondness for DEC and their wonderful hardware and OSes, particularly VMS and the glorious VAX.
DEC in Galway donated a PDP-11 to Galway Regional Technical College where I first used it as a student in 1977.
@petergibson2318 in 1983 or '84 they connected all the secondary schools in the city to a VAX 11/780. Donated a bunch of VT100s and venerable VT52s and some miltiplexors to each school. It gave us kids a taste of 'real computers' when everyone else was playing with Spectrums and VIC20s. Fond memories. @@petergibson2318
I look forward to every new video you publish! Great stuff!
Ohh man. I'm an ECE and I love working as close to the silicon as I can. Seeing stuff like this makes me wish I was born in the 60s but it also gives me a real appreciation for all the abstract goodies we have today. Really hoping my son takes an interest in computation and electronics, I would love to be a dad that shares his knowledge with the patience and passion that you have.
Ur freaking cool Dave.
Great stuff as usual, Dave. Much appreciated content!!! Greetings from across the pond.
I worked on later models of the PDP-11, the LSI-11/23 with RT-11, and later the MicroPDP-11/73, using RSX-11M+. The operating systems were very well organized and the processors were designed for good software.
One of the interesting things is that the interrupt process was significantly slower than polled hardware. So when doing data acquisition, I elected to poll the hardware instead attempting to process interrupts. This made foreground/background processing in RT-11 work very well for me. So those of you who are wondering why Dave didn't use interrupts for I/O there was a good reason: Not only was it simpler, it was FASTER.
In my first job out of college, I worked with several PDP-11s, including the earliest model (eventually called the 11/20, but this machine had no model designation on the front panel). It was equipped with a (removable) disk drive but booting required hand-loading the boot loaded into memory via the binary switched on the console (about 20-30 instructions, IIRC). Talk about bare metal...
I also loved the instruction set. It was so rational, most of my co-workers and I could manually disassemble an octal dump of code. My company also performed some magic leveraging the PDP-11's Unibus architecture, which was also exciting to work with.
I later moved on to the Motorola 68000, which had a similarly "orthogonal" instruction set and some advantages (more and larger registers), but was not as simple and pure as the PDP-11.
Thanks for the memories!
This brings back great memories from the Digital (Equipment) days. My first personal computer was a PDP-8/e in 1972. We had one in our basement and wrote programs for stock brokers in BASIC. I also built a hardware interface to an external tape drive for it. Much simpler than your PDP-11/34, I know, but definitely bare metal. Thanks for keeping this legacy alive and running.
Programming bare metal since late 80's with 8086 and 8051, I suddenly feel I need the PDP. The assembly is so similar, and I can live with mov from,to syntax. Thank you for this video.
I can't express how much I enjoy your videos. I know quite a bit about computers and computing, but not as deep as I'd like. I know enough to understand 95% of what you talk about, and the other 5% I can figure out from the context.
But yeah, I'm a geek, and I love hearing your stories and explanations, and learning or refreshing my memory with it all. Thanks, Dave!
This is gorgeous! I love how the post-increment instruction has a direct mapping to C's post increment!
Keep up the great work, Dave!
I agree with the great video and great memories. The PDP-11 and RSX were a great pair. I implemented many industrial process control systems in either Macro or Fortran , using memory mapping over the I/O page and then inputting / outputting directly to the device registers. I also love the comments section of the macro programs. I did 10's if not 1000's of "sysgens" that configured the operating system for the machine I was using. We had the whole source code of RSX on the disk. Things like looking at the module of RSX where it tried to dig it's way out of a stack issue, if it failed it went to address "Crash", where there was a HALT instruction, with the comment "Die Horribly" .
Just FANtastic. So much i’ve learnt from you than today’s modern cs profs.
Thank you Dave, for sharing your knowledge! I'm too young to have had the privilege to work on machines like these yet I'm deeply intrigued by coding & computing with much of the abstractions torn away. Practical examples shown in such a simple manner are extremely helpful.
It's just crazy to think how far we have come with the colorful and type ahead predictions of Visual Studio. Thank you for this awesome look back in time.
Great memories! Back in the early 80s, I attended a DEC PDP-11 assembler programming course that had us writing machine code before we could use the assembler. I still have the workbooks 😀 Fun times.
For those of us lesser mortals who don't have a physical PDP, there is simh (simh.trailing-edge) and the software kits for RSTS/E and RT11. These provide a simulation of physical computers. There are also ones for PDP-10 (Tops 10/20), HP (TSB) etc.
PDP-11 assembler was the first assembler I used. I thought it was great. I did a lot of PDP-11 assembler programming in the 1970's and 1980's. I also used the 68000/68020 which were fine. Then I came to the 8086/80286/80386 et al. Oh dear. What's with ptr, offset and operands from right to left?? Can names be named for who came up with notation for MASM?
Great videos. Keep up the good work!
That was great Dave,, thanks! I learned assembly on a pdp-8 and did a little pdp-11 assembly. I was a professional ibm 360 programmer for many years. In a lot of ways assembly is like an exact science.
Thank you for sharing this Dave, I spent about 4 years writing Assembler on PDP 11/23 and the 11/73 on RSX11S so this is a great blast from the past
Now we're talking! Yes, more of this please, Dave.
Appreciated the preamble (including the dudes using a PDP to cross-assemble to a C64, rofl) before you broke out the "big pants" and dived into the assembly coding. 👍
Roy, Gary and Roe sang some great tunes as well!
He had to use pic of CCR by accident right?
Dave, you're really bringing back memories. Though most of the rail control system code we ran on our PDP was in FORTRAN, we did use assembler for important operations like resource locking between tasks, time-critical I/O, and code that needed to be re-entrant. That was circa 1990-1994, about 30 years ago. Thanks for the memories.
Wow, I was working at DEC back in 1979 as circuit pack repair technician for the RL01/2 disk drive while I was in college. I had to be able to control the drive at the register level and hand wrote many PDP11 assembly language routines to be able to control the hardware at the bit level. This past year I was going through old papers and came across my DEC PDP11 programmers reference pocket guide. Programing at the assembly level was a lot of fun and, back in those days, it opened a world of imagination of what was to come. Thanks for the memories, and keep them coming!
At my former university in Brazil we still do our computer architecture courses based on a series of increasingly complex architectures created by one of our professors, but based on simplified versions of historical architectures; one of them is "Cesar" which is inspired by the PDP-11, including its assembly language
One of our assignments actually involved using timer interrupts or something like that to read input from the keyboard and write bytes directly into addresses mapped to a simulated LCD screen
So seeing PDP-11 code actually brings me back, despite never having seen one in my life and not being old enough to be around during the heyday of these computers
For your next video, I recommend getting even closer to the metal: machine language. The PDP-11 instruction set is quite elegant, particularly when you use octal. For example, 011507 is MOV (R5), R7 with 01 specifying the MOV instruction, 15 specifying deferred addressing for register 5, and 07 specifying direct addressing for register 7.
I was pleasantly surprised when I found out that one of my courses in the late 80's was taught on a PDP-11. I enjoyed it a lot. I remember going back to the building where it was taught a year or two later, only to discover that the PDP-11 had been moved to the stairwell and now had a placard describing it as the museum piece it was! An elegant computer for a more civilized age.
Thanks Dave, this is very nice to see. It reminds me of my early years in programming in the 70ties. I started with Z80 assembly language on a Sinclair ZX80 with 1 Kb of RAM.
Ah! The good ole days! I started work in 1966 for NCR as a field technician. Got trained on their 315 system. We were expected to write our own diagnostic code for the specific problem we were having. It was a hoot! My first PC was an Apple II integer, but I soon sold it to a highschool kid and upgraded to a //e. Had and built many PCs over the years, trying to keep skills relevant. I always enjoy your posts.
I really hadn't thought much about my first experience with Assembly language in Engineering school on the VAX. Thanks for the trip back!
I'm 20 year old game developer, I mostly write C++ and C# code, so this kind of thing fascinates me. I love your videos, thanks for teaching us so much!
Brings back memories of 37 years ago. Writing custom boot code for process control system loading. Very satisfying loading memory management and not mapping the code out. Daunting at first a completely bare machine,band then only your code running.
I spent lots of hours in high school on a PDP 11/34. Only BASIC programming, but learned a lot. Nice to see that some machines still live.
Your PDP 11 story across multiple videos is like a trip down memory lane.
I still remember being exchange student at University of Kansas, Lawrence, Kansas back in 1982-83. The time when my uni days really were like National Lampoon's Animal House.
Anyways, one of my classes was assembly programming for the PDP11. I love your channel, keep it coming!
BTW: In my residence hall we had one terminal with acoustic modem connection to university's main-frame computer. Speed 1200/75 baud which roughly becomes 8 chars/sec keyboard typing and 100-125 chars/sec display on terminal. World was different back then.
I call that JSR RTS question a "trick" question. Just because multiple JSR instructions may use the same RTS instruction DOESN'T mean that each JSR instruction doesn't require a RTS, they just don't each need Their OWN RTS instruction.
RTS is not required if JSR is not intended to ever return, eg infinite loop or intentional HALT. That might leave something on the stack but in those circumstances it doesn't matter.
There are cases where, for example, JSR is used to call an error handler, where JSR is used to automatically push the program counter to the stack, and where the error handler never returns to the program. (the error handler pops the address from the stack without RTS)
@@sharpbends Wouldn't it make more sense to use something like a JMP instruction for that?
@lorensims4846 Absolutely. RTS can still be achieved by stack and PC manipulation as well.
@@a4d9that was one of my first thoughts too. And rop chains are rts without jsr. And you can put stack into rom and just use push/jsr to change the stack pointer, pop/rts will grab values from rom. I suspect that most teachers wouldn't comprehend these methods, but they would have taught students better what was going on in the CPU
Lots of memories there. I started UofR in 1979. Used a dec pdp 11, to write my first code. The machine was actually in the computer lab with us, but we had only a teletype writer to code on. Never forget when I got something to run rather than spitting out error messages on rims of 36 inch folding printer paper. At least it was better than the punch cards for the IBM assembly language I would write a year later. We have come a long way.
Fabulous. I used to keep my PDP-11 pocket coding quick reference card with me at all times. I'm sure that I still have it somewhere. The instruction set was elegant and logical.
I'm in agreement about the beauty both the PDP-11 instruction set and the 68xxx instruction set. Very clean, very easy to use. No real surprises when coding at that level.
+1. The first two instruction sets I learned were for the IBM 360 and the PDP-11 (writing an emulator for the latter in the former for a course). A little later I learned the 68000 ISP which was an easy follow on to those. Eventually I encountered the x86 architecture and I’m like what? Address calculation isis done how? Fortunately I rarely had to dive down to that level when programming for x86 boxes.
@@NathanielMishkin Interesting. The 360 instruction set with it's (I think) segmented architecture has made me think that it was an inspiration for the x86 architecture. I had to learn a superset of the 360 instruction set for an avionics processor called an AP-101C, which is like what flew originally in the shuttle, and is like the 360 instruction set, but has specific instructions for doing trig operations.
Ah, no on your inspiration point (at least not for ground-based 360 CPUs :-). No segmentation. If anything it was the 68000 instruction set that was inspired by the 360.
I couldn't click fast enough Dave.
Thank you for making awesome videos on assembly!
Fascinating episode. Took me back to assembly coding in university using MASM.
The mini that the college was running on when I got my computer degree was the PDP-11/70 (released in 1975. 1 years before the 11/34). I learned a whole raft of languages on that computer, including assembly. You are bringing lots of memories back to me.
Dave, love your channel and subjects, I started out in the 70's on an IBM 1130, a PDP 11/40 and then on to the Intel 8008 and 8080. Keep up the great work!
My first job after graduation involved programming in Fortran on a PDP11/34. Removable storage at the time consisted of 14" diameter 1Mb disks.
I shared this computer with two other software engineers. Every so often I had to run a large simulation. Had to arrange with the other two engineers to tie up the PDP11/34 for an entire week!
From an OLD Dec man. I loved your screen flash: "OCTAL DAMN IT"
I actually shouted it before the flash showed. I did a lot of MACRO11 and whilst I haven't used it for a very long time, I suspect I might remember quite a lot about it.
Reminds me of the 1401! My first computer job was programming and operating a computer that was only one year younger than I was. Autocoder also used the more rational from/to method to move data. Every assembler I've coded in since uses to/from and I've never really understood why.
When my company finally switched to an HP/3000, I salvaged some things: A core storage unit from a 1403 line printer, some random 1401 blade cards and manuals for both the 1401 system and Autocoder language.
Life was so much simpler then. with no operating system, punched cards, and a physical Bit-Bucket I had to dump at the end of my shift.
Remember Coding Sheets -- and the maxim, "Real programmers code in INK"?
I still jave my COBOL and ASSEMBLER coding sheets. I began on 407 accounting machine doing plugboard wiring then a 1401, onto 360/30, 370/138, 4300 series [4331, 4341, 4361, 4381] Then to 3090, Amdahl 5880 and s/390.
I was a systems programmer on all those machines, wrote millions of line of assembly code. I get a kick out of people calling ANY PDP computer "big iron"'
I am well versed in 13 languages, but my fav is assembly on REAL big iron where there is no silly stack pointer and other silly things
So much fun! I wrote PDP-8 and PDP-11 code in college and Data General NOVA assembler in early jobs. Then on to VAX/VMS writing special purpose drivers for material handling systems. Proprietary protocols for distributed controllers. No email in those days!
WOW, that sure brought back memories. Tens of thousands of lines of assembly code written for direct hardware control on multiple platforms, includind PDP 11 and PDP 10.
Thanks for sharing.
This video brings back fond memories, thank you. I graduated with a BSCS from the University of Utah in 1974. I learned to program on a mainframe, the Univac 1108. At the time of graduation I was working at Sperry Univac as an electronics technician in R&D. With degree in hand I was promoted to programmer and began coding for mini computers. (Unfortunately, I did not get any DEC experience back in the day. I do have PiDP-8 and PiDP-11 to play with now though.) I spent 20 years with Univac->Unisys where I mostly coded in assembly language for 8080, Z80, 8048, 6800, and my favorite, the 68000 series. Mostly using home grown OSes. In the late 90s I worked at Novell on their core OS which is where I got most of my x86 experience. The last 10+ years of my career were spent with C++, and although I was more productive in C++, it was no where near as enjoyable of a job as was writing assemble language in the 70s and 80s for the mini and micro computers.
I started my IT career on an IBM 360/20 card system using Assembly Language. As my time on Mainframes grew I got into COBOL and PL1. Later on I had a PDP 11/70 in my office when we were porting to some new software. As time went on we grew into an IBM 370/195 and its follow on systems. My path led to systems like Cray, Burroughs, Univac, Unisys, and several IBM Midrange Computers from IBM 32 to 38’s and AS400’s. My last 25 years were mainly spent on very large Linux Systems with Terabytes of memory and Petabytes of SSD, running Oracle Databases and E-Business Suite. But up to my retirement day I was still using Assembly Language to interface a multitude of varying hardware back to Oracle! Even though we used a lot of C and other languages, I always had Assembly to fall back on. Keep up the good work Dave!
I'm used to "big iron" referring to mainframe computers.
A venerable minicomputer like this might have been referred to as "medium iron."
I started programming in Assembler using punch cards on an IBM 370 clone by Burroughs in 1980.
In '81 I decided I needed to learn BASIC so I took a class to learn Microsoft BASIC on an Ohio Scientific minicomputer. Considering that, contrary to my Assembler professor's opinion, microcomputers were becoming a "thing," those all ran some version of BASIC.
But I understood that Assembly Language was really where it was at.
I know that the pdp exist but there goes the end of my knowledge, but these two episodes is the most interesting you have done lately, keep them coming:)
Great look into retro coding in assembler! Enjoy these trips down memory lane! 😎👍
I love learning how it was done in the old day, Please keep making more videos.
1975 was my first year PDP11 coding on DOS11 and then RT11. (I still have my DECtape from that year). I continued coding in MACRO11 for many many years. Thanks for bring back the memories!
A blast from the past. I started off my IT career on the PDP-11
My first machine was a PDP-11/20. Many decades and hundreds of thousands of lines later I still write code for that elegant instruction set. And RT-11 I rewrote a few times as well, for different environments. I'm just finishing moving XXDP, the PDP-11 diagnostic operating system, to run in an RT-11 environment. Because the PDP-11 is such a delight.
We are of the same age (vintage?) and my assembly language journey was 6502. At the height of my powers in high school/college, I could do most 6502 assembly programming without having to review back to the manual for my Apple ][. I did have access to a PDP 11/40 in high school that lived at a local college across the street where I could load BASIC programs on the RSTS/E system, but this machine was so above my perceived skills, I didn't even consider doing assembly on it. In reality, I really should have since it would have probably been a lot of fun and useful for my programming skills. Considering that in college I had direct access to DEC-20 and VAX systems, I'm kinda kicking myself for not taking the opportunity to get a little more bare metal experience with these systems. Thanks for your video to demystify all this.
I am glad you are doing this series. The PDP-11 was a fun machine. Though, I only ever had the emulator that ran in a PC on an FAA certified flight simulator. By the time I got there the hardware had been replaced.
I do have some real old hardware experience though. I am not much older than you but I started at a small flight simulator training company in 1986 and had a simulator that had see a DDP-124 for the host and a Varian 620/L for the visual. Both used paper tape and I assure you, pranks were pulled with the bits that were punched out.
I rather miss programming in Assembly or just punching in a quick program for diagnostics using the data and register switches on the front panel.
Nice episode that brings back memories. Remember my early days at Fairchild and their attempt on doing the 9440 Microflame in 1977. A copy of the DG Nova computer with some added extra microcode. Thanks for your efforts playing successfully with the old time bare metal. 😀☀️☀️ Lots of fun watching and following along.
I have always loved coding in assembly because I had total control over the CPU in those days. I cut my teeth on it as a kid with various MCU's - 6800, 8085, Z80...
My formative commercial years were on bare metal and very constrained single processor embedded microcontroller systems before the PIC's and similar arrived . I spent YEARS developing code for a Hitachi H400 4-bit microcontroller on a 4.77MHz PC development system using using Word Perfect as an editor (RIP Bruce Bastian) native Hitachi tools, programming to a UV reprogrammable part with broken legs (they were expensive) and crash and burn, bringing out test pins to unused I/O as traps. Code ran into hundreds of pages and I came up with my own bottom-up coding methodology that worked at the time and at the higher level of the programme the systems became almost high level configurable although with some faff.
Happy days.
Seeing that shelf of orange binders brings back memories. I recall getting sets of errata manual pages with the new version of the OS. Starting with the first binder, replace pages 7,8 with pages 7a, 8a, 8b. Sometimes just a page or two per chapter. Sometimes whole chapters were dropped and replaced with a new chapter. Keep repeating until all the relevant pages were replaced. And we actually referred to the manuals often and needed them kept up-to-date.
Seeing the over of the Commodore Programmers Reference Guide brought back some fond memories of my Assembly Language days, thanks.
Brings memories from my early days... and tears to my eyes... Thank you! 🙂
This brought back memories of the last time I wrote machine code, Z80 on our school System 80s (antipodean version of TRS-80) in the mid 1980s. When I first realised what was possible, I got a book from the library on Z80, and was reading it balanced on the handlebars of my bike while riding home from school.... then crashed my bike into the back of a parked car. That was the first of many adventures in Z80, the rest of which included hand-dissassembling the BASIC interpreter, working out how to transparently recover from the non maskable interrupt, making a full graphic screendump onto the dot matrix printer, and all sorts of associated hackery. The rest of the class were learning FOR loops in BASIC. Happy days.
As an old FORTH developer (Max-FORTH, embedded in the Motorola 68F11 was my project), playing games with the stack and return addresses was just another day at the office. So, let's see, you could JSR, pop the return address and store it someplace, and if you decided you really wanted to return from whence you came you could jump indirect. That would be a JSR without an RTS.
I remember writing some subroutines that had to run twice on two different halves of a value. The subroutines did some setup and then did a JSR to the immediately following location in memory. An RTS returned to the location following the JSR. The second time the RTS got executed it returned to the real caller.
It's assembly. It's the wild west. Everything is possible, including unholy ideas no one in his right head would consider. Cool stuff, in other words.
Enjoyable video. Took me back!
I absolutely love your channel, dude.. It's one of my favorites. NOt even just because of the content, but your personality makes the channel worth watching. Thanks dude..
I wrote 6800 and 6809 assembly language professionally for 10 years. We wrote everything from the real-time-multi-tasking-interrupt driven operating system. From reset vector to the power-down non-maskable interrupt driver.
This was before windows and the internet. Talk about a sound foundation.
40 years in the business
Thanks Dave. Love your work. My "bare metal" in 1966 was an IBM 1620 M1 with an 80 col card reader. Great to learn on as it operated in decimal, and no bootsrap as it had a "Load" button (read card image into pos 0 and branched there). It had no registers, just storage to storage commands (well one for a sub call to store return address). Then we got a 360 so I had to learn hex and operating systems.
I've learned so much about modern coding from these videos! So cool, thanks Dave!
This is so beautiful. Thanks for your hard work creating and sharing
Abs(Love_This_Content)
You are the Bob Ross of software development! Love your style!