DataMuseum.dk

Presents historical artifacts from the history of:

CP/M

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦2b84af8c3⟧ RcTekst

    Length: 54528 (0xd500)
    Types: RcTekst
    Names: »99109944.WP«

Derivation

└─⟦670c8f5a6⟧ Bits:30005866/disk2.imd Dokumenter i RcTekst format (RCSL 99-1-*)
    └─⟦this⟧ »99109944.WP« 

RcTekst


╱04002d4e0c00060000000003014831600000000000000000000000000000000000000000000000002d37414b555f69737d8791ffffffffff04╱
↲
╞	__________________________↲
╞	Edition:╞	1984.11.20↲
╞	Author: ╞	Peter Lundbo↲
╞	RCSL No.:╞	99 - 1 - 09944↲
↲
↲
↲
↲
↲
                         INTERNAL DOCUMENT↲
↲
↲
↲
↲
↲
↲
________________________________________________________________________↲
↲
Title:↲
↲
                          ETC 601 Hardware Selftest↲
                                User's Manual↲
                                Version 1.0↲
↲
↲
↲
________________________________________________________________________↲

════════════════════════════════════════════════════════════════════════
↓
↲
↲
↲
↲
↲
↲
↲
↲
↲
↲
-----------------------------------------------------------------------↲
KEYWORDS :↲
↲
          ETC 601, RC 3900, Intel, Multibus, Hardware Selftest.↲
↲
↲
↲
↲
↲
↲
----------------------------------------------------------------------↲
ABSTRACT :↲
↲
          ┆84┆This manual covers the ETC 601 (Ethernet Controller) Hardware ↓
┆19┆┆8a┆┄┄Selftest program installed in on-board PROM's together with ↓
┆19┆┆8a┆┄┄the bootloader.↲
↲
↲
↲
↲
↲
          (56 printed pages)↲

════════════════════════════════════════════════════════════════════════
↓
┆06┆i↲
↲
┆b0┆┆a1┆TABLE OF CONTENTS┆05┆PAGE↲
↲

╱04002d4e0c0006000000000301483160000000000000000000000000000000000000000000000000050a0f17464b555f69737dffffffffff04╱

╱04002d4e0c00060000000003014831600000000000000000000000000000000000000000000000002d37414b555f69737d8791ffffffffff04╱
↓
↲
↲
1.╞	INTRODUCTION ...................................................   1↲
    1.1  The Object of the Tests ...................................   2↲
    1.2  Automatic Configuration ...................................   2↲
    1.3  Selftest Equipment ........................................   3↲
    1.4  List of Included Tests ....................................   3↲
↲
2.╞	Testadministraor ...............................................   5↲
    2.1  Operator Stimuli of the Selftest ..........................   5↲
    2.2  Parameters ................................................   9↲
    2.3  Test Numbers ..............................................  11↲
    2.4  Output from a Test ........................................  12↲
    2.5  Default Interrupt Handling ................................  12↲
         2.5.1  Instruction Exception ..............................  12↲
         2.5.2  Illegal Interrupt ..................................  13↲
↲
3.  I/O Procedure and Table Indexing ...............................  15↲
    3.1  Input .....................................................  15↲
    3.2  Output ....................................................  15↲
    3.3  Test Selection ............................................  15↲
↲
4.  Selftest Switch Settings .......................................  17↲
↲
5.  Initialization .................................................  18↲
    5.1  Wait States ...............................................  18↲
    5.2  iAPX186 Interrupt Controller ..............................  18↲
    5.3  Programmable Interrupt Controller 8259 ....................  19↲
    5.4  iAPX186 Timer 1 ...........................................  19↲
    5.5  MPSC 8274 Ch. B (Console Interface) .......................  20↲
    5.6  Bustest, Chip Select ......................................  20↲
↲
6.  Automatic Baud Rate Determination ..............................  22↲
↲
7.╞	The Selftest Snooper ...........................................╞	 23↲
    7.1  Press <R> .................................................  24↲
    7.2  Press <S> .................................................  24↲
↲

════════════════════════════════════════════════════════════════════════
↓
┆06┆ ii↲
↲
┆a1┆┆b0┆TABLE OF CONTENTS                                                   PAGE╞	↲
↲
    7.3  Press <I> .................................................  25↲
    7.4  Press <O> .................................................  25↲
↲
┆a1┆┆e1┆8┆e1┆.  Test 0 = Memory Test ...........................................  27↲
    8.1  PROM Checksum Test ........................................  27↲
    8.2  RAM Memory Test ...........................................  28↲
         8.2.2  Memory Test Pattern ................................  28↲
↲
9.  Test 1 = RAM Refresh Test ......................................  30↲
↲
10. Test 2 = iAPX186 DMA Test ......................................  31↲
↲
11. Test 3 = PIC (8259) Interrupt Test .............................  34↲
↲
12. Test 4 = iAPX186 Interrupt Test ................................  35↲
↲
13. Test 5 = Ethernet Test 2 .......................................  36↲
↲
14. Test 6 = 8274 ChA Test .........................................  38↲
↲
15. Test 7 = Floppy Test ...........................................  42↲
╞	15.1 Test Results ..............................................  42↲
    15.2 The Test Disk .............................................  44↲
↲
16. Multibus Configuration and Test Monitor ........................  45↲
╞	16.1 Automatic Configuration ...................................  45↲
    16.2 "Test Slave" Management ...................................  46↲
    16.3 Bootload ..................................................  47↲
↲
17. ETC601 as a "Test-Slave" .......................................  48↲
↲
↲
┆b0┆┆a1┆APPENDIX↲
↲
A.  LAYOUT OF THE MASTER TO SLAVE COMMUNICATION BUFFER ............   49↲
↲

════════════════════════════════════════════════════════════════════════
↓
┆14┆┆b3┆┆06┆┆0b┆↲
┆b0┆┆a1┆1. Introduction.↲
↲
↲
RC3900 is a family based on the Intel Multibus card format. ↓
An actual configuration may consists of one or more CPU-boards, ↓
one or more communication controllers (COM601) and a number of ↓
other controllers. The ETC601 which is covered by this manual may ↓
in some system be the main CPU board, whereas in others it may be ↓
a communication controller only.↲
↲
These Single Board Computers (SBC) may each be considered as ↓
intelligent units. Some with the role as potentional Multibus ↓
masters (ETC601), and some as potentional slaves (COM601).↲
↲
Every RC-manufactured intelligent Multibus SBC will contain a ↓
built-in PROM-based selftest program which can be considered as ↓
an integrated part of the SBC bootload-facility. In other words ↓
the power up of a system could be devided into three phases. The ↓
first would be an initialization of the onboard controller chips. ↓
Second would be a selftest of each SBC, terminated by a ↓
centrallization of informations in one of the boards connected to ↓
the Multibus, namely the "test-master". The third phase is a ↓
common bootload of all boards connected to the Multibus.↲
↲
In the test-phase, an RC3900 system, must be considered as ↓
consisting of one and only one "test-master" card and a number of ↓
"test-slave" cards. After power on the "test-master" and "test-↓
slaves" execute their selftest programs concurrently. When the ↓
"test-master" has finished it's own selftest, it will be able to ↓
monitor messages from the "test-slaves", and to influence these ↓
to i.e. loop in a specific test several times. This means, that ↓
the "test-master" may act as an intelligent monitor for a ↓
debugging session on the "test-slaves".↲
↲
↲

