LOWLEVEL.LST 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. Listing:
  2. 1 (*# call(reg_saved => (si, di, ds, st1, st2),
  3. 2 reg_param => (),
  4. 3 near_call => off,
  5. 4 ds_eq_ss => off) *)
  6. 5
  7. 6 DEFINITION MODULE LowLevel;
  8. 7 (*
  9. 8 * REPERTOIRE
  10. 9 * Release 1.6
  11. 10 * By Charles Bradford and Cole Brecheen
  12. 11 * (c) Copyright 1985-1992 PMI
  13. 12 * Green Bay, Wisconsin
  14. 13 * All rights reserved
  15. 14 * (414) 468-6040
  16. 15 *
  17. 16 * $Header: D:/logfiles/defs/lowlevel.dev 1.5 10 Mar 1991 15:38:00 coleb $
  18. 17 *
  19. 18 *)
  20. 19
  21. 20
  22. 21
  23. 22 FROM SYSTEM IMPORT ADDRESS, BYTE, WORD;
  24. 23
  25. 24 TYPE
  26. 25 Address8086 =
  27. 26 RECORD
  28. 27 CASE : CARDINAL OF
  29. ***** ^ not supported yet
  30. ***** ^ 'POINTER' expected
  31. 28 1 :
  32. 29 a : ADDRESS;
  33. 30 | 2 :
  34. 31 off, seg : CARDINAL;
  35. 32 | 3 :
  36. 33 x : POINTER TO CARDINAL;
  37. 34 | 4 :
  38. 35 b : POINTER TO CHAR;
  39. 36 | 5 :
  40. 37 p : POINTER TO ADDRESS;
  41. 38 END;
  42. 39 END;
  43. 40
  44. 41 DataRegister =
  45. 42 RECORD
  46. 43 CASE : BOOLEAN OF
  47. 44 FALSE :
  48. 45 x : CARDINAL;
  49. 46 | TRUE :
  50. 47 l, h : CHAR;
  51. 48 END;
  52. 49 END;
  53. 50
  54. 51 regpack =
  55. 52 RECORD
  56. 53 a, b, c, d : DataRegister;
  57. 54 bp, si, di, ds, es : CARDINAL;
  58. 55 flags : BITSET;
  59. 56 END;
  60. 57
  61. 58 PROCEDURE AddAddr( TheAdr: ADDRESS; bytes:
  62. 59 CARDINAL): ADDRESS;
  63. 60
  64. 61 PROCEDURE BitwiseAnd(val1, val2: WORD): WORD;
  65. 62
  66. 63 PROCEDURE DecAddr( VAR TheAdr: ADDRESS; bytes:
  67. 64 CARDINAL);
  68. 65
  69. 66 PROCEDURE EMInterrupt( VAR TheRegs: regpack;
  70. 67 Function: CARDINAL );
  71. 68
  72. 69 PROCEDURE Fill(dest : ADDRESS; size : CARDINAL;
  73. 70 thefill : BYTE);
  74. 71
  75. 72 PROCEDURE FillWord(dest : ADDRESS; size :
  76. 73 CARDINAL; thefill : WORD);
  77. 74
  78. 75 PROCEDURE FlaggedError(TheFlags : BITSET) :
  79. 76 BOOLEAN;
  80. 77
  81. 78 PROCEDURE InByte( port: CARDINAL; VAR value:
  82. 79 BYTE );
  83. 80
  84. 81 PROCEDURE IncAddr( VAR TheAdr: ADDRESS; bytes:
  85. 82 CARDINAL );
  86. 83
  87. 84 PROCEDURE Interrupt( InterruptNumber: CARDINAL;
  88. 85 VAR TheRegs : regpack );
  89. 86
  90. 87 PROCEDURE InWord( port: CARDINAL; VAR value:
  91. 88 WORD );
  92. 89
  93. 90 PROCEDURE Move(source, dest : ADDRESS; size :
  94. 91 CARDINAL);
  95. 92
  96. 93 PROCEDURE msdos(VAR TheRegs : regpack);
  97. 94
  98. 95 PROCEDURE ofs(TheAddr : ADDRESS) : CARDINAL;
  99. 96
  100. 97 PROCEDURE OutByte( port: CARDINAL; value: BYTE
  101. 98 );
  102. 99
  103. 100 PROCEDURE OutWord( port: CARDINAL; value: WORD
  104. 101 );
  105. 102
  106. 103 PROCEDURE PeekByte(segm, offs : CARDINAL) :
  107. 104 CHAR;
  108. 105
  109. 106 PROCEDURE PeekWord(segm, offs : CARDINAL) :
  110. 107 CARDINAL;
  111. 108
  112. 109 PROCEDURE PokeByte(TheByte : CHAR; segm, offs :
  113. 110 CARDINAL);
  114. 111
  115. 112 PROCEDURE PokeWord(TheWord : CARDINAL; segm,
  116. 113 offs : CARDINAL);
  117. 114
  118. 115 PROCEDURE Ptr( segment, offset: CARDINAL ):
  119. 116 ADDRESS;
  120. 117
  121. 118 PROCEDURE ScanEQ(size : INTEGER; lookfor : BYTE;
  122. 119 start : ADDRESS) : INTEGER;
  123. 120
  124. 121 PROCEDURE ScanNE(size : INTEGER; lookfor : BYTE;
  125. 122 start : ADDRESS) : INTEGER;
  126. 123
  127. 124 PROCEDURE seg(TheAddr : ADDRESS) : CARDINAL;
  128. 125
  129. 126 PROCEDURE ShiftArrayLeft( TheAdr: ADDRESS;
  130. 127 TheSize, distance: CARDINAL );
  131. 128
  132. 129 PROCEDURE ShiftArrayRight( TheAdr: ADDRESS;
  133. 130 TheSize, distance: CARDINAL );
  134. 131
  135. 132 PROCEDURE ShiftLeft(VAR TheWord : WORD; HowMany
  136. 133 : CARDINAL);
  137. 134
  138. 135 PROCEDURE ShiftRight(VAR TheWord : WORD; HowMany
  139. 136 : CARDINAL);
  140. 137
  141. 138 PROCEDURE SubAddr( TheAdr: ADDRESS; bytes:
  142. 139 CARDINAL): ADDRESS;
  143. 140
  144. 141 PROCEDURE VideoInterrupt(VAR TheRegs : regpack);
  145. 142
  146. 143 PROCEDURE WriteDMANoSnow( FromAddr, ToAddr:
  147. 144 ADDRESS; size: CARDINAL);
  148. 145
  149. 146 PROCEDURE Init();
  150. 147
  151. 148 END LowLevel.
  152. 2 errors