.TITLE TALK AND LISTEN ADDRESS MANAGEMENT ; ;IB3.MAC ; ; COPYRIGHT (C) 1976 ; ; DIGITAL EQUIPMENT CORPORATION ; MAYNARD, MASSACHUSETTS 01754 ; ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ; ON A SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH ; THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE, ; OR ANY OTHER COPIES THEREOF, MAY NOT BE PROVIDED OR OTHERWISE MADE ; AVAILABLE TO ANY OTHER PERSON EXCEPT FOR USE ON SUCH SYSTEM AND TO ; ONE WHO AGREES TO THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE ; SOFTWARE SHALL AT ALL TIMES REMAIN IN DIGITAL. ; ; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO ; CHANGE WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED ; AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. ; ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE ; OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT ; WHICH IS NOT SUPPLIED BY DIGITAL. ; ;AUTHOR: SRA ; JULY 1976 ; ;************************************************************ ; ASSEMBLE WITH IBP.MAC $$CSECT=300 ;************************************************************ ; .SBTTL SET TALK ROUTINE ; .GLOBL .STA .GLOBL IB.STA,.CMD,IB.CHR,.IBCLR,IB.TLK,.IBPUT .GLOBL IB.BYT,IB.SR,IB.TMP,.TST ; NXTSEC .STA: IBARG. 2,3 ;2 OR 3 ARGS MOV R0,R2 ;#0 IF 3 ARGS PUSH #ACC!LON ;SET UP IB.SR MOV @(R5)+,R0 ;GET MTA BPL 2$ ;NOT ME ;HERE IF MY TALK ADDRESS MOVB #137,R0 ;UNT CALL .CMD ;JUST IN CASE BISB #TON,@SP ;FOR ME TO TALK CLR IB.CHR ;DEFAULT DASE MOV @(R5)+,R3 ;GET BYTE COUNT TST R2 ;3RD ARG? BEQ 3$ ;NO ;YES-GET NEW STRING MOV #IB.TLK,R4 ;TO ZERO TALK BUFFER CALL .IBCLR ;DO IT MOV R3,R2 ;COPY LENGTH MOV @R5,R1 ;GET ADDRESS 5$: MOV #IB.TLK,R4 MOVB (R1)+,R0 ;GET BYTE CALL .IBPUT ;SET IT IN BR 4$ ;THERE WAS ROOM IBERR. HARD,TLK.F ;NO ROOM AT THE IN 4$: DEC R2 ;DROP COUNT BNE 5$ ;LOOP FOR MORE 3$: MOV #IB.BYT,R5 ;ADDRESS DATA AREA MOV R3,(R5)+ ;FOR LISTENER MOV R3,@R5 ;FOR TALKER ; DEC @R5 ;IB.BM1 CALL .TST ;WAIT FOR DONE BISB (SP)+,@IB.SR ;ACC!LON[!TON] CLR IB.TMP ; CLR IB.STA BICB #TCS,@IB.SR ;DROP TCS RETURN ;HERE IF NOT MY TALK ADDRESS 2$: BICB #-40,R0 ;KEEP 0-37 BISB #100,R0 ;100-137 7$: CALL .CMD ;SEND TA SWAB R0 ;SEE IF SEC ADDRESS? BEQ 6$ ;NO DEC R0 ;YES- NORMALIZE BIC #-40,R0 ;KEEP 0-37 BISB #140,R0 ;140-177 BR 7$ ;LOOP 6$: MOV @(R5)+,R3 ;GET BYTE COUNT BGT 8$ ;REASONABLE IBERR. HARD,RNG.F ;NOT " 8$: MOV R2,IB.CHR ;CHARACTER? BEQ 3$ ;NO: FINISH UP MOV @(R5)+,IB.CHR ;YES: GET IT BR 3$ ;THEN FINISH UP ; .PAGE .SBTTL SEND LISTEN ADDRESSES ; .GLOBL .SLA .GLOBL IB.MLA ; NXTSEC .SLA: IBOK.. ;IBINIT CALLED? IBARG. 1,2 ;1 OR 2 ARGS TST R0 ;HOW MANY? BNE 1$ ;2 MOV @(R5)+,R0 ;GET ADDRESS BR SENDWD ;SEND IT ;MULTIPLE ADDRESSES 1$: MOV @(R5)+,R1 ;# OF WORDS MOV @R5,R2 ;ADR OF STRING 2$: MOV (R2)+,R0 ;GET ONE CALL SENDWD ;SEND IT DEC R1 BNE 2$ ;NOT YET DONE RETURN ; ;ROUTINE TO SEND LISTEN ADDRESS AND ANY SECONDARY ADDRESS ; SENDWD: TSTB R0 ;ME? BPL 1$ ;NO 3$: BIT #^C,IB.STA ;OTHER THAN SRQ? BEQ 3$ ;NO:WAIT MOV SP,IB.MLA ;SET ME TO KEEP BYTES 2$: RETURN 1$: BICB #-40,R0 ;KEEP 0-37 BISB #40,R0 ;40-77 CALL .CMD ;SEND LA SWAB R0 ;GET HIGH BYTE BEQ 2$ ;NONE DEC R0 ;NORMALIZE BIC #-40,R0 ;KEEP 0-37 BISB #140,R0 ;140-177 JMP .CMD ;SEND IT ; .END