Trailing-Edge
-
PDP-10 Archives
-
AP-D543V_SB
-
dxmpa.seq
There are 2 other files named dxmpa.seq in the archive. Click here to see a list.
MAINDEC-10-DXMPA-L-D PAGE 1
SEQ 0001
PRODUCT CODE: MAINDEC-10-DXMPA-L-D
PRODUCT NAME: DX10 IO PROCESSOR MICROCODE
VERSION 14
AUTHOR: FRANK BERNABY, DALE R. KECK, RICH MURATORI
MAINTAINER: DIAGNOSTIC ENGINEERING
DATE: JANUARY 1978
COPYRIGHT (C) 1975, 1978
DIGITAL EQUIPMENT CORPORATION
THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A
SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE INCLUSION
OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE, OR ANY OTHER
COPIES THEREOF, MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE
TO ANY OTHER PERSON EXCEPT FOR THE USE ON SUCH SYSTEM AND TO ONE WHO
AGREES TO THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE
SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC.
THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY
DIGITAL EQUIPMENT CORPORATION.
DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
MAINDEC-10-DXMPA-K-D PAGE 2
SEQ 0002
TABLE OF CONTENTS
-----------------
SECTION REMARKS PAGE
------- ------- ----
1.0 INTRODUCTION 3
2.0 ERROR HANDLING 5
2.1 NORMAL STATUS LOGOUT FORMAT 5
2.2 EXTENDED STORE FORMAT 6
2.3 SEQUENCE ERROR TYPE CODE TABLE 7
3.0 HARDWARE READ-IN 8
4.0 MICRO-DIAGNOSTICS 9
4.1 MULTIPLE ENTRY POINTS 10
4.2 ENTRY POINT 205 10
4.3 DIAGNOSTIC ERROR CODES 11
5.0 HISTORY FILE 13
6.0 FLOW CHARTS
7.0 MICRO-DIAGNOSTIC LISTING
MAINDEC-10-DXMPA-K-D PAGE 3
SEQ 0003
1.0 INTRODUCTION
THE DX10 MICROCODE IS A PDP-8 PROGRAM WHICH MANIPULATES THE
DX10 HARDWARE TO ALLOW THAT HARDWARE TO FUNCTION AS AN INDEPENDENT
I/O PROCESSOR. THIS PROCESSOR, THE DX10, HAS THE ABILITY TO INTERFACE
TO THE PDP-10 VIA BOTH THE I/O BUS AND THE MEMORY BUS. IT ALSO INTERFACES
TO AN STC MAGTAPE CONTROLLER, THE TX01, VIA AN IBM TYPE CHANNEL BUS.
THE LOGIC WITHIN THE DX10 IS MANIPULATED BY A SERIES OF SPECIAL
IOT'S. BASICALLY, THEY ALLOW THE SETTING AND CLEARING OF FLIP-FLOPS,THE
SELECTION OF REGISTERS, AND THE LOADING AND READING OF THESE REGISTERS.
THE MICROCODE WILL PERFORM THESE SEQUENCES IN A PRESCRIBED MANNER
WHICH WILL ALLOW IT TO FETCH COMMANDS FROM PDP-10 MEMORY AND PROCESS
THESE COMMANDS. THE COMMANDS WILL TYPICALLY DIRECT THE MICROCODE TO
READ AND WRITE MAGTAPE.
THE MICROCODE IS LOADED BY A PDP-10 PROGRAM USING THE
DX10 HARDWARE FEATURE WHICH ALLOWS LOADING AND READING THE MEMORY
OF THE PDP-8A WITH DATAO/DATAI COMMANDS.
IT IS THEN STARTED AT PDP-8 MEMORY LOCATION 200. THE 8 WILL
FIRST INITIALIZE THE DX10 THEN WILL PERFORM A SYSTEM RESET ON
THE MAGTAPE CONTROLLER. A SET OF DIAGNOSTICS WILL BE RUN TO INSURE
THE HARDWARE IS FUNCTIONAL. THEN THE 8 ENTERS AN IDLE LOOP WHERE
IT WAITS FOR FURTHER DIRECTION FROM THE PDP-10.
MAINDEC-10-DXMPA-K-D PAGE 4
SEQ 0004
THIS DIRECTION COMES FROM THE CHANNEL COMMAND REGISTER. THE
PDP-10 CAN PUT 4 BASIC COMMANDS INTO THIS REGISTER.
IF THE 10 SETS BOTH CLEAR AND CONTINUE IN THE COMMAND REGISTER,
THIS TELLS THE 8 TO START THE CHANNEL PROGRAM AT THE ADDRESS SPECIFIED
IN THE ICPC REGISTER.
IF THE 10 SETS ONLY CONTINUE, THIS TELLS THE 8 TO CONTINUE
THE CHANNEL PROGRAM AT THE ADDRESS SPECIFIED IN THE CPC REGISTER.
IF THE 10 SETS ONLY CLEAR, THIS TELLS THE 8 TO PERFORM A SYSTEMS
RESET.
IF THE 10 SETS THE STATUS REQUEST BIT, THIS TELLS THE 8 TO
PERFORM A STORE STATUS OPERATION. THE ADDRESS OF THE STATUS BUFFER
COMES FROM THE ADDRESS SPECIFIED IN THE ICPC REGISTER.
ONCE A CHANNEL PROGRAM IS STARTED IT CONTINUES RUNNING UNTIL
ONE OF TWO THINGS HAPPENS. EITHER THE TAPE SYSTEM ENCOUNTERS AN ERROR
OR A CHANNEL COMMAND IS FETCHED WITH THE GO BIT OFF.
IF AN ERROR IS STOPPING THE CHANNEL PROGRAM, THE MICROCODE WILL
CLEAR THE CONTINUE BIT, PERFORM A STORE STATUS OPERATION, GENERATE
A PDP-10 INTERRUPT, AND FINALLY RETURN TO THE IDLE LOOP FOR FURTHER
INSTRUCTION FROM THE PDP-10.
THE MICROCODE IS RESPONSIBLE FOR DETECTING SEVERAL ERRORS.
IF IT SHOULD DETECT ONE OF THESES IT WILL SET THE CORRECT BIT IN THE CSR
AND STORE ERROR STATUS.
THESE ERRORS ARE:
1.SELECTION ERROR- THIS ERROR WILL OCCUR IF THE CHANNEL
PROGRAM SENDS THE ADDRESS OF A DEVICE
THAT IS NOT PRESENT.
2.SEQUENCE ERROR- THE MICROCODE WILL ENCODE THE TYPE OF
SEQUENCE ERROR INTO THE CODE FIELD OF THE
STATUS STORE INTO ICPC+1.(SEE TABLE IN SECTION 2.3)
3.DEVICE PARITY- THIS ERROR INDICATES A CHANNEL BUS PARITY
ERROR OCCURRED WHILE READING OR WRITTING DATA.
4.LENGTH ERROR- THIS ERROR MEANS THAT THE RECORD JUST
READ WAS EITHER SHORTER OR LONGER THAN EXPECTED.
5.OPI ERROR- OPERATION INCOMPLETE ERROR SETS IF A TRANSFER
FAILS TO COMPLETE WITHIN 10 SECONDS.
(EACH XFER CMD WORD IS TIMED)
MAINDEC-10-DXMPA-K-D PAGE 5
SEQ 0005
2.0 ERROR HANDLING
THIS MICRO-CODE WILL AUTOMATICALLY ATTEMPT RECOVERY FROM
TAPE ERRORS IF BIT 3 OF THE DEVICE COMMAND INSTRUCTION IS SET.
ERRORS THAT CAN BE RECOVERED ARE DATA CHECK, DX10 SILO
DATA PARITY ERRORS, AND INTERMITTENT BUS OUT CHECKS.
WRITE ERRORS ARE RETRIED BY BACKSPACING OVER THE RECORD JUST
WRITTEN, READING IN REVERSE UNTIL A RECORD WITH NO ERROR IS FOUND OR LOAD
POINT IS FOUND, THEN SPACING OVER THE GOOD RECORD, ERASING 4.2 INCHES
OF TAPE AND WRITING THE RECORD AGAIN. IF THE ERROR PERSISTS, THE
SEQUENCE IS REPEATED UP TO 75 TIMES, EACH TIME ERASING AN ADDITIONAL
3.6 INCHES OF TAPE.
READ ERRORS ARE RETRIED BY ATTEMPTING TO RE-READ THE RECORD IN
THE SAME DIRECTION 30 TIMES, MOVING THE TAPE PAST THE TAPE CLEANER
BLADE AFTER EVERY FOURTH READ. IF THESE RE-READS FAIL, THE RECORD IS
READ IN THE OPPOSITE DIRECTION UP TO A MAXIMUM OF 30 TIMES. THE READ
IN OPPOSITE DIRECTION IS NOT ATTEMPTED IF THE RECORD IS LONGER THAN
THE LENGTH REQUESTED OR IF THE RECORD CANNOT BE READ INTO THE SAME
POSITION IN MEMORY BECAUSE OF HARDWARE RESTRICTIONS. THE READ OPPOSITE
IS ACCOMPLISHED BY BUILDING A CHANNEL TRANSFER LIST IN PDP-8A MEMORY.
THREE PAGES ARE RESERVED FOR THIS LIST, SO A LIST OF UP TO 42 XFER WORDS
CAN BE READ.
IF THE MICROCODE DETECTS AN ERROR THAT CANNOT BE RECOVERED,
IT WILL SET THE APPROPRIATE STATUS BITS AND STORE THE ERROR STATUS.
IF THE DX10 ENCOUNTERS A NXM ERROR, OR A MEMORY
PARITY ERROR THE PDP-8 IS HALTED AND THE PDP-10 IS INTERRUPTED.
IF THE MICROCODE ENCOUNTERS EITHER A SELECTION ERROR OR
SEQUENCE ERROR IT WILL STORE THE ERROR STATUS, HALT THE CHANNEL PROGRAM,
PERFORM A SYSTEMS RESET, AND RETURN TO THE IDLE LOOP. SELECTION ERROR
MEANS THAT THE DEVICE WASN'T ADDRESSABLE.
ASSOCIATED WITH THE SEQUENCE ERROR BIT IS A TYPE CODE FIELD
THAT IS STORED INTO ICPC+1. THIS FIELD FURTHER DEFINES WHAT TYPE OF
SEQUENCE ERROR OCCURRED.
2.1 NORMAL STATUS LOGOUT FORMAT
THE NORMAL LOGOUT STATUS IS STORED INTO ICPC+1,+2, AND +3.
THE FORMAT IS:
ICPC+1/ DSR<0:7>,CSR<8:19>,SEQCOD<22:27>,DAR<28:35>
ICPC+2/ BYTE COUNTER<0:13>,CPC<14:35>
ICPC+3/RECORD LENGTH<12:35>
MAINDEC-10-DXMPA-K-D PAGE 6
SEQ 0006
2.2 EXTENDED STORE FORMAT
IF THE MICROCODE DETECTS AN ERROR WHILE PROCESSING A COMMAND
AND THE ERROR IS NOT A SEQUENCE OR SELECTION ERROR, IT WILL ATTEMPT
TO STORE EXTENDED STATUS.
IF ICPC+3 CONTAINS A STATUS POINTER IT WILL DO THE EXTENDED STORE.
IF ICPC+3 DOESN'T CONTAIN THE POINTER, NO EXTENDED STATUS IS STORED.
IF ICPC+3 CONTAINED -^D24B13+300 (777200000300) THEN THE
FOLLOWING INFORMATION WOULD BE STORED STARTING AT LOCATION 300.
ICPC+1/DSR<0:7>,CSR<8:18>,SEQCOD<22:27>,DAR<28:35>
ICPC+2/BYTE COUNTER<0:13,>CPC<14:35>
ICPC+3/777200,,300 ---------------> 300/RECORD LENGTH<12:35>
301/TAG LINES,,BUS LINES
302/DAC<14:35>
303/VERSION<0:5>,EDIT<6:17>,FR<18:35>
304/SENSE BYTES 0,1,2,3
305/SENSE BYTES 4,5,6,7
306/SENSE BYTES 8,9,10,11
307/SENSE BYTES 12,13,14,15
310/SENSE BYTES 16,17,18,19
311/SENSE BYTES 20,21,22,23
NOTE:
THE NUMBER OF BYTES STORED IS CONTROLLED BY THE BYTE COUNT
FIELD OF THE WORD IN ICPC+3. THE FORMAT IS BYTE COUNT <0:13>;ADDRESS <14:35>.
****************************************************************
IF A SEQUENCE ERROR IS DETECTED WHILE READING
THEN ICPC+1 AND ICPC+2 IS OVERWRITTEN WITH
THE ERROR INFORMATION!
****************************************************************
FORCING AN EXTENDED STORE ON REWIND INITIATION COULD CAUSE
THE LOSS OF THE COMPLETION INTERRUPT
***************************************************************
MAINDEC-10-DXMPA-K-D PAGE 7
SEQ 0007
2.3 SEQUENCE ERROR TYPE CODE TABLE
ERROR # REMARKS
------- -------
00 CHANNEL PROGRAM IS STRUCTURED INCORRECTLY
02 BUS IN PARITY ERROR
26 A READ OR WRITE COMMAND WASN'T FOLLOWED BY XFER'S
36 NOT ALL OF THE DESIRED SENSE BYTES WHERE XFER'D IN
EXTENDED STORE OF STATUS
43 INITIAL SELECTION ERROR READING SENSE BYTES
MAINDEC-10-DXMPA-K-D PAGE 8
SEQ 0008
3.0 HARDWARE READIN
THE HARDWARE READ-IN MICROCODE IS BUFFERED IN A 128 WORD ROM.
THIS ROM IS BLOCK TRANSFERRED INTO THE LAST PAGE OF PDP-8 MEMORY
WHEN THE HARDWARE READIN KEY IS STRUCK ON THE PROCESSOR.THIS PAGE
OF CODE WILL READ THE FIRST RECORD ON THE FIRST READY DRIVE INTO
PDP-10 MEMORY AND THEN START THE PDP-10 AT LOCATION 100.
THE CODE FLOWS AS FOLLOWS:
1.INITIALIZE DX10
2.SETUP REWIND COMMAND IN CMD
3.CLEAR DEVICE ADDRESS = 0
4.PERFORM REWIND
5.IF ERROR-INCREMENT DEVICE ADDR AND GO TO STEP 4
6.HERE WHEN READY UNIT FOUND
7.CHANGE COMMAND TO READ DATA
8.SETUP BYTE COUNTER AND DATA ADDRESS REGISTERS
9.START READ COMMAND
10.LOAD CHANNEL BUS CONTROL REGISTER
11.WAIT FOR BLOCK DONE
12.START PDP-10 AT LOCATION 100
MAINDEC-10-DXMPA-K-D PAGE 9
SEQ 0009
4.0 MICRO-DIAGNOSTICS
THE MICROCODE WILL TEST PORTIONS OF THE DX10 HARDWARE
UPON INITIAL START-UP AND PERIODICALLY
WHILE IT'S IN THE IDLE LOOP. TO INSURE GOOD RESPONSE TO -10 COMMANDS
THE -8 CHECKS THE CONTINUE FLOP PRIOR TO EACH TEST.
THE 26 TESTS INCLUDE THE FOLLOWING:
TEST REMARKS
---- -------
1-10 TEST THE SPECIAL IOT'S ABILITY TO CLEAR THE AC
11 TEST THE 8R LOAD AND READ COMMANDS
12 TEST THE 8R SELECTION LOGIC
13 TEST THE SILO LOGIC IN DUMP MODE
14 TEST THE SILO LOGIC IN DUMP MODE WITH SLOW CLK
15 TEST THE SILO LOGIC IN BYTE MODE
16 TEST THE SILO LOGIC IN BYTE MODE WITH SLOW CLK
17 TEST THE SILO LOGIC IN ASCIZ MODE
20 TEST THE SILO LOGIC IN ASCIZ MODE WITH SLOW CLK
21 TEST THE SILO LOGIC IN SIXBIT MODE
22 TEST THE SILO LOGIC IN SIXBIT MODE WITH SLOW CLK
23 TEST THE BLOCK DONE LOGIC(INCLUDING INTERRUPT)
24 TEST THE CPC REGISTER
25 TEST THE DAC REGISTER
26 TEST THE CHANNEL BUS INTERFACE BY PERFORMING
A SENSE COMMAND TO DEVICE ADDRESS 0.
(NOTE: TEST 26 IS NOT RUN WHEN THE DIAGNOSTICS
ARE CALLED FROM THE IDLE LOOP.)
IF THE MICROCODE DETECTS A DIAGNOSTIC ERROR IT WILL HALT AT
207 AFTER FIRST LOADING IBUS #17 WITH THE ERROR CODE.THIS SAME CODE IS
AVAILABLE IN -8 MEMORY LOCATION 5.
MAINDEC-10-DXMPA-K-D PAGE 10
SEQ 0010
4.1 MULTIPLE ENTRY POINTS
THE MICROCODE HAS THE FOLLOWING ENTRY POINTS:
POINT REMARKS
----- -------
200 NORMAL COLD START ADDRESS
201 NORMAL RESTART ADDRESS
202 START WITHOUT DIAGNOSTICS ENABLED
203 RESERVED
204 RESERVED
205 START DIAGNOSTICS ONLY(IMPLICT LOOP ON ERROR)
206 RESERVED
207 DIAGNOSTIC ERROR HALT LOCATION
4.2 ENTRY POINT 205 (DIAGNOSTICS ONLY-LOOP ON ERROR)
WHEN THE MICROCODE IS STARTED AT 205, ONLY THE DIAGNOSTICS WILL
RUN. IF AN ERROR OCCURS, THE ERROR CODE IS LOADED
INTO REG #17 AND THE DIAGNOSTIC WILL LOOP ON THE FAILURE.
MAINDEC-10-DXMPA-K-D PAGE 11
SEQ 0011
4.3 DIAGNOSTIC ERROR CODES
ERROR# REMARKS
------ -------
100 LBO DIDN'T CLEAR AC
101 STM DIDN'T CLEAR AC
102 INT DIDN'T CLEAR AC
103 L8S DIDN'T CLEAR AC
104 LCB DIDN'T CLEAR AC
105 L8C DIDN'T CLEAR AC
106 L8B DIDN'T CLEAR AC
107 L8A DIDN'T CLEAR AC
110 8R BYTE A WAS READ BAD(L8A&G8A)
111 8R BYTE B WAS READ BAD(L8B&G8B)
112 8R BYTE C WAS READ BAD(L8C&G8C)
113 8R2 SELECTION BAD
114 8R1 SELECTION BAD
115 8R0 SELECTION BAD
116 WRAP AROUND SELECTION OF 8R3 BAD
117 WRAP AROUND SELECTION OF 8R0 BAD
120 INT DIDN'T SELECT 8R0
121 DUMP MODE SILO TEST FAILED
122 DUMP MODE SILO TEST(SLOW CLK) FAILED
123 BYTE MODE SILO TEST FAILED
124 BYTE MODE SILO TEST (SLOW CLK) FAILED
125 ASCIZ MODE SILO TEST FAILED
126 ASCIZ MODE SILO TEST (SLOW CLK) FAILED
127 SIXBIT MODE SILO TEST FAILED
130 SIXBIT MODE SILO TEST (SLOW CLK) FAILED
131 TBD DIDN'T SKIP ON OVERFLOW
132 NO INTERRUPT ON OVERFLOW
133 RESETTING OVERFLOW DIDN'T CLEAR INTERRUPT
134 CPC DATA TEST FAILED
135 DAC DATA TEST FAILED
MAINDEC-10-DXMPA-K-D PAGE 12
SEQ 0012
136 CONTROL UNIT DID NOT RESPOND TO SELECTION SEQUENCE
137 CONTROL UNIT DID NOT RESPOND TO DEVICE ADDRESS 0
140 ADDRESS IN DID NOT SET IN SELECTION SEQUENCE
141 BAD PARITY ON BUS IN WITH ADDRESS IN PRESENTED
142 NOT ZERO ADDRESS RECEIVED WHEN ATTEMPTING TO SELECT UNIT ZERO
143 ADDRESS IN DID NOT DROP DURING SELECTION SEQUENCE
144 STATUS IN DID NOT SET DURING SELECTION SEQUENCE
145 BAD PARITY ON BUS IN WITH STATUS BYTE PRESENTED
146 INITIAL STATUS BYTE WAS NON-ZERO IN SENSE COMMAND
147 STATUS IN DID NOT DROP WHEN SERVICE OUT WAS SET
DURING PRESENTATION OF STATUS BYTE
150 SRV IN DID NOT SET PRESENTING A SENSE BYTE
151 PARITY ERROR ON BUS IN WHILE PRESENTING A SENSE BYTE
152 SERVICE IN DID NOT DROP IN RESPONSE TO SERVICE OUT
DURING PRESENTATION OF SENSE BYTE
153 STATUS IN DID NOT SET AFTER PRESENTING 24 SENSE BYTES
154 PARITY ERROR IN STATUS BYTE AFTER SENSE COMMAND
155 STATUS IN DID NOT DROP AFTER PRESENTING ENDING STATUS
IN SENSE COMMAND
156 OPERATIONAL IN DID NOT DROP AFTER SENSE COMMAND
157 REQUEST IN NEVER SET AFTER SHORT BUSY SEQUENCE
160 ADDRESS IN DID NOT SET IN CU INITIATED SEQUENCE
161 PARITY ERROR ON BUS IN WHILE READING ADDRESS IN
CU INITIATED SELECTION SEQUENCE
162 NON-ZERO ADDRESS PRESENTED IN CU INITIATED SELECTION SEQUENCE
163 ADDRESS IN DID NOT DROP IN CU INITIATED SELECTION SEQUENCE
164 STATUS IN DID NOT SET IN CU INITIATED SELECTION SEQUENCE
165 STATUS IN DID NOT DROP IN CU INITIATED SELECTION SEQUENCE
166 OPR IN DID NOT DROP AFTER CU INITIATED SELECTION SEQUENCE
167 SERVICE OUT DIDN'T SET WHILE TRANSFERRING DATA IN TESTS 13 - 23
170 SERVICE OUT DIDN'T CLEAR WHILE TRANSFERRING DATA IN TESTS 13 - 23
MAINDEC-10-DXMPA-K-D PAGE 13
SEQ 0013
5.0 HISTORY FILE
VERSION PROBLEM FIX
------- ------- ---
1(0) SKIP READ DATA ERR -ADD CLL INSTRUCTION TO TRMCHK SKP READ CODE
1(1) SENSE BYTE DISPLACEMENT -CHG METHOD OF CALCULATING DAC ADR FOR BYTES
1(2) CPC<14:17> CHOPPING -SAVE CPC BEFORE DOING INT INSTRUCTION
1(3) OPI PROBLEM -CLR SEL & HOLD OUT AFTER DETECTING ERROR
1(4) TIE NOT WORKING -FIX CALCBC CODE TO CALCULATE GOOD CBC FOR TIE
1(5) SLOW SILO CHIPS -DELAY START OF ANY SENSE COMMAND
1(6) NO PAR ERR ON TERM -CHG SHRTRC TO DETECT PARITY BEFORE CLR OF RUN
1(7) LOAD OF BYTE CNT GENERATES MEM CYC -WHEN LOADING CPC INSURE THAT
SIGN BIT OF BYTE CNT=0
1(10) IMPLEMENT SLOW CLOCK -CHG WRITE STARTUP TO USE SLOW CLOCK
-ADD MICRO-DIAGNOSTICS FOR SLOW CLK
REWIND RACE PROBLEM -ACCEPT CU INTERRUPTS AT COMMAND STARTUP
TO LOOP(ENABLE BY STARTING AT 205)
-CHG THE ROLL OF REG 17 AND 16.REG 17
DISPLAYS ONLY THE ERROR CODES WHILE REG
16 WILL NOW DISPLAY THE IDLE LOOP COUNT.
2(0) M8599 PROBLEM -ADD EXTRA LOAD OF DAC TO RDSEN
2(1) OPI PROBLEM -CORRECT WAITB ROUTINE (10 SECOND TIMER)
2(2) UCODE DIAG PROBLEM -CORRECT LOOPING ON ERROR IN UCODE
DIAGNOSTICS
2(3) MP ERRORS WITH SHORT -INCLUDE STM IN LOOP TO SEARCH FOR NEXT
RECORD ERRORS COMMAND ON STACK
2(4) SHORT RECORD ERRORS -(1)ADD WAIT FOR NOT BYTE AVAILABLE BEFORE
LOADING CBC FOR ALL BUT FIRST XFER WORD ON
A WRITE OPERATION TO BE SURE SILO
RECEIVES ALL BYTES
(2)PREVENT CLEARING ACCUMULATED BYTE COUNT
WHEN STORING CU INITIATED STATUS
2(5)
MAINDEC-10-DXMPA-K-D PAGE 14
SEQ 0014
VERSION DATE REASON FOR NEW VERSION
------- ---- ----------------------
4(0) DEC 1976 1.COMPLETE RE-WRITE TO REDUCE HANDSHAKE
TIME BETWEEN PDP-10 AND TX01.
2.ADD AUTOMATIC ERROR RETRY ROUTINE
WHICH CAN BE TURNED ON WITH BIT 3
DEVICE COMMAND INSTRUCTION.
5(0) MAR 1977 1.PROBLEM: LOOP WRITE TO READ OPERATION TO A
TX02 AT 6250 BPI GETS OVERRUN ERROR.
SOLUTION: DON'T ENABLE SLOW CLOCK FOR
CONTROL COMMANDS.
2.PROBLEM: A READ COMMAND WHICH READS A
FILE MARK MAY RESULT IN AN OPI ERROR.
SOLUTION: FAKE AN INTERRUPT WHEN THE
HARDWARE FAILS TO PRODUCE ONE.
6(0) APR 1977 PROBLEM: A WRITE ERROR THAT TERMINATES
BEFORE ALL DATA IS TRANSFERRED OUT OF
THE DX10 MAY TERMINATE WITH THE CPC
INCORRECT.
SOLUTION: READ A WORD FROM MEMORY INTO
8R0 BEFORE GOING TO SHRTRC.
7(0) SEP 1977 PROBLEM: A READ ERROR IS DETECTED. THEN IN
PERFORMING AN EXTENDED STATUS OPERATION,
AN ERROR IS ENCOUNTERED WHILE DOING A SENSE
BYTE READ (THIS MAY BE EITHER A REAL
ERROR OR CU BUSY). THIS CAUSES THE LOCATION
ICPC+2 TO BE WRITTEN WITH BAD DATA, NAMELY,
THE NEGATIVE BYTE COUNT FOR THE SENSE XFER
AND THE CPC VALUE USED FOR THE SENSE XFER.
THE RESULT IS A SYSTEM CRASH!
SOLUTION: IN ROUTINE 'STRSEL', THE ERROR
RETURN FROM 'RDSNS' CALL WAS CHANGED FROM
A JUMP TO STOREI TO A JUMP TO RDERR. ALSO,
IN ROUTINE 'CUBUSY', THE RETURN FROM SUBROUTINE
WAS REPLACED WITH A JUMP TO 'RDSNS+1' TO
RETRY THE SENSE READ OPERATION.
10(0) SEP 1977 1. PROBLEM: ON READ ERROR RETRY, IF ERROR WAS HARD ONE,
TAPE WOULD REPOSITION TO BOT OR 100 FT BACK.
SOLUTION: ERROR WAS IN BACKSPACING PAST TAPE
CLEANER. FIX WAS TO DO A 'CLA' BEFORE SETTING
REPEAT COUNT IN 'RDRETB' ROUTINE.
2. PROBLEM: IF READ ERROR OCCURRED ON 2ND,
3RD OR 4TH RECORD FROM BOT. ERROR RETRY
WOULD MISPOSITION TAPE.
SOLUTION: IN ROUTINE TO REPOSITION TAPE
AFTER CLEANING, CHANGED INSTRUCTION AT
'RDRETE+1' FROM 'JMP -2' TO 'JMP RDRETD'.
MAINDEC-10-DXMPA-K-D PAGE 15
SEQ 0015
11(0) OCT 1977 1.PROBLEM: VERSION 7 COULD CAUSE THE MICROCODE
TO OVER WRITE ITS MEMORY IF AN UNLOAD
COMPLETE STATUS WAS RECEIVED DURING THE
STORE STATUS ROUTINE.
SOLUTION: THE RETURN ADDRESSES OF THE
STORE, RDSNS AND SENSE ROUTINES ARE SAVED
AND THEN RESTORED IN THE GETRWS ROUTINE.
2.PROBLEM: THE DX10 COULD HANG WHEN USED
ON A TX01 OR TX02 THAT WAS BEING SHARED BY
ANOTHER SYSTEM WITH THE TX03 OPTION.
SOLUTION: IF SELECT IN IS RETURNED DURING
A CU INITIATED SELECTION SEQUENCE, DROP
SELECT OUT AND WAIT FOR REQUEST IN AGAIN.
3.PROBLEM:RELOADING OR RESTARTING THE
DX10 ON A TX01 OR TX02 WITH A TX03 OPTION
COULD TIE UP THE CHANNEL BUS IF
DIAGNOSTIC TEST 26 FAILED. THIS COULD IN
TURN HANG THE DX10 ON THE OTHER SYSTEM.
SOLUTION:DON'T RUN TEST 26 ON START UP.
TEST 26 IS NOW RUN ONLY WHEN THE DX10
IS STARTED AT ENTRY POINT 205.
12(0) OCT 1977 1. PROBLEM: ON WRITE ERROR RETRY, IF RECORD
BEFORE ERROR FAILS TO BE READ BACKWARD
SUCCESSFULLY, IT WILL BE ERASED.
SOLUTION: CHANGE WRITE ERROR RETRY STRATEGY.
SIMPLY BACKSPACE BLOCK, ERASE GAP, AND
RETRY WRITE COMMAND. ALSO, LOOK FOR UNIT
CHECK AFTER ERASE COMMAND. IF SET REPORT
AS UNSUCCESSFUL RETRY.
13(0) DEC 1977 1. PROBLEM: IF TWO DX10'S ARE TALKING TO THE
SAME TX01/TX02, THEY COULD GET INTO A
CONTENTION PROBLEM IN ACCESSING THE TX,
WITH BOTH OF THEM HANGING AS A RESULT.
SOLUTION: INDICATE CHAINING ON A CONTROL
UNIT INITIATED SEQUENCE WHEN EITHER
(A) DEVICE END IS NOT PRESENTED, OR
(B) DEVICE END WITH UNIT CHECK IS PRESENTED.
14(0) JAN 1978 PROBLEM: ON READ ERROR RETRY, IF READ REVERSE
IS SUCCESSFUL AND RECORD IS CORRECT SIZE,
THEN BURST FLAG IS CLEARED AND SEQUENCE
ERROR 0 IS GENERATED.
SOLUTION: SET BURST FLAG ON EXITING FROM
READ RETRY ROUTINE AFTER SUCCESSFUL
READ REVERSE OPERATION.
DXMPA - DX10 MICROCODE DECFLO VER 00.11 03-JAN-78 09:59 PAGE A
SEQ 0016
FLOW CHART
****************
DXMPA - DX10 MICROCODE
****************
COPYRIGHT 1978
DIGITAL EQUIPMENT CORPORATION
MAYNARD, MASS. 01754
DXMPA - DX10 MICROCODE DECFLO VER 00.11 03-JAN-78 09:59 PAGE B
SEQ 0017
TABLE OF CONTENTS
*******************
PAGE 01 START ADDRESSES
PAGE 02 IDLE LOOP
PAGE 03 GET REWIND OR UNLOAD STATUS
PAGE 04 SYSTEM RESET ROUTINES
PAGE 05 STORE CPU REQUESTED STATUS
PAGE 06 START UP CHANNEL PROGRAM
PAGE 07 DEVICE COMMAND EXECUTION
PAGE 08 CMDGO SUBROUTINE - DEVICE COMMAND START-UP
PAGE 09 CMDGO SUBROUTINE - SEND COMMAND TO DEVICE, GET STATUS BYTE
PAGE 10 CMDGO SUBROUTINE - START A DATA TRANSFER
PAGE 11 CMDGO SUBROUTINE - WAIT FOR CONTROL COMMAND TO COMPLETE
PAGE 12 CMDGO SUBROUTINE - STORE CONTROL COMMAND ERROR STATUS
PAGE 13 CMDGO SUBROUTINE - SHORT BUSY HANDLER
PAGE 14 CMDGO SUBROUTINE - INTERRUPT SERVICE ROUTINE FOR BLOCK DONE
PAGE 15 CMDGO SUBROUTINE - WAIT FOR INTERRUPT
PAGE 16 CMDGO SUBROUTINE - EXIT
PAGE 17 AUTOMATIC RETRY DISPATCHER
PAGE 18 BUS OUT CHECK RETRY ROUTINE
PAGE 19 CHANNEL ERROR RETRY ROUTINE
PAGE 20 WRITE ERROR RETRY ROUTINE
PAGE 21 ERASE GAP ERROR RETRY ROUTINE
PAGE 22 READ ERROR RETRY ROUTINE
PAGE 23 READ ERROR RETRY ROUTINE - END OF PASS
DXMPA - DX10 MICROCODE DECFLO VER 00.11 03-JAN-78 09:59 PAGE 01
START ADDRESSES SEQ 0018
START ADDRESS 200 START ADDRESS 201 START ADDRESS 202
*********** *********** ***********
**ST200 ** **ST201 ** **ST202 **
*********** *****I***** ***********
I I I
*********************** I ***********************
* * I * SET NO DIAGNOSTICS *
* INITIALIZE DX10 * I * FLAG *
* * I * *
*********************** I ***********************
I I I
*********************** I<-----------------------------
* SET ONETIME * I
* DIAGNOSTIC FLAG * V
* * ***********************
*********************** * *
I RESETB(04) * INITIALIZE DX10 *
************************* * *
** ** ***********************
**PERFORM SYSTEM RESET ** I
** ** I
************************* I
I I
************************* I
** ** I
** RUN THE DIAGNOSTICS ** I
** ** I
************************* I
I<-----------------------------
I RESETB(04)
*************************
** **
**PERFORM SYSTEM RESET **
** **
*************************
I
***********************
* RESET ALL CONTROL *
* FLAGS *
* *
***********************
I
***********************
*SET CHANNEL STATUS TO*
* IDLE *
* *
***********************
I
************
*IDLE(02) *
************
DXMPA - DX10 MICROCODE DECFLO VER 00.11 03-JAN-78 09:59 PAGE 02
IDLE LOOP SEQ 0019
*********** WAIT HERE FOR COMMAND FROM DEC-SYSTEM-10
**IDLE **
*********** RUN DIAGNOSTICS ONCE EVERY 512 LOOPS
I UNLESS INHIBITED
***********************
*CLEAR SUPPRESS OUT TO*
* CANCEL COMMAND *
* CHAINING *
***********************
I
***********************
* * ***
* CLEAR WAIT COUNT * *3*
* * ***
*********************** I
I ***********************
*********************** * *
*** * SET TEMP COUNT TO * *INCREMENT TEMP COUNT *
*1*------>* -512 * * *
*** * * ***********************
*********************** I
I GETRWS(03) -----------------
----------------- ************************* /TEMP COUNT EQUAL \NO ***
*** / REQUEST IN TAG \YES ** READ AND REPORT ** / ZERO? \------->*2*
*2*------->/ LINE SET? \------>** REWIND DONE STATUS ** / \ ***
*** / \ ** ** -----------------------
----------------------- ************************* I YES
I NO I I
I<----------------------------- ----------------- *************************
----------------- / DIAGNOSTICS \NO ** **
/ \YES ************ / INHIBITED? \------>** RUN THE DIAGNOSTICS **
/ CONTINUE SET? \------->*STPRG(06) * / \ ** **
/ \ ************ ----------------------- *************************
----------------------- I YES I
I NO I<-----------------------------
I I
----------------- ***********************
/ \YES ************ *INCREMENT WAIT COUNT *
/ CLEAR SET? \------->*RESET(04) * * AND DISPLAY IN IBUS *
/ \ ************ * REGISTER 16 LIGHTS *
----------------------- ***********************
I NO I
I ***
----------------- *1*
/ STATUS REQUEST \YES ************ ***
/ IN? \------->*STRREQ(05)*
/ \ ************
-----------------------
I NO
I
***
*3*
***
DXMPA - DX10 MICROCODE DECFLO VER 00.11 03-JAN-78 09:59 PAGE 03
GET REWIND OR UNLOAD STATUS SEQ 0020
*********** *** -------------------->I
**GETRWS ** *1* I I
*********** *** I I
I I I V
***************** ***************** I -----------------
* * * CLEAR SELECT * I / ;UNIT CHECK IN \NO
* SET HOLD OUT * * OUT * I / STATUS BYTE? \------->I
* * * * I / \ I
***************** ***************** I ----------------------- I
I I I I YES I
***************** ***************** I ***************** I
* * * * I * SET SUPPRESS * I
*SET SELECT OUT * *CLEAR HOLD OUT * I * OUT * I
* * * * I * * I
***************** ***************** I ***************** V
I<------------------ I I I<------------------
----------------- I ----------------- I *****************
/ \NO I / DEVICE END IN \YES I * *
/ ADDRESS IN? \------->I / STATUS BYTE? \------->I *SET SERVICE OUT*
/ \ / \ * *
----------------------- ----------------------- *****************
I YES I NO I
*********************** I *****************
* READ DEVICE ADDRESS * ***************** * CLEAR SERVICE *
* FROM BUS IN LINES * * SET SUPPRESS * * OUT *
* * * OUT * * *
*********************** * * *****************
I ***************** I
***************** I ***********************
* * ***************** *SET CHANNEL STATUS TO*
*SET COMMAND OUT* * * * CU INITIATED *
* * *SET SERVICE OUT* * *
***************** * * ***********************
I ***************** I
***************** I *************************
* CLEAR COMMAND * ***************** ** **
* OUT * * CLEAR SERVICE * ** STORE STATUS **
* * * OUT * ** **
***************** * * *************************
I<------------------ ***************** I
----------------- I I -----------------
/ \NO I I NO / UNIT CHECK IN \
/ STATUS IN? \------->I I<----------------------------/ STATUS BYTE? \
/ \ I / \
----------------------- I -----------------------
I YES I I YES
*********************** I ***********************
*READ STATUS BYTE FROM* I * *
* BUS IN LINES * I * READ SENSE BYTES *
* * I * *
*********************** V ***********************
I *********** I
*** **RETURN **<----------------------------------
*1* ***********
***
DXMPA - DX10 MICROCODE DECFLO VER 00.11 03-JAN-78 09:59 PAGE 04
SYSTEM RESET ROUTINES SEQ 0021
************ ***********
*RESET * **RESETB **
************ ***********
I I
----------------- *****************
/ \YES ************ *CLEAR SUPPRESS *
/ CONTINUE SET? \------->*STPRG(06) * * OUT *
/ \ ************ * *
----------------------- *****************
I NO I
***************** *****************
*CLEAR CLEAR AND* * CLEAR *
* CONTINUE * *OPERATIONAL OUT*
* * * *
***************** *****************
I I
***************** *****************
*CLEAR SUPPRESS * * CLEAR ADDRESS *
* OUT * * OUT *
* * * *
***************** *****************
I I
***************** *****************
* CLEAR * * *
*OPERATIONAL OUT* *CLEAR HOLD OUT *
* * * *
***************** *****************
I I
*********************** *****************
* WAIT SIX * * CLEAR SELECT *
* MICRO-SECONDS * * OUT *
* * * *
*********************** *****************
I I
***************** *****************
*SET OPERATIONAL* * CLEAR SERVICE *
* OUT * * OUT *
* * * *
***************** *****************
I I
************ *****************
*IDLE(02) * * CLEAR COMMAND *
************ * OUT *
* *
*****************
I
*****************
*SET OPERATIONAL*
* OUT *
* *
*****************
I
***********
**RETURN **
***********
DXMPA - DX10 MICROCODE DECFLO VER 00.11 03-JAN-78 09:59 PAGE 05
STORE CPU REQUESTED STATUS SEQ 0022
************
*STRREQ *
************
I
I
***********************
*SET CHANNEL STATUS TO*
* IDLE *
* *
***********************
I
I
*************************
** **
** STORE STATUS **
** **
*************************
I
I
************
*IDLE(02) *
************
DXMPA - DX10 MICROCODE DECFLO VER 00.11 03-JAN-78 09:59 PAGE 06
START UP CHANNEL PROGRAM SEQ 0023
************
*STPRG *
************
I
----------------- ***********************
/ \YES * *
************ / CLEAR SET? \------->* LOAD CPC FROM ICPC *
*IFETCH * / \ * *
************ ----------------------- ***********************
I I NO I
----------------------->I<-----------------------------
***********************
************ * *
*DECODE(07)* * READ FROM 10 MEMORY *
************ * *
I ***********************
----------------------->I
-----------------
/BIT 0 OF COMMAND \YES ************
/ SET? \------->*SQER00 * TRIED TO EXECUTE A TRANSFER COMMAND
/ \ ************
-----------------------
I NO
-----------------
/BIT 1 OF COMMAND \YES ************
/ SET? \------->*DOCMD(07) *
/ \ ************
-----------------------
I NO
----------------- ***********************
/BIT 2 OF COMMAND \NO * CLEAR CLEAR AND *
/ SET? (GO) \------->* CONTINUE *
/ \ * *
----------------------- ***********************
I YES I
I<-----------------------------
----------------- ***********************
/BIT 3 OF COMMAND \YES * *
/ SET? (JUMP) \------->*LOAD CPC FROM COMMAND*
/ \ * *
----------------------- ***********************
I NO I
I<-----------------------------
----------------- *************************
/BIT 4 OF COMMAND \YES ** **
/ SET? (STORE) \------>** STORE STATUS **
/ \ ** **
----------------------- *************************
I NO I
I<-----------------------------
-----------------
************ NO / \YES ************
*IDLE(02) *<-------/ CONTINUE SET? \------->*IFETCH(06)*
************ / \ ************
-----------------------
DXMPA - DX10 MICROCODE DECFLO VER 00.11 03-JAN-78 09:59 PAGE 07
DEVICE COMMAND EXECUTION SEQ 0024
************
*DOCMD *
************
I
***********************
*SAVE THE COMMAND AND *
* CURRENT CPC *
* *
***********************
I CMDGO(08)
*************************
************ ** **
*EXCMD(22) * ** DO THE COMMAND ** ************ ************
************ ** ** *EXCMD(22) * *NRETRY(17)*
I ************************* ************ ************
----------------------------->I I I
----------------- ----------------- *************************
/ \YES / AUTOMATIC ERROR \NO ** **
/ ANY ERRORS? \------------------>/RECOVERY REQUESTED?\------>** STORE STATUS **
/ \ / \ ** **
----------------------- ----------------------- *************************
I NO I YES I
I ************ ************
----------------- *RETRY(17) * *IDLE(02) *
/ \NO ************ ************ ************
/ CONTINUE SET? \------->*IDLE(02) *
/ \ ************
-----------------------
I YES
I
-----------------
/ WAS COMMAND A \NO ************
/ BURST TYPE? \------->*IFETCH(06)*
/ \ ************
-----------------------
I YES
I
************
*DECODE(06)*
************
NEXT COMMAND WAS ALREADY
READ FROM MEMORY AT END
OF XFER LIST
DXMPA - DX10 MICROCODE DECFLO VER 00.11 03-JAN-78 09:59 PAGE 08
CMDGO SUBROUTINE - DEVICE COMMAND START-UP SEQ 0025
***********
**CMDGO **
***********
I
***********************
*PUT DEVICE ADDRESS ON*
* BUS OUT LINES *
* *
***********************
I
*****************
* *
*SET ADDRESS OUT*
* *
*****************
I
*****************
* *
* SET HOLD OUT *
* *
*****************
I
*****************
* *
*SET SELECT OUT *
* *
*****************
I<------------------------------------------------------------------------------
I I
----------------- ----------------- ----------------- I
/ \NO / \NO / \NO I
/ OPERATIONAL IN? \-------> / SELECT IN? \-------> / STATUS IN? \------->I
/ \ / \ / \
----------------------- ----------------------- -----------------------
I YES I YES I YES
***************** I I
* CLEAR ADDRESS * *********************** ************
* OUT * *SET SELECT ERROR BIT * *SHORTB(13)*
* * * IN CHANNEL STATUS * ************
***************** * *
I ***********************
***************** I
*CLEAR SUPPRESS * ***********************
* OUT * * CLEAR ADDRESS OUT, *
* * * HOLD OUT AND SELECT *
***************** * OUT *
I ***********************
************ I
*SENDCM(09)* *************************
************ ** ** ************
** STORE STATUS **----->*IDLE(02) *
** ** ************
*************************
DXMPA - DX10 MICROCODE DECFLO VER 00.11 03-JAN-78 09:59 PAGE 09
CMDGO SUBROUTINE - SEND COMMAND TO DEVICE, GET STATUS BYTE SEQ 0026
************
*SENDCM(08)*
************
I<------------------
----------------- I
/ \NO I
/ ADDRESS IN? \------->I
/ \
-----------------------
I YES
***********************
*PUT DEVICE COMMAND ON*
* BUS IN LINES *
* *
***********************
I
*****************
* *
*SET COMMAND OUT*
* *
*****************
I
----------------- ***********************
/IS COMMAND REWIND\YES * CLEAR HOLD OUT AND *
/ OR UNLOAD? \------->* SELECT OUT *
/ \ * *
----------------------- ***********************
I NO I
I<-----------------------------
*****************
* CLEAR COMMAND *
* OUT *
* *
*****************
I<------------------
----------------- I
/ \NO I
/ STATUS IN? \------->I
/ \
-----------------------
I YES
I
----------------- ----------------- -----------------
/ANY ERROR BITS IN\NO / IS COMMAND TEST \NO / CHANNEL END IN \NO ************
/ STATUS BYTE? \-------> / IO? \-------> / STATUS BYTE? \------->*FNDX(10) *
/ \ / \ / \ ************
----------------------- ----------------------- -----------------------
I YES I YES I YES
************ ************ ************
*STERR0(12)* *CMDEND(11)* *CTLCMD(11)*
************ ************ ************
STATUS BYTE ERROR BITS ARE ATTENTION, CU END, BUSY, UNIT CHECK, UNIT EXCEPTION
DXMPA - DX10 MICROCODE DECFLO VER 00.11 03-JAN-78 09:59 PAGE 10
CMDGO SUBROUTINE - START A DATA TRANSFER SEQ 0027
************
*FNDX *
************
I
***********************
*READ A TRANSFER WORD *
* FROM -10 MEMORY * THIS MAY INCLUDE PROCESSING A CHANNEL JUMP COMMAND
* *
***********************
I
-----------------
/ WAS A TRANSFER \NO ************
/ WORD FOUND? \------->*SQER26 * ************
/ \ ************ *ON(14) *
----------------------- ************
I YES ------------------------>I
*********************** I ***********************
*LOAD DATA ADDRESS AND* I * TURN ON INTERRUPT *
* BYTE COUNTERS * I * SYSTEM *
* * I * *
*********************** I ***********************
I I I
*********************** I ************
* COMPUTE CORRECT * I *WAIT(15) *
* CONTROL BITS FOR * I ************
* CHANNEL CONTROL REG * I
*********************** I WAIT ROUTINE WILL NORMALLY BE
I I INTERRUPTED BEFORE TERMINATION
***************** I
* * I
*SET SERVICE OUT* I INTERRUPT
* * I I
***************** I I
I I V
***************** I ************
* CLEAR SERVICE * I *BLKDNI(14)*
* OUT * I ************
* * I
***************** I
I I
*********************** I
*LOAD CHANNEL CONTROL * I
* REGISTER * I
* * I
*********************** I
I I
---------------------------------->I
DXMPA - DX10 MICROCODE DECFLO VER 00.11 03-JAN-78 09:59 PAGE 11
CMDGO SUBROUTINE - WAIT FOR CONTROL COMMAND TO COMPLETE SEQ 0028
************
*CTLCMD(09)*
************
I
-----------------
/ DEVICE END IN \YES *** ************
/ STATUS BYTE? \------->*1* *CMDEND(09)*
/ \ *** ************
----------------------- ------------------->I
I NO I *****************
----------------- I * *
/IS COMMAND REWIND\YES I *SET SERVICE OUT*
/ OR UNLOAD? \---------------------------->I * *
/ \ *****************
----------------------- I
I NO ***********************
***************** * CLEAR SELECT OUT, *
* * *HOLD OUT AND SERVICE *
*SET SERVICE OUT* * OUT *
* * ***********************
***************** I
I I
***************** ***********
* CLEAR SERVICE * **RETURN **
* OUT * ***********
* *
*****************
I<------------------
----------------- I
/ \NO I
/ STATUS IN? \------->I
/ \
-----------------------
I YES
*****************
*READ THE STATUS*
* BYTE * ***
* * *1*
***************** ***
I I
----------------- -----------------
/IS COMMAND ERASE \NO / \YES
/ GAP? \-------> / IS COMMAND A NOP? \--->I
/ \ / \ I
----------------------- ----------------------- I
I YES I NO I
----------------------------->I I
***************** I
* SET SUPPRESS * I ************
* OUT *--------->*CMDEND(11)*
* * ************
*****************
DXMPA - DX10 MICROCODE DECFLO VER 00.11 03-JAN-78 09:59 PAGE 12
CMDGO SUBROUTINE - STORE CONTROL COMMAND ERROR STATUS SEQ 0029
************
*STERR0(09)*
************
I
I
*************************
** STORE INITIAL ERROR **
** STATUS **
** **
*************************
I
*****************
* *
*SET SERVICE OUT*
* *
*****************
I
I
***********************
* CLEAR SELECT OUT, *
*HOLD OUT AND SERVICE *
* OUT *
***********************
I
I
************
*IDLE(02) *
************
DXMPA - DX10 MICROCODE DECFLO VER 00.11 03-JAN-78 09:59 PAGE 13
CMDGO SUBROUTINE - SHORT BUSY HANDLER SEQ 0030
************
*SHORTB(08)*
************
I
***********************
* CLEAR SELECT OUT, *
*HOLD OUT AND ADDRESS *
* OUT *
***********************
I<------------------
----------------- I
/ \NO I
/ REQUEST IN? \------->I
/ \
-----------------------
I YES
I GETRWS(03)
*************************
** READ AND REPORT **
** REWIND DONE STATUS **
** **
*************************
I
************
*CMDGO(08) *
************
DXMPA - DX10 MICROCODE DECFLO VER 00.11 03-JAN-78 09:59 PAGE 14
CMDGO SUBROUTINE - INTERRUPT SERVICE ROUTINE FOR BLOCK DONE SEQ 0031
************ ----------------- ***********************
*BLKDNI(10)* *** / READING FROM \NO * *
************ *1--------->/ DEVCIE? \------->* SET LAST BLOCK *
I *** / \ * *
*********************** ----------------------- ***********************
*TURN INTERRUPT SYSTEM* I YES I
* OFF * ----------------- I
* * /ANY MORE DATA IN \NO ************
*********************** / SILO? \------------->*SRVDEV(16)*
I / \ ************
*********************** -----------------------
* READ NEXT CONTROL * I YES
*WORD FROM -10 MEMORY * I<---------------------
* * *********************** I
*********************** * LOAD CHANNEL BUS * I
I *CONTROL REGISTER WITH* I
----------------- * MEMORY INHIBIT * I
/ BYTE COUNTER \NO ************ *********************** I
/ OVERFLOW? \------->*SHRTRC(16)* I I
/ \ ************ *********************** I
----------------------- * LOAD BYTE COUNTER * I
I YES * WITH LARGE NEGATIVE * I
----------------- * NUMBER * I
/ANY MORE TRANSFER\NO *** *********************** I
/ WORDS? \------->*1* I I
/ \ *** *********************** I
----------------------- * TURN ON INTERRUPT * I
I YES * SYSTEM * I
I * * I
*********************** *********************** I
* LOAD CHANNEL BUS * I I
* CONTROL REGISTER * ************ I
* * *WAIT(15) * I
*********************** ************ I
I I
*********************** WAIT ROUTINE WILL NORMALLY BE I
*LOAD DATA ADDRESS AND* INTERRUPTED BEFORE TERMINATION I
* BYTE COUNTERS * I
* * INTERRUPT I
*********************** I I
I V I
************ *********************** I
*ON(10) * * TURN OFF INTERRUPT * I
************ * SYSTEM * I
* * I
*********************** I
I I
----------------- I
/ BYTE COUNTER \NO I
/ OVERFLOW? \---------->I
/ \
-----------------------
I YES
************
*LONGRC(16)*
************
DXMPA - DX10 MICROCODE DECFLO VER 00.11 03-JAN-78 09:59 PAGE 15
CMDGO SUBROUTINE - WAIT FOR INTERRUPT SEQ 0032
************
*WAIT(10) *
************
I<------------------------------------------------------------------------------
----------------- ----------------- I I
/ 10 SECONDS \NO / \NO I I
/ ELAPSE? \-------> / STATUS IN? \------->I I
/ \ / \ I
----------------------- ----------------------- I
I YES I YES I
*********************** ----------------- ----------------- I
* TURN OFF INTERRUPT * / WRITING TO \NO / HAS STATUS IN \NO I
* SYSTEM * / DEVICE? \-------> /PROPOGATED THROUGH \------->I
* * / \ / SILO? \
*********************** ----------------------- -----------------------
I I YES I YES
*********************** *********************** ************
* SET OPERATION * * TURN OFF INTERRUPT * *BLKDNI(14)*
*INCOMPLETE IN STATUS * * SYSTEM * ************
* * * *
*********************** *********************** THIS CONDITION WILL USUALLY
I I CAUSE AN INTERRUPT
*********************** ***********************
* * * READ NEXT CONTROL *
* RESET THE DEVICE * *WORD FROM -10 MEMORY *
* * * *
*********************** ***********************
I I
************************* ************
** ** *SHRTRC(16)*
** STORE STATUS ** ************
** **
*************************
I
************
*IDLE(02) *
************
DXMPA - DX10 MICROCODE DECFLO VER 00.11 03-JAN-78 09:59 PAGE 16
CMDGO SUBROUTINE - EXIT SEQ 0033
************
*SHRTRC(15)*
************
I
***********************
************ *READ REST OF TRANSFER*
*LONGRC(14)* * LIST *
************ * *
I ***********************
------------------->I
***********************
************ * SET LENGTH ERROR IN *
*SRVDEV(14)* * STATUS *
************ * *
I ***********************
------------------->I
----------------- ***********************
/ CHANNEL PARITY \YES * SET PARITY ERROR IN *
/ ERROR? \------->* STATUS *
/ \ * *
----------------------- ***********************
I NO I
I<-----------------------------
I<------------------
----------------- I
/ \NO I
/ STATUS IN? \------->I
/ \
-----------------------
I YES
***********************
*CLEAR CHANNEL CONTROL*
* REGISTER *
* *
***********************
I
***********************
* *
*READ THE STATUS BYTE *
* *
***********************
I
***********************
* *
* SET SERVICE OUT *
* *
***********************
I
***********************
* CLEAR SELECT OUT, * ***********
*HOLD OUT AND SERVICE *------>**RETURN **
* OUT * ***********
***********************
DXMPA - DX10 MICROCODE DECFLO VER 00.11 03-JAN-78 09:59 PAGE 17
AUTOMATIC RETRY DISPATCHER SEQ 0034
************
*RETRY(07) *
************
I
----------------- -----------------
/ \NO / CHANNEL PARITY \NO ************
/ UNIT CHECK? \-------> / ERROR? \------->*NRETRY(07)*
/ \ / \ ************
----------------------- -----------------------
I YES I YES
*********************** ************
* * *CHCHK(19) *
* READ SENSE BYTES * ************
* *
***********************
I
-----------------
/ \YES ************
/ EQUIPMENT CHECK? \------->*NRETRY(07)* ------------------->I
/ \ ************ I I
----------------------- I V
I NO I -----------------
----------------- I / \YES ************
/ \YES ************ I / WRITE OR WTM? \------->*WRTRET(20)*
/ BUS OUT CHECK? \------->*BOCHK(18) * I / \ ************
/ \ ************ I -----------------------
----------------------- I I NO
I NO I -----------------
----------------- I / \YES ************
/INTERVEN. REQ'D, \YES ************ I / ERG? \------->*ERGRET(21)*
/ COMMAND REJECT OR \------->*NRETRY(07)* I / \ ************
/ DATA CONVTR CHECK? \ ************ I -----------------------
----------------------- I I NO
I NO I -----------------
----------------- I / READ FORWARD OR \YES ************
/ \YES ************ I / BACKWARD? \------->*RDRET(22) *
/ OVERRUN? \------->*CHCHK(19) * I / \ ************
/ \ ************ I -----------------------
----------------------- I I NO
I NO I ************
----------------- I *NRETRY(07)*
/ \YES I ************
/ DATA CHECK? \---------------------------->I
/ \
-----------------------
I NO
************
*NRETRY(07)*
************
DXMPA - DX10 MICROCODE DECFLO VER 00.11 03-JAN-78 09:59 PAGE 18
BUS OUT CHECK RETRY ROUTINE SEQ 0035
************
*BOCHK *
************
I
-----------------
/ DEVICE END IN \NO
/ STATUS? \------->I
/ \ I
----------------------- I
I YES I
----------------- I
/ \NO I
/ WRITE COMMAND? \------->I
/ \ I
----------------------- I
I YES I
I CMDGO(08) I
************************* I
** ** I
**BACKSPACE ONE RECORD ** I
** ** I
************************* V
I<------------------
I CMDGO(08)
*************************
** **
** TRY COMMAND AGAIN **
** **
*************************
I
-----------------
/ \NO ************
/ ERROR? \------->*EXCMD(07) *
/ \ ************
-----------------------
I YES
-----------------
/ RETRIED 5 TIMES \NO ************
/ YET? \------->*BOCHK(18) *
/ \ ************
-----------------------
I YES
************
*NRETRY(07)*
************
DXMPA - DX10 MICROCODE DECFLO VER 00.11 03-JAN-78 09:59 PAGE 19
CHANNEL ERROR RETRY ROUTINE SEQ 0036
************
*CHCHK(17) *
************
I CMDGO(08)
----------------- *************************
/ WRITE OR READ \YES ** **
/ FORWARD? \------>**BACKSPACE ONE RECORD **----->I
/ \ ** ** I
----------------------- ************************* I
I NO CMDGO(08) I
----------------- ************************* I
/ \YES ** ** I
/ READ BACKWARD \------>** SKIP ONE RECORD **----->I
/ \ ** ** I
----------------------- ************************* I
I NO V
I<------------------------------------------------
I CMDGO(08)
*************************
** **
** TRY COMMAND AGAIN **
** **
*************************
I
-----------------
/ \NO ************
/ ERROR? \------->*EXCMD(07) *
/ \ ************
-----------------------
I YES
-----------------
/ RETRIED 5 TIMES \NO ************
/ YET? \------->*CHCHK(19) *
/ \ ************
-----------------------
I YES
************
*NRETRY(07)*
************
DXMPA - DX10 MICROCODE DECFLO VER 00.11 03-JAN-78 09:59 PAGE 20
WRITE ERROR RETRY ROUTINE SEQ 0037
************
*WRTRET *
************
I CMDGO(08)
*************************
** **
**BACKSPACE ONE RECORD **
** **
*************************
I
I CMDGO(08)
*************************
** ** FIRST RETRY ERASES ONE TIME,
** ERASE TAPE ** SECOND RETRY ERASES TWO TIMES,
** ** ETC.
*************************
I
-----------------
/ \YES ************
/ UNIT CHECK? \------->*NRETRY(07)*
/ \ ************
-----------------------
I NO CMDGO(08)
*************************
** **
** TRY COMMAND AGAIN **
** **
*************************
I
-----------------
/ \NO ************
/ ERROR? \------->*EXCMD(07) *
/ \ ************
-----------------------
I YES
-----------------
/RETRIED 75 TIMES \NO ************
/ YET? \------->*WRTRET(20)*
/ \ ************
-----------------------
I YES
************
*NRETRY(07)*
************
DXMPA - DX10 MICROCODE DECFLO VER 00.11 03-JAN-78 09:59 PAGE 21
ERASE GAP ERROR RETRY ROUTINE SEQ 0038
************
*ERGRET *
************
I CMDGO(08)
*************************
** **
** TRY COMMAND AGAIN **
** **
*************************
I
-----------------
/ \NO ************
/ ERROR? \------->*EXCMD(07) *
/ \ ************
-----------------------
I YES
-----------------
/ RETRIED 3 TIMES \NO ************
/ YET? \------->*ERGRET(21)*
/ \ ************
-----------------------
I YES
************
*NRETRY(07)*
************
DXMPA - DX10 MICROCODE DECFLO VER 00.11 03-JAN-78 09:59 PAGE 22
READ ERROR RETRY ROUTINE SEQ 0039
************
*RDRET *
************
I
***********************
* SET PASS COUNTER TO * PASS ZERO REREADS IN SAME DIRECTION AS ERROR,
* ZERO * PASS ONE REREADS IN OPPOSITE DIRECTION
* *
*** ***********************
*1*----------------->I
*** ----------------- -----------------
/ NOISE SET IN \NO /WERE LESS THAN 4 \YES ***
/ SENSE BYTE 1? \-------> / BYTES READ? \------->*2*
/ \ / \ ***
----------------------- -----------------------
I YES I NO
I<----------------------------- CMDGO(08)
----------------- *************************
/ TIME TO CLEAN \YES ** BACKSPACE TO 4 ** TAPE IS CLEANED AFTER
/ TAPE? \------>** RECORDS IN FRONT OF ** EVERY FOUR REREADS
/ \ ** RECORD IN ERROR **
----------------------- *************************
I NO I
I<----CMDGO(08)----------------
*************************
************ ** POSITION TAPE FOR **
*PASS2(23) * ** REREAD OF RECORD IN **
************ ** ERROR **
I *************************
------------------->I CMDGO(08)
----------------- *************************
/IS TRACK IN ERROR\NO ** SEND TRACK IN ERROR **
/ AN 03? \------>** TO TAPE CONTROLLER **
/ \ ** **
----------------------- *************************
*** I YES I
*2*----------------->I<-----------------------------
*** I CMDGO(08)
*************************
** TRY READ COMMAND **
** AGAIN **
** **
*************************
I CMDGO(08)
----------------- ----------------- *************************
/ \NO / \NO ** REPOSITION TO **
/ ERROR? \---------------------------->/ IN PASS ZERO? \------>** OPPOSITE END OF **
/ \ / \ ** RECORD **
----------------------- ----------------------- *************************
I YES I YES I
I I<-----------------------------
----------------- ************
*** NO /RETRIED 30 TIMES \YES ************ *EXCMD(07) *
*1*<-------/ IN THIS PASS? \------->*ENDPAS(23)* ************
*** / \ ************
-----------------------
DXMPA - DX10 MICROCODE DECFLO VER 00.11 03-JAN-78 09:59 PAGE 23
READ ERROR RETRY ROUTINE - END OF PASS SEQ 0040
************
*ENDPAS *
************
I CMDGO(08)
----------------- ************************* -----------------
/ \YES ** TRY ORIGINAL READ ** / \NO ************
/ IN PASS ONE? \------>** COMMAND AGAIN **-----> / ERROR? \------->*EXCMD(07) *
/ \ ** ** / \ ************
----------------------- ************************* -----------------------
I NO I YES
I ************
*********************** *NRETRY(07)*
*BUILD A NEW XFER LIST* ************
*IN 8-MEMORY FOR READ *
*IN OPPOSITE DIRECTION*
***********************
I
I
-----------------
/ WILL XFER LIST \NO ************ IF RECORD DIFFERS IN SIZE FROM XFER LIST, DX10
/LOAD DATA INTO SAME\------->*NRETRY(07)* MAY NOT BE ABLE TO ASSEMBLE THE SAME 10-MEMORY
/POSITION IN 10-MEMORY\ ************ WORDS IN OPPOSITE DIRECTION
-----------------------
I YES
I
***********************
* SET PASS COUNTER TO *
* ONE *
* *
***********************
I
I
************
*PASS2(22) *
************
DXMPA - DX10 MICROCODE DECFLO VER 00.11 03-JAN-78 09:59 PAGE 24
FLOW CHART CROSS REFERENCE LIST SEQ 0041
BLKDNI 10 14 15
BOCHK 17 18 18
CHCHK 17 17 19 19
CMDEND 09 11 11
CMDGO 07 08# 13 18 18 19 19 19 20 20 20 21 22 22 22 22 22 23
CTLCMD 09 11
DECODE 06 07
DOCMD 06 07
ENDPAS 22 23
ERGRET 17 21 21
EXCMD 07 07 18 19 20 21 22 23
FNDX 09 10
GETRWS 02 03# 13
IDLE 01 02# 04 05 06 07 07 08 12 15
IFETCH 06 06 07
LONGRC 14 16
NRETRY 07 17 17 17 17 17 18 19 20 20 21 23 23
ON 10 14
PASS2 22 23
RDRET 17 22
RESET 02 04
RESETB 01 01 04#
RETRY 07 17
RETURN 03 04 11 16
SENDCM 08 09
SHORTB 08 13
SHRTRC 14 15 16
SQER00 06
SQER26 10
SRVDEV 14 16
ST200 01#
ST201 01#
ST202 01#
STERR0 09 12
STPRG 02 04 06
STRREQ 02 05
WAIT 10 14 15
WRTRET 17 20 20
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 84
SEQ 0042
3028 /************************************************************
3029 /
3030 / THE FOLLOWING ROUTINES,FROM TSTBEG TO TSTEND ARE
3031 / SELF TEST ROUTINES.THIS IS WHERE THE -8A ATTEMPTS
3032 / TO INSURE THAT ALL OF THE SPECIAL IOT'S ARE STILL
3033 / FUNCTIONAL.
3034 /
3035 / IF AN ERROR OCCURS,IT IS REPORTED BY A DIAGNOSTIC ERROR
3036 / CODE IN THE RANGE OF 100 TO 177.
3037 / THIS STATUS IS STORED INTO LOCATION 5
3038 / AND DISPLAYED IN LIGHTS FOR REGISTER 17
3039 /************************************************************
3040
3041
3042 /************************************************************
3043 /
3044 / INHIBIT DIAGNOSTICS ENTRY POINT
3045 /
3046 /************************************************************
3047
3048 5000 0000 STPTST, 0
3049 5001 6007 INT /INITIALIZE THE SYSTEM
3050 5002 7240 CLA CMA /GEN A -1
3051 5003 3050 DCA NODIAG /SET NO DIAGNOSTICS FLAG
3052 5004 5777' JMP START
3053
3054 /************************************************************
3055 /
3056 / CONTINUOUS DIAGNOSTIC EXECUTION ENTRY PT!
3057 /
3058 /************************************************************
3059
3060 5005 7240 DIAG, CLA CMA /GEN -1
3061 5006 3051 DCA LOOPER /SET TEST FLG
3062 5007 3053 DCA ONETIM /CLEAR ONE TIME FLAG
3063 5010 3005 DCA ECODE /INIT ERROR NUMBER LOC
3064 5011 4214 JMS TSTBEG /RUN THE DIAGNOSTICS
3065 5012 5211 JMP .-1 /FOREVER
3066
3067 5013 5614 TSTEXT, JMP I TSTBEG /RETURN FROM DIAGNOSTICS CALL
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 85
SEQ 0043
3068 /************************************************************
3069 /
3070 / NORMAL DIAGNOSTIC ENTRY PT
3071 /
3072 /************************************************************
3073
3074 5014 0000 TSTBEG, 0
3075 5015 7307 CLA IAC CLL RTL /GET CPC ADDRESS
3076 5016 7125 STL IAC RAL /SELECT
3077 5017 6516 LIS /ON IBUS
3078 5020 6556 GIR /READ <18:35>
3079 5021 6516 LIS /SELECT <14:17>
3080 5022 6555 GIL /READ THEM
3081 5023 6503 G8A /GET BYTE A
3082 5024 3040 DCA T1 /SAVE IT
3083 5025 6504 G8B /GET BYTE B
3084 5026 3041 DCA T2 /SAVE IT
3085 5027 6505 G8C /GET BYTE C
3086 5030 3042 DCA T3 /SAVE IT
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 86
SEQ 0044
3087 /************************************************************
3088 /
3089 / TEST THAT L8A,L8B,L8C,L8S,LIS,INT,LCB,SLB
3090 / STM,I8S, & LBO ALL CLEAR THE AC
3091 /
3092 /************************************************************
3093
3094 5031 4532 TST01, JMS I [CHKCON] /CHK CONTINUE & GO TO TSTEND IF=1
3095 5032 7240 CLA CMA /GEN -1
3096 5033 6517 LBO /DO BUS OUT
3097 5034 7440 SZA /SKP IF AC ZERO
3098 5035 5776' JMP DER100 /LBO DIDN'T CLR THE AC
3099 5036 7240 TST02, CLA CMA /GEN -1
3100 5037 6502 STM /SET THE MP ERR TIMER
3101 5040 7440 SZA /SKP IF AC IS CLEAR'D
3102 5041 5775' JMP DER101 /STM DIDN'T CLR AC
3103 5042 7240 TST03, CLA CMA /GEN -1
3104 5043 6007 INT /DO INT
3105 5044 7440 SZA /SKP IF AC IS CLR'D
3106 5045 5774' JMP DER102 /INT DIDN'T CLR AC
3107 5046 7240 TST04, CLA CMA /GEN -1
3108 5047 6511 L8S /SELECT 8R
3109 5050 7440 SZA /SKP IF AC CLEAR'D
3110 5051 5773' JMP DER103 /L8S DIDN'T CLR AC
3111 5052 7201 TST05, CLA IAC /GEN 1
3112 5053 6510 LCB /DO LCB
3113 5054 7440 SZA /SKP IF AC CLEAR'D
3114 5055 5772' JMP DER104 /LCB DIDN'T CLR AC
3115 5056 6510 LCB /CLR RUN
3116 5057 7240 TST06, CLA CMA /GEN -1
3117 5060 6515 L8C /DO 8R<24:35> LOAD
3118 5061 7440 SZA /SKP IF AC CLR'D
3119 5062 5771' JMP DER105 /L8C DIDN'T CLR AC
3120 5063 7240 TST07, CLA CMA /GEN -1
3121 5064 6514 L8B /DO 8R<12:23> LOAD
3122 5065 7440 SZA /SKP IF AC CLEAR'D
3123 5066 5770' JMP DER106 /L8B DIDN'T CLEAR AC
3124 5067 7240 TST10, CLA CMA /GEN -1
3125 5070 6513 L8A /DO 8R<0:11> LOAD
3126 5071 7440 SZA /SKP IF AC CLR'D
3127 5072 5767' JMP DER107 /L8A DIDN'T CLR AC
3128
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 87
SEQ 0045
3129 /************************************************************
3130 /
3131 / CHECK LOADING OF AN 8R
3132 /
3133 /************************************************************
3134
3135 5073 4532 TST11, JMS I [CHKCON] /CHK CONT AND GO TO TSTEND IF SET
3136 5074 1131 TAD [1] /GET L8A DATA BYTE
3137 5075 6513 L8A /LOAD 8R<0:11>
3138 5076 1130 TAD [2] /GET L8B DATA BYTE
3139 5077 6514 L8B /LOAD 8R<12:23>
3140 5100 1156 TAD [3] /GET L8C DATA BYTE
3141 5101 6515 L8C /LOAD 8R<24:35>
3142 5102 6503 G8A /READ BACK BYTE A
3143 5103 1164 TAD [-1] /COMPARE BYTE'S
3144 5104 7440 SZA /SKP IF OK
3145 5105 5766' JMP DER110 /BYTE A READ BAD
3146 5106 6504 G8B /READ BACK BYTE B
3147 5107 1143 TAD [-2] /COMPARE
3148 5110 7440 SZA /SKP IF OK
3149 5111 5765' JMP DER111 /BYTE B BAD
3150 5112 6505 G8C /READ BACK BYTE C
3151 5113 1154 TAD [-3] /COMPARE
3152 5114 7440 SZA /SKP IF OK
3153 5115 5764' JMP DER112 /BYTE C BAD
3154
3155 5116 5763' JMP TST12 /JUMP AROUND LITERALS TO TEST 12
3156
3157 5163 5200
3158 5164 6361
3159 5165 6362
3160 5166 6363
3161 5167 6364
3162 5170 6365
3163 5171 6366
3164 5172 6367
3165 5173 6370
3166 5174 6371
3167 5175 6372
3168 5176 6373
3169 5177 0214
5200 PAGE
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 88
SEQ 0046
3170 /************************************************************
3171 /
3172 / TEST 8R SELECTION INSTRUCTIONS
3173 /
3174 /************************************************************
3175
3176 5200 4532 TST12, JMS I [CHKCON] /CHK CONT AND GO TO TSTEND IF SET
3177 5201 7200 CLA /RESET AC
3178 5202 6511 L8S /SELECT 8R0
3179 5203 1131 TAD [1] /GET BYTE A
3180 5204 6515 L8C /PUT INTO 8R0<24:35>
3181 5205 6557 I8S /SELECT 8R1
3182 5206 1130 TAD [2] /GET BYTE B
3183 5207 6515 L8C /PUT INTO 8R1<24:35>
3184 5210 6557 I8S /SELECT 8R2
3185 5211 1156 TAD [3] /GET BYTE C
3186 5212 6515 L8C /PUT INTO 8R2<24:35>
3187 5213 6557 I8S /SELECT 8R3
3188 5214 1134 TAD [4] /GET BYTE D
3189 5215 6515 L8C /PUT INTO 8R3<24:35>
3190 5216 6552 D8S /SELECT 8R2
3191 5217 6505 G8C /GET BYTE C
3192 5220 1154 TAD [-3] /COMPARE BYTE C
3193 5221 7440 SZA /SKP IF OK
3194 5222 5777' JMP DER113 /8R2 SELECTION BAD
3195 5223 6552 D8S /SELECT 8R1
3196 5224 6505 G8C /GET BYTE B
3197 5225 1143 TAD [-2] /COMPARE BYTE B
3198 5226 7440 SZA /SKP IF OK
3199 5227 5776' JMP DER114 /8R1 SELECTION IS BAD
3200 5230 6552 D8S /SELECT 8R0
3201 5231 6505 G8C /GET BYTE A
3202 5232 1164 TAD [-1] /COMPARE BYTE A
3203 5233 7440 SZA /SKP IF OK
3204 5234 5775' JMP DER115 /SELECTION OF 8R0 BAD
3205 5235 6552 D8S /SELECT 8R3
3206 5236 6505 G8C /GET BYTE D
3207 5237 1136 TAD [-4] /COMPARE BYTE D
3208 5240 7440 SZA /SKP IF OK
3209 5241 5774' JMP DER116 /WRAP AROUND SELECT BAD
3210 5242 6557 I8S /SELECT 8R0
3211 5243 6505 G8C /GET BYTE A
3212 5244 1164 TAD [-1] /COMPARE BYTE A
3213 5245 7440 SZA /SKP IF OK
3214 5246 5773' JMP DER117 /WRAP AROUND SELECTION BAD
3215 5247 6557 I8S /SELECT 8R1
3216 5250 6007 INT /DO INIT OF DX10
3217 5251 6505 G8C /GET BYTE A
3218 5252 1164 TAD [-1] /COMPARE
3219 5253 7440 SZA /SKP IF OK
3220 5254 5772' JMP DER120 /INT INSTRUCTION DOESN'T SEL 8R0
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 89
SEQ 0047
3221
3222 /************************************************************
3223 /
3224 / TEST DUMP MODE SKP READ THRU SILO TO DR
3225 /
3226 /************************************************************
3227
3228 5255 4532 TST13, JMS I [CHKCON] /CHECK CONTINUE AND GO TO TSTEND IF SET
3229 5256 1371 TAD (CORDMP-1) /GET COMPARE PNTR
3230 5257 4770' JMS SILLST /SETUP SILO LIST
3231 5260 4767' JMS STBSLP /SET LOOP BUS OUT TO BUS IN
3232 5261 7330 CLA STL RAR /GEN 4000
3233 5262 6513 L8A /PUT INTO 8R <0:11>
3234 5263 6514 L8B /CLR OTHER BITS
3235 5264 6515 L8C
3236 5265 4766' JMS LDDAC /LOAD DAC & BYTE CNT
3237 5266 1365 TAD (DMPSKP) /GET DUMP MODE SKIP CBC
3238 5267 6510 LCB /LOAD IT
3239 5270 6502 STM /KICK THE TIMER
3240 5271 1364 TAD (-5) /GET BYTE CNT
3241 5272 4763' JMS WSILO /WRITE THE SILO
3242 5273 4762' JMS GETDR /READ THE DR
3243 5274 4761' JMS CMP8R /COMPARE IT WITH IN CORE PATTERN
3244 5275 5760' JMP DER121 /DUMP MODE DATA FAILURE(DR OR SILO)
3245 5276 4757' JMS CLBSLP /CLR LOOP BUS OUT TO BUS IN
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 90
SEQ 0048
3246
3247 /************************************************************
3248 /
3249 / TEST DUMP MODE SKP READ THRU SILO TO DR(SLOW CLK)
3250 /
3251 /************************************************************
3252
3253 5277 4532 TST14, JMS I [CHKCON] /CHECK CONTINUE AND GO TO TSTEND IF SET
3254 5300 6564 SSC /SET THE SLOW CLOCK
3255 5301 1371 TAD (CORDMP-1) /GET COMPARE PNTR
3256 5302 4770' JMS SILLST /SETUP SILO LIST
3257 5303 4767' JMS STBSLP /SET LOOP BUS OUT TO BUS IN
3258 5304 7330 CLA STL RAR /GEN 4000
3259 5305 6513 L8A /PUT INTO 8R <0:11>
3260 5306 6514 L8B /CLR OTHER BITS
3261 5307 6515 L8C
3262 5310 4766' JMS LDDAC /LOAD DAC & BYTE CNT
3263 5311 1365 TAD (DMPSKP) /GET DUMP MODE SKIP CBC
3264 5312 6510 LCB /LOAD IT
3265 5313 6502 STM /KICK THE TIMER
3266 5314 1364 TAD (-5) /GET BYTE CNT
3267 5315 4763' JMS WSILO /WRITE THE SILO
3268 5316 4762' JMS GETDR /READ THE DR
3269 5317 4761' JMS CMP8R /COMPARE IT WITH IN CORE PATTERN
3270 5320 5756' JMP DER122 /DUMP MODE DATA FAILURE(DR OR SILO)
3271 5321 4757' JMS CLBSLP /CLR LOOP BUS OUT TO BUS IN
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 91
SEQ 0049
3272
3273 /************************************************************
3274 /
3275 / TEST BYTE MODE SKP READ THRU SILO TO DR
3276 /
3277 /************************************************************
3278
3279 5322 4532 TST15, JMS I [CHKCON] /CHECK CONTINUE AND GO TO TSTEND IF SET
3280 5323 1355 TAD (BYTMDE-1) /GET COMPARE PNTR
3281 5324 4770' JMS SILLST /SETUP SILO LIST
3282 5325 4767' JMS STBSLP /SET LOOP BUS OUT TO BUS IN
3283 5326 7330 CLA STL RAR /GEN 4000
3284 5327 6513 L8A /PUT INTO 8R <0:11>
3285 5330 6514 L8B /CLR OTHER BITS
3286 5331 6515 L8C
3287 5332 4766' JMS LDDAC /LOAD DAC & BYTE CNT
3288 5333 1354 TAD (BYTSKP) /GET DUMP MODE SKIP CBC
3289 5334 6510 LCB /LOAD IT
3290 5335 6502 STM /KICK THE TIMER
3291 5336 1136 TAD [-4] /GET BYTE CNT
3292 5337 4763' JMS WSILO /WRITE THE SILO
3293 5340 4762' JMS GETDR /READ THE DR
3294 5341 4761' JMS CMP8R /COMPARE IT WITH IN CORE PATTERN
3295 5342 5753' JMP DER123 /BYTE MODE DATA FAILURE(DR OR SILO)
3296 5343 4757' JMS CLBSLP /CLR LOOP BUS OUT TO BUS IN
3297 5344 5752' JMP TST16 /JMP AROUND LITERALS
3298
3299 5352 5400
3300 5353 6350
3301 5354 0550
3302 5355 6744
3303 5356 6351
3304 5357 6707
3305 5360 6352
3306 5361 6515
3307 5362 6446
3308 5363 6600
3309 5364 7773
3310 5365 0450
3311 5366 6505
3312 5367 6676
3313 5370 6641
3314 5371 6741
3315 5372 6353
3316 5373 6354
3317 5374 6355
3318 5375 6356
3319 5376 6357
3320 5377 6360
5400 PAGE
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 92
SEQ 0050
3321
3322 /************************************************************
3323 /
3324 / TEST BYTE MODE SKP READ THRU SILO TO DR(SLOW CLK)
3325 /
3326 /************************************************************
3327
3328 5400 4532 TST16, JMS I [CHKCON] /CHECK CONTINUE AND GO TO TSTEND IF SET
3329 5401 6564 SSC /SET SLOW CLOCK
3330 5402 1377 TAD (BYTMDE-1) /GET COMPARE PNTR
3331 5403 4776' JMS SILLST /SETUP SILO LIST
3332 5404 4775' JMS STBSLP /SET LOOP BUS OUT TO BUS IN
3333 5405 7330 CLA STL RAR /GEN 4000
3334 5406 6513 L8A /PUT INTO 8R <0:11>
3335 5407 6514 L8B /CLR OTHER BITS
3336 5410 6515 L8C
3337 5411 4774' JMS LDDAC /LOAD DAC & BYTE CNT
3338 5412 1373 TAD (BYTSKP) /GET DUMP MODE SKIP CBC
3339 5413 6510 LCB /LOAD IT
3340 5414 6502 STM /KICK THE TIMER
3341 5415 1136 TAD [-4] /GET BYTE CNT
3342 5416 4772' JMS WSILO /WRITE THE SILO
3343 5417 4771' JMS GETDR /READ THE DR
3344 5420 4770' JMS CMP8R /COMPARE IT WITH IN CORE PATTERN
3345 5421 5767' JMP DER124 /BYTE MODE DATA FAILURE(DR OR SILO)
3346 5422 4766' JMS CLBSLP /CLR LOOP BUS OUT TO BUS IN
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 93
SEQ 0051
3347
3348 /************************************************************
3349 /
3350 / TEST ASCIZ MODE SKP READ THRU SILO TO DR
3351 /
3352 /************************************************************
3353
3354 5423 4532 TST17, JMS I [CHKCON] /CHECK CONTINUE AND GO TO TSTEND IF SET
3355 5424 1365 TAD (ASZMDE-1) /GET COMPARE PNTR
3356 5425 4776' JMS SILLST /SETUP SILO LIST
3357 5426 4775' JMS STBSLP /SET LOOP BUS OUT TO BUS IN
3358 5427 7330 CLA STL RAR /GEN 4000
3359 5430 6513 L8A /PUT INTO 8R <0:11>
3360 5431 6514 L8B /CLR OTHER BITS
3361 5432 6515 L8C
3362 5433 4774' JMS LDDAC /LOAD DAC & BYTE CNT
3363 5434 1364 TAD (ASZSKP) /GET DUMP MODE SKIP CBC
3364 5435 6510 LCB /LOAD IT
3365 5436 6502 STM /KICK THE TIMER
3366 5437 1363 TAD (-5) /GET BYTE CNT
3367 5440 4772' JMS WSILO /WRITE THE SILO
3368 5441 4771' JMS GETDR /READ THE DR
3369 5442 4770' JMS CMP8R /COMPARE IT WITH IN CORE PATTERN
3370 5443 5762' JMP DER125 /ASCIZ MODE DATA FAILURE(DR OR SILO)
3371 5444 4766' JMS CLBSLP /CLR LOOP BUS OUT TO BUS IN
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 94
SEQ 0052
3372
3373 /************************************************************
3374 /
3375 / TEST ASCIZ MODE SKP READ THRU SILO TO DR(SLOW CLK)
3376 /
3377 /************************************************************
3378
3379 5445 4532 TST20, JMS I [CHKCON] /CHECK CONTINUE AND GO TO TSTEND IF SET
3380 5446 6564 SSC /SET SLOW CLOCK
3381 5447 1365 TAD (ASZMDE-1) /GET COMPARE PNTR
3382 5450 4776' JMS SILLST /SETUP SILO LIST
3383 5451 4775' JMS STBSLP /SET LOOP BUS OUT TO BUS IN
3384 5452 7330 CLA STL RAR /GEN 4000
3385 5453 6513 L8A /PUT INTO 8R <0:11>
3386 5454 6514 L8B /CLR OTHER BITS
3387 5455 6515 L8C
3388 5456 4774' JMS LDDAC /LOAD DAC & BYTE CNT
3389 5457 1364 TAD (ASZSKP) /GET DUMP MODE SKIP CBC
3390 5460 6510 LCB /LOAD IT
3391 5461 6502 STM /KICK THE TIMER
3392 5462 1363 TAD (-5) /GET BYTE CNT
3393 5463 4772' JMS WSILO /WRITE THE SILO
3394 5464 4771' JMS GETDR /READ THE DR
3395 5465 4770' JMS CMP8R /COMPARE IT WITH IN CORE PATTERN
3396 5466 5761' JMP DER126 /ASCIZ MODE DATA FAILURE(DR OR SILO)
3397 5467 4766' JMS CLBSLP /CLR LOOP BUS OUT TO BUS IN
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 95
SEQ 0053
3398
3399 /************************************************************
3400 /
3401 / TEST SIXBIT MODE SKP READ THRU SILO TO DR
3402 /
3403 /************************************************************
3404
3405 5470 4532 TST21, JMS I [CHKCON] /CHECK CONTINUE AND GO TO TSTEND IF SET
3406 5471 1360 TAD (SIXBIT-1) /GET COMPARE PNTR
3407 5472 4776' JMS SILLST /SETUP SILO LIST
3408 5473 4775' JMS STBSLP /SET LOOP BUS OUT TO BUS IN
3409 5474 7330 CLA STL RAR /GEN 4000
3410 5475 6513 L8A /PUT INTO 8R <0:11>
3411 5476 6514 L8B /CLR OTHER BITS
3412 5477 6515 L8C
3413 5500 4774' JMS LDDAC /LOAD DAC & BYTE CNT
3414 5501 1357 TAD (SIXSKP) /GET DUMP MODE SKIP CBC
3415 5502 6510 LCB /LOAD IT
3416 5503 6502 STM /KICK THE TIMER
3417 5504 1356 TAD (-6) /GET BYTE CNT
3418 5505 4772' JMS WSILO /WRITE THE SILO
3419 5506 4771' JMS GETDR /READ THE DR
3420 5507 4770' JMS CMP8R /COMPARE IT WITH IN CORE PATTERN
3421 5510 5755' JMP DER127 /SIXBIT MODE DATA FAILURE(DR OR SILO)
3422 5511 4766' JMS CLBSLP /CLR LOOP BUS OUT TO BUS IN
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 96
SEQ 0054
3423
3424 /************************************************************
3425 /
3426 / TEST SIXBIT MODE SKP READ THRU SILO TO DR(SLOW CLOCK)
3427 /
3428 /************************************************************
3429
3430 5512 4532 TST22, JMS I [CHKCON] /CHECK CONTINUE AND GO TO TSTEND IF SET
3431 5513 6564 SSC /SET THE SLOW CLOCK
3432 5514 1360 TAD (SIXBIT-1) /GET COMPARE PNTR
3433 5515 4776' JMS SILLST /SETUP SILO LIST
3434 5516 4775' JMS STBSLP /SET LOOP BUS OUT TO BUS IN
3435 5517 7330 CLA STL RAR /GEN 4000
3436 5520 6513 L8A /PUT INTO 8R <0:11>
3437 5521 6514 L8B /CLR OTHER BITS
3438 5522 6515 L8C
3439 5523 4774' JMS LDDAC /LOAD DAC & BYTE CNT
3440 5524 1357 TAD (SIXSKP) /GET DUMP MODE SKIP CBC
3441 5525 6510 LCB /LOAD IT
3442 5526 6502 STM /KICK THE TIMER
3443 5527 1356 TAD (-6) /GET BYTE CNT
3444 5530 4772' JMS WSILO /WRITE THE SILO
3445 5531 4771' JMS GETDR /READ THE DR
3446 5532 4770' JMS CMP8R /COMPARE IT WITH IN CORE PATTERN
3447 5533 5754' JMP DER130 /SIXBIT MODE DATA FAILURE(DR OR SILO)
3448 5534 4766' JMS CLBSLP /CLR LOOP BUS OUT TO BUS IN
3449 5535 5753' JMP TST23 /GO AROUND LITERALS
3450
3451 5553 5600
3452 5554 6343
3453 5555 6344
3454 5556 7772
3455 5557 0750
3456 5560 6752
3457 5561 6345
3458 5562 6346
3459 5563 7773
3460 5564 0650
3461 5565 6747
3462 5566 6707
3463 5567 6347
3464 5570 6515
3465 5571 6446
3466 5572 6600
3467 5573 0550
3468 5574 6505
3469 5575 6676
3470 5576 6641
3471 5577 6744
5600 PAGE
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 97
SEQ 0055
3472
3473 /************************************************************
3474 /
3475 / TEST BYTE COUNTER OVERFLOW LOGIC
3476 /
3477 /************************************************************
3478
3479 5600 4532 TST23, JMS I [CHKCON] /CHECK CONTINUE AND GO TO TSTEND IF SET
3480 5601 4777' JMS STBSLP /SET LOOP BUS OUT TO BUS IN
3481 5602 7240 CLA CMA /GEN 7777
3482 5603 6513 L8A /PUT INTO 8R <0:11>
3483 5604 6514 L8B /CLR OTHER BITS
3484 5605 6515 L8C
3485 5606 4776' JMS LDDAC /LOAD DAC & BYTE CNT
3486 5607 1375 TAD (SIXSKP) /GET DUMP MODE SKIP CBC
3487 5610 6510 LCB /LOAD IT
3488 5611 6502 STM /KICK THE TIMER
3489 5612 1136 TAD [-4] /GET BYTE CNT
3490 5613 4774' JMS WSILO /WRITE THE SILO
3491 5614 6521 TBD /SKP ON BYTE OVERFLOW
3492 5615 5773' JMP DER131 /BYTE COUNTER DIDN'T OVERFLOW
3493 5616 6003 SRQ /SKP ON INTERRUPT REQ
3494 5617 5772' JMP DER132 /OVERFLOW DIDN'T CAUSE INTERRUPT
3495 5620 4776' JMS LDDAC /RELOAD BYTE COUNT
3496 5621 6003 SRQ /SKP IF STILL OVERFLOW
3497 5622 7410 SKP /OVERFLOW WAS CLR'D
3498 5623 5771' JMP DER133 /RELOADING BYTE COUNTER DIDN'T CLR INT
3499 5624 4770' JMS CLBSLP /CLR LOOP BUS OUT TO BUS IN
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 98
SEQ 0056
3500 /************************************************************
3501 /
3502 / TEST CPC FOR HOLDING DATA
3503 /
3504 /************************************************************
3505
3506 5625 4532 TST24, JMS I [CHKCON] /CHECK CONTINUE AND GO TO TSTEND IF SET
3507 5626 4767' JMS SETLST /SETUP PATTERN LIST
3508 5627 1136 TAD [-4] /GET PATTERN COUNT
3509 5630 3043 DCA ICNT /SAVE IT
3510 5631 7200 T24A, CLA /RESET AC
3511 5632 6511 L8S /SELECT 8R0
3512 5633 4766' JMS LD8R /LOAD THE 8R WITH DATA PATTERN
3513 5634 4765' JMS LDCPC /LOAD THE CPC
3514 5635 6557 I8S /SELECT 8R1
3515 5636 4764' JMS GETCPC /GET THE CPC BACK
3516 5637 4763' JMS CMP8R /DO DATA COMPARE
3517 5640 5762' JMP DER134 /CPC DATA FAILURE
3518 5641 2043 ISZ ICNT /UPDATE CNT
3519 5642 5231 JMP T24A /LOOP FOR MORE DATA TEST
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 99
SEQ 0057
3520
3521 /************************************************************
3522 /
3523 / TEST DAC FOR HOLDING DATA
3524 /
3525 /************************************************************
3526
3527 5643 4532 TST25, JMS I [CHKCON] /CHECK CONTINUE AND GO TO TSTEND IF SET
3528 5644 4767' JMS SETLST /SETUP PATTERN LIST
3529 5645 1136 TAD [-4] /GET PATTERN COUNT
3530 5646 3043 DCA ICNT /SAVE IT
3531 5647 7200 T25A, CLA /RESET AC
3532 5650 6511 L8S /SELECT 8R0
3533 5651 4766' JMS LD8R /LOAD THE 8R WITH DATA PATTERN
3534 5652 4776' JMS LDDAC /LOAD THE DAC
3535 5653 6557 I8S /SELECT 8R1
3536 5654 4761' JMS GETDAC /GET THE DAC BACK
3537 5655 4763' JMS CMP8R /DO DATA COMPARE
3538 5656 5760' JMP DER135 /DAC DATA FAILURE
3539 5657 2043 ISZ ICNT /UPDATE CNT
3540 5660 5247 JMP T25A /LOOP FOR MORE DATA TEST
3541
3542
3543 5661 4532 JMS I [CHKCON] /CHECK CONTINUE
3544 5662 1051 TAD LOOPER /GET LOOPER FLAG
3545 5663 7650 SNA CLA /SKIP IF SET
3546 5664 5757' JMP TSTEND /GO TO END OF TEST
3547 5665 1053 TAD ONETIM /GET ONE TIME DIAGNOSTIC FLAG
3548 5666 7650 SNA CLA /SKIP IF SET
3549 5667 5756' JMP TST26 /NO, GO ON TO NEXT TEST
3550 5670 5757' JMP TSTEND /END THE TESTS NOW
3551
3552 5756 6000
3553 5757 6265
3554 5760 6336
3555 5761 6475
3556 5762 6337
3557 5763 6515
3558 5764 6465
3559 5765 6455
3560 5766 6436
3561 5767 6430
3562 5770 6707
3563 5771 6340
3564 5772 6341
3565 5773 6342
3566 5774 6600
3567 5775 0750
3568 5776 6505
3569 5777 6676
6000 PAGE
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 100
SEQ 0058
3570 /************************************************************
3571 /
3572 / TEST CONNECTION TO TX01 BY PERFORMING A SENSE COMMAND
3573 /
3574 / NOTE: THIS TEST IS NOT RUN WHEN CALLED
3575 / FROM IDLE LOOP
3576 /
3577 /************************************************************
3578
3579 6000 4532 TST26, JMS I [CHKCON] /SET LOOP ADDRESS
3580 6001 4777' JMS RESETB /PERFORM A SYSTEM RESET
3581 6002 6502 TST26R, STM /KICK THE TIMER
3582 6003 6517 LBO /LOAD DEVICE ADDRESS 0
3583 6004 6571 SAD /SET ADDRESS OUT
3584 6005 6575 SHL /SET HOLD OUT
3585 6006 6576 SSE /SET SELECT OUT
3586 6007 6502 STM /KICK THE TIMER
3587 6010 6507 GTI /READ TAG IN LINES
3588 6011 0162 AND [STATIN+OPRIN+SELIN] /CLEAR ALL BUT NORMAL RESPONSE LINES
3589 6012 7450 SNA /SKIP IF ANY ARE SET
3590 6013 5776' JMP DER136 /CONTROL UNIT DID NOT RESPOND TO SELECTION SEQUENCE
3591 6014 0130 AND [SELIN] /KEEP ONLY SELECT IN
3592 6015 7440 SZA /SKIP IF NOT SELECT IN IN RESPONSE
3593 6016 5775' JMP DER137 /CONTROL UNIT DID NOT DECODE DEVICE ADDRESS 0
3594 /OR CONTROL UNIT IS OFF-LINE
3595 6017 6507 GTI /READ TAG IN LINES
3596 6020 0134 AND [OPRIN] /KEEP ONLY OPERATIONAL IN
3597 6021 7450 SNA /SKIP IF RESPONSE WAS OPERATIONAL IN
3598 6022 5774' JMP TST26B /SERVICE SHORT BUSY SEQUENCE
3599 6023 6531 CAD /CLEAR ADDRESS OUT
3600 6024 6502 STM /KICK THE TIMER
3601 6025 6507 GTI /READ TAG IN LINES
3602 6026 0127 AND [ADRIN] /KEEP ONLY ADDRESS IN
3603 6027 7450 SNA /SKIP IF ADDRESS IN SET
3604 6030 5773' JMP DER140 /ADDRESS IN DID NOT SET IN SELECTION SEQUENCE
3605 6031 6541 TBP /TEST BUS PARITY
3606 6032 5772' JMP DER141 /BAD PARITY ON BUS IN WITH ADDRESS IN PRESENTED
3607 6033 6506 GBI /READ BUS IN LINES
3608 6034 7440 SZA /SKIP IF BUS IN LINES ARE ALL ZERO
3609 6035 5771' JMP DER142 /NOT ZERO ADDRESS RECEIVED WHEN ATTEMPTED TO
3610 /SELECT UNIT ZERO
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 101
SEQ 0059
3611 6036 1134 TAD [SNS] /GET SENSE COMMAND CODE
3612 6037 6517 LBO /PUT SENSE COMMAND ON BUS
3613 6040 6572 SCM /SET COMMAND OUT
3614 6041 7000 NOP /STALL
3615 6042 6502 STM /KICK THE TIMER
3616 6043 6507 GTI /READ TAG IN LINES
3617 6044 0127 AND [ADRIN] /KEEP ONLY ADDRESS IN
3618 6045 7440 SZA /SKIP IF ADDRESS IN DROPPED
3619 6046 5770' JMP DER143 /ADDRESS IN DID NOT DROP DURING SELECTION SEQUENCE
3620 6047 6532 CCM /CLEAR COMMAND OUT
3621 6050 7000 NOP /STALL
3622 6051 7000 NOP /STALL
3623 6052 6502 STM /KICK THE TIMER
3624 6053 6507 GTI /READ TAG IN LINES
3625 6054 0126 AND [STATIN] /KEEP ONLY STATUS IN
3626 6055 7450 SNA /SKIP IF STATUS IN SET
3627 6056 5767' JMP DER144 /STATUS IN DID NOT SET DURING TEST IO COMMAND
3628 6057 6541 TBP /TEST BUS PARITY
3629 6060 5766' JMP DER145 /BAD PARITY ON BUS IN WITH STATUS BYTE PRESENTED
3630 6061 6506 GBI /READ BUS IN LINES
3631 6062 7440 SZA /SKIP IF STATUS BYTE IS ZERO
3632 6063 5765' JMP DER146 /NON-ZERO INITIAL STATUS BYTE PRESENTED IN SENSE COMMAND
3633 6064 6573 SVA /SET SERVICE OUT
3634 6065 7000 NOP /STALL
3635 6066 6502 STM /KICK THE TIMER
3636 6067 6507 GTI /READ TAG IN LINES
3637 6070 0126 AND [STATIN] /KEEP ONLY STATUS IN
3638 6071 7440 SZA /SKIP IF STATUS IN DROPPED
3639 6072 5764' JMP DER147 /STATUS IN DID NOT DROP WHEN SERVICE OUT WAS SET
3640 /DURING PRESENTATION OF STATUS BYTE
3641 6073 6533 CSV /CLEAR SERVICE OUT
3642 6074 1125 TAD [-30] /GET COUNT OF SENSE BYTES
3643 6075 3030 DCA TEMP /PUT IN MEMORY
3644 6076 1150 TAD [SBYT00-1] /GET ADDRESS OF STORAGE TABLE
3645 6077 3010 DCA 10 /PUT IN AUTO-INDEX REGISTER
3646
3647 6100 6507 TST26A, GTI /READ TAG IN LINES
3648 6101 7002 BSW /MOVE SERVICE IN TO BIT 0
3649 6102 7500 SMA /SKIP IF SET
3650 6103 5763' JMP DER150 /SRV IN DID NOT SET PRESENTING A SENSE BYTE
3651 6104 6541 TBP /GET PARITY ON BUS IN
3652 6105 5762' JMP DER151 /PARITY ERROR ON BUS IN LINES WHILE READING A SENSE BYTE
3653 6106 6506 GBI /READ SENSE BYTE
3654 6107 3410 DCA I 10 /PUT SENSE BYTE INTO TABLE
3655 6110 6573 SVA /SET SERVICE OUT
3656 6111 6502 STM /KICK THE TIMER
3657 6112 6507 GTI /READ TAG IN LINES
3658 6113 7002 BSW /MOVE SERVICE IN TO BIT 0
3659 6114 7510 SPA /SKIP IF CLEAR
3660 6115 5761' JMP DER152 /SERVICE IN DID NOT DROP IN RESPONSE TO SERVICE OUT
3661 /DURING PRESENTATION OF SENSE BYTES
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 102
SEQ 0060
3662 6116 6533 CSV /CLEAR SERVICE OUT
3663 6117 2030 ISZ TEMP /COUTN THE SENSE BYTES
3664 6120 5300 JMP TST26A /GO BACK FOR ANOTHER SENSE BYTE
3665
3666 6121 6507 GTI /READ TAG IN LINES
3667 6122 0126 AND [STATIN] /KEEP ONLY STATUS IN
3668 6123 7450 SNA /SKIP IF STATUS IN SET
3669 6124 5760' JMP DER153 /STATUS IN DID OT SET AFTER PRESENTING 24 SENSE BYTES
3670 6125 6541 TBP /CHECK BUS IN PARITY
3671 6126 5757' JMP DER154 /PARITY ERROR IN STATUS BYTE AFTER SENSE COMMAND
3672 6127 6573 SVA /SET SERVICE OUT
3673 6130 6502 STM /KICK THE TIMER
3674 6131 6507 GTI /READ TAG IN LINES
3675 6132 0126 AND [STATIN] /KEEP ONLY STATUS IN
3676 6133 7440 SZA /SKIP IF STATUS IN CLEARED
3677 6134 5756' JMP DER155 /STATUS IN DID NOT DROP AFTER PRESENTING ENDING STATUS
3678 /IN SENSE COMMAND
3679 6135 6533 CSV /CLEAR SERVICE OUT
3680 6136 6536 CSE /CLEAR SELECT OUT
3681 6137 6535 CHL /CLEAR HOLD OUT
3682 6140 6502 STM /KICK THE TIMER
3683 6141 6507 GTI /READ TAG IN LINES
3684 6142 0134 AND [OPRIN] /KEEP ONLY OPERATIONAL IN
3685 6143 7440 SZA /SKIP IF OPERATIONAL IN DROPPED
3686 6144 5755' JMP DER156 /OPERATIONAL IN DID NOT DROP AFTER SENSE COMMAND
3687 6145 4532 JMS I [CHKCON] /CHECK IF TO LOOP
3688 6146 5754' JMP TSTEND /EXIT THE TESTS
3689
3690 6154 6265
3691 6155 6315
3692 6156 6316
3693 6157 6317
3694 6160 6320
3695 6161 6321
3696 6162 6322
3697 6163 6323
3698 6164 6324
3699 6165 6325
3700 6166 6326
3701 6167 6327
3702 6170 6330
3703 6171 6331
3704 6172 6332
3705 6173 6333
3706 6174 6200
3707 6175 6334
3708 6176 6335
3709 6177 0330
6200 PAGE
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 103
SEQ 0061
3710 6200 6536 TST26B, CSE /CLEAR SELECT OUT
3711 6201 6535 CHL /CLEAR HOLD OUT
3712 6202 6531 CAD /CLEAR ADDRESS OUT
3713 6203 3030 DCA TEMP /CLEAR TEMP LOCATION
3714 6204 6507 TST26C, GTI /READ TAG IN LINES
3715 6205 0131 AND [REQIN] /KEEP ONLY REQ IN
3716 6206 7440 SZA /SKIP IF NOT YET SET
3717 6207 5214 JMP TST26D /IT SET, SELECT THE UNIT
3718 6210 6502 STM /KICK THE TIMER
3719 6211 2030 ISZ TEMP /INCREMENT WAIT TIME
3720 6212 5204 JMP TST26C /KEEP WAITING
3721 6213 5314 JMP DER157 /REQUEST IN NEVER SET AFTER SHORT BUSY SEQUENCE
3722
3723 6214 6575 TST26D, SHL /SET HOLD OUT
3724 6215 6576 SSE /SET SELECT OUT
3725 6216 6502 STM /KICK THE TIMER
3726 6217 6507 GTI /READ TAG IN LINES
3727 6220 0127 AND [ADRIN] /KEEP ONLY ADDRESS IN
3728 6221 7450 SNA /SKIP IF SET
3729 6222 5313 JMP DER160 /ADDRESS IN DID NOT SET IN CU INITIATED SELECTION SEQUENCE
3730 6223 6541 TBP /CHECK BUS IN PARITY
3731 6224 5312 JMP DER161 /PARITY ERROR ON BUS IN LINES WHILE READING ADDRESS
3732 6225 6506 GBI /READ ADDRESS
3733 6226 7440 SZA /SKIP IF ADDRESS IS ZERO
3734 6227 5311 JMP DER162 /NON-ZERO ADDRESS PRESENTED IN CU INITIATED SELECTION SEQUENCE
3735 6230 6572 SCM /SET COMMAND OUT
3736 6231 7000 NOP /STALL
3737 6232 6507 GTI /READ TAG IN LINES
3738 6233 0127 AND [ADRIN] /KEEP ONLY ADDRESS IN
3739 6234 7440 SZA /SKIP IF CLEARED
3740 6235 5310 JMP DER163 /ADDRESS IN DID NOT DROP IN CU INITIATED SELECTION SEQUENCE
3741 6236 6532 CCM /CLEAR COMMAND OUT
3742 6237 6502 STM /KICK THE TIMER
3743 6240 7000 NOP /STALL
3744 6241 7000 NOP
3745 6242 6507 GTI /READ TAG IN LINES
3746 6243 0126 AND [STATIN] /KKEEP ONLY STATUS IN
3747 6244 5307 JMP DER164 /STATUS IN DID NOT SET IN CU INITIATED SELECTION SEQUENCE
3748 6245 6573 SVA /SET SERVICE OUT
3749 6246 6502 STM /KICK THE TIMER
3750 6247 7000 NOP /STALL
3751 6250 6507 GTI /READ TAG IN LINES
3752 6251 0126 AND [STATIN] /KEEP ONLY STATUS IN
3753 6252 7440 SZA /SKIP IF CLEARED
3754 6253 5306 JMP DER165 /STATUS IN DID NOT DROP IN CU INITIATED SELECTION SEQUENCE
3755 6254 6536 CSE /CLEAR SELECT OUT
3756 6255 6535 CHL /CLEAR HOLD OUT
3757 6256 6533 CSV /CLEAR SERVICE OUT
3758 6257 7000 NOP /STALL
3759 6260 6507 GTI /READ TAG IN LINES
3760 6261 0134 AND [OPRIN] /KEEP ONLY OPERATIONAL IN
3761 6262 7440 SZA /SKIP IF CLEARED
3762 6263 5305 JMP DER166 /OPR IN DID NOT DROP AFTER CU INITIATED SELECTION SEQUENCE
3763 6264 5777' JMP TST26R /TRY SENSE COMMAND AGAIN
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 104
SEQ 0062
3764 /************************************************************
3765 /
3766 / END OF SELF TESTING
3767 /
3768 /************************************************************
3769
3770
3771 6265 6007 TSTEND, INT /INITIALIZE DX10
3772 6266 1042 TAD T3 /GET BYTE C
3773 6267 6515 L8C
3774 6270 1041 TAD T2 /GET BYTE G
3775 6271 6514 L8B
3776 6272 1040 TAD T1 /GET BYTE A
3777 6273 6513 L8A
3778 6274 7307 CLA IAC CLL RTL /GET CPC ADDRESS
3779 6275 7125 STL IAC RAL /SELECT
3780 6276 6516 LIS /ON IBUS
3781 6277 6554 LIR /LOAD <18:35>
3782 6300 6516 LIS /SELECT <14:17>
3783 6301 6553 LIL /LOAD THOSE BITS
3784 6302 5776' JMP TSTEXT /EXIT
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 105
SEQ 0063
3785 /************************************************************
3786 /
3787 / DIAGNOSTIC ERROR HANDLER
3788 /
3789 /************************************************************
3790
3791 6303 2005 DER170, ISZ ECODE /SERVICE OUT DIDN'T CLEAR WHILE TRANSFERRING DATA
3792 /IN TESTS 17 - 23
3793 6304 2005 DER167, ISZ ECODE /SERVICE OUT DIDN'T SET WHILE TRANSFERRING DATA
3794 /IN TESTS 17 - 23
3795 6305 2005 DER166, ISZ ECODE /OPR IN DID NOT DROP AFTER CU INITIATED SELECTION SEQUENCE
3796 6306 2005 DER165, ISZ ECODE /STATUS IN DID NOT DROP IN CU INITIATED SELECTION SEQUENCE
3797 6307 2005 DER164, ISZ ECODE /STATUS IN DID NOT SET IN CU INITIATED SELECION SEQUENCE
3798 6310 2005 DER163, ISZ ECODE /ADDRESS IN DID NOT DROP IN CU INITIATED SELECTION SEQUENCE
3799 6311 2005 DER162, ISZ ECODE /NON-ZERO ADDRESS PRESENTED IN CU INITIATED SELECTION SEQUENCE
3800 6312 2005 DER161, ISZ ECODE /PARITY ERROR ON BUS IN WHILE READING ADDRESS
3801 /IN CU INITIATED SELECTION SEQUENCE
3802 6313 2005 DER160, ISZ ECODE /ADDRESS IN DID NOT SET IN CU INITIATED SEQUENCE
3803 6314 2005 DER157, ISZ ECODE /REQUEST IN NEVER SET AFTER SHORT BUSY SEQUENCE
3804 6315 2005 DER156, ISZ ECODE /OPERATIONAL IN DID NOT DROP AFTER SENSE COMMAND
3805 6316 2005 DER155, ISZ ECODE /STATUS IN DID NOT DROP AFTER PRESENTING ENDING STATUS
3806 /IN SENSE COMMAND
3807 6317 2005 DER154, ISZ ECODE /PARITY ERROR IN STATUS BYTE AFTER SENSE COMMAND
3808 6320 2005 DER153, ISZ ECODE /STATUS IN DID NOT SET AFTER PRESENTING 24 SENSE BYTES
3809 6321 2005 DER152, ISZ ECODE /SERVICE IN DID NOT DROP IN RESPONSE TO SERVICE OUT
3810 /DURING PRESENTATION OF SENSE BYTE
3811 6322 2005 DER151, ISZ ECODE /PARITY ERROR ON BUS IN WHILE READING A SENSE BYTE
3812 6323 2005 DER150, ISZ ECODE /SRV IN DID NOT SET PRESENTING A SENSE BYTE
3813 6324 2005 DER147, ISZ ECODE /STATUS IN DID NOT DROP WHEN SERVICE OUT WAS SET
3814 /DURING PRESENTATION OF STUTUS BYTE
3815 6325 2005 DER146, ISZ ECODE /INITIAL STATUS BYTE WAS NON-ZERO IN SENSE COMMAND
3816 6326 2005 DER145, ISZ ECODE /BAD PARITY ON BUS IN WITH STATUS BYTE PRESENTED
3817 6327 2005 DER144, ISZ ECODE /STATUS IN DID NOT SET DURING SELECTIONS SEQUENCE
3818 6330 2005 DER143, ISZ ECODE /ADDRESS IN DID NOT DROP DURING SELECTION SEQUENCE
3819 6331 2005 DER142, ISZ ECODE /NOT ZERO ADDRESS RECEIVED WHEN ATTEMPTED TO SELECT UNIT ZERO
3820 6332 2005 DER141, ISZ ECODE /BAD PARITY ON BUS IN WITH ADDRESS IN PRESENTED
3821 6333 2005 DER140, ISZ ECODE /ADDRESS IN DID NOT SET IN SELECTION SEQUENCE
3822 6334 2005 DER137, ISZ ECODE /CONTROL UNIT DID NOT RESPOND TO DEVICE ADDRESS 0
3823 6335 2005 DER136, ISZ ECODE /CONTROL UNIT DID NOT RESPOND TO SELECTION SEQUENCE
3824 6336 2005 DER135, ISZ ECODE /DAC DATA FAILURE
3825 6337 2005 DER134, ISZ ECODE /CPC DATA FAILURE
3826 6340 2005 DER133, ISZ ECODE /INTERRUPT CONDITION DIDN'T CLR
3827 6341 2005 DER132, ISZ ECODE /OVERFLOW DIDN'T CAUSE INTERRUPT
3828 6342 2005 DER131, ISZ ECODE /BYTE COUNTER DIDN'T OVERFLOW
3829 6343 2005 DER130, ISZ ECODE /SKP READ IN SIXBIT FAILED(SLOW CLK)
3830 6344 2005 DER127, ISZ ECODE /SKP READ IN SIXBIT FAILED
3831 6345 2005 DER126, ISZ ECODE /SKP READ IN ASCIZ FAILED(SLOW CLK)
3832 6346 2005 DER125, ISZ ECODE /SKP READ IN ASCIZ FAILED
3833 6347 2005 DER124, ISZ ECODE /SKP READ IN BYTE FAILED(SLOW CLK)
3834 6350 2005 DER123, ISZ ECODE /SKP READ IN BYTE FAILED
3835 6351 2005 DER122, ISZ ECODE /SKP READ IN DUMP FAILED(SLOW CLK)
3836 6352 2005 DER121, ISZ ECODE /SKP READ IN DUMP FAILED
3837 6353 2005 DER120, ISZ ECODE /INT DIDN'T SELECT 8R0
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 106
SEQ 0064
3838 6354 2005 DER117, ISZ ECODE /WRAP AROUND SELECT OF 8R0 BAD
3839 6355 2005 DER116, ISZ ECODE /WRAP AROUND SELECT OF 8R3 BAD
3840 6356 2005 DER115, ISZ ECODE /8R0 SELECTION BAD
3841 6357 2005 DER114, ISZ ECODE /8R1 SELECTION BAD
3842 6360 2005 DER113, ISZ ECODE /8R2 SELECTION BAD
3843 6361 2005 DER112, ISZ ECODE /8R BYTE C READ BAD
3844 6362 2005 DER111, ISZ ECODE /8R BYTE B READ BAD
3845 6363 2005 DER110, ISZ ECODE /8R BYTE A READ BAD
3846 6364 2005 DER107, ISZ ECODE /L8A DIDN'T CLR AC
3847 6365 2005 DER106, ISZ ECODE /L8B DIDN'T CLR AC
3848 6366 2005 DER105, ISZ ECODE /L8C DIDN'T CLR AC
3849 6367 2005 DER104, ISZ ECODE /LCB DIDN'T CLR AC
3850 6370 2005 DER103, ISZ ECODE /L8S DIDN'T CLR AC
3851 6371 2005 DER102, ISZ ECODE /INT DIDN'T CLR AC
3852 6372 2005 DER101, ISZ ECODE /STM DIDN'T CLR AC
3853 6373 5775' DER100, JMP DERROR /LBO DIDN'T CLR AC
3854
3855 6375 6400
3856 6376 5013
3857 6377 6002
6400 PAGE
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 107
SEQ 0065
3858 /************************************************************
3859 /
3860 / STORE DIAGNOSTIC ERROR CODE
3861 /
3862 /************************************************************
3863
3864 6400 7203 DERROR, CLA IAC BSW /GEN 100 CODE
3865 6401 1005 TAD ECODE /ADJUST COUNT
3866 6402 3005 DCA ECODE /PUT BACK
3867 6403 7327 CLA IAC STL RTL /GET ADDRESS 17
3868 6404 7125 IAC STL RAL /SELECT
3869 6405 6516 LIS /ON IBUS
3870 6406 1005 TAD ECODE /GET ERROR #
3871 6407 6515 L8C /PUT IT INTO 8R
3872 6410 7200 CLA /RESET AC
3873 6411 6514 L8B /ZERO OTHER BITS
3874 6412 6554 LIR /LOAD REG# 17
3875 6413 6007 INT /INIT SYSTEM
3876 6414 1053 TAD ONETIM /GET ONE TIME FLAG
3877 6415 7440 SZA /SKIP IF NOT SET
3878 6416 5777' JMP ST207 /HALT ON ERROR
3879 6417 1051 TAD LOOPER /GET LOOPING FLG
3880 6420 7650 SNA CLA /SKP IF SET
3881 6421 5777' JMP ST207 /OTHERWISE HLT
3882 6422 7201 CLA IAC /GEN A 1
3883 6423 3051 DCA LOOPER /PUT IN LOOPER TO LOOP FOREVER
3884 6424 1336 TAD CHKCON /GET LOOP ADDRESS
3885 6425 3052 DCA LPADR /SAVE IT
3886 6426 3005 DCA ECODE /CLEAR ERROR CODE
3887 6427 5452 JMP I LPADR /LOOP ON ERROR
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 108
SEQ 0066
3888 /************************************************************
3889 /
3890 / SETUP PATTERN LIST IN AUTO INDEX 10 & 11
3891 /
3892 /************************************************************
3893
3894 6430 0000 SETLST, 0 /ENTRY
3895 6431 1124 TAD [DATPTN-1] /GET PATTERN ADDR
3896 6432 3010 DCA 10 /SETUP IN AUTO-INDEX
3897 6433 1124 TAD [DATPTN-1] /GET IT AGAIN
3898 6434 3011 DCA 11 /SETUP IN COMPARE AUTO-INDEX
3899 6435 5630 JMP I SETLST /EXIT
3900
3901 /************************************************************
3902 /
3903 / LOAD 8R WITH DATA PATTERN
3904 /
3905 /************************************************************
3906
3907 6436 0000 LD8R, 0 /ENTRY
3908 6437 1410 TAD I 10 /GET BYTE A
3909 6440 6513 L8A /LOAD 8R<0:11>
3910 6441 1410 TAD I 10 /GET BYTE B
3911 6442 6514 L8B /LOAD 8R<12:23>
3912 6443 1410 TAD I 10 /GET BYTE C
3913 6444 6515 L8C /LOAD 8R<24:35>
3914 6445 5636 JMP I LD8R /EXIT
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 109
SEQ 0067
3915 /************************************************************
3916 /
3917 / GET DATA REGISTER
3918 /
3919 /************************************************************
3920
3921 6446 0000 GETDR, 0 /ENTRY
3922 6447 7200 CLA /RESET AC
3923 6450 1131 TAD [DR] /GET DR ADR
3924 6451 6516 LIS /SELECT IT
3925 6452 6555 GIL /READ IT
3926 6453 6556 GIR
3927 6454 5646 JMP I GETDR /EXIT
3928
3929 /************************************************************
3930 /
3931 / LOAD CPC REGISTER
3932 /
3933 /************************************************************
3934
3935 6455 0000 LDCPC, 0 /ENTRY
3936 6456 7200 CLA /RESET AC
3937 6457 1123 TAD [CPC] /GET ADR
3938 6460 6516 LIS /SELECT CPC
3939 6461 6554 LIR /LOAD <18:35>
3940 6462 6516 LIS /SELECT <14:17>
3941 6463 6553 LIL /LOAD IT
3942 6464 5655 JMP I LDCPC /EXIT
3943
3944 /************************************************************
3945 /
3946 / GET CPC REGISTER
3947 /
3948 /************************************************************
3949
3950
3951 6465 0000 GETCPC, 0 /ENTRY
3952 6466 7200 CLA /RESET AC
3953 6467 1123 TAD [CPC] /GET ADR
3954 6470 6516 LIS /SELECT CPC
3955 6471 6556 GIR /READ <18:35>
3956 6472 6516 LIS /SELECT HIGH BITS<14:17>
3957 6473 6555 GIL /READ THEM
3958 6474 5665 JMP I GETCPC /EXIT
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 110
SEQ 0068
3959 /************************************************************
3960 /
3961 / GET DATA ADDRESS REGISTER
3962 /
3963 /************************************************************
3964
3965 6475 0000 GETDAC, 0 /ENTRY
3966 6476 7200 CLA /RESET AC
3967 6477 1122 TAD [DAC] /GET ADR
3968 6500 6516 LIS /SELECT DAC
3969 6501 6556 GIR /READ <18:35>
3970 6502 6516 LIS /SELECT DAC<14:17>
3971 6503 6555 GIL /READ THOSE BITS
3972 6504 5675 JMP I GETDAC /EXIT
3973
3974 /************************************************************
3975 /
3976 / LOAD DATA ADDRESS REGISTER
3977 /
3978 /************************************************************
3979
3980 6505 0000 LDDAC, 0 /ENTRY
3981 6506 7200 CLA /RESET AC
3982 6507 1122 TAD [DAC] /GET ADDR
3983 6510 6516 LIS /SELECT DAC
3984 6511 6554 LIR /WRITE THOSE BITS<18:35>
3985 6512 6516 LIS /SELECT DAC<14:17>
3986 6513 6553 LIL /WRITE THOSE BITS
3987 6514 5705 JMP I LDDAC /EXIT
3988
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 111
SEQ 0069
3989 /************************************************************
3990 /
3991 / COMPARE 8R REGISTER WITH RGA,RGB,RGC
3992 /
3993 /************************************************************
3994
3995
3996 6515 0000 CMP8R, 0 /ENTRY
3997 6516 6503 G8A /GET BYTE A
3998 6517 7041 CIA /NEGATE
3999 6520 1411 TAD I 11 /COMPARE WITH BYTE A IN MEM
4000 6521 7640 SZA CLA /SKP IF EQUAL
4001 6522 5335 JMP CPEX /EXIT
4002 6523 6504 G8B /GET BYTE B
4003 6524 7041 CIA /NEGATE
4004 6525 1411 TAD I 11 /COMPARE WITH BYTE B IN MEM
4005 6526 7640 SZA CLA /SKP IF EQUAL
4006 6527 5335 JMP CPEX /EXIT ON BYTE B FAILURE
4007 6530 6505 G8C /GET BYTE C
4008 6531 7041 CIA /MAKE NEGATIVE
4009 6532 1411 TAD I 11 /COMPARE WITH BYTE C IN MEM
4010 6533 7650 SNA CLA /SKP IF NOT EQUAL
4011 6534 2315 ISZ CMP8R /SETUP GOOD RET
4012 6535 5715 CPEX, JMP I CMP8R /EXIT
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 112
SEQ 0070
4013 /************************************************************
4014 /
4015 / CHECK CONTINUE FLOP
4016 /
4017 /************************************************************
4018
4019 6536 0000 CHKCON, 0 /ENTRY
4020 6537 6502 STM /KICK THE TIMER
4021 6540 6007 INT /INIT SYSTEM
4022 6541 1051 TAD LOOPER /GET LOOPING FLG
4023 6542 7440 SZA /SKP IF NOT SET
4024 6543 5347 JMP CHKLOP /GO CHECK IF LOOPING
4025 6544 6525 TCT /CHECK THE CONTINUE FLOP
4026 6545 5736 JMP I CHKCON /NOT SET, RETURN FOR MORE TESTING
4027 6546 5776' JMP TSTEND /SET, EXIT NOW
4028 6547 7004 CHKLOP, RAL /SHIFT SIGN BIT INTO LINK
4029 6550 7200 CLA /CLEAR THE AC
4030 6551 1053 TAD ONETIM /GET ONE TIME FLAG
4031 6552 7640 SZA CLA /SKIP IF CLEAR
4032 6553 5736 JMP I CHKCON /CONTINUE TESTING
4033 6554 7420 SNL /SKIP IF LOOPER WAS NEGATIVE
4034 6555 5452 JMP I LPADR /RETURN TO LOOP
4035 6556 5736 JMP I CHKCON /CONTINUE
4036
4037 6576 6265
4038 6577 0207
6600 PAGE
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 113
SEQ 0071
4039 /************************************************************
4040 /
4041 / WRITE THE SILO SUBROUTINE
4042 /
4043 /************************************************************
4044
4045 6600 0000 WSILO, 0 /ENTRY PT.
4046 6601 3317 DCA BYTCNT /SAVE # OF BYTES TO WRITE
4047 6602 1410 TAD I 10 /GET A BYTE
4048 6603 6517 LBO /LOAD BYTE OUT
4049 6604 4217 JMS SRVIN1 /SET SERVICE IN
4050 6605 4246 JMS WSRVO1 /WAIT FOR SERVICE OUT TO SET
4051 6606 4230 JMS SRVIN0 /CLR SERVICE IN
4052 6607 4262 JMS WSRVO0 /WAIT FOR SERVICE OUT TO CLR
4053 6610 2317 ISZ BYTCNT /UPDATE BYTE COUNT
4054 6611 5202 JMP WSILO+2 /LOOP TO SEND MORE BYTES
4055 6612 1170 TAD [-100] /GET WAIT CNT FOR SILO PROPOGATION
4056 6613 3030 DCA TEMP /SAVE IT
4057 6614 2030 ISZ TEMP /UPDATE WAIT CNT
4058 6615 5214 JMP .-1 /STALLING FOR SILO
4059 6616 5600 JMP I WSILO /EXIT PT.
4060
4061 /************************************************************
4062 /
4063 / SET SERVICE IN
4064 /
4065 /************************************************************
4066
4067 6617 0000 SRVIN1, 0 /ENTRY PT.
4068 6620 7200 CLA /RESET AC
4069 6621 1377 TAD (407) /GET SERVICE IN BIT
4070 6622 6515 L8C /LOAD INTO 8R
4071 6623 6514 L8B /CLR OTHER BITS
4072 6624 7205 CLA IAC RAL /GEN 2
4073 6625 6516 LIS /SELECT IBUS #2
4074 6626 6554 LIR /SET SERVICE IN
4075 6627 5617 JMP I SRVIN1 /EXIT PT.
4076
4077 /************************************************************
4078 /
4079 / CLR SERVICE IN
4080 /
4081 /************************************************************
4082
4083 6630 0000 SRVIN0, 0 /ENTRY PT.
4084 6631 7200 CLA /RESET AC
4085 6632 1376 TAD (7) /GET CLR SUP OUT BITS
4086 6633 6515 L8C /CLR SERVICE IN BIT IN 8R
4087 6634 6514 L8B /CLR OTHER BITS
4088 6635 7205 CLA IAC RAL /GEN 2
4089 6636 6516 LIS /SELECT IBUS #2
4090 6637 6554 LIR /CLR SERVICE IN
4091 6640 5630 JMP I SRVIN0 /EXIT PT.
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 114
SEQ 0072
4092 /************************************************************
4093 /
4094 / SET SILO WRITE LIST
4095 /
4096 /************************************************************
4097
4098 6641 0000 SILLST, 0 /ENTRY PT.
4099 6642 3011 DCA 11 /SAVE COMPARE DR PNTR
4100 6643 1375 TAD (BYTPTN-1) /GET BYTE LIST PNTR
4101 6644 3010 DCA 10 /SAVE ON AUTO-INDEX
4102 6645 5641 JMP I SILLST /EXIT PT.
4103
4104 /************************************************************
4105 /
4106 / WAIT FOR SERVICE OUT TO SET
4107 /
4108 /************************************************************
4109
4110 6646 0000 WSRVO1, 0 /ENTRY PT.
4111 6647 3030 DCA TEMP /CLR WAIT REG
4112 6650 7205 CLA IAC RAL /GEN 2
4113 6651 6516 LIS /SELECT IBUS #2
4114 6652 6556 GIR /READ IBUS #2 INTO 8R
4115 6653 6505 G8C /GET BUS OUT LINES INTO AC
4116 6654 0163 AND [SRVOUT] /KEEP ONLY SERVICE OUT
4117 6655 7640 SZA CLA /SKP IF ZERO
4118 6656 5646 JMP I WSRVO1 /EXIT IF A ONE
4119 6657 2030 ISZ TEMP /UPDATE WAIT CNT
4120 6660 5250 JMP WSRVO1+2 /LOOP IF ALLOWED
4121 6661 5774' JMP DER167 /SERVICE OUT DIDN'T SET
4122
4123 /************************************************************
4124 /
4125 / WAIT FOR SERVICE OUT TO CLEAR
4126 /
4127 /************************************************************
4128
4129 6662 0000 WSRVO0, 0 /ENTRY PT.
4130 6663 3030 DCA TEMP /CLR WAIT CNT
4131 6664 7205 CLA IAC RAL /GEN 2
4132 6665 6516 LIS /SELECT IBUS #2
4133 6666 6556 GIR /READ IBUS #2 INTO 8R
4134 6667 6505 G8C /READ BUS OUT LINES INTO AC
4135 6670 0163 AND [SRVOUT] /KEEP ONLY SERVICE OUT
4136 6671 7650 SNA CLA /SKP IF SET
4137 6672 5662 JMP I WSRVO0 /EXIT IF RESET
4138 6673 2030 ISZ TEMP /UPDATE WAIT CNT
4139 6674 5264 JMP WSRVO0+2 /LOOP BACK IF ALLOWED
4140 6675 5773' JMP DER170 /SERVICE OUT DIDN'T CLR
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 115
SEQ 0073
4141 /************************************************************
4142 /
4143 / SET LOOP BUS IN TO BUS OUT
4144 /
4145 /************************************************************
4146
4147 6676 0000 STBSLP, 0 /ENTRY PT.
4148 6677 7200 CLA /RESET AC
4149 6700 1372 TAD (400) /GET SET LOOP
4150 6701 6515 L8C /PUT INTO 8R
4151 6702 6514 L8B /CLR OTHER BITS
4152 6703 7325 CLA STL IAC RAL /GEN 3
4153 6704 6516 LIS /SELECT IBUS #3
4154 6705 6554 LIR /SET LOOP BUS OUT TO BUS IN
4155 6706 5676 JMP I STBSLP /EXIT PT.
4156
4157 /************************************************************
4158 /
4159 / CLEAR BUS IN TO BUS OUT
4160 /
4161 /************************************************************
4162
4163 6707 0000 CLBSLP, 0 /ENTRY PT.
4164 6710 6007 INT /RESET AC & INIT DX10
4165 6711 6515 L8C /CLR BUS LOOP BIT
4166 6712 6514 L8B /CLR OTHER BITS
4167 6713 7325 CLA STL IAC RAL /GEN 3
4168 6714 6516 LIS /SELECT IBUS #3
4169 6715 6554 LIR /CLR BUS OUT TO BUS IN LOOP
4170 6716 5707 JMP I CLBSLP /EXIT PT.
4171
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 116
SEQ 0074
4172 /************************************************************
4173 /
4174 / DATA PATTERNS USED IN SELF-TESTING
4175 /
4176 /************************************************************
4177
4178 6717 0000 BYTCNT, 0 /BYTE CNT LOC FOR WSILO
4179
4180 6720 3777 DATPTN, 3777 /.ONES BYTE A
4181 6721 7777 7777 /.ONES BYTE B
4182 6722 7777 7777 /.ONES BYTE C
4183 6723 0000 0000 /.ZEROS BYTE A
4184 6724 0000 0000 /.ZEROS BYTE B
4185 6725 0000 0000 /.ZEROS BYTE C
4186 6726 2525 2525 /.ALT1 BYTE A
4187 6727 2525 2525 /.ALT1 BYTE B
4188 6730 2525 2525 /.ALT1 BYTE C
4189 6731 1252 1252 /.ALT2 BYTE A
4190 6732 5252 5252 /.ALT2 BYTE B
4191 6733 5252 5252 /.ALT2 BYTE C
4192
4193 6734 0011 BYTPTN, 011 /BYTE A
4194 6735 0022 022 /BYTE B
4195 6736 0033 033 /BYTE C
4196 6737 0044 044 /BYTE D
4197 6740 0055 055 /BYTE E
4198 6741 0066 066 /BYTE F
/DX10 MICROCODE FOR STC MAGNETIC TAPE VERSION #14 EDIT #0 PAL10 V142A 30-DEC-77 8:46 PAGE 117
SEQ 0075
4199 6742 0221 CORDMP, 0221 /CORE DUMP MODE COMPARE WORD1
4200 6743 1033 1033 /CORE DUMP MODE COMPARE WORD 2
4201 6744 1115 1115 /CORE DUMP MODE COMPARE WORD 3
4202 6745 0221 BYTMDE, 0221 /BYTE MODE COMPARE WORD 1
4203 6746 1033 1033 /BYTE MODE COMPARE WORD 2
4204 6747 1100 1100 /BYTE MODE COMPARE WORD 3
4205 6750 0444 ASZMDE, 0444 /ASCIZ MODE COMPARE WORD 1
4206 6751 4332 4332 /ASCIZ MODE COMPARE WORD 2
4207 6752 2132 2132 /ASCIZ MODE COMPARE WORD 3
4208 6753 1122 SIXBIT, 1122 /SIXBIT MODE COMPARE WORD 1
4209 6754 3344 3344 /SIXBIT MODE COMPARE WORD2
4210 6755 5566 5566 /SIXBIT MODE COMPARE WORD 3
4211
4212 6772 0400
4213 6773 6303
4214 6774 6304
4215 6775 6733
4216 6776 0007
4217 6777 0407
7000 PAGE