home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #26 / NN_1992_26.iso / spool / vmsnet / sources / 432 < prev    next >
Encoding:
Internet Message Format  |  1992-11-04  |  47.9 KB

  1. Path: sparky!uunet!munnari.oz.au!news.hawaii.edu!s.u-tokyo!ccut!wnoc-tyo-news!nec-tyo!nec-gw!sgiblab!sdd.hp.com!zaphod.mps.ohio-state.edu!usc!news.service.uci.edu!unogate!mvb.saic.com!vmsnet-sources
  2. Newsgroups: vmsnet.sources
  3. From: dyson@iowasp.physics.uiowa.edu (Rick Dyson)
  4. Subject: xv-2-21a changes to run on VMS, part 02/08
  5. Date: Wed, 04 Nov 1992 21:12:31 GMT
  6. Message-ID: <8981988@MVB.SAIC.COM>
  7. Lines: 1166
  8. Organization: Department of Physics and Astronomy, University of Iowa
  9. Approved: Mark.Berryman@Mvb.Saic.Com
  10.  
  11. Submitted-by: dyson@iowasp.physics.uiowa.edu (Rick Dyson)
  12. Posting-number: Volume 3, Issue 234
  13. Archive-name: xv-2-21_vms_changes/part02
  14. Supersedes: xv-2-21_vms_changes: Volume 2, Issue 83-86
  15.  
  16. -+-+-+-+-+-+-+-+ START OF PART 2 -+-+-+-+-+-+-+-+
  17. X`09MOVL`09R5,`20G`5ETABLE_SIZE`09;`20Save`20table`20size
  18. X`09MOVL`09R6,`20G`5EPREV_CODE`20`09;`20Save`20previous`20code
  19. X`09MOVL`09R7,`20G`5EBITS_USED`09`09;`20Save`20#`20bits`20used`20out`20of`20inp
  20. Vut`20buffer.
  21. X`09MOVL`09R8,`20G`5ECODE_BITS`09`09;`20save`20current`20code`20bits.
  22. X`09MOVL`09R10,`20G`5ESTACK_PTR`09;`20Save`20stack`20pointer.
  23. X`09MOVL`09#1,`20R0`09`09`09;`20Set`20success`20status
  24. XOPT_DONE:
  25. X`09TSTL`09(AP)`09`09`09;`20Was`20return`20requested?
  26. X`09BEQL`0910$`09`09`09;`20no,`20skip
  27. X`09MOVL`09R11,`20@(AP)`09`09;`20Return`20final`20output`20pointer.
  28. X10$:
  29. X`09RET`09`09`09`09;`20`20`20`20`20and`20return
  30. X;
  31. X;`20Handle`20case`20where`20input`20code`20is`20split`20between`20buffers.
  32. XREFILL:
  33. X`09BSBW`09SPAN_BUFFER`09`09;`20do`20work.
  34. X`09ASHL`09R8,`20#1,`20R1`09`09;`20Regenerate`20max`20value.
  35. X`09DECL`09R1`09`09`09;`20`20`20as`202`5Ecode_bits`20-`201
  36. X`09BRB`09CHECK_CODE`09`09;`20Rejoin`20loop`20to`20process`20R2.
  37. X;
  38. X;`20Main`20loop`20processes`20input`20codes`20until`20we've`20filled`20the`20u
  39. Vser's`20buffer.
  40. X;`20take`2026`20instructions/input`20code`20with`201`20branch`20and`2012`20mem
  41. Vory`20references.
  42. X;
  43. X;`20Optimally,`20each`20input`20code`20executes`2018`20instructions`20plus`208
  44. V`20instructions
  45. X;`20for`20each`20output`20byte`20produced.`20`20The`20number`20of`20branches
  46. V`20taken`20is`20one`20less
  47. X;`20than`20twice`20the`20number`20of`20output`20bytes`20produced.`20`20Each
  48. V`20input`20code`20results
  49. X;`20in`201`20PC`20relative`20deferred,`201`20register`20deferred,`203`20indexe
  50. Vd`20register`20deferred
  51. X;`20and`202`20immediate`20data`20memory`20references.`20`20Each`20output`20byt
  52. Ve`20results`20in
  53. X;`203`20autoinc/dec,`201`20byte`20displacement,`20and`202`20indexed`20register
  54. V`20deferred`20memory
  55. X;`20references.
  56. X;
  57. X`09.ALIGN`09LONG
  58. XOUTPUT_BYTE:
  59. X`09MOVB`09(R10)+,`20(R11)+`09`09;`20Pop`20byte`20from`20stack,`20append`20to
  60. V`20output
  61. XCHECK_IF_DONE:
  62. X`09CMPL`09R11,`2012(AP)`09`09;`20Any`20room`20left`20in`20output`20buffer?
  63. X`09BGEQ`09DONE`09`09`09;`20No,`20we`20are`20done
  64. X`09CMPL`09R10,`20AP`09`09`09;`20Stack`20empty?
  65. X`09BLSS`09OUTPUT_BYTE`09`09;`20No,`20copy`20to`20output`20buffer
  66. X;
  67. X;`20`20process`20next`20input`20code,`20producing`20result`20on`20stack.
  68. X;
  69. X`09ADDL3`09R7,`20R8,`20R0`09`09;`20bits-used`20+`20code_bits`20->`20R0
  70. X`09CMPL`09R0,`20R9`09`09`09;`20Is`20R0`20>`20than`20number`20of`20bits`20in
  71. V`20buffer
  72. X`09BGTR`09REFILL`20`09`09`09;`20Yes,`20do`20special`20stuff.
  73. X`09EXTZV`09R7,`20R8,`20@<INBUF+4>,`20R2`09;`20No,`20directly`20extract`20code.
  74. V
  75. X`09MOVL`09R0,`20R7`09`09`09;`20update`20pointer`20by`20code_bits`20amount
  76. X
  77. XCHECK_CODE:
  78. X`09CMPW`09(R3)`5BR2`5D,`20#-2`09`09;`20is`20Code`20a`20special`20code`20(prefi
  79. Vx`20-2)?
  80. X`09BEQL`09SPECIAL_CODE`09`09;`20`20`20Yes,`20handle`20it.
  81. X`09CMPL`09R2,`20R5`09`09`09;`20Is`20code`20in`20table?
  82. X`09BGTR`09OUT_OF_RANGE`09`09;`20`20`20No,`20handle`20it.
  83. X
  84. X`09MOVL`09R2,`20R0`09`09`09;`20`20`20Yes,`20init`20loop`20variable`20to`20CODE
  85. V
  86. X10$:
  87. X`09MOVB`09(R4)`5BR0`5D,`20-(R10)`09;`20Push`20extension`20char`20onto`20stack
  88. X`09CVTWL`09(R3)`5BR0`5D,`20R0`09`09;`20Replace`20code`20with`20prefix`20code
  89. X`09BGEQ`0910$`09`09`09;`20If`20another`20code,`20continue
  90. X`09`09`09`09`09;`20else`20add`20to`20table.
  91. XEXPAND_TABLE:
  92. X`09INCL`09R5`09`09`09;`20Bump`20table`20size.
  93. X`09CMPL`09R5,`20#4096`09`09;`20at`20max?
  94. X`09BGTR`0940$`20`09`09`09;`20Yes,`20skip.
  95. X10$:
  96. X`09MOVW`09R6,`20(R3)`5BR5`5D`09`09;`20Prefix`20for`20previous`20code`20in`20ne
  97. Vw`20code
  98. X`09MOVB`09(R10),`20(R4)`5BR5`5D`09`09;`20Extension`20is`20last`20thing`20put
  99. V`20on`20stack
  100. X`09MOVL`09R2,`20R6`09`09`09;`20new`20previous`20code.
  101. X20$:
  102. X`09CMPL`09R5,`20R1`09`09`09;`20Is`20table`20size`20<`20max`20for`20code`20size
  103. V?
  104. X`09BLSS`09OUTPUT_BYTE`09`09;`20yes,`20leave`20it`20alone
  105. X`09CMPL`09R8,`20#12`09`09`09;`20no,`20is`20code_bits`20at`20max?
  106. X`09BGEQ`09OUTPUT_BYTE`09`09;`20yes,`20leave`20alone
  107. X`09INCL`09R8`09`09`09;`20no,`20go`20to`20next`20higher`20size.
  108. X`09ASHL`09R8,`20#1,`20R1`09`09;`20Compute`20new`20max`20value.
  109. X`09DECL`09R1
  110. X`09BRB`0920$`09`09`09;`20test`20the`20new`20size.
  111. X40$:
  112. X`09MOVL`09#4096,`20R5`09`09;`20Set`20to`20dummy`20entry.
  113. X`09BRB`0910$
  114. X;--------------------------
  115. XSPECIAL_CODE:
  116. X`09CMPL`09R2,`20G`5EEOI_CODE`09`09;`20Is`20code`20end`20of`20information`20cod
  117. Ve.
  118. X`09BEQL`09END_OF_INFORMATION
  119. X
  120. X`09CLRL`09R8`09`09`09;`20Reset`20code`20size
  121. X10$:
  122. X`09INCL`09R8`09`09`09;`20Increase`20size`20of`20code_bits.
  123. X`09ASHL`09R8,`20#1,`20R1`09`09;`20max`20value`20for`20code`20bits.
  124. X`09DECL`09R1
  125. X`09CMPL`09G`5EEOI_CODE,`20R1`09`09;`20Is`20table`20size`20>`20max`20value`20fo
  126. Vrcode_bits
  127. X`09BGEQ`0910$`09`09`09;`20Yes,`20try`20higher`20code`20size.
  128. X
  129. X`09MNEGL`09#1,`20R5`09`09`09;`20Flag`20table`20size`20for`20first`20code.
  130. X`09BRW`09CHECK_IF_DONE
  131. X;-----------------------------------
  132. X
  133. XOUT_OF_RANGE:
  134. X`09ADDL3`09R5,`20#1,`20R0`09`09;`20Compute`20table_size`20+`201?
  135. X`09BLEQ`09FIRST_CODE`09`09;`20Table`20size`20was`20negative.
  136. X`09CMPL`09R0,`20R2`09`09`09;`20Is`20code`20=`20table_size+1?
  137. X`09BNEQ`09BAD_CODE`20`09`09;`20No`20abort.
  138. X;
  139. X;`20Special`20case,`20expand`20previous`20code`20onto`20stack`20and`20place
  140. V`20final`20char`20in`20front.
  141. X`09DECL`09R10`09`09`09;`20Make`20gap`20on`20stack.
  142. X`09MOVL`09R6,`20R0`09`09`09;`20Set`20loop`20variable`20to`20prev_code
  143. X20$:
  144. X`09MOVB`09(R4)`5BR0`5D,`20-(R10)`09;`20Push`20onto`20stack
  145. X`09CVTWL`09(R3)`5BR0`5D,`20R0`09`09;`20Get`20prefix`20string
  146. X`09BGEQ`0920$
  147. X`09MOVB`09(R10),`20G`5E<STACK_TOP-1>`09;`20Copy`20last`20char`20to`20front.
  148. X`09BRW`09EXPAND_TABLE`09`09;`20Add`20new`20code`20to`20table.
  149. X;-----------------------------------
  150. XBAD_CODE:
  151. X`09MOVL`09#20,`20R0`09`09`09;`20Bad`20parameter`20status.
  152. X`09BRW`09OPT_DONE
  153. XEND_OF_INFORMATION:
  154. X`09MOVL`09#2160,`20R0
  155. X`09BRW`09OPT_DONE
  156. X;-----------------------------------
  157. XFIRST_CODE:
  158. X`09MOVL`09R2,`20R6`09`09`09;`20Update`20previous`20code.
  159. X`09MOVB`09(R4)`5BR2`5D,`20-(R10)`09;`20Push`20onto`20stack
  160. X`09MOVL`09G`5EEOI_CODE,`20R5
  161. X`09BRW`09OUTPUT_BYTE
  162. X;-----------------------------------
  163. X;
  164. X;`20Define`20subroutine`20to`20handle`20getting`20input`20code`20when`20buffer
  165. V`20spans
  166. X;`20boundaries.
  167. X;
  168. X;`20Input:
  169. X;`09R7`09Number`20of`20bits`20used`20in`20INBUF
  170. X;`09R8`09Code`20size`20(number`20of`20bits`20to`20extract).
  171. X;`09R9`09Number`20of`20bits`20in`20INBUF,`20we`20assume`20(R7+R8)`20>`20R9
  172. X;
  173. X;`20Output:
  174. X;`09R0,R1`09Destroyed
  175. X;`09R2`09Code.
  176. X;`09R7`09Number`20of`20bits`20used`20in`20INBUF
  177. X;`09R9`09Totoal`20number`20of`20bits`20in`20INBUF
  178. X;
  179. XSPAN_BUFFER:
  180. X`09SUBL3`09R7,`20R9,`20R0`09`09;`20Calculate`20bits`20left`20in`20buffer
  181. X`09PUSHL`09R0`09`09`09;`20save`20for`20later`20use
  182. X`09EXTZV`09R7,`20R0,`20@<INBUF+4>,`20R2`09;`20Get`20remaining`20bits.
  183. X`09ADDL`09R8,`20R7`09`09`09;`20Make`20phantom`20bits-used.
  184. X50$:
  185. X`09MOVAL`09G`5EINBUF,`20-(SP)`09`09;`20Output`20descriptor
  186. X`09MOVL`098(AP),`20-(SP)`09`09;`20user`20arg`20for`20input`20routine
  187. X`09CALLS`09#2,`20@4(AP)`09`09;`20Get`20input
  188. X`09BLBC`20`09R0,`20100$`09`09;`20abort`20if`20error.
  189. X`09MOVL`09(SP)+,`20R0`09`09;`20Recover`20#`20bits`20taken`20from`20last`20buff
  190. Ver
  191. X`09SUBL`09R9,`20R7`09`09`09;`20Number`20of`20overflow`20bits`20becomes`20#`20u
  192. Vsed
  193. X`09MOVZWL`09G`5EINBUF,`20R9`09`09;`20Current`20#`20of`20bytes`20in`20input`20b
  194. Vuffer.
  195. X`09ASHL`09#3,`20R9,`20R9`09`09;`20Convert`20to`20number`20of`20bits.
  196. X`09CMPL`09R9,`20R7`09`09`09;`20Is`20number`20of`20bits`20to`20take`20more
  197. X`09BLSS`09110$`09`09`09;`20Yes,`20go`20to`20special`20case.
  198. X`09EXTZV`09#0,`20R7,`20@<INBUF+4>,`20R1`09;`20No,`20extract`20the`20bits.
  199. X`09ASHL`09R0,`20R1,`20R0`09`09;`20Shift`20over`20by`20overflow`20amount
  200. X`09BISL`09R0,`20R2`09`09`09;`20OR`20into`20output`20code.
  201. X`09RSB
  202. X100$:
  203. X`09RET
  204. X;
  205. X;`20Handle`20the`20rare`20case`20where`20more`20bits`20left`20to`20extract`20t
  206. Vhan`20bits`20in
  207. X;`20buffer`20read.
  208. X110$:
  209. X`09EXTZV`20#0,`20R9,`20-`09`09`09;`20Extract`20entire`20buffer.
  210. X`09`09@<INBUF+4>,`20R1
  211. X`09ASHL`09R0,`20R1,`20R0`09`09;`20Shift`20over
  212. X`09BISL`09R0,`20R2`09`09`09;`20Add`20to`20result
  213. X`09ADDL3`09R9,`20R0,`20-(SP)`09`09;`20update`20number`20of`20bits`20to`20shift
  214. V
  215. X`09BRB`20`0950$`09`09`09;`20read`20another`20buffer.
  216. X;
  217. X`09.END
  218. $ call unpack GIFDECOMP.MAR;222 1282821934 "FORMAT STREAM_LF"
  219. $!
  220. $ create 'f'
  221. X/*
  222. X`20*`20Define`20substitute`20routines`20for`20the`20fopen/fclose/fread/fgetc
  223. V`20calls`20done`20by
  224. X`20*`20the`20gif`20decoder.`20`20Map`20the`20gif`20file`20to`20memory`20and
  225. V`20access`20via`20page`20faults.
  226. X`20*/
  227. X#include`20stdio
  228. X#include`20atrdef
  229. X#include`20fab
  230. X#include`20fibdef
  231. X#include`20nam
  232. X#include`20iodef
  233. X#include`20secdef
  234. Xtypedef`20struct`20`7B
  235. X`20`20`20`20unsigned`20char`20*pos;`09`09/*`20points`20to`20next`20char`20to
  236. V`20read`20*/
  237. X`20`20`20`20unsigned`20char`20*start;
  238. X`20`20`20`20unsigned`20char`20*end;
  239. X`20`20`20`20int`20chan,`20size;
  240. X`7D`20map_block;
  241. X
  242. Xstatic`20int`20map_block_in_use`20=`200;
  243. Xstatic`20int`20max_mapped`20=`200;`09/*`20largest`20address`20region`20used
  244. V`20*/
  245. Xstatic`20unsigned`20char`20*max_region`20=`20NULL;
  246. Xstatic`20map_block`20giffile;
  247. Xmap_block`20*gif_fopen_fallback();
  248. X/*
  249. X`20*`20Open`20file`20for`20access.`20`20A`20returned`20size`20of`20-1`20indica
  250. Vtes`20error.
  251. X`20*/
  252. Xmap_block`20*gif_fopen`20(`20Filestring`20)
  253. X`20`20`20`20char`20*Filestring;
  254. X`7B
  255. X`20`20`20`20unsigned`20char`20*address,`20*inadr`5B2`5D,`20*retadr`5B2`5D;
  256. X`20`20`20`20int`20size,`20status,`20channel,`20func_code;
  257. X`20`20`20`20int`20sys$assign(),`20sys$qiow(),`20sys$crmpsc(),`20sys$expreg();
  258. X`20`20`20`20short`20int`20iosb`5B4`5D;
  259. X`20`20`20`20struct`20`7B`20long`20length;`20char`20*adr;`20`7D`20desc,`20fib_d
  260. Vesc;
  261. X`20`20`20`20struct`20`7B
  262. X`09unsigned`20char`20rtype,`20rattrib;
  263. X`09unsigned`20short`20int`20`20rsize,`20hiblk`5B2`5D,`20efblk`5B2`5D,`20ffbyte
  264. V;
  265. X`09unsigned`20char`20bktsize,`20vfcsize;
  266. X`09unsigned`20short`20int`20maxrec,`20defext,`20gbc,`20fill`5B4`5D,`20versions
  267. V;
  268. X`20`20`20`20`7D`20fat;`09`09`09/*`20File`20attributes`20block`20(RMS)`20*/
  269. X`20`20`20struct`20FAB`20fab;`09`09/*`20File`20access`20block`20(RMS)`20*/
  270. X`20`20`20struct`20NAM`20nam;`09`09/*`20Name`20block`20(RMS)`20*/
  271. X`20`20`20struct`20fibdef`20fib;`09`09/*`20File`20information`20block`20(XQP)
  272. V`20*/
  273. X`20`20`20struct`20atrdef`20atr`5B2`5D;`09/*`20Read`20attributes`20descriptor
  274. V`20list`20*/
  275. X`20`20`20char`20esa`5B256`5D,`20rsa`5B256`5D;`09/*`20aux`20storage`20for`20nam
  276. V`20block`20*/
  277. X
  278. X`20`20`20/*
  279. X`20`20`20`20*`20Close`20currently`20open`20file`20and`20init`20block`20to`20er
  280. Vror`20status`20(size`20=`20-1).
  281. X`20`20`20`20*/
  282. X`20`20`20if`20(`20map_block_in_use`20)`20(void)`20gif_fclose();
  283. X`20`20`20giffile.start`20=`20giffile.end`20=`20giffile.pos`20=`20"";
  284. X`20`20`20giffile.size`20=`20-1;
  285. X
  286. X`20`20`20`20`20`20/*`20Use`20RMS`20services`20to`20lookup`20fspec,`20initializ
  287. Ve`20FAB`20and`20NAM`20blocks`20*/
  288. X
  289. X`20`20`20`20`20`20fab`20=`20cc$rms_fab;
  290. X`20`20`20`20`20`20fab.fab$l_fna`20=`20Filestring;`20fab.fab$b_fns`20=`20strlen
  291. V`20(`20Filestring`20);
  292. X`20`20`20`20`20`20fab.fab$l_dna`20=`20".GIF";`20fab.fab$b_dns`20=`20strlen`20(
  293. V`20fab.fab$l_dna`20);
  294. X`20`20`20`20`20`20fab.fab$l_fop`20=`20FAB$M_NAM;`09/*`20file`20options`20*/
  295. X`20`20`20`20`20`20fab.fab$l_nam`20=`20`26nam;
  296. X`20`20`20`20`20`20nam`20=`20cc$rms_nam;
  297. X`20`20`20`20`20`20nam.nam$b_ess`20=`20255;
  298. X`20`20`20`20`20`20nam.nam$l_esa`20=`20`26esa;
  299. X`20`20`20`20`20`20nam.nam$b_rss`20=`20255;
  300. X`20`20`20`20`20`20nam.nam$l_rsa`20=`20`26rsa;
  301. X
  302. X`20`20`20`20`20`20/*`20use`20$parse`20and`20$search`20for`20find`20file,`20dev
  303. Vice`20and`20FID`20will`20end`20up`20in
  304. X`20`20`20`20`20`20`20`20`20nam`20`20block`20*/
  305. X
  306. X`20`20`20`20`20`20status`20=`20sys$parse`20(`20`26fab`20);`20`20if`20((status
  307. V`263)`20!=`201)`20return`20`26giffile;
  308. X`20`20`20`20`20`20status`20=`20sys$search`20(`20`26fab`20);`20if`20((status
  309. V`263)`20!=`201)`20return`20`26giffile;
  310. X
  311. X`20`20`20`20`20`20/*`20Define`20descriptor`20to`20assign`20and`20load`20FID
  312. V`20in`20FIB`20*/
  313. X
  314. X`20`20`20`20`20`20desc.length`20=`20nam.nam$t_dvi`5B0`5D;`09`09/*`20length`20*
  315. V/
  316. X`20`20`20`20`20`20desc.adr`20=`20`26nam.nam$t_dvi`5B1`5D;
  317. X`20`20`20`20`20`20func_code`20=`20IO$_ACCESS`20+`20IO$M_ACCESS;`20/*`20actuall
  318. Vy`20open`20the`20file`20*/
  319. X`20`20`20`20`20`20fib.fib$r_fid_overlay.fib$w_fid`5B0`5D`20=`20nam.nam$w_fid
  320. V`5B0`5D;
  321. X`20`20`20`20`20`20fib.fib$r_fid_overlay.fib$w_fid`5B1`5D`20=`20nam.nam$w_fid
  322. V`5B1`5D;
  323. X`20`20`20`20`20`20fib.fib$r_fid_overlay.fib$w_fid`5B2`5D`20=`20nam.nam$w_fid
  324. V`5B2`5D;
  325. X
  326. X`20`20`20/*`20If`20no`20device`20name,`20try`20it`20with`20real`20open`20(DECn
  327. Vet`20operation)`20*/
  328. X
  329. X`20`20`20if`20(`20desc.length`20==`200`20)`20return`20gif_fopen_fallback`20(
  330. V`20Filestring`20);
  331. X
  332. X`20`20`20/*`20build`20atrribute`20descriptor`20list`20for`20returning`20record
  333. V`20attributes`20*/
  334. X
  335. X`20`20`20atr`5B0`5D.atr$w_size`20=`20sizeof(fat);
  336. X`20`20`20atr`5B0`5D.atr$w_type`20=`20ATR$C_RECATTR;
  337. X`20`20`20atr`5B0`5D.atr$l_addr`20=`20`26fat;
  338. X`20`20`20atr`5B1`5D.atr$w_size`20=`200;`20atr`5B1`5D.atr$w_type`20=`200;
  339. X
  340. X`20`20`20/*`20assign`20channel`20to`20disk`20specified`20in`20NAM`20block.`20*
  341. V/
  342. X
  343. X`20`20`20channel`20=`200;
  344. X`20`20`20status`20=`20sys$assign`20(`20`26desc,`20`26channel,`200,`200`20);
  345. X`20`20`20if`20((status`263)`20!=`201)`20return`20`26giffile;
  346. X
  347. X`20`20`20`20/*`20build`20FIB`20and`20access`20(open`20file)`20*/
  348. X`20`20`20fib_desc.length`20=`2010;`20fib_desc.adr`20=`20(char`20*)`20`26fib;
  349. X`20`20`20`20fib.fib$r_acctl_overlay.fib$l_acctl`20=`200;
  350. X`20`20`20`20status`20=`20sys$qiow
  351. X`09(`200,`20channel,`20func_code,`20`26iosb,`200,`200,`20`26fib_desc,`200,`200
  352. V,`200,`20`26atr,`200`20);
  353. X`20`20`20`20if`20(`20(status`261)`20==`201`20)`20status`20=`20iosb`5B0`5D;
  354. X`20`20`20`20if`20(`20(status`261)`20!=`201`20)`20return`20`26giffile;
  355. X
  356. X`20`20`20`20/*`20Determine`20size`20of`20file`20and`20create`20section`20*/
  357. X`20`20`20`20size`20=`20fat.efblk`5B0`5D;
  358. X`20`20`20`20size`20=`20(size<<16)`20`7C`20fat.efblk`5B1`5D;`09/*`20invert`20wo
  359. Vrd`20order`20*/
  360. X`20`20`20`20size`20=`20(size-1)*512`20+`20fat.ffbyte;
  361. X
  362. X`20`20`20`20/*
  363. X`20`20`20`20`20*`20Make`20a`20large`20region`20of`20P0`20space`20to`20hold`20c
  364. Vontents`20of`20file`20plus
  365. X`20`20`20`20`20*`20500`20blocks`20spare.
  366. X`20`20`20`20`20*/
  367. X`20`20`20`20if`20(`20max_mapped`20<=`20size`20)`20`7B
  368. X`09int`20pages;
  369. X`09pages`20=`20((size+511)/512)`20+`20500;
  370. X`20`20`20`20`20`20`20`20status`20=`20sys$expreg`20(`20pages,`20`26retadr,`200,
  371. V`200`20);
  372. X`20`20`20`20`20`20`20`20if`20(`20(status`261)`20!=`201`20)`20return`20`26giffi
  373. Vle;
  374. X`20`20`20`20`20`20`20`20max_region`20=`20retadr`5B0`5D;
  375. X`20`20`20`20`20`20`20`20max_mapped`20=`20(pages*512)`20-`201;
  376. X`20`20`20`20`7D
  377. X
  378. X`20`20`20`20/*`20Map`20file`20into`20address`20space.`20*/
  379. X`20`20`20`20inadr`5B0`5D`20=`20max_region;
  380. X`20`20`20`20inadr`5B1`5D`20=`20`26max_region`5Bsize-1`5D;
  381. X`20`20`20`20status`20=`20sys$crmpsc`20(`20`26inadr,`20`26retadr,`200,`200,`200
  382. V,`200,`200,
  383. X`09`09channel,`20(size+511)/512,`200,`200,`2064`20);
  384. X`20`20`20`20if`20(`20(status`261)`20!=`201`20)`20return`20`26giffile;
  385. X`20`20`20`20address`20=`20retadr`5B0`5D;
  386. X`20`20`20`20map_block_in_use`20=`201;
  387. X
  388. X`20`20`20`20/*
  389. X`20`20`20`20`20*`20Allocate`20structure`20to`20store`20file`20state`20and`20in
  390. Vitialize`20it.
  391. X`20`20`20`20`20*/
  392. X`20`20`20`20giffile.start`20=`20address;
  393. X`20`20`20`20giffile.end`20=`20`26address`5Bsize`5D;
  394. X`20`20`20`20giffile.pos`20=`20address;
  395. X`20`20`20`20giffile.chan`20=`20channel;
  396. X`20`20`20`20giffile.size`20=`20size;
  397. X`20`20`20`20return`20`26giffile;
  398. X`7D
  399. X
  400. Xint`20gif_fclose`20(`20)
  401. X`7B
  402. X`20`20`20`20void`20sys$dassgn();
  403. X`20`20`20`20if`20(`20map_block_in_use`20`26`26`20(giffile.size`20>`200)`20)
  404. V`20sys$purgws`20(`20`26giffile.start`20);
  405. X`20`20`20`20map_block_in_use`20=`200;
  406. X`20`20`20`20sys$dassgn`20(`20giffile.chan`20);
  407. X`20`20`20`20return`200;
  408. X`7D
  409. X
  410. Xint`20gif_fgetc`20(`20)
  411. X`7B
  412. X`20`20`20`20int`20result;
  413. X`20`20`20`20if`20(`20giffile.pos`20>=`20giffile.end`20)`20return`20-1;
  414. X`20`20`20`20result`20=`20*giffile.pos++;
  415. X`20`20`20`20return`20result;
  416. X`7D
  417. X
  418. Xint`20gif_fread`20(`20buffer,`20unit,`20count`20)
  419. X`20`20`20`20unsigned`20char`20*buffer;
  420. X`20`20`20`20unsigned`20int`20unit,`20count;`09/*`20max`20count`20is`2065535
  421. V`20*/
  422. X`7B
  423. X`20`20`20`20unsigned`20char`20*next_pos;
  424. X`20`20`20`20/*`20determin`20number`20of`20charaters`20to`20move`20*/
  425. X`20`20`20`20count`20*=`20unit;
  426. X`20`20`20`20if`20(`20giffile.pos`20>=`20giffile.end`20)`20return`200;
  427. X`20`20`20`20next_pos`20=`20`26giffile.pos`5Bcount`5D;
  428. X`20`20`20`20while`20(`20next_pos`20>=`20giffile.end`20)`20next_pos`20=`20`26gi
  429. Vffile.pos`5B--count`5D;
  430. X
  431. X`20`20`20`20LIB$MOVC3`20(`20`26count,`20giffile.pos,`20buffer`20);
  432. X`20`20`20`20giffile.pos`20=`20next_pos;
  433. X`20`20`20`20return`20count;
  434. X`7D
  435. X
  436. Xunsigned`20char`20*gif_freadm`20(`20unit,`20count`20)
  437. X`20`20`20`20unsigned`20int`20unit,`20count;`09/*`20max`20count`20is`2065535
  438. V`20*/
  439. X`7B
  440. X`20`20`20`20unsigned`20char`20*cur_pos,`20*next_pos;
  441. X`20`20`20`20/*`20determin`20number`20of`20charaters`20to`20move`20*/
  442. X`20`20`20`20count`20*=`20unit;
  443. X`20`20`20`20if`20(`20giffile.pos`20>=`20giffile.end`20)`20return`20NULL;
  444. X`20`20`20`20cur_pos`20=`20giffile.pos;
  445. X`20`20`20`20next_pos`20=`20`26cur_pos`5Bcount`5D;
  446. X`20`20`20`20while`20(`20next_pos`20>=`20giffile.end`20)`20--next_pos;
  447. X`20`20`20`20giffile.pos`20=`20next_pos;
  448. X`20`20`20`20return`20cur_pos;
  449. X`7D
  450. X
  451. Xint`20gif_fget_counted`20(`20map,`20desc`20)
  452. X`20`20`20`20map_block`20*map;
  453. X`20`20`20`20struct`20`7B`20int`20len;`20char`20*addr;`20`7D`20*desc;
  454. X`7B
  455. X`20`20`20`20int`20length;
  456. X`20`20`20`20if`20(`20map->pos`20<`20map->end`20)`20`7B
  457. X`09/*`20Get`20length`20of`20record`20and`20truncate`20to`20EOF`20if`20needed
  458. V`20*/
  459. X`09for`20(`20length`20=`20*map->pos++;`20`26map->pos`5Blength`5D`20>`20map->en
  460. Vd;`20--length);
  461. X
  462. X`09/*`20fill`20out`20descriptor`20and`20update`20position`20pointer`20*/
  463. X`09desc->len`20=`20length;
  464. X`09desc->addr`20=`20map->pos;
  465. X`09map->pos`20=`20`26map->pos`5Blength`5D;
  466. X`09return`201;
  467. X`20`20`20`20`7D
  468. X`20`20`20`20return`202160;
  469. X`7D
  470. X/*
  471. X`20*`20Fallback`20to`20reading`20file`20into`20memory`20with`20C`20RTL`20funct
  472. Vions.
  473. X`20*/
  474. Xmap_block`20*gif_fopen_fallback`20(`20Filestring`20)
  475. X`20`20`20`20char`20*Filestring;
  476. X`7B
  477. X`20`20`20`20unsigned`20char`20*address;
  478. X`20`20`20`20int`20size,`20status,`20channel,`20func_code;
  479. X`20`20`20`20int`20sys$assign();
  480. X`20`20`20`20struct`20`7B`20long`20length;`20char`20*adr;`20`7D`20desc;
  481. X`20`20`20`20FILE`20*fp;
  482. X
  483. X`20`20`20`20/*`20printf("Loading`20network`20file...");`20*/
  484. X
  485. X`20`20`20`20fp`20=`20fopen`20(`20Filestring,`20"rb"`20);
  486. X`20`20`20`20if`20(`20fp`20==`20(FILE`20*)`20NULL`20)
  487. X`09`7B`20/*`20printf("`20could`20not`20open.\n");`20*/`20return`20`26giffile;
  488. V`20`7D
  489. X
  490. X`20`20`20`20/*`20find`20the`20size`20of`20the`20file`20by`20positioning`20to
  491. V`20end.`20*/
  492. X`20`20`20`20fseek(fp,`200L,`202);
  493. X`20`20`20`20size`20=`20ftell(fp);
  494. X`20`20`20`20/*`20printf("`20size`20is`20%d`20bytes.\n",`20size`20);`20*/
  495. X`20`20`20`20fseek(fp,`200L,`200);
  496. X
  497. X`20`20`20`20/*`20determine`20if`20we`20must`20allocat`20new`20block`20or`20can
  498. V`20reuse`20existing`20one`20*/
  499. X`20`20`20`20if`20(`20max_mapped`20<=`20size`20)`20`7B
  500. X`20`20`20`20`20`20`20`20/*
  501. X`20`20`20`20`20`20`20`20`20*`20Make`20a`20large`20region`20of`20P0`20space`20t
  502. Vo`20hold`20contents`20of`20file`20plus
  503. X`20`20`20`20`20`20`20`20`20*`20500`20blocks`20spare.
  504. X`20`20`20`20`20`20`20`20`20*/
  505. X`09int`20pages,`20retadr`5B2`5D,`20sys$expreg();
  506. X`09pages`20=`20((size+511)/512)`20+`20500;
  507. X`20`20`20`20`20`20`20`20status`20=`20sys$expreg`20(`20pages,`20`26retadr,`200,
  508. V`200`20);
  509. X`20`20`20`20`20`20`20`20if`20(`20(status`261)`20!=`201`20)`20return`20`26giffi
  510. Vle;
  511. X`20`20`20`20`20`20`20`20max_region`20=`20retadr`5B0`5D;
  512. X`20`20`20`20`20`20`20`20max_mapped`20=`20(pages*512)`20-`201;
  513. X`20`20`20`20`7D
  514. X`20`20`20`20address`20=`20max_region;
  515. X
  516. X`20`20`20`20/*`20read`20data`20into`20memory`20and`20close`20file`20*/
  517. X`20`20`20`20status`20=`20fread(address,`20size,`201,`20fp`20);
  518. X`20`20`20`20fclose`20(`20fp`20);
  519. X`20`20`20`20if`20(`20status`20!=`201`20)`20return`20`26giffile;`09`09/*`20erro
  520. Vr`20in`20read`20*/
  521. X
  522. X`20`20`20`20map_block_in_use`20=`201;
  523. X
  524. X`20`20`20`20desc.length`20=`203;`20desc.adr`20=`20"NL:";`20channel`20=`200;
  525. X`20`20`20`20status`20=`20sys$assign`20(`20`26desc,`20`26channel,`200,`200`20);
  526. V
  527. X
  528. X`20`20`20`20/*
  529. X`20`20`20`20`20*`20Allocate`20structure`20to`20store`20file`20state`20and`20in
  530. Vitialize`20it.
  531. X`20`20`20`20`20*/
  532. X`20`20`20`20giffile.start`20=`20address;
  533. X`20`20`20`20giffile.end`20=`20`26address`5Bsize`5D;
  534. X`20`20`20`20giffile.pos`20=`20address;
  535. X`20`20`20`20giffile.chan`20=`20channel;
  536. X`20`20`20`20giffile.size`20=`20size;
  537. X`20`20`20`20return`20`26giffile;
  538. X`7D
  539. $ call unpack GIFMAPF.C;222 1026860279 ""
  540. $!
  541. $ create 'f'
  542. X/*
  543. X`20*`20@(#)includes.h`201.8`2089/04/01`09`09Jamie`20Hanrahan`20(simpact!jeh)
  544. X`20*
  545. X`20*`20Version`20simpact-1.8,`20for`20DECUS`20uucp`20(VMS`20portion).`20`20
  546. X`20*`20All`20changes`20and`20additions`20from`20previous`20versions`20(see`20b
  547. Velow)`20are`20in
  548. X`20*`20the`20public`20domain.`20
  549. X`20*
  550. X`20*`20Derived`20from:
  551. X`20*`20
  552. X`20*`20includes.h`201.7`2087/09/29`09Copyright`201987`20Free`20Software`20Foun
  553. Vdation,`20Inc.
  554. X`20*
  555. X`20*`20Copying`20and`20use`20of`20this`20program`20are`20controlled`20by`20the
  556. V`20terms`20of`20the
  557. X`20*`20GNU`20Emacs`20General`20Public`20License.
  558. X`20*
  559. X`20*`20Include`20files`20for`20various`20supported`20systems:
  560. X`20*`20Note`20that`20NAMESIZE`20should`20be`20the`20max`20length`20of`20a`20fi
  561. Vle`20name,`20including
  562. X`20*`20all`20its`20directories,`20drive`20specifiers,`20extensions,`20and`20th
  563. Ve`20like.
  564. X`20*`20E.g.`20on`20a`20Unix`20with`2014-char`20file`20names,`20NAMESIZE`20is
  565. V`20several`20hundred
  566. X`20*`20characters,`20since`20the`2014-char`20names`20can`20be`20nested.
  567. X`20*/
  568. X
  569. X#include`20atrdef
  570. X#include`20ctype
  571. X#include`20descrip
  572. X#include`20devdef
  573. X#include`20dvidef
  574. X#include`20errno
  575. X#include`20fibdef
  576. X#include`20file
  577. X#include`20iodef
  578. X#include`20math
  579. X#include`20setjmp
  580. X#include`20signal
  581. X#include`20ssdef
  582. X#include`20stat
  583. X#include`20stdlib`20
  584. X#include`20stdio
  585. X#include`20string
  586. X#include`20time
  587. X
  588. X#define`20NAMESIZE`20255
  589. X#define`20UUXQT_DOORBELL`20"UUCP_UUXQT_DOORBELL"
  590. X#define`20UUCICO_REQMB`20"UUCP_REQUESTS"
  591. X#define`09UUX_QUEUE`20"UUCP_BATCH_QUEUE"
  592. X#define`09UUX_FILE`20"UUCP_BIN:UUXQT_BATCH.COM"
  593. X#define`20DEBUG_LOG_FILE`20"vmsnet_log:uucico_dbg"
  594. X#define`09UUX_LOG`20"UUCP_LOG:UUXQT.LOG"
  595. X#define`09SYSLOCK_TEMPLATE`20"UUCP_SYS_%s"
  596. X#define`20STATUS_LNT`20"LNM$SYSTEM_TABLE"
  597. X#define`20STATUS_TEMPLATE`20"UUCP_STATUS_%s"
  598. X#define`20MAXLOCK`2032
  599. X#define`20LOGLEN`20255
  600. X#define`20SEQSIZE`204
  601. X#define`20CONTROL_FILE`20`20`20`20`20`20`20`20`20"uucp_cfg:control."`20
  602. X#define`09LOGCLOSE`09/*`20Logfile`20must`20be`20closed;`20VMS`20locks`20it`20w
  603. Vhen`20open`20*/
  604. X#define`20EXEDIR`20`20"uucp_bin:"`09/*`20uuxqt`20executables`20live`20here`20(
  605. Vnot`20used)`20*/
  606. X#define`20NULL_DEVICE`20"NL:"
  607. X#define`20fork`20vfork`09`09/*`20(not`20used)`20*/
  608. X#define`20STATUS`20int`09`09/*`20(not`20used)`20*/
  609. X#define`20postmaster`20"UUCP_POSTMASTER"
  610. X#define`20EXIT_OK`201`09`09/*`20image`20exit`20code`20*/
  611. X#define`20EXIT_ERR`200x10000000`09/*`20image`20exit`20code`20*/
  612. X#define`20ENABLE`201`09`09/*`20for`20$SETAST`20(and`20maybe`20others)`20*/
  613. X#define`20DISABLE`200
  614. X#define`09time_t`09unsigned`09/*`20(not`20used)`20*/
  615. X#define`20remove`20delete`09/*`20Remove`20a`20file`20*/
  616. X#define`20qsort`20pqsort`09/*`20Our`20own`20version`20(not`20used)`20*/
  617. X
  618. X#define`20FOPEN_W_MODE`20"w"`09/*`20mode`20to`20open`20files`20being`20receive
  619. Vd`20*/
  620. X#define`20FOPEN_R_MODE`20"r"`09/*`20`20or`20sent`20*/
  621. X
  622. X#define`20SS_FAILED(status)`20(((status)`261)`20==`200)
  623. X#define`20initdsc(d)`20d.dsc$b_class`20=`20DSC$K_CLASS_S,`20d.dsc$b_dtype`20=
  624. V`20DSC$K_DTYPE_T
  625. X#define`20fillindsc(d,`20s)`20d.dsc$w_length=strlen(s),`20d.dsc$a_pointer=(s)
  626. X#define`20init_itmlst3(e,i,l,c,a,r)`20\
  627. X`09(e`5Bi`5D.len=(l),\
  628. X`09e`5Bi`5D.code=(c),\
  629. X`09e`5Bi`5D.address=(a),\
  630. X`09e`5Bi`5D.retlen=(r))
  631. X
  632. $ call unpack INCLUDES.H;222 288975401 ""
  633. $!
  634. $ create 'f'
  635. X$`20On`20Control_Y`20Then`20GoTo`20EXIT
  636. X$`20On`20Error`20`20`20`20`20Then`20GoTo`20EXIT
  637. X$!========================================================================
  638. X$!
  639. X$!`20`20Name`20`20`20`20`20`20:`20MAKE_JPEG.COM
  640. X$!
  641. X$!`20`20Purpose`20`20`20:`20Compile`20and`20build`20JPEG`20library`20(v3)`20un
  642. Vder`20VMS
  643. X$!`20`20Suggested`20usage:`20called`20by`20@`20`5B-`5DMAKE_XV.COM
  644. X$!
  645. X$!`20`20Created:`20`209-JAN-1992`20`20`20by`20David`20Jones`20(jonesd@kcgl1.en
  646. Vg.ohio-state.edu)
  647. X$!`20`20Updated:`2019-JAN-1992`20`20`20by`20Rick`20Dyson`20`20(dyson@iowasp.ph
  648. Vysics.uiowa.edu)
  649. X$!`20`20Updated:`20`209-MAR-1992`20`20`20by`20Rick`20Dyson`20`20for`20XV`20v2.
  650. V11
  651. X$!`20`20Updated:`2020-MAR-1992`20`20`20by`20Rick`20Dyson`20`20for`20JPEG`20v3
  652. X$!`20`20Updated:`2028-APR-1992`20`20`20by`20Rick`20Dyson`20`20for`20XV`20v2.2a
  653. V
  654. X$!`20`20Updated:`20`206-MAY-1992`20`20`20by`20Rick`20Dyson`20`20for`20XV`20v2.
  655. V21
  656. X$!
  657. X$!========================================================================
  658. X$`20THIS_PATH`20=`20F$Element`20(0,`20"`5D",`20F$Environment`20("PROCEDURE"))
  659. V`20+`20"`5D"
  660. X$`20If`20F$Trnlnm`20("SYS")`20.eqs.`20""`20Then`20Define`20Sys`20Sys$Share
  661. X$!USER`20CUSTOMIZING`20POINT!!!!!
  662. X$!
  663. X$`20CC`20:=`20CC`20/NoList`20/NoDebug`20/Optimize`20/Define`20=`20(TWO_FILE_CO
  664. VMMANDLINE,HAVE_STDC,INCLUDES_ARE_ANSI)
  665. X$!
  666. X$`20sources`20=`20"jcmaster,jcdeflts,jcarith,jccolor,jcexpand,jchuff,jcmcu,"
  667. V`20`20`20`20`20`20+`20-
  668. X`20`20`20`20`20`20`20`20`20`20`20`20"jcpipe,jcsample,jfwddct,jwrjfif,jrdgif,jr
  669. Vdppm,jrdrle,"`20`20`20`20`20`20`20`20`20+`20-
  670. X`20`20`20`20`20`20`20`20`20`20`20`20"jrdtarga,jdmaster,jddeflts,jbsmooth,jdari
  671. Vth,jdcolor,jdhuff,"`20`20`20+`20-
  672. X`20`20`20`20`20`20`20`20`20`20`20`20"jdmcu,jdpipe,jdsample,jquant1,jquant2,jre
  673. Vvdct,jrdjfif,jwrgif,"`20+`20-
  674. X`20`20`20`20`20`20`20`20`20`20`20`20"jwrppm,jwrrle,jwrtarga,jutils,jerror,jmem
  675. Vmgr,jmemsys"
  676. X$!
  677. X$!`20`20search`20for`20missing`20object`20files.
  678. X$!
  679. X$`20sndx`20=`200
  680. X$NEXT_SOURCE:
  681. X$`20`20`20sfile`20=`20F$Element`20(sndx,`20",",`20sources)
  682. X$`20`20`20sndx`20=`20sndx`20+`201
  683. X$`20`20`20If`20sfile`20.eqs.`20","`20Then`20GoTo`20SOURCES_DONE
  684. X$`20`20`20ofile`20=`20F$Parse`20(".OBJ",`20sfile)
  685. X$`20`20`20If`20F$Search`20(ofile)`20.nes.`20""`20Then`20GoTo`20NEXT_SOURCE
  686. X$`20`20`20Write`20Sys$Output`20"Compiling`20",`20sfile,`20".c`20..."
  687. X$`20`20`20CC`20'sfile'.c
  688. X$`20`20`20If`20F$Search`20(ofile)`20.nes.`20""`20Then`20new_objects`20=`20new_
  689. Vobjects`20+`20","`20+`20sfile
  690. X$`20`20`20GoTo`20NEXT_SOURCE
  691. X$!
  692. X$SOURCES_DONE:
  693. X$`20`20`20If`20new_objects`20.eqs.`20""`20.and.`20p1`20.eqs.`20""`20Then`20GoT
  694. Vo`20EXIT
  695. X$`20`20`20new_objects`20=`20new_objects`20-`20","
  696. X$!
  697. X$`20`20`20Write`20Sys$Output`20"Building`20JPEGLIB.OLB..."
  698. X$`20`20`20If`20"''F$Search`20("JPEGLIB.OLB")'"`20.eqs.`20""`20Then`20Library
  699. V`20/Create`20JPEGLIB.OLB
  700. X$`20`20`20Library`20/Replace`20JPEGLIB.OLB`20*.OBJ
  701. X$`20`20`20GoTo`20Exit
  702. X$EXIT:
  703. X$`20`20`20VERIFY`20=`20F$Verify`20(VERIFY)
  704. X$`20`20`20Exit
  705. $ call unpack MAKE_JPEG.COM;222 1331191611 ""
  706. $!
  707. $ create 'f'
  708. X$`20On`20Control_Y`20Then`20GoTo`20EXIT
  709. X$`20On`20Error`20`20`20`20`20Then`20GoTo`20EXIT
  710. X$!========================================================================
  711. X$!
  712. X$!`20`20Name`20`20`20`20`20`20:`20MAKE_TIFF.COM
  713. X$!
  714. X$!`20`20Purpose`20`20`20:`20Compile`20and`20build`20TIFF`20library`20under`20V
  715. VMS
  716. X$!`20`20Suggested`20usage:`20called`20by`20@`20`5B-`5DMAKE_XV.COM
  717. X$!
  718. X$!`20`20Created:`20`209-JAN-1992`20`20`20by`20David`20Jones`20(jonesd@kcgl1.en
  719. Vg.ohio-state.edu)
  720. X$!`20`20Updated:`2019-JAN-1992`20`20`20by`20Rick`20Dyson`20`20(dyson@iowasp.ph
  721. Vysics.uiowa.edu)
  722. X$!`20`20Updated:`20`209-MAR-1992`20`20`20by`20Rick`20Dyson`20`20for`20xv`20v2.
  723. V11
  724. X$!`20`20Updated:`20`209-MAR-1992`20`20`20by`20Rick`20Dyson`20`20for`20xv`20v2.
  725. V20a`20and`20TIFF`20v3.0
  726. X$!`20`20Updated:`20`206-MAY-1992`20`20`20by`20Rick`20Dyson`20`20for`20xv`20v2.
  727. V21`20and`20TIFF`20v3.0
  728. X$!
  729. X$!========================================================================
  730. X$`20THIS_PATH`20=`20F$Element`20(0,`20"`5D",`20F$Environment`20("PROCEDURE"))
  731. V`20+`20"`5D"
  732. X$`20If`20F$Trnlnm`20("SYS")`20.eqs.`20""`20Then`20Define`20Sys`20Sys$Share
  733. X$!USER`20CUSTOMIZING`20POINT!!!!!
  734. X$!
  735. X$`20CC`20:=`20CC`20/NoList`20/NoDebug`20/Optimize`20/Define`20=`20("BSDTYPES=1
  736. V",__STDC__,COLORIMETRY_SUPPORT,JPEG_SUPPORT,YCBCR_SUPPORT,CMYK_SUPPORT,LZW_SUP
  737. VPORT)
  738. X$!
  739. X$`20sources`20=`20"tif_fax3,tif_fax4,tif_aux,tif_ccittrle,tif_close,tif_compat
  740. V,"`20+`20-
  741. X`20`20`20`20`20`20`20`20`20`20`20`20"tif_dir,tif_dirinfo,tif_dirread,tif_dirwr
  742. Vite,tif_dumpmode,"`20`20`20+`20-
  743. X`20`20`20`20`20`20`20`20`20`20`20`20"tif_error,tif_getimage,tif_jpeg,tif_flush
  744. V,tif_open,"`20`20`20`20`20`20`20`20`20`20+`20-
  745. X`20`20`20`20`20`20`20`20`20`20`20`20"tif_packbits,tif_print,tif_read,tif_strip
  746. V,tif_swab,"`20`20`20`20`20`20`20`20`20`20+`20-
  747. X`20`20`20`20`20`20`20`20`20`20`20`20"tif_thunder,tif_tile,tif_warning,tif_writ
  748. Ve,tif_machdep,"`20`20`20`20`20`20+`20-
  749. X`20`20`20`20`20`20`20`20`20`20`20`20"tif_version"
  750. X$!
  751. X$`20compress_sources`20=`20"tif_compress,tif_lzw"
  752. X$!
  753. X$`20new_objects`20=`20""
  754. X$!
  755. X$!`20`20search`20for`20missing`20object`20files.
  756. X$!
  757. X$`20If`20"''F$Search`20("g3states.h")'"`20.eqs.`20""
  758. X$`20`20`20Then
  759. X$`20`20`20`20`20`20`20CC`20`5B-`5Dargproc.c
  760. X$`20`20`20`20`20`20`20CC`20/Define`20=`20("USE_PROTOTYPES=1",`20"USE_VARARGS=0
  761. V")`20mkg3states.c
  762. X$`20`20`20`20`20`20`20Link`20/Trace`20/NoMap`20mkg3states,argproc,Sys$Disk:
  763. V`5B-`5DOPTIONS.OPT/Option
  764. X$`20`20`20`20`20`20`20Mcr`20Sys$Disk:`5B`5Dmkg3states.exe`20>g3states.h
  765. X$`20EndIf
  766. X$!
  767. X$`20sndx`20=`200
  768. X$NEXT_SOURCE:
  769. X$`20`20`20sfile`20=`20F$Element`20(sndx,`20",",`20sources)
  770. X$`20`20`20sndx`20=`20sndx`20+`201
  771. X$`20`20`20If`20sfile`20.eqs.`20","`20Then`20GoTo`20NEXT_STEP
  772. X$`20`20`20ofile`20=`20F$Parse`20(".OBJ",`20sfile)
  773. X$`20`20`20If`20F$Search`20(ofile)`20.nes.`20""`20Then`20GoTo`20NEXT_SOURCE
  774. X$`20`20`20Write`20Sys$Output`20"Compiling`20",`20sfile,`20".c`20..."
  775. X$`20`20`20CC`20'sfile'.c
  776. X$`20`20`20If`20F$Search`20(ofile)`20.nes.`20""`20Then`20new_objects`20=`20new_
  777. Vobjects`20+`20","`20+`20sfile
  778. X$`20`20`20GoTo`20NEXT_SOURCE
  779. X$!
  780. X$NEXT_STEP:
  781. X$`20`20`20sndx`20=`200
  782. X$NEXT_COMPRESS:
  783. X$`20`20`20sfile`20=`20F$Element`20(sndx,`20",",`20compress_sources)
  784. X$`20`20`20sndx`20=`20sndx`20+`201
  785. X$`20`20`20If`20sfile`20.eqs.`20","`20Then`20GoTo`20SOURCES_DONE
  786. X$`20`20`20ofile`20=`20F$Parse`20(".OBJ",`20sfile)
  787. X$`20`20`20If`20F$Search`20(ofile)`20.nes.`20""`20Then`20GoTo`20NEXT_COMPRESS
  788. X$`20`20`20Write`20Sys$Output`20"Compiling`20",`20sfile,`20".c`20..."
  789. X$`20`20`20CC`20'sfile'.c
  790. X$`20`20`20If`20F$Search`20(ofile)`20.nes.`20""`20Then`20new_objects`20=`20new_
  791. Vobjects`20+`20","`20+`20sfile
  792. X$`20`20`20GoTo`20NEXT_COMPRESS
  793. X$!
  794. X$SOURCES_DONE:
  795. X$`20`20`20If`20new_objects`20.eqs.`20""`20.and.`20p1`20.eqs.`20""`20Then`20GoT
  796. Vo`20EXIT
  797. X$`20`20`20new_objects`20=`20new_objects`20-`20","
  798. X$!
  799. X$`20`20`20Write`20Sys$Output`20"Building`20LIBTIFF.OLB..."
  800. X$`20`20`20If`20"''F$Search`20("libtiff.olb")'"`20.eqs.`20""`20Then`20Library
  801. V`20/Create`20libtiff.olb
  802. X$`20`20`20Library`20/Replace`20libtiff.olb`20tif_fax3,tif_fax4,tif_aux,tif_cci
  803. Vttrle,tif_close,tif_compat,tif_compress,tif_dir,`20-
  804. X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
  805. V`20`20`20`20`20`20`20`20tif_dirinfo,tif_dirread,tif_dirwrite,tif_dumpmode,tif_
  806. Verror,tif_getimage,tif_jpeg,`20-
  807. X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
  808. V`20`20`20`20`20`20`20`20tif_flush,tif_lzw,tif_open,tif_packbits,tif_print,tif_
  809. Vread,tif_strip,tif_swab,tif_thunder,`20-
  810. X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
  811. V`20`20`20`20`20`20`20`20tif_tile,tif_warning,tif_write,tif_version,tif_machdep
  812. V
  813. X$`20`20`20GoTo`20Exit
  814. X$EXIT:
  815. X$`20`20`20Exit
  816. $ call unpack MAKE_TIFF.COM;222 85095814 ""
  817. $!
  818. $ create 'f'
  819. X$`20If`20F$Mode`20()`20.eqs.`20"INTERACTIVE"
  820. X$`20`20`20Then
  821. X$`20`20`20`20`20`20`20VERIFY`20=`20F$Verify`20(0)
  822. X$`20`20`20Else
  823. X$`20`20`20`20`20`20`20VERIFY`20=`20F$Verify`20(1)
  824. X$`20EndIf
  825. X$`20On`20Control_Y`20Then`20GoTo`20EXIT
  826. X$`20On`20Error`20`20`20`20`20Then`20GoTo`20EXIT
  827. X$!========================================================================
  828. X$!
  829. X$!`20`20Name`20`20`20`20`20`20:`20MAKE_XV.COM
  830. X$!
  831. X$!`20`20Purpose`20`20`20:`20Compile`20and`20Link`20XV`20(v2.21)`20under`20VMS
  832. X$!`20`20Suggested`20usage:`20@`20MAKE_XV.COM
  833. X$!`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20OR
  834. X$!`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20Submit`20/NoPrint
  835. V`20/Log`20=`20Sys$Disk:`5B`5D`20/Notify`20MAKE-XV.COM
  836. X$!
  837. X$!`20`20Created:`20`209-JAN-1992`20`20`20by`20David`20Jones`20(jonesd@kcgl1.en
  838. Vg.ohio-state.edu)
  839. X$!`20`20Updated:`2019-JAN-1992`20`20`20by`20Rick`20Dyson`20`20(dyson@iowasp.ph
  840. Vysics.uiowa.edu)
  841. X$!`20`20Updated:`20`209-MAR-1992`20`20`20by`20Rick`20Dyson`20`20for`20xv`20v2.
  842. V11
  843. X$!`20`20Updated:`2028-APR-1992`20`20`20by`20Rick`20Dyson`20`20for`20xv`20v2.20
  844. Va
  845. X$!`20`20Updated:`2030-APR-1992`20`20`20by`20Rick`20Dyson`20`20for`20xv`20v2.21
  846. V
  847. X$!
  848. X$!========================================================================
  849. X$`20THIS_PATH`20=`20F$Element`20(0,`20"`5D",`20F$Environment`20("PROCEDURE"))
  850. V`20+`20"`5D"
  851. X$`20Set`20Default`20'THIS_PATH'
  852. X$`20If`20F$Trnlnm`20("X11")`20.eqs.`20""`20Then`20Define`20X11`20DECW$Include
  853. X$`20If`20F$Trnlnm`20("SYS")`20.eqs.`20""`20Then`20Define`20Sys`20Sys$Share
  854. X$!USER`20CUSTOMIZING`20POINT!!!!!
  855. X$!
  856. X$!`20`20If`20you`20want`20to`20use`20the`20LZW`20decompression`20programs`20av
  857. Vailable`20from`20the`20
  858. X$!`20`20DECUS`20libraries,`20you`20will`20need`20to`20add`20the`20",HAVE_LZW"
  859. V`20string`20to`20the
  860. X$!`20`20list`20of`20define`20statements`20in`20the`20following`20compiler`20de
  861. Vfintion`20line.
  862. X$!`20`20The`20default`20will`20be`20to`20use`20the`20supplied`20VMS`20version
  863. V`20of`20the`20Unix-like
  864. X$!`20`20decompression`20program.`20`20much`20better!!`20;)
  865. X$!
  866. X$`20CC`20:=`20CC`20/NoList`20/NoDebug`20/Optimize`20/Define`20=`20(VMS,HAVE_JP
  867. VEG,HAVE_STDC,INCLUDES_ARE_ANSI,HAVE_PDS,HAVE_TIFF)`20/Include`20=`20(`5B`5D,
  868. V`5B.JPEG`5D,`5B.TIFF`5D)
  869. X$!
  870. X$`20sources`20=`20"xv,xvmisc,xvevent,xvcolor,xvimage,pseudo_root,xvroot,vms,xv
  871. Vdir,"+`20-
  872. X`09"xvgam,vmsreaddir,xvbutt,xvdial,xvpds,xv24to8,xvsmooth,xvctrl,"+`20-
  873. X`09"xvdflt,xvgif,xvgifwr,gifmapf,xvgraf,xvps,xvinfo,xvscrl,xvpm,"`20+`20-
  874. X`09"xvpbm,xvpopup,xvsunras,xvxbm,xvjpeg,argproc,xvtiff,xvtiffwr,"`20+`20-
  875. X`20`20`20`20`20`20`20`20"xvgrab,xvrle"
  876. X$!
  877. X$`20If`20F$Search`20("bitmaps.h")`20.eqs.`20""`20Then`20GoSub`20COPY_BITMAPS
  878. X$`20new_objects`20=`20""
  879. X$`20If`20F$Search`20("`5B.jpeg`5Djpeglib.olb")`20.eqs.`20""
  880. X$`20`20`20Then
  881. X$`20`20`20`20`20`20`20default`20=`20F$Environment`20("Default")
  882. X$`20`20`20`20`20`20`20Set`20Default`20`5B.jpeg`5D
  883. X$`20`20`20`20`20`20`20Write`20Sys$Output`20"Building`20JPEG`20library..."
  884. X$`20`20`20`20`20`20`20@`5B-`5Dmake_jpeg.com
  885. X$`20`20`20`20`20`20`20Set`20Default`20'default'
  886. X$`20`20`20`20`20`20`20new_objects`20=`20",`5B.jpeg`5Djpeglib/Library"
  887. X$`20EndIf
  888. X$`20If`20F$Search`20("`5B.tiff`5Dlibtiff.olb")`20.eqs.`20""
  889. X$`20`20`20Then
  890. X$`20`20`20`20`20`20`20default`20=`20F$Environment`20("Default")
  891. X$`20`20`20`20`20`20`20Set`20Default`20`5B.tiff`5D
  892. X$`20`20`20`20`20`20`20Write`20Sys$Output`20"Building`20TIFF`20library..."
  893. X$`20`20`20`20`20`20`20@`5B-`5Dmake_tiff.com
  894. X$`20`20`20`20`20`20`20Set`20Default`20'default'
  895. X$`20`20`20`20`20`20`20new_objects`20=`20",`5B.tiff`5Dlibtiff/Library"
  896. X$`20EndIf
  897. X$!
  898. X$`20If`20F$Search`20("gifdecomp.obj")`20.eqs.`20""
  899. X$`20`20`20Then
  900. X$`20`20`20`20`20`20`20Write`20Sys$Output`20"Assembling`20GIFDECOMP.MAR
  901. X$`20`20`20`20`20`20`20Macro`20gifdecomp
  902. X$`20`20`20`20`20`20`20new_objects`20=`20",gifdecomp"
  903. X$`20EndIf
  904. X$!
  905. X$!`20`20search`20for`20missing`20object`20files.
  906. X$!
  907. X$`20sndx`20=`200
  908. X$NEXT_SOURCE:
  909. X$`20`20`20sfile`20=`20F$Element`20(sndx,`20",",`20sources)
  910. X$`20`20`20sndx`20=`20sndx`20+`201
  911. X$`20`20`20If`20sfile`20.eqs.`20","`20Then`20GoTo`20SOURCES_DONE
  912. X$`20`20`20ofile`20=`20F$Parse`20(".OBJ",`20sfile)
  913. X$`20`20`20If`20F$Search`20(ofile)`20.nes.`20""`20Then`20GoTo`20NEXT_SOURCE
  914. X$`20`20`20Write`20Sys$Output`20"Compiling`20",`20sfile,`20".c`20..."
  915. X$`20`20`20CC`20'sfile'.c
  916. X$`20`20`20If`20F$Search`20(ofile)`20.nes.`20""`20Then`20new_objects`20=`20new_
  917. Vobjects`20+`20","`20+`20sfile
  918. X$`20`20`20GoTo`20NEXT_SOURCE
  919. X$!
  920. X$SOURCES_DONE:
  921. X$`20`20`20If`20new_objects`20.eqs.`20""`20.and.`20p1`20.eqs.`20""`20Then`20GoT
  922. Vo`20EXIT
  923. X$`20`20`20new_objects`20=`20new_objects`20-`20","
  924. X$!
  925. X$`20`20`20Write`20Sys$Output`20"Building`20decompress.c`20..."
  926. X$`20`20`20CC`20decompress.c
  927. X$`20`20`20Link`20/NoMap`20/Executable`20=`20decompress.exe`20decompress,option
  928. Vs/Option
  929. X$`20`20`20Write`20Sys$Output`20"Building`20vdcomp.c`20..."
  930. X$`20`20`20CC`20vdcomp.c
  931. X$`20`20`20Link`20/NoMap`20/Executable`20=`20vdcomp.exe`20vdcomp,options/Option
  932. V
  933. X$`20`20`20Write`20Sys$Output`20"Building`20bggen.c`20..."
  934. X$`20`20`20CC`20bggen.c
  935. X$`20`20`20Link`20/NoMap`20/Executable`20=`20bggen.exe`20bggen,argproc,options/
  936. VOption
  937. X$`20`20`20Write`20Sys$Output`20"Linking`20new`20XV`20image..."
  938. X$`20`20`20Link`20/NoMap`20/Executable`20=`20xv.exe`20Sys$Input/Option`20'p1'
  939. Xxv,xvmisc,xvevent,xvcolor,xvimage,pseudo_root,xvroot,vms,argproc,xvdir
  940. Xxvgam,vmsreaddir,xvbutt,xvdial,xvpds,xv24to8,xvsmooth,xvctrl,xvdflt,xvgif
  941. Xxvgifwr,gifmapf,gifdecomp,xvgraf,xvps,xvinfo,xvscrl,xvpm,xvpbm,xvpopup
  942. Xxvsunras,xvxbm,xvjpeg,xvtiff,xvtiffwr,xvgrab,xvrle
  943. X`5B.jpeg`5Djpeglib/lib
  944. X`5B.tiff`5Dlibtiff/lib
  945. XSys$Share:DECW$XlibShr/Share,DECW$DWTLibShr/Share,VAXCRTL/Share
  946. X$`20`20`20If`20"''F$Search`20("xv.hlb")'"`20.eqs.`20""`20Then`20Library`20/Cre
  947. Vate`20/Help`20xv.hlb
  948. X$`20`20`20Library`20/Replace`20/Help`20xv.hlb`20xv.hlp
  949. X$`20`20`20GoTo`20Exit
  950. X$!
  951. X$!`20subroutine`20to`20generate`20new`20bitmaps.h`20file.
  952. X$!
  953. X$COPY_BITMAPS:
  954. X$`20`20`20Create`20bitmaps.h
  955. X$`20`20`20bmlist`20=`20"grasp,penn,down,down1,up,up1,scrlgray,gray50,gray25,i_
  956. Vfifo,"`20+`20-
  957. X`20`20`20`20`20`20`20`20`20`20`20`20`20"i_chr,i_dir,i_blk,i_lnk,i_sock,i_reg,r
  958. Vb_off,rb_on,rb_off1,"`20`20+`20-
  959. X`20`20`20`20`20`20`20`20`20`20`20`20`20"rb_on1,fc_left,fc_leftm,fc_mid,fc_midm
  960. V,fc_right,fc_rightm,"`20`20+`20-
  961. X`20`20`20`20`20`20`20`20`20`20`20`20`20"fc_left1,fc_left1m,fc_right1,fc_right1
  962. Vm,icon,dial_cw1,"`20`20`20`20`20`20+`20-
  963. X`20`20`20`20`20`20`20`20`20`20`20`20`20"dial_cw2,dial_ccw1,dial_ccw2,iconmask,
  964. Vgf1_addh,gf1_delh,"`20`20`20`20+`20-
  965. X`20`20`20`20`20`20`20`20`20`20`20`20`20"gf1_line,gf1_rst,gf1_spln,gf1_gamma,h_
  966. Vrotl,h_rotr,h_sinc,"`20`20`20+`20-
  967. X`20`20`20`20`20`20`20`20`20`20`20`20`20"h_sdec,h_flip,cb_off,cb_on,cb_off1,cb_
  968. Von1,h_sat,h_desat,"`20`20`20`20+`20-
  969. X`20`20`20`20`20`20`20`20`20`20`20`20`20"root_weave,cboard50,mb_chk,fliph,flipv
  970. V"
  971. X$!
  972. X$`20`20`20ndx`20=`200
  973. X$APPEND_NEXT:
  974. X$`20`20`20name`20=`20F$Element`20(ndx,`20",",`20bmlist)
  975. X$`20`20`20If`20name`20.eqs.`20","`20Then`20Return
  976. X$`20`20`20ndx`20=`20ndx`20+`201
  977. X$`20`20`20Append`20`5B.bitmaps`5D'name'.`20`5B`5Dbitmaps.h
  978. X$`20`20`20GoTo`20APPEND_NEXT
  979. X$!
  980. X$EXIT:
  981. X$`20`20`20VERIFY`20=`20F$Verify`20(VERIFY)
  982. X$`20`20`20Exit
  983. $ call unpack MAKE_XV.COM;222 1377250170 ""
  984. $!
  985. $ create 'f'
  986. X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
  987. V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
  988. V`20`20`20`20`20`20`20`20`20`201-OCT-1992
  989. X`20`20`20`20
  990. X`20`20`20`20`20`20`20`20Release`20notes`20for`20VMS`20`20port`20`20of`20`20XV
  991. V`20`202.21`20(originally`20released
  992. X`20`20`20`2029-APR-1992`20but`20the`20port`20is`20`20based`20`20on`20the`20xv-
  993. V2.21.tar.Z`20file`20from
  994. X`20`20`20`20export.lcs.mit.edu`20`20dated`20`2025-Sep-1992).`20`20`20The`20ori
  995. Vginal`20`20port`20`20was
  996. X`20`20`20`20mostly`20`20done`20by`20David`20Jones`20(jonesd@kcgl1.eng.ohio-sta
  997. Vte.edu)`20with
  998. X`20`20`20`20some`20contributions`20`20by`20Rick`20Dyson`20(Dyson@IowaSP.Physic
  999. Vs.UIowa.EDU)
  1000. X`20`20`20`20using`20the`20VMS`20VAXC`20compiler`20and`20DECWindow`20libraries.
  1001. V
  1002. X
  1003. XInstallation`20instructions`20are`20at`20the`20bottom`20of`20this`20file.`20PL
  1004. VEASE`20READ!
  1005. X
  1006. XCommand`20procedures:
  1007. X
  1008. X`20`20`20`20XV_FIXUP_VMS.COM
  1009. X`20`20`20`20`20`20`20`20This`20procedure`20applies`20the`20source`20file`20
  1010. V`20modifications`20`20(*.DIF)
  1011. X`20`20`20`20`20`20`20`20to`20the`20original`20XV`20and`20TIFF`20files`20`20of
  1012. V`20`20the`20XV`20v2.21`20release`20as
  1013. X`20`20`20`20`20`20`20`20extracted`20`20from`20`20the`20`20tar`20`20file.`20
  1014. V`20`20`20It`20assumes`20`20the`20`20directory
  1015. X`20`20`20`20`20`20`20`20hierarchy`20`20on`20`20the`20tar`20archive`20is`20pres
  1016. Verved`20(i.e.,`20`5B.bitmaps`5D,
  1017. X`20`20`20`20`20`20`20`20`5B.jpeg`5D,`20`5B.tiff`5D`20sub-directories).`20`20
  1018. V`20`20NOTE:`20`20`20`20Only`20`20apply`20the
  1019. X`20`20`20`20`20`20`20`20patch`20once!!!
  1020. X
  1021. X`20`20`20`20MAKE_*.COM
  1022. X`20`20`20`20`20`20`20`20This`20`20command`20`20procedure`20`20is`20a`20"poor-p
  1023. Verson's"`20version`20of`20MMS.
  1024. X`20`20`20`20`20`20`20`20PLEASE`20NOTE:`20`20You`20should`20look`20through`20th
  1025. Ve`20command`20procedure`20to
  1026. X`20`20`20`20`20`20`20`20see`20`20if`20any`20customizing`20is`20necessary`20
  1027. V`20before`20executing`20it!`20`20If
  1028. X`20`20`20`20`20`20`20`20you`20have`20MMS`20you`20WILL`20want`20to`20use`20that
  1029. V`20method`20instead.
  1030. X
  1031. X`20`20`20`20SETUP.COM
  1032. X`20`20`20`20`20`20`20`20A`20`20simple`20`20command`20procedure`20to`20setup
  1033. V`20`20the`20`20final`20`20compiled`20XV
  1034. X`20`20`20`20`20`20`20`20package`20of`20programs.`20`20It`20`20can`20`20be`20
  1035. V`20executed`20`20by`20itself`20or`20used
  1036. X`20`20`20`20`20`20`20`20with`20many`20of`20the`20commonly`20available`20`20SET
  1037. VUP`20packages`20(i.e.,`20the
  1038. X`20`20`20`20`20`20`20`20FERMILAB`20`20version).`20`20`20If`20it`20is`20kept
  1039. V`20`20in`20the`20same`20directory`20`20as
  1040. X`20`20`20`20`20`20`20`20the`20binaries,`20it`20will`20be`20able`20`20to`20`20g
  1041. Vet`20`20the`20`20necessary`20symbols
  1042. X`20`20`20`20`20`20`20`20setup`20anywhere`20the`20directory`20structure`20is
  1043. V`20located`20`20WITHOUT`20the
  1044. X`20`20`20`20`20`20`20`20need`20`20to`20`20edit`20the`20command`20procedure.
  1045. V`20`20Move`20`20them`20`20all`20`20around
  1046. X`20`20`20`20`20`20`20`20together`20and`20you`20will`20be`20OK.
  1047. X
  1048. XMake`20files:
  1049. X
  1050. X`20`20`20`20DESCRIP.MMS`20(in`20the`20top`20level`20directory)
  1051. X`20`20`20`20`20`20`20`20This`20is`20a`20MMS`20`20description`20`20file`20for
  1052. V`20the`20VMS`20MMS`20utility.`20`20You
  1053. X`20`20`20`20`20`20`20`20should`20`20edit`20`20the`20file`20first`20`20to`20
  1054. V`20make`20`20sure`20`20the`20`20customizing
  1055. X`20`20`20`20`20`20`20`20features`20`20are`20`20appropriate`20`20for`20`20your
  1056. V`20system.`20`20`20To`20`20produce`20`20a
  1057. X`20`20`20`20`20`20`20`20working`20version`20of`20XV,`20BGGEN,`20DECOMPRESS,
  1058. V`20and`20VDCOMP`20just`20type
  1059. X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
  1060. V`20`20`20`20`20`20`20`20`20`20`20`20`20MMS
  1061. X`20`20`20`20`20`20`20`20at`20`20the`20`20DCL`20command`20prompt.`20`20For`20us
  1062. Vers`20without`20MMS`20`20you`20`20will
  1063. X`20`20`20`20`20`20`20`20need`20to`20use`20MAKE_XV.COM`20instead.
  1064. X
  1065. X`20`20`20`20MAKEFILE.MMS`20(in`20the`20JPEG`20sub-directory)
  1066. X`20`20`20`20`20`20`20`20This`20is`20a`20MMS`20description`20file`20for`20the
  1067. V`20VMS`20`20MMS`20`20utility.`20`20You
  1068. X`20`20`20`20`20`20`20`20should`20`20edit`20`20the`20`20file`20`20first`20`20to
  1069. V`20`20make`20`20sure`20the`20customizing
  1070. X`20`20`20`20`20`20`20`20features`20are`20`20appropriate`20`20for`20`20your`20
  1071. V`20system.`20`20`20`20To`20`20produce`20a
  1072. X`20`20`20`20`20`20`20`20working`20version`20of`20`20the`20`20JPEG`20`20library
  1073. V`20`20type`20`20MMS`20`20at`20`20the`20DCL
  1074. X`20`20`20`20`20`20`20`20command`20prompt.`20`20For`20`20users`20`20without`20
  1075. V`20MMS`20you`20will`20need`20to`20use
  1076. X`20`20`20`20`20`20`20`20MAKE_JPEG.COM`20instead.`20`20Note`20that`20the`20top
  1077. V`20level`20MMS`20`20file`20will
  1078. X`20`20`20`20`20`20`20`20automagically`20`20build`20`20the`20`20JPEG`20`20libra
  1079. Vry`20`20if`20it`20doesn't`20exist.
  1080. X`20`20`20`20`20`20`20`20There`20is`20no`20need`20to`20do`20it`20manually.
  1081. X
  1082. X`20`20`20`20MAKEFILE.VMS`20(in`20the`20TIFF`20sub-directory)
  1083. X`20`20`20`20`20`20`20`20This`20is`20a`20MMS`20description`20file`20for`20the
  1084. V`20VMS`20`20MMS`20`20utility.`20`20You
  1085. X`20`20`20`20`20`20`20`20should`20`20edit`20`20the`20`20file`20`20first`20`20to
  1086. V`20`20make`20`20sure`20the`20customizing
  1087. X`20`20`20`20`20`20`20`20features`20are`20`20appropriate`20`20for`20`20your`20
  1088. V`20system.`20`20`20`20To`20`20produce`20a
  1089. X`20`20`20`20`20`20`20`20working`20version`20`20of`20`20the`20`20LIBTIFF`20`20l
  1090. Vibrary`20type`20MMS`20at`20the`20DCL
  1091. X`20`20`20`20`20`20`20`20command`20prompt.`20`20`20For`20`20users`20`20without
  1092. V`20MMS`20you`20will`20need`20to`20use
  1093. X`20`20`20`20`20`20`20`20MAKE_TIFF.COM`20instead.`20`20Note`20`20that`20the`20t
  1094. Vop`20level`20MMS`20file`20will
  1095. X`20`20`20`20`20`20`20`20automagically`20`20build`20the`20JPEG`20library`20`20i
  1096. Vf`20`20it`20`20doesn't`20`20exist.
  1097. X`20`20`20`20`20`20`20`20There`20is`20no`20need`20to`20do`20it`20manually.
  1098. X
  1099. XVMS`20specific`20`20source`20`20files`20`20are`20`20`20all`20`20stored`20`20in
  1100. V`20`20the`20`20`5B.UNSUPT.VMS`5D
  1101. X`20`20`20`20sub-directory.`20`20John`20Bradley`20did`20`20not`20`20update`20
  1102. V`20them`20`20for`20v2.21,`20so
  1103. X`20`20`20`20some`20will`20need`20to`20be`20replaced.
  1104. X
  1105. X`20`20`20`20VMS.C`20`20`20`20`20-`20Miscellaneous`20`20routines`20`20`20to`20
  1106. V`20support`20`20UNIX`20`20functions
  1107. X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20missing`20from`20the`20`20C
  1108. V`20`20run-time`20`20library.`20`20`20`20Also`20define
  1109. X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20do_vms_wildcard()`20function
  1110. V`20used`20to`20`20fixup`20the`20argument
  1111. X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20vector.
  1112. X
  1113. X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20Private`20version`20`20of`20qs
  1114. Vort`20added,`20Kevin`20Oberman`20claimed
  1115. X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20the`20`20VAXCRTL`20`20qsort
  1116. V`20`20`20bug`20`20(well`20`20known)`20`20was`20`20causing
  1117. X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20aberrant`20images.`20`20There
  1118. V`20are`20also`20remnants`20of`20a`20aborted
  1119. X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20attempt`20at`20adding`20uncomp
  1120. Vress`20support.
  1121. X
  1122. X`20`20`20`20VMSREADDIR.C`20`20-`20Substitute`20`20`20routines`20`20for`20`20UN
  1123. VIX`20`20directory`20`20scan
  1124. X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20routines`20`20(opendir),`20
  1125. V`20perform`20`20equivalent`20`20VMS`20`20system
  1126. X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20calls.
  1127. X
  1128. X`20`20`20`20DIRENT.H`20`20-`20Include`20file`20`20to`20`20use`20`20in`20conjun
  1129. Vction`20with`20routines`20in
  1130. X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20VMSREADDIR.C.
  1131. X
  1132. X`20`20`20`20PSEUDO_ROOT.C`20-`20`20Finds`20virtual`20root`20`20window`20`20for
  1133. V`20DECWindows`20window
  1134. X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20manager.
  1135. X
  1136. X`20`20`20`20DECOMPRESS.C`20-`20A`20decompression`20program`20`20for`20`20Unix-
  1137. Vstyle`20`20.Z`20`20files
  1138. X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20which`20can`20be`20used`20by
  1139. V`20XV`20for`20automatic`20decompression`20of
  1140. X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20.Z`20files.`20`20It`20can`20al
  1141. Vso`20`20be`20`20used`20`20at`20`20the`20DCL`20level`20to
  1142. X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20decompress`20files`20by`20hand
  1143. V.
  1144. X
  1145. X`20`20`20`20OPTIONS.OPT`20-`20A`20linker`20options`20file`20for`20XV.
  1146. X`20`20`20`20
  1147. XNew`20Versions`20of`20the`20OLD`20VMS`20files`20provided`20with`20this`20VMS
  1148. V`20patch`20kit:
  1149. X
  1150. X`20`20`20`20GIFMAPF.C`20-`20VMS`20optimized`20GIF`20file`20`20access`20routine
  1151. Vs,`20maps`20the`20file
  1152. X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20to`20virtual`20memory`20and
  1153. V`20treats`20it`20as`20an`20array.
  1154. X
  1155. X`20`20`20`20GIFDECOMP.MAR`20-`20`20Optimized`20`20GIF`20decompressor`20routine
  1156. Vs,`20written`20`20in
  1157. X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20MACRO.
  1158. X
  1159. X`20`20`20`20ARGPROC.C`20`20-`20`20getredirection()`20routine`20`20to`20`20impl
  1160. Vement`20`20the`20`20piping
  1161. X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20and/or`20redirection`20o
  1162. Vf`20I/O.`20`20Makes`20`20VMS`20command`20lines
  1163. X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20work`20like`20the`20Unix
  1164. V`20lines.
  1165. X
  1166. X`20`20`20`20INCLUDES.H`20-`20Header`20file`20for`20ARGPROC.C`20code.
  1167. X
  1168. XDocumentation`20files:
  1169. X
  1170. X`20`20`20`20XV.HLP`20-`20A`20brief`20VMS`20Help`20file`20written`20from`20the
  1171. V`20man`20page.
  1172. X
  1173. X`20`20`20`20XV.TEX`20-`20A`20LaTeX`20formated`20version`20of`20the`20Unix`20ma
  1174. Vn`20page`20(for`20v2.21).
  1175. X
  1176. +-+-+-+-+-+-+-+-  END  OF PART 2 +-+-+-+-+-+-+-+-
  1177.