NM and CM callable.
Provides control operations to a printer, terminal, or a spooled device file
and is used to:
Download character sets, forms, and internal or control tables
used in printing.
Control the page size, pen positioning, form and use of character
sets, the number of copies to be printed, and all other printing
environment characteristics.
Perform control operations on a terminal, printer, or spooled
device file.
Passes information to the device, such as character sets, forms,
vertical format control (VFC) information, or device control
actions.
Returns device driver information.
(ASC) The buffer is usually a 16-bit integer by reference
or, for controlcode=192, where parm=1,
buffer is a character array containing the name of the
terminal type or printer type file. For controlcode=192,
buffer values are defined in the parm1
discussion.
length
16-bit signed integer by value (required)
Passes the length of buffer:
If positive, it indicates the length in half words.
If negative, it indicates the length in bytes.
(ASC) If controlcode=192, length is
normally set to 1 unless parm1 is set to 1 (specifying a
new terminal or printer type file), then the length of the array is
specified in the length parameter.
controlcode
16-bit signed integer by value (required)
Passes the item value to be returned. (See following control codes 128+.)
(ASC) Passes the number of the operation to be performed.
Controlcode 192 is used to apply control directives to a
device file.
Codes 0 through 64 call FCONTROL. Control passes to
FCONTROL, and any errors returned will have originated with
FCONTROL.
parm1, parm2
16-bit unsigned integer by value (required)
Passes the value specified in the corresponding
controlcode; there are several values for
parm1 and parm2 that define the operation
in more detail.
fserrorcode
16-bit unsigned integer by reference (required)
Returns a file system error code number if an error occurs. If no error
occurs, fserrorcode is set to zero. If
FDEVICECONTROL detects a bounds violation for
fserrorcode (that is, an address outside your stack area),
fserrorcode is returned unchanged.
The Hewlett-Packard 268x page printer can contain up to 32 character sets,
allowing the use of a variety of fonts, styles, print rotations, and
languages. Controlcode=134 is used to download character
sets to the printer or to select any two downloaded character sets to be
the current primary and secondary character sets.
To change to the secondary character set (one character at a time), set the
eighth bit of the byte coding for the desired ASCII character. The
Hewlett-Packard 268x strips out this bit and prints (in the secondary
character set) the character represented by the remaining 7-bit value. To
change to the secondary character set for a number of characters and over
several lines, insert a CTRL-N (shift-in character) in the data.
Insert a CTRL-O (shift-out character) where the primary character
set is to be reactivated.
0 = Ignore the left byte of
parm2. 1 = Deactivate the logical page table entry
identified in the left byte of parm2.
parm1 (1:1)
0 = Ignore the right byte of
parm2. 1 = Activate the logical page table entry
identified in the right byte of parm2.
parm2 (0:8)
Logical page table entry (0 to
31) to be deactivated. Ignored if parm1 (0:1)=0.
parm2 (0:8)
Logical page table entry (0 to
31) to be activated. Ignored if parm1 (1:1)=0.
Logical pages being printed can be canceled or enabled through the
activation or deactivation of those pages.
Every physical page is composed of one or more logical pages. When the
Hewlett-Packard 268x begins to print each physical page, it scans the
logical page table (LPT) for the first logical page labeled as
ACTIVE. The printer then continues searching the table
sequentially for active pages and printing them until it has printed the
last active page. At this point, the Hewlett-Packard 268x performs a
physical page eject and starts the sequence again. There must be at least
one active LPT entry while the Hewlett-Packard 268x is printing.
A 16-bit signed integer containing
the desired X-axis displacement, in dots, of the pen from its current
position.
parm2
A 16-bit signed integer containing
the desired Y-axis displacement, in dots, of the pen from its current
position.
No pen movement results from requests to move the pen off the logical page.
Because the coordinate system is based upon the current logical page itself
and not upon the page's orientation with respect to the printer, do not
consider how the page has been rotated when assigning displacement values
to parm1 and parm2. Since the dot density
for the Hewlett-Packard 2680 (180 dots per inch) differs from the
Hewlett-Packard 2688 (300 dots per inch), the effects of
parm1 and parm2 are different.
An integer containing the
X-coordinate, in dots, of the point to move the pen.
parm2
An integer containing the
Y-coordinate, in dots, of the point to move the pen.
The values in parm1 and parm2 are measured
from the upper left corner of the logical page. Do not take page rotation
into account when assigning coordinates as the printer does not move the
pen if the location specified is off the logical page. Since the dot
density for the Hewlett-Packard 2680 (180 dots per inch) differs from the
Hewlett-Packard 2688 (300 dots per inch), the effects of
parm1 and parm2 are different.
0 = Ignored 1 = Printer does
not print job separation marks until next open job
parm1 (1:1)
0 = Ignored 1 =
Parm2 contains maximum allowable number of copies
parm2
Significant only if
parm1 (1:1)=1 (Specifies the maximum number of copies
the printer makes, for any one page, for the current job. The default
maximum is 32,767.)
Define physical page.
The following bits are ignored if set to zero:
parm1 (0:1)
1 = Multicopy form overlay feature on
parm1 (1:1)
1 = Multicopy form overlay feature off
parm1 (2:1)
1 = Reserved for the operating system
parm1 (3:1)
1 = Redefine physical page length
parm1 (4:1)
1 = Redefine number of copies per page
parm1 (5:1)
1 = Reserved for the operating system
parm1 (6:1)
1 = Reserved for the operating system
parm1 (7:1)
1 = Reserved for the operating system
parm1 (8:8)
New physical page length in
units of 0.25 inches; cannot be less than 3.0 inches (a value of 12) or
greater than 17.0 inches (a value of 68)
parm2
Number of copies to print; if number
exceeds the maximum defined in parm2 of
controlcode 132, only the maximum number of copies is
printed
FDEVICECONTROL accepts page length values that are in multiples of
0.25 inches, but the Hewlett-Packard 268x printer is able to produce only
pages that are multiples of 0.5 inches. For this reason, use only even
values in parm1 (8:8) (bit (15:1)=0).
0 = Download character set
identified in right-hand byte of parm2, Hewlett-Packard
268x 1 = Purge character set identified in right-hand byte of
parm2, Hewlett-Packard 268x
parm2 (0:1)
0 = First record of a load 1 =
Continuation of previous record
parm2 (8:8)
Character set identifier;
integer from 0 to 31
If there is an attempt to download a character set having the same
identifier as one existing in the printer, then the Hewlett-Packard 268x
purges the existing character set and repacks the user area before loading
the new font. However, before the modification of the user area,
the Hewlett-Packard 268x prints all data currently in its buffer, as it
does when a character set, form, or vertical format control set (VFC) is
loaded, overlayed, or deleted.
0 = Load form set identified in
the right-hand byte of parm2
1 = Purge identified form set from the Hewlett-Packard 268x printer's
memory
parm2 (0:1)
0 = First record of a load
1 = Continuation of previous record
parm2 (8:8)
Form set identifier; integer
from 0 to 31
If attempting to download a form set having the same identifier as one
existing in the printer, then the Hewlett-Packard 268x purges the existing
form set and repacks the user area before loading the new form. However,
before the modification of the user area, the Hewlett-Packard 268x prints
all data currently in its buffer, as it does whenever you load, overlay, or
delete a character set, form, or vertical format control set (VFC).
0 = First record of a load
1 = Continuation of previous record
A logical page is a page of data that may take up an entire sheet of paper.
It is possible to print up to eight logical pages on one physical page. The
logical page table, 513 words long, contains some of the information needed
to print up to 32 logical pages, so that the set of up to eight logical
pages printed on any one physical page can be varied.
Prints up to eight copies of a page, each on one or two different forms.
FDEVICECONTROL downloads into the printer's memory a table
containing one word of information for each of the eight possible copies to
be overlaid with a form. The format of each word of the table is:
0 = First record of a load
1 = Logical continuation of the previous record
parm2 (8:8)
VFC set identifier; integer
from 0 to 31
The VFC table is an ASCII file downloaded to the Hewlett-Packard 268x
printer in order to give specific instructions on the print density,
location of the top of the page, the bottom of the page, and other
specifications of the printed page.
The Hewlett-Packard 268x expresses the height of a printed line in dots and
the system uses this value to compute line positions on the page. Because
these space measurements are relative to the top of the logical page, as
opposed to the physical page, use the same or different VFC tables for
logical pages of different rotations.
0 = First record of a load
1 = Logical continuation of the previous record
parm2 (8:8)
Picture identifier; integer
from 0 to 31
When the picture is downloaded to the Hewlett-Packard 268x, it changes
every pointer to reflect where the dot per bit symbol actually is in
memory. If a picture is downloaded and one is already present with the same
identifier (0-31), then the original one is overwritten in the picture
descriptor block (PDB). The area taken up by the deleted picture is freed
as soon as the page has been transferred to paper.
0 = Do not eject physical page
1 = Eject physical page before going to logical page (no effect if the
first record since an environment load, FOPEN/FCLOSE)
parm1 (13:2)
Auto-eject mode:
00 = Use auto-eject flag of last data record (default at start;
auto-eject enabled)
01 = Enable auto-eject (select VFC channel 1 on new page)
11 = Disable auto-eject (position pen at top of page)
parm2 (8:8)
Logical page number; integer
from 0 to 31
The logical page identified in parm2 becomes the current
logical page even if other logical pages have entries that precede it in
the logical page table. FDEVICECONTROL activates the specified
page if it is inactive, and the Hewlett-Packard 268x performs a physical
page eject if parm1 (15:1)=1.
The Hewlett-Packard 268x printer flushes all data, erases the user area,
and loads the default character set, the vertical format control (VFC), and
the logical page table (LPT).
Device Status
Enable, disable, or return various types of extended device status. In
order to maintain backward compatibility with MPE V/E, the initial setting
(after first FOPEN of device) is set to disable all status
reporting. Any application that requires status reporting must enable
status reporting after opening the device.
Status reporting is a global device feature, either every accessor sees it
or does not see it.
When enabled, device related I/O errors (if they occur) are not returned.
The caller is notified that the device has status and another
FDEVICECONTROL call has to be made to determine the status.
When enabling status, the buffer returns the number of bytes occupied by
the largest status block returned by the device. This number is returned in
a 32-bit integer, and the count must be set to at least 4 bytes; otherwise,
a bounds violation occurs.
When nowait I/O is enabled, FWRITE does not notify the caller that
status is available. The application is notified that the status is
available after calling IOWAIT or IODONTWAIT.
The status return can be either a wildcard (return any available status) or
a specific type:
Set data block number
To be used for printer error recovery. The data block number is used as the
printing application/utility data index. The printing application can set
data block numbers allowing it to return to that place in the data stream
and retransmit data from that point forward.
Start silent run
Used to start printer recovery from specific error conditions on
recoverable devices or to backup or skip forward a specified number of
pages and resume printing.
Print standard header or trailer
Used to print standard headers/trailers. If headers/trailers are disabled
through the BANNERS, HEADON, or HEADOFF commands, this
control code is invalid.
PM (privileged mode) is required to use this option.
The file system does not perform printer setup/reset functions before or
after printing the banner; therefore, the caller must place the printer and
paper in the proper state before and after calling this control code.
Perform control functions on terminal device files
parm1
Indicates the specific control directive applied to the terminal device
file being accessed. For printers, only parm1=1 is supported.
Valid values are:
1
Specify terminal type or printer type file:
Specifies a new terminal type or printer type file for use with a
device. The specified file may be created through the TTUTIL utility.
The name of the terminal type or printer type file is passed in
buffer, with the length of buffer set
through the length parameter. If this call is issued
against a device connected through PAD, CCE (2) is returned and the
terminal or printer type associated with the device is changed, but
the device operates as if no device control action took place.
2
Set read timeout value for next read:
Sets a timeout value to be applied to the next read request in
seconds. If the timer expires before the next read is terminated, the
read data is transferred to the buffer and the read reply returns a
software timeout error status with length=0. For
reads posted to devices connected through PAD, add enough time to
compensate for delays caused by the network.
3
Set line speed for the device:
Set the line speed for the device associated with
filenum by entering a new line speed, representing
characters per second, as the value of buffer.
Supported speeds are 30, 120, 240, 480, 960, and 1920 characters per
second. Input and output line speeds are the same. If this call is
issued against a device connected through PAD, the terminal control
action is ignored and a meaningless value is returned.
4
Set echo ON/OFF at terminal:
Enable or disable read data echo to a terminal through the DTC. Valid
values are:
0
Echo off
1
Echo on
This call is not valid if the terminal is operating in binary or
block mode.
5
Set system break response on or off at a terminal:
Enable or disable system response to the entry of a system
BREAK at the terminal. Valid values are:
0
Disable break
1
Enable break
6
Set subsystem break response on or off at a terminal:
Enable or disable system response to the entry of a subsystem break
character at the terminal. Valid values are:
0
Disable subsystem break
1
Enable subsystem break
If the terminal is connected through PAD, the subsystem break must be
followed by a RETURN to signal PAD that data is to be
forwarded.
8
Obtain time used for completion of last read:
Determine the time, in seconds, required for the last read to
complete. Ensure that this call is placed immediately after the read
to be timed, with no subsequent reads in between. Only read access is
allowed for this request. All reads are timed, so there is no need to
enable the timer.
9, 11
Set parity generation and checking on or off:
Enable or disable parity generation and checking between the driver
and device. Valid values are:
0
Disable parity; all eight bits of each character are passed through.
1
Enable parity; type of parity specified by the parity setting is in effect.
Input and output parity is the same. If issued for a terminal
connected through PAD, CCE (2) is returned, but no terminal control
action occurs.
10, 12
Set type of parity:
If parity is enabled, this request determines what kind of parity is
computed when parity is checked:
0
No parity check on input, eighth bit set to 0 on output (parity type = zeros)
1
No parity check on input, eighth bit set to 1 on output (parity type = ones)
2
Even parity checked on input, even parity generated on output (parity type = even)
3
Odd parity checked on input, odd parity generated on output (parity type = odd)
If parity is disabled, no parity is used.
If issued for a terminal connected through PAD, CCE (2) is returned,
but no terminal control action occurs.
14
Set line deletion response:
Enables or disables the transmission of line deletion characters (!!!)
to the terminal after a user cancels a line at a terminal:
0
Disable transmission
1
Enable transmission
Line deletion characters are not output by PAD devices. If issued to
a terminal connected through PAD, CCE (2) is returned, but no
terminal control action occurs.
15
Set transparent editing mode:
Enables or disables transparent (unedited) mode. When enabled, allows
most special characters to be read and treated as data and a small
subset to retain their meaning:
Enable transparent editing by passing non-NUL characters for the
subsystem break and EOR characters in the buffer in the following
format:
AEOR
The AEOR character defined through a previous call to
FCONTROLitemnum=25. The read terminates in
error, and a call to FCHECK returns an error code of 31. The
AEOR character is passed with the data and included in the byte
count.
BREAK
Causes a system break (when enabled) and
transfers control to the system. If the RESUME command is
entered, transparent editing is resumed.
CTRL-Q DC1 or XON
The resume output character of
the XON/XOFF handshake. This character is stripped from the input data
when XON/XOFF protocol is enabled.
CTRL-R DC2
When input as the first character, it
is stripped out. A DC1 (CTRL-Q) is written to the terminal. If
not input as the first character, DC2 (CTRL-R) is a data
character.
CTRL-S DC3 or XOFF
The stop output character of the
XON/XOFF handshake. This character is stripped from the input data when
XON/XOFF protocol is enabled.
bits (0:8)
Specifies the character to be used as the
subsystem break character. Any character not defined as a special
character in transparent mode (including the standard subsystem break
character) can be used. If set to 0, subsystem break is disabled.
bits (8:8)
Specifies the character to be used as the line
termination character (EOR). Any character not defined as a special
character in transparent mode can be used.
If used for a device connected through PAD, data is not forwarded
from the terminal immediately after the characters defined as the
subsystem break or EOR character are typed. The terminal user has to
press RETURN to cause data to be transmitted, or wait for the
data forwarding timer to expire (if set). The host software
recognizes and acts on the characters defined in this call.
Disable transparent editing by passing NUL characters.
26
Device XON/XOFF:
Enable or disable XON/XOFF flow control between the device and the DTC:
1
Enable device XON/XOFF
0
Disable device XON/XOFF
When enabled, the DTC stops sending data to the device when XOFF is
received and resumes when XON is received. XON/XOFF characters are
not sent to the host.
When disabled, the XON/XOFF characters are not treated as control
characters, but are passed to the host as data. When disabled, data
overruns can occur.
27
Set XOFF timer value:
Enable or disable the XOFF timer.
To enable the XOFF timer, pass a positive value, representing time in
seconds, in the buffer parameter. The XOFF timer
causes a warning message to be sent to the console if a device is
XOFFed for a time exceeding the set limit.
To disable the XOFF timer, pass a 0 or negative value in the
buffer parameter.
If issued to a terminal connected through PAD, CCE (2) is returned,
but no terminal control action occurs.
28
Block mode types supported:
This is a read only request that returns a value representing the
type of block mode supported by the driver. Valid values are:
6
DTC style page block mode
7
Line and DTC style page block mode
15
PAD terminal supporting page block mode
29
Block mode alert character:
Specifies the character used to signal Hewlett-Packard block mode
transfers. The standard alert character is DC2. This call only
defines the alert character; it does not enable Hewlett-Packard block
mode.
If issued to a terminal connected through PAD, CCE (2) is returned,
but the device control action does not occur.
30, 32
Read trigger and block mode trigger character:
Specify which character the DTC should send to trigger a character
mode or block mode read on a device. The standard trigger character
is DC1. If a NUL character is specified, there is no trigger
character.
If issued to a terminal connected through PAD, CCE (2) is returned
but the device control action does not occur.
36
Backspace character:
Specifies which character will be a backspace in standard editing mode.
Default: backspace
37
Cancel line character
Specifies which character will be a line deletion character in
standard editing mode.
Default: CTRL-X
39
Type 1 EOR character:
Specifies the EOR character to be used in standard or transparent
editing mode. This value is passed in the high order byte (value *
256) of buffer. If issued to a terminal connected
through a PAD, the new EOR character (non-carriage return) must be
followed by a carriage return to instruct the PAD to transmit the
data. Use a null character to disable the character.
Default: Return
40
Type 2 EOR character (AEOR):
Specifies the AEOR character and enables its use. This value is
passed in the high order byte (value * 256) of buffer.
Any character can be specified, but do not use any special characters
(refer to FCONTROLitemnum=25 for details).
If issued to a terminal connected through a PAD, the new EOR
character (non-carriage return) must be followed by a carriage return
to instruct the PAD to transmit the data. Use a null character to
disable the AEOR character.
41
Subsystem break character:
Specifies the character is to be used as the subsystem break
character. This value is passed in the high order byte (value * 256)
of buffer.
If issued to a terminal connected through PAD, the new subsystem
break character is recognized by the host, but the terminal user has
to press RETURN following the subsystem break to signal the
PAD that data is ready to be transmitted.
51
Set typeahead mode:
Enable or disable typeahead mode:
0
Disable typeahead mode; accept read data from the device
as it is posted. The terminal user must wait for a new read to be
posted before entering additional data. (default)
1
Enable typeahead mode; pass read data from the device to
a typeahead buffer (up to 224 characters). The terminal user can enter
data before a read has been posted. Typeahead is not supported on PAD
terminals. If issued for a terminal connected through PAD, CCE (2) is
returned, but the device control action does not occur.
52
Form feed in output data:
Specifies whether the form feed character is replaced in the carriage
control of terminals:
0
Replace form feeds with a form feed replacement character
1
Form feed allowed
53
Define form feed replacement character:
Specifies the character that replaces the form feed character in the
terminal carriage control when form feed replacement is enabled. The
form feed in carriage control is replaced; form feed in data is not
replaced. A default of NUL is used if form feed replacement is
enabled and no replacement character is specified.
55
Backspace response action:
Selects the action the DTC takes when it receives a backspace
character. Valid values are:
1
Remove character from input and back cursor up one space
(default)
5
Remove character from input and erase character
(backspace, space, backspace)
If issued against a terminal connected through PAD, CCE (2) is
returned, but the device control action does not occur.
56
Data bits per character:
Specifies whether 7-bits or 8-bits are used for each character.
If 7-bits is selected, parity generation and checking is controlled
by the current parity setting. If the current parity is set to "no
parity" or parity checking is disabled, parity is not in effect.
If 8-bits is selected, parity is set to "no parity" and the current
parity setting is saved, so when the user switches back to 7-bits,
parity is returned to its previous setting.
If issued against a terminal connected through PAD, CCE (2) is
returned, but the device control action does not occur.
57
Subsystem break character:
Returns the current subsystem break character.
60
Flush typeahead buffer:
Valid values are:
1
Flush the typeahead buffer before the next read is
started. Any data in the typeahead buffer is lost. Valid for the next
read only.
0
Disable the request.
Flush typeahead is enabled only if typeahead is enabled.
If issued against a terminal connected through PAD, CCE (2) is
returned, but the device control action does not occur.
61
Bypass typeahead buffer:
Valid values are:
1
The next read is taken from the device, and any
information currently in the typeahead buffer is bypassed. The data in
the typeahead buffer is not flushed, and can be obtained by a
subsequent read. The request is valid for the next read only.
0
Disable the request.
This request is valid only if typeahead is enabled.
If issued against a terminal connected through PAD, CCE (2) is
returned, but the device control action does not occur.
62
Quiesce I/O:
Valid values are:
1
The control will not complete until all previous I/O to
the device has completed. If issued against a terminal connected
through a PAD, control issues only previous I/O sent to PAD and not to
the device.
63
Single echo mode in typeahead:
Valid values are:
1
Enables single echo. Typeahead data will be echoed only
when the read is posted.
0
Disable the request. Typeahead data will be echoed when
entered and when the read is posted (default mode).
This request is valid only if typeahead is enabled.
If issued against a terminal connected through PAD, CCE (2) is
returned, but the device control action does not occur.
64
Ignore parity error on input:
Valid values are:
1
Parity errors will be ignored.
0
Parity errors will be reported (default).
If issued against a terminal connected through PAD, CCE (2) is
returned, but the device control action does not occur.
65
Interbyte Timer:
Valid values are:
1-255
Non zero values activate the Interbyte Timer in
tenths of a second granularity. Therefore, setting the value to 255
results in an Interbyte Timer of 25.5 seconds. Once the timer is set,
all the following reads use the given Interbyte Timer value until the
timer is deactivated.
0
Disable the Interbyte Timer.
If the Interbyte Timer is not set properly, performance of an
application program could deteriorate. For example, a program could
set the Interbyte Timer to a very small value, resulting in most
reads completing with only one character of data. This essentially
reduces the application to a character mode application.
66
Multiple Alternate End-Of-Record (AEOR):
The Multiple Alternate End-Of-Record (AEOR) functionality allows an
application or user to specify up to 16 AEOR characters. When the
list of AEOR characters is received, the DTC monitors input for those
characters. When the DTC receives one of the characters, it completes
the current pending read request with the received AEOR character as
the last byte of data.
The call uses a packed byte array to define the 16 AEOR characters.
The AEOR characters set by this call remain in effect until another
FDEVICECONTROL call changes the AEOR array. If the array contains all
ASCII NUL characters or if the length passed to FDEVICECONTROL is 0,
then all existing AEOR characters are canceled. The characters are
checked for conflicts with special characters only when the special
characters are set and not when the AEOR characters are defined.
AEOR has the same character restrictions as FCONTROL 25.
67
Delete to Backspace Mapping:
Valid values are:
1
Enables the "DEL as BS". The Delete to Backspace Mapping
allows the Delete character (DEL) to be processed as a Backspace
character (BS).
ESC Sequence Read Termination is enabled. This
functionality enables an application to have a read terminated by an
ESC sequence and receive the entire ESC sequence in the data. Other
read terminators (EOR, AEOR, Time Read, Byte Count etc.) are still
valid and functional.
0
Disable the behavior.
69
Suppress Echo of Read Terminator:
Valid values are:
1
Enables functionality. Gives an application the ability
to determine whether or not to include the read terminators with the
data that is echoed back to the device. Once echo suppression is
enabled, no read terminating characters will be echoed to the device
until echo suppression is disabled.