home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / network / src_1218.zip / ASYVEC.ASM < prev    next >
Assembly Source File  |  1991-01-27  |  3KB  |  158 lines

  1. ; ASY (8250/16550A "com" port) interrupt hooks
  2. ; Copyright 1991 Phil Karn, KA9Q
  3.  
  4.     .MODEL    MEMMOD,C
  5.     %MACS
  6.  
  7.     extrn    doret:proc,asyint:far,eoi:proc
  8.  
  9.     .DATA
  10.     extrn    Sssave:word
  11.     extrn    Spsave:word
  12.     extrn    Stktop
  13.  
  14.     .CODE
  15. dbase    dw    @Data
  16.  
  17. ; asy0vec - asynch channel 0 interrupt handler
  18.     public    asy0vec
  19.     label    asy0vec    far
  20.     push    ds        ; save on user stack
  21.     mov    ds,cs:dbase    ; establish interrupt data segment
  22.  
  23.     mov    Sssave,ss    ; stash user stack context
  24.     mov    Spsave,sp
  25.  
  26.     mov    ss,cs:dbase
  27.     lea    sp,Stktop
  28.  
  29.     push    ax        ; save user regs on interrupt stack
  30.     push    bx
  31.     push    cx
  32.     push    dx
  33.     push    bp
  34.     push    si
  35.     push    di
  36.     push    es
  37.     call    eoi
  38.  
  39.     mov    ax,0        ; arg for service routine
  40.     push    ax
  41.     call    asyint
  42.     pop    ax
  43.     jmp    doret
  44.  
  45. ; asy1vec - asynch channel 1 interrupt handler
  46.     public    asy1vec
  47.     label    asy1vec    far
  48.     push    ds        ; save on user stack
  49.     mov    ds,cs:dbase    ; establish interrupt data segment
  50.  
  51.     mov    Sssave,ss    ; stash user stack context
  52.     mov    Spsave,sp
  53.  
  54.     mov    ss,cs:dbase
  55.     lea    sp,Stktop
  56.  
  57.     push    ax        ; save user regs on interrupt stack
  58.     push    bx
  59.     push    cx
  60.     push    dx
  61.     push    bp
  62.     push    si
  63.     push    di
  64.     push    es
  65.     call    eoi
  66.  
  67.     mov    ax,1        ; arg for service routine
  68.     push    ax
  69.     call    asyint
  70.     pop    ax
  71.     jmp    doret
  72.  
  73. ; asy2vec - asynch channel 2 interrupt handler
  74.     public    asy2vec
  75.     label    asy2vec far
  76.     push    ds        ; save on user stack
  77.     mov    ds,cs:dbase    ; establish interrupt data segment
  78.  
  79.     mov    Sssave,ss    ; stash user stack context
  80.     mov    Spsave,sp
  81.  
  82.     mov    ss,cs:dbase
  83.     lea    sp,Stktop
  84.  
  85.     push    ax        ; save user regs on interrupt stack
  86.     push    bx
  87.     push    cx
  88.     push    dx
  89.     push    bp
  90.     push    si
  91.     push    di
  92.     push    es
  93.     call    eoi
  94.  
  95.     mov    ax,2        ; arg for service routine
  96.     push    ax
  97.     call    asyint
  98.     pop    ax
  99.     jmp    doret
  100.  
  101. ; asy3vec - asynch channel 3 interrupt handler
  102.     public    asy3vec
  103.     label    asy3vec far
  104.     push    ds        ; save on user stack
  105.     mov    ds,cs:dbase    ; establish interrupt data segment
  106.  
  107.     mov    Sssave,ss    ; stash user stack context
  108.     mov    Spsave,sp
  109.  
  110.     mov    ss,cs:dbase
  111.     lea    sp,Stktop
  112.  
  113.     push    ax        ; save user regs on interrupt stack
  114.     push    bx
  115.     push    cx
  116.     push    dx
  117.     push    bp
  118.     push    si
  119.     push    di
  120.     push    es
  121.     call    eoi
  122.  
  123.     mov    ax,3        ; arg for service routine
  124.     push    ax
  125.     call    asyint
  126.     pop    ax
  127.     jmp    doret
  128.  
  129. ; asy4vec - asynch channel 4 interrupt handler
  130.     public    asy4vec
  131.     label    asy4vec far
  132.     push    ds        ; save on user stack
  133.     mov    ds,cs:dbase    ; establish interrupt data segment
  134.  
  135.     mov    Sssave,ss    ; stash user stack context
  136.     mov    Spsave,sp
  137.  
  138.     mov    ss,cs:dbase
  139.     lea    sp,Stktop
  140.  
  141.     push    ax        ; save user regs on interrupt stack
  142.     push    bx
  143.     push    cx
  144.     push    dx
  145.     push    bp
  146.     push    si
  147.     push    di
  148.     push    es
  149.     call    eoi
  150.  
  151.     mov    ax,4        ; arg for service routine
  152.     push    ax
  153.     call    asyint
  154.     pop    ax
  155.     jmp    doret
  156.  
  157.     end
  158.