Moon Bugs (2018)
michalfarkas.net
michalfarkas.net
Interesting to learn it was a special gfx mode. That explains why it ran at half height on most post 286/CGA systems and how it was so darn fast.
"Moon Bugs" came to be shorthand w my friends for anything fast, twitchy, and inexplicably pointless, like turning on the tv and seeing an explosion or someone driving by and yelling at you but being unable to understand a word.
Yes it was in the long, lost .com format - which you used to be able create on the fly with debug.com, found on every pc by default. IDE? Phooey! Just a list of segment registers pointers and data/code blocks and boom, off to the races. iiuc, no .com program could be more than 300k, bc they were 5 seg regs and each was limited to 64k.
That was when computers were still more bicycle for the mind than virtual exoskeleton.
The only question I have though is... How? I see DOS initialize all of the segment registers to the same address. Is this something DOS specific like special bits in _start or something? Or something I do myself?
I guess I could imagine my one mega .asm file that includes all my resources and then in _start I just set my segment registers to "further down in the file" using labels. But yeah, I'm a newb at this but love the simplicity of graphics programming like this, tips very much appreciated :)
how are you creating your .com files btw?
Top of the file you'll need this offset for DOS (or 7c00 for an MBR) to adjust your pointers with based on where the program gets loaded:
[bits 16] [offset 100]
I bet you can use more than 64kb of memory, I set ES to A000 and write to video memory in mode 13. So I imagine if you have a data source -- know your (LBA) block offsets (MBR style) or use a DOS interrupt to load a file -- you can still stomp on some memory outside of the given 64k and set your DS register there.
I haven't done it yet but if I wanted to load a .wad file or something that's the line I'd follow ;)