JMP *+4 STB ASCNO LDB ADTIM JSB NOOUT SKRDT LDA SAVEA CPA ERC02 JMP CNT04 CNT01 LDA BWCNT PRINT BWCNT IF #0 SZA,RSS JMP CNT02 STA ASCNO JSB CTHED LDB ACT01 JSB NOOUT CNT02 LDA BSCNT PRINT BSCNT IF#0 SZA,RSS JMP CNT03 STA ASCNO JSB CTHED LDB ACT02 JSB NOOUT CNT03 LDA HSCNT PRINT HSCNT IF#0 SZA,RSS JMP CNT04 STA ASCNO JSB CTHED LDB ACT03 JSB NOOUT CNT04 LDA BCCNT PRINT BCCNT IF#0 SZA,RSS JMP CNT05 STA ASCNO JSB CTHED LDB ACT04 JSB NOOUT CNT05 LDA CRCNT PRINT CRCNT IF > 1 SZA,RSS JMP ENDCT CPA P0001 A=1? JMP ENDCT YES, DO NOT PRINT. STA ASCNO JSB CTHED LDB ACT05 JSB NOOUT ENDCT LDA SAVEA SZA,RSS JMP CARDR CPA BTM01 A=2? JMP MON01 YES,BAD WORD CPA BTM00 A=1? JMP MON01 YES, BAD WORD ON LAST CARD SSA ERROR CODE? JMP MON02 YES CPA ERC02 JMP ALLOK JUMP IF NORM EOD ISZ ERCNT INC. ERR. COUNTER NOP IN CASE ERCNT=0 ADA BTM15 GIVE ERROR FLAG JMP MON03 JUMP TO COUNT TEST ALLOK CLA JMP MON03 JUMP TO COUNT TEST MON01 ADA BTM15 BAD WORD (ON LAST CARD) CCB STB BCFLG BCFLG=-1 ISZ ERCNT INCREMENT ERROR COUNTER NOP IN CASE ERCNT=0 MON03 LDB FLCNT COUNT TEST CPB RFCNT COUNTS EQUAL? JMP TSTCD,I YES,RETURN SZA TEST OTHERWISE OKAY? JMP *+3 NO LDA ERC92 ISZ ERCNT INC ERR COUNTER STA SAVEA SAVE CODE CLA,CLE SET UP FOR OUTPUT LDB FLCMS JSB 127B,I OUTPUT MESSAGE CLA,INA LDB FLCNT JSB 127B,I OUTPUT NUMBER LDA SAVEA JMP TSTCD,I * MON02 JSB UTILR JMP FIXRD RETURN TO READ CARD. * * SUBROUTINE TWONO OUTPUTS MESSAGE AND TWO NUMBERS * TO ENTER: * B=ADDRESS OF MESSAGE * ASCNO=FIRST NUMBER * ASCNU=SECOND NUMBER * * * SUBROUTINE NOOUT OUTPUTS MESSAGE AND NUMBER. * TO ENTER: * B=ADDRESS OF MESSAGE * ASCNO=THE NUMBER * TWONO NOP LDA RET02 STA RETRN JMP *+4 NOOUT NOP LDA RET01 STA RETRN CLA,CLE JSB 127B,I CLA,INA LDB ASCNO JSB 127B,I RETRN OCT 0 LDB ASCNU JSB 127B,I JMP TWONO,I RET01 JMP NOOUT,I RET02 NOP * * ROUTINE TO PRINT PART OF A MESSAGE * CTHED NOP LDB AHEAD CLA,CLE JSB 127B,I JMP CTHED,I * * UTILITY ERROR MESSAGE OUTPUT * A=ERROR CODE FROM READR UTILR NOP ADA BTM15 ADA STERM LDB 0B,I CLA,CLE JSB 127B,I JMP UTILR,I * ORG 2000B * * TST09 NOP LDA INTSW AND BTM09 ISOLATE BIT 9 SZA TYPE OF DIAGNOSTIC JMP TROTS TROUBLESHOOT LDB ANESS REPLACE "S" FROM TIME BEFORE STB ADESS,I LDA ERCNT A=ERCNT SZA,RSS JMP RBELL A=0 IF ERCNT=0 CPA P0001 PLURAL OR SING IN MESS? JMP *+2 SINGULAR JMP *+3 PLURAL LDB NOESS STB ADESS,I ADA NBASE MAKE INTO ASCII STA AROPR,I STORE FOR OUTPUT LDA BTM00 A=1 IF ERCNT#0 JMP *+2 TROTS LDA BTM01 A=2 IF TROUBLESHOOT RBELL STA ATEMP LDB MBLNO B=NO. TIMES TO RING BELL CMB,INB MAKE NEGATIVE STB BLCNT STORE IN BLCNT DOBEL LDA TIMEC SET ON BELL BIT LDB BELLS COMMAND OTB01 OTB *-* FOR ONE MS JSB 121B,I WAITING LOOP CLB SET OFF BELL BIT OTB02 OTB *-* COMMAND, THEN LDA BLTIM WAIT FOR JSB 121B,I 20 MS BETWEEN RINGS. ISZ BLCNT JMP DOBEL LDA ATEMP JMP TST09,I * HED SUBROUTINE IOTST * * ***** SUBROUTINE IOTST * * * * NO ARGUMENTS ARE REQUIRED * * * ON RETURN * * A = ERROR CODE (A=0 IF NO ERRORS) * * * ERROR CODES * * 000001(IEC01) = SFS AND SFC GIVE SAME RESULT * 000002(IEC02) = FLAG NOT SET BY STF * 000003(IEC03) = FLAG NOT CLEARED BY CLF * 000004(IEC04) = CLC DOES NOT CLEAR CONTROL * 000005(IEC05) = STC DOES NOT SET CONTROL * 000006(IEC06) = PRESET DOES NOT SET FLAG * 000007(IEC07) = PRESET DOES NOT CLEAR CONTROL * 000010(IEC08) = PRESET DOES NOT SET FLAG OR CLEAR CONTROL * 000011(IEC09) = CONTENTS OF CENTRAL INTERRUPT REGISTER BAD * 000012(IEC10) = DEVICE COMMAND DOES NOT SET FLAG * 000013(IEC11) = BITS STUCK ON * 000014(IEC12) = BITS STUCK OFF * 000015(IEC13) = STATUS BITS LATCH * 000016(IEC14) = DATA BITS FLOAT * * *************** * * IOTST NOP * CLF 0B CLC 0B LDA IRQIN LDB SCVAL STA 1B,I * * ***** TEST CLF, STF, SFS, SFC * * STF01 STF *-* SFS06 SFS *-* JMP *+4 FLAG NOT SENT SFC02 SFC *-* JMP *+5 FLAG IS SET JMP IOT51 SFS AND SFC GIVE SAME RESULT SFC05 SFC *-* JMP IOT51 SFS AND SFC GIVE SAME RESULT JMP IOT52 FLAG NOT SET BY STF * * CLF03 CLF *-* SFC03 SFC *-* JMP *+4 FLAG NOT CLEAR SFS07 SFS *-* JMP *+5 FLAG IS CLEARED BY CLF JMP IOT51 SFS AND SFC GIVE SAME RESULT SFS08 SFS *-* JMP IOT51 SFS AND SFC GIVE SAME RESULT JMP IOT53 FLAG NOT CLEARED BY CLF * * STF02 STF *-* SFS09 SFS *-* JMP IOT52 FLAG NOT SET BY STF * * ***** TEST CLC, STC, IRQ CIRCUTS * * CLF04 CLF *-* STF 0B TURN ON INTERRUPT SYSTEM * CLC01 CLC *-* JSB SIRQS JMP *+2 JMP IOT54 CONTROL DOES NOT CLEAR * STC01 STC *-* JSB SIRQS JMP IOT55 CONTROL DOES NOT SET CLC02 CLC *-* JSB SIRQS JMP *+2 JMP IOT54 CONTROL DOES NOT CLEAR * * ***** PRESET TEST * * STC02 STC *-* JSB SIRQS JMP IOT55 CONTROL DOES NOT SET CLF05 CLF *-* SFC04 SFC *-* JMP IOT53 FLAG DOES NOT CLEAR CLA,CLE LDB IOTM1 CLF 0B JSB 127B,I HLT 44B STF 0B SFS10 SFS *-* JMP *+5 CLF06 CLF *-* JSB SIRQS JMP *+6 JMP IOT57 PRESET DOES NOT CLERA CONTROL CLF07 CLF *-* JSB SIRQS JMP IOT56 PRESET DOES NOT SET FLAG JMP IOT58 FLAG AND CONTROL BAD * * ***** TEST DEVICE COMMAND AND FLAG CIRCUITRY * * CLF 0B DISABLE INTERRUPT CLA,CLE LDB IOTM2 JSB 127B,I HLT 66B SCC03 STC *-*,C CLA,INA JSB 121B,I SFS11 SFS *-* JMP IOT60 COMMAND DOES NOT SET FLAG * * ***** TEST DATA BITS * * CLA JSB IOBTS SZA JMP IOT61 DATA BITS STUCK ON CCA OTA01 OTA *-* CLA,INA JSB 121B,I LIA11 LIA *-* CPA MSK01 JMP *+6 XOR MSK01 AND MSK01 SZA JMP IOT63 STATUS BITS LATCH JMP IOT64 DATA BITS FLOAT CCA JSB IOBTS CMA,SZA JMP IOT62 BITS STUCK OFF CLA OTA02 OTA *-* CLA,INA JSB 121B,I LIA12 LIA *-* CPA MSK03 JMP IOT00 SUCESSFUL COMPLETION XOR MSK03 AND MSK01 SZA JMP IOT63 STATUS BITS LATCH JMP IOT64 DATA BITS FLOAT * * ***** REPORT SUCESSFUL COMPLETION * * IOT00 CLA JMP IOTEX * * ***** ERROR CODE REPORTING * ***** SFS AND SFC GIVE SAME RESULT * IOT51 LDA IEC01 JMP IOTEX * ***** FLAG NOT SET BY STF * IOT52 LDA IEC02 JMP IOTEX * ***** FLAG NOT CLEARED BY CLF * IOT53 LDA IEC03 JMP IOTEX * ***** CLC DOES NOT CLEAR CONTROL * IOT54 LDA IEC04 JMP IOTEX * ***** STC DOES NOT SET CONTROL * IOT55 LDA IEC05 JMP IOTEX * ***** PRESET DOES NOT SET FLAG * IOT56 LDA IEC06 JMP IOTEX * ***** PRESET DOES NOT CLEAR CONTROL * IOT57 LDA IEC07 JMP IOTEX * ***** PRESET DOES NOT SET FLAG AND DOES NOT CLEAR CONTROL * IOT58 LDA IEC08 JMP IOTEX * ***** CONTENTS OF CENTRAL INTERRUPT REGISTER ARE BAD * IOT59 LDA IEC09 JMP IOTEX * ***** DEVICE COMMAND DOES NOT SET FLAG * IOT60 LDA IEC10 JMP IOTEX * ***** BITS STUCK ON * IOT61 LDA IEC11 JMP IOTEX * ***** BITS STUCK OFF * IOT62 LDA IEC12 JMP IOTEX * ***** STATUS BITS LATCH * IOT63 LDA IEC13 JMP IOTEX * ***** DATA BITS FLOAT * IOT64 LDA IEC14 IOTEX CLF 0B JMP IOTST,I * * ***** INTERNAL SUBROUTINES * ***** SUBROUTINE SIRQS (SKIP-IRQ-SET) * SIRQS NOP CLA STA IRQFL STF03 STF *-* CLA,INA JSB 121B,I LDA IRQFL SZA,RSS JMP SIRQS,I NOT SKIP * ISZ SIRQS SET SKIP LIA 4B GET CIR VALUE CPA SCVAL JMP SIRQS,I SKIP JMP IOT59 CENTRAL INTERRUPT REG PROBLEM * * * * ***** SUBROUTINE IOBTS * * IOBTS NOP OTA03 OTA *-* SCC04 STC *-*,C CLA,INA JSB 121B,I SFS12 SFS *-* JMP IOT60 LIA13 LIA *-* JMP IOBTS,I * * IOTM1 DEF AIOT1 IOTM2 DEF AIOT2 HED SUBROUTINE READR HED SUBROUTINR BCRPT * ***** BAD COLUMN REPORT SUBROUTINE * BCRPT NOP LDA RWADD STA PNTR1 LDA IWADD STA PNTR2 LDA RFCNT CMA,INA STA CNTR1 CLA STA CCNT1 STA CCNT2 BCRP1 LDA CCNT1 CLE,INA CPA P0010 CLA,CCE STA CCNT1 SEZ ISZ CCNT2 LDA CCNT2 ALF,ALF ADA CCMSK ADA CCNT1 STA BCM01 LDA PNTR1,I XOR PNTR2,I SZA,RSS JMP BCRP9 ALF STA ERRWD LDA PNTR1,I ALF STA REFWD CLA STA CNTR9 LDA N0003 STA CNTR8 LDA BCOAD STA PNTR9 BCRP6 LDA ERRWD CLE,ELA STA ERRWD LDA REFWD RAL STA REFWD SEZ JMP *+5 LDB BCC55 SLA LDB BCC53 JMP *+4 LDB BCC61 SLA LDB BCC60 STB PNTR9,I ISZ PNTR9 ISZ CNTR8 JMP BCRP6 ISZ PNTR9 ISZ CNTR9 LDA CNTR9 CPA P0005 JMP BCRP7 LDB N0004 CPA P0004 RSS INB,RSS ISZ PNTR9 STB CNTR8 JMP BCRP6 BCRP7 CLA,CCE LDB BCMAD JSB 127B,I BCRP9 ISZ PNTR1 ISZ PNTR2 ISZ CNTR1 JMP BCRP1 JMP BCRPT,I * HED SUBROUTINE READR ***** SUBROUTINE READR * * ARGUMENTS * * RWADD IS ADDRESS OF 1ST REFFERENCE WORD * IWADD IS ADDRESS OF 1ST TEST DATA WORD * READT IS TIME ALLOWED FOR COMPLETION OF READ * AS A NEGATIVE NUMBER OF UNITS OF 10T * * DATA RETURNED * * A IS ERROR CODE (=0 IF NO ERRORS) * B IS READ TIME IN UNITS OF 10T * FLCNT IS COUNT OF FLAGS DETECTED * BWCNT IS COUNT OF DATA WORDS WITH ANY TYPE OF ERRORS * BSCNT IS COUNT OF DATA WORDS WITH ANY BAD STATUS * HSCNT IS COUNT OF DATA WORDS WITH BAD HOPPERS STATUS * BCCNT IS COUNT OF DATA WORDS WITH BAD CHARACTERS * * * ERROR CODES * * 100006(ERC99) = READ EXCEEDED TIME ALLOWED * * BEFORE READ * * 100001(ERC90) = CK POWER HOPPER STACKER * 100002(ERC91) = REJECT HOPPER FULL * 100003(ERC92) = PRESS READY * 100005(ERC93) = ILLEGAL READY STATUS * * AT TIME OF 1ST FLAG * * 100004(ERC80) = PICK FAIL * * AFTER READ * * 000003(ERC02) = END OF DECK NORMAL * 000001(ERC03) = END OF DECK - BAD WORDS * * 000002(ERC01) = END OF CARD - BAD WORDS * 000000 = END OF CARD - NORMAL * * * * * READR NOP LDA RWADD STA RWPTR LDA IWADD STA IWPTR CLA STA FLCNT STA BWCNT STA BSCNT STA BCCNT STA HSCNT STA CRCNT STA ECODE STA 1B OTB03 OTB *-* * ***** MAKE CR READY * LIA01 LIA *-* AND MSK01 CLB CPA STS00 JMP *+2 JMP *+3 LDB ERC90 NOP CPA STS01 LDB ERC91 CPA STS02 LDB ERC92 CPA STS03 JMP *+7 CPA STS06 JMP *+5 LDA 1B SZB,RSS LDA ERC93 JMP READR,I * * ***** PICK CARD * RDR10 CLB ZERO TIME COUNTER SCC01 NOP * ***** WAIT FOR DATA WORD * SFC01 EQU * RDR11 SFC *-* 2T 1T+1C JMP RDR12 CLE 2T 1T+1C LDA 1B 2T 2T ADA READT 2T 2T SEZ 2T 1T+1C JMP RDR51 LDA OLT04,I 4T 8T-4C LDA 0B 2T 2T ADB P0002 2T 2T JMP RDR11 2T 1T+1C * 20T 20T * ***** PROCESS IST FLAG * RDR12 LDA NZERO 2T 2T CPA FLCNT 2T 2T JMP *+2 2T 1T JMP RDR13 LCA01 LIA *-*,C 2T 1T+1C STA IWPTR,I 3T 3T CPA RWPTR,I 3T 3T JMP RDR31 2T 1T * 16T 13T+3C AND MSK01 2T 2T CPA STS03 2T 2T JMP RDR71 LDA IWPTR,I 3T 3T XOR RWPTR,I 3T 3T AND MSK01 2T 2T CPA NZERO 2T 2T JMP *+3 LDA P0001 2T 2T JMP *+2 2T 1T+1C LDA NZERO ADA BSCNT 2T 2T STA BSCNT 2T 2T LDA IWPTR,I 3T 3T XOR RWPTR,I 3T 3T AND MSK03 2T 2T CPA NZERO 2T 2T JMP *+3 LDA P0001 2T 2T JMP *+2 2T 1T+1C ADA BCCNT 2T 2T STA BCCNT 2T 2T LDA P0001 2T 2T ADA BWCNT 2T 2T STA BWCNT 2T 2T LDA OLT02,I 4T 6T-2C LDA TTM08,I 8T 8T ADB P0006 2T 2T * 60T 60T * JMP RDR31 2T 1T+1C * * ***** PROCESS REMAINING FLAGS * LCA02 EQU * RDR13 LIA *-*,C 2T 1T,1C STA IWPTR,I 3T 3T CPA RWPTR,I 3T 3T JMP RDR31 2T 1T XOR RWPTR,I 3T 3T AND MSK01 2T 2T CPA STS02 2T 2T JMP *+3 LDA NZERO 2T 2T JMP *+2 2T 1T+1C LDA P0001 ADA HSCNT 2T 2T STA HSCNT 2T 2T LDA IWPTR,I XOR RWPTR,I AND MSK01 CPA NZERO 2T 2T JMP *+3 LDA P0001 2T 2T JMP *+2 2T 1T+1C LDA NZERO ADA BSCNT 2T 2T STA BSCNT 2T 2T LDA IWPTR,I 3T 3T XOR RWPTR,I 3T 3T AND MSK03 2T 2T CPA NZERO 2T 2T JMP *+3 LDA P0001 2T 2T JMP *+2 2T 1T+1C LDA NZERO ADA BCCNT 2T 2T STA BCCNT 2T 2T LDA P0001 2T 2T ADA BWCNT 2T 2T STA BWCNT 2T 2T LDA OLT03,I 4T 7T-3C LDA TTM05,I 5T 5T ADB P0006 2T 2T * 60T 60T * JMP RDR31 * RDR31 LDA IWPTR,I 3T 3T AND MSK04 2T 2T CPA STS04 2T 2T JMP RDR61 CPA STS06 2T 2T JMP RDR63 * LDA IWPTR 2T 2T ADA P0001 2T 2T STA IWPTR 2T 2T LDA RWPTR 2T 2T ADA P0001 2T 2T STA RWPTR 2T 2T LDA FLCNT 2T 2T ADA P0001 2T 2T STA FLCNT 2T 2T LDA TTM05,I 5T 5T LDA OLT06,I 4T 10T-6C ADB P0006 2T 2T JMP RDR11 2T 1T+1C * ***** READ TIMED OUT * RDR51 LDA ERC99 JMP READR,I * ***** END OF DECK - END OF CARD * RDR61 ISZ FLCNT LDA BSCNT CPA HSCNT JMP *+3 LDA BWCNT JMP *+2 LDA BCCNT SZA BAD CHARACTERS ? JMP *+3 LDA ERC02 JMP READR,I LDA ERC03 JMP READR,I * ***** END OF CARD ONLY * RDR63 ISZ FLCNT LDA BWCNT SZA LDA ERC01 JMP READR,I * ***** * RDR71 LDA ERC80 JMP READR,I * * HED SUBROUTINE DMARD * ***** SUBROUTINE DMARD * * * * ARGUMENTS * * RWADD IS ADDRESS OF 1ST REFFERENCE WORD * IWADD IS ADDRESS OF 1ST TEST DATA WORD * ECCNT IS NO. OF DATA WORDS EXPECTED INCLUDING EOC WORD * READT IS TIME ALLOWED FOR READ AS A NEGATIVE NUMBER OF UNITS OF 10T * * DATA RETURNED * * A IS ERROR CODE (=0 IF NO ERRORS) * B IS READ TIME IN UNITS OF 10T * FLCNT IS COUNT OF FLAGS DETECTED * BWCNT IS COUNT OF DATA WORDS WITH ANY TYPE OF ERRORS * BSCNT IS COUNT OF DATA WORDS WITH BAD STATUS * HSCNT IS COUNT OF DATA WORDS WITH BAD HOPPERS STATUS * BCCNT IS COUNT OF DATA WORDS WITH BAD CHARACTERS * * CRCNT IS COUNT OF DATA WORDS TRANSFERED WITH OUT DMA * * * ERROR CODES * * 100006(ERC99) = READ TIMED OUT * * 000004(ERC98) = DMA LOG NOT UP TO DATE * 000005(ERC97) = DMA HARDWARE PROBLEM * 000006(ERC96) = MORE THAN 128 WORDS IN READ * 000007(ERC70) = DMA CANNOT OPERATE IN I/O SLOT * 000010(ERC95) = SRQ DETECTED WHEN BIT 15 = 0 * * BEFORE READ * * 100001(ERC90) = CK POWER HOPPER STACKER * 100002(ERC91) = EMPTY REJECT HOPPER * 100003(ERC92) = PRESS READY * 100005(ERC93) = ILLEGAL READY STATUS * * AT TIME OF 1ST FLAG * * 100004(ERC80) = PICK FAIL * * AFTER READ * * 000003(ERC02) = END OF DECK NORMAL * 000001(ERC03) = END OF DECK - BAD WORDS * 000002(ERC01) = END OF CARD - BAD WORDS * 000000 = END OF CARD - NORMAL * * * * * DMARD NOP LDA RWADD STA RWPTR LDA IWADD STA IWPTR LDA ECCNT STA DMACT CMA ADA IWPTR STA LWPTR LDA BUFLN ADA ECCNT CMA,INA STA EXCNT CLA STA FLCNT STA BWCNT STA BSCNT