@@Andy-fd5fg "Adverts"? Are you serious right now? Why aren't you using proper adblockers, like Ublock Origin and TH-cam 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...
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. 🤓
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!
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!
"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.)
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!
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
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.
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.
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...
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++
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.
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.
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 !!
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.
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!
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
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.
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.
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.
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.
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🍻
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.
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.
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.
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!
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.
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
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
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.
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!
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.
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.
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.
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.
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!
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 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.
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" .
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
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.
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.
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. 👍
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.
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.
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!
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:)
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.
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'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.
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
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!
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 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..
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.
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.
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!
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 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.
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!
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.
Thank you Dave! Great trip down memory lane! I never saw a PDP 11/34, but I installed dozens of 11/34A's, 11/44's, 11/70's, and a Q-Bus load of 11/23's. Doing bootstrap from the front panel, testing line printers, DL11's out the wazoo, DQ11's that we replaced with UMC-Z80's. Unbelievable how great it was to have an LA120 console instead of an LA36! The OS was RSX-11M, M+. Let me know if you need any 8" floppy disks, I still have a couple of boxes left! 🤣
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!
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 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.
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.
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!
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.
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!
Like many here, this is a walk down memory lane (no pun intended 😊). My grad thesis was a distributed Unix V6, I spent many hours with the Lyons commentary and Unix source code, asm, and poking bytes of physical memory with kdb when process locks got messed up! Machine was indeed an 11/34, with a wopping 30MB of disk!! More please Dave! Fantastic!
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.
Loved it. Just found the channel after your informed comments on the Crowdstrike fun. Fond memories of writing bare metal X25 support for PDP11/44s before being moved over to do driver stuff for VMS. Sure beats the reviewing of c++ I do these 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!
Memories, my first CS class was Fortran WATFOR / WATFIV on a UNIVAC 1100 using punch cards and line printer output. The first code I got paid for was 6502 assembler. Nothing since has been as satisfying.
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.
In my 20's, I professionally wear a few hats ranging from IT, Cybersecurity, and some software development as well. My knowledge and experience is primarily in the high level realm. But I have always been curious what it looks like beneath all the "magic". I just stumbled upon your channel today and love it! Subbed and liked! Great content!
My first forray into computers was Commadore 64's /Sinclair etc then Apricots and Amstrads, then the full MS-DOS and Windows suites, but this takes me back to when I taught myself assember programming for Microchip RISC devices, that you needed to UV erase each time before reprogramming. It's amazing how similar the commands are.
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 TH-cam 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.
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. 🤓
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!
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!
"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.
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!
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!
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.
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.
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...
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++
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.
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.
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 !!
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.
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!
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
I still have a copy of the LSI11 PDP11/03 handbook on my bookshelf, a souvenir from an assembly language programming class in college.
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.
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.
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.
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.
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🍻
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❤❤
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.
I look forward to every new video you publish! Great stuff!
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.
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!
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.
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
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'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
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
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.
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!
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.
Great stuff as usual, Dave. Much appreciated content!!! Greetings from across the pond.
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.
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.
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.
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!
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 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.
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
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" .
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
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.
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.
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. 👍
I really hadn't thought much about my first experience with Assembly language in Engineering school on the VAX. Thanks for the trip back!
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.
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.
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!
Just FANtastic. So much i’ve learnt from you than today’s modern cs profs.
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:)
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.
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'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.
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
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!
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.
Roy, Gary and Roe sang some great tunes as well!
He had to use pic of CCR by accident right?
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..
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.
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.
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!
Great look into retro coding in assembler! Enjoy these trips down memory lane! 😎👍
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 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.
Brings memories from my early days... and tears to my eyes... Thank you! 🙂
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!
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.
Thank you Dave! Great trip down memory lane! I never saw a PDP 11/34, but I installed dozens of 11/34A's, 11/44's, 11/70's, and a Q-Bus load of 11/23's. Doing bootstrap from the front panel, testing line printers, DL11's out the wazoo, DQ11's that we replaced with UMC-Z80's. Unbelievable how great it was to have an LA120 console instead of an LA36! The OS was RSX-11M, M+. Let me know if you need any 8" floppy disks, I still have a couple of boxes left! 🤣
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!
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 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.
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.
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!
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.
I've learned so much about modern coding from these videos! So cool, thanks Dave!
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!
I couldn't click fast enough Dave.
Thank you for making awesome videos on assembly!
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.
Like many here, this is a walk down memory lane (no pun intended 😊). My grad thesis was a distributed Unix V6, I spent many hours with the Lyons commentary and Unix source code, asm, and poking bytes of physical memory with kdb when process locks got messed up! Machine was indeed an 11/34, with a wopping 30MB of disk!! More please Dave! Fantastic!
I love learning how it was done in the old day, Please keep making more videos.
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.
Seeing the over of the Commodore Programmers Reference Guide brought back some fond memories of my Assembly Language days, thanks.
This is so beautiful. Thanks for your hard work creating and sharing
Fascinating episode. Took me back to assembly coding in university using MASM.
Loved it. Just found the channel after your informed comments on the Crowdstrike fun. Fond memories of writing bare metal X25 support for PDP11/44s before being moved over to do driver stuff for VMS. Sure beats the reviewing of c++ I do these 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!
Memories, my first CS class was Fortran WATFOR / WATFIV on a UNIVAC 1100 using punch cards and line printer output.
The first code I got paid for was 6502 assembler. Nothing since has been as satisfying.
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.
In my 20's, I professionally wear a few hats ranging from IT, Cybersecurity, and some software development as well. My knowledge and experience is primarily in the high level realm. But I have always been curious what it looks like beneath all the "magic". I just stumbled upon your channel today and love it! Subbed and liked! Great content!
My first forray into computers was Commadore 64's /Sinclair etc then Apricots and Amstrads, then the full MS-DOS and Windows suites, but this takes me back to when I taught myself assember programming for Microchip RISC devices, that you needed to UV erase each time before reprogramming. It's amazing how similar the commands are.