.TITLE DSPOOL .IDENT /V03.00/ .PSECT DSPOOL ; ; AUTHOR OSKAR ANDLER ; ; REVISION HISTORY: ; IDENT DATE WHO REASON ; ; ? O ANDLER CREATED ; ? ; V01.03 79-01-09 G LINDBERG MADE RENAME WORK ON ALL LUN'S ; V01.04 79-02-02 G LINDBERG MAX VERSION NUMBER=7777 ; V01.05 81-09-18 E BERGLUND MAX VERSION NUMBER=77777 ; CREATES A DUMMY FILE, NO COMMON ; AREA IS NEEDED. ; V03.00 83-03-10 E BERGLUND R3 MUST CONTAIN THE ADDRESS ; OF OTS IMPURE AREA ; ; CALLING SEQUENCE: CALL DSPOOL(ILUN,ITIX,IERR) ; ILUN=LUN WITH FILE ; IF ILUN <0 ONLY SDAT IS ISSUED ; ITIX=TERMINAL INDEX ; IERR= 0 OK ; -1 WRONG INDEX ; -2 DEVICE TABLE NOT FOUND ; -3 RENAME FAULT (ERROR CODE ; IN FDB AT OFFSET F.ERR ; FDB-ADR IN FDBSAV) ; -4 SEND & REQUEST ERROR ;EB: -5 CLOSE FAULT FOR SPOOL FILE ;EB: -6 OPEN FAULT FOR DUMMY FILE ;EB: -7 CLOSE FAULT FOR DUMMY FILE ;EB: -8 DELETE FAULT FOR EARLIER DUMMY ;EB: FILE VERSION ;EB: -9 OPEN FAULT FOR SPOOL FILE .PAGE ; FUNCTIONAL DESCRIPTION: ; DSPOOL WILL RENAME THE FILE THAT IS ON ILUN ; TO: SPLXXX.DAT;YYYYY ; XXX = TERMINAL INDEX ;EB: YYYYY = VERSION NUMBER (OCTAL MAX 77777) ; VERSION NUMBER WILL BE INC- ; REMENTED FOR EACH SPOOL-FILE ; THE UFD WILL BE CHANGED TO [2,4] FOR THE FILE ; NOTE* THE FILE MUST BE ON SY: ; (YOU CAN'T RENAME OVER DEVICES) ; ; WILL THEN DO SDAT TCSIND TO TRIGG SPOOLING UNDER TCS ; ;EB: DSPOOL ALSO CREATES A DUMMY FILE [2,4]SPLZZZ.DAT (0 BLOCKS) IN ORDER ;EB: TO GET A NEW VERSION NUMBER FOR THE SPOOL FILE. SPLZZZ.DAT'S NEW ;EB: VERSION NUMBER IS COPIED TO THE SPOOL FILE VERSION NUMBER. AFTER ;EB: THAT, THE EARLIER VERSION OF SPLZZZ.DAT IS DELETED (IF DELET IS ;EB: DEFINED). CONSEQUENTLY, THERE IS ONLY ONE VERSION OF SPLZZZ.DAT ;EB: AFTER A DSPOOL CALL. ; DELET=0 ;EB: DELETE EARLIER DUMMY FILE VERSION FOR=0 ;FOR V1.C ;FTN=0 ;FOR BEFORE V1.C OR OLDER ; .IF DF FOR DVFDB =14 ; OFFSET TO FDB .ENDC .IF DF FTN DVFDB =102 ;*** OFFSET TO FDB IN DEVICE TABLE *** .ENDC .PAGE .MCALL SDAT$S,FDBDF$,FDOP$A,FDRC$R,FDBK$R ;EB .MCALL OPEN$W,OPEN$R,CLOSE$,CALL,RETURN ;EB .IF DF DELET ;EB .MCALL DELET$ ;EB .ENDC ;EB ; ; SAVES SPOOL FILE NAME BLOCK IN FNB ;EB .MACRO SAVE ?LABEL MOV #S.FNBW,R0 MOV FDBSAV,R3 ADD #F.FNB,R3 MOV #FNB,R2 LABEL: MOV (R3)+,(R2)+ SOB R0,LABEL .ENDM ; ; RESTORES SPOOL FILE NAME BLOCK ;EB .MACRO RESTOR ?LABEL MOV #S.FNBW,R0 MOV FDBSAV,R3 ADD #F.FNB,R3 MOV #FNB,R2 LABEL: MOV (R2)+,(R3)+ SOB R0,LABEL .ENDM ; ; CONVERTS R1 TO FIVE OCTAL DIGITS WHICH ARE STORED ;EB ; IN VERSION NUMBER IN NAME. NO ZERO SUPPRESS .MACRO OCTAL ?LABEL MOV #CONV,R0 MOV #1,R2 ;EB: NO ZERO SUPRESS CALL $CBOMG ;EB: CONVERT MOV #5,R2 ;EB: MOVE LAST FIVE DIGITS TO NAME LABEL: MOVB -(R0),NAME+10.(R2) ;EB SOB R2,LABEL .ENDM .PAGE TCSIND: .RAD50 /TCSIND/ SPBUFF: TIX: .WORD 0 .RAD50 /ERQERQ/ ; THIS WORD INDICATES TO TCS THAT IT IS ; AN "EXTERNAL REQUEST" DSPOOL:: MOV @2(R5),FDB+F.LUN ;EB: MOVE LUN TO RENAME FDB CLR R4 ;IERR = 0 MOV @4(R5),TIX ;GET TIX BGE 10$ ;HAS TO BE POSITIVE JMP 91$ ;EB: ERROR 10$: .IF DF FTN MOV @2(R5),R0 ;GET LUN BLT 50$ ; IF NEG. ONLY SDAT CALL $FNDEV ;FIND DEVICE .ENDC .IF DF FOR MOV @2(R5),R2 ; GET LUN MOV #$OTSVA,R3 ;EB: POINT AT OTS IMPURE AREA CALL $FCHNL ; GET FDB TABLE ADRESS MOV R0,R1 ; USED TO BE IN R1 ..... .ENDC TST R1 ;FOUND ? BNE 12$ ;YES JMP 92$ ;EB: NO - ERROR 12$: ADD #DVFDB,R1 ;POINT AT FDB MOV R1,FDBSAV ;SAVE ADRESS SAVE ;EB: SAVE SPOOL FILE NAME BLOCK CLOSE$ FDBSAV ;EB: CLOSE SPOOL FILE BCS 95$ ;EB: ERROR CODE -5 ; FDRC$R #FDB,#FD.RWM ;EB: INIT FDB FOR DUMMY FILE: FDBK$R #FDB,#BUFF,#0 ;EB MOV #5,R2 ;EB: NAME DUMMY FILE 'SPLZZZ.DAT;00000' 30$: MOVB #'0,NAME+10.(R2);EB SOB R2,30$ ;EB MOVB #'Z,NAME+3 ;EB MOVB #'Z,NAME+4 ;EB MOVB #'Z,NAME+5 ;EB ; OPEN$W #FDB ;EB: CREATE NEW VERSION OF DUMMY FILE BCS 96$ ;EB: ERROR CODE -6 MOV FDB+F.FNB+N.FVER,NEWVER ;EB: GET NEW VERSION NUMBER IN NEWVER CLOSE$ #FDB ;EB: CLOSE DUMMY FILE BCS 97$ ;EB: ERROR CODE -7 .IF DF DELET ;EB MOV NEWVER,R1 ;EB DEC R1 ;EB: DECREMENT VERSION NUMBER BEQ 34$ ;EB: BRANCH IF NO EARLIER VERSION OCTAL ;EB: CONVERT R1 TO OCTAL STRING IN NAME DELET$ #FDB ;EB: DELETE EARLIER DUMMY FILE VERSION BCS 98$ ;EB: ERROR CODE -8 .ENDC ;EB 34$: RESTOR ;EB: RESTORE SPOOL FILE NAME BLOCK OPEN$R FDBSAV ;EB: OPEN SPOOL FILE BCS 99$ ;EB: ERROR CODE -9 MOV NEWVER,R1 ;EB: NEW VERSION NUMBER OCTAL ;EB: CONVERT R1 TO OCTAL STRING IN NAME MOV #CONV,R0 MOV @4(R5),R1 ;GET TIX MOV #1,R2 ;NO ZERO SUPPRESS CALL $CBDMG ;CONVERT TO DECIMAL STRING MOV #3,R2 ;MOV LAST 3 DIGITS TO NAME 40$: MOVB -(R0),NAME+2(R2) SOB R2,40$ MOV FDBSAV,R0 ;GET OLD FDB ADRESS MOV #FDB,R1 ;AND NEW... CALL .RENAM ;RENAME THE FILE BCS 93$ ;ERROR CODE -3 BR 50$ ;RENAME OK ; 99$: DEC R4 ;EB: IERR = -9 98$: DEC R4 ;EB: IERR = -8 97$: DEC R4 ;EB: IERR = -7 96$: DEC R4 ;EB: IERR = -6 95$: DEC R4 ;EB: IERR = -5 94$: DEC R4 ;IERR = -4 93$: DEC R4 ;IERR = -3 92$: DEC R4 ;IERR = -2 91$: DEC R4 ;IERR = -1 BR 90$ ; 50$: SDAT$S #TCSIND,#SPBUFF ; AND DO SDAT BCS 94$ ;ERROR -4 ;GL CONDITIONAL ASS INCL $CLOSE ; MOVED TO 90$: 90$: .IF DF FOR MOV @2(R5),R2 ; GET LUN CALL $CLOSE ; AND CLOSE THE FILE FOR FOR .ENDC MOV R4,@6(R5) ; GIVE RETURN CODE TO IERR RETURN .PAGE ; FDB: FDBDF$ FDOP$A 1,DSPT BUFF: ;DUMMY BUFFER DSPT: .WORD 4,DEV,5,DIR,16.,NAME DEV: .ASCII /SY0:/ DIR: .ASCII /[2,4]/ NAME: .ASCII /SPLXXX.DAT;YYYYY/ ;FILE NAME .EVEN CONV: .BLKW 4 FDBSAV: .WORD 0 NEWVER: .WORD 0 FNB: .BLKB S.FNB .EVEN .END