.TITLE COMLIB .IDENT /1.2PX/ ;EDITED BY GCE TO ALLOW USE ON VMS WITHOUT PRIVS ; CHANGE: ALWAYS SAY ATTACH FAILS ON /NOI TO OUTPUT ; DISK... .ASECT .GLOBL CF.DAT .GLOBL CF.DON .GLOBL CF.MOU .GLOBL CF.UFD .GLOBL COMMSG .GLOBL CRUFD2 .GLOBL CR.FFI .GLOBL CURUFD .GLOBL DISUFD .GLOBL DTACNT .GLOBL EC.DAT .GLOBL EC.DRE .GLOBL EC.FAT .GLOBL EC.HNR .GLOBL EC.HRE .GLOBL EC.NOV .GLOBL EC.NUT .GLOBL EC.TRE .GLOBL EC.VNM .GLOBL EFN1 .GLOBL EFN2 .GLOBL EFN9 .GLOBL EXTFLG .GLOBL FLAGWD .GLOBL F.EFBK .GLOBL F.FFBY .GLOBL F.HIBK .GLOBL GTPBUF .GLOBL G.TSDU .GLOBL HDADR .GLOBL HDRCNT .GLOBL IBLB .GLOBL IBSZ .GLOBL IE.EOV .GLOBL IE.PRI .GLOBL IO.ATT .GLOBL IO.RLB .GLOBL IO.SEC .GLOBL IO.SPF .GLOBL KY.ATT .GLOBL KY.CAF .GLOBL KY.CBF .GLOBL KY.CMP .GLOBL KY.DIS .GLOBL KY.D2T .GLOBL KY.EXC .GLOBL KY.INI .GLOBL KY.MOU .GLOBL KY.RAF .GLOBL KY.RBF .GLOBL KY.SET .GLOBL KY.T2D .GLOBL KY.VMG .GLOBL KY.VPS .GLOBL LOGEOF .GLOBL MAPADR .GLOBL MONTHS .GLOBL Q.IOEF .GLOBL Q.IOFN .GLOBL Q.IOLU .GLOBL Q.IOPL .GLOBL Q.IOSB .GLOBL RPADR .GLOBL RPNUM .GLOBL RPS .GLOBL RS.CAF .GLOBL RS.CMP .GLOBL SAVEXT .GLOBL TTYMSG .GLOBL V.DPB .GLOBL V.FID .GLOBL V.IBLB .GLOBL V.IBSZ .GLOBL V.IFRP .GLOBL V.RPNM .GLOBL $AFCDT .GLOBL $AFRDT .GLOBL $BFCDT .GLOBL $BFRDT .GLOBL $BUF2 .GLOBL $CFLAG .GLOBL $DSKIN .GLOBL $DSKOU .GLOBL $EDMSG .GLOBL $FILES .GLOBL $FILNM .GLOBL $FLAG2 .GLOBL $INDPB .GLOBL $INITP .GLOBL $INSTA .GLOBL $IOCOD .GLOBL $MAPWT .GLOBL $MODE .GLOBL $MUL .GLOBL $OUDPB .GLOBL $OUDP2 .GLOBL $OUDP3 .GLOBL $OUSTA .GLOBL $PRDEV .GLOBL $PRFID .GLOBL $PRFIL .GLOBL $PRUFD .GLOBL $QUAL1 .GLOBL $QUAL2 .GLOBL $QUAL3 .GLOBL $RSFLG .GLOBL $SDAT .GLOBL $SET .GLOBL $SWTP1 .GLOBL $TPDPB .GLOBL $TPSTA .GLOBL $UFDNM .GLOBL $UFDWT .GLOBL $VRADR .PSECT .GLOBL GETBLK .GLOBL READRP .GLOBL RESRG .GLOBL SAVRG .GLOBL $BKEND .GLOBL $CKDAT .GLOBL $CKFIL .GLOBL $CKPRO .GLOBL $CKUFD .GLOBL $CMPDT .GLOBL $CVTDT .GLOBL $DIR .GLOBL $FNDID .GLOBL $INIDV .GLOBL $RSWFL .GLOBL $WRTFL .GLOBL $WRUFD .PSECT $$PAT .PSECT GETBLK: MOV R4,-(SP) EMT 377 BCS C00036 MOV #EFN1,-(SP) MOV #1051,-(SP) EMT 377 TSTB @Q.IOSB(R4) BPL C00036 MOV @Q.IOSB(R4),$IOCOD SEC C00036: RETURN READRP: JSR R5,SAVRG CLR RPS MOV $VRADR,R2 MOV V.FID(R2),R0 MOV V.DPB(R2),R4 MOV HDADR,Q.IOPL(R4) C00072: CMP R0,#20 BGT C00136 ADD V.IBSZ(R2),R0 MOV V.IBLB(R2),R3 ADD V.IBLB+2(R2),R0 ADC R3 SUB #1,R0 SBC R3 MOV R0,Q.IOPL+10(R4) MOV R3,Q.IOPL+6(R4) BR C00264 C00136: ADD V.IBSZ(R2),R0 ADD #2,R0 MOV V.RPNM(R2),R5 MOV V.IFRP(R2),R3 CLR R1 C00160: MOV R1,R4 MOVB 1(R3),R1 BIC #177400,R1 INC R1 ADD R4,R1 CMP R1,R0 BGE C00232 ADD #4,R3 DEC R5 BGT C00160 TSTB $MODE SEC BNE C00226 .BYTE EC.NOV .BYTE 211 SEC C00226: JMP C00634 C00232: SUB R4,R0 DEC R0 MOV V.DPB(R2),R4 MOVB (R3),Q.IOPL+6(R4) MOV 2(R3),Q.IOPL+10(R4) ADD R0,Q.IOPL+10(R4) ADC Q.IOPL+6(R4) C00264: TST HDADR BEQ C00634 MOV #IO.RLB,Q.IOFN(R4) MOV #1000,Q.IOPL+2(R4) MOV Q.IOEF(R4),-(SP) MOV #1,Q.IOEF(R4) MOV R4,Q.IOSB(R4) ADD #30,Q.IOSB(R4) CALL GETBLK MOV (SP)+,Q.IOEF(R4) BCC C00364 TSTB $MODE SEC BEQ C00356 .BYTE EC.HRE .BYTE 211 C00356: .BYTE EC.HRE .BYTE 211 SEC BR C00634 C00364: MOV Q.IOPL(R4),R1 MOV F.EFBK+16(R1),LOGEOF MOV F.EFBK+20(R1),LOGEOF+2 TST F.FFBY+16(R1) BNE C00416 DEC LOGEOF+2 C00416: MOVB 1(R1),R3 ASL R3 ADD R1,R3 MOV R3,R1 MOV 2(R3),SAVEXT ADD #12,R3 MOV R3,MAPADR MOVB 10(R1),R1 BIC #177400,R1 MOV R1,R0 ASR R1 ADD R1,RPS BEQ C00504 MOV RPADR,R2 BEQ C00504 C00476: MOV (R3)+,(R2)+ DEC R0 BNE C00476 C00504: MOV SAVEXT,R0 BEQ C00634 MOV R2,RPADR MOV $VRADR,R2 TST EXTFLG BEQ C00634 BLT C00546 ADD #400,Q.IOPL(R4) DEC EXTFLG BR C00560 C00546: INC EXTFLG TSTB $MODE BNE C00630 C00560: CMP V.FID(R2),#1 BNE C00600 MOV RPS,RPNUM BR C00610 C00600: CMP V.FID(R2),#3 BNE C00630 C00610: MOV #CR.FFI,R5 C00614: TST (R5) BEQ C00626 ADD #2,R5 BR C00614 C00626: MOV R0,(R5) C00630: JMP C00072 C00634: JSR R5,RESRG RETURN SAVRG: MOV R4,-(SP) MOV R3,-(SP) MOV R2,-(SP) MOV R1,-(SP) MOV R0,-(SP) MOV 12(SP),-(SP) RTS R5 RESRG: MOV (SP)+,R0 MOV (SP)+,R0 MOV (SP)+,R1 MOV (SP)+,R2 MOV (SP)+,R3 MOV (SP)+,R4 RTS R5 $CMPDT: MOV R1,-(SP) MOV R0,R1 CALL $CVTDT MOV R1,R0 MOV (SP)+,R1 ADD #5,R0 ADD #5,R1 CALL C01006 SUB #5,R0 SUB #5,R1 CALL C01006 SUB #4,R0 SUB #4,R1 CALL C01006 ADD #5,R0 ADD #5,R1 CALL C01006 CALL C01006 CALL C01006 RETURN C01006: MOV #2,R2 CALL C01234 BEQ C01030 CLC BGT C01026 SEC C01026: DEC (SP)+ C01030: RETURN $CVTDT: ADD #2,R1 MOV #MONTHS,R0 MOV #14,R2 C01046: CMPB (R0),(R1) BNE C01072 CMPB 1(R0),1(R1) BNE C01072 CMPB 2(R0),2(R1) BEQ C01220 C01072: ADD #3,R0 DEC R2 BNE C01046 MOV #CURUFD,$PRUFD MOV R3,$PRFIL ADD #6,$PRFIL BIT #400,$FLAG2 BNE C01174 CMP DISUFD,CURUFD BNE C01174 CMP DISUFD+2,CURUFD+2 BNE C01174 BIT #KY.VPS,$QUAL3 BNE C01174 BIT #1000,$FLAG2 BNE C01174 .BYTE EC.DAT .BYTE 211 C01174: CLR $PRUFD CLC BIT #20000,FLAGWD BEQ C01214 SEC C01214: MOV (SP)+,(SP)+ RETURN C01220: MOVB R2,(R1)+ CLRB (R1)+ CLRB (R1) SUB #4,R1 RETURN C01234: CMPB (R0)+,(R1)+ BNE C01244 DEC R2 BNE C01234 C01244: RETURN $CKDAT: BIT #CF.DAT,$CFLAG BNE C01422 BIT #KY.RBF,$QUAL2 BEQ C01304 BIS #30000,FLAGWD MOV #$BFRDT,$SDAT BR C01404 C01304: BIT #KY.CBF,$QUAL2 BEQ C01332 BIS #24000,FLAGWD MOV #$BFCDT,$SDAT BR C01404 C01332: BIT #KY.RAF,$QUAL2 BEQ C01360 BIS #50000,FLAGWD MOV #$AFRDT,$SDAT BR C01404 C01360: BIT #KY.CAF,$QUAL2 BEQ C01422 MOV #$AFCDT,$SDAT BIS #44000,FLAGWD C01404: MOV $SDAT,R1 CALL $CVTDT BIS #CF.DAT,$CFLAG C01422: RETURN $CKUFD: MOV $FILNM,R2 BEQ C01556 CMP R2,$UFDNM BNE C01460 BIT #KY.VPS,$QUAL3 BNE C01460 BIS #CF.DON,$CFLAG BR C01530 C01460: MOV #$FILES,R5 C01464: CMP #177777,(R5) BEQ C01476 CMP (R5),(R0) BNE C01516 C01476: CMP #177777,2(R5) BEQ C01556 CMP 2(R5),2(R0) BEQ C01534 C01516: DEC R2 BEQ C01530 ADD #16,R5 BR C01464 C01530: SEC BR C01626 C01534: CMP #177777,(R5) BEQ C01556 BIT #KY.EXC!KY.VPS,$QUAL3 BNE C01556 INC $UFDNM C01556: CLC BIT #KY.EXC,$QUAL3 BEQ C01632 TST 4(R5) BEQ C01626 CMP #177777,4(R5) BNE C01632 CMP #177777,12(R5) BNE C01632 CMP #177777,14(R5) BNE C01632 C01626: JMP C02102 C01632: RETURN $CKFIL: MOV #$FILES,R5 MOV $FILNM,R2 BEQ C02100 C01646: CMP #177777,(R5) BEQ C01662 CMP (R5),CURUFD BNE C02062 C01662: CMP #177777,2(R5) BEQ C01702 CMP 2(R5),CRUFD2 BNE C02062 C01702: TST 4(R5) BNE C01734 TST 12(R5) BNE C01734 TST 14(R5) BNE C01734 C01724: BIS #1000,FLAGWD BR C02100 C01734: CMP #177777,4(R5) BNE C01766 CMP #177777,12(R5) BNE C02014 CMP #177777,14(R5) BEQ C01724 BR C02044 C01766: CMP 4(R5),(R3) BNE C02062 CMP 6(R5),2(R3) BNE C02062 CMP 10(R5),4(R3) BNE C02062 C02014: CMP #177777,12(R5) BEQ C02034 CMP 12(R5),6(R3) BNE C02062 C02034: CMP #177777,14(R5) BEQ C02100 C02044: TST 14(R5) BEQ C02100 CMP 14(R5),10(R3) BEQ C02100 C02062: DEC R2 BEQ C02074 ADD #16,R5 BR C01646 C02074: SEC BR C02102 C02100: CLC C02102: BIT #KY.EXC,$QUAL3 BEQ C02122 BCS C02120 SEC BR C02122 C02120: CLC C02122: RETURN $DIR: CALL $INITP CALL $SWTP1 INC HDRCNT MOV #$TPDPB,R5 MOV #IO.RLB,Q.IOFN(R5) MOV #120,Q.IOPL+2(R5) MOV #$BUF2,Q.IOPL(R5) CALL C02604 MOV #1,Q.IOPL(R5) C02200: MOV #IO.SPF,Q.IOFN(R5) CALL C02604 BCS C02602 MOV #120,Q.IOPL+2(R5) MOV #$BUF2,Q.IOPL(R5) MOV #IO.RLB,Q.IOFN(R5) C02236: CALL C02604 CMP #120,$TPSTA+2 BNE C02236 MOV #$BUF2,R2 BIT #KY.SET,$QUAL2 BEQ C02312 MOV #6,R3 MOV #$SET,R1 C02276: CMP (R1)+,(R2)+ BNE C02414 DEC R3 BNE C02276 MOV #$BUF2,R2 C02312: MOV #C02734,R1 MOV 14(R2),(R1)+ MOV #14,(R1)+ MOV R2,(R1)+ MOV #C03007,(R1)+ MOV #14,(R1)+ MOV R2,(R1) ADD #16,(R1)+ MOV #C03007,(R1)+ MOV #6,R3 ADD #32,R2 C02362: MOV (R2)+,(R1)+ DEC R3 BNE C02362 MOV #C02734,R2 MOV #C02700,R1 CALL C02654 BIT #KY.SET,$QUAL2 BNE C02424 C02414: MOV #3,Q.IOPL(R5) BR C02200 C02424: MOV #$BUF2,R4 CMP #1,14(R4) BNE C02602 MOV #1000,Q.IOPL+2(R5) C02446: CALL C02604 BCS C02602 CMP #120,$TPSTA+2 BNE C02446 CMP #43125,(R4) BNE C02446 BR C02524 C02474: CALL C02604 BCS C02602 MOV #$BUF2,R4 CMP #1000,$TPSTA+2 BEQ C02544 CMP #43125,(R4) BNE C02602 C02524: MOV R4,R2 ADD #12,R2 MOV #C02770,R1 CALL C02654 BR C02474 C02544: CMP R4,#$BUF2+1000 BEQ C02474 TST (R4) BEQ C02474 MOV R4,R2 ADD #6,R2 MOV #C03002,R1 CALL C02654 ADD #20,R4 BR C02544 C02602: RETURN C02604: MOV #$TPDPB,-(SP) EMT 377 MOV #EFN9,-(SP) MOV #1051,-(SP) EMT 377 MOVB $TPSTA,R1 BPL C02652 CMP R1,#IE.EOV BEQ C02650 MOV R1,$IOCOD .BYTE EC.TRE .BYTE 211 BR C02652 C02650: SEC C02652: RETURN C02654: MOV #COMMSG,R0 CALL $EDMSG MOV R1,TTYMSG+Q.IOPL+2 MOV #TTYMSG,-(SP) EMT 377 RETURN C02700: BIC @47526(R0),-(R5) CMP (R5)+,(R4) CMP @20040(R1),(R5) CMP (R4)+,-(R0) BIC R5,(SP)+ BIC R4,-(R5) BIS @(R0)+,-(R5) CMP (R5)+,R1 CMP (R5)+,R1 CMP R1,@(R1)+ BIT (R4),-(R5) JMP @(R2)+ .=.+34 C02770: BIC @22533(R0),-(R5) CMP 51045(R1),(R2)+ JMP @(R5)+ C03002: BIC @54045(R0),-(R5) C03006: JSR R4,R0 C03007= C03006+1 $INIDV: BIT #KY.D2T,$QUAL3 BEQ C03026 CALL C03074 BR C03072 C03026: BIT #KY.T2D,$QUAL3 BEQ C03044 ; TAPE TO DISK... ;C03246 IS ATTOU TO ATTACH OUTPUT DISK CALL C03246 BR C03072 C03044: BIT #KY.ATT,$QUAL3 BNE C03072 CALL C03074 CALL C03246 BIS #KY.ATT,$QUAL3 C03072: RETURN ATTIN: C03074: MOV #IO.ATT,$INDPB+Q.IOFN MOVB $DSKIN+3,$INDPB+Q.IOLU MOVB #EFN1,$INDPB+Q.IOEF MOV #$INDPB,-(SP) EMT 377 BCS C03142 MOV #EFN1,-(SP) MOV #1051,-(SP) EMT 377 BCC C03144 C03142: .BYTE EC.HNR .BYTE 211 C03144: MOVB $INSTA,R0 BPL C03206 MOV #$DSKIN,$PRDEV MOV R0,$IOCOD CMPB R0,#IE.PRI BNE C03204 BIT #KY.MOU,$QUAL3 BNE C03206 .BYTE EC.VNM .BYTE 211 C03204: .BYTE EC.FAT .BYTE 211 C03206: CLR $IOCOD CLR $PRDEV MOV #IO.SEC,$INDPB+Q.IOFN MOV #$INDPB,-(SP) EMT 377 MOV #EFN1,-(SP) MOV #1051,-(SP) EMT 377 RETURN ATTOU: C03246: MOV #1000,$OUDPB+Q.IOPL+2 MOVB $DSKOU+3,$OUDPB+Q.IOLU MOVB $DSKOU+3,$OUDP2+Q.IOLU MOVB $DSKOU+3,$OUDP3+Q.IOLU MOV #IO.ATT,$OUDPB+Q.IOFN MOV #$OUDPB,-(SP) EMT 377 BCS C03330 ;WAIT FOR EVENT FLAG TO AWAIT ATTACH DONE... MOV #EFN2,-(SP) MOV #1051,-(SP) EMT 377 BCC C03332 C03330: .BYTE EC.HNR .BYTE 211 ;PATCH NEXT LOCATIONS TO PRESERVE ANY FUNNY LOCATION DEPENDENCIES C03332: .IF NDF,$VGRSX ;$VGRSX REGENERATES RSX NORMAL VERSION... JMP ATPAT$ NOP .IFF MOVB $OUSTA,R0 ;GET ATTACH STATUS BPL C03402 ;IF IT SUCCEEDED, SKIP NEXT .ENDC ATFAL: MOVB R0,$IOCOD MOV #$DSKOU,$PRDEV CMPB R0,#IE.PRI BNE C03400 BIS #CF.MOU,$CFLAG ;USE ATTACH FAIL TO SIGNAL DISK MOUNTED BIT #KY.INI,$QUAL1 ;DID USER WANT IT THAT WAY? BEQ C03422 ;IF /NOI HE DID, LET IT BY. C03376: .BYTE EC.VNM .BYTE 211 C03400: .BYTE EC.FAT .BYTE 211 ATTSUC: C03402: BIT #KY.CMP,$QUAL2 ;/CMP ON OUTPUT DISK? BNE C03422 ;IF NE YES, THEN WE WANT ATTACH OK BIT #KY.INI,$QUAL1 ;/INI BUT DISK MOUNTED (ATT FAIL)? LOSE BEQ C03376 ;IF EQ, /NOI SET BUT HERE, DISK ATTACHED SO ;NOT MOUNTED YET HAS TO BE MOUNTED... LOSE LOSE LOSE C03422: CLR $IOCOD CLR $PRDEV MOV #IO.SEC,$OUDPB+Q.IOFN MOV #$OUDPB,-(SP) EMT 377 MOV #EFN2,-(SP) MOV #1051,-(SP) EMT 377 RETURN $RSWFL: BIT #KY.VPS,$QUAL3 BNE C03644 BIT #RS.CAF,$RSFLG BNE C03644 INC HDRCNT ADD F.HIBK+20(R0),DTACNT+2 ADC DTACNT ADD F.HIBK+16(R0),DTACNT BR C03540 $WRTFL: BIT #KY.VPS,$QUAL3 BNE C03644 C03540: BIT #KY.DIS,$QUAL3 BEQ C03644 JSR R5,SAVRG MOV #C03700,R1 BR C03616 $WRUFD: BIT #KY.DIS,$QUAL3 BEQ C03644 BIT #KY.VPS,$QUAL3 BNE C03644 JSR R5,SAVRG MOV #C03662,R1 MOV #CURUFD,R2 C03616: MOV #COMMSG,R0 CALL $EDMSG MOV R1,TTYMSG+Q.IOPL+2 MOV #TTYMSG,-(SP) EMT 377 JSR R5,RESRG C03644: MOV CURUFD,DISUFD MOV CURUFD+2,DISUFD+2 C03660: RETURN C03662: BIC @47045(R0),-(R5) CMP (R5)+,@(R3)+ CMP 51045(R1),(R2)+ CMP (R5)+,@(R5)+ JMP (SP) C03700: BIC @54045(R0),-(R5) .BYTE 0 .=.+1 $CKPRO: BIT #KY.MOU,$QUAL3 BEQ C04102 BIT #400,FLAGWD BNE C04102 BIT #KY.EXC,$QUAL3 BNE C04102 CMPB #10,GTPBUF+G.TSDU+1 BCS C03756 BIT #1,12(R5) BEQ C04102 C03756: CMP GTPBUF+36,10(R5) BNE C03776 BIT #20,12(R5) BEQ C04102 C03776: CMPB GTPBUF+G.TSDU+1,11(R5) BNE C04016 BIT #400,12(R5) BEQ C04102 C04016: BIT #10000,12(R5) BEQ C04102 BIT #400,$FLAG2 BNE C04076 BIT #CF.UFD,$CFLAG BEQ C04054 MOV R0,$PRFIL BR C04066 C04054: MOV R3,$PRFIL MOV #CURUFD,$PRUFD C04066: ADD #6,$PRFIL .BYTE EC.VNM .BYTE 211 C04076: SEC BR C04104 C04102: CLC C04104: RETURN $BKEND: TST HDRCNT BNE C04124 BIS #10,$FLAG2 .BYTE EC.NUT .BYTE 211 C04124: BIT #KY.DIS,$QUAL3 BEQ C04174 MOV HDRCNT,C04246 MOV #COMMSG,R0 MOV #C04244,R2 MOV #C04176,R1 CALL $EDMSG MOV R1,TTYMSG+Q.IOPL+2 MOV #TTYMSG,-(SP) EMT 377 C04174: RETURN C04176: BIC @67524(R0),-(R5) ADD R5,20154(R4) ADD @(R1)+,@-(PC) CMP (R4)+,-(R0) CMP @61040(R1),(R4)+ ADD @65543(R5),@-(R4) CMP R1,67151(R3) CMP (R4)+,-(R0) CMP @63040(R1),(R5) ADD 71545(R1),@-(R1) .WORD 47045 .BYTE 0 .=.+1 C04244: .WORD DTACNT C04246: HALT $FNDID: MOV IBSZ,R5 MOV #$BUF2,Q.IOPL+$INDPB MOV IBLB,Q.IOPL+6+$INDPB MOV IBLB+2,Q.IOPL+10+$INDPB CLR R1 C04300: MOV #$INDPB,R4 CALL GETBLK BCC C04324 MOV #1,$PRFID .BYTE EC.DRE .BYTE 211 BR C04352 C04324: MOV #$BUF2,R2 C04330: CMP #177777,(R2) BNE C04370 C04336: INC R1 ADD #2,R2 CMP R2,#$BUF2+1000 BNE C04330 C04352: DEC R5 BEQ C04500 INC $INDPB+Q.IOPL+10 ADC $INDPB+Q.IOPL+6 BR C04300 C04370: MOV R1,-(SP) MOV #20,R0 CALL $MUL TST R0 BNE C04500 CLR R4 MOV (R2),R0 C04412: INC R4 CMP R4,#21 BEQ C04474 ROR R0 BCS C04412 ADD R4,R1 BCS C04500 CMP R1,#62435 BGT C04500 MOV R5,-(SP) MOV #CR.FFI,R5 C04446: TST (R5) BEQ C04460 ADD #2,R5 BR C04446 C04460: MOV R1,(R5) MOV (SP)+,R5 DEC R3 BEQ C04500 SUB R4,R1 BR C04412 C04474: MOV (SP)+,R1 BR C04336 C04500: TST (SP)+ RETURN .=.+177410 CALL E00000 NOP NOP .PSECT $$PAT E00000: CLR $PRDEV BIS #10,$FLAG2 BIT #RS.CMP,$RSFLG BNE E00062 MOV R2,-(SP) MOV #$OUDP2,R2 CALL $MAPWT MOV #$OUDP3,R2 CALL $MAPWT MOV (SP)+,R2 MOV #1000,$OUDPB+Q.IOPL+2 CALL $UFDWT .BYTE EC.NUT .BYTE 211 E00062: RETURN .PSECT .=.+177336 CALL E00064 NOP NOP .=.+100 CALL E00064 NOP NOP .PSECT $$PAT E00064: BIT #KY.VPS,$QUAL3 BNE E00116 BIT #KY.VMG,$QUAL3 BEQ E00114 BIT #KY.CMP,$QUAL2 BEQ E00116 E00114: RETURN E00116: TST (SP)+ JMP C03660 ; VMS COMPATIBILTY MODE PATCH FOR NON-PRIV'D BRU TO ALLOW IT ; TO WORK ON MOUNTED DISKS... ; MAY REQUIRE SYSPRV OR SOME SUCH TO WRITE ATTS BUT OTHERWISE ; OUGHT TO BE OK .IF NDF,$VGRSX ATPAT$: MOVB $OUSTA,R0 ;GET ATTACH STATUS BPL 1$ ;IF IT SUCCEEDED, SKIP NEXT ;ATTACH FAILURE... ALWAYS CAUSES NO VMS TROUBLE BUT AME NEVER ;FAILS AN ATTACH. LET IT BY... JMP ATFAL 1$: ;ATTACH SUCCESS ; VMS MAY BE JUST CLAIMING THIS IN SPITE OF DISK MOUNTED SO ALLOW ; BRU TO THINK IT REALLY FAILED... BIT #KY.INI,$QUAL1 ;DID USER SAY /NOI? BNE 2$ ;IF NE THEN /INI SO WANT TO TREAT ATT OK ;ATTACH LOOKS OK BUT USER SAYS /NOI ANYHOW ; SET IE.PRI INTO R0 ; HE SAID /NOI (OR DEFAULTED IT) SO ALLOW USE OF IE.PRI AND MAKE ; USER THINK ALL'S WELL FOR WRITE TO MOUNTED VOLUME UNDER VMS... MOVB #IE.PRI,R0 ;SET PRIVILEGE ERROR (WHICH IS WHAT WE NEED) JMP ATFAL 2$: ; /INI CALLED FOR, SO LET SUCCESS THROUGH .IF NDF,$$BARI JMP ATTSUC .IFF ; NOTE: WE SEEM TO NEED TO ALWAYS "FAIL" THE ATTACH FOR WRITING TO ; MOUNTED ODS2 DISKS FROM BRU TAPES. SO DO IT (NOTE: MAY NEED BYPASS ; PRIV TO WRITE FILES OK). ; CONDITION THIS THE OTHER WAY TO HANDLE WRITING TO UNMOUNTED DISKS ON ; VAX. DUNNO WHY IT WORKS EXACTLY; IT DOES, AND THAT'S GOOD ENOUGH FOR ME. ; GCE. JMP ATFAL .ENDC .ENDC ;$VGRSX .PSECT .BLKB 702 .=.-4504 C02734= .+2734 .END