COREGRAP.DEF 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. (* Release 3.10 *)
  2. (*-------------------------------------------------------------------------*
  3. * *
  4. * COREGRAP.DEF - Modula-2 interface to COREGRAP.A *
  5. * *
  6. * COPYRIGHT (C) 1989..1992 Clarion Software Corporation. *
  7. * All Rights Reserved *
  8. * *
  9. *--------------------------------------------------------------------------*)
  10. (*# call(o_a_size => off,
  11. o_a_copy=>off,
  12. c_conv=>on,
  13. result_optional=>on) *)
  14. (*# module(implementation=>off, init_code => off) *)
  15. (*# name(prefix => c) *)
  16. DEFINITION MODULE CoreGraph;
  17. TYPE
  18. FillMaskType = ARRAY [0..7] OF SHORTCARD;
  19. VideoConfig = RECORD
  20. numxpixels: CARDINAL; (* number of pixels on X axis *)
  21. numypixels: CARDINAL; (* number of pixels on Y axis *)
  22. numtextcols: CARDINAL; (* number of text columns available *)
  23. numtextrows: CARDINAL; (* number of text rows available *)
  24. numcolors: CARDINAL; (* number of actual colors *)
  25. bitsperpixel: CARDINAL; (* number of bits per pixel *)
  26. numvideopages: CARDINAL; (* number of available video pages *)
  27. mode: CARDINAL; (* current video mode *)
  28. adapter: CARDINAL; (* active display adapter *)
  29. monitor: CARDINAL; (* active display monitor *)
  30. memory: CARDINAL; (* adapter video memory in K bytes *)
  31. END;
  32. GraphCoords = RECORD
  33. xcoord, ycoord: INTEGER;
  34. END;
  35. TextCoords = RECORD
  36. row, col: INTEGER;
  37. END;
  38. FillMaskPtr = POINTER TO FillMaskType;
  39. VideoType = RECORD
  40. sys0, dis0, sys1, dis1: SHORTCARD;
  41. END;
  42. FloodStart = RECORD
  43. best_quad, quad_type: INTEGER;
  44. flag: INTEGER;
  45. END;
  46. VAR
  47. _text_br: TextCoords;
  48. _fill_mask: FillMaskType;
  49. _fstart: FloodStart;
  50. _current_linestyle: CARDINAL;
  51. _EGAStartPlane: CARDINAL;
  52. _EGAPlaneShift: CARDINAL;
  53. _EGAtranslate: CARDINAL;
  54. _defaultmode: CARDINAL;
  55. _lastmode: CARDINAL;
  56. _depth: CARDINAL;
  57. _width: CARDINAL;
  58. _clip_tl: GraphCoords;
  59. _clip_br: GraphCoords;
  60. _text_tl: TextCoords;
  61. _current_graph: GraphCoords;
  62. _current_text: TextCoords;
  63. _current_video: VideoConfig;
  64. _active_page: CARDINAL;
  65. _visual_page: CARDINAL;
  66. _page_size: CARDINAL;
  67. _bkcolor: LONGCARD;
  68. _fgcolor: INTEGER;
  69. _txcolor: INTEGER;
  70. _EGA64K: BOOLEAN;
  71. _cursor_lock: INTEGER;
  72. _cursor_state: BOOLEAN;
  73. _wrap_state: BOOLEAN;
  74. _display_state: BOOLEAN;
  75. _scr_attr: CARDINAL;
  76. _current_mask: FillMaskPtr;
  77. (*# save *)
  78. (*%T _fcall *)
  79. (*# call(seg_name => Graphics) *)
  80. (*%E *)
  81. (*# call(c_conv=>on, reg_param => (), reg_saved=>(ds, di, si,st1,st2)) *)
  82. VAR
  83. _get: PROCEDURE(FarADDRESS, INTEGER, INTEGER, INTEGER, INTEGER);
  84. _put: PROCEDURE(INTEGER, INTEGER, FarADDRESS, INTEGER);
  85. PROCEDURE _getvideomode(): INTEGER;
  86. PROCEDURE _txt_out(ch: INTEGER);
  87. PROCEDURE _gr_out(ch: INTEGER);
  88. PROCEDURE _setbiosmode(mode: INTEGER);
  89. PROCEDURE _setlimits(V: VideoConfig);
  90. PROCEDURE _getsystem(VAR vid: VideoType);
  91. PROCEDURE _getmemory(): CARDINAL;
  92. PROCEDURE _clear_Herc();
  93. PROCEDURE _clear_CGA();
  94. PROCEDURE _resetEGA();
  95. PROCEDURE _CGA320Get(image: FarADDRESS; x1, y1, x2, y2: INTEGER);
  96. PROCEDURE _CGA320Put(x, y: INTEGER; image: FarADDRESS; action: INTEGER);
  97. PROCEDURE _CGA640Get(image: FarADDRESS; x1, y1, x2, y2: INTEGER);
  98. PROCEDURE _CGA640Put(x, y: INTEGER; image: FarADDRESS; action: INTEGER);
  99. PROCEDURE _EGAGet(image: FarADDRESS; x1, y1, x2, y2: INTEGER);
  100. PROCEDURE _EGAPut(x, y: INTEGER; image: FarADDRESS; action: INTEGER);
  101. PROCEDURE _VGAGet(image: FarADDRESS; x1, y1, x2, y2: INTEGER);
  102. PROCEDURE _VGAPut(x, y: INTEGER; image: FarADDRESS; action: INTEGER);
  103. PROCEDURE _HercGet(image: FarADDRESS; x1, y1, x2, y2: INTEGER);
  104. PROCEDURE _HercPut(x, y: INTEGER; image: FarADDRESS; action: INTEGER);
  105. (*# restore *)
  106. (*# save *)
  107. (*%T _fcall *)
  108. (*# call(seg_name => Graphics) *)
  109. (*%E *)
  110. (*# call(reg_param => (ax,bx,cx,dx,st0,st6,st5,st4,st3), reg_saved=>(ds, di, si,st1,st2), c_conv=>off) *)
  111. VAR
  112. _hscan: PROCEDURE(VAR INTEGER, VAR INTEGER, INTEGER, INTEGER);
  113. _plot: PROCEDURE (INTEGER, INTEGER, INTEGER);
  114. _point: PROCEDURE(INTEGER, INTEGER): INTEGER;
  115. _hline: PROCEDURE(INTEGER, INTEGER, INTEGER, INTEGER);
  116. _line: PROCEDURE(INTEGER, INTEGER, INTEGER, INTEGER, CARDINAL);
  117. PROCEDURE _CGA320Line (x1, y1, x2, y2: INTEGER; fmask: CARDINAL);
  118. PROCEDURE _CGA320HLine(x, y, x2: INTEGER; FillCol: INTEGER);
  119. PROCEDURE _CGA640Line (x1, y1, x2, y2: INTEGER; fmask: CARDINAL);
  120. PROCEDURE _CGA640HLine(x, y, x2: INTEGER; FillCol: INTEGER);
  121. PROCEDURE _EGAPlot(x, y, c: INTEGER);
  122. PROCEDURE _EGA2Plot(x, y, c: INTEGER);
  123. PROCEDURE _EGAPlot1(x, y, c: INTEGER);
  124. PROCEDURE _EGAPoint(x, y: INTEGER): INTEGER;
  125. PROCEDURE _EGA2Point(x, y: INTEGER): INTEGER;
  126. PROCEDURE _EGAHLine (x, y, x2: INTEGER; FillCol: INTEGER);
  127. PROCEDURE _EGA2HLine(x, y, x2: INTEGER; FillCol: INTEGER);
  128. PROCEDURE _EGALine(x1, y1, x2, y2: INTEGER; fmask: CARDINAL);
  129. PROCEDURE _EGA2Line(x1, y1, x2, y2: INTEGER; fmask: CARDINAL);
  130. PROCEDURE _EGAHScan(VAR xl, xr: INTEGER; y, border: INTEGER);
  131. PROCEDURE _VGAPoint(x, y: INTEGER): INTEGER;
  132. PROCEDURE _VGAPlot(x, y, c: INTEGER);
  133. PROCEDURE _VGAHLine(x, y, x2: INTEGER; FillCol: INTEGER);
  134. PROCEDURE _VGALine(x1, y1, x2, y2: INTEGER; fmask: CARDINAL);
  135. PROCEDURE _HercLine(x1, y1, x2, y2: INTEGER; fmask: CARDINAL);
  136. PROCEDURE _HercHLine(x, y, x2: INTEGER; FillCol: INTEGER);
  137. PROCEDURE _gcur(state, x, y, page: INTEGER);
  138. PROCEDURE _setcur(r, c, p: INTEGER);
  139. PROCEDURE _clear_blink();
  140. PROCEDURE _CGA320leftscan(ptr: CARDINAL; border, lim, left: INTEGER): INTEGER;
  141. PROCEDURE _CGA320rightscan(ptr: CARDINAL; border, lim, left: INTEGER): INTEGER;
  142. PROCEDURE _CGA640leftscan(ptr: CARDINAL; border, lim, left: INTEGER): INTEGER;
  143. PROCEDURE _CGA640rightscan(ptr: CARDINAL; border, lim, left: INTEGER): INTEGER;
  144. PROCEDURE _EGAleftscan(ptr: FarADDRESS; border, lim, left: INTEGER): INTEGER;
  145. PROCEDURE _EGArightscan(ptr: FarADDRESS; border, lim, left: INTEGER): INTEGER;
  146. PROCEDURE _VGAleftscan(ptr: CARDINAL; border, lim, left: INTEGER): INTEGER;
  147. PROCEDURE _VGArightscan(ptr: CARDINAL; border, lim, left: INTEGER): INTEGER;
  148. PROCEDURE _EGAxlat(c: INTEGER): INTEGER;
  149. (*# restore *)
  150. END CoreGraph.