My first experience with Unix was minix in 1990. Before that I was a TOS and DOS guy - always disliked DOS. I was immediate sold to the basic Unix philosophy of “everything is a file”. I find that Linux unfortunately is slowly moving away from that paradigm. I started Linux in 1995, at the same time I had an Indy with Irix. Irix is a nice clean SystemV Unix. Then in 1997 I got a written off, microPDP11 from my work. I put SystemIII on it. Was quiet an ordeal so early in the time of the internet (not a lot of downloads available). Then I did Tru64/TruCluster (the best ever Unix!), AIX, HP-UX and SunOS and Solaris. Those days of the mid 90s to the early 00s were magical for Unix. Because the internet started to happen and that was what Unix excelled on. Great standard development tools, good networking stack, lightweight. Man… miss these days.
@@CallousCoder The only proper UNIX I've ever used was Sun Microsystems' Solaris. I think Sun made some amazing products. I have a little bit of Linux experience, but I prefer FreeBSD to Linux in most cases. I agree the late 90s to early 00s was peak for Linux (as well as UNIX) and whatever Linux is these days pales in comparison to that era. I miss those days too man...what an exciting time it was!
@@toonz9971 then you haven’t used Irix or Tru64. Full SystemV systems and DEC Tru64 with its Alpha blew everything out of the water with its speed. And then adding TruCluster to the mix made a 24x7 Unix you could migrate a running process to another node, not even the socket was disconnected just a little “hiccup as it moved across the memory channel”. And you could just patch the code or the OS. It was marvelous! And their SpecFp was a long-standing record. When Sun and SGI were doing 200MHz on 32 bits we were pushing 700MHz with full 64 bit. My jaw dropped back in 1995 when we gotten two GS140s with TruCluster for our 24x7 available database and fluid sim calculation. Me colleague who made the fluid sim code was like… how many CPUs 14? Oh… I think I will do my first ever parallel programming 😀And me well technically 28 but then you may want to fork a second instance. I did btw love Solaris 10 on Intel! I used the shit out of containers and zfs! I immediate realized containers solved our development system problems. As well zfs, snapshot the database run your integration tests rollback snapshot. New container for your feature, there you go! Have fun! It was amazing! We had lpar on AIX but this was better. Now Docker took its place.
My first Unix was SunOS 4.1.x in our campus computer lab in the early 1990s. SunOS was the precursor to Solaris. (Technically, SunOS 4.1.1 was also "Solaris" but it wouldn't be branded as "Solaris" until a little later than that - we ran SunOS at my first job, and Solaris at my second job.) I'll always have fond memories of running SunOS and Solaris. We had Sun 3/50 diskless workstations on campus, but I loved the SPARCstation "pizzabox" (S4? S5?) at my first job.
Glad you liked it! I always have a terminal window running on my Linux machine at home, even though I run GNOME as my desktop and run GUI apps. The terminal offers a very flexible and powerful command line.
Glad you like it! I wrote an article about the experiment of using Linux like original Unix, but "screenshots" in an article doesn't show the experience quite like a video. I don't usually use ed for big projects - but when I could only use ed for this experiment, I found I quickly adapted to using it. While working on larger editing projects (I wrote several nontrivial programs and documents that I didn't show in the video) using ed became second nature. It's just a different way of thinking when I edit. 👍
@jnharton Non-interactive editors are useful. One of the options for the diff command (I think it's -e) makes it generate a script of ed commands to turn one file into another. This was then used to build the first version of SCCS, which later led to RCS, CVS, Git, Fossil, etc.
I'm a 2004 kid and I started coding with a full blown IDE and Java as a kid, this is so cool to see and while ill probably never end up using fortran or unix os seeing the history of terminals and an editor predating even vim and vi is beyond cool.
If you can try a bit of FORTRAN, go for it. Just play with some non-trivial maths problems, and you'll be surprised at the ease it affords. I firmly believe that *all* programmers should have at least had a look at one of the early languages… it gives you an insight into how far we've come and helps you to appreciate what the modern high-level language takes care of for you.
Modern Fortran has not been column based since the spelling stopped being in all caps (in the 80s) and it dominated HPC until just the last decade when C++ has started to overtake it. These language choices are partly due to speed/efficiency but it also has a lot to do with the availible proven debugged math libraries, no sense spending a week and $100k of electricity on a scientific calculation just to be slightly uncertain of the accuracy. The fixed-column thing was a direct artifact of punched-paper programming. Java is OK for portable widget apps that are distributed to run on many operating systems, but Java was in decline until Android came along and gave it some customers. Any language that is interpreted or JIT optimized at runtime, or even just garbage collected, is no good for applications like industrial machines, healthcare, music recording, and other real-time tasks that need deterministic behavior. (Real-time doesn't mean fast, it means the actual physical wall clock latency must be bounded with guarantees of worst case maximums and minimums.) Eg some fool at Boeing tried to use Java in a new landing gear control unit and during bench testing it would just fail to extend a few percent of the time; the reason was the JVM doing some "helpful" housekeeping thing in the background would block reception of the interupt signal. The C-17 engine contol unit on the other hand has mathmatical proofs of worst case behavior (This took several years though, it is proof of the whole hardware and software stack combined.) Simpler hardware generally helps a lot in this regard, eg an little AVR arduino can handle control of more stepper motors more accurately than an i9 desktop. The i9 has a latency variation of 150µS even after disabling hyperthreading and using a hard real-time operating system. Then you add the uncertainty of PCIe based I/O and such. This is why the 80386 remained in production through 2007 despite being of no use for new desktops after about 1993 and long after the 80486 went away. 386 was the last predictable x86 design. Newer x86 CPUs have out of order execution pipelining, branch prediction, cache effects, register renaming and so on and so forth. Even though you might know it takes 5 cycles to do a multiply on a modern CPU you can't know when it will get its timeslice or when it will flush to output.
This was very fascinating. I can not imagine how many people must have written their own version of awk back then. Everyone must have had their own set of helper programs, I imagine. Thank you for sharing.
Pretty much, yes. Awk (1977) made it easy to write scripts to do lots of useful tasks that you'd otherwise need to write a one-off program. Sed was useful for simple mass edits, grep was excellent for one-line patterns. Awk made it easy to do things like "If *this* line in the log file says 'Error' then print the next few lines (line count might vary) until you see some end-marker." That's easy to do in awk, not possible in grep.
hi! just to confirm, u can print a predefined number of "context" lines with grep too right? the -B or -A flags. > _"[untill end-marker] That's easy to do in awk, not possible in grep."_
What a great future world you must come from! ☺ The "grep" command was added in Unix 4th Edition in November 1973 - so it wasn't available in the Unix 3rd Edition I'm showing here. And no, grep didn't support context lines in 4th Edition .. it was one line of output per match. (Basically the same as the g/re/p command in the ed editor.) I'm not sure when Unix grep supported context lines, or if that was a GNU extension. And the example I mentioned in my above comment was meant to suggest a variable number of lines .. like a multi-line error message that might end with some "end error" message on its own line (typical in some large environments I've used). That's easy to write as an awk program (if line matches, then doprint=1 .. print if doprint==1 .. if we find the "end error" message, then doprint=0).
It has a far ranging legacy, with descendants like ex, vi, sed, grep and perl. The ex language is still there in neovim, although they removed ex mode to avoid confusion.
ed is pretty cool. I don't use it all the time, but I do use it occasionally when I need it. Good tool to have. And if you're like me, just to play around in sometimes.
@@freedosproject I've just never seen it behave so well and fast, I've thought ed was a slow, grinding editor, but it's actually pretty elegant! I'll definetly try it more, I even played with it for a while after watching your video. Cheers!
This video was fantastic. I've been using Unix for decades and admittedly I've gotten used to all the modern tools but there's a certain fondness for doing some things manually. Kudos to you, sir and keep the videos coming.
The first time I used a PDP-11 the Telex terminal had an accoustic coupler built in and I'd use it to dial the computer at our local university. Thank heavens, the computer room housing the PDP-11 had air conditioning so loud you couldn't hear the rattle and klankk of the Telex! Unix wasn't on that particular unit, we used RSTS/E, but I kind of recall that Unix was the OS at first but was changed for some reason. The memory is foggy - it was almost 50 years ago and I was barely 12.
I never used a Teletype or Telex terminal as a terminal, but the physics department in my undergrad years (I was a physics student) had a Teletype terminal set up as a printer in the mini computer "lab" (a tiny room with two VT terminals, plus a pen plotter, plus the Teletype "printer").
Wow, that brings back some memories! I was in junior high school when UNIX came out, and was unaware it existed, outside what the "Popular" magazines may have said about it. In college I got to use my university's VAX system running some iteration of SysV UNIX, over 19200 bps serial lines. In the basement of our dorm there were rows and rows of Wyse (IIRC) terminals that were available around the clock. Getting a hard copy to turn to the TA required a walk to the computer room during business hours. When I logged off, it showed how much CPU time I had used. There was no limit on that, but in CS101 we got a very small number of disk blocks to do our homework on. A few years later, I was working at a different university, and was given an account on a UNIX machine. This time it was a Sun SPARCstation 20 running Solaris, with a lot of GNU utilities added to it. When I stood up my first Linux box, those GNU programs were familiar, and notably absent on bone stock Solaris machines. Had I known that Linux would take over so quickly, and dominate so many things, I might have paid a bit more attention!
Sounds like we are about the same age. When I was an undergrad (early 1990s) we had terminals around campus. I think they were VT52 or VT100 .. maybe both, depending on the building? I used those a lot between classes to check email or write papers. I discovered Linux🐧 in 1993, and installed it (dual boot with DOS) on my computer at home. Check out my other video about how I wrote papers using nroff - if I didn't want to reboot into DOS, I could use nroff to write my papers and print from my dot matrix printer in my dorm room, or the (free) dot matrix printer in the computer lab.
@@freedosproject I'm a bit older, if I had gone straight to college, I would have graduated in the early '80s. I had a couple friends who were into computers, including one who took home a VAX while working for the phone company. So I knew a little, but not much. Electrical engineering was my major, and I was the only one in my class who wasn't planning on doing digital and/or ICs. Back then, I thought that home computers were a novelty, but not that useful. Networking really changed that. I discovered Linux while working for another university in 1995. MS-DOS / Windows 3.11 was the standard OS, but I discovered that I could dual boot into Linux and access the files on my work computer from home. (Most network cards at the university had public IP addresses back then.) I never used nroff myself. Back then I was a big fan of plain text. I used my free class audit privelege to learn C programming, and instead of turning in my assignments on fanfold paper from the line printers, I turned in fanfold from my MX-80 hooked up to my home computer running Linux.
@@StringerNews1 Loved the Epson MX-80 dot matrix printer! We had one in the 1980s and it was a workhorse. Printed out countless code listings and class papers, and just never broke down.
All seasoned Unix sysadmins of the latter 1980s and into the 1990s knew that the first thing you did when setting up a new box was to download and install the GNU utilities.
The first iterations of Unix were a bit before my time. However, when I was about 10 or 11 (circa 1993/94), I found a DEC VT100 at a yard sale (pretty sure that's where it came from). I used it with a 9600 baud modem to connect to some BBSs. I thought I was pretty hot stuff at the time lol
A friend of mine was born mid-March 1970, and he claims to share his b'day with Unix! 🙄 I don't think an exact date has ever been pinned down, but could be I suppose.🤷♂️
@@squirlmy Well, either way, I hope we can agree that Unix existed before 1993, when I first used a VT100 terminal, which would have been used early on in Unix history...
We had VT100's on campus - they got rid of them after I graduated. If I knew then what I know how - how "retro" cool they were - I would have found the space to keep one when the campus CS department gave them away for free.
Definitely this. I remember using top on a 9600 vt100-clone and you could clearly see the cursor flying around... I remember that more than the stereotypical "long phosphor" that things like Cool Retro Term lean heavily on. I can't figure out how you would limit the speed of a vty without an actual serial cable though. Cathode on the mac does have this option, from memory.
Amazing little CS class! looking forward to see more like these Jim, It would really help the new and old generations maintain fresh knowledge of these legendary tools of trade.
This was a nice little bit of digital archaeology. I especially love that you pronounced char correctly, as it is short for character. Are we going to see a video series on you writing some program like a text editor or a compiler for your own programming language now? Maybe a new version of edit that has syntax highlighting. That would be awesome.
We need the Czar, we need the Czar Wait, you mean a Char for the Structure? No, man, the Czar is dead, long live the Czar. (From digital archeology from a Fortran, BCPL manual, late 70s. Not from me).
No IDE, no vim, a primitive text editor...and no compiling errors! Never seen one shot code that worked out of the gate. What you guys accomplished with such simple tools is amazing. Though I'm sure y'all felt the same way about the people working on pre assemblers with machine code. Thank you for the peek into what it was like to work on an early UNIX terminal. Friday night well spent.
Glad you liked it! Using Linux at the command line like this (and using ed) is really fun, and it's an interesting experiment. When I did this experiment (to use Linux like original Unix) I lived at the terminal. I just maximized it on my system, and did everything there. [Technically I cheated .. I had my work email up on my other monitor, so I can keep an eye out for client emails.] When you write nontrivial programs using ed, your brain starts to work differently. You build a kind of mental map in your head, and you can navigate pretty easily using ed. I became quite comfortable with ed - and I sometimes still use ed if I need to write something quick .. like make a script out of hte commands I just ran.
@@pauldwalker Technically, vi actually stands for the "visual" [mode] in Ex (not Ed). It was a shortcut for launching Ex directly into visual mode instead of line mode. Then we got "Vim" (vi improved) several years later.
So grateful things got easier to do (I worked on these systems in high school then in engineering school back in 1984). They still had a few teletypes at the University and would spit out a small "book" of errors when something went wrong, then we'd get charged for the paper (a big motivator to test your code on paper thoroughly, before typing it in - I recall typing code into one terminal, running the compiler, saving to an 8in floppy, then handing the floppy over to a system operator, who would insert it into another machine to actually run the program)
This takes me right back to my early days of my computer career. I started using a PDP 11/34 where I learned the basics of Fortran programming. It wasn't later until the 1990s when I entered the world of IT as a computer operator and eventually met my favourite operating system - Solaris 2.6 ...ah the nostalgia. Now some near 40 years later I'm working with various flavours of Linux and haven't touched Unix since 2009.
I'm so glad that I'm about thirty years late to this party and can just enjoy the wonderful desert that has come from people typing code like this (also makes it very understandable why it's near impossible to find anyone to maintain such systems). :w!
You never know. I'm actually so glad that I came to the party over 30 years ago, and got to mess around with lower-level stuff. In a way, it makes you more appreciative of the tools we have now, and also know their limits. ✌
Awesome video. History can add so much context to computing and can help give a deeper understanding of why things are the way they are and why they are done a certain way. The days of elegant and long lasting solutions that squeezed every last bit of use out of the equipment have almost gone now and whilst I'm glad that computing has come so far, simplistic elegance and endurance have been replaced by superficiality and complexity. P.S. At 28.04 you missed out the ^2 for the equation x(t) = 1/2at^2
You're very welcome! Since doing this video, I sometimes use ed (and FreeDOS edlin) unironically to edit files. Usually if I just need to make a quick edit to a file, or if I run several commands and realize "that should be a script" .. I can do ed and edit my file while I can still see the previous commands I typed.
When I was in high school in the early 80's in the Albuquerque school system at the Career Enrichment Center they had a DEC System 10 and a bunch of TTYs and a single VT100 terminal. You had to get into the room early or be very lucky to get to use the VT100 instead of the TTYs where you would waste reams of paper. DEC was building the VT100 in Albuquerque at the time. The VT100 also supported 132 columns by 14 lines.
This reminded me of my first week of University in 1985 where we were introduced to Berkley BSD 4.2. The professor had us writing programs in ed. After a day or two we switched to vim when one the students discovered the more modern full screen interactive editor and the word spread. We had rooms of terminals like this and few had early graphical windowed workstations from the local Whitechapel company. There was also a few colour graphics terminals that had a build it mode to do coloured text in the terminal with letters, punctuation and numbers in different colours like primitive syntax highlighter. Around that time I had my first digital photo taken and it was saved to a 10.5-inch magnetic tape to be able to transfer it to my home directory.
Very cool! 😃 Brian has a great story about Bill Joy writing vi, in his book 'Unix: A History and a Memoir.' Short version: Bill hung around the Labs when he was a grad student and showed off this new editor he was working on. Brian told Bill that he should focus on his degree, not the editor. Brian comments in the book that maybe he shouldn't give career advice. 🤣
@@freedosprojectexamination of 4.1c source code especially from the 4.1c.1 directory tree on the CSRG ISO shows traces of early SunOS. There was a partial implementation of a "unmount(2)" system call that was backed out. SunOS kept that system call. There is a kernel configuration file "files.sun". Guy Harris admitted on USENET in 1990 that SunOS ran on a VAX-11/750 and stated that Sun Microsystems had one of those minicomputers. I still don't know when they acquired it. There is a chance that the earliest SunOS development took place in the UCB CSRG before SMI got their own VAX-11/750.
@@freedosproject "Bill hung around the Labs" making 4.2BSD a reality while also helping himself to DoD time and materials to write his proprietary SunOS.
@@freedosproject There were holy wars fought over the best choice of editors to be used. Ed was primitive and time consuming when I first started using Unix back in 1985, then I discovered Vi, loved it. Then in 1986 GNU Emacs came along and thus began the holy wars over which was better. I tried learning Emacs and it felt too alien and not intuitive, which others strongly disagreed with. Those green screen CRTs brings back a lot of memories, first used printer terminals but they were strongly discouraged for use in programming because of the consumables cost. Then switched to VT100, and finally used Visual550s which was a larger screen and actually had a Textronics graphing mode for 2D plots! Made some amazing plots for physics assignments and could preview them on screen before sending the output to the wide carriage plotters down in computing services. A lot of memories of this era… used to program in f77 on the campus time-share Honeywell Multics mainframes, never fun when class assignments were due and typing a character sometimes took 30 seconds to come back and forget about Fortran compiling during peak times. The arrival of the first Sun-3 and 4 Unix workstations was a godsend! But only the profs with fat research grants could afford them…
I'm among some of the other young people here, I'm a first-year computer science major who's only had experience with programs and systems very abstracted away from the hardware. I feel like this video taught me a lot more about the much finer details of what a computer actually does with data like that and how much of that whole process you detailed has been automated by newer IDEs and word processors. Even if not every CS major is particularly interested in Linux/Unix, I think having some experience working with such raw, primitive programs would give them a much better idea of the work our newer computers really do and how they do it. As for me, I really enjoyed the video, I've been particularly interested in *nix operating systems for about a year now and have slowly been exploring our history with computers, operatong systems, and programming languages, and this video really taight me a lot about an area I've been wanting to learn more about. Thank you for your work!
I'm glad you liked it! 🤓 I think it's important for every CS student to have at least a basic understanding of how we got from "there" to "here" - that's why I did this video. You might also be interested in some of the articles in the "A Look Back" series that I write on Technically We Write: technically we write . com
On one hand you could do today this amount of work and much more in minutes with modern OSes, IDEs and even now, an AI assistant. On the other hand... Think about the gap between what they had before, even just a few years, and how much this toolset brought to the table... The productivity gain from this tech was incredible.
'ed' is so ingrained that I don't think I'd ever forget how to use it. It's like the original Wordstar key assignments: they'll be with me forever. It took me a while to switch to 'vi' when it became available, and for a long time, I found myself switching back to ed mode when I forgot the vi keys. 😁 There are times when I wonder if the 'modern ways' really are a step forward: it's rare that I don't have at least one or two terminal windows open.
I first read about C and Unix around 1982-1984, just before starting in highschool. There was a public technical library at the engineering school in the town, and I read dozens of books on Unix: tutorials and introductions, programming, Douglas Comer's book on Xinu (OS design), and many other classic books. I only touched a Unix machine once in 1985, a Cromemco machine with Cromix at a computer trade fair - I dared type ls on a terminal when nobody was watching. It would not be until 1990 at uni when I finally had proper access to Unix. By then, I had memorised enough from the books to feel at home immediately, and with ed bring easier to learn "by the book", that's what I used for a long time (for big files I would edit on a Mac with BBEdit using CAP AppleShare or FTP to move files. I'd also typically login with NCSA Telnet.)
Glad you like it! The original ed command make sense after you've used them for a bit. Funny too that you start to think a little differently, you build a sort of mental map of the file and where you are in it.
Next best thing to a time machine, thanks. I even caught myself thinking out loud: "use a ternary to reset line number to 1, saves 3 lines of code!". We were young then...
Thanks! I'm glad you liked it! I'm giving this as a conference talk in a few weeks. Also, I just posted a new video that's very similar to this, as a "history of tech writing" video. I know it's repeating some content from this video, but it's for a different article to celebrate National Day of Writing, so I wanted to record a shorter video just for that.
Nicely done. There are a number of "seminal" developments related to Unix in the 70s into early 80s: 1) Unix 6, PWB (Programmer's Work Bench), those usually come together. 2) BSD, the University of California, Berkeley Unix release. If I am not mistaken, that's where VI, the editor, developed by Bill Joy was first released (he later on co-founded Sun Micro Systems). 3). Televideo, the first $395 video terminal, which "democratized" Unix, as people no longer had to spend a bunch of money to buy VTs or teletypes. 4). John Lions of University of New South Wales, Australia's Unix 6 source code and commentary. Everybody that works on Unix those days carries a (pirated, likely illegal) Xerox copy of those. 5). Dr Bob McClure, Professor at University of Texas, Austin at the time, wrote the first C compiler outside of Bell Labs, on a non PDP machine. I believe it was on a Data General.
Yes, UC-B is where Bill Joy wrote vi. Brian Kernighan has a note about that in his book 'Unix: A History and a Memoir.' The short version is Bill was a grad student at the time, and was working on Unix, and sometimes visited Bell Labs. During a visit, he showed off this editor he was working on .. video terminals had replaced paper terminals, and he used cursor addressing to move the cursor around. Brian said it was nice but maybe Bill should focus on his PhD. Brian says that he cites this example when students ask for career advice.
Great demonstration of computing culture back then! I'm gläd that all this knowledge and all these tools and techniques are not forgotten and are still kept alive not only by the old-timers but by young enthusiasts also! Fascinating video, thanks a lot!
Was the C compiler at the time capable of dealing with types in function declarations? I would have thought your main function should have been written: int main(argv, argc) int argc; char **argv; { ... Likewise for the linenum() function.
I came here to say the same thing. The first c compilers I used couldn't cope with the ANSI style function prototypes as in his example. They were a huge improvement, and came at the same as much better type awareness in the compilers. I found a couple of potential nasty bugs in my existing code when I ported it to a machine with a more modern compiler.
Oops - good catch! I'll have to do it the K&R way when I do this "for real" as a conference talk. Here's a "K&R C" version of the "66 lines" program: #include linenum(in,out) FILE* in; FILE* out; { int ltr; int line; line = 1; fputs(" 1:", out); while ( (ltr = fgetc(in)) != EOF ) { fputc(ltr, out); if (ltr == ' ') { fprintf(out, "%2d:", ++line); if (line == 66) { line = 0; } } /* if ltr */ } /* while */ } main(argc,argv) int argc; char** argv; { int i; FILE* pfile; /* usage: linenum [files..] */ for (i = 1; i < argc; i++) { pfile = fopen(argv[i], "r"); if (pfile == NULL) { fputs("cannot open file: ", stderr); fputs(argv[i], stderr); fputc(' ', stderr); } else { linenum(pfile, stdout); fclose(pfile); } } if (argc == 1) { linenum(stdin,stdout); } return 0; }
This is a great history lesson from the computer world. The world of the past is difficult to understand for many modern users. (and I still prefer nano) Those green letters remind me of DOS world and green Hercules monitors. Maybe it's time for something like CP/M?
Two of my favorite subjects: history and computing, it's great! Thank you very much, more uploads of this kind please 🙂 EDIT: Unix related history especially.
Years ago, I did a project to control the generation of and interconnection to the utility for a paper mill. Wound upmwritib a lot of Groff stuff to generate some pretty fanc reports. Watching this brought back memories.
Glad you liked it! I found nroff and groff was really easy to use when I first learned it as an undergrad, and I still like writing some things in groff today.
I played along at home and typed out drop.f in ed. First time using ed and FORTRAN 😁 As a kid I started programming BASIC on my Dad's homemade TRS-80 clone (green screen and cassette tapes), so this felt nostalgic. Thank you for the video!
Thanks for this Jim! It really brought me back to the old days (I must say that using ED kinda gave me a headache.... or was it the Apple II screen flicker??) Anyway thanks again and keep 'em coming, loads of fun! .... allowed me to write my first FORTRAN program.... yay!
🤔I'm sure Apple II didnt have "ed". Back I. The day, I remember getting countless reminders that it was pronounced ee-dee, but DOS also had an Ed that everyone pronounced "ed", so that battle was pretty much lost.
One of my first assignments in my C/Assembly programming class in uni was to write an ed clone. Fun times. I'd like to see more videos demonstrating how the early Unix tools would have been used.
I wrote an article once about "how to check spelling the 'old school Unix' way, but it was easier to show with pipes. Without pipes, it would have been like this: tr 'A-Z' 'a-z' < test.me > tmp1 tr -d ',.:;()?!_' < tmp1 > tmp2 tr ' ' ' ' < tmp2 > tmp3 sort < tmp3 > tmp4 uniq < tmp4 > tmp5 comm -2 -3 tmp5 words ..and then you get a list of words that are likely misspelled. (For anyone who doesn't understand the commands: convert all text from the teset.me document to lowercase, remove special characters, translate spaces to newlines, sort the output, remove duplicate lines, compare the list to show only the lines that don't appear in the 'words' dictionary.) 'sort' is from Unix 1st Ed, 'uniq' is from Unix 3rd Ed, 'comm' and 'tr' appeared in Unix 4th Ed (1973). And by 3rd Ed, you had pipes anyway. In 1st and 2nd Ed, you would have written a simple program that de-duped lines from input (basically 'uniq'), a one-off program to turn a document into lowercase words one per line, and another one-off program that compared line-by-line input to a list of words and printed the "not found" lines: ./makewords < test.me > tmp3 sort < tmp3 > tmp4 ./dedupe < tmp4 > tmp5 ./nonwords < tmp5
@@freedosproject There's a great video about UNIX from the AT&T History channel in which Brian Kernighan shows how to use pipes to do a basic spellcheck. It's so funny to watch, A) because he looks so young, and B) because he has his feet up on the desk, keyboard in lap, casually showing the viewers features of UNIX that were revolutionary. There were some other, lesser known Bell Labs employees who also did a lot for UNIX, including Lorinda Cherry, John Mashey, etc. They deserve credit too, though of course Thompson and Ritchie really did the heavy lifting for UNIX.
ปีที่แล้ว
Amazing! Lots of memories watching this video. Please, more terminal sessions!
Will do! I'll try not to do too many, since I mostly cover FreeDOS things - but I think occasional videos about other retro computing is okay too.
ปีที่แล้ว
@@freedosproject I know that you mostly cover FreeDOS things, for that I appreciate it even more. I saw that you have a list of videos on "FreeDOS Programming" and I'm going to watch them. I really like the software development terminal session videos that explain how the development environment is built and the workflows used. Thank you very much for your content!
I agree! 🤩 I grew up with an Apple II (actually a clone of the II+ called the Franklin ACE 1000) back when we measured memory in a few kB. I sometimes teach a university course on the history of tech, and I try to share what that was like - and how amazing it was to experience a powerful command line operating system like Unix for the first time.
Thank you very much for making this interesting video. I started learning DEC Ultrix back in 1988 and we tested the ED editor. We moved fast over to the VI editor. Liked and subscribed. Please make more videos. I'll follow them.
I used Xenix (Microsoft and SCO) on the Intel 8086 and 80286 (1983-1986). By 1986, the 80386 was released and Microsoft walked away from Xenix and started OS/2 development with IBM.
Being a younger-generation programmer this was extremely fascinating. Also hats off to the programmers of that era. Using ed seems like such a chore that I don't think I would've had the patience to do anything productive on a computer.
It's interesting to experiment with ed. I use "visual" editors these days, but in playing with ed over the last few years, I find that my mind build a kind of "map" of what's in my file. I think differently about programming. And I now understand some early programming quirks that make more sense when you're editing with a line editor like ed. Unrelated to your comment, but: We don't have ed in FreeDOS, but we have something similar. Edlin is the original line editor for DOS systems. And Gregory wrote FreeDOS Edlin in a way that it's very portable - it even compiles on Linux. (I have it running on my Linux machine at home.)
Cool video... as someone who grew up with Linux and use bash all the time it's great to see the history and how it was in the earlier days. I'm now using cool retro term and Fortran programming using ed 👍👍
Really cool video. You don't get to see UNIX really get "used" these days. A lot of creators will demo it, but to see it used in a real-world scenario is really cool. UNIX can seem daunting for someone who's only ever used a GUI or more modern Linux with all the time-saving bells & whistles, but really it's pretty intuitive once you take the time to learn the syntax and theory of operation.
I grew up on the command line so the Unix command line feels comfortable to me. I first used Unix as an undergrad student in the early 1990s. If I wasn't in the computer lab, I'd dial in from my dorm room. And even though the Sun 3/50 workstations in the lab had graphics and ran X, we didn't have very many of them (maybe 8) and the CS students always got priority (I was a physics major, math minor). So I often had to use the Unix systems from a VT220 terminal.
@@freedosproject I work in networking and up until a couple of years ago I supported an IBM mainframe running a UNIX-derivative. It was always a joy to watch the old-timers move their way effortlessly through the system. Those same guys helped stand that mainframe up in the late 70s. You can imagine after almost 50 years on the same system they knew every corner, they could practically tell you what was wrong by smell. I first started using computers in the late 90s and had a fascination with linux which was pretty exciting at the time. Even still it feels a bit alien to me when I use it, I imagine becasue >99% of my computing time is spent on a GUI now.
@@freedosproject I grew up on the GUI but thanks to my natural talent and me being gifted with extraordinary intelligence I have become as one with the command line. All the power of the command line flows through my being and allows me to control any UNIX system as if it were but an extension of my body.
@@MontegaB Another place you can still see that kind of effortless navigating is airline agents at the airport. All the reservation systems still operate like they're terminals on mainframes since that's what they were developed as. Those agents just clicking away at the keyboard from memory pulling up passenger or flight information and keying in the changes is probably the last surviving use case of old school computing where the users aren't what computer nerds would consider technical background users
Thanks! That was definitely the use for FORTRAN - in fact, the name stands for FORmula TRANslation. It's all about making it easy to turn math into code. 🤓
I used Vim in cool-retro-term during my intro to programming classes, no fuss no muss. Can even run the compiler and test the executable without leaving vim. (Granted I had some prior vim experience) For larger assignments, I switched to kwrite text editor for its easy to customize built-in syntax-coloring; and a terminal emulator on the side to build and run. While all the kiddies struggled to setup IDEs in Windblows or even use purely online IDE/compilers, and they still had no clue what a compiler actually was. I really don't understand why the teacher didn't have 8GB+ flash drive on the required materials list and just make everyone use a live Linux.iso with persistence. (For those without a Linux machine.) I had already been on Linux full time for 12 years at that point, but looking at all the fuss and screwing around just to get setup on Windows really cured me of any lingering idea that Windows "just works".
I use different coding environments for different things-but for most of what I do, I use Vim. I know what I'm coding and how to code it, I usually don't need the help that an IDE provides. For very simple stuff, like demo programs or just some test/scratch program to try out an idea, I'll even use Edlin on FreeDOS or Ed on Linux. ☺
This was what it was like! We're lucky we didn't have to use front-panel switches to manually load the C compiler in assembly into memory on our PDP-11. I started programming in the 80s, and worked on a VT100, editing my Pascal code in ED. It wasn't UNIX though, but VAX/VMS. My first intro to UNIX was in 1985. We had greenscreen Datamedia terminals, and used vi or emax, running on a Sequent UNIX system. I wonder how many hours I spent in that comp/sci lab, writing silly programs, or emails to my friends.
In 1997/98 Motorola proprietary(pre DOCSIS) cable routers required using ed to manage the router config. Apparently vi was just too difficult to port lol.
I do love the command line. My Linux machine is running the GNOME desktop, but I usually have a terminal open to do command line things once in a while. I grew up with the command line, so I'm very comfortable there. 🤓
It really is! I use ed whenever I need to capture something quickly, especially if I need to write a quick 3-line script to process some data and I want to keep the previous output on my screen while I write the script. So easy to use ed(1) when I'm on ssh somewhere. Also, I use edlin on Linux sometimes. Gregory's FreeDOS Edlin compiles and runs fine on Linux. I should do a video about that… 😃
Nice presentation Jim. Speaking of Unix, I believe I've read somewhere that FreeDOS supports the AVAILDEV and SWITCHAR options in CONFIG.SYS, which are the options that allow (MS-)DOS operating systems to function more like Unix with paths and parameter switches. Could these be covered in a future video?
the transition from line editing to full screen text editing is interesting subject - and when and where was the first full screen mode word processor? Did that happen first on late 70s CP/M systems ala something like Wordstar? Or does Xerox get credit for that with their GUI worstation perhaps?
@@TheSulross I tried to trace the history of word processors sometime last year as a side project, and "word processor" is hard to define clearly. My *personal* definition of "word processor" is a full screen program that supports basic page and text formatting (minimally: top/bottom and left/right page margins, line wrap, bold, italics, underline) and shows your text on screen how it will appear on paper. I'll allow that character mode can't display all text formatting, so it's okay to use colors (say, bright white for bold, cyan for italics, green for underline, ..) but otherwise the same. And a lot of older word processors don't meet that - you needed to type special codes (sometimes similar to nroff, sometimes not - depending) within the body of the text. That's not really "as it will appear on paper." So what's the oldest "word processor" according to that definition? I haven't figured it out. 🤔
@@freedosproject But you know, that approach of mixing formatting codes with the text content is all back in favor again. Any thing I document that needs to be dressed up a bit beyond plain text I write in Markdown using an editor specifically for that. It's a bit of a hybrid way to work because even in the working text representation it will, say, have bold faced text and the Markdown embedded codes for bolding that text, and then over in the preview pane it will show how it looks when rendered for final output display. Because of github Markdown has seen a dramatic uptake, and its great. It's expressive enough for most things and suites the non-paginated way most documentation gets seen these days. Okay, well, wish table of contents and footnotes were bit more officially incorporated, and so there are different variations of Markdown with extra features. So it's got some standardization problems. Just to say, though, that when you hang around in computing long enough you see things that are in style, then go out of style, and maybe decades later come back into style again.
It's all well before my time, but someone who was around at the time will probably berate you for using ANSI C function definitions in that C rather than classic K&R style....
Someone else pointed that out too. Good catch - I missed using K&R style in the video. I'll have to remember that when I do this as a live conference talk. ☺
One good thing about ed editor is that you can learn sed command syntax and Vi ex mode commands and regular expression syntax. The original Unix (Unix V7, System V, BSD4.3 etc) used K&R C compiler. Argument types in the function argument list is ANSI C style. K&R compiler used in original Unix did not support such ANSI-C style argument list.
Amazing. Thank you. Yes I want to see more videos like this. I love the idea of using CRT for display purposes rather than a bog-standard terminal emulator. Tip for the next one: In the "Effects" menu of CRT you can reduce the "Screen Curvature" to zero to get rid of this distortion that makes it hard for you to align text columns, in the "Main" menu the value of Margin and Frame Size could be increased to centre up the contents, and in the "Terminal" menu by playing around with the Scaling and Font Width sliders you should be able to get 80x25 or 80x24 character display. It does however end up looking a little bit "stretched" since these old glass teletypes weren't 16:9.
Since recording this video, I switched to the 'default pixelated' theme, which fills my screen at 80x24 when maximized (and 80x25 if I go 'fullscreen' mode). It works very well. I had to turn off the static noise though. ☺
@@freedosproject Can your screen recorder catch a single window? You could just grab a corner and makit any dimension. I used vokoscreenNG to capture single windows within Xfce on Debian, it catches all of the C.R.T. noise. (Although the random snow makes compression difficult and greatly increases files size)
I'm actually recording a window window here. I'm using Cool Retro Term as full screen with the "Apple II" theme. That's what gives the CRT noise effect. Using Cool Retro Term was a neat idea, but it proved distracting in the comments. So I didn't use the "noise" effect when I gave the actual conference demo.
@@freedosproject C.R.T would not be stretched by the 9:16 display screen if you didn't maximize the window. That is the half of the point of recording a single window rather than recording the full screen. I only mentioned the static-noise as it impacts most codec's ability to compress the video file and can cause a lot of compression artifacts with greater compression ratios. I use a similar amount of effects with an Amber theme but I turn off the static-snow if I want to record.
True, I missed that when I did this video. Although I recently learned modern GCC doesn't support original "K&R" C syntax anyway - I recently wrote an article to "update" this retro Unix experience, and that's when I discovered GCC refuses to compile K&R C syntax now. Not sure when that happened.
I still have printer paper in the attic that is full of my ed sessions in 1980, we didn’t have a monitor as it was too expensive! Probably one of those accountant decisions where the CapEx was the only thing that mattered, my time waiting for the terminal to print and the cost of the paper weren’t considered - no wonder it took two of us a year to write 4k of assembler! (Having to fit all the code into a 4k ROM didn’t help.)
Strictly speaking, not ed but "The Editor" which was a clone written for the RCA1802 processor in the COSMAC Development System worldradiohistory.com/hd2/IDX-UK/Technology/Technology-Modern/Archive-Elektor-IDX/IDX/00s/Elektor-2011-12-OCR-Page-0076.pdf Nothing as sophisticated as UNIX, there was no OS at all - the editor was "Disc 0: Track 00" (you literally typed 000 Enter to run it) and the assembler was "Disc 0: Track 02". Similarly for the source files, "Disc 1: Track 00" etc. If you added too much to a file when you saved it it would simply carry on to the next track overwriting whatever was there so it was best to leave a blank track between files: 00, 02, 04 etc!
it's just a unix terminal where the names of the executables have been changed to make more scene. I worked on it with the old SCO Unix and also with subsequent versions and it wasn't complicated at all, more or less like msdos, it had "case sensitivity" on its side and if you had to run a program if it wasn't in the search path you had to to specify ./
Awesome look into the past and showcase for ed! I'll be back for more if there will be :) You seem to have missed the square for t in the simplified equation, though, so there's a potential part 2 :P
@@freedosproject In a way why we do free software is, because we know there are always some mistakes that slip in, but we're not alone, isn't it? ;) Thanks for all your work on FreeDOS, you guys rock!
I used to own a copy of System III. Was on a terminal used to control a mainframe. Huge tower with large format motherboard with a bunch of daughter cards.
That's great! 😃 The first Unix system I used was on a Sun 3/50 running SunOS (version 3? or was it version 4 by then?). My first job used a mix of Unix systems, including SunOS, HP-UX, and Apollo DomainOS/AEGIS (which provided both BSD and System V) … until I replaced some of the older systems with Linux.
wow, it's like being in some computer lab back in the 70s 🤓 funny how as ancient as people see vi/vim these days, back then it was state of the art, and when it comes to just writing a plain old C program even ed isn't too hard to use once you learn the basics
It's kind of cool to use ed(1) sometimes. I will use ed when I need to write something quick, like a 2-line Bash script to automate something. Typical example: I might run some commands with pipes to solve some problem, make sure it works, then start a new file in ed to type in my commands there (while I can still see the output of the previous command on my screen). It's very nice for that.
Slackware Linux is the most Unix-like Linux. It's also the simplest, most UNmodified Linux distribution, and therefore the fastest and most secure. It's also the oldest living Linux distribution (six months older than Debian). Back in the day, they used to say, "If you want to learn Red Hat, get Red Hat; if you want to learn Debian, get Debian; if you want to learn Linux, get Slackware.
I used AIX at my second-ever job. I was a "working manager" so I managed the small IT team and did sysadmin on the AIX system and HPUX system. I also installed Linux there for some back-end support stuff, to make things easier to run.
It must have been around 1982 when I first got exposed to SunOS 4 at the university. As a professional systems administrator I got exposed to Sun Solaris, Data General DG/UX, MV/UX, IBM AIX, HP/UX, and much later to SuSE Linux, RedHat Linux, etc. Because I was brought up with old time Unix'es, and because I never knew what toolset would be available on the next server, I stuck with the old-fashioned tools like Bourne Shell, awk, , sed, ls, find, grep, and vi, and did not use any of the GNU features. It is only these last two years that I have finally embraced GNU/Linux and started using Bash, vim, less, and all the other goodies that comes with the current GNU/Linux releases.
Same for me, but a few years later. My first job was managing Apollo, Sun, and HP - and I added Linux. My second job had HP and AIX - plus Linux. My third job was also a mix. I didn't learn the GNU additions until much later, after I no longer was a sysadmin, no longer had to worry about "will my scripts run everywhere?"
Those OS could do so much so early I'm impressed. Text-based input is a very powerful UI
My first experience with Unix was minix in 1990. Before that I was a TOS and DOS guy - always disliked DOS. I was immediate sold to the basic Unix philosophy of “everything is a file”. I find that Linux unfortunately is slowly moving away from that paradigm.
I started Linux in 1995, at the same time I had an Indy with Irix. Irix is a nice clean SystemV Unix. Then in 1997 I got a written off, microPDP11 from my work. I put SystemIII on it. Was quiet an ordeal so early in the time of the internet (not a lot of downloads available). Then I did Tru64/TruCluster (the best ever Unix!), AIX, HP-UX and SunOS and Solaris. Those days of the mid 90s to the early 00s were magical for Unix. Because the internet started to happen and that was what Unix excelled on. Great standard development tools, good networking stack, lightweight. Man… miss these days.
@@CallousCoder The only proper UNIX I've ever used was Sun Microsystems' Solaris. I think Sun made some amazing products. I have a little bit of Linux experience, but I prefer FreeBSD to Linux in most cases. I agree the late 90s to early 00s was peak for Linux (as well as UNIX) and whatever Linux is these days pales in comparison to that era. I miss those days too man...what an exciting time it was!
@@toonz9971 then you haven’t used Irix or Tru64. Full SystemV systems and DEC Tru64 with its Alpha blew everything out of the water with its speed. And then adding TruCluster to the mix made a 24x7 Unix you could migrate a running process to another node, not even the socket was disconnected just a little “hiccup as it moved across the memory channel”. And you could just patch the code or the OS. It was marvelous! And their SpecFp was a long-standing record. When Sun and SGI were doing 200MHz on 32 bits we were pushing 700MHz with full 64 bit. My jaw dropped back in 1995 when we gotten two GS140s with TruCluster for our 24x7 available database and fluid sim calculation. Me colleague who made the fluid sim code was like… how many CPUs 14? Oh… I think I will do my first ever parallel programming 😀And me well technically 28 but then you may want to fork a second instance.
I did btw love Solaris 10 on Intel! I used the shit out of containers and zfs! I immediate realized containers solved our development system problems. As well zfs, snapshot the database run your integration tests rollback snapshot. New container for your feature, there you go! Have fun! It was amazing! We had lpar on AIX but this was better.
Now Docker took its place.
My first Unix was SunOS 4.1.x in our campus computer lab in the early 1990s. SunOS was the precursor to Solaris. (Technically, SunOS 4.1.1 was also "Solaris" but it wouldn't be branded as "Solaris" until a little later than that - we ran SunOS at my first job, and Solaris at my second job.)
I'll always have fond memories of running SunOS and Solaris. We had Sun 3/50 diskless workstations on campus, but I loved the SPARCstation "pizzabox" (S4? S5?) at my first job.
Glad you liked it! I always have a terminal window running on my Linux machine at home, even though I run GNOME as my desktop and run GUI apps. The terminal offers a very flexible and powerful command line.
I barely used ed a few times when I was in college, so it's nice to see a non-trivial intro to using it. Thanks for making this.
Glad you like it! I wrote an article about the experiment of using Linux like original Unix, but "screenshots" in an article doesn't show the experience quite like a video.
I don't usually use ed for big projects - but when I could only use ed for this experiment, I found I quickly adapted to using it. While working on larger editing projects (I wrote several nontrivial programs and documents that I didn't show in the video) using ed became second nature. It's just a different way of thinking when I edit. 👍
If you use sed, you're using ed commands.
Fast forward to 2023 and still no good non-interactive editor
@@OrmaajPerhaps that is because very few people would even want one.
@jnharton Non-interactive editors are useful. One of the options for the diff command (I think it's -e) makes it generate a script of ed commands to turn one file into another. This was then used to build the first version of SCCS, which later led to RCS, CVS, Git, Fossil, etc.
I'm a 2004 kid and I started coding with a full blown IDE and Java as a kid, this is so cool to see and while ill probably never end up using fortran or unix os seeing the history of terminals and an editor predating even vim and vi is beyond cool.
If you can try a bit of FORTRAN, go for it. Just play with some non-trivial maths problems, and you'll be surprised at the ease it affords.
I firmly believe that *all* programmers should have at least had a look at one of the early languages… it gives you an insight into how far we've come and helps you to appreciate what the modern high-level language takes care of for you.
I agree! I also started a FORTRAN 77 programming series on this channel. I've done one video so far, the next one will be this weekend.
You will use UNIX, every time you use a POSIX standard OS or a Linux distro. Many things change, but the core remains eternal
I was in the fourth grade when you were born, neat.
Modern Fortran has not been column based since the spelling stopped being in all caps (in the 80s) and it dominated HPC until just the last decade when C++ has started to overtake it. These language choices are partly due to speed/efficiency but it also has a lot to do with the availible proven debugged math libraries, no sense spending a week and $100k of electricity on a scientific calculation just to be slightly uncertain of the accuracy. The fixed-column thing was a direct artifact of punched-paper programming.
Java is OK for portable widget apps that are distributed to run on many operating systems, but Java was in decline until Android came along and gave it some customers.
Any language that is interpreted or JIT optimized at runtime, or even just garbage collected, is no good for applications like industrial machines, healthcare, music recording, and other real-time tasks that need deterministic behavior. (Real-time doesn't mean fast, it means the actual physical wall clock latency must be bounded with guarantees of worst case maximums and minimums.) Eg some fool at Boeing tried to use Java in a new landing gear control unit and during bench testing it would just fail to extend a few percent of the time; the reason was the JVM doing some "helpful" housekeeping thing in the background would block reception of the interupt signal. The C-17 engine contol unit on the other hand has mathmatical proofs of worst case behavior (This took several years though, it is proof of the whole hardware and software stack combined.)
Simpler hardware generally helps a lot in this regard, eg an little AVR arduino can handle control of more stepper motors more accurately than an i9 desktop. The i9 has a latency variation of 150µS even after disabling hyperthreading and using a hard real-time operating system.
Then you add the uncertainty of PCIe based I/O and such. This is why the 80386 remained in production through 2007 despite being of no use for new desktops after about 1993 and long after the 80486 went away. 386 was the last predictable x86 design. Newer x86 CPUs have out of order execution pipelining, branch prediction, cache effects, register renaming and so on and so forth. Even though you might know it takes 5 cycles to do a multiply on a modern CPU you can't know when it will get its timeslice or when it will flush to output.
us old computer folks still have these commands in our muscle memory.
most unix boomers use freebsd anyways
This was very fascinating. I can not imagine how many people must have written their own version of awk back then. Everyone must have had their own set of helper programs, I imagine. Thank you for sharing.
Pretty much, yes. Awk (1977) made it easy to write scripts to do lots of useful tasks that you'd otherwise need to write a one-off program. Sed was useful for simple mass edits, grep was excellent for one-line patterns. Awk made it easy to do things like "If *this* line in the log file says 'Error' then print the next few lines (line count might vary) until you see some end-marker." That's easy to do in awk, not possible in grep.
hi! just to confirm, u can print a predefined number of "context" lines with grep too right? the -B or -A flags.
> _"[untill end-marker] That's easy to do in awk, not possible in grep."_
What a great future world you must come from! ☺ The "grep" command was added in Unix 4th Edition in November 1973 - so it wasn't available in the Unix 3rd Edition I'm showing here. And no, grep didn't support context lines in 4th Edition .. it was one line of output per match. (Basically the same as the g/re/p command in the ed editor.) I'm not sure when Unix grep supported context lines, or if that was a GNU extension.
And the example I mentioned in my above comment was meant to suggest a variable number of lines .. like a multi-line error message that might end with some "end error" message on its own line (typical in some large environments I've used). That's easy to write as an awk program (if line matches, then doprint=1 .. print if doprint==1 .. if we find the "end error" message, then doprint=0).
This video was so cool, I'm particularly impressed by ed's capabilities.
It has a far ranging legacy, with descendants like ex, vi, sed, grep and perl. The ex language is still there in neovim, although they removed ex mode to avoid confusion.
And you can "script" ed by doing something like this:
ed
ed is pretty cool. I don't use it all the time, but I do use it occasionally when I need it. Good tool to have. And if you're like me, just to play around in sometimes.
@@freedosproject Still can, though your example is more of a sed -i job. Another relation is that diff can output ed scripts.
@@freedosproject I've just never seen it behave so well and fast, I've thought ed was a slow, grinding editor, but it's actually pretty elegant! I'll definetly try it more, I even played with it for a while after watching your video. Cheers!
This video was fantastic. I've been using Unix for decades and admittedly I've gotten used to all the modern tools but there's a certain fondness for doing some things manually. Kudos to you, sir and keep the videos coming.
Glad it was helpful!
The first time I used a PDP-11 the Telex terminal had an accoustic coupler built in and I'd use it to dial the computer at our local university. Thank heavens, the computer room housing the PDP-11 had air conditioning so loud you couldn't hear the rattle and klankk of the Telex! Unix wasn't on that particular unit, we used RSTS/E, but I kind of recall that Unix was the OS at first but was changed for some reason. The memory is foggy - it was almost 50 years ago and I was barely 12.
I never used a Teletype or Telex terminal as a terminal, but the physics department in my undergrad years (I was a physics student) had a Teletype terminal set up as a printer in the mini computer "lab" (a tiny room with two VT terminals, plus a pen plotter, plus the Teletype "printer").
Wow, that brings back some memories! I was in junior high school when UNIX came out, and was unaware it existed, outside what the "Popular" magazines may have said about it. In college I got to use my university's VAX system running some iteration of SysV UNIX, over 19200 bps serial lines. In the basement of our dorm there were rows and rows of Wyse (IIRC) terminals that were available around the clock. Getting a hard copy to turn to the TA required a walk to the computer room during business hours. When I logged off, it showed how much CPU time I had used. There was no limit on that, but in CS101 we got a very small number of disk blocks to do our homework on.
A few years later, I was working at a different university, and was given an account on a UNIX machine. This time it was a Sun SPARCstation 20 running Solaris, with a lot of GNU utilities added to it. When I stood up my first Linux box, those GNU programs were familiar, and notably absent on bone stock Solaris machines. Had I known that Linux would take over so quickly, and dominate so many things, I might have paid a bit more attention!
Sounds like we are about the same age. When I was an undergrad (early 1990s) we had terminals around campus. I think they were VT52 or VT100 .. maybe both, depending on the building? I used those a lot between classes to check email or write papers. I discovered Linux🐧 in 1993, and installed it (dual boot with DOS) on my computer at home. Check out my other video about how I wrote papers using nroff - if I didn't want to reboot into DOS, I could use nroff to write my papers and print from my dot matrix printer in my dorm room, or the (free) dot matrix printer in the computer lab.
@@freedosproject I'm a bit older, if I had gone straight to college, I would have graduated in the early '80s. I had a couple friends who were into computers, including one who took home a VAX while working for the phone company. So I knew a little, but not much. Electrical engineering was my major, and I was the only one in my class who wasn't planning on doing digital and/or ICs. Back then, I thought that home computers were a novelty, but not that useful. Networking really changed that.
I discovered Linux while working for another university in 1995. MS-DOS / Windows 3.11 was the standard OS, but I discovered that I could dual boot into Linux and access the files on my work computer from home. (Most network cards at the university had public IP addresses back then.) I never used nroff myself. Back then I was a big fan of plain text. I used my free class audit privelege to learn C programming, and instead of turning in my assignments on fanfold paper from the line printers, I turned in fanfold from my MX-80 hooked up to my home computer running Linux.
@@StringerNews1 Loved the Epson MX-80 dot matrix printer! We had one in the 1980s and it was a workhorse. Printed out countless code listings and class papers, and just never broke down.
@@freedosproject and when I installed OS/2 Warp on the same computer, it revealed a near-letter quality mode that was a lot more readable.
All seasoned Unix sysadmins of the latter 1980s and into the 1990s knew that the first thing you did when setting up a new box was to download and install the GNU utilities.
This was a great demonstration, thank you for putting this together
Glad you enjoyed it! This was a fun video to do. 👍
I could watch this all day. Thanks! Keep up the great work.
Glad you enjoy it!
There is a nice interview and discussion on roff / nroff development
And I recently interviewed Brian Kernighan about it for Technically We Write:
technicallywewrite.com/2023/06/01/groff
The first iterations of Unix were a bit before my time. However, when I was about 10 or 11 (circa 1993/94), I found a DEC VT100 at a yard sale (pretty sure that's where it came from). I used it with a 9600 baud modem to connect to some BBSs. I thought I was pretty hot stuff at the time lol
A friend of mine was born mid-March 1970, and he claims to share his b'day with Unix! 🙄 I don't think an exact date has ever been pinned down, but could be I suppose.🤷♂️
@@squirlmy Well, either way, I hope we can agree that Unix existed before 1993, when I first used a VT100 terminal, which would have been used early on in Unix history...
We actually connected veterinarians using dial up and a terminal to their central system. It was the most affordable way.
We had VT100's on campus - they got rid of them after I graduated. If I knew then what I know how - how "retro" cool they were - I would have found the space to keep one when the campus CS department gave them away for free.
Definitely this. I remember using top on a 9600 vt100-clone and you could clearly see the cursor flying around... I remember that more than the stereotypical "long phosphor" that things like Cool Retro Term lean heavily on. I can't figure out how you would limit the speed of a vty without an actual serial cable though. Cathode on the mac does have this option, from memory.
The terminal effect brought back many memories I had forgotten about. Thank you for the time travel tour!
Glad you enjoyed it!
Amazing little CS class! looking forward to see more like these Jim, It would really help the new and old generations maintain fresh knowledge of these legendary tools of trade.
Thanks! Glad you liked it. 😃 Most of the videos are FreeDOS or FreeDOS-related, but I like doing videos like this every once in a while.
Ed is the standard text editor.
😎
Indeed! In Version 6 Unix, the DESCRIPTION section of `man ed` starts with this exact sentence: “Ed is the standard text editor.”
This was a nice little bit of digital archaeology. I especially love that you pronounced char correctly, as it is short for character. Are we going to see a video series on you writing some program like a text editor or a compiler for your own programming language now? Maybe a new version of edit that has syntax highlighting. That would be awesome.
Glad you enjoyed it!
We need the Czar, we need the Czar
Wait, you mean a Char for the Structure?
No, man, the Czar is dead, long live the Czar.
(From digital archeology from a Fortran, BCPL manual, late 70s. Not from me).
History and extra additional context, give you passion and motivation than any other method.
Beautiful!! lean, lightweight, simple. no mouse pushing
Glad you liked it! ☺
No IDE, no vim, a primitive text editor...and no compiling errors! Never seen one shot code that worked out of the gate. What you guys accomplished with such simple tools is amazing. Though I'm sure y'all felt the same way about the people working on pre assemblers with machine code.
Thank you for the peek into what it was like to work on an early UNIX terminal. Friday night well spent.
Glad you liked it! Using Linux at the command line like this (and using ed) is really fun, and it's an interesting experiment. When I did this experiment (to use Linux like original Unix) I lived at the terminal. I just maximized it on my system, and did everything there. [Technically I cheated .. I had my work email up on my other monitor, so I can keep an eye out for client emails.] When you write nontrivial programs using ed, your brain starts to work differently. You build a kind of mental map in your head, and you can navigate pretty easily using ed. I became quite comfortable with ed - and I sometimes still use ed if I need to write something quick .. like make a script out of hte commands I just ran.
It's interesting to see how commands in vi/vim got their start in Ed, like 'i' and 'a' for insert/append, '$' for 'to-end-of-line', etc.
vi = Visual editor, Improved.
it still has an ed mode.
@@pauldwalker Technically, vi actually stands for the "visual" [mode] in Ex (not Ed). It was a shortcut for launching Ex directly into visual mode instead of line mode. Then we got "Vim" (vi improved) several years later.
@@mkd1964 i’m getting old. i could have looked it up but went with my creative interpretation instead.
@@pauldwalker You're not the only one. I thought it was feature of Ed as well, until someone recently reminded me in a different video. 🙂
So grateful things got easier to do (I worked on these systems in high school then in engineering school back in 1984). They still had a few teletypes at the University and would spit out a small "book" of errors when something went wrong, then we'd get charged for the paper (a big motivator to test your code on paper thoroughly, before typing it in - I recall typing code into one terminal, running the compiler, saving to an 8in floppy, then handing the floppy over to a system operator, who would insert it into another machine to actually run the program)
This takes me right back to my early days of my computer career. I started using a PDP 11/34 where I learned the basics of Fortran programming. It wasn't later until the 1990s when I entered the world of IT as a computer operator and eventually met my favourite operating system - Solaris 2.6 ...ah the nostalgia. Now some near 40 years later I'm working with various flavours of Linux and haven't touched Unix since 2009.
As I see it, the most important thing that kernels have now that was missing from Fifth-edition Unix was support for networking.
I'm so glad that I'm about thirty years late to this party and can just enjoy the wonderful desert that has come from people typing code like this (also makes it very understandable why it's near impossible to find anyone to maintain such systems).
:w!
You never know. I'm actually so glad that I came to the party over 30 years ago, and got to mess around with lower-level stuff. In a way, it makes you more appreciative of the tools we have now, and also know their limits. ✌
I love computer history and I found this post extremely enjoyable! thanks dude.
Glad you enjoyed it!
Awesome video. History can add so much context to computing and can help give a deeper understanding of why things are the way they are and why they are done a certain way. The days of elegant and long lasting solutions that squeezed every last bit of use out of the equipment have almost gone now and whilst I'm glad that computing has come so far, simplistic elegance and endurance have been replaced by superficiality and complexity.
P.S. At 28.04 you missed out the ^2 for the equation x(t) = 1/2at^2
Love this, masterclass in ed, the standard editor. Thank you!
You're very welcome! Since doing this video, I sometimes use ed (and FreeDOS edlin) unironically to edit files. Usually if I just need to make a quick edit to a file, or if I run several commands and realize "that should be a script" .. I can do ed and edit my file while I can still see the previous commands I typed.
When I was in high school in the early 80's in the Albuquerque school system at the Career Enrichment Center they had a DEC System 10 and a bunch of TTYs and a single VT100 terminal. You had to get into the room early or be very lucky to get to use the VT100 instead of the TTYs where you would waste reams of paper. DEC was building the VT100 in Albuquerque at the time. The VT100 also supported 132 columns by 14 lines.
This reminded me of my first week of University in 1985 where we were introduced to Berkley BSD 4.2. The professor had us writing programs in ed. After a day or two we switched to vim when one the students discovered the more modern full screen interactive editor and the word spread. We had rooms of terminals like this and few had early graphical windowed workstations from the local Whitechapel company. There was also a few colour graphics terminals that had a build it mode to do coloured text in the terminal with letters, punctuation and numbers in different colours like primitive syntax highlighter. Around that time I had my first digital photo taken and it was saved to a 10.5-inch magnetic tape to be able to transfer it to my home directory.
Very cool! 😃 Brian has a great story about Bill Joy writing vi, in his book 'Unix: A History and a Memoir.' Short version: Bill hung around the Labs when he was a grad student and showed off this new editor he was working on. Brian told Bill that he should focus on his degree, not the editor. Brian comments in the book that maybe he shouldn't give career advice. 🤣
@@freedosprojectexamination of 4.1c source code especially from the 4.1c.1 directory tree on the CSRG ISO shows traces of early SunOS. There was a partial implementation of a "unmount(2)" system call that was backed out. SunOS kept that system call. There is a kernel configuration file "files.sun". Guy Harris admitted on USENET in 1990 that SunOS ran on a VAX-11/750 and stated that Sun Microsystems had one of those minicomputers. I still don't know when they acquired it. There is a chance that the earliest SunOS development took place in the UCB CSRG before SMI got their own VAX-11/750.
@@freedosproject "Bill hung around the Labs" making 4.2BSD a reality while also helping himself to DoD time and materials to write his proprietary SunOS.
@@freedosproject There were holy wars fought over the best choice of editors to be used.
Ed was primitive and time consuming when I first started using Unix back in 1985, then I discovered Vi, loved it.
Then in 1986 GNU Emacs came along and thus began the holy wars over which was better.
I tried learning Emacs and it felt too alien and not intuitive, which others strongly disagreed with.
Those green screen CRTs brings back a lot of memories, first used printer terminals but they were strongly discouraged for use in programming because of the consumables cost.
Then switched to VT100, and finally used Visual550s which was a larger screen and actually had a Textronics graphing mode for 2D plots! Made some amazing plots for physics assignments and could preview them on screen before sending the output to the wide carriage plotters down in computing services.
A lot of memories of this era… used to program in f77 on the campus time-share Honeywell Multics mainframes, never fun when class assignments were due and typing a character sometimes took 30 seconds to come back and forget about Fortran compiling during peak times.
The arrival of the first Sun-3 and 4 Unix workstations was a godsend! But only the profs with fat research grants could afford them…
I remember these good old days. Thank you nice post!
From Japan.
Glad you enjoyed it!
Such a cozy video for a linux / unix fan
Glad you liked it! 🐧
That took me down sone memory lanes. I wasn’t using Unix in the 70s but I was in the 80s. Saying “50 years ago” makes me feel very old!
😅 You're welcome!
I'm among some of the other young people here, I'm a first-year computer science major who's only had experience with programs and systems very abstracted away from the hardware. I feel like this video taught me a lot more about the much finer details of what a computer actually does with data like that and how much of that whole process you detailed has been automated by newer IDEs and word processors. Even if not every CS major is particularly interested in Linux/Unix, I think having some experience working with such raw, primitive programs would give them a much better idea of the work our newer computers really do and how they do it. As for me, I really enjoyed the video, I've been particularly interested in *nix operating systems for about a year now and have slowly been exploring our history with computers, operatong systems, and programming languages, and this video really taight me a lot about an area I've been wanting to learn more about. Thank you for your work!
I'm glad you liked it! 🤓 I think it's important for every CS student to have at least a basic understanding of how we got from "there" to "here" - that's why I did this video. You might also be interested in some of the articles in the "A Look Back" series that I write on Technically We Write:
technically we write . com
On one hand you could do today this amount of work and much more in minutes with modern OSes, IDEs and even now, an AI assistant. On the other hand... Think about the gap between what they had before, even just a few years, and how much this toolset brought to the table... The productivity gain from this tech was incredible.
I really can't get enough of retro/vintage computers.
Thanks! I try to keep the channel focused on FreeDOS, but sometimes I like to show Linux/Unix history too. ☺
'ed' is so ingrained that I don't think I'd ever forget how to use it. It's like the original Wordstar key assignments: they'll be with me forever.
It took me a while to switch to 'vi' when it became available, and for a long time, I found myself switching back to ed mode when I forgot the vi keys. 😁
There are times when I wonder if the 'modern ways' really are a step forward: it's rare that I don't have at least one or two terminal windows open.
Now that’s an old one! I’m not even sure I know how work that right.
I first read about C and Unix around 1982-1984, just before starting in highschool. There was a public technical library at the engineering school in the town, and I read dozens of books on Unix: tutorials and introductions, programming, Douglas Comer's book on Xinu (OS design), and many other classic books. I only touched a Unix machine once in 1985, a Cromemco machine with Cromix at a computer trade fair - I dared type ls on a terminal when nobody was watching. It would not be until 1990 at uni when I finally had proper access to Unix. By then, I had memorised enough from the books to feel at home immediately, and with ed bring easier to learn "by the book", that's what I used for a long time (for big files I would edit on a Mac with BBEdit using CAP AppleShare or FTP to move files. I'd also typically login with NCSA Telnet.)
Wow , just wow . Love this history
Glad you like it!
Your explanation make the cryptic ancient editor looks easy .. very good tutorial.
Glad you like it! The original ed command make sense after you've used them for a bit. Funny too that you start to think a little differently, you build a sort of mental map of the file and where you are in it.
Next best thing to a time machine, thanks. I even caught myself thinking out loud: "use a ternary to reset line number to 1, saves 3 lines of code!". We were young then...
Thanks! I'm glad you liked it! I'm giving this as a conference talk in a few weeks. Also, I just posted a new video that's very similar to this, as a "history of tech writing" video. I know it's repeating some content from this video, but it's for a different article to celebrate National Day of Writing, so I wanted to record a shorter video just for that.
Nicely done. There are a number of "seminal" developments related to Unix in the 70s into early 80s: 1) Unix 6, PWB (Programmer's Work Bench), those usually come together. 2) BSD, the University of California, Berkeley Unix release. If I am not mistaken, that's where VI, the editor, developed by Bill Joy was first released (he later on co-founded Sun Micro Systems). 3). Televideo, the first $395 video terminal, which "democratized" Unix, as people no longer had to spend a bunch of money to buy VTs or teletypes. 4). John Lions of University of New South Wales, Australia's Unix 6 source code and commentary. Everybody that works on Unix those days carries a (pirated, likely illegal) Xerox copy of those. 5). Dr Bob McClure, Professor at University of Texas, Austin at the time, wrote the first C compiler outside of Bell Labs, on a non PDP machine. I believe it was on a Data General.
Yes, UC-B is where Bill Joy wrote vi. Brian Kernighan has a note about that in his book 'Unix: A History and a Memoir.' The short version is Bill was a grad student at the time, and was working on Unix, and sometimes visited Bell Labs. During a visit, he showed off this editor he was working on .. video terminals had replaced paper terminals, and he used cursor addressing to move the cursor around. Brian said it was nice but maybe Bill should focus on his PhD. Brian says that he cites this example when students ask for career advice.
makes me appreciate what we have now
Great demonstration of computing culture back then! I'm gläd that all this knowledge and all these tools and techniques are not forgotten and are still kept alive not only by the old-timers but by young enthusiasts also! Fascinating video, thanks a lot!
Thank you very much!
Was the C compiler at the time capable of dealing with types in function declarations?
I would have thought your main function should have been written:
int
main(argv, argc)
int argc;
char **argv;
{
...
Likewise for the linenum() function.
No it wasn’t yet. I had to look up my first edition C book by Kernighan and it wasn’t no.
I came here to say the same thing. The first c compilers I used couldn't cope with the ANSI style function prototypes as in his example.
They were a huge improvement, and came at the same as much better type awareness in the compilers. I found a couple of potential nasty bugs in my existing code when I ported it to a machine with a more modern compiler.
Oops - good catch! I'll have to do it the K&R way when I do this "for real" as a conference talk. Here's a "K&R C" version of the "66 lines" program:
#include
linenum(in,out)
FILE* in;
FILE* out;
{
int ltr;
int line;
line = 1;
fputs(" 1:", out);
while ( (ltr = fgetc(in)) != EOF ) {
fputc(ltr, out);
if (ltr == '
') {
fprintf(out, "%2d:", ++line);
if (line == 66) {
line = 0;
}
} /* if ltr */
} /* while */
}
main(argc,argv)
int argc;
char** argv;
{
int i;
FILE* pfile;
/* usage: linenum [files..] */
for (i = 1; i < argc; i++) {
pfile = fopen(argv[i], "r");
if (pfile == NULL) {
fputs("cannot open file: ", stderr);
fputs(argv[i], stderr);
fputc('
', stderr);
}
else {
linenum(pfile, stdout);
fclose(pfile);
}
}
if (argc == 1) {
linenum(stdin,stdout);
}
return 0;
}
int argc is the default, so you don't have to say it. Also, argc comes first.
@@b43xoit As far as I have always seen on Unix and Windows, is that you always have to define the integer. It will not assign it implicitly.
Awesome presentation, would like to have more please
Thanks! I'll try to share presentations like this whenever I speak on a new topic at conferences.
This is a great history lesson from the computer world. The world of the past is difficult to understand for many modern users. (and I still prefer nano) Those green letters remind me of DOS world and green Hercules monitors. Maybe it's time for something like CP/M?
Two of my favorite subjects: history and computing, it's great! Thank you very much, more uploads of this kind please 🙂
EDIT: Unix related history especially.
I will try! I'm planning more FreeDOS videos next, but I'll do another one on Unix history sometime.
@@freedosproject thank you!
This was very interesting to see the processes involved in using Unix in a “daily use case” from 50 years ago. Thank you!
I'm glad you liked it! I think it's pretty cool too. 👍
Years ago, I did a project to control the generation of and interconnection to the utility for a paper mill. Wound upmwritib a lot of Groff stuff to generate some pretty fanc reports. Watching this brought back memories.
Glad you liked it! I found nroff and groff was really easy to use when I first learned it as an undergrad, and I still like writing some things in groff today.
Absolutely fantastic video, I'm a junior dev getting more into Linux infrastructure for work and this was brilliant!
Glad you enjoyed it! ☺
I played along at home and typed out drop.f in ed. First time using ed and FORTRAN 😁
As a kid I started programming BASIC on my Dad's homemade TRS-80 clone (green screen and cassette tapes), so this felt nostalgic.
Thank you for the video!
I'm glad you liked it! This was a fun video to do. ☺
Thanks for this Jim! It really brought me back to the old days (I must say that using ED kinda gave me a headache.... or was it the Apple II screen flicker??) Anyway thanks again and keep 'em coming, loads of fun!
.... allowed me to write my first FORTRAN program.... yay!
🤔I'm sure Apple II didnt have "ed". Back I. The day, I remember getting countless reminders that it was pronounced ee-dee, but DOS also had an Ed that everyone pronounced "ed", so that battle was pretty much lost.
I learned it as "ed" back in the day, but later learned it was properly pronounced "ee-dee." But old habits are had to break. 😅
One of my first assignments in my C/Assembly programming class in uni was to write an ed clone. Fun times. I'd like to see more videos demonstrating how the early Unix tools would have been used.
Unix before pipes - gee, talk about some stone age computing using bear skins and stone knives!
I wrote an article once about "how to check spelling the 'old school Unix' way, but it was easier to show with pipes. Without pipes, it would have been like this:
tr 'A-Z' 'a-z' < test.me > tmp1
tr -d ',.:;()?!_' < tmp1 > tmp2
tr ' ' '
' < tmp2 > tmp3
sort < tmp3 > tmp4
uniq < tmp4 > tmp5
comm -2 -3 tmp5 words
..and then you get a list of words that are likely misspelled. (For anyone who doesn't understand the commands: convert all text from the teset.me document to lowercase, remove special characters, translate spaces to newlines, sort the output, remove duplicate lines, compare the list to show only the lines that don't appear in the 'words' dictionary.) 'sort' is from Unix 1st Ed, 'uniq' is from Unix 3rd Ed, 'comm' and 'tr' appeared in Unix 4th Ed (1973). And by 3rd Ed, you had pipes anyway. In 1st and 2nd Ed, you would have written a simple program that de-duped lines from input (basically 'uniq'), a one-off program to turn a document into lowercase words one per line, and another one-off program that compared line-by-line input to a list of words and printed the "not found" lines:
./makewords < test.me > tmp3
sort < tmp3 > tmp4
./dedupe < tmp4 > tmp5
./nonwords < tmp5
@@freedosproject There's a great video about UNIX from the AT&T History channel in which Brian Kernighan shows how to use pipes to do a basic spellcheck. It's so funny to watch, A) because he looks so young, and B) because he has his feet up on the desk, keyboard in lap, casually showing the viewers features of UNIX that were revolutionary. There were some other, lesser known Bell Labs employees who also did a lot for UNIX, including Lorinda Cherry, John Mashey, etc. They deserve credit too, though of course Thompson and Ritchie really did the heavy lifting for UNIX.
Amazing! Lots of memories watching this video. Please, more terminal sessions!
Will do! I'll try not to do too many, since I mostly cover FreeDOS things - but I think occasional videos about other retro computing is okay too.
@@freedosproject I know that you mostly cover FreeDOS things, for that I appreciate it even more. I saw that you have a list of videos on "FreeDOS Programming" and I'm going to watch them. I really like the software development terminal session videos that explain how the development environment is built and the workflows used. Thank you very much for your content!
I low-key love the trail of the cursor when you type
I remember it being a bit tedious at times.
But there's a feel to doing it over a slow serial hardware link.
Slow serial link with line noise, even more fun.
I love the fact that Unix was born 20 years before I was born, but magically, I can fluently use that terminal from the 70’s.
Consistency ❤
Very cool!
very cool. One thing that's hard to communicate is how cool and futuristic this all seemed to us back in the day.
I agree! 🤩 I grew up with an Apple II (actually a clone of the II+ called the Franklin ACE 1000) back when we measured memory in a few kB. I sometimes teach a university course on the history of tech, and I try to share what that was like - and how amazing it was to experience a powerful command line operating system like Unix for the first time.
Thank you very much for making this interesting video. I started learning DEC Ultrix back in 1988 and we tested the ED editor. We moved fast over to the VI editor. Liked and subscribed. Please make more videos. I'll follow them.
Glad you liked it! 😎
I used Xenix (Microsoft and SCO) on the Intel 8086 and 80286 (1983-1986).
By 1986, the 80386 was released and Microsoft walked away from Xenix and
started OS/2 development with IBM.
Cool retro Term is my favourite terminal out of them all
I still prefer CRT for certain things, like working on files. I like the throwback feel.
Thanks for the great content you publish, really appreciated!
Glad you like them!
Being a younger-generation programmer this was extremely fascinating. Also hats off to the programmers of that era. Using ed seems like such a chore that I don't think I would've had the patience to do anything productive on a computer.
It's interesting to experiment with ed. I use "visual" editors these days, but in playing with ed over the last few years, I find that my mind build a kind of "map" of what's in my file. I think differently about programming. And I now understand some early programming quirks that make more sense when you're editing with a line editor like ed.
Unrelated to your comment, but: We don't have ed in FreeDOS, but we have something similar. Edlin is the original line editor for DOS systems. And Gregory wrote FreeDOS Edlin in a way that it's very portable - it even compiles on Linux. (I have it running on my Linux machine at home.)
You are 100% correct it builds you a map of what is on file and it makes you to be aware of every line.
Great stuff!! Ty so much for taking your time
This brings me back to the days of DEC workstations and Digital UNIX. :)
And you can bask in the warm "glow" of a simulated CRT. 😅
Cool video... as someone who grew up with Linux and use bash all the time it's great to see the history and how it was in the earlier days. I'm now using cool retro term and Fortran programming using ed 👍👍
Glad you enjoyed it! ☺
Really cool video. You don't get to see UNIX really get "used" these days. A lot of creators will demo it, but to see it used in a real-world scenario is really cool. UNIX can seem daunting for someone who's only ever used a GUI or more modern Linux with all the time-saving bells & whistles, but really it's pretty intuitive once you take the time to learn the syntax and theory of operation.
I grew up on the command line so the Unix command line feels comfortable to me. I first used Unix as an undergrad student in the early 1990s. If I wasn't in the computer lab, I'd dial in from my dorm room. And even though the Sun 3/50 workstations in the lab had graphics and ran X, we didn't have very many of them (maybe 8) and the CS students always got priority (I was a physics major, math minor). So I often had to use the Unix systems from a VT220 terminal.
@@freedosproject I work in networking and up until a couple of years ago I supported an IBM mainframe running a UNIX-derivative. It was always a joy to watch the old-timers move their way effortlessly through the system. Those same guys helped stand that mainframe up in the late 70s. You can imagine after almost 50 years on the same system they knew every corner, they could practically tell you what was wrong by smell. I first started using computers in the late 90s and had a fascination with linux which was pretty exciting at the time. Even still it feels a bit alien to me when I use it, I imagine becasue >99% of my computing time is spent on a GUI now.
@@freedosproject I grew up on the GUI but thanks to my natural talent and me being gifted with extraordinary intelligence I have become as one with the command line. All the power of the command line flows through my being and allows me to control any UNIX system as if it were but an extension of my body.
@@MontegaB Another place you can still see that kind of effortless navigating is airline agents at the airport. All the reservation systems still operate like they're terminals on mainframes since that's what they were developed as. Those agents just clicking away at the keyboard from memory pulling up passenger or flight information and keying in the changes is probably the last surviving use case of old school computing where the users aren't what computer nerds would consider technical background users
This is straight up art. Yes it is maybe inconvenient, but the fact it still works, how easily math formula translated to fortran code...
Thanks! That was definitely the use for FORTRAN - in fact, the name stands for FORmula TRANslation. It's all about making it easy to turn math into code. 🤓
Hehe, I really enjoyed this! I'd love to see more early FORTRAN content :)
More to come! I'm doing a "learn FORTRAN77" series on the channel. I've done just one video so far, but I have the rest of the series planned out.
I used Vim in cool-retro-term during my intro to programming classes, no fuss no muss. Can even run the compiler and test the executable without leaving vim. (Granted I had some prior vim experience) For larger assignments, I switched to kwrite text editor for its easy to customize built-in syntax-coloring; and a terminal emulator on the side to build and run.
While all the kiddies struggled to setup IDEs in Windblows or even use purely online IDE/compilers, and they still had no clue what a compiler actually was.
I really don't understand why the teacher didn't have 8GB+ flash drive on the required materials list and just make everyone use a live Linux.iso with persistence. (For those without a Linux machine.)
I had already been on Linux full time for 12 years at that point, but looking at all the fuss and screwing around just to get setup on Windows really cured me of any lingering idea that Windows "just works".
I use different coding environments for different things-but for most of what I do, I use Vim. I know what I'm coding and how to code it, I usually don't need the help that an IDE provides.
For very simple stuff, like demo programs or just some test/scratch program to try out an idea, I'll even use Edlin on FreeDOS or Ed on Linux. ☺
I did not intend to watch the whole video but I was hooked!
Glad you liked it! I really enjoyed this one. Looking forward to doing it as a live conference talk sometime soon.
This was what it was like! We're lucky we didn't have to use front-panel switches to manually load the C compiler in assembly into memory on our PDP-11.
I started programming in the 80s, and worked on a VT100, editing my Pascal code in ED. It wasn't UNIX though, but VAX/VMS. My first intro to UNIX was in 1985. We had greenscreen Datamedia terminals, and used vi or emax, running on a Sequent UNIX system. I wonder how many hours I spent in that comp/sci lab, writing silly programs, or emails to my friends.
In 1997/98 Motorola proprietary(pre DOCSIS) cable routers required using ed to manage the router config. Apparently vi was just too difficult to port lol.
really appreciate the long way from where we are coming from, but there's still somthing about those green screen :)
I do love the command line. My Linux machine is running the GNOME desktop, but I usually have a terminal open to do command line things once in a while. I grew up with the command line, so I'm very comfortable there. 🤓
Lots of fun. I use ed to this day. It's so fast for quick config file edits.
It really is! I use ed whenever I need to capture something quickly, especially if I need to write a quick 3-line script to process some data and I want to keep the previous output on my screen while I write the script. So easy to use ed(1) when I'm on ssh somewhere.
Also, I use edlin on Linux sometimes. Gregory's FreeDOS Edlin compiles and runs fine on Linux. I should do a video about that… 😃
Very very VERY COOL VIDEO!! (and good C code style! ;-)
Thanks! 😀 I also recorded a followup video showing "old style" C coding. You can find that on the channel, too.
this fallout terminal is a bit more advanced than others I previously saw
Yeah ahhahaahaha
Nice presentation Jim. Speaking of Unix, I believe I've read somewhere that FreeDOS supports the AVAILDEV and SWITCHAR options in CONFIG.SYS, which are the options that allow (MS-)DOS operating systems to function more like Unix with paths and parameter switches. Could these be covered in a future video?
Sure thing, especially SWITCHAR for those programs that support it.
the transition from line editing to full screen text editing is interesting subject - and when and where was the first full screen mode word processor? Did that happen first on late 70s CP/M systems ala something like Wordstar? Or does Xerox get credit for that with their GUI worstation perhaps?
@@TheSulross I tried to trace the history of word processors sometime last year as a side project, and "word processor" is hard to define clearly. My *personal* definition of "word processor" is a full screen program that supports basic page and text formatting (minimally: top/bottom and left/right page margins, line wrap, bold, italics, underline) and shows your text on screen how it will appear on paper. I'll allow that character mode can't display all text formatting, so it's okay to use colors (say, bright white for bold, cyan for italics, green for underline, ..) but otherwise the same. And a lot of older word processors don't meet that - you needed to type special codes (sometimes similar to nroff, sometimes not - depending) within the body of the text. That's not really "as it will appear on paper." So what's the oldest "word processor" according to that definition? I haven't figured it out. 🤔
@@freedosproject But you know, that approach of mixing formatting codes with the text content is all back in favor again.
Any thing I document that needs to be dressed up a bit beyond plain text I write in Markdown using an editor specifically for that. It's a bit of a hybrid way to work because even in the working text representation it will, say, have bold faced text and the Markdown embedded codes for bolding that text, and then over in the preview pane it will show how it looks when rendered for final output display.
Because of github Markdown has seen a dramatic uptake, and its great. It's expressive enough for most things and suites the non-paginated way most documentation gets seen these days. Okay, well, wish table of contents and footnotes were bit more officially incorporated, and so there are different variations of Markdown with extra features. So it's got some standardization problems.
Just to say, though, that when you hang around in computing long enough you see things that are in style, then go out of style, and maybe decades later come back into style again.
@@TheSulross As one of my first bosses in my IT career said: "The pendulum of technology swings back and forth."
very interesting video! the history of computing is fun to explore. thank you!
Yes, please do more videos about UNIX history,
Will do! I'm back to doing more DOS videos now, but I'll do another Unix video sometime.
Thank you.
It's all well before my time, but someone who was around at the time will probably berate you for using ANSI C function definitions in that C rather than classic K&R style....
Someone else pointed that out too. Good catch - I missed using K&R style in the video. I'll have to remember that when I do this as a live conference talk. ☺
The cool display looks like the Fallout 3 / New Vegas terminals
One good thing about ed editor is that you can learn sed command syntax and Vi ex mode commands and regular expression syntax.
The original Unix (Unix V7, System V, BSD4.3 etc) used K&R C compiler. Argument types in the function argument list is ANSI C style.
K&R compiler used in original Unix did not support such ANSI-C style argument list.
Yup, a few others also pointed out that I used ANSI C style, not K&R C. In another comment, I rewrote the linenum.c program using K&R C style.
So cool, 1 minute 30 seconds in and I'm already commenting for no reason.
Yay functional Unix history.
Amazing. Thank you. Yes I want to see more videos like this.
I love the idea of using CRT for display purposes rather than a bog-standard terminal emulator.
Tip for the next one: In the "Effects" menu of CRT you can reduce the "Screen Curvature" to zero to get rid of this distortion that makes it hard for you to align text columns, in the "Main" menu the value of Margin and Frame Size could be increased to centre up the contents, and in the "Terminal" menu by playing around with the Scaling and Font Width sliders you should be able to get 80x25 or 80x24 character display. It does however end up looking a little bit "stretched" since these old glass teletypes weren't 16:9.
Since recording this video, I switched to the 'default pixelated' theme, which fills my screen at 80x24 when maximized (and 80x25 if I go 'fullscreen' mode). It works very well. I had to turn off the static noise though. ☺
@@freedosproject Can your screen recorder catch a single window? You could just grab a corner and makit any dimension. I used vokoscreenNG to capture single windows within Xfce on Debian, it catches all of the C.R.T. noise. (Although the random snow makes compression difficult and greatly increases files size)
I'm actually recording a window window here. I'm using Cool Retro Term as full screen with the "Apple II" theme. That's what gives the CRT noise effect.
Using Cool Retro Term was a neat idea, but it proved distracting in the comments. So I didn't use the "noise" effect when I gave the actual conference demo.
@@freedosproject C.R.T would not be stretched by the 9:16 display screen if you didn't maximize the window. That is the half of the point of recording a single window rather than recording the full screen.
I only mentioned the static-noise as it impacts most codec's ability to compress the video file and can cause a lot of compression artifacts with greater compression ratios. I use a similar amount of effects with an Amber theme but I turn off the static-snow if I want to record.
Thank you!
This is incredible! I would have loved to live those times. Men must have felt superhumans for the first time
It's a neat demo. The C you wrote was a bit anachronistic though. The compiler still only supported K&R style function declarations.
True, I missed that when I did this video. Although I recently learned modern GCC doesn't support original "K&R" C syntax anyway - I recently wrote an article to "update" this retro Unix experience, and that's when I discovered GCC refuses to compile K&R C syntax now. Not sure when that happened.
@@freedosproject Yeah... it's a casualty of C23.
I still have printer paper in the attic that is full of my ed sessions in 1980, we didn’t have a monitor as it was too expensive! Probably one of those accountant decisions where the CapEx was the only thing that mattered, my time waiting for the terminal to print and the cost of the paper weren’t considered - no wonder it took two of us a year to write 4k of assembler! (Having to fit all the code into a 4k ROM didn’t help.)
Strictly speaking, not ed but "The Editor" which was a clone written for the RCA1802 processor in the COSMAC Development System worldradiohistory.com/hd2/IDX-UK/Technology/Technology-Modern/Archive-Elektor-IDX/IDX/00s/Elektor-2011-12-OCR-Page-0076.pdf
Nothing as sophisticated as UNIX, there was no OS at all - the editor was "Disc 0: Track 00" (you literally typed 000 Enter to run it) and the assembler was "Disc 0: Track 02". Similarly for the source files, "Disc 1: Track 00" etc. If you added too much to a file when you saved it it would simply carry on to the next track overwriting whatever was there so it was best to leave a blank track between files: 00, 02, 04 etc!
it's just a unix terminal where the names of the executables have been changed to make more scene.
I worked on it with the old SCO Unix and also with subsequent versions and it wasn't complicated at all, more or less like msdos, it had "case sensitivity" on its side and if you had to run a program if it wasn't in the search path you had to to specify ./
05:22 The VT100 is connected to a PDP-11/70 RT-11 at Living Computers Museum running
Awesome look into the past and showcase for ed! I'll be back for more if there will be :)
You seem to have missed the square for t in the simplified equation, though, so there's a potential part 2 :P
Oh no! 😧 I didn't realize I forgot that (27:50) Good catch!
@@freedosproject In a way why we do free software is, because we know there are always some mistakes that slip in, but we're not alone, isn't it? ;)
Thanks for all your work on FreeDOS, you guys rock!
I used to own a copy of System III. Was on a terminal used to control a mainframe. Huge tower with large format motherboard with a bunch of daughter cards.
That's great! 😃 The first Unix system I used was on a Sun 3/50 running SunOS (version 3? or was it version 4 by then?). My first job used a mix of Unix systems, including SunOS, HP-UX, and Apollo DomainOS/AEGIS (which provided both BSD and System V) … until I replaced some of the older systems with Linux.
wow, it's like being in some computer lab back in the 70s 🤓
funny how as ancient as people see vi/vim these days, back then it was state of the art, and when it comes to just writing a plain old C program even ed isn't too hard to use once you learn the basics
It's kind of cool to use ed(1) sometimes. I will use ed when I need to write something quick, like a 2-line Bash script to automate something. Typical example: I might run some commands with pipes to solve some problem, make sure it works, then start a new file in ed to type in my commands there (while I can still see the output of the previous command on my screen). It's very nice for that.
Slackware Linux is the most Unix-like Linux. It's also the simplest, most UNmodified Linux distribution, and therefore the fastest and most secure.
It's also the oldest living Linux distribution (six months older than Debian).
Back in the day, they used to say, "If you want to learn Red Hat, get Red Hat; if you want to learn Debian, get Debian; if you want to learn Linux, get Slackware.
I'm still working with IBM AIX at my job and it's good.
I used AIX at my second-ever job. I was a "working manager" so I managed the small IT team and did sysadmin on the AIX system and HPUX system. I also installed Linux there for some back-end support stuff, to make things easier to run.
I enjoyed that. Thank you!
takes me back to mo-bell from 69 to 73
It must have been around 1982 when I first got exposed to SunOS 4 at the university. As a professional systems administrator I got exposed to Sun Solaris, Data General DG/UX, MV/UX, IBM AIX, HP/UX, and much later to SuSE Linux, RedHat Linux, etc.
Because I was brought up with old time Unix'es, and because I never knew what toolset would be available on the next server, I stuck with the old-fashioned tools like Bourne Shell, awk, , sed, ls, find, grep, and vi, and did not use any of the GNU features. It is only these last two years that I have finally embraced GNU/Linux and started using Bash, vim, less, and all the other goodies that comes with the current GNU/Linux releases.
Same for me, but a few years later. My first job was managing Apollo, Sun, and HP - and I added Linux. My second job had HP and AIX - plus Linux. My third job was also a mix. I didn't learn the GNU additions until much later, after I no longer was a sysadmin, no longer had to worry about "will my scripts run everywhere?"