Coding Assembly on a 1980s Business Minicomputer

  Рет қаралды 50,747

Usagi Electric

Usagi Electric

Күн бұрын

Пікірлер: 301
@aldergas01
@aldergas01 Жыл бұрын
Wonderful, there's really a lack of content like this on the internet. Thank you, Usagi, and much success in your projects.
@UsagiElectric
@UsagiElectric Жыл бұрын
Thank you so much! It's a lot of fun exploring this kind of weird, forgotten niche of business computing!
@njphilwt
@njphilwt Жыл бұрын
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 Жыл бұрын
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 Жыл бұрын
This reaffirms to me how beautiful and easy Z80 assembly is by comparison.
@lawrencemanning
@lawrencemanning Жыл бұрын
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.
@MISTER__OWL
@MISTER__OWL Жыл бұрын
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.
@charliemorris9295
@charliemorris9295 Жыл бұрын
Brings back memories of assembly language programming on military computers using a VAX assembler in the early 1980’s
@herbertsusmann986
@herbertsusmann986 Жыл бұрын
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 Жыл бұрын
I assume because that was the word size?
@Santor-
@Santor- Жыл бұрын
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 Жыл бұрын
@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.
@colonelbarker
@colonelbarker Жыл бұрын
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 Жыл бұрын
Your boy knows who the real starts of the show were!
@colonelbarker
@colonelbarker Жыл бұрын
@@UsagiElectric FWIW I really enjoyed learning about assembly on this machine
@MrEmiosk
@MrEmiosk Жыл бұрын
This is a step beyond programming through a monitor... literal punching in hex opcodes directly into ram memory. Damn satisfying.
@tarzankom
@tarzankom Жыл бұрын
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.
@rwdplz1
@rwdplz1 Жыл бұрын
"We'll talk about that next time." Let me guess: There's a guy out there somewhere hoarding boxes of old Hawk Drive heads?
@frankowalker4662
@frankowalker4662 Жыл бұрын
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 Жыл бұрын
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.
@Sashazur
@Sashazur Жыл бұрын
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!
@dhpbear2
@dhpbear2 Жыл бұрын
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 Жыл бұрын
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.
@BaronSamedi1959
@BaronSamedi1959 Жыл бұрын
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.
@spagamoto
@spagamoto Жыл бұрын
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?
@wlhamaty
@wlhamaty Жыл бұрын
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 Жыл бұрын
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 Жыл бұрын
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 Жыл бұрын
What would be weird? You don't have to change it for it to work
@dale116dot7
@dale116dot7 Жыл бұрын
@@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 Жыл бұрын
@@dale116dot7 unless its vectorized math code, then its almost impossible to beat modern compilers by writing it by hand
@RetroOnSpeedDial
@RetroOnSpeedDial Жыл бұрын
I love the Centurion videos so don't feel bad about making them!
@holgers5216
@holgers5216 Жыл бұрын
nice bit of 'Model T' coding there!!
@duncanwilliams2350
@duncanwilliams2350 Жыл бұрын
Any customer can have a program run on any machine that they want, so long as it is assembly.
@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.
@silvenshadow
@silvenshadow Жыл бұрын
For something so boring this is one of the most exciting videos I've seen all night. Cheers! This was so fun.
@ChrisPinCornwall
@ChrisPinCornwall Жыл бұрын
Brilliant. I love this sort of thing. Well done you! I'm amazed there's no linkage editor. Thanks for sharing.
@BG101UK
@BG101UK Жыл бұрын
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!
@melkiorwiseman5234
@melkiorwiseman5234 Жыл бұрын
Puddy Tat "pianoing" on another puddy is sooooo keeyewt! 😆
@ftorresgamez
@ftorresgamez Жыл бұрын
My wife says that she loves your cats, they're so cute! Greetings from Houston, TX.
@ropersonline
@ropersonline Жыл бұрын
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 Жыл бұрын
CED is fantastic in that it saves on a line by line basis, so no more losing huge swaths of data like Kompoz!
@manjumanl5279
@manjumanl5279 Жыл бұрын
I'm proud of subscribing to your channel .
@TheGunnarRoxen
@TheGunnarRoxen Жыл бұрын
Ooh love it. I've always fancied a bit of coding in assembly. Very interesting!
@SmetadAnarkist
@SmetadAnarkist Жыл бұрын
Go for it! Nothing stopping you
@TheGunnarRoxen
@TheGunnarRoxen Жыл бұрын
@@SmetadAnarkist Good point!
@milk-it
@milk-it Жыл бұрын
This is so well explained and step-by-step, that I’ve just learned some Assembly. Thanks!
@lindoran
@lindoran Жыл бұрын
This is a very down to Earth explanation of assembly :)
@UsagiElectric
@UsagiElectric Жыл бұрын
Thank you!
@ropersonline
@ropersonline Жыл бұрын
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 Жыл бұрын
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.
@chromosundrift
@chromosundrift Жыл бұрын
My favourite stuff is the software/programming content!
@Canthus13
@Canthus13 Жыл бұрын
STAB. I like that. I often feel like stabbing something when writing assembly for a 6502...
@RogerBarraud
@RogerBarraud Жыл бұрын
An RS232 switch box and a USB-to-RS232 adaptor would come in handy.
@IAmPaigeAT
@IAmPaigeAT Жыл бұрын
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! 👍
@OTuit
@OTuit Жыл бұрын
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 Жыл бұрын
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 Жыл бұрын
@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 Жыл бұрын
@@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.
@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...
@benttranberg2690
@benttranberg2690 Жыл бұрын
Assembly is a low-level language?! 😄 I don't remember we called it a language back in the days, but fair enough.
@c1ph3rpunk
@c1ph3rpunk Жыл бұрын
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.
@edgeeffect
@edgeeffect Жыл бұрын
You need an RS232 null modem cable... that way you could have both systems networked. Well... sorta networked.... sorta semi-manual really clunky networked.
@jonathanpullen7439
@jonathanpullen7439 Жыл бұрын
I'm really starting to like that color of blue.
@michaelwarner5277
@michaelwarner5277 Жыл бұрын
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 😂
@dhpbear2
@dhpbear2 Жыл бұрын
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.
@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.
@SmetadAnarkist
@SmetadAnarkist Жыл бұрын
The commands in that editor sounds a lot like edlin that used to be bundled with dos.
@TatsuZZmage
@TatsuZZmage Жыл бұрын
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
@kenharbin3440
@kenharbin3440 Жыл бұрын
Booting into maintainence mode and hand typing machine code. I miss those days. Wait, maybe I don't.
@rickhole
@rickhole Жыл бұрын
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 Жыл бұрын
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.
@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.
@piwex69
@piwex69 Жыл бұрын
The kneaded cat says enough is enough.
@Aeduo
@Aeduo Жыл бұрын
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 Жыл бұрын
@@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.
@michaeliverson2164
@michaeliverson2164 Жыл бұрын
Awesome video. Can you do videos on designing PCB’s?
@UsagiElectric
@UsagiElectric Жыл бұрын
Thank you! I actually have a video where I go into detail on how I design and cut my own PCBs here: kzbin.info/www/bejne/d3ObZZKsl62Sm5o
@mike94560
@mike94560 Жыл бұрын
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 Жыл бұрын
It also takes fewer instruction bytes, so keeps the program smaller, depending on the system.
@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?
@semuhphor
@semuhphor Жыл бұрын
Very cool. Thanks.
@hicknopunk
@hicknopunk Жыл бұрын
I love computers, one day even poor people will be able to have one.
@Rorschach1024
@Rorschach1024 Жыл бұрын
The government will even hand them out....
@jwhite5008
@jwhite5008 Жыл бұрын
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 Жыл бұрын
One day they’ll even be portable enough to fit on one’s lap as well.
@bobanmilisavljevic7857
@bobanmilisavljevic7857 Жыл бұрын
​@@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
@ropersonline
@ropersonline Жыл бұрын
25:58
@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?
@andrewgrillet5835
@andrewgrillet5835 Жыл бұрын
Does the assembler not have macros? Do you not have a paper tape reader and punch? Or at least a simulation? I did this kind of thing in the days when this kit would have been current (not on Centurion) and the highest priority would have been to keep any assembler that actually worked for re-use, even if it was only 10 lines of code! Each block of working code would be a meaningfully named macro named that you could invoke each time you wanted to return to cylinder zero, seek to cylinder X, read, print, delay etc. Some of these might be subroutine calls, but the macro would be about giving it a name that is meaningful in the context - effectively building a context-specific high level language..
@cato451
@cato451 Жыл бұрын
Steve Wozniak approved!
@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 ...
@kellingc
@kellingc Жыл бұрын
That's awesome.
@Evgenik45
@Evgenik45 Жыл бұрын
It was necessary to connect 2 computers via modem or rs232, and transfer the program directly. )))
@stheil
@stheil Жыл бұрын
I think there's a mistake in the bottom text at 10:44. Shouldn't it be X'7F', not X'127'? Looks like you forgot to convert to hexadecimal there ^^ Otherwise, great video on how to write a basic assembly program. Assembly in general is not new to me but it's always interesting to learn about how specific processor architectures need to be handled and I'm very invested in the whole Centurion project in general XD
@UsagiElectric
@UsagiElectric Жыл бұрын
Oooh, good catch, you're totally right! There's a few other typos and mistakes I made, I blame on it being sleep deprived and behind schedule, haha. Centurion assembly is initially pretty simple, but we're discovering that as we get deeper into it, it's starting to get really wild with very strange interactions with certain registers. We still have a ton to learn!
@stheil
@stheil Жыл бұрын
@@UsagiElectric I've made that particular type of mistake so often I've gotten pretty good at spotting it XD Can't wait for the next Centurion video!
@Curt_Sampson
@Curt_Sampson Жыл бұрын
@@UsagiElectric Yeah, another you may have missed is that in the error check routine after the first error test you jump to E2 instead of E1, so the E1 code never runs. I would probably rewrite that to check for no error first, and then go through the various error conditions, with an "unknown" error code printed if there's no match for any of them. That will help ensure that mistakes like this will not print as "no error."
@gcm4312
@gcm4312 Жыл бұрын
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 😅)
@ralphups7782
@ralphups7782 Жыл бұрын
I am thinking that, my Ukrainian youtubers are loving this stuff. well done and very interesting too I might add
@bjn714
@bjn714 Жыл бұрын
Seems there's some Hawk on your wall. Crashed platter?
@andypughtube
@andypughtube Жыл бұрын
No jump to ERR1 ?
@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?
@darrellgrossfs96
@darrellgrossfs96 Жыл бұрын
mini Centurion needs ide card diy and if you do you can unlock qonum big foot drive
@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.
@Blasserman
@Blasserman Жыл бұрын
Pertec drives only had 405 cylinders with 10M platters. Interesting.
@veschyoleg
@veschyoleg Жыл бұрын
I assume this assembler has no macro support? They would be great for code legibility.
@goofyrulez7914
@goofyrulez7914 Жыл бұрын
Can you use TAB characters instead of all those spaces? It would save a lot of memory.
@c1ph3rpunk
@c1ph3rpunk Жыл бұрын
Where would that save “memory”? When compiled down to machine code it’ll likely be stripped, those aren’t instructions. It must be some idiosyncrasy of their assembler. The only place I can see it might save space in on disk for the source file. But even then, what’s the difference between 4 spaces and 1 tab control code. 3 bytes?
@goofyrulez7914
@goofyrulez7914 Жыл бұрын
@@c1ph3rpunk - Yes, on disk memory. It would make the source code smaller.
@redwire1233
@redwire1233 Жыл бұрын
What iff the chatGPT wroted a program to this machine?
@wizard-pirate
@wizard-pirate Жыл бұрын
Does Ren have a github profile for me to browse?
@pascalcoole2725
@pascalcoole2725 Жыл бұрын
Hmmm doe'sn't look to complicated. have done assembly on manny CPU's as well as on some 80' bussness computers (long ago) this syntax is fairly straight forward. Like the editor, had something like that on my CP/M laptop.
@robot797
@robot797 Жыл бұрын
nice job dude
@mrmelo7084
@mrmelo7084 Жыл бұрын
Maybe I'm misinterpreting but shouldn't branch in ERR code branch to ERR1. You have ERR2 so ERR1 is skipped.
@ffieditor
@ffieditor Жыл бұрын
I would have ported "vi" to the system has it was the editor used on MOST computers from the 70's and up. Why are you not using TAB key just to the next column? most system that would more to next 4 column. on the TI-990 it was just "edit" you had your choice of any number of languages.
@ahbushnell1
@ahbushnell1 Жыл бұрын
Is X0100 hexadecimal?
@rickhole
@rickhole Жыл бұрын
yes, in this case X sets the daya type to hexadecimal and the value is enclosed between the apostrophes. X'0100' would be like 0X0100 in C family of languages.
@Ra.03
@Ra.03 Жыл бұрын
Кто знает !!!! Подскажите как называется это - умение из любого процессора телефона умной кофеварки или любой фигни в которой есть процессор написать программу и сделать из любой хрени устройство которое будет делать то что ты ему сказал ну по возможностям устройства??????? А главное как этому научиться ???
@paulneilkearns
@paulneilkearns Жыл бұрын
Thanks so much! I love learning about this compuuter through you; really appreciated! One question -- I'm not sure I understand the difference between the LDA/LDB/etc and XFR opcodes? Can you only use LDx with A and B?
@aldergas01
@aldergas01 Жыл бұрын
The LDx opcode family includes various instructions that load data from memory into a specific register. The "x" in the instruction represents a placeholder for a specific register. For example: LDA loads data from memory into the accumulator register (A). LDB loads data from memory into the B register. LDW loads data from memory into a wider register that can hold more data, such as 16 bits. The memory location from which the data is loaded can be specified in various ways, such as using an absolute memory address, an offset from a base address, or an indexed address. On the other hand, the XFR instruction transfers the contents of one register to another register. This instruction takes two register operands, one source and one destination, separated by a comma. For example: XFR A,B transfers the contents of the accumulator register (A) to the B register. XFR X,Y transfers the contents of the X register to the Y register. The XFR instruction can be used to move data between any pair of registers, not just A and B. For resume this, LDx instructions load data from memory into registers, while XFR instructions transfer data between registers. They are both important instructions in a computer's instruction set, and are often used together in programs to manipulate data between memory and registers.
@sjsoftware72
@sjsoftware72 Жыл бұрын
LDx can only be used with A, B and (limited) X. XFR can do any to any register, as well as a smaller number of other addressing modes.
@russianvideovlogguy
@russianvideovlogguy Жыл бұрын
this seems more approachable than MASM. that's amazing there is an emulator so anyone can try it, pretty cool stuff here
@xheralt
@xheralt Жыл бұрын
I would have called the time wasting routine PAWS instead of DELY ;)
@traindoctor
@traindoctor Жыл бұрын
I hope the emulator will get open sourced!
@c128stuff
@c128stuff Жыл бұрын
Ha, that bit of assembly language at 1:07 rather looks like rom code from a Commodore PET.
@noland65
@noland65 Жыл бұрын
Given the start address, maybe a monitor for the C64? The PET has just some BASIC tables at $C000. (I've just implemented a 6502 assembler for a PET emulator, which is why I happen to know.)
@c128stuff
@c128stuff Жыл бұрын
@@noland65 A c64 has no acia
@noland65
@noland65 Жыл бұрын
​@@c128stuff So what has a 6502, memory or ROM (but not just some tables) at 0xC000 and a CIA at 0x480 and probably at least 2 of them? The PET, Acorn Atom, BBC Micro, Oric, and the VIC-20 have all ROM at 0xC000, but all have tables there, either for characters or essential BASIC values/tokens. I'm starting to become intrigued…
@c128stuff
@c128stuff Жыл бұрын
@@noland65 Good catch with regards to the IO address being used. That pretty much precludes the Oric (ram at 0x400, used by DOS, sticking io there would break the system), C64 and 128 (screen memory) Apple II (screen memory), all the 40xx, 80xx and 82xx PETs (system ram at 0x400), VIC 20 (reserved for ram expansion and not selected by io select, but at least in theory possible by hijacking one of the ram expansion select lines), and it also seems an unlikely address for a KIM-1 (tho obviously things are a lot less settled there). Btw, this concerns a 6551 ACIA chip, not a 6526 CIA chip. The 6551 wasn't included out of the box in many systems, but expansion carts for a wide variety of 6502 based machines containing a 6551 did exist, for example Apple's super serial cart, CMD/Dr Evil Laboratories Swiftlink for the C64, and even an odd card from Tandy for the coco (not 6502 based, but close enough for this purpose). It was however included out of the box in select PET models, most prominently the 'superpet'. Oh.. and of course us old fashioned 6502 programmers would call this $0480, not 0x480 ;-)
@c128stuff
@c128stuff Жыл бұрын
@@noland65 C000 is ram on an unexpanded C64, and is the start of the screen editor rom of the C128 (in 128 mode with 'high rom' mapped in). But neither has a 6551 ACIA chip, and even when you add one, it cannot be at 0x480, so we can safely say it is not from a C64 or C128. Even if ACIA would be a typo and refer to CIA instead, it would be at dc00 or dd00, not at 0480 on a 64 or 128. Besides the 'SuperPET' the plus/4 also had an acia, but again it cannot be at 0x480, that would rather conflict with the code stored in 'low ram' which is required for the kernal and basic to function. In fact, I cannot think of any Commodore 8 bit machine having any io registers mapped below $8000 unless you are talking about the 'smart' floppy drives, but even those don't have them mapped as low as 0x480, and additionally those don't usually have an ACIA. The one exception concerns addresses 0 and 1 on select MOS CPUs (6509, 6510 etc). Nice to meet another person still busy with 8 bit Commodore hardware, beyond the rather obvious C64 🙂
@pamdemonia
@pamdemonia Жыл бұрын
kitties!
@noland65
@noland65 Жыл бұрын
"STAB/" - there goes the YT monetization… ;-)
@jaydub8085
@jaydub8085 Жыл бұрын
AWWWW!!! 10:Print "Kittehs' 20:Goto 10 30:RUN
@matthiasmartin1975
@matthiasmartin1975 Жыл бұрын
Hasenelektrik.
@Jkauppa
@Jkauppa Жыл бұрын
a ton of stabs
@Jkauppa
@Jkauppa Жыл бұрын
l-dabbing hard, hmm
@Jkauppa
@Jkauppa Жыл бұрын
punch cards mate
@MaxCarponera
@MaxCarponera Жыл бұрын
Centennials discover assembly
@yveshotting3371
@yveshotting3371 Жыл бұрын
STAB means ... =) cant stop laughing
@idahofur
@idahofur Жыл бұрын
I'm sure you thought of this. Could you not use a floppy to sd card adapter? Wouldn't have to be perfect. I know you want to run on real hardware taking it to the show. But, would be easier than trying sasi to ide or whatever the drive interfaces is for the fixed disks.
@melkiorwiseman5234
@melkiorwiseman5234 Жыл бұрын
I'm pretty sure he wants to be able to take all-authentic equipment along with him, but what you suggest would be a good compromise until he can get all the hardware working.
@idahofur
@idahofur Жыл бұрын
@@melkiorwiseman5234 Yes he does. But as we know he pointed out. This drive he is using is slower. I do cross my fingers for him finding more 8" drives. But even then. I'm pretty sure it will be slow. One thing I like about my apple II is the booti card. use that for a fast hard drive. Then I still have use the floppy drive once in a while. So he could use the floppy drive to save data and load programs. But to get it booted and running in rapid time for demo. One final thing is I'm still looking for a cheap scsi card for my apple II so I can run a vintage period correct 20 meg scsi drive I have for it. But until then. Also I wish he finds more parts for it too.
@whstark
@whstark Жыл бұрын
Be great to make a ide or a flash dirve interface etc using a rasbery pic micro. Bu t mabe out of your context .
@supercompooper
@supercompooper Жыл бұрын
I predict that within 10 years, computers will be twice as powerful, ten thousand times larger, and so expensive that only the 5 richest kings of Europe will own them 😛
@Blasserman
@Blasserman Жыл бұрын
I kind of wish you would ask ChatGPT to write the code, just to see it fail. Your Hawk drive is disturbingly loud. It's old, so I expect too much.
The 1970s CDC Hard Drive Works!
28:04
Usagi Electric
Рет қаралды 95 М.
Solving distributed systems challenges in Rust
3:15:52
Jon Gjengset
Рет қаралды 241 М.
Крутой фокус + секрет! #shorts
00:10
Роман Magic
Рет қаралды 19 МЛН
Electric Flying Bird with Hanging Wire Automatic for Ceiling Parrot
00:15
WORLD BEST MAGIC SECRETS
00:50
MasomkaMagic
Рет қаралды 53 МЛН
iPhone or Chocolate??
00:16
Hungry FAM
Рет қаралды 38 МЛН
The Most Important Computer You Don't Know About
25:31
Action Retro
Рет қаралды 130 М.
Meet my new Litton Minicomputer (it has Drum Memory)!
19:12
Usagi Electric
Рет қаралды 75 М.
Assembly Programming is Hard…
20:00
Usagi Electric
Рет қаралды 113 М.
Hellorld!
28:54
Usagi Electric
Рет қаралды 48 М.
What was Coding like 40 years ago?
29:05
The Coding Train
Рет қаралды 1,7 МЛН
How It Was Made: THE COMMODORE 64 factory tour
22:10
Retro Recipes
Рет қаралды 510 М.
Reverse Engineering - Computerphile
19:49
Computerphile
Рет қаралды 185 М.
"Hello World" on Commodore 64 in Assembly Language, Machine Code
33:39
8-Bit Show And Tell
Рет қаралды 51 М.
Game Physics (in Assembler) - Computerphile
19:24
Computerphile
Рет қаралды 712 М.
Крутой фокус + секрет! #shorts
00:10
Роман Magic
Рет қаралды 19 МЛН