DEC 11 ODDPA A D_DOS_V008A_Device_Driver_Package_Oct72 D DOS V008A Device Driver Package Oct72

DEC-11-ODDPA-A-D_DOS_V008A_Device_Driver_Package_Oct72 DEC-11-ODDPA-A-D_DOS_V008A_Device_Driver_Package_Oct72

User Manual: DEC-11-ODDPA-A-D_DOS_V008A_Device_Driver_Package_Oct72

Open the PDF directly: View PDF PDF.
Page Count: 205

DownloadDEC-11-ODDPA-A-D_DOS_V008A_Device_Driver_Package_Oct72 DEC-11-ODDPA-A-D DOS V008A Device Driver Package Oct72
Open PDF In BrowserView PDF
DEC-11-0DDPA-A-D

PDP - 1 1
DE V ICE

1"\

nT"

r-

n

JJKIVtK

PAC KAGE

FOR MONITOR VERSION V008A

October 1972

SOFTWARE SUPPORT CATEGORY
The software described in this document
is supported by Digital Equipment Corporation under Category I, as defined
on page ii of this document.

For additional copies, order No. DEC-11-0DDPA-A-D from Digital Equipment
Corporation, Software Distribution Center, Maynard, Massachusetts 01754.

~

SOFTWARE
DISTRIBUTION
CENTER

First Printing, October 1972

Your attention is invited to the last two pages
of this docwnent. The "How to Obtain Software
Information" page tells you how to keep up-todate with DEC's software. The "Reader's Conunents"
page, when filled in and mailed, is beneficial to
both you and DEC; all conunents received are acknowledged and are considered when documenting subsequent manuals.

Copyright

1971, 1972 by Digital Equipment Corporation

This docwnent is for information purposes and is
subject to change without notice. DEC assumes no
responsibility for the use or reliability of its
software on equipment which is not supplied by DEC.

NEW AND CHANGED INFORMATION
This manual documents the software as of version V~8
It has been revised to include all new and changed
material since version V~4.
Such material is
indicated by vertical bars in the outside margin.
Whole new pages are not so marked but are dated in
the lower outside corner.

Tradem~rks

of Digital Equipment Corporation include:
DEC
DEC tape
DIGITAL (logo)
COMTEX-ll

PDP-ll
RSTS-ll
RSX-ll
UNIBUS

SOFTWARE

SUPPORT

CATEGORIES

Digital Equipment Corporation (DEC) makes available four categories of software. These
categories reflect the types of support a customer may expect from DEC for a specified software
product.

DEC reserves the right to change the category

or a software

product at any time.

The four categories are as follows:

Software

CATEGORY
Products Supported

at

no

Charge

This classification includes current versions of monitors, programming languages, and
support programs provided by DEC. DEC will provide installation (when applicable), advisory,
and remedial support at no charge. These services are limited to original purchasers of DEC
computer systems who have the requisite DEC equipment and software products.
At the option of DEC, a software product may be recategorized from Category I to
Category 1\ for a particular customer if the software product has been modified by the customer
or a third party.

CATEGORY
Software

Products

that

II

Receive

Support

for

a

Fee

This category includes prior versions of Category I programs and all other programs available from DEC for which support is given. Programming assistance (additional support), as
available, will be provided on these DEC programs and non-DEC programs when used in conjunction with these DEC programs and equipment supplied by DEC.

CATEGORY III
Pre-Re I ease Software
DEC may elect to release certain software products to customers in order to facilitate
finaftesting and/or customer familiarization. In this event, DEC witt limit the use of such
pre-release software to internal, non-competitive appl ications. Category III software is only
supported by DEC where this support is consistent with evaluation of the software product.
While DEC will be grateful for the reporHng of any criticism and suggesHons pertaining to a
pre-release, there exists no commitment to respond to these reports.

CATEGORY IV
Non-Supported Software
This category includes all programs for which no support is given

ii

PRE F ACE
The software described in this document is furnished to
purchaser under a license for use on a single computer
system and can be copied (with inclusion of DEC's copyright notice) only for use in such system, except as may
otherwise be provided in writing by DEC.
Within this document, Chapter 1 provides an introduction to
device drivers in general1

Chapter 2 outlines the established driver

structure conventions and the driver's interface to a program using
the driver's services1

Chapter 3 illustrates methods by which stand-

alone programs can communicate requests for service to the driver and
access the results of such requests.
each of the individual drivers.

Subsequent sections document

Each such section is preceded by a

title page on red paper.

iii

CONTENTS

CHAPTER 1.

INTRODUCTION

1-1

CHAPTER 2.

DRIVER FOR...¥.AT

2-1

2.1

2-1

Structure

2.1.1

Driver Interface Table

2-2

2.1.2

Set up Routines

2-2

2.1.3

Interrupt Servicing

2-2

2.1.4

Error Handling

2-2

2.2

Interface to the Driver

2-3

2.2.1

Control Interface

2-3

2.2.2

Interrupt Interface

2-3

CHAPTER 3.
3.1

3-1

STAND-ALONE USAGE
Driver Assembled with

Progra~

3-1

3.1.1

Setting Interrupt Vector

3-1

3.1.2

Parameter Table for Driver Call

3-2

3.1.3

Calling the Driver

3-3

3.1.4

User Registers

3-3

3.1.5

Return from Driver

3-4

3.1.6

Irrecoverable Errors

3-5

3.1.7

General Comment

3-6

3.2

Drivers Assembled Separately

3-6

3.3

Device-Independent Usage

3-8

APPENDIX A

I-O DRIVERS WITHIN THE DISK

iv

OPERAT::;:~G SYS7E~·!

A-I

CHAPTER 1
USING DEVICE DRIVERS OUTSIDE DOS

1.0

INTRODUCTION

Subroutines to handle I/O transfers between a PDP-II and each
of its peripheral devices are developed as required for use within
the Disk Operating System (DOS). These subroutines are made available within an I/O utilities Package for the benefit of PDP-II users
who have configurations unable to support DOS or who wish to run
programs outside DOS control.
All the subroutines associated with one peripheral device form
an entity known as a Driver. The Device Driver Package provides
a general description of a driver and shows how it can be used in
a stand-alone environment. The unique properties of each driver
are discussed in separate documents issued as supplements to the
Device Driver Package. The I/O Utilities Package for any system is
determined by the peripherals of that system. Thus, the full documentation for a particular package consists of the Device Driver
Package and applicable supplements.

1-1

CHAPTER 2
DRIVER FORMAT

2.1

STRUCTURE

The basic principle of all drivers under the DOS Monitor is
that they must present a common interface to the routines using
them in order to provide for device-independent operation. The
subroutines are structured to meet this end. Moreover, the driver
can be loaded anywhere in memory under Monitor control. Its code
is always position-independent.
The detailed description of a driver is found in Appendix A.
This section is concerned with driver interfaces.
2.1.1

Driver Interface Table

The first section of each driver consists of a table which
contains, in a standard format, information on the nature and capabilities of the device it represents and entry points to each of
its subroutines. The calling program can use this table as required,
regardless of the device being cal~ed.
2.1.2

Setup Routines

Each driver is expected to handle its device under the PDP-II
interrupt system. When called by a program, therefore, a driver
subroutine merely initiates the action required by setting the
device hardware registers appropriately& It returns to the
calling program by a standard subroutine exit.
The main setup routine prepares for a data transfer to or
from the device, using parameters supplied by the calling program.
Normally, blocks of data will be moved at each transfer. The driver
will only return control to the program when the whole block has
been transferred or when it is unable to continue because there is
no more data available.

2-1

The driver can also contain subroutines by which the calling
program can request start-up or shut-down action, such as leader
or trailer code for a paper tape punch, or some special function
provided by the device hardware (or a software simulation of that
for some similar device), e.g., rewind of a magnetic tape or DECtape.
2.1.3

Interrupt Servicing

The nature of the driver routine to service device interrupts
is particularly dependent upon the extent of the hardware provisions of the device for controlling transfers. In general, the
driver determines the cause of the interrupt and checks whether the
last action was performed correctly or was prevented by some error
condition. If more device action is needed to satisfy the program
requestJ the driver again initiates that action and takes a normal
interrupt exit. If the program request has been fully met, control
is returned to the program at an address supplied at the time of
the request.
2.1.4

Error Handling

Device errors can be handled in two ways. There are some
errors for which recovery can be programmed; the driver will, if
appropriate, attempt this itself (as in the case of parity or timing failure on a bulk-storage device) or will recall the program
with the error condition flagged (as at the end of a physical paper
tape). Other errors normally require external action, perhaps by an operator. The driver calls a common error handler based
on location 34 (lOT call) with supporting information on the processor stack to handle such errors.
2.2
2.2.1

INTERFACE TO THE DRIVER
Control Interface

The principal link between a calling program and any driver
subroutine is the first word of the driver table. In order to
provide the control parameters for a device operation, the calling
program prepares a list in a standardized form and places a pointer
to the list in the driver link. The called driver uses the pointer
to access the parameters. If the driver need return status information, it can place it in the list area via the link-word.

2-2

The first word of the driver can also act as a busy indicator in
that while it remains 0 the driver is not currently performing
some task, whereas when the first word contains a list-pointer the
driver can be assumed to be busy. Since most drivers support only
one job at a time, the link-word state is significant.
2.2.2

Interrupt Interface

Although the driver expects to use the interrupt system, it
does not itself ensure that its interrupt vector in the memory
area below 400 has been set up correctly; the Monitor under DOS
8
takes care of this. However, the Driver Table contains the information required to initialize the appropriate vector.

2-3

CHAPTER 3
STAND-ALONE

USE

Because each driver is designed for operation within the deviceindependent framework of DOS Monitor, it can be similarly used in
other applications. Since the easiest way to use the driver is
to assemble it with the program which requires it, this method will
be described first. Other possible methods will be discussed later.
3.1
3.1.1

DRIVER ASSEMBLED WITH PROGRAM
Setting Interrupt Vector

As noted in paragraph 2.2.2, the calling program must initialize the device transfer vector within memory locations 0-377. The
address of the driver's interrupt entry point can be identified on
the source listing by the symbolic name which appears as the content of the Driver Table Byte, DRIVER+5. The priority level at
which the driver expects to process the interrupt is at byte
DRIVER+6. For a program which can use position-dependent code,
the setup sequence might be:
MOV
MOVB
CLRB

#DVRINT, VECTOR
DRIVER+6, VECTOR+2
VECTOR+3

iSET INT. ADDRESS
iSET PRIORITY
iCLEAR UPPER STATUS BYTE

(where the Driver Table shows at DRIVER+5: .BYTE DVRINT-DRIVER).
If the program must be position-independent, it can take advantage of the fact that the Interrupt Entry address is stored as
an offset from the start of the driver, as illustrated above.
In this case, a sample sequence might be:
MOV
ADD
MOV
CLR
MOVB
ADD
CLR
MOVB

PC,Rl
#DRIVER-.,Rl
#VECTOR,R2
@R2
5(Rl),@R2
Rl, (R2) +
@R2
6(Rl) ,@R2

iGET DRIVER START
i ••• & VECTOR ADDRESSED
iSET INT. ADDRESS
i ••• AS START ADDRESS+OFFSET

iSET PRIORITY

3-1

3.1.2

Parameter Table for Driver Call

For any call to the driver, the program must provide a list
of control arguments mentioned in paragraph 2.2.1. This list must
adhere to the following format l :
[SPECIAL FUNCTION POINTER]2
[BLOCK NO.]3
STARTING MEMORY ADDRESS FOR TRANSFER
NO. OF WORDS to be transferred (2's complement)
STATUS CONTROL showing in Bits:
0-2:
8-10:

11:

Function (octally 2=WRITE, 4=READ)4
Unit (if Device can consist of several,
e.g., DECtape)
Direction for DECtape travel (0 = Forward)

ADDRESS for RETURN ON COMPLETION
[RESERVED FOR DRIVER USE] 5
The list can be assembled in the required format if its content
will not vary. The driver can return information in this area as
described in a later paragraph; however, this will not corrupt the
program data and it is cleared by the driver before it begins its
next operation.
On the other hand, most programs will probably use the same list
area for several tasks or even for different drivers. In this
case, the program must contain the necessary routine to set up the
list for each task before making the driver call, perhaps as illustrated in the next paragraph. It must be noted, however, that the
driver may refer to the list again when it is recalled by an interrupt or to return information to the calling program. Therefore, the list must not be changed until any driver has completed
a function requested; for concurrent operations, different list
areas must be provided.
lIn some cases, it can be further extended as discussed in later paragraphs.
2Required only if Driver is being called for Special Function; addresses a
Special Function Block.
3 Required

only if the Device is bulk storage (e.g., Disk or DECtape).

4Mos t devices transfer words regardless of their content, i.e., ASCII or Binary.
Some devices (e.g., Card Reader) may be handled differently depending on the mode
for these, Bit 0 must also be set to indicate ASCII=O, Binary=l. In these cases,
the driver always produces or accepts ASCII even though the device itself uses
some other code.
sThis word may be omitted if the device is bulk storage (see below).

3-2

3.1.3

Calling the Driver
To enable the driver to access the parameter list, the program

must set the first word of the driver to an address six bytes less
than that of the word containing MEMORY START ADDRESS.

It can then

directly call the driver subroutine required by a normal JSR PC,xxxx
call.
As an example, the following position-independent code might appear
in a program which wishes to read Blocks #100-103 backward from DECtape unit 3 into a buffer starting at address BUFFER:
MOV
ADD
MOV
ADD
MOV
MOV
MOV
ADD
MOV
CMP
MOV
JSR

PC,R~
#TABLE+12-.,R~
PC,@R~
# RETURN- • , @R~
#5404,-(R~)
#-10 2 4 • , - (R~)
PC,-{R~)
#BUFFER- . I @R~
#103/-(R~)
-(R~) ,-(R~)
R~,DT

PC,DT.TFR

WAIT:

TABLE: • WORD
• WORD
• WORD
• WORD
T ...71""\T")r\

.nv.l'..LI

3.1.4

~
~
~
~

iGET TABLE ADDRESS
;GET AND STORE .••
i ••. RETURN ADDRESS
iSET READ REV. UNIT 3
i4 BLOCKS REQUIRED
i GET AND STORE
i ••• BUFFER ADDRESS
iSTART BLOCK
iSUBTRACT ~ FROM POINTER
iSET DRIVER LINK
iGOTO TRANSFER ROUTINE
iRETURNS HERE WHEN
i .•. TRANSFER UNDER WAY
; RETURNS HERE WHEN
i ••• TRANSFER COMPLETE
iLIST AREA SET
i ••• BY ABOVE SEQUENCE

rI

JO

User Registers
During its setup operations for the function requested, the

driver assumes that Processor Registers 0-5 are available for its
use.

If their contents are of value, the program must save them

before the driver is called.
While servicing intermediate interrupts, the driver may need
to save or restore its registers.

It expects to have two subroutines

available for the purpose (provided by the Monitor under DOS).

It

accesses them via addresses in memory locations 448 (S.RSAV) for saves
and 46 8 (S.RRES for restores) using the sequence:
MOV
JSR

@#44,-(SP)
R5,@(SP)+

JOR 'MOV

3-3

@#46,-{SP)

It must also ensure that their start addresses are set into
the correct locations (44 and 46 ).
8
8
At its final interrupt, the driver saves the contents of
Registers 0-5 before returning control to the calling program
completion return.
3.1.5

Returns From Driver

As shown in the example in paragraph 3.1.3, the driver returns
control to the calling program immediately after the JSR as soon
as it has set the device in motion. The program can wait or carry
out alternative operations until the driver signals completion by
returning at the address specified (i.e., RETURN above). Prior
to this, the program must not attempt to access the data being read
in, nor refill a buffer being written out.
The program routine beginning at address RETURN varies
according to the device being used. In general, the driver has
given control to the routine for one of two reasons; namely, the
function has been satisfactorily performed, or it cannot be carried
out due to some hardware failure with which the driver is unable to
cope, though the program may be able to do so. In the latter case,
the driver uses the STATUS word in the program list to show the
cause:
Bit 15

=

1

Bit 14 = 1

indicates that a device parity or
timing failure occurred and the
driver has not been able to overcome
this, perhaps after several attempts.
shows that the end of the available
data has been reached.

The driver places in RO the content of its first word as a pointer
to the list concerned.
In addition, the driver can have transferred only some of the
data requested. In this case, it will show in the RESERVED word of
the program list a negative count of the words not transferred in
addition to setting Bit 14 of the STATUS word. As mentioned in the
note in paragraph 3.1.2, this applies only to non-bulk storage
devices. The drivers for DECtape or Disks! always endeavor to
complete the full transfer, even beyond a parity failure, or they
take more drastic action (see paragraph 3.1.6).

lThis includes RFll Disk; although this is basically word-oriented,
it is assumed to be subdivided into 64-word blocks.

3-4

It is thus the responsibility of the program RETURN routine to
check the information supplied by the driver in order to verify that
the transfer was satisfactory and to handle the error situations
appropriately.
In addition, the routine must contain a sequence to take care
of the Processor Stack, Registers, etc. As noted earlier, the driver
takes the completion return address after an interrupt and has saved
Registers 0-5 on the stack above the Interrupt Return Address and
Status. The program routine should, therefore, contain some sequence
to restore the processor to its state prior to such interrupt, e.g.,
using the same Restore subroutine illustrated earlier:
MOV
JSR

@#46,-{SP)
R5,@(SP)+

RTI
3.1.6

iCALL REGISTER RESTORE
iRETURN TO INTERRUPTED PROG.

Irrecoverable Errors

All hardware errors other than those noted in the previous
paragraph are more serious in that they cannot normally be overcome
by the program or by the driver on its behalf. Some of these could
be due to an operator fault, such as neglecting to turn a paper tape
reader to on or to set the correct unit number on a DECtape transport.
Once the operator has rectified the problem, the program could continue. Other errors, however, will require hardware repair or even
software repair, e.g., if the program asks for Block 2000 on a device
having a maximum of 1000. In general, all these errors will result
in the driver placing identifying information on the processor stack
and calling lOT to produce a trap through location 34 8 ,
Under DOS, the Monitor provides a routine to print a teleprinter
message when this occurs. In a stand-alone environment, the program
using the driver must itself contain the routine to handle the trap
(unless the user wishes to modify the driver error exits before assembly). The handler format will depend upon the program. Should
it wish to take advantage of the information supplied by the driver,
L~e format is as follows;

3-5

(SP) :
2 (SP):
4 (SP):
5 (SP):

Return Address
Return Status
Error No. Code
Error Type Code:

6 (SP):

Additional Information

Stored by lOT Call
generally unique to driver
1 = Recoverable after Operator
Action
3 = No recovery
such as content of Driver,
Control Register, Driver
Identity, etc.

As a rule, the driver will expect a return following the lOT call in
the case of errors in Type 1 but will contain no provision following
a return from Type 3.
3.1.7

General Comment

The source language of each driver has been written for use with
particular, .
which will not be accepted by the Paper Tape Software PAL-llR, in
particular, .TITLE, .GLOBL, and Conditional Assembly directives.
Such statements should be deleted before the source is used. Similarly,
an entry in the driver table gives the device name as .RAD50 'DT' to
obtain a specially packed format used internally by DOS. If the user
wishes to keep the name, for instance, for identification purposes
as discussed in section 3.3, .RAD50 might easily be changed to .ASCII
without detrimental effect, or it might be replaced with .WORD ~.
3.2

DRIVERS ASSEMBLED SEPARATELY

Rather than assemble the driver with every program requiring
its availability, the user may wish to hold it in binary form and
attach it to the program only when loaded. This is readily possible;
the only requirement is that the start address of the driver should
be known or be determinable by the program.
The example in paragraph 3.1.2 showed that the Interrupt Servicing routine can be accessed through an offset stored in the
Driver Table. The same technique can be used to call the setup subroutines, as these also have corresponding offsets in the Table, as
as follows:
DRlVER+7
+l~

+11
+12

Open 1
Transfer
Close 1
Special Functions l

lIf the routine is not provided, these are O.

3-6

The problem is the start address. There is the obvious solution
of assembling the driver at a fixed location so that each program
using it can immediately reference the location chosen. This ceases
to be convenient when the program has to avoid the area occupied by
the driver. A more general method is to relocate the driver as
dictated by the program using it, thus taking advantage of the
position-independent nature of the driver. The Absolute Loader,
described in the Paper Tape Software Handbook (DEC-llChapter 6, provides the capability of continuing a load from the
point at which it ended. Using this facility to enter the driver
immediately following the program, the program might contain the
following code to call the subroutine to perform the transfer illustrated in paragraph 3.1.3:
MOV
ADD
MOV
ADD

PC,Rl
#PRGEND-. ,Rl
PC,Rftf
#TABLE+12-. ,Rftf

CMP

- (R~) , - (R~)

MOV
CLR
MOVB

Rftf,@RI
-(SP)

ADD

(SP)+,RI
PC,@RI

JSR

l~(RI),@SP

;GET DRIVER START ADDRESS
iGET TABLE ADDRESS
iAND SET UP AS SHOWN
i ..• IN SECTION 3.1.3

;FINAL POINTER ADJUSTMENT
iSTORE IN DRIVER LINK
;GET BYTE SHOWING •••
i ••• TRANSFER OFFSET
iCOMPUTE ADDRESS
iGO TO DRIVER

PRGEND:
.END
This technique can be extended to cover situations in which several
drivers are used by the same program, provided that it takes account
of the size of each driver (known because of prior assembly) and
the drivers themselves are always loaded in the same order.
For example, to access the second driver, the above sequence
would be modified to:
MOV
ADD
ADD

PC,RI
#PRGEND-. ,Rl
#DVRISZ,RI

;GET DRIVER I ADDRESS
iSTEP TO DRIVER 2

DVRlSZ=n
PRGEND:
.END

3-7

An alternative method may be to use the Relocatable Assembler
PAL-llS in association with the Linker program LINK-llS, both of
which are available through the DECUS Library. The start add~ess
of each driver is identified as a global. Any calling program need
merely include a corresponding .GLOBL statement, e.g., .GLOBL DT.
3.3

DEVICE-INDEPENDENT USAGE

As mentioned earlier, the drivers are assigned for use ,in a
device-independent environment, i.e., one in which a calling program need not know in advance which driver has been associated with
a table for a particular execution run. One application of this
type might be to allow line printer output to be diverted to some
other output medium because the line printer is not currently available. Another might be to provide a general program to analyze data
samples although these on one occasion might come directly from an
Analog-to-Digital converter and on another be stored on a DECtape
because the sampling rate was too high to allow immediate evaluation.
Programs of this type should be written to use all the facilities that anyone device might offer, but not necessarily all of them.
For instance, the program should ask for start-up procedures because
it may sometime use a paper tape punch which provides them, even
though it may normally use DECtape which does not. As noted in
paragraph 2.1.1, the driver table contains an indication of its
capabilities to handle this situation. The program can thus examine
the appropriate item before calling the driver to perform some action.
As an example, the code to request start-up procedures might be (assuming RO already set to List Address):
MOV
TSTB
BPL
MOV
CLRB
MOVB
ADD
JSR

NOOPEN:

#DVRADD,Rl
2 (Rl)

NOOPEN
R~, @Rl
-(SP)
7(Rl) ,@SP
(SP)+,Rl
PC,CRl

;GET DRIVER ADDRESS
; BIT 7 SHOWS •••
i ••• OPEN ROUTINE PRESENT
iSTORE TABLE ADDRESS
;BUILD ADDRESS
; ••• OF THIS ROUTINE
; ••• AND GO TO IT
iFOLLOWED POSSIBLY BY
, iWAIT AND COMPLETION
iPROCESSING
iRETURN TO COMMON OPERATION

3-8

Similarly, the indicators show whether the device is capable of
performing input or output, or both; whether it can handle ASCII or
binary data; whether it is a bulk storage device capable of supporting a directory structure or is a terminal-type device requiring
special treatment, and the like. Other table entries show the device name as identification and how many words it might normally
expect to transfer at a time (in 16-word units). All of the information can readily be ex~uined by the calling progrwu, thus enabling
the use of a common call sequence for any I/O operation, as for
example
MOV
JSR
BR
• WORD
• WORD
• WORD
• WORD
• WORD
• WORD
• WORD

:ff:DVRADR,R5
R5,IOSUB
WAIT
1ff1
1f(13
BUFFER
-256

MOV
MOV
TST

@SP,Rf(1
R5,RI
(RI)+

MOV
ADD
CLR
MOVB
ADD
JSR
RTS

@RI,RI
Rf(1,RI
-(SP)
@RI,@SP
Rff1,@SP
PC,@(SP)+
R5

4114

RETURN
f(1

WAIT:

IOSUB:

iSET DRIVER START
iCALL SET UP SUB
iSKIP TABLE FOLLOWING ON RETURN
iTRANSFER REQUIRED
iBLOCK NO •
; BUFFER ADDRESS
iWORD COUNT
iREAD FROM UNIT I
iEXIT ON COMPLETION
iRESERVED
iCONTINUE HERE •••
iWHILE TRANSFER IN PROGRESS

iPICK UP DRIVER ADDR
iSET POINTER TO LIST
iBUMP TO COLLECT CONTENT
iROUTINE CHECKS ON DEVICE
i •• CAPABILITY USING RI
i •• TO ACCESS LIST AND
i •• Rf(1 THE DRIVER TABLE
iIF O.K •••
iGET ROUTINE OFFSET
iUSE IT TO BUILD
i ••• ENTRY POINT
iCALL DRIVER
iEXIT TO CALLER

The calling program, or a subroutine of the type just illustrated,
may also wish to take advantage of a feature mentioned earlier: the
fact that when a driver is in use its first word will be non-zero.
The driver itself does not clear this word except in special cases
shown in the description for the driver concerned. If the program
itself always ensures that it is set to zero between driver tasks,
this word forms a suitable driver-busy flag. Under DOS, the program
parameter list is extended to allow additional words to provide linkage between lists as a queue of which the list indicated in the driver
first word is the first link.

3-9

The preceding paragraphs are intended to indicate possible ways
of incorporating the drivers available into the type of environment
for which they were designed. The user will probably find others.
However, he should carefully read the more detailed description of
the driver structure in Appendix A, and the individual driver specifications before determining the final form of his program.
A word of warning is appropriate here. Although most drivers
set up an operation and then wait for an interrupt to produce a
completion state, there are some cases in which the driver can finish its required task without an interrupt, e.g., "opening" a paper
tape reader involves only a check on its status. Moreover, where
"Special Functions" are concerned, the driver routine may determine
from the code specified that the function is not applicable to its
device and, therefore, will have nothing to do. In such cases, the
driver clears the intermediate return address from the processor
stack and immediately takes the completion return. Special problems
can arise, however, if the driver concerned is servicing several
tasks, any of which can causes a queue for the driver's services
under DOS. To overcome these problems, the driver expects to be
able to refer to flags outside the scope of the list so far described. This can mean that a program using such a driver may also
need to extend the list range to cover such possibilities. Particular
care should be exercised in such cases.

3-10

APPENDIX

A

1-0 DRIVERS WITHIN THE DISK OPERATING SYSTEM

The principal function of an I/O driver is to satisfy a Monitor processing routine's requirement for the transfer of a block of data in
a standard format to or from the device it services.

This will in-

volve both setting up the device hardware registers to cause the transfer and its control under the interrupt scheme of PDP-lI, making
allowance for peculiar device characteristics (e.g., conversion to or
from ASCII if some special code is used).
It may also include routines for handling device start-up or
shut-down such as punching leader or trailer, and for making available
to the user certain special features of the device, such as rewind
of magtape.
A.I
~n

Driver Structure
order to provide a common interface to the monitor, all drivers

must begin with a table of identifying information as follows:

BUS¥ FLAG (initially fJ)

DVR:

FACILITY INDICATOR (expanded below)
Offset to
Interrupt Routine*

Standard Buffer Size
in 16-word Units.

Offset to
OPEN Routine

*

Priority for
Interrupt Service

Offset to
CLOSE Routine

*

Offset to
Transfer Routine

Space

I

*

Offset to
Special Functions*
DEVICE

NAME (Packed

Radix-5~)

Offsets marked * will enable calling routine to
indicate routine required. They will be considered to be an unsigned value to be added to the
start address of the driver. This may mean that
with a 256-word ma~imum, the instruction referenced
by the offset will be JMP or BR (routine).
Bits in the Facility Indicator Word define the device for monitor reference:

A-I

GENERAL STRUCTURE

SPECIAL STRUCTURES

FileStructured
Device DECDevice
tape (or
Contains
similarly
reversible)
Contains CLOSE ----~
magtape
..
Contains SPECIAL----~
*=Mult1-un1t System
type devices (i.e., RK disk).

Output
Device
Input Device
Binary Device
ASCII Device

The table should be extended as follows if the device is filestructured:
BLOCK USED AS MASTER FILE DIRECTORY
POINTER TO BIT-MAP IN MEMORY

unit

~

Similar Bit-Map
Pointers for
} MUlti-unit
__~~____~
Devices
The driver routines to set up the transfer and control it under
interrupt, and possibly for OPEN, CLOSE, and SPECIAL, follow the
table.
A.2

Their detailed operation will be described later.

Monitor Calling

When a Monitor I/O processing routine needs to call the driver, i t
first sets up the parameters for the driver operation in relevant
words of the appropriate DDBl, as follows:
~

XYZ:

--

-

(User Call Address)
(User Line Address)

SPECIAL FUNCTION CODE
DEVICE BLOCK NUMBER
MEMORY START ADDRESS
WORD COUNT (2' s Complement)
TRANSFER FUNCTIONS (expanded below)
COMPLETION RETURN ADDRESS
(DRIVER WORD-COUNT RETURN) Set to Zerc

.-

--

-

IDataset Data Block - in full, a l6-word table which provides the main
source of co~~unication between the Monitor drivers and a particular set
of data being processed on behalf of a using program.

A-2

The relevant content of the Transfer Function word is as follows:

EOF
or
EOD l

.~.
+

Used by Driver
to indicate
Hardware Parit~
Fail

TT Echo Control

t
Open vs.
Closed l

DECtape
reverse
DEVICE
UNIT

Provided that the Facility Indicator in the Driver Table described above shows that the driver is able to satisfy the request, both from the point of view of direction and mode and of the
service required, the Monitor routine places in Register I the relative
byte address of the entry in the Driver Table containing the offset to
the routine to be used (e.g., for the Transfer routine, this would be
l~).

It then calls the Driver Queue Manager, using JSR PC,S.CDB.
The Driver Queue Manager assures that the driver is free to

accept the request, by reference to the B~sy Flag (Word ~ of the
driver table). If this contains ~! the Queue Manager inserts the
address of the DDB from Register

~

and jumps to the start of the

routine in the driver using Register I content to evaluate the address
required.

If the driver is already occupied, the new request is

placed in a queue linking the appropriate DDB's for datasets waiting
for the driver's services. It is taken from the queue when the driver
completes its current task.

(This is done by a recall to the Queue

Manager from the routine just serviced,

u~ing

JSR

PC,S.CDQ~)

On entry to the Driver Routine, therefore, the address following
the Monitor routine call remains as the "top" element of the processor
stack •. It can be used by the driver in order to make an immediate
return to the Monitor (having initiated the function requested), using
RTS PC. It should also be noted that the Monitor routine will have
saved register contents if it needs them after the device action. The
driver may thus freely use the registers for its own operations.
lNote that bits 7 and 14 are undefined in DOS Monitors which precede V~~8.

A-3

When the driver has completely satisfied the Monitor request,
it should return control to the Monitor using the address set into
the DDB.

On such return, Register

~

must be set to contain the

address of the DDB just serviced and since the return will normally
follow an interrupt, Registers ~-5 at the interrupt must be
stored on top of the stack.
A.3

Driver Routines

A.3.1

TRANSFER

The sole purpose of the TRANSFER routine is to set the device in
motion.

As ind1cated above, the information needed to load the hard-

ware registers is available in the DDB, whose address is contained in
the first word of the driver.

Conversion of the stored values is,

of course, the function of the routine.

It must also enable the

interrupt; however, it need not take any action to set the interrupt
vectors as these will have been preset by the Monitor when the driver
is brought into core.

Having then given the device GO, an immediate

return to the calling processor should be made by RTS PC.
A.3.2

Interrupt Servicing

The form of this routine depends upon the nature of the device.

In

most drivers it will fall into two parts, one for handling the termination of a normal transfer and the other to deal with reported
error conditions.
For devices which are word or byte-oriented, the routine must
provide for individual word or byte transfers, with appropriate
treatment of certain characters (e.g., TAB or Null) and for their
conversion between ASCII or binary and any special device coding
scheme, until either the word count in the DDB is satisfied or an
error prevents this.

On these devices, the most likely cause for

such error is the detection of the end of the physical medium; its
treatment will vary according to whether the device is providing
input or accepting output.

The calling program will usually need to

take action in the former case and the driver should merely indicate
the error by returning the unexpired portion of the word count in
DDB Word 7 on exit to the Monitor.

Output End of Data, however,

will, in general, require operator action.

To obtain this, the

driver should call the Error Diagnostic Print routine within the
Monitor by:

A-4

MOV
MOV
lOT

DEVNAM,-(SP)

;SHOW DEVICE NAME
;SHOW DEVICE NOT READY
;CALL ERROR DIAGNOSTIC·PRINT ROUTINE

#4~2,O(SP}

On the assumption that the operator will reset the device for further
output and request continuation, the driver must follow the above sequence with a Branch or Jump to produce the desired resumption of the
transfer.
Normal transfer handling on blocked devices (or those like RFll
Disk which are treated as such) is probably simpler since the hardware
takes care of individual words or bytes and the interrupt only occurs
on completion.

Errors may arise from many more causes, and their

handling is, as a result, much more complex and device dependent.

In

general, those which indicate definite hardware malfunctions must
lead to the situation in which the operator must be informed by
diagnostic message and the only recourse after rectification will be
to start the program over.
At the other end of the scale there are errors which the driver
itself can attempt to overcome by restarting the transfer
parity failure on input is a common example.

device

If a retrial, or

several, still does not enable a satisfactory conclusion, the driver
should normally allow programmed recovery and merely indicate the
error by Bit 15 of DDB word S.

Nevertheless, because the program may

wish to process the data despite the error, the driver should attempt
to transfer the whole block requested if this has not already been
effected.

Between these two extremes, the remaining "forms of error

must be processed according to the type of recovery deemed desirable.
Whether the routine uses processor registers for its operation
or not will naturally depend on considerations of the core space saved
against the time taken to save the user's content.

However, on

completion (or error return to the Monitor), as indicated in an earlier
paragraph, the calling routine expects the top of the stack to contain
the contents of Registers

~-S

and Register

address of the DDB just serviced.

~

to be set to the

The driver must, therefore, provide

for this.
A. 3. 3

OPEN

This routine need be provided only for those devices for which some
hardware initialization by the user is required.

A-S

It should not

normally appear in drivers for devices used in a file-oriented manner.
Its presence must be indicated by the appropriate bit (Bit 7) in the
driver table Facility Indicator.
The routine itself may vary according to the transfer direction
of the device.

For output devices, the probable action required is

the transmission of appropriate data, e.g., CR/LF at a keyboard
terminal, form-feed at a printer, or null characters as punched leader
code, and for this a return interrupt is expected.

The OPEN routine

should then be somewhat similar to that for TRANSFER in that it merely
sets the device going and makes an interim return via RTS PC, waiting
until completion of the whole transmission before taking the final
return address in the DDB.
On the other hand, an input OPEN will likely consist of just a
check on the readiness of the device to provide data when requested.
In this case, the desired function can be effected without any interrupt
wait.

The routine should, therefore, take the completion return immed-

iately.

Nevertheless, it must ensure that the saved PC value on top

of the stack from the call to S.CDB is appropriately
exit.

removed before

In the case of drivers which can only service one dataset at a

time (i.e., Bit

~

of their Facility Pattern word is set to

~)

and can

never, therefore, be queued; i t will be sufficient to use TST (SP)+
toeffect this.

A multi-user driver, however, must allow for the

possibility that it may be recalled to perform some new task waiting in a queue.

This is shwon by the byte at DDB-3 being non-zero.

In this case, the intermediate return to the routine originally
requesting the new task has already been made directly by S.CDB.

The

address now on top of the stack is the return to the routine, whose
task the driver has just completed and which has called S.CDQ to
dequeue the driver.

This return must be taken when the first routine

has performed its Completion Return processing.
routine expects to exit as from an interrupt.
from a queue, it must simulate this interrupt.

Moreover, this first
When a driver is recalled
A possible sequence

might be:

EXIT:

MOV
MOV
TSTB
BEQ
MOV
MOV
SUB
JMP

DRIVER, R~
(SP)+,R5
-3(R~)

EXIT
@#l77776,-(SP)
R5,-(SP)
#14,SP

iPICK UP DDB ADDRESS
;SAVE INTERIM RETURN
;COME FROM QUEUE?
iIF SO, STORE STATUS

; ... & RETURN
iDUMMY SAVE REGS

@14(R~)

A-6

A.3.4

CLOSE
-----

As with OPEN, this routine should provide for the possibility of some
form of hardware shut down such as the punching of trailer code and
is not necessary for file-structured devices.

Moreover, it is likely

to be a requirement for output devices only.

If it is provided,

Driver Table Facility Indicator (Bit 6) must

be set.

Again, the probable form is initialization of the hardware action
required, with immediate return via RTS PC and eventual completion
return via the DDB-stored address.
A.3.5

SPECIAL

This routine may be included if either the device itself contains the
hardware to perform some special function or there is a need for
software simulation of such hardware on other devices, e.g., tape
rewind.

It should not be provided

otherwise.

Its presence must be

indicated by Bit 5 of the Facility Indicator.
The function itself is stored by the Monitor as a code in the
DDB as shown earlier.

When called, the driver routine must determine

whether such function is appropriate in its case.

If not, the

completion return should be taken immediately with prior stack clearance, as discussed under OPEN.

For a recognized function, the

necessary routine must be provided.

Again, its exit method will

depend upon the necessity for an interrupt wait or otherwise.
A.4

Drivers for Terminals

The rate of input from terminal devices is normally dictated externally
by the operator, rather than being program-driven; moreover, for both
input and output, the amount of data to be transferred on each
occasion may be a varying value, i.e., a line rather than a block of
standard size.

Furthermore, there may be problems with the conflict

between echo of input during output.

As a result, drivers for such

devices will demand special treatment.
Normal output operation, i.e., .WRITE by the program, is handled
by the Monitor Processor.

On recognizing that the device being used is

a terminal, as shown by Bit 8 of the facility indicator, this routine
always causes a driver transfer at the end of the user line, even
though the internal buffer has not been filled.

The driver, however,

is given the whole of a standard buffer, padded as necessary with

A-7

nulls.

Provided the driver can ignore these, the effect is that of

just a line of output.
Input control on the other hand, must remain driver
ity.

responsibil~

Overcoming the rate problem will, in most cases, require circu-

lar buffering within the driver until demanded by the Monitor.
this point, transfer of data already in should occur.

At

If this is

sufficient to fill the monitor buffer, the driver can await the next
request before further transfer onward.

If insufficient, it should

operate as any other device and use subsequent interrupts to continue
to satisfy the Monitor request.

It must, nevertheless, stop any

transfer at the end of a line in normal operation.

In order to allow

the Monitor to continue, the driver must simulate the filling of the
buffer by null padding (of no consequence, since terminals are by
nature character-based).

(Normal operation, of course, means response

to user .READ's and is indicated by the size of the buffer to be
filled, namely the driver standard.

Should the user be requesting

.TRAN'S, the buffer size will vary from the standard in all likelihood
and the driver may then assume he requires operation as a normal
device -- complete buffer fill-up before return.)
Where input echo is a further complexity, there will doubtless
be other requirements.

If the echo is made immediately after the

input, it may be desirable to have a second buffer to cater for the
likely situation that the echo will not exactly match its origin.
On the other hand, if the echo is held for any length of time, perhaps
to provide correct relations between program-driven output and the
echo, the second buffer could be too expensive,

A larger input buffer

and routines to allow for several outputs to one input character while
sitting on that character might be more convenient.

The conflict

between such echo and program-driven output will require controlled
switching within the driver input and output handlers.

A-8

DEC-ll-ODDCA-A-D

.PDP-II
RCII

DIS K D R I V E R

October 1972
SUPPLEMENT TO:
PDP-II DEVICE DRIVER PACKAGE
DEC-ll-ODDPA-A-D
MONITOR VERSION
COPYRIGHT

0

V~~8

1972 BY DIGITAL EQUIPMENT CORPORATION

NOTE
This document is for information purposes only
and is subject to change without notice. DEC
assumes no responsibility for the use or reliability of its software on equipment which is
not supplied by DEC.

NEW AND CHANGED INFORMATION
This manual documents the software as of Monitor version V~8. It has
been revised to include all new and changed material since Monitor
version V~4. Such material is indicated by vertical bars in the outside margin. Whole new pages are not so marked but are dated in the
lower outside corner.

~

SOFTWARE
DISTRIBUTION
CENTER

RCII DISK DRIVER
The RCII Disk Driver provides the software interface between the RCII
Control and the Monitor in the Disk Operating System on PDP-II.

It

consists of routines to initiate block transfers of data to or from
the disk and to handle interrupts arising from completion or through
failure.
It does not include OPEN & CLOSE processors.

As a file-structured

device, these will be unnecessary owing to the form of the Monitor
file-management system.

SPECIAL FUNCTION processing is also omitted.

If it is found necessary to simulate the hardware function of a similar
device, the necessary routine could be added later.
This driver is part of the permanently resident Monitor when the
RCII is the system disk for DOS; it can nevertheless be used when the
RCII is just another device on a system based on a different type of
disk.

The driver is in two parts:

1) a table providing the interface

between the driver and the Monitor, and 2} the routines to service the
calls for disk operations.
1.

Driver Table

The Driver Table (DC)

occupies the first nine words of the driver.

It

complies with the standards specified for all Monitor-driver interfacing in general, and for file-structured devices in particular.

The

descriptive elements of the table are set up as follows:
a)

Facilities available:
= 100037

b)

Standard buffer size:
Interrupt vector address:
Interrupt servicing
priority
Device name
Directory start block:
No. of bit map pointers:

c)
d)
e)
f)
g)

