Skip to content

Latest commit

 

History

History
57 lines (43 loc) · 990 Bytes

00B1-TEST86.md

File metadata and controls

57 lines (43 loc) · 990 Bytes

Test for 8086/80186/80286

Checks CPU type based on whether or not the upper bits of the flags are over-written.

SYS00B1: XOR AX,AX

AX = 0, processor is at least an 8086

SYS00B3: PUSHF
SYS00B4: POP BX
SYS00B5: AND BH,0F
SYS00B8: PUSH BX
SYS00B9: POPF
SYS00BA: PUSHF
SYS00BB: POP CX
SYS00BC: AND CH,F0
SYS00BF: CMP CH,F0
SYS00C2: JZ 00D2

Determine processor based on the flag bits

SYS00C4: INC AX

Processor type is at least an 80286.

SYS00C5: OR BH,F0
SYS00C8: PUSH BX
SYS00C9: POPF
SYS00CA: PUSHF
SYS00CB: POP CX
SYS00CC: AND CH,F0
SYS00CF: JZ 00D2

Test the flags again if they are overwritten.

SYS00D1: INC AX

Processor type is at least a 80386.

SYS00D2: MOV [Test8086],AL
SYS00D5: RET

Store result in Test8086 then return to caller. Because it is a NEAR RET, it can only be called from within the system library.

Back