[HN Gopher] 1972 Unix V2 "Beta" Resurrected
___________________________________________________________________
1972 Unix V2 "Beta" Resurrected
Author : henry_flower
Score : 389 points
Date : 2025-02-19 21:41 UTC (1 days ago)
(HTM) web link (www.tuhs.org)
(TXT) w3m dump (www.tuhs.org)
| digitalsushi wrote:
| Spock levels of fascinating from me. I want to learn how to
| compile a pdp11 emulator on my mac.
| snovymgodym wrote:
| https://opensimh.org/
|
| Works great on Apple Silicon
| haunter wrote:
| What's the difference between an emulator and a simulator in
| this context?
| bityard wrote:
| There is LOADS of gray area, overlap, and room for one's
| own philosophical interpretation... But typically
| simulators attempt to reproduce the details of how a
| particular machine worked for academic or engineering
| purposes, while emulators are concerned mainly with only
| getting the desired output. (Everything else being an
| implementation detail.)
|
| E.g. since the MAME project considers itself living
| documentation of arcade hardware, it would be more properly
| classified as a simulator. While the goal of most other
| video game emulators is just to play the games.
| anthk wrote:
| Not the case at all. Tons of emulators are near 100%
| accurate.
| bityard wrote:
| Huh? I didn't mention anything about accuracy. And
| "accuracy" (an overloaded and ill-defined term on its
| own) doesn't have anything to do with the differences
| between simulators and emulators.
| Imustaskforhelp wrote:
| exactly. makes you wonder , is it all just philosophical.
|
| Calling the same thing a different name.
| Brian_K_White wrote:
| Irrelevant to the concept being expressed, and does not
| invalidate.
|
| The goals merely overlap, which is obvious. Equally
| obviously, if two goals are similar, then the
| implimentations of some way to attain those goals may
| equally have some overlap, maybe even a lot of overlap.
| And yet the goals are different, and it is useful to have
| words that express aspects of things that aren't apparent
| from merely the final object.
|
| A decorative brick and a structural brick may both be the
| same physical brick, yet if the goals are different then
| any similarity in the implimentation is just a
| coincidense. It would not be true to say that the
| definition of a decorative brick includes the materials
| and manufacturing steps and final physical properties of
| a structural brick. The definition of a decorative brick
| is to create a certain appearance, by any means you want,
| and it just so happens that maybe the simplest way to
| make a wall that looks like a brick wall, is to build an
| actual brick wall.
|
| If only they had tried to make it clear that there is
| overlap and the definitions are grey and fuzzy and open
| to personal philosophic interpretation and the one thing
| can often look and smell and taste almost the same as the
| other thing, if only they had said anything at all about
| that, it might have headed off such a pointless
| confusion...
| Imustaskforhelp wrote:
| I don't want to offend you , but this has made me even
| wonder more what the difference is.
|
| It just feels that one is emulator if its philosophy is
| "it just works" and simulator if "well sit down kids I am
| going to give you proper documentation and how it was
| built back in my days"
|
| but I wonder what that means for programs themselves...
|
| I wonder if simulator==emulator is more truer than what
| javascript true conditions allow.
| o11c wrote:
| In theory, an emulator is oriented around producing a
| result (this may mean making acceptable compromises),
| whereas a simulator is oriented around inspection of state
| (this usually means being exact).
|
| In practice the terms are often conflated.
| codr7 wrote:
| The difference is about as crystal clear as
| compiler/interpreter.
| Imustaskforhelp wrote:
| compiler creates a binary in elf format or other format
| which can be run given a shared object exists.
|
| Intepreter either writes it in bytecode and then executes
| the bytecode line by line ?
|
| Atleast that is what I believe the difference is , care
| to elaborate , is there some hidden joke of compiler vs
| intepreter that I don't know about ?
| dpassens wrote:
| I assume GP meant that a lot of compilers also interpret
| and interpreters also compile.
|
| For compilers, constant folding is a pretty obvious
| optimization. Instead of compiling constant expressions,
| like 1+2, to code that evaluates those expressions, the
| compiler can already evaluate it itself and just produce
| the final result, in this case 3.
|
| Then, some language features require compilers to perform
| some interpretation, either explicitly like C++'s
| constexpr, or implicitly, like type checking.
|
| Likewise, interpreters can do some compilation. You
| already mentioned bytecode. Producing the bytecode is a
| form of compilation. Incidentally, you can skip the
| bytecode and interpret a program by, for example, walking
| its abstract syntax tree.
|
| Also, compilers don't necessarily create binaries that
| are immediately runnable. Java's compiler, for example,
| produces JVM bytecode, which requires a JVM to be run.
| And TypeScript's compiler outputs JavaScript.
| codr7 wrote:
| Thank you!
| Imustaskforhelp wrote:
| Then what is the difference, I always thought of Java as
| closer to python in the sense that it's running the byte
| code. And python also has bytecode.
|
| I don't know what the difference is , I know there can be
| intepreters of compilers but generally speaking it's hard
| to find compilers of intepreters
|
| Eg C++ has compilers , intepreters both (cpi) , gcc
|
| Js doesn't have compilers IIRC , it can have transpilers
| Js2c is good one but i am not sure if they are failsafe
| (70% ready) ,
|
| I also have to thank you , this is a great comment
| amszmidt wrote:
| The easy definition is that an interpreter takes
| somethings and runs/executes it.
|
| A compiler takes the same thing, but produces an
| intermediate form (byte code, machine code, another
| languages sometimes called "transpilar"). That you can
| then pass through an interpreter of sorts.
|
| There is no difference between Java and JVM, and Python
| and the Python Virtual Machine, or even a C compiler
| targeting x86 and a x86 CPU. One might call some byte
| code, and the other machine code .. they do the same
| thing.
| o11c wrote:
| Programming languages mostly occupy a 4-dimensional space
| at runtime. These axes are actually a bit more
| complicated than just a line:
|
| * The first axis is static vs dynamic types. Java is
| mostly statically-typed (though casting remains common
| and generics have some awkward spots); Python is entirely
| dynamically-typed at runtime (external static type-
| checkers do not affect this).
|
| * The second axis is AOT vs JIT. Java has two phases - a
| trivial AOT bytecode compilation, then an incredibly
| advanced non-cached runtime native JIT (as opposed to the
| shitty tracing JIT that dynamically-typed languages have
| to settle for); Python traditionally has an
| automatically-cached barely-AOT bytecode compiler but
| nothing else (it has been making steps toward runtime JIT
| stuff, but poor decisions elsewhere limit the
| effectiveness).
|
| * The third axis is indirect vs inlined objects. Java and
| Python both force all objects to be indirect, though they
| differ in terms of primitives. Java has been trying to
| add support for value types for decades, but the
| implementation is badly designed; this is one place where
| C# is a clear winner. Java can sometimes inline stack-
| local objects though.
|
| * The fourth axis is deterministic memory management vs
| garbage collection. Java and Python both have GC, though
| in practice Python is semi-deterministic, and the
| language has a somewhat easier way to make it more
| deterministic (`with`, though it is subject to unfixable
| race conditions)
|
| I have collected a bunch more information about language
| implementation theory: https://gist.github.com/o11c/6b086
| 43335388bbab0228db763f9921...
| amszmidt wrote:
| While an interpreter can do optimizations, they do not
| produce "byte code" -- by that time they are compilers!
|
| As for the comparison with the JVM .. compare to a
| compiler that produces x86 code, it cannot be run without
| an x86 machine. You need a machine to run something, be
| it virtual or not.
| amszmidt wrote:
| An interpreter runs the code as it is being read in.
|
| A compiler processes the code and provides an
| intermediate result which is then "interpreted" by the
| machine.
|
| So to take the "writes it in byte code" -- that is a
| compiler. "executes the byte code" -- is the interpreter.
|
| If byte code is "machine code" or not, is really
| secondary.
| somat wrote:
| I would generalize it to a compiler produces some sort of
| artifact that is intended to later be used directly,
| while for an interpreter the whole mechanism(source to
| execution) is intended to be used directly.
|
| The same tool can often be used to do both. trival
| example: a web browser. save your web page as a pdf?
| compiler. otherwise interpreter. but what if the code it
| is executing is not artisanal handcrafted js but the
| result of a typescript compiler?
| ijustlovemath wrote:
| Adding some anecdata, I feel like emulator is mainly used
| in the context of gaming, in which case they actually
| care a great deal about accurate reproduction (see:
| assembly bugs in N64 emulators that had to be reproduced
| in order to build TAS). I haven't seen it used much for
| old architectures; instead I'd call those virtual
| machines.
|
| definitely agree on simulator though!
| amszmidt wrote:
| I think it is more about design, emulation mimics what
| something does. A simulator replicates what something does.
|
| It is a tiny distinction, but generally I'd say that a
| simulator tries to accurately replicate what happens on an
| electrical level as good one can do.
|
| While an emulator just does things as a black box ... input
| produces the expected output using whatever.
|
| You could compare it to that an accurate simulator of a
| 74181 tries to do it by using AND/OR/NOT/... logic, but an
| emulator does it using "normal code".
|
| In HDL you have a similar situation between structural,
| behavioral design ... structural is generally based on much
| more lower level logic (eg., AND/NOR/.. gates ...), and
| behavioral on higher logic (addition, subtraction ...).
|
| "100%" accuracy can be achieved with both methods.
| thequux wrote:
| Compiling an emulator is quite easy: have a look at simh. It's
| very portable and should just work out of the box.
|
| Once you've got that working, try installing a 2.11BSD
| distribution. It's well-documented and came after a lot of the
| churn in early Unix. After that, I've had great fun playing
| with RT-11, to the point that I've actually written some small
| apps on it.
| colechristensen wrote:
| From the link:
|
| > It's somewhat picky about the environment. So far, aap's
| PDP-11/20 emulator (https://github.com/aap/pdp11) is the only
| one capable of booting the kernel. SIMH and Ersatz-11 both
| hang before reaching the login prompt. This makes
| installation from the s1/s2 tapes difficult, as aap's
| emulator does not support the TC11. The intended installation
| process involves booting from s1 and restoring files from s2.
| aap_ wrote:
| good luck though. my emulator is not particularly user
| friendly, as in, it has no user interface. i recommend simh
| (although perhaps not for this thing in particular).
| colechristensen wrote:
| So what mechanism do you have set up to reply 4 minutes
| after being mentioned? :)
| aap_ wrote:
| Compulsively checking HN i suppose :D
| lanstin wrote:
| Also looking at threads view first before actual news
| helps with that.
| somat wrote:
| The daves garage youtube has an episode where he documents
| the pitfalls of compiling 2bsd for a PDP-11/83.
| https://www.youtube.com/watch?v=IBFeM-sa2YY basically it is
| an art on a memory constrained system.
|
| What I found entertaining was when he was explaining how to
| compile the kernel, I went Oh! that's where openbsd gets it
| from. it is still a very similar process.
| azinman2 wrote:
| What's the process look like?
| somat wrote:
| On openbsd it's cd
| /sys/arch/$(machine)/conf cp GENERIC CUSTOM
| vi CUSTOM # make your changes config CUSTOM
| cd ../compile/CUSTOM make
|
| https://www.openbsd.org/faq/faq5.html
|
| I have never done it for 2bsd but according to
| http://www.vaxman.de/publications/bsd211_inst.pdf
| cd /usr/src/sys/conf cp GENERIC CUSTOM vi
| CUSTOM ./config CUSTOM cd /sys/CUSTOM
| make
| icedchai wrote:
| I've been messing around with RSX-11M myself! I find these
| early OSes quite fascinating. So far I've set up DECNet with
| another emulator running VMS, installed a TCP stack, and a
| bunch of compilers.
| an-unknown wrote:
| > After that, I've had great fun playing with RT-11 [...]
|
| If you want to play around with RT-11 again, I made a small
| PDP-11/03 emulator + VT240 terminal emulator running in the
| browser. It's still incomplete, but you can play around with
| it here: https://lsi-11.unknown-tech.eu/ (source code:
| https://github.com/unknown-technologies/weblsi-11)
|
| The PDP-11/03 emulator itself is good enough that it can run
| the RT-11 installer to create the disk image you see in the
| browser version. The VT240 emulator is good enough that the
| standalone Linux version can be used as terminal emulator for
| daily work. Once I have time, I plan to make a proper blog
| post describing how it all works / what the challenges were
| and post it as Show HN eventually.
| nonrandomstring wrote:
| Yep, this is a metal-detectorists finding religious relic
| moment.
| boznz wrote:
| Too easy! Going to build one with NAND gates.
| wglb wrote:
| Or you could go the way of this quite impressive project:
| http://fpgaretrocomputing.org/
| mycall wrote:
| Have fun with that
|
| https://hackaday.com/2017/01/03/make-logic-gates-out-of-
| almo...
| ForOldHack wrote:
| You can make logic gates out of almonds???
| dataf3l wrote:
| I love this!
|
| first time I see people use 'ed' for work!!!
|
| I wonder who else has to deal with ed also... recently I had to
| connect to an ancient system where vi was not available, I had to
| write my own editor, so whoever needs an editor for an ancient
| system, ping me (it is not too fancy).
|
| amazing work by the creators of this software and by the
| researchers, you have my full respect guys. those are the real
| engineers!
| ajross wrote:
| Interestingly it's actually a sort of degenerate use of ed. All
| it does is append one line to an empty buffer and write it to
| "hello.c". It's literally the equivalent of
| echo 'int main(void) { printf("hello!\n"); }' > hello.c
|
| ...EXCEPT...
|
| It's not, because the shell redirection operators didn't exist
| yet at this point in time. _Maybe_ (or maybe not?) it would
| work to cat to the file from stdin and send a Ctrl-D down the
| line to close the descriptor. But even that might have been
| present yet. Unix didn 't really "look like Unix" until v7,
| which introduced the Bourne shell and most of the shell
| environment we know today.
| wpollock wrote:
| I remember using an ed-like editor on a Honeywell timeshare
| system in the 1960s, over a Teltype ASR-33. I don't remember
| much except you invoked it using "make <filename>" to create a
| new file. And if you typed "make love" the editor would print
| "not war" before entering the editor.
| skissane wrote:
| The "MAKE LOVE"/"NOT WAR" easter egg was in TECO for DEC
| PDP-6/10 machines. But DEC TECO was also ported to Multics,
| so maybe that was the Honeywell machine you used it on.
|
| But, for a whole bunch of reasons, I'm left with the
| suspicion you may be misremembering something from the early
| 1970s as happening in the 1960s. While it isn't totally
| impossible you had this experience in 1968 or 1969, a 1970s
| date would be much more historically probable
| flyinghamster wrote:
| The easter egg carried over to the PDP-11 as well. I
| remember it being present in RSTS/E 7.0's TECO back in my
| high school days, and I just fired up SIMH and found it's
| definitely there.
|
| On the other hand, I never really tried to do anything with
| TECO other than run VTEDIT.
| wpollock wrote:
| You're probably right. It definitely was teco and likely
| 1970ish.
| WhyNotHugo wrote:
| The keystokes are pretty much what you'd press in vim to
| perform the same actions. Except that append mode ends when
| they finished the line (apparently) rather than having to press
| Esc.
|
| The feedback from the editor, however, is... challenging.
| rchard2scout wrote:
| In ed, append mode ends by entering a single '.' on an empty
| line, and then pressing enter. You can see that happening in
| the article.
| ThePowerOfFuet wrote:
| Now we know where SMTP got it, I guess.
| kragen wrote:
| That's possible but unlikely. MTP as defined by Suzanne
| Sluizer and Jon Postel in RFC 772 in September 01980
| https://datatracker.ietf.org/doc/html/rfc772 seems to
| have been where SMTP got that convention for ending the
| message:
|
| > _...and considers all succeeding lines to be the
| message text. It is terminated by a line containing only
| a period, upon which a 250 completion reply is returned._
|
| But in 01980 Unix had only been released outside of Bell
| Labs for five years and was only starting to support
| ARPANET connections (using NCP), so I wouldn't expect it
| to be very influential on ARPANET protocol design yet. I
| believe both Sluizer and Postel were using TOPS-20; the
| next year the two of them wrote RFC 786 about an
| interface used under TOPS-20 at ISI (Postel's
| institution, not sure if Sluizer was also there) between
| MTP and NIMAIL.
|
| For some context, RFC 765, the June 01980 version of FTP,
| extensively discusses the TOPS-20 file structure,
| mentions NLS in passing, and mentions no other operating
| systems in that section at all. In another section, it
| discusses how different hardware typically handles ASCII:
|
| > _For example, NVT-ASCII has different data storage
| representations in different systems. PDP-10 's generally
| store NVT-ASCII as five 7-bit ASCII characters, left-
| justified in a 36-bit word. 360's store NVT-ASCII as
| 8-bit EBCDIC codes. Multics stores NVT-ASCII as four
| 9-bit characters in a 36-bit word. It may be desirable to
| convert characters into the standard NVT-ASCII
| representation when transmitting text between dissimilar
| systems._
|
| Note the complete absence of either of the hardware
| platforms Unix could run on in this list!
|
| (Technically Multics is software, not hardware, but it
| only ever ran on a single hardware platform, which was
| built for it.)
|
| RFC 771, Cerf and Postel's "mail transition plan",
| admits, "In the following, the discussion will be
| hoplessly [sic] TOPS20[sic]-oriented. We appologize [sic]
| to users of other systems, but we feel it is better to
| discuss examples we know than to attempt to be abstract."
| RFC 773, Cerf's comments on the mail service transition
| plan, likewise mentions TOPS-20 but not Unix. RFC 775,
| from December 01980, _is_ about Unix, and in particular,
| adding hierarchical directory support to FTP:
|
| > _BBN has installed and maintains the software of
| several DEC PDP-11s running the Unix operating system.
| Since Unix has a tree-like directory structure, in which
| directories are as easy to manipulate as ordinary files,
| we have found it convenient to expand the FTP servers on
| these machines to include commands which deal with the
| creation of directories. Since there are other hosts on
| the ARPA net which have tree-like directories, including
| Tops-20 and Multics, we have tried to make these commands
| as general as possible._
|
| RFC 776 (January 01981) has the email addresses of
| everyone who was a contact person for an Internet
| Assigned Number, such as JHaverty@BBN-Unix, Hornig@MIT-
| Multics, and Mathis@SRI-KL (a KL-10 which I think was
| running TOPS-20). I think four of the hosts mentioned are
| Unix machines.
|
| So, there was certainly contact between the Unix world
| and the internet world at that point, but the internet
| world was almost entirely non-Unix, and so tended to
| follow other cultural conventions. That's why, to this
| day, commands in SMTP and header lines in HTTP/1.1 are
| terminated by CRLF and not LF; why FTP and SMTP commands
| are all four letters long and case-insensitive; and why
| reply codes are three-digit hierarchical identifiers.
|
| So I suspect the convention of terminating input with "."
| on a line of its own got into ed(1) and SMTP from a
| common ancestor.
|
| I think Sluizer is still alive. (I suspect I met her
| around 01993, though I don't remember any details.) Maybe
| we could ask her.
| bbanyc wrote:
| The "." to terminate input was used in FTP mail on
| ARPANET, defined in RFC 385 which was well before anyone
| outside Bell had heard of Unix.
| dboreham wrote:
| Hmm. I still use ed now and then. It's an alias to vim I assume
| these days.
| lmm wrote:
| I had to use ed to configure X on my alpha/vms machine back
| when I had it, there was something wrong with the terminfo
| setup so visual editors didn't work, only line-based programs.
| wglb wrote:
| An early consulting gig was to write a tutorial for ed (on the
| Coherent system). I often use ed--in fact I used it yesterday.
| I needed to edit something without clearing the screen.
|
| Earlier, I wrote an editor for card images stored on disks.
| Very primitive.
| S04dKHzrKT wrote:
| Real Programmers use ed. https://xkcd.com/378/
| duohedron wrote:
| Of course. Ed is the standard text editor.
| https://www.gnu.org/fun/jokes/ed-msg.en.html
| jamesfinlayson wrote:
| Never had to use ed but I remember working with someone a fair
| bit older than me that remembered using ed.
| pjmlp wrote:
| Not ed, but definilty inspired by it, I am old enough to have
| done typewriting school exam on MS-DOS 3.3 edlin.
|
| And since then never used it ever again, nor ed when a couple
| of years later we had Xenix access, as vi was much saner
| alternative.
| skissane wrote:
| I also remember using MS-DOS 3.3 EDLIN in anger, on our home
| computer [0] when I was roughly 8, because it was the only
| general purpose text editor we had. (We also had Wordstar,
| which I believe could save files in plain text mode, but I
| don't think my dad or I knew that at the time.) I didn't do
| much with it but used it to write some simple batch files. My
| dad had created a directory called C:\BAT and we used it a
| bit like a menu system, we put batch files in it to start
| other programs. I don't remember any PC-compatible machines
| at my school, it was pretty much all Apple IIs, although the
| next year moved to a new school which as well as Apple IIs,
| also had IBM PC JXs (IBM Japan variant of the IBM PCjr which
| was sold to schools in Australia/New Zealand) and Acorn
| Archimedes.
|
| [0] it was an IBM PC clone, an ISA bus 386SX, made by TPG -
| TPG are now one of Australia's leading ISPs, but in the late
| 1980s were a PC clone manufacturer. It had a 40Mb hard disk,
| two 5.25 inch floppy drives (one 1.2Mb, the other 360Kb), and
| a vacant slot for a 3.5 inch floppy, we didn't actually
| install the floppy in it until later. I still have it, but
| some of the innards were replaced, I think the motherboard
| currently in it is a 486 or Pentium
| kragen wrote:
| I used ed in Termux on my cellphone to write
| http://canonical.org/~kragen/sw/dev3/justhash.c in August.
| Someone, I forget who, had mentioned they were using ed on
| their cellphone because the Android onscreen keyboard was
| pretty terrible for vi, which is true. So I tried it. I decided
| that, on the cellphone, ed was a little bit worse than vi, but
| they are bad in different ways. It really is much easier to
| issue commands to ed than to vi on the keyboard (I'm using
| HeliBoard) but a few times I got confused about the state of
| the buffer in a way that I wouldn't with vi. Possibly that
| problem would improve with practice, but I went back to using
| vi.
| relistan wrote:
| In the mid 90s we had an AT&T 3B2 that only had ed on it. We
| used it via DEC VT-102 terminals. It (ed) works but it's not
| fun by any modern standards. Must've been amazing on a screen
| compared to printout from a teletype though!
|
| Side note: that ~1 MIP 3B2 could support about 20 simultaneous
| users...
| kps wrote:
| In my first computing job I used ed for about six months (we
| didn't have character-mode I/O yet). I learned to make good use
| of regular expressions.
| doublerabbit wrote:
| Cool. Can we enter that time portal and live in that alternate
| reality?
| IgorPartola wrote:
| When gasoline was leaded, cigarette smoke was normal
| everywhere, and asbestos was used for everything you can think
| of? It is a fascinating decade but also quality of life likely
| has skyrocketed since.
| oguz-ismail wrote:
| > quality of life likely has skyrocketed since
|
| it hasn't
| azinman2 wrote:
| Depends on the specifics of your life.
|
| As a gay man, I'm much happier in 2025.
| Cthulhu_ wrote:
| Is that an objective truth or rose-tinted nostalgia
| speaking? (I wouldn't know, I wasn't alive then.)
| msla wrote:
| I survived cancer because of modern medical advances.
|
| I'll take the world with Rituxan and CAR T-cell therapy,
| thank you.
| smeeger wrote:
| it is fascinating to consider that this might not be true
| even though it seems true
| msla wrote:
| No? Thinking the world has gotten worse is classic old
| person chuntering from time immemorial.
| smeeger wrote:
| thinking the world can only get better is another thing
| too
| queuebert wrote:
| Depends on what you value. Purchasing power of wages has
| declined, for example. That's probably not better.
|
| I suspect the sentiment is more that it would be nice to live
| in a simpler time, with fewer options, because it would
| reduce anxiety we all feel about not being able to "keep up"
| with everything that is going on. Or maybe I'm just
| projecting.
| yjftsjthsd-h wrote:
| I mean... Sure? Go buy an actual VT* unit ( maybe
| https://www.ebay.com/itm/176698465415?_skw=vt+terminal&itmme...
| ?), get the necessary adaptors to plug into a computer, and run
| simh on it running your choice of *nix. I recommend
| https://jstn.tumblr.com/post/8692501831 as a reference. Once
| you have it working, shove the host machine behind a desk or
| otherwise out of sight, and you can live like it's 1980.
| MobiusHorizons wrote:
| Ha, I just bought a VT420 a couple of weeks ago. I just
| finished a hacked together converter for USB keyboards
| working well enough (in the last hour actually). Next job is
| to connect it up as a login terminal for my freebsd machine.
| icedchai wrote:
| I love those old terminals! I remember using them during
| late nights in college...
| an-unknown wrote:
| The only problem with real VTs is you have to be careful not
| to get one where the CRT has severe burn-in, like in the ebay
| listing. Sure, some VTs (like the VT240 or VT525) are a
| separate main box + CRT, but then you're missing the "VT
| aesthetics". The VT525 is probably the easiest one to get
| which also uses (old) standard interfaces like VGA for the
| monitor and PS/2 for the keyboard, so you don't need an
| original keyboard / CRT. At least for me, severe burn-in,
| insane prices, and general decay of some of the devices
| offered on ebay are the reason why I don't have a real VT
| (yet).
|
| The alternative is to use a decent VT emulator attached to
| roughly any monitor. By "decent" I certainly don't mean
| projects like cool-retro-term, but rather something like
| this, which I started to develop some time ago and which I'm
| using as my main terminal emulator now:
| https://github.com/unknown-technologies/vt240
| cbm-vic-20 wrote:
| There is firmware available online for some terminals; you
| could potentially get a lot more accuracy in emulating the
| actual firmware, but I'm sure a lot of that code gets into
| the guts of timing CRT cycles and other "real-world"
| difficulties. I'm not suggesting this would be easy to
| build out, just pointing out that it's available. While I
| haven't searched for the VT240 firmware, the firmware for
| the 8031AH CPU inside the VT420 (and a few other DEC
| terminals) is available on bitsavers. The VT240 has a T-11
| processor, which is actually a PDP-11-on-a-chip.
| an-unknown wrote:
| Actually I have the VT240 firmware ROM dumps, that's
| where I got the original font from. The problem is, at
| least the VT240 is a rather sophisticated thing, with a
| T-11 CPU, some additional MCU, and a graphics accelerator
| chip. There is an extensive service manual available,
| with schematics and everything, but properly emulating
| the whole firmware + all relevant peripherals is non-
| trivial and a significant amount of work. The result is
| then a rather slow virtual terminal.
|
| There is a basic and totally incomplete version of a
| VT240 in MAME though, which is good enough to test
| certain behavior, but it completely lacks the graphics
| part, so you can't use it to check graphics behavior like
| DRCS and so on.
|
| EDIT: I also know for sure that there is a firmware
| emulation of the VT102 available somewhere.
| typeofhuman wrote:
| Software archeology
| joquarky wrote:
| It's not as glamorous as it sounds.
| api wrote:
| One of the many things I dislike about the SaaS era is that
| this will never happen. Nobody in 2075 will boot up an old
| version of Notion or Figma for research or nostalgia.
|
| Like the culture produced and consumed on social media and many
| other manifestations of Internet culture it is perfectly
| ephemeral and disposable. No history, no future.
|
| SaaS is not just closed but often effectively tied to a literal
| single installation. It _could_ be archived and booted up
| elsewhere but this would be a much larger undertaking,
| especially years later without the original team, than booting
| 1972 Unix on a modern PC in an emulator. That had manuals and
| was designed to be installed and run in more than one
| deployment. SaaS is a plate of slop that can only be deployed
| by its authors, not necessarily by design but because there are
| no evolutionary pressures pushing it to be anything else. It 's
| also often tangled up with other SaaS that it uses internally.
| You'd have to archive and restore the entire state of the
| cloud, as if it's one global computer running proprietary
| software being edited in place.
| pjmlp wrote:
| And since many applications are basically plugging SaaS with
| each other via APIs and webhooks, not even those.
|
| We're living the SOA dreams, but it will be an hefty price.
| WhyNotHugo wrote:
| 1328 bytes for a hello world? BLOAT!
| ramon156 wrote:
| Time to rice my unix!
| yjftsjthsd-h wrote:
| Hm. I wonder how hard it would be to write a neofetch (...er,
| "oldfetch"?) for v1 Unix. Maybe hardcode some of it? Should
| work.
| ptspts wrote:
| My https://github.com/pts/minilibc686 can do printf-hello-world
| on i386 in less than 1 KiB. write-hello-world is less than 170
| bytes.
| runlevel1 wrote:
| That reminded me of the compiler that used to include a large
| poem in every binary, just for shits and giggles. You've heard
| of a magic number, it had a magic sonnet.
|
| I thought it was early versions of the Rust compiler, but I
| can't seem to find any references to it. Maybe it was Go?
|
| EDIT: Found it: _' rust-lang/rust#13871:_ "hello world"
| contains Lovecraft quotes' https://github.com/rust-
| lang/rust/issues/13871
| starspangled wrote:
| I love browsing the tuhs mailing list from time to time. Awesome
| to see names like Ken Thompson and Rob Pike, and a bunch of
| others with perhaps less recognizable names but who were involved
| in the early UNIX and computing scene.
| unit149 wrote:
| Recovering RF tapes, even a simple text file demonstrates buffer
| space that is not being used by the dos, or .iso file. Even in a
| 2.11 BSD distro, a default tiling and window manager has to be
| installed on the native OS. So yes, going with KDE or the X11 wm.
| m4r1k wrote:
| I once saw a talk from Brian Kernighan who made a joke about how
| in three weeks Ken Thompson wrote a text editor, the B compiler,
| and the skeleton for managing input/output files, which turned
| out to be UNIX. The joke was that nowadays we're a bit less
| efficient :-D
| pinoy420 wrote:
| Otoh: I got react to run my tests without any warnings today.
| 9dev wrote:
| If I write a bunch of tests for new code, and all of them
| pass on the first attempt, I'm immediately suspicious of a
| far more egregious bug hiding somewhere...
| noisy_boy wrote:
| // Todo: remove
|
| return true;
| kps wrote:
| /bin/true used to be an empty file. On my desktop here,
| it's 35K (not counting shared libraries), which is an
| asolute increase of 35K and a relative increase of [?]%.
| throwanem wrote:
| Where feasible, I like to start a suite with a unit test
| that validates the unit's intended side effects actually
| occur, as visible in their mocks being exercised.
| pinoy420 wrote:
| I laughed. Thank you for that
| michaelcampbell wrote:
| "never trust a test you've never seen fail." has kept me
| honest on more than one occasion.
| cjs_ac wrote:
| The interview is here:
| https://www.youtube.com/watch?v=EY6q5dv_B-o
|
| One hour long, and Thompson tells a lot of entertaining
| stories. Kernighan does a good job of just letting Thompson
| speak.
| Cthulhu_ wrote:
| A newer joke is that Ken Thompson (along with Rob Pike and
| Robert Griesemer) designed Go while waiting for C / C++ to
| compile.
| xattt wrote:
| I'm wondering what the process was for the early UNIX
| developers to attain this level of productivity.
|
| Did they treat this as a 9-5 effort, or did they go into a
| "goblin mode" just to get it done while neglecting other
| aspects of their lives?
| noisy_boy wrote:
| Genius level mind minus scrum/agile nonsense can help.
| hylaride wrote:
| Impossible! How can the product managers maintain control
| without the bureaucracy? /s
| ironmanszombie wrote:
| Back in my early career, the company I worked for needed an
| inventory system tailored to their unique process flow. Such
| system was already in development and was scheduled to launch
| "soon". A few months went by and I got fed up with the toil.
| Sat down one weekend and implemented the whole thing in
| Django. I'm no genius and I managed to have a solution that
| my team used for a few years until the company had theirs
| launched. In a weekend. Amazing what you can do when you want
| to Get Shit Done!
| deaddodo wrote:
| That's fine when it's self-motivated, but it sets a
| terrible precedent for expectations. Doing things like this
| can put in management's mind unrealistic expectations for
| you to always work at that pace. Which can be unhealthy and
| burnout-inducing.
| smm11 wrote:
| I worked at a place in love with their ERP system. Some
| there had been using it 30+ years, since it ran in DOS.
|
| My Excel skills completely blow, and I hate Microsoft with
| a passion, but I created a shared spreadsheet one long
| Saturday afternoon that had more functionality than our
| $80K annual ERP system. Showed it to a few more open-minded
| employees, then moved it to my server, never to be shown
| again. Just wanted to prove when I said the ERP system was
| pointless, that I was right.
| Daishiman wrote:
| A lot of the supposed "features" we have in Unix nowadays are
| the result of artifacts resulting from primitive limitations,
| like dotfiles.
|
| If you're willing to let everything crash if you stray from
| the happy path you can be remarkably productive. Likewise if
| you make your code work on one machine, on a text interface,
| with no other requirements except to deliver the exact things
| you need.
| masom wrote:
| A big one is the lack of peer reviews and processes,
| including team meetings, that would slow them down. No PM, no
| UX, just yourself and the keyboard with some goals in mind.
| No OKRs or tickets to close.
|
| It's a bit like any early industry, from cars to airplanes to
| trains. Earlier models were made by a select few people, and
| there was several versions until today where GM and Ford have
| thousands of people involved in designing a single car
| iteration.
| jandrese wrote:
| IMHO the biggest thing is that _they were their own
| customer_. There was no requirements gathering, ui /ux
| consultation, third party bug reporting, just like you
| said. They were eating their own dogfood and loving it. No
| overhead meant they could focus entirely on the task at
| hand.
| ferguess_k wrote:
| Ken is definitely a top-notch programmer. A top-notch
| programmer can do a LOT given 3 weeks of focus time. I remember
| his wife took the kids to England so he was free to do whatever
| he wanted. And he definitely had a lot of experience before
| writing what was first version UNIX.
|
| Every programmer that has a project in mind should try this:
| Put away 3 weeks of focus time in a cabin, away from work and
| family, gather every book or document you need and cut off the
| Internet. Use a dumb phone if you can live with it. See how far
| you can go. Just make sure it is something that you already put
| a lot of thoughts and a bit of code into it.
|
| After thinking more thoroughly about the idea, I believe low
| level projects that rely on as few external libraries as
| possible are the best ones to try the idea out. If your project
| relies on piles of 3rd party libraries, you are stuck if you
| have an issue but without the Internet to help you figure it
| out. Ken picked the right project too.
| foxglacier wrote:
| > low level projects that rely on as few external libraries
|
| I think this is key. If you already have the architecture
| worked out in your head, then it's just smashing away at they
| keyboard. Once you have a 3rd party library, you can spend
| most of your time fighting with and learning about that.
| ferguess_k wrote:
| Exactly. Both projects mentioned in this thread (UNIX, Git)
| have clean cuts visions of what the authors wanted to
| achieve from the beginning. Nowadays it is almost
| impossible to _FIND_ such a project. I 'm not saying that
| you can't write another Git or UNIX but most likely you
| won't even bother using it yourself, so what's the point?
| That's why I think "research projects" don't fit here --
| you learn something and then you throw them away.
|
| What I have in mind are embedded projects -- you are
| probably going to use it even when you are the only user.
| So that fixes the motivation issue. You probably have a
| clean cut objective so that clicks the other checkbox. You
| need to bring a dev board, a bunch of breadboards and
| electronics components to the cabin, but that doesn't take
| a lot of spaces. You need the specifications of the dev
| board and of the components used in the project, but those
| are just pdf files anyway. You need some C best practices?
| There must be a pdf for that. You can do a bit of
| experimental coding before you leave for the cabin, to make
| sure the idea is solid, feasible and the toolchain works.
| The preparations give you a wired up breadboard and maybe a
| few hundred lines of C code. That's all you need to
| complete the project in 3 weeks.
|
| Game programming, modding and mapping come into my mind,
| too. They are fun, clean cut and well defined. The thing is
| you might need the Internet to check documents or
| algorithms from time to time. But it is a lot better to cut
| off Internet completely. I think they fit if you are well
| into them already -- and then you boost them up working 3
| weeks in a cabin.
|
| There must be other lower level projects that fit the bill.
| I'm NOT even a good, ordinary programmer, so the choices
| are few.
| mr_toad wrote:
| I've heard that Torvalds build Git in 5 (or 10) days and that
| Brendan Eich created JavaScript in 10 days.
|
| Maybe the average programmer is less efficient, but the
| distribution is probably heavily skewed these days.
| markus_zhang wrote:
| I'd argue that ordinary programmers can perform the same
| *type* of exercises if they:
|
| - Put away a few weeks and go into Hermit mode;
|
| - Plan ahead what projects they have in mind, which
| books/documents to bring with them. Do enough research and a
| bit of experimental coding beforehand;
|
| - Reduce distraction to minimum. No Internet. Dumb phone
| only. Bring a Garmin GPS if needed. No calls from family
| members;
|
| I wouldn't be surprised if they could up-level skills and
| complete a tough project in three weeks. Surely they won't
| write a UNIX or Git, but a demanding project is feasible with
| researches allocated before they went into Hermit mode.
| richardlblair wrote:
| I also think people under estimate how much pondering one
| does before starting a project.
| markus_zhang wrote:
| I think so. I don't think Ken had zero thought about UNIX
| and then suddenly came up with a minimum but complete
| solution in under 3 weeks. Previous experience also tells
| a lot too. Wozniak was able to quickly design some
| electronics, but he probably already bagged 10,000 hours
| (just to borrow the popular metaphor) before he joined
| HP.
| nyrikki wrote:
| They both had been working on the Multics project for
| Bell Labs before they pulled out of the project and had
| written several languages already.
|
| While some ideas like hierarchical filesystems were new
| it was mainly a modernized version of CTSS according to
| Dennis Ritchie's paper "The UNIX Time-sharing SystemA
| Retrospective"
|
| I was playing with this version on simh way too late last
| night, taking a break from ITS, and being very familiar
| with v7 2.11 etc.. It is quite clearly very cut down.
|
| I think being written in Assembly, which they produced by
| copying the DEC PAL-11R helped a lot.
|
| If you look through the v1 here:
|
| https://www.tuhs.org/Archive/Distributions/Research/Denni
| s_v...
|
| It is already very modular, and obviously helped by dmr's
| MIT work:
|
| https://people.csail.mit.edu/meyer/meyer-ritchie.pdf
|
| But yet...work for years making an ultra complex OS that
| intended to provide 'utility scale' compute, and writing
| a fairly simple OS for a tiny mini would be much
| easier....if not so for us mortals.
|
| It isn't like they just came out of a code boot
| camp...they needed the tacit knowledge and experience to
| push out 100K+ lines in one year from two people over
| 300bps terminals etc...
| markus_zhang wrote:
| Yeah. They were pretty professional by then :D
| somat wrote:
| > I've heard that Torvalds build Git in 5 days
|
| And it shows.
|
| I am joking of course, git is pretty great, well half-joking,
| what is it about linux that it attracts such terrible
| interfaces. git vs hg, iptables vs pf. there is a lot of
| technical excellence present, marred by a substandard
| interface.
| wbl wrote:
| That's why Magit exists
| wbl wrote:
| Brendan Eich would say "10 days" whenever one of the big
| warts from the that are unfixable came up.
| somat wrote:
| It is also the case that the first 80% of a projects
| functionality goes really quickly. Especially when you are
| interested and highly motivated about the project. That
| remaining 20% though. That is a long tail, it tends to be a
| huge slog that kills your motivation.
| JeffTickle wrote:
| Can anyone provide a reference on what those file permissions
| mean? I can make a guess but when I searched around, could not
| find anything about unix v2 permissions. ls output looks so
| familiar, except for the sdrwrw!
| b0in wrote:
| Someone in the mailing list thread linked the man pages that
| they were able to extract out
|
| https://gitlab.com/segaloco/v1man/-/blob/master/man1/stat.1?...
|
| for sdrwrw:
|
| - column 1 is s or l meaning small or large
|
| - column 2 is d, x, u, -; meaning directory, executable,
| setuid, or nothing.
|
| - the rest are read-write bits for owner and non-owner.
| Postosuchus wrote:
| Pretty interesting. I guess it was way later, when they came
| up with the SUID semantics and appropriated the first
| character for symlinks (l) or setuid binaries (s)...
___________________________________________________________________
(page generated 2025-02-20 23:01 UTC)