CompuServe Thread

#New printer.device ?

10 messages in this thread
#51219From: Bela Lubkin/SysopJan 28, 1987 9:47 AM
Argh. Back and forth and the message base scrolls between each exchance. Wrong. I don't know how printer.device is written, but it's unlikely to be in assembly language. It's also unlikely that it's as table-driven as it should be. Chances are it can be sped up by a factor of 10 or more. "Precompute >everything<". See if you can't talk a copy of the printer.device source code out of CBM. >Bela<
#51238From: Jan 28, 1987 11:24 AM
To add another thing, I think I have found a bug in the printer.device. I cannot get it to execute the FNT0 (select US character set, "ESC ( B") command, so if you write in Spanish, Danish or whatever, you have to switch off the printer or send the proper printer specific control code on PAR:. This bug, I would like to have confirmed by others, before I write to C-A. Joergen
#51309From: Don Curtis/SYSOPJan 28, 1987 9:31 PM
Joergen, Select US char set is <ESC> "(B" and isn't in the printer.device, but the printer driver. If your driver doesn't support it, it gets "eaten" by PRT: as do all other unknown ESC sequences. At least that is the way I understand it to work, and since you worked on the driver generator..what do you translate that into? Don
#51339From: Jan 28, 1987 11:39 PM
Wait a minute, Don, the printer.device does not call the printer driver at all when receiving that escape sequence, so the driver cannot do anything. The normal sequence of operation upon the printer.device receiving an escape sequence is: Call DoSpecial in the driver; if nothing returned from DoSpecial then lookup the proper table entry and make the substitution from Amiga to printer specific escape sequence. After a few tests, it occurs to me that <ESC> "(B" is not working. Maybe it is not B but some other character. Joergen
#51373From: Don Curtis/SYSOPJan 29, 1987 2:05 AM
Joergen, Humm…the way I read the doc in the RKM manual is that when an ESC sequence is received, it looks up in the command table of the specific driver for a substitute command, and if a value is there, it substitutes..else if 377 Octal, it then goes into DoSpecial() to see if it can find a routine there, and if not…eats the command. That's the opposite of what you say is occuring. The doc I am reading is on page 3-214 of the RKM Vol. 1 by CBM. Don
#51399From: Jan 29, 1987 2:01 PM
Don, I read the RKM the same way as you did, but the truth is that upon recognizing a valid escape sequence the printer.device will call DoSpecial and dependent upon the value DoSpecial returns in register D0, the printer.device will use the table string or the string returned by DoSpecial as the substitution string for the standard escape sequence. – I am quite satisfied that it is so, if only there were no exceptions as e.g. JFY1, JFY3 and FNT0. Joergen
#51403From: Don Curtis/SYSOPJan 29, 1987 5:22 PM
Joergen, I did notice that even thou the RKM says lots and lots of things are supposed to be supported in the JX-80 (including JFY1, etc.)…they aren't so apparently another case of documentation being wrong. Humm…time for another call to the CBM BBS and see what really gives. Don
#51456From: Jan 29, 1987 9:11 PM
Well, that is the old story. Documentation is important, but nobody really cares about writing it and proofreading it. I also noticed too different listings of prtbase.h in the RKM. Joergen
#51328From: Kelly JordanJan 28, 1987 10:33 PM
Joergen, Better start writing. FNT0 doesn't seem to be working for me either. I guess an option for me is to use the couple of character sets my printer doesn't have and use them to send the equivalent of the FNT0 command. Darn! 73, Kelly
#51340From: Jan 28, 1987 11:40 PM
I will, Kelly. I have also tested the standard Epson driver without success. Joergen