Hello Michal, hello Louis,
I've run some software on Pentium 3 Tualatin S on FreeDOS and it's getting an invalid opcode error. The error precisely says "Invalid opcode at ..." where ... is a bunch of 16 bit variables. Saying "at" is really misleading and doesn't make any sense, since such a high address like let's say 628a 0000 3002 206f 2b43 202b 202d 6f43 7970 6972 6867
I think those are binary instructions. Not actual addresses. You could try disassembling here [0] but a quick cut & paste gave an instruction sequence that is non-obvious to me. If Contra is a debugger/mod, then
The list of 16-bit values is a stack trace. The first three shortwords should give the ip and cs of the offending instruction, and the flags register value --- these will be at the stack top when the "invalid opcode" exception happens --- and the rest of the shortwords are the contents of the stack further down. If I deliberately try to run an invalid instruction under a DEBUG.COM session, this happens: ========== A:\>debug -a 2902:0100 db ff,ff 2902:0102 -t Invalid Opcode at 0100 2902 7306 0000 20CD 9894 9A00 FEF0 F01D 1D9F 236A 07C6 109A ========== In your case, this probably means that the CPU tried to run an invalid instruction at cs:ip = 0x0:0x628a (!?), with flags = 0x3002. If I understand correctly, Quake is a 32-bit protected mode program. But the "Invalid Opcode" message comes from the FreeDOS kernel, which runs in real (or maybe V86) mode. So perhaps something in real mode was directly causing the error. Or (less likely?), something bad happened while Quake was running in protected mode, and the exception was "reflected" to real/V86 mode. In either case, I would expect the true root cause of the error to be a bit further back in time. Thank you! -- https://github.com/tkchia :: https://gitlab.com/tkchia _______________________________________________ Freedos-user mailing list Freedos-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/freedos-user