════════════════════════════════════════════════════════════════════════
↓
┆81┆┆b0┆┆a1┆┆f0┆1.1 The Object of the Tests.↲
↲
↲
It is the intention of this system of SBC-selftests to cover ↓
three in the nature different needs.↲
↲
↲
a) ┆84┆The RC3900 is equipped with a power up selftest, consisting of ↓
┆19┆┆83┆┄┄a sequence of different test programs. These tests are ↓
┆19┆┆83┆┄┄organized with rising complexity, so that as far as possible ↓
┆19┆┆83┆┄┄no part of the hardware is used, before it is tested. It ↓
┆19┆┆83┆┄┄should establish a basic level of confidence to the hardware ↓
┆19┆┆83┆┄┄included in the RC3900 system. It requires no interaction from ↓
┆19┆┆83┆┄┄the operator.↲
↲
b) ┆84┆It gives the production department the possibility of using ↓
┆19┆┆83┆┄┄the same test programs as a burn-in facility. This is uptained ↓
┆19┆┆83┆┄┄by the fact that the test programs may be controlled from a ↓
┆19┆┆83┆┄┄connected console. The tests in the ETC601 may each either run ↓
┆19┆┆83┆┄┄in loop-mode, or in a big sequencial loop including all tests. ↓
┆19┆┆83┆┄┄Furthermore there is a possibility of having several SBC's ↓
┆19┆┆83┆┄┄running their tests in parallel, and make them repeat it in ↓
┆19┆┆83┆┄┄the infinite, under the controle of a "test-master".↲
↲
c) ┆84┆It supplies the Technical Service Department with a diagnostic ↓
┆19┆┆83┆┄┄tool, that will assist them during their debugging sessions.↲
↲
↲
┆b0┆┆a1┆┆f0┆1.2 Automatic Configuration.↲
↲
↲
The selftest of the ETC601 consists of a set of different ↓
testprograms which is run in sequence. When the selftest runs in ↓
the default mode with no operator interference, then the selftest ↓
terminates by performing a configuration of the Multibus address-↓
space. It will act as a "test-master" and collect test results ↓
from all connected RC-manufactured SBC's. If none of the ↓
connected SBC's has exhibited an error during the selftest, then ↓
the complete system will enter its bootload phase.↲
↲
┆8c┆┆83┆┆e0┆↓
It is possible by operator intervention to prevent the system ↓
from entering the bootload phase, and instead enter an ↓
interactive test mode. This gives the possibility of monitoring ↓
tests executed cuncurrently on several "test-slaves".↲
↲
↲
┆b0┆┆a1┆┆f0┆1.3 Selftest Equipment.↲
↲
↲
One of the extended tests, the 8274 ChA test (not run by default) ↓
requires a loopback cable either CBL 788 (rear cabinet) or CBL ↓
789 (card edge) to be installed.↲
↲
Another extended test the floppy test requires an iSBX board ↓
named FDC601 to be installed and connected to a 5 1/4" floppy ↓
disk drive.↲
↲
↲
┆b0┆┆a1┆┆f0┆1.4 List of Included Tests.↲
↲
↲
Besides the test programs, the RC3900, SBC Selftests includes a ↓
test administrator and a library of some simple input and output ↓
routines.↲
↲
The simple test administrator administers the mode in which a ↓
particular test is run. Different modes is determined by ↓
parameter settings. See chapter 2.↲
↲
The test programs are as follows:↲
↲
Simple Bustest          - ┆84┆a part of the initialization. This test ↓
┆19┆┆9a┆┄┄may be selected by the 8255 switch PA3 ↓
┆19┆┆9a┆┄┄and is intended to be used for complex ↓
┆19┆┆9a┆┄┄fault finding of bus errors.↲
↲
PROM checksum test      - ┆84┆a simple PROM checkseum is calculated. ↓
┆19┆┆9a┆┄┄It is only executed once after each ↓
┆19┆┆9a┆┄┄power up unitialization.↲
↲
┆8c┆┆83┆┆e0┆↓
RAM memory test         - ┆84┆a modulus 3 pattern test of the board ↓
┆19┆┆9a┆┄┄resident RAM memory.↲
↲
RAM refresh test        - ┆84┆a test of the automatic refreshing of ↓
┆19┆┆9a┆┄┄the RAM-memory.↲
↲
iAPX186 DMA test        - ┆84┆a test of the iAPX186 on-chip DMA ↓
┆19┆┆9a┆┄┄controller.↲
↲
iAPX186 interrupt test  - ┆84┆a test of the on-chip interrupt ↓
┆19┆┆9a┆┄┄controller and its ability to receive ↓
┆19┆┆9a┆┄┄interrupts from the on-chip timer.↲
↲
8259 interrupt test     - ┆84┆a test of the 8259 interrupt controller ↓
┆19┆┆9a┆┄┄and its ability to receive a flagbyte ↓
┆19┆┆9a┆┄┄interrupt.↲
↲
Ethernet test 2╞	- ┆84┆a test that makes an external loop back ↓
┆19┆┆9a┆┄┄data transport with the Ethernet ↓
┆19┆┆9a┆┄┄Controller.↲
↲
8274 CHA test╞	╞	- ┆84┆a test that makes an external loop back ↓
┆19┆┆9a┆┄┄data transport on the 8274 MPSC ↓
┆19┆┆9a┆┄┄controller channel A.↲
↲
Floppy test╞	╞	- ┆84┆a test that verifies the iSBX interface ↓
┆19┆┆9a┆┄┄where a FDC601 Floppy Disc Controller ↓
┆19┆┆9a┆┄┄should be attached.↲
↲
Multibus Test Monitor   - ┆84┆a Monitor that supplies the operator ↓
┆19┆┆9a┆┄┄with remote control the execution of ↓
┆19┆┆9a┆┄┄other SBC selftests.↲
↲
Messages from the test programs are explained along with the ↓
description of the individual test loops. The message "OK" is ↓
used by all test programs, and indicates that no error has been ↓
detected.↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆2. Testadministrator.↲
↲
↲
The ETC601 SBC Selftest is equipped with a simple test ↓
administrator, that administers the mode in which a particular ↓
test is executed.↲
↲
The selftest consists of a set of test programs and a Multibus ↓
configuration module. By default all the tests are run sequential ↓
and terminated by entering the bootloader. The main purpose of ↓
the testadministrator is to compute the address of the next test ↓
in sequence and to generate error messages to the console.↲
↲
The mode and sequence in which the tests are executed may be ↓
controlled from a connected console.↲
↲
Note that the ETC601 SBC Selftest is equipped with two versions ↓
of the testadministrator, one when configurated as a "test-↓
master" and another when configurated as a "test-slave". Which of ↓
the two that is active is determined by the 8255, PA2 strap ↓
(S23), see chapter 4.↲
↲
The description of the differences in the testadministrator, when ↓
in "test-slave" mode is in chapter 17.↲
↲
Fig. 1 gives a simple overview of the Selftest program flow.↲
↲
↲
┆b0┆┆a1┆┆f0┆2.1 Operator Stimuli of the Selftest.↲
↲
↲
The ETC601 SBC Selftest recognizes receive interrupts from the ↓
8274 USART and reads the corrosponding character, which enables ↓
operator manipulation of the Selftest flow. It is a fact, that ↓
the ETC601 SBC Selftest is designed to ensure "no stop" in the ↓
default power up bootload. Therefore be aware, that if any ↓
manipulation of the test flow is wanted, that be looping in the ↓
ETC601 Selftest or monitoring of "test-slaves", the decision must ↓
┆8c┆┆83┆┆c8┆↓
be taken before the bootloading is started, else the control is ↓
lost.↲

════════════════════════════════════════════════════════════════════════
↓
↲

════════════════════════════════════════════════════════════════════════
↓
The ETC601 SBC Selftest is sensitive to several kinds of inputs, ↓
which has different meanings:↲
↲
Press <esc>      : ┆84┆enables interactive change of program flow ↓
┆19┆┆93┆┄┄parameters. See section 2.2.↲
↲
Press <cntrl><@> : ┆84┆starts the test snooper facility. See chapter ↓
┆19┆┆93┆┄┄7.↲
↲
Press <cntrl><Q> : ┆84┆quit present state. This could be an error-↓
┆19┆┆93┆┄┄halt condition or the Multibus test monitoring ↓
┆19┆┆93┆┄┄of "test-slaves".↲
↲
Press <cntrl><S> : ┆84┆request Multibus test monitoring of "test-↓
┆19┆┆93┆┄┄slaves" at the end of the ETC601 selftest.↲
↲
If any other character is typed the ETC601 SBC Selftest will ↓
respond with the following menu and wait for yet another ↓
character to continue.↲
↲
┆f0┆----MENU----↲
<esc>      : change parameters↲
<cntrl><@> : enter snooper↲
<cntrl><Q> : quit present state↲
<cntrl><S> : request debug of test slaves↲
test no.:↲
00007: Floppy test↲
00006: 8274 CHA test↲
00005: Ethernet test 2↲
00004: iAPX186 slave interrupt test↲
00003: PIC test↲
00002: iAPX186 DMA test↲
00001: RAM refresh test↲
00000: memory test↲
----MENU----↲
↲
                       Figure 2: Selftest menu.↲
