chill runs
chill runs
  • 24
  • 40 353

Відео

Operating system development: profiling and timing (dev stream 2023.4)
Переглядів 1259 місяців тому
I created an ELF/DWARF parser, so we can now accurately profile the CPU in static functions. Originally aired on Twitch on 2023-08-08. www.twitch.tv/chill_runs. I'm trying to do these every Tuesday and/or Thursday.
Operating system development: profiling and timing (dev stream 2023.3)
Переглядів 549 місяців тому
Following up on last week's stream, we used the now working IP sampler to profile a running program. Then we grouped the results by subroutine using OpenWatcom's map files as a symbol table. We'll need to do some more work to accurately profile functions with static linkage.
Operating system development: profiling and timing (dev stream 2023.2)
Переглядів 1259 місяців тому
A lot of core features are feeling stable now, so I'm turning my attention to some performance optimization. In particular, things are slow on IBM XT class systems. I roughed out a profiler using the 8088 single step interrupt, tried a couple different approaches to storing the data, and ruled out a couple ideas. After this session, I abandoned the idea of saving files. For now, the profiler wi...
StarTropics 2 ROM hacking stream
Переглядів 8711 місяців тому
My friend and I were talking about the annoying low health beep in this game. I decided to disable it for them and streamed the investigation and hack. Originally aired on my Twitch channel: www.twitch.tv/chill_runs
Blaster Master ROM hacking/disassembly stream 2023-06-15
Переглядів 20211 місяців тому
More disassembly of Blaster Master for the NES. In this stream, I started looking into the code that controls enemy behaviors. Originally aired on my Twitch channel: www.twitch.tv/chill_runs
Introducing my own retro x86 operating system. Dev stream 2023.1
Переглядів 37611 місяців тому
I've been working on my own 16-bit real mode x86 operating system. It targets CPUs back to the 8088 and hardware back to the IBM XT. I've been working on it for about a year now and am ready to stream some development. Originally aired on my Twitch channel: www.twitch.tv/chill_runs
MS-DOS Memory Management on x86
Переглядів 23 тис.2 роки тому
I review the history and evolution of memory management in MS-DOS on x86 PC architecture. 0:00 Introduction/terminology. 0:53 Origins of MS-DOS. 1:33 8086, 80286, 80386 memory model. Real/protected modes. 3:17 PC address space. DOS address space and memory terminology. 6:46 Expanded memory. 8:26 Extended memory. 10:18 DOS Extenders. 11:35 Microsoft moves to Windows. 12:21 Conclusion.
Paganitzu stream (Apogee, 1991, DOS) with commentary
Переглядів 862 роки тому
I play through Paganitzu Part 1: Romancing the Rose. I enjoyed revisiting this top down action/puzzle game.
Debugging assembly language with MS-DOS DEBUG
Переглядів 6 тис.2 роки тому
I do a demonstration of writing and debugging x86 assembly language code using the MS-DOS debug utility. 00:00 Introduction/prerequisites 02:05 Launching DOS debug 02:35 Getting help 02:56 Showing CPU state and the next instruction 04:38 Quick intro to assembling and running code 05:50 Command argument types. Displaying and changing memory 11:42 Assembling code 12:33 Running code. Breakpoints 1...
Realms of Chaos stream (Apogee, 1995, DOS) with commentary
Переглядів 2282 роки тому
I stream episode 1 and part of 2 of this mid-90s shareware side-scrolling platformer. Sorry for the lag in some parts. It showed me I need to do some optimization on my setup.
x86 assembly language for MS-DOS: Hello, world
Переглядів 9 тис.2 роки тому
x86 assembly language for MS-DOS: Hello, world
Solar Winds gameplay with commentary (Epic MegaGames, 1993, DOS)
Переглядів 6302 роки тому
Solar Winds gameplay with commentary (Epic MegaGames, 1993, DOS)
Tyrian (Epic MegaGames, MS-DOS, 1995) gameplay with commentary
Переглядів 582 роки тому
Tyrian (Epic MegaGames, MS-DOS, 1995) gameplay with commentary
Bio Menace (Apogee, MS-DOS) live gameplay stream with commentary
Переглядів 582 роки тому
Bio Menace (Apogee, MS-DOS) live gameplay stream with commentary
Classic MS-DOS games stream: Robomaze, Robomaze II, Robomaze III
Переглядів 1862 роки тому
Classic MS-DOS games stream: Robomaze, Robomaze II, Robomaze III
Super Ghouls 'n Ghosts SNES long play, professional difficulty, loop 1, no deaths
Переглядів 222 роки тому
Super Ghouls 'n Ghosts SNES long play, professional difficulty, loop 1, no deaths
Gradius long play, no deaths, real NES
Переглядів 102 роки тому
Gradius long play, no deaths, real NES
Blaster Master long play, no deaths, real NES.
Переглядів 612 роки тому
Blaster Master long play, no deaths, real NES.

