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

  1.  
  2.  
  3. {IncludeFrom=iodeclarations <iodecl.h>}
  4.  
  5.  
  6. {*VarStrings=0} {*ExportSymbol=P_%s} {*Export_Symbol=%s}
  7.  
  8.  
  9. MODULE IODECLARATIONS;
  10. IMPORT  sysglobals;
  11.  
  12. EXPORT
  13.  
  14.    CONST
  15.       iominisc   = 0 ;
  16.       iomaxisc   = 31;
  17.       minrealisc = 7 ;
  18.       maxrealisc = 31;
  19.  
  20.       io_line_feed    = CHR(10);
  21.       io_carriage_rtn = CHR(13);
  22.  
  23.       ioescapecode    =  -26;
  24.  
  25.       ioe_no_error    = 0;
  26.       ioe_no_card     = 1;
  27.       ioe_not_hpib    = 2;
  28.       ioe_not_act     = 3;
  29.       ioe_not_dvc     = 4;
  30.       ioe_no_space    = 5;
  31.       ioe_no_data     = 6;
  32.       ioe_bad_tfr     = 7;
  33.       ioe_isc_busy    = 8;
  34.       ioe_buf_busy    = 9;
  35.       ioe_bad_cnt     = 10;
  36.       ioe_bad_tmo     = 11;
  37.       ioe_no_driver   = 12;
  38.       ioe_no_dma      = 13;
  39.       ioe_no_word     = 14;
  40.       ioe_not_talk    = 15;
  41.       ioe_not_lstn    = 16;
  42.       ioe_timeout     = 17;
  43.       ioe_not_sctl    = 18;
  44.       ioe_rds_wtc     = 19;
  45.       ioe_bad_sct     = 20;
  46.       ioe_crd_dwn     = 21;
  47.       ioe_eod_seen    = 22;
  48.       ioe_misc        = 23;
  49.  
  50.       ioe_sr_toomany  = 304;
  51.       ioe_dc_fail     = 306;
  52.       ioe_dc_usart    = 313;
  53.       ioe_dc_ovfl     = 314;
  54.       ioe_dc_clk      = 315;
  55.       ioe_dc_cts      = 316;
  56.       ioe_dc_car      = 317;
  57.       ioe_dc_act      = 318;
  58.       ioe_dc_conn     = 319;
  59.       ioe_dc_conf     = 325;
  60.       ioe_dc_reg      = 326;
  61.       ioe_dc_rval     = 327;
  62.       ioe_sr_fail     = 353;
  63.  
  64.       no_isc          = 255;
  65.  
  66.       gtl_message     = CHR( 1  );
  67.       sdc_message     = CHR( 4  );
  68.       ppc_message     = CHR( 5  );
  69.       get_message     = CHR( 8  );
  70.       tct_message     = CHR( 9  );
  71.       llo_message     = CHR( 17 );
  72.       dcl_message     = CHR( 20 );
  73.       ppu_message     = CHR( 21 );
  74.       spe_message     = CHR( 24 );
  75.       spd_message     = CHR( 25 );
  76.       unl_message     = CHR( 63 );
  77.       unt_message     = CHR( 95 );
  78.       ppe_message     = CHR( 96 );
  79.       ppd_message     = CHR(112 );
  80.  
  81.       talk_constant   = 64;
  82.       listen_constant = 32;
  83.  
  84.       no_card         = 0 ;
  85.       other_card      = 1 ;
  86.  
  87.       system_card     = 2 ;
  88.       hpib_card       = 3 ;
  89.       gpio_card       = 4 ;
  90.       serial_card     = 5 ;
  91.       graphics_card   = 6 ;
  92.       srm_card        = 7 ;
  93.       bubble_card     = 8 ;
  94.       eprom_prgmr     = 9 ;
  95.  
  96.       hp98628_dsndl   = -7;
  97.       hp98629         = -6;
  98.       hp_datacomm     = -5;
  99.       hp98620         = -4;
  100.       internal_kbd    = -3;
  101.       internal_crt    = -2;
  102.       internal_hpib   = -1;
  103.  
  104.       no_id           =  0;
  105.  
  106.       hp98624         =  1;
  107.       hp98626         =  2;
  108.  
  109.       hp98622         =  3;
  110.       hp98623         =  4;
  111.       hp98625         =  8;
  112.       hp98628_async   = 20;
  113.       hpGATOR         = 25;
  114.       hp98253         = 27;
  115.       hp98627         = 28;
  116.       hp98259         = 30;
  117.       hp98644         = 66;
  118.  
  119.  
  120.  
  121.    TYPE
  122.       type_isc        = iominisc..iomaxisc ;
  123.       type_device     = iominisc..iomaxisc*100+99;
  124.       io_bit          = 0..15 ;
  125.       io_byte         = 0..255 ;
  126.       io_word         = -32768..32767 ;
  127.       io_string       =
  128.       STRING[255];
  129.       io_proc_type    = PROCEDURE;
  130.       errlnk_type     = PROCEDURE ( errorcode : INTEGER ; VAR s     : io_string );
  131.  
  132.       type_of_card    = io_word;
  133.       type_card_id    = io_word;
  134.  
  135.  
  136.  
  137.  
  138.       type_hpib_addr  = 0..31 ;
  139.       type_hpib_line  = ( ren_line ,
  140.                           ifc_line ,
  141.                           srq_line ,
  142.                           eoi_line ,
  143.                           nrfd_line ,
  144.                           ndac_line ,
  145.                           dav_line ,
  146.                           atn_line
  147.                         ) ;
  148.  
  149.  
  150.  
  151.  
  152.       type_parity     = ( no_parity ,
  153.                           odd_parity ,
  154.                           even_parity ,
  155.                           zero_parity ,
  156.                           one_parity
  157.                         );
  158.       type_serial_line= ( rts_line ,
  159.                           cts_line ,
  160.                           dcd_line ,
  161.                           dsr_line ,
  162.                           drs_line ,
  163.                           ri_line  ,
  164.  
  165.                           dtr_line
  166.                         );
  167.  
  168.  
  169.  
  170.       io_proc         = PROCEDURE ( temp  : ANYPTR );
  171.       io_proc_c       = PROCEDURE ( temp  : ANYPTR; v     : CHAR );
  172.       io_proc_vc      = PROCEDURE ( temp  : ANYPTR; VAR v : CHAR);
  173.       io_proc_w       = PROCEDURE ( temp  : ANYPTR; v     : io_word );
  174.       io_proc_vw      = PROCEDURE ( temp  : ANYPTR; VAR v : io_word );
  175.       io_proc_s       = PROCEDURE ( temp  : ANYPTR; reg   : io_word ;
  176.                                     v     : io_word );
  177.       io_proc_vs      = PROCEDURE ( temp  : ANYPTR; reg   : io_word ;
  178.                                     VAR v : io_word );
  179.       io_proc_l       = PROCEDURE ( temp  : ANYPTR; line  : io_bit );
  180.       io_proc_vl      = PROCEDURE ( temp  : ANYPTR; line  : io_bit ;
  181.                                     VAR v : BOOLEAN );
  182.       io_proc_vb      = PROCEDURE ( temp  : ANYPTR; VAR v : BOOLEAN );
  183.       io_proc_ptr     = PROCEDURE ( temp  : ANYPTR; v     : ANYPTR );
  184.  
  185.       drv_table_type  = RECORD
  186.                            iod_init  : io_proc ;
  187.                            iod_isr   : ISRPROCTYPE ;
  188.                            iod_rdb   : io_proc_vc ;
  189.                            iod_wtb   : io_proc_c ;
  190.                            iod_rdw   : io_proc_vw ;
  191.                            iod_wtw   : io_proc_w ;
  192.                            iod_rds   : io_proc_vs ;
  193.                            iod_wtc   : io_proc_s ;
  194.                            iod_end   : io_proc_vb ;
  195.                            iod_tfr   : io_proc_ptr ;
  196.                            iod_send  : io_proc_c;
  197.                            iod_ppoll : io_proc_vc ;
  198.                            iod_set   : io_proc_l ;
  199.                            iod_clr   : io_proc_l ;
  200.                            iod_test  : io_proc_vl ;
  201.                         END;
  202.  
  203.  
  204.  
  205.       io_funny_proc   = RECORD
  206.                            CASE BOOLEAN OF
  207.                               TRUE: ( real_proc : io_proc );
  208.                               FALSE: ( dummy_pr  : ANYPTR ; dummy_sl  : ANYPTR )
  209.                         END;
  210.  
  211.       io_temp_type    = PACKED RECORD
  212.                            myisrib   : ISRIB ;
  213.                            user_isr  : io_funny_proc;
  214.                            user_parm : ANYPTR ;
  215.                            card_addr : ANYPTR ;
  216.                            in_bufptr : ANYPTR ;
  217.                            out_bufptr: ANYPTR ;
  218.                            eirbyte   : CHAR ;
  219.                            my_isc    : io_byte ;
  220.                            timeout   : INTEGER ;
  221.                            addressed : io_word ;
  222.                            drv_misc  : ARRAY[1..32] OF CHAR ;
  223.                         END;
  224.  
  225.       io_temp_type2   = PACKED RECORD
  226.                            myisrib   : ISRIB ;
  227.                            user_isr  : io_funny_proc;
  228.                            user_parm : ANYPTR ;
  229.                            card_addr : ANYPTR ;
  230.                            in_bufptr : ANYPTR ;
  231.                            out_bufptr: ANYPTR ;
  232.                            eirbyte   : CHAR ;
  233.                            my_isc    : io_byte ;
  234.                            timeout   : INTEGER ;
  235.                            addressed : io_word ;
  236.                            drv_misc  : ARRAY[1..128] OF CHAR ;
  237.                         END;
  238.  
  239.       io_temp_type3   = PACKED RECORD
  240.                            myisrib   : ISRIB ;
  241.                            user_isr  : io_funny_proc;
  242.                            user_parm : ANYPTR ;
  243.                            card_addr : ANYPTR ;
  244.                            in_bufptr : ANYPTR ;
  245.                            out_bufptr: ANYPTR ;
  246.                            eirbyte   : CHAR ;
  247.                            my_isc    : io_byte ;
  248.                            timeout   : INTEGER ;
  249.                            addressed : io_word ;
  250.                            drv_misc  : ARRAY[1..160] OF CHAR ;
  251.                         END;
  252.  
  253.       io_temp_type4   = PACKED RECORD
  254.                            myisrib   : ISRIB ;
  255.                            user_isr  : io_funny_proc;
  256.                            user_parm : ANYPTR ;
  257.                            card_addr : ANYPTR ;
  258.                            in_bufptr : ANYPTR ;
  259.                            out_bufptr: ANYPTR ;
  260.                            eirbyte   : CHAR ;
  261.                            my_isc    : io_byte ;
  262.                            timeout   : INTEGER ;
  263.                            addressed : io_word ;
  264.                            drv_misc  : ARRAY[1..164] OF CHAR ;
  265.                         END;
  266.  
  267.  
  268.       pio_tmp_ptr     = ^io_temp_type;
  269.  
  270.  
  271.       isc_table_type  = RECORD
  272.                            io_drv_ptr: ^drv_table_type;
  273.                            io_tmp_ptr: pio_tmp_ptr;
  274.                            card_type : type_of_card;
  275.                            user_time : INTEGER;
  276.                            card_id   : type_card_id;
  277.                            card_ptr  : ANYPTR;
  278.                         END;
  279.  
  280.  
  281.  
  282.       user_tfr_type   = ( dummy_tfr_1 ,
  283.                           serial_DMA ,
  284.                           serial_FHS ,
  285.                           serial_FASTEST ,
  286.                           dummy_tfr_2 ,
  287.                           overlap_INTR ,
  288.                           overlap_DMA ,
  289.                           overlap_FHS ,
  290.                           overlap_FASTEST ,
  291.                           OVERLAP ) ;
  292.                           actual_tfr_type = ( no_tfr ,
  293.                           INTR_tfr ,
  294.                           DMA_tfr ,
  295.                           BURST_tfr ,
  296.                           FHS_tfr
  297.                         ) ;
  298.       dir_of_tfr      = ( to_memory,
  299.                           from_memory
  300.                         ) ;
  301.  
  302.       buf_type        = PACKED ARRAY[0..maxint] OF CHAR;
  303.  
  304.       buf_info_type   = RECORD
  305.                            drv_tmp_ptr : pio_tmp_ptr;
  306.                            active_isc  : io_byte;
  307.                            act_tfr     : actual_tfr_type ;
  308.                            usr_tfr     : user_tfr_type ;
  309.                            b_w_mode    : BOOLEAN ;
  310.                            end_mode    : BOOLEAN ;
  311.                            direction   : dir_of_tfr ;
  312.                            term_char   : -1..255 ;
  313.                            term_count  : INTEGER ;
  314.                            buf_ptr     : ^buf_type ;
  315.                            buf_size    : INTEGER ;
  316.                            buf_empty   : ANYPTR ;
  317.                            buf_fill    : ANYPTR ;
  318.                            eot_proc    : io_funny_proc;
  319.                            eot_parm    : ANYPTR ;
  320.                            dma_priority: BOOLEAN;
  321.                         END;
  322.  
  323.    VAR
  324.       dma_ch_0        : io_funny_proc ;
  325.       dma_isc_0       : io_byte ;
  326.       dma_ch_1        : io_funny_proc ;
  327.       dma_isc_1       : io_byte ;
  328.       dma_isrib0      : ISRIB ;
  329.       dma_isrib1      : ISRIB ;
  330.       dma_here        : BOOLEAN;
  331.  
  332.       io_work_char    : CHAR;
  333.  
  334.       ioe_result      : INTEGER;
  335.       ioe_isc         : INTEGER;
  336.  
  337.       isc_table       : PACKED ARRAY [type_isc]
  338.       OF isc_table_type;
  339.  
  340.       io_revid        : STRING[96];
  341.  
  342.       io_error_link   : errlnk_type;
  343.  
  344.    PROCEDURE io_escape   ( my_code    : INTEGER ; select_code: INTEGER);
  345.    FUNCTION  io_find_isc ( iod_temp   : ANYPTR ): io_byte;
  346. END.
  347.  
  348.