↲
┆8c┆┆83┆┆c8┆↓
┆a1┆2.2 Parameters.↲
↲
↲
The flow of the ETC601 SBC Selftest is based upon the fact that ↓
each test program receives a set of parameters as input and ↓
deliveres a buffer of error informations as output.↲
↲
The parameters are contained in a 16 bit word variable, a ↓
socalled switch variable, which survives the memory test in an ↓
internal iAPX186 CPU register. This variable contains the ↓
information necessary for the test administrator to manage the ↓
flow of the test program.↲
┆8c┆┆81┆┆90┆↓
┆0e┆↓
↲
┆a1┆name       initial value   ┆06┆comment┆05┆↲
halt bit        1            1: ┆84┆halts execution when an error is ↓
┆19┆┆a0┆┄┄discovered.↲
                             0: bypasses errors.↲
↲
loop bit        0            1: ┆84┆repeats the selection of the test ↓
┆19┆┆a0┆┄┄specified.↲
                             0: sequential flow.↲
↲
wait bit        0            1: ┆84┆used in the configuration phase ↓
┆19┆┆a0┆┄┄by the "test slaves".↲
                             0: ┆84┆release "test-slaves" (only ↓
┆19┆┆a0┆┄┄internal).↲
↲
boot bit        1            1: ┆84┆configurate and bootload after ↓
┆19┆┆a0┆┄┄end of selftest.↲
                             0: repeat own selftest.↲
↲
status bit      0            1: ┆84┆suppress status check.↲
                             0: perform status check.↲
↲
data bit        0            1: suppress data check.↲
                             0: perform data check.↲
↲
not used        0↲
↲
┆a1┆not used        0 ┆05┆↲
┆a1┆test.no.       00               identification of test program┆05┆↲
↲
              Figure 3: Test parameter variable.↲
┆0f┆↓
↲
It is possible for the operator to manipulate these parameters by ↓
typing <esc>. this will cause the following questions, which must ↓
be answered one by one, to appear on the screen.↲
↲
============== Onboard memory size (k bytes): 00256↲
halt on error         ? <Y/N>, Y/↲
┆8c┆┆83┆┆c8┆↓
loop                  ? <Y/N>, N/↲
boot after test       ? <Y/N>, Y/↲
suppress status check ? <Y/N>, N/↲
suppress data check   ? <Y/N>, N/↲
test no.: 00000/↲
↲
                Figure 4: parameter setting.↲
↲
The answers to the "<Y/N>" questions are "Y", "N" or carriage ↓
return.↲
↲
The answer to the "test no.:" question is a legal test number ↓
and/or carriage return.↲
↲
↲
┆b0┆┆a1┆┆f0┆2.3 Test Numbers.↲
↲
↲
The relationship between test numbers and actual test programs ↓
are as follows:↲
┆0e┆↓
↲
┆a2┆┆e2┆┆a1┆Test No   Test name                   ↲
 0        memory test↲
 1        RAM refresh test↲
 2        iAPX186 DMA test               power up↲
 3        PIC test╞	╞	       tests↲
┆a1┆ 4        iAPX186 slave interrupt test↲
┆a1┆┆e1┆ 5        Ethernet test 2↲
 6        8274 CHA test╞	╞	       extended↲
┆a1┆ 7╞	      Floppy test┆e1┆╞	╞	       tests↲
┆0f┆↓
↲
The tests numbered 5-7 are not run in the default power up ↓
sequence. They are included as extended tests and must be ↓
requested explicit by operator intervention.↲
↲
↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆┆f0┆2.4 Output From a Test.↲
↲
↲
At the end of every test program, the selftest will inform about ↓
its state, ok or error, to the operator via the connected ↓
console. The format will normally look as follows:↲

╱04002d4e0a0006000000000201413100000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱

╱04002d4e0c0006000000000301483160000000000000000000000000000000000000000000000000050a0f17464b555f69737dffffffffff04╱
↓
↲
                    <OK>↲
 <test name:>   ,                                          N↲
                    <error type>   ,   <text><error data>  ↲
                                                           0↲

╱04002d4e0a0006000000000301413100000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱

╱04002d4e0a0006000000000201413100000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱
↓
↲
<error type> is a primary errortext informing about the specific ↓
error. <text> is of the kind "addr:", "exp:" and the like.↲
↲
↲
┆b0┆┆a1┆┆f0┆2.5 Default Interrupt Handling.↲
↲
↲
When the ETC601 SBC Selftest has finished the memory test, a set ↓
of default interrupt vectors are placed in the interrupt vector ↓
table. These vectors are primarily used to handle unexpected ↓
interrupts. There are two kinds of unexpected interrupts. The ↓
first is handled by the interrupt procedure for internal iAPX186 ↓
instruction interrupts and the second is handled by the interrupt ↓
procedure for illegal device interrupts.↲
↲
↲
┆b0┆┆a1┆┆f0┆2.5.1 Instruction Exception.↲
↲
↲
If an Instruction Exception interrupt occurs, it is likely to ↓
believe that this was caused by a malfunction of the iAPX186, ↓
because this interrupt is related to some CPU instructions.↲
↲
If this error should occur it will produce the following ↓
errortext:↲
↲
┆b0┆╞	╞	">> instruction exception"↲
↲
The corrosponding error number is 8.↲
↲
↲
┆8c┆┆83┆┆f0┆↓
┆b0┆┆a1┆┆f0┆2.5.2 Illegal Interrupt.↲
↲
↲
At the end of every test loop the reception of interrupts are ↓
enabled. Only two of the interrupt request lines will be used in ↓
the Selftest. This is the MPSC 8274 receive interrupt which is ↓
connected to the 80186 interrupt request INT1 and the parity ↓
interrupt which is connected to the 8259 interrupt request IR3.↲
↲
↲
All other interrupt requests will be decoded as illegal ↓
interrupts and will produce the following errortext:↲
↲
┆b0┆╞	╞	"illegal interrupt"↲
↲
followed by the information about, which level was issuing the ↓
interrupt.↲
↲
The corresponding error number is 5.↲
↲
↲
In the PIC interrupt test and the Multibus interrupt test an ↓
"illegal interrupt" error is produced if it is impossible to ↓
clear the interrupt following the test. This may happen if a ↓
jumper in the interrupt strap area S6 is missing.↲
┆8c┆┆82┆┆ac┆↓
┆0e┆↓
↲
┆a1┆Interrupt name    Vector type   Related instructions┆05┆↲
Divide Error          0         DIV, IDIV↲
Single step           1         ALL↲
NMI                   2         ALL↲
Breakpoint            3         INT↲
INT0 Detected         4         INT0↲
overflow↲
Array Bounds          5         BOUND↲
Unused Opcode         6         Undefined Opcodes↲
┆a1┆ESC Opcode            7         ESC Opcodes┆05┆↲
┆a1┆Interrupt name    Vector type   Related interrupt level┆05┆↲
Timer 0 Interrupt     8               8↲
Reserved              9               -↲
DMA 0 Interrupt      10              10↲
DMA 1 Interrupt      11              11↲
INT0 Interrupt       12*             12↲
INT1 Interrupt       13**            13↲
INT2 Interrupt       14*             14↲
INT3 Interrupt       15**            15↲
Timer 1 Interrupt    18               8↲
┆a1┆Timer 2 Interrupt    19               8┆05┆↲
8259 IR0             20              20↲
8259 IR1             21              21↲
8259 IR2             22              22↲
Par-int              23              23↲
8259 IR4             24              24↲
8259 IR5             25              25↲
8259 IR6             26              26↲
8259 IR7             27              27↲
↲
              Figure 5: Interrupt Level Table.↲
