Consolidated /docs into /pubs
This commit is contained in:
parent
9d356c582b
commit
71d117fa02
106 changed files with 350 additions and 317 deletions
|
|
@ -1,205 +0,0 @@
|
|||
;-----------------------------------------------------------------------------
|
||||
;
|
||||
; LOADFNS.386
|
||||
;
|
||||
; Copyright (c) 1991, 1995-Present Robert Collins
|
||||
;
|
||||
; You have my permission to copy and distribute this software for
|
||||
; non-commercial purposes. Any commercial use of this software or
|
||||
; source code is allowed, so long as the appropriate copyright
|
||||
; attributions (to me) are intact, *AND* my email address is properly
|
||||
; displayed.
|
||||
;
|
||||
; Basically, give me credit, where credit is due, and show my email
|
||||
; address.
|
||||
;
|
||||
;-----------------------------------------------------------------------------
|
||||
;
|
||||
; Robert R. Collins email: rcollins@x86.org
|
||||
;
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
INT01: ; Int1 trap routine
|
||||
;-----------------------------------------------------------------------------
|
||||
; Interprets breakpoint type, and sets a flag
|
||||
;-----------------------------------------------------------------------------
|
||||
inc dx
|
||||
push bp
|
||||
mov bp,sp
|
||||
mov buffer2[bx],cx
|
||||
add bx,2
|
||||
push eax
|
||||
push ebx
|
||||
push ecx
|
||||
mov eax,dr6
|
||||
mov ecx,eax
|
||||
mov ebx,dr7
|
||||
shr ebx,10h ; get length encodings
|
||||
test ah,20h ; debug register access attempt?
|
||||
jnz @DR_Attempt ; yep
|
||||
shr al,1 ; DR0?
|
||||
jc @DR0
|
||||
shr al,1 ; DR1?
|
||||
jc @DR1
|
||||
shr al,1 ; DR2?
|
||||
jc @DR2
|
||||
@DR3: or si,8
|
||||
and cl,not 8
|
||||
test bh,30h ; code, or data?
|
||||
jz @Fault
|
||||
jmp short @Trap
|
||||
@DR2: or si,4
|
||||
and cl,not 4
|
||||
test bh,03h ; code, or data?
|
||||
jz @Fault
|
||||
jmp short @Trap
|
||||
@DR1: or si,2
|
||||
and cl,not 2
|
||||
test bl,30h ; code, or data?
|
||||
jz @Fault
|
||||
jmp short @Trap
|
||||
@DR0: or si,1
|
||||
and cl,not 1
|
||||
test bl,03h ; code, or data?
|
||||
jz @Fault
|
||||
jmp short @Trap
|
||||
@Fault: add word ptr [bp][2],1
|
||||
mov dr6,ecx
|
||||
@Trap: pop ecx
|
||||
pop ebx
|
||||
pop eax
|
||||
pop bp
|
||||
iret
|
||||
|
||||
@Dr_Attempt:
|
||||
push bp
|
||||
add word ptr [bp][2],3
|
||||
pop bp
|
||||
iret
|
||||
|
||||
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
Save_state proc near ; Save the machine state before LOADALL
|
||||
;-----------------------------------------------------------------------------
|
||||
push eax
|
||||
push ds
|
||||
mov si,0
|
||||
mov di,offset Machine_State.GS_Desc
|
||||
mov ax,5000h ; GS descriptor
|
||||
mov ds,ax
|
||||
mov ebx,05050505h
|
||||
movsd
|
||||
mov dword ptr [si-4],ebx
|
||||
|
||||
sub ax,1000h ; FS descriptor
|
||||
sub ebx,01010101h
|
||||
mov si,0
|
||||
add di,8
|
||||
mov ds,ax
|
||||
movsd
|
||||
mov dword ptr [si-4],ebx
|
||||
sub ax,2000h ; DS descriptor
|
||||
sub ebx,02020202h
|
||||
mov si,0
|
||||
add di,8
|
||||
mov ds,ax
|
||||
movsd
|
||||
mov dword ptr [si-4],ebx
|
||||
add ax,4000h ; SS descriptor
|
||||
add ebx,04040404h
|
||||
mov si,0
|
||||
add di,8
|
||||
mov ds,ax
|
||||
movsd
|
||||
mov dword ptr [si-4],ebx
|
||||
sub ax,3000h ; ES descriptor
|
||||
sub ebx,03030303h
|
||||
mov si,0
|
||||
add di,14h
|
||||
mov ds,ax
|
||||
movsd
|
||||
mov dword ptr [si-4],ebx
|
||||
pop ds
|
||||
|
||||
mov eax,cr0
|
||||
mov Machine_State._CR0,eax
|
||||
pushfd
|
||||
pop eax
|
||||
mov Machine_State._Eflags,eax
|
||||
pop eax
|
||||
mov Machine_State._EDI,edi
|
||||
mov Machine_State._ESI,esi
|
||||
mov Machine_State._EBP,ebp
|
||||
mov Machine_State._EBX,ebx
|
||||
mov Machine_State._EDX,edx
|
||||
mov Machine_State._ECX,ecx
|
||||
mov Machine_State._EAX,eax
|
||||
mov ax,gs
|
||||
movzx eax,ax
|
||||
mov Machine_State._GS,eax
|
||||
mov ax,fs
|
||||
mov Machine_State._FS,eax
|
||||
mov ax,ds
|
||||
mov Machine_State._DS,eax
|
||||
mov ax,es
|
||||
mov Machine_State._ES,eax
|
||||
ret
|
||||
Save_state endp
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
Restore_state proc near ; Restore the machine state after LOADALL
|
||||
;-----------------------------------------------------------------------------
|
||||
mov ax,_data
|
||||
mov ds,ax
|
||||
mov ax,5000h ; GS
|
||||
mov es,ax
|
||||
mov si,offset Machine_State.GS_Desc
|
||||
mov di,0
|
||||
movsd
|
||||
sub ax,1000h ; FS
|
||||
add si,8
|
||||
mov di,0
|
||||
mov es,ax
|
||||
movsd
|
||||
sub ax,2000h ; DS
|
||||
add si,8
|
||||
mov di,0
|
||||
mov es,ax
|
||||
movsd
|
||||
add ax,4000h ; SS
|
||||
add si,8
|
||||
mov di,0
|
||||
mov es,ax
|
||||
movsd
|
||||
sub ax,3000h ; ES
|
||||
add si,14h
|
||||
mov di,0
|
||||
mov es,ax
|
||||
movsd
|
||||
mov eax,Machine_State._ES
|
||||
mov es,ax
|
||||
mov eax,Machine_State._DS
|
||||
mov ds,ax
|
||||
mov eax,Machine_State._FS
|
||||
mov fs,ax
|
||||
mov eax,Machine_State._GS
|
||||
mov gs,ax
|
||||
mov eax,Machine_State._Eflags
|
||||
push eax
|
||||
popfd
|
||||
mov eax,Machine_State._CR0
|
||||
mov cr0,eax
|
||||
mov eax,Machine_State._EAX
|
||||
mov ecx,Machine_State._ECX
|
||||
mov edx,Machine_State._EDX
|
||||
mov ebx,Machine_State._EBX
|
||||
mov ebp,Machine_State._EBP
|
||||
mov esi,Machine_State._ESI
|
||||
mov edi,Machine_State._EDI
|
||||
ret
|
||||
Restore_State endp
|
||||
Loading…
Reference in a new issue