LOWLEVEL.DEF 3.3 KB

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