↲
* INT0 and INT2 are used as INT0 and INTA0 for the 8259.↲
** INT1 and INT3 are used as INT1 and INTA2 for the 8274 MPSC.↲
┆0f┆↓

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆┆b0┆3. I/O Procedures and Table Indexing.↓
↲
↲
Included in the ETC601 SBC Selftest is a rather simple handling ↓
of console input and output. Furthermore it uses array tables to ↓
decide which test is to be started and which errortext is to be ↓
written.↲
↲
↲
┆b0┆┆a1┆┆f0┆3.1 Input.↲
↲
↲
Input is handled in the most simple way possible. It works ↓
operator interactive using the one character buffer in the USART ↓
itself.↲
↲
USART receive interrupts is only used to give different ↓
attentions to the selftest. These are <esc>, <cntrl><@>, ↓
<cntrl><Q>, and <cntrl><S>. See section 2.1.↲
↲
↲
┆b0┆┆a1┆┆f0┆3.2 Output.↲
↲
↲
The testoutput from the selftest is a character by character ↓
output without any interrupt generation. The condition for ↓
sending a character to the MPSC 8274 is the status, transmitter ↓
buffer empty.↲
↲
┆b0┆┆a1┆┆f0┆3.3 Test Selection.↲
↲
↲
The test number field of the test parameter switch (see fig. 3) ↓
is used to select the next test to be run. This number is an ↓
index in an array, which for every test contains the offset to ↓
the introduction text and the starting address.↲
↲
┆8c┆┆83┆┆bc┆↓
The ETC601 SBC Selftest will always write the test introduction ↓
text before the test is started.↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆4┆a1┆. Selftest Switch Settings.↲
↲
↲
The ETC601 is equipped with a Selftest configuration switch ↓
(S23), which is connected to the 8255, PA port.↲
↲
PA, bit 0-1 : ┆84┆These bits are used by the memory test to determine ↓
┆19┆┆8e┆┄┄the onboard memory size.↲
↲
PA, bit 2   : ┆84┆this bit is used to configurate the CPU as a "test-↓
┆19┆┆8e┆┄┄host" or "test-slave".↲
↲
PA, bit 3   : ┆84┆This bit, if "1", will cause the Selftest to ↓
┆19┆┆8e┆┄┄continously run in a loop that is testing the CPU ↓
┆19┆┆8e┆┄┄to memory bus and generate chip select on all ↓
┆19┆┆8e┆┄┄onboard controller chips. See chapter 7. This is ↓
┆19┆┆8e┆┄┄intended for complex fault finding.↲
↲
PA, bit 4   : ┆84┆this bit, if "1" makes the testprogram to assume an ↓
┆19┆┆8e┆┄┄8 MHz CPU installed. This information is used to ↓
┆19┆┆8e┆┄┄control the on-chip timer used as baudrate ↓
┆19┆┆8e┆┄┄generator.↲
↲
╞	╞	╞	╞	╞	00 : 128 Kbytes RAM↲
    . . . . .╞	╞	╞	╞	01 : 256 Kbytes RAM↲
   1┆b0┆.┆f0┆ . . . .╞	╞	╞	╞	10 : 512 Kbytes RAM↲
    ! ! ! ┆a1┆! !                               11 : 1 Mbytes RAM   ╞	↲
    ! ! !↲
    ! ! !╞	╞	╞	╞	 0 : Master ETC601↲
    ! ! !┆a2┆┆a1┆┆e2┆   ╞	╞	╞	╞	 1 : Slave ETC601    ↲
    ! !↲
    ! !╞	╞	╞	╞	 0 : Normal mode↲
    ! !┆a1┆╞	╞	╞	╞	 1 : Chip select mode ↲
    !↲
    !╞	╞	╞	╞	 0 : 6 MHz iAPX186 ↲
    !┆a1┆ ╞	╞	╞	╞	 1 : 8 MHz iAPX186    ↲
↲
┆a1┆┆e1┆┆e1┆┆e1┆↲
              ┆a1┆Figure 8 : The S23 jumper area.↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆5. Initialization.↲
↲
↲
After power up/reset the ETC601 SBC Selftest will perform some ↓
initializations of the onboard controllers.↲
↲
The initializations are common for the Selftest and the ↓
bootloader.↲
↲
↲
┆b0┆┆a1┆┆f0┆5.1 Wait States.↲
↲
↲
The PROM and RAM memory will have 0 wait states.↲
↲
Pheripherals on PCS 0-3 will have 1 wait state↲
Pheripherals on PCS 4-6 will have 2 wait states.↲
↲
↲
┆b0┆┆a1┆┆f0┆5.2 iAPX186 Interrupt Controller.↲
↲
↲
The interrupt vector for the iAPX186 controllers is tied to ↓
specific memory locations, equal to the location 20H for the ↓
first vector in the table. See section 2.5.↲
↲
╞	┆1f┆┆a1┆INT0/INT2:↲
         Port  : FF38H↲
         Value : 37H↲
↲
These two pins of the iAPX186 is used for cascading to the extern ↓
interrupt controller 8259.↲
↲
╞	┆a1┆INT1/INT3:↲
        Port  : FF3AH↲
        Value : 37H↲
↲
┆8c┆┆83┆┆bc┆↓
These two pins of the iAPX80186 is used for cascading to the MPSC ↓
8274.↲
↲
╞	┆a1┆Mask Register:↲
        Port  : FF28H↲
        Value : FDH↲
↲
Which will mask the following:↲
↲
╞	I3  : 1╞	; INT3↲
╞	I2  : 1╞	; INT2↲
╞	I1  : 1╞	; INT1↲
╞	I0  : 0╞	; INT0↲
╞	D1  : 1╞	; DMA1↲
╞	D0  : 1╞	; DMA0↲
╞	TRM : 1╞	; Timers↲
↲
↲
┆b0┆┆a1┆┆f0┆5.3 Programable Interrupt Controller 8259.↲
↲
↲
The ETC601 SBC Selftest is configurated with USART parity ↓
interrupt connected to IR3.↲
↲
╞	┆a1┆8259 setup:↲
        ICW 1 : 1BH  ; level triggered input, single mode↲
        ICW 2 : 20H  ; the interrupt vector table starts in 80H↲
        ICW 4 : 1DH  ┆84┆; non buffer mode, normal EOI and not fully ↓
┆19┆┆95┆┄┄; nested.↲
        MASK  : F7H  ; enable parity interrupt on IR3.↲
↲
↲
┆b0┆┆a1┆┆f0┆5.4 iAPX186 Timer 1.↲
↲
↲
Timer 1 is initialized as a baudrate generator in alternating ↓
mode with even duty cycle. If no console is connected the ↓
baudrate is set to 9600 baud, otherwise the Baud Rate ↓
Determination procedure is entered see chapter 6.↲
↲
↲
┆8c┆┆83┆┆ec┆↓
┆b0┆┆a1┆┆f0┆5.5 MPSC 8274 Ch. B (Console Interface).↲
↲
↲
Baudrate factor  : X16↲
Character length : 8 bits↲
Parity           : none↲
Stop bits        : 2↲
Mode             : asynchronous.↲
↲
↲
┆b0┆┆a1┆┆f0┆5.6 Bustest, Chip Select.↲
↲
↲
To ease complex debugging, a CPU to memory bustest and a chip ↓
select loop are supplied as a function of the 8255 PA3 bit.↲
↲
If the 8255 PA3 bit is set to "1" both the bustest and the chip ↓
select loop are executed. First there will be performed input ↓
instructions on all relevant I/O-devices. These are:↲
↲
Port 0, 80H, 100H, 180H, 182H, 184H, 186H, 190H, 1C0H, 1C2H, ↓
200H, 280H and 300H.↲
↲
This might be used for measurements.↲
↲
Secondly a CPU to memory bustest is performed. This loop will use ↓
one word in the RAM-memory. This word is initialized with a zero, ↓
whereafter a one-bit is shifted from the LSB towards the MSB. For ↓
every shift, the pattern is read and checked. Should it occur, ↓
that the pattern was not written, the program will loop ↓
continously trying to read the correct pattern. This means, that ↓
if the bus signals are checked by an oscilloscope and the word ↓
read is found to have the bits 0 and 1 to the one level and the ↓
rest to the zero level, it must be bit 2, that contains the ↓
error.↲
↲
When the one-bit has been shifted through the entire word, this ↓
word is reinitialized to all ones and a zero-bit is shifted ↓
through it.↲
↲
┆8c┆┆83┆┆e0┆↓
If the 8255 PA3 bit is strapped to "0", these measurement loops ↓
are bypassed when powering up.↲

