MiniLD #71 : THE RETRO CHALLENGE — hosted by rnlf — January 2017

<– Return to announcement post

You must sign in to submit an Entry.

Back to Browse Entries

F0x86

by Pusty - Mini LD Entry

Hello,
this is a simple platformer written for i8086 and above Intel Processors.
It's a standalone Operation System and can run on modern Computers as well (I tested it on two different Computer with Intel Processors)

If you want to try it out on real hardware try the Floppy Version ,if you have a newer computer that gives you weird results try the BPB version.

If you want to use a emulator try the emulator version
(It definitly works on QEMU x86_64)

If you are using a x86 emulator use the bigger 8086 Version as it only uses 8086/8088 instructions (it is much faster tho' as the sleeps were shortened)

Controls:
A,D = Left, Right
Space = Jump
Escape = Pause

It is written in Java and crosscompiled to NASM (using a selfwritten crosscompiler)

How to Run:

On Real System:
-Copy binary file raw to a usb-stick or sd-card (HDDRawCopy works for me)
-Stick usb-stick or sd-card into the computer
-Reboot the computer
-Open the boot selector (F8 or F12 maybe other Fxx Key)
-Select usb-stick or sd-card at the boot selection

Emulation (QEMU):
-Download QEMU
-Start .bin file with:
'"C:/Program Files (x86)/qemu/qemu-system-x86_64.exe"
<pathTobin>/minild_emu.bin'

Downloads and Links


Comments

Ham62 says ...
Feb 2, 2017 @ 12:18am

I think there is a bug in your boot loader routine, it just sits at a blank screen infinitely reading the diskette drive on my 486, PMMX and P3 desktops. It also hangs trying to boot in DOSBox.

Using Fake86 I can get it to boot into the start screen but it just hangs after that.

Pusty says ...
Feb 2, 2017 @ 8:12pm

@Ham62 oh you tested it on real "old" hardware?
Interesting, never had the chance to do it.
I think the black screen is a result of me not knowing how to write the bios parameter block for a real x86 system (I think both BOCHS and QEMU ignore it).
My i7 for example boots the bpb version perfectly fine.
My laptop crashes at the bpb and floppy version but runs very buggy on the emulator version.
My "older" Computer (~2006, don't know which processor it has) runs the floppy version.
Fake86 doesn't make any sense as it says it only has 64kB but I'm writing in memory near to 1mB for rendering (might just be that it doesn't support MCGA but then again why does it display stuff).
DosBOX might not support MCGA (int 10 al 13h) as well but I don't know about that.
I may try to get in running on one of them when I have more time for this.
Retrospective, I shouldn't have used a graphic mode that isn't avaiable at i8086 times. (but 4 colors are just not enough for me :P)

Try using BOCHS (very laggy tho') or QEMU, I can verify it works there. (BOCHS might need the floppy or bpb version tho')
Thanks for testing it! ^^

mike_c says ...
Feb 3, 2017 @ 6:02am

I'm the author of Fake86. If I run it with the -verbose parameter, it seems to be trying to execute 386+ opcodes?

Illegal opcode: 66 31 /0 @ 0000:CC91
Illegal opcode: 66 C1 /4 @ 0000:CC96
Illegal opcode: 66 C1 /5 @ 0000:CC9C
Illegal opcode: 0F 8F /6 @ 0000:8807
Illegal opcode: 0F 8D /5 @ 0000:7E75
Illegal opcode: 66 31 /0 @ 0000:CC91
Illegal opcode: 66 C1 /4 @ 0000:CC96
Illegal opcode: 66 C1 /5 @ 0000:CC9C
Illegal opcode: 0F 8F /4 @ 0000:904D
Illegal opcode: 0F 8F /4 @ 0000:832F

The 66h prefix is an operand size override. 0F 8D and 0F 8F are 386+ jump instructions.

mike_c says ...
Feb 3, 2017 @ 6:22am

It might be hitting the 0F 8F and 0F 8D because it's just confused from previous instructions it couldn't interpret though, but definitely seems to be hitting an operand size override.

I'm not ruling out that there could be a CPU bug in my emulator, but it runs all kinds of other software perfectly. PCem-X doesn't seem to like it either though.

Pusty says ...
Feb 3, 2017 @ 8:00pm

@mike_c wow! Thanks for taking your time.
Yeah I realises I used some 386+ instructions (for the sleep function as it is messured in ms). I replaced all non 8086/8088 instructions in the 8086 Version ^^
(took some time to remove immidiate mode in the crosscompiler lol)

Works fine in Fake86 now. I love how fast it is (same as qemu)! Gonna use it as my main emulator

Pusty says ...
Feb 3, 2017 @ 8:25pm

*realised
Hmm it seems like the text printing isn't working anymore. Is this something Fake86 can't handle in graphic mode (works fine in qemu) or is this something that wasn't possible on real hardware?

mike_c says ...
Feb 6, 2017 @ 11:50pm

Hi Pusty. Ham62 is a friend of mine, he pointed me to this and I thought I'd check it out. Yeah I see it's working now! Cool! As far as the text not showing, that very well could be a bug in Fake86. The video code is probably the hackiest part of it.

Frankly, I wouldn't recommend it as a main emulator lol. It's a bit hacky all around, and doesn't even support EGA modes yet. Just CGA and MCGA + mode 13h unchained.

It does run almost all old DOS software just fine though. If you really want super high accuracy, take a look at PCem. (Actually, check out 86Box... it's an enhanced fork!)

mike_c says ...
Feb 6, 2017 @ 11:52pm

BTW, what method are you using for writing text to the screen? Just int 10h calls I guess? I've never seen Fake86 not be able to show text in a graphics mode before, but it could still easily be a bug.

Pusty says ...
Feb 7, 2017 @ 7:23pm

@mike_c int 10h, ah = 0x0E
Thanks for the recommendations, will check them out!

You must sign in to comment.


[cache: storing page]