Coding Assembly on a 1980s Business Minicomputer

แชร์
ฝัง
  • เผยแพร่เมื่อ 31 ก.ค. 2024
  • The ‘ol Hawk drive on the new mini Centurion has been giving me all sorts of grief, so it’s time to get a little more methodical in my troubleshooting approach. And one of the steps that I took to get a handle on the drive, was writing a little assembly program to automate some drive operations. I wanted it to setup the drive, do a format write, read it back, and tell me what the status was. Then increment to the next sector and do it all over again. Sounds easy, right? Well, assembly can trip even the most seasoned programmers up, but I think we skated by with relative ease this time!
    Centurion Wiki:
    github.com/Nakazoto/Centurion...
    If you want to support the channel please hop over to Patreon:
    / usagielectric
    Also, we now have some epic shirts for sale!
    my-store-11554688.creator-spr...
    Come join us on Discord and Twitter!
    Discord: / discord
    Twitter: / usagielectric
    Intro Music adapted from:
    Artist: The Runaway Five
    Title: The Shinra Shuffle
    ocremix.org/remix/OCR01847
    Thanks for watching!
    Chapters
    0:00 Introduction
    2:10 A refresher on the CPU
    3:40 Let’s write some Assembly
    6:15 The top of the program
    9:19 How to do long delays
    11:28 Setting up the cylinder address
    13:24 Starting the main loop
    14:43 Speedrunning the main loop
    16:04 Checking if we had a successful read
    17:50 What happens if the read is bad?
    20:09 Incrementing the cylinder/head/sector
    21:42 Our delay subroutine
    22:31 Assembling it
    24:57 Giving it a test
    27:00 Kitties!
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 302

  • @njphilwt
    @njphilwt ปีที่แล้ว +14

    Very nice work. It brings back memories. I worked on a similar task back in the day. It was an LSI-11 (PDP), and the customer was a repair shop. They wanted to load their diagnostic software from floppy instead of paper tape, and I wrote a tool to write the paper tape diag program to floppy. I included a bootstrap program to trigger the load from sector zero. It was just huge fun for me. I was 16 yo.

    • @UsagiElectric
      @UsagiElectric  ปีที่แล้ว +3

      That's awesome! I'm just now starting to get into PDP-11 stuff and it's a rabbit hole of epic proportions. Kudos to being able to figure that stuff out when you were 16, I was mostly dumb at 16, haha.

  • @laser31415
    @laser31415 ปีที่แล้ว +6

    This reaffirms to me how beautiful and easy Z80 assembly is by comparison.

    • @lawrencemanning
      @lawrencemanning ปีที่แล้ว +2

      If you want a cute 8 bit assembly, look at the 6809 ISA. It’s a thing of beauty. Easily the best 8 bit machine, which isn’t surprising as it was pretty much the last.

  • @aldergas01
    @aldergas01 ปีที่แล้ว +57

    Wonderful, there's really a lack of content like this on the internet. Thank you, Usagi, and much success in your projects.

    • @UsagiElectric
      @UsagiElectric  ปีที่แล้ว +6

      Thank you so much!
      It's a lot of fun exploring this kind of weird, forgotten niche of business computing!

  • @colonelbarker
    @colonelbarker ปีที่แล้ว +2

    My 20 month old boy who watched your video with me was very, very happy with the last shot and shouted out "Cat cat cat".

    • @UsagiElectric
      @UsagiElectric  ปีที่แล้ว +1

      Your boy knows who the real starts of the show were!

    • @colonelbarker
      @colonelbarker ปีที่แล้ว

      @@UsagiElectric FWIW I really enjoyed learning about assembly on this machine

  • @charliemorris9295
    @charliemorris9295 ปีที่แล้ว +1

    Brings back memories of assembly language programming on military computers using a VAX assembler in the early 1980’s

  • @suntexi
    @suntexi ปีที่แล้ว +7

    My first assembly language was IBM 1401, which was called Autocoder. I then learnt IBM 360 Assembler. Seeing this variant is so exciting, not least because, when you get into machine code at this level, it's such an exercise for the brain.

  • @MISTER__OWL
    @MISTER__OWL ปีที่แล้ว +8

    These kinds of channels are the highest quality of educational videos I've ever seen. Thank you for your hobby, and for taking the time to share all your work with us.

  • @herbertsusmann986
    @herbertsusmann986 ปีที่แล้ว +11

    This reminds me of my early computer days when I used to toggle in the machine code through the front panel switches of a Data General Nova 1200 with 4K of core memory! Talk about primitive machine language, the Nova line was super primitive! Also, those machines back then typically used Octal notation not Hexadecimal (base 8, not base 16).

    • @nikkiofthevalley
      @nikkiofthevalley ปีที่แล้ว +1

      I assume because that was the word size?

    • @Santor-
      @Santor- ปีที่แล้ว +4

      They sure made them seem far more advanced in the 1960s movies, controlling people's brains, knowing what you were thinking, anticipating your future behavior etc. Reality was much different. Movie makers ether had no clue of actual computers, or just presented pure fantasy. Or both.

    • @herbertsusmann986
      @herbertsusmann986 ปีที่แล้ว +4

      @BlueFire Animations The DG Nova series of machines were all 16 bit machines but they always used octal notation with the high octal digit being only a 0 or 1 as in "135741" octal representing a binary "1 011 101 111 100 001". It was just a holdover from earlier days. Hex was used a bit later when 8 bit microprocessors (ie. single chip) came out. I always found octal a bit easier because there were no symbols needed beyond 7. It took me a while to get proficient at hex because I had to learn the binary for A thru F which was not totally obvious at first without writing or counting it out.

  • @nickjohnson410
    @nickjohnson410 ปีที่แล้ว +5

    I've been getting interested in assembly when I learned Chris Sawyer programmed RCT, RCT2, and Transport Tycoon in assembly. Thank you for doing this.

  • @lindoran
    @lindoran ปีที่แล้ว +14

    This is a very down to Earth explanation of assembly :)

  • @Pulverrostmannen
    @Pulverrostmannen ปีที่แล้ว +4

    oh boy, I am pretty good at repairing hardware and stuff but I feel so lost and behind when it comes to coding. it is really impressive how you people can manage this stuff

  • @horusfalcon
    @horusfalcon ปีที่แล้ว +11

    Man, your enthusiasm is contagious! Where else can we see someone partying like it's 1983 along with bunnies or (this time) kitties? Here's hoping your second rig is ready for the VCF meet.

    • @lawrencemanning
      @lawrencemanning ปีที่แล้ว +1

      It’s great seeing folks excited at their own creations eh? Bloody amazing. Somewhere on TH-cam there’s a video of a kid going wild getting his home built, out of scrap, two stroke single cylinder IC engine running. It’s the best thing ever. If I find it I’ll post a link. I guarantee it will make your day. :)

    • @UsagiElectric
      @UsagiElectric  ปีที่แล้ว

      Thank you so much!
      The very next episode has some pretty exciting news on the drive!

    • @lawrencemanning
      @lawrencemanning ปีที่แล้ว

      th-cam.com/video/ypwzEumMx00/w-d-xo.html
      There, found it. :)

    • @horusfalcon
      @horusfalcon ปีที่แล้ว

      @@UsagiElectric You're such a tease, man! 😄

  • @MrEmiosk
    @MrEmiosk ปีที่แล้ว

    This is a step beyond programming through a monitor... literal punching in hex opcodes directly into ram memory. Damn satisfying.

  • @c128stuff
    @c128stuff ปีที่แล้ว +5

    So.. I know nothing about the Centurion, but your journey, and videos you make about that, are totally fascinating. Thank you for making them available.
    As someone who still writes assembler on an everyday basis (writing a brand new multithreaded OS kernel for a specific 6502 based machine)... it takes a really really organized approach to write anything complex in assembler.

  • @wtmayhew
    @wtmayhew ปีที่แล้ว +11

    That editor bears a resemblance to the editor Apple wrote for their 6502 assembler which ran from floppy. I wrote thousands of lines of 6502 assembly in the early 1980s and even got pretty good at using the machine monitor to enter snippets of code when I didn’t feel like waiting for minutes on the the assembler. The 6502 only has 55 op codes and at one point I had the hex for about 40 or so of the commonly used op codes memorized. It was kind of fun to drop to the monitor and just start entering code in hex to do real work.

    • @atari7001
      @atari7001 ปีที่แล้ว +1

      What applications did you write?

    • @wtmayhew
      @wtmayhew ปีที่แล้ว

      @@atari7001 I worked in a research lab. One major application was a sequencer with a GUI for a touch discrimination experiment where we were collecting EEG and looking at cortical processing related to determining stimulus intensity. A grad student in the lab wrote a very extensive system in assembly for processing 8 channels of EEG analyzing current source density. I hacked Vectrex video games for displays, but we only used the CRT and drive electronics, completely ignoring the internal 6809. The output was from a Mountain Computer A/D+D/A in the Apple ][. We also figured out the entry points for the Microsoft BASIC interpreter, calling the floating point so we didn’t have to write our own. We also figured out the RWTS of the Apple DOS so we could write to disc from assembly. I also wrote several applications for processing intracellular neural signals as well as an application to raster scan a field with galvanometer motors to move a light spot. We used that to identify where in the visual field various neurons in hamsters responded. Back then writing in assembly was pretty much required for anything needing precise timing. I also wrote code for a a custom environmental monitor box with TASM (table driven assembler) with 6502 target running on an AT compatible to burn code to EPROMs. I wire-wrapped the board with the CPU, VIA, 2K RAM, 2K ROM and 16 character LCD. It is surprising how much logic can fit in a 2K EPROM when writing in assembly. I did everything I wanted and still had a little space left in the 2716. Of course what took days back then could now be done on a low end Arduino in a few hours. Working with bare metal gets old, I don’t really want to go back to the days of writing loops and keeping track of how many microseconds each instruction takes, padding branches with NOPs to make different logical paths take the same amount of time, etc. It does give an appreciation of how much easier it is now.
      I also wrote some applications on PDP 11/03 with floppies (ugh!) and 11/34 with RL-02 discs running RT/11. We were grabbing coordinates from a microscope with stepper motors positioning the stage and focus for the Z direction and displaying the reconstructions on a VR-17 vector display. That didn’t require anything time critical so I wrote in FORTRAN. Later, I wrote various things in MS-DOS for IBM DACA boards to collect data. I used Borland C with a little in-line assembly and occasionally Visual BASIC (the really old version with a text based editor).

    • @melkiorwiseman5234
      @melkiorwiseman5234 ปีที่แล้ว +4

      Something many people never realised about the old MS-DOS days was that it was possible to transfer a program in text format. All you needed to do was to disassemble it using DEBUG and have it output the disassembly to a file, then you could reverse the process on the other end to re-assemble the program at the destination.
      Why would anyone do that, you may well ask? Well... it was (both fortunately and unfortunately, depending upon circumstances) possible to bypass email attachment restrictions this way. Don't ask me how I know this. 😉😇

    • @wtmayhew
      @wtmayhew ปีที่แล้ว +4

      @@melkiorwiseman5234 DEBUG was a very handy program. I used it many times up through DOS 6.0. I recall entering a little TSR routine manually using DEBUG. It was also necessary on old ST506/412 hard drives to jump to the controller ROM to call the low level format routine. Most controllers had the entry point offset by 5, so you’d invoke it with DEBUG then g=c800:5.

  • @frankowalker4662
    @frankowalker4662 ปีที่แล้ว +16

    That's awesome. Nice work on the program.
    Cute kitties. :)
    The Z80 has 677 Op-Codes, which is why I love using it. It's so versatile and powerful yet easy to program.

    • @UsagiElectric
      @UsagiElectric  ปีที่แล้ว +1

      Thank you!
      I suppose it depends on how you count the OpCodes. The Centurion has a fundamental 1-byte OpCode it starts with, but depending on the instruction, it'll use anywhere from the next byte to the next five bytes to modify or expand upon that OpCode. For example, the 2F OpCode expands out into nine different OpCodes for DMA control depending on what the following bytes are. OpCode 46 is the same way, it can do big number addition, subtraction, division, multiplication, transfers, negations, etc.
      Centurion assembly starts out super easy and then very rapidly gets into mind-bending insanity!

    • @frankowalker4662
      @frankowalker4662 ปีที่แล้ว

      @@UsagiElectric Yeah, keeping track of the qualifyers can be fun. LOL.

  • @melkiorwiseman5234
    @melkiorwiseman5234 ปีที่แล้ว +1

    Puddy Tat "pianoing" on another puddy is sooooo keeyewt! 😆

  • @dhpbear2
    @dhpbear2 ปีที่แล้ว +3

    I recognize the "Spanish Eyes" pinball machine! I played this some 50 years ago when I was in high school! The machine to its right appears to be a Gottlieb, my favorite variety of E-M machines!

    • @UsagiElectric
      @UsagiElectric  ปีที่แล้ว

      I'm super excited about playing the Spanish Eyes machine, it seems like a super fun game.
      We recently wheeled it out into the garage to start work on it. It'll be getting a new rubber kit and a lot of contact cleaning. The other machine in the room is actually a Williams Merry Widow, which has been in the family since before I was born!

  • @grandrapids57
    @grandrapids57 ปีที่แล้ว +1

    I can't tell you how happy I am that there are programmers like this doing work like that, so people like me don't have to do assembly.

  • @Sashazur
    @Sashazur ปีที่แล้ว +1

    This really brings me back! In the 80s in college I did assembly language programming on the TRS-80 color computer (6809 CPU) wrote a few utilities that got distributed on subscription cassettes. This was at the same time I was learning PDP-11 assembly in college and it was mind blowing that my home computer had better addressing modes than the mini computer. A few years later in my first real job I did microcode programming on an Ikonas development system, a very early type of GPU that my employer RCA was using to prototype a graphics chipset they were developing. It was all nerd heaven!

  • @rwdplz1
    @rwdplz1 ปีที่แล้ว +3

    "We'll talk about that next time."
    Let me guess: There's a guy out there somewhere hoarding boxes of old Hawk Drive heads?

  • @holgers5216
    @holgers5216 ปีที่แล้ว +5

    nice bit of 'Model T' coding there!!

    • @duncanwilliams2350
      @duncanwilliams2350 ปีที่แล้ว +1

      Any customer can have a program run on any machine that they want, so long as it is assembly.

  • @spagamoto
    @spagamoto ปีที่แล้ว +2

    This is absolutely captivating! I missed this era of computing and it's fascinating to see it in action. Can you speak a little more about why the DLY is needed in INC2?

  • @tarzankom
    @tarzankom ปีที่แล้ว +13

    I'm happy to see you're making more progress on the project. I hope you're able to fix up the second Centurion in time for the convention. I'm always fascinated by these old minicomputers and the hacking effort required to make them do useful things.

  • @BaronSamedi1959
    @BaronSamedi1959 ปีที่แล้ว +1

    1983. That's the year I finished Law School. I was the first Law School student who wrote his Master's thesis on a word processor (Scripsit on a TRS-80 Model 1 with expansion interface). I never told my professor I spent much time writing the printer driver rather than researching for my thesis. And yes, this printer driver was written in Assembly.

  • @andrewdunbar828
    @andrewdunbar828 ปีที่แล้ว +7

    I've been waiting and hoping to see some assembly coding on this beast.

  • @standardnerd9840
    @standardnerd9840 ปีที่แล้ว

    Thank you for reminding me why I went into IT rather than coding. I learned COBOL & System 370 3033 Assembler in the 80's and absolutely hated it :)
    My father, the COBOL instructor, was disappointed. On the bright side, MY son is a coder, so it skipped a generation.
    Great video about Assembly AND we learned some biscuit making techniques at the end. Nice.

  • @milk-it
    @milk-it ปีที่แล้ว

    This is so well explained and step-by-step, that I’ve just learned some Assembly. Thanks!

  • @RetroOnSpeedDial
    @RetroOnSpeedDial ปีที่แล้ว +2

    I love the Centurion videos so don't feel bad about making them!

  • @ftorresgamez
    @ftorresgamez ปีที่แล้ว

    My wife says that she loves your cats, they're so cute! Greetings from Houston, TX.

  • @ChrisPinCornwall
    @ChrisPinCornwall ปีที่แล้ว +1

    Brilliant. I love this sort of thing. Well done you! I'm amazed there's no linkage editor. Thanks for sharing.

  • @BG101UK
    @BG101UK ปีที่แล้ว +1

    Fantastic video, really enjoyed it. Thanks! Looking forward to the next one.
    I'm not convinced the floors in some modern houses would actually withstand all that weight .. just a thought for potential collectors!

  • @TheGunnarRoxen
    @TheGunnarRoxen ปีที่แล้ว +2

    Ooh love it. I've always fancied a bit of coding in assembly. Very interesting!

    • @SmetadAnarkist
      @SmetadAnarkist ปีที่แล้ว +1

      Go for it! Nothing stopping you

    • @TheGunnarRoxen
      @TheGunnarRoxen ปีที่แล้ว

      @@SmetadAnarkist Good point!

  • @98grand5point9
    @98grand5point9 ปีที่แล้ว

    In 1983 I was doing assembler on the IBM 360/370. Congratulations on the successful assembly and testing of you hardware.

  • @silvenshadow
    @silvenshadow ปีที่แล้ว

    For something so boring this is one of the most exciting videos I've seen all night. Cheers! This was so fun.

  • @ropersonline
    @ropersonline ปีที่แล้ว +4

    22:34: When you hit Q there, I was sweating bullets and holding my breath to see if CED had in fact saved what you'd typed before quitting. (ed(1) would not have autosaved.)

    • @UsagiElectric
      @UsagiElectric  ปีที่แล้ว +2

      CED is fantastic in that it saves on a line by line basis, so no more losing huge swaths of data like Kompoz!

  • @terrymiller111
    @terrymiller111 ปีที่แล้ว

    Excellent art of teaching here.

  • @manjumanl5279
    @manjumanl5279 ปีที่แล้ว +1

    I'm proud of subscribing to your channel .

  • @KeritechElectronics
    @KeritechElectronics ปีที่แล้ว +6

    Nice! Now waiting for the CCC - Centurion C Compiler :)

    • @herbertsusmann986
      @herbertsusmann986 ปีที่แล้ว

      Also, when is a Linux distro coming out for the Centurion?

    • @UsagiElectric
      @UsagiElectric  ปีที่แล้ว +1

      Someone actually wrote a Centurion C Cross Compiler in the late 80s! We just gotta figure out how they did it, haha.

  • @wlhamaty
    @wlhamaty ปีที่แล้ว +18

    I did a lot of assembly back in the day. I'm trying to remember if I've done it professionally in the last 20 years. Once they added pipelines and out-of-order execution, hand-written assembly code would be just too weird.

    • @c1ph3rpunk
      @c1ph3rpunk ปีที่แล้ว +3

      Same, the last machine level stuff I wrote was somewhere around 1994, it had mostly transitioned to C, and to some degree, C++. K&R C on top of it, had a project to move a ton of code to ANSI C when Sun moves their compiler to it on Slowlaris.
      I’ve mucked around a little on Arduino’s, it’s just easier to use Micro or Circuit Python on an ESP chip for IoT work now.

    • @dale116dot7
      @dale116dot7 ปีที่แล้ว +2

      I’ve done it here and there. Usually math routines that need to be really fast, or sometimes a project that needs to run on too small of a processor. The last large project I did in assembly, an engine control module. The assembled code took about 45k or 50k of flash memory. I think I wrote it in 2006 though I had to make changes to it as late as 2017.

    • @kreuner11
      @kreuner11 ปีที่แล้ว +1

      What would be weird? You don't have to change it for it to work

    • @dale116dot7
      @dale116dot7 ปีที่แล้ว +1

      @@kreuner11 Some processors, high performances DSPs in particular, don’t have hardware guardrails (eg. inserting pipeline stall cycles) around order of execution and rely on the compiler to do it, though I’ve found that the assembler flags it, at least on the DSPs I’ve written on. More general purpose processors generally will run the code correctly but sub-optimally.

    • @monad_tcp
      @monad_tcp ปีที่แล้ว +2

      @@dale116dot7 unless its vectorized math code, then its almost impossible to beat modern compilers by writing it by hand

  • @grandrapids57
    @grandrapids57 ปีที่แล้ว

    this video blows me away.

  • @sevr_gaming
    @sevr_gaming ปีที่แล้ว +3

    I've since watched this fantastic video 287354 times ;)

  • @jeromethiel4323
    @jeromethiel4323 ปีที่แล้ว +7

    I had to learn machine language by hand coding. First on a Z-80 based TRS-80, then on Apple ]['s in school. Learning about the integer basic mini-assembler on the Apple, was a game changer. Wasn't until college that i finally got a pirated copy of a 6502 assembler.
    I was so good at hex math in high school, it wasn't even funny. Because i had to calculate the relative jumps myself, by hand. Even the calculator i had at the time would not do binary or hex math. So i had to do it by hand.
    I use that ability to this day.

    • @highpath4776
      @highpath4776 ปีที่แล้ว +2

      wish I had been taught about hex ( though in a way its sort of double the 8 times table ) when I was quite young, we had to learn times tables up to 12 x 12 ( presumably for UK weights and currency being useful for that ). I did the 13 x 13 for fun myself and thought there was not much point going further (I was nine), If I had known I probably would have gone a bit more.

    • @andrewdunbar828
      @andrewdunbar828 ปีที่แล้ว +2

      I hand-coded Z-80 always in decimal and never understood all the fuss around hex. Years later when I started 68000 I finally got an assembler (-:

    • @sqwert654
      @sqwert654 ปีที่แล้ว +2

      I had a Dick Smith System 80, learnt Assembly on that.

  • @DarwinsChihuahua
    @DarwinsChihuahua ปีที่แล้ว +1

    Great work!

  • @mmhvd66
    @mmhvd66 ปีที่แล้ว +7

    Love the series! You have two wrong jumps: in ERR you should branch to ER1, and in ER1 you should branch to ER2.

    • @forbiddenera
      @forbiddenera ปีที่แล้ว

      If you notice, the program is already written elsewhere with comments - this video is more of a demonstration of the assembly and doing it on the system itself I'm thinking

    • @mmhvd66
      @mmhvd66 ปีที่แล้ว +1

      @@forbiddenera You are probably right; I should have thought of that myself... It is, however, a deja-vu to the Hellorld-program :D

    • @ruawhitepaw
      @ruawhitepaw ปีที่แล้ว +1

      @@mmhvd66 "Hellorld" was completely intentional. Really! >.>

    • @UsagiElectric
      @UsagiElectric  ปีที่แล้ว

      Good catch!
      I did most of my development and testing on the emulator, and just typed it in on the real machine to demonstrate how it would have been done back in the 80s. Fortunately, with CED, I would have been able to fix that mistake relatively easily!

    • @UsagiElectric
      @UsagiElectric  ปีที่แล้ว

      @@ruawhitepaw Hellorld! was actually completely unintentional! That was totally a mistake on my part, skipping over some hex when punching it in. But, I re-filmed it intentionally for the dramatic reenactment for the video.

  • @chromosundrift
    @chromosundrift ปีที่แล้ว

    My favourite stuff is the software/programming content!

  • @IAmPaigeAT
    @IAmPaigeAT ปีที่แล้ว +1

    interesting that its an alu, I really like the idea of the xerox alto for this reason but I've never given much thought to what else exists besides the 74181, that's a really interesting machine you have I've been watching for awhile but I didn't know it was based on the 2901, thanks for covering this :D

  • @8BitNaptime
    @8BitNaptime ปีที่แล้ว

    Period correct debugging. Wow! 👍

  • @ropersonline
    @ropersonline ปีที่แล้ว +6

    4:49: It very much sounds like the Centurion Editor (CED) is a straight port of ed(1). Is it? Is it a work-alike? Do ed(1) man pages basically describe the same commands CED also uses? Is it a full or partial implementation of ed(1)? Much of that syntax should also be familiar to users of vi(1), which inherited it from ed(1). Arabesque has a good blog post up titled "Actually using ed", for anyone wishing to play along at home. And remember, as GNU/fun assures us, "Ed is the standard text editor."

    • @Bobbias
      @Bobbias ปีที่แล้ว +2

      CED was almost certainly based off ed, but I'd imagine it's a partial implementation.
      Fun fact, emacs is also based off ed, in a more roundabout way. The name is sort for editor macros, because it began life as a collection of macros which could be called in ed to automate certain tasks.

  • @Canthus13
    @Canthus13 ปีที่แล้ว +1

    STAB. I like that. I often feel like stabbing something when writing assembly for a 6502...

  • @urmenyi
    @urmenyi ปีที่แล้ว

    Congratulations. Regards from Brazil.

  • @OTuit
    @OTuit ปีที่แล้ว +11

    I wouldn't try to repair the hawk drive just to carry it for tradeshows because of its weight. I'd try to get a modern hawk drive emulator with a blinky panel.

    • @RichardBetel
      @RichardBetel ปีที่แล้ว +2

      I wonder if emulating the floppy would be easier. he's got it running on a floppy drive, but it was too slow, but I'll bet that if he replaced the floppy with something like an arduino with an SD card , which will effectively give him 0ns seeks and max throughput, it'll be quite a bit faster and useable for the show.
      My suspicion that the flooppy would be easier to emulate is because, as far as I know, most floppy interfaces were basically the same across many computer manufacturers, and there are already arduino, circuit python, and raspberry pi projects to act as host computers to read and write old floppies. I know they work with 5.25 and 3.5 inch drives, so the same code and hardware will likely work with 8-inch drives too.

    • @treelineresearch3387
      @treelineresearch3387 ปีที่แล้ว +4

      @Corporeal Undead I think there's big difference in the qualia of the experience of tapping on a real console into a real computer versus an emulator, but not so much with a storage device attached to that computer - the user simply doesn't interact with a storage device directly, and for the most part dealing with storage devices was on the "operator" of a mini rather than the user at the console even back in the day. Given how rare, fragile, and unobtainium these old drives/platters/heads are there's also a preservation justification for swapping it out with a solid-state device for "touring". The computer itself not only can survive bigger bumps, it's also made from stuff that's for the most part still easily available. Unlike a Hawk platter or head, you can get new production 74XX ICs, and vintage AM2901s aren't hard to find.

    • @DEMENTO01
      @DEMENTO01 ปีที่แล้ว +1

      @@treelineresearch3387 i mean on this computer u kinda do tho? its all about cylinders and tracks and how those dictate the "partitions" etc. its very hands on

    • @JB52520
      @JB52520 ปีที่แล้ว

      ​@@DEMENTO01 Emulators can handle that kind of thing, but in this case it would take too much away from the experience.

    • @sbrazenor2
      @sbrazenor2 ปีที่แล้ว

      ​@Corporeal Undead the whole point is to use real hardware, and stay as original as possible. You're right, if he wanted to go light he could just use a Raspberry Pi Zero or something and it would be magnitudes faster and more powerful, and would fit in a pocket.

  • @RogerBarraud
    @RogerBarraud ปีที่แล้ว

    An RS232 switch box and a USB-to-RS232 adaptor would come in handy.

  • @is0p0d
    @is0p0d ปีที่แล้ว +6

    Might be worth looking into whether the centurion supports interrupt driven I/O instead of having to use Polled I/O with that delay command - that way the hawk drive lets the computer know by itself when its ready

    • @gcewing
      @gcewing ปีที่แล้ว +2

      I'm sure it does, but for low-level testing on a drive where not everything is working, it's better to test just one thing at a time as far as possible.

    • @is0p0d
      @is0p0d ปีที่แล้ว +1

      @@gcewing makes sense! Heard that waiting for the drive to move line and my brain forgot everything else lmao

    • @melkiorwiseman5234
      @melkiorwiseman5234 ปีที่แล้ว +1

      He's not even using polled I/O in this case, but just waiting enough time to be sure the drive has finished what it's doing. Polled I/O would mean that the computer would enter a loop which continually polled the drive for a notification that it's finished the last operation and ready to return a status. The loop should also have a countdown to prevent it from locking up the computer if the drive never returns a ready status. That would be a T error for "timeout" (you could call that a terror error) 😆

  • @semuhphor
    @semuhphor ปีที่แล้ว

    Very cool. Thanks.

  • @jonathanpullen7439
    @jonathanpullen7439 ปีที่แล้ว

    I'm really starting to like that color of blue.

  • @edgeeffect
    @edgeeffect ปีที่แล้ว +5

    You need an RS232 null modem cable... that way you could have both systems networked. Well... sorta networked.... sorta semi-manual really clunky networked.

  • @darkwinter6028
    @darkwinter6028 ปีที่แล้ว +1

    STAB and slash, oh my! Who knew programming could be so violent! 🤪

    • @ICanDoThatToo2
      @ICanDoThatToo2 ปีที่แล้ว +1

      Who knew? Everyone who's had to debug a program! 👿

    • @darkwinter6028
      @darkwinter6028 ปีที่แล้ว

      @@ICanDoThatToo2 And the worst are Heisenbugs - the ones that are different depending on if you are looking at them (I.e, the debugger is attached) or not!

  • @c1ph3rpunk
    @c1ph3rpunk ปีที่แล้ว +4

    When others look oddly at me when I say “C is a high level language” I’m going to have them watch this. The current gen of “coders” believe that malloc() is SUPER low level, mainly because all they’re comparing to is Python.

    • @Bob-1802
      @Bob-1802 ปีที่แล้ว

      Indeed! Would be interesting to see their reaction.

  • @benttranberg2690
    @benttranberg2690 ปีที่แล้ว

    Assembly is a low-level language?! 😄 I don't remember we called it a language back in the days, but fair enough.

  • @urgon6321
    @urgon6321 ปีที่แล้ว

    One nice thing to do would be connecting a PC with some kind of terminal emulation program to the UART between terminal and Centurion in such a way, that it would read the both TX and RX lines and save the result to file. Some level shifting and AND gate should do the trick...

  • @robot797
    @robot797 ปีที่แล้ว

    nice job dude

  • @kellingc
    @kellingc ปีที่แล้ว

    That's awesome.

  • @michaelwarner5277
    @michaelwarner5277 ปีที่แล้ว +3

    26:05 The only reason the Centurion is displaying F's is that it's paying respects to you

    • @TheGunnarRoxen
      @TheGunnarRoxen ปีที่แล้ว

      Nakazoto needed to repeatedly leap back and forth over the Centurion to complete the ritual of respect 😂

  • @kenharbin3440
    @kenharbin3440 ปีที่แล้ว +1

    Booting into maintainence mode and hand typing machine code. I miss those days. Wait, maybe I don't.

  • @zyeborm
    @zyeborm ปีที่แล้ว

    For bonus credit have the working one send the program over serial to the not working one rather than typing it in each time ;-)

  • @aharkness5657
    @aharkness5657 ปีที่แล้ว

    Warm fuzzy memories of using ed, sam, and ex on variously featureless terminals roll in. Oh, well, I use vim daily, so command driven editors aren't that far away.

  • @k4vms
    @k4vms ปีที่แล้ว +1

    So tell me about your D-104 on the shelf next to your reel to reel.
    I have written many lines code in assembly on many different platforms. 6502, 6800 series, 360, 370, Z80 series 8080, etc.
    COBOL, FORTRAN, BASIC, C, C++, etc. I grew with all this stuff. Worked at DataPoint, Apple, DEC, and finally IBM.
    Ricky from IBM

  • @guilherme5094
    @guilherme5094 ปีที่แล้ว

    👍Thanks!

  • @RogerBarraud
    @RogerBarraud ปีที่แล้ว

    The jump range is more likely to be something like -128 to +127 bytes *decimal*, rather than X'127' (hexadecimal - which would be 256 + 32 + 7 == 295 decimal (which would fail to go to where you think it will).

  • @dhpbear2
    @dhpbear2 ปีที่แล้ว +3

    14:31 - Isn't there a status bit you can read to determine when the drive is ready (when it reaches the next cylinder)?

    • @UsagiElectric
      @UsagiElectric  ปีที่แล้ว

      There totally is! And that's actually the proper way to do it because the DLY routine can cause issues once you get into more complex control situations, but, it would have added some complexity to the program and I was trying to be as simplistic as possible.

  • @piwex69
    @piwex69 ปีที่แล้ว

    The kneaded cat says enough is enough.

  • @ianferguson3543
    @ianferguson3543 ปีที่แล้ว

    Assembly language is easy enough. You need to really document the code but at the end you have a fast efficient program. I have used 8 bit, 16 bit and 32 bit assembler for various applications including a game and a multi-user modem access program. Lots of fun and not much harder than higher level stuff like C. I was formally trained and had full documentation.

  • @libertine5606
    @libertine5606 ปีที่แล้ว

    I am taking assembly right now. This is what I am doing! Except it's MASM x86. I was getting a byte error on jmp's over 127 now that makes more sense. Since these are "relative jumps".

  • @TatsuZZmage
    @TatsuZZmage ปีที่แล้ว +2

    maybe you should get someone to build something that can emulate the hawk drive from the heads till ya can find someone that could build a new head. also that head looked like Bakelite

  • @zrodger2296
    @zrodger2296 ปีที่แล้ว

    I've only done a little bit of assembler code. But what struck me: you kept typing and typing, laboriously, and never saved your work!
    Just kidding; I'm sure you were careful.
    Great video! Takes me back ...

  • @hicknopunk
    @hicknopunk ปีที่แล้ว +57

    I love computers, one day even poor people will be able to have one.

    • @Rorschach1024
      @Rorschach1024 ปีที่แล้ว +9

      The government will even hand them out....

    • @jwhite5008
      @jwhite5008 ปีที่แล้ว +5

      a smartphone* IS a computer, and low-end used phones are more or less accessible to everyone but the drunkards. More people have access to them than to running water or electricity (there are phone charging stalls in many poor places in Africa). The only problem with them is software that is very limited for no good reason at all. That limitation can be overcome somewhat by installing apps, but at cost of speed and convenience.
      *) In modern world this means android pretty much.
      Other than that, raspberry pi + SDCard + PSU + a used 17" 4:3 monitor + cheap keyboard and mouse cost under $100, I'd say this is accessible to almost everyone who has enough free time to learn how use them. Actual electricity is more of a problem there.
      I'd say actual computer literacy is more of a problem than access to computers themselves. People who use close to 100% of their time to try to survive - no matter how inefficiently - don't have spare time to learn anything.

    • @besotoxicomusic
      @besotoxicomusic ปีที่แล้ว +13

      One day they’ll even be portable enough to fit on one’s lap as well.

    • @bobanmilisavljevic7857
      @bobanmilisavljevic7857 ปีที่แล้ว +6

      ​@@besotoxicomusic one day the stone tablet will glow with light, sound, and memes

    • @Rennu_the_linux_guy
      @Rennu_the_linux_guy ปีที่แล้ว

      ​​​@@jwhite5008 You can't really do a lot of developer stuff on Android, without rooting it you're subject to the CPU/ram limit that's imposed by your phone's vendor, once a program reaches that limit, stopping what ever compilation you had going at the time, it is immediately killed, this is to provide a "smoother" experience for the everyday non dev users.
      I tried to compile a big ass rust program the other day and I was just cock blocked so much
      At least that was my experience with termux from the f-droid app store on my LG phone

  • @roysainsbury4556
    @roysainsbury4556 ปีที่แล้ว

    Very interesting. I do a lot of Z80 assembler for an emulated TRS80, and also the HD6303 which is used in early Psion Organisers. The Centurion code looked more like the 6303 or 6502 than the Z80. I'm puzzled though that the assembler doesn't produce an executable file (or a least a hex file that another program could convert, like LOAD in CP/M), since the CPL compiler does. Perhaps the assembler has a command option to write out a file?

  • @cato451
    @cato451 ปีที่แล้ว

    Steve Wozniak approved!

  • @jlawrence71
    @jlawrence71 ปีที่แล้ว +1

    Nice video. I have been repairing/aligning Commodore-1421 Disk Drives and the program you wrote is similar to the diagnostics available on that platform. As an enhancement, is there anyway you could output the location it is reading and what values it expects vs the value it reads? I am sure the track and sector are encoded on the disk itself. Hopefully, it is not a head issue. and something mechanical. Best of luck on the diagnostics.

  • @michaeliverson2164
    @michaeliverson2164 ปีที่แล้ว +2

    Awesome video. Can you do videos on designing PCB’s?

    • @UsagiElectric
      @UsagiElectric  ปีที่แล้ว +1

      Thank you!
      I actually have a video where I go into detail on how I design and cut my own PCBs here: th-cam.com/video/AB84_vbH_e8/w-d-xo.html

  • @rondoe95
    @rondoe95 ปีที่แล้ว

    😎 very cool

  • @cdl0
    @cdl0 ปีที่แล้ว

    Assembly is my favourite type of coding. I wonder, does the Centurion support interrupts, or have a status byte or word, or device status test of some sort to support peripheral transfers, which would be better than having a fixed delay?

  • @SmetadAnarkist
    @SmetadAnarkist ปีที่แล้ว

    The commands in that editor sounds a lot like edlin that used to be bundled with dos.

  • @balk0vic
    @balk0vic หลายเดือนก่อน

    So, ced is basically ed for centurion. It look very familiar to me :)

  • @ropersonline
    @ropersonline ปีที่แล้ว +1

    25:58

  • @roysainsbury4556
    @roysainsbury4556 ปีที่แล้ว

    Or, as some have said. a linker to take the hex and make an executable. Maybe(!) even the same linker that is used by the compiler?

  • @Aeduo
    @Aeduo ปีที่แล้ว +3

    This assembly language reminds me of 6502 a bit. I'm not super experienced with it though. Pdp-11 has much more fancy opcodes. Many operations not even needing to touch registers at all. Obviously slower since it's touching memory.

    • @gcewing
      @gcewing ปีที่แล้ว

      The PDP-11 certainly had one of the most elegant instruction sets I've come across. It had the luxury of 16 bit opcodes, though. When you're trying to shoehorn all your instructions into 8 bits you have to make some compromises. There just isn't room to orthogonally include all the operations, addressing modes and registers you'd like. It looks like the Centurion has some 8-bit and some 16-bit opcodes, which makes it a bit like the 6809, another of my favourite instruction sets.

    • @Aeduo
      @Aeduo ปีที่แล้ว

      @@gcewing ah neat. My experience is pretty limited. :P

    • @turbinegraphics16
      @turbinegraphics16 ปีที่แล้ว

      some stuff looks like 6502 and some bits look like z80

    • @sjsoftware72
      @sjsoftware72 ปีที่แล้ว +1

      @@turbinegraphics16 Originally it was a load/store architecture based around two accumulators and an index (with a couple of other user and specific purpose registers), but was somewhat extended to be more general, with some really wild instructions added in for good measure.

  • @antonnym214
    @antonnym214 ปีที่แล้ว

    hyper-interesting subject matter here. I programmed in Z-80 and 8080 assembly back in the day. Your audio is good, so no worries about the video, but maybe a future project will be to get a quieter fan for that unit or an enclosure.

  • @rickhole
    @rickhole ปีที่แล้ว +3

    I wrote my first .ASM code in 1966. Done so for more processors than I can remember. I "get" your code 100%. Look for a link editor to pick up the hex code and make a ".exe" whatever they may have called it. That's your missing link. Does CED give you the tab character to align the columns (please!) (it could fake it by adding enough spaces automatically).

    • @jwhite5008
      @jwhite5008 ปีที่แล้ว +1

      I think the issue is that this code does not respect whatever rules and conventions the OS has, so it HAS to be run outside of it to function correctly, or it will conflict with the OS that probably doesn't take too kind to overwriting hardware control registers with random data while it's trying to do its thing.

  • @Evgenik45
    @Evgenik45 ปีที่แล้ว

    It was necessary to connect 2 computers via modem or rs232, and transfer the program directly. )))

  • @m1zuwari
    @m1zuwari 11 หลายเดือนก่อน

    i know this is an older video, but does anyone have any idea why the documentation was using japanese notation (ア、イ、ウ、エ、オ、etc)?

  • @kez963
    @kez963 ปีที่แล้ว +2

    I would imagine multiple terminals are running on quiet office environment and the main mini computer on the basement? 😅

    • @c1ph3rpunk
      @c1ph3rpunk ปีที่แล้ว +2

      Lots and lots of serial cables, extenders and multiplexers back to a room with the machine. More often than not it was a closet somewhere or some abandoned office with the door shut. Then there fancy places had computer rooms.
      I once had a VAX in a main cement plant and a VT terminal out by a truck scale. The scale itself had a serial interface that I had to extend to an office by it, using serial extenders, to the aux port on the VT. The VT then ran back, many many hundreds of feet, back to the VAX. Ran that cable across a set of silos, aerially, a couple hundred feet tall, with an extender on each one. Managed to get like 19,200 on it with 2400 to the scale.

  • @darrellgrossfs96
    @darrellgrossfs96 ปีที่แล้ว +1

    mini Centurion needs ide card diy and if you do you can unlock qonum big foot drive

  • @williefleete
    @williefleete ปีที่แล้ว +1

    With the return to zero. Is there a status bit or register you could check to determine if the heads are able to return and move off zero. Probably a bit more elegant than using a delay

    • @UsagiElectric
      @UsagiElectric  ปีที่แล้ว

      Yup! When the track is on cylinder and ready to go, it sets a specific status, and we totally could have checked that instead. It would have added a bit more complexity, so we just kept as simple as possible for this example.

  • @gcm4312
    @gcm4312 ปีที่แล้ว +1

    is there an XOR instruction? you could use it to do error handling, XORing the A reg with 01, 10, etc and branching if zero between them to the proper error handler

    • @gcewing
      @gcewing ปีที่แล้ว

      That wouldn't help, the result would be nonzero as long as any bits other than the one you're testing were nonzero. To do better you'd need a "test" instruction, i.e. an AND that doesn't save the result.

    • @gcm4312
      @gcm4312 ปีที่แล้ว

      @@gcewing oh I thought only one bit was set on the register
      edit: just checked the video @ 16:19 only one bit is set when checking the status register, so XORing would work (or I'm missing something else 😅)

  • @mike94560
    @mike94560 ปีที่แล้ว +2

    I remember that if you XOR a register with itself it clears the register. Why would you do that? It takes less clock cycles to do. Of course that depends on the system.

    • @andrewdunbar828
      @andrewdunbar828 ปีที่แล้ว +1

      It also takes fewer instruction bytes, so keeps the program smaller, depending on the system.

  • @der.Schtefan
    @der.Schtefan ปีที่แล้ว +1

    I think in 1983, just like in 2023, I would have captured the terminal output and entered the assembled byte codes via serial line instead of entering it on the keyboard ;)

    • @Kboyer36
      @Kboyer36 ปีที่แล้ว

      He's done that before using a modern laptop and plugging into a second port on the MUX card but where's the fun in that?

  • @Pingmeide
    @Pingmeide ปีที่แล้ว

    Hi, this is a bit off-topic for the current video. Regarding the defective platters of the CDC HAWK drives - as these are quite old and not working at such small sizes etc. as current drives, have you every considered to have the platters (with the head-crash marks) re-coated with magnetic material. (Removing the old magnetic coating first...) I wonder how these "old" platters were coated - eventually by spin-coater or spray-coating ? Perhaps there are companies around that could assist with such an effort. I am from the field of optical coating technology (Laser-optics etc.) and when I saw the damaged disks in your videos recently, I came to the idea of re-coating the disks. What do you think about it ? Anyone around who could assist ?

    • @sjsoftware72
      @sjsoftware72 ปีที่แล้ว

      The platters which suffered heads slamming into them have big gouges caused by said heads slamming into them. Recoating them is still going to leave the gouges, which are a deal breaker for the physics required to fly the heads. There is some discussion as to what it would take to make *new* platters though...

  • @ralphups7782
    @ralphups7782 ปีที่แล้ว +1

    I am thinking that, my Ukrainian youtubers are loving this stuff. well done and very interesting too I might add