From: case@ucs.sdsu.edu (Steve Case)
Newsgroups: comp.protocols.tcp-ip.ibmpc
Subject: Re: EMM386 Execption Erro #12
Date: 4 Sep 92 20:27:17 GMT
Organization: San Diego State University, Data Communications

In article <hippo.38.0@sonoma.edu> hippo@sonoma.edu (Michel Davidoff) writes:
>Subject: EMM386 Execption Erro #12
>From: hippo@sonoma.edu (Michel Davidoff)
>Date: 4 Sep 92 08:46:49 PDT
>When I run marknet and relnet I often get the message 
>Emm386 Ececption error # 12 P
>And then my system halts. I think that the p is the begining of 
>a parity error.
>I looked in the DOS 5.0 manual and there is no clue to 
>what the error is.
>Help ????
>
>Michel Davidoff

Tried to email you at hippo@sonoma.edu, but it bounced back.

Anyways, here's an answer to your query from the Desqview FAQ. Replace QEMM 
with EMM386 in the discussion below. Both are 386 memory mgrs/control 
progs, but QEMM is much better, IMO. Hope this helps.

Q15: What are Exceptions 12 and 13?

A15: 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,''
          PART III - COMPATIBILITY
               chapter 15, VIRTUAL 8086 MODE
                    Section 15.6 DIFFERENCES FROM 8086
                         Stated ``reasons'' 6, 7 & 8
                              (pages 15-10 & 15-11)  

     Quoting from the INTEL manual:  
          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.

               ... (only those causing exception 12 or 13 are listed)

          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.
--
Steve Case (case@ucs.sdsu.edu) | "Cover for me!"
Data Communications Group      | "Oh, good idea, boss!"
University Computing Services  | "It was like that when I got here."
San Diego State University     | - Homer's standard disclaimers.
San Diego, California 92182    | "My opinions only" - my standard disclaimer
Newsgroups: comp.protocols.tcp-ip.ibmpc