home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / magazine / drdobbs / ddjcompr / hstest / lib / bios.asm next >
Assembly Source File  |  1990-11-02  |  1KB  |  68 lines

  1.     NAME    bios
  2.  
  3. include tomlib.equ
  4.  
  5.  
  6. ; Subroutine fuer display-utilities von C aus
  7. ;-----------------------------------------------------
  8. ;   bios(intnum,ax,bx,cx,dx,es:bp) returns ax,dx
  9. ;------------------------------------------------------
  10. DGROUP    GROUP    CONST, _BSS, _DATA
  11.     ASSUME  DS: DGROUP, SS: DGROUP
  12.  
  13. BIOS_SEGMENT SEGMENT AT 0
  14. defpub macro NAME,LOCATION
  15.     org LOCATION
  16.     NAME label byte
  17.     public NAME
  18.     endm
  19.  
  20.     defpub _BIOS_SHIFT_STATUS,0417h
  21.  
  22.  
  23. BIOS_SEGMENT ENDS
  24.  
  25.  
  26.  
  27. _DATA SEGMENT public word
  28.     public _BIOS_FLAGS
  29.     _BIOS_FLAGS db 0
  30. _DATA ENDS
  31.  
  32. TEXTSEGMENT
  33.  
  34.     PUBPROC  _BIOS
  35. ;------------------------------------------------------------------------------
  36.  
  37.     push    bp
  38.     mov bp,sp
  39.     push    si
  40.     push    di
  41.     mov ax,(4+SPOFF)[bp]
  42.     mov byte ptr cs:[_PATCH_BIOS_INT],al    ; modify interrupt number !!!
  43.     jmp $+2                                ; flush prefetch queue    !!! (486)
  44.     mov ax,(6+SPOFF)[bp]
  45.     mov bx,(8+SPOFF)[bp]
  46.     mov cx,(10+SPOFF)[bp]
  47.     mov dx,(12+SPOFF)[bp]
  48.  
  49.     public _PATCH_BIOS_INT            ;    int 0ffh
  50.  
  51.     db 0cdh
  52. _PATCH_BIOS_INT:
  53.     db 0ffh
  54.     
  55.     push ax
  56.     lahf
  57.     mov    _BIOS_FLAGS,ah
  58.     pop ax
  59.  
  60.     pop     di
  61.     pop si
  62.     pop bp
  63.     ret
  64. ;------------------------------------------------------------------------------
  65. _BIOS   endp
  66. TEXTEND
  67.     end
  68.