NCOT Technology
NCOT Technology
  • 76
  • 677 217
Retro MS-DOS Coding - Recreating the Iconic Award BIOS Screen
Support the channel: ko-fi.com/ncot_tech
Read the longer blog post: ncot.uk/lets-recreate-a-90s-pc-bios-boot-screen/
Because why not, it looks simpler than it really is and we’ll get to fall down a rabbit hole trying to draw the Energy Star logo.
Once you’ve tested the compiler and figured out how to work the IDE, what next? It seems a bit of a jump going straght into a massive project.
I’m attempting to learn how to write DOS and x86 programs and need something a bit more complex than printing “Hello World”, but not so complex that I need to spend six months learning the inner bowels of a PC or its VGA card before starting.
Being unable to think of anything, I was sat staring at my emulated PC as it booted up and decided the BIOS boot screen would do. It’s mostly text, but there’s a curious image in the upper right of the screen. That big Energy Star logo. Except this is the BIOS, on a 90s PC. It’s in text mode. How’s that work?
Recreating the majority of this is easy, it’s just a load of printf() statements and some code to position the cursor properly.
The logo though? Let’s go down that rabbit hole…
มุมมอง: 91 462

วีดีโอ

Nostalgic DOS Development Part 1 - FreeDOS, DJGPP, RHIDE and other madness.
มุมมอง 47Kหลายเดือนก่อน
Support the Channel: ncot.uk/support/ Modern programming is too abstract, let's get down to basics and do some programming in DOS using C. You can join in too! In this video I explain how to set up 86Box with FreeDOS, and then how to install DJGPP the C compiler and RHIDE the IDE. Then we write some good old C code in a friendly editor. Come back to a time when 640k was enough, and when a 486 D...
Tilemap Game Engine Development - Agon Light C Programming
มุมมอง 7K2 หลายเดือนก่อน
In this video, I took the next step in my game development for the Agon Light by building a tilemap system and integrating it with the existing physics engine from the previous video. The tilemap, a classic way to structure game levels, includes solid tiles that interact with game sprites. While detecting collisions with tiles is usually straightforward, incorporating a physics engine made thin...
2D physics game programming in C, retro style | Gamedev the hard way #2
มุมมอง 9K4 หลายเดือนก่อน
Join me on a journey as I attempt to write a game for my Agon Light using nothing but raw C programming. In this second episode I figure out how to make a very basic 2D rigid body physics system work. It doesn't matter if you don't have an Agon Light, I'm bringing you along for the ride. We'll be looking at how games deal with the objects they manipulate, and how to detect and resolve collision...
Writing a game the hard way - from scratch using C. #1
มุมมอง 199K4 หลายเดือนก่อน
Join me on a journey as I attempt to write a game for my Agon Light using nothing but raw C programming. In this first episode I figure out what kind of game to make, look at some shareware games of the past and get a basic game engine working, using nothing but C code - no external game engines or modern development tools. It doesn't matter if you don't have an Agon Light, I'm bringing you alo...
Stealing the secrets of the NES - Agon Light Tilemaps in C
มุมมอง 2.9K7 หลายเดือนก่อน
Support the channel: ncot.uk/support Github: github.com/ncot-tech/agon-graphics In this video, I explore how early computers used clever tricks to create moving graphics, focusing on how Nintendo developed tile-based games on the NES. Using these techniques, I built a scrolling tilemap system for the Agon Light using C. We start with a quick look at the evolution of game graphics, from text-bas...
Programming Bitmap Graphics - Agon Light using C
มุมมอง 2.3K8 หลายเดือนก่อน
Get the code: github.com/ncot-tech/agon-graphics Support the channel: ncot.uk/support Visit the website: ncot.uk In this video I look at how you can program the Agon Light to display bitmap images using C. I go through how to convert a PNG image into an RGB2222 format bitmap image, and then use the C library functions to load that into the Agon Light, and the VPD commands necessary to display t...
Programming Windows Screensavers - Agon Light Graphics Programming
มุมมอง 8K8 หลายเดือนก่อน
Support the Channel - ncot.uk/support Get the code for this episode - github.com/ncot-tech/agon-graphics I'm learning how to program the Agon Light, and as a project thought it'd be fun to try and program two of the classic Windows 3.11 screensavers - Mystify and Starfield Simulation. My aim is not to simply program the Agon Light by cloning the Windows 3.11 screensavers, but to learn how to pr...
Programming Language Easter Eggs
มุมมอง 1.6K9 หลายเดือนก่อน
Easter eggs are usually hidden inside our games and software, but did you know there are some hidden inside the tools and languages used to make that software? Come with me on a fun Easter diversion while we eat our bodyweight in chocolate, and look at six programming Easter Eggs. Some of these are from the Python programming language. It seems they had a lot of fun making the language itself a...
Calculating Pi using Python - Gauss-Legendre and Monte Carlo methods - #piday 2024
มุมมอง 7499 หลายเดือนก่อน
Let's celebrate #piday in this appropriately short video by writing some #python programs to calculate Pi. The first method uses something called the Gauss-Legendre method. It works by iteratively refining an approximation of Pi, generating the answer digit by digit. When writing code to calculate Pi we run into issues trying to store the calculated value. A floating point or double precision f...
Agon Light 2 - C Programming, Better Keyboard Routines, Joystick Ports
มุมมอง 3.4K10 หลายเดือนก่อน
Dive into the exciting world of DIY hardware hacking. Join in as I explore joystick integration, keyboard inputs, and serial debugging using the versatile Agon Light platform. Delve into the technical intricacies of GPIO pins, assembly language programming, and C compiler usage for low-level development. Discover the power of computational thinking, boolean logic, and UART serial communication ...
Cellular Automata - Simulate life from chaos and code
มุมมอง 1.3K11 หลายเดือนก่อน
Today, we're diving into the world of cellular automata. A digital playground of sorts where simple rules lead to astonishing complexity. where order can arise from chaos and collapse back into chaos just as quickly. First we have a look at One Dimensional Cellular Automata which were originally conceived by John Von Neumann in the 1950s. These cellular automata operate on a grid of cells, usin...
Agon Light C Programming - An Introduction
มุมมอง 4.5K11 หลายเดือนก่อน
Instead of bashing away in BASIC, it's possible to do some coding in C on the Agon Light. Let's find out how in this introduction to an ongoing series where I figure out the Agon hardware and work on a game. I have no idea what game I want to make, and I'm not entirely sure how to achieve some of the necessary functions, but it'll be fun figuring it out and I hope you come along for the ride! T...
The Dark Art of Programming - Writing Cursed Code
มุมมอง 2.8Kปีที่แล้ว
The Dark Art of Programming - Writing Cursed Code
FORTH - Better than BASIC?
มุมมอง 42Kปีที่แล้ว
FORTH - Better than BASIC?
Sinclair BASIC vs BBC BASIC - How to fit an entire devkit inside 64K
มุมมอง 14Kปีที่แล้ว
Sinclair BASIC vs BBC BASIC - How to fit an entire devkit inside 64K
The Internet - Mid 90's Web Culture
มุมมอง 6Kปีที่แล้ว
The Internet - Mid 90's Web Culture
Zilog Z80 Deep Dive - How does it work?
มุมมอง 29Kปีที่แล้ว
Zilog Z80 Deep Dive - How does it work?
The Computer Timeline: Calculators, Maths and Reverse Polish Notation
มุมมอง 1.4Kปีที่แล้ว
The Computer Timeline: Calculators, Maths and Reverse Polish Notation
How the 1880 Census Led to the Invention of the Computer
มุมมอง 589ปีที่แล้ว
How the 1880 Census Led to the Invention of the Computer
Tiling the Plane - What are Wang Tiles?
มุมมอง 963ปีที่แล้ว
Tiling the Plane - What are Wang Tiles?
DIY Solar PV Installation - Can it save me money?
มุมมอง 548ปีที่แล้ว
DIY Solar PV Installation - Can it save me money?
Hacking Your Way to a Smarter Home: Integrating Smart Sockets with Home Assistant
มุมมอง 2.5Kปีที่แล้ว
Hacking Your Way to a Smarter Home: Integrating Smart Sockets with Home Assistant
BBC BASIC in RiscOS on a Raspberry Pi is really cool!
มุมมอง 16Kปีที่แล้ว
BBC BASIC in RiscOS on a Raspberry Pi is really cool!
Samsung SDP-860 Document Presenter Thing [VLOG 1]
มุมมอง 622ปีที่แล้ว
Samsung SDP-860 Document Presenter Thing [VLOG 1]
2022 Review and Beyond!
มุมมอง 1982 ปีที่แล้ว
2022 Review and Beyond!
The £3,000 brick phone - mobile phones in the 1980s
มุมมอง 1K2 ปีที่แล้ว
The £3,000 brick phone - mobile phones in the 1980s
DMA - Direct Memory Access on the ZX Spectrum Next
มุมมอง 1.3K2 ปีที่แล้ว
DMA - Direct Memory Access on the ZX Spectrum Next
Clever engineering on a budget - ZX Spectrum Interrupts
มุมมอง 10K2 ปีที่แล้ว
Clever engineering on a budget - ZX Spectrum Interrupts
Breaking the 64k barrier - Spectrum Memory Banking
มุมมอง 7K2 ปีที่แล้ว
Breaking the 64k barrier - Spectrum Memory Banking

