PASLIB.DEF 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. (* Release 3.10 *)
  2. (*-------------------------------------------------------------------------*
  3. * *
  4. * PASLIB.DEF - Modula-2 interface to PASLIB.ITF *
  5. * *
  6. * COPYRIGHT (C) 1989..1992 Clarion Software Corporation. *
  7. * All Rights Reserved *
  8. * *
  9. *--------------------------------------------------------------------------*)
  10. (*# project("#set tspas='on'") *)
  11. (*# call(o_a_copy => off, o_a_size=>off) *)
  12. (*# module(implementation=>off) *)
  13. (*%F _fdata *)
  14. (*# call(seg_name => null) *)
  15. (*# data(seg_name => null) *)
  16. (*%E *)
  17. DEFINITION MODULE PasLib;
  18. TYPE
  19. String80 = ARRAY [0..80] OF CHAR; (* Byte 0 contains length *)
  20. maxstring = ARRAY [0..256] OF CHAR; (* Byte 0 contains length *)
  21. convstring = String80; (* Byte 0 contains length *)
  22. namestring = String80; (* Byte 0 contains length *)
  23. cmpres = [-1..1];
  24. ifilemode = (rm,wm);
  25. States = (Initialized, TextFile, TempFile, EOLinBuffer, Device, Assigned, ACrt, App);
  26. filetype = RECORD
  27. bufferptr: ADDRESS; (* must be first field of RECORD *)
  28. objectsize:CARDINAL; (* must be second field of RECORD *)
  29. state: SET OF States; (* must be third 3 field of RECORD, zero *)
  30. (* length name indicates a temporary file *)
  31. mode: ifilemode;
  32. handle: CARDINAL;
  33. name: String80;
  34. stream: ADDRESS;
  35. END;
  36. VAR
  37. _input: filetype;
  38. _output: filetype;
  39. winio: BOOLEAN;
  40. ClearOnAllocate :BOOLEAN;
  41. IOCheck : BOOLEAN;
  42. IsoFormatting: BOOLEAN;
  43. HeapError : PROCEDURE(CARDINAL): INTEGER;
  44. RandSeed : LONGINT;
  45. IOBufferSize : CARDINAL;
  46. FileMode : CARDINAL;
  47. CONST
  48. DefaultBufferSize = 512;
  49. PROCEDURE _allocate(VAR p:ADDRESS; s:CARDINAL);
  50. PROCEDURE _deallocate(p:ADDRESS; s:CARDINAL);
  51. PROCEDURE HALT;
  52. PROCEDURE _wrint(i:LONGINT;w:INTEGER);
  53. PROCEDURE _wrbool(b:BOOLEAN;w:INTEGER);
  54. PROCEDURE _wrchar(c:CHAR;w:INTEGER);
  55. PROCEDURE _wrastr(size, low, high: CARDINAL; s: ARRAY OF CHAR;w:INTEGER);
  56. PROCEDURE _wrreal(r:LONGREAL;w:INTEGER;d:INTEGER);
  57. PROCEDURE _wrcstr(l:INTEGER; s: ADDRESS; w:INTEGER);
  58. PROCEDURE _wrln;
  59. PROCEDURE _page;
  60. PROCEDURE _eoln():BOOLEAN;
  61. PROCEDURE _eof():BOOLEAN;
  62. PROCEDURE _f_wrint(VAR f:filetype;i:LONGINT;w:INTEGER);
  63. PROCEDURE _f_wrbool(VAR f:filetype;b:BOOLEAN;w:INTEGER);
  64. PROCEDURE _f_wrchar(VAR f:filetype;c:CHAR;w:INTEGER);
  65. PROCEDURE _f_wrastr(VAR f:filetype;size, low, high: CARDINAL; s: ARRAY OF CHAR;w:INTEGER);
  66. PROCEDURE _f_wrcstr(VAR f:filetype;l:INTEGER;s: ADDRESS;w:INTEGER);
  67. PROCEDURE _f_wrbin(VAR f:filetype;v: ADDRESS);
  68. PROCEDURE _f_wrreal(VAR f:filetype;r:LONGREAL;w:INTEGER;d:INTEGER);
  69. PROCEDURE _f_wrln(VAR f:filetype);
  70. PROCEDURE _f_page(VAR f:filetype);
  71. PROCEDURE _f_eoln(VAR f:filetype):BOOLEAN;
  72. PROCEDURE _f_eof(VAR f:filetype):BOOLEAN;
  73. PROCEDURE _rdint(VAR i:LONGINT);
  74. PROCEDURE _rdchar(VAR c:CHAR);
  75. PROCEDURE _rdbool(VAR b:BOOLEAN);
  76. PROCEDURE _rdstr(size: BYTE; VAR s:maxstring;len:INTEGER);
  77. PROCEDURE _rdreal(VAR r:LONGREAL);
  78. PROCEDURE _rdln;
  79. PROCEDURE _f_rdint(VAR f:filetype;VAR i:LONGINT);
  80. PROCEDURE _f_rdchar(VAR f:filetype;VAR c:CHAR);
  81. PROCEDURE _f_rdbool(VAR f:filetype;VAR b:BOOLEAN;w:INTEGER);
  82. PROCEDURE _f_rdstr(VAR f:filetype;size: BYTE; VAR s:maxstring;len: INTEGER);
  83. PROCEDURE _f_rdbin(VAR f:filetype;v: ADDRESS);
  84. PROCEDURE _f_rdreal(VAR f:filetype;VAR r:LONGREAL);
  85. PROCEDURE _f_rdln(VAR f:filetype);
  86. PROCEDURE _rewrite(VAR f:filetype;rs:CARDINAL; IsText: BOOLEAN);
  87. PROCEDURE _append(VAR f:filetype;rs:CARDINAL; IsText: BOOLEAN);
  88. PROCEDURE _reset(VAR f:filetype;rs:CARDINAL; IsText: BOOLEAN);
  89. PROCEDURE assign(VAR f:filetype; size: BYTE; name: namestring);
  90. PROCEDURE put(VAR f:filetype);
  91. PROCEDURE get(VAR f:filetype);
  92. PROCEDURE close(VAR f:filetype);
  93. (* I/O extensions *)
  94. PROCEDURE FilePos(VAR f: filetype): LONGINT;
  95. PROCEDURE FileSize(VAR f: filetype): LONGINT;
  96. PROCEDURE Seek(VAR f: filetype; pos: LONGINT);
  97. PROCEDURE Flush(VAR f: filetype);
  98. PROCEDURE IOresult(): CARDINAL;
  99. PROCEDURE Rename(VAR f: filetype; size: BYTE; newname: ARRAY OF CHAR );
  100. PROCEDURE Truncate(VAR f: filetype);
  101. PROCEDURE Exists(VAR f: filetype): BOOLEAN;
  102. PROCEDURE Erase(VAR f: filetype);
  103. TYPE
  104. DateTime = RECORD
  105. Year, Month, Day, Hour, Min, Sec: CARDINAL;
  106. END;
  107. PROCEDURE PackTime(VAR DT: DateTime; VAR Time: LONGINT);
  108. PROCEDURE UnpackTime(Time: LONGINT; VAR DT: DateTime);
  109. PROCEDURE GetFTime(f: ADDRESS; VAR Time: LONGINT);
  110. PROCEDURE SetFTime(f: ADDRESS; Time: LONGINT);
  111. PROCEDURE GetFAttr(f: ADDRESS; VAR Attr: CARDINAL);
  112. PROCEDURE SetFAttr(f: ADDRESS; Attr: CARDINAL);
  113. PROCEDURE SetIOR(code: CARDINAL);
  114. (******************)
  115. PROCEDURE _strcompare(s1,s2: ADDRESS):cmpres;
  116. PROCEDURE _bindfile(VAR f:filetype;n:CARDINAL);
  117. (*# save *)
  118. (*# call(seg_name=>null) *)
  119. PROCEDURE sin(r:LONGREAL):LONGREAL;
  120. PROCEDURE cos(r:LONGREAL):LONGREAL;
  121. PROCEDURE exp(r:LONGREAL):LONGREAL;
  122. PROCEDURE log10(r:LONGREAL):LONGREAL;
  123. PROCEDURE pow(x, y:LONGREAL):LONGREAL;
  124. PROCEDURE ln(r:LONGREAL):LONGREAL;
  125. PROCEDURE sqrt(r:LONGREAL):LONGREAL;
  126. PROCEDURE arctan(r:LONGREAL):LONGREAL;
  127. PROCEDURE frac(r:LONGREAL):LONGREAL;
  128. PROCEDURE sqr(r:LONGREAL):LONGREAL;
  129. (* Math Extensions *)
  130. PROCEDURE arccos(x: LONGREAL): LONGREAL;
  131. PROCEDURE arcsin(x: LONGREAL): LONGREAL;
  132. PROCEDURE arctan2(x: LONGREAL; y: LONGREAL): LONGREAL;
  133. PROCEDURE cosh(x: LONGREAL): LONGREAL;
  134. PROCEDURE sinh(x: LONGREAL): LONGREAL;
  135. PROCEDURE tanh(x: LONGREAL): LONGREAL;
  136. PROCEDURE tan(x: LONGREAL): LONGREAL;
  137. PROCEDURE frexp(x: LONGREAL; VAR expo: INTEGER): LONGREAL;
  138. PROCEDURE hypot(x, y: LONGREAL): LONGREAL;
  139. (*# restore *)
  140. PROCEDURE randomize;
  141. PROCEDURE random(range: CARDINAL): CARDINAL;
  142. PROCEDURE FreeMem(VAR p: ADDRESS; size: CARDINAL);
  143. PROCEDURE GetMem(VAR p: ADDRESS; size: CARDINAL);
  144. PROCEDURE MaxAvail(): LONGINT;
  145. PROCEDURE MemAvail(): LONGINT;
  146. PROCEDURE FillChar(x: ADDRESS; count: CARDINAL; ch: BYTE);
  147. PROCEDURE Move(source, dest: ADDRESS; count: CARDINAL);
  148. PROCEDURE Compare(Source: ADDRESS; Dest: ADDRESS; Len: CARDINAL) : CARDINAL;
  149. PROCEDURE ScanR(Dest: ADDRESS; Count: CARDINAL; Value: SHORTCARD) : CARDINAL;
  150. PROCEDURE ScanL(Dest: ADDRESS; Count: CARDINAL; Value: SHORTCARD) : CARDINAL;
  151. PROCEDURE ScanNeR(Dest: ADDRESS; Count: CARDINAL; Value: SHORTCARD) : CARDINAL;
  152. PROCEDURE ScanNeL(Dest: ADDRESS; Count: CARDINAL; Value: SHORTCARD) : CARDINAL;
  153. CONST
  154. (*%T _fptr *)
  155. Ret = 0CBH;
  156. (*%E *)
  157. (*%F _fptr *)
  158. Ret = 0C3H;
  159. (*%E *)
  160. TYPE
  161. A7 = ARRAY [0..6] OF SHORTCARD;
  162. A5 = ARRAY [0..4] OF SHORTCARD;
  163. (*# save *)
  164. (*%F _fptr *)
  165. (*# call(reg_param=>(si,di,cx),reg_saved=>(ds,st1,st2), inline=>on) *)
  166. INLINE PROCEDURE FastMove(source, dest: ADDRESS; num: CARDINAL)=A5(1EH,07H,0F3H,0A4H,Ret);
  167. (*%E *)
  168. (*%T _fptr *)
  169. (*# call(reg_param=>(si,dx,es,di,cx),reg_saved=>(ds,st1,st2), inline=>on) *)
  170. INLINE PROCEDURE FastMove(source, dest: ADDRESS; num: CARDINAL)=A7(1EH,8EH,0DAH,0F3H,0A4H,1FH,Ret);
  171. (*%E *)
  172. (*# restore *)
  173. PROCEDURE IntToStr(V: LONGINT; size: BYTE; VAR S: convstring; Base: CARDINAL; VAR OK: BOOLEAN);
  174. PROCEDURE StrToInt(size: BYTE; VAR S: ARRAY OF CHAR; Base: CARDINAL; VAR OK: BOOLEAN) : LONGINT;
  175. PROCEDURE StrToReal(size: BYTE; VAR S: ARRAY OF CHAR; VAR OK: BOOLEAN) : LONGREAL;
  176. PROCEDURE RealToStr(RN: LONGREAL; Digits: INTEGER; VAR Width: INTEGER;
  177. size: BYTE; VAR S: ARRAY OF CHAR;
  178. VAR OK: BOOLEAN);
  179. PROCEDURE Caps(size: BYTE; VAR s1: ARRAY OF CHAR);
  180. PROCEDURE CharPos(size: BYTE; Source: ARRAY OF CHAR; c: CHAR) : CARDINAL;
  181. PROCEDURE Delete(size: BYTE; VAR s: ARRAY OF CHAR; index: CARDINAL; count: CARDINAL);
  182. PROCEDURE Insert(size: BYTE; source: ARRAY OF CHAR; size: BYTE; VAR s: ARRAY OF CHAR; index: CARDINAL);
  183. PROCEDURE Lows(size: BYTE; VAR s1: ARRAY OF CHAR);
  184. PROCEDURE Match(size: BYTE; Source: ARRAY OF CHAR; Psize: BYTE; Pattern: ARRAY OF CHAR) : BOOLEAN;
  185. PROCEDURE NextPos(size: BYTE; substr: ARRAY OF CHAR; size: BYTE; s: ARRAY OF CHAR; place: SHORTCARD): SHORTCARD;
  186. PROCEDURE Pos(size: BYTE; substr: ARRAY OF CHAR; size: BYTE; s: ARRAY OF CHAR): SHORTCARD;
  187. PROCEDURE RCharPos(size: BYTE; Source: ARRAY OF CHAR; c: CHAR) : CARDINAL;
  188. END PasLib.
  189.