home *** CD-ROM | disk | FTP | other *** search
- ;*=========================================================*
- ;* CPU.ASM *
- ;* (C) 1993 Tilo Batsch & DMV-Verlag *
- ;* Dieses Modul enthält die als extern deklarierten *
- ;* Funktionen von SI.C. *
- ;* *
- ;* Assembler: TASM/MASM *
- ;==========================================================*
- .286
- .MODEL SMALL
-
- ;NOSMART ab TASM 2.0
-
- .DATA
-
- old_handler DD ?
-
- .CODE
- EXTRN DOSSETVEC: FAR ; oder entsprechend nachbilden
-
- Handler PROC FAR
- PUSH BP
- MOV BP,SP
-
- ; vorgegebener Prozessortyp ist es nicht!
- DEC DL
-
- ; nach der Anweisung wieder aufsetzen
- MOV WORD PTR [BP+2],OFFSET tEnde
-
- POP BP
- IRET
- Handler ENDP
-
- ; C-Deklaration: int _cpu_typ(void);
- ; Eingabe: --
- ; Rückgabe: in AX
- ; CPU: 2 = 80286, 3 = 80386, 4 = 80486
- __CPU_TYP PROC ; Auf 286-486 prüfen
- PUBLIC __CPU_TYP
-
- PUSH 6 ; Behandlungsroutine
- ; für
- ; »Ungültiger Befehl«
- PUSH CS
- PUSH OFFSET Handler ; Adresse der
- ; Behandlungsroutine
- PUSH DS
- PUSH OFFSET old_handler ; Adresse der alten
- ; Behandlungsroutine
- CALL DOSSETVEC
-
- MOV DX, 3 ; 80386
- .386
- T386:
- MOV EAX, 1
- ;.486
- MOV DX,4 ; 80486
- T486:
- DB 66H, 0FH, 0C8H ; BSWAP EAX, ab 486'er
- .286
-
- tEnde:
- PUSH 6 ; alte Routine wieder
- ; herstellen
- PUSH WORD PTR [old_handler+2]
- PUSH WORD PTR [old_handler] ; Adresse der alten
- ; Routine
- PUSH DS
- PUSH OFFSET old_handler
- CALL DOSSETVEC
-
- MOV AX,DX ; Rückgabe in AX
- RET
- __CPU_TYP ENDP
-
- END
- ;*=========================================================*
- ;* Ende von CPU.ASM *
-
-
-