IOR MSIGN SET THE TRANSFER DIRECTION BIT DAM13 CLC DMA-4 SET THE BUFER'S S.A. DAM14 OTA DMA-4 LDB WDCNT GET WORD COUNT DAM15 STC DMA-4 SET THE WORD COUNT DAM16 OTB DMA-4 LDB RRF START THE READ JSB OCMMD DIO24 STC DATA,C SET THE DATA TRANSFER CONTROL DMA13 STC DMA,C START THE DMA LDB N4000 WORST CASE IS 200 CPI AT 12.5 IPS STB TG CIO30 SFC CMMD JMP ENT57 THE FLAG HAS BEEN SET, CONTINUE ISZ TG IS COUNT FOR 1MS WAITS DONE? RSS NO - GO WAIT FOR 1 MORE MS JMP ENT56 YES - LOST THE DMA FLAG LDA D1 JSB TIMR,I GO TO MS TIMER FOR 1 SEC JMP CIO30 GO BACK TO LOOK AT FLAG ENT56 JSB STATS GET THE STATUS AND HOLD IT JSB CLEAR CLEAR ANY RUN AWAY CONDITION RSS ENT57 JSB STATS GET THE STATUS AND HOLD IT DMA14 CLC DMA TURN OFF THE DMA CHANNEL DAM17 LIA DMA-4 SAVE THE DMA WORD COUNTER STA RECNT DMA15 STF DMA SET THE DMA CHANNEL FLAG JMP READ,I SPC 1 RREAD NOP LDA STATU RETRIEVE THE ORGINAL STATUS & STA STAT1 -HOLD TEMPORARILY LDA N3 SET THE RE-READ COUNT STA TBF06 ENT02 JSB BSRWF BACKSPACE THE RECORD JSB READ1 RE-READ THE RECORD JSB RSTAT CHECK THE READ STATUS JMP ENT01 IT STILL HAS ERRORS JSB S11CK SUPPRESS ERROR MESSAGE? JMP RENT0 YES ISZ TNUMB UPDATE TEST NO. JSB TSTNI,I PRINT TEST NUMBER JSB DECNO UPDATE TEST NUMBER CLA,CLE LDB .MS03 JSB FMTR,I 'RE-READ REQUIRED' RENT0 JMP RREAD,I ENT01 ISZ TBF06 INCREMENT THE RE-READ COUNTER JMP ENT02 GO BACK AND TRY AGAIN JSB S11CK SUPPRESS ERROR MESSAGE? JMP RENT1 YES CLA,CLE LDB .MS05 JSB FMTR,I 'UNABLE TO READ RECORD' RENT1 JSB S14CK SUPPRESS ERROR HALT? JMP *+4 YES LDA TNUMB LOAD TEST NUMBER LDB STATU AND STATUS HLT 57B NO LDB REW REWIND TO THE LOAD POINT JSB OCMMD -AND START OVER LDA ID GET THE FORMAT ID STA *+3 LDA TNUMB LOAD TEST NUMBER LDB STATU AND STATUS NOP HALT AND WAIT FOR THE OPERATOR COEND JMP RECYL,I GO BACK TO THE START SPC 3 ORG 4000B * SWITCH REGISTER CHECK SUBSTITUTED FOR * DIAGNOSTIC CONFIGURATOR'S. GOOD RETURN * (P+1) IF ANY BIT IS SET WITHIN MASK. * * SW NOP SWITCH REGISTER CHECK LIA SWRG GET SW REG. SETTINGS AND B MASK WITH B SZA,RSS BIT(S) SET? ISZ SW NO,ADJUST RETURN JMP SW,I SPC 1 * ** ERROR BUFFER OR MESSAGE OUTPUT SECTION ** SPC 1 ERBFR EQU * * * PRINT CYCLE COUNT AND TEST NUMBER SPC 1 TSTNO NOP CLA,CLE LDB .MS19 JSB FMTR,I # 'TEST ' # CLA,INA LDB CYCNT JSB FMTR,I CYCLE COUNT CLA,INA LDB TNUMB JSB FMTR,I TEST NUMBER JMP TSTNO,I SPC 1 * PRINT THE GOOD AND BAD CHARACTERS * SPC 1 PCHAR NOP LDA CNT11 GET ERROR WORD NUMBER CMA * ADA WDCNT * CMA,INA * STA AREG3 * CLA,CLE LDB .MS02 JSB FMTR,I 'ERROR IN WORD NO.' CLA,INA LDB AREG3 JSB FMTR,I NUMBER LDA ..LBF STA .LBF RESET POINTER FOR USE BY BINO LDA TBF05,I ERROR WORD JSB BINO CONVERT TO ASCII CLA,CLE LDB .MS13 JSB FMTR,I 'WORD IN ERROR IS' CLA,CLE LDB ..LBF JSB FMTR,I ERROR WORD LDA ..LBF STA .LBF LDA TBF04,I GOOD WORD JSB BINO CONVERT TO ASCII CLA,CLE LDB .MS14 JSB FMTR,I 'AND IT SHOULD BE' CLA,CLE LDB ..LBF JSB FMTR,I GOOD WORD JMP PCHAR,I SPC 1 * LINE BUFFER LOADING ROUTINE SPC 1 STAMB NOP STA .LBF,I ENTER WITH ASCII CHARC'S IN "A" ISZ .LBF GO TO NEXT TWO CHARC. LOCATIONS JMP STAMB,I SPC 1 * BINARY NO. ROUTINE SPC 1 BINO NOP ENTER WITH NO. IN "A" REG. LDB N8 STB DGCNT SET DIGIT COUNTER LDB N4 STB TBF02 THE DIGIT FORMAT COUNTERS LDB N2 STB TBF00 ENT28 LDB A PUT THE NO. IN THE "B" REG. ALSO RAL RBL,RBL STB TBF01 SAVE SHIFTED NUMBER AND D1 STA AREG SAVE FOR EXIT LDA B AND D1 LDB A SET UP FOR PACKING LDA AREG SET UP FOR PACKING ALF,ALF POITION THE EVEN DIGIT TO THE IOR B -UPPER HALF OF THE WORD AND ADD IOR ASCZ -THE ODD DIGIT, THEN PUT IT IN JSB STAMB -ASCII FORMAT BEFORE STORING ISZ DGCNT INCREMENT DIGIT COUNT JMP *+4 COUNT NOT 0, CONTINUE LDA SLASH,I JSB STAMB JMP BINO,I LDA TBF01 ISZ TBF00 INCREMENT THE DIGIT FORMAT COUNT JMP ENT28 GET THE NEXT TWO DIGITS LDA SPACE BLANK FORMAT CHAR. JSB STAMB LDA TBF01 RESTORE "A" ISZ TBF02 INCREMENT THE DIGIT FORMAT COUNT JMP ENT28-2 GET THE NEXT TWO DIGITS LDA SPACE BLANK FORMAT CHAR. JSB STAMB LDA TBF01 RESTORE "A" JMP ENT28-4 GET THE NEXT TWO DIGITS SPC 1 * PRINT THE STATUS ROUTINE * SPC 1 * CALL: * "B" = THE EXPECTED STATUS SPC 1 PRSTA NOP STB EXSTA SAVE EXPECTED STATUS CLA,CLE LDB .MS16 JSB FMTR,I 'STATUS WAS' LDA STATU GIVE STATUS TO PRST JSB PRST PRINT MNEMONICS CLA,CLE LDB .MS14 JSB FMTR,I 'AND IT SHOULD BE' LDA EXSTA GIVE STATUS TO PRST JSB PRST PRINT MNEMONICS FOR STATUS JMP PRSTA,I SPC 2 * STATUS SYMBOL ROUTINE SPC 1 PRST NOP SZA,RSS JMP PRST4 STATUS WORD CLEAR LDB .SEP RESET POINTER TO STB ..SEP LIST OF MNEMONICS LDB SW12 INITIAL MASK PRST1 JSB STMSK BIT SET? JMP PRST2 YES PRST3 RBR NO,SHIFT MASK ISZ ..SEP STEP POINTER TO LIST ISZ ..SEP * CPB SW15 FINISHED? RSS JMP PRST1 NO JSB SKPL CR/LF JMP PRST,I PRST2 STA AREG3 SAVE A AND B STB BREG2 REGISTERS CLA,CLE LDB ..SEP POINTER TO MNEMONIC JSB FMTR,I PRINT MNEMONIC LDA AREG3 LDB BREG2 JMP PRST3 PRST4 CLA,CLE LDB .MS17 JSB FMTR,I 'CLEAR' JMP PRST,I SKP * CALL : * LDA * LDB * JSB STMSK * * * STMSK NOP STA STAT2 AND B SZA,RSS ISZ STMSK LDA STAT2 JMP STMSK,I * .SEP DEF *+1 ASC 2,SE,_ ASC 2,OB,_ ASC 2,RW,_ ASC 2,TB,_ ASC 2,CB,_ ASC 2,TM,_ ASC 2,LP,_ ASC 2,ET,_ ASC 2,TE,_ ASC 2,CR,_ ASC 2,FP,_ ASC 2,DE,_ ASC 2,OF,_ SPC 1 SPC 1 MS00 ASC 6,# CYCLE(S)/ MS01 ASC 11,COMMAND WAS REJECTED/ MS02 ASC 10,ERROR IN WORD NO. #/ MS03 ASC 9,RE-READ REQUIRED/ MS04 ASC 13,COULDN'T FIND CYCLE START/ MS05 ASC 11,UNABLE TO READ RECORD/ MS06 ASC 2,EOT/ MS07 ASC 13,NO UNIT SELECT SWITCH SET/ MS12 ASC 14,CMMD FLAG WAIT TIMED OUT !/ MS13 ASC 9,WORD IN ERROR IS _ MS14 ASC 9,AND IT SHOULD BE _ MS16 ASC 6,STATUS WAS _ MS17 ASC 3,CLEAR/ MS19 ASC 5,# TEST #/ MS20 ASC 14,DATA FLAG WAIT TIMED OUT!/ HEAD ASC 15,13184A-7970E MAG. TAPE DIAG./ SPC 1 END EQU * SKP * ** PROGRAM INITIALIZATION AND CONFIGURATION ** SPC 1 ORG 16000B IENT1 LIA SWRG LOAD THE SWITCH REGISTER AND GET STA B -THE 13184'S S.C. AND THE DRIVE'S AND B37 -SPEED SZA WAS THERE A S.C. ENTERED? JMP IENT2 YES, CONTINUE HLT 73B NO,STOP AND LET THE OPERATOR JMP IENT1 -SET ONE IN THE SWITCH REGISTER IENT2 STA SC184 SAVE THE 13184'S SELECT CODE STA DATAC ALSO SAVE THE DATA AND COMMAND INA -CHANNEL I-O ADDRESSES STA CMMDC LDA B RESTORE "A" WITH THE SWITCH REG- ALF,ALF -ISTER CONTENTS AND POSTITION THE RAL,RAL -DRIVE'S SPEED INDICATOR AND B37 SZA WAS THE SPEED INDICATOR ENTERED ? JMP IENT3 YES, CONTINUE HLT 72B NO,STOP AND LET THE OPERATOR JMP IENT1 -ENTER ONE IENT3 SLA,RSS IS THE SPEED 12.5 IPS JMP IENT4 NO, TRY THE NEXT LDB T12.5 YES, SET THE TIMING CONSTANTS JMP IENT7 IENT4 RAR SLA,RSS IS IT 25.0 IPS JMP IENT5 NO, TRY THE NEXT ONE LDB T25.0 YES, SET THE TIMING CONSTANTS JMP IENT7 IENT5 RAR SLA,RSS IS IST 37.5 IPS JMP IENT8 LDB T37.5 YES, SET THE TIMING CONSTANTS JMP IENT7 IENT8 LDB TT45 IT'S 45.0 IPS,SET TIMING CONSTANTS IENT7 LDA T45.0 SET THE S.A. OF THE TIMING TABLE STA TBF00 LDA N11 SET THE NUMBER OF CONSTANTS THAT STA COUNT -ARE IN THE TABLE LDA B,I GET THE CONSTANT AND STORE IT IN STA TBF00,I -THE TABLE INB ADVANCE THE CONSTANT POINTER ISZ TBF00 ADVANCE THE TIMING TABLE POINTER ISZ COUNT INCREMENT THE CONSTANT COUNTER JMP *-5 NOT DONE YET IENT9 EQU * * * LDA B20K SET THE CONTROL WORD FOR THE DMA IOR SC184 -CHANNEL STA DMACW SAVE THE CONTROL WORD LDA SLCDD+1 CONFIGURE DATA CHANNEL LDB SLCDD SELECT CODES JSB CNFG * DEF DATAC * LDA SLCDC+1 CONFIGURE COMMAND CHANNEL LDB SLCDC SELECT CODES JSB CNFG * DEF CMMDC * LDB SW11 DMA CHANNEL 1 OR JSB SWRCK,I CHANNEL 2? JMP CONT7 CHANNEL 2 LDA SLCDM+1 CONFIGURE DMA CHANNEL 1 LDB SLCDM * JSB CNFG * DEF D6 * LDA SLCDA+1 CONFIGURE DMA CONTROL CHANNEL 1 LDB SLCDA * JSB CNFG * DEF D2 JMP CONT2 CONT7 LDA SLCDM+1 CONFIGURE DMA CHANNEL 2 LDB SLCDM * JSB CNFG * DEF D7 * LDA SLCDA+1 CONFIGURE DMA CONTROL CHANNEL 2 JSB CNFG * DEF D3 * CONT2 HLT 74B CONFIGURATION COMPLETE HALT JMP MDIAI,I GO TO MAIN PROGRAM * CNT00 BSS 1 SC184 BSS 1 D7 DEC 7 TEMP NOP * * CONFIGURE I/O INSTRUCTIONS * CNFG NOP CMA,INA ADA B STA CNT00 - (NUMBER OF POINTERS) LDA CNFG,I LDA A,I STA TEMP GET SELECT CODE CNFG1 LDA B,I GET I/O INSTRUCTION STA TBF00 LDA A,I AND B.17M ADA TEMP INSERT SELECT CODE STA TBF00,I INB ADVANCE POINTER ISZ CNT00 FINISHED? JMP CNFG1 NO ISZ CNFG YES JMP CNFG,I * * B.17M OCT 177700 B20K OCT 20000 * * POINTERS TO DATA CHANNEL SC * SLCD0 EQU * DEF DIO1 TEST 5 DEF DIO2 TEST 5 DEF DIO3 TEST 5 DEF DIO4 TEST 6 DEF DIO5 TEST 7 DEF DIO6 TEST 7 DEF DIO7 TEST 8 DEF DIO8 TEST 13 DEF DIO9 TEST 13 DEF DIO10 TEST 15 DEF DIO11 TEST 15 DEF DIO12 TEST 15 DEF DIO13 TEST 16 DEF DIO14 TEST 17 DEF DIO15 TEST 17 DEF DIO16 TEST 38 DEF DIO17 TEST 45 DEF DIO18 TEST 46 DEF DIO19 TEST 46 DEF DIO20 READ DEF DIO21 READ DEF DIO22 READ DEF DIO23 READ DEF DIO24 READ DEF DIO25 TEST 28 DEF DIO26 TEST 28 DEF DIO27 TEST 29 DEF ENT54 READ SLCD1 EQU * * * POINTERS TO COMMAND CHANNEL * SLCD2 EQU * DEF BEGIN COMMAND EXERCISE DEF CIO2 FLGWT DEF CIO3 OCMMD DEF CIO4 OCMMD DEF CIO5 ACMMD DEF CIO6 ACMMD DEF CIO7 STATS DEF CIO8 TEST 2 DEF CIO9 TEST 3 DEF CIO10 TEST 4 DEF CIO11 TEST 9 DEF CIO12 TEST 9 DEF CIO13 TEST 9 DEF CIO14 TEST 10 DEF CIO15 TEST 11 DEF CIO16 TEST 11 DEF CIO17 TEST 12 DEF CIO18 TEST 17 DEF CIO19 TEST 17 DEF CIO20 TEST 21 DEF CIO21 TEST 22 DEF CIO22 TEST 22 DEF CIO23 TEST 26 DEF CIO24 TEST 33 DEF CIO25 TEST 33 DEF CIO26 TEST 38 DEF CIO27 TEST 44 DEF CIO28 TEST 46 DEF CIO29 TEST 46 DEF CIO30 READ DEF CIO31 TEST 29 DEF CIO32 TEST 30 SLCD3 EQU * * * POINTERS TO DMA CHANNEL * DEF DMA1 DEF DMA2 TEST 15 DEF DMA3 TEST 15 DEF DMA4 TEST 15 DEF DMA5 TEST 15 DEF DMA6 TEST 15 DEF DMA7 TEST 16 DEF DMA8 TEST 38 DEF DMA9 TEST 38 DEF DMA10 TEST 38 DEF DMA11 TEST 46 DEF DMA12 TEST 46 DEF DMA13 READ DEF DMA14 READ DEF DMA15 READ DEF ENT00 TEST 16 DEF ENT04 TEST 15 DEF STDMA TEST 46 * * POINTERS TO DMA CONTROL CHANNEL * SLCD5 EQU * DEF DAM1 TEST 15 DEF DAM2 TEST 15 DEF DAM3 TEST 15 DEF DAM4 TEST 15 DEF DAM5 TEST 38 DEF DAM6 TEST 38 DEF DAM7 TEST 38 DEF DAM8 TEST 38 DEF DAM9 TEST 46 DEF DAM10 TEST 46 DEF DAM11 TEST 46 DEF DAM12 TEST 46 DEF DAM13 READ DEF DAM14 READ DEF DAM15 READ DEF DAM16 READ DEF DAM17 READ SLCD6 EQU * * SLCDM DEF SLCD3 POINTERS TO DMA CHANNEL DEF SLCD5 I/O POINTER LIST SLCDA DEF SLCD5 POINTERS TO DMA CONTROL CHANNEL DEF SLCD6 I/O POINTER LIST * * DMA TIMING WINDOWS FOR 400 WORD TRANSFER * (TEST 46). THE ODD POSITION (1ST, 3RD, ETC.) * IS THE TIME BEFORE THE DMA FLAG IS DUE TO * SET, AND THE EVEN POSITION IS THE ADDITIONAL * TIME (WINDOW) DURING WHICH THE DMA FLAG * SHOULD SET. * * S45.0 DEC 10 1600 CPI 45.0 IPS DEC 2 " " " " DEC 20 800 " " " DEC 3 " " " " DEC 30 556 " " " DEC 4 " " " " DEC 84 200 " " " DEC 10 " " " " * * THE FINAL THREE CONSTANTS OF EACH TIMING * SECTION (S45.0, S37.5, S25.0,S12.5) ARE * USED FOR TESTS 28 - 30 (34B - 36B). * DEC 7 " DEC 1 " DEC 3 " * S37.5 DEC 12 1600 CPI 37.5 IPS DEC 2 " " " " DEC 25 800 " " " DEC 3 " " " " DEC 36 556 " " " DEC 4 " " " " DEC 101 200 " " " DEC 10 " " " " * DEC 8 " DEC 1 " DEC 4 " * S25.0 DEC 18 1600 " 25.0 " DEC 3 " " " " DEC 37 800 " " " DEC 4 " " " " DEC 54 556 " " " DEC 7 " " " " DEC 151 200 " " " DEC 17 " " " " * DEC 12 " DEC 2 " DEC 5 " * S12.5 DEC 37 1600 " 12.5 " DEC 4 " " " " DEC 75 800 " " " DEC 8 " " " " DEC 109 556 " " " DEC 12 " " " " DEC 304 200 " " " DEC 33 " " " " * DEC 25 " DEC 4 " DEC 11 " * SPC 1 LBF EQU * SPC 1 END