Two bugs in my JCL-parsing code:
- B was getting clobbered at some point in the loop, so rfn"rfn only
stored the first filename in the right place.
- The device's finish routine wasn't being called. For the hargld
backend, this meant that the last few lines of each file weren't always
being written to disk.
This is used by TJ6 for superscripts and subscripts. It worked fine for
positive offsets, but "addi a,(x)" didn't do the right thing when the
offset x was negative (because it double-indirects).
The XGP documentation says that the baseline adjustment sticks until the
font is changed. Looking at SYSEN2; XGP 31 (and SAIL's XGPSER), it is
also reset at the start of each line. TJ6 relies on this behaviour.
Since VERSA scans each line twice (once to compute the line height, once
to draw the characters), and baseline adjustment directives will be
interpreted on both passes, we need to reset the adjustment at the start
of both passes.
The underline offset in XGP files is positive downwards (as opposed to
the baseline offset, which is positive upwards!), and the ending Y
position of the rectangle should be computed from the line width, not
just the current position.
The default line height was 0, so empty lines came out as zero height.
Use the height of the current font instead.
If the last line of a page ended with the ^L, linfin was never called,
so its height was computed as 0 and it overlapped the previous line.
Ensure linfin always gets run in this case.
To use this, add (CMDS) to the sname search list. Then make a
translation from DSK: (CMDS); TS * to DSK: SYS3; TS CMD. Add a file
<HSNAME>; <XUNAME> (CMDS) where each subroutine is one line for the
subroutine name, followed by a body of commands terminated by a ^_
control character.
This means that ITS's version of D can read it correctly. The difference
is that version 26+ files are expected to have one more ASCIZ string in
the header of the file (the board type); an equivalent fix would be to
remove the first 0 word.
This reworks VERSA's test mode so that you can specify an arbitrary list
of filenames as JCL, and have them rasterised either as SUPDUP graphics
(with /D) or as Harvard scan files in .TEMP.; (by default).
From ITS OBUGS0, dated 1982-09-23:
> In theory (if I turned on XGP file recognition in the spooler), XGP
> files produced by R come out correctly, but XGP files produced by TJ6
> or BOLIO (and I think @) cause it to crash.
At present, XGP files from TJ6 are rendered with some problems, and XGP
files from @ aren't accepted at all (because they don't specify fonts).
This program reads files in several printable formats including ARDS,
XGP and PLT, and rasterises them for Versatec V80 and Gould 5200
printers, or as "Harvard scan" RLE bitmap files.
Normally it runs as a printer spooler, scanning the .GLPR. directory.
When invoked as VERSA, it runs in a test mode where it opens a fixed
series of files and displays them interactively using SUPDUP graphics.
The latter is more useful at the moment, so don't install the CHANNA
link by default.
This is based on AI: SYS2; TS XXFILE, which was compiled by TAA on
1979-08-23 from XXFILE MTA220, and on @larsbrinkhoff's reconstruction.
After modifying the XXFILE MTA224 source to match (remove the OASC in
CTTYB, and the three .CLOSEs in CQUIT), this compiles into an identical
binary.
The UUO handlers look like they're based on the ones from DIRED, so I've
preserved the DIRED comments where possible, but otherwise adjusted to
match the style used in XXFILE.