🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: vmsnet.sources
Article #121

xv-2-21a changes to run on VMS, part 02/08

#121
From: Rick Dyson
Date: Wed, 04 Nov 1992 21:12
1166 lines
50210 bytes
Submitted-by: dyson@iowasp.physics.uiowa.edu (Rick Dyson)
Posting-number: Volume 3, Issue 234
Archive-name: xv-2-21_vms_changes/part02
Supersedes: xv-2-21_vms_changes: Volume 2, Issue 83-86

-+-+-+-+-+-+-+-+ START OF PART 2 -+-+-+-+-+-+-+-+
X`09MOVL`09R5,`20G`5ETABLE_SIZE`09;`20Save`20table`20size
X`09MOVL`09R6,`20G`5EPREV_CODE`20`09;`20Save`20previous`20code
X`09MOVL`09R7,`20G`5EBITS_USED`09`09;`20Save`20#`20bits`20used`20out`20of`20inp
Vut`20buffer.
X`09MOVL`09R8,`20G`5ECODE_BITS`09`09;`20save`20current`20code`20bits.
X`09MOVL`09R10,`20G`5ESTACK_PTR`09;`20Save`20stack`20pointer.
X`09MOVL`09#1,`20R0`09`09`09;`20Set`20success`20status
XOPT_DONE:
X`09TSTL`09(AP)`09`09`09;`20Was`20return`20requested?
X`09BEQL`0910$`09`09`09;`20no,`20skip
X`09MOVL`09R11,`20@(AP)`09`09;`20Return`20final`20output`20pointer.
X10$:
X`09RET`09`09`09`09;`20`20`20`20`20and`20return
X;
X;`20Handle`20case`20where`20input`20code`20is`20split`20between`20buffers.
XREFILL:
X`09BSBW`09SPAN_BUFFER`09`09;`20do`20work.
X`09ASHL`09R8,`20#1,`20R1`09`09;`20Regenerate`20max`20value.
X`09DECL`09R1`09`09`09;`20`20`20as`202`5Ecode_bits`20-`201
X`09BRB`09CHECK_CODE`09`09;`20Rejoin`20loop`20to`20process`20R2.
X;
X;`20Main`20loop`20processes`20input`20codes`20until`20we've`20filled`20the`20u
Vser's`20buffer.
X;`20take`2026`20instructions/input`20code`20with`201`20branch`20and`2012`20mem
Vory`20references.
X;
X;`20Optimally,`20each`20input`20code`20executes`2018`20instructions`20plus`208
V`20instructions
X;`20for`20each`20output`20byte`20produced.`20`20The`20number`20of`20branches
V`20taken`20is`20one`20less
X;`20than`20twice`20the`20number`20of`20output`20bytes`20produced.`20`20Each
V`20input`20code`20results
X;`20in`201`20PC`20relative`20deferred,`201`20register`20deferred,`203`20indexe
Vd`20register`20deferred
X;`20and`202`20immediate`20data`20memory`20references.`20`20Each`20output`20byt
Ve`20results`20in
X;`203`20autoinc/dec,`201`20byte`20displacement,`20and`202`20indexed`20register
V`20deferred`20memory
X;`20references.
X;
X`09.ALIGN`09LONG
XOUTPUT_BYTE:
X`09MOVB`09(R10)+,`20(R11)+`09`09;`20Pop`20byte`20from`20stack,`20append`20to
V`20output
XCHECK_IF_DONE:
X`09CMPL`09R11,`2012(AP)`09`09;`20Any`20room`20left`20in`20output`20buffer?
X`09BGEQ`09DONE`09`09`09;`20No,`20we`20are`20done
X`09CMPL`09R10,`20AP`09`09`09;`20Stack`20empty?
X`09BLSS`09OUTPUT_BYTE`09`09;`20No,`20copy`20to`20output`20buffer
X;
X;`20`20process`20next`20input`20code,`20producing`20result`20on`20stack.
X;
X`09ADDL3`09R7,`20R8,`20R0`09`09;`20bits-used`20+`20code_bits`20->`20R0
X`09CMPL`09R0,`20R9`09`09`09;`20Is`20R0`20>`20than`20number`20of`20bits`20in
V`20buffer
X`09BGTR`09REFILL`20`09`09`09;`20Yes,`20do`20special`20stuff.
X`09EXTZV`09R7,`20R8,`20@<INBUF+4>,`20R2`09;`20No,`20directly`20extract`20code.
V
X`09MOVL`09R0,`20R7`09`09`09;`20update`20pointer`20by`20code_bits`20amount
X
XCHECK_CODE:
X`09CMPW`09(R3)`5BR2`5D,`20#-2`09`09;`20is`20Code`20a`20special`20code`20(prefi
Vx`20-2)?
X`09BEQL`09SPECIAL_CODE`09`09;`20`20`20Yes,`20handle`20it.
X`09CMPL`09R2,`20R5`09`09`09;`20Is`20code`20in`20table?
X`09BGTR`09OUT_OF_RANGE`09`09;`20`20`20No,`20handle`20it.
X
X`09MOVL`09R2,`20R0`09`09`09;`20`20`20Yes,`20init`20loop`20variable`20to`20CODE
V
X10$:
X`09MOVB`09(R4)`5BR0`5D,`20-(R10)`09;`20Push`20extension`20char`20onto`20stack
X`09CVTWL`09(R3)`5BR0`5D,`20R0`09`09;`20Replace`20code`20with`20prefix`20code
X`09BGEQ`0910$`09`09`09;`20If`20another`20code,`20continue
X`09`09`09`09`09;`20else`20add`20to`20table.
XEXPAND_TABLE:
X`09INCL`09R5`09`09`09;`20Bump`20table`20size.
X`09CMPL`09R5,`20#4096`09`09;`20at`20max?
X`09BGTR`0940$`20`09`09`09;`20Yes,`20skip.
X10$:
X`09MOVW`09R6,`20(R3)`5BR5`5D`09`09;`20Prefix`20for`20previous`20code`20in`20ne
Vw`20code
X`09MOVB`09(R10),`20(R4)`5BR5`5D`09`09;`20Extension`20is`20last`20thing`20put
V`20on`20stack
X`09MOVL`09R2,`20R6`09`09`09;`20new`20previous`20code.
X20$:
X`09CMPL`09R5,`20R1`09`09`09;`20Is`20table`20size`20<`20max`20for`20code`20size
V?
X`09BLSS`09OUTPUT_BYTE`09`09;`20yes,`20leave`20it`20alone
X`09CMPL`09R8,`20#12`09`09`09;`20no,`20is`20code_bits`20at`20max?
X`09BGEQ`09OUTPUT_BYTE`09`09;`20yes,`20leave`20alone
X`09INCL`09R8`09`09`09;`20no,`20go`20to`20next`20higher`20size.
X`09ASHL`09R8,`20#1,`20R1`09`09;`20Compute`20new`20max`20value.
X`09DECL`09R1
X`09BRB`0920$`09`09`09;`20test`20the`20new`20size.
X40$:
X`09MOVL`09#4096,`20R5`09`09;`20Set`20to`20dummy`20entry.
X`09BRB`0910$
X;--------------------------
XSPECIAL_CODE:
X`09CMPL`09R2,`20G`5EEOI_CODE`09`09;`20Is`20code`20end`20of`20information`20cod
Ve.
X`09BEQL`09END_OF_INFORMATION
X
X`09CLRL`09R8`09`09`09;`20Reset`20code`20size
X10$:
X`09INCL`09R8`09`09`09;`20Increase`20size`20of`20code_bits.
X`09ASHL`09R8,`20#1,`20R1`09`09;`20max`20value`20for`20code`20bits.
X`09DECL`09R1
X`09CMPL`09G`5EEOI_CODE,`20R1`09`09;`20Is`20table`20size`20>`20max`20value`20fo
Vrcode_bits
X`09BGEQ`0910$`09`09`09;`20Yes,`20try`20higher`20code`20size.
X
X`09MNEGL`09#1,`20R5`09`09`09;`20Flag`20table`20size`20for`20first`20code.
X`09BRW`09CHECK_IF_DONE
X;-----------------------------------
X
XOUT_OF_RANGE:
X`09ADDL3`09R5,`20#1,`20R0`09`09;`20Compute`20table_size`20+`201?
X`09BLEQ`09FIRST_CODE`09`09;`20Table`20size`20was`20negative.
X`09CMPL`09R0,`20R2`09`09`09;`20Is`20code`20=`20table_size+1?
X`09BNEQ`09BAD_CODE`20`09`09;`20No`20abort.
X;
X;`20Special`20case,`20expand`20previous`20code`20onto`20stack`20and`20place
V`20final`20char`20in`20front.
X`09DECL`09R10`09`09`09;`20Make`20gap`20on`20stack.
X`09MOVL`09R6,`20R0`09`09`09;`20Set`20loop`20variable`20to`20prev_code
X20$:
X`09MOVB`09(R4)`5BR0`5D,`20-(R10)`09;`20Push`20onto`20stack
X`09CVTWL`09(R3)`5BR0`5D,`20R0`09`09;`20Get`20prefix`20string
X`09BGEQ`0920$
X`09MOVB`09(R10),`20G`5E<STACK_TOP-1>`09;`20Copy`20last`20char`20to`20front.
X`09BRW`09EXPAND_TABLE`09`09;`20Add`20new`20code`20to`20table.
X;-----------------------------------
XBAD_CODE:
X`09MOVL`09#20,`20R0`09`09`09;`20Bad`20parameter`20status.
X`09BRW`09OPT_DONE
XEND_OF_INFORMATION:
X`09MOVL`09#2160,`20R0
X`09BRW`09OPT_DONE
X;-----------------------------------
XFIRST_CODE:
X`09MOVL`09R2,`20R6`09`09`09;`20Update`20previous`20code.
X`09MOVB`09(R4)`5BR2`5D,`20-(R10)`09;`20Push`20onto`20stack
X`09MOVL`09G`5EEOI_CODE,`20R5
X`09BRW`09OUTPUT_BYTE
X;-----------------------------------
X;
X;`20Define`20subroutine`20to`20handle`20getting`20input`20code`20when`20buffer
V`20spans
X;`20boundaries.
X;
X;`20Input:
X;`09R7`09Number`20of`20bits`20used`20in`20INBUF
X;`09R8`09Code`20size`20(number`20of`20bits`20to`20extract).
X;`09R9`09Number`20of`20bits`20in`20INBUF,`20we`20assume`20(R7+R8)`20>`20R9
X;
X;`20Output:
X;`09R0,R1`09Destroyed
X;`09R2`09Code.
X;`09R7`09Number`20of`20bits`20used`20in`20INBUF
X;`09R9`09Totoal`20number`20of`20bits`20in`20INBUF
X;
XSPAN_BUFFER:
X`09SUBL3`09R7,`20R9,`20R0`09`09;`20Calculate`20bits`20left`20in`20buffer
X`09PUSHL`09R0`09`09`09;`20save`20for`20later`20use
X`09EXTZV`09R7,`20R0,`20@<INBUF+4>,`20R2`09;`20Get`20remaining`20bits.
X`09ADDL`09R8,`20R7`09`09`09;`20Make`20phantom`20bits-used.
X50$:
X`09MOVAL`09G`5EINBUF,`20-(SP)`09`09;`20Output`20descriptor
X`09MOVL`098(AP),`20-(SP)`09`09;`20user`20arg`20for`20input`20routine
X`09CALLS`09#2,`20@4(AP)`09`09;`20Get`20input
X`09BLBC`20`09R0,`20100$`09`09;`20abort`20if`20error.
X`09MOVL`09(SP)+,`20R0`09`09;`20Recover`20#`20bits`20taken`20from`20last`20buff
Ver
X`09SUBL`09R9,`20R7`09`09`09;`20Number`20of`20overflow`20bits`20becomes`20#`20u
Vsed
X`09MOVZWL`09G`5EINBUF,`20R9`09`09;`20Current`20#`20of`20bytes`20in`20input`20b
Vuffer.
X`09ASHL`09#3,`20R9,`20R9`09`09;`20Convert`20to`20number`20of`20bits.
X`09CMPL`09R9,`20R7`09`09`09;`20Is`20number`20of`20bits`20to`20take`20more
X`09BLSS`09110$`09`09`09;`20Yes,`20go`20to`20special`20case.
X`09EXTZV`09#0,`20R7,`20@<INBUF+4>,`20R1`09;`20No,`20extract`20the`20bits.
X`09ASHL`09R0,`20R1,`20R0`09`09;`20Shift`20over`20by`20overflow`20amount
X`09BISL`09R0,`20R2`09`09`09;`20OR`20into`20output`20code.
X`09RSB
X100$:
X`09RET
X;
X;`20Handle`20the`20rare`20case`20where`20more`20bits`20left`20to`20extract`20t
Vhan`20bits`20in
X;`20buffer`20read.
X110$:
X`09EXTZV`20#0,`20R9,`20-`09`09`09;`20Extract`20entire`20buffer.
X`09`09@<INBUF+4>,`20R1
X`09ASHL`09R0,`20R1,`20R0`09`09;`20Shift`20over
X`09BISL`09R0,`20R2`09`09`09;`20Add`20to`20result
X`09ADDL3`09R9,`20R0,`20-(SP)`09`09;`20update`20number`20of`20bits`20to`20shift
V
X`09BRB`20`0950$`09`09`09;`20read`20another`20buffer.
X;
X`09.END
$ call unpack GIFDECOMP.MAR;222 1282821934 "FORMAT STREAM_LF"
$!
$ create 'f'
X/*
X`20*`20Define`20substitute`20routines`20for`20the`20fopen/fclose/fread/fgetc
V`20calls`20done`20by
X`20*`20the`20gif`20decoder.`20`20Map`20the`20gif`20file`20to`20memory`20and
V`20access`20via`20page`20faults.
X`20*/
X#include`20stdio
X#include`20atrdef
X#include`20fab
X#include`20fibdef
X#include`20nam
X#include`20iodef
X#include`20secdef
Xtypedef`20struct`20`7B
X`20`20`20`20unsigned`20char`20*pos;`09`09/*`20points`20to`20next`20char`20to
V`20read`20*/
X`20`20`20`20unsigned`20char`20*start;
X`20`20`20`20unsigned`20char`20*end;
X`20`20`20`20int`20chan,`20size;
X`7D`20map_block;
X
Xstatic`20int`20map_block_in_use`20=`200;
Xstatic`20int`20max_mapped`20=`200;`09/*`20largest`20address`20region`20used
V`20*/
Xstatic`20unsigned`20char`20*max_region`20=`20NULL;
Xstatic`20map_block`20giffile;
Xmap_block`20*gif_fopen_fallback();
X/*
X`20*`20Open`20file`20for`20access.`20`20A`20returned`20size`20of`20-1`20indica
Vtes`20error.
X`20*/
Xmap_block`20*gif_fopen`20(`20Filestring`20)
X`20`20`20`20char`20*Filestring;
X`7B
X`20`20`20`20unsigned`20char`20*address,`20*inadr`5B2`5D,`20*retadr`5B2`5D;
X`20`20`20`20int`20size,`20status,`20channel,`20func_code;
X`20`20`20`20int`20sys$assign(),`20sys$qiow(),`20sys$crmpsc(),`20sys$expreg();
X`20`20`20`20short`20int`20iosb`5B4`5D;
X`20`20`20`20struct`20`7B`20long`20length;`20char`20*adr;`20`7D`20desc,`20fib_d
Vesc;
X`20`20`20`20struct`20`7B
X`09unsigned`20char`20rtype,`20rattrib;
X`09unsigned`20short`20int`20`20rsize,`20hiblk`5B2`5D,`20efblk`5B2`5D,`20ffbyte
V;
X`09unsigned`20char`20bktsize,`20vfcsize;
X`09unsigned`20short`20int`20maxrec,`20defext,`20gbc,`20fill`5B4`5D,`20versions
V;
X`20`20`20`20`7D`20fat;`09`09`09/*`20File`20attributes`20block`20(RMS)`20*/
X`20`20`20struct`20FAB`20fab;`09`09/*`20File`20access`20block`20(RMS)`20*/
X`20`20`20struct`20NAM`20nam;`09`09/*`20Name`20block`20(RMS)`20*/
X`20`20`20struct`20fibdef`20fib;`09`09/*`20File`20information`20block`20(XQP)
V`20*/
X`20`20`20struct`20atrdef`20atr`5B2`5D;`09/*`20Read`20attributes`20descriptor
V`20list`20*/
X`20`20`20char`20esa`5B256`5D,`20rsa`5B256`5D;`09/*`20aux`20storage`20for`20nam
V`20block`20*/
X
X`20`20`20/*
X`20`20`20`20*`20Close`20currently`20open`20file`20and`20init`20block`20to`20er
Vror`20status`20(size`20=`20-1).
X`20`20`20`20*/
X`20`20`20if`20(`20map_block_in_use`20)`20(void)`20gif_fclose();
X`20`20`20giffile.start`20=`20giffile.end`20=`20giffile.pos`20=`20"";
X`20`20`20giffile.size`20=`20-1;
X
X`20`20`20`20`20`20/*`20Use`20RMS`20services`20to`20lookup`20fspec,`20initializ
Ve`20FAB`20and`20NAM`20blocks`20*/
X
X`20`20`20`20`20`20fab`20=`20cc$rms_fab;
X`20`20`20`20`20`20fab.fab$l_fna`20=`20Filestring;`20fab.fab$b_fns`20=`20strlen
V`20(`20Filestring`20);
X`20`20`20`20`20`20fab.fab$l_dna`20=`20".GIF";`20fab.fab$b_dns`20=`20strlen`20(
V`20fab.fab$l_dna`20);
X`20`20`20`20`20`20fab.fab$l_fop`20=`20FAB$M_NAM;`09/*`20file`20options`20*/
X`20`20`20`20`20`20fab.fab$l_nam`20=`20`26nam;
X`20`20`20`20`20`20nam`20=`20cc$rms_nam;
X`20`20`20`20`20`20nam.nam$b_ess`20=`20255;
X`20`20`20`20`20`20nam.nam$l_esa`20=`20`26esa;
X`20`20`20`20`20`20nam.nam$b_rss`20=`20255;
X`20`20`20`20`20`20nam.nam$l_rsa`20=`20`26rsa;
X
X`20`20`20`20`20`20/*`20use`20$parse`20and`20$search`20for`20find`20file,`20dev
Vice`20and`20FID`20will`20end`20up`20in
X`20`20`20`20`20`20`20`20`20nam`20`20block`20*/
X
X`20`20`20`20`20`20status`20=`20sys$parse`20(`20`26fab`20);`20`20if`20((status
V`263)`20!=`201)`20return`20`26giffile;
X`20`20`20`20`20`20status`20=`20sys$search`20(`20`26fab`20);`20if`20((status
V`263)`20!=`201)`20return`20`26giffile;
X
X`20`20`20`20`20`20/*`20Define`20descriptor`20to`20assign`20and`20load`20FID
V`20in`20FIB`20*/
X
X`20`20`20`20`20`20desc.length`20=`20nam.nam$t_dvi`5B0`5D;`09`09/*`20length`20*
V/
X`20`20`20`20`20`20desc.adr`20=`20`26nam.nam$t_dvi`5B1`5D;
X`20`20`20`20`20`20func_code`20=`20IO$_ACCESS`20+`20IO$M_ACCESS;`20/*`20actuall
Vy`20open`20the`20file`20*/
X`20`20`20`20`20`20fib.fib$r_fid_overlay.fib$w_fid`5B0`5D`20=`20nam.nam$w_fid
V`5B0`5D;
X`20`20`20`20`20`20fib.fib$r_fid_overlay.fib$w_fid`5B1`5D`20=`20nam.nam$w_fid
V`5B1`5D;
X`20`20`20`20`20`20fib.fib$r_fid_overlay.fib$w_fid`5B2`5D`20=`20nam.nam$w_fid
V`5B2`5D;
X
X`20`20`20/*`20If`20no`20device`20name,`20try`20it`20with`20real`20open`20(DECn
Vet`20operation)`20*/
X
X`20`20`20if`20(`20desc.length`20==`200`20)`20return`20gif_fopen_fallback`20(
V`20Filestring`20);
X
X`20`20`20/*`20build`20atrribute`20descriptor`20list`20for`20returning`20record
V`20attributes`20*/
X
X`20`20`20atr`5B0`5D.atr$w_size`20=`20sizeof(fat);
X`20`20`20atr`5B0`5D.atr$w_type`20=`20ATR$C_RECATTR;
X`20`20`20atr`5B0`5D.atr$l_addr`20=`20`26fat;
X`20`20`20atr`5B1`5D.atr$w_size`20=`200;`20atr`5B1`5D.atr$w_type`20=`200;
X
X`20`20`20/*`20assign`20channel`20to`20disk`20specified`20in`20NAM`20block.`20*
V/
X
X`20`20`20channel`20=`200;
X`20`20`20status`20=`20sys$assign`20(`20`26desc,`20`26channel,`200,`200`20);
X`20`20`20if`20((status`263)`20!=`201)`20return`20`26giffile;
X
X`20`20`20`20/*`20build`20FIB`20and`20access`20(open`20file)`20*/
X`20`20`20fib_desc.length`20=`2010;`20fib_desc.adr`20=`20(char`20*)`20`26fib;
X`20`20`20`20fib.fib$r_acctl_overlay.fib$l_acctl`20=`200;
X`20`20`20`20status`20=`20sys$qiow
X`09(`200,`20channel,`20func_code,`20`26iosb,`200,`200,`20`26fib_desc,`200,`200
V,`200,`20`26atr,`200`20);
X`20`20`20`20if`20(`20(status`261)`20==`201`20)`20status`20=`20iosb`5B0`5D;
X`20`20`20`20if`20(`20(status`261)`20!=`201`20)`20return`20`26giffile;
X
X`20`20`20`20/*`20Determine`20size`20of`20file`20and`20create`20section`20*/
X`20`20`20`20size`20=`20fat.efblk`5B0`5D;
X`20`20`20`20size`20=`20(size<<16)`20`7C`20fat.efblk`5B1`5D;`09/*`20invert`20wo
Vrd`20order`20*/
X`20`20`20`20size`20=`20(size-1)*512`20+`20fat.ffbyte;
X
X`20`20`20`20/*
X`20`20`20`20`20*`20Make`20a`20large`20region`20of`20P0`20space`20to`20hold`20c
Vontents`20of`20file`20plus
X`20`20`20`20`20*`20500`20blocks`20spare.
X`20`20`20`20`20*/
X`20`20`20`20if`20(`20max_mapped`20<=`20size`20)`20`7B
X`09int`20pages;
X`09pages`20=`20((size+511)/512)`20+`20500;
X`20`20`20`20`20`20`20`20status`20=`20sys$expreg`20(`20pages,`20`26retadr,`200,
V`200`20);
X`20`20`20`20`20`20`20`20if`20(`20(status`261)`20!=`201`20)`20return`20`26giffi
Vle;
X`20`20`20`20`20`20`20`20max_region`20=`20retadr`5B0`5D;
X`20`20`20`20`20`20`20`20max_mapped`20=`20(pages*512)`20-`201;
X`20`20`20`20`7D
X
X`20`20`20`20/*`20Map`20file`20into`20address`20space.`20*/
X`20`20`20`20inadr`5B0`5D`20=`20max_region;
X`20`20`20`20inadr`5B1`5D`20=`20`26max_region`5Bsize-1`5D;
X`20`20`20`20status`20=`20sys$crmpsc`20(`20`26inadr,`20`26retadr,`200,`200,`200
V,`200,`200,
X`09`09channel,`20(size+511)/512,`200,`200,`2064`20);
X`20`20`20`20if`20(`20(status`261)`20!=`201`20)`20return`20`26giffile;
X`20`20`20`20address`20=`20retadr`5B0`5D;
X`20`20`20`20map_block_in_use`20=`201;
X
X`20`20`20`20/*
X`20`20`20`20`20*`20Allocate`20structure`20to`20store`20file`20state`20and`20in
Vitialize`20it.
X`20`20`20`20`20*/
X`20`20`20`20giffile.start`20=`20address;
X`20`20`20`20giffile.end`20=`20`26address`5Bsize`5D;
X`20`20`20`20giffile.pos`20=`20address;
X`20`20`20`20giffile.chan`20=`20channel;
X`20`20`20`20giffile.size`20=`20size;
X`20`20`20`20return`20`26giffile;
X`7D
X
Xint`20gif_fclose`20(`20)
X`7B
X`20`20`20`20void`20sys$dassgn();
X`20`20`20`20if`20(`20map_block_in_use`20`26`26`20(giffile.size`20>`200)`20)
V`20sys$purgws`20(`20`26giffile.start`20);
X`20`20`20`20map_block_in_use`20=`200;
X`20`20`20`20sys$dassgn`20(`20giffile.chan`20);
X`20`20`20`20return`200;
X`7D
X
Xint`20gif_fgetc`20(`20)
X`7B
X`20`20`20`20int`20result;
X`20`20`20`20if`20(`20giffile.pos`20>=`20giffile.end`20)`20return`20-1;
X`20`20`20`20result`20=`20*giffile.pos++;
X`20`20`20`20return`20result;
X`7D
X
Xint`20gif_fread`20(`20buffer,`20unit,`20count`20)
X`20`20`20`20unsigned`20char`20*buffer;
X`20`20`20`20unsigned`20int`20unit,`20count;`09/*`20max`20count`20is`2065535
V`20*/
X`7B
X`20`20`20`20unsigned`20char`20*next_pos;
X`20`20`20`20/*`20determin`20number`20of`20charaters`20to`20move`20*/
X`20`20`20`20count`20*=`20unit;
X`20`20`20`20if`20(`20giffile.pos`20>=`20giffile.end`20)`20return`200;
X`20`20`20`20next_pos`20=`20`26giffile.pos`5Bcount`5D;
X`20`20`20`20while`20(`20next_pos`20>=`20giffile.end`20)`20next_pos`20=`20`26gi
Vffile.pos`5B--count`5D;
X
X`20`20`20`20LIB$MOVC3`20(`20`26count,`20giffile.pos,`20buffer`20);
X`20`20`20`20giffile.pos`20=`20next_pos;
X`20`20`20`20return`20count;
X`7D
X
Xunsigned`20char`20*gif_freadm`20(`20unit,`20count`20)
X`20`20`20`20unsigned`20int`20unit,`20count;`09/*`20max`20count`20is`2065535
V`20*/
X`7B
X`20`20`20`20unsigned`20char`20*cur_pos,`20*next_pos;
X`20`20`20`20/*`20determin`20number`20of`20charaters`20to`20move`20*/
X`20`20`20`20count`20*=`20unit;
X`20`20`20`20if`20(`20giffile.pos`20>=`20giffile.end`20)`20return`20NULL;
X`20`20`20`20cur_pos`20=`20giffile.pos;
X`20`20`20`20next_pos`20=`20`26cur_pos`5Bcount`5D;
X`20`20`20`20while`20(`20next_pos`20>=`20giffile.end`20)`20--next_pos;
X`20`20`20`20giffile.pos`20=`20next_pos;
X`20`20`20`20return`20cur_pos;
X`7D
X
Xint`20gif_fget_counted`20(`20map,`20desc`20)
X`20`20`20`20map_block`20*map;
X`20`20`20`20struct`20`7B`20int`20len;`20char`20*addr;`20`7D`20*desc;
X`7B
X`20`20`20`20int`20length;
X`20`20`20`20if`20(`20map->pos`20<`20map->end`20)`20`7B
X`09/*`20Get`20length`20of`20record`20and`20truncate`20to`20EOF`20if`20needed
V`20*/
X`09for`20(`20length`20=`20*map->pos++;`20`26map->pos`5Blength`5D`20>`20map->en
Vd;`20--length);
X
X`09/*`20fill`20out`20descriptor`20and`20update`20position`20pointer`20*/
X`09desc->len`20=`20length;
X`09desc->addr`20=`20map->pos;
X`09map->pos`20=`20`26map->pos`5Blength`5D;
X`09return`201;
X`20`20`20`20`7D
X`20`20`20`20return`202160;
X`7D
X/*
X`20*`20Fallback`20to`20reading`20file`20into`20memory`20with`20C`20RTL`20funct
Vions.
X`20*/
Xmap_block`20*gif_fopen_fallback`20(`20Filestring`20)
X`20`20`20`20char`20*Filestring;
X`7B
X`20`20`20`20unsigned`20char`20*address;
X`20`20`20`20int`20size,`20status,`20channel,`20func_code;
X`20`20`20`20int`20sys$assign();
X`20`20`20`20struct`20`7B`20long`20length;`20char`20*adr;`20`7D`20desc;
X`20`20`20`20FILE`20*fp;
X
X`20`20`20`20/*`20printf("Loading`20network`20file...");`20*/
X
X`20`20`20`20fp`20=`20fopen`20(`20Filestring,`20"rb"`20);
X`20`20`20`20if`20(`20fp`20==`20(FILE`20*)`20NULL`20)
X`09`7B`20/*`20printf("`20could`20not`20open.\n");`20*/`20return`20`26giffile;
V`20`7D
X
X`20`20`20`20/*`20find`20the`20size`20of`20the`20file`20by`20positioning`20to
V`20end.`20*/
X`20`20`20`20fseek(fp,`200L,`202);
X`20`20`20`20size`20=`20ftell(fp);
X`20`20`20`20/*`20printf("`20size`20is`20%d`20bytes.\n",`20size`20);`20*/
X`20`20`20`20fseek(fp,`200L,`200);
X
X`20`20`20`20/*`20determine`20if`20we`20must`20allocat`20new`20block`20or`20can
V`20reuse`20existing`20one`20*/
X`20`20`20`20if`20(`20max_mapped`20<=`20size`20)`20`7B
X`20`20`20`20`20`20`20`20/*
X`20`20`20`20`20`20`20`20`20*`20Make`20a`20large`20region`20of`20P0`20space`20t
Vo`20hold`20contents`20of`20file`20plus
X`20`20`20`20`20`20`20`20`20*`20500`20blocks`20spare.
X`20`20`20`20`20`20`20`20`20*/
X`09int`20pages,`20retadr`5B2`5D,`20sys$expreg();
X`09pages`20=`20((size+511)/512)`20+`20500;
X`20`20`20`20`20`20`20`20status`20=`20sys$expreg`20(`20pages,`20`26retadr,`200,
V`200`20);
X`20`20`20`20`20`20`20`20if`20(`20(status`261)`20!=`201`20)`20return`20`26giffi
Vle;
X`20`20`20`20`20`20`20`20max_region`20=`20retadr`5B0`5D;
X`20`20`20`20`20`20`20`20max_mapped`20=`20(pages*512)`20-`201;
X`20`20`20`20`7D
X`20`20`20`20address`20=`20max_region;
X
X`20`20`20`20/*`20read`20data`20into`20memory`20and`20close`20file`20*/
X`20`20`20`20status`20=`20fread(address,`20size,`201,`20fp`20);
X`20`20`20`20fclose`20(`20fp`20);
X`20`20`20`20if`20(`20status`20!=`201`20)`20return`20`26giffile;`09`09/*`20erro
Vr`20in`20read`20*/
X
X`20`20`20`20map_block_in_use`20=`201;
X
X`20`20`20`20desc.length`20=`203;`20desc.adr`20=`20"NL:";`20channel`20=`200;
X`20`20`20`20status`20=`20sys$assign`20(`20`26desc,`20`26channel,`200,`200`20);
V
X
X`20`20`20`20/*
X`20`20`20`20`20*`20Allocate`20structure`20to`20store`20file`20state`20and`20in
Vitialize`20it.
X`20`20`20`20`20*/
X`20`20`20`20giffile.start`20=`20address;
X`20`20`20`20giffile.end`20=`20`26address`5Bsize`5D;
X`20`20`20`20giffile.pos`20=`20address;
X`20`20`20`20giffile.chan`20=`20channel;
X`20`20`20`20giffile.size`20=`20size;
X`20`20`20`20return`20`26giffile;
X`7D
$ call unpack GIFMAPF.C;222 1026860279 ""
$!
$ create 'f'
X/*
X`20*`20@(#)includes.h`201.8`2089/04/01`09`09Jamie`20Hanrahan`20(simpact!jeh)
X`20*
X`20*`20Version`20simpact-1.8,`20for`20DECUS`20uucp`20(VMS`20portion).`20`20
X`20*`20All`20changes`20and`20additions`20from`20previous`20versions`20(see`20b
Velow)`20are`20in
X`20*`20the`20public`20domain.`20
X`20*
X`20*`20Derived`20from:
X`20*`20
X`20*`20includes.h`201.7`2087/09/29`09Copyright`201987`20Free`20Software`20Foun
Vdation,`20Inc.
X`20*
X`20*`20Copying`20and`20use`20of`20this`20program`20are`20controlled`20by`20the
V`20terms`20of`20the
X`20*`20GNU`20Emacs`20General`20Public`20License.
X`20*
X`20*`20Include`20files`20for`20various`20supported`20systems:
X`20*`20Note`20that`20NAMESIZE`20should`20be`20the`20max`20length`20of`20a`20fi
Vle`20name,`20including
X`20*`20all`20its`20directories,`20drive`20specifiers,`20extensions,`20and`20th
Ve`20like.
X`20*`20E.g.`20on`20a`20Unix`20with`2014-char`20file`20names,`20NAMESIZE`20is
V`20several`20hundred
X`20*`20characters,`20since`20the`2014-char`20names`20can`20be`20nested.
X`20*/
X
X#include`20atrdef
X#include`20ctype
X#include`20descrip
X#include`20devdef
X#include`20dvidef
X#include`20errno
X#include`20fibdef
X#include`20file
X#include`20iodef
X#include`20math
X#include`20setjmp
X#include`20signal
X#include`20ssdef
X#include`20stat
X#include`20stdlib`20
X#include`20stdio
X#include`20string
X#include`20time
X
X#define`20NAMESIZE`20255
X#define`20UUXQT_DOORBELL`20"UUCP_UUXQT_DOORBELL"
X#define`20UUCICO_REQMB`20"UUCP_REQUESTS"
X#define`09UUX_QUEUE`20"UUCP_BATCH_QUEUE"
X#define`09UUX_FILE`20"UUCP_BIN:UUXQT_BATCH.COM"
X#define`20DEBUG_LOG_FILE`20"vmsnet_log:uucico_dbg"
X#define`09UUX_LOG`20"UUCP_LOG:UUXQT.LOG"
X#define`09SYSLOCK_TEMPLATE`20"UUCP_SYS_%s"
X#define`20STATUS_LNT`20"LNM$SYSTEM_TABLE"
X#define`20STATUS_TEMPLATE`20"UUCP_STATUS_%s"
X#define`20MAXLOCK`2032
X#define`20LOGLEN`20255
X#define`20SEQSIZE`204
X#define`20CONTROL_FILE`20`20`20`20`20`20`20`20`20"uucp_cfg:control."`20
X#define`09LOGCLOSE`09/*`20Logfile`20must`20be`20closed;`20VMS`20locks`20it`20w
Vhen`20open`20*/
X#define`20EXEDIR`20`20"uucp_bin:"`09/*`20uuxqt`20executables`20live`20here`20(
Vnot`20used)`20*/
X#define`20NULL_DEVICE`20"NL:"
X#define`20fork`20vfork`09`09/*`20(not`20used)`20*/
X#define`20STATUS`20int`09`09/*`20(not`20used)`20*/
X#define`20postmaster`20"UUCP_POSTMASTER"
X#define`20EXIT_OK`201`09`09/*`20image`20exit`20code`20*/
X#define`20EXIT_ERR`200x10000000`09/*`20image`20exit`20code`20*/
X#define`20ENABLE`201`09`09/*`20for`20$SETAST`20(and`20maybe`20others)`20*/
X#define`20DISABLE`200
X#define`09time_t`09unsigned`09/*`20(not`20used)`20*/
X#define`20remove`20delete`09/*`20Remove`20a`20file`20*/
X#define`20qsort`20pqsort`09/*`20Our`20own`20version`20(not`20used)`20*/
X
X#define`20FOPEN_W_MODE`20"w"`09/*`20mode`20to`20open`20files`20being`20receive
Vd`20*/
X#define`20FOPEN_R_MODE`20"r"`09/*`20`20or`20sent`20*/
X
X#define`20SS_FAILED(status)`20(((status)`261)`20==`200)
X#define`20initdsc(d)`20d.dsc$b_class`20=`20DSC$K_CLASS_S,`20d.dsc$b_dtype`20=
V`20DSC$K_DTYPE_T
X#define`20fillindsc(d,`20s)`20d.dsc$w_length=strlen(s),`20d.dsc$a_pointer=(s)
X#define`20init_itmlst3(e,i,l,c,a,r)`20\
X`09(e`5Bi`5D.len=(l),\
X`09e`5Bi`5D.code=(c),\
X`09e`5Bi`5D.address=(a),\
X`09e`5Bi`5D.retlen=(r))
X
$ call unpack INCLUDES.H;222 288975401 ""
$!
$ create 'f'
X$`20On`20Control_Y`20Then`20GoTo`20EXIT
X$`20On`20Error`20`20`20`20`20Then`20GoTo`20EXIT
X$!========================================================================
X$!
X$!`20`20Name`20`20`20`20`20`20:`20MAKE_JPEG.COM
X$!
X$!`20`20Purpose`20`20`20:`20Compile`20and`20build`20JPEG`20library`20(v3)`20un
Vder`20VMS
X$!`20`20Suggested`20usage:`20called`20by`20@`20`5B-`5DMAKE_XV.COM
X$!
X$!`20`20Created:`20`209-JAN-1992`20`20`20by`20David`20Jones`20(jonesd@kcgl1.en
Vg.ohio-state.edu)
X$!`20`20Updated:`2019-JAN-1992`20`20`20by`20Rick`20Dyson`20`20(dyson@iowasp.ph
Vysics.uiowa.edu)
X$!`20`20Updated:`20`209-MAR-1992`20`20`20by`20Rick`20Dyson`20`20for`20XV`20v2.
V11
X$!`20`20Updated:`2020-MAR-1992`20`20`20by`20Rick`20Dyson`20`20for`20JPEG`20v3
X$!`20`20Updated:`2028-APR-1992`20`20`20by`20Rick`20Dyson`20`20for`20XV`20v2.2a
V
X$!`20`20Updated:`20`206-MAY-1992`20`20`20by`20Rick`20Dyson`20`20for`20XV`20v2.
V21
X$!
X$!========================================================================
X$`20THIS_PATH`20=`20F$Element`20(0,`20"`5D",`20F$Environment`20("PROCEDURE"))
V`20+`20"`5D"
X$`20If`20F$Trnlnm`20("SYS")`20.eqs.`20""`20Then`20Define`20Sys`20Sys$Share
X$!USER`20CUSTOMIZING`20POINT!!!!!
X$!
X$`20CC`20:=`20CC`20/NoList`20/NoDebug`20/Optimize`20/Define`20=`20(TWO_FILE_CO
VMMANDLINE,HAVE_STDC,INCLUDES_ARE_ANSI)
X$!
X$`20sources`20=`20"jcmaster,jcdeflts,jcarith,jccolor,jcexpand,jchuff,jcmcu,"
V`20`20`20`20`20`20+`20-
X`20`20`20`20`20`20`20`20`20`20`20`20"jcpipe,jcsample,jfwddct,jwrjfif,jrdgif,jr
Vdppm,jrdrle,"`20`20`20`20`20`20`20`20`20+`20-
X`20`20`20`20`20`20`20`20`20`20`20`20"jrdtarga,jdmaster,jddeflts,jbsmooth,jdari
Vth,jdcolor,jdhuff,"`20`20`20+`20-
X`20`20`20`20`20`20`20`20`20`20`20`20"jdmcu,jdpipe,jdsample,jquant1,jquant2,jre
Vvdct,jrdjfif,jwrgif,"`20+`20-
X`20`20`20`20`20`20`20`20`20`20`20`20"jwrppm,jwrrle,jwrtarga,jutils,jerror,jmem
Vmgr,jmemsys"
X$!
X$!`20`20search`20for`20missing`20object`20files.
X$!
X$`20sndx`20=`200
X$NEXT_SOURCE:
X$`20`20`20sfile`20=`20F$Element`20(sndx,`20",",`20sources)
X$`20`20`20sndx`20=`20sndx`20+`201
X$`20`20`20If`20sfile`20.eqs.`20","`20Then`20GoTo`20SOURCES_DONE
X$`20`20`20ofile`20=`20F$Parse`20(".OBJ",`20sfile)
X$`20`20`20If`20F$Search`20(ofile)`20.nes.`20""`20Then`20GoTo`20NEXT_SOURCE
X$`20`20`20Write`20Sys$Output`20"Compiling`20",`20sfile,`20".c`20..."
X$`20`20`20CC`20'sfile'.c
X$`20`20`20If`20F$Search`20(ofile)`20.nes.`20""`20Then`20new_objects`20=`20new_
Vobjects`20+`20","`20+`20sfile
X$`20`20`20GoTo`20NEXT_SOURCE
X$!
X$SOURCES_DONE:
X$`20`20`20If`20new_objects`20.eqs.`20""`20.and.`20p1`20.eqs.`20""`20Then`20GoT
Vo`20EXIT
X$`20`20`20new_objects`20=`20new_objects`20-`20","
X$!
X$`20`20`20Write`20Sys$Output`20"Building`20JPEGLIB.OLB..."
X$`20`20`20If`20"''F$Search`20("JPEGLIB.OLB")'"`20.eqs.`20""`20Then`20Library
V`20/Create`20JPEGLIB.OLB
X$`20`20`20Library`20/Replace`20JPEGLIB.OLB`20*.OBJ
X$`20`20`20GoTo`20Exit
X$EXIT:
X$`20`20`20VERIFY`20=`20F$Verify`20(VERIFY)
X$`20`20`20Exit
$ call unpack MAKE_JPEG.COM;222 1331191611 ""
$!
$ create 'f'
X$`20On`20Control_Y`20Then`20GoTo`20EXIT
X$`20On`20Error`20`20`20`20`20Then`20GoTo`20EXIT
X$!========================================================================
X$!
X$!`20`20Name`20`20`20`20`20`20:`20MAKE_TIFF.COM
X$!
X$!`20`20Purpose`20`20`20:`20Compile`20and`20build`20TIFF`20library`20under`20V
VMS
X$!`20`20Suggested`20usage:`20called`20by`20@`20`5B-`5DMAKE_XV.COM
X$!
X$!`20`20Created:`20`209-JAN-1992`20`20`20by`20David`20Jones`20(jonesd@kcgl1.en
Vg.ohio-state.edu)
X$!`20`20Updated:`2019-JAN-1992`20`20`20by`20Rick`20Dyson`20`20(dyson@iowasp.ph
Vysics.uiowa.edu)
X$!`20`20Updated:`20`209-MAR-1992`20`20`20by`20Rick`20Dyson`20`20for`20xv`20v2.
V11
X$!`20`20Updated:`20`209-MAR-1992`20`20`20by`20Rick`20Dyson`20`20for`20xv`20v2.
V20a`20and`20TIFF`20v3.0
X$!`20`20Updated:`20`206-MAY-1992`20`20`20by`20Rick`20Dyson`20`20for`20xv`20v2.
V21`20and`20TIFF`20v3.0
X$!
X$!========================================================================
X$`20THIS_PATH`20=`20F$Element`20(0,`20"`5D",`20F$Environment`20("PROCEDURE"))
V`20+`20"`5D"
X$`20If`20F$Trnlnm`20("SYS")`20.eqs.`20""`20Then`20Define`20Sys`20Sys$Share
X$!USER`20CUSTOMIZING`20POINT!!!!!
X$!
X$`20CC`20:=`20CC`20/NoList`20/NoDebug`20/Optimize`20/Define`20=`20("BSDTYPES=1
V",__STDC__,COLORIMETRY_SUPPORT,JPEG_SUPPORT,YCBCR_SUPPORT,CMYK_SUPPORT,LZW_SUP
VPORT)
X$!
X$`20sources`20=`20"tif_fax3,tif_fax4,tif_aux,tif_ccittrle,tif_close,tif_compat
V,"`20+`20-
X`20`20`20`20`20`20`20`20`20`20`20`20"tif_dir,tif_dirinfo,tif_dirread,tif_dirwr
Vite,tif_dumpmode,"`20`20`20+`20-
X`20`20`20`20`20`20`20`20`20`20`20`20"tif_error,tif_getimage,tif_jpeg,tif_flush
V,tif_open,"`20`20`20`20`20`20`20`20`20`20+`20-
X`20`20`20`20`20`20`20`20`20`20`20`20"tif_packbits,tif_print,tif_read,tif_strip
V,tif_swab,"`20`20`20`20`20`20`20`20`20`20+`20-
X`20`20`20`20`20`20`20`20`20`20`20`20"tif_thunder,tif_tile,tif_warning,tif_writ
Ve,tif_machdep,"`20`20`20`20`20`20+`20-
X`20`20`20`20`20`20`20`20`20`20`20`20"tif_version"
X$!
X$`20compress_sources`20=`20"tif_compress,tif_lzw"
X$!
X$`20new_objects`20=`20""
X$!
X$!`20`20search`20for`20missing`20object`20files.
X$!
X$`20If`20"''F$Search`20("g3states.h")'"`20.eqs.`20""
X$`20`20`20Then
X$`20`20`20`20`20`20`20CC`20`5B-`5Dargproc.c
X$`20`20`20`20`20`20`20CC`20/Define`20=`20("USE_PROTOTYPES=1",`20"USE_VARARGS=0
V")`20mkg3states.c
X$`20`20`20`20`20`20`20Link`20/Trace`20/NoMap`20mkg3states,argproc,Sys$Disk:
V`5B-`5DOPTIONS.OPT/Option
X$`20`20`20`20`20`20`20Mcr`20Sys$Disk:`5B`5Dmkg3states.exe`20>g3states.h
X$`20EndIf
X$!
X$`20sndx`20=`200
X$NEXT_SOURCE:
X$`20`20`20sfile`20=`20F$Element`20(sndx,`20",",`20sources)
X$`20`20`20sndx`20=`20sndx`20+`201
X$`20`20`20If`20sfile`20.eqs.`20","`20Then`20GoTo`20NEXT_STEP
X$`20`20`20ofile`20=`20F$Parse`20(".OBJ",`20sfile)
X$`20`20`20If`20F$Search`20(ofile)`20.nes.`20""`20Then`20GoTo`20NEXT_SOURCE
X$`20`20`20Write`20Sys$Output`20"Compiling`20",`20sfile,`20".c`20..."
X$`20`20`20CC`20'sfile'.c
X$`20`20`20If`20F$Search`20(ofile)`20.nes.`20""`20Then`20new_objects`20=`20new_
Vobjects`20+`20","`20+`20sfile
X$`20`20`20GoTo`20NEXT_SOURCE
X$!
X$NEXT_STEP:
X$`20`20`20sndx`20=`200
X$NEXT_COMPRESS:
X$`20`20`20sfile`20=`20F$Element`20(sndx,`20",",`20compress_sources)
X$`20`20`20sndx`20=`20sndx`20+`201
X$`20`20`20If`20sfile`20.eqs.`20","`20Then`20GoTo`20SOURCES_DONE
X$`20`20`20ofile`20=`20F$Parse`20(".OBJ",`20sfile)
X$`20`20`20If`20F$Search`20(ofile)`20.nes.`20""`20Then`20GoTo`20NEXT_COMPRESS
X$`20`20`20Write`20Sys$Output`20"Compiling`20",`20sfile,`20".c`20..."
X$`20`20`20CC`20'sfile'.c
X$`20`20`20If`20F$Search`20(ofile)`20.nes.`20""`20Then`20new_objects`20=`20new_
Vobjects`20+`20","`20+`20sfile
X$`20`20`20GoTo`20NEXT_COMPRESS
X$!
X$SOURCES_DONE:
X$`20`20`20If`20new_objects`20.eqs.`20""`20.and.`20p1`20.eqs.`20""`20Then`20GoT
Vo`20EXIT
X$`20`20`20new_objects`20=`20new_objects`20-`20","
X$!
X$`20`20`20Write`20Sys$Output`20"Building`20LIBTIFF.OLB..."
X$`20`20`20If`20"''F$Search`20("libtiff.olb")'"`20.eqs.`20""`20Then`20Library
V`20/Create`20libtiff.olb
X$`20`20`20Library`20/Replace`20libtiff.olb`20tif_fax3,tif_fax4,tif_aux,tif_cci
Vttrle,tif_close,tif_compat,tif_compress,tif_dir,`20-
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
V`20`20`20`20`20`20`20`20tif_dirinfo,tif_dirread,tif_dirwrite,tif_dumpmode,tif_
Verror,tif_getimage,tif_jpeg,`20-
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
V`20`20`20`20`20`20`20`20tif_flush,tif_lzw,tif_open,tif_packbits,tif_print,tif_
Vread,tif_strip,tif_swab,tif_thunder,`20-
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
V`20`20`20`20`20`20`20`20tif_tile,tif_warning,tif_write,tif_version,tif_machdep
V
X$`20`20`20GoTo`20Exit
X$EXIT:
X$`20`20`20Exit
$ call unpack MAKE_TIFF.COM;222 85095814 ""
$!
$ create 'f'
X$`20If`20F$Mode`20()`20.eqs.`20"INTERACTIVE"
X$`20`20`20Then
X$`20`20`20`20`20`20`20VERIFY`20=`20F$Verify`20(0)
X$`20`20`20Else
X$`20`20`20`20`20`20`20VERIFY`20=`20F$Verify`20(1)
X$`20EndIf
X$`20On`20Control_Y`20Then`20GoTo`20EXIT
X$`20On`20Error`20`20`20`20`20Then`20GoTo`20EXIT
X$!========================================================================
X$!
X$!`20`20Name`20`20`20`20`20`20:`20MAKE_XV.COM
X$!
X$!`20`20Purpose`20`20`20:`20Compile`20and`20Link`20XV`20(v2.21)`20under`20VMS
X$!`20`20Suggested`20usage:`20@`20MAKE_XV.COM
X$!`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20OR
X$!`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20Submit`20/NoPrint
V`20/Log`20=`20Sys$Disk:`5B`5D`20/Notify`20MAKE-XV.COM
X$!
X$!`20`20Created:`20`209-JAN-1992`20`20`20by`20David`20Jones`20(jonesd@kcgl1.en
Vg.ohio-state.edu)
X$!`20`20Updated:`2019-JAN-1992`20`20`20by`20Rick`20Dyson`20`20(dyson@iowasp.ph
Vysics.uiowa.edu)
X$!`20`20Updated:`20`209-MAR-1992`20`20`20by`20Rick`20Dyson`20`20for`20xv`20v2.
V11
X$!`20`20Updated:`2028-APR-1992`20`20`20by`20Rick`20Dyson`20`20for`20xv`20v2.20
Va
X$!`20`20Updated:`2030-APR-1992`20`20`20by`20Rick`20Dyson`20`20for`20xv`20v2.21
V
X$!
X$!========================================================================
X$`20THIS_PATH`20=`20F$Element`20(0,`20"`5D",`20F$Environment`20("PROCEDURE"))
V`20+`20"`5D"
X$`20Set`20Default`20'THIS_PATH'
X$`20If`20F$Trnlnm`20("X11")`20.eqs.`20""`20Then`20Define`20X11`20DECW$Include
X$`20If`20F$Trnlnm`20("SYS")`20.eqs.`20""`20Then`20Define`20Sys`20Sys$Share
X$!USER`20CUSTOMIZING`20POINT!!!!!
X$!
X$!`20`20If`20you`20want`20to`20use`20the`20LZW`20decompression`20programs`20av
Vailable`20from`20the`20
X$!`20`20DECUS`20libraries,`20you`20will`20need`20to`20add`20the`20",HAVE_LZW"
V`20string`20to`20the
X$!`20`20list`20of`20define`20statements`20in`20the`20following`20compiler`20de
Vfintion`20line.
X$!`20`20The`20default`20will`20be`20to`20use`20the`20supplied`20VMS`20version
V`20of`20the`20Unix-like
X$!`20`20decompression`20program.`20`20much`20better!!`20;)
X$!
X$`20CC`20:=`20CC`20/NoList`20/NoDebug`20/Optimize`20/Define`20=`20(VMS,HAVE_JP
VEG,HAVE_STDC,INCLUDES_ARE_ANSI,HAVE_PDS,HAVE_TIFF)`20/Include`20=`20(`5B`5D,
V`5B.JPEG`5D,`5B.TIFF`5D)
X$!
X$`20sources`20=`20"xv,xvmisc,xvevent,xvcolor,xvimage,pseudo_root,xvroot,vms,xv
Vdir,"+`20-
X`09"xvgam,vmsreaddir,xvbutt,xvdial,xvpds,xv24to8,xvsmooth,xvctrl,"+`20-
X`09"xvdflt,xvgif,xvgifwr,gifmapf,xvgraf,xvps,xvinfo,xvscrl,xvpm,"`20+`20-
X`09"xvpbm,xvpopup,xvsunras,xvxbm,xvjpeg,argproc,xvtiff,xvtiffwr,"`20+`20-
X`20`20`20`20`20`20`20`20"xvgrab,xvrle"
X$!
X$`20If`20F$Search`20("bitmaps.h")`20.eqs.`20""`20Then`20GoSub`20COPY_BITMAPS
X$`20new_objects`20=`20""
X$`20If`20F$Search`20("`5B.jpeg`5Djpeglib.olb")`20.eqs.`20""
X$`20`20`20Then
X$`20`20`20`20`20`20`20default`20=`20F$Environment`20("Default")
X$`20`20`20`20`20`20`20Set`20Default`20`5B.jpeg`5D
X$`20`20`20`20`20`20`20Write`20Sys$Output`20"Building`20JPEG`20library..."
X$`20`20`20`20`20`20`20@`5B-`5Dmake_jpeg.com
X$`20`20`20`20`20`20`20Set`20Default`20'default'
X$`20`20`20`20`20`20`20new_objects`20=`20",`5B.jpeg`5Djpeglib/Library"
X$`20EndIf
X$`20If`20F$Search`20("`5B.tiff`5Dlibtiff.olb")`20.eqs.`20""
X$`20`20`20Then
X$`20`20`20`20`20`20`20default`20=`20F$Environment`20("Default")
X$`20`20`20`20`20`20`20Set`20Default`20`5B.tiff`5D
X$`20`20`20`20`20`20`20Write`20Sys$Output`20"Building`20TIFF`20library..."
X$`20`20`20`20`20`20`20@`5B-`5Dmake_tiff.com
X$`20`20`20`20`20`20`20Set`20Default`20'default'
X$`20`20`20`20`20`20`20new_objects`20=`20",`5B.tiff`5Dlibtiff/Library"
X$`20EndIf
X$!
X$`20If`20F$Search`20("gifdecomp.obj")`20.eqs.`20""
X$`20`20`20Then
X$`20`20`20`20`20`20`20Write`20Sys$Output`20"Assembling`20GIFDECOMP.MAR
X$`20`20`20`20`20`20`20Macro`20gifdecomp
X$`20`20`20`20`20`20`20new_objects`20=`20",gifdecomp"
X$`20EndIf
X$!
X$!`20`20search`20for`20missing`20object`20files.
X$!
X$`20sndx`20=`200
X$NEXT_SOURCE:
X$`20`20`20sfile`20=`20F$Element`20(sndx,`20",",`20sources)
X$`20`20`20sndx`20=`20sndx`20+`201
X$`20`20`20If`20sfile`20.eqs.`20","`20Then`20GoTo`20SOURCES_DONE
X$`20`20`20ofile`20=`20F$Parse`20(".OBJ",`20sfile)
X$`20`20`20If`20F$Search`20(ofile)`20.nes.`20""`20Then`20GoTo`20NEXT_SOURCE
X$`20`20`20Write`20Sys$Output`20"Compiling`20",`20sfile,`20".c`20..."
X$`20`20`20CC`20'sfile'.c
X$`20`20`20If`20F$Search`20(ofile)`20.nes.`20""`20Then`20new_objects`20=`20new_
Vobjects`20+`20","`20+`20sfile
X$`20`20`20GoTo`20NEXT_SOURCE
X$!
X$SOURCES_DONE:
X$`20`20`20If`20new_objects`20.eqs.`20""`20.and.`20p1`20.eqs.`20""`20Then`20GoT
Vo`20EXIT
X$`20`20`20new_objects`20=`20new_objects`20-`20","
X$!
X$`20`20`20Write`20Sys$Output`20"Building`20decompress.c`20..."
X$`20`20`20CC`20decompress.c
X$`20`20`20Link`20/NoMap`20/Executable`20=`20decompress.exe`20decompress,option
Vs/Option
X$`20`20`20Write`20Sys$Output`20"Building`20vdcomp.c`20..."
X$`20`20`20CC`20vdcomp.c
X$`20`20`20Link`20/NoMap`20/Executable`20=`20vdcomp.exe`20vdcomp,options/Option
V
X$`20`20`20Write`20Sys$Output`20"Building`20bggen.c`20..."
X$`20`20`20CC`20bggen.c
X$`20`20`20Link`20/NoMap`20/Executable`20=`20bggen.exe`20bggen,argproc,options/
VOption
X$`20`20`20Write`20Sys$Output`20"Linking`20new`20XV`20image..."
X$`20`20`20Link`20/NoMap`20/Executable`20=`20xv.exe`20Sys$Input/Option`20'p1'
Xxv,xvmisc,xvevent,xvcolor,xvimage,pseudo_root,xvroot,vms,argproc,xvdir
Xxvgam,vmsreaddir,xvbutt,xvdial,xvpds,xv24to8,xvsmooth,xvctrl,xvdflt,xvgif
Xxvgifwr,gifmapf,gifdecomp,xvgraf,xvps,xvinfo,xvscrl,xvpm,xvpbm,xvpopup
Xxvsunras,xvxbm,xvjpeg,xvtiff,xvtiffwr,xvgrab,xvrle
X`5B.jpeg`5Djpeglib/lib
X`5B.tiff`5Dlibtiff/lib
XSys$Share:DECW$XlibShr/Share,DECW$DWTLibShr/Share,VAXCRTL/Share
X$`20`20`20If`20"''F$Search`20("xv.hlb")'"`20.eqs.`20""`20Then`20Library`20/Cre
Vate`20/Help`20xv.hlb
X$`20`20`20Library`20/Replace`20/Help`20xv.hlb`20xv.hlp
X$`20`20`20GoTo`20Exit
X$!
X$!`20subroutine`20to`20generate`20new`20bitmaps.h`20file.
X$!
X$COPY_BITMAPS:
X$`20`20`20Create`20bitmaps.h
X$`20`20`20bmlist`20=`20"grasp,penn,down,down1,up,up1,scrlgray,gray50,gray25,i_
Vfifo,"`20+`20-
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
Vb_off,rb_on,rb_off1,"`20`20+`20-
X`20`20`20`20`20`20`20`20`20`20`20`20`20"rb_on1,fc_left,fc_leftm,fc_mid,fc_midm
V,fc_right,fc_rightm,"`20`20+`20-
X`20`20`20`20`20`20`20`20`20`20`20`20`20"fc_left1,fc_left1m,fc_right1,fc_right1
Vm,icon,dial_cw1,"`20`20`20`20`20`20+`20-
X`20`20`20`20`20`20`20`20`20`20`20`20`20"dial_cw2,dial_ccw1,dial_ccw2,iconmask,
Vgf1_addh,gf1_delh,"`20`20`20`20+`20-
X`20`20`20`20`20`20`20`20`20`20`20`20`20"gf1_line,gf1_rst,gf1_spln,gf1_gamma,h_
Vrotl,h_rotr,h_sinc,"`20`20`20+`20-
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_
Von1,h_sat,h_desat,"`20`20`20`20+`20-
X`20`20`20`20`20`20`20`20`20`20`20`20`20"root_weave,cboard50,mb_chk,fliph,flipv
V"
X$!
X$`20`20`20ndx`20=`200
X$APPEND_NEXT:
X$`20`20`20name`20=`20F$Element`20(ndx,`20",",`20bmlist)
X$`20`20`20If`20name`20.eqs.`20","`20Then`20Return
X$`20`20`20ndx`20=`20ndx`20+`201
X$`20`20`20Append`20`5B.bitmaps`5D'name'.`20`5B`5Dbitmaps.h
X$`20`20`20GoTo`20APPEND_NEXT
X$!
X$EXIT:
X$`20`20`20VERIFY`20=`20F$Verify`20(VERIFY)
X$`20`20`20Exit
$ call unpack MAKE_XV.COM;222 1377250170 ""
$!
$ create 'f'
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
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
V`20`20`20`20`20`20`20`20`20`201-OCT-1992
X`20`20`20`20
X`20`20`20`20`20`20`20`20Release`20notes`20for`20VMS`20`20port`20`20of`20`20XV
V`20`202.21`20(originally`20released
X`20`20`20`2029-APR-1992`20but`20the`20port`20is`20`20based`20`20on`20the`20xv-
V2.21.tar.Z`20file`20from
X`20`20`20`20export.lcs.mit.edu`20`20dated`20`2025-Sep-1992).`20`20`20The`20ori
Vginal`20`20port`20`20was
X`20`20`20`20mostly`20`20done`20by`20David`20Jones`20(jonesd@kcgl1.eng.ohio-sta
Vte.edu)`20with
X`20`20`20`20some`20contributions`20`20by`20Rick`20Dyson`20(Dyson@IowaSP.Physic
Vs.UIowa.EDU)
X`20`20`20`20using`20the`20VMS`20VAXC`20compiler`20and`20DECWindow`20libraries.
V
X
XInstallation`20instructions`20are`20at`20the`20bottom`20of`20this`20file.`20PL
VEASE`20READ!
X
XCommand`20procedures:
X
X`20`20`20`20XV_FIXUP_VMS.COM
X`20`20`20`20`20`20`20`20This`20procedure`20applies`20the`20source`20file`20
V`20modifications`20`20(*.DIF)
X`20`20`20`20`20`20`20`20to`20the`20original`20XV`20and`20TIFF`20files`20`20of
V`20`20the`20XV`20v2.21`20release`20as
X`20`20`20`20`20`20`20`20extracted`20`20from`20`20the`20`20tar`20`20file.`20
V`20`20`20It`20assumes`20`20the`20`20directory
X`20`20`20`20`20`20`20`20hierarchy`20`20on`20`20the`20tar`20archive`20is`20pres
Verved`20(i.e.,`20`5B.bitmaps`5D,
X`20`20`20`20`20`20`20`20`5B.jpeg`5D,`20`5B.tiff`5D`20sub-directories).`20`20
V`20`20NOTE:`20`20`20`20Only`20`20apply`20the
X`20`20`20`20`20`20`20`20patch`20once!!!
X
X`20`20`20`20MAKE_*.COM
X`20`20`20`20`20`20`20`20This`20`20command`20`20procedure`20`20is`20a`20"poor-p
Verson's"`20version`20of`20MMS.
X`20`20`20`20`20`20`20`20PLEASE`20NOTE:`20`20You`20should`20look`20through`20th
Ve`20command`20procedure`20to
X`20`20`20`20`20`20`20`20see`20`20if`20any`20customizing`20is`20necessary`20
V`20before`20executing`20it!`20`20If
X`20`20`20`20`20`20`20`20you`20have`20MMS`20you`20WILL`20want`20to`20use`20that
V`20method`20instead.
X
X`20`20`20`20SETUP.COM
X`20`20`20`20`20`20`20`20A`20`20simple`20`20command`20procedure`20to`20setup
V`20`20the`20`20final`20`20compiled`20XV
X`20`20`20`20`20`20`20`20package`20of`20programs.`20`20It`20`20can`20`20be`20
V`20executed`20`20by`20itself`20or`20used
X`20`20`20`20`20`20`20`20with`20many`20of`20the`20commonly`20available`20`20SET
VUP`20packages`20(i.e.,`20the
X`20`20`20`20`20`20`20`20FERMILAB`20`20version).`20`20`20If`20it`20is`20kept
V`20`20in`20the`20same`20directory`20`20as
X`20`20`20`20`20`20`20`20the`20binaries,`20it`20will`20be`20able`20`20to`20`20g
Vet`20`20the`20`20necessary`20symbols
X`20`20`20`20`20`20`20`20setup`20anywhere`20the`20directory`20structure`20is
V`20located`20`20WITHOUT`20the
X`20`20`20`20`20`20`20`20need`20`20to`20`20edit`20the`20command`20procedure.
V`20`20Move`20`20them`20`20all`20`20around
X`20`20`20`20`20`20`20`20together`20and`20you`20will`20be`20OK.
X
XMake`20files:
X
X`20`20`20`20DESCRIP.MMS`20(in`20the`20top`20level`20directory)
X`20`20`20`20`20`20`20`20This`20is`20a`20MMS`20`20description`20`20file`20for
V`20the`20VMS`20MMS`20utility.`20`20You
X`20`20`20`20`20`20`20`20should`20`20edit`20`20the`20file`20first`20`20to`20
V`20make`20`20sure`20`20the`20`20customizing
X`20`20`20`20`20`20`20`20features`20`20are`20`20appropriate`20`20for`20`20your
V`20system.`20`20`20To`20`20produce`20`20a
X`20`20`20`20`20`20`20`20working`20version`20of`20XV,`20BGGEN,`20DECOMPRESS,
V`20and`20VDCOMP`20just`20type
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
V`20`20`20`20`20`20`20`20`20`20`20`20`20MMS
X`20`20`20`20`20`20`20`20at`20`20the`20`20DCL`20command`20prompt.`20`20For`20us
Vers`20without`20MMS`20`20you`20`20will
X`20`20`20`20`20`20`20`20need`20to`20use`20MAKE_XV.COM`20instead.
X
X`20`20`20`20MAKEFILE.MMS`20(in`20the`20JPEG`20sub-directory)
X`20`20`20`20`20`20`20`20This`20is`20a`20MMS`20description`20file`20for`20the
V`20VMS`20`20MMS`20`20utility.`20`20You
X`20`20`20`20`20`20`20`20should`20`20edit`20`20the`20`20file`20`20first`20`20to
V`20`20make`20`20sure`20the`20customizing
X`20`20`20`20`20`20`20`20features`20are`20`20appropriate`20`20for`20`20your`20
V`20system.`20`20`20`20To`20`20produce`20a
X`20`20`20`20`20`20`20`20working`20version`20of`20`20the`20`20JPEG`20`20library
V`20`20type`20`20MMS`20`20at`20`20the`20DCL
X`20`20`20`20`20`20`20`20command`20prompt.`20`20For`20`20users`20`20without`20
V`20MMS`20you`20will`20need`20to`20use
X`20`20`20`20`20`20`20`20MAKE_JPEG.COM`20instead.`20`20Note`20that`20the`20top
V`20level`20MMS`20`20file`20will
X`20`20`20`20`20`20`20`20automagically`20`20build`20`20the`20`20JPEG`20`20libra
Vry`20`20if`20it`20doesn't`20exist.
X`20`20`20`20`20`20`20`20There`20is`20no`20need`20to`20do`20it`20manually.
X
X`20`20`20`20MAKEFILE.VMS`20(in`20the`20TIFF`20sub-directory)
X`20`20`20`20`20`20`20`20This`20is`20a`20MMS`20description`20file`20for`20the
V`20VMS`20`20MMS`20`20utility.`20`20You
X`20`20`20`20`20`20`20`20should`20`20edit`20`20the`20`20file`20`20first`20`20to
V`20`20make`20`20sure`20the`20customizing
X`20`20`20`20`20`20`20`20features`20are`20`20appropriate`20`20for`20`20your`20
V`20system.`20`20`20`20To`20`20produce`20a
X`20`20`20`20`20`20`20`20working`20version`20`20of`20`20the`20`20LIBTIFF`20`20l
Vibrary`20type`20MMS`20at`20the`20DCL
X`20`20`20`20`20`20`20`20command`20prompt.`20`20`20For`20`20users`20`20without
V`20MMS`20you`20will`20need`20to`20use
X`20`20`20`20`20`20`20`20MAKE_TIFF.COM`20instead.`20`20Note`20`20that`20the`20t
Vop`20level`20MMS`20file`20will
X`20`20`20`20`20`20`20`20automagically`20`20build`20the`20JPEG`20library`20`20i
Vf`20`20it`20`20doesn't`20`20exist.
X`20`20`20`20`20`20`20`20There`20is`20no`20need`20to`20do`20it`20manually.
X
XVMS`20specific`20`20source`20`20files`20`20are`20`20`20all`20`20stored`20`20in
V`20`20the`20`20`5B.UNSUPT.VMS`5D
X`20`20`20`20sub-directory.`20`20John`20Bradley`20did`20`20not`20`20update`20
V`20them`20`20for`20v2.21,`20so
X`20`20`20`20some`20will`20need`20to`20be`20replaced.
X
X`20`20`20`20VMS.C`20`20`20`20`20-`20Miscellaneous`20`20routines`20`20`20to`20
V`20support`20`20UNIX`20`20functions
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20missing`20from`20the`20`20C
V`20`20run-time`20`20library.`20`20`20`20Also`20define
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20do_vms_wildcard()`20function
V`20used`20to`20`20fixup`20the`20argument
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20vector.
X
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20Private`20version`20`20of`20qs
Vort`20added,`20Kevin`20Oberman`20claimed
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20the`20`20VAXCRTL`20`20qsort
V`20`20`20bug`20`20(well`20`20known)`20`20was`20`20causing
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20aberrant`20images.`20`20There
V`20are`20also`20remnants`20of`20a`20aborted
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20attempt`20at`20adding`20uncomp
Vress`20support.
X
X`20`20`20`20VMSREADDIR.C`20`20-`20Substitute`20`20`20routines`20`20for`20`20UN
VIX`20`20directory`20`20scan
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20routines`20`20(opendir),`20
V`20perform`20`20equivalent`20`20VMS`20`20system
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20calls.
X
X`20`20`20`20DIRENT.H`20`20-`20Include`20file`20`20to`20`20use`20`20in`20conjun
Vction`20with`20routines`20in
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20VMSREADDIR.C.
X
X`20`20`20`20PSEUDO_ROOT.C`20-`20`20Finds`20virtual`20root`20`20window`20`20for
V`20DECWindows`20window
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20manager.
X
X`20`20`20`20DECOMPRESS.C`20-`20A`20decompression`20program`20`20for`20`20Unix-
Vstyle`20`20.Z`20`20files
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20which`20can`20be`20used`20by
V`20XV`20for`20automatic`20decompression`20of
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20.Z`20files.`20`20It`20can`20al
Vso`20`20be`20`20used`20`20at`20`20the`20DCL`20level`20to
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20decompress`20files`20by`20hand
V.
X
X`20`20`20`20OPTIONS.OPT`20-`20A`20linker`20options`20file`20for`20XV.
X`20`20`20`20
XNew`20Versions`20of`20the`20OLD`20VMS`20files`20provided`20with`20this`20VMS
V`20patch`20kit:
X
X`20`20`20`20GIFMAPF.C`20-`20VMS`20optimized`20GIF`20file`20`20access`20routine
Vs,`20maps`20the`20file
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20to`20virtual`20memory`20and
V`20treats`20it`20as`20an`20array.
X
X`20`20`20`20GIFDECOMP.MAR`20-`20`20Optimized`20`20GIF`20decompressor`20routine
Vs,`20written`20`20in
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20MACRO.
X
X`20`20`20`20ARGPROC.C`20`20-`20`20getredirection()`20routine`20`20to`20`20impl
Vement`20`20the`20`20piping
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20and/or`20redirection`20o
Vf`20I/O.`20`20Makes`20`20VMS`20command`20lines
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20work`20like`20the`20Unix
V`20lines.
X
X`20`20`20`20INCLUDES.H`20-`20Header`20file`20for`20ARGPROC.C`20code.
X
XDocumentation`20files:
X
X`20`20`20`20XV.HLP`20-`20A`20brief`20VMS`20Help`20file`20written`20from`20the
V`20man`20page.
X
X`20`20`20`20XV.TEX`20-`20A`20LaTeX`20formated`20version`20of`20the`20Unix`20ma
Vn`20page`20(for`20v2.21).
X
+-+-+-+-+-+-+-+-  END  OF PART 2 +-+-+-+-+-+-+-+-
Technical Details
Message-ID: <8981988@MVB.SAIC.COM>
Path: arc1-ca.pugleaf.net!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

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!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
Newsgroups: vmsnet.sources
From: dyson@iowasp.physics.uiowa.edu (Rick Dyson)
Subject: xv-2-21a changes to run on VMS, part 02/08
Date: Wed, 04 Nov 1992 21:12:31 GMT
Message-ID: <8981988@MVB.SAIC.COM>
Lines: 1166
Organization: Department of Physics and Astronomy, University of Iowa
Approved: Mark.Berryman@Mvb.Saic.Com