.TITLE CNV .IDENT /FEB80/ ; ; ; PROGRAM TO PERFORM DIALOGUE MODE BETWEEN TWO TERMINALS. THE ; INITIATING TERMINAL MUST ENTER THE TERMINAL NUMBER THAT HE/SHE ; WISHES TO CONVERSE WITH. ; ; ORIG PRG: DR DICKEY 2/26/80 ; ; MODIFICATIONS: ; ;----------------------------------------------------------------------- ; DSW=0 .MCALL DIR$,EXIT$,ASTX$S,QIO$,QIOW$,ALUN$,RSUM$,SPND$,GLUN$ ; ;----------------------------------------------------------------------- ; START: DIR$ #GETTI ;GET OUR TERMINAL NUMBER. MOVB TT1TI,R1 ; " SXT R0 ; " DIV #10,R0 ; " ADD #60,R0 ; " ADD #60,R1 ; " MOVB R0,TT1 ; " MOVB R1,TT1+1 ; " ; DIR$ #TOWHO ;FIND OUT WHO WE WANT TO TALK TO. MOVB TT2,R1 ; " SUB #60,R1 ; " MUL #10,R1 ; " MOVB TT2+1,R0 ; " SUB #60,R0 ; " ADD R0,R1 ; " ; MOV R1,ASSIGN+A.LUNU ;ASSIGN LOGICAL UNIT NUMBER 2. DIR$ #ASSIGN ; " TST DSW ; " BGT A10$ ; " ; DIR$ #EXIT ; A10$: MOVB TT1,MTT1 ;SET UP PROMPT MESSAGES. MOVB TT1+1,MTT1+1 ; MOVB TT1,CNVTT2 ; MOVB TT1+1,CNVTT2+1 ; MOVB TT2,MTT2 ; MOVB TT2+1,MTT2+1 ; MOVB TT2,CNVTT1 ; MOVB TT2+1,CNVTT1+1 ; ; DIR$ #CONFRM ;OUTPUT CONFIRMATION MESSAGE MOV #2,CONFRM+Q.IOLU;AT BOTH TERMINALS. DIR$ #CONFRM ; " ; DIR$ #READ ;PROMPT FOR INPUT AT BOTH TERMINALS. MOV #2,READ+Q.IOLU ; " MOV #R2AST,READ+Q.IOAE MOV #MESSG2,READ+Q.IOPL MOV #IOSB2,READ+Q.IOSB MOV #CNV2,READ+Q.IOPL+6 DIR$ #READ DIR$ #SUSPND DIR$ #IOKILL MOV #2,IOKILL+Q.IOLU DIR$ #IOKILL DIR$ #END MOV #2,END+Q.IOLU DIR$ #END DIR$ #EXIT ; ;----------------------- AST FOR LUN 1 READ ---------------------------- ; R1AST: MOV (SP)+,R0 ;ADDRESS I/O STATUS BLOCK. TSTB (R0) ;TEST IT. BGT R1A ; .. J IF OK. ; DIR$ #RESUME ;RESUME PROGRAM AND BR R1B ; R1A: ADD #12.,2(R0) ;ADD TWELVE TO LENGTH OF INPUT. MOV 2(R0),WRITE+Q.IOPL+2 MOV #2,WRITE+Q.IOLU MOV #MESS1,WRITE+Q.IOPL DIR$ #WRITE ; MOV #1,READ+Q.IOLU MOV #R1AST,READ+Q.IOAE MOV #IOSB1,READ+Q.IOSB MOV #MESSG1,READ+Q.IOPL MOV #CNV1,READ+Q.IOPL+6 DIR$ #READ ; R1B: ASTX$S ; ;----------------------- AST FOR LUN 2 READ ---------------------------- ; R2AST: MOV (SP)+,R0 ;ADDRESS I/O STATUS BLOCK. TSTB (R0) ;TEST IT. BGT R2A ; .. J IF OK. ; DIR$ #RESUME ;RESUME PROGRAM AND BR R2B ; R2A: ADD #12.,2(R0) ;ADD TWELVE TO LENGTH OF INPUT. MOV 2(R0),WRITE+Q.IOPL+2 MOV #1,WRITE+Q.IOLU MOV #MESS2,WRITE+Q.IOPL DIR$ #WRITE ; MOV #2,READ+Q.IOLU MOV #R2AST,READ+Q.IOAE MOV #IOSB2,READ+Q.IOSB MOV #MESSG2,READ+Q.IOPL MOV #CNV2,READ+Q.IOPL+6 DIR$ #READ ; R2B: ASTX$S ; ;----------------------------------------------------------------------- ; ASSIGN: ALUN$ 2,TT,0 GETTI: GLUN$ 1,LUNDAT TOWHO: QIOW$ IO.RPR,1,1,,IOSB1,, IOKILL: QIOW$ IO.KIL,1,1 EXIT: EXIT$ END: QIOW$ IO.WAL!TF.WBT,1,1,,,, CONFRM: QIOW$ IO.WAL!TF.WBT,1,1,,,, READ: QIO$ IO.RPR,1,,,IOSB1,R1AST, WRITE: QIOW$ IO.WAL!TF.WBT,1,1,,,, SUSPND: SPND$ RESUME: RSUM$ $$$CNV ; ;----------------------------------------------------------------------- ; LUNDAT: .WORD 0 TT1TI: .BLKB 10. IOSB1: .BLKW 2 IOSB2: .BLKW 2 MESS1: .BYTE 12,15,7 .ASCII \FROM \ MTT1: .ASCII \XX- \ MESSG1: .BLKB 67. MESS2: .BYTE 12,15,7 .ASCII \FROM \ MTT2: .ASCII \XX- \ MESSG2: .BLKB 67. ; CNFRM: .BYTE 12,15 .ASCII \TT\ TT1: .ASCII \XX AND TT\ TT2: .ASCII \XX NOW IN CONVERSATION MODE.\ .BYTE 7 CNFRML=.-CNFRM ; PR1: .BYTE 12,15 .ASCII \TERMINAL NUMBER ? > \ PR1L=.-PR1 ; CNV1: .BYTE 12,15 .ASCII \CNV \ CNVTT1: .ASCII \XX>\ CNVL=.-CNV1 CNV2: .BYTE 12,15 .ASCII \CNV \ CNVTT2: .ASCII \XX>\ ; ENDM: .BYTE 12,15 .ASCII \END CONVERSATION MODE.\ .BYTE 15 ENDML=.-ENDM .END START