ASMB,R,L,C HED (FMGR) CO..: COPY COMMAND * NAME: CO.. * SOURCE: 92070-18015 * RELOC: 92070-16015 * PGMR: E.D.B. * * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * * *************************************************************** * NAM CO..,7 92070-1X015 REV.2014 800409 * ENT CO.. * EXT IF.ER, CK.NM, CLR.C, DR.CT, CR.LU EXT F.SET, FM.ER, MSC. EXT I.BUF, O.BUF, N.OPL, G0.. EXT CREAT, PURGE, COPYF EXT .ENTR, .MVW, IFBRK SUP SKP * * DESCRIPTION * * THIS IS THE COPY COMMAND OF THE RTE-L FMGR * SEE ERS FOR DETAILS. * * PROCESSES: * * CO,SLU,DLU,OPT,FIRST,LAST,MSC * * WHERE: * * SLU IS A NAMR OR CRN OF THE SOURCE CARTRIDGE * * DLU IS THE DESTINATION CARTRIDGE * * OPT IS THE OPTIONS * * FIRST IS THE FIRST FILE TO BE TRANSFERRED (OPTIONAL) * * LAST IS THE LAST FILE TO BE TRANSFERRED (OPTIONAL) * * MSC IS THE MASTER SECURITY CODE (OPTIONAL) * * POSSIBLE ERRORS: * * -14 DIRECTORY FULL * -33 CARTRIDGE OUT OF ROOM * 21 ILLEGAL LU * 22 COPY TERMINATED * 51 BAD MASTER SECURITY CODE * 56 BAD PARAMETER * * COPY OPTIONS: * * C CLEAR DESTINATION CARTRIDGE BEFORE COPY * (REQUIRES MSC) * D DUMP FILE EVEN IF EXISTING * E ELIMINATE EXTENTS * P PURGE SOURCE FILE AFTER COPY * (MAY REQUIRE MSC) * V VERIFY COPY SKP * * ENTRY * N NOP LIST NOP ER NOP * CO.. NOP ENTRY POINT JSB .ENTR DEF N * * PROCESS REQUEST * CLA ZERO OUT SOME VARIABLES STA CLRSW STA DMPSW STA ELISW STA PURSW STA VERSW STA MORE * * PARSE FIRST PARAMETER (SOURCE) * LDA LIST,I GET TYPE OF FIRST PARAMETER ISZ LIST CPA .3 IF ASCII, JMP ASCII THEN GO SET MASK * JSB F.SET SET UP DEFAULT MASK DEF *+2 DEF DFALT * LDA LIST,I GET SOURCE CRN JMP CO..1 AND CONTINUE * ASCII JSB F.SET SET UP MASK DEF *+2 DEF LIST,I * LDA N.OPL+1 GET CRN FROM SUBPARAMETER BUFFER * CO..1 STA SLU SAVE SOURCE CARTRIDGE ID JSB CR.LU TEST FOR LEGAL ID DEF *+2 DEF SLU * SZA,RSS IF NOT LEGAL ID, JMP ER21 THEN TAKE ERROR RETURN * CMA,INA NEGATE STA SLU AND SAVE SKP * * PARSE SECOND PARAMETER (DESTINATION) * LDB LIST GET LIST ADDRESS ADB .3 BUMP TO DESTINATION ID LDA B,I GET TYPE CPA .3 IF ASCII JMP ER56 THEN TAKE ERROR EXIT * INB BUMP TO ID LDA B,I GET IT STA DLU SAVE IT * JSB CR.LU TEST FOR LEGAL ID DEF *+2 DEF DLU * SZA,RSS IF NOT LEGAL ID, JMP ER21 THEN TAKE ERROR EXIT * CMA,INA NEGATE STA DLU AND SAVE CPA SLU IF SAME AS SOURCE LU, JMP ER21 THEN TAKE ERROR EXIT SKP * * PARSE THIRD PARAMETER (OPTIONS) * LDB LIST GET LIST ADDRESS ADB .7 BUMP TO OPTIONS LDA B,I GET TYPE SZA,RSS IF NOT SUPPLIED, JMP CONT THEN CONTINUE * INB BUMP TO INFO CLE,ELB CONVERT INTO BYTE COUNTER LDA N6 GET LOOP COUNTER STA COUNT SAVE * PARSE CLE,ERB GET ADDRESS AND SET E TO BYTE LDA B,I GET 2 CHARACTERS ELB,SLB IF LOW BYTE, ALF,ALF THEN SHIFT TO HIGH BYTE AND NB400 ISOLATE HIGH BYTE ADA .32 PUT SPACE INTO LOW BYTE * CPA .SP IF SPACE, JMP PARS1 THEN IGNORE * CPA .C IF OPTION C, JMP SET.C THEN SET CLEAR SWITCH * CPA .D IF OPTION D, JMP SET.D THEN SET DUMP SWITCH * CPA .E IF OPTION E, JMP SET.E THEN SET ELIMINATE SWITCH * CPA .P IF OPTION P, JMP SET.P THEN SET PURGE SWITCH * CPA .V IF OPTION V, JMP SET.V THEN SET VERIFY SWITCH * JMP ER56 ELSE TAKE ERROR EXIT * SET.C ISZ CLRSW SET CLEAR SWITCH JMP PARS1 AND CONTINUE * SET.D ISZ DMPSW SET DUMP SWITCH JMP PARS1 AND CONTINUE * SET.E ISZ ELISW SET ELIMINATE SWITCH JMP PARS1 AND CONTINUE * SET.P ISZ PURSW SET PURGE SWITCH JMP PARS1 AND CONTINUE * SET.V ISZ VERSW SET VERIFY SWITCH * PARS1 INB INCREMENT BYTE COUNT ISZ COUNT IF NOT DONE, JMP PARSE THEN CONTINUE PARSE SKP * * PARSE FOURTH PARAMETER (FIRST FILE) * CONT LDB LIST GET LIST ADDRESS ADB .11 BUMP TO FOURTH PARAMETER * LDA B,I GET THE TYPE CPA .1 IF NUMERIC, JMP ER56 THEN INDICATE BAD PARAMETER * INB BUMP TO 2 CHARS LDA B,I GET THEM STA FIRST AND SAVE THEM * INB BUMP TO NEXT 4 CHARS DLD B,I GET THEM DST FIRST+1 AND SAVE THEM * * PARSE FIFTH PARAMETER (LAST FILE) * LDB LIST GET LIST ADDRESS ADB .15 BUMP TO FIFTH PARAMETER * LDA B,I GET THE TYPE CPA .1 IF NUMERIC, JMP ER56 THEN INDICATE BAD PARAMETER * INB BUMP TO 2 CHARS LDA B,I GET THEM STA LAST AND SAVE THEM * INB BUMP TO NEXT 2 CHARS DLD B,I GET THEM DST LAST+1 AND SAVE THEM SKP * * PARSE SIXTH PARAMETER (MSC) * LDB LIST GET LIST ADDRESS ADB .19 BUMP TO SIXTH PARAMETER * LDA B,I GET THE TYPE SZA,RSS IF NOT PRESENT, JMP BDMSC THEN BAD MASTER SECURITY CODE * STB MSECU SAVE P.RAM ADDRESS FOR MSC * JSB MSC. TEST PASSED MASTER SECURITY CODE DEF *+2 DEF MSECU,I * SZA,RSS IF BAD SECURITY CODE, JMP ER51 THEN TAKE ERROR EXIT * BDMSC STA MSECU SAVE STATUS SKP * * CLEAR DESTINATION IF REQUESTED * LDA CLRSW GET CLEAR SWITCH SZA,RSS IF NOT REQUESTED, JMP COPY6 THEN CONTINUE * LDA MSECU GET MSC STATUS SZA,RSS IF NOT CORRECT MSC, JMP ER51 THEN TAKE ERROR EXIT * JSB CLR.C CLEAR DESTINATION DEF *+2 DEF DLU * CPA .60 IF CLEAR NOT PERMITTED, JMP EXIT THEN TAKE GOOD EXIT * SZA IF ANY OTHER ERROR, JMP EREX THEN TAKE ERROR EXIT SKP * * START TRANSFER LOOP * COPY6 JSB DR.CT READ IN PSEUDO DIRECTORY DEF *+8 DEF SLU DEF NAME DEF DIRMX DEF DIRLN DEF MORE DEF FIRST DEF LAST * LDA DIRLN GET DIRECTORY LENGTH SZA,RSS IF EMPTY, JMP GTMOR THEN GET MORE * CLA SET COUNTER TO ZERO STA CUR AND SAVE * COPY1 LDA CUR CALCULATE DIRECTORY OFFSET ALF,ARS MULTIPLY BY 8 ADA ANAME ADD TO BASE ADDRESS * LDB AFNAM GET ADDRESS OF LOCAL COPY JSB .MVW MOVE 8 WORDS DEF .8 NOP (FOR COMPATIBILITY) * JSB CK.NM CHECK IF FILE IS BOOTEX DEF *+3 DEF FNAME DEF "BOOT * SEZ,RSS IF FILE WAS "BOOTEX", JMP IGNOR THEN IGNORE IT * LDA FTYPE GET FILE TYPE SZA,RSS IF NON-DISC FILE, JMP IGNOR THEN IGNORE IT * JSB FM.ER PRINT OUT FILE NAME DEF *+4 DEF .1 DEF FNAME DEF .3 * JSB IFBRK TEST FOR BREAK DEF *+1 SSA,RSS IF NO BREAK, JMP COPY2 THEN CONTINUE * LDA .22 INDICATE COPY TERMINATED JMP ABEND * COPY2 LDA ELISW GET ELIMINATE-SWITCH SZA IF SET, JMP ELIM THEN CALCULATE NEW SIZE * LDA FSIZE GET FILE SIZE (IN BLOCKS) JMP CO..3 * ELIM LDA FEXTS GET NUMBER OF EXTENTS INA ADD ONE MPY FSIZE MULTIPLY BY FILE SIZE (IN BLOCKS) * CO..3 STA SZ SAVE FILE SIZE FOR CREAT LDA FRECL GET FILE RECORD LENGTH STA SZ+1 SAVE FOR CREAT SKP * * CREATE DESTINATION FILE * CRIT JSB CREAT TRY CREATING DESTINATION FILE DEF *+8 DEF O.BUF DEF IERR DEF FNAME DEF SZ DEF FTYPE DEF FSEC USE WILDCARD SECURITY CODE DEF DLU * CPA N2 IF DUPLICATE FILE ERROR, JMP DMPIT THEN TEST FOR DUMP-MODE * CPA N33 IF NOT ENOUGH ROOM, JMP ABEND THEN ABEND * CPA N14 IF DIRECTORY FULL, JMP ABEND THEN ABEND * COPY7 JSB IF.ER IF ANY OTHER ERROR, DEF *+3 THEN PRINT MESSAGE DEF IERR DEF IGNOR AND IGNORE JMP CPYIT OTHERWISE GO COPY FILE * * PURGE DESTINATION FILE (IF DUMP MODE) * DMPIT LDB DMPSW GET DUMP SWITCH SZB,RSS IF NOT DUMP-MODE, JMP COPY7 THEN PRINT MESSAGE * JSB PURGE TRY TO PURGE OLD DESTINATION FILE DEF *+6 DEF O.BUF DEF IERR DEF FNAME DEF FSEC PURGE ONLY IF WILDCARD MATCHES DEF DLU * JSB IF.ER IF ERROR, DEF *+3 THEN PRINT MESSAGE DEF IERR DEF IGNOR AND IGNORE JMP CRIT ELSE GO CREATE IT SKP * * COPY A FILE * CPYIT JSB COPYF USE COPYF ROUTINE DEF *+11 DEF I.BUF DEF IERR DEF FNAME DEF FSEC USE WILDCARD SECURITY CODE DEF SLU DEF O.BUF DEF FNAME DEF FSEC USE WILDCARD SECURITY CODE DEF DLU DEF VERSW * SZA,RSS IF NO ERROR, JMP PRGIT THEN CONTINUE * * PURGE DESTINATION FILE (IF NOT FULLY COPIED) * JSB PURGE TRY TO PURGE DESTINATION FILE DEF *+6 DEF O.BUF DEF SZ USE FOR DUMMY ERROR CODE DEF FNAME DEF FSEC USE WILDCARD SECURITY CODE DEF DLU * LDA IERR GET ERROR CODE AGAIN CPA N33 IF NOT ENOUGH ROOM, JMP ABEND THEN TERMINATE ABNORMALLY * CPA N14 IF DIRECTORY FULL, JMP ABEND THEN TERMINATE ABNORMALLY * CPA N49 IF VERIFY FAILED, JMP ABEND THEN TERMINATE ABNORMALLY * JSB IF.ER IF ANY OTHER ERROR, DEF *+3 THEN PRINT MESSAGE DEF IERR DEF IGNOR AND IGNORE IT SKP * * PURGE SOURCE FILE (IF REQUESTED) * PRGIT LDA PURSW GET PURGE SWITCH SZA,RSS IF NOT REQUESTED, JMP IGNOR THEN IGNORE PURGE REQUEST * LDA MSECU GET MSC STATUS FLAG LDB N.OPL GET PASSED SECURITY CODE SZA,RSS IF NOT CORRECT MSC, STB FSEC THEN OVERRIDE SAVED SECURITY CODE * JSB PURGE TRY TO PURGE SOURCE FILE DEF *+6 DEF I.BUF DEF IERR DEF FNAME DEF FSEC USE WILDCARD OR PASSED SECURITY CODE DEF SLU * JSB IF.ER IF ERROR, DEF *+3 THEN PRINT MESSAGE DEF IERR DEF IGNOR AND IGNORE PURGE REQUEST SKP * * DO ANOTHER FILE * IGNOR LDA CUR GET CURRENT NUMBER INA INCREMENT STA CUR AND SAVE CPA DIRLN IF FINISHED, JMP GTMOR THEN LOOK FOR MORE JMP COPY1 ELSE DO ANOTHER * * TEST FOR MORE FILES * GTMOR LDA MORE GET MORE FLAG SZA IF MORE, JMP COPY6 THEN GO READ IN ANOTHER HANDFUL * * FINISHED WITH FILES WITHOUT ANY ERRORS, * SET 1P TO 0 AND RETURN * CLA SET 1P PARAMETER TO ZERO STA G0..+41 JMP EXIT AND RETURN SKP * * ABNORMAL TERMINATION OF COPY (BY BR, INTERNAL ERROR, VERIFY * OR DESTINATION FULL), ERROR CODE IS IN A-REG, * SET 10G TO CURRENT FILE AND EXIT * ABEND LDB FNAME SET 10G PARAMETER TO CURRENT NAME STB G0..+41 * LDB FNAME+1 STB G0..+42 * LDB FNAME+2 STB G0..+43 JMP EREX SKP * * EXIT * EXIT CLA NO ERROR JMP EREX * ER21 LDA .21 ILLEGAL LU JMP EREX * ER51 LDA .51 BAD MASTER SECURITY CODE JMP EREX * ER56 LDA .56 BAD PARAMETER * EREX STA ER,I SAVE ERROR JMP CO..,I AND RETURN SKP * * STORAGE AREA * .1 DEC 1 .3 DEC 3 .7 DEC 7 .8 DEC 8 .11 DEC 11 .15 DEC 15 .19 DEC 19 .21 DEC 21 .22 DEC 22 .32 DEC 32 .51 DEC 51 .56 DEC 56 .60 DEC 60 * N2 DEC -2 N49 DEC -49 N6 DEC -6 N14 DEC -14 N33 DEC -33 * NB400 OCT -400 * .C ASC 1,C .D ASC 1,D .E ASC 1,E .P ASC 1,P .V ASC 1,V .SP ASC 1, * "BOOT ASC 3,BOOTEX DFALT ASC 3,------ * DIRMX DEC 42 MAX NUMBER OF ENTRIES (LESS 8) IN NAME ARRAY * ANAME DEF NAME AFNAM DEF FNAME * FNAME NOP - NOP ! LOCAL COPY NOP ! OF CURRENT FTYPE NOP ! FILE FEXTS NOP ! ENTRY FSIZE NOP ! FRECL NOP ! FSEC NOP - * COUNT NOP COUNTER CUR NOP COUNTER MORE NOP FLAG FOR MORE FILES IN DIRECTORY * CLRSW NOP CLEAR-SWITCH DMPSW NOP DUMP-SWITCH ELISW NOP ELIMINATE-SWITCH PURSW NOP PURGE-SWITCH VERSW NOP VERIFY-SWITCH MSECU NOP MSC STATUS FLAG * SLU NOP SOURCE LU DLU NOP DESTINATION LU * DIRLN NOP CURRENT LENGTH OF DIRECTORY IERR NOP ERROR RETURN CODE SZ NOP SIZE ARRAY FOR CREATE (AND DUMMY ERROR) NOP * FIRST BSS 3 FIRST FILE TO BE TRANSFERRED LAST BSS 3 LAST FILE TO BE TRANSFERRED * NAME BSS 400 DIRECTORY OF SELECTED FILES * A EQU 0 B EQU 1 * END EQU * * END