КОМЕНТАРІ

  • @bernieman9016
    @bernieman9016 2 дні тому

    You made all that sound quite straight forward and approachable which is saying something when you're introducing assembly!

  • @zzco
    @zzco 9 днів тому

    I want to write an OS that sits atop MS-DOS that runs on ELF, similar to how Windows 3 uses NE. Lol.

  • @AhmedAzhad
    @AhmedAzhad 9 днів тому

    Your content is super accurate. But are you using voice changers or robotic voice - it is so boring to listen to it - so many times turned off the video.

  • @ninjazhu
    @ninjazhu 10 днів тому

    You keep talking in past tense but they are megabytes if you are speaking in past tense.

  • @az09letters92
    @az09letters92 13 днів тому

    You completely forgot to mention unofficial "unreal" mode, where you first switch the CPU to protected mode, extend the segments to 4GB and switch back to real mode. Boom, you can now access full 4GB of RAM from real mode, with real mode DOS, drivers, TSRs, etc. all functioning normally.

  • @grandrapids57
    @grandrapids57 14 днів тому

    When I worked on my first PC, knowing it could have 640k of RAM, it seemed, and it was, an inexhaustible ocean of RAM.

  • @Nickelodeon81
    @Nickelodeon81 Місяць тому

    "You are more ugly!"

  • @Taras-Nabad
    @Taras-Nabad Місяць тому

    QEMM

  • @NickFletcher-gb9ne
    @NickFletcher-gb9ne Місяць тому

    That was great, thank you!

  • @johng.1703
    @johng.1703 Місяць тому

    I remember back in the day having a 20MB 386 that was tricked out, and having to have a multiple choice config / autoexec depending on what I needed as I didn't have enough base / umb / himem to get all of the drivers in and be able to run a half decent dos game. one config also had a 16MB ram drive that copied games I would play into it and run the game from ram. it was a long copy time, but games ran fast.

  • @arturwiebe7482
    @arturwiebe7482 Місяць тому

    If i remember correctly one can generate COM files with the DOS debugger, too. No need for an assembler 😊

  • @stevenbliss989
    @stevenbliss989 Місяць тому

    Dr. DOS was VAASTLY superior to CRAP DOS, and EVIL M$ tactics destrpyed it! .....NO FORGIVENESS!!!!!!!! EVIL EVIL EVIL EVIL!!!!!!!!!!!!!!!!!!!!!!!!!

  • @zerobyte802
    @zerobyte802 2 місяці тому

    The worm reverse code appears to be: Compare obj-velocity-x with “direction to Jason” (stored in $01) the EOR is a quick way to see if the signs match or not. BPL decides no reverse (bit 7 matches - ie the worm is going towards Jason) Then the reverse code is: Set velocity to F (going right) If vector to Jason (LDX $01) is left, then negate. Store result in obj-velocity-x.

  • @zerobyte802
    @zerobyte802 2 місяці тому

    Do you have the commented disassembly posted on GitHub or anything like that? I’d be happy to contribute my own findings. I’m interested in poking through the audio engine and music pattern data.

  • @Irvin700
    @Irvin700 2 місяці тому

    This is pretty cool! I just got into 8086 - 80486 era and memory management of the 1MB barrier in real mode and protected mode. If only I was more into it when I was younger lol

  • @Rare.99
    @Rare.99 3 місяці тому

    Best game ever so nostalgic

  • @magnum333
    @magnum333 4 місяці тому

    8:45 "Extended Memory - XMS maps extended RAM to UMBs". What UMBs does XMS use? or does it use conventional memory?

  • @roop5318
    @roop5318 5 місяців тому

    Mebibyte... Ugh.

  • @sundhaug92
    @sundhaug92 5 місяців тому

    1:58 you forgot the 186 2:33 the 286 was only mostly compatible, it didn't roll over at the 1MB limit like the 8086/8088 and 186, which is why the A20 gate was needed 3:00 the 386 can run real-mode apps in protected mode using virtual 8086 mode

  • @tetsuoshiva
    @tetsuoshiva 7 місяців тому

    Is the code published somewhere?

  • @enirya
    @enirya 7 місяців тому

    this is a great video, subscribed

  • @adamdnewman
    @adamdnewman 7 місяців тому

    This is awesome, I look forward to seeing much more.

  • @BlackEpyon
    @BlackEpyon 7 місяців тому

    The difference between the 8086 and 8088 is that the 8086 has 16 of it's address pins duplexing as data pins, while the 8088 only has 8 of them duplexing as data pins, but they are otherwise identical. This means that the 8086 is capable of accessing it's memory 16-bits at a time instead of 8-bits like the 8088. What I'm curious about is whether or not any motherboards actually implemented this. Given that the 8086 was more popular among business-oriented machines, I'm guessing somebody did, but I'm not familiar with any specifically.

  • @CostumeJewelryHome
    @CostumeJewelryHome 7 місяців тому

    Do you have a GitHub page?

    • @chillruns6221
      @chillruns6221 7 місяців тому

      I generally use self-hosted git repositories, except for when I fork others' projects. Why do you ask? Are you looking for anything in particular?

  • @skagon_
    @skagon_ 7 місяців тому

    Nobody who used a computer in that time would call a megabyte "mibibyte".

    • @chillruns6221
      @chillruns6221 7 місяців тому

      I used computers then and called it a megabyte at that time. I use computers now and chose the term mebibyte in this video.

    • @skagon_
      @skagon_ 7 місяців тому

      @@chillruns6221 How about you get back in touch with reality and stop using idiotic made-up crap that were meant to fix a problem that never existed?

  • @dmac7128
    @dmac7128 7 місяців тому

    From my experience the memory area above 640 Kb was only available as RAM when a memory manager program like 386MAX or QEMM was installed. DOS 5.0 and higher has a similar memory manager included. Plus you could only do this on a 386 or higher CPU. There were some DOS games that needed this because they needed 600 Kb+ of RAM to run. These memory manager programs also supported the EMS memory interface in software by reserving a 64 Kb UMB area. They also scanned the entire upper memory area to map all free UMB's which included unused areas that were reserved for the system BIOS Typically these programs would load device drivers and TSRs into these recovered UMBs.

  • @Erlisch1337
    @Erlisch1337 7 місяців тому

    the good old days of messing with autoexec.bat and config.sys to to free up memory to maybe run a game

  • @iwanttocomplain
    @iwanttocomplain 7 місяців тому

    You just have to know your config.sys and autoexec.bat files.

  • @CameronHuff
    @CameronHuff 7 місяців тому

    "We'll never need more than 640K " - some guy that was completely wrong.

    • @shallex5744
      @shallex5744 27 днів тому

      if you're referring to Bill Gates, there's no evidence that he ever actually said that

  • @assholeyeng
    @assholeyeng 7 місяців тому

    ms tres

  • @pelimies1818
    @pelimies1818 7 місяців тому

    To get Falcon3.0 with expansion packs running.. you needed to know all this shiet in this video - front and back.

  • @schifoso
    @schifoso 7 місяців тому

    The first KB was not occupied by the BIOS. It was RAM and was the BIOS Data Area (BDA); the values were populated by the BIOS. The first KB was actually the Interrupt Vector Table (IVT), then came BDA values for items such as COM/LPT port addresses, memory size, keyboard buffer, soft reset behavior, etc. MS-DOS boot sector would load initial code to 0:7C0, and would use 70:0 as the DOD data area.

    • @chillruns6221
      @chillruns6221 7 місяців тому

      I don't go into that level of detail in the video, but had intended all those things, not only BIOS code, to be included in what I call BIOS. What you say is true, of course. Thank you for specifying.

  • @supercompooper
    @supercompooper 7 місяців тому

    Bah humbug, I think no one needs more than 64k 😂

  • @megarollxrgmbroadcasting91
    @megarollxrgmbroadcasting91 7 місяців тому

    The music goes hard

  • @8088argentina
    @8088argentina 7 місяців тому

    no, el 8088 es una variante del 8086, mas economica, el 8086 es de 1976 y el 8088 es de 1979

  • @SweetBearCub
    @SweetBearCub 7 місяців тому

    Talk about a blast from the past! When I was a teenager (pre-internet), I remember fighting with DOS and reading deep into manuals to squeeze out every free byte of RAM for my games. It could be quite intricate, and it took a while. It was almost like a game itself to find the right combinations.

    • @lordterra1377
      @lordterra1377 6 місяців тому

      I agree it felt like dark wizard magic. Now I just use some configuration files from Phils computer lab. It was finally able to get some games working I never did.

  • @mindbenderx1174
    @mindbenderx1174 7 місяців тому

    i got specialty smartdrv, mouse, mscdex, and this special emm386(don't think it was qmm) that could use hard drive space as "ram" is you didn't have enough for a game, I used it to try to run magic carpet, on my 4mb 486 sx 25, packard bell. My computer did com with all these util Free cds. I did manage to get 621 free after all that. Does anyone know where I might find a Dos app called no.exe its usage would be zipping all contents of a folder with pkzip, so after zipping *.* no *.zip del *.* So basically one could make a batch file, to add hidden attribute to the prompt but i liked the exe because it was shareware and because it told you to pay or else. leaving you with just your zip. I would use it to compress on the fly different games when i wanted to play them and only a 250mb hard drive. I can't find any info about no.exe I also made a dos 62 and arachne and a ramdisk to book off single floppy with dos network support and mouse etc. I was always trying to push a limit somewhere.

    • @chillruns6221
      @chillruns6221 7 місяців тому

      I also used Magic Carpet on a similar machine, a Compaq Presario 486DX/33 with 4MiB RAM. I'd love to have that machine again. I've never heard of no.exe. Maybe see if FreeDOS includes anything similar or if people in the FreeDOS community have any leads on it? I've been able to find many things on archive.org, but often have to sort through archives to find them.

  • @davidgrisez
    @davidgrisez 7 місяців тому

    We have the well known example of the "Hello World!" program. This was first run over 40 years ago on real IBM PC hardware and also run on many PC compatible computers. This was practically the simplest program that could be written for MS-DOS. Now unless we have a historic restored IBM PC or PC compatible computer we have to run it on a DOS emulator.

    • @nickwallette6201
      @nickwallette6201 7 місяців тому

      Well, who _doesn't_ have a 5150 hanging around? :-D

    • @jussiala-konni288
      @jussiala-konni288 3 дні тому

      No need to go that far back. A few days ago I booted Intel 6th generation machine to DOS from 3,5" floppy.

    • @davidgrisez
      @davidgrisez 3 дні тому

      @@jussiala-konni288 It is amazing that after all these years that there are some Intel PCs that can still boot up the MS-DOS operating system.

  • @jesseessej
    @jesseessej 7 місяців тому

    What a nice stroll down memory lane, pun intended.

  • @bfth121
    @bfth121 7 місяців тому

    Just found your channel and I'm really enjoying these!

  • @ArneRagnarsson
    @ArneRagnarsson 7 місяців тому

    I* was interested to watch this movie. But when I herad the computer voice, i stop watchin after 11 sec

    • @mentaldemise
      @mentaldemise 7 місяців тому

      Listening to it say "Meh beh byte" instead of "Mega Byte" is painful.

    • @chillruns6221
      @chillruns6221 7 місяців тому

      The computer voice is you hear is my human voice. I was slowing down intentionally to read my voice-over. I was doing that to make it easier for newcomers to understand, since it's information-dense. In retrospect, I do think it sounds unnatural and will try it differently going forward.

  • @michaelturner2806
    @michaelturner2806 7 місяців тому

    "What about one eighty-s-" "Shhh, we don't talk about 80186."

    • @0LoneTech
      @0LoneTech 7 місяців тому

      In this context (IBM PC compatibles), the 80186 is quite uninteresting; it has a couple of new instructions, and the same 16-bit data bus as the 8086, but no new addressing capability. It was also rather rare, with some other chips like NEC V20 being far more common.

    • @nickwallette6201
      @nickwallette6201 7 місяців тому

      "The 186 never existed." "Yeah it did, there were a few computers that had----" *"THE 186 NEVER EXISTED."*

    • @g8ymw
      @g8ymw 2 місяці тому

      Used with the Acorn BBC Master as a co-processor. The Master 512

  • @pepe6666
    @pepe6666 7 місяців тому

    this is neat. this was the explainer i needed 20 years ago. this is a summary of my decades of confusion and learning and 'eventually sorta getting it'. its great to see this all summarized in this way. it really is the top of the pyramid for an explanation of all of this history.

    • @chillruns6221
      @chillruns6221 7 місяців тому

      I'm very glad it's valuable to you, and that makes it worth having produced. I was able to get around pretty well to do the things I wanted to do, but I didn't have as much info at the time either; no WWW yet.

  • @nmmm2000
    @nmmm2000 7 місяців тому

    I remember once in 1990's I made a (test) program for bank switching with himem.sys :) At that time my data usually fitted in the 640K RAM so I did not used bank switching for anything more than test.

  • @andrewlankford9634
    @andrewlankford9634 7 місяців тому

    What memory management? Who in their right mind cares about DOS 6.22 in the year 2023?

    • @arnolduk123
      @arnolduk123 7 місяців тому

      LOL...yeah I'm still using DOS 5.0 so I'm not happy either.

    • @nickwallette6201
      @nickwallette6201 7 місяців тому

      If you don't already know the answer to that question, what happened with the algorithm to present this video to you?

    • @arnolduk123
      @arnolduk123 7 місяців тому

      The DOS is still very much part of Windows today, your console operates a more modern version. But I guess there are more DOS 6.22 users than there are vegetarians today.

    • @technicalfool
      @technicalfool 7 місяців тому

      Anybody interested in making old games work, even if via DOSbox or a VM. "This application requires at least 570,000 bytes of conventional memory available."

  • @matthewday7565
    @matthewday7565 7 місяців тому

    Popped up recently for me too. I don't think HIIMEM or 286 can do UMB mapping though, that needs EMM386/QEMM and the v86 capability of the 386. I might be misremembering, but I think expended memory or LIM EMS (Lotus Intel Microsoft) was originally intended to allow bigger 123 spreadsheets RAM on an ISA card was mapped into (original spec, a 64k page frame of 4x 16k pages) similar to the way 8 bit home computers mapped extra ROM and RAM.

  • @whophd
    @whophd 7 місяців тому

    EMM386.EXE *twitch* HIMEM.SYS *flinch* oh no my ptsd

  • @judmcc
    @judmcc 7 місяців тому

    I remember using this - it was a nightmare!

  • @knghtbrd
    @knghtbrd 7 місяців тому

    First time I've ever heard someone unironically say "mebibyte", but good high-level explanation of a low-level topic. High level because questions segment/offset and selector/offset weren't discussed, nor why some things require you NOT run EMM386 but might work if you had an EMS card installed, how DOS could see memory above 1MB in real mode, why load order mattered as much as memory locations for where drivers went in memory when running memmaker, etc? That sort of thing … For how "simple" it is, MS-DOS memory management was a BIG topic. Might be too low-level for your audience though.

    • @chillruns6221
      @chillruns6221 7 місяців тому

      The evolution of the x86 CPUs and the DOS memory model around it makes the topic big, as I found when I was researching this. It was a lot of work to maintain accuracy and reduce the details down to an introductory video. The details you mentioned could be interesting topics for videos of their own. I agree with your assessment of the video as a high-level explanation, and appreciate it, because I was going for that. As for my audience, my content is targeted at people who appreciate low-level computing topics; see my OS development and disassembly stream videos. I've gotten a big influx of subscribers and comments on this video lately. No idea what the source of it is, but I appreciate it. I haven't 100% found my focus for this channel yet, but I am still working on content for it.

  • @stephenkennedy6358
    @stephenkennedy6358 7 місяців тому

    What does the address space look like if you did not have 1MB of Memory , specificaly if you only had 156k of memory; where does the BIOS, expansion ROM and Video?

    • @dutchcanuck7550
      @dutchcanuck7550 7 місяців тому

      They are still located between 640K and 1Mib. Their addresses -- as accessed by the DOS kernel, the BIOS and device drivers -- do not change and are still valid, regardless of how much physical RAM is installed. If you had 156K of RAM, there is simply no valid address between 156 and 640. They are empty, and any attempt to access them will result in an error, and possibly a frozen computer.

    • @chillruns6221
      @chillruns6221 7 місяців тому

      Adding to @dutchcanuck7550's response, this is a common scenario for machines of this era. Rather than configuration differences changing the addresses of resources, you might end up with "holes" in the address space, or an area of it where the memory map of a device is repeated in more than one place. Broadly, a CPU with address and data buses lets you select an address and read or write from it. The CPU doesn't know or care what's at the other end of the address, it just asserts the signals on the address and data lines. There may be a logic circuit, called the address decoder, in between the CPU's address lines and the various components of the computer. The circuit routes the signals of the address lines based on the selected address. One address may connect you to RAM, another to a video card, and so on. The decoder understands that other devices are not to be addressed, so activation signals don't go to them. That way, the data bus can be shared across multiple devices; only the addressed device will assert or receive the data. The address decoder could even change the map, removing one device from it and putting another in its place. The address decoding logic is specific to the architecture of the computer we use. A "memory mapped device" can refer to something that may or *may not* be purely memory in the address space. For example, a video card may have both its video memory and its registers in the address space. Writing a value to a register might make the card change the video mode. Both storage and decision-making logic elements are involved. A computer has "memory mapped I/O" when *all* resources are mapped into the address space. I believe the C64 is an example. Again, the CPU doesn't know or care what's on the other end of its address and data buses. I'd prefer another term like "address mapped device", but "memory mapped" is the convention we have. The memory map is not the only way a CPU can do I/O to devices. The 6502 has no dedicated I/O; memory mapped I/O is the only option. I8088 and Z80 have dedicated I/O ports which can be connected to peripherals. A CPU with dedicated I/O ports can also do memory mapped I/O, so a computer could have some combination of the two. Fortunately, complete logic diagrams of many computers are available for study. IBM PC: archive.org/details/IBMPCXTTechnicalReference1502237/page/n531/mode/2up Commodore 64: www.monkeyspeak.com/c64_hardware_details/ Garth Wilson has a complete primer on the 6502 CPU, including a complete circuit for a minimal 6502 computer. I have built one very similar using his work. All the material on his web site is very valuable: wilsonminesco.com/6502primer/addr_decoding.html @BenEater has a few videos on address decoding and visualizes it well. ua-cam.com/users/results?search_query=address+decoding