home *** CD-ROM | disk | FTP | other *** search
- ;* ******************************************************* *
- ;* CHN_INT.ASM *
- ;* (c) 1993 Holger Suhr & DMV *
- ;* ******************************************************* *
-
- ;* ******************************************************* *
- ;* Aufruf eines Folgeinterrupts *
- ;* *
- ;* Wiederherstellung aller Register -- *
- ;* Daher nur aus C-Interruptfunktionen aufrufbar *
- ;* es erfolgt ein CALL... daher Rückkehr hierher *
-
- _TEXT segment byte public 'CODE'
- assume cs:_TEXT
-
- oldo dw ?
- olds dw ?
-
- _chn_int proc near
- pushf ; retten der flags
- push ax ; retten ax
- push bp ; retten bp
- mov bp,sp ; bp vorbereiten fuer parameter
-
- mov ax,[bp+10] ; segment und ...
- mov [olds],ax
- mov ax,[bp+8] ; offset
- mov [oldo],ax ; der uebergebenen int-func
-
- pop bp ; restaurieren bp
-
- push bx ; sichern der register
- push cx ; da wir nach rueckkehr
- push dx ; vielleicht noch mehr
- push es ; machen wollen
- push ds
- push si
- push di
- push bp ; und wieder sichern
-
- push [bp+22] ; flags vor interrupt aufruf
- popf ; wieder in flags
- mov ax,[bp+6] ; ds vor interrupt aufruf
- mov ds,ax
- mov ax,[bp+8] ; es vor interrupt aufruf
- mov es,ax
- mov ax,[bp+16] ; ax vor interrupt aufruf
- mov bx,[bp+14] ; bx vor interrupt aufruf
- mov cx,[bp+12] ; cx vor interrupt aufruf
- mov dx,[bp+10] ; dx vor interrupt aufruf
- mov si,[bp+4] ; si vor interrupt aufruf
- mov di,[bp+2] ; di vor interrupt aufruf
- mov bp,[bp] ; bp vor interrupt aufruf
-
- pushf
- call dword ptr [oldo] ; interrupt call auf nachfolger
-
- pop bp ; und alles wieder restaurieren
- pop di
- pop si
- pop ds
- pop es
- pop dx
- pop cx
- pop bx
- pop ax
- popf
- ret
- _chn_int endp
- _TEXT ends
- public _chn_int
- end
- ;* ******************************************************* *
- ;* Ende von CHN_INT.ASM *
-
-
-