Listing of file='FILEZAP ' on disk='vmedia/tbo_81.wvd.zip'
# Sector 340, program filename = 'FILEZAP' 0010 REM Program name = FILEZAP 0020 REM Version = 3.9 0030 REM Date of last revision = 24 FEB 81 0040 REM Author = Steve McGarry 0050 REM --------------------------------------------- 0100 PRINT HEX(0202000F) 0110 DIM A$(16)16,B0$1,D$3,H$2,I$4,K$1,S$5,S0$1,X$1 : PRINT HEX(0306);BOX(3,79);BOX(1,16),BOX(1,29);BOX(1,50);BOX(1,61);BOX(1,7 9) : PRINT HEX(0A0A0A);TAB(7);BOX(16,47);AT(3,0);BOX(16,54);BOX(16,71);BOX(21, 79);BOX(16,79) 0115 DATA LOAD DA T(19583)D$ : ERRORD$="310" 0120 PRINT AT(1,28);"WANG LABORATORIES, INC.";AT(2,31);"FILEZAP - VER. 3.9" : GOSUB 160 : GOTO 140 0130 E=ERR : IF E>0THEN 150 0140 F,R=0 : GOTO 1040 0150 PRINT AT(0,30,42);HEX(0E07);"ERROR DURING READ" : GOTO 1040 0160 PRINT AT(19,1,);"'0 = Change sector";TAB(25);"'12 = Next sector" : PRINT " '1 = Change device";TAB(25);"'13 = Previous sector" : PRINT : PRINT " '3 = Hex to decimal";TAB(25);"EDIT= Enter edit mode" : PRINT " '4 = Exit program"; : M=1 : RETURN 0170 PRINT AT(19,1,);"'0 = Switch Hex/ASCII";TAB(25);" '7 = Beginning of secto r";TAB(53); "'15 = Recall original data" : PRINT TAB(25);" '8 = Fill sector";TAB(53);"'16 = Save changes" : PRINT " '4 = End of sector";TAB(53);"EDIT= Enter display mode" 0180 PRINT " '5 = Down one line";TAB(25);"'12 = Right one byte" : PRINT " '6 = Up one line";TAB(25);"'13 = Left one byte"; : M=2 : RETURN 0500 %KEYIN X$,500,500 0510 X$=" " : KEYIN X$,,1010 : $BREAK255 : GOTO 510 1000 REM % ---------- DISPLAY ---------- 1010 IF X$=HEX(00)THEN 1020 : IF X$=HEX(01)THEN 1040 : IF X$=HEX(03)THEN 1110 : PRINT AT(0,62,17); : IF X$=HEX(04)THEN 9000 : IF X$=HEX(F0)THEN 2010 : IF X$=HEX(0C)THEN 1050 : IF X$<>HEX(0D)THEN 500 : R=R-2 : IF R<0THEN R=0 : GOTO 1050 1020 X$=" " 1030 PRINT AT(0,0,16);HEX(0E); : CONVERT FTO S$,(#####) : P=POS(S$<>"0") : IF P=0THEN S$="0" : ELSE S$=STR(S$,P) : LINPUT " Sector ?",?S$ : IF NUM(S$)<LEN(S$)THEN 1030 : CONVERT S$TO R : GOTO 1050 1040 PRINT AT(0,17);HEX(0E); : LINPUT "Device ?",?D$ : R=0 : PRINT AT(0,17);"Device : ";D$ : GOTO 1030 1050 PRINT HEX(06);AT(0,0,16);" Sector :";R;TAB(17);"Device : ";D$;TAB(30);HEX (0E);"Loading";TAB(63) 1060 SELECT #8<D$> : F=R : DATA LOAD BA T#8,(R,R) A$() : ERRORGOTO 130 1070 PRINT AT(0,30,49);HEX(0E);"Printing" : PRINT HEX(0A0A) 1080 FOR J=1TO 16 : PRINT HEX(2020202020200E820F); : FOR K=1TO 15STEP 2 : PRINT TAB((K-1)*3+8);HEXOF(STR(A$(J),K,2)); : NEXT K : B$=A$(J) : FOR L=1TO 16 : IF STR(B$,L,1)<HEX(20)OR STR(B$,L,1)=HEX(80)THEN STR(B$,L,1)="." : NEXT L : PRINT TAB(55);STR(B$,,16) : PRINT HEX(0C);" " : NEXT J 1090 S=0 : IF M=2THEN 1100 : PRINT AT(0,30,49);"Display mode";HEX(06) : S=0 : GOTO 500 1100 IF Q=1THEN 2020 : GOTO 3000 1110 I$="0000" : PRINT AT(0,62);HEX(0E);"Input HEX ?"; : LINPUT I$ : FOR L9=1TO 4 : IF STR(I$,L9,1)<"0"OR STR(I$,L9,1)>"F"THEN 1110 : IF STR(I$,L9,1)>"9"AND STR(I$,L9,1)<"A"THEN 1110 : NEXT L9 : PRINT AT(0,62);HEX(0E);I$;" HEX ="; : HEXPACKI$FROMI$ : I=VAL(I$,2) : PRINT I;HEX(06);TAB(79) : GOTO 500 2000 REM % ---------- EDIT ---------- 2010 GOSUB 170 : Q,Y,X=1 2020 B=0 : GOSUB 2230 2030 IF S<>1THEN PRINT HEX(06);AT(0,30,21);HEX(0E);"Hex edit mode" : S=1 : K$=" " : D1,D2=0 2035 PRINT AT(0,51);"Byte :";(Y-1)*16+X;TAB(79);AT(Y+2,T+B);HEX(05); 2040 KEYIN K$,2050,2090 : GOTO 2040 2050 PRINT HEX(06); : IF K$<"0"OR K$>"F"THEN 2030 : IF K$>"9"AND K$<"A"THEN 2030 2060 STR(H$,B+1,1)=K$ : HEXPACK STR(A$(Y),X,1)FROMH$ : IF B=1THEN 2070 : B=1 : GOTO 2210 2070 B=0 : IF X=16THEN 2080 : D2=X+1 : GOTO 2210 2080 D2=1 : IF Y<16THEN D1=Y+1 : ELSE D1=1 : GOTO 2210 2090 PRINT HEX(06); : IF K$=HEX(05)AND Y<16THEN D1=Y+1 : ELSE IF K$=HEX(05)AND Y=16THEN D1=1 : IF K$=HEX(06)AND Y>1THEN D1=Y-1 : ELSE IF K$=HEX(06)AND Y=1THEN D1=16 : IF K$=HEX(0C)AND X<16THEN D2=X+1 : ELSE IF K$=HEX(0C)AND X=16THEN D2=1 : IF K$=HEX(0D)AND X>1THEN D2=X-1 : ELSE IF K$=HEX(0D)AND X=1THEN D2=16 : IF K$=HEX(04)THEN D1,D2=16 : IF K$=HEX(07)THEN D1,D2=1 2100 PRINT HEX(06); : IF K$=HEX(05)AND Y<16THEN D1=Y+1 : ELSE IF K$=HEX(05)AND Y=16THEN D1=1 : IF K$=HEX(06)AND Y>1THEN D1=Y-1 : ELSE IF K$=HEX(06)AND Y=1THEN D1=16 : IF K$=HEX(0C)AND X<16THEN D2=X+1 : ELSE IF K$=HEX(0C)AND X=16THEN D2=1 : IF K$=HEX(0D)AND X>1THEN D2=X-1 : ELSE IF K$=HEX(0D)AND X=1THEN D2=16 : IF K$=HEX(04)THEN D1,D2=16 : IF K$=HEX(07)THEN D1,D2=1 2110 IF K$<>HEX(F0)THEN 2120 : X$=HEX(0D) : GOSUB 2240 : GOSUB 160 : R=F : GOTO 1050 2120 IF K$<>HEX(0F)THEN 2130 : R=F : GOTO 1050 2130 IF K$<>HEX(10)THEN 2160 2140 S0$="N" : GOSUB 2240 : PRINT AT(0,30,42);HEX(0E07);"SAVE THIS SECTOR ?"; : LINPUT S0$ : S=0 : IF S0$="Y"THEN 2150 : IF S0$="N"THEN 1100 : GOTO 2140 2150 DATA SAVE BA T#8,(F)A$() : ERRORPRINT AT(0,30,21);HEX(0E07);"ERROR DURING WRITE" : GOSUB 2230 : IF Q=1THEN 2035 : GOTO 3015 2155 M=1 : GOSUB 2240 : GOSUB 160 : GOTO 1090 2160 IF K$<>HEX(00)THEN 2170 : IF Q=1THEN Q=2 : ELSE Q=1 : GOTO 1100 2170 IF K$<>HEX(08)THEN 2200 : GOSUB 2240 2175 IF Q=1THEN 2180 : PRINT AT(0,62);HEX(0E);"What byte ?"; : H$=" " : LINPUT -STR(H$,1,1) : F9=0 : PRINT HEX(06); : IF STR(H$,1,1)>=" "AND STR(H$,1,1)<="z"THEN GOTO 2176 : PRINT HEX(07); : GOTO 2175 2176 PRINT AT(0,62,15) : A$()=ALL(H$) : PRINT AT(0,30,42);HEX(0E);"Filling" : PRINT HEX(0A0A) : GOTO 1080 2180 PRINT AT(0,62);HEX(0E);"What byte ?"; : H$="00" : LINPUT -H$ : F9=0 : PRINT HEX(06); : IF STR(H$,1,1)<"0"OR STR(H$,1,1)>"9"AND STR(H$,1,1)<"A"OR STR(H$,1,1)>"F" THEN F9=1 : IF STR(H$,2,1)<"0"OR STR(H$,2,1)>"9"AND STR(H$,2,1)<"A"OR STR(H$,2,1)>"F" THEN F9=1 : IF F9=0THEN 2190 : PRINT HEX(07); : GOTO 2180 2190 PRINT AT(0,62,15) : HEXPACKB0$FROMH$ : A$()=ALL(B0$) : PRINT AT(0,30,42);HEX(0E);"Filling" : PRINT HEX(0A0A) : GOTO 1080 2200 IF D1>0OR D2>0THEN B=0 2210 GOSUB 2240 : IF D1>0THEN Y=D1 : IF D2>0THEN X=D2 : GOSUB 2230 2220 IF Q=1THEN 2030 : GOTO 3010 2230 T=(X-1)*3+8 : IF MOD(X,2)=0THEN T=T-1 : STR(B$,1,1)=STR(A$(Y),X,1) : HEXUNPACK STR(B$,1,1) TO H$ : IF B$<HEX(20)OR B$=HEX(80)THEN B$="." : PRINT HEX(0E);AT(Y+2,T);H$;AT(Y+2,54+X);STR(B$,1,1) : RETURN 2240 STR(B$,1,1)=STR(A$(Y),X,1) : IF B$<HEX(20)OR B$=HEX(80)THEN B$="." : PRINT HEX(0F);AT(Y+2,T);H$;AT(Y+2,54+X);STR(B$,1,1) : RETURN 3000 GOSUB 2230 3010 IF S<>2THEN PRINT HEX(06);AT(0,30,21);HEX(0E);"ASCII edit mode" : S=2 : K$=" " : D1,D2=0 : Q=2 3015 PRINT AT(0,51);"Byte :";(Y-1)*16+X;TAB(79);AT(Y+2,54+X);HEX(05); 3020 KEYIN K$,3030,2100 : GOTO 3020 3030 PRINT HEX(06); : IF K$>=" "AND K$<="z"THEN 3040 : PRINT HEX(05); : GOTO 3020 3040 STR(A$(Y),X,1)=K$ : HEXUNPACKSTR(A$(Y),X,1)TO H$ : IF X=16THEN 3050 : D2=X+1 : GOTO 2210 3050 D2=1 : IF Y<16THEN D1=Y+1 : ELSE D1=1 : GOTO 2210 9000 DEFFN'4 : PRINT HEX(0306);AT(11,26);"PROGRAM SUPERZAP IN PROGRESS" : LOAD T"@MENU" 9999 DEFFN'31 : SCRATCH T"FILEZAP " : SAVE T()"FILEZAP " : STOP "- PROGRAM UPDATED"