home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 21 / CD_ASCQ_21_040595.iso / dos / prg / c / xlib612 / docs / amipro / xlibref.sam
INI File  |  1993-10-28  |  206KB  |  8,469 lines

  1. [ver]
  2.     4
  3. [sty]
  4.     _DEFAULT.STY
  5. [files]
  6. [charset]
  7.     82
  8.     ANSI (Windows, IBM CP 1252)
  9. [revisions]
  10.     0
  11. [toc]
  12.     Title
  13.     Subhead
  14.     Table Text
  15.     .
  16.     .
  17.     .
  18.     63
  19. [master]
  20.     
  21.     
  22.     0
  23.     0
  24.     0
  25. [prn]
  26.     IBM Graphics
  27. [port]
  28.     LPT1:
  29. [lang]
  30.     1
  31. [desc]
  32.     
  33.     
  34.     
  35.     
  36.     
  37.     751837878
  38.     22
  39.     750467900
  40.     3561
  41.     96
  42.     0
  43.     0
  44.     0
  45.     0
  46.     
  47.     
  48.     
  49.     
  50.     
  51.     
  52.     1
  53. [fopts]
  54.     0
  55.     1
  56.     0
  57.     0
  58. [lnopts]
  59.     2
  60.     Body Text
  61.     1
  62. [docopts]
  63.     5
  64.     2
  65. [GramStyle]
  66.     
  67. [ParaNum]
  68.     1
  69. [tag]
  70.     TOCPG1
  71.     0
  72.     [fnt]
  73.         Times New Roman
  74.         240
  75.         0
  76.         49155
  77.     [algn]
  78.         2
  79.         1
  80.         0
  81.         0
  82.         0
  83.     [spc]
  84.         1
  85.         273
  86.         1
  87.         0
  88.         0
  89.         1
  90.         100
  91.     [brk]
  92.         4
  93.     [line]
  94.         0
  95.         0
  96.         1
  97.         0
  98.         1
  99.         1
  100.         1
  101.         10
  102.         10
  103.         1
  104.     [spec]
  105.         0
  106.         2
  107.         
  108.         0
  109.         1
  110.         1
  111.         0
  112.         0
  113.         0
  114.         0
  115.     [nfmt]
  116.         272
  117.         1
  118.         2
  119.         .
  120.         ,
  121.         $
  122.     TOCPG1
  123.     0
  124.     0
  125. [tag]
  126.     TOC2
  127.     0
  128.     [fnt]
  129.         Times New Roman
  130.         240
  131.         0
  132.         49152
  133.     [algn]
  134.         1
  135.         1
  136.         0
  137.         360
  138.         720
  139.     [spc]
  140.         1
  141.         273
  142.         1
  143.         0
  144.         0
  145.         1
  146.         100
  147.     [brk]
  148.         4
  149.     [line]
  150.         0
  151.         0
  152.         1
  153.         0
  154.         1
  155.         1
  156.         1
  157.         10
  158.         10
  159.         1
  160.     [spec]
  161.         0
  162.         0
  163.         
  164.         0
  165.         1
  166.         1
  167.         0
  168.         0
  169.         0
  170.         0
  171.     [nfmt]
  172.         280
  173.         1
  174.         2
  175.         .
  176.         ,
  177.         $
  178.     TOC2
  179.     0
  180.     0
  181. [tag]
  182.     TOCPG2
  183.     0
  184.     [fnt]
  185.         Times New Roman
  186.         240
  187.         0
  188.         49152
  189.     [algn]
  190.         2
  191.         1
  192.         0
  193.         0
  194.         0
  195.     [spc]
  196.         1
  197.         273
  198.         1
  199.         0
  200.         0
  201.         1
  202.         100
  203.     [brk]
  204.         4
  205.     [line]
  206.         0
  207.         0
  208.         1
  209.         0
  210.         1
  211.         1
  212.         1
  213.         10
  214.         10
  215.         1
  216.     [spec]
  217.         0
  218.         0
  219.         
  220.         0
  221.         1
  222.         1
  223.         0
  224.         0
  225.         0
  226.         0
  227.     [nfmt]
  228.         280
  229.         1
  230.         2
  231.         .
  232.         ,
  233.         $
  234.     TOCPG2
  235.     0
  236.     0
  237. [tag]
  238.     TOC3
  239.     0
  240.     [fnt]
  241.         Times New Roman
  242.         240
  243.         0
  244.         49152
  245.     [algn]
  246.         1
  247.         1
  248.         0
  249.         720
  250.         1080
  251.     [spc]
  252.         1
  253.         273
  254.         1
  255.         0
  256.         0
  257.         1
  258.         100
  259.     [brk]
  260.         4
  261.     [line]
  262.         0
  263.         0
  264.         1
  265.         0
  266.         1
  267.         1
  268.         1
  269.         10
  270.         10
  271.         1
  272.     [spec]
  273.         0
  274.         0
  275.         
  276.         0
  277.         1
  278.         1
  279.         0
  280.         0
  281.         0
  282.         0
  283.     [nfmt]
  284.         280
  285.         1
  286.         2
  287.         .
  288.         ,
  289.         $
  290.     TOC3
  291.     0
  292.     0
  293. [tag]
  294.     TOCPG3
  295.     0
  296.     [fnt]
  297.         Times New Roman
  298.         240
  299.         0
  300.         49152
  301.     [algn]
  302.         2
  303.         1
  304.         0
  305.         0
  306.         0
  307.     [spc]
  308.         1
  309.         273
  310.         1
  311.         0
  312.         0
  313.         1
  314.         100
  315.     [brk]
  316.         4
  317.     [line]
  318.         0
  319.         0
  320.         1
  321.         0
  322.         1
  323.         1
  324.         1
  325.         10
  326.         10
  327.         1
  328.     [spec]
  329.         0
  330.         0
  331.         
  332.         0
  333.         1
  334.         1
  335.         0
  336.         0
  337.         0
  338.         0
  339.     [nfmt]
  340.         280
  341.         1
  342.         2
  343.         .
  344.         ,
  345.         $
  346.     TOCPG3
  347.     0
  348.     0
  349. [tag]
  350.     TOC4
  351.     0
  352.     [fnt]
  353.         Times New Roman
  354.         240
  355.         0
  356.         49152
  357.     [algn]
  358.         1
  359.         1
  360.         0
  361.         1080
  362.         1440
  363.     [spc]
  364.         1
  365.         273
  366.         1
  367.         0
  368.         0
  369.         1
  370.         100
  371.     [brk]
  372.         4
  373.     [line]
  374.         0
  375.         0
  376.         1
  377.         0
  378.         1
  379.         1
  380.         1
  381.         10
  382.         10
  383.         1
  384.     [spec]
  385.         0
  386.         0
  387.         
  388.         0
  389.         1
  390.         1
  391.         0
  392.         0
  393.         0
  394.         0
  395.     [nfmt]
  396.         280
  397.         1
  398.         2
  399.         .
  400.         ,
  401.         $
  402.     TOC4
  403.     0
  404.     0
  405. [tag]
  406.     TOCPG4
  407.     0
  408.     [fnt]
  409.         Times New Roman
  410.         240
  411.         0
  412.         49152
  413.     [algn]
  414.         2
  415.         1
  416.         0
  417.         0
  418.         0
  419.     [spc]
  420.         1
  421.         273
  422.         1
  423.         0
  424.         0
  425.         1
  426.         100
  427.     [brk]
  428.         4
  429.     [line]
  430.         0
  431.         0
  432.         1
  433.         0
  434.         1
  435.         1
  436.         1
  437.         10
  438.         10
  439.         1
  440.     [spec]
  441.         0
  442.         0
  443.         
  444.         0
  445.         1
  446.         1
  447.         0
  448.         0
  449.         0
  450.         0
  451.     [nfmt]
  452.         280
  453.         1
  454.         2
  455.         .
  456.         ,
  457.         $
  458.     TOCPG4
  459.     0
  460.     0
  461. [tag]
  462.     TOC5
  463.     0
  464.     [fnt]
  465.         Times New Roman
  466.         240
  467.         0
  468.         49152
  469.     [algn]
  470.         1
  471.         1
  472.         0
  473.         1440
  474.         1800
  475.     [spc]
  476.         1
  477.         273
  478.         1
  479.         0
  480.         0
  481.         1
  482.         100
  483.     [brk]
  484.         4
  485.     [line]
  486.         0
  487.         0
  488.         1
  489.         0
  490.         1
  491.         1
  492.         1
  493.         10
  494.         10
  495.         1
  496.     [spec]
  497.         0
  498.         0
  499.         
  500.         0
  501.         1
  502.         1
  503.         0
  504.         0
  505.         0
  506.         0
  507.     [nfmt]
  508.         280
  509.         1
  510.         2
  511.         .
  512.         ,
  513.         $
  514.     TOC5
  515.     0
  516.     0
  517. [tag]
  518.     TOCPG5
  519.     0
  520.     [fnt]
  521.         Times New Roman
  522.         240
  523.         0
  524.         49152
  525.     [algn]
  526.         2
  527.         1
  528.         0
  529.         0
  530.         0
  531.     [spc]
  532.         1
  533.         273
  534.         1
  535.         0
  536.         0
  537.         1
  538.         100
  539.     [brk]
  540.         4
  541.     [line]
  542.         0
  543.         0
  544.         1
  545.         0
  546.         1
  547.         1
  548.         1
  549.         10
  550.         10
  551.         1
  552.     [spec]
  553.         0
  554.         0
  555.         
  556.         0
  557.         1
  558.         1
  559.         0
  560.         0
  561.         0
  562.         0
  563.     [nfmt]
  564.         280
  565.         1
  566.         2
  567.         .
  568.         ,
  569.         $
  570.     TOCPG5
  571.     0
  572.     0
  573. [tag]
  574.     TOC6
  575.     0
  576.     [fnt]
  577.         Times New Roman
  578.         240
  579.         0
  580.         49152
  581.     [algn]
  582.         1
  583.         1
  584.         0
  585.         1800
  586.         2160
  587.     [spc]
  588.         1
  589.         273
  590.         1
  591.         0
  592.         0
  593.         1
  594.         100
  595.     [brk]
  596.         4
  597.     [line]
  598.         0
  599.         0
  600.         1
  601.         0
  602.         1
  603.         1
  604.         1
  605.         10
  606.         10
  607.         1
  608.     [spec]
  609.         0
  610.         0
  611.         
  612.         0
  613.         1
  614.         1
  615.         0
  616.         0
  617.         0
  618.         0
  619.     [nfmt]
  620.         280
  621.         1
  622.         2
  623.         .
  624.         ,
  625.         $
  626.     TOC6
  627.     0
  628.     0
  629. [tag]
  630.     TOCPG6
  631.     0
  632.     [fnt]
  633.         Times New Roman
  634.         240
  635.         0
  636.         49152
  637.     [algn]
  638.         2
  639.         1
  640.         0
  641.         0
  642.         0
  643.     [spc]
  644.         1
  645.         273
  646.         1
  647.         0
  648.         0
  649.         1
  650.         100
  651.     [brk]
  652.         4
  653.     [line]
  654.         0
  655.         0
  656.         1
  657.         0
  658.         1
  659.         1
  660.         1
  661.         10
  662.         10
  663.         1
  664.     [spec]
  665.         0
  666.         0
  667.         
  668.         0
  669.         1
  670.         1
  671.         0
  672.         0
  673.         0
  674.         0
  675.     [nfmt]
  676.         280
  677.         1
  678.         2
  679.         .
  680.         ,
  681.         $
  682.     TOCPG6
  683.     0
  684.     0
  685. [tag]
  686.     TOC7
  687.     0
  688.     [fnt]
  689.         Times New Roman
  690.         240
  691.         0
  692.         49152
  693.     [algn]
  694.         1
  695.         1
  696.         0
  697.         2160
  698.         2520
  699.     [spc]
  700.         1
  701.         273
  702.         1
  703.         0
  704.         0
  705.         1
  706.         100
  707.     [brk]
  708.         4
  709.     [line]
  710.         0
  711.         0
  712.         1
  713.         0
  714.         1
  715.         1
  716.         1
  717.         10
  718.         10
  719.         1
  720.     [spec]
  721.         0
  722.         0
  723.         
  724.         0
  725.         1
  726.         1
  727.         0
  728.         0
  729.         0
  730.         0
  731.     [nfmt]
  732.         280
  733.         1
  734.         2
  735.         .
  736.         ,
  737.         $
  738.     TOC7
  739.     0
  740.     0
  741. [tag]
  742.     TOCPG7
  743.     0
  744.     [fnt]
  745.         Times New Roman
  746.         240
  747.         0
  748.         49152
  749.     [algn]
  750.         2
  751.         1
  752.         0
  753.         0
  754.         0
  755.     [spc]
  756.         1
  757.         273
  758.         1
  759.         0
  760.         0
  761.         1
  762.         100
  763.     [brk]
  764.         4
  765.     [line]
  766.         0
  767.         0
  768.         1
  769.         0
  770.         1
  771.         1
  772.         1
  773.         10
  774.         10
  775.         1
  776.     [spec]
  777.         0
  778.         0
  779.         
  780.         0
  781.         1
  782.         1
  783.         0
  784.         0
  785.         0
  786.         0
  787.     [nfmt]
  788.         280
  789.         1
  790.         2
  791.         .
  792.         ,
  793.         $
  794.     TOCPG7
  795.     0
  796.     0
  797. [tag]
  798.     TOC8
  799.     0
  800.     [fnt]
  801.         Times New Roman
  802.         240
  803.         0
  804.         49152
  805.     [algn]
  806.         1
  807.         1
  808.         0
  809.         2520
  810.         2880
  811.     [spc]
  812.         1
  813.         273
  814.         1
  815.         0
  816.         0
  817.         1
  818.         100
  819.     [brk]
  820.         4
  821.     [line]
  822.         0
  823.         0
  824.         1
  825.         0
  826.         1
  827.         1
  828.         1
  829.         10
  830.         10
  831.         1
  832.     [spec]
  833.         0
  834.         0
  835.         
  836.         0
  837.         1
  838.         1
  839.         0
  840.         0
  841.         0
  842.         0
  843.     [nfmt]
  844.         280
  845.         1
  846.         2
  847.         .
  848.         ,
  849.         $
  850.     TOC8
  851.     0
  852.     0
  853. [tag]
  854.     TOCPG8
  855.     0
  856.     [fnt]
  857.         Times New Roman
  858.         240
  859.         0
  860.         49152
  861.     [algn]
  862.         2
  863.         1
  864.         0
  865.         0
  866.         0
  867.     [spc]
  868.         1
  869.         273
  870.         1
  871.         0
  872.         0
  873.         1
  874.         100
  875.     [brk]
  876.         4
  877.     [line]
  878.         0
  879.         0
  880.         1
  881.         0
  882.         1
  883.         1
  884.         1
  885.         10
  886.         10
  887.         1
  888.     [spec]
  889.         0
  890.         0
  891.         
  892.         0
  893.         1
  894.         1
  895.         0
  896.         0
  897.         0
  898.         0
  899.     [nfmt]
  900.         280
  901.         1
  902.         2
  903.         .
  904.         ,
  905.         $
  906.     TOCPG8
  907.     0
  908.     0
  909. [tag]
  910.     TOC9
  911.     0
  912.     [fnt]
  913.         Times New Roman
  914.         240
  915.         0
  916.         49152
  917.     [algn]
  918.         1
  919.         1
  920.         0
  921.         2880
  922.         3240
  923.     [spc]
  924.         1
  925.         273
  926.         1
  927.         0
  928.         0
  929.         1
  930.         100
  931.     [brk]
  932.         4
  933.     [line]
  934.         0
  935.         0
  936.         1
  937.         0
  938.         1
  939.         1
  940.         1
  941.         10
  942.         10
  943.         1
  944.     [spec]
  945.         0
  946.         0
  947.         
  948.         0
  949.         1
  950.         1
  951.         0
  952.         0
  953.         0
  954.         0
  955.     [nfmt]
  956.         280
  957.         1
  958.         2
  959.         .
  960.         ,
  961.         $
  962.     TOC9
  963.     0
  964.     0
  965. [tag]
  966.     TOCPG9
  967.     0
  968.     [fnt]
  969.         Times New Roman
  970.         240
  971.         0
  972.         49152
  973.     [algn]
  974.         2
  975.         1
  976.         0
  977.         0
  978.         0
  979.     [spc]
  980.         1
  981.         273
  982.         1
  983.         0
  984.         0
  985.         1
  986.         100
  987.     [brk]
  988.         4
  989.     [line]
  990.         0
  991.         0
  992.         1
  993.         0
  994.         1
  995.         1
  996.         1
  997.         10
  998.         10
  999.         1
  1000.     [spec]
  1001.         0
  1002.         0
  1003.         
  1004.         0
  1005.         1
  1006.         1
  1007.         0
  1008.         0
  1009.         0
  1010.         0
  1011.     [nfmt]
  1012.         280
  1013.         1
  1014.         2
  1015.         .
  1016.         ,
  1017.         $
  1018.     TOCPG9
  1019.     0
  1020.     0
  1021. [tag]
  1022.     Table Text
  1023.     0
  1024.     [fnt]
  1025.         Times New Roman
  1026.         240
  1027.         0
  1028.         49152
  1029.     [algn]
  1030.         1
  1031.         1
  1032.         0
  1033.         0
  1034.         0
  1035.     [spc]
  1036.         33
  1037.         273
  1038.         1
  1039.         0
  1040.         0
  1041.         1
  1042.         100
  1043.     [brk]
  1044.         4
  1045.     [line]
  1046.         8
  1047.         0
  1048.         1
  1049.         0
  1050.         1
  1051.         1
  1052.         1
  1053.         10
  1054.         10
  1055.         1
  1056.     [spec]
  1057.         0
  1058.         0
  1059.         
  1060.         0
  1061.         1
  1062.         1
  1063.         0
  1064.         0
  1065.         0
  1066.         0
  1067.     [nfmt]
  1068.         280
  1069.         1
  1070.         2
  1071.         .
  1072.         ,
  1073.         $
  1074.     Table Text
  1075.     0
  1076.     0
  1077. [frm]
  1078.     1
  1079.     68681924
  1080.     1440
  1081.     1440
  1082.     10800
  1083.     8179
  1084.     0
  1085.     1
  1086.     1
  1087.     1 0 0 0 0 0 0
  1088.     0
  1089.     16777215
  1090.     3
  1091.     0
  1092.     0
  1093.     0 29440
  1094.     [frmlay]
  1095.         1726
  1096.         9360
  1097.         1
  1098.         0
  1099.         0
  1100.         1
  1101.         1440
  1102.         0
  1103.         0
  1104.         2
  1105.         0
  1106.         1
  1107.         0
  1108.         2
  1109.         1
  1110.         1584
  1111.         10656
  1112.         0
  1113.     [tbl]
  1114.          222 2 286 86 4569 86 1 43 43
  1115.         [h]
  1116.              0 286 86 2 0 2 0
  1117.              1 286 86 2 0 2 0
  1118.              2 286 86 2 0 2 0
  1119.              3 286 86 2 0 2 0
  1120.              4 286 86 2 0 2 0
  1121.              5 286 86 2 0 2 0
  1122.              6 286 86 2 0 2 0
  1123.              7 286 86 2 0 2 0
  1124.              8 286 86 2 0 2 0
  1125.              9 286 86 2 0 2 0
  1126.              10 286 86 2 0 2 0
  1127.              11 286 86 2 0 2 0
  1128.              12 286 86 2 0 2 0
  1129.              13 286 86 2 0 2 0
  1130.              14 286 86 2 0 2 0
  1131.              15 286 86 2 0 2 0
  1132.              16 286 86 2 0 2 0
  1133.              17 286 86 2 0 2 0
  1134.              18 286 86 2 0 2 0
  1135.              19 286 86 2 0 2 0
  1136.              20 286 86 2 0 2 0
  1137.              21 286 86 2 0 2 0
  1138.              22 286 86 2 0 2 0
  1139.              23 286 86 2 0 2 0
  1140.              24 286 86 2 0 2 0
  1141.              25 286 86 2 0 2 0
  1142.              26 286 86 2 0 2 0
  1143.              27 286 86 2 0 2 0
  1144.              28 286 86 2 0 2 0
  1145.              29 286 86 2 0 2 0
  1146.              30 286 86 2 0 2 0
  1147.              31 286 86 2 0 2 0
  1148.              32 286 86 2 0 2 0
  1149.              33 286 86 2 0 2 0
  1150.              34 286 86 2 0 2 0
  1151.              35 286 86 2 0 2 0
  1152.              36 286 86 2 0 2 0
  1153.              37 286 86 2 0 2 0
  1154.              38 286 86 2 0 2 0
  1155.              39 286 86 2 0 2 0
  1156.              40 286 86 2 0 2 0
  1157.              41 286 86 2 0 2 0
  1158.              42 286 86 2 0 2 0
  1159.              43 286 86 2 0 2 0
  1160.              44 286 86 2 0 2 0
  1161.              45 286 86 2 0 2 0
  1162.              46 286 86 2 0 2 0
  1163.              47 286 86 2 0 2 0
  1164.              48 286 86 2 0 2 0
  1165.              49 286 86 2 0 2 0
  1166.              50 286 86 2 0 2 0
  1167.              51 286 86 2 0 2 0
  1168.              52 286 86 2 0 2 0
  1169.              53 286 86 2 0 2 0
  1170.              54 286 86 2 0 2 0
  1171.              55 286 86 2 0 2 0
  1172.              56 286 86 2 0 2 0
  1173.              57 286 86 2 0 2 0
  1174.              58 286 86 2 0 2 0
  1175.              59 286 86 2 0 2 0
  1176.              60 286 86 2 0 2 0
  1177.              61 286 86 2 0 2 0
  1178.              62 286 86 2 0 2 0
  1179.              63 286 86 2 0 2 0
  1180.              64 286 86 2 0 2 0
  1181.              65 286 86 2 0 2 0
  1182.              66 286 86 2 0 2 0
  1183.              67 286 86 2 0 2 0
  1184.              68 286 86 2 0 2 0
  1185.              69 286 86 2 0 2 0
  1186.              70 286 86 2 0 2 0
  1187.              71 286 86 2 0 2 0
  1188.              72 286 86 2 0 2 0
  1189.              73 286 86 2 0 2 0
  1190.              74 286 86 2 0 2 0
  1191.              75 286 86 2 0 2 0
  1192.              76 286 86 2 0 2 0
  1193.              77 286 86 2 0 2 0
  1194.              78 286 86 2 0 2 0
  1195.              79 286 86 2 0 2 0
  1196.              80 286 86 2 0 2 0
  1197.              81 286 86 2 0 2 0
  1198.              82 286 86 2 0 2 0
  1199.              83 286 86 2 0 2 0
  1200.              84 286 86 2 0 2 0
  1201.              85 286 86 2 0 2 0
  1202.              86 286 86 2 0 2 0
  1203.              87 286 86 2 0 2 0
  1204.              88 286 86 2 0 2 0
  1205.              89 286 86 2 0 2 0
  1206.              90 286 86 2 0 2 0
  1207.              91 286 86 2 0 2 0
  1208.              92 286 86 2 0 2 0
  1209.              93 286 86 2 0 2 0
  1210.              94 286 86 2 0 2 0
  1211.              95 286 86 2 0 2 0
  1212.              96 286 86 2 0 2 0
  1213.              97 286 86 2 0 2 0
  1214.              98 286 86 2 0 2 0
  1215.              99 286 86 2 0 2 0
  1216.              100 286 86 2 0 2 0
  1217.              101 286 86 2 0 2 0
  1218.              102 286 86 2 0 2 0
  1219.              103 286 86 2 0 2 0
  1220.              104 286 86 2 0 2 0
  1221.              105 286 86 2 0 2 0
  1222.              106 286 86 2 0 2 0
  1223.              107 286 86 2 0 2 0
  1224.              108 286 86 2 0 2 0
  1225.              109 286 86 2 0 2 0
  1226.              110 286 86 2 0 2 0
  1227.              111 286 86 2 0 2 0
  1228.              112 286 86 2 0 2 0
  1229.              113 286 86 2 0 2 0
  1230.              114 286 86 2 0 2 0
  1231.              115 286 86 2 0 2 0
  1232.              116 286 86 2 0 2 0
  1233.              117 286 86 2 0 2 0
  1234.              118 286 86 2 0 2 0
  1235.              119 286 86 2 0 2 0
  1236.              120 286 86 2 0 2 0
  1237.              121 286 86 2 0 2 0
  1238.              122 286 86 2 0 2 0
  1239.              123 286 86 2 0 2 0
  1240.              124 286 86 2 0 2 0
  1241.              125 286 86 2 0 2 0
  1242.              126 286 86 2 0 2 0
  1243.              127 286 86 2 0 2 0
  1244.              128 286 86 2 0 2 0
  1245.              129 286 86 2 0 2 0
  1246.              130 286 86 2 0 2 0
  1247.              131 286 86 2 0 2 0
  1248.              132 286 86 2 0 2 0
  1249.              133 286 86 2 0 2 0
  1250.              134 286 86 2 0 2 0
  1251.              135 286 86 2 0 2 0
  1252.              136 286 86 2 0 2 0
  1253.              137 286 86 2 0 2 0
  1254.              138 286 86 2 0 2 0
  1255.              139 286 86 2 0 2 0
  1256.              140 286 86 2 0 2 0
  1257.              141 286 86 2 0 2 0
  1258.              142 286 86 2 0 2 0
  1259.              143 286 86 2 0 2 0
  1260.              144 286 86 2 0 2 0
  1261.              145 286 86 2 0 2 0
  1262.              146 286 86 2 0 2 0
  1263.              147 286 86 2 0 2 0
  1264.              148 286 86 2 0 2 0
  1265.              149 286 86 2 0 2 0
  1266.              150 286 86 2 0 2 0
  1267.              151 286 86 2 0 2 0
  1268.              152 286 86 2 0 2 0
  1269.              153 286 86 2 0 2 0
  1270.              154 286 86 2 0 2 0
  1271.              155 286 86 2 0 2 0
  1272.              156 286 86 2 0 2 0
  1273.              157 286 86 2 0 2 0
  1274.              158 286 86 2 0 2 0
  1275.              159 286 86 2 0 2 0
  1276.              160 286 86 2 0 2 0
  1277.              161 286 86 2 0 2 0
  1278.              162 286 86 2 0 2 0
  1279.              163 286 86 2 0 2 0
  1280.              164 286 86 2 0 2 0
  1281.              165 286 86 2 0 2 0
  1282.              166 286 86 2 0 2 0
  1283.              167 286 86 2 0 2 0
  1284.              168 286 86 2 0 2 0
  1285.              169 286 86 2 0 2 0
  1286.              170 286 86 2 0 2 0
  1287.              171 286 86 2 0 2 0
  1288.              172 286 86 2 0 2 0
  1289.              173 286 86 2 0 2 0
  1290.              174 286 86 2 0 2 0
  1291.              175 286 86 2 0 2 0
  1292.              176 286 86 2 0 2 0
  1293.              177 286 86 2 0 2 0
  1294.              178 286 86 2 0 2 0
  1295.              179 286 86 2 0 2 0
  1296.              180 286 86 2 0 2 0
  1297.              181 286 86 2 0 2 0
  1298.              182 286 86 2 0 2 0
  1299.              183 286 86 2 0 2 0
  1300.              184 286 86 2 0 2 0
  1301.              185 286 86 2 0 2 0
  1302.              186 286 86 2 0 2 0
  1303.              187 286 86 2 0 2 0
  1304.              188 286 86 2 0 2 0
  1305.              189 286 86 2 0 2 0
  1306.              190 286 86 2 0 2 0
  1307.              191 286 86 2 0 2 0
  1308.              192 286 86 2 0 2 0
  1309.              193 286 86 2 0 2 0
  1310.              194 286 86 2 0 2 0
  1311.              195 286 86 2 0 2 0
  1312.              196 286 86 2 0 2 0
  1313.              197 286 86 2 0 2 0
  1314.              198 286 86 2 0 2 0
  1315.              199 286 86 2 0 2 0
  1316.              200 286 86 2 0 2 0
  1317.              201 286 86 2 0 2 0
  1318.              202 286 86 2 0 2 0
  1319.              203 286 86 2 0 2 0
  1320.              204 286 86 2 0 2 0
  1321.              205 286 86 2 0 2 0
  1322.              206 286 86 2 0 2 0
  1323.              207 286 86 2 0 2 0
  1324.              208 286 86 2 0 2 0
  1325.              209 286 86 2 0 2 0
  1326.              210 286 86 2 0 2 0
  1327.              211 286 86 2 0 2 0
  1328.              212 286 86 2 0 2 0
  1329.              213 286 86 2 0 2 0
  1330.              214 286 86 2 0 2 0
  1331.              215 286 86 2 0 2 0
  1332.              216 286 86 2 0 2 0
  1333.              217 286 86 2 0 2 0
  1334.              218 286 86 2 0 2 0
  1335.              219 286 86 2 0 2 0
  1336.              220 286 86 2 0 2 0
  1337.              221 286 86 2 0 2 0
  1338.         [e]
  1339.         [w]
  1340.              0 8274 86 2 0
  1341.              1 914 86 2 0
  1342.         [e]
  1343.         [data]
  1344.              50 0 16384 0 0 0 0 1 0 0 0 0
  1345. @TOC3@x_rot_pal_raw
  1346.  
  1347. >
  1348.              50 1 16384 0 0 0 0 1 0 0 0 0
  1349. @TOCPG3@23.00
  1350.  
  1351. >
  1352.              51 0 16384 0 0 0 0 1 0 0 0 0
  1353. @TOC3@x_put_contrast_pal_struc
  1354.  
  1355. >
  1356.              51 1 16384 0 0 0 0 1 0 0 0 0
  1357. @TOCPG3@24.00
  1358.  
  1359. >
  1360.              52 0 16384 0 0 0 0 1 0 0 0 0
  1361. @TOC3@x_transpose_pal_struc
  1362.  
  1363. >
  1364.              52 1 16384 0 0 0 0 1 0 0 0 0
  1365. @TOCPG3@24.00
  1366.  
  1367. >
  1368.              53 0 16384 0 0 0 0 1 0 0 0 0
  1369. @TOC3@x_cpcontrast_pal_struc
  1370.  
  1371. >
  1372.              53 1 16384 0 0 0 0 1 0 0 0 0
  1373. @TOCPG3@24.00
  1374.  
  1375. >
  1376.              54 0 16384 0 0 0 0 1 0 0 0 0
  1377. @TOC1@MODULE XLINE
  1378.  
  1379. >
  1380.              54 1 16384 0 0 0 0 1 0 0 0 0
  1381. @TOCPG1@25.00
  1382.  
  1383. >
  1384.              55 0 16384 0 0 0 0 1 0 0 0 0
  1385. @TOC2@SOURCES
  1386.  
  1387. >
  1388.              55 1 16384 0 0 0 0 1 0 0 0 0
  1389. @TOCPG2@25.00
  1390.  
  1391. >
  1392.              56 0 16384 0 0 0 0 1 0 0 0 0
  1393. @TOC2@C HEADER FILE
  1394.  
  1395. >
  1396.              56 1 16384 0 0 0 0 1 0 0 0 0
  1397. @TOCPG2@25.00
  1398.  
  1399. >
  1400.              57 0 16384 0 0 0 0 1 0 0 0 0
  1401. @TOC2@EXPORTED FUNCTIONS
  1402.  
  1403. >
  1404.              57 1 16384 0 0 0 0 1 0 0 0 0
  1405. @TOCPG2@26.00
  1406.  
  1407. >
  1408.              58 0 16384 0 0 0 0 1 0 0 0 0
  1409. @TOC3@x_line
  1410.  
  1411. >
  1412.              58 1 16384 0 0 0 0 1 0 0 0 0
  1413. @TOCPG3@26.00
  1414.  
  1415. >
  1416.              59 0 16384 0 0 0 0 1 0 0 0 0
  1417. @TOC1@MODULE XTEXT
  1418.  
  1419. >
  1420.              59 1 16384 0 0 0 0 1 0 0 0 0
  1421. @TOCPG1@27.00
  1422.  
  1423. >
  1424.              60 0 16384 0 0 0 0 1 0 0 0 0
  1425. @TOC2@SOURCES
  1426.  
  1427. >
  1428.              60 1 16384 0 0 0 0 1 0 0 0 0
  1429. @TOCPG2@27.00
  1430.  
  1431. >
  1432.              61 0 16384 0 0 0 0 1 0 0 0 0
  1433. @TOC2@C HEADER FILE
  1434.  
  1435. >
  1436.              61 1 16384 0 0 0 0 1 0 0 0 0
  1437. @TOCPG2@27.00
  1438.  
  1439. >
  1440.              62 0 16384 0 0 0 0 1 0 0 0 0
  1441. @TOC2@MACROS
  1442.  
  1443. >
  1444.              62 1 16384 0 0 0 0 1 0 0 0 0
  1445. @TOCPG2@27.00
  1446.  
  1447. >
  1448.              63 0 16384 0 0 0 0 1 0 0 0 0
  1449. @TOC2@EXPORTED VARIABLES
  1450.  
  1451. >
  1452.              63 1 16384 0 0 0 0 1 0 0 0 0
  1453. @TOCPG2@27.00
  1454.  
  1455. >
  1456.              64 0 16384 0 0 0 0 1 0 0 0 0
  1457. @TOC2@EXPORTED FUNCTIONS
  1458.  
  1459. >
  1460.              64 1 16384 0 0 0 0 1 0 0 0 0
  1461. @TOCPG2@28.00
  1462.  
  1463. >
  1464.              65 0 16384 0 0 0 0 1 0 0 0 0
  1465. @TOC3@x_text_init
  1466.  
  1467. >
  1468.              65 1 16384 0 0 0 0 1 0 0 0 0
  1469. @TOCPG3@28.00
  1470.  
  1471. >
  1472.              66 0 16384 0 0 0 0 1 0 0 0 0
  1473. @TOC3@x_set_font
  1474.  
  1475. >
  1476.              66 1 16384 0 0 0 0 1 0 0 0 0
  1477. @TOCPG3@28.00
  1478.  
  1479. >
  1480.              67 0 16384 0 0 0 0 1 0 0 0 0
  1481. @TOC3@x_register_userfont
  1482.  
  1483. >
  1484.              67 1 16384 0 0 0 0 1 0 0 0 0
  1485. @TOCPG3@28.00
  1486.  
  1487. >
  1488.              68 0 16384 0 0 0 0 1 0 0 0 0
  1489. @TOC3@x_put_char
  1490.  
  1491. >
  1492.              68 1 16384 0 0 0 0 1 0 0 0 0
  1493. @TOCPG3@29.00
  1494.  
  1495. >
  1496.              69 0 16384 0 0 0 0 1 0 0 0 0
  1497. @TOC3@x_printf 
  1498.  
  1499. >
  1500.              69 1 16384 0 0 0 0 1 0 0 0 0
  1501. @TOCPG3@29.00
  1502.  
  1503. >
  1504.              70 0 16384 0 0 0 0 1 0 0 0 0
  1505. @TOC3@x_bgprintf
  1506.  
  1507. >
  1508.              70 1 16384 0 0 0 0 1 0 0 0 0
  1509. @TOCPG3@30.00
  1510.  
  1511. >
  1512.              71 0 16384 0 0 0 0 1 0 0 0 0
  1513. @TOC3@x_get_char_width
  1514.  
  1515. >
  1516.              71 1 16384 0 0 0 0 1 0 0 0 0
  1517. @TOCPG3@30.00
  1518.  
  1519. >
  1520.              72 0 16384 0 0 0 0 1 0 0 0 0
  1521. @TOC1@MODULE XPBITMAP
  1522.  
  1523. >
  1524.              72 1 16384 0 0 0 0 1 0 0 0 0
  1525. @TOCPG1@31.00
  1526.  
  1527. >
  1528.              73 0 16384 0 0 0 0 1 0 0 0 0
  1529. @TOC2@SOURCES
  1530.  
  1531. >
  1532.              73 1 16384 0 0 0 0 1 0 0 0 0
  1533. @TOCPG2@31.00
  1534.  
  1535. >
  1536.              74 0 16384 0 0 0 0 1 0 0 0 0
  1537. @TOC2@C HEADER FILE
  1538.  
  1539. >
  1540.              74 1 16384 0 0 0 0 1 0 0 0 0
  1541. @TOCPG2@31.00
  1542.  
  1543. >
  1544.              75 0 16384 0 0 0 0 1 0 0 0 0
  1545. @TOC2@EXPORTED FUNCTIONS
  1546.  
  1547. >
  1548.              75 1 16384 0 0 0 0 1 0 0 0 0
  1549. @TOCPG2@32.00
  1550.  
  1551. >
  1552.              76 0 16384 0 0 0 0 1 0 0 0 0
  1553. @TOC3@x_put_masked_pbm
  1554.  
  1555. >
  1556.              76 1 16384 0 0 0 0 1 0 0 0 0
  1557. @TOCPG3@32.00
  1558.  
  1559. >
  1560.              77 0 16384 0 0 0 0 1 0 0 0 0
  1561. @TOC3@x_put_pbm
  1562.  
  1563. >
  1564.              77 1 16384 0 0 0 0 1 0 0 0 0
  1565. @TOCPG3@32.00
  1566.  
  1567. >
  1568.              78 0 16384 0 0 0 0 1 0 0 0 0
  1569. @TOC3@x_get_pbm
  1570.  
  1571. >
  1572.              78 1 16384 0 0 0 0 1 0 0 0 0
  1573. @TOCPG3@33.00
  1574.  
  1575. >
  1576.              79 0 16384 0 0 0 0 1 0 0 0 0
  1577. @TOC1@MODULE XPBMCLIP
  1578.  
  1579. >
  1580.              79 1 16384 0 0 0 0 1 0 0 0 0
  1581. @TOCPG1@34.00
  1582.  
  1583. >
  1584.              80 0 16384 0 0 0 0 1 0 0 0 0
  1585. @TOC2@SOURCES
  1586.  
  1587. >
  1588.              80 1 16384 0 0 0 0 1 0 0 0 0
  1589. @TOCPG2@34.00
  1590.  
  1591. >
  1592.              81 0 16384 0 0 0 0 1 0 0 0 0
  1593. @TOC2@C HEADER FILE
  1594.  
  1595. >
  1596.              81 1 16384 0 0 0 0 1 0 0 0 0
  1597. @TOCPG2@34.00
  1598.  
  1599. >
  1600.              82 0 16384 0 0 0 0 1 0 0 0 0
  1601. @TOC2@EXPORTED FUNCTIONS
  1602.  
  1603. >
  1604.              82 1 16384 0 0 0 0 1 0 0 0 0
  1605. @TOCPG2@34.00
  1606.  
  1607. >
  1608.              83 0 16384 0 0 0 0 1 0 0 0 0
  1609. @TOC3@x_put_masked_pbm_clipx
  1610.  
  1611. >
  1612.              83 1 16384 0 0 0 0 1 0 0 0 0
  1613. @TOCPG3@35.00
  1614.  
  1615. >
  1616.              84 0 16384 0 0 0 0 1 0 0 0 0
  1617. @TOC3@x_put_masked_pbm_clipy
  1618.  
  1619. >
  1620.              84 1 16384 0 0 0 0 1 0 0 0 0
  1621. @TOCPG3@35.00
  1622.  
  1623. >
  1624.              85 0 16384 0 0 0 0 1 0 0 0 0
  1625. @TOC3@x_put_masked_pbm_clipxy
  1626.  
  1627. >
  1628.              85 1 16384 0 0 0 0 1 0 0 0 0
  1629. @TOCPG3@36.00
  1630.  
  1631. >
  1632.              86 0 16384 0 0 0 0 1 0 0 0 0
  1633. @TOC3@x_put_pbm_clipx
  1634.  
  1635. >
  1636.              86 1 16384 0 0 0 0 1 0 0 0 0
  1637. @TOCPG3@36.00
  1638.  
  1639. >
  1640.              87 0 16384 0 0 0 0 1 0 0 0 0
  1641. @TOC3@x_put_pbm_clipy
  1642.  
  1643. >
  1644.              87 1 16384 0 0 0 0 1 0 0 0 0
  1645. @TOCPG3@37.00
  1646.  
  1647. >
  1648.              88 0 16384 0 0 0 0 1 0 0 0 0
  1649. @TOC3@x_put_pbm_clipxy
  1650.  
  1651. >
  1652.              88 1 16384 0 0 0 0 1 0 0 0 0
  1653. @TOCPG3@37.00
  1654.  
  1655. >
  1656.              89 0 16384 0 0 0 0 1 0 0 0 0
  1657. @TOC1@MODULE  XCBITMAP
  1658.  
  1659. >
  1660.              89 1 16384 0 0 0 0 1 0 0 0 0
  1661. @TOCPG1@38.00
  1662.  
  1663. >
  1664.              90 0 16384 0 0 0 0 1 0 0 0 0
  1665. @TOC2@SOURCES
  1666.  
  1667. >
  1668.              90 1 16384 0 0 0 0 1 0 0 0 0
  1669. @TOCPG2@38.00
  1670.  
  1671. >
  1672.              91 0 16384 0 0 0 0 1 0 0 0 0
  1673. @TOC2@C HEADER FILE
  1674.  
  1675. >
  1676.              91 1 16384 0 0 0 0 1 0 0 0 0
  1677. @TOCPG2@38.00
  1678.  
  1679. >
  1680.              92 0 16384 0 0 0 0 1 0 0 0 0
  1681. @TOC2@EXPORTED FUNCTIONS
  1682.  
  1683. >
  1684.              92 1 16384 0 0 0 0 1 0 0 0 0
  1685. @TOCPG2@39.00
  1686.  
  1687. >
  1688.              93 0 16384 0 0 0 0 1 0 0 0 0
  1689. @TOC3@x_compile_bitmap
  1690.  
  1691. >
  1692.              93 1 16384 0 0 0 0 1 0 0 0 0
  1693. @TOCPG3@39.00
  1694.  
  1695. >
  1696.              94 0 16384 0 0 0 0 1 0 0 0 0
  1697. @TOC3@x_sizeof_cbitmap
  1698.  
  1699. >
  1700.              94 1 16384 0 0 0 0 1 0 0 0 0
  1701. @TOCPG3@39.00
  1702.  
  1703. >
  1704.              95 0 16384 0 0 0 0 1 0 0 0 0
  1705. @TOC3@x_put_cbitmap
  1706.  
  1707. >
  1708.              95 1 16384 0 0 0 0 1 0 0 0 0
  1709. @TOCPG3@39.00
  1710.  
  1711. >
  1712.              96 0 16384 0 0 0 0 1 0 0 0 0
  1713. @TOC1@MODULE XCOMPPBM
  1714.  
  1715. >
  1716.              96 1 16384 0 0 0 0 1 0 0 0 0
  1717. @TOCPG1@40.00
  1718.  
  1719. >
  1720.              97 0 16384 0 0 0 0 1 0 0 0 0
  1721. @TOC2@SOURCES
  1722.  
  1723. >
  1724.              97 1 16384 0 0 0 0 1 0 0 0 0
  1725. @TOCPG2@40.00
  1726.  
  1727. >
  1728.              98 0 16384 0 0 0 0 1 0 0 0 0
  1729. @TOC2@C HEADER FILE
  1730.  
  1731. >
  1732.              98 1 16384 0 0 0 0 1 0 0 0 0
  1733. @TOCPG2@40.00
  1734.  
  1735. >
  1736.              149 0 16384 0 0 0 0 1 0 0 0 0
  1737. @TOC2@EXPORTED VARIABLES
  1738.  
  1739. >
  1740.              149 1 16384 0 0 0 0 1 0 0 0 0
  1741. @TOCPG2@60.00
  1742.  
  1743. >
  1744.              99 0 16384 0 0 0 0 1 0 0 0 0
  1745. @TOC2@EXPORTED FUNCTIONS
  1746.  
  1747. >
  1748.              99 1 16384 0 0 0 0 1 0 0 0 0
  1749. @TOCPG2@41.00
  1750.  
  1751. >
  1752.              100 0 16384 0 0 0 0 1 0 0 0 0
  1753. @TOC3@x_compile_pbm
  1754.  
  1755. >
  1756.              100 1 16384 0 0 0 0 1 0 0 0 0
  1757. @TOCPG3@41.00
  1758.  
  1759. >
  1760.              101 0 16384 0 0 0 0 1 0 0 0 0
  1761. @TOC3@x_sizeof_cpbm
  1762.  
  1763. >
  1764.              101 1 16384 0 0 0 0 1 0 0 0 0
  1765. @TOCPG3@41.00
  1766.  
  1767. >
  1768.              102 0 16384 0 0 0 0 1 0 0 0 0
  1769. @TOC1@MODULE XVBITMAP
  1770.  
  1771. >
  1772.              102 1 16384 0 0 0 0 1 0 0 0 0
  1773. @TOCPG1@42.00
  1774.  
  1775. >
  1776.              103 0 16384 0 0 0 0 1 0 0 0 0
  1777. @TOC2@SOURCES
  1778.  
  1779. >
  1780.              103 1 16384 0 0 0 0 1 0 0 0 0
  1781. @TOCPG2@43.00
  1782.  
  1783. >
  1784.              104 0 16384 0 0 0 0 1 0 0 0 0
  1785. @TOC2@C HEADER FILE
  1786.  
  1787. >
  1788.              104 1 16384 0 0 0 0 1 0 0 0 0
  1789. @TOCPG2@43.00
  1790.  
  1791. >
  1792.              105 0 16384 0 0 0 0 1 0 0 0 0
  1793. @TOC2@EXPORTED FUNCTIONS
  1794.  
  1795. >
  1796.              105 1 16384 0 0 0 0 1 0 0 0 0
  1797. @TOCPG2@44.00
  1798.  
  1799. >
  1800.              106 0 16384 0 0 0 0 1 0 0 0 0
  1801. @TOC3@x_make_vbm
  1802.  
  1803. >
  1804.              106 1 16384 0 0 0 0 1 0 0 0 0
  1805. @TOCPG3@44.00
  1806.  
  1807. >
  1808.              107 0 16384 0 0 0 0 1 0 0 0 0
  1809. @TOC3@x_put_masked_vbm
  1810.  
  1811. >
  1812.              107 1 16384 0 0 0 0 1 0 0 0 0
  1813. @TOCPG3@44.00
  1814.  
  1815. >
  1816.              108 0 16384 0 0 0 0 1 0 0 0 0
  1817. @TOC3@x_put_masked_vbm_clipx
  1818.  
  1819. >
  1820.              108 1 16384 0 0 0 0 1 0 0 0 0
  1821. @TOCPG3@45.00
  1822.  
  1823. >
  1824.              109 0 16384 0 0 0 0 1 0 0 0 0
  1825. @TOC3@x_put_masked_vbm_clipy
  1826.  
  1827. >
  1828.              109 1 16384 0 0 0 0 1 0 0 0 0
  1829. @TOCPG3@45.00
  1830.  
  1831. >
  1832.              110 0 16384 0 0 0 0 1 0 0 0 0
  1833. @TOC3@x_put_masked_vbm_clipxy
  1834.  
  1835. >
  1836.              110 1 16384 0 0 0 0 1 0 0 0 0
  1837. @TOCPG3@46.00
  1838.  
  1839. >
  1840.              111 0 16384 0 0 0 0 1 0 0 0 0
  1841. @TOC1@MODULE  XMOUSE
  1842.  
  1843. >
  1844.              111 1 16384 0 0 0 0 1 0 0 0 0
  1845. @TOCPG1@47.00
  1846.  
  1847. >
  1848.              112 0 16384 0 0 0 0 1 0 0 0 0
  1849. @TOC2@MS Mouse Driver Functions
  1850.  
  1851. >
  1852.              112 1 16384 0 0 0 0 1 0 0 0 0
  1853. @TOCPG2@47.00
  1854.  
  1855. >
  1856.              113 0 16384 0 0 0 0 1 0 0 0 0
  1857. @TOC2@SOURCES
  1858.  
  1859. >
  1860.              113 1 16384 0 0 0 0 1 0 0 0 0
  1861. @TOCPG2@48.00
  1862.  
  1863. >
  1864.              114 0 16384 0 0 0 0 1 0 0 0 0
  1865. @TOC2@C HEADER FILE
  1866.  
  1867. >
  1868.              114 1 16384 0 0 0 0 1 0 0 0 0
  1869. @TOCPG2@48.00
  1870.  
  1871. >
  1872.              115 0 16384 0 0 0 0 1 0 0 0 0
  1873. @TOC2@EXPORTED VARIABLES
  1874.  
  1875. >
  1876.              115 1 16384 0 0 0 0 1 0 0 0 0
  1877. @TOCPG2@48.00
  1878.  
  1879. >
  1880.              116 0 16384 0 0 0 0 1 0 0 0 0
  1881. @TOC2@EXPORTED FUNCTIONS
  1882.  
  1883. >
  1884.              116 1 16384 0 0 0 0 1 0 0 0 0
  1885. @TOCPG2@49.00
  1886.  
  1887. >
  1888.              117 0 16384 0 0 0 0 1 0 0 0 0
  1889. @TOC3@x_mouse_init
  1890.  
  1891. >
  1892.              117 1 16384 0 0 0 0 1 0 0 0 0
  1893. @TOCPG3@49.00
  1894.  
  1895. >
  1896.              118 0 16384 0 0 0 0 1 0 0 0 0
  1897. @TOC3@x_define_mouse_cursor
  1898.  
  1899. >
  1900.              118 1 16384 0 0 0 0 1 0 0 0 0
  1901. @TOCPG3@49.00
  1902.  
  1903. >
  1904.              119 0 16384 0 0 0 0 1 0 0 0 0
  1905. @TOC3@x_show_mouse
  1906.  
  1907. >
  1908.              119 1 16384 0 0 0 0 1 0 0 0 0
  1909. @TOCPG3@50.00
  1910.  
  1911. >
  1912.              120 0 16384 0 0 0 0 1 0 0 0 0
  1913. @TOC3@x_hide_mouse
  1914.  
  1915. >
  1916.              120 1 16384 0 0 0 0 1 0 0 0 0
  1917. @TOCPG3@50.00
  1918.  
  1919. >
  1920.              121 0 16384 0 0 0 0 1 0 0 0 0
  1921. @TOC3@x_mouse_remove
  1922.  
  1923. >
  1924.              121 1 16384 0 0 0 0 1 0 0 0 0
  1925. @TOCPG3@50.00
  1926.  
  1927. >
  1928.              122 0 16384 0 0 0 0 1 0 0 0 0
  1929. @TOC3@x_position_mouse
  1930.  
  1931. >
  1932.              122 1 16384 0 0 0 0 1 0 0 0 0
  1933. @TOCPG3@50.00
  1934.  
  1935. >
  1936.              123 0 16384 0 0 0 0 1 0 0 0 0
  1937. @TOC3@x_mouse_window
  1938.  
  1939. >
  1940.              123 1 16384 0 0 0 0 1 0 0 0 0
  1941. @TOCPG3@50.00
  1942.  
  1943. >
  1944.              124 0 16384 0 0 0 0 1 0 0 0 0
  1945. @TOC3@x_update_mouse
  1946.  
  1947. >
  1948.              124 1 16384 0 0 0 0 1 0 0 0 0
  1949. @TOCPG3@51.00
  1950.  
  1951. >
  1952.              125 0 16384 0 0 0 0 1 0 0 0 0
  1953. @TOC1@MODULE XBMTOOLS
  1954.  
  1955. >
  1956.              125 1 16384 0 0 0 0 1 0 0 0 0
  1957. @TOCPG1@52.00
  1958.  
  1959. >
  1960.              126 0 16384 0 0 0 0 1 0 0 0 0
  1961. @TOC2@SOURCES
  1962.  
  1963. >
  1964.              126 1 16384 0 0 0 0 1 0 0 0 0
  1965. @TOCPG2@52.00
  1966.  
  1967. >
  1968.              127 0 16384 0 0 0 0 1 0 0 0 0
  1969. @TOC2@C HEADER FILE
  1970.  
  1971. >
  1972.              127 1 16384 0 0 0 0 1 0 0 0 0
  1973. @TOCPG2@52.00
  1974.  
  1975. >
  1976.              128 0 16384 0 0 0 0 1 0 0 0 0
  1977. @TOC2@MACROS
  1978.  
  1979. >
  1980.              128 1 16384 0 0 0 0 1 0 0 0 0
  1981. @TOCPG2@53.00
  1982.  
  1983. >
  1984.              129 0 16384 0 0 0 0 1 0 0 0 0
  1985. @TOC2@EXPORT FUNCTIONS
  1986.  
  1987. >
  1988.              129 1 16384 0 0 0 0 1 0 0 0 0
  1989. @TOCPG2@54.00
  1990.  
  1991. >
  1992.              130 0 16384 0 0 0 0 1 0 0 0 0
  1993. @TOC3@x_pbm_to_bm
  1994.  
  1995. >
  1996.              130 1 16384 0 0 0 0 1 0 0 0 0
  1997. @TOCPG3@54.00
  1998.  
  1999. >
  2000.              131 0 16384 0 0 0 0 1 0 0 0 0
  2001. @TOC3@x_bm_to_pbm
  2002.  
  2003. >
  2004.              131 1 16384 0 0 0 0 1 0 0 0 0
  2005. @TOCPG3@54.00
  2006.  
  2007. >
  2008.              132 0 16384 0 0 0 0 1 0 0 0 0
  2009. @TOC1@MODULE  XCLIPPBM
  2010.  
  2011. >
  2012.              132 1 16384 0 0 0 0 1 0 0 0 0
  2013. @TOCPG1@55.00
  2014.  
  2015. >
  2016.              133 0 16384 0 0 0 0 1 0 0 0 0
  2017. @TOC2@SOURCES
  2018.  
  2019. >
  2020.              133 1 16384 0 0 0 0 1 0 0 0 0
  2021. @TOCPG2@55.00
  2022.  
  2023. >
  2024.              134 0 16384 0 0 0 0 1 0 0 0 0
  2025. @TOC2@C HEADER FILE
  2026.  
  2027. >
  2028.              134 1 16384 0 0 0 0 1 0 0 0 0
  2029. @TOCPG2@55.00
  2030.  
  2031. >
  2032.              135 0 16384 0 0 0 0 1 0 0 0 0
  2033. @TOC2@EXPORTED VARIABLES
  2034.  
  2035. >
  2036.              135 1 16384 0 0 0 0 1 0 0 0 0
  2037. @TOCPG2@55.00
  2038.  
  2039. >
  2040.              136 0 16384 0 0 0 0 1 0 0 0 0
  2041. @TOC2@EXPORTED FUNCTIONS
  2042.  
  2043. >
  2044.              136 1 16384 0 0 0 0 1 0 0 0 0
  2045. @TOCPG2@56.00
  2046.  
  2047. >
  2048.              137 0 16384 0 0 0 0 1 0 0 0 0
  2049. @TOC3@x_clip_pbm
  2050.  
  2051. >
  2052.              137 1 16384 0 0 0 0 1 0 0 0 0
  2053. @TOCPG3@56.00
  2054.  
  2055. >
  2056.              138 0 16384 0 0 0 0 1 0 0 0 0
  2057. @TOC3@x_clip_masked_pbm
  2058.  
  2059. >
  2060.              138 1 16384 0 0 0 0 1 0 0 0 0
  2061. @TOCPG3@56.00
  2062.  
  2063. >
  2064.              139 0 16384 0 0 0 0 1 0 0 0 0
  2065. @TOC1@MODULE  XCIRCLE
  2066.  
  2067. >
  2068.              139 1 16384 0 0 0 0 1 0 0 0 0
  2069. @TOCPG1@57.00
  2070.  
  2071. >
  2072.              140 0 16384 0 0 0 0 1 0 0 0 0
  2073. @TOC2@SOURCES
  2074.  
  2075. >
  2076.              140 1 16384 0 0 0 0 1 0 0 0 0
  2077. @TOCPG2@57.00
  2078.  
  2079. >
  2080.              141 0 16384 0 0 0 0 1 0 0 0 0
  2081. @TOC2@C HEADER FILE
  2082.  
  2083. >
  2084.              141 1 16384 0 0 0 0 1 0 0 0 0
  2085. @TOCPG2@57.00
  2086.  
  2087. >
  2088.              142 0 16384 0 0 0 0 1 0 0 0 0
  2089. @TOC2@EXPORTED FUNCTIONS
  2090.  
  2091. >
  2092.              142 1 16384 0 0 0 0 1 0 0 0 0
  2093. @TOCPG2@58.00
  2094.  
  2095. >
  2096.              143 0 16384 0 0 0 0 1 0 0 0 0
  2097. @TOC3@x_circle
  2098.  
  2099. >
  2100.              143 1 16384 0 0 0 0 1 0 0 0 0
  2101. @TOCPG3@58.00
  2102.  
  2103. >
  2104.              144 0 16384 0 0 0 0 1 0 0 0 0
  2105. @TOC3@x_filled_circle
  2106.  
  2107. >
  2108.              144 1 16384 0 0 0 0 1 0 0 0 0
  2109. @TOCPG3@58.00
  2110.  
  2111. >
  2112.              145 0 16384 0 0 0 0 1 0 0 0 0
  2113. @TOC1@MODULE XDETECT
  2114.  
  2115. >
  2116.              145 1 16384 0 0 0 0 1 0 0 0 0
  2117. @TOCPG1@59.00
  2118.  
  2119. >
  2120.              146 0 16384 0 0 0 0 1 0 0 0 0
  2121. @TOC2@SOURCES
  2122.  
  2123. >
  2124.              146 1 16384 0 0 0 0 1 0 0 0 0
  2125. @TOCPG2@59.00
  2126.  
  2127. >
  2128.              147 0 16384 0 0 0 0 1 0 0 0 0
  2129. @TOC2@C HEADER FILE
  2130.  
  2131. >
  2132.              147 1 16384 0 0 0 0 1 0 0 0 0
  2133. @TOCPG2@59.00
  2134.  
  2135. >
  2136.              148 0 16384 0 0 0 0 1 0 0 0 0
  2137. @TOC2@EXPORTED MACROS
  2138.  
  2139. >
  2140.              148 1 16384 0 0 0 0 1 0 0 0 0
  2141. @TOCPG2@59.00
  2142.  
  2143. >
  2144.              150 0 16384 0 0 0 0 1 0 0 0 0
  2145. @TOC2@EXPORTED FUNCTIONS
  2146.  
  2147. >
  2148.              150 1 16384 0 0 0 0 1 0 0 0 0
  2149. @TOCPG2@61.00
  2150.  
  2151. >
  2152.              151 0 16384 0 0 0 0 1 0 0 0 0
  2153. @TOC3@x_graphics_card
  2154.  
  2155. >
  2156.              151 1 16384 0 0 0 0 1 0 0 0 0
  2157. @TOCPG3@61.00
  2158.  
  2159. >
  2160.              152 0 16384 0 0 0 0 1 0 0 0 0
  2161. @TOC3@x_processor
  2162.  
  2163. >
  2164.              152 1 16384 0 0 0 0 1 0 0 0 0
  2165. @TOCPG3@61.00
  2166.  
  2167. >
  2168.              153 0 16384 0 0 0 0 1 0 0 0 0
  2169. @TOC3@x_coprocessor
  2170.  
  2171. >
  2172.              153 1 16384 0 0 0 0 1 0 0 0 0
  2173. @TOCPG3@61.00
  2174.  
  2175. >
  2176.              154 0 16384 0 0 0 0 1 0 0 0 0
  2177. @TOC3@x_mousedriver
  2178.  
  2179. >
  2180.              154 1 16384 0 0 0 0 1 0 0 0 0
  2181. @TOCPG3@61.00
  2182.  
  2183. >
  2184.              155 0 16384 0 0 0 0 1 0 0 0 0
  2185. @TOC1@MODULE XFILEIO
  2186.  
  2187. >
  2188.              155 1 16384 0 0 0 0 1 0 0 0 0
  2189. @TOCPG1@62.00
  2190.  
  2191. >
  2192.              156 0 16384 0 0 0 0 1 0 0 0 0
  2193. @TOC2@SOURCES
  2194.  
  2195. >
  2196.              156 1 16384 0 0 0 0 1 0 0 0 0
  2197. @TOCPG2@62.00
  2198.  
  2199. >
  2200.              157 0 16384 0 0 0 0 1 0 0 0 0
  2201. @TOC2@C HEADER FILE
  2202.  
  2203. >
  2204.              157 1 16384 0 0 0 0 1 0 0 0 0
  2205. @TOCPG2@62.00
  2206.  
  2207. >
  2208.              158 0 16384 0 0 0 0 1 0 0 0 0
  2209. @TOC2@EXPORTED MACROS
  2210.  
  2211. >
  2212.              158 1 16384 0 0 0 0 1 0 0 0 0
  2213. @TOCPG2@62.00
  2214.  
  2215. >
  2216.              159 0 16384 0 0 0 0 1 0 0 0 0
  2217. @TOC2@EXPORTED FUNCTIONS
  2218.  
  2219. >
  2220.              159 1 16384 0 0 0 0 1 0 0 0 0
  2221. @TOCPG2@63.00
  2222.  
  2223. >
  2224.              160 0 16384 0 0 0 0 1 0 0 0 0
  2225. @TOC3@f_open
  2226.  
  2227. >
  2228.              160 1 16384 0 0 0 0 1 0 0 0 0
  2229. @TOCPG3@63.00
  2230.  
  2231. >
  2232.              161 0 16384 0 0 0 0 1 0 0 0 0
  2233. @TOC3@f_close
  2234.  
  2235. >
  2236.              161 1 16384 0 0 0 0 1 0 0 0 0
  2237. @TOCPG3@63.00
  2238.  
  2239. >
  2240.              162 0 16384 0 0 0 0 1 0 0 0 0
  2241. @TOC3@f_read
  2242.  
  2243. >
  2244.              162 1 16384 0 0 0 0 1 0 0 0 0
  2245. @TOCPG3@63.00
  2246.  
  2247. >
  2248.              163 0 16384 0 0 0 0 1 0 0 0 0
  2249. @TOC3@f_readfar
  2250.  
  2251. >
  2252.              163 1 16384 0 0 0 0 1 0 0 0 0
  2253. @TOCPG3@64.00
  2254.  
  2255. >
  2256.              164 0 16384 0 0 0 0 1 0 0 0 0
  2257. @TOC3@f_write
  2258.  
  2259. >
  2260.              164 1 16384 0 0 0 0 1 0 0 0 0
  2261. @TOCPG3@64.00
  2262.  
  2263. >
  2264.              165 0 16384 0 0 0 0 1 0 0 0 0
  2265. @TOC3@f_writefar
  2266.  
  2267. >
  2268.              165 1 16384 0 0 0 0 1 0 0 0 0
  2269. @TOCPG3@64.00
  2270.  
  2271. >
  2272.              166 0 16384 0 0 0 0 1 0 0 0 0
  2273. @TOC3@f_seek
  2274.  
  2275. >
  2276.              166 1 16384 0 0 0 0 1 0 0 0 0
  2277. @TOCPG3@65.00
  2278.  
  2279. >
  2280.              167 0 16384 0 0 0 0 1 0 0 0 0
  2281. @TOC3@f_filelength
  2282.  
  2283. >
  2284.              167 1 16384 0 0 0 0 1 0 0 0 0
  2285. @TOCPG3@65.00
  2286.  
  2287. >
  2288.              168 0 16384 0 0 0 0 1 0 0 0 0
  2289. @TOC3@f_tell
  2290.  
  2291. >
  2292.              168 1 16384 0 0 0 0 1 0 0 0 0
  2293. @TOCPG3@65.00
  2294.  
  2295. >
  2296.              169 0 16384 0 0 0 0 1 0 0 0 0
  2297. @TOC1@MODULE XRLETOOL
  2298.  
  2299. >
  2300.              169 1 16384 0 0 0 0 1 0 0 0 0
  2301. @TOCPG1@66.00
  2302.  
  2303. >
  2304.              170 0 16384 0 0 0 0 1 0 0 0 0
  2305. @TOC2@SOURCES
  2306.  
  2307. >
  2308.              170 1 16384 0 0 0 0 1 0 0 0 0
  2309. @TOCPG2@66.00
  2310.  
  2311. >
  2312.              171 0 16384 0 0 0 0 1 0 0 0 0
  2313. @TOC2@C HEADER FILE
  2314.  
  2315. >
  2316.              171 1 16384 0 0 0 0 1 0 0 0 0
  2317. @TOCPG2@66.00
  2318.  
  2319. >
  2320.              172 0 16384 0 0 0 0 1 0 0 0 0
  2321. @TOC2@EXPORTED FUNCTIONS
  2322.  
  2323. >
  2324.              172 1 16384 0 0 0 0 1 0 0 0 0
  2325. @TOCPG2@67.00
  2326.  
  2327. >
  2328.              173 0 16384 0 0 0 0 1 0 0 0 0
  2329. @TOC3@x_buff_RLDecode
  2330.  
  2331. >
  2332.              173 1 16384 0 0 0 0 1 0 0 0 0
  2333. @TOCPG3@67.00
  2334.  
  2335. >
  2336.              174 0 16384 0 0 0 0 1 0 0 0 0
  2337. @TOC3@x_buff_RLEncode
  2338.  
  2339. >
  2340.              174 1 16384 0 0 0 0 1 0 0 0 0
  2341. @TOCPG3@67.00
  2342.  
  2343. >
  2344.              175 0 16384 0 0 0 0 1 0 0 0 0
  2345. @TOC3@x_buff_RLE_size
  2346.  
  2347. >
  2348.              175 1 16384 0 0 0 0 1 0 0 0 0
  2349. @TOCPG3@67.00
  2350.  
  2351. >
  2352.              176 0 16384 0 0 0 0 1 0 0 0 0
  2353. @TOC3@x_file_RLEncode
  2354.  
  2355. >
  2356.              176 1 16384 0 0 0 0 1 0 0 0 0
  2357. @TOCPG3@68.00
  2358.  
  2359. >
  2360.              177 0 16384 0 0 0 0 1 0 0 0 0
  2361. @TOC3@x_file_RLDecode
  2362.  
  2363. >
  2364.              177 1 16384 0 0 0 0 1 0 0 0 0
  2365. @TOCPG3@68.00
  2366.  
  2367. >
  2368.              178 0 16384 0 0 0 0 1 0 0 0 0
  2369. @TOC1@MODULE XPOLYGON
  2370.  
  2371. >
  2372.              178 1 16384 0 0 0 0 1 0 0 0 0
  2373. @TOCPG1@69.00
  2374.  
  2375. >
  2376.              179 0 16384 0 0 0 0 1 0 0 0 0
  2377. @TOC2@SOURCES
  2378.  
  2379. >
  2380.              179 1 16384 0 0 0 0 1 0 0 0 0
  2381. @TOCPG2@69.00
  2382.  
  2383. >
  2384.              180 0 16384 0 0 0 0 1 0 0 0 0
  2385. @TOC2@C HEADER FILE
  2386.  
  2387. >
  2388.              180 1 16384 0 0 0 0 1 0 0 0 0
  2389. @TOCPG2@69.00
  2390.  
  2391. >
  2392.              181 0 16384 0 0 0 0 1 0 0 0 0
  2393. @TOC2@TYPE DEFS
  2394.  
  2395. >
  2396.              181 1 16384 0 0 0 0 1 0 0 0 0
  2397. @TOCPG2@69.00
  2398.  
  2399. >
  2400.              182 0 16384 0 0 0 0 1 0 0 0 0
  2401. @TOC2@EXPORTED FUNCTIONS
  2402.  
  2403. >
  2404.              182 1 16384 0 0 0 0 1 0 0 0 0
  2405. @TOCPG2@70.00
  2406.  
  2407. >
  2408.              183 0 16384 0 0 0 0 1 0 0 0 0
  2409. @TOC3@x_triangle
  2410.  
  2411. >
  2412.              183 1 16384 0 0 0 0 1 0 0 0 0
  2413. @TOCPG3@70.00
  2414.  
  2415. >
  2416.              184 0 16384 0 0 0 0 1 0 0 0 0
  2417. @TOC3@x_polygon
  2418.  
  2419. >
  2420.              184 1 16384 0 0 0 0 1 0 0 0 0
  2421. @TOCPG3@71.00
  2422.  
  2423. >
  2424.              185 0 16384 0 0 0 0 1 0 0 0 0
  2425. @TOC1@MODULE XBEZIER
  2426.  
  2427. >
  2428.              185 1 16384 0 0 0 0 1 0 0 0 0
  2429. @TOCPG1@71.00
  2430.  
  2431. >
  2432.              186 0 16384 0 0 0 0 1 0 0 0 0
  2433. @TOC2@SOURCES
  2434.  
  2435. >
  2436.              186 1 16384 0 0 0 0 1 0 0 0 0
  2437. @TOCPG2@72.00
  2438.  
  2439. >
  2440.              187 0 16384 0 0 0 0 1 0 0 0 0
  2441. @TOC2@C HEADER FILE
  2442.  
  2443. >
  2444.              187 1 16384 0 0 0 0 1 0 0 0 0
  2445. @TOCPG2@72.00
  2446.  
  2447. >
  2448.              188 0 16384 0 0 0 0 1 0 0 0 0
  2449. @TOC2@EXPORTED FUNCTIONS
  2450.  
  2451. >
  2452.              188 1 16384 0 0 0 0 1 0 0 0 0
  2453. @TOCPG2@73.00
  2454.  
  2455. >
  2456.              189 0 16384 0 0 0 0 1 0 0 0 0
  2457. @TOC3@x_bezier
  2458.  
  2459. >
  2460.              189 1 16384 0 0 0 0 1 0 0 0 0
  2461. @TOCPG3@73.00
  2462.  
  2463. >
  2464.              190 0 16384 0 0 0 0 1 0 0 0 0
  2465. @TOC1@MODULE XFILL
  2466.  
  2467. >
  2468.              190 1 16384 0 0 0 0 1 0 0 0 0
  2469. @TOCPG1@74.00
  2470.  
  2471. >
  2472.              191 0 16384 0 0 0 0 1 0 0 0 0
  2473. @TOC2@SOURCES
  2474.  
  2475. >
  2476.              191 1 16384 0 0 0 0 1 0 0 0 0
  2477. @TOCPG2@74.00
  2478.  
  2479. >
  2480.              192 0 16384 0 0 0 0 1 0 0 0 0
  2481. @TOC2@C HEADER FILE
  2482.  
  2483. >
  2484.              192 1 16384 0 0 0 0 1 0 0 0 0
  2485. @TOCPG2@74.00
  2486.  
  2487. >
  2488.              193 0 16384 0 0 0 0 1 0 0 0 0
  2489. @TOC2@EXPORTED FUNCTIONS
  2490.  
  2491. >
  2492.              193 1 16384 0 0 0 0 1 0 0 0 0
  2493. @TOCPG2@75.00
  2494.  
  2495. >
  2496.              194 0 16384 0 0 0 0 1 0 0 0 0
  2497. @TOC3@x_flood_fill
  2498.  
  2499. >
  2500.              194 1 16400 0 0 0 0 1 0 0 0 0
  2501. @TOCPG3@<+A>75.00
  2502.  
  2503. >
  2504.              195 0 16384 0 0 0 0 1 0 0 0 0
  2505. @TOC3@x_boundry_fill
  2506.  
  2507. >
  2508.              195 1 16400 0 0 0 0 1 0 0 0 0
  2509. @TOCPG3@<+A>75.00
  2510.  
  2511. >
  2512.              196 0 16384 0 0 0 0 1 0 0 0 0
  2513. @TOC1@MODULE XVSYNC
  2514.  
  2515. >
  2516.              196 1 16400 0 0 0 0 1 0 0 0 0
  2517. @TOCPG1@<+A>76.00
  2518.  
  2519. >
  2520.              197 0 16384 0 0 0 0 1 0 0 0 0
  2521. @TOC2@SOURCES
  2522.  
  2523. >
  2524.              197 1 16400 0 0 0 0 1 0 0 0 0
  2525. @TOCPG2@<+A>76.00
  2526.  
  2527. >
  2528.              198 0 16384 0 0 0 0 1 0 0 0 0
  2529. @TOC2@C HEADER FILE
  2530.  
  2531. >
  2532.              198 1 16400 0 0 0 0 1 0 0 0 0
  2533. @TOCPG2@<+A>76.00
  2534.  
  2535. >
  2536.              199 0 16384 0 0 0 0 1 0 0 0 0
  2537. @TOC2@EXPORTED VARIABLES
  2538.  
  2539. >
  2540.              199 1 16400 0 0 0 0 1 0 0 0 0
  2541. @TOCPG2@<+A>77.00
  2542.  
  2543. >
  2544.              200 0 16384 0 0 0 0 1 0 0 0 0
  2545. @TOC2@EXPORTED FUNCTIONS
  2546.  
  2547. >
  2548.              200 1 16400 0 0 0 0 1 0 0 0 0
  2549. @TOCPG2@<+A>78.00
  2550.  
  2551. >
  2552.              201 0 16384 0 0 0 0 1 0 0 0 0
  2553. @TOC3@x_install_vsync_handler
  2554.  
  2555. >
  2556.              201 1 16400 0 0 0 0 1 0 0 0 0
  2557. @TOCPG3@<+A>78.00
  2558.  
  2559. >
  2560.              202 0 16384 0 0 0 0 1 0 0 0 0
  2561. @TOC3@x_remove_vsync_handler
  2562.  
  2563. >
  2564.              202 1 16400 0 0 0 0 1 0 0 0 0
  2565. @TOCPG3@<+A>78.00
  2566.  
  2567. >
  2568.              203 0 16384 0 0 0 0 1 0 0 0 0
  2569. @TOC3@x_set_user_vsync_handler
  2570.  
  2571. >
  2572.              203 1 16400 0 0 0 0 1 0 0 0 0
  2573. @TOCPG3@<+A>78.00
  2574.  
  2575. >
  2576.              204 0 16384 0 0 0 0 1 0 0 0 0
  2577. @TOC3@x_wait_start_addr
  2578.  
  2579. >
  2580.              204 1 16400 0 0 0 0 1 0 0 0 0
  2581. @TOCPG3@<+A>79.00
  2582.  
  2583. >
  2584.              205 0 16384 0 0 0 0 1 0 0 0 0
  2585. @TOC1@MODULE XCBITM32
  2586.  
  2587. >
  2588.              205 1 16400 0 0 0 0 1 0 0 0 0
  2589. @TOCPG1@<+A>79.00
  2590.  
  2591. >
  2592.              206 0 16384 0 0 0 0 1 0 0 0 0
  2593. @TOC2@SOURCES
  2594.  
  2595. >
  2596.              206 1 16400 0 0 0 0 1 0 0 0 0
  2597. @TOCPG2@<+A>80.00
  2598.  
  2599. >
  2600.              207 0 16384 0 0 0 0 1 0 0 0 0
  2601. @TOC2@C HEADER FILE
  2602.  
  2603. >
  2604.              207 1 16400 0 0 0 0 1 0 0 0 0
  2605. @TOCPG2@<+A>80.00
  2606.  
  2607. >
  2608.              208 0 16384 0 0 0 0 1 0 0 0 0
  2609. @TOC2@EXPORTED FUNCTIONS
  2610.  
  2611. >
  2612.              208 1 16400 0 0 0 0 1 0 0 0 0
  2613. @TOCPG2@<+A>81.00
  2614.  
  2615. >
  2616.              209 0 16384 0 0 0 0 1 0 0 0 0
  2617. @TOC3@x_compile_bitmap_32
  2618.  
  2619. >
  2620.              209 1 16400 0 0 0 0 1 0 0 0 0
  2621. @TOCPG3@<+A>81.00
  2622.  
  2623. >
  2624.              210 0 16384 0 0 0 0 1 0 0 0 0
  2625. @TOC3@x_sizeof_cpbm
  2626.  
  2627. >
  2628.              210 1 16400 0 0 0 0 1 0 0 0 0
  2629. @TOCPG3@<+A>81.00
  2630.  
  2631. >
  2632.              211 0 16384 0 0 0 0 1 0 0 0 0
  2633. @TOC1@REFERENCE SECTION
  2634.  
  2635. >
  2636.              211 1 16400 0 0 0 0 1 0 0 0 0
  2637. @TOCPG1@<+A>82.00
  2638.  
  2639. >
  2640.              212 0 16384 0 0 0 0 1 0 0 0 0
  2641. @TOC2@REFERENCES
  2642.  
  2643. >
  2644.              212 1 16400 0 0 0 0 1 0 0 0 0
  2645. @TOCPG2@<+A>82.00
  2646.  
  2647. >
  2648.              213 0 16384 0 0 0 0 1 0 0 0 0
  2649. @TOC2@WHAT IS MODE X ?
  2650.  
  2651. >
  2652.              213 1 16400 0 0 0 0 1 0 0 0 0
  2653. @TOCPG2@<+A>82.00
  2654.  
  2655. >
  2656.              214 0 16384 0 0 0 0 1 0 0 0 0
  2657. @TOC2@WHAT IS A SPLIT SCREEN ?
  2658.  
  2659. >
  2660.              214 1 16400 0 0 0 0 1 0 0 0 0
  2661. @TOCPG2@<+A>82.00
  2662.  
  2663. >
  2664.              215 0 16384 0 0 0 0 1 0 0 0 0
  2665. @TOC2@WHAT IS RLE?
  2666.  
  2667. >
  2668.              215 1 16400 0 0 0 0 1 0 0 0 0
  2669. @TOCPG2@<+A>83.00
  2670.  
  2671. >
  2672.              216 0 16384 0 0 0 0 1 0 0 0 0
  2673. @TOC2@WHAT IS DOUBLE BUFFERING ?
  2674.  
  2675. >
  2676.              216 1 16400 0 0 0 0 1 0 0 0 0
  2677. @TOCPG2@<+A>84.00
  2678.  
  2679. >
  2680.              217 0 16384 0 0 0 0 1 0 0 0 0
  2681. @TOC2@WHAT IS TRIPLE BUFFERING?
  2682.  
  2683. >
  2684.              217 1 16400 0 0 0 0 1 0 0 0 0
  2685. @TOCPG2@<+A>84.00
  2686.  
  2687. >
  2688.              218 0 16384 0 0 0 0 1 0 0 0 0
  2689. @TOC2@WHAT IS A BEZIER CURVE?
  2690.  
  2691. >
  2692.              218 1 16400 0 0 0 0 1 0 0 0 0
  2693. @TOCPG2@<+A>84.00
  2694.  
  2695. >
  2696.              219 0 16384 0 0 0 0 1 0 0 0 0
  2697. @TOC2@The Care and Feeding of Compiled Masked Blits
  2698.  
  2699. >
  2700.              219 1 16400 0 0 0 0 1 0 0 0 0
  2701. @TOCPG2@<+A>85.00
  2702.  
  2703. >
  2704.              220 0 16384 0 0 0 0 1 0 0 0 0
  2705. @TOC2@Blits and Pieces
  2706.  
  2707. >
  2708.              220 1 16400 0 0 0 0 1 0 0 0 0
  2709. @TOCPG2@<+A>87.00
  2710.  
  2711. >
  2712.              221 0 16384 0 0 0 0 1 0 0 0 0
  2713. @TOC2@Wheel Have to See About That
  2714.  
  2715. >
  2716.              221 1 16400 0 0 0 0 1 0 0 0 0
  2717. @TOCPG2@<+A>88.00
  2718.  
  2719. >
  2720.              0 0 16384 0 0 0 0 1 0 0 0 0
  2721. @TOC1@INTRODUCTION
  2722.  
  2723. >
  2724.              0 1 16384 0 0 0 0 1 0 0 0 0
  2725. @TOCPG1@1.00
  2726.  
  2727. >
  2728.              1 0 16384 0 0 0 0 1 0 0 0 0
  2729. @TOC2@EDITORS NOTE
  2730.  
  2731. >
  2732.              1 1 16384 0 0 0 0 1 0 0 0 0
  2733. @TOCPG2@1.00
  2734.  
  2735. >
  2736.              2 0 16384 0 0 0 0 1 0 0 0 0
  2737. @TOC2@CONTACTING THE AUTHORS
  2738.  
  2739. >
  2740.              2 1 16384 0 0 0 0 1 0 0 0 0
  2741. @TOCPG2@1.00
  2742.  
  2743. >
  2744.              3 0 16384 0 0 0 0 1 0 0 0 0
  2745. @TOC2@DISCLAIMER
  2746.  
  2747. >
  2748.              3 1 16384 0 0 0 0 1 0 0 0 0
  2749. @TOCPG2@1.00
  2750.  
  2751. >
  2752.              4 0 16384 0 0 0 0 1 0 0 0 0
  2753. @TOC2@ABOUT XLIB
  2754.  
  2755. >
  2756.              4 1 16384 0 0 0 0 1 0 0 0 0
  2757. @TOCPG2@1.00
  2758.  
  2759. >
  2760.              5 0 16384 0 0 0 0 1 0 0 0 0
  2761. @TOC2@GENERAL FEATURES
  2762.  
  2763. >
  2764.              5 1 16384 0 0 0 0 1 0 0 0 0
  2765. @TOCPG2@2.00
  2766.  
  2767. >
  2768.              6 0 16384 0 0 0 0 1 0 0 0 0
  2769. @TOC2@MODULES COMPRISING XLIB
  2770.  
  2771. >
  2772.              6 1 16384 0 0 0 0 1 0 0 0 0
  2773. @TOCPG2@2.00
  2774.  
  2775. >
  2776.              7 0 16384 0 0 0 0 1 0 0 0 0
  2777. @TOC2@GLOBAL DEFINES
  2778.  
  2779. >
  2780.              7 1 16384 0 0 0 0 1 0 0 0 0
  2781. @TOCPG2@3.00
  2782.  
  2783. >
  2784.              8 0 16384 0 0 0 0 1 0 0 0 0
  2785. @TOC1@MODULE XMAIN
  2786.  
  2787. >
  2788.              8 1 16384 0 0 0 0 1 0 0 0 0
  2789. @TOCPG1@4.00
  2790.  
  2791. >
  2792.              9 0 16384 0 0 0 0 1 0 0 0 0
  2793. @TOC2@SOURCES
  2794.  
  2795. >
  2796.              9 1 16384 0 0 0 0 1 0 0 0 0
  2797. @TOCPG2@4.00
  2798.  
  2799. >
  2800.              10 0 16384 0 0 0 0 1 0 0 0 0
  2801. @TOC2@C HEADER FILE
  2802.  
  2803. >
  2804.              10 1 16384 0 0 0 0 1 0 0 0 0
  2805. @TOCPG2@4.00
  2806.  
  2807. >
  2808.              11 0 16384 0 0 0 0 1 0 0 0 0
  2809. @TOC2@EXPORTED VARIABLES
  2810.  
  2811. >
  2812.              11 1 16384 0 0 0 0 1 0 0 0 0
  2813. @TOCPG2@4.00
  2814.  
  2815. >
  2816.              12 0 16384 0 0 0 0 1 0 0 0 0
  2817. @TOC2@EXPORTED FUNCTIONS
  2818.  
  2819. >
  2820.              12 1 16384 0 0 0 0 1 0 0 0 0
  2821. @TOCPG2@7.00
  2822.  
  2823. >
  2824.              13 0 16384 0 0 0 0 1 0 0 0 0
  2825. @TOC3@x_set_mode
  2826.  
  2827. >
  2828.              13 1 16384 0 0 0 0 1 0 0 0 0
  2829. @TOCPG3@7.00
  2830.  
  2831. >
  2832.              14 0 16384 0 0 0 0 1 0 0 0 0
  2833. @TOC3@x_select_default_plane
  2834.  
  2835. >
  2836.              14 1 16384 0 0 0 0 1 0 0 0 0
  2837. @TOCPG3@7.00
  2838.  
  2839. >
  2840.              15 0 16384 0 0 0 0 1 0 0 0 0
  2841. @TOC3@x_set_splitscreen
  2842.  
  2843. >
  2844.              15 1 16384 0 0 0 0 1 0 0 0 0
  2845. @TOCPG3@8.00
  2846.  
  2847. >
  2848.              16 0 16384 0 0 0 0 1 0 0 0 0
  2849. @TOC3@x_set_doublebuffer
  2850.  
  2851. >
  2852.              16 1 16384 0 0 0 0 1 0 0 0 0
  2853. @TOCPG3@9.00
  2854.  
  2855. >
  2856.              17 0 16384 0 0 0 0 1 0 0 0 0
  2857. @TOC3@x_hide_splitscreen
  2858.  
  2859. >
  2860.              17 1 16384 0 0 0 0 1 0 0 0 0
  2861. @TOCPG3@10.00
  2862.  
  2863. >
  2864.              18 0 16384 0 0 0 0 1 0 0 0 0
  2865. @TOC3@x_show_splitscreen
  2866.  
  2867. >
  2868.              18 1 16384 0 0 0 0 1 0 0 0 0
  2869. @TOCPG3@11.00
  2870.  
  2871. >
  2872.              19 0 16384 0 0 0 0 1 0 0 0 0
  2873. @TOC3@x_adjust_splitscreen
  2874.  
  2875. >
  2876.              19 1 16384 0 0 0 0 1 0 0 0 0
  2877. @TOCPG3@11.00
  2878.  
  2879. >
  2880.              20 0 16384 0 0 0 0 1 0 0 0 0
  2881. @TOC3@x_set_start_addr
  2882.  
  2883. >
  2884.              20 1 16384 0 0 0 0 1 0 0 0 0
  2885. @TOCPG3@11.00
  2886.  
  2887. >
  2888.              21 0 16384 0 0 0 0 1 0 0 0 0
  2889. @TOC3@x_page_flip
  2890.  
  2891. >
  2892.              21 1 16384 0 0 0 0 1 0 0 0 0
  2893. @TOCPG3@12.00
  2894.  
  2895. >
  2896.              22 0 16384 0 0 0 0 1 0 0 0 0
  2897. @TOC3@x_text_mode
  2898.  
  2899. >
  2900.              22 1 16384 0 0 0 0 1 0 0 0 0
  2901. @TOCPG3@12.00
  2902.  
  2903. >
  2904.              23 0 16384 0 0 0 0 1 0 0 0 0
  2905. @TOC3@x_set_cliprect
  2906.  
  2907. >
  2908.              23 1 16384 0 0 0 0 1 0 0 0 0
  2909. @TOCPG3@12.00
  2910.  
  2911. >
  2912.              24 0 16384 0 0 0 0 1 0 0 0 0
  2913. @TOC1@MODULE XPOINT
  2914.  
  2915. >
  2916.              24 1 16384 0 0 0 0 1 0 0 0 0
  2917. @TOCPG1@13.00
  2918.  
  2919. >
  2920.              25 0 16384 0 0 0 0 1 0 0 0 0
  2921. @TOC2@SOURCES
  2922.  
  2923. >
  2924.              25 1 16384 0 0 0 0 1 0 0 0 0
  2925. @TOCPG2@13.00
  2926.  
  2927. >
  2928.              26 0 16384 0 0 0 0 1 0 0 0 0
  2929. @TOC2@C HEADER FILE
  2930.  
  2931. >
  2932.              26 1 16384 0 0 0 0 1 0 0 0 0
  2933. @TOCPG2@13.00
  2934.  
  2935. >
  2936.              27 0 16384 0 0 0 0 1 0 0 0 0
  2937. @TOC2@EXPORTED FUNCTIONS
  2938.  
  2939. >
  2940.              27 1 16384 0 0 0 0 1 0 0 0 0
  2941. @TOCPG2@14.00
  2942.  
  2943. >
  2944.              28 0 16384 0 0 0 0 1 0 0 0 0
  2945. @TOC3@x_put_pix
  2946.  
  2947. >
  2948.              28 1 16384 0 0 0 0 1 0 0 0 0
  2949. @TOCPG3@14.00
  2950.  
  2951. >
  2952.              29 0 16384 0 0 0 0 1 0 0 0 0
  2953. @TOC3@x_get_pix
  2954.  
  2955. >
  2956.              29 1 16384 0 0 0 0 1 0 0 0 0
  2957. @TOCPG3@14.00
  2958.  
  2959. >
  2960.              30 0 16384 0 0 0 0 1 0 0 0 0
  2961. @TOC1@MODULE XRECT
  2962.  
  2963. >
  2964.              30 1 16384 0 0 0 0 1 0 0 0 0
  2965. @TOCPG1@15.00
  2966.  
  2967. >
  2968.              31 0 16384 0 0 0 0 1 0 0 0 0
  2969. @TOC2@SOURCES
  2970.  
  2971. >
  2972.              31 1 16384 0 0 0 0 1 0 0 0 0
  2973. @TOCPG2@15.00
  2974.  
  2975. >
  2976.              32 0 16384 0 0 0 0 1 0 0 0 0
  2977. @TOC2@C HEADER FILE
  2978.  
  2979. >
  2980.              32 1 16384 0 0 0 0 1 0 0 0 0
  2981. @TOCPG2@15.00
  2982.  
  2983. >
  2984.              33 0 16384 0 0 0 0 1 0 0 0 0
  2985. @TOC2@EXPORTED FUNCTIONS
  2986.  
  2987. >
  2988.              33 1 16384 0 0 0 0 1 0 0 0 0
  2989. @TOCPG2@16.00
  2990.  
  2991. >
  2992.              34 0 16384 0 0 0 0 1 0 0 0 0
  2993. @TOC3@x_rect_pattern
  2994.  
  2995. >
  2996.              34 1 16384 0 0 0 0 1 0 0 0 0
  2997. @TOCPG3@16.00
  2998.  
  2999. >
  3000.              35 0 16384 0 0 0 0 1 0 0 0 0
  3001. @TOC3@x_rect_pattern_clipped
  3002.  
  3003. >
  3004.              35 1 16384 0 0 0 0 1 0 0 0 0
  3005. @TOCPG3@17.00
  3006.  
  3007. >
  3008.              36 0 16384 0 0 0 0 1 0 0 0 0
  3009. @TOC3@x_rect_fill
  3010.  
  3011. >
  3012.              36 1 16384 0 0 0 0 1 0 0 0 0
  3013. @TOCPG3@17.00
  3014.  
  3015. >
  3016.              37 0 16384 0 0 0 0 1 0 0 0 0
  3017. @TOC3@x_rect_fill_clipped
  3018.  
  3019. >
  3020.              37 1 16384 0 0 0 0 1 0 0 0 0
  3021. @TOCPG3@18.00
  3022.  
  3023. >
  3024.              38 0 16384 0 0 0 0 1 0 0 0 0
  3025. @TOC3@x_cp_vid_rect
  3026.  
  3027. >
  3028.              38 1 16384 0 0 0 0 1 0 0 0 0
  3029. @TOCPG3@19.00
  3030.  
  3031. >
  3032.              39 0 16384 0 0 0 0 1 0 0 0 0
  3033. @TOC3@x_shift_rect
  3034.  
  3035. >
  3036.              39 1 16384 0 0 0 0 1 0 0 0 0
  3037. @TOCPG3@20.00
  3038.  
  3039. >
  3040.              40 0 16384 0 0 0 0 1 0 0 0 0
  3041. @TOC1@MODULE XPAL
  3042.  
  3043. >
  3044.              40 1 16384 0 0 0 0 1 0 0 0 0
  3045. @TOCPG1@21.00
  3046.  
  3047. >
  3048.              41 0 16384 0 0 0 0 1 0 0 0 0
  3049. @TOC2@SOURCES
  3050.  
  3051. >
  3052.              41 1 16384 0 0 0 0 1 0 0 0 0
  3053. @TOCPG2@21.00
  3054.  
  3055. >
  3056.              42 0 16384 0 0 0 0 1 0 0 0 0
  3057. @TOC2@C HEADER FILE
  3058.  
  3059. >
  3060.              42 1 16384 0 0 0 0 1 0 0 0 0
  3061. @TOCPG2@21.00
  3062.  
  3063. >
  3064.              43 0 16384 0 0 0 0 1 0 0 0 0
  3065. @TOC2@EXPORTED FUNCTIONS
  3066.  
  3067. >
  3068.              43 1 16384 0 0 0 0 1 0 0 0 0
  3069. @TOCPG2@22.00
  3070.  
  3071. >
  3072.              44 0 16384 0 0 0 0 1 0 0 0 0
  3073. @TOC3@x_get_pal_raw
  3074.  
  3075. >
  3076.              44 1 16384 0 0 0 0 1 0 0 0 0
  3077. @TOCPG3@22.00
  3078.  
  3079. >
  3080.              45 0 16384 0 0 0 0 1 0 0 0 0
  3081. @TOC3@x_get_pal_struc
  3082.  
  3083. >
  3084.              45 1 16384 0 0 0 0 1 0 0 0 0
  3085. @TOCPG3@22.00
  3086.  
  3087. >
  3088.              46 0 16384 0 0 0 0 1 0 0 0 0
  3089. @TOC3@x_put_pal_raw
  3090.  
  3091. >
  3092.              46 1 16384 0 0 0 0 1 0 0 0 0
  3093. @TOCPG3@22.00
  3094.  
  3095. >
  3096.              47 0 16384 0 0 0 0 1 0 0 0 0
  3097. @TOC3@x_put_pal_struc
  3098.  
  3099. >
  3100.              47 1 16384 0 0 0 0 1 0 0 0 0
  3101. @TOCPG3@23.00
  3102.  
  3103. >
  3104.              48 0 16384 0 0 0 0 1 0 0 0 0
  3105. @TOC3@x_set_rgb
  3106.  
  3107. >
  3108.              48 1 16384 0 0 0 0 1 0 0 0 0
  3109. @TOCPG3@23.00
  3110.  
  3111. >
  3112.              49 0 16384 0 0 0 0 1 0 0 0 0
  3113. @TOC3@x_rot_pal_struc
  3114.  
  3115. >
  3116.              49 1 16384 0 0 0 0 1 0 0 0 0
  3117. @TOCPG3@23.00
  3118.  
  3119. >
  3120.         [e]
  3121.     [tble]
  3122. [lay]
  3123.     Standard
  3124.     513
  3125.     [rght]
  3126.         15840
  3127.         12240
  3128.         1
  3129.         1440
  3130.         1440
  3131.         1
  3132.         1440
  3133.         1440
  3134.         0
  3135.         1
  3136.         0
  3137.         1
  3138.         0
  3139.         2
  3140.         1
  3141.         1440
  3142.         10800
  3143.         12
  3144.         1
  3145.         720
  3146.         1
  3147.         1440
  3148.         1
  3149.         2160
  3150.         1
  3151.         2880
  3152.         1
  3153.         3600
  3154.         1
  3155.         4320
  3156.         1
  3157.         5040
  3158.         1
  3159.         5760
  3160.         1
  3161.         6480
  3162.         1
  3163.         7200
  3164.         1
  3165.         7920
  3166.         1
  3167.         8640
  3168.     [hrght]
  3169.     [lyfrm]
  3170.         1
  3171.         11200
  3172.         0
  3173.         0
  3174.         12240
  3175.         1440
  3176.         0
  3177.         1
  3178.         3
  3179.         1 0 0 0 0 0 0
  3180.         0
  3181.         0
  3182.         1
  3183.     [frmlay]
  3184.         1440
  3185.         12240
  3186.         1
  3187.         1440
  3188.         72
  3189.         1
  3190.         792
  3191.         1440
  3192.         0
  3193.         1
  3194.         0
  3195.         1
  3196.         1
  3197.         0
  3198.         1
  3199.         1440
  3200.         10800
  3201.         2
  3202.         2
  3203.         4680
  3204.         3
  3205.         9360
  3206.     [txt]
  3207. <+A><:s>
  3208.  
  3209. <+A><:P12,1,>
  3210.  
  3211. >
  3212.     [frght]
  3213.     [lyfrm]
  3214.         1
  3215.         13248
  3216.         0
  3217.         14400
  3218.         12240
  3219.         15840
  3220.         0
  3221.         1
  3222.         3
  3223.         1 0 0 0 0 0 0
  3224.         0
  3225.         0
  3226.         2
  3227.     [frmlay]
  3228.         15840
  3229.         12240
  3230.         1
  3231.         1440
  3232.         792
  3233.         1
  3234.         14472
  3235.         1440
  3236.         0
  3237.         1
  3238.         0
  3239.         1
  3240.         1
  3241.         0
  3242.         1
  3243.         1440
  3244.         10800
  3245.         2
  3246.         2
  3247.         4680
  3248.         3
  3249.         9360
  3250.     [txt]
  3251. >
  3252. [elay]
  3253. [lay]
  3254.     1
  3255.     513
  3256.     [rght]
  3257.         15840
  3258.         12240
  3259.         1
  3260.         1440
  3261.         1440
  3262.         1
  3263.         1440
  3264.         1440
  3265.         0
  3266.         1
  3267.         0
  3268.         1
  3269.         0
  3270.         2
  3271.         1
  3272.         1440
  3273.         10800
  3274.         12
  3275.         1
  3276.         720
  3277.         1
  3278.         1440
  3279.         1
  3280.         2160
  3281.         1
  3282.         2880
  3283.         1
  3284.         3600
  3285.         1
  3286.         4320
  3287.         1
  3288.         5040
  3289.         1
  3290.         5760
  3291.         1
  3292.         6480
  3293.         1
  3294.         7200
  3295.         1
  3296.         7920
  3297.         1
  3298.         8640
  3299.     [hrght]
  3300.     [lyfrm]
  3301.         1
  3302.         11200
  3303.         0
  3304.         0
  3305.         12240
  3306.         1440
  3307.         0
  3308.         1
  3309.         3
  3310.         1 0 0 0 0 0 0
  3311.         0
  3312.         0
  3313.         4
  3314.     [frmlay]
  3315.         1440
  3316.         12240
  3317.         1
  3318.         1440
  3319.         72
  3320.         1
  3321.         792
  3322.         1440
  3323.         0
  3324.         1
  3325.         0
  3326.         1
  3327.         1
  3328.         0
  3329.         1
  3330.         1440
  3331.         10800
  3332.         2
  3333.         2
  3334.         4680
  3335.         3
  3336.         9360
  3337.     [txt]
  3338. >
  3339.     [frght]
  3340.     [lyfrm]
  3341.         1
  3342.         13248
  3343.         0
  3344.         14400
  3345.         12240
  3346.         15840
  3347.         0
  3348.         1
  3349.         3
  3350.         1 0 0 0 0 0 0
  3351.         0
  3352.         0
  3353.         5
  3354.     [frmlay]
  3355.         15840
  3356.         12240
  3357.         1
  3358.         1440
  3359.         792
  3360.         1
  3361.         14472
  3362.         1440
  3363.         0
  3364.         1
  3365.         0
  3366.         1
  3367.         1
  3368.         0
  3369.         1
  3370.         1440
  3371.         10800
  3372.         2
  3373.         2
  3374.         4680
  3375.         3
  3376.         9360
  3377.     [txt]
  3378. >
  3379. [elay]
  3380. [l1]
  3381.     1
  3382. [pg]
  3383.     96
  3384.     1 0 5 16384 0 0 0 65535 65535 1    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 34 0 0
  3385.     1 0 5 16384 0 0 0 65535 65535 1    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 34 34 0 0
  3386.     1 0 5 16384 0 0 0 65535 65535 1    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 68 34 0 0
  3387.     1 0 5 16384 0 0 0 65535 65535 1    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 102 34 0 0
  3388.     1 0 5 16384 0 0 0 65535 65535 1    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 136 34 0 0
  3389.     1 0 5 16384 0 0 0 65535 65535 1    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 170 34 0 0
  3390.     1 5 5 17920 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3391.     44 0 0 0 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3392.     77 0 0 0 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3393.     122 0 47 0 0 1 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3394.     160 0 33 512 0 1 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3395.     199 94 28 0 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3396.     225 0 0 0 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3397.     247 0 98 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3398.     276 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3399.     294 0 76 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3400.     331 0 9 512 3 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3401.     341 0 44 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3402.     373 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3403.     400 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3404.     417 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3405.     443 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3406.     459 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3407.     481 0 55 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3408.     520 0 55 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3409.     540 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3410.     567 0 55 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3411.     585 0 92 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3412.     610 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3413.     652 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3414.     694 0 71 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3415.     727 96 31 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3416.     744 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3417.     765 0 34 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3418.     806 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3419.     843 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3420.     876 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3421.     900 0 52 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3422.     926 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3423.     966 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3424.     987 0 85 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3425.     1017 0 7 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3426.     1057 0 38 512 3 0 0 65535 6 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3427.     1094 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3428.     1131 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3429.     1144 0 16 512 0 1 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3430.     1185 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3431.     1198 0 19 512 0 1 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3432.     1225 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3433.     1255 566 88 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3434.     1269 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3435.     1296 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3436.     1326 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3437.     1343 0 95 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3438.     1375 91 75 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3439.     1405 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3440.     1435 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3441.     1475 0 82 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3442.     1482 93 13 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3443.     1517 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3444.     1533 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3445.     1568 0 21 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3446.     1594 0 26 512 0 1 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3447.     1623 87 14 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3448.     1637 0 15 512 0 1 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3449.     1669 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3450.     1708 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3451.     1720 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3452.     1757 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3453.     1787 0 15 512 0 1 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3454.     1826 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3455.     1870 0 0 0 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3456.     1898 0 75 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3457.     1914 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3458.     1958 0 0 0 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3459.     1984 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3460.     2001 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3461.     2023 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3462.     2040 197 12 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3463.     2051 0 19 512 0 1 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3464.     2076 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3465.     2086 0 13 512 0 1 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3466.     2121 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3467.     2150 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3468.     2158 0 21 512 0 1 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3469.     2198 197 42 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3470.     2210 0 37 512 0 1 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3471.     2221 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3472.     2247 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3473.     2277 188 84 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3474.     2307 0 5 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3475.     2322 0 7 512 1 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3476.     2357 0 20 0 0 1 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3477.     2380 0 45 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3478.     2402 287 58 512 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3479.     2412 0 0 1025 0 0 0 65535 65535 Standard    65535 0 0    0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
  3480. [edoc]
  3481. <:s><:t0><:p</B>Standard>
  3482.  
  3483. <:s><:#286,9360>
  3484.  
  3485. <:s><:#286,9360>
  3486.  
  3487. <:s><:#286,9360>
  3488.  
  3489. <:s><:#286,9360>
  3490.  
  3491. <+B><:s><:#733,9360><:f720,BFinal Frontier,0,0,0> <+!>XLIB<:f>
  3492.  
  3493. <+B><:s><:#367,9360><:f360,BFinal Frontier,0,0,0><+!>The "Mode X" graphics library.<-!><:f>
  3494.  
  3495. <:s><:#286,9360> 
  3496.  
  3497. <:s><:#286,9360>
  3498.  
  3499. <:s><:#286,9360>
  3500.  
  3501. <:s><:#286,9360>
  3502.  
  3503. <:s><:#286,9360>
  3504.  
  3505. <:s><:#286,9360>
  3506.  
  3507. <:s><:#286,9360>
  3508.  
  3509. <:s><:#286,9360>
  3510.  
  3511. <:s><:#286,9360>
  3512.  
  3513. <:s><:#286,9360>
  3514.  
  3515. <:s><:#286,9360>
  3516.  
  3517. <:s><:#286,9360>
  3518.  
  3519. <:s><:#286,9360>
  3520.  
  3521. <:s><:#286,9360>
  3522.  
  3523. <:s><:#286,9360>
  3524.  
  3525. <:s><:#286,9360>
  3526.  
  3527. <:s><:#286,9360>
  3528.  
  3529. <:s><:#286,9360>
  3530.  
  3531. <:s><:#286,9360>
  3532.  
  3533. <:s><:#286,9360>
  3534.  
  3535. <:s><:#286,9360>
  3536.  
  3537. <:s><:#286,9360>
  3538.  
  3539. <:s><:#286,9360>
  3540.  
  3541. <:s><:#286,9360>
  3542.  
  3543. <:s><:#286,9360>
  3544.  
  3545. <:s><:#286,9360>
  3546.  
  3547. <:s><:#286,9360>
  3548.  
  3549. <:s><:#286,9360>
  3550.  
  3551. <:s><:#286,9360>
  3552.  
  3553. <:s><:#286,9360>
  3554.  
  3555. <:s><:#286,9360>
  3556.  
  3557. <:s><:#286,9360>
  3558.  
  3559. <+B><:s><:#286,9360>Written by:  Themie Gouthas.
  3560.  
  3561. <+B><:s><:#286,9360>Additional code contributed by: Matthew MacKenzie and Tore Jahn Bastiansen.
  3562.  
  3563. <+B><:s><:#286,9360>Manual edited by: J. Donavan Stanley.
  3564.  
  3565. <:s><:#286,9360>
  3566.  
  3567. <:s><:#286,9360>
  3568.  
  3569. <+B><:#333,9360><+!><:f280, Times New Roman,0,0,0>INTRODUCTION<:f><-!><:X11,-32768;TOC 1 "INTRODUCTION">
  3570.  
  3571. <+@><:s><:#286,9360>
  3572.  
  3573. <+@><:#286,9360><+!>EDITORS NOTE<:X11,-32768;TOC 2 "EDITORS NOTE">:<-!>
  3574.  
  3575. <:s><:#286,9360>
  3576.  
  3577. <:#1430,9360>"Do not trust this excuse for a manual when in doubt go to the code."  Those words were written by Themie Gouthas in each manual accompanying an XLIB release.  I have undertaken this project to provide you the end user with a high-quality, 
  3578. <+#>accurate<-#> manual to use.  I have gone to the code, checked and cross-checked everything and consulted the authors to ensure everything is correct. Just the same I'm only human, so if you spot any errors please let me know.
  3579.  
  3580. <:s><:#286,9360>
  3581.  
  3582. <:#1430,9360>Throughout this manual function names are in bold italics, variables are in regular italics.  This only holds true for those of you who are reading the non-ASCII version of this document.  If your favorite word processor isn't included in this release of th
  3583. e manual let me know and I will make very effort to support it. I also plan on making a printed, 3-ring bound versions available for a small fee (Enough to cover the cost of materials and postage) if enough people are interested. 
  3584.  
  3585. <:s><:#286,9360>
  3586.  
  3587. <:s><:#286,9360>
  3588.  
  3589. <:#286,9360><+!><:X11,-32768;TOC 2 "CONTACTING THE AUTHORS">CONTACTING THE AUTHORS<-!><+!>:<-!>
  3590.  
  3591. <:s><:#286,9360>    Themie Gouthas -   Internet:  egg@dstos3.dsto.goc.au   or  teg@bart.dsto.gov.au
  3592.  
  3593. <:s><:#286,9360>    Matthew MacKenzie -  Internet:  matm@eng.umd.edu
  3594.  
  3595. <:s><:#286,9360>    Tore Bastiansen - Internet:  toreba@ifi.uio.no
  3596.  
  3597. <:s><:#286,9360>    Donavan Stanley (The editor) - Internet:  bbooth@vax.cns.muskingnum.edu (This is a
  3598.  
  3599. <:s><:#286,9360>                                     friend who will relay your message to me.)
  3600.  
  3601. <:s><:#286,9360>                       BBS:   The Last Byte BBS (614) 432-3564.
  3602.  
  3603. <:s><:#286,9360>
  3604.  
  3605. <:s><:#286,9360>
  3606.  
  3607. <:#286,9360><+!>DISCLAIMER<:X11,-32768;TOC 2 "DISCLAIMER"><-!>
  3608.  
  3609. <:s><:#286,9360><+!>
  3610.  
  3611. <:s><:#865,9360><+!>This library is distributed AS IS.<-!>  The authors specifically disclaim any responsibility for any loss of profit or any incidental, consequential or other damages.  The authors reserve ALL rights to the code contained in XLIB.
  3612.  
  3613. <:s><:#286,9360>
  3614.  
  3615. <:s><:#286,9360>
  3616.  
  3617. <:#286,9360><+!>ABOUT XLIB<:X11,-32768;TOC 2 "ABOUT XLIB"><-!>
  3618.  
  3619. <:s><:#286,9360>
  3620.  
  3621. <:s><:#865,9360>XLIB  is a "user supported freeware" graphics library specifically designed with game programming in mind. It has been released to the public for the benefit of all and is the result of 
  3622. <+!>MANY<-!> hours of or work. 
  3623.  
  3624. <:s><:#286,9360>
  3625.  
  3626. <:s><:#293,9360>All users <+!>must <-!>comply with the following guidelines:
  3627.  
  3628. @Number List@<:s><:#286,9360>Leave the code in the public domain.
  3629.  
  3630. @Number List@<:s><:#286,9360>Do not distribute any modified or incomplete versions of this library.
  3631.  
  3632. <:s><:#286,9360>
  3633.  
  3634. <:s><:#286,9360>New contributions and comments are welcome. There will be more releases as the code evolves.
  3635.  
  3636. <:s><:#286,9360>
  3637.  
  3638. <:#286,9360><+!>GENERAL FEATURES<:X11,-32768;TOC 2 "GENERAL FEATURES"><-!>
  3639.  
  3640. <:s><:#286,9360>
  3641.  
  3642. @Bullet 1@<:s><:#286,9360>    Support for a number of 256 color tweaked graphics mode resolutions   
  3643.  
  3644. <:s><:#286,9360>    320x200 320x240 360x200 360x240 376x282 320x400 320x480 360x400 360x480 
  3645.  
  3646. <:s><:#286,9360>    360x360 376x308 376x564
  3647.  
  3648. <:s><:#286,9360>
  3649.  
  3650. @Bullet 1@<:s><:#286,9360>    Virtual screens larger than the physical screen (memory  permitting) that can be panned at 
  3651.     
  3652.  
  3653. <:s><:#286,9360>    pixel resolution in all directions
  3654.  
  3655. <:s><:#286,9360>
  3656.  
  3657. @Bullet 1@<:s><:#286,9360>    A split screen capability for status displays etc.
  3658.  
  3659. <:s><:#286,9360>
  3660.  
  3661. @Bullet 1@<:s><:#286,9360>    Text functions supporting 8x8 and 8x14 ROM fonts and user defined fonts
  3662.  
  3663. <:s><:#286,9360>
  3664.  
  3665. @Bullet 1@<:s><:#286,9360>    Support for page flipping
  3666.  
  3667. <:s><:#286,9360>
  3668.  
  3669. @Bullet 1@<:s><:#286,9360>    Graphics primitives such as line and rectangle drawing functions.
  3670.  
  3671. <:s><:#286,9360>
  3672.  
  3673. @Bullet 1@<:s><:#286,9360>    Bit block manipulation functions
  3674.  
  3675. <:s><:#286,9360>
  3676.  
  3677. <:s><:#286,9360><:f240, Times New Roman,0,0,0>
  3678.  
  3679. @Bullet@<:s><:#286,9360><:f240, Times New Roman,0,0,0>Please note that some of the resolutions best suit monitors with adjustable vertical height.<:f>
  3680.  
  3681. <:s><:#286,9360>
  3682.  
  3683. <:s><:#286,9360>
  3684.  
  3685. <:#286,9360><+!>MODULES COMPRISING XLIB<:X11,-32768;TOC 2 "MODULES COMPRISING XLIB">   
  3686. <-!>
  3687.  
  3688. <:s><:#286,9360>
  3689.  
  3690. <:s><:#286,9360>    XMAIN             Main module containing mode setting code and basic functions   
  3691.  
  3692. <:s><:#286,9360>    XPOINT            Pixel functions   
  3693.  
  3694. <:s><:#286,9360>    XRECT             Filled rectangle and VRAM to VRAM block move functions   
  3695.  
  3696. <:s><:#286,9360>    XPAL             Palette functions   
  3697.  
  3698. <:s><:#286,9360>    XLINE             Line functions   
  3699.  
  3700. <:s><:#286,9360>    XTEXT             Text and font functions   
  3701.  
  3702. <:s><:#286,9360>    XPRINTF           Printf style string output   
  3703.  
  3704. <:s><:#286,9360>    XPBITMAP          Planar bitmap functions   
  3705.  
  3706. <:s><:#286,9360>    XPBMCLIP          Clipped planar bitmap functions   
  3707.  
  3708. <:s><:#286,9360>    XCBITMAP         Compiled bitmap functions using linear bitmaps.  
  3709.  
  3710. <:s><:#286,9360>    XCOMPPBM        Compiled bitmap functions using planar bitmaps.
  3711.  
  3712. <:s><:#286,9360>    XVBITMAP         Video bitmap functions   
  3713.  
  3714. <:s><:#286,9360>    XMAKEVBM      Support module for video bitmaps   
  3715.  
  3716. <:s><:#286,9360>    XMOUSE            Mouse functions
  3717.  
  3718. <:s><:#286,9360>    XBMTOOLS          Bitmap format conversion tools
  3719.  
  3720. <:s><:#286,9360>    XCLIPPBM        Clipped planar bitmap functions. (Uses blits.)   
  3721.  
  3722. <:s><:#286,9360>    XCIRCLE        Circle Drawing functions.
  3723.  
  3724. <:s><:#286,9360>    XDETECT           Hardware detection module   
  3725.  
  3726. <:s><:#286,9360>    XFILEIO           File I/O functions   
  3727.  
  3728. <:s><:#286,9360>    XRLETOOL          RLE encoding/decoding functions   
  3729.  
  3730. <+@><:s><:#286,9360>    XPOLYGON        Convex polygon and triangle functions.
  3731.  
  3732. <+@><:s><:#286,9360>    XBEZIER           Bezier curve drawing 
  3733.  
  3734. <+@><:s><:#286,9360>    XFILL            General purpose flood fill routines.
  3735.  
  3736. <+@><:#286,9360>    XVSYNC        Simulated vertical retrace Interrupt module.
  3737.  
  3738. <+@><:#286,9360>    XCBITM32        32 Bit compiled bitmaps.
  3739.  
  3740. <+B><:s><:#286,9360>
  3741.  
  3742. <+B><:s><:#286,9360>
  3743.  
  3744. <+@><:#286,9360><:f240, Times New Roman,0,0,0><+!>GLOBAL DEFINES<:X11,-32768;TOC 2 "GLOBAL DEFINES"> (xlib.inc)<-!><:f>
  3745.  
  3746. <+B><:s><:#333,9360><+!><:f280,2Times New Roman,0,0,0>
  3747.  
  3748. <:s><:#286,9360><+!>    Types:
  3749.  
  3750. <:s><:#286,9360>        BYTE unsigned char 
  3751.  
  3752. <:s><:#286,9360>        WORD unsigned int
  3753.  
  3754. <:s><:#286,9360>
  3755.  
  3756. <:s><:#286,9360>
  3757.  
  3758. <:s><:#286,9360><+!>    Available X mode resolutions:<-!>
  3759.  
  3760. <:s><:#286,9360>        X_MODE_320x200  0 
  3761.  
  3762. <:s><:#286,9360>        X_MODE_320x240  1 
  3763.  
  3764. <:s><:#286,9360>        X_MODE_360x200  2 
  3765.  
  3766. <:s><:#286,9360>        X_MODE_360x240  3 
  3767.  
  3768. <:s><:#286,9360>        X_MODE_360x282  4 
  3769.  
  3770. <:s><:#286,9360>        X_MODE_320x400  5 
  3771.  
  3772. <:s><:#286,9360>        X_MODE_320x480  6 
  3773.  
  3774. <:s><:#286,9360>        X_MODE_360x400  7 
  3775.  
  3776. <:s><:#286,9360>        X_MODE_360x480  8 
  3777.  
  3778. <:s><:#286,9360>        X_MODE_360x360  9 
  3779.  
  3780. <:s><:#286,9360>        X_MODE_376x308  10 
  3781.  
  3782. <:s><:#286,9360>        X_MODE_376x564  11
  3783.  
  3784. <:s><:#286,9360>
  3785.  
  3786. <:s><:#286,9360>
  3787.  
  3788. <:s><:#286,9360><+!>    Palette rotation direction<-!><+!>:<-!>
  3789.  
  3790. <:s><:#286,9360>        BACKWARD 0 
  3791.  
  3792. <:s><:#286,9360>        FORWARD    1
  3793.  
  3794. <:s><:#286,9360>
  3795.  
  3796. <:s><:#286,9360>
  3797.  
  3798. <:s><:#286,9360><+!>    Function return values:<-!>
  3799.  
  3800. <:s><:#286,9360>        X_MODE_INVALID   -1 
  3801.  
  3802. <:s><:#286,9360>        ERROR                          1 
  3803.  
  3804. <:s>        OK                             0<:p<* >>
  3805.  
  3806. <+B><:#333,9360><:f280,2Times New Roman,0,0,0><+!>MODULE XMAIN<:X11,-32768;TOC 1 "MODULE XMAIN"><-!><:f>
  3807.  
  3808. <:s><:#286,9360>
  3809.  
  3810. <:s><:#286,9360>
  3811.  
  3812. <:s><:#572,9360>The Xmain module is the base module of the XLIB library. It contains the essential functions that initialize and customize the graphic environment.
  3813.  
  3814. <:s><:#286,9360>
  3815.  
  3816. <:s><:#286,9360>
  3817.  
  3818. <:#286,9360><+!><:f,,>SOURCES<:X11,-32768;TOC 2 "SOURCES"><-!>
  3819.  
  3820. <:s><:#286,9360>    xmain.asm 
  3821.  
  3822. <:s><:#286,9360>    xmain.inc 
  3823.  
  3824. <:s><:#286,9360>    xlib.inc 
  3825.  
  3826. <:s><:#286,9360>    model.inc
  3827.  
  3828. <:s><:#286,9360>
  3829.  
  3830. <:s><:#286,9360>
  3831.  
  3832. <:#286,9360><+!>C HEADER FILE<:X11,-32768;TOC 2 "C HEADER FILE"><-!>
  3833.  
  3834. <:s><:#286,9360>    xlib.h
  3835.  
  3836. <:s><:#286,9360>
  3837.  
  3838. <:s><:#286,9360>
  3839.  
  3840. <:#286,9360><+!>EXPORTED VARIABLES<:X11,-32768;TOC 2 "EXPORTED VARIABLES"><-!>
  3841.  
  3842. <:s><:#286,9360>
  3843.  
  3844. <:s><:#579,9360><+!>NOTE: <-!>All variables are read only unless otherwise specified. 
  3845. <+#>If you modify  them manually, the results may be unpredictable<-#>.
  3846.  
  3847. <:s><:#286,9360>
  3848.  
  3849. <:s><:#293,9360><+">InGraphics<-"> BYTE- Flag indicating that the xlib graphics system is active. Set by function
  3850.  
  3851. <:s><:#293,9360><+!><+">x_set_mode<-"><-!>.
  3852.  
  3853. <:s><:#286,9360>
  3854.  
  3855. <:s><:#586,9360><+">CurrXMode<-"> WORD - If the xlib graphics system is active, contains the id of the x mode. Set by function 
  3856. <+!><+">x_set_mode<-"><-!>. <+"> <-">See also: defines (i.e. X_MODE_320x200 ... )
  3857.  
  3858. <:s><:#286,9360>
  3859.  
  3860. <:s><:#293,9360><+">ScrnPhysicalByteWidth<-"> WORD - Physical screen width in bytes. Set by function 
  3861. <+!><+">x_set_mode<-"><-!>
  3862.  
  3863. <:s><:#286,9360>
  3864.  
  3865. <:s><:#293,9360><+">ScrnPhysicalPixelWidth<-"> WORD - Physical screen width in pixels. Set by function 
  3866. <+!><+">x_set_mode<-"><-!>
  3867.  
  3868. <:s><:#286,9360><+!>
  3869.  
  3870. <:s><:#293,9360><+">ScrnPhysicalHeight<-"> WORD - Physical screen height in pixels. Set by function 
  3871. <+!><+">x_set_mode<-"><-!>.
  3872.  
  3873. <:s><:#286,9360>
  3874.  
  3875. <:s><:#293,9360><+">ScrnLogicalByteWidth<-"> WORD - Virtual screen width in bytes. Set by function 
  3876. <+!><+">x_set_mode<-"><-!>.
  3877.  
  3878. <:s><:#286,9360>
  3879.  
  3880. <:s><:#293,9360><+">ScrnLogicalPixelWidth<-"> WORD - Virtual screen width in pixels. Set by function 
  3881. <+!><+">x_set_mode<-"><-!>.
  3882.  
  3883. <:s><:#286,9360>
  3884.  
  3885. <:s><:#586,9360><+">ScrnLogicalHeight<-"> WORD - Virtual screen height in pixels. Set initially by function 
  3886. <+!><+">x_set_mode<-"><-!> but is updated by functions <+!><+">x_set_splitscrn<-"><-!> and 
  3887. <+!><+">x_set_doublebuffer<-"><-!>.
  3888.  
  3889. <:s><:#286,9360>
  3890.  
  3891. <:s><:#586,9360><+">MaxScrollX<-">  WORD - Max. X pixel position of physical screen within virtual screen. Set by function 
  3892. <+!><+">x_set_mode<-"><-!>.
  3893.  
  3894. <:s><:#586,9360><+">MaxScrollY<-"> WORD - Max. Y pixel position of physical screen within virtual screen. Set initially by function 
  3895. <+!><+">x_set_mode<-"><-!> but is updated by functions <+!><+">x_set_splitscrn<-"><-!> and 
  3896. <+!><+">x_set_doublebuffer<-"><-!>.
  3897.  
  3898. <:s><:#293,9360><+">
  3899.  
  3900. <:s><:#865,9360><+">ErrorValue<-"> WORD - Contains error value. General use variable to communicate the error status from several functions. The value in this variable usually is only valid for the last function called that sets it.
  3901.  
  3902. <:s><:#286,9360>
  3903.  
  3904. <:s><:#586,9360><+">SplitScrnOffs<-"> WORD - Offset in video ram of split screen. Set by function 
  3905. <+!><+">x_set_splitscrn<-"><-!>. The value is only valid if a split screen is active. See also: global variable 
  3906. <+">SplitScrnActive<-">.
  3907.  
  3908. <:s><:#286,9360>
  3909.  
  3910. <:s><:#879,9360><+">SplitScrnScanLine<-"> WORD - Screen Scan Line the Split Screen starts at  initially when set by function<+!><+"> x_set_splitscrn<-"><-!>. 
  3911. <+#>The value is only valid if a split screen is active<-#>. See also: global variable<+"> SplitScrnActive<-">. This variable is not updated by 
  3912. <+!><+">x_hide_splitscrn<-"><-!> or <+!><+">x_adjust_splitscrn<-"><-!>.
  3913.  
  3914. <:s><:#286,9360>
  3915.  
  3916. <:s><:#586,9360><+">SplitScrnVisibleHeight<-"> WORD - The number of rows of the initial split screen which are currently displayed. Modified by 
  3917. <+!><+">x_hide_splitscrn<-"><-!>, <+!><+">x_adjust_splitscrn<-"><-!> and 
  3918. <+!><+">x_show_splitscrn<-"><-!>.
  3919.  
  3920. <:s><:#286,9360>
  3921.  
  3922. <:s><:#586,9360><+">Page0_Offs<-"> WORD - Offset in video ram of main virtual screen. Initially set by function 
  3923. <+!><+">x_set_mode<-"><-!> but is updated by functions <+!><+">x_set_splitscrn<-"><-!> and 
  3924. <+!><+">x_set_doublebuffer<-"><-!>.
  3925.  
  3926. <:s><:#286,9360>
  3927.  
  3928. <:s><:#586,9360><+">Page1_Offs<-"> WORD - Offset in video ram of second virtual screen. Set by and only is valid after a call to 
  3929. <+!><+">x_set_doublebuffer <-"><-!> or <+!><+">x_triple_buffer.<-"><-!>
  3930.  
  3931. <:s><:#286,9360>
  3932.  
  3933. <:s><:#586,9360><+">Page2_Offs<-"> WORD - Offset in video ram of the third virtual screen. Set by and is only valid after a call to 
  3934. <+!><+">x_triple_buffer.<-"><-!>
  3935.  
  3936. <:s><:#286,9360><+!><+">
  3937.  
  3938. <:s><:#872,9360><+">WaitingPageOffs<-"> WORD - Offset in video ram of the page waiting to be invisible. Initially set by 
  3939. <+!><+">x_triple_buffer <-!><-">but is updated by <+!><+">x_page_flip<-!><-">. This variable is only used while triple buffering is active.<-"><-">
  3940.  
  3941. <:s><:#286,9360>
  3942.  
  3943. <:s><:#586,9360><+">HiddenPageOffs<-"> WORD - Offset of hidden page. Initially set by function 
  3944. <+!><+">x_set_doublebuffer<-"><-!> but is updated by <+!><+">x_page_flip<-"><-!>. 
  3945. <+#>This variable  is only used while double (or triple ) buffering is on<-#>.
  3946.  
  3947. <:s><:#286,9360>
  3948.  
  3949. <:s><:#586,9360><+">VisiblePageOffs<-"> WORD - Offset of visible page. Initially set by function  
  3950. <+!><+">x_set_doublebuffer<-"><-!> but is updated by <+!><+">x_page_flip<-"><-!>. 
  3951. <+#>This variable is only used while double (or triple) buffering is on<-#>.
  3952.  
  3953. <:s><:#286,9360>
  3954.  
  3955. <:s><:#879,9360><+">NonVisual_Offs<-"> WORD - Offset of first byte of non-visual ram, the ram that is available for bitmap storage etc. Set initially by function 
  3956. <+!><+">x_set_mode<-"><-!> but is updated by functions <+!><+">x_set_splitscrn<-"><-!> and 
  3957. <+!><+">x_set_doublebuffer<-"><-!>.
  3958.  
  3959. <:s><:#286,9360>
  3960.  
  3961. <:s><:#872,9360><+">VisiblePageIdx<-"> WORD - Index number of current visible page. Initially set by function 
  3962. <+!><+">x_set_doublebuffer<-"><-!> but is updated by <+!><+">x_page_flip<-"><-!>. 
  3963. <+#>This variable is only used while double( or triple) buffering is on<-#>.
  3964.  
  3965. <:s><:#286,9360>
  3966.  
  3967. <:s><:#586,9360><+">DoubleBufferActive<-"> WORD - Indicates whether double-buffering is on. Set by function 
  3968. <+!><+">x_set_doublebuffer<-"><-!>.
  3969.  
  3970. <:s><:#286,9360>
  3971.  
  3972. <:s><:#579,9360><+">TripleBufferActive<-"> WORD - Indicates whether triple-buffering is active. Set by function 
  3973. <+!><+">x_triple_buffer.<-"><-!>
  3974.  
  3975. <:s><:#286,9360><+!><+">
  3976.  
  3977. <:s><:#586,9360><+">TopClip, BottomClip, LeftClip RightClip<-"> WORD - Defines the clipping rectangle for linear and Video clipped bitmap put functions. Set either manually or by 
  3978. <+!><+">x_set_cliprect. <-"><-!>
  3979.  
  3980. <:s><:#293,9360><+!>Note:<-!> <+#>X coordinates are in bytes as all clip functions clip to byte boundaries<-#>.
  3981.  
  3982. <:s><:#286,9360>
  3983.  
  3984. <:s><:#579,9360><+">PhysicalStartPixelX<-"> WORD - X pixel Offset of physical (visible) screen relative to the upper left hand corner (0,0) of the virtual screen.
  3985.  
  3986. <:s><:#286,9360>
  3987.  
  3988. <:s><:#579,9360><+">PhysicalStartByteX<-"> WORD - X byte Offset of physical (visible) screen relative to the upper left hand corner (0,0) of the virtual screen.
  3989.  
  3990. <:s><:#286,9360>
  3991.  
  3992. <:s><:#579,9360><+">PhysicalStartY<-">  WORD - Y pixel Offset of physical (visible) screen relative to the upper left hand corner (0,0) of the virtual screen.
  3993.  
  3994. <:s><:#286,9360>
  3995.  
  3996. <:s><:#579,9360><+">StartAddressFlag<-"> WORD - This flag is set if there is a new start address waiting to be set by the vsync handler.
  3997.  
  3998. <:s><:#286,9360>
  3999.  
  4000. <:s><:#586,9360><+">WaitingStartLow, WaitingStartHigh, WaitingPelPan<-"> WORD - These are used by the vsync handler 
  4001. <+#>only<-#>. <+!>Do not modify!
  4002.  
  4003. <:s><:#286,9360><+!>
  4004.  
  4005. <:s><:#579,9360><+">VsyncPaletteCount <-">WORD - The start index of the video DAC register to be updated during the next vsync.  Set by the palette functions.
  4006.  
  4007. <:s><:#286,9360>
  4008.  
  4009. <:#579,9360><+">VsyncPaletteCount<-"> WORD - The number of palette entries to be outed during the next vsync. Set by the palette functions.
  4010.  
  4011. <:s><:#286,9360>
  4012.  
  4013. <:s><+">VsyncPaletteBuffer <-">BYTE<[>768] - A buffer containing values for the next update of the DAC.<:p<* >>
  4014.  
  4015. <+@><:#286,9360><:f240, Times New Roman,0,0,0><+!>EXPORTED FUNCTIONS<:X11,-32768;TOC 2 "EXPORTED FUNCTIONS"><-!><:f>
  4016.  
  4017. <+B><:s><:#333,9360><+!><:f280,2Times New Roman,0,0,0>
  4018.  
  4019. <+B><:s><:#333,9360><+!><:f280,2Times New Roman,0,0,0>
  4020.  
  4021. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">x_set_mode<:X11,-32768;TOC 3 "x_set_mode"><-"><-!><:f>
  4022.  
  4023. <:s><:#293,9360><+!>C Prototype:<-!>  extern WORD x_set_mode(WORD mode, WORD WidthInPixels);
  4024.  
  4025. <:s><:#286,9360>
  4026.  
  4027. <:s><:#579,9360><+">mode <-">- The required mode as defined by the "Available X Mode resolutions" set of defines in the xlib.h header file.     
  4028.  
  4029. <:s><:#286,9360>
  4030.  
  4031. <:s><:#293,9360><+">WidthInPixels<-"> - The required virtual screen width.     
  4032.  
  4033. <:s><:#286,9360>
  4034.  
  4035. <:s><:#293,9360><+!>Returns:<-!> The actual width in pixels of the allocated virtual screen
  4036.  
  4037. <:s><:#286,9360>
  4038.  
  4039. <:s><:#865,9360>This function initializes the graphics system, setting the appropriate screen resolution and allocating a virtual screen. The virtual screen allocated may not necessarily be of the same size as specified in the 
  4040. <+">WidthInPixels<-"> parameter as it is rounded down to the nearest multiple of 4.
  4041.  
  4042. <:s><:#286,9360>
  4043.  
  4044. <:s><:#572,9360>The function returns the actual width of the allocated virtual screen  in pixels if a valid mode was selected otherwise returns  X_MODE_INVALID.
  4045.  
  4046. <:s><:#286,9360>
  4047.  
  4048. <:s><:#1172,9360>Saves virtual screen pixel width in <+">ScrnLogicalPixelWidth<-">. Saves virtual screen byte width in 
  4049. <+">ScrnLogicalByteWidth<-">. Physical screen dimensions are set in 
  4050. <+">ScrnPhysicalPixelWidth<-">.  <+">ScrnPhysicalByteWidth<-"> and 
  4051. <+">ScrnPhysicalHeight<-">. Other global variables set are <+">CurrXMode<-">, 
  4052. <+">MaxScrollX<-">, <+">MaxScrollY<-">, <+">InGraphics<-">. The variable 
  4053. <+">SplitScrnScanLine<-"> is also initialized  to zero.
  4054.  
  4055. <:s><:#286,9360>
  4056.  
  4057. <:s><:#293,9360><+!>See also:<-!> "Available X Mode resolutions." and "What is Mode X?"
  4058.  
  4059. <:s><:#286,9360>
  4060.  
  4061. <:s><:#286,9360>
  4062.  
  4063. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">x_select_default_plane<:X11,-32768;TOC 3 "x_select_default_plane"><-"><-!><:f>
  4064.  
  4065. <:s><:#293,9360><+!>C Prototype<-!>:  void x_select_default_plane(BYTE plane);
  4066.  
  4067. <:s><:#286,9360>
  4068.  
  4069. <:s><:#293,9360><+">plane<-"> - The plane number you wish to work with.
  4070.  
  4071. <:s><:#286,9360>
  4072.  
  4073. <:s><:#286,9360>Enables default Read/Write access to a specified plane
  4074.  
  4075. <:s><:#286,9360>
  4076.  
  4077. <:s><:p<* >>
  4078.  
  4079. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">x_set_splitscreen<:X11,-32768;TOC 3 "x_set_splitscreen"><-"><-!><:f>
  4080.  
  4081. <:s><:#293,9360><+!>C Prototype:<-!>  extern void x_set_splitscreen(WORD line);
  4082.  
  4083. <:s><:#286,9360>
  4084.  
  4085. <:s><:#293,9360><+">line<-"> - The starting scan line of the required split screen.
  4086.  
  4087. <:s><:#286,9360>
  4088.  
  4089. <:s><:#572,9360>This function activates Mode X split screen and sets starting scan  line. The split screen resides on the bottom half of the screen and has a starting address of A000:0000 in video RAM.
  4090.  
  4091. <:s><:#286,9360>
  4092.  
  4093. <:s><:#1172,9360>It also updates <+">Page0_Offs<-"> to reflect the existence of the split screen region 
  4094. <+">MainScrnOffset<-"> is set to the offset of the first pixel beyond the split screen region. Other variable set are 
  4095. <+">Page1_Offs<-"> which is set to the same value as <+">Page0_Offs<-"> (See call sequence below), 
  4096. <+">ScrnLogicalHeight<-">, <+">ScrnPhysicalHeight<-">, <+">SplitScrnScanLine<-"> and 
  4097. <+">MaxScrollY<-">.
  4098.  
  4099. <:s><:#286,9360>
  4100.  
  4101. <:s><:#858,9360>This function cannot be called after double buffering has been activated, it will return an error. To configure your graphics environment the sequence of graphics calls is as follows although either or both steps b and c may be omitted:    
  4102.  
  4103. <:s><:#293,9360>    a) <+!><+">x_set_mode    <-"><-!>
  4104.  
  4105. <:s><:#293,9360>    b) <+!><+">x_set_splitscreen    <-"><-!>
  4106.  
  4107. <:s><:#293,9360>    c) <+!><+">x_set_doublebuffer  <-"><-!>
  4108.  
  4109. <:s><:#586,9360>Thus when you call this function successfully, double buffering is not active so 
  4110. <+">Page1_Offs<-"> is set to the same address as <+">Page0_Offs<-">.
  4111.  
  4112. <:s><:#286,9360>
  4113.  
  4114. <:s><:#865,9360><+!>WARNING:<-!> If you use one of the high resolution modes (376x564 as an extreme example) you may not have enough video ram for split screen and double buffering options since VGA video RAM is restricted to 64K.
  4115.  
  4116. <:s><:#286,9360>
  4117.  
  4118. <:s><+!>See Also:<-!> "What is a Split Screen?" and "What is double buffering?"<:p<* >>
  4119.  
  4120. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">x_set_doublebuffer<:X11,-32768;TOC 3 "x_set_doublebuffer"><-"><-!><:f>
  4121.  
  4122. <:s><:#293,9360><+!>C Prototype:<-!> extern WORD x_set_doublebuffer(WORD PageHeight);
  4123.  
  4124. <:s><:#286,9360>
  4125.  
  4126. <:s><:#293,9360><+">PageHeight<-"> - The height of the two double buffering virtual screens.  
  4127.  
  4128. <:s><:#286,9360>
  4129.  
  4130. <:s><:#293,9360><-!><+!>Returns:<-!> The closest possible height to the requested page height.
  4131.  
  4132. <:s><:#286,9360>
  4133.  
  4134. <:s><:#579,9360>This function sets up two double buffering virtual pages. <+">ErrorValue<-"> is set according to the success or failure of this command.
  4135.  
  4136. <:s><:#286,9360>
  4137.  
  4138. <:s><:#286,9360>Other variables set are:
  4139.  
  4140. <:s><:#293,9360>    <+">Page1_Offs<-"> - Offset of second virtual page    
  4141.  
  4142. <:s><:#286,9360>
  4143.  
  4144. <:s><:#293,9360>    <+">NonVisual_Offs<-"> - Offset of first non visible video ram byte    
  4145.  
  4146. <:s><:#286,9360>
  4147.  
  4148. <:s><:#293,9360>    <+">DoubleBufferActive<-"> - Flag    
  4149.  
  4150. <:s><:#286,9360>
  4151.  
  4152. <:s><:#293,9360>    <+">PageAddrTable<-"> - Table of Double buffering pages start offsets    
  4153.  
  4154. <:s><:#286,9360>
  4155.  
  4156. <:s><:#293,9360>    <+">ScrnLogicalHeight<-"><+"> <-">- Logical height of the double buffering pages    
  4157.  
  4158. <:s><:#286,9360>
  4159.  
  4160. <:s><:#293,9360>    <+">MaxScrollY<-"> - Max. vertical start address of physical screen within the virtual screen
  4161.  
  4162. <:s><:#286,9360>
  4163.  
  4164. <:s><:#865,9360><+!>WARNING<-!>: If you use one of the high resolution modes (376x564 as an extreme example) you may not have enough video ram for split screen and double buffering options since VGA video RAM is restricted to 64K.
  4165.  
  4166. <:s><:#286,9360>
  4167.  
  4168. <:s><:#293,9360><+!>See Also:<-!> "What is double buffering?" 
  4169.  
  4170. <:s><:#286,9360>
  4171.  
  4172. <:s><:#286,9360>
  4173.  
  4174. <:s><:#326,9360><:f280, Times New Roman,0,0,0><+!><+">x_triple_buffer
  4175.  
  4176. <:s><:#293,9360><+!>C Prototype: <-!>void x_triple_buffer( WORD PageHeight );
  4177.  
  4178. <:s><:#286,9360>
  4179.  
  4180. <:s><:#293,9360><+">PageHeight<-"> - The desired height of the virtual screen.
  4181.  
  4182. <:s><:#286,9360>
  4183.  
  4184. <:#1172,9360>This function behaves like <+!><+">x_double_buffer<-!><-"> but when used with 
  4185. <+!><+">x_install_vsync_handler<-!><-"> you can draw immediately after a page flip.  When 
  4186. <+!><+">x_page_flip<-!><-"> is called, <+">VisiblePageOffs<-"> is set to the page that will be displayed during the next vysnc.  Until then, 
  4187. <+">WaitingPageOffs <-">will be displayed. You can draw to <+">HiddenPageOffs<-">.<-">
  4188.  
  4189. <:s><:#286,9360>
  4190.  
  4191. <:s><:#293,9360><+!>See also: <-!>"What is triple buffering?" 
  4192.  
  4193. <:s><:#286,9360>
  4194.  
  4195. <:s><+!><+"><:p<* >>
  4196.  
  4197. <:#326,9360><-"><-"><+!><+"><:f280, Times New Roman,0,0,0><:X11,-32768;TOC 3 "x_hide_splitscreen">x_hide_splitscreen<-"><-!><:f>
  4198.  
  4199. <:s><:#293,9360><+!>C Prototype:<-!> extern void x_hide_splitscreen(void);
  4200.  
  4201. <:s><:#286,9360>
  4202.  
  4203. <:s><:#865,9360>This function hides an existing split screen by setting its starting scan line to the last physical screen scan line. 
  4204. <+">ScreenPhysicalHeight<-"> is adjusted but the <+">SplitScreenScanLine<-"> is not altered as it is required for restoring the split screen at a later stage.
  4205.  
  4206. <:s><:#286,9360>
  4207.  
  4208. <:s><:#293,9360><+!>WARNING<-!>: <+#>Only to be used if SplitScrnLine has been previously called<-#>
  4209.  
  4210. <:s><:#286,9360>
  4211.  
  4212. <:s><:#858,9360>Disabled for modes 5-11 (320x400-376x564). The memory for the initial split screen is reserved and the size limitations of these modes means any change in the split screen scan line will encroach on the split screen ram 
  4213.  
  4214. <:s><:#286,9360>
  4215.  
  4216. <:s><+!>See Also:<-!> "What is a split screen?"<:p<* >>
  4217.  
  4218. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">x_show_splitscreen<:X11,-32768;TOC 3 "x_show_splitscreen"><-"><-!><:f>
  4219.  
  4220. <:s><:#293,9360><+!>C Prototype:<-!> extern void x_show_splitscreen(void);
  4221.  
  4222. <:s><:#286,9360>
  4223.  
  4224. <:s><:#579,9360>Restores split screen start scan line to the initial split screen starting scan line as set by 
  4225. <+">SplitScrnScanLine<-">.  <+">ScreenPhysicalHeight<-"> is adjusted.
  4226.  
  4227. <:s><:#286,9360>
  4228.  
  4229. <:s><:#293,9360><+!>WARNING: <-!><+#> Only to be used if SplitScrnLine has been previously called.<-#>
  4230.  
  4231. <:s><:#286,9360>
  4232.  
  4233. <:s><:#858,9360>Disabled for modes 5-11 (320x400-376x564). The memory for the initial split screen is reserved and the size limitations of these modes means any change in the split screen scan line will encroach on the split screen ram
  4234.  
  4235. <:s><:#286,9360>
  4236.  
  4237. <:s><:#286,9360>
  4238.  
  4239. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_adjust_splitscreen">x_adjust_splitscreen<-"><-!><:f>
  4240.  
  4241. <:s><:#293,9360><+!>C Prototype:<-!> extern void x_adjust_splitscreen(WORD line);
  4242.  
  4243. <:s><:#286,9360>
  4244.  
  4245. <:s><:#293,9360><+">line <-">- The scan line at which the split screen is to start.
  4246.  
  4247. <:s><:#286,9360>
  4248.  
  4249. <:s><:#865,9360>Sets the split screen start scan line to a new scan line. Valid scan lines are between the initial split screen starting scan line and the last physical screen scan line. 
  4250. <+">ScreenPhysicalHeight<-"> is also adjusted.
  4251.  
  4252. <:s><:#286,9360>
  4253.  
  4254. <:s><:#293,9360><+!>WARNING:<-!> <+#>Only to be used if SplitScrnLine has been previously called.<-#>
  4255.  
  4256. <:s><:#286,9360>
  4257.  
  4258. <:s><:#858,9360>Disabled for modes 5-11 (320x400-376x564). The memory for the initial split screen is reserved and the size limitations of these modes means any change in the split screen scan line will encroach on the split screen ram
  4259.  
  4260. <:s><:#286,9360>
  4261.  
  4262. <:s><:#286,9360>
  4263.  
  4264. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">x_set_start_addr<:X11,-32768;TOC 3 "x_set_start_addr"><-"><-!><:f>
  4265.  
  4266. <:s><:#293,9360><+!>C Prototype:<-!> extern void x_set_start_addr(WORD X,WORD Y);
  4267.  
  4268. <:s><:#286,9360>
  4269.  
  4270. <:s><:#293,9360><+">X, Y<-"><+!> <-!>- coordinates of top left corner of physical screen within current virtual screen.
  4271.  
  4272. <:s><:#286,9360>
  4273.  
  4274. <:s><:#286,9360>Set Mode X non split screen physical start address within current virtual  page. 
  4275.  
  4276. <:s><:#286,9360><+#>
  4277.  
  4278. <:#586,9360><+!>WARNING: <-!>X must not exceed (Logical screen width - Physical screen width)  i.e. 
  4279. <+">MaxScrollX,<-"> and <+">Y<-"> must not exceed (Logical screen height -  Physical screen height) i.e. 
  4280. <+">MaxScrollY<-">.
  4281.  
  4282. <:s><:#286,9360>
  4283.  
  4284. <:s><:p<* >>
  4285.  
  4286. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_page_flip">x_page_flip<-"><-!><:f>
  4287.  
  4288. <:s><:#293,9360><+!>C Prototype:<-!> extern void x_page_flip(WORD X,WORD Y);
  4289.  
  4290. <:s><:#286,9360>
  4291.  
  4292. <:#579,9360><+">X,Y <-">- coordinates of top left corner of physical screen within the hidden virtual screen if double buffering is active, or the current virtual screen otherwise.
  4293.  
  4294. <:s><:#286,9360>
  4295.  
  4296. <:s><:#579,9360>Sets the physical screen start address within currently hidden virtual page and then flips pages. If double buffering is not active then this function is functionally equivalent to 
  4297. <+!><+">x_set_start_addr<-"><-!>.
  4298.  
  4299. <:s><:#286,9360>
  4300.  
  4301. <:#586,9360><+!>WARNING: <-!><+">X<-"> must not exceed (Logical screen width - Physical screen width)  i.e. 
  4302. <+">MaxScrollX<-">, and <+">Y<-"> must not exceed (Logical screen height -  Physical screen height) i.e. 
  4303. <+">MaxScrollY<-">.
  4304.  
  4305. <:s><:#286,9360>
  4306.  
  4307. <:s><:#286,9360>
  4308.  
  4309. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">x_text_mode<:X11,-32768;TOC 3 "x_text_mode"><-"><-!><:f>
  4310.  
  4311. <:s><:#293,9360><+!>C Prototype:<-!> extern void x_text_mode(void);
  4312.  
  4313. <:s><:#286,9360>
  4314.  
  4315. <:s><:#286,9360>Disables graphics mode.
  4316.  
  4317. <:s><:#286,9360>
  4318.  
  4319. <:s><:#286,9360>
  4320.  
  4321. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">x_set_cliprect<:X11,-32768;TOC 3 "x_set_cliprect"><-"><-!><:f>
  4322.  
  4323. <:s><:#293,9360><+!>C Prototype:<-!> extern void x_set_cliprect(WORD left,WORD top,WORD right, WORD bottom);
  4324.  
  4325. <:s><:#286,9360>
  4326.  
  4327. <:#293,9360><+">left, top<-"> - X and Y coordinates of the upper left corner of the clipping area.
  4328.  
  4329. <:s><:#286,9360>
  4330.  
  4331. <:s><:#293,9360><+">right, bottom<-"> - X and Y coordinates of the lower right corner of the clipping area.
  4332.  
  4333. <:s><:#286,9360>
  4334.  
  4335. <:s><:#286,9360>Defines the clipping rectangle for clipping versions of planar and video bitmap puts.
  4336.  
  4337. <:s><:#286,9360>
  4338.  
  4339. <:s><:#293,9360><+!>NOTE: <-!>Compiled bitmaps cannot be clipped.
  4340.  
  4341. <:s><:p<* >>
  4342.  
  4343. <+B><:#333,9360><:f280,2Times New Roman,0,0,0><+!>MODULE XPOINT<:X11,-32768;TOC 1 "MODULE XPOINT"><-!><:f>
  4344.  
  4345. <:s><:#286,9360>
  4346.  
  4347. <:s><:#286,9360>
  4348.  
  4349. <:s><:#286,9360>Point functions all MODE X 256 Color resolutions
  4350.  
  4351. <:s><:#286,9360>
  4352.  
  4353. <:s><:#286,9360>
  4354.  
  4355. <:#286,9360><+!><:X11,-32768;TOC 2 "SOURCES">SOURCES<-!>
  4356.  
  4357. <:s><:#286,9360>    xpoint.asm 
  4358.  
  4359. <:s><:#286,9360>    xpoint.inc 
  4360.  
  4361. <:s><:#286,9360>    xlib.inc 
  4362.  
  4363. <:s><:#286,9360>    model.inc
  4364.  
  4365. <:s><:#286,9360>
  4366.  
  4367. <:s><:#286,9360>
  4368.  
  4369. <:#286,9360><+!>C HEADER FILE<:X11,-32768;TOC 2 "C HEADER FILE"><-!>
  4370.  
  4371. <:s><:#286,9360>    xpoint.h
  4372.  
  4373. <:s><:#286,9360>
  4374.  
  4375. <:s><:p<* >>
  4376.  
  4377. <:#286,9360><+!>EXPORTED FUNCTIONS<:X11,-32768;TOC 2 "EXPORTED FUNCTIONS"><-!>
  4378.  
  4379. <:s><:#286,9360>
  4380.  
  4381. <:s><:#286,9360>
  4382.  
  4383. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">x_put_pix<:X11,-32768;TOC 3 "x_put_pix"><-"><-!><:f>
  4384.  
  4385. <:s><:#293,9360><+!>C Prototype:<-!> extern void x_put_pix(WORD X,WORD Y,WORD PageOffset, WORD Color);
  4386.  
  4387. <:s><:#286,9360>
  4388.  
  4389. <:s><:#293,9360><+">X, Y<-">  - Coordinates to draw the pixel at.
  4390.  
  4391. <:s><:#286,9360>
  4392.  
  4393. <:s><:#293,9360><+">PageOffset<-"> - Virtual page offset to draw on.
  4394.  
  4395. <:s><:#286,9360>
  4396.  
  4397. <:s><:#293,9360><+">Color<-"><+!> <-!>- The color to use.
  4398.  
  4399. <:s><:#286,9360>
  4400.  
  4401. <:s><:#286,9360>Draw a point of specified color.
  4402.  
  4403. <:s><:#293,9360><+">
  4404.  
  4405. <:s><:#293,9360><+">
  4406.  
  4407. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_get_pix">x_get_pix<-"><-!><:f>
  4408.  
  4409. <:s><:#293,9360><+!>C Prototype:<-!> extern WORD x_get_pix(WORD X, WORD Y, WORD PageBase);
  4410.  
  4411. <:s><:#286,9360>
  4412.  
  4413. <:s><:#293,9360><+">X, Y<-">  - Coordinates of  the pixel to get.
  4414.  
  4415. <:s><:#286,9360>
  4416.  
  4417. <:s><:#293,9360><+">PageOffset<-"> - Virtual page offset the pixel is located on.
  4418.  
  4419. <:s><:#286,9360>
  4420.  
  4421. <:s><:#293,9360><+!>Returns:<-!> The color value of the pixel.
  4422.  
  4423. <:s><:#286,9360>
  4424.  
  4425. <:s><:#293,9360>Read a pixel from the given coordinates<+"> <-">within the given virtual page.
  4426.  
  4427. <:s><:p<* >>
  4428.  
  4429. <+B><:#333,9360><:f280,2Times New Roman,0,0,0><+!>MODULE XRECT<:X11,-32768;TOC 1 "MODULE XRECT"><-!><:f>
  4430.  
  4431. <:s><:#286,9360>
  4432.  
  4433. <:s><:#286,9360>Screen rectangle display and manipulation functions
  4434.  
  4435. <:s><:#286,9360>
  4436.  
  4437. <:s><:#286,9360>
  4438.  
  4439. <:#286,9360><+!>SOURCES<:X11,-32768;TOC 2 "SOURCES"><-!>
  4440.  
  4441. <:s><:#286,9360>    xrect.asm 
  4442.  
  4443. <:s><:#286,9360>    xrect.inc 
  4444.  
  4445. <:s><:#286,9360>    xlib.inc 
  4446.  
  4447. <:s><:#286,9360>    model.inc
  4448.  
  4449. <:s><:#286,9360>
  4450.  
  4451. <:s><:#286,9360>
  4452.  
  4453. <:#286,9360><+!><:X11,-32768;TOC 2 "C HEADER FILE">C HEADER FILE<-!>
  4454.  
  4455. <:s><:#286,9360>    xrect.h
  4456.  
  4457. <:s><:#286,9360>
  4458.  
  4459. <:s><:p<* >>
  4460.  
  4461. <:#286,9360><+!>EXPORTED FUNCTIONS<:X11,-32768;TOC 2 "EXPORTED FUNCTIONS"><-!>
  4462.  
  4463. <:s><:#286,9360>
  4464.  
  4465. <:s><:#286,9360>
  4466.  
  4467. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_rect_pattern">x_rect_pattern<-"><-!><:f>
  4468.  
  4469. <:s><:#293,9360><+!>C Prototype:<-!> extern void x_rect_pattern(WORD StartX, WORD StartY, WORD EndX, 
  4470.  
  4471. <:s><:#286,9360>                              WORD EndY, WORD PageBase,BYTE far *Pattern);
  4472.  
  4473. <:s><:#286,9360>
  4474.  
  4475. <:s><:#293,9360><+">StartX, StartY<-"> - Coordinates of upper left hand corner of the rectangle.  
  4476.  
  4477. <:s><:#286,9360>
  4478.  
  4479. <:s><:#293,9360><+">EndX, EndY<-">  - Coordinates of lower right hand corner of  the rectangle.  
  4480.  
  4481. <:s><:#286,9360>
  4482.  
  4483. <:s><:#293,9360><+">PageBase<-">  - Offset of the virtual screen.  
  4484.  
  4485. <:s><:#286,9360>
  4486.  
  4487. <:#293,9360><+">Pattern<-"> - Pointer to the user defined pattern (16 bytes). 
  4488.  
  4489. <:s><:#286,9360>
  4490.  
  4491. <:s><:#286,9360>Mode X rectangle 4x4 pattern fill routine.
  4492.  
  4493. <:s><:#286,9360>
  4494.  
  4495. <:s><:#1151,9360>Upper left corner of pattern is always aligned to a multiple of 4 row and column. Works on all VGAs. Uses approach of copying the pattern to off-screen display memory, then loading the latches with the pattern for each scan line and filling each scan line f
  4496. our pixels at a time. Fills up to but not including the column at 
  4497. <+">EndX<-"> and the row at <+">EndY<-">. <+#>No clipping is performed<-#>.
  4498.  
  4499. <:s><:#286,9360>
  4500.  
  4501. <:s><:#579,9360><+!>WARNING:<-!> The VGA memory locations PATTERN_BUFFER (A000:FFFc) to A000:FFFF are reserved for the pattern buffer
  4502.  
  4503. <:s><:#286,9360>
  4504.  
  4505. <:s><+!>See Also:<-!> <+#>Doctor Dobbs Journal<-#> references.<:p<* >>
  4506.  
  4507. <:#326,9360><:f280, Times New Roman,0,0,0><+"><+!><:X11,-32768;TOC 3 "x_rect_pattern_clipped">x_rect_pattern_clipped<-!><-"><:f>
  4508.  
  4509. <:s><:#293,9360><-"><-!><+!>C Prototype:<-!> extern void x_rect_pattern_clipped(WORD StartX, WORD StartY, WORD EndX, 
  4510.  
  4511. <:s><:#286,9360>                                         WORD EndY, WORD PageBase,
  4512.  
  4513. <:s><:#286,9360>                                BYTE far *Pattern);
  4514.  
  4515. <:s><:#286,9360>
  4516.  
  4517. <:s><:#293,9360><+">StartX, StartY<-"> - Coordinates of upper left hand corner of the rectangle.  
  4518.  
  4519. <:s><:#286,9360>
  4520.  
  4521. <:s><:#293,9360><+">EndX, EndY<-">  - Coordinates of lower right hand corner of  the rectangle.  
  4522.  
  4523. <:s><:#286,9360>
  4524.  
  4525. <:s><:#293,9360><+">PageBase<-">  - Offset of the virtual screen.  
  4526.  
  4527. <:s><:#286,9360>
  4528.  
  4529. <:#293,9360><+">Pattern<-"> - Pointer to the user defined pattern (16 bytes). 
  4530.  
  4531. <:s><:#286,9360>
  4532.  
  4533. <:s><:#286,9360>Mode X rectangle 4x4 pattern fill routine.
  4534.  
  4535. <:s><:#286,9360>
  4536.  
  4537. <:s><:#1151,9360>Upper left corner of pattern is always aligned to a multiple of 4 row and column. Works on all VGAs. Uses approach of copying the pattern to off-screen display memory, then loading the latches with the pattern for each scan line and filling each scan line f
  4538. our pixels at a time. Fills up to but not including the column at 
  4539. <+">EndX<-"> and the row at <+">EndY<-">. <+#>Clipping is performed<-#>.
  4540.  
  4541. <:s><:#286,9360>
  4542.  
  4543. <:s><:#579,9360><+!>WARNING:<-!> The VGA memory locations PATTERN_BUFFER (A000:FFFc) to A000:FFFF are reserved for the pattern buffer
  4544.  
  4545. <:s><:#286,9360>
  4546.  
  4547. <:s><:#293,9360><+!>See Also:<-!> <+#>Doctor Dobbs Journal<-#> references.
  4548.  
  4549. <:s><:#286,9360>
  4550.  
  4551. <:s><:#286,9360>
  4552.  
  4553. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_rect_fill">x_rect_fill<-!><-"><:f><-">
  4554.  
  4555. <:s><:#293,9360><+!>C Prototype<-!>: extern void x_rect_fill(WORD StartX, WORD StartY, WORD EndX,
  4556.  
  4557. <:s><:#286,9360>                           WORD EndY,  WORD PageBase, WORD color);
  4558.  
  4559. <:s><:#286,9360>
  4560.  
  4561. <:s><:#293,9360><+">StartX, StartY<-"> - Coordinates of upper left hand corner of the rectangle.
  4562.  
  4563. <:s><:#286,9360>
  4564.  
  4565. <:s><:#293,9360><+">EndX, EndY<-"> - Coordinates of lower right hand corner of the rectangle.  
  4566.  
  4567. <:s><:#286,9360>
  4568.  
  4569. <:s><:#293,9360><+">PageBase<-"> - Offset of  the virtual screen.
  4570.  
  4571. <:s><:#286,9360>
  4572.  
  4573. <:s><:#293,9360><+">Color<-"> -color to use for fill
  4574.  
  4575. <:s><:#286,9360>
  4576.  
  4577. <:s><:#286,9360>Mode X rectangle solid color fill routine.  
  4578.  
  4579. <:s><:#286,9360>
  4580.  
  4581. <:#286,9360>Based on code originally published in DDJ Magazine by M. Abrash
  4582.  
  4583. <:s><:#286,9360>
  4584.  
  4585. <:s><+!>See Also:<-!> <+#>Doctor Dobbs Journal<-#> references.<:p<* >>
  4586.  
  4587. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">x_rect_fill_clipped<:X11,-32768;TOC 3 "x_rect_fill_clipped"><-"><-!><:f>
  4588.  
  4589. <:s><:#293,9360><+!>C Prototype<-!>: extern void x_rect_fill_clipped(WORD StartX, WORD StartY, WORD EndX,
  4590.  
  4591. <:s><:#286,9360>                                   WORD EndY,  WORD PageBase, WORD color);
  4592.  
  4593. <:s><:#286,9360>
  4594.  
  4595. <:s><:#293,9360><+">StartX, StartY<-"> - Coordinates of upper left hand corner of the rectangle.
  4596.  
  4597. <:s><:#286,9360>
  4598.  
  4599. <:s><:#293,9360><+">EndX, EndY<-"> - Coordinates of lower right hand corner of the rectangle.  
  4600.  
  4601. <:s><:#286,9360>
  4602.  
  4603. <:s><:#293,9360><+">PageBase<-"> - Offset of  the virtual screen.
  4604.  
  4605. <:s><:#286,9360>
  4606.  
  4607. <:s><:#293,9360><+">Color<-"> - The color to use for fill.
  4608.  
  4609. <:s><:#286,9360>
  4610.  
  4611. <:s><:#286,9360>Mode X rectangle solid color fill (With clipping) routine.
  4612.  
  4613. <:s><:#286,9360>
  4614.  
  4615. <:#286,9360>Based on code originally published in DDJ Magazine by M. Abrash
  4616.  
  4617. <:s><:#286,9360>
  4618.  
  4619. <:s><:#293,9360><+!>See Also:<-!> <+#>Doctor Dobbs Journal<-#> references.
  4620.  
  4621. <:s><:#286,9360>
  4622.  
  4623. <:s><:#286,9360>
  4624.  
  4625. <:s><:p<* >>
  4626.  
  4627. <:#333,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_cp_vid_rect">x_cp_vid_rect<-"><-!> 
  4628. <:f>
  4629.  
  4630. <:s><:#293,9360><+!>C Prototype:<-!> extern void x_cp_vid_rect(WORD SourceStartX, WORD SourceStartY, 
  4631.  
  4632. <:s><:#286,9360>                         WORD SourceEndX, WORD SourceEndY,
  4633.  
  4634. <:s><:#286,9360>                                WORD DestStartX, WORD DestStartY,
  4635.  
  4636. <:s><:#286,9360>                                        WORD SourcePageBase, WORD DestPageBase, 
  4637.  
  4638. <:s><:#286,9360>                                        WORD SourceBitmapWidth, WORD DestBitmapWidth);
  4639.  
  4640. <:s><:#286,9360>
  4641.  
  4642. <:s><:#293,9360><+">StartX, StartY<-">- Coordinates of  the upper left hand corner of the source rectangle.
  4643.  
  4644. <:s><:#286,9360>
  4645.  
  4646. <:s><:#293,9360><+">EndX, EndY<-"> - Coordinates of  the lower right hand corner of the source rectangle.
  4647.  
  4648. <:s><:#286,9360>
  4649.  
  4650. <:s><:#293,9360><+">DestStartX, DestStartY<-"> - Coordinates of the rectangle's destination.
  4651.  
  4652. <:s><:#286,9360>
  4653.  
  4654. <:s><:#293,9360><+">SourcePageBase<-">  - Source rectangle page offset.  
  4655.  
  4656. <:s><:#286,9360>
  4657.  
  4658. <:s><:#293,9360><+">DestPageBase<-"> - Destination rectangle's page offset.
  4659.  
  4660. <:s><:#286,9360>
  4661.  
  4662. <:s><:#579,9360><+">SourceBitmapWidth<-"> - The width of bitmap within the source virtual screen containing the source rectangle  
  4663.  
  4664. <:s><:#286,9360>
  4665.  
  4666. <:s><:#579,9360><+">DestBitmapWidth<-">  - The width of bitmap within the dest. virtual screen containing the destination rectangle
  4667.  
  4668. <:s><:#286,9360>
  4669.  
  4670. <:s><:#1151,9360>Mode X display memory to display memory copy routine. Left edge of source rectangle modulo 4 must equal left edge of destination rectangle modulo 4. Works on all VGAs. Uses approach of reading 4 pixels at a time from the source into the latches, then writin
  4671. g the latches to the destination. Copies up to but not including the column at 
  4672. <+">SrcEndX<-"> and the row at <+">SrcEndY<-">. 
  4673.  
  4674. <:s><:#293,9360><+#>No clipping is performed<-#>. <+!>Results are not guaranteed if the source and  destination overlap<-!>.
  4675.  
  4676. <:s><:#286,9360>
  4677.  
  4678. <:#286,9360>Based on code originally published in DDJ Magazine by M. Abrash
  4679.  
  4680. <:s><:#286,9360>
  4681.  
  4682. <:s><+!>See Also:<-!> <+#>Doctor Dobbs Journal<-#> references.<:p<* >>
  4683.  
  4684. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">x_shift_rect<:X11,-32768;TOC 3 "x_shift_rect"><-"><-!><:f>
  4685.  
  4686. <:s><:#293,9360><+!>C Prototype:<-!>  extern void x_shift_rect (WORD SrcLeft, WORD SrcTop, WORD SrcRight,
  4687.  
  4688. <:s><:#286,9360>                       WORD SrcBottom, WORD DestLeft, WORD DestTop,
  4689.  
  4690. <:s><:#286,9360>                       WORD ScreenOffs);
  4691.  
  4692. <:s><:#286,9360>
  4693.  
  4694. <:s><:#293,9360><+">SrcLeft, SrcTop<-"> - Coordinates of the upper left hand corner of the rectangle.
  4695.  
  4696. <:s><:#286,9360>
  4697.  
  4698. <:s><:#293,9360><+">SrcRight, SrcBottom <-">- Coordinates of the lower right hand corner of the rectangle.
  4699.  
  4700. <:s><:#286,9360>
  4701.  
  4702. <:s><:#293,9360><+">DestLeft, DestTop<-"> - Coordinates of the upper left corner of the destination.  
  4703.  
  4704. <:s><:#286,9360>
  4705.  
  4706. <:s><:#293,9360><+">ScreenOffs<-">  -  Offset of the virtual screen.
  4707.  
  4708. <:s><:#286,9360>
  4709.  
  4710. <:s><:#1716,9360>This function copies a rectangle of VRAM onto another area of  VRAM,  even if the destination overlaps with the source. It is designed for scrolling text up and down, and for moving large areas of screens around in tiling systems.  It rounds all horizontal 
  4711. coordinates to the nearest byte (4-column chunk) for the sake of speed. This means that 
  4712. <+#>it can NOT perform smooth horizontal scrolling<-#>. For that, either scroll the whole screen (minus the split screen), or copy smaller areas through system memory using the functions in the XPBITMAP module.
  4713.  
  4714. <:s><:#286,9360>
  4715.  
  4716. <:#879,9360><+">SrcRight<-"> is rounded up, and the left edges are rounded down, to ensure that the pixels pointed to by the arguments are inside the rectangle. That is, 
  4717. <+">SrcRight<-"> is treated as (<+">SrcRight<-">+3) <;><;> 2,  and 
  4718. <+">SrcLeft<-"> as <+">SrcLeft <-"><;><;> 2.
  4719.  
  4720. <:s><:#286,9360>
  4721.  
  4722. <:s><+!>NOTE:<-!> The width of the rectangle in bytes (width in pixels / 4)  cannot exceed 255.<:p<* >>
  4723.  
  4724. <+B><:#333,9360><:f280,2Times New Roman,0,0,0><+!>MODULE XPAL<:X11,-32768;TOC 1 "MODULE XPAL"><-!><:f>
  4725.  
  4726. <:s><:#286,9360>
  4727.  
  4728. <:s><:#286,9360>Palette functions for VGA 256 color modes.
  4729.  
  4730. <:s><:#286,9360>
  4731.  
  4732. <:#572,9360>All the functions in this module operate on two variations of the palette buffer, the raw and annotated buffers.
  4733.  
  4734. <:s><:#286,9360>
  4735.  
  4736. <:s><:#865,9360>All those functions ending in "raw" operate on the following palette structure: 
  4737. <+">BYTE:r0,g0,b0,r1,g1,b1,...rn,gn,bn<-">   No reference to the starting color index or number of colors stored  is contained in the structure.
  4738.  
  4739. <:s><:#286,9360>
  4740.  
  4741. <:s><:#286,9360>All those functions ending in "struc" operate on the following palette structure:
  4742.  
  4743. <:s><:#579,9360><+">BYTE:c,BYTE:n,BYTE:r0,g0,b0,r1,g1,b1,...rn,gn,bn<-">  where<+"> c<-"> is the starting color and<+"> n<-"> is the number of colors stored
  4744.  
  4745. <:s><:#286,9360>
  4746.  
  4747. <:s><:#579,9360><+!>WARNING:<-!> <+#>There is no validity checking in these functions<-#>. The onus is on the user to supply valid parameters to the functions.
  4748.  
  4749. <:s><:#286,9360>
  4750.  
  4751. <:s><:#286,9360>
  4752.  
  4753. <:#286,9360><+!>SOURCES<:X11,-32768;TOC 2 "SOURCES"><-!>
  4754.  
  4755. <:s><:#286,9360>    xpal.asm 
  4756.  
  4757. <:s><:#286,9360>    xpal.inc 
  4758.  
  4759. <:s><:#286,9360>    xlib.inc 
  4760.  
  4761. <:s><:#286,9360>    model.inc
  4762.  
  4763. <:s><:#286,9360>
  4764.  
  4765. <:s><:#286,9360>
  4766.  
  4767. <:#286,9360><+!><:X11,-32768;TOC 2 "C HEADER FILE">C HEADER FILE<-!>
  4768.  
  4769. <:s><:#286,9360>    xpal.h
  4770.  
  4771. <:s><:#286,9360>
  4772.  
  4773. <:s><:p<* >>
  4774.  
  4775. <:#286,9360><+!>EXPORTED FUNCTIONS<:X11,-32768;TOC 2 "EXPORTED FUNCTIONS"><-!>
  4776.  
  4777. <:s><:#286,9360>
  4778.  
  4779. <:#333,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_get_pal_raw">x_get_pal_raw<-"><-!> 
  4780. <:f>
  4781.  
  4782. <:s><:#293,9360><+!>C Prototype:<-!> extern void x_get_pal_raw(BYTE far * pal,WORD num_clrs, WORD index);
  4783.  
  4784. <:s><:#286,9360>
  4785.  
  4786. <:#293,9360><+">pal<-"> - Pointer to a buffer to receive the raw palette.
  4787.  
  4788. <:s><:#286,9360>
  4789.  
  4790. <:s><:#293,9360><+">num_clrs<-"> - The number of colors to get.
  4791.  
  4792. <:s><:#286,9360>
  4793.  
  4794. <:s><:#293,9360><+">index <-">- Starting color number to get.
  4795.  
  4796. <:s><:#286,9360>
  4797.  
  4798. <:#286,9360>Read DAC palette into raw buffer with interrupts disabled  i.e. BYTE r1,g1,b1,r1,g2,b2...rn,gn,bn
  4799.  
  4800. <:s><:#286,9360>
  4801.  
  4802. <:s><:#293,9360><+!>WARNING:<-!> Memory for the palette buffers must all be pre-allocated.
  4803.  
  4804. <:s><:#286,9360><+!><+">
  4805.  
  4806. <:s><:#286,9360><+!><+">
  4807.  
  4808. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">x_get_pal_struc<:X11,-32768;TOC 3 "x_get_pal_struc"><-"><-!><:f>
  4809.  
  4810. <:s><:#293,9360><+!>C Prototype:<-!> extern void x_get_pal_struc(BYTE far *pal, WORD num_clrs, WORD index);
  4811.  
  4812. <:s><:#286,9360>
  4813.  
  4814. <:#293,9360><+">pal<-"> - Pointer to a buffer to receive the palette structure.
  4815.  
  4816. <:s><:#286,9360>
  4817.  
  4818. <:s><:#293,9360><+">num_clrs <-">- The number of colors to get.
  4819.  
  4820. <:s><:#286,9360>
  4821.  
  4822. <:s><:#293,9360><+">index <-">- The starting color number to get.
  4823.  
  4824. <:s><:#286,9360>
  4825.  
  4826. <:#572,9360>Read DAC palette into annotated type buffer with interrupts disabled  i.e. BYTE colors to skip, BYTE colors to set, r1,g1,b1,r1,g2,b2...rn,gn,bn
  4827.  
  4828. <:s><:#286,9360>
  4829.  
  4830. <:s><:#293,9360><+!>WARNING:<-!> Memory for the palette buffers must all be pre-allocated.
  4831.  
  4832. <:s><:#286,9360>
  4833.  
  4834. <:s><:#286,9360>
  4835.  
  4836. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_put_pal_raw">x_put_pal_raw<-"><-!><:f>
  4837.  
  4838. <:s><:#293,9360><+!>C Prototype:<-!> extern void x_put_pal_raw(BYTE far *pal, WORD num_clrs,  WORD index);
  4839.  
  4840. <:s><:#293,9360><+">
  4841.  
  4842. <:#293,9360><+">pal<-"> - Pointer to a buffer containing the raw palette.
  4843.  
  4844. <:s><:#286,9360>
  4845.  
  4846. <:s><:#293,9360><+">num_clrs<-"> - The number of colors to put.
  4847.  
  4848. <:s><:#286,9360>
  4849.  
  4850. <:s><:#293,9360><+">index <-">- Starting color number to put.
  4851.  
  4852. <:s><:#286,9360>
  4853.  
  4854. <:#572,9360>Write DAC palette from raw buffer with interrupts disabled  i.e. BYTE r1,g1,b1,r1,g2,b2...rn,gn,bn
  4855.  
  4856. <:s><:#286,9360>
  4857.  
  4858. <:s><:p<* >>
  4859.  
  4860. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">x_put_pal_struc<:X11,-32768;TOC 3 "x_put_pal_struc"><-"><-!><:f>
  4861.  
  4862. <:s><:#293,9360><+!>C Prototype:<-!> extern void x_put_pal_struc(BYTE far * pal);
  4863.  
  4864. <:s><:#293,9360><+">
  4865.  
  4866. <:#293,9360><+">pal<-"> - Pointer to a buffer containing the palette structure.
  4867.  
  4868. <:s><:#286,9360>
  4869.  
  4870. <:#572,9360>Write DAC palette from annotated type buffer with interrupts disabled  i.e. BYTE colors to skip, BYTE colors to set, r1,g1,b1,r1,g2,b2...rn,gn,bn
  4871.  
  4872. <:s><:#286,9360>
  4873.  
  4874. <:s><:#286,9360>
  4875.  
  4876. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_set_rgb">x_set_rgb 
  4877. <-"><-!><:f>
  4878.  
  4879. <:s><:#293,9360><+!>C Prototype:<-!> extern x_set_rgb(BYTE color,BYTE red_c,BYTE green_c, BYTE blue_c);
  4880.  
  4881. <:s><:#286,9360>
  4882.  
  4883. <:s><:#293,9360><+">color<-"> - The color number to modify.
  4884.  
  4885. <:s><:#286,9360>
  4886.  
  4887. <:s><:#293,9360><+">red_c <-">- The red component for this color.
  4888.  
  4889. <:s><:#286,9360>
  4890.  
  4891. <:s><:#293,9360><+">green_c<-"> - The green component for this color.
  4892.  
  4893. <:s><:#286,9360>
  4894.  
  4895. <:s><:#293,9360><+">blue_c<-"> - The blue component for this color.
  4896.  
  4897. <:s><:#286,9360>
  4898.  
  4899. <:s><:#286,9360>Set the RGB components of a VGA color
  4900.  
  4901. <:s><:#286,9360>
  4902.  
  4903. <:s><:#286,9360>
  4904.  
  4905. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_rot_pal_struc">x_rot_pal_struc<-"><-!><:f>
  4906.  
  4907. <:s><:#293,9360><+!>C Prototype:<-!> extern void x_rot_pal_struc(BYTE far * pal, WORD direction);
  4908.  
  4909. <:s><:#286,9360>
  4910.  
  4911. <:#293,9360><+">pal <-">- Pointer to the palette structure to rotate.
  4912.  
  4913. <:s><:#286,9360>
  4914.  
  4915. <:s><:#293,9360><+">direction<-"> - The direction to rotate the palette.
  4916.  
  4917. <:s><:#286,9360>
  4918.  
  4919. <:s><:#286,9360>Rotate annotated palette buffer entries. Direction 0 = backward,  1 = forward.
  4920.  
  4921. <:s><:#286,9360>
  4922.  
  4923. <:s><:#286,9360>
  4924.  
  4925. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_rot_pal_raw">x_rot_pal_raw<-"><-!><:f>
  4926.  
  4927. <:s><:#293,9360><+!>C Prototype<-!>: extern x_rot_pal_raw(BYTE far * pal, WORD direction, WORD num_colrs);
  4928.  
  4929. <:s><:#286,9360>
  4930.  
  4931. <:#293,9360><+">pal<-"> - Pointer to the raw palette buffer to rotate.
  4932.  
  4933. <:s><:#286,9360>
  4934.  
  4935. <:s><:#293,9360><+">direction<-"> - The direction to rotate the palette.
  4936.  
  4937. <:s><:#286,9360>
  4938.  
  4939. <:s><:#293,9360><+">num_colrs<-"> - The number of colors in the buffer.
  4940.  
  4941. <:s><:#286,9360>
  4942.  
  4943. <:s>Rotate a raw palette buffer. Direction 0 = backward,  1 = forward.<:p<* >>
  4944.  
  4945. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">x_put_contrast_pal_struc<:X11,-32768;TOC 3 "x_put_contrast_pal_struc"><-"><-!><:f>
  4946.  
  4947. <:s><:#293,9360><+!>C Prototype:<-!> extern  void x_put_contrast_pal_struc(BYTE far * pal, BYTE  intensity);
  4948.  
  4949. <:s><:#286,9360>
  4950.  
  4951. <:#293,9360><+">pal<-"> - A pointer to the palette structure to modify.
  4952.  
  4953. <:s><:#286,9360>
  4954.  
  4955. <:s><:#293,9360><+">intensity<-"> - Number of units to decrement the palette.
  4956.  
  4957. <:s><:#286,9360>
  4958.  
  4959. <:#572,9360>Write DAC palette from annotated type buffer with specified intensity  adjustment (i.e. palette entries are decremented where possible by "intensity" units).
  4960.  
  4961. <:s><:#286,9360>Designed for fading in or out a palette without using an intermediate working palette buffer! 
  4962.  
  4963. <:#286,9360>(Slow but memory efficient ... OK for small  pal structs}
  4964.  
  4965. <:s><:#286,9360>
  4966.  
  4967. <:s><:#286,9360>
  4968.  
  4969. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_transpose_pal_struc">x_transpose_pal_struc<-"><-!><:f>
  4970.  
  4971. <:s><:#293,9360><+!>C Prototype<-!>: extern void x_transpose_pal_struc(BYTE far * pal, WORD StartColor);
  4972.  
  4973. <:s><:#286,9360>
  4974.  
  4975. <:#293,9360><+">pal <-">- Pointer to the palette structure to modify.
  4976.  
  4977. <:s><:#286,9360>
  4978.  
  4979. <:s><:#293,9360><+">StartColor<-"> - Starting color index.
  4980.  
  4981. <:s><:#286,9360>
  4982.  
  4983. <:s><:#572,9360>Write DAC palette from annotated type buffer with interrupts disabled  starting at a new palette index.
  4984.  
  4985. <:s><:#286,9360><+!><+">
  4986.  
  4987. <:s><:#286,9360><+!><+">
  4988.  
  4989. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_cpcontrast_pal_struc">x_cpcontrast_pal_struc<-"><-!><:f>
  4990.  
  4991. <:#293,9360><+!>C Prototype<-!>: extern WORD x_cpcontrast_pal_struc(BYTE far *src_pal,  BYTE far *dest_pal,
  4992.  
  4993. <:s><:#286,9360>                             BYTE Intensity);
  4994.  
  4995. <:s><:#286,9360>
  4996.  
  4997. <:#293,9360><+">src_pal<-"> - Pointer to the source palette structure.
  4998.  
  4999. <:s><:#286,9360>
  5000.  
  5001. <:#293,9360><+">dest_pal<-"><+"> <-">- Pointer to the destination palette structure.
  5002.  
  5003. <:s><:#286,9360>
  5004.  
  5005. <:s><:#293,9360><+">Intensity<-"> - Number of units to decrement the palette.
  5006.  
  5007. <:s><:#286,9360>
  5008.  
  5009. <:s>Copy one annotated palette buffer to another making the intensity adjustment. Used in fading in and out fast and smoothly.<:p<* >>
  5010.  
  5011. <+B><:#333,9360><:f280,2Times New Roman,0,0,0><+!>MODULE XLINE<:X11,-32768;TOC 1 "MODULE XLINE"><-!><:f>
  5012.  
  5013. <:s><:#286,9360>
  5014.  
  5015. <:s><:#286,9360>
  5016.  
  5017. <:s><:#286,9360>Line Drawing functions.
  5018.  
  5019. <:s><:#286,9360>
  5020.  
  5021. <:s><:#286,9360>
  5022.  
  5023. <:#286,9360><+!>SOURCES<:X11,-32768;TOC 2 "SOURCES"><-!>
  5024.  
  5025. <:s><:#286,9360>    xline.asm 
  5026.  
  5027. <:s><:#286,9360>    xline.inc 
  5028.  
  5029. <:s><:#286,9360>    xlib.inc 
  5030.  
  5031. <:s><:#286,9360>    model.inc
  5032.  
  5033. <:s><:#286,9360>
  5034.  
  5035. <:s><:#286,9360>
  5036.  
  5037. <:#286,9360><+!><:X11,-32768;TOC 2 "C HEADER FILE">C HEADER FILE<-!>
  5038.  
  5039. <:s><:#286,9360>    xline.h
  5040.  
  5041. <:s><:#286,9360>
  5042.  
  5043. <:s><:p<* >>
  5044.  
  5045. <:#286,9360><+!>EXPORTED FUNCTIONS<:X11,-32768;TOC 2 "EXPORTED FUNCTIONS"><-!>
  5046.  
  5047. <:s><:#286,9360>
  5048.  
  5049. <:s><:#286,9360>
  5050.  
  5051. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">x_line<:X11,-32768;TOC 3 "x_line"><-"><-!><:f>
  5052.  
  5053. <:s><:#293,9360><+!>C Prototype: <-!>extern void x_line(WORD x0,WORD y0,WORD x1,WORD y1, 
  5054.  
  5055. <:s><:#286,9360>                     WORD color,WORD PageBase);
  5056.  
  5057. <:s><:#286,9360>
  5058.  
  5059. <:s><:#293,9360><+">x0<-"> - Starting X coordinate.
  5060.  
  5061. <:s><:#286,9360>
  5062.  
  5063. <:s><:#293,9360><+">y0<-"> - Starting Y coordinate.
  5064.  
  5065. <:s><:#286,9360>
  5066.  
  5067. <:s><:#293,9360><+">x1<-"> - Ending X coordinate
  5068.  
  5069. <:s><:#286,9360>
  5070.  
  5071. <:#293,9360><+">y1 <-">- Ending Y coordinate.
  5072.  
  5073. <:s><:#286,9360>
  5074.  
  5075. <:s><:#293,9360><+">color<-"> - The color to use for the line.
  5076.  
  5077. <:s><:#286,9360>
  5078.  
  5079. <:#293,9360><+">PageBase<-"> - The page offset on which to draw the line.
  5080.  
  5081. <:s><:#286,9360>
  5082.  
  5083. <:s><:#286,9360>Draw a line with the specified end points in the specified page.
  5084.  
  5085. <:s><+#>No Clipping is performed<-#>.<:p<* >>
  5086.  
  5087. <+B><:#333,9360><:f280,2Times New Roman,0,0,0><+!>MODULE XTEXT<:X11,-32768;TOC 1 "MODULE XTEXT"><-!><:f>
  5088.  
  5089. <:s><:#286,9360>
  5090.  
  5091. <:s><:#286,9360>
  5092.  
  5093. <:s><:#286,9360>Mode X text display functions.
  5094.  
  5095. <:s><:#286,9360>
  5096.  
  5097. <:s><:#286,9360>
  5098.  
  5099. <:#286,9360><+!>SOURCES<:X11,-32768;TOC 2 "SOURCES"><-!>
  5100.  
  5101. <:s><:#286,9360>    xtext.asm 
  5102.  
  5103. <:s><:#286,9360>    xtext.inc 
  5104.  
  5105. <:s><:#286,9360>    xlib.inc 
  5106.  
  5107. <:s><:#286,9360>    model.inc
  5108.  
  5109. <:s><:#286,9360>    xprintf.c
  5110.  
  5111. <:s><:#286,9360>
  5112.  
  5113. <:s><:#286,9360>
  5114.  
  5115. <:#286,9360><+!>C HEADER FILE<:X11,-32768;TOC 2 "C HEADER FILE"><-!>
  5116.  
  5117. <:s><:#286,9360>    xtext.h
  5118.  
  5119. <:s><:#286,9360>
  5120.  
  5121. <:s><:#286,9360>
  5122.  
  5123. <:#286,9360><+!><:X11,-32768;TOC 2 "MACROS">MACROS<-!>
  5124.  
  5125. <:s><:#286,9360>    FONT_8x8  0   
  5126.  
  5127. <:s><:#286,9360>    FONT_8x15 1   
  5128.  
  5129. <:s><:#286,9360>    FONT_USER 2
  5130.  
  5131. <:s><:#286,9360>
  5132.  
  5133. <:s><:#286,9360>
  5134.  
  5135. <:#286,9360><+!>EXPORTED VARIABLES<:X11,-32768;TOC 2 "EXPORTED VARIABLES"><-!>
  5136.  
  5137. <:s><:#286,9360>
  5138.  
  5139. <:s><:#293,9360><+!>NOTE:<-!> <+#>All variables are read only<-#>. If you modify them the results may be unpredictable.
  5140.  
  5141. <:s><:#286,9360>
  5142.  
  5143. <:s><:#293,9360><+">CharHeight<-">  BYTE - Height of current inbuilt character set.
  5144.  
  5145. <:s><:#286,9360>
  5146.  
  5147. <:s><:#293,9360><+">CharWidth<-">  BYTE - Width of current inbuilt character set.
  5148.  
  5149. <:s><:#286,9360>
  5150.  
  5151. <:s><:#293,9360><+">FirstChar<-">  BYTE - First character of current inbuilt character set.
  5152.  
  5153. <:s><:#286,9360>
  5154.  
  5155. <:s><:#293,9360><+">UserCharHeight<-">  BYTE - Height of current user character set.
  5156.  
  5157. <:s><:#286,9360>
  5158.  
  5159. <:s><:#293,9360><+">UserCharWidth<-">  BYTE - Width of current user character set.
  5160.  
  5161. <:s><:#286,9360>
  5162.  
  5163. <:s><:#293,9360><+">UserFirstCh<-">  BYTE - First character of current user character set.
  5164.  
  5165. <:s><:#286,9360>
  5166.  
  5167. <:s><:p<* >>
  5168.  
  5169. <:#286,9360><+!>EXPORTED FUNCTIONS<:X11,-32768;TOC 2 "EXPORTED FUNCTIONS"><-!>
  5170.  
  5171. <:s><:#286,9360>
  5172.  
  5173. <:s><:#286,9360>
  5174.  
  5175. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_text_init">x_text_init<-"><-!><:f>
  5176.  
  5177. <:#293,9360><+!>C Prototype<-!>: extern WORD x_text_init( void);
  5178.  
  5179. <:s><:#286,9360>
  5180.  
  5181. <:s><:#286,9360>Initializes the Mode X text driver and sets the default font (VGA ROM 8x8)
  5182.  
  5183. <:s><:#286,9360>
  5184.  
  5185. <:s><:#286,9360>
  5186.  
  5187. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_set_font">x_set_font<-"><-!><:f>
  5188.  
  5189. <:s><:#293,9360><+!>C Prototype:<-!> extern void x_set_font(WORD FontId);
  5190.  
  5191. <:s><:#286,9360>
  5192.  
  5193. <:s><:#293,9360><+">FontId<-"> - The font number you wish to use (See below)
  5194.  
  5195. <:s><:#286,9360>
  5196.  
  5197. <:s><:#572,9360>Select the working font where 0 = VGA ROM 8x8, 1 = VGA ROM 8x14  2 = User defined bitmapped font.
  5198.  
  5199. <:s><:#286,9360>
  5200.  
  5201. <:s><:#293,9360><+!>WARNING:<-!> A user font must be registered before setting <+">FontID<-"> to 2.
  5202.  
  5203. <:s><:#286,9360>
  5204.  
  5205. <:s><:#293,9360><+!>See Also:<-!>  Defines for this module.
  5206.  
  5207. <:s><:#286,9360>
  5208.  
  5209. <:s><:#286,9360>
  5210.  
  5211. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_register_userfont">x_register_userfont<-"><-!><:f>
  5212.  
  5213. <:#293,9360><+!>C Prototype:<-!> extern void x_register_userfont( char far *UserFontPtr);
  5214.  
  5215. <:s><:#286,9360>
  5216.  
  5217. <:s><:#293,9360><+">UserFontPtr<-"> - A pointer to the user font structure.
  5218.  
  5219. <:s><:#286,9360>
  5220.  
  5221. <:s><:#572,9360>Register a user font for later selection. Only one user font can be registered at any given time. Registering a user font deregisters the previous user font. User fonts may be at most 8 pixels wide.
  5222.  
  5223. <:s><:#286,9360>
  5224.  
  5225. <:s><:#286,9360><+!>USER FONT STRUCTURE<-!>
  5226.  
  5227. <:#286,9360>    Word:  ASCII code of first char in font  
  5228.  
  5229. <:s><:#286,9360>    Byte:  Height of chars in font  
  5230.  
  5231. <:s><:#286,9360>    Byte:  Width of chars in font  
  5232.  
  5233. <:s><:#286,9360>    n*h*Byte: the font data where n = number of chars and h = height of chars
  5234.  
  5235. <:s><:#286,9360>
  5236.  
  5237. <:s><:#579,9360><+!>WARNING:<-!> The onus is on the program to ensure that all characters drawn whilst this font is active, are within the range of characters defined.
  5238.  
  5239. <:s><:#286,9360>
  5240.  
  5241. <:s><:p<* >>
  5242.  
  5243. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">x_char_put<:X11,-32768;TOC 3 "x_put_char"><-"><-!><:f>
  5244.  
  5245. <:s><:#293,9360><+!>C Prototype:<-!> extern void x_char_put(char ch,WORD X,WORD Y,WORD PgOffs,  
  5246.  
  5247. <:s><:#286,9360>                     WORD Color);
  5248.  
  5249. <:s><:#286,9360>
  5250.  
  5251. <:s><:#293,9360><+">ch<-"> -  Char to draw  
  5252.  
  5253. <:s><:#286,9360>
  5254.  
  5255. <:#293,9360><+">x, y <-">- Screen coordinates at which to draw ch  
  5256.  
  5257. <:s><:#286,9360>
  5258.  
  5259. <:#293,9360><+">ScrnOffs<-"> - Starting offset of page on which to draw  
  5260.  
  5261. <:s><:#286,9360>
  5262.  
  5263. <:s><:#293,9360><+">Color<-">  - Color of the text
  5264.  
  5265. <:s><:#286,9360>
  5266.  
  5267. <:s><:#286,9360>Draw a text character at the specified location with the specified color.
  5268.  
  5269. <:s><:#286,9360><+!>
  5270.  
  5271. <:s><:#293,9360><+!>WARNING:<-!> InitTextDriver must be called before using this function
  5272.  
  5273. <:s><:#286,9360> 
  5274.  
  5275. <:s><:#286,9360>
  5276.  
  5277. <:#333,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_printf ">x_printf<-"> 
  5278. <-!><:f>
  5279.  
  5280. <:s><:#293,9360><+!>C Prototype<-!>: void x_printf(int x, int y, unsigned ScrnOffs, int color, char *ln,...);
  5281.  
  5282. <:s><:#286,9360>
  5283.  
  5284. <:#293,9360><+">x, y <-">-  screen coordinates at which to draw ch  
  5285.  
  5286. <:s><:#286,9360>
  5287.  
  5288. <:#293,9360><+">ScrnOffs<-"> -  Starting offset of page on which to draw  
  5289.  
  5290. <:s><:#286,9360>
  5291.  
  5292. <:s><:#293,9360><+">Color<-">    -  Color of the text
  5293.  
  5294. <:s><:#286,9360>
  5295.  
  5296. <:s><:#293,9360><+">ln<-"> - A pointer to a text string containing formating codes.
  5297.  
  5298. <:s><:#286,9360>
  5299.  
  5300. <:s><:#293,9360>Parameters beyond <+">Color<-"> conform to the standard printf parameters.
  5301.  
  5302. <:s><:#286,9360>
  5303.  
  5304. <:s><:#286,9360>Display formated text in the specified color. 
  5305.  
  5306. <:s><:#286,9360>
  5307.  
  5308. <:s><:p<* >>
  5309.  
  5310. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_bgprintf">x_bgprintf<-"><-!><:f>
  5311.  
  5312. <:s><:#293,9360><+!>C Prototype:<-!> void x_bgprintf(int x, int y, unsigned ScrnOffs, int fgcolor, int bgcolor, char *ln,...);
  5313.  
  5314. <:s><:#286,9360>
  5315.  
  5316. <:#293,9360><+">x, y<-"> -  Screen coordinates at which to draw ch.  
  5317.  
  5318. <:s><:#286,9360>
  5319.  
  5320. <:s><:#293,9360><+">ScrnOffs<-"> -  Page offset on which to draw.  
  5321.  
  5322. <:s><:#286,9360>
  5323.  
  5324. <:s><:#293,9360><+">fgcolor<-"> -  Color of the text foreground.  
  5325.  
  5326. <:s><:#286,9360>
  5327.  
  5328. <:s><:#293,9360><+">bgcolor<-">  -  Color of the text background.
  5329.  
  5330. <:s><:#286,9360>
  5331.  
  5332. <:s><:#579,9360><+">ln<-"> - Pointer to a text string that contains formating commands that conform to the printf commands.
  5333.  
  5334. <:s><:#286,9360>
  5335.  
  5336. <:#293,9360>Parameters beyond <+">bgcolor<-"> conform to the standard printf parameters.
  5337.  
  5338. <:s><:#286,9360>
  5339.  
  5340. <:s><:#286,9360>Display formatted text in the specified foreground and background colors.
  5341.  
  5342. <:s><:#286,9360>
  5343.  
  5344. <:s><:#286,9360>
  5345.  
  5346. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_get_char_width">x_get_char_width<-"><-!><:f>
  5347.  
  5348. <:s><:#293,9360><+!>C Prototype:<-!> unsigned int x_get_char_width(char ch)
  5349.  
  5350. <:s><:#286,9360>
  5351.  
  5352. <:s><:#293,9360><+">ch <-">- Character to get the width of.
  5353.  
  5354. <:s><:#286,9360>
  5355.  
  5356. <:s><+!>Returns:<-!> The width the requested character.<:p<* >>
  5357.  
  5358. <+B><:#333,9360><:f280,2Times New Roman,0,0,0><+!>MODULE XPBITMAP<:X11,-32768;TOC 1 "MODULE XPBITMAP"><-!><:f>
  5359.  
  5360. <+B><:s><:#286,9360>
  5361.  
  5362. <:s><:#286,9360>
  5363.  
  5364. <:s><:#572,9360>This module implements a set of functions to operate on planar bitmaps.  Planar bitmaps as used by these functions have the following structure:
  5365.  
  5366. <:s><:#286,9360>
  5367.  
  5368. <:s><:#286,9360>    BYTE 0                     The bitmap width in bytes (4 pixel groups) range 1..255  
  5369.  
  5370. <:s><:#286,9360>    BYTE 1                     The bitmap height in rows range 1..255  
  5371.  
  5372. <:s><:#286,9360>    BYTE 2..n1                 The plane 0 pixels width*height bytes  
  5373.  
  5374. <:s><:#286,9360>    BYTE n1..n2        The plane 1 pixels width*height bytes  
  5375.  
  5376. <:s><:#286,9360>    BYTE n2..n3                The plane 2 pixels width*height bytes  
  5377.  
  5378. <:s><:#286,9360>    BYTE n3..n4                The plane 3 pixels width*height bytes
  5379.  
  5380. <:s><:#286,9360>
  5381.  
  5382. <:#1144,9360>These functions provide the fastest possible bitmap blts from system ram to video and further, the single bitmap is applicable to all pixel alignments. The masked functions do not need separate masks since all non zero pixels are considered to be masking pi
  5383. xels,  hence if a pixel is 0 the  corresponding screen destination pixel is left unchanged.
  5384.  
  5385. <:s><:#286,9360>
  5386.  
  5387. <:s><:#286,9360>
  5388.  
  5389. <:#286,9360><+!>SOURCES<:X11,-32768;TOC 2 "SOURCES"><-!>
  5390.  
  5391. <:s><:#286,9360>    xpbitmap.asm 
  5392.  
  5393. <:s><:#286,9360>    xpbitmap.inc 
  5394.  
  5395. <:s><:#286,9360>    xlib.inc 
  5396.  
  5397. <:s><:#286,9360>    model.inc
  5398.  
  5399. <:s><:#286,9360>
  5400.  
  5401. <:s><:#286,9360>
  5402.  
  5403. <:#286,9360><+!><:X11,-32768;TOC 2 "C HEADER FILE">C HEADER FILE<-!>
  5404.  
  5405. <:s><:#286,9360>    xpbitmap.h
  5406.  
  5407. <:s><:#286,9360>
  5408.  
  5409. <:s><:p<* >>
  5410.  
  5411. <:#286,9360><+!><:X11,-32768;TOC 2 "EXPORTED FUNCTIONS">EXPORTED FUNCTIONS<-!>
  5412.  
  5413. <:s><:#286,9360>
  5414.  
  5415. <:s><:#286,9360>
  5416.  
  5417. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_put_masked_pbm">x_put_masked_pbm<-"><-!><:f>
  5418.  
  5419. <:s><:#293,9360><+!>C Prototype<-!>: extern void x_put_masked_pbm(WORD X, WORD Y, WORD ScrnOffs, 
  5420.  
  5421. <:s><:#286,9360>                           BYTE far * Bitmap);
  5422.  
  5423. <:s><:#286,9360>
  5424.  
  5425. <:s><:#293,9360><+">x, y<-"> - Coordinates for the upper left corner of the bitmap.
  5426.  
  5427. <:s><:#286,9360>
  5428.  
  5429. <:s><:#293,9360><+">ScrnOffs <-">- Page offset to place the bitmap at.
  5430.  
  5431. <:s><:#286,9360>
  5432.  
  5433. <:#293,9360><+">Bitmap<-"> - Pointer to the planar bitmap structure.
  5434.  
  5435. <:s><:#286,9360>
  5436.  
  5437. <:s><:#572,9360>Mask write a planar bitmap from system ram to video ram. All zero source bitmap bytes indicate destination byte to be left unchanged.
  5438.  
  5439. <:s><:#286,9360><+!>
  5440.  
  5441. <:#293,9360><+!>NOTE<-!><+!>: <-!>Width is in bytes i.e. lots of 4 pixels
  5442.  
  5443. <:s><:#286,9360>
  5444.  
  5445. <:s><:#579,9360><+!>LIMITATIONS:<-!> <+#>No clipping is supported.<-#> Only supports bitmaps with widths which are a multiple of  4 pixels
  5446.  
  5447. <:s><:#286,9360>
  5448.  
  5449. <:s><:#293,9360><+!>See Also:<-!> XBMTOOLS module for linear <<-<;> planar bitmap conversion functions.
  5450.  
  5451. <:s><:#286,9360>
  5452.  
  5453. <:s><:#286,9360>
  5454.  
  5455. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_put_pbm">x_put_pbm<-"><-!><:f>
  5456.  
  5457. <:s><:#293,9360><+!>C Prototype<-!>: extern void x_put_pbm(WORD X, WORD Y, WORD ScrnOffs, 
  5458.  
  5459. <:s><:#286,9360>                     BYTE far *Bitmap);
  5460.  
  5461. <:s><:#286,9360>
  5462.  
  5463. <:s><:#293,9360><+">x, y<-"> - Coordinates for the upper left corner of the bitmap.
  5464.  
  5465. <:s><:#286,9360>
  5466.  
  5467. <:s><:#293,9360><+">ScrnOffs <-">- Page offset to place the bitmap at.
  5468.  
  5469. <:s><:#286,9360>
  5470.  
  5471. <:#293,9360><+">Bitmap<-"> - Pointer to the planar bitmap structure.
  5472.  
  5473. <:s><:#286,9360>
  5474.  
  5475. <:s><:#286,9360>Write a planar bitmap from system ram to video ram.
  5476.  
  5477. <:s><:#286,9360>
  5478.  
  5479. <:#293,9360><+!>NOTE:<-!> Width is in bytes i.e. lots of 4 pixels
  5480.  
  5481. <:s><:#286,9360>
  5482.  
  5483. <:s><:#579,9360><+!>LIMITATIONS:<-!> <+#>No clipping is supported<-#> Only supports bitmaps with widths which are a multiple of  4 pixels
  5484.  
  5485. <:s><:#286,9360>
  5486.  
  5487. <:s><:#293,9360><+!>See Also:<-!> XBMTOOLS module for linear <<-<;> planar bitmap conversion functions.
  5488.  
  5489. <:s><:p<* >>
  5490.  
  5491. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">x_get_pbm<:X11,-32768;TOC 3 "x_get_pbm"><-"><-!><:f>
  5492.  
  5493. <:s><:#293,9360><+!>C Prototype:<-!> extern void x_get_pbm(WORD X, WORD Y,BYTE Bw,BYTE Bh, 
  5494.  
  5495. <:s><:#286,9360>                     WORD ScrnOffs, BYTE far * Bitmap);
  5496.  
  5497. <:s><:#286,9360>
  5498.  
  5499. <:s><:#293,9360><+">X, Y<-"> - Coordinates of the upper left  corner of the bitmap.
  5500.  
  5501. <:s><:#286,9360>
  5502.  
  5503. <:s><:#293,9360><+">Bw <-">- Width of the bitmap to get.
  5504.  
  5505. <:s><:#286,9360>
  5506.  
  5507. <:s><:#293,9360><+">Bh<-"> - Height of the bitmap to get.
  5508.  
  5509. <:s><:#286,9360>
  5510.  
  5511. <:s><:#293,9360><+">ScrnOffs<-"> - Page offset to get the bitmap from.
  5512.  
  5513. <:s><:#286,9360>
  5514.  
  5515. <:s><:#293,9360><+">Bitmap<-"> - Pointer to a buffer allocated for receiveing this bitmap.
  5516.  
  5517. <:s><:#286,9360>
  5518.  
  5519. <:s><:#286,9360>Read a planar bitmap to system ram from video ram.
  5520.  
  5521. <:s><:#286,9360>
  5522.  
  5523. <:s><:#293,9360><+!>NOTE:<-!> Width is in bytes in lots of 4 pixels
  5524.  
  5525. <:s><:#286,9360>
  5526.  
  5527. <:s><:#579,9360><+!>LIMITATIONS:<-!> No clipping is supported. Only supports bitmaps with widths which are a multiple of 4 pixels
  5528.  
  5529. <:s><:#286,9360>
  5530.  
  5531. <:s><+!>See Also:<-!> XBMTOOLS module for linear <<-<;> planar bitmap conversion functions.<:p<* >>
  5532.  
  5533. <+B><:#333,9360><:f280,2Times New Roman,0,0,0><+!>MODULE XPBMCLIP<:X11,-32768;TOC 1 "MODULE XPBMCLIP"><-!><:f>
  5534.  
  5535. <:s><:#286,9360>
  5536.  
  5537. <:s><:#865,9360>This module implements a similar set of functions to operate on planar bitmaps as XPBITMAP but incorporates clipping to a user defined clipping rectangle (which is set by 
  5538. <+!><+">x_set_cliprect<-"><-!> in module XMAIN).
  5539.  
  5540. <:s><:#286,9360>
  5541.  
  5542. <:s><:#286,9360>The planar bitmap format is identical to the above module
  5543.  
  5544. <:s><:#286,9360>
  5545.  
  5546. <:#2288,9360>There are three variations of the functions in XPBITMAP in this module identified by the three function name extensions: _clipx, _clipy _clipxy.  
  5547. <+#>Because speed is critical in games programming you do not want to be checking for clipping if not necessary<-#> thus for sprites that move only  horizontally you would use the _clipx version of the put function, for sprites that move vertically you woul
  5548. d use the _clipy version and for sprites that move both directions you would use the clipxy version. Keep in mind also that 
  5549. <+#>the clipping components of these functions assume that the clipping rectangle is equal to or larger than the size of the bitmap<-#> i.e.. if a bitmap is top clipped, it is assumed that the bitmap's bottom is not also clipped. Similarly with horizontal c
  5550. lipping.
  5551.  
  5552. <:s><:#286,9360>
  5553.  
  5554. <:s><:#579,9360><+!>Note:<-!> Performance in decreasing order is as follows. _clipy,_clipx,_clipxy with masked puts being slower than unmasked puts.
  5555.  
  5556. <:s><:#286,9360>
  5557.  
  5558. <:s><:#1144,9360>Horizontal clipping is performed to byte boundaries (4 pixels) rather than  pixels. This allows for the fastest implementation of the functions. It is not such a handicap because for one, your screen width a multiple of 4 pixels wide and for most purposes i
  5559. t is the screen edges that form the  clipping rectangle.
  5560.  
  5561. <:s><:#286,9360>
  5562.  
  5563. <:s><:#286,9360>Following is an example of setting a clipping rectangle to the logical  screen edges:
  5564.  
  5565. <:s><:#286,9360>    x_set_cliprect(0,0,ScrnLogicalByteWidth,ScrnLogicalHeight)
  5566.  
  5567. <:s><:#286,9360>
  5568.  
  5569. <:#579,9360><+!>NOTE:<-!> The functions now return a value; 1 if clipped image is fully clipped (i.e. no portion of it      appears on the screen) otherwise it returns 0
  5570.  
  5571. <:s><:#286,9360>
  5572.  
  5573. <:s><:#286,9360>
  5574.  
  5575. <:#286,9360><+!>SOURCES<:X11,-32768;TOC 2 "SOURCES"><-!>
  5576.  
  5577. <:s><:#286,9360>    xpbmclip.asm 
  5578.  
  5579. <:s><:#286,9360>    xpbmclip.inc 
  5580.  
  5581. <:s><:#286,9360>    xlib.inc 
  5582.  
  5583. <:s><:#286,9360>    model.inc
  5584.  
  5585. <:s><:#286,9360>
  5586.  
  5587. <:s><:#286,9360>
  5588.  
  5589. <:#286,9360><+!><:X11,-32768;TOC 2 "C HEADER FILE">C HEADER FILE<-!>
  5590.  
  5591. <:s><:#286,9360>    xpbmclip.h
  5592.  
  5593. <:s><:#286,9360>
  5594.  
  5595. <:s><:#286,9360>
  5596.  
  5597.   <:p<* >><+!>EXPORTED FUNCTIONS<:X11,-32768;TOC 2 "EXPORTED FUNCTIONS"><-!>
  5598.  
  5599. <:s><:#286,9360>
  5600.  
  5601. <:s><:#286,9360>
  5602.  
  5603. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_put_masked_pbm_clipx">x_put_masked_pbm_clipx<-"><-!><:f>
  5604.  
  5605. <:s><:#293,9360><+!>C Prototype<-!>: extern void x_put_masked_pbm_clipx(WORD X, WORD Y, WORD ScrnOffs, 
  5606.  
  5607. <:s><:#286,9360>                                BYTE far * Bitmap);
  5608.  
  5609. <:s><:#286,9360>
  5610.  
  5611. <:s><:#293,9360><+">x, y<-"> - Coordinates for the upper left corner of the bitmap.
  5612.  
  5613. <:s><:#286,9360>
  5614.  
  5615. <:s><:#293,9360><+">ScrnOffs <-">- Page offset to place the bitmap at.
  5616.  
  5617. <:s><:#286,9360>
  5618.  
  5619. <:#293,9360><+">Bitmap<-"> - A far pointer to the planar bitmap structure.
  5620.  
  5621. <:s><:#286,9360>
  5622.  
  5623. <:s><:#572,9360>Mask write a planar bitmap from system ram to video ram. Horizontal clipping is performed. All zero source bitmap bytes indicate destination byte to be left unchanged.
  5624.  
  5625. <:s><:#286,9360><+!>
  5626.  
  5627. <:#293,9360><+!>NOTE<-!><+!>: <-!>Width is in bytes i.e. lots of 4 pixels
  5628.  
  5629. <:s><:#286,9360>
  5630.  
  5631. <:s><:#293,9360><+!>LIMITATIONS:<-!> Only supports bitmaps with widths which are a multiple of  4 pixels
  5632.  
  5633. <:s><:#286,9360>
  5634.  
  5635. <:s><:#293,9360><+!>See Also:<-!> XBMTOOLS module for linear <<-<;> planar bitmap conversion functions.
  5636.  
  5637. <:s><:#286,9360>
  5638.  
  5639. <:s><:#286,9360>
  5640.  
  5641. <:#326,9360><-!><-"><:f280, Times New Roman,0,0,0><+!><+">x_put_masked_pbm_clipy<:X11,-32768;TOC 3 "x_put_masked_pbm_clipy"><-"><-!><:f>
  5642.  
  5643. <:s><:#293,9360><+!>C Prototype<-!>: extern void x_put_masked_pbm_clipy(WORD X, WORD Y, WORD ScrnOffs, 
  5644.  
  5645. <:s><:#286,9360>                                BYTE far * Bitmap);
  5646.  
  5647. <:s><:#286,9360>
  5648.  
  5649. <:s><:#293,9360><+">x, y<-"> - Coordinates for the upper left corner of the bitmap.
  5650.  
  5651. <:s><:#286,9360>
  5652.  
  5653. <:s><:#293,9360><+">ScrnOffs <-">- Page offset to place the bitmap at.
  5654.  
  5655. <:s><:#286,9360>
  5656.  
  5657. <:#293,9360><+">Bitmap<-"> - A far pointer to the planar bitmap structure.
  5658.  
  5659. <:s><:#286,9360>
  5660.  
  5661. <:#572,9360>Mask write a planar bitmap from system ram to video ram. Vertical clipping is performed. All zero source bitmap bytes indicate destination byte to be left unchanged.
  5662.  
  5663. <:s><:#286,9360><+!>
  5664.  
  5665. <:#293,9360><+!>NOTE<-!><+!>: <-!>Width is in bytes i.e. lots of 4 pixels
  5666.  
  5667. <:s><:#286,9360>
  5668.  
  5669. <:s><:#293,9360><+!>LIMITATIONS:<-!> Only supports bitmaps with widths which are a multiple of  4 pixels
  5670.  
  5671. <:s><:#286,9360>
  5672.  
  5673. <:s><:#293,9360><+!>See Also:<-!> XBMTOOLS module for linear <<-<;> planar bitmap conversion functions.
  5674.  
  5675. <:s><:#326,9360><+!><+"><:f280, Times New Roman,0,0,0>
  5676.  
  5677. <:s><+!><+"><:f280, Times New Roman,0,0,0><:p<* >>
  5678.  
  5679. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">x_put_masked_pbm_clipxy<:X11,-32768;TOC 3 "x_put_masked_pbm_clipxy"><-"><-!><:f>
  5680.  
  5681. <:s><:#293,9360><+!>C Prototype<-!>: extern void x_put_masked_pbm_clipxy(WORD X, WORD Y, WORD ScrnOffs, 
  5682.  
  5683. <:s><:#286,9360>                                 BYTE far * Bitmap);
  5684.  
  5685. <:s><:#286,9360>
  5686.  
  5687. <:s><:#293,9360><+">x, y<-"> - Coordinates for the upper left corner of the bitmap.
  5688.  
  5689. <:s><:#286,9360>
  5690.  
  5691. <:s><:#293,9360><+">ScrnOffs <-">- Page offset to place the bitmap at.
  5692.  
  5693. <:s><:#286,9360>
  5694.  
  5695. <:#293,9360><+">Bitmap<-"> - A far pointer to the planar bitmap structure.
  5696.  
  5697. <:s><:#286,9360>
  5698.  
  5699. <:#572,9360>Mask write a planar bitmap from system ram to video ram. Both horizontal and vertical clipping is performed. All zero source bitmap bytes indicate destination byte to be left unchanged.
  5700.  
  5701. <:s><:#286,9360><+!>
  5702.  
  5703. <:#293,9360><+!>NOTE<-!><+!>: <-!>Width is in bytes i.e. lots of 4 pixels
  5704.  
  5705. <:s><:#286,9360>
  5706.  
  5707. <:s><:#293,9360><+!>LIMITATIONS:<-!> Only supports bitmaps with widths which are a multiple of  4 pixels
  5708.  
  5709. <:s><:#286,9360>
  5710.  
  5711. <:s><:#293,9360><+!>See Also:<-!> XBMTOOLS module for linear <<-<;> planar bitmap conversion functions.
  5712.  
  5713. <:s><:#326,9360><+!><+"><:f280, Times New Roman,0,0,0>
  5714.  
  5715. <:s><:#326,9360><+!><+"><:f280, Times New Roman,0,0,0>
  5716.  
  5717. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">x_put_pbm<-"><-!><+!><+">_clipx<:X11,-32768;TOC 3 "x_put_pbm_clipx"><-"><-!><:f>
  5718.  
  5719. <:s><:#293,9360><+!>C Prototype<-!>: extern void x_put_pbm_clipx(WORD X, WORD Y, WORD ScrnOffs, 
  5720.  
  5721. <:s><:#286,9360>                              BYTE far *Bitmap);
  5722.  
  5723. <:s><:#286,9360>
  5724.  
  5725. <:s><:#293,9360><+">x, y<-"> - Coordinates for the upper left corner of the bitmap.
  5726.  
  5727. <:s><:#286,9360>
  5728.  
  5729. <:s><:#293,9360><+">ScrnOffs <-">- Page offset to place the bitmap at.
  5730.  
  5731. <:s><:#286,9360>
  5732.  
  5733. <:#293,9360><+">Bitmap<-"> - A far pointer to the planar bitmap structure.
  5734.  
  5735. <:s><:#286,9360>
  5736.  
  5737. <:s><:#286,9360>Write a planar bitmap from system ram to video ram. Horizontal clipping is performed.
  5738.  
  5739. <:s><:#286,9360>
  5740.  
  5741. <:#293,9360><+!>NOTE:<-!> Width is in bytes i.e. lots of 4 pixels
  5742.  
  5743. <:s><:#286,9360>
  5744.  
  5745. <:s><:#293,9360><+!>LIMITATIONS:<-!> Only supports bitmaps with widths which are a multiple of  4 pixels
  5746.  
  5747. <:s><:#286,9360>
  5748.  
  5749. <:s><:#293,9360><+!>See Also:<-!> XBMTOOLS module for linear <<-<;> planar bitmap conversion functions.
  5750.  
  5751. <:s><:p<* >>
  5752.  
  5753. <:#326,9360><+!><+"><:f280, Times New Roman,0,0,0>x_put_pbm<-"><-!><:f><+!><+">_clipy<:X11,-32768;TOC 3 "x_put_pbm_clipy"><-"><-!>
  5754.  
  5755. <:s><:#293,9360><+!>C Prototype<-!>: extern void x_put_pbm_clipy(WORD X, WORD Y, WORD ScrnOffs, 
  5756.  
  5757. <:s><:#286,9360>                              BYTE far *Bitmap);
  5758.  
  5759. <:s><:#286,9360>
  5760.  
  5761. <:s><:#293,9360><+">x, y<-"> - Coordinates for the upper left corner of the bitmap.
  5762.  
  5763. <:s><:#286,9360>
  5764.  
  5765. <:s><:#293,9360><+">ScrnOffs <-">- Page offset to place the bitmap at.
  5766.  
  5767. <:s><:#286,9360>
  5768.  
  5769. <:#293,9360><+">Bitmap<-"> - A far pointer to the planar bitmap structure.
  5770.  
  5771. <:s><:#286,9360>
  5772.  
  5773. <:#286,9360>Write a planar bitmap from system ram to video ram. Vertical clipping is performed.
  5774.  
  5775. <:s><:#286,9360>
  5776.  
  5777. <:#293,9360><+!>NOTE:<-!> Width is in bytes i.e. lots of 4 pixels
  5778.  
  5779. <:s><:#286,9360>
  5780.  
  5781. <:s><:#293,9360><+!>LIMITATIONS:<-!> Only supports bitmaps with widths which are a multiple of  4 pixels
  5782.  
  5783. <:s><:#286,9360>
  5784.  
  5785. <:s><:#293,9360><+!>See Also:<-!> XBMTOOLS module for linear <<-<;> planar bitmap conversion functions.
  5786.  
  5787. <:s><:#286,9360>
  5788.  
  5789. <:s><:#286,9360>
  5790.  
  5791. <:#326,9360><+!><+"><:f280, Times New Roman,0,0,0>x_put_pbm<-"><-!><:f><+!><+">_clipxy<:X11,-32768;TOC 3 "x_put_pbm_clipxy"><-"><-!>
  5792.  
  5793. <:s><:#293,9360><+!>C Prototype<-!>: extern void x_put_pbm_clipxy(WORD X, WORD Y, WORD ScrnOffs, 
  5794.  
  5795. <:s><:#286,9360>                                BYTE far *Bitmap);
  5796.  
  5797. <:s><:#286,9360>
  5798.  
  5799. <:s><:#293,9360><+">x, y<-"> - Coordinates for the upper left corner of the bitmap.
  5800.  
  5801. <:s><:#286,9360>
  5802.  
  5803. <:s><:#293,9360><+">ScrnOffs <-">- Page offset to place the bitmap at.
  5804.  
  5805. <:s><:#286,9360>
  5806.  
  5807. <:#293,9360><+">Bitmap<-"> - A far pointer to the planar bitmap structure.
  5808.  
  5809. <:s><:#286,9360>
  5810.  
  5811. <:#572,9360>Write a planar bitmap from system ram to video ram. Both horizontal and vertical clipping is performed.
  5812.  
  5813. <:s><:#286,9360>
  5814.  
  5815. <:#293,9360><+!>NOTE:<-!> Width is in bytes i.e. lots of 4 pixels
  5816.  
  5817. <:s><:#286,9360>
  5818.  
  5819. <:s><:#293,9360><+!>LIMITATIONS:<-!> Only supports bitmaps with widths which are a multiple of  4 pixels
  5820.  
  5821. <:s><:#286,9360>
  5822.  
  5823. <:s><:#293,9360><+!>See Also:<-!> XBMTOOLS module for linear <<-<;> planar bitmap conversion functions.
  5824.  
  5825. <:s><:p<* >>
  5826.  
  5827. <+B><:#333,9360><:f280,2Times New Roman,0,0,0><+!>MODULE  XCBITMAP<:X11,-32768;TOC 1 "MODULE  XCBITMAP"><-!><:f>
  5828.  
  5829. <:s><:#286,9360>
  5830.  
  5831. <:s><:#286,9360>
  5832.  
  5833. <:#572,9360>Compiled bitmap functions. See "The care and feeding of compiled masked blits." in the reference section for more details on compiled bitmaps.
  5834.  
  5835. <:s><:#286,9360>
  5836.  
  5837. <:s><:#286,9360>
  5838.  
  5839. <:#286,9360><+!><:X11,-32768;TOC 2 "SOURCES">SOURCES<-!>
  5840.  
  5841. <:#293,9360><+!>    <-!>xcbitmap.asm
  5842.  
  5843. <:#286,9360>    xcbitmap.inc
  5844.  
  5845. <:s><:#286,9360>
  5846.  
  5847. <:s><:#286,9360>
  5848.  
  5849. <:#286,9360><+!><:X11,-32768;TOC 2 "C HEADER FILE">C HEADER FILE<-!>
  5850.  
  5851.     xcbitmap.h<:p<* >>
  5852.  
  5853. <:#286,9360><+!>EXPORTED FUNCTIONS<:X11,-32768;TOC 2 "EXPORTED FUNCTIONS"><-!>
  5854.  
  5855. <:s><:#286,9360><+!>
  5856.  
  5857. <:s><:#286,9360><+!>
  5858.  
  5859. <:#326,9360><+!><+"><:f280, Times New Roman,0,0,0><:X11,-32768;TOC 3 "x_compile_bitmap">x_compile_bitmap<:f><-">
  5860.  
  5861. <:#293,9360><+!>C Prototype:  <-!>int x_compile_bitmap( WORD lsw, char far *bitmap, char far *output );
  5862.  
  5863. <:s><:#286,9360>
  5864.  
  5865. <:s><:#293,9360><+">lsw<-"> - The logical screen width in bytes.
  5866.  
  5867. <:s><:#286,9360>
  5868.  
  5869. <:s><:#293,9360><+">bitmap<-"> - A pointer to the source linear bitmap.
  5870.  
  5871. <:s><:#286,9360>
  5872.  
  5873. <:s><:#293,9360><+">output<-"> - A pointer to a buffer set up to receive the compiled bitmap.
  5874.  
  5875. <:s><:#286,9360>
  5876.  
  5877. <:s><:#293,9360><+!>Returns: <-!>The size of the compiled bitmap in bytes.
  5878.  
  5879. <:s><:#286,9360>
  5880.  
  5881. <:s><:#572,9360>Compiles a linear bitmap to generate machine code to plot it at any required screen coordinates FAST!
  5882.  
  5883. <:s><:#286,9360>
  5884.  
  5885. <:s><:#286,9360>
  5886.  
  5887. <:#326,9360><+!><+"><:f280, Times New Roman,0,0,0><:X11,-32768;TOC 3 "x_sizeof_cbitmap">x_sizeof_cbitmap<:f><-"><-!>
  5888.  
  5889. <:s><:#293,9360><+!>C Prototype: <-!> int x_sizeof_cbitmap( WORD lsw, char far *bitmap );
  5890.  
  5891. <:s><:#286,9360>
  5892.  
  5893. <:s><:#293,9360><+">lsw<-"> - The logical screen width in bytes.
  5894.  
  5895. <:s><:#286,9360>
  5896.  
  5897. <:s><:#293,9360><+">bitmap<-"> - A pointer to the source linear bitmap.
  5898.  
  5899. <:s><:#286,9360>
  5900.  
  5901. <:s><:#293,9360><+!>Returns: <-!> The space in bytes required to hold the compiled bitmap.
  5902.  
  5903. <:s><:#286,9360>
  5904.  
  5905. <:s><:#286,9360>
  5906.  
  5907. <:#326,9360><+!><+"><:f280, Times New Roman,0,0,0><:X11,-32768;TOC 3 "x_put_cbitmap">x_put_cbitmap<:f><-"><-!>
  5908.  
  5909. <:s><:#293,9360><+!>C Prototype:  <-!>void x_put_cbitmap( int X, int Y, unsigned int PageOffset, char far *bitmap);
  5910.  
  5911. <:s><:#286,9360>
  5912.  
  5913. <:s><:#293,9360><+">X, Y<-"> - The coordinates at which to place the compiled bitmaps.
  5914.  
  5915. <:s><:#286,9360>
  5916.  
  5917. <:s><:#293,9360><+">PageOffset<-"> - The page offset on which to draw the bitmap.
  5918.  
  5919. <:s><:#286,9360>
  5920.  
  5921. <:s><:#293,9360><+">bitmap<-"> - A pointer to the compiled bitmap.
  5922.  
  5923. <:s><:#286,9360>
  5924.  
  5925. <:s><:#293,9360>Displays a bitmap generated by <+!><+">x_compile_bitmap<-!><-">.<-">
  5926.  
  5927. <:s><:#286,9360>
  5928.  
  5929. <:s><:#286,9360>
  5930.  
  5931. <:s><:#286,9360>
  5932.  
  5933. <:s><:p<* >>
  5934.  
  5935. <+B><:#333,9360><:f280,2Times New Roman,0,0,0><+!>MODULE XCOMPPBM<:X11,-32768;TOC 1 "MODULE XCOMPPBM"><-!><:f>
  5936.  
  5937. <:s><:#286,9360>
  5938.  
  5939. <:s><:#286,9360>
  5940.  
  5941. <:#286,9360>Identical to XCBITMAP except that the source bitmaps are the PBM form rather than LBM.
  5942.  
  5943. <:s><:#286,9360>
  5944.  
  5945. <:s><:#286,9360>
  5946.  
  5947. <:#286,9360><+!><:X11,-32768;TOC 2 "SOURCES">SOURCES<-!>
  5948.  
  5949. <:#286,9360>    xcompbm.asm
  5950.  
  5951. <:#286,9360>    xcompbm.inc
  5952.  
  5953. <:s><:#286,9360>
  5954.  
  5955. <:s><:#286,9360><+!>
  5956.  
  5957. <:#286,9360><+!><:X11,-32768;TOC 2 "C HEADER FILE">C HEADER FILE<-!>
  5958.  
  5959. <+!>    <-!>xcompbm.h<:p<* >>
  5960.  
  5961. <:#286,9360><+!>EXPORTED <-!><+!>FUNCTIONS<:X11,-32768;TOC 2 "EXPORTED FUNCTIONS"><-!>
  5962.  
  5963. <:s><:#286,9360>
  5964.  
  5965. <:s><:#286,9360>
  5966.  
  5967. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_compile_pbm">x_compile_pbm<-"><-!><:f>
  5968.  
  5969. <:s><:#293,9360><+!>C Prototype: <-!> x_compile_pbm( WORD lsw, char far *bitmap, char far *output );
  5970.  
  5971. <:s><:#286,9360>
  5972.  
  5973. <:s><:#293,9360><+">lsw<-"> - The logical screen width in bytes.
  5974.  
  5975. <:s><:#286,9360>
  5976.  
  5977. <:s><:#293,9360><+">bitmap<-"> - A pointer to the source planar bitmap.
  5978.  
  5979. <:s><:#286,9360>
  5980.  
  5981. <:s><:#293,9360><+">output<-"> - A far pointer to a buffer set up to receive the compiled bitmap.
  5982.  
  5983. <:s><:#286,9360>
  5984.  
  5985. <:s><:#293,9360><+!>Returns: <-!>The size of the compiled bitmap in bytes.
  5986.  
  5987. <:s><:#286,9360>
  5988.  
  5989. <:s><:#572,9360>Compiles a planar bitmap to generate machine code to plot it at any required screen coordinates FAST!
  5990.  
  5991. <:s><:#286,9360>
  5992.  
  5993. <:s><:#286,9360>
  5994.  
  5995. <:#326,9360><+!><+"><:f280, Times New Roman,0,0,0>x_sizeof_cpbm<:X11,-32768;TOC 3 "x_sizeof_cpbm"><:f><-"><-!>
  5996.  
  5997. <:s><:#293,9360><+!>C Prototype: <-!> int x_sizeof_cpbm( WORD lsw, char far *bitmap );
  5998.  
  5999. <:s><:#286,9360>
  6000.  
  6001. <:s><:#293,9360><+">lsw<-"> - The logical screen width in bytes.
  6002.  
  6003. <:s><:#286,9360>
  6004.  
  6005. <:s><:#293,9360><+">bitmap<-"> - A far pointer to the source planar bitmap.
  6006.  
  6007. <:s><:#286,9360>
  6008.  
  6009. <:s><:#293,9360><+!>Returns: <-!> The space in bytes required to hold the compiled bitmap.
  6010.  
  6011. <:s><:#286,9360>
  6012.  
  6013. <:s><:p<* >>
  6014.  
  6015. <+B><:#333,9360><:f280,2Times New Roman,0,0,0><+!>MODULE XVBITMAP<:X11,-32768;TOC 1 "MODULE XVBITMAP"><-!><:f>
  6016.  
  6017. <:s><:#286,9360>
  6018.  
  6019. <:s><:#286,9360>
  6020.  
  6021. <:#1430,9360>The XVBITMAP module implements yet another type of bitmap to complement planar and compiled bitmaps, VRAM based bitmaps. If a 4 cylinder car is analogous to planar bitmaps, that is thrifty on memory consumption but low performance and a V8 is analogous to C
  6022. ompiled bitmaps, memory guzzlers that really fly, then VRAM based bitmaps are the 6 cylinder modest performers with acceptable memory consumption.
  6023.  
  6024. <:s><:#286,9360>
  6025.  
  6026. <:#858,9360>To summarize their selling points, VBM's are moderately fast with fair memory consumption, and unlike compiled bitmaps, can be clipped. The disadvantages are that they are limited by the amount of free video ram and have a complex structure.
  6027.  
  6028. <:s><:#286,9360>
  6029.  
  6030. <:#1151,9360>The VRAM bitmap format is rather complex consisting of components stored in video ram and components in system ram working together. This complexity necessitates the existence of a creation function 
  6031. <+!><+">x_make_vbm<-"><-!> which takes an input linear bitmap and generates the equivalent VBM (VRAM Bit Map).
  6032.  
  6033. <:s><:#286,9360>
  6034.  
  6035. <:s><:#286,9360>VBM structure:
  6036.  
  6037. <:s><:#286,9360>          WORD  0   Size          Total size of this VBM structure in bytes      
  6038.  
  6039. <:#286,9360>          WORD  1   ImageWidth    Width in bytes of the image (for all alignments)      
  6040.  
  6041. <:#286,9360>          WORD  2   ImageHeight   Height in scan lines of the image
  6042.  
  6043. <:#286,9360>          WORD  3   Alignment 0  ImagePtr  Offset in VidRAM of this aligned image  
  6044.  
  6045. <:#286,9360>          WORD  4               MaskPtr   Offset (within this structure's DS) of alignment masks
  6046.  
  6047. <:s><:#286,9360>    WORD  9   Alignment 3  ImagePtr  Offset in VidRAM of this aligned image  
  6048.  
  6049. <:s><:#286,9360>    WORD 10               MaskPtr   Offset (within this structure's DS) of alignment masks
  6050.  
  6051. <:s><:#286,9360>    BYTE   21 (WORD 11)  
  6052.  
  6053. <:s><:#286,9360>                    Image masks for alignment 0 
  6054.  
  6055. <:#286,9360>    BYTE  21 + ImageWidth*ImageHeight       
  6056.  
  6057. <:#286,9360>                    (similarly for alignments 1 - 2 )
  6058.  
  6059. <:#286,9360>    BYTE  21 + 3*ImageWidth*ImageHeight + 1 
  6060.  
  6061. <:s><:#286,9360>                    Image masks for alignment 3
  6062.  
  6063. <:#286,9360>    BYTE  21 + 4*(ImageWidth*ImageHeight)  
  6064.  
  6065. <:s><:#286,9360>                    Similarly for alignments 2 and 3
  6066.  
  6067. <:s><:#286,9360>    BYTE 21 + 4*(ImageWidth*ImageHeight)
  6068.  
  6069. <:#286,9360>                    (And don't forget the corresponding data in video ram)
  6070.  
  6071. <:s><:#286,9360>
  6072.  
  6073. <:s><:#286,9360>
  6074.  
  6075. You can see for yourself the complexity of this bitmap format. The image is stored in video ram in its 4 different alignments with pointers to these alignments in the VBM. Similarly there are 4 alignments of the corresponding masks within the VBM itself (to
  6076. wards the end). The mask bytes contain the plane settings for the corresponding video bytes so that one memory move can move up to 4 pixels at a time (depending on the mask settings) using the VGA's latches, theoretically giving you a 4x speed improvement o
  6077. ver conventional blits like the ones implemented in "XPBITMAP". In actual fact its anywhere between 2 and 3 due to incurred overheads. 
  6078. <:p<* >>
  6079.  
  6080. <:#2002,9360>These bitmaps are more difficult to store in files than PBM'S and CBM's but still possible with a bit of work, so do not dismiss these as too difficult to use. Consider all the bitmap formats carefully before deciding on which to use. There may even be situ
  6081. ations that a careful application of all three types would be most effective i.e.. compiled bitmaps for Background tiles and the main game character (which never need clipping), VRAM based bitmaps for the most frequently occurring (opponent, alien etc.) cha
  6082. racters which get clipped as they come into and leave your current location and planar bitmaps for smaller or less frequently encountered characters.
  6083.  
  6084. <:s><:#286,9360>
  6085.  
  6086. <:s><:#286,9360>
  6087.  
  6088. <:#286,9360><+!>SOURCES<:X11,-32768;TOC 2 "SOURCES"><-!>
  6089.  
  6090. <:#286,9360>    xvbitmap.asm 
  6091.  
  6092. <:#286,9360>    xvbitmap.inc 
  6093.  
  6094. <:s><:#286,9360>    xlib.inc model.inc    
  6095.  
  6096. <:#286,9360>    xmakevbm.c  
  6097.  
  6098. <:s><:#286,9360>
  6099.  
  6100. <:s><:#286,9360>
  6101.  
  6102. <:#286,9360><+!><:X11,-32768;TOC 2 "C HEADER FILE">C HEADER FILE<-!>
  6103.  
  6104. <:#286,9360>    xvbitmap.h
  6105.  
  6106. <:s><:#286,9360>
  6107.  
  6108. <:s><:p<* >>
  6109.  
  6110. <:#286,9360><+!><:X11,-32768;TOC 2 "EXPORTED FUNCTIONS">EXPORTED FUNCTIONS<-!>
  6111.  
  6112. <:s><:#286,9360>
  6113.  
  6114. <:s><:#286,9360>
  6115.  
  6116. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_make_vbm">x_make_vbm<-"><-!><:f>
  6117.  
  6118. <:#293,9360><+!>C Prototype:<-!> extern char far * x_make_vbm( char far *lbm, WORD *VramStart);
  6119.  
  6120. <:s><:#286,9360>
  6121.  
  6122. <:#293,9360><+">lbm - <-">A far pointer to the input linear bitmap   
  6123.  
  6124. <:s><:#286,9360>
  6125.  
  6126. <:#293,9360><+">VramStart<-"> - Pointer to variable containing Offset of first free VRAM byte
  6127.  
  6128. <:s><:#286,9360>
  6129.  
  6130. <:s><:#1158,9360>Create the VBM from the given linear bitmap and place the image alignments  in video ram starting at the offset in the variable pointed to by 
  6131. <+">VramStart<-">. <+">VramStart<-"> is then updated to point to the next free VRAM byte (just after the last byte of the image alignments). Usually you will point 
  6132. <+">VramStart<-"> to <+">NonVisual_Offs<-">.
  6133.  
  6134. <:s><:#286,9360>
  6135.  
  6136. <:s><:#286,9360>
  6137.  
  6138. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">x_put_masked_vbm<:X11,-32768;TOC 3 "x_put_masked_vbm"> 
  6139. <-"><-!><:f>
  6140.  
  6141. <:#293,9360><+!>C Prototype:<-!> extern int x_put_masked_vbm( int X, int Y, WORD ScrnOffs, 
  6142.  
  6143. <:#286,9360>                         BYTE far *VBitmap);
  6144.  
  6145. <:s><:#286,9360>
  6146.  
  6147. <:s><:#293,9360><+">X, Y <-">- Coordinates to draw the bitmap at.
  6148.  
  6149. <:s><:#286,9360>
  6150.  
  6151. <:s><:#293,9360><+">ScrnOffs<-"> - The page offset to draw the bitmap at.
  6152.  
  6153. <:s><:#293,9360><+">
  6154.  
  6155. <:#293,9360><+">VBitmap<-"> - A far pointer to the video bitmap.
  6156.  
  6157. <:s><:#286,9360>
  6158.  
  6159. <:#832,9360><+!>Returns:<-!> 1 if clipped image is fully clipped (i.e. no portion of it appears on the screen) otherwise it returns 0. 
  6160. <:f200, NewsGothic,0,0,0>(Editors note: since this function doesn't support clipping the return value should be 0 at all times.)<:f>
  6161.  
  6162. <:s><:#286,9360>
  6163.  
  6164. <:s><:#293,9360>Draw a VRAM based bitmap at (X,Y) relative to the screen with starting  offset 
  6165. <+">ScrnOffs<-">.
  6166.  
  6167. <:s><:p<* >>
  6168.  
  6169. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_put_masked_vbm_clipx">x_put_masked_vbm_clipx<-!><-"><:f>
  6170.  
  6171. <:#293,9360><-!><+!>C Prototype:<-!> extern int x_put_masked_vbm_clipx(int X, int Y, WORD ScrnOffs, 
  6172.  
  6173. <:s><:#286,9360>                                  BYTE far *VBitmap);
  6174.  
  6175. <:s><:#286,9360>
  6176.  
  6177. <:s><:#293,9360><+">X, Y <-">- Coordinates to draw the bitmap at.
  6178.  
  6179. <:s><:#286,9360>
  6180.  
  6181. <:s><:#293,9360><+">ScrnOffs<-"> - The page offset to draw the bitmap at.
  6182.  
  6183. <:s><:#286,9360>
  6184.  
  6185. <:s><:#293,9360><+">VBitmap<-"> - A far pointer to the video bitmap.
  6186.  
  6187. <:s><:#286,9360>
  6188.  
  6189. <:s><:#293,9360><+!>Returns:<-!> 1 if clipped image is fully clipped otherwise it returns 0.
  6190.  
  6191. <:s><:#286,9360>
  6192.  
  6193. <:#579,9360>Draw a VRAM based bitmap at (X,Y) relative to the screen with starting  offset 
  6194. <+">ScrnOffs. <-">Horizontal clipping is performed.
  6195.  
  6196. <:s><:#286,9360>
  6197.  
  6198. <:s><:#286,9360>
  6199.  
  6200. <:#286,9360><+"><+!>x_put_masked_vbm_clipy<:X11,-32768;TOC 3 "x_put_masked_vbm_clipy"><-!><-">
  6201.  
  6202. <:#293,9360><-!><+!>C Prototype:<-!> extern int x_put_masked_vbm_clipy( int X, int Y, WORD ScrnOffs, 
  6203.  
  6204. <:s><:#286,9360>                                  BYTE far *VBitmap);
  6205.  
  6206. <:s><:#286,9360>
  6207.  
  6208. <:s><:#293,9360><+">X, Y <-">- Coordinates to draw the bitmap at.
  6209.  
  6210. <:s><:#286,9360>
  6211.  
  6212. <:s><:#293,9360><+">ScrnOffs<-"> - The page offset to draw the bitmap at.
  6213.  
  6214. <:s><:#286,9360>
  6215.  
  6216. <:s><:#293,9360><+">VBitmap<-"> - A far pointer to the video bitmap.
  6217.  
  6218. <:s><:#286,9360>
  6219.  
  6220. <:#579,9360><+!>Returns:<-!> 1 if clipped image is fully clipped (i.e. no portion of it appears on the screen) otherwise it returns 0
  6221.  
  6222. <:s><:#286,9360>
  6223.  
  6224. <:s><:#293,9360>Draw a VRAM based bitmap at (X,Y) relative to the screen with starting offset 
  6225. <+">ScrnOffs<-">.
  6226.  
  6227. <:#286,9360>Vertical clipping is performed.
  6228.  
  6229. <:s><:p<* >>
  6230.  
  6231. <:#326,9360><:f280, Times New Roman,0,0,0><+"><+!>x_put_masked_vbm_clipxy<:X11,-32768;TOC 3 "x_put_masked_vbm_clipxy"><-"><-!><:f>
  6232.  
  6233. <:#293,9360><+!>C Prototype:<-!> extern int x_put_masked_vbm_clipxy( int X, int Y, WORD ScrnOffs, 
  6234.  
  6235. <:s><:#286,9360>                                    BYTE far *VBitmap);
  6236.  
  6237. <:s><:#286,9360>
  6238.  
  6239. <:s><:#293,9360><+">X, Y <-">- Coordinates to draw the bitmap at.
  6240.  
  6241. <:s><:#286,9360>
  6242.  
  6243. <:s><:#293,9360><+">ScrnOffs<-"> - The page offset to draw the bitmap at.
  6244.  
  6245. <:s><:#286,9360>
  6246.  
  6247. <:s><:#293,9360><+">VBitmap<-"> - A far pointer to the video bitmap.
  6248.  
  6249. <:s><:#286,9360>
  6250.  
  6251. <:#579,9360><+!>Returns:<-!> 1 if clipped image is fully clipped (i.e. no portion of it appears on the screen) otherwise it returns 0
  6252.  
  6253. <:s><:#286,9360>
  6254.  
  6255. <:s><:#293,9360>Draw a VRAM based bitmap at (X,Y) relative to the screen with starting  offset 
  6256. <+">ScrnOffs<-">.
  6257.  
  6258. <:#286,9360>Both horizontal and vertical clipping is performed.
  6259.  
  6260. <:s><:#286,9360>
  6261.  
  6262. <:s><:#286,9360>
  6263.  
  6264. <:s>See XPBMCLIP for more details on the type of clipping used as it is identical to XVBITMAP.<:p<* >>
  6265.  
  6266. <+B><:#333,9360><:f280,2Times New Roman,0,0,0><+!>MODULE  XMOUSE<:X11,-32768;TOC 1 "MODULE  XMOUSE"><-!><:f>
  6267.  
  6268. <:s><:#286,9360>
  6269.  
  6270. <:s><:#1144,9360>The XMOUSE module implements very basic mouse handling functions. The way in which it operates is by installing an event handler function during initialization which subsequently intercepts and processes mouse events and automatically updates status variabl
  6271. es such as mouse position and button pressed status. 
  6272.  
  6273. <:s><:#286,9360>
  6274.  
  6275. <:s><:#286,9360>It does not support the full functionality of:
  6276.  
  6277. <:s><:#286,9360>    SPLIT SCREENS,  SCROLLED WINDOWS, or   VIRTUAL WINDOWS
  6278.  
  6279. <:#858,9360>This was done to primarily prevent unnecessary impedences to performance, since the mouse handler function has the potential to degrade performance. It also saves me a lot of coding which I was too lazy to do.
  6280.  
  6281. <:s><:#286,9360>
  6282.  
  6283. <:s><:#1144,9360>Programs communicate with the mouse driver as with other devices, through an interrupt vector namely 33h. On generating an interrupt, the mouse driver expects a function number in AX and possibly other parameters in other registers and returns information v
  6284. ia the registers. A brief description of the mouse functions follows:
  6285.  
  6286. <:s><:#286,9360>
  6287.  
  6288. <:#286,9360><+!><+#><:X11,-32768;TOC 2 "MS Mouse Driver Functions">MS Mouse Driver Functions<-#><-!>
  6289.  
  6290. <:s><:#286,9360>Mouse Initialization                     0
  6291.  
  6292. <:s><:#286,9360>Show Cursor                                  1
  6293.  
  6294. <:s><:#286,9360>Hide Cursor                                  2
  6295.  
  6296. <:s><:#286,9360>Get Mouse Position & Button Status  3
  6297.  
  6298. <:s><:#286,9360>Set Mouse Cursor Position                4
  6299.  
  6300. <:s><:#286,9360>Get Button Press Information             5
  6301.  
  6302. <:s><:#286,9360>Get Button Release Information           6
  6303.  
  6304. <:s><:#286,9360>Set Min/Max Horizontal Position          7
  6305.  
  6306. <:s><:#286,9360>Set Min/Max Vertical Position            8
  6307.  
  6308. <:s><:#286,9360>Define Graphics Cursor Block             9
  6309.  
  6310. <:s><:#286,9360>Define Text Cursor                      10
  6311.  
  6312. <:s><:#286,9360>Read Mouse Motion Counters              11
  6313.  
  6314. <:s><:#286,9360>Define Event Handler                    12
  6315.  
  6316. <:s><:#286,9360>Light Pen Emulation Mode ON             13
  6317.  
  6318. <:s><:#286,9360>Light Pen Emulation Mode OFF            14
  6319.  
  6320. <:s><:#286,9360>Set Mouse Mickey/Pixel Ratio            15
  6321.  
  6322. <:s><:#286,9360>Conditional Hide Cursor                 16
  6323.  
  6324. <:s><:#286,9360>Set Double-Speed Threshold              19
  6325.  
  6326. <:s><:#286,9360>
  6327.  
  6328. <:s><:#286,9360>
  6329.  
  6330. In practice only a few of these functions are used and even fewer when the mouse status is monitored by an event handler function such as is used in this module.<:p<* >>
  6331.  
  6332. <:#1151,9360>The most important thing to note when using the mouse module is that the mouse event handler must be removed before exiting the program. It is a good idea to have an exit function (see the C 
  6333. <+!><+">atexit<-"><-!> function) and include the line <+!><+">x_mouse_remove<-"><-!>(); along with any other pre-exit cleanup code.
  6334.  
  6335. <:s><:#286,9360>
  6336.  
  6337. <:s><:#286,9360>
  6338.  
  6339. <:#286,9360><+!>SOURCES<:X11,-32768;TOC 2 "SOURCES"><-!>
  6340.  
  6341. <:#286,9360>    xmouse.asm 
  6342.  
  6343. <:s><:#286,9360>    xlib.inc 
  6344.  
  6345. <:s><:#286,9360>    model.inc
  6346.  
  6347. <:s><:#286,9360>
  6348.  
  6349. <:s><:#286,9360>
  6350.  
  6351. <:#286,9360><+!><:X11,-32768;TOC 2 "C HEADER FILE">C HEADER FILE<-!>
  6352.  
  6353. <:#286,9360>    xmouse.h
  6354.  
  6355. <:s><:#286,9360>
  6356.  
  6357. <:s><:#286,9360>
  6358.  
  6359. <:#286,9360><+!><:X11,-32768;TOC 2 "EXPORTED VARIABLES">EXPORTED VARIABLES<-!>
  6360.  
  6361. <:s><:#286,9360>
  6362.  
  6363. <:#293,9360><+">MouseInstalled <-"> WORD - Indicates whether mouse handler installed   
  6364.  
  6365. <:s><:#286,9360>
  6366.  
  6367. <:#293,9360><+">MouseHidden<-">  WORD - Indicates whether mouse cursor is hidden 
  6368.  
  6369. <:s><:#286,9360>
  6370.  
  6371. <:#293,9360><+">MouseButtonStatus<-"> WORD - Holds the mouse button status   
  6372.  
  6373. <:s><:#286,9360>
  6374.  
  6375. <:#293,9360><+">MouseX<-">  WORD - Current X position of mouse cursor   
  6376.  
  6377. <:s><:#286,9360>
  6378.  
  6379. <:#293,9360><+">MouseY<-">  WORD - Current Y position of mouse cursor   
  6380.  
  6381. <:s><:#286,9360>
  6382.  
  6383. <:#293,9360><+">MouseFrozen<-">  WORD - Disallows position updates if TRUE   
  6384.  
  6385. <:s><:#286,9360>
  6386.  
  6387. <:#293,9360><+">MouseColor<-">  BYTE - The mouse cursors color
  6388.  
  6389. <:s><:#286,9360>
  6390.  
  6391. <:s><:p<* >>
  6392.  
  6393. <:#286,9360><+!><:X11,-32768;TOC 2 "EXPORTED FUNCTIONS">EXPORTED FUNCTIONS<-!>
  6394.  
  6395. <:s><:#286,9360>
  6396.  
  6397. <:s><:#286,9360>
  6398.  
  6399. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">x_mouse_init<:X11,-32768;TOC 3 "x_mouse_init"><-"><-!><:f>
  6400.  
  6401. <:s><:#293,9360><+!>C Prototype<-!>:  int x_mouse_init()
  6402.  
  6403. <:s><:#286,9360>
  6404.  
  6405. <:s><:#858,9360>Initialize the mouse driver functions and install the mouse event handler function. This is the first function you must call before using any of the mouse functions. This mouse code uses the fastest possible techniques to save and restore mouse backgrounds 
  6406. and to draw the mouse cursor.
  6407.  
  6408. <:s><:#286,9360>
  6409.  
  6410. <:#579,9360><+!>WARNING:<-!> This function uses and updates <+">NonVisual_Offset<-"> to allocate video ram for the saved mouse background.
  6411.  
  6412. <:s><:#286,9360>
  6413.  
  6414. <:s><:#586,9360><+!>LIMITATIONS:<-!> No clipping is supported horizontally for the mouse cursor. No validity checking is performed for 
  6415. <+">NonVisual_Offs<-">
  6416.  
  6417. <:s><:#286,9360>
  6418.  
  6419. <:#2030,9360><+!>**WARNING**<-!>  You must Hide or at least Freeze the mouse cursor while drawing using any of the other XLIB modules since the mouse handler may modify VGA register settings at any time. VGA register settings are not preserved which will result in unpre
  6420. dictable drawing behavior. If you know the drawing will occur away from the mouse cursor set 
  6421. <+">MouseFrozen<-"> to TRUE (1), do your drawing then set it to FALSE (0). Alternatively call 
  6422. <+!><+">x_hide_mouse<-"><-!>,  perform your drawing and then call 
  6423. <+!><+">x_show_mouse<-"><-!>. Another alternative is to disable interrupts while drawing but usually drawing takes up a lot of time and having interrupts disabled for too long is not a good
  6424.  
  6425. <:s><:#286,9360>idea.
  6426.  
  6427. <:s><:#286,9360>
  6428.  
  6429. <:s><:#286,9360>
  6430.  
  6431. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_define_mouse_cursor">x_define_mouse_cursor<-"><-!><:f>
  6432.  
  6433. <:#293,9360><+!>C Prototype:<-!>    void x_define_mouse_cursor( char far *MouseDef, unsigned char MouseColor)
  6434.  
  6435. <:s><:#286,9360>
  6436.  
  6437. <:#293,9360><+">MouseDef<-"> - A far pointer to 14 characters containing a bitmask for all the cursor's rows.
  6438.  
  6439. <:s><:#286,9360>
  6440.  
  6441. <:s><:#293,9360><+">MouseColor<-"> - The color to use when drawing the mouse cursor.
  6442.  
  6443. <:s><:#286,9360>
  6444.  
  6445. <:#572,9360>Define a mouse cursor shape for use in subsequent cursor redraws. XMOUSE has a hardwired mouse cursor size of 8 pixels across by 14 pixels down.
  6446.  
  6447. <:s><:#286,9360>
  6448.  
  6449. <:s><:#293,9360><+!>WARNING<-!>: This function assumes<+#> <+">MouseDef<-#><-"> points to 14 bytes.
  6450.  
  6451. <:s><:#286,9360>
  6452.  
  6453. <:#586,9360><+!>Note: <-!><+#>Bit order is in reverse<-#>. i.e. bit 7 represents pixel 0, bit 0 represents pixel 7 in each byte of 
  6454. <+">MouseDef<-"> .
  6455.  
  6456. <:s><:#286,9360>
  6457.  
  6458. <:s><:p<* >>
  6459.  
  6460. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_show_mouse">x_show_mouse<-"><-!><:f>
  6461.  
  6462. <:s><:#293,9360><+!>C Prototype:<-!>  void x_show_mouse();
  6463.  
  6464. <:s><:#286,9360>
  6465.  
  6466. <:s><:#286,9360>Makes the cursor visible if it was previously hidden.  
  6467.  
  6468. <:s><:#286,9360>
  6469.  
  6470. <:s><:#293,9360><+!>See Also:<-!> <+!><+">x_hide_mouse<-"><-!>.
  6471.  
  6472. <:s><:#286,9360>
  6473.  
  6474. <:s><:#286,9360>
  6475.  
  6476. <:#333,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_hide_mouse">x_hide_mouse<-"> 
  6477. <-!><:f>
  6478.  
  6479. <:s><:#293,9360><+!>C Prototype:<-!>  void x_hide_mouse();
  6480.  
  6481. <:s><:#286,9360>
  6482.  
  6483. <:s><:#286,9360>Makes the cursor hidden if it was previously visible.  
  6484.  
  6485. <:s><:#286,9360>
  6486.  
  6487. <:s><:#293,9360><+!>See Also:<-!> <+!><+">x_show_mouse<-"><-!>.
  6488.  
  6489. <:s><:#286,9360>
  6490.  
  6491. <:s><:#286,9360>
  6492.  
  6493. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">x_mouse_remove<:X11,-32768;TOC 3 "x_mouse_remove"> 
  6494. <-"><-!><:f>
  6495.  
  6496. <:s><:#293,9360><+!>C Prototype:<-!>  void x_mouse_remove();
  6497.  
  6498. <:s><:#286,9360>
  6499.  
  6500. <:s><:#286,9360>Stop mouse event handling and remove the mouse handler.
  6501.  
  6502. <:s><:#286,9360>
  6503.  
  6504. <:s><:#579,9360><+!>NOTE: <-!>This function <+#>MUST<-#> be called before quitting the program if a mouse handler has been installed
  6505.  
  6506. <:s><:#286,9360>
  6507.  
  6508. <:s><:#286,9360>
  6509.  
  6510. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_position_mouse">x_position_mouse<-"><-!><:f>
  6511.  
  6512. <:#293,9360><+!>C Prototype: <-!> void x_position_mouse( int x, int y);
  6513.  
  6514. <:s><:#286,9360>
  6515.  
  6516. <:s><:#293,9360><+">x, y<-"> - Coordinates to move the mouse cursor to.
  6517.  
  6518. <:s><:#286,9360>
  6519.  
  6520. <:s><:#286,9360>Positions the mouse cursor at the specified location
  6521.  
  6522. <:s><:#286,9360>
  6523.  
  6524. <:s><:#286,9360>
  6525.  
  6526. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_mouse_window">x_mouse_window<-"><-!><:f>
  6527.  
  6528. <:#293,9360><+!>C Prototype<-!>:  void x_mouse_window( int x0, int y0, int x1, int y1);
  6529.  
  6530. <:s><:#286,9360>
  6531.  
  6532. <:s><:#293,9360><+">x0, y0<-"> - Coordinates of the upper left corner of the window.
  6533.  
  6534. <:s><:#286,9360>
  6535.  
  6536. <:s><:#293,9360><+">x1, y1<-"> - Coordinates of the lower right corner of the window.
  6537.  
  6538. <:s><:#286,9360>
  6539.  
  6540. <:s>Defines a mouse window.  The mouse cursor is unable to move from this window.<:p<* >>
  6541.  
  6542. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">x_update_mouse<:X11,-32768;TOC 3 "x_update_mouse"><-"><-!><:f>
  6543.  
  6544. <:s><:#293,9360><+!>C Prototype:<-!>  void x_update_mouse();
  6545.  
  6546. <:s><:#286,9360>
  6547.  
  6548. <:s><:#286,9360>Forces the mouse position to be updated and cursor to be redrawn.  
  6549.  
  6550. <:s><:#286,9360>
  6551.  
  6552. <:s><:#293,9360><+!>Note:<-!> This function is useful when you have set <+">MouseFrozen<-"> to true.  
  6553.  
  6554. <:s>Allows the cursor position to be updated manually rather than automatically by the installed handler.<:p<* >>
  6555.  
  6556. <+B><:#333,9360><:f280,2Times New Roman,0,0,0><+!>MODULE XBMTOOLS<:X11,-32768;TOC 1 "MODULE XBMTOOLS"><-!><:f>
  6557.  
  6558. <:s><:#286,9360>
  6559.  
  6560. <:s><:#286,9360>
  6561.  
  6562. <:s><:#286,9360>This module implements a set of functions to convert between planar bitmaps and linear bitmaps.
  6563.  
  6564. <:s><:#286,9360>
  6565.  
  6566. <:s><:#286,9360>
  6567.  
  6568. <:#286,9360><+!>PLANAR BITMAPS<-!>
  6569.  
  6570. <:s><:#286,9360>
  6571.  
  6572. <:s><:#286,9360>Planar bitmaps as used by these functions have the following structure:
  6573.  
  6574. <:s><:#286,9360>    BYTE 0                The bitmap width in bytes (4 pixel groups) range 1..255  
  6575.  
  6576. <:s><:#286,9360>    BYTE 1                      The bitmap height in rows range 1..255  
  6577.  
  6578. <:s><:#286,9360>    BYTE 2..n1                 The plane 0 pixels width*height bytes  
  6579.  
  6580. <:s><:#286,9360>    BYTE n1..n2               The plane 1 pixels width*height bytes  
  6581.  
  6582. <:s><:#286,9360>    BYTE n2..n3               The plane 2 pixels width*height bytes  
  6583.  
  6584. <:s><:#286,9360>    BYTE n3..n4               The plane 3 pixels width*height bytes
  6585.  
  6586. <:s><:#293,9360>as used by <+!><+">x_put_pbm, x_get_pbm, x_put_masked_pbm<-"><-!>.
  6587.  
  6588. <:s><:#286,9360>
  6589.  
  6590. <:s><:#286,9360>
  6591.  
  6592. <:s><:#286,9360><+!>LINEAR BITMAPS<-!>
  6593.  
  6594. <:s><:#286,9360>
  6595.  
  6596. <:s><:#286,9360>Linear bitmaps have the following structure:
  6597.  
  6598. <:s><:#286,9360>    BYTE 0                     The bitmap width in pixels range 1..255  
  6599.  
  6600. <:s><:#286,9360>    BYTE 1                     The bitmap height in rows range 1..255  
  6601.  
  6602. <:s><:#286,9360>    BYTE 2..n                  The width*height bytes of the bitmap
  6603.  
  6604. <:s><:#286,9360>
  6605.  
  6606. <:s><:#286,9360>
  6607.  
  6608. <:#286,9360><+!><:X11,-32768;TOC 2 "SOURCES">SOURCES<-!>
  6609.  
  6610. <:#286,9360>    xbmtools.asm 
  6611.  
  6612. <:#286,9360>    xpbmtools.inc 
  6613.  
  6614. <:s><:#286,9360>    model.inc
  6615.  
  6616. <:s><:#286,9360>
  6617.  
  6618. <:#286,9360><+!><:X11,-32768;TOC 2 "C HEADER FILE">C HEADER FILE<-!>
  6619.  
  6620. <:#286,9360>    xbmtools.h
  6621.  
  6622. <:s><:#286,9360>
  6623.  
  6624. <:s><:p<* >>
  6625.  
  6626. <:#286,9360><+!>MACROS<:X11,-32768;TOC 2 "MACROS"><-!>
  6627.  
  6628. <:s><:#286,9360>
  6629.  
  6630. <:#286,9360>    BM_WIDTH_ERROR
  6631.  
  6632. <:s><:#286,9360>
  6633.  
  6634. <:#286,9360>    LBMHeight( lbitmap)         - Height of linear bitmap "lbitmap"    
  6635.  
  6636. <:s><:#286,9360>
  6637.  
  6638. <:#286,9360>    LBMWidth( lbitmap )          - Width of linear bitmap  "lbitmap"    
  6639.  
  6640. <:s><:#286,9360>
  6641.  
  6642. <:#286,9360>    PBMHeight( pbitmap )         - Height of planar bitmap "pbitmap"    
  6643.  
  6644. <:s><:#286,9360>
  6645.  
  6646. <:#286,9360>    PBMWidth( pbitmap )          - Width of planar bitmap "pbitmap"
  6647.  
  6648. <:s><:#286,9360>
  6649.  
  6650. <:#286,9360>    LBMPutPix( x, y, lbitmap, color)  - Set the color of pixel (x, y) color in linear bitmap
  6651.  
  6652. <:s><:#286,9360>
  6653.  
  6654. <:#286,9360>    LBMGetPix( x, y, lbitmap )        - Get the color of pixel (x, y) in linear bitmap
  6655.  
  6656. <:s><:p<* >>
  6657.  
  6658. <:#286,9360><+!><:X11,-32768;TOC 2 "EXPORT FUNCTIONS">EXPORT FUNCTIONS<-!>
  6659.  
  6660. <:s><:#286,9360>
  6661.  
  6662. <:s><:#286,9360>
  6663.  
  6664. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_pbm_to_bm">x_pbm_to_bm<-"><-!><:f>
  6665.  
  6666. <:#293,9360><+!>C Prototype:<-!>  extern int x_pbm_to_bm( char far * source_pbm, char far * dest_bm);
  6667.  
  6668. <:s><:#286,9360>
  6669.  
  6670. <:s><:#293,9360><+">source_pbm<-"> - A pointer to the source planar bitmap.
  6671.  
  6672. <:s><:#286,9360>
  6673.  
  6674. <:s><:#293,9360><+">dest_bm<-"> - A pointer to a buffer set up to receive the linear bitmap.
  6675.  
  6676. <:s><:#286,9360>
  6677.  
  6678. <:s><:#293,9360><+!>Returns:<-!> 0 on successful conversion.
  6679.  
  6680. <:s><:#286,9360>
  6681.  
  6682. <:s><:#579,9360>This function converts a bitmap in the planar format to the linear format as used by 
  6683. <+!><+">x_compile_bitmap<-"><-!>.
  6684.  
  6685. <:s><:#286,9360>
  6686.  
  6687. <:s><:#293,9360><+!>WARNING:<-!> The source and destination bitmaps <+#>must<-#> be pre-allocated.
  6688.  
  6689. <:s><:#286,9360>
  6690.  
  6691. <:s><:#579,9360><+!>NOTE:<-!> This function can only convert planar bitmaps that are suitable. If the source planar bitmap's width (per plane) is <;>= 256/4 it cannot be converted. In this situation an error code
  6692.  
  6693. <:s><:#286,9360>BM_WIDTH_ERROR.
  6694.  
  6695. <:s><:#286,9360>
  6696.  
  6697. <:s><:#286,9360>
  6698.  
  6699. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">x_bm_to_pbm<:X11,-32768;TOC 3 "x_bm_to_pbm"> 
  6700. <-"><-!><:f>
  6701.  
  6702. <:#293,9360><+!>C Prototype<-!>:  extern int x_bm_to_pbm( char far * source_lbm, char far * dest_bm);
  6703.  
  6704. <:s><:#286,9360>
  6705.  
  6706. <:s><:#293,9360><+">source_lbm <-"> -  A pointer to the source linear bitmap.
  6707.  
  6708. <:s><:#286,9360>
  6709.  
  6710. <:s><:#293,9360><+">dest_bm <-">- A pointer to a buffer set up to receive the planar bitmap.
  6711.  
  6712. <:s><:#286,9360>
  6713.  
  6714. <:s><:#293,9360><+!>Returns: <-!>0 on successful conversion.
  6715.  
  6716. <:s><:#286,9360>
  6717.  
  6718. <:#572,9360>This function converts a bitmap in the linear format as used by  x_compile_bitmap to the planar format.
  6719.  
  6720. <:s><:#286,9360>
  6721.  
  6722. <:s><:#293,9360><+!>WARNING:<-!> The source and destination bitmaps <+#>must<-#> be pre - allocated
  6723.  
  6724. <:s><:#286,9360>
  6725.  
  6726. <:s><:#579,9360><+!>NOTE: <-!>This function can only convert linear bitmaps that are suitable. If the source linear bitmap's width is not a multiple of 4 it cannot be converted. In this situation an error code
  6727.  
  6728. <:s>BM_WIDTH_ERROR. <:p<* >>
  6729.  
  6730. <+B><:#333,9360><:f280,2Times New Roman,0,0,0><+!>MODULE  XCLIPPBM<:X11,-32768;TOC 1 "MODULE  XCLIPPBM"><-!><:f>
  6731.  
  6732. <:s><:#286,9360>
  6733.  
  6734. <:s><:#286,9360>
  6735.  
  6736. <:#865,9360><+!>Note:<-!> VERY SIMILAR to XPBMCLIP. This module implements blits of clipped planar bitmaps.  Blits are clipped to pixels, both horizontally. This makes the unmasked blit function here slightly slower than the equivalent functions in the XPBMCLIP module.
  6737.  
  6738. <:s><:#286,9360>
  6739.  
  6740. <:s><:#286,9360>
  6741.  
  6742. <:#286,9360><+!><:X11,-32768;TOC 2 "SOURCES">SOURCES<-!>
  6743.  
  6744. <:#286,9360>    xclippbm.asm 
  6745.  
  6746. <:#286,9360>    xclippbm.inc 
  6747.  
  6748. <:s><:#286,9360>    xlib.inc 
  6749.  
  6750. <:s><:#286,9360>    model.inc
  6751.  
  6752. <:s><:#286,9360>
  6753.  
  6754. <:s><:#286,9360>
  6755.  
  6756. <:#286,9360><+!><:X11,-32768;TOC 2 "C HEADER FILE">C HEADER FILE<-!>
  6757.  
  6758. <:#286,9360>    xclippbm.h
  6759.  
  6760. <:s><:#286,9360>
  6761.  
  6762. <:s><:#286,9360>
  6763.  
  6764. <:#286,9360><+!><:X11,-32768;TOC 2 "EXPORTED VARIABLES">EXPORTED VARIABLES<-!>
  6765.  
  6766. <:s><:#286,9360>
  6767.  
  6768. <:#293,9360>    <+">TopBound<-"> - int  
  6769.  
  6770. <:s><:#286,9360>
  6771.  
  6772. <:#293,9360>    <+">BottomBound<-"> - int  
  6773.  
  6774. <:s><:#286,9360>
  6775.  
  6776. <:#293,9360><+">    LeftBound <-">- int  
  6777.  
  6778. <:s><:#286,9360>
  6779.  
  6780. <+">    RightBound <-">- int<:p<* >>
  6781.  
  6782. <:#286,9360><+!><:X11,-32768;TOC 2 "EXPORTED FUNCTIONS">EXPORTED FUNCTIONS<-!>
  6783.  
  6784. <:s><:#286,9360>
  6785.  
  6786. <:s><:#286,9360>
  6787.  
  6788. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_clip_pbm">x_clip_pbm<-"><-!><:f>
  6789.  
  6790. <:s><:#293,9360><+!>C Prototype:<-!> extern int x_clip_pbm (int X, int Y, int ScreenOffs, char far * Bitmap);
  6791.  
  6792. <:s><:#286,9360>
  6793.  
  6794. <:s><:#293,9360><+">X, Y<-"> - The coordinates to place the bitmap at.
  6795.  
  6796. <:s><:#286,9360>
  6797.  
  6798. <:#293,9360><+">ScreenOffset<-"> - The offset of the page on which to draw the bitmap.
  6799.  
  6800. <:s><:#286,9360>
  6801.  
  6802. <:s><:#293,9360><+">Bitmap<-"> - A far pointer to the planar bitmap.
  6803.  
  6804. <:s><:#286,9360>
  6805.  
  6806. <:s><:#579,9360><+!>Returns: <-!> If the entire bitmap turns out to be outside the bounding box, this function returns  a 1, otherwise it returns a 0
  6807.  
  6808. <:s><:#286,9360>
  6809.  
  6810. <:s><:#286,9360>Copies a planar bitmap from SRAM to VRAM, with clipping.  
  6811.  
  6812. <:s><:#286,9360>
  6813.  
  6814. <:s><:#286,9360>.
  6815.  
  6816. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">x_clip_masked_pbm<:X11,-32768;TOC 3 "x_clip_masked_pbm"><-"><-!><:f>
  6817.  
  6818. <:s><:#293,9360><+!>C Prototype:<-!> extern int x_clip_masked_pbm (int X, int Y,  int ScreenOffs, char far * Bitmap);
  6819.  
  6820. <:s><:#286,9360>
  6821.  
  6822. <:s><:#293,9360><+">X, Y<-"> - The coordinates to place the bitmap at.
  6823.  
  6824. <:s><:#286,9360>
  6825.  
  6826. <:s><:#293,9360><+">ScreenOffset<-"> - The offset of the page on which to draw the bitmap.
  6827.  
  6828. <:s><:#286,9360>
  6829.  
  6830. <:s><:#293,9360><+">Bitmap<-"> - A far pointer to the planar bitmap.
  6831.  
  6832. <:s><:#286,9360>
  6833.  
  6834. <:s><:#579,9360><+!>Returns:  <-!>If the entire bitmap turns out to be outside the bounding box, this function returns a 1, otherwise it returns a 0
  6835.  
  6836. <:s><:#286,9360>
  6837.  
  6838. <:s>Copies a planar bitmap from SRAM to VRAM, with clipping, 0 bytes in the bitmap are not copied.  
  6839. <:p<* >>
  6840.  
  6841. <+B><:#333,9360><:f280,2Times New Roman,0,0,0><+!>MODULE  XCIRCLE<:X11,-32768;TOC 1 "MODULE  XCIRCLE"><-!><:f>
  6842.  
  6843. <:s><:#286,9360>
  6844.  
  6845. <:s><:#286,9360>
  6846.  
  6847. <:#286,9360>Mode X circle functions
  6848.  
  6849. <:s><:#286,9360><+!>
  6850.  
  6851. <:#286,9360><+!><:X11,-32768;TOC 2 "SOURCES">SOURCES<-!>
  6852.  
  6853. <:#286,9360>    xcircle.asm 
  6854.  
  6855. <:#286,9360>    xcircle.inc 
  6856.  
  6857. <:s><:#286,9360>    xlib.inc 
  6858.  
  6859. <:s><:#286,9360>    model.inc
  6860.  
  6861. <:s><:#286,9360>
  6862.  
  6863. <:s><:#286,9360>
  6864.  
  6865. <:#286,9360><+!><:X11,-32768;TOC 2 "C HEADER FILE">C HEADER FILE<-!>
  6866.  
  6867.     xcircle.h<:p<* >>
  6868.  
  6869. <:#286,9360><+!>EXPORTED FUNCTIONS<:X11,-32768;TOC 2 "EXPORTED FUNCTIONS"><-!>
  6870.  
  6871. <:s><:#286,9360>
  6872.  
  6873. <:s><:#286,9360>
  6874.  
  6875. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_circle">x_circle<-"><-!><:f>
  6876.  
  6877. <:s><:#293,9360><+!>C Prototype:<-!> extern void x_circle (WORD Left, WORD Top, WORD Diameter, 
  6878.  
  6879. <:s><:#286,9360>                         WORD Color, WORD ScreenOffs);
  6880.  
  6881. <:s><:#286,9360>
  6882.  
  6883. <:s><:#293,9360><+">Left, Top<-"> - The coordinates of the upper left corner of the circle, in pixels.
  6884.  
  6885. <:s><:#286,9360>
  6886.  
  6887. <:s><:#293,9360><+">Diameter <-">- The diameter of the circle.
  6888.  
  6889. <:s><:#286,9360>
  6890.  
  6891. <:s><:#293,9360><+">Color <-">- The color in which to draw the circle.
  6892.  
  6893. <:s><:#286,9360>
  6894.  
  6895. <:s><:#293,9360><+">ScreenOffs<-"> - The page offset to draw the circle on.
  6896.  
  6897. <:s><:#286,9360>
  6898.  
  6899. <:s><:#286,9360>Draws a circle with the given upper-left-hand corner and diameter,  which are given in pixels.
  6900.  
  6901. <:s><:#286,9360>
  6902.  
  6903. <:s><:#286,9360>
  6904.  
  6905. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_filled_circle">x_filled_circle<-"><-!><:f>
  6906.  
  6907. <:s><:#293,9360><+!>C Prototype: <-!>extern void x_filled_circle (WORD Left, WORD Top, WORD Diameter, 
  6908.  
  6909. <:s><:#286,9360>                          WORD Color, WORD ScreenOffs);
  6910.  
  6911. <:s><:#293,9360><+">
  6912.  
  6913. <:s><:#293,9360><+">Left, Top<-"> - The coordinates of the upper left corner of the circle, in pixels.
  6914.  
  6915. <:s><:#286,9360>
  6916.  
  6917. <:s><:#293,9360><+">Diameter <-">- The diameter of the circle.
  6918.  
  6919. <:s><:#286,9360>
  6920.  
  6921. <:s><:#293,9360><+">Color <-">- The color in which to draw the circle.
  6922.  
  6923. <:s><:#286,9360>
  6924.  
  6925. <:s><:#293,9360><+">ScreenOffs<-"> - The page offset to draw the circle on.
  6926.  
  6927. <:s><:#286,9360>
  6928.  
  6929. <:s><:#286,9360>Draws a filled circle with the given upper-left-hand corner and diameter.
  6930.  
  6931. <:s><:p<* >>
  6932.  
  6933. <+B><:#333,9360><:f280,2Times New Roman,0,0,0><+!>MODULE XDETECT<:X11,-32768;TOC 1 "MODULE XDETECT"><-!><:f>  
  6934.  
  6935. <:s><:#286,9360>
  6936.  
  6937. <:s><:#286,9360>
  6938.  
  6939. <:s><:#286,9360>This module implements a set of functions to detect the PC's hardware configuration.
  6940.  
  6941. <:s><:#286,9360>
  6942.  
  6943. <:s><:#286,9360>
  6944.  
  6945. <:#286,9360><+!><:X11,-32768;TOC 2 "SOURCES">SOURCES<-!>
  6946.  
  6947. <:#286,9360>    xdetect.asm 
  6948.  
  6949. <:#286,9360>    xdetect.inc 
  6950.  
  6951. <:s><:#286,9360>    model.inc
  6952.  
  6953. <:s><:#286,9360>
  6954.  
  6955. <:s><:#286,9360>
  6956.  
  6957. <:#286,9360><+!><:X11,-32768;TOC 2 "C HEADER FILE">C HEADER FILE<-!>
  6958.  
  6959. <:#286,9360>    xdetect.h
  6960.  
  6961. <:s><:#286,9360>
  6962.  
  6963. <:s><:#286,9360>
  6964.  
  6965. <:#286,9360><+!><:X11,-32768;TOC 2 "EXPORTED MACROS">EXPORTED MACROS<-!>
  6966.  
  6967. <:s><:#286,9360>    I8086    0    
  6968.  
  6969. <:s><:#286,9360>    I80186  1    
  6970.  
  6971. <:s><:#286,9360>    I80286  2    
  6972.  
  6973. <:s><:#286,9360>    I80386  3
  6974.  
  6975. <:s><:#286,9360>
  6976.  
  6977. <:#286,9360>    NoGraphics 0    
  6978.  
  6979. <:#286,9360>    MDA           1    
  6980.  
  6981. <:#286,9360>    CGA            2    
  6982.  
  6983. <:#286,9360>    EGAMono   3    
  6984.  
  6985. <:#286,9360>    EGAColor    4    
  6986.  
  6987. <:#286,9360>    VGAMono   5    
  6988.  
  6989. <:#286,9360>    VGAColor   6    
  6990.  
  6991. <:#286,9360>    MCGAMono   7    
  6992.  
  6993. <:#286,9360>    MCGAColor    8
  6994.  
  6995. <:s><:#286,9360>
  6996.  
  6997. <:#286,9360>    BUS_MOUSE     1    
  6998.  
  6999. <:#286,9360>    SERIAL_MOUSE  2    
  7000.  
  7001. <:#286,9360>    INPORT_MOUSE  3    
  7002.  
  7003. <:#286,9360>    PS2_MOUSE     4    
  7004.  
  7005. <:#286,9360>    HP_MOUSE      5
  7006.  
  7007. <:s><:#286,9360>
  7008.  
  7009. <:s><:p<* >>
  7010.  
  7011. <:#286,9360><+!><:X11,-32768;TOC 2 "EXPORTED VARIABLES">EXPORTED VARIABLES<-!>
  7012.  
  7013. <:s><:#286,9360>
  7014.  
  7015. <:#293,9360><+">MouseButtonCount<-">  WORD - The number of buttons on the detected mouse  
  7016.  
  7017. <:s><:#286,9360>
  7018.  
  7019. <:#293,9360><+">MouseVersion<-"> WORD - Mouse driver version
  7020.  
  7021. <:s><:#286,9360>                (High byte = Major version, Low byte = minor version)
  7022.  
  7023. <:s><:#286,9360>
  7024.  
  7025. <:#293,9360><+">MouseType<-"> BYTE - The mouse type  
  7026.  
  7027. <:s><:#286,9360>
  7028.  
  7029. <:#293,9360><+">MouseIRQ <-"> BYTE - The IRQ number used by the mouse driver
  7030.  
  7031. <:s><:#286,9360>
  7032.  
  7033. <:s><:p<* >>
  7034.  
  7035. <:#286,9360><+!>EXPORTED FUNCTIONS<:X11,-32768;TOC 2 "EXPORTED FUNCTIONS"><-!>
  7036.  
  7037. <:s><:#286,9360>
  7038.  
  7039. <:s><:#286,9360>
  7040.  
  7041. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_graphics_card">x_graphics_card<-"><-!><:f>
  7042.  
  7043. <:s><:#293,9360><+!>C Prototype<-!>: extern int x_graphics_card();
  7044.  
  7045. <:s><:#286,9360>
  7046.  
  7047. <:s><:#293,9360><+!>Returns: <-!>The type of graphics card installed. 
  7048.  
  7049. <:s><:#286,9360>
  7050.  
  7051. <:s><:#286,9360>See the defines for this module.
  7052.  
  7053. <:s><:#286,9360>
  7054.  
  7055. <:s><:#286,9360>
  7056.  
  7057. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_processor">x_processor<-"><-!><:f>
  7058.  
  7059. <:s><:#293,9360><+!>C Prototype:<-!> extern int x_processor();
  7060.  
  7061. <:s><:#286,9360>
  7062.  
  7063. <:s><:#293,9360><+!>Returns:<-!> The type of processor installed. 
  7064.  
  7065. <:s><:#286,9360>
  7066.  
  7067. <:s><:#293,9360><+!>Note: <-!>A 486 registers as a 386. 
  7068.  
  7069. <:s><:#286,9360>
  7070.  
  7071. <:s><:#286,9360>See defines for this module.
  7072.  
  7073. <:s><:#286,9360>
  7074.  
  7075. <:s><:#286,9360>
  7076.  
  7077. <:#326,9360><:f280, Times New Roman,0,0,0><+"><+!><:X11,-32768;TOC 3 "x_coprocessor">x_coprocessor<-"><-!><:f>
  7078.  
  7079. <:s><:#293,9360><+!>C Prototype:<-!> extern int x_coprocessor();
  7080.  
  7081. <:s><:#286,9360>
  7082.  
  7083. <:s><:#293,9360><+!>Returns: <-!>1 of a numeric co-processor is present, 0 if not. 
  7084.  
  7085. <:s><:#286,9360>
  7086.  
  7087. <:#579,9360><+!>Note:<-!> The type is not detected but it's not really necessary as the processor type usually determines the numeric coprocessor type
  7088.  
  7089. <:s><:#286,9360>
  7090.  
  7091. <:s><:#286,9360>
  7092.  
  7093. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_mousedriver">x_mousedriver<-"><-!><:f>
  7094.  
  7095. <:s><:#293,9360><+!>C Prototype:<-!> extern int x_mousedriver();
  7096.  
  7097. <:s><:#286,9360>
  7098.  
  7099. <:s><:#293,9360><+!>Returns:<-!> 1 of a mouse driver is installed, 0 otherwise. 
  7100.  
  7101. <:s><:#286,9360>
  7102.  
  7103. <:s><:#286,9360>If a mouse driver is detected the mouse related variables are set accordingly.
  7104.  
  7105. <:s><:#286,9360>
  7106.  
  7107. <:s><:p<* >>
  7108.  
  7109. <+B><:#333,9360><:f280,2Times New Roman,0,0,0><+!>MODULE XFILEIO<:X11,-32768;TOC 1 "MODULE XFILEIO"><-!><:f>
  7110.  
  7111. <:s><:#286,9360>
  7112.  
  7113. <:s><:#286,9360>
  7114.  
  7115. <:s><:#286,9360>Handle based file I/O functions.
  7116.  
  7117. <:s><:#286,9360>See any good DOS programming reference for more information on int 21h DOS services.
  7118.  
  7119. <:s><:#286,9360>
  7120.  
  7121. <:s><:#286,9360>
  7122.  
  7123. <:#286,9360><+!><:X11,-32768;TOC 2 "SOURCES">SOURCES<-!>
  7124.  
  7125. <:#286,9360>    xfileio.asm 
  7126.  
  7127. <:#286,9360>    xfileio.inc 
  7128.  
  7129. <:s><:#286,9360>    model.inc
  7130.  
  7131. <:s><:#286,9360>
  7132.  
  7133. <:s><:#286,9360>
  7134.  
  7135. <:#286,9360><+!><:X11,-32768;TOC 2 "C HEADER FILE">C HEADER FILE<-!>
  7136.  
  7137. <:#286,9360>    xfileio.h
  7138.  
  7139. <:s><:#286,9360>
  7140.  
  7141. <:s><:#286,9360>
  7142.  
  7143. <:#286,9360><+!><:X11,-32768;TOC 2 "EXPORTED MACROS">EXPORTED MACROS<-!>
  7144.  
  7145. <:s><:#286,9360><+!>    File access modes<-!>
  7146.  
  7147. <:#286,9360>        F_RDONLY  - Read only.   
  7148.  
  7149. <:#286,9360>        F_WRONLY  - Write only.     
  7150.  
  7151. <:#286,9360>        F_RDWR - Read and write
  7152.  
  7153. <:s><:#286,9360>
  7154.  
  7155. <:s><:#286,9360><+!>    Seek codes<-!>
  7156.  
  7157. <:#286,9360>        SEEK_START - Bytes from the start of the file.
  7158.  
  7159. <:#286,9360>        SEEK_CURR - Bytes from the current position.
  7160.  
  7161. <:#286,9360>        SEEK_END - Bytes from the end of the file.
  7162.  
  7163. <:s><:#286,9360>
  7164.  
  7165. <:s><:#286,9360><+!>    File error value<-!>
  7166.  
  7167.         FILE_ERR<:p<* >>
  7168.  
  7169. <:#286,9360><+!><:X11,-32768;TOC 2 "EXPORTED FUNCTIONS">EXPORTED FUNCTIONS<-!>
  7170.  
  7171. <:s><:#286,9360>
  7172.  
  7173. <:s><:#286,9360>
  7174.  
  7175. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">f_open<:X11,-32768;TOC 3 "f_open"><-"><-!><:f>
  7176.  
  7177. <:#293,9360><+!>C Prototype: <-!>extern int f_open(char * filename, char access);
  7178.  
  7179. <:s><:#286,9360>
  7180.  
  7181. <:s><:#293,9360><+">filename<-"> - A pointer to a string containing the full path and filename you wish to open.
  7182.  
  7183. <:s><:#286,9360>
  7184.  
  7185. <:s><:#293,9360><+">access<-"> -  A character that defines the access mode.
  7186.  
  7187. <:s><:#286,9360>
  7188.  
  7189. <:s><:#293,9360><+!>Returns:<-!> The file handle on success, FILE_ERR on failure.
  7190.  
  7191. <:s><:#286,9360>
  7192.  
  7193. <:s><:#286,9360>Opens a file according to the access char.
  7194.  
  7195. <:s><:#286,9360>
  7196.  
  7197. <:s><:#286,9360>
  7198.  
  7199. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "f_close">f_close<-"><-!><:f>
  7200.  
  7201. <:#293,9360><+!>C Prototype: <-!> extern int f_close(int handle);
  7202.  
  7203. <:s><:#286,9360>
  7204.  
  7205. <:s><:#293,9360><+">handle<-"> -  The handle of the file you wish to close.
  7206.  
  7207. <:s><:#286,9360>
  7208.  
  7209. <:s><:#293,9360><+!>Returns:<-!> 0 on success, FILE_ERR on failure.
  7210.  
  7211. <:s><:#286,9360>
  7212.  
  7213. <:s><:#286,9360>Closes the file associated with the specified handle.
  7214.  
  7215. <:s><:#286,9360>
  7216.  
  7217. <:s><:#286,9360>
  7218.  
  7219. <:#333,9360><:f280, Times New Roman,0,0,0><+!><+">f_read<:X11,-32768;TOC 3 "f_read"><-"> 
  7220. <-!><:f>
  7221.  
  7222. <:#293,9360><+!>C Prototype: <-!> extern int f_read(int handle,char near * buffer, int count);
  7223.  
  7224. <:s><:#286,9360>
  7225.  
  7226. <:s><:#293,9360><+">handle<-"> - The handle of the file you wish to read from.
  7227.  
  7228. <:s><:#286,9360>
  7229.  
  7230. <:s><:#293,9360><+">buffer<-"> - A near pointer to a buffer to receive the bytes from the file.
  7231.  
  7232. <:s><:#286,9360>
  7233.  
  7234. <:s><:#293,9360><+">count<-"> - The number of bytes to read from the file.
  7235.  
  7236. <:s><:#286,9360>
  7237.  
  7238. <:s><:#293,9360><+!>Returns:<-!> The number of bytes read on success, FILE_ERR on failure
  7239.  
  7240. <:s><:#286,9360>
  7241.  
  7242. <:s><:#286,9360>Reads bytes from the a file into a near buffer
  7243.  
  7244. <:s><:#286,9360>
  7245.  
  7246. <:s><:p<* >>
  7247.  
  7248. <:#333,9360><:f280, Times New Roman,0,0,0><+!><+">f_readfar<:X11,-32768;TOC 3 "f_readfar"><-"> 
  7249. <-!><:f>
  7250.  
  7251. <:#293,9360><+!>C Prototype: <-!> extern int f_readfar(int handle,char far * buffer, int count);
  7252.  
  7253. <:s><:#286,9360>
  7254.  
  7255. <:s><:#293,9360><+">handle<-"> - The handle of the file you wish to read from.
  7256.  
  7257. <:s><:#286,9360>
  7258.  
  7259. <:s><:#293,9360><+">buffer<-"> - A far pointer to a buffer set up to receive the data.
  7260.  
  7261. <:s><:#286,9360>
  7262.  
  7263. <:s><:#293,9360><+">count <-">- The number of bytes to read.
  7264.  
  7265. <:s><:#286,9360>
  7266.  
  7267. <:s><:#293,9360><+!>Returns:<-!> The number of bytes read on success, FILE_ERR on failure
  7268.  
  7269. <:s><:#286,9360>
  7270.  
  7271. <:s><:#286,9360>Reads a block of  bytes a file into a far buffer.
  7272.  
  7273. <:s><:#286,9360>
  7274.  
  7275. <:s><:#286,9360>
  7276.  
  7277. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "f_write">f_write<-"><-!><:f>
  7278.  
  7279. <:#293,9360><+!>C Prototype:<-!> extern int f_write(int handle, char near * buffer, int count);
  7280.  
  7281. <:s><:#286,9360>
  7282.  
  7283. <:s><:#293,9360><+">handle<-"> - The handle of the file you wish to write to.
  7284.  
  7285. <:s><:#286,9360>
  7286.  
  7287. <:s><:#293,9360><+">buffer<-"> - A near pointer to a buffer containing the data to write.
  7288.  
  7289. <:s><:#286,9360>
  7290.  
  7291. <:s><:#293,9360><+">count <-">- The number of bytes to write.
  7292.  
  7293. <:s><:#286,9360>
  7294.  
  7295. <:s><:#293,9360><+!>Returns:<-!> The number of bytes written on success, FILE_ERR on failure
  7296.  
  7297. <:s><:#286,9360>
  7298.  
  7299. <:s><:#286,9360>Writes a block bytes to a file from a near buffer
  7300.  
  7301. <:s><:#286,9360>
  7302.  
  7303. <:s><:#286,9360>
  7304.  
  7305. <:#333,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "f_writefar">f_writefar<-"> 
  7306. <-!><:f>
  7307.  
  7308. <:s><:#293,9360><+!>C Prototype:<-!> extern int f_write(int handle, char far * buffer, int count);
  7309.  
  7310. <:s><:#286,9360>
  7311.  
  7312. <:s><:#293,9360><+">handle<-"> - The handle of the file you wish to write to.
  7313.  
  7314. <:s><:#286,9360>
  7315.  
  7316. <:s><:#293,9360><+">buffer<-"> - A far pointer to a buffer containing the data to write.
  7317.  
  7318. <:s><:#286,9360>
  7319.  
  7320. <:s><:#293,9360><+">count <-">- The number of bytes to write.
  7321.  
  7322. <:s><:#286,9360>
  7323.  
  7324. <:s><:#293,9360><+!>Returns:<-!> The number of bytes written on success, FILE_ERR on failure
  7325.  
  7326. <:s><:#286,9360>
  7327.  
  7328. <:s><:#286,9360>Writes a block of bytes to a file from a far buffer.
  7329.  
  7330. <:s><:#286,9360>
  7331.  
  7332. <:s><:#286,9360>
  7333.  
  7334. <:s><:#286,9360>
  7335.  
  7336. <:s><:#286,9360>
  7337.  
  7338. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">f_seek<:X11,-32768;TOC 3 "f_seek"> 
  7339. <-"><-!><:f>
  7340.  
  7341. <:#293,9360><+!>C Prototype:<-!> extern long int f_seek(int handle, long int position,  char method_code)
  7342.  
  7343. <:s><:#286,9360>
  7344.  
  7345. <:s><:#293,9360><+">handle<-"> - The handle of the file you are working with.
  7346.  
  7347. <:s><:#286,9360>
  7348.  
  7349. <:s><:#293,9360><+">position<-"> - The position to move to.
  7350.  
  7351. <:s><:#286,9360>
  7352.  
  7353. <:s><:#293,9360><+">method_code<-"> - The seek method you wish to use. (See the defines.)
  7354.  
  7355. <:s><:#286,9360>
  7356.  
  7357. <:s><:#293,9360><+!>Returns:<-!> The file pointer position on success, FILE_ERR on failure.
  7358.  
  7359. <:s><:#286,9360>
  7360.  
  7361. <:s><:#286,9360>Moves the file pointer.
  7362.  
  7363. <:s><:#286,9360>
  7364.  
  7365. <:s><:#286,9360>
  7366.  
  7367. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">f_filelength<:X11,-32768;TOC 3 "f_filelength"> 
  7368. <-"><-!><:f>
  7369.  
  7370. <:#293,9360><+!>C Prototype:<-!> extern long int f_filelength(int handle)
  7371.  
  7372. <:s><:#286,9360>
  7373.  
  7374. <:s><:#293,9360><+">handle<-"> - The handle of the file you are working with.
  7375.  
  7376. <:s><:#286,9360>
  7377.  
  7378. <:s><:#293,9360><+!>Returns:<-!> The length of the file on success, FILE_ERR on failure.
  7379.  
  7380. <:s><:#286,9360>
  7381.  
  7382. <:s><:#286,9360>
  7383.  
  7384. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">f_tell<:X11,-32768;TOC 3 "f_tell"><-"><-!><:f>
  7385.  
  7386. <:#293,9360><+!>C Prototype:<-!>  extern long int f_tell(int handle)
  7387.  
  7388. <:s><:#286,9360>
  7389.  
  7390. <:s><:#293,9360><+">handle<-"> - The handle of the file you are working with.
  7391.  
  7392. <:s><:#286,9360>
  7393.  
  7394. <:s><+!>Returns:<-!> The file pointer position on success, FILE_ERR on failure<:p<* >>
  7395.  
  7396. <+B><:#333,9360><:f280,2Times New Roman,0,0,0><+!>MODULE XRLETOOL<:X11,-32768;TOC 1 "MODULE XRLETOOL"><-!><:f>
  7397.  
  7398. <:s><:#286,9360>
  7399.  
  7400. <:s><:#286,9360>
  7401.  
  7402. <:s><:#286,9360>This module implements a number of functions comprising an RLE encoding decoding system.
  7403.  
  7404. <:s><:#286,9360>
  7405.  
  7406. <:s><:#286,9360>
  7407.  
  7408. <:#286,9360><+!><:X11,-32768;TOC 2 "SOURCES">SOURCES<-!>
  7409.  
  7410. <:#286,9360>    xrletool.asm 
  7411.  
  7412. <:#286,9360>    xrletool.inc 
  7413.  
  7414. <:s><:#286,9360>    model.inc
  7415.  
  7416. <:s><:#286,9360>
  7417.  
  7418. <:s><:#286,9360>
  7419.  
  7420. <:#286,9360><+!><:X11,-32768;TOC 2 "C HEADER FILE">C HEADER FILE<-!>
  7421.  
  7422. <:#286,9360>    xrletool.h
  7423.  
  7424. <:s><:#286,9360>
  7425.  
  7426. <:s><:p<* >>
  7427.  
  7428. <:#286,9360><+!>EXPORTED FUNCTIONS<:X11,-32768;TOC 2 "EXPORTED FUNCTIONS"><-!>
  7429.  
  7430. <:s><:#286,9360>
  7431.  
  7432. <:s><:#286,9360>
  7433.  
  7434. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_buff_RLDecode">x_buff_RLDecode<-"><-!><:f>
  7435.  
  7436. <:#293,9360><+!>C prototype<-!>:  extern unsigned int x_buff_RLDecode(char far * source_buff, char far *dest_buff);
  7437.  
  7438. <:s><:#286,9360> 
  7439.  
  7440. <:s><:#293,9360><+">source_buff<-">   - A far pointer to the buffer to compress   
  7441.  
  7442. <:s><:#286,9360>
  7443.  
  7444. <:#293,9360><+">dest_buff<-">   -  A far pointer to the destination buffer
  7445.  
  7446. <:s><:#286,9360>
  7447.  
  7448. <:s><:#293,9360><+!>Returns:<-!> The size of the resultant uncompressed data.
  7449.  
  7450. <:s><:#286,9360>
  7451.  
  7452. <:s><:#286,9360>Expands an RLE compressed source buffer to a destination buffer. 
  7453.  
  7454. <:s><:#286,9360>
  7455.  
  7456. <:s><:#293,9360><+!>WARNING: <-!>The buffers <+#>must<-#> be pre-allocated.
  7457.  
  7458. <:s><:#286,9360>
  7459.  
  7460. <:s><:#286,9360>
  7461.  
  7462. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_buff_RLEncode">x_buff_RLEncode<-"><-!><:f>
  7463.  
  7464. <:#293,9360><+!>C prototype<-!>:  extern unsigned int x_buff_RLEncode( char far * source_buff,  char far *dest_buff,
  7465.  
  7466. <:s><:#286,9360>                                    unsigned int count);
  7467.  
  7468. <:s><:#286,9360> 
  7469.  
  7470. <:s><:#293,9360><+">source_buff <-">  - A far pointer to the buffer to compress.
  7471.  
  7472. <:s><:#286,9360>
  7473.  
  7474. <:s><:#293,9360><+">dest_buff<-">   - A far pointer to the destination buffer.
  7475.  
  7476. <:s><:#286,9360>
  7477.  
  7478. <:s><:#293,9360><+">count  <-">- The size of the source data in bytes.
  7479.  
  7480. <:s><:#286,9360>
  7481.  
  7482. <:s><:#293,9360><+!>Returns:<-!> The size of the resultant compressed data.
  7483.  
  7484. <:s><:#286,9360>
  7485.  
  7486. <:s><:#286,9360>RLE Compresses a source buffer to a destination buffer. 
  7487.  
  7488. <:s><:#286,9360><+!>
  7489.  
  7490. <:s><:#293,9360><+!>WARNING:<-!> The buffers <+#>must<-#> be pre allocated.
  7491.  
  7492. <:s><:#286,9360>
  7493.  
  7494. <:s><:#286,9360>
  7495.  
  7496. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">x_buff_RLE_size<:X11,-32768;TOC 3 "x_buff_RLE_size"> 
  7497. <-"><-!><:f>
  7498.  
  7499. <:#293,9360><+!>C prototype:<-!> extern unsigned int x_buff_RLE_size( char far * source_buff,  unsigned int count);
  7500.  
  7501. <:s><:#286,9360>
  7502.  
  7503. <:s><:#293,9360><+">source_buff <-">  - A far pointer to the uncompressed data buffer   
  7504.  
  7505. <:s><:#286,9360>
  7506.  
  7507. <:s><:#293,9360><+">count <-"> - The size of the source data in bytes
  7508.  
  7509. <:s><:#286,9360>
  7510.  
  7511. <:s><:#293,9360><+!>Returns:<-!> The size the input data would compress to.
  7512.  
  7513. <:s><:#286,9360>
  7514.  
  7515. <:s><:#286,9360>
  7516.  
  7517. <:#333,9360><:f280, Times New Roman,0,0,0><+!><+">x_file_RLEncode<:X11,-32768;TOC 3 "x_file_RLEncode"><-"> 
  7518. <-!><:f>
  7519.  
  7520. <:#293,9360><+!>C prototype:<-!>  extern unsigned int x_file_RLEncode( int handle, char far * source_buff,
  7521.  
  7522. <:s><:#286,9360>                            unsigned int count);
  7523.  
  7524. <:s><:#286,9360>
  7525.  
  7526. <:s><:#293,9360><+">source_buff <-">  - A far pointer to the buffer to compress  
  7527.  
  7528. <:s><:#286,9360>
  7529.  
  7530. <:s><:#293,9360><+">handle<-"> - The output file handle.
  7531.  
  7532. <:s><:#286,9360>
  7533.  
  7534. <:s><:#293,9360><+">count<-">  - The size of the source data in bytes
  7535.  
  7536. <:s><:#286,9360>
  7537.  
  7538. <:s><:#293,9360><+!>Returns:<-!>  The size of the resultant compressed data or 0 if it fails.
  7539.  
  7540. <:s><:#286,9360>
  7541.  
  7542. <:s><:#286,9360>RLE Compresses a source buffer to an output file. 
  7543.  
  7544. <:s><:#286,9360>
  7545.  
  7546. <:s><:#286,9360>
  7547.  
  7548. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_file_RLDecode">x_file_RLDecode<-"><-!><:f>
  7549.  
  7550. <:#293,9360><+!>C prototype:<-!>  extern unsigned int x_buff_RLDecode( int handle,  char far * dest_buff);
  7551.  
  7552. <:s><:#293,9360><+">
  7553.  
  7554. <:s><:#293,9360><+">handle<-"> - Input file handle   
  7555.  
  7556. <:s><:#286,9360>
  7557.  
  7558. <:s><:#293,9360><+">dest_buff <-"> - A far pointer to the destination buffer
  7559.  
  7560. <:s><:#286,9360>
  7561.  
  7562. <:s><:#293,9360><+!>Returns: <-!>The size of the resultant uncompressed data.
  7563.  
  7564. <:s><:#286,9360>
  7565.  
  7566. <:s><:#286,9360>Expands an RLE compresses file to a destination RAM buffer.   
  7567.  
  7568. <:s><:p<* >>
  7569.  
  7570. <+B><:#333,9360><:f280,2Times New Roman,0,0,0><+!>MODULE XPOLYGON<:X11,-32768;TOC 1 "MODULE XPOLYGON"><-!><:f>
  7571.  
  7572. <:s><:#286,9360>
  7573.  
  7574. <:s><:#286,9360>
  7575.  
  7576. <:s><:#286,9360>This module implements general filled convex polygon and triangle functions
  7577.  
  7578. <:s><:#286,9360>
  7579.  
  7580. <:#286,9360><+!><:X11,-32768;TOC 2 "SOURCES">SOURCES<-!>
  7581.  
  7582. <:#293,9360><+!>    <-!>xpolygon.asm
  7583.  
  7584. <:#286,9360>    xpolygon.inc
  7585.  
  7586. <:s><:#286,9360><+!>
  7587.  
  7588. <:#286,9360><+!><:X11,-32768;TOC 2 "C HEADER FILE">C HEADER FILE<-!>
  7589.  
  7590. <:#286,9360>    xpolygon.h
  7591.  
  7592. <:s><:#286,9360>
  7593.  
  7594. <:s><:#286,9360>
  7595.  
  7596. <:#286,9360><+!><:X11,-32768;TOC 2 "TYPE DEFS">TYPE DEFS<-!>
  7597.  
  7598. <:#286,9360>    typedef struct {    int X;    int Y;  } far VERTEX;
  7599.  
  7600. <:s><:#286,9360>
  7601.  
  7602. <:s><:p<* >>
  7603.  
  7604. <:#286,9360><+!><:X11,-32768;TOC 2 "EXPORTED FUNCTIONS">EXPORTED FUNCTIONS<-!>
  7605.  
  7606. <:s><:#286,9360>
  7607.  
  7608. <:s><:#286,9360>
  7609.  
  7610. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">x_triangle<:X11,-32768;TOC 3 "x_triangle"><-"><-!><:f>
  7611.  
  7612. <:#293,9360><+!>C Prototype:<-!>  void x_triangle( int x0, int y0, int x1, int y1, int x2, int y2, WORD color, 
  7613.  
  7614. <:s><:#286,9360>                WORD PageBase);
  7615.  
  7616. <:s><:#286,9360>
  7617.  
  7618. <:s><:#293,9360><+">x0, y0<-"> -  The coordinates of point one of the triangle.
  7619.  
  7620. <:s><:#286,9360>
  7621.  
  7622. <:s><:#293,9360><+">x1, y1<-"> - The coordinates of point two of the triangle.
  7623.  
  7624. <:s><:#286,9360>
  7625.  
  7626. <:s><:#286,9360>x2, y2  - The coordinates of the third (and final) point of the triangle.
  7627.  
  7628. <:s><:#286,9360>
  7629.  
  7630. <:s><:#293,9360><+">color<-"> - The color in which to draw the triangle in.
  7631.  
  7632. <:s><:#286,9360>
  7633.  
  7634. <:s><:#293,9360><+">PageBase<-"> - The page offset on which to draw the triangle.
  7635.  
  7636. <:s><:#286,9360>
  7637.  
  7638. <:#579,9360>This function draws a filled triangle which is clipped to the current clipping window defined by 
  7639. <+">TopClip, BottomClip, LeftClip, RightClip<-">.  
  7640.  
  7641. <:s><:#286,9360>
  7642.  
  7643. <:s><:#579,9360><+!>Remember: <-!><+#>The X clipping variable are in BYTES not PIXELS<-#> so you  can only clip to 4 pixel byte boundaries.
  7644.  
  7645. <:s><:#286,9360>
  7646.  
  7647. <:s><:p<* >>
  7648.  
  7649. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_polygon">x_polygon<-"><-!><:f>
  7650.  
  7651. <:#293,9360><+!>C Prototype:<-!>  void x_polygon( VERTEX *vertices, int  num_vertices, WORD color,
  7652.  
  7653. <:s><:#286,9360>                WORD PageBase);
  7654.  
  7655. <:s><:#293,9360><+">
  7656.  
  7657. <:#293,9360><+">vertices<-"> - A pointer to your vertex structure.
  7658.  
  7659. <:s><:#286,9360>
  7660.  
  7661. <:s><:#293,9360><+">num_vertices<-"> - The number of vertices to plot.
  7662.  
  7663. <:s><:#286,9360>
  7664.  
  7665. <:s><:#293,9360><+">color<-"> - The color in which to draw the polygon.
  7666.  
  7667. <:s><:#286,9360>
  7668.  
  7669. <:s><:#293,9360><+">PageBase<-"> - The page offset on which to draw the polygon.
  7670.  
  7671. <:s><:#286,9360>
  7672.  
  7673. <:s><:#572,9360>This function is similar to the triangle function but draws convex polygons. The vertices are supplied in the form of a FAR  pointer.
  7674.  
  7675. <:s><:#286,9360>
  7676.  
  7677. <:s><:#579,9360><+!>NOTE:<-!> A convex polygon is one such that if you draw a line from any two vertices, every point on that line will be within the  polygon.
  7678.  
  7679. <:s><:#286,9360>
  7680.  
  7681. <+@>This function works by splitting up a polygon into its component triangles and calling the triangle routine above to draw each one. Performance is respectable but a custom polygon routine might be faster.<:p<* >><:f280,2Times New Roman,0,0,0><+!>MODULE XBEZ
  7682. <-!><:f><+!><:f280,2Times New Roman,0,0,0>IER<-!><:f><:X11,-32768;TOC 1 "MODULE XBEZIER">
  7683.  
  7684. <+@><:s><:#286,9360>
  7685.  
  7686. <+@><:#286,9360>Bezier curve plotting function. See "What is a Bezier curve?" for more details.
  7687.  
  7688. <+@><:s><:#286,9360>
  7689.  
  7690. <+@><:s><:#286,9360>
  7691.  
  7692. <+@><:#286,9360><+!><:X11,-32768;TOC 2 "SOURCES">SOURCES<-!>
  7693.  
  7694. <:#286,9360>    xbezier.asm
  7695.  
  7696. <:s><:#286,9360>    xlib.inc
  7697.  
  7698. <:s><:#286,9360>
  7699.  
  7700. <:s><:#286,9360><+!>
  7701.  
  7702. <:#286,9360><+!>C HEADER FILE<:X11,-32768;TOC 2 "C HEADER FILE"><-!>
  7703.  
  7704. <+!>    <-!>xbezier.h<:p<* >>
  7705.  
  7706. <:#286,9360><+!>EXPORTED FUNCTIONS<:X11,-32768;TOC 2 "EXPORTED FUNCTIONS"><-!>
  7707.  
  7708. <:s><:#286,9360><+!>
  7709.  
  7710. <:s><:#286,9360><+!>
  7711.  
  7712. <:#326,9360><+!><:f280, Times New Roman,0,0,0><+">x_bezier<:X11,-32768;TOC 3 "x_bezier"><-">
  7713.  
  7714. <:#293,9360><+!>C Prototype:<-!> void x_bezier( int e1x, int e1y, int c1x, int c1y, int c2x, int c2y,
  7715.  
  7716. <:#286,9360>                int e2x, int e2y, int levels, char color, WORD PageBase);
  7717.  
  7718. <:s><:#286,9360>
  7719.  
  7720. <:s><:#293,9360><+">e1x, e1y, e2x, e2y<-"> - The coordinates of the two endpoints.
  7721.  
  7722. <:s><:#286,9360>
  7723.  
  7724. <:s><:#293,9360><+">c1x, c1y, c2x, c2y<-"> - The coordinates of the two control points.
  7725.  
  7726. <:s><:#286,9360>
  7727.  
  7728. <:s><:#293,9360><+">levels<-"> - 
  7729.  
  7730. <:s><:#286,9360>
  7731.  
  7732. <:s><:#293,9360><+">color<-"> - The color to draw with.
  7733.  
  7734. <:s><:#286,9360>
  7735.  
  7736. <:s><:#293,9360><+">PageBase<-"> - The page offset on which to draw.
  7737.  
  7738. <:s><:#286,9360>
  7739.  
  7740. <:s><:#286,9360>Plots a Bezier curve on the screen.
  7741.  
  7742. <:s><:#286,9360>
  7743.  
  7744. <:s><:#293,9360><+!>See also: <-!>"What is a Bezier curve?"
  7745.  
  7746. <:s><:#286,9360>
  7747.  
  7748. <:s><:#286,9360>
  7749.  
  7750. <:s><:#286,9360><+!>
  7751.  
  7752. <:s><:#286,9360><+!>
  7753.  
  7754. <+B><:p<* >><:f280, Times New Roman,0,0,0><+!>MODULE XFILL<:X11,-32768;TOC 1 "MODULE XFILL">
  7755.  
  7756. <+@><:s><:#333,9360><+!><:f280, Times New Roman,0,0,0>
  7757.  
  7758. <:s><:#286,9360>This module implements a couple of general purpose flood fill functions.
  7759.  
  7760. <:s><:#286,9360>
  7761.  
  7762. <:s><:#286,9360><+!>
  7763.  
  7764. <:#286,9360><+!><:X11,-32768;TOC 2 "SOURCES">SOURCES
  7765.  
  7766. <:#286,9360>    xfill.asm
  7767.  
  7768. <:s><:#286,9360>    xlib.inc
  7769.  
  7770. <:s><:#286,9360>
  7771.  
  7772. <:#286,9360><+!>C HEADER FILE<:X11,-32768;TOC 2 "C HEADER FILE">
  7773.  
  7774.     xfill.h<:p<* >>
  7775.  
  7776. <:#286,9360><-!><+!><:X11,-32768;TOC 2 "EXPORTED FUNCTIONS">EXPORTED FUNCTIONS
  7777.  
  7778. <:s><:#286,9360><+!>
  7779.  
  7780. <:s><:#286,9360><+!>
  7781.  
  7782. <:#326,9360><:f280, Times New Roman,0,0,0><+"><+!>x_flood_fill<-!><-"><:X11,-32768;TOC 3 "x_flood_fill">
  7783.  
  7784. <:#293,9360><+!>C Prototype: <-!>int x_flood_fill( int x, int y, WORD offs, int boundary, int color);
  7785.  
  7786. <:s><:#286,9360>
  7787.  
  7788. <:s><:#293,9360><+">x, y <-">- The starting coordinates.
  7789.  
  7790. <:s><:#286,9360>
  7791.  
  7792. <:s><:#293,9360><+">offs<-"> - The page offset to draw on.
  7793.  
  7794. <:s><:#286,9360>
  7795.  
  7796. <:#293,9360><+">boundary -  Boundary<-"><+"> color.
  7797.  
  7798. <:s><:#286,9360>
  7799.  
  7800. <:s><:#293,9360><+">color<-"> - The color to use for the fill.
  7801.  
  7802. <:s><:#286,9360>
  7803.  
  7804. <:s><:#293,9360><+!>Returns:<-!> The number of pixels that were filled.
  7805.  
  7806. <:s><:#286,9360>
  7807.  
  7808. <:#1151,9360>This function performs the familiar flood filling used by many paint programs and, of course, the Borland BGI's flood fill function.  The pixel at 
  7809. <+">x, y<-"><+"> <-"> and all adjacent pixels of the same color are filled with the new color.  Filling stops when there are no more adjacent pixels of the original pixels color.
  7810.  
  7811. <:s><:#286,9360>
  7812.  
  7813. <:s><:#286,9360>
  7814.  
  7815. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_boundry_fill">x_boundry_fill<-"><-!>
  7816.  
  7817. <:#293,9360><+!>C Prototype: <-!>int x_boundry_fill( int x, int y, WORD offs, int boundary, int color);
  7818.  
  7819. <:s><:#286,9360>
  7820.  
  7821. <:s><:#293,9360><+">x, y <-">- The starting coordinates.
  7822.  
  7823. <:s><:#286,9360>
  7824.  
  7825. <:s><:#293,9360><+">offs<-"> - The page offset to draw on.
  7826.  
  7827. <:s><:#286,9360>
  7828.  
  7829. <:#293,9360><+">boundary -  Boundary color.
  7830.  
  7831. <:s><:#286,9360>
  7832.  
  7833. <:s><:#293,9360><+">color<-"> - The color to use for the fill.
  7834.  
  7835. <:s><:#286,9360>
  7836.  
  7837. <:s><:#293,9360><+!>Returns:<-!> The number of pixels that were filled.
  7838.  
  7839. <:s><:#286,9360>
  7840.  
  7841. <:#872,9360>This function performs a variant of the flood fill described above. The pixel at 
  7842. <+">x, y<-"><+"> <-"> and all adjacent pixels of the same color are filled with the new color.  Filling stops when the area being filled is fully enclosed by pixels of the color 
  7843. <+">boundary.
  7844.  
  7845. <:s><:#326,9360><+!><+"><:f280, Times New Roman,0,0,0>
  7846.  
  7847. <+B><:p<* >><:f280, Times New Roman,0,0,0><+!>MODULE XVSYNC<:X11,-32768;TOC 1 "MODULE XVSYNC"><-!><:f>
  7848.  
  7849. <+@><:s><:#286,9360>
  7850.  
  7851. <:#286,9360>Inspired by REND386 v3.01 by Dave Stamps and Bernie Roehl
  7852.  
  7853. <:s><:#286,9360>
  7854.  
  7855. <:#1430,9360>This module uses timer 0 to simulate a vertical retrace interrupt.  It's designed to significantly reduce the idle waiting time in XLIB.  Why simulate the VRT interrupt?  Simply because a true VRT interrupt is not implemented on many VGA cards.  Using a VRT
  7856.  interrupt as opposed to polling, can result in huge performance improvements for your code and help make animation much smoother than it would be using polling.
  7857.  
  7858. <:s><:#286,9360>
  7859.  
  7860. <:#1158,9360>Normally XLIB waits for vsync when <+!><+">x_page_flip, x_set_start_address<-!><-"> or 
  7861. <+!><+">x_put_pal_???<-!><-"> is called. the waiting period could be better utilized to do housekeeping calculations or whatever.  The 
  7862. <+!><+">x_put_pal_???<-!><-"> functions also don't work very smoothly in conjunction with other functions that wait for the vertical retrace since each function introduces its own VRT delay.
  7863.  
  7864. <:s><:#286,9360>
  7865.  
  7866. <:#572,9360>When using the vsync handler, the VRT delay is reduced to the absolute minimum which can result in a huge performance boost for your programs.
  7867.  
  7868. <:s><:#286,9360>
  7869.  
  7870. <:s><:#572,9360>When using double buffering, you may still have to wait before drawing, but you could do as much other work as possible, like this:
  7871.  
  7872. <:s><:#286,9360>
  7873.  
  7874. <:s><:#280,9360>    <:f240,2MS Serif,0,0,0>x_page_flip(...);
  7875.  
  7876. <:s><:#280,9360><:f240,2MS Serif,0,0,0>    <:f><:f240,2MS Serif,0,0,0>/* animate the palette */
  7877.  
  7878. <:s><:#280,9360><:f240,2MS Serif,0,0,0>    /* <:f><:f240,2MS Serif,0,0,0>do some collision detection and 3D calculations */
  7879.  
  7880. <:s><:#280,9360><:f240,2MS Serif,0,0,0>    /* read the joystick */
  7881.  
  7882. <:#280,9360><:f240,2MS Serif,0,0,0>    <:f><:f240,2MS Serif,0,0,0>x_wait_start_address();   /* Not needed with triple buffering. *<:f><:f240,2MS Serif,0,0,0>/
  7883.  
  7884. <:s><:#280,9360><:f240,2MS Serif,0,0,0>    /* draw the next frame. */
  7885.  
  7886. <:s><:#286,9360>
  7887.  
  7888. <:s><:#286,9360>
  7889.  
  7890. <:#286,9360><+!><:X11,-32768;TOC 2 "SOURCES">SOURCES<-!>
  7891.  
  7892. <:#286,9360>    xvsync.asm
  7893.  
  7894. <:s><:#286,9360>    xmain.asm
  7895.  
  7896. <:#286,9360>    xvsync.inc
  7897.  
  7898. <:s><:#286,9360>    xmain.inc
  7899.  
  7900. <:s><:#286,9360>
  7901.  
  7902. <:s><:#286,9360><+!>
  7903.  
  7904. <:#286,9360><+!><:X11,-32768;TOC 2 "C HEADER FILE">C HEADER FILE<-!>
  7905.  
  7906. <:#293,9360><+!>    <-!>xvsync.h
  7907.  
  7908. <:s><:p<* >>
  7909.  
  7910. <:#286,9360><+!><:X11,-32768;TOC 2 "EXPORTED VARIABLES">EXPORTED VARIABLES<-!>
  7911.  
  7912. <:s><:#286,9360><+!>
  7913.  
  7914. <:#293,9360><+">VsyncPeriod<-"> WORD - Time in 1.193 between two vsyncs.
  7915.  
  7916. <:s><:#286,9360>
  7917.  
  7918. <:#293,9360><+">TicksPerSecond<-"> WORD - Number of vsyncs per second.
  7919.  
  7920. <:s><:#286,9360>
  7921.  
  7922. <:#293,9360><+">VsyncTimerInt<-">   long  - Number of vsyncs since <+!><+">x_install_vsync_handler<-!><-"> was called. Nice for<-">
  7923.  
  7924. <:s>                game timing.<:p<* >>
  7925.  
  7926. <:#286,9360><+!>EXPORTED FUNCTIONS<:X11,-32768;TOC 2 "EXPORTED FUNCTIONS"><-!>
  7927.  
  7928. <:s><:#286,9360><+!>
  7929.  
  7930. <:s><:#286,9360><+!>
  7931.  
  7932. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">x_install_vsync_handler<:X11,-32768;TOC 3 "x_install_vsync_handler"><-"><-!>
  7933.  
  7934. <:#293,9360><+!>C Prototype:<-!> void x_install_vsync_handler( int VRTsToSkip);
  7935.  
  7936. <:s><:#286,9360>
  7937.  
  7938. <:#293,9360><+">VRTsToSkip<-"> - Defines the delay in VRT's between consecutive physical start address changes,
  7939.  
  7940. <:s><:#286,9360>        thus allowing you to limit the maximum frame rate for page flips in animation
  7941.  
  7942. <+A><:s><:#293,9360>        systems. The frame rate is calculated as Vertical Refresh Rate / 
  7943. <+">VRTsToSkip.<-">
  7944.  
  7945. <:#293,9360><+">        <-">Thus in the 320x240 mode which refreshes at 60Hz a <+">VRTsToSkip<-"> value of 
  7946.  
  7947. <:#286,9360>        3 will result in a maximum page flipping rate of 20Hz (Frames per second).
  7948.  
  7949. <:s><:#286,9360>
  7950.  
  7951. <:s><:#286,9360>This function installs the vsync handler using timer 0.  It's called about 100 microseconds before
  7952.  
  7953. <:s><:#286,9360>every vertical retrace.
  7954.  
  7955. <:s><:#286,9360>
  7956.  
  7957. <:s><:#293,9360><+!>WARNING<-!><+!>:<-!> Be sure to remove it before exiting your program.
  7958.  
  7959. <:s><:#286,9360>        When used with a debugger, the system clock may speed up.
  7960.  
  7961. <:s><:#286,9360>
  7962.  
  7963. <:s><:#286,9360>
  7964.  
  7965. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+">x_remove_vsync_handler<:X11,-32768;TOC 3 "x_remove_vsync_handler"><-"><-!>
  7966.  
  7967. <:s><:#293,9360><+!>C Prototype: <-!>void x_remove_vsync_handler( void );
  7968.  
  7969. <:s><:#286,9360>
  7970.  
  7971. <:s><:#286,9360>This function removes the vsync handler.
  7972.  
  7973. <:s><:#286,9360>
  7974.  
  7975. <:s><:#286,9360>You <+#>must<-#> call this function before exiting your program, or your system will crash!
  7976.  
  7977. <:s><:#286,9360>
  7978.  
  7979. <:s><:#286,9360>
  7980.  
  7981. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><:X11,-32768;TOC 3 "x_set_user_vsync_handler">x_set_user_vsync_handler<-"><-!>
  7982.  
  7983. <:s><:#293,9360><-"><+!>C Prototype: <-!>void x_set_user_vsync_handler( void far (*f)() );
  7984.  
  7985. <:s><:#286,9360>
  7986.  
  7987. <:s><:#293,9360><+">f<-"> - A far pointer to a user function to be called once each vertical retrace.
  7988.  
  7989. <:s><:#286,9360>
  7990.  
  7991. <:#572,9360>This function installs a user routine to be called once each vertical retrace.  The user handler has its own stack of 256 bytes, so be careful with the stack checking option in BC.
  7992.  
  7993. <:s><:#286,9360>
  7994.  
  7995. <:s><:#293,9360><+!>WARNING:<-!> This installs an interrupt driven handler, beware of the following:
  7996.  
  7997. @Bullet 1@<:s><:#286,9360>Only 8086 registers are preserved.  If you're using 386 code, save all the 386 registers.
  7998.  
  7999. @Bullet 1@<:s><:#286,9360>Don't do any drawing.
  8000.  
  8001. @Bullet 1@<:s><:#286,9360>Don't call any DOS functions.
  8002.  
  8003. <:s><:#286,9360>
  8004.  
  8005. <:s>You CAN update global variables if you're careful.  And it's nice for palette animation.  You can even do fades while loading from disk. You should usee this instead of installing your own int 08h routine and chaining to the original.<:p<* >>
  8006.  
  8007. <:#326,9360><:f280, Times New Roman,0,0,0><+!><+"><-#>x_wait_start_addr<:X11,-32768;TOC 3 "x_wait_start_addr"><-"><-!>
  8008.  
  8009. <:s><:#293,9360><+!>C Prototype: <-!>void x_wait_start_addr( void );
  8010.  
  8011. <:s><:#286,9360>
  8012.  
  8013. <:s><:#579,9360>You must call this function before drawing after a call to <+!><+">x_set_start_addr<-!><-"> or 
  8014. <+!><+">x_page_flip<-!><-"> when you are using the vsync handler and not using triple buffering.<-"><-">
  8015.  
  8016. <:s><:#286,9360>
  8017.  
  8018. <:s><:#286,9360>            
  8019.  
  8020. <:s><:#286,9360>
  8021.  
  8022. <:s><:#286,9360><+!>
  8023.  
  8024. <:s><:#286,9360>
  8025.  
  8026. <:s><:#286,9360>
  8027.  
  8028. <:s><:#286,9360>
  8029.  
  8030. <+B><:f240,2MS Serif,0,0,0>    <:f><-"><-"><-"><:p<* >><:f280, Times New Roman,0,0,0><+!>MODULE XCBITM32<:X11,-32768;TOC 1 "MODULE XCBITM32">
  8031.  
  8032. <+@><:s><:#333,9360><+!><:f280, Times New Roman,0,0,0>
  8033.  
  8034. <:#579,9360>This module implements 32 bit compiling of linear bitmaps.  There are no functions for plotting the compiled bitmaps in this module, use 
  8035. <+!><+">x_put_cbitmap<-!><-"> for that.
  8036.  
  8037. <:s><:#286,9360>
  8038.  
  8039. <:s><:#286,9360>
  8040.  
  8041. <:#286,9360><+!>SOURCES<:X11,-32768;TOC 2 "SOURCES">    
  8042.  
  8043. <:#293,9360><+!>    <-!>xcbitm32.c
  8044.  
  8045. <:s><:#286,9360>
  8046.  
  8047. <:s><:#286,9360>
  8048.  
  8049. <:#286,9360><+!>C HEADER FILE<:X11,-32768;TOC 2 "C HEADER FILE">
  8050.  
  8051. <:#293,9360><+!>    <-!><-">xcbitm32.h
  8052.  
  8053. <:s><:p<* >>
  8054.  
  8055. <:#286,9360><+!>EXPORTED FUNCTIONS<:X11,-32768;TOC 2 "EXPORTED FUNCTIONS">
  8056.  
  8057. <:s><:#286,9360><+!>
  8058.  
  8059. <:s><:#286,9360><+!>
  8060.  
  8061. <:#326,9360><+!><+"><:f280, Times New Roman,0,0,0>x_compile_bitmap_32<:X11,-32768;TOC 3 "x_compile_bitmap_32"><-"><-!><:f>
  8062.  
  8063. <:s><:#293,9360><+!>C Prototype: <-!> x_compile_bitmap_32( WORD lsw, char far *bitmap, char far *output );
  8064.  
  8065. <:s><:#286,9360>
  8066.  
  8067. <:s><:#293,9360><+">lsw<-"> - The logical screen width in bytes.
  8068.  
  8069. <:s><:#286,9360>
  8070.  
  8071. <:s><:#293,9360><+">bitmap<-"> - A pointer to the source linear bitmap.
  8072.  
  8073. <:s><:#286,9360>
  8074.  
  8075. <:s><:#293,9360><+">output<-"> - A far pointer to a buffer set up to receive the compiled bitmap.
  8076.  
  8077. <:s><:#286,9360>
  8078.  
  8079. <:s><:#293,9360><+!>Returns: <-!>The size of the compiled bitmap in bytes.
  8080.  
  8081. <:s><:#286,9360>
  8082.  
  8083. <:s><:#572,9360>Compiles a linear bitmap to generate 386+ machine code to plot it at any required screen coordinates FAST!
  8084.  
  8085. <:s><:#286,9360>
  8086.  
  8087. <:s><:#286,9360>
  8088.  
  8089. <:#326,9360><+!><+"><:f280, Times New Roman,0,0,0>x_sizeof_cbitmap_32<:X11,-32768;TOC 3 "x_sizeof_cpbm">
  8090.  
  8091. <:#293,9360><:f><-"><+!>C Prototype: <-!> int x_sizeof_cbitmap32( WORD lsw, char far *bitmap );
  8092.  
  8093. <:s><:#286,9360>
  8094.  
  8095. <:s><:#293,9360><+">lsw<-"> - The logical screen width in bytes.
  8096.  
  8097. <:s><:#286,9360>
  8098.  
  8099. <:s><:#293,9360><+">bitmap<-"> - A far pointer to the source linear bitmap.
  8100.  
  8101. <:s><:#286,9360>
  8102.  
  8103. <:s><:#293,9360><+!>Returns: <-!> The space in bytes required to hold the compiled bitmap.
  8104.  
  8105. <+B><:s><:p<* >>
  8106.  
  8107. <+B><:#333,9360><:f280,2Times New Roman,0,0,0><+!>REFERENCE SECTION<:X11,-32768;TOC 1 "REFERENCE SECTION"><-!><:f>
  8108.  
  8109. <:s><:#286,9360>
  8110.  
  8111. <:s><:#286,9360>
  8112.  
  8113. <:#286,9360><+!><:X11,-32768;TOC 2 "REFERENCES">REFERENCES<-!>
  8114.  
  8115. <:s><:#286,9360>In my opinion <+#>Doctor Dobbs Journal<-#> is the best reference text for VGA Mode X graphics:
  8116.  
  8117. <:#286,9360>    Issue 178 Jul. 1991 : First reference to Mode X Article Abstract   : VGA's undocumented
  8118.  
  8119. <:s><:#286,9360>                      Mode X supports page flipping,  makes off screen memory available,
  8120.  
  8121. <:s><:#286,9360>                    has square pixels,  and increases performance by as much as 4 times.
  8122.  
  8123. <:s><:#286,9360>
  8124.  
  8125. <:#286,9360>    Issue 179 Aug. 1991 : Continuation Article Abstract. Michael discusses latches and
  8126.  
  8127. <:#286,9360>                VGA's  undocumented Mode X.
  8128.  
  8129. <:s><:#286,9360>
  8130.  
  8131. <:#286,9360>    Issue 181 Sept. 1991 : Continuation Article Abstract. Michael puts the moves on
  8132.  
  8133. <:#286,9360>                animation using VGA's 256 colors.
  8134.  
  8135. <:s><:#286,9360>
  8136.  
  8137. <:#286,9360>    Issue 184 Oct. 1991 : First of a continuing series covering 3-D animation  using VGA's
  8138.  
  8139. <:s><:#286,9360>                Mode X. This series is still ongoing          
  8140.  
  8141. <:s><:#286,9360>
  8142.  
  8143. <:s><:#286,9360>    (October 1992) Article Abstract. Michael moves into 3-D animation, starting with basic
  8144.  
  8145. <:s><:#286,9360>            polygon fills and page flips.
  8146.  
  8147. <:s><:#286,9360>
  8148.  
  8149. <:s><:#286,9360>
  8150.  
  8151. <:#286,9360><+!><:X11,-32768;TOC 2 "WHAT IS MODE X ?">WHAT IS MODE X ?<-!>
  8152.  
  8153. <:#2002,9360>Mode X is a derivative of the VGA's standard mode 13h (320x200 256 color). It is a (family) of undocumented video modes that are created by tweaking the VGA's registers. The beauty of mode X is that it offers several benefits to the programmer: - Multiple g
  8154. raphic pages where mode 13h doesn't allowing for page flipping  (also known as double buffering) and storage of images and data in offscreen video memory - A planar video ram organization which although more difficult to program, allows the VGA's plane-orie
  8155. nted hardware to be used to process pixels in parallel, improving performance by up to 4 times over mode 13h
  8156.  
  8157. <:s><:#286,9360>
  8158.  
  8159. <:s><:#286,9360>
  8160.  
  8161. <:#286,9360><+!><:X11,-32768;TOC 2 "WHAT IS A SPLIT SCREEN ?">WHAT IS A SPLIT SCREEN ?<-!>
  8162.  
  8163. <:#858,9360>A split screen is a hardware feature offered by the EGA and VGA video cards. A split screen is a mode of graphics operation in which the hardware splits the visual graphics screen horizontally and treats both halves as individual screens each starting at di
  8164. fferent locations in video RAM.
  8165.  
  8166. <:s><:#572,9360>The bottom half (which is usually referred to as the split screen) always starts at address A000:0000 but the top half's starting address is user definable.
  8167.  
  8168. <:s>The most common application of split screens in games is the status display in scrolling games. Split screens make this sort of game simpler to program because when the top half window is scrolled the programmer does not have to worry about redrawing the bo
  8169. ttom half.<:p<* >>
  8170.  
  8171. <:#286,9360><+!><:X11,-32768;TOC 2 "WHAT IS RLE?">WHAT IS RLE?<-!>
  8172.  
  8173. <:#1430,9360>RLE stands for RUN LENGTH ENCODING. It is a quick simple data compression scheme which is commonly used for image data compression or compression of any data. Although not the most efficient system, it is fast, which is why it is used in image storage syste
  8174. ms like PCX. This implementation is more efficient than the one used in PCX files because it uses 1 bit to identify a Run Length byte as opposed to two in PCX files, but more on this later.
  8175.  
  8176. <:s><:#286,9360>
  8177.  
  8178. <:s><:#572,9360>This set of functions can be used to implement your own compressed image file format or for example compress game maps for various levels etc. The uses are limited by your imagination.
  8179.  
  8180. <:s><:#286,9360>I opted for trading off PCX RLE compatibility for the improved compression efficiency.
  8181.  
  8182. <:s><:#286,9360>
  8183.  
  8184. <:s><:#286,9360>Here is how the data is un-compressed to give an idea of its structure.
  8185.  
  8186. <:s><:#286,9360>    STEP 1 read a byte from the RLE compressed source buffer.
  8187.  
  8188. <:s><:#286,9360>
  8189.  
  8190. <:s><:#286,9360>    STEP 2 If has its high bit is set then the lower 7 bits represent the number of times the next
  8191.  
  8192. <:s><:#286,9360>                   byte is to be repeated in the destination buffer. If the count (lower 7 bits) is zero
  8193.  
  8194. <:#286,9360>        then we have finished decoding goto STEP 5 else goto STEP 4
  8195.  
  8196. <:s><:#286,9360>
  8197.  
  8198. <:s><:#286,9360>    STEP 3 Read a data from the source buffer and copy it directly to the destination buffer.
  8199.  
  8200. <:s><:#286,9360>        goto STEP 1
  8201.  
  8202. <:s><:#286,9360>
  8203.  
  8204. <:s><:#286,9360>    STEP 4 Read a data byte from the source buffer and copy it to the destination buffer the
  8205.  
  8206. <:s><:#286,9360>        number of times specified by step 2. goto STEP 1
  8207.  
  8208. <:s><:#286,9360>
  8209.  
  8210. <:s><:#286,9360>    STEP 5 Stop, decoding done.
  8211.  
  8212. <:s><:#286,9360>
  8213.  
  8214. <:#286,9360>If the byte does not have the high bit set then the byte itself is transferred to the destination buffer.
  8215.  
  8216. <:#572,9360>Data bytes that have the high bit already set and are unique in the input stream are represented as a Run Length of 1 (i.e. 81 which includes high bit) followed by the data byte.
  8217.  
  8218. <:s><:#286,9360>
  8219.  
  8220. <:#1144,9360>If your original uncompressed data contains few consecutive bytes and most have high bit set (i.e. have values <;> 127) then your so called compressed data would require up to 2x the space of the uncompressed data, so be aware that the compression ratio is 
  8221. extremely variable depending on the type of data being compressed.
  8222.  
  8223. <:s><:#286,9360>
  8224.  
  8225. <:s><:#858,9360>Apologies for this poor attempt at a description, but you can look up RLE in any good text. Alternatively, any text that describes the PCX file structure in any depth should have a section on RLE compression.
  8226.  
  8227. <:s><:#286,9360>
  8228.  
  8229. <:s><:#286,9360>
  8230.  
  8231. <:s><:p<* >>
  8232.  
  8233. <:#286,9360><+!>WHAT IS DOUBLE BUFFERING ?<:X11,-32768;TOC 2 "WHAT IS DOUBLE BUFFERING ?"><-!>
  8234.  
  8235. <:s><:#1430,9360>Double buffering (also known as page flipping) is the technique most often used to do animation. it requires hardware that is capable of displaying multiple graphics pages (or at least 2). Animation is achieved by drawing an image in the non visible screen 
  8236. and then displaying the non visible screen. Once the page has been flipped the process starts again. The next frame of the animation is drawn on the non visible screen, the page is flipped again etc.
  8237.  
  8238. <:s><:#286,9360>
  8239.  
  8240. <:s><:#286,9360>
  8241.  
  8242. <:#286,9360><+!>WHAT IS TRIPLE BUFFERING?<-!><:X11,-32768;TOC 2 "WHAT IS TRIPLE BUFFERING?">
  8243.  
  8244. <:s><:#286,9360>
  8245.  
  8246. <:s><:#286,9360>
  8247.  
  8248. <:s><:#286,9360>
  8249.  
  8250. <:#286,9360><+!>WHAT IS A BEZIER CURVE?<:X11,-32768;TOC 2 "WHAT IS A BEZIER CURVE?"><-!>
  8251.  
  8252. <:#1144,9360>The Bezier curve was developedd by the French mathematician Pierre Bezier for the design of automobiles.  This curve is defined by four points: two end points and two control points.  The curve begins at one end point, ends at the other end point, and uses 
  8253. the two control points to determine the curvature of the line.
  8254.  
  8255. <:s><:#286,9360>
  8256.  
  8257. <:s><:#286,9360><+!>
  8258.  
  8259. <:s><:#286,9360>
  8260.  
  8261. <:s><:#286,9360>
  8262.  
  8263. <+@><:s><+!><:p<* >>
  8264.  
  8265. <+B><:#286,9360><+!>The Care and Feeding of Compiled Masked Blits<:X11,-32768;TOC 2 "The Care and Feeding of Compiled Masked Blits"><-!>
  8266.  
  8267. <+B><:s><:#286,9360>by Matthew MacKenzie
  8268.  
  8269. <:s><:#286,9360>
  8270.  
  8271. <:s><:#286,9360>The XCBITMAP module is small, containing only three procedures:  
  8272.  
  8273. <:s><:#293,9360>    <+!><+">x_compile_bitmap<-"><-!> - Compiles your bitmap into native code which writes to the VGA
  8274.  
  8275. <:s><:#286,9360>                screen     in an X mode.  
  8276.  
  8277. <:s><:#286,9360>
  8278.  
  8279. <:s><:#293,9360>    <+!><+">x_put_cbitmap<-"><-!> - Converts X and Y coordinates into a location on the screen, sets up the
  8280.  
  8281. <:s><:#286,9360>                necessary VGA registers, and executes the compiled bitmap as a
  8282.  
  8283. <:s><:#286,9360>                subroutine.
  8284.  
  8285. <:s><:#286,9360>
  8286.  
  8287. <:s><:#293,9360>    <+!><+">x_sizeof_cbitmap<-"><-!> - Takes a planar bitmap and returns an integer equal to the size of the
  8288.  
  8289. <:s><:#286,9360>                compiled bitmap which the planar bitmap would produce. It is
  8290.  
  8291. <:s><:#293,9360>                essentially a lobotomized version of <+!><+">x_compile_bitmap<-"><-!>, with all
  8292.  
  8293. <:s><:#286,9360>                the code generation replaced with a size counter.
  8294.  
  8295. <:s><:#286,9360>
  8296.  
  8297. <:#2009,9360><+!><+">x_compile_bitmap<-"><-!> scans through a source bitmap and generates 8086 instructions to plot every non-zero pixel. It is designed to be used before the action begins rather than on-the-fly.  The compiled bitmap contains no branches, and no referen
  8298. ce to the zero (transparent) pixels. Where two pixels are exactly four columns apart they are plotted with a single 16-bit store, and the VGA MAP_MASK register will be set at most four times. As a result your bitmap may run several times faster than a tradi
  8299. tional memory-to-VGA masked blit routine. There is no way to perform clipping on these bitmaps, or to plot a pixel of color zero.
  8300.  
  8301. <:s><:#286,9360>
  8302.  
  8303. <:#1151,9360><+!><+">x_compile_bitmap<-"><-!> works with bitmaps in the standard Xlib planar bitmap format. On a time scale of 60 frames per second, it is actually relatively slow. Since a compiled bitmap is relocatable you may just want to have it saved to disk, and no
  8304. t include the source bitmap in your program at all.    
  8305.  
  8306. <:s><:#286,9360>
  8307.  
  8308. <:s><:#286,9360>The source bitmap format is an array of bytes, a little like this:
  8309.  
  8310. <:s><:#286,9360>char eye<[>] ={4, 7,  /* four byte columns across, seven rows tall */
  8311.  
  8312. <:s><:#286,9360>    0, 0, 0, 0, 9, 1, 1, 1, 9, 0, 0, 0, 0, 0, 0, 0,
  8313.  
  8314. <:s><:#286,9360>       0, 0, 9, 9, 1, 1, 1, 4, 4, 9, 9, 0, 0, 0, 0, 0,
  8315.  
  8316. <:s><:#286,9360>       0, 9, 9, 1, 2, 0, 0, 4, 4, 1, 9, 9, 0, 0, 0, 0,
  8317.  
  8318. <:s><:#286,9360>       9, 9, 9, 1, 0, 0, 0, 0, 1, 1, 9, 9, 9, 0, 0, 0,
  8319.  
  8320. <:s><:#286,9360>       0, 9, 9, 1, 2, 0, 0, 2, 1, 1, 9, 9, 0, 0, 0, 0,
  8321.  
  8322. <:s><:#286,9360>       0, 0, 9, 9, 1, 1, 1, 1, 1, 9, 9, 0, 0, 0, 0, 0,
  8323.  
  8324. <:s><:#286,9360>       0, 0, 0, 0, 9, 1, 1, 1, 9, 0, 0, 0, 0, 0, 0, 0};
  8325.  
  8326. <:s><:#286,9360>
  8327.  
  8328. <:s><:#572,9360>This is actually a linear bitmap, which is the wrong format for compilation, but is easier on human eyes. Use the module XBMTOOLS to convert linear bitmaps into planar bitmaps, and vice-versa.
  8329.  
  8330. <:s><:#286,9360>  
  8331.  
  8332. <:s><:#286,9360>To compile this image for a mode 360 pixels (90 byte columns) across:
  8333.  
  8334. <:#286,9360>    char planar_eye<[>4*7 + 2]; 
  8335.  
  8336. <:#286,9360>    char far * EyeSize;
  8337.  
  8338. <:#286,9360>    (void) x_bm_to_pbm((char far *) eye, (char far *) planar_eye); 
  8339.  
  8340. <:#286,9360>    EyeSize = x_sizeof_cbitmap((far char *) planar_eye); 
  8341.  
  8342. <:#286,9360>    CompiledEye = farmalloc(EyeSize); 
  8343.  
  8344. <:#286,9360>    (void) x_compile_bitmap(90, (far char *) planar_eye, CompiledEye);
  8345.  
  8346. <:s><:#286,9360>
  8347.  
  8348. <:s><:#2016,9360>Notice that both buffers must exist beforehand. Since<+!><+"> x_compile_bitmap<-"><-!> returns the size of the compiled code, in bytes, you can reallocate the bitmap immediately to the right size if using 
  8349. <+!><+">x_sizeof_cbitmap<-"><-!> seems inconvenient (reallocation may even be faster, though using the function is cleaner). The pointers are 32-bit because compiled bitmaps take so much space: they are at one end of the speed-versus-memory spectrum. A good
  8350.  rule of thumb is to allocate (3.5 * buffer-height * buffer-width) + 25 bytes (rounding up), then pare your bitmap down when you find out how much space you've actually used.
  8351.  
  8352. <:s><:#286,9360>
  8353.  
  8354. <:s><:#1430,9360>Since the compiled bitmap has to fit within one segment of memory, it cannot contain more than about 19,000 pixels. This will not be a limitation for most sane programmers. If you are not a sane programmer try splitting your huge, unwieldy image up into sma
  8355. ller parts. You can use the same gigantic bitmap if you divide it into horizontal slices for compilation. For that matter, dividing the source up that way will let you use a source bitmap large than 64K, which is an even sicker idea.
  8356.  
  8357. <:s><:#286,9360>
  8358.  
  8359. <:#1430,9360>Back to business. A bitmap is compiled for only one width of screen. If you are using a logical screen larger than your physical screen, call the bitmap compiler with the logical width. The important thing is the number of bytes per line. Notice that you do
  8360.  not have to be in a graphics mode to use this routine.This allows you to develop and compile bitmaps separately, with whatever utility programs you might cook up.
  8361.  
  8362. <:#286,9360>
  8363.  
  8364. <:s><:#293,9360>The final function is<+!><+"> x_put_cbitmap<-"><-!>.
  8365.  
  8366. <:s><:#286,9360>To plot our eye at (99, 4), on the page which starts at location 0: 
  8367.  
  8368. <:#286,9360>    x_put_cbitmap(99, 4, 0, CompiledEye);
  8369.  
  8370. <:s><:#286,9360>
  8371.  
  8372. <:s><:#579,9360>This function depends on the global variable <+">ScrnLogicalByteWidth<-"> from the module XMAIN, which should be the same number as the column parameter you used to compile your bitmap.    
  8373.  
  8374. <:s><:#286,9360>
  8375.  
  8376. <:#858,9360>The XCBITMAP module supports memory-to-VGA blits only. XLIB also includes non-masking routines which can quickly save and restore the background screen behind your bitmap, using fast string operations.
  8377.  
  8378. <:s><:#286,9360>
  8379.  
  8380. <:#858,9360>This module is part of the XLIB package, and is in the public domain. If you write something which uses it, though, please send me a copy as a courtesy  if for no other reason so I can tilt my chair back and reflect that it may have been worth the trouble a
  8381. fter all.
  8382.  
  8383. <:s><:#286,9360>
  8384.  
  8385. <+B><:#286,9360>The included program DEMO2.C demonstrates the performance difference between planar bitmap
  8386.  
  8387. <+@><:s> masked blits and compiled bitmap blits.<:p<* >>
  8388.  
  8389. <+B><:#286,9360><+!>Blits and Pieces<:X11,-32768;TOC 2 "Blits and Pieces"><-!>
  8390.  
  8391. <+B><:s><:#286,9360>by Matthew MacKenzie
  8392.  
  8393. <:s><:#286,9360>
  8394.  
  8395. <:s><:#572,9360>The XCLIPPBM module contains clipping versions of two of the three routines in the XPBITMAP module:  
  8396.  
  8397. <:s><:#286,9360>
  8398.  
  8399. <:s><:#293,9360><+!><+">x_clip_pbm<-"><-!> - transfers a planar bitmap to the screen, clipping off any part outside a bounding box.  
  8400.  
  8401. <:#293,9360><+!><+">x_clip_masked_pbm<-"><-!> - does the same thing, but transfers only non-zero  pixels.
  8402.  
  8403. <:s><:#286,9360>
  8404.  
  8405. <:s><:#572,9360>The planar bitmap format is described elsewhere.  Here we will look at the clipping itself, since it is the only distinguishing feature of this module.
  8406.  
  8407. <:s><:#286,9360>
  8408.  
  8409. <:#872,9360>The bounding box is made up of four integers,<+"> TopBound, BottomBound, LeftBound,<-"> and 
  8410. <+">RightBound<-">. <+#>Unlike most global variables in XLIB, these are meant to be written to<-#>. In fact, they start out uninitialized.  
  8411. <+#>Be sure to set them before you try plotting any clipped bitmaps<-#>.
  8412.  
  8413. <:#1430,9360>Note that these are not the same variables which are used in the other clipping modules in XLIB.  This is because the two systems are incompatible: the other modules clip horizontally to columns while this one clips to pixels. As you might have guessed, tho
  8414. se functions and these were developed in different hemispheres of the planet. If it's any consolation, this does give you two independent bounding boxes to futz with, should the mood visit you.
  8415.  
  8416. <:s><:#286,9360>
  8417.  
  8418. <:#1158,9360>Bitmaps cannot go outside the perimeter of the bounding box, but they can overlap it. If 
  8419. <+">TopBound<-"> equals <+">BottomBound<-">, for example, a horizontal slice of a bitmap may still be plotted. It is safe to turn the box "inside out" to make sure nothing will be plotted. This is the first thing each routine checks for.
  8420.  
  8421. <:s><:#286,9360>
  8422.  
  8423. <:s><:#286,9360>To plot a bitmap, minus its zero pixels, minus anything outside the bounding box:
  8424.  
  8425. <:s><:#286,9360>
  8426.  
  8427. <:s><:#293,9360><+!><+">x_clip_masked_pbm<-"><-!> (int X, int Y, int ScreenOffs, char far * Bitmap);
  8428.  
  8429. <:s><:#286,9360>
  8430.  
  8431. <:#1723,9360>The arguments are in the same order as those for <+!><+">x_put_masked_pbm<-"><-!> in the module XPBITMAP.  The bounding box is relative to the given ScreenOffs ). This lets you perform page flipping without worrying about what screen you are clipping to it'
  8432. s always the current screen. The bitmap itself, of course, is not affected; clipping is performed on-the-fly. Both functions return an integer which indicates whether any part of the bitmap was inside the bounding box. If the entire bitmap was outside, a 1 
  8433. is returned; otherwise, a 0.
  8434.  
  8435. <:s><:#286,9360>
  8436.  
  8437. <:s>The third function in XPBITMAP, for which this module has no equivalent, copies from video RAM to system RAM. The absence of such a routine may seem at first like a disadvantage but this, like so many things in this life, is an illusion.  You can use the un
  8438. clipped routine, and clip the bitmap when you want to plot it back onto the screen.<:p<* >>
  8439.  
  8440. <+B><:#286,9360><+!>Wheel Have to See About That<:X11,-32768;TOC 2 "Wheel Have to See About That"><-!>
  8441.  
  8442. <+B><:s><:#286,9360>by Matthew MacKenzie
  8443.  
  8444. <:s><:#286,9360>
  8445.  
  8446. <:s><:#286,9360>
  8447.  
  8448. <:s><:#286,9360>The XCIRCLE module contains two functions, neither of which should be a big mystery:
  8449.  
  8450. <:#293,9360>    <+!><+">x_circle<-"><-!>, oddly enough, draws a circle.  
  8451.  
  8452. <:#293,9360>    <+!><+">x_filled_circle<-"><-!> does too, only the circle is filled (in some libraries this is called a disc).
  8453.  
  8454. <:s><:#286,9360>
  8455.  
  8456. <:#3725,9360>The word `circle' here refers to a round thing which is as many pixels tall as across. It only looks like a circle in 320x240 mode, the original mode X, and in 376x282 mode. In both functions, the circle is specified by the coordinates of the upper-left-han
  8457. d corner of the smallest box which holds it, and the diameter. Some circle functions have you specify a center point; this system is kind of odd because a circle with an even diameter does not have a particular pixel for a center. Every circle, on the other
  8458.  hand, has a box with an upper-left corner. <+#>No bounds are checked<-#>. A diameter of zero will draw nothing, and a negative diameter will blow your VGA board into hundreds of thousands of tiny little smoldering fragments. Neither function supports clipp
  8459. ing. The calculation of the circle is based on an algorithm described by Michael P. Lindner in a letter to the editor on page 8 of 
  8460. <+#>Dr. Dobb's Journal <-#>#169 (October 1990).  The algorithm has been rearranged to allow drawing and moving the plots in the eight octants to be performed in one step, so that each pixel does not have to be loaded into the CPU twice. 
  8461. <+!><+"> x_filled_circle<-"><-!> does not take advantage of this optimization because it handles different parts of each plot at different times.
  8462.  
  8463. <+@><:#286,9360>
  8464.  
  8465. >
  8466.  
  8467. [Embedded]
  8468. 00205799
  8469.