.TITLE DMRECV NWORD=5. ; ; DMRECV.MAC ; ; TEST program for coupled QNECTOR interfaces. ; This interface should have a connection with another QNECTOR ; h.h. MAR-83 BAR=172410 WCR=BAR+2 CSR=BAR+4 QNVEC=170 PRIO=4 ;INTERR. PRIORITY COL=20000 STP=400 IE=100 MNT=10 CE=4 SND=2 GO=1 .MCALL .SPND,.RSUM,.SYNCH,.EXIT,.PROTECT,.UNPROTECT .MCALL .INTEN,.PRINT,.GTJB,.DEVICE,.QSET,.SERR ; .ENABL LC ; START: MOV #0,@#CSR .DEVICE #AREA,#DLIST MOV #JOB,R5 .GTJB #AREA,R5 MOV (R5),SYNBLK+2 MOV #QNVEC,R1 .PROTECT #AREA,R1 BCS ERRV MOV #QNINT,(R1)+ MOV #340,(R1) BR NORMAL ERRV: .PRINT #VERR .EXIT VERR: .ASCIZ /QN: vector in use!/ .EVEN NORMAL: .PRINT #STRTXT CALL ONEINP .SPND ;WAIT for data transmitted+received or errors ERROR: MOV @#CSR,R0 BPL EX BIT #COL,R0 BNE COLLIS .PRINT #NXMERR .EXIT COLLIS: .PRINT #COLERR .EXIT EX: .PRINT #ENDTXT ; BR NORMAL .EXIT ; Interrupt service: ; ------------------ ; ; QNINT: .INTEN PRIO MOV @#CSR,R4 CLR @#CSR TST R4 BMI RESUME ;If minus -> error CMP ONEWRD,#-1 BEQ RESUME MOV ONEWRD,@DMPPNT ADD #2,DMPPNT CMP ONEWRD,#2402 BNE ONEINP MOV #NWORD,R4 MOV #BUFFER,BUFDAT MOV #-1,ONEWRD BR BUFINP RESUME: CLR @#CSR .SYNCH #SYNBLK BR SFAIL .RSUM RETURN ONEOUT: MOV #1,R4 MOV #ONEWRD,R5 BR QNOUT BUFOUT: MOV BUFDAT,R5 QNOUT: BIS #SND,QNPATR BR QNGO ONEINP: MOV #1,R4 MOV #ONEWRD,R5 BR QNIN BUFINP: MOV BUFDAT,R5 QNIN: BIC #SND,QNPATR QNGO: MOV R5,@#BAR NEG R4 MOV R4,@#WCR MOV QNPATR,@#CSR RETURN QNPATR: .WORD CE+IE+GO ; SFAIL: .PRINT #SYNERR .EXIT SYNERR: .ASCIZ /?DMRECV-F-Synch fail/ .EVEN ; ; Storage: ; ONEWRD: .WORD 0 BUFDAT: .WORD 0 DMPPNT::.WORD DMPBUF DMPBUF: .REPT NWORD .WORD 0 .ENDR .WORD 1,2,3,4 BUFFER: .REPT NWORD .WORD 0 .ENDR .WORD 4,5,6,8. DLIST: .WORD CSR .WORD 0 .WORD 0 ;DLIST TERMINATOR SYNBLK: .WORD 0,0,0,0,5,-1,0 JOB: .BLKW 8. AREA: .BLKW 5 STRTXT: .ASCII /?DMRECV-I-QN connection test/<015><012> .ASCIZ /----------------------------/ ENDTXT: .ASCIZ /?DMRECV-I-END, pass completed/<015><012> NXMERR: .ASCIZ /?DMRECV-F-Non existing memory error/ COLERR: .ASCIZ /?DMRECV-F-Collision error/ .EVEN .END START ;