home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / C-ASM_VI.ARJ / PROGASM.ZIP / EGALIB.ASM next >
Encoding:
Assembly Source File  |  1988-05-26  |  8.0 KB  |  218 lines

  1.  
  2.         PAGE    94,118
  3.         TITLE   PROGA.ASM - Assembly Examples for EGA Programmers Guide
  4.         NAME    PROGA
  5.  
  6. ;************************************************************************
  7. ;                                                                       *
  8. ;       File:   PROGA.ASM                                               *
  9. ;       Author: George Sutty                                            *
  10. ;       Date:   March 19, 1988                                          *
  11. ;       Description: Assembly procedures with examples for programming  *
  12. ;               the EGA/VGA.  These examples are in support of the      *
  13. ;               text for the  Programmer's Guide to EGA/VGA book.       *
  14. ;                                                                       *
  15. ;************************************************************************
  16.  
  17.  
  18. _DATA   SEGMENT WORD PUBLIC 'DATA'
  19. _DATA   ENDS
  20. CONST   SEGMENT WORD PUBLIC 'CONST'
  21. CONST   ENDS
  22. _BSS    SEGMENT WORD PUBLIC 'BSS'
  23. _BSS    ENDS
  24.  
  25. DGROUP  GROUP   CONST, _BSS, _DATA
  26.  
  27. _DATA   SEGMENT WORD PUBLIC 'DATA'
  28. _DATA   ENDS
  29.  
  30. _TEXT   SEGMENT BYTE PUBLIC 'CODE'
  31.         ASSUME  DS:DGROUP, CS:_TEXT, SS:DGROUP
  32.  
  33. ;************************************************************************
  34. ; Video BIOS Data Area Locations                                        *
  35. ;************************************************************************
  36.  
  37. BIOS_Mode       EQU     449H            ;Location of current mode
  38. BIOS_CRT_Addr   EQU     463H            ;Address of CRT controller
  39. BIOS_Rows       EQU     484H            ;Number of text rows
  40. BIOS_Columns    EQU     44AH            ;Number of text columns
  41. BIOS_Height     EQU     485H            ;Character height
  42. BIOS_Page_Size  EQU     44CH            ;Number of bytes in one page
  43. BIOS_Curs_Mode  EQU     460H            ;Cursor start and end
  44. BIOS_Equipment  EQU     487H            ;Type of equipment in system
  45. BIOS_Switch     EQU     488H            ;Configuration switches
  46. BIOS_Curs_Pos   EQU     450H            ;Current cursor address
  47. BIOS_Curs_Start EQU     460H            ;Current cursor shape
  48. BIOS_Curs_Stop  EQU     461H
  49.  
  50.  
  51. ;************************************************************************
  52. ;************************************************************************
  53. ;**** LOW LEVEL REGISTER ACESS EXAMPLES                              ****
  54. ;************************************************************************
  55. ;************************************************************************
  56.  
  57.  
  58. INCLUDE         PROG001.ASM
  59. INCLUDE         PROG002.ASM
  60. INCLUDE         PROG003.ASM
  61. INCLUDE         PROG004.ASM
  62. INCLUDE         PROG005.ASM
  63. INCLUDE         PROG006.ASM
  64. INCLUDE         PROG007.ASM
  65. INCLUDE         PROG008.ASM
  66. INCLUDE         PROG009.ASM
  67.  
  68. ;************************************************************************
  69. ; Wait for start of next horizontal retrace                             *
  70. ;************************************************************************
  71.  
  72.         PUBLIC  _Horizontal_Retrace
  73.  
  74. _Horizontal_Retrace     PROC NEAR
  75.         PUSH    ES
  76.         XOR     AX,AX                   ;Get address of STATUS register
  77.         MOV     ES,AX                   ;From segment 0
  78.         MOV     DX,3BAH                 ;Assume monochrome addressing
  79.         TEST    BYTE PTR ES:[BIOS_Equipment],2  ;Is mono display attached?
  80.         JNZ     HR_Address_Ok           ;...Yes, address is ok
  81.         MOV     DX,3DAH                 ;...No, must set color addressing
  82. HR_Address_Ok:
  83.  
  84.         IN      AL,DX                   ;Read in status
  85.         JMP     $+2
  86.         TEST    AL,01H                  ;Is retrace ON? (if ON, bit = 1)
  87.         JZ      Wait_For_HOn            ;...no, go wait for start
  88. Wait_For_HOff:                          ;...yes, wait for last one to go OFF
  89.         IN      AL,DX
  90.         JMP     $+2
  91.         TEST    AL,01H                  ;Is retrace OFF?
  92.         JNZ     Wait_For_HOff           ;...No, keep waiting
  93. Wait_For_HOn:
  94.         IN      AL,DX
  95.         JMP     $+2
  96.         TEST    AL,01H                  ;Is retrace ON?
  97.         JZ      Wait_For_HOn            ;...No, keep on waiting
  98.         POP     ES
  99.         RET
  100. _Horizontal_Retrace     ENDP
  101.  
  102. INCLUDE         PROG010.ASM
  103. INCLUDE         PROG012.ASM
  104. INCLUDE         PROG013.ASM
  105. INCLUDE         PROG014.ASM
  106. INCLUDE         PROG071.ASM
  107. INCLUDE         PROG015.ASM
  108. INCLUDE         PROG016.ASM
  109. INCLUDE         PROG017.ASM
  110. INCLUDE         PROG018.ASM
  111.  
  112. ;************************************************************************
  113. ;************************************************************************
  114. ;**** GETTING INFORMATION EXAMPLES                                   ****
  115. ;************************************************************************
  116. ;************************************************************************
  117.  
  118. INCLUDE         PROG020.ASM
  119. INCLUDE         PROG021.ASM
  120. INCLUDE         PROG022.ASM
  121. INCLUDE         PROG023.ASM
  122. INCLUDE         PROG024.ASM
  123. INCLUDE         PROG025.ASM
  124. INCLUDE         PROG026.ASM
  125. INCLUDE         PROG027.ASM
  126. INCLUDE         PROG028.ASM
  127. INCLUDE         PROG029.ASM
  128. INCLUDE         PROG030.ASM
  129. INCLUDE         PROG031.ASM
  130. INCLUDE         PROG032.ASM
  131.  
  132. ;************************************************************************
  133. ;************************************************************************
  134. ;**** TEXT MODES EXAMPLES                                            ****
  135. ;************************************************************************
  136. ;************************************************************************
  137.  
  138.  
  139. INCLUDE         PROG040.ASM
  140. INCLUDE         PROG041.ASM
  141. INCLUDE         PROG042.ASM
  142. INCLUDE         PROG043.ASM
  143. INCLUDE         PROG044.ASM
  144. INCLUDE         PROG045.ASM
  145. ;INCLUDE         PROG023.ASM
  146. ;INCLUDE         PROG024.ASM
  147. INCLUDE         PROG046.ASM
  148. INCLUDE         PROG047.ASM
  149. INCLUDE         PROG048.ASM
  150. INCLUDE         PROG049.ASM
  151.  
  152. INCLUDE         PROG050.ASM
  153. INCLUDE         PROG051.ASM
  154. INCLUDE         PROG052.ASM
  155. INCLUDE         PROG053.ASM
  156. INCLUDE         PROG054.ASM
  157. INCLUDE         PROG055.ASM
  158. INCLUDE         PROG056.ASM
  159. INCLUDE         PROG057.ASM
  160. INCLUDE         PROG058.ASM
  161. INCLUDE         PROG059.ASM
  162.  
  163. INCLUDE         PROG060.ASM
  164. INCLUDE         PROG061.ASM
  165. INCLUDE         PROG062.ASM
  166. INCLUDE         PROG063.ASM
  167. INCLUDE         PROG064.ASM
  168. INCLUDE         PROG065.ASM
  169. INCLUDE         PROG066.ASM
  170. INCLUDE         PROG067.ASM
  171. INCLUDE         PROG068.ASM
  172. INCLUDE         PROG069.ASM
  173.  
  174. INCLUDE         PROG070.ASM
  175.  
  176. ;************************************************************************
  177. ;************************************************************************
  178. ;**** GRAPHICS MODES EXAMPLES                                        ****
  179. ;************************************************************************
  180. ;************************************************************************
  181.  
  182. INCLUDE         PROG080.ASM
  183. INCLUDE         PROG081.ASM
  184. INCLUDE         PROG082.ASM
  185. INCLUDE         PROG083.ASM
  186. INCLUDE         PROG084.ASM
  187. INCLUDE         PROG085.ASM
  188. INCLUDE         PROG086.ASM
  189. INCLUDE         PROG087.ASM
  190. INCLUDE         PROG088.ASM
  191. INCLUDE         PROG089.ASM
  192.  
  193. INCLUDE         PROG090.ASM
  194. INCLUDE         PROG091.ASM
  195.  
  196. ;************************************************************************
  197. ; ticks  : Return current value of clock tick                           *
  198. ;          which is updated 18.2 times a second                         *
  199. ; exit:    Register pair DX,AX will have the 32bit  value suitable      *
  200. ;          for return of long integer for MS C compiler.                *
  201. ;************************************************************************
  202.  
  203.         PUBLIC  _TICKS
  204.  
  205. _TICKS  PROC    NEAR
  206.         PUSH    ES                      ; Point ES to segment zero
  207.         XOR     AX,AX
  208.         MOV     ES,AX
  209.         MOV     AX,ES:[46CH]            ; Fetch the current tick value
  210.         MOV     DX,ES:[46EH]
  211.         POP     ES
  212.         RET
  213. _TICKS  ENDP
  214.  
  215. _TEXT    ENDS
  216.          END
  217.  
  218.