image of READY prompt

Wang2200.org

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"