| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- (*# call(reg_saved => (si, di, ds, st1, st2),
- reg_param => (),
- near_call => off,
- ds_eq_ss => off) *)
- DEFINITION MODULE LowLevel;
- (*
- * REPERTOIRE
- * Release 1.6
- * By Charles Bradford and Cole Brecheen
- * (c) Copyright 1985-1992 PMI
- * Green Bay, Wisconsin
- * All rights reserved
- * (414) 468-6040
- *
- * $Header: D:/logfiles/defs/lowlevel.dev 1.5 10 Mar 1991 15:38:00 coleb $
- *
- *)
- FROM SYSTEM IMPORT ADDRESS, BYTE, WORD;
- TYPE
- Address8086 =
- RECORD
- CASE : CARDINAL OF
- 1 :
- a : ADDRESS;
- | 2 :
- off, seg : CARDINAL;
- | 3 :
- x : POINTER TO CARDINAL;
- | 4 :
- b : POINTER TO CHAR;
- | 5 :
- p : POINTER TO ADDRESS;
- END;
- END;
- DataRegister =
- RECORD
- CASE : BOOLEAN OF
- FALSE :
- x : CARDINAL;
- | TRUE :
- l, h : CHAR;
- END;
- END;
- regpack =
- RECORD
- a, b, c, d : DataRegister;
- bp, si, di, ds, es : CARDINAL;
- flags : BITSET;
- END;
- PROCEDURE AddAddr( TheAdr: ADDRESS; bytes:
- CARDINAL): ADDRESS;
- PROCEDURE BitwiseAnd(val1, val2: WORD): WORD;
- PROCEDURE DecAddr( VAR TheAdr: ADDRESS; bytes:
- CARDINAL);
- PROCEDURE EMInterrupt( VAR TheRegs: regpack;
- Function: CARDINAL );
- PROCEDURE Fill(dest : ADDRESS; size : CARDINAL;
- thefill : BYTE);
- PROCEDURE FillWord(dest : ADDRESS; size :
- CARDINAL; thefill : WORD);
- PROCEDURE FlaggedError(TheFlags : BITSET) :
- BOOLEAN;
- PROCEDURE InByte( port: CARDINAL; VAR value:
- BYTE );
- PROCEDURE IncAddr( VAR TheAdr: ADDRESS; bytes:
- CARDINAL );
- PROCEDURE Interrupt( InterruptNumber: CARDINAL;
- VAR TheRegs : regpack );
- PROCEDURE InWord( port: CARDINAL; VAR value:
- WORD );
- PROCEDURE Move(source, dest : ADDRESS; size :
- CARDINAL);
- PROCEDURE msdos(VAR TheRegs : regpack);
- PROCEDURE ofs(TheAddr : ADDRESS) : CARDINAL;
- PROCEDURE OutByte( port: CARDINAL; value: BYTE
- );
- PROCEDURE OutWord( port: CARDINAL; value: WORD
- );
- PROCEDURE PeekByte(segm, offs : CARDINAL) :
- CHAR;
- PROCEDURE PeekWord(segm, offs : CARDINAL) :
- CARDINAL;
- PROCEDURE PokeByte(TheByte : CHAR; segm, offs :
- CARDINAL);
- PROCEDURE PokeWord(TheWord : CARDINAL; segm,
- offs : CARDINAL);
- PROCEDURE Ptr( segment, offset: CARDINAL ):
- ADDRESS;
- PROCEDURE ScanEQ(size : INTEGER; lookfor : BYTE;
- start : ADDRESS) : INTEGER;
- PROCEDURE ScanNE(size : INTEGER; lookfor : BYTE;
- start : ADDRESS) : INTEGER;
- PROCEDURE seg(TheAddr : ADDRESS) : CARDINAL;
- PROCEDURE ShiftArrayLeft( TheAdr: ADDRESS;
- TheSize, distance: CARDINAL );
- PROCEDURE ShiftArrayRight( TheAdr: ADDRESS;
- TheSize, distance: CARDINAL );
- PROCEDURE ShiftLeft(VAR TheWord : WORD; HowMany
- : CARDINAL);
- PROCEDURE ShiftRight(VAR TheWord : WORD; HowMany
- : CARDINAL);
- PROCEDURE SubAddr( TheAdr: ADDRESS; bytes:
- CARDINAL): ADDRESS;
- PROCEDURE VideoInterrupt(VAR TheRegs : regpack);
- PROCEDURE WriteDMANoSnow( FromAddr, ToAddr:
- ADDRESS; size: CARDINAL);
- PROCEDURE Init();
- END LowLevel.
|