════════════════════════════════════════════════════════════════════════
↓
┆a1┆┆b0┆6. Automatic Baud Rate Determination.↲
↲
↲
After power on or external reset the selftest determines whether ↓
a console is present or not by sampling the DSR signal.↲
↲
If a console is present then the selftest enters the Automatic ↓
Baud Rate determination phase, otherwise the baud rate is set to ↓
9600 Baud and the selftest proceeds.↲
↲
In the Automatic Baud Rate Determination phase the test program ↓
initializes the console to 9600 Baud, and starts to write * ↓
(stars) to the console. Note that the appearance on the operator ↓
console may not be stars, worst case nothing is seen at all. The ↓
selftest waits for the operator to type one or two upper case U, ↓
this will allow the selftest to determine the baud rate of the ↓
attached console. After the determination of the baud rate the ↓
test proceeds. Baud rate recognized are 300, 600, 1200, 2400, ↓
4800 and 9600 Baud.↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆7. The Selftest Snooper.↲
↲
↲
The ETC601 SBC Selftest is equipped with a socalled Snooper ↓
facility, which enables the user to manipulate with RAM data and ↓
input, output ports. It is envoked by entering af <cntrl><@> on ↓
the connected console.↲
↲
The Snooper can be entered at the termination of any of the test ↓
programs.↲
↲
When the Snooper is entered, it will respond with the following ↓
menu:↲
↲
>> Snooper↲
↲
<R> : display memory↲
<S> : substitute word↲
<I> : input from port↲
<O> : output to port↲
<,> : continue selected↲
<X> : exit from snooper↲
↲
*** Note: ┆84┆that canging the content of RAM memory words or ↓
┆19┆┆8a┆┄┄performing output to devices may have som drastic ↓
┆19┆┆8a┆┄┄effect to the Selftest system.↲
↲
When entering the character "X" on the connected console, the ↓
Snooper will return control to the Selftest, which will proceed ↓
its operation.↲
↲
The Snooper works in an interrupt disabled mode.↲
↲
↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆┆f0┆7.1 Press <R>.↲
↲
↲
When the character "R" has been selected, the following two ↓
questions concerning the address will be asked:↲
↲
Segm.: _ _ _ _ Addr.: _ _ _ _↲
↲
These questions must be answered with the address of the first ↓
memory word to be displayed.↲
↲
When the address has been selected, 100 - 16 bit words will be ↓
shown on the display of the connected console. The format of the ↓
output is 20 lines each with the content of 5 words. It is shown ↓
in hexadecimal and in ascii.↲
↲
The following 100 words will be displayed if a "," is entered.↲
↲
A new first address can be selected by reentering the character ↓
"R".↲
↲
↲
┆b0┆┆a1┆┆f0┆7.2 Press <S>.↲
↲
↲
When the character "S" has been selected, the following two ↓
questions concerning the address will be asked:↲
↲
Segm.: _ _ _ _ Addr.: _ _ _ _↲
↲
These questions must be answered with the address of the first ↓
word to be changed.↲
↲
When the address has been selected, the first word is displayed.↓
Now there are two possibilities, either to fill in a new value or↓
to press ",".↲
↲
A new value may consist of from one up to four digits. If less↓
than four digits is input, the number will be entered by pressing↓
"return".↲
↲
┆8c┆┆83┆┆ec┆↓
When a new value has been entered, the value of the next word is ↓
shown.↲
┆b0┆┆a1┆↲
If the character "," is entered, the memory word displayed is ↓
left unchanged, and the next word is displayed.↲
↲
The way to escape the substitute session, is to select a new ↓
function or to exit the snooper.↲
↲
It is possible to fill an amount of i.e. the DMA-transmit buffer ↓
with a certain data pattern by pressing repeat and the data (e.g. ↓
0-F). This is due to the fact that entering 4 digits, will ↓
automatically enter these data into the word and continue with ↓
the next word.↲
↲
↲
┆b0┆┆a1┆┆f0┆7.3 Press <I>.↲
↲
↲
When the character "I" has been selected the Snooper will respond ↓
with the question:↲
↲
port: _ _ _ _↲
↲
When a port number has been entered, the 16 bit word contained in ↓
this port is shown. If the port is an 8 bit type, it is the 8 ↓
LSB, that is significant.↲
↲
↲
┆b0┆┆a1┆┆b0┆┆f0┆7.4 Press <O>.↲
↲
↲
When the character "O" has been selected the Snooper will respond ↓
with the question:↲
↲
port: _ _ _ _↲
↲

════════════════════════════════════════════════════════════════════════
↓
When a port number has been entered, the 16 bit word to be send, ↓
must be entered. If the port is an 8 bit type, it is the 8 LSB, ↓
that is significant.↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆8. Test 0 = Memory Test.↲
↲
↲
The memory test of the ETC601 SBC Selftest consists of two ↓
parts, a PROM checksum test and a RAM memory test. The PROM ↓
checksum test is only run once at power up, whereas the RAM ↓
memory test may be run several times, if requested by the ↓
operator.↲
↲
↲
┆b0┆┆a1┆┆f0┆8.1 PROM Checksum Test.↲
↲
↲
The content of the two PROM's, located in U34 and U35, are ↓
summarixed independently of each other. The summation for each ↓
PROM must result in a zero. For that reason each of the PROM's ↓
contains a compensation byte.↲
↲
U34 contains all the even bytes and U35 all the odd bytes.↲
↲
If the summation is different from zero the following error-↓
message will be output to the console:↲
↲
┆b0┆checksum: <00><EE> error↲
↲
where <00> is the 8 bit sum of U35, and <EE> is the 8 bit sum of ↓
U34.↲
↲
This error means that the content of the program PROM's has been ↓
damaged and that the PROM's must be changed.↲
↲
The corresponding error number is 1.↲
↲
↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆┆f0┆8.2 RAM Memory Test.↲
↲
The RAM memory test of the ETC601 SBC Selftest verifies the ↓
onboard memory.↲
↲
The RAM memory test is able to test onboard memory of four ↓
different sizes. These are 128 k-, 256 k-, 512 k-bytes, or 1 ↓
Mbytes.↲
↲
The size of the memory is configurated in the S23 strap, PA bit 0 ↓
and 1, see chapter 4 fig. 8.↲
↲
The memory test is a register based test not using memory ↓
variables at all, neither for values nor stack. It is testing ↓
every single byte of the onboard memory.↲
↲
This fact leaves only two registers for variables that can ↓
survive the memory test, a pass-counter and the parameter word. ↓
It gives some of the explanation for the simple structure of the ↓
selftest testadministrator.↲
↲
↲
┆b0┆┆a1┆┆f0┆8.2.2 Memory Test Pattern.↲
↲
↲
The onboard Dual Port RAM memory consists of memory chips of 1 ↓
bit x 64 k. the memory test executes 4 passes through the entire ↓
memory, two times writing and two times reading.↲
↲
The test starts in the highest address, derived from the S23 ↓
strap, and inserts the pattern towards lower addresses.↲
↲
When all memory words have been written and tested, they are ↓
tested again with the inversed pattern, this means, all bits are ↓
tested for "zero" and "one" insertion.↲
↲
If an error occurs, a message will be written as follows:↲
↲

╱04002d4e0a0006000000000301453100000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱

╱04002d4e0a0006000000000301413100000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱
↓
┆b0┆memory test: error, addr.: <ssss>:<aaaa>, exp.: <eeee>,rec.: <rrrr>↲

╱04002d4e0a0006000000000301413100000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱

╱04002d4e0a0006000000000301453100000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱
↓
↲
┆8c┆┆83┆┆e0┆↓
Where ↲
╞	<ssss> is the segment address↲
╞	<aaaa> is the offset address↲
 ╞	<eeee> is the expected pattern↲
╞	<rrrr> is the received pattern.↲
↲
In case of an error the testadministrator pass-counter will be ↓
destroyed.↲
↲
↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆9. Test 1 = RAM Refresh Test.↲
↲
↲
The RAM refresh test of the ETC601 SBC Selftest assist in the ↓
verification of the memory control logic functionality. The main ↓
purpose is to discover the decay of data caused by a malfunction ↓
of the RAM refresh circuitry.↲
↲
The test pattern written is a counting pattern and the size of ↓
the test buffer is 4 K, 16 bit words.↲
↲
When the pattern has been written the test program enters a ↓
waiting loop for approximate 5 sec., in which the CPU will not ↓
access the RAM memory. After the delay, the buffer will be ↓
checked to discover any decay.↲
↲
If decay is found, a message is written like this:↲
↲

╱04002d4e0a0006000000000301453100000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱

