BRU TAPE FORMATS ---------------- Although the format of a BRU tape is complex, it is feasable to read such tapes on other than an RSX system. The format is described below, mainly as deduced from dumping parts of a short tape, and thus should not be described as guaranteed. 80 VOL1 Ansi Volume label 512 NOBOOT This volume does not contain a bootable system block, Obeyed if the tape is booted. 80 HDR1 ANSI file label for Backupset named 80 HDR2 ANSI file label 4144 byte max,internal carraige control *TM* 80 BACKUP Backupset label block, identifies disk dumped, date,time 512 BOOT The boot block from the backed up disk, or NOBOOT again 512 HOME The home block from the backed up disk. 80 UFD UFD record for [0,0] ..... Usually there are no directory blocks here, but if files such as RSX11.SYS etc exist in [0,0] directory, blocks listing these appear here 80 UFD UFD record for 1st directory 512*N DIRECT 0..8 directory blocks per buffer, as read from the above directory file. repeat DIRECT until all directory blocks written Repeat UFD/Direct combinations 80 HEAD Block of 80 bytes (20*'HEAD') flags start of file headers 80 UFD Repeat of UFD record for [0,0] ..... Headers for files in [0,0] if any, 80 UFD Repeat of first directory UFD record 512*N HDRS 0..8 File headers of files in the above directory. as read from the disk. repeat HDRS for all blocks in directory. repeat for all above directories. 80 DATA Block of 80 bytes (20*'DATA') flags start of data blocks. 48+512*N DAT Usually 4144 bytes data block. 1..8 data blocks with 48 byte prefix describing data Data blocks repeat for all the above described files, then more directories and headers, then the bodies of more files. Ends with *TM* 80 EOF1 End of file mark for backupset 80 EOF2 *TM* ..................More backupsets *TM* Indicating end of tape. The special format blocks are as follows: UFD blocks. 0 .ASCIZ /UFD/ .BLKW 3 ;Fileid,seqno,relvol#(=0) .BLKW 5 ;Directory filename in rad50 ;and gen#, .RAD50 /000000 DIR/ ;.WORD 1 .BLKW 1 ;directory level[0,0]=0 ;users =1, SCS11 might have 2+ .BLKW 2 ;Size of directory HI,LO .BLKW 1 ;owner uic for directory .BLKW 1 ;protection for directory pad to 80 bytes with nulls. Backupset label 0 .BLKB 12. ;Backupset name .BLKW 1 ;backup volume set #(starts at 1) ;index to reels of multireel tape sets .BLKB 12. ;disk name .BLKW 8. ;GTIM$ 8 word time block ;YR MON DY HR MIN SEC TIC Ticks/sec .BLKW 1 ;Indexfilesize or Max files? .BLKW 2 ;Size of MFD[0,0] .BLKW 2 ;HI,Lo size of orig disk .BLKB 2 ;"DD - Device mnemonic .BLKW 1 ;Index file position .BLKB 7 ;DDMMMYY of dump .BLKB 6 ;HHMMSS of dump .BYTE 0 ;terminator pad to 80 bytes. Directory blocks 16. byte fixed length records, each .BLKW 3 ;Fileid, Fseqno, Relvolno(=0). .BLKW 4 ;Rad50 /FILENAME EXT/ .BLKW 1 ;generation number. A deleted or unused entry being one with the first word, the fileid, set to zero. Data blocks .BLKW 3 ;File-id (1 word) ;1-3 retrieval pointer relating to blocks ;in this data buffer repeat up to a total 0f 8 3 word groups. If less than 8 groups, insert a null word as terminator. Pad to total of 24. words in header. Up to 8 data blocks, as described by retrieval pointers. Note the retrieval pointers are in the format .BYTE hi-disk-lbn .BYTE biased-count ;ie actual -1 .WORD low-disk-lbn ; and relate to the logical blocks on the original disk, not to the file in any way. Recovery of files from a BRU tape. Read UFD records, creating UFDs as you pass. Use the directory entries, buffered, to create the files as you find matching file headers, creating the files with the correct attributes including size. The Fileid/seqno for the new files must be saved, along with the old file-id, and a table of retrieval pointers built relating disk lbns to file vbns. Since there is no guarantee that files will occur as complete units, you must be able to switch to the correct file to write the set of virtual blocks.