Fun fact: Roller Coaster Tycoon was written in assembly. There was just a little bit of C code to glue the game into the Win32 API. To date, it's the only assembly program that I know which *deliberately* contains crashing. :)
@das_murks
2 жыл бұрын
The predecessor Transport Tycoon (Deluxe) was also coded in Assembly by Chris Sawyer alone.
@bradley1995
2 жыл бұрын
@@das_murks what a mad man
@damienretro4416
2 жыл бұрын
RCT was a very well-made game. RollerCoaster Tycoon Classic from 2016 is a great re-release for modern systems btw.
@IlliaZhdanov
Жыл бұрын
Yeah...
@greg5095
Жыл бұрын
@@damienretro4416rollercoaster Tycoon 2 with openrct2 is a better option
@billstrader4326
3 жыл бұрын
I also grew up in the '80s but I was in Louisiana. As you might expect, things were not great for a computer nerd during those days. I had my Commodore 64, banging out BASIC scripts, but I lacked resources or a mentor that could take me to the next level. My guidance counselors, who didn't understand computers, didn't encourage me to go down that path for a career. I literally thought you could be a scientist or work in a store. Retail is what I ended up doing for 10 years, though I was always building my own PCs. I finally broke into the IT support business and never looked back. Still can't code very well though. I wish I had focused on it more when I was young. So if you are a young person, or a parent of one, and your child shows an inclination to learn programming, by all means support them and try to encourage them to learn as much as they can.
@tinchote
3 жыл бұрын
Argentina and TRS-80 (Models I and III) for me; not mine, for some mysterious reason they allowed me to use them in a retail shop. Luckily there was some documentation for the API calls for the TRS-DOS, and it had a debugger that allowed you to to step-by-step and basic disassembling. With that and a book on Z80 I ended up reverse-engineering the operating system when I was 14 years old. Good times.
@cyborgedude
3 жыл бұрын
It's never too late I learned assymbly recently and still learning.
@DavesGarage
3 жыл бұрын
Great to hear you finally found your calling!
@Nick-lx4fo
3 жыл бұрын
@ozone o3 Java is a standard, but they're only teaching OOP
@Nick-lx4fo
3 жыл бұрын
@ozone o3 Yes, schools and universities should teach C as a standard, even some ASM to cover lower topics
@maxinator80ify
3 жыл бұрын
7:06 Dave just casually flexing his typing speed :D
@Thristle
3 жыл бұрын
The flex starts at the video title where he wrote "assembly"
@SteveJones172pilot
3 жыл бұрын
Even in fast mode, that clicky keyboard is a very distinct sound.. I would bet it's an original IBM model M or a close cousin.. the sound still makes me jealous and wish I still had my original AT keyboard.
@emilianoruizcarletti9381
3 жыл бұрын
@@SteveJones172pilot I do have a model M and trust me it's not that one. Sounds like modern tactile switches.
@nickwallette6201
3 жыл бұрын
I refuse to believe he wrote this in one pass, fixed "typos", then compiled it and got a working EXE file on the first try. That's impossible!
@fotofillholland
3 жыл бұрын
I confused typing noises for ASMR video for a second there.
@emmanueloverrated
2 жыл бұрын
You're a machine Dave. I've coding for 15 years and I can't still code that fast... impressive.
@TheNameOfJesus
Жыл бұрын
Indeed, he is a machine. For a while I assumed he sped up the video, (there were some suspicious camera cuts, such as 22:30) but nope, he really does type code that fast. It looks impossible. I had to LOL several times. But he could have sped up his typing by 2% if he learned the keystroke for "delete previous word" rather than hitting the backspace character multiple times in a row.
@cyberwaves
Жыл бұрын
I don't know but it looks pre recorded coding rather than live coding. The text cursor stops as he turns around to speak and also the blinking speed of that text cursor is fast (Like 2x - 3x or so). Also when he exit the nano editor, the directory is changed. I might be wrong on all these but yeah I noticed that.
@TheNameOfJesus
Жыл бұрын
@@cyberwaves I hear ya. Maybe someone with OCD can slow down the video and analyze the keystrokes, comparing them with what actually appears on screen.
@JustAnotherBuckyLover
Жыл бұрын
@@TheNameOfJesus Did you really just use OCD as a synonym for "doing something detailed"? See, THIS is why people get annoyed at people just throwing around legitimately destructive mental health issues like OCD and lifelong, disabling neurodevelopmental diagnoses for fun.
@TheNameOfJesus
Жыл бұрын
@@JustAnotherBuckyLover You are absolutely right; using a real disease as a humorous metaphor for fun is a real cancer on society. Sorry.
@SkarTisu
Жыл бұрын
Fascinating content, and Dave’s typing sounds like white noise since it’s so fast. That’s decades of time spent at a keyboard on display. Thanks for creating this!
@herrbonk3635
11 ай бұрын
His speech is the same to me, a fast weak noise. His phrases are hard to decipher for an outsider.
@KVzism
3 жыл бұрын
Gosh, this channel is a gem
@bensonprice4027
3 жыл бұрын
I couldn't agree more
@kamurashev
3 жыл бұрын
+1 no words more.
@sameerhussain620
3 жыл бұрын
indeed it is
@kialim
3 жыл бұрын
I'm glad it appeared on my KZitem recommendations. Subscribed and turned on notifications!
@martysh1226
2 жыл бұрын
Even for a modern C++ programmer, this gives a lot of insight to how programming was in the early 90s/late 80s. The commenting work is also very good! Learned some stuff I never knew about Windows.
@herrbonk3635
11 ай бұрын
I don't really get what he says though. Sounds like he's swallowing half of most words. And he is so C-centric (and also windows centric) that it hurts.
@martysh1226
11 ай бұрын
@@herrbonk3635 well... why would he be talking about Mac / Linux in a video about Windows?
@herrbonk3635
11 ай бұрын
@@martysh1226 Well, Linux is even more C-centric. The old Windows API structures were originally defined in Pascal in the mid 1980s, largely taken from Xerox (very much like the first Lisa/Mac systems that were also written in Pascal). That's why we still use "PASCAL" calls on the ABI-level when writing Win32 code in C/C++ (although renamed STDCALL today, iirc). However, I did this in the 1990s without thinking much in either C or Pascal. I though in terms of assembly plain and simple.
@monsterhunter445
2 ай бұрын
@@herrbonk3635abi of pascal it was still written in c not pascal
@Hossimo
3 жыл бұрын
Love the Steve Gibson call-out.
@DevilbyMoonlight
2 жыл бұрын
this takes me way back.. I learned 68k assembly language to a good standard using a machine code monitors back in the day, I found the motorola cpu is a real joy to work with compared to the 6510 from the c64, there was no internet to speak of back then, interaction with others was done via voice over the phone or in a message base on a BBS, back then I ran a 3 node BBS which contained amongst other things a pretty active coding conference, it was the Seka assembler, that I used for a few years before DevPac came out.. comparing Seka to DevPac is like comparing the original vi to nano, but it was using Seka where I leaned concepts such as self modifying code and can remember how blown away I was at the time when I was able to see the changes while stepping through the code as it executed... good times fond memories
@stargazersfield
2 жыл бұрын
Just found this channel. I have to say this now in my top 5 favorite channels to view. I see a flight full of downloaded Dave's videos. Well done sir. Glad to see we old nerds are still makin' it happen. This is also a great stroll down memory lane to coding in the 80's. Cheers
@schulmastery
3 жыл бұрын
I emailed Dave the other day about the Windows Message Pump, and he replied within 2 hours. This channel is awesome!
@paulveitch
3 жыл бұрын
It's only low enough level if you've hand stitched it into rope memory as they did on the apollo flight computer. All these fancy text editors, pah!
@DavesGarage
3 жыл бұрын
With Covid I couldn't find any old grandmas to do my wire wrapping for me :-)
@bokkenka
3 жыл бұрын
Pah! You with your fancy electricity... Why don't you try cutting brass gears by hand like they did with the Antikythera machine?
@williambrasky3891
3 жыл бұрын
@@bokkenka With your fancy machines, bah! Acquire an orphan, force it to be your computer.
@bknesheim
3 жыл бұрын
@@williambrasky3891 You us women for that type of work.
@sundhaug92
3 жыл бұрын
@@DavesGarage You could make your own mask-rom though
@krabbenarmy8495
3 жыл бұрын
Im doing an education as Application Developer specialized on application development and im always impressed when someone writes in Assembly or still uses "old" languages. Keep it up!
@dougalplummer4021
Жыл бұрын
You make that look so easy, the flood of memories from my windows 2.X days reminded me that nothing was easy back then. You had to really work for performance. Great demonstration of an ancient art, definitely a "Bob Ross" moment.
@lupinthird
Жыл бұрын
I just want to say how happy I am that I stumbled onto Dave's Garage. His friendly cool persona is a breath of fresh air from a lot of other over-the-top YT personalities. I just like to listen to his videos while I'm working on coding. It's like having a good friend in the room at all times. Thanks for everything you do, Dave, I appreciate your content more than you will ever know. Keep up the good work!
@rby_
3 жыл бұрын
I love the soothing piano music in the background
@DavesGarage
3 жыл бұрын
Not too loud? Trying to make sure it's additive and not annoying!
@cromulence
3 жыл бұрын
@@DavesGarage Nope, sounds well mixed to me!
@jackgerberuae
3 жыл бұрын
Perfect backdrop, agree.
@valdisblack1541
3 жыл бұрын
@@DavesGarage maybe, 10% lower will be better
@jaigupta2770
3 жыл бұрын
@@valdisblack1541 Nah its perfect as it is right now.
@doccolorado
3 жыл бұрын
Loved this! Brought back memories of my machine language work in 8080 in the mid-'70s. I couldn't afford an "OS" after building the IMSAI, so a friend gave me a copy of his Altair basic. I wrote a machine language program to search for the input instructions, as the IMSAI could be loaded from the front panel, find the input/output commands, and then I wrote a jump to my input/output to my devices (Altair basic was loaded with my homemade "Tarbell" tape interface). When I finally acquired an 'assembler' for the 8080 I thought I had died and gone to heaven! The best program I ever wrote on the IMSAI/8080 was a "BAUDOT to ASCII" converter so I could use ASCII on ham radio RTTY. (Today ASCII is ok on ham radio, but not back then! ) - And to think we had 1K boards back then plugged into our S-100 bus! Fun Stuff! BTW< who else do you know who started their career with Western Union as a teletype tech and finished (retired) with Cisco Systems !!
@philnelson2364
2 жыл бұрын
How I wanted an altair in 1975. Looked like those movie computers till I discovered a "computer store" by accident. The owner convinced me to get a SWTPC6800 with two buttons ON-OFF / RESET instead of flipping switches just to read a keyboard, to type code to read a cassette tape program etc. The swtpc6800 used a "BIOS" called MIKBUG which had code to read a serial keyboard, display to a serial monitor, load and save a program from and to a serial cassette tape machine, enter an address and type machine code in hex. I thought "who needs blisters on their fingers" suffered by many an altair user.
@frjustinhewlett7067
3 жыл бұрын
I love Dave's observation that xor-ing out the contents of the register is "a tad more efficient" than writing zero to it!
@shalinpather4198
2 жыл бұрын
It's a recommended practice in the x86 programming manuals from Intel and AMD: the register should be zero-initialised through the XOR operation with itself, rather than moving a zero into the register.
@ruperttoncic9926
2 жыл бұрын
This cuts out the memory fetch cycle(s) on all processors. Every little helps...
@shalinpather4198
2 жыл бұрын
@@ruperttoncic9926 Yup, optimisation is a really powerful practice that's often overlooked these days. 8088 Corruption and 8088 Domination are enough proof of this.
@ruperttoncic9926
2 жыл бұрын
@@shalinpather4198Z80 was the way forward! Back in the day... Wrote half of Space Invaders in less than 2K - I say half as I never had the time to finish it!
@shalinpather4198
2 жыл бұрын
@@ruperttoncic9926 Yup, sounds pretty cool! Less than 2K today sounds like a godly achievement.
@lewisv.3675
3 жыл бұрын
After the Tandy TRS-80 Color II (Trash-80) in 1985, Finally got a 386SX with DOS 5 in the mid-90s. Moved on to DOS 6.22. And then to Linux and FreeBSD in 1999. Dave, I forgive you for working for micro$0ft. And I greatly appreciate your current contributions to the free world. I've worked in IT support, Data Centers, and field work for the last 21 years. Cheers!
@stonedhackerman
3 жыл бұрын
it's rare to see such quality content thisese days, and it's even more awesome he speaks about things we today think of as the dark magic of compilers and frameworks and dont care about. keep this awesome content coming
@ckohen
3 жыл бұрын
I absolutely love these videos. I know there's an infinitesimally small chance that what I learned from this video will be used directly, but its still great knowledge. Learning low level information on how to interact with the native APIs is something you don't see very often, and I'm enjoying it a ton. I will admit, these videos strike a perfect balance between description and achieving an outcome, while I don't always understand perfectly whats going on, I understand enough of it to make sense of what I don't and you reach the goal in 1 video! That's impressive. Anyways, see you next time!
@Ho1yhe11
2 жыл бұрын
Dave needs to make an episode of himself porting reversi from windows 1.0 to windows 11 just so we all can see his thought process in such a task
@robinpage2730
Жыл бұрын
Dave needs to make a video of himself getting the assembly dump from a complete Ubuntu Linux distro on different architectures. I'd love to see what the filesystem looks like in various assembly architectures
@larswillsen
7 ай бұрын
I coded assembly since I was a kid .. now 61 and being cool when I meet coders .. the respect fpr us oldies is huge hehe :) (x86 / 8088)
@ApteraEV2024
2 жыл бұрын
Found you Dave!! Thanks for Sharing! 47yo here, I tried to code as ä teen.... Star Trek game in Basic.. it had an error that I never found... I want to go back and try again! Thanks again for sharing your history & example in ASM coding. You really inspire me! I've been in the military for the past 26yrs, and was isolated. Now retired, out in the wild, ready to pursue my passions!
@calmvolatility2787
3 жыл бұрын
Lol that background music is wonderful! Not even being sarcastic, it’s like “just relax as we do something that will cause most people nothing but misery and pain”
@Damaniel3
3 жыл бұрын
Yep - I don't normally listen to music while I code because I get easily distracted by most kinds of music, but I'd totally code to that.
@joell9319
3 жыл бұрын
As a frontend web developer, watching this makes me want to go home and rethink my life.
@amciaapple1654
3 жыл бұрын
I know what you mean. Having coded in ASM half of my life and experiencing the freedom, performance and lack of restrictions, after several minutes of of developing a web frontend I start swearing, cursing profiously and pounding my fist on the keyboard. Just yesterday, I became livid when I was writing a simple HTML5 upload widget, when it turned out that it is possible to select files or folders and upload them ...but it is NOT POSSIBLE to select BOTH files and folders and upload them. Who makes this shit up!
@verica4b
3 жыл бұрын
same. i'm still at university so i have no job yet but that really makes me think if IT it the thing for me. dont get me wrong i dont want to do anything else... but man... my brain isnt smart enough and its a shame
@__vyre
3 ай бұрын
@@amciaapple1654The realest thing I’ve read in a while, although I do most of my programming in C rather than ASM.
@carlfranz6805
Жыл бұрын
Once upon a time there was a company (I believe) called 'Base Two' or maybe 'Phase Two' (I still have the disks around here somewhere). They produced an enormous library of x86 assembly macros which were really amazing, wide ranging, and simple to integrate into your own code. They were so well laid out that it actually helped with code design. I really miss coding with those. Sigh. Made x86 assembly coding fun instead of a slog.
@lepidoptera9337
Жыл бұрын
And they went out of business. The end. Well, yeah, I agree, though. A well thought out assembly library is a great tool. You also have a point about the slog. "The slog" has been created, in my opinion, by two effects: everything that is server centric requires an incredible amount of plumbing over leaky pipes (many of which contain mostly sewage and deliberately toxic substances) and everybody wants to log the movements of the little toes of the user because they are worth a billion dollars (or so the advertising industry claims). So the same business process that once could be done with 16k of assembly on an eight bit CPU now requires a GByte of frontend, middleware and backend code. Use OOP in addition and you are up to 10GBytes. :-)
@decibel_tastic2869
3 жыл бұрын
I'm not a Coder, although I do recall entering machine code into a Motorola microcontroller half a century ago. What fascinates me is how steeped Dave is in Microsoftness. He uses 'dll' as if it were the very bread of life. He provides an insight into the MS religion, the opaqueness, the special handshakes and implicit nods. How somehow, we should all know - 'this is the way'.
@ericgoldman7533
Жыл бұрын
I took a class in x86 assembly when I was working on my Comp Sci field of study certificate, and I actually enjoyed it quite a bit. I mentioned this on the day of the final while we were waiting for the instructor, and everyone looked at me as if I should have been in a strait jacket and a padded room. 😅
@andrewwilson6240
3 жыл бұрын
Mentioning Steve Gibson was genius! Cue the whole "security now" listenership coming over and subscribing!
@nickwallette6201
3 жыл бұрын
Steve Gibson's biggest fan is Steve Gibson. ;-)
@gnudarve
3 жыл бұрын
Two victories for you today Dave, that's the smallest windows app I've ever seen and the fastest I've ever hit Like and Subscribe. Congrats from an old C programmer who was also forged in the glorious and brutal 80s. :)
@vince77Z
3 жыл бұрын
I never clicked a video faster in my life
@johnadams1725
2 жыл бұрын
Hello Dave, I thought I 'd better pay my dues and thank you for your generous offerings. I am an old electronics enthusiast from back in the thermionics days. My first computer was a CoCo64. I quickly discovered that Basic did not get me very far so Assembler was the answer. I loved it. I have not programmed since about 1996 and that was on the 486. I am really pleased to have discovered your clips and am inclined to dust off the old assembler again and see where it can take me in this jungle of languages. Thanks again.
@alexanderatanasov2800
3 жыл бұрын
love it, the nano editor use. back then when i used windows nt the task manager was probably the only application that behaved as it should.
@seebaastian
3 жыл бұрын
That is your actual typing speed? It's amazing. I didn't knew you could load libraries from assembly. Thank you for your very instructive videos ;)
@do0nv
2 жыл бұрын
I'm pretty sure it's sped up
@alanhat5252
2 жыл бұрын
If a computer is doing it it's doing it in machine code which translates directly into Assembly language so yes, you can call into DLLs from Assembly language. The actual code for doing it is in the _include_ files listed at the beginning. They're human-readable so you can go see what's going on if you're interested.
@NormAusSmith
3 жыл бұрын
Thanks Dave, another great video. I spent some of my early career developing in IBM 360/370 Assembly so it was very interesting for me to see the comparison.
@DavesGarage
3 жыл бұрын
Cool! I have a video on the channel of an IBM 360 in operation!
@IBITZEE
3 жыл бұрын
@@DavesGarage link please...
@DaimlerSleeveValve
3 жыл бұрын
I never managed to write 360 assembler code. The only reference source available to me (the IBM manual) carefully avoided any reference to I/O. However it did let me figure out a bit of what had happened in a core dump.
@fredericmokren9737
3 жыл бұрын
"'l'll shell out" Haven't heard anyone use that phrase is loooong time.
@clonkex
3 жыл бұрын
I honestly had no clue what it meant (other than "cough up the money") until he quit nano, and now I can guess at the meaning.
@jasonrubik
Жыл бұрын
Damn Dave , i've been watching you for years, but I'm only just now watching this one, and when you busted out the 1959 Feynman reference, I almost lost my shit ! Thanks for being so awesome !
@josephrobertson5090
9 ай бұрын
I love you videos Dave. I was born in 2001 and I've always been interested in computers and how they work, but so much of how computers really work is abstracted away and hidden from us now a days. I think this leaves my generation of software developers with a more shallow understanding of what we're actually doing. Creating a windows application in assembly that draws a window was something I didn't think was possible but have always been curious about. This video has scratched an itch I've had for an extremely long time. Thank you!
@MurrayHurps
Жыл бұрын
This brought back so many great memories from the Ad Muncher days (14 years of maintaining pure win32asm code) - Dave you’ve made my day and I love your work, thank you, and let me know if you’re ever in Sydney for a beer.
@Li.Siyuan
4 ай бұрын
Wow, this takes me back to the mid 80's when I spent as much time as I could spare writing assembler code for the 6502 to make my (very slow) first PC work faster.
@chetkasper5680
3 жыл бұрын
LOL! You're the guy Steve Gibson mentioned in his podcast! I'm glad I found this -- I used to write in assembler, my last code being inline inside Turbo Pascal before I just abandoned all hope when Windows came out. I was just overwhelmed. This video gives me hope that I may be able to play with assembly once again, inside Windows. You wrote task manager? You're awesome!
@chrisspellman5952
2 жыл бұрын
Watching you just blitz through coding was amazing to see. You know assembly better than I know how to make a bowl of cereal.
@erbutsludge
Жыл бұрын
Thanks Dave! I did machine code in the late 70’s and assembler in the 80’ and 90’s, Perkin Elmer, but push push push … put me off 386! Now I’m 64 it could be time to give it a go.
@GarryI449
3 жыл бұрын
I remember MASM. I started late 80’s with a standard bus unit writing assembly to control stuff. Wire wrapped an 8086 (never worked) and then found “C”. Eventually I started playing with 3-D programming (wolfenstein style). Lots of matrix type stuff and bitmap mapping onto complex vectors etc. To speed that stuff up on the old 286, I would create functions in straight assembly either inline or as a module to handle specific functions. Still coding in C++ but nowhere near the programmer I used to be. Thanks for the memories Dave… great stuff.
@nairekab4802
2 жыл бұрын
Took me mind back a bit, I was programming IBM assembler on a Control Data mainframe back in 1984. Punch cards & tape, before GUI was implemented. Basic, RPG ( before it meant role playing game, back then, report program generator ), COBOL, were some of the languages I was using. Thx for the journey. My first visit here.
@john_in_phoenix
Жыл бұрын
I wrote assembler in the 1980s as well, but that's because we were testing hardware in the factory. You can fit a lot of code in an 8k EPROM, but Windows was still in the future. Lots of Z80 code, since we used that as our standard test set (STD bus). I got to write the GPIB API to interface with test instruments. We mainly used Wordstar as an editor, since it fit on a floppy and GNU anything was far in the future. Started on CP/M, but later used DOS since we were manufacturing 30k IBM PCs a week. FYI, impressive coding there, I am still a two finger typist. 😊
@cromulence
3 жыл бұрын
I followed along coding at home, now Steve Ballmer is outside my house, banging on my window and shouting about developers.
"Internet" Dave coding in C is not small! "Dave" hold my beer......
@cyriljoly5912
3 жыл бұрын
Back to basic: Nano, Assembly and ... Jazz !!! thanks Dave !
@TalkingBook
Жыл бұрын
Just discovered this channel, let see, about 20 video viewings ago. It was already great in almost everyway imaginable and then to top it off the blooper reel resulted in belly laughs. Now like Pokemon paraphrased I gotta watch 'em all.
@houstonfirefox
Жыл бұрын
Wow, brings back memories of Z80, 6502 and early x86 assembly. First exposure to Windows programming was through Gupta SQLWindows IDE which basically exposed all of the Windows API but you still had to obey the same rules with regard to positional and data size when calling otherwise everything would blow up quite nicely. Thanks Dave!😄
@spinnetti
Жыл бұрын
I did machine code at first too - on a ZX81... clearly crazy. Oh wait, still doing assembly for the zx81 writing the games I wanted to back in 1980. No libraries, no includes, no GDI, no rom calls, no nothing. Hand code everything. 16k is a huge luxury for that machine!
@wayneyadams
Жыл бұрын
I attended college in the early 70s so I grew up one generation ahead of Garage Dave. While I first learned FORTRAN, followed by BASIC, Assembly was always my favorite. It was as close to machine language as one could get and I loved it. Speaking of small, the old-time programmers had to write extremely compact and efficient code to store in the limited memories of the old memories of the personal computers of the day. One of my all time favorite games which illustrated what could be done by top-notch programmers was "Alternate Reality." The Commodore Amiga version incorporated vastly improved graphics as well as some extra features since it used the superior Motorola 6500 16/32 bit processor. Regardless of the platform, tight efficient programs were the name of the game at the time.
@fevets51
Жыл бұрын
Oh wow - my teen years were spent writing C & 8086 assembler - I remember reading Dr Dobbs and Michael Abrash articles on Bresenham line drawing algorithms and ended up writing my own polygon fill routine in x86 assembler and once I got it working filling a single triangle I then wrote a rudimentary matrix multiplication library so I could reproduce the Elite Cobra Mk I and have it rotate the ship smoothly on a 2086 fullscreen, it was missing back plane removal so wasn't perfect but I was proud of it at 17 and it was before Windows 1.0 :D
@Matt_The_Hugenot
Жыл бұрын
This takes me back. It's 40+ years since I wrote my first assembler code for a 6502 based kit in
@patpalermo7629
3 жыл бұрын
just hilarious that i was thinking Steve Gibson through the whole video, and WHAM, you mention him in the last minute :)
@PierreMullin
2 жыл бұрын
Nice subtle 1980's Canadian pop music reference to Platinum Blonde :-)
@micajahnordyke-fg6gt
4 ай бұрын
I created the the same application in python, crazy how much more memory is used. But our modern machines can do so much more. Imagine creating applications in Assembly today, you have so much memory to work with. So you could create lightning fast things
@pencilcase8068
3 жыл бұрын
Me who has never gone beyond c++ in terms of closeness to hardware: mmmmm yes. Dark magic
@balloney2175
2 жыл бұрын
Whoa!!! This is my very first education in assembly language. Kudos, Dave!!! yo da man!
@RevellingTerror
2 жыл бұрын
Hi, I was a games assembly programmer in the 80's, working on 8bit processors like Z80 and 6502, in case yourself or subscribers are interested, with regard to the fact in the 80's home computer game coding needed to be as concise as possible and highly optimised for speed, one of the Z80 tricks was using the Stack Pointer to temporarily point to Video memory to Push graphic data to the screen as the SP took less clock cycles than the 16bit index or double register pairs. Of course the interrupts had to be very carefully managed to prevent memory corruption whilst actually writing to the video memory. The screen refresh interrupts were also tightly monitored to allow writing to screen areas already displayed thus giving the maximum time possible to perform the write operations...👍
@m4dizzle
2 жыл бұрын
When you absolutely KNOW assembly... nice! I had a semester on it back in school, but that was a looong time ago and I never worked in it commercially. Love these, keep it up! :)
@Blck0Knght
Жыл бұрын
When I was a CS student in 2000 or 2001, a friend and I collaboratively wrote a Linux command-line Hello World program that fit all of its code within its own incomplete ELF executable file header. It was something like 35 bytes long (and had some nonsense values for things like requested memory size, because we needed to put parts of the ASCII text to print in those fields). We started with a binary compiled from C, then moved the machine code instructions around with a hex editor.
@jimgerth6854
3 жыл бұрын
Yes, please do more assembly coding videos! I’ll have it this semester at Uni and will definitely come back to your Videos when I’m stuck there
@joemelnick
3 жыл бұрын
:) Tempest and 80's Atari Classic. I spent many a quarter on that game. 6502 Assembler .... Ahhh the memories. Thank you.
@rocketscienceinstituteinc8993
Жыл бұрын
Thirty years later, I learn how YOU really did it. Thanks!
@philipgairson2420
2 жыл бұрын
As always, great video and thank you for the trip back to the 80's with my assembly language reference card in my pocket, pentel pencil at the ready (0.9mm) and my trusty HP15C calculator. I never thought I would wish for those days of yesteryear but here I am......fondly missing them.
@stephenhalliwell4720
Жыл бұрын
Brings me back to my days in TAFE, learning to program OMRON PLCs in assembly with a hand held controller. The screen resembled a basic calculator with 3 rows. The younger generation will never understand our struggles😂.
@rodneysmith1750
2 жыл бұрын
Interestingly enough, being a dinosaur myself and an escapee from American Airlines where I wrote, debugged, and yes patched IBM 360 assembler using the inline procedure you describe very aptly early in this video. I recently discovered your channel and have been binge-watching it ever since, although this is the first time I have commented. I for one truly and completely enjoy your excursions down code memory lane
@jeremywillis3434
Жыл бұрын
This was very cool to watch and despite not knowing diddly about Assembly, I've learned quite a bit!
@MuscleTeamOfficial
2 жыл бұрын
Dude, You're the greatest! I just discovered you. I wish more ppl were like you online.
@DavesGarage
2 жыл бұрын
I appreciate that! Tell a friend :-)
@BakedPhoria
3 жыл бұрын
You have KZitemrs that know code but it's rare to see someone that knows the code inside the code Developers who make programs --> developers who code programs --> developers who code programs that other developers code for
@HardusHavenga
3 жыл бұрын
I like listening to your voice while I code from home. Makes me feel that I have some intelligent company in the office.
@KryptKicker5
3 жыл бұрын
Meanwhile, modern games have 100GB downloads...
@freziyt223
4 ай бұрын
The issue is that many games try to push any library they need into the code and then use it all, don't thinking about code optimization, but this doesn't count on games under 40 GB, because if the game code takes 13 gb and the platforming, libraries of system and images, 3d models, graphical aspects take other 37 gb.
@freziyt223
4 ай бұрын
For marketing purpose, this variant is very much great, push the main idea with it's unique style, meanwhile saving optimization tricks, and then do patches with that, so people will think that you are doing very much great job
@devsirat
3 жыл бұрын
This video has the lowest like to dislike ratio I've ever seen
@CommodoreGreg
2 жыл бұрын
Very cool, Dave! Your running commentary helps clear up some of the API mystery and mystique.
@theoldbigmoose
2 жыл бұрын
Loved the out takes! You rock Dave. Ol' guy nerds unite!
@KaziiTheAvali_inactive
Жыл бұрын
assembly now and days is a very "fun" challenge for those who want to learn low level codeing. similar like working on a limited pallet.
@MrEengstrom77
3 жыл бұрын
Thanks Dave this was a great trip down memory lane. I still have my 1991 MASM reference book on my shelf above my desk. Loved when books were less than 200 pages and fully described an instruction set and tool.
@leereyno
Жыл бұрын
Very cool. I was surprised that I remembered enough from my Masm for DOS class in college and windows API programming to follow along, though I couldn't code this myself if my life depended on it. I've not yet seen the C video you mentioned at the start. I'm heading to find it now...
@jerseyshore7438
2 жыл бұрын
What an amazing mind! Im learning more than ever. Really live your low key humor🙋♀️ ☮️
@craneology
3 жыл бұрын
Not sure why I am staring at your face all the time, when I should be viewing your code as you talk about it.
@Deinonuchus
Жыл бұрын
Back in college I learned 8088 assembly. I also did some fun things with 6809 assembler on my Tandy CoCo 2. Fun times.
@dpapa2175
3 жыл бұрын
Epic on so many different levels - if you aim at the king, you best not miss
@ronunderwood8099
Жыл бұрын
I used to tell people we learned machine language programming on the 6802 in electronics school in 1989. They would always say, "Oh, you mean assemble language". I would reply, "Only if you consider a pencil, paper and instruction set card an assembler".
@nortenorancio4884
2 жыл бұрын
I would greatly appreciate more Win32 tutorials, especially from someone who is as familiar with it as you are, this is the best programming channel I've stumbled upon in a long time, keep up the great content!
@Reverend11dMEOW
2 жыл бұрын
it took me about a week to hand-disassemble the 4k monitor ROM in my first notebook computer, a TI TMS9900 (using TMS9980 in this), which was actually a bare 8 1/2" x 11" circuit board with the top cover plastic case part from a TI calculatore to program it in Assembly to learn how it works. After a while I began to add what I figured Comments would be, especially the XOP sections. I wrote via USPS to TI and asked for their Source Code to compare, and they actually mailed exactly that. I found a few errors. then filling the empty 2k memory map with a Static NRAM sample from one of the first company to create an NVAM for micros, and designing and wire-wrapping the 4k Static RAM from their databook chipset and CPU specs was fun.
@jml_53
10 ай бұрын
Wow, so impressive. Who knew coding in assembly could be made interesting. I loved the tempest clip. I used to play that in the MIT student union when i was in high school in the early '80s. Still a classic! I'm curious about how the workflow for something like this has changed from the '80s to today. I've got to think the libraries and tools are so much more robust today and that it's a very different experience. I'd think it was easier because the systems and object models are so much simpler, but harder because you would have had to do a lot more without those tools. I'm still catching up on all you've put out there. This is another great video. Thanks!
@soliderarmatang5664
3 жыл бұрын
I've watched a few of your videos and I'm so happy you made this channel and put time and effort into it. I'm a few years into my career as a soft dev and I would've loved to have someone like you as my mentor, unfortunately I'm 40 years too late :) so these videos are a perfect blast from the past and very educational. Thank you! and keep adding stories to your videos, always enjoy listening to those!
@isaaczhao8152
3 жыл бұрын
I wrote a music app in assembly language. Its compiled size is 3k as well. The program will play the melody based on a text file with music notes. I think assmebly language is the cleanest and purest progamming language without any waste or noise.
@SuperLazyCoder
3 жыл бұрын
Dave, you are a king among nerds. I'm not a windows fan, but I'm now a fan of you. Great work at these videos, I'm addicted.
@jamescache1768
3 жыл бұрын
Randomly found this channel. Holy crap, it's a GOLD MINE!
@MichaelCarroll
Жыл бұрын
Man, I miss programming in assembly...! I was never particularly adept at it, but I enjoyed it a lot. Back when I had a programming job we used Borland Pascal 5.5 and would write everything in pascal first, then find all the bottlenecks in the code and one by one replace those functions with assembly versions using the "Inline" command. That sometimes resulted in a huge boost in speed, and -- even better -- yielded tremendous sense of achievement!
@CTCTraining1
3 жыл бұрын
Great job Dave ... anything made using assembly language coding is a labour of love. Keep going ... 100k subs will be with you very soon!
@oporim
Жыл бұрын
Assembly is the most fun programming language. Back in 2000/2001 me (and two other guys) were injecting new code into Falcon 4.0 simulator to enhance gameplay (plus a bunch of other guys who were editing game data and 3D models). I dont know how the other two coder guys did it, but here's how I did it (this is what's the most fun part about assembly, it let's you do almost anything). With a kernel debugger while running the game I would identify the part of code in the .exe file where I want to insert a new function. Then I would find that address in the exe file (pretty straight forward process). To insert a call for a new function, I had to overwrite 5 bytes of the original code with E8 (if i remember correctly, it's been 22 years, this is the CALL instruction) and 4 more bytes for absolute 32-bit offset of the injected function. If the underlying instructions that I had to overwrite were longer than 5 bytes, I would need to blank the other bytes with NOP (90) until the destroyed commands fully finish. Then I would find some CC (breakpoint) section in the exe file, that was safe to write new code in. There I would start my function. At the beginning of the function I would first execute the commands that I overwritten with CALL command. Then I would PUSHA push all registers on stack to preserve them for when I exit my function, so the old function can continue executing like nothing happened (PUSHF pushing flags was not necessary, as I would not insert my CALL just before a Jcc conditional jumps that need flags, or any such command that would read fresh flags). Then I would inject my code to the "CC" area. When my code would finish, I would POPA pop all registers from stack, and RET back to the old command just behind my CALL ... that could be the NOPed out area just behind my command. How I would build the code into machine code? Back then I put together a few 10k of machine code for that game, so it was undoable to compile and link it all by hand. In the game exe file I identified free areas where I would put my variables into (it could not be the CC area, as that area is .CODE and read only, so I would create a memory access fault if I would try to write into it during execution). I had to find some 00 section in the data area that was actually unused. There I would select by hand the offsets where my variables were, I would write down the offset values. Instead of coding the machine codes by hand, I would open a dummy C++ project and inside its code I would start an inline assembly section. I could safely code it in __asm and when referencing memory offsets (variables) I would use constants (offset values identified before), like MOV EAX, [some offset from the game]. As my code was inherently an extention to the existing code in Falcon4 game, I could use also the entire class data of that parent function I was injecting into. Class pointer was usually stored in ECX and then you would just read or write into [ECX + offset] to the class member variable (like head up display, or MFC/Radar display class, or read aircraft speed, angle of attack, radar antenna orientation etc). When I finished coding, I would compile my dummy program and read compiled hex codes from the OBJ file, there the code was compiled to machine code properly, but it was not yet linked, it had symbols for jumps and offsets. I would then copy the hex codes out of there to a clean text file and replace by hand all @MemoryReferences by proper offsets in the Falcon4.exe file. If I would hack the code to the exe by hand, I would write or copy these values to file with hex editor, but since we were using a patching program, this was not necessary. You would simply add a text file to the patcher, and in this file you would say where in the exe to patch with what HEX values. Towards the end of our project on this game I was writing whole new procedures for HUD and MFC displays that were dinamically dependent on which aircraft the player chose to fly. So I basically made all of my code dynamic - like a DLL of sort - and like a plugin for future expansion. When a player chose a different aircraft to fly (other than F-16), my code would allocate a block of memory with a NEW command (and release the old block of memory if there was one). Then I would read from an external file an entire section of code into this allocated block of memory. This allocated block of memory would in the end include everything like a small exe file. Its own constants (static integers, floats ...) at the beginning of the block, its own dynamic variables and finally its own code segment that used its own "class pointer" in ECX. There were a huge ammount of aircraft that a person could selct and fly in the game, and not all of them had their own MFD/HUD plug-in code segments. I only managed to prepare a few of them (like MiG-29 HUD/MFD procedures, and F-5E gunsight/radar procedures). For all the other aircraft that did not have their own MFD/HUD plug-in code, program would read a default external file (and this one had a copy of existing code from the exe file in it). Basically at that point Falcon4 game was fully plug-in capable for later expansions of HUD/MFD code segments (when they arrive, if they arrive), and the game was executing a DATA block of dynamically allocated memory (it was possible because back then there was no data execution prevention). So these are my best memories on coding in assembly / machine code in those times 20+ years ago when I also had time to do this :D . It was challenging to put everything together, but once you were familiar with how the game worked, it was a routine to do something. At that time Falcon4 was an abandonware so to say, but then someone bought the license to the game and gave our group a cease and desist order, and the whole our project died.
@nakotaapache4674
3 жыл бұрын
10:16 its only a comment ; constants and datra but whenn everythings seem to be perfect this stands out.
@landrec2
2 жыл бұрын
Oh snap! with that Steve Gibson reference! Lol I love you both!
@erikmagnusson2274
3 жыл бұрын
you can clearly see that Dave has been working at Microsoft. A Genius with 300 IQ.
@bobchestor4519
3 жыл бұрын
I cut my teeth on IBM dos (360) assembler. Those were the good old days. I’m still impressed by how smart the architects of IBM were way back then.
Пікірлер: 2,1 М.