JSB BINC ISZ COUNT FINISHED? JMP FM04 NO-GO OUTPUT NEXT OCTAL # JSB FMT02 OUTPUT CR-LF DEF FMTCR POINTER TO MESSAGE JMP FMT03,I EXIT FM08 EQU * ISZ FMT03 ADJUST RETURN JMP FMT03,I EXIT * * * * * SUBROUTINE BINC-DECODES OCTAL # TO BINARY OUTPUT * *CALL: * JSB BINC * * BINC NOP LDA FM01 GET THE NUMBER ELA ROTATE # INTO E STA FM01 RESTORE THE # SEZ IS THE BIT = 0? JMP FM06 NO-GO OUTPUT A 1 JSB FMT02 OUTPUT A 0 DEF FMT00 POINTER TO THE MESSAGE JMP FM07 GOTO EXIT FM06 EQU * JSB FMT02 OUTPUT A 1 DEF FMT01 POINTER TO THE MESSAGE FM07 EQU * JMP BINC,I EXIT * * * * FM01 NOP NUMBER FOR OUTPUT MESSAGE .M5 DEC -5 -5 FMT00 ASC 01,0_ 0 OUTPUT MESSAGE FMT01 ASC 01,1_ 1 OUTPUT MESSAGE FMTSP ASC 01, _ OUTPUTS A SPACE FMTCR ASC 01, / OUTPUTS A CR-LF * * * HED 7970 OPERATOR DESIGN * * OPERATOR DESIGN EXTENTION SECTION **************************** * * * * * FMTR2- * POINTS TO FMTR *CALL: * LDA * LDB * JSB FMTR2,I * * ON ENTRY THE INTERRUPT SYSTEM WILL BE TURNED OFF IF "A" * IS POSITITVE. ON EXIT THE INTERRUPT SYSTEM WILL BE CHECKED * IF THE RETURN FROM FMTR INDICATES THAT A NUMBER IS NOT * EXPECTED TO BE PASSED BACK TO THE FMTR. .FMTR NOP SSA IS IT INITIAL CALL? JMP .FMTX NO - SO DO NOT LOOK AT INT SYS STA .FTR1 SAVE A AND B REG STB .FTR2 LDA FGINT LOAD THE INTERRUPT FLAG STA .FTR3 SAVE IT JSB INTOF,I TURN INTERRUPT SYSTEM OFF LDA .FTR1 RESTORE A AND B REGISTER LDB .FTR2 .FMTX JSB FMTR,I OUTPUT THE MESSAGE SZA IS A NUMBER BEING REQUESTED? JMP .FMTR,I YES - BYPASS CHECK OF INT SYS STA .FTR1 SAVE A AND B REG STB .FTR2 LDA .FTR3 LOAD INTERRUPT FLAG SZA WAS THE INTERRUPT SYS ON? JSB INTON,I YES-TURN IT BACK ON ************************ LDA .FTR1 RESTORE A AND B REGISTER LDB .FTR2 JMP .FMTR,I EXIT * .FTR1 NOP CONTENTS OF A REG .FTR2 NOP CONTENTS OF B REG .FTR3 NOP INTERRUPT FLAG * * SETUP FOR OPERATOR DESIGN * .OPST NOP SETUP PRIOR TO EXECUTING OPDSN JSB INTOF,I TURN OFF INTERRUPT SYSTEM JSB KCORE SETUP MAXIMUM CORE SIZE JSB .ZTCH,I LOAD ALL TRAP CELLS WITH HALTS JSB LDINT,I LOAD TRAP CELLS WITH ER MSG CLA STA CNT01 CLEAR COUNTER STA FGDMA CLEAR DMA FLAG STA FGINT CLEAR INTERRUPT FLAG STA SKPSW CLEAR SKIP SW REG CK FLAG JMP .OPST,I * * * OPERATOR DESIGN STATEMENT DEFINITIONS * AND ROUTINE POINTERS * STUDD EQU * * ASC 2,SR STATUS REPORT ASC 1,AA DEF SR0 * ASC 2,SC STATUS COMPARE ASC 1,IK DEF SC0 * ASC 2,SFC SKIP FLAG CLEAR ASC 1,IA DEF SFC0 * ASC 2,SD STANDARD DATA PATTERN ASC 1,AI DEF SD0 * ASC 2,RD READS A RECORD ASC 1,KK DEF RD0 * ASC 2,WR WRITES A RECORD ASC 1,KK DEF WR0 * * ASC 2,SEL0 SELECT UNIT 0 ASC 1,II DEF SL00 * ASC 2,SEL1 SELECT UNIT 1 ASC 1,II DEF SL10 * ASC 2,SEL2 SELECT UNIT 2 ASC 1,II DEF SL20 * ASC 2,SEL3 SELECT UNIT 3 ASC 1,II DEF SL30 * ASC 2,WCC WRITE RECORD ASC 1,II DEF WCC0 * ASC 2,WFM WRITE FILE MARK ASC 1,II DEF WFM0 * ASC 2,RRF READ RECORD ASC 1,II DEF RRF0 * ASC 2,FSR FORWARD SPACE RECORD ASC 1,II DEF FSR0 * ASC 2,FSF FORWARD SPACE FILE ASC 1,II DEF FSF0 * ASC 2,GAP WRITE GAP ASC 1,II DEF GAP0 * ASC 2,BSR BACKSPACE RECORD ASC 1,II DEF BSR0 * ASC 2,BSF BACK SPACE FILE ASC 1,II DEF BSF0 * ASC 2,REW REWIND ASC 1,II DEF REW0 * ASC 2,RWO REWIND OFF-LINE ASC 1,II DEF RWO0 * ASC 2,CLR CLEAR ASC 1,II DEF CLR0 * ASC 2,GFM GAP-FILE MARK ASC 1,II DEF GFM0 * * ASC 2,CRC READ AND OUTPUT CRCC ASC 1,KI DEF CRC0 * * ASC 2,DMA READ OR WRITE UNDER DMA ASC 1,II DEF DMA0 * ASC 2,INTR READ OR WRITE UNDER INTERRUPT ASC 1,II DEF INTR0 * * ASC 2,FLAG READ OR WRITE UNDER FLAG ASC 1,II DEF FLAG0 * * READ AND OUTPUT DMA WORD COUNT * ASC 2,DMAW ASC 1,II DEF DMAW0 * * ASC 2,CRCI COMPUTE CRCC FROM INPUT BUFFER ASC 1,KK DEF CRCI0 * ASC 2,CRCO COMPUTE CRCC FROM OUTPUT BUFFER ASC 1,KK DEF CRCO0 * ASC 2,COMP COMPARE INPUT AND OUTPUT BUFFERS ASC 1,KK DEF COMP0 * ASC 2,CNT COUNTER- USE ONLY ONE TIME ASC 1,II DEF CNT0 * ASC 2,WORD FILL OUTPUT BUFFER WITH A SPECIAL ASC 1,KI WORD DEF WORD0 * ASC 2,LRCI COMPUTE LRCC FOR INPUT BUFFER ASC 1,II DEF LRCI0 * ASC 2,LRCO COMPUTE LRCC FOR OUTPUT BUFFER ASC 1,II DEF LRCO0 * * ASC 2,TRAP FILL INTERRUPT TRAP CELL WITH JMP ASC 1,KI DEF TRAP0 * ASC 2,STC SET CONTROL ASC 1,KK DEF STC0 * ASC 2,CLC CLEAR CONTROL ASC 1,KK DEF CLC0 * ASC 2,STF SET FLAG ASC 1,KK DEF STF0 * ASC 2,CLF CLEAR FLAG ASC 1,KK DEF CLF0 * * DEC -1 END OF LIST * * * * SR0 NOP * * STATUS REPORT * JSB STATS GET STATUS STA AREG SAVE STATUS CLA,CLE BEGIN OUTPUT LDB SR01 LOAD POINTER TO MESSAGE JSB FMTR2,I OUTPUT IT CCA LDB UNIT LOAD TAPE UNIT # JSB FMTR2,I OUTPUT IT CCA LDB AREG LOAD STATUS JSB FMTR2,I OUTPUT IT JMP SR0,I EXIT * SR01 DEF *+1 ASC 09,UNIT # STATUS #/ * * * * STATUS COMPARE * SC0 NOP STA AREG SAVE A AND B REGISTER STB BREG SZA,RSS IS A REG ZERO? JMP SC02 YES-REPORT ERROR AND EXIT JSB STATS GET STATUS CPA BREG COMPARE STATUS JMP SC0,I THEY ARE =, EXIT * SETUP JMP TO NEXT STATEMENT ROUTINE ********* LDA AREG GET NEW LINE NUMBER ISZ SC0 ADJUST RETURN TO NEW LINE # JMP SC0,I EXIT SC02 EQU * JMP .OPLN,I GO REPORT NO LINE # * * * * SKIP FLAG CLEAR SFC0 NOP STA AREG SAVE A AND B REGISTER STB BREG SZA,RSS IS A ZERO? JMP SFC01 GO REPORT LINE # MISSING CPB SFC03 IS IT "D"? JMP SFC04 YES- GO CHECK DATA CHANNEL CPB SFC05 NO-CHECK FOR "C" JMP SFC06 YES-GO CHECK COMMAND CHANNEL JMP SFC06 NO-NEITHER C OR D - GO CHECK C SFC04 EQU * * DATA CHANNEL CHECK CLA O-FOR DATA CHANNEL JSB FLGCK IS FLAG SET? SFC08 EQU * YES-EXIT JMP SFC0,I EXIT SFC07 EQU * LDA AREG GET LINE # ISZ SFC0 ADJUST RETURN FOR LINE CHANGE JMP SFC0,I EXIT * COMMAND CHANNEL CHECK * SFC06 EQU * CCA ALL 1'S FOR COMAND CHANNEL JSB FLGCK IS FLAG SET? JMP SFC08 YES-EXIT JMP SFC07 NO SFC01 EQU * REPORT LINE # MISSING JMP .OPLN,I GO REPORT NO LINE # SFC03 ASC 1,D ASCII D SFC05 ASC 1,C ASCI C * * * COMMAND OR DATA CHANNEL CHECK * *CALL: * CLA OR CCA CLA=DATA CHANNEL * CCA=COMMAND CHANNEL * JSB FLGCK * FLAG SET RETURN * FLAG NOT SET RETURN * : * . * . FLGCK NOP SZA,RSS IS A REG ZERO? JMP FGCK0 YES-GO CHECK DATA CHANNEL FGCK1 SFS CMMD NO- GO CHECK COMMAND CHANNEL JMP FGCK2 FLAG NOT SET JMP FLGCK,I FLAG SET-EXIT FGCK0 EQU * FGCK3 EQU * SFS DATA IS DATA FLAG SET? JMP FGCK2 NO JMP FLGCK,I YES-EXIT FGCK2 EQU * FLAG NOT SET ISZ FLGCK INCREMENT RETURN JMP FLGCK,I EXIT * * * STANDARD DATA PATTERN * * A REG. CONTAINS THE RECORD LENGTH * B REG. CONTAINS SPECIAL DATA PATTERN (OPTIONAL) * SD0 NOP STA AREG SAVE A AND B REGISTER STB BREG SZB,RSS IS THERE A BUFFER LENGTH? LDB BFMAX NO-GET MAXIMUM BUFFER LENGTH STB SD020 SAVE IT LDA AREG RESTORE A CPA SD0RA IS IT RANDOM DATA? JMP SD001 YES-DO IT CPA SD0SR IS IT ROTATING 1? JMP SD002 YES- CPA SD0TR IS IT TRACK SAWTOOTH? JMP SD003 YES- CPA SD0CH IS IT CHANNEL SAWTOOTH? JMP SD004 YES CPA SD012 IS IT ALL 125125? JMP SD005 YES CPA SD015 IS IT ALL 1'S? JMP SD006 YES CPA SD00S IS IT ALL 0'S? JMP SD007 YES- STA SD017 NO-ASSUME SPECIAL PATTERN LDA .1 LDB SD018 POINTER TO PATTERN JMP SD016 SD018 DEF *+1 SD017 NOP PATTERN * JMP SD0,I EXIT SD0RA ASC 1,RA SD0SR ASC 1,SR SD0TR ASC 1,TR SD0CH ASC 1,CH SD012 ASC 1,FR 125125 PATTERN SD015 ASC 1,ON ALL ONES PATTERN SD00S ASC 1,ZE ALL ZEROS PATTERN * SD001 EQU * STB TMP1 SAVE THE BUFFER LENGTH SD008 EQU * SSB IS BUFFER LENGTH POSITIVE JMP SD022 NO-REPORT BUFFER LENGTH ERROR LDA BFMAX GET MAXIMUM BUFFER SIZE INA ADD ONE TO IT CMA,INA MAKE IT NEGATIVE ADB A COMPUTE AVAILABLE CORE SSB IS BUFFER TOO LARGE? JMP SD009 NO GOTO BUFFER SETUP SD022 EQU * CLB YES-SETUP ERROR MESSAGE JSB ERMS,I REPORT ERROR DEF E061 POINTER TO BUFFER FULL MSG JMP .IRQ,I EXIT SD009 EQU * LDB TMP1 GET BUFFER LENGTH STB BUFLG SAVE THE BUFFER LENGTH JSB RADBF FILL BUFFER WITH RANDOM DATA JMP SD0,I EXIT SD002 EQU * LDA .09D NINE PATTERNS IN SEQUENCE LDB TSRB ROTATING BIT PATTERN JMP SD016 SD003 EQU * LDA .5 FIVE PATTERNS IN SEQUENCE LDB TSAW TRACK SAWTOOTH PATTERN JMP SD016 SD004 EQU * LDA .5 FIVE PATTERNS IN SEQUENCE LDB CSAW CHANNEL SAWTOOTH PATTERN JMP SD016 SD005 EQU * LDA .1 LDB HLFRQ 125125 PATTERN JMP SD016 SD006 EQU * LDA .1 LDB ALL1 ALL 1'S PATTERN JMP SD016 SD007 EQU * LDA .1 LDB .00 ALL O'S PATTERN JMP SD016 SD016 EQU * JSB FILL,I FILL THE OUTPUT BUFFER DEF SD019 RETURN SD020 NOP BUFFER LENGTH DEF IRQ ERROR RETURN SD019 EQU * JMP SD0,I EXIT * .00 DEF *+1 NOP * * * TAPE COMMAND * * * SELECT UNIT 0 * SL00 NOP CLA STA UNICT SETUP UNIT COUNTER JSB UNISL SELECT TAPE UNIT NOP JMP SL00,I EXIT * * SELECT UNIT 1 SL10 NOP LDA .1 STA UNICT SETUP UNIT COUNTER JSB UNISL SELECT TAPE UNIT NOP JMP SL10,I EXIT * * SELECT UNIT 2 SL20 NOP LDA .2 STA UNICT SETUP UNIT COUNTER JSB UNISL SELECT TAPE UNIT NOP JMP SL20,I EXIT * * SELECT UNIT 3 SL30 NOP LDA .3 STA UNICT SETUP UNIT COUNTER JSB UNISL SELECT TAPE UNIT NOP JMP SL30,I EXIT * WCC0 NOP LDB WCC JSB OCMMD OUTPUT COMMAND JMP WCC0,I EXIT * WFM0 NOP LDB WFM JSB OCMMD OUTPUT COMMAND JMP WFM0,I EXIT * RRF0 NOP LDB RRF JSB OCMMD OUTPUT COMMAND JMP RRF0,I EXIT * FSR0 NOP LDB FSR JSB OCMMD OUTPUT COMMAND JMP FSR0,I * FSF0 NOP LDB FSF JSB OCMMD OUTPUT COMMAND JMP FSF0,I EXIT * GAP0 NOP LDB GAP JSB OCMMD OUTPUT COMMAND JMP GAP0,I EXIT * BSR0 NOP LDB BSR JSB OCMMD OUTPUT COMMAND JMP BSR0,I EXIT * BSF0 NOP LDB BSF JSB OCMMD OUTPUT COMMAND JMP BSF0,I EXIT * REW0 NOP LDB REW JSB OCMMD OUTPUT COMMAND JMP REW0,I EXIT * RWO0 NOP LDB RWO JSB OCMMD OUTPUT COMMAND JMP RWO0,I EXIT * * CLR0 NOP LDB CLR JSB OCMMD OUTPUT COMMAND JMP CLR0,I EXIT * GFM0 NOP LDB GFM JSB OCMMD OUTPUT COMMAND JMP GFM0,I EXIT * * * * READ CRCC * CRC0 NOP CRC1 EQU * LIA DATA,C LOAD CRCC FROM LAST RECORD STA CRC2 SAVE IT CLA,CLE LDB CRC3 OUTPUT CRCC WORD MESSAGE JSB FMTR2,I CCA LDB CRC2 OUTPUT WORD JSB FMTR2,I JMP CRC0,I EXIT * CRC3 DEF *+1 ASC 07,CRCC = # TAPE/ CRC2 NOP CRCC WORD * * * SET DMA FLAG * DMA0 NOP CPA .2 IS IT CHANNEL 2? JMP DMA1 YES-OK CPA .3 NO-IS IT CHANNEL 3? JMP DMA1 YES-OK LDA .2 NO-DEFAULT TO CHANNEL 2 STA AREG SAVE IT DMA1 EQU * STA FGDMA SET DMA FLAG WITH CHANNEL # JMP DMA0,I * * SET INTERRUPT FLAG * INTR0 NOP JSB INTON,I TURN ON INTERRUPTS JMP INTR0,I * * * READ AND WRITE UNDER FLAG * (CLEAR ALL READ AND WRITE FLAGS) * * FLAG0 NOP JSB INTOF,I TURN OFF INTERRUPTS CLA STA FGDMA CLEAR FLAGS STA FGINT JSB CLRCH CLEAR CMND AND DATA CHANNELS JMP FLAG0,I EXIT * * * READ AND OUTPUT DMA WORD COUNT * DMAW0 NOP STA AREG SAVE A REGISTER CPA .2 IS IT CHANNEL 2? JMP DMAW4 YES-OK CPA .3 NO-IS IT CHANNEL 3? JMP DMAW4 YES-OK LDA .2 NO-DEFAULT TO CHANNEL 2 STA AREG SAVE IT DMAW4 EQU * LDA DMAW1 SETUP DMA CHANNEL ADA AREG STA *+1 NOP EXECUTE LIA FROM DMA CHANNEL STA DMAW2 SAVE DMA WORD COUNT CLA,CLE LDB DMAW3 OUTPUT DMA WORD COUNT MESSAGE JSB FMTR2,I CCA LDB DMAW2 OUTPUT DMA WORD JSB FMTR2,I JMP DMAW0,I EXIT DMAW1 OCT 103500 LIA CH,C-COMMAND DMAW2 NOP DMA WORD COUNT DMAW3 DEF *+1 ASC 09,DMA WORD COUNT #/ * * * READ RECORD RD0 NOP * * CHECK FOR SWITCH 7-CRCC SUPPRESS * LIA SW LOAD THE SWITCH REGISTER AND SW07 ISOLATE SWITCH 7 SZA IS SWITCH 7 SET? CCA YES-SET CRCC SKIP FLAG STA CRCFG SET CRCC FLAG * CLA STA WRERR CLEAR WRITE ERROR FLAG JSB SIOR,I READ A RECORD JSB ERRCK CHECK FOR ERROR FLAG JMP RD0,I EXIT * * WRITE RECORD * WR0 NOP JSB .CKOT,I CHECK FOR OUTPUT BUFFER * * CHECK FOR SWITCH 7-CRCC SUPPRESS * LIA SW LOAD THE SWITCH REGISTER AND SW07 ISOLATE SWITCH 7 SZA IS SWITCH 7 SET? CCA YES-SET CRCC SKIP FLAG STA CRCFG SET CRCC FLAG * CLA STA RDERR CLEAR READ ERROR FLAG JSB SIOW,I WRITE A RECORD JSB ERRCK CHECK FOR ERROR FLAG JMP WR0,I EXIT * * * COMPUTE CRCC FROM OUTPUT BUFFER * CRCO0 NOP JSB .CKOT,I CHECK FOR OUTPUT BUFFER LDA FWAM LOAD BUFFER ADDRESS