| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- Listing:
- 1 (* Release 3.10 *)
- 2 (*-------------------------------------------------------------------------*
- 3 * *
- 4 * SYSTEM.DEF - Modula-2 system-dependent definitions *
- 5 * *
- 6 * COPYRIGHT (C) 1987..1992 Clarion Software Corporation. *
- 7 * All Rights Reserved *
- 8 * *
- 9 *--------------------------------------------------------------------------*)
- 10
- 11 (*# call(o_a_copy => on,
- 12 o_a_size => on) *)
- 13 (*%F _fdata *)
- 14 (*# call(seg_name => null) *)
- 15 (*# data(seg_name => null) *)
- 16 (*%E *)
- 17 (*# module(implementation=>off) *)
- 18 DEFINITION MODULE SYSTEM;
- 19 TYPE
- 20 PROCESS = FarADDRESS;
- ***** ^ undeclared identifier
- 21
- 22 CONST
- 23 ADDRESS ::= ADDRESS; ADR ::= ADR; SIZE ::= SIZE;
- ***** ^ not supported yet
- ***** ^ not supported yet
- ***** ^ not supported yet
- 24 TSIZE ::= SIZE; WORD ::= WORD; BYTE ::= BYTE;
- ***** ^ not supported yet
- ***** ^ not supported yet
- ***** ^ not supported yet
- 25 SHORTADDR ::= SHORTADDR; LONGWORD ::= LONGWORD;
- ***** ^ not supported yet
- ***** ^ not supported yet
- 26 Seg ::= Seg; Ofs ::= Ofs;
- ***** ^ not supported yet
- ***** ^ not supported yet
- 27
- 28 FarADDRESS ::= FarADDRESS; NearADDRESS ::= NearADDRESS;
- ***** ^ not supported yet
- ***** ^ not supported yet
- 29 FarADR ::= FarADR; NearADR ::= NearADR;
- ***** ^ not supported yet
- ***** ^ not supported yet
- 30
- 31 FarNIL ::= FarNIL; NearNIL ::= NearNIL;
- ***** ^ not supported yet
- ***** ^ not supported yet
- 32 (*%T _fcall *)
- 33 Ret = 0CBH;
- 34 (*%E *)
- 35 (*%F _fcall *)
- 36 Ret = 0C3H;
- 37 (*%E *)
- 38
- 39 TYPE
- 40 Registers = RECORD
- 41 CASE : BOOLEAN OF
- ***** ^ not supported yet
- ***** ^ 'POINTER' expected
- 42 | TRUE : AX,BX,CX,DX,BP,SI,DI,DS,ES : CARDINAL;
- 43 Flags : BITSET;
- 44 | FALSE : AL,AH,BL,BH,CL,CH,DL,DH : SHORTCARD;
- 45 END;
- 46 END;
- 47 CONST
- 48 CarryFlag = 0;
- 49 ZeroFlag = 6;
- 50
- 51 VAR
- 52 HeapBase : CARDINAL; (* Base segment of heap *)
- 53
- 54 (*# save *)
- 55 (*# call(near_call=>off, reg_saved=>(ds,si,di,st1,st2), reg_param=>(),seg_name=>PROC) *)
- 56 (*# data(near_ptr=>off) *)
- 57
- 58 (* Under MSDOS These are in CoreProc *)
- 59 PROCEDURE NEWPROCESS(P: PROC; A: FarADDRESS; S: CARDINAL; VAR P1: FarADDRESS);
- 60 PROCEDURE TRANSFER (VAR P1,P2: FarADDRESS);
- 61 PROCEDURE IOTRANSFER (VAR P1,P2: FarADDRESS; I: CARDINAL); (* Only Timer (I=8) supported under OS/2 *)
- 62 PROCEDURE CurrentProcess():ADDRESS;
- 63 PROCEDURE initprocess();
- 64 PROCEDURE CurrentPriority() : CARDINAL;
- 65 PROCEDURE NewPriority(PR: CARDINAL);
- 66 PROCEDURE Listen(Mask: BITSET);
- 67 PROCEDURE InterruptRegisters(P: FarADDRESS): FarADDRESS;
- 68 (*# restore *)
- 69
- 70 TYPE A3=ARRAY [0..2] OF SHORTCARD;
- 71 TYPE A2=ARRAY [0..1] OF SHORTCARD;
- 72 TYPE A1=ARRAY [0..0] OF SHORTCARD;
- 73
- 74 (*# save,
- 75 call( reg_param=>(dx,ax),
- 76 reg_saved=>(dx,ax,bx,cx,si,di,es,ds,st1,st2),
- 77 inline=>on )
- 78 *)
- 79 INLINE PROCEDURE Out (p:CARDINAL;v:SHORTCARD)=A2(0EEH, Ret);
- 80 INLINE PROCEDURE OutW(p:CARDINAL;v:CARDINAL )=A2(0EFH, Ret);
- 81
- 82 (*# call( reg_param=>(dx),
- 83 reg_saved=>(dx,bx,cx,si,di,es,ds,st1,st2)) *)
- 84 INLINE PROCEDURE In (p:CARDINAL):SHORTCARD=A2(0ECH, Ret);
- 85 INLINE PROCEDURE InW(p:CARDINAL):CARDINAL =A2(0EDH, Ret);
- 86
- 87 (*# call( reg_param=>(ax),
- 88 reg_saved=>(dx,bx,cx,si,di,es,ds,st1,st2)) *)
- 89 INLINE PROCEDURE GetFlags():CARDINAL=A3(9CH, 58H, Ret);
- 90 INLINE PROCEDURE SetFlags(F: CARDINAL)=A3(50H, 9DH, Ret);
- 91
- 92 (*# call( reg_param=>(ax,bx,cx,dx,st1,st2),
- 93 reg_saved=>(dx,bx,cx,si,di,es,ds,st0,st1,st2,st2,st3,st4,st5,st6)) *)
- 94 INLINE PROCEDURE Eval(Result: ARRAY OF BYTE)=A1(Ret);
- 95 (* Discards function result *)
- 96
- 97 (*# call( reg_param=>(),
- 98 reg_saved=>(ax,dx,bx,cx,si,di,es,ds,st1,st2)) *)
- 99 INLINE PROCEDURE DI()=A2(0FAH, Ret);
- 100 INLINE PROCEDURE EI()=A2(0FBH, Ret);
- 101 (*# restore *)
- 102
- 103 END SYSTEM.
- 104
- 19 errors
|