ความคิดเห็น

  • @BentonVonKitten
    @BentonVonKitten 3 ชั่วโมงที่ผ่านมา

    1:00 You should play screaming sounds whilst unwrapping that shaft.

  • @edgeeffect
    @edgeeffect 5 ชั่วโมงที่ผ่านมา

    It's funny I'm working on a debugger FOR AVR chips (as found in the Arduino)

  • @onionmixer
    @onionmixer 16 ชั่วโมงที่ผ่านมา

    wow!! what the!!

  • @zakr2
    @zakr2 17 ชั่วโมงที่ผ่านมา

    Какой-то чудак, полез разбираться и не осилил, видеорежим не тот выбрал. Там же видно, что на оригинале буквы широкие. Я думал это история успеха а тут не очень пока. Ещё игры делать с таким опытом, это курам на смех.

    • @ncot_tech
      @ncot_tech 17 ชั่วโมงที่ผ่านมา

      @@zakr2 if you watch the whole video I do point out it's not correct, and then ask if anyone knows how to fix it.

    • @zakr2
      @zakr2 16 ชั่วโมงที่ผ่านมา

      @ncot_tech вам лучше воспользоваться SOF в таком случае а не морочить людям голову

  • @maxmuster7003
    @maxmuster7003 17 ชั่วโมงที่ผ่านมา

    I converted online some animated gives into single pictures with 112x112 pixel to download in a zip file and then i converted the pictures into character files for an animation on the text screen. The animation use a block of 14*7=98 extended ASCII character with 8*16 size. I put all instructions to convert and to start the animation into batch files using batch files as open source container for x86 assembly to create new executable from the routine inside with a little help from debug. These batch files have to start with parameter attached to build and to modify the routine. Now i thing aboit to build a new C routine to create a batch with a lot of call commands to start with a lot of filenames attached. Some animated gives have 200 pictures for example, but the charater files have only 1,5 kb.

  • @CarlintVeld
    @CarlintVeld 19 ชั่วโมงที่ผ่านมา

    Would be cool to see you compiling a program that does perturbation based infinite zoom mandelbrot ❤

  • @jonweinraub
    @jonweinraub 20 ชั่วโมงที่ผ่านมา

    In high school I did a lot of Pascal graphics and it was nearly all assembly that did the cool stuff like custom fonts, really cool graphics that I would expect games to have. Didn’t bother with the turtle graphics but I for the life can’t find the files. The website I found was based in Netherlands but he had some cool demos too. Kinda reminds me what you did and of course failing to use int 21h as a prank was fun ;-)

  • @ggsj
    @ggsj วันที่ผ่านมา

    So this is how it was done! I was a teenager back at the time of this CPU, and without accessible and affordable internet in my country (Brazil) I had to do a lot of techno-sorcery to learn anything that wasn't covered by my teachers at IT technician school, including how to create graphics in DOS, interrupts (I loved messing around with them), and stuff. Trying to figure out how that damn screen worked gave me a lot of grief. Thank you for solving this mistery for me after all those years!

  • @wichtelchen
    @wichtelchen วันที่ผ่านมา

    As a kid, I was on a special education school and in the 5. grade there was an education game called "Budenberg" at school. It was in the 90s. At that time, I was already pretty familiar with QBasic (I've teached it myself) and that game was extremely interesting to me because I noticed quickly how it was made: That game was pretty complex (it included many different kind for reading-, writing-, math- and other game modes) but hacked together. It uses almost all possible and impossible screen modes and some modes used tricks like the one in the video. And everything was squeezed into one single 720k 3,5" disk! The game modes utilizing the tricks look like graphic screen modes at first glance. But the software was unstable and crashed frequently. When it did, it often revealed the secret fact that the "graphic mode" was in fact text-mode! It took long time to me to figure out how they included things like circular pie charts etc. into text modes. The audio part is still a mystery to me: The game was made with rotten school-286's in mind with no sound blaster. It used the internal speaker to read aloud words, letters and phrases. The audio output through the internal was pretty clear and human-like. I know there is some crude PCM/PWM hack but this usually produces robotic sound. And how did they get the sound files into the disk? I can confirm everything was really on that one disk with no hidden chamber because a few grades later, I was that one stundent who fixed all kind of computer-related issues because every teacher was afraid of computers, especially those running MS-DOS without mouse. What I did most of time: Getting this game out of some weird bricked state by reinstalling it from the disk xD. That old dinosaur still seems to be on sale.

  • @mbirth
    @mbirth วันที่ผ่านมา

    The boot manager VCOM System Commander also did this character replacement trick to show icons for DOS, Windows, Linux, etc. in the boot selection screen. Made the computer feel so much more modern...

  • @germanandresruizhernandez9747
    @germanandresruizhernandez9747 วันที่ผ่านมา

    ¿8th language is similar to Forth?

  • @gerardojosueportillo
    @gerardojosueportillo วันที่ผ่านมา

    Thats screen mode 12, supports text and drawing

  • @ПанковМакс2008
    @ПанковМакс2008 2 วันที่ผ่านมา

    Gigabyte p55-ud4 lga 1156 dispays exact same bootscreen as shown in video.

  • @williamdrum9899
    @williamdrum9899 2 วันที่ผ่านมา

    4:52 All I can say is, I hope this website never goes away, it's like the Library of Alexandria for this stuff

  • @Аль-Тарф
    @Аль-Тарф 2 วันที่ผ่านมา

    It is possible that the Energy Star logo is displayed during boot exactly as you said, but it seems to me that it could also be displayed as a graphic (by the way, this has already been written about in the comments here), because many BIOSes had a function for displaying a splash screen and even replacing it with a user-defined version. As far as I remember, when displaying graphics using the BIOS 10h software interrupt, text can also be displayed, and the BIOS int 10h interrupt is available much earlier than other BIOS interrupts when booting the computer.

  • @Chester-y1y
    @Chester-y1y 2 วันที่ผ่านมา

    Reminds me a bit of the programmable symbol sets for the IBM 3279 colour terminal. Think green graphics lightning.

  • @ch33rfulness
    @ch33rfulness 2 วันที่ผ่านมา

    Interesting way of naming the index of each nested “for” loop 😬 Irrelevant, I know, but it just caught my attention, as I’ve always dreamed about “i, j, k” and not “k, j, i” 🫢

    • @ncot_tech
      @ncot_tech 2 วันที่ผ่านมา

      @@ch33rfulness yes that's what happens when you write the code as a single loop then realise it needs to be a nested loop, and don't rename the variables 😄

  • @ChrisOchieng
    @ChrisOchieng 2 วันที่ผ่านมา

    Random c header stuff 😂

  • @DefaultFlame
    @DefaultFlame 2 วันที่ผ่านมา

    1:35 I don't know about anyone else, but to me there's just something beautiful about seeing the raw silicon of an IC, especially a CPU. And I mean that in the same way that I can see beauty in some pieces of art, purely aesthetically. 8:44 "does stuff, and give outputs in a predictable and noble way" "Noble way" That makes me smile.

  • @MikkoRantalainen
    @MikkoRantalainen 2 วันที่ผ่านมา

    I was expecting you to code in true 16-bit mode to recreate the original 16-bit execution.

    • @ncot_tech
      @ncot_tech 2 วันที่ผ่านมา

      @@MikkoRantalainen I will try that insanity in the future.

  • @neutropictransmissions888
    @neutropictransmissions888 2 วันที่ผ่านมา

    Sounds like you need to set a new color profile... that's not the official name, I'll have to check. Yeah, you''l want to re-calibrate it, and most people don't need the hardware these days to do that, I have two graphics cards, and I just let Intel (the smaller integrated card) handle those big changes, because that guy from NVidia wears a tiny little lether coat, we can't trust that dude with issues of scaling. You would think you only have three choices coming up, R G B, but that rabbit whole goes on for miles. Just look up a profile forit, and from what I hear, the manufacterer not only doesn't always ship it with something to calibrate properly with, it's the norm. But that's just what I have heard, I don't know. It made a yuge difference for me, but that doesn't translate right with multiple displays. But I'm gettting ahead of myself. :-D Hope this helps.

  • @DefaultFlame
    @DefaultFlame 2 วันที่ผ่านมา

    I'm a newbie programmer, and I despise significant whitespace.

  • @bluetopia42
    @bluetopia42 2 วันที่ผ่านมา

    Omg I love your channel, dude!

  • @bluetopia42
    @bluetopia42 2 วันที่ผ่านมา

    It's a relief that I always knew how it was done... and I was right. :D Thank you for showing, how it's done practically!

  • @formationWPfacile
    @formationWPfacile 3 วันที่ผ่านมา

    Remember Gopher?

  • @TheMicsaund
    @TheMicsaund 3 วันที่ผ่านมา

    Nice keyboard -- got a link?

  • @DennisdeWeerd
    @DennisdeWeerd 3 วันที่ผ่านมา

    I love this series! I have setup the environment as you explained (but on a real machine) and i hope to learn some bite-sized stuff from you :) Demo effects would be great, but probably far from simple. I will keep an eye on your new videos for sure. Thank you so much for explaining everything so ..well!

  • @KikkerFish
    @KikkerFish 3 วันที่ผ่านมา

    Liked and subscribed!!

  • @FuzzyTekShow
    @FuzzyTekShow 3 วันที่ผ่านมา

    Love this kind of thing, especially when explained through what's going on. Nice one, thanks! :)

  • @WobblycogsUk
    @WobblycogsUk 3 วันที่ผ่านมา

    Very interesting, I'd never considered how they made that logo. Back in the day it was quite impressive. As for the forum question, if it was a choice between a forum and discord I'd choose the forum every single time. It's not the discord is bad but the sorts of discussions likely to take place will be drawn out over days and might want to be archived.

  • @fxphzznpjfdl5bpuqjxo504
    @fxphzznpjfdl5bpuqjxo504 3 วันที่ผ่านมา

    17:33 lol

  • @Teo97b
    @Teo97b 3 วันที่ผ่านมา

    I don’t understand. You basically modified the ASCII symbols in order to draw the Energy Star logo?

  • @julianvalenti
    @julianvalenti 3 วันที่ผ่านมา

    You have done a nice road!

  • @fadate7292
    @fadate7292 3 วันที่ผ่านมา

    You need to call another video mode, that has char remapping only for 8x14 instead of 9x16. There's a DOS tool that lets you visually remap the char set in realtime, that generates an exe file. When run, it applies all the char changes. A neat trick. I think it's called FONTEDIT. I think you can see the modified EGA (or whatevs) char set if you change the video mode before launching FONTEDIT and see what chars were modified by BIOS.EPA. I didn't try, tho.

  • @spjewkes
    @spjewkes 3 วันที่ผ่านมา

    Your videos are fantastic. I love this sort of thing: trying to replicate something reasonably small with a deep-dive investigation (and using a nice, straightforward language :) ). You make everything clear and understandable without labouring the point.

  • @Isuis66
    @Isuis66 3 วันที่ผ่านมา

    Don’t forget to close your logo file after you’re done reading it.

  • @matkoFfgcko
    @matkoFfgcko 4 วันที่ผ่านมา

    plasmatic intro by zden th-cam.com/video/pJ65514-huY/w-d-xo.htmlsi=HpafDVdd3nUIWmgY

  • @seancondon5572
    @seancondon5572 4 วันที่ผ่านมา

    Well, I can reasonably assume you're from the UK. I gotta wonder. Did people in the UK even give a shit about the whole "EnergyStar" BS?! I mean, even to this day I still see that symbol. You got to any appliance section of a hardware store in the USA you're gonna see in plastered all over washing machines, dryers, dishwashers, refrigerators, stoves... it seems to be a strictly US thing. Thing is, your appliances run strictly off 240v, whereas ours are 120v for the small ones and 240v for the large ones. I doubt you see EnergyStar plastered all over the damn place like we do, but what's your opinion of seeing this ridiculous and distincly American crap on your old PCs in the UK?

  • @MR-vj8dn
    @MR-vj8dn 4 วันที่ผ่านมา

    I was amazingly amazed when I saw the Energy Star graphical logo on top of a text mode screen. Not just the first time, but for quite some time. I couldn't understand how they did it, and I don't think I ever say such usage anywhere else. Great times 😄

  • @MarkusGeiger
    @MarkusGeiger 4 วันที่ผ่านมา

    Try bit shift to the left. It may only use 7 bit for defining a glyph.

  • @CC-ke5np
    @CC-ke5np 4 วันที่ผ่านมา

    VGA has hard wired gaps between the characters. Some characters override this and the last column of the character is doubled. This is why you can draw uninterrupted lines and boxes. Which characters do this is also hard wired in the VGA circuits. This enhances the resolution without requiring more character ROM space. CGA/EGA doesn't has this feature so you need the gap in the Char-ROM itself. That's why CGA text is more "blocky". On the other hand, you can use custom characters to display graphics just like your average 8-bit micro.

  • @RETROMachines
    @RETROMachines 4 วันที่ผ่านมา

    Thanks a lot.

  • @LonnonFoster
    @LonnonFoster 4 วันที่ผ่านมา

    Demo scene best scene! Great to see an everyday artifact of my earlier life dissected and explained so well. Thanks for digging into this and sharing!

  • @richardbradley3684
    @richardbradley3684 4 วันที่ผ่านมา

    "I told my mortgage lender I'd still be working at that age" ha ha you & me both mate

  • @angellt1267
    @angellt1267 4 วันที่ผ่านมา

    Go ahead with the forum! 👍

  • @Lucas-Fair
    @Lucas-Fair 4 วันที่ผ่านมา

    This is really nice! I'd like to see an update/follow-up on this, even if it's just a two-minute video.

  • @jamesweatherley7764
    @jamesweatherley7764 4 วันที่ผ่านมา

    One step beyond would be to get the memory, BIOS name, etc by querying the system rather than hard coding. Nice stuff though. I fear demo coding on old stuff will require insane coding and maths skills though!

  • @SpeedyGwen
    @SpeedyGwen 4 วันที่ผ่านมา

    it reminds me about how the windows 10 loading animation is actually a font and it just switch characters, which is verry elegant and optimal

  • @JohnDlugosz
    @JohnDlugosz 4 วันที่ผ่านมา

    Re your closing comments: You might look at FRACTINT. After drawing a fractal in a 256-color mode, it would rotate the colors in the palette. It could also load different palettes at the touch of a button.

  • @TheUtuber999
    @TheUtuber999 4 วันที่ผ่านมา

    0:38 Didn't the 486 DX run at 33 MHz and the DX2 ran at 66 MHz? 32 MHz doesn't sound familiar. Wondering if you might have been thinking of 32 as in 32 bits? 5:20 (Edit) Looks like the code was later updated since it shows '80486DX/2 CPU at 66MHz' here.