0210097%techunix.BITNET@ucb-vax.ARPA (Ephraim Silverberg) (04/17/85)
I received two responses to my 'Troff Inquiries'; here they are: -------------------------------------------------------------------------------- Bradley Smith (cepu!bradley!brad@ucla-locus.arpa) writes: -------------------------------------------------------------------------------- (1) What does 'troff' output? I have been told it is CAT pho- tosetter codes; what are CAT photosetter codes and where can I find more information about them? There are C/A/T codes and the best place is a manual. (2) I have been told that by piping 'troff' through /usr/lib/vcat and /usr/lib/rvcat the output is converted to a raster of bits. What does this mean and what do these programmes do? This is right. (3) Finally, assuming that I have all the information needed, how do I go about getting it to work on a particular printer (i.e. the LA100). I have the escape sequence that puts the LA100 in graphics mode and I know how the graphics mode works (in addition to knowing the specifications -- e.g. dots per inch horizontally and vertically). I also have a LA100 and wrote a program to take take vcat output and produce a file to go to a LA100. There is no doc or copyright notice but if you use you might note where it came from. Also let me know if you get this message. Bradley Smith UUCP: {cepu,ihnp4,noao,uiucdcs}!bradley!brad Text Processing ARPA: cepu!bradley!brad@UCLA-LOCUS Bradley University PH: (309) 676-7611 Ext. 446 Peoria, IL 61625 =========cut here============= #include <stdio.h> /* program to take vcat output -> LA100 */ main(argc,argv) int argc; char *argv[]; { char line[264*6],gline[2000]; char newline[264*18]; char bit0,bit1,bit2,bit3,bit4,bit5,bit6,bit7,xx,x1,x2,x3; unsigned int c,c1,c2,c3,c4,c5,c6,cx; register int i,n,j,k; int l; while((n=read(0,newline,264*18)) != -1) { if(n == 0) goto end; if(n < 264*18) for(;n<264*18;n++) newline[n]=' '; /* now condense */ for(i=0,j=0; j<=17; i++, j=j+3) { for(l=0,k=0; k<=263; l++, k=k+3) { x1 = newline[(j*264)+k]; x2 = newline[(j*264)+k+1]; x3 = newline[(j*264)+k+2]; bit0 = (x1 & 0200); if(!bit0) { if((x1 & 0100)) bit0 = 0200; } bit1 = (x1 & 020) << 2; if(!bit1) { if((x1&040)||(x1&010)) bit1 = 020 << 2; } bit2 = (x1 & 02) << 4; if(!bit2) { if((x1&04)||(x1&01)) bit2 = 02 << 4; } bit3 = (x2 & 0100) >> 2; if(!bit3) { if((x2&0200)||(x2&040)) bit3 = 0100 >> 2; } bit4 = (x2 & 010); if(!bit4) { if((x2&020)||(x2&04)) bit4 = 010; } bit5 = (x2 & 01) << 2; if(!bit5) { if(x2&02) bit5 = 01 << 2; } bit6 = (x3 & 040) >> 4; if(!bit6) { if((x3&0100)||(x3&020)) bit6 = 040 >> 4; } bit7 = (x3 & 04) >> 2; if(!bit7) { if((x3&010)||(x3&02)) bit7 = 04 >> 2; } line[(i*264)+l] = bit1 | bit2 | bit3 | bit4 | bit5 | bit6 | bit7; } } for(i = 0;i < 88;i++) { cx = 0200; for(n=0;n<8;n++) { c1 = (unsigned) line[i] & cx; c1 = c1>>7-n; c2 = (unsigned) line[i+264] & cx; c2 = c2>> 6-n; c3 = (unsigned) line[i+(264*2)] & cx; c3 = c3 >> 5-n; c4 = (unsigned) line[i+(264*3)] & cx; c4 = c4 >> 4-n; c5 = (unsigned) line[i+(264*4)] & cx; c5 = c5 >> 3-n; c6 = (unsigned) line[i+(264*5)] & cx; c6 = c6 >> 2-n; cx = cx >> 1; c =(c1|c2|c3|c4|c5|c6); gline[(i*8)+n]= (char) (c & 0X3F) + 077; } } for(j = (i * 8)-1; j && gline[j] == ' 77';j--) ; gline[j+1]=' 55'; write(1,&gline,j+2); } end: ; } -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- Dave Sherman (ihnp4!utzoo!lsuc!dave) writes: -------------------------------------------------------------------------------- Yes, it output code for the CAT phototypesetter. As far as I know, reading the code to vcat is the best way to figure out the obscure CAT codes. Raster format means lots of bits - not vectors. You end up with a bit map from vcat, for the Versatec, which is 2112 bits across the page, I recall. You'll probably want to change the vcat source for your application so it doesn't convert to raster at all, but takes the chars and draws them on your LA-100. But you'll need a font for your LA-100. Hope this helps. Take a look at the source to vcat. -------------------------------------------------------------------------------- Please honour Mr. Smith's request that some mention be made when using his pro- gramme. -------------------------------------------------------------------------------- Ephraim Silverberg BITNET : 0210097@techunix ARPANET : 0210097%techunix.bitnet@wiscvm.arpa UUCP : 0210097%techunix.BITNET@psuvax1.UUCP --------------------------------------------------------------------------------
henry@utzoo.UUCP (Henry Spencer) (04/21/85)
> ... As far as I > know, reading the code to vcat is the best way to figure out > the obscure CAT codes. ... Some years ago, I wrote a cat(5) manual page. It's based on the CAT hardware documentation, and I was working with a real CAT at the time, so it's pretty definitely correct. It's available to anyone who wants it; if there is enough interest, I'll post it. -- Henry Spencer @ U of Toronto Zoology {allegra,ihnp4,linus,decvax}!utzoo!henry