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
.
Page Count: 205
| Download | |
| Open PDF In Browser | View 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~!~ e r 4
Alt RUT REte A~'" AnCF( FXT A
f3fT
Nd,c2
tl"'HF1':1(
~j:"I~
TQA"0
r~QA~r~
!1(1 Vr~
~;;EAC,crH~
J~fT
I.A~T
S'iH
.~,Q2
~~ET
IF RFAr
I" T.1:
!"\~~!?/~~4
iAS 0164 r- ;)!? i, F- 7 SPEC.h
r'ill('
187
~3;1 !.~
2? 2
""J~tJ:,7
CI
?J?67~
188
tA9
1ge e374
(HJ,17"7
!')FVYCf
C~trK
1774(of;
i91 p; d 0fJ
r;l~(J;'i
Ii' ~1 r?
e r.
(J
4/7410\4
192
e40~
rq "'l?~7
rH'I"'01 "
~77~'il
193
~dt4
r"~3p..7
rOt'" T
177444
1~11
195
~~2~
e4 2£1
f"1f'.17:12
~'j[?t?
i, 2
,..u~
47771
196
~.13r,1
197 0d3A '??1 d~5
198 0 4 3Fi 1 1 ~ 71 1
t?,~? 1';- 1
199 e4 4? ~';?7"l!2
Ttd' UTI rUT p t, T
T~
I'lUTPI T
C~M~S~E4C
r.M~e
~~1~~~~?2
2"e
{?44n "0141.4
2l'.1 045G'
r:~?71'
TJ:a~,o
I
9Q
Tj; A~' 2
RTf
-FCT.·~~T~
,rHFCK TF
~FtJ
'r t; A "- t
AT
FOT
t?,:1::?2~'"
,725'-0
2~2
~A5~
1. .1 ,? 4
2r.3 e46rJ r 1 r;(}. 6e
(,~ vll? eo 1 ?:
I?"~~
~1
t"I V
117 (R,q, 1.6
,PRAr..rl-
IF
rR~'
,PF.TU~"
~I"'R~
COL"T
,
'CE.'frT
CMM~
-
('I~C"~ '. #5
('.11635
TCA~7!
t3 Q
sP"ro~
t?71 t
rQA~,'l'
1v10\1P
N\dHTF,~R~
2~4
046F-
i~ ,1
2015
e~7?
1
:?LH??~2
17
'~F.T
I- ~~,.
tvOT
C~MI"I
FX!T
E la'RTTF
CV,tJT
212!S
~d7~
~tcPC
vre~.t4
06~7r:'!2
13 ... ~F.p.'2
!i'047~7
TRA.N21
PAGF'
1 ...
1\['\0
~d,R2
'~tT
,JSR
pr,r.o
,r.O
:'1"" V
~.I-'THRC,R'
C~P8
Cc;1',~RFA'"
1'0l'et'4
207 0B0Q1
~3:(J~~
l
~PITE
F=
C~~~
!/r
I~ITIAT~
,/7512
208 e50A
"1~7~2
17'5'4
209 051'" 1211?7
.. FRF
r('(WE
r r-.. T fRR
AFTE~
e~f(
"0(i'e~1
2112! e51 4 V'~1e!:"6
I: 11 e!i16 r3?737
f~ ~J
E
BtT
TRAt..'o
,PRAN("r
"'C:C~.,t~MT~
,IF
p:: t..'OT
~fAD
YNfl
C~;T
TF anD EYTFS S~OPT
.~RANr ..
IF ~OT
~FC
F.,r"'F,
~ET
II\
~E5IOUE
"4~(?'('.(?'
~7:?5~0
212 0524 (}QJ14112
H~Q
T~A"'6
213
efi2~
0'1~7C"2
!-1r'!V
9RC,~2
214
e53~
r?0"2~2
~~R
215 053<11
103€t"4
8CC
R'TI; A'" 3
~~3~
{7\37~5
r~nv
O."'TC~A,R~
21'
e~4'
17~5~6
10~e1.5
C! RR
218
0~4A
r?3,,2~2
p, C
(P5,
q2
BFQ
,+6
ATS
N1~~1?0'9.,R?
: ~ou~!r LP 14;rRr' rOUf\T
,~RANC" IF ~'o RFSTCUE
J!NSUPE ~"G wr.Rr r CLINT
RTT
HQLc:,'Nr"'T~
,rHFCK IF LFN(,;Tr
'~RA~r
1713~2
216
219 0546 0":11.41/12
22e ftlJ55C'! (l!5?7""2
Tr:(A~6:
T~AN31
JrHFt,K
'~UT
t..·L It p.
~'f),T
el'FF
PO~
1~"?~~
221 0fiS4 (,'3?717
FRRO~
C'(·ql?~e
17?5'0
:222 0fit5?
223 e56.4
~24
0fil~
..
Ir: U)T
(}~14"'2
!3r-Q
TkA~o1
~ :;P::2~7
P,'CR
E~~51'i
M('IV
R2d6(RC'l)
,RETUP" RFS HHIE
T!iT~
ERR~LIt
,f:HHf\'rloo
ti'~14~3
Br:Q
T~~"'5
(1!5""'"
1 ~1"0I?!e
131S
N1 i2t7~Q,0, \'OH~'
,SFT FRR cqi'
1712"3
" P'2"12
TRA~4.
~('R"
COt~T
nl~f?1?16
:225 (2!57d 1V;r:-167 TPANXt
171253
~2f
221
01'e"
~~e'
P0f?J.1.2
228
229
23e
,
IF
~'O
FXTT
~f.i1~
?~~(?7~6
"PA~5t
B~
Tc;A~7
,TAI(E
~f.i1'-
r?Ql47~7
SPE.r':,
JSR
PC,T"!!r
,PHT C""frlo(
Mnv
2(IH'1,R3
.GET FL l.iC
1172~~
231 0f.i16 "1':;""3
~~H"e"'2
232 0622 1113"15
233 01;24 ,627015
,f;ET
~f'lVR
C~3"R5
SUS
~~PF5T,Q5
FU~:C
ERRrR~
CO~F
OFVTCF
el .. OCK A~OR
AVTF
()'0C'~"1
2:34 e63CJ1 10?7Ft.7
235 0~3'- C'l2'7~5
236
237
~0"e"6
O"T IF
~~I
TPA~5
H~qANr",
CMP
N~Pl.ST,R5
J~uppr~TF:r
e63~
1~~764
BLO
0t14~
1227Fi~
c~~
PR
TRAt..5
"'3,1.C~3'
JrHFCK JF VIILTO
,A8r~T
(.'I~"e"3
"~"e"1
238 et;415
239 ~Hi5~
1~U?HI
Hi-fI
.i\~CPT
t' 1l"3()5
A~l
R~
24~
"'::;"7"'5
A"D
pr,c5
e~5'
~CT
FU~C'Ttr.~
18
TF
~~T
Fl~C
Plf"!CI(
r.lIl~'" ,!? 6
242
eF6~
,':I 'l
~
... · < { i l l
•
...
4
co:
'.;.)
,,
24:3
244
245
"qt:'rrl SPFST=1
~.a6
r"0~el'i'F,
S~U,T=6
S~E~T'
;
247
~48
e66'
1'i'0~412
249
e~64
~0~4~2
HR
~q
WFCF
25~
e66~
70"417
AQ
;: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 = 82 8VT~S,
ONLY TRAILI~G SPACE R~MnVAL WILL BE EFFF,CTE~.
28
a)
IF THE PARAMETER "8!N4RV" IS
~EFI~ED
AT ASSEMeLV,
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX~XXXXXXXXXXXXXXX
THIS VEPSroN wILL ALsn ALLOw READING OF CARDS
I~
ALL
BINARY FOR~AT. AS ~ACH CARD IS READ, 12 ~ITS FRO~
a~ COLS wILL BE ACC~SSED & STORED IN AN INTERNAL
BUFFER IN A PAC KEf') FOqM, I.E. 4 COlS :II :3 WORDS AS
FOlLOll!S =...
C.C.1 > 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