╱04002d4e0a0006000000000301413100000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱
↓
┆b0┆RAM refresh test: error, addr.: <aaaa>, exp.: <eeee>, rec.: <rrrr>↲

╱04002d4e0a0006000000000301413100000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱

╱04002d4e0a0006000000000301453100000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱
↓
↲
Where↲
╞	<aaaa> ┆84┆is the offset address relative to the start of the ↓
┆19┆┆8b┆┄┄test buffer.↲
    <eeee> is the pattern written in this word.↲
╞	<rrrr> is the pattern read from this word.↲
↲
The corresponding error number is 9.↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆10. Test 2 = iAPX186 DMA Test.↲
↲
↲
The iAPX186 DMA Test of ETC601 SBC Selftest applies to the ↓
verification of the functionality of the two on-chip iAPX186 DMA ↓
channels.↲
↲
Both DMA channels are initialized to memory to memory transports. ↓
Channel 0 will transfer to the lowest address of its receive ↓
buffer first, and channel 1 will transfer to the highest address ↓
of its receive buffer first.↲
↲
Both channels are started and will transfer bytes simultaneously. ↓
The procedure of the test is to check that the transfer count ↓
reaches zero before a programmed time-interval elapses. The ↓
timeout is approximate 200mS.↲
↲
If both channels have transferred the test buffer of 8 k bytes ↓
each without timeout, a datacheck of both receive buffers is ↓
performed. The data compare routine is based upon a string ↓
compare instruction. If a difference between the transmit and ↓
receive buffer is discovered, the 16 bit word in question is ↓
fetched from memory and shown as an errormessage. In other words, ↓
the errorneous word is fetches in both the string compare ↓
instruction and for the errormessage. This could mean, that if ↓
the discovered error was due to a sporadic memory error, the ↓
shown expected and received values could turn out to be equal.↲
↲
the control word of channel 0 is initialized to B606H and the ↓
control word of channel 1 is initialized to DA06H.↲
┆8c┆┆82┆┆e8┆↓
┆0e┆↓
↲
<                         ┆a1┆   Register Address ↲
┆a1┆ Register name            Ch. 0    Ch.1      ↲
 Control Word             FFCAH    FFDAH↲
 Transfer Count           FFC8H    FFD8H↲
 Destination Pointer      FFC6H    FFD6H↲
 (upper 4 bits)↲
 Destination Pointer      FFC4H    FFD4H↲
 Source Pointer           FFC2H    FFD2H↲
 (upper 4 bits)↲
┆a1┆ Source Pointer           FFC0H    FFC0H     ↲
↲
             Figure 13: DMA Control Block Format.↲
┆0f┆↓
↲
If the Transfer Count of one of the channels does not reach zero ↓
before timeout, a message as follows will be written:↲
↲
┆b0┆iAPX186 DMA test: transfer count error, reg.:<aaaa>, exp.:<eeee>↲
              ╞	╞	╞	         ┆b0┆rec.:<rrrr>↲
↲
The corresponding error number is 4.↲
↲
where↲
╞	<aaaa> is the related Transfer Count Register.↲
╞	<eeee> is the expected value, always zero.↲
╞	<rrrr> is the content of the Transfer Count Register.↲
↲
If a data error is discovered, a message as follows will be ↓
written.↲
↲
┆b0┆iAPX186 DMA test: data error, addr.:<aaaa>, exp.:<eeee>,↲
                  ┆b0┆                         rec.: <rrrr>↲
↲
The corresponding error number is 3.↲
↲
where↲
╞	<aaaa> is the offset address in the receive buffer.↲
╞	<eeee> is the 16 bit word in the transmit buffer.↲
┆8c┆┆83┆┆c8┆↓
╞	<rrrr> is the 16 bit word in the received buffer.↲
↲
Both errors might be internal to the iAPX186 chip. ↓

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆11. Test 3 = PIC (8259) Interrupt Test.↲
↲
↲
The PIC (8259) Interrupt Test of the ETC601 SBC Selftest applies ↓
to the verification of the functionality of the 8259 interrupt ↓
controller.↲
↲
The procedure of the test is that the CPU writes the flagbyte. ↓
This will cause an interrupt request on the PIC level IR4. It is ↓
verified that the interrupt is generated within a programmed time ↓
interval, and that the interrupt arrived on the expected level. ↲
If no interrupt has arrived within the 4 mSec. a message is ↓
written like this:↲
↲
┆b0┆PIC test: interrupt timeout.↲
↲
The corresponding error number is 6.↲
If an interrupt has arrived, but on an unexpected level, a ↓
message is written like this:↲
↲
┆b0┆PIC test: illegal interrupt serviced, lev.: <aaaa>↲
↲
The corresponding error number is 11.↲
↲
where↲
╞	<aaaa> is the interrupt request level.↲
↲
Note that the default jumper settings in S6 giving flagbyte ↓
interrupt on IR4 is necessary to perform this test. (Consult ↓
hardware reference manual for strapping instructions).↲
↲
Failure to install this jumper will cause an error 5: "illegal ↓
interrupt".↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆12. Test 4 = iAPX186 Interrupt Test.↲
↲
↲
The iAPX186 Interrupt Test of the ETC601 SBC Selftest applies to ↓
the verification of the functionality of the on-chip interrupt ↓
controller.↲
↲
The procedure of the test is to start the internal timer 2 with a ↓
count value equal 1. It is tested that an interrupt is generated ↓
within a programmed time interval, and that the interrupt arrived ↓
on the expected level.↲
↲
If no interrupt has arrived within 4 mSec, a message is written ↓
like this:↲
↲
┆b0┆iAPX186 slave interrupt test: timeout↲
↲
The corresponding error number is 13.↲
↲
If an interrupt has arrived, but on an unexpected level, a ↓
message is written like this:↲
↲
┆b0┆iAPX186 slave interrupt test: illegal level serviced,↲
                              ┆b0┆           lev.: <aaaa>↲
↲
The corresponding error number is 12.↲
↲
where↲
╞	<aaaa> is the actual level that interrupted.↲
↲
Both errors should be localized internal to the iAPX186 chip.↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆13. Test 5 = Ethernet Test 2.↲
↲
↲
The ethernet test 2 applies to the verification of the 82586 co-↓
processor and its interface circuitry. The test makes an external ↓
data loopback test on the ethernet chip.↲
↲
First a software reset of the ethernet chip is made. This reset ↓
causes the ethernet controller to issue an interrupt when the ↓
reset is complete. If no interrupt is received an error message ↓
is generated like this:↲
↲
┆b0┆Ethernet test 2 : missing reset interrupt↲
↲
Corresponding error number is 61.↲
↲
Second a configure command is executed to the ethernet controller ↓
in order to select the external loopback mode. Again the sleftest ↓
awaits a configure complete interrupt, and if none is received an ↓
error message is generated like this:↲
↲
┆b0┆Ethernet test 2 : configuration command not accepted↲
↲
Corresponding error number is 58.↲
↲
Third a transmit frame command is executed. The ethernet address ↓
is the broadcast address and the message length is 14 bytes. If ↓
the transmit frame command is not accepted by the ethernet ↓
controller an error message is generated like this:↲
↲
┆b0┆Ethernet test 2 : transmit command  not accepted↲
↲
corresponding error number is 59.↲
↲
Fourth, when the transmit frame command is completed the data ↓
sent is copared with the data received and if not the same an ↓
error message is generated otherwise the ethernet interface is ↓
said to be OK.↲
↲
┆8c┆┆83┆┆d4┆↓
┆b0┆Ethernet test 2 : data error  add.:<aaaa>, exp.:<eeee>,↲
┆b0┆╞	╞	╞	╞	         rec.:<rrrr>↲
┆81┆↲
Corresponding error number is 60.↲
↲
where↲
     add.:<aaaa> is offset address in the receive buffer↲
     exp.:<eeee> is the expected value from the transmit buffer↲
     rec.:<rrrr> is the received value in the receive buffer↲
