Personal LaserWriter NT: "setprintername" Character Restrictions



Using a Personal LaserWriter NT, I am trying to change the network name
and type of the printer. To do this, I'm using the PostScript code:

-----
%!
serverdict begin 0 exitserver
statusdict begin
(Print Station:CuccaPS) setprintername
end
-----

This code works fine for the LaserWriter Plus and LaserWriter IINT, but not
the Personal LaserWriter NT. Can the Personal LaserWriter NT change its
network type?

The PostScript setprintername operator was not designed for changing the
LaserWriter's type. The operator should not allow any of these characters
as valid string components:

: @ * = ┼

While these characters may not always cause errors on older LaserWriters,
they do cause unusual behavior with the Personal LaserWriter NT. They are
invalid characters because they are field separators and wildcards, as
defined by the AppleTalk Name Binding Protocol (NBP).

The format of an NBP entity name (such as a LaserWriter's Printer Access
Protocol server) is:

object:type@zone or Etch A Sketch:LaserWriter@Bandley3

If the ":" character were part of a LaserWriter's name, software
attempting to address the LaserWriter would become confused and not know
where the object's name leaves off or the type begins.

With the Personal LaserWriter NT, the setprintername operator is only able
to change the object name. This forces the entire string into the object
entry. Because the ":" character is invalid, the product operator must
be used to obtain a valid AppleTalk name.

The LaserWriter Namer utility (shipped with each LaserWriter) prevents
users from defining names with invalid characters. But not all PostScript
interpreters enforce this restriction properly.



Published Date: Feb 18, 2012