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