Listing of file='KFAM4103' on disk='vmedia/701-2049C.wvd.zip'
# Sector 282, program filename = 'KFAM4103'
0010 REM KFAM4103,VER.02/18/76
0012 COM Q6$64
: DIM X$64,D8$21,E$60,I1$3,O1$3,T$1,Z$8,H$2,L$1
: DIM X1$2,N$8,I$(32)8,D$(4)64
: D8$="310320330350B10B20B30"
: C=0
: PRINT HEX(030A0A0A0A)
: PRINT "DISK COPY AND REORGANIZE"
0640 GOSUB '125("ENTER THE NO. OF THE INPUT PLATTER DEVICE ADDRESS")
: D1=X
: I1$=STR(D8$,X*3-2,3)
: ON D1-1GOTO 703,706,709,712,715,718
: SELECT #1310
: GOTO 770
0703 SELECT #1320
: GOTO 770
0706 SELECT #1330
: GOTO 770
0709 SELECT #1350
: GOTO 770
0712 SELECT #1B10
: GOTO 770
0715 SELECT #1B20
: GOTO 770
0718 SELECT #1B30
0770 GOSUB '125("ENTER THE NO. OF THE OUTPUT PLATTER DEVICE ADDRESS")
: D2=X
: O1$=STR(D8$,X*3-2,3)
: ON D2-1GOTO 833,836,839,842,845,848
: SELECT #2310
: GOTO 900
0833 SELECT #2320
: GOTO 900
0836 SELECT #2330
: GOTO 900
0839 SELECT #2350
: GOTO 900
0842 SELECT #2B10
: GOTO 900
0845 SELECT #2B20
: GOTO 900
0848 SELECT #2B30
0900 IF I1$<>O1$THEN 960
: GOSUB '40("INPUT AND OUTPUT PLATTERS MUST BE DIFFERENT")
: GOTO 640
0960 GOSUB '243("ENTER FILE NAME",8)
: N$=Q6$
: IF N$=" "THEN 1870
: GOSUB '50(N$,1)
: IF X>0THEN 990
: GOSUB '40("FILE NOT FOUND")
: GOTO 960
0990 LIMITS T#1,N$,F0,F9,F1
: L=F9-F0+1
0995 DATA LOAD BA T#1,(F0,X)D$()
: AND (STR(D$(1),1,1),10)
: IF STR(D$(1),1,1)=HEX(00)THEN 1020
: GOSUB '40("PROTECTED PROGRAM")
: GOTO 960
1020 DATA LOAD BA T#2,(0,X)D$()
: X1$=STR(D$(1),1,2)
: GOSUB '41
: S7=X
: X1$=STR(D$(1),3,2)
: GOSUB '41
: S0=X
: X1$=STR(D$(1),5,2)
: GOSUB '41
: S9=X
: S2=S9-S0
: GOSUB '248(5,0,1)
: PRINT "INPUT ";I1$,"OUTPUT ";O1$,"AVAILABLE SPACE ";TAB(48);S2
1160 IF C>0THEN 1200
1170 C=7
: GOSUB '248(7,0,8)
: PRINT "FILE NAME LENGTH SECTORS USED NEW LENGTH"
1200 C=C+1
: IF C>14THEN 1170
: GOSUB '248(C,0,0)
: PRINTUSING 1240,N$,L,F1
1240 %######## ##### #####
1245 IF F1>S2THEN 1845
1260 GOSUB '245("ENTER NUMBER OF SECTORS TO BE COPIED",5,0)
: N1=Q9
: IF N1<F1THEN 1810
: IF N1>S2THEN 1830
: GOSUB '248(C,44,0)
: PRINTUSING 1320,N1
1320 %#####
1340 DATA SAVE DC OPEN T$#2,N1,N$
1360 DATA LOAD BA T#1,(F9,X)D$()
: T$=STR(D$(1),1,1)
: AND (T$,F0)
1420 DATA SAVE BA T$#2,(S0+N1-1,X)D$()
: Z=L-2
: IF N1>LTHEN 1480
: Z=N1-2
1480 FOR Y=0TO Z
1490 DATA LOAD BA T#1,(F0+Y,X)D$()
1500 DATA SAVE BA T$#2,(S0+Y,X)D$()
: NEXT Y
: IF T$=HEX(A0)THEN 1785
: Z$=N$
: XOR (STR(Z$,2),Z$)
: L$=STR(Z$,8,1)
: H$=HEX(0000)
: ADDC(H$,L$)
: ADDC(H$,L$)
: ADDC(H$,L$)
: ADD(STR(H$,1,1),STR(H$,2,1))
: H=VAL(H$)
: H=H-INT(H/S7)*S7
1670 DATA LOAD BA T#2,(H,X)I$()
: GOSUB '42
: IF X>0THEN 1770
: H=0
1710 DATA LOAD BA T#2,(H,X)I$()
: GOSUB '42
: IF X>0THEN 1770
: H=H+1
: IF H<S7THEN 1710
: STOP "DISASTER"
1770 STR(I$(X-1),2,1)=HEX(80)
1780 DATA SAVE BA T$#2,(H,X)I$()
1785 GOSUB '248(5,48,1)
: PRINT S2-N1
: GOTO 960
1810 GOSUB '40("LESS THAN SECTORS USED")
: GOTO 1260
1830 GOSUB '40("GREATER THAN AVAILABLE SPACE")
: GOTO 1260
1845 STOP "NO ROOM TO COPY"
1870 GOSUB '248(0,0,4)
: GOSUB '50("START050",0)
: IF X>0THEN 1890
: PRINT "MOUNT SYSTEM DISK"
: GOSUB '243("KEY RETURN(EXEC) TO RESUME",0)
: GOTO 1870
1890 COM CLEAR Q6$
: LOAD DC T#0,"START050"
1920 DEFFN'40(E$)
: GOSUB '248(3,0,0)
: PRINT E$
: RETURN
3410 DEFFN'50(N$,Z)
3430 DATA LOAD BA T#Z,(0,X)I$()
: X1$=STR(I$(1),1,2)
: GOSUB '41
: S7=X
: Z$=N$
: XOR (STR(Z$,2),Z$)
: L$=STR(Z$,8,1)
: H$=HEX(0000)
: ADDC(H$,L$)
: ADDC(H$,L$)
: ADDC(H$,L$)
: ADD(STR(H$,1,1),STR(H$,2,1))
: H=VAL(H$)
: H=H-INT(H/S7)*S7
3640 DATA LOAD BA T#Z,(H,X)I$()
: GOSUB '42
: IF X>0THEN 3770
: IF Y=0THEN 3770
: H=0
3710 DATA LOAD BA T#Z,(H,X)I$()
: GOSUB '42
: IF X>0THEN 3770
: H=H+1
: IF H<S7THEN 3710
3770 RETURN
3800 DEFFN'41
: AND (STR(X1$,1,1),7F)
: X=VAL(X1$)*256+VAL(STR(X1$,2))
: RETURN
3860 DEFFN'42
: Y=0
: X=2
: IF H>0THEN 3910
: X=4
3910 IF STR(I$(X-1),1,1)=HEX(10)THEN 3940
: IF STR(I$(X-1),1,1)=HEX(00)THEN 3990
: GOTO 3950
3940 IF I$(X)=N$THEN 4010
3950 X=X+2
: IF X<34THEN 3910
: Y=1
3990 X=0
4010 RETURN
4060 DEFFN'125(X$)
: GOSUB '248(5,0,5)
: PRINT ,"1. 310 5. B10"
: PRINT ,"2. 320 6. B20"
: PRINT ,"3. 330 7. B30"
: PRINT ,"4. 350"
4120 GOSUB '245(X$,1,0)
: X=Q9
: IF X<1THEN 4180
: IF X>7THEN 4180
: GOSUB '248(5,0,5)
: RETURN
4180 PRINT HEX(010A0A0A)
: PRINT "INVALID DEVICE ADDRESS"
: GOTO 4120
8710 Q6=3
: GOTO 9289
8975 DEFFN'242(W0,Q6$)
: IF W0<=0THEN 9405
: IF W0=1THEN 8990
: STR(Q6$,2)=STR(Q6$,1,W0-1)
8990 PRINT Q6$;
: RETURN
9010 DEFFN'243(Q6$,Q0)
: GOSUB 9200
9022 SELECT CO 205
: Q6$=" "
: INPUT Q6$
: IF Q0=0THEN 9231
: IF LEN(Q6$)<=Q0THEN 9231
: GOSUB 9150
9032 DEFFN'244(Q0)
: GOSUB 9220
: GOSUB 9210
: GOTO 9022
9038 DEFFN'245(Q6$,Q2,Q3)
: Q0=ABS(Q2)+Q3+1
: GOSUB 9200
9044 GOSUB '242(ABS(Q2)+2,HEX(09))
: PRINT "/"
: GOSUB 9220
: SELECT CO 205
: Q9,W0=-1E-99
: INPUT Q9
: IF W0=Q9THEN 9058
: IF Q9>=0THEN 9070
: IF Q2<=0THEN 9070
9058 GOSUB 9150
9060 DEFFN'246(Q2,Q3)
: Q0=ABS(Q2)+Q3+1
: GOSUB 9220
: GOSUB 9210
: GOTO 9044
9070 IF ABS(Q9)>=10^ABS(Q2)THEN 9058
: W0=ABS(Q9*10^Q3)
: IF INT(W0)<>W0THEN 9058
: GOTO 8710
9150 GOSUB 8710
: PRINT "RE-ENTER"
: RETURN
9200 GOSUB 9405
: PRINT HEX(010A);STR(Q6$,1);
9210 GOSUB 9405
: GOSUB '242(Q0+2,"-")
: PRINT TAB(64)
9220 PRINT HEX(010A0A)
: RETURN
9231 PRINT HEX(0A);TAB(64)
: GOTO 9405
: Q6=0
9289 Q7=0
: Q8=1
9290 DEFFN'248(Q6,Q7,Q8)
: GOSUB 9405
: IF Q8<1THEN 9350
: GOSUB 9350
: SELECT PRINT 205
: Q6$=" "
: PRINT STR(Q6$,Q7+1)
: IF Q8<2THEN 9350
: FOR W0=2TO Q8
: PRINT HEX(0A);STR(Q6$,1)
: NEXT W0
9350 PRINT HEX(01)
: GOSUB '242(Q7,HEX(09))
: GOSUB '242(Q6,HEX(0A))
9405 SELECT PRINT 005(64),CO 005
: RETURN