þþ£èX;SAVE #D2:DUPCOPY.M65òAŠCOPY FILESAü$X; **** COPY FILE ROUTINE ****X;X;„CPMG ACOPY--FROM, TO?A=‚CR$ ‚OE A’OPTION NOT ALLOWEDA=‚CRLX;VX;`X;jX;tX;~ †WCFLAGˆ †WCSKP1’ †WCSKP2œ †WCBUFL¦…WCBUF†WCBUFL°†WCOPYM AŒ COPYING---Aº†WCBUF2 AƒDN:AĆWCBUFLÎ"†CPYFIL „CPMG;;COPY FILE PROMPTØ$ †GETIC1;;GET SOURCE DEVICE, ETC.âQƒPTRì P„SAVXö!QƒPAR;;GET 1ST CHAR. OF DEVICER> D;;TEST IF IT IS THE DISK 3H†JMPNWC;;BR IF NOT THE DISK (THEN USE OLD CODE)"$>;;LOOK AT SOURCE FILE SPEC.- †LOOKWC;;LOOK FOR WILDCARDS IN FILE SPEC.(3F†CPYFL1;;BRANCH IF WILDCARDS USED IN DISK SPEC.2†JMPNWC!…NOTWC;;USE OLD CODE<†CPYFL1Q>€FX;PX;Z9†WCINITP†WCFLAG;;'WLDCARD' MODE (COPY-FILE OR DUP-FILdQ>n P†WCSKP1xX;‚†WCOPYLQ>Œ P†WCSKP2–$>;;OPEN DIRECTORY Q>ª P…ICAX19´ Q>„OPEN¾ P…ICCOM9È Q>4ƒPARÒ P…ICBAL9Ü Q>5ƒPARæ P…ICBAH9ð …CIOCLúX;X;#†WCOPYRQ>†GETREC;;READ DIRECTORY P…ICCOM9" Q>†WCBUFL, P…ICBLL96Q>@ P…ICBLH9J Q>4…WCBUFT P…ICBAL9^ Q>5…WCBUFh P…ICBAH9r …CIOCL|X;†3Q…WCBUF;;IF 1ST CHAR. OF DIR READ IS A #-IT IS TR> 0š D…WCGOT¤R> :® E…WCGOT¸X;Â3Q>…CLOSE;;ALL DONE -- NORM EXIT OF WILDCARD COPYÌ P…ICCOM9Ö …CIOCLà !†MENUSLêX;ôX;þ9…WCGOTQ†WCSKP1;;IF ALREADY COPIED OR SKIPPED THIS FILE R†WCSKP2 F…SKIP1X;& #†WCSKP20 H†WCOPYR:X;D…SKIP1#†WCSKP1NX;X&Q>…CLOSE;;CLOSE DIRECTORY READ FILEb P…ICCOM9l …CIOCLvX;€X;Š %>;;DON'T COPY .SYS FILES”†SYSLOPQ…WCBUF 8ž R†DOTSYS8¨ H…NOSYS²1¼ I†SYSLOPÆ G†WCOPYLÐX;Ú†DOTSYS AƒSYSAäX;î'…NOSYS%> 1;;CALC SOURCE DRIVE NUMBERø QƒPARR> :  F†WCGOT1? †WCGOT1'†WCBUF2*X;4X;>+$>;;COMPRESS SPACES, ADD ':', ADD 'CR'H%>RX;\†COMPR1Q…WCBUF9f R>…SPACEp F†COMPR2z P†WCBUF28„3ŽX;˜ †COMPR22¢(> ¬ H†COMPR1¶X;À Q…WCBUF9Ê R>…SPACEÔ F†COMPR5ÞQ> .è P†WCBUF28ò3ü†COMPR3Q…WCBUF9 R>…SPACE F†COMPR4 P†WCBUF28$ 3. †COMPR428 (> B H†COMPR3L X;V †COMPR5Q>‚CR` P†WCBUF28j X;t X;~ 5Q>4†WCOPYM;;PRINT 'COPYING---DEV:FILENAME.EXT' MSGˆ $>5†WCOPYM’ †DSPLINœ X;¦ *†WCFLAG° 2J…WCOPY;;BR TO MIDDLE OF DUP FILE ROUTINE IF DUº X;Ä /$>;;SET UP BUFR ADDR TO PNT TO WLDCARD FILÎ Q>4†WCBUF2Ø P…ICBAL9â Q>5†WCBUF2ì P…ICBAH9ö !†WCDUPS X; #…WCOPY †USEPGM;;SET BUFFER SIZES $>;;OPEN COPY SOURCE FILE Q>„OPEN( P…ICCOM92 Q>< P…ICAX19F Q>4†WCBUF2P P…ICBAL9Z Q>5†WCBUF2d P…ICBAH9n &„CSRCx …CIOCL‚ X;Œ $> – % …PIOCB;;GET COPY DESTINATION FILE  0QƒPTR;;SAVE PTR,IPTR- MIGHT REPET GETTING 2NDª ƒMES´ 5¾ Q„IPTRÈ 5Ò % †GETFIL;;GET 2ND FILE NAME TO PARÜ 7;;RECOVER IPTR,PTRæ P„IPTRð 7ú PƒPTR $„SAVX QƒPAR9 R> D" F†WCOPY0, 3!„PDES;;JMP TO OLD CPY-FILE CODE IF NOT DSK DEST6 X;@ -†WCOPY0%> 1;;CALCULATE DESTINATION DRIVE #J QƒPAR9T R> :^ F†WCOPY1h X;r ?| †WCOPY1)†WCBUF2† H†WCOPY2 3 …CLOSX;;CANT COPY TO SAME DRVE NMBR - ERR & EXIš X;¤ !„ODMS® X;¸ X; †WCOPY2$> Ì .'†WCBUF2;;CHANGE FILESPEC TO DESTINATIONÖ Q>4†WCBUF2à P…ICBAL9ê Q>5†WCBUF2ô P…ICBAH9þ -!†OPDES1;;CONTINUE INTO OLD COPY-FILE CODE X; X; …NOTWC & $> ;;IOCB 30 …PIOCB: †GETFIL;;GET SECOND FILENAMED X;N 0X; MAKE SURE DESTINATION IS NOT DOS.SYSX X;b ($„SAVX;;ENTRY-INDEX TO DEST FILE SPECl ' †TSTDOS;;WON'T RETURN IF IS DOS.SYSv X;€ $„SAVXŠ †LOOKWC” 2H†NWCIND;;BRANCH IF NO WILDCARDS IN DESTINATIONž Q>4ƒNWA¨ $>5ƒNWA² †DSPLIN¼ !†MENUSLÆ 4ƒNWA A¥WILD CARDS NOT ALLOWED IN DESTINATIONA=‚CRî X;ø †NWCIND   „PERX;;IF PARAM ERRS, EXIT 4 †USEPGM;;ASK USR IF CAN USE PGM AREA OR DATA BFR „PSRC QƒPAR;;GET 1ST LETR OF PARAM* R> K4 4F„ODMS;;K:GETS 'OPTION DOESNT MAKE SENSE' FOR NOW> R> CH 6F„ODMS;;C: GETS 'OPTION DOESNOT MAKE SENSE' FOR NOWR R> E;;E: AS SOURCE IS SPECIAL\ 'H…OPSRC;;IF NO THEN OPEN SOURCE FILEf $>p &„CSRCz !„PDES„ …OPSRCR> SŽ -F„ODMS;;S: AS SOURCE GETS O.D.M.S. FOR NOW˜ X;¢ X; OPEN SOURCE FILE¬ X;¶ $>À Q>„OPENÊ P…ICCOM9Ô Q>;;OPEN INÞ P…ICAX19è &„CSRC! …CIOCL;;OPEN SOURCE FILE HEREX;)X; READY FOR OPEN OF DESTINATION$X;.„PDES$„SAVX8 QƒPAR9BX;LR> K;;IS DEST KEYBOARD?V F„ODMS;;YES, THEN CAN'T DO IT`X;jR> E;;CHECK FOR SPECIAL CASEtH…OPDES;;IF NOT~:…PDES1Q>;;SPECIAL CASE - DONT OPEN, USE EXISTING IOCBˆ P„CDES’ !…DOCPYœ„ODMSQ>4‚OE¦!$>5‚OE;;SAY OPTION NOT ALLOWED° †DSPLINº …CLOSX;;CLOSE IOCB 1 & 2Ä !†MENUSLÎX;Ø …OPDESR> Câ6F„ODMS;;C: GETS 'OPTION DOESNOT MAKE SENSE' FOR NOWì$ƒOPT;;GET 2ND FILE OPTIONöX;(> A;;APPEND TO DISK FILE  H†OPDES1R> D H„ODMS(Q> 2 H†OPDES3<†OPDES1Q>F†OPDES3$> PP…ICAX19;;OPEN TYPE OUTZ Q>„OPENdP…ICCOM9;OPENn &„CDESx …CIOCL‚Q>Œ P…ICAX29–X; X;COPY FROM CSRC TO CDESªX;´…DOCPYQ>†GETCHR¾ ƒGC1$„CSRCÈ %„CDESÒ P…ICCOM9Ü Q>†PUTCHRæ P…ICCOM8ð'Q†BUFADR;;ADDRESS OF BUFFER - EITHERú3P…ICBAL9;;PGM AREA (MEMLO) OR DATA BUFFER (DBUF) P…ICBAL8'Q†BUFADR;;BUFADR IN LSB,MSB ORDER P…ICBAH9" P…ICBAH8,…CLOOP$„CSRC6'Q†BUFLEN;;LENGTH OF BUFFER ADDRESSED@P…ICBLL9;;BY BUFADRJ1Q†BUFLEN;;BOTH BUFADR & BUFLEN ARE ASSIGNEDT!P…ICBLH9;;IN SUBROUTINE USEPGM^ ƒCIO;;READ FROM INPUTh '…SSTATr $„CDES| %„CSRC† Q…ICBLL8 P…ICBLL9š Q…ICBLH8¤ P…ICBLH9®&L…ICBLL8;;IF SOURCE FILE LENGTH = 0¸F„CKRS;;DON'T DO WRITEÂ! …CIOCL;;WRITE, ABORT IF ERRORÌ/„CKRSQ…SSTAT;;GET READ OPERATION STATUS BACKÖ$I…CLOOP;;IF OK, GO READ SOME MOREàR>ˆ;;EOF STATUSê F„CLOCô!…CIOER;;IF NOT, ABORTþ„CLOC$„CSRCFƒDU4;;IF E:, DONT CLOSEX;X;CLOSE SOURCE FILE&X;0 Q>…CLOSE: P…ICCOM9D ƒCION ƒDU4$„CDESXFƒDU3;;IF DES=E:b Q>…CLOSEl P…ICCOM9v ƒCIO€ ƒDU3$„CDESŠHƒDU6”Q>4„DDSKž$>5„DDSK ¨5 ‡PRNTMSG;;PRNT A CR BEFOR SELECT OR WLDCARD PRMPT² ƒDU6 ¼X;Æ *†WCFLAGÐIƒDU5Ú*!†WCOPYL;;BRANCH BACK TO WILD CARD LOOPäƒDU5!†MENUSL