Listing of file='SUPERZAP' on disk='vmedia/cs386_host_1.2.wvd.zip'
# Sector 52, program filename = 'SUPERZAP'
0010 REM % FILEZAP
0020 REM Program name = SUPERZAP
0030 REM Version = 3.9
0040 REM Date of last revision = 24 FEB 81
0050 REM Author = Steve McGarry
0060 REM ---------------------------------------------
0070 REM Version = 8734
0080 REM Date of last revision = 26 MAR 84
0090 REM Author = Paul J. Hossfeld
0100 REM
0110 REM Added use of curser move arrows and fixed SF'23
0120 REM ---------------------------------------------
0130 REM %
0140 PRINT HEX(020200020402000F)
0150 DIM A$(16),B$(16),B,B1,B0$1,D$3,D1$3,F$8,F1$8,H$2,I$4,I1$4,K$1,N$5,N1$2,P
$1,S$5,S0$1,S1,X1,X$1,X1$2,X(3)
: 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)
0160 DATA LOAD DA T(19583)D$
: ERRORD$="310"
0170 PRINT AT(1,29);BOX(2,21); AT(1,32) ;"WANG LABS, INC.";AT(2,30);"SUPERZAP
- Rev. 8734"
: GOSUB 210
: GOTO 190
0180 E=ERR
: IF E>0THEN 200
0190 F,R=0
: GOTO 330
0200 PRINT AT(0,30,31);HEX(0E07);"ERROR DURING READ"
: GOTO 330
0210 PRINT AT(19,1,);"'0 = Change sector";TAB(22);"'12 /NEXT SCRN = Next secto
r";TAB(55);" '17 = File limits"
: PRINT " '1 = Change device";TAB(22);"'13 /PREV SCRN = Previous sector"; T
AB(55);" '18 = Index hashing"
0220 PRINT " '2 = Decimal to hex";TAB(55);" EDIT = Edit mode"
: PRINT " '3 = Hex to decimal"
: PRINT TAB(57); "'31 = Exit program";
: M=1
: RETURN
0230 PRINT AT(19,1,);"'0 = Switch Hex/ASCII";TAB(25);" '8 = Fill sector";TAB(5
3); "'15 = Recall original data"
: PRINT " '2 = Decimal to hex"; TAB(25);" '5 /Dn arrow = Down";TAB(53);"'16
= Save changes"
0240 PRINT " '3 = Hex to decimal";TAB(25); " '6 /Up arrow = Up"; TAB(53);"'17
= File limits"
0250 PRINT " '4 = End of sector";TAB(25);"'12 /Right arrow = Right"; TAB(53);"
'18 = Index hashing"
0260 PRINT " '7 = Start of sector";TAB(25);"'13 /Left arrow = Left"; TAB(52);"
EDIT = Display mode";
: M=2
: RETURN
0270 %KEYIN X$,500,500
0280 X$=" "
: KEYIN X$,,300
: $BREAK255
: GOTO 280
0290 REM % ---------- DISPLAY ----------
0300 IF X$=HEX(00)THEN 310
: IF X$=HEX(01)THEN 330
: IF X$=HEX(02)THEN GOSUB '2
: IF X$=HEX(03)THEN GOSUB '3
: IF X$=HEX(1F)THEN 9000
0305 IF X$=HEX(F0)THEN 410
: IF X$=HEX(0C) OR X$=HEX(43) OR X$=HEX(53) THEN 340
: IF X$=HEX(11) THEN GOSUB '17
: IF X$=HEX(12) THEN GOSUB '18
: IF X$<>HEX(0D) AND X$<>HEX(42) AND X$<>HEX(52) THEN 270
: R=R-2
: IF R<0THEN R=0
: GOTO 340
0310 X$=" "
0320 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 320
: CONVERT S$TO R
: GOTO 340
0330 PRINT AT(0,17);HEX(0E);
: LINPUT "Device ?",?D$
: R=0
: PRINT AT(0,17);"Device : ";D$
: GOTO 320
0340 PRINT HEX(06);AT(0,0,16);" Sector :";R;TAB(17);"Device : ";D$;TAB(30);HEX
(0E);"Loading "
0350 SELECT #8<D$>
: F=R
: DATA LOAD BA T#8,(R,R) A$()
: ERRORGOTO 180
0360 PRINT AT(0,30,31);HEX(0E);"Printing"
: PRINT HEX(0A0A)
0370 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
0380 S=0
: IF M=2THEN 390
: PRINT AT(0,30,31);HEX(0E);"Display mode";HEX(0F06)
: S=0
: GOTO 270
0390 IF Q=1THEN 420
: GOTO 710
0400 REM % ---------- EDIT ----------
0410 GOSUB 230
: Q,Y,X=1
0420 B=0
: GOSUB 690
0430 IF S<>1THEN PRINT HEX(06);AT(0,30,21);HEX(0E);"Hex edit mode"
: S=1
: K$=" "
: D1,D2=0
0440 PRINT AT(0,51,10);"Byte :";(Y-1)*16+X;AT(Y+2,T+B);HEX(05);
0450 KEYIN K$,460,500
: GOTO 450
0460 PRINT HEX(06);
: IF K$<"0"OR K$>"F"THEN 430
: IF K$>"9"AND K$<"A"THEN 430
0470 STR(H$,B+1,1)=K$
: HEXPACK STR(A$(Y),X,1)FROMH$
: IF B=1THEN 480
: B=1
: GOTO 670
0480 B=0
: IF X=16THEN 490
: D2=X+1
: GOTO 670
0490 D2=1
: IF Y<16THEN D1=Y+1
: ELSE D1=1
: GOTO 670
0500 PRINT HEX(06);
: IF K$=HEX(05) OR K$=HEX(45) OR K$=HEX(55) AND Y<16THEN D1=Y+1
: ELSE IF K$=HEX(05) OR K$=HEX(45) OR K$=HEX(55) AND Y=16THEN D1=1
: IF K$=HEX(06) OR K$=HEX(46) OR K$=HEX(56) AND Y>1THEN D1=Y-1
: ELSE IF K$=HEX(06) OR K$=HEX(46) OR K$=HEX(56) AND Y=1THEN D1=16
: IF K$=HEX(0C) OR K$=HEX(4C) OR K$=HEX(5C) AND X<16THEN D2=X+1
0510 ELSE IF K$=HEX(0C) OR K$=HEX(4C) OR K$=HEX(5C) AND X=16THEN D2=1
: IF K$=HEX(0D) OR K$=HEX(4D) OR K$=HEX(5D) AND X>1THEN D2=X-1
: ELSE IF K$=HEX(0D) OR K$=HEX(4D) OR K$=HEX(5D) AND X=1THEN D2=16
: IF K$=HEX(04)THEN D1,D2=16
: IF K$=HEX(07)THEN D1,D2=1
0520 PRINT HEX(06);
: IF K$=HEX(05)OR K$=HEX(45) OR K$=HEX(55) AND Y<16THEN D1=Y+1
: ELSE IF K$=HEX(05) OR K$=HEX(45) OR K$=HEX(55) AND Y=16THEN D1=1
: IF K$=HEX(06) OR K$=HEX(46) OR K$=HEX(56) AND Y>1THEN D1=Y-1
: ELSE IF K$=HEX(06) OR K$=HEX(46) OR K$=HEX(56) AND Y=1THEN D1=16
0530 IF K$=HEX(0C) OR K$=HEX(4C) OR K$=HEX(5C) AND X<16THEN D2=X+1
: ELSE IF K$=HEX(0C) OR K$=HEX(4C) OR K$=HEX(5C) AND X=16THEN D2=1
: IF K$=HEX(0D) OR K$=HEX(4D) OR K$=HEX(5D) AND X>1THEN D2=X-1
: ELSE IF K$=HEX(0D) OR K$=HEX(4D) OR K$=HEX(5D) AND X=1THEN D2=16
: IF K$=HEX(04)THEN D1,D2=16
: IF K$=HEX(07)THEN D1,D2=1
0540 IF K$<>HEX(F0)THEN 550
: X$=HEX(0D)
: GOSUB 700
: GOSUB 210
: R=F
: GOTO 340
0550 IF K$=HEX(11) THEN GOSUB '17
: IF K$=HEX(12) THEN GOSUB '18
: IF K$=HEX(03) THEN GOSUB '3
: IF K$=HEX(02) THEN GOSUB '2
: IF K$<>HEX(0F)THEN 560
: R=F
: GOTO 340
0560 IF K$<>HEX(10)THEN 600
0570 S0$="N"
: GOSUB 700
: PRINT AT(0,30,31);HEX(0E07);"SAVE THIS SECTOR ?";
: LINPUT S0$
: S=0
: IF S0$="Y"THEN 580
: IF S0$="N"THEN 390
: GOTO 570
0580 DATA SAVE BA T#8,(F)A$()
: ERRORPRINT AT(0,30,21);HEX(0E07);"ERROR DURING WRITE"
: GOSUB 690
: IF Q=1THEN 440
: GOTO 730
0590 M=1
: GOSUB 700
: GOSUB 210
: GOTO 380
0600 IF K$<>HEX(00)THEN 610
: IF Q=1THEN Q=2
: ELSE Q=1
: GOTO 390
0610 IF K$<>HEX(08)THEN 660
: GOSUB 700
0620 IF Q=1THEN 640
: PRINT AT(0,30,31);HEX(0E);"Fill with byte =";
: H$="X"
: LINPUT -STR(H$,1,1)
: F9=0
: PRINT HEX(06);
: IF STR(H$,1,1)>=" "AND STR(H$,1,1)<="z"THEN GOTO 630
: PRINT HEX(07);
: GOTO 620
0630 A$()=ALL(H$)
: PRINT AT(0,30,31);HEX(0E);"Filling"
: PRINT HEX(0A0A)
: GOTO 370
0640 PRINT AT(00,30,31); HEX(0E);"Fill with 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 650
: PRINT HEX(07);
: GOTO 640
0650 PRINT AT(0,51,10)
: HEXPACKB0$FROMH$
: A$()=ALL(B0$)
: PRINT AT(0,30,31);HEX(0E);"Filling"
: PRINT HEX(0A0A)
: GOTO 370
0660 IF D1>0OR D2>0THEN B=0
0670 GOSUB 700
: IF D1>0THEN Y=D1
: IF D2>0THEN X=D2
: GOSUB 690
0680 IF Q=1THEN 430
: GOTO 720
0690 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
0700 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
0710 GOSUB 690
0720 IF S<>2THEN PRINT HEX(06);AT(0,30,21);HEX(0E);"ASCII edit mode"
: S=2
: K$=" "
: D1,D2=0
: Q=2
0730 PRINT AT(0,51,10);"Byte :";(Y-1)*16+X;AT(Y+2,54+X);HEX(05);
0740 KEYIN K$,750,520
: GOTO 740
0750 PRINT HEX(06);
: IF K$>=" "AND K$<="z"THEN 760
: PRINT HEX(05);
: GOTO 740
0760 STR(A$(Y),X,1)=K$
: HEXUNPACKSTR(A$(Y),X,1)TO H$
: IF X=16THEN 770
: D2=X+1
: GOTO 670
0770 D2=1
: IF Y<16THEN D1=Y+1
: ELSE D1=1
: GOTO 670
0780 DEFFN'17
: REM % LIMITS
: PRINT AT(01,29); BOX(-2,0);AT(01,50); BOX(-2,-0) ; AT(01,00,159);BOX(2,21
);HEX(0E);
: LINPUT " Filename :",STR(F$,,8)
: PRINT AT(01,01); HEX(0F); "Filename : ";STR(F$,,8)
0790 LIMITS T#8,F$,B1,E,U,S
: ERRORE=ERR
: PRINT HEX(0E07); AT(02,01,14);"ERROR I-";E;HEX(0F);
: RETURN
0795 S=((E-B1)+1)-U
0800 PRINT AT(01,00);HEX(06) ;BOX(2,56) ; AT(01,22); " start sector"; B1; TAB(
45); "used"; U; AT(02,22);" end sector"; E; TAB(45); "free"; S
0810 RETURN
1000 DEFFN'3
: REM % HEX TO DECMAL CONVERSION
: I$=" "
: PRINT AT(0,62,17);HEX(0E);"Hex =";
: LINPUT -I$
: FOR L9=1TO 4
: IF STR(I$,L9,1)=" "THEN 1010
: IF STR(I$,L9,1)<"0"OR STR(I$,L9,1)>"F"THEN 1000
: IF STR(I$,L9,1)>"9"AND STR(I$,L9,1)<"A"THEN 1000
1010 NEXT L9
: MAT COPY -STR(I$,1,LEN(I$)) TO -I$
: FOR L9=1 TO 4
: IF STR(I$,L9,1)=" " THEN STR(I$,L9,1)="0"
: NEXT L9
: PRINT AT(0,62);HEX(0F);I$;" HEX =";
: HEXPACKI$FROMI$
: I=VAL(I$,2)
: PRINT I;HEX(06);TAB(79)
: RETURN
1020 DEFFN'2
: REM % DECIMAL TO HEX CONVERT
: N$=" "
1030 PRINT AT(0,62,17);HEX(0E);
1040 LINPUT "Decimal =" -N$
: ERRORE=ERR
: GOTO 1030
1050 CONVERT N$ TO N
: ERRORE=ERR
: N=0
1060 IF N> 65535 THEN 1030
: N1$ = BIN(N,2)
: ERRORE=ERR
: GOTO 1030
1070 PRINT AT(0,62,17);HEX(060F);
: HEXPRINT N1$;
1080 N1=VAL(N1$,2)
1090 PRINT " HEX ="; N1
1100 RETURN
1120 REM % Hashing
1130 REM This program duplicates disk index hashing
1140 DEFFN '18
1150 DATA LOAD BA T#8,(0)B$()
: ERRORE=ERR
: PRINT HEX(0E07); AT(02,01,14);"ERROR I-";E;HEX(0F)
: RETURN
1160 I=VAL(STR(B$(),2))
1170 PRINT AT(01,29); BOX(-2,0);AT(01,50); BOX(-2,-0) ; AT(01,00,159);BOX(2,21
);HEX(0E);
: LINPUT " Filename :",STR(F$,,8)
: PRINT AT(01,01); HEX(0F); "Filename : ";STR(F$,,8)
1200 F1$=F$
1210 XOR (STR(F1$,2),F1$)
1220 P$=STR(F1$,8,1)
1230 X1$=HEX(0000)
1240 ADD C (X1$,P$)
1250 ADD C (X1$,P$)
1260 ADD C (X1$,P$)
1270 ADD (STR(X1$,1,1),STR(X1$,2,1))
1280 X1=VAL(X1$)
1290 S1=X1-I*INT(X1/I)
1300 PRINT AT(01,00);HEX(06) ;BOX(2,56) ; AT(01,22); " In index sector"; S1;"
or before"
1310 RETURN
1320 DEFFN '31
: LOAD RUN "@MENU"
9000 DEFFN'31
: PRINT HEX(0306);AT(11,26);"EXITING SUPERZAP"
: LOAD T"@MENU"
9010 DEFFN'15
: SCRATCH T"SUPERZAP"
: SAVE T()"SUPERZAP"
: STOP "- PROGRAM UPDATED"
9900 DEFFN'00
: PRINT HEX(03);" DEFFN'XX LISTING"
: PRINT
: LIST S 9900,
: STOP
9901 DEFFN'01 HEX(020400020E)
: REM - - -Reverse- -On
9902 DEFFN'02 HEX(020400040E)
: REM - - - -Underline-On
9903 DEFFN'03 HEX(020402000E)
: REM -Bright- - - -On
9904 DEFFN'04 HEX(020402020E)
: REM -Bright- -Reverse- -On
9905 DEFFN'05 HEX(020402040E)
: REM -Bright- - -Underline-On
9906 DEFFN'06 HEX(020404000E)
: REM - -Blinking- - -On
9907 DEFFN'07 HEX(020404020E)
: REM - -Blinking-Reverse- -On
9908 DEFFN'08 HEX(020404040E)
: REM - -Blinking- -Underline-On
9909 DEFFN'09 HEX(02040B000E)
: REM -Bright-Blinking- - -On
9910 DEFFN'10 HEX(02040B020E)
: REM -Bright-Blinking-Reverse- -On
9911 DEFFN'11 HEX(02040B040E)
: REM -Bright-Blinking- -Underline-On
9912 DEFFN'12 HEX(0202000F)
: REM -Select normal character set-
9913 DEFFN'13 HEX(0202020F)
: REM -Select alternate character set-
9914 DEFFN'14 HEX(0E)
: REM - - - - -On
9915 DEFFN'15 HEX(0F)
: REM - - - - -Off
9916 DEFFN'16
: REM - Print a listing
: SELECT LIST 215(132)
: LIST " SUPERZA1 " D
: LIST " Variables" V
: LIST " Prime Numbers" '
: LIST " Line numbers" #
: STOP "DONE PRINTING"
9917 SELECT LIST 005(80)
: PRINT HEX(03);" DONE PRINTING"
9931 DEFFN'30
: REM - Update the program
: SCRATCH T/310,"SUPERZA1"
: SAVE T/310,()"SUPERZA1"
: STOP " 'SUPERZA1' SAVED"