(* Release 3.10 *) (*-------------------------------------------------------------------------* * * * PASDOS.DEF - Modula-2 interface to PASDOS.ITF * * * * COPYRIGHT (C) 1989..1992 Clarion Software Corporation. * * All Rights Reserved * * * *--------------------------------------------------------------------------*) (*# project("#set tspas='on'") *) (*# call(o_a_size=>off, o_a_copy=>off) *) (*%F _fdata *) (*# call(seg_name => null) *) (*# data(seg_name => null) *) (*%E *) (*# module(implementation=>off) *) DEFINITION MODULE PasDos; IMPORT PasLib, CoreFile, CoreMath; VAR AssignBuffer : PROCEDURE(VAR PasLib.filetype, BOOLEAN); read : PROCEDURE (INTEGER, CoreFile.StreamPtr, INTEGER): INTEGER; write : PROCEDURE(INTEGER, CoreFile.StreamPtr, INTEGER): INTEGER; RunTimeError: PROCEDURE(LONGINT, CARDINAL, SHORTCARD, ARRAY OF CHAR); TYPE Registers = RECORD CASE : BOOLEAN OF | FALSE: AX,BX,CX,DX,BP,SI,DI,DS,ES,Flags: CARDINAL; | TRUE: AL,AH,BL,BH,CL,CH,DL,DH: SHORTCARD; END; END; ProcType = PROCEDURE; CONST ZeroFlag = 040H; PROCEDURE ParamCount(): CARDINAL; PROCEDURE SysErrno(): CARDINAL; PROCEDURE EnvCount(): LONGINT; (*# save *) (*# call(seg_name=>null) *) PROCEDURE Exec(Psize: BYTE; Path: ARRAY OF CHAR; Csize: BYTE; Command: ARRAY OF CHAR); (*# restore *) PROCEDURE DosExitCode(): CARDINAL; PROCEDURE SetExitCode(code: CARDINAL); PROCEDURE GetDate(VAR Year, Month, Day, DayOfWeek: CARDINAL); PROCEDURE SetDate(Year, Month, Day : CARDINAL); PROCEDURE GetTime(VAR Hour, Minute, Second, Hund: CARDINAL); PROCEDURE SetTime(Hour, Minute, Second, Hund: CARDINAL); PROCEDURE Intr(IntNo: SHORTCARD; VAR Regs: Registers); PROCEDURE MsDos(VAR Regs: Registers); PROCEDURE GetInProgramFlag(): SHORTCARD; PROCEDURE SetInProgramFlag(f: SHORTCARD); PROCEDURE Terminate(P : ProcType; VAR C: ProcType); TYPE CommandStr = ARRAY [0..127] OF CHAR; (*# save *) (*# data(near_ptr => off) *) CommandType = POINTER TO CommandStr; (*# restore *) TYPE PackedBcd = ARRAY[0..9] OF SHORTCARD; (*# save *) (*# call(reg_param => (ax,bx,cx,dx), reg_saved => (ds,si,di,st1,st2)) *) PROCEDURE LongToBcd(A: REAL) : PackedBcd; PROCEDURE BcdToLong(A: PackedBcd) : REAL; (*# restore *) (*# save *) (*# call(near_call=>off) *) TYPE HardHandler = PROCEDURE(CARDINAL, CARDINAL, FarADDRESS); (*# restore *) PROCEDURE harderr(handler: HardHandler); PROCEDURE hardresume(code: CARDINAL); PROCEDURE hardretn(code: CARDINAL); PROCEDURE ProtectedMode(): BOOLEAN; TYPE CpuKind = (cpu_Unknown,cpu_V20,cpu_V30,cpu_8088,cpu_8086, cpu_80188,cpu_80186, cpu_80286,cpu_80386); FpuKind = (fpu_none,fpu_8087,fpu_80287,fpu_80387); CpuRec = RECORD cpu : CpuKind; fpu : FpuKind; END; PROCEDURE CpuId (VAR r : CpuRec ); PROCEDURE EnableBreakCheck; PROCEDURE DisableBreakCheck; PROCEDURE Delay(ms: CARDINAL); VAR LastChar : CHAR ; LastScan : SHORTCARD ; PROCEDURE KeyPressed(): BOOLEAN ; PROCEDURE RdKey(): CHAR ; PROCEDURE RdChar(): CHAR ; TYPE KBF = ( RShift, LShift, Ctrl, Alt, Scroll, Num, Cap, Ins ); KBFlagSet = SET OF KBF ; PROCEDURE KBFlags(): KBFlagSet ; (* TYPE Exception = RECORD etype: CARDINAL; Name: address; arg1, arg2, retval: REAL; END; VAR matherr: PROCEDURE (VAR E: Exception): CARDINAL; *) CONST matherr ::= CoreMath.matherr; Exception ::= CoreMath.Exception; ReadOnly = 01H; Hidden = 02H; SysFile = 04H; VolumeID = 08H; Directory = 10H; Archive = 20H; AnyFile = 3FH; TYPE SearchRec = RECORD Fill: ARRAY [1..21] OF SHORTCARD; Attr: SHORTCARD; Time: LONGINT; Size: LONGINT; Name: ARRAY [0..12] OF CHAR; END; PROCEDURE FindFirst(size: BYTE; Path: ARRAY OF CHAR; Attr: CARDINAL; VAR S: SearchRec); PROCEDURE FindNext(VAR S: SearchRec); PROCEDURE ChDir(size: BYTE; s: ARRAY OF CHAR); PROCEDURE GetDir(d: SHORTCARD; size: BYTE; VAR s: ARRAY OF CHAR); PROCEDURE MkDir(size: BYTE; s: ARRAY OF CHAR); PROCEDURE RmDir(size: BYTE; s: ARRAY OF CHAR); END PasDos.