home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / magazine / c_news / 05 / listings / f_writeb.asm < prev    next >
Assembly Source File  |  1988-03-04  |  3KB  |  105 lines

  1.     PAGE    55,132
  2.     NAME    f_writeb
  3.     TITLE    FOSSIL Interface Routines for Microsoft C and Turbo C
  4.     SUBTTL    Copyright 1988 Marshall Presnell; All Rights Reserved
  5.  
  6. ;************************************************************************; 
  7. ;*                                    *; 
  8. ;*        Assembled with Microsoft Macro Assembler version 5        *; 
  9. ;*           using MIXED.MAC mixed language macro package.        *; 
  10. ;*                                    *; 
  11. ;************************************************************************; 
  12.  
  13. ;========================================================================; 
  14. ;=----------------------------------------------------------------------=; 
  15. ;=-                                                                    -=; 
  16. ;=-          THIS MODULE HAS BEEN RELEASED FOR USE IN C NEWS           -=; 
  17. ;=-                                             -=; 
  18. ;=-        ANY QUESTIONS, COMMENTS, OR PROBLEMS SHOULD BE ADDRESSED TO    -=; 
  19. ;=-                                             -=; 
  20. ;=-                 MARSHALL PRESNELL                   -=; 
  21. ;=-                 13652 LYNN STREET                   -=; 
  22. ;=-               WOODBRIDGE, VA  22191               -=; 
  23. ;=-                                             -=; 
  24. ;=-            FIDONET ADDRESS 109/639.106               -=; 
  25. ;=-                                       -=; 
  26. ;=----------------------------------------------------------------------=; 
  27. ;========================================================================; 
  28.  
  29.     .8086
  30.     INCLUDE    MIXED.MAC
  31.     SETMODEL
  32.  
  33.     .CODE
  34.  
  35. ;==========================================================================;
  36. ;                                       ;
  37. ;        SYSTEM EQUATES FOR FOSSIL VERSION 5 INTERFACE           ;
  38. ;                                       ;
  39. ;==========================================================================;
  40.  
  41. SETBAUD        EQU    00H
  42. TXCHAR        EQU    01H
  43. RXCHAR        EQU    02H
  44. STATUS        EQU    03H
  45. INIT        EQU    04H
  46. DEINIT        EQU    05H
  47. DTR        EQU    06H
  48. TTICK        EQU    07H
  49. OUTFLUSH    EQU    08H
  50. OUTPURGE    EQU    09H
  51. INPURGE        EQU    0AH
  52. TXNOWAIT    EQU    0BH
  53. PEEK        EQU    0CH
  54. KEYREADNOWAIT    EQU    0DH
  55. KEYREAD        EQU    0EH
  56. FLOWCONTROL    EQU    0FH
  57. CONTROL_C_CHECK    EQU    10H
  58. SETCURS        EQU    11H
  59. GETCURS        EQU    12H
  60. WRANSI        EQU    13H
  61. WATCHDOG    EQU    14H
  62. WRBIOS        EQU    15H
  63. TTICK_FUNCTION    EQU    16H
  64. REBOOT        EQU    17H
  65. READBLOCK    EQU    18H
  66. WRITEBLOCK    EQU    19H
  67. BREAK        EQU    1AH
  68. DATASTRUCTURE    EQU    1BH
  69. INSTALLAPI    EQU    7EH
  70. REMOVEAPI    EQU    7FH
  71.  
  72. ;===========================================================================
  73. ;
  74. ;    int f_writeblk(int port, int count, void * buffer)
  75. ;
  76.  
  77. HPROC    <f_writeblk>,<USES CX, DX, DI, SI>, PORT:WORD, COUNT:WORD, BUFFER:PTR
  78.  
  79.     PUSH    ES            ;Save ES 
  80.     PUSH    DS            ;  ... and DS
  81.  
  82.     MOV    AX, DS            ;Load ES with
  83.     MOV    ES, AX            ;the current data segment.
  84.  
  85.     PLES    DI, BUFFER
  86.     PUSH    ES            ;Make it also valid through
  87.     POP    DS            ; DS:DI
  88.     PUSH    DI            ; and
  89.     POP    SI            ; DS:SI (draft 4 compatibility)
  90.  
  91.     MOV    CX, COUNT        ;Load number of characters in buffer
  92.     MOV    DX, PORT        ;Load port address into DX
  93.     MOV    AH, WRITEBLOCK        ;Load function code into AH
  94.     INT    14H            ;Call FOSSIL
  95.  
  96.     POP    DS            ;Restore DS and 
  97.     POP    ES            ;ES to their entry values
  98.  
  99.     HRET                ;Return AX to caller
  100.  
  101. HENDP    f_writeblk
  102.  
  103.     END
  104.  
  105.