.TITLE BYENET - LOGOFF FROM A DZ PORT ; USING SHARE REAL-TIME - THIS VERSION NEEDS FIXED PORT DISTRIBUTION ; GRAHAM FORSYTH ; ECDS/AERO PROP ; ARL BOX 4331 GPO MELBOURNE .ENABLE GBL .MCALL .PRINT, .TTINR, .TTYOUT, .EXIT .MCALL $WORLD,$DEFRT JSW=44 CHAIN=4000 $DEFRT CSR = 160010 ; DEFINE MUX CONTROL REG DTR = CSR+5 BIT0=1 BIT1=2 BIT2=4 BIT3=10 BIT4=20 BIT5=40 BIT6=100 BIT7=200 .CSECT BYE START: .PRINT #MSG1 $WORLD #AREA,#IWORLD ;GET WORLD MOV IWORLD,R1 ;GET MONITOR TYPE ; R1=0 FOR RT11; 1 = STAR SAT; 2 = SHARE; 3 = TSX; 4 = RSTS; 5 = RSX ; 6 = RSX PLUS; 7 = IAS; 8 = VMS/VRT; 9 = UNIX; 10 = VAX UNIX ; I.E. IF R1 NOT = 2 GOTO EXIT CMP #2,R1 BNE EXIT ;NOW GET THE SATELLITE NUMBER MOV SATNO,R1 ;GET SAT NUMBER ;CHECK FOR SATELLITE 1 ONLY CMP #1,R1 BNE EXIT ;NOW WE NEED THE JOB NUMBER MOV JOBNO,R1 ;GET JOB NUMBER ;AND DO LOG ONLY IF JOB 1 CMP #1,R1 BEQ EXIT1 ; ; NOW WE NEED TO TOGGLE DTR BIT IN APPROPRIATE CSR J$INIT ;START REAL TIME BCS JFAIL MOV JOBNO,R1 ;GET JOB NUMBER ; ; MOVB JOB0(R1),R2 ;PUT APPROPRIATE MASK IN R2 J$CALL #DTRSET ;TOGGLE REQUIRED BIT ;EXIT HAS TO SETUP "LOGOFF" COMMAND AND THEN EXIT EXIT1: br LOG EXIT: .EXIT JFAIL: .PRINT #MSG ;GO BACK AND TRY AGAIN BR START ; ; ; AREA: .BLKW 2 IWORLD: .WORD ; IWORLD = MONITOR TYPE SATNO: .WORD ; IWORLD+6 = SATELLITE NUMBER NOSAT: .WORD ; IWORLD+10 = NUMBER OF SATELLITES JOBNO: .WORD ; IWORLD+2 = JOB NUMBER (SHARE) NOJOB: .WORD ; IWORLD+4 = NUMBER OF JOBS (SHARE) REST: .BLKW 11 ; IWORLD+12 = USER ID (2 BYTES) ; IWORLD+14/16 = USER NAME (2 RAD50 WORDS) ; .EVEN MSG1: .ASCIZ /[break]/<12><15> .EVEN JOB0: .BYTE 0 ;DUMMY JOB1: .BYTE 0 ;JOB 1 JOB2: .BYTE BIT0 ;JOB 2 JOB3: .BYTE bit1 ;JOB 3 JOB4: .BYTE bit4 ;JOB 4 JOB5: .BYTE bit5 ;JOB 5 JOB6: .BYTE bit6 ;JOB 6 JOB7: .BYTE bit7 ;JOB 7 JOB8: .BYTE 0 ;JOB 8 MSG: .ASCIZ //<12><15> .EVEN log: MOV #510,R0 ;COMMUNICATIONS AREA MOV #MSGLOG,R1 MOV #START,SP 10$: MOVB (R1)+,(R0)+ CMP R1,#CMDEND BLO 10$ BIS #CHAIN,@#JSW CLR R0 .EXIT ;NOTE THAT RT11 MANUAL APPEARS TO BE WRONG AT THIS POINT! MSGLOG: .WORD CMDEND-MESS MESS: .ASCIZ /log/ CMDEND: .EVEN SERVER::S$BEGIN QUIT=DTRTOG ;START OF SERVER DTRMSK: .BYTE 0 .EVEN DTRSET: MOVB R2,DTRMSK BICB DTRMSK,DTR ;CLEAR DTR BIT RETURN DTRTOG: ;WAIT AROUND FOR A FEW MILLISECONDS (note 2 millisec delay in mux) MOV #20000,R2 PAUSE: SOB R2,PAUSE BISB DTRMSK,DTR ;RESET DTR BIT RETURN S$END .END START