TIP: Click on subject to list as thread! ANSI
echo: 80xxx
to: SCOTT MCNAY
from: GLEN MCNABB
date: 1998-01-07 08:41:00
subject: pure Hex Programming

SM>  *** Glen McNabb wrote in a message to Scott McNay:
SM> SM> GM> Actually, (and I checked) it can happen on all of them.
SM> SM> You sure of this?  Last I heard, as of the 80C86/80C88, that had been 
SM> GM> I checked my Intel Handbook on these processors and up to
SM> GM> 386DX and they all can be interupted between those two
SM> GM> instructions... As for testing that in Debug.EXE that's
SM> Ok, I will disagree more seriously at this point... my CPUID program
SM> specifically checks to see if an interrupt is possible between a load of 
SM> SS and the following instruction.
SM> ;-------------------------------------------------------------
SM> ; See if an interrupt is allowed immediately after an SS load.
SM> ;-------------------------------------------------------------
SM>    .8086
SM>    mov   ax,3501h
SM>    int   21h
SM>    mov   word ptr INT1,bx
SM>    mov   word ptr INT1+2,es
SM>    push   ds
SM>    mov   dx,offset INT1_Handler
SM>    mov   bx,seg INT1_Handler
SM>    mov   ds,bx
SM>    mov   ax,2501h
SM>    int   21h
SM>    pop   ds
SM> 
SM>    pushf            ;Save flags
SM>    pushf
SM>    pop   ax
SM>    or   ah,00000001y      ; Set TF (single-step)
SM>    push   ss         ; Push SS...
SM>    push   ax         ; Enable TF
SM>    popf
SM>    pop   ss         ; Do we trap after this instruction?
SM> chkint_01:                              ; shouldn't ever trap here
SM>    popf            ; Restore flags
SM> 
SM>    les   bx,INT1
SM>    mov   ax,2501h
SM>    int   21h
SM> @@:
SM> 
SM> *********************************
SM> 
SM> ;------------------------------------------
SM> ; INT1 handler is used to check to see if
SM> ; an interrupt is allowed after an SS load.
SM> ;------------------------------------------
SM>    ASSUME   CS:_TEXT, DS:_DATA, ES:NOTHING, SS:NOTHING
SM>    .8086
SM> INT1_handler   proc   near
SM>    push   bp
SM>    mov   bp,sp
SM> 
SM>    cmp   ss:[bp+2],offset ChkInt_01
SM>    jne   @f
SM>    or   BruteFlags3,00010000y
SM> @@:
SM>    pop   bp
SM>    iret
SM> INT1_Handler   endp
SM> 
SM> 
SM> Sorry, I don't recall the original author of that code; it's not me.  I'd 
SM> have to look it up, if you're interested.  I just modified it to fit the 
SM> needs of my program.
I'll have to examine that closely, as soon as I have the time. It been
quite a while since I wrote any single tracing code.
SM> SM> GM> In the case of the NMI, it's used for parity checking. The
SM> SM> GM> NMI should never activate unless you have a parity error. If
SM> SM> GM> you have a failed parity, a stack is gonna be the least of
SM> SM> GM> your problems.
SM> I thought I had some code that would disable NMI, but I can't find it.
I would think it would have to do with writing a port at the PIC.
Glen..
--- ProBoard v2.16 [Reg]
---------------
* Origin: NC/NEC SEWAnet, Bucolic Fair (1:3407/25)

SOURCE: echomail via exec-pc

Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.