.TITLE CARY.MAC 08-AUG-83 ; GENERAL SCIENTIFIC CORPORATION ; 1684 EAST GUDE DRIVE ; ROCKVILLE, MD. 20850 ; (301) 340-2773 ; ; ; SUBROUTINE FOR DBL TO CHECK STATUS OF DZ MODEM-STATUS REGSTER BY MEANS ; OF EMT PEEK AND BIT-TEST FOR DESIRED PORT (ARGUMENT 1). STATUS IS ; RETURNED FOR DTR, RING, OR CARRIER DETECT, SELECTED IN ARGUMENT 2, ; INTO ARGUMENT 3, WHERE 1 IS HIGH AND 0 IS LOW. ; ; IT IS ASSUMED THAT 1 IS THE CONSOLE, ON A DL DEVICE AND THAT ; ADDITIONAL PORT #'S ARE ASSOCIATED IN A 7-TO-1 RELATIONSHIP TO SUCCES- ; -SIVE DZ MUXES. 1ST. DZ AT 160010, 2ND. DZ AT 160020, ETC. ; ;CALLING SEQUENCE: ; ; XCALL CARY (PORT,SELECT,STATUS) ; ;WHERE: PORT SELECTS THE DZ MUX ADDRESS AND BIT IN THE I/O PAGE TO BE ACCESSED ; : SELECT INDICATES WHETHER TO CHECK DTR, CARRIER, OR RING ; : STATUS IS 0 OR 1, I.E. LOW OR HIGH ; .SBTTL DIRECTIVES .IDENT \X1.0\ .PSECT OPTLIB .GLOBL $POPNM $FMTNM $CKARG $ERR ;PEEK AT THE I/O PAGE TO OBTAIN SET/CLEAR STATUS OF MODEM CARRIER DETECT. ; CARY:: MOV #140 ,R1 ;EMT CODE MOV #1 ,R3 ;EMT ID JSR PC ,PEEK ;PEEK AT THE PAGE RTS PC PEEK: JSR R0 ,$CKARG .WORD 3 MOV -(R5) ,-(SP) ; SAVE DESCRIPTION OF 3RD ARG. MOV -(R5) ,-(SP) ; SAVE POINTER TO 3RD ARGUMENT CALL $POPNM ; DECODE 2ND. ARG. INTO BINARY IN R2 MOV R2 ,SELECT MOV -(R5) ,-(SP) ; SAVE DESCRIPTION OF 2ND ARG. MOV -(R5) ,-(SP) ; SAVE POINTER TO 2ND ARGUMENT CALL $POPNM ; DECODE 1ST. ARG. INTO BINARY IN R2 MOV R2 ,PORT MOV (SP)+ ,(R5)+ ; RESTORE SP AND R5 STACKS -- MOV (SP)+ ,(R5)+ MOV (SP)+ ,(R5)+ MOV (SP)+ ,(R5)+ MOV #160014 ,ADDRES 1$: CMP PORT ,#12 BLT 2$ ADD #10 ,ADDRES ; USE NEXT DX MUX SUB #10 ,PORT ; STANDARDIZE PORT #'S BR 1$ ; FOR AS MANY DZ'S 2$: CMP SELECT ,#0 BEQ 3$ ADD #2 ,ADDRES ; SELECT NEXT WORD 3$: MOV ADDRES ,-(SP) MOV R3 ,-(SP) ;LO BYTE = EMT ID MOV SP ,R0 ;EMT POINTER MOVB R1 ,1(R0) ;HI BYTE = EMT CODE EMT 375 ;LET TSX DO IT BCC 4$ ; IF NO EMT ERROR CONTINUE JSR R0 ,$ERR ; GENERATE DBL ERROR 4$: CMP PORT ,#2 ; TEST PORT # NOT 0 OR CONSOLE BGE 5$ JSR R0 ,$ERR ; SHOULD BE AT LEAST 2 5$: CMP SELECT ,#2 BNE 6$ SWAB R0 ; CHECK RING 6$: CMP PORT ,#2 ; TEST PORT 2 OR 10 BNE 10$ BIT #400 ,R0 BEQ 7$ JMP SETHI 7$: JMP SETLO 10$: CMP PORT ,#3 ; TEST PORT 3 OR 11 BNE 20$ BIT #1000 ,R0 BEQ 11$ JMP SETHI 11$: JMP SETLO 20$: CMP PORT ,#4 ; TEST PORT 4 OR 12 BNE 30$ BIT #2000 ,R0 BEQ 21$ JMP SETHI 21$: JMP SETLO 30$: CMP PORT ,#5 ; TEST PORT 5 OR 13 BNE 40$ BIT #4000 ,R0 BEQ 31$ JMP SETHI 31$: JMP SETLO 40$: CMP PORT ,#6 ; TEST PORT 6 OR 14 BNE 50$ BIT #10000 ,R0 BEQ 41$ JMP SETHI 41$: JMP SETLO 50$: CMP PORT ,#7 ; TEST PORT 7 OR 15 BNE 60$ BIT #20000 ,R0 BEQ 51$ JMP SETHI 51$: JMP SETLO 60$: CMP PORT ,#10 ; TEST PORT 8 OR 16 BNE 70$ BIT #40000 ,R0 BEQ 61$ JMP SETHI 61$: JMP SETLO 70$: CMP PORT ,#11 ; TEST PORT 9 OR 17 BEQ 71$ ; TEST THAT MAX HAS NOT BEEN EXCEEDED JSR R0 ,$ERR ; ELSE GENERATE DBL ERROR (104) 71$: BIT #100000 ,R0 BEQ 72$ JMP SETHI 72$: JMP SETLO ; RETURN STATUS OF CARRIER DETECT FOR MUX PORT SETHI: MOV #1 ,R4 JMP CNVRT SETLO: MOV #0 ,R4 CNVRT: JSR R4 ,$FMTNM ; CONVERT TO DECIMAL IN ARGUMENT 2 CMP (SP)+ ,(R5)+ ; RESTORE DBL R5 AND SP STACKS ADD #2 ,SP ; FINAL SP STACK RESTORATION RTS PC PORT: .WORD 0 ADDRES: .WORD 0 SELECT: .WORD 0 .SBTTL END .END