image of READY prompt

Wang2200.org

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"