home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Professional / OS2PRO194.ISO / os2 / prgramer / pascal2c / sysdevs.imp < prev    next >
Text File  |  1992-08-03  |  16KB  |  433 lines

  1.  
  2.  
  3. {IncludeFrom=sysdevs <sysdevs.h>}
  4.  
  5.  
  6. {*VarStrings=1} {*ExportSymbol=}
  7.  
  8.  
  9. MODULE SYSDEVS;
  10.  
  11. $SEARCH 'INITLOAD'$ 
  12.  
  13.  
  14. IMPORT SYSGLOBALS;
  15. EXPORT
  16.  {* DUMMY DECLARATIONS **********************************}
  17.  TYPE
  18.    KBDHOOKTYPE  = PROCEDURE(VAR STATBYTE,DATABYTE: BYTE;
  19.                             VAR DOIT: BOOLEAN);
  20.    OUT2TYPE     = PROCEDURE(VALUE1,VALUE2: BYTE);
  21.    REQUEST1TYPE = PROCEDURE(CMD: BYTE; VAR VALUE: BYTE);
  22.    BOOLPROC     = PROCEDURE(B:BOOLEAN);
  23.    
  24. {* CRT *************************************************}
  25. {***** THIS SECTION HAS HARD OFFSET REFERENCES *********}
  26. {      IN MODULES CRTB (ASSY FILE GASSM)                }
  27. TYPE
  28.   CRTWORD = RECORD CASE INTEGER OF
  29.             1:(HIGHLIGHTBYTE,CHARACTER: CHAR);
  30.             2:(WHOLEWORD: SHORTINT);
  31.             END;
  32.   CRTLLOPS =(CLLPUT,CLLSHIFTL,CLLSHIFTR,CLLCLEAR,CLLDISPLAY,PUTSTATUS);
  33.   CRTLLTYPE=PROCEDURE(OP:CRTLLOPS; ANYVAR POSITION:INTEGER; C:CHAR);
  34.   DBCRTOPS =(DBINFO,DBEXCG,DBGOTOXY,DBPUT,DBINIT,DBCLEAR,DBCLINE,DBSCROLLUP,
  35.              DBSCROLLDN,DBSCROLLL,DBSCROLLR,DBHIGHL);
  36.   DBCINFO  = RECORD
  37.                SAVEAREA : WINDOWP;
  38.                SAVESIZE : INTEGER;
  39.                DCURSORADDR : INTEGER;
  40.                XMIN,XMAX,YMIN,YMAX : SHORTINT;
  41.                CURSX,CURSY         : SHORTINT;
  42.                C : CHAR;
  43.                AREAISDBCRT : BOOLEAN;
  44.                CHARISMAPPED: BOOLEAN; { 3/25/85 }
  45.                DEBUGHIGHLIGHT: SHORTINT;  { 3/25/85 }
  46.              END;
  47.   DBCRTTYPE=PROCEDURE(OP:DBCRTOPS; VAR DBCRT:DBCINFO);
  48.   
  49.   crtconsttype = packed array [0..11] of byte;
  50.   
  51.   crtfrec = packed record
  52.                nobreak,stupid,slowterm,hasxycrt,
  53.                haslccrt{built in crt},hasclock,
  54.                canupscroll,candownscroll      :    boolean;
  55.              end;
  56.                            
  57.   b9 = packed array[0..8] of boolean;
  58.   b14= packed array[0..13] of boolean;
  59.   crtcrec = packed record                               (* CRT CONTROL CHARS *)
  60.                rlf,ndfs,eraseeol,
  61.                eraseeos,home,
  62.                escape             : char;
  63.                backspace          : char;
  64.                fillcount          : 0..255;
  65.                clearscreen,
  66.                clearline          : char;
  67.                prefixed           : b9
  68.             end;
  69.                                   
  70.   crtirec = packed record                          (* CRT INFO & INPUT CHARS *)
  71.                width,height      : shortint;
  72.                crtmemaddr,crtcontroladdr,
  73.                keybufferaddr,progstateinfoaddr:integer;
  74.                keybuffersize: shortint;
  75.                crtcon            : crtconsttype;
  76.                right,left,down,up: char;
  77.                badch,chardel,stop,
  78.                break,flush,eof   : char;
  79.                altmode,linedel   : char;
  80.                backspace,
  81.                etx,prefix        : char;
  82.                prefixed          : b14 ;
  83.                cursormask        : integer;
  84.                spare             : integer;
  85.             end;
  86.  
  87.   environ = record
  88.               miscinfo: crtfrec;
  89.               crttype: integer;
  90.               crtctrl: crtcrec;
  91.               crtinfo: crtirec;
  92.             end; 
  93.  
  94.   environptr    = ^environ; 
  95.   
  96.   crtkinds = (NOCRT, ALPHATYPE, BITMAPTYPE, SPECIALCRT1, SPECIALCRT2);
  97.   
  98. VAR
  99.   SYSCOM: ENVIRONPTR;
  100.   ALPHASTATE['ALPHAFLAG']       : BOOLEAN;
  101.   GRAPHICSTATE['GRAPHICSFLAG']  : BOOLEAN;
  102.   CRTIOHOOK             : AMTYPE;
  103.   TOGGLEALPHAHOOK       : PROCEDURE;
  104.   TOGGLEGRAPHICSHOOK    : PROCEDURE;
  105.   DUMPALPHAHOOK         : PROCEDURE;
  106.   DUMPGRAPHICSHOOK      : PROCEDURE;
  107.   UPDATECURSORHOOK      : PROCEDURE;
  108.   CRTINITHOOK           : PROCEDURE;
  109.   CRTLLHOOK             : CRTLLTYPE;
  110.   DBCRTHOOK             : DBCRTTYPE;
  111.   XPOS                  : SHORTINT; { CURSOR X POSITION }
  112.   YPOS                  : SHORTINT; { CURSOR Y POSITION }
  113.   CURRENTCRT            : CRTKINDS; { ACTIVE ALPHA DRIVER TYPE }
  114.   BITMAPADDR            : INTEGER;  { ADDRESS OF BITMAP CONTROL SPACE }
  115.   FRAMEADDR             : INTEGER;  { ADDRESS OF BITMAP FRAME BUFFER }
  116.   REPLREGCOPY           : SHORTINT; { REGISTER COPIES FOR BITMAP DISPLAY }
  117.   WINDOWREGCOPY         : SHORTINT; { MUST BE IN GLOBALS BECAUSE REGISTERS }
  118.   WRITEREGCOPY          : SHORTINT; { ARE NOT READABLE -- MAY BE UNDEFINED }
  119.  
  120.  {* KEYBOARD *******************************************}
  121.  CONST
  122.    KBD_ENABLE     = 0; KBD_DISABLE    = 1;
  123.    SET_AUTO_DELAY = 2; SET_AUTO_REPEAT= 3;
  124.    GET_AUTO_DELAY = 4; GET_AUTO_REPEAT= 5;
  125.    SET_KBDTYPE    = 6; SET_KBDLANG    = 7;
  126.  TYPE
  127.    STRING80PTR = ^STRING80;
  128.    KEYBOARDTYPE = (NOKBD,LARGEKBD,SMALLKBD,ITFKBD,SPECIALKBD1,SPECIALKBD2);
  129.    LANGTYPE = (NO_KBD,FINISH_KBD,BELGIAN_KBD,CDN_ENG_KBD,CDN_FR_KBD,
  130.                NORWEGIAN_KBD,DANISH_KBD,DUTCH_KBD,SWISS_GR_KBD,SWISS_FR_KBD,
  131.                SPANISH_EUR_KBD,SPANISH_LATIN_KBD,UK_KBD,ITALIAN_KBD,
  132.                FRENCH_KBD,GERMAN_KBD,SWEDISH_KBD,SPANISH_KBD,
  133.                KATAKANA_KBD,US_KBD,ROMAN8_KBD,NS1_KBD,NS2_KBD,NS3_KBD,
  134.                SWISS_GR_B_KBD,SWISS_FR_B_KBD {ADDED FOR 3.1--SFB-5/22/85} );
  135.    MENUTYPE = (M_NONE,M_SYSNORM,M_SYSSHIFT,M_U1,M_U2,M_U3,M_U4);
  136.  VAR
  137.    KBDREQHOOK   : REQUEST1TYPE;
  138.    KBDIOHOOK    : AMTYPE;
  139.    KBDISRHOOK   : KBDHOOKTYPE;
  140.    KBDPOLLHOOK  : BOOLPROC;
  141.    KBDTYPE      : KEYBOARDTYPE;
  142.    KBDCONFIG    : BYTE;         { KEYBOARD CONFIGURATION JUMPER }
  143.    KBDLANG      : LANGTYPE;
  144.    SYSMENU      : STRING80PTR;
  145.    SYSMENUSHIFT : STRING80PTR;
  146.    MENUSTATE    : MENUTYPE;
  147.  
  148. {* ENABLE / DISABLE ************************************}
  149.  CONST
  150.    KBDMASK=1;RESETMASK=2;TIMERMASK=4;PSIMASK=8;FHIMASK=16;
  151.  VAR
  152.    MASKOPSHOOK : OUT2TYPE; { ENABLE, DISABLE }
  153.  
  154. {* BEEPER **********************************************}
  155.  VAR
  156.    BEEPERHOOK: OUT2TYPE;
  157.    BFREQUENCY, BDURATION: BYTE;
  158.  
  159. {* RPG *************************************************}
  160.  CONST
  161.    RPG_ENABLE   = 0; RPG_DISABLE = 1;
  162.    SET_RPG_RATE = 2; GET_RPG_RATE =3;
  163.  VAR
  164.    RPGREQHOOK: REQUEST1TYPE;
  165.    RPGISRHOOK: KBDHOOKTYPE;
  166.    
  167. {* BATTERY *********************************************}
  168. TYPE
  169.   BATCMDTYPE = PROCEDURE(CMD: BYTE; NUMDATA: INTEGER;
  170.                          B1, B2, B3, B4, B5: BYTE); 
  171.   BATREADTYPE= PROCEDURE(VAR DATA: BYTE);
  172. VAR
  173.   BATTERYPRESENT[-563]: BOOLEAN;
  174.   BATCMDHOOK : BATCMDTYPE;
  175.   BATREADHOOK: BATREADTYPE;
  176.  
  177. {* CLOCK ***********************************************}
  178. TYPE
  179.   RTCTIME = PACKED RECORD 
  180.                PACKEDTIME,PACKEDDATE:INTEGER;
  181.             END;
  182.   CLOCKFUNC = (CGETDATE,CGETTIME,CSETDATE,CSETTIME);
  183.   CLOCKOP   = (CGET,CSET,CUPDATE);      {CUPDATE ADDED FOR BOBCAT 4/11/85 SFB}
  184.   CLOCKDATA = RECORD
  185.                 CASE BOOLEAN OF
  186.                 TRUE :(TIMETYPE:TIMEREC);
  187.                 FALSE:(DATETYPE:DATEREC);
  188.               END;
  189.   CLOCKREQTYPE = PROCEDURE(CMD:CLOCKFUNC; ANYVAR DATA:CLOCKDATA);
  190.   CLOCKIOTYPE  = PROCEDURE(CMD:CLOCKOP  ; VAR DATA:RTCTIME);
  191. VAR
  192.   CLOCKREQHOOK : CLOCKREQTYPE;  { CLOCK MODULE INTERFACE }
  193.   CLOCKIOHOOK  : CLOCKIOTYPE;   { CARD DRIVER INTERFACE }
  194.  
  195. {* TIMER ***********************************************}
  196. TYPE
  197.   TIMERTYPES = (CYCLICT,PERIODICT,DELAYT,DELAY7T,MATCHT);
  198.   TIMEROPTYPE = (SETT,READT,GETTINFO);
  199.   TIMERDATA = RECORD
  200.                CASE INTEGER OF
  201.                0: (COUNT: INTEGER);
  202.                1: (MATCH: TIMEREC);
  203.                2: (RESOLUTION,RANGE:INTEGER);
  204.                END;
  205.   TIMERIOTYPE = PROCEDURE(TIMER: TIMERTYPES;OP: TIMEROPTYPE;VAR TD: TIMERDATA);
  206. VAR 
  207.   TIMERIOHOOK  : TIMERIOTYPE; 
  208.   TIMERISRHOOK : KBDHOOKTYPE;
  209.  
  210.  
  211. {* KEYBUFFER *******************************************}
  212. CONST
  213.   KMAXBUFSIZE = 255;
  214. TYPE
  215.  
  216.   KOPTYPE = (KGETCHAR,KAPPEND,KNONADVANCE,KCLEAR,KDISPLAY,
  217.              KGETLAST,KPUTFIRST);
  218.   KBUFTYPE= PACKED ARRAY[0..KMAXBUFSIZE] OF CHAR;
  219.   KBUFPTR = ^KBUFTYPE;
  220.   KBUFRECPTR = ^KBUFREC;
  221.   KBUFREC = RECORD
  222.               ECHO: BOOLEAN;
  223.               NON_CHAR: CHAR;
  224.               MAXSIZE,SIZE,INP,OUTP: INTEGER;
  225.               BUFFER: KBUFPTR;
  226.             END;
  227.   
  228. VAR
  229.   KEYBUFFER : KBUFRECPTR;
  230.   KBDWAITHOOK: PROCEDURE;
  231.   KBDRELEASEHOOK: PROCEDURE;
  232.   STATUSLINE: PACKED ARRAY[0..7] OF CHAR;
  233.   {0  s or f = STEP/FLASH IN PROGRESS (WAITING FOR TRAP #0)}
  234.   {1..5  last executed/current line number }
  235.   {6  S=SYSTEM  U=USER  DEFINITION FOR ITF SOFT KEYS}
  236.   {   BLANK FOR NON ITF KEYBOARDS }
  237.   {7  RUNLIGHT }
  238.  
  239. {* KEY TRANSLATION SERVICES ********************************}
  240. TYPE
  241.   KEYTRANSTYPE =(KPASSTHRU,KSHIFT_EXTC,KPASS_EXTC);
  242.   KEYTYPE = (ALPHA_KEY,NONADV_KEY,SPECIAL_KEY,IGNORED_KEY,NONA_ALPHA_KEY);
  243.   { ADDED NONA_ALPHA_KEY 5/9/84 RQ/SFB }
  244.   
  245.   LANGCOMREC = RECORD
  246.                  STATUS : BYTE;
  247.                  DATA   : BYTE;
  248.                  KEY    : CHAR;
  249.                  RESULT : KEYTYPE;
  250.                  SHIFT,CONTROL,EXTENSION: BOOLEAN;
  251.                END;
  252.   LANGKEYREC = RECORD
  253.                  NO_CAPSLOCK: BOOLEAN;
  254.                  NO_SHIFT   : BOOLEAN;
  255.                  NO_CONTROL : BOOLEAN;
  256.                  NO_EXTENSION : BOOLEAN;
  257.                  KEYCLASS   : KEYTYPE;
  258.                  KEYS : ARRAY[BOOLEAN] OF CHAR;
  259.                END;
  260.   LANGRECORD= RECORD
  261.                 CAN_NONADV: BOOLEAN;
  262.                 LANGCODE  : LANGTYPE;
  263.                 SEMANTICS : PROCEDURE;
  264.                 KEYTABLE  : ARRAY[0..127] OF LANGKEYREC;
  265.               END;
  266.   LANGPTR   = ^LANGRECORD;
  267. VAR
  268.   LANGCOM   : LANGCOMREC;
  269.   LANGTABLE : ARRAY[0..1] OF LANGPTR;
  270.   LANGINDEX : 0..1;
  271.   KBDTRANSHOOK : KBDHOOKTYPE;
  272.   TRANSMODE : KEYTRANSTYPE;
  273.   KBDSYSMODE, KBDALTLOCK, KBDCAPSLOCK : BOOLEAN;
  274.   
  275. {* HPHIL ***********************************************}
  276. {MOVED INTO SYSDEVS 4/6/84 SFB}
  277. const
  278.   le_configured = hex('80');
  279.   le_error      = hex('81');
  280.   le_timeout    = hex('82');
  281.   le_loopdown   = hex('84');
  282.   
  283.   lmaxdevices   = 7;
  284.   
  285. type
  286.   loopdvrop   = (datastarting,dataended,resetdevice,uninitdevice);
  287.                  {UNINIT ADDED 4/8/85 SFB}
  288.   loopdvrproc = procedure(op:loopdvrop);
  289.   
  290.   {HPHILOP DEFINED AS NEW TYPE 4/6/84 SFB}
  291.   HPHILOP      = (RAWSHIFTOP,NORMSHIFTOP,CHECKLOOPOP,CONFIGUREOP,LCOMMANDOP);
  292.   {5 PROCEDURES HOOKED AS TYPE HPHILCMDPROC 4/6/84 SFB}
  293.   HPHILCMDPROC = PROCEDURE(OP : HPHILOP);
  294.   
  295.   
  296.   descriprec = packed record    { DEVICE DESCRIBE RECORD }
  297.                  case boolean of
  298.                  true :(id       : byte;
  299.                         twosets  : boolean;
  300.                         abscoords: boolean;
  301.                         size16   : boolean;
  302.                         hasprompts:boolean;
  303.                       { reserved : 0..3;        {DELETED 3/25/85 SFB}
  304.                         ext_desc : boolean;     {3/27/85 SFB}
  305.                         security : boolean;     {3/26/85 SFB}
  306.                         numaxes  : 0..3;
  307.                         counts   : shortint;
  308.                         maxcountx: shortint;
  309.                         maxcounty: shortint;
  310.                         maxcountz: shortint;
  311.                         promptack: boolean;     {ADDED 3/15/85 SFB}
  312.                         nprompts : 0..7;
  313.                         proximity: boolean;     {ADDED 3/15/85 SFB}
  314.                         nbuttons : 0..7);
  315.                  false:(darray : array[1..11] of char);
  316.                end;
  317.   
  318.   devicerec = record
  319.                 devstate : integer;
  320.                 descrip : descriprec;
  321.                 opsproc  : loopdvrproc;
  322.                 dataproc : kbdhooktype;
  323.               end;
  324.   
  325.   loopdvrptr = ^loopdriverrec;
  326.   loopdriverrec = record
  327.                     lowid,highid,daddr : byte;
  328.                     opsproc  : loopdvrproc;
  329.                     dataproc : kbdhooktype;
  330.                     next     : loopdvrptr;
  331.                   end;
  332.   
  333.   LOOPCONTROLREC = RECORD                   {REDEFINED AS RECORD - 4/6/84 SFB}
  334.         rawmode : boolean;
  335.         loopdevices : array[1..lmaxdevices] of devicerec;
  336.         loopdevice : 1..lmaxdevices;
  337.         loopcmd    : byte;    { last loop command sent }
  338.         loopdata   : byte;    { data bye in / out }
  339.         looperror  : boolean; { error occured on last operation }
  340.         loopinconfig:boolean; { now doing reconfigure }
  341.         loopcmddone: boolean; { last sent command is done }
  342.         loopisok   : boolean; { loop is configured }
  343.         loopdevreading: boolean; { reading poll data }  { 3.0 BUG #39 3/17/84 }
  344.   END;
  345.   
  346.   CONST                         {NEW TO END OF HPHIL_COMM_REC TYPE 3/26/85 SFB}
  347.   
  348.   
  349.   {DRIVER TYPES}
  350.   NODRIVER   =  0;
  351.   ABSLOCATOR =  1;        {range 1..15 reserved for DGL}
  352.   
  353.   {CODETYPES FROM POLLBLOCK (OR OTHER HPHIL OPCODE)}
  354.   NOCODES       = 0;
  355.   ASCIICODES    = 1;
  356.   SET1CODES     = 2;
  357.   SET2CODES     = 3;
  358.   
  359.   TYPE
  360.   
  361.   HPHIL_COMM_REC_PTR_TYPE = ^hphil_comm_rec_type;  {3/25/85 SFB}
  362.   
  363.   HPHIL_COMM_REC_TYPE = RECORD CASE BOOLEAN OF              {3/25/85 SFB}
  364.    TRUE :
  365.          (dvr_type        : shortint;
  366.           dev_addr        : 0..7;
  367.           latch,                  {stop updating data after button press/event}
  368.           active,                 {capture data in ISR}
  369.           reading         : boolean;  {dvr_comm_rec busy, delay update from ISR}
  370.           devices         : byte; {bit/loopaddress that driver should service
  371.                                    put 0 where driver should NOT service device
  372.                                    with this dvr_comm_rec !}
  373.           update          : procedure(recptr : hphil_comm_rec_ptr_type);
  374.                                   {call update to flush delayed poll data update}
  375.           link            : hphil_comm_rec_ptr_type;  {next comm record}
  376.           extend          : integer; {for extensibility use as pointer/datarec}
  377.           
  378.           xloc,                   {HPHIL intrinsic data types from poll/command}
  379.           yloc,
  380.           zloc            : shortint;
  381.           codetype        : shortint;     {describes content of codes}
  382.           ncodes          : shortint;
  383.           codes           : packed array [1..16] of char 
  384.                                {extensible for variant} );
  385.    FALSE:
  386.          (barray          : array[0..53] of char);
  387.   END;
  388.  
  389. var
  390.    
  391.   loopdriverlist : loopdvrptr;
  392.   LOOPCONTROL    : ^LOOPCONTROLREC;     {4/6/84 SFB}
  393.   HPHILCMDHOOK   : HPHILCMDPROC;        {4/6/84 SFB}
  394.   
  395.   HPHIL_DATA_LINK : hphil_comm_rec_ptr_type;  {3/13/85 SFB}
  396.  
  397. {-----------------------------------------------------------------------------}
  398. PROCEDURE SYSDEV_INIT;
  399. {* BEEPER **********************************************}
  400. PROCEDURE BEEP;
  401. PROCEDURE BEEPER(FREQUENCY,DURATION:BYTE);
  402. {* RPG *************************************************}
  403. PROCEDURE SETRPGRATE(RATE : BYTE);
  404. {* KEYBOARD ********************************************}
  405. PROCEDURE KBDSETUP(CMD,VALUE:BYTE);
  406. PROCEDURE KBDIO(FP: FIBP; REQUEST: AMREQUESTTYPE;
  407.                 ANYVAR BUFFER: WINDOW; BUFSIZE,POSITION: INTEGER);
  408. procedure lockedaction(a: action); 
  409. {* CRT *************************************************}
  410. PROCEDURE CRTIO(FP: FIBP; REQUEST: AMREQUESTTYPE;
  411.                 ANYVAR BUFFER: WINDOW; BUFSIZE,POSITION: INTEGER);
  412. PROCEDURE DUMMYCRTLL(OP:CRTLLOPS; ANYVAR POSITION:INTEGER; C:CHAR);
  413. {* BATTERY *********************************************}
  414. PROCEDURE BATCOMMAND(CMD:BYTE; NUMDATA:INTEGER; B1, B2, B3, B4, B5: BYTE); 
  415. FUNCTION  BATBYTERECEIVED:BYTE;
  416. {* CLOCK ***********************************************}
  417. function  sysclock: integer;   {centiseconds from midnight} 
  418. procedure sysdate (var thedate: daterec); 
  419. procedure systime (var thetime: timerec); 
  420. procedure setsysdate ( thedate: daterec); 
  421. procedure setsystime ( thetime: timerec); 
  422. {* KEYBUFFER *******************************************}
  423. PROCEDURE KEYBUFOPS(OP:KOPTYPE; VAR C: CHAR);
  424. {* STATUSLINE ******************************************}
  425. PROCEDURE SETSTATUS(N:INTEGER; C:CHAR);
  426. FUNCTION  RUNLIGHT:CHAR;
  427. PROCEDURE SETRUNLIGHT(C:CHAR);
  428.  
  429.  
  430. end.
  431.  
  432.  
  433.