Bootstrapping EDSAC: Initial Orders - Computerphile

Sdílet
Vložit
  • čas přidán 5. 03. 2018
  • How did early computers like EDSAC deal with programs? Professor Brailsford on the code David Wheeler wrote to make people's life easier.
    Our special thanks go to Professor Martin Campbell-Kelly for the simulator and advice.
    If you want to play with the simulator, you can find it here: bit.ly/c_EDSACSim
    / computerphile
    / computer_phile
    This video was filmed and edited by Sean Riley.
    Computer Science at the University of Nottingham: bit.ly/nottscomputer
    Computerphile is a sister project to Brady Haran's Numberphile. More at www.bradyharan.com

Komentáře • 134

  • @VoteScientist
    @VoteScientist Před 6 lety +142

    I once programmed a computer with a hammer.
    On the IBM 360 mod 30 boot code was stored in read only TROS strips (transformer read only strip). A one or zero was encoded by which side of a magnet the strip had a hole. One night we were doing engineering changes on a mod 30 and I was tasked with adding new holes to a TROS strip. This was done using a hammer and a 3/8 inch punch.

    • @VoteScientist
      @VoteScientist Před 6 lety +25

      It was 1968 when we were doing EC's on the IBM 360 equipment. Interestingly the 360 mod 40 did use punched cards for micro code and boot code. Rather than TROC the mod40 used CROS (capacitive read only storage). One and zeros were encoded by holes the a standard punch card. the cards were sandwiched between a flat plate and an array of addressable electrodes. The card hole provided a dielectric different from a no hole. CROS was bulkier than TROS, but much faster to read. Instead of a hammer I used an 029 to program the micro code. Higher speed cpu's used still other methods for read only storage, including diode arrays. The first floppy disk was invented to store micro code the 360 channel controller. Oh yeah, I was there even before the 7094 back to the 650.

    • @amicloud_yt
      @amicloud_yt Před 3 lety +11

      Now that's what I call coding close to the metal

    • @siarles
      @siarles Před 3 lety +6

      @@amicloud_yt Coding right *through* the metal, it sounds like.

    • @ropersonline
      @ropersonline Před 2 lety

      @@VoteScientist It's probably worth mentioning that the IBM 029 was a card punch.

    • @uku4171
      @uku4171 Před rokem

      @@VoteScientist brilliant

  • @104d_3rr0r_vince
    @104d_3rr0r_vince Před 6 lety +71

    Normally I wouldn't watch this as it is too advanced for me BUT, who can resist to this guy?
    His spirit is strong.

  • @no_more_free_nicks
    @no_more_free_nicks Před 6 lety +37

    Finally I understand where the BIOS comes from. After 15 years of programming on the high level, watching this video actually closed some gaps in my thinking about computers.

  • @austinfernando8406
    @austinfernando8406 Před 5 lety +14

    I think computerphile should do a video on the Pilot​ ACE computer, it was designed by Alan Turing (starting 1945, finished in the 50s)

  • @renatac210
    @renatac210 Před 6 lety +9

    This is my favorite computer stuff related channel on youtube. Thank you so much Professor Brailsford, I always learn a lot with you.

    • @AndersJackson
      @AndersJackson Před 4 lety +1

      This is one of the best Computer Science introduction I have found on CZcams. And @ProfDaveB are really great in explaining theses stuff.

  • @GordonjSmith1
    @GordonjSmith1 Před 2 lety +2

    How wonderful see an explanation of the difference between 'operating code', and 'programming code'! Lordy I just learned so much!

  • @disorganizedorg
    @disorganizedorg Před 6 lety +5

    Wonderful video. I've used a Data General Nova 1220 with front-panel toggle switches (1978 in High School), and also booted a Univac 1100/42 from drum (1981 in the USAF). Also later used a bunch of PDP-11's as front end to Bell & Howell COM recorders, making microfiche in a service bureau.

    • @TimHayward
      @TimHayward Před rokem

      I still remember a lot of the PDP11 boot loader. Can't remember where I put my car keys, but part of my memory is tied up with that.

  • @johnwhitmore2531
    @johnwhitmore2531 Před 6 lety +23

    Brilliant stuff! Great to get a glimpse into the early days of computing. Thanks a million for it.

  • @pallzoltan
    @pallzoltan Před 6 lety +8

    6:37 "Oh Yeeah!" :D I love that reaction

  • @AZOffRoadster
    @AZOffRoadster Před 3 lety +2

    Brings back memories of writing bit-slice code on the AM2900. Our system used 3 in parallel. Fun times.

  • @fisheatsyourhead
    @fisheatsyourhead Před 6 lety +53

    Initial Orders II - Computerphile Boogaloo

    • @MrZeroPage
      @MrZeroPage Před 6 lety +3

      Nice one ... we salute you on that one !

    • @MrGoatflakes
      @MrGoatflakes Před 4 lety +1

      Except this one was better than the original

  • @pkeshish
    @pkeshish Před 6 lety +2

    this series is absolutely precious!

  • @nab-rk4ob
    @nab-rk4ob Před 6 lety +3

    Awesome! I've was taught by someone who worked with the lead female coder in the Navy in the late 60s. She's in the history books. He was a tall, bent, cigarette-smoking, hard drinking, cussing, programmer, who talked about her with such reverence.

  • @sleepCircle
    @sleepCircle Před 6 lety +1

    i love every video with Professor Brailsford in it. idk why. he's my favourite.

  • @TYNEPUNK
    @TYNEPUNK Před 6 lety +3

    I absolutely love this channel, thank you guys.

  • @ayushsharma9270
    @ayushsharma9270 Před 6 lety +12

    Can you do an episode dedicated to emulators. I really want to learn about them, and others would like to learn too.

  • @HerrLavett
    @HerrLavett Před 6 lety +4

    Wonderful video, great professor, nice lamp. ok curtain.

  • @frankharr9466
    @frankharr9466 Před 6 lety +3

    My first (and so far only) program didn't say "Hello world" but converted units of measure with fractions and multiple units.
    I think I missed a step or two.

  • @CristiNeagu
    @CristiNeagu Před 6 lety +27

    12:25 That's a bit confusing. I take that to mean 5 locations from the instruction pointer, when in fact it's 5 locations from the base address.

    • @mgrinzRafal
      @mgrinzRafal Před 6 lety +6

      Yes, I also expected the program to be like: O5@, O5@, O5@

    • @Thompson8200
      @Thompson8200 Před 6 lety

      Exactly what I came here to say!

    • @profdaveb6384
      @profdaveb6384 Před 6 lety +28

      Yes -- many apologies for that slip-up! I'll try and indicate in the sub-titles that the offsets are relative to the base address.

    • @profdaveb6384
      @profdaveb6384 Před 6 lety +7

      Thanks for this. Yes the character P is 00000 in EDSAC encoding and these 5 bits occupy the LH end of the word (see Fig. 5 of the Tutorial).
      It's a no-op as an op-code but is very useful in a machine where integer constants can only be inserted by making them look like pseudo-instructions!
      So , in P 23 F, the F resolves into a 0 at the far RH end of the word to show it's a single-length instruction. The 23 , or 0000010111 in 10-bit binary, occupies the 10-bit "Address" field but this is pushed one place to the left by the trailing 0 bit we already inserted for `F' . This shift left doubles the 23 into looking like 46 - if the word is regarded just as a bit-pattern for an integer. A trailing `D' in the instruction format plants a 1 at the far RH end. Combined with the shifted-left doubling already referred to, this explains why P 16 D is 16*2+1 = 33

  • @Chlorate299
    @Chlorate299 Před 6 lety +54

    Wow...I'm amazed they were able to get the entire "operating system" of the computer into 42 WORDS. More memory was used to type this comment.

    • @Verrisin
      @Verrisin Před 6 lety +8

      A LOT, LOT, LOT more memory was used to write it. XDXD
      - Your comment alone is about 8 18bit words. All the JS and browser stuff to write this... I don't even want to think how much more that is. XD

    • @hattrickster33
      @hattrickster33 Před 6 lety +24

      Yes imagine if the people back in 1950 knew we would be wasting MEGABYTES of memory simply to display comments.

    • @Verrisin
      @Verrisin Před 6 lety +7

      As true as that is, even worse is how many PB we are wasting storing and transmitting rubbish videos on YT XD.
      - I'm BY NO MEANS saying this video is rubbish, btw.! - It's great, but most stuff uploaded to YT actually is (and most people never see it)
      ... The world is moving fast. I wonder if in few years, people will laugh at us for worrying about a few GB. XD
      --- "What do you mean you measured your storage capacity in GB? My *pen* alone has 128GB of persistent RAM-SSD-XYZ memory-battery, and I buy a new one every week and it can do nothing but write*!" XDXD ..... yeah..... (... and they don't _need_ the new one, they are just tired of the color of the old one or something....)
      (* on every AR board around, synced to global network connected to everyone's mind or..... well, they probably don't need a pen, but that's beyond the point XD)

    • @TheGrooseIsLoose
      @TheGrooseIsLoose Před 6 lety +3

      Martin Verrisin The speed at which memory and storage grow always seem to be the ones that are the most apparent to me. When I got my previous laptop, it was the most advanced computer I’d ever owned, and I was questioning whether to bother getting 6 GB of RAM rather than 4 because why would I need more than 4? Then I built a desktop 2 years later with 16 GB, and my new laptop has 32 GB. Within 6 or 7 years, I went from thinking 6 GB was overkill to getting a laptop with 32 GB of RAM.
      For storage, Windows’s File Explorer makes it really easy to see how quickly what we consider big changes. This is its size classification:
      0 - Empty
      0-10 KB - Tiny
      10-100 KB - Small
      100 KB - 1 MB - Medium
      1-16 MB - Large
      16-128 MB - Huge
      128 MB+ - Gigantic
      Which seems ridiculous to me because when freeing up space, I consider anything under 1 GB completely insignificant. If I was asked to come up with the numbers to match those names today, I’d come up with this:
      0 - Empty
      0-1 MB - Tiny
      1-128 MB - Small
      128 MB - 1 GB - Medium
      1-8 GB - Large
      8-128 GB - Huge
      128 GB+ - Gigantic
      It’s clear from the vast differences between what Windows named the sizes whenever they started doing that and what I think of now that the concept of what’s big is changing rapidly.

    • @hattrickster33
      @hattrickster33 Před 6 lety +1

      Yeah I just bought the Apple iPen 128GB for $1000 and I'm already tired of the color. First world problems lol

  • @jansendimas
    @jansendimas Před 6 lety

    Positive Vibrations from Brazil!

  • @peabnuts123
    @peabnuts123 Před 6 lety +3

    If you wanted to print out "WORLD" i.e. O5@ O6@ O7@ O8@ O9@ and then later you decided you wanted do something else before printing WORLD (e.g. jump/branch, print another word "HELLO", etc.) wouldn't you still have to update all your offsets, because you had inserted more instructions between the program origin in memory and the location of your data (WF, OF, RF, LF, DF)?

    • @profdaveb6384
      @profdaveb6384 Před 6 lety +2

      Yes, you still have to get your offsets correct. But the much bigger pain (of having to change almost everything, if you moved a chunk of code to a new position) has now been overcome.

    • @peabnuts123
      @peabnuts123 Před 6 lety +1

      That's very convenient and impressive that Wheeler managed to achieve this in forty-something words 😳

    • @profdaveb6384
      @profdaveb6384 Před 6 lety +1

      Yes if you download the EDSAC simulator and read the documentation that comes with it, there is a listing of Initial Orders II somewhere in there. The more you study them, and work out exactly what they are doing, the more impressive David Wheeler's achievement becomes.

  • @sebbes333
    @sebbes333 Před 6 lety +6

    *@Computerphile* Would humans be able to hear the beeping from the mercury tank, or is it outside human hearing? maybe because of the weight of the mercury or something?

    • @andrewgrillet5835
      @andrewgrillet5835 Před 5 lety +3

      It is way higher than human hearing over 100kHz, I think. Incidentally, Maurice Wilkes told me they wanted to use Alcohol instead of Mercury as it was more stable with temperature, but no one could guarantee the security of that much alcohol in the presence of students.

  • @DamaKubu
    @DamaKubu Před 6 lety

    I love this prof.

  • @davel8116
    @davel8116 Před 6 lety +1

    Brailsford? Press play and thumbs up immediately.

  • @AndersJackson
    @AndersJackson Před 4 lety +1

    So? Initial Orders 2 are a sort of very simple version of ld.so(8) or ld-linux.so(8) in Linux, for loading and dynamic linking in Linux?

  • @braindeadbzh
    @braindeadbzh Před 6 lety +5

    There is one thing I don't understand, if the address given by @ is relative to the current instruction, should it not be always O5@? As each instruction will the base address? Or the @ is relative to the beginning of the program?

    • @HebaruSan
      @HebaruSan Před 6 lety +7

      I think he may have misspoken at some point if he implied that. Reasoning backward, if you get to address 69 by adding 05 to something, then that something is 64, but that instruction was from address 66. So it's not relative to the current instruction. Scrolling up, the "T64K" instruction is probably setting the base offset shared by all the subsequent instructions (and that might be what the video was about).

    • @kindlin
      @kindlin Před 6 lety

      I made a quick reply to another similar comment, and I think this has to do with the limited size of the initial orders.
      In order to make the memory reference relative to the current line versus relative to the start of the program, it would have to take more memory and code to keep track of your current line, as well as the relative reference itself, to then add both of them to the initialized start of the program.

  • @Tupster
    @Tupster Před 6 lety +5

    I was looking for a video called "Initial Orders I" in vain.

  • @alexandermirdzveli3200

    Great story!

  • @danceswithdirt7197
    @danceswithdirt7197 Před 6 lety

    This is so cool.

  • @ivuldivul
    @ivuldivul Před 6 lety

    I find these wretched things fascinating

  • @nicolaiveliki1409
    @nicolaiveliki1409 Před 3 lety +1

    Necessity may be the mother of invention, but laziness is its father

  • @2GFactFinder
    @2GFactFinder Před 5 lety

    Beautiful.........................

  • @DavidVaughan00
    @DavidVaughan00 Před 6 lety +7

    It'd be really cool if you interviewed youtuber Sethbling, the guy who programmed a hex editor into Super Mario World using SNES controllers. Lots of interesting low-level stuff there.

  • @medinachete73
    @medinachete73 Před 5 lety

    I'm relatively new at this. Are O and F "APIs" or "system calls"? Just starting to play with asm.

  • @thromboid
    @thromboid Před rokem

    The name "Initial Orders" always seemed quaint and faintly militaristic to me - fitting for the post-war period the EDSAC was developed in. But I'm glad other terms (instruction, statement, command, etc.) became popular, avoiding confusion with "order" in the sense of a sequence, or "order" as in a class or rank within a hierarchy.

  • @ailijic
    @ailijic Před 6 lety

    I love those curtains.

  • @11Kralle
    @11Kralle Před 6 lety

    Life is good!!!

  • @reneko2126
    @reneko2126 Před 6 lety +7

    That is some matrix level wizardry right there at 10:39

    • @HebaruSan
      @HebaruSan Před 6 lety +4

      You say wizardry, others might say "mere" competent engineering.
      Doesn't seem all that different from learning to read hex dumps of some binary format. Surprising and impressive if someone just does it unexpectedly, but very do-able if you sit down and make yourself learn it.

    • @spooky_action
      @spooky_action Před 6 lety +7

      I don't even see the code, I just see blonde, brunette, redhead

  • @RonJohn63
    @RonJohn63 Před 6 lety +6

    14:45 Now you know why linkers used to be called link-loaders, and the Unix linker is still named _ld._

    • @lvl10cooking
      @lvl10cooking Před 6 lety +1

      Didn't code "bugs" get thier name from the insects that'd get stuck in the rotors and memory and prevent intended function?

    • @RonJohn63
      @RonJohn63 Před 6 lety +1

      No. The term "bug" has been used in engineering circles since the 19th century.

    • @klaxoncow
      @klaxoncow Před 6 lety +1

      Indeed. It's an interesting etymological mystery.
      But the most fruitful avenue appears to be that it's actually related to "bug" in the sense of illness. When you've caught a cold or the flu and you might say "I've caught a bug". Which actually takes its etymological journey past Shakespeare, who talked of a "bug" being upon someone, meaning that an illness had befallen them.
      Tracing it further, this sense of "bug" actually comes from the pre-scientific belief that illness was caused by "evil spirits". That if someone had gone mad by illness, this was because a malicious ghost had "possessed" them. And, in Medieval times, they had a wonderful means of "curing" someone - called "trepanning" - where they drilled a hole in a person's skull to let out or release this "spirit".
      So this brings us to the conclusion that when we say a program has a bug, the underlying semantics are that there is a "ghost in the machine", as it were, that's behaving maliciously and driving the thing to a bit of "temporary insanity" and a bout of the sniffles, so to speak.
      That it's feeling a bit under the weather because it's "caught a bug", which is itself the notion that you've been possessed by a malicious spirit, passing through.
      So, really, a debugging session could alternatively be called "an exorcism".
      **cue Mike Oldfield's "The Exorcist" theme**

    • @RonJohn63
      @RonJohn63 Před 4 lety

      @Evi1M4chine I made two comments. Which are you challenging?

  • @MrMalchore
    @MrMalchore Před 6 lety

    I wonder when this video was shot. Couldn't help but notice Prof. Brailsford is still using Windows 7.

    • @MrGman590
      @MrGman590 Před 5 lety

      When I do use Windows, I still use Windows 7. I refuse to use a newer version.

  • @crazylegs85
    @crazylegs85 Před 5 lety

    I see someone was able to produce the T-shirt the professor wanted.

  • @tcsiwula
    @tcsiwula Před 6 lety

    He so happy :)

  • @Alex2Buzz
    @Alex2Buzz Před 6 lety +1

    Holy crud it did address relocation?

  • @estebanmorales4089
    @estebanmorales4089 Před 6 lety

    Buen video

  • @Jeff121456
    @Jeff121456 Před 6 lety

    I was keying-in instructions up until 1993. Only for diagnostics though. Harris 100 24 bits with twinkling lights.

  • @petros_adamopoulos
    @petros_adamopoulos Před 6 lety +2

    The rubik's cube in the back has been in this exact position and state, for what is now 60 years xD.

    • @ludvercz
      @ludvercz Před 6 lety +3

      And then 44 years ago Rubik actually invented the thing. Man, time travel is complicated.

  • @Poldovico
    @Poldovico Před 6 lety +3

    The ultimate cruel irony would be to write the edsac emulator in lua running over java.

    • @Poldovico
      @Poldovico Před 6 lety

      In fact, scratch that. It would be to write it in Haskell.

    • @sameash3153
      @sameash3153 Před 3 lety

      I love lua!!! :D gives me a warm feeling in my heart.

  • @21guitarworld
    @21guitarworld Před 6 lety +3

    The mitochondria is the powerhouse of the cell

    • @Roxor128
      @Roxor128 Před 6 lety

      Looks like someone posted in the wrong tab. This is a computer science video, not a biology one.

    • @TheBluMeeny
      @TheBluMeeny Před 6 lety

      Roxor128 Oh jeez youre right, Ill correct that comment for you.
      The mitochondria is the powerhouse of the CPU.

  • @manchul
    @manchul Před 6 lety +1

    Oh my god, it's like program and data segment???
    The 66~68 is program and 69~71 is data.
    Or not...

    • @RolfRBakke
      @RolfRBakke Před 6 lety

      Correct. Von Neumann architecture.

  • @sebastianlenzlinger9291

    how to print a ‚Z‘ if ZF is stop?

  • @-ion
    @-ion Před 6 lety

    How do you output an asterisk?

    • @RolfRBakke
      @RolfRBakke Před 6 lety

      With an escape char ofcource! :)

  • @damejelyas
    @damejelyas Před 6 lety +1

    and some people complain about assembly language

  • @johnhunter5247
    @johnhunter5247 Před 6 lety +3

    but what are the 42 words tho

    • @KlausWulfenbach
      @KlausWulfenbach Před 6 lety +6

      For that, the mice will need a computer the exact size and shape of Earth...

    • @kyoung21b
      @kyoung21b Před 6 lety

      John Hunter - not sure what comes after life, the universe, and everything..,

  • @ButteryCowEgg
    @ButteryCowEgg Před 6 lety +27

    Hi

  • @dangnabbit1379
    @dangnabbit1379 Před 6 lety

    >>>THIS

  • @mikejohnstonbob935
    @mikejohnstonbob935 Před 6 lety

    hello world level: expert

  • @alessandrozanardi4393
    @alessandrozanardi4393 Před 6 lety +5

    Why does he have a log(2,10) shirt?

    • @Discount_Friendly
      @Discount_Friendly Před 6 lety +1

      Alessandro Zanardi in a previous video i think he said that a base 2 computer needs log(2,10) times the circuitry than a base 10 computer

    • @GdotWdot
      @GdotWdot Před 6 lety +1

      In an old video he said if someone makes one he'll buy it. The formula itself describes something like how many more binary digits it takes to encode a decimal number, but I'm not sure if I remember right.

    • @Discount_Friendly
      @Discount_Friendly Před 6 lety +3

      it’s in the why use binary video and the prof even said that if someone made a shirt saying “log2(10) = 3.32193” he’ll buy one

  • @amywyvern3924
    @amywyvern3924 Před 6 lety

    I'm getting distracted by the Rubik's cube in the recent videos. ^_^

  • @platin2148
    @platin2148 Před 6 lety

    Runtime Linker like thing.

  • @kieranthompson171
    @kieranthompson171 Před 6 lety

    ICAR

  • @justinliu7788
    @justinliu7788 Před rokem

    jit compiling asm

  • @hearueszueke6206
    @hearueszueke6206 Před 6 lety

    Hi again

  • @infiniteen
    @infiniteen Před 6 lety

    hi 3rd!

  • @heinerml2
    @heinerml2 Před 3 lety

    eggsac

  • @rockisch2758
    @rockisch2758 Před 6 lety

    >not using discord
    >using skype
    kek

  • @richardamullens
    @richardamullens Před 6 lety +2

    Clearly some people find this historical information interesting, but I would much prefer to hear more modern stuff such as the admirable talk on Bitcoin Scaling or how to set up a Mesh network or using the Raspberry Pi GPU
    I used the machine at the Maths Lab in 1970. I remember the flexowriters where you could feed the 5 hole paper tape output back into the input and it would copy it until stopped. It had letter shift or similar. Then the PDP8 and PDP 11 had switch registers with Load address and deposit keys. The PDP8 ? had a RIM and a BIN loader & the PDP11 had an absolute loader I believe. The PDP11 maintained its core memory after power down and one could leave a program in memory which would start automatically on power up.
    Later generations will have entered Basic or Z80 machine code into their ZX80 or Spectrum computers and nowadays there is information as to how to write in Assembler for the Raspberry Pi

    • @Roxor128
      @Roxor128 Před 6 lety +2

      I find this early stuff much more interesting than the stuff from my lifetime. When I visited the museum of computing at Bletchley Park in 2016, I spent most of my time with the machines from before I was born, and only had an hour before closing time to skim over the stuff from the 1980s and onwards.
      There's something fundamentally more interesting about punching a program on paper tape than typing into GW-BASIC.

    • @richardamullens
      @richardamullens Před 6 lety +1

      Roxor128 A stint at maintaining a suite of COBOL programs held on punched cards would probably cure you of this ;)

    • @Roxor128
      @Roxor128 Před 6 lety +2

      Richard Mullens - Heh. Probably. I've looked up COBOL on Wikipedia and from the source code samples I've seen there, I don't fancy having to write it.

    • @lvl10cooking
      @lvl10cooking Před 6 lety

      Richard Mullens They... They still use those?!

    • @peterjohnson9438
      @peterjohnson9438 Před 6 lety +1

      Onno Inada rarely, but I've heard of systems in use at banks that are specced to perform some ops exactly as "the original".. which is written in COBOL on punched cards and stored in a vault.