IDENT SDV,0 PERIPH CPECTOCM EQU 1B CPCMTOEC EQU 2B CPTOUSER EQU 4B CPINIHNG EQU 10B * CNVERR EQU 0007B TPERR EQU 6410B TPFMK EQU 10B . FILE AMRK BIT TPARERR EQU 2000B . PARITY ERROR BIT TPENDOP EQU 1000B ( CHECK THIS ) TPBUSY EQU 0002B RJCTBT EQU 0001B * TPERRBTS EQU 0005B DESIRED STATES BITS FOR TAPE EWAIT RDYBSY EQU 0003B READY AND BUSY FIELDS WRTENB EQU 0004B WRITE ENABLE FIELD NTRSVD EQU 4000B RESERVED FIELD RDY EQU 1 . READY BIT * * I.POINTS EQU 22B SDVCPNTS EQU 2 * * TPCHN EQU 12B * * * INTCHAN EQU 9 SDVINTX EQU 2 * * * RCDSZ EQU 1001B EJECT * * * ORG 0 VFD 12/START-1 * ORG 10B * * RQST BSSZ 4 ACT BSSZ 1 * RSPNSE EQU * EFLAG BSSZ 1 BSSZ 1 DVCSTAT BSSZ 1 CNVSTAT BSSZ 1 BSSZ 1 * CPRQST EQU * BSSZ 1 CPDVCNMB BSSZ 1 CPBUFPOS BSSZ 1 CPCNT BSSZ 1 CPACT BSSZ 1 * CHK BSSZ 5 * ZRO DATA 0,0,0,0,0 * X0 BSSZ 1 X1 BSSZ 1 * TPCNT VFD 12/RCDSZ+1 EJECT * * ORG 100B * RLOOPA LDN CPINIHNG STD CPACT LDN 0 STD CPDVCNMB RJM SNDRQST * RLOOPT EQU * DATA 2500B TURN OFF TRACE REQ1 LDC 0 CRD RQST LDD ACT ZJN RLOOPT REQ2 LDC 0 CWD ZRO * CONNECT FNC 5000B,TPCHN TRY TO CONNECT FNC 1200B,TPCHN ACN TPCHN IAN TPCHN DCN TPCHN STD CNVSTAT LPN RJCTBT ZJN *+3 LJM CONRJT . CONNECT REJECTED * LDD ACT ADC -100B MJN *+3 LJM SPECIAL LJM SIMPLE EJECT * * CONRJT RJM GETST . GET DEVICE STATUS LPC 777B . KILL RESERVED, PARITY, AND ENDOP BITS NJN *+3 . JUMP IF A UNIT EXISTS * CONERR LJM STATUSX . A REAL CONVERTER ERROR, JUMP * STD X1 . SAVE BITS LPN RDYBSY-RDY . CHECK READY BIT ZJN CONERR . ERROR IF NOT BUSY LJM CONNECT . ELSE TRY TO CONNECT AGAIN EJECT * * SIMPLE LDM CHKACT,ACT NJN *+3 LJM REJECT SIMPLEL FNC 1300B,TPCHN ACN TPCHN IAN TPCHN DCN TPCHN LPN TPBUSY NJN SIMPLEL LOOP ON BUSY * LDD ACT FAN TPCHN LJM STATUSA * * * CHKACT DATA 0,1,1,1,1,1,1,0 DATA 1,1,1,1,1,1,1,0 DATA 0,0,0,0,0,0,0,0 DATA 0,0,0,0,0,0,0,0 DATA 1,1,0,0,0,0,0,0 DATA 0,0,0,0,0,0,0,0 DATA 0,0,0,0,0,0,0,0 DATA 0,0,0,0,0,0,0,0 EJECT * * REJECT LDN 0 STD CNVSTAT STD DVCSTAT LDC 4000B STD EFLAG LDN CPTOUSER STD CPACT LJM FINIE EJECT * * * WAIT 16 SECONDS OR SO OR UNTILL ERROR CONDITIONS GO AWAY * * ACT = 200B + X * X = 1 + 2 + 4 * 1 WAIT FOR READY AND NOT BUSY * 2 WAIT FOR WRITE ENABLE * 3 WAIT FOR NOT RESEARVED * * ALSO CONVERTER ERRORS MUST GO AWAY * EWAIT LDD ACT ADC -200B LPC 7 STD X1 LDM EWAITMSK,X1 PICK UP TEST MASK STM EWAIT1+1 MCLOCK1 LDC 0 ( MODIFIED ) CRD RQST LDD RQST+2 STEPS ABOUT EVERY 16 SECONDS ADN 2 STD X0 SAVE FINAL CLOCK VALUE ADC -10000B MJN *+3 STD X0 CORRECTED FOR WRAP AROUND * EWAITLP FNC 1200B,TPCHN ACN TPCHN IAN TPCHN DCN TPCHN STD CNVSTAT FNC 1300B,TPCHN ACN TPCHN IAN TPCHN DCN TPCHN STD DVCSTAT * LDD CNVSTAT LPC CNVERR CHECK FOR CONVERTER ERROR NJN EWAITLP1 * LDD DVCSTAT LMC TPERRBTS CHECK DEVICE STATUS BITS EWAIT1 LPC 0 ( MODIFIED BY ACT ) NJN EWAITLP1 * LDN 0 UJN EWAITF * EWAITLP1 LDC 0 ( MODIFIIED ) CRD RQST LDD RQST+2 CHECK TIME SBD X0 ZJN *+3 LJM EWAITLP RETRY * LDC 4000B ERROR EXIT, TIME RAN OUT EWAITF STD EFLAG LDN CPTOUSER STD CPACT LJM FINIE * EWAITMSK VFD 12/0 VFD 12/RDYBSY VFD 12/WRTENB VFD 12/RDYBSY+WRTENB VFD 12/NTRSVD VFD 12/RDYBSY+NTRSVD VFD 12/WRTENB+NTRSVD VFD 12/RDYBSY+WRTENB+NTRSVD EJECT * * STATUS FNC 1200B,TPCHN ACN TPCHN IAN TPCHN DCN TPCHN STD CNVSTAT * STATUSX EQU * FNC 1300B,TPCHN ACN TPCHN IAN TPCHN DCN TPCHN STD DVCSTAT LDN CPTOUSER STD CPACT LJM FINI * * * * STATUSA FNC 1200B,TPCHN . CONVERTER STATUS ACN TPCHN IAN TPCHN DCN TPCHN STD CNVSTAT * RJM GETST . GET DEVICE STATUS LDN CPTOUSER STD CPACT . ORDER RESPONSE * LDC 4000B STD EFLAG LDD CNVSTAT LPC CNVERR ZJN *+3 LJM FINIE . DONE IF ERROR LDD DVCSTAT LPC TPERR-TPARERR-TPFMK . IGNORE PARITY AND FILEMARK BITS ZJN *+3 LJM FINIE LDN 0 STD EFLAG . SO NO ERRORS LJM FINIE EJECT * * SPECIAL SBN 3B MJN *+3 LJM SPECIAL2 ADN 3B SHN 1B STD ACT LJM SPECIAL1,ACT * SPECIAL1 LJM STATUS LJM READ LJM WRITE * SPECIAL2 LDD ACT ADC -200B PJN *+3 LJM REJECT LJM EWAIT EJECT * * READ RJM GETST LMC TPERRBTS LPC RDYBSY+NTRSVD ZJN READGO LMN RDYBSY-RDY ZJN READ . LOOP ON ONLY BUSY LJM FINIX READGO FNC 1401B,TPCHN ACN TPCHN RWAIT LDN 2 STD X1 RWAIT1 FJM READA,TPCHN LDN 0 RWAIT2 FJM READA,TPCHN SBN 1 FJM READA,TPCHN NJN RWAIT2 FJM READA,TPCHN LDD X1 FJM READA,TPCHN SBN 1 FJM READA,TPCHN NJN *+3 LJM BLANKTPE FJM READA,TPCHN STD X1 FJM READA,TPCHN UJN RWAIT1 * READA LDC 5*RCDSZ IAM PPUBUF+5,TPCHN IJM READ1,TPCHN DCN TPCHN READ1 LMC 777777B ADC 5*RCDSZ STM PPUBUF+4 LDN 0 STM PPUBUF STM PPUBUF+1 STM PPUBUF+2 STM PPUBUF+3 * READ2 EQU * BUF3 LDC 0 SBN 1 CRD CHK LDD CHK+4 NJN READ2 BUF4 LDC 0 CWM PPUBUF,TPCNT LDN CPTOUSER+CPCMTOEC STD CPACT LDD TPCNT STD CPCNT LDN 0 STD CPBUFPOS LDN 0 STD CPDVCNMB LJM OPCHK EJECT * * WRITE LDN CPECTOCM STD CPACT LDD TPCNT STD CPCNT LDN 0 STD CPBUFPOS LDN 0 STD CPDVCNMB RJM SNDRQST * WRITE1 EQU * BUF5 LDC 0 SBN 1 CRD CHK LDD CHK+4 NJN WRITE1 BUF6 LDC 0 CRM PPUBUF,TPCNT WRIT2 RJM GETST LMC TPERRBTS LPC RDYBSY+WRTENB+NTRSVD ZJN WRITGO LMN RDYBSY-RDY . TOGGLE BUSY BIT ZJN WRIT2 . LOOP IF IT IS ONLY CAUSE FOR ERROR LJM FINIX WRITGO FNC 1601B,TPCHN ACN TPCHN LDM PPUBUF+4 OAM PPUBUF+5,TPCHN FJM *,TPCHN DCN TPCHN LDN CPTOUSER STD CPACT WRITECK RJM GETST LPC TPBUSY NJN WRITECK . WAIT ON NOT BUSY FOR READ/WRITE LJM OPCHK * * * LJM 0 GETST EQU *-1 FNC 1300B,TPCHN ACN TPCHN IAN TPCHN DCN TPCHN STD DVCSTAT UJN GETST-1 EJECT * * OPCHK FNC 1200B,TPCHN ACN TPCHN IAN TPCHN DCN TPCHN STD CNVSTAT OPCHK1 FNC 1300B,TPCHN ACN TPCHN IAN TPCHN DCN TPCHN STD DVCSTAT LPC TPENDOP ZJN OPCHK1 LJM FINI EJECT * * FINI LDC 4000B STD EFLAG LDD CNVSTAT LPC CNVERR NJN FINIE * * * * * * LDD DVCSTAT LPC TPERR NJN FINIE LDN 0 STD EFLAG * FINIE EQU * RSP1 LDC 0 CWD RSPNSE * FINIL RJM SNDRQST LJM RLOOPT * * FINIX LDC 4000B STD EFLAG LDN CPTOUSER STD CPACT . SEND RESPONSE TO USER UJN FINIE * * * BLANKTPE LDD DVCSTAT LPC RDY+WRTENB STD DVCSTAT LDN 0 STD CNVSTAT IJM BLANKTP1,TPCHN DCN TPCHN BLANKTP1 FNC 1700B,TPCHN . MASTER CLEAR TO STOP TAPE UJN FINIX EJECT * * * LJM 0 SNDRQST EQU *-1 BUF1 LDC 0 SBN 1 CRD CHK LDD CHK+4 NJN SNDRQST+1 BUF2 LDC 0 SBN 1 CWD CPRQST LDN SDVINTX OAN INTCHAN UJN SNDRQST-1 EJECT * * START LDN 15 SBN 1 DELAY FOR ALL CHANNELS TO BE RELEASED NJN *-1 * LDC I.POINTS ADN SDVCPNTS CRD CHK GET VALUE OF I.SDVC * LDC REQADS STD X0 LDN 0 RJM SETADS * LDC RSPADS STD X0 LDN 1 RJM SETADS * LDC BUFADS STD X0 LDN 3 RJM SETADS * LDC MCLCKADS STD X0 LDN 2 RJM SETADS * LJM RLOOPA * * * LJM 0 SETADS EQU *-1 ADD CHK+4 CRD RQST LDD ACT-1 LPN 77B STD ACT-1 SETADLP LDI X0 ZJN SETADS-1 STD X1 LDI X1 LPC 7700B ADD ACT-1 STI X1 LDD ACT STM 1,X1 AOD X0 UJN SETADLP EJECT * * REQADS EQU * VFD 12/REQ1 VFD 12/REQ2 * DATA 0 * * RSPADS EQU * VFD 12/RSP1 * DATA 0 * * BUFADS EQU * VFD 12/BUF1 VFD 12/BUF2 VFD 12/BUF3 VFD 12/BUF4 VFD 12/BUF5 VFD 12/BUF6 * DATA 0 * * MCLCKADS EQU * VFD 12/MCLOCK1 VFD 12/EWAITLP1 * DATA 0 EJECT * * PPUBUF BSSZ 5*RCDSZ+5 END