home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / misc / tcpipsrc / pkvec.asm < prev    next >
Assembly Source File  |  1991-01-26  |  2KB  |  121 lines

  1. ; Packet driver interrupt hooks
  2.  
  3.     .MODEL    MEMMOD,C
  4.     %MACS
  5.     extrn    pkint:proc
  6.  
  7.     .DATA
  8.     extrn    Stktop
  9.  
  10.     .CODE
  11. sssave    dw    ?
  12. spsave    dw    ?
  13. dbase    dw    @Data
  14.  
  15. ; pkvec0 - Packet driver receive call handler #0
  16.     public    pkvec0
  17.     label    pkvec0    far
  18.     pushf            ; save his interrupt state
  19.     cli            ; no distractions
  20.     mov    cs:sssave,ss    ; stash user stack context
  21.     mov    cs:spsave,sp
  22.  
  23.     mov    ss,cs:dbase    ; set up interrupt stack
  24.     lea    sp,Stktop
  25.  
  26.     ; save regs, making them available to pkint()
  27.     push    es
  28.     push    ds
  29.     push    ax
  30.     push    bx
  31.     push    cx
  32.     push    dx
  33.     push    bp
  34.     push    si
  35.     push    di
  36.  
  37.     mov    ax,ss
  38.     mov    ds,ax
  39.     mov    ax,0    ; device #0
  40.     push    ax
  41.     call    pkint
  42.     jmp    pkret
  43.  
  44. ; pkvec1 - Packet driver receive call handler #1
  45.     public    pkvec1
  46.     label    pkvec1    far
  47.     pushf            ; save his interrupt state
  48.     cli            ; no distractions
  49.     mov    cs:sssave,ss    ; stash user stack context
  50.     mov    cs:spsave,sp
  51.  
  52.     mov    ss,cs:dbase    ; set up interrupt stack
  53.     lea    sp,Stktop
  54.  
  55.     ; save regs, making them available to pkint()
  56.     push    es
  57.     push    ds
  58.     push    ax
  59.     push    bx
  60.     push    cx
  61.     push    dx
  62.     push    bp
  63.     push    si
  64.     push    di
  65.  
  66.     mov    ax,ss
  67.     mov    ds,ax
  68.     mov    ax,1    ; device #1
  69.     push    ax
  70.     call    pkint
  71.     jmp    pkret
  72.  
  73. ; pkvec2 - Packet driver receive call handler #2
  74.     public    pkvec2
  75.     label    pkvec2    far
  76.     pushf            ; save his interrupt state
  77.     cli            ; no distractions
  78.     mov    cs:sssave,ss    ; stash user stack context
  79.     mov    cs:spsave,sp
  80.  
  81.     mov    ss,cs:dbase    ; set up interrupt stack
  82.     lea    sp,Stktop
  83.  
  84.     ; save regs, making them available to pkint()
  85.     push    es
  86.     push    ds
  87.     push    ax
  88.     push    bx
  89.     push    cx
  90.     push    dx
  91.     push    bp
  92.     push    si
  93.     push    di
  94.  
  95.     mov    ax,ss
  96.     mov    ds,ax
  97.     mov    ax,2    ; device #2
  98.     push    ax
  99.     call    pkint
  100.     jmp    pkret
  101.  
  102. ; common return for all packet drivers
  103.     label    pkret    near
  104.     pop    ax    ; pop dev # arg
  105.     pop    di
  106.     pop    si
  107.     pop    bp
  108.     pop    dx
  109.     pop    cx
  110.     pop    bx
  111.     pop    ax
  112.     pop    ds
  113.     pop    es
  114.  
  115.     mov    ss,cs:sssave
  116.     mov    sp,cs:spsave    ; restore original stack context
  117.     popf
  118.     retf
  119.  
  120.     end
  121.