; ;PROGRAM TO ACTIVATE SPEED SETTING FEATURES OF A DC OR DZ INTERFACE ;USING SET PUD QIO FOR THE LARGE TELETYPE HANDLER ; ;COMMENTS ; ;A/LARGE HANDLER AS DISTRIBUTED DOES NOT SUPPORT SET PUD ;DUE TO A SERIOUS CODING ERROR (REF JAN 75 SOFTWARE DISP ;FOR RSX) ; ;B/ MODIFIED NOV 76 TO SUPPORT DZ11 INTERFACE ; ;PROGRAM WILL ADAPT TO DC OR DZ INTERFACES AUTOMATICALLY ; ; ;NORMAL OPERATION IS OF FORM ; ;MCR>DCS 1 ;TO SET TO SPEED 1 ; ;OR ; ;MCR>DCS TT12 3 ;TO SET SPEED OF TTY OTHER THAN YOURSELF ; ;SUPPORTED SPEEDS ARE ;NUMBER SPEED ; ;0 110 ;1 150 (DZ ONLY) ;2 300 ;3 600 (DZ ONLY) ;4 1200 ;5 1800 ;6 2400 (DZ ONLY) ;7 3600 (DZ ONLY) ;10 4800 (DZ ONLY) ;11 7200 (DZ ONLY) ;12 9600 (DZ ONLY) ; ; IO.SET=30 ;NOT DEFINED IN EXEC.STB ; ; .TITLE DCS .MCALL EXIT$C,WTSE$C,RQST$C,QIO$C,DIR$,ALUN$ .PAGE START: MOV #MCRDPB,-(SP) ;SET DPB POINTER TO STACK EMT 377 ;DO EMT MOV #MCRBUF,R0 ;START OF COMMAND BUFFER ->R0 ADD #4,R0 ;BUMP TO SPEED CONTROL NUMBER CMPB (R0),#'T ;REQUEST FOR TTY OTHER THAN ME ? BNE DOTI ;NO ADD #2,R0 ;BUMP OVER 'TT' JSR PC,$COTB ;CONVERT OCTAL TTY # TO BINARY MOV .PUDBA,R4 ;START SEARCHING PUD MOV .PUDEA,R5 ;SET END SEARCH NEXPUD: CMP (R4),#"TT ;IS THIS A TT ? BNE NMATCH ;NO CMPB 2(R4),R1 ;SAME TT NUMBER ? BNE NMATCH ;NO MOV R1,A.LUNU+ASSLUN ;FILL IN UNIT # IN DPB DIR$ #ASSLUN ;REASSIGN LUN 3 MOV #1,DEVFLA ;SET DEVICE FLAG BR DOTI NMATCH: ADD #U.SZ,R4 ;BUMP R4 TO NEXT PUD CMP R4,R5 ;THROUGH PUD BLT NEXPUD ;NO JMP BADDEV ;YES REPORT BAD DEVICE ;HERE IF FOUND PUD POINTER OR TO TI DOTI: JSR PC,$COTB ;CONVERT TO BINARY NUMBER (IN R1) TST R1 ;CHECK DIGIT BMI ERROR ;NEG NO GOOD CMP R1,#12 ;IS IT TOO BIG ? BGT ERROR ;ALSO AN ERROR MOV .CRTSK,R5 ;GET MY ATL POINTER MOV A.TI(R5),R5 ;NOW GET TI POINTER TST DEVFLA ;NOT CHANGING MY TI ? BEQ 2$ ;NO MOV R4,R5 ;YES RESET R5 TO TARGET PUD 2$: BIT #20,U.C3(R5) ;A DZ INTERFACE ? BNE DODZ ;YES MOVB DCTAB(R1),R1 ;GET NEW SPEED FROM DC TABLE BMI ERROR ;NEG MEANS INVALID SPEED FOR DC INTERFACE ASH #6,R1 ;OK SO SHIFT TO REC SPEED CTL BITS BIC #177477,R1 ;BLANK EXTRA BITS MOV R1,WORD3 ;SET UP CHAR. WORD 3 MOV #006300,WORD4 ;AND LEGALITY MASK ASH #4,R1 ;NOW SHIFT TO XMIT SPEED BIC #171777,R1 ;JUST TO BE SURE BIS R1,WORD3 ;ALSO SET XMIT SPEED BITS BR DOQIO ;AND DO QIO DODZ: MOVB DZTAB(R1),R1 ;GET SPEED FROM DZ TABLE ASH #6,R1 ;SHIFT TO PROPER POSITION FOR DZ BIC #176077,R1 ;JUST TO BE SURE MOV R1,WORD3 ;AND FILL IN DPB MOV #001700,WORD4 ;SET LEGALITY MASK DOQIO: MOV #QIODPB,-(SP) ;PUSH DPB START ONTO STACK EMT 377 ;GO DO IT WTSE$C 2 ;WAIT FOR DONE TSTB IOST ;DID QIO GO ? BMI ERROR ;NO WE BLEW IT BR DONE ;OK, JUST EXIT ERROR: QIO$C IO.WLB,5,1,,IOST,, WTSE$C 1 ;WAIT FOR MESSAGE DONE: EXIT$C ;AND EXIT ; BADDEV: QIO$C IO.WLB,5,1,,IOST,, WTSE$C 1 ;WAIT FOR IT EXIT$C .PAGE QIODPB: .BYTE 1,12 ;DIC AND SIZE OB DPB .WORD 30 ;FUNCTION CODE=SET TTY PARAMETERS .WORD 3 ;LUN .WORD 2 ;EVF =2 (EXPRESS), PRIORITY = DEFAULT .WORD IOST ;ADDR OF ISOT BUFFER .WORD 0 ;IO DONE AST ENTRY (NONE) .WORD 0,0 ;1ST 2 PARAMETERS ARE ZERO WORD3: .WORD 0 ;NEW SPEED CTL BITS WORD4: .WORD 006300 ;BIT MASK FOR ABOVE ; ASSLUN: ALUN$ 3,TT,0 ;DIR TO REASIGN LUN DEVFLA: .WORD 0 ;FLAG FOR TTY OTHER THAN TI IOST: .WORD 0,0 ERRBUF: .ASCII /INVALID SPEED OR SET FAILURE/ .EVEN BADBUF: .ASCII /BAD DEVICE NAME OR NUMBER/ BADLEN=.-BADBUF .EVEN MCRDPB: .BYTE 127.,41. ;DIRECTIVE CODE, SIZE OF BLOCK MCRBUF: .BLKW 40. ;INPUT BUFFER ; ;TABLES OF SPEEDS ; DCTAB: .BYTE 0 ;110 BAUD .BYTE -1 ;150 (ILLEGAL) .BYTE 1 ;300 .BYTE -1 ;600 (ILLEGAL) .BYTE 2 ;1200 .BYTE 3 ;1800 .BYTE -1 ;FASTER SPEEDS NOT AVAILABLE FOR DC .BYTE -1 .BYTE -1 .BYTE -1 .BYTE -1 ; DZTAB: .BYTE 2 ;110 BAUD .BYTE 4 ;150 .BYTE 5 ;300 .BYTE 6 ;600 .BYTE 7 ;1200 .BYTE 10 ;1800 .BYTE 12 ;2400 .BYTE 13 ;3600 .BYTE 14 ;4800 .BYTE 15 ;7200 .BYTE 16 ;9600 .END START