.TITLE PDTEST ; ; PDTEST.MAC ; ; Test for 2 coupled DR-11C/DR-11K/DRV-11/WB(V)-11 (parallel) interfaces. ; Interface at test site is controlled by this program, while ; at the other site PDECHO must be running! ; ; h.h. OCT-81/FEB-85 (DR-11K) ; DR11 = 1 ;0=WB(V)-11, 1=DR-11C / DRV-11, 2=DR-11K interface LIGHT = 0 ;=1, then testword on 170410 FAST = 1 ;=1, higher rate, by omitting .INTEN on interr. ; .if EQ,DR11 ; WB(V)-11 RCSR = 175610 XCSR = RCSR+4 RBUF = RCSR+2 XBUF = RCSR+6 RVEC = 270 XVEC = 274 ; PRIO = 4 INTBR= 100 ;Interrupt enable bit in CSR of input INTBX= 100 ; " " " " output .endc .if EQ,DR11-1 ;C RCSR = 167770 XCSR = RCSR RBUF = RCSR+4 XBUF = RCSR+2 RVEC = 314 ;Note: differs from WB/DL-11 ! XVEC = 310 ; PRIO = 5 INTBR= 40 ;Interrupt enable bit in CSR of input INTBX= 100 ; " " " " output .endc .if EQ,DR11-2 ;K RCSR = 167750 XCSR = RCSR RBUF = RCSR+2 XBUF = RCSR+4 RVEC = 320 XVEC = 324 ; PRIO = 4 INTBR= 100 ;Interrupt enable bit in CSR of input INTBX= 40000 ; " " " " output .endc .MCALL .SPND,.RSUM,.SYNCH,.EXIT,.PROTECT,.UNPROTECT .MCALL .INTEN,.PRINT,.GTJB,.DEVICE,.QSET,.SERR ; .ENABL LC ; START: CLR @#RCSR CLR @#XCSR .PRINT #STRTXT .DEVICE #AREA,#DLIST MOV #JOB,R5 .GTJB #AREA,R5 MOV (R5),SYNBLK+2 ; MOV #RVEC,R1 .PROTECT #AREA,R1 BCS ERRC MOV #RINT,(R1)+ MOV #340,(R1) ; MOV #XVEC,R1 .PROTECT #AREA,R1 BCS ERRX MOV #XINT,(R1)+ MOV #340,(R1) BR NORMAL ; ERRC: .PRINT #CERR .EXIT ERRX: .PRINT #XERR .EXIT CERR: .ASCIZ /?PDTEST-F-Receiver vector in use!/ XERR: .ASCIZ /?PDTEST-F-Transmitter vector in use!/ .EVEN ; NORMAL: MOV @#RBUF,R0 ;CLEANUP INPUT CLR CERROR ;INIT COMM. ERROR COUNT CLR IERR ; AGAIN: CLR TSTWRD ;1ST TEST CODE .if EQ,DR11-2 MOV #INTBX,@#XCSR ;SET INTERRUPT ENABLE X .iff BIS #INTBX,@#XCSR ;SET INTERRUPT ENABLE X .endc .SPND ;Wait for PASS / ERRORS MOV NRPASS,R0 MOV #TEXT0,R1 CALL CNV10 MOV CERROR,R0 MOV #TEXT1,R1 CALL CNV10 CLR R0 MOV TSTWRD,R0 MOV #TEXT2,R1 CALL CNVBIN MOV IERR,R0 MOV #TEXT3,R1 CALL CNVBIN .PRINT #TEXT CLRTXT: MOV #7,R0 MOV #TEXT0,R1 1$: MOVB #' ,(R1)+ SOB R0,1$ MOV #7,R0 MOV #TEXT1,R1 2$: MOVB #' ,(R1)+ SOB R0,2$ BR AGAIN ; CERROR: .WORD 0 ;COMMUNIC. ERROR COUNT. IERR: .WORD 0 ;ERROR CODE ; ; CNV10: MOV R0,-(SP) ;Converts binairy value CLR R0 ;in R0 to ASCII in buffer 1$: INC R0 ;pointed to R1 SUB #10.,@SP BGE 1$ ADD #72,@SP DEC R0 BEQ 2$ CALL CNV10 2$: MOVB (SP)+,(R1)+ RETURN CNVBIN: MOV #16.,R2 ADD #16.,R1 MOV R0,-(SP) LOOP: MOV (SP),R0 BIC #177776,R0 ADD #'0,R0 MOVB R0,-(R1) ASR (SP) SOB R2,LOOP TST (SP)+ RETURN ; ; Interrupt service: ; ------------------ ; ; RINT: .iif EQ,FAST .INTEN PRIO MOV @#RBUF,RSAVE ;GET WORD CMP RSAVE,TSTWRD BNE STOP INC TSTWRD ;KEEP SENDING BNE 1$ INC NRPASS ;STOP TO PRINT PASS# BR RESUM .if EQ,DR11-2 1$: MOV #INTBX,@#XCSR .iff 1$: BIS #INTBX,@#XCSR .endc .if EQ,FAST RETURN .iff RTI .endc STOP: MOV RSAVE,IERR INC CERROR ;COUNT ERRORS RESUM: .iif NE,FAST .INTEN PRIO .SYNCH #SYNBLK BR SFAIL .RSUM RETURN ; SFAIL: .PRINT #SYNERR .EXIT SYNERR: .ASCIZ />>Synch fail in PDTEST<<12>/--------------------------------------/ TEXT: .ASCII /PDTEST-Pass nr. : / TEXT0: .ASCII / ./ .ASCII / Cumul. error count: / TEXT1: .ASCII / ./<015><012> .ASCII /Word XT: / TEXT2: .ASCII / /<015><012> .ASCII /Word RC: / TEXT3: .ASCIZ / / .EVEN .END START ;