10 REM FILE COPIER›20 REM by Thomas J. Andrews›30 REM COPYRIGHT 1992 THOMAS ANDREWS›40 REM Demonstration of memory display technique›50 REM ›90 REM DISABLE BREAK KEY›100 DPOKE (566),DPEEK(566)+12›105 REM MAKE ROOM FOR CHARACTER SET›110 OTOP=PEEK(106):NTOP=OTOP-4›120 IF NTOP/2<>INT(NTOP/2) THEN NTOP=NTOP-1›130 POKE 106,NTOP:GRAPHICS 0:REM 400/800 USERS WILL WANT POKE 106,NTOP-4›140 REM REORDER CHARACTER SET INTO ATASCII ORDER›145 CHBAS=PEEK(756):CHS=CHBAS*256:NCHS=NTOP*256›150 MOVE CHS,NCHS+256,512›160 MOVE CHS+512,NCHS,256›170 MOVE CHS+768,NCHS+768,256›190 REM CREATE FILENAME BUFFERS›200 DIM FIN$(20),FOUT$(20)›210 REM CHECK FOR DISPLAY BUFFER PLACEMENT›220 DMY=0:BADR=ADR(FOUT$)+20›230 I=INT((BADR+960)/4096)-INT(BADR/4096)›240 IF I>0 THEN DMY=INT((BADR+960)/4096)*4096-BADR+1›250 IF BADR+DMY<32767 AND BADR+960+DMY>16384 THEN DMY=32768-BADR›260 IF DMY>0 THEN DIM DMY$(DMY)›270 REM DIMENSION DISPLAY BUFFER›280 DIM DISP$(960)›290 REM GET FILE NAMES›300 TRAP 300:? :INPUT "DEV:FILENAME FOR SOURCE";FIN$›310 IF FIN$(1,1)="S" OR FIN$(1,1)="E" THEN ? "CAN'T USE IT":GOTO 300›320 TRAP 320:INPUT "DEV:FILENAME FOR DESTINATION";FOUT$›330 IF FOUT$(1,1)="S" OR FOUT$(1,1)="E" THEN ? "CAN'T USE IT":GOTO 320›340 IF FIN$=FOUT$ THEN ? "NO DUPLICATES!":GOTO 300›350 REM OPEN FILES›360 GRAPHICS 0:POSITION 2,7:? "PREPARE SOURCE AND DESTINATION DISK(S)"›370 ? "AND DRIVE(S), THEN PRESS START"›380 IF PEEK(53279)<>6 THEN 380›385 DISP$=" ":DISP$(960)=" ":DISP$(2)=DISP$›390 TRAP 400:CLOSE :OPEN #1,4,0,FIN$:OPEN #2,8,0,FOUT$:GOTO 420›400 ? "ERROR #";ERR:PAUSE 300:GOTO 300›410 REM SWITCH TO WORK DISPLAY›420 GRAPHICS 0:POKE 559,0:POKE 756,NTOP›430 DL=DPEEK(560):SMEM=DPEEK(DL+4):DPOKE DL+4,ADR(DISP$):POKE 559,34›440 REM COPY FILE›450 TRAP 500›460 BGET #1,ADR(DISP$),960›470 BPUT #2,ADR(DISP$),960›480 DISP$=" ":DISP$(960)=" ":DISP$(2)=DISP$›490 GOTO 460›500 IF ERR<>136 THEN 610›510 LN=DPEEK(856):BPUT #2,ADR(DISP$),LN›520 CLOSE ›530 REM GO BACK TO NORMAL DISPLAY›540 POKE 559,0:DPOKE DL+4,SMEM:POKE 756,CHBAS:POKE 559,34›550 REM CHECK ABOUT ANOTHER FILE›560 INPUT "COPY ANOTHER FILE? (Y/N)",DISP$›570 IF DISP$(1,1)="Y" OR DISP$(1,1)="y" THEN 300›580 REM NO?-FINISH UP›590 POKE 106,OTOP:GRAPHICS 0:DPOKE 566,DPEEK(566)-12:END ›600 REM ERROR HANDLER›610 POKE 559,0:POKE 756,CHBAS:GRAPHICS 0:POKE 559,34›620 CLOSE :? "ERROR #";ERR:? ›630 ? "PRESS START"›640 IF PEEK(53279)<>6 THEN 640›650 GRAPHICS 0:GOTO 560›