↲
Another error message is written if the ethernet controller ↓
generates an interrupt without having reset the command just ↓
executed.↲
↲
┆b0┆Ethernet test 2 : interrupt but command word not cleared↲
↲
Corresponding error number is 48.↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆14. Test 6 = 8274 ChA Test.↲
↲
↲
The 8274 test applies to the verification of the X.21 and V.24 ↓
interface build around the MPSC 8274 Channel A. This test is not ↓
part of the default power up test. It must be specially requsted ↓
by operator intervention. Before execution of the test it is ↓
necessary to install a loopback cable CBL 788(rear cabinet) or ↓
CBL 789 (card edge).↲
↲
The test examines the status signals for both the X.21 and the ↓
V.24 interface. A datatest in interrupt driven mode is made on ↓
both the X.21 and the V.24 interface. The capability of ↓
datatransport in DMA driven mode is tested on the V.24 interface.↲
↲
If no loopback cable is installed the test responds with this ↓
message:↲
↲
┆b0┆8274 CHA test : No testplug installed.↲
↲
Corresponding error number is 55.↲
↲
Note that this test rises the /RTS from the MPSC 8274 to test if ↓
the testplug is present. Therefore this error may be caused by a ↓
hardware error instead of missing testplug.↲
↲
If an error is detected during the status signal test an error ↓
message is written.↲
↲
┆b0┆8274 CHA test : V.24 status error  exp.:<000e>, rec.:<000r>↲
↲
Corresponding error number is 53.↲
↲
OR↲
↲
┆b0┆8274 CHA test : X.21 status error  exp.:<000e>, rec.:<000r>↲
┆82┆↲
Corresponding error number is 54.↲
↲
┆8c┆┆83┆┆d4┆↓
The received value holds the received CTS, DCD, CI ans DSR ↓
signals. In the V.24 status test the difference between expected ↓
and received must be interpreted like this:↲
↲
╞	expected bit 0 not equal received bit 0 = DCD error↲
╞	expected bit 2 not equal received bit 2 = CTS error↲
╞	expected bit 3 not equal received bit 3 = CI error↲
╞	expected bit 4 not equal received bit 4 = DSR error↲
↲
In the X.21 status test the difference between expected and ↓
received value must be intepreted like this:↲
↲
╞	expected bit 0 not equal received bit 0 = ┆84┆Clearing State ↓
┆19┆┆ae┆┄┄error (DCD)↲
╞	expected bit 2 not equal received bit 2 = ┆84┆Indication error ↓
┆19┆┆ae┆┄┄(CTS)↲
╞	expected bit 3 not equal received bit 3 = ┆84┆Clearing state ↓
┆19┆┆ae┆┄┄error (DCD)↲
╞	expected bit 4 not equal received bit 4 = ┆84┆Indication error ↓
┆19┆┆ae┆┄┄(CTS)↲
↲
↲
If an error is detected during the data test one of the following ↓
errormessages are produced:↲
↲
┆b0┆8274 CHA test : V.24 data error  addr.:<aaaa>, exp.:<eeee>,↲
┆19┆┄┆81┆┆82┆╞	╞	╞	╞	             rec.:<rrrr>↲
┆81┆↲
Corresponding error number is 49.↲
↲
↲
┆b0┆8274 CHA test : X.21 data error  addr.:<aaaa>, exp.:<eeee>,↲
┆b0┆╞	╞	╞	╞	╞	   rec.:<rrrr>↲
┆81┆↲
Corresponding error number is 51.↲
↲
┆b0┆8274 CHA test : DMA data error  addr.:<aaaa>, exp.:<eeee>,↲
┆b0┆╞	╞	╞	╞	╞	  rec.:<rrrr>↲
┆8c┆┆83┆┆c8┆↓
┆81┆↲
Corresponding error number is 57.↲
↲
where↲
     add.:<aaaa> is offset address in the receive buffer↲
     exp.:<eeee> is the expected value from the transmit buffer↲
     rec.:<rrrr> is the received value in the receive buffer↲
↲
The data test of the 8274 is executed with 8274 interrupts ↓
enabeled. If a exception interrupts is received during the ↓
data transfer an error message is produced.↲
↲
If the interrupt occur in the interrupt driven mode a message is ↓
generated like this:↲
↲
┆b0┆┆b0┆8274 CHA test : Interrupterror in interruptmode  rec.:<rrrr>↲
↲
Corresponding error number is 52.↲
↲
If the interrupt occur in the DMA mode a message is generated ↓
like this:↲
↲
┆b0┆8274 CHA test : Interrupterror in DMA mode  rec.:<rrrr>↲
↲
Corresponding error number is 56.↲
↲
Where↲
     ┆84┆rec.:<rrrr> holds the vectorcode related to the exception ↓
┆19┆┆85┆┄┄interrupt.↲
↲
If the data transfer is not completed within 250 ms. a timeout ↓
message is generated.↲
↲
┆b0┆8274 CHA test : Timeout↲
↲
Corresponding error number is 50.↲
↲
┆8c┆┆83┆┆bc┆↓
This message shoulæd indicate that the 8274 interrupt system ↓
failed.↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆15. Test 7 = Floppy Test.↲
↲
↲
The floppy test applies to the verification of the functionality ↓
of the FDC601 controller and attached hardware. The FDC601 is a ↓
iSBX (Single Board eXtention) controller. The test should not be ↓
executed if no FDC601 is present.↲
↲
The test is an Extended test which is not executed by default ↓
after power on, but only when requested explicitely by an ↓
operator selecting loop in test no. 7, or setting the "boot after ↓
test" to "N".↲
↲
The procedure of the test is to write, read and compare a set of ↓
test pattern over a set of tracks on the floppy disk. The test ↓
use only sector one on the tracks, but both sides of the floppy ↓
disc are tested.↲
↲
↲
┆a1┆15.1 Test Results.↲
↲
↲
The floppy test will respond with one of the following texts to ↓
inform the operator about the outcome of the test.↲
↲
┆b0┆┆b0┆Floppy test : OK↲
↲
The result "OK" indicates a well succeded writing/reading and ↓
comparing for all sectors tested as well as proper functioning ↓
hardware, e.g. interrupt system and DMA transferring.↲
↲
┆b0┆Floppy test : FDC601 not installed↲
┆b0┆↲
Corresponding error number is 39.↲
↲
The result "FDC601 not installed" is evident, e.g. the SBX board ↓
FDC601 is not installed on top of the ETC601 board.↲
↲
┆8c┆┆83┆┆c8┆↓
┆b0┆Floppy test : drive not ready↲
↲
Corresponding error number is 31.↲
↲
The result "drive not ready" normally indicates that no disc is ↓
installed in the drive or the door is not closed. If these ↓
precautions are satisfied, a hard error exist, e.g. bad drive, ↓
bad FDC601 board, missing cables ti the drive, etc.↲
↲
┆b0┆Floppy test : write protect↲
┆b0┆↲
Corrosponding error number is 32.↲
↲
The result "write protect" is evident, e.g. the inserted floppy ↓
disk is write protected. Remove the disk protection for proper ↓
function.↲
↲
┆b0┆Floppy test : seek error↲
┆b0┆↲
Corresponding error number is 33.↲
↲
┆b0┆Floppy test : CRC error↲
┆b0┆↲
Corresponding error number is 34.↲
↲
┆b0┆Floppy test : record not found↲
┆b0┆↲
Corresponding error number is 35.↲
↲
The result "seek error", "CRC error" and "record not found" ↓
normally indicates a hard error on the inserted disk or that the ↓
disc is not formatted correct.↲
↲
┆b0┆Floppy test : lost data↲
┆b0┆↲
Corresponding error number is 36.↲
↲
┆8c┆┆83┆┆bc┆↓
The result "lost data" might indicate lack of data acknowledge ↓
from the FD1797 to the iAPX186 CPU within the DMA transfers, e.g. ↓
a strap on the ETC601 board.↲
↲
┆b0┆Floppy test : write fault↲
↲
Corresponding error number is 37.↲
↲
The result "write fault" might indicate hard errors on the ↓
inserted disk, but might also indicate hard errors within the ↓
hardware system.↲
↲
┆b0┆Floppy test : receive data error, reg:<aa>, exp: <ee>, rec: <rr>↲
↲
┆b0┆┆f0┆Corresponding error number is 38.↲
↲
The result "receive data error" indicates an inconsistence with ↓
┆19┆┄┆81┆┄respect to the data pattern read from the floppy disk. <aa> gives ↓
┆19┆┄┆81┆┄the local offset address in the received data block where the ↓
┆19┆┄┆81┆┄inconsistence was found, <ee> gives the expected value and <rr> ↓
┆19┆┄┆81┆┄gives the received value. This result could indicate a transfer ↓
┆19┆┄┆81┆┄error, due to speed variations.↲
↲
↲
┆a1┆15.2 The Test Disk.↲
↲
↲
Before the floppy test initiated, a formatted disk must be ↓
inserted in the floppy drive. The disk inserted must be double ↓
sided, double density, soft sectoring with track density of 96 ↓
TPI. The format of the disk corresponds with a CP/M format, e.g ↓
have 77 tracks where each track has 10 sectors of each 512 bytes ↓
length.↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆16. Multibus Configuration and Test Monitor.↲
↲
↲
The socalled Multibus Test Monitor is deviced into two phases, an↓
automatic configuration with decoding of errors produced by the ↓
"test-slaves" and an interactive test phase, which must be ↓
requested by the operator.↲
↲
In the configuration phase the "test host" will produce a ↓
complete configuration table of the total RC3900 Multibus System.↲
↲
Example of the Multibus configuration:↲
┆0e┆↓
↲

