chillingeffect
4 days ago
That's so random bc this game still pops up on my memory frok time to time. For a bit I had a 80286 and the actual CGA adaptor to play this game in the right resolution. But I also had a 486DX50 and this game careened by so fast it was unplayable swarm of beeps and screen tears.
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.
MomsAVoxell
2 days ago
I once scored a fat bonus by using debug.com to write a reboot.com utility that was easily deployed (COPY CON: COM1:) across multiple remote modem connections to workstations all over the country that needed to reboot. It was either work out how to do it, or get on a plane to 25 different offices .. my boss was convinced I was just going to have to be the Ctrl-alt-del monkey for an hour or two after assigning me the task, but my skills with debug.com saved a ton of plane ticket expenses, and I got a 1/3rd of those savings to put towards my brand new 386 ..
dmwilcox
4 days ago
Today I learned (!) What?! A .com file can have a full 64k for every segment! Amazing! All of my little experiments are .com files and I dread having to go to .exe at any point so this is great news.
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 :)
chillingeffect
3 days ago
oh man, I apologize, I got it wrong! Sorry, the whole program can only be 64K in total, you're right!
how are you creating your .com files btw?
dmwilcox
13 hours ago
I think it is this, it's been a couple of weeks: nasm -f bin -o foobar.com foobar.asm
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 ;)