You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

904 lines
28 KiB

.bp 1
.op
.cs 5
.mt 5
.mb 6
.pl 66
.ll 65
.po 10
.hm 2
.fm 2
.he
.ft H-%
.pc 1
.tc H Glossary
.ce 2
.sh
Appendix H
.sp
.sh
Glossary
.qs
.he CP/M Operating System Manual H Glossary
.sp 3
.sh
address: \c
.qs
Number representing the location of a byte in memory. Within
CP/M there are two kinds of addresses: logical and physical. A
physical address refers to an absolute and unique location within
the computer's memory space. A logical address refers to the
offset or displacement of a byte in relation to a base location.
A standard CP/M program is loaded at address 0100H, the base
value; the first instruction of a program has a physical address
of 0100H and a relative address or offset of OH.
.sp
.sh
allocation vector (ALV): \c
.qs
An allocation vector is maintained in the BIOS for each logged-in
disk drive. A vector consists of a string of bits, one for each
block on the drive. The bit corresponding to a particular block
is set to one when the block has been allocated and to zero
otherwise. The first two bytes of this vector are initialized
with the bytes AL0 and AL1 on, thus allocating the directory
blocks. CP/M Function 27 returns the allocation vector address.
.sp
.sh
AL0, AL1: \c
.qs
Two bytes in the disk parameter block that reserve data blocks
for the directory. These two bytes are copied into the first two
bytes of the allocation vector when a drive is logged in. See \c
.sh
allocation vector.
.sp
.sh
ALV: \c
.qs
See \c
.sh
allocation vector.
.sp
.sh
ambiguous filename: \c
.qs
Filename that contains either of the CP/M wildcard characters, ?
or *, in the primary filename, filetype, or both. When you
replace characters in a filename with these wildcard characters,
you create an ambiguous filename and can easily reference more
than one CP/M file in a single command line.
.sp
.sh
American Standard Code for Information Interchange: \c
.qs
See \c
.sh
ASCII.
.sp
.sh
applications program: \c
.qs
Program designed to solve a specific problem. Typical
applications programs are business accounting packages, word
processing (editing) programs and mailing list programs.
.sp
.sh
archive attribute: \c
.qs
File attribute controlled by the high-order bit of the t3 byte
(FCB+11) in a directory element. This attribute is set if the
file has been archived.
.sp
.sh
argument: \c
.qs
Symbol, usually a letter, indicating a place into which you can
substitute a number, letter, or name to give an appropriate
meaning to the formula in question.
.sp
.sh
ASCII: \c
.qs
American Standard Code for Information Interchange. ASCII is a
standard set of seven-bit numeric character codes used to
represent characters in memory. Each character requires one byte
of memory with the high-order bit usually set to zero.
Characters can be numbers, letters, and symbols. An ASCII file can be
intelligibly displayed on the video screen or printed on paper.
.sp
.sh
assembler: \c
.qs
Program that translates assembly language into the binary machine
code. Assembly language is simply a set of mnemonics used to
designate the instruction set of the CPU. See \c
.sh
ASM \c
.qs
in Section 3 of this manual.
.sp
.sh
back-up: \c
.qs
Copy of a disk or file made for safekeeping, or the creation of
the duplicate disk or file.
.sp
.sh
Basic Disk Operating System: \c
.qs
See \c
.sh
BDOS.
.sp
.sh
BDOS: \c
.qs
Basic Disk Operating System. The BDOS module of the CP/M
operating system provides an interface for a user program to the
operating system. This interface is in the form of a set of
function calls which may be made to the BDOS through calls to
location 0005H in page zero. The user program specifies the
number of the desired function in register C. User programs
running under CP/M should use BDOS functions for all I/O
operations to remain compatible with other CP/M systems and
future releases. The BDOS normally resides in high memory
directly below the BIOS.
.sp
.sh
bias: \c
.qs
Address value which when added to the origin address of your BIOS
module produces 1F80H, the address of the BIOS module in the
MOVCPM image. There is also a bias value that when added to the
BOOT module origin produces 0900H, the address of the BOOT module
in the MOVCPM image. You must use these bias values with the R
command under DDT or SID \ \ when you patch a CP/M system. If you do
not, the patched system may fail to function.
.sp
.sh
binary: \c
.qs
Base 2 numbering system. A binary digit can have one of two
values: 0 or 1. Binary numbers are used in computers because
the hardware can most easily exhibit two states: off and on.
Generally, a bit in memory represents one binary digit.
.sp
.sh
Basic Input/Output System: \c
.qs
See \c
.sh
BIOS.
.sp
.sh
BIOS: \c
.qs
Basic Input/Output System. The BIOS is the only hardware-
dependent module of the CP/M system. It provides the BDOS with a
set of primitive I/O operations. The BIOS is an assembly
language module usually written by the user, hardware
manufacturer, or independent software vendor, and is the key to
CP/M's portability. The BIOS interfaces the CP/M system to its
hardware environment through a standardized jump table at the
front of the BIOS routine and through a set of disk parameter
tables which define the disk environment. Thus, the BIOS
provides CP/M with a completely table-driven I/O system.
.sp
.sh
BIOS base: \c
.qs
Lowest address of the BIOS module in memory, that by definition
must be the first entry point in the BIOS jump table.
.bp
.sh
bit: \c
.qs
Switch in memory that can be set to on (1) or off (0). Bits are
grouped into bytes, eight bits to a byte, which is the smallest
directly addressable unit in an Intel 8080 or Zilog Z80. By
common convention, the bits in a byte are numbered from right, 0
for the low-order bit, to left, 7 for the high-order bit. Bit
values are often represented in hexadecimal notation by grouping
the bits from the low-order bit in groups of four. Each group of
four bits can have a value from 0 to 15 and thus can easily be
represented by one hexadecimal digit.
.sp
.sh
BLM: \c
.qs
See \c
.sh
block mask.
.sp
.sh
block: \c
.qs
Basic unit of disk space allocation. Each disk drive has a fixed
block size (BLS) defined in its disk parameter block in the BIOS.
A block can consist of 1K, 2K, 4K, 8K, or 16K consecutive bytes.
Blocks are numbered relative to zero so that each block is unique
and has a byte displacement in a file equal to the block number
times the block size.
.sp
.sh
block mask (BLM): \c
.qs
Byte value in the disk parameter block at DPB + 3. The block
mask is always one less than the number of 128 byte sectors that
are in one block. Note that BLM = (2 ** BSH) - 1.
.sp
.sh
block shift (BSH): \c
.qs
Byte parameter in the disk parameter block at DPB + 2.
Block shift and block mask (BLM) values are determined by the
block size (BLS). Note that BLM = (2 ** BSH) - 1.
.sp
.sp 0
.sh
blocking & deblocking algorithm: \c
.qs
In some disk subsystems the disk sector size is larger than 128
bytes, usually 256, 512, 1024, or 2048 bytes. When the host
sector size is larger than 128 bytes, host sectors must be
buffered in memory and the 128-byte CP/M sectors must be blocked
and deblocked by adding an additional module, the blocking and
deblocking algorithm, between the BIOS disk I/O routines and the
actual disk I/O. The host sector size must be an even multiple
of 128 bytes for the algorithm to work correctly. The blocking
and deblocking algorithm allows the BDOS and BIOS to function
exactly as if the entire disk consisted only of 128-byte sectors,
as in the standard CP/M installation.
.sp
.sh
BLS: \c
.qs
Block size in bytes. See \c
.sh
block.
.sp
.sh
boot: \c
.qs
Process of loading an operating system into memory. A boot
program is a small piece of code that is automatically executed
when you power-up or reset your computer. The boot program loads
the rest of the operating system into memory in a manner similar
to a person pulling himself up by his own bootstraps. This
process is sometimes called a cold boot or cold start. Bootstrap
pocedures vary from system to system. The boot program must be
customized for the memory size and hardware environment that the
operating system manages. Typically, the boot resides on the
first sector of the system tracks on your system disk. When
executed, the boot loads the remaining sectors of the system
tracks into high memory at the location for which the CP/M system
has been configured. Finally, the boot transfers execution to
the boot entry point in the BIOS jump table so that the system
can initialize itself. In this case, the boot program should be
placed at 900H in the SYSGEN image. Alternatively, the boot
program may be located in ROM.
.sp
.sh
bootstrap: \c
.qs
See \c
.sh
boot.
.sp
.sh
BSH: \c
.qs
See \c
.sh
block shift.
.sp
.sh
BTREE: \c
.qs
General purpose file access method that has become the standard
organization for indexes in large data base systems. BTREE
provides near optimum performance over the full range of file
operations, such as insertion, deletion, search, and search next.
.sp
.sh
buffer: \c
.qs
Area of memory that temporarily stores data during the transfer
of information.
.sp
.sh
built-in commands: \c
.qs
Commands that permanently reside in memory. They respond quickly
because they are not accessed from a disk.
.sp
.sh
byte: \c
.qs
Unit of memory or disk storage containing eight bits. A byte can
represent a binary number between 0 and 255, and is the smallest
unit of memory that can be addressed directly in 8-bit CPUs such
as the Intel 8080 or Zilog Z80.
.sp
.sh
CCP: \c
.qs
Console Command Processor. The CCP is a module of the CP/M
operating system. It is loaded directly below the BDOS module
and interprets and executes commands typed by the console user.
Usually these commands are programs that the CCP loads and calls.
Upon completion, a command program may return control to the CCP
if it has not overwritten it. If it has, the program can reload
the CCP into memory by a warm boot operation initiated by either
a jump to zero, BDOS system reset (Function 0), or a cold boot.
Except for its location in high memory, the CCP works like any
other standard CP/M program; that is, it makes only BDOS function
calls for its I/O operations.
.sp
.sh
CCP base: \c
.qs
Lowest address of the CCP module in memory. This term sometimes
refers to the base of the CP/M system in memory, as the CCP is
normally the lowest CP/M module in high memory.
.sp
.sh
checksum vector (CSV): \c
.qs
Contiguous data area in the BIOS, with one byte for each
directory sector to be checked, that is, CKS bytes. See \c
.sh
CKS. \c
.qs
A checksum vector is initialized and maintained for each logged-in
drive. Each directory access by the system results in a checksum
calculation that is compared with the one in the checksum vector.
If there is a discrepancy, the drive is set to Read-Only status.
This feature prevents the user from inadvertently switching disks
without logging in the new disk. If the new disk is not logged-in,
it is treated the same as the old one, and data on it might be
destroyed if writing is done.
.sp
.mb 5
.fm 1
.sh
CKS: \c
.qs
Number of directory records to be checked summed on directory
accesses. This is a parameter in the disk parameter block
located in the BIOS. If the value of CKS is zero, then no
directory records are checked. CKS is also a parameter in the
diskdef macro library, where it is the actual number of directory
elements to be checked rather than the number of directory
records.
.sp
.sh
cold boot: \c
.qs
See \c
.sh
boot. \c
.qs
Cold boot also refers to a jump to the boot entry point in the
BIOS jump table.
.sp
.mb 6
.fm 2
.sh
COM: \c
.qs
Filetype for a CP/M command file. See \c
.sh
command file.
.sp
.sh
command: \c
.qs
CP/M command line. In general, a CP/M command line has three
parts: the command keyword, command tail, and a carriage return.
To execute a command, enter a CP/M command line directly after
the CP/M prompt at the console and press the carriage return or
enter key.
.sp
.sh
command file: \c
.qs
Executable program file of filetype COM. A command file is a
machine language object module ready to be loaded and executed at
the absolute address of 0100H. To execute a command file, enter
its primary filename as the command keyword in a CP/M command
line.
.sp
.sh
command keyword: \c
.qs
Name that identifies a CP/M command, usually the primary filename
of a file of type COM, or a built-in command. The command
keyword precedes the command tail and the carriage return in the
command line.
.sp
.sh
command syntax: \c
.qs
Statement that defines the correct way to enter a command. The
correct structure generally includes the command keyword, the
command tail, and a carriage return. A syntax line usually
contains symbols that you should replace with actual values when
you enter the command.
.sp
.sh
command tail: \c
.qs
Part of a command that follows the command keyword in the command
line. The command tail can include a drive specification, a
filename and filetype, and options or parameters. Some
commands do not require a command tail.
.sp
.sh
CON: \c
.qs
Mnemonic that represents the CP/M console device.
For example, the CP/M command PIP CON:=TEST.SUB displays the
file TEST.SUB on the console device. The explanation of the STAT
command tells how to assign the logical device CON: to various
physical devices. \c
See \c
.sh
console.
.sp
.sh
concatenate: \c
.qs
Name of the PIP operation that copies two or more separate files
into one new file in the the specified sequence.
.sp
.sh
concurrency: \c
.qs
Execution of two processes or operations simultaneously.
.sp
.sh
CONIN: \c
.qs
BIOS entry point to a routine that reads a character from the
console device.
.sp
.sh
CONOUT: \c
.qs
BIOS entry point to a routine that sends a character to the
console device.
.bp
.sh
console: \c
.qs
Primary input/output device. The console consists of a listing
device, such as a screen or teletype, and a keyboard through
which the user communicates with the operating system or
applications program.
.sp
.sh
Console Command Processor: \c
.qs
See \c
.sh
CCP.
.sp
.sh
CONST: \c
.qs
BIOS entry point to a routine that returns the status of the
console device.
.sp
.sh
control character: \c
.qs
Nonprinting character combination. CP/M interprets some control
characters as simple commands such as line editing functions. To
enter a control character, hold down the CONTROL key and strike
the specified character key.
.sp
.sh
Control Program for Microcomputers: \c
.qs
See \c
.sh
CP/M.
.sp
.sh
CP/M: \c
.qs
Control Program for Microcomputers. An operating system that
manages computer resources and provides a standard systems
interface to software written for a large variety of
microprocessor-based computer systems.
.sp
.sh
CP/M 1.4l compatibility: \c
.qs
For a CP/M 2 system to be able to read correctly single-density
disks produced under a CP/M 1.4 system, the extent mask must be
zero and the block size 1K. This is because under CP/M 2 an FCB
may contain more than one extent. The number of extents that may
be contained by an FCB is EXM+1. The issue of CP/M 1.4
compatibility also concerns random file I/O. To perform random
file I/O under CP/M 1.4, you must maintain an FCB for each extent
of the file. This scheme is upward compatible with CP/M 2 for
files not exceeding 512K bytes, the largest file size supported
under CP/M 1.4. If you wish to implement random I/O for files
larger than 512K bytes under CP/M 2, you must use the random read
and random write functions, BDOS functions 33, 34, and 36. In
this case, only one FCB is used, and if CP/M 1.4 compatiblity is
required, the program must use the return version number
function, BDOS Function 12, to determine which method to employ.
.sp
.sh
CP/M prompt: \c
.qs
Characters that indicate that CP/M is ready to execute your next
command. The CP/M prompt consists of an upper-case letter, A-P,
followed by a > character; for example, A>. The letter
designates which drive is currently logged in as the default
drive. CP/M will search this drive for the command file
specified, unless the command is a built-in command or prefaced
by a select drive command: for example, B:STAT.
.sp
.sh
CP/NET: \c
.qs
Digital Research network operating system enabling microcomputers
to obtain access to common resources via a network. CP/NET
consists of MP/M masters and CP/M slaves with a network interface
between them.
.sp
.sh
CSV: \c
.qs
See \c
.sh
checksum vector.
.sp
.mb 5
.fm 1
.sh
cursor: \c
.qs
One-character symbol that can appear anywhere on the console
screen. The cursor indicates the position where the next
keystroke at the console will have an effect.
.sp
.sh
data file: \c
.qs
File containing information that will be processed by a program.
.sp
.mb 6
.fm 2
.sh
deblocking: \c
.qs
See \c
.sh
blocking & deblocking algorithm.
.sp
.sh
default: \c
.qs
Currently selected disk drive and user number. Any command that
does not specify a disk drive or a user number references the
default disk drive and user number. When CP/M is first invoked,
the default disk drive is drive A, and the default user number is
0.
.sp
.sh
default buffer: \c
.qs
Default 128-byte buffer maintained at 0080H in page zero. When
the CCP loads a COM file, this buffer is initialized to the
command tail; that is, any characters typed after the COM file
name are loaded into the buffer. The first byte at 0080H
contains the length of the command tail, while the command tail
itself begins at 0081H. The command tail is terminated by a byte
containing a binary zero value. The I command under DDT and SID
initializes this buffer in the same way as the CCP.
.sp
.sh
default FCB: \c
.qs
Two default FCBs are maintained by the CCP at 005CH and 006CH in
page zero. The first default FCB is initialized from the first
delimited field in the command tail. The second default FCB
is initialized from the next field in the command tail.
.sp
.sp 0
.sh
delimiter: \c
.qs
Special characters that separate different items in a command
line; for example, a colon separates the drive specification from
the filename. The CCP recognizes the following characters as
delimiters: . : = ; < > _, blank, and carriage return. Several
CP/M commands also treat the following as delimiter characters:
, [ ] ( ) $. It is advisable to avoid the use of delimiter
characters and lower-case characters in CP/M filenames.
.sp
.sh
DIR: \c
.qs
Parameter in the diskdef macro library that specifies the number
of directory elements on the drive.
.sp
.sh
DIR attribute: \c
.qs
File attribute. A file with the DIR attribute can be displayed
by a DIR command. The file can be accessed from the default user
number and drive only.
.sp
.sh
DIRBUF: \c
.qs
128-byte scratchpad area for directory operations,
usually located at the end of the BIOS. DIRBUF is used by the
BDOS during its directory operations. DIRBUF also refers to the
two-byte address of this scratchpad buffer in the disk parameter
header at DPbase + 8 bytes.
.sp
.sh
directory: \c
.qs
Portion of a disk that contains entries for each file on the
disk. In response to the DIR command, CP/M displays the
filenames stored in the directory. The directory also contains
the locations of the blocks allocated to the files. Each file
directory element is in the form of a 32-byte FCB, although one
file can have several elements, depending on its size. The
maximum number of directory elements supported is specified by
the drive's disk parameter block value for DRM.
.bp
.sh
directory element: \c
.qs
Data structure. Each file on a disk has one or more 32-byte
directory elements associated with it. There are four directory
elements per directory sector. Directory elements can also be
referred to as directory FCBs.
.sp
.sh
directory entry: \c
.qs
File entry displayed by the DIR command. Sometimes this term
refers to a physical directory element.
.sp
.sp 0
.sh
disk, diskette: \c
.qs
Magnetic media used for mass storage in a computer system.
Programs and data are recorded on the disk in the same way music
can be recorded on cassette tape. The CP/M operating system must
be initially loaded from disk when the computer is turned on.
Diskette refers to smaller capacity removable floppy diskettes,
while disk may refer to either a diskette, removable cartridge
disk, or fixed hard disk. Hard disk capacities range from five
to several hundred megabytes of storage.
.sp
.sh
diskdef macro library: \c
.qs
Library of code that when used with MAC, the Digital Research
macro assembler, creates disk definition tables such as the DPB
and DPH automatically.
.sp
.sh
disk drive: \c
.qs
Peripheral device that reads and writes information on disk.
CP/M assigns a letter to each drive under its
control. For example, CP/M may refer to the drives in a
four-drive system as A, B, C, and D.
.sp
.sh
disk parameter block (DPB): \c
.qs
Data structure referenced by one or more disk parameter headers.
The disk parameter block defines disk characteristics in the
fields listed below:
.sp
.in 5
.nf
SPT is the total number of sectors per track.
BSH is the data allocation block shift factor.
BLM is the data allocation block mask.
EXM is the extent mask determined by BLS and DSM.
DSM is the maximum data block number.
DRM is the maximum number of directory entries--1.
AL0 reserves directory blocks.
AL1 reserves directory blocks.
CKS is the number of directory sectors check summed.
OFF is the number of reserved system tracks.
.fi
.in 0
.sp
The address of the disk parameter block is located in the disk
parameter header at DPbase +0AH. CP/M Function 31 returns the
DPB address. Drives with the same characteristics can use the
same disk parameter header, and thus the same DPB. However,
drives with different characteristics must each have their own
disk parameter header and disk parameter blocks. When the BDOS
calls the SELDSK entry point in the BIOS, SELDSK must return the
address of the drive's disk parameter header in register HL.
.sp
.sh
disk parameter header (DPH): \c
.qs
Data structure that contains information about the disk drive and
provides a scratchpad area for certain BDOS operations. The disk
parameter header contains six bytes of scratchpad area for the
BDOS, and the following five 2-byte parameters:
.sp
.in 5
.nf
XLT is the sector translation table address.
DIRBUF is the directory buffer address.
DPB is the disk parameter block address.
CSV is the checksum vector address.
ALV is the allocation vector address.
.fi
.in 0
.sp
Given n disk drives, the disk parameter headers are arranged in a
table whose first row of 16 bytes corresponds to drive 0, with
the last row corresponding to drive n-1.
.sp
.sh
DKS: \c
.qs
Parameter in the diskdef macro library specifying the number of
data blocks on the drive.
.sp
.sh
DMA: \c
.qs
Direct Memory Access. DMA is a method of transferring data from
the disk into memory directly. In a CP/M system, the BDOS calls
the BIOS entry point READ to read a sector from the disk into the
currently selected DMA address. The DMA address must be the
address of a 128-byte buffer in memory, either the default buffer
at 0080H in page zero, or a user-assigned buffer in the TPA.
Similarly, the BDOS calls the BIOS entry point WRITE to write the
record at the current DMA address to the disk.
.sp
.sh
DN: \c
.qs
Parameter in the diskdef macro library specifying the logical
drive number.
.sp
.sh
DPB: \c
.qs
See \c
.sh
disk parameter block.
.sp
.sh
DPH: \c
.qs
See \c
.sh
disk parameter header.
.sp
.sh
DRM: \c
.qs
2-byte parameter in the disk parameter block at DPB + 7. DRM is
one less than the total number of directory entries allowed for
the drive. This value is related to DPB bytes AL0 and AL1, which
allocates up to 16 blocks for directory entries.
.sp
.sh
DSM: \c
.qs
2-byte parameter of the disk parameter block at DPB + 5. DSM is
the maximum data block number supported by the drive. The
product BLS times (DSM+1) is the total number of bytes held by
the drive. This must not exceed the capacity of the physical
disk less the reserved system tracks.
.sp
.sh
editor: \c
.qs
Utility program that creates and modifies text files. An editor
can be used for creation of documents or creation of code for
computer programs. The CP/M editor is invoked by typing the
command ED next to the system prompt on the console.
.sp
.sh
EX: \c
.qs
Extent number field in an FCB. See \c
.sh
extent.
.sp
.sh
executable: \c
.qs
Ready to be run by the computer. Executable code is a series of
instructions that can be carried out by the computer. For
example, the computer cannot execute names and addresses, but it
can execute a program that prints all those names and addresses
on mailing labels.
.sp
.sh
execute a program: \c
.qs
Start the processing of executable code.
.sp
.sh
EXM: \c
.qs
See \c
.sh
extent mask.
.sp
.sh
extent: \c
.qs
16K consecutive bytes in a file. Extents are numbered from 0 to
31. One extent can contain 1, 2, 4, 8, or 16 blocks. EX is the
extent number field of an FCB and is a one-byte field at FCB +
12, where FCB labels the first byte in the FCB. Depending on the
block size (BLS) and the maximum data block number (DSM), an FCB
can contain 1, 2, 4, 8, or 16 extents. The EX field is normally
set to 0 by the user but contains the current extent number
during file I/O. The term FCB folding describes FCBs containing
more than one extent. In CP/M version 1.4, each FCB contained
only one extent. Users attempting to perform random record I/O
and maintain CP/M 1.4 compatiblity should be aware of the
implications of this difference. See \c
.sh
CP/M 1.4 compatibility.
.sp
.sh
extent mask (EXM): \c
.qs
A byte parameter in the disk parameter block located at DPB + 3.
The value of EXM is determined by the block size (BLS) and
whether the maximum data block number (DSM) exceeds 255. There
are EXM + 1 extents per directory FCB.
.sp
.sh
FCB: \c
.qs
See \c
.sh
File Control Block.
.sp
.sh
file: \c
.qs
Collection of characters, instructions, or data that can be
referenced by a unique identifier. Files are usually stored on
various types of media, such as disk, or magnetic
tape. A CP/M file is identified by a file specification and
resides on disk as a collection of from zero to 65,536 records.
Each record is 128 bytes and can contain either binary or ASCII
data. Binary files contain bytes of data that can vary in value
from 0H to 0FFH. ASCII files contain sequences of character
codes delineated by a carriage return and line-feed combination;
normally byte values range from 0H to 7FH. The directory maps
the file as a series of physical blocks. Although files are
defined as a sequence of consecutive logical records, these
records can not reside in consecutive sectors on the disk. See
also \c
.sh
block, directory, extent, record, \c
.qs
and \c
.sh
sector.
.qs
.nx apph2.tex