$eject /* * Name: CONSOLE.LIT * * * The data structure below is used by both the SDM and the console driver. * This structure is located at absolute address 0400H ( 28:0H in protected * mode). * * Monochrome CGA or EGA * * video$ram$p 0B000H 0B800H * index$reg$addr 03B4H 03D4H * */ DECLARE SHARED$DATA$STRUCT$1 LITERALLY 'video$ram$p POINTER, index$reg$addr WORD, table$offset WORD, display$w WORD, column BYTE, row BYTE', SHARED$DATA$STRUCT$2 LITERALLY 'kb$flag BYTE, kb$seg$sel SELECTOR, video$disable BYTE, video$enable BYTE', SHARED$DATA$STRUCT LITERALLY 'STRUCTURE( SHARED$DATA$STRUCT$1, SHARED$DATA$STRUCT$2)'; /* * Please DO NOT alter this value. This is the absolute address of the * shared data structure. * * 32 bits!!!! BLD FILE will allocate a 32 byte segment referenced by * slot 50 (SELECTOR 190H) for the shared memory between SDM III console * controller and BIOS console driver */ DECLARE $IF r_32 ABSOLUTE$ADDR$WORD LITERALLY '0190H'; $ELSE ABSOLUTE$ADDR$WORD LITERALLY '0028H'; $ENDIF /* * This variable is required for OUTPUT$TASK, so that it can pick up * its data segment and store it in a local variable. */ DECLARE show$ds BYTE; /* used for system calls */ DECLARE ROOT$JOB$TOKEN LITERALLY '03', THIS$TASK$PRIO LITERALLY 'SELECTOR$OF(NIL)'; /* Device Information */ DECLARE DINFO$SYP120$CONSOLE$1 LITERALLY 'num$units WORD, driver$data$size WORD, stack$size SIZE$OF$OFFSET, console$init SIZE$OF$OFFSET, console$finish SIZE$OF$OFFSET, console$setup SIZE$OF$OFFSET', DINFO$SYP120$CONSOLE$2 LITERALLY 'term$nul0 SIZE$OF$OFFSET, term$nul1 SIZE$OF$OFFSET, term$nul2 SIZE$OF$OFFSET, console$utility SIZE$OF$OFFSET, num$interrupts WORD, interrupt$level WORD, console$check SIZE$OF$OFFSET, reset$int$en BYTE, /* enable the keyboard rst/int option */ screen$timeout WORD', /* xxxx => timeout value, 0FFFFH => disable */ DINFO$SYP120$CONSOLE LITERALLY 'STRUCTURE( DINFO$SYP120$CONSOLE$1, DINFO$SYP120$CONSOLE$2)'; /* * TSC data structure. See iRMX device driver user's guide. */ DECLARE DRIVER$DATA$STRUCT LITERALLY 'STRUCTURE ( TS$CDATA$INC, TS$UDATA1, TS$UDATA2, TS$BDDATA1, TS$BDDATA2, TS$BDDATA4, CONSOLE$DATA)'; /* specific data for this driver */ DECLARE CONSOLE$DATA LITERALLY 'crt$len WORD, output$mbx TOKEN, output$task TOKEN, console$state BYTE, routine$index BYTE, screen$on BYTE, del$const WORD, mon$present BYTE, int3$pending BYTE, /* used in iRMX III only */ con$reserved WORD'; /* Keyboard translation segment */ DECLARE KB$SEG$MODEL LITERALLY 'STRUCTURE( n$keys WORD, types (128) BYTE, values (1152) BYTE)'; /* * Structure used to hold various system information. * Only the delay constant parameter is used by this driver */ DECLARE sys$info$sel SELECTOR, sys$info BASED sys$info$sel STRUCTURE( boot$dev(16) BYTE, boot$file(30) BYTE, reserved$7(4) BYTE, monitor BYTE, reserved$8(31) BYTE, delay$const WORD, reserved$9(4) BYTE); /* values for kb$flag */ DECLARE SCROLL$FLAG LITERALLY '01H', NUM$FLAG LITERALLY '02H', CAPS$FLAG LITERALLY '04H', ALT$FLAG LITERALLY '10H', CTL$FLAG LITERALLY '20H', SHIFT$FLAG LITERALLY '40H', LF LITERALLY '0AH', CLOSE$ALT$KEY LITERALLY '0B8H', CONTROL$Q LITERALLY '11H', CONTROL$S LITERALLY '13H', BREAK$TYPE$OFFSET LITERALLY '8', HIGHEST$SCAN$CODE LITERALLY '083', /* Support only 84 scan codes */ N$KEY$CODES LITERALLY '084', NORM$FUNCT$MIN LITERALLY '3BH', /* Normal F1 to F10 keys */ NORM$FUNCT$MAX LITERALLY '44H', SHCT$FUNCT$MIN LITERALLY '54H', /* Shift or Control plus */ SHCT$FUNCT$MAX LITERALLY '67H', /* a function key F1 to F10 */ /* * NUL character indicate that the system or application should * interpreted the following character as a special function code. */ FUNCTION$KEY$CODE LITERALLY '00H', BREAK$CONTACT LITERALLY '80H', DIAG$REG$ADDR LITERALLY '61H', KEYB$DATA$PORT LITERALLY '60H', KEYB$SPECIAL$PORT LITERALLY '64H', KB$RESET$CMD LITERALLY '0FFH', TOGGLE$LED$CMD LITERALLY '0EDH', INDICATOR$BITS LITERALLY '07H', INPUT$INTERRUPT LITERALLY '01H', NONE LITERALLY '00H', CRT$COLS LITERALLY '80', LAST$COL LITERALLY '79', CRT$ROWS LITERALLY '25', LAST$ROW LITERALLY '24', SEND$INPUT$CMD LITERALLY '002H', MAX$FUNCT$ID LITERALLY '00AH', DEFAULT$RAW$SIZE LITERALLY '256', DEFAULT$RAW$MASK LITERALLY '255', TIMER$CNT$DATA2 LITERALLY '42H' , TIMER$CNT$WORD$REG LITERALLY '43H' , /* values for console state */ RAW$MODE LITERALLY '80H', LITERAL$MODE LITERALLY '40H', CANCEL$OUTPUT LITERALLY '10H'; DECLARE MONO$INDEX$REG LITERALLY '03B4H', /* monochrome */ COLOR$INDEX$REG LITERALLY '03D4H', /* CGA adapter */ CMOS$ADDRESS LITERALLY '070H', /* CMOS RAM address */ CMOS$DATA LITERALLY '071H', CMOS$EQUIP$BYTE LITERALLY '014H', COLOR$CARD LITERALLY '00100000B', MONO$CARD LITERALLY '00110000B', ADAPTER$TYPE LITERALLY '00110000B', TURN$ON LITERALLY '0FFH', TURN$OFF LITERALLY '00H', TEST$PATTERN LITERALLY '05H', DISPLAYABLE$CHAR LITERALLY '20H', BLANK$CHARACTER LITERALLY '20H', DEFAULT$ATTRIB LITERALLY '0700H', /* attribute is white on black */ SCREEN$LENGTH LITERALLY '2000', /* length is 80 * 25 */ DATA$REG$OFFSET LITERALLY '01H', MODE$REG$OFFSET LITERALLY '04H', STAT$REG$OFFSET LITERALLY '06H', COL$ENABLE LITERALLY '29H', /* CGA */ COL$DISABLE LITERALLY '25H', MON$ENABLE LITERALLY '08H', /* monochrome */ MON$DISABLE LITERALLY '00H'; DECLARE SELECT$R0 LITERALLY '00H', SELECT$R1 LITERALLY '01H', SELECT$R2 LITERALLY '02H', SELECT$R3 LITERALLY '03H', SELECT$R4 LITERALLY '04H', SELECT$R5 LITERALLY '05H', SELECT$R6 LITERALLY '06H', SELECT$R7 LITERALLY '07H', SELECT$R8 LITERALLY '08H', SELECT$R9 LITERALLY '09H', SELECT$R10 LITERALLY '0AH', SELECT$R11 LITERALLY '0BH', SELECT$R12 LITERALLY '0CH', SELECT$R13 LITERALLY '0DH', SELECT$R14 LITERALLY '0EH', SELECT$R15 LITERALLY '0FH'; DECLARE /* video RAM starting address */ COLOR$BASE$ADDR LITERALLY '0B8000H', /* CGA and EGA in character mode */ MONO$$BASE$ADDR LITERALLY '0B0000H'; /* mono/graphics in character mode */ $eject