home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9302 / ctrick / chn_int.asm < prev    next >
Encoding:
Assembly Source File  |  1993-03-05  |  2.5 KB  |  77 lines

  1. ;* ******************************************************* *
  2. ;*                    CHN_INT.ASM                          *
  3. ;*             (c) 1993 Holger Suhr & DMV                  *
  4. ;* ******************************************************* *
  5.  
  6. ;* ******************************************************* *
  7. ;*  Aufruf eines Folgeinterrupts                           *
  8. ;*                                                         *
  9. ;*  Wiederherstellung aller Register --                    *
  10. ;*  Daher nur aus C-Interruptfunktionen aufrufbar          *
  11. ;*  es erfolgt ein CALL... daher Rückkehr hierher          *
  12.  
  13. _TEXT   segment byte public 'CODE'
  14.     assume  cs:_TEXT
  15.  
  16. oldo  dw ?
  17. olds  dw ?
  18.  
  19. _chn_int    proc    near
  20.     pushf                    ; retten der flags
  21.     push    ax               ; retten ax
  22.     push    bp               ; retten bp
  23.     mov     bp,sp            ; bp vorbereiten fuer parameter
  24.  
  25.     mov     ax,[bp+10]       ; segment und ...
  26.     mov     [olds],ax
  27.     mov     ax,[bp+8]        ; offset
  28.     mov     [oldo],ax        ; der uebergebenen int-func
  29.  
  30.     pop     bp               ; restaurieren bp
  31.  
  32.     push    bx               ; sichern der register
  33.     push    cx               ; da wir nach rueckkehr
  34.     push    dx               ; vielleicht noch mehr
  35.     push    es               ; machen wollen
  36.     push    ds
  37.     push    si
  38.     push    di
  39.     push    bp               ; und wieder sichern
  40.  
  41.     push    [bp+22]          ; flags vor interrupt aufruf
  42.     popf                     ; wieder in flags
  43.     mov     ax,[bp+6]        ; ds vor interrupt aufruf
  44.     mov     ds,ax
  45.     mov     ax,[bp+8]        ; es vor interrupt aufruf
  46.     mov     es,ax
  47.     mov     ax,[bp+16]       ; ax vor interrupt aufruf
  48.     mov     bx,[bp+14]       ; bx vor interrupt aufruf
  49.     mov     cx,[bp+12]       ; cx vor interrupt aufruf
  50.     mov     dx,[bp+10]       ; dx vor interrupt aufruf
  51.     mov     si,[bp+4]        ; si vor interrupt aufruf
  52.     mov     di,[bp+2]        ; di vor interrupt aufruf
  53.     mov     bp,[bp]          ; bp vor interrupt aufruf
  54.  
  55.     pushf
  56.     call    dword ptr [oldo] ; interrupt call auf nachfolger
  57.  
  58.     pop     bp               ; und alles wieder restaurieren
  59.     pop     di
  60.     pop     si
  61.     pop     ds
  62.     pop     es
  63.     pop     dx
  64.     pop     cx
  65.     pop     bx
  66.     pop     ax
  67.     popf
  68.     ret
  69. _chn_int    endp
  70. _TEXT   ends
  71.     public  _chn_int
  72.     end
  73. ;* ******************************************************* *
  74. ;*               Ende von CHN_INT.ASM                      *
  75.  
  76.  
  77.