CALIFORNIA STATE UNIVARSITY, NORTHRIDGE
TEST SYSTEM FOR A
STREAMING MAGNETIC TAPE DRIVE
A graduate proJect submitted in partial satisfaction of
the requirements for the degree of Master of Science in
Computer Science
by
.John Gamlyn
May 1984
The proJect of John Gamlyn is approved:
Prof.
R.
Colman.
Ca 1 i .Porn i a 5 tate Un i v e r s i t y ,
i i
North r i d g e
ACKNOWLEDGEMENT
I wish to express
Wong
for
his
my
considerable
preperation of this proJect.
iii
appreciation
time
to
Professor
and guidance in the
TABLE OF CONTENTS
Acknowledgement
iii
List of figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii
Abstract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
1. 0 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1. 1 Existing test systems and programs . . . . . . . . . 2
1.2 Streaming tape drive . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.1 Reinstruct time . . . . . . . . . . . . . . . . . . . . . 3
1. 3 Diagnostic program . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1. 4 Three development phases . . . . . . . . . . . . . . . . . . . 5
1. 5 Overview of final program . . . . . . . . . . . . . . . . . . 7
2.0 Initial specifications . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2. 1 Initial functional specification . . . . . . . . . . . 8
2. 2 Choice of hardware . . . . . . . . . . . . . . . . . . . . . . . . 10
2. 3 Choice of operating system . . . . . . . . . . . . . . . . 10
2.4 High speed driver . . . . . . . . . . . . . . . . . . . . . . . . . 10
2. 5 Choice of software . . . . . . . . . . . . . . . . . . . . . . . . 11
3. 0 Phase One . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.1 Design ObJectives of Phase One . . . . . . . . . . . . 12
3. 2 Functional specification
3. 3 Program d e s i g n
(Phase One) ...... 13
<Ph as e On e > . . . . . . . . . . . . . • . . 14
3.3. 1 Two parsers . . . . . . . . . . . . . . . . . . . . . . . . 14
3. 3. 2 Directory approach . . . . . . . . . . . . . .
iv
~
.. 15
3.3.3 Display program,
3. 3. 4 I I 0 p r o g ram,
Displa.mac . . . . . . . . 15
I o tap e . rna c . . . . . . . . . . . . 16
4. 0 Phase Two . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.1 Functional specifications <Phase Two) ..... 17
4. 2 Program design (Phase Two) . . . . . . . . . . . . . . . . 18
4. 2. 1 Quick update <Poke) procedures ..... 19
4.2.2 I/0 PROGRAM,
Extreg.mac . . . . . . . . . . . . 19
4. 2. 3 Expansion o-F loop command . . . . . . . . . . 19
4.2. 4 Data compare
techni~ue
. . . . . . . . . . . . . 20
5. 0 Phase Three . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5. 1 Functional specifications . . . . . . . . . . . . . . . . . 20
5. 2 Program design <Phase Three) . . . . . . . . . . . . . . 21
5.2.1 Printer program,
Prinit.mac . . . . . . . . 21
5.2.2 Testing multiple drives . . . . . . . . . . . . 24
6. 0 Future plans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
6. 1 Faster C. P. U.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
6.2 Add a multiplexer . . . . . . . . . . . . . . . . . . . . . . . . . 31
6.3 Add a remote monitor . . . . . . . . . . . . . . . . . . . . . . 31
7. 0 Conclusions and discussion . . . . . . . . . . . . . . . . . . . . . 32
8. 0 Re-Ferences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
v
APPENDIX A.
1.0 Details of the driver design . . . . . . . . . . . . . . . . . . 34
1.1 Restraints relative to data compare . . . . . . 34
1.2 Some possible solutions . . . . . . . . . . . . . . . . . . 35
1. 3 The solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
1. 4 Further problems . . . . . . . . . . . . . . . . . . . . . . . . . 38
1. 4. 1 Error flagged,
but no error
observed . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
1.4.2 DEC/DEC reverse compare problem ... 41
2. 0 D. M.A.
measurments . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.0 Overhead evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4. 0 Bus loading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.0 Repositioning mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6. 0 Two millisecond window . . . . . . . . . . . . . . . . . . . . . . . . 54
vi
APPEND I X B.
Appendix B contains selected partial
the
various
program
modules
that
listings
constitute
OT
the
streaming tape tester software package.
SUBJECT
PAGE
Main control section of Stream. pas . . . . . . . . . . . . . . . . . 57
Part of the in-line code of Tapeio. mac . . . . . . . . . . . . . 59
Er·ror code listing of Prinit. mac . . . . . . . . . . . . . . . . . . . 78
I o tap e. mac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Ex treg. mac·
. . . . . . . . . . . . . . . •.• . . . . . . . . . . . . . . . . . . . . . 80
vii
LIST OF FIGURES
Figure
PAGE
1
Block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2
Typical display showing parameter
lists and prompts ........................ 25
3
Typical display showing a parameter
choice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4
Typical display showing menu OT
operators test sequence commands ........ 27
5
Typical display showing summary table ..... 28
6
Typical display showing error output ...... 29
7
Printer output showing reported
com p are error . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
8
Ty p i c a 1 r e c or d . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
9
Read bUTTer showing DEC/DEC reverse
compare problem . . . . . . . . . . . . . . . . . . . . . . . . . 43
10
Data and clock relationship ............... 48
11
Head geometry and interrecord gap ......... 55
viii
ABSTRACT
TEST SYSTEM FOR A
STREAMING MAGNETIC TAPE DRIVE
by
John Gamlyn
Master of Science in Computer Science
This report covers the design and development of a
diagnostic
test
system
for a streaming magnetic tape
machine manufactured by Pertec Computer
streaming
magnetic
tape
machine
company.
represents
The
a
approach to recording in the field of tape storage.
the
name
implies,.
it
was
designed
continuous stream of data instead of
short
bursts.
development of
phases.
The
a
'Bottom
report
test
in
accept
a
conventional
the
three
As
design and
consecutive
up' design programming technique was
incorporated in all three phases.
is
the
outlines
system
to
new
'Bottom
up'
design
an evolutionary process which initially encompasses
primitive elements
basic
program
including
initial
specifications,
definitions and minimimal hardware.
the system design
progresses
expand
integration of further primitives to
with
the
the
primitive
As
evolve into a final sophisticated system.
i
X
elements
The
proJect
specifications
package.
and
includes
writing
~unctional
the
designing the test system software
Associated tasks include the determination
o~
the host computer requirements and the design of a high
speed input/output driver as an intregal
part
of
the
test system.
This test system, as
used
o~
September 1983,
has
been
successfully on the streaming magnetic tape drive
production line at Pertec.
X
1.0
INTRODUCTION.
The streaming magnetic tape drive is a new product
which
techni~ue
utilizes a new
be maintained at a steady rate,
to
stop
and
start
as
in
development
of
a
new
construction of suitable
streaming
transfer,
re~uiring
it
case of conventional
A task associated·
with
product is the design and
test
e~uipment.
Since
the
tape drive incorporates new concepts of data
new methods of testing had to
re~uirements
These
instead· of
the
magnetic tape storage systems.
the
to allow tape motion to
were
be
developed.
satisfied by the design of a
new test system with a high speed input/output driver.
A driver functions as
device
controller
and
an
interface
the host.
betw~en
An intelligent high
speed driver performs many of the functions that
otherwise be passed to the host.
function calls,
time
consuming
the
would
By intercepting these
it was possible to'reduce the amount of
overhead
(handshaking
passing> to a minimum.
1
and
~essage
2
1. 1 EXISTING TEST SYSTEMS AND PROGRAMS.
Before proceeding to design a new test system
and
write the associated test software a survey was made to
determine if a suitable system already
existing
software
could
be
modified.
systems were found to be deficient in
the
software
was
found
existed
or
if
All existing
performance
and
to be too slow to stream the
tape drive.
The 'slowness' was caused by the
access
to
the
tape
controller,
functions as console
update,
overhead
with
associated
tape drive commands.
nature
I
task
relatively
compounded
pattern
slow
by such
generation
and
the issuance of the various
Unfortunately due to the integral
of these programs it was considered a difficult
to
rewrite
operations.
the
programs
to
speedup
Therefore a new test system was
these
re~uired.
1.2 STREAMING TAPE DRIVE
A normal non-streaming drive,
number
of
forward
speeds
magnetic recording
discrete
lengths
heads.
to
in
The
has
a
move the tape over the
The
data
called records.
constituting a file.
general
records
is
written
in
A number of records
are
seperated
by
3
interrecord
tape,
gaps
These are short lengths of
<I.R.G>.
usually 0. 6 inches long,
that do not contain
any
data.
A normal non-streaming drive can be
full
speed,
come
to
traveling
a complete stop, and accelerate
back to full speed <in some cases in either
within
at
the gap width.
direction)
To accelerate up to high speeds
within the short gap width
re~uires
large and expensive
servo motors with high power electronics to drive them.
The stresses on the tape due to the
demand
complicated
smoothly through
mechanisms
its
path.
The
high
to
acceleration
guide
new
the
method
tape
called
Streaming is designed to overcome these difficulties.
In the Streaming Tape Drive no attempt is made
stop
or
start
the
tape
within the interrecord gap.
Instead the drive is designed to
tape
to
maintain
a
constant
velocity as the tape travels through record after
record.
This is referred to as streaming as opposed to
the stepping action of a regular tape drive.
1.2. 1 RE-INSTRUCT TIME.
In
order
controller
and
to
maintain
streaming,
the
hardware
its associated software driver must be
4
able to control the associated functions within
by
the
two
This two millisecond window is
millisecond time limit.
determined
a
length
of
the
interrecord
gap
< I . R. G. > and t h e rate at wh i c h t h e mag net i c tap e passe s
over t h e r e c or d in g h e ad s .
T h e norma 1
inches
the
would
pass
over
millisecs
at
100
inches
geometry
of
the
magnetic
necessary
to
re-instruct
milliseconds.
time.
This
I. R. G.
read/write
per
second.
recording
the
in
heads
Due
0. b
in b
to
heads,
drive
it
within
the
is
2.0
is referred to as the re-instruct
The two millisecond reinstruct
discussed
of
greater
detail
time
in appendix
window
is
'A' section
6. 0.
1.3 DIAGNOSTIC PROGRAM.
In general a tape drive responds to a set of basic
commands including 'write forward',
forward'.
written
In a typical action seq,uence,
onto
the
magnetic
computer as a block of data.
length
of
magnetic
is presented by the
The starting address
The Tape Controller
tape
drive
Formatter determines the
controls
tape
the data to be
and
this block are loaded into registers in the
Tape Controller.
the
'rewind', and 'read
the
through
interrecord
communicates
a
Formatter.
gap
width,
to
The
and
data transfer to and from the tape drive
5
electronics.
A diagnostic test program is used to exercise
the
tape
drive
designed to search
commands.
~or
all
It generates test patterns
errors in the recorded data.
It
also contains procedures to test the mechanical aspects
of the system to determine if abnormal operations
such
as 'record creep' are encountered during recording.
1.4 THREE DEVELOPMENT PHASES.
The new test system was designed in three
phases.
The specific obJectives of each phase were:
Phase One:
Determine the choice of hardware.
Design
o~
the basic software framework.
Test the system using a few basic tape commands.
Phase Two:
Add the
~ull
range of tape commands.
Extend the software framework and include
modifications determined
~rom
Phase One
test results.
Release
temporary
versions
obtain user comments.
to
engineering
and
6
Phase Three:
Complete the test program.
Release the first
version
to
preproduction
for
evaluation.
Modify the
program
to
conform
with
the
final
manufacturing requirements.
The general obJectives of the three phases were:.
Determination of the functional specifications for
each phase.
Design the software to perform these functions.
Procure and modify hardware as required.
Test and make corrections in hardware and software
design.
Revaluate
and
modifiy
software
specifications where necessary.
functional
7
1. 5 OVERVIEW OF THE FINAL PROGRAM.
The
final
step-by-step
the test.
a
set
test
program
procedures
was
written
with
to guide the operator running
The operator is initially prompted to select
of
seven
tape
parameters.
with
each of the
parameters displayed with its individual menu.
Figure
3 shows the choic·e of the data patterns parameter.
test program then continues to prompt the
input a test-sequence.
displayed.
and menu.
The
test-sequence
and
test-sequence
request
instructions.
table,
constructs
Figure 4 shows a typical test-sequence
test-sequence
software
complex
may
include
packages
parameter software packages.
to
to
A menu of twentyfour choices of
primitive tape commands
are
operator
The
and
prewritten
prewritten
This allows the
test
The test program
routines
has
a
operator
using
single
master
action
as shown in Figure 5 that guides the operator to
perform selective functions such as
test-sequence'.
'repeat
the
last
2.0 INITIAL SPECIFICATIONS
The initial specifications were a tentative effort
to
satisfy
both
the
conditions imposed
The
engineering
by
engineering
the
directives and the
manufacturing
department
tended
department.
to minimize costs
associated with the design of the test system while the
manufacturing
department
was
concerned
with
the
production costs associated with testing the product.
2. 1 INITIAL FUNCTIONAL SPECIFICATIONS
After a considerable amount of discussion with all
concerned
the
following
functional
initial
specifications were established:
1.
The program had to be simple to
was
intended
to
be
used
operate.
by
It
production
technicians, with minimal JOb training.
2.
The program had to contain a selection of tape
diagnostic
tests
and allow for the insertion
of a number of new tests at a later date.
8
9
3.
A
qui c k
ensures
test
t~at
was
r e q u ired.
a
test
all the tape drives to be tested
are functionaL
and
are
connected
before the start of a long test.
4.
Suc h
Generate test reports.
correctly
10
2.2 CHOICE OF HARDWARE.
With minor
additions,
system
it
was
possible
with
hardware
the
to
new
existing
test
programs.
The existing hardware consisted of a
L. S. I. -11
minicomputer,
a
and two eight inch double
The
additional
built-in console,
sided
floppy
use
test
Comark
keyboard
disk
drives.
hardware consisted of a modified Dilog
tape drive controller, an extension
register
assembly
and a printer.
2.3 CHOICE OF OPERATING SYSTEM
The RSX-11M operating system was chosen
because
of
its
multiprocessing
several tests and
several
users
primarily
capability to handle
at
the
same
time.
Pertec was also licensed to use this operating system.
2. 4 HIGH SPEED DRIVER
The maJor goal in designing a dedicated driver was
that
of speed.
The driver when interfaced to
controller and its associated control
section
~he
tape
of
the
diagnostic program had to be able to verify the longest
·data record,
command
check
request,
error
and
flags,
interpret
the
next
issue the next tape command all
11
within
two
exceeded
milliseconds.
the
drive
If
cannot
this
time
stream
Details of the design of this driver
window
data
are
is
properly.
included
in
appendix A.
Assembly language was choosen
driver
because
for
the
dedicated
it satisfied the requirements for fast
operation, with the ability to fine tune
the
code
in
critical areas.
2. 5 CHOICE OF SOFTWARE.
The possible choices of a high level language were
constrained to the selection available on the companies
computer.
Pascal
These included Basic,
Fortran
and
Pascal.
was chosen because of its highly structured and
self documenting qualities.
3. 0 PHASE ONE.
Phase One created the initial framework upon which
all
further
phases
was designed with the
expanded.
This
were built.
Each program element
expectation
included
parameter-passing routines,
that
all
it
would
the
be
various.
lists, and tables.
3. 1 DESIGN OBJECTIVES OF PHASE ONE.
The design obJectives of Phase One were:
1.
Determine that the hardware was functional.
2.
Design a simple
software
framework
allowing
for expansion and extension in future phases.
3.
Design and check the
basic
dedicated
driver
concepts.
4.
Specify the basic
console
interface
and determine the display format.
12
program
13
5.
Design the master program structure.
3. 2 FUNCTION SPECIFICATIONS,
<Phase One>.
Functional requirements included:
Write records 1 to 4095.
Rewind to beginning of tape.
Read and compare records 1 to 4095.
Loop on current test sequence 1 to 4095 times.
The operator options consist of:
1.
High and low tape speed modes.
A
choice
<i. p. s. >
i . p . s.
2.
of
100
inches
per
at 1600 bits per inch (b. p. i.
or 25
a t 1600 b . p . i .
Choice of rec cir d 1 eng th s of 32, 64,
512,
second
1024, 2048, 4096 bytes.
128,
256,
14
3. 3 PROGRAM DESIGN,
<Phase One>.
The test program
was
subprograms.
seperate
The
through
number
slave
o~
language.
the
Fortran
subprograms
parameters.
data,
The test
be expandable,
written
program
in
assembly
and downloads all
traf~ic
se~uence
~or
of
called
This master
including
allowing
number
type procedure calls to a
Stream. pas directs
necessary
a
program
main
Stream. pas was written in Pascal.
interacted
as
designed
the
tape
drive
tables were designed to
~uture
anticipated
growth
in phases two and three.
3.3. 1 TWO PARSERS.
The
parsers,
master
program
one
the tape parameters and the other for
~or
the operator test
data
checking
~or
se~uence.
Stream. pas
A
contains
parser
examines
two
input
legal composition and structure.
parses the correct data and outputs error
messages
It
to
the operator when the data is incorrect.
The Parameter
which
is
passed
parser
to
occures at the start
the
o~
builds
a
Tapeio.mac
parameter
table
program.
This
a maJor test or at any time the
15
tape parameters are changed.
The operators test sequence parser is organized to
allow
the
operator
to
type directly to the console.
The console displays the test
and
any
sequence
associated operator 1 s prompts.
being
entered
If the parser
detects an error it automatically backspaces the cursor
to
the
start
of the error word,
and displays through
Displa.mac a message asking the operator to retype that
command.
3.3.2 DIRECTORY APPROACH.
A directory approach
is
used
by
Stream. pas
to
address various messages stored in the display program.
The directory is a table containing the start addresses
of
all the messages.
A corresponding index was set up
in the calling program Stream. pas to allow easy
and
update of the messages.
access
Figures 2 thru 6 show the
various console display formats.
3.3.3 DISPLAY PROGRAM, DISPLA.MAC.
A display program Displa.mac is designed to
·together
group
all of the various messages and displays used
by the console.
It is written in assembly language
in
16
order
to
make
it easy to enter or modify the various
console display commands.
consists
of
The main body of the program
the directory driven message list that is
accessed from Stream. pas.
The program also contains
number
that
can
functions
as
perform
of
Macro's
such
be
called
a
directly to
clear-the-screen
and
display-tape-parameters.
3.3.4 I/0 PROGRAM,
IOTAPE.MAC.
The I/0 (input/output> program
Iotape.mac
is
an
interface program which is loaded into the computer I/0
memory.
This
linker
program
allows
the
program
Tapeio.mac to interface with the registers of the Dilog
tape controller.
4. 0 PHASE TWO.
In this phase,
expanded
the
framework
of
Phase
One
was
by increasing the size of the various tables,
increasing
the
number
of
interface
registers
and
accommadating new functions.
4. 1 FUNCTIONAL SPECIFICATIONS <Phase Two>.
The requirements for Phase Two were:
1.
Add a
switch
special
from
density
1600
selection
option
to
'default' to 3200 bits per
inch (b.p.i.>.
2.
Implement
an
additional
14
tape
action
commands.
3.
Add a loop command to allow
the
operator
establish test loops in the test sequence.
17
to
18
4.
Add the following items to the tape
parameter
selection table:
An end-of-tape handler.
An end-of-tape action select.
A pseudo end-of-tape generator.
5.
Add a variable length
allows
the
record
operator
option.
three
This
choices,
increment/decrement,
increment/increment
decrement/decrement
of
consecutive
or
record
lengths.
6.
Extend the summary list and add a scroll
and
wrap around feature to the summary table.
4. 2 PROGRAM DESIGN,
The subprograms
master
<Phase Two>.
Tapeio.mac,
Displa.mac
and
the
program Stream. pas were expanded to satisfy the
requirements added to Phase Two.
19
4. 2. 1 QUICK UPDATE <POKE> PROCEDURES.
Poke procedures were added to Tapeio. mac to
a
direct,
quick,
access
to update the current drive
status messages on the console display.
'the
current
status'
tape drive selected',
and
rewinding,
'the
off-line
allow
current
'its write protect
action
drive
active'.
These included
such
as
These are shown in the
upper right hand space of Figures 5 and 6.
4. 2.2 I/0 PROGRAM, EXTREG.MAC.
An
written
input/outut
to
allow
page
access
program
<Extreg. mac)
to the extension registers.
This program allows direct communication with the
registers
located
on
was
the
M.D. B.
circuit
four
board
assembly.
These extra registers are
with
the
connected
in
parallel
Dilog controller and allow implementation of
tape commands
that
are
not
available
through
that
operators
test
controller.
4. 2.3 EXPANSION OF THE LOOP COMMAND.
The
loop
command
used
in
the
20
se~uence
was expanded from the simple 'loop to start of
operators test
It
se~uence'
to 'loop to any
instruction'.
was also made to handle special condition utilities
such as End-of-tape and Tape-error-actions
while
encountered
the test program is executing the operators test
se~uence.
4.2.4 DATA COMPARE TECHNIQUE.
The
advantage
data
of
access <D.M.A. >
compare
the
to
feature
was
added
to
take
intervals between the direct memory
perform
an
'on-the-fly'
operation as the data is read into the buffer.
compare
5. 0 PHASE THREE.
Phase
development
user
Three
phase.
evaluation
accomplished
represents
by
the
;inal
design
and
Particular attention was given to
and
the
on-the-Job
testing.
continual
manufacturing and testing allowing
tailored to satisfy the user's
This
feedback
the
design
was
between
to
be
re~uirements.
5. 1 FUNCTIONAL SPECIFICATIONS.
The functional speci;ications for Phase Three are:
1.
Add predetermined test lists.
These are lists of test commands that the
operator
can
call
using
a
simple
inserted into the operators test
2.
Add a printer.
3.
Improve
the
operator
21
command
sequenc~.
error
handling
22
capability.
4.
Implement various error tracking
and
storage
methods.
5.2 PROGRAM DESIGN.
The test programs were
Phase
Three
functional
extended
to
requirements.
include
the
Figure 1 shows
the overall test program organization.
5.2. 1 PRINTER PROGRAM, PRINIT. MAC.
A new program Prinit.mac was written to
with
the
printer.
maJor parts.
This
program
interface
consisted of three
The first two parts printed a list of the
current tape parameters and a list of the summary table
respectivly.
individual
The
third
error messages.
is passed to the particular
pointer
part
is
used
to
·output
In this case an error-code
subprogram
to the summary table.
along
with
a
An example of a printer
error messages is shown in Figure 7.
23
I
I
I
I TABENT<1 ARO> 11
1---------------->1
I
I
I
I
I
I
I
SUHARV<TABLE> 11
I
. I
I
I
I
1<----------------1
I
I
I
STATUS<TABLE>
I
I<---> I IOTAPE
I
I
I
I
I
I
11TAPEIO.HAC~
1<----------------;
1
I TSETUP<TABLE> 11
1---------------->1
i
DILOO
CONTROLLER
I
I
I
I
I
STRTST<NO ARG> 1
1---------------->
11I
I
I
1<---->IEXTREO 21
I
I
I
ERRORF<1 ARG) 2
1<---------------: CLRSUM<NO ARGl 3
1---------------->
: SAVPAM<TABLEl 3
1---------------->
The numbers 1 thru 3
: GETPAM<TABLE> 3
represent the phases
1<---------------: INITAL<NO ARGl 3
in which that feature
1---------------->t
I
was introduced.
POKE CALLS 2
____\;!____ _
:WRTCRT<ONE ARGl 11
1---------------->1
I
•
IDISPLA.MACI
; DISTAT<TABLE> 11
1
1----->
1
1---------------->1
I STREAM. PAS I
I
1
I DISPAR<TABLE> 11
C. R. T.
DISPLAY
1---------------->l
I
I
PRNSUM<TABLEl 31
1---------------->:I
I . PRNPAM(TABLEl 31
1---------------->1
1----->
•
IPRINIT.MACI
, PRNERR<1 ARG
3
,
AND TABLE> 3 I
PRINTER
3
:--------------~->1
I
'
i<----------------
~EV
BOARD
Block diagram.
Figure 1.
24
5.2.2 TESTING MULTIPLE DRIVES.
At the operators option,
tested in the test sequence.
four tape drives
the
selected
programmed
to
drives.
display
The
test
the
current
This is
at
sub-test
sequence.
completion
anywhere
in
The individual summary tables track
summary table at any time.
the
be
The operator may call for
the selection or reselection of any drive
the test sequence.
can
of
a
sequence
may
contents
usually
within
be
of any
requested
the
test
The summary is also displayed and printed at
the completion of a test.
STREAMING TAPE DRIVE TESTER
==~======================~============-===============================
1. RECORD LENGTH 4096 BYTES
2. 100 IPS AT 1600 BPI
3. WALKING ONE DATA PATTERN
4. FULL READ DATA COMPARE
TEST PROG: PAR 1 SEL 0
5. NO REWIND AT E. 0. T.
6. NO PSEUDO E. 0. T.
7. ERROR LIMIT = ON
======================================================================
MESSAGE>>
ENTER 1 - 7 TO CHANGE PARAM.
OR 99 WHEN FINISHED
==~===================================================================
TO ENTER A COMMAND: TYPE THE COMMAND FOLLOWED BY A CARRIAGE RETURN
TO CHANGE ANY PARAMETER LISTED ABOVE TYPE ITS NUMBER
WHEN All PARAMETER CHANGES ARE COMPLETED TYPE 99
Typical display showing parameter
list and prompts.
Figure 2.
I'V
\Jl
STREAMING TAPE DRIVE TESTER
======================================~===============================
5. NO REWIND AT E.O. T.
6. NO PSEUDO E.O. T.
7. ERROR LIMIT = ON
1. RECORD LENGTH 4096 BYTES
2. 100 IPS AT 1600 BPI
3. WALKING ONE DATA PATTERN
4. FULL READ DATA COMPARE
TEST PROG: PAR 1 SEL 0
==========================-===========================================
MESSAGE.>>
ENTER APPROPIATE LETTER TO CHANGE PARAMETER
==~======================~============================================
TO ENTER A COMMAND: TYPE THE COMMAND FOLLOWED BY A CARRIAGE RETURN
TO CHANGE ANY PARAMETER LISTED ABOVE TYPE ITS NUMBER
WHEN ALL PARAMETER CHANGES ARE COMPLETED TYPE 99
DATA PATTERN: A
E = 00010001, F
= 11111111,
= 11101110,
B
G
= 00000000,
= RANDOM,
C
H
= 00110011, D = 01010101
= WALKING 1, I = WALKING
0
Typical display showing a parameter choice.
Figure 3.
I'V
O"l
""
STREAMING TAPE DRXVE TESTER
==!===================================:=====~=========================
1. RECORD LENGTH 4096 BYTES
5. NO REWIND AT E.O. T.
6. NO PSEUDO E. 0. T.
2. 100 IPS AT 1600 BPI
3. WALKING ONE DATA PATTERN
7. ERROR LIMIT = 'ON'
4. FULL READ DATA COMPARE
TEST PROG: PAR 1 SEL 0 REW WFD 500 RRV 200 RFD 200 LUP 4 5 TST 1 2
REW WFD 1000 G
==========================~===========================================
M~SSAGE
>> ENTER THREE LETTER INSTRUCTION OR G FOR GO
==-===========================================================~=======
TO ENTER A COMMAND: TYPE THE COMMMAND FOLLOWED BY A CARRIAGE RETURN
WFO
WFX
RRE
SRV
SCE
DLY
PAR
SFI
SFR
<WRITE FORWARD>
WFE <WRITE FRO EDIT> WFM <WRITE FILE MARK>
<WRITE EXT IRG>
RFD <READ FORWARD > RRV <READ REVERSE
)
<READ REV EDIT>
REW <REWIND TAPE
> SFD <SP.ACE FORWARD
>
<SPACE REVERSE>
LUP <LOOP COMt1AND > OFL <OFF LINE
.)
<SECURITY ERASE) VLE <VAR LGTH !ERASE> FLE <FIXED LGTH ERASE>
<TIME DELAY>
TST <PREPACKAGIE TEST> SEL <SELECT UNIT>
<PREPACKAGE PARAM. SELECT>
SUM <PRINT/SAVE/CLEAR SUMMARY>
<SEARCH FWD FMK, IGNORE DATA> SRI <SEARCH REV FMK, IGNORE DATA>
<SEARCH FWD FMK, READ DATA > SRR <SEARCH REV FMK, READ DATA >
Typical display showing the menu of
operators test sequence commands.
Figure 4.
N
"'--
STREAMING TAPE DRIVE TESTER
==-=======:===============~===========~==============:================
1. RECORD LENGTH 4096 BYTES
5. NO REWIND AT E. 0. T.
UNIT SELECT 0
2. 100 IPS AT 1600 BPI
6. NO PSEUDO E.O. T.
3. WALKING ONE DATA PATTERN
7. ERROR LIMIT = 'ON'
4. FULL READ DATA COMPARE
WRITE ENABLED
TEST PROG: PAR 1 SEL 0 REW WFD 500 RRV 200 RFD 200 LUP 4 5 TST 1 2
REW WFD 1000 G
=:========================~===========~===============================
M£SSAGE>>
ENTER LETTER SELECTED FROM ACTION TABLE BELOW
==========================~===========================================
SUMMARY
FORMATTER REPORTED HER
5
RECORDS WRITTEN 2000
RECORDS READ FWD 5000
FORMATTER REPORTED CER 25
RECORDS READ REV 5000
FWD DATA COMPARE ERRORS 0
TOTAL REWINDS
25
REV DATA COMPARE ERRORS 5
ACTION TABLE: A = START OVER, P = CHNG PARAMETERS,
R = REPEAT TEST, E = ROLL ERROR LIST,
PR ERRORS 2
TR ERRORS 6
PW ERRORS 0
TW ERRORS 3
T = CHNG TEST
M = MAG TAPE REG
X = EXIT PROGRAM
Typical display showing summary table.
Figure 5.
N
00
STREAMING TAPE DRIVE TESTER
==-=======================:===========================================
5. NO REWIND AT E. 0. T.
1. RECORD LENGTH 4096 BYTES
UNIT SELECT 0
2. 100 IPS AT 1600 BPI
6. NO PSEUDO E. 0. T.
3. WALKING ONE DATA PATTERN
7. ERROR LIMIT = 'ON'
4. FULL READ DATA COMPARE
WRITE ENABLED
TEST PROG: PAR 1 SEL 0 REW WFD 500 RRV 200 RFD 200 LUP 4 5 TST 1 2
REW WFD 1000 G
======================================~===============================
MESSAGE>>
ENTER LETTER SELECTED FROM ACTION TABLE BELOW
==~======================~~=======-====-=======================:=======
SUMMARY
RECORD NUMBER 500
ERROR BYTE 4000
SHOULD BE
ERROR WORD
17733
PRECEDING
FOLLOWING
17733
17733
177
ACTION TABLE: A
R
= START OVER,
= REPEAT TEST,
P = CHNG PARAMETERS,
E = ROLL ERROR LIST,
T = CHNG TEST
M = MAG TAPE REG
X = EXIT PROGRAM
Typical display showing error output.
Figure 6.
I-V
1.0
RFD
RECORD NUMBER
= 10
=0
ATTEMPTED RETRYS
DATA COMPARE ERROR
ERROR RECORD NUMBER
ERROR BYTE NUMBER
10
DATA WAS
SHOULD BE
00001010
00000000
00101011
00110001
00110101
11110100
11000100
00101001
00001010
00000000
11111111
11111111
11111111
11111111
11111111
11111111
2 ND
1 ST
BYTE
BYTE
1 ST
2 ND
3 RD
4 TH
2
BYTE BEFORE ERROR
II
II
II
TWO OF ERROR BYTE
ONE
BYTE AFTER ERROR
II
II
II
II
II
II
II
II
II
II
II
II
Printer output showing reported
compare error ..
Figure 7.
\J,j
0
6. 0 FUTURE PLANS.
This test program is designed to accomodate future
expansion.
The
following
sections
outline
some of
these possibilities.
6. 1 FASTER C. P. U.
The use of a faster
accommodated
to
C.P.U.
and
memory
can
be
obtain a shorter test time or to test
future higher density tape drives.
6. 2 ADD A MULTIPLEXER.
This is a hardware device which can
allow
an
be
added
to
operator to attach and detach Streaming tape
drives while other drives are currently being tested.
· 6.3 ADD A REMOTE MONITOR.
A
remote
operator
to
monitor
can
be
added
to
allow
track a number of different test systems.
It would convey such information as drive number,
performed,
the
date and the test resu 1 t.
31
test
7.0 CONCLUSIONS AND DISCUSSIONS.
This
test
successfully,
system
has
the
past
friendliness of the system has
time
specification
functioning
testing streaming tape drives produced in
a production line for
More
been
spent
would
The author will in
on
have
future
functional
specifications
department
managers
for
year.
The
been praised.
fre~uently
the
functional
initial
saved
operator
considerable rework.
generate
and
to
of
each
their
supply
the
approvals
full
effected
prior
to
starting a design phase.
A hardware approach to the 'data compare function'
would
have
been advantageous.
Instead of transfering
each record between the tape controller
program
and
the
test
for software data compare, a suitable hardware
buffer and compare
logic
could
utilized.
have
necesscesity
been
of
compare function,
the
located
This
interleaved
at
the
would
D.M.A.
controller
avoid
and·
the
data
which limits the speed of the present
system.
32
8. 0 REFERENCES.
1.
RSX-11M/M-PLUS,
diagnostics
chapter
Corp.,
2.
reference
11.
Maynard,
mode
manual,
Digital Equipment
Massachusetts.
Micro Processor Interface
Digital
Equipment
Massachusetts,
3.
User
Micro Computer
Digital
33
Maynard,
1980.
Process or
Equipment
Massachusetts,
Corp.,
Handbook.
Corp.,
1979-1980.
Handbook,
Maynard.
APPENDIX A
1. 0 DETAILS OF DRIVER DESIGN.
The initial attempt <Phase One) was to
data
compare
while
This was unsuccessful.
compare
method
'wait-until-D. M.A. -finished'
approach, which resulted
task
two
of
performing
millisecond
interleaving
the
a
data was being read into the data
buffer from the drive.
The data
perform
was
and
in
the
changed
from
the
'tape-drive-ready'
extremely
difficult
the total data compare within the
window,
to
data
a
compare
new
approach
with
the
of
D. M.A.
operation.
1. 1 RESTRAINTS RELATIVE TO DATA COMPARE.
The test system must be able to detect the error and to
start
an
error
handling
advanced to the next record.
able
to
routine
before
The test system
report which byte is in error and
error and corrected bytes.
34
the
drive
must
be
dis~lay
the
35
1.2 SOME POSSIBLE SOLUTIONS:
1.
Use a checksum.
simple
This.can be implemented by
software addition routine or by adding
a hardware register to
If
a
error
an
create
found,
is
the
the
checksum.
drive
temporarily pause while the error handling
can
is
performed.
A checksum consists of the total count of
all
the
binary
one's or zero's in a record.
This value is usually appended to
itself.
the
record
By recounting the appropiate bits and
comparing
this
count
with
the
original
checksum an error can be detected.
There are a number of problems with
approach:
First,
up all errors.
clear
the
is read.
this
the checksum will not pick
Second,
it
is
desirable
to
read buffer before the next record
This approach
req,uires
savi-ng
the
contents of the read buffer until the checksum
can be compared.
If
the
checksum
indicates
that an error exists then the read buffer must
be examined to find the error.
36
2.
Compare data one
one:
Apart
record
from
buffer <to keep
added
time
requiring
the
last
complications
tracking,
behind
an
of
present
extra
record)
read
with
addressing
this violates the
operation.
the
concept
the
and
of
real
The error must be flagged as
it occures. not some time later.
3.
A further suggestion was that of
tape
controllers
byte
direct-memory-access
bursts.
register.
A
<D.M.A. >
occures
in
allowing the active task to perform a
these
bursts.
the periods between the bursts to monitor
the byte counter and to track
data
the
count
number of instructions between
Use
polling
transferred
to
the
the
read
amount
buffer.
of
An
algorithm could be devised to compare the data
transferred in each D.M.A.
There is a potential
approach.
The
burst.
problem
controller
with
has
i~s
microprocessor and could independently
the
count
in
the
this
own
adJust
byte counter at any time.
The controller guarantees only that
the
byte
count will be stable when the controller flags
37
its 'ready' state.
the
active
task
To implement
is
this
method
to access this
re~uired
count prior to the controller
'ready'
state.
It has no way of knowing when the byte counter
is stable and
will
conse~uently
attempt
to
read the counter while it is being changed.
1. 3 THE SOLUTION.
The
author
intervals
solved
between
the
this
problem
by
direct-memory-access
transfers to perform the data compare.
transfer
has
been
window started,
been
mostly
When
the
<D.M.A.)
a
record
completed, and the two millisecond
the data in the read buffer has already
compared.
The program then compares the
remaining small segment of the data
necessary
using
housekeeping
prior
to
and
performs
the
the end of the time
critical window.
To accomplish this task it was necessary to ensure
that
the
data compare always lagged the data transfer
into the read buffer.
buffer
possible
To facilitate tracking. the read
is filled with a
because
the
uni~ue
code.
test
predetermined by the test program.
data
A
uni~ue
code is
patterns
are
38
By
monitoring
compare-algorithm
this
unique
the
the
is able to track the progress of new
data entering the read buffer.
over
code
unique
code
The new data is written
obliterating
it.
The
compare-algorithm looks ahead eight bytes at a time and
as
soon
as
the next eight bytes contains new data, a
data compare is performed.
compare
was
chosen
An
eight
because
it
byte
allowed
efficient use of code, and evenly divided
record
lengths.
Section
2.0
data
the
any
examines
relationships of interleaved D.M. A.
block
most
of
the
of
the
timing
compare
and
the choice of an optimum compare block size.
1. 4 FURTHER PROBLEMS.
The
following
two
sections
outline
typical
problems and solutions associated with the data compare
tee hn i que.
1.4. 1 ERROR FLAGGED, BUT NO ERROR OBSERVED.
At 25 inches per second every now and then a
compare
error
was
flagged.
error data was listed,
of
data
However when the actual
<the program lists
eight
bytes
error data and eight bytes of 'should be' data), no
39
errors were seen.
·What was going on?
The problem
was
that the records were never completely compared.
A
four
word
responsible
for
insertion
the
compare-algorithm
the
next
was
data and generating a
record.
The
uni~ue
code
had to be performed by this algorithm due to
the time
constraint
the
When
block
comparing
code for
uni~ue
data
of
the
end-of-record
two-millisecond
was
detected,
algorithm compared and inserted
uni~ue
the
code
window.
compare
into
two
more blocks of data and then exited.
The record length compared
between
the
O.M.A.
during
cycles
depends
asynchronous relationships involved.
pass
through
length
of
the
contain
buffer
pass.
code.
uni~ue
compare-algorithm
If
was
than
it.
to
understand
current
previous
Then the extra length did not
In
that
case
not checked by
the
uni~ue
new
advancing
code.
It
data
and
it compared favorably except for the
number at byte zero.
in Figure 8.
the
the
As each record was identical except for
the record number,
record
upon
the
observed old data, which it assumed was
compared.
intervals
compare-algorithm compared a longer
read
compare-algorithm
the
A typical record is shown
The record number error was
when
fairly
easy
reading in the reverse direction.
40
The record number being the last item and as
such
may
However the problem occured in
not always be compared.
both directions.
record I
number I
> :>
< <
data
data
Typical record.
Figure 8.
The author
hypothesized
forward data transfer case.
had
advanced
ahead
of
the
following
for
the
The data compare-algorithm
D.M.A.
the
transfer.
In
practice, not all the data was compared due to the time
limitation.
that
When the drive flagged 'ready'
D.M. A was
the
completed
would exit . . This left a
buffer
without
the
written
the compare-algorithm
small
portion
unique
consequtive record is read
indicating
data
from
the
of
the
pat te,rn.
tape
drive
read
Each
and
over the previously xxx Some records later the
compare algorithm
catches
up
with
the
D. M.A.,
and
looking ahead sees this old data, and advances ahead of
the D. M.A ..
old
data,
The compare-algorithm
which
being identical
replaces
it
is
except
continues
the same as the new,
for
the
with the unique code.
record
checking
each record
number,
But the D.M.A.
and
is
41
now behind the compare-algorithm writing new data
the
unique
code.
This action is progressive allowing
the compare to skip over the D.M. A.
for
consecutive
over
record
sooner and
compares.
sooner
Eventually
the
compare is able to compare the first word of the record
containing
the
old
record
number.
At this point an
error is flagged.
The problem was solved by extending the extra data
compare
that
is allowed after the 'ready' flag within
the two millisecond window.
is
altered
according
to
This extended data compare
the
tape
speed
and
data
errors
when
density.
1.4.2 DEC/DEC REVERSE COMPARE PROBLEM.
In Phase Three, the program produced
entering
a
reverse
read
in
the DEC/DEC mode.
Upon
careful! observation it was determined that this
error
occured when stepping from a 4096 byte long record- to a
16 byte long record.
A 4096 byte long record when read
the
buffer
reverse
to
would leave a small portion of old data at
the front end of the buffer.
bytes
in
If the next record is
16
long, then this record is loaded into the buffer
42
16 bytes from the start,
remember
these
being read from the tape in reverse.
records
Unfortunately the
read buffer was not cleared completly by the 4096
data
compare.
are
byte
This left a small portion of old data.
including bytes 0 and 1 and the old \record number still
in the buffer.
the
fly'
buffer
data
to
Figure 9 shows this condition.
compare-algorithm
contain
RRV
data
be
read
into
the
This has been solved by adding a call to 'fill
data buffer with unique code' every
and
the
a length of unique code greater or
equal to the length of new data to
buffer.
re~uires
The 'on
time
the
DEC/DEC
<Read Reverse command) encounters the 4096 to
16 bytes step.
43
<--------
READ BUFFER = 4096 BYTES
----------->
START
END
: OLD DATA l<-----------UNIQUE--------------->1
<:---
<----------------------------THE 4096 REVERSE
RECORD STARTS
HERE.
THE 16 BYTE
RECORD STARTS
HERE.
Read ·bu-Ffer, showing
DEC/DEC reverse compare
problem.
Figure 9.
2.0 D. M.A.
MEASUREMENTS.
The following measurements were made to
determine
how much data is compared using the interleaved method.
A none-streaming tape drive was used because there were
no
streaming
data
compare
drives
routine
available
inserted
at the time.
into
the
A short
Tapeio.mac
program is shown as follows:
INSTRUCTION
DATLP$:
*
*
·lfo
CMP
BEG
CMP
BEG
ADD
ADD
CMP
BNE
MDV
BIT
BEG
BR
TIME MICROSECONDS
O,R2
FINISHED
UNIGUE, <R3)
OUT OF LOOP
2,R2
1, R5
<R3> <R4>+
OUT OF LOOP
UNIGUE, <R3>+
100200,MTCREG
DATLP$
DATLP$
I
2. 91
1. 87
2. 91
1. 87
3. 17
3. 17
2. 91
1. 87
2.91
2. 91
2.65
COMMENTS
ALL BUFFER COMPARED
FALSE <NOT FINISHED>
DMA DATA IN BUFFER?
FALSE
SUB 2 FROM WRD CNT
INC WRD COUNTER
COMPR ONE WORD
NO <WRDS DO COMPARE>
REP WRD WITH UNIQUE
READY/ERROR BIT SET?
NO CONTINUE TO LOOP
LOOP STOPPED HERE
28.43 MICROSECONDS
44
45
The tape drive ran at 45 inches per second with
data
density
of 1600 bits per inch This resulted in a
data transfer rate of 72000 bits per second.
of
4096
a
bytes
is
transfered
to
the
A
record
controller in
4096/72000 =57 milliseconds.
The
program
immediately
segment
following
shown
above
was
entered
the issuance of a read command.
As soon as the controller received four bytes from
drive
the
it
four
controller
invoked
bytes
the D.M.A.
into
the
protocol and transfered
computer
memory.
The
then released the bus and the above program
was able to continue looping through its
routine.
This was repeated until
t~e
data
compare
entire record of
4096 bytes was read from the tape and transferred
the
the
computer
memory.
into
At this time the controller set
the 'ready' bit and the program halted:
Examination of the contents of R5 gave a value
1141 decimal.
This left 907 words not yet compared.
of
46
These results appeared very hopeful.
if
the
code
What would happen
were made more efficient?
The following
program segment was tried and analyzed:
INSTRUCTION
DATLP$:
*
*
*
CMP
BEG
BEG
CMP
BNE
MOV
CMP
BNE
MOV
CMP
BNE
MOV
CMP
BNE
MOV
ADD
ADD
BIT
BEG
BR
TIME MICROSECONDS
O,R2
FINISHED
DATLP$
<R3>, <R4>+
EXIT
UNIGUE, <R3)+
(R3) <R4)+
EXIT
UNIGUE, <R3>+
<R3), <R4>+
EXIT
UNIGUE, <R3>+
<R3), <R4)+
EXIT
UNIGUE, <R3>+
10,R2
4, R5
100200,MTCREG
DATLP$
DATLP$
I
2.91
1. 87
1. 87
2. 91
1. 87
2.91
2.91
1.87
2.91
2. 91
1. 87
2.91
2. 91
1. 87
2. 91
3. 17
3. 17
2. 91
2.65
COMMENTS
IN SEGMENT
; CMP 1'ST WRD
IN SEGMENT
; CMP 2'ND WRD
IN SEGMENT
; CMP 3'RD WRD
IN SEGMENT
;
.
; CMP 4'TH WRD
IN SEGMENT
; SUB S FRM BYTE CNT
;ADD 4 TO WRD CNT
; UNIT READY
; TRUE LOOP
; 0. D. T. TRAP
57.21 MICROSECONDS
47
The 57.21 microseconds is divided· by 4 to see
the
relative efficiency of this code:
57.24/4
When
a
completed
about
another
=
halt
14.31 MICROSECONDS
occured
approximatly
100
25
words
the
1950
decimal
uncompared.
had
al~ays
words,
leaving
segment
This
passes of the loop were
indicated
re~uired.
it that we could read the complete record a
times
then
miss
357 microseconds,
service
the
one?
real
time
examined further with the
into consideration:
Why was
number
Noticing that 25 passes
and that is the same
clock.
time
that
of
e~uals
taken
to
This relationship was
following
parameters
taken
48
4096 bytes/1600 b. p. i.
= 2. 56" (physical record length)
2. 56"/45 i. p. s =57 milliseconds <time to read record>
0.6"/45 i. p. s = 13 milliseconds (time to cross gap)
Figure 10 shows the data and timing relations:
MILLISECONDS
<------- 57 -------><-13-><------- 57 -------><-13->
DATA
<-
I
GAP
I
DATA
16 -)
MILLISECONDS
Data and clock relationship.
Figure 10.
I GAP I
49
A
real
milliseconds,
time
will
data window 4 times.
the
data
re~uested
compare
clock
occure
pulse,
within
occuring
every
the 57 millisecond
It was determined that each
failed,
time
a 4'th clock pulse had been
by the operating system within the period
the data window.
1b
of
3.0 OVERHEAD EVALUATION
The author was concerned that the higher
operating
system
high-speed
might
priority
steal time from the dedicated
tape-controller
driver.
An
interrupt
within the critical two millisecond window of
occuring
would cause
the I. R. G.
the
tape
streaming
mode
to
if
in
operate improperly.
A suitable test was devised
to
determine
fact an interrupt was occuring, and if so,
effect.
time
its
Designing a software program to
its possible
perform
measurement was considered unsatisfactory,
own
vulnerabil!ty
to
being
this
due to
interrupted.
A
hardware/software solution was chosen that utilized the
M.D.B.
board.
An oscilloscope was used to monitor bit
zero of a register at address 777542.
was
written
that
looped
A simple program
continuously
setting
and
resetting bit zero to detect the interrupts.
The results were.
and
bit
to
repeat
bit set for
10
cleared for 10 micro seconds.
for
16.6
milliseconds.
interrupted
(bit
remained
mi eros ec ond s.
A calculation
50
based
micro
This continued
It
cleared)
on
s~conds.
the
was
for
ratio
then
380
of
51
instruction-count/execution-time
of
the
indicated
be
approximatly
the
instructions
instructions>
interruption
long.
loop
120
The loss of 380 microseconds <120
represented
millisecond window.
to
simple
19%
of
the
allowed
2
4. 0 BUS LOADING.
In a read operation from tape to memory,
a
density
of 1600 bits per inch is read from the tape
at 100 inches per
160,000
one
second
bytes/second
byte
data with
of
data
case'
'Worst
transfer
every
resulting
This represents
rate.
microseconds.
6.25
in
The
controller burrers 8 bytes before transfering this data
by D.M.A.
to
the
microseconds.
to
re~uired
burst.
memory,
were
the
=
6.25
x
50
assumed that the overhead
interrupt
to
It
takes
replace
this
This shows that the bus
obviously,
8
takes
about
20
then the controller buffer is serviced in
microseconds.
microseconds
it
service
microseconds,
28
Ir
C.P.U.
the
tape
drive
50
data prior to the next
is
only
50%
loaded,
a data compare routine could be interleaved
with the D. M.A.
operation.
52
5.0 REPOSITIONING MODE.
If a streaming tape drive, while
not
receive
its
next
instruction
streaming,
within
millisecond window o' the interrecord gap.
the
positioning
mode.
does
the
two
it goes into
Assume a drive has Just read a
record while traveling in a forward direction and
not
receive
a further read-forward instruction within
the critical two milliseconds.
and
stops
some
last command was
drive
will
The
drive
decelerates
where within the next record.
a
'forward'
instruction
the
As the
drive
assume that the next instruction will also
be a 'forward'
backs-up
does
instruction.
The
drive
consequently
crossing the interrecord gap and stops at the
previous record,
accelerate
far enougth back to allow the drive to
up to speed prior to reading or writing the
next consequtive record in a forward direction.
If
the
continuous
above
sequence
is
maintained
in
a
manner then the drive is said to be running
in its repositioning mode.
This is a very
time consuming operation mode.
53
inefficient
b.O TWO MILLISECOND WINDOW.
This is a detailed explanation of
time or two millisecond window.
the
reinstruct
Refer to Figure 11 and
assume that a drive is writing a data record onto
at
At
the completion of the
record the write head turns off,
creating the beginning
of
100
the
inches
per
interrecord
second
tape
gap
Three milliseconds later the
read head enters the gap.
At
drive starts to ramp down.
If a following record is to
be written,
ramp
this
in the streaming mode,
moment
then the drive
tape
must
back up to speed prior to the write head reaching
the intended start-position of the next
must
occure
record.
of
practice there is a slight ramp down,
Following receipt of the next
would
This
during the remaining 0.3 inches of gap in
order to maintain a maximum gap width
In
the
write
be a corresponding ramp up.
allowed to continue for
more
ramp up to speed in
time
for
deceleration.
instruction,there
two
milliseconds.
then the drive cannot
the
following
This represents the two millisecond window.
54
inches.
If the ramp down is
than
waiting for the next instruction,
0.6
record.
55
WRITE
READ
<:0. 3 -::><---0.34
11
ERASE
11
----->
I
I.
1<---------------0.6"----------------)!
INTERRECORD GAP
Head geometry and interrecord gap.
Figure 11.
APPENDIX B
Contains selected samples
from the
Test-program.
56
MAIN CONTROL SECTION OF STREAM.PAS
BEGIN {* MAIN PROGRAM STREAM *****************************************}
{*
THE FOLLOWING
*}
<*
TABLE CONTAINS THE PAR 1 DEFAULT
*}
<*
PARAMETER SETTINGS, THESE CAN BE
*}
<*
ALTERED BY THE OPERATOR FROM THE
*}
<*
KEYBOARD
*}
{*
PARAMLSTC1J
PAR NUMBER < = 1>
*}
{*
t2J
RECORD LGTH OR VAR *}
<*
t3J
IPS,
BPI SELECTION *}
<*
[4J
DATA COMPARE REG.
*}
{*
t5J
DATA PATTERN SEL *}
{*
t6J
E. 0. T. ACTION SEL
*}
<*
t7J
PSEUDO E.O. T. SEL
*}
<*
CSJ
ERROR LIMIT
*}
{*
<*
<*
<*
*}
OTHER PARAMETER LISTS, PAR 2 - 10
ARE PREDETERMINED, AND CANNOT BE
CHANCED.
{*
*}
*}
*}
*}
<*NOTE 1 SEE PROG TAPEIO.MAC FOR
<*
. DETAILS OF PARAMLST.
<* NOTE 2 VALUES PASSED TO THE TAPEIO
ARE AD~USTED TO ALLOW FOR SIMPLE
<*
<*
ADD FUNCTION TO SET APPROPRIATE
*}
*}
<*
BITS.
INITAL;
<* SETS THE EXTENDED REGISTERS TO INTERFACE MODE *}
ACTIONSEL
:= CHA;
WHILE ACTIONSEL C> CHX DO
BEGIN
IF ACTIONSEL <> CHE THEN
ROL := O; <*RESETS THE ROLL ERROR DISPLAY*}
IF ACTIONSEL = CHA THEN
BEGIN
PARAMLSH 1 J · = 1;
<* PAR NUMBER
PARAMLSTC2l := 4096;
<*RECORD LENGTH
PARAMLSTC3l := 1024;
<* 100 IPS 1600 BPI *}
PARAMLSTC4J ·= 1;
<*DATA COMPARE REG *}
PARAMLSHSJ ·= 1;
<*ALL ONES
*}
*}
PARAMLSTC6l := 0;
<*NO REW AT EDT
*}
PARAMLSTC7l := 0;
<*NO PSEUDO EDT
PARAMLSTC8l := 0;
<*NO REWIND AT ABORT *}
MSGNUM := BACKGROUNDDISPLAY;
WRTCRT <MSGNUM >;
DISPAM<PARAMLST>; <* DISPLAYS THE DEFAULT PAR 1 LIST *}
MSGNUM := LFT061;
WRTCRT<MSGNUM>;
{* CLEARS THE TEST PROG LINE *}
CHANQEPARAM~TER;
<* CHANGE/KEEP TAPE DRIVE PARAM FOR PAR 1 *}
SAVPAM<PARAMLST>; {* SAVES PAR 1 OPERATOR SELECTED PARAMETERS *}
MSGNUM := LISTOFCOMMANOS;
<*LISTS THE TAPE DRIVE CMOS*}
WRTCRT <MSGNUM >;
INPUTCMDS; {* ALLOWS OPERATORS CHOICE OF TAPE COMMANDS •>
PRNSUN<PARA11LST>; <* PRINTS 'START OF TEST SEQUENCE' ROOM FOR DATE ETC *>
CLRSUM;
<* CAUSES THE SAVE SUMMARY TABLE TO CLEAR *}
STRTST;
{* STARTS THE TEST PROGRAM *}
WASERRORFLAGSET;
<* INTERACTS WITH ACTIVE TEST, HANDLES MESSAGES ETC *}
END;
57
58
IF ACTIONSEL = CHT THEN <* REQUEST TO INPUT A TEST PROGRAM *}
BEGIN
MSGNUM := LISTOFCOMMANDS; <*DISPLAYS LIST OF TAPE TEST COMMANDS*}
WRTCRT <MSGNUM >;
INPUTCMDS; <* PROMPTS AND LOADS NEW TEST PROGRAM *}
STRTST; <* STARTS TAPE TEST PROGRAM RUNNING *}
WASERRORFLAGSET;
END;
IF ACT10NSEL = CHP THEN <* REQUEST TO CHANGE TAPE PAR 1 PARAMETERS *}
BEGIN
PARAMLST[1J := 1; <* SET UP PARAMETER PACKAGE ADDRESS FOR PAR 1 *}
GETPAM<PARAMLST>; {* GET PAR 1 PARAMETER LST *}
DISPAM<PARAMLSTl; <* DISPLAY PAR 1 PARAMETER LIST *}
CHANGEPARAME.TER; {* CHANGE TAPE DRIVE PARAMETERS PAR 1 *}
SAVPAM<PARAMLSTl; <* SAVE NEW PAR 1 PARAMETER LIST *}
TSETUP<PARAMLST>; {* TRANSFERS NEW PARAMETERS TO TAPE DRIVE *}
PRNPAM<PARAMLST>;
<* PRINTS COPY OF NEW PARAMETERS *}
END;
IF ACTIONSEL = CHC THEN <* REQUESY TO CLEAR SUMMARY TABLE *}
CLRSUM;
<* CAUSES THE SAVE SUMMARY TABLE TO BE CLEARED *}
IF ACTIONSEL = CHM THEN {* REQUEST TO DISPLAY MAG TAPE REG'S *}
DISMAGTAPEREGS;
IF ACTIONSEL = CHR THEN <* REQUEST TO REPEAT LAST TEST *}
BEGIN
MSGNU11 : = LASTCMDINTBL; <* 'G' COMMAND RETURNS PTR TO START *}
TABENT<MSGNUMl;
<* TEST PROGRAM POINTER RETURNED TO START *}
MSGNUM : = 11SGCLR;
WRTCRT<MSGNUM); <*CLEARS DISPLAY MESSAGE LINE *}
STRTST; {* STARTS THE TEST PROGRAM RUNNING *}
WASERRORFLAGSET; <* CHECKS ERROR FLAG AND PROCEEDS ACCORDINGLY *}
END;
IF ACTIONSEL = CHE THEN <* REQUEST TO ROLL ERROR LIST *}
BEGIN
IF ROL
0 THEN ROL := 17;
IF ROL <: 62 THEN ROL := ROL + 9;
IF ROL
62 THEN ROL := 0; <*RESET ROLL*}
IF ROL
0 THEN SUMMRY ELSE ERRORLIST;
END;
<* INTERACT WITH OPERATOR TO SELECT ACTION *}
MSGNUM :• ASEL01; <*ACTION SELECT MESSAGE*}
WRTCRT <MSGNUM >;
MSGNUM :• ASEL02; <*ACTION SELECT MESSAGE*}
WRTCRT <MSGNUM >;
MSGNUM :• ASEL03; <*ACTION SELECT MESSAGE*}
WRTCRT <MSGNUM);
MSGNUM := ASEL04; <*ACTION SELECT MESSAGE*}
WRTCRT <MSGNUM >;
IF ROL = 0 THEN MSGNUM := PMPTOB ELSE MSGNUM := PMPT09;
<* PMPTOB = PROMPT TO SEL LETTER FROM ACTION TABLE *}
<* PMPT09 = PROMPT FOR ACTION TABLE OR 'E' TO ROLL ERROR TABLE *}
WRTCRT <MSGNUM l;
.
READ< ACTIONSEL l;
READLN;
END; <* WHILE ACTIONSEL *}
END.
<* STREAM *}
PART OF INLINE CODE OF
TAPEIO.MAC
;EXTERNAL PARAMETERS GET PROCEDURE CALL FROM STREAM.PAS----------NOTES:
GETPAM:
10$:
11$:
12$:
50$:
55$:
100$:
~SR
MOV
MDV
CMP
BNI:.
MDV
BR
CMP
BNE
MOV
BR
CMP
BillE
MDV
Bf<
CMP
BNE
MOV
BR
MOV
CMP
BEG
MOV
SUB
BR
RTS
THE PARAMETER LIST IS PASSED TO TAPEIO. MAC
ONLY THE FIRST ITEM, THE PARAMETER LIST NUMBER
IS VALID. THIS IS USED TO SELECT THE PREPACKAGED
PARAMETER LIST PAR 1 - 10, <PAR 1 = OPERATOR
SELECTIONS>. THE SELECTED PARAMETER VALUES
ARE THEN LOADED INTO THE ARGUMENT LIST AND
IN EFFECT RETURNED TO STREAM.PAS
PC.PROCHD
2 <R5 l , R4
<R4l.R3
#1, R3
10$
#PAR01,R2
50$
#2,R3
11$
#PAR02,R2
50$
#3,R3
12$
#PAR03.R2
50$
#4.R3
100$
#PAR04,R2
50$
#10.R3
#O.R3
100$
<R2l+, <R4l+
#1. R3
55$
PC
;PROC CALL ENTRY
;GET ADDRESS OF ARGUMENTS
;R3 =SELECTED PAR NUMBER
; IS IT PAR 1
;NO, BRANCH
;YES, R2 =BASE ADDRESS OF PAR 1
; IS IT PAR 2
; NO, BRANCH
;YES, R2 =BASE ADDRESS OF PAR 2
; IS IT PAR 3
; NO, BRANCH
;YES, R2 =BASE ADDRESS OF PAR 3
; IS IT PAR 4
; NO, BRANCH
;YES, R2 =BASE ADDRESS OF PAR 4
; R3 = COUNT
; IS COUNT COMPLETED
; YES. BRANCH
;SAVE COPY OF PAR LIST PASSED
; DEC COUNT
;RETURN TO PASCAL
;PROGRAM BEGINS**************************************
THE MAIN PROGRAM CONSISTS OF A NUMBER OF SUBPROGRAMS:
STRTST
START TEST, THIS IS THE PASCAL ENTRY POINT
REQPOL
REQUEST POLLING. PERFORMS POLLING OF THE TAPE CONTROLLER
WAITING FOR THE CURRENT INSTRUCTION TO BE COMPLETED. AT
THE SAME TIME IT CALLS DATA COMPARE <IF REQUESTED> WHICH
INTERL~AVES WITH THE ACTIVE D.M.A.
OUTPUT ERROR, HANDLES ALL THE ERRORS. SETS UP A
SPEC I AI_ ERROR FLAG FOR THE PASCAL PROGRAM 'STREAM'
IT THEN EXITS THIS MACRO PROGRAM, WITH THIS FLAG 'EROFLG'
SET. WHEN A RETURN IS MADE INTO THE PASCAL PROGRAM
IT IMt<iE.DIATLY CALLS 'ERRORF' TO DETERMINE IF RETURN IS
A TEMPORARY RETURN TO ALLOW PASCAL TO OUTPUT THE CURRENT
ERROR TO THE PRINTER.
OPTERR
59
60
EROFLG
PROENT
NEXT$
ERROR FLAG, USED BY PASCAL PROGRAM.
PROGRAM ENTRY, FURTHER HOUSEKEEPING.
GETS THE NEXT INSTRUCTION FROM THE TABLE CONTAINING
THE TEST PROGRAM. SETS UP THE MAGNETIC TAPE REGISTERS
AND RUNS THE TEST, RETURNING TO REGPOL AWAITING
COMPLETION OF TEST.
ATBOTF:
NOIDBF:
REWFLG:
EROFLG:
WRETRY:
DELCNT:
ADVSEL:
ADVCFL:
ADVTST:
SELUNT:
LSELAD:
. WORD
. WORD
. WORD
. WORD
. WORD
. WORD
. WORD
. WORD
. WORD
. WORD
. WORD
STRTST:
JSR
CMP
BEG
CMP
BEG
JMP
JSR
JSR
MDV
MDV
MDV
JMP
CLRST$:
REPTST:
0
0
0
0
0
0
0
0
0
0
0
PC,PROCHD
#O.EROFLG
CLRST$
#20. ,EROFLG
REPTST$
ERRET$
PC,CLRCSM
PC.CLRSSM
#O,LSTSEL
#O,ADVCFL
#1. RPTCNT
NEXT$
;FLAG SET WHEN DRIVE IS AT BOT
;SET WHEN AN ID BURST WAS NOT DETECTED
;FLAG TO INDICATE LAST CMD = REW
;FLAG TO INDICATE ERROR TO PASCAL PROG
;COUNTS 5 SUCCESSFUL WRITE RETRYS
;COMBINED FLAG AND COUNT FOR DELAY
;ADVANCE TO NEXT SELECTED MACHINE
;ADVANCE TO CMD FOLLOWING NEXT LUP
;ADVANCE TO NXT PREPACKAGED TEST
;CONTAINS CURRENT SELECTED UNIT NUMBER
;CONTAINS THE ADDRESS IN THE CMD TBL
OF THE LAST SEL UNIT, NEEDED TO
RETURN FROM A ERROR HANDLER WHEN
UNIT IS FORCED OFF-LINE WHILE IN
AN ERROR HANDLER_ROUTINE
; IS THIS A PROGRAM START
;YES, BRANCH THE JUMP
; IS THIS A REPEAT
;YES, BRANCH THE JUMP
; JUMP TO CONTINUE AT ERROR RETURN POINT
;CLEAR THE CURRENT-SUMMARY TABLE
;CLEAR THE TOTAL SAVE-SUMMARY TABLES
;DEFAULT LAST SELECT TO 0
;CLEAR ADV TO CMD FOLLOWING LOOP
;CLR REPEAT CNT <REG FOR ERROR LIMIT EXITl
;GO TO START OF CMD TBL <SELECTS UNIT Ol
REQUEST POLL:
THIS PROG. REPEATEDLY RETURNS HERE TO POLL THE TAPE DRIVE, AWAITING
A READY OR ERROR RESPONCE, INDICATING THAT THE CURRENT COMMAND
HAS COMPLETED IT'S EXECUTION.
REGPOL:
BIT
BNE
MDV
ADD
MDV
ADD
BIS
MDV
MDV
ADO
Jt1P
#lOO,MTSREG
UOLN$
SELUNT,R2
512. ,R2
R2,EROFLG
#512 .• EROFLG
4H, ADVSEL
#1. RPTCNT
LSELAD,NXTCMD
#6,NXTCMD
TDPAS$
; IS SEL UNIT STILL ON LINE
; YES, BRANCH
;NO, R2 =CURRENT SEL UNIT NUMBER
;SET UP OFF-LINE ERROR CODE
;EROFLAG =UNIT OFF-LINE NUMBER
;ADD OFF-LINE CODE TO EROFLG
;SET FLAG TO REQUEST NEXT UNIT
;RESET CURRENT REPEAT COUNTER
RESET THE NXTCMD TO
LAST SEL CMD PLUS ONE CMD
PRINT OFF-LINE ERROR
61
UOLN$:
BIT
FJEG
BIT
fJt~E
1$:
2$:
3$:
4$:
5$:
.JSR
BIS
BR
BIT
BEG
.JSR
SIC
BIT
BEG
Bil
BNE
BIT
BEG
.JSR
BR
.JSR
CMP
BNE
CMP
BNE
BIS
SUE
MOV
MOV
.JI1P
84.MTSREG
1$
#1, WPFLAG
2$
PC,POKUWP
11. WPFLAG
2$
i1.WPFLAG
2$
PC.POKUWE
#1. WPFLAG
i1,REWFLG
5$
i40.MTSREG
4$
#2, MTSREG
4$
PC.POKREW
3$
PC,BOTINT
RRV,LSTCMD
10$
#1,RECNUM
10$
i1.ADVCFL
i1.RECNUM
#1,RPTCNT
#7,EROFLG
TOPAS$
IS WRITE·PROTECT SET ON DRIVE
NO, BRANCH
YES, IS WRITE PROTECT FLAG SET
; YES, BRANCH
;NO, CHANGE DISPLAY TO WRITE PROTECT
;SET FLAG TO REFLECT WRITE PROTECT
; IS WRITE PROTECT FLAG CLEAR
; YES. BRANCH
;NO, CHANGE DISPLAY TO WRITE ENABLED
;CLEAR FLAG TO REFLECT WRITE ENABLED
;WAS LAST CMD A REWIND
; NO, BRANCH
;YES, IS TAPE AT B. 0. T. YET
; YES, BRANCH
;NO, IS TAPE REWINDING
; NO, BRANCH
;YES. DISPLAY REWIND
;GO BACK AND LOOK FOR B. 0. T.
;SET UP B. 0. T. CONO AND PRINT B.D. T.
;NQ, WAS LAST COMMAND A READ REVERSE
; NO, BRANCH
; IS RRV AT FIRST R~CORO
;NQ, CONTINUE WITH RRV OR NEXT COMMAND
;YES, SET FLAG FOR CMD FOLLOWING NXT LUP
;AD.JUST REC NUM FOR ZERO
;RESET REPEAT COUNTER
;CODE REG FOR PRINT 'AT FIRST RECORD'
;GO PRINT, RETURN AT NEXT CMD REG
DATA COt1PARE IS PERFORMED AT THIS POINT IN PROGRAM,
INTERLEAVES WITH THE D.M.A. FROM THE TAPE DRIVE.
THE DATA COMPARE
NOTE: THE PLACEMENT OF THE DELAY REQUEST AHEAD OF DATA COMPARE
THIS ALLOWS TH~ READ BUFFER TO USE THE EXTRA TIME OF A DELAY
TO TOTALLY FILL.
10$:
12$:
14$:
CMP
BEG
.JSR
BIT
BEG
BIT
BNE
.JSR
BR
BIT
BNE
ADO
B~
16$:
18$:
SUB
BIC
#O,DELCNT
12$
PC.TDELAY
#1,PCMCPR
25$
#40000.MTSREG
14$
PC,CMPDAT
18$
#1,REVFLG
16$
i1.RECNUM
18$
i1.RECNUM
i1.PCMCPR
; IS DELAY TO START/STOP MODE REG'D
; NO, BRANCH
; YES
;DID LAST CMD REQ A DATA COMPARE
; NQ, BRANCH
; YES, WAS LAST READ LOOKING AT A FMK
; YES, DO NOT WANT A DATA COMPARE OF FM
; NO, GO PERFORM DATA COMPARE
; IS FMK FROM A REVERSE READ
; NO, BRANCH
; YES, COMPENSATE FOR REV READ FM RECORD
COMPENSATE FOR FWD READ FM RECORD
CLEAR DATA COMP REQUEST FLAG
62
255:
265:
BIT
BEG
BIT
BEG
.JSR
BR
BIT
BEG
CLR
BIT
BNE
BIT
BNE
BIS
.JSR
#100200,MTCREG
255
#40, MTSREG
265
PC,BOTINT
27$
#l,ATBOTF
27$
ATBOTF
#1. HIDENF
27S
#lOOOO,EXTRGl
27$
#1. NOIDBF
PC,POKNID
; IS CONTROL UNIT ROY OR ERROR BIT SET
;NO, LOOP UNTIL ROY OR ERROR
; IS TAPE AT B. 0. T.
; NO, BRANCH
;YES, SET UP BOT COND AND PRINT BOT
;BRANCH ID BURST DETECTION SECTION
; IS DRIVE .JUST LEAVING BOT
; NO, BRANCH
;YES, CLEAR FLAG
; IS THE HIGH DENSITY FLAG SET
;YES, BRANCH <NO ID BURST IND FOR HI DEN>
;NO, CHECK FOR ID BURST INDICATION
;YES, BRANCH <OK>
;NO, SET NO-lO-BURST-FOUND FLAG
;DISPLAY NO ID BURST INDICATOR FOUND
27$:
BIT #lOOOOO,MTCREG
; IS CONTROL UNIT ERROR BIT SET
ENE OPTERR
;YES, BRANCH EXAM BITS 15 -> 7 OF STAT REG
BIC #l,EOTACT
;NO, CLEAR E.O. T. ACTIVE FLAG
BIT #l.CMPEFF
; IS COMPARE ERROR FOUND FLAG SET
BEG 28$
;NO, BRANCH
ADD #l,UDECNT
;YES, INC UNDETECTED ERROR COUNT
BR
OPTERR
;OUTPUT THE ERROR 28$:
CMP #O,WRETRY
;NO, IS THIS A WRITE RETRY
BEG 30$
;NO, BRANCH
.JMP INTRY$
;YES, PERFORM 5 RETRYS
30$:
CMP #-l,RETRYC
;NO, IS READ RETRY COUNTER CLEAR
BEG 100$
;YES, BRANCH <NOT A RETRY>
CMP SRV,LSTCMD
;NO, THIS IS A RETRY
BEG OPTERR
;BRANCH IF SRV OF RETRY
CMP SFO,LSTCMD
; IS IT SFD OF RETRY
BEG OPTERR
;YES, BRANCH
MOV #-l,RETRYC
;SUCCESS ON RETRY, CLEAR RETRY COUNTER
MOV #BEGNEL,TRKERR
;REINITIALISE PTR TO RETRY LIST
100$:
.JMP ERSE$
;.JUMP CHK IF IT'S A SHORT REC ERROR
FINCMD:
RTS PC
;NORMAL RETURN TO PASCAL PROGRAM
THE NEXT SECTION OF THIS SUBPROGRAM HANDLES ERRORS
IT WAS PLACED IN THIS POSITION BECAUSE IT RETURNS
CONTROL TEMPORARILY BACK TO THE PASCAL PROGRAM.
THE PASCAL PROGRAM HANDLES ERROR PRINTING
AND RETURNS HERE VIA THE INTEAB => ERRET$ PATH.
NOTE IN FOLLOWING SECTION, THE FORMATER HARD ERROR HAS
PRIORITY OVER THE COMPARE ERROR. IE: IF A FMTR HARD ERROR
OCCURES <WHICH MUST IN TURN CAUSE A COMPARE ERROR>
THE RETRY IS TRIGGERED BY THE FORMATER HARD ERROR.
HOWEVER THE COMPARE ERROR IS COUNTED <COMPARE ONLY ACTS
WHILE READING AND IF COMPARE REQUESTED> AS FWD OR REV
COMPARE ERROR.
NOTE 1 ONLY REAO ERRORS CAN RETURN FROM DATA COMPARE.
NOTE 2 IF A DATA COMPARE ERROR FOUND THEN WANT TO REREAD
SAY 3 TIMES, IF STILL ERROR THEN CALL IT A HARD
ERROR AND CONTINUE WITH NXT RECORD, IF RECOVERED
THEN IS A SOFT ERROR. REPORT NUM OF RETRYS.
63
NOTE 3 FORMATTER HARD ERROR COULD BE READ OR WRITE,
EITHER REWRITE, ATTEMPT 3 TIMES, IF NOT SUCESSFUL
ADVANCE TAPE 'FLE' AND TRY AGAIN. REPORT NUM OF
RETRYS. IF READ THEN SAME AS NOTE 2.
NOTE 4 FORMATTER SOFT HANDLED AS NOTE 2. EXCEPT NOTE
THAT THEY WERE FORMATTER SOFT ERRORS.
NOTE 5 BUSS GRANT LATE HANDLED SAME AS NOTE 2.
PASCAL ERROR FLAG CODING:
EROFLG
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
20
64
128
256
512
=1024
+
+
+
+
+
XX
XX
XX
XX
XX
=2048
=4096 + XX
OPTERR:
20$:
BIT
Bt:.Q
JMP
BIT
BE.Q
CMP
BEQ
ADD
SUB
MDV
SUB
SUB
SBC
:lt40000,MTSREG
20$
EOFMF$
#10000,MTSREG
27$
#O.WRETRY
25$
#1. PWECNT
#1. TWECNT
#O,WRETRY
#l,RPTCNT
#1, RECWRT
EXTWRT
NO ERROR
FMTER HARD ERROR
FMTER SOFT ERROR
UNUSED
RECORD LENGTH LOt4G
E.O. F. FOUND
E. 0. T. FOUND
B.D. T. FOUND
RECORD LENGTH SHORT
PSEUDO E. D. T. FOUND
BUSS GRANT LATE
ONE TRY AND THREE-RETRYS
FAILED "' PRE
ERROR LIMIT REACHED
PWE PERMANENT WRITE ERROR
TWE TEMPORARY WRITE ERROR
TRE TEMPORARY READ ERROR
ABORT LIMIT REACHED
TEST PROGRAM COMPLETED <USED IN PASCAL>
XX IS THE NEW PREPACKAGED TEST PROGRAM
XX IS THE NEW PARAMETER LIST NUMBER
XX IS THE NEW UNIT SELECT NUMBER 1-4
XX IS THE SEL UNIT NUMBER = OFF-LINE
DATA COMPARE ERROR, THE XX IS
THE ASSOCIATED ERROR EG 01 = FMT
HARD ERROR
PRINT,DISPLA CURRENT SUMMARY TABLE
NO ID BURST DETECTED, XX IS ANY
OTHER ERROR THAT MASY OCCURE AT
THIS TIME. IE ON FIRST RECORD
; IS BIT 14 SET <E. 0. F. MARK>
; NO, BRANCH
;YES, BRANCH TO E. O.F. MARK FOUND
; IS FMT HARD ERROR BIT SET
; NQ, BRANCH
;YES, IS THIS A WRITE RETRY
;NO, BRANCH
; INC PERMANENT WRITE ERROR CNT
;ASSUMED TEMP IS NOW PERMANENT
;CLEAR THE WRITE RETRYS CNT
;ADD ONE REPEAT TO REPEAT CNT
; RETRY, DONT ALLm~ CNT TO INC
;SUB CARRY FOR DOUBLE PRECISION
64
25$:
26$:
27$:
28$:
29$:
RETRY$:
INTRY$:
CFIVE$:
312$:
314$:
MOV
MOV
MOV
MOV
MOV
JMP
ADD
MOV
BIT
BEQ
ADD
BR
BIT
BEG
ADD
MOV
BR
BIT
BNE
.Jt1F
MOV
BR
CMP
DEG
CMP
BEG
CMP
DE.G
CMP
BNE
MOV
ADD
SUB
.Jt1P
MDV
CMP
BNE
.JMf'
CMP
BNE
MDV
MOV
.JMP
CMP
BNE
ADO
ADO
MOV
SUB
SBC
BR
#SAVRT3,R2
NXTCMD, <R2>
#0.6<R2>
#PWEHND.NXTCMD
#13. ,EROFLG
CHKEFS
#1,FHRDER
#1,EROFLG
#1, CMPEFF
26$
#1024. ,EROFLG
RETRY$
#1000,EXTRG1
28$
#1,FMTCER
#2,EROFLG
RETRY$
#1.CMPEFF
29$
EBGL$
#1024_ ,EROFLG
RETRY$
WFO.LSTCMD
CFIVES
WEG,LSTCMD
CFIVE$
WEO,LSTCMD
CFIVE$
*2,RETRYC
TRYCD$
#11 .• EROFLG
#1.PRECNT
#l.TRECNT
TOPAS$
NXTCMD,Rl
LUP, <Rl >
CFIVE$
POLRT$
#5,WRETRY
312$
#O.WRETRY
#14. ,EROFLG
CHKEF$
#O.WRETRY
314$
#1.TWECNT
#1.WRETRY
SRV.ERRHND
#l.RECWRT
EXTWRT
CLAT$
;R2 =ADDRESS OF SAVE RETURN
;LOAD TABLE WITH RETURN POINTER
;CLEAR THE PREVIOUS INC
;NXTCMD =>SPECIAL PWE HANDLER
; ERROR = PWE
;PRINTS ERROR MSG
; INC FMTR HARD ERROR COUNT
;SET PASCAL ERROR FLAG= 1
; IS THE DATA CMP ERR FLAG SET
; NO, BRANCH
;YES, ADO CODE TO PRINT DATA CMP ERR
; IS FMTR SOFT ERROR BIT SET
; NO, BRANCH
;YES, INC FMTR SOFT ERROR COUNT
;SET PASCAL ERROR FLAG= 2
; IS COMPARE ERROR FOUND SET
; YES, BRANCH
;SET CODE TO REG PRINT DATA CMP ERR
;BRANCH TO RETRY
;WAS IT A WRITE FORWARD
; YES, BRANCH
;WAS IT A WRITE EXTENDED GAP
; YES, BRANCH
;WAS IT A WRITE EDIT
; YES, BRANCH
; ITS A READ, HAVE WE TRIED 4 TIMES
; NO, BRANCH
;YES, FLAG 1+3 RETRY ERROR CODE
; INC PERMANENT READ ERROR COUNTER
;REMOVE THE TEMP COUNT
;CANNOT READ REC CONT WITH NXT REC
;R1 =ADDRESS OF NXT CMD
; IN WRITE RETRYS, IS NXT COMMAND
;A LUP, BRANCH IF FALSE
; CONTINUE WITH LUP OF REWRITE
; IS THIS THE FIFTH RETRY
;NO, BRANCH TRY AGAIN
;YES. HAVE 5 SUCCESSFUL REWRITES
; ERROR = TWE
;.JUMP CHECK IF ERROR MESSAGE
; IS THIS FIRST WRITE RETRY
; NO, BRANCH
;YES. ASSUME IT,S TEMP ERROR
; INC THE WRITE RETRY COUNT
;LOAD TBL WITH SPACE REV CMD
DONT ADD 5 TO RECORDS WRITTEN
SUB CARRY FOR DOUBLE PRECISION
COMPLETE LOADING ACTION TBL
65
TRYCD$:
320$:
330$:
350$:
CMP
BEG
CMP
BEG
CMP
BEG
CMP
BEG
,Jr1P
MOV
SUB
SBC
.JMP
MOV
SUB
SBC
BR
CMP
Bt·~E
355$:
CLAT$:
ADD
ADD
RFD,LSTCMD
320$
SFR,LSTCMD
320$
RRV,LSTCMD
330$
SFR,LSTCMD
330$
TOPAS$
SRV,ERRHND
#l,REDFWD
E:<TRFD
350$
SFD,ERRHND
# 1 REDREV
EHRRV
350$
#-l,RETRYC
355$
#1. TRECNT
#l,RETRYC
WAS IT A READ FORWARD
YES, BRANCH
WAS IT SEARCH FM AND READ FWD
; YES, BRANCH
;WAS IT READ REVERSE
; YES, BRANCH
;WAS IT SEARCH FM AND READ REV
;YES, BRANCH
;.JUMP NXT SECTION
;LOAD TBL WITH SPACE REVERSE
;HAVE BORROWED A READ FWD
;DOUBLE PRECISION OF READ COUNT
;COMPLETE LOADING ACTION TBL
;LOAD TBL WITH SPACE FORWARD
;HAVE BORROWED A READ REV
;DOUBLE PRECISION READ REVERSE COUNT
;COMPLETE LOADING ACTION TBL
; IS THIS FIRST RETRY
; NO, BRANCH
; INC THE TRE COUNTER
; INC RETRY COUNTER
#SAVRT2, R2
NXTCMD, <R2)
;R2 =ADDRESS OF SAVE RETURN
;LOAD TABLE WITH RETURN POINTER
I
NOP
1'.0',1
MOV
IN A GROUP OF RECORDS <EG RFD 100> THE NEXT COMMAND = RFD EXCEPT
IN THE CASE OF THE LAST RECORD <OR A SINGLE RECORD> IN WHICH CASE
THE NEXT COMMANO IS THE FOLLmHNG INSTRUCTION. IN THIS CASE THE
LAST COMMAND IS REPEATED.
360$:
CHKEF$:
380$:
EOFMF$:
385$:
CMP
BEG
SUB
MDV
MDV
ADD
MDV
MOV
SUB
CMP
BEG
.JMP
.JMP
MDV
.JSR
SUB
CMP
BNE
.JSR
ADD
MOV
BIT
BF="G
CMP
LSTCMD,@<R2>
360$
#6, <R2>
(R2> Rl
4<Rl>,RPTCNT
#L RPTCNT
#0.6<R2>
#ERRHND, NXTCt1D
#L RPTCNT
#O,EROFLG
380$
TOP AS$
POLRT$
#30. oR2
PC,POKFMD
#1. R2
#O.R2
385$
PC,POKCLR
#l.FMKCNT
#5,EROFLG
#l.PEOTRG
E3$
WFM,LSTCMD
I
; IS NXTCMD SAME AS LAST COMMAND
; YES, BRANCH
;NQ, BACK UP TO LAST COMMAND
;GET PREVIOUS CMD ADDRESS
;SET UP RPTCNT PER FINAL CMD
;DO NOT ADD ONE TO THIS REPEAT CNT
;CLEAR THE PREVIOUS INC
;NXTCMD NOW PTS TO ERROR HNDLR
;ADD ONE REPEAT TO REPEAT COUNT
; IS ERROR FLAG SET
;NQ, SKIP ERROR PRINTOUT
;OUTPUT ERROR VIA PASCAL PROG
;SKIPS TO PRINT RETURN POINT
;SET UP DELAY TO DISPLAY FILE MARK FOUND
;DISPLAY FILE MARK FOUND
;CLEAR DISPLAY
; INC TOTAL FILE MARKS FOUND
;SET PASCAL FLAG= 5
; IS IT REG FOR PSEUDO E.O. T.
; NO, BRANCH
;WAS IT WFM : WHAT WAS LAST COMMAND
66
E3$:
CS$:
C10$:
C15$:
C20$:
BEG
CMP
BEG
CMP
BEG
CMP
B£G
CMP
BEG
ADD
BIT
BNE
MOV
l"iOV
MOV
MOV
ADD
MOV
BIC
SUB
JMP
E3$
SRI,LSTCMD
E3$
SRR,LSTCMD
E3S
SFI,LSTCMD
E3$
SFR,LSTCMD
E3$
#l,TWOFMK
#l,TWOFMK
E3$
#SAVRT1,R2
NXTCMO, <R2 >
#0,6<R2l
9 .. EROFLG
#6,. <R2>
#l,RPTCNT
#1,PCMCPR
#2,RECNUM
EBGL$
;YES, BRANCH
;WAS IT SRI
DO NOT WANT A PSEUDO
;YES, BRANCH
E.O. T. GENERATED FROM
;WAS IT SRR
A SEARCH FOR FMK INST
;YES, BRANCH
OR
;WAS IT SFI
FROM WRITE FILEMARK
;YES, BRANCH
;WAS IT SFR
;YES, BRANCH
;NO, INC FILE MARK COUNTER
; IS IT AN EVEN CNT OF 2, 4, ETC
; NO, BRANCH <TWO FMKS REGD = PSEUDO E. 0. T. >
;R2 =ADDRESS OF SAVE RETURN
; LOAD TABLE WITH RETURN POINTER
;CLEAR THE PREVIOUS INC
;SET PASCAL ERROR FLAG= 9
; ADJUST RETURN TO POINT TO NXT INST
;FNSHD WITH LAST INST, CLR ANY REMAING CNT
;CLR DATA COMP REG. ELSE CARRYS TO NXT INST
;2 FMKS WERE DET, IF INST =READ THEN
; THE RECORD NUMBER CNT WAS INC BY 2
; WHILE READING FMK'S, CORRECT BY UEC CNT
; PSEUDO E. 0. T. VARIABLE LENGTH RECORD ALGORITHM
;FOLLOLJING SECTION CORRECTS THE RECORD LENGTH VARIABLE USED BY
; PARAt'iETER SELECTIONS SUCH AS INC/DEC .<IE VARIES THE RECORD LENGTH>
; IF A PSEUDO E. 0. T. IS ENCOUNTERED WHILE READING EG INC/DEC, THEN
; THE LAST TWO READS WERE OF FILEMARKS, HOWEVER THE RECORD L~NGTH
;ALGORITHM WAS EXERCISED TWICE.
RESULTS IN REC LNGTH 2 STEPS OFF
BIT #100000,RECLNH
;DID OPERATOR REG VAR LENGTH RECORDS
BeG ClOO$
;NO, BRANCH
BIT #l,RECLNH
;YES, IS IT INC/DEC REQUEST
BEG C30$
;NO, BRANCH
BIT #1, INCDEC
;YES, IS INC FLAG SET
BEG C15$
;NO, BRANCH
BIT #lO,COMRLH
;YES, IS RECORD LENGTH
16
BEG CS$
;NO, BRANCH
BIC #1, INCDEC
;YES, CLR INC FLAG
BR
C20$
; GO TO INC ALGORITHt1
SEC
;CLR ARITHMATIC CARRY BIT
ASR COMRLH
;DEC REC LENGTH ONE STEP
BIT #lO,COMRLH
; IS RECORD LENGTH= 16
BEG C10$
;NO, BRANCH
BIC #1, INCDEC
;YES, CLR INC FLAG
BR
C25$
;GO TO LAST PART INC ALGORITHM
SEC
;CLR ARITHMATIC CARRY BIT
ASR COMRLH
;DEC RECORD LENGTH ONE STEP
DR
ClOO$
;DONE
BIT #4000,COMRLH
; IS RECORD LENGTH= 4096
BNE C20$
;NO, BRANCH
BIS #1, INCDEC
;YES, SET INC FLAG
DR
CS$
;GO TO DEC ALGORITHM
ASL CC~RLH
; INC RECORD LENGTH ONE STEP
BIT #4000,COMRLH
; IS RECORD LENGTH= 4096
BNE C25$
;NO, BRANCH
BIS #1, INCDEC
;YES, SET INC FLAG
BR
C10$
;GO TO DEC ALGORITHM
67
C25$:
C30$:
C35$:
C40$:
C45$:
C60$:
C65$:
C70$:
C75$:
ClOO$:
EBGL$:
EEOT$:
ASL
BR
BIT
BEO
BIT
BEO
MDV
BR
SEC
ASR
B!T
BEG
MDV
ElR
SEC
ASR
BR
BIT
BEG
BIT
BNE
MDV
BR
ASL
BIT
BNE
MDV
BR
ASL
BR
MDV
MDV
ADD
MDV
MDV
BIT
NOP
BIT
BEG
MDV
..JMP
BIT
BNE
..JMP
COMRLH
ClOO$
#2,RECLNH
C60$
#10, COMRLH
C35$
#170000,CDMRLH
C40$
COMRLH
#lO.COMRLH
C45$
#170000,CDMRLH
ClOO$
COMRLH
ClOO$
#4,RECLNH
ClOO$
#4000.COMRLH
C65$
#177760.COMRLH
C70$
COI1RLH
#4000,COMRLH
C75$
#177760,CDMRLH
ClOO$
COMRLH
ClOO$
#EOTHND.R2
SRI, <R2l
#6.R2
SRI. <R2l
#EOTHND,NXTCMD
#20000.MTSREG
#4000,MTSREG
EEOT$
#10. ,ERDFLG
RETRY$
#2000,MTSREG
E7$
ERLE$
; INC RECORD LENGTH ONE STEP
; DONE
; IS IT INC/INC REQUEST
; NQ, BRANCH
;YES. IS RECORD LENGTH= 16
; NO, BRANCH
;MAKE RECORD LNGTH = 4096
;AD..JUSTED FOR l'ST STEP GO TO 2'ND
;CLR ARITHMATIC CARRY BIT
;REDUCE RECORD LENGTH ONE STEP
; IS RECORD LENGTH = 16
; NQ, BRANCH
;MAKE RECORD LNGTH = 4096
; DONE
;CLR ARITHMATIC CARRY BIT
;REDUCE RECORD LENGTH 2'ND STEP
; DONE
; IS IT A DEC/DEC REGUEST
; NQ, BRANCH
; IS RECORD LENGTH = 4096
; NO. BRANCH
;MAKE RECORD LENGTH= 16
;BRANCH FOR 2'ND STEP
; INCREASE RECORD LENGTH BY ONE STEP
; IS RECORD LENGTH = 4096
; NO. BRANCH
;MAKE RECORD LENGTH= 16
; DONE
; INCREASE RECORD LENGTH BY ONE STEP
; DONE
;ADD OF HNDLER IN R21 IF PSEUDO E. D. T.
; INSERT SRI IN TBL
THEN NXT OP INST
; AD..JUST TBL PTR
MUST BE A REVERSE
; INSERT SRI IN TBL
WHICH SEE'S THE TWO
;REREAD TWO FMKS
FMKS ..JUST DETECTED
; IS BIT 13 SET
;YES, <NOT USED>
; IS BIT 11 SET <BUS GRANT LATEl
; NO. BRANCH
;YES. SET PASCAL ERROR FLAG= 10
; TRY AGAIN
; IS TAPE AT E. D. T. <BIT 10 SETl
;YES. BRANCH THE ..JUMP
;BRANCH
EDT HANDLER STARTS HERE
E7$:
BIT
3~0
EB$:
..JMP
BIS
ADD
..JSR
MDV
#l,EDTACT
E8$
TO?AS$
#l,EOTACT
#1. EDTCNT
PC,PDKEOT
#6. ,ERDFLG
;YES. HAVE WE ALREADY PASSED E. D. T.
;NO. BRANCH THE ..JUMP
;..JUMP, <E. 0. T. HANDLER ACTIVE>
;NQ, ENTER E. D. T. HANDLER AND SET FLAG
;.INC THE TOTAL E. 0. T. COUNTER
; DISPLAY E. D. T.
;SET PASCAL ERROR FLAG= 6
68
NLUP$:
1$:
MDV
MDV
MDV
MDV
CMP
BNE
ADD
CLR
MOV
CLR
ADD
MDV
BIC
CMP
BNE
MOV
MDV
ADD
MDV
MOV
JMP
MDV
Jt1P
#SAVRTL R2
N:<TCMD,Rl
RL <R2>
#0,6(R2>
LUP,6<R1>
NLUP$
#12., <R2>
16<R1>
@!R2), R3
2<R3>
#6., <R2>
#1. RPTCNT
#1. PCMCPR
WFD. <Rl)
1$
#EOTHND,R2
WFM, <R2>
!16,R2
WFM, <R2)
IIEOTHND, NXTCt1D
TOPAS$
#EOTDO,NXTCMD
TOPAS$
R2 = ADDRESS OF SAVE RETURN
R1 = ADDRESS OF NeXT COMMAND
LOAD TABLE WITH ADD OF NXTCMD
CLEAR THE PREVIOUS INC
; IS FOLLOWING CMD A LUP
;NQ, BRANCH <RETURN TO FOLLOWING CMD)
;YES. RETURN TO CMD FOLLOWING LUP <12 + 6)
;CLEAR THE REMAINING LOOP COUNT
;R3 =ADDRESS OF 2'ND LINE NXT LUP
;CLEAR THE CURRENT CNT IN LOOP CMD
;RETURN TO NXT SEQUENTIAL INST.
;FNSHD WITH LST INST, CLR ANY REMAING CNT
;CLR DATA CMP REG, ELSE CARRYS TO NXT INST
; IS IT A WRITE CMD
;NQ, <MUST BE A READ> BRANCH
;YES. PLACE ADDRESS OF EOTHND IN R2
;PLACE A WRITE FILEMARK IN TBLE
;ADJUST FOR SECOND ENTRY
;PLACE WRITE FILEMARK IN SECOND POS
;SET NXTCMD PTR TO START OF HANDLER
;JUMP <AVOID CHECK OF REC LONG>
;NO ATTEMPT MADE TO READ 2 FMKS
;JUMP <AVOID CHECK OF RECORD LONG>
EDT HANDLER ENDS HERE
ERLE$:
ERSE$:
TOPAS$:
20$:
BIT
BEG
MDV
ADD
JMP
CMP
BLE
MD\'
ADD
l'iOV
NEG
MOV
JMP
BI
I
BEG
ADD
CLR
CMP
El~G
CMP
Elt:.G
BIT
BNE
CMP
BLT
CMP
BLT
CMP
#1000,MTSREG
ERSE$
#4. ,EROFLG
#1. UDECNT
RETRY$
!IO.MTBCNT
TOP AS$
#8 .• EROFLG
#1. UDECNT
MTBCNT,Rl
Rl
R1.SRMTBC
RETRY$
#1. NOIDBF
20$
#4096 .• EROFLG
NOIDBF
#O,EROFLG
PROENT
#20. ,EROFLG
100$
#lOOO.EROFLG
100$
#25 .• TRECNT
60$
TRERLM.TRECNT
50$
#25 .• TWECNT
; IS BIT 9 SET
; NO. BRANCH
;YES. SET PASCAL ERROR FLAG. LONG RECORD
; INCREMENT THE UNDETECTED ERROR COUNTER
;TRY READING IT AGAIN
; IS BYTE COUNT =< ZERO
; YES. BRANCH
;NQ, SET PASCAL ERROR FLAG, SHORT RECORD
; INCREMENT THE UNDETECTED ERROR COUNTER
;Rl = 2'S COMP OF REMAINING REC LNGTH
;LOAD COUNT TO SUMMARY TBL
;TRY READING IT AGAIN
; IS THE NO ID BURST FLAG SET
; NO, BRANCH
;YES. SET THE CODE BIT
;CLEAR NO BURST FLAG
; IS THE ERROR FLAG SET
;NO. SKIP PASCAL RETURN
;YES, IS THIS END OF A TEST RUN
; YES, BRANCH
;NQ, IS IT AN OFF-LINE
; YES. BRANCH
;NO. IS TR ABORT TEST LIMIT REACHED
; YES, BRANCH
;NO, IS TR ERROR LIMIT EXCEEDED
; YES, BRANCH
;NO, IS TW ABORT TEST LIMIT REACHED
69
BLT
CMP
BLT
CMP
BLT
CMP
BLT
CMP
BLT
CMP
BLT
Cl1P
BLT
CMP
BLT
BR
60$
T~ERLM,TWECNT
50$
#25. ,UDECNT
60$
DCERLM,UDEWT
50$
#25. ,PRECNT
60$
PRERLM,PRECNT
50$
#25. ,PWECNT
60$
PI~ERLM, PWECNT
50$
100$
;
;
;
;
;
;
;
;
;
;
;
;
;
;
YES, BRANCH
NO, IS TW ERROR LIMIT EXCEEDED
YES, BRANCH
NO, IS UNDETECTED ABORT TEST LIMIT REACHED
YES, BRANCH
IS UNDETECTED ERROR LIMIT EXCEEDED
YES, BRANCH
NO, IS PR ABORT TEST LIMIT REACHED
YES, BRANCH
NO, IS PR ERROR LIMIT EXCEEDED
YES, BRANCH
NO, IS PW ABORT TEST LIMIT REACHED
YES, BRANCH
NO, IS PW ERROR LIMIT EXCEEDED
; NO ERROR LIMITS EXCEEDED
ABORT LIMIT OPTION:
THE OFFENDING DRIVE IS
SET OFF-LINE, THIS ENSURES THAT IT IS NOT TREATED
AS A COi"JTINUING TEST IF RESELECTED IN CURRENT
TEST SEQUENCE
50$:
MO~
#12 .• EROFLG
100$
#16 .• EROFLG
#L RPTCNT
#1,ADVTST
# 1. OFFLRG
100$
#2QO,EXTRG2
PC,POKCEB
#200.EXTRG2
PC
100$:
BR
MOV
MOV
MOV
BIT
BEG
BIS
JSR
BIC
RTS
ERRET$
= RETURN
60$:
ERRET$:
RET5$:
RETlO$:
RET15$:
POLRT$:
;YES, LIMIT REACHED
; BRANCH
;ABORT LIMIT REACHED
;RESET CURRENT REPEAT COUNT
;SET ADVANCE TO NEXT TEST FLAG
;CHECK TO SEE IF OFF-LINE REQUESTED
; NO, BRANCH
;LOAD OFF-LINE DIRECTLY TO INTERFACE
;MAINLY USED AS DELAY FOR OFF-LINE PULSE
;CLEAR OFF-LINE BIT
;RETURN TO PASCAL WITH ERROR
FROM PASCAL AFTER PRINTING THE ERROR MESSAGE
OR PRINTING PREPACKAGED TEST NUMBER AND NEW
PARAI'!ETER LIST
CMP
BNE
MDV
MDV
BR
Bil
BEG
JSR
BR
CMP
BNE
JSR
MDV
BIC
JMP
#11 .• EROFLG
RET5$
#BEGNEL,TRKERR
#-l,RETRYC
RET15$
#4CO,EROFLG
RETlOS
PC, INTCND
RET15$
#2oqs .• EROFLG
RET15$
PC.CLRCSM
#O,EROFLG
#1. CMPEFF
PROENT
;WAS THE ERROR= RETRY LIMIT
; NO, BRANCH
;RESET RETRY ERROR LIST PTR
;RESET RETRY COUNTER
; IS THIS A RETURN FROM A NEW UNIT SEL
; NO, BRANCH
;YES, GO AND SET-UP INITIAL CONDITIONS
;WAS THIS AN OPERATOR REQUESTED SUMMARY
; NO, BRANCH
;YES, CLEAR THE CURRENT-SUMMARY TABLE
;CLEAR THE PASCAL ERROR FLAG
;CLEAR THE DATA COMPARE ERROR FOUND FLAG
;RETURN TO HANDLER ROUTINE
70
;SUBROUTINE ERRORF EXAMINES THE ERROR FLAG. THE -----------------PASCAL PROGRAM CALLS THIS ROUTINE TO DETERMINE
THE VALUE OF THE ERROR FLAG AND PRINT THE APPROPRIATE
OUTPUT MESSAGE. IF THE VALUE = 20 THEN THE TEST HAS
TERMINATED
THE SUBROUTitJ.;,. CLRSUM IS CALLED FROM THE PASCAL PROGRAM
TO CLEAR THE ERROR FLAG. THIS CAUSES THE SAVE SUMMARY TABLE
TO BE CLEAREU UPON THE ENTRY INTO A NEW TEST SEQUENCE (AT STRTSTl
ERRORF:
CLRSUM:
MD~'
JSR
PC,PROCHD
EROFLG,@2(R5l
RTS
PC
JSR
MDV
RTS
PC,PROCHD
#O.EROFLG
PC
;ERRROR FLAG MOVED TO ADDRESS SUPPLIED
IN ARGUMENT FROM PASCAL PROCEDURE
;RETURN TO PASCAL PROGRAM
;CLEAR THE ERROR FLAG
;-------- -----THIS TEST PROGRAM IS ENTERED VIA THE POLLING ~OUTINE
'REQPOL'. THE PROGRAM STEPS THROUGH ALL THE OPERATOR CMDS
CONTAINEu IN TH~ 'CMDTBL'. AFTER EACH CMD IS LOADED TO THE
TAPE CDMr1AND REGISTER AND GO BIT ASSERTED, THIS PROGRAM
RETURNS TO 'REQPOL' WAITING FOR THE TAPE DRIVE TO INDICATE
READY OR ERROR.
JUST PRIOR TO RETURNING TO THE POLLING ROUTINE, THIS
PROGRAM EiTHER INCREMENTS THE COMMAND TABLE POINTER TO POINT
TO THE NEXT COMMAND, OR INCREMENTS THE REPEAT COMMAND COUNTER
'RPTCNT'. <NOTE: A COPY OF THE COMMAND JUST CARRIED OUT IS KEPT
IN 'LSTCMD I)
PROENT:
**
;******
*
*
NEXT$:
i ---
NOTE: THIS IS A KEY POINT IN PROGRAM, THIS IS WHERE
THE PROGRAM OBTAINS THE NEXT COMMAND FROM THE OPERATORS
INPUT OF TAPE COMMANDS.
NXTCMD ALREADY POINTS TO ADDRESS OF NEXT CMD
LSTCMD CONTAINS COPY OF LAST CMD EXECUTED
MDV
MDV
---
NXTCMD.Rl
<Rll,CURIST
FINAL ENTRY HANDLER
CMP
BNE
JSR
MDV
JMP
;
;RETURN/ENTER FROM REQPOL
NOP
;Rl PTS TO NEXT CMD IN TABLE
;SAVES CURRENT INSTRUCTION
---
#77777, <Rl >
CKADV$
PC,POKCEB
#20. ,EROFLG
TOP AS$
IS IT AN 'ADVANCE TO' REQUEST
; IS IT FINAL ENTRY IN TBL
; NO, BRANCH
;CLEAR 'ACTIVE' ON DISPLAY
;CODE ERROR FLAG FOR EXIT
;PASCAL WILL EXIT WITH 20 EROFLG
71
CKADV$:
10$:
15$:
BIT
BEG
CMP
BN~
#l,ADVCFL
10$
#77700, <R 1)
50$
CLR
JMP
AD<.'CFL
LUPSK$
BIT
BE:Q
CMP
ENE
Jt1P
CMP
BNE.
#i,ADVSEL
22*
P.ML <Rl)
15$
CH"'AM$
#77700, <R1)
20:$
#0,4<R1>
16$
LLJPSK$
#66000, 4<R1 >
CM?
16$:
17$:
20$:
22$:
25$:
BI·JF
JMP
CMP
BNE
JMP
JI1P
CMP
BNE
CLR
JMP
BIT
B£0
CMP
Bt~E
27$:
28$:
30$:
40$:
42$:
50$:
JMP
CMP
BNE
JMP
CMP
BNE
JSR
BR
CMP
BNE
CMP
BNE
JMP
CMP
BNr:
JMP
CLR
JMP
ADO
JMP
; IS ADV PASSED NEXT LUP SET
; NO, BRANCH
; IS THIS A LOOP CMD
;DISCARD COMMAND <MAY WANT TO KEEP
; SOME CMOS EG PAR, TST>
;CLEAR THE ADVANCE PASSED NXT LUP FLG
;YES, JUMP TO STEP OVER LOOP
RTLIJP$
GT TST$
SEL, <R1)
50$
AD\'SEL
SELUN$
; IS ADV TO NEXT UNIT SELECT SET
; NO, BRANCH
; IS IT A CHANGE PARAMETERS CMD
; NO, BRANCH
; YES, JUMP
;YES, IS THIS CMD A LUP
; NO, BRANCH
, IS IT SIMPLE LOOP
; NO, BRANCH
;YES, JUMP TO CLEAR LOOP CNT HANDLER
; IS IT RETURN FROM TST LOOP
; NO, BRANCH
;YES, JUMP TO SIMPLE HANDLER
;JUMP TO GET TEST HANDLER
; IS IT A UNIT SELECT REQUEST
;NO, BRANCH TO DISCARD CMD
;CLR FLAG
; YES, JUMP
#1,ADVTST
55$
SEL, <Rl)
27$
SELUN$
Pti.R, <R1)
28$
CH?AM$·
SU:1, <R1)
30$
PC,CLRCSM
50$
#77700, <R1 >
50$
#0,4<R1)
40$
RTL'JP$
#66000,4<Rl>
42$
RTLUP$
ADVlST
GTTST$
#6,NXTCMD
NEXT$
; IS ADV TO NEXT TEST SET
;NO, BRANCH TO CONTINUE
;YES, IS IT A UNIT SELECT CMD
; NO, BRANCH
; YES, JUMP
; IS IT A CHANGE PARAMETERS CMD
; NO, BRANCH
; YES, JUMP
; IS IT A SUMMARY REQUEST
; NO, BRANCH
;YES, CLR CURRENT SUM TBL
;BRANCH
;YES, IS THIS CMD A LUP
;NO, BRANCH TO DISCARD COMMAND
; IS IT SIMPLE LOOP
; NO, BRANCH
;YES, JUMP TO SIMPLE HANDLER
; IS IT RETURN FROM TST LOOP
; NO, BRANCH
;YES, JUMP TO SIMPLE HANDLER
;CLEAR ADVANCE TO PACKAGED TEST FLAG
;JUMP TO GET TEST HANDLER
;DONT WANT THIS CMO, INC FOR NEXT CMD
;GO TO NEXT COMMAND
17*
72
;--- IS IT A SEL,
55$:
57$:
60$:
62$:
63$:
65$:
PAR,
LUP ---
CMP
BNE
.JMP
CMP
BNE
.JMP
CMP
BNE
CMP
SEL. <Rl)
57$
SELUN$
PAR, <Rl)
60$
CHPAM$
#77700, <R 1 )
65$
#0.4<Rll
BNE
62$
.JMP
CMP
BNE
.JMP
JMP
.JMP
RTLIJP$
#6600Q,4(R1l
63$
RTLIJP$
GTTST$
CKDLY$
; IS IT A UNIT SELECT REQUEST
; NO, BRANCH
; YES, JUMP
; IS IT A CHANGE PARAMETERS REQUEST
; NO, BRANCH
; YES, .JUMP
;YES, IS THIS CMD A LUP
; NO, BRANCH
; IS IT SIMPLE LOOP
; NO, BRANCH
;YES, JUMP TO SIMPLE HANDLER
; IS IT RETURN FROM TST LOOP
; NO, BRANCH
;YES, JUMP TO SIMPLE HANDLER
;JUMP TO GET TEST HANDLER
;TO CONTINUE JUMP TO CHECK DELAY
;---SELECT UNIT HANDLER
SELUN$:
SELl$:
MDV
MDV
ADD
BIG
MDV
l"iDV
.JSR
.JSR
Rl.LSELAD
SELUNT,LSTSEL
#6,NXTCMD
#1400,MTCREG
4<Rll,R2
R2, SELUNT
PC,SAVSUM
PC,GETSUM
CMP
ENE
JSR
NOP
BR
CMP
#O,R2
SELl$
PC, POKUSO
B~JE
SEL2$:
SEL3$:
CKOLN$:
JSR
BIS
BR
CMP
BtJE
.JSR
BIS
BR
CMP
BNE
.JSR
BIS
BR
BIT
Bl\lE
BR
CKOLN$
#1,R2
SEL2$
PC,POKUSl
#400,MTCREG
CKOLN$
#2,R2
SEL3$
PC,POKUS2
#lCOO,MTCREG
CKOLN$
#3,R2
NOLN$
PC,POKUS3
#1400,MTCREG
CKOLN$
#lOO,MTSREG
CKRDY$
NOLN$
;YES, SAVE CMD TBL ADDRESS OF SEL REG
;SAVE THE LAST UNIT SELECT NUMBER
; INC FOR NEXT INSTRUCTION
;CLEARS UNIT SEL BITS IN TAPE REG
;R2 =NEW UNIT SELECT NUM 0-3
;SELUNT =CURRENT SEL UNIT NUMBER
;SAVE CURRENT SUMMARY FOR DESELECTED UNIT
;LOAD
FROM PREVIOUS SEL OF
CURRENT SELECTED UNIT
; IS IT A REG FOR UNIT SEL 0
; NO, BRANCH
;YES, DISPLA UNIT SELECT 0
;UNIT SELECT 0 <OOl DONE BY BIC ABOVE
;BRANCH <CHECK IF UNIT ON-LINE>
; IS IT A REQUEST FOR UNIT SEL 1
; NO, BRANCH
;YES, DISPLAY UNIT SELECT 1
;SET BIT 8 IN CONTROL REG
;BRANCH <CHECK IF UNIT ON-LINE>
; IS IT A REQUEST FOR UNIT SEL 2
; NO, BRANCH
;YES, DISPLAY UNIT SELECT 2
;SET BIT 9 IN CONTROL REG
;BRANCH <CHECK IF UNIT ON-LINE>
; IS IT A REQUEST FOR UNIT SEL 2
;NO, BRANCH <NO SUCH UNIT NUMBER)
;YES, DISPLAY UNIT SELECT 3
;SET BITS 9,9 IN CONTROL REG
;BRANCH <CHECK IF UNIT ON-LINE>
; IS SELECTED UNIT ON-LINE
; YES, BRANCH
;NO, BRANCH <GO TO NEXT UNIT>
73
CKRDY$:
NOLN$:
UNI TR$:
2$:
3$:
i ---
BIT
BNE
BI I
BI"G
#1. MTSREG
UNITR$
#2,MTSREG
NCLN$
.JSR
BR
BIS
PC,POKREW
#l,ADVSEL
.JSR
ADD
MDV
JMP
JSR
BIT
BNE
MO'V
JSR
BR
SIS
JSR
ADn
MOV
..IMP
PC,POKOFL
#512. ,R2
R2.ERDFLG
TGPAS$
PC.POKACT
#4,MTSREG
2$
#O,WPFLAG
PC,POKUWE
3$
#1. WPFLAG
PC,POKUWP
#256 .• R2
R2,EROFLG
TCPAS$
C~i,OLN$
; IS SELECTED UNIT READY
; YES, BRANCH
;NQ, IS SELECTED UNIT REWINDING
;NO, BRANCH <UNIT SHOULD NOT BE ACTIVE
; AT THIS TIME, GO TO NEXT SELECTION)
;DISPLAY UNIT REWINDING
;LOOP UNTIL READY
;SET FLAG REQUESTING NXT UNIT SELECTED
;RETURN FROM ERROR ROUTINE NOT REG HERE
;DISPLAY UNIT OFF-LINE
;ADD CODE TO SELECTED UNIT NUMBER
;PRINT SEL UNIT NOT ON LINE
;PRINT ERROR MSG AND LOOK AT NXT CMD
;DISPLAY UNIT ACTIVE
; IS UNIT WRITE PROTECTED
; YES, BRANCH
;NQ, SET WP FLAG= 0 <FLAG USED TO REMEMBER
;DISPLAY WRITE ENABLED.
DISPLAY CONTENT>
; SET WP FLAG
=
1
;ADD CODE TO SELEC~ UNIT NUMBER
;PRINT THE SELECTED UNIT NUMBER
;PRINT NEW UNIT SELECT NUMBER
CHANGE PARAMETERS HANDLER
CHPAM$:
MOV
ADD
ADD
Jt1P
4<R1 ), EROFLG
#128. ,EROFLG
#6,NXTCMD
TOP AS$
;PLACE CHANGE PARAMETER NUMBER IN EROFLG
;ADD CODE FOR PAR CHANGE REGUEST
; INC TO POINT TO NEXT CMD
;TEMPORARY RETURN TO PASACAL PROGRAM
;---LOOP HANDLER: TEST PACKAGE, RETURN FROM TEST, SIMPLE LOOP
GTTST$:
3$:
RTLUP$:
L1$:
MOV
MOV
ADD
MDV
SUB
ADD
SUB
CMP
BNE
MDV
CMP
BEG
ADD
MDV
BR
ADD
MOV
MOV
4<Rl>.R2
R2,EROFLG
#64. ,ERDFLG
#TSTLST,R3
#2,R3
#4,R3
#1. R2
#O,R2
3$
NXTCMD,@(R3>
lO<R1),12<R1>
Ll$
# 1. 10 <R1 >
2<R1l.NXTCMD
L2$
#14.NXTCMD
#O,EROFLG
#0, 10<R1>
;NO, R2 = TST PACKAGE NUMBER
;SET UP ERDFLG TO PRINT THE NEW TST NUMBER
;ADD CODE TO INDICATE IT'S A NEW TEST LIST
;R3 =BASE ADDRESS OF TST DIRECTORY
;CORRECT FOR INITIAL ENTRY INTO TBL
;STEP THROUGH TST DIRECTORY
; DEC TST NUM
; IS DEC TST NUM = 0
;NO, BRANCH AND CONT TO SEARCH
;LOAD CURRENT RETURN ADDRESS
;DOES LOOP RPT CNT = RPT VALUE
; YES,
;NO. INC RPT LOOP COUNTER
;SETS CMD TBL PTR TO START OF LOOP
; SKIP
;MOVE PTR BEYOND LOOP CMD
;EXITS TST LOOP, CLR FLG
; ZERO LOOP CNT, IN CASE MORE LOOPS
74
L2$:
CMP
BEQ
L3$:
..JMP
#O.EROFLG
L3$
TOP AS$
NEXT$
LUPSK$:
MDV
ADD
..JMP
#0, lO<Rl l
#14.NXTCMD
NEXT$
,Jt1P
IS IT A NEW PREPACKAGED TST
NO, BRANCH <TO NEXT>
YES, GO AND PRINT TST NUMBER
ADVANCE PAST LOOP
;CLEAR THE LUP RPT COUNT
;STEP OVER THE LUP CMD
;CONTINUE AT THE NEXT INSTRUCTION
RETURN FROM TEST
;---DELAY HANDLER. NO COMMAND HANDLER,
CKDLY$:
NOCMD$:
CKSUM$:
;
---
CMP
BNE
MDV
ADD
..JMP
.CMP
BNE
ADD
..Jt1?
CMP
BNE
MDV
ADD
..JSR
..JMP
DLY, <Rl l
NOCMD$
4 <R1 l, DELCNT
#6. I~XTCMD
NEXT$
#77000, <Rl l
CKSUM$
#6 .. NXTCMD
NEXT$
SlJi1. ( R1 l
CLRBF$
#2048 .• EROFLG
#6.NXTCMD
PC.SAVSUM
TOP AS$
SUM HANDLER---
; IS IT A DELAY CMD
; NO, BRANCH
;YES. LOAD DELAY COUNT/FLAG
;AD..JUST PTR FOR NEXT CMD
; IS NXT CMD A NO-ACT <NOP>
; NO, BRANCH
;YES, SKIP TO NXT CMD
;BRANCH AND EXAMINE_CMD
; IS IT A PRINT SUMMARY REQUEST
; NO, BRANCH
;PLACE PRINT SUMMARY NUMBER IN EROF'LG
; INC TO POINT TO NEXT CMD
;ADD CURRENT-SUMMARY TO SAVE-SUMMARY
;TEMPORARY RETURN TO PASACAL PROGRAM
REGULAR COI1t1ANDS START HERE
CLRBF$:
CMP
..JSR
CURIST.LSTCMD
CPREW$
PC,CLRTBF
CMP
BNE
BIS
ADD
..Jt1P
BIC
CMP
BEG
CMP
BEG
CMP
BEG
CMP
BEG
CMP
BEG
CMP
BEG
CMP
Bt-IE
ADD
JMP
REW, <Rl >
NOREW$
#1. REWFLG
#l,REWCNT
CLSTC$
#l,REVFLG
RFD. <Rl >
FWDR$
SFR, <Rl l
FWDR$
RRV, <Rl >
REVR$
RRE. <Rl >
REVR$
SFD, <Rl)
RECNT$
SRV, <Rll
RECNT$
VLE. <R 1 l
6$
#1. RECNUM
FIJORL$
BE~
CPREW$:
NOREW$:
; IS THIS A NEW INSTRUCTION
; NO, BRANCH
;YES. CLEAR DATA BUFFER
;THIS IS IMPORTANT WHEN CHANGING FROM
;REV TO FWD OR FWD TO REV
; IS IT A REWIND CMD
; NO
;YES, SET REWIND FLAG FOR POLLING PROG
; INC THE TOTAL REWIND COUNTER
;.JUMP TO CLEAR LAST COMMAND
;CLEARS THE REVERSE CMD FLAG
; IS CMD A READ FRWD
;YES, GO TO FWDR$
; IS CMD A <FWD SEARCH FMK, READ DATAl
;YES, GO TO FWDR$
; IS CMD A READ REVERSE
;YES. GO TO REVERSE READ
; IS COMMAND A READ REV EDIT
;YES, GO TO REVERSE READ
; IS IT A SPACE FORWARD
;YES, HOW MANY REC'S TO BE SKIPPED
;NO, IS IT A REVERSE SPACE
;YES, HOW MANY REC'S TO BE SKIPPED
;NO, IS IT VARIABLE LENGTH ERASE
; NO, BRANCH
; INC RECORD NUMBER FOR TRACKING
;DETERMINE REC. LNTH TO ERASE
75
6$:
RECNT$:
7$:
8$:
REVR$:
10$:
FWDR$:
CMPRG$:
EXTAD$:
WRTC$:
WRTF$:
BNE
MOV
CMP
BFQ
ADD
BR
SUB
NEG
MOV
Jt1P
BIS
ADD
ADC
MOV
CMP
BNE
JSR
WRTC$
4<Rll,R2
SRV, <Rl l
7$
R2,RECNUM
8$
R2,RECNUM
R2
R2, t1TI3CNT
SKIP6$
#l,REVFLG
#1. REDREV
E:<TRRV
LSTCMD,R2
RFD,R2
10$
PC,CLRTBF
MOV
NEG
ADD
SUB
MOV
BR
ADD
ADC
MOV
ADD
MDV
CMP
BNE
JSR
COMRLH,R2
R2
ABR13AD,R2
#1. R2
R2,MTMADD
Ct•iPRQ$
#l,REDFWD
EXTRFD
ABRBAD,MTMADD
#i,RECNUM
LSTCMD,R2
RRV,R2
CI•PRG$
PC,CLRTBF
BIT
Bt:.G
BIS
BIC
BIS
JMP
CMP
BEG
CM?
BEG
JMP
ADD
ADC
MDV
SIC
BIS
ADD
MDV
#1,DATCMP
EXTAD$
#1. PCMCPR
#60,MTCREG
EXRADD,MTCREG
FtJDRL$
WFD, <Rl)
WRTF$
WED, <Rl >
WRTF$
SKIP6$
#l,RECWRT
EXTWRT
ABWBAD,MTMADD
#60,MTCREG
EXWADD,MTCREG
#1. RECNUM
RECNUM,WRTBUF
NQ, IS IT A WRITE COMMAND
R2 = NUM REC'S TO BE SKIPPED
IS IT A REVERSE COMMAND
YES, BRANCH
NO, INC REC NUMS OVER SKPED REC'S
;BRANCH
;DEC REC NUM OVER SKIPPED REC'S
;GEN 2'S COMPLIMENT OF SKIP NUM
;LOAD NUM REC'S TO BE SKIPPED
; CONTINUE
;SET REVERSE CMD FLAG
; INC READ REVERSE TOTAL
;DOUBLE PRECISION FOR READ REVERSE
;R2 =LAST COMMAND
;WAS IT A READ FORWARD
; NO, BRANCH
;YES, CHANGE TAPE DIRECTION
; BUFFER MUST BE CLEARED
; <SETS UP READ BUFFER ADD.
; TO ALLOW CONTROLLER TO LOAD
{ADJUSTS ADDRESS>
; DATA FROM TOP DOW~>
;WAS DATA COMPARE REQUESTED
;ADD TO CURRENT READ FRWD TOTAL
;DOUBLE PRECISION READ FORWARD CNT
;LOAD READ BUFF ADD.
; INC CURRENT RECORD NUM FOR READ FRWD
;R2 =LAST COMMAND
;WAS LAST COMMAND A READ REVERSE
; NQ, BRANCH
;YES, CHANGE OF TAPE DIRECTION
; BUFFER MUST BE CLEARED
;WAS DATA CMP REQ BY OPERATOR
;NQ, GO TO EXT ADD CALCULATION
;YES, SETS FLAG ASKING FOR IT
;CLRS EXT ADD, CAN ROLL OVER
;SET EXT READ BUFFER ADDRESS
;DETERMINE REG REC LNGTH, OR INC-DEC
; IS CMD A WRT FRWD
;YES, BRANCH TO WRITE FRWD
;NO, IS IT A WRT FRWD EDIT
; YES, BRANCH
;NO, SKIP NEXT SECTION
;YES,ADD TO CURRENT WRITE TOTAL
;DOUBLE PRECISION OF WRITE COUNT
; LOAD WRITE BUFF ADD.
; CLEARS EXT ADD.
;SET EXT WRITE BUFF ADD.
; INC RECORD NUM, EACH REC NUMBERED
SEQUENTIALLY FROM B. Q.T.
76
NOTE: TH~ VARIABLE LENGTH RECORD REQUEST IS INITIALIZED
IN THE SUBROUTINE 'INTRLH'.
REG = INC/DEC
INITIAL CONDITIONS : RECORD LNTH = 4
DEC FLAG <INCDECl = 1 IE INCREMENT
THIS PART OF PROGRAM THEN CHECKS TO SEE IF INC/DEC REG
IF TRUE, THEN : INC THE RECORD LNTH UNTIL LNTH OF 4096
AT THIS INC, THE INC FLAG IS CLEARED SO THAT WHEN INC/DEC
IS AGAIN ENTERED THE FLAG CALLS FOR DECREMENTING THE REC
LNTH. THIS IS ALLOWED TO DEC DDLm TO 16 BYTES.
SEE NOTE 2 IN STREAM. PAS FOR LIMITS ON THE
MINIMUN RECORD LENGTH.
=
Rt::G
INC/INC
INITIAL CONDITIONS
RECORD LNTH
INITIAL CONDITIONS
RECORD LNTH
DEC/DEC
Rt:.G
8
= 8, 192
COMt1EtHS ON REVERSE READ:
A REVERSE CAN ONLY OCCURE IF A FORWARD HAS
PRECEEDED IT. THE CURRENT RECORD NUMBER AND
RECORD LENGTH ARE OF THE LAST RECORD IN
THE FORWARD DIRECTION. WHICH IS THE FIRST
RECORD IN THE REVERSE DIRECTION. THE DATA
COMPARISON IS MADE WITH THE CURRENT RECORD
NUMBER AND LENGTH, FOLLOWED BY THE READ
REVERSE ALGOLRITHM.
WHEN PERFORMING A REVERSE READ THE INCDEC FLAG
IS USED AS FOLLOWS
INC/DEC MODE 0 = INC
THE FOLLOWING TABLE IS TO ILLUSTRATE THE VARIOUS MODES
RECORD
NUMBER
INIT CCt4D
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
INC/DEC
LNGTH
FLAG
8
16
32
64
128
256
512
1024
2048
4096
2048
1024
512
256
128
64
32
16
32
1
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
1
1
INC/INC
FLAG
LNGTH
8
16
32
64
128
256
512
1024
2048
4096
16
32
64
128
256
512
1024
2048
4096
N
0
T
u
s
E
D
DEC/DEC
LNGTH
FLAG
8192
4096
2048
1024
512
256
128
64
32
16
4096
2048
1024
512
256
128
64
32
16
N
0
T
u
s
E
D
77
FNDRL$:
X 1:
X2:
X6:
X5:
X7:
X10:
BIT
BillE
BIT
ElNE
MOV
BR
BIT
BEG
BIT
BEG
ASL
BIT
BNE
BIC
MOV
ElR
SEC
ASR
BIT
BEG
BIS
MDV
BR
BIT
BEG
ASL
BIT
Br~E
X12:
X20:
X22:
X100:
SKIP6$:
EXTPC$:
MOV
MOV
DR
BIT
BEG
sEr.
ASR
BIT
BEG
MOV
MOV
BR
Bil
BE.G
BIS
.JMP
BIT
BE:G
BIC
BIC
MOV
BIC
ADD
BIS
BR
#LREVFLG
X1
#1000QQ,RECLNH
X2
COMRLH,MTBCNT
X100
#L RECLNH
X10
#L INCDEC
X5
COI1RLH
#4000,COMRLH
X6
#1, INCDEC
COMRLH,MTBCNT
X100
COMRLH
#10, COMRLH
X7
#1, INCDEC
COMRLH.MTI3CNT
X100
#2, RECLNH
X20
COMRLH
#lOOOO,COMRLH
X12
#177760,COMRLH
COMRLH,MTI3CNT
XlOO
#4,RECLNH
XlOO
COMRLH
#10, COMRLH
X22
#170000,COMRLH
COMRLH,MTBCNT
SKIP6$
#20000, <R1l
EXTPC$
#20000,MTRDLN
CLSTC$
#40. !R1 l
CLSTC$
#16.MTCREG
#37.EXTRG2
<R1J,R2
#40.R2
R2,EXTRG2
#2,MTCREG
TIMOT$
; IS THIS A REVERSE COMMAND
;YES, TRUE: REC LNlH CAL'D AFTER DATA COMP
;NQ, DID OPERATOR REG VAR LNTH REC
;YES, NOT A REV AND VAR LNTH REC REG
;NO, LOAD THE REC LNGTH TO MAG TAPE REG
;SKIP REC LNTH CAL SECTION
;NQ, IS IT A INC/DEC REG
; NO
;YES, IS INC FLAG SET FOR THIS PASS
;NO, NOT INC THEN DEC
;YES, INC COMP OF REC LNGTH BY LEFT SHIFT
;HAS MAX REC LNGTH (40961 BEEN REACHED
;NO, BRANCH UNTIL BIT 12 BECOMES ZERO
;YES, CLR THE INC FLAG FOR NXT PASS
;DEC FLG IS SET, SET CARRY BIT
;DEC 2'S COPM REC LNGTH. CARRY IN 1
;HAS MIN REC LNGTH (8) BEEN REACHED
; NO, BRANCH
;YES, SET INC FLAG TO INC ON NXT PASS
;LOAD THE REC LNGTH TO MAG TAPE REGS
; IS IT A REG FOR INC/INC
; NO~
;YES, INC THE RECORD LENGTH (2'S COMPl
;HAS IT REACHED 8192 BYTES
; NO, BRANCH
;YES, STEP REC' LNGTH DOWN TO 16 BYTES
;LOAD THE MAG TAPE REG
;BRANCH
; IS IT A REG FOR DEC/DEC
; NO, BRANCH
;YES, SET CARRY BIT FOR HIGH ORDER ROLL IN
;DEC THE RECORD LENGTH <2'8 COMLIMENTl
;HAS IT REACHED 8 BYTES
; NO, BRANCH
;YES, STEP REC LNGTH UP TO 4096 BYTES
;LOAD COMP. OF REC LNTH TO MAG TAPE REG.
; IS IT EXTENDED CMD <20000 -> 200161
;NQ, IS IT SPECIAL CMD !50, 53,55.701
;YES, SET EXT-CMD BIT, CLRS ITSELF
;GO AND CLEAR LAST COMMAND
; IS IT A CMD FOR EXT P.C. B.A.
;NQ, MUST BE NORMAL CMD <O -> 16l
;YES, CLR THE LAST TAPE CMD FROM MTC REG
;CLR BITS 0 -> 4 OF EXT REG
;.COPY COMMAND INTO R2
;CLR BIT 6 OF EXT REG COMMAND
;LOAD CMD TO EXT P.C.B.A. REG #1
;LOADS HIGHS TO DILOG CMD LINES
; CONTINUE
78
160$:
170$:
175$:
NEXT6$:
PNTOUT MSG136
MDV <R5)+,R2
CMP *O,R2
Bt~E
175$
PNTOUT MSG141
CMP *1. R2
BNE NEXT6$
PNTOUT MSG140
NOP
RTS PC
;GET ARG FOR ERROR LIMIT
; IS IT ERROR LIMIT 'OFF'
; NO, BRANCH
; YES, PRINT ERROR LIMIT 'OFF'
; IS IT ERROR LIMIT 'ON'
; NO, BRANCH
; YES, PRINT ERROR LIMIT 'ON'
;RETURN TO PASCAL PROGRAM
;CALL FROM PASCAL TO OUTPUT THE ERROR MESSAGE-------------R5 POINTS TO THE ARGUMENT LIST.
FIRST ARGUMENf IN LIST IS THE ERROR_NUMBER CODE.
SECOND ARGUMENT IN LIST IS THE STARTING ADDRESS
OF THE SUMMARY TABLE <THIS CONTAINS ALL THE
VARIOUS CURRENT COUNTS OF WRITES. READS. ERRORS
ETC>.
RO
Ri
R5
ERROR NUMBER CODE
START ADDRESS OF PARAMETER TABLE
PTR TO ADDRESS LIST OF ARG FROM PASCAL
OR START ADDRESS OF SUMMARY TABLE
ER.ROR CODE PASSED VIA PASCAL STREAM FROM TAPEIO
1
2
3
4
FMT HARD ERROR
FMT SOFT ERROR
UNUSED
RECORD LENGTH LONG
5
6
E. 0. F.
E. 0. T.
7
AT FIRST RECORD
8 = RECORD LENGTH SHORT
9
PSEUDO E. 0. T. FOUND
10
BUSS GRANT LATE
11
READ RETRYS FAILED = PRE
12
PRE LIMIT REACHED
13
PWE PERMANENT WRITE ERROR
14
TWE TEMPORARY WRITE ERROR
15
TRE TEMPORARY READ ERROR
16
ABORT LIMIT REACHED
+ XX
XX IS NEW PREPACKAGED TEST LIST
+ XX
XX IS NEW PARAMETER LIST NUMBER
+XX
XX IS THE NEW UNIT SELECT NUMBER (1,2.3,4)
+ XX
XX SELECTED UNIT NUM XX IS OFF-LINE
+ XX
DATA COMPARE ERROR, THE XX IS ASSOCIATED
ERROR EG 01 = FMT HARD ERROR
2048
PRINT,DISPLA CURRENT SUMMARY TABLE
+ XX
I. D. BURST UNDETECTED, THE XX IS ANY OTHER
ERROR OCCURING AT THE SAME TIME
=
64
128
256
512
1024
4096
IOTAPE.MAC
IOTAPE PHASE ONE
THIS PROGRAM ALLOWS DIRECT ACCESS TO THE TAPE CONTROLLER
VIA REGISTERS:MTSREG 772520
MTCREG 772522
MTBCNT 772524
MTMADD 772526
MTDBUF 772530
MTRDLN 772532
THIS PROGRAM l•;usT BE INSTALLED AT LOCATION 772520 USING
FOLLOWING COMMAND:SET /MAIN=IOTAPE:7725: 1:DEV
INS DY?: [1, 1JIOTAPE
WRITTEN J GAMLYN
3/8/82
. TITLE IOTAPE
. PSECT IOTAPE, RW, I, GBL, REL
.=.+20
;SETS PROGRAM POINTER TO BASE PC+ 20
MTSREG: : . BLKI~ 1
; MAG TAPE STATUS REGISTER
MTCREG: : . BLKI.J 1
; GLOBAL REF TO MAG TAPE COMMAND REG
MTBCNT:: . BLKW 1
;GLOBAL REF TO MAG TAPE BYTE COUNTER
MTMADD:: . BLKW 1
;GLOBAL REF TO MAG TAPE DMA <MEM> ADDRESS
MTDBUF:: . BLKW 1
;GLOBAL REF TO MAG TAPE DATA BUFFER
MTRDLN:: . BLKW 1
;GLOBAL REF TO MAG TAPE READ LINFS
. END
79
EXTREG.MAC
EXTENSION REGISTERS
PHASE TWO
JOHN GAMLYN
10. 17. 82
THIS PROGRAM LOCATED IN THE IN/bUTPUT PAGE
OF THE C.P U. ALLOWS ACCESS TO A SPECIAL SET OF 4
EXTENSION REGISTERS. THESE REGISTERS ARE LOCATED ON THE
M. D. B. PCPA.
THESE REGISTERS ARE USED TO BY-PASS THE
TAPE CONTROLLER AND ACCESS DIRECTLY INTO THE FORMATTER
TO TAPE CONTROLLER INTERFACE.
THIS ALLOWS FOR SUCH FUNCTIONS AS:
DOUBLE DENSITY REQUEST
SOFT ERROR COUNT
ERASE FIXED LENGTH
SECURITY ERASE
THIS PROGRAM MUST BE INSTALLED AT LOCATION
762542 USING FOLLOW COMMAND:
SET /MAIN= EXTREG:7625: l:DEV
INS DY?[l, 1JEXTREG. TSK
NOTE:
MAKE SURE EXTREG.STB IS PLACED INTO
[1, 1J OF THE DISK YOU ARE TASK BUILDING ON .
EXTRG1: :
EXTRG2: :
EXTRG3::
EXTRG4::
. TITLE EXTREG
. PSECT EXTREG,
.... +40
. BLKW 1.
. BLKW 1.
.BLKW 1.
. BLKW 1.
. END
RW,
r.
GBL,
REL
; 1 'ST EXTENSION REG
; 2'ND
; 3'RD
; 4'TH
80
© Copyright 2026 Paperzz