BBS: Inland Empire Archive Date: 03-07-93 (15:35) Number: 326 From: DIK COATES Refer#: NONE To: DIRK RACKLEY Recvd: NO Subj: Epson Graphics Conf: (2) Quik_Bas
> Looking for some code or someone familiar with epson compatible printer >proramming. I have written a program that makes modifications to NASA You should try to obtain copies of the printer manuals... but here are some basics... For an FX85/185... common old type the pin values are as listed below: 128 o x o x To have the printer print a dot with the top pin 64 o o o o (EX 1), you would instruct it to print the value 32 o o o o 128, similarly for it to print the middle two pins 16 o o x o (EX 2), you would have to instruct it to print 8 o o x o the value 24 (16 + 8). This latter instruction 4 o o o x would cause pins 16 and 8 to fire. Instructing it 2 o o o x to fire the pins shown in EX 3 you would issue the 1 o o o o instruction 134. EX1 EX2 EX3 The number of printer head columns is based on the printing mode, and must be declared. The various modes are as follows: Mode Density Code Using Description Available in <ESC> Key IBM Mode 0 single K 60/480/816 Yes 1 LS Dble L 120/960/1632 Yes 2 HS Dble Y 120/960/1632 Yes 3 Quad Z 240/1920/3264 Yes 4 CRTI na 80/640/1088 No 5 Plotr na 72/576/979 No 6 CRTII na 90/720/1224 No 7 DDP na 144/1152/1958 No Note: LS and HS denotes low speed and high speed, respectively. Quad is quadruple density. Plotr is one-to-one and is used for plotting. DDP is dual-density plotter and has twice the density of mode 5. na- not available Description is given as the following: n1/n2/n3, where n1 is dots per inch n2 is dots per 8 inch line n3 is dots per 13.6 inch line The number of columns is declared using one of the following: LPRINT mode n1 n2 LPRINT <ESC>mode n1 n2 The numbers n1 and n2 represent the number of columns reserved for graphics and must be less than those specified for the mode. If the number of graphics columns is defined by ngraphcol%, then, the number n1 is the value obtained by the function ngraphcol% MOD 256, and the value n2 is obtained by the function ngraphcol% \ 256 (int div). If n2 is zero, it must be declared as 0. The line spacing that the printer advances horizontally is declared by using <ESC>"A". This converts the line spacing from the number of pins used for graphics (8) to the number of pins on the print head (9). The typical printer has 6 lines per inch, and 12 dot spaces per line (3 are used for spaces between lines). 6 lines * 12 = 72 horizontal dot spaces per inch. <ESC>"A" is used as follows: LPRINT <ESC>"A" n1 where n1 is the number of spaces (<72) per the printer advances with each CR-LF. So much for the basics of Epson 9 pin printers... To print something in graphics, the following pseudo code must be used, the CHR$(27) is the same as <ESC>: WIDTH LPRINT 255 'disable CR-LF sequence LPRINT CHR$(27) "A" CHR$(7) 'line spacing set to 7/72 inches LPRINT CHR$(27) "K" CHR$(120) CHR$(2); 'mode 0, 632 columns -->NOTE ';' LPRINT CHR$(n1) CHR$(n2) CHR$(n3) CHR$(n4) CHR$(n5) CHR$(n6); 'data LPRINT CHR$(27) "@" 'this resets the printer Note: the n1, n2, n3,... represent the pin patterns noted above. A ';' must be added because the mode and number of columns declaration must be made for each new line. Since you've been tryin' it for a year, an extra couple of weeks to dabble with the above won't make much difference! With a 24 pin printer, the procedure is similar to the above, except that the 24 pins are broken into 3 groups of 8 pins... the same pin numbering method is used and the data passed represents the pins for the top 8, mid 8, and bottom 8... The modes for an LQ1050 (I assume other 24 pin Epson's are similar) are as follows: Mode Density Num.of Pins Horiz.Density 0 single 8 60 1 double 8 120 2 HS Dble 8 120 3 Quad 8 240 4 CRTI 8 80 6 CRTII 8 90 32 single 24 60 33 double 24 120 38 CRTIII 24 90 39 triple 24 180 40 hex 24 360 and the method of declaring the number of graphics columns is as follows: LPRINT CHR$(27) "*" CHR$(mode) CHR$(n1) CHR$(n2) data....; Hoping the above will get you started... thought I could do it in a couple of lines, but nearly a book... suggest that you review the manual that came with the printer, or try to scrounge one! Will leave the conversion of data to printer info to you... or others on the board... >will be pumped through Dik Coats curve routine for intermediate points. >( Thanks Dik hope you dont mind if I slice and dice ). If I did, wouldn't have posted it! Good luck, Dik, Oshawa, Canada ... Backup aborted: Please remove disk #92 and start over. ___ Blue Wave/QWK v2.10 --- Maximus 2.01wb * Origin: Durham Systems (ONLINE!) (1:229/110)
Books at Amazon:
Back to BASIC: The History, Corruption, and Future of the Language
Hackers: Heroes of the Computer Revolution (including Tiny BASIC)
Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution
The Advent of the Algorithm: The Idea that Rules the World
Moths in the Machine: The Power and Perils of Programming
Mastering Visual Basic .NET