#New printer.device ?
10 messages in this thread
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<
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
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
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
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
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
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
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
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
I will, Kelly. I have also tested the standard Epson driver without success.
Joergen