.TITLE DIRECT .SBTTL RSX11M ROLLIN .PSECT IMPURE,D,LCL,OVR ; ; ; SYSTEM MACRO DEFINITIONS ; ; ; .MCALL QIOW$S ; ; ; DATA ; ; ; BCOUNT: .BLKW 1 FDATE: .BLKW 3 OBUF: .BLKB 80. ARGBLK: .BLKW 20. .NLIST BEX .ENABL LC TITLE: .ASCIZ /%FDirectory Mag Tape Unit %D%N%10S%Y%2N/ .DSABL LC PGM: .ASCIZ /%5S%2R.%R%5S%D. %Y <%B> [%B,%B]%N/ ERM1: .ASCII /READ ERROR/ ERM1S =<.-ERM1> .EVEN ERM2: .ASCII /ERROR WHEN SPACIING FILES/ ERM2S =<.-ERM2> .EVEN .LIST BEX .PSECT ; ; ; MONTH TABLE ; ; ; TABLE: .WORD 0.,31.,28.,31.,30.,31.,30.,31.,31.,30.,31.,30. ; ; ; PROGRAM PROPER ; ; ; DIRECT::CALL $SAVAL ;SAVE REGISTERS MOV #INPFDB,R5 ;INPUT FDB TO R5 DIRTTL: MOV #ARGBLK,R2 ;R2 POINTS TO ARGUEMENT BLOCK MOV F.FNB+N.UNITS(R5),(R2)+ ;UNIT NUMBER TO R2 MOV DATE,(R2)+ ;DATE TO R2 MOV DATE+2,(R2)+ MOV DATE+4,(R2)+ MOV #OBUF,R0 MOV #TITLE,R1 MOV #ARGBLK,R2 CALL $EDMSG QIOW$S #IO.WVB,#TTYLUN,,,,,<#OBUF,R1,#0> MOV F.LUN(R5),R4 MOV F.BKST(R5),R3 READ: QIOW$S #IO.RLB,R4,R4,,R3,,<#FLABL,#BIMSIZ> CMPB #IS.SUC,(R3) ;WAS READ A SUCCESS BEQ CHKFL ;YES CHECK FOR FILE LABEL CMPB #IE.EOF,(R3) ;IS IT EOF BNE ERROR ;NO IT'S AN ERROR JMP RSTART ;FINISHED GO DETACH DEVICES CHKFL: CMPB #14.,2(R3) ;IS IT A FILE LABEL BNE ERROR ;NO ERROR CLR BCOUNT SKPFL: QIOW$S #IO.SPB,R4,R4,,R3,,<#1> ;SKIP 1 BLOCK CMPB #IS.SUC,(R3) ;WAS IT A SUCCESS BEQ INCBLK ;GO GET BLOCK COUNT CMPB #IE.EOF,(R3) ;ARE WE AT END OF FILE BNE CHKEOV ;NO CHECK FOR END OF VOLUME BR PROCES ;GO WRITE FILENAME INCBLK: INC BCOUNT JMP SKPFL CHKEOV: CMPB #IE.EOV,(R3) ;AT END OF VOLUME BNE SKPERR ;NO ERROR JMP RSTART ;FINISHED ERROR: QIOW$S #IO.WVB,#TTYLUN,,,,,<#ERM1,#ERM1S,#60> JMP RSTART SKPERR: QIOW$S #IO.WVB,#TTYLUN,,,,,<#ERM2,#ERM2S,#60> JMP RSTART PROCES: MOV FLABL+10.,R0 ;POINT TO DATE MOV #1000.,R1 CALL $DIV ADD #70.,R0 ;USE 1970 AS BASIS FOR YEARS BIT #3,R0 ;IS IT LEAP YEAR BNE NTLPYR ;NO INC TABLE+4 ;YES, ADD A DAY TO FEB NTLPYR: MOV R0,FDATE ;SAVE YEAR MOV #TABLE,R2 ;POINT TO TABLE MOV #1,FDATE+2 MOV #12.,R0 ;SET R2 WITH NUMBER OF MONTHS 1$: SUB (R2)+,R1 CMP R1,(R2) BLE FOUND ;FOUND THE MONTH INC FDATE+2 DEC R0 BGT 1$ FOUND: MOV R1,FDATE+4 ;CONVERTED DATE IS COMPLETE ENTRYS: MOV #ARGBLK,R2 MOV FLABL,(R2)+ MOV FLABL+2,(R2)+ MOV FLABL+4,(R2)+ MOV BCOUNT,(R2)+ MOV FDATE,(R2)+ ;MOVE DATE MOV FDATE+2,(R2)+ MOV FDATE+4,(R2)+ MOV #FLABL+8.,(R2)+ MOV #FLABL+6.,(R2)+ ; MOV #FLABL+7.,(R2)+ MOV #OBUF,R0 MOV #PGM,R1 MOV #ARGBLK,R2 CALL $EDMSG QIOW$S #IO.WVB,#TTYLUN,,,,,<#OBUF,R1,#0> JMP READ .END