SYSTEM.LST 5.2 KB

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