home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ddkx86v2.zip / DDKX86 / DBCSDD / H_DBCS / VDMBIOSJ.H < prev    next >
Text File  |  1995-04-14  |  14KB  |  453 lines

  1. /*DDK*************************************************************************/
  2. /*                                                                           */
  3. /* COPYRIGHT    Copyright (C) 1995 IBM Corporation                           */
  4. /*                                                                           */
  5. /*    The following IBM OS/2 WARP source code is provided to you solely for  */
  6. /*    the purpose of assisting you in your development of OS/2 WARP device   */
  7. /*    drivers. You may use this code in accordance with the IBM License      */
  8. /*    Agreement provided in the IBM Device Driver Source Kit for OS/2. This  */
  9. /*    Copyright statement may not be removed.                                */
  10. /*                                                                           */
  11. /*****************************************************************************/
  12. /***    VDMBIOSJ.H
  13.  *
  14.  *      SCCSID = @(#)vdmbiosj.h    xx.xx 90/05/28
  15.  *
  16.  *      MVDM BIOSJ Data Definitions
  17.  *
  18.  *      For include file hierarchy, see MVDM.H
  19.  *
  20.  */
  21.  
  22. #define EBIOS_BIOSMODE  0x0121          // bios mode flag       j-ea0000
  23.  
  24.  
  25. #define BIOSJDATA_LEN   0x00800         // reserve 2K
  26. //c-begin
  27. #define BIOSJDATA_PAGES PAGESFROMBYTES(BIOSJDATA_LEN)
  28. //c-end
  29.  
  30. //c-begin
  31. #define EBIOSDATA_SEG   (*(PWORD)(0x40E))
  32. #define EBIOSDATA_ADR   (EBIOSDATA_SEG << 4)
  33. //J-YF005#define BIOSJDATA_ADR   (EBIOSDATA_ADR + (*(PWORD)(EBIOSDATA_ADR) * 1024))
  34. #define BIOSJDATA_ADR   (EBIOSDATA_ADR + (*(PBYTE)(EBIOSDATA_ADR) * 1024))      //J-YF005
  35. #define BIOSJDATA_SEG   (BIOSJDATA_ADR >> 4)
  36. //c-end
  37.  
  38. //c-begin
  39. #define BIOSMODE        (*(PBYTE)(EBIOSDATA_ADR + EBIOS_BIOSMODE))
  40. //c-end
  41. #define PS2_MODE        0x00            // PS/2 mode BIOS       (will be deleted later...) //J-YF001
  42. #define PS55_MODE       0x01            // PS/55 DBCS mode BIOS (will be deleted later...) //J-YF001
  43. #define PCDOS_MODE      0x00            // PC-DOS mode BIOS           //J-YF004
  44. #define DOSJ_MODE       0x01            // DOS-J mode BIOS            //J-YF004
  45. #define DOSV_MODE       0x02            // DOS/V mode BIOS            //J-YF004
  46.  
  47.  
  48. /***    Int 16h Equates (AH values)
  49.  */
  50.  
  51. #define INT16J_BEEPON           0x03                                    //ss0003
  52. #define INT16J_BEEPOFF          0x04                                    //ss0003
  53. #define INT16J_SETSTATE         0x05                                    //ss0003
  54. #define INT16J_SETSTATE2        0x85                                    //ss0003
  55. #define INT16J_READCHGXTBL      0x06                                    //ss0004
  56. #define INT16J_CHGDISP          0x07                                    //ss0003
  57. #define INT16J_SETSHIFT         0x82                                    //ss0003
  58. #define INT16J_GETKBDFUNC       0x09                                    //j-mi1110
  59. #define INT16J_GETKBDHWID       0x0A                                    //j-mi1110
  60. #define INT16J_GETKBDTYPE       0x0B                                    //ss0003
  61. #define INT16J_READCHAR         0xF0                                    //ss0003
  62. #define INT16J_PEEKCHAR         0xF1                                    //ss0003
  63. #define INT16J_FLUSHBUFF        0xF2                                    //ss0003
  64. #define INT16V_RETKBDID         0x0A         // DOSV return KBD ID   //j-mh0001
  65. #define INT16V_DBCSSHIFT        0x13                                 //j-mh0001
  66. #define INT16V_SETDSHIFT        0x00         // INT16 AH=13 AL=00    //j-mh0001
  67. #define INT16V_GETDSHIFT        0x01         // INT16 AH=13 AL=01    //j-mh0001
  68. #define INT16V_CHGDISP          0x14                                 //j-mh0001
  69. #define INT16V_ENADISP          0x00         // INT16 AH=14 AL=00    //j-mh0001
  70. #define INT16V_DISDISP          0x01         // INT16 AH=14 AL=01    //j-mh0001
  71. #define INT16V_QUEDISP          0x02         // INT16 AH=14 AL=02    //j-mh0001
  72.  
  73.  
  74. /***ET+ MVDM BIOSJ Data Definitions - used by VDDs */
  75.  
  76. /***    BIOSJ Data Area
  77.  *
  78.  *      This area cannot exceed BIOSJDATA_LEN
  79.  */
  80.  
  81. typedef struct drvtbl_ss {
  82.         WORD    max_cyl_m;
  83.         BYTE    max_head_m;
  84.         WORD    dummy1;
  85.         WORD    dummy2;
  86.         WORD    dummy3;
  87.         BYTE    dummy4[7];
  88.         BYTE    dummy5;
  89.         WORD    start_chr_m;
  90.         BYTE    dummy6;
  91.         BYTE    dummy7;
  92.         WORD    dummy8;
  93.         BYTE    dummy9;
  94.         BYTE    dummy10;
  95. } DRVTBL_S;
  96. //c-begin
  97. #define TABLE_LEN sizeof(DRVTBL_S)
  98. //c-end
  99.  
  100. typedef struct ba_ss {
  101.         BYTE    normal;
  102.         BYTE    intensify;
  103. } BA_S;
  104.  
  105. typedef struct lss_ss {
  106.         BYTE    ls_reset;
  107.         BYTE    ls_mode;
  108.         BYTE    ls_bank;
  109. } LSS_S;
  110.  
  111. typedef struct lgs_ss {
  112.         BYTE    set_reset;
  113.         BYTE    enable_sr;
  114.         BYTE    color_compare;
  115.         BYTE    data_rotation;
  116.         BYTE    read_map_select;
  117.         BYTE    lg_mode;
  118.         BYTE    complement;
  119.         BYTE    color_dont_care;
  120.         BYTE    bit_mask_low;
  121.         BYTE    bit_mask_high;
  122.         BYTE    map_mask;
  123.         BYTE    lg_command;
  124.         BYTE    set_reset_2;
  125. } LGS_S;
  126.  
  127. typedef struct bios_version_blk_ss {
  128.         WORD    bios_version;
  129. } BIOS_VERSION_BLK_S;
  130. //c-begin
  131. #define bios_version_blk_len sizeof(BIOS_VERSION_BLK_S)
  132. //c-end
  133.  
  134. typedef struct communication_blk_ss {
  135.         BYTE    cb_byte0;
  136.         BYTE    sdlc_bca_num;
  137.         BYTE    tca_num;
  138. } COMMUNICATION_BLK_S;
  139.  
  140. typedef struct asyncronus_ss {
  141.         BYTE    ab_byte0;
  142. } ASYNCRONUS_BLK_S;
  143.  
  144. typedef struct hdisk_blk_ss {
  145.         BYTE    int_hdisk_num;
  146.         BYTE    ext_hdisk_num;
  147. } HDISK_BLK_S;
  148.  
  149. typedef struct keyboard_blk_ss {
  150.         BYTE    kbdid_1st;
  151.         BYTE    kbdid_2nd;
  152.         BYTE    kbdid_3rd;
  153.         BYTE    kbd_character;
  154.         WORD    table_offset;
  155.         WORD    table_segment;
  156. } KEYBOARD_BLK_S;
  157.  
  158. typedef struct diskette_blk_ss {
  159.         BYTE    diskette_num;
  160. } DISKETTE_BLK_S;
  161.  
  162. typedef struct printer_blk_ss {
  163.         BYTE    printer_num;
  164.         BYTE    dot_size;
  165.         BYTE    color_num;
  166.         BYTE    prn_character;
  167.         WORD    prn_type;
  168. } PRINTER_BLK_S;
  169.  
  170. typedef struct timer_blk_ss {
  171.         BYTE    tb_byte0;
  172. } TIMER_BLK_S;
  173.  
  174. typedef struct video_blk_ss {
  175.         BYTE    flags1;
  176.         BYTE    flags2;
  177.         WORD    regen_offset;
  178.         WORD    regen_segment;
  179.         WORD    regen_length;
  180.         WORD    shadow_offset;
  181.         WORD    shadow_segment;
  182.         WORD    video_page_info_offset;
  183.         WORD    video_page_info_segment;
  184.         WORD    video_mode_info_offset;
  185.         WORD    video_mode_info_segment;
  186. } VIDEO_BLK_S;
  187.  
  188. typedef struct register_shadow_ss {
  189.         WORD    word0;
  190.         WORD    ls_offset;
  191.         WORD    ls_segment;
  192.         WORD    lg_offset;
  193.         WORD    lg_segment;
  194. } REGISTER_SHADOW_S;
  195.  
  196. typedef struct cpu_blk_ss {
  197.         BYTE    cpu;
  198. } CPU_BLK_S;
  199.  
  200. typedef struct jis_mode_blk_ss {
  201.         BYTE    jis_mode;
  202. } JIS_MODE_BLK_S;
  203.  
  204. typedef struct extention_blk_ss {
  205.         WORD    ext[16];
  206. } EXTENTION_BLK_S;
  207.  
  208. typedef struct kbd_inf_blk_ss {
  209.         BYTE    rk_flag;
  210.         DWORD   roman_adr;
  211.         DWORD   kanakan_adr;
  212.         DWORD   dict_top_adr;
  213.         DWORD   mast_top_adr;
  214.         DWORD   c_top_adr;
  215.         DWORD   kmode_adr;
  216.         DWORD   hptr_adr;
  217.         DWORD   apkanji_adr;
  218.         DWORD   nodisp_mode_adr;
  219.         DWORD   phrase_conv_inf_adr;
  220. } KBD_INF_BLK_S;
  221.  
  222. typedef struct video_inf_blk_ss {
  223.         DWORD   acorn_mode_adr;
  224.         DWORD   vib_common_disp_adr;
  225. } VIDEO_INF_BLK_S;
  226.  
  227. typedef struct prt_inf_blk_ss {
  228.         DWORD   print_id_adr;
  229.         DWORD   must_release_adr;
  230.         DWORD   monitor_flag_adr;
  231.         DWORD   dma_check_flag_adr;
  232.         DWORD   reset_ecc_adr;
  233.         DWORD   ps_high_low_adr;
  234. } PRT_INF_BLK_S;
  235.  
  236. typedef struct common_inf_blk_ss {
  237.         DWORD   beep_adr;
  238.         DWORD   service_adr;
  239.         DWORD   dict_loader_adr;
  240.         DWORD   click_click_adr;
  241.         DWORD   soft_kankan_adr;
  242.         DWORD   delay_adr;
  243.         DWORD   file_loader_adr;
  244.         DWORD   cib_common_disp_adr;
  245. } COMMON_INF_BLK_S;
  246.  
  247. typedef struct d_d_inf_blk_ss {
  248.         DWORD   ps_flag_adr;
  249.         WORD    hdd_start;
  250.         WORD    hdd_end;
  251.         WORD    hdd_start_block;
  252.         WORD    hdd_end_block;
  253.         WORD    hdd_start_cyl;
  254.         WORD    hdd_end_cyl;
  255.         WORD    mf35_0CH_adr;
  256.         WORD    mf35_13H_adr;
  257. } D_D_INF_BLK_S;
  258.  
  259. typedef struct bank_inf_blk_ss {
  260.         BYTE    bank0[3];
  261.         BYTE    bank1[3];
  262.         BYTE    bank2[3];
  263. } BANK_INF_BLK_S;
  264.  
  265. typedef struct sear_inf_blk_ss {
  266.         BYTE    sib_dummy;
  267. } SEAR_INF_BLK_S;
  268.  
  269. typedef struct mem_ctl_blk_ss {
  270.         BYTE    mcb_dummy;
  271. } MEM_CTL_BLK_S;
  272.  
  273. typedef struct video_page_information_ss {                                 //j-ys0914
  274.         WORD    vpinfo_nb;                                           //j-ys0914
  275.         WORD    vpinfo_number_of_pages;                              //j-ys0914
  276.         BYTE    vpinfo_page_allocation_table[8];                     //j-ys0914
  277. } VIDEO_PAGE_INFORMATION_S;                                                               //j-ys0914
  278.  
  279. typedef struct videomode_info_ss {                                        //j-ys0914
  280.         WORD    vminfo_nb;                                           //j-ys0914
  281.         BYTE    vminfo_video_mode;                                   //j-ys0914
  282.         BYTE    vminfo_number_of_planes;                             //j-ys0914
  283.         BYTE    vminfo_foreground_color;                             //j-ys0914
  284.         BYTE    vminfo_background_color;                             //j-ys0914
  285.         BYTE    vminfo_CPU_page;                                     //j-ys0914
  286.         BYTE    vminfo_CRT_page;                                     //j-ys0914
  287. } VIDEOMODE_INFO_S;                                                               //j-ys0914
  288.  
  289. typedef struct biosjdata_s {
  290.  
  291.     /* BIOS-J Data Area Length */
  292.     WORD    biosjlen;
  293.  
  294.     /* Keyboard Area */
  295.     WORD    fdabuffer_head;
  296.     WORD    fdabuffer_tail;
  297.     WORD    fdabuffer_len;
  298.     WORD    fdabuffer_start;
  299.     WORD    fdabuffer_end;
  300.     BYTE    fdabios_break;
  301.     WORD    fdareset_flag;
  302.     BYTE    fdakbd_id[3];
  303.     BYTE    fdajkb_flag;
  304.     BYTE    fdawork;
  305.     BYTE    fdabeep_status;
  306.     WORD    fdabeep_freq;
  307.  
  308.     /* Diskette Area */
  309.     BYTE    seek_status;
  310.     BYTE    diskette_status;
  311.     BYTE    nec_status[7];
  312.     BYTE    work_status;
  313.     BYTE    nec_copy[7];
  314.     BYTE    dvt0[4];
  315.     WORD    motor_status;
  316.     BYTE    chip_status;
  317.     BYTE    adap_status;
  318.     BYTE    int_status;
  319.     BYTE    motor_flag;
  320.     BYTE    status_status;
  321.  
  322.     /* Disk Area */
  323.     BYTE    ipldrv;
  324.     BYTE    mode;
  325.     WORD    flag_tati;
  326.     DRVTBL_S drv0_table;
  327.     DRVTBL_S drv1_table;
  328.  
  329.     /* Video Area */
  330.     BYTE    crt_mode;
  331.     WORD    crt_cols;
  332.     WORD    crt_len;
  333.     BYTE    dmy_crt_reg[16];
  334.     BYTE    dmy_cmd_reg;
  335.     BYTE    dmy_col_reg;
  336.     BA_S base_attr;
  337.  
  338.     /* Video Area (Cursor Position) */
  339.     WORD    cursor_posn;
  340.     WORD    grph_posn;
  341.     WORD    cursor_mode;
  342.     WORD    gr_crs_mode;
  343.     WORD    save_ccp;
  344.     WORD    save_wrt;
  345.     BYTE    tty_char_save;
  346. #define TAB_LENGTH 13
  347.     WORD    alt_posn;
  348.     WORD    alt_grph_posn;
  349.     WORD    alt_mode;
  350.     WORD    alt_gr_crs;
  351.     WORD    alt_save_ccp;
  352.     WORD    alt_save_wrt;
  353.     BYTE    alt_tty_save;
  354.     WORD    cpp1;
  355.     WORD    cpp2;
  356.     WORD    cpp3;
  357.     WORD    cpp4;
  358.     WORD    cpp5;
  359.     WORD    cpp6;
  360.     WORD    cpp7;
  361.     WORD    cpp8;
  362.     BYTE    current_page;
  363.     WORD    addr_6845;
  364.     BYTE    crt_mode_set;
  365.     BYTE    crt_palette;
  366.  
  367.     /* Video Area (EGA) */
  368.     BYTE    rows;
  369.     WORD    bytesperchar;
  370.     BYTE    ega_mode;
  371.     BYTE    xswitch;
  372.  
  373.     /* Phoenix Area (LS_PORT) */
  374.     LSS_S;
  375.  
  376.     /* Phoenix Area (LG_PORT) */
  377.     LGS_S lg_save;
  378.  
  379.     /* Timer Area */
  380.     WORD    timer_low;
  381.     WORD    timer_high;
  382.  
  383.     /* Keyboard Buffer Area */
  384.     WORD    fdakb_buffer[240];
  385. //c-begin
  386. #define FDAKB_BUFFER_LEN sizeof(fdakb_buffer)
  387. //c-end
  388.     BYTE    apl_flag;
  389.  
  390.     /* Printer Area */
  391.     BYTE    vlpt_data[40];
  392.  
  393.     /* Dummy INT 18H (CDH, 18H) */
  394.     BYTE    int18code[40];
  395.  
  396.     /* INT 1FH Area */
  397.     BIOS_VERSION_BLK_S bios_version_blk;
  398.  
  399.     COMMUNICATION_BLK_S communication_blk;
  400.  
  401.     ASYNCRONUS_BLK_S asyncronus_blk;
  402.  
  403.     HDISK_BLK_S hdisk_blk;
  404.  
  405.     KEYBOARD_BLK_S keyboard_blk;
  406.  
  407.     DISKETTE_BLK_S diskette_blk;
  408.  
  409.     PRINTER_BLK_S printer_blk;
  410.  
  411.     TIMER_BLK_S timer_blk;
  412.  
  413.     VIDEO_BLK_S video_blk;
  414.  
  415.     REGISTER_SHADOW_S register_shadow;
  416.  
  417.     CPU_BLK_S cpu_blk;
  418.  
  419.     JIS_MODE_BLK_S jis_mode_blk;
  420.  
  421.     EXTENTION_BLK_S extention_blk;
  422.  
  423.     KBD_INF_BLK_S kbd_inf_blk;
  424.  
  425.     VIDEO_INF_BLK_S video_inf_blk;
  426.  
  427.     PRT_INF_BLK_S prt_inf_blk;
  428.  
  429.     COMMON_INF_BLK_S common_inf_blk;
  430.  
  431.     D_D_INF_BLK_S d_d_inf_blk;
  432.  
  433.     BANK_INF_BLK_S bank_inf_blk;
  434.  
  435.     SEAR_INF_BLK_S sear_inf_blk;
  436.  
  437.     MEM_CTL_BLK_S mem_ctl_blk;
  438.  
  439.     VIDEO_PAGE_INFORMATION_S videopageinfo;                   //j-ys0914
  440.  
  441.     VIDEOMODE_INFO_S videomodeinfo;                           //j-ys0914
  442.  
  443. //c-begin
  444. BYTE    b0,b1,b2,b3,b4,b5;      //test test test
  445. //c-end
  446.  
  447. } BIOSJDATA;
  448.  
  449. typedef BIOSJDATA *PBIOSJDATA;
  450.  
  451. //J-YF004 08/27/91 DOS/V mode support
  452. //J-YF005 10/15/91     Fix (EBIOS length field is BYTE)
  453.