/FHQ15: What are Exceptions 12 and 13?/FB An exception 12 (or 13) is caused by the program you are running doing something that it is not allowed to do on a 80386 while in Virtual 8086 (V86) mode. Since QEMM is the 386 ``control program,'' it can only report the error caused by the user program. The main cause is operand wrapping past the last address in segment, 65,535 (FFFF in hex) Note that exceptions are only reported by QEMM, and are not caused by either QEMM or DESQview. They are caused by old programs that assume they are running on an 80286 or less; or by a program that ``crashed''. From the INTEL ``80386 Programmer's Reference Manual,'' /ML4/PART III - COMPATIBILITY /ML4/chapter 15, VIRTUAL 8086 MODE /ML4/Section 15.6 DIFFERENCES FROM 8086 /ML4/Stated ``reasons'' 6, 7 & 8 /ML4/(pages 15-10 & 15-11) /ML-20/Quoting from the INTEL manual: /ML4/15.6 DIFFERENCES FROM 8086 In general, V86 mode will correctly execute software designed for the 8086, 8088, 80186 and 80188. Following is a list of the minor differences between 8086 execution on the 80386 and on an 8086. /ML4/... (only those causing exception 12 or 13 are listed) /ML-4/6. Redundant prefixes. The 80386 sets a limit of 15 bytes on instruction length. The only way to violate this limit is by putting redundant prefixes before an instruction. Exception 13 occurs if the limit on instruction length is violated. The 8086//8088 has no instruction limit. 7. Operand crossing offset 0 or 65,535. On the 8086, an attempt to access a memory operand that crosses offset 65,535 (e.g., MOV a word to offset 65,535) or offset 0 (e.g., PUSH a word when SP = 1) causes the offset to wrap around modulo 65,535. The 80386 raises an exception in these cases - exception 13 if the data segment (i.e., if CS, DS, ES, FS, or GS is being used to address the segment), exception 12 if the segment is a stack segment (i.e., if SS is being used.) 8. Sequential execution across offset 65,535. On the 8086, if sequence execution of instructions proceeds past offset 65,535, the processor fetches the next instruction byte from offset 0 of the same segment. On the 80386, the processor raises exception 13 in such a case. In order to fix an Exception 13, you can try to load the program causing it into a different area of memory. To do this, try increasing your FILES or BUFFERS, or loading some TSRs low rather than high, etc. However, the best solution is to contact the programmer. Another possible solution is to increase the amount of memory specified in Change A Program.