| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229 |
- (* Release 3.10 *)
- (*-------------------------------------------------------------------------*
- * *
- * PASLIB.DEF - Modula-2 interface to PASLIB.ITF *
- * *
- * COPYRIGHT (C) 1989..1992 Clarion Software Corporation. *
- * All Rights Reserved *
- * *
- *--------------------------------------------------------------------------*)
- (*# project("#set tspas='on'") *)
- (*# call(o_a_copy => off, o_a_size=>off) *)
- (*# module(implementation=>off) *)
- (*%F _fdata *)
- (*# call(seg_name => null) *)
- (*# data(seg_name => null) *)
- (*%E *)
- DEFINITION MODULE PasLib;
- TYPE
- String80 = ARRAY [0..80] OF CHAR; (* Byte 0 contains length *)
- maxstring = ARRAY [0..256] OF CHAR; (* Byte 0 contains length *)
- convstring = String80; (* Byte 0 contains length *)
- namestring = String80; (* Byte 0 contains length *)
- cmpres = [-1..1];
- ifilemode = (rm,wm);
- States = (Initialized, TextFile, TempFile, EOLinBuffer, Device, Assigned, ACrt, App);
- filetype = RECORD
- bufferptr: ADDRESS; (* must be first field of RECORD *)
- objectsize:CARDINAL; (* must be second field of RECORD *)
- state: SET OF States; (* must be third 3 field of RECORD, zero *)
- (* length name indicates a temporary file *)
- mode: ifilemode;
- handle: CARDINAL;
- name: String80;
- stream: ADDRESS;
- END;
- VAR
- _input: filetype;
- _output: filetype;
- winio: BOOLEAN;
- ClearOnAllocate :BOOLEAN;
- IOCheck : BOOLEAN;
- IsoFormatting: BOOLEAN;
- HeapError : PROCEDURE(CARDINAL): INTEGER;
- RandSeed : LONGINT;
- IOBufferSize : CARDINAL;
- FileMode : CARDINAL;
- CONST
- DefaultBufferSize = 512;
- PROCEDURE _allocate(VAR p:ADDRESS; s:CARDINAL);
- PROCEDURE _deallocate(p:ADDRESS; s:CARDINAL);
- PROCEDURE HALT;
- PROCEDURE _wrint(i:LONGINT;w:INTEGER);
- PROCEDURE _wrbool(b:BOOLEAN;w:INTEGER);
- PROCEDURE _wrchar(c:CHAR;w:INTEGER);
- PROCEDURE _wrastr(size, low, high: CARDINAL; s: ARRAY OF CHAR;w:INTEGER);
- PROCEDURE _wrreal(r:LONGREAL;w:INTEGER;d:INTEGER);
- PROCEDURE _wrcstr(l:INTEGER; s: ADDRESS; w:INTEGER);
- PROCEDURE _wrln;
- PROCEDURE _page;
- PROCEDURE _eoln():BOOLEAN;
- PROCEDURE _eof():BOOLEAN;
- PROCEDURE _f_wrint(VAR f:filetype;i:LONGINT;w:INTEGER);
- PROCEDURE _f_wrbool(VAR f:filetype;b:BOOLEAN;w:INTEGER);
- PROCEDURE _f_wrchar(VAR f:filetype;c:CHAR;w:INTEGER);
- PROCEDURE _f_wrastr(VAR f:filetype;size, low, high: CARDINAL; s: ARRAY OF CHAR;w:INTEGER);
- PROCEDURE _f_wrcstr(VAR f:filetype;l:INTEGER;s: ADDRESS;w:INTEGER);
- PROCEDURE _f_wrbin(VAR f:filetype;v: ADDRESS);
- PROCEDURE _f_wrreal(VAR f:filetype;r:LONGREAL;w:INTEGER;d:INTEGER);
- PROCEDURE _f_wrln(VAR f:filetype);
- PROCEDURE _f_page(VAR f:filetype);
- PROCEDURE _f_eoln(VAR f:filetype):BOOLEAN;
- PROCEDURE _f_eof(VAR f:filetype):BOOLEAN;
- PROCEDURE _rdint(VAR i:LONGINT);
- PROCEDURE _rdchar(VAR c:CHAR);
- PROCEDURE _rdbool(VAR b:BOOLEAN);
- PROCEDURE _rdstr(size: BYTE; VAR s:maxstring;len:INTEGER);
- PROCEDURE _rdreal(VAR r:LONGREAL);
- PROCEDURE _rdln;
- PROCEDURE _f_rdint(VAR f:filetype;VAR i:LONGINT);
- PROCEDURE _f_rdchar(VAR f:filetype;VAR c:CHAR);
- PROCEDURE _f_rdbool(VAR f:filetype;VAR b:BOOLEAN;w:INTEGER);
- PROCEDURE _f_rdstr(VAR f:filetype;size: BYTE; VAR s:maxstring;len: INTEGER);
- PROCEDURE _f_rdbin(VAR f:filetype;v: ADDRESS);
- PROCEDURE _f_rdreal(VAR f:filetype;VAR r:LONGREAL);
- PROCEDURE _f_rdln(VAR f:filetype);
- PROCEDURE _rewrite(VAR f:filetype;rs:CARDINAL; IsText: BOOLEAN);
- PROCEDURE _append(VAR f:filetype;rs:CARDINAL; IsText: BOOLEAN);
- PROCEDURE _reset(VAR f:filetype;rs:CARDINAL; IsText: BOOLEAN);
- PROCEDURE assign(VAR f:filetype; size: BYTE; name: namestring);
- PROCEDURE put(VAR f:filetype);
- PROCEDURE get(VAR f:filetype);
- PROCEDURE close(VAR f:filetype);
- (* I/O extensions *)
- PROCEDURE FilePos(VAR f: filetype): LONGINT;
- PROCEDURE FileSize(VAR f: filetype): LONGINT;
- PROCEDURE Seek(VAR f: filetype; pos: LONGINT);
- PROCEDURE Flush(VAR f: filetype);
- PROCEDURE IOresult(): CARDINAL;
- PROCEDURE Rename(VAR f: filetype; size: BYTE; newname: ARRAY OF CHAR );
- PROCEDURE Truncate(VAR f: filetype);
- PROCEDURE Exists(VAR f: filetype): BOOLEAN;
- PROCEDURE Erase(VAR f: filetype);
- TYPE
- DateTime = RECORD
- Year, Month, Day, Hour, Min, Sec: CARDINAL;
- END;
- PROCEDURE PackTime(VAR DT: DateTime; VAR Time: LONGINT);
- PROCEDURE UnpackTime(Time: LONGINT; VAR DT: DateTime);
- PROCEDURE GetFTime(f: ADDRESS; VAR Time: LONGINT);
- PROCEDURE SetFTime(f: ADDRESS; Time: LONGINT);
- PROCEDURE GetFAttr(f: ADDRESS; VAR Attr: CARDINAL);
- PROCEDURE SetFAttr(f: ADDRESS; Attr: CARDINAL);
- PROCEDURE SetIOR(code: CARDINAL);
- (******************)
- PROCEDURE _strcompare(s1,s2: ADDRESS):cmpres;
- PROCEDURE _bindfile(VAR f:filetype;n:CARDINAL);
- (*# save *)
- (*# call(seg_name=>null) *)
- PROCEDURE sin(r:LONGREAL):LONGREAL;
- PROCEDURE cos(r:LONGREAL):LONGREAL;
- PROCEDURE exp(r:LONGREAL):LONGREAL;
- PROCEDURE log10(r:LONGREAL):LONGREAL;
- PROCEDURE pow(x, y:LONGREAL):LONGREAL;
- PROCEDURE ln(r:LONGREAL):LONGREAL;
- PROCEDURE sqrt(r:LONGREAL):LONGREAL;
- PROCEDURE arctan(r:LONGREAL):LONGREAL;
- PROCEDURE frac(r:LONGREAL):LONGREAL;
- PROCEDURE sqr(r:LONGREAL):LONGREAL;
- (* Math Extensions *)
- PROCEDURE arccos(x: LONGREAL): LONGREAL;
- PROCEDURE arcsin(x: LONGREAL): LONGREAL;
- PROCEDURE arctan2(x: LONGREAL; y: LONGREAL): LONGREAL;
- PROCEDURE cosh(x: LONGREAL): LONGREAL;
- PROCEDURE sinh(x: LONGREAL): LONGREAL;
- PROCEDURE tanh(x: LONGREAL): LONGREAL;
- PROCEDURE tan(x: LONGREAL): LONGREAL;
- PROCEDURE frexp(x: LONGREAL; VAR expo: INTEGER): LONGREAL;
- PROCEDURE hypot(x, y: LONGREAL): LONGREAL;
- (*# restore *)
- PROCEDURE randomize;
- PROCEDURE random(range: CARDINAL): CARDINAL;
- PROCEDURE FreeMem(VAR p: ADDRESS; size: CARDINAL);
- PROCEDURE GetMem(VAR p: ADDRESS; size: CARDINAL);
- PROCEDURE MaxAvail(): LONGINT;
- PROCEDURE MemAvail(): LONGINT;
- PROCEDURE FillChar(x: ADDRESS; count: CARDINAL; ch: BYTE);
- PROCEDURE Move(source, dest: ADDRESS; count: CARDINAL);
- PROCEDURE Compare(Source: ADDRESS; Dest: ADDRESS; Len: CARDINAL) : CARDINAL;
- PROCEDURE ScanR(Dest: ADDRESS; Count: CARDINAL; Value: SHORTCARD) : CARDINAL;
- PROCEDURE ScanL(Dest: ADDRESS; Count: CARDINAL; Value: SHORTCARD) : CARDINAL;
- PROCEDURE ScanNeR(Dest: ADDRESS; Count: CARDINAL; Value: SHORTCARD) : CARDINAL;
- PROCEDURE ScanNeL(Dest: ADDRESS; Count: CARDINAL; Value: SHORTCARD) : CARDINAL;
- CONST
- (*%T _fptr *)
- Ret = 0CBH;
- (*%E *)
- (*%F _fptr *)
- Ret = 0C3H;
- (*%E *)
- TYPE
- A7 = ARRAY [0..6] OF SHORTCARD;
- A5 = ARRAY [0..4] OF SHORTCARD;
- (*# save *)
- (*%F _fptr *)
- (*# call(reg_param=>(si,di,cx),reg_saved=>(ds,st1,st2), inline=>on) *)
- INLINE PROCEDURE FastMove(source, dest: ADDRESS; num: CARDINAL)=A5(1EH,07H,0F3H,0A4H,Ret);
- (*%E *)
- (*%T _fptr *)
- (*# call(reg_param=>(si,dx,es,di,cx),reg_saved=>(ds,st1,st2), inline=>on) *)
- INLINE PROCEDURE FastMove(source, dest: ADDRESS; num: CARDINAL)=A7(1EH,8EH,0DAH,0F3H,0A4H,1FH,Ret);
- (*%E *)
- (*# restore *)
- PROCEDURE IntToStr(V: LONGINT; size: BYTE; VAR S: convstring; Base: CARDINAL; VAR OK: BOOLEAN);
- PROCEDURE StrToInt(size: BYTE; VAR S: ARRAY OF CHAR; Base: CARDINAL; VAR OK: BOOLEAN) : LONGINT;
- PROCEDURE StrToReal(size: BYTE; VAR S: ARRAY OF CHAR; VAR OK: BOOLEAN) : LONGREAL;
- PROCEDURE RealToStr(RN: LONGREAL; Digits: INTEGER; VAR Width: INTEGER;
- size: BYTE; VAR S: ARRAY OF CHAR;
- VAR OK: BOOLEAN);
- PROCEDURE Caps(size: BYTE; VAR s1: ARRAY OF CHAR);
- PROCEDURE CharPos(size: BYTE; Source: ARRAY OF CHAR; c: CHAR) : CARDINAL;
- PROCEDURE Delete(size: BYTE; VAR s: ARRAY OF CHAR; index: CARDINAL; count: CARDINAL);
- PROCEDURE Insert(size: BYTE; source: ARRAY OF CHAR; size: BYTE; VAR s: ARRAY OF CHAR; index: CARDINAL);
- PROCEDURE Lows(size: BYTE; VAR s1: ARRAY OF CHAR);
- PROCEDURE Match(size: BYTE; Source: ARRAY OF CHAR; Psize: BYTE; Pattern: ARRAY OF CHAR) : BOOLEAN;
- PROCEDURE NextPos(size: BYTE; substr: ARRAY OF CHAR; size: BYTE; s: ARRAY OF CHAR; place: SHORTCARD): SHORTCARD;
- PROCEDURE Pos(size: BYTE; substr: ARRAY OF CHAR; size: BYTE; s: ARRAY OF CHAR): SHORTCARD;
- PROCEDURE RCharPos(size: BYTE; Source: ARRAY OF CHAR; c: CHAR) : CARDINAL;
- END PasLib.
|