Multi-dataset handling on a single
unit.
Input & output in ASCII or binary.
File-structured with no limit to
the number of files that may be in
creation at one time.
64
21~

5
DC

1

1

I

2.

Service Routines

The driver contains two routines:

Set-up Transfer and Service Inter-

rupt.
2.1

Setup Transfer (DC.TFR)

This routine first initializes a counter which is used to control the
number of retries in the event of parity or timing failure.

Using the

address of the DDB for the dataset it is servicing (as supplied by the
calling routine in the first word of the driver table), it then collects
control data from the DDBand transmits it to the hardware registers
for the Rell, beginning at 377440 ..
Two of the items involved require special processing before outward transmission; the rest are moved directly.
1.

For compatibility with RFll based DOS systems, the
disk is handled in blocks of 64-words which are assumed to be continuous across whole RCII disk surface l • The block number passed to the driver must
be converted to the 32-word sector and drive structure of the hardware.

2.

The function bits contained in the DDB automatically produce the required transfer operation. To
them, however, must be added the INT ENB & GO bits
(combined value lOIS) needed to set the RCII Control.
Register correctly for the transfer operation to begin.

On completion of the setup, control is returned to the calling
Monitor routine via themterim return address stored on top of the stack
by the calling sequence.
2.2

Interrupt Service (DC. INTl

The RCII Control causes a priority-5 interrupt either on satisfactory
completion of the transfer or because an error has been detected.

Hav-

ing saved the processor registers on the stack, the servicing routine
must-determine which of these events has occurred by examination of
bit 15 of the Control Status Register.

On transfer completion, it

collects the address of the DDB it is servicing from the first word of
the driver table
in the DDB.

and~es

it to return to the completion address set

At this exit,

R~

is set to the DDB address, as required

by the established convention.
IAlthough the user may manually set disk drive numbers without regard
for sequence, the DOS Monitor will assume that a strict ascending order
has been established, i.e., Units ~ and 1 on a two-drive system. Drive
units out of sequence will be ignored.
2

An error may be one of the several types as indicated by further
bits of the Control Status or Extended Status registers.

The servicing

routine, however, is concerned with only two categories:
(1)

Errors which can be handledmternally

Data Synchronization or Block Parity failures may be eliminated on a
second or later attempt.

For the sake of simplicity, a retry is initi-

ated by restarting the transfer from the beginning again rather than
from the point at which

the error was detected.

eighth attempt produces no satisfactory result,
sets Bit 15 of word DDB+12 to show the failure.

If finally the
th~

processing routine

When a block-parity

error is its cause, the data may still be of some value to the user
program and so is passed on.

However there may still be some words

yet to be transferred beyond the failing block.
attempts to resume from this point.
takes the normal completion exit.
as fatal (see below).

The routine therefore

If this is successful, i t then
Further failure, however, is treated

Such treatment is immediate in the case of a

repeated data sync error, since then no data can have yet been transferred.
(2)

Errors which must be rectified by the operator when recovery is possible

All other failures cause an exit to the Error diagnostic print routine,
with DSK ERROR F026 as the message and the contents of the Control Status register as evidence.

Write lock-out or non-resident disk may be

the result of an operator fault.

The operator may be able to correct

this and resume program execution by the appropriate keyboard command.
Such action will probably be impossible in the case of a non-existent
memory error, and other errors classified as

I

HARD I in the RCll Speci-

fication or after persistent parity or timing failures.
(3)

Vl"a

Program Li$ting

A complete assembly listing of the driver follows.

3

1
:2

,

,vERS TO~!

J
A

e
e

,TITLF.

,e

"\I,ce

,I'H 81< DRTvER tRrl1'

,
,,
,,,
,
J

9
1Pl
1t
\2
13

J

1A

,

1!5
16
l'
18

"'(I\P(.u~e

RP:l~0

C"~C"v:P1

~t:l"1

19

(lI~1C'eC'l2

R2~!(2

20

f?'-10'~r.3

R~.x3

~1
~2

"0"eCJ4

Rd=~4

~0C'(?'P5

R5.~5

23

f?tH'e"6

SP.~6

24

C1~H'e"'7

Pr,.t7

2~

VFR~tON 1
IF RC11 I~ THP ~Y~TFM DISK, • !~C~T FOR~ eF T~IS
ORIVER ~Av ~E OBTAtNEO BY tNCLLOING • OFFt~JTrON
FOR 'SYSD\I'. FOR ~ ~V5TFM BAS~C e~ j ~rFFERFNT
OTSK, T~IS ~RrV~R MAY B~ ASSE~elE~ ~ITH A
DfFr~rTro~ AN~ ~C11 MAY T~EN ~e TREATFO A! JU~T
~NOT!-!fR

~7

V0pel" ~0'e"'~
28 p."'l"e~
e37
vepe~

""'' '0d

J0
31 Vep05

2t'1e
vr4

'TAALE
or.
DeFLG~1

DF\lTCF..

THIS VERSTON CONTAI~S SET-UP I TRANSFPR
rt-;L v",

Rf'lUTINE~

.GLt18L

26
~g

~JU~AF.~ t

nr

DC

·ST.~DA~rs

ANO

p("\r~TF.RS

to

,wORn
.RYTE

0
37

~RYTE

4

.~TANO'RD

_RYTE

,rURRF-~T ~o~ .oeRfSS
!~ !~L!'
J~TANejRO FACILITY YNOfCATOR

2ve

JrN~R~~l ~ FIl!~e.S~D'

Or..1NT.nc

AUFFEP

2~e

0

''''E'SPA'ft!~

D~,TFR.~C

,SH~WS

!,0C'11~

e'2

~0"11

~~e

1101'112
37 P0"'1~
38 V0P141

,re

ep.~

.~YTF.

0

.~YTE

~

J~PARF.

pl~51r

J9

V0f'1~

~~pe~l

.wO~D

Dr."IR

4~

peli'2~

~0r0~~

.wo~o

~

'~F" ~Lt'Jetc
,RE~ut~F.O F~R

Ve~ell'

24e

3~ V0"'07

~~p

32

:!A
J5
~6

Dr.~~~J

.RAns~

~IZE/le

,T,V, eClNTE~T
,PRTORITY FOR T~~~

,BYTE
.RYTE
.RYTE
,RYTE
,8YTE

e7~

TF~

TABLE
RT~

eNLY

0

'ecI

4

8fT MAP !N'O

ev,r.c:
,TRANSFFR INITIATE

1
~

0Pro"'2~

ru 767 Or.TFRI

M~V

~PC,DC.RTe

'ZE~O

MfW

DC,P0

~GE'f

CMP

(P0~+,(R0'.

~rC'.DCS .. 4.R'

'RU~P Fn!NTFR T~ ~LoeK NC~

~nv

~FTPY

eOU~T

liIe!"!1C72
~

0Ve'''2~

f11f7!."~

'7771J.6
4 0"0~32 C'2202{2!

e

,et

0V0"'34

~1~7('i!2

oe.RPT,

0V.0~4t'!

t'J!12e;2

!"in\!

0P.0~.1~
0e0~44

P0f:312

ASL

f.'I6'7fl'2

ADO

S 0V0t"50 "12e12
U!! V0fl'52 (')\1~~42
11 V0~5d r1~e"'1

12 P0t'!5~ '517~1
13 V0"'6t'! r4'7"'1
177470
14 V0~6A "1Pt42
16

~"'~

POINTE~

177442

r.-'0P'~He

le

I~ET

nCR ADrJRFSS

V0"'6~ f'0t'2P],

(!::e'4;,.~2

,R2

tin e, R2
,~OVf IN AonR
\t; 0 RC enU,,! T

~H'\V

(R0, ... ,.R2

MOV

(P0,·,.rR"

J"

MMV

RfGC. ~:~

(R~'.,R1

,ra:':T FLNCT!ON

8158

flPt':.R1

BTC

4if117410,R1

,AD~ T~T FNB ~ ~e
,REMOVE OTHF-q GARP.~~E (******,

MOV
RTS

,e •••••• ,

~

R1,.CR2)
,SENO TC rO~TPOl
pr.
,RETUR~ T~ ~ONITOR FO~ NC~
CAR'l!ll US!O AS LITFRAL AV P~EV!~US INSTPUeT!ON

5

ev.rc
1
2 el'e'0'7"

1TNTfRRUFT 5ERvrCF
('Il~74c

Dr.r~TI

tlnV

.4tV·.R5AV,·C~P'

f'.'0~e~4

~

ep0~i'4

0'~;.:I5~E

.r~R

~5,-(~P'.

4

0Pe,P.7';

0!1F7~1/I

MI"IV

f'1r.~0

'77676
S 0(',,1e2 t?U'7 01 1

Mr,V

till

'77~(jd

f

0p.~,e~

"1'-1"'3

'J 0VrH 10' H';f' d1 1

e

0V.0tl~

~

0"0·14 10"4172

Ie

V(:H 16 r,xtH',. 70
r?0"014

Mnv

(~1'''',R3

["Ir,AGN

R~<4

or,XIT.

r: C." fH': S • 2 • R 1

R~n

MtjV

C?'1"~2

,GET nCR

I

.n~p

r(H"~t"e

or,RTC • • WORri

EPRf"\R STATt.:5 REt;S~
OATA tATE SFT T~V A~ArN
,ANV Ff;ROR3 SEE~'l
'~A\lE

un'+,R2

.

(';0 FtN" eAUSF
,YES
,RETURI'; ~nNrTeR

or.FRR

'44(RO')

Rrs

,....
~

,T~R

pr,rc'.RF'T

rl~7!'15

Dr.PEr..

~1nv

.~v.xr",R!'5

,TMP

~1(R~

A~l.

R~

. ,'

'

,TF se

DC,PER

Dr..AG~1

.. ,

eAUSF
,FOR
' , ~~TA FAILURE •••
AtRFAf'!V RFTRIEO 8
FR~OR

,CfofFCI<

~

16 V0132 1t1~4f,11f
l ' vet3d rli04767

RFGS~,

M/W

PTR TO

ITF

,FRROR ~O'jTrt\fl
11
R:?
12 V'H2~ 0ft1F3t'.l12 Or,F'RR. ASL
OC,r'lFF
RPL
13 V~H24 1 !iHJV:?4
(Pc,.
14 ve12f1; I?~F3;"7
A~L
15 V0'3",

,GET

AO~RFS~

TJM~5!

rO~TrNU!

FCr6

~C'V

",,0(1),.(5P)

,fHSI<

tll''lV

""C.E~O,"'fS'"

,5ET LF EPROR Ne.

(?3'7~7

6TT

tIII~DPv~,,,eFL~S

J~V~TE~

RFQ
r.IR

()r,~Nrl

, ~iO •
,r'Or'lE

fVIOE~er:

O,:tIvE"'l

£!'1"e(7l~

,17751'4

33 re216

~}Vl'-4~'1

~A

r?0~2(J!

"k1"01ti

~5

"0'22

~(il~P0'4

,.~p

OC"SND' trr

,GO iC

6

ePA ~IC: 101
Tn

NM\Ifj

rOMMON E)(IT

,775'6

~0

T

erSK

,eO~Tr~UE

1,

FH. or I<

,AL,:tEACV AT
,Tf
,NO

FORC:~

'" r Ar.;

l.

A ~Al.T

F'RT.

!774~6

H)EFI~'!TrnNS.
Dr,OC~~'71446

~~(I!~~1

Dr.!'HRI!I:1

00t4~e

Dr.fNO=t4'6

~\~e~e

S~RVR.1~00~

~0~e:44 V'.RS4V=4d
r'liH'0d2 V'.XrTa4'
~0C'et;'!11

\IFNI")

7

ev,r.c

~ACPC

~V""P.Ol

V~04.14

1~·SEP.'2

0~:50

PAGF d.

TARLF

ce

ce,r.cg.

e~0~fif.ll~r;
177~d~

CC:.~FT

~P'V.'!12'R
0~e176r:t
0~011'32R

CC.TFR

0t'10"22R

ce.FRR

CC.CFF

nr.FLG~

00!0!P02R

O",DtFh

Q!!?eC'~t

f)1';.TNT
DC. PER

nr..RTC
or.XIT

De,AG~

0t'!0,3.dR
0011426

0t:'!e1l'7eQ
0P~ 1. S?R

"C,NA'"

09€t31'-R

cr.~~e

0P!2!9't4R
0()!0t4P!R
00!0'2'R

0r;J~t1~R

or,F'Nr.
D(,REr.

pe

.%0010~QJ'

~0

=%e(~~H')eCl

R1

a~~~0Ii!e,.

R~

.%0Ii!e00~

~J

1I~0P10~03

.~0ti'~!'e4

R5

.~e0l0P!05

SOR\lR

II

R4
Sp

0'0P:elil

.~"'PIZ('.1~H~

\;.XTT • 0"00'42

•

A~S.

0"0~fl~
~"'~'24

1?J0~

tHH

ERRr.R5 "ETErTFne 0
FREF. r.ORff lQ413~ WORDS
,LP,

000007 PC-X?
00000~
000~02

""01't000

000003

2'30

000004

£104
070
240

000~0!5

00000e

01210007
0012HH'"

000011
000012

037

0021

022
000
000

000
0l'!0P114 014510
0Q1001e 000001
000020 ~"~0Q10
000013

000'322

~1t767
00~102

,GLOSL OC,S,RSAV,S.XIT
,TABLE OF STANDARDS AND POINTERS
DCI
.WORD
0
,CURRENT DOB ADDRESS (0 IF IO~E'
.BYTE
37
,STANOA~O FACILITY INOICATOq
.BYTE
200
,(NOR~AL & FILE-BASEO)
.BYTE
4
,STANDA~O BUFFER SIZE/16
.8YTE
DC,tNT.OC
,T.V, CONTENT
.BYTE
240
,PRIORITY FOR T,V.
,8YTE
"
,DESPATCH TABLE
,RYTE
DC,TFR.OC
,SHOWS TFR RTN nNLY
,8YTE
"
.BYTE
"
.BYTE
0
,SPARE
DC;NAM! .RAD50 'DC'
.WORD
DC.OIR
,MFO BL,~CK
,WORD
0
,REQUIRED FOR BYT M4P INFO

,TRANSFER INITIATE
DC.TFRI MOV
'PC,DC,RTC

000026 016700
MOV
177746
0210032 022020 OC,RPT: Ct.ip
000034 12112702
MOV
177442
00"~40 012012
MOV
000"42 005312
000044 ~62702
00Pl010
00005~

000052
0I2H(J~54

~12012
~12042
~1J12001

0009156 151701

"00050 2142701

177470
000064 01'lI142
000t'166

~00207

ASL
AOD

MOV

MOV
MOV

BISB
BIC

,ZERO R!TRV

COU~T

DC,R0

,GET Doe AOl'HU':SS

(R0, ... ,(R0)+

,BUMP POINTER TO
,SET HItI~ POINTER

#DC.OCS-4,R2
CR0)+,ctl'~2

'~2

#10,R2
CR0)+,.R2
CR0'+, ... CR2)
CR0)+,Rl
.PC,Rl
#177410,Rl

MOV
RTS

,MOVE

I~ 8LOC~

J ••• MODIFIEO

,STEP TO

~O.

~EMORY

,~OVE IN ADOR
WO~D COUNT

,I

B~OCK

NO.

, ••

STOQE

REQO. ",

,GET FUNCTION
,ADO INT ENS & GO
,~EMOVE OTHE~ GARBAGE C******,

Rt,·CR2)
,SEND T~ CONTROL
PC
,RETUR~ TO MO~ITOR FOR NOW
,e.****.) • CAREII" USED AS LITERAL ey PREVIOUS INSTRueTIO~
9

000~7'" ~13746

00C'J044

,INTERRUPT SERVICE
OC,INT, .IFDF
SYSDV
JSR
R5,S.RSAY
.ENDC
.IFNDF SYSDV
MOV
'#V.RSAV,eCSP)

000014 0214636

016700
177676
000102 012701
177444
000106 A12103
000110 100411
01210112 ~12102
00011d 100402
2100116 0)00170 OC.XITI
000014

00007~

,GO SAY! REGISTERS

JSR
.ENDC
MOV

R5,.(SP)+
DC,Re!

,GET

!')o~

ADDRESS

MOY

*I)C.DCS"'2,Rl

,GET

~T~

TO H/W REGS.

MaY

(Rl)+,R3
DC.AGN
(Rl)+,R2
DC,ERR
'14CR0)

,SAVE ERROR STATUS REGS,
,IF DATA LATE SET TRY AGAIN
,ANY ERRORS SEEN?
,VES '" GO FIND CAUSE
,RETURN MONITOR

R2
DC.OFF
(PC).

,CHECK ERROR CAUSE .,.
,FOR OATA FAILURE •• ,
, •••• ALREADY RETRI!D 8 TIMES?

DC,PER
PC,DC.RPT

,IF SO FORCE CONTt~UE
,OTHERWISE TRY AGAIN

SVSOV
S.XIT+4

,TAKE COMMON EXIT

B~I

MOY
BMI
Jf~P

,ERROR ROUTINE,

01210122 PJ06302 DC.ERR. ASL

BPL
0l'l0126 "06327
ASL
0001321 "'00000 DC.RTC, .WORD
000124 U!l1!!024

000132 103406
ecs
000134 ~04767 DC •• GN. JSR
177672

DC.REe. ,IFDF
JMP

000140 0113705
000042
000144 01210165

o

.ENDC
.If'NDF
MOY

SYSDV
,NV,XIT,RS

JMP

4(R5)

"000~4

,ENDC

000150 1i106303 DC.PER. ASL
000152 100011
BPL
0210154 ~527e0
8IS
100000
000012
000162 005711
TST
00016A ~01754
SEQ
000166 m11767
MOV
177736
000172 005241
It..IC
000174 A0~761
B~

R3
DC.OFF
#10l'1000,12(Q0,

,IF OATA SYNC ERR. NOW, ••
, •• ~ TREAT AS FATAL
,RETUqN PARITY FAIL FLAG

.Rl
DC,XIT
'F'C,DC.RTC

,ALREADY AT BLOCK E~D?
,IF SO EXtT NOW
,NO MORE REPEAT TRIES NOW

.CRt)
,CONTINUE DISK TRANSFER
DC,REC
f, •• VIA COMMON EXIT
,ERROR IS NOT IMMEDIATELY R€COVERAB~EI
()C,OFF, .IFDF
SYSOV
ClR
DC
,FREE DISK FOR ~DP
,ENOC
00017e g1 4 146
MOY
e(Rll,·CSP)
,DISK STATUS IS EVIOENCE
fiHH3200 012746
MOY
*OC.ENO,·CSP)
,SET UP ERROR NO,

A01426
000204 ClI0fi!1004

lOT

10

,OEFINITI!,)NSI

177446 OC,DCS1l177446
00121001 DC,OIR81

001426 DC.ENO·1426
~00044 V.RSAV.44
~00042

V,XIT-42

000001

2108000

~RRORS

000000RG
DC
DC,OIR II 0C'l0001
DC',INT
00007"R
000150R
DC.PER
0001321R
DC.RTe
PC
"XtH~00'"
IIX0C!J0002
Ri
Rei

IIX0Cl10005

S.XIT

II!

•

.END

*****.

• 000206R

G

OC.AGN
DC,ENO
OC.NAM

•

R0

IIX000000

RJ

.~000003
.%0~0006

DC.REC
DC.TFR

!P

V,RSAV

0~0134R

031426
000014R
0~0140R

000022R

•

000044

11

"c,oes

II

V.)(IT

•

1'7446
000122R
000116R
DC.RPT
000032R
OC,XIT
000116R
8X000001
~1
R4
.X0~0004
S,RSAV II .... **. G

DC,ERR
OC,OFF

0~0~42

DEC-II-ODDFA-A-D

PDP - 1 1
RF 1 1

DIS K D R I V E R

October 1972
SUPPLEMENT TO:
PDP-II DEVICE DRIVER PACKAGE
DEC-II-ODDPA-A-D
MONITOR VERSION
COPYRIGHT

(S)

V~~8

1972 BY DIGITAL EQUIPMENT CORPORATION

NOTE
This document is for information purposes only
and is subject to change without notice.
DEC
assumes no responsibility for the use or reliability of its software on equipment which is
not supplied by DEC.

NEW AND CHANGED INFORMATION
This manual documents the software as of Monitor version V~8. It has
been revised to include all new and changed material since Monitor
version V~4. Such material is indicated by vertical bars in the outside margin. Whole new pages are not so marked but are dated in the
lower outside corner.

~

SOFTWARE
DISTRIBUTION
CENTER

RFll DISK DRI'ilER
The RFll Disk Driver consists of routines to initiate block transfers
of data to or frorn the disk and 10 hfu"'ldle interrupts arising
pletion or through failure.
It does not include OPEN & CLOSE processors.

As a file-structured

device, these will be unnecessary owing to the form of the Monitor
file-management system. SPECIAL FUNCTION processing is also omitted.
If it is found necessary to simulate the hardware function of a similar device, the necessary routine could be added later.
This driver is part of the permanently resident Monitor when the
RFll is the system disk.

It may also be used when RFll is merely

another device in a system based on a different type of disk.

The driver is in two parts: 1) a table providing the interface
between the driver and the Monitor, and 2} the routines to service the
calls for disk operations.
1.

Driver Table

The Driver Table (OF) occupies the first nine words of the driver.
It complies with the standards specified for all Monitor-driver interfacing in general, and for file-structured devices in particular.

The

descriptive elements of the table are set up as follows:
a)

Facilities available:
=100037

Multi-dataset handling on a single
unit.
Input and output in ASCII or binary.
File-structured with no limit to
the number of files that may be in
creation at one time.

b)

Standard buffer size:
Interrupt vector address:
Interrupt servicing
priority
Device name
Directory start block:
No. of bit map pointers:

64
204

c)

d)
e)

f)
g)

5
OF
1
1

1

2.

Service Routines

The driver contains two routines:

Setup Transfer and Service Inter-

rupt.
2.1

Set-up Transfer (DF.TFR)

This routine first initializes a counter which is used to control the
number of retries in the event of parity or timing failure.

Using the

address of the DDB for the dataset it is servicing (as supplied by the
calling routine in the first word of the driver table), it then collects control data from the DDB and transmits it to the hardware registers for the RFll, beginning at 377460.
TWo of the items involved require special processing before outward transmission; the rest are moved directly.
1.

The driver block number set into the DDB must be converted to meet the platter and word structure of RFll.
All the platters currently under one control are considered as a single continuous surface. As a result,
the most significant bits of the block number represent the appropriate platter number and the remainder
the word starting the block. The required conversion
is therefore merely mUltiplication of the block number
by 64 across 21 bits.

2.

The function bits contained in the DDB automatically
produce the required transfer operation. To them,
however, must be added the INT ENB & GO bits (combined
value 101 8 ) needed to set the RFll Control Register.
correctly for the transfer operation to begin.

On completion of the setup, control is returned to the calling
Monitor routine via the interim return address stored on top of the
stack by the calling sequence.
2.2

Interrupt Service (DF.INT)

The RFll control causes a priority-5 interrupt either on satisfactory
completion of the transfer or because an error has been detected.
Having saved the processor registers on the stack, the servicing routine must determine which of these events has occurred by examination
of bit 15 of the Control Status Register.

On transfer completion, it

collects the address of the DDB it is servicing from the first word of
the driver table and uses it to return to the completion address set
in the DDB.

At this exit,

R~

is set to the DDB address, as required

by the established convention.

2

An error may be one of the several types as indicated by further

bits of the Control Status or Extended Status registers.

The servic-

ing routine, however, is concerned with only two categories:
(1)

Errors which can be handled internally

Parity or timing failures may be eliminated on a second or later attempt.

For the sake of simplicity, a retry is initiated by restarting

the transfer from the beginning again rather than from the point at
which the error was detected.

If finally the eighth attempt produces

no satisfactory result, the processing routine sets Bit 15 of Word
DDB+12 to show the failure.

It then checks if any words still remain

to be transferred beyond the failing one.
sume the transfer from this point.

If so, it attempts to re-

If this is successful, it then

takes the normal completion exit.

Further failure, however, is

treated as fatal.
(2)

Errors which must be rectified by the operator (when recovery is
possible)
All other failures cause an exit to the Error diagnostic print routine,
with DSK ERROR F026 as the message and the contents of the Control
Status register as evidence.

Write lock-out or non-resident disk

may be the result of an operator fault.

The operator may be able to

correct this and resume program execution by the appropriate keyboard
command.

Such action will probably be impossible in the case of a

non-existent memory error, and other errors classified as 'HARD' in the
RFll Specification or after persistent parity or timing failures.
(3)

Program Listings

A complete assembly listing of the driver monitor

3

V~8-~2

follows.

4

e
e
7
e

,TITLE OV,DF
InI5K DRIVER rRFt.)
V~R~ION t
'RFStDFNT ~O"!TnR ~OUT!Nf FOR ~'1STFM U~Ar,E
•
C~"T.tNS ~ET UP ~ TRAN!FER ROUTr~fS

s

~0pe~e

RP.~e

1P
11

~~~~~1
~~~e~2

12

~~pe~3
~0pe~4

R'.~l
R'.~2
R3~~3
R4.~4
R5.~5
SP.~6
Pr..~1

13

14
15

~~~e~5
~0~e~6
~~~~~7

16

11
18
19
~0

,TAPLF.
~0ptept

eeV"e2

21 "0('1e3
:22

P0~~4

23 P001F5
24 1'0pt0~
2~

V0C"(~'

2e "21Q!101
21 "0"'11

28 t'0l'!1?
29 V0t'1~

~0

Pel(}14

'''''1f.

!'0"'e~~
~~7

OFI

DJ::
.~La8l.
~F STA~DARrs
.INORD

DFFLGS. .RYTF.
.RYTE
2~~
e!?4
.RVTE
tt'2
"Rvrf
2&11l
.RYTE
(~f1 e
.PyrE

e'2

.~YTf

A~D

~

AoeRE55 (! IF IDLE'
FACILTTV fNDICATOFt
,rNnR~~l ~ FILE.BASED'
J~T.N"ARD BUFFER srZE/le
,T,V, et:)NTE~T
,PRIORITY FOR T,V,
,1"f.SP~Tr.,", TABtE

nF,TFR."F

.~MOWS

H'URRE"~

2~1Z

4

DF.TNT"""F'

24e

e,

Q.'!'H~

.RVTE

~

e"'~

,~YTf.

0

.PAn5~

'rF'

~~1rr~ 1
31
:!2 L'er20! !?0!?0"e

.I·'ORO
.I~ORO

T "'OF'

J5TAN"~RC

37

.HVTE
OF.~A~t

P("!INTFRS

1:1

~f')I~

r1476e

O~LV

TF~

RTN r~LV

,~PARE'

"F."I~

,~F"

eLneK

,RE~Urr;E'O

0

FCR BTT

INFO

~AP

C".r,p

~

0Vt1H'22

r~117~7

,TRANSFFR INITIATF
MOV
.~C,DF.RTr

DF~TFPI

~?,tlI112

'ZERO

~FT~V

0PI2l(}2~

11171'
177461

,CLFAR

4 0(70(:'132

"1~7t'V'

,f;ET r,CB

:3

t77742

e 0P0"'3~ f?220,-e

(I:n~,+.(R0'.

c 0P0 rJ 40' I'.l'127t?'2
1774'2

,

0P~"'4.4

'11'!'.'!3

e 0P(I'lV'4t5 1"1~er'4
s 0Ve1i'5~ 0~l63"'4
~0 peCW!;2 1(1'~1C'3
11 (70"'54 11i)337~
1:! V'0e5~ f?!11'342

13 peC'!6~ P1"J4112
14 ~e1i'62 0'1?042
15 '00'64 c:'1,,,d2
i6 "0~6~ f?1~P"'1.

l ' I?0P'''' HH7~1
18 P01"72 P4?7l'1t
~0

21

~0(}7"

"111142
C'0tl2lCl! P01?2Cl!7

IN

ADr.lRfS~

'~UMP FCI~TFR

Te

PLee~

'PC,R3

'~ET IF 81 er.K eCN\lERSrON
'~ET ~L~CK ~U~Bf~
c.* ••

~~R

POrNTE,.

(~e'+,R4

Aq~

R.4

Rr'lLR

R3

~1"'V

R~."(R2'

~,nv

~4,

Mr'lV

(~e,·, (R')
C~2,.,.(R')

RTS~

8TC

"PC,R1
,.,1774 1 0,R1

,Ann

MMV
RTS

R1,-CQ2'
pr.

,~f~O Tn rO~T~OL
,RETUR~ Tn ~ONITeR

Mnv
Mnv

,f·····.' ·

NO:

.SET

t1nv

Bce

OF PRROR

r.~E

~r;F·.or5·1"R2

,rONVF.~T

TO weRr-s

*.,

,.4
.. (R2'

..

(~e'+,R'

;774'7e

19

nr~K

C~U~T

eARFlll! USFD Ag
4

'~ET

lP DTSK

AD~RESS

,MOVE IN WORD ceU~T
J~ ME~C~Y AOORES!
,I';ET Ft.,NCTIMN
T~T

JRE~OVE

l!TF~Al

Py

,~~

~

& FXT.
~~.

~~

OTHER GARPAGE C*** •• *,
FO~

NeW

P~EVI~U~ rN!TRU~T~O~

'!NTE~RUPT

2

0v.e~e2

"'13746

.' ....

....Mnv
- ...

n~_'~TI
~

SERVICE

•• V_~~AV._f~g,
.........-" .... "' .. .,.
:

~

~

0I0t'e44
~

01.'.~1~t5

""~d5~6

A 0"011~

r127~1

e
e

~12t~2

.,

JSR

R~,'CSP'.
N~F.DC9.Rt

Mnv

17'4t)~

0"01111
0fnH 1 ~
0eGH 2(')1

Mev

(w1''',R2

• GO FTN" rAUSE

trH'4~4

8MI

DFlIFRR

JVf~

Pl~7"'0

Mnv

DF,~0

,GET !')f;A

AD"RFS~

177654

S 0ee'24

;
1~

~ll'e~,

010"1214
VI,H30 ~3~7(')12
(.II

11
12

~0t3A
e013~

Ir:RROR ROUTft\E.
DF.F.RRI BIT

N11e0~,R2

1 HH-,,0

~04423

~0~3'7

DF.AG~I

BP'Q

nF.~FF

ASL

~v

"'0!1e"~e

13
14
l!

~0142
~0144

P0P14e'OF.RTe •• ~~
t034~e
Brs
~04'67
JSR
177656

16

t'015~

rt37~5

OF.REt.

"'11"'e42
l'

U~1

•~ Il
....

~e16'"

SA

~~~le5

,IF so

D~.PER

pr,~F~RPT

Mev

.~V.X!T.R5

J~p

4CR5'

Fo~ef

,nTwER~IS~

rO~TrNUE

TRV

AGAI~

~0l'er}4

PARITY FAIL

,~ETU~~

FlA~

10t?0"'e
~0(71e12

19
20

:!It

22

"-016~
V01'~

P.0'"

('!0~71.'

TST

tlR1

r01755

A~Q

i)I=.~!T

f'l0~7~1

1'ST

DF.RTf;

,ALREACV AT SLoeK END'
,TF SO FX1''' Nt"W
'OT~EQ~ISF r.HFC~ IF 2NC

SEQ

O~.~FF

,TF SO NO

pIC

.. rR,)

,rO~jTT~l!E

177742

"~Hi~ ('I0'4~2

23 1Z020a'

V"0~241

~~

y'

"Ill')""
~

"'" c... '!'.: c,.,.

2S "0204

BR

~rJll')""I:."
W:." V' , '.. .I cr.

.ERROR IS NnT

26
?t1~H?tI;7

DF • "F F J CI.. R

O~.~Ee

t~MFOt_TELV

,:.: vY!

Mnv

2~

BTl

MOV

MO~f

RFCOVERABLE,

DF

, F RFEe

",(FH) ,.(SI))
tljr'lF'.E~O,.tS")

'~ET

1.775'0
~1 Ve2H" ~1414t5
28 V0212 '" U' 746

IN

POI~T

DrS\( TFU~SFFR
rO~MeN EXIT

,rI~K

r SI( FOP f e p

STATUS r5 EVInE~eF
EQRnR N~.

L~

0~14:?6

~0'16 ~3:?76'
1'i11I1e~~

t77~~f

:,Hl ~0'24
31 'l022t'i

~014~1
~05~t6

v.e'3C'1

~0~0~4

~2

33
34
35
~!

J t\! 0

BFQ
CLR
DF.~~~I

.~n

I~T

,eEFI~ITIf'HJ51

17746e OF~~C!-17746e
~"'?e"'1

~01426

CF."IR-t

DF.ENO-14~6

Ji

~0t'1t42 V'.XfT-4'

38
39

('JVlI"~~4 V',R~AVIl44
~tP0~e

40

~01"~~1'

S~RVR.1~0~~

.FND

5

,!

,. eRA CH

,ronE

Tr

l~

FORCF

~

n!AG~ ~R'.

~ALT

T!~f

cv.rF

~Ar.PC
"A~LF.

SV~POL

Vr~d~14

13-SEP.72 02:51 PAGF

DFFlG5

CF

0"'vH1 \?(,lIRt';

fjF.FR~

177~fiCil
0~~t:3"R

f)F.I~T

~fi1eUZ2R

CF.rFF

0re::'04R

nF.I'ER

0~e16"'R

C'.~PT

0r(2l~21;R
0(:10C'2:'.~
.%00~"efi1

cF.rcs:

[:F.lFR
~0

,.3
::%0~0"0~
SOR\lR II 010170~
\I.XTT • 0l'~t'42
• AP S " " '" 0 fi1 ~H'
~P0~3~

0Q1e~0?R

f)F .etRa 0~0"'e1

DF,RTC. 00'!2141)!R
DF,XIT 0!le'2~R
R1

R4
SP

c%2102~e1
.~~r~~0d
=~~~e"'06

"'0~
~'H

ERReRS DETErTED' 0
FREF CORE: 1~413~ WO~D5

,LP,cDTIDF

6

~.

nF·.AG~
0P'e'.3eR
OF.f-Ne. 0"1426
"'JA~
ep0~ 14R
"F.REC 0P0150'!R
rF.SNe 0ti!0~3~R
pe
1%0P0Q101

,.,F.
~~

p5

·%e"'0"'0~
'~0"'e~0e

V'.R~AV' 0Cl10e'44

A listing of the OF: Driver for Monitor

V~4

release follows:

'COPYRIGHT 1971, DIGITAL EQUIPMENT CORP., MAVNARD, MASS,
'VERSION NUMBER •
• TITL.E oIi'
;OISi< DRIvER CRFli)

,,

VERSION 1
RESIDENT MONiTOR ROUTINE FOR SYSTEM USAGE
CONTAINS SET UP & TRANSFER ROUTINES ONLY

1300000 R0"X0
2HH~0~'1 Rl"Xl
00kHirl!2 R2'X2
ifHHik103 R:SI%3
00~Jj04

RA 1 X4

0\:H?11.!l0b R51X5

0Vl(}\006 5P;X6
~0~0~7

PC''''

,G~OBL
DF,S,RSAV,S.XtT
'TASI..E OF STANDARDS AND POINTERS
000000 00t1~~0 OF I
.WO~O
0
'CURRENT 008 ADDRESS CB I' IDLE)
000~02
2137
.6YTE
31
'STANDARD FACIL.ITV INDICATOR
200
000003
.BVTE
20~
,(NORMAL. & FIL.E.BASED)
0(l!0t1lV!l4
0li'4
.BVTE
4
,STANDARO BUFFER SIZE/1S
000005
102
.eYTE
OF.tNT.OF
'T,V, CONTENT
00~¥JI(Hi
240
,eYTE
240
'PRIORITY FOR T,V.
000
000007
.BYTE
0
,OESP4TCH TAB~E
1Z100010
022
.BYTE
DF.TFR.OF
'SHOWS ~,~ RTN ONLY
00~
000~11
.eVTE
0
~0eJ
.BVTE
0
000012
~V'0
0C!10~lJ
,BYTE
0
'SPA~E

\d00014 014'5~

OF.NAMI .RAD5it.'

001i101e

eHH'!~01

000~2~

,WORD

r?\~:.j~t"~

.wo~o

000~22

'OF'

'MFa e~oCK
,REQUIRED FOR BtT MAP INPO

QF.olR
0

'TRANSFER INITIATE
,PC,O'.RTC

0100112

000026 111737 DF.RPTI Move
1774!'1
000032 "'1f31e;0

MOV

ft P C,,,.,OF,OCS·l

'C~EAR

DF,R0

,GET 008 ADDRESS

,BUMP 'OlNTE~ TO BLOCK NO.
ISt:T I-!WR POINTE~

177742
000035 022020

Cr>4P

(R0)., (R0l'"

ti0004~

MOV

.OF'.OCS.12,R2

Move

'PC,R3

~121'02

11"4'120'" 0 0 4 4 111 i' ~1 3
00~04S

000050 ~H16311J4

MOV
ASL,

0000ei2 10e103

~OL.e

012fl'04

(R0)+,R4

R4
R3

'0~37!5

Bee

0fiH>:10e5t; 01013'2
~10442

MOV
MOV

0ldiH:,S2 0121642

HOV

000~64
0~~006

HOV

CR0)·,·CR2)

MOV
BIS~

C~0'·.Rl
'PC,~l

StC

*111 4 '0,Hl

000~04
0et0V1ti~

~:12Vl42

(H 21l11t11

01lJ0070 151101
000Pl12 042 7 01
17741~

000015

,ZERO RETRY COUNT

011767 OF,TFRI MOV

01@1.d2

000100 00t-12l'i'1

,.4

R3,.CR2)

R4,.tR2l
(~0)·,.(foil2)

MOV
Rl,.CR2'
RTS
~C
'C •••••• ) • CAREll!1 USED AS

7

olSK IN CASE 0' ERROR

'SET UP BLOCK CONVERSION
'GET 8~OCK NUMBER c•••••• )
'CONVERT TO WQRDS
,SET UP DISK ADDRESS & EXT.
'MOVE IN WORD COUNT •••
MEMORY AODRESS
'GET FUNCTION
,400 tNT ENe & GO
.REMOVE OTHfR G4R8AGE c•• ***.,

,&

,SEND TO CONTROL
,RETURN To MONITOR FOR ~OW
LITERA~ ev PREVIOUS INSTRUCTION

JINTERRU~T SERVICE
OF.INTI .IFOF
SVSDV
JSR
R5,S.RSAV

v.hH"102 0137116

.e:NOC
.IFNOF

SVSOV

MOV

',*V.R.SAV,·CSP)

JSR
.ENOC

R~,

MOV

-OF. DeS·, R1

,GO SAVe: REGISTERS

~~10v144

000105

~:h)4536

0t1jQl110 012701
1774tHl

.. (SP).
'E~ROR CAUSe:

INTERRUPT'

000114 ~12102
000116 10'tH H14

MOV

CR1)+,R~

8MI

OF.e:~R

0~012~ 0115700

MOV

QF,R0

,GET DDB

MOV

14CR0),PC

n~E TURN

~f110091,

,PARITV OR MISSED'

'YES

..

GO FINO CAUSE
ADDRESS

177654
0210124

0150~7

00"'\114
0t!J!d130 ~327~2
011111Qlv'
000134 ~(61423

0001Je

~06";~7

OF.XITI

,eRROR ROiJT I NE I
OF.ERRI BIT
DF.AGNI

R2

~EQ

OF.OF'F

ASL.

~0

,yES • RETRIED

OF.Pt.R
PC,OF.RPT

,IP' SO

~H~01t1~Vi

00fi'140

0001 4 2
r.hUH 4 4

1~340tS
~04767

Be!
J,R

OF,RECI .IFOF
JMF
0137~~

e TIMES'

OF.FHC·.-2

\7765es

0001!5~

MONITOR

.ENOC
.IF"NDF
MOV

sysnV
S.XIT+4

FO~CE

CONTINUE

'OTHERWISE TRV AGAIN

,TAKE COMMON EXIT

S'fSOv

'*,V.XIT,Re

~~~Vi42

0~01~4

vH"?116~

JMP

4(R5)

vllMH'04

0001 6 0 ":i27"~

.I!NOC
OF.PERI SIS

,~ETURN

TST

'Rl
OF.xIT
DF.RTc

'IF SO EXIT NOW

SEQ
INC

-OU)

o0~1V\ 12
~0~1btl

000110

000172

00~111
~'JIH 7!50
~057t51

177742

PARITY ,..AIL 'LAG

.100000,12(~0)

100t;,~0

T$T
SEQ

,ALREADV AT BLOCK END!

,OTH.!RWISE CH!CK If' 2ND TIME

'IF SO NO POINT IN MORE
'CONTINUE DISK TRANSFER
8~
OF.REC
VIA CaMMON EXIT
'ERROR IS NOT IMMEOIATEL.Y RECOVERABl.EI
Op.OFF. .IFOF
SVSDV
OF
rFREE DISK FOR EDP
CI.R
OF,OFF

00~1715

~014~2

0~0200

~H~!5241

0r.1V1202

0~~7~2

~0\i1204

;)1&11;6

MOV

.. (FU) ,.eSP)

Y:h~ftl206

1A12746

MOil

;;OF,ENO,-(SP)

,...

• Ef'tjOC

v! Vi 14? 0
0~0212

00~~0?4

'DISK STATUS 18 EVIDENC!
UP ERROR NO.

,SET

,GO TO OIAG. PRT.

lOT
'OEFINITIONS'

177460 or:.PCS-l"4e0

8

~~?'f\~'jv;1

OF,aIR.l

J~1426

UP,ENO-142b

:~2~)~t12
\,40~~iJt.l4

V,XITIII42
v,RSAV!l44

.END

~~0~?1

OF

of.urR
OF. I ~H
DF,PErt

DF,RTf;

•

or~ '3 " :,1 ~ RG
00'ilV\\lH

OF', AGN
OF,Er.JO

0~H~

DF'.NAM

1 ""R

o~Hll "13 j:(
11

0~~"

O~·

1 !l0R

•

0 i(101:)?lR

DF-",TFR

0~~.t77176

19
20

~lli'eli'e

S~RVR.l~0?~

21

22
23
2A
25
26 P0t'e" ('J';,}r1""!7

2'
2e
29

uet'e'

,~~~e~7

C'~l?e!ii

?'0
1.12

V~"e4

(,)Iq

• IA: ()

RD

DKFLGSI • ~.; oRe

24e
30 P0c.'Je'5
31 ~0~e1
e~e
?t1e
32 t'et'ue!?e
33 '01?!11
34 "~t2!12
~i?e
:35 ~eP!13
el'e
:36 Q0C'1~ 011"27(;, DKNAM.

~

172~.~'

,~YTE

27

,RYTE
.RYTE
.RVTE
.RVTf.

t)1<

,,~VTF.

~

.BYTE

p.! T-DK

?d~
~

DKSTRT",nK

,~
TF Ir'lLr:', Or)8 FTR
,FArIl I"E~ !l.OPD

.~T~ ~LFF~R srZF IS 256.
\l.C~OS
J("\FFSF.'f Tr'I rN'\"E~RUPT HA~d.nE~
,J'R10f:;!Ty LFVFL 5
,~! 0
OPE ~i POI~ T J NF
,tjFFSF'T T~ TRAN~FFR Jo!A~H'll.E~
, 'iO CLCSE R~UT!~E
J ~iO SFEt:IAL FI'Nr:T!C~!S
,r.URRf~TLV Lt-.JLSFD

.RAil5~

0
0
Ir";KI

ti!0"~"1

, \liQRD

RkCIR

,FIRST

r.'0!i'e r1

.\~ORC

~,2,e,~,~,0,0,0

rP!'f

rH..!",F

U'\fjI"Et\

E3
~A

E5
E6
E7

M('IV

n r-

CPC' •• R~
Cr~FI(;

,=8

.4~L

R3

E9

f)FC

R~

~0

RGE

fl

tH'C

1 .. 4
.+4

t;2

A~L

R2

fij3

.Fr~1ir.

.EN"C:

f5

,TFr.lF

f6

A St.

~7

,fNr')C

,LNTT ~Ck AS OESI~EO
,POYNTER nD~+PLrC~

~J)(~I)

• IA1 R

fA

U~tr

L,.."rE\,I
R:;:

6

.GET

,YF

rE~STTV

Lr~

PATTFRN

OFN~tTV

".

JAD.TU~'T 8i,cCK ~e.

r.t,Ap

R~,i;48~~.

,15 BLeCK

1034H~

'11 . 0

OK H:2?!

,YES

3 0~~c.'76 !'1d'l~6
4 01.70'00' !'1!'746

t~rv

,~(RR'
""435,.rR~)

P''!I.JTPl T It
.ANr r:rl35

0"0~7t"

!?272~"

~OUN"S'

\l(TT\oII~

r'13"~

2

e

e

~,~~~74

,

e'

!'6r'2!i' 1

D!(I~1l"':

RRANtl-l

II!

l~G,Al

[:iR

I')KEP2t'

R2,Qt

,,ADf'l
...

AFTER

Af)D

,AOJ

R~MATN"f.P

~014~5

01lQl!e 4 "0!'5e1

eQ'~'et'
'J 0~
1~
0" ~ 112
0" ~ 11 ~
1~ "el11~

e

Ml''V

.,UH:"

!'i'~f20\2

~C;R

R~

ri1011i202

ASR

R?

AI"li)
"61'74"'2
1"11"2 11 4 DltIN2cq ~C'v
AIC
11 pet21' I'.'4'7(}4

p,

C~I<

SV~O\l

VALTO QtC:'f!fNT

R4,R2

,"'IVYI"F ev

~~,P4

-

,6

~'7'71i\0,Rd

SbVF

1777F..(l
C?4174c-~

BTC

R4,P,-

13 V0'2l'i
14 t'01.3~

~013F7

8~·IE

f)kI"1'"

,~.: !F ANY RU!lO

r~2!"'4='7

C~!P

R4,*1t'"

:CHFCK

,,YF...

"~1.

~VW

V'V1?4~2

RtT

.... 6

"'1t!13~

?6271i"4

4!')D

~4,R4

"'00'0"4
17 (HH42 "6 0 4"1
18 l'el144 !'1'7~4
177412
lq (101501 ~U't'4
V0152 !"1:?e44

~C?J

~1

"0154

~1~"'44

22 {JPH5ts (71'0"1
23 P.016~ 151 7? 1,
24 20162 r'427t'!1

ADO

'

~

P~f.T

LF DTSIo( ADeRFS5

,SET LF

~~t-I(')RV

(P~,.,.(R4)

'~ET LF

~~R"

HIC

cpe'''',~1

.PC,Rt
__ 1774t;0.R~

,PUT
'~ET

I~

THE

T.,.,',F',

,..
I

!Nt':R.

CP0' .... -(R4)

V
Mr)V

12

15

~

12

~U~F~CF'

R".R~

Mr'lV

MrlV

r AlISF
~~CTI"!R

__ RKr'A,R4

SJSA

BFT\AiEF~

J

,PUT

R.4,~1

rlCV

~·1n

t

..
.. "

IH'CIII
.,
v '",-< .....

QEI,AATN"E~

~y

~!~ArN"ER

,

~~rTTE~T

014

15 "0134
16

JF~TRACT

rIv

FCR

24

12

NU"'~EP

BLOCI<

I~·Tr

REST

AOORES~

COLt\T
Fl;N("TrCJ~

A.~

0

,I"LE'AR bARAAGF

C;~

AITS

.+*** ••

1.774t'~

25

~0'6fi

!"1t'1 d 4

MI"IV

R1 , .. C~4'

~6

C'0t1()1 ('l'0r? 20' 7

RfS

PC

2'

..... ** ....

U~Epo,

as

7

J~E~"

L rT~RA.!,..

BV

"'!-IF.

FU~rTTO~
PR~VrOUS

TC

C~N'T'Rt"1..

!~~TP,UCT!t"N

2
J
~

P,lTERRUPT

0e'e11:;"

r1~746

0/1( I t-.1T!

MI"IV

PROrES5f'R

(t.V.R~.~V,

.. CQ6'

~l~!,~d4

E 0"017t1 red536
f 0(102001 (,'1P;7~1t

.,
e

J~R

R~,~CR6'+

M~V

Ol(,~e

~HJV

4n~Krs,R5

,GET T"'F.

ep0~e4

r1.'-1~5
1774~~

I?U'5~1

Mnv

(~5)"',R1

"1'5"2
10 l'e214 "115(;1'4
11 (1e21~ 10(,40'5
12 ~0~2L'l 17327014

~n.V

CR5'''',R2

"'1nV

HMt

.H5,R~
I)I

(?I(~I?

1)H;

~~17V'''4

9

TFR

FLA~

CV.r:KH
eee336

",HeRo

vr0.a·14

~.1:;715

13-~F.P.72

DKHF.Rt

~-'l

r1 V

,,~,~r;;?

P6GF

4;,,'\.(5

~

,r:LE'A~

C:O~'T~OL

T~F"

fll,"~P!?1

1 (,lr;; 715
1 j •.,!') 376

2

~~e342

:!

0~034t1

4

ep~34Fi

r3?7"1

~

e(7035~

ri4"'r72:?e
1"0 HI1 ~

E

0~0354

~3'7"",

(11'11

7
8

DIo(HQ011:=

TST~

~R5

~PL

I)!(~RI'.O'

, ~o

HIT

4;2e9,Rl

,T5 IT rlRTVf

RF~~

f)!4~R
nJ(X!T
el?!~226R
RLt'RA : t77t11!'

I:

1';412

RKOJR

I:

!tH~e.t'01

RKWC

I:

t77t10~

Fr:

::~kF'\1!?~7

RKCS

Ii

R!crT

;

APS~

=

p~

177~l4

0C'k~"4?

~~~!?~~

~0P

e"'~~24

~QH

17'4~::'.
.~~~0"~1

a

i34e,,~"

ERRrRS nfTfriFD: 0
F~EE rOPf:
1Q347~ WO~DS

,LP,

V~~8

1971, 1972 BY DIGITAL EQUIPMENT CORPORATION

NOTE
This document is for information purposes only
and is subject to change without notice. DEC
assumes no responsibility for the use or reliability of its software on equipment which is
not supplied by DEC.

NEW AND CHANGED INFORMATION
This manual documents the software as of Monitor version V~8.
It has
been revised to include all new and changed material since Monitor
version V~4. Such material is indicated by vertical bars in the outside margin. Whole new pages are not so marked but are dated in the
lower outside corner.

~

SOFTWARE
DISTRIBUTION
CENTER

DRIVER for TCll DECtape Control

The principal function of the TCll Driver is to transfer data between
the hardware control and a memory area specified by a calling Monitor
routine on behalf of a user program.

The number of words transferred,

the DECtape transport, the absolute starting block on the tape, and
the direction of tape travel in each case are all determined by
calling routine.
As required by the standard Monitor-driver interface for all devices and, as DECtape will be handled as such, for file-structured
devices in particular, the first part of the driver consists of
two consecutive tables:
a)

Table of descriptors and pointers to routines included.

b)

File-structured usage data

All data transfers utilize the normal read/write capability of
the PDP-II NPR facility.

The driver contains a setup sequence to

initiate a search for the requisite start block and routines then to
handle interrupts for continuation of such search and, if this is
successful, the subsequent data transfer specified.
As a file-structured device, the opening and closing of files
are the responsibility of the Monitor file management routines.

There

are therefore no OPEN or CLOSE routines.
Also, no routine to handle SPECIAL FUNCTIONS is currently provided.

This could be added later if it is found desirable to simulate

the normal operation of some similar device, e.g., rewind as for Magnetic Tape.
1.

Initial Tables

Relevant entries for this driver are as follows:
WORD

f1:

WORD 1:

f1 initially-set to address of DDB for dataset beinq serviced when busy, by calling routine.
Facility Pattern = 140037 signifying:
a)
b)

File-structured Device
DECtape (or similar reversible medium)

1

WORD 2:

WORD 3:

WORD 4:

c)

Capable of Input or Output in either ASCII or Binary
on more than one dataset at a time.

a)

Standard Buffer Size = 16 X 16-word units (i.e., 1
standard DECtape block).

b)

Offset to Interrupt Service routine.

a)

Priority for Interrupt Service

b)

~

a)

Offset to TRANSFER Set-up routine

b)

~

=

7

[No OPEN routine included]

[No CLOSE routine included]

WORD 5:

~

WORD 6:

Name 'DT' in RADIX 50 format.

WORD 7:

Start Block of Directory Structure = 100

WORDS

2.

[No SPEC FUNC routine present]

1~-17:

Reserved for pointers to in-core Bit Maps for each of
8 transports supportable by TCll.

Processing Routines

2.1

Transfer Setup

A Monitor routine effectively calls for transfer setup by JSR PC XXXX
where XXXX is the start address evaluated. from the offset in WORD 4 of
the table.

The address of the DDB containing relevant parameters will

be stored in WORD

~

of the table.

The setup routine will first set a counter for number of returns to be made in the event of parity or timing failures in tape
operations (8-9).

Using the given DDB address, it then extracts the

following information and actions it as shown:
(i)

Block No.

(DDB+4) - two copies are stored internally as controls during Start Block search as detailed below.

(ii)

Word Count & Memory Address (DDB+6 & 10) - these are stored
immediately in the TCll WC & BA registers for use
as soon as the Start Block has been found.

(iii)

Function (DDB+12) - the requirement for Read or write is converted from the standard Monitor specification (4
or 2) into the corresponding DECtape value (4 or
14) and stored internally until completion of block
search.

(iv)

Tape Unit & Motion (DDB+13). The bits showing these are associated with the DECtape Search function [3] and
are set into the Tell Control Register to initiate
the search for the start block.

2

The setup routines also sets two switches appropriately:
a)

In any transfer, two types of interrupt may occur; the
first at each block encountered during the search for
the start specified; the second thereafter arising when
the transfer has been completed. The switch is initially set for the first type.

b)

The tape is started in the eventual transfer direction.
Turn-around, however, may be necessary if the tape is
badly positioned. The second switch is set initially
to reflect the start direction in order to provide adequate control during such turn-around.

The driver then sets the TCll Control Register for the search, and
restores control to the calling Monitor routine, via RTS PC, to await
its first interrupt.
As permitted by the General Driver Spec, the setup routine makes
full use of the processor registers, without saving or restoring their
original content.
2.2

Interrupt Servicing - Search Mode

Provided that a tape block-mark is encountered without error, the
search interrupt servicing routine compares the number found (from
TCll Data Register) with one copy of that for the required block,
stored internally by SETUP.
If the comparison shows that current tapemotion will eventually lead to the required block, the routine exits
immediately and waits for a subsequent interrupt to show that the
transfer may begin.
If tape-motion is in the wrong direction, the routine resets the
TCll Control register to produce tape turn-around on exit.

A second

turn-around will now be essential for a transfer in the require direction.

The routine therefore modifies, appropriately, by 2 the copy of

the block number required used in the comparison.

This factor is pro-

vided so the tape is sufficiently positioned beyond the block required
to ensure that it will be up to speed at the right point after the second turn.

For example, in order to transfer Block 100 forward, the

first turn will seek Block 76 in reverse.

An equal comparison might then result after a single turn-around.
The block number found is, therefore, checked against the second, unmodified, stored value.

If not equal, a turn-around has occurred:

TCll is reset for the second time and the first stored number is restored to its original value.

When both stored values and the block
3

the

found are all equal, the correct tape travel is assumed and the trans
fer is effected by moving the stored function into the Tell control
(byte only to avoid hardware delay imposition). The interrupt switch
is changed to show that the operation is now in Transfer Mode.
In the event of an error in Search Mode, the Tell Test Register
is examined. If this shows that the cause is "End Zone Reached", the
turn-around procedure is again effected, since such a condition is
initially the same as being, for example, at Block 102 when 100 is
wanted forwards. All other hardware-reported errors are treated as
discussed in a subsequent paragraph.
Another type of error may occur but this can only be detected by
software, i.e., a failure to find the block either because its number
on the tape is corrupted or the one required is outside the range of
the tape. For both situations the tape might rock endlessly owing to
the turn-around algorithm. The search interrupt processor therefore
counts the number of times a turn is effected. It gives up at the
sixth attempt and requests printing of an F~16 message with the failing Block Number as evidence.
To avoid unnecessary time wastage in the storage and retrieval
of their contents, -the normal search interrupt processing does not
use processor registers.
2.3

Interrupt Servicing - Transfer Mode

The normal cause of an interrupt in transfer mode is the satisfactory
completion of the whole of the data transfer specified. The driver
must then recall the monitor routine which requested the transfer.
Because this routine may have surrendered control to the user program
during the period of the search and transfer operations, the driver
must assume such is the case and save all register contents before
setting R~ to the DDB address from its WORD ~ and taking the completion
return set into DDB+14.
The interrupt may also occur if an error is determined by examination of the Tell Test Register. In Transfer Mode, two types of errors
specifically processed are Party or Timing Failure. Following either
of these, the servicing routine restarts the whole process over from
the original block search until at least 8 attempts to produce a satisfactory transfer have been made. If these all fail, the routine returns a flag indicating the error in Bit 15 of the relevant DDB+12.

4

It checks, however, whether the failure occurred at an intermediate
block of a transfer involving several blocks.

If such is the case, it

endeavors to provide a satisfactory transfer of the remaining blocks.
It then recalls the monitor at the completion return address.
Of the other types of error, transfer mode servicing also handles
Non-existent Memory and End Zone.

Both of these conditions are assumed
to be the result of a prograrnming e ".".,... . . . and cause printing of a fatal
..... ..L.'-'..1..

error message
2.4

F~15

with User Call Address as evidence.

Recoverable Errors

In both Search and Transfer modes, for errors not especially noted, a
general routine is used to request printing of a diagnostic message
requesting operator action.

SEL and ILO errors are assumed to indicate

a "Device Not Ready" state for which the device name (DT) is supporting evidence for the message

'A~~21.

For the rest, and Mark Track

Errors in particular, which might be resolved by changing tapes -- the
message

'A~~31

evidence.

is printed with the TCII Test Register content as

For all these errors, the operator might request program

resumption by a Monitor "Continue" command.

The driver restarts the

whole search and transfer process if this occurs.
3.

Implementation
a.

Comments on the driver listing show general methods of implementation.
It should be noted, however, that in several instances, in-line code is modified.
In particular, the two
switches mentioned under "Setup" are variable Branch Instructions and the internal storage of data has already been indicated. This means first that the driver is not reentrant an unlikely requirement when one control may only service the
transport at a time, even though eight may be attached to it.
In the second place, the driver, as written is not immediately
usable in a ROM.

b.

The priority level for interrupt servicing should also be
mentioned. The hardware level is 6; the initial software
level, however, is set at 7. This is to ensure that there
will be no delay due to any other interrupt in the critical
case in which the required block number has been found and a
change of function from Search to Read or write must occur
within 400 msecs. The interrupt routines themselves lower
the level to 6, if the critical case is not being actioned.
This will mean that other interrupts may be delayed up to
50 msecs. in the worst case, the critic~l one.

c.

A further minor point of interest is that the tape is always
stopped at the end of each transfer (or when an error occurs
to prevent this) in order to maintain correct tape positioning. A program STOP request is issued to effect this in all
cases, even though the hardware may be set up to provide for
it. However, resetting the TCII Status Register for this
purpose can remove error conditions. The content of this
register is, therefore, examined (or is saved for later
examination) before the STOP command is givena

5

4.

PROGRAM LISTINGS

4.1

V~2

Program Listing

,COPYHIGHT
'V~~SlUN

1~71.

NUM~t~1

.",1.01)1,..
'UECTAP~

,
,

EQUIPHtNT CURP., MAYN.RO, MASS.

Ol~lTAL

V~2

OT

uRl~E~
P~tStNTLY

VE~SION

ISTANUARU UR1VE~ T.~l,..t;
DTI
.~URU
~
.bt"ll:.

DT,NAM=

1~3 JULY 70
~OR TRANSF~R

CQNTA1NS ON!,..' RUUT1NE

,8USY r~AG (DOd AOOR
;F4Cl~lTY I~OICATO~
;5TO BUff SIZ~/16.
,~OINTtH TO
5VCE

J7,3d0

.dYTt:.

16,

,dYT~

DT.INf.UT

.oYTt:.

341U

.oYrt.
.bYTt

Id

.t.HTc.
.t),('jt.

0
td

.~VTc.

~

.~~O~0

'OTt

wHEN

~USY)

INT

svct

PRIORITY
10~S~ATCH TAB~~ ""
,.,.~OR fRANSFER ONLYI
lINT

UT,T~H.OT

.~O~v
OT.OIH
.~Qp.u
0,~,0,~,0,0,0,0
,R~G1STtk aS~lGNMENT~;

Mro SI,..OCK

'Fl~~D
I~UINTE~~

FOR BIT M.P ACCESS

~"' .. ,~

Rl-Xl

p(2;:~c

R;):I%3
R4aX4
R~·X::>
SPa~b

PC:I~'

;SET lJjJ

rtotA~~Ft::R:

DT,TfRI

MO~

'P~.UT.HTC

DT.P~l:

MOV
MOV
t;LIit

UT,~0

;StT RETMY C.OI"lNT
IGtT ADD~ESS QF DDS
I", & u~ HwR ULOCK

uO'f,Ct.U,lo

;U~OP

P~lORITV

'~AV~ A~~

USER ReGS,

;bET DECTAPt stATUS
,SET UP TO T~LL UStR
; ••

~,

AS~UMI~G

J,.,. IF SEL OR

H-W

FAI~U~t

l~U

'UIA~NOS~

TAP~ FAULT
, •• , AS NOT READY
ISTO~ TA~t IN CAS~
,GO ro OlAG PRINT
JUN ~ECOVtRY, SET UP
l~tslORt US~R kEGS

NUT ~UUND I~ ~tA~~~:
MOV
UT.~C~,·lS~)
MUV
MUY

~OT.~Ht,-CSP)
#Dr.C~M,Rl

\:.1H

UT.STI"

l~tT

CONTHOL ADORtSS
7

DIF~.

~tT~Y

;TRANSft;f.I E.RI'(QRI
DT.T~~;

olT

.34~0~,~t~1)

()Ni;.

OT.I:.XT

t'1T

.tIl"04~!(1,(Rl)+

t;NC

OT,Fe.1'<

,~ECUV~RA~Lt

tRRORS

'TAP~ FA1~URt./OPI:.RATOW FAU~T1
~a P~INT & WAIT Rt.COVE~Y
,triO ZO"'t:/~.E,M1
;IF ~o T~EAT AS rATAI.

,IF

CTIM'N~

OR

PAt'(lTT) :

*'0

'~ETWIEU

I:H~C
~lS

OT.RXT

A~1.

8.. 9 TlMES

AL~OY1

OT.I·(JC·,-jl

sue

CRVJl"',R2

:)iljA~

ii(2

,IF NOT TRY AGAIN ••••
;OTH~RWISE SIGNAL ~RRUR
'~TO~ TA~E IN CASE
",.CUT CHK ALL wOkOS OONE~
;IF ~o THAT'S 11£
,GO To WUHO COUNT IN 006
" •• & W~E TO UETERMINE '"
, ••• NO. OF 6~OCKS DONE

tHr~

1<3, (W1).

'CHE~K

titQ

•• 4il

Nt.G
AvO

F(2
~2,oT.BR~

,M001fY

L;L.R

DT.J.(n.;

I ••• & R~TRY CUUNT

J::;R

PC,Pl,Pt(2

,~o

tH<

l)T.RX1+4

~1~000~,12(~~)

MUVb

ii<3,(!'(1)+

M.OV
dt.Q

OT~TXT

AOt)

~3,R!!)

;~~TAL t~~OkS
DT,ft~1 NOV

M.OY
bR

1(1i<1"R2

..

~NU ~UNE
'R~.·l5P)

P~~SENT

TRA~EL

,ADJUST NO, ACCOROINGLY

srAkT

~~OCK

SET UP NEw STAkT

I". & ~AIT RESULTS,

Ok NON-ExtSJENT

#Of.FWE,-C5P)
DT.STP

~~.RCH

ME~ORY:
,GIV~ CA~L AS EVIOENCt
P~~INT oJAGI\lOSlS

'MISCt~LANtuusaEfl~lTl~NS:

¥.RSAV=44
V,~~t.S:a4"

DT,ulR-hH1
OT.TST·117.j4~
OT.CCM:;111J4~

OT,Cb Aa l I IJ4b
OT.CIJT;11'J~Kl

OT.i\iWt.=4102

OT.lkt.·41l'l
OT,F k t:·141:;)
OT.dt020

000~6r;,

,;'12067
V'0Vl2V12

C1P
H'111

(Q0)+,DT.8R1

00~~64

r'H2~111
~12e.41
1~5e57

J10V

(Qe)+,'Rl

Mn\J

(!?e)+, ... (R1)

~P~F~66

(H"0~70

(~~,+, (~eJ)+

., ,

;SKtP USER LINE IN DDB
,SAVE BLOCK Nn FOR LATER

DT,INT

,SET QEAOY ME"10RY A"OR •••
j • , '" & wO~O COU~Ji
,SET INT'RUPT Sw, TO SRCH

Mall

DT.RRr),DT.BCK

:SET

1'1 1"1 V

tt10"',Q3

'I

I"

DT.PR2: CLRB

'1~P214
00~~74

,;, 16757
~e~ USb
~0~156

00010:2

~12703
~0~1Q!0

9

RL~

CTRL FOR SQCH

0~'-1t05

MOV

11~367

(10 n 1\H~

Fn,f')T.TAC

,5ET

TU~N

AROUN~

COUNT

0"'0112

:~1 H~46

t"FlV

JlRQI,·(SP)

,GE"T UN!T, DIRECTION 8. FUNC

00~114

;;~42716

BIC

#17~1341,fSP

,CLEAR POSSe GARBAGE

BIS
BITR

R3,~SP

'SP,c»PC

SEQ

.+6

A1)O

#t2,.SP

:ADD IN I~T ENS BIT
,WRITE RE~D?
;CREAO O.K. AlROY)*****
,IF sn GET OECTAPE EQUIV.

MOVe

~SP,OTtFRr;

,SA.VE FIINC FOR tATER

,RESET FUNC TO SRC~ (INT EN8)
,(NOW CONTAINS 20~)*****
:TRAVEL FORWARD?

170341
000t2~

05~316

000122 13161.7
000124 ;?Ie14~2
00012(; :i!62716
f~00(l;12

000132 t11667
000144
¥HHH 36 111716

11('PJg

f)PCdtSP

000 '- 4~ '''063~3

ASL

R3

~3t627

BIT

,sp, #4(,1?'0

000142

~04,?~e

4n
0@vJ150

~~ ~~ HjC~

q052~3

!:3"JE
I 'JC

R3

oO~~1152

119'367

r,1I1VB

R. 5,DT.SSW

i2ir~)1"56
~0016~

~12p41
1i10~2(;7

MQV
RTS

(SP)+,.(R1)
PC

~HHl1

1

,,+4

JIF SO R3 NOW 201 & SO •••
J~AKI~G 8PL OR 8MI AS REQO

~r!002J

,SET nECTAPE CO~TROL
;RETURN TO CALLER FOR NOW
:***** tA~E UREn ~S LTTFR~L BY PREVIOUS INSTRIJCTIONt £ I
:tNTE,YRt'PT

~EPVr.CE

000162 105737 JT.SIP: TST

(A) ... Sf ARCH IN PRORf.SS:

'#DT.CCM

,CHECK STATUS

177342
2HH316f;

U~r;,473

8~I

DT.SER

,IF

;:H~017~

'~23767

C'1P

O~DT.CDT,t'l.8qQ

,CHFCI( f3LI1CK FOIJND

4 -32

sr:Q

~T.BfD

leJ~426

t; ',", I

DT.~XT

ERR~R

GO INVESTIGATE

1.77350
'10i?1~7vl

,tl0Qj 176
00i1i20'"

:~f(2

0~~02Q12

142737 ,)T.TAt:

~0~201
1Ie(~~

~TC8

#40,.#177775

;IF ONE REQO, GO ACTION
fGET TO BLOCK THIS WAY?
:CSPL IF TRAVEL 8ACKWARO)
,DROP PRIORITY

ASRB

~~

JHOW MANY TURNS?

.)T. SS!I-!= .... t

40

\77776
000210 1062:'.7
\'I0(1e)'~0

V'0~212

JT.TAI:=.-2

00i!l'-1~

tk-'35t7

beS

~H~0::!1~

1112746

~()V

OT.RER
#4000,-(SP)

,IF 6 C4N'T Ft~n BLOCK
,OTHERWISE MUST TUR~ 4ROUND

110V

#~,-(SP)

JASSUME TRAVEL NOW

RORB

DT,SSW

:CHECK

Bes

01.TA2
2(SP)

,IF FWD OMIT NEXT

f'.1F:G
N~G

~~p

r~~j4"'[JI~

00~222

'~1271.l6

F~O

~e0e,0l2

~0022F

1.0f5~67

177747
;(H~k'?'3? 1 ~34'!j3
001£l?3.lt l'7Ie!;466

rIF

DIRECTtO~

g~O,

REVEqSE EVERYTHING

';~0P"~:Yl2
'3ne24(~

:~~5416

000242 102667 OT.TA.2: SoJS

(SP)+,DT.eR~

fAllOW 2 SLKS FOR 2NO TURN

(SP)+,f#DT.CC~

,SWITCH STATUS

DT.SSW

JRESET DIR SW (C AIT REVERSES)

~t"~02fil

000246

i~62637

AI)D

177342
000252

1~6167

177723

;H'02ti6 tv15237 or • s,Xr: 1'1CR

,CONTINUE SEARCH

1.77342
0~0?6:?

~0\H;V'2

RTI

,WAIT NEXT BLeCK

10

:3l,.OCI< FOUND - CHECK TRAVEL Ci"lRREC1;
000264 122727 QT.BFn: C~P
~J,#0
:TRAVEL AS ORIGINALLY STORFD?
i7!0Q10~0

'~0~V\~~

D'i.RRfJiii.-4
C-'00270 OT.9CI<=-.-2
....

,,~

.... "

-'1 \/:' "I

~H:10'-72

ee0'-74

t!.

#!J t!!

f] Q

DT,TAl
DT.INT

ti ~J E

?V1343
1145267

I"lCB

:IF NOT MUST TURN AGAIN
~RESET INT'RUPT SW FOR TfR

V\~CJl01e

00030~

WJV8

112737

!N CQRRtCT FUNC

:~OVE

!~"HH1~0

177342
J'1l~r30'2

0e03Q.i6

~~0763

0.0kLH 0

~~er},4;'-'0

0~~j.31~

'fltil7?3

JT.FR!?=.",4
BR
OT.S~T
,tNTEPRUPT SERVICE CB) oT.INT: !:lR
.+2

000314 142737

: ••• & GO SET UNDERWAY
COMPLETE (?1;
,INTEQRUPT SWITCH ••••
,FOP SRCH COMES HEREl
JDRCP PRIORITV

TR~NSFER

DT.~IP

fiR
BICB

#40,P#177776

MJV

,ftV.RSAV,-CSP)

'?!0~040

177776
0~0322

~13746

,

~00044
~300326

~04536

J~R

R';,~(~P)+

~H~~(33?!

:~167~0

tA.OV

DT,RD

:~AVE USEP RE~I9TER'
:GET ODB ADOR

'.77444
00{(l134 (~1t>701
'.77342

'~tJ V

#I)T.CCM,Rl

~GET

STATIJS ADOR

0e.~340'

MOV

#1\3,R3

:SET

~AGIC

~1?7V13

..

CONSTANT

71~"~010
0n~'4d

'e·5711

:ER~O~

H~t?l451

T'3T
S',11

f)tU

0?034~

DT,TER

:IF 51

~00"5~

11"311

~'JV9

R3,~Rl

~)T.TXT:

M0V

14(P0),PC

STOP TAPE •••
, ••• , TAKE COMPLETE PETN

:SEA.RCH

E~ROR

e00352 .? 16e'?!7
'?(1~\!.';14

00~356

ge5737 DT.SER: TST

-

CAUSE TNT'RUPT?
~O

, SEE

~~V

:OT~E~WISE

DfTFR~INf

CAUl)f,

P#DT.TST

, IN ENO ZONE?

177340
n_IL
..,... W

'1F. A~I S TUR"'J 4ROUNO

9'11

DT.TAl

!

Bte8

#4e,CI#177775

rr)FCP PRIORITY

Nli)V

~~V.RSAV,-(SP)

:SAVE ALL

;Q0iL376 <70 4 536

JSR

0~04k'!~

rMlV

R5,'CSP)+
#OT.TST,R1

JGET !)ECTAPE 31 A T'.15
f~ET

1000362 1007~7
000164 t 427 -~7

•

7

~

"

~0~~~0

177776
000~372

1)113746

USE~

REGS.

~00044

~127~1
17734~

2!0~40ti

~111,16

00040~

012746

JT.F.XT:

~')V

1t Q 1,-CSP)

MOV

#DT.IRE,-(SP)

BIT

#14~0·~.

BF.Q

DT.STP

M0V

#f)T,NRE,tlSP

t-lOV

OT ,~JA~,?'(~P'

J •••

#l~,fJRl

JST("JP

~e04n4

~~0"12

~32721

"'1 4 0"'0

000416
0e042~

~e.14?l5
~127t6

CR1) +

.....
,, ...
~

Uf'

Tn TEL..L USER

ASSUMING

H'!'I(iJ

IF' SEL I"lR ILO

Jr)IAG'IQ~E

T~PF.:

FAULT I"IIFF,

~k'('!4~2

i!~1d424

:'-16766
l77364

AS

NOT READY

~e~fi(}l2

~~"432

1I?711 ()T.STP: W'lV9
~eO'e'0

11

FAILURE

TAPE IN CASE

Z00d36

~ei00~4

\d~044f~

~0A767

00~]444

J1137~b

lOT
!)T. RXT: J5R

PC,DT.PRl

,GO TO DIAG PRINT
,~N REcnV~RY, SET UP RETRY

'774~"
:PE~TORE

"0~Vd6

00045Vi 00 d b15
." 0 PI 0 ~ 2

JSR
,9LOCK

0e~1dS4

~1E'7·16

~OT

~EGS

R'),~R5

RTl

~~0 45~

USER

f ••• ·~

FOR BETTER THINGS!

HO~E

FOUND TN SEAPCHI

DT.RCK,-CSP]

,GIVE BLOCK NO. AS EVIDENCE

MOY

#~T.CCM,Rl

,GET

BR

DT,STP

OT.SEQ: M1Y

t7761~i
00!0d6f~

n12746
"''11416

000464

~12701

CO~TROL

ADDRESS

177342

00047f'!1

~fl!!7I760

~?'0472

r~32741

,TR~N~Fr:R ERR0R:
JT.T£Q: BIT
#34000,~(Rl)

!'11 3 4 ~,,~ ~~

,TAPF FAILURE/OPERATOR FAULT?

0~0-17"

':~e

1342

I:F~E

OT.EXT

~327?1
le0d~~

8IT

,IF SO PRINT & WAIT RfCOVERY

~~00r;0~

#le04~0,(~1)+

J END 10I,JE/N. E. Nt?

0~~5'-1.1

'lie 1 e,27

8NE
JRECOVE~A~LE

~QH:i5e'~

(iI~6327

A~L

DT.FER
,If S~ TREAT AS FATAL
ERRORS (TI~I~G OR PARITY):
#~
,~ETRIEn ~·9 TI~ES 4LROV?

'~t::00~e

;Hh,;iS12

"e~510
~. 03352

ZV10514

:':,527n~,

!)T.RTC=.-2

8ee

DT.RXT

BIS

,IF NOT TRy AGAIN ••••

#10~000,12(R0)

,OTHf~WTSE

,STOP TAPE IN CASE
, ••• AUT CHK ALL ~nR~S DONFI

SIG~AL

ERPOR

10t1!0~0
~00.v)

12

00!(i522 110321

~1QVB

R3,CR1)+

~W0~2A

'161?;2
!1 k" (,) ~\ ?i 1

MOV

1(R1',R2

0"0'530 ?·~171~'
000532 "603210

SEQ
AI)O
S!fB
S;'IAt'J

Dr.TXT
R3,R0
(Rk1)+,R2
R2

ii00534

162~!'12

~00'i36

~0~3"'2

0~0154('l1

13~321

rIF sn

T~AT'S

ITI

JGO TO wORO COUNT IN DOB
: ••• ~ USE TO Df.TER~I~E •••
F ••• NO. OF SLOCKS DONE
JCHEC~ PRfSE~T TRAVEL
:ADJUST NO. ACCORDING~Y

BIT~

R:3,(Rl)+

al'!0542 l'i1e 14(" 1

BEQ

~v!541il2

NEG

.+4
R2

000546 0fe267

AI)O

R2,I)T.BRQ

:MODIFY SEARCH START BLOCK

00e552 0e5e67

CLR

Dr.PTC

: ••• 8. RETRY COUNT

1777·32
10 d 767

JSR

PC,DT.PR2

,GO SET UP NEW START

00k1~44

177514
~e0r;5A

1773V16

0N;l562

t;1e~730

0V'k'57:?

"'vi~717

~~
DT,RXT+4
, ••• \ ~AIT RESULTS1
;FATAl fRRORS • E~DZONE nR NnN-EXISTENT ~EMORY1
0P0564 r"11t;46 OT.FEQ: M1V
f~~,-(SP)
:GIVE CALL AS EVIOENCE
v:.Je0E'6M '~12746
Mav
#nT.FRE,·rSP)
:PRI~T nIAGNOSIS

'1t11410

12

'~ISCELLA~EOUSDFFINITIO~S=
~00112·44

v"RSAV=.14

~0"'k'I~O
~201~~

OT.DIP=1~1

V"RRES=46

177340 OT.T8T=177340
177342 OT"CCM=177342
177346 DT.CB~=t77346
177350 DT.CDTa177350
~004~2
0004~4
~014t5
~01416
~~00~1

DT

OT.~Rf=402

DT.IRF=4~4

OT.FRF=1415
OT.9RF=1416
.END

e00~0~RG

DT.6FO
0k'e264~
DT.eRA = 177346
DT.DIR
DT.F~E

DT.IRE

DT.TER

DT.TXT

W~V.3\(.lI?!?"'2

:~p

FLNf PV"CI( PTP

'? :71 ~ S P =,. 6

(7.0:'7 1""7

pr=~7

J

:
17'5'0

~TS=172~?~

=Tf.'11,

STATU~

17?5'2

MTC.1725~'
MT8RC.172~24

~

CI"lM~A~m

17'5'4

'1>111

;T""1t
;T~1t

~VTF/RF:rORn
~F~ORv

C~R~

17'510
'7'512

~TD=172~3~

;T~11

DATA RUFFFR

MTRD=17'5~2

=T ~ 1 t

q FA'" I

~7777f5

P~;:1.77776

,
J

;~T~

RIT~

;
1'>4,,(J"~

ErF=4P00'~

I':I?!??I?Q

CPE=2(10~0

"lt1e'e

PAE=1O'00Vl

(?:~l1e~"

fH~L=4"01i"

~~?(!!?e

FrT-=2"00!
R IE. 1 C' 0 VI

r :,'1

e~ i?

=

:1 ,~ ~ 4 7 eaT E £1 (i' 0
~0r>2?C'

NXMa:2(l!0

I'lO~Pt(J,?

SFL.~=t()!!?'

rl!1~qe4e

RCT=£1f7

"'~H'(}~~

CH7Q:2e!

ra'J"e~1J
rlI f~ r:o '?
4

IJ, ~

"'k'F'eI?2

R~S-=2

r,

srw~,:=10

L I: 4

"'01?C11'1

l1R=1

-J.1~14~

DFNR=14fi'
PARP=10

,"'~~oiJI1'2

13

I~'

F5

er'IJ~T~R
A~DRESS

:8

J

,

,MTr:

e9
E0

~ITS

Et

1~~e~~

fRR=lP0fr'~?

f2

r'5;?0~e

DFN:a61J,0P"~

E3
Ed
E5
E6
E'l

~l~e~e

prwR=10~~~

"'~de?e
~ ;,1 3 4 '" ~

l! to. , r T =:3 4 (}I(.'j

(.II~"'2t?e

CLR=2~1lI

PAR=4"0~

1 ~ 0 I ~ T. 1!~ 0
P-0t'e6C?: AnEl(=80
V'0?e 1. 6 CMfr/f')=, 6
r,~ r~ :?

ES
E.9

7"

r"01?~lJt

71
72
73
74
75
76
77
78

GIJB:t
J

,

Jt-'TPD 8fT

71pe?2

GAP~D~=f0?~f?

J

,

IrO"'~ANr~

79
€0

?C1f.'zCAe

~~u.e

~;i1f.'V'?1

RFAI')=1

r)lr~H:aQ'f.1!2 wJ;ITE=2
!?01?2''''3 F.rFM=3

et

82

""?,r?e'?'4

R~O.4

e3
84

i'lIr;'I?~~5

SKPR=!;

f.1!'21"'7?5 85PR=f

E5
86
;

e7

,

eA

,THIS

€9
9P!
91

I~

THF r.Evlrf OPIVEP FOP Tf.iF" TM1' ITl l l"
l)\lk~~n

~4e

t?::?~
3 Fi 9.)

.~VT~

2(7

;6

V~Hi'0::?
"00!~3
~0t"r.t1
"Q!()Ie~

"lFr'lF
.FNrr':
• l.<' 0 P l)
.!lYTE"
.qYTF
.QYTE

r~T.1

~T!

92 "001e"
~3

g4
95

~(~('

e I'" e MT:
177

0

,PU~V

\71
49'

t 6 LL

,

S1

V~f?e6

2t!!J

.Q~TF

2A~

~Q!ge7

e~~

.~YTF

...

;9

... MT

C1e~1(~

374

.Q'f'Tf.

T~A~S

{?e'lU.

.QYTE

CI..

UH

er"l~

~7C'
3~4

.~vTE

C;~frJ

1"'2

~!')I13

~!'lIe

.~YTE

0

.TFnF

r)VRR"...;1")

.DArBe

II':TI

MT.~AMI

105
letS

ie7

0CJ!1~

1?52t~e

[H'1tt

e"e

1!?!e

leg
tt~

0~17
e/?!2~

rJ(?~

e~2t

~(?e

0fr'2?

M T ,1\' A~

,

:

OP~FL!';t

.njl"'L
• TF",iCF
.QAnSC"
• ~'N!"lC

r) \/

.. ~T

r:.~J."iT

... ~T

R R ~ I"

nIT

I

.uY'TF:

?~"
<,..
t,

e:",e

14

STZF

II:

~1::'

•RVTE~

'"' A~.'!)' EP
IPRTC Ff"IR ttxTJ:'RPLPT

,

~A~

01'

TAPE

HHFP~tPT

J~

le~

P~.d

~T~UCTL~f

,SPFCT6l
t~lJJ:'FJ:'~

;8

103

It-.iDTCATr"R

r. E~'F. P A I STPLCTliRF FXCEPT

n ODE ".

SF:~VlrE

~r-..TQ"

,TR~~~FFF(

EI\'TQV

J"U'~SF

FI\TRV

,~PFr.TAt

F l t-.'

r. T I ~ ~'

E~TRY

CV"twT
0?2~

(}r?(J

0?2t1

!?~~"

~C"2!i

e~' 'I

1 '.1 et?2F-

317

~~27

e~3'-

-377
377
377
377

?,?33

:,77

0:'-34

377

et?3~

31 7

et?3~

i~!'.)V'

~~:3V'

00'31

VI ~ ~ 7

~ i~"

~~4i?

7~?

0"'.:11

0?v.

e~4~

e~e

er?!4.~

0(,44

I/"?e
0fJ.?

e~4~

e"',-

lrM~Dr

.~yTE

"'~4F-

e?e

11 :3 et?47

???

I~TF~~I

.~YTE

114 0~br?
11 !5 e~5?
116 0~53
117 ~~~4
11 e ~~5~
119 e~6~
12"- I'J 0' 6 ,
121 l",,.!l
122

"~P~~2

I~TRET:

• :4!I")PD

,An~R

~?~

TrMMOt

.R't'TE

JI AST C:t.ifll!"

e~r

FQRS~!

.~'t'TF

'~ET

1~:3

0~6~

FrR

.1'i)~1j

, RF:TRY

TQYCNT:
lASTAT:

.";OPI')

,TI\I1TT4L

, !)JORf';

,ADrR

,., II' ,1 ~ CfilA J

~Cl~2~i?

eRe,

TNT

L~e~

RFcrvF~v

r~:

I

c~Mr

~A~CLER

FO~

FR~

~EeCVERV

VECTOR Fe" INT

• iA,OR~
• '. ') R

e

I
~lF~~1

!~IT:

rr.fT LI\TT f\!iM

['0"'212

12A

?;t?7~

,eLR FX'fF;A BITS

1'4~7~1

174j77

12= (l"'7f.

:~1(J131

~t02

!?fi1"'J~l

17?5~2

126
1~7

eH>4 0If:i"7i?1
128 e10fi r627~1

S:·iAR

R1

A"'O
A!"f')

1777'(1,
"1?6~4

r·10V

130 e114 (:'1'6:"5
131 L?;, 1f' C'l~746

'11"!V

129

Cq

12

C~P'io,R4
(~P~.,~5

:~AVr=.

W"v

·~~~,,,,c~p,

J~TMUlATF

M:"lV

R'5,-(~P~

M""

~.4,~

.J~~
!'1"V
,~,., V

R~,.(~p,

J~AVF

RI\' AO~R
CRr~T~Al PC

J;(FTI

I~T

CALL

11777F;

132 0122 ~~1~5.d6
133 0124 !~137.16
134 ",,13"

i}(~1l5.~f

~13~

1'.1 01 4116

~'3d

OItr'1~7

135
136

...

C~p~

...

Rtl,-(SP'
R1,1

~PE~FT

,SAVE

.~~TAT

rAlLTN~ ~c
F~R
HA~elfR

tNT

1/71'~

\37 \7'14" (';'O,,17C,1
!"-'i-)? 1 ~2
1~e

e14~

139 !ii;4f.
14~

C1;

1

ol'"

1?~711.
iVj v

v rr 4

11~7F,l

T~T~

( :; 1 ,

i4P~

If' !ix

~1'"

.rf.~~.1"CQ1

vP

"~?t4e

15

,

REC

IF NOT RECO

rOli~T FOR FRROR
~ETR¥ r.Cl!~T

RFT~YI

'77/~1
~ \~

F~C~

~AVE

F.RR

p~

~0~~nt?

~0~?~e

R~T

:rHFCK TF nfVT.C~ !~rTrALI1.E~
JRRANCr- IF r5
'~ET rEFAllLT "E".pev.,PAR-rOO

~A

eV.~T

",ACRO

Vred.,4 13 .. ~EP.72

r"."", e1 e

141 el15~ tft"::; e 1 1
142 eJ161? "~~2?17

0~H'~

PAG~

1 ..

c;;t,

Tt-.!fT STATF

CI .. R~
RTS

Pf.

r. t RR

F.P~S·.Ii

;rLFAP FRQCP SWYTrl-i

TSTR

I\TfNr.:!

JF~RANC~

IF tNT PfT

146 CJ.!172 1?01e0'5

!3~!E

147 01.7d

T~TR

MTE),IT
.. 3CQ~'

,f3R~~'C'"

IF CALLfC

FRO~

;~E~OVE

pr,ps

RfG~

143

144

I~!ITXt

J

~

tt"

1V1~~~7

STM~(l~:

JrLFA~

~fC~

17715r;S

145

016~

1.0'57~7

1776"5
1~".7~0!

~UF\,;f

177775

e2eC'l

f.lI~1e.ry!2

AII.IE

~TfyrT

149 e::>e2

f,!f;~7~6

AnD

N~e,Sp

1418

15e

~,e6

"'0(;1e'l?!

10~e~7

MTE)(ITs CLRR

A~O

I~TEf\~

177615
1~51

02121 t'!-H'

JMP

't.4(Rfi"

,t:'O~PI.ETlrl>,J

G(H

Mnv

(~P'''.!N'''PET

J~AVE

r;rAs

11r":'V

Cr.-A

Mt"IV

e~ c • ~ N '~ TRRC

17~

E){IT

t?~V'e14

152
153
154
155
1§~

021~

(?1.?6~7

I It.! T

~DDR

RFTIIR~

177f.,'?6
151

~~22

I}

1~ 7 ~ 7

'7?e~4
'725~6

1~a

0::>3 (?I

r?1€7~7

,~""'1TC~A

17763Ql
17~5:?4

159

023~

C~PQ

121\27

C" 1 , ,. ill R IT E'

,rI-lFCK IF

rc:
....

T""I~

WPITE

A

,

~,1~~~2

16e

1lSl

q.01~017

A~IE

Gt"2

:~RA~rt-

0:'.44 "3'7~1 Gl"ll.

BIT

~~~l,·~~T~

JrHFC:K TF

"~42

I~

~OT

~~!TE

lC'CI<

C~

!?0~er,-4

1725~~

16 2

0~5~

~~14~~

F3FQ

Gr2

p:.lp,H.:rt-

16:3

e~54

tJ!0A7fl7

JSR

pr,~EAl)v1

'TS~UF

AQ

r,r1

,r,o

J~R

P~,C;F.ADV

:rHFCIoC TF CEVTCF PEADV

R!S~

1t'C"t"'~~Tf>H

'~ET

HIS

jijT"T ... i,tjR,R2

WWR

R',·.4j~Tr.

Jrs~uF

~"V

•• 4('" ... CSP'

JPF~TC~F

(i'2d5~e

J~R

R~,.(SP''''

r? I;' 2

RTT.

o0C'e~4

164

e~6t'1

Cl'~'J771

165

e~6~

(?~d7~7

GC2.

r~

t\OT

ACTtl"!N

TFST TF

~~r;

L~CK

~T

ILl. Of\

!?I0(1t?4e

166 0266

15~t3i'

r; E~'

u",·~

PAf:;

J~ET

TNT

f"00'e1.e
17'-5?3

167 02704

c-5~7'j!2

C"QlP1?:1
168 03e", 1 1(;1237
1.7'5:>'2
169 03041 rJ137~6 Gr3t

F~B

Tf\~TP.Uf"T"C~

PE"r,s

~w'eA.6

17e

0~11{!

171 0312
,72

f'iI,~

0'

11':3

114 i2'31d

,

,PETUP~

TI'I P·JTEPRLPT

J

~tF7"'fi

RfAI)Y"

f~~

V

MT.~t\

... ,_(~P'

477474

16

tTS~UF

ACTT("IN

DTAt:.

..

AN", GO BtT!

175 e320 "'1?746
;";~f' t1,~ 2

P'e
177

~'"2"A

\(

.~.:;"

e32~

'·10 V

'l .-I..-w ,.., .., A

i;

~J

,,/ t.: . .r

...

p:;p,

,rFVU"E i\rT RFArV

,.~.,.

4i

1?:~,)7:'7

~4e?

l"

RFA.!')Y,

t

FPT

IF r'EVH"E RFAr'V

~~~I 4,4.~TS

'TE~'f

:PRA~jC'"

:?(H'l~e

1 ??~P~?
HF~

~FAr.Y1

fHT

~r.APSI)N,"N~TR~

01'4

8~JE

RF'Aryx

rJ3?1~7

8TT

.TLR+~~S.~DwN,"·~T~

178 lil334 (l \11 7" 7
179 e33f' r ,~~717

IF "OT

I'll 4 !'J I? ,-,:,
.. ~ " ;': '" '£.

17')512
18e e34.1
1A 1

!l~4~

17('11

17~t?l13

17~'5?l

8FQ
182 0354 r·:J17'i7
is:! e3fF f?W~~;.' 7 RfAr;Vy.: RTS
184
185 016"

ow' 1.;;'7

,

'

J·1P

~PF."

C~J,

,!,A P

CI r:~:

TRA'~S,

,T ~ q

pr,T;\Tr

,TNTT

i';("iV

6(~7j,Cr.:A

t5F:T

~lFF

Arn~

Io.1t"1v

l~UHn,qRr

'~ET

~r~D

r:rU~'T

A~l.

~kC

IrVT

'TC eVTF

~r'1V

',~{PCn,Q2

"4'7!?~

RTC

~1J7713,~,

I

'3
(')3::'7""2
r~!~ :1:.,..

.rFr1F

DvR;;w'-;

27e
271
272 e144 (l3?717

folR

J:(!;"f\1'" X

'~ET
'~ET

~'TA'TI'S A~D E:)(IT
C:MMr.R~"

I.A~T

.F\r'lC

HTf

(\!i'!?e42
'7?5?~

:2 7 :3

~

7 0 ~ r ~~ 1 i{ i? 4

B/-'E

R~"~X

Mr'l\l

~1f.R'

JTS~UF.

F:r.FrK'

;RRAto.,CIoo

P('

~Fl~F. ~F.Tt'R~
;~fT r~MD:~RrT~

2 ., 4

e7 5 4

(. 1? 7 r~ 2

276

e7 64

~~(l2?7

R~Nnx~

RTS

1?11'7

F.~Fr.K:

r.~P8

JYE~,

BRA~CH

RW~

~7723~

277
278

e76~

~(),!!rtV'2

279 e77' ~~44~t
28e e774 00?2 n 7
e776

?1'7~~

282 1'''0?

(>1~"'f'7

281

~~Q

Rrs
ECFCKtl M0V

"'f.,R2

~77e42

19

E~F

CV.~T

28:3 t!"0Ft

~ACQr

f'l! L~!'}

vr 0 4 .1.4

1~ 7

1~-~EP.72

PAGF 1 ...

~:-:1?0

J'AP

Gr.!

,GO EXI:CUTE

MI"\V~

oI,jfnFM,C'.)t~

J~ET

JfiR

pr,~OFCI(1

,r;n

,~Q

TI.,' S T 4 T

1772~2

2814
~A5

11?112

1

1 ~71. 1.

WFOFI

r(~!?e(:l3

2Be 1'''16

r~.d7~1

C~Mn

tA~T

WRITE E'CF

E'ltFrTTE

1777';~

287

1~22

f'i!'~r}4C:;6

1~24

(~3'7"37

,AT t t-,!T

GET

~Fi,

EXIT

AH;

~TAT

28e

2B9
2ge

r~

rJl I?

V, e

PAR"E~:

17'5'0

291
292

1rJl3~
1~34

293

1P4l" 174,70,5

rJvl14152
C't~3"'5

: RTT

4tirH7q,It __ ~TS

,If 9

lRAr'!< TbPF

HFQ
t--1nv

TLST.t\T

;RRANrl- (TP·;QRI:

4rR3).R5

,GET to.'E\4:

ATC

~17~:j76.RP5

J r. LI~ f)(TRA

,SET !to.TC

~F.\4

5ETTU.iG~)

!"'E~/PA~

~HH'0f'!4

17F376
29.d 1('144 1 ,~*' 2 r 5
295 1"'4~ 1l'1Fr,~ "'5

A~RP

RIC:

~f'RR

R~

q&:;

296 tY,5t'

~ ~.~FeVl5

297 liJ152
298 11'54

r~;'Fe""5
!"HH~~5

RI"IR8
Rf'R
R("IR

299

~VlFeI')l5

RnR

Rf

~nVR

R",1~CRt)

BR

Tl..STAT

Mnv~

Mnv

1('15~

30e 1016(1, 11t'5 F 1

301

10!Fid

~CC>~1e
r0 f7 415

~ITS

PC~tTlr"N

PROPER

I~ ~

R!'

w nv·:n)AR

;~ET

~;E

ijcI(CR,(Rf'

'~ET

tA~T

.-,P"R:?

'~f.T

r~~D

go

S!(PPSP

,r,0 SFT

~~t"I v~

.cSPR,~R1~

'~ET

LA~T

MriV

.. 1 e

'~F.T

r"''''o

RTT

:/;~OT+RWS,_N~T~

ITE~T

BF~

Si

..327 ;~;:?

H'T~

:

BIT

• ~ G!.

-to !=I

T F' + r R F .. P AF , R2 rTF S T

n,jI~

TF ERR(,"H

T!~E

rl"4',~r?
()~H4~:;

;':99

143?

4~e.

(.; 7
1 7 r- 41 4
t4.H'! f~ ~n ?: '3':;
144? f:'3'7!:"2

4el
4~2

..

ld3~

?~;::'2

r~~~I1(J??

Ii"',;)

1.d415

7[/' 13~V}

4e14

I d 5 C1

10~2~7

",..,

l~Q

!~T7

p. C

~FT~v

,PRAt-.C'"' IF'

,PRANCIo- IF TO

!~\E

!~Tp;

KrT

,liFGL,J:il2

f,

E~R!=~

RTT

.~,(R5)

AFt]
Mr'!V
i<1'W

~~,·C~p,

! "

,TF

""'4
lr"

~i E
1"': C~

'Po

~HJT

ER~

T~'1

AGAT~

L~TF

=81 1 S GPAt--T

j1S FAiAl.

FLAG

F~PCP

.1 ~fT

17;:'377

405 140 4

?3'71~

V'
4~6

t d 6fJ'

407

146~

~H~8

l~tid

~1

'TF' WRITF Or;! lA:F.nF,

ACT teN OTAt;

!S~UF

0' V,' Ii' 4

1 4 ~~
(""1 :? ? ,1 6
!?1?7t1t3
r[·)

III. T7
~412,

.. CSP'

I.'vl!7412

409 1471!
41e 1412
411
412 1474

r~~"'er4
t-\~::e4d3

r'~3~7"2
(~.j

InT

,
I~T3:

TC RPFCTFTC

fiR

P,T7

~nT

~PGL+~TE'+PAF.r.Rf,R~'C'"'ErK

,1';0

IF

R(1UTt~E

FRRC~

,-1 '-''' (~

41.3 15~~ (J014J~'"
;li4 11:;0' 1??7 1 t

HFQ

P i7

,RRA~rl-

Ir:

Ct-APR

~~Kpq,CRt'

~RRANe",

IF

~'1H'Ii'~,

.citE'

15i1'~

rv~HI'"

~r: (~

416

1~1V1

1?'71.1

r.~'

1. 7

1~14

I: c~ 1 4;? 1.

418

151~

?1f.7f..7

pq

r~

~O"

CR

~KTP

~5~

i t1

"~~PR,(R1'

ri'(-1'?i}";'

d

E"FQ

! /I f,1

Mrv

T~YrNT,RfTRV

'~ET

,TF

RETRv ("CUNT

17t::~34

17f.3~V'

15 WRITE

419

t. ~2t1 (>3'71'5

HTT

.. t2,U-<5~

42e

15J~

"vi 1 e~2

Rt-.!E
fHS

.1~,CR5~

:TRV

nnVR

( R b , , T C~ t~ ,.,

'~AVE

t..1("1YFl

~1e.,R2

'~F.:T

Mnv

_·t,·--..,iHQC

, rot.lP\' T /"IF 1

.r~P

Gr2

,r;o

RTT

.r:CF.~OT~Q2

,TF FrF OP ROT

"\:' I" e 12

421 153' (75'71'5

C~t.'"

r t\ T~
wITH

~~rTF'

Lr~r;

r;'I,,1 i? (1'1. I'

422

1~Jf

1t ,

5~7

H,fT6:

C~~!"I

17F31("

423 1542

,

1 ~ "" 2

l.F

B~P

"00'(712
d~4

1541- ','\1,7 1 7
177/77

425

1Bb4

17?~'4
r,~~'

r 1 ,.. 7

E)(F.r.UTE::

17f.~"'2

426
4t'7

1561:'

P3'7~?

I~:

T.d:

t?41?~4i7

428 ,r;,;Fd

~v'"

1 ~ ;~,.,

~l"IE

r~ T7

,~I(TP

429

I'i'v~r;;;7~7

T~T

!l.~T~RC

,TF

RFI)
~1r VQ

I ~ T7

J~"p

Gr2

156~

C~

CCL~T

~SF'

TS

r;r.~F

EXHAU!=TFO

17''5?4

43e 157'
431

432

''''7~

1~76

?~

1

14;)1

11 5 f~ 2

r:>~j!"l'\n7

(~5"P2

17F~F,i

433

23

;J:L~E

:TS DCt\F
SrT UP r~~"
, r 0 t\ TT" I.,' f SKIP

rf(

B5P

(;AP

r.V.~T

~34

vC0~

~~CQO

.. 14

13-SEP",72

1 r1~ er 7 I"! T7:

tf\0~

rJl~tC1e

Fl~GF

CtRB

T('M~D

CI.R~

RFTRV

~H'V

PTRET,PC

1 ..

17~2<1d

435

~ if'

1~V.6

r:. (l

p.

7

11~2~2

436

fl'11'7(?7

1~12

,~o

TC 5PFCTF!C

17-'232

437
"'38

;139

t"(~~r?~

cV • ~ T

tJ. f..

SVMPOL

esp~

.FtIll"l

r

1:3 ... 5 E P '" 7 2

V 0 ~ "" 1 4

=
::

0(J07y?I!!R

AI"lE)(

e(~~1~4?

APe

e

(:1 ~j

('

t~

F.

ef'1'64R

CI OSE3

Ct-lA

~t?~(l'f.~R

CMMI)

eRE

&:

Cft\F

:a:

EOFCK1
;:

GO
G01

ILC
If\T
INTI-It.JT1
INT04

=
c

~TAr.:C
~TD

tJTS

CFFlIN

P AGj:" 1 ..

=
=
=

:I

jH'flOr;~

~r;L

~'rJ e!' 6 4 R

R~P

0~~~~r;,

r1-l7(l

,;"C't~ll'R
07tz~1~

rl.n~J

e(" 9.! 1 A C~

(':fiR

::
::

F.("F'

II

~4~r~r"

F,f':!FrK

~!'!r~77f;R

EflF~

&:

?I!?I!?t7f?3

F(",T

~?(H)Q'r

(~f.'I~

GAP~"~K

~~"e?2'R

G~8

~r..-0?4dR

r~!'\2

tfJl~~(?I~

t~!

=

e"2p~~

e HH'L'lt?
ef'il{"t:."01

0l?e2n?R

IT

rr.3

0C7eC'6'iR

p~

pHF:t\R

0?e~47R

!t\'TF

Q!~1~7PR

ef)1.~2""~

p., T. 1

[FJeV5~R

p.!TPFT

e"'~P5C?R

~"'t,.,!i'!"'~
~ (~1 r:. IS '" R

p.i
P,!T'5

il!!'1~26R

r~'T3

e!t?'147~R

~~1~3t'R

yNT?

~l'i'tfVl~R

LrMMD

0f'e('2F.R

~T

~~0c:'\HI'Rr:

172"2~
[,~"e~25R

~TC~A

:II

t72~21"

,..TRr

II:

172532

e

(lI

~11

v'1

r'

~l ~

17~~2(\

r1TC

t7~"3~

:I

I TX

172~21?

"1 TE)( I T
tolT • N A ~

e~~"'71t'F(

OPNFI.t;

e04"q~

PARe

II

~iPIZ~

=

?1!l"~~
(I!~~32I'\R

P~

RtF.
RIANnc

~G'ec:'

,.

4~

0f?~?16R

~fAr

=

et"0t"i?1

p,., ~~Q
R'- Anv

erll'~lAR

rD

,,
SPFST.l
SPL.ST.6
,

pe,R5

iIISPECT •• ,P5

JMP

,GO TO PROPER

000662 0100412 SPECT'
000664 ~0~4~2

aq

W~OF

0~0~6~

8~

R'·~Nn

~0~~t7

B~

OFFLIN

30

S~

FUNC

ROUTI~E

0(%'A70 0100476
00~672

~0~5el2

0021674

~0!Z'453
rne~530

~H~067';

,

BR
BR

SI(P

BR

PA.ROEN

6~

TIJSTAT

Mnv

R3,,,,,CSP'
#1433, .. CSP)

Jtssu~ SP FllNC BLOCK BAD A.~nRT
,WITH ."OR OF SP FUNC BLOCK

PC,EOFCK

,WRITE F.:OF IF

U<1,

,SET LAST CMM".OFFLINE
,ISSUE DISABLED RWV

B~P

r

00070~

000702

~1Y-'l346
~1?746

00070~

r,.,e0e."4

0~0710

C'l0d767

~01433

A¥;ORT:

MOV

,
QFFLIN:

InT
J~R

NECESS"~Y

~00052

CLRB

~H')0714 105011
000716 112737

Move

#l,~#""TC

~0"€V}1

172522
0ti10724 i?!V'05t5
~fi0726

~€d767

0~073~

Pl0C'! !21 34
004767

8R
R\41 f',J1) :

TII5TAT

JSR

PC,F.OFCK

,GET 5T4T AND EXIT
,ISSUE WRITE EOr: IF NECESSARV

J9R

PC,RWNDC

rISSUE DISABLED RWO

8~

r~0\i1~02

00073~

i?!~~510

at'l074rJ1 112711 RWNDC:

TUSTAT

""flV"-

jRWD,(Rl)

,GET STATUS AND E)(IT
,SET LAST CMMOaRWD

8tT

# 9 0 T+RWS , .. # .~ T ~

,IS IT REWOUND

('lJ0t'1fj04

aCll0744 ri1327:37
~"'I'C42
t725~0

fle0752 f)l01004
000754 0127~2
[~0"e 16

BNE

RLtlNOX

MOV

~\6,R2

~00111;7

J~~P

GO

RTS

PC

000766 121127 EOfCI<:

CMPR

(Rl),#WRITE

,IF LAST CMMD WAS WRITE

0~0772

!i')014~1

0vH,77d

~01(!207

BEQ
RTS

Ef)FCKl
PC

0V'0760

,YE~,

eRANCH

,ISSUE RWD

177232
0V.0764

~002~7

Rl"NOX:
r

!i10 01 e0l 2

000776 012702 EOFCKt:

Mnv

#f5,R2

,BRANCH
,ELSE RETURN
,SET C~MO·WRITE fOF

MOV

P;P)+,INTRET

,SET tNT RET

J"1P

GOl

,GO EXECUTE

MI1V8

#E'OFM,CR1)

,SET LAST CMMO

JSR

PC,!=OFCK1

,GO E)(ECUTE WRITE EOF

BR

TI1ST.T

BIT

tiCH79,,#MTS

~0rJ1e~6

21 III 1 "'02 012667

AOOR

177042
001~06

liIt'l'I167

177232

001"12 112711 wEOF:
001"'1~

~000~3
~e4787

177754
0~1V!22

~00456

0~10124

0132737

,
P~RDEN:

{"~H"020
l7~520

31

,4T

I~T

RET, r;ET STAT ANO £)(IT
,IF 9 TRACK TAPE

001~32

"01452

!;~Q

001r,,34 "16305
rHi:H'J004

MOV

TIJSTAT
4CRJ),R5

,SRANCH (IGNORE NE'W SETTINGS)
,GET NEW OEN/PAR

~01~4P1

BIC

i11176376,R5

,CLP EXTR4 BITS
,SET INTO PROPER POSITlI"IN

0I~2705

176376
001~44

1~62Ql5

A.SRf3

R5

0V)1~46

106005

RI1RB

001OJ5~

106005

0~10!52

K:101054

0015005
et06005

001r.,56

A06~H?15

ROR9
ROR
RI')R
ROR
MOVR

R5
R5
R5
R5
R5,10(Rl)

6R

TUSTAT

MOVB

#SKPR,(R1)

,SET LAST CMMO-SKP

MOV

#!3"R2

,SET CMMD

BR

SKPRSP

MIJV8

#~SPR,(Rl)

,GO SET COUNT AND EXEC
,SET LAST CMMO.eSp

001t'16~

11 r.5EH
00O'1(iH0

001064

0.0~A35

,

001"'66 112711 $1(1':

R5

,SET NEW DEN/PAR

~0r.HH~5

Ci12702
0100'1010
001A76 liJ00414
0011001 112711
001~72

aspc

0~O'I006

001104

~t27Q12

MQV

#10.,R2

,SET CMMD

00111'"

~00012
~32737

eIT

#BOT+RIHS,.#t.4T~

,TEST IF AT BOT

001116 liJ014t'14

BF.Q

0V't112~

MOV

SKPRSP
4(R3),6P<3)

,BRANCH II' NOT
,REJECT tMMD RETUR~

TIJSTAT
4(R3),eRC

,SET STATUS AND EXIT
,SET RECORD COUNT

0O"'O42
172520
0116363
(:'10(1'109.14

p~c

~0t?1006

0~1126

G10Q1414

00113('1

~16367

8Q.

sKPBSPa MI1V

~00004

17~726

00113fl t'l05467
176722
001142 0.104767
1770!50
0V'11146 QJ13763
172524

NEG

BRC

JSR

pr.,GO

,GO EXECUTE CMMO

MOV

,NMTBRc,6CR1)

,SET RESIDUE REt COUNT

NEG

6(R3)

0.100006

001154 et05463
"'0Q1~H"6

,

00116'" 116102 rUSTAT: Move
000010

001164 111101
001166 A00302
00117Pl ~50!201
001172 A13702
172520
001176 (}I327t!12

10(Rl),R2

,GET DEN/PM.

MOVR
SWAB
BIS
MOV

(Rl),Rl ,GET
R2
R2,Rl

BIT

*CRE+PAE+RLF:,Q2 ,TEST STATUS FOR ERR('IR

SEQ

STAT1
*10('1000,Rl

t.~T

CMM,()

,SET DEN AND PAR

'~MTS,R2

031000

0vH20' j,11014e12
001204 (:1152701

BIS

101?l000

32

,BRANC,", IF NONE

,SET

ER~

BIT

COU~T

STAT1:

., ....... A,.. ......

BIT
,,, ,.. "

0V'1215 0'I527r,;,1

BIS

iH0li'0,R1

,SET EOT

8tT

#~OT+RW~,R2

,TEST IF AT BOT

001:226 '''e1402

I3EQ

STAT3

~"'123~

BIS

#40e.,Rl

;SET

BIT

#r:QF,R2

,TEST IF EOF

~v:1~10
."1 I~

•

>:;Vi.l.

"'.

Ai

~,I."

0~1222

~327Q12
~020~0
'''I{' ....

~;tt:.

cw 1000
;~327~2

" r:."-1/

STAT2t

#EOT,R2

STAi2

nHUNeH

V'0re42
r',5:'.701

,TEST IF EOT

1~32702

3TAT3:

~IT

,BRANCH IF NOT

r;,001400

001"34

IF NOr

G14100~0

ryOT

aIr

001241I'! 010141'12

BEQ

srAT4

001242 r,527OJl

815

#200,Rl

,~RANCH IF NOT
,SET EOF BIT

,CLEAR ALL BUT WRI.. AND 79CM BITS

-::'0~2~0
0(}!124~

r.142702 3TAT4:
177753

BIC

#177753,R2

((jV'125~

~~03~2

SWAB
BIS

R'-

001254 Vl5P201
0CH '.56 01 10163

Mf1V'

R2,P,1
Rt,2(R3)

,SET WRL AND 7,9 TRACI<
,RETURN STATUS

BR

CI1M ..T

,EXIT

r,QlVl01Z12
0~1262

~00414

v.101:'-64

~04707

J~R

PC,tNIT

IINtT CHECK ON OEVICE

~01270

176576
i elSe'o1
t77770

Ci.• RA

.UHRi)

,CLFAR "PEN FLAG

r;,"'t'74

~r4767

J~R

PC,FOFCI<

,IF LAST CMMD WAS WRITE, WRITE :3

0~130P1

177466
C1r-1767
177462

J3R

PC,E'OFCK

001~04

~04767

JSR

PC,FOFCK

JSR

PC,RWNOC

J~P

StMCOM

M"V

"~44,·CSP)

~r.4536

J~R

R5,ttCSP)+

~1f)7Q10

nov

MT,R0.

,GET "DB 'ODR

:1!1V

L~STAT,Rl

,GET LeMMD

Mi1V

2CRt'I,

Mf1V

#~TC,R5

rADDR OF CMMD REG

BIe

tt10:?1,(,,§)

JOI5A:;LE DEViCE

J

CLOSE:

1,77456
0~131iJ!

?,fl.1J767

i77424
0~1314

~0~167

C!,)!-1.J.

,ISSUE "ISABLED RWO

176642

~~132~

"-137 4 6
~ra"'044

V.W 1 ~24
0('11 :i26

.,

rI..JTH~

17~446

~H" 1332

~167ri11

176!)22
001~3~

;~1';~~3

rlIliH'I k1
0~1~42

e. 2

~127~5

d~3

172522
~~134ti

rJI42715

CHHH ril 0

33

,SAVE REGS

VECTOR

A"CR

,GET SP FNC BLOCK '!)DR

iNiER~U?T

k.'~1352

013702

Mi1V

'jMTS,R~

,GET STATUS OF DEVICE

I~CB.

INTEN9

,SET INT FLAG

BIT

tlIIl.C+ N XM,R2

,CHECI( !LLEGAL

INTI

,SR.NCH IF NOT
,DISPLAY STATIJ8 AND DIAGNOSe:
,FATAL ERROR-MAG TAPE

1725('0
e~1351;

105267

176465
0P11362

r1327~2

H~"'2c;,0

0PJ136t; ~014Q14
001 137r;, ~1~246
001372 "'12746
~01432

I~TF=

BEQ
MOv
MOV

R2, .. (SPl
toct4:32,·CSP)

C~~O,

NONF-:tIQT CO

0~137~

t'J0~0P14

,

1l')T

00140~

105767
176446

I~Tl:

T5T9

TCMMD

,CHFC:I( IF THIS WAS A RETRY

001404

~014~3

SEQ

~01406

10"'ItH'7

BPL
CLR

INT3
INT2
R2

,BRANCH IF NOT
,BRANCH IF WAS NOT

001 4 10 "'li3!i002
!iH'11 11 1, 15';7!.l12

BISS

,ABORT

~SP

TC~MO,R2

JGET CMMO

NEGR

TCMMD

,SET-NOT asp

Jt.1P

GOA

,GO

BIT

#~GL+I3TE+CRE+PAE,R2ITEST

001432 Q\k'1463

BEQ
INC

INT7
RETRY

,BRANCH IF NOT

01711434 005267
"01~;'6

BIIJE

0r.l d 4' 0I327V'12

BIT

INT6
#RGL,R2

, BFUNCH IF TO TRY AG.IN
rIF ERR-BUS GRANT LATE
.IS FATAL
,SET fR~OR FLAG

176434
001 11 1f1\ \05457
176430
001422

0I0~lfi7

176574

T~Y

,

001426 0I327et2 INT2:

OF RETRY

AGAIN

IF ERROR TIoI15 TIME

013 4 400
17~4t4
00144~

Vl0~001~

0"'1446 0101350

B~E

I!lJTF

0~145CJl

I:JCR

ERR~W

BIT

.4,(R5) ,IF

001462 C'l102 4 6

BF.:Q
MOV

R~,-CSp,

0t'l146 4

~1(.'746

MOV

.40fi,-CSP)

0014701

1i10P.4I(1S
(lI01?1004

II")T

00147~

CJI~H)\443

8~

INT7

BIT

~qGL+8TE+PAR+CRE,R2'CHECK

00145&1

105267
17"'377

~32715

"'0"'0"'4
0(,1Jl.d6~

0Vll<174

"'~1450

J

~3~7~2

1"1T3:

W~ITE

OR

WEnF,

IS~Ue:

ACT InN DIAG

I tJT7

,GO TI') SPECIFIC ROUTINE

IF

ER~OR

0304210
0V"150P1

0I~1440

001502 122711
~~"'005
0~1506

~0t4124

001!";1~

122711

8F.:Q

IIIJT1

C~1PR

~~I

V~~8

1972 BY DIGITAL EQUIPMENT CORPORATION

NOTE
This document is for information purposes only
and is subject to change without notice. DEC
assumes no responsibility for the use or reliability of its software on equipment which is
not supplied by DEC.

NEW AND CHANGED INFORMATION
This manual documents the software as of Monitor version V~8. It has
been revised to include all new and changed material since Monitor
version V~4. Such material is indicated by vertical bars in the outside margin. Whole new pages are not so marked but are dated in the
lower outside corner.

~

SOFTWARE
DISTRIBUTION
CENTER

LPll LINE PRINTER DRIVER
The line printer driver provides the basic, device specific functions
for the PDP-II Line Printer (LPll) or the Centronics lOlA. The driver
accepts a block of any specified length (48-word standard) and feeds
it to the printer. The block may contain any n~~ber of lines (line
feed characters) or pages (form feed characters) to be printed in a
single call to the driver.
The line printer driver consists of two sections: the fixed
driver table and the driver code. The driver table gives the following information:
•

Line printer facilities:
Single user
Output only
ASCII only
Non-file structured

•

Standard buffer size of 48 words

•

Entry points to the various line printer function routines.

The detailed description of the functions of the line printer
driver is given in the following flow chart. The following special
points should be noted:
1.
2.

Both the OPEN and CLOSE functions cause a skip to head of
fortn (a form feed is printed) on the printer.
The transfer (and interrupt) function(s) transfer as many
characters as possible to the line printer with the line
printer interrupt ta~porarily disabled. This transfer terminates when one of two conditions is reached:
a.
b.

3.

The line printer starts a physical operation
(because its buffer is full, or because a line
terminator character was transferred); or
The transfer count is exhausted.

Special character handling: NUL's, DEL's and VT's are deleted;
AUX-oN is transmitted as LF (for LP'll) .or as VT (for
Centronics); CR is transmitted (if necessary) before LF,
VT, or FFi TABs are transmitted as 1-8 SPACEs (depending
on current line position); all other characters are passed
without change.
1

4.

Trailing SPACEs (and TABs) on a line are not printed.

The maximum characters per line is an assembly parameter, which
may be specified by statements:
LPll=80 or LPll=132
If not specified, LPll=80 by default.

Furthermore, the Centronics

line printer version of this driver is produced by an assembly parameter, specified as:
CENT=132
If specified, CENT causes code unique to the Centronics printer
to be assembled and overrides any LPll parameter specification.
A flow chart and listings of the driver follow.

October 1972
2

Transfer
Entry

Interrupt
Entry

I

/"

Set to Run at
LP Interrupt
tatus

Save Transfer
Count and
uffer Address

Set Buffer and
Character Count
to Print Form
.Feed

Print
DEV NOT
READY

Through
Diagnostic
Print
Routine

Take DDB Com
\pletion Exit)
Update
Character
Count

3

A listing of the V007A driver for use under DOS Monitor
release V08-02 follows;
CV.lP
N~C~C Vr0~w14 1~·5E~8'2 ~3:11 PAGF 1
C0PYFHGHT 1C:72 Oyr,ITAI

E
7

e

LP11=~0~

;

.TITLE
.tFNCF

O~.lP
Cf~T

.T.FNDF

LFl1
J~EFAULT

1~

.FNnc

11

.FNnC
.!FnF

12

13
14
15

P0'1'e

LF.SIl~LP11

~~~e12

LP,SK2 z '2

'~T

-.

nF

PRY~T

pnStTTr'lN~

TRAN~LATtr~

~5~TP~C~.'"

OF

(22'

3'2

.~LnBL LP
F~R LP1' A~e r.E~TPO~!rS ,~t
LYNFS LP.~A~ TO LP,~K' Fnp
DFPFNnE~T CHARAeTf~TSTlr.S
,wORD
0
,rURRE~T no~ FTR
,RVTE
3'2
JFA~ILITIFS I~OrcAT~R

e,,3

• R YT F.

eJ
3

1"2

.~YTf

U'.

2"'~

,RyTE
.RYTE

J~RtVFR
,CHAN~E

22

23

,nEVrr.E

"0~ItH"
1?0~02

1?'~r1e~p

26 ~eQl03
'2 ., V0P'04
28
29 '21~0"

e('p,

"0t'0~
~0fl0'

~3
~A

CF.~'I'
'~L~8~R

LP.SK2=13
.fNnC

20

3~
~1
~2

PRINT p~~!'!nN~
'LF -. TRAN5LAT!C N CF "S~TP.C~.2" (?2'

LP.SI1.CENT

~1

24
25

TO 8~. r~LUM~ LP.I!

J~U~BFR ~F

.!FOF

17
18
19

"OPPr'lRA'T!C~

L P i1

.r:~"'c:

16

FQI!IPt-AF~T

~rtH"l~

2~~
e~2
lZ~e
eC'l(Z

t'~qil13

~l')Ie

e~p!14

~4~6V!~

V2l~1!!!
V0~ 11

LPI

,ClYTE

LP.NAtI,

, ~ 0 " P L F I.; N t T ~ I ~ l,.; F F E' R
rNT~'-p

2ee
L~,rp~.lP

.~YTE

LP,Tq~.LP

,~VTE

.BYTE

L~,rL~.lP
0,~

,RAn5~

ILPI

.ePFN

f~TPY

"RAN ENT~V
,rL"Sf FNTRV
,SPFCT~' ,~PARF

,I')EVICE ~AtlF
H:SR ACr.H~

177514 LP,r.SRa'77514
GW?'2!'e

J~AlLC~S Q6 BYTF!/T~AN)
'TNTEF(~UPT fNTRv
JTNT ~T6T'IS (PRr-4)

,TRAP VFc.: A"OP

LP,TRP.~0f'1

'FOR LF11,

V0f:l!1~

~SF !2tLF)
JFO~ rENT~O~!CS, ~S! 13fV"
J. rH~R5 ~E~T FrR T~f5

LP.LI~'I

,'~ORO

"00':20' ~'1t?e!'-e LP,AKSc
P01?!2f' 1?!0?e?!~ BTCTI
"00'24 f'0t?e\Je BUFADt

,WOPD
,WORD

,ALANI(

.~ORC

'~UF

!'}!I~"e"'~

,TRAN

LINE

CCI'~TfR

c.:~.~

,RE~I~T~R

!?et"tl!?e
~(1()1~"1

('}AO'e"2

R~.~e

R'.• "l

R2a~2

~V!l?e'?3

R3zX3

~0r'e"4
1')1.,0'2 11 5

R4c)!A

RI5.)!5

t"0t'e?6 SP=%6
~;z,rJe""
~P't;l2~

e15

t'0~27

e1 4

Pr.=)!7
LP,FR~I
H~PFN

.~YTF.

Md) CL~SE
P.CtSI

LP.rp~'I'

4

CO~NT

CCCMPL'

PTR
DFF!N'TrC~!

C;V.LP
66

V0~3~

1:'04767

J51o<

P~ , t P'. S T5

ADD

Jl;Lp',FRM-,

"1~V

R1~~~FA!,)

JAOr,R CF rR.FF

MOV

R~,ATCT

JR2::1'!I'~

!~T

J~IM

1?0t13~4

!7

"rlJ~34

~6~'~t

,R1

177712

!8

e9

"-0~4t"!

~tt7167

LP.ST~

~y

'~l=PC

i7"'f:~
~00!44

()q"2~7

LP.STS

~Y

1777fo.2

8R
f0 '0~5'" 0'0(1414
f 1
,rRAN
E2
lP.TRt\1
e~ "-0"'52
e4 "-0(l1!52 r1047"7
JSR
0'0(7342
e~

lleCl'5~

68

~0e'62

"167?!0
177; US
~1~0t;'

L,P,Tt-..jT

!~T

p~,t.P.STS

JSI~

Mnv

'_F, Fi ~

,"OR AcnR

MI'W

6 rFHn , BUF AD

J~AVE

Mr'!V

\l1rR~,,~Tr.T

JI"lD~

A5L,

HTC'f

rrHA~t;F.

BIC

~1~~,.:NLP:C~R

,r,I~AeLr:

TST

".l..~.eSR

,FR~OR

H'41

LP,FQR

SUF AODP

010(70"6

e'1 V.0"7P

177734
"1~0~7

"'t::J:(D

Cf'lU~'

T

?'0!!0UZ

1777';?4
f@ eep7t;

!'0~3~7

TI"I RYlES

17772e
69
7~

,TNTERRUPT
L.P.I~TI

~e'02

, 1 f01e2 "4'737
~'H'

LP."I~I

1"e

1.77514

72 (7011'" "'0~731
177514
73 t!0114 1.~"'S33
74

75

H·O

ERR~R,sn

TE~T

c 0 ~I T T~ I,. E

7'

"012(.'1 "1P1 d 6

MIjV
toH'lV

P'012~

M(,)V

LP.L It\,.(!;P,

,9

'7767r,
T~r

~rCT

,rU~Rf~T

BFQ

LP.rlNF

,I'lOt\E p.!o tt'rRF)

8lFAD"R2

,rURREI\T

76 "011(0; (ill/7'24f5

78

~167d6

t'012F1 rrt,'!'.7f.7
17767e
80 '0132 !?e,1476
e t ,et34 0'1 6 1?12
1776r.4

Mnv

J ~ AT "J

LP.LOPI

82 V014t'
e~ v.e14C'

11~2"'1

(7014~

~~146d

e4

R2,.(~P'

R1, .. CSP'

M('IVR

(r:;~''',R1

BEQ

t~,!';N"

P'1'TE RFSTCLf
PlJF

AorR

LnOJ:l

''';E)(T CHAP
,SKTP IF "~lJ t L

LP.LPAI

S5 V0144
S6

,'''OTEI

e1

e8
J
89 ,e144 12"'1:?7

THF
r~

NF.~T

F("L~

!NTRI.'t':Tlr"NS

TRAItI"G SPAt-E

T~A1.Lr~r,

TA~~

WTLI

fQE OF='LfTFD,

~AY

.

t5 ~C:T f\EF"CFC "'SLI=PRF"SSEr, I-l'lWf'VER •••

Sl!PPRFS~TI;~'

~TTLl

~E

C~PR

R 1 , 1II4!(l

'~LANI('i

A":E

,+1"
LP,PKS

'.TU~T

~

0I~()04e

SI2l "0'50' !'21e1i'!3
Cit
'~"2t"

,0'5'

'77642
90"4"6

S2

veU5~

~3

'0161" 120'127

I'-!C
~o

LC.TRT

CMPA

R1,w\3

,VT?

5

J ,,!e

81.A~1<

C('\l~;T

.1\0

~tl\l!

0

CV,L~

Vl0r'e13

SA P016A

f:'014~3

~3~

;5 ~0'6f' 1211?7

Q

C~~p~

I...p.r\ip

R1,.2'

r~0?1l'2

~~172

7vi1e':"?

A~i F.

.... 6

.J

;7 ~0'7.:1

11'7~1
~ ~~., (7 1 2

t.1nVF<

C,tP.SK2"R1

.YE~,

~6

98

~0'eV'

1>,,'0
TRA~JSI

ATE

,PI)ROLT?

12"1?7
r:"0?t77

99

~e~e~

10Q' e2t2e;

i70t4~3
10~7~7

RFQ

LP.~~"

TSTR

··L~.C!;Q

rrHFCK

~EVT~E

RFA~Y

171~1d

101 e21:?
102
103

1vl"e~1

11"4 el214

121'1'7

C~PR

R~,.l'

105

Ii'~q

5"17

RFG

106 022' 1i'~41:
t"" e,24 12?1"

9t 0

L".PTA
LP "ev"

e22~

~PL

,neVlrE CAN
IPRnCFE~

01 0"17 ~

,CUrT 1F

LP,~TT
ArC~PT

~~nT~EP

TO CHECK

C~PF

JTA~?

JVE~.

G"

IT
TEPMYNATrR

sruUl~TE
,~OT A

EtT~ER

'(R,FF,VT,LF?

R',~d!i

, :,.

1~e

023('1

1i~1\?12

B~r

LP,~L~

,~o

1~9

e232 ""01.477

~~Q

L~.RSC

,TRFAT CR

1! e
1t1 e'34
1\2 e,3d

~ef71e

rc;T

.AT

~'-3fi

~?'422

I3FQ

JYE~

t15 0'-401
1 u; e242

r0~.3""2

f')FC

G;?

0I~~31i7

DFC

HiCT

113

~O'

C~AR

'GUARANTEE CR RFFrRF

~PEr!ALLV

TER~'NATnRS

LP.TR~I

OF

8FGT~~I~G

lr~f?

p,;n, FCRCF CR

114
1775~4

~24~

1t?7i11

118 ~~52
119 ~~52
122 0?54

~0~e16

~l.R

.. 5 P

?0~413

8R

LP.I;SR

117

121
122
123

0?5~
0~5F

'~E~ET

LP,Rsr:

r('lIINTS

, ~ F w t p.' E

LP.rLrl
~216'7

CMP

t:lIf~~t:?e

e4 4

FH~ E

LP,t""IJ:

~~~216
?0~3~7

T~C

-~p

nH( TP TF F l'I, L
J F L ~ E C('l U~! T L T p..; Fe ... ARS

DFC

LP,P!o(~

J~HFCK

1 24 0 ~ 6.:' t" 0 ,

125 e'64
126 026F,

~LA~M

1.775'6
127 0'7' 1~~4~4
128 0274 11,,3]

I~O

8~I

LP,t:737

LP,tNT: BIC

~0'" 1 ~l)

INTERRUPT

177514
~00116

~~£5731

CHECK FOR ERROR

177514

t'167'~1

YES

R~,-(SP)

J

,

~AVE

REGS,
GET CURRENT BYTE COUNT

1776~6

000t34 ~e1474
000136 :'116702

MOV

NO MORE
GfT CURRENT BUF LOC.

,

177662
0ti'0142 105737 I..P"L.OP: TSTB
il!0014~
~(J!0150

177514
102'055
121227

BPL

o#LP.CSR

C1Pg

LP,STI
(R2),#11

~EQ

LP,PTA

C"1PB

(~2),#15

CARRIAGE RETURN •••

.. "

~r~015

iOOe'1162

~01416

REQ

LO.RSC

000164

105712
'ftH 0.31
121.227

T3T8

'~2

~00166
0~017~

SEQ

C>tPB

LP,DNP
'~2,#13

BEQ

Vf~TtC.L

"'0~177
@00~0?

0.01531

000204 12t227

,Q2,#177

Ck~ P f3

BEQ

LP.DNP
OR2,#12

00021~

\~014013

SEQ

LP.RSC

C~P8

(tQ2,#14

B'~E

LP.CLO

~0?ft14

~00216
0~022t'

~~01001
:H~7~7

I. p

.QSC: MI"JV

•••

IF LINE TERMIN.TOq ,

~e1l~:12

00i'212 121227

TA8

"

, "." & RUB OUT

U' .I"NP

C'1P8

..

RE'SET COUNTS

IGNORE' \lULL

00iJ!e13

000174 (ll01534
00017(; 121227

PRINTER GOING

YES
TA8 1

~00011

000154 ;~kH 523
3010156 121227

IS

..

itq.,LP.TA~

"

~r.ar;l011

..

RESET COUNTS

177600
~r022~

C'l12767

r1fJV

# P RSI ZE+1 ,

L0 • t P,l

}1~l"121

177564
0~~)~34

i1~H~41~J

0010236

(~05767

00~242

!1!~1511

177556

LP.TBF

J •• ,

LP"t:I.Cl: TST

L".LIN

J

dEQ

LP.DNP

•, IGNORE CHAR IF FUI.L

B~

10

'"

OMIT NEXT
CHECK LINE Orl.O

OTHERWIS~

0~0:244

1122,37 LP,TBF:

1>10V8

(R2'+,'~LP.9UF'

000~5P

177516
005367

DEC

LP.lI"l

:

COU~T

DEC

LP,TAB

t

UPDhTF TAR COI)NT

;~0100lJ

B~.JE

LP.TRT

:~12757

MOV

1i7544
000'-5d

:~053e;7

pRI"n CHAR

CHARS. nESPATCHED

177546
000260
00121262

#8.,LP,TAP

RESET TAB COUNT

r'H1~~H ~,

177536
00027~

0e539Jl L.P.TRT: DEC

a00272

~01323

000274 105737

177514

tH~E

Rl
l.P.LO?

TSTR

'~l.P.CSR

000300

10~412

8 ~4 I

0HH67 LP.ST!:
177614

LP,DNE

2100302

MOV

Rl,8TC'T

000106

~1(?1267

1-10V

R2,BUFAD

J W1Rt:;:

, UPD4TE
,

COUNT

PRP-lTER Gt"lING

,, NO,
SF-T

SO ")0 INTERRUPT
UP FOR ~JEXT TIME

177512
000312

~52737

L.P,TWC: 8IS

#100,~#LP.CSR

; Ef\!ABLE INTERRUPT

~0~1Q1rc

177514
000320
0Q!0322
000324

eJ~kL~25
0e~33e
0~e332

~126r"2
~12601

MOV

(~P)t,R2

~,10V

(SP)t,Rl

~000et2

RTI

RESTOQ.E

REGS

T~RI"!Ur,H

INTERRUPT

RESrO~E

REG~

~126ca2

LP.DNF: MOV

;3126~1

~JV

($P)+,R2
CSP)+,Rt

1?!13767

~'1V

ft~LP,SAV,.+1~

JSR

R5,fJ#0

CLR

.#LP.CSR

Mt)V

I.P,R0

J!~p

,1A(R0)

, COMPLETION

LP.NA~1,,,,,(SP)

~

ON ERROR

MI)V

#4\~2,-(SP)

J

1-2 ERR

lOT
BR

LP,INT

J

SAVE alL PEGS

J

DISABLE INTERRUPT

000kl44
~0(i1002

000J4C

~~04537
1?!0~0(,\0

000344

~05037

177514
0e0350 01670~

LP,IGN:

177424
000354

~001712i

RETURN

~0t71014
~0k136[?

016746 l.P.ERR: May

SH(j~~

t7743k';
~00364

~1::>7d6
~0~4~2

Zl0037~

0e00eJ4

c~0372

i~00646

11

MSG

NA~E

: SUB q 0 IJ TI fIi E FOR I NT ERR IJ P T
~ee374

0Ch.1176

"'116~4
~166e-3

L.p.STS: MOV

~

I .~ II L AT I NH
J STM~LATE

(SP),R4

~1r')V

2CSP),R3

"'i!)V

'#S.STAT,2(~P'

MOV

R3,(SP)
RA,-(SP)

INTERRU~T

~f0~1?;2
30(140~

~13766

177776

FPO~

J~R

PC,xxxx

~~~"'e.912
00041~

f:'H'316
000412 0191446
ee.0414 013737

MOV
fir'lV

-#LP.STV,~#S.~TAT

~~1I'202

J RUN UNDER

LP STATUS

177776

RTS

0V'0422

t:iv}f?'2v15

~00424

(H:5767 L.p.PTB: TST
177376

R':;

LP.TAB

000430 ~l~H 413
BEQ
000432 1.12737 LP.PQ8: M!)V8

AT NEW TAB AL.REAOY?

LP,EVN
t; 4

()10~04~

e,'#LP.BU F

SPACE Fr')R T.488

177516

rST

LP.LIN

LINE OVERFL.OW

SEQ
DEC

LP.DNP
LP.LIN

INCLUDE IN L.IP>.JE COUNT

DEC

L",TAB

00ia45fi ""~1231

8"'JE
"12767 LP. EVt- ' : M'JV

LP.LOP

0vH146~

#R.,LP.TAP·

000440

0910444

'~0~767

1773!i4
~e1410

0V'0446 n0!i357

177346
0V'0452 (105367

177350·

YES, IGNORE REST

DONE ?
RESET

~0~~10

1773 4 10
00~lA6~

~052012

~H"047O

f~er,677

L".ONP: I'IC
8~

177514 I,.P,CSR:a177514
177016 L.p.9U F =177516
"'e~3?2

LP.RP·322

LP.SAVa:44
177776 3.STAT-177776

:i'e~044

0I002~2
'~00~30

L~,STV=2\i.12

LP,CI.SaLP.OPN

~etil0"'1

STeT
0!?1~j'l22R
LP.BI' I: 0~0322
l.P. ClS • e,'-'v)1(I3Ii'R

,END

0{'''12'~24R

BUFAD

lP.8UF

LP

0~~~0~RG

LP.D~JP

e0~466R

LP.FQM

000!i116R

177516
l.p.CSR • 177514
LP.ERR
~1~360R
LP.IGN
0~P,35Q!R

LP.L.IN
LP.NAM
LP.RSC

e\2l0 1i'2elR

LP • LOP

0 (~e 1 42 R

Iwp. MTS

0~0432R

e~~014~

L P • 0 PN

0 (1 0 ~ 3 QJ R

00e220K

LP. SAV

00e374R

LP. STY ;:
LP.TFR

LP.PTB
lP.ST!
LP.TAB
LP.TRT

0~et424R
0~03Q12R
0~0~26R
0~027rdR
~H"0120

LP.STS
LP.T9F
LP.TwC
P0

RJ

SP

,,~e244R

1(}0k?312~
.~I'H~e~00
=%e~e~03
.~00~r;H~6

II

:II

01~0~~4

0"H~'!~02
0~0~S6R

lP.eLO

QJ?J0236R

LP. D~'E

0 01 0126R

I..,P. EVN

0~0460R
0~011~R

LP.INT

PC

=%000l'!101

Rl

=X0 r'0!'101

~2

a:%01f1P'04
S.ST4T a 177776

=X0C'J0:a02

Q5

.%a0l0~05

~4

12

PRSIZE

I:

•

~"0472R

DEC-ll-ODCRA-A-D

PDP - 1 1

C R1 1 / C MIl

CAR D

REA D E R DRIVER

October 1972
SUPPLEMENT TO:
PDP-II DEVICE DRIVER PACKAGE
DEC-ll-ODDPA-A-D

MONITOR VERSION

COPYRIGHT

c

V~~8

1971, 1972 BY DIGITAL EQUIPMENT CORPORATION

NOTE
This document is for information purposes only
and is subject to change without notice. DEC
assumes no responsibility for the use or reliability of its software on equipment which is
not supplied by DEC.

NEW AND CHANGED INFORMATION
This manual documents the software as of Monitor version V~8. It has
been revised to include all new and changed material since Monitor
version V~4. Such material is indicated by vertical bars in the outside margin. Whole new pages are not so marked but are dated in the
lower outside corner.

~

SOFTWARE
DISTRIBUTION
C~NTER

CONTENTS
Section

1.0

BASIC DRIVER (ASCII ONLY) - CRII

1

1.1

Driver Table

1

1.2

Service Routines

2

1.2.1

OPEN

2

1.2.2

TRANSFER

2

1.2.3

Interrupt Service

2

1.2.4

Error Handling

4

1.3

Alternative Drivers for ASCII Only Usage

4

1.3.1

DEFAULT

4

1.3.2

ONLY26/0NLY29

4

1.3.3

BLANKS

5

READING OF BINARY CARDS

5

2.0

2.1

BINARY FORMAT

6

2 .. 2

CODING CHANGES FOR BINARY OPERATIONS

7
7

2.2.1

Driver Table

2.2.2

OPEN

7

2.3

TRANSFER

8

2.4

INTERRUPT SERVICING

2.5

ERROR HANDLING

8
9

3.0

CMll MARK SENSE READER DRIVER

9

4.0

DETAILED IMPLEMENTATION

9

APPENDIX
A

PDP-II Card Codes

A-I

B

NOTES ON ALGORITHMS USED IN CRl1/CMll CARD READER
DRIVER

B-1

B.l
B.2
B.3

B-1
B-1
B-2

C
D

Hollerith to ASCII Conversion
Binary Packing
Switching

UNPACKING BINARY DATA FROM THE CRll/CMll CARD
READER DRIVER -- A SUGGESTED ALGORITHM

C-l

PREPARATION AND USAGE OF CRll/CMll CARD READER
DRIVER

D-l

D.l
D.l.l
D.l.2
0.1.3
D.2

D-l
D-l
D-2
D-2
0-2

Preparation
Assembly
Linking
Inclusion in DOS Monitor Library
Usage

CRll/CMll CARD READER DRIVER
The card-reader driver performs device-dependent I/O functions for the
PDP-II CRll Card Reader Control within the Disk Operating System (DOS).
At each Monitor request on behalf of a running program, the driver, in
its basic version, reads a single card, which may be punched in either
026 or 029 Hollerith notation as indicated by specially coded cards in
the input deck.

The resultant data is stored in a specified area as a

line of up to 80 ASCII characters terminated by a carriage-return/linefeed.
By conditional assembly of its source, however, the driver may be
produced in various versions to include the following additional features:
•

Restriction of input conversions to one type of
punch.

•

Automatic deletion of card-columns 73-80 and of
trailing spaces from preceding columns.

•

Reading of cards punched in a binary format with
data passed to the user, packed 4 columns to 3 words.

•

Provision of similar facilities for the 40-column
Mark Sense Reader under CMll control.

All cards are read under the PDP-ll interrupt system.

The driver,

therefore, contains the routines needed, firstly, to initiate a card
transfer and, secondly, to service the interrupt as each column is read
and supply the required conversion of its content until the end of the
card is seen.

An OPEN function is also included to enable a using pro-

gram to ensure that the reader is on-line before issuing its first
read.

CLOSE and Special Functions processing is unnecessary and is

not provided.
1.0

BASIC DRIVER (ASCII ONLY) - CRll

The driver is in two parts: the Driver Table and the Service Routines.

1.1

Driver Table

The table occupies the first seven words of the driver in the standard
format for I/O drivers under DOS.

It includes the following particu-

lar information:
•

Capabilities:

Single user
Input in ASCII only
Non-file structured

1

•

Standard buffer size

•

Interrupt servicing at priority level 6

•

Device Name:

1.2
1.2.1

96 bytes

CR

SERVICE ROUTINES
OPEN

The OPEN routine first checks the Control Status of the reader.
for any reason this is off-line, printing of an
(device not ready) is requested.

A~~2

If

error message

If a return is made, the check and

message are repeatedmtil an on-line state is detected.

The routine

then prepares the driver to accept 029 punching by default and returns
control to the calling Monitor routine.
1.2.2

TRANSFER

using the starting address set into its first word by the calling
routine, the driver's TRANSFER processor accesses the DDB for the
dataset requiring the card input to extract and store internally
pointers to the start and end of the buffer area for the data.

The

first word of the buffer is then cleared as an indicator that the first
column is yet to be read.

The routine returns to the Monitor with

the Reader Control set to INT ENB and GO.
1.2.3

Interrupt Service

At each interrupt, a check is first made for error or card-done conditions.

If neither is seen, the column data just accessed is used

to compute an index into a table of associated parity-ASCII characters (see Appendix A), the relevant character is extracted and stored
as a byte in the buffer provided.

The next buffer byte is set to a

positive non-zero value to show that a valid read is under way.

An

in terrupt return is then tcken.
For card column 1, however, checks are also made for a card with
any of the

I •
I •

following~ecial

12-2-4-8 1

12-0-2-4-6-8 1

codings in that colum:

This indicates that the cards which
follow are to be read as 026 punch
codes, and on recognition of this an
internally stored offset is modified
to use the appropriate section of the
table of ASCII values.
This indicates that the following cards
contain 029 and cause similar offset
modification.

, 1These codes are 12-11-8-9 and 12-0-7-9 in Version
release.
2

~~5A Monitor V~~4

12-11-0-1-6-7-8-9 1 This indicates the end of the card
file, and a card so coded must be
present (UHopper Emptylf is merely
deemed a "Device not readylf state
to allow usage of very large decks) .
When this card is seen, the next
buffer byte is set negative to show
EOF. Since no data will now be forthcoming, the appropriate word is set in
the dataset DDB to show this.

I

When any of the three cases is seen, the Reader Control Status
is reset to EJECT before the interrupt ex.it is taken, thereby causing
the remainder of the card to be ignored.
The rest of a card is similarly ejected if, during the processing of any column, the buffer is filled.

In normal READ operations

for which the Monitor provides a standard-sized buffer of 96 bytes,
this cannot occur. This is not necessarily the case if the user program has requested TRAN.

If this program also supplies short buffers,

this can mean the possible loss of card data, intentionally or otherwise.

When a card-done condition is detected, the Reader interrupt is
disabled. The underway state, shown as noted earlier in the next
buffer byte, is then checked. If no data has yet been processed because the card just read merely contained a control code, a new card
transfer is requested by recalling the TRANSFER routine. Otherwise,
the unused portion of the buffer provided is cleared and the parityASCII values for RETURN and LINE FEED are inserted to follow the last
data read (in the short buffer, these will overwrite the last two
columns processed).

As required by the general driver specification,

the service routine then saves all user registers on the processor
stack and takes the supplied completion return with Register 0 set to
the address of the DDB just serviced.
It should be noted that this process allows the reading of only
one card at each

request, regardless of the size of the buffer pro-

vided. Because a card-read (once it has begun) must continue to completion, any attempt to fill the unused buffer space must necessitate
the internal storage ...... += any overflow, if possible loss of data ..LO::> I..V
..:_

..L.._

V..L.

be avoided.

In keeping the size of the driver to a reasonable limit,

the provision of such internal storage is not considered desirable.
For the READ form of I/O, the buffer supplied by the Monitor must be
lThis code is 12-11-0-1 in Version ~~5A Monitor V~~4 release.
3

I

excessive, as space is allocated in l6-word units; the null padding,
however, is not passed on to the user program.

On the other hand, it

can be seen that no advantage is gained by a program defining a buffer
larger than 82 bytes when using the
1.2.4

device-dependen~

TRAN.

Error Handling

The detection of any error condition is taken to mean a "Device not
ready" state, leading to the printing of an
reader interrupt disabled.

A~~2

message with the

If the operator requests resumption by

a CONTINUE command at the keyboard, the error processor will recall
the TRANSFER routine to repeat the read and exit to await a fresh
interrupt.

This allows the operator to rectify the error, if possible:

the card causing the error should be replaced as the first to be read
after the resumption.
'NOTE
A "Hopper Empty" condition is detected before
the last card has been processed. It is, therefore, essential that the EOF card for a deck be
followed by at least one more card (can be blank) .
Should this be omitted, normal completion can be
effected by re-insertion of the EOF card followed
by a blank card.
1.3

ALTEmATIVE DRIVERS FOR ASCII ONLY USAGE

As has been shown in the previous section, the standard driver accepts
cards punched in either 026 or 029 codes when so directed by control
cards, or the driver assumes 029 by default.

Unless the user program

then requests input by TRAN with short buffer sizes, 80-character
lines are the norm.

To provide other versions of the driver more

suited to the needs of a particular installation, the following conditional assembly parameters have been included in the source language.
If these are defined when the source is processed (DEFALT

=

~

is suffi-

cient definition), the driver will operate as indicated.
1.3.1

DEFALT

This forces the driver to assume 026 card codes as the default.

Con-

trol cards as defined, however, will still override this assumption.
The effect on the driver length is negligible - one word.
1.3.2

ONLY26/0NLY29

If the user has only one type of punch, he can restrict the driver
accordingly by the definition of the relevant one of these parameters.

4

In this case, control cards will have no effect and will be ignored if
present.

Because the driver then needs only half of its conversion

tables and certain checks can be eliminated, the driver size is reduced
by some 45 words.
1.3.3

BLANKS

By common practice! card columns 73-80 are often used only for control
information, e.g., sequence numbering, which need not be processed by
the using program (initial value of Blank suppress is off).

Moreover,

quite a number of columns before these may contain nothing but blanks
(translated into spaces in ASCII).

Although cards of this type will

be accepted by systems programs such as Assembler or Editor without error, the burden on lines always 80 characters long can be excessive,
especially if, as one example, the only means for listing the assembly
of a card source is a teleprinter.
The parameter BLANKS has been included to enable the user optionally to remove this burden, provided that he is also prepared to accept
an increase of some 18 words in driver size (initial value of Blank suppress is off).

The driver in this case will still continue to transfer

80 characters as its normal operation.

If, however, the card deck is

preceded by a control card punched 12-11-0-7-8-9 in column 1, or at any
point contains a card so punched, columns 73-80 in all subsequent cards
will be ignored and the CR/LF terminating the line each card represents
will be set immediately after the last non-blank data column.

The auto-

matic deletion will remain until the user program requests an OPEN for a
fresh deck.
NOTE
DEFALT, ONLY26, and ONLY29 are of course mutually
exclusive. BLANKS, on the other hand, may be defined alone or with anyone of the other three.

2.0

READING OF BINARY CARDS

Some users may wish to have the additional facility of reading cards
directly as 12 bits per column rather than as ASCII characters, perhaps
for one of the following situations:
•

Linking or loading of card programs produced by
cross-assemblers or linkers developed on other
computers.

•

Processing of binary data output by other computers.

5

•

Reading of cards using character codes other
than those associated with 026 or 029 punches 1 •

A further conditional assembly parameter, BINARY, has been included in
the driver source to meet this requirement.
2.1

BINARY FORMAT

The driver, assembled with this parameter defined, still continues to
function exactly as described earlier whenever the using program requests ASCII input.

If, however, a binary transfer is called, the pro-

cessing Monitor routine will inform the driver of this by setting to 1 bit
of the status word of the DDB for the dataset concerned (DDB+12).

On

recognition of this, the driver accepts each column as 12 data bits and
passes it to the program in a packed form, four columns taking three
words, in accordance with the following pattern:

Row
9

Row
12
c.c. 4

11 ------------word 3--------------3

12

----- word 2 -----

8

c.c. 3

7 ----word 2-------0

c.c. 2

3 word 1

c.c. 1

15

0

0

15

word

15 ------------word 1---------------

4

This format, which is compatible with that used by IBM 1130 and
1800 Series, has been chosen because it alone provides for all the
facilities listed above and, moreover, is compatible with the deviceindependent philosophy of DOS.

It may nevertheless mean that the user

who needs to process each column on a word basis must include in his
program the routine to unpack again the data from the driver (a possible algorithm is offered in Appendix C).
The main effect of the inclusion of the binary capability in the
driver is a substantial increase in its size, hence the reason for this
not being made a feature of the standard version.

Apart from the cod-

ing changes need to cater for the different processing (which are outlined in subsequent paragraphs)

I

the assumption made in the case of

ASCII data, that null padding in oversize buffers can be safely overlooked, no longer applies.

Each buffer word must always be considered

IAn alternative in this case might be to change the driver's comversion tables to satisfy the different codes, provided that these use
the same pattern - null, 0, 11 or 12 in association with one punch in
range 1-7, perhaps with a punch in 8 or 9.
6

~

as valid data.

In order that the driver may cope with this situation

(the Monitor can only supply a buffer made up of l6-word units)

I

it

must now contain its own internal buffer to hold any residue from a
card used to fill the remaining Monitor area.

Allowing that such resi-

due can be stored already packed in its final form, the internal buffer must be at least 60 words long.

Together with the additional cod-

ing, the driver increases from its 200 words, in the basic ASCII-only

form, to 380.

Against this! however! the presence of the internal

buf~

fer also means that the driver can supply valid binary data into user
buffers of any length for a program issuing TRAN requests.
It should be noted, too, that the format used does not in itself
provide any checking upon the read accuracy of each card.
umns are assumed to contain actual data.

All 80 col-

Programs READing in unformat-

ted binary modes or using TRAN must make their own checks if these are
important, in just the same way as with other drivers.

On the other

hand, the Monitor processing formatted binary READs will expect the
data to conform to its normal standards for each request.
Byte ~:
=1
Byte 1:
=~
Bytes 2-3: Number of bytes to be read including bytes
~-3 but not the final checksum.
Bytes 4-N: DATA BYTES
Byte N+l: Checksum of Bytes ~-N
If program developedm produce binary cards in such format also punch
one card for each READ: the data checksQm can serve as card checksum as
well (in this case, nulls following the checkstml will be ignored).
2.2

CODING CHANGES FOR BINARY OPERATIONS
The changes in the driver's operations brought about by the defi-

nition of BINARY are as follows:
2.2.1

DRIVER Table

Capabilities as indicated in Section 1.1 are extended to include binary input.
2.2.2

OPEN

The OPEN processor still first checks the on-line state of the reader
and takes appropriate action as described earlier if it is not ready.
It now, however, anticipates the fact that after its exit, the driver
will be recalled immediately to fill the Monitor buffer against the
program's first READ.

At this time the Monitor will be unable to di7

rect the driver on the mode of reading.

The OPEN routine therefore

sets a switch to cause a return to be made without a card transfer,
when this recall occurs.

It also means that the Monitor will give the

user program 96 bytes of null (equivalent to leader on a paper tape)
for its first unformatted binary operations.

(Incidentally, the switch

is set to perform a proper read when the driver is loaded into memory;
if, therefore, the program does not request an OPEN but starts by a
READ, the correct result will occur.)
2.3

TRANSFER

As with all drivers, the card reader driver must contain only positionindependent code.
absolute pointers.

To control its internal buffer, however, it needs
The first actual read causes execution of some

once-only code to establish these.

Again, a switch effects this.

A

further switch is then set according to the mode in which tre data is
to be handled.

As mentioned earlier, if this is ASCII, the code for

the standard version of the driver is followed, both during the TRANSFER and INTERRUPT service functions.
For binary transfers, any data remaining from a previous read is
passed to the Monitor buffer immediately.

If this is sufficient to

satisfy the Monitor's requirements, an immediately completion
is taken.

return

(Since this would normally follow an interrupt and the Moni-

tor will expect this, the driver must in this case simulate the appropriate conditions, i.e., leave an interrupt exit on the stack, supposedly preceded by saved registers.)

A new card read is initiated in the

same way as ASCII if more data is needed.

In addition, the second byte

in the Monitor buffer not yet filled is cleared as a switch for use by
the packing algorithm which handles odd and even card columns differently (see Appendix B).
2.4

INTERRUPT SERVICING

The packing ofbmary data is accomplished as each column is read.
the beginning of each card a check is again made for EOF.

At

Unlike the

ASCII case, the coding of a single column cannot provide a unique identi'fication.

The same pattern (12-11-0-1-6-7-8-9 1 ) is therefore looked for

in each of the first eight columns before the end-of-data is signalled
and the remainder of the card ejected.

(The same card can still be used

for either data form; the ASCII processor merely uses the first column
punched.)

No other control cards are expected in binary mode.

11ThiS was code 12-11-0-1 in Version

8

~~5A

Monitor

V~~4A

release.

After the entire card has been read as indicated by a card-done
condition, the TRANSFER routine is recalled to continue its process
of transferring the

data into the Monitor buffer.

Since an interrupt

has no occurred, the return to the Monitor on completion is by normal
means.
2.5

ERROR HA..T\IDLING

Any error condition is again considered a "device not ready" and is
handled accordingly.

Because a repeat of the TRANSFER routine as a

way of resuming read operations on return would perhaps lose data already passed to the Monitor from a previous card, a failure in binary
mode leads only to that part of the TRANSFER operations which causes
a new card read.
3.0

CMII MARK SENSE READER DRIVER

The CMII Control is expected to use only 40-colurnn cards.

(The normal

CRII driver with or without definition of the special assembly parameters will function without change if SO-column cards are used.)

To

provide the following particular benefits in view of the smaller amount
of data available at each card read, one more parameter for conditional
assembly has been included - MARKS:

=

•

Standard Buffer size

•

Internal buffer for binary operation is reduced
from 60 to 30 words.

•

64 bytes rather than 96.

If BLANKS has been defined, automatic deletion
trailing spaces will follow recognition of the
relevant control card but not of the last S columns.

o~

4.0

DETAILED IMPLEMENTATION

Comments on the listing which follow illustrate the general form of
the driver.

Further explanation of some of the more obscure tech-

niques used is given in Appendix B.

Other appendices summarize the

ASCII/Hollerith equivalences, the procedures for obtaining the various
.,ersions of the driver, and the comparative sizes of each.

9

JrOPV~I~HT

,VERSION

1971.1;7', DYGTTAL

NU~PERt

J

,rARD
J

Al

RFAnE~

C~PR.,

~Av~ARe,

~AS~.

(CR'

~RrVFR

F"R ASCT!
O~E CARn

1
J
J

E~urpME~T

V~0RA

!~PLT~ AT EACH TRAN~FFR RfQUEST
SF ~EAO~ Up Tn ee C~ARArTFRS,

~IlL

FOLLCwEn FlY C~"'LF, WILL At PA~SFD T~ THF
CALLr~G RCUTINE A~ ~PFerFTEn p~ T~e WCRe
COU~T GrVF~~ (IF TMT5 IS > ~t, PEMATN'N~

,
P
I

BVTES INJLt

;

A ~J

AIL

,,
,
,,,
,,,

F.RRN~~
t

=r: eLf.ARFO~
r INCLlJ"'!NG IfJOPPFR Et-'PTV'

CP E ~i! CAL L l WTLI.

FH~

uprt\

TREA TF ~ A~ '0 F VI CF

N"T RFAnv'. LSER eA~ ~ESUMf OPF~AT!rN BY
OF FRROR OR RFFJLI. rtF Hr.'PPER
A~n E~TRY CF 'en' en~MANn AT KEVB~ARn~
Ti0oi E Eto; " r. F ~ F I LE \Ii TLL Af DF Tf ~ M I ~' EI" BY
PFr.('lr;~rTrrt\ (1F A TE~MTNA,- Cr'NTReL CAR",12 .. , 1 Cd 1 ~ e .:. 7.. R... 9 PUN r ~ F D ! ~r C, e " 1

RFCTrFrcATt('\~

;

J

'II

'II

XXXXXVX~X~X~X~X~VVXvvv~x~

x

x

X

N~Tf.S

X

X

X

x~xvXXXXXvX~XXXXXXXXXX~vX

1,

11oo1I5 ORTVFR CAN 8'"

,,,
,,
,

~rT~

E'"

'~2~'

FC~

I!Sf

nNLV 'e2e'

.6.)

"e~1.

v2e=0"

•

~EAO

"~NlV29.~"

~

~nEFALT=0"

•

REA" CNLV

rn
IN

,

CCNNFCTlr~

B'

r'

J

,,
,
,,
,,,
,

AS~E~RI

FITMfR

OD '0'9'
PI!NrrFS r~ POTh! A~ TN!">!CATF'r'l p~ PARAMF:TF:M
SPErIFIeATrrN AT ~TAR' ~F srupc~ TNPUT
~~ FOLLe'.. ~:·
I~

..

~TL

eA~E~

eC)

~

'lI!,g'

~MT~

, ~ 2 ~, AS'" EF AI,: L T

REAO

P~TH

~!TIof

'f'l2~'

ORIVF~

T~PFS

A~

~rlL

~F

•

creE

~EAO

IAiITh!

tn"

T~PE~

eonE~

rO"ES

rF ceCF

I"lFFAULT
U~f

DFFALLT

IINLF:SS ,",IRErn~'O OTh!F'~\Nr~F av Fto.TRV rF A
CnNTRCL C~Rr PU~C~E~ TN
1,"

r:c:

I

J

12~~-2-d.~ .. ~
12.'--4~A

2'

•
•

'0~9'
'0~6'

ro~F.~
rO~ES

FOlLr~
FOtLe~

IF PARAMETEP "BlANK~Q IS OEFI~F", C~C~ 13.SP
TQAtLr~r ~PACF~ e~FnRE THE5F WILL Be "'ISCARn~r,
WITH 'eR~LF' FOlL~wrN~ LA~T VALID ~ATA, PROvrOEO
THAT CAPD FILF IS PRErED~n ~y CTl CAR~ ~rT~
t~Rtl.e.7.e.q PUNrH!O IN r.e~ 1: r~ T~I~ CASE
H~~F.VFR, rF T~E U~E~ FUFFFR IS .!AL
RL'FFER !N A PACI(E~ FORM, r.F. ~ CI"ILS • 3 ~CRDS AS

::
~

f

'I

FrlLCws,-

E

,,,,

r: " e "1

;

> \'I"R~
> Wf"\R"
c. r: '. ~ > ~i !""RrI 2,
r:'.. C.4 > Wt'lRrI 3,

r • C'12

U~

11
~ 2
13
1-4
15
18
17

~TT~

,=",,4

3",QI, \\("lRO
BrT~ 15 .. 8
'--~J waR,., :3, 8fTS 1~';'12
SfTS 1 ,.... ~
P!T~
PTT~

"

PACJtF:r FORM WTL! R.E TRA~!SF~PRF" Tr' T~F 11SF'R
LH~"II
nns !~ FILLF!",AI\" rATA THE~; RE~ArN!~e;
pi T HF TrH F. P ~ At. RII F FE P RF HJ r. RET ATN F" Ut- ,. r L T ~ E
NFXT REAl! Rt~lJEST'.
'!'1oIF:

dUFFE~

H~

19

T~EAT~E~T

C~

AsrI'

2~

r'~Sr.j;Tf3FD

I~"

THF PRF"IOUs

~EAD!~~

~rlL

STILL FrLLOW PATTFRN

PARAr;RAP~

WTTf.,Cl'T

f)(CFPTICI~.

:2 1
rAR!) WHn"H WILL !-lAvE A~V EFFFCT
w,. L L Rf T I-i A,. ! ~ r'I H: AT I ~ G E'. 0 '.
rt N
T~IS rA~E 12~~1-~~t~e-7.~.9 PL~r~TNG ~U~T APPfAR IN
L~AS" e'.r.. • THQU 8'.
THE

22

24
2~

26

rC''\T~OL

F:

.T

A ~ SF M ~ L F D F r. R , I ~ Ar: E !~: ROT ~ ~ CI CF S : AN' t' PF N f
r TeA lJ ~ E Rf AIj ! ~, G 0 FAr. A~ D Tr. ALL CW T H r s
Tn 8E T~A"SLATEr') AS RPQUIRf.I" P't T!-IE RFAC ~CI')E'
St:) ErTF' r r ') ~" T "" F. 1.1 5 J:' R •

~,! II H It
r ALl

27
28
29
~0
~1
~2

L~JLV

pt ~ p. A kI V R~ t\ r t~! r;

23

C)

l, .. F 'i

\I.

n~IVEIi:

II I,

CA",

~

AL.~Q

RF LSE!) Ft;R 8e.r.OLU~N

MU~K

.CCLlM~ REAnFR, FeCNr~!ES
P! R L F F F. R ST L F: CU.I REO P. TAt~; f r. P Y DF. F ! N ! T rON
AT ASSEwL~'t OF PA~A~ETER "MARK~". T~I~ ~rlL
AlS~ PRFV~~T AUTnMATtr Rf~~VAl
crL~ 33.40
RFA~EQ.

r=rR

33

S~NSf

4~

34
35
36
37

IN 'BLA~K~.SUPPRE~sj MODE' OF LSAGF~

rF

11

C\I.CR

,,,

2
:!

XYX~X~X~XVX~XVXVVVXVXV)VX

X
X
X

.4

5
6

.,

xvxvxvxvxvXVXXXXXXXVXX~XX

e

p.

PAR A,., F TFRO F' F TNIT T0 ~; S C ~ ~! 8 F ~.A n. f fJ L R j Nr;
SS
r) F 110/ F AS ~ E ~ B t V 0 ~I LV r F RFOr AS DF 5 r: R T8 F C I N
PAL. "11 R M4 t\ I. A L, 5 F' CT J Cl N 9 to 2, F. G ,

g

t2

1t
12

~r~.LPI,/~A!2

J

XXXVXXXXXXXXXXXXXYXVXX)X

f'!;:~t"p"e

:2 A

r\-H"e!'t R,.%l
rJI.~ r e"2 R~.~2
~(lJt.'2!i13

R3.X3

~12l

"1!'!1e I7l 4

~1

I7L1!~et"s

R~=~4
R~=!(5

~2

rJ!~~OIVP6
C"¥J~7.C'7

SP-Xt:i

35 V0"'CH"
:!6

f'lk'''I?('I~

CR.

V0~e2

224

V0C'1e3

01'l!~

:34

.TtTLF I'lV,CQ
.r;L"EH rR

RC'.~0

:29

33

~r

J

:2e

2'

Pr..~7

JTNTE~F!CF

TAPLF:

,\AjaR" e
"TFNDF
.RVTE

38

~E'NnC

39

.fF"F

40

.,RVTE

.FNnc

41
42

.TFNOF

43 V0fi'!e.4

.~VTF.

44

"f'lnC

~~

.TFnF

46
41

.BVTE

et

e2

RT!\ARY
2,4,0
ATt\ARY
2341'~

'~T~

~~FFFR

.F"Nnc

48 'I2lC'le~
C10"'0t;

49
e0

pv: ..

Fr}LLC~ED

14

31

X
X
X

NnTE

V.~HHl7
~!2J"'1'"
V0~11
V0~1'

l~ti

.AVTF.

ITNT!PL~T

SJZF • 96 8VTF!

SVCF AT PRL e

3C"~

RVT t:

Cw."'P~~r.R

0?2

II

e44

.~YTf

C~

~~e

.QYTE'

~,e,~

.. TFR",eR

"(:'!e

V01"13

eOlp,

Ve~l~

/'lI1'e'~

12

,t'lFFSFl Tn OPFN
Tr. TRANSFFR
,r~r CL~SF rR S~Er.. FlNC.'
J~FFSFT

(:\VlC'4"?
1 771 ~e.

4

0"0~3""

f
'1 e(i' eC' :3 ,
8
g
llZJ

1t
12
13
14
15
16

r;A1

R!'..IE

~72

c~.r;N~

('i~LY2;;&r;N!_ Y'9

r?\ (1 ;; f' , 7

,tF NrT TFLl

D~FAt..T

.TFI)F

OFFA!,.T

J~.~

~,.,v

NtiZ6,

J~F~S'T

..

I '•• ~

rpc,+

T~

~E.OV

,FOP rLAL.PlNCH e~IVEP :.:
.:.~ SET rn~v~ TA~LF ~FFSF'

.TFNDF
CtR
.F"NnC

Cc C,

LS~R

FCR I"E'FAUlT PL~!et-'
A~ AppROPRIATE
T~

~2~

CONvERSI~N

TABLf

.ff\JDC
P~~3~

r.0~~~e

C~.TOS'

,WORO
,F=" !~"'C

.YF=DF

BLAf\K~

CL~R

CC.7Sl4!

JTF BLANK~S~PPRFSS VERS!O~

,~.: FC~C~ SUPPRESS OFF

.F'~DC

• TF~! e F

l'
18

~0t"3f,

(J'l.J:.726

T~T

19

"~t1:4t'

r:-:~171~7

PHl

~!f\A~V

CS P

,+

J TG~! 0 R E

I~.:

r:f;.IjJ(T

H TFR! M R E' Tl' R!\
R TA~f crMFLFTTO~

.F\I~C

CR. r XT:

.TFDF

RTf\ARV

JfO~

r.I.R8

CQ.'I'FR

J •••

BP

C~,"'fj~

T~!

C~

~I~APV VF"R~I~~
FCRr~ ~o OPf~

.,...., . I?EFCPE

CQ."FQ

."

C~.rD"J

13

,

;

J

. I

p~

~AKTNr,

rC~E

EXIT

, ••
REAO
HERE'

• I •

,SURsrOTAPV
A)

RnUTI~E~~

RE~TART

AFTEQ FRROP,

.!FDF

RT~AQv

f

T~TR

C~t!Sl~

7

~fQ

Ct<,TfR

8~

r.~.FR~

CR,AG~!

e
9
tC'J

1t
12
13

, R) rNrT~ALI~E t~T~RNAl
CP..tSPt !lOV
p(", .. C~P'

AnD
tHW

CRITBS:

14

15
\8

.\l

~'1I"W

~~p,

..

11 170rtH' 1;;1e1~
12 "eCi'6~ 16'[:011 r;

SIIH

~k~,4.~p

~l;R

(~e,+,·sp

13

C'ep64 "1'f'7
14 I?filP6F (ii;H'C''''f:?

~1'" \I

.WoRe

~1

15
11;
17

.ys::nF

~H

t-11"lVR

"w~,~i'JI

;.nr.~

,.~7,.,~0

1~

j·l~VA

QV',rt<.rst.

19

HF'Q

r.~~~Dr.

~0
~1.

~·,rv

(fP~+,R~

"H'IV

CC:;:.!AP,R\

22

f:1 R

Q:.2

'~ET

C~,q.)

R1 '''~~IRE
CR. 'l[~ P

,Tt.JTE~~aL

~3

C~.PI~:

r~p,

C~F~+,

CJ:>C''''

J '"
1

8~!

~5

Mf'iV

C~ • ! HS , C~ '. i ~ j:i

~6

Mr"'IV

Rt?, ..

27
28 r;ep7P "11f,7

.FNr'l('
,if"1V

29

~e~72

~e

!70!i'7<1

31 f;r;:P7"

P0~e?V
"7~v3f.

(~D~

II

t.

P~FF~R

STO~E

PCI~TER

R AUTL~ eUFF E~O

:~AVE

.YN

ftRV

e4

E.

J:~~

,~

~F.SIILT

eT~ARV

•

f

.•••

•••

:

VERS!C~

r",FCI< MOf'E

CLEAR

,TF

A~C't

,fF

B!~AR~ ~A~TEe

,~.: SET PTRS

S~rTe~

,~~

& s~rTe~

T~Tf.QRUPT

JfF Sr

~

~LAG

RLFF ft-lPTV7

RE~Ei

jN1F.~~AL

J~AVE l~EQ ~UFF

FrR

PTR ~:.

CR.Uepa ,l"ORC

("~7~7
f'J. rJ..f1 t p 1

(:1 4

!&r~p)+

Mr:V

.;4

121 ,~"r.R'.C~R

"~RO LNCFPWAV FLAG
JFNABlE r~T & Gr FOR CO Rf.O

1771"e.

Pi
CR. 8 L P:

,TFI"IF
S I,; AA
r-1 I) V

8"~6RV

~~~p

o t? ,

'~t'H ~T~ARV ~ATA

I.:

-R1

.:~: CC~PLfTE cr~~ER!!ON

(P1,+,(R~'+
f"' ~ " tJ A f

,'•••• 8 GIVE" Tr" I SER
".'Sf1R Pflf~F.R fW L?

H~;E

rQ~prt\[

,TF

~,..;V

P1 ,CR'. IRP

'~T~E~~'SS::

T~T

P:?

.rn~f

t1rV

.. ~p,-r5~)

: F L ~ E ~ It ST ~;r ~ UL ATE. ~ •

~I!r

·(R::?),2rsP)

R"'F
V
8 1 !R

~TF

U1f.,SP
U~P)

...

r:~.rXT

15

N~T

GFT NFXT

~FRF

sr MrrE

~AVE

nN

~ORO

I~'

PTR

r~TFRRUPT!

S~.

8FT

;~.~ ST~RF I'C & p~
.~~~ & rUMMV SAvE REGS,
,rGt..ior:~qn~~

H~iE

~4

~?"'1"'7
(lI v; r; 31 V'

.J ~--I P

~e;:;e!.1

,FO~ RLA~K 8UPP~ESS ,~.
,~~: LC~K FCR SlPPRFS~ eN

HI. .At\KS
P1

.-+0
C P ,:?215

25
26

27

~nw

28

IT TS p . !

~F

THAT

K~r~

PPM~V

50'"

~o

B!T~

:H~

U~Cl

~1
32
33
34
35
36
37

~f

ASCJI

~OR~AL

C~ARAeTPR

BUT

CONVERT AS FrJI LClW5:

Gl'" TO
7",,5

1

3

\)I

4

8-~

?~

nNE

~rN' FIT,
~A~UAL FOR

~OTF T~AT T~TS
~FF PF~TP~~RAtS
THI~

T~!

AlGnRrT~~~

rrRPECT

ALr,ORITH~

~CPK5

FOR

~.'('!N.MUL T!.pl.~rHFD CA~es·.

rTF, AL !

3A
39
42\ l1e'l~
41 Q0'1'

HAVF A

M('\OF='.

rrl~~M:;

~1nv

r~1~1'''2

~·1'"

V

R~,

..

R1 ,

~2

C~P'

'~AVE

l.~ER

42 "e?t~ ~4?7I'l1t
17"7 7 4
43 pe22~ ~;~"'2?1

RTC

~ji'''77~,R~

,rU~'AP

A~R

Q 1

:~U·,

44 ~e~2'
45 C'e?24

13 r

.+6

""'i~7r',

r.
RTS

,,'~t',R1

,

l'lIe!'2"'c;'
46 Ve'J'" ?0F2:'1
47 ~e232 1 (l~e;~2

A~P

R~

,I"LI'l

HCC

.... 15

1~~':\(i~~

17

~!

I

AI.!

FlY'
l

!.

EF
~IT

t'

E~ A!.

r. ,. .A RAe Tf ~ e0 e! s ,

~F.(;I~T~R

RUT !1 .. 9,
=> C

~IT

4

1 -> C

ArT
T~

2
~,

I~

FTNAL

BTT

~TATl!!

weR"

CV,rR
48 "e:?34

MACRO

r.J5~

V(,0~

.. !4

!~-SEP.72

7 ClI1

HIS

02=f'7

PA.GF

~

.

• 4l}.,R1

J~ItL

er:

1 1 1-9

~I"~

~IT

3

t?I~l7i7,tlCJ

49

V0'4~

r0~2rH

ASR

~4

~2~~f"1.

A~R

R~

e1

110242
V0244

r3?7~2

BTT

N774,R2

'rer774
V025t'! I?OH 40'5

KFQ

CR,rvn

,

SWA~

R'R2

I~·IC

R~

Af3L

R2

:t'n ,., p",,- ~!OW T.N 15.g
,loLl. T~TS JtiST TC AF.
;WI'TH T"'E it!

ee

52
53
e4
55
56
e7
!SB
e9
60

V2?5?
V0254

I'lIv'f07.2~2

ee?5F
V0260l

~0~2fi11

Oh~1?3P2

Ve26?

~V'l3375

~0'64

(112fi(?l2

V0266

11t?1C~1

Cl027~

t?1.'74~

t.'~'7d

CR.CVL:

~0F3~2

""~1711?1

Et

.A~R

Arc
CR.r.VDI
CR.r.VT:

,rHFCK A... ,

CR.rvt

7,,5, 3.4 AL.Se

1~

"C: ~lf IF ZERC

~U.

Mr'lV

(~F,+,R'

,RESTrRF IISFR

~~" V~

~, I ~ \

,~!r,N

~~n

tI\IU!c1,-(RP,

J~ET

C.... PR

R' ,w240

tTf.~T

nFQ
lhJC

CR.ppr;

CM.PA

R~ ,.1.d~

CR,PPG
C~p ,...

v

r.O~PATABL!

R~

f)(T~H"I

IF eTT

IF RPG

~PFC!.Al

7 ON.
Tt\"E'Il FOP SPf:CIAL et-.FUCTEA

t:I

12"1?7

r0"'2i1(1
62 ('030" "01422
E3 ,,~~e2 fA ,,, ~ '- , e;
64 ~0~~4 12r127

C~p~

,TEST tJ:"

SPFCTAL

ppr,

1?0"1~e

c?231~

C"~"416

RPQ

66 I'e3U'
f7 fle31d

~0"7?fi

TST

1~~7r.'1

TSTA

158

CI~Jl~

10,1t?0~2

RPt,.

fg

(J~~2'"

C16~7~1.

Af}D

f!5

R1
.... 6
N34C',Rl

,eO~.!VF~T ,.r"I"!FS >2pe
,'.:. TC R6Nr;F. >

14'' '

1"10t?34~

70 (J032d 1'1C'146
71 V032Fo ~6?7~1
,II QI!" 0,j

e

CR.~URc

'H''lV
SUA

Rt~·(SP'

,., . TC
I

72

t.'033~

\ otil 4 1?13

fPq

CR.~Tr.

73

"~334

1,,?7Hi

StlA

N11,'SP

74 (7034('1

C'~"772

RR
.IfiNDF

o~ LV 2 ~ R, n~l\. y, 9

A"'O

CR,TOS,.SP

'''Ir.K ,APPPOP. TAeLE

AI"JD

pr,·sp

,rOtJPl:lF

ArlO

~ r: R', T R L • • , ~ ~ P
~rSP':t',CR!'I''''

~ f~1'

e, 7

75 "0342
76

"034~

CR.STr.J1
I".6F,7Hi

.fNnC

77
Q034~

"'~0'7U5

C~.RPr:1

79 V035r1! V6?7'6

I

...

'1 & STRTP 411
TABLE !tomF. X

AI'~n

, ,. • r

GJ:'T

CR.~lJR

\774~6

;7B

•••

,Ct)NVf:RT rARO crOF.
rFOR FAr.~ 4t" TN crcE'• • l•••t

~4P.,R1.

OIVj:12C'12

eO)

"0~5d

~t16'~

MnvA

81

(,0J5~

~2t'e.~7

r.~fJ

RC',rR.UAE

HfQ

r.;;,fXT

,...
I

t

AonR

OF PYTE

~~Q"

& STI"IRF. TN P.L'FFER

J~UFFFFC

FI'LL?

SFT

1775t'!4
82 '0362
e3 P.036d
84 !?036Fi

~~14!i2

85

~037?

C't~f5f,'t

86 P0374
87 1?037f1

(')!1:::'~"0

'lt7H~
r,"1""r1~7

CR.AXTr Mr:VR
CR.CXT: t·u:W

!lPCII-R0

,fF

QV"""~.URP

,~A"E

n~p~.,R1

JPFSTr~F.

~rT

t>.FIt.

U~'OFR~.V

pr;!t-.TFR

177S!?e

~IiH"'()C"2

CP.!XT.

'-10 V
r'1\lV

....

C5P, •• RPI

r

RTI

~

18

I

!ET

~

I.'SFR

F'IlTT

RFG~.

FLAG

D)

2

erJe~~r

1 (~c:;('

~7

CP.I'lUr-,'1

CAPO cnr--'PLFTFD:
.~Cq,rSR

'~Tr.p

T~TR

,r;i2

,TF

R~I'J

r.~.Q"'''

CLRR

'771~~
~

eee4C1,.1

1 ~i:;7

4

~~e4e~

/':\Clt4~7

!5 0pe4\('i'I

e

e"e41~

I?

H~

~~

1. ?6i"~

""1~7t.16

nV

M"lV

I

PRf"lCFSSr~G

~}r
,

(~P'",R'''

r c~'T "'''dJE
••••
,rTI-IEPIt.TSF RF,a;TrR~

~~CR"RSV,,,,,C~P'

,'"

r
•

~ ~lCW

~~?v.d4

YET

•••

U5FR RQ!

ALL

~AVE

...

7 0!7t?41Fi

:"g.:.15~6

,rSR

Q~~~C~P'

~"e42?

rl(,7r')~

rl"V

C~.ligp,RiIJ

e

I",l'H'RRU"TS

l

I~F.:T

177446

.

SF~

5

.TFnF

~T/\A~V

J~nR

Pp\'A~Y

1~

I'~TB

CR,rs w

J •

~"'F.CK

11
12

R~!E

Cr:;.

r

I

•

:TF

P 1)"-

sr

PT~

PUFF

VFRS H'l~ •••
!F A!"ARV J:;E.'"
AC:CRo"r~iGLV

ACTT~N

.FNI)C

13 170.124 1'71"7"

Mrv

CO,!

"TFnF

,FOR ASCI!, SFT

~F,R1

.

177436

14
15

CR.ZSi,I;:

g

8J.a~K~

J•, •

~R

.+2

,~WTTr.~

O~!?

~R

CI:(.AO~

,!F NtT

~r

• TF"JDF

M~FH(S

PTR

f~:C

~UPPRE~S

r.~FC:K

PF.R,",AP~

~UPPHESS!O~

16
17
18
H)

r~TR

~R~

R~I

CR.r:'XT

,TF.:IN

HR

C~4!rXT

l~iTFRRUPT~

1 711'i '2

4 0"~462

~047fi,7

I?'~ ~ C1:

5 0C'e466

Ii e

r~H767

CR,RPT,

11?3Fi2

e

017,0472

0W~1~~

7

J

e

0V0474

!?1~7~t

R)

FW)

SFE~i

•

10

1'1 ~H5kH"

i71~1~t

"'(~!'e1

r

g FXTr FC'lR

t-.r~

t;:(,Rt

,r,FT "'CR AO!'lRFSr:

• TF ~)~ F

rHt\ARV

"1MV

tt7(Qt',16(R1l

,...

CR"FOF: W1V

'773i?0

g

,...
I

OF FYLF rARf')

,FOR
f

e

,

!I

~

r MPI E

VFR~Ir~
QE~C

t<.'C '-'6.16

O~!

•••
ECF

f)~"e'6

11
12
13
14
15
16
11
1e
19

.n~nc

"TFnF
ADD

1'1 ~ A '< Y

.~AV8F

..

,so

~1~,R1

'1r"!V

R!?,~R1

S '_I i1

Clot. I, "1 F

A~R

,/C(

,

1 1?

,,~~ ~

PV;1~t'"

1~'737

C('l~

CR,F)(TI RTSR

TO

~

J•, •

AS

tl=\e

J~F.T

FLAG

~,,·"r.~.C~R

'~L1.014

t

R1

.,

IF

Pt~ARV

U~;USE"

••• STCRE

COLt-..T

\J~LLJf

rC~PI'TF

I • , "
, •

"FNnC
fi'~~IZ~

~C~F

~rVF

RE~C

wr"lFH'S 1

RE~T

OJ:

r~PD

T~~U

I'V!O'e"2
1771~0
~e
~

!7eJ~l~

~~!?7~3

t

r:,

22

23

,,~52V'

~3 Q

r 01>.' TRC!.

C~.~'(T

rA~O

SF:f.~1

"'9
~1~~,r:R.T""S

,..

3R

CQ.~,:(T

r •••

CI.R

ct;,la~

~R

C~.S;)(T

• !F~jr,F

1?1'7fi7 CR,CJl2Fq MClV

O'L'~~6r(,"~1

,,~,.,t~6

1773'6

24
25

l?e52fi

(,?J(!77~

(7e~3t'

?;p:;e~7

2ti

"0~3A

!?~?7~5

C~,"2ql

,FOR rLaL PLNCI-I DRJVEP
'

~

f

•

~ET

~

T.AFlLf

C"FFSfT

! G~I aR F. RFST

~F

..

,
,
, ..
f

eTL

17?3~e

.FN!'l1':

~7

.IFr"lF

28
29
;3e
:3 1.

C~ .7 C"" :

RI.A~K~

r q', ., ~ IN

!-1f)V~

~

BR

CC,FXT

1,

,TN

St.FP~FSS

, ""'. s ~ T
,A(;AI'"

,FNI"\C

20

\JEPstC~

SI'PPRFS~

'G~C~E

~t\

RFST

('F CAR",

CARC

ev.rR
0V~Hi3f'

~tF746

:3 el?e'54'

'"'1,~7~6

2

JREAQFR N0T RFAnv Sl9ROUT1NF:
~nv
CQ,'AM,.CSP'

CR;~~VI

1772;;;2
~1

nV

~

A0~

, ... ( s p ,

~~P4"'2

4

0e~p,~~

:;I;:;'''P'l4

~

~rJ01:i5(,l

~102''7

f

rOT

ens
J
J~

7

Pr'

,r•• '.

If.

.TRV

AGA!~

("AI L F.r"P

TF

CC~F

~ACK

I ~ CF LL A~; En LS r: f. F I !\ r ,. I I"l ~ ~ I

e

1771.1;12

CP ,r.SRIII'771ne

!;

~'71~2

CR,DB1 s !7 1 162

H'

'771~4

c::p.rfj:?=!77U~4

j" (117' Q! 42 CR .SXT:a 4 2

11
12
13

"074 4 7

14

1"lI1~ ~::? ~

fA r~"

iii <14

CP.RSV=44
E~F.e!e7417

J'2-t1-0!.'-~-1.e~9

'-

SfT~t)=00!4::>4t'

:t2-::>-4-8 PLNrH

15

?!~I:;:?"i2

SfT29=001525t'

J12-~·~·4-6-8

16

I'll?!??:??

BSUP:P07:~(?I7

,12.1j·'.7.P.;

21

PUNC~

PL~C~
PL~CH

CV.t"R

1
2

~!tcQa

vre~·14

0Q~55f'

CR. TAl.I
JPA"HTY

~

,
f

e

0t'055;?
eV0553
0V-05bd

2 d e:

0V0r;5~

eF;3
264
eli;5

0P0"5~

0(10557
10 "",C;6t71

~

11 Ve56'
12 Q0562
13 "0fi6~
14 "0564
\5 ~0!56fi
16 "0~6ti

0' (105151
18 1?~570
19 (10571
:20 V0~7'
21
~2

.. ~EP ... 72

A~C!t

0?:~7

PA(';F 12

cn1\J\iEkSYO~

.YFNr,F

3
41

1~

TARLF F("IP P2Q PL"r. ...

O"L.v:?~

.~YTE
.~VTf.

241
261

J~PACF

~F\1
2~2

• RYTE

2~2

, ,2
,:3

?,::,o

2F7
27e
240.
e72
243
3?1e
e4]
:215
(?.d2

(?7t

.pyrE

, 1.

6~

,4

"RYTE 2~4
.R'fTE 6~
.RYTf 6~
.RYTf 2157
.13YTf 21~
.~YTE

,~

J~

"pR
,FMPTV

24eJ

.RYTE 7';)
.RYTE 2dj
.RYTF. 30'0
,PYTE 41
.PYTE" 275
.RYTf 42
.RYTE 71

Jt
IN

,."
J '

,"
,Q

C!05/3

e6~

.~VTE

6~

,~

23 (70514
24 r!0~7~
25 CJ057ti

';'57
\,;)3

~~'fTF

257

,I

.RY"E

1~3

,~

,T

26 "0517

\'.5

21

t26

.RYTE 324
.f4VTF. 1:;>5
.RYTF 1~6

3"7

.~YTE

3~7

29 ~0F02
J0 ~~Hi03
3 !, ~0t;5e4
32 "0t5e~

3~~

.RYTE

3~~

JY

111

,~YTE

131

24e

JV
,FMPTV

:33
34

V0~e6
V0~t),7

2';4
245

.RVTF 24~
,RYTE 134
_~yTE 2!i4

35
36

~~fi1.~

137

17,~lilt

31

V.~6t:?
V(H"~

276
01 7
132

t'0F.0t'1
~8 " 0601,

38

3~4

1~4

.~YTE

JlI

'v

JI.~I

,,
,(l

,~

'-45

,e

.RYTE. 137
.RYTE 276
.RYTf- 77
.RYTF \~2

J>

,1

,?

~9

22

CV.rR

r-'ACQi)

Vr{?lc1.,d 4

:: eee. F1F

eo.')5
312
1, L3

~t'e617

"3 L4

5 e,Pe,620
?eeF21
1 eee62:?
S e!7e'623
; 0ve624

14 5

0CJe F 1d
;;::
~

~!'I~t;15

c

10 !7eti2~
1 t "~Hi2F,
12 rlfl" 2 7
13 "eF.:30

1' .. ~EP .. 72

~:?:~7

5~

,~YTE

312

.RVTE 113

IK

.qYTE' 3,4
11 :;
II tlYTF
.qYTF. 1'6

H

.PyrE 317

32\

"RY'iE

3~i

j~

2~~

~RYTF

2~0

JF~I=lTV

315

.~YTE

C?~4

.~YTE

33'5
4.11

;,)~2

.~YTF

2~?

~e.ti31

2~'-

!7~63?
~en3~

~73

17 "(2634

3~2

.RYTF 251
.RYTE 273
.RYTE 3~6
.RYTE 3?~

18
19 I1.eti3!1';

246

e~YTE

2~

Clef'3ti

1~1

t'0637

1"2

P.e:64~

30:3
1.?4

23 C1eti41

24 "~n42
25 1112643
26 C'e'ti4t1

:3"~

f.

30'5
,~ ~6

,I'

"

,$
,OJ\'
J,

s,
• A

JF<

2A6
" tlYTf 1(i1\
,BYTE 1fi12

,R

,RlfTE 3(:13

It':

SA

Ji?

,I"'

.r~YTE

1"4

.RYTE
.qVTf

jt'?!S

IF

3~05

.BYTE

1!"'7

,F
Jr.:
sH
,FMPTv
J r

!70~4!s

1']
t 10

28 (111'''4''

240

.qYTE 1 i 0
.RVTE 240

29 eeF47
r,te6n?'

3~3

.RYTF. 333

~~~

'27

J~

.RYTF 1 ,:~

14

22

,~

, ,.1

11 "
317
1 ~U?

15
16

ei

1 :5

,-,.1

.,

,qYTE

P4£;F

~'" ('e6S1.
31

~74

32 t'065f.1

?-5e

,RYTF. 5ti
,tlYTE 74
.r~VTf 5e-

~3

~~F,5~

171=;3

,!:IYTE 53

,+

34

t'~r;5.d

'!: .~ 1

.RVTF 41

J1

:35 "~65~
:!t; rJ0F51=.
37 P0657
:38

311

.~YTE

173
17 5

,~VTE

J '.
1<

•r
,!

311,
173

,I

.BYTF 175

EFT

'~Ir,I-IT

.F'''Inc

23

Cli F<, V
rU~Lv

B~ArI5

314

,..

e

~~e72F'

t 1!5

t

0('(7721

11 A

7 01ie73!'
8 e~e731

317

... 14

1~·~EP ..

72

02:~7

P'!?
3'1

.~VTF.

l'e733

2At?

11 ~e734
12 (i'e73~
13 l?e73F
14 r; e 7.37
15 t'e7~0

\?72

1~

16 pe741
17 t'e74?

5

, .T

:1<
,I

,

J~
~.;

.FYTr-

0(7e73~

g

~

,...

.RyTF 5·~
;uYTE 112
.~YTE l' ]
,pYTE 3' 4
.qYTE 115
.~YTE
1'6
317
.RYTE 120

PAr,J:

IC'

321

J~

:p

.., .

.PYTf 2d?
.PYTE 7'?

12 t1 J.I

.~YTE

46

25~

.~YTf

,pYTE

252

.3 :~3
27€

.~¥'TE

27t;

2<16

.~YTf

246

3~2

.;:lYTE 322

~ E~~U:,ty

, $

J*

r
,>
,

3~.~

J

~

,~

18
19

('Je7d~

e~3

.PYTE

~3

,...

~~

C1~744

F'1

.~YTE

10'1

, A

2i

~e74~

t~2

.~y'TE

1~2

~2

(7e741"

3.?3

"RYTF 3"3

23 '1([741
24 r'e75C"

1?4
.3"'5
3"'6

.~VTE

tt"4

.~VTF

31?'5

.ClYTF.

3!"6

QYTE
.,nYTE

1m7

I

l1Ql

J'"'

2~
~6

,,"
"

C'e7ti1
r1e 7 5::>
"1'l!7"~
If.
" ' , ...... !

1? 7
•... 4I I'l!
i(~,

28

~e75~

240,

~9
~0

"075Fi

777

c:;e75'"
:31 'lfli57
~~ !?e76'"

e~6

.~"'TF

.~YTF

.QYTE

3~;

33 O.e761

??4

,~YTE

7t

~4

~RYTE

"1"
WV

(Je763

,~
w~

"I?
7;:' A
y
J',i' .....,-

47'1
l ' .;

~7

t'~76~

17 5

38

.qYTE
.~Y"E
.~YTE
.~N"'C:

r:

,.,,.,
,,

,r:~PTV

26?

3~5

241
:3 1 1

IF

,r:

,qYTF. 77
• Q YTF.
5~

21:;;\

"e76~

,~

,r
,po.

2c;;1

:<

4'
:3, 1

JT

17;3
17'5

H F:~T CII~I If 8~Ar.! 41, REMAINING
BVTES WTLL ~E CLEAR~D~
ALL ERRORS CINCLUDI~G '~OPPER E~PTY' UPON
A~ 'OPEN' CALL) WILL ~E T~f.ATED AS 'DEVICE
NOT READY'. USER CA~ RESUME OPERATION BY
RECTIFICATION OF ERROQ nR RfFtLL OF HOPPER
AND ENTRY OF 'CO' COMMA~D AT KEvaOARD.
THE END OF A FILE WILL ~E DETER~I~ED 6Y
RECOGNITION OF A TERMtNAL CONTR~L CARD,.
12.11""O .. 1 PUNCHED IN c,e. 1

,

XXXXXXXXXXXXXXXYXXXX)(XXXX
X
X
X
NOTES
X

J

X

,
,

X

Xxxxxxxxxxxxxxxxxxxxxxxxx

1)

THIS nRIVER CAN SF ASSEMALEO FOR USE
I~ CONNECTION WIT~ EITHER 1~2~' OR '029'
P'JNCHE'S OR ROTH AS INDICATED Ry PARAMETER
SPECIFleATION AT ~TART nF SOU~CE INPUT
AS FOLL(lWSs.
A)
B)

C)
D)

"ONLV26-0"
"ONLY29a0"
"OEFALTII0"

..

READ ONLY '0'-6' (:0l)E5.
ONLY '0'-9' conES
READ BOTI-I TVPES OF CODE
WITt-' 'Y'l26' AS DEFAULT
READ BOTI-I TYPES OF COOE
ltlITH '02Q' 4S OEFAULT
~EAD

•

NIL

IN CASES eel & CD), D~IVER WILL USE DEFAULT
UNLESS ~IRECTEO OTHF.RwI~E BV ENTRY OF A
CONTROL CARD PUNCHED tN C.C, t:12""0.7",,Q

•

12-11""8.9.

2'

'0'9'

r.ODE~

FOLLOW

'026' CODEq FOLLOW

IF PARAMETER "BLANKS" I~ DEFINEO, C.C, 'J~80
& TRAILING SPACES BEF"Rf THES~ WILL BE DISCARDED,

WITH 'CR-LF' FOlLowtN~ LAST V4LIO DATA, PROVIOED
TI-IAT CARD FILE IS PRECEDEO BY CTl CARn WITH
12-11·0.7-8-9 PUNCHED IN C,C, 1. IN THIS CASE
HOWEVER, tF THE USER qUFFER IS  WORD t, BITS 15-4
C.C.2
> WClRn 1, BITS 3",['-' J WORD 2, 8tTS 15-8
t"t
,..
,

WORD "" BITS "_!'S.J
C.C.4 > WOR!) 3, BITS 11·121

""."'.-.J

)-

~,

,

1IIIIjIr VI

t~J III; ~"

,",un;

1.,,1

~,

BITS 15·12

THE PACKED FORM WILL qE TRANSFERRED Tn THE USER
BUFFER UNTIL THIS IS FILLED, A.NV OATA THEN REMAINING
IN THf INTERNAL BUFFEq ~E!NG RETAINED UNTIL THE
NEXT

~EAD

R~QUEST.

TREATMENT OF ASCII READTNG WILL STILL FOLLOW PATTER~
DESCRISFD IN THE PREVTO'JS PAR4GRAPH WITHOUT EXCEPTION.
THE ONLY CONTROL CARD WHICH wILL ~AVE ANY EFFECT
I~ BINARV READING wtLL ~E THAT INDICATING E.D.F. (I~
T~I$ CASE 12-11-0-1 PUNCHING ~UST APPEAR IN AT LEAST
c.C. 1 THRU 8).
N.B. WHfN ASSEMRLFD FnR USAGE l~ ~OTH MODES, AN 'OP~NI
CALL wIl.L NOT CAUSE RFA~ING OF A CARD Tn ALLOW THrs
TO BE TRANSLATED AS RFQUIREO BY THE READ MODE
S~ECIFIED BV THE USER~
C)

O~IVER CAN ALSO Sf USED FOR 8~-COLUMN MARK
SENSE RfADF.:R. FOR 4~ -C"lUMN qEADER, FCClNQMTES
IN SUFFER SIZE CAN ~E ORTAINEO av DEFINITION'
AT ASSEMLBV OF P.RA~ETEp "MARKS". THIS WILL
ALSO PREVENT AUTOMATIC ~EMOV'L OF COlS 33.4~
IN 'BLANKS-SUPpRESS' MonE OF USAGE.

XXXXXXXXXXX~XXX~XXXXXXXXX

X
X

X
N~TF

X

X

X

XXXXXXXXXXXXXYXYXXXXXYXXX

PARAMETER DEFINITIONS CAN BE MADE DURING PASS
OF TH~ ASSE~BLV ONLY tF REQD AS DEseRtBEo IN
PAL .. 11R MANU~L,

SECT!I''!N 9.2, f.t;.

#CR,LPt,/PAt2
XXXXXXxxxxxxxvXXXXXXXXXX

29

,

,TITLF C~
,GLOBl CR

C1J00000 RC!h%0
A00001

R1 a X1

0001002 R2aX2
t'l0~003

R3aX3

~0000'­

R4aX4

A000t?15 R5aX5

~0A006

SFtaX6

~000Q17

PCaX7

000()J00 000000

000t'102
00001213

224
000

,INTEPFACE TABLFI

C~I

,WORD"
,IFNOF BINARY
.BYTE
224,0

rFACILITIES' ASCI! !NPUT,OPEN IN

,ENDC
.!FOF
,BYTE

,ALLOW

.E:NDC
,IFNDF
,BYTE
.ENDC

00000~
000~0~

000007

101.-

300

000Q!10

022
042

000011
000012

000

BINARY
234,0

,CURRENT DOB OR 0 IF tOLE

~INARy

IF

RE~O,

MARKS
3

,ST~ RU~FER

SIZE

a

96 RYTES

,IFDF
,ijYTE
,ENDC

MARKS
2

,AYTE

CR.tNT-CR,3~0

,INTIQUPT SVC! AT PRL 6

.BYTE

CR.OPN .. CR
CR,TFR.CR
0,O,O

,OFFSET TO OPEN
,OFFSET TO TRANSFER
,(NO Cl~SE OR SPEC, FUNe.,

,RYTE
,8yrE

000
000013
000
00001 4 £:1112620 CR.NAMI .RA050

'CRt
,OPF.:N PROCESSOR I
00001(1} C'leJ4767 CR.ONRI JSR
PC,CR.NRY
00"'356
000t?!2' 0132731
000"'3~

000400
111160
001372

,CA~OS

BIIJE

.IFNDF
,~FNDF

012H'.H~32 ()J0~027

0000136 ~05726
000014Cl1 ""00523

CLR
.ENDC

CR.ONR
ONLY26&QNIY29
OEFALT
(PC)+

,IFDF

OEFALT

MOV

#104,(PC)+

.ENDC
,WORD
.ENDC
.IFDF
CLRB
,ENOC
.TFNDF
TST
BR
.ENDC
• I.FDF

CLRR
BR
I'JCB

BR

YN HOPPER?

,TF NnT TELL IJSE'R TO READY
,FOR DUAL-PUNCH DRIVER ".
" •• SET CONY, TARL~ OFFSFT
,.,' FOR DEFAULT PUNCH
, ••• AS APPROPRIATE

o
BLA~JKS

CR,ZSW

, t F. RLA~II( • SUP PRE S S VERS ION •••
J ••• FORCE SuoPRESS OFF

BINARY

(SP)+

,IGNORE INTERIM RETURN

CR,OXT

, •• ~ &

BINARY
CR,TFR
CR,ODN
CR,TFR

,FOR RINARY VERSION ,.,
J ••• FORCE NO OPEN ~E4D

C~.ODN

.ENDC

30

"1,

TA~E COMP~ETION

6Y MAKING COME HERF,.,. IjEFORE EXIT

,SU9SIDIA~Y

ROUTINES.

, A) RESTART AFTER ER~ORI
CR,AGN: .IFDF
BINARY
T9T8
CR.ISitI
B~Q
CR,TFR

,IN B!NARY vERSION •••
,.,. CHECK IF BINARY ~EAO
,IF NOT CAN JUST START OVER
BR
C~,ER{")
,EL~E LEAVE USE~ ~UFF~R ALO~E
,
B)
Ir.JITIALISE INTERNAL eUFFFR POI~TF.:RSI
C~,!SP: MOV
pe,-eSP)
,GET RUFFER STA~T
AOO
#CR;8lJF-,,'SP
MOV
,gp,(PC)+
,WORD
0
A~O
#CR,asz,'~p
,NOW GET EN"
MOV
'$P,(PC,+
,STORE 4S CONTROL
0
CR.I8f: ,WORO
Mnv
C~P)+,(PC'+
",: ~ AS INtT, PTR
0
CR.IB": ,WORD
I"JCR
.PC
,~USTN'T COME HERE AGAINI
,ENOC

,TRANSFfR SEr .. up PRnCESSOPI
BINARY

CR.TFR: otFDF
Bq
B~

~~0"'4'

BR
,ENnc
M'lV

~157~0

.+4

CR,t')XT
CR.ISP

.. "

,FOR eI~A~Y VERSI~N ".
, •• ~ SWITCH TABLE FORCfS
" •• CO~RECT tNtT,

C~,R0

177732
~"'0!146

"'~'-7""k'

A"O

:;'000"'6

, •• ,

,GET BUFFER PO!~TER
" •• ~ qUIL~ qUFF E~D

~12046

t>10V

(QQI,.,-(SP)

?!11646
0Pl0056 161016
0"'0(?16 C11 162016

M"V

.sp,.e!p)
.R0,'SP

t-1nv

C5P)+,CPC'+

.~ORD

0

,IFDF
Move
BlCB

'R0,R0
#376,R0

MOV9

gOl_rEL'~W
,,-,.F'
. . . _ .. ?

SEQ
Mf')V

CR.ROC

MOV

CR,IBP,Rl

000?15::>
~00~54

000~6~

000"164

~12627
0I~HH!'0I0

SIJ6
SUB

CR.UBFI

CLR
CR.BINs eMp
B~~E

CR. ERr>: MOV
HOV
CR,QOC: .ENDC
000C116~

~11627

MI1V

CR,UBP: ,11"r)RD
000r;,72 0105036
CLR
MOV
000?174 "'12737
000('11701

1i'10~0L'l0

TO

#5,R~

CRflI)+,'~P

BINARY
"".~

C~P'+,R'"

R2

R1,eR.IBE
eR.SL?
CR.IBS,CR.IBP
ROi,-eSp,

~

~OVE

,SAVE RfSULT ,

.,

,IN BINARY VE~SIO~
,~ •• CHECK MODE

.,

177160
~e~207

RTS

,

,IF ASC!! CLEAR S~ITCH
,IF BINARY WA~TED •••

",. SET PTRS & SWITCH
,SET INTERRUPT FLAG
JINTE~NAL BUFF EMPTY?
,IF

S~ RESET INTERNAL PTR
,~AVE USER AUFF PTR ".

'SP,(F'C'.
0

'(SP)+
--Ullt

,.ileR.C~R

,ZERO UNDERWAV FLAG
,F-NA9LE I~T & GO FOR CO

~00HH

~~010~

STORE

AUFF~R

,RETURN USER FOR NOW

PC

31

RF-A~

• IFOF
CR.9L. P c SWAB
MOV
CMP
BNE
MOV
TST
BNE
MOV
MOV
SUB
CR.OO~:

TST

BR

BINARY
'Rl
(Rt, ... ,(R0).
R0,CR.UBE
CR.BIN

R1,eR.rBP

R2
CR.OON

'sp,.CSP)

.. (R2),2(SP)
*16,51'
(SP).

CR.DXT

.ENOC

000104
000106

~lm046
~16700

177756
00011' 013746
177160

,WITH BINARY nATA •••
, ••• COMPLETE cnNvERSION
, ••• ~ GIVE TO US~R
,USFR BUFFER FULL?
,IF NOT GET NEXT WORD
,OTHERWISE SAVE INT PTR
,COME HERE ON INTERRUPT?
,IF SO MODE aw. SET
,ELSE MUST SIMULATE •• ,
, ••• STORE PC & PS
, ••• & DUMMY SAVE REGS,
,IGNORE RETURN PC
, ••• & TAKE cnMPLETION EXIT

,INTERRUPT SE~VICE ROUTINES,
, .) CHECK FOP ERROR & COLLECT INPUT.
CR.INTI MOV
R0,-(SP)
,SAVE USER R0
MOV
CR.UBP,R0
,GET USER BUFF PTR •••

1300116 v.106326

000120 103477
00012~ 1 f(lOI.lI 47
000124 i?l1"!4e

MOV

,jCR.CSR,-CSP'

, •• ~ & READER STATUS

ASl
BCS

(SP'.
CR.ERR
CR. DUN

,CHfCK FOR SPECIAL CASES
,GO R~TRY IF ERROR
, ~ t ,. A 1\' " ., 11:' ~ ~ ,I ~
,~O~ SAVE USER Rl
,IN BINARY VERSION •••
t ••• USE APPROP~IATF. eONVERqr~N

8MI

MOV
,IFOF
CR.IS"II BR
BR
B)

~INARY
ttJ'~'

M"'/
MOV

COP4B

apt..

ASL
ASt..

CR.BSTI

ru,-eSp)
B~NARY

.+4
CR.Ase
CONVERT & STO~Et
,-" 4 • •

,J f

"

t

.oVl';e;.".,.,.(SP'

.BP,-CSP)
lCR0)
CR.RST
ClSP
CISI'

ASI..

CLRB

,SP
CRt).

aIS~

l(SP),-lC~l)

HOV
Ct-tP
BNE

(SP'+,(Rl)+
Rt,CR.I'3P
(SP)+,#7400

.R0

ABL8

CR.BXT
ClR0
CR.EOF
CR.CXT

BI'L

BR
.ENDC

,to

~T~

It

COLU~N?

,~AI(E NXT
,SET HIGH
,THEN LOW
,SAVE PTR
,NOW LOOt(

tNSTR • Move
BYTE AS REGD,
BYTE
FOR E('IF CARD

CR.6XT

DECB

BPL

l.\

"

.IF $0 SHIFT INPUT TO HIGH

ClSP

A51..

Move

r J.;t
TNPUT
,,,.i!,1
..... COPIES
FOR L4TER
',ODD

32

, •• , PUNCHED 12-11-~-1
r ••• IN CC 1 THRU 8

,IF

F~D

IGNOR~

r~T~ERwISE

TRY

REST OF CARD
~EXT TIM!

,

000125

ti37~1

C)

CR.Ase:

ASCII CONVERT 8, STOR~:
~iOV8
'.CR.OB2,Ql

,GET CO!o1PACTEn iNPUT

177164
I'lIt'I~."2'"

.t'll'lIl'lIt'I'"

BPL

I!I.~

r CC~JVERT

000134

ADO

ii340,Rl

J •••

TRTB

«tR0

000142

~62701
~0~340
t~5710
~01011

,IF FtRST

BNE

C~.r.VT

0~0144

!i12"127

C~P

Rt, tf 301

0~0t5'"

~0r.?!3r.?!1
~01472

BEQ
.IFDF
CMPB
SEQ
.ENOC
.!FNDF
CMP

CR.fOF
BLANKS

lUll"!?

L.;J~

00KH4~

000152

~ v.jlf}~'i.JC

~2e,127
~0pt227

Rl,tf337

CR.ZON
Ot>.JLV26&nNLV~9

Rl,#227

000156

('I~151il5

SEQ

CR.~29

0rlJ0t6~

rn2Q1127
?l0e270

CMP

Rt,.270

0~0164

1?I~1476

000166

~1~146

00017~

1627~1

SEQ
.ENDC
CR.CVT: MOV

Rl,-eSP)

SUB

#40,Rl

t0~41i.!3

8MI

00017~

162716

SUS

CR.STO
#t7,CtSP

a~

CR.CVT+2

c,;eViL!i17
~fi!0'-04

~66716

AOD

c.e.

J •••

• ••
LOOK FOR E.O.F.

,,FOP
...

8LANK SUPPRESS ,
LOr'JK FOR SUPPRESS ON

,...

DUAL PUNCH DRIVER •••
CHECK IF 029 CTl.

,...

I')R 026 eTL

,FO~

..

,CO~VERT CARD cnOE
•••
,FOR EACH 40 TN CODe:
•••

.,, ...
...

~0OJ12J40

CR.STr}: .IFI-JOF

P P I

>t4~

e~."'26

~~01.74

000202 "'QlCA772

...
"!I!1I1:lI
' & ' ~....!~.'"

"''''I''\C'G
l.",UJ~"'~,...;J

TO RANGE

ONLV26&ONlV'-9

STRtP

ADD 21 &

411

Tn Ge:T TABLF INDEX

Cq.TOS,.SP

,PICK APPRCP. TABLE

pe,'sP

,COt-1PUTE

177624

.ENDC
0"'0210\

~6Pl716

ADD

000212 V'62716

A.DO

*CR.TRL""'.,CtSP

!"\uvr,

.1~\ln

.. I,.. ...
II' \ " F

CMP

R~,CR.U8E'

0!~Pl2"'2

000216 i13620

0Q1022t'!

02"'~67

000~24
~00.22~
000~3~

BEQ
"e1452
151.710 c~.eXT: SlSA
'lIlt'1067 CR,C)(Tt M1"
177634

'..J...
J

T ,

,n,.,.
\, ,,; 1(1 J .,.

j •••

.

~

OF QYTE RFQO

~ODR

~TI'lRE

Y"-I
~

''I

t211C'C'C'O
UtJr-

r-

~".'"'"

,BUF'FER FULL?

177640

form v

0910234

~126"'1

0"'023F1

~126~0

CR.IXT: MOV

a~0'-4ii1

~00y.02

!"'I:IJ.

"" .....

CR.F.XT
ttPC,C'R~

,IF" NaT SET

U~DERWAY

R~,C~.U~p

,SAVF NEW

(SP'.,Rt
CSP)+,ROI

rRfSTORF: USER REGS,
j •••

33

~

onT~TFR

EXIT

FLAG

,

D) CA~D CO~PLFTEOI
000242 105037 CR,DUNz CLRR
'*CR,CSR
177160
000246 1,,5710
TST6
'~0
CR,RPT
000250 A01427
SEQ
MOV
Z~0252 ,~ 12600
CSP'.,R0
MOV
000'-54 t'iil13746
'*CP.RSV,-CSP,
m00044
JSR
000261(11 ~04536
R5,-CSP'+
MOV
CR,UBP,R0
000262 0I167~0
t776~2

.IFDF
T*'T8
8NE

.F-NDC
000266

~16701

177572

MOV

,TFDF
CR,ZSW: BR
8R
,tFNOF
TSTR
B~I

Ci-tP

SEQ
SUB
,ENOC
C!l1P6

SEQ
CR.AO~:

01?l0~1~

~01i'!012
fi11167~0

;~0'"

170

, ..

,SET IJSER BUFF

PT~

BINARY
CR.TSW
CR.SON

,FOP BINARY VERSION •••
tF BINARV QEAO
,,IF
... SOCHECK
ACTION ACCRODINGLY

CR,UBE,Rl

,FOP

BI.ANKS
,+4
CR,ADN

~SClt,

SFT END PTR

,... . I'ERHAPS
ON?

CHF.CK

,IF NOT NO SUPPRESSION

(lR0

CR,I')XT
RC'I,Rl
.+6
#8"R0
·CR~),#"4~

,-4

,TEST IF EN" "F FILE
,SKIP NEXT c: ALe IJ LATto" IF E"F
,IF RIIFFER FULL O~IT NEXT
,OTHERWISE LOSE CC 73-8"
,THEN TRAlLTNr; SPACES

,CLfAR QEST OF 8UFFE:R

Mova

.. CR'.)
Rt,RQI
,-4
#215,(Rl)+

Mf'lV8

#AU?,CR1)+

,MOVE I'J LINE FFED

MOV

CR,R0

rGET "DR ADDRESS

J~P

"14CR~)

rTAKE

.IFOF

BMI

BINARY
CQ.TAS,Ql
caQ0,R2
CR.DXT

J~R

PC,CR.8tN

BHI

SUPPRf~S

,S~TTCH

MARKS

177,464
'~HiH~314

.

I'ROCESSING VET , ,
CONTINUE
tOT~EQWlSE REST"RE USER R(,!!
R, NO ill SAVE AI.L
,
NI')

J AOLTlJST

eM?

CR.DXT:

,,IF, .,

(R0'+

T9T9
,ENOC

CLRB

00027? to!i041
000'-74 0.2"'1"'0
00027fS 101375
000J0~ 1.1 ::?721
000215
000304 11~721

,STOP INTERRUI'TS

?TR

W~EN

DO"JF,:'

,MOVE I 'J CARRIAGE

CO~PLETtO~l

R~T'JRN

EXIT

~"H"014

CR.RDt.J: MOV

Move

MOV
JMP

.ENne

,fiCR.SXT,R5

4(R5)

34

~I~IARY,
INTT INT PTR
,E')eTT IF EOF SEEN
,AtSO SJ:TS INTEQRUPT t:LAG
,ELSE G!".I MOVE OAT4 TO USFR
,IF Ct"lMr: RACK, "10RE RF,AO RF,"JD.
,so TAKE ~YSTEM E)(IT
,FO~

,SPECIAL CASE PROCESSING:
, A) FRROR ROUTINEI
105037 C~.ERRI CLRR
'.CR,CSR
177160
0P1032.4
00033~

~0A757
~0(i!0512l

JSR

~04767

CR.RP'T: JSR

177506
1300334

~0"'740

~le7"'1

,IF
CR,IXT

BR

, 8) END OF FYLE CARD SEENI
CR.EOF: MeV
CR,Rl

177436
000342

~16161

,STep

• YFr..JOF

BH-lARV

M~V

1~CR1,,16(Rt)

~f{lCll010

I~Te:RRUPTS

~ETURN

'TRV AGAIN

,.,. \ EXIT FOR NOW
iGET OOA ADDRESS
,FOR
, •••

~IMPLE VERSICN ••
~O OATA. ~EAD ON

,

fOF

Vl0t'1016

.EN"C
.IFDF

BINARY

,~AVBE

ADO

tH6,Rl

,$0 ~OVE TO UNUSEO eOUNT STORF
",. ~ eO~~UTE VALUE REQO

MI')V
SUB
00035~ ~05110
000~52 15~737
"'0~002

R~''''Rl

ASR

CR.UBE,'Rl
,Rl

.F-NOe
CI')M

'R0

CR.EXTI RISR

#~,-*CR.CSR

: ••• AS

~OME

IF AINARY .,'

WOROS!

,SET FLAG
,ALLOW REST OF CARO THRU

177160
0"'0~6~

~~~723

8R
CONTROL
• IFNDF
CR.~25: MOV
C)

e~0362

~12767

CR.CXT
SEENI
ONLY26&nNLV29

CA~D

rFO~

DUAL PUNCH DRIVER •••
~ET TARLE OFFSET •••

#t~4,eR.TOS

, •••

CR,EXT
CR,TOS

•••• & IGNORE REST OF CTL C.RD

~01(!1~4

177444

000372

00037~

~0~770
~05067

000376

~0~7~5

8R
CR.029: CLR

177436

BR
.ENDC

.!FOF

CR.ZONI MnVR
BR
.ENDC

,READER NnT
0~040~

~16746

CR.NRV, MOV

177410

CR,EXT

BLANKS
#t,CR.ZSW
CR.EXT

RFAOY S1I8ROI.JTINF.1
CR,NAM,-CSPl

Mav

000404 tl!12746
~0eJ41'

~0"'004
"'0rJ12~7

,

.MISCELLA\lEOUS

PC
OEFt~IiI"NSI

177160 CR.CS~.177150
177162 CR.OB1.'17162
'77164 CR e DB2a177154
~00042

Ql0P1044

SUPPRESS ON

,IDENTIFV DEVICE

J ••• & CALL fOP
,TRY AGAIN IF C~ME QACK

lOT

RTS

J,.~SET

,A.GAIN IGNORE REST OF CARD

,GIVE ONT READV tODE

~~~402

00041'"

.IN SUPPRESS VERSION

CR.9)(T.42
CR.RSV.44

35

CR,TBll
:PARITY ASCI! CONVERSION
01210 4 14
000415
00041~

000417
021042"
000421
021121422
00121423
000424
000425
000426
000427
001214301
~00431

00043'
"et043~

01210434
000 4 35
00043~

240
261
262
063
264
12165

056
267
27121

240
072
243
300
047
275
12142
071
06121
257

0121121437

123

00044~
~00441

324
125
126
327
330
131
240
335
254
245
137
276
077
132

000442
00044~

00044.:5

000445
01210446
000447
0004501
01210451
000452
01210453

000454
000455

01210456
01210457
00046t'J
000461
000462
000463
000<164

055

312
113
314
115
116

~Pl0465

317
120

00046~

321

000467
00047(:11

240
041

000471

044

000472
000473
000474
000475

252
251
273
134
322

0"'0476

.IFNOF

,8YTE
,8VTE
,RVTE
,RYTE
,eYTE
,8VTE
,~YTE

TA~L~

FOR

P.l29

O~LY26

240

,SPACE

261

,1

262

,,2

63

13

264
65

,5

66

,6
,7
,8

,4

,QVTE
,QYTE
,BYTE
,RYTE
,BYTE
.8VTE
,8YTE
,8YTE
,BYTE
,AYTE

257
270
24121

71

,9

,RYTE
,8YTE
,RYTE
,BYTE
,BYTE
.RYTE
,RYTE
,BYTE
,RYTE
,BYTE
,BYTE
,8YTE
.BYTE
,8YTE
,AYTE
,BYTE
,BYTE

6'"
257
123
324
125
126
327
33121
131
240
335
254
245
137
276
77
132

,01
,I
,S

.BYTE
,QYTE
,F:4YTE
,BYTE

55
312

,EMPTV

72

,=

,
,,.'

243
30121
47
275

,~

..

,"

4~

,T
, II

'V

'W

'X
,y
rFMPTY

,t',
,~

r"
,>

,1
,Z

,.

,J
,1(

113

314
115
.RYTE 116

rL

,M

.~YTE

,N
,p

.AYTE
.RYTE
.BYTE
,8YTE
,eYTE
,BYTE
,8YTE
.AYTE
.I3YTE

120
321
240
4t

,1

44
252
251
273

,,.,,

.~YTE

134

,R

,0

317

,Q
,F.:MPTV
,$
)

,6

.eYTE 3:?2

36

~U~C~

e00477

246

.~YTE

2d6

00050~

lCJl
1212

.BYTE
eaYTE
.qYTE
,BYTE
.BYTE
.BYTE
.RYTE
,8YTE
,BYTE
,QYTE

1~1

110
240
333

.~Y'j'E

56

0010501
~00502

000503

3r;,3
104

000504

~05

2100505

306

~(ilI0!i06

107
110
240

0"'0507
0~051P!
00~'511

~00512

000513

00051 4
000515
000516
00e1517

333
056
074

• BYTE
,AYTE
.AYTE
.AYTE
.BYTE
,ENDC

VJ50
~53

336

311

,PARITY
~(;I!0~2f')!

000'i21

2410
261

0~052:'.

2~2

0~"'523

063
264
065

000524
0"'0525
0"'0'i26

000527
wH?10fi 3t'
000531
000532
000'533

f1o£#..
~,:t..Iv

261
270

240
137
215

J~

,A

1('12

,~

,e

3~3
1~4

ID

3(?i5
3016

,F
,F

1~7

rG
,,",

,,,EMPTV
.
,<
,
[

74
50
53
336

(

'+

'"

,t

311

CONVEPsrct.J
.lFNDF O""lV29
.f1YTE 2AeJ

A~CII

.~YTE

QVTI:'
t
I

.....

6,.

:3
,4
:5
,6
:1
,8

:~

240

,EMPTV

,0

,8YTE 137
.BYTE 275
.8YTE 3r.'10
.8YTE 336
,BYTE 47

f·

000534

3~0

a00535
000536

336
047

~Q!0537
1r:1~0540

~~A

ii~VTE

071

,BYTE 71

,9

000541
0v.'10542

060
257

.AYTE

6~

,~

.~YTE

0PJ054~
~00544

1<3
324
125

257
12.3

.RYTE
.3YTE 324

",S

,~YTE

1?5

.~YTE

126

,u

00054~
~ r2lfi.Hi 4 6

"

'~~

126

~00~47

327

0e0S5~

3321

000551
0P1055~

131
240

0"'0'.553

273

,qYTE
,8YTE
.RYTE
.~YTE
.~YTE

'V
,w
pc

1~1
24~

,y

254
01150
04 2

.RYTE 5'"

011'10561

JT

33~

000~54

2 43
245
132

,(\

3'-'

000555
00105515
000551
00056~

"J"
I '

134

273
.AYTE 254

V'l2~

:~PACF:

,1

.ijYTE 267
.RYTE 270
.~YTE

~a~

261

,RYTE 262
.BYTE 63
.8YTE 264
.AYTE 6!'i
• . .~

TA~LE

,,,EMPTY
,
,

,
,"
(

42
.BYTE 243
,RYTE 245
.~YTE 1:32
,~YTE

:~

'X
,Z

37

PU~C!-!:

~00~6"

00056:5
0021564
000565
000566
~00567

00057A
00057t
000572
2100573
000574
00057!5
000576
000577
00060(')1

000"01
000602
000~03

000"04
000605
000ts06
000~07

000610
000flilt
000612
000613
000614
000flil!1i

.BYTE 55
,8YTE 312
,BYTE 113

053
1211
102
303
104
3G'J5

.8YTE 53
,BYTE 1~1
.BYTE 1~2
,BYTE 30113
3A5

,F.:

306

306
lCl17
110
240
77

,F

1t;17
110
240
077

1D00~16

0!56

000617

251
335
074
041
311

"0062~

""'0';21

a00e2~
0Q10~23

,-, .1

055
312
113
314
115
116
317
120
321
240
072
044
252
333
276
246
322

,1(

,~YTE

,L

,BYTE 116
321

IN
,0
,p
,g

240

,EMPTY

72

JI

3'4
.RYTE 115

,M

;RYTE 311
120

,BYTE
,QYTE
.RYTE
,RYTE
,BYTE
,BYTE
.BYTE
.BYTE
,BYTE
,BYTE

.~YTE

,BYTE
.BYTE
,RYTE
.BYTE
,BYTE
,BYTE
.BYTE
,RYTE
.BYTE
.RYTE
.BYTE
.RYTE
.ENDC

44
252

.IFDF

[

333
276
246
322

,>

,&

,R
,+

,A

,8
,C

,n

104

" G
H

j ,

,FMPTY
,1

,,

5~

,",<,

251

335
74
41

,1
,t

311

,tNTE~NAL BUFFE~

.IFDF
CR.BU~I .tFNOF
CR.BSZ-12~ •
• ENDC

,~

,,*

FOR BINARY
BINARY
MARKS
MARKS

CR. RS1- 50 '•

• ENDC

,••• +CR. Rsi

.ENDC

~0~001

.~ND

38

STO~AGE!

CR
CR.BXT
CR.eXT
CR.DUN
CR.ERR
CR,.IXT
CR.O~R

~"'000("1RG

01il0226R
0P10230R

000242R
0"'032'H~

QlI{I0236R

000016R

CR.RSV • 000044
0C'l0414R
CR.TRL

CR.U~E

CR '.029
Rl
R4

0P10064R
0Cl10372R
-xr("~0001

• " " C'q,H'10 4
- 0¥10624R

CR. AGN
,000li142R
CR.CSR - 177160
CR.OBl - 117162

CR.ASC
CR.CVT

0~0126R

CR.DXT

0fi!031~R

CR~EOF

0~0336R

CR,.EXT

000352R

CR.INT
CR'.NRY

0~0t04R
0~0400R
0~0330R

CR.NAM
CR.OPN
CR.STO
CR.TFR
CR.UBP
PC
R2
R5

0~0Q!14R

0~0t'122R

ar,,0204R
0~0042R

0~0Q170R

.%01?10P107
-%000002
-~0~0"'05

39

0'0166R
CR.OB2 • 177164

CR~RPT

CR.S)(T eR.TOS
CR'.026
q0

R3

sP

0~0042

0!i'!A~34R

0l'!0362R
-X0~0~00
-%0~0"'03
-~01(1100.106

APPENDIX A
CHARACTER CODES

A.I

CARD CODES

CARD CODES
(ANSI X3.26-1970)

~

12

12

12

12

II
0

It

11
0

0

9

Digit

,
l

&

-

0

space

{

A

J

I

1

a

B

K
L

2
3

I b

C

S
T

4

D

M

U 4

d

m

u

5

E

N

V

5

!c

n

HT

6
7
8
9
8-1
8-2
8-3
8-4

F 0
G P
H ,Q
I
R

W 6
X 7

0

J

f
g

v
w

P

x

DEL

I
!

h

q

y

i

r

z

I
2
3

Y,8
Z 9

--

k

s

SOH OCl
STX OC2

I

t

ETX DC3

BS

I

J
$

< •

8~S

(

)

8-6
8-7

+

;

!

......

! \

I:

, 1#
% @
,

1

9

0
9

9

SYN

LF
ETB
ESC

EOT

EM
I

I

i

I

NUL OLE

I

,

VT

-

> =
?

0
9

CAN

I grave I
I (

9

12
11

}

I
j

Ic

12

II

"

FF
CR
SO

FS

DC4

GS
RS

ENQ NAK

SI

US

BEL

ACK
SUB

NOTES
To determine the card punch for a particular character, locate the character
in the table and read the corresponding zone punch and then digit punch.
For example. the card punch for a % is 0-8-4.
To obtain the character corresponding to a particular card punch, locate the
junction of the zone punch and the digit punch. For example. the character
COt1'eSpOfld; ~ to the card puncfl 12-11-9 is r.
Slots that do not contain characters represent card punches for which there
are no ASCII equivalents.

A-I

I

A.2

PDP-ll PUNCHED CARD CODES

A.2

PDP-11 PUNCHED CARD CODES

CHARACTER

DEC~29

DEC~26

257

12 ~
11 ~
NONE
12 8 7
9 7
8 3
11 8 3
~ 8 4
12
8 5
12 8 5
11 8 5
11 8 4
12 8 6
g 8 3
11
12 8 3
~ 1

12 ~
11 ~
NONE
12 8 7
~ 8 5
~ 8 6
11 8 3
g 8 7
11 8 7
8 6
g 8 4
12 8 4
11 8 4
12
~ 8 3
11
12 8 3
~ 1

~6~

~

261
262

1
2
3

{
}

173
175

SPACE
!

24~
~41
~42

"

#
$
%

,

&

(
)

*
+
,

/

~

1
2
3
4
5
6
7
8
9

I

Parity
ASCII

243

g44
245
246
~47

~5~

251
25"2
~53

254
~55
~56

~63

264

4

~65
~66

5
6
7
8
9
8 2
11 8 6
12 8 4
8 6
~ 8 6
~ 8 7

267

:

27~
~71
~72

:

273

<
=
>

g74

?

~77

275
276

~

1
2
3
4
5
6
7
8
9
11 8 2
~ 8 2
12 8 6
8 3
11 8 6
12 8 2

A-2

CHARACTER

Parity
ASCII

@

3~~

A

1~1
1~2
3~3
1~4
3~5
3~6
1~7
11~

B

C
D
E
F

G

H
I

0

311
312
113
314
115
116
317

P

12~

Q

321
322
123
324
125
126
327

J
K
L
M

N

R
S
T
U
V
W

33~

X
y
Z
[

\
]
t or "
-+-

or

-

131
132
333
134
335
336
137

DEC~29

DEC~26

8 4
12 1
12 2
12 3
12 4
12 5
12 6
12 7
12 8
12 9
11 1
11 2
11 3
11 4
11 5
11 6
11 7
11 8
11 9
~ 2
~ 3
~ 4
~ 5
~ 6
~ 7
~ 8
~ 9
12 8 2
~ 8 2
11 8 2
11 8 7
~ 8 5

8 4
12 1
12 2
12 3
12 4
12 5
12 6
12 7
12 8
12 9
11 1
11 2
11 3
11 4
11 5
11 6
11 7
11 8
11 9
g 2
~ 3
~
~
~
~
~
~

4
5
6
7
8
9

11 8 5
8 7
12 8 5
8 5
8 2

APPENDIX B
ALGORITHMS USED IN CRll/CMll CARD READER DRIVER
B.l

HOLLERITH TO ASCII CONVERSION

Examination of the valid Hollerith character codes listed at Appendix
A shows that in anyone character there can be only one punch, if any,
in control zones 12, 11, and O. When translated by the CRll Control
into byte form, as follows:

1

I I

'I~

I

ctal digit corr.
11
a
0
9
Zones
1-7)
~=-~--~-r~--+-~~~--~~~~1~~0
2
5
4
3
6

1127

o

it can be seen that all characters must fall into one of the octal
ranges: 0-37, 40-77; 100-137, 200-237. Moreover, within each range,
the values are in fact restricted to the first seventeen. Basically,
it is therefore possible to establish a table in four sections, each
corresponding to one of these ranges, or two like tables if both 026
and 029 punches are considered.
Further, if the bytes so formed are transferred from the CRll buffer into a register, values in the last range produce negative results
by sign extension. If 340 is added to these, their range now becomes
a
140-177; a natural progression fromfue other three. Using a second
register as a form of counter, a relative index to the required ASCII
equivalent within its appropriate table section can be thus established
simply by adding 218 to the low-order 5 bits of the Hollerith code for
each time 40 can be successfully subtracted from the high-order three
a
bits.
(In practice, this is accomplished by subtracting l7R from one
register containing the final index, to remove the 40 while adding 21,
while reducing the counter register.) To the index must then be added
the appropriate offset into the correct table for the punch concerned
(0 for 029 and 104 for 026 if both tables are present). The address
8
of the ASCII value required is merely the index added to a computed
absolute table base.
B.2

BINARY PACKING

Basically, the packed format in which binary data is passed to a user
program can first be considered as a problem of packing two 12-bit
words representing card columns into three a-bit bytes as:

I

Byte 0

cc 1

(12-5)

Byte 1
c c 1 ( 6 - 9) : c c 2 ( 12 -1)

B-1

Byte 2

I cc 2

( 2- 9 )

or, in other words, the first column is shifted to the high-order
position over the first two bytes while the second column remains in the
low-order position in which it was read over the last two.

Using a

simple flip-flop type of switch, the algorithm distinguishes between
columns I and 2 to accomplish this during the appropriate interrupts.
Columns 3 and 4 require similar treatment.

Owing to the byte address-

ing scheme of PDP-II, however, the result so obtain means that the
bytes within each word are misplaced.

A simple byte-swap when the

word is passed to the user corrects this.
B. 3

SWITCHING

The version of the driver which allows binary processing requires several switches as noted in the main text.

Because the Monitor will

never allow the driver to be called to perform more than one operation
at a time, there is no need for the driver to be restricted to reentrant code.

As a result, the general form of switching used is of

the form:
SWITCH:

BR
BR

.+2
PROC.B

PROC.A:
When the low-order byte of SWITCH is cleared, the effective instruction
at that point then cecomes BR .+2 and the branch to process B is taken.
If on the other hand that byte is then incremented, the instruction becomes BR .+4 and process A is entered.
A variation of this technique has been used at the start of the
TRANSFER routine in the binary-type driver firstly to allow OPEN to
stop a first read as described in the main text, and secondly to cause
execution of the once-only code needed to initialize the internal buffer pointers.
CR. TFR:

This extends the single fixed branch to a table:
BR
BR
BR

.+4
CR.OXT
CR. ISP

(Allows READ w/o to proceed)
(Ignore first read after OPEN)
(Initialize buffer pointers)

If OPEN is called, the switch byte is cleared causing the first transfer call to branch to CR.OXT (BR .+2).

The routine at CR.OXT merely

increments i t back to the BR .+4 state and exits.

The next entry at

CR.TFR (or the first if OPEN is not called) takes branch to CR.ISP.
The last instruction of this routine, which also immediately precedes
CR.TFR, executes INCB @PC, hence finally setting the switch byte for

B-2

BR .+6 leading to all successive calls beginning normal execution immediately, until eitherfue driver is re-initialized by a new OPEN or
is removed from core and brought in afresh.

B-3

\

i

APPENDIX C
UNPACKING BINARY DATA FROM THE CRll/CMll CARD READER DRIVER
A SUGGESTED ALGORITHM
1.

Each four card-columns of data passed to a user program in binary

format appear in memory as follows, when the byte-addressing scheme
of PDP-ll is considered:
I

cc 1
6~9

I

2
12-1

ICC

~

BYTE 0

cc 1
12-5

cc 3
12-5

cc 2
2-9

cc 4
2-9

BYTE 1

BYTE 2

BYTE 3

BYTE 4

cc 3
6-9

I
I

4
12-1

CC

BYTE 5

At first sight, a simple algorithm to restore the original l2-bit
card column images from this format might seem a problem.

If, how-

ever, the bytes in each word are first switched, the format now shows
a more logical sequence:

I

cc 1
j12-5

\

BYTE 0

cc 1
6-9

I

cc 2
12-1

BYTE 1

cc 2
2-9

I

BYTE 2

cc 3
12-5
BYTE 3

cc 3
6-9

cc 4
; 12-1

BYTE 4

cc 4
2-9
BYTE 5

and the solution reduces merely to one of splitting two like sets
of three bytes into two l2-bit words.

The first step, therefore,

ts to perform the necessary swap across all words transferred.

As-

suming the data has been read into a line buffer as defined under

DOS, the appropriate code might be:
MOV
MOV

iLINE+4, R.0
CR~l +, Rl

ADD

R~,Rl
R~,R2

MOV
SWAB

eMF

BLO
2.

(R21 +
R2,Rl
.. ~4

iGET BYTE COUNT FROM LINE HDR

, ... & BUMP POINTER TO FIRST DATA
iUSE CNT TO SET LINE END

iSAVE START POINTER
i ••• & DO BYTE SWITCH

The column 1 image is simply obtained by taking byte 0 as the

high-order part and byte 1 as the low-order part of a word which is
then shifted until the required 12 high-order bits are right-justified.
Column 2 image is similarly extracted from byte 1 and byte 2 except
that no shift is needed.

Using a simple flip-flop type switch to

differentiate between odd and even columns, the necessary sequence
might be:

A:

B:

a)

b}

CLR
MOVB
SWAB
MOVB
COM
BPL
ASR
ASR
ASR
ASR
DEC
BIC

R2
(R~)+,-(Sp)

@SP
(R,0) +, @SP
R2

;INIT. FLIP-FLOP
;GET FIRST BYTE
i ••• INTO HIGH ORDER SPOT
i ••• & 2ND INTO LOW
iFIRST COLUMN?

B

@SP
@SP
@SP
@SP
R,0
#17~,0,0,0,@SP

CMP

R~,RI

BLO

A

iIF SO, RIGHT JUSTIFY

iSTAY AT SECOND BYTE
i REMOVE GARBAGE
;REQD. IMAGE NOW ON STACK TOP
i ••• & CAN BE PROCESSED AS NECESSARY
iEND OF BUFFER?
iIF NOT, GET NEXT IMAGE

NOTES
The stack is used rather than a register to build the image, as this
avoids the problem of possible sign extension in the operation at
A+4. After processing, the image should of course be removed before proceeding to the next.
For mere storage of images in another buffer, a further register
might be used as a pointer, e.g., MOV #BUFFER,R3 and all references to SP can then be changed to @R3 until the one at B, which
should become (R3)+ to step to next word.

C-2

APPENDIX

D

PREPARATION AND USAGE OF CRll/CMll CARD READ DRIVER

D.l

PREPARATION

It has been shown that, by defining the relevant conditional parameters
at assembly time, the user can tailor the card-reader driver to meet
the particular needs of his installation.
the driver is supplied as a source tape.

To allow him to do this,
The following paragraphs il-

lustrate special points to be observed in preparing this tape for usage.
It is assumed that the user is already familiar with the general operating procedures of the PAL-IIR Assembler and Link-II Linker.
D .1.1

Assembly

In order to enter the definitions for the required optional parameters,
the user should specify that the keyboard will be used to supply input
on Pass 1 only.

Thus, assuming a disk-to-disk assembly with line-

printer listings, the response to PAL-IIR request for command input
might be:
#CR.OBJ,LP:,LP:ei?,5

"0"e(l!6

DV,PP
PP

e0~e5
Vp'! 01 06

PPI

3~2

,\AlORD
,R'(TE'

pp,pp

CI j R~ E~! T " r BOP
FACiL'I'TTES

"
2

3'

T~At\SFER

~

2~6

.~YTE

PP,Y"IT",PP
20' e'
PP.OPN",PP
Pr.,TFR""PP
pp.rLS"PP

Q'(}!e

,RYTE

11l,P.

~CRD

~

510 BlFFER
~OrRFS~

5TATl.5

, RfLATTVF
,

AO~RFSSE5

, CLOSE
, SPF 8

SPA~E

~8

e~p14

(l!632~~

PP,~A~t

.RAn5~

29

1Z0(:'!1~

~~"'~~1

.~O~O

T~A!lFR

r~DeCATeR

~~

G'0~2""

~~~e~e

PP,TRLr
PPCTJ

,~OQC

r ~' TF R ~; Ai.. rat! N T

C1et'2~

~~~z~e

PPF~T;

.WORD

CLR~F.~'i

8"FFE~

:n

t

2

FOR OPFN

T~A~!F='E~

• 0

PCTNiE~

32
33
J4

"~~2.d

r' ~

",;'J.",

DRIVER ~onv
PP.TFR: MnV

Dre

po!p~

GFT CI!R~E ~,: T

~I"IV

15 rRc,) ,PPFPT

GFT

MI"IV

,eCQ~n,R4

PRESERVF WORO Cr'lUto.'T

crNVfRT Tr

1777~e

~5

r1et"3?

r1Fef;7
!"1 ~~!?

e0 6

~O!"Tf~

~1'FFEkl

'777F.(j

36

C'e!?'3~

\.~

1 ,,:?, ~ 4

~~!?~,~

3'

C'~e4~

~~63~4

~8

C1!?i?44 rq

3~

~e?'5i?!

!?.:3F. 7

A~L

R~

MI"lI,i

R~,PP("T

HI"IV~

~1

1777'5r:
1 \~7"7

~VTES

~~VE

AN,.,

,PP'.TRL

; Rf5FT 1(1

iF"

~0l"?rl

i7774(/;.
040
41

~ee56
~r?!l"6C'1

STMlLATi ! NT E RF( II F T

(:'11646 PP,t:EN:

Mf"lV

C~P,~

::"1~7f.6

MrI\I

;It"ST.AT~,,(~P'

.. CSP'

J~R

FRrtot

pr,}tx)t

,7777F,
~0!?''2!?2

~2

e0!?6F

013/:~7

~~

nv

.NPP.VCT,.~~T~AT~

;

RLN

"u~e'"

U~.~fR

ST,lTU5

00t"e7fi

177776
43

C'~77d

i'J0~7~7

PP.TNT:

r~T

"~Pp.r.SR

PLNCI-' C!!T Or: P,lFER

eR OFF

1775~4

t'01~~

10"414

B~I

PP.fRR

45 ql2l H~~

"~~,, 7 F, 7

T~T

P~CT

44

Vf~

.777 4 2

46 e~11CP;
47 (Jet1"
4A

"e, 1

?C~14'6

~~ l~

r7''J~2Fil

'.wo

.,,,
,..
l ..

pc.t"NI='

pc::c'r

; 777 '''''4
<1

'.177~1

-.1'1".

•

,

M~Vf

TR,AYLfR

Te

r.H6PAr.TE~

'-1rv~

,,~~~p

T~TR

PP.TRL

J

,• TPATLfR
NfXT

T,

~PG

AlRE'AI'''V F1NrS~Ee
C('IU"T T~IS r'NF
PI.NCt-

~777f'2
1775~6

.49

eQl
e1

e2

~012~

10~7"7

177r,7'l
V'0t2fi "!114!!!2

RFf~

PP.~OT

~~13r."

I

PPFFT

r?I(?Ir:;2~7

177'S Fi 6
Ci~H31l

r'b?i37 PP.NOTI

~;c

ions

NO

OR

C'F eLJF~

ADf"\RfS~

.iel7,.cNppf.C~R

,

f~Ai3lF

Tf\'TERRLP T

~0?'1"~
1.775~4

E:3
E4

~014~

"'~ri'e?2

~e\44

!~137e;7

RTI

PP.I)NFI

RFTUH'
SAVF. PEhS FOR RFTLRN

~\.IV

~.PD.~4V,'•• 1~

,T~R

R'5~·~"

Ci.~

.~Pp.cSR

DfS.aeLE Pt,' Tt R;:; L: PT

..,rv

PP,~~

CURRE~T

.J~il

"'14(~~l

J

M!"lV

~6j20.~,.U~p,

,SHI")~

'"In"

~4~~,

,

1'I~~"'l4"4

e5

,." ~1 i? e'" 2
~0'52

Eij 1!0',56

r0~517

"0" 0 rJ!1?
'7e~e:;7

1775C:;4
E7 P.0t62

:8
e9

C'1~7?!e

PP,IG" •

P.0165 r?l0t"17e
~~'!i'e 1. 4
~0'.72

~1:?146

PP.fRRI

(JI632~e

e~

DI')B

177612

"e~7~

~1~746

.. (!3P'

cr~PLFTJOt-.

CfVTCF

P~I~T

1.2

~'O,.

RE,aov

RETLRN
~

A!olE

E~R

,",SG

C"~Ql4'2

E 1 P0'02

~0~1"~4

U"T

t2

~02~4

"'0~733

~~ R

~0:?e~

1~,;e~7

t:3
E4

vC?,efi

PP.TNT

pP.CPtq
pp.eu~:

CI

R~

PP,TRL

J

1776714

3

It-.DTCA'TF TRAILER

OP!'R4Tre~

f5 '0212 "'1f.'!146

eo

V0'-14

e7 V0221'!

eA

~627'6

'776~2

t' U!667

M('IV

Pt:, .. CSP,

AnD

~PP,T~L.""',,'~P

MeV

cc::P' .... ppFPT

MIj\l

~'775::;4,PPCT

8~

PPtl!!E~l

1775'6
20~24

('J!t27~'

1775'-4
1775"6
f9

~023?

4

,e

1710P'!?!'Il'

CV.~P
SV~~OL

N(,!R~ ~I

~AC~C
TARL~

VQ04.14 13 .. ~EP"""2

.%01i'~P,QI'

pP
PP.RP

~~:'~

PAGF

el7e"(.l!Ci'RG
0~e33'­

0"tlH'2'-R

FP.r:LS
PP.fRR

~H"0~~t;R
e"01.72~

FP.~AM

0("0('S4R

FP.~AVc

e",~p.44

177'554
PP.TGN ~(i'I~'f52Q
PP.Nfjf QlU2134R
pI', SPF II ~O'~ 1, 6~R

PP.'TRL

00'0t71~R

Pp.UE~

• A~S'.

T~AYLFR

~FUlM

~FRf

.r:~"

FPF~T

SP

Z Ff'L"'S

AOr,FiFSS

P0f.'!'~2,pP.~PF.PP.IG~

e

R0

eUFF'f~

9I~~016

!

"3

•

S~T

177776 ST.AT!,;a!7777f;
PP.VCT=7F.i
'775~4 pp.r.SRa,7'!:Sfi4
j77556 PP.8RGII1J75S;;t5
"1dV'e44 PP.SAV a 44
!'0C"332 PP,.RP.332

1
2
J

pe

""~~111

,

=~0"'0"'e'"
.~01?~11P,~
II

~

e(j'! (1 P, 0 PI
00'0"'~"

II

pp.CS~.

01'~(,56R

~.

PPCT
e!P0"2C'R
Pp',PRGa 1'7~5E
PP.r"NF e!?~14~R
PP.!NT 0(J!~"'74R
pp·.np~

0"'f2I20M~

PP.TF~

CiJf.lIo!"'2~R

Pp.VC". 00'e0!7f1i

R1

~,

.~0I?e~0~

R4

p~

.~e"'e"05

=~~O'e"e1,
=~0"e!?~4
<)T,AT~. i7'77"

~r-0'-3-1

ERReRS nETECTfn, ~
~REF COPEt
194t3~ ~O~DS
,LP,
Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.6
Linearized                      : No
Create Date                     : 2017:06:07 19:03:03-08:00
Modify Date                     : 2017:06:07 19:13:51-07:00
XMP Toolkit                     : Adobe XMP Core 4.2.1-c041 52.342996, 2008/05/07-21:37:19
Metadata Date                   : 2017:06:07 19:13:51-07:00
Producer                        : Adobe Acrobat 9.0 Paper Capture Plug-in
Format                          : application/pdf
Document ID                     : uuid:e93ab93c-0d20-694a-8251-925d926f0533
Instance ID                     : uuid:5d421fb5-a38c-de49-bfb4-e28a45db9348
Page Layout                     : SinglePage
Page Mode                       : UseOutlines
Page Count                      : 205
EXIF Metadata provided by EXIF.tools

Navigation menu