╱04002d4e0a00060000000003014c3100000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱

╱04002d4e0a0006000000000301413100000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱
↓
┆a2┆┆05┆↲
Entry no. ,MB block ,state ,name ,RAM size * 64k, flag offset * 16k,err no.↲
┆a2┆┆05┆↲
 00004       4000↲
 00007       7000    ready COM601     00003            00004┆05┆00000  ↲
 00010       A000    ready COM601     00001            00002         00002↲

╱04002d4e0a0006000000000301413100000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱

╱04002d4e0a00060000000003014c3100000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱
↓
┆0f┆↓
↲
The interactive testphase, where it is possible to control the ↓
execution of tests on different "test-slaves", will only be ↓
entered, when requested by the operator (press <cntrl><S>) during ↓
the "test-master" selftest).↲
↲
↲
┆b0┆┆a1┆┆f0┆16.1 Automatic Configuration.↲
↲
↲
When a "test-master" has terminated its selftest, it will always ↓
perform an automatic Multibus configuration, in order to locate ↓
active "test-slaves" and eventually inactive memory areas.↲
↲
It is a convention that every "test-slave", when terminating its ↓
selftest will communicate with "test-master" by means of a ↓
predefined protocol.↲
↲
┆8c┆┆83┆┆bc┆↓
The configuration table will be shown on the console, and it is ↓
possible for the operator to decide, if it corresponds with the ↓
actual configuration. The entries, which has passed a handshake ↓
with the "test-master" will have the state "READY" and an ↓
identification name set in the configuration table.↲
↲
If one or more of the "test-slaves" have produced an error, the ↓
communication buffer for the related "test-slave" will contain ↓
some data and text, which will identify the error. The text in ↓
the buffer will be shown on the console as an errortext. About ↓
"test slave" errortexts, please consult the related manual.↲
↲
If the "test-master" has halted on one of these errors, it is ↓
possible to continue by typing <cntrl><Q>.↲
↲
↲
┆b0┆┆a1┆┆f0┆16.2 "Test Slave" Management.↲
↲
↲
The default action of the ETC601 SBC Selftest is to enter the ↓
bootloader when the configuration phase has been terminated. This ↓
can be overwritten by the operator typing <cntrl><S> during the ↓
"test-master" selftest.↲
↲
When the interactive test phase has been selected the following ↓
text will be written, when the automatic configuration has been ↓
terminated:↲
↲
┆b0┆>> Multibus monitoring↲
↲
Each of the connected "test slaves" has its own seperate set of ↓
parameters, which has the same format as those used by the CPU. ↓
↲
In the interative phase it is possible to start one or several ↓
"test-slaves" looping in the complete selftest or in a specific ↓
testprogram.↲
↲
┆8c┆┆83┆┆bc┆↓
Until a "test-slave" has received its first set of parameters, it ↓
will stay in an inactive mode.↲
↲
Every time "test-slave" recognizes an error, the related message ↓
will be written on the console.↲
↲
By typing <cntrl><S>, the configuration will be shown. When the ↓
interactive phase is selected new parameters for a "test-slave" ↓
may be entered after the configuration table has been written.↲
↲
An errormessage will be retyped on the console, when a change of ↓
parameters has been made.↲
↲
↲
┆b0┆┆a1┆┆f0┆16.3 Bootload.↲
↲
↲
Default action of the ETC601 SBC selftest is to enter the ↓
bootloader immediately after the configuration.↲
↲
When testing in the interactive phase the character <cntrl><Q> ↓
has two purposes.↲
↲
a) ┆84┆When the "test-master" has halted due to a "test slave" error, ↓
┆19┆┆83┆┄┄this "halt" can be quit by typing <entrl><Q>.↲
↲
b) ┆84┆When running in the interactive phase and typing <cntrl><Q>, ↓
┆19┆┆83┆┄┄this will force all the "test-slaves" and finally the "test- ↓
┆19┆┆83┆┄┄master" to enter the bootloader.↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆17. ETC601 as a "Test-slave".↲
↲
↲
It is possible to configurate a ETC601 as a "test-slave" by the ↓
switch shown in fig. 9. This means that several ETC601 boards can ↓
be managed by one "test-master".↲
↲
Specialities:↲
↲
a) ┆84┆When looping in the memory test, the "test-slave" will ┆a1┆not┆e1┆ ↓
┆19┆┆83┆┄┄communicate with the "test-master".↲
↲
b) ┆84┆When both the parameters "suppress status check" and "suppress ↓
┆19┆┆83┆┄┄data check" is set to "Y", it will only communicate in case of ↓
┆19┆┆83┆┄┄errors.↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆A. LAYOUT OF THE MASTER TO SLAVE COMMUNICATION BUFFER↲

╱04002d4e0a0006000000000201413100000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱

╱04002d4e0a0006000000000301413100000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱
↓
↲
↲
┆a1┆┆05┆↲
!xxxx:FFFF    ! id field     !        !┆05┆!↲
┆a1┆!     FFFE    ! state        !        !┆05┆!↲
!     FFFD    !         'C'  !        ! ┆05┆!↲
!     FFFC    !         'O'  !        !                         !↲
!     FFFB    ! name    'M'  !        !                         !↲
!     FFFA    !         '6'  !        ! ┆05┆!↲
!     FFF9    !         '0'  !        !┆05┆!↲
┆a1┆!     FFF8    !         '1'  !        !                         !↲
!     FFF7    ! ramsize      !        !┆05┆!↲
!     FFF6    ! flag_offset  !        !┆05┆!↲
┆a1┆!     FFF5    ! data pat     !        !┆05┆!↲
!     FFF4    ! switch       !        ! ┆05┆!↲
┆a1┆!     FFF3    ! test no      !        !┆05┆!↲
┆a1┆!     FFF2    ! param flag   !        !┆05┆!↲
!     FFF1    !              !        ! ┆05┆!↲
!     FFF0    !              !        !┆05┆!↲
!     ****    ! slave error  !        !┆05┆!↲
!     ****    ! text string  !        !┆05┆!↲
!     ****    ! max 80 chars !        !┆05┆!↲
!     FFA3    !              !        !┆05┆!↲
┆a1┆!     FFA2    !              !        !┆05┆!↲
!     FFA1    ! text length  !        ! ┆05┆!↲
┆a1┆!     FFA0    !              !        !                         !↲
!     FF9F    ! aux3_data    !        !┆05┆!↲
┆a1┆!     FF9E    !              !        !┆05┆!↲
!     FF9D    ! aux2_data    !        !┆05┆!↲
┆a1┆!     FF9C    !              !        !┆05┆!↲
!     FF9B    ! aux1_data    !        !┆05┆!↲
┆a1┆!     FF9A    !              !        !┆05┆!↲
!     FF99    ! rec_data     !        !┆05┆!↲
┆a1┆!     FF98    !              !        !┆05┆!↲
!     FF97    ! exp_data     !        !┆05┆!↲
┆a1┆!     FF96    !              !        !┆05┆!↲
!     FF95    ! adr_data     !        !┆05┆!↲
┆a1┆!     FF94    !              !        !┆05┆!↲
!     FF93    ! err_no       !        !┆05┆!↲
┆a1┆!     FF92    ! error flag   !        !┆05┆!↲
┆1a┆┆1a┆onding error number i.↲
↲
┆b0┆Floppy test : drive not reagurat↓
┆b0┆ot found↲
┆b0┆↲
Corresponding error number i

Full view