mirror of
https://github.com/id-Software/wolf3d.git
synced 2026-03-19 16:39:29 +01:00
The Wolfenstein 3D source as originally released.
This commit is contained in:
67
WOLFSRC/WL_ASM.ASM
Normal file
67
WOLFSRC/WL_ASM.ASM
Normal file
@@ -0,0 +1,67 @@
|
||||
; JABHACK.ASM
|
||||
|
||||
.386C
|
||||
IDEAL
|
||||
MODEL MEDIUM
|
||||
|
||||
EXTRN LDIV@:far
|
||||
|
||||
;============================================================================
|
||||
|
||||
DATASEG
|
||||
|
||||
;============================================================================
|
||||
|
||||
CODESEG
|
||||
|
||||
; Hacked up Juan Jimenez's code a bit to just return 386/not 386
|
||||
PROC _CheckIs386
|
||||
PUBLIC _CheckIs386
|
||||
|
||||
pushf ; Save flag registers, we use them here
|
||||
xor ax,ax ; Clear AX and...
|
||||
push ax ; ...push it onto the stack
|
||||
popf ; Pop 0 into flag registers (all bits to 0),
|
||||
pushf ; attempting to set bits 12-15 of flags to 0's
|
||||
pop ax ; Recover the save flags
|
||||
and ax,08000h ; If bits 12-15 of flags are set to
|
||||
cmp ax,08000h ; zero then it's 8088/86 or 80188/186
|
||||
jz not386
|
||||
|
||||
mov ax,07000h ; Try to set flag bits 12-14 to 1's
|
||||
push ax ; Push the test value onto the stack
|
||||
popf ; Pop it into the flag register
|
||||
pushf ; Push it back onto the stack
|
||||
pop ax ; Pop it into AX for check
|
||||
and ax,07000h ; if bits 12-14 are cleared then
|
||||
jz not386 ; the chip is an 80286
|
||||
|
||||
mov ax,1 ; We now assume it's a 80386 or better
|
||||
popf
|
||||
retf
|
||||
|
||||
not386:
|
||||
xor ax,ax
|
||||
popf
|
||||
retf
|
||||
|
||||
ENDP
|
||||
|
||||
|
||||
PROC _jabhack2
|
||||
PUBLIC _jabhack2
|
||||
|
||||
push es
|
||||
|
||||
mov ax,seg LDIV@
|
||||
mov es,ax
|
||||
mov ax,9090h ;Two NOP's
|
||||
mov [WORD FAR es:LDIV@],ax ;Patch over XOR AX,AX
|
||||
mov [WORD FAR es:LDIV@+2],ax ;and over JMP SHORT COMMON
|
||||
|
||||
pop es
|
||||
retf
|
||||
|
||||
ENDP
|
||||
|
||||
END
|
||||
Reference in New Issue
Block a user