.TITLE ARCDEF - Archive Definition Program .ENABL LC ; Copyright (c) 1981 by ; Berez Associates, 64 Jacqueline Road, Waltham, MA 02154 ; May be used freely, but not sold ; ; To use: ; LOAD appropriate handlers. ; RUN ARCDEF ; *'file'=ddn: (dd is archive handler name) ; *^C to end. ; You must redefine archive files after a BOOT. ; ; ; .MCALL .EXIT,.DSTAT,.CSISPC,.LOOKUP,.SAVEST,.SPFUN .MCALL .PRINT,.SERR,.PURGE AREA: .BLKW 6 DEFEXT: .RAD50 /ARCARC / ;DEFAULT EXTENSION = .ARC OUTSPC: .BLKW 39. OUTFIL= OUTSPC+36 ;ARCHIVE DEVICE TO BE USED (ARn:) INFIL= OUTSPC ;FILE CONTAINING ARCHIVE CBLK: .BLKW 5 BUF: .BLKW 4 .PSECT STRING FERR: .ASCII /?ARCDEF-F-/<200> .PSECT CODE .MACRO ERRTST STR,TEST=CC,?LOC .SAVE .PSECT STRING $$$= . .ASCIZ \STR\ .RESTORE B'TEST LOC JSR R5,ERROR .WORD $$$ LOC: .ENDM ERRTST START: MOV SP,R1 .SERR ;TRAP VARIOUS DEVICE ERRORS RESTRT: .CSISPC #OUTSPC,#DEFEXT ;GET COMMAND (realdev:arcfile=arcdev:) ERRTST MOV R1,SP ;FLUSH ANY SWITCHES CLR OUTFIL+2 ;DO NON-FILE-STRUCTURED OPEN .LOOKUP #AREA,#1,#OUTFIL ;OPEN CHANNEL TO ARCHIVE DEVICE ERRTST .DSTAT #BUF,#INFIL ;GET REAL DEVICE INFORMATION ERRTST MOV BUF+4,BUF ;HANDLER ENTRY ADDRESS ERRTST ,NE .LOOKUP #AREA,#2,#INFIL ;OPEN ARCHIVE FILE ERRTST .SAVEST #AREA,#2,#CBLK ;GET CHANNEL INFORMATION ERRTST <.SAVESTATUS failed> MOV CBLK+2,BUF+4 ;STARTING BLOCK NUMBER MOV CBLK+4,BUF+6 ;FILE LENGTH CMP BUF+6,#20 ;MAKE SURE FILE IS LARGE ENOUGH ERRTST ,HIS MOVB CBLK+11,BUF+2 ;DEVICE UNIT NUMBER CLRB BUF+3 ;CLEAR UNUSED BYTE .SPFUN #AREA,#1,#300,#BUF ;FINALLY, PASS INFO TO ARCHIVE HANDLER ERRTST <.SPFUN failed> .PURGE #1 ;FLUSH CHANNELS BR RESTRT ;RESTART FOR NEXT COMMAND ERROR: .PRINT #FERR .PRINT (R5)+ .EXIT .END START