10 GOTO 375 15 GRAPHICS K0:? "POLYCOPY - ATARI v 2.0" 20 ? "Space for ";INT(BUFF/125);" sectors":? :IP=-K1 25 GOSUB 250:IF IP=DSN THEN 40 30 IF IPYES THEN 235 45 IP=K0:OP=K0:SPLIT=HI:APND=HI:GOTO 55 50 ? :GOSUB 325 55 ADDR=ADR(Y$):ROOM=BUFF 60 IF IP>MAX THEN IP=IP-K1:GOSUB 145:GOTO 240 65 Y=IP:GOSUB 230:TRAP 80:OPEN #K1,K4,K0,DSN$:TRAP TOFF 70 IF SPLIT<>IP THEN ? "LOADING ";DSN$;:GOTO 100 75 TRAP 80:POINT #K1,SEC,BYTE:TRAP TOFF:APND=IP:? "Contin'g ";DSN$;:GOTO 100 80 TRAP TOFF:Z=PEEK(195):CLOSE #K1:IF Z<>170 THEN 110 85 ? :? DSN$;" not found,":? "Want to try another disk?"; 90 GOSUB 350:? :IF Z=YES THEN ? "Insert new disk";:GOSUB 330:GOTO 65 95 X(IP,K0)=K0:IP=IP+K1:GOTO 60 100 X(IP,K0)=ADDR 105 SIZE=USR(CIO,K1,7,ADDR,ROOM):Z=PEEK(851):IF Z<128 OR Z=136 THEN 115 110 CLOSE #K1:? :GOSUB 370:GOTO 95 115 ? " size = ";SIZE;:X(IP,K1)=SIZE:IF Z=136 THEN 125 120 ? "/";:NOTE #K1,SEC,BYTE:SPLIT=IP 125 ? :CLOSE #K1 130 ADDR=ADDR+SIZE:ROOM=ROOM-SIZE:IF ROOM>K0 THEN IP=IP+K1:GOTO 60 135 GOSUB 145:IF SPLIT<>IP THEN IP=IP+K1:IF IP>MAX THEN 60 140 GOTO 50 145 IF ROOM=BUFF THEN RETURN 150 ? :? "Insert destination disk";:GOSUB 330 155 ADDR=X(OP,K0):SIZE=X(OP,K1):IF ADDR=K0 THEN 220 160 Y=OP:GOSUB 230:Z=8:IF APND=OP THEN Z=Z+K1 165 TRAP 185:OPEN #K2,Z,K0,DSN$:TRAP TOFF:IF APND=OP THEN ? "Append'g ";:GOTO 175 170 ? "Writing "; 175 ? DSN$;" size = ";SIZE 180 Z=USR(CIO,K2,11,ADDR,SIZE) 185 Z=PEEK(867) 190 TRAP 190:CLOSE #K2:TRAP TOFF:IF Z<128 THEN 220 195 IF Z<>162 THEN GOSUB 370:GOTO 220 200 ? "Disk full, try another?";:GOSUB 335:IF Z<>YES THEN 235 205 TRAP 210:XIO 33,#K2,K0,K0,DSN$ 210 TRAP TOFF:IF APND<>OP THEN ? "Insert new disk";:GOSUB 330:GOTO 155 215 IP=OP:SPLIT=HI:APND=HI:POP :GOTO 50 220 IF OP