home *** CD-ROM | disk | FTP | other *** search
Modula Definition | 1994-09-22 | 5.6 KB | 186 lines |
- DEFINITION MODULE BIOS;
-
- (* -------------------------------------------------------------------
-
-
- BIOS - Modula interface to BIOS functions
-
-
- ------------------------------------------------------------------- *)
-
-
-
- FROM SYSTEM IMPORT ADDRESS;
-
-
- TYPE
- MDPtr = POINTER TO MD;
-
- TYPE
- MPB = RECORD (* memory parameter block *)
- mpmfl: MDPtr; (* memory free list *)
- mpmal: MDPtr; (* memory allocated list *)
- morover: MDPtr; (* roving pointer *)
- END;
-
- TYPE
- MD = RECORD (* memory descriptor *)
- mlink: MDPtr; (* next MD or NULL, Address(0) *)
- mstart: ADDRESS; (* start address of block *)
- mlength: LONGCARD; (* nr. bytes in block *)
- mown: ADDRESS; (* owners process descriptor *)
- END;
-
- TYPE Device = (PRT, (* printer, parallel port *)
- AUX, (* aux device, the serial port *)
- CON, (* console, the screen *)
- MSS, (* high speed serial, MIDI port: Atari extension *)
- KDB); (* intelligent keyboard: Atari extension *)
-
- TYPE RW = (Read, (* normal read *)
- Write, (* normal write *)
- ReadNoMediaChange, (* read, do not alter media-change *)
- WriteNoMediaChange); (* write, do not alter media-change *)
-
- TYPE MCState = (NoChange, (* definately no change *)
- MayHaveChanged, (* media might have changed *)
- Changed); (* definately has changed *)
-
- TYPE BPBPtr = POINTER TO BPB ;
- BPB = RECORD (* BIOS Parameter Block *)
- recsiz : CARDINAL ; (* physical sector size in bytes *)
- clsiz : CARDINAL ; (* cluster size in sectors *)
- clsizb : CARDINAL ; (* cluster size in bytes *)
- rdlen : CARDINAL ; (* root directory length in sectors *)
- fsiz : CARDINAL ; (* FAT size in sectors *)
- fatrec : CARDINAL ; (* sector # of ist data sector of 2nd
- FAT *)
- datrec : CARDINAL ; (* sector # of ist data sector *)
- numc1 : CARDINAL ; (* number of data clusters on disk *)
- bflags : CARDINAL ; (* misc flags *)
- END ;
-
- TYPE
- DriveSet = SET OF [0..15]; (* M.B. org. 0..31 *)
-
- TYPE
- KBShiftBits = (RightShift, LeftShift, ControlKey, AlternateKey,
- CapsLock, RightMouseButton, LeftMMouseButton);
- KBShifts = SET OF KBShiftBits;
-
-
- PROCEDURE GetMPB(VAR mob: MPB);
- (* get initial memory parameter block.
-
- mpb: returned with all fields filled. *)
-
-
- PROCEDURE BConStat(dev: Device): BOOLEAN;
- (* return input status of device.
-
- dev: the device to return status of.
- returns: TRUE => characters waiting to be read. *)
-
-
- PROCEDURE BCosStat(dev: Device): BOOLEAN;
- (* return output status of device.
-
- dev: the device to return status of.
- returns: TRUE => no characters waiting to be written. *)
-
-
- PROCEDURE BConIn(dev: Device): LONGCARD;
- (* read character from device. (waits for character)
-
- dev: the device to read from.
- returns: character. For CON, IBM-PC compatible scan code in
- hi word, character in low word. *)
-
-
- PROCEDURE BConOut(dev: Device; c: CHAR);
- (* write character to device. (waits for device ready)
-
- dev: the device to write to.
- c: the character to write. *)
-
-
- PROCEDURE RWAbs(rw: RW; buf: ADDRESS; count, recno, dev: CARDINAL):
- LONGINT;
- (* read/write absolute sectors.
-
- rw: the type of read/write operation.
- buf: the buffer to write from/read to.
- count: number of sectors to transfer.
- recno: logical sector number to start transfer at,
- dev: device, 0 => A:, 1 => B:, > 2 for hard disk, network, etc.
-
- returns: 0 => OK, otherwise error code. *)
-
-
- PROCEDURE SetException(vecnum: CARDINAL; vec: PROC);
- (* set exception vector.
-
- vecnum: vector to set.
- vec: the code to execute on exception.
-
- returns: old vector.
-
- notes: S00-SFF: reserved for 60000
- S100-S1FF: reserved for GEMDOS.
- S100 = system timer interrupt,
- S101 = critical error handler.
- S102 = Process terminate hook.
- S200-SFFFF: reserved for DEM use. *)
-
-
- PROCEDURE GetException(vecnum: CARDINAL): ADDRESS;
- (* get exception vector.
-
- vecnum: as for SetException.
- returns: current exception handler address. *)
-
-
- PROCEDURE TimerCalibration(): LONGCARD;
- (* get timer calibration value.
-
- returns: timer calibration value to nearest millisecond. *)
-
-
- PROCEDURE GetBPB(dev: CARDINAL): BPBPtr ;
- (* get bios parameter block for device.
-
- dev: device to get BPB for; 0 => A:, 1 => B: etc.
-
- returns: 0 => BPB can't be determined, otherwise address of
- parameter block. *)
-
-
- PROCEDURE MediaChange(dev: CARDINAL): MCState;
- (* returns media change state for a device.
-
- dev: the device to return change state of, 0 => A:, etc.
-
- returns: the media change state. *)
-
-
- PROCEDURE DriveMap(): DriveSet;
- (* return drives on line.
-
- returns: 1 in bit position means drive on line, otherwise
- no drive connected. *)
-
-
- PROCEDURE SetKBShift(keys: KBShifts);
- (* set keyboard shift key state.
-
- keys: the new keyboard shift key state. *)
-
-
- PROCEDURE GetKBShift(): KBShifts;
- (* return keyboard shift key state.
-
- returns: the current keyboard shift key state. *)
-
-
- END BIOS.
-