* * CHECK EOR INPUT TO EORFLG FF * JSB CLCCF CLEAR EORFLG FF. JSB CONT SET ASCIIMODE OCT 603 AND REN HIGH. LDA B12 SHOULD JSB DATOT GENERATE EOR AND EOI. JSB SATN ENABLE DATA TO IB. JSB SINPD CLOCK EORFLG FF HIGH. LDB BIT12 EXPECTED STATUS. STB MASK SET TEST MASK. JSB STAT IS EORFLG FF SET? E206 DEF ASCIM NO! REPORT ERROR. * * CHECK ASCIIMODE INPUTS TO EOI AND EOR LOGIC. * JSB CLCCF CLEAR EOR FF. JSB CG3MC CLEAR ASCIIMODE. JSB SATN ENABLE DATA TO IB. LDA B12 SET ASCIIMODE EOR JSB DATOT INTO OBR. JSB SINPD CLOCK EORFLG FF LOW. CLB NO EORFLG JSB STAT WITH ASCIIMODE LOW? E207 DEF ASCIM NO! REPORT ERROR. SKP * * CHECK DECODE OF EOR AND EOI(ASCIIMODE) * JSB CONT SET ASCIIMODE OCT 603 AND REN HIGH. STB HOLDD INITIALIZE TEST PATTERN. ALOP1 JSB SDMOD CLEAR ATN AND EOI. LDA HOLDD GET TEST DATA. CPA B12 IS THIS EOR DATA? JMP NXTAT YES! DON'T TEST IT. CPA B33 IS THIS ASCIIMODE IFC DATA? JMP NXTAT YES! DON'T TEST IT. JSB DATOT OUTPUT DATA. JSB SINPD CLOCK EORFLG FF. STA CTLWD SAVE OUTPUT DATA. JSB STAT DID ILLEGAL EOI GET GENERATED? E210 DEF ASCIM YES! REPORT ERROR. JSB SATN ENABLE DATA TO IB. JSB SINPD CLOCK EORFLG FF. STA CTLWD SAVE OUTPUT CONTROL WORD. JSB STAT DID ILLEGAL EOR OCCUR? E211 DEF EOR YES! REPORT ERROR. LDA HOLDD GET DATA TEST PATTERN. CPA B37 END OF DATA PATTERNS? JMP NXAT YES! GO DO NEXT TEST. JSB DECEC DECREMENT JSB DECEC ERROR CODE TWICE. NXTAT ISZ HOLDD UPDATE DATA PATTERN. JMP ALOP1 GO DO ANOTHER TEST. * * CHECK UPPER DECODE BITS OF IB EOR DECODE LOGIC * NXAT LDA B52 GET EOR TEST PATTERN. JSB DATOT OUTPUT DATA TO IB. JSB SINPD CLOCK EORFLG FF. JSB STAT DID ILLEGAL EOR OCCUR? E212 DEF EOR YES! REPORT ERROR. LDA B112 GET NEXT EOR TEST PATTERN. JSB DATOT OUTPUT DATA TO IB. JSB SINPD CLOCK EORFLG FF. JSB STAT DID ILLEGAL EOR OCCUR? E213 DEF EOR YES! REPORT ERROR. SKP * * CHECK ASCIIMODE IFC. * STB HOLDD INITIALIZE DATA PATTERN. JSB CACTV CLEAR ACTIVE. LDA BIT4 SET UP STA MASK TEST MASK. ALOP2 JSB INITF INITIALIZE OBR LOGIC FOR OUTPUT LDA HOLDD GET TEST DATA CPA B33 IS THIS THE IFC ASCIIMODE DATA? JMP NXATA YES! DON'T TEST IT. E214 JSB ASCOT CHECK ASCII COMMAND. CPA B37 END OF DATA PATTERNS? JMP EATST YES! EXIT. JSB DECEC NO! DECREMENT ERROR NUMBER. NXATA ISZ HOLDD UPDATE DATA PATTERN. JMP ALOP2 DO ANOTHER PATTERN. * * CHECK ASCIIMODE IFC CAN BE TRIGGERED * EATST JSB INITF INITIALIZE OBR LOGIC FOR OUTPUT. LDA B33 GET IFC ASCIIMODE COMMAND. LDB BIT4 GET EXPECTED STATUS. E215 JSB ASCOT CHECK ASCII COMMAND. * * CHECK ASCIIMODE REMOTE COMMAND * JSB CONT SET OCT 2 LOCAL MODE. LDA BIT8 SET UP STA MASK TEST MASK. CLB INITIALIZE STB HOLDD TEST DATA PATTERN. ALOP3 JSB INITF INITIALIZE OBR LOGIC FOR OUTPUT. LDA HOLDD GET DATA PATTERN. CPA TWO IS THIS A REMOTE COMMAND? JMP EALP2 YES! DON'T TEST IT. E216 JSB ASCOT CHECK ASCII COMMAND. CPA B37 END OF DATA PATTERNS? JMP NXAL2 YES! DO NEXT TEST. JSB DECEC NO! DECREMENT ERROR NUMBER. EALP2 ISZ HOLDD UPDATE TEST PATTERN. JMP ALOP3 GO DO NEXT PATTERN. SKP * * CHECK 2B WILL SET ASCIIMODE REMOTE * NXAL2 JSB INITF INITIALIZE OBR LOGIC FOR OUTPUT. LDA TWO OUTPUT ASCIIMODE REMOTE TO IB. LDB BIT8 GET EXPECTED STATUS. E217 JSB ASCOT CHECK ASCII COMMAND. * * CHECK ASCIIMODE LOCAL ILLEGAL DECODE * CLA INITIALIZE STA HOLDD TEST DATA PATTERN ALOP4 JSB INITF INITIALIZE OBR LOGIC FOR OUTPUT. LDA HOLDD GET TEST PATTERN. CPA THREE IS THIS A LOCAL COMMAND? JMP LOPA4 YES! DON'T TEST. E220 JSB ASCOT CHECK ASCII COMMAND. CPA B37 END OF DATA PATTERNS? JMP NXAL4 YES! GO DO NEXT TEST. JSB DECEC NO! DECREMENT ERROR CODE. LOPA4 ISZ HOLDD UPDATE TEST PATTERN. JMP ALOP4 GO DO NEXT TEST PATTERN. * * CHECK ASCIIMODE DECODE OF SET ATN * NXAL4 JSB SDMOD CLEAR ATTENTION. LDA BIT7 SET UP STA MASK TEST MASK. CLB SET EXPECTED STATUS. STB HOLDD INITIALIZE TEST DATA. ALOP5 JSB INITF INITIALIZE OBR LOGIC FOR OUTPUT. LDA HOLDD GET TEST DATA. CPA B33 IS THIS AN IFC COMMAND? JMP NXAL5 YES! DON'T TEST DATA. CPA B16 IS THIS A SET ATN COMMAND? JMP NXAL5 YES! DON'T TEST DATA. E221 JSB ASCOT CHECK ASCII COMMAND. CPA B37 END OF DATA PATTERNS? JMP NXALT YES! GO DO NEXT TEST. JSB DECEC DECREMENT ERROR COUNT. NXAL5 ISZ HOLDD UPDATE DATA PATTERN. JMP ALOP5 GO TEST NEXT PATTERN. SKP * * CHECK ABILITY TO GENERATE AN ASCIIMODE * SET ATN. * NXALT JSB INITF INITIALIZE OBR LOGIC FOR OUTPUT. LDB BIT7 SET EXPECTED STATUS. LDA B16 OUTPUT AN ASCIIMODE SET ATN. E222 JSB ASCOT CHECK ASCII COMMAND. * * CHECK ASCIIMODE DECODE OF CLEAR ATN. * CLA INITIALIZE STA HOLDD TEST DATA PATTERN. ALOP6 JSB INITF INITIALIZE OBR LOGIC FOR OUTPUT. LDA HOLDD GET DATA PATTERN. CPA B33 IS THIS AN IFC COMMAND? JMP NXAL6 YES! DON'T TEST IT. CPA B17 IS THIS A CLEAR ATN COMMAND? JMP NXAL6 YES! DON'T TEST IT. E223 JSB ASCOT CHECK ASCII COMMAND. CPA B37 END OF DATA PATTERNS? JMP NXTS6 YES! GO DO NEXT TEST. JSB DECEC NO! DECREMENT ERROR COUNT. NXAL6 ISZ HOLDD UPDATE DATA PATTERN. JMP ALOP6 DO NEXT DATA PATTERN. * * CHECK ABILITY TO GENERATE AN ASCIIMODE * CLEAR ATN * NXTS6 JSB INITF INITIALIZE OBR LOGIC FOR OUTPUT. CLB EXPECTED STATUS. LDA B17 OUTPUT A CLEAR ATN COMMAND. E224 JSB ASCOT CHECK ASCII COMMAND. SKP * * THIS SECTION CHECKS THE ASCIIMODE DAV OPERATION * * CHECK ILLEGAL DECODE OF DAV * JSB CLCCF CLEAR IFCFLG FF. JSB CTLSN CLEAR TALK AND LISTEN. LDA BIT15 SET UP STA MASK TEST MASK. JSB CONT SET ACTIVE,GENSRQEN OCT 1605 AND ASCIIMODE. STB HOLDD INITIALIZE DATA PATTERN. LDB BIT15 GET EXPECTED STATUS(SRQFLG SET) ALOP7 JSB INITF INITIALIZE OBR LOGIC FOR OUTPUT. LDA HOLDD GET TEST PATTERN CPA TWO IS THIS A REMOTE COMMAND? JMP NXAL7 YES! DON'T TEST IT. CPA THREE IS THIS A LOCAL COMMAND? JMP NXAL7 YES! DON'T TEST IT. CPA B16 IS THIS AN ATN COMMAND? JMP NXAL7 YES! DON'T TEST IT CPA B17 IS THIS A CLEAR ATN COMMAND? JMP NXAL7 YES! DON'T TEST IT. CPA B33 IS THIS AN IFC COMMAND? JMP NXAL7 YES! DON'T TEST IT. E225 JSB ASCOT CHECK ASCII COMMAND. CPA B37 END OF DATA PATTERNS? JMP NXTS7 YES! EXIT. JSB DECEC NO! DECREMENT ERROR CODE. NXAL7 ISZ HOLDD UPDATE DATA PATTERN. JMP ALOP7 GO TEST NEXT PATTERN. * * CHECK ASCIIMODE DAV AND BE GENERATED * NXTS7 LDA BIT11 SET UP STA MASK TEST MASK. CLB GET EXPECTED STATUS. LDA TWO OUTPUT AN ASCIIMODE REMOTE. E226 JSB CKDAV GO CHECK FOR DAV. LDA THREE FORM AN ASCIIMODE LOCAL E227 JSB CKDAV GO CHECK DAV EXECUTED. LDA B16 FORM ASCIIMODE SET ATN. E230 JSB CKDAV CHECK DAV EXECUTED. LDA B17 FORM ASCIIMODE CLEAR ATN. E231 JSB CKDAV CHECK DAV EXECUTED. LDA B33 FORM ASCIIMODE IFC. E232 JSB CKDAV CHECK DAV EXECUTED. JSB TIMOT ALLOW TIME FOR IFC TO SETTLE. JMP *+1,I CONTINUE TESTING DEF NXPAG ON THE NEXT MEMORY PAGE. SKP ORG 4000B * * THIS SECTION TESTS THE ABILITY OF THE IBI * TO TRANSMIT DATA TO AND FROM THE IB USING * THE TALK-LISTEN MODE. * NXPAG JSB CLCCF CLC IBI,C. JSB NOTWM SET ERROR REPORTING MODE. JSB CONT SET ATN,TALK,LISTEN OCT 20375 AND ORAFLGEN. JSB INITF INITIALIZE OBR LOGIC. LDA B252 GET DATA PATTERN. JSB DATOT TALK-LISTEN SHOULD SET ORAFLAG. JSB SDMOD SET DATA MODE. JSB SFSIB DID ORA FLAG SET? E233 DEF ORAFL NO! REPORT ERROR. JSB CONT SET OCT 40200 IRLFLGEN. JSB CLCCF CLC IBI,C. JSB SFSIB IRL FLAG SHOULD SET FLAG. E234 DEF IRLFL NO! REPORT ERROR. JSB PRWMS SET ERROR REPORTING MODE. JSB SINPD CLOCK DATA IN FROM IB. LDB B252 GET EXPECTED DATA. STB CTLWD SAVE DATA OUTPUT WORD. JSB CDATA WAS DATA TRANSFERRED? E235 DEF HANDS NO! REPORT ERROR. JSB NOTWM SET ERROR REPORTING MODE. JSB STALK CLEAR LISTEN ONLY. LDA B125 DATA SHOULD JSB DATOT NOT TRANSFER WITH NO LISTEN. JSB CLCCF CLC IBI,C. JSB SFCIB IRL FLAG SHOULD NOT SET. E236 DEF IRLFL IT DID! REPORT ERROR. JSB CONT SET OCT 20200 ORAFLGEN. JSB SFCIB ORA FLAG SHOULD NOT SET. E237 DEF ORAFL IT DID! REPORT ERROR. JSB PRWMS SET ERROR REPORTING MODE. JSB CDATA OBR SHOULD BE UNCHANGED. E240 DEF HANDS NO! REPORT ERROR. JSB CTLSN CLEAR TALK AND LISTEN. JSB SLSTN SET LISTEN,CLEAR TALK. JSB DATOT OUTPUT COMPLEMENTED PATTERN. JSB CDATA CHECK NO XFER OCCURRED. E241 DEF HANDS IT DID! REPORT ERROR. SKP * * THIS SECTION CHECKS FOR A SHORT BETWEEN REN AND DIO8 * LDA BIT8 FORM STA MASK TEST MASK. JSB CONT SET ATN OCT 65 AND ACTIVE. CCA PUT ZEROS ONTO JSB DATOT THE IB (ONES IN THE OBR). CLB EXPECTED STATUS. JSB STAT DOES DIO8 DRAG REN LOW? E242 DEF RENF YES! REPORT FAILURE. SKP * * THIS SECTION TESTS THE * DMA RELATED LOGIC OF THE IBI. * JSB NOTWM SET ERROR REPORTING MODE. LDA CPTO GET COMPUTER OPTIONS WORD. AND FOUR MASK TO DMA OPTION BIT. SZA,RSS IS DMA PRESENT? JMP NODMA NO! DON'T RUN THIS SECTION. JSB LIAIB CLEAR IRL FF. JSB INITF CLEAR DMAOUTREQFLG. JSB CG3MC CLEAR DMARWSEL FF. SRQ NOW HIGH. JSB ITDMA INITIALIZE DMA. SFS DMA DMA DONE? E243 JSB DMAER NO! NO SRQ FROM IBI. ISZ ERRCD UPDATE ERROR CODE. JSB CLCCF SET DMAOUTREQFLG. JSB ITDMA INITIALIZE DMA. SFC DMA NO XFER WITH NO SRQ? E244 JSB DMAER NO! ILLEGAL SRQ. ISZ ERRCD UPDATE ERROR CODE. JSB CONT SET OCT 2200 DMARWSEL. JSB INITF CLEAR DMAOUTREQFLG. SFC DMA NO XFER SHOULD'VE OCCURRED. E245 JSB DMAER IT DID! ILLEGAL SRQ. ISZ ERRCD UPDATE ERROR CODE. JSB CLCCF SET DMAOUTREQFLG. JSB CG3MC CLEAR DMARWSEL. JSB SINPD SET IRL FLAG. SFC DMA NO XFER SHOULD OCCUR. DID IT? E246 JSB DMAER YES! ILLEGAL SRQ. ISZ ERRCD UPDATE ERROR CODE. JSB CONT SET OCT 2200 DMARWSEL. SFS DMA FLAG SHOULD BE SET FROM SRQ. E247 JSB DMAER NO SRQ. ISZ ERRCD UPDATE ERROR CODE. SKP * EXECUTE THE PRESET IBI TEST * NODMA LDA B257 UPDATE STA ERRCD ERROR CODE. LDB B8A12 SUPPRESS OPERATOR JSB SWRT INTERVENTION TESTS? JMP CHK2I-1 YES! GO HALT. LDB BIT10 NO! SUPPRESS NON- JSB SWRT ERROR MESSAGES? JMP DOPRE YES! GO HALT. CLA,CLE READY FORMATTER. LDB PRMSG PRESET MESG POINTER. JSB FMTR,I PRINT MESSAGE. DOPRE JSB CONT SET OCT 3 REN. JSB DEBON DEBOUNCE SW.REG. H256 OCT 106056 PRESS PRESET,RUN. LDB B31 GET EXPECTED STATUS. JSB STAT PRESET WORK? E257 DEF PRERR NO! REPORT ERROR. RSS SKP * THIS SECTION VERIFIES PROPER OPERATION OF THE * PPREQ AND PPLEX LOGIC. * ISZ ERRCD UPDATE ERROR CODE. CHK2I LDB BIT3 JSB SWRT NEW IBI? RSS YES! DO PPREQ TEST. JMP FINIT NO! EXIT. JSB CLCCF CLEAR IBI FLAG. JSB IFCMD SET IFCFLG. JSB TIMOT ALLOW TIME FOR IFC TO SETTLE. JSB CG3MC CLEAR ALL FLG ENABLES. JSB SACTV SET ACTIVE. JSB SPPMD SET PPLEX. JSB SFSIB PPLEX+PPREQ SHOULD SET FLAG. E260 DEF PPREQ NO? REPORT ERROR. JSB CACTV CLEAR ACTIVE. JSB CLCCF CLEAR IBI FLAG. JSB IFCMD SET IFCFLG. JSB TIMOT ALLOW TIME FOR IFC TO SETTLE. JSB CACTV CLEAR ACTIVE. JSB SPPMD SET ATN AND EOI. JSB SFCIB DID ILLEGAL PPLEX OCCUR? E261 DEF PPREQ YES! REPORT ERROR. JSB SEOI CLEAR ATN. JSB SACTV SET ACTIVE. JSB SFCIB PPLEX LOW WITH ATN LOW? E262 DEF PPREQ NO! REPORT ERROR. JSB SATN SET ATN. CLEAR EOI. JSB SFCIB PPLEX LOW WITH EOI LOW? E263 DEF PPREQ NO! REPORT ERROR. JSB CLCCF CLEAR IFCFLG. JSB SPPMD SET ATN AND EOI. JSB SFCIB PPREQ LOW WITH PPPID=0? E264 DEF PPREQ NO! REPORT ERROR. SKP * END OF TEST * FINIT LDA IBH1 GET FIRST SC. CPA IBH2 ONLY ONE SC UNDER TEST? JMP CABTS YES! GO TO CABLE TEST. LDA PSIND GET PASS INDICATOR. SZA,RSS IS THIS THE LAST PASS? JMP MANL,I NO! GO DO SECOND PASS. HED CABLE TEST * * CABLE TEST SECTION * * SINCE ANY SHORTS IN THE CABLE WOULD HAVE BEEN CAUGHT * BY THE PREVIOUS SECTION OF DIAGNOSTIC, THIS TEST SECTION * ONLY TESTS THE CABLE'S ABILITY TO TRANSMIT A ZERO LOGIC * LEVEL FOR EACH SIGNAL. * CABTS LIA 1 GET SW. REG. OPTIONS. SLA,RSS IS BIT 0 SET? JMP CKH77 NO! GO CHECK FOR END OF TEST. LDA B250 UPDATE STA ERRCD ERROR CODE. LDB IBH1 GET FIRST SC. CPB IBH2 ARE THE SC'S THE SAME? RSS YES! GO HALT. JMP DOCTS NO! DO CABLE TEST. JSB DEBON INSURE NO SR BITS ARE PRESSED. E250 OCT 106050 NO TEST WITH ONE SC. JMP CABTS GO CHECK AGAIN. DOCTS LDA NIOTB GET I-O INST. TABLE POINTER. JSB INTIO GO UPDATE I-O INSTRUCTIONS. ISZ ERRCD UPDATE ERROR NUMBER. * * THIS SECTION TESTS THE ABILITY OF THE * CABLE TO TRANSMIT IFC. * JSB PRWMS SET ERROR REPORTING MODE. JSB CONX SET ACTIVE ON THE OCT 5 FIRST IBI. JSB IFCMD SHOULD CLEAR ACTIVE ON FIRST IBI. JSB TIMOT ALLOW TIME FOR IFC TO SETTLE. LDB BIT4 SET UP TEST STB MASK MASK. CLB FORM EXPECTED STATUS. JSB STAT DID IFC CLEAR ACTIVE? E251 DEF CABLF NO! REPORT ERROR. SKP * * THIS SECTION TESTS THE ABILITY OF THE * CABLING TO XMIT DATA AND TO HANDSHAKE. * JSB LIAIB INITIALIZE THE JSB CONX SECOND IBI OCT 7 FLAGS FOR DATA TRANSFER. JSB CONT SET ATN OCT 65 AND ACTIVE ON SECOND IBI. LDA MYA2 GET SECOND IBI MYADDR. IOR B100 FORM TALK ADDRESS. JSB DATOT OUTPUT IT TO THE IB. LDA MYA1 GET FIRST IBI MYADDR. IOR B40 FORM LISTEN ADDRESS. JSB DATOT OUTPUT IT TO THE IB. JSB SDMOD SET DATA MODE. LDA MIN2 GET TEST PATTERN. CABLP STA PATTN SAVE THE PATTERN. AND B377 MASK TO LOWER 8 BITS. STA SAVAH SAVE BYTE FOR COMPARISON LATER. JSB DATOT OUTPUT PATTERN TO IB. JSB LIAIB SYNC DATA TRANSMISSION. JSB LIAIB BRING IN DATA FROM FIRST IBI. CPA SAVAH WAS IT THE SAME AS XMITTED? JMP SK12 YES! CONTINUE NORMALLY. LDB SAVAH NO! GET EXPECTED DATA. JSB SENDM REPORT ERROR. E252 DEF CABLF DATA DIDN'T XMIT. SK12 LDA PATTN GET TEST PATTERN. RAL ROTATE IT. CPA NBIT8 IS TEST DONE? RSS YES! SKIP TO NEXT TEST. JMP CABLP NO! GO TEST NEXT PATTERN. * * THIS SECTION TESTS THE ABILITY OF THE CABLING * TO TRANSMIT REN. * ISZ ERRCD UPDATE ERROR CODE. LDB BIT8 GET EXPECTED STATUS. STB MASK SET TEST MASK. JSB CONT SET OCT 3 REN ON SECOND IBI. JSB STAT DID FIRST IBI RECEIVE IT? E253 DEF CABLF NO! REPORT ERROR. SKP * * THIS SECTION TESTS THE ABILITY OF THE * CABLING TO TRANSMIT SRQ. * JSB CLCCF CLEAR SECOND IBI FLAG. JSB NOTWM SET ERROR REPORTING MODE. IO.X3 CLC IBI,C CLEAR IFCFLG ON FIRST IBI. JSB CONX SET TALK AND LISTEN TO CLEAR OCT 100335 SRQFLG ON FIRST IBI. JSB CONT SET SRQEN AND OBRLFLG OCT 1307 AND CLEAR TALK-LISTEN ON SECOND IBI. JSB DATOT SET OBRLFLG. JSB SFSIB FIRST IBI FLAG SHOULD SET. E254 DEF CABLF NO! SRQ DID NOT XMIT. * * THIS SECTION TESTS THE ABILITY OF THE * CABLING TO TRANSMIT ATN. * JSB PRWMS SET ERROR REPORTING MODE. LDB BIT7 SET UP TEST STB MASK MASK AND EXPECTED STATUS. JSB CONT SET ATN ON OCT 65 SECOND IBI. JSB STAT DID FIRST IBI RECEIVE ATN? E255 DEF CABLF NO! REPORT ERROR. CKH77 ISZ PASCT UPDATE PASS COUNT. NOP ROLLOVER PROTECTION. * * END OF TEST * LDB BIT10 SUPPRESS NON- JSB SWRT ERROR MESSAGES? JMP CKIB YES! GO HALT. CLE FOR CONVERSION ROUTINE. LDA PASCT GET PASS COUNT. LDB PASPT GET STRING POINTER. JSB O2AS,I CONVERT PASS COUNT TO ASCII. CLA,CLE READY FORMATTER. LDB PASSN GET MESSAGE POINTER. JSB FMTR,I PRINT PASS COUNT. CKIB LDB BIT12 DOES OPERATOR WANT TO JSB SWRT LOOP ON TEST? JMP CMORG YES! GO FLASH OVERFLOW. JSB GETTM SEE IF OPERATOR WANTS TS MODULE. LDA PASCT GET PASS COUNT. HLT77 HLT 77B END OF TEST. JMP STAR,I GO TO START OF TEST. HED HPIB TROUBLESHOOTING MODULE * * THIS SECTION IS INCLUDED TO AID THE OPERATOR * IN TROUBLESHOOTING EITHER AN IBI OR AN IB DEVICE * USING THE IBI AS SYSTEM CONTROLLER. * ORG 5000B IBTSM LDB CONSC GET CONSOLE SC. SZB,RSS IS THERE A CONSOLE? JMP GOHT7 NO! GO HALT 77 FOR END OF TEST. LDB FOUR DOES OPERATOR WANT TO JSB SWRT USE THE SECOND IBI SC? JMP GSCSC YES! GET SECOND IBI SC. LDB IBH1 NO! GET FIRST IBI SC. RSS SKIP SECOND SELECT CODE. GSCSC LDB IBH2 GET SECOND SELECT CODE. LDA IOTBL GET IBI I-O INST TABLE PNTR. JSB INTIO GO INITIALIZE IBI I-O INST'S. CLA,CLE READY FORMATTER. LDB TSINM GET INTRODUCTION MESSAGE. JSB FMTR,I PRINT MESSAGE. ESCRN JSB PCRLF GO PRINT CR-LF. TYINL CLA,CLE READY FORMATTER. LDB PRMPT PRINT JSB FMTR,I PROMPT MESSAGE. JSB GCHAR GO GET A CHARACTER. CPA ASCA IS IT AN "A" FOR ABORT? JMP GOHT7 YES! GO HALT 77 FOR END OF TEST. CPA ASCS IS IT A "S" FOR STATUS REPORT? JMP PSTAT YES! GO PRINT IBI STATUS. CPA ASCI IS IT AN "I" FOR INPUT DATA? JMP PDATA YES! GO GET DATA WORD FROM IBI. CPA B103 IS IT A "C" FOR CONTROL IBI. JMP GOCWD YES! GO GET THE CONTROL WORD. CPA ASCD IS IT A "D" FOR DATA OUTPUT? JMP GODWD YES! GO GET DATA WORD. INPER CLA,CLE NO! READY FORMATTER. LDB ERMSG PRINT JSB FMTR,I "INPUT ERROR" MESSAGE. JMP TYINL GO GET ANOTHER CHARACTER. SPC 3 GOCWD JSB FORMD GO FORM THE CONTROL WORD FROM OPERATOR. JSB STFIB READY CONTROL MODE ON IBI. JSB DATOT OUTPUT CONTROL TO IBI. JMP TYINL GET NEXT CHARACTER. SPC 3 GODWD JSB FORMD GO FORM DATA WORD FROM OPERATOR. JSB DATOT OUTPUT DATA TO IBI. JMP TYINL GET NEXT CHARACTER. SKP PSTAT JSB STFIB SET IBI TO CONTROL MODE. JSB LIAIB GET STATUS WORD FROM IBI. JSB PRINT GO PRINT IT ON TTY. JMP TYINL GET NEXT CHARACTER. SPC 3 PDATA JSB LIAIB GET DATA WORD FROM IBI. JSB PRINT GO PRINT IT ON TTY. JMP TYINL GET NEXT CHARACTER. SPC 3 PRINT NOP CLE READY CONVERSION ROUTINE. LDB BUFFR SET BUFFER POINTER. JSB O2AS,I CONVERT NUMBER TO ASCII. CLA,CLE READY FORMATTER. LDB BUFFR SET BUFFER POINTER. JSB FMTR,I GO PRINT NUMBER. JMP PRINT,I RETURN SPC 3 FORMD NOP LDA INPUT GET INPUT BUFFER POINTER. STA PNTR SAVE IT. CLA PUT LDB MIN6 ZEROS STA PNTR,I IN ISZ PNTR THE INB,SZB INPUT JMP *-3 BUFFER. LDB MIN6 GET CHARACTER INPUT COUNT. BADIN STB SAVPB SAVE CHARACTER COUNT. JSB GCHAR GO GET A CHARACTER. LDB SAVPB RESTORE CHARACTER COUNT. SZA,RSS DID OPERATOR PRESS LINE FEED? JMP PRCES YES! GO PROCESS INPUT NUMBER. CPA ASCE NO! WAS E KEY PRESSED? JMP ESCRN YES! EXIT INPUT. STA SAVIN NO! SAVE INPUT. AND B170 IS INPUT CPA B60 A NUMBER <=7? RSS YES! GO PUT IT IN BUFFER. JMP INPER NO! INPUT ERRORAND GET NEXT INPUT. LDA SAVIN RESTORE INPUT. STB SAVPT SAVE CHAR. COUNT. ADB EOBUF FORM CHAR POINTER IN BUFFER. STA B,I PUT CHAR IN BUFFER. LDB SAVPT RESTORE CHARACTER COUNT. INB,SZB SIX CHARACTERS ENTERED? JMP BADIN NO! GO GET ANOTHER NUMBER. JSB PCRLF PRINT A CR-LF ON CONSOLE. SKP PRCES LDB BUFFR GET THE DESTINATION BUFFER PNTR. LDA INPUT GET THE SOURCE BUFFER POINTER. STA LPNTR SAVE IT. JSB STUFA GO PACK SIX JSB STUFA ASCII CHARACTERS INTO JSB STUFA A THREE WORD BUFFER. CCA,CLE READY ASCII TO OCTAL CONVERSION. LDB BUFFR GET ASCII BUFFER POINTER. JSB ASCON,I CONVERT. JMP FORMD,I EXIT ROUTINE. SPC 3 STUFA NOP LDA LPNTR,I GET AN ASCII NUMBER. ALF,ALF SHIFT IT TO UPPER BYTE. ISZ LPNTR UPDATE SOURCE BUFFER PNTR. IOR LPNTR,I MERGE IN NEXT ASCII NUMBER. STA B,I PUT PACKED DATA IN DEST. BUFFER. ISZ LPNTR UPDATE SOURCE BUFFER POINTER. INB UPDATE DESTINATION BUFFER POINTER. JMP STUFA,I RETURN. SPC 3 GCHAR NOP CLA,INA SET UP FOR ONE CHAR. INPUT. STA PARAM CLEAR UPPER BYTE OF INPUT BUFFER. LDB CHRIN GET POINTER TO INPUT BUFFER. JSB SLOIN,I GO GET A CHARACTER FROM CONSOLE. LDA PARAM GET INPUT CHARACTER. ALF,ALF SHIFT IT TO LOWER BYTE. AND B177 STRIP OFF ANY PARITY. JMP GCHAR,I RETURN. SPC 3 GOHT7 LDB BIT12 TEST FOR LOOP JSB SWRT ON DIAGNOSTIC. JMP CMORG YES? GO LOOP. JMP HLT77 NO? GO HALT 77B. FWAA EQU * END FWAA EQU * END STA *+1 PUT HALT IN LINE. HLT 0 ERROR HALT. ISZ SENDM MOVE PAST CONTROL WORD JMP SENDM,I OF JSB AND RETURN.