culmer@eniac.seas.upenn.edu (Charles Culmer) (03/19/89)
I want to print display bitmaps pixel-for-pixel on 8.5 x 11 paper with a dot-matrix printer. (Walk through the bitmap scanlines and write a file of printer graphics commands. Then print the file.) My serial printer (Integral P132) does only 84 dots per inch. I also have an Epson LQ-1500 (24 pins) that does 180 dots per inch. However, this printer has a parallel interface. Apparently, there are some SPE system calls that aren't covered in the manual "Installing and Programming the DOMAIN Series 3000 SPE Option". I don't see them in /sys/ins/spe.ins.c, and there doesn't seem to be a relevant help file. (I have ordered the system call manuals.) I don't believe any of the Apollo supplied device drivers is suitable, and /sys/help/prsvr/device_drivers.hlp seems to be limited to help for serial devices. I don't really need a device driver. I just want a simple I/O program to write to the printer. I played around with the sample program from /domain_examples rewritten in C and using /lib/spe_pio_lib-- ios_$open gives "device is read only" error. spe_$pio_set_mode gives "option is not initialized" error. Can someone please help me out with these questions-- (1) Is there a system call spe_$pio_init? Parameters and types? (2) Do I need any other system calls to make this I/O program work? (3) Will I have any trouble sending every (char) i for 0 <= i <= 256? I think my serial port is trapping some control characters. This isn't a problem with the 8 pin printer since it uses only 7 pins, so I can send characters 128 through 255, but the Epson needs all of the characters. (4) Why do parallel devices exist? I have a final question about GPR-- (5) What does the line_width parameter from gpr_$inq_bit_map_pointer mean? Isn't it too large by a factor of 2? This is suggested by the examples in "Programming with Domain Graphics Primitives" but not explained. (I have a model 3000, monochrome 1280 x 1024, version 9.7.) Thanks in advance. Charles W. Culmer culmer@eniac.seas.upenn.edu Truth, justice, and the American way
lnz@LUCID.COM (Leonard N. Zubkoff) (03/19/89)
In answer to (5) on the line_width value returned by gpr_$inq_bitmap_pointer: GPR bitmaps are not necessarily organized such that the pixels of one line are immediately followed by the pixels of the next line in memory. Consider direct mode access to a window that is not the full screen width, for example. So the pixels on one line are found from the storage_ptr value, and the pixels of the next line are found by adding 2*line_width to the original pointer, and so on. As documented in the insert file, the line width is the number of 16bit words per line, which is the reason for multiplying by 2. Leonard
culmer@eniac.seas.upenn.edu (Charles Culmer) (03/20/89)
[This is a repeat, condensed version of an earlier posting. The first one came back to me with a mail delivery error.] I'm trying to run the simple parallel I/O program given in the example directory. It doesn't run-- ios_$open gives "device is read only" error. spe_$pio_set_mode gives "option is not initialized" error. Apparently, there are some SPE system calls that aren't covered in the manual "Installing and Programming the DOMAIN Series 3000 SPE Option". I don't see them in any of the include or help files. (I have ordered the system call manuals.) Can someone please help me out with these questions-- (1) Is there a system call spe_$pio_init? Parameters and types? (2) Do I need any other system calls to make this I/O program work? (3) Will I have any trouble sending every (char) i for 0 <= i <= 255? I think my serial port is trapping some control characters. (I'm using a Domain 3000, monochrome 1280 x 1024, version 9.7.) Thanks in advance. Charles W. Culmer culmer@eniac.seas.upenn.edu Truth, justice, and the American way