Super Utility

Products: Super Utility
Developer(s): William J. Pedersen
Date: 1983
Type: Cassette
Platform(s): TS 1000

Utility for working with machine language programs and memory.

Content

Appears On

Related Products

Utility for working with machine language programs and memory.

Related Articles

Related Content

Image Gallery

Super Utility

Source Code

   1 REM %U%T%I%L%I%T%Y
   2 REM *************
   3 REM COPYRIGHT NOV 14, 1983 BY WILLIAM J. PEDERSEN. 1120 MERRIFIELD S.E., GRAND RAPIDS, MICHIGAN  49507
   4 REM REPRODUCTION OR USE OF THIS PROGRAM IS PROHIBITED WITHOUT EXPRESS WRITTEN PERMISSION.
   5 REM *************
   7 REM E\E6\E0\FE\C0



Super Utility

Products: Super Utility
Developer(s): William J. Pedersen
Date: 1983
Type: Cassette
Platform(s): TS 1000

Utility for working with machine language programs and memory.

Content

Appears On

Related Products

Utility for working with machine language programs and memory.

Related Articles

Related Content

Image Gallery

Super Utility

Source Code

   1 REM %U%T%I%L%I%T%Y
   2 REM *************
   3 REM COPYRIGHT NOV 14, 1983 BY WILLIAM J. PEDERSEN. 1120 MERRIFIELD S.E., GRAND RAPIDS, MICHIGAN  49507
   4 REM REPRODUCTION OR USE OF THIS PROGRAM IS PROHIBITED WITHOUT EXPRESS WRITTEN PERMISSION.
   5 REM *************
   7 REM \7E\E6\E0\FE\C0\28\0E\F2\99\41\FE\80\28\07\F2\A2\41\FE\60\28\10\23\22\93\41\ED\5B\93\7B\19\23\23\C9\11\0C\00\19\11\06\00\19\C9\23\CB\7E\28\FB\18\F4\F5\D5\E5\2A\DB\42\ED\4B\DF\42\ED\5B\E7\42\1A\ED\B1\20\1B\22\DB\42\ED\43\DF\42\2B\ED\4B\E5\42\1A\ED\A1\20\DF\13\EA\C8\41\ED\4B\DB\42\18\21\01\03\D9\18\1C\F5\D5\E5\21\00\00\22\DB\42\21\FF\1F\22\DF\42\18\BF\00\00\D9\18\06
   8 REM \E1\D1\FD\2A\00\40\3E\1E\ED\47\F1\C9\F5\D5\E5\2A\10\40\22\DB\42\3E\80\BE\28\E6\CB\6E\F5\CD\78\41\22\DD\42\F1\20\08\2A\DD\42\22\DB\42\18\E7\CD\2E\42\2A\DB\42\18\DF\2A\DB\42\E5\ED\5B\DD\42\D5\AF\ED\52\EB\2A\1C\40\19\22\1C\40\2A\1A\40\19\22\1A\40\2A\14\40\E5\19\22\14\40\E1\D1\AF\ED\52\E5\C1\03\2A\DB\42\EB\ED\B0\E1\C9\1B\1B\1B\1B\1D\1B\1B\1B\1B\1B\1B\00\00\00\00\18\06
   9 REM \DC\07\F2\03\D9\FA\9C\AD\EA\78\42\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\57\1B\95\7B\A8\04\1B\1B\1B\1B\02\00\78\42\1B\1B\1B\1B\1B\1B\1E\1B\1B
8100 REM %M%A%P
8101 CLS 
8102 PRINT ,,"    % %M%E%M%O%R%Y% %M%A%P%  ";Z$
8103 LET G$="\##\##%P\:.\'.\':%V\:'\..\':%U%U\.'\.'1638420479204802457524576286712867232767ABCEFG0 PROGRAM =VARIABLES=AVAIL MEM=RAMTOP UP="
8104 LET H$="16509"
8105 LET Q=1
8106 LET S=37
8107 LET I$=CHR$ S
8108 FOR K=IV TO XX-I STEP FIV
8109 LET T=II*K+VII
8110 LET L=53.4+II*K/FIV
8111 LET D$=H$
8112 GOSUB SYSV
8113 LET TT=VAL D$
8114 LET D$=G$(L)
8115 GOSUB SYSV
8116 LET QQ=VAL D$
8117 IF QQ=Z0 THEN LET QQ=32768
8118 LET LL=54+II*K
8119 PRINT AT K-I,Z0;G$(LL TO LL+IX);QQ-TT;" BYTES."
8120 LET H$=G$(L+I)
8121 FOR N=Z0 TO 31
8122 PRINT AT K,N;G$(Q);
8123 LET B=13107.2+F7*N+819.2*K
8124 LET D$=I$
8125 GOSUB SYSV
8126 LET BB=VAL D$
8127 IF BB-B<F6 THEN PRINT AT K,N;G$(Q+I);
8128 IF BB>B+F7 THEN GOTO 8137
8129 LET Q=Q+II
8130 LET S=S+I
8131 LET D$=CHR$ S
8132 GOSUB SYSV
8133 LET I$=D$
8134 IF LEN I$<II THEN LET I$="65536"
8135 IF VAL I$>B+F7 THEN GOTO 8137
8136 GOTO 8130
8137 NEXT N
8138 PRINT G$(T TO T+IV);TAB 27;G$(T+FIV TO T+IX)
8139 NEXT K
8140 STOP 
8141 GOTO HELP
8999 REM % %D%I%S%A%S%S%E%M%B%L%E%R% 
9000 PRINT AT XX,Z0;"DISASSEMBLE STARTING WHERE?"
9001 INPUT WB
9002 CLS 
9003 LET WL=Z0
9004 LET WIA=WB
9005 LET WFS=Z0
9006 LET WFN=I
9007 LET WFK=Z0
9008 LET WF=Z0
9009 LET WFW=Z0
9010 LET WV=Z0
9011 LET G$=""
9012 LET WN=112
9013 LET WL=WL+I
9014 LET WP=PEEK WB
9015 IF WP<>221 AND WP<>253 THEN GOTO 9021
9016 IF WFK THEN GOTO ERR
9017 LET WF=I+(I AND WP=253)
9018 LET WFK=I
9019 LET WB=WB+I
9020 GOTO 9014
9021 IF WP<>203 THEN GOTO 9034
9022 LET WFN=Z0
9023 LET WJ=345
9024 LET WB=WB+I+WFK
9025 LET WP=PEEK WB
9026 LET W1=INT (WP/F6)
9027 LET W=WP-F6*W1
9028 LET W2=INT (W/VIII)
9029 LET W=W-VIII*W2
9030 IF WFK AND W<>VI THEN GOTO ERR
9031 IF W1 THEN LET T$(WJ)=CHR$ (97+W1)+CHR$ (F4+I+W2)+CHR$ (W+I)
9032 IF NOT W1 THEN LET T$(WJ)=CHR$ (49+W2)+CHR$ (W+I)+CHR$ 97
9033 GOTO 9042
9034 LET WJ=I+PEEK WB
9035 LET WW=Z0
9036 IF WP<>237 THEN GOTO 9040
9037 LET WB=WB+I
9038 LET WW=PEEK WB
9039 LET WJ=193+WW-(36 AND WW>159)
9040 IF WW>123 AND WW<160 OR WJ>344 THEN GOTO ERR
9041 LET WDIS=PEEK (WB+I)
9042 LET V$=""
9043 LET W0=CODE T$(WJ,I)
9044 IF W0=WN+IV THEN GOTO ERR
9045 IF W0<>WN-IV THEN GOTO 9048
9046 LET WV=VAL (W$(CODE T$(WJ,II)))
9047 LET G$=" "
9048 GOSUB 9066
9049 LET B$=I$+" "
9050 LET W0=CODE T$(WJ,II)
9051 GOSUB 9066
9052 IF I$="" THEN GOTO 9063
9053 IF WP=211 THEN LET I$="(N)"
9054 LET B$=B$+I$
9055 LET W0=CODE T$(WJ,III)
9056 GOSUB 9066
9057 IF I$="" THEN GOTO 9060
9058 IF WP=219 THEN LET I$="(N)"
9059 LET B$=B$+","+I$
9060 IF WFK AND NOT WFW THEN GOTO ERR
9061 LET V$=STR$ WV
9062 IF NOT LEN G$ AND WV=Z0 THEN LET V$=""
9063 PRINT WIA;TAB VI;B$;TAB XX-I;V$+G$
9064 LET WB=WB+I+WFS*WFN
9065 GOTO 9004
9066 LET I$=W$(W0)
9067 GOSUB DTB
9068 IF W0=WN+FIV THEN GOSUB 9094
9069 IF W0<>WN+VI THEN GOTO 9075
9070 LET WB=WB+WFK+I
9071 LET WFN=Z0
9072 LET WV=PEEK WB
9073 IF WP=211 OR WP=219 THEN GOTO 9078
9074 LET G$=":"+CHR$ WV+":"
9075 IF WV>=F5 THEN GOTO 9078
9076 LET W=F4+I+III*WV
9078 IF W0<WN+VII THEN GOTO 9085
9079 LET WB=WB+II
9080 LET G$=" "
9081 LET WFN=Z0
9082 LET E=WB-I
9083 GOSUB DB
9084 LET WV=E
9085 IF NOT WFK THEN GOTO 9092
9086 IF W0=VII OR W0=61 OR W0=WN THEN LET WFW=I
9087 IF W0<>VII THEN GOTO 9091
9088 LET WFS=I
9089 GOSUB 9095
9090 LET I$=W$(WN+WF, TO III)+I$+")"
9091 IF W0=61 THEN LET I$=W$(WN+WF,II TO III)
9092 IF W0=WN THEN LET I$=W$(WN+WF)
9093 RETURN 
9094 LET WB=WB+I
9095 LET W=WDIS
9096 IF W<F7 THEN GOTO 9098
9097 LET W=W-F8
9098 IF NOT WFK THEN LET W=W+II
9099 IF W>=Z0 THEN LET I$="+"+STR$ W
9100 IF W<Z0 THEN LET I$=STR$ W
9101 IF B$( TO II)="JR" OR B$( TO II)="DJ" THEN LET WV=WIA+W
9102 RETURN 
9103 PRINT "ERROR AT ";WIA;". ",
9104 FOR J=Z0 TO III
9105 PRINT PEEK (WIA+J);" ";
9106 NEXT J
9107 PRINT 
9108 GOTO 9004
9120 REM %W%C%O%D
9121 CLS 
9122 PRINT ,," T$(345,3) TABLE FOR DECODING","MOST Z80 INSTRUCTIONS.",,,"N   VALUES      INTERPRETATION",,,
9123 FOR N=I TO 345
9124 PRINT N;" ";
9125 FOR K=I TO III
9126 PRINT CODE T$(N,K);" ";
9127 NEXT K
9128 PRINT ,
9129 FOR K=I TO III
9130 PRINT W$(CODE T$(N,K));" ";
9131 NEXT K
9132 PRINT 
9133 NEXT N
9134 STOP 
9135 REM %W%S%T%R
9136 CLS 
9137 PRINT ,," W$(120,4) ARRAY FOR MNEMONICS.",,,
9138 FOR N=I TO 120
9139 PRINT TAB VI;"W$(";N;")=","""";W$(N);""""
9140 NEXT N
9141 STOP 
9142 GOTO WCOD
9200 REM %E%D%I%T
9201 CLS 
9202 LET L=9228
9203 LET M=9317
9206 PRINT ,,"% %M%A%C%H%I%N%E% %L%A%N%G%U%A%G%E% %E%D%I%T%O%R% ",,,"WHERE ABOVE 16759?  START ";
9207 INPUT B
9208 PRINT B,"SELECT BY NO."
9209 FOR N=VI TO F4+I
9210 PRINT AT N,F4;"                "
9211 NEXT N
9212 PRINT AT IV,XX;"NOW   ";B
9213 PRINT ,," 1 SINGLE BYTE",," 2 DOUBLE BYTE",," 3 LD HL,(NN)",," 4 LD (NN),HL",," 5 PUSH SEQ",," 6 LD (NN),BC",," 7 LD BC,(NN)",," 8 LD (NN),DE",," 9 LD DE,(NN)",,"10 SBC HL,BC",,"11 ADC HL,BC",,"12 SBC HL,DE",,"13 ADC HL,DE",,"14 JUMPS",,"15 %Q%U%I%T"
9214 INPUT N
9215 IF N<I OR N>F4-II THEN GOTO M
9216 PRINT AT N+FIV,F4;"% "
9217 GOTO L-F4+VI*N
9218 INPUT K
9219 IF K<0 OR K>FF THEN GOTO M
9220 POKE B,K
9221 LET B=B+I
9222 GOTO 9209
9224 INPUT K
9225 IF K<0 OR K>=F8*F8 THEN GOTO M
9226 POKE B+I,INT (K/F8)
9227 POKE B,K-F8*INT (K/F8)
9228 LET B=B+II
9229 GOTO 9209
9236 POKE B,XXX+N
9237 LET B=B+I
9238 GOTO L-IV
9242 POKE B,245
9243 POKE B+I,213
9244 POKE B+II,229
9245 LET B=B+I
9246 GOTO L
9266 POKE B,237  
9267 POKE B+I,XX-I+VIII*N  
9268 LET B=B+II
9269 GOTO L-IV
9290 POKE B,237  
9291 POKE B+I,VIII*N-F4+II  
9292 GOTO L
9296 PRINT AT F4,F4;"JUMP TO?"
9297 INPUT N
9298 IF N<16760 OR N>=F8*F8 THEN GOTO M
9299 LET W=(B-N)>F7+I OR B-N<-F7+II
9300 PRINT AT VI,F4;"WHICH CONDITION?",AT VIII,F4;" 1 DJNZ",AT IX,F4;" 2 NONE",AT TEN,F4;" 3 NZ",AT TEN+I,F4;" 4  Z",AT VI+VI,F4;" 5 NC",AT IX+IV,F4;" 6  C",AT F4-II,F4;" 7 PO",AT F4-I,F4;" 8 PE",AT F4,F4;" 9  P   ",AT F4+I,F4;"10  M"   
9301 INPUT S
9302 IF S<I OR S>TEN THEN GOTO M
9303 IF W OR S>VI THEN GOTO 9309
9304 LET N=N-B-II
9305 IF N>=F7 THEN LET N=F7-N
9306 POKE B,VIII+VIII*S
9307 POKE B+I,N
9308 GOTO L
9309 IF S=I THEN GOTO M
9310 POKE B,170+VIII*S
9311 IF S=II THEN POKE B,195
9312 LET B=B+I
9313 LET P3=INT (N/F8)
9314 POKE B,N-F8*P3
9315 POKE B+I,P3
9316 GOTO L
9317 CLS 
9318 PRINT AT IX,Z0;"%Q%U%I%T OR AN ERROR HAS OCCURRED.  THE LAST LOCATION WAS ";B;".","CONTINUE FOR DISASSEMBLER."
9319 STOP 
9320 GOTO DISA
9449 REM %S%E%A%R%C%H
9450 CLS 
9451 LET Q=Z0
9452 LET E=I
9453 PRINT ,,"OBJECTIVE/TITLE?",
9454 INPUT G$
9455 PRINT AT I,Z0;G$;"                ";AT II,Z0;"PRINT? %YES OR %NO",
9456 LET W=Z0
9457 INPUT H$
9458 IF LEN H$ THEN IF H$(I)="Y" THEN LET W=I
9459 PRINT AT II,Z0;"INPUT YOUR CODE          ",
9460 INPUT L
9461 IF L>FF THEN GOTO 9481
9462 PRINT AT II,Z0;"IF DOUBLE BYTE, ENTER ""D"""
9463 INPUT H$
9464 IF LEN H$ THEN IF H$(I)="D" THEN GOTO 9481
9465 POKE 17015+E,L
9466 LET E=E+I
9467 PRINT AT II,Z0;"ANOTHER ENTRY? %YES OR %NO",
9468 INPUT H$
9469 IF LEN H$ THEN IF H$(I)="Y" THEN GOTO 9459
9470 CLS 
9471 IF NOT W THEN PRINT ,,G$
9472 IF W THEN LPRINT G$
9473 POKE 17125,E-I
9474 LET K=USR 16860
9475 GOTO 9477
9476 LET K=USR 16809
9477 LET Q=Q+I
9478 IF K=55555 THEN GOTO 9486
9479 GOSUB 9490+II*W
9480 GOTO 9476
9481 LET P2=INT (L/F8+II**-IX)
9482 POKE 17016+E,P2
9483 POKE 17015+E,L-F8*P2
9484 LET E=E+II
9485 GOTO 9467
9486 IF NOT W THEN PRINT "$";Q-I
9487 IF W THEN LPRINT "$";Q-I
9488 STOP 
9489 GOTO SEARCH
9490 PRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9491 RETURN 
9492 LPRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9493 RETURN 
9499 STOP 
9500 REM %V%L%S%T
9501 CLS 
9502 PRINT ,,,,"   %V%A%R%I%A%B%L%E%S",,,
9503 LET E=16400
9504 GOSUB DB
9505 LET L=E-I
9506 LET T=Z0
9507 LET T=T+I
9508 LET L=L+I
9509 LET B=L
9510 IF LEN H$>I THEN IF H$( TO II)="H$" THEN GOSUB VLST+XX
9511 LET CH=PEEK L
9512 PRINT TAB III-LEN STR$ T;T;" ";
9512 LET TP=INT (CH/F5)
9514 LET CH=CH-TP*F5+F5
9515 LET H$=CHR$ CH
9516 GOSUB VLST-F5+F5*TP
9517 LET E=TP=II OR TP=VI
9518 IF E THEN PRINT H$;TAB XX+VI;B
9519 IF NOT E THEN PRINT H$;TAB XX+III-LEN STR$ Q;Q;TAB XX+VI;B
9520 GOTO VLST+VI
9521 PRINT ,,"   %E%N%D% %O%F% %L%I%S%T ";L
9522 LET H$="***"
9523 STOP 
9524 GOTO VLST
9532 REM %S%T%R%I%N%G
9533 LET H$=H$+"$ "
9534 LET E=L+I
9535 GOSUB DB
9536 FOR Q=I TO (E AND E<F4)+(F4 AND E>=F4)
9537 LET H$=H$+CHR$ PEEK (L+II+Q)
9538 NEXT Q
9539 LET L=L+II+E
9540 RETURN 
9564 REM %S%I%N%G%L
9565 LET Q=VAL H$
9566 LET L=L+FIV
9567 RETURN 
9596 REM %N%(%)
9597 LET H$=H$+"("
9598 LET I$=H$
9599 LET S=PEEK (L+III)
9600 FOR Q=I TO S
9601 LET E=L+II+II*Q
9602 GOSUB DB
9603 IF Q>=S THEN GOTO VLST+105
9604 LET H$=H$+STR$ E+","
9605 LET I$=I$+"1,"
9606 NEXT Q
9607 LET H$=H$+STR$ E+")"
9608 LET I$=I$+"1)"
9609 LET Q=VAL I$
9610 LET E=L+I
9611 GOSUB DB
9612 LET L=L+II+E
9613 RETURN 
9628 REM %M%U%L%T
9629 LET L=L+I
9630 LET CH=PEEK L
9631 IF INT (CH/F6)=II THEN GOTO VLST+133
9632 LET H$=H$+CHR$ CH
9633 GOTO VLST+F7
9634 LET H$=H$+CHR$ (CH-F7)
9635 LET Q=VAL H$
9636 LET L=L+FIV
9637 RETURN 
9660 REM %$%(%)
9661 LET H$=H$+"$("
9662 LET S=PEEK (L+III)
9663 FOR Q=I TO S
9664 LET E=L+II+II*Q
9665 GOSUB DB
9666 IF Q>=S THEN GOTO VLST+168
9667 LET H$=H$+STR$ E+","
9668 NEXT Q
9669 LET H$=H$+STR$ E+")"
9670 LET E=L+VI
9671 LET U=L+III+II*S
9672 GOSUB DB
9674 FOR Q=U TO U+(E AND E<F4)+(F4 AND E>=F4)
9675 LET H$=H$+CHR$ PEEK Q
9676 NEXT Q
9677 GOTO VLST+109
9692 REM %F%-%N
9693 LET Q=VAL H$
9694 LET H$=H$+" FOR-NEXT"
9695 LET L=L+XX-III
9696 RETURN 
9697 REM %D%T%B
9698 FOR J=LEN I$ TO I STEP -I
9699 IF I$(J)=" " THEN NEXT J
9700 LET I$=I$( TO J)
9701 RETURN 
9702 REM %D%B
9703 LET E=F8*PEEK (E+I)+PEEK E
9704 RETURN 
9705 REM %S%R%C%H
9706 CLS 
9707 PRINT AT IX,I;"WRITE YOUR STRING WITHOUT LINE NUMBER.  ADD A QUOTE AND PRECEDESTRING WITH",,,," LET H$=""",,,," THEN ENTER AND CONTINUE."
9708 LET E=17116
9709 STOP 
9710 POKE E+IX,LEN H$
9711 POKE E-I,247
9712 POKE E,66
9713 LET K=PEEK 16396+F8*PEEK 16397-17143
9714 LET S=INT (K/F8)
9715 LET K=K-F8*S
9716 POKE E+III,K
9717 POKE E+IV,S
9718 FOR E=I TO LEN H$
9719 POKE (E+17015),CODE H$(E)
9720 NEXT E
9721 CLS 
9722 PRINT ,,"""";H$;"""";TAB Z0;,,
9723 LET K=USR 16809
9724 IF K=55555 THEN GOTO 9740
9727 LET Q=K
9728 LET Q=Q-I
9729 IF PEEK Q<>118 THEN GOTO 9728
9730 IF K-Q<IV THEN GOTO 9723
9732 LET E=F8*PEEK (Q+I)+PEEK (Q+II)
9733 LET K=F8*PEEK (Q+IV)+PEEK (Q+III)
9734 LET I$=""
9735 FOR Q=Q+FIV TO Q+III+K
9736 LET I$=I$+CHR$ PEEK Q
9737 NEXT Q
9738 PRINT E;TAB FIV;I$
9739 GOTO 9723
9740 PRINT ,,"  % %S%E%A%R%C%H% %C%O%M%P%L%E%T%E% "
9741 STOP 
9742 GOTO 9706
9750 REM %S%P%Y
9751 PRINT AT XX+I,Z0;"LOOK AT NO./%QUIT/%HIGHER/%L0WER"
9752 INPUT H$
9753 IF H$<>"Q" THEN GOTO 9755
9754 STOP 
9755 IF H$<>"H" THEN GOTO 9758
9756 LET B=B+F4
9757 GOTO 9762
9758 IF H$<>"L" THEN GOTO 9761
9759 LET B=B-F4
9760 GOTO 9762
9761 LET B=VAL H$
9762 CLS 
9763 FOR E=B TO B+XX+I
9764 PRINT E;TAB VI;PEEK E;TAB TEN;":";CHR$ PEEK E;":";TAB XX;F8*PEEK (E+I)+PEEK E
9765 NEXT E
9766 GOTO 9752
9800 REM %P%U%R%G
9801 LET N(1)=USR 16900
9802 REM %I%N%I%T%I%A%L%I%Z%A%T%I%O%N%S
9810 LET I=1
9811 LET Z0=I-I
9812 LET II=I+I
9813 LET III=II+I
9814 LET IV=II+II
9815 LET FIV=IV+I
9816 LET VI=IV+II
9817 LET VII=VI+I
9818 LET VIII=IV+IV
9819 LET IX=VIII+I
9820 LET TEN=IX+I
9821 LET XX=II*TEN
9822 LET XXX=30
9823 LET F4=II*VIII
9824 LET F5=II*F4
9825 LET F6=II*F5
9826 LET F7=II*F6
9827 LET F8=256
9828 LET FF=F8-I
9829 LET IK=I/F8/F8
9840 REM %K%E%Y%S
9841 LET VLST=9501
9842 LET DB=9703
9843 LET PURG=9801
9844 LET MEM=9916
9845 LET ZZ=9953
9846 LET ZZZ=ZZ-I
9847 LET ZZZZ=ZZ-II
9848 LET SAVE=9900
9849 LET SYSV=9928
9850 LET MAP=8101
9851 LET SEARCH=9450
9852 LET SRCH=9706
9853 LET HELP=9961
9854 LET SPY=9751
9855 LET DISA=9000
9856 LET ERR=9103
9857 LET DTB=9698
9858 LET WCOD=9121
9859 LET WSTR=9136
9860 LET NTRY=HELP
9861 LET EDIT=9201
9892 CLS 
9893 PRINT ,,,,"* TO DELETE STRINGS AND ARRAYS, REDIMENSION THEM TO ZERO."
9894 PRINT ,,"   DIM (NAME)$(0)  OR"
9895 PRINT ,,"   DIM (NAME)(0)"
9896 PRINT ,,"   THIS WILL PULL ERROR 3/0 BUT"," THE JOB IS DONE."
9897 STOP 
9898 GOTO VLST
9899 REM %S%A%V%E
9900 CLS 
9901 PRINT ,,,,"""";Z$;""" IS TO BE SAVED.",,,"START RECORDER.  PRESS ANY KEY.",,,Q$,,
9902 PRINT "MODE IS ";"LOOPING" AND NOT (NTRY-SAVE);"HELP" AND NOT (NTRY-HELP);"LOAD-AND-GO" AND NOT (NTRY-1000)
9903 SLOW 
9904 IF NTRY<>SAVE THEN PAUSE 40000
9905 FOR N=F6 TO I STEP -I
9906 UNPLOT N-I,XXX
9907 NEXT N
9908 SAVE Z$
9909 FAST 
9910 CLS 
9911 PRINT Y$;X$
9912 PRINT AT IX+VI,VII;"PRESENTS***"
9913 GOSUB ZZZ
9914 GOTO NTRY
9915 REM %M%E%M
9916 LET L=F8*(PEEK 16387-PEEK 16413)+PEEK 16386-PEEK 16412
9917 LET E=INT (L/F5/F5)
9918 PRINT AT IX,Z0;"MEMORY LEFT IS:";E;" K, ";L-F5*F5*E;" BYTES.",,,"(";L;" BYTES)"
9919 IF L<F8+XX THEN PRINT ,,"CAUTION: LIST EDITING MAY BE IMPAIRED."
9920 STOP 
9921 GOTO MAP
9927 REM %S%Y%S%V
9928 LET E=II*CODE D$-75
9929 IF E<I OR E>13 THEN GOTO 9933
9930 LET E$="10141824260002"
9931 LET E=VAL E$(E TO E+I)+16386
9932 LET D$=STR$ (F8*PEEK (E+I)+PEEK E)
9933 RETURN 
9950 REM %S%L%E%E%P
9951 LET ZZ=ZZ+F8
9952 LET ZZ=ZZ+F7
9953 LET ZZ=ZZ+F6
9954 LET ZZ=ZZ+F5
9955 LET E=ZZ-ZZZ+F5
9956 LET ZZ=ZZZ+I
9957 PAUSE E
9958 POKE 16437,FF
9959 RETURN 
9960 REM %H%E%L%P
9961 CLS 
9962 LET PAGE=I
9963 LET H$="% %H%E%L%P%  PAGE "
9964 PRINT AT I,IX;H$;PAGE
9965 PRINT ,,"* USE GOTO FOR DESIRED LOCATION,",,"* LET Z$=""(YOUR PROGRAM NAME)""",,,"* LET NTRY=1000 IF YOU WANT YOUR PROGRAM TO RUN AFTER LOADING." 
9966 PRINT ,,"* Z$=""";Z$;""""
9967 LET I$="% %K%E%Y%W%O%R%D% %L%I%N%E% %F%U%N%C%T%I%O%N% "
9968 PRINT ,,I$,"""HELP""   9960 HERE.","""VLST""   9500 VARIABLE LIST.","""MEM""    9915 AVAILABLE MEMORY. ""SAVE""   9900 SAVE PROGRAM,"
9969 PRINT """NTRY""   HELP UNLESS CHANGED."
9970 PRINT """PURG""   9800 DELETE VARIABLES."
9971 PRINT """MAP""    8100 MEMORY MAP."
9972 PRINT """SPY""    9750 LOOK AT MEMORY."
9973 PRINT """DISA""   9000 DISASSEMBLE."
9974 LET PAGE=II
9975 PRINT 
9976 CLS 
9977 PRINT AT I,IX;H$;PAGE,,,I$
9978 PRINT """WCOD""   9120 DECODE TABLE."
9979 PRINT """WSTD""   9135 MNEMONICS."
9980 PRINT """SRCH""   9705 BASIC CODE."
9981 PRINT """SEARCH"" 9450 ROM SPACE."
9982 PRINT """EDIT""   9200 MACH CODE."
9983 PRINT "*""GOTO VLST"" CODES AS:","  :236:V:L:S:T: (5 BYTES)" 
9984 PRINT "*""GOTO 9500"" CODES AS:","  :235:9:5:0:0:126:EXP:B4:B3:B2:B1:B0: (12 BYTES)"
9985 PRINT "* USING VARIABLES IN PLACE OF   NUMBERS CAN SAVE MEMORY."
9986 PRINT "* USE:Z0,I,II,III,IV,FIV,VI,VII,VIII,IX,TEN,XX,XXX IN PLACE OF:0,1,2,3,4,5,6,7,8,9,10,20,30."
9987 PRINT "* LIST 9802 TO SEE."
9988 STOP 
9989 GOTO HELP
9997 REM %M%/%L% %C%0%D%E% %T%E%M%P%L%A%T%E%S
9998 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.......   /\.'
9999 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.........1.......   /\.'
Scroll to Top
E\F2\FE\F2\A2\FE\EDBB\C9

Super Utility

Products: Super Utility
Developer(s): William J. Pedersen
Date: 1983
Type: Cassette
Platform(s): TS 1000

Utility for working with machine language programs and memory.

Content

Appears On

Related Products

Utility for working with machine language programs and memory.

Related Articles

Related Content

Image Gallery

Super Utility

Source Code

   1 REM %U%T%I%L%I%T%Y
   2 REM *************
   3 REM COPYRIGHT NOV 14, 1983 BY WILLIAM J. PEDERSEN. 1120 MERRIFIELD S.E., GRAND RAPIDS, MICHIGAN  49507
   4 REM REPRODUCTION OR USE OF THIS PROGRAM IS PROHIBITED WITHOUT EXPRESS WRITTEN PERMISSION.
   5 REM *************
   7 REM \7E\E6\E0\FE\C0\28\0E\F2\99\41\FE\80\28\07\F2\A2\41\FE\60\28\10\23\22\93\41\ED\5B\93\7B\19\23\23\C9\11\0C\00\19\11\06\00\19\C9\23\CB\7E\28\FB\18\F4\F5\D5\E5\2A\DB\42\ED\4B\DF\42\ED\5B\E7\42\1A\ED\B1\20\1B\22\DB\42\ED\43\DF\42\2B\ED\4B\E5\42\1A\ED\A1\20\DF\13\EA\C8\41\ED\4B\DB\42\18\21\01\03\D9\18\1C\F5\D5\E5\21\00\00\22\DB\42\21\FF\1F\22\DF\42\18\BF\00\00\D9\18\06
   8 REM \E1\D1\FD\2A\00\40\3E\1E\ED\47\F1\C9\F5\D5\E5\2A\10\40\22\DB\42\3E\80\BE\28\E6\CB\6E\F5\CD\78\41\22\DD\42\F1\20\08\2A\DD\42\22\DB\42\18\E7\CD\2E\42\2A\DB\42\18\DF\2A\DB\42\E5\ED\5B\DD\42\D5\AF\ED\52\EB\2A\1C\40\19\22\1C\40\2A\1A\40\19\22\1A\40\2A\14\40\E5\19\22\14\40\E1\D1\AF\ED\52\E5\C1\03\2A\DB\42\EB\ED\B0\E1\C9\1B\1B\1B\1B\1D\1B\1B\1B\1B\1B\1B\00\00\00\00\18\06
   9 REM \DC\07\F2\03\D9\FA\9C\AD\EA\78\42\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\57\1B\95\7B\A8\04\1B\1B\1B\1B\02\00\78\42\1B\1B\1B\1B\1B\1B\1E\1B\1B
8100 REM %M%A%P
8101 CLS 
8102 PRINT ,,"    % %M%E%M%O%R%Y% %M%A%P%  ";Z$
8103 LET G$="\##\##%P\:.\'.\':%V\:'\..\':%U%U\.'\.'1638420479204802457524576286712867232767ABCEFG0 PROGRAM =VARIABLES=AVAIL MEM=RAMTOP UP="
8104 LET H$="16509"
8105 LET Q=1
8106 LET S=37
8107 LET I$=CHR$ S
8108 FOR K=IV TO XX-I STEP FIV
8109 LET T=II*K+VII
8110 LET L=53.4+II*K/FIV
8111 LET D$=H$
8112 GOSUB SYSV
8113 LET TT=VAL D$
8114 LET D$=G$(L)
8115 GOSUB SYSV
8116 LET QQ=VAL D$
8117 IF QQ=Z0 THEN LET QQ=32768
8118 LET LL=54+II*K
8119 PRINT AT K-I,Z0;G$(LL TO LL+IX);QQ-TT;" BYTES."
8120 LET H$=G$(L+I)
8121 FOR N=Z0 TO 31
8122 PRINT AT K,N;G$(Q);
8123 LET B=13107.2+F7*N+819.2*K
8124 LET D$=I$
8125 GOSUB SYSV
8126 LET BB=VAL D$
8127 IF BB-B<F6 THEN PRINT AT K,N;G$(Q+I);
8128 IF BB>B+F7 THEN GOTO 8137
8129 LET Q=Q+II
8130 LET S=S+I
8131 LET D$=CHR$ S
8132 GOSUB SYSV
8133 LET I$=D$
8134 IF LEN I$<II THEN LET I$="65536"
8135 IF VAL I$>B+F7 THEN GOTO 8137
8136 GOTO 8130
8137 NEXT N
8138 PRINT G$(T TO T+IV);TAB 27;G$(T+FIV TO T+IX)
8139 NEXT K
8140 STOP 
8141 GOTO HELP
8999 REM % %D%I%S%A%S%S%E%M%B%L%E%R% 
9000 PRINT AT XX,Z0;"DISASSEMBLE STARTING WHERE?"
9001 INPUT WB
9002 CLS 
9003 LET WL=Z0
9004 LET WIA=WB
9005 LET WFS=Z0
9006 LET WFN=I
9007 LET WFK=Z0
9008 LET WF=Z0
9009 LET WFW=Z0
9010 LET WV=Z0
9011 LET G$=""
9012 LET WN=112
9013 LET WL=WL+I
9014 LET WP=PEEK WB
9015 IF WP<>221 AND WP<>253 THEN GOTO 9021
9016 IF WFK THEN GOTO ERR
9017 LET WF=I+(I AND WP=253)
9018 LET WFK=I
9019 LET WB=WB+I
9020 GOTO 9014
9021 IF WP<>203 THEN GOTO 9034
9022 LET WFN=Z0
9023 LET WJ=345
9024 LET WB=WB+I+WFK
9025 LET WP=PEEK WB
9026 LET W1=INT (WP/F6)
9027 LET W=WP-F6*W1
9028 LET W2=INT (W/VIII)
9029 LET W=W-VIII*W2
9030 IF WFK AND W<>VI THEN GOTO ERR
9031 IF W1 THEN LET T$(WJ)=CHR$ (97+W1)+CHR$ (F4+I+W2)+CHR$ (W+I)
9032 IF NOT W1 THEN LET T$(WJ)=CHR$ (49+W2)+CHR$ (W+I)+CHR$ 97
9033 GOTO 9042
9034 LET WJ=I+PEEK WB
9035 LET WW=Z0
9036 IF WP<>237 THEN GOTO 9040
9037 LET WB=WB+I
9038 LET WW=PEEK WB
9039 LET WJ=193+WW-(36 AND WW>159)
9040 IF WW>123 AND WW<160 OR WJ>344 THEN GOTO ERR
9041 LET WDIS=PEEK (WB+I)
9042 LET V$=""
9043 LET W0=CODE T$(WJ,I)
9044 IF W0=WN+IV THEN GOTO ERR
9045 IF W0<>WN-IV THEN GOTO 9048
9046 LET WV=VAL (W$(CODE T$(WJ,II)))
9047 LET G$=" "
9048 GOSUB 9066
9049 LET B$=I$+" "
9050 LET W0=CODE T$(WJ,II)
9051 GOSUB 9066
9052 IF I$="" THEN GOTO 9063
9053 IF WP=211 THEN LET I$="(N)"
9054 LET B$=B$+I$
9055 LET W0=CODE T$(WJ,III)
9056 GOSUB 9066
9057 IF I$="" THEN GOTO 9060
9058 IF WP=219 THEN LET I$="(N)"
9059 LET B$=B$+","+I$
9060 IF WFK AND NOT WFW THEN GOTO ERR
9061 LET V$=STR$ WV
9062 IF NOT LEN G$ AND WV=Z0 THEN LET V$=""
9063 PRINT WIA;TAB VI;B$;TAB XX-I;V$+G$
9064 LET WB=WB+I+WFS*WFN
9065 GOTO 9004
9066 LET I$=W$(W0)
9067 GOSUB DTB
9068 IF W0=WN+FIV THEN GOSUB 9094
9069 IF W0<>WN+VI THEN GOTO 9075
9070 LET WB=WB+WFK+I
9071 LET WFN=Z0
9072 LET WV=PEEK WB
9073 IF WP=211 OR WP=219 THEN GOTO 9078
9074 LET G$=":"+CHR$ WV+":"
9075 IF WV>=F5 THEN GOTO 9078
9076 LET W=F4+I+III*WV
9078 IF W0<WN+VII THEN GOTO 9085
9079 LET WB=WB+II
9080 LET G$=" "
9081 LET WFN=Z0
9082 LET E=WB-I
9083 GOSUB DB
9084 LET WV=E
9085 IF NOT WFK THEN GOTO 9092
9086 IF W0=VII OR W0=61 OR W0=WN THEN LET WFW=I
9087 IF W0<>VII THEN GOTO 9091
9088 LET WFS=I
9089 GOSUB 9095
9090 LET I$=W$(WN+WF, TO III)+I$+")"
9091 IF W0=61 THEN LET I$=W$(WN+WF,II TO III)
9092 IF W0=WN THEN LET I$=W$(WN+WF)
9093 RETURN 
9094 LET WB=WB+I
9095 LET W=WDIS
9096 IF W<F7 THEN GOTO 9098
9097 LET W=W-F8
9098 IF NOT WFK THEN LET W=W+II
9099 IF W>=Z0 THEN LET I$="+"+STR$ W
9100 IF W<Z0 THEN LET I$=STR$ W
9101 IF B$( TO II)="JR" OR B$( TO II)="DJ" THEN LET WV=WIA+W
9102 RETURN 
9103 PRINT "ERROR AT ";WIA;". ",
9104 FOR J=Z0 TO III
9105 PRINT PEEK (WIA+J);" ";
9106 NEXT J
9107 PRINT 
9108 GOTO 9004
9120 REM %W%C%O%D
9121 CLS 
9122 PRINT ,," T$(345,3) TABLE FOR DECODING","MOST Z80 INSTRUCTIONS.",,,"N   VALUES      INTERPRETATION",,,
9123 FOR N=I TO 345
9124 PRINT N;" ";
9125 FOR K=I TO III
9126 PRINT CODE T$(N,K);" ";
9127 NEXT K
9128 PRINT ,
9129 FOR K=I TO III
9130 PRINT W$(CODE T$(N,K));" ";
9131 NEXT K
9132 PRINT 
9133 NEXT N
9134 STOP 
9135 REM %W%S%T%R
9136 CLS 
9137 PRINT ,," W$(120,4) ARRAY FOR MNEMONICS.",,,
9138 FOR N=I TO 120
9139 PRINT TAB VI;"W$(";N;")=","""";W$(N);""""
9140 NEXT N
9141 STOP 
9142 GOTO WCOD
9200 REM %E%D%I%T
9201 CLS 
9202 LET L=9228
9203 LET M=9317
9206 PRINT ,,"% %M%A%C%H%I%N%E% %L%A%N%G%U%A%G%E% %E%D%I%T%O%R% ",,,"WHERE ABOVE 16759?  START ";
9207 INPUT B
9208 PRINT B,"SELECT BY NO."
9209 FOR N=VI TO F4+I
9210 PRINT AT N,F4;"                "
9211 NEXT N
9212 PRINT AT IV,XX;"NOW   ";B
9213 PRINT ,," 1 SINGLE BYTE",," 2 DOUBLE BYTE",," 3 LD HL,(NN)",," 4 LD (NN),HL",," 5 PUSH SEQ",," 6 LD (NN),BC",," 7 LD BC,(NN)",," 8 LD (NN),DE",," 9 LD DE,(NN)",,"10 SBC HL,BC",,"11 ADC HL,BC",,"12 SBC HL,DE",,"13 ADC HL,DE",,"14 JUMPS",,"15 %Q%U%I%T"
9214 INPUT N
9215 IF N<I OR N>F4-II THEN GOTO M
9216 PRINT AT N+FIV,F4;"% "
9217 GOTO L-F4+VI*N
9218 INPUT K
9219 IF K<0 OR K>FF THEN GOTO M
9220 POKE B,K
9221 LET B=B+I
9222 GOTO 9209
9224 INPUT K
9225 IF K<0 OR K>=F8*F8 THEN GOTO M
9226 POKE B+I,INT (K/F8)
9227 POKE B,K-F8*INT (K/F8)
9228 LET B=B+II
9229 GOTO 9209
9236 POKE B,XXX+N
9237 LET B=B+I
9238 GOTO L-IV
9242 POKE B,245
9243 POKE B+I,213
9244 POKE B+II,229
9245 LET B=B+I
9246 GOTO L
9266 POKE B,237  
9267 POKE B+I,XX-I+VIII*N  
9268 LET B=B+II
9269 GOTO L-IV
9290 POKE B,237  
9291 POKE B+I,VIII*N-F4+II  
9292 GOTO L
9296 PRINT AT F4,F4;"JUMP TO?"
9297 INPUT N
9298 IF N<16760 OR N>=F8*F8 THEN GOTO M
9299 LET W=(B-N)>F7+I OR B-N<-F7+II
9300 PRINT AT VI,F4;"WHICH CONDITION?",AT VIII,F4;" 1 DJNZ",AT IX,F4;" 2 NONE",AT TEN,F4;" 3 NZ",AT TEN+I,F4;" 4  Z",AT VI+VI,F4;" 5 NC",AT IX+IV,F4;" 6  C",AT F4-II,F4;" 7 PO",AT F4-I,F4;" 8 PE",AT F4,F4;" 9  P   ",AT F4+I,F4;"10  M"   
9301 INPUT S
9302 IF S<I OR S>TEN THEN GOTO M
9303 IF W OR S>VI THEN GOTO 9309
9304 LET N=N-B-II
9305 IF N>=F7 THEN LET N=F7-N
9306 POKE B,VIII+VIII*S
9307 POKE B+I,N
9308 GOTO L
9309 IF S=I THEN GOTO M
9310 POKE B,170+VIII*S
9311 IF S=II THEN POKE B,195
9312 LET B=B+I
9313 LET P3=INT (N/F8)
9314 POKE B,N-F8*P3
9315 POKE B+I,P3
9316 GOTO L
9317 CLS 
9318 PRINT AT IX,Z0;"%Q%U%I%T OR AN ERROR HAS OCCURRED.  THE LAST LOCATION WAS ";B;".","CONTINUE FOR DISASSEMBLER."
9319 STOP 
9320 GOTO DISA
9449 REM %S%E%A%R%C%H
9450 CLS 
9451 LET Q=Z0
9452 LET E=I
9453 PRINT ,,"OBJECTIVE/TITLE?",
9454 INPUT G$
9455 PRINT AT I,Z0;G$;"                ";AT II,Z0;"PRINT? %YES OR %NO",
9456 LET W=Z0
9457 INPUT H$
9458 IF LEN H$ THEN IF H$(I)="Y" THEN LET W=I
9459 PRINT AT II,Z0;"INPUT YOUR CODE          ",
9460 INPUT L
9461 IF L>FF THEN GOTO 9481
9462 PRINT AT II,Z0;"IF DOUBLE BYTE, ENTER ""D"""
9463 INPUT H$
9464 IF LEN H$ THEN IF H$(I)="D" THEN GOTO 9481
9465 POKE 17015+E,L
9466 LET E=E+I
9467 PRINT AT II,Z0;"ANOTHER ENTRY? %YES OR %NO",
9468 INPUT H$
9469 IF LEN H$ THEN IF H$(I)="Y" THEN GOTO 9459
9470 CLS 
9471 IF NOT W THEN PRINT ,,G$
9472 IF W THEN LPRINT G$
9473 POKE 17125,E-I
9474 LET K=USR 16860
9475 GOTO 9477
9476 LET K=USR 16809
9477 LET Q=Q+I
9478 IF K=55555 THEN GOTO 9486
9479 GOSUB 9490+II*W
9480 GOTO 9476
9481 LET P2=INT (L/F8+II**-IX)
9482 POKE 17016+E,P2
9483 POKE 17015+E,L-F8*P2
9484 LET E=E+II
9485 GOTO 9467
9486 IF NOT W THEN PRINT "$";Q-I
9487 IF W THEN LPRINT "$";Q-I
9488 STOP 
9489 GOTO SEARCH
9490 PRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9491 RETURN 
9492 LPRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9493 RETURN 
9499 STOP 
9500 REM %V%L%S%T
9501 CLS 
9502 PRINT ,,,,"   %V%A%R%I%A%B%L%E%S",,,
9503 LET E=16400
9504 GOSUB DB
9505 LET L=E-I
9506 LET T=Z0
9507 LET T=T+I
9508 LET L=L+I
9509 LET B=L
9510 IF LEN H$>I THEN IF H$( TO II)="H$" THEN GOSUB VLST+XX
9511 LET CH=PEEK L
9512 PRINT TAB III-LEN STR$ T;T;" ";
9512 LET TP=INT (CH/F5)
9514 LET CH=CH-TP*F5+F5
9515 LET H$=CHR$ CH
9516 GOSUB VLST-F5+F5*TP
9517 LET E=TP=II OR TP=VI
9518 IF E THEN PRINT H$;TAB XX+VI;B
9519 IF NOT E THEN PRINT H$;TAB XX+III-LEN STR$ Q;Q;TAB XX+VI;B
9520 GOTO VLST+VI
9521 PRINT ,,"   %E%N%D% %O%F% %L%I%S%T ";L
9522 LET H$="***"
9523 STOP 
9524 GOTO VLST
9532 REM %S%T%R%I%N%G
9533 LET H$=H$+"$ "
9534 LET E=L+I
9535 GOSUB DB
9536 FOR Q=I TO (E AND E<F4)+(F4 AND E>=F4)
9537 LET H$=H$+CHR$ PEEK (L+II+Q)
9538 NEXT Q
9539 LET L=L+II+E
9540 RETURN 
9564 REM %S%I%N%G%L
9565 LET Q=VAL H$
9566 LET L=L+FIV
9567 RETURN 
9596 REM %N%(%)
9597 LET H$=H$+"("
9598 LET I$=H$
9599 LET S=PEEK (L+III)
9600 FOR Q=I TO S
9601 LET E=L+II+II*Q
9602 GOSUB DB
9603 IF Q>=S THEN GOTO VLST+105
9604 LET H$=H$+STR$ E+","
9605 LET I$=I$+"1,"
9606 NEXT Q
9607 LET H$=H$+STR$ E+")"
9608 LET I$=I$+"1)"
9609 LET Q=VAL I$
9610 LET E=L+I
9611 GOSUB DB
9612 LET L=L+II+E
9613 RETURN 
9628 REM %M%U%L%T
9629 LET L=L+I
9630 LET CH=PEEK L
9631 IF INT (CH/F6)=II THEN GOTO VLST+133
9632 LET H$=H$+CHR$ CH
9633 GOTO VLST+F7
9634 LET H$=H$+CHR$ (CH-F7)
9635 LET Q=VAL H$
9636 LET L=L+FIV
9637 RETURN 
9660 REM %$%(%)
9661 LET H$=H$+"$("
9662 LET S=PEEK (L+III)
9663 FOR Q=I TO S
9664 LET E=L+II+II*Q
9665 GOSUB DB
9666 IF Q>=S THEN GOTO VLST+168
9667 LET H$=H$+STR$ E+","
9668 NEXT Q
9669 LET H$=H$+STR$ E+")"
9670 LET E=L+VI
9671 LET U=L+III+II*S
9672 GOSUB DB
9674 FOR Q=U TO U+(E AND E<F4)+(F4 AND E>=F4)
9675 LET H$=H$+CHR$ PEEK Q
9676 NEXT Q
9677 GOTO VLST+109
9692 REM %F%-%N
9693 LET Q=VAL H$
9694 LET H$=H$+" FOR-NEXT"
9695 LET L=L+XX-III
9696 RETURN 
9697 REM %D%T%B
9698 FOR J=LEN I$ TO I STEP -I
9699 IF I$(J)=" " THEN NEXT J
9700 LET I$=I$( TO J)
9701 RETURN 
9702 REM %D%B
9703 LET E=F8*PEEK (E+I)+PEEK E
9704 RETURN 
9705 REM %S%R%C%H
9706 CLS 
9707 PRINT AT IX,I;"WRITE YOUR STRING WITHOUT LINE NUMBER.  ADD A QUOTE AND PRECEDESTRING WITH",,,," LET H$=""",,,," THEN ENTER AND CONTINUE."
9708 LET E=17116
9709 STOP 
9710 POKE E+IX,LEN H$
9711 POKE E-I,247
9712 POKE E,66
9713 LET K=PEEK 16396+F8*PEEK 16397-17143
9714 LET S=INT (K/F8)
9715 LET K=K-F8*S
9716 POKE E+III,K
9717 POKE E+IV,S
9718 FOR E=I TO LEN H$
9719 POKE (E+17015),CODE H$(E)
9720 NEXT E
9721 CLS 
9722 PRINT ,,"""";H$;"""";TAB Z0;,,
9723 LET K=USR 16809
9724 IF K=55555 THEN GOTO 9740
9727 LET Q=K
9728 LET Q=Q-I
9729 IF PEEK Q<>118 THEN GOTO 9728
9730 IF K-Q<IV THEN GOTO 9723
9732 LET E=F8*PEEK (Q+I)+PEEK (Q+II)
9733 LET K=F8*PEEK (Q+IV)+PEEK (Q+III)
9734 LET I$=""
9735 FOR Q=Q+FIV TO Q+III+K
9736 LET I$=I$+CHR$ PEEK Q
9737 NEXT Q
9738 PRINT E;TAB FIV;I$
9739 GOTO 9723
9740 PRINT ,,"  % %S%E%A%R%C%H% %C%O%M%P%L%E%T%E% "
9741 STOP 
9742 GOTO 9706
9750 REM %S%P%Y
9751 PRINT AT XX+I,Z0;"LOOK AT NO./%QUIT/%HIGHER/%L0WER"
9752 INPUT H$
9753 IF H$<>"Q" THEN GOTO 9755
9754 STOP 
9755 IF H$<>"H" THEN GOTO 9758
9756 LET B=B+F4
9757 GOTO 9762
9758 IF H$<>"L" THEN GOTO 9761
9759 LET B=B-F4
9760 GOTO 9762
9761 LET B=VAL H$
9762 CLS 
9763 FOR E=B TO B+XX+I
9764 PRINT E;TAB VI;PEEK E;TAB TEN;":";CHR$ PEEK E;":";TAB XX;F8*PEEK (E+I)+PEEK E
9765 NEXT E
9766 GOTO 9752
9800 REM %P%U%R%G
9801 LET N(1)=USR 16900
9802 REM %I%N%I%T%I%A%L%I%Z%A%T%I%O%N%S
9810 LET I=1
9811 LET Z0=I-I
9812 LET II=I+I
9813 LET III=II+I
9814 LET IV=II+II
9815 LET FIV=IV+I
9816 LET VI=IV+II
9817 LET VII=VI+I
9818 LET VIII=IV+IV
9819 LET IX=VIII+I
9820 LET TEN=IX+I
9821 LET XX=II*TEN
9822 LET XXX=30
9823 LET F4=II*VIII
9824 LET F5=II*F4
9825 LET F6=II*F5
9826 LET F7=II*F6
9827 LET F8=256
9828 LET FF=F8-I
9829 LET IK=I/F8/F8
9840 REM %K%E%Y%S
9841 LET VLST=9501
9842 LET DB=9703
9843 LET PURG=9801
9844 LET MEM=9916
9845 LET ZZ=9953
9846 LET ZZZ=ZZ-I
9847 LET ZZZZ=ZZ-II
9848 LET SAVE=9900
9849 LET SYSV=9928
9850 LET MAP=8101
9851 LET SEARCH=9450
9852 LET SRCH=9706
9853 LET HELP=9961
9854 LET SPY=9751
9855 LET DISA=9000
9856 LET ERR=9103
9857 LET DTB=9698
9858 LET WCOD=9121
9859 LET WSTR=9136
9860 LET NTRY=HELP
9861 LET EDIT=9201
9892 CLS 
9893 PRINT ,,,,"* TO DELETE STRINGS AND ARRAYS, REDIMENSION THEM TO ZERO."
9894 PRINT ,,"   DIM (NAME)$(0)  OR"
9895 PRINT ,,"   DIM (NAME)(0)"
9896 PRINT ,,"   THIS WILL PULL ERROR 3/0 BUT"," THE JOB IS DONE."
9897 STOP 
9898 GOTO VLST
9899 REM %S%A%V%E
9900 CLS 
9901 PRINT ,,,,"""";Z$;""" IS TO BE SAVED.",,,"START RECORDER.  PRESS ANY KEY.",,,Q$,,
9902 PRINT "MODE IS ";"LOOPING" AND NOT (NTRY-SAVE);"HELP" AND NOT (NTRY-HELP);"LOAD-AND-GO" AND NOT (NTRY-1000)
9903 SLOW 
9904 IF NTRY<>SAVE THEN PAUSE 40000
9905 FOR N=F6 TO I STEP -I
9906 UNPLOT N-I,XXX
9907 NEXT N
9908 SAVE Z$
9909 FAST 
9910 CLS 
9911 PRINT Y$;X$
9912 PRINT AT IX+VI,VII;"PRESENTS***"
9913 GOSUB ZZZ
9914 GOTO NTRY
9915 REM %M%E%M
9916 LET L=F8*(PEEK 16387-PEEK 16413)+PEEK 16386-PEEK 16412
9917 LET E=INT (L/F5/F5)
9918 PRINT AT IX,Z0;"MEMORY LEFT IS:";E;" K, ";L-F5*F5*E;" BYTES.",,,"(";L;" BYTES)"
9919 IF L<F8+XX THEN PRINT ,,"CAUTION: LIST EDITING MAY BE IMPAIRED."
9920 STOP 
9921 GOTO MAP
9927 REM %S%Y%S%V
9928 LET E=II*CODE D$-75
9929 IF E<I OR E>13 THEN GOTO 9933
9930 LET E$="10141824260002"
9931 LET E=VAL E$(E TO E+I)+16386
9932 LET D$=STR$ (F8*PEEK (E+I)+PEEK E)
9933 RETURN 
9950 REM %S%L%E%E%P
9951 LET ZZ=ZZ+F8
9952 LET ZZ=ZZ+F7
9953 LET ZZ=ZZ+F6
9954 LET ZZ=ZZ+F5
9955 LET E=ZZ-ZZZ+F5
9956 LET ZZ=ZZZ+I
9957 PAUSE E
9958 POKE 16437,FF
9959 RETURN 
9960 REM %H%E%L%P
9961 CLS 
9962 LET PAGE=I
9963 LET H$="% %H%E%L%P%  PAGE "
9964 PRINT AT I,IX;H$;PAGE
9965 PRINT ,,"* USE GOTO FOR DESIRED LOCATION,",,"* LET Z$=""(YOUR PROGRAM NAME)""",,,"* LET NTRY=1000 IF YOU WANT YOUR PROGRAM TO RUN AFTER LOADING." 
9966 PRINT ,,"* Z$=""";Z$;""""
9967 LET I$="% %K%E%Y%W%O%R%D% %L%I%N%E% %F%U%N%C%T%I%O%N% "
9968 PRINT ,,I$,"""HELP""   9960 HERE.","""VLST""   9500 VARIABLE LIST.","""MEM""    9915 AVAILABLE MEMORY. ""SAVE""   9900 SAVE PROGRAM,"
9969 PRINT """NTRY""   HELP UNLESS CHANGED."
9970 PRINT """PURG""   9800 DELETE VARIABLES."
9971 PRINT """MAP""    8100 MEMORY MAP."
9972 PRINT """SPY""    9750 LOOK AT MEMORY."
9973 PRINT """DISA""   9000 DISASSEMBLE."
9974 LET PAGE=II
9975 PRINT 
9976 CLS 
9977 PRINT AT I,IX;H$;PAGE,,,I$
9978 PRINT """WCOD""   9120 DECODE TABLE."
9979 PRINT """WSTD""   9135 MNEMONICS."
9980 PRINT """SRCH""   9705 BASIC CODE."
9981 PRINT """SEARCH"" 9450 ROM SPACE."
9982 PRINT """EDIT""   9200 MACH CODE."
9983 PRINT "*""GOTO VLST"" CODES AS:","  :236:V:L:S:T: (5 BYTES)" 
9984 PRINT "*""GOTO 9500"" CODES AS:","  :235:9:5:0:0:126:EXP:B4:B3:B2:B1:B0: (12 BYTES)"
9985 PRINT "* USING VARIABLES IN PLACE OF   NUMBERS CAN SAVE MEMORY."
9986 PRINT "* USE:Z0,I,II,III,IV,FIV,VI,VII,VIII,IX,TEN,XX,XXX IN PLACE OF:0,1,2,3,4,5,6,7,8,9,10,20,30."
9987 PRINT "* LIST 9802 TO SEE."
9988 STOP 
9989 GOTO HELP
9997 REM %M%/%L% %C%0%D%E% %T%E%M%P%L%A%T%E%S
9998 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.......   /\.'
9999 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.........1.......   /\.'
Scroll to Top
C

Super Utility

Products: Super Utility
Developer(s): William J. Pedersen
Date: 1983
Type: Cassette
Platform(s): TS 1000

Utility for working with machine language programs and memory.

Content

Appears On

Related Products

Utility for working with machine language programs and memory.

Related Articles

Related Content

Image Gallery

Super Utility

Source Code

   1 REM %U%T%I%L%I%T%Y
   2 REM *************
   3 REM COPYRIGHT NOV 14, 1983 BY WILLIAM J. PEDERSEN. 1120 MERRIFIELD S.E., GRAND RAPIDS, MICHIGAN  49507
   4 REM REPRODUCTION OR USE OF THIS PROGRAM IS PROHIBITED WITHOUT EXPRESS WRITTEN PERMISSION.
   5 REM *************
   7 REM \7E\E6\E0\FE\C0\28\0E\F2\99\41\FE\80\28\07\F2\A2\41\FE\60\28\10\23\22\93\41\ED\5B\93\7B\19\23\23\C9\11\0C\00\19\11\06\00\19\C9\23\CB\7E\28\FB\18\F4\F5\D5\E5\2A\DB\42\ED\4B\DF\42\ED\5B\E7\42\1A\ED\B1\20\1B\22\DB\42\ED\43\DF\42\2B\ED\4B\E5\42\1A\ED\A1\20\DF\13\EA\C8\41\ED\4B\DB\42\18\21\01\03\D9\18\1C\F5\D5\E5\21\00\00\22\DB\42\21\FF\1F\22\DF\42\18\BF\00\00\D9\18\06
   8 REM \E1\D1\FD\2A\00\40\3E\1E\ED\47\F1\C9\F5\D5\E5\2A\10\40\22\DB\42\3E\80\BE\28\E6\CB\6E\F5\CD\78\41\22\DD\42\F1\20\08\2A\DD\42\22\DB\42\18\E7\CD\2E\42\2A\DB\42\18\DF\2A\DB\42\E5\ED\5B\DD\42\D5\AF\ED\52\EB\2A\1C\40\19\22\1C\40\2A\1A\40\19\22\1A\40\2A\14\40\E5\19\22\14\40\E1\D1\AF\ED\52\E5\C1\03\2A\DB\42\EB\ED\B0\E1\C9\1B\1B\1B\1B\1D\1B\1B\1B\1B\1B\1B\00\00\00\00\18\06
   9 REM \DC\07\F2\03\D9\FA\9C\AD\EA\78\42\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\57\1B\95\7B\A8\04\1B\1B\1B\1B\02\00\78\42\1B\1B\1B\1B\1B\1B\1E\1B\1B
8100 REM %M%A%P
8101 CLS 
8102 PRINT ,,"    % %M%E%M%O%R%Y% %M%A%P%  ";Z$
8103 LET G$="\##\##%P\:.\'.\':%V\:'\..\':%U%U\.'\.'1638420479204802457524576286712867232767ABCEFG0 PROGRAM =VARIABLES=AVAIL MEM=RAMTOP UP="
8104 LET H$="16509"
8105 LET Q=1
8106 LET S=37
8107 LET I$=CHR$ S
8108 FOR K=IV TO XX-I STEP FIV
8109 LET T=II*K+VII
8110 LET L=53.4+II*K/FIV
8111 LET D$=H$
8112 GOSUB SYSV
8113 LET TT=VAL D$
8114 LET D$=G$(L)
8115 GOSUB SYSV
8116 LET QQ=VAL D$
8117 IF QQ=Z0 THEN LET QQ=32768
8118 LET LL=54+II*K
8119 PRINT AT K-I,Z0;G$(LL TO LL+IX);QQ-TT;" BYTES."
8120 LET H$=G$(L+I)
8121 FOR N=Z0 TO 31
8122 PRINT AT K,N;G$(Q);
8123 LET B=13107.2+F7*N+819.2*K
8124 LET D$=I$
8125 GOSUB SYSV
8126 LET BB=VAL D$
8127 IF BB-B<F6 THEN PRINT AT K,N;G$(Q+I);
8128 IF BB>B+F7 THEN GOTO 8137
8129 LET Q=Q+II
8130 LET S=S+I
8131 LET D$=CHR$ S
8132 GOSUB SYSV
8133 LET I$=D$
8134 IF LEN I$<II THEN LET I$="65536"
8135 IF VAL I$>B+F7 THEN GOTO 8137
8136 GOTO 8130
8137 NEXT N
8138 PRINT G$(T TO T+IV);TAB 27;G$(T+FIV TO T+IX)
8139 NEXT K
8140 STOP 
8141 GOTO HELP
8999 REM % %D%I%S%A%S%S%E%M%B%L%E%R% 
9000 PRINT AT XX,Z0;"DISASSEMBLE STARTING WHERE?"
9001 INPUT WB
9002 CLS 
9003 LET WL=Z0
9004 LET WIA=WB
9005 LET WFS=Z0
9006 LET WFN=I
9007 LET WFK=Z0
9008 LET WF=Z0
9009 LET WFW=Z0
9010 LET WV=Z0
9011 LET G$=""
9012 LET WN=112
9013 LET WL=WL+I
9014 LET WP=PEEK WB
9015 IF WP<>221 AND WP<>253 THEN GOTO 9021
9016 IF WFK THEN GOTO ERR
9017 LET WF=I+(I AND WP=253)
9018 LET WFK=I
9019 LET WB=WB+I
9020 GOTO 9014
9021 IF WP<>203 THEN GOTO 9034
9022 LET WFN=Z0
9023 LET WJ=345
9024 LET WB=WB+I+WFK
9025 LET WP=PEEK WB
9026 LET W1=INT (WP/F6)
9027 LET W=WP-F6*W1
9028 LET W2=INT (W/VIII)
9029 LET W=W-VIII*W2
9030 IF WFK AND W<>VI THEN GOTO ERR
9031 IF W1 THEN LET T$(WJ)=CHR$ (97+W1)+CHR$ (F4+I+W2)+CHR$ (W+I)
9032 IF NOT W1 THEN LET T$(WJ)=CHR$ (49+W2)+CHR$ (W+I)+CHR$ 97
9033 GOTO 9042
9034 LET WJ=I+PEEK WB
9035 LET WW=Z0
9036 IF WP<>237 THEN GOTO 9040
9037 LET WB=WB+I
9038 LET WW=PEEK WB
9039 LET WJ=193+WW-(36 AND WW>159)
9040 IF WW>123 AND WW<160 OR WJ>344 THEN GOTO ERR
9041 LET WDIS=PEEK (WB+I)
9042 LET V$=""
9043 LET W0=CODE T$(WJ,I)
9044 IF W0=WN+IV THEN GOTO ERR
9045 IF W0<>WN-IV THEN GOTO 9048
9046 LET WV=VAL (W$(CODE T$(WJ,II)))
9047 LET G$=" "
9048 GOSUB 9066
9049 LET B$=I$+" "
9050 LET W0=CODE T$(WJ,II)
9051 GOSUB 9066
9052 IF I$="" THEN GOTO 9063
9053 IF WP=211 THEN LET I$="(N)"
9054 LET B$=B$+I$
9055 LET W0=CODE T$(WJ,III)
9056 GOSUB 9066
9057 IF I$="" THEN GOTO 9060
9058 IF WP=219 THEN LET I$="(N)"
9059 LET B$=B$+","+I$
9060 IF WFK AND NOT WFW THEN GOTO ERR
9061 LET V$=STR$ WV
9062 IF NOT LEN G$ AND WV=Z0 THEN LET V$=""
9063 PRINT WIA;TAB VI;B$;TAB XX-I;V$+G$
9064 LET WB=WB+I+WFS*WFN
9065 GOTO 9004
9066 LET I$=W$(W0)
9067 GOSUB DTB
9068 IF W0=WN+FIV THEN GOSUB 9094
9069 IF W0<>WN+VI THEN GOTO 9075
9070 LET WB=WB+WFK+I
9071 LET WFN=Z0
9072 LET WV=PEEK WB
9073 IF WP=211 OR WP=219 THEN GOTO 9078
9074 LET G$=":"+CHR$ WV+":"
9075 IF WV>=F5 THEN GOTO 9078
9076 LET W=F4+I+III*WV
9078 IF W0<WN+VII THEN GOTO 9085
9079 LET WB=WB+II
9080 LET G$=" "
9081 LET WFN=Z0
9082 LET E=WB-I
9083 GOSUB DB
9084 LET WV=E
9085 IF NOT WFK THEN GOTO 9092
9086 IF W0=VII OR W0=61 OR W0=WN THEN LET WFW=I
9087 IF W0<>VII THEN GOTO 9091
9088 LET WFS=I
9089 GOSUB 9095
9090 LET I$=W$(WN+WF, TO III)+I$+")"
9091 IF W0=61 THEN LET I$=W$(WN+WF,II TO III)
9092 IF W0=WN THEN LET I$=W$(WN+WF)
9093 RETURN 
9094 LET WB=WB+I
9095 LET W=WDIS
9096 IF W<F7 THEN GOTO 9098
9097 LET W=W-F8
9098 IF NOT WFK THEN LET W=W+II
9099 IF W>=Z0 THEN LET I$="+"+STR$ W
9100 IF W<Z0 THEN LET I$=STR$ W
9101 IF B$( TO II)="JR" OR B$( TO II)="DJ" THEN LET WV=WIA+W
9102 RETURN 
9103 PRINT "ERROR AT ";WIA;". ",
9104 FOR J=Z0 TO III
9105 PRINT PEEK (WIA+J);" ";
9106 NEXT J
9107 PRINT 
9108 GOTO 9004
9120 REM %W%C%O%D
9121 CLS 
9122 PRINT ,," T$(345,3) TABLE FOR DECODING","MOST Z80 INSTRUCTIONS.",,,"N   VALUES      INTERPRETATION",,,
9123 FOR N=I TO 345
9124 PRINT N;" ";
9125 FOR K=I TO III
9126 PRINT CODE T$(N,K);" ";
9127 NEXT K
9128 PRINT ,
9129 FOR K=I TO III
9130 PRINT W$(CODE T$(N,K));" ";
9131 NEXT K
9132 PRINT 
9133 NEXT N
9134 STOP 
9135 REM %W%S%T%R
9136 CLS 
9137 PRINT ,," W$(120,4) ARRAY FOR MNEMONICS.",,,
9138 FOR N=I TO 120
9139 PRINT TAB VI;"W$(";N;")=","""";W$(N);""""
9140 NEXT N
9141 STOP 
9142 GOTO WCOD
9200 REM %E%D%I%T
9201 CLS 
9202 LET L=9228
9203 LET M=9317
9206 PRINT ,,"% %M%A%C%H%I%N%E% %L%A%N%G%U%A%G%E% %E%D%I%T%O%R% ",,,"WHERE ABOVE 16759?  START ";
9207 INPUT B
9208 PRINT B,"SELECT BY NO."
9209 FOR N=VI TO F4+I
9210 PRINT AT N,F4;"                "
9211 NEXT N
9212 PRINT AT IV,XX;"NOW   ";B
9213 PRINT ,," 1 SINGLE BYTE",," 2 DOUBLE BYTE",," 3 LD HL,(NN)",," 4 LD (NN),HL",," 5 PUSH SEQ",," 6 LD (NN),BC",," 7 LD BC,(NN)",," 8 LD (NN),DE",," 9 LD DE,(NN)",,"10 SBC HL,BC",,"11 ADC HL,BC",,"12 SBC HL,DE",,"13 ADC HL,DE",,"14 JUMPS",,"15 %Q%U%I%T"
9214 INPUT N
9215 IF N<I OR N>F4-II THEN GOTO M
9216 PRINT AT N+FIV,F4;"% "
9217 GOTO L-F4+VI*N
9218 INPUT K
9219 IF K<0 OR K>FF THEN GOTO M
9220 POKE B,K
9221 LET B=B+I
9222 GOTO 9209
9224 INPUT K
9225 IF K<0 OR K>=F8*F8 THEN GOTO M
9226 POKE B+I,INT (K/F8)
9227 POKE B,K-F8*INT (K/F8)
9228 LET B=B+II
9229 GOTO 9209
9236 POKE B,XXX+N
9237 LET B=B+I
9238 GOTO L-IV
9242 POKE B,245
9243 POKE B+I,213
9244 POKE B+II,229
9245 LET B=B+I
9246 GOTO L
9266 POKE B,237  
9267 POKE B+I,XX-I+VIII*N  
9268 LET B=B+II
9269 GOTO L-IV
9290 POKE B,237  
9291 POKE B+I,VIII*N-F4+II  
9292 GOTO L
9296 PRINT AT F4,F4;"JUMP TO?"
9297 INPUT N
9298 IF N<16760 OR N>=F8*F8 THEN GOTO M
9299 LET W=(B-N)>F7+I OR B-N<-F7+II
9300 PRINT AT VI,F4;"WHICH CONDITION?",AT VIII,F4;" 1 DJNZ",AT IX,F4;" 2 NONE",AT TEN,F4;" 3 NZ",AT TEN+I,F4;" 4  Z",AT VI+VI,F4;" 5 NC",AT IX+IV,F4;" 6  C",AT F4-II,F4;" 7 PO",AT F4-I,F4;" 8 PE",AT F4,F4;" 9  P   ",AT F4+I,F4;"10  M"   
9301 INPUT S
9302 IF S<I OR S>TEN THEN GOTO M
9303 IF W OR S>VI THEN GOTO 9309
9304 LET N=N-B-II
9305 IF N>=F7 THEN LET N=F7-N
9306 POKE B,VIII+VIII*S
9307 POKE B+I,N
9308 GOTO L
9309 IF S=I THEN GOTO M
9310 POKE B,170+VIII*S
9311 IF S=II THEN POKE B,195
9312 LET B=B+I
9313 LET P3=INT (N/F8)
9314 POKE B,N-F8*P3
9315 POKE B+I,P3
9316 GOTO L
9317 CLS 
9318 PRINT AT IX,Z0;"%Q%U%I%T OR AN ERROR HAS OCCURRED.  THE LAST LOCATION WAS ";B;".","CONTINUE FOR DISASSEMBLER."
9319 STOP 
9320 GOTO DISA
9449 REM %S%E%A%R%C%H
9450 CLS 
9451 LET Q=Z0
9452 LET E=I
9453 PRINT ,,"OBJECTIVE/TITLE?",
9454 INPUT G$
9455 PRINT AT I,Z0;G$;"                ";AT II,Z0;"PRINT? %YES OR %NO",
9456 LET W=Z0
9457 INPUT H$
9458 IF LEN H$ THEN IF H$(I)="Y" THEN LET W=I
9459 PRINT AT II,Z0;"INPUT YOUR CODE          ",
9460 INPUT L
9461 IF L>FF THEN GOTO 9481
9462 PRINT AT II,Z0;"IF DOUBLE BYTE, ENTER ""D"""
9463 INPUT H$
9464 IF LEN H$ THEN IF H$(I)="D" THEN GOTO 9481
9465 POKE 17015+E,L
9466 LET E=E+I
9467 PRINT AT II,Z0;"ANOTHER ENTRY? %YES OR %NO",
9468 INPUT H$
9469 IF LEN H$ THEN IF H$(I)="Y" THEN GOTO 9459
9470 CLS 
9471 IF NOT W THEN PRINT ,,G$
9472 IF W THEN LPRINT G$
9473 POKE 17125,E-I
9474 LET K=USR 16860
9475 GOTO 9477
9476 LET K=USR 16809
9477 LET Q=Q+I
9478 IF K=55555 THEN GOTO 9486
9479 GOSUB 9490+II*W
9480 GOTO 9476
9481 LET P2=INT (L/F8+II**-IX)
9482 POKE 17016+E,P2
9483 POKE 17015+E,L-F8*P2
9484 LET E=E+II
9485 GOTO 9467
9486 IF NOT W THEN PRINT "$";Q-I
9487 IF W THEN LPRINT "$";Q-I
9488 STOP 
9489 GOTO SEARCH
9490 PRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9491 RETURN 
9492 LPRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9493 RETURN 
9499 STOP 
9500 REM %V%L%S%T
9501 CLS 
9502 PRINT ,,,,"   %V%A%R%I%A%B%L%E%S",,,
9503 LET E=16400
9504 GOSUB DB
9505 LET L=E-I
9506 LET T=Z0
9507 LET T=T+I
9508 LET L=L+I
9509 LET B=L
9510 IF LEN H$>I THEN IF H$( TO II)="H$" THEN GOSUB VLST+XX
9511 LET CH=PEEK L
9512 PRINT TAB III-LEN STR$ T;T;" ";
9512 LET TP=INT (CH/F5)
9514 LET CH=CH-TP*F5+F5
9515 LET H$=CHR$ CH
9516 GOSUB VLST-F5+F5*TP
9517 LET E=TP=II OR TP=VI
9518 IF E THEN PRINT H$;TAB XX+VI;B
9519 IF NOT E THEN PRINT H$;TAB XX+III-LEN STR$ Q;Q;TAB XX+VI;B
9520 GOTO VLST+VI
9521 PRINT ,,"   %E%N%D% %O%F% %L%I%S%T ";L
9522 LET H$="***"
9523 STOP 
9524 GOTO VLST
9532 REM %S%T%R%I%N%G
9533 LET H$=H$+"$ "
9534 LET E=L+I
9535 GOSUB DB
9536 FOR Q=I TO (E AND E<F4)+(F4 AND E>=F4)
9537 LET H$=H$+CHR$ PEEK (L+II+Q)
9538 NEXT Q
9539 LET L=L+II+E
9540 RETURN 
9564 REM %S%I%N%G%L
9565 LET Q=VAL H$
9566 LET L=L+FIV
9567 RETURN 
9596 REM %N%(%)
9597 LET H$=H$+"("
9598 LET I$=H$
9599 LET S=PEEK (L+III)
9600 FOR Q=I TO S
9601 LET E=L+II+II*Q
9602 GOSUB DB
9603 IF Q>=S THEN GOTO VLST+105
9604 LET H$=H$+STR$ E+","
9605 LET I$=I$+"1,"
9606 NEXT Q
9607 LET H$=H$+STR$ E+")"
9608 LET I$=I$+"1)"
9609 LET Q=VAL I$
9610 LET E=L+I
9611 GOSUB DB
9612 LET L=L+II+E
9613 RETURN 
9628 REM %M%U%L%T
9629 LET L=L+I
9630 LET CH=PEEK L
9631 IF INT (CH/F6)=II THEN GOTO VLST+133
9632 LET H$=H$+CHR$ CH
9633 GOTO VLST+F7
9634 LET H$=H$+CHR$ (CH-F7)
9635 LET Q=VAL H$
9636 LET L=L+FIV
9637 RETURN 
9660 REM %$%(%)
9661 LET H$=H$+"$("
9662 LET S=PEEK (L+III)
9663 FOR Q=I TO S
9664 LET E=L+II+II*Q
9665 GOSUB DB
9666 IF Q>=S THEN GOTO VLST+168
9667 LET H$=H$+STR$ E+","
9668 NEXT Q
9669 LET H$=H$+STR$ E+")"
9670 LET E=L+VI
9671 LET U=L+III+II*S
9672 GOSUB DB
9674 FOR Q=U TO U+(E AND E<F4)+(F4 AND E>=F4)
9675 LET H$=H$+CHR$ PEEK Q
9676 NEXT Q
9677 GOTO VLST+109
9692 REM %F%-%N
9693 LET Q=VAL H$
9694 LET H$=H$+" FOR-NEXT"
9695 LET L=L+XX-III
9696 RETURN 
9697 REM %D%T%B
9698 FOR J=LEN I$ TO I STEP -I
9699 IF I$(J)=" " THEN NEXT J
9700 LET I$=I$( TO J)
9701 RETURN 
9702 REM %D%B
9703 LET E=F8*PEEK (E+I)+PEEK E
9704 RETURN 
9705 REM %S%R%C%H
9706 CLS 
9707 PRINT AT IX,I;"WRITE YOUR STRING WITHOUT LINE NUMBER.  ADD A QUOTE AND PRECEDESTRING WITH",,,," LET H$=""",,,," THEN ENTER AND CONTINUE."
9708 LET E=17116
9709 STOP 
9710 POKE E+IX,LEN H$
9711 POKE E-I,247
9712 POKE E,66
9713 LET K=PEEK 16396+F8*PEEK 16397-17143
9714 LET S=INT (K/F8)
9715 LET K=K-F8*S
9716 POKE E+III,K
9717 POKE E+IV,S
9718 FOR E=I TO LEN H$
9719 POKE (E+17015),CODE H$(E)
9720 NEXT E
9721 CLS 
9722 PRINT ,,"""";H$;"""";TAB Z0;,,
9723 LET K=USR 16809
9724 IF K=55555 THEN GOTO 9740
9727 LET Q=K
9728 LET Q=Q-I
9729 IF PEEK Q<>118 THEN GOTO 9728
9730 IF K-Q<IV THEN GOTO 9723
9732 LET E=F8*PEEK (Q+I)+PEEK (Q+II)
9733 LET K=F8*PEEK (Q+IV)+PEEK (Q+III)
9734 LET I$=""
9735 FOR Q=Q+FIV TO Q+III+K
9736 LET I$=I$+CHR$ PEEK Q
9737 NEXT Q
9738 PRINT E;TAB FIV;I$
9739 GOTO 9723
9740 PRINT ,,"  % %S%E%A%R%C%H% %C%O%M%P%L%E%T%E% "
9741 STOP 
9742 GOTO 9706
9750 REM %S%P%Y
9751 PRINT AT XX+I,Z0;"LOOK AT NO./%QUIT/%HIGHER/%L0WER"
9752 INPUT H$
9753 IF H$<>"Q" THEN GOTO 9755
9754 STOP 
9755 IF H$<>"H" THEN GOTO 9758
9756 LET B=B+F4
9757 GOTO 9762
9758 IF H$<>"L" THEN GOTO 9761
9759 LET B=B-F4
9760 GOTO 9762
9761 LET B=VAL H$
9762 CLS 
9763 FOR E=B TO B+XX+I
9764 PRINT E;TAB VI;PEEK E;TAB TEN;":";CHR$ PEEK E;":";TAB XX;F8*PEEK (E+I)+PEEK E
9765 NEXT E
9766 GOTO 9752
9800 REM %P%U%R%G
9801 LET N(1)=USR 16900
9802 REM %I%N%I%T%I%A%L%I%Z%A%T%I%O%N%S
9810 LET I=1
9811 LET Z0=I-I
9812 LET II=I+I
9813 LET III=II+I
9814 LET IV=II+II
9815 LET FIV=IV+I
9816 LET VI=IV+II
9817 LET VII=VI+I
9818 LET VIII=IV+IV
9819 LET IX=VIII+I
9820 LET TEN=IX+I
9821 LET XX=II*TEN
9822 LET XXX=30
9823 LET F4=II*VIII
9824 LET F5=II*F4
9825 LET F6=II*F5
9826 LET F7=II*F6
9827 LET F8=256
9828 LET FF=F8-I
9829 LET IK=I/F8/F8
9840 REM %K%E%Y%S
9841 LET VLST=9501
9842 LET DB=9703
9843 LET PURG=9801
9844 LET MEM=9916
9845 LET ZZ=9953
9846 LET ZZZ=ZZ-I
9847 LET ZZZZ=ZZ-II
9848 LET SAVE=9900
9849 LET SYSV=9928
9850 LET MAP=8101
9851 LET SEARCH=9450
9852 LET SRCH=9706
9853 LET HELP=9961
9854 LET SPY=9751
9855 LET DISA=9000
9856 LET ERR=9103
9857 LET DTB=9698
9858 LET WCOD=9121
9859 LET WSTR=9136
9860 LET NTRY=HELP
9861 LET EDIT=9201
9892 CLS 
9893 PRINT ,,,,"* TO DELETE STRINGS AND ARRAYS, REDIMENSION THEM TO ZERO."
9894 PRINT ,,"   DIM (NAME)$(0)  OR"
9895 PRINT ,,"   DIM (NAME)(0)"
9896 PRINT ,,"   THIS WILL PULL ERROR 3/0 BUT"," THE JOB IS DONE."
9897 STOP 
9898 GOTO VLST
9899 REM %S%A%V%E
9900 CLS 
9901 PRINT ,,,,"""";Z$;""" IS TO BE SAVED.",,,"START RECORDER.  PRESS ANY KEY.",,,Q$,,
9902 PRINT "MODE IS ";"LOOPING" AND NOT (NTRY-SAVE);"HELP" AND NOT (NTRY-HELP);"LOAD-AND-GO" AND NOT (NTRY-1000)
9903 SLOW 
9904 IF NTRY<>SAVE THEN PAUSE 40000
9905 FOR N=F6 TO I STEP -I
9906 UNPLOT N-I,XXX
9907 NEXT N
9908 SAVE Z$
9909 FAST 
9910 CLS 
9911 PRINT Y$;X$
9912 PRINT AT IX+VI,VII;"PRESENTS***"
9913 GOSUB ZZZ
9914 GOTO NTRY
9915 REM %M%E%M
9916 LET L=F8*(PEEK 16387-PEEK 16413)+PEEK 16386-PEEK 16412
9917 LET E=INT (L/F5/F5)
9918 PRINT AT IX,Z0;"MEMORY LEFT IS:";E;" K, ";L-F5*F5*E;" BYTES.",,,"(";L;" BYTES)"
9919 IF L<F8+XX THEN PRINT ,,"CAUTION: LIST EDITING MAY BE IMPAIRED."
9920 STOP 
9921 GOTO MAP
9927 REM %S%Y%S%V
9928 LET E=II*CODE D$-75
9929 IF E<I OR E>13 THEN GOTO 9933
9930 LET E$="10141824260002"
9931 LET E=VAL E$(E TO E+I)+16386
9932 LET D$=STR$ (F8*PEEK (E+I)+PEEK E)
9933 RETURN 
9950 REM %S%L%E%E%P
9951 LET ZZ=ZZ+F8
9952 LET ZZ=ZZ+F7
9953 LET ZZ=ZZ+F6
9954 LET ZZ=ZZ+F5
9955 LET E=ZZ-ZZZ+F5
9956 LET ZZ=ZZZ+I
9957 PAUSE E
9958 POKE 16437,FF
9959 RETURN 
9960 REM %H%E%L%P
9961 CLS 
9962 LET PAGE=I
9963 LET H$="% %H%E%L%P%  PAGE "
9964 PRINT AT I,IX;H$;PAGE
9965 PRINT ,,"* USE GOTO FOR DESIRED LOCATION,",,"* LET Z$=""(YOUR PROGRAM NAME)""",,,"* LET NTRY=1000 IF YOU WANT YOUR PROGRAM TO RUN AFTER LOADING." 
9966 PRINT ,,"* Z$=""";Z$;""""
9967 LET I$="% %K%E%Y%W%O%R%D% %L%I%N%E% %F%U%N%C%T%I%O%N% "
9968 PRINT ,,I$,"""HELP""   9960 HERE.","""VLST""   9500 VARIABLE LIST.","""MEM""    9915 AVAILABLE MEMORY. ""SAVE""   9900 SAVE PROGRAM,"
9969 PRINT """NTRY""   HELP UNLESS CHANGED."
9970 PRINT """PURG""   9800 DELETE VARIABLES."
9971 PRINT """MAP""    8100 MEMORY MAP."
9972 PRINT """SPY""    9750 LOOK AT MEMORY."
9973 PRINT """DISA""   9000 DISASSEMBLE."
9974 LET PAGE=II
9975 PRINT 
9976 CLS 
9977 PRINT AT I,IX;H$;PAGE,,,I$
9978 PRINT """WCOD""   9120 DECODE TABLE."
9979 PRINT """WSTD""   9135 MNEMONICS."
9980 PRINT """SRCH""   9705 BASIC CODE."
9981 PRINT """SEARCH"" 9450 ROM SPACE."
9982 PRINT """EDIT""   9200 MACH CODE."
9983 PRINT "*""GOTO VLST"" CODES AS:","  :236:V:L:S:T: (5 BYTES)" 
9984 PRINT "*""GOTO 9500"" CODES AS:","  :235:9:5:0:0:126:EXP:B4:B3:B2:B1:B0: (12 BYTES)"
9985 PRINT "* USING VARIABLES IN PLACE OF   NUMBERS CAN SAVE MEMORY."
9986 PRINT "* USE:Z0,I,II,III,IV,FIV,VI,VII,VIII,IX,TEN,XX,XXX IN PLACE OF:0,1,2,3,4,5,6,7,8,9,10,20,30."
9987 PRINT "* LIST 9802 TO SEE."
9988 STOP 
9989 GOTO HELP
9997 REM %M%/%L% %C%0%D%E% %T%E%M%P%L%A%T%E%S
9998 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.......   /\.'
9999 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.........1.......   /\.'
Scroll to Top

Super Utility

Products: Super Utility
Developer(s): William J. Pedersen
Date: 1983
Type: Cassette
Platform(s): TS 1000

Utility for working with machine language programs and memory.

Content

Appears On

Related Products

Utility for working with machine language programs and memory.

Related Articles

Related Content

Image Gallery

Super Utility

Source Code

   1 REM %U%T%I%L%I%T%Y
   2 REM *************
   3 REM COPYRIGHT NOV 14, 1983 BY WILLIAM J. PEDERSEN. 1120 MERRIFIELD S.E., GRAND RAPIDS, MICHIGAN  49507
   4 REM REPRODUCTION OR USE OF THIS PROGRAM IS PROHIBITED WITHOUT EXPRESS WRITTEN PERMISSION.
   5 REM *************
   7 REM \7E\E6\E0\FE\C0\28\0E\F2\99\41\FE\80\28\07\F2\A2\41\FE\60\28\10\23\22\93\41\ED\5B\93\7B\19\23\23\C9\11\0C\00\19\11\06\00\19\C9\23\CB\7E\28\FB\18\F4\F5\D5\E5\2A\DB\42\ED\4B\DF\42\ED\5B\E7\42\1A\ED\B1\20\1B\22\DB\42\ED\43\DF\42\2B\ED\4B\E5\42\1A\ED\A1\20\DF\13\EA\C8\41\ED\4B\DB\42\18\21\01\03\D9\18\1C\F5\D5\E5\21\00\00\22\DB\42\21\FF\1F\22\DF\42\18\BF\00\00\D9\18\06
   8 REM \E1\D1\FD\2A\00\40\3E\1E\ED\47\F1\C9\F5\D5\E5\2A\10\40\22\DB\42\3E\80\BE\28\E6\CB\6E\F5\CD\78\41\22\DD\42\F1\20\08\2A\DD\42\22\DB\42\18\E7\CD\2E\42\2A\DB\42\18\DF\2A\DB\42\E5\ED\5B\DD\42\D5\AF\ED\52\EB\2A\1C\40\19\22\1C\40\2A\1A\40\19\22\1A\40\2A\14\40\E5\19\22\14\40\E1\D1\AF\ED\52\E5\C1\03\2A\DB\42\EB\ED\B0\E1\C9\1B\1B\1B\1B\1D\1B\1B\1B\1B\1B\1B\00\00\00\00\18\06
   9 REM \DC\07\F2\03\D9\FA\9C\AD\EA\78\42\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\57\1B\95\7B\A8\04\1B\1B\1B\1B\02\00\78\42\1B\1B\1B\1B\1B\1B\1E\1B\1B
8100 REM %M%A%P
8101 CLS 
8102 PRINT ,,"    % %M%E%M%O%R%Y% %M%A%P%  ";Z$
8103 LET G$="\##\##%P\:.\'.\':%V\:'\..\':%U%U\.'\.'1638420479204802457524576286712867232767ABCEFG0 PROGRAM =VARIABLES=AVAIL MEM=RAMTOP UP="
8104 LET H$="16509"
8105 LET Q=1
8106 LET S=37
8107 LET I$=CHR$ S
8108 FOR K=IV TO XX-I STEP FIV
8109 LET T=II*K+VII
8110 LET L=53.4+II*K/FIV
8111 LET D$=H$
8112 GOSUB SYSV
8113 LET TT=VAL D$
8114 LET D$=G$(L)
8115 GOSUB SYSV
8116 LET QQ=VAL D$
8117 IF QQ=Z0 THEN LET QQ=32768
8118 LET LL=54+II*K
8119 PRINT AT K-I,Z0;G$(LL TO LL+IX);QQ-TT;" BYTES."
8120 LET H$=G$(L+I)
8121 FOR N=Z0 TO 31
8122 PRINT AT K,N;G$(Q);
8123 LET B=13107.2+F7*N+819.2*K
8124 LET D$=I$
8125 GOSUB SYSV
8126 LET BB=VAL D$
8127 IF BB-B<F6 THEN PRINT AT K,N;G$(Q+I);
8128 IF BB>B+F7 THEN GOTO 8137
8129 LET Q=Q+II
8130 LET S=S+I
8131 LET D$=CHR$ S
8132 GOSUB SYSV
8133 LET I$=D$
8134 IF LEN I$<II THEN LET I$="65536"
8135 IF VAL I$>B+F7 THEN GOTO 8137
8136 GOTO 8130
8137 NEXT N
8138 PRINT G$(T TO T+IV);TAB 27;G$(T+FIV TO T+IX)
8139 NEXT K
8140 STOP 
8141 GOTO HELP
8999 REM % %D%I%S%A%S%S%E%M%B%L%E%R% 
9000 PRINT AT XX,Z0;"DISASSEMBLE STARTING WHERE?"
9001 INPUT WB
9002 CLS 
9003 LET WL=Z0
9004 LET WIA=WB
9005 LET WFS=Z0
9006 LET WFN=I
9007 LET WFK=Z0
9008 LET WF=Z0
9009 LET WFW=Z0
9010 LET WV=Z0
9011 LET G$=""
9012 LET WN=112
9013 LET WL=WL+I
9014 LET WP=PEEK WB
9015 IF WP<>221 AND WP<>253 THEN GOTO 9021
9016 IF WFK THEN GOTO ERR
9017 LET WF=I+(I AND WP=253)
9018 LET WFK=I
9019 LET WB=WB+I
9020 GOTO 9014
9021 IF WP<>203 THEN GOTO 9034
9022 LET WFN=Z0
9023 LET WJ=345
9024 LET WB=WB+I+WFK
9025 LET WP=PEEK WB
9026 LET W1=INT (WP/F6)
9027 LET W=WP-F6*W1
9028 LET W2=INT (W/VIII)
9029 LET W=W-VIII*W2
9030 IF WFK AND W<>VI THEN GOTO ERR
9031 IF W1 THEN LET T$(WJ)=CHR$ (97+W1)+CHR$ (F4+I+W2)+CHR$ (W+I)
9032 IF NOT W1 THEN LET T$(WJ)=CHR$ (49+W2)+CHR$ (W+I)+CHR$ 97
9033 GOTO 9042
9034 LET WJ=I+PEEK WB
9035 LET WW=Z0
9036 IF WP<>237 THEN GOTO 9040
9037 LET WB=WB+I
9038 LET WW=PEEK WB
9039 LET WJ=193+WW-(36 AND WW>159)
9040 IF WW>123 AND WW<160 OR WJ>344 THEN GOTO ERR
9041 LET WDIS=PEEK (WB+I)
9042 LET V$=""
9043 LET W0=CODE T$(WJ,I)
9044 IF W0=WN+IV THEN GOTO ERR
9045 IF W0<>WN-IV THEN GOTO 9048
9046 LET WV=VAL (W$(CODE T$(WJ,II)))
9047 LET G$=" "
9048 GOSUB 9066
9049 LET B$=I$+" "
9050 LET W0=CODE T$(WJ,II)
9051 GOSUB 9066
9052 IF I$="" THEN GOTO 9063
9053 IF WP=211 THEN LET I$="(N)"
9054 LET B$=B$+I$
9055 LET W0=CODE T$(WJ,III)
9056 GOSUB 9066
9057 IF I$="" THEN GOTO 9060
9058 IF WP=219 THEN LET I$="(N)"
9059 LET B$=B$+","+I$
9060 IF WFK AND NOT WFW THEN GOTO ERR
9061 LET V$=STR$ WV
9062 IF NOT LEN G$ AND WV=Z0 THEN LET V$=""
9063 PRINT WIA;TAB VI;B$;TAB XX-I;V$+G$
9064 LET WB=WB+I+WFS*WFN
9065 GOTO 9004
9066 LET I$=W$(W0)
9067 GOSUB DTB
9068 IF W0=WN+FIV THEN GOSUB 9094
9069 IF W0<>WN+VI THEN GOTO 9075
9070 LET WB=WB+WFK+I
9071 LET WFN=Z0
9072 LET WV=PEEK WB
9073 IF WP=211 OR WP=219 THEN GOTO 9078
9074 LET G$=":"+CHR$ WV+":"
9075 IF WV>=F5 THEN GOTO 9078
9076 LET W=F4+I+III*WV
9078 IF W0<WN+VII THEN GOTO 9085
9079 LET WB=WB+II
9080 LET G$=" "
9081 LET WFN=Z0
9082 LET E=WB-I
9083 GOSUB DB
9084 LET WV=E
9085 IF NOT WFK THEN GOTO 9092
9086 IF W0=VII OR W0=61 OR W0=WN THEN LET WFW=I
9087 IF W0<>VII THEN GOTO 9091
9088 LET WFS=I
9089 GOSUB 9095
9090 LET I$=W$(WN+WF, TO III)+I$+")"
9091 IF W0=61 THEN LET I$=W$(WN+WF,II TO III)
9092 IF W0=WN THEN LET I$=W$(WN+WF)
9093 RETURN 
9094 LET WB=WB+I
9095 LET W=WDIS
9096 IF W<F7 THEN GOTO 9098
9097 LET W=W-F8
9098 IF NOT WFK THEN LET W=W+II
9099 IF W>=Z0 THEN LET I$="+"+STR$ W
9100 IF W<Z0 THEN LET I$=STR$ W
9101 IF B$( TO II)="JR" OR B$( TO II)="DJ" THEN LET WV=WIA+W
9102 RETURN 
9103 PRINT "ERROR AT ";WIA;". ",
9104 FOR J=Z0 TO III
9105 PRINT PEEK (WIA+J);" ";
9106 NEXT J
9107 PRINT 
9108 GOTO 9004
9120 REM %W%C%O%D
9121 CLS 
9122 PRINT ,," T$(345,3) TABLE FOR DECODING","MOST Z80 INSTRUCTIONS.",,,"N   VALUES      INTERPRETATION",,,
9123 FOR N=I TO 345
9124 PRINT N;" ";
9125 FOR K=I TO III
9126 PRINT CODE T$(N,K);" ";
9127 NEXT K
9128 PRINT ,
9129 FOR K=I TO III
9130 PRINT W$(CODE T$(N,K));" ";
9131 NEXT K
9132 PRINT 
9133 NEXT N
9134 STOP 
9135 REM %W%S%T%R
9136 CLS 
9137 PRINT ,," W$(120,4) ARRAY FOR MNEMONICS.",,,
9138 FOR N=I TO 120
9139 PRINT TAB VI;"W$(";N;")=","""";W$(N);""""
9140 NEXT N
9141 STOP 
9142 GOTO WCOD
9200 REM %E%D%I%T
9201 CLS 
9202 LET L=9228
9203 LET M=9317
9206 PRINT ,,"% %M%A%C%H%I%N%E% %L%A%N%G%U%A%G%E% %E%D%I%T%O%R% ",,,"WHERE ABOVE 16759?  START ";
9207 INPUT B
9208 PRINT B,"SELECT BY NO."
9209 FOR N=VI TO F4+I
9210 PRINT AT N,F4;"                "
9211 NEXT N
9212 PRINT AT IV,XX;"NOW   ";B
9213 PRINT ,," 1 SINGLE BYTE",," 2 DOUBLE BYTE",," 3 LD HL,(NN)",," 4 LD (NN),HL",," 5 PUSH SEQ",," 6 LD (NN),BC",," 7 LD BC,(NN)",," 8 LD (NN),DE",," 9 LD DE,(NN)",,"10 SBC HL,BC",,"11 ADC HL,BC",,"12 SBC HL,DE",,"13 ADC HL,DE",,"14 JUMPS",,"15 %Q%U%I%T"
9214 INPUT N
9215 IF N<I OR N>F4-II THEN GOTO M
9216 PRINT AT N+FIV,F4;"% "
9217 GOTO L-F4+VI*N
9218 INPUT K
9219 IF K<0 OR K>FF THEN GOTO M
9220 POKE B,K
9221 LET B=B+I
9222 GOTO 9209
9224 INPUT K
9225 IF K<0 OR K>=F8*F8 THEN GOTO M
9226 POKE B+I,INT (K/F8)
9227 POKE B,K-F8*INT (K/F8)
9228 LET B=B+II
9229 GOTO 9209
9236 POKE B,XXX+N
9237 LET B=B+I
9238 GOTO L-IV
9242 POKE B,245
9243 POKE B+I,213
9244 POKE B+II,229
9245 LET B=B+I
9246 GOTO L
9266 POKE B,237  
9267 POKE B+I,XX-I+VIII*N  
9268 LET B=B+II
9269 GOTO L-IV
9290 POKE B,237  
9291 POKE B+I,VIII*N-F4+II  
9292 GOTO L
9296 PRINT AT F4,F4;"JUMP TO?"
9297 INPUT N
9298 IF N<16760 OR N>=F8*F8 THEN GOTO M
9299 LET W=(B-N)>F7+I OR B-N<-F7+II
9300 PRINT AT VI,F4;"WHICH CONDITION?",AT VIII,F4;" 1 DJNZ",AT IX,F4;" 2 NONE",AT TEN,F4;" 3 NZ",AT TEN+I,F4;" 4  Z",AT VI+VI,F4;" 5 NC",AT IX+IV,F4;" 6  C",AT F4-II,F4;" 7 PO",AT F4-I,F4;" 8 PE",AT F4,F4;" 9  P   ",AT F4+I,F4;"10  M"   
9301 INPUT S
9302 IF S<I OR S>TEN THEN GOTO M
9303 IF W OR S>VI THEN GOTO 9309
9304 LET N=N-B-II
9305 IF N>=F7 THEN LET N=F7-N
9306 POKE B,VIII+VIII*S
9307 POKE B+I,N
9308 GOTO L
9309 IF S=I THEN GOTO M
9310 POKE B,170+VIII*S
9311 IF S=II THEN POKE B,195
9312 LET B=B+I
9313 LET P3=INT (N/F8)
9314 POKE B,N-F8*P3
9315 POKE B+I,P3
9316 GOTO L
9317 CLS 
9318 PRINT AT IX,Z0;"%Q%U%I%T OR AN ERROR HAS OCCURRED.  THE LAST LOCATION WAS ";B;".","CONTINUE FOR DISASSEMBLER."
9319 STOP 
9320 GOTO DISA
9449 REM %S%E%A%R%C%H
9450 CLS 
9451 LET Q=Z0
9452 LET E=I
9453 PRINT ,,"OBJECTIVE/TITLE?",
9454 INPUT G$
9455 PRINT AT I,Z0;G$;"                ";AT II,Z0;"PRINT? %YES OR %NO",
9456 LET W=Z0
9457 INPUT H$
9458 IF LEN H$ THEN IF H$(I)="Y" THEN LET W=I
9459 PRINT AT II,Z0;"INPUT YOUR CODE          ",
9460 INPUT L
9461 IF L>FF THEN GOTO 9481
9462 PRINT AT II,Z0;"IF DOUBLE BYTE, ENTER ""D"""
9463 INPUT H$
9464 IF LEN H$ THEN IF H$(I)="D" THEN GOTO 9481
9465 POKE 17015+E,L
9466 LET E=E+I
9467 PRINT AT II,Z0;"ANOTHER ENTRY? %YES OR %NO",
9468 INPUT H$
9469 IF LEN H$ THEN IF H$(I)="Y" THEN GOTO 9459
9470 CLS 
9471 IF NOT W THEN PRINT ,,G$
9472 IF W THEN LPRINT G$
9473 POKE 17125,E-I
9474 LET K=USR 16860
9475 GOTO 9477
9476 LET K=USR 16809
9477 LET Q=Q+I
9478 IF K=55555 THEN GOTO 9486
9479 GOSUB 9490+II*W
9480 GOTO 9476
9481 LET P2=INT (L/F8+II**-IX)
9482 POKE 17016+E,P2
9483 POKE 17015+E,L-F8*P2
9484 LET E=E+II
9485 GOTO 9467
9486 IF NOT W THEN PRINT "$";Q-I
9487 IF W THEN LPRINT "$";Q-I
9488 STOP 
9489 GOTO SEARCH
9490 PRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9491 RETURN 
9492 LPRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9493 RETURN 
9499 STOP 
9500 REM %V%L%S%T
9501 CLS 
9502 PRINT ,,,,"   %V%A%R%I%A%B%L%E%S",,,
9503 LET E=16400
9504 GOSUB DB
9505 LET L=E-I
9506 LET T=Z0
9507 LET T=T+I
9508 LET L=L+I
9509 LET B=L
9510 IF LEN H$>I THEN IF H$( TO II)="H$" THEN GOSUB VLST+XX
9511 LET CH=PEEK L
9512 PRINT TAB III-LEN STR$ T;T;" ";
9512 LET TP=INT (CH/F5)
9514 LET CH=CH-TP*F5+F5
9515 LET H$=CHR$ CH
9516 GOSUB VLST-F5+F5*TP
9517 LET E=TP=II OR TP=VI
9518 IF E THEN PRINT H$;TAB XX+VI;B
9519 IF NOT E THEN PRINT H$;TAB XX+III-LEN STR$ Q;Q;TAB XX+VI;B
9520 GOTO VLST+VI
9521 PRINT ,,"   %E%N%D% %O%F% %L%I%S%T ";L
9522 LET H$="***"
9523 STOP 
9524 GOTO VLST
9532 REM %S%T%R%I%N%G
9533 LET H$=H$+"$ "
9534 LET E=L+I
9535 GOSUB DB
9536 FOR Q=I TO (E AND E<F4)+(F4 AND E>=F4)
9537 LET H$=H$+CHR$ PEEK (L+II+Q)
9538 NEXT Q
9539 LET L=L+II+E
9540 RETURN 
9564 REM %S%I%N%G%L
9565 LET Q=VAL H$
9566 LET L=L+FIV
9567 RETURN 
9596 REM %N%(%)
9597 LET H$=H$+"("
9598 LET I$=H$
9599 LET S=PEEK (L+III)
9600 FOR Q=I TO S
9601 LET E=L+II+II*Q
9602 GOSUB DB
9603 IF Q>=S THEN GOTO VLST+105
9604 LET H$=H$+STR$ E+","
9605 LET I$=I$+"1,"
9606 NEXT Q
9607 LET H$=H$+STR$ E+")"
9608 LET I$=I$+"1)"
9609 LET Q=VAL I$
9610 LET E=L+I
9611 GOSUB DB
9612 LET L=L+II+E
9613 RETURN 
9628 REM %M%U%L%T
9629 LET L=L+I
9630 LET CH=PEEK L
9631 IF INT (CH/F6)=II THEN GOTO VLST+133
9632 LET H$=H$+CHR$ CH
9633 GOTO VLST+F7
9634 LET H$=H$+CHR$ (CH-F7)
9635 LET Q=VAL H$
9636 LET L=L+FIV
9637 RETURN 
9660 REM %$%(%)
9661 LET H$=H$+"$("
9662 LET S=PEEK (L+III)
9663 FOR Q=I TO S
9664 LET E=L+II+II*Q
9665 GOSUB DB
9666 IF Q>=S THEN GOTO VLST+168
9667 LET H$=H$+STR$ E+","
9668 NEXT Q
9669 LET H$=H$+STR$ E+")"
9670 LET E=L+VI
9671 LET U=L+III+II*S
9672 GOSUB DB
9674 FOR Q=U TO U+(E AND E<F4)+(F4 AND E>=F4)
9675 LET H$=H$+CHR$ PEEK Q
9676 NEXT Q
9677 GOTO VLST+109
9692 REM %F%-%N
9693 LET Q=VAL H$
9694 LET H$=H$+" FOR-NEXT"
9695 LET L=L+XX-III
9696 RETURN 
9697 REM %D%T%B
9698 FOR J=LEN I$ TO I STEP -I
9699 IF I$(J)=" " THEN NEXT J
9700 LET I$=I$( TO J)
9701 RETURN 
9702 REM %D%B
9703 LET E=F8*PEEK (E+I)+PEEK E
9704 RETURN 
9705 REM %S%R%C%H
9706 CLS 
9707 PRINT AT IX,I;"WRITE YOUR STRING WITHOUT LINE NUMBER.  ADD A QUOTE AND PRECEDESTRING WITH",,,," LET H$=""",,,," THEN ENTER AND CONTINUE."
9708 LET E=17116
9709 STOP 
9710 POKE E+IX,LEN H$
9711 POKE E-I,247
9712 POKE E,66
9713 LET K=PEEK 16396+F8*PEEK 16397-17143
9714 LET S=INT (K/F8)
9715 LET K=K-F8*S
9716 POKE E+III,K
9717 POKE E+IV,S
9718 FOR E=I TO LEN H$
9719 POKE (E+17015),CODE H$(E)
9720 NEXT E
9721 CLS 
9722 PRINT ,,"""";H$;"""";TAB Z0;,,
9723 LET K=USR 16809
9724 IF K=55555 THEN GOTO 9740
9727 LET Q=K
9728 LET Q=Q-I
9729 IF PEEK Q<>118 THEN GOTO 9728
9730 IF K-Q<IV THEN GOTO 9723
9732 LET E=F8*PEEK (Q+I)+PEEK (Q+II)
9733 LET K=F8*PEEK (Q+IV)+PEEK (Q+III)
9734 LET I$=""
9735 FOR Q=Q+FIV TO Q+III+K
9736 LET I$=I$+CHR$ PEEK Q
9737 NEXT Q
9738 PRINT E;TAB FIV;I$
9739 GOTO 9723
9740 PRINT ,,"  % %S%E%A%R%C%H% %C%O%M%P%L%E%T%E% "
9741 STOP 
9742 GOTO 9706
9750 REM %S%P%Y
9751 PRINT AT XX+I,Z0;"LOOK AT NO./%QUIT/%HIGHER/%L0WER"
9752 INPUT H$
9753 IF H$<>"Q" THEN GOTO 9755
9754 STOP 
9755 IF H$<>"H" THEN GOTO 9758
9756 LET B=B+F4
9757 GOTO 9762
9758 IF H$<>"L" THEN GOTO 9761
9759 LET B=B-F4
9760 GOTO 9762
9761 LET B=VAL H$
9762 CLS 
9763 FOR E=B TO B+XX+I
9764 PRINT E;TAB VI;PEEK E;TAB TEN;":";CHR$ PEEK E;":";TAB XX;F8*PEEK (E+I)+PEEK E
9765 NEXT E
9766 GOTO 9752
9800 REM %P%U%R%G
9801 LET N(1)=USR 16900
9802 REM %I%N%I%T%I%A%L%I%Z%A%T%I%O%N%S
9810 LET I=1
9811 LET Z0=I-I
9812 LET II=I+I
9813 LET III=II+I
9814 LET IV=II+II
9815 LET FIV=IV+I
9816 LET VI=IV+II
9817 LET VII=VI+I
9818 LET VIII=IV+IV
9819 LET IX=VIII+I
9820 LET TEN=IX+I
9821 LET XX=II*TEN
9822 LET XXX=30
9823 LET F4=II*VIII
9824 LET F5=II*F4
9825 LET F6=II*F5
9826 LET F7=II*F6
9827 LET F8=256
9828 LET FF=F8-I
9829 LET IK=I/F8/F8
9840 REM %K%E%Y%S
9841 LET VLST=9501
9842 LET DB=9703
9843 LET PURG=9801
9844 LET MEM=9916
9845 LET ZZ=9953
9846 LET ZZZ=ZZ-I
9847 LET ZZZZ=ZZ-II
9848 LET SAVE=9900
9849 LET SYSV=9928
9850 LET MAP=8101
9851 LET SEARCH=9450
9852 LET SRCH=9706
9853 LET HELP=9961
9854 LET SPY=9751
9855 LET DISA=9000
9856 LET ERR=9103
9857 LET DTB=9698
9858 LET WCOD=9121
9859 LET WSTR=9136
9860 LET NTRY=HELP
9861 LET EDIT=9201
9892 CLS 
9893 PRINT ,,,,"* TO DELETE STRINGS AND ARRAYS, REDIMENSION THEM TO ZERO."
9894 PRINT ,,"   DIM (NAME)$(0)  OR"
9895 PRINT ,,"   DIM (NAME)(0)"
9896 PRINT ,,"   THIS WILL PULL ERROR 3/0 BUT"," THE JOB IS DONE."
9897 STOP 
9898 GOTO VLST
9899 REM %S%A%V%E
9900 CLS 
9901 PRINT ,,,,"""";Z$;""" IS TO BE SAVED.",,,"START RECORDER.  PRESS ANY KEY.",,,Q$,,
9902 PRINT "MODE IS ";"LOOPING" AND NOT (NTRY-SAVE);"HELP" AND NOT (NTRY-HELP);"LOAD-AND-GO" AND NOT (NTRY-1000)
9903 SLOW 
9904 IF NTRY<>SAVE THEN PAUSE 40000
9905 FOR N=F6 TO I STEP -I
9906 UNPLOT N-I,XXX
9907 NEXT N
9908 SAVE Z$
9909 FAST 
9910 CLS 
9911 PRINT Y$;X$
9912 PRINT AT IX+VI,VII;"PRESENTS***"
9913 GOSUB ZZZ
9914 GOTO NTRY
9915 REM %M%E%M
9916 LET L=F8*(PEEK 16387-PEEK 16413)+PEEK 16386-PEEK 16412
9917 LET E=INT (L/F5/F5)
9918 PRINT AT IX,Z0;"MEMORY LEFT IS:";E;" K, ";L-F5*F5*E;" BYTES.",,,"(";L;" BYTES)"
9919 IF L<F8+XX THEN PRINT ,,"CAUTION: LIST EDITING MAY BE IMPAIRED."
9920 STOP 
9921 GOTO MAP
9927 REM %S%Y%S%V
9928 LET E=II*CODE D$-75
9929 IF E<I OR E>13 THEN GOTO 9933
9930 LET E$="10141824260002"
9931 LET E=VAL E$(E TO E+I)+16386
9932 LET D$=STR$ (F8*PEEK (E+I)+PEEK E)
9933 RETURN 
9950 REM %S%L%E%E%P
9951 LET ZZ=ZZ+F8
9952 LET ZZ=ZZ+F7
9953 LET ZZ=ZZ+F6
9954 LET ZZ=ZZ+F5
9955 LET E=ZZ-ZZZ+F5
9956 LET ZZ=ZZZ+I
9957 PAUSE E
9958 POKE 16437,FF
9959 RETURN 
9960 REM %H%E%L%P
9961 CLS 
9962 LET PAGE=I
9963 LET H$="% %H%E%L%P%  PAGE "
9964 PRINT AT I,IX;H$;PAGE
9965 PRINT ,,"* USE GOTO FOR DESIRED LOCATION,",,"* LET Z$=""(YOUR PROGRAM NAME)""",,,"* LET NTRY=1000 IF YOU WANT YOUR PROGRAM TO RUN AFTER LOADING." 
9966 PRINT ,,"* Z$=""";Z$;""""
9967 LET I$="% %K%E%Y%W%O%R%D% %L%I%N%E% %F%U%N%C%T%I%O%N% "
9968 PRINT ,,I$,"""HELP""   9960 HERE.","""VLST""   9500 VARIABLE LIST.","""MEM""    9915 AVAILABLE MEMORY. ""SAVE""   9900 SAVE PROGRAM,"
9969 PRINT """NTRY""   HELP UNLESS CHANGED."
9970 PRINT """PURG""   9800 DELETE VARIABLES."
9971 PRINT """MAP""    8100 MEMORY MAP."
9972 PRINT """SPY""    9750 LOOK AT MEMORY."
9973 PRINT """DISA""   9000 DISASSEMBLE."
9974 LET PAGE=II
9975 PRINT 
9976 CLS 
9977 PRINT AT I,IX;H$;PAGE,,,I$
9978 PRINT """WCOD""   9120 DECODE TABLE."
9979 PRINT """WSTD""   9135 MNEMONICS."
9980 PRINT """SRCH""   9705 BASIC CODE."
9981 PRINT """SEARCH"" 9450 ROM SPACE."
9982 PRINT """EDIT""   9200 MACH CODE."
9983 PRINT "*""GOTO VLST"" CODES AS:","  :236:V:L:S:T: (5 BYTES)" 
9984 PRINT "*""GOTO 9500"" CODES AS:","  :235:9:5:0:0:126:EXP:B4:B3:B2:B1:B0: (12 BYTES)"
9985 PRINT "* USING VARIABLES IN PLACE OF   NUMBERS CAN SAVE MEMORY."
9986 PRINT "* USE:Z0,I,II,III,IV,FIV,VI,VII,VIII,IX,TEN,XX,XXX IN PLACE OF:0,1,2,3,4,5,6,7,8,9,10,20,30."
9987 PRINT "* LIST 9802 TO SEE."
9988 STOP 
9989 GOTO HELP
9997 REM %M%/%L% %C%0%D%E% %T%E%M%P%L%A%T%E%S
9998 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.......   /\.'
9999 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.........1.......   /\.'
Scroll to Top
\C9\CBE\FB\F4\F5\D5\E5

Super Utility

Products: Super Utility
Developer(s): William J. Pedersen
Date: 1983
Type: Cassette
Platform(s): TS 1000

Utility for working with machine language programs and memory.

Content

Appears On

Related Products

Utility for working with machine language programs and memory.

Related Articles

Related Content

Image Gallery

Super Utility

Source Code

   1 REM %U%T%I%L%I%T%Y
   2 REM *************
   3 REM COPYRIGHT NOV 14, 1983 BY WILLIAM J. PEDERSEN. 1120 MERRIFIELD S.E., GRAND RAPIDS, MICHIGAN  49507
   4 REM REPRODUCTION OR USE OF THIS PROGRAM IS PROHIBITED WITHOUT EXPRESS WRITTEN PERMISSION.
   5 REM *************
   7 REM \7E\E6\E0\FE\C0\28\0E\F2\99\41\FE\80\28\07\F2\A2\41\FE\60\28\10\23\22\93\41\ED\5B\93\7B\19\23\23\C9\11\0C\00\19\11\06\00\19\C9\23\CB\7E\28\FB\18\F4\F5\D5\E5\2A\DB\42\ED\4B\DF\42\ED\5B\E7\42\1A\ED\B1\20\1B\22\DB\42\ED\43\DF\42\2B\ED\4B\E5\42\1A\ED\A1\20\DF\13\EA\C8\41\ED\4B\DB\42\18\21\01\03\D9\18\1C\F5\D5\E5\21\00\00\22\DB\42\21\FF\1F\22\DF\42\18\BF\00\00\D9\18\06
   8 REM \E1\D1\FD\2A\00\40\3E\1E\ED\47\F1\C9\F5\D5\E5\2A\10\40\22\DB\42\3E\80\BE\28\E6\CB\6E\F5\CD\78\41\22\DD\42\F1\20\08\2A\DD\42\22\DB\42\18\E7\CD\2E\42\2A\DB\42\18\DF\2A\DB\42\E5\ED\5B\DD\42\D5\AF\ED\52\EB\2A\1C\40\19\22\1C\40\2A\1A\40\19\22\1A\40\2A\14\40\E5\19\22\14\40\E1\D1\AF\ED\52\E5\C1\03\2A\DB\42\EB\ED\B0\E1\C9\1B\1B\1B\1B\1D\1B\1B\1B\1B\1B\1B\00\00\00\00\18\06
   9 REM \DC\07\F2\03\D9\FA\9C\AD\EA\78\42\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\57\1B\95\7B\A8\04\1B\1B\1B\1B\02\00\78\42\1B\1B\1B\1B\1B\1B\1E\1B\1B
8100 REM %M%A%P
8101 CLS 
8102 PRINT ,,"    % %M%E%M%O%R%Y% %M%A%P%  ";Z$
8103 LET G$="\##\##%P\:.\'.\':%V\:'\..\':%U%U\.'\.'1638420479204802457524576286712867232767ABCEFG0 PROGRAM =VARIABLES=AVAIL MEM=RAMTOP UP="
8104 LET H$="16509"
8105 LET Q=1
8106 LET S=37
8107 LET I$=CHR$ S
8108 FOR K=IV TO XX-I STEP FIV
8109 LET T=II*K+VII
8110 LET L=53.4+II*K/FIV
8111 LET D$=H$
8112 GOSUB SYSV
8113 LET TT=VAL D$
8114 LET D$=G$(L)
8115 GOSUB SYSV
8116 LET QQ=VAL D$
8117 IF QQ=Z0 THEN LET QQ=32768
8118 LET LL=54+II*K
8119 PRINT AT K-I,Z0;G$(LL TO LL+IX);QQ-TT;" BYTES."
8120 LET H$=G$(L+I)
8121 FOR N=Z0 TO 31
8122 PRINT AT K,N;G$(Q);
8123 LET B=13107.2+F7*N+819.2*K
8124 LET D$=I$
8125 GOSUB SYSV
8126 LET BB=VAL D$
8127 IF BB-B<F6 THEN PRINT AT K,N;G$(Q+I);
8128 IF BB>B+F7 THEN GOTO 8137
8129 LET Q=Q+II
8130 LET S=S+I
8131 LET D$=CHR$ S
8132 GOSUB SYSV
8133 LET I$=D$
8134 IF LEN I$<II THEN LET I$="65536"
8135 IF VAL I$>B+F7 THEN GOTO 8137
8136 GOTO 8130
8137 NEXT N
8138 PRINT G$(T TO T+IV);TAB 27;G$(T+FIV TO T+IX)
8139 NEXT K
8140 STOP 
8141 GOTO HELP
8999 REM % %D%I%S%A%S%S%E%M%B%L%E%R% 
9000 PRINT AT XX,Z0;"DISASSEMBLE STARTING WHERE?"
9001 INPUT WB
9002 CLS 
9003 LET WL=Z0
9004 LET WIA=WB
9005 LET WFS=Z0
9006 LET WFN=I
9007 LET WFK=Z0
9008 LET WF=Z0
9009 LET WFW=Z0
9010 LET WV=Z0
9011 LET G$=""
9012 LET WN=112
9013 LET WL=WL+I
9014 LET WP=PEEK WB
9015 IF WP<>221 AND WP<>253 THEN GOTO 9021
9016 IF WFK THEN GOTO ERR
9017 LET WF=I+(I AND WP=253)
9018 LET WFK=I
9019 LET WB=WB+I
9020 GOTO 9014
9021 IF WP<>203 THEN GOTO 9034
9022 LET WFN=Z0
9023 LET WJ=345
9024 LET WB=WB+I+WFK
9025 LET WP=PEEK WB
9026 LET W1=INT (WP/F6)
9027 LET W=WP-F6*W1
9028 LET W2=INT (W/VIII)
9029 LET W=W-VIII*W2
9030 IF WFK AND W<>VI THEN GOTO ERR
9031 IF W1 THEN LET T$(WJ)=CHR$ (97+W1)+CHR$ (F4+I+W2)+CHR$ (W+I)
9032 IF NOT W1 THEN LET T$(WJ)=CHR$ (49+W2)+CHR$ (W+I)+CHR$ 97
9033 GOTO 9042
9034 LET WJ=I+PEEK WB
9035 LET WW=Z0
9036 IF WP<>237 THEN GOTO 9040
9037 LET WB=WB+I
9038 LET WW=PEEK WB
9039 LET WJ=193+WW-(36 AND WW>159)
9040 IF WW>123 AND WW<160 OR WJ>344 THEN GOTO ERR
9041 LET WDIS=PEEK (WB+I)
9042 LET V$=""
9043 LET W0=CODE T$(WJ,I)
9044 IF W0=WN+IV THEN GOTO ERR
9045 IF W0<>WN-IV THEN GOTO 9048
9046 LET WV=VAL (W$(CODE T$(WJ,II)))
9047 LET G$=" "
9048 GOSUB 9066
9049 LET B$=I$+" "
9050 LET W0=CODE T$(WJ,II)
9051 GOSUB 9066
9052 IF I$="" THEN GOTO 9063
9053 IF WP=211 THEN LET I$="(N)"
9054 LET B$=B$+I$
9055 LET W0=CODE T$(WJ,III)
9056 GOSUB 9066
9057 IF I$="" THEN GOTO 9060
9058 IF WP=219 THEN LET I$="(N)"
9059 LET B$=B$+","+I$
9060 IF WFK AND NOT WFW THEN GOTO ERR
9061 LET V$=STR$ WV
9062 IF NOT LEN G$ AND WV=Z0 THEN LET V$=""
9063 PRINT WIA;TAB VI;B$;TAB XX-I;V$+G$
9064 LET WB=WB+I+WFS*WFN
9065 GOTO 9004
9066 LET I$=W$(W0)
9067 GOSUB DTB
9068 IF W0=WN+FIV THEN GOSUB 9094
9069 IF W0<>WN+VI THEN GOTO 9075
9070 LET WB=WB+WFK+I
9071 LET WFN=Z0
9072 LET WV=PEEK WB
9073 IF WP=211 OR WP=219 THEN GOTO 9078
9074 LET G$=":"+CHR$ WV+":"
9075 IF WV>=F5 THEN GOTO 9078
9076 LET W=F4+I+III*WV
9078 IF W0<WN+VII THEN GOTO 9085
9079 LET WB=WB+II
9080 LET G$=" "
9081 LET WFN=Z0
9082 LET E=WB-I
9083 GOSUB DB
9084 LET WV=E
9085 IF NOT WFK THEN GOTO 9092
9086 IF W0=VII OR W0=61 OR W0=WN THEN LET WFW=I
9087 IF W0<>VII THEN GOTO 9091
9088 LET WFS=I
9089 GOSUB 9095
9090 LET I$=W$(WN+WF, TO III)+I$+")"
9091 IF W0=61 THEN LET I$=W$(WN+WF,II TO III)
9092 IF W0=WN THEN LET I$=W$(WN+WF)
9093 RETURN 
9094 LET WB=WB+I
9095 LET W=WDIS
9096 IF W<F7 THEN GOTO 9098
9097 LET W=W-F8
9098 IF NOT WFK THEN LET W=W+II
9099 IF W>=Z0 THEN LET I$="+"+STR$ W
9100 IF W<Z0 THEN LET I$=STR$ W
9101 IF B$( TO II)="JR" OR B$( TO II)="DJ" THEN LET WV=WIA+W
9102 RETURN 
9103 PRINT "ERROR AT ";WIA;". ",
9104 FOR J=Z0 TO III
9105 PRINT PEEK (WIA+J);" ";
9106 NEXT J
9107 PRINT 
9108 GOTO 9004
9120 REM %W%C%O%D
9121 CLS 
9122 PRINT ,," T$(345,3) TABLE FOR DECODING","MOST Z80 INSTRUCTIONS.",,,"N   VALUES      INTERPRETATION",,,
9123 FOR N=I TO 345
9124 PRINT N;" ";
9125 FOR K=I TO III
9126 PRINT CODE T$(N,K);" ";
9127 NEXT K
9128 PRINT ,
9129 FOR K=I TO III
9130 PRINT W$(CODE T$(N,K));" ";
9131 NEXT K
9132 PRINT 
9133 NEXT N
9134 STOP 
9135 REM %W%S%T%R
9136 CLS 
9137 PRINT ,," W$(120,4) ARRAY FOR MNEMONICS.",,,
9138 FOR N=I TO 120
9139 PRINT TAB VI;"W$(";N;")=","""";W$(N);""""
9140 NEXT N
9141 STOP 
9142 GOTO WCOD
9200 REM %E%D%I%T
9201 CLS 
9202 LET L=9228
9203 LET M=9317
9206 PRINT ,,"% %M%A%C%H%I%N%E% %L%A%N%G%U%A%G%E% %E%D%I%T%O%R% ",,,"WHERE ABOVE 16759?  START ";
9207 INPUT B
9208 PRINT B,"SELECT BY NO."
9209 FOR N=VI TO F4+I
9210 PRINT AT N,F4;"                "
9211 NEXT N
9212 PRINT AT IV,XX;"NOW   ";B
9213 PRINT ,," 1 SINGLE BYTE",," 2 DOUBLE BYTE",," 3 LD HL,(NN)",," 4 LD (NN),HL",," 5 PUSH SEQ",," 6 LD (NN),BC",," 7 LD BC,(NN)",," 8 LD (NN),DE",," 9 LD DE,(NN)",,"10 SBC HL,BC",,"11 ADC HL,BC",,"12 SBC HL,DE",,"13 ADC HL,DE",,"14 JUMPS",,"15 %Q%U%I%T"
9214 INPUT N
9215 IF N<I OR N>F4-II THEN GOTO M
9216 PRINT AT N+FIV,F4;"% "
9217 GOTO L-F4+VI*N
9218 INPUT K
9219 IF K<0 OR K>FF THEN GOTO M
9220 POKE B,K
9221 LET B=B+I
9222 GOTO 9209
9224 INPUT K
9225 IF K<0 OR K>=F8*F8 THEN GOTO M
9226 POKE B+I,INT (K/F8)
9227 POKE B,K-F8*INT (K/F8)
9228 LET B=B+II
9229 GOTO 9209
9236 POKE B,XXX+N
9237 LET B=B+I
9238 GOTO L-IV
9242 POKE B,245
9243 POKE B+I,213
9244 POKE B+II,229
9245 LET B=B+I
9246 GOTO L
9266 POKE B,237  
9267 POKE B+I,XX-I+VIII*N  
9268 LET B=B+II
9269 GOTO L-IV
9290 POKE B,237  
9291 POKE B+I,VIII*N-F4+II  
9292 GOTO L
9296 PRINT AT F4,F4;"JUMP TO?"
9297 INPUT N
9298 IF N<16760 OR N>=F8*F8 THEN GOTO M
9299 LET W=(B-N)>F7+I OR B-N<-F7+II
9300 PRINT AT VI,F4;"WHICH CONDITION?",AT VIII,F4;" 1 DJNZ",AT IX,F4;" 2 NONE",AT TEN,F4;" 3 NZ",AT TEN+I,F4;" 4  Z",AT VI+VI,F4;" 5 NC",AT IX+IV,F4;" 6  C",AT F4-II,F4;" 7 PO",AT F4-I,F4;" 8 PE",AT F4,F4;" 9  P   ",AT F4+I,F4;"10  M"   
9301 INPUT S
9302 IF S<I OR S>TEN THEN GOTO M
9303 IF W OR S>VI THEN GOTO 9309
9304 LET N=N-B-II
9305 IF N>=F7 THEN LET N=F7-N
9306 POKE B,VIII+VIII*S
9307 POKE B+I,N
9308 GOTO L
9309 IF S=I THEN GOTO M
9310 POKE B,170+VIII*S
9311 IF S=II THEN POKE B,195
9312 LET B=B+I
9313 LET P3=INT (N/F8)
9314 POKE B,N-F8*P3
9315 POKE B+I,P3
9316 GOTO L
9317 CLS 
9318 PRINT AT IX,Z0;"%Q%U%I%T OR AN ERROR HAS OCCURRED.  THE LAST LOCATION WAS ";B;".","CONTINUE FOR DISASSEMBLER."
9319 STOP 
9320 GOTO DISA
9449 REM %S%E%A%R%C%H
9450 CLS 
9451 LET Q=Z0
9452 LET E=I
9453 PRINT ,,"OBJECTIVE/TITLE?",
9454 INPUT G$
9455 PRINT AT I,Z0;G$;"                ";AT II,Z0;"PRINT? %YES OR %NO",
9456 LET W=Z0
9457 INPUT H$
9458 IF LEN H$ THEN IF H$(I)="Y" THEN LET W=I
9459 PRINT AT II,Z0;"INPUT YOUR CODE          ",
9460 INPUT L
9461 IF L>FF THEN GOTO 9481
9462 PRINT AT II,Z0;"IF DOUBLE BYTE, ENTER ""D"""
9463 INPUT H$
9464 IF LEN H$ THEN IF H$(I)="D" THEN GOTO 9481
9465 POKE 17015+E,L
9466 LET E=E+I
9467 PRINT AT II,Z0;"ANOTHER ENTRY? %YES OR %NO",
9468 INPUT H$
9469 IF LEN H$ THEN IF H$(I)="Y" THEN GOTO 9459
9470 CLS 
9471 IF NOT W THEN PRINT ,,G$
9472 IF W THEN LPRINT G$
9473 POKE 17125,E-I
9474 LET K=USR 16860
9475 GOTO 9477
9476 LET K=USR 16809
9477 LET Q=Q+I
9478 IF K=55555 THEN GOTO 9486
9479 GOSUB 9490+II*W
9480 GOTO 9476
9481 LET P2=INT (L/F8+II**-IX)
9482 POKE 17016+E,P2
9483 POKE 17015+E,L-F8*P2
9484 LET E=E+II
9485 GOTO 9467
9486 IF NOT W THEN PRINT "$";Q-I
9487 IF W THEN LPRINT "$";Q-I
9488 STOP 
9489 GOTO SEARCH
9490 PRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9491 RETURN 
9492 LPRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9493 RETURN 
9499 STOP 
9500 REM %V%L%S%T
9501 CLS 
9502 PRINT ,,,,"   %V%A%R%I%A%B%L%E%S",,,
9503 LET E=16400
9504 GOSUB DB
9505 LET L=E-I
9506 LET T=Z0
9507 LET T=T+I
9508 LET L=L+I
9509 LET B=L
9510 IF LEN H$>I THEN IF H$( TO II)="H$" THEN GOSUB VLST+XX
9511 LET CH=PEEK L
9512 PRINT TAB III-LEN STR$ T;T;" ";
9512 LET TP=INT (CH/F5)
9514 LET CH=CH-TP*F5+F5
9515 LET H$=CHR$ CH
9516 GOSUB VLST-F5+F5*TP
9517 LET E=TP=II OR TP=VI
9518 IF E THEN PRINT H$;TAB XX+VI;B
9519 IF NOT E THEN PRINT H$;TAB XX+III-LEN STR$ Q;Q;TAB XX+VI;B
9520 GOTO VLST+VI
9521 PRINT ,,"   %E%N%D% %O%F% %L%I%S%T ";L
9522 LET H$="***"
9523 STOP 
9524 GOTO VLST
9532 REM %S%T%R%I%N%G
9533 LET H$=H$+"$ "
9534 LET E=L+I
9535 GOSUB DB
9536 FOR Q=I TO (E AND E<F4)+(F4 AND E>=F4)
9537 LET H$=H$+CHR$ PEEK (L+II+Q)
9538 NEXT Q
9539 LET L=L+II+E
9540 RETURN 
9564 REM %S%I%N%G%L
9565 LET Q=VAL H$
9566 LET L=L+FIV
9567 RETURN 
9596 REM %N%(%)
9597 LET H$=H$+"("
9598 LET I$=H$
9599 LET S=PEEK (L+III)
9600 FOR Q=I TO S
9601 LET E=L+II+II*Q
9602 GOSUB DB
9603 IF Q>=S THEN GOTO VLST+105
9604 LET H$=H$+STR$ E+","
9605 LET I$=I$+"1,"
9606 NEXT Q
9607 LET H$=H$+STR$ E+")"
9608 LET I$=I$+"1)"
9609 LET Q=VAL I$
9610 LET E=L+I
9611 GOSUB DB
9612 LET L=L+II+E
9613 RETURN 
9628 REM %M%U%L%T
9629 LET L=L+I
9630 LET CH=PEEK L
9631 IF INT (CH/F6)=II THEN GOTO VLST+133
9632 LET H$=H$+CHR$ CH
9633 GOTO VLST+F7
9634 LET H$=H$+CHR$ (CH-F7)
9635 LET Q=VAL H$
9636 LET L=L+FIV
9637 RETURN 
9660 REM %$%(%)
9661 LET H$=H$+"$("
9662 LET S=PEEK (L+III)
9663 FOR Q=I TO S
9664 LET E=L+II+II*Q
9665 GOSUB DB
9666 IF Q>=S THEN GOTO VLST+168
9667 LET H$=H$+STR$ E+","
9668 NEXT Q
9669 LET H$=H$+STR$ E+")"
9670 LET E=L+VI
9671 LET U=L+III+II*S
9672 GOSUB DB
9674 FOR Q=U TO U+(E AND E<F4)+(F4 AND E>=F4)
9675 LET H$=H$+CHR$ PEEK Q
9676 NEXT Q
9677 GOTO VLST+109
9692 REM %F%-%N
9693 LET Q=VAL H$
9694 LET H$=H$+" FOR-NEXT"
9695 LET L=L+XX-III
9696 RETURN 
9697 REM %D%T%B
9698 FOR J=LEN I$ TO I STEP -I
9699 IF I$(J)=" " THEN NEXT J
9700 LET I$=I$( TO J)
9701 RETURN 
9702 REM %D%B
9703 LET E=F8*PEEK (E+I)+PEEK E
9704 RETURN 
9705 REM %S%R%C%H
9706 CLS 
9707 PRINT AT IX,I;"WRITE YOUR STRING WITHOUT LINE NUMBER.  ADD A QUOTE AND PRECEDESTRING WITH",,,," LET H$=""",,,," THEN ENTER AND CONTINUE."
9708 LET E=17116
9709 STOP 
9710 POKE E+IX,LEN H$
9711 POKE E-I,247
9712 POKE E,66
9713 LET K=PEEK 16396+F8*PEEK 16397-17143
9714 LET S=INT (K/F8)
9715 LET K=K-F8*S
9716 POKE E+III,K
9717 POKE E+IV,S
9718 FOR E=I TO LEN H$
9719 POKE (E+17015),CODE H$(E)
9720 NEXT E
9721 CLS 
9722 PRINT ,,"""";H$;"""";TAB Z0;,,
9723 LET K=USR 16809
9724 IF K=55555 THEN GOTO 9740
9727 LET Q=K
9728 LET Q=Q-I
9729 IF PEEK Q<>118 THEN GOTO 9728
9730 IF K-Q<IV THEN GOTO 9723
9732 LET E=F8*PEEK (Q+I)+PEEK (Q+II)
9733 LET K=F8*PEEK (Q+IV)+PEEK (Q+III)
9734 LET I$=""
9735 FOR Q=Q+FIV TO Q+III+K
9736 LET I$=I$+CHR$ PEEK Q
9737 NEXT Q
9738 PRINT E;TAB FIV;I$
9739 GOTO 9723
9740 PRINT ,,"  % %S%E%A%R%C%H% %C%O%M%P%L%E%T%E% "
9741 STOP 
9742 GOTO 9706
9750 REM %S%P%Y
9751 PRINT AT XX+I,Z0;"LOOK AT NO./%QUIT/%HIGHER/%L0WER"
9752 INPUT H$
9753 IF H$<>"Q" THEN GOTO 9755
9754 STOP 
9755 IF H$<>"H" THEN GOTO 9758
9756 LET B=B+F4
9757 GOTO 9762
9758 IF H$<>"L" THEN GOTO 9761
9759 LET B=B-F4
9760 GOTO 9762
9761 LET B=VAL H$
9762 CLS 
9763 FOR E=B TO B+XX+I
9764 PRINT E;TAB VI;PEEK E;TAB TEN;":";CHR$ PEEK E;":";TAB XX;F8*PEEK (E+I)+PEEK E
9765 NEXT E
9766 GOTO 9752
9800 REM %P%U%R%G
9801 LET N(1)=USR 16900
9802 REM %I%N%I%T%I%A%L%I%Z%A%T%I%O%N%S
9810 LET I=1
9811 LET Z0=I-I
9812 LET II=I+I
9813 LET III=II+I
9814 LET IV=II+II
9815 LET FIV=IV+I
9816 LET VI=IV+II
9817 LET VII=VI+I
9818 LET VIII=IV+IV
9819 LET IX=VIII+I
9820 LET TEN=IX+I
9821 LET XX=II*TEN
9822 LET XXX=30
9823 LET F4=II*VIII
9824 LET F5=II*F4
9825 LET F6=II*F5
9826 LET F7=II*F6
9827 LET F8=256
9828 LET FF=F8-I
9829 LET IK=I/F8/F8
9840 REM %K%E%Y%S
9841 LET VLST=9501
9842 LET DB=9703
9843 LET PURG=9801
9844 LET MEM=9916
9845 LET ZZ=9953
9846 LET ZZZ=ZZ-I
9847 LET ZZZZ=ZZ-II
9848 LET SAVE=9900
9849 LET SYSV=9928
9850 LET MAP=8101
9851 LET SEARCH=9450
9852 LET SRCH=9706
9853 LET HELP=9961
9854 LET SPY=9751
9855 LET DISA=9000
9856 LET ERR=9103
9857 LET DTB=9698
9858 LET WCOD=9121
9859 LET WSTR=9136
9860 LET NTRY=HELP
9861 LET EDIT=9201
9892 CLS 
9893 PRINT ,,,,"* TO DELETE STRINGS AND ARRAYS, REDIMENSION THEM TO ZERO."
9894 PRINT ,,"   DIM (NAME)$(0)  OR"
9895 PRINT ,,"   DIM (NAME)(0)"
9896 PRINT ,,"   THIS WILL PULL ERROR 3/0 BUT"," THE JOB IS DONE."
9897 STOP 
9898 GOTO VLST
9899 REM %S%A%V%E
9900 CLS 
9901 PRINT ,,,,"""";Z$;""" IS TO BE SAVED.",,,"START RECORDER.  PRESS ANY KEY.",,,Q$,,
9902 PRINT "MODE IS ";"LOOPING" AND NOT (NTRY-SAVE);"HELP" AND NOT (NTRY-HELP);"LOAD-AND-GO" AND NOT (NTRY-1000)
9903 SLOW 
9904 IF NTRY<>SAVE THEN PAUSE 40000
9905 FOR N=F6 TO I STEP -I
9906 UNPLOT N-I,XXX
9907 NEXT N
9908 SAVE Z$
9909 FAST 
9910 CLS 
9911 PRINT Y$;X$
9912 PRINT AT IX+VI,VII;"PRESENTS***"
9913 GOSUB ZZZ
9914 GOTO NTRY
9915 REM %M%E%M
9916 LET L=F8*(PEEK 16387-PEEK 16413)+PEEK 16386-PEEK 16412
9917 LET E=INT (L/F5/F5)
9918 PRINT AT IX,Z0;"MEMORY LEFT IS:";E;" K, ";L-F5*F5*E;" BYTES.",,,"(";L;" BYTES)"
9919 IF L<F8+XX THEN PRINT ,,"CAUTION: LIST EDITING MAY BE IMPAIRED."
9920 STOP 
9921 GOTO MAP
9927 REM %S%Y%S%V
9928 LET E=II*CODE D$-75
9929 IF E<I OR E>13 THEN GOTO 9933
9930 LET E$="10141824260002"
9931 LET E=VAL E$(E TO E+I)+16386
9932 LET D$=STR$ (F8*PEEK (E+I)+PEEK E)
9933 RETURN 
9950 REM %S%L%E%E%P
9951 LET ZZ=ZZ+F8
9952 LET ZZ=ZZ+F7
9953 LET ZZ=ZZ+F6
9954 LET ZZ=ZZ+F5
9955 LET E=ZZ-ZZZ+F5
9956 LET ZZ=ZZZ+I
9957 PAUSE E
9958 POKE 16437,FF
9959 RETURN 
9960 REM %H%E%L%P
9961 CLS 
9962 LET PAGE=I
9963 LET H$="% %H%E%L%P%  PAGE "
9964 PRINT AT I,IX;H$;PAGE
9965 PRINT ,,"* USE GOTO FOR DESIRED LOCATION,",,"* LET Z$=""(YOUR PROGRAM NAME)""",,,"* LET NTRY=1000 IF YOU WANT YOUR PROGRAM TO RUN AFTER LOADING." 
9966 PRINT ,,"* Z$=""";Z$;""""
9967 LET I$="% %K%E%Y%W%O%R%D% %L%I%N%E% %F%U%N%C%T%I%O%N% "
9968 PRINT ,,I$,"""HELP""   9960 HERE.","""VLST""   9500 VARIABLE LIST.","""MEM""    9915 AVAILABLE MEMORY. ""SAVE""   9900 SAVE PROGRAM,"
9969 PRINT """NTRY""   HELP UNLESS CHANGED."
9970 PRINT """PURG""   9800 DELETE VARIABLES."
9971 PRINT """MAP""    8100 MEMORY MAP."
9972 PRINT """SPY""    9750 LOOK AT MEMORY."
9973 PRINT """DISA""   9000 DISASSEMBLE."
9974 LET PAGE=II
9975 PRINT 
9976 CLS 
9977 PRINT AT I,IX;H$;PAGE,,,I$
9978 PRINT """WCOD""   9120 DECODE TABLE."
9979 PRINT """WSTD""   9135 MNEMONICS."
9980 PRINT """SRCH""   9705 BASIC CODE."
9981 PRINT """SEARCH"" 9450 ROM SPACE."
9982 PRINT """EDIT""   9200 MACH CODE."
9983 PRINT "*""GOTO VLST"" CODES AS:","  :236:V:L:S:T: (5 BYTES)" 
9984 PRINT "*""GOTO 9500"" CODES AS:","  :235:9:5:0:0:126:EXP:B4:B3:B2:B1:B0: (12 BYTES)"
9985 PRINT "* USING VARIABLES IN PLACE OF   NUMBERS CAN SAVE MEMORY."
9986 PRINT "* USE:Z0,I,II,III,IV,FIV,VI,VII,VIII,IX,TEN,XX,XXX IN PLACE OF:0,1,2,3,4,5,6,7,8,9,10,20,30."
9987 PRINT "* LIST 9802 TO SEE."
9988 STOP 
9989 GOTO HELP
9997 REM %M%/%L% %C%0%D%E% %T%E%M%P%L%A%T%E%S
9998 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.......   /\.'
9999 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.........1.......   /\.'
Scroll to Top
A\DB\EDB\DF\EDB\E7 itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"A\ED\B1 itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B\DB\ED\DF

Super Utility

Products: Super Utility
Developer(s): William J. Pedersen
Date: 1983
Type: Cassette
Platform(s): TS 1000

Utility for working with machine language programs and memory.

Content

Appears On

Related Products

Utility for working with machine language programs and memory.

Related Articles

Related Content

Image Gallery

Super Utility

Source Code

   1 REM %U%T%I%L%I%T%Y
   2 REM *************
   3 REM COPYRIGHT NOV 14, 1983 BY WILLIAM J. PEDERSEN. 1120 MERRIFIELD S.E., GRAND RAPIDS, MICHIGAN  49507
   4 REM REPRODUCTION OR USE OF THIS PROGRAM IS PROHIBITED WITHOUT EXPRESS WRITTEN PERMISSION.
   5 REM *************
   7 REM \7E\E6\E0\FE\C0\28\0E\F2\99\41\FE\80\28\07\F2\A2\41\FE\60\28\10\23\22\93\41\ED\5B\93\7B\19\23\23\C9\11\0C\00\19\11\06\00\19\C9\23\CB\7E\28\FB\18\F4\F5\D5\E5\2A\DB\42\ED\4B\DF\42\ED\5B\E7\42\1A\ED\B1\20\1B\22\DB\42\ED\43\DF\42\2B\ED\4B\E5\42\1A\ED\A1\20\DF\13\EA\C8\41\ED\4B\DB\42\18\21\01\03\D9\18\1C\F5\D5\E5\21\00\00\22\DB\42\21\FF\1F\22\DF\42\18\BF\00\00\D9\18\06
   8 REM \E1\D1\FD\2A\00\40\3E\1E\ED\47\F1\C9\F5\D5\E5\2A\10\40\22\DB\42\3E\80\BE\28\E6\CB\6E\F5\CD\78\41\22\DD\42\F1\20\08\2A\DD\42\22\DB\42\18\E7\CD\2E\42\2A\DB\42\18\DF\2A\DB\42\E5\ED\5B\DD\42\D5\AF\ED\52\EB\2A\1C\40\19\22\1C\40\2A\1A\40\19\22\1A\40\2A\14\40\E5\19\22\14\40\E1\D1\AF\ED\52\E5\C1\03\2A\DB\42\EB\ED\B0\E1\C9\1B\1B\1B\1B\1D\1B\1B\1B\1B\1B\1B\00\00\00\00\18\06
   9 REM \DC\07\F2\03\D9\FA\9C\AD\EA\78\42\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\57\1B\95\7B\A8\04\1B\1B\1B\1B\02\00\78\42\1B\1B\1B\1B\1B\1B\1E\1B\1B
8100 REM %M%A%P
8101 CLS 
8102 PRINT ,,"    % %M%E%M%O%R%Y% %M%A%P%  ";Z$
8103 LET G$="\##\##%P\:.\'.\':%V\:'\..\':%U%U\.'\.'1638420479204802457524576286712867232767ABCEFG0 PROGRAM =VARIABLES=AVAIL MEM=RAMTOP UP="
8104 LET H$="16509"
8105 LET Q=1
8106 LET S=37
8107 LET I$=CHR$ S
8108 FOR K=IV TO XX-I STEP FIV
8109 LET T=II*K+VII
8110 LET L=53.4+II*K/FIV
8111 LET D$=H$
8112 GOSUB SYSV
8113 LET TT=VAL D$
8114 LET D$=G$(L)
8115 GOSUB SYSV
8116 LET QQ=VAL D$
8117 IF QQ=Z0 THEN LET QQ=32768
8118 LET LL=54+II*K
8119 PRINT AT K-I,Z0;G$(LL TO LL+IX);QQ-TT;" BYTES."
8120 LET H$=G$(L+I)
8121 FOR N=Z0 TO 31
8122 PRINT AT K,N;G$(Q);
8123 LET B=13107.2+F7*N+819.2*K
8124 LET D$=I$
8125 GOSUB SYSV
8126 LET BB=VAL D$
8127 IF BB-B<F6 THEN PRINT AT K,N;G$(Q+I);
8128 IF BB>B+F7 THEN GOTO 8137
8129 LET Q=Q+II
8130 LET S=S+I
8131 LET D$=CHR$ S
8132 GOSUB SYSV
8133 LET I$=D$
8134 IF LEN I$<II THEN LET I$="65536"
8135 IF VAL I$>B+F7 THEN GOTO 8137
8136 GOTO 8130
8137 NEXT N
8138 PRINT G$(T TO T+IV);TAB 27;G$(T+FIV TO T+IX)
8139 NEXT K
8140 STOP 
8141 GOTO HELP
8999 REM % %D%I%S%A%S%S%E%M%B%L%E%R% 
9000 PRINT AT XX,Z0;"DISASSEMBLE STARTING WHERE?"
9001 INPUT WB
9002 CLS 
9003 LET WL=Z0
9004 LET WIA=WB
9005 LET WFS=Z0
9006 LET WFN=I
9007 LET WFK=Z0
9008 LET WF=Z0
9009 LET WFW=Z0
9010 LET WV=Z0
9011 LET G$=""
9012 LET WN=112
9013 LET WL=WL+I
9014 LET WP=PEEK WB
9015 IF WP<>221 AND WP<>253 THEN GOTO 9021
9016 IF WFK THEN GOTO ERR
9017 LET WF=I+(I AND WP=253)
9018 LET WFK=I
9019 LET WB=WB+I
9020 GOTO 9014
9021 IF WP<>203 THEN GOTO 9034
9022 LET WFN=Z0
9023 LET WJ=345
9024 LET WB=WB+I+WFK
9025 LET WP=PEEK WB
9026 LET W1=INT (WP/F6)
9027 LET W=WP-F6*W1
9028 LET W2=INT (W/VIII)
9029 LET W=W-VIII*W2
9030 IF WFK AND W<>VI THEN GOTO ERR
9031 IF W1 THEN LET T$(WJ)=CHR$ (97+W1)+CHR$ (F4+I+W2)+CHR$ (W+I)
9032 IF NOT W1 THEN LET T$(WJ)=CHR$ (49+W2)+CHR$ (W+I)+CHR$ 97
9033 GOTO 9042
9034 LET WJ=I+PEEK WB
9035 LET WW=Z0
9036 IF WP<>237 THEN GOTO 9040
9037 LET WB=WB+I
9038 LET WW=PEEK WB
9039 LET WJ=193+WW-(36 AND WW>159)
9040 IF WW>123 AND WW<160 OR WJ>344 THEN GOTO ERR
9041 LET WDIS=PEEK (WB+I)
9042 LET V$=""
9043 LET W0=CODE T$(WJ,I)
9044 IF W0=WN+IV THEN GOTO ERR
9045 IF W0<>WN-IV THEN GOTO 9048
9046 LET WV=VAL (W$(CODE T$(WJ,II)))
9047 LET G$=" "
9048 GOSUB 9066
9049 LET B$=I$+" "
9050 LET W0=CODE T$(WJ,II)
9051 GOSUB 9066
9052 IF I$="" THEN GOTO 9063
9053 IF WP=211 THEN LET I$="(N)"
9054 LET B$=B$+I$
9055 LET W0=CODE T$(WJ,III)
9056 GOSUB 9066
9057 IF I$="" THEN GOTO 9060
9058 IF WP=219 THEN LET I$="(N)"
9059 LET B$=B$+","+I$
9060 IF WFK AND NOT WFW THEN GOTO ERR
9061 LET V$=STR$ WV
9062 IF NOT LEN G$ AND WV=Z0 THEN LET V$=""
9063 PRINT WIA;TAB VI;B$;TAB XX-I;V$+G$
9064 LET WB=WB+I+WFS*WFN
9065 GOTO 9004
9066 LET I$=W$(W0)
9067 GOSUB DTB
9068 IF W0=WN+FIV THEN GOSUB 9094
9069 IF W0<>WN+VI THEN GOTO 9075
9070 LET WB=WB+WFK+I
9071 LET WFN=Z0
9072 LET WV=PEEK WB
9073 IF WP=211 OR WP=219 THEN GOTO 9078
9074 LET G$=":"+CHR$ WV+":"
9075 IF WV>=F5 THEN GOTO 9078
9076 LET W=F4+I+III*WV
9078 IF W0<WN+VII THEN GOTO 9085
9079 LET WB=WB+II
9080 LET G$=" "
9081 LET WFN=Z0
9082 LET E=WB-I
9083 GOSUB DB
9084 LET WV=E
9085 IF NOT WFK THEN GOTO 9092
9086 IF W0=VII OR W0=61 OR W0=WN THEN LET WFW=I
9087 IF W0<>VII THEN GOTO 9091
9088 LET WFS=I
9089 GOSUB 9095
9090 LET I$=W$(WN+WF, TO III)+I$+")"
9091 IF W0=61 THEN LET I$=W$(WN+WF,II TO III)
9092 IF W0=WN THEN LET I$=W$(WN+WF)
9093 RETURN 
9094 LET WB=WB+I
9095 LET W=WDIS
9096 IF W<F7 THEN GOTO 9098
9097 LET W=W-F8
9098 IF NOT WFK THEN LET W=W+II
9099 IF W>=Z0 THEN LET I$="+"+STR$ W
9100 IF W<Z0 THEN LET I$=STR$ W
9101 IF B$( TO II)="JR" OR B$( TO II)="DJ" THEN LET WV=WIA+W
9102 RETURN 
9103 PRINT "ERROR AT ";WIA;". ",
9104 FOR J=Z0 TO III
9105 PRINT PEEK (WIA+J);" ";
9106 NEXT J
9107 PRINT 
9108 GOTO 9004
9120 REM %W%C%O%D
9121 CLS 
9122 PRINT ,," T$(345,3) TABLE FOR DECODING","MOST Z80 INSTRUCTIONS.",,,"N   VALUES      INTERPRETATION",,,
9123 FOR N=I TO 345
9124 PRINT N;" ";
9125 FOR K=I TO III
9126 PRINT CODE T$(N,K);" ";
9127 NEXT K
9128 PRINT ,
9129 FOR K=I TO III
9130 PRINT W$(CODE T$(N,K));" ";
9131 NEXT K
9132 PRINT 
9133 NEXT N
9134 STOP 
9135 REM %W%S%T%R
9136 CLS 
9137 PRINT ,," W$(120,4) ARRAY FOR MNEMONICS.",,,
9138 FOR N=I TO 120
9139 PRINT TAB VI;"W$(";N;")=","""";W$(N);""""
9140 NEXT N
9141 STOP 
9142 GOTO WCOD
9200 REM %E%D%I%T
9201 CLS 
9202 LET L=9228
9203 LET M=9317
9206 PRINT ,,"% %M%A%C%H%I%N%E% %L%A%N%G%U%A%G%E% %E%D%I%T%O%R% ",,,"WHERE ABOVE 16759?  START ";
9207 INPUT B
9208 PRINT B,"SELECT BY NO."
9209 FOR N=VI TO F4+I
9210 PRINT AT N,F4;"                "
9211 NEXT N
9212 PRINT AT IV,XX;"NOW   ";B
9213 PRINT ,," 1 SINGLE BYTE",," 2 DOUBLE BYTE",," 3 LD HL,(NN)",," 4 LD (NN),HL",," 5 PUSH SEQ",," 6 LD (NN),BC",," 7 LD BC,(NN)",," 8 LD (NN),DE",," 9 LD DE,(NN)",,"10 SBC HL,BC",,"11 ADC HL,BC",,"12 SBC HL,DE",,"13 ADC HL,DE",,"14 JUMPS",,"15 %Q%U%I%T"
9214 INPUT N
9215 IF N<I OR N>F4-II THEN GOTO M
9216 PRINT AT N+FIV,F4;"% "
9217 GOTO L-F4+VI*N
9218 INPUT K
9219 IF K<0 OR K>FF THEN GOTO M
9220 POKE B,K
9221 LET B=B+I
9222 GOTO 9209
9224 INPUT K
9225 IF K<0 OR K>=F8*F8 THEN GOTO M
9226 POKE B+I,INT (K/F8)
9227 POKE B,K-F8*INT (K/F8)
9228 LET B=B+II
9229 GOTO 9209
9236 POKE B,XXX+N
9237 LET B=B+I
9238 GOTO L-IV
9242 POKE B,245
9243 POKE B+I,213
9244 POKE B+II,229
9245 LET B=B+I
9246 GOTO L
9266 POKE B,237  
9267 POKE B+I,XX-I+VIII*N  
9268 LET B=B+II
9269 GOTO L-IV
9290 POKE B,237  
9291 POKE B+I,VIII*N-F4+II  
9292 GOTO L
9296 PRINT AT F4,F4;"JUMP TO?"
9297 INPUT N
9298 IF N<16760 OR N>=F8*F8 THEN GOTO M
9299 LET W=(B-N)>F7+I OR B-N<-F7+II
9300 PRINT AT VI,F4;"WHICH CONDITION?",AT VIII,F4;" 1 DJNZ",AT IX,F4;" 2 NONE",AT TEN,F4;" 3 NZ",AT TEN+I,F4;" 4  Z",AT VI+VI,F4;" 5 NC",AT IX+IV,F4;" 6  C",AT F4-II,F4;" 7 PO",AT F4-I,F4;" 8 PE",AT F4,F4;" 9  P   ",AT F4+I,F4;"10  M"   
9301 INPUT S
9302 IF S<I OR S>TEN THEN GOTO M
9303 IF W OR S>VI THEN GOTO 9309
9304 LET N=N-B-II
9305 IF N>=F7 THEN LET N=F7-N
9306 POKE B,VIII+VIII*S
9307 POKE B+I,N
9308 GOTO L
9309 IF S=I THEN GOTO M
9310 POKE B,170+VIII*S
9311 IF S=II THEN POKE B,195
9312 LET B=B+I
9313 LET P3=INT (N/F8)
9314 POKE B,N-F8*P3
9315 POKE B+I,P3
9316 GOTO L
9317 CLS 
9318 PRINT AT IX,Z0;"%Q%U%I%T OR AN ERROR HAS OCCURRED.  THE LAST LOCATION WAS ";B;".","CONTINUE FOR DISASSEMBLER."
9319 STOP 
9320 GOTO DISA
9449 REM %S%E%A%R%C%H
9450 CLS 
9451 LET Q=Z0
9452 LET E=I
9453 PRINT ,,"OBJECTIVE/TITLE?",
9454 INPUT G$
9455 PRINT AT I,Z0;G$;"                ";AT II,Z0;"PRINT? %YES OR %NO",
9456 LET W=Z0
9457 INPUT H$
9458 IF LEN H$ THEN IF H$(I)="Y" THEN LET W=I
9459 PRINT AT II,Z0;"INPUT YOUR CODE          ",
9460 INPUT L
9461 IF L>FF THEN GOTO 9481
9462 PRINT AT II,Z0;"IF DOUBLE BYTE, ENTER ""D"""
9463 INPUT H$
9464 IF LEN H$ THEN IF H$(I)="D" THEN GOTO 9481
9465 POKE 17015+E,L
9466 LET E=E+I
9467 PRINT AT II,Z0;"ANOTHER ENTRY? %YES OR %NO",
9468 INPUT H$
9469 IF LEN H$ THEN IF H$(I)="Y" THEN GOTO 9459
9470 CLS 
9471 IF NOT W THEN PRINT ,,G$
9472 IF W THEN LPRINT G$
9473 POKE 17125,E-I
9474 LET K=USR 16860
9475 GOTO 9477
9476 LET K=USR 16809
9477 LET Q=Q+I
9478 IF K=55555 THEN GOTO 9486
9479 GOSUB 9490+II*W
9480 GOTO 9476
9481 LET P2=INT (L/F8+II**-IX)
9482 POKE 17016+E,P2
9483 POKE 17015+E,L-F8*P2
9484 LET E=E+II
9485 GOTO 9467
9486 IF NOT W THEN PRINT "$";Q-I
9487 IF W THEN LPRINT "$";Q-I
9488 STOP 
9489 GOTO SEARCH
9490 PRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9491 RETURN 
9492 LPRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9493 RETURN 
9499 STOP 
9500 REM %V%L%S%T
9501 CLS 
9502 PRINT ,,,,"   %V%A%R%I%A%B%L%E%S",,,
9503 LET E=16400
9504 GOSUB DB
9505 LET L=E-I
9506 LET T=Z0
9507 LET T=T+I
9508 LET L=L+I
9509 LET B=L
9510 IF LEN H$>I THEN IF H$( TO II)="H$" THEN GOSUB VLST+XX
9511 LET CH=PEEK L
9512 PRINT TAB III-LEN STR$ T;T;" ";
9512 LET TP=INT (CH/F5)
9514 LET CH=CH-TP*F5+F5
9515 LET H$=CHR$ CH
9516 GOSUB VLST-F5+F5*TP
9517 LET E=TP=II OR TP=VI
9518 IF E THEN PRINT H$;TAB XX+VI;B
9519 IF NOT E THEN PRINT H$;TAB XX+III-LEN STR$ Q;Q;TAB XX+VI;B
9520 GOTO VLST+VI
9521 PRINT ,,"   %E%N%D% %O%F% %L%I%S%T ";L
9522 LET H$="***"
9523 STOP 
9524 GOTO VLST
9532 REM %S%T%R%I%N%G
9533 LET H$=H$+"$ "
9534 LET E=L+I
9535 GOSUB DB
9536 FOR Q=I TO (E AND E<F4)+(F4 AND E>=F4)
9537 LET H$=H$+CHR$ PEEK (L+II+Q)
9538 NEXT Q
9539 LET L=L+II+E
9540 RETURN 
9564 REM %S%I%N%G%L
9565 LET Q=VAL H$
9566 LET L=L+FIV
9567 RETURN 
9596 REM %N%(%)
9597 LET H$=H$+"("
9598 LET I$=H$
9599 LET S=PEEK (L+III)
9600 FOR Q=I TO S
9601 LET E=L+II+II*Q
9602 GOSUB DB
9603 IF Q>=S THEN GOTO VLST+105
9604 LET H$=H$+STR$ E+","
9605 LET I$=I$+"1,"
9606 NEXT Q
9607 LET H$=H$+STR$ E+")"
9608 LET I$=I$+"1)"
9609 LET Q=VAL I$
9610 LET E=L+I
9611 GOSUB DB
9612 LET L=L+II+E
9613 RETURN 
9628 REM %M%U%L%T
9629 LET L=L+I
9630 LET CH=PEEK L
9631 IF INT (CH/F6)=II THEN GOTO VLST+133
9632 LET H$=H$+CHR$ CH
9633 GOTO VLST+F7
9634 LET H$=H$+CHR$ (CH-F7)
9635 LET Q=VAL H$
9636 LET L=L+FIV
9637 RETURN 
9660 REM %$%(%)
9661 LET H$=H$+"$("
9662 LET S=PEEK (L+III)
9663 FOR Q=I TO S
9664 LET E=L+II+II*Q
9665 GOSUB DB
9666 IF Q>=S THEN GOTO VLST+168
9667 LET H$=H$+STR$ E+","
9668 NEXT Q
9669 LET H$=H$+STR$ E+")"
9670 LET E=L+VI
9671 LET U=L+III+II*S
9672 GOSUB DB
9674 FOR Q=U TO U+(E AND E<F4)+(F4 AND E>=F4)
9675 LET H$=H$+CHR$ PEEK Q
9676 NEXT Q
9677 GOTO VLST+109
9692 REM %F%-%N
9693 LET Q=VAL H$
9694 LET H$=H$+" FOR-NEXT"
9695 LET L=L+XX-III
9696 RETURN 
9697 REM %D%T%B
9698 FOR J=LEN I$ TO I STEP -I
9699 IF I$(J)=" " THEN NEXT J
9700 LET I$=I$( TO J)
9701 RETURN 
9702 REM %D%B
9703 LET E=F8*PEEK (E+I)+PEEK E
9704 RETURN 
9705 REM %S%R%C%H
9706 CLS 
9707 PRINT AT IX,I;"WRITE YOUR STRING WITHOUT LINE NUMBER.  ADD A QUOTE AND PRECEDESTRING WITH",,,," LET H$=""",,,," THEN ENTER AND CONTINUE."
9708 LET E=17116
9709 STOP 
9710 POKE E+IX,LEN H$
9711 POKE E-I,247
9712 POKE E,66
9713 LET K=PEEK 16396+F8*PEEK 16397-17143
9714 LET S=INT (K/F8)
9715 LET K=K-F8*S
9716 POKE E+III,K
9717 POKE E+IV,S
9718 FOR E=I TO LEN H$
9719 POKE (E+17015),CODE H$(E)
9720 NEXT E
9721 CLS 
9722 PRINT ,,"""";H$;"""";TAB Z0;,,
9723 LET K=USR 16809
9724 IF K=55555 THEN GOTO 9740
9727 LET Q=K
9728 LET Q=Q-I
9729 IF PEEK Q<>118 THEN GOTO 9728
9730 IF K-Q<IV THEN GOTO 9723
9732 LET E=F8*PEEK (Q+I)+PEEK (Q+II)
9733 LET K=F8*PEEK (Q+IV)+PEEK (Q+III)
9734 LET I$=""
9735 FOR Q=Q+FIV TO Q+III+K
9736 LET I$=I$+CHR$ PEEK Q
9737 NEXT Q
9738 PRINT E;TAB FIV;I$
9739 GOTO 9723
9740 PRINT ,,"  % %S%E%A%R%C%H% %C%O%M%P%L%E%T%E% "
9741 STOP 
9742 GOTO 9706
9750 REM %S%P%Y
9751 PRINT AT XX+I,Z0;"LOOK AT NO./%QUIT/%HIGHER/%L0WER"
9752 INPUT H$
9753 IF H$<>"Q" THEN GOTO 9755
9754 STOP 
9755 IF H$<>"H" THEN GOTO 9758
9756 LET B=B+F4
9757 GOTO 9762
9758 IF H$<>"L" THEN GOTO 9761
9759 LET B=B-F4
9760 GOTO 9762
9761 LET B=VAL H$
9762 CLS 
9763 FOR E=B TO B+XX+I
9764 PRINT E;TAB VI;PEEK E;TAB TEN;":";CHR$ PEEK E;":";TAB XX;F8*PEEK (E+I)+PEEK E
9765 NEXT E
9766 GOTO 9752
9800 REM %P%U%R%G
9801 LET N(1)=USR 16900
9802 REM %I%N%I%T%I%A%L%I%Z%A%T%I%O%N%S
9810 LET I=1
9811 LET Z0=I-I
9812 LET II=I+I
9813 LET III=II+I
9814 LET IV=II+II
9815 LET FIV=IV+I
9816 LET VI=IV+II
9817 LET VII=VI+I
9818 LET VIII=IV+IV
9819 LET IX=VIII+I
9820 LET TEN=IX+I
9821 LET XX=II*TEN
9822 LET XXX=30
9823 LET F4=II*VIII
9824 LET F5=II*F4
9825 LET F6=II*F5
9826 LET F7=II*F6
9827 LET F8=256
9828 LET FF=F8-I
9829 LET IK=I/F8/F8
9840 REM %K%E%Y%S
9841 LET VLST=9501
9842 LET DB=9703
9843 LET PURG=9801
9844 LET MEM=9916
9845 LET ZZ=9953
9846 LET ZZZ=ZZ-I
9847 LET ZZZZ=ZZ-II
9848 LET SAVE=9900
9849 LET SYSV=9928
9850 LET MAP=8101
9851 LET SEARCH=9450
9852 LET SRCH=9706
9853 LET HELP=9961
9854 LET SPY=9751
9855 LET DISA=9000
9856 LET ERR=9103
9857 LET DTB=9698
9858 LET WCOD=9121
9859 LET WSTR=9136
9860 LET NTRY=HELP
9861 LET EDIT=9201
9892 CLS 
9893 PRINT ,,,,"* TO DELETE STRINGS AND ARRAYS, REDIMENSION THEM TO ZERO."
9894 PRINT ,,"   DIM (NAME)$(0)  OR"
9895 PRINT ,,"   DIM (NAME)(0)"
9896 PRINT ,,"   THIS WILL PULL ERROR 3/0 BUT"," THE JOB IS DONE."
9897 STOP 
9898 GOTO VLST
9899 REM %S%A%V%E
9900 CLS 
9901 PRINT ,,,,"""";Z$;""" IS TO BE SAVED.",,,"START RECORDER.  PRESS ANY KEY.",,,Q$,,
9902 PRINT "MODE IS ";"LOOPING" AND NOT (NTRY-SAVE);"HELP" AND NOT (NTRY-HELP);"LOAD-AND-GO" AND NOT (NTRY-1000)
9903 SLOW 
9904 IF NTRY<>SAVE THEN PAUSE 40000
9905 FOR N=F6 TO I STEP -I
9906 UNPLOT N-I,XXX
9907 NEXT N
9908 SAVE Z$
9909 FAST 
9910 CLS 
9911 PRINT Y$;X$
9912 PRINT AT IX+VI,VII;"PRESENTS***"
9913 GOSUB ZZZ
9914 GOTO NTRY
9915 REM %M%E%M
9916 LET L=F8*(PEEK 16387-PEEK 16413)+PEEK 16386-PEEK 16412
9917 LET E=INT (L/F5/F5)
9918 PRINT AT IX,Z0;"MEMORY LEFT IS:";E;" K, ";L-F5*F5*E;" BYTES.",,,"(";L;" BYTES)"
9919 IF L<F8+XX THEN PRINT ,,"CAUTION: LIST EDITING MAY BE IMPAIRED."
9920 STOP 
9921 GOTO MAP
9927 REM %S%Y%S%V
9928 LET E=II*CODE D$-75
9929 IF E<I OR E>13 THEN GOTO 9933
9930 LET E$="10141824260002"
9931 LET E=VAL E$(E TO E+I)+16386
9932 LET D$=STR$ (F8*PEEK (E+I)+PEEK E)
9933 RETURN 
9950 REM %S%L%E%E%P
9951 LET ZZ=ZZ+F8
9952 LET ZZ=ZZ+F7
9953 LET ZZ=ZZ+F6
9954 LET ZZ=ZZ+F5
9955 LET E=ZZ-ZZZ+F5
9956 LET ZZ=ZZZ+I
9957 PAUSE E
9958 POKE 16437,FF
9959 RETURN 
9960 REM %H%E%L%P
9961 CLS 
9962 LET PAGE=I
9963 LET H$="% %H%E%L%P%  PAGE "
9964 PRINT AT I,IX;H$;PAGE
9965 PRINT ,,"* USE GOTO FOR DESIRED LOCATION,",,"* LET Z$=""(YOUR PROGRAM NAME)""",,,"* LET NTRY=1000 IF YOU WANT YOUR PROGRAM TO RUN AFTER LOADING." 
9966 PRINT ,,"* Z$=""";Z$;""""
9967 LET I$="% %K%E%Y%W%O%R%D% %L%I%N%E% %F%U%N%C%T%I%O%N% "
9968 PRINT ,,I$,"""HELP""   9960 HERE.","""VLST""   9500 VARIABLE LIST.","""MEM""    9915 AVAILABLE MEMORY. ""SAVE""   9900 SAVE PROGRAM,"
9969 PRINT """NTRY""   HELP UNLESS CHANGED."
9970 PRINT """PURG""   9800 DELETE VARIABLES."
9971 PRINT """MAP""    8100 MEMORY MAP."
9972 PRINT """SPY""    9750 LOOK AT MEMORY."
9973 PRINT """DISA""   9000 DISASSEMBLE."
9974 LET PAGE=II
9975 PRINT 
9976 CLS 
9977 PRINT AT I,IX;H$;PAGE,,,I$
9978 PRINT """WCOD""   9120 DECODE TABLE."
9979 PRINT """WSTD""   9135 MNEMONICS."
9980 PRINT """SRCH""   9705 BASIC CODE."
9981 PRINT """SEARCH"" 9450 ROM SPACE."
9982 PRINT """EDIT""   9200 MACH CODE."
9983 PRINT "*""GOTO VLST"" CODES AS:","  :236:V:L:S:T: (5 BYTES)" 
9984 PRINT "*""GOTO 9500"" CODES AS:","  :235:9:5:0:0:126:EXP:B4:B3:B2:B1:B0: (12 BYTES)"
9985 PRINT "* USING VARIABLES IN PLACE OF   NUMBERS CAN SAVE MEMORY."
9986 PRINT "* USE:Z0,I,II,III,IV,FIV,VI,VII,VIII,IX,TEN,XX,XXX IN PLACE OF:0,1,2,3,4,5,6,7,8,9,10,20,30."
9987 PRINT "* LIST 9802 TO SEE."
9988 STOP 
9989 GOTO HELP
9997 REM %M%/%L% %C%0%D%E% %T%E%M%P%L%A%T%E%S
9998 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.......   /\.'
9999 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.........1.......   /\.'
Scroll to Top
B\EDB\E5 itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"A\ED\A1\DF\EA\C8\EDB\DB itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"\D9 itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"C\F5\D5\E5

Super Utility

Products: Super Utility
Developer(s): William J. Pedersen
Date: 1983
Type: Cassette
Platform(s): TS 1000

Utility for working with machine language programs and memory.

Content

Appears On

Related Products

Utility for working with machine language programs and memory.

Related Articles

Related Content

Image Gallery

Super Utility

Source Code

   1 REM %U%T%I%L%I%T%Y
   2 REM *************
   3 REM COPYRIGHT NOV 14, 1983 BY WILLIAM J. PEDERSEN. 1120 MERRIFIELD S.E., GRAND RAPIDS, MICHIGAN  49507
   4 REM REPRODUCTION OR USE OF THIS PROGRAM IS PROHIBITED WITHOUT EXPRESS WRITTEN PERMISSION.
   5 REM *************
   7 REM \7E\E6\E0\FE\C0\28\0E\F2\99\41\FE\80\28\07\F2\A2\41\FE\60\28\10\23\22\93\41\ED\5B\93\7B\19\23\23\C9\11\0C\00\19\11\06\00\19\C9\23\CB\7E\28\FB\18\F4\F5\D5\E5\2A\DB\42\ED\4B\DF\42\ED\5B\E7\42\1A\ED\B1\20\1B\22\DB\42\ED\43\DF\42\2B\ED\4B\E5\42\1A\ED\A1\20\DF\13\EA\C8\41\ED\4B\DB\42\18\21\01\03\D9\18\1C\F5\D5\E5\21\00\00\22\DB\42\21\FF\1F\22\DF\42\18\BF\00\00\D9\18\06
   8 REM \E1\D1\FD\2A\00\40\3E\1E\ED\47\F1\C9\F5\D5\E5\2A\10\40\22\DB\42\3E\80\BE\28\E6\CB\6E\F5\CD\78\41\22\DD\42\F1\20\08\2A\DD\42\22\DB\42\18\E7\CD\2E\42\2A\DB\42\18\DF\2A\DB\42\E5\ED\5B\DD\42\D5\AF\ED\52\EB\2A\1C\40\19\22\1C\40\2A\1A\40\19\22\1A\40\2A\14\40\E5\19\22\14\40\E1\D1\AF\ED\52\E5\C1\03\2A\DB\42\EB\ED\B0\E1\C9\1B\1B\1B\1B\1D\1B\1B\1B\1B\1B\1B\00\00\00\00\18\06
   9 REM \DC\07\F2\03\D9\FA\9C\AD\EA\78\42\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\57\1B\95\7B\A8\04\1B\1B\1B\1B\02\00\78\42\1B\1B\1B\1B\1B\1B\1E\1B\1B
8100 REM %M%A%P
8101 CLS 
8102 PRINT ,,"    % %M%E%M%O%R%Y% %M%A%P%  ";Z$
8103 LET G$="\##\##%P\:.\'.\':%V\:'\..\':%U%U\.'\.'1638420479204802457524576286712867232767ABCEFG0 PROGRAM =VARIABLES=AVAIL MEM=RAMTOP UP="
8104 LET H$="16509"
8105 LET Q=1
8106 LET S=37
8107 LET I$=CHR$ S
8108 FOR K=IV TO XX-I STEP FIV
8109 LET T=II*K+VII
8110 LET L=53.4+II*K/FIV
8111 LET D$=H$
8112 GOSUB SYSV
8113 LET TT=VAL D$
8114 LET D$=G$(L)
8115 GOSUB SYSV
8116 LET QQ=VAL D$
8117 IF QQ=Z0 THEN LET QQ=32768
8118 LET LL=54+II*K
8119 PRINT AT K-I,Z0;G$(LL TO LL+IX);QQ-TT;" BYTES."
8120 LET H$=G$(L+I)
8121 FOR N=Z0 TO 31
8122 PRINT AT K,N;G$(Q);
8123 LET B=13107.2+F7*N+819.2*K
8124 LET D$=I$
8125 GOSUB SYSV
8126 LET BB=VAL D$
8127 IF BB-B<F6 THEN PRINT AT K,N;G$(Q+I);
8128 IF BB>B+F7 THEN GOTO 8137
8129 LET Q=Q+II
8130 LET S=S+I
8131 LET D$=CHR$ S
8132 GOSUB SYSV
8133 LET I$=D$
8134 IF LEN I$<II THEN LET I$="65536"
8135 IF VAL I$>B+F7 THEN GOTO 8137
8136 GOTO 8130
8137 NEXT N
8138 PRINT G$(T TO T+IV);TAB 27;G$(T+FIV TO T+IX)
8139 NEXT K
8140 STOP 
8141 GOTO HELP
8999 REM % %D%I%S%A%S%S%E%M%B%L%E%R% 
9000 PRINT AT XX,Z0;"DISASSEMBLE STARTING WHERE?"
9001 INPUT WB
9002 CLS 
9003 LET WL=Z0
9004 LET WIA=WB
9005 LET WFS=Z0
9006 LET WFN=I
9007 LET WFK=Z0
9008 LET WF=Z0
9009 LET WFW=Z0
9010 LET WV=Z0
9011 LET G$=""
9012 LET WN=112
9013 LET WL=WL+I
9014 LET WP=PEEK WB
9015 IF WP<>221 AND WP<>253 THEN GOTO 9021
9016 IF WFK THEN GOTO ERR
9017 LET WF=I+(I AND WP=253)
9018 LET WFK=I
9019 LET WB=WB+I
9020 GOTO 9014
9021 IF WP<>203 THEN GOTO 9034
9022 LET WFN=Z0
9023 LET WJ=345
9024 LET WB=WB+I+WFK
9025 LET WP=PEEK WB
9026 LET W1=INT (WP/F6)
9027 LET W=WP-F6*W1
9028 LET W2=INT (W/VIII)
9029 LET W=W-VIII*W2
9030 IF WFK AND W<>VI THEN GOTO ERR
9031 IF W1 THEN LET T$(WJ)=CHR$ (97+W1)+CHR$ (F4+I+W2)+CHR$ (W+I)
9032 IF NOT W1 THEN LET T$(WJ)=CHR$ (49+W2)+CHR$ (W+I)+CHR$ 97
9033 GOTO 9042
9034 LET WJ=I+PEEK WB
9035 LET WW=Z0
9036 IF WP<>237 THEN GOTO 9040
9037 LET WB=WB+I
9038 LET WW=PEEK WB
9039 LET WJ=193+WW-(36 AND WW>159)
9040 IF WW>123 AND WW<160 OR WJ>344 THEN GOTO ERR
9041 LET WDIS=PEEK (WB+I)
9042 LET V$=""
9043 LET W0=CODE T$(WJ,I)
9044 IF W0=WN+IV THEN GOTO ERR
9045 IF W0<>WN-IV THEN GOTO 9048
9046 LET WV=VAL (W$(CODE T$(WJ,II)))
9047 LET G$=" "
9048 GOSUB 9066
9049 LET B$=I$+" "
9050 LET W0=CODE T$(WJ,II)
9051 GOSUB 9066
9052 IF I$="" THEN GOTO 9063
9053 IF WP=211 THEN LET I$="(N)"
9054 LET B$=B$+I$
9055 LET W0=CODE T$(WJ,III)
9056 GOSUB 9066
9057 IF I$="" THEN GOTO 9060
9058 IF WP=219 THEN LET I$="(N)"
9059 LET B$=B$+","+I$
9060 IF WFK AND NOT WFW THEN GOTO ERR
9061 LET V$=STR$ WV
9062 IF NOT LEN G$ AND WV=Z0 THEN LET V$=""
9063 PRINT WIA;TAB VI;B$;TAB XX-I;V$+G$
9064 LET WB=WB+I+WFS*WFN
9065 GOTO 9004
9066 LET I$=W$(W0)
9067 GOSUB DTB
9068 IF W0=WN+FIV THEN GOSUB 9094
9069 IF W0<>WN+VI THEN GOTO 9075
9070 LET WB=WB+WFK+I
9071 LET WFN=Z0
9072 LET WV=PEEK WB
9073 IF WP=211 OR WP=219 THEN GOTO 9078
9074 LET G$=":"+CHR$ WV+":"
9075 IF WV>=F5 THEN GOTO 9078
9076 LET W=F4+I+III*WV
9078 IF W0<WN+VII THEN GOTO 9085
9079 LET WB=WB+II
9080 LET G$=" "
9081 LET WFN=Z0
9082 LET E=WB-I
9083 GOSUB DB
9084 LET WV=E
9085 IF NOT WFK THEN GOTO 9092
9086 IF W0=VII OR W0=61 OR W0=WN THEN LET WFW=I
9087 IF W0<>VII THEN GOTO 9091
9088 LET WFS=I
9089 GOSUB 9095
9090 LET I$=W$(WN+WF, TO III)+I$+")"
9091 IF W0=61 THEN LET I$=W$(WN+WF,II TO III)
9092 IF W0=WN THEN LET I$=W$(WN+WF)
9093 RETURN 
9094 LET WB=WB+I
9095 LET W=WDIS
9096 IF W<F7 THEN GOTO 9098
9097 LET W=W-F8
9098 IF NOT WFK THEN LET W=W+II
9099 IF W>=Z0 THEN LET I$="+"+STR$ W
9100 IF W<Z0 THEN LET I$=STR$ W
9101 IF B$( TO II)="JR" OR B$( TO II)="DJ" THEN LET WV=WIA+W
9102 RETURN 
9103 PRINT "ERROR AT ";WIA;". ",
9104 FOR J=Z0 TO III
9105 PRINT PEEK (WIA+J);" ";
9106 NEXT J
9107 PRINT 
9108 GOTO 9004
9120 REM %W%C%O%D
9121 CLS 
9122 PRINT ,," T$(345,3) TABLE FOR DECODING","MOST Z80 INSTRUCTIONS.",,,"N   VALUES      INTERPRETATION",,,
9123 FOR N=I TO 345
9124 PRINT N;" ";
9125 FOR K=I TO III
9126 PRINT CODE T$(N,K);" ";
9127 NEXT K
9128 PRINT ,
9129 FOR K=I TO III
9130 PRINT W$(CODE T$(N,K));" ";
9131 NEXT K
9132 PRINT 
9133 NEXT N
9134 STOP 
9135 REM %W%S%T%R
9136 CLS 
9137 PRINT ,," W$(120,4) ARRAY FOR MNEMONICS.",,,
9138 FOR N=I TO 120
9139 PRINT TAB VI;"W$(";N;")=","""";W$(N);""""
9140 NEXT N
9141 STOP 
9142 GOTO WCOD
9200 REM %E%D%I%T
9201 CLS 
9202 LET L=9228
9203 LET M=9317
9206 PRINT ,,"% %M%A%C%H%I%N%E% %L%A%N%G%U%A%G%E% %E%D%I%T%O%R% ",,,"WHERE ABOVE 16759?  START ";
9207 INPUT B
9208 PRINT B,"SELECT BY NO."
9209 FOR N=VI TO F4+I
9210 PRINT AT N,F4;"                "
9211 NEXT N
9212 PRINT AT IV,XX;"NOW   ";B
9213 PRINT ,," 1 SINGLE BYTE",," 2 DOUBLE BYTE",," 3 LD HL,(NN)",," 4 LD (NN),HL",," 5 PUSH SEQ",," 6 LD (NN),BC",," 7 LD BC,(NN)",," 8 LD (NN),DE",," 9 LD DE,(NN)",,"10 SBC HL,BC",,"11 ADC HL,BC",,"12 SBC HL,DE",,"13 ADC HL,DE",,"14 JUMPS",,"15 %Q%U%I%T"
9214 INPUT N
9215 IF N<I OR N>F4-II THEN GOTO M
9216 PRINT AT N+FIV,F4;"% "
9217 GOTO L-F4+VI*N
9218 INPUT K
9219 IF K<0 OR K>FF THEN GOTO M
9220 POKE B,K
9221 LET B=B+I
9222 GOTO 9209
9224 INPUT K
9225 IF K<0 OR K>=F8*F8 THEN GOTO M
9226 POKE B+I,INT (K/F8)
9227 POKE B,K-F8*INT (K/F8)
9228 LET B=B+II
9229 GOTO 9209
9236 POKE B,XXX+N
9237 LET B=B+I
9238 GOTO L-IV
9242 POKE B,245
9243 POKE B+I,213
9244 POKE B+II,229
9245 LET B=B+I
9246 GOTO L
9266 POKE B,237  
9267 POKE B+I,XX-I+VIII*N  
9268 LET B=B+II
9269 GOTO L-IV
9290 POKE B,237  
9291 POKE B+I,VIII*N-F4+II  
9292 GOTO L
9296 PRINT AT F4,F4;"JUMP TO?"
9297 INPUT N
9298 IF N<16760 OR N>=F8*F8 THEN GOTO M
9299 LET W=(B-N)>F7+I OR B-N<-F7+II
9300 PRINT AT VI,F4;"WHICH CONDITION?",AT VIII,F4;" 1 DJNZ",AT IX,F4;" 2 NONE",AT TEN,F4;" 3 NZ",AT TEN+I,F4;" 4  Z",AT VI+VI,F4;" 5 NC",AT IX+IV,F4;" 6  C",AT F4-II,F4;" 7 PO",AT F4-I,F4;" 8 PE",AT F4,F4;" 9  P   ",AT F4+I,F4;"10  M"   
9301 INPUT S
9302 IF S<I OR S>TEN THEN GOTO M
9303 IF W OR S>VI THEN GOTO 9309
9304 LET N=N-B-II
9305 IF N>=F7 THEN LET N=F7-N
9306 POKE B,VIII+VIII*S
9307 POKE B+I,N
9308 GOTO L
9309 IF S=I THEN GOTO M
9310 POKE B,170+VIII*S
9311 IF S=II THEN POKE B,195
9312 LET B=B+I
9313 LET P3=INT (N/F8)
9314 POKE B,N-F8*P3
9315 POKE B+I,P3
9316 GOTO L
9317 CLS 
9318 PRINT AT IX,Z0;"%Q%U%I%T OR AN ERROR HAS OCCURRED.  THE LAST LOCATION WAS ";B;".","CONTINUE FOR DISASSEMBLER."
9319 STOP 
9320 GOTO DISA
9449 REM %S%E%A%R%C%H
9450 CLS 
9451 LET Q=Z0
9452 LET E=I
9453 PRINT ,,"OBJECTIVE/TITLE?",
9454 INPUT G$
9455 PRINT AT I,Z0;G$;"                ";AT II,Z0;"PRINT? %YES OR %NO",
9456 LET W=Z0
9457 INPUT H$
9458 IF LEN H$ THEN IF H$(I)="Y" THEN LET W=I
9459 PRINT AT II,Z0;"INPUT YOUR CODE          ",
9460 INPUT L
9461 IF L>FF THEN GOTO 9481
9462 PRINT AT II,Z0;"IF DOUBLE BYTE, ENTER ""D"""
9463 INPUT H$
9464 IF LEN H$ THEN IF H$(I)="D" THEN GOTO 9481
9465 POKE 17015+E,L
9466 LET E=E+I
9467 PRINT AT II,Z0;"ANOTHER ENTRY? %YES OR %NO",
9468 INPUT H$
9469 IF LEN H$ THEN IF H$(I)="Y" THEN GOTO 9459
9470 CLS 
9471 IF NOT W THEN PRINT ,,G$
9472 IF W THEN LPRINT G$
9473 POKE 17125,E-I
9474 LET K=USR 16860
9475 GOTO 9477
9476 LET K=USR 16809
9477 LET Q=Q+I
9478 IF K=55555 THEN GOTO 9486
9479 GOSUB 9490+II*W
9480 GOTO 9476
9481 LET P2=INT (L/F8+II**-IX)
9482 POKE 17016+E,P2
9483 POKE 17015+E,L-F8*P2
9484 LET E=E+II
9485 GOTO 9467
9486 IF NOT W THEN PRINT "$";Q-I
9487 IF W THEN LPRINT "$";Q-I
9488 STOP 
9489 GOTO SEARCH
9490 PRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9491 RETURN 
9492 LPRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9493 RETURN 
9499 STOP 
9500 REM %V%L%S%T
9501 CLS 
9502 PRINT ,,,,"   %V%A%R%I%A%B%L%E%S",,,
9503 LET E=16400
9504 GOSUB DB
9505 LET L=E-I
9506 LET T=Z0
9507 LET T=T+I
9508 LET L=L+I
9509 LET B=L
9510 IF LEN H$>I THEN IF H$( TO II)="H$" THEN GOSUB VLST+XX
9511 LET CH=PEEK L
9512 PRINT TAB III-LEN STR$ T;T;" ";
9512 LET TP=INT (CH/F5)
9514 LET CH=CH-TP*F5+F5
9515 LET H$=CHR$ CH
9516 GOSUB VLST-F5+F5*TP
9517 LET E=TP=II OR TP=VI
9518 IF E THEN PRINT H$;TAB XX+VI;B
9519 IF NOT E THEN PRINT H$;TAB XX+III-LEN STR$ Q;Q;TAB XX+VI;B
9520 GOTO VLST+VI
9521 PRINT ,,"   %E%N%D% %O%F% %L%I%S%T ";L
9522 LET H$="***"
9523 STOP 
9524 GOTO VLST
9532 REM %S%T%R%I%N%G
9533 LET H$=H$+"$ "
9534 LET E=L+I
9535 GOSUB DB
9536 FOR Q=I TO (E AND E<F4)+(F4 AND E>=F4)
9537 LET H$=H$+CHR$ PEEK (L+II+Q)
9538 NEXT Q
9539 LET L=L+II+E
9540 RETURN 
9564 REM %S%I%N%G%L
9565 LET Q=VAL H$
9566 LET L=L+FIV
9567 RETURN 
9596 REM %N%(%)
9597 LET H$=H$+"("
9598 LET I$=H$
9599 LET S=PEEK (L+III)
9600 FOR Q=I TO S
9601 LET E=L+II+II*Q
9602 GOSUB DB
9603 IF Q>=S THEN GOTO VLST+105
9604 LET H$=H$+STR$ E+","
9605 LET I$=I$+"1,"
9606 NEXT Q
9607 LET H$=H$+STR$ E+")"
9608 LET I$=I$+"1)"
9609 LET Q=VAL I$
9610 LET E=L+I
9611 GOSUB DB
9612 LET L=L+II+E
9613 RETURN 
9628 REM %M%U%L%T
9629 LET L=L+I
9630 LET CH=PEEK L
9631 IF INT (CH/F6)=II THEN GOTO VLST+133
9632 LET H$=H$+CHR$ CH
9633 GOTO VLST+F7
9634 LET H$=H$+CHR$ (CH-F7)
9635 LET Q=VAL H$
9636 LET L=L+FIV
9637 RETURN 
9660 REM %$%(%)
9661 LET H$=H$+"$("
9662 LET S=PEEK (L+III)
9663 FOR Q=I TO S
9664 LET E=L+II+II*Q
9665 GOSUB DB
9666 IF Q>=S THEN GOTO VLST+168
9667 LET H$=H$+STR$ E+","
9668 NEXT Q
9669 LET H$=H$+STR$ E+")"
9670 LET E=L+VI
9671 LET U=L+III+II*S
9672 GOSUB DB
9674 FOR Q=U TO U+(E AND E<F4)+(F4 AND E>=F4)
9675 LET H$=H$+CHR$ PEEK Q
9676 NEXT Q
9677 GOTO VLST+109
9692 REM %F%-%N
9693 LET Q=VAL H$
9694 LET H$=H$+" FOR-NEXT"
9695 LET L=L+XX-III
9696 RETURN 
9697 REM %D%T%B
9698 FOR J=LEN I$ TO I STEP -I
9699 IF I$(J)=" " THEN NEXT J
9700 LET I$=I$( TO J)
9701 RETURN 
9702 REM %D%B
9703 LET E=F8*PEEK (E+I)+PEEK E
9704 RETURN 
9705 REM %S%R%C%H
9706 CLS 
9707 PRINT AT IX,I;"WRITE YOUR STRING WITHOUT LINE NUMBER.  ADD A QUOTE AND PRECEDESTRING WITH",,,," LET H$=""",,,," THEN ENTER AND CONTINUE."
9708 LET E=17116
9709 STOP 
9710 POKE E+IX,LEN H$
9711 POKE E-I,247
9712 POKE E,66
9713 LET K=PEEK 16396+F8*PEEK 16397-17143
9714 LET S=INT (K/F8)
9715 LET K=K-F8*S
9716 POKE E+III,K
9717 POKE E+IV,S
9718 FOR E=I TO LEN H$
9719 POKE (E+17015),CODE H$(E)
9720 NEXT E
9721 CLS 
9722 PRINT ,,"""";H$;"""";TAB Z0;,,
9723 LET K=USR 16809
9724 IF K=55555 THEN GOTO 9740
9727 LET Q=K
9728 LET Q=Q-I
9729 IF PEEK Q<>118 THEN GOTO 9728
9730 IF K-Q<IV THEN GOTO 9723
9732 LET E=F8*PEEK (Q+I)+PEEK (Q+II)
9733 LET K=F8*PEEK (Q+IV)+PEEK (Q+III)
9734 LET I$=""
9735 FOR Q=Q+FIV TO Q+III+K
9736 LET I$=I$+CHR$ PEEK Q
9737 NEXT Q
9738 PRINT E;TAB FIV;I$
9739 GOTO 9723
9740 PRINT ,,"  % %S%E%A%R%C%H% %C%O%M%P%L%E%T%E% "
9741 STOP 
9742 GOTO 9706
9750 REM %S%P%Y
9751 PRINT AT XX+I,Z0;"LOOK AT NO./%QUIT/%HIGHER/%L0WER"
9752 INPUT H$
9753 IF H$<>"Q" THEN GOTO 9755
9754 STOP 
9755 IF H$<>"H" THEN GOTO 9758
9756 LET B=B+F4
9757 GOTO 9762
9758 IF H$<>"L" THEN GOTO 9761
9759 LET B=B-F4
9760 GOTO 9762
9761 LET B=VAL H$
9762 CLS 
9763 FOR E=B TO B+XX+I
9764 PRINT E;TAB VI;PEEK E;TAB TEN;":";CHR$ PEEK E;":";TAB XX;F8*PEEK (E+I)+PEEK E
9765 NEXT E
9766 GOTO 9752
9800 REM %P%U%R%G
9801 LET N(1)=USR 16900
9802 REM %I%N%I%T%I%A%L%I%Z%A%T%I%O%N%S
9810 LET I=1
9811 LET Z0=I-I
9812 LET II=I+I
9813 LET III=II+I
9814 LET IV=II+II
9815 LET FIV=IV+I
9816 LET VI=IV+II
9817 LET VII=VI+I
9818 LET VIII=IV+IV
9819 LET IX=VIII+I
9820 LET TEN=IX+I
9821 LET XX=II*TEN
9822 LET XXX=30
9823 LET F4=II*VIII
9824 LET F5=II*F4
9825 LET F6=II*F5
9826 LET F7=II*F6
9827 LET F8=256
9828 LET FF=F8-I
9829 LET IK=I/F8/F8
9840 REM %K%E%Y%S
9841 LET VLST=9501
9842 LET DB=9703
9843 LET PURG=9801
9844 LET MEM=9916
9845 LET ZZ=9953
9846 LET ZZZ=ZZ-I
9847 LET ZZZZ=ZZ-II
9848 LET SAVE=9900
9849 LET SYSV=9928
9850 LET MAP=8101
9851 LET SEARCH=9450
9852 LET SRCH=9706
9853 LET HELP=9961
9854 LET SPY=9751
9855 LET DISA=9000
9856 LET ERR=9103
9857 LET DTB=9698
9858 LET WCOD=9121
9859 LET WSTR=9136
9860 LET NTRY=HELP
9861 LET EDIT=9201
9892 CLS 
9893 PRINT ,,,,"* TO DELETE STRINGS AND ARRAYS, REDIMENSION THEM TO ZERO."
9894 PRINT ,,"   DIM (NAME)$(0)  OR"
9895 PRINT ,,"   DIM (NAME)(0)"
9896 PRINT ,,"   THIS WILL PULL ERROR 3/0 BUT"," THE JOB IS DONE."
9897 STOP 
9898 GOTO VLST
9899 REM %S%A%V%E
9900 CLS 
9901 PRINT ,,,,"""";Z$;""" IS TO BE SAVED.",,,"START RECORDER.  PRESS ANY KEY.",,,Q$,,
9902 PRINT "MODE IS ";"LOOPING" AND NOT (NTRY-SAVE);"HELP" AND NOT (NTRY-HELP);"LOAD-AND-GO" AND NOT (NTRY-1000)
9903 SLOW 
9904 IF NTRY<>SAVE THEN PAUSE 40000
9905 FOR N=F6 TO I STEP -I
9906 UNPLOT N-I,XXX
9907 NEXT N
9908 SAVE Z$
9909 FAST 
9910 CLS 
9911 PRINT Y$;X$
9912 PRINT AT IX+VI,VII;"PRESENTS***"
9913 GOSUB ZZZ
9914 GOTO NTRY
9915 REM %M%E%M
9916 LET L=F8*(PEEK 16387-PEEK 16413)+PEEK 16386-PEEK 16412
9917 LET E=INT (L/F5/F5)
9918 PRINT AT IX,Z0;"MEMORY LEFT IS:";E;" K, ";L-F5*F5*E;" BYTES.",,,"(";L;" BYTES)"
9919 IF L<F8+XX THEN PRINT ,,"CAUTION: LIST EDITING MAY BE IMPAIRED."
9920 STOP 
9921 GOTO MAP
9927 REM %S%Y%S%V
9928 LET E=II*CODE D$-75
9929 IF E<I OR E>13 THEN GOTO 9933
9930 LET E$="10141824260002"
9931 LET E=VAL E$(E TO E+I)+16386
9932 LET D$=STR$ (F8*PEEK (E+I)+PEEK E)
9933 RETURN 
9950 REM %S%L%E%E%P
9951 LET ZZ=ZZ+F8
9952 LET ZZ=ZZ+F7
9953 LET ZZ=ZZ+F6
9954 LET ZZ=ZZ+F5
9955 LET E=ZZ-ZZZ+F5
9956 LET ZZ=ZZZ+I
9957 PAUSE E
9958 POKE 16437,FF
9959 RETURN 
9960 REM %H%E%L%P
9961 CLS 
9962 LET PAGE=I
9963 LET H$="% %H%E%L%P%  PAGE "
9964 PRINT AT I,IX;H$;PAGE
9965 PRINT ,,"* USE GOTO FOR DESIRED LOCATION,",,"* LET Z$=""(YOUR PROGRAM NAME)""",,,"* LET NTRY=1000 IF YOU WANT YOUR PROGRAM TO RUN AFTER LOADING." 
9966 PRINT ,,"* Z$=""";Z$;""""
9967 LET I$="% %K%E%Y%W%O%R%D% %L%I%N%E% %F%U%N%C%T%I%O%N% "
9968 PRINT ,,I$,"""HELP""   9960 HERE.","""VLST""   9500 VARIABLE LIST.","""MEM""    9915 AVAILABLE MEMORY. ""SAVE""   9900 SAVE PROGRAM,"
9969 PRINT """NTRY""   HELP UNLESS CHANGED."
9970 PRINT """PURG""   9800 DELETE VARIABLES."
9971 PRINT """MAP""    8100 MEMORY MAP."
9972 PRINT """SPY""    9750 LOOK AT MEMORY."
9973 PRINT """DISA""   9000 DISASSEMBLE."
9974 LET PAGE=II
9975 PRINT 
9976 CLS 
9977 PRINT AT I,IX;H$;PAGE,,,I$
9978 PRINT """WCOD""   9120 DECODE TABLE."
9979 PRINT """WSTD""   9135 MNEMONICS."
9980 PRINT """SRCH""   9705 BASIC CODE."
9981 PRINT """SEARCH"" 9450 ROM SPACE."
9982 PRINT """EDIT""   9200 MACH CODE."
9983 PRINT "*""GOTO VLST"" CODES AS:","  :236:V:L:S:T: (5 BYTES)" 
9984 PRINT "*""GOTO 9500"" CODES AS:","  :235:9:5:0:0:126:EXP:B4:B3:B2:B1:B0: (12 BYTES)"
9985 PRINT "* USING VARIABLES IN PLACE OF   NUMBERS CAN SAVE MEMORY."
9986 PRINT "* USE:Z0,I,II,III,IV,FIV,VI,VII,VIII,IX,TEN,XX,XXX IN PLACE OF:0,1,2,3,4,5,6,7,8,9,10,20,30."
9987 PRINT "* LIST 9802 TO SEE."
9988 STOP 
9989 GOTO HELP
9997 REM %M%/%L% %C%0%D%E% %T%E%M%P%L%A%T%E%S
9998 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.......   /\.'
9999 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.........1.......   /\.'
Scroll to Top

Super Utility

Products: Super Utility
Developer(s): William J. Pedersen
Date: 1983
Type: Cassette
Platform(s): TS 1000

Utility for working with machine language programs and memory.

Content

Appears On

Related Products

Utility for working with machine language programs and memory.

Related Articles

Related Content

Image Gallery

Super Utility

Source Code

   1 REM %U%T%I%L%I%T%Y
   2 REM *************
   3 REM COPYRIGHT NOV 14, 1983 BY WILLIAM J. PEDERSEN. 1120 MERRIFIELD S.E., GRAND RAPIDS, MICHIGAN  49507
   4 REM REPRODUCTION OR USE OF THIS PROGRAM IS PROHIBITED WITHOUT EXPRESS WRITTEN PERMISSION.
   5 REM *************
   7 REM \7E\E6\E0\FE\C0\28\0E\F2\99\41\FE\80\28\07\F2\A2\41\FE\60\28\10\23\22\93\41\ED\5B\93\7B\19\23\23\C9\11\0C\00\19\11\06\00\19\C9\23\CB\7E\28\FB\18\F4\F5\D5\E5\2A\DB\42\ED\4B\DF\42\ED\5B\E7\42\1A\ED\B1\20\1B\22\DB\42\ED\43\DF\42\2B\ED\4B\E5\42\1A\ED\A1\20\DF\13\EA\C8\41\ED\4B\DB\42\18\21\01\03\D9\18\1C\F5\D5\E5\21\00\00\22\DB\42\21\FF\1F\22\DF\42\18\BF\00\00\D9\18\06
   8 REM \E1\D1\FD\2A\00\40\3E\1E\ED\47\F1\C9\F5\D5\E5\2A\10\40\22\DB\42\3E\80\BE\28\E6\CB\6E\F5\CD\78\41\22\DD\42\F1\20\08\2A\DD\42\22\DB\42\18\E7\CD\2E\42\2A\DB\42\18\DF\2A\DB\42\E5\ED\5B\DD\42\D5\AF\ED\52\EB\2A\1C\40\19\22\1C\40\2A\1A\40\19\22\1A\40\2A\14\40\E5\19\22\14\40\E1\D1\AF\ED\52\E5\C1\03\2A\DB\42\EB\ED\B0\E1\C9\1B\1B\1B\1B\1D\1B\1B\1B\1B\1B\1B\00\00\00\00\18\06
   9 REM \DC\07\F2\03\D9\FA\9C\AD\EA\78\42\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\57\1B\95\7B\A8\04\1B\1B\1B\1B\02\00\78\42\1B\1B\1B\1B\1B\1B\1E\1B\1B
8100 REM %M%A%P
8101 CLS 
8102 PRINT ,,"    % %M%E%M%O%R%Y% %M%A%P%  ";Z$
8103 LET G$="\##\##%P\:.\'.\':%V\:'\..\':%U%U\.'\.'1638420479204802457524576286712867232767ABCEFG0 PROGRAM =VARIABLES=AVAIL MEM=RAMTOP UP="
8104 LET H$="16509"
8105 LET Q=1
8106 LET S=37
8107 LET I$=CHR$ S
8108 FOR K=IV TO XX-I STEP FIV
8109 LET T=II*K+VII
8110 LET L=53.4+II*K/FIV
8111 LET D$=H$
8112 GOSUB SYSV
8113 LET TT=VAL D$
8114 LET D$=G$(L)
8115 GOSUB SYSV
8116 LET QQ=VAL D$
8117 IF QQ=Z0 THEN LET QQ=32768
8118 LET LL=54+II*K
8119 PRINT AT K-I,Z0;G$(LL TO LL+IX);QQ-TT;" BYTES."
8120 LET H$=G$(L+I)
8121 FOR N=Z0 TO 31
8122 PRINT AT K,N;G$(Q);
8123 LET B=13107.2+F7*N+819.2*K
8124 LET D$=I$
8125 GOSUB SYSV
8126 LET BB=VAL D$
8127 IF BB-B<F6 THEN PRINT AT K,N;G$(Q+I);
8128 IF BB>B+F7 THEN GOTO 8137
8129 LET Q=Q+II
8130 LET S=S+I
8131 LET D$=CHR$ S
8132 GOSUB SYSV
8133 LET I$=D$
8134 IF LEN I$<II THEN LET I$="65536"
8135 IF VAL I$>B+F7 THEN GOTO 8137
8136 GOTO 8130
8137 NEXT N
8138 PRINT G$(T TO T+IV);TAB 27;G$(T+FIV TO T+IX)
8139 NEXT K
8140 STOP 
8141 GOTO HELP
8999 REM % %D%I%S%A%S%S%E%M%B%L%E%R% 
9000 PRINT AT XX,Z0;"DISASSEMBLE STARTING WHERE?"
9001 INPUT WB
9002 CLS 
9003 LET WL=Z0
9004 LET WIA=WB
9005 LET WFS=Z0
9006 LET WFN=I
9007 LET WFK=Z0
9008 LET WF=Z0
9009 LET WFW=Z0
9010 LET WV=Z0
9011 LET G$=""
9012 LET WN=112
9013 LET WL=WL+I
9014 LET WP=PEEK WB
9015 IF WP<>221 AND WP<>253 THEN GOTO 9021
9016 IF WFK THEN GOTO ERR
9017 LET WF=I+(I AND WP=253)
9018 LET WFK=I
9019 LET WB=WB+I
9020 GOTO 9014
9021 IF WP<>203 THEN GOTO 9034
9022 LET WFN=Z0
9023 LET WJ=345
9024 LET WB=WB+I+WFK
9025 LET WP=PEEK WB
9026 LET W1=INT (WP/F6)
9027 LET W=WP-F6*W1
9028 LET W2=INT (W/VIII)
9029 LET W=W-VIII*W2
9030 IF WFK AND W<>VI THEN GOTO ERR
9031 IF W1 THEN LET T$(WJ)=CHR$ (97+W1)+CHR$ (F4+I+W2)+CHR$ (W+I)
9032 IF NOT W1 THEN LET T$(WJ)=CHR$ (49+W2)+CHR$ (W+I)+CHR$ 97
9033 GOTO 9042
9034 LET WJ=I+PEEK WB
9035 LET WW=Z0
9036 IF WP<>237 THEN GOTO 9040
9037 LET WB=WB+I
9038 LET WW=PEEK WB
9039 LET WJ=193+WW-(36 AND WW>159)
9040 IF WW>123 AND WW<160 OR WJ>344 THEN GOTO ERR
9041 LET WDIS=PEEK (WB+I)
9042 LET V$=""
9043 LET W0=CODE T$(WJ,I)
9044 IF W0=WN+IV THEN GOTO ERR
9045 IF W0<>WN-IV THEN GOTO 9048
9046 LET WV=VAL (W$(CODE T$(WJ,II)))
9047 LET G$=" "
9048 GOSUB 9066
9049 LET B$=I$+" "
9050 LET W0=CODE T$(WJ,II)
9051 GOSUB 9066
9052 IF I$="" THEN GOTO 9063
9053 IF WP=211 THEN LET I$="(N)"
9054 LET B$=B$+I$
9055 LET W0=CODE T$(WJ,III)
9056 GOSUB 9066
9057 IF I$="" THEN GOTO 9060
9058 IF WP=219 THEN LET I$="(N)"
9059 LET B$=B$+","+I$
9060 IF WFK AND NOT WFW THEN GOTO ERR
9061 LET V$=STR$ WV
9062 IF NOT LEN G$ AND WV=Z0 THEN LET V$=""
9063 PRINT WIA;TAB VI;B$;TAB XX-I;V$+G$
9064 LET WB=WB+I+WFS*WFN
9065 GOTO 9004
9066 LET I$=W$(W0)
9067 GOSUB DTB
9068 IF W0=WN+FIV THEN GOSUB 9094
9069 IF W0<>WN+VI THEN GOTO 9075
9070 LET WB=WB+WFK+I
9071 LET WFN=Z0
9072 LET WV=PEEK WB
9073 IF WP=211 OR WP=219 THEN GOTO 9078
9074 LET G$=":"+CHR$ WV+":"
9075 IF WV>=F5 THEN GOTO 9078
9076 LET W=F4+I+III*WV
9078 IF W0<WN+VII THEN GOTO 9085
9079 LET WB=WB+II
9080 LET G$=" "
9081 LET WFN=Z0
9082 LET E=WB-I
9083 GOSUB DB
9084 LET WV=E
9085 IF NOT WFK THEN GOTO 9092
9086 IF W0=VII OR W0=61 OR W0=WN THEN LET WFW=I
9087 IF W0<>VII THEN GOTO 9091
9088 LET WFS=I
9089 GOSUB 9095
9090 LET I$=W$(WN+WF, TO III)+I$+")"
9091 IF W0=61 THEN LET I$=W$(WN+WF,II TO III)
9092 IF W0=WN THEN LET I$=W$(WN+WF)
9093 RETURN 
9094 LET WB=WB+I
9095 LET W=WDIS
9096 IF W<F7 THEN GOTO 9098
9097 LET W=W-F8
9098 IF NOT WFK THEN LET W=W+II
9099 IF W>=Z0 THEN LET I$="+"+STR$ W
9100 IF W<Z0 THEN LET I$=STR$ W
9101 IF B$( TO II)="JR" OR B$( TO II)="DJ" THEN LET WV=WIA+W
9102 RETURN 
9103 PRINT "ERROR AT ";WIA;". ",
9104 FOR J=Z0 TO III
9105 PRINT PEEK (WIA+J);" ";
9106 NEXT J
9107 PRINT 
9108 GOTO 9004
9120 REM %W%C%O%D
9121 CLS 
9122 PRINT ,," T$(345,3) TABLE FOR DECODING","MOST Z80 INSTRUCTIONS.",,,"N   VALUES      INTERPRETATION",,,
9123 FOR N=I TO 345
9124 PRINT N;" ";
9125 FOR K=I TO III
9126 PRINT CODE T$(N,K);" ";
9127 NEXT K
9128 PRINT ,
9129 FOR K=I TO III
9130 PRINT W$(CODE T$(N,K));" ";
9131 NEXT K
9132 PRINT 
9133 NEXT N
9134 STOP 
9135 REM %W%S%T%R
9136 CLS 
9137 PRINT ,," W$(120,4) ARRAY FOR MNEMONICS.",,,
9138 FOR N=I TO 120
9139 PRINT TAB VI;"W$(";N;")=","""";W$(N);""""
9140 NEXT N
9141 STOP 
9142 GOTO WCOD
9200 REM %E%D%I%T
9201 CLS 
9202 LET L=9228
9203 LET M=9317
9206 PRINT ,,"% %M%A%C%H%I%N%E% %L%A%N%G%U%A%G%E% %E%D%I%T%O%R% ",,,"WHERE ABOVE 16759?  START ";
9207 INPUT B
9208 PRINT B,"SELECT BY NO."
9209 FOR N=VI TO F4+I
9210 PRINT AT N,F4;"                "
9211 NEXT N
9212 PRINT AT IV,XX;"NOW   ";B
9213 PRINT ,," 1 SINGLE BYTE",," 2 DOUBLE BYTE",," 3 LD HL,(NN)",," 4 LD (NN),HL",," 5 PUSH SEQ",," 6 LD (NN),BC",," 7 LD BC,(NN)",," 8 LD (NN),DE",," 9 LD DE,(NN)",,"10 SBC HL,BC",,"11 ADC HL,BC",,"12 SBC HL,DE",,"13 ADC HL,DE",,"14 JUMPS",,"15 %Q%U%I%T"
9214 INPUT N
9215 IF N<I OR N>F4-II THEN GOTO M
9216 PRINT AT N+FIV,F4;"% "
9217 GOTO L-F4+VI*N
9218 INPUT K
9219 IF K<0 OR K>FF THEN GOTO M
9220 POKE B,K
9221 LET B=B+I
9222 GOTO 9209
9224 INPUT K
9225 IF K<0 OR K>=F8*F8 THEN GOTO M
9226 POKE B+I,INT (K/F8)
9227 POKE B,K-F8*INT (K/F8)
9228 LET B=B+II
9229 GOTO 9209
9236 POKE B,XXX+N
9237 LET B=B+I
9238 GOTO L-IV
9242 POKE B,245
9243 POKE B+I,213
9244 POKE B+II,229
9245 LET B=B+I
9246 GOTO L
9266 POKE B,237  
9267 POKE B+I,XX-I+VIII*N  
9268 LET B=B+II
9269 GOTO L-IV
9290 POKE B,237  
9291 POKE B+I,VIII*N-F4+II  
9292 GOTO L
9296 PRINT AT F4,F4;"JUMP TO?"
9297 INPUT N
9298 IF N<16760 OR N>=F8*F8 THEN GOTO M
9299 LET W=(B-N)>F7+I OR B-N<-F7+II
9300 PRINT AT VI,F4;"WHICH CONDITION?",AT VIII,F4;" 1 DJNZ",AT IX,F4;" 2 NONE",AT TEN,F4;" 3 NZ",AT TEN+I,F4;" 4  Z",AT VI+VI,F4;" 5 NC",AT IX+IV,F4;" 6  C",AT F4-II,F4;" 7 PO",AT F4-I,F4;" 8 PE",AT F4,F4;" 9  P   ",AT F4+I,F4;"10  M"   
9301 INPUT S
9302 IF S<I OR S>TEN THEN GOTO M
9303 IF W OR S>VI THEN GOTO 9309
9304 LET N=N-B-II
9305 IF N>=F7 THEN LET N=F7-N
9306 POKE B,VIII+VIII*S
9307 POKE B+I,N
9308 GOTO L
9309 IF S=I THEN GOTO M
9310 POKE B,170+VIII*S
9311 IF S=II THEN POKE B,195
9312 LET B=B+I
9313 LET P3=INT (N/F8)
9314 POKE B,N-F8*P3
9315 POKE B+I,P3
9316 GOTO L
9317 CLS 
9318 PRINT AT IX,Z0;"%Q%U%I%T OR AN ERROR HAS OCCURRED.  THE LAST LOCATION WAS ";B;".","CONTINUE FOR DISASSEMBLER."
9319 STOP 
9320 GOTO DISA
9449 REM %S%E%A%R%C%H
9450 CLS 
9451 LET Q=Z0
9452 LET E=I
9453 PRINT ,,"OBJECTIVE/TITLE?",
9454 INPUT G$
9455 PRINT AT I,Z0;G$;"                ";AT II,Z0;"PRINT? %YES OR %NO",
9456 LET W=Z0
9457 INPUT H$
9458 IF LEN H$ THEN IF H$(I)="Y" THEN LET W=I
9459 PRINT AT II,Z0;"INPUT YOUR CODE          ",
9460 INPUT L
9461 IF L>FF THEN GOTO 9481
9462 PRINT AT II,Z0;"IF DOUBLE BYTE, ENTER ""D"""
9463 INPUT H$
9464 IF LEN H$ THEN IF H$(I)="D" THEN GOTO 9481
9465 POKE 17015+E,L
9466 LET E=E+I
9467 PRINT AT II,Z0;"ANOTHER ENTRY? %YES OR %NO",
9468 INPUT H$
9469 IF LEN H$ THEN IF H$(I)="Y" THEN GOTO 9459
9470 CLS 
9471 IF NOT W THEN PRINT ,,G$
9472 IF W THEN LPRINT G$
9473 POKE 17125,E-I
9474 LET K=USR 16860
9475 GOTO 9477
9476 LET K=USR 16809
9477 LET Q=Q+I
9478 IF K=55555 THEN GOTO 9486
9479 GOSUB 9490+II*W
9480 GOTO 9476
9481 LET P2=INT (L/F8+II**-IX)
9482 POKE 17016+E,P2
9483 POKE 17015+E,L-F8*P2
9484 LET E=E+II
9485 GOTO 9467
9486 IF NOT W THEN PRINT "$";Q-I
9487 IF W THEN LPRINT "$";Q-I
9488 STOP 
9489 GOTO SEARCH
9490 PRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9491 RETURN 
9492 LPRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9493 RETURN 
9499 STOP 
9500 REM %V%L%S%T
9501 CLS 
9502 PRINT ,,,,"   %V%A%R%I%A%B%L%E%S",,,
9503 LET E=16400
9504 GOSUB DB
9505 LET L=E-I
9506 LET T=Z0
9507 LET T=T+I
9508 LET L=L+I
9509 LET B=L
9510 IF LEN H$>I THEN IF H$( TO II)="H$" THEN GOSUB VLST+XX
9511 LET CH=PEEK L
9512 PRINT TAB III-LEN STR$ T;T;" ";
9512 LET TP=INT (CH/F5)
9514 LET CH=CH-TP*F5+F5
9515 LET H$=CHR$ CH
9516 GOSUB VLST-F5+F5*TP
9517 LET E=TP=II OR TP=VI
9518 IF E THEN PRINT H$;TAB XX+VI;B
9519 IF NOT E THEN PRINT H$;TAB XX+III-LEN STR$ Q;Q;TAB XX+VI;B
9520 GOTO VLST+VI
9521 PRINT ,,"   %E%N%D% %O%F% %L%I%S%T ";L
9522 LET H$="***"
9523 STOP 
9524 GOTO VLST
9532 REM %S%T%R%I%N%G
9533 LET H$=H$+"$ "
9534 LET E=L+I
9535 GOSUB DB
9536 FOR Q=I TO (E AND E<F4)+(F4 AND E>=F4)
9537 LET H$=H$+CHR$ PEEK (L+II+Q)
9538 NEXT Q
9539 LET L=L+II+E
9540 RETURN 
9564 REM %S%I%N%G%L
9565 LET Q=VAL H$
9566 LET L=L+FIV
9567 RETURN 
9596 REM %N%(%)
9597 LET H$=H$+"("
9598 LET I$=H$
9599 LET S=PEEK (L+III)
9600 FOR Q=I TO S
9601 LET E=L+II+II*Q
9602 GOSUB DB
9603 IF Q>=S THEN GOTO VLST+105
9604 LET H$=H$+STR$ E+","
9605 LET I$=I$+"1,"
9606 NEXT Q
9607 LET H$=H$+STR$ E+")"
9608 LET I$=I$+"1)"
9609 LET Q=VAL I$
9610 LET E=L+I
9611 GOSUB DB
9612 LET L=L+II+E
9613 RETURN 
9628 REM %M%U%L%T
9629 LET L=L+I
9630 LET CH=PEEK L
9631 IF INT (CH/F6)=II THEN GOTO VLST+133
9632 LET H$=H$+CHR$ CH
9633 GOTO VLST+F7
9634 LET H$=H$+CHR$ (CH-F7)
9635 LET Q=VAL H$
9636 LET L=L+FIV
9637 RETURN 
9660 REM %$%(%)
9661 LET H$=H$+"$("
9662 LET S=PEEK (L+III)
9663 FOR Q=I TO S
9664 LET E=L+II+II*Q
9665 GOSUB DB
9666 IF Q>=S THEN GOTO VLST+168
9667 LET H$=H$+STR$ E+","
9668 NEXT Q
9669 LET H$=H$+STR$ E+")"
9670 LET E=L+VI
9671 LET U=L+III+II*S
9672 GOSUB DB
9674 FOR Q=U TO U+(E AND E<F4)+(F4 AND E>=F4)
9675 LET H$=H$+CHR$ PEEK Q
9676 NEXT Q
9677 GOTO VLST+109
9692 REM %F%-%N
9693 LET Q=VAL H$
9694 LET H$=H$+" FOR-NEXT"
9695 LET L=L+XX-III
9696 RETURN 
9697 REM %D%T%B
9698 FOR J=LEN I$ TO I STEP -I
9699 IF I$(J)=" " THEN NEXT J
9700 LET I$=I$( TO J)
9701 RETURN 
9702 REM %D%B
9703 LET E=F8*PEEK (E+I)+PEEK E
9704 RETURN 
9705 REM %S%R%C%H
9706 CLS 
9707 PRINT AT IX,I;"WRITE YOUR STRING WITHOUT LINE NUMBER.  ADD A QUOTE AND PRECEDESTRING WITH",,,," LET H$=""",,,," THEN ENTER AND CONTINUE."
9708 LET E=17116
9709 STOP 
9710 POKE E+IX,LEN H$
9711 POKE E-I,247
9712 POKE E,66
9713 LET K=PEEK 16396+F8*PEEK 16397-17143
9714 LET S=INT (K/F8)
9715 LET K=K-F8*S
9716 POKE E+III,K
9717 POKE E+IV,S
9718 FOR E=I TO LEN H$
9719 POKE (E+17015),CODE H$(E)
9720 NEXT E
9721 CLS 
9722 PRINT ,,"""";H$;"""";TAB Z0;,,
9723 LET K=USR 16809
9724 IF K=55555 THEN GOTO 9740
9727 LET Q=K
9728 LET Q=Q-I
9729 IF PEEK Q<>118 THEN GOTO 9728
9730 IF K-Q<IV THEN GOTO 9723
9732 LET E=F8*PEEK (Q+I)+PEEK (Q+II)
9733 LET K=F8*PEEK (Q+IV)+PEEK (Q+III)
9734 LET I$=""
9735 FOR Q=Q+FIV TO Q+III+K
9736 LET I$=I$+CHR$ PEEK Q
9737 NEXT Q
9738 PRINT E;TAB FIV;I$
9739 GOTO 9723
9740 PRINT ,,"  % %S%E%A%R%C%H% %C%O%M%P%L%E%T%E% "
9741 STOP 
9742 GOTO 9706
9750 REM %S%P%Y
9751 PRINT AT XX+I,Z0;"LOOK AT NO./%QUIT/%HIGHER/%L0WER"
9752 INPUT H$
9753 IF H$<>"Q" THEN GOTO 9755
9754 STOP 
9755 IF H$<>"H" THEN GOTO 9758
9756 LET B=B+F4
9757 GOTO 9762
9758 IF H$<>"L" THEN GOTO 9761
9759 LET B=B-F4
9760 GOTO 9762
9761 LET B=VAL H$
9762 CLS 
9763 FOR E=B TO B+XX+I
9764 PRINT E;TAB VI;PEEK E;TAB TEN;":";CHR$ PEEK E;":";TAB XX;F8*PEEK (E+I)+PEEK E
9765 NEXT E
9766 GOTO 9752
9800 REM %P%U%R%G
9801 LET N(1)=USR 16900
9802 REM %I%N%I%T%I%A%L%I%Z%A%T%I%O%N%S
9810 LET I=1
9811 LET Z0=I-I
9812 LET II=I+I
9813 LET III=II+I
9814 LET IV=II+II
9815 LET FIV=IV+I
9816 LET VI=IV+II
9817 LET VII=VI+I
9818 LET VIII=IV+IV
9819 LET IX=VIII+I
9820 LET TEN=IX+I
9821 LET XX=II*TEN
9822 LET XXX=30
9823 LET F4=II*VIII
9824 LET F5=II*F4
9825 LET F6=II*F5
9826 LET F7=II*F6
9827 LET F8=256
9828 LET FF=F8-I
9829 LET IK=I/F8/F8
9840 REM %K%E%Y%S
9841 LET VLST=9501
9842 LET DB=9703
9843 LET PURG=9801
9844 LET MEM=9916
9845 LET ZZ=9953
9846 LET ZZZ=ZZ-I
9847 LET ZZZZ=ZZ-II
9848 LET SAVE=9900
9849 LET SYSV=9928
9850 LET MAP=8101
9851 LET SEARCH=9450
9852 LET SRCH=9706
9853 LET HELP=9961
9854 LET SPY=9751
9855 LET DISA=9000
9856 LET ERR=9103
9857 LET DTB=9698
9858 LET WCOD=9121
9859 LET WSTR=9136
9860 LET NTRY=HELP
9861 LET EDIT=9201
9892 CLS 
9893 PRINT ,,,,"* TO DELETE STRINGS AND ARRAYS, REDIMENSION THEM TO ZERO."
9894 PRINT ,,"   DIM (NAME)$(0)  OR"
9895 PRINT ,,"   DIM (NAME)(0)"
9896 PRINT ,,"   THIS WILL PULL ERROR 3/0 BUT"," THE JOB IS DONE."
9897 STOP 
9898 GOTO VLST
9899 REM %S%A%V%E
9900 CLS 
9901 PRINT ,,,,"""";Z$;""" IS TO BE SAVED.",,,"START RECORDER.  PRESS ANY KEY.",,,Q$,,
9902 PRINT "MODE IS ";"LOOPING" AND NOT (NTRY-SAVE);"HELP" AND NOT (NTRY-HELP);"LOAD-AND-GO" AND NOT (NTRY-1000)
9903 SLOW 
9904 IF NTRY<>SAVE THEN PAUSE 40000
9905 FOR N=F6 TO I STEP -I
9906 UNPLOT N-I,XXX
9907 NEXT N
9908 SAVE Z$
9909 FAST 
9910 CLS 
9911 PRINT Y$;X$
9912 PRINT AT IX+VI,VII;"PRESENTS***"
9913 GOSUB ZZZ
9914 GOTO NTRY
9915 REM %M%E%M
9916 LET L=F8*(PEEK 16387-PEEK 16413)+PEEK 16386-PEEK 16412
9917 LET E=INT (L/F5/F5)
9918 PRINT AT IX,Z0;"MEMORY LEFT IS:";E;" K, ";L-F5*F5*E;" BYTES.",,,"(";L;" BYTES)"
9919 IF L<F8+XX THEN PRINT ,,"CAUTION: LIST EDITING MAY BE IMPAIRED."
9920 STOP 
9921 GOTO MAP
9927 REM %S%Y%S%V
9928 LET E=II*CODE D$-75
9929 IF E<I OR E>13 THEN GOTO 9933
9930 LET E$="10141824260002"
9931 LET E=VAL E$(E TO E+I)+16386
9932 LET D$=STR$ (F8*PEEK (E+I)+PEEK E)
9933 RETURN 
9950 REM %S%L%E%E%P
9951 LET ZZ=ZZ+F8
9952 LET ZZ=ZZ+F7
9953 LET ZZ=ZZ+F6
9954 LET ZZ=ZZ+F5
9955 LET E=ZZ-ZZZ+F5
9956 LET ZZ=ZZZ+I
9957 PAUSE E
9958 POKE 16437,FF
9959 RETURN 
9960 REM %H%E%L%P
9961 CLS 
9962 LET PAGE=I
9963 LET H$="% %H%E%L%P%  PAGE "
9964 PRINT AT I,IX;H$;PAGE
9965 PRINT ,,"* USE GOTO FOR DESIRED LOCATION,",,"* LET Z$=""(YOUR PROGRAM NAME)""",,,"* LET NTRY=1000 IF YOU WANT YOUR PROGRAM TO RUN AFTER LOADING." 
9966 PRINT ,,"* Z$=""";Z$;""""
9967 LET I$="% %K%E%Y%W%O%R%D% %L%I%N%E% %F%U%N%C%T%I%O%N% "
9968 PRINT ,,I$,"""HELP""   9960 HERE.","""VLST""   9500 VARIABLE LIST.","""MEM""    9915 AVAILABLE MEMORY. ""SAVE""   9900 SAVE PROGRAM,"
9969 PRINT """NTRY""   HELP UNLESS CHANGED."
9970 PRINT """PURG""   9800 DELETE VARIABLES."
9971 PRINT """MAP""    8100 MEMORY MAP."
9972 PRINT """SPY""    9750 LOOK AT MEMORY."
9973 PRINT """DISA""   9000 DISASSEMBLE."
9974 LET PAGE=II
9975 PRINT 
9976 CLS 
9977 PRINT AT I,IX;H$;PAGE,,,I$
9978 PRINT """WCOD""   9120 DECODE TABLE."
9979 PRINT """WSTD""   9135 MNEMONICS."
9980 PRINT """SRCH""   9705 BASIC CODE."
9981 PRINT """SEARCH"" 9450 ROM SPACE."
9982 PRINT """EDIT""   9200 MACH CODE."
9983 PRINT "*""GOTO VLST"" CODES AS:","  :236:V:L:S:T: (5 BYTES)" 
9984 PRINT "*""GOTO 9500"" CODES AS:","  :235:9:5:0:0:126:EXP:B4:B3:B2:B1:B0: (12 BYTES)"
9985 PRINT "* USING VARIABLES IN PLACE OF   NUMBERS CAN SAVE MEMORY."
9986 PRINT "* USE:Z0,I,II,III,IV,FIV,VI,VII,VIII,IX,TEN,XX,XXX IN PLACE OF:0,1,2,3,4,5,6,7,8,9,10,20,30."
9987 PRINT "* LIST 9802 TO SEE."
9988 STOP 
9989 GOTO HELP
9997 REM %M%/%L% %C%0%D%E% %T%E%M%P%L%A%T%E%S
9998 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.......   /\.'
9999 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.........1.......   /\.'
Scroll to Top
\DB\FF itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"F\DF\BF

Super Utility

Products: Super Utility
Developer(s): William J. Pedersen
Date: 1983
Type: Cassette
Platform(s): TS 1000

Utility for working with machine language programs and memory.

Content

Appears On

Related Products

Utility for working with machine language programs and memory.

Related Articles

Related Content

Image Gallery

Super Utility

Source Code

   1 REM %U%T%I%L%I%T%Y
   2 REM *************
   3 REM COPYRIGHT NOV 14, 1983 BY WILLIAM J. PEDERSEN. 1120 MERRIFIELD S.E., GRAND RAPIDS, MICHIGAN  49507
   4 REM REPRODUCTION OR USE OF THIS PROGRAM IS PROHIBITED WITHOUT EXPRESS WRITTEN PERMISSION.
   5 REM *************
   7 REM \7E\E6\E0\FE\C0\28\0E\F2\99\41\FE\80\28\07\F2\A2\41\FE\60\28\10\23\22\93\41\ED\5B\93\7B\19\23\23\C9\11\0C\00\19\11\06\00\19\C9\23\CB\7E\28\FB\18\F4\F5\D5\E5\2A\DB\42\ED\4B\DF\42\ED\5B\E7\42\1A\ED\B1\20\1B\22\DB\42\ED\43\DF\42\2B\ED\4B\E5\42\1A\ED\A1\20\DF\13\EA\C8\41\ED\4B\DB\42\18\21\01\03\D9\18\1C\F5\D5\E5\21\00\00\22\DB\42\21\FF\1F\22\DF\42\18\BF\00\00\D9\18\06
   8 REM \E1\D1\FD\2A\00\40\3E\1E\ED\47\F1\C9\F5\D5\E5\2A\10\40\22\DB\42\3E\80\BE\28\E6\CB\6E\F5\CD\78\41\22\DD\42\F1\20\08\2A\DD\42\22\DB\42\18\E7\CD\2E\42\2A\DB\42\18\DF\2A\DB\42\E5\ED\5B\DD\42\D5\AF\ED\52\EB\2A\1C\40\19\22\1C\40\2A\1A\40\19\22\1A\40\2A\14\40\E5\19\22\14\40\E1\D1\AF\ED\52\E5\C1\03\2A\DB\42\EB\ED\B0\E1\C9\1B\1B\1B\1B\1D\1B\1B\1B\1B\1B\1B\00\00\00\00\18\06
   9 REM \DC\07\F2\03\D9\FA\9C\AD\EA\78\42\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\57\1B\95\7B\A8\04\1B\1B\1B\1B\02\00\78\42\1B\1B\1B\1B\1B\1B\1E\1B\1B
8100 REM %M%A%P
8101 CLS 
8102 PRINT ,,"    % %M%E%M%O%R%Y% %M%A%P%  ";Z$
8103 LET G$="\##\##%P\:.\'.\':%V\:'\..\':%U%U\.'\.'1638420479204802457524576286712867232767ABCEFG0 PROGRAM =VARIABLES=AVAIL MEM=RAMTOP UP="
8104 LET H$="16509"
8105 LET Q=1
8106 LET S=37
8107 LET I$=CHR$ S
8108 FOR K=IV TO XX-I STEP FIV
8109 LET T=II*K+VII
8110 LET L=53.4+II*K/FIV
8111 LET D$=H$
8112 GOSUB SYSV
8113 LET TT=VAL D$
8114 LET D$=G$(L)
8115 GOSUB SYSV
8116 LET QQ=VAL D$
8117 IF QQ=Z0 THEN LET QQ=32768
8118 LET LL=54+II*K
8119 PRINT AT K-I,Z0;G$(LL TO LL+IX);QQ-TT;" BYTES."
8120 LET H$=G$(L+I)
8121 FOR N=Z0 TO 31
8122 PRINT AT K,N;G$(Q);
8123 LET B=13107.2+F7*N+819.2*K
8124 LET D$=I$
8125 GOSUB SYSV
8126 LET BB=VAL D$
8127 IF BB-B<F6 THEN PRINT AT K,N;G$(Q+I);
8128 IF BB>B+F7 THEN GOTO 8137
8129 LET Q=Q+II
8130 LET S=S+I
8131 LET D$=CHR$ S
8132 GOSUB SYSV
8133 LET I$=D$
8134 IF LEN I$<II THEN LET I$="65536"
8135 IF VAL I$>B+F7 THEN GOTO 8137
8136 GOTO 8130
8137 NEXT N
8138 PRINT G$(T TO T+IV);TAB 27;G$(T+FIV TO T+IX)
8139 NEXT K
8140 STOP 
8141 GOTO HELP
8999 REM % %D%I%S%A%S%S%E%M%B%L%E%R% 
9000 PRINT AT XX,Z0;"DISASSEMBLE STARTING WHERE?"
9001 INPUT WB
9002 CLS 
9003 LET WL=Z0
9004 LET WIA=WB
9005 LET WFS=Z0
9006 LET WFN=I
9007 LET WFK=Z0
9008 LET WF=Z0
9009 LET WFW=Z0
9010 LET WV=Z0
9011 LET G$=""
9012 LET WN=112
9013 LET WL=WL+I
9014 LET WP=PEEK WB
9015 IF WP<>221 AND WP<>253 THEN GOTO 9021
9016 IF WFK THEN GOTO ERR
9017 LET WF=I+(I AND WP=253)
9018 LET WFK=I
9019 LET WB=WB+I
9020 GOTO 9014
9021 IF WP<>203 THEN GOTO 9034
9022 LET WFN=Z0
9023 LET WJ=345
9024 LET WB=WB+I+WFK
9025 LET WP=PEEK WB
9026 LET W1=INT (WP/F6)
9027 LET W=WP-F6*W1
9028 LET W2=INT (W/VIII)
9029 LET W=W-VIII*W2
9030 IF WFK AND W<>VI THEN GOTO ERR
9031 IF W1 THEN LET T$(WJ)=CHR$ (97+W1)+CHR$ (F4+I+W2)+CHR$ (W+I)
9032 IF NOT W1 THEN LET T$(WJ)=CHR$ (49+W2)+CHR$ (W+I)+CHR$ 97
9033 GOTO 9042
9034 LET WJ=I+PEEK WB
9035 LET WW=Z0
9036 IF WP<>237 THEN GOTO 9040
9037 LET WB=WB+I
9038 LET WW=PEEK WB
9039 LET WJ=193+WW-(36 AND WW>159)
9040 IF WW>123 AND WW<160 OR WJ>344 THEN GOTO ERR
9041 LET WDIS=PEEK (WB+I)
9042 LET V$=""
9043 LET W0=CODE T$(WJ,I)
9044 IF W0=WN+IV THEN GOTO ERR
9045 IF W0<>WN-IV THEN GOTO 9048
9046 LET WV=VAL (W$(CODE T$(WJ,II)))
9047 LET G$=" "
9048 GOSUB 9066
9049 LET B$=I$+" "
9050 LET W0=CODE T$(WJ,II)
9051 GOSUB 9066
9052 IF I$="" THEN GOTO 9063
9053 IF WP=211 THEN LET I$="(N)"
9054 LET B$=B$+I$
9055 LET W0=CODE T$(WJ,III)
9056 GOSUB 9066
9057 IF I$="" THEN GOTO 9060
9058 IF WP=219 THEN LET I$="(N)"
9059 LET B$=B$+","+I$
9060 IF WFK AND NOT WFW THEN GOTO ERR
9061 LET V$=STR$ WV
9062 IF NOT LEN G$ AND WV=Z0 THEN LET V$=""
9063 PRINT WIA;TAB VI;B$;TAB XX-I;V$+G$
9064 LET WB=WB+I+WFS*WFN
9065 GOTO 9004
9066 LET I$=W$(W0)
9067 GOSUB DTB
9068 IF W0=WN+FIV THEN GOSUB 9094
9069 IF W0<>WN+VI THEN GOTO 9075
9070 LET WB=WB+WFK+I
9071 LET WFN=Z0
9072 LET WV=PEEK WB
9073 IF WP=211 OR WP=219 THEN GOTO 9078
9074 LET G$=":"+CHR$ WV+":"
9075 IF WV>=F5 THEN GOTO 9078
9076 LET W=F4+I+III*WV
9078 IF W0<WN+VII THEN GOTO 9085
9079 LET WB=WB+II
9080 LET G$=" "
9081 LET WFN=Z0
9082 LET E=WB-I
9083 GOSUB DB
9084 LET WV=E
9085 IF NOT WFK THEN GOTO 9092
9086 IF W0=VII OR W0=61 OR W0=WN THEN LET WFW=I
9087 IF W0<>VII THEN GOTO 9091
9088 LET WFS=I
9089 GOSUB 9095
9090 LET I$=W$(WN+WF, TO III)+I$+")"
9091 IF W0=61 THEN LET I$=W$(WN+WF,II TO III)
9092 IF W0=WN THEN LET I$=W$(WN+WF)
9093 RETURN 
9094 LET WB=WB+I
9095 LET W=WDIS
9096 IF W<F7 THEN GOTO 9098
9097 LET W=W-F8
9098 IF NOT WFK THEN LET W=W+II
9099 IF W>=Z0 THEN LET I$="+"+STR$ W
9100 IF W<Z0 THEN LET I$=STR$ W
9101 IF B$( TO II)="JR" OR B$( TO II)="DJ" THEN LET WV=WIA+W
9102 RETURN 
9103 PRINT "ERROR AT ";WIA;". ",
9104 FOR J=Z0 TO III
9105 PRINT PEEK (WIA+J);" ";
9106 NEXT J
9107 PRINT 
9108 GOTO 9004
9120 REM %W%C%O%D
9121 CLS 
9122 PRINT ,," T$(345,3) TABLE FOR DECODING","MOST Z80 INSTRUCTIONS.",,,"N   VALUES      INTERPRETATION",,,
9123 FOR N=I TO 345
9124 PRINT N;" ";
9125 FOR K=I TO III
9126 PRINT CODE T$(N,K);" ";
9127 NEXT K
9128 PRINT ,
9129 FOR K=I TO III
9130 PRINT W$(CODE T$(N,K));" ";
9131 NEXT K
9132 PRINT 
9133 NEXT N
9134 STOP 
9135 REM %W%S%T%R
9136 CLS 
9137 PRINT ,," W$(120,4) ARRAY FOR MNEMONICS.",,,
9138 FOR N=I TO 120
9139 PRINT TAB VI;"W$(";N;")=","""";W$(N);""""
9140 NEXT N
9141 STOP 
9142 GOTO WCOD
9200 REM %E%D%I%T
9201 CLS 
9202 LET L=9228
9203 LET M=9317
9206 PRINT ,,"% %M%A%C%H%I%N%E% %L%A%N%G%U%A%G%E% %E%D%I%T%O%R% ",,,"WHERE ABOVE 16759?  START ";
9207 INPUT B
9208 PRINT B,"SELECT BY NO."
9209 FOR N=VI TO F4+I
9210 PRINT AT N,F4;"                "
9211 NEXT N
9212 PRINT AT IV,XX;"NOW   ";B
9213 PRINT ,," 1 SINGLE BYTE",," 2 DOUBLE BYTE",," 3 LD HL,(NN)",," 4 LD (NN),HL",," 5 PUSH SEQ",," 6 LD (NN),BC",," 7 LD BC,(NN)",," 8 LD (NN),DE",," 9 LD DE,(NN)",,"10 SBC HL,BC",,"11 ADC HL,BC",,"12 SBC HL,DE",,"13 ADC HL,DE",,"14 JUMPS",,"15 %Q%U%I%T"
9214 INPUT N
9215 IF N<I OR N>F4-II THEN GOTO M
9216 PRINT AT N+FIV,F4;"% "
9217 GOTO L-F4+VI*N
9218 INPUT K
9219 IF K<0 OR K>FF THEN GOTO M
9220 POKE B,K
9221 LET B=B+I
9222 GOTO 9209
9224 INPUT K
9225 IF K<0 OR K>=F8*F8 THEN GOTO M
9226 POKE B+I,INT (K/F8)
9227 POKE B,K-F8*INT (K/F8)
9228 LET B=B+II
9229 GOTO 9209
9236 POKE B,XXX+N
9237 LET B=B+I
9238 GOTO L-IV
9242 POKE B,245
9243 POKE B+I,213
9244 POKE B+II,229
9245 LET B=B+I
9246 GOTO L
9266 POKE B,237  
9267 POKE B+I,XX-I+VIII*N  
9268 LET B=B+II
9269 GOTO L-IV
9290 POKE B,237  
9291 POKE B+I,VIII*N-F4+II  
9292 GOTO L
9296 PRINT AT F4,F4;"JUMP TO?"
9297 INPUT N
9298 IF N<16760 OR N>=F8*F8 THEN GOTO M
9299 LET W=(B-N)>F7+I OR B-N<-F7+II
9300 PRINT AT VI,F4;"WHICH CONDITION?",AT VIII,F4;" 1 DJNZ",AT IX,F4;" 2 NONE",AT TEN,F4;" 3 NZ",AT TEN+I,F4;" 4  Z",AT VI+VI,F4;" 5 NC",AT IX+IV,F4;" 6  C",AT F4-II,F4;" 7 PO",AT F4-I,F4;" 8 PE",AT F4,F4;" 9  P   ",AT F4+I,F4;"10  M"   
9301 INPUT S
9302 IF S<I OR S>TEN THEN GOTO M
9303 IF W OR S>VI THEN GOTO 9309
9304 LET N=N-B-II
9305 IF N>=F7 THEN LET N=F7-N
9306 POKE B,VIII+VIII*S
9307 POKE B+I,N
9308 GOTO L
9309 IF S=I THEN GOTO M
9310 POKE B,170+VIII*S
9311 IF S=II THEN POKE B,195
9312 LET B=B+I
9313 LET P3=INT (N/F8)
9314 POKE B,N-F8*P3
9315 POKE B+I,P3
9316 GOTO L
9317 CLS 
9318 PRINT AT IX,Z0;"%Q%U%I%T OR AN ERROR HAS OCCURRED.  THE LAST LOCATION WAS ";B;".","CONTINUE FOR DISASSEMBLER."
9319 STOP 
9320 GOTO DISA
9449 REM %S%E%A%R%C%H
9450 CLS 
9451 LET Q=Z0
9452 LET E=I
9453 PRINT ,,"OBJECTIVE/TITLE?",
9454 INPUT G$
9455 PRINT AT I,Z0;G$;"                ";AT II,Z0;"PRINT? %YES OR %NO",
9456 LET W=Z0
9457 INPUT H$
9458 IF LEN H$ THEN IF H$(I)="Y" THEN LET W=I
9459 PRINT AT II,Z0;"INPUT YOUR CODE          ",
9460 INPUT L
9461 IF L>FF THEN GOTO 9481
9462 PRINT AT II,Z0;"IF DOUBLE BYTE, ENTER ""D"""
9463 INPUT H$
9464 IF LEN H$ THEN IF H$(I)="D" THEN GOTO 9481
9465 POKE 17015+E,L
9466 LET E=E+I
9467 PRINT AT II,Z0;"ANOTHER ENTRY? %YES OR %NO",
9468 INPUT H$
9469 IF LEN H$ THEN IF H$(I)="Y" THEN GOTO 9459
9470 CLS 
9471 IF NOT W THEN PRINT ,,G$
9472 IF W THEN LPRINT G$
9473 POKE 17125,E-I
9474 LET K=USR 16860
9475 GOTO 9477
9476 LET K=USR 16809
9477 LET Q=Q+I
9478 IF K=55555 THEN GOTO 9486
9479 GOSUB 9490+II*W
9480 GOTO 9476
9481 LET P2=INT (L/F8+II**-IX)
9482 POKE 17016+E,P2
9483 POKE 17015+E,L-F8*P2
9484 LET E=E+II
9485 GOTO 9467
9486 IF NOT W THEN PRINT "$";Q-I
9487 IF W THEN LPRINT "$";Q-I
9488 STOP 
9489 GOTO SEARCH
9490 PRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9491 RETURN 
9492 LPRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9493 RETURN 
9499 STOP 
9500 REM %V%L%S%T
9501 CLS 
9502 PRINT ,,,,"   %V%A%R%I%A%B%L%E%S",,,
9503 LET E=16400
9504 GOSUB DB
9505 LET L=E-I
9506 LET T=Z0
9507 LET T=T+I
9508 LET L=L+I
9509 LET B=L
9510 IF LEN H$>I THEN IF H$( TO II)="H$" THEN GOSUB VLST+XX
9511 LET CH=PEEK L
9512 PRINT TAB III-LEN STR$ T;T;" ";
9512 LET TP=INT (CH/F5)
9514 LET CH=CH-TP*F5+F5
9515 LET H$=CHR$ CH
9516 GOSUB VLST-F5+F5*TP
9517 LET E=TP=II OR TP=VI
9518 IF E THEN PRINT H$;TAB XX+VI;B
9519 IF NOT E THEN PRINT H$;TAB XX+III-LEN STR$ Q;Q;TAB XX+VI;B
9520 GOTO VLST+VI
9521 PRINT ,,"   %E%N%D% %O%F% %L%I%S%T ";L
9522 LET H$="***"
9523 STOP 
9524 GOTO VLST
9532 REM %S%T%R%I%N%G
9533 LET H$=H$+"$ "
9534 LET E=L+I
9535 GOSUB DB
9536 FOR Q=I TO (E AND E<F4)+(F4 AND E>=F4)
9537 LET H$=H$+CHR$ PEEK (L+II+Q)
9538 NEXT Q
9539 LET L=L+II+E
9540 RETURN 
9564 REM %S%I%N%G%L
9565 LET Q=VAL H$
9566 LET L=L+FIV
9567 RETURN 
9596 REM %N%(%)
9597 LET H$=H$+"("
9598 LET I$=H$
9599 LET S=PEEK (L+III)
9600 FOR Q=I TO S
9601 LET E=L+II+II*Q
9602 GOSUB DB
9603 IF Q>=S THEN GOTO VLST+105
9604 LET H$=H$+STR$ E+","
9605 LET I$=I$+"1,"
9606 NEXT Q
9607 LET H$=H$+STR$ E+")"
9608 LET I$=I$+"1)"
9609 LET Q=VAL I$
9610 LET E=L+I
9611 GOSUB DB
9612 LET L=L+II+E
9613 RETURN 
9628 REM %M%U%L%T
9629 LET L=L+I
9630 LET CH=PEEK L
9631 IF INT (CH/F6)=II THEN GOTO VLST+133
9632 LET H$=H$+CHR$ CH
9633 GOTO VLST+F7
9634 LET H$=H$+CHR$ (CH-F7)
9635 LET Q=VAL H$
9636 LET L=L+FIV
9637 RETURN 
9660 REM %$%(%)
9661 LET H$=H$+"$("
9662 LET S=PEEK (L+III)
9663 FOR Q=I TO S
9664 LET E=L+II+II*Q
9665 GOSUB DB
9666 IF Q>=S THEN GOTO VLST+168
9667 LET H$=H$+STR$ E+","
9668 NEXT Q
9669 LET H$=H$+STR$ E+")"
9670 LET E=L+VI
9671 LET U=L+III+II*S
9672 GOSUB DB
9674 FOR Q=U TO U+(E AND E<F4)+(F4 AND E>=F4)
9675 LET H$=H$+CHR$ PEEK Q
9676 NEXT Q
9677 GOTO VLST+109
9692 REM %F%-%N
9693 LET Q=VAL H$
9694 LET H$=H$+" FOR-NEXT"
9695 LET L=L+XX-III
9696 RETURN 
9697 REM %D%T%B
9698 FOR J=LEN I$ TO I STEP -I
9699 IF I$(J)=" " THEN NEXT J
9700 LET I$=I$( TO J)
9701 RETURN 
9702 REM %D%B
9703 LET E=F8*PEEK (E+I)+PEEK E
9704 RETURN 
9705 REM %S%R%C%H
9706 CLS 
9707 PRINT AT IX,I;"WRITE YOUR STRING WITHOUT LINE NUMBER.  ADD A QUOTE AND PRECEDESTRING WITH",,,," LET H$=""",,,," THEN ENTER AND CONTINUE."
9708 LET E=17116
9709 STOP 
9710 POKE E+IX,LEN H$
9711 POKE E-I,247
9712 POKE E,66
9713 LET K=PEEK 16396+F8*PEEK 16397-17143
9714 LET S=INT (K/F8)
9715 LET K=K-F8*S
9716 POKE E+III,K
9717 POKE E+IV,S
9718 FOR E=I TO LEN H$
9719 POKE (E+17015),CODE H$(E)
9720 NEXT E
9721 CLS 
9722 PRINT ,,"""";H$;"""";TAB Z0;,,
9723 LET K=USR 16809
9724 IF K=55555 THEN GOTO 9740
9727 LET Q=K
9728 LET Q=Q-I
9729 IF PEEK Q<>118 THEN GOTO 9728
9730 IF K-Q<IV THEN GOTO 9723
9732 LET E=F8*PEEK (Q+I)+PEEK (Q+II)
9733 LET K=F8*PEEK (Q+IV)+PEEK (Q+III)
9734 LET I$=""
9735 FOR Q=Q+FIV TO Q+III+K
9736 LET I$=I$+CHR$ PEEK Q
9737 NEXT Q
9738 PRINT E;TAB FIV;I$
9739 GOTO 9723
9740 PRINT ,,"  % %S%E%A%R%C%H% %C%O%M%P%L%E%T%E% "
9741 STOP 
9742 GOTO 9706
9750 REM %S%P%Y
9751 PRINT AT XX+I,Z0;"LOOK AT NO./%QUIT/%HIGHER/%L0WER"
9752 INPUT H$
9753 IF H$<>"Q" THEN GOTO 9755
9754 STOP 
9755 IF H$<>"H" THEN GOTO 9758
9756 LET B=B+F4
9757 GOTO 9762
9758 IF H$<>"L" THEN GOTO 9761
9759 LET B=B-F4
9760 GOTO 9762
9761 LET B=VAL H$
9762 CLS 
9763 FOR E=B TO B+XX+I
9764 PRINT E;TAB VI;PEEK E;TAB TEN;":";CHR$ PEEK E;":";TAB XX;F8*PEEK (E+I)+PEEK E
9765 NEXT E
9766 GOTO 9752
9800 REM %P%U%R%G
9801 LET N(1)=USR 16900
9802 REM %I%N%I%T%I%A%L%I%Z%A%T%I%O%N%S
9810 LET I=1
9811 LET Z0=I-I
9812 LET II=I+I
9813 LET III=II+I
9814 LET IV=II+II
9815 LET FIV=IV+I
9816 LET VI=IV+II
9817 LET VII=VI+I
9818 LET VIII=IV+IV
9819 LET IX=VIII+I
9820 LET TEN=IX+I
9821 LET XX=II*TEN
9822 LET XXX=30
9823 LET F4=II*VIII
9824 LET F5=II*F4
9825 LET F6=II*F5
9826 LET F7=II*F6
9827 LET F8=256
9828 LET FF=F8-I
9829 LET IK=I/F8/F8
9840 REM %K%E%Y%S
9841 LET VLST=9501
9842 LET DB=9703
9843 LET PURG=9801
9844 LET MEM=9916
9845 LET ZZ=9953
9846 LET ZZZ=ZZ-I
9847 LET ZZZZ=ZZ-II
9848 LET SAVE=9900
9849 LET SYSV=9928
9850 LET MAP=8101
9851 LET SEARCH=9450
9852 LET SRCH=9706
9853 LET HELP=9961
9854 LET SPY=9751
9855 LET DISA=9000
9856 LET ERR=9103
9857 LET DTB=9698
9858 LET WCOD=9121
9859 LET WSTR=9136
9860 LET NTRY=HELP
9861 LET EDIT=9201
9892 CLS 
9893 PRINT ,,,,"* TO DELETE STRINGS AND ARRAYS, REDIMENSION THEM TO ZERO."
9894 PRINT ,,"   DIM (NAME)$(0)  OR"
9895 PRINT ,,"   DIM (NAME)(0)"
9896 PRINT ,,"   THIS WILL PULL ERROR 3/0 BUT"," THE JOB IS DONE."
9897 STOP 
9898 GOTO VLST
9899 REM %S%A%V%E
9900 CLS 
9901 PRINT ,,,,"""";Z$;""" IS TO BE SAVED.",,,"START RECORDER.  PRESS ANY KEY.",,,Q$,,
9902 PRINT "MODE IS ";"LOOPING" AND NOT (NTRY-SAVE);"HELP" AND NOT (NTRY-HELP);"LOAD-AND-GO" AND NOT (NTRY-1000)
9903 SLOW 
9904 IF NTRY<>SAVE THEN PAUSE 40000
9905 FOR N=F6 TO I STEP -I
9906 UNPLOT N-I,XXX
9907 NEXT N
9908 SAVE Z$
9909 FAST 
9910 CLS 
9911 PRINT Y$;X$
9912 PRINT AT IX+VI,VII;"PRESENTS***"
9913 GOSUB ZZZ
9914 GOTO NTRY
9915 REM %M%E%M
9916 LET L=F8*(PEEK 16387-PEEK 16413)+PEEK 16386-PEEK 16412
9917 LET E=INT (L/F5/F5)
9918 PRINT AT IX,Z0;"MEMORY LEFT IS:";E;" K, ";L-F5*F5*E;" BYTES.",,,"(";L;" BYTES)"
9919 IF L<F8+XX THEN PRINT ,,"CAUTION: LIST EDITING MAY BE IMPAIRED."
9920 STOP 
9921 GOTO MAP
9927 REM %S%Y%S%V
9928 LET E=II*CODE D$-75
9929 IF E<I OR E>13 THEN GOTO 9933
9930 LET E$="10141824260002"
9931 LET E=VAL E$(E TO E+I)+16386
9932 LET D$=STR$ (F8*PEEK (E+I)+PEEK E)
9933 RETURN 
9950 REM %S%L%E%E%P
9951 LET ZZ=ZZ+F8
9952 LET ZZ=ZZ+F7
9953 LET ZZ=ZZ+F6
9954 LET ZZ=ZZ+F5
9955 LET E=ZZ-ZZZ+F5
9956 LET ZZ=ZZZ+I
9957 PAUSE E
9958 POKE 16437,FF
9959 RETURN 
9960 REM %H%E%L%P
9961 CLS 
9962 LET PAGE=I
9963 LET H$="% %H%E%L%P%  PAGE "
9964 PRINT AT I,IX;H$;PAGE
9965 PRINT ,,"* USE GOTO FOR DESIRED LOCATION,",,"* LET Z$=""(YOUR PROGRAM NAME)""",,,"* LET NTRY=1000 IF YOU WANT YOUR PROGRAM TO RUN AFTER LOADING." 
9966 PRINT ,,"* Z$=""";Z$;""""
9967 LET I$="% %K%E%Y%W%O%R%D% %L%I%N%E% %F%U%N%C%T%I%O%N% "
9968 PRINT ,,I$,"""HELP""   9960 HERE.","""VLST""   9500 VARIABLE LIST.","""MEM""    9915 AVAILABLE MEMORY. ""SAVE""   9900 SAVE PROGRAM,"
9969 PRINT """NTRY""   HELP UNLESS CHANGED."
9970 PRINT """PURG""   9800 DELETE VARIABLES."
9971 PRINT """MAP""    8100 MEMORY MAP."
9972 PRINT """SPY""    9750 LOOK AT MEMORY."
9973 PRINT """DISA""   9000 DISASSEMBLE."
9974 LET PAGE=II
9975 PRINT 
9976 CLS 
9977 PRINT AT I,IX;H$;PAGE,,,I$
9978 PRINT """WCOD""   9120 DECODE TABLE."
9979 PRINT """WSTD""   9135 MNEMONICS."
9980 PRINT """SRCH""   9705 BASIC CODE."
9981 PRINT """SEARCH"" 9450 ROM SPACE."
9982 PRINT """EDIT""   9200 MACH CODE."
9983 PRINT "*""GOTO VLST"" CODES AS:","  :236:V:L:S:T: (5 BYTES)" 
9984 PRINT "*""GOTO 9500"" CODES AS:","  :235:9:5:0:0:126:EXP:B4:B3:B2:B1:B0: (12 BYTES)"
9985 PRINT "* USING VARIABLES IN PLACE OF   NUMBERS CAN SAVE MEMORY."
9986 PRINT "* USE:Z0,I,II,III,IV,FIV,VI,VII,VIII,IX,TEN,XX,XXX IN PLACE OF:0,1,2,3,4,5,6,7,8,9,10,20,30."
9987 PRINT "* LIST 9802 TO SEE."
9988 STOP 
9989 GOTO HELP
9997 REM %M%/%L% %C%0%D%E% %T%E%M%P%L%A%T%E%S
9998 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.......   /\.'
9999 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.........1.......   /\.'
Scroll to Top

Super Utility

Products: Super Utility
Developer(s): William J. Pedersen
Date: 1983
Type: Cassette
Platform(s): TS 1000

Utility for working with machine language programs and memory.

Content

Appears On

Related Products

Utility for working with machine language programs and memory.

Related Articles

Related Content

Image Gallery

Super Utility

Source Code

   1 REM %U%T%I%L%I%T%Y
   2 REM *************
   3 REM COPYRIGHT NOV 14, 1983 BY WILLIAM J. PEDERSEN. 1120 MERRIFIELD S.E., GRAND RAPIDS, MICHIGAN  49507
   4 REM REPRODUCTION OR USE OF THIS PROGRAM IS PROHIBITED WITHOUT EXPRESS WRITTEN PERMISSION.
   5 REM *************
   7 REM \7E\E6\E0\FE\C0\28\0E\F2\99\41\FE\80\28\07\F2\A2\41\FE\60\28\10\23\22\93\41\ED\5B\93\7B\19\23\23\C9\11\0C\00\19\11\06\00\19\C9\23\CB\7E\28\FB\18\F4\F5\D5\E5\2A\DB\42\ED\4B\DF\42\ED\5B\E7\42\1A\ED\B1\20\1B\22\DB\42\ED\43\DF\42\2B\ED\4B\E5\42\1A\ED\A1\20\DF\13\EA\C8\41\ED\4B\DB\42\18\21\01\03\D9\18\1C\F5\D5\E5\21\00\00\22\DB\42\21\FF\1F\22\DF\42\18\BF\00\00\D9\18\06
   8 REM \E1\D1\FD\2A\00\40\3E\1E\ED\47\F1\C9\F5\D5\E5\2A\10\40\22\DB\42\3E\80\BE\28\E6\CB\6E\F5\CD\78\41\22\DD\42\F1\20\08\2A\DD\42\22\DB\42\18\E7\CD\2E\42\2A\DB\42\18\DF\2A\DB\42\E5\ED\5B\DD\42\D5\AF\ED\52\EB\2A\1C\40\19\22\1C\40\2A\1A\40\19\22\1A\40\2A\14\40\E5\19\22\14\40\E1\D1\AF\ED\52\E5\C1\03\2A\DB\42\EB\ED\B0\E1\C9\1B\1B\1B\1B\1D\1B\1B\1B\1B\1B\1B\00\00\00\00\18\06
   9 REM \DC\07\F2\03\D9\FA\9C\AD\EA\78\42\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\57\1B\95\7B\A8\04\1B\1B\1B\1B\02\00\78\42\1B\1B\1B\1B\1B\1B\1E\1B\1B
8100 REM %M%A%P
8101 CLS 
8102 PRINT ,,"    % %M%E%M%O%R%Y% %M%A%P%  ";Z$
8103 LET G$="\##\##%P\:.\'.\':%V\:'\..\':%U%U\.'\.'1638420479204802457524576286712867232767ABCEFG0 PROGRAM =VARIABLES=AVAIL MEM=RAMTOP UP="
8104 LET H$="16509"
8105 LET Q=1
8106 LET S=37
8107 LET I$=CHR$ S
8108 FOR K=IV TO XX-I STEP FIV
8109 LET T=II*K+VII
8110 LET L=53.4+II*K/FIV
8111 LET D$=H$
8112 GOSUB SYSV
8113 LET TT=VAL D$
8114 LET D$=G$(L)
8115 GOSUB SYSV
8116 LET QQ=VAL D$
8117 IF QQ=Z0 THEN LET QQ=32768
8118 LET LL=54+II*K
8119 PRINT AT K-I,Z0;G$(LL TO LL+IX);QQ-TT;" BYTES."
8120 LET H$=G$(L+I)
8121 FOR N=Z0 TO 31
8122 PRINT AT K,N;G$(Q);
8123 LET B=13107.2+F7*N+819.2*K
8124 LET D$=I$
8125 GOSUB SYSV
8126 LET BB=VAL D$
8127 IF BB-B<F6 THEN PRINT AT K,N;G$(Q+I);
8128 IF BB>B+F7 THEN GOTO 8137
8129 LET Q=Q+II
8130 LET S=S+I
8131 LET D$=CHR$ S
8132 GOSUB SYSV
8133 LET I$=D$
8134 IF LEN I$<II THEN LET I$="65536"
8135 IF VAL I$>B+F7 THEN GOTO 8137
8136 GOTO 8130
8137 NEXT N
8138 PRINT G$(T TO T+IV);TAB 27;G$(T+FIV TO T+IX)
8139 NEXT K
8140 STOP 
8141 GOTO HELP
8999 REM % %D%I%S%A%S%S%E%M%B%L%E%R% 
9000 PRINT AT XX,Z0;"DISASSEMBLE STARTING WHERE?"
9001 INPUT WB
9002 CLS 
9003 LET WL=Z0
9004 LET WIA=WB
9005 LET WFS=Z0
9006 LET WFN=I
9007 LET WFK=Z0
9008 LET WF=Z0
9009 LET WFW=Z0
9010 LET WV=Z0
9011 LET G$=""
9012 LET WN=112
9013 LET WL=WL+I
9014 LET WP=PEEK WB
9015 IF WP<>221 AND WP<>253 THEN GOTO 9021
9016 IF WFK THEN GOTO ERR
9017 LET WF=I+(I AND WP=253)
9018 LET WFK=I
9019 LET WB=WB+I
9020 GOTO 9014
9021 IF WP<>203 THEN GOTO 9034
9022 LET WFN=Z0
9023 LET WJ=345
9024 LET WB=WB+I+WFK
9025 LET WP=PEEK WB
9026 LET W1=INT (WP/F6)
9027 LET W=WP-F6*W1
9028 LET W2=INT (W/VIII)
9029 LET W=W-VIII*W2
9030 IF WFK AND W<>VI THEN GOTO ERR
9031 IF W1 THEN LET T$(WJ)=CHR$ (97+W1)+CHR$ (F4+I+W2)+CHR$ (W+I)
9032 IF NOT W1 THEN LET T$(WJ)=CHR$ (49+W2)+CHR$ (W+I)+CHR$ 97
9033 GOTO 9042
9034 LET WJ=I+PEEK WB
9035 LET WW=Z0
9036 IF WP<>237 THEN GOTO 9040
9037 LET WB=WB+I
9038 LET WW=PEEK WB
9039 LET WJ=193+WW-(36 AND WW>159)
9040 IF WW>123 AND WW<160 OR WJ>344 THEN GOTO ERR
9041 LET WDIS=PEEK (WB+I)
9042 LET V$=""
9043 LET W0=CODE T$(WJ,I)
9044 IF W0=WN+IV THEN GOTO ERR
9045 IF W0<>WN-IV THEN GOTO 9048
9046 LET WV=VAL (W$(CODE T$(WJ,II)))
9047 LET G$=" "
9048 GOSUB 9066
9049 LET B$=I$+" "
9050 LET W0=CODE T$(WJ,II)
9051 GOSUB 9066
9052 IF I$="" THEN GOTO 9063
9053 IF WP=211 THEN LET I$="(N)"
9054 LET B$=B$+I$
9055 LET W0=CODE T$(WJ,III)
9056 GOSUB 9066
9057 IF I$="" THEN GOTO 9060
9058 IF WP=219 THEN LET I$="(N)"
9059 LET B$=B$+","+I$
9060 IF WFK AND NOT WFW THEN GOTO ERR
9061 LET V$=STR$ WV
9062 IF NOT LEN G$ AND WV=Z0 THEN LET V$=""
9063 PRINT WIA;TAB VI;B$;TAB XX-I;V$+G$
9064 LET WB=WB+I+WFS*WFN
9065 GOTO 9004
9066 LET I$=W$(W0)
9067 GOSUB DTB
9068 IF W0=WN+FIV THEN GOSUB 9094
9069 IF W0<>WN+VI THEN GOTO 9075
9070 LET WB=WB+WFK+I
9071 LET WFN=Z0
9072 LET WV=PEEK WB
9073 IF WP=211 OR WP=219 THEN GOTO 9078
9074 LET G$=":"+CHR$ WV+":"
9075 IF WV>=F5 THEN GOTO 9078
9076 LET W=F4+I+III*WV
9078 IF W0<WN+VII THEN GOTO 9085
9079 LET WB=WB+II
9080 LET G$=" "
9081 LET WFN=Z0
9082 LET E=WB-I
9083 GOSUB DB
9084 LET WV=E
9085 IF NOT WFK THEN GOTO 9092
9086 IF W0=VII OR W0=61 OR W0=WN THEN LET WFW=I
9087 IF W0<>VII THEN GOTO 9091
9088 LET WFS=I
9089 GOSUB 9095
9090 LET I$=W$(WN+WF, TO III)+I$+")"
9091 IF W0=61 THEN LET I$=W$(WN+WF,II TO III)
9092 IF W0=WN THEN LET I$=W$(WN+WF)
9093 RETURN 
9094 LET WB=WB+I
9095 LET W=WDIS
9096 IF W<F7 THEN GOTO 9098
9097 LET W=W-F8
9098 IF NOT WFK THEN LET W=W+II
9099 IF W>=Z0 THEN LET I$="+"+STR$ W
9100 IF W<Z0 THEN LET I$=STR$ W
9101 IF B$( TO II)="JR" OR B$( TO II)="DJ" THEN LET WV=WIA+W
9102 RETURN 
9103 PRINT "ERROR AT ";WIA;". ",
9104 FOR J=Z0 TO III
9105 PRINT PEEK (WIA+J);" ";
9106 NEXT J
9107 PRINT 
9108 GOTO 9004
9120 REM %W%C%O%D
9121 CLS 
9122 PRINT ,," T$(345,3) TABLE FOR DECODING","MOST Z80 INSTRUCTIONS.",,,"N   VALUES      INTERPRETATION",,,
9123 FOR N=I TO 345
9124 PRINT N;" ";
9125 FOR K=I TO III
9126 PRINT CODE T$(N,K);" ";
9127 NEXT K
9128 PRINT ,
9129 FOR K=I TO III
9130 PRINT W$(CODE T$(N,K));" ";
9131 NEXT K
9132 PRINT 
9133 NEXT N
9134 STOP 
9135 REM %W%S%T%R
9136 CLS 
9137 PRINT ,," W$(120,4) ARRAY FOR MNEMONICS.",,,
9138 FOR N=I TO 120
9139 PRINT TAB VI;"W$(";N;")=","""";W$(N);""""
9140 NEXT N
9141 STOP 
9142 GOTO WCOD
9200 REM %E%D%I%T
9201 CLS 
9202 LET L=9228
9203 LET M=9317
9206 PRINT ,,"% %M%A%C%H%I%N%E% %L%A%N%G%U%A%G%E% %E%D%I%T%O%R% ",,,"WHERE ABOVE 16759?  START ";
9207 INPUT B
9208 PRINT B,"SELECT BY NO."
9209 FOR N=VI TO F4+I
9210 PRINT AT N,F4;"                "
9211 NEXT N
9212 PRINT AT IV,XX;"NOW   ";B
9213 PRINT ,," 1 SINGLE BYTE",," 2 DOUBLE BYTE",," 3 LD HL,(NN)",," 4 LD (NN),HL",," 5 PUSH SEQ",," 6 LD (NN),BC",," 7 LD BC,(NN)",," 8 LD (NN),DE",," 9 LD DE,(NN)",,"10 SBC HL,BC",,"11 ADC HL,BC",,"12 SBC HL,DE",,"13 ADC HL,DE",,"14 JUMPS",,"15 %Q%U%I%T"
9214 INPUT N
9215 IF N<I OR N>F4-II THEN GOTO M
9216 PRINT AT N+FIV,F4;"% "
9217 GOTO L-F4+VI*N
9218 INPUT K
9219 IF K<0 OR K>FF THEN GOTO M
9220 POKE B,K
9221 LET B=B+I
9222 GOTO 9209
9224 INPUT K
9225 IF K<0 OR K>=F8*F8 THEN GOTO M
9226 POKE B+I,INT (K/F8)
9227 POKE B,K-F8*INT (K/F8)
9228 LET B=B+II
9229 GOTO 9209
9236 POKE B,XXX+N
9237 LET B=B+I
9238 GOTO L-IV
9242 POKE B,245
9243 POKE B+I,213
9244 POKE B+II,229
9245 LET B=B+I
9246 GOTO L
9266 POKE B,237  
9267 POKE B+I,XX-I+VIII*N  
9268 LET B=B+II
9269 GOTO L-IV
9290 POKE B,237  
9291 POKE B+I,VIII*N-F4+II  
9292 GOTO L
9296 PRINT AT F4,F4;"JUMP TO?"
9297 INPUT N
9298 IF N<16760 OR N>=F8*F8 THEN GOTO M
9299 LET W=(B-N)>F7+I OR B-N<-F7+II
9300 PRINT AT VI,F4;"WHICH CONDITION?",AT VIII,F4;" 1 DJNZ",AT IX,F4;" 2 NONE",AT TEN,F4;" 3 NZ",AT TEN+I,F4;" 4  Z",AT VI+VI,F4;" 5 NC",AT IX+IV,F4;" 6  C",AT F4-II,F4;" 7 PO",AT F4-I,F4;" 8 PE",AT F4,F4;" 9  P   ",AT F4+I,F4;"10  M"   
9301 INPUT S
9302 IF S<I OR S>TEN THEN GOTO M
9303 IF W OR S>VI THEN GOTO 9309
9304 LET N=N-B-II
9305 IF N>=F7 THEN LET N=F7-N
9306 POKE B,VIII+VIII*S
9307 POKE B+I,N
9308 GOTO L
9309 IF S=I THEN GOTO M
9310 POKE B,170+VIII*S
9311 IF S=II THEN POKE B,195
9312 LET B=B+I
9313 LET P3=INT (N/F8)
9314 POKE B,N-F8*P3
9315 POKE B+I,P3
9316 GOTO L
9317 CLS 
9318 PRINT AT IX,Z0;"%Q%U%I%T OR AN ERROR HAS OCCURRED.  THE LAST LOCATION WAS ";B;".","CONTINUE FOR DISASSEMBLER."
9319 STOP 
9320 GOTO DISA
9449 REM %S%E%A%R%C%H
9450 CLS 
9451 LET Q=Z0
9452 LET E=I
9453 PRINT ,,"OBJECTIVE/TITLE?",
9454 INPUT G$
9455 PRINT AT I,Z0;G$;"                ";AT II,Z0;"PRINT? %YES OR %NO",
9456 LET W=Z0
9457 INPUT H$
9458 IF LEN H$ THEN IF H$(I)="Y" THEN LET W=I
9459 PRINT AT II,Z0;"INPUT YOUR CODE          ",
9460 INPUT L
9461 IF L>FF THEN GOTO 9481
9462 PRINT AT II,Z0;"IF DOUBLE BYTE, ENTER ""D"""
9463 INPUT H$
9464 IF LEN H$ THEN IF H$(I)="D" THEN GOTO 9481
9465 POKE 17015+E,L
9466 LET E=E+I
9467 PRINT AT II,Z0;"ANOTHER ENTRY? %YES OR %NO",
9468 INPUT H$
9469 IF LEN H$ THEN IF H$(I)="Y" THEN GOTO 9459
9470 CLS 
9471 IF NOT W THEN PRINT ,,G$
9472 IF W THEN LPRINT G$
9473 POKE 17125,E-I
9474 LET K=USR 16860
9475 GOTO 9477
9476 LET K=USR 16809
9477 LET Q=Q+I
9478 IF K=55555 THEN GOTO 9486
9479 GOSUB 9490+II*W
9480 GOTO 9476
9481 LET P2=INT (L/F8+II**-IX)
9482 POKE 17016+E,P2
9483 POKE 17015+E,L-F8*P2
9484 LET E=E+II
9485 GOTO 9467
9486 IF NOT W THEN PRINT "$";Q-I
9487 IF W THEN LPRINT "$";Q-I
9488 STOP 
9489 GOTO SEARCH
9490 PRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9491 RETURN 
9492 LPRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9493 RETURN 
9499 STOP 
9500 REM %V%L%S%T
9501 CLS 
9502 PRINT ,,,,"   %V%A%R%I%A%B%L%E%S",,,
9503 LET E=16400
9504 GOSUB DB
9505 LET L=E-I
9506 LET T=Z0
9507 LET T=T+I
9508 LET L=L+I
9509 LET B=L
9510 IF LEN H$>I THEN IF H$( TO II)="H$" THEN GOSUB VLST+XX
9511 LET CH=PEEK L
9512 PRINT TAB III-LEN STR$ T;T;" ";
9512 LET TP=INT (CH/F5)
9514 LET CH=CH-TP*F5+F5
9515 LET H$=CHR$ CH
9516 GOSUB VLST-F5+F5*TP
9517 LET E=TP=II OR TP=VI
9518 IF E THEN PRINT H$;TAB XX+VI;B
9519 IF NOT E THEN PRINT H$;TAB XX+III-LEN STR$ Q;Q;TAB XX+VI;B
9520 GOTO VLST+VI
9521 PRINT ,,"   %E%N%D% %O%F% %L%I%S%T ";L
9522 LET H$="***"
9523 STOP 
9524 GOTO VLST
9532 REM %S%T%R%I%N%G
9533 LET H$=H$+"$ "
9534 LET E=L+I
9535 GOSUB DB
9536 FOR Q=I TO (E AND E<F4)+(F4 AND E>=F4)
9537 LET H$=H$+CHR$ PEEK (L+II+Q)
9538 NEXT Q
9539 LET L=L+II+E
9540 RETURN 
9564 REM %S%I%N%G%L
9565 LET Q=VAL H$
9566 LET L=L+FIV
9567 RETURN 
9596 REM %N%(%)
9597 LET H$=H$+"("
9598 LET I$=H$
9599 LET S=PEEK (L+III)
9600 FOR Q=I TO S
9601 LET E=L+II+II*Q
9602 GOSUB DB
9603 IF Q>=S THEN GOTO VLST+105
9604 LET H$=H$+STR$ E+","
9605 LET I$=I$+"1,"
9606 NEXT Q
9607 LET H$=H$+STR$ E+")"
9608 LET I$=I$+"1)"
9609 LET Q=VAL I$
9610 LET E=L+I
9611 GOSUB DB
9612 LET L=L+II+E
9613 RETURN 
9628 REM %M%U%L%T
9629 LET L=L+I
9630 LET CH=PEEK L
9631 IF INT (CH/F6)=II THEN GOTO VLST+133
9632 LET H$=H$+CHR$ CH
9633 GOTO VLST+F7
9634 LET H$=H$+CHR$ (CH-F7)
9635 LET Q=VAL H$
9636 LET L=L+FIV
9637 RETURN 
9660 REM %$%(%)
9661 LET H$=H$+"$("
9662 LET S=PEEK (L+III)
9663 FOR Q=I TO S
9664 LET E=L+II+II*Q
9665 GOSUB DB
9666 IF Q>=S THEN GOTO VLST+168
9667 LET H$=H$+STR$ E+","
9668 NEXT Q
9669 LET H$=H$+STR$ E+")"
9670 LET E=L+VI
9671 LET U=L+III+II*S
9672 GOSUB DB
9674 FOR Q=U TO U+(E AND E<F4)+(F4 AND E>=F4)
9675 LET H$=H$+CHR$ PEEK Q
9676 NEXT Q
9677 GOTO VLST+109
9692 REM %F%-%N
9693 LET Q=VAL H$
9694 LET H$=H$+" FOR-NEXT"
9695 LET L=L+XX-III
9696 RETURN 
9697 REM %D%T%B
9698 FOR J=LEN I$ TO I STEP -I
9699 IF I$(J)=" " THEN NEXT J
9700 LET I$=I$( TO J)
9701 RETURN 
9702 REM %D%B
9703 LET E=F8*PEEK (E+I)+PEEK E
9704 RETURN 
9705 REM %S%R%C%H
9706 CLS 
9707 PRINT AT IX,I;"WRITE YOUR STRING WITHOUT LINE NUMBER.  ADD A QUOTE AND PRECEDESTRING WITH",,,," LET H$=""",,,," THEN ENTER AND CONTINUE."
9708 LET E=17116
9709 STOP 
9710 POKE E+IX,LEN H$
9711 POKE E-I,247
9712 POKE E,66
9713 LET K=PEEK 16396+F8*PEEK 16397-17143
9714 LET S=INT (K/F8)
9715 LET K=K-F8*S
9716 POKE E+III,K
9717 POKE E+IV,S
9718 FOR E=I TO LEN H$
9719 POKE (E+17015),CODE H$(E)
9720 NEXT E
9721 CLS 
9722 PRINT ,,"""";H$;"""";TAB Z0;,,
9723 LET K=USR 16809
9724 IF K=55555 THEN GOTO 9740
9727 LET Q=K
9728 LET Q=Q-I
9729 IF PEEK Q<>118 THEN GOTO 9728
9730 IF K-Q<IV THEN GOTO 9723
9732 LET E=F8*PEEK (Q+I)+PEEK (Q+II)
9733 LET K=F8*PEEK (Q+IV)+PEEK (Q+III)
9734 LET I$=""
9735 FOR Q=Q+FIV TO Q+III+K
9736 LET I$=I$+CHR$ PEEK Q
9737 NEXT Q
9738 PRINT E;TAB FIV;I$
9739 GOTO 9723
9740 PRINT ,,"  % %S%E%A%R%C%H% %C%O%M%P%L%E%T%E% "
9741 STOP 
9742 GOTO 9706
9750 REM %S%P%Y
9751 PRINT AT XX+I,Z0;"LOOK AT NO./%QUIT/%HIGHER/%L0WER"
9752 INPUT H$
9753 IF H$<>"Q" THEN GOTO 9755
9754 STOP 
9755 IF H$<>"H" THEN GOTO 9758
9756 LET B=B+F4
9757 GOTO 9762
9758 IF H$<>"L" THEN GOTO 9761
9759 LET B=B-F4
9760 GOTO 9762
9761 LET B=VAL H$
9762 CLS 
9763 FOR E=B TO B+XX+I
9764 PRINT E;TAB VI;PEEK E;TAB TEN;":";CHR$ PEEK E;":";TAB XX;F8*PEEK (E+I)+PEEK E
9765 NEXT E
9766 GOTO 9752
9800 REM %P%U%R%G
9801 LET N(1)=USR 16900
9802 REM %I%N%I%T%I%A%L%I%Z%A%T%I%O%N%S
9810 LET I=1
9811 LET Z0=I-I
9812 LET II=I+I
9813 LET III=II+I
9814 LET IV=II+II
9815 LET FIV=IV+I
9816 LET VI=IV+II
9817 LET VII=VI+I
9818 LET VIII=IV+IV
9819 LET IX=VIII+I
9820 LET TEN=IX+I
9821 LET XX=II*TEN
9822 LET XXX=30
9823 LET F4=II*VIII
9824 LET F5=II*F4
9825 LET F6=II*F5
9826 LET F7=II*F6
9827 LET F8=256
9828 LET FF=F8-I
9829 LET IK=I/F8/F8
9840 REM %K%E%Y%S
9841 LET VLST=9501
9842 LET DB=9703
9843 LET PURG=9801
9844 LET MEM=9916
9845 LET ZZ=9953
9846 LET ZZZ=ZZ-I
9847 LET ZZZZ=ZZ-II
9848 LET SAVE=9900
9849 LET SYSV=9928
9850 LET MAP=8101
9851 LET SEARCH=9450
9852 LET SRCH=9706
9853 LET HELP=9961
9854 LET SPY=9751
9855 LET DISA=9000
9856 LET ERR=9103
9857 LET DTB=9698
9858 LET WCOD=9121
9859 LET WSTR=9136
9860 LET NTRY=HELP
9861 LET EDIT=9201
9892 CLS 
9893 PRINT ,,,,"* TO DELETE STRINGS AND ARRAYS, REDIMENSION THEM TO ZERO."
9894 PRINT ,,"   DIM (NAME)$(0)  OR"
9895 PRINT ,,"   DIM (NAME)(0)"
9896 PRINT ,,"   THIS WILL PULL ERROR 3/0 BUT"," THE JOB IS DONE."
9897 STOP 
9898 GOTO VLST
9899 REM %S%A%V%E
9900 CLS 
9901 PRINT ,,,,"""";Z$;""" IS TO BE SAVED.",,,"START RECORDER.  PRESS ANY KEY.",,,Q$,,
9902 PRINT "MODE IS ";"LOOPING" AND NOT (NTRY-SAVE);"HELP" AND NOT (NTRY-HELP);"LOAD-AND-GO" AND NOT (NTRY-1000)
9903 SLOW 
9904 IF NTRY<>SAVE THEN PAUSE 40000
9905 FOR N=F6 TO I STEP -I
9906 UNPLOT N-I,XXX
9907 NEXT N
9908 SAVE Z$
9909 FAST 
9910 CLS 
9911 PRINT Y$;X$
9912 PRINT AT IX+VI,VII;"PRESENTS***"
9913 GOSUB ZZZ
9914 GOTO NTRY
9915 REM %M%E%M
9916 LET L=F8*(PEEK 16387-PEEK 16413)+PEEK 16386-PEEK 16412
9917 LET E=INT (L/F5/F5)
9918 PRINT AT IX,Z0;"MEMORY LEFT IS:";E;" K, ";L-F5*F5*E;" BYTES.",,,"(";L;" BYTES)"
9919 IF L<F8+XX THEN PRINT ,,"CAUTION: LIST EDITING MAY BE IMPAIRED."
9920 STOP 
9921 GOTO MAP
9927 REM %S%Y%S%V
9928 LET E=II*CODE D$-75
9929 IF E<I OR E>13 THEN GOTO 9933
9930 LET E$="10141824260002"
9931 LET E=VAL E$(E TO E+I)+16386
9932 LET D$=STR$ (F8*PEEK (E+I)+PEEK E)
9933 RETURN 
9950 REM %S%L%E%E%P
9951 LET ZZ=ZZ+F8
9952 LET ZZ=ZZ+F7
9953 LET ZZ=ZZ+F6
9954 LET ZZ=ZZ+F5
9955 LET E=ZZ-ZZZ+F5
9956 LET ZZ=ZZZ+I
9957 PAUSE E
9958 POKE 16437,FF
9959 RETURN 
9960 REM %H%E%L%P
9961 CLS 
9962 LET PAGE=I
9963 LET H$="% %H%E%L%P%  PAGE "
9964 PRINT AT I,IX;H$;PAGE
9965 PRINT ,,"* USE GOTO FOR DESIRED LOCATION,",,"* LET Z$=""(YOUR PROGRAM NAME)""",,,"* LET NTRY=1000 IF YOU WANT YOUR PROGRAM TO RUN AFTER LOADING." 
9966 PRINT ,,"* Z$=""";Z$;""""
9967 LET I$="% %K%E%Y%W%O%R%D% %L%I%N%E% %F%U%N%C%T%I%O%N% "
9968 PRINT ,,I$,"""HELP""   9960 HERE.","""VLST""   9500 VARIABLE LIST.","""MEM""    9915 AVAILABLE MEMORY. ""SAVE""   9900 SAVE PROGRAM,"
9969 PRINT """NTRY""   HELP UNLESS CHANGED."
9970 PRINT """PURG""   9800 DELETE VARIABLES."
9971 PRINT """MAP""    8100 MEMORY MAP."
9972 PRINT """SPY""    9750 LOOK AT MEMORY."
9973 PRINT """DISA""   9000 DISASSEMBLE."
9974 LET PAGE=II
9975 PRINT 
9976 CLS 
9977 PRINT AT I,IX;H$;PAGE,,,I$
9978 PRINT """WCOD""   9120 DECODE TABLE."
9979 PRINT """WSTD""   9135 MNEMONICS."
9980 PRINT """SRCH""   9705 BASIC CODE."
9981 PRINT """SEARCH"" 9450 ROM SPACE."
9982 PRINT """EDIT""   9200 MACH CODE."
9983 PRINT "*""GOTO VLST"" CODES AS:","  :236:V:L:S:T: (5 BYTES)" 
9984 PRINT "*""GOTO 9500"" CODES AS:","  :235:9:5:0:0:126:EXP:B4:B3:B2:B1:B0: (12 BYTES)"
9985 PRINT "* USING VARIABLES IN PLACE OF   NUMBERS CAN SAVE MEMORY."
9986 PRINT "* USE:Z0,I,II,III,IV,FIV,VI,VII,VIII,IX,TEN,XX,XXX IN PLACE OF:0,1,2,3,4,5,6,7,8,9,10,20,30."
9987 PRINT "* LIST 9802 TO SEE."
9988 STOP 
9989 GOTO HELP
9997 REM %M%/%L% %C%0%D%E% %T%E%M%P%L%A%T%E%S
9998 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.......   /\.'
9999 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.........1.......   /\.'
Scroll to Top
\D9 8 REM \E1\D1\FD

Super Utility

Products: Super Utility
Developer(s): William J. Pedersen
Date: 1983
Type: Cassette
Platform(s): TS 1000

Utility for working with machine language programs and memory.

Content

Appears On

Related Products

Utility for working with machine language programs and memory.

Related Articles

Related Content

Image Gallery

Super Utility

Source Code

   1 REM %U%T%I%L%I%T%Y
   2 REM *************
   3 REM COPYRIGHT NOV 14, 1983 BY WILLIAM J. PEDERSEN. 1120 MERRIFIELD S.E., GRAND RAPIDS, MICHIGAN  49507
   4 REM REPRODUCTION OR USE OF THIS PROGRAM IS PROHIBITED WITHOUT EXPRESS WRITTEN PERMISSION.
   5 REM *************
   7 REM \7E\E6\E0\FE\C0\28\0E\F2\99\41\FE\80\28\07\F2\A2\41\FE\60\28\10\23\22\93\41\ED\5B\93\7B\19\23\23\C9\11\0C\00\19\11\06\00\19\C9\23\CB\7E\28\FB\18\F4\F5\D5\E5\2A\DB\42\ED\4B\DF\42\ED\5B\E7\42\1A\ED\B1\20\1B\22\DB\42\ED\43\DF\42\2B\ED\4B\E5\42\1A\ED\A1\20\DF\13\EA\C8\41\ED\4B\DB\42\18\21\01\03\D9\18\1C\F5\D5\E5\21\00\00\22\DB\42\21\FF\1F\22\DF\42\18\BF\00\00\D9\18\06
   8 REM \E1\D1\FD\2A\00\40\3E\1E\ED\47\F1\C9\F5\D5\E5\2A\10\40\22\DB\42\3E\80\BE\28\E6\CB\6E\F5\CD\78\41\22\DD\42\F1\20\08\2A\DD\42\22\DB\42\18\E7\CD\2E\42\2A\DB\42\18\DF\2A\DB\42\E5\ED\5B\DD\42\D5\AF\ED\52\EB\2A\1C\40\19\22\1C\40\2A\1A\40\19\22\1A\40\2A\14\40\E5\19\22\14\40\E1\D1\AF\ED\52\E5\C1\03\2A\DB\42\EB\ED\B0\E1\C9\1B\1B\1B\1B\1D\1B\1B\1B\1B\1B\1B\00\00\00\00\18\06
   9 REM \DC\07\F2\03\D9\FA\9C\AD\EA\78\42\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\57\1B\95\7B\A8\04\1B\1B\1B\1B\02\00\78\42\1B\1B\1B\1B\1B\1B\1E\1B\1B
8100 REM %M%A%P
8101 CLS 
8102 PRINT ,,"    % %M%E%M%O%R%Y% %M%A%P%  ";Z$
8103 LET G$="\##\##%P\:.\'.\':%V\:'\..\':%U%U\.'\.'1638420479204802457524576286712867232767ABCEFG0 PROGRAM =VARIABLES=AVAIL MEM=RAMTOP UP="
8104 LET H$="16509"
8105 LET Q=1
8106 LET S=37
8107 LET I$=CHR$ S
8108 FOR K=IV TO XX-I STEP FIV
8109 LET T=II*K+VII
8110 LET L=53.4+II*K/FIV
8111 LET D$=H$
8112 GOSUB SYSV
8113 LET TT=VAL D$
8114 LET D$=G$(L)
8115 GOSUB SYSV
8116 LET QQ=VAL D$
8117 IF QQ=Z0 THEN LET QQ=32768
8118 LET LL=54+II*K
8119 PRINT AT K-I,Z0;G$(LL TO LL+IX);QQ-TT;" BYTES."
8120 LET H$=G$(L+I)
8121 FOR N=Z0 TO 31
8122 PRINT AT K,N;G$(Q);
8123 LET B=13107.2+F7*N+819.2*K
8124 LET D$=I$
8125 GOSUB SYSV
8126 LET BB=VAL D$
8127 IF BB-B<F6 THEN PRINT AT K,N;G$(Q+I);
8128 IF BB>B+F7 THEN GOTO 8137
8129 LET Q=Q+II
8130 LET S=S+I
8131 LET D$=CHR$ S
8132 GOSUB SYSV
8133 LET I$=D$
8134 IF LEN I$<II THEN LET I$="65536"
8135 IF VAL I$>B+F7 THEN GOTO 8137
8136 GOTO 8130
8137 NEXT N
8138 PRINT G$(T TO T+IV);TAB 27;G$(T+FIV TO T+IX)
8139 NEXT K
8140 STOP 
8141 GOTO HELP
8999 REM % %D%I%S%A%S%S%E%M%B%L%E%R% 
9000 PRINT AT XX,Z0;"DISASSEMBLE STARTING WHERE?"
9001 INPUT WB
9002 CLS 
9003 LET WL=Z0
9004 LET WIA=WB
9005 LET WFS=Z0
9006 LET WFN=I
9007 LET WFK=Z0
9008 LET WF=Z0
9009 LET WFW=Z0
9010 LET WV=Z0
9011 LET G$=""
9012 LET WN=112
9013 LET WL=WL+I
9014 LET WP=PEEK WB
9015 IF WP<>221 AND WP<>253 THEN GOTO 9021
9016 IF WFK THEN GOTO ERR
9017 LET WF=I+(I AND WP=253)
9018 LET WFK=I
9019 LET WB=WB+I
9020 GOTO 9014
9021 IF WP<>203 THEN GOTO 9034
9022 LET WFN=Z0
9023 LET WJ=345
9024 LET WB=WB+I+WFK
9025 LET WP=PEEK WB
9026 LET W1=INT (WP/F6)
9027 LET W=WP-F6*W1
9028 LET W2=INT (W/VIII)
9029 LET W=W-VIII*W2
9030 IF WFK AND W<>VI THEN GOTO ERR
9031 IF W1 THEN LET T$(WJ)=CHR$ (97+W1)+CHR$ (F4+I+W2)+CHR$ (W+I)
9032 IF NOT W1 THEN LET T$(WJ)=CHR$ (49+W2)+CHR$ (W+I)+CHR$ 97
9033 GOTO 9042
9034 LET WJ=I+PEEK WB
9035 LET WW=Z0
9036 IF WP<>237 THEN GOTO 9040
9037 LET WB=WB+I
9038 LET WW=PEEK WB
9039 LET WJ=193+WW-(36 AND WW>159)
9040 IF WW>123 AND WW<160 OR WJ>344 THEN GOTO ERR
9041 LET WDIS=PEEK (WB+I)
9042 LET V$=""
9043 LET W0=CODE T$(WJ,I)
9044 IF W0=WN+IV THEN GOTO ERR
9045 IF W0<>WN-IV THEN GOTO 9048
9046 LET WV=VAL (W$(CODE T$(WJ,II)))
9047 LET G$=" "
9048 GOSUB 9066
9049 LET B$=I$+" "
9050 LET W0=CODE T$(WJ,II)
9051 GOSUB 9066
9052 IF I$="" THEN GOTO 9063
9053 IF WP=211 THEN LET I$="(N)"
9054 LET B$=B$+I$
9055 LET W0=CODE T$(WJ,III)
9056 GOSUB 9066
9057 IF I$="" THEN GOTO 9060
9058 IF WP=219 THEN LET I$="(N)"
9059 LET B$=B$+","+I$
9060 IF WFK AND NOT WFW THEN GOTO ERR
9061 LET V$=STR$ WV
9062 IF NOT LEN G$ AND WV=Z0 THEN LET V$=""
9063 PRINT WIA;TAB VI;B$;TAB XX-I;V$+G$
9064 LET WB=WB+I+WFS*WFN
9065 GOTO 9004
9066 LET I$=W$(W0)
9067 GOSUB DTB
9068 IF W0=WN+FIV THEN GOSUB 9094
9069 IF W0<>WN+VI THEN GOTO 9075
9070 LET WB=WB+WFK+I
9071 LET WFN=Z0
9072 LET WV=PEEK WB
9073 IF WP=211 OR WP=219 THEN GOTO 9078
9074 LET G$=":"+CHR$ WV+":"
9075 IF WV>=F5 THEN GOTO 9078
9076 LET W=F4+I+III*WV
9078 IF W0<WN+VII THEN GOTO 9085
9079 LET WB=WB+II
9080 LET G$=" "
9081 LET WFN=Z0
9082 LET E=WB-I
9083 GOSUB DB
9084 LET WV=E
9085 IF NOT WFK THEN GOTO 9092
9086 IF W0=VII OR W0=61 OR W0=WN THEN LET WFW=I
9087 IF W0<>VII THEN GOTO 9091
9088 LET WFS=I
9089 GOSUB 9095
9090 LET I$=W$(WN+WF, TO III)+I$+")"
9091 IF W0=61 THEN LET I$=W$(WN+WF,II TO III)
9092 IF W0=WN THEN LET I$=W$(WN+WF)
9093 RETURN 
9094 LET WB=WB+I
9095 LET W=WDIS
9096 IF W<F7 THEN GOTO 9098
9097 LET W=W-F8
9098 IF NOT WFK THEN LET W=W+II
9099 IF W>=Z0 THEN LET I$="+"+STR$ W
9100 IF W<Z0 THEN LET I$=STR$ W
9101 IF B$( TO II)="JR" OR B$( TO II)="DJ" THEN LET WV=WIA+W
9102 RETURN 
9103 PRINT "ERROR AT ";WIA;". ",
9104 FOR J=Z0 TO III
9105 PRINT PEEK (WIA+J);" ";
9106 NEXT J
9107 PRINT 
9108 GOTO 9004
9120 REM %W%C%O%D
9121 CLS 
9122 PRINT ,," T$(345,3) TABLE FOR DECODING","MOST Z80 INSTRUCTIONS.",,,"N   VALUES      INTERPRETATION",,,
9123 FOR N=I TO 345
9124 PRINT N;" ";
9125 FOR K=I TO III
9126 PRINT CODE T$(N,K);" ";
9127 NEXT K
9128 PRINT ,
9129 FOR K=I TO III
9130 PRINT W$(CODE T$(N,K));" ";
9131 NEXT K
9132 PRINT 
9133 NEXT N
9134 STOP 
9135 REM %W%S%T%R
9136 CLS 
9137 PRINT ,," W$(120,4) ARRAY FOR MNEMONICS.",,,
9138 FOR N=I TO 120
9139 PRINT TAB VI;"W$(";N;")=","""";W$(N);""""
9140 NEXT N
9141 STOP 
9142 GOTO WCOD
9200 REM %E%D%I%T
9201 CLS 
9202 LET L=9228
9203 LET M=9317
9206 PRINT ,,"% %M%A%C%H%I%N%E% %L%A%N%G%U%A%G%E% %E%D%I%T%O%R% ",,,"WHERE ABOVE 16759?  START ";
9207 INPUT B
9208 PRINT B,"SELECT BY NO."
9209 FOR N=VI TO F4+I
9210 PRINT AT N,F4;"                "
9211 NEXT N
9212 PRINT AT IV,XX;"NOW   ";B
9213 PRINT ,," 1 SINGLE BYTE",," 2 DOUBLE BYTE",," 3 LD HL,(NN)",," 4 LD (NN),HL",," 5 PUSH SEQ",," 6 LD (NN),BC",," 7 LD BC,(NN)",," 8 LD (NN),DE",," 9 LD DE,(NN)",,"10 SBC HL,BC",,"11 ADC HL,BC",,"12 SBC HL,DE",,"13 ADC HL,DE",,"14 JUMPS",,"15 %Q%U%I%T"
9214 INPUT N
9215 IF N<I OR N>F4-II THEN GOTO M
9216 PRINT AT N+FIV,F4;"% "
9217 GOTO L-F4+VI*N
9218 INPUT K
9219 IF K<0 OR K>FF THEN GOTO M
9220 POKE B,K
9221 LET B=B+I
9222 GOTO 9209
9224 INPUT K
9225 IF K<0 OR K>=F8*F8 THEN GOTO M
9226 POKE B+I,INT (K/F8)
9227 POKE B,K-F8*INT (K/F8)
9228 LET B=B+II
9229 GOTO 9209
9236 POKE B,XXX+N
9237 LET B=B+I
9238 GOTO L-IV
9242 POKE B,245
9243 POKE B+I,213
9244 POKE B+II,229
9245 LET B=B+I
9246 GOTO L
9266 POKE B,237  
9267 POKE B+I,XX-I+VIII*N  
9268 LET B=B+II
9269 GOTO L-IV
9290 POKE B,237  
9291 POKE B+I,VIII*N-F4+II  
9292 GOTO L
9296 PRINT AT F4,F4;"JUMP TO?"
9297 INPUT N
9298 IF N<16760 OR N>=F8*F8 THEN GOTO M
9299 LET W=(B-N)>F7+I OR B-N<-F7+II
9300 PRINT AT VI,F4;"WHICH CONDITION?",AT VIII,F4;" 1 DJNZ",AT IX,F4;" 2 NONE",AT TEN,F4;" 3 NZ",AT TEN+I,F4;" 4  Z",AT VI+VI,F4;" 5 NC",AT IX+IV,F4;" 6  C",AT F4-II,F4;" 7 PO",AT F4-I,F4;" 8 PE",AT F4,F4;" 9  P   ",AT F4+I,F4;"10  M"   
9301 INPUT S
9302 IF S<I OR S>TEN THEN GOTO M
9303 IF W OR S>VI THEN GOTO 9309
9304 LET N=N-B-II
9305 IF N>=F7 THEN LET N=F7-N
9306 POKE B,VIII+VIII*S
9307 POKE B+I,N
9308 GOTO L
9309 IF S=I THEN GOTO M
9310 POKE B,170+VIII*S
9311 IF S=II THEN POKE B,195
9312 LET B=B+I
9313 LET P3=INT (N/F8)
9314 POKE B,N-F8*P3
9315 POKE B+I,P3
9316 GOTO L
9317 CLS 
9318 PRINT AT IX,Z0;"%Q%U%I%T OR AN ERROR HAS OCCURRED.  THE LAST LOCATION WAS ";B;".","CONTINUE FOR DISASSEMBLER."
9319 STOP 
9320 GOTO DISA
9449 REM %S%E%A%R%C%H
9450 CLS 
9451 LET Q=Z0
9452 LET E=I
9453 PRINT ,,"OBJECTIVE/TITLE?",
9454 INPUT G$
9455 PRINT AT I,Z0;G$;"                ";AT II,Z0;"PRINT? %YES OR %NO",
9456 LET W=Z0
9457 INPUT H$
9458 IF LEN H$ THEN IF H$(I)="Y" THEN LET W=I
9459 PRINT AT II,Z0;"INPUT YOUR CODE          ",
9460 INPUT L
9461 IF L>FF THEN GOTO 9481
9462 PRINT AT II,Z0;"IF DOUBLE BYTE, ENTER ""D"""
9463 INPUT H$
9464 IF LEN H$ THEN IF H$(I)="D" THEN GOTO 9481
9465 POKE 17015+E,L
9466 LET E=E+I
9467 PRINT AT II,Z0;"ANOTHER ENTRY? %YES OR %NO",
9468 INPUT H$
9469 IF LEN H$ THEN IF H$(I)="Y" THEN GOTO 9459
9470 CLS 
9471 IF NOT W THEN PRINT ,,G$
9472 IF W THEN LPRINT G$
9473 POKE 17125,E-I
9474 LET K=USR 16860
9475 GOTO 9477
9476 LET K=USR 16809
9477 LET Q=Q+I
9478 IF K=55555 THEN GOTO 9486
9479 GOSUB 9490+II*W
9480 GOTO 9476
9481 LET P2=INT (L/F8+II**-IX)
9482 POKE 17016+E,P2
9483 POKE 17015+E,L-F8*P2
9484 LET E=E+II
9485 GOTO 9467
9486 IF NOT W THEN PRINT "$";Q-I
9487 IF W THEN LPRINT "$";Q-I
9488 STOP 
9489 GOTO SEARCH
9490 PRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9491 RETURN 
9492 LPRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9493 RETURN 
9499 STOP 
9500 REM %V%L%S%T
9501 CLS 
9502 PRINT ,,,,"   %V%A%R%I%A%B%L%E%S",,,
9503 LET E=16400
9504 GOSUB DB
9505 LET L=E-I
9506 LET T=Z0
9507 LET T=T+I
9508 LET L=L+I
9509 LET B=L
9510 IF LEN H$>I THEN IF H$( TO II)="H$" THEN GOSUB VLST+XX
9511 LET CH=PEEK L
9512 PRINT TAB III-LEN STR$ T;T;" ";
9512 LET TP=INT (CH/F5)
9514 LET CH=CH-TP*F5+F5
9515 LET H$=CHR$ CH
9516 GOSUB VLST-F5+F5*TP
9517 LET E=TP=II OR TP=VI
9518 IF E THEN PRINT H$;TAB XX+VI;B
9519 IF NOT E THEN PRINT H$;TAB XX+III-LEN STR$ Q;Q;TAB XX+VI;B
9520 GOTO VLST+VI
9521 PRINT ,,"   %E%N%D% %O%F% %L%I%S%T ";L
9522 LET H$="***"
9523 STOP 
9524 GOTO VLST
9532 REM %S%T%R%I%N%G
9533 LET H$=H$+"$ "
9534 LET E=L+I
9535 GOSUB DB
9536 FOR Q=I TO (E AND E<F4)+(F4 AND E>=F4)
9537 LET H$=H$+CHR$ PEEK (L+II+Q)
9538 NEXT Q
9539 LET L=L+II+E
9540 RETURN 
9564 REM %S%I%N%G%L
9565 LET Q=VAL H$
9566 LET L=L+FIV
9567 RETURN 
9596 REM %N%(%)
9597 LET H$=H$+"("
9598 LET I$=H$
9599 LET S=PEEK (L+III)
9600 FOR Q=I TO S
9601 LET E=L+II+II*Q
9602 GOSUB DB
9603 IF Q>=S THEN GOTO VLST+105
9604 LET H$=H$+STR$ E+","
9605 LET I$=I$+"1,"
9606 NEXT Q
9607 LET H$=H$+STR$ E+")"
9608 LET I$=I$+"1)"
9609 LET Q=VAL I$
9610 LET E=L+I
9611 GOSUB DB
9612 LET L=L+II+E
9613 RETURN 
9628 REM %M%U%L%T
9629 LET L=L+I
9630 LET CH=PEEK L
9631 IF INT (CH/F6)=II THEN GOTO VLST+133
9632 LET H$=H$+CHR$ CH
9633 GOTO VLST+F7
9634 LET H$=H$+CHR$ (CH-F7)
9635 LET Q=VAL H$
9636 LET L=L+FIV
9637 RETURN 
9660 REM %$%(%)
9661 LET H$=H$+"$("
9662 LET S=PEEK (L+III)
9663 FOR Q=I TO S
9664 LET E=L+II+II*Q
9665 GOSUB DB
9666 IF Q>=S THEN GOTO VLST+168
9667 LET H$=H$+STR$ E+","
9668 NEXT Q
9669 LET H$=H$+STR$ E+")"
9670 LET E=L+VI
9671 LET U=L+III+II*S
9672 GOSUB DB
9674 FOR Q=U TO U+(E AND E<F4)+(F4 AND E>=F4)
9675 LET H$=H$+CHR$ PEEK Q
9676 NEXT Q
9677 GOTO VLST+109
9692 REM %F%-%N
9693 LET Q=VAL H$
9694 LET H$=H$+" FOR-NEXT"
9695 LET L=L+XX-III
9696 RETURN 
9697 REM %D%T%B
9698 FOR J=LEN I$ TO I STEP -I
9699 IF I$(J)=" " THEN NEXT J
9700 LET I$=I$( TO J)
9701 RETURN 
9702 REM %D%B
9703 LET E=F8*PEEK (E+I)+PEEK E
9704 RETURN 
9705 REM %S%R%C%H
9706 CLS 
9707 PRINT AT IX,I;"WRITE YOUR STRING WITHOUT LINE NUMBER.  ADD A QUOTE AND PRECEDESTRING WITH",,,," LET H$=""",,,," THEN ENTER AND CONTINUE."
9708 LET E=17116
9709 STOP 
9710 POKE E+IX,LEN H$
9711 POKE E-I,247
9712 POKE E,66
9713 LET K=PEEK 16396+F8*PEEK 16397-17143
9714 LET S=INT (K/F8)
9715 LET K=K-F8*S
9716 POKE E+III,K
9717 POKE E+IV,S
9718 FOR E=I TO LEN H$
9719 POKE (E+17015),CODE H$(E)
9720 NEXT E
9721 CLS 
9722 PRINT ,,"""";H$;"""";TAB Z0;,,
9723 LET K=USR 16809
9724 IF K=55555 THEN GOTO 9740
9727 LET Q=K
9728 LET Q=Q-I
9729 IF PEEK Q<>118 THEN GOTO 9728
9730 IF K-Q<IV THEN GOTO 9723
9732 LET E=F8*PEEK (Q+I)+PEEK (Q+II)
9733 LET K=F8*PEEK (Q+IV)+PEEK (Q+III)
9734 LET I$=""
9735 FOR Q=Q+FIV TO Q+III+K
9736 LET I$=I$+CHR$ PEEK Q
9737 NEXT Q
9738 PRINT E;TAB FIV;I$
9739 GOTO 9723
9740 PRINT ,,"  % %S%E%A%R%C%H% %C%O%M%P%L%E%T%E% "
9741 STOP 
9742 GOTO 9706
9750 REM %S%P%Y
9751 PRINT AT XX+I,Z0;"LOOK AT NO./%QUIT/%HIGHER/%L0WER"
9752 INPUT H$
9753 IF H$<>"Q" THEN GOTO 9755
9754 STOP 
9755 IF H$<>"H" THEN GOTO 9758
9756 LET B=B+F4
9757 GOTO 9762
9758 IF H$<>"L" THEN GOTO 9761
9759 LET B=B-F4
9760 GOTO 9762
9761 LET B=VAL H$
9762 CLS 
9763 FOR E=B TO B+XX+I
9764 PRINT E;TAB VI;PEEK E;TAB TEN;":";CHR$ PEEK E;":";TAB XX;F8*PEEK (E+I)+PEEK E
9765 NEXT E
9766 GOTO 9752
9800 REM %P%U%R%G
9801 LET N(1)=USR 16900
9802 REM %I%N%I%T%I%A%L%I%Z%A%T%I%O%N%S
9810 LET I=1
9811 LET Z0=I-I
9812 LET II=I+I
9813 LET III=II+I
9814 LET IV=II+II
9815 LET FIV=IV+I
9816 LET VI=IV+II
9817 LET VII=VI+I
9818 LET VIII=IV+IV
9819 LET IX=VIII+I
9820 LET TEN=IX+I
9821 LET XX=II*TEN
9822 LET XXX=30
9823 LET F4=II*VIII
9824 LET F5=II*F4
9825 LET F6=II*F5
9826 LET F7=II*F6
9827 LET F8=256
9828 LET FF=F8-I
9829 LET IK=I/F8/F8
9840 REM %K%E%Y%S
9841 LET VLST=9501
9842 LET DB=9703
9843 LET PURG=9801
9844 LET MEM=9916
9845 LET ZZ=9953
9846 LET ZZZ=ZZ-I
9847 LET ZZZZ=ZZ-II
9848 LET SAVE=9900
9849 LET SYSV=9928
9850 LET MAP=8101
9851 LET SEARCH=9450
9852 LET SRCH=9706
9853 LET HELP=9961
9854 LET SPY=9751
9855 LET DISA=9000
9856 LET ERR=9103
9857 LET DTB=9698
9858 LET WCOD=9121
9859 LET WSTR=9136
9860 LET NTRY=HELP
9861 LET EDIT=9201
9892 CLS 
9893 PRINT ,,,,"* TO DELETE STRINGS AND ARRAYS, REDIMENSION THEM TO ZERO."
9894 PRINT ,,"   DIM (NAME)$(0)  OR"
9895 PRINT ,,"   DIM (NAME)(0)"
9896 PRINT ,,"   THIS WILL PULL ERROR 3/0 BUT"," THE JOB IS DONE."
9897 STOP 
9898 GOTO VLST
9899 REM %S%A%V%E
9900 CLS 
9901 PRINT ,,,,"""";Z$;""" IS TO BE SAVED.",,,"START RECORDER.  PRESS ANY KEY.",,,Q$,,
9902 PRINT "MODE IS ";"LOOPING" AND NOT (NTRY-SAVE);"HELP" AND NOT (NTRY-HELP);"LOAD-AND-GO" AND NOT (NTRY-1000)
9903 SLOW 
9904 IF NTRY<>SAVE THEN PAUSE 40000
9905 FOR N=F6 TO I STEP -I
9906 UNPLOT N-I,XXX
9907 NEXT N
9908 SAVE Z$
9909 FAST 
9910 CLS 
9911 PRINT Y$;X$
9912 PRINT AT IX+VI,VII;"PRESENTS***"
9913 GOSUB ZZZ
9914 GOTO NTRY
9915 REM %M%E%M
9916 LET L=F8*(PEEK 16387-PEEK 16413)+PEEK 16386-PEEK 16412
9917 LET E=INT (L/F5/F5)
9918 PRINT AT IX,Z0;"MEMORY LEFT IS:";E;" K, ";L-F5*F5*E;" BYTES.",,,"(";L;" BYTES)"
9919 IF L<F8+XX THEN PRINT ,,"CAUTION: LIST EDITING MAY BE IMPAIRED."
9920 STOP 
9921 GOTO MAP
9927 REM %S%Y%S%V
9928 LET E=II*CODE D$-75
9929 IF E<I OR E>13 THEN GOTO 9933
9930 LET E$="10141824260002"
9931 LET E=VAL E$(E TO E+I)+16386
9932 LET D$=STR$ (F8*PEEK (E+I)+PEEK E)
9933 RETURN 
9950 REM %S%L%E%E%P
9951 LET ZZ=ZZ+F8
9952 LET ZZ=ZZ+F7
9953 LET ZZ=ZZ+F6
9954 LET ZZ=ZZ+F5
9955 LET E=ZZ-ZZZ+F5
9956 LET ZZ=ZZZ+I
9957 PAUSE E
9958 POKE 16437,FF
9959 RETURN 
9960 REM %H%E%L%P
9961 CLS 
9962 LET PAGE=I
9963 LET H$="% %H%E%L%P%  PAGE "
9964 PRINT AT I,IX;H$;PAGE
9965 PRINT ,,"* USE GOTO FOR DESIRED LOCATION,",,"* LET Z$=""(YOUR PROGRAM NAME)""",,,"* LET NTRY=1000 IF YOU WANT YOUR PROGRAM TO RUN AFTER LOADING." 
9966 PRINT ,,"* Z$=""";Z$;""""
9967 LET I$="% %K%E%Y%W%O%R%D% %L%I%N%E% %F%U%N%C%T%I%O%N% "
9968 PRINT ,,I$,"""HELP""   9960 HERE.","""VLST""   9500 VARIABLE LIST.","""MEM""    9915 AVAILABLE MEMORY. ""SAVE""   9900 SAVE PROGRAM,"
9969 PRINT """NTRY""   HELP UNLESS CHANGED."
9970 PRINT """PURG""   9800 DELETE VARIABLES."
9971 PRINT """MAP""    8100 MEMORY MAP."
9972 PRINT """SPY""    9750 LOOK AT MEMORY."
9973 PRINT """DISA""   9000 DISASSEMBLE."
9974 LET PAGE=II
9975 PRINT 
9976 CLS 
9977 PRINT AT I,IX;H$;PAGE,,,I$
9978 PRINT """WCOD""   9120 DECODE TABLE."
9979 PRINT """WSTD""   9135 MNEMONICS."
9980 PRINT """SRCH""   9705 BASIC CODE."
9981 PRINT """SEARCH"" 9450 ROM SPACE."
9982 PRINT """EDIT""   9200 MACH CODE."
9983 PRINT "*""GOTO VLST"" CODES AS:","  :236:V:L:S:T: (5 BYTES)" 
9984 PRINT "*""GOTO 9500"" CODES AS:","  :235:9:5:0:0:126:EXP:B4:B3:B2:B1:B0: (12 BYTES)"
9985 PRINT "* USING VARIABLES IN PLACE OF   NUMBERS CAN SAVE MEMORY."
9986 PRINT "* USE:Z0,I,II,III,IV,FIV,VI,VII,VIII,IX,TEN,XX,XXX IN PLACE OF:0,1,2,3,4,5,6,7,8,9,10,20,30."
9987 PRINT "* LIST 9802 TO SEE."
9988 STOP 
9989 GOTO HELP
9997 REM %M%/%L% %C%0%D%E% %T%E%M%P%L%A%T%E%S
9998 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.......   /\.'
9999 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.........1.......   /\.'
Scroll to Top
A

Super Utility

Products: Super Utility
Developer(s): William J. Pedersen
Date: 1983
Type: Cassette
Platform(s): TS 1000

Utility for working with machine language programs and memory.

Content

Appears On

Related Products

Utility for working with machine language programs and memory.

Related Articles

Related Content

Image Gallery

Super Utility

Source Code

   1 REM %U%T%I%L%I%T%Y
   2 REM *************
   3 REM COPYRIGHT NOV 14, 1983 BY WILLIAM J. PEDERSEN. 1120 MERRIFIELD S.E., GRAND RAPIDS, MICHIGAN  49507
   4 REM REPRODUCTION OR USE OF THIS PROGRAM IS PROHIBITED WITHOUT EXPRESS WRITTEN PERMISSION.
   5 REM *************
   7 REM \7E\E6\E0\FE\C0\28\0E\F2\99\41\FE\80\28\07\F2\A2\41\FE\60\28\10\23\22\93\41\ED\5B\93\7B\19\23\23\C9\11\0C\00\19\11\06\00\19\C9\23\CB\7E\28\FB\18\F4\F5\D5\E5\2A\DB\42\ED\4B\DF\42\ED\5B\E7\42\1A\ED\B1\20\1B\22\DB\42\ED\43\DF\42\2B\ED\4B\E5\42\1A\ED\A1\20\DF\13\EA\C8\41\ED\4B\DB\42\18\21\01\03\D9\18\1C\F5\D5\E5\21\00\00\22\DB\42\21\FF\1F\22\DF\42\18\BF\00\00\D9\18\06
   8 REM \E1\D1\FD\2A\00\40\3E\1E\ED\47\F1\C9\F5\D5\E5\2A\10\40\22\DB\42\3E\80\BE\28\E6\CB\6E\F5\CD\78\41\22\DD\42\F1\20\08\2A\DD\42\22\DB\42\18\E7\CD\2E\42\2A\DB\42\18\DF\2A\DB\42\E5\ED\5B\DD\42\D5\AF\ED\52\EB\2A\1C\40\19\22\1C\40\2A\1A\40\19\22\1A\40\2A\14\40\E5\19\22\14\40\E1\D1\AF\ED\52\E5\C1\03\2A\DB\42\EB\ED\B0\E1\C9\1B\1B\1B\1B\1D\1B\1B\1B\1B\1B\1B\00\00\00\00\18\06
   9 REM \DC\07\F2\03\D9\FA\9C\AD\EA\78\42\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\57\1B\95\7B\A8\04\1B\1B\1B\1B\02\00\78\42\1B\1B\1B\1B\1B\1B\1E\1B\1B
8100 REM %M%A%P
8101 CLS 
8102 PRINT ,,"    % %M%E%M%O%R%Y% %M%A%P%  ";Z$
8103 LET G$="\##\##%P\:.\'.\':%V\:'\..\':%U%U\.'\.'1638420479204802457524576286712867232767ABCEFG0 PROGRAM =VARIABLES=AVAIL MEM=RAMTOP UP="
8104 LET H$="16509"
8105 LET Q=1
8106 LET S=37
8107 LET I$=CHR$ S
8108 FOR K=IV TO XX-I STEP FIV
8109 LET T=II*K+VII
8110 LET L=53.4+II*K/FIV
8111 LET D$=H$
8112 GOSUB SYSV
8113 LET TT=VAL D$
8114 LET D$=G$(L)
8115 GOSUB SYSV
8116 LET QQ=VAL D$
8117 IF QQ=Z0 THEN LET QQ=32768
8118 LET LL=54+II*K
8119 PRINT AT K-I,Z0;G$(LL TO LL+IX);QQ-TT;" BYTES."
8120 LET H$=G$(L+I)
8121 FOR N=Z0 TO 31
8122 PRINT AT K,N;G$(Q);
8123 LET B=13107.2+F7*N+819.2*K
8124 LET D$=I$
8125 GOSUB SYSV
8126 LET BB=VAL D$
8127 IF BB-B<F6 THEN PRINT AT K,N;G$(Q+I);
8128 IF BB>B+F7 THEN GOTO 8137
8129 LET Q=Q+II
8130 LET S=S+I
8131 LET D$=CHR$ S
8132 GOSUB SYSV
8133 LET I$=D$
8134 IF LEN I$<II THEN LET I$="65536"
8135 IF VAL I$>B+F7 THEN GOTO 8137
8136 GOTO 8130
8137 NEXT N
8138 PRINT G$(T TO T+IV);TAB 27;G$(T+FIV TO T+IX)
8139 NEXT K
8140 STOP 
8141 GOTO HELP
8999 REM % %D%I%S%A%S%S%E%M%B%L%E%R% 
9000 PRINT AT XX,Z0;"DISASSEMBLE STARTING WHERE?"
9001 INPUT WB
9002 CLS 
9003 LET WL=Z0
9004 LET WIA=WB
9005 LET WFS=Z0
9006 LET WFN=I
9007 LET WFK=Z0
9008 LET WF=Z0
9009 LET WFW=Z0
9010 LET WV=Z0
9011 LET G$=""
9012 LET WN=112
9013 LET WL=WL+I
9014 LET WP=PEEK WB
9015 IF WP<>221 AND WP<>253 THEN GOTO 9021
9016 IF WFK THEN GOTO ERR
9017 LET WF=I+(I AND WP=253)
9018 LET WFK=I
9019 LET WB=WB+I
9020 GOTO 9014
9021 IF WP<>203 THEN GOTO 9034
9022 LET WFN=Z0
9023 LET WJ=345
9024 LET WB=WB+I+WFK
9025 LET WP=PEEK WB
9026 LET W1=INT (WP/F6)
9027 LET W=WP-F6*W1
9028 LET W2=INT (W/VIII)
9029 LET W=W-VIII*W2
9030 IF WFK AND W<>VI THEN GOTO ERR
9031 IF W1 THEN LET T$(WJ)=CHR$ (97+W1)+CHR$ (F4+I+W2)+CHR$ (W+I)
9032 IF NOT W1 THEN LET T$(WJ)=CHR$ (49+W2)+CHR$ (W+I)+CHR$ 97
9033 GOTO 9042
9034 LET WJ=I+PEEK WB
9035 LET WW=Z0
9036 IF WP<>237 THEN GOTO 9040
9037 LET WB=WB+I
9038 LET WW=PEEK WB
9039 LET WJ=193+WW-(36 AND WW>159)
9040 IF WW>123 AND WW<160 OR WJ>344 THEN GOTO ERR
9041 LET WDIS=PEEK (WB+I)
9042 LET V$=""
9043 LET W0=CODE T$(WJ,I)
9044 IF W0=WN+IV THEN GOTO ERR
9045 IF W0<>WN-IV THEN GOTO 9048
9046 LET WV=VAL (W$(CODE T$(WJ,II)))
9047 LET G$=" "
9048 GOSUB 9066
9049 LET B$=I$+" "
9050 LET W0=CODE T$(WJ,II)
9051 GOSUB 9066
9052 IF I$="" THEN GOTO 9063
9053 IF WP=211 THEN LET I$="(N)"
9054 LET B$=B$+I$
9055 LET W0=CODE T$(WJ,III)
9056 GOSUB 9066
9057 IF I$="" THEN GOTO 9060
9058 IF WP=219 THEN LET I$="(N)"
9059 LET B$=B$+","+I$
9060 IF WFK AND NOT WFW THEN GOTO ERR
9061 LET V$=STR$ WV
9062 IF NOT LEN G$ AND WV=Z0 THEN LET V$=""
9063 PRINT WIA;TAB VI;B$;TAB XX-I;V$+G$
9064 LET WB=WB+I+WFS*WFN
9065 GOTO 9004
9066 LET I$=W$(W0)
9067 GOSUB DTB
9068 IF W0=WN+FIV THEN GOSUB 9094
9069 IF W0<>WN+VI THEN GOTO 9075
9070 LET WB=WB+WFK+I
9071 LET WFN=Z0
9072 LET WV=PEEK WB
9073 IF WP=211 OR WP=219 THEN GOTO 9078
9074 LET G$=":"+CHR$ WV+":"
9075 IF WV>=F5 THEN GOTO 9078
9076 LET W=F4+I+III*WV
9078 IF W0<WN+VII THEN GOTO 9085
9079 LET WB=WB+II
9080 LET G$=" "
9081 LET WFN=Z0
9082 LET E=WB-I
9083 GOSUB DB
9084 LET WV=E
9085 IF NOT WFK THEN GOTO 9092
9086 IF W0=VII OR W0=61 OR W0=WN THEN LET WFW=I
9087 IF W0<>VII THEN GOTO 9091
9088 LET WFS=I
9089 GOSUB 9095
9090 LET I$=W$(WN+WF, TO III)+I$+")"
9091 IF W0=61 THEN LET I$=W$(WN+WF,II TO III)
9092 IF W0=WN THEN LET I$=W$(WN+WF)
9093 RETURN 
9094 LET WB=WB+I
9095 LET W=WDIS
9096 IF W<F7 THEN GOTO 9098
9097 LET W=W-F8
9098 IF NOT WFK THEN LET W=W+II
9099 IF W>=Z0 THEN LET I$="+"+STR$ W
9100 IF W<Z0 THEN LET I$=STR$ W
9101 IF B$( TO II)="JR" OR B$( TO II)="DJ" THEN LET WV=WIA+W
9102 RETURN 
9103 PRINT "ERROR AT ";WIA;". ",
9104 FOR J=Z0 TO III
9105 PRINT PEEK (WIA+J);" ";
9106 NEXT J
9107 PRINT 
9108 GOTO 9004
9120 REM %W%C%O%D
9121 CLS 
9122 PRINT ,," T$(345,3) TABLE FOR DECODING","MOST Z80 INSTRUCTIONS.",,,"N   VALUES      INTERPRETATION",,,
9123 FOR N=I TO 345
9124 PRINT N;" ";
9125 FOR K=I TO III
9126 PRINT CODE T$(N,K);" ";
9127 NEXT K
9128 PRINT ,
9129 FOR K=I TO III
9130 PRINT W$(CODE T$(N,K));" ";
9131 NEXT K
9132 PRINT 
9133 NEXT N
9134 STOP 
9135 REM %W%S%T%R
9136 CLS 
9137 PRINT ,," W$(120,4) ARRAY FOR MNEMONICS.",,,
9138 FOR N=I TO 120
9139 PRINT TAB VI;"W$(";N;")=","""";W$(N);""""
9140 NEXT N
9141 STOP 
9142 GOTO WCOD
9200 REM %E%D%I%T
9201 CLS 
9202 LET L=9228
9203 LET M=9317
9206 PRINT ,,"% %M%A%C%H%I%N%E% %L%A%N%G%U%A%G%E% %E%D%I%T%O%R% ",,,"WHERE ABOVE 16759?  START ";
9207 INPUT B
9208 PRINT B,"SELECT BY NO."
9209 FOR N=VI TO F4+I
9210 PRINT AT N,F4;"                "
9211 NEXT N
9212 PRINT AT IV,XX;"NOW   ";B
9213 PRINT ,," 1 SINGLE BYTE",," 2 DOUBLE BYTE",," 3 LD HL,(NN)",," 4 LD (NN),HL",," 5 PUSH SEQ",," 6 LD (NN),BC",," 7 LD BC,(NN)",," 8 LD (NN),DE",," 9 LD DE,(NN)",,"10 SBC HL,BC",,"11 ADC HL,BC",,"12 SBC HL,DE",,"13 ADC HL,DE",,"14 JUMPS",,"15 %Q%U%I%T"
9214 INPUT N
9215 IF N<I OR N>F4-II THEN GOTO M
9216 PRINT AT N+FIV,F4;"% "
9217 GOTO L-F4+VI*N
9218 INPUT K
9219 IF K<0 OR K>FF THEN GOTO M
9220 POKE B,K
9221 LET B=B+I
9222 GOTO 9209
9224 INPUT K
9225 IF K<0 OR K>=F8*F8 THEN GOTO M
9226 POKE B+I,INT (K/F8)
9227 POKE B,K-F8*INT (K/F8)
9228 LET B=B+II
9229 GOTO 9209
9236 POKE B,XXX+N
9237 LET B=B+I
9238 GOTO L-IV
9242 POKE B,245
9243 POKE B+I,213
9244 POKE B+II,229
9245 LET B=B+I
9246 GOTO L
9266 POKE B,237  
9267 POKE B+I,XX-I+VIII*N  
9268 LET B=B+II
9269 GOTO L-IV
9290 POKE B,237  
9291 POKE B+I,VIII*N-F4+II  
9292 GOTO L
9296 PRINT AT F4,F4;"JUMP TO?"
9297 INPUT N
9298 IF N<16760 OR N>=F8*F8 THEN GOTO M
9299 LET W=(B-N)>F7+I OR B-N<-F7+II
9300 PRINT AT VI,F4;"WHICH CONDITION?",AT VIII,F4;" 1 DJNZ",AT IX,F4;" 2 NONE",AT TEN,F4;" 3 NZ",AT TEN+I,F4;" 4  Z",AT VI+VI,F4;" 5 NC",AT IX+IV,F4;" 6  C",AT F4-II,F4;" 7 PO",AT F4-I,F4;" 8 PE",AT F4,F4;" 9  P   ",AT F4+I,F4;"10  M"   
9301 INPUT S
9302 IF S<I OR S>TEN THEN GOTO M
9303 IF W OR S>VI THEN GOTO 9309
9304 LET N=N-B-II
9305 IF N>=F7 THEN LET N=F7-N
9306 POKE B,VIII+VIII*S
9307 POKE B+I,N
9308 GOTO L
9309 IF S=I THEN GOTO M
9310 POKE B,170+VIII*S
9311 IF S=II THEN POKE B,195
9312 LET B=B+I
9313 LET P3=INT (N/F8)
9314 POKE B,N-F8*P3
9315 POKE B+I,P3
9316 GOTO L
9317 CLS 
9318 PRINT AT IX,Z0;"%Q%U%I%T OR AN ERROR HAS OCCURRED.  THE LAST LOCATION WAS ";B;".","CONTINUE FOR DISASSEMBLER."
9319 STOP 
9320 GOTO DISA
9449 REM %S%E%A%R%C%H
9450 CLS 
9451 LET Q=Z0
9452 LET E=I
9453 PRINT ,,"OBJECTIVE/TITLE?",
9454 INPUT G$
9455 PRINT AT I,Z0;G$;"                ";AT II,Z0;"PRINT? %YES OR %NO",
9456 LET W=Z0
9457 INPUT H$
9458 IF LEN H$ THEN IF H$(I)="Y" THEN LET W=I
9459 PRINT AT II,Z0;"INPUT YOUR CODE          ",
9460 INPUT L
9461 IF L>FF THEN GOTO 9481
9462 PRINT AT II,Z0;"IF DOUBLE BYTE, ENTER ""D"""
9463 INPUT H$
9464 IF LEN H$ THEN IF H$(I)="D" THEN GOTO 9481
9465 POKE 17015+E,L
9466 LET E=E+I
9467 PRINT AT II,Z0;"ANOTHER ENTRY? %YES OR %NO",
9468 INPUT H$
9469 IF LEN H$ THEN IF H$(I)="Y" THEN GOTO 9459
9470 CLS 
9471 IF NOT W THEN PRINT ,,G$
9472 IF W THEN LPRINT G$
9473 POKE 17125,E-I
9474 LET K=USR 16860
9475 GOTO 9477
9476 LET K=USR 16809
9477 LET Q=Q+I
9478 IF K=55555 THEN GOTO 9486
9479 GOSUB 9490+II*W
9480 GOTO 9476
9481 LET P2=INT (L/F8+II**-IX)
9482 POKE 17016+E,P2
9483 POKE 17015+E,L-F8*P2
9484 LET E=E+II
9485 GOTO 9467
9486 IF NOT W THEN PRINT "$";Q-I
9487 IF W THEN LPRINT "$";Q-I
9488 STOP 
9489 GOTO SEARCH
9490 PRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9491 RETURN 
9492 LPRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9493 RETURN 
9499 STOP 
9500 REM %V%L%S%T
9501 CLS 
9502 PRINT ,,,,"   %V%A%R%I%A%B%L%E%S",,,
9503 LET E=16400
9504 GOSUB DB
9505 LET L=E-I
9506 LET T=Z0
9507 LET T=T+I
9508 LET L=L+I
9509 LET B=L
9510 IF LEN H$>I THEN IF H$( TO II)="H$" THEN GOSUB VLST+XX
9511 LET CH=PEEK L
9512 PRINT TAB III-LEN STR$ T;T;" ";
9512 LET TP=INT (CH/F5)
9514 LET CH=CH-TP*F5+F5
9515 LET H$=CHR$ CH
9516 GOSUB VLST-F5+F5*TP
9517 LET E=TP=II OR TP=VI
9518 IF E THEN PRINT H$;TAB XX+VI;B
9519 IF NOT E THEN PRINT H$;TAB XX+III-LEN STR$ Q;Q;TAB XX+VI;B
9520 GOTO VLST+VI
9521 PRINT ,,"   %E%N%D% %O%F% %L%I%S%T ";L
9522 LET H$="***"
9523 STOP 
9524 GOTO VLST
9532 REM %S%T%R%I%N%G
9533 LET H$=H$+"$ "
9534 LET E=L+I
9535 GOSUB DB
9536 FOR Q=I TO (E AND E<F4)+(F4 AND E>=F4)
9537 LET H$=H$+CHR$ PEEK (L+II+Q)
9538 NEXT Q
9539 LET L=L+II+E
9540 RETURN 
9564 REM %S%I%N%G%L
9565 LET Q=VAL H$
9566 LET L=L+FIV
9567 RETURN 
9596 REM %N%(%)
9597 LET H$=H$+"("
9598 LET I$=H$
9599 LET S=PEEK (L+III)
9600 FOR Q=I TO S
9601 LET E=L+II+II*Q
9602 GOSUB DB
9603 IF Q>=S THEN GOTO VLST+105
9604 LET H$=H$+STR$ E+","
9605 LET I$=I$+"1,"
9606 NEXT Q
9607 LET H$=H$+STR$ E+")"
9608 LET I$=I$+"1)"
9609 LET Q=VAL I$
9610 LET E=L+I
9611 GOSUB DB
9612 LET L=L+II+E
9613 RETURN 
9628 REM %M%U%L%T
9629 LET L=L+I
9630 LET CH=PEEK L
9631 IF INT (CH/F6)=II THEN GOTO VLST+133
9632 LET H$=H$+CHR$ CH
9633 GOTO VLST+F7
9634 LET H$=H$+CHR$ (CH-F7)
9635 LET Q=VAL H$
9636 LET L=L+FIV
9637 RETURN 
9660 REM %$%(%)
9661 LET H$=H$+"$("
9662 LET S=PEEK (L+III)
9663 FOR Q=I TO S
9664 LET E=L+II+II*Q
9665 GOSUB DB
9666 IF Q>=S THEN GOTO VLST+168
9667 LET H$=H$+STR$ E+","
9668 NEXT Q
9669 LET H$=H$+STR$ E+")"
9670 LET E=L+VI
9671 LET U=L+III+II*S
9672 GOSUB DB
9674 FOR Q=U TO U+(E AND E<F4)+(F4 AND E>=F4)
9675 LET H$=H$+CHR$ PEEK Q
9676 NEXT Q
9677 GOTO VLST+109
9692 REM %F%-%N
9693 LET Q=VAL H$
9694 LET H$=H$+" FOR-NEXT"
9695 LET L=L+XX-III
9696 RETURN 
9697 REM %D%T%B
9698 FOR J=LEN I$ TO I STEP -I
9699 IF I$(J)=" " THEN NEXT J
9700 LET I$=I$( TO J)
9701 RETURN 
9702 REM %D%B
9703 LET E=F8*PEEK (E+I)+PEEK E
9704 RETURN 
9705 REM %S%R%C%H
9706 CLS 
9707 PRINT AT IX,I;"WRITE YOUR STRING WITHOUT LINE NUMBER.  ADD A QUOTE AND PRECEDESTRING WITH",,,," LET H$=""",,,," THEN ENTER AND CONTINUE."
9708 LET E=17116
9709 STOP 
9710 POKE E+IX,LEN H$
9711 POKE E-I,247
9712 POKE E,66
9713 LET K=PEEK 16396+F8*PEEK 16397-17143
9714 LET S=INT (K/F8)
9715 LET K=K-F8*S
9716 POKE E+III,K
9717 POKE E+IV,S
9718 FOR E=I TO LEN H$
9719 POKE (E+17015),CODE H$(E)
9720 NEXT E
9721 CLS 
9722 PRINT ,,"""";H$;"""";TAB Z0;,,
9723 LET K=USR 16809
9724 IF K=55555 THEN GOTO 9740
9727 LET Q=K
9728 LET Q=Q-I
9729 IF PEEK Q<>118 THEN GOTO 9728
9730 IF K-Q<IV THEN GOTO 9723
9732 LET E=F8*PEEK (Q+I)+PEEK (Q+II)
9733 LET K=F8*PEEK (Q+IV)+PEEK (Q+III)
9734 LET I$=""
9735 FOR Q=Q+FIV TO Q+III+K
9736 LET I$=I$+CHR$ PEEK Q
9737 NEXT Q
9738 PRINT E;TAB FIV;I$
9739 GOTO 9723
9740 PRINT ,,"  % %S%E%A%R%C%H% %C%O%M%P%L%E%T%E% "
9741 STOP 
9742 GOTO 9706
9750 REM %S%P%Y
9751 PRINT AT XX+I,Z0;"LOOK AT NO./%QUIT/%HIGHER/%L0WER"
9752 INPUT H$
9753 IF H$<>"Q" THEN GOTO 9755
9754 STOP 
9755 IF H$<>"H" THEN GOTO 9758
9756 LET B=B+F4
9757 GOTO 9762
9758 IF H$<>"L" THEN GOTO 9761
9759 LET B=B-F4
9760 GOTO 9762
9761 LET B=VAL H$
9762 CLS 
9763 FOR E=B TO B+XX+I
9764 PRINT E;TAB VI;PEEK E;TAB TEN;":";CHR$ PEEK E;":";TAB XX;F8*PEEK (E+I)+PEEK E
9765 NEXT E
9766 GOTO 9752
9800 REM %P%U%R%G
9801 LET N(1)=USR 16900
9802 REM %I%N%I%T%I%A%L%I%Z%A%T%I%O%N%S
9810 LET I=1
9811 LET Z0=I-I
9812 LET II=I+I
9813 LET III=II+I
9814 LET IV=II+II
9815 LET FIV=IV+I
9816 LET VI=IV+II
9817 LET VII=VI+I
9818 LET VIII=IV+IV
9819 LET IX=VIII+I
9820 LET TEN=IX+I
9821 LET XX=II*TEN
9822 LET XXX=30
9823 LET F4=II*VIII
9824 LET F5=II*F4
9825 LET F6=II*F5
9826 LET F7=II*F6
9827 LET F8=256
9828 LET FF=F8-I
9829 LET IK=I/F8/F8
9840 REM %K%E%Y%S
9841 LET VLST=9501
9842 LET DB=9703
9843 LET PURG=9801
9844 LET MEM=9916
9845 LET ZZ=9953
9846 LET ZZZ=ZZ-I
9847 LET ZZZZ=ZZ-II
9848 LET SAVE=9900
9849 LET SYSV=9928
9850 LET MAP=8101
9851 LET SEARCH=9450
9852 LET SRCH=9706
9853 LET HELP=9961
9854 LET SPY=9751
9855 LET DISA=9000
9856 LET ERR=9103
9857 LET DTB=9698
9858 LET WCOD=9121
9859 LET WSTR=9136
9860 LET NTRY=HELP
9861 LET EDIT=9201
9892 CLS 
9893 PRINT ,,,,"* TO DELETE STRINGS AND ARRAYS, REDIMENSION THEM TO ZERO."
9894 PRINT ,,"   DIM (NAME)$(0)  OR"
9895 PRINT ,,"   DIM (NAME)(0)"
9896 PRINT ,,"   THIS WILL PULL ERROR 3/0 BUT"," THE JOB IS DONE."
9897 STOP 
9898 GOTO VLST
9899 REM %S%A%V%E
9900 CLS 
9901 PRINT ,,,,"""";Z$;""" IS TO BE SAVED.",,,"START RECORDER.  PRESS ANY KEY.",,,Q$,,
9902 PRINT "MODE IS ";"LOOPING" AND NOT (NTRY-SAVE);"HELP" AND NOT (NTRY-HELP);"LOAD-AND-GO" AND NOT (NTRY-1000)
9903 SLOW 
9904 IF NTRY<>SAVE THEN PAUSE 40000
9905 FOR N=F6 TO I STEP -I
9906 UNPLOT N-I,XXX
9907 NEXT N
9908 SAVE Z$
9909 FAST 
9910 CLS 
9911 PRINT Y$;X$
9912 PRINT AT IX+VI,VII;"PRESENTS***"
9913 GOSUB ZZZ
9914 GOTO NTRY
9915 REM %M%E%M
9916 LET L=F8*(PEEK 16387-PEEK 16413)+PEEK 16386-PEEK 16412
9917 LET E=INT (L/F5/F5)
9918 PRINT AT IX,Z0;"MEMORY LEFT IS:";E;" K, ";L-F5*F5*E;" BYTES.",,,"(";L;" BYTES)"
9919 IF L<F8+XX THEN PRINT ,,"CAUTION: LIST EDITING MAY BE IMPAIRED."
9920 STOP 
9921 GOTO MAP
9927 REM %S%Y%S%V
9928 LET E=II*CODE D$-75
9929 IF E<I OR E>13 THEN GOTO 9933
9930 LET E$="10141824260002"
9931 LET E=VAL E$(E TO E+I)+16386
9932 LET D$=STR$ (F8*PEEK (E+I)+PEEK E)
9933 RETURN 
9950 REM %S%L%E%E%P
9951 LET ZZ=ZZ+F8
9952 LET ZZ=ZZ+F7
9953 LET ZZ=ZZ+F6
9954 LET ZZ=ZZ+F5
9955 LET E=ZZ-ZZZ+F5
9956 LET ZZ=ZZZ+I
9957 PAUSE E
9958 POKE 16437,FF
9959 RETURN 
9960 REM %H%E%L%P
9961 CLS 
9962 LET PAGE=I
9963 LET H$="% %H%E%L%P%  PAGE "
9964 PRINT AT I,IX;H$;PAGE
9965 PRINT ,,"* USE GOTO FOR DESIRED LOCATION,",,"* LET Z$=""(YOUR PROGRAM NAME)""",,,"* LET NTRY=1000 IF YOU WANT YOUR PROGRAM TO RUN AFTER LOADING." 
9966 PRINT ,,"* Z$=""";Z$;""""
9967 LET I$="% %K%E%Y%W%O%R%D% %L%I%N%E% %F%U%N%C%T%I%O%N% "
9968 PRINT ,,I$,"""HELP""   9960 HERE.","""VLST""   9500 VARIABLE LIST.","""MEM""    9915 AVAILABLE MEMORY. ""SAVE""   9900 SAVE PROGRAM,"
9969 PRINT """NTRY""   HELP UNLESS CHANGED."
9970 PRINT """PURG""   9800 DELETE VARIABLES."
9971 PRINT """MAP""    8100 MEMORY MAP."
9972 PRINT """SPY""    9750 LOOK AT MEMORY."
9973 PRINT """DISA""   9000 DISASSEMBLE."
9974 LET PAGE=II
9975 PRINT 
9976 CLS 
9977 PRINT AT I,IX;H$;PAGE,,,I$
9978 PRINT """WCOD""   9120 DECODE TABLE."
9979 PRINT """WSTD""   9135 MNEMONICS."
9980 PRINT """SRCH""   9705 BASIC CODE."
9981 PRINT """SEARCH"" 9450 ROM SPACE."
9982 PRINT """EDIT""   9200 MACH CODE."
9983 PRINT "*""GOTO VLST"" CODES AS:","  :236:V:L:S:T: (5 BYTES)" 
9984 PRINT "*""GOTO 9500"" CODES AS:","  :235:9:5:0:0:126:EXP:B4:B3:B2:B1:B0: (12 BYTES)"
9985 PRINT "* USING VARIABLES IN PLACE OF   NUMBERS CAN SAVE MEMORY."
9986 PRINT "* USE:Z0,I,II,III,IV,FIV,VI,VII,VIII,IX,TEN,XX,XXX IN PLACE OF:0,1,2,3,4,5,6,7,8,9,10,20,30."
9987 PRINT "* LIST 9802 TO SEE."
9988 STOP 
9989 GOTO HELP
9997 REM %M%/%L% %C%0%D%E% %T%E%M%P%L%A%T%E%S
9998 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.......   /\.'
9999 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.........1.......   /\.'
Scroll to Top
E itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"E\ED\F1\C9\F5\D5\E5

Super Utility

Products: Super Utility
Developer(s): William J. Pedersen
Date: 1983
Type: Cassette
Platform(s): TS 1000

Utility for working with machine language programs and memory.

Content

Appears On

Related Products

Utility for working with machine language programs and memory.

Related Articles

Related Content

Image Gallery

Super Utility

Source Code

   1 REM %U%T%I%L%I%T%Y
   2 REM *************
   3 REM COPYRIGHT NOV 14, 1983 BY WILLIAM J. PEDERSEN. 1120 MERRIFIELD S.E., GRAND RAPIDS, MICHIGAN  49507
   4 REM REPRODUCTION OR USE OF THIS PROGRAM IS PROHIBITED WITHOUT EXPRESS WRITTEN PERMISSION.
   5 REM *************
   7 REM \7E\E6\E0\FE\C0\28\0E\F2\99\41\FE\80\28\07\F2\A2\41\FE\60\28\10\23\22\93\41\ED\5B\93\7B\19\23\23\C9\11\0C\00\19\11\06\00\19\C9\23\CB\7E\28\FB\18\F4\F5\D5\E5\2A\DB\42\ED\4B\DF\42\ED\5B\E7\42\1A\ED\B1\20\1B\22\DB\42\ED\43\DF\42\2B\ED\4B\E5\42\1A\ED\A1\20\DF\13\EA\C8\41\ED\4B\DB\42\18\21\01\03\D9\18\1C\F5\D5\E5\21\00\00\22\DB\42\21\FF\1F\22\DF\42\18\BF\00\00\D9\18\06
   8 REM \E1\D1\FD\2A\00\40\3E\1E\ED\47\F1\C9\F5\D5\E5\2A\10\40\22\DB\42\3E\80\BE\28\E6\CB\6E\F5\CD\78\41\22\DD\42\F1\20\08\2A\DD\42\22\DB\42\18\E7\CD\2E\42\2A\DB\42\18\DF\2A\DB\42\E5\ED\5B\DD\42\D5\AF\ED\52\EB\2A\1C\40\19\22\1C\40\2A\1A\40\19\22\1A\40\2A\14\40\E5\19\22\14\40\E1\D1\AF\ED\52\E5\C1\03\2A\DB\42\EB\ED\B0\E1\C9\1B\1B\1B\1B\1D\1B\1B\1B\1B\1B\1B\00\00\00\00\18\06
   9 REM \DC\07\F2\03\D9\FA\9C\AD\EA\78\42\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\57\1B\95\7B\A8\04\1B\1B\1B\1B\02\00\78\42\1B\1B\1B\1B\1B\1B\1E\1B\1B
8100 REM %M%A%P
8101 CLS 
8102 PRINT ,,"    % %M%E%M%O%R%Y% %M%A%P%  ";Z$
8103 LET G$="\##\##%P\:.\'.\':%V\:'\..\':%U%U\.'\.'1638420479204802457524576286712867232767ABCEFG0 PROGRAM =VARIABLES=AVAIL MEM=RAMTOP UP="
8104 LET H$="16509"
8105 LET Q=1
8106 LET S=37
8107 LET I$=CHR$ S
8108 FOR K=IV TO XX-I STEP FIV
8109 LET T=II*K+VII
8110 LET L=53.4+II*K/FIV
8111 LET D$=H$
8112 GOSUB SYSV
8113 LET TT=VAL D$
8114 LET D$=G$(L)
8115 GOSUB SYSV
8116 LET QQ=VAL D$
8117 IF QQ=Z0 THEN LET QQ=32768
8118 LET LL=54+II*K
8119 PRINT AT K-I,Z0;G$(LL TO LL+IX);QQ-TT;" BYTES."
8120 LET H$=G$(L+I)
8121 FOR N=Z0 TO 31
8122 PRINT AT K,N;G$(Q);
8123 LET B=13107.2+F7*N+819.2*K
8124 LET D$=I$
8125 GOSUB SYSV
8126 LET BB=VAL D$
8127 IF BB-B<F6 THEN PRINT AT K,N;G$(Q+I);
8128 IF BB>B+F7 THEN GOTO 8137
8129 LET Q=Q+II
8130 LET S=S+I
8131 LET D$=CHR$ S
8132 GOSUB SYSV
8133 LET I$=D$
8134 IF LEN I$<II THEN LET I$="65536"
8135 IF VAL I$>B+F7 THEN GOTO 8137
8136 GOTO 8130
8137 NEXT N
8138 PRINT G$(T TO T+IV);TAB 27;G$(T+FIV TO T+IX)
8139 NEXT K
8140 STOP 
8141 GOTO HELP
8999 REM % %D%I%S%A%S%S%E%M%B%L%E%R% 
9000 PRINT AT XX,Z0;"DISASSEMBLE STARTING WHERE?"
9001 INPUT WB
9002 CLS 
9003 LET WL=Z0
9004 LET WIA=WB
9005 LET WFS=Z0
9006 LET WFN=I
9007 LET WFK=Z0
9008 LET WF=Z0
9009 LET WFW=Z0
9010 LET WV=Z0
9011 LET G$=""
9012 LET WN=112
9013 LET WL=WL+I
9014 LET WP=PEEK WB
9015 IF WP<>221 AND WP<>253 THEN GOTO 9021
9016 IF WFK THEN GOTO ERR
9017 LET WF=I+(I AND WP=253)
9018 LET WFK=I
9019 LET WB=WB+I
9020 GOTO 9014
9021 IF WP<>203 THEN GOTO 9034
9022 LET WFN=Z0
9023 LET WJ=345
9024 LET WB=WB+I+WFK
9025 LET WP=PEEK WB
9026 LET W1=INT (WP/F6)
9027 LET W=WP-F6*W1
9028 LET W2=INT (W/VIII)
9029 LET W=W-VIII*W2
9030 IF WFK AND W<>VI THEN GOTO ERR
9031 IF W1 THEN LET T$(WJ)=CHR$ (97+W1)+CHR$ (F4+I+W2)+CHR$ (W+I)
9032 IF NOT W1 THEN LET T$(WJ)=CHR$ (49+W2)+CHR$ (W+I)+CHR$ 97
9033 GOTO 9042
9034 LET WJ=I+PEEK WB
9035 LET WW=Z0
9036 IF WP<>237 THEN GOTO 9040
9037 LET WB=WB+I
9038 LET WW=PEEK WB
9039 LET WJ=193+WW-(36 AND WW>159)
9040 IF WW>123 AND WW<160 OR WJ>344 THEN GOTO ERR
9041 LET WDIS=PEEK (WB+I)
9042 LET V$=""
9043 LET W0=CODE T$(WJ,I)
9044 IF W0=WN+IV THEN GOTO ERR
9045 IF W0<>WN-IV THEN GOTO 9048
9046 LET WV=VAL (W$(CODE T$(WJ,II)))
9047 LET G$=" "
9048 GOSUB 9066
9049 LET B$=I$+" "
9050 LET W0=CODE T$(WJ,II)
9051 GOSUB 9066
9052 IF I$="" THEN GOTO 9063
9053 IF WP=211 THEN LET I$="(N)"
9054 LET B$=B$+I$
9055 LET W0=CODE T$(WJ,III)
9056 GOSUB 9066
9057 IF I$="" THEN GOTO 9060
9058 IF WP=219 THEN LET I$="(N)"
9059 LET B$=B$+","+I$
9060 IF WFK AND NOT WFW THEN GOTO ERR
9061 LET V$=STR$ WV
9062 IF NOT LEN G$ AND WV=Z0 THEN LET V$=""
9063 PRINT WIA;TAB VI;B$;TAB XX-I;V$+G$
9064 LET WB=WB+I+WFS*WFN
9065 GOTO 9004
9066 LET I$=W$(W0)
9067 GOSUB DTB
9068 IF W0=WN+FIV THEN GOSUB 9094
9069 IF W0<>WN+VI THEN GOTO 9075
9070 LET WB=WB+WFK+I
9071 LET WFN=Z0
9072 LET WV=PEEK WB
9073 IF WP=211 OR WP=219 THEN GOTO 9078
9074 LET G$=":"+CHR$ WV+":"
9075 IF WV>=F5 THEN GOTO 9078
9076 LET W=F4+I+III*WV
9078 IF W0<WN+VII THEN GOTO 9085
9079 LET WB=WB+II
9080 LET G$=" "
9081 LET WFN=Z0
9082 LET E=WB-I
9083 GOSUB DB
9084 LET WV=E
9085 IF NOT WFK THEN GOTO 9092
9086 IF W0=VII OR W0=61 OR W0=WN THEN LET WFW=I
9087 IF W0<>VII THEN GOTO 9091
9088 LET WFS=I
9089 GOSUB 9095
9090 LET I$=W$(WN+WF, TO III)+I$+")"
9091 IF W0=61 THEN LET I$=W$(WN+WF,II TO III)
9092 IF W0=WN THEN LET I$=W$(WN+WF)
9093 RETURN 
9094 LET WB=WB+I
9095 LET W=WDIS
9096 IF W<F7 THEN GOTO 9098
9097 LET W=W-F8
9098 IF NOT WFK THEN LET W=W+II
9099 IF W>=Z0 THEN LET I$="+"+STR$ W
9100 IF W<Z0 THEN LET I$=STR$ W
9101 IF B$( TO II)="JR" OR B$( TO II)="DJ" THEN LET WV=WIA+W
9102 RETURN 
9103 PRINT "ERROR AT ";WIA;". ",
9104 FOR J=Z0 TO III
9105 PRINT PEEK (WIA+J);" ";
9106 NEXT J
9107 PRINT 
9108 GOTO 9004
9120 REM %W%C%O%D
9121 CLS 
9122 PRINT ,," T$(345,3) TABLE FOR DECODING","MOST Z80 INSTRUCTIONS.",,,"N   VALUES      INTERPRETATION",,,
9123 FOR N=I TO 345
9124 PRINT N;" ";
9125 FOR K=I TO III
9126 PRINT CODE T$(N,K);" ";
9127 NEXT K
9128 PRINT ,
9129 FOR K=I TO III
9130 PRINT W$(CODE T$(N,K));" ";
9131 NEXT K
9132 PRINT 
9133 NEXT N
9134 STOP 
9135 REM %W%S%T%R
9136 CLS 
9137 PRINT ,," W$(120,4) ARRAY FOR MNEMONICS.",,,
9138 FOR N=I TO 120
9139 PRINT TAB VI;"W$(";N;")=","""";W$(N);""""
9140 NEXT N
9141 STOP 
9142 GOTO WCOD
9200 REM %E%D%I%T
9201 CLS 
9202 LET L=9228
9203 LET M=9317
9206 PRINT ,,"% %M%A%C%H%I%N%E% %L%A%N%G%U%A%G%E% %E%D%I%T%O%R% ",,,"WHERE ABOVE 16759?  START ";
9207 INPUT B
9208 PRINT B,"SELECT BY NO."
9209 FOR N=VI TO F4+I
9210 PRINT AT N,F4;"                "
9211 NEXT N
9212 PRINT AT IV,XX;"NOW   ";B
9213 PRINT ,," 1 SINGLE BYTE",," 2 DOUBLE BYTE",," 3 LD HL,(NN)",," 4 LD (NN),HL",," 5 PUSH SEQ",," 6 LD (NN),BC",," 7 LD BC,(NN)",," 8 LD (NN),DE",," 9 LD DE,(NN)",,"10 SBC HL,BC",,"11 ADC HL,BC",,"12 SBC HL,DE",,"13 ADC HL,DE",,"14 JUMPS",,"15 %Q%U%I%T"
9214 INPUT N
9215 IF N<I OR N>F4-II THEN GOTO M
9216 PRINT AT N+FIV,F4;"% "
9217 GOTO L-F4+VI*N
9218 INPUT K
9219 IF K<0 OR K>FF THEN GOTO M
9220 POKE B,K
9221 LET B=B+I
9222 GOTO 9209
9224 INPUT K
9225 IF K<0 OR K>=F8*F8 THEN GOTO M
9226 POKE B+I,INT (K/F8)
9227 POKE B,K-F8*INT (K/F8)
9228 LET B=B+II
9229 GOTO 9209
9236 POKE B,XXX+N
9237 LET B=B+I
9238 GOTO L-IV
9242 POKE B,245
9243 POKE B+I,213
9244 POKE B+II,229
9245 LET B=B+I
9246 GOTO L
9266 POKE B,237  
9267 POKE B+I,XX-I+VIII*N  
9268 LET B=B+II
9269 GOTO L-IV
9290 POKE B,237  
9291 POKE B+I,VIII*N-F4+II  
9292 GOTO L
9296 PRINT AT F4,F4;"JUMP TO?"
9297 INPUT N
9298 IF N<16760 OR N>=F8*F8 THEN GOTO M
9299 LET W=(B-N)>F7+I OR B-N<-F7+II
9300 PRINT AT VI,F4;"WHICH CONDITION?",AT VIII,F4;" 1 DJNZ",AT IX,F4;" 2 NONE",AT TEN,F4;" 3 NZ",AT TEN+I,F4;" 4  Z",AT VI+VI,F4;" 5 NC",AT IX+IV,F4;" 6  C",AT F4-II,F4;" 7 PO",AT F4-I,F4;" 8 PE",AT F4,F4;" 9  P   ",AT F4+I,F4;"10  M"   
9301 INPUT S
9302 IF S<I OR S>TEN THEN GOTO M
9303 IF W OR S>VI THEN GOTO 9309
9304 LET N=N-B-II
9305 IF N>=F7 THEN LET N=F7-N
9306 POKE B,VIII+VIII*S
9307 POKE B+I,N
9308 GOTO L
9309 IF S=I THEN GOTO M
9310 POKE B,170+VIII*S
9311 IF S=II THEN POKE B,195
9312 LET B=B+I
9313 LET P3=INT (N/F8)
9314 POKE B,N-F8*P3
9315 POKE B+I,P3
9316 GOTO L
9317 CLS 
9318 PRINT AT IX,Z0;"%Q%U%I%T OR AN ERROR HAS OCCURRED.  THE LAST LOCATION WAS ";B;".","CONTINUE FOR DISASSEMBLER."
9319 STOP 
9320 GOTO DISA
9449 REM %S%E%A%R%C%H
9450 CLS 
9451 LET Q=Z0
9452 LET E=I
9453 PRINT ,,"OBJECTIVE/TITLE?",
9454 INPUT G$
9455 PRINT AT I,Z0;G$;"                ";AT II,Z0;"PRINT? %YES OR %NO",
9456 LET W=Z0
9457 INPUT H$
9458 IF LEN H$ THEN IF H$(I)="Y" THEN LET W=I
9459 PRINT AT II,Z0;"INPUT YOUR CODE          ",
9460 INPUT L
9461 IF L>FF THEN GOTO 9481
9462 PRINT AT II,Z0;"IF DOUBLE BYTE, ENTER ""D"""
9463 INPUT H$
9464 IF LEN H$ THEN IF H$(I)="D" THEN GOTO 9481
9465 POKE 17015+E,L
9466 LET E=E+I
9467 PRINT AT II,Z0;"ANOTHER ENTRY? %YES OR %NO",
9468 INPUT H$
9469 IF LEN H$ THEN IF H$(I)="Y" THEN GOTO 9459
9470 CLS 
9471 IF NOT W THEN PRINT ,,G$
9472 IF W THEN LPRINT G$
9473 POKE 17125,E-I
9474 LET K=USR 16860
9475 GOTO 9477
9476 LET K=USR 16809
9477 LET Q=Q+I
9478 IF K=55555 THEN GOTO 9486
9479 GOSUB 9490+II*W
9480 GOTO 9476
9481 LET P2=INT (L/F8+II**-IX)
9482 POKE 17016+E,P2
9483 POKE 17015+E,L-F8*P2
9484 LET E=E+II
9485 GOTO 9467
9486 IF NOT W THEN PRINT "$";Q-I
9487 IF W THEN LPRINT "$";Q-I
9488 STOP 
9489 GOTO SEARCH
9490 PRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9491 RETURN 
9492 LPRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9493 RETURN 
9499 STOP 
9500 REM %V%L%S%T
9501 CLS 
9502 PRINT ,,,,"   %V%A%R%I%A%B%L%E%S",,,
9503 LET E=16400
9504 GOSUB DB
9505 LET L=E-I
9506 LET T=Z0
9507 LET T=T+I
9508 LET L=L+I
9509 LET B=L
9510 IF LEN H$>I THEN IF H$( TO II)="H$" THEN GOSUB VLST+XX
9511 LET CH=PEEK L
9512 PRINT TAB III-LEN STR$ T;T;" ";
9512 LET TP=INT (CH/F5)
9514 LET CH=CH-TP*F5+F5
9515 LET H$=CHR$ CH
9516 GOSUB VLST-F5+F5*TP
9517 LET E=TP=II OR TP=VI
9518 IF E THEN PRINT H$;TAB XX+VI;B
9519 IF NOT E THEN PRINT H$;TAB XX+III-LEN STR$ Q;Q;TAB XX+VI;B
9520 GOTO VLST+VI
9521 PRINT ,,"   %E%N%D% %O%F% %L%I%S%T ";L
9522 LET H$="***"
9523 STOP 
9524 GOTO VLST
9532 REM %S%T%R%I%N%G
9533 LET H$=H$+"$ "
9534 LET E=L+I
9535 GOSUB DB
9536 FOR Q=I TO (E AND E<F4)+(F4 AND E>=F4)
9537 LET H$=H$+CHR$ PEEK (L+II+Q)
9538 NEXT Q
9539 LET L=L+II+E
9540 RETURN 
9564 REM %S%I%N%G%L
9565 LET Q=VAL H$
9566 LET L=L+FIV
9567 RETURN 
9596 REM %N%(%)
9597 LET H$=H$+"("
9598 LET I$=H$
9599 LET S=PEEK (L+III)
9600 FOR Q=I TO S
9601 LET E=L+II+II*Q
9602 GOSUB DB
9603 IF Q>=S THEN GOTO VLST+105
9604 LET H$=H$+STR$ E+","
9605 LET I$=I$+"1,"
9606 NEXT Q
9607 LET H$=H$+STR$ E+")"
9608 LET I$=I$+"1)"
9609 LET Q=VAL I$
9610 LET E=L+I
9611 GOSUB DB
9612 LET L=L+II+E
9613 RETURN 
9628 REM %M%U%L%T
9629 LET L=L+I
9630 LET CH=PEEK L
9631 IF INT (CH/F6)=II THEN GOTO VLST+133
9632 LET H$=H$+CHR$ CH
9633 GOTO VLST+F7
9634 LET H$=H$+CHR$ (CH-F7)
9635 LET Q=VAL H$
9636 LET L=L+FIV
9637 RETURN 
9660 REM %$%(%)
9661 LET H$=H$+"$("
9662 LET S=PEEK (L+III)
9663 FOR Q=I TO S
9664 LET E=L+II+II*Q
9665 GOSUB DB
9666 IF Q>=S THEN GOTO VLST+168
9667 LET H$=H$+STR$ E+","
9668 NEXT Q
9669 LET H$=H$+STR$ E+")"
9670 LET E=L+VI
9671 LET U=L+III+II*S
9672 GOSUB DB
9674 FOR Q=U TO U+(E AND E<F4)+(F4 AND E>=F4)
9675 LET H$=H$+CHR$ PEEK Q
9676 NEXT Q
9677 GOTO VLST+109
9692 REM %F%-%N
9693 LET Q=VAL H$
9694 LET H$=H$+" FOR-NEXT"
9695 LET L=L+XX-III
9696 RETURN 
9697 REM %D%T%B
9698 FOR J=LEN I$ TO I STEP -I
9699 IF I$(J)=" " THEN NEXT J
9700 LET I$=I$( TO J)
9701 RETURN 
9702 REM %D%B
9703 LET E=F8*PEEK (E+I)+PEEK E
9704 RETURN 
9705 REM %S%R%C%H
9706 CLS 
9707 PRINT AT IX,I;"WRITE YOUR STRING WITHOUT LINE NUMBER.  ADD A QUOTE AND PRECEDESTRING WITH",,,," LET H$=""",,,," THEN ENTER AND CONTINUE."
9708 LET E=17116
9709 STOP 
9710 POKE E+IX,LEN H$
9711 POKE E-I,247
9712 POKE E,66
9713 LET K=PEEK 16396+F8*PEEK 16397-17143
9714 LET S=INT (K/F8)
9715 LET K=K-F8*S
9716 POKE E+III,K
9717 POKE E+IV,S
9718 FOR E=I TO LEN H$
9719 POKE (E+17015),CODE H$(E)
9720 NEXT E
9721 CLS 
9722 PRINT ,,"""";H$;"""";TAB Z0;,,
9723 LET K=USR 16809
9724 IF K=55555 THEN GOTO 9740
9727 LET Q=K
9728 LET Q=Q-I
9729 IF PEEK Q<>118 THEN GOTO 9728
9730 IF K-Q<IV THEN GOTO 9723
9732 LET E=F8*PEEK (Q+I)+PEEK (Q+II)
9733 LET K=F8*PEEK (Q+IV)+PEEK (Q+III)
9734 LET I$=""
9735 FOR Q=Q+FIV TO Q+III+K
9736 LET I$=I$+CHR$ PEEK Q
9737 NEXT Q
9738 PRINT E;TAB FIV;I$
9739 GOTO 9723
9740 PRINT ,,"  % %S%E%A%R%C%H% %C%O%M%P%L%E%T%E% "
9741 STOP 
9742 GOTO 9706
9750 REM %S%P%Y
9751 PRINT AT XX+I,Z0;"LOOK AT NO./%QUIT/%HIGHER/%L0WER"
9752 INPUT H$
9753 IF H$<>"Q" THEN GOTO 9755
9754 STOP 
9755 IF H$<>"H" THEN GOTO 9758
9756 LET B=B+F4
9757 GOTO 9762
9758 IF H$<>"L" THEN GOTO 9761
9759 LET B=B-F4
9760 GOTO 9762
9761 LET B=VAL H$
9762 CLS 
9763 FOR E=B TO B+XX+I
9764 PRINT E;TAB VI;PEEK E;TAB TEN;":";CHR$ PEEK E;":";TAB XX;F8*PEEK (E+I)+PEEK E
9765 NEXT E
9766 GOTO 9752
9800 REM %P%U%R%G
9801 LET N(1)=USR 16900
9802 REM %I%N%I%T%I%A%L%I%Z%A%T%I%O%N%S
9810 LET I=1
9811 LET Z0=I-I
9812 LET II=I+I
9813 LET III=II+I
9814 LET IV=II+II
9815 LET FIV=IV+I
9816 LET VI=IV+II
9817 LET VII=VI+I
9818 LET VIII=IV+IV
9819 LET IX=VIII+I
9820 LET TEN=IX+I
9821 LET XX=II*TEN
9822 LET XXX=30
9823 LET F4=II*VIII
9824 LET F5=II*F4
9825 LET F6=II*F5
9826 LET F7=II*F6
9827 LET F8=256
9828 LET FF=F8-I
9829 LET IK=I/F8/F8
9840 REM %K%E%Y%S
9841 LET VLST=9501
9842 LET DB=9703
9843 LET PURG=9801
9844 LET MEM=9916
9845 LET ZZ=9953
9846 LET ZZZ=ZZ-I
9847 LET ZZZZ=ZZ-II
9848 LET SAVE=9900
9849 LET SYSV=9928
9850 LET MAP=8101
9851 LET SEARCH=9450
9852 LET SRCH=9706
9853 LET HELP=9961
9854 LET SPY=9751
9855 LET DISA=9000
9856 LET ERR=9103
9857 LET DTB=9698
9858 LET WCOD=9121
9859 LET WSTR=9136
9860 LET NTRY=HELP
9861 LET EDIT=9201
9892 CLS 
9893 PRINT ,,,,"* TO DELETE STRINGS AND ARRAYS, REDIMENSION THEM TO ZERO."
9894 PRINT ,,"   DIM (NAME)$(0)  OR"
9895 PRINT ,,"   DIM (NAME)(0)"
9896 PRINT ,,"   THIS WILL PULL ERROR 3/0 BUT"," THE JOB IS DONE."
9897 STOP 
9898 GOTO VLST
9899 REM %S%A%V%E
9900 CLS 
9901 PRINT ,,,,"""";Z$;""" IS TO BE SAVED.",,,"START RECORDER.  PRESS ANY KEY.",,,Q$,,
9902 PRINT "MODE IS ";"LOOPING" AND NOT (NTRY-SAVE);"HELP" AND NOT (NTRY-HELP);"LOAD-AND-GO" AND NOT (NTRY-1000)
9903 SLOW 
9904 IF NTRY<>SAVE THEN PAUSE 40000
9905 FOR N=F6 TO I STEP -I
9906 UNPLOT N-I,XXX
9907 NEXT N
9908 SAVE Z$
9909 FAST 
9910 CLS 
9911 PRINT Y$;X$
9912 PRINT AT IX+VI,VII;"PRESENTS***"
9913 GOSUB ZZZ
9914 GOTO NTRY
9915 REM %M%E%M
9916 LET L=F8*(PEEK 16387-PEEK 16413)+PEEK 16386-PEEK 16412
9917 LET E=INT (L/F5/F5)
9918 PRINT AT IX,Z0;"MEMORY LEFT IS:";E;" K, ";L-F5*F5*E;" BYTES.",,,"(";L;" BYTES)"
9919 IF L<F8+XX THEN PRINT ,,"CAUTION: LIST EDITING MAY BE IMPAIRED."
9920 STOP 
9921 GOTO MAP
9927 REM %S%Y%S%V
9928 LET E=II*CODE D$-75
9929 IF E<I OR E>13 THEN GOTO 9933
9930 LET E$="10141824260002"
9931 LET E=VAL E$(E TO E+I)+16386
9932 LET D$=STR$ (F8*PEEK (E+I)+PEEK E)
9933 RETURN 
9950 REM %S%L%E%E%P
9951 LET ZZ=ZZ+F8
9952 LET ZZ=ZZ+F7
9953 LET ZZ=ZZ+F6
9954 LET ZZ=ZZ+F5
9955 LET E=ZZ-ZZZ+F5
9956 LET ZZ=ZZZ+I
9957 PAUSE E
9958 POKE 16437,FF
9959 RETURN 
9960 REM %H%E%L%P
9961 CLS 
9962 LET PAGE=I
9963 LET H$="% %H%E%L%P%  PAGE "
9964 PRINT AT I,IX;H$;PAGE
9965 PRINT ,,"* USE GOTO FOR DESIRED LOCATION,",,"* LET Z$=""(YOUR PROGRAM NAME)""",,,"* LET NTRY=1000 IF YOU WANT YOUR PROGRAM TO RUN AFTER LOADING." 
9966 PRINT ,,"* Z$=""";Z$;""""
9967 LET I$="% %K%E%Y%W%O%R%D% %L%I%N%E% %F%U%N%C%T%I%O%N% "
9968 PRINT ,,I$,"""HELP""   9960 HERE.","""VLST""   9500 VARIABLE LIST.","""MEM""    9915 AVAILABLE MEMORY. ""SAVE""   9900 SAVE PROGRAM,"
9969 PRINT """NTRY""   HELP UNLESS CHANGED."
9970 PRINT """PURG""   9800 DELETE VARIABLES."
9971 PRINT """MAP""    8100 MEMORY MAP."
9972 PRINT """SPY""    9750 LOOK AT MEMORY."
9973 PRINT """DISA""   9000 DISASSEMBLE."
9974 LET PAGE=II
9975 PRINT 
9976 CLS 
9977 PRINT AT I,IX;H$;PAGE,,,I$
9978 PRINT """WCOD""   9120 DECODE TABLE."
9979 PRINT """WSTD""   9135 MNEMONICS."
9980 PRINT """SRCH""   9705 BASIC CODE."
9981 PRINT """SEARCH"" 9450 ROM SPACE."
9982 PRINT """EDIT""   9200 MACH CODE."
9983 PRINT "*""GOTO VLST"" CODES AS:","  :236:V:L:S:T: (5 BYTES)" 
9984 PRINT "*""GOTO 9500"" CODES AS:","  :235:9:5:0:0:126:EXP:B4:B3:B2:B1:B0: (12 BYTES)"
9985 PRINT "* USING VARIABLES IN PLACE OF   NUMBERS CAN SAVE MEMORY."
9986 PRINT "* USE:Z0,I,II,III,IV,FIV,VI,VII,VIII,IX,TEN,XX,XXX IN PLACE OF:0,1,2,3,4,5,6,7,8,9,10,20,30."
9987 PRINT "* LIST 9802 TO SEE."
9988 STOP 
9989 GOTO HELP
9997 REM %M%/%L% %C%0%D%E% %T%E%M%P%L%A%T%E%S
9998 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.......   /\.'
9999 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.........1.......   /\.'
Scroll to Top
A\DBE\BE\E6\CBE\F5\CD\DD\F1

Super Utility

Products: Super Utility
Developer(s): William J. Pedersen
Date: 1983
Type: Cassette
Platform(s): TS 1000

Utility for working with machine language programs and memory.

Content

Appears On

Related Products

Utility for working with machine language programs and memory.

Related Articles

Related Content

Image Gallery

Super Utility

Source Code

   1 REM %U%T%I%L%I%T%Y
   2 REM *************
   3 REM COPYRIGHT NOV 14, 1983 BY WILLIAM J. PEDERSEN. 1120 MERRIFIELD S.E., GRAND RAPIDS, MICHIGAN  49507
   4 REM REPRODUCTION OR USE OF THIS PROGRAM IS PROHIBITED WITHOUT EXPRESS WRITTEN PERMISSION.
   5 REM *************
   7 REM \7E\E6\E0\FE\C0\28\0E\F2\99\41\FE\80\28\07\F2\A2\41\FE\60\28\10\23\22\93\41\ED\5B\93\7B\19\23\23\C9\11\0C\00\19\11\06\00\19\C9\23\CB\7E\28\FB\18\F4\F5\D5\E5\2A\DB\42\ED\4B\DF\42\ED\5B\E7\42\1A\ED\B1\20\1B\22\DB\42\ED\43\DF\42\2B\ED\4B\E5\42\1A\ED\A1\20\DF\13\EA\C8\41\ED\4B\DB\42\18\21\01\03\D9\18\1C\F5\D5\E5\21\00\00\22\DB\42\21\FF\1F\22\DF\42\18\BF\00\00\D9\18\06
   8 REM \E1\D1\FD\2A\00\40\3E\1E\ED\47\F1\C9\F5\D5\E5\2A\10\40\22\DB\42\3E\80\BE\28\E6\CB\6E\F5\CD\78\41\22\DD\42\F1\20\08\2A\DD\42\22\DB\42\18\E7\CD\2E\42\2A\DB\42\18\DF\2A\DB\42\E5\ED\5B\DD\42\D5\AF\ED\52\EB\2A\1C\40\19\22\1C\40\2A\1A\40\19\22\1A\40\2A\14\40\E5\19\22\14\40\E1\D1\AF\ED\52\E5\C1\03\2A\DB\42\EB\ED\B0\E1\C9\1B\1B\1B\1B\1D\1B\1B\1B\1B\1B\1B\00\00\00\00\18\06
   9 REM \DC\07\F2\03\D9\FA\9C\AD\EA\78\42\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\57\1B\95\7B\A8\04\1B\1B\1B\1B\02\00\78\42\1B\1B\1B\1B\1B\1B\1E\1B\1B
8100 REM %M%A%P
8101 CLS 
8102 PRINT ,,"    % %M%E%M%O%R%Y% %M%A%P%  ";Z$
8103 LET G$="\##\##%P\:.\'.\':%V\:'\..\':%U%U\.'\.'1638420479204802457524576286712867232767ABCEFG0 PROGRAM =VARIABLES=AVAIL MEM=RAMTOP UP="
8104 LET H$="16509"
8105 LET Q=1
8106 LET S=37
8107 LET I$=CHR$ S
8108 FOR K=IV TO XX-I STEP FIV
8109 LET T=II*K+VII
8110 LET L=53.4+II*K/FIV
8111 LET D$=H$
8112 GOSUB SYSV
8113 LET TT=VAL D$
8114 LET D$=G$(L)
8115 GOSUB SYSV
8116 LET QQ=VAL D$
8117 IF QQ=Z0 THEN LET QQ=32768
8118 LET LL=54+II*K
8119 PRINT AT K-I,Z0;G$(LL TO LL+IX);QQ-TT;" BYTES."
8120 LET H$=G$(L+I)
8121 FOR N=Z0 TO 31
8122 PRINT AT K,N;G$(Q);
8123 LET B=13107.2+F7*N+819.2*K
8124 LET D$=I$
8125 GOSUB SYSV
8126 LET BB=VAL D$
8127 IF BB-B<F6 THEN PRINT AT K,N;G$(Q+I);
8128 IF BB>B+F7 THEN GOTO 8137
8129 LET Q=Q+II
8130 LET S=S+I
8131 LET D$=CHR$ S
8132 GOSUB SYSV
8133 LET I$=D$
8134 IF LEN I$<II THEN LET I$="65536"
8135 IF VAL I$>B+F7 THEN GOTO 8137
8136 GOTO 8130
8137 NEXT N
8138 PRINT G$(T TO T+IV);TAB 27;G$(T+FIV TO T+IX)
8139 NEXT K
8140 STOP 
8141 GOTO HELP
8999 REM % %D%I%S%A%S%S%E%M%B%L%E%R% 
9000 PRINT AT XX,Z0;"DISASSEMBLE STARTING WHERE?"
9001 INPUT WB
9002 CLS 
9003 LET WL=Z0
9004 LET WIA=WB
9005 LET WFS=Z0
9006 LET WFN=I
9007 LET WFK=Z0
9008 LET WF=Z0
9009 LET WFW=Z0
9010 LET WV=Z0
9011 LET G$=""
9012 LET WN=112
9013 LET WL=WL+I
9014 LET WP=PEEK WB
9015 IF WP<>221 AND WP<>253 THEN GOTO 9021
9016 IF WFK THEN GOTO ERR
9017 LET WF=I+(I AND WP=253)
9018 LET WFK=I
9019 LET WB=WB+I
9020 GOTO 9014
9021 IF WP<>203 THEN GOTO 9034
9022 LET WFN=Z0
9023 LET WJ=345
9024 LET WB=WB+I+WFK
9025 LET WP=PEEK WB
9026 LET W1=INT (WP/F6)
9027 LET W=WP-F6*W1
9028 LET W2=INT (W/VIII)
9029 LET W=W-VIII*W2
9030 IF WFK AND W<>VI THEN GOTO ERR
9031 IF W1 THEN LET T$(WJ)=CHR$ (97+W1)+CHR$ (F4+I+W2)+CHR$ (W+I)
9032 IF NOT W1 THEN LET T$(WJ)=CHR$ (49+W2)+CHR$ (W+I)+CHR$ 97
9033 GOTO 9042
9034 LET WJ=I+PEEK WB
9035 LET WW=Z0
9036 IF WP<>237 THEN GOTO 9040
9037 LET WB=WB+I
9038 LET WW=PEEK WB
9039 LET WJ=193+WW-(36 AND WW>159)
9040 IF WW>123 AND WW<160 OR WJ>344 THEN GOTO ERR
9041 LET WDIS=PEEK (WB+I)
9042 LET V$=""
9043 LET W0=CODE T$(WJ,I)
9044 IF W0=WN+IV THEN GOTO ERR
9045 IF W0<>WN-IV THEN GOTO 9048
9046 LET WV=VAL (W$(CODE T$(WJ,II)))
9047 LET G$=" "
9048 GOSUB 9066
9049 LET B$=I$+" "
9050 LET W0=CODE T$(WJ,II)
9051 GOSUB 9066
9052 IF I$="" THEN GOTO 9063
9053 IF WP=211 THEN LET I$="(N)"
9054 LET B$=B$+I$
9055 LET W0=CODE T$(WJ,III)
9056 GOSUB 9066
9057 IF I$="" THEN GOTO 9060
9058 IF WP=219 THEN LET I$="(N)"
9059 LET B$=B$+","+I$
9060 IF WFK AND NOT WFW THEN GOTO ERR
9061 LET V$=STR$ WV
9062 IF NOT LEN G$ AND WV=Z0 THEN LET V$=""
9063 PRINT WIA;TAB VI;B$;TAB XX-I;V$+G$
9064 LET WB=WB+I+WFS*WFN
9065 GOTO 9004
9066 LET I$=W$(W0)
9067 GOSUB DTB
9068 IF W0=WN+FIV THEN GOSUB 9094
9069 IF W0<>WN+VI THEN GOTO 9075
9070 LET WB=WB+WFK+I
9071 LET WFN=Z0
9072 LET WV=PEEK WB
9073 IF WP=211 OR WP=219 THEN GOTO 9078
9074 LET G$=":"+CHR$ WV+":"
9075 IF WV>=F5 THEN GOTO 9078
9076 LET W=F4+I+III*WV
9078 IF W0<WN+VII THEN GOTO 9085
9079 LET WB=WB+II
9080 LET G$=" "
9081 LET WFN=Z0
9082 LET E=WB-I
9083 GOSUB DB
9084 LET WV=E
9085 IF NOT WFK THEN GOTO 9092
9086 IF W0=VII OR W0=61 OR W0=WN THEN LET WFW=I
9087 IF W0<>VII THEN GOTO 9091
9088 LET WFS=I
9089 GOSUB 9095
9090 LET I$=W$(WN+WF, TO III)+I$+")"
9091 IF W0=61 THEN LET I$=W$(WN+WF,II TO III)
9092 IF W0=WN THEN LET I$=W$(WN+WF)
9093 RETURN 
9094 LET WB=WB+I
9095 LET W=WDIS
9096 IF W<F7 THEN GOTO 9098
9097 LET W=W-F8
9098 IF NOT WFK THEN LET W=W+II
9099 IF W>=Z0 THEN LET I$="+"+STR$ W
9100 IF W<Z0 THEN LET I$=STR$ W
9101 IF B$( TO II)="JR" OR B$( TO II)="DJ" THEN LET WV=WIA+W
9102 RETURN 
9103 PRINT "ERROR AT ";WIA;". ",
9104 FOR J=Z0 TO III
9105 PRINT PEEK (WIA+J);" ";
9106 NEXT J
9107 PRINT 
9108 GOTO 9004
9120 REM %W%C%O%D
9121 CLS 
9122 PRINT ,," T$(345,3) TABLE FOR DECODING","MOST Z80 INSTRUCTIONS.",,,"N   VALUES      INTERPRETATION",,,
9123 FOR N=I TO 345
9124 PRINT N;" ";
9125 FOR K=I TO III
9126 PRINT CODE T$(N,K);" ";
9127 NEXT K
9128 PRINT ,
9129 FOR K=I TO III
9130 PRINT W$(CODE T$(N,K));" ";
9131 NEXT K
9132 PRINT 
9133 NEXT N
9134 STOP 
9135 REM %W%S%T%R
9136 CLS 
9137 PRINT ,," W$(120,4) ARRAY FOR MNEMONICS.",,,
9138 FOR N=I TO 120
9139 PRINT TAB VI;"W$(";N;")=","""";W$(N);""""
9140 NEXT N
9141 STOP 
9142 GOTO WCOD
9200 REM %E%D%I%T
9201 CLS 
9202 LET L=9228
9203 LET M=9317
9206 PRINT ,,"% %M%A%C%H%I%N%E% %L%A%N%G%U%A%G%E% %E%D%I%T%O%R% ",,,"WHERE ABOVE 16759?  START ";
9207 INPUT B
9208 PRINT B,"SELECT BY NO."
9209 FOR N=VI TO F4+I
9210 PRINT AT N,F4;"                "
9211 NEXT N
9212 PRINT AT IV,XX;"NOW   ";B
9213 PRINT ,," 1 SINGLE BYTE",," 2 DOUBLE BYTE",," 3 LD HL,(NN)",," 4 LD (NN),HL",," 5 PUSH SEQ",," 6 LD (NN),BC",," 7 LD BC,(NN)",," 8 LD (NN),DE",," 9 LD DE,(NN)",,"10 SBC HL,BC",,"11 ADC HL,BC",,"12 SBC HL,DE",,"13 ADC HL,DE",,"14 JUMPS",,"15 %Q%U%I%T"
9214 INPUT N
9215 IF N<I OR N>F4-II THEN GOTO M
9216 PRINT AT N+FIV,F4;"% "
9217 GOTO L-F4+VI*N
9218 INPUT K
9219 IF K<0 OR K>FF THEN GOTO M
9220 POKE B,K
9221 LET B=B+I
9222 GOTO 9209
9224 INPUT K
9225 IF K<0 OR K>=F8*F8 THEN GOTO M
9226 POKE B+I,INT (K/F8)
9227 POKE B,K-F8*INT (K/F8)
9228 LET B=B+II
9229 GOTO 9209
9236 POKE B,XXX+N
9237 LET B=B+I
9238 GOTO L-IV
9242 POKE B,245
9243 POKE B+I,213
9244 POKE B+II,229
9245 LET B=B+I
9246 GOTO L
9266 POKE B,237  
9267 POKE B+I,XX-I+VIII*N  
9268 LET B=B+II
9269 GOTO L-IV
9290 POKE B,237  
9291 POKE B+I,VIII*N-F4+II  
9292 GOTO L
9296 PRINT AT F4,F4;"JUMP TO?"
9297 INPUT N
9298 IF N<16760 OR N>=F8*F8 THEN GOTO M
9299 LET W=(B-N)>F7+I OR B-N<-F7+II
9300 PRINT AT VI,F4;"WHICH CONDITION?",AT VIII,F4;" 1 DJNZ",AT IX,F4;" 2 NONE",AT TEN,F4;" 3 NZ",AT TEN+I,F4;" 4  Z",AT VI+VI,F4;" 5 NC",AT IX+IV,F4;" 6  C",AT F4-II,F4;" 7 PO",AT F4-I,F4;" 8 PE",AT F4,F4;" 9  P   ",AT F4+I,F4;"10  M"   
9301 INPUT S
9302 IF S<I OR S>TEN THEN GOTO M
9303 IF W OR S>VI THEN GOTO 9309
9304 LET N=N-B-II
9305 IF N>=F7 THEN LET N=F7-N
9306 POKE B,VIII+VIII*S
9307 POKE B+I,N
9308 GOTO L
9309 IF S=I THEN GOTO M
9310 POKE B,170+VIII*S
9311 IF S=II THEN POKE B,195
9312 LET B=B+I
9313 LET P3=INT (N/F8)
9314 POKE B,N-F8*P3
9315 POKE B+I,P3
9316 GOTO L
9317 CLS 
9318 PRINT AT IX,Z0;"%Q%U%I%T OR AN ERROR HAS OCCURRED.  THE LAST LOCATION WAS ";B;".","CONTINUE FOR DISASSEMBLER."
9319 STOP 
9320 GOTO DISA
9449 REM %S%E%A%R%C%H
9450 CLS 
9451 LET Q=Z0
9452 LET E=I
9453 PRINT ,,"OBJECTIVE/TITLE?",
9454 INPUT G$
9455 PRINT AT I,Z0;G$;"                ";AT II,Z0;"PRINT? %YES OR %NO",
9456 LET W=Z0
9457 INPUT H$
9458 IF LEN H$ THEN IF H$(I)="Y" THEN LET W=I
9459 PRINT AT II,Z0;"INPUT YOUR CODE          ",
9460 INPUT L
9461 IF L>FF THEN GOTO 9481
9462 PRINT AT II,Z0;"IF DOUBLE BYTE, ENTER ""D"""
9463 INPUT H$
9464 IF LEN H$ THEN IF H$(I)="D" THEN GOTO 9481
9465 POKE 17015+E,L
9466 LET E=E+I
9467 PRINT AT II,Z0;"ANOTHER ENTRY? %YES OR %NO",
9468 INPUT H$
9469 IF LEN H$ THEN IF H$(I)="Y" THEN GOTO 9459
9470 CLS 
9471 IF NOT W THEN PRINT ,,G$
9472 IF W THEN LPRINT G$
9473 POKE 17125,E-I
9474 LET K=USR 16860
9475 GOTO 9477
9476 LET K=USR 16809
9477 LET Q=Q+I
9478 IF K=55555 THEN GOTO 9486
9479 GOSUB 9490+II*W
9480 GOTO 9476
9481 LET P2=INT (L/F8+II**-IX)
9482 POKE 17016+E,P2
9483 POKE 17015+E,L-F8*P2
9484 LET E=E+II
9485 GOTO 9467
9486 IF NOT W THEN PRINT "$";Q-I
9487 IF W THEN LPRINT "$";Q-I
9488 STOP 
9489 GOTO SEARCH
9490 PRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9491 RETURN 
9492 LPRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9493 RETURN 
9499 STOP 
9500 REM %V%L%S%T
9501 CLS 
9502 PRINT ,,,,"   %V%A%R%I%A%B%L%E%S",,,
9503 LET E=16400
9504 GOSUB DB
9505 LET L=E-I
9506 LET T=Z0
9507 LET T=T+I
9508 LET L=L+I
9509 LET B=L
9510 IF LEN H$>I THEN IF H$( TO II)="H$" THEN GOSUB VLST+XX
9511 LET CH=PEEK L
9512 PRINT TAB III-LEN STR$ T;T;" ";
9512 LET TP=INT (CH/F5)
9514 LET CH=CH-TP*F5+F5
9515 LET H$=CHR$ CH
9516 GOSUB VLST-F5+F5*TP
9517 LET E=TP=II OR TP=VI
9518 IF E THEN PRINT H$;TAB XX+VI;B
9519 IF NOT E THEN PRINT H$;TAB XX+III-LEN STR$ Q;Q;TAB XX+VI;B
9520 GOTO VLST+VI
9521 PRINT ,,"   %E%N%D% %O%F% %L%I%S%T ";L
9522 LET H$="***"
9523 STOP 
9524 GOTO VLST
9532 REM %S%T%R%I%N%G
9533 LET H$=H$+"$ "
9534 LET E=L+I
9535 GOSUB DB
9536 FOR Q=I TO (E AND E<F4)+(F4 AND E>=F4)
9537 LET H$=H$+CHR$ PEEK (L+II+Q)
9538 NEXT Q
9539 LET L=L+II+E
9540 RETURN 
9564 REM %S%I%N%G%L
9565 LET Q=VAL H$
9566 LET L=L+FIV
9567 RETURN 
9596 REM %N%(%)
9597 LET H$=H$+"("
9598 LET I$=H$
9599 LET S=PEEK (L+III)
9600 FOR Q=I TO S
9601 LET E=L+II+II*Q
9602 GOSUB DB
9603 IF Q>=S THEN GOTO VLST+105
9604 LET H$=H$+STR$ E+","
9605 LET I$=I$+"1,"
9606 NEXT Q
9607 LET H$=H$+STR$ E+")"
9608 LET I$=I$+"1)"
9609 LET Q=VAL I$
9610 LET E=L+I
9611 GOSUB DB
9612 LET L=L+II+E
9613 RETURN 
9628 REM %M%U%L%T
9629 LET L=L+I
9630 LET CH=PEEK L
9631 IF INT (CH/F6)=II THEN GOTO VLST+133
9632 LET H$=H$+CHR$ CH
9633 GOTO VLST+F7
9634 LET H$=H$+CHR$ (CH-F7)
9635 LET Q=VAL H$
9636 LET L=L+FIV
9637 RETURN 
9660 REM %$%(%)
9661 LET H$=H$+"$("
9662 LET S=PEEK (L+III)
9663 FOR Q=I TO S
9664 LET E=L+II+II*Q
9665 GOSUB DB
9666 IF Q>=S THEN GOTO VLST+168
9667 LET H$=H$+STR$ E+","
9668 NEXT Q
9669 LET H$=H$+STR$ E+")"
9670 LET E=L+VI
9671 LET U=L+III+II*S
9672 GOSUB DB
9674 FOR Q=U TO U+(E AND E<F4)+(F4 AND E>=F4)
9675 LET H$=H$+CHR$ PEEK Q
9676 NEXT Q
9677 GOTO VLST+109
9692 REM %F%-%N
9693 LET Q=VAL H$
9694 LET H$=H$+" FOR-NEXT"
9695 LET L=L+XX-III
9696 RETURN 
9697 REM %D%T%B
9698 FOR J=LEN I$ TO I STEP -I
9699 IF I$(J)=" " THEN NEXT J
9700 LET I$=I$( TO J)
9701 RETURN 
9702 REM %D%B
9703 LET E=F8*PEEK (E+I)+PEEK E
9704 RETURN 
9705 REM %S%R%C%H
9706 CLS 
9707 PRINT AT IX,I;"WRITE YOUR STRING WITHOUT LINE NUMBER.  ADD A QUOTE AND PRECEDESTRING WITH",,,," LET H$=""",,,," THEN ENTER AND CONTINUE."
9708 LET E=17116
9709 STOP 
9710 POKE E+IX,LEN H$
9711 POKE E-I,247
9712 POKE E,66
9713 LET K=PEEK 16396+F8*PEEK 16397-17143
9714 LET S=INT (K/F8)
9715 LET K=K-F8*S
9716 POKE E+III,K
9717 POKE E+IV,S
9718 FOR E=I TO LEN H$
9719 POKE (E+17015),CODE H$(E)
9720 NEXT E
9721 CLS 
9722 PRINT ,,"""";H$;"""";TAB Z0;,,
9723 LET K=USR 16809
9724 IF K=55555 THEN GOTO 9740
9727 LET Q=K
9728 LET Q=Q-I
9729 IF PEEK Q<>118 THEN GOTO 9728
9730 IF K-Q<IV THEN GOTO 9723
9732 LET E=F8*PEEK (Q+I)+PEEK (Q+II)
9733 LET K=F8*PEEK (Q+IV)+PEEK (Q+III)
9734 LET I$=""
9735 FOR Q=Q+FIV TO Q+III+K
9736 LET I$=I$+CHR$ PEEK Q
9737 NEXT Q
9738 PRINT E;TAB FIV;I$
9739 GOTO 9723
9740 PRINT ,,"  % %S%E%A%R%C%H% %C%O%M%P%L%E%T%E% "
9741 STOP 
9742 GOTO 9706
9750 REM %S%P%Y
9751 PRINT AT XX+I,Z0;"LOOK AT NO./%QUIT/%HIGHER/%L0WER"
9752 INPUT H$
9753 IF H$<>"Q" THEN GOTO 9755
9754 STOP 
9755 IF H$<>"H" THEN GOTO 9758
9756 LET B=B+F4
9757 GOTO 9762
9758 IF H$<>"L" THEN GOTO 9761
9759 LET B=B-F4
9760 GOTO 9762
9761 LET B=VAL H$
9762 CLS 
9763 FOR E=B TO B+XX+I
9764 PRINT E;TAB VI;PEEK E;TAB TEN;":";CHR$ PEEK E;":";TAB XX;F8*PEEK (E+I)+PEEK E
9765 NEXT E
9766 GOTO 9752
9800 REM %P%U%R%G
9801 LET N(1)=USR 16900
9802 REM %I%N%I%T%I%A%L%I%Z%A%T%I%O%N%S
9810 LET I=1
9811 LET Z0=I-I
9812 LET II=I+I
9813 LET III=II+I
9814 LET IV=II+II
9815 LET FIV=IV+I
9816 LET VI=IV+II
9817 LET VII=VI+I
9818 LET VIII=IV+IV
9819 LET IX=VIII+I
9820 LET TEN=IX+I
9821 LET XX=II*TEN
9822 LET XXX=30
9823 LET F4=II*VIII
9824 LET F5=II*F4
9825 LET F6=II*F5
9826 LET F7=II*F6
9827 LET F8=256
9828 LET FF=F8-I
9829 LET IK=I/F8/F8
9840 REM %K%E%Y%S
9841 LET VLST=9501
9842 LET DB=9703
9843 LET PURG=9801
9844 LET MEM=9916
9845 LET ZZ=9953
9846 LET ZZZ=ZZ-I
9847 LET ZZZZ=ZZ-II
9848 LET SAVE=9900
9849 LET SYSV=9928
9850 LET MAP=8101
9851 LET SEARCH=9450
9852 LET SRCH=9706
9853 LET HELP=9961
9854 LET SPY=9751
9855 LET DISA=9000
9856 LET ERR=9103
9857 LET DTB=9698
9858 LET WCOD=9121
9859 LET WSTR=9136
9860 LET NTRY=HELP
9861 LET EDIT=9201
9892 CLS 
9893 PRINT ,,,,"* TO DELETE STRINGS AND ARRAYS, REDIMENSION THEM TO ZERO."
9894 PRINT ,,"   DIM (NAME)$(0)  OR"
9895 PRINT ,,"   DIM (NAME)(0)"
9896 PRINT ,,"   THIS WILL PULL ERROR 3/0 BUT"," THE JOB IS DONE."
9897 STOP 
9898 GOTO VLST
9899 REM %S%A%V%E
9900 CLS 
9901 PRINT ,,,,"""";Z$;""" IS TO BE SAVED.",,,"START RECORDER.  PRESS ANY KEY.",,,Q$,,
9902 PRINT "MODE IS ";"LOOPING" AND NOT (NTRY-SAVE);"HELP" AND NOT (NTRY-HELP);"LOAD-AND-GO" AND NOT (NTRY-1000)
9903 SLOW 
9904 IF NTRY<>SAVE THEN PAUSE 40000
9905 FOR N=F6 TO I STEP -I
9906 UNPLOT N-I,XXX
9907 NEXT N
9908 SAVE Z$
9909 FAST 
9910 CLS 
9911 PRINT Y$;X$
9912 PRINT AT IX+VI,VII;"PRESENTS***"
9913 GOSUB ZZZ
9914 GOTO NTRY
9915 REM %M%E%M
9916 LET L=F8*(PEEK 16387-PEEK 16413)+PEEK 16386-PEEK 16412
9917 LET E=INT (L/F5/F5)
9918 PRINT AT IX,Z0;"MEMORY LEFT IS:";E;" K, ";L-F5*F5*E;" BYTES.",,,"(";L;" BYTES)"
9919 IF L<F8+XX THEN PRINT ,,"CAUTION: LIST EDITING MAY BE IMPAIRED."
9920 STOP 
9921 GOTO MAP
9927 REM %S%Y%S%V
9928 LET E=II*CODE D$-75
9929 IF E<I OR E>13 THEN GOTO 9933
9930 LET E$="10141824260002"
9931 LET E=VAL E$(E TO E+I)+16386
9932 LET D$=STR$ (F8*PEEK (E+I)+PEEK E)
9933 RETURN 
9950 REM %S%L%E%E%P
9951 LET ZZ=ZZ+F8
9952 LET ZZ=ZZ+F7
9953 LET ZZ=ZZ+F6
9954 LET ZZ=ZZ+F5
9955 LET E=ZZ-ZZZ+F5
9956 LET ZZ=ZZZ+I
9957 PAUSE E
9958 POKE 16437,FF
9959 RETURN 
9960 REM %H%E%L%P
9961 CLS 
9962 LET PAGE=I
9963 LET H$="% %H%E%L%P%  PAGE "
9964 PRINT AT I,IX;H$;PAGE
9965 PRINT ,,"* USE GOTO FOR DESIRED LOCATION,",,"* LET Z$=""(YOUR PROGRAM NAME)""",,,"* LET NTRY=1000 IF YOU WANT YOUR PROGRAM TO RUN AFTER LOADING." 
9966 PRINT ,,"* Z$=""";Z$;""""
9967 LET I$="% %K%E%Y%W%O%R%D% %L%I%N%E% %F%U%N%C%T%I%O%N% "
9968 PRINT ,,I$,"""HELP""   9960 HERE.","""VLST""   9500 VARIABLE LIST.","""MEM""    9915 AVAILABLE MEMORY. ""SAVE""   9900 SAVE PROGRAM,"
9969 PRINT """NTRY""   HELP UNLESS CHANGED."
9970 PRINT """PURG""   9800 DELETE VARIABLES."
9971 PRINT """MAP""    8100 MEMORY MAP."
9972 PRINT """SPY""    9750 LOOK AT MEMORY."
9973 PRINT """DISA""   9000 DISASSEMBLE."
9974 LET PAGE=II
9975 PRINT 
9976 CLS 
9977 PRINT AT I,IX;H$;PAGE,,,I$
9978 PRINT """WCOD""   9120 DECODE TABLE."
9979 PRINT """WSTD""   9135 MNEMONICS."
9980 PRINT """SRCH""   9705 BASIC CODE."
9981 PRINT """SEARCH"" 9450 ROM SPACE."
9982 PRINT """EDIT""   9200 MACH CODE."
9983 PRINT "*""GOTO VLST"" CODES AS:","  :236:V:L:S:T: (5 BYTES)" 
9984 PRINT "*""GOTO 9500"" CODES AS:","  :235:9:5:0:0:126:EXP:B4:B3:B2:B1:B0: (12 BYTES)"
9985 PRINT "* USING VARIABLES IN PLACE OF   NUMBERS CAN SAVE MEMORY."
9986 PRINT "* USE:Z0,I,II,III,IV,FIV,VI,VII,VIII,IX,TEN,XX,XXX IN PLACE OF:0,1,2,3,4,5,6,7,8,9,10,20,30."
9987 PRINT "* LIST 9802 TO SEE."
9988 STOP 
9989 GOTO HELP
9997 REM %M%/%L% %C%0%D%E% %T%E%M%P%L%A%T%E%S
9998 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.......   /\.'
9999 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.........1.......   /\.'
Scroll to Top
A\DD\DB\E7\CD

Super Utility

Products: Super Utility
Developer(s): William J. Pedersen
Date: 1983
Type: Cassette
Platform(s): TS 1000

Utility for working with machine language programs and memory.

Content

Appears On

Related Products

Utility for working with machine language programs and memory.

Related Articles

Related Content

Image Gallery

Super Utility

Source Code

   1 REM %U%T%I%L%I%T%Y
   2 REM *************
   3 REM COPYRIGHT NOV 14, 1983 BY WILLIAM J. PEDERSEN. 1120 MERRIFIELD S.E., GRAND RAPIDS, MICHIGAN  49507
   4 REM REPRODUCTION OR USE OF THIS PROGRAM IS PROHIBITED WITHOUT EXPRESS WRITTEN PERMISSION.
   5 REM *************
   7 REM \7E\E6\E0\FE\C0\28\0E\F2\99\41\FE\80\28\07\F2\A2\41\FE\60\28\10\23\22\93\41\ED\5B\93\7B\19\23\23\C9\11\0C\00\19\11\06\00\19\C9\23\CB\7E\28\FB\18\F4\F5\D5\E5\2A\DB\42\ED\4B\DF\42\ED\5B\E7\42\1A\ED\B1\20\1B\22\DB\42\ED\43\DF\42\2B\ED\4B\E5\42\1A\ED\A1\20\DF\13\EA\C8\41\ED\4B\DB\42\18\21\01\03\D9\18\1C\F5\D5\E5\21\00\00\22\DB\42\21\FF\1F\22\DF\42\18\BF\00\00\D9\18\06
   8 REM \E1\D1\FD\2A\00\40\3E\1E\ED\47\F1\C9\F5\D5\E5\2A\10\40\22\DB\42\3E\80\BE\28\E6\CB\6E\F5\CD\78\41\22\DD\42\F1\20\08\2A\DD\42\22\DB\42\18\E7\CD\2E\42\2A\DB\42\18\DF\2A\DB\42\E5\ED\5B\DD\42\D5\AF\ED\52\EB\2A\1C\40\19\22\1C\40\2A\1A\40\19\22\1A\40\2A\14\40\E5\19\22\14\40\E1\D1\AF\ED\52\E5\C1\03\2A\DB\42\EB\ED\B0\E1\C9\1B\1B\1B\1B\1D\1B\1B\1B\1B\1B\1B\00\00\00\00\18\06
   9 REM \DC\07\F2\03\D9\FA\9C\AD\EA\78\42\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\57\1B\95\7B\A8\04\1B\1B\1B\1B\02\00\78\42\1B\1B\1B\1B\1B\1B\1E\1B\1B
8100 REM %M%A%P
8101 CLS 
8102 PRINT ,,"    % %M%E%M%O%R%Y% %M%A%P%  ";Z$
8103 LET G$="\##\##%P\:.\'.\':%V\:'\..\':%U%U\.'\.'1638420479204802457524576286712867232767ABCEFG0 PROGRAM =VARIABLES=AVAIL MEM=RAMTOP UP="
8104 LET H$="16509"
8105 LET Q=1
8106 LET S=37
8107 LET I$=CHR$ S
8108 FOR K=IV TO XX-I STEP FIV
8109 LET T=II*K+VII
8110 LET L=53.4+II*K/FIV
8111 LET D$=H$
8112 GOSUB SYSV
8113 LET TT=VAL D$
8114 LET D$=G$(L)
8115 GOSUB SYSV
8116 LET QQ=VAL D$
8117 IF QQ=Z0 THEN LET QQ=32768
8118 LET LL=54+II*K
8119 PRINT AT K-I,Z0;G$(LL TO LL+IX);QQ-TT;" BYTES."
8120 LET H$=G$(L+I)
8121 FOR N=Z0 TO 31
8122 PRINT AT K,N;G$(Q);
8123 LET B=13107.2+F7*N+819.2*K
8124 LET D$=I$
8125 GOSUB SYSV
8126 LET BB=VAL D$
8127 IF BB-B<F6 THEN PRINT AT K,N;G$(Q+I);
8128 IF BB>B+F7 THEN GOTO 8137
8129 LET Q=Q+II
8130 LET S=S+I
8131 LET D$=CHR$ S
8132 GOSUB SYSV
8133 LET I$=D$
8134 IF LEN I$<II THEN LET I$="65536"
8135 IF VAL I$>B+F7 THEN GOTO 8137
8136 GOTO 8130
8137 NEXT N
8138 PRINT G$(T TO T+IV);TAB 27;G$(T+FIV TO T+IX)
8139 NEXT K
8140 STOP 
8141 GOTO HELP
8999 REM % %D%I%S%A%S%S%E%M%B%L%E%R% 
9000 PRINT AT XX,Z0;"DISASSEMBLE STARTING WHERE?"
9001 INPUT WB
9002 CLS 
9003 LET WL=Z0
9004 LET WIA=WB
9005 LET WFS=Z0
9006 LET WFN=I
9007 LET WFK=Z0
9008 LET WF=Z0
9009 LET WFW=Z0
9010 LET WV=Z0
9011 LET G$=""
9012 LET WN=112
9013 LET WL=WL+I
9014 LET WP=PEEK WB
9015 IF WP<>221 AND WP<>253 THEN GOTO 9021
9016 IF WFK THEN GOTO ERR
9017 LET WF=I+(I AND WP=253)
9018 LET WFK=I
9019 LET WB=WB+I
9020 GOTO 9014
9021 IF WP<>203 THEN GOTO 9034
9022 LET WFN=Z0
9023 LET WJ=345
9024 LET WB=WB+I+WFK
9025 LET WP=PEEK WB
9026 LET W1=INT (WP/F6)
9027 LET W=WP-F6*W1
9028 LET W2=INT (W/VIII)
9029 LET W=W-VIII*W2
9030 IF WFK AND W<>VI THEN GOTO ERR
9031 IF W1 THEN LET T$(WJ)=CHR$ (97+W1)+CHR$ (F4+I+W2)+CHR$ (W+I)
9032 IF NOT W1 THEN LET T$(WJ)=CHR$ (49+W2)+CHR$ (W+I)+CHR$ 97
9033 GOTO 9042
9034 LET WJ=I+PEEK WB
9035 LET WW=Z0
9036 IF WP<>237 THEN GOTO 9040
9037 LET WB=WB+I
9038 LET WW=PEEK WB
9039 LET WJ=193+WW-(36 AND WW>159)
9040 IF WW>123 AND WW<160 OR WJ>344 THEN GOTO ERR
9041 LET WDIS=PEEK (WB+I)
9042 LET V$=""
9043 LET W0=CODE T$(WJ,I)
9044 IF W0=WN+IV THEN GOTO ERR
9045 IF W0<>WN-IV THEN GOTO 9048
9046 LET WV=VAL (W$(CODE T$(WJ,II)))
9047 LET G$=" "
9048 GOSUB 9066
9049 LET B$=I$+" "
9050 LET W0=CODE T$(WJ,II)
9051 GOSUB 9066
9052 IF I$="" THEN GOTO 9063
9053 IF WP=211 THEN LET I$="(N)"
9054 LET B$=B$+I$
9055 LET W0=CODE T$(WJ,III)
9056 GOSUB 9066
9057 IF I$="" THEN GOTO 9060
9058 IF WP=219 THEN LET I$="(N)"
9059 LET B$=B$+","+I$
9060 IF WFK AND NOT WFW THEN GOTO ERR
9061 LET V$=STR$ WV
9062 IF NOT LEN G$ AND WV=Z0 THEN LET V$=""
9063 PRINT WIA;TAB VI;B$;TAB XX-I;V$+G$
9064 LET WB=WB+I+WFS*WFN
9065 GOTO 9004
9066 LET I$=W$(W0)
9067 GOSUB DTB
9068 IF W0=WN+FIV THEN GOSUB 9094
9069 IF W0<>WN+VI THEN GOTO 9075
9070 LET WB=WB+WFK+I
9071 LET WFN=Z0
9072 LET WV=PEEK WB
9073 IF WP=211 OR WP=219 THEN GOTO 9078
9074 LET G$=":"+CHR$ WV+":"
9075 IF WV>=F5 THEN GOTO 9078
9076 LET W=F4+I+III*WV
9078 IF W0<WN+VII THEN GOTO 9085
9079 LET WB=WB+II
9080 LET G$=" "
9081 LET WFN=Z0
9082 LET E=WB-I
9083 GOSUB DB
9084 LET WV=E
9085 IF NOT WFK THEN GOTO 9092
9086 IF W0=VII OR W0=61 OR W0=WN THEN LET WFW=I
9087 IF W0<>VII THEN GOTO 9091
9088 LET WFS=I
9089 GOSUB 9095
9090 LET I$=W$(WN+WF, TO III)+I$+")"
9091 IF W0=61 THEN LET I$=W$(WN+WF,II TO III)
9092 IF W0=WN THEN LET I$=W$(WN+WF)
9093 RETURN 
9094 LET WB=WB+I
9095 LET W=WDIS
9096 IF W<F7 THEN GOTO 9098
9097 LET W=W-F8
9098 IF NOT WFK THEN LET W=W+II
9099 IF W>=Z0 THEN LET I$="+"+STR$ W
9100 IF W<Z0 THEN LET I$=STR$ W
9101 IF B$( TO II)="JR" OR B$( TO II)="DJ" THEN LET WV=WIA+W
9102 RETURN 
9103 PRINT "ERROR AT ";WIA;". ",
9104 FOR J=Z0 TO III
9105 PRINT PEEK (WIA+J);" ";
9106 NEXT J
9107 PRINT 
9108 GOTO 9004
9120 REM %W%C%O%D
9121 CLS 
9122 PRINT ,," T$(345,3) TABLE FOR DECODING","MOST Z80 INSTRUCTIONS.",,,"N   VALUES      INTERPRETATION",,,
9123 FOR N=I TO 345
9124 PRINT N;" ";
9125 FOR K=I TO III
9126 PRINT CODE T$(N,K);" ";
9127 NEXT K
9128 PRINT ,
9129 FOR K=I TO III
9130 PRINT W$(CODE T$(N,K));" ";
9131 NEXT K
9132 PRINT 
9133 NEXT N
9134 STOP 
9135 REM %W%S%T%R
9136 CLS 
9137 PRINT ,," W$(120,4) ARRAY FOR MNEMONICS.",,,
9138 FOR N=I TO 120
9139 PRINT TAB VI;"W$(";N;")=","""";W$(N);""""
9140 NEXT N
9141 STOP 
9142 GOTO WCOD
9200 REM %E%D%I%T
9201 CLS 
9202 LET L=9228
9203 LET M=9317
9206 PRINT ,,"% %M%A%C%H%I%N%E% %L%A%N%G%U%A%G%E% %E%D%I%T%O%R% ",,,"WHERE ABOVE 16759?  START ";
9207 INPUT B
9208 PRINT B,"SELECT BY NO."
9209 FOR N=VI TO F4+I
9210 PRINT AT N,F4;"                "
9211 NEXT N
9212 PRINT AT IV,XX;"NOW   ";B
9213 PRINT ,," 1 SINGLE BYTE",," 2 DOUBLE BYTE",," 3 LD HL,(NN)",," 4 LD (NN),HL",," 5 PUSH SEQ",," 6 LD (NN),BC",," 7 LD BC,(NN)",," 8 LD (NN),DE",," 9 LD DE,(NN)",,"10 SBC HL,BC",,"11 ADC HL,BC",,"12 SBC HL,DE",,"13 ADC HL,DE",,"14 JUMPS",,"15 %Q%U%I%T"
9214 INPUT N
9215 IF N<I OR N>F4-II THEN GOTO M
9216 PRINT AT N+FIV,F4;"% "
9217 GOTO L-F4+VI*N
9218 INPUT K
9219 IF K<0 OR K>FF THEN GOTO M
9220 POKE B,K
9221 LET B=B+I
9222 GOTO 9209
9224 INPUT K
9225 IF K<0 OR K>=F8*F8 THEN GOTO M
9226 POKE B+I,INT (K/F8)
9227 POKE B,K-F8*INT (K/F8)
9228 LET B=B+II
9229 GOTO 9209
9236 POKE B,XXX+N
9237 LET B=B+I
9238 GOTO L-IV
9242 POKE B,245
9243 POKE B+I,213
9244 POKE B+II,229
9245 LET B=B+I
9246 GOTO L
9266 POKE B,237  
9267 POKE B+I,XX-I+VIII*N  
9268 LET B=B+II
9269 GOTO L-IV
9290 POKE B,237  
9291 POKE B+I,VIII*N-F4+II  
9292 GOTO L
9296 PRINT AT F4,F4;"JUMP TO?"
9297 INPUT N
9298 IF N<16760 OR N>=F8*F8 THEN GOTO M
9299 LET W=(B-N)>F7+I OR B-N<-F7+II
9300 PRINT AT VI,F4;"WHICH CONDITION?",AT VIII,F4;" 1 DJNZ",AT IX,F4;" 2 NONE",AT TEN,F4;" 3 NZ",AT TEN+I,F4;" 4  Z",AT VI+VI,F4;" 5 NC",AT IX+IV,F4;" 6  C",AT F4-II,F4;" 7 PO",AT F4-I,F4;" 8 PE",AT F4,F4;" 9  P   ",AT F4+I,F4;"10  M"   
9301 INPUT S
9302 IF S<I OR S>TEN THEN GOTO M
9303 IF W OR S>VI THEN GOTO 9309
9304 LET N=N-B-II
9305 IF N>=F7 THEN LET N=F7-N
9306 POKE B,VIII+VIII*S
9307 POKE B+I,N
9308 GOTO L
9309 IF S=I THEN GOTO M
9310 POKE B,170+VIII*S
9311 IF S=II THEN POKE B,195
9312 LET B=B+I
9313 LET P3=INT (N/F8)
9314 POKE B,N-F8*P3
9315 POKE B+I,P3
9316 GOTO L
9317 CLS 
9318 PRINT AT IX,Z0;"%Q%U%I%T OR AN ERROR HAS OCCURRED.  THE LAST LOCATION WAS ";B;".","CONTINUE FOR DISASSEMBLER."
9319 STOP 
9320 GOTO DISA
9449 REM %S%E%A%R%C%H
9450 CLS 
9451 LET Q=Z0
9452 LET E=I
9453 PRINT ,,"OBJECTIVE/TITLE?",
9454 INPUT G$
9455 PRINT AT I,Z0;G$;"                ";AT II,Z0;"PRINT? %YES OR %NO",
9456 LET W=Z0
9457 INPUT H$
9458 IF LEN H$ THEN IF H$(I)="Y" THEN LET W=I
9459 PRINT AT II,Z0;"INPUT YOUR CODE          ",
9460 INPUT L
9461 IF L>FF THEN GOTO 9481
9462 PRINT AT II,Z0;"IF DOUBLE BYTE, ENTER ""D"""
9463 INPUT H$
9464 IF LEN H$ THEN IF H$(I)="D" THEN GOTO 9481
9465 POKE 17015+E,L
9466 LET E=E+I
9467 PRINT AT II,Z0;"ANOTHER ENTRY? %YES OR %NO",
9468 INPUT H$
9469 IF LEN H$ THEN IF H$(I)="Y" THEN GOTO 9459
9470 CLS 
9471 IF NOT W THEN PRINT ,,G$
9472 IF W THEN LPRINT G$
9473 POKE 17125,E-I
9474 LET K=USR 16860
9475 GOTO 9477
9476 LET K=USR 16809
9477 LET Q=Q+I
9478 IF K=55555 THEN GOTO 9486
9479 GOSUB 9490+II*W
9480 GOTO 9476
9481 LET P2=INT (L/F8+II**-IX)
9482 POKE 17016+E,P2
9483 POKE 17015+E,L-F8*P2
9484 LET E=E+II
9485 GOTO 9467
9486 IF NOT W THEN PRINT "$";Q-I
9487 IF W THEN LPRINT "$";Q-I
9488 STOP 
9489 GOTO SEARCH
9490 PRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9491 RETURN 
9492 LPRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9493 RETURN 
9499 STOP 
9500 REM %V%L%S%T
9501 CLS 
9502 PRINT ,,,,"   %V%A%R%I%A%B%L%E%S",,,
9503 LET E=16400
9504 GOSUB DB
9505 LET L=E-I
9506 LET T=Z0
9507 LET T=T+I
9508 LET L=L+I
9509 LET B=L
9510 IF LEN H$>I THEN IF H$( TO II)="H$" THEN GOSUB VLST+XX
9511 LET CH=PEEK L
9512 PRINT TAB III-LEN STR$ T;T;" ";
9512 LET TP=INT (CH/F5)
9514 LET CH=CH-TP*F5+F5
9515 LET H$=CHR$ CH
9516 GOSUB VLST-F5+F5*TP
9517 LET E=TP=II OR TP=VI
9518 IF E THEN PRINT H$;TAB XX+VI;B
9519 IF NOT E THEN PRINT H$;TAB XX+III-LEN STR$ Q;Q;TAB XX+VI;B
9520 GOTO VLST+VI
9521 PRINT ,,"   %E%N%D% %O%F% %L%I%S%T ";L
9522 LET H$="***"
9523 STOP 
9524 GOTO VLST
9532 REM %S%T%R%I%N%G
9533 LET H$=H$+"$ "
9534 LET E=L+I
9535 GOSUB DB
9536 FOR Q=I TO (E AND E<F4)+(F4 AND E>=F4)
9537 LET H$=H$+CHR$ PEEK (L+II+Q)
9538 NEXT Q
9539 LET L=L+II+E
9540 RETURN 
9564 REM %S%I%N%G%L
9565 LET Q=VAL H$
9566 LET L=L+FIV
9567 RETURN 
9596 REM %N%(%)
9597 LET H$=H$+"("
9598 LET I$=H$
9599 LET S=PEEK (L+III)
9600 FOR Q=I TO S
9601 LET E=L+II+II*Q
9602 GOSUB DB
9603 IF Q>=S THEN GOTO VLST+105
9604 LET H$=H$+STR$ E+","
9605 LET I$=I$+"1,"
9606 NEXT Q
9607 LET H$=H$+STR$ E+")"
9608 LET I$=I$+"1)"
9609 LET Q=VAL I$
9610 LET E=L+I
9611 GOSUB DB
9612 LET L=L+II+E
9613 RETURN 
9628 REM %M%U%L%T
9629 LET L=L+I
9630 LET CH=PEEK L
9631 IF INT (CH/F6)=II THEN GOTO VLST+133
9632 LET H$=H$+CHR$ CH
9633 GOTO VLST+F7
9634 LET H$=H$+CHR$ (CH-F7)
9635 LET Q=VAL H$
9636 LET L=L+FIV
9637 RETURN 
9660 REM %$%(%)
9661 LET H$=H$+"$("
9662 LET S=PEEK (L+III)
9663 FOR Q=I TO S
9664 LET E=L+II+II*Q
9665 GOSUB DB
9666 IF Q>=S THEN GOTO VLST+168
9667 LET H$=H$+STR$ E+","
9668 NEXT Q
9669 LET H$=H$+STR$ E+")"
9670 LET E=L+VI
9671 LET U=L+III+II*S
9672 GOSUB DB
9674 FOR Q=U TO U+(E AND E<F4)+(F4 AND E>=F4)
9675 LET H$=H$+CHR$ PEEK Q
9676 NEXT Q
9677 GOTO VLST+109
9692 REM %F%-%N
9693 LET Q=VAL H$
9694 LET H$=H$+" FOR-NEXT"
9695 LET L=L+XX-III
9696 RETURN 
9697 REM %D%T%B
9698 FOR J=LEN I$ TO I STEP -I
9699 IF I$(J)=" " THEN NEXT J
9700 LET I$=I$( TO J)
9701 RETURN 
9702 REM %D%B
9703 LET E=F8*PEEK (E+I)+PEEK E
9704 RETURN 
9705 REM %S%R%C%H
9706 CLS 
9707 PRINT AT IX,I;"WRITE YOUR STRING WITHOUT LINE NUMBER.  ADD A QUOTE AND PRECEDESTRING WITH",,,," LET H$=""",,,," THEN ENTER AND CONTINUE."
9708 LET E=17116
9709 STOP 
9710 POKE E+IX,LEN H$
9711 POKE E-I,247
9712 POKE E,66
9713 LET K=PEEK 16396+F8*PEEK 16397-17143
9714 LET S=INT (K/F8)
9715 LET K=K-F8*S
9716 POKE E+III,K
9717 POKE E+IV,S
9718 FOR E=I TO LEN H$
9719 POKE (E+17015),CODE H$(E)
9720 NEXT E
9721 CLS 
9722 PRINT ,,"""";H$;"""";TAB Z0;,,
9723 LET K=USR 16809
9724 IF K=55555 THEN GOTO 9740
9727 LET Q=K
9728 LET Q=Q-I
9729 IF PEEK Q<>118 THEN GOTO 9728
9730 IF K-Q<IV THEN GOTO 9723
9732 LET E=F8*PEEK (Q+I)+PEEK (Q+II)
9733 LET K=F8*PEEK (Q+IV)+PEEK (Q+III)
9734 LET I$=""
9735 FOR Q=Q+FIV TO Q+III+K
9736 LET I$=I$+CHR$ PEEK Q
9737 NEXT Q
9738 PRINT E;TAB FIV;I$
9739 GOTO 9723
9740 PRINT ,,"  % %S%E%A%R%C%H% %C%O%M%P%L%E%T%E% "
9741 STOP 
9742 GOTO 9706
9750 REM %S%P%Y
9751 PRINT AT XX+I,Z0;"LOOK AT NO./%QUIT/%HIGHER/%L0WER"
9752 INPUT H$
9753 IF H$<>"Q" THEN GOTO 9755
9754 STOP 
9755 IF H$<>"H" THEN GOTO 9758
9756 LET B=B+F4
9757 GOTO 9762
9758 IF H$<>"L" THEN GOTO 9761
9759 LET B=B-F4
9760 GOTO 9762
9761 LET B=VAL H$
9762 CLS 
9763 FOR E=B TO B+XX+I
9764 PRINT E;TAB VI;PEEK E;TAB TEN;":";CHR$ PEEK E;":";TAB XX;F8*PEEK (E+I)+PEEK E
9765 NEXT E
9766 GOTO 9752
9800 REM %P%U%R%G
9801 LET N(1)=USR 16900
9802 REM %I%N%I%T%I%A%L%I%Z%A%T%I%O%N%S
9810 LET I=1
9811 LET Z0=I-I
9812 LET II=I+I
9813 LET III=II+I
9814 LET IV=II+II
9815 LET FIV=IV+I
9816 LET VI=IV+II
9817 LET VII=VI+I
9818 LET VIII=IV+IV
9819 LET IX=VIII+I
9820 LET TEN=IX+I
9821 LET XX=II*TEN
9822 LET XXX=30
9823 LET F4=II*VIII
9824 LET F5=II*F4
9825 LET F6=II*F5
9826 LET F7=II*F6
9827 LET F8=256
9828 LET FF=F8-I
9829 LET IK=I/F8/F8
9840 REM %K%E%Y%S
9841 LET VLST=9501
9842 LET DB=9703
9843 LET PURG=9801
9844 LET MEM=9916
9845 LET ZZ=9953
9846 LET ZZZ=ZZ-I
9847 LET ZZZZ=ZZ-II
9848 LET SAVE=9900
9849 LET SYSV=9928
9850 LET MAP=8101
9851 LET SEARCH=9450
9852 LET SRCH=9706
9853 LET HELP=9961
9854 LET SPY=9751
9855 LET DISA=9000
9856 LET ERR=9103
9857 LET DTB=9698
9858 LET WCOD=9121
9859 LET WSTR=9136
9860 LET NTRY=HELP
9861 LET EDIT=9201
9892 CLS 
9893 PRINT ,,,,"* TO DELETE STRINGS AND ARRAYS, REDIMENSION THEM TO ZERO."
9894 PRINT ,,"   DIM (NAME)$(0)  OR"
9895 PRINT ,,"   DIM (NAME)(0)"
9896 PRINT ,,"   THIS WILL PULL ERROR 3/0 BUT"," THE JOB IS DONE."
9897 STOP 
9898 GOTO VLST
9899 REM %S%A%V%E
9900 CLS 
9901 PRINT ,,,,"""";Z$;""" IS TO BE SAVED.",,,"START RECORDER.  PRESS ANY KEY.",,,Q$,,
9902 PRINT "MODE IS ";"LOOPING" AND NOT (NTRY-SAVE);"HELP" AND NOT (NTRY-HELP);"LOAD-AND-GO" AND NOT (NTRY-1000)
9903 SLOW 
9904 IF NTRY<>SAVE THEN PAUSE 40000
9905 FOR N=F6 TO I STEP -I
9906 UNPLOT N-I,XXX
9907 NEXT N
9908 SAVE Z$
9909 FAST 
9910 CLS 
9911 PRINT Y$;X$
9912 PRINT AT IX+VI,VII;"PRESENTS***"
9913 GOSUB ZZZ
9914 GOTO NTRY
9915 REM %M%E%M
9916 LET L=F8*(PEEK 16387-PEEK 16413)+PEEK 16386-PEEK 16412
9917 LET E=INT (L/F5/F5)
9918 PRINT AT IX,Z0;"MEMORY LEFT IS:";E;" K, ";L-F5*F5*E;" BYTES.",,,"(";L;" BYTES)"
9919 IF L<F8+XX THEN PRINT ,,"CAUTION: LIST EDITING MAY BE IMPAIRED."
9920 STOP 
9921 GOTO MAP
9927 REM %S%Y%S%V
9928 LET E=II*CODE D$-75
9929 IF E<I OR E>13 THEN GOTO 9933
9930 LET E$="10141824260002"
9931 LET E=VAL E$(E TO E+I)+16386
9932 LET D$=STR$ (F8*PEEK (E+I)+PEEK E)
9933 RETURN 
9950 REM %S%L%E%E%P
9951 LET ZZ=ZZ+F8
9952 LET ZZ=ZZ+F7
9953 LET ZZ=ZZ+F6
9954 LET ZZ=ZZ+F5
9955 LET E=ZZ-ZZZ+F5
9956 LET ZZ=ZZZ+I
9957 PAUSE E
9958 POKE 16437,FF
9959 RETURN 
9960 REM %H%E%L%P
9961 CLS 
9962 LET PAGE=I
9963 LET H$="% %H%E%L%P%  PAGE "
9964 PRINT AT I,IX;H$;PAGE
9965 PRINT ,,"* USE GOTO FOR DESIRED LOCATION,",,"* LET Z$=""(YOUR PROGRAM NAME)""",,,"* LET NTRY=1000 IF YOU WANT YOUR PROGRAM TO RUN AFTER LOADING." 
9966 PRINT ,,"* Z$=""";Z$;""""
9967 LET I$="% %K%E%Y%W%O%R%D% %L%I%N%E% %F%U%N%C%T%I%O%N% "
9968 PRINT ,,I$,"""HELP""   9960 HERE.","""VLST""   9500 VARIABLE LIST.","""MEM""    9915 AVAILABLE MEMORY. ""SAVE""   9900 SAVE PROGRAM,"
9969 PRINT """NTRY""   HELP UNLESS CHANGED."
9970 PRINT """PURG""   9800 DELETE VARIABLES."
9971 PRINT """MAP""    8100 MEMORY MAP."
9972 PRINT """SPY""    9750 LOOK AT MEMORY."
9973 PRINT """DISA""   9000 DISASSEMBLE."
9974 LET PAGE=II
9975 PRINT 
9976 CLS 
9977 PRINT AT I,IX;H$;PAGE,,,I$
9978 PRINT """WCOD""   9120 DECODE TABLE."
9979 PRINT """WSTD""   9135 MNEMONICS."
9980 PRINT """SRCH""   9705 BASIC CODE."
9981 PRINT """SEARCH"" 9450 ROM SPACE."
9982 PRINT """EDIT""   9200 MACH CODE."
9983 PRINT "*""GOTO VLST"" CODES AS:","  :236:V:L:S:T: (5 BYTES)" 
9984 PRINT "*""GOTO 9500"" CODES AS:","  :235:9:5:0:0:126:EXP:B4:B3:B2:B1:B0: (12 BYTES)"
9985 PRINT "* USING VARIABLES IN PLACE OF   NUMBERS CAN SAVE MEMORY."
9986 PRINT "* USE:Z0,I,II,III,IV,FIV,VI,VII,VIII,IX,TEN,XX,XXX IN PLACE OF:0,1,2,3,4,5,6,7,8,9,10,20,30."
9987 PRINT "* LIST 9802 TO SEE."
9988 STOP 
9989 GOTO HELP
9997 REM %M%/%L% %C%0%D%E% %T%E%M%P%L%A%T%E%S
9998 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.......   /\.'
9999 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.........1.......   /\.'
Scroll to Top
E

Super Utility

Products: Super Utility
Developer(s): William J. Pedersen
Date: 1983
Type: Cassette
Platform(s): TS 1000

Utility for working with machine language programs and memory.

Content

Appears On

Related Products

Utility for working with machine language programs and memory.

Related Articles

Related Content

Image Gallery

Super Utility

Source Code

   1 REM %U%T%I%L%I%T%Y
   2 REM *************
   3 REM COPYRIGHT NOV 14, 1983 BY WILLIAM J. PEDERSEN. 1120 MERRIFIELD S.E., GRAND RAPIDS, MICHIGAN  49507
   4 REM REPRODUCTION OR USE OF THIS PROGRAM IS PROHIBITED WITHOUT EXPRESS WRITTEN PERMISSION.
   5 REM *************
   7 REM \7E\E6\E0\FE\C0\28\0E\F2\99\41\FE\80\28\07\F2\A2\41\FE\60\28\10\23\22\93\41\ED\5B\93\7B\19\23\23\C9\11\0C\00\19\11\06\00\19\C9\23\CB\7E\28\FB\18\F4\F5\D5\E5\2A\DB\42\ED\4B\DF\42\ED\5B\E7\42\1A\ED\B1\20\1B\22\DB\42\ED\43\DF\42\2B\ED\4B\E5\42\1A\ED\A1\20\DF\13\EA\C8\41\ED\4B\DB\42\18\21\01\03\D9\18\1C\F5\D5\E5\21\00\00\22\DB\42\21\FF\1F\22\DF\42\18\BF\00\00\D9\18\06
   8 REM \E1\D1\FD\2A\00\40\3E\1E\ED\47\F1\C9\F5\D5\E5\2A\10\40\22\DB\42\3E\80\BE\28\E6\CB\6E\F5\CD\78\41\22\DD\42\F1\20\08\2A\DD\42\22\DB\42\18\E7\CD\2E\42\2A\DB\42\18\DF\2A\DB\42\E5\ED\5B\DD\42\D5\AF\ED\52\EB\2A\1C\40\19\22\1C\40\2A\1A\40\19\22\1A\40\2A\14\40\E5\19\22\14\40\E1\D1\AF\ED\52\E5\C1\03\2A\DB\42\EB\ED\B0\E1\C9\1B\1B\1B\1B\1D\1B\1B\1B\1B\1B\1B\00\00\00\00\18\06
   9 REM \DC\07\F2\03\D9\FA\9C\AD\EA\78\42\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\57\1B\95\7B\A8\04\1B\1B\1B\1B\02\00\78\42\1B\1B\1B\1B\1B\1B\1E\1B\1B
8100 REM %M%A%P
8101 CLS 
8102 PRINT ,,"    % %M%E%M%O%R%Y% %M%A%P%  ";Z$
8103 LET G$="\##\##%P\:.\'.\':%V\:'\..\':%U%U\.'\.'1638420479204802457524576286712867232767ABCEFG0 PROGRAM =VARIABLES=AVAIL MEM=RAMTOP UP="
8104 LET H$="16509"
8105 LET Q=1
8106 LET S=37
8107 LET I$=CHR$ S
8108 FOR K=IV TO XX-I STEP FIV
8109 LET T=II*K+VII
8110 LET L=53.4+II*K/FIV
8111 LET D$=H$
8112 GOSUB SYSV
8113 LET TT=VAL D$
8114 LET D$=G$(L)
8115 GOSUB SYSV
8116 LET QQ=VAL D$
8117 IF QQ=Z0 THEN LET QQ=32768
8118 LET LL=54+II*K
8119 PRINT AT K-I,Z0;G$(LL TO LL+IX);QQ-TT;" BYTES."
8120 LET H$=G$(L+I)
8121 FOR N=Z0 TO 31
8122 PRINT AT K,N;G$(Q);
8123 LET B=13107.2+F7*N+819.2*K
8124 LET D$=I$
8125 GOSUB SYSV
8126 LET BB=VAL D$
8127 IF BB-B<F6 THEN PRINT AT K,N;G$(Q+I);
8128 IF BB>B+F7 THEN GOTO 8137
8129 LET Q=Q+II
8130 LET S=S+I
8131 LET D$=CHR$ S
8132 GOSUB SYSV
8133 LET I$=D$
8134 IF LEN I$<II THEN LET I$="65536"
8135 IF VAL I$>B+F7 THEN GOTO 8137
8136 GOTO 8130
8137 NEXT N
8138 PRINT G$(T TO T+IV);TAB 27;G$(T+FIV TO T+IX)
8139 NEXT K
8140 STOP 
8141 GOTO HELP
8999 REM % %D%I%S%A%S%S%E%M%B%L%E%R% 
9000 PRINT AT XX,Z0;"DISASSEMBLE STARTING WHERE?"
9001 INPUT WB
9002 CLS 
9003 LET WL=Z0
9004 LET WIA=WB
9005 LET WFS=Z0
9006 LET WFN=I
9007 LET WFK=Z0
9008 LET WF=Z0
9009 LET WFW=Z0
9010 LET WV=Z0
9011 LET G$=""
9012 LET WN=112
9013 LET WL=WL+I
9014 LET WP=PEEK WB
9015 IF WP<>221 AND WP<>253 THEN GOTO 9021
9016 IF WFK THEN GOTO ERR
9017 LET WF=I+(I AND WP=253)
9018 LET WFK=I
9019 LET WB=WB+I
9020 GOTO 9014
9021 IF WP<>203 THEN GOTO 9034
9022 LET WFN=Z0
9023 LET WJ=345
9024 LET WB=WB+I+WFK
9025 LET WP=PEEK WB
9026 LET W1=INT (WP/F6)
9027 LET W=WP-F6*W1
9028 LET W2=INT (W/VIII)
9029 LET W=W-VIII*W2
9030 IF WFK AND W<>VI THEN GOTO ERR
9031 IF W1 THEN LET T$(WJ)=CHR$ (97+W1)+CHR$ (F4+I+W2)+CHR$ (W+I)
9032 IF NOT W1 THEN LET T$(WJ)=CHR$ (49+W2)+CHR$ (W+I)+CHR$ 97
9033 GOTO 9042
9034 LET WJ=I+PEEK WB
9035 LET WW=Z0
9036 IF WP<>237 THEN GOTO 9040
9037 LET WB=WB+I
9038 LET WW=PEEK WB
9039 LET WJ=193+WW-(36 AND WW>159)
9040 IF WW>123 AND WW<160 OR WJ>344 THEN GOTO ERR
9041 LET WDIS=PEEK (WB+I)
9042 LET V$=""
9043 LET W0=CODE T$(WJ,I)
9044 IF W0=WN+IV THEN GOTO ERR
9045 IF W0<>WN-IV THEN GOTO 9048
9046 LET WV=VAL (W$(CODE T$(WJ,II)))
9047 LET G$=" "
9048 GOSUB 9066
9049 LET B$=I$+" "
9050 LET W0=CODE T$(WJ,II)
9051 GOSUB 9066
9052 IF I$="" THEN GOTO 9063
9053 IF WP=211 THEN LET I$="(N)"
9054 LET B$=B$+I$
9055 LET W0=CODE T$(WJ,III)
9056 GOSUB 9066
9057 IF I$="" THEN GOTO 9060
9058 IF WP=219 THEN LET I$="(N)"
9059 LET B$=B$+","+I$
9060 IF WFK AND NOT WFW THEN GOTO ERR
9061 LET V$=STR$ WV
9062 IF NOT LEN G$ AND WV=Z0 THEN LET V$=""
9063 PRINT WIA;TAB VI;B$;TAB XX-I;V$+G$
9064 LET WB=WB+I+WFS*WFN
9065 GOTO 9004
9066 LET I$=W$(W0)
9067 GOSUB DTB
9068 IF W0=WN+FIV THEN GOSUB 9094
9069 IF W0<>WN+VI THEN GOTO 9075
9070 LET WB=WB+WFK+I
9071 LET WFN=Z0
9072 LET WV=PEEK WB
9073 IF WP=211 OR WP=219 THEN GOTO 9078
9074 LET G$=":"+CHR$ WV+":"
9075 IF WV>=F5 THEN GOTO 9078
9076 LET W=F4+I+III*WV
9078 IF W0<WN+VII THEN GOTO 9085
9079 LET WB=WB+II
9080 LET G$=" "
9081 LET WFN=Z0
9082 LET E=WB-I
9083 GOSUB DB
9084 LET WV=E
9085 IF NOT WFK THEN GOTO 9092
9086 IF W0=VII OR W0=61 OR W0=WN THEN LET WFW=I
9087 IF W0<>VII THEN GOTO 9091
9088 LET WFS=I
9089 GOSUB 9095
9090 LET I$=W$(WN+WF, TO III)+I$+")"
9091 IF W0=61 THEN LET I$=W$(WN+WF,II TO III)
9092 IF W0=WN THEN LET I$=W$(WN+WF)
9093 RETURN 
9094 LET WB=WB+I
9095 LET W=WDIS
9096 IF W<F7 THEN GOTO 9098
9097 LET W=W-F8
9098 IF NOT WFK THEN LET W=W+II
9099 IF W>=Z0 THEN LET I$="+"+STR$ W
9100 IF W<Z0 THEN LET I$=STR$ W
9101 IF B$( TO II)="JR" OR B$( TO II)="DJ" THEN LET WV=WIA+W
9102 RETURN 
9103 PRINT "ERROR AT ";WIA;". ",
9104 FOR J=Z0 TO III
9105 PRINT PEEK (WIA+J);" ";
9106 NEXT J
9107 PRINT 
9108 GOTO 9004
9120 REM %W%C%O%D
9121 CLS 
9122 PRINT ,," T$(345,3) TABLE FOR DECODING","MOST Z80 INSTRUCTIONS.",,,"N   VALUES      INTERPRETATION",,,
9123 FOR N=I TO 345
9124 PRINT N;" ";
9125 FOR K=I TO III
9126 PRINT CODE T$(N,K);" ";
9127 NEXT K
9128 PRINT ,
9129 FOR K=I TO III
9130 PRINT W$(CODE T$(N,K));" ";
9131 NEXT K
9132 PRINT 
9133 NEXT N
9134 STOP 
9135 REM %W%S%T%R
9136 CLS 
9137 PRINT ,," W$(120,4) ARRAY FOR MNEMONICS.",,,
9138 FOR N=I TO 120
9139 PRINT TAB VI;"W$(";N;")=","""";W$(N);""""
9140 NEXT N
9141 STOP 
9142 GOTO WCOD
9200 REM %E%D%I%T
9201 CLS 
9202 LET L=9228
9203 LET M=9317
9206 PRINT ,,"% %M%A%C%H%I%N%E% %L%A%N%G%U%A%G%E% %E%D%I%T%O%R% ",,,"WHERE ABOVE 16759?  START ";
9207 INPUT B
9208 PRINT B,"SELECT BY NO."
9209 FOR N=VI TO F4+I
9210 PRINT AT N,F4;"                "
9211 NEXT N
9212 PRINT AT IV,XX;"NOW   ";B
9213 PRINT ,," 1 SINGLE BYTE",," 2 DOUBLE BYTE",," 3 LD HL,(NN)",," 4 LD (NN),HL",," 5 PUSH SEQ",," 6 LD (NN),BC",," 7 LD BC,(NN)",," 8 LD (NN),DE",," 9 LD DE,(NN)",,"10 SBC HL,BC",,"11 ADC HL,BC",,"12 SBC HL,DE",,"13 ADC HL,DE",,"14 JUMPS",,"15 %Q%U%I%T"
9214 INPUT N
9215 IF N<I OR N>F4-II THEN GOTO M
9216 PRINT AT N+FIV,F4;"% "
9217 GOTO L-F4+VI*N
9218 INPUT K
9219 IF K<0 OR K>FF THEN GOTO M
9220 POKE B,K
9221 LET B=B+I
9222 GOTO 9209
9224 INPUT K
9225 IF K<0 OR K>=F8*F8 THEN GOTO M
9226 POKE B+I,INT (K/F8)
9227 POKE B,K-F8*INT (K/F8)
9228 LET B=B+II
9229 GOTO 9209
9236 POKE B,XXX+N
9237 LET B=B+I
9238 GOTO L-IV
9242 POKE B,245
9243 POKE B+I,213
9244 POKE B+II,229
9245 LET B=B+I
9246 GOTO L
9266 POKE B,237  
9267 POKE B+I,XX-I+VIII*N  
9268 LET B=B+II
9269 GOTO L-IV
9290 POKE B,237  
9291 POKE B+I,VIII*N-F4+II  
9292 GOTO L
9296 PRINT AT F4,F4;"JUMP TO?"
9297 INPUT N
9298 IF N<16760 OR N>=F8*F8 THEN GOTO M
9299 LET W=(B-N)>F7+I OR B-N<-F7+II
9300 PRINT AT VI,F4;"WHICH CONDITION?",AT VIII,F4;" 1 DJNZ",AT IX,F4;" 2 NONE",AT TEN,F4;" 3 NZ",AT TEN+I,F4;" 4  Z",AT VI+VI,F4;" 5 NC",AT IX+IV,F4;" 6  C",AT F4-II,F4;" 7 PO",AT F4-I,F4;" 8 PE",AT F4,F4;" 9  P   ",AT F4+I,F4;"10  M"   
9301 INPUT S
9302 IF S<I OR S>TEN THEN GOTO M
9303 IF W OR S>VI THEN GOTO 9309
9304 LET N=N-B-II
9305 IF N>=F7 THEN LET N=F7-N
9306 POKE B,VIII+VIII*S
9307 POKE B+I,N
9308 GOTO L
9309 IF S=I THEN GOTO M
9310 POKE B,170+VIII*S
9311 IF S=II THEN POKE B,195
9312 LET B=B+I
9313 LET P3=INT (N/F8)
9314 POKE B,N-F8*P3
9315 POKE B+I,P3
9316 GOTO L
9317 CLS 
9318 PRINT AT IX,Z0;"%Q%U%I%T OR AN ERROR HAS OCCURRED.  THE LAST LOCATION WAS ";B;".","CONTINUE FOR DISASSEMBLER."
9319 STOP 
9320 GOTO DISA
9449 REM %S%E%A%R%C%H
9450 CLS 
9451 LET Q=Z0
9452 LET E=I
9453 PRINT ,,"OBJECTIVE/TITLE?",
9454 INPUT G$
9455 PRINT AT I,Z0;G$;"                ";AT II,Z0;"PRINT? %YES OR %NO",
9456 LET W=Z0
9457 INPUT H$
9458 IF LEN H$ THEN IF H$(I)="Y" THEN LET W=I
9459 PRINT AT II,Z0;"INPUT YOUR CODE          ",
9460 INPUT L
9461 IF L>FF THEN GOTO 9481
9462 PRINT AT II,Z0;"IF DOUBLE BYTE, ENTER ""D"""
9463 INPUT H$
9464 IF LEN H$ THEN IF H$(I)="D" THEN GOTO 9481
9465 POKE 17015+E,L
9466 LET E=E+I
9467 PRINT AT II,Z0;"ANOTHER ENTRY? %YES OR %NO",
9468 INPUT H$
9469 IF LEN H$ THEN IF H$(I)="Y" THEN GOTO 9459
9470 CLS 
9471 IF NOT W THEN PRINT ,,G$
9472 IF W THEN LPRINT G$
9473 POKE 17125,E-I
9474 LET K=USR 16860
9475 GOTO 9477
9476 LET K=USR 16809
9477 LET Q=Q+I
9478 IF K=55555 THEN GOTO 9486
9479 GOSUB 9490+II*W
9480 GOTO 9476
9481 LET P2=INT (L/F8+II**-IX)
9482 POKE 17016+E,P2
9483 POKE 17015+E,L-F8*P2
9484 LET E=E+II
9485 GOTO 9467
9486 IF NOT W THEN PRINT "$";Q-I
9487 IF W THEN LPRINT "$";Q-I
9488 STOP 
9489 GOTO SEARCH
9490 PRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9491 RETURN 
9492 LPRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9493 RETURN 
9499 STOP 
9500 REM %V%L%S%T
9501 CLS 
9502 PRINT ,,,,"   %V%A%R%I%A%B%L%E%S",,,
9503 LET E=16400
9504 GOSUB DB
9505 LET L=E-I
9506 LET T=Z0
9507 LET T=T+I
9508 LET L=L+I
9509 LET B=L
9510 IF LEN H$>I THEN IF H$( TO II)="H$" THEN GOSUB VLST+XX
9511 LET CH=PEEK L
9512 PRINT TAB III-LEN STR$ T;T;" ";
9512 LET TP=INT (CH/F5)
9514 LET CH=CH-TP*F5+F5
9515 LET H$=CHR$ CH
9516 GOSUB VLST-F5+F5*TP
9517 LET E=TP=II OR TP=VI
9518 IF E THEN PRINT H$;TAB XX+VI;B
9519 IF NOT E THEN PRINT H$;TAB XX+III-LEN STR$ Q;Q;TAB XX+VI;B
9520 GOTO VLST+VI
9521 PRINT ,,"   %E%N%D% %O%F% %L%I%S%T ";L
9522 LET H$="***"
9523 STOP 
9524 GOTO VLST
9532 REM %S%T%R%I%N%G
9533 LET H$=H$+"$ "
9534 LET E=L+I
9535 GOSUB DB
9536 FOR Q=I TO (E AND E<F4)+(F4 AND E>=F4)
9537 LET H$=H$+CHR$ PEEK (L+II+Q)
9538 NEXT Q
9539 LET L=L+II+E
9540 RETURN 
9564 REM %S%I%N%G%L
9565 LET Q=VAL H$
9566 LET L=L+FIV
9567 RETURN 
9596 REM %N%(%)
9597 LET H$=H$+"("
9598 LET I$=H$
9599 LET S=PEEK (L+III)
9600 FOR Q=I TO S
9601 LET E=L+II+II*Q
9602 GOSUB DB
9603 IF Q>=S THEN GOTO VLST+105
9604 LET H$=H$+STR$ E+","
9605 LET I$=I$+"1,"
9606 NEXT Q
9607 LET H$=H$+STR$ E+")"
9608 LET I$=I$+"1)"
9609 LET Q=VAL I$
9610 LET E=L+I
9611 GOSUB DB
9612 LET L=L+II+E
9613 RETURN 
9628 REM %M%U%L%T
9629 LET L=L+I
9630 LET CH=PEEK L
9631 IF INT (CH/F6)=II THEN GOTO VLST+133
9632 LET H$=H$+CHR$ CH
9633 GOTO VLST+F7
9634 LET H$=H$+CHR$ (CH-F7)
9635 LET Q=VAL H$
9636 LET L=L+FIV
9637 RETURN 
9660 REM %$%(%)
9661 LET H$=H$+"$("
9662 LET S=PEEK (L+III)
9663 FOR Q=I TO S
9664 LET E=L+II+II*Q
9665 GOSUB DB
9666 IF Q>=S THEN GOTO VLST+168
9667 LET H$=H$+STR$ E+","
9668 NEXT Q
9669 LET H$=H$+STR$ E+")"
9670 LET E=L+VI
9671 LET U=L+III+II*S
9672 GOSUB DB
9674 FOR Q=U TO U+(E AND E<F4)+(F4 AND E>=F4)
9675 LET H$=H$+CHR$ PEEK Q
9676 NEXT Q
9677 GOTO VLST+109
9692 REM %F%-%N
9693 LET Q=VAL H$
9694 LET H$=H$+" FOR-NEXT"
9695 LET L=L+XX-III
9696 RETURN 
9697 REM %D%T%B
9698 FOR J=LEN I$ TO I STEP -I
9699 IF I$(J)=" " THEN NEXT J
9700 LET I$=I$( TO J)
9701 RETURN 
9702 REM %D%B
9703 LET E=F8*PEEK (E+I)+PEEK E
9704 RETURN 
9705 REM %S%R%C%H
9706 CLS 
9707 PRINT AT IX,I;"WRITE YOUR STRING WITHOUT LINE NUMBER.  ADD A QUOTE AND PRECEDESTRING WITH",,,," LET H$=""",,,," THEN ENTER AND CONTINUE."
9708 LET E=17116
9709 STOP 
9710 POKE E+IX,LEN H$
9711 POKE E-I,247
9712 POKE E,66
9713 LET K=PEEK 16396+F8*PEEK 16397-17143
9714 LET S=INT (K/F8)
9715 LET K=K-F8*S
9716 POKE E+III,K
9717 POKE E+IV,S
9718 FOR E=I TO LEN H$
9719 POKE (E+17015),CODE H$(E)
9720 NEXT E
9721 CLS 
9722 PRINT ,,"""";H$;"""";TAB Z0;,,
9723 LET K=USR 16809
9724 IF K=55555 THEN GOTO 9740
9727 LET Q=K
9728 LET Q=Q-I
9729 IF PEEK Q<>118 THEN GOTO 9728
9730 IF K-Q<IV THEN GOTO 9723
9732 LET E=F8*PEEK (Q+I)+PEEK (Q+II)
9733 LET K=F8*PEEK (Q+IV)+PEEK (Q+III)
9734 LET I$=""
9735 FOR Q=Q+FIV TO Q+III+K
9736 LET I$=I$+CHR$ PEEK Q
9737 NEXT Q
9738 PRINT E;TAB FIV;I$
9739 GOTO 9723
9740 PRINT ,,"  % %S%E%A%R%C%H% %C%O%M%P%L%E%T%E% "
9741 STOP 
9742 GOTO 9706
9750 REM %S%P%Y
9751 PRINT AT XX+I,Z0;"LOOK AT NO./%QUIT/%HIGHER/%L0WER"
9752 INPUT H$
9753 IF H$<>"Q" THEN GOTO 9755
9754 STOP 
9755 IF H$<>"H" THEN GOTO 9758
9756 LET B=B+F4
9757 GOTO 9762
9758 IF H$<>"L" THEN GOTO 9761
9759 LET B=B-F4
9760 GOTO 9762
9761 LET B=VAL H$
9762 CLS 
9763 FOR E=B TO B+XX+I
9764 PRINT E;TAB VI;PEEK E;TAB TEN;":";CHR$ PEEK E;":";TAB XX;F8*PEEK (E+I)+PEEK E
9765 NEXT E
9766 GOTO 9752
9800 REM %P%U%R%G
9801 LET N(1)=USR 16900
9802 REM %I%N%I%T%I%A%L%I%Z%A%T%I%O%N%S
9810 LET I=1
9811 LET Z0=I-I
9812 LET II=I+I
9813 LET III=II+I
9814 LET IV=II+II
9815 LET FIV=IV+I
9816 LET VI=IV+II
9817 LET VII=VI+I
9818 LET VIII=IV+IV
9819 LET IX=VIII+I
9820 LET TEN=IX+I
9821 LET XX=II*TEN
9822 LET XXX=30
9823 LET F4=II*VIII
9824 LET F5=II*F4
9825 LET F6=II*F5
9826 LET F7=II*F6
9827 LET F8=256
9828 LET FF=F8-I
9829 LET IK=I/F8/F8
9840 REM %K%E%Y%S
9841 LET VLST=9501
9842 LET DB=9703
9843 LET PURG=9801
9844 LET MEM=9916
9845 LET ZZ=9953
9846 LET ZZZ=ZZ-I
9847 LET ZZZZ=ZZ-II
9848 LET SAVE=9900
9849 LET SYSV=9928
9850 LET MAP=8101
9851 LET SEARCH=9450
9852 LET SRCH=9706
9853 LET HELP=9961
9854 LET SPY=9751
9855 LET DISA=9000
9856 LET ERR=9103
9857 LET DTB=9698
9858 LET WCOD=9121
9859 LET WSTR=9136
9860 LET NTRY=HELP
9861 LET EDIT=9201
9892 CLS 
9893 PRINT ,,,,"* TO DELETE STRINGS AND ARRAYS, REDIMENSION THEM TO ZERO."
9894 PRINT ,,"   DIM (NAME)$(0)  OR"
9895 PRINT ,,"   DIM (NAME)(0)"
9896 PRINT ,,"   THIS WILL PULL ERROR 3/0 BUT"," THE JOB IS DONE."
9897 STOP 
9898 GOTO VLST
9899 REM %S%A%V%E
9900 CLS 
9901 PRINT ,,,,"""";Z$;""" IS TO BE SAVED.",,,"START RECORDER.  PRESS ANY KEY.",,,Q$,,
9902 PRINT "MODE IS ";"LOOPING" AND NOT (NTRY-SAVE);"HELP" AND NOT (NTRY-HELP);"LOAD-AND-GO" AND NOT (NTRY-1000)
9903 SLOW 
9904 IF NTRY<>SAVE THEN PAUSE 40000
9905 FOR N=F6 TO I STEP -I
9906 UNPLOT N-I,XXX
9907 NEXT N
9908 SAVE Z$
9909 FAST 
9910 CLS 
9911 PRINT Y$;X$
9912 PRINT AT IX+VI,VII;"PRESENTS***"
9913 GOSUB ZZZ
9914 GOTO NTRY
9915 REM %M%E%M
9916 LET L=F8*(PEEK 16387-PEEK 16413)+PEEK 16386-PEEK 16412
9917 LET E=INT (L/F5/F5)
9918 PRINT AT IX,Z0;"MEMORY LEFT IS:";E;" K, ";L-F5*F5*E;" BYTES.",,,"(";L;" BYTES)"
9919 IF L<F8+XX THEN PRINT ,,"CAUTION: LIST EDITING MAY BE IMPAIRED."
9920 STOP 
9921 GOTO MAP
9927 REM %S%Y%S%V
9928 LET E=II*CODE D$-75
9929 IF E<I OR E>13 THEN GOTO 9933
9930 LET E$="10141824260002"
9931 LET E=VAL E$(E TO E+I)+16386
9932 LET D$=STR$ (F8*PEEK (E+I)+PEEK E)
9933 RETURN 
9950 REM %S%L%E%E%P
9951 LET ZZ=ZZ+F8
9952 LET ZZ=ZZ+F7
9953 LET ZZ=ZZ+F6
9954 LET ZZ=ZZ+F5
9955 LET E=ZZ-ZZZ+F5
9956 LET ZZ=ZZZ+I
9957 PAUSE E
9958 POKE 16437,FF
9959 RETURN 
9960 REM %H%E%L%P
9961 CLS 
9962 LET PAGE=I
9963 LET H$="% %H%E%L%P%  PAGE "
9964 PRINT AT I,IX;H$;PAGE
9965 PRINT ,,"* USE GOTO FOR DESIRED LOCATION,",,"* LET Z$=""(YOUR PROGRAM NAME)""",,,"* LET NTRY=1000 IF YOU WANT YOUR PROGRAM TO RUN AFTER LOADING." 
9966 PRINT ,,"* Z$=""";Z$;""""
9967 LET I$="% %K%E%Y%W%O%R%D% %L%I%N%E% %F%U%N%C%T%I%O%N% "
9968 PRINT ,,I$,"""HELP""   9960 HERE.","""VLST""   9500 VARIABLE LIST.","""MEM""    9915 AVAILABLE MEMORY. ""SAVE""   9900 SAVE PROGRAM,"
9969 PRINT """NTRY""   HELP UNLESS CHANGED."
9970 PRINT """PURG""   9800 DELETE VARIABLES."
9971 PRINT """MAP""    8100 MEMORY MAP."
9972 PRINT """SPY""    9750 LOOK AT MEMORY."
9973 PRINT """DISA""   9000 DISASSEMBLE."
9974 LET PAGE=II
9975 PRINT 
9976 CLS 
9977 PRINT AT I,IX;H$;PAGE,,,I$
9978 PRINT """WCOD""   9120 DECODE TABLE."
9979 PRINT """WSTD""   9135 MNEMONICS."
9980 PRINT """SRCH""   9705 BASIC CODE."
9981 PRINT """SEARCH"" 9450 ROM SPACE."
9982 PRINT """EDIT""   9200 MACH CODE."
9983 PRINT "*""GOTO VLST"" CODES AS:","  :236:V:L:S:T: (5 BYTES)" 
9984 PRINT "*""GOTO 9500"" CODES AS:","  :235:9:5:0:0:126:EXP:B4:B3:B2:B1:B0: (12 BYTES)"
9985 PRINT "* USING VARIABLES IN PLACE OF   NUMBERS CAN SAVE MEMORY."
9986 PRINT "* USE:Z0,I,II,III,IV,FIV,VI,VII,VIII,IX,TEN,XX,XXX IN PLACE OF:0,1,2,3,4,5,6,7,8,9,10,20,30."
9987 PRINT "* LIST 9802 TO SEE."
9988 STOP 
9989 GOTO HELP
9997 REM %M%/%L% %C%0%D%E% %T%E%M%P%L%A%T%E%S
9998 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.......   /\.'
9999 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.........1.......   /\.'
Scroll to Top
A\DB\DF

Super Utility

Products: Super Utility
Developer(s): William J. Pedersen
Date: 1983
Type: Cassette
Platform(s): TS 1000

Utility for working with machine language programs and memory.

Content

Appears On

Related Products

Utility for working with machine language programs and memory.

Related Articles

Related Content

Image Gallery

Super Utility

Source Code

   1 REM %U%T%I%L%I%T%Y
   2 REM *************
   3 REM COPYRIGHT NOV 14, 1983 BY WILLIAM J. PEDERSEN. 1120 MERRIFIELD S.E., GRAND RAPIDS, MICHIGAN  49507
   4 REM REPRODUCTION OR USE OF THIS PROGRAM IS PROHIBITED WITHOUT EXPRESS WRITTEN PERMISSION.
   5 REM *************
   7 REM \7E\E6\E0\FE\C0\28\0E\F2\99\41\FE\80\28\07\F2\A2\41\FE\60\28\10\23\22\93\41\ED\5B\93\7B\19\23\23\C9\11\0C\00\19\11\06\00\19\C9\23\CB\7E\28\FB\18\F4\F5\D5\E5\2A\DB\42\ED\4B\DF\42\ED\5B\E7\42\1A\ED\B1\20\1B\22\DB\42\ED\43\DF\42\2B\ED\4B\E5\42\1A\ED\A1\20\DF\13\EA\C8\41\ED\4B\DB\42\18\21\01\03\D9\18\1C\F5\D5\E5\21\00\00\22\DB\42\21\FF\1F\22\DF\42\18\BF\00\00\D9\18\06
   8 REM \E1\D1\FD\2A\00\40\3E\1E\ED\47\F1\C9\F5\D5\E5\2A\10\40\22\DB\42\3E\80\BE\28\E6\CB\6E\F5\CD\78\41\22\DD\42\F1\20\08\2A\DD\42\22\DB\42\18\E7\CD\2E\42\2A\DB\42\18\DF\2A\DB\42\E5\ED\5B\DD\42\D5\AF\ED\52\EB\2A\1C\40\19\22\1C\40\2A\1A\40\19\22\1A\40\2A\14\40\E5\19\22\14\40\E1\D1\AF\ED\52\E5\C1\03\2A\DB\42\EB\ED\B0\E1\C9\1B\1B\1B\1B\1D\1B\1B\1B\1B\1B\1B\00\00\00\00\18\06
   9 REM \DC\07\F2\03\D9\FA\9C\AD\EA\78\42\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\57\1B\95\7B\A8\04\1B\1B\1B\1B\02\00\78\42\1B\1B\1B\1B\1B\1B\1E\1B\1B
8100 REM %M%A%P
8101 CLS 
8102 PRINT ,,"    % %M%E%M%O%R%Y% %M%A%P%  ";Z$
8103 LET G$="\##\##%P\:.\'.\':%V\:'\..\':%U%U\.'\.'1638420479204802457524576286712867232767ABCEFG0 PROGRAM =VARIABLES=AVAIL MEM=RAMTOP UP="
8104 LET H$="16509"
8105 LET Q=1
8106 LET S=37
8107 LET I$=CHR$ S
8108 FOR K=IV TO XX-I STEP FIV
8109 LET T=II*K+VII
8110 LET L=53.4+II*K/FIV
8111 LET D$=H$
8112 GOSUB SYSV
8113 LET TT=VAL D$
8114 LET D$=G$(L)
8115 GOSUB SYSV
8116 LET QQ=VAL D$
8117 IF QQ=Z0 THEN LET QQ=32768
8118 LET LL=54+II*K
8119 PRINT AT K-I,Z0;G$(LL TO LL+IX);QQ-TT;" BYTES."
8120 LET H$=G$(L+I)
8121 FOR N=Z0 TO 31
8122 PRINT AT K,N;G$(Q);
8123 LET B=13107.2+F7*N+819.2*K
8124 LET D$=I$
8125 GOSUB SYSV
8126 LET BB=VAL D$
8127 IF BB-B<F6 THEN PRINT AT K,N;G$(Q+I);
8128 IF BB>B+F7 THEN GOTO 8137
8129 LET Q=Q+II
8130 LET S=S+I
8131 LET D$=CHR$ S
8132 GOSUB SYSV
8133 LET I$=D$
8134 IF LEN I$<II THEN LET I$="65536"
8135 IF VAL I$>B+F7 THEN GOTO 8137
8136 GOTO 8130
8137 NEXT N
8138 PRINT G$(T TO T+IV);TAB 27;G$(T+FIV TO T+IX)
8139 NEXT K
8140 STOP 
8141 GOTO HELP
8999 REM % %D%I%S%A%S%S%E%M%B%L%E%R% 
9000 PRINT AT XX,Z0;"DISASSEMBLE STARTING WHERE?"
9001 INPUT WB
9002 CLS 
9003 LET WL=Z0
9004 LET WIA=WB
9005 LET WFS=Z0
9006 LET WFN=I
9007 LET WFK=Z0
9008 LET WF=Z0
9009 LET WFW=Z0
9010 LET WV=Z0
9011 LET G$=""
9012 LET WN=112
9013 LET WL=WL+I
9014 LET WP=PEEK WB
9015 IF WP<>221 AND WP<>253 THEN GOTO 9021
9016 IF WFK THEN GOTO ERR
9017 LET WF=I+(I AND WP=253)
9018 LET WFK=I
9019 LET WB=WB+I
9020 GOTO 9014
9021 IF WP<>203 THEN GOTO 9034
9022 LET WFN=Z0
9023 LET WJ=345
9024 LET WB=WB+I+WFK
9025 LET WP=PEEK WB
9026 LET W1=INT (WP/F6)
9027 LET W=WP-F6*W1
9028 LET W2=INT (W/VIII)
9029 LET W=W-VIII*W2
9030 IF WFK AND W<>VI THEN GOTO ERR
9031 IF W1 THEN LET T$(WJ)=CHR$ (97+W1)+CHR$ (F4+I+W2)+CHR$ (W+I)
9032 IF NOT W1 THEN LET T$(WJ)=CHR$ (49+W2)+CHR$ (W+I)+CHR$ 97
9033 GOTO 9042
9034 LET WJ=I+PEEK WB
9035 LET WW=Z0
9036 IF WP<>237 THEN GOTO 9040
9037 LET WB=WB+I
9038 LET WW=PEEK WB
9039 LET WJ=193+WW-(36 AND WW>159)
9040 IF WW>123 AND WW<160 OR WJ>344 THEN GOTO ERR
9041 LET WDIS=PEEK (WB+I)
9042 LET V$=""
9043 LET W0=CODE T$(WJ,I)
9044 IF W0=WN+IV THEN GOTO ERR
9045 IF W0<>WN-IV THEN GOTO 9048
9046 LET WV=VAL (W$(CODE T$(WJ,II)))
9047 LET G$=" "
9048 GOSUB 9066
9049 LET B$=I$+" "
9050 LET W0=CODE T$(WJ,II)
9051 GOSUB 9066
9052 IF I$="" THEN GOTO 9063
9053 IF WP=211 THEN LET I$="(N)"
9054 LET B$=B$+I$
9055 LET W0=CODE T$(WJ,III)
9056 GOSUB 9066
9057 IF I$="" THEN GOTO 9060
9058 IF WP=219 THEN LET I$="(N)"
9059 LET B$=B$+","+I$
9060 IF WFK AND NOT WFW THEN GOTO ERR
9061 LET V$=STR$ WV
9062 IF NOT LEN G$ AND WV=Z0 THEN LET V$=""
9063 PRINT WIA;TAB VI;B$;TAB XX-I;V$+G$
9064 LET WB=WB+I+WFS*WFN
9065 GOTO 9004
9066 LET I$=W$(W0)
9067 GOSUB DTB
9068 IF W0=WN+FIV THEN GOSUB 9094
9069 IF W0<>WN+VI THEN GOTO 9075
9070 LET WB=WB+WFK+I
9071 LET WFN=Z0
9072 LET WV=PEEK WB
9073 IF WP=211 OR WP=219 THEN GOTO 9078
9074 LET G$=":"+CHR$ WV+":"
9075 IF WV>=F5 THEN GOTO 9078
9076 LET W=F4+I+III*WV
9078 IF W0<WN+VII THEN GOTO 9085
9079 LET WB=WB+II
9080 LET G$=" "
9081 LET WFN=Z0
9082 LET E=WB-I
9083 GOSUB DB
9084 LET WV=E
9085 IF NOT WFK THEN GOTO 9092
9086 IF W0=VII OR W0=61 OR W0=WN THEN LET WFW=I
9087 IF W0<>VII THEN GOTO 9091
9088 LET WFS=I
9089 GOSUB 9095
9090 LET I$=W$(WN+WF, TO III)+I$+")"
9091 IF W0=61 THEN LET I$=W$(WN+WF,II TO III)
9092 IF W0=WN THEN LET I$=W$(WN+WF)
9093 RETURN 
9094 LET WB=WB+I
9095 LET W=WDIS
9096 IF W<F7 THEN GOTO 9098
9097 LET W=W-F8
9098 IF NOT WFK THEN LET W=W+II
9099 IF W>=Z0 THEN LET I$="+"+STR$ W
9100 IF W<Z0 THEN LET I$=STR$ W
9101 IF B$( TO II)="JR" OR B$( TO II)="DJ" THEN LET WV=WIA+W
9102 RETURN 
9103 PRINT "ERROR AT ";WIA;". ",
9104 FOR J=Z0 TO III
9105 PRINT PEEK (WIA+J);" ";
9106 NEXT J
9107 PRINT 
9108 GOTO 9004
9120 REM %W%C%O%D
9121 CLS 
9122 PRINT ,," T$(345,3) TABLE FOR DECODING","MOST Z80 INSTRUCTIONS.",,,"N   VALUES      INTERPRETATION",,,
9123 FOR N=I TO 345
9124 PRINT N;" ";
9125 FOR K=I TO III
9126 PRINT CODE T$(N,K);" ";
9127 NEXT K
9128 PRINT ,
9129 FOR K=I TO III
9130 PRINT W$(CODE T$(N,K));" ";
9131 NEXT K
9132 PRINT 
9133 NEXT N
9134 STOP 
9135 REM %W%S%T%R
9136 CLS 
9137 PRINT ,," W$(120,4) ARRAY FOR MNEMONICS.",,,
9138 FOR N=I TO 120
9139 PRINT TAB VI;"W$(";N;")=","""";W$(N);""""
9140 NEXT N
9141 STOP 
9142 GOTO WCOD
9200 REM %E%D%I%T
9201 CLS 
9202 LET L=9228
9203 LET M=9317
9206 PRINT ,,"% %M%A%C%H%I%N%E% %L%A%N%G%U%A%G%E% %E%D%I%T%O%R% ",,,"WHERE ABOVE 16759?  START ";
9207 INPUT B
9208 PRINT B,"SELECT BY NO."
9209 FOR N=VI TO F4+I
9210 PRINT AT N,F4;"                "
9211 NEXT N
9212 PRINT AT IV,XX;"NOW   ";B
9213 PRINT ,," 1 SINGLE BYTE",," 2 DOUBLE BYTE",," 3 LD HL,(NN)",," 4 LD (NN),HL",," 5 PUSH SEQ",," 6 LD (NN),BC",," 7 LD BC,(NN)",," 8 LD (NN),DE",," 9 LD DE,(NN)",,"10 SBC HL,BC",,"11 ADC HL,BC",,"12 SBC HL,DE",,"13 ADC HL,DE",,"14 JUMPS",,"15 %Q%U%I%T"
9214 INPUT N
9215 IF N<I OR N>F4-II THEN GOTO M
9216 PRINT AT N+FIV,F4;"% "
9217 GOTO L-F4+VI*N
9218 INPUT K
9219 IF K<0 OR K>FF THEN GOTO M
9220 POKE B,K
9221 LET B=B+I
9222 GOTO 9209
9224 INPUT K
9225 IF K<0 OR K>=F8*F8 THEN GOTO M
9226 POKE B+I,INT (K/F8)
9227 POKE B,K-F8*INT (K/F8)
9228 LET B=B+II
9229 GOTO 9209
9236 POKE B,XXX+N
9237 LET B=B+I
9238 GOTO L-IV
9242 POKE B,245
9243 POKE B+I,213
9244 POKE B+II,229
9245 LET B=B+I
9246 GOTO L
9266 POKE B,237  
9267 POKE B+I,XX-I+VIII*N  
9268 LET B=B+II
9269 GOTO L-IV
9290 POKE B,237  
9291 POKE B+I,VIII*N-F4+II  
9292 GOTO L
9296 PRINT AT F4,F4;"JUMP TO?"
9297 INPUT N
9298 IF N<16760 OR N>=F8*F8 THEN GOTO M
9299 LET W=(B-N)>F7+I OR B-N<-F7+II
9300 PRINT AT VI,F4;"WHICH CONDITION?",AT VIII,F4;" 1 DJNZ",AT IX,F4;" 2 NONE",AT TEN,F4;" 3 NZ",AT TEN+I,F4;" 4  Z",AT VI+VI,F4;" 5 NC",AT IX+IV,F4;" 6  C",AT F4-II,F4;" 7 PO",AT F4-I,F4;" 8 PE",AT F4,F4;" 9  P   ",AT F4+I,F4;"10  M"   
9301 INPUT S
9302 IF S<I OR S>TEN THEN GOTO M
9303 IF W OR S>VI THEN GOTO 9309
9304 LET N=N-B-II
9305 IF N>=F7 THEN LET N=F7-N
9306 POKE B,VIII+VIII*S
9307 POKE B+I,N
9308 GOTO L
9309 IF S=I THEN GOTO M
9310 POKE B,170+VIII*S
9311 IF S=II THEN POKE B,195
9312 LET B=B+I
9313 LET P3=INT (N/F8)
9314 POKE B,N-F8*P3
9315 POKE B+I,P3
9316 GOTO L
9317 CLS 
9318 PRINT AT IX,Z0;"%Q%U%I%T OR AN ERROR HAS OCCURRED.  THE LAST LOCATION WAS ";B;".","CONTINUE FOR DISASSEMBLER."
9319 STOP 
9320 GOTO DISA
9449 REM %S%E%A%R%C%H
9450 CLS 
9451 LET Q=Z0
9452 LET E=I
9453 PRINT ,,"OBJECTIVE/TITLE?",
9454 INPUT G$
9455 PRINT AT I,Z0;G$;"                ";AT II,Z0;"PRINT? %YES OR %NO",
9456 LET W=Z0
9457 INPUT H$
9458 IF LEN H$ THEN IF H$(I)="Y" THEN LET W=I
9459 PRINT AT II,Z0;"INPUT YOUR CODE          ",
9460 INPUT L
9461 IF L>FF THEN GOTO 9481
9462 PRINT AT II,Z0;"IF DOUBLE BYTE, ENTER ""D"""
9463 INPUT H$
9464 IF LEN H$ THEN IF H$(I)="D" THEN GOTO 9481
9465 POKE 17015+E,L
9466 LET E=E+I
9467 PRINT AT II,Z0;"ANOTHER ENTRY? %YES OR %NO",
9468 INPUT H$
9469 IF LEN H$ THEN IF H$(I)="Y" THEN GOTO 9459
9470 CLS 
9471 IF NOT W THEN PRINT ,,G$
9472 IF W THEN LPRINT G$
9473 POKE 17125,E-I
9474 LET K=USR 16860
9475 GOTO 9477
9476 LET K=USR 16809
9477 LET Q=Q+I
9478 IF K=55555 THEN GOTO 9486
9479 GOSUB 9490+II*W
9480 GOTO 9476
9481 LET P2=INT (L/F8+II**-IX)
9482 POKE 17016+E,P2
9483 POKE 17015+E,L-F8*P2
9484 LET E=E+II
9485 GOTO 9467
9486 IF NOT W THEN PRINT "$";Q-I
9487 IF W THEN LPRINT "$";Q-I
9488 STOP 
9489 GOTO SEARCH
9490 PRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9491 RETURN 
9492 LPRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9493 RETURN 
9499 STOP 
9500 REM %V%L%S%T
9501 CLS 
9502 PRINT ,,,,"   %V%A%R%I%A%B%L%E%S",,,
9503 LET E=16400
9504 GOSUB DB
9505 LET L=E-I
9506 LET T=Z0
9507 LET T=T+I
9508 LET L=L+I
9509 LET B=L
9510 IF LEN H$>I THEN IF H$( TO II)="H$" THEN GOSUB VLST+XX
9511 LET CH=PEEK L
9512 PRINT TAB III-LEN STR$ T;T;" ";
9512 LET TP=INT (CH/F5)
9514 LET CH=CH-TP*F5+F5
9515 LET H$=CHR$ CH
9516 GOSUB VLST-F5+F5*TP
9517 LET E=TP=II OR TP=VI
9518 IF E THEN PRINT H$;TAB XX+VI;B
9519 IF NOT E THEN PRINT H$;TAB XX+III-LEN STR$ Q;Q;TAB XX+VI;B
9520 GOTO VLST+VI
9521 PRINT ,,"   %E%N%D% %O%F% %L%I%S%T ";L
9522 LET H$="***"
9523 STOP 
9524 GOTO VLST
9532 REM %S%T%R%I%N%G
9533 LET H$=H$+"$ "
9534 LET E=L+I
9535 GOSUB DB
9536 FOR Q=I TO (E AND E<F4)+(F4 AND E>=F4)
9537 LET H$=H$+CHR$ PEEK (L+II+Q)
9538 NEXT Q
9539 LET L=L+II+E
9540 RETURN 
9564 REM %S%I%N%G%L
9565 LET Q=VAL H$
9566 LET L=L+FIV
9567 RETURN 
9596 REM %N%(%)
9597 LET H$=H$+"("
9598 LET I$=H$
9599 LET S=PEEK (L+III)
9600 FOR Q=I TO S
9601 LET E=L+II+II*Q
9602 GOSUB DB
9603 IF Q>=S THEN GOTO VLST+105
9604 LET H$=H$+STR$ E+","
9605 LET I$=I$+"1,"
9606 NEXT Q
9607 LET H$=H$+STR$ E+")"
9608 LET I$=I$+"1)"
9609 LET Q=VAL I$
9610 LET E=L+I
9611 GOSUB DB
9612 LET L=L+II+E
9613 RETURN 
9628 REM %M%U%L%T
9629 LET L=L+I
9630 LET CH=PEEK L
9631 IF INT (CH/F6)=II THEN GOTO VLST+133
9632 LET H$=H$+CHR$ CH
9633 GOTO VLST+F7
9634 LET H$=H$+CHR$ (CH-F7)
9635 LET Q=VAL H$
9636 LET L=L+FIV
9637 RETURN 
9660 REM %$%(%)
9661 LET H$=H$+"$("
9662 LET S=PEEK (L+III)
9663 FOR Q=I TO S
9664 LET E=L+II+II*Q
9665 GOSUB DB
9666 IF Q>=S THEN GOTO VLST+168
9667 LET H$=H$+STR$ E+","
9668 NEXT Q
9669 LET H$=H$+STR$ E+")"
9670 LET E=L+VI
9671 LET U=L+III+II*S
9672 GOSUB DB
9674 FOR Q=U TO U+(E AND E<F4)+(F4 AND E>=F4)
9675 LET H$=H$+CHR$ PEEK Q
9676 NEXT Q
9677 GOTO VLST+109
9692 REM %F%-%N
9693 LET Q=VAL H$
9694 LET H$=H$+" FOR-NEXT"
9695 LET L=L+XX-III
9696 RETURN 
9697 REM %D%T%B
9698 FOR J=LEN I$ TO I STEP -I
9699 IF I$(J)=" " THEN NEXT J
9700 LET I$=I$( TO J)
9701 RETURN 
9702 REM %D%B
9703 LET E=F8*PEEK (E+I)+PEEK E
9704 RETURN 
9705 REM %S%R%C%H
9706 CLS 
9707 PRINT AT IX,I;"WRITE YOUR STRING WITHOUT LINE NUMBER.  ADD A QUOTE AND PRECEDESTRING WITH",,,," LET H$=""",,,," THEN ENTER AND CONTINUE."
9708 LET E=17116
9709 STOP 
9710 POKE E+IX,LEN H$
9711 POKE E-I,247
9712 POKE E,66
9713 LET K=PEEK 16396+F8*PEEK 16397-17143
9714 LET S=INT (K/F8)
9715 LET K=K-F8*S
9716 POKE E+III,K
9717 POKE E+IV,S
9718 FOR E=I TO LEN H$
9719 POKE (E+17015),CODE H$(E)
9720 NEXT E
9721 CLS 
9722 PRINT ,,"""";H$;"""";TAB Z0;,,
9723 LET K=USR 16809
9724 IF K=55555 THEN GOTO 9740
9727 LET Q=K
9728 LET Q=Q-I
9729 IF PEEK Q<>118 THEN GOTO 9728
9730 IF K-Q<IV THEN GOTO 9723
9732 LET E=F8*PEEK (Q+I)+PEEK (Q+II)
9733 LET K=F8*PEEK (Q+IV)+PEEK (Q+III)
9734 LET I$=""
9735 FOR Q=Q+FIV TO Q+III+K
9736 LET I$=I$+CHR$ PEEK Q
9737 NEXT Q
9738 PRINT E;TAB FIV;I$
9739 GOTO 9723
9740 PRINT ,,"  % %S%E%A%R%C%H% %C%O%M%P%L%E%T%E% "
9741 STOP 
9742 GOTO 9706
9750 REM %S%P%Y
9751 PRINT AT XX+I,Z0;"LOOK AT NO./%QUIT/%HIGHER/%L0WER"
9752 INPUT H$
9753 IF H$<>"Q" THEN GOTO 9755
9754 STOP 
9755 IF H$<>"H" THEN GOTO 9758
9756 LET B=B+F4
9757 GOTO 9762
9758 IF H$<>"L" THEN GOTO 9761
9759 LET B=B-F4
9760 GOTO 9762
9761 LET B=VAL H$
9762 CLS 
9763 FOR E=B TO B+XX+I
9764 PRINT E;TAB VI;PEEK E;TAB TEN;":";CHR$ PEEK E;":";TAB XX;F8*PEEK (E+I)+PEEK E
9765 NEXT E
9766 GOTO 9752
9800 REM %P%U%R%G
9801 LET N(1)=USR 16900
9802 REM %I%N%I%T%I%A%L%I%Z%A%T%I%O%N%S
9810 LET I=1
9811 LET Z0=I-I
9812 LET II=I+I
9813 LET III=II+I
9814 LET IV=II+II
9815 LET FIV=IV+I
9816 LET VI=IV+II
9817 LET VII=VI+I
9818 LET VIII=IV+IV
9819 LET IX=VIII+I
9820 LET TEN=IX+I
9821 LET XX=II*TEN
9822 LET XXX=30
9823 LET F4=II*VIII
9824 LET F5=II*F4
9825 LET F6=II*F5
9826 LET F7=II*F6
9827 LET F8=256
9828 LET FF=F8-I
9829 LET IK=I/F8/F8
9840 REM %K%E%Y%S
9841 LET VLST=9501
9842 LET DB=9703
9843 LET PURG=9801
9844 LET MEM=9916
9845 LET ZZ=9953
9846 LET ZZZ=ZZ-I
9847 LET ZZZZ=ZZ-II
9848 LET SAVE=9900
9849 LET SYSV=9928
9850 LET MAP=8101
9851 LET SEARCH=9450
9852 LET SRCH=9706
9853 LET HELP=9961
9854 LET SPY=9751
9855 LET DISA=9000
9856 LET ERR=9103
9857 LET DTB=9698
9858 LET WCOD=9121
9859 LET WSTR=9136
9860 LET NTRY=HELP
9861 LET EDIT=9201
9892 CLS 
9893 PRINT ,,,,"* TO DELETE STRINGS AND ARRAYS, REDIMENSION THEM TO ZERO."
9894 PRINT ,,"   DIM (NAME)$(0)  OR"
9895 PRINT ,,"   DIM (NAME)(0)"
9896 PRINT ,,"   THIS WILL PULL ERROR 3/0 BUT"," THE JOB IS DONE."
9897 STOP 
9898 GOTO VLST
9899 REM %S%A%V%E
9900 CLS 
9901 PRINT ,,,,"""";Z$;""" IS TO BE SAVED.",,,"START RECORDER.  PRESS ANY KEY.",,,Q$,,
9902 PRINT "MODE IS ";"LOOPING" AND NOT (NTRY-SAVE);"HELP" AND NOT (NTRY-HELP);"LOAD-AND-GO" AND NOT (NTRY-1000)
9903 SLOW 
9904 IF NTRY<>SAVE THEN PAUSE 40000
9905 FOR N=F6 TO I STEP -I
9906 UNPLOT N-I,XXX
9907 NEXT N
9908 SAVE Z$
9909 FAST 
9910 CLS 
9911 PRINT Y$;X$
9912 PRINT AT IX+VI,VII;"PRESENTS***"
9913 GOSUB ZZZ
9914 GOTO NTRY
9915 REM %M%E%M
9916 LET L=F8*(PEEK 16387-PEEK 16413)+PEEK 16386-PEEK 16412
9917 LET E=INT (L/F5/F5)
9918 PRINT AT IX,Z0;"MEMORY LEFT IS:";E;" K, ";L-F5*F5*E;" BYTES.",,,"(";L;" BYTES)"
9919 IF L<F8+XX THEN PRINT ,,"CAUTION: LIST EDITING MAY BE IMPAIRED."
9920 STOP 
9921 GOTO MAP
9927 REM %S%Y%S%V
9928 LET E=II*CODE D$-75
9929 IF E<I OR E>13 THEN GOTO 9933
9930 LET E$="10141824260002"
9931 LET E=VAL E$(E TO E+I)+16386
9932 LET D$=STR$ (F8*PEEK (E+I)+PEEK E)
9933 RETURN 
9950 REM %S%L%E%E%P
9951 LET ZZ=ZZ+F8
9952 LET ZZ=ZZ+F7
9953 LET ZZ=ZZ+F6
9954 LET ZZ=ZZ+F5
9955 LET E=ZZ-ZZZ+F5
9956 LET ZZ=ZZZ+I
9957 PAUSE E
9958 POKE 16437,FF
9959 RETURN 
9960 REM %H%E%L%P
9961 CLS 
9962 LET PAGE=I
9963 LET H$="% %H%E%L%P%  PAGE "
9964 PRINT AT I,IX;H$;PAGE
9965 PRINT ,,"* USE GOTO FOR DESIRED LOCATION,",,"* LET Z$=""(YOUR PROGRAM NAME)""",,,"* LET NTRY=1000 IF YOU WANT YOUR PROGRAM TO RUN AFTER LOADING." 
9966 PRINT ,,"* Z$=""";Z$;""""
9967 LET I$="% %K%E%Y%W%O%R%D% %L%I%N%E% %F%U%N%C%T%I%O%N% "
9968 PRINT ,,I$,"""HELP""   9960 HERE.","""VLST""   9500 VARIABLE LIST.","""MEM""    9915 AVAILABLE MEMORY. ""SAVE""   9900 SAVE PROGRAM,"
9969 PRINT """NTRY""   HELP UNLESS CHANGED."
9970 PRINT """PURG""   9800 DELETE VARIABLES."
9971 PRINT """MAP""    8100 MEMORY MAP."
9972 PRINT """SPY""    9750 LOOK AT MEMORY."
9973 PRINT """DISA""   9000 DISASSEMBLE."
9974 LET PAGE=II
9975 PRINT 
9976 CLS 
9977 PRINT AT I,IX;H$;PAGE,,,I$
9978 PRINT """WCOD""   9120 DECODE TABLE."
9979 PRINT """WSTD""   9135 MNEMONICS."
9980 PRINT """SRCH""   9705 BASIC CODE."
9981 PRINT """SEARCH"" 9450 ROM SPACE."
9982 PRINT """EDIT""   9200 MACH CODE."
9983 PRINT "*""GOTO VLST"" CODES AS:","  :236:V:L:S:T: (5 BYTES)" 
9984 PRINT "*""GOTO 9500"" CODES AS:","  :235:9:5:0:0:126:EXP:B4:B3:B2:B1:B0: (12 BYTES)"
9985 PRINT "* USING VARIABLES IN PLACE OF   NUMBERS CAN SAVE MEMORY."
9986 PRINT "* USE:Z0,I,II,III,IV,FIV,VI,VII,VIII,IX,TEN,XX,XXX IN PLACE OF:0,1,2,3,4,5,6,7,8,9,10,20,30."
9987 PRINT "* LIST 9802 TO SEE."
9988 STOP 
9989 GOTO HELP
9997 REM %M%/%L% %C%0%D%E% %T%E%M%P%L%A%T%E%S
9998 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.......   /\.'
9999 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.........1.......   /\.'
Scroll to Top
A\DB\E5\EDB\DD\D5\AF\ED\EB

Super Utility

Products: Super Utility
Developer(s): William J. Pedersen
Date: 1983
Type: Cassette
Platform(s): TS 1000

Utility for working with machine language programs and memory.

Content

Appears On

Related Products

Utility for working with machine language programs and memory.

Related Articles

Related Content

Image Gallery

Super Utility

Source Code

   1 REM %U%T%I%L%I%T%Y
   2 REM *************
   3 REM COPYRIGHT NOV 14, 1983 BY WILLIAM J. PEDERSEN. 1120 MERRIFIELD S.E., GRAND RAPIDS, MICHIGAN  49507
   4 REM REPRODUCTION OR USE OF THIS PROGRAM IS PROHIBITED WITHOUT EXPRESS WRITTEN PERMISSION.
   5 REM *************
   7 REM \7E\E6\E0\FE\C0\28\0E\F2\99\41\FE\80\28\07\F2\A2\41\FE\60\28\10\23\22\93\41\ED\5B\93\7B\19\23\23\C9\11\0C\00\19\11\06\00\19\C9\23\CB\7E\28\FB\18\F4\F5\D5\E5\2A\DB\42\ED\4B\DF\42\ED\5B\E7\42\1A\ED\B1\20\1B\22\DB\42\ED\43\DF\42\2B\ED\4B\E5\42\1A\ED\A1\20\DF\13\EA\C8\41\ED\4B\DB\42\18\21\01\03\D9\18\1C\F5\D5\E5\21\00\00\22\DB\42\21\FF\1F\22\DF\42\18\BF\00\00\D9\18\06
   8 REM \E1\D1\FD\2A\00\40\3E\1E\ED\47\F1\C9\F5\D5\E5\2A\10\40\22\DB\42\3E\80\BE\28\E6\CB\6E\F5\CD\78\41\22\DD\42\F1\20\08\2A\DD\42\22\DB\42\18\E7\CD\2E\42\2A\DB\42\18\DF\2A\DB\42\E5\ED\5B\DD\42\D5\AF\ED\52\EB\2A\1C\40\19\22\1C\40\2A\1A\40\19\22\1A\40\2A\14\40\E5\19\22\14\40\E1\D1\AF\ED\52\E5\C1\03\2A\DB\42\EB\ED\B0\E1\C9\1B\1B\1B\1B\1D\1B\1B\1B\1B\1B\1B\00\00\00\00\18\06
   9 REM \DC\07\F2\03\D9\FA\9C\AD\EA\78\42\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\57\1B\95\7B\A8\04\1B\1B\1B\1B\02\00\78\42\1B\1B\1B\1B\1B\1B\1E\1B\1B
8100 REM %M%A%P
8101 CLS 
8102 PRINT ,,"    % %M%E%M%O%R%Y% %M%A%P%  ";Z$
8103 LET G$="\##\##%P\:.\'.\':%V\:'\..\':%U%U\.'\.'1638420479204802457524576286712867232767ABCEFG0 PROGRAM =VARIABLES=AVAIL MEM=RAMTOP UP="
8104 LET H$="16509"
8105 LET Q=1
8106 LET S=37
8107 LET I$=CHR$ S
8108 FOR K=IV TO XX-I STEP FIV
8109 LET T=II*K+VII
8110 LET L=53.4+II*K/FIV
8111 LET D$=H$
8112 GOSUB SYSV
8113 LET TT=VAL D$
8114 LET D$=G$(L)
8115 GOSUB SYSV
8116 LET QQ=VAL D$
8117 IF QQ=Z0 THEN LET QQ=32768
8118 LET LL=54+II*K
8119 PRINT AT K-I,Z0;G$(LL TO LL+IX);QQ-TT;" BYTES."
8120 LET H$=G$(L+I)
8121 FOR N=Z0 TO 31
8122 PRINT AT K,N;G$(Q);
8123 LET B=13107.2+F7*N+819.2*K
8124 LET D$=I$
8125 GOSUB SYSV
8126 LET BB=VAL D$
8127 IF BB-B<F6 THEN PRINT AT K,N;G$(Q+I);
8128 IF BB>B+F7 THEN GOTO 8137
8129 LET Q=Q+II
8130 LET S=S+I
8131 LET D$=CHR$ S
8132 GOSUB SYSV
8133 LET I$=D$
8134 IF LEN I$<II THEN LET I$="65536"
8135 IF VAL I$>B+F7 THEN GOTO 8137
8136 GOTO 8130
8137 NEXT N
8138 PRINT G$(T TO T+IV);TAB 27;G$(T+FIV TO T+IX)
8139 NEXT K
8140 STOP 
8141 GOTO HELP
8999 REM % %D%I%S%A%S%S%E%M%B%L%E%R% 
9000 PRINT AT XX,Z0;"DISASSEMBLE STARTING WHERE?"
9001 INPUT WB
9002 CLS 
9003 LET WL=Z0
9004 LET WIA=WB
9005 LET WFS=Z0
9006 LET WFN=I
9007 LET WFK=Z0
9008 LET WF=Z0
9009 LET WFW=Z0
9010 LET WV=Z0
9011 LET G$=""
9012 LET WN=112
9013 LET WL=WL+I
9014 LET WP=PEEK WB
9015 IF WP<>221 AND WP<>253 THEN GOTO 9021
9016 IF WFK THEN GOTO ERR
9017 LET WF=I+(I AND WP=253)
9018 LET WFK=I
9019 LET WB=WB+I
9020 GOTO 9014
9021 IF WP<>203 THEN GOTO 9034
9022 LET WFN=Z0
9023 LET WJ=345
9024 LET WB=WB+I+WFK
9025 LET WP=PEEK WB
9026 LET W1=INT (WP/F6)
9027 LET W=WP-F6*W1
9028 LET W2=INT (W/VIII)
9029 LET W=W-VIII*W2
9030 IF WFK AND W<>VI THEN GOTO ERR
9031 IF W1 THEN LET T$(WJ)=CHR$ (97+W1)+CHR$ (F4+I+W2)+CHR$ (W+I)
9032 IF NOT W1 THEN LET T$(WJ)=CHR$ (49+W2)+CHR$ (W+I)+CHR$ 97
9033 GOTO 9042
9034 LET WJ=I+PEEK WB
9035 LET WW=Z0
9036 IF WP<>237 THEN GOTO 9040
9037 LET WB=WB+I
9038 LET WW=PEEK WB
9039 LET WJ=193+WW-(36 AND WW>159)
9040 IF WW>123 AND WW<160 OR WJ>344 THEN GOTO ERR
9041 LET WDIS=PEEK (WB+I)
9042 LET V$=""
9043 LET W0=CODE T$(WJ,I)
9044 IF W0=WN+IV THEN GOTO ERR
9045 IF W0<>WN-IV THEN GOTO 9048
9046 LET WV=VAL (W$(CODE T$(WJ,II)))
9047 LET G$=" "
9048 GOSUB 9066
9049 LET B$=I$+" "
9050 LET W0=CODE T$(WJ,II)
9051 GOSUB 9066
9052 IF I$="" THEN GOTO 9063
9053 IF WP=211 THEN LET I$="(N)"
9054 LET B$=B$+I$
9055 LET W0=CODE T$(WJ,III)
9056 GOSUB 9066
9057 IF I$="" THEN GOTO 9060
9058 IF WP=219 THEN LET I$="(N)"
9059 LET B$=B$+","+I$
9060 IF WFK AND NOT WFW THEN GOTO ERR
9061 LET V$=STR$ WV
9062 IF NOT LEN G$ AND WV=Z0 THEN LET V$=""
9063 PRINT WIA;TAB VI;B$;TAB XX-I;V$+G$
9064 LET WB=WB+I+WFS*WFN
9065 GOTO 9004
9066 LET I$=W$(W0)
9067 GOSUB DTB
9068 IF W0=WN+FIV THEN GOSUB 9094
9069 IF W0<>WN+VI THEN GOTO 9075
9070 LET WB=WB+WFK+I
9071 LET WFN=Z0
9072 LET WV=PEEK WB
9073 IF WP=211 OR WP=219 THEN GOTO 9078
9074 LET G$=":"+CHR$ WV+":"
9075 IF WV>=F5 THEN GOTO 9078
9076 LET W=F4+I+III*WV
9078 IF W0<WN+VII THEN GOTO 9085
9079 LET WB=WB+II
9080 LET G$=" "
9081 LET WFN=Z0
9082 LET E=WB-I
9083 GOSUB DB
9084 LET WV=E
9085 IF NOT WFK THEN GOTO 9092
9086 IF W0=VII OR W0=61 OR W0=WN THEN LET WFW=I
9087 IF W0<>VII THEN GOTO 9091
9088 LET WFS=I
9089 GOSUB 9095
9090 LET I$=W$(WN+WF, TO III)+I$+")"
9091 IF W0=61 THEN LET I$=W$(WN+WF,II TO III)
9092 IF W0=WN THEN LET I$=W$(WN+WF)
9093 RETURN 
9094 LET WB=WB+I
9095 LET W=WDIS
9096 IF W<F7 THEN GOTO 9098
9097 LET W=W-F8
9098 IF NOT WFK THEN LET W=W+II
9099 IF W>=Z0 THEN LET I$="+"+STR$ W
9100 IF W<Z0 THEN LET I$=STR$ W
9101 IF B$( TO II)="JR" OR B$( TO II)="DJ" THEN LET WV=WIA+W
9102 RETURN 
9103 PRINT "ERROR AT ";WIA;". ",
9104 FOR J=Z0 TO III
9105 PRINT PEEK (WIA+J);" ";
9106 NEXT J
9107 PRINT 
9108 GOTO 9004
9120 REM %W%C%O%D
9121 CLS 
9122 PRINT ,," T$(345,3) TABLE FOR DECODING","MOST Z80 INSTRUCTIONS.",,,"N   VALUES      INTERPRETATION",,,
9123 FOR N=I TO 345
9124 PRINT N;" ";
9125 FOR K=I TO III
9126 PRINT CODE T$(N,K);" ";
9127 NEXT K
9128 PRINT ,
9129 FOR K=I TO III
9130 PRINT W$(CODE T$(N,K));" ";
9131 NEXT K
9132 PRINT 
9133 NEXT N
9134 STOP 
9135 REM %W%S%T%R
9136 CLS 
9137 PRINT ,," W$(120,4) ARRAY FOR MNEMONICS.",,,
9138 FOR N=I TO 120
9139 PRINT TAB VI;"W$(";N;")=","""";W$(N);""""
9140 NEXT N
9141 STOP 
9142 GOTO WCOD
9200 REM %E%D%I%T
9201 CLS 
9202 LET L=9228
9203 LET M=9317
9206 PRINT ,,"% %M%A%C%H%I%N%E% %L%A%N%G%U%A%G%E% %E%D%I%T%O%R% ",,,"WHERE ABOVE 16759?  START ";
9207 INPUT B
9208 PRINT B,"SELECT BY NO."
9209 FOR N=VI TO F4+I
9210 PRINT AT N,F4;"                "
9211 NEXT N
9212 PRINT AT IV,XX;"NOW   ";B
9213 PRINT ,," 1 SINGLE BYTE",," 2 DOUBLE BYTE",," 3 LD HL,(NN)",," 4 LD (NN),HL",," 5 PUSH SEQ",," 6 LD (NN),BC",," 7 LD BC,(NN)",," 8 LD (NN),DE",," 9 LD DE,(NN)",,"10 SBC HL,BC",,"11 ADC HL,BC",,"12 SBC HL,DE",,"13 ADC HL,DE",,"14 JUMPS",,"15 %Q%U%I%T"
9214 INPUT N
9215 IF N<I OR N>F4-II THEN GOTO M
9216 PRINT AT N+FIV,F4;"% "
9217 GOTO L-F4+VI*N
9218 INPUT K
9219 IF K<0 OR K>FF THEN GOTO M
9220 POKE B,K
9221 LET B=B+I
9222 GOTO 9209
9224 INPUT K
9225 IF K<0 OR K>=F8*F8 THEN GOTO M
9226 POKE B+I,INT (K/F8)
9227 POKE B,K-F8*INT (K/F8)
9228 LET B=B+II
9229 GOTO 9209
9236 POKE B,XXX+N
9237 LET B=B+I
9238 GOTO L-IV
9242 POKE B,245
9243 POKE B+I,213
9244 POKE B+II,229
9245 LET B=B+I
9246 GOTO L
9266 POKE B,237  
9267 POKE B+I,XX-I+VIII*N  
9268 LET B=B+II
9269 GOTO L-IV
9290 POKE B,237  
9291 POKE B+I,VIII*N-F4+II  
9292 GOTO L
9296 PRINT AT F4,F4;"JUMP TO?"
9297 INPUT N
9298 IF N<16760 OR N>=F8*F8 THEN GOTO M
9299 LET W=(B-N)>F7+I OR B-N<-F7+II
9300 PRINT AT VI,F4;"WHICH CONDITION?",AT VIII,F4;" 1 DJNZ",AT IX,F4;" 2 NONE",AT TEN,F4;" 3 NZ",AT TEN+I,F4;" 4  Z",AT VI+VI,F4;" 5 NC",AT IX+IV,F4;" 6  C",AT F4-II,F4;" 7 PO",AT F4-I,F4;" 8 PE",AT F4,F4;" 9  P   ",AT F4+I,F4;"10  M"   
9301 INPUT S
9302 IF S<I OR S>TEN THEN GOTO M
9303 IF W OR S>VI THEN GOTO 9309
9304 LET N=N-B-II
9305 IF N>=F7 THEN LET N=F7-N
9306 POKE B,VIII+VIII*S
9307 POKE B+I,N
9308 GOTO L
9309 IF S=I THEN GOTO M
9310 POKE B,170+VIII*S
9311 IF S=II THEN POKE B,195
9312 LET B=B+I
9313 LET P3=INT (N/F8)
9314 POKE B,N-F8*P3
9315 POKE B+I,P3
9316 GOTO L
9317 CLS 
9318 PRINT AT IX,Z0;"%Q%U%I%T OR AN ERROR HAS OCCURRED.  THE LAST LOCATION WAS ";B;".","CONTINUE FOR DISASSEMBLER."
9319 STOP 
9320 GOTO DISA
9449 REM %S%E%A%R%C%H
9450 CLS 
9451 LET Q=Z0
9452 LET E=I
9453 PRINT ,,"OBJECTIVE/TITLE?",
9454 INPUT G$
9455 PRINT AT I,Z0;G$;"                ";AT II,Z0;"PRINT? %YES OR %NO",
9456 LET W=Z0
9457 INPUT H$
9458 IF LEN H$ THEN IF H$(I)="Y" THEN LET W=I
9459 PRINT AT II,Z0;"INPUT YOUR CODE          ",
9460 INPUT L
9461 IF L>FF THEN GOTO 9481
9462 PRINT AT II,Z0;"IF DOUBLE BYTE, ENTER ""D"""
9463 INPUT H$
9464 IF LEN H$ THEN IF H$(I)="D" THEN GOTO 9481
9465 POKE 17015+E,L
9466 LET E=E+I
9467 PRINT AT II,Z0;"ANOTHER ENTRY? %YES OR %NO",
9468 INPUT H$
9469 IF LEN H$ THEN IF H$(I)="Y" THEN GOTO 9459
9470 CLS 
9471 IF NOT W THEN PRINT ,,G$
9472 IF W THEN LPRINT G$
9473 POKE 17125,E-I
9474 LET K=USR 16860
9475 GOTO 9477
9476 LET K=USR 16809
9477 LET Q=Q+I
9478 IF K=55555 THEN GOTO 9486
9479 GOSUB 9490+II*W
9480 GOTO 9476
9481 LET P2=INT (L/F8+II**-IX)
9482 POKE 17016+E,P2
9483 POKE 17015+E,L-F8*P2
9484 LET E=E+II
9485 GOTO 9467
9486 IF NOT W THEN PRINT "$";Q-I
9487 IF W THEN LPRINT "$";Q-I
9488 STOP 
9489 GOTO SEARCH
9490 PRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9491 RETURN 
9492 LPRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9493 RETURN 
9499 STOP 
9500 REM %V%L%S%T
9501 CLS 
9502 PRINT ,,,,"   %V%A%R%I%A%B%L%E%S",,,
9503 LET E=16400
9504 GOSUB DB
9505 LET L=E-I
9506 LET T=Z0
9507 LET T=T+I
9508 LET L=L+I
9509 LET B=L
9510 IF LEN H$>I THEN IF H$( TO II)="H$" THEN GOSUB VLST+XX
9511 LET CH=PEEK L
9512 PRINT TAB III-LEN STR$ T;T;" ";
9512 LET TP=INT (CH/F5)
9514 LET CH=CH-TP*F5+F5
9515 LET H$=CHR$ CH
9516 GOSUB VLST-F5+F5*TP
9517 LET E=TP=II OR TP=VI
9518 IF E THEN PRINT H$;TAB XX+VI;B
9519 IF NOT E THEN PRINT H$;TAB XX+III-LEN STR$ Q;Q;TAB XX+VI;B
9520 GOTO VLST+VI
9521 PRINT ,,"   %E%N%D% %O%F% %L%I%S%T ";L
9522 LET H$="***"
9523 STOP 
9524 GOTO VLST
9532 REM %S%T%R%I%N%G
9533 LET H$=H$+"$ "
9534 LET E=L+I
9535 GOSUB DB
9536 FOR Q=I TO (E AND E<F4)+(F4 AND E>=F4)
9537 LET H$=H$+CHR$ PEEK (L+II+Q)
9538 NEXT Q
9539 LET L=L+II+E
9540 RETURN 
9564 REM %S%I%N%G%L
9565 LET Q=VAL H$
9566 LET L=L+FIV
9567 RETURN 
9596 REM %N%(%)
9597 LET H$=H$+"("
9598 LET I$=H$
9599 LET S=PEEK (L+III)
9600 FOR Q=I TO S
9601 LET E=L+II+II*Q
9602 GOSUB DB
9603 IF Q>=S THEN GOTO VLST+105
9604 LET H$=H$+STR$ E+","
9605 LET I$=I$+"1,"
9606 NEXT Q
9607 LET H$=H$+STR$ E+")"
9608 LET I$=I$+"1)"
9609 LET Q=VAL I$
9610 LET E=L+I
9611 GOSUB DB
9612 LET L=L+II+E
9613 RETURN 
9628 REM %M%U%L%T
9629 LET L=L+I
9630 LET CH=PEEK L
9631 IF INT (CH/F6)=II THEN GOTO VLST+133
9632 LET H$=H$+CHR$ CH
9633 GOTO VLST+F7
9634 LET H$=H$+CHR$ (CH-F7)
9635 LET Q=VAL H$
9636 LET L=L+FIV
9637 RETURN 
9660 REM %$%(%)
9661 LET H$=H$+"$("
9662 LET S=PEEK (L+III)
9663 FOR Q=I TO S
9664 LET E=L+II+II*Q
9665 GOSUB DB
9666 IF Q>=S THEN GOTO VLST+168
9667 LET H$=H$+STR$ E+","
9668 NEXT Q
9669 LET H$=H$+STR$ E+")"
9670 LET E=L+VI
9671 LET U=L+III+II*S
9672 GOSUB DB
9674 FOR Q=U TO U+(E AND E<F4)+(F4 AND E>=F4)
9675 LET H$=H$+CHR$ PEEK Q
9676 NEXT Q
9677 GOTO VLST+109
9692 REM %F%-%N
9693 LET Q=VAL H$
9694 LET H$=H$+" FOR-NEXT"
9695 LET L=L+XX-III
9696 RETURN 
9697 REM %D%T%B
9698 FOR J=LEN I$ TO I STEP -I
9699 IF I$(J)=" " THEN NEXT J
9700 LET I$=I$( TO J)
9701 RETURN 
9702 REM %D%B
9703 LET E=F8*PEEK (E+I)+PEEK E
9704 RETURN 
9705 REM %S%R%C%H
9706 CLS 
9707 PRINT AT IX,I;"WRITE YOUR STRING WITHOUT LINE NUMBER.  ADD A QUOTE AND PRECEDESTRING WITH",,,," LET H$=""",,,," THEN ENTER AND CONTINUE."
9708 LET E=17116
9709 STOP 
9710 POKE E+IX,LEN H$
9711 POKE E-I,247
9712 POKE E,66
9713 LET K=PEEK 16396+F8*PEEK 16397-17143
9714 LET S=INT (K/F8)
9715 LET K=K-F8*S
9716 POKE E+III,K
9717 POKE E+IV,S
9718 FOR E=I TO LEN H$
9719 POKE (E+17015),CODE H$(E)
9720 NEXT E
9721 CLS 
9722 PRINT ,,"""";H$;"""";TAB Z0;,,
9723 LET K=USR 16809
9724 IF K=55555 THEN GOTO 9740
9727 LET Q=K
9728 LET Q=Q-I
9729 IF PEEK Q<>118 THEN GOTO 9728
9730 IF K-Q<IV THEN GOTO 9723
9732 LET E=F8*PEEK (Q+I)+PEEK (Q+II)
9733 LET K=F8*PEEK (Q+IV)+PEEK (Q+III)
9734 LET I$=""
9735 FOR Q=Q+FIV TO Q+III+K
9736 LET I$=I$+CHR$ PEEK Q
9737 NEXT Q
9738 PRINT E;TAB FIV;I$
9739 GOTO 9723
9740 PRINT ,,"  % %S%E%A%R%C%H% %C%O%M%P%L%E%T%E% "
9741 STOP 
9742 GOTO 9706
9750 REM %S%P%Y
9751 PRINT AT XX+I,Z0;"LOOK AT NO./%QUIT/%HIGHER/%L0WER"
9752 INPUT H$
9753 IF H$<>"Q" THEN GOTO 9755
9754 STOP 
9755 IF H$<>"H" THEN GOTO 9758
9756 LET B=B+F4
9757 GOTO 9762
9758 IF H$<>"L" THEN GOTO 9761
9759 LET B=B-F4
9760 GOTO 9762
9761 LET B=VAL H$
9762 CLS 
9763 FOR E=B TO B+XX+I
9764 PRINT E;TAB VI;PEEK E;TAB TEN;":";CHR$ PEEK E;":";TAB XX;F8*PEEK (E+I)+PEEK E
9765 NEXT E
9766 GOTO 9752
9800 REM %P%U%R%G
9801 LET N(1)=USR 16900
9802 REM %I%N%I%T%I%A%L%I%Z%A%T%I%O%N%S
9810 LET I=1
9811 LET Z0=I-I
9812 LET II=I+I
9813 LET III=II+I
9814 LET IV=II+II
9815 LET FIV=IV+I
9816 LET VI=IV+II
9817 LET VII=VI+I
9818 LET VIII=IV+IV
9819 LET IX=VIII+I
9820 LET TEN=IX+I
9821 LET XX=II*TEN
9822 LET XXX=30
9823 LET F4=II*VIII
9824 LET F5=II*F4
9825 LET F6=II*F5
9826 LET F7=II*F6
9827 LET F8=256
9828 LET FF=F8-I
9829 LET IK=I/F8/F8
9840 REM %K%E%Y%S
9841 LET VLST=9501
9842 LET DB=9703
9843 LET PURG=9801
9844 LET MEM=9916
9845 LET ZZ=9953
9846 LET ZZZ=ZZ-I
9847 LET ZZZZ=ZZ-II
9848 LET SAVE=9900
9849 LET SYSV=9928
9850 LET MAP=8101
9851 LET SEARCH=9450
9852 LET SRCH=9706
9853 LET HELP=9961
9854 LET SPY=9751
9855 LET DISA=9000
9856 LET ERR=9103
9857 LET DTB=9698
9858 LET WCOD=9121
9859 LET WSTR=9136
9860 LET NTRY=HELP
9861 LET EDIT=9201
9892 CLS 
9893 PRINT ,,,,"* TO DELETE STRINGS AND ARRAYS, REDIMENSION THEM TO ZERO."
9894 PRINT ,,"   DIM (NAME)$(0)  OR"
9895 PRINT ,,"   DIM (NAME)(0)"
9896 PRINT ,,"   THIS WILL PULL ERROR 3/0 BUT"," THE JOB IS DONE."
9897 STOP 
9898 GOTO VLST
9899 REM %S%A%V%E
9900 CLS 
9901 PRINT ,,,,"""";Z$;""" IS TO BE SAVED.",,,"START RECORDER.  PRESS ANY KEY.",,,Q$,,
9902 PRINT "MODE IS ";"LOOPING" AND NOT (NTRY-SAVE);"HELP" AND NOT (NTRY-HELP);"LOAD-AND-GO" AND NOT (NTRY-1000)
9903 SLOW 
9904 IF NTRY<>SAVE THEN PAUSE 40000
9905 FOR N=F6 TO I STEP -I
9906 UNPLOT N-I,XXX
9907 NEXT N
9908 SAVE Z$
9909 FAST 
9910 CLS 
9911 PRINT Y$;X$
9912 PRINT AT IX+VI,VII;"PRESENTS***"
9913 GOSUB ZZZ
9914 GOTO NTRY
9915 REM %M%E%M
9916 LET L=F8*(PEEK 16387-PEEK 16413)+PEEK 16386-PEEK 16412
9917 LET E=INT (L/F5/F5)
9918 PRINT AT IX,Z0;"MEMORY LEFT IS:";E;" K, ";L-F5*F5*E;" BYTES.",,,"(";L;" BYTES)"
9919 IF L<F8+XX THEN PRINT ,,"CAUTION: LIST EDITING MAY BE IMPAIRED."
9920 STOP 
9921 GOTO MAP
9927 REM %S%Y%S%V
9928 LET E=II*CODE D$-75
9929 IF E<I OR E>13 THEN GOTO 9933
9930 LET E$="10141824260002"
9931 LET E=VAL E$(E TO E+I)+16386
9932 LET D$=STR$ (F8*PEEK (E+I)+PEEK E)
9933 RETURN 
9950 REM %S%L%E%E%P
9951 LET ZZ=ZZ+F8
9952 LET ZZ=ZZ+F7
9953 LET ZZ=ZZ+F6
9954 LET ZZ=ZZ+F5
9955 LET E=ZZ-ZZZ+F5
9956 LET ZZ=ZZZ+I
9957 PAUSE E
9958 POKE 16437,FF
9959 RETURN 
9960 REM %H%E%L%P
9961 CLS 
9962 LET PAGE=I
9963 LET H$="% %H%E%L%P%  PAGE "
9964 PRINT AT I,IX;H$;PAGE
9965 PRINT ,,"* USE GOTO FOR DESIRED LOCATION,",,"* LET Z$=""(YOUR PROGRAM NAME)""",,,"* LET NTRY=1000 IF YOU WANT YOUR PROGRAM TO RUN AFTER LOADING." 
9966 PRINT ,,"* Z$=""";Z$;""""
9967 LET I$="% %K%E%Y%W%O%R%D% %L%I%N%E% %F%U%N%C%T%I%O%N% "
9968 PRINT ,,I$,"""HELP""   9960 HERE.","""VLST""   9500 VARIABLE LIST.","""MEM""    9915 AVAILABLE MEMORY. ""SAVE""   9900 SAVE PROGRAM,"
9969 PRINT """NTRY""   HELP UNLESS CHANGED."
9970 PRINT """PURG""   9800 DELETE VARIABLES."
9971 PRINT """MAP""    8100 MEMORY MAP."
9972 PRINT """SPY""    9750 LOOK AT MEMORY."
9973 PRINT """DISA""   9000 DISASSEMBLE."
9974 LET PAGE=II
9975 PRINT 
9976 CLS 
9977 PRINT AT I,IX;H$;PAGE,,,I$
9978 PRINT """WCOD""   9120 DECODE TABLE."
9979 PRINT """WSTD""   9135 MNEMONICS."
9980 PRINT """SRCH""   9705 BASIC CODE."
9981 PRINT """SEARCH"" 9450 ROM SPACE."
9982 PRINT """EDIT""   9200 MACH CODE."
9983 PRINT "*""GOTO VLST"" CODES AS:","  :236:V:L:S:T: (5 BYTES)" 
9984 PRINT "*""GOTO 9500"" CODES AS:","  :235:9:5:0:0:126:EXP:B4:B3:B2:B1:B0: (12 BYTES)"
9985 PRINT "* USING VARIABLES IN PLACE OF   NUMBERS CAN SAVE MEMORY."
9986 PRINT "* USE:Z0,I,II,III,IV,FIV,VI,VII,VIII,IX,TEN,XX,XXX IN PLACE OF:0,1,2,3,4,5,6,7,8,9,10,20,30."
9987 PRINT "* LIST 9802 TO SEE."
9988 STOP 
9989 GOTO HELP
9997 REM %M%/%L% %C%0%D%E% %T%E%M%P%L%A%T%E%S
9998 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.......   /\.'
9999 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.........1.......   /\.'
Scroll to Top
A itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"C itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"C

Super Utility

Products: Super Utility
Developer(s): William J. Pedersen
Date: 1983
Type: Cassette
Platform(s): TS 1000

Utility for working with machine language programs and memory.

Content

Appears On

Related Products

Utility for working with machine language programs and memory.

Related Articles

Related Content

Image Gallery

Super Utility

Source Code

   1 REM %U%T%I%L%I%T%Y
   2 REM *************
   3 REM COPYRIGHT NOV 14, 1983 BY WILLIAM J. PEDERSEN. 1120 MERRIFIELD S.E., GRAND RAPIDS, MICHIGAN  49507
   4 REM REPRODUCTION OR USE OF THIS PROGRAM IS PROHIBITED WITHOUT EXPRESS WRITTEN PERMISSION.
   5 REM *************
   7 REM \7E\E6\E0\FE\C0\28\0E\F2\99\41\FE\80\28\07\F2\A2\41\FE\60\28\10\23\22\93\41\ED\5B\93\7B\19\23\23\C9\11\0C\00\19\11\06\00\19\C9\23\CB\7E\28\FB\18\F4\F5\D5\E5\2A\DB\42\ED\4B\DF\42\ED\5B\E7\42\1A\ED\B1\20\1B\22\DB\42\ED\43\DF\42\2B\ED\4B\E5\42\1A\ED\A1\20\DF\13\EA\C8\41\ED\4B\DB\42\18\21\01\03\D9\18\1C\F5\D5\E5\21\00\00\22\DB\42\21\FF\1F\22\DF\42\18\BF\00\00\D9\18\06
   8 REM \E1\D1\FD\2A\00\40\3E\1E\ED\47\F1\C9\F5\D5\E5\2A\10\40\22\DB\42\3E\80\BE\28\E6\CB\6E\F5\CD\78\41\22\DD\42\F1\20\08\2A\DD\42\22\DB\42\18\E7\CD\2E\42\2A\DB\42\18\DF\2A\DB\42\E5\ED\5B\DD\42\D5\AF\ED\52\EB\2A\1C\40\19\22\1C\40\2A\1A\40\19\22\1A\40\2A\14\40\E5\19\22\14\40\E1\D1\AF\ED\52\E5\C1\03\2A\DB\42\EB\ED\B0\E1\C9\1B\1B\1B\1B\1D\1B\1B\1B\1B\1B\1B\00\00\00\00\18\06
   9 REM \DC\07\F2\03\D9\FA\9C\AD\EA\78\42\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\57\1B\95\7B\A8\04\1B\1B\1B\1B\02\00\78\42\1B\1B\1B\1B\1B\1B\1E\1B\1B
8100 REM %M%A%P
8101 CLS 
8102 PRINT ,,"    % %M%E%M%O%R%Y% %M%A%P%  ";Z$
8103 LET G$="\##\##%P\:.\'.\':%V\:'\..\':%U%U\.'\.'1638420479204802457524576286712867232767ABCEFG0 PROGRAM =VARIABLES=AVAIL MEM=RAMTOP UP="
8104 LET H$="16509"
8105 LET Q=1
8106 LET S=37
8107 LET I$=CHR$ S
8108 FOR K=IV TO XX-I STEP FIV
8109 LET T=II*K+VII
8110 LET L=53.4+II*K/FIV
8111 LET D$=H$
8112 GOSUB SYSV
8113 LET TT=VAL D$
8114 LET D$=G$(L)
8115 GOSUB SYSV
8116 LET QQ=VAL D$
8117 IF QQ=Z0 THEN LET QQ=32768
8118 LET LL=54+II*K
8119 PRINT AT K-I,Z0;G$(LL TO LL+IX);QQ-TT;" BYTES."
8120 LET H$=G$(L+I)
8121 FOR N=Z0 TO 31
8122 PRINT AT K,N;G$(Q);
8123 LET B=13107.2+F7*N+819.2*K
8124 LET D$=I$
8125 GOSUB SYSV
8126 LET BB=VAL D$
8127 IF BB-B<F6 THEN PRINT AT K,N;G$(Q+I);
8128 IF BB>B+F7 THEN GOTO 8137
8129 LET Q=Q+II
8130 LET S=S+I
8131 LET D$=CHR$ S
8132 GOSUB SYSV
8133 LET I$=D$
8134 IF LEN I$<II THEN LET I$="65536"
8135 IF VAL I$>B+F7 THEN GOTO 8137
8136 GOTO 8130
8137 NEXT N
8138 PRINT G$(T TO T+IV);TAB 27;G$(T+FIV TO T+IX)
8139 NEXT K
8140 STOP 
8141 GOTO HELP
8999 REM % %D%I%S%A%S%S%E%M%B%L%E%R% 
9000 PRINT AT XX,Z0;"DISASSEMBLE STARTING WHERE?"
9001 INPUT WB
9002 CLS 
9003 LET WL=Z0
9004 LET WIA=WB
9005 LET WFS=Z0
9006 LET WFN=I
9007 LET WFK=Z0
9008 LET WF=Z0
9009 LET WFW=Z0
9010 LET WV=Z0
9011 LET G$=""
9012 LET WN=112
9013 LET WL=WL+I
9014 LET WP=PEEK WB
9015 IF WP<>221 AND WP<>253 THEN GOTO 9021
9016 IF WFK THEN GOTO ERR
9017 LET WF=I+(I AND WP=253)
9018 LET WFK=I
9019 LET WB=WB+I
9020 GOTO 9014
9021 IF WP<>203 THEN GOTO 9034
9022 LET WFN=Z0
9023 LET WJ=345
9024 LET WB=WB+I+WFK
9025 LET WP=PEEK WB
9026 LET W1=INT (WP/F6)
9027 LET W=WP-F6*W1
9028 LET W2=INT (W/VIII)
9029 LET W=W-VIII*W2
9030 IF WFK AND W<>VI THEN GOTO ERR
9031 IF W1 THEN LET T$(WJ)=CHR$ (97+W1)+CHR$ (F4+I+W2)+CHR$ (W+I)
9032 IF NOT W1 THEN LET T$(WJ)=CHR$ (49+W2)+CHR$ (W+I)+CHR$ 97
9033 GOTO 9042
9034 LET WJ=I+PEEK WB
9035 LET WW=Z0
9036 IF WP<>237 THEN GOTO 9040
9037 LET WB=WB+I
9038 LET WW=PEEK WB
9039 LET WJ=193+WW-(36 AND WW>159)
9040 IF WW>123 AND WW<160 OR WJ>344 THEN GOTO ERR
9041 LET WDIS=PEEK (WB+I)
9042 LET V$=""
9043 LET W0=CODE T$(WJ,I)
9044 IF W0=WN+IV THEN GOTO ERR
9045 IF W0<>WN-IV THEN GOTO 9048
9046 LET WV=VAL (W$(CODE T$(WJ,II)))
9047 LET G$=" "
9048 GOSUB 9066
9049 LET B$=I$+" "
9050 LET W0=CODE T$(WJ,II)
9051 GOSUB 9066
9052 IF I$="" THEN GOTO 9063
9053 IF WP=211 THEN LET I$="(N)"
9054 LET B$=B$+I$
9055 LET W0=CODE T$(WJ,III)
9056 GOSUB 9066
9057 IF I$="" THEN GOTO 9060
9058 IF WP=219 THEN LET I$="(N)"
9059 LET B$=B$+","+I$
9060 IF WFK AND NOT WFW THEN GOTO ERR
9061 LET V$=STR$ WV
9062 IF NOT LEN G$ AND WV=Z0 THEN LET V$=""
9063 PRINT WIA;TAB VI;B$;TAB XX-I;V$+G$
9064 LET WB=WB+I+WFS*WFN
9065 GOTO 9004
9066 LET I$=W$(W0)
9067 GOSUB DTB
9068 IF W0=WN+FIV THEN GOSUB 9094
9069 IF W0<>WN+VI THEN GOTO 9075
9070 LET WB=WB+WFK+I
9071 LET WFN=Z0
9072 LET WV=PEEK WB
9073 IF WP=211 OR WP=219 THEN GOTO 9078
9074 LET G$=":"+CHR$ WV+":"
9075 IF WV>=F5 THEN GOTO 9078
9076 LET W=F4+I+III*WV
9078 IF W0<WN+VII THEN GOTO 9085
9079 LET WB=WB+II
9080 LET G$=" "
9081 LET WFN=Z0
9082 LET E=WB-I
9083 GOSUB DB
9084 LET WV=E
9085 IF NOT WFK THEN GOTO 9092
9086 IF W0=VII OR W0=61 OR W0=WN THEN LET WFW=I
9087 IF W0<>VII THEN GOTO 9091
9088 LET WFS=I
9089 GOSUB 9095
9090 LET I$=W$(WN+WF, TO III)+I$+")"
9091 IF W0=61 THEN LET I$=W$(WN+WF,II TO III)
9092 IF W0=WN THEN LET I$=W$(WN+WF)
9093 RETURN 
9094 LET WB=WB+I
9095 LET W=WDIS
9096 IF W<F7 THEN GOTO 9098
9097 LET W=W-F8
9098 IF NOT WFK THEN LET W=W+II
9099 IF W>=Z0 THEN LET I$="+"+STR$ W
9100 IF W<Z0 THEN LET I$=STR$ W
9101 IF B$( TO II)="JR" OR B$( TO II)="DJ" THEN LET WV=WIA+W
9102 RETURN 
9103 PRINT "ERROR AT ";WIA;". ",
9104 FOR J=Z0 TO III
9105 PRINT PEEK (WIA+J);" ";
9106 NEXT J
9107 PRINT 
9108 GOTO 9004
9120 REM %W%C%O%D
9121 CLS 
9122 PRINT ,," T$(345,3) TABLE FOR DECODING","MOST Z80 INSTRUCTIONS.",,,"N   VALUES      INTERPRETATION",,,
9123 FOR N=I TO 345
9124 PRINT N;" ";
9125 FOR K=I TO III
9126 PRINT CODE T$(N,K);" ";
9127 NEXT K
9128 PRINT ,
9129 FOR K=I TO III
9130 PRINT W$(CODE T$(N,K));" ";
9131 NEXT K
9132 PRINT 
9133 NEXT N
9134 STOP 
9135 REM %W%S%T%R
9136 CLS 
9137 PRINT ,," W$(120,4) ARRAY FOR MNEMONICS.",,,
9138 FOR N=I TO 120
9139 PRINT TAB VI;"W$(";N;")=","""";W$(N);""""
9140 NEXT N
9141 STOP 
9142 GOTO WCOD
9200 REM %E%D%I%T
9201 CLS 
9202 LET L=9228
9203 LET M=9317
9206 PRINT ,,"% %M%A%C%H%I%N%E% %L%A%N%G%U%A%G%E% %E%D%I%T%O%R% ",,,"WHERE ABOVE 16759?  START ";
9207 INPUT B
9208 PRINT B,"SELECT BY NO."
9209 FOR N=VI TO F4+I
9210 PRINT AT N,F4;"                "
9211 NEXT N
9212 PRINT AT IV,XX;"NOW   ";B
9213 PRINT ,," 1 SINGLE BYTE",," 2 DOUBLE BYTE",," 3 LD HL,(NN)",," 4 LD (NN),HL",," 5 PUSH SEQ",," 6 LD (NN),BC",," 7 LD BC,(NN)",," 8 LD (NN),DE",," 9 LD DE,(NN)",,"10 SBC HL,BC",,"11 ADC HL,BC",,"12 SBC HL,DE",,"13 ADC HL,DE",,"14 JUMPS",,"15 %Q%U%I%T"
9214 INPUT N
9215 IF N<I OR N>F4-II THEN GOTO M
9216 PRINT AT N+FIV,F4;"% "
9217 GOTO L-F4+VI*N
9218 INPUT K
9219 IF K<0 OR K>FF THEN GOTO M
9220 POKE B,K
9221 LET B=B+I
9222 GOTO 9209
9224 INPUT K
9225 IF K<0 OR K>=F8*F8 THEN GOTO M
9226 POKE B+I,INT (K/F8)
9227 POKE B,K-F8*INT (K/F8)
9228 LET B=B+II
9229 GOTO 9209
9236 POKE B,XXX+N
9237 LET B=B+I
9238 GOTO L-IV
9242 POKE B,245
9243 POKE B+I,213
9244 POKE B+II,229
9245 LET B=B+I
9246 GOTO L
9266 POKE B,237  
9267 POKE B+I,XX-I+VIII*N  
9268 LET B=B+II
9269 GOTO L-IV
9290 POKE B,237  
9291 POKE B+I,VIII*N-F4+II  
9292 GOTO L
9296 PRINT AT F4,F4;"JUMP TO?"
9297 INPUT N
9298 IF N<16760 OR N>=F8*F8 THEN GOTO M
9299 LET W=(B-N)>F7+I OR B-N<-F7+II
9300 PRINT AT VI,F4;"WHICH CONDITION?",AT VIII,F4;" 1 DJNZ",AT IX,F4;" 2 NONE",AT TEN,F4;" 3 NZ",AT TEN+I,F4;" 4  Z",AT VI+VI,F4;" 5 NC",AT IX+IV,F4;" 6  C",AT F4-II,F4;" 7 PO",AT F4-I,F4;" 8 PE",AT F4,F4;" 9  P   ",AT F4+I,F4;"10  M"   
9301 INPUT S
9302 IF S<I OR S>TEN THEN GOTO M
9303 IF W OR S>VI THEN GOTO 9309
9304 LET N=N-B-II
9305 IF N>=F7 THEN LET N=F7-N
9306 POKE B,VIII+VIII*S
9307 POKE B+I,N
9308 GOTO L
9309 IF S=I THEN GOTO M
9310 POKE B,170+VIII*S
9311 IF S=II THEN POKE B,195
9312 LET B=B+I
9313 LET P3=INT (N/F8)
9314 POKE B,N-F8*P3
9315 POKE B+I,P3
9316 GOTO L
9317 CLS 
9318 PRINT AT IX,Z0;"%Q%U%I%T OR AN ERROR HAS OCCURRED.  THE LAST LOCATION WAS ";B;".","CONTINUE FOR DISASSEMBLER."
9319 STOP 
9320 GOTO DISA
9449 REM %S%E%A%R%C%H
9450 CLS 
9451 LET Q=Z0
9452 LET E=I
9453 PRINT ,,"OBJECTIVE/TITLE?",
9454 INPUT G$
9455 PRINT AT I,Z0;G$;"                ";AT II,Z0;"PRINT? %YES OR %NO",
9456 LET W=Z0
9457 INPUT H$
9458 IF LEN H$ THEN IF H$(I)="Y" THEN LET W=I
9459 PRINT AT II,Z0;"INPUT YOUR CODE          ",
9460 INPUT L
9461 IF L>FF THEN GOTO 9481
9462 PRINT AT II,Z0;"IF DOUBLE BYTE, ENTER ""D"""
9463 INPUT H$
9464 IF LEN H$ THEN IF H$(I)="D" THEN GOTO 9481
9465 POKE 17015+E,L
9466 LET E=E+I
9467 PRINT AT II,Z0;"ANOTHER ENTRY? %YES OR %NO",
9468 INPUT H$
9469 IF LEN H$ THEN IF H$(I)="Y" THEN GOTO 9459
9470 CLS 
9471 IF NOT W THEN PRINT ,,G$
9472 IF W THEN LPRINT G$
9473 POKE 17125,E-I
9474 LET K=USR 16860
9475 GOTO 9477
9476 LET K=USR 16809
9477 LET Q=Q+I
9478 IF K=55555 THEN GOTO 9486
9479 GOSUB 9490+II*W
9480 GOTO 9476
9481 LET P2=INT (L/F8+II**-IX)
9482 POKE 17016+E,P2
9483 POKE 17015+E,L-F8*P2
9484 LET E=E+II
9485 GOTO 9467
9486 IF NOT W THEN PRINT "$";Q-I
9487 IF W THEN LPRINT "$";Q-I
9488 STOP 
9489 GOTO SEARCH
9490 PRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9491 RETURN 
9492 LPRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9493 RETURN 
9499 STOP 
9500 REM %V%L%S%T
9501 CLS 
9502 PRINT ,,,,"   %V%A%R%I%A%B%L%E%S",,,
9503 LET E=16400
9504 GOSUB DB
9505 LET L=E-I
9506 LET T=Z0
9507 LET T=T+I
9508 LET L=L+I
9509 LET B=L
9510 IF LEN H$>I THEN IF H$( TO II)="H$" THEN GOSUB VLST+XX
9511 LET CH=PEEK L
9512 PRINT TAB III-LEN STR$ T;T;" ";
9512 LET TP=INT (CH/F5)
9514 LET CH=CH-TP*F5+F5
9515 LET H$=CHR$ CH
9516 GOSUB VLST-F5+F5*TP
9517 LET E=TP=II OR TP=VI
9518 IF E THEN PRINT H$;TAB XX+VI;B
9519 IF NOT E THEN PRINT H$;TAB XX+III-LEN STR$ Q;Q;TAB XX+VI;B
9520 GOTO VLST+VI
9521 PRINT ,,"   %E%N%D% %O%F% %L%I%S%T ";L
9522 LET H$="***"
9523 STOP 
9524 GOTO VLST
9532 REM %S%T%R%I%N%G
9533 LET H$=H$+"$ "
9534 LET E=L+I
9535 GOSUB DB
9536 FOR Q=I TO (E AND E<F4)+(F4 AND E>=F4)
9537 LET H$=H$+CHR$ PEEK (L+II+Q)
9538 NEXT Q
9539 LET L=L+II+E
9540 RETURN 
9564 REM %S%I%N%G%L
9565 LET Q=VAL H$
9566 LET L=L+FIV
9567 RETURN 
9596 REM %N%(%)
9597 LET H$=H$+"("
9598 LET I$=H$
9599 LET S=PEEK (L+III)
9600 FOR Q=I TO S
9601 LET E=L+II+II*Q
9602 GOSUB DB
9603 IF Q>=S THEN GOTO VLST+105
9604 LET H$=H$+STR$ E+","
9605 LET I$=I$+"1,"
9606 NEXT Q
9607 LET H$=H$+STR$ E+")"
9608 LET I$=I$+"1)"
9609 LET Q=VAL I$
9610 LET E=L+I
9611 GOSUB DB
9612 LET L=L+II+E
9613 RETURN 
9628 REM %M%U%L%T
9629 LET L=L+I
9630 LET CH=PEEK L
9631 IF INT (CH/F6)=II THEN GOTO VLST+133
9632 LET H$=H$+CHR$ CH
9633 GOTO VLST+F7
9634 LET H$=H$+CHR$ (CH-F7)
9635 LET Q=VAL H$
9636 LET L=L+FIV
9637 RETURN 
9660 REM %$%(%)
9661 LET H$=H$+"$("
9662 LET S=PEEK (L+III)
9663 FOR Q=I TO S
9664 LET E=L+II+II*Q
9665 GOSUB DB
9666 IF Q>=S THEN GOTO VLST+168
9667 LET H$=H$+STR$ E+","
9668 NEXT Q
9669 LET H$=H$+STR$ E+")"
9670 LET E=L+VI
9671 LET U=L+III+II*S
9672 GOSUB DB
9674 FOR Q=U TO U+(E AND E<F4)+(F4 AND E>=F4)
9675 LET H$=H$+CHR$ PEEK Q
9676 NEXT Q
9677 GOTO VLST+109
9692 REM %F%-%N
9693 LET Q=VAL H$
9694 LET H$=H$+" FOR-NEXT"
9695 LET L=L+XX-III
9696 RETURN 
9697 REM %D%T%B
9698 FOR J=LEN I$ TO I STEP -I
9699 IF I$(J)=" " THEN NEXT J
9700 LET I$=I$( TO J)
9701 RETURN 
9702 REM %D%B
9703 LET E=F8*PEEK (E+I)+PEEK E
9704 RETURN 
9705 REM %S%R%C%H
9706 CLS 
9707 PRINT AT IX,I;"WRITE YOUR STRING WITHOUT LINE NUMBER.  ADD A QUOTE AND PRECEDESTRING WITH",,,," LET H$=""",,,," THEN ENTER AND CONTINUE."
9708 LET E=17116
9709 STOP 
9710 POKE E+IX,LEN H$
9711 POKE E-I,247
9712 POKE E,66
9713 LET K=PEEK 16396+F8*PEEK 16397-17143
9714 LET S=INT (K/F8)
9715 LET K=K-F8*S
9716 POKE E+III,K
9717 POKE E+IV,S
9718 FOR E=I TO LEN H$
9719 POKE (E+17015),CODE H$(E)
9720 NEXT E
9721 CLS 
9722 PRINT ,,"""";H$;"""";TAB Z0;,,
9723 LET K=USR 16809
9724 IF K=55555 THEN GOTO 9740
9727 LET Q=K
9728 LET Q=Q-I
9729 IF PEEK Q<>118 THEN GOTO 9728
9730 IF K-Q<IV THEN GOTO 9723
9732 LET E=F8*PEEK (Q+I)+PEEK (Q+II)
9733 LET K=F8*PEEK (Q+IV)+PEEK (Q+III)
9734 LET I$=""
9735 FOR Q=Q+FIV TO Q+III+K
9736 LET I$=I$+CHR$ PEEK Q
9737 NEXT Q
9738 PRINT E;TAB FIV;I$
9739 GOTO 9723
9740 PRINT ,,"  % %S%E%A%R%C%H% %C%O%M%P%L%E%T%E% "
9741 STOP 
9742 GOTO 9706
9750 REM %S%P%Y
9751 PRINT AT XX+I,Z0;"LOOK AT NO./%QUIT/%HIGHER/%L0WER"
9752 INPUT H$
9753 IF H$<>"Q" THEN GOTO 9755
9754 STOP 
9755 IF H$<>"H" THEN GOTO 9758
9756 LET B=B+F4
9757 GOTO 9762
9758 IF H$<>"L" THEN GOTO 9761
9759 LET B=B-F4
9760 GOTO 9762
9761 LET B=VAL H$
9762 CLS 
9763 FOR E=B TO B+XX+I
9764 PRINT E;TAB VI;PEEK E;TAB TEN;":";CHR$ PEEK E;":";TAB XX;F8*PEEK (E+I)+PEEK E
9765 NEXT E
9766 GOTO 9752
9800 REM %P%U%R%G
9801 LET N(1)=USR 16900
9802 REM %I%N%I%T%I%A%L%I%Z%A%T%I%O%N%S
9810 LET I=1
9811 LET Z0=I-I
9812 LET II=I+I
9813 LET III=II+I
9814 LET IV=II+II
9815 LET FIV=IV+I
9816 LET VI=IV+II
9817 LET VII=VI+I
9818 LET VIII=IV+IV
9819 LET IX=VIII+I
9820 LET TEN=IX+I
9821 LET XX=II*TEN
9822 LET XXX=30
9823 LET F4=II*VIII
9824 LET F5=II*F4
9825 LET F6=II*F5
9826 LET F7=II*F6
9827 LET F8=256
9828 LET FF=F8-I
9829 LET IK=I/F8/F8
9840 REM %K%E%Y%S
9841 LET VLST=9501
9842 LET DB=9703
9843 LET PURG=9801
9844 LET MEM=9916
9845 LET ZZ=9953
9846 LET ZZZ=ZZ-I
9847 LET ZZZZ=ZZ-II
9848 LET SAVE=9900
9849 LET SYSV=9928
9850 LET MAP=8101
9851 LET SEARCH=9450
9852 LET SRCH=9706
9853 LET HELP=9961
9854 LET SPY=9751
9855 LET DISA=9000
9856 LET ERR=9103
9857 LET DTB=9698
9858 LET WCOD=9121
9859 LET WSTR=9136
9860 LET NTRY=HELP
9861 LET EDIT=9201
9892 CLS 
9893 PRINT ,,,,"* TO DELETE STRINGS AND ARRAYS, REDIMENSION THEM TO ZERO."
9894 PRINT ,,"   DIM (NAME)$(0)  OR"
9895 PRINT ,,"   DIM (NAME)(0)"
9896 PRINT ,,"   THIS WILL PULL ERROR 3/0 BUT"," THE JOB IS DONE."
9897 STOP 
9898 GOTO VLST
9899 REM %S%A%V%E
9900 CLS 
9901 PRINT ,,,,"""";Z$;""" IS TO BE SAVED.",,,"START RECORDER.  PRESS ANY KEY.",,,Q$,,
9902 PRINT "MODE IS ";"LOOPING" AND NOT (NTRY-SAVE);"HELP" AND NOT (NTRY-HELP);"LOAD-AND-GO" AND NOT (NTRY-1000)
9903 SLOW 
9904 IF NTRY<>SAVE THEN PAUSE 40000
9905 FOR N=F6 TO I STEP -I
9906 UNPLOT N-I,XXX
9907 NEXT N
9908 SAVE Z$
9909 FAST 
9910 CLS 
9911 PRINT Y$;X$
9912 PRINT AT IX+VI,VII;"PRESENTS***"
9913 GOSUB ZZZ
9914 GOTO NTRY
9915 REM %M%E%M
9916 LET L=F8*(PEEK 16387-PEEK 16413)+PEEK 16386-PEEK 16412
9917 LET E=INT (L/F5/F5)
9918 PRINT AT IX,Z0;"MEMORY LEFT IS:";E;" K, ";L-F5*F5*E;" BYTES.",,,"(";L;" BYTES)"
9919 IF L<F8+XX THEN PRINT ,,"CAUTION: LIST EDITING MAY BE IMPAIRED."
9920 STOP 
9921 GOTO MAP
9927 REM %S%Y%S%V
9928 LET E=II*CODE D$-75
9929 IF E<I OR E>13 THEN GOTO 9933
9930 LET E$="10141824260002"
9931 LET E=VAL E$(E TO E+I)+16386
9932 LET D$=STR$ (F8*PEEK (E+I)+PEEK E)
9933 RETURN 
9950 REM %S%L%E%E%P
9951 LET ZZ=ZZ+F8
9952 LET ZZ=ZZ+F7
9953 LET ZZ=ZZ+F6
9954 LET ZZ=ZZ+F5
9955 LET E=ZZ-ZZZ+F5
9956 LET ZZ=ZZZ+I
9957 PAUSE E
9958 POKE 16437,FF
9959 RETURN 
9960 REM %H%E%L%P
9961 CLS 
9962 LET PAGE=I
9963 LET H$="% %H%E%L%P%  PAGE "
9964 PRINT AT I,IX;H$;PAGE
9965 PRINT ,,"* USE GOTO FOR DESIRED LOCATION,",,"* LET Z$=""(YOUR PROGRAM NAME)""",,,"* LET NTRY=1000 IF YOU WANT YOUR PROGRAM TO RUN AFTER LOADING." 
9966 PRINT ,,"* Z$=""";Z$;""""
9967 LET I$="% %K%E%Y%W%O%R%D% %L%I%N%E% %F%U%N%C%T%I%O%N% "
9968 PRINT ,,I$,"""HELP""   9960 HERE.","""VLST""   9500 VARIABLE LIST.","""MEM""    9915 AVAILABLE MEMORY. ""SAVE""   9900 SAVE PROGRAM,"
9969 PRINT """NTRY""   HELP UNLESS CHANGED."
9970 PRINT """PURG""   9800 DELETE VARIABLES."
9971 PRINT """MAP""    8100 MEMORY MAP."
9972 PRINT """SPY""    9750 LOOK AT MEMORY."
9973 PRINT """DISA""   9000 DISASSEMBLE."
9974 LET PAGE=II
9975 PRINT 
9976 CLS 
9977 PRINT AT I,IX;H$;PAGE,,,I$
9978 PRINT """WCOD""   9120 DECODE TABLE."
9979 PRINT """WSTD""   9135 MNEMONICS."
9980 PRINT """SRCH""   9705 BASIC CODE."
9981 PRINT """SEARCH"" 9450 ROM SPACE."
9982 PRINT """EDIT""   9200 MACH CODE."
9983 PRINT "*""GOTO VLST"" CODES AS:","  :236:V:L:S:T: (5 BYTES)" 
9984 PRINT "*""GOTO 9500"" CODES AS:","  :235:9:5:0:0:126:EXP:B4:B3:B2:B1:B0: (12 BYTES)"
9985 PRINT "* USING VARIABLES IN PLACE OF   NUMBERS CAN SAVE MEMORY."
9986 PRINT "* USE:Z0,I,II,III,IV,FIV,VI,VII,VIII,IX,TEN,XX,XXX IN PLACE OF:0,1,2,3,4,5,6,7,8,9,10,20,30."
9987 PRINT "* LIST 9802 TO SEE."
9988 STOP 
9989 GOTO HELP
9997 REM %M%/%L% %C%0%D%E% %T%E%M%P%L%A%T%E%S
9998 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.......   /\.'
9999 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.........1.......   /\.'
Scroll to Top
A itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"A itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"A

Super Utility

Products: Super Utility
Developer(s): William J. Pedersen
Date: 1983
Type: Cassette
Platform(s): TS 1000

Utility for working with machine language programs and memory.

Content

Appears On

Related Products

Utility for working with machine language programs and memory.

Related Articles

Related Content

Image Gallery

Super Utility

Source Code

   1 REM %U%T%I%L%I%T%Y
   2 REM *************
   3 REM COPYRIGHT NOV 14, 1983 BY WILLIAM J. PEDERSEN. 1120 MERRIFIELD S.E., GRAND RAPIDS, MICHIGAN  49507
   4 REM REPRODUCTION OR USE OF THIS PROGRAM IS PROHIBITED WITHOUT EXPRESS WRITTEN PERMISSION.
   5 REM *************
   7 REM \7E\E6\E0\FE\C0\28\0E\F2\99\41\FE\80\28\07\F2\A2\41\FE\60\28\10\23\22\93\41\ED\5B\93\7B\19\23\23\C9\11\0C\00\19\11\06\00\19\C9\23\CB\7E\28\FB\18\F4\F5\D5\E5\2A\DB\42\ED\4B\DF\42\ED\5B\E7\42\1A\ED\B1\20\1B\22\DB\42\ED\43\DF\42\2B\ED\4B\E5\42\1A\ED\A1\20\DF\13\EA\C8\41\ED\4B\DB\42\18\21\01\03\D9\18\1C\F5\D5\E5\21\00\00\22\DB\42\21\FF\1F\22\DF\42\18\BF\00\00\D9\18\06
   8 REM \E1\D1\FD\2A\00\40\3E\1E\ED\47\F1\C9\F5\D5\E5\2A\10\40\22\DB\42\3E\80\BE\28\E6\CB\6E\F5\CD\78\41\22\DD\42\F1\20\08\2A\DD\42\22\DB\42\18\E7\CD\2E\42\2A\DB\42\18\DF\2A\DB\42\E5\ED\5B\DD\42\D5\AF\ED\52\EB\2A\1C\40\19\22\1C\40\2A\1A\40\19\22\1A\40\2A\14\40\E5\19\22\14\40\E1\D1\AF\ED\52\E5\C1\03\2A\DB\42\EB\ED\B0\E1\C9\1B\1B\1B\1B\1D\1B\1B\1B\1B\1B\1B\00\00\00\00\18\06
   9 REM \DC\07\F2\03\D9\FA\9C\AD\EA\78\42\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\57\1B\95\7B\A8\04\1B\1B\1B\1B\02\00\78\42\1B\1B\1B\1B\1B\1B\1E\1B\1B
8100 REM %M%A%P
8101 CLS 
8102 PRINT ,,"    % %M%E%M%O%R%Y% %M%A%P%  ";Z$
8103 LET G$="\##\##%P\:.\'.\':%V\:'\..\':%U%U\.'\.'1638420479204802457524576286712867232767ABCEFG0 PROGRAM =VARIABLES=AVAIL MEM=RAMTOP UP="
8104 LET H$="16509"
8105 LET Q=1
8106 LET S=37
8107 LET I$=CHR$ S
8108 FOR K=IV TO XX-I STEP FIV
8109 LET T=II*K+VII
8110 LET L=53.4+II*K/FIV
8111 LET D$=H$
8112 GOSUB SYSV
8113 LET TT=VAL D$
8114 LET D$=G$(L)
8115 GOSUB SYSV
8116 LET QQ=VAL D$
8117 IF QQ=Z0 THEN LET QQ=32768
8118 LET LL=54+II*K
8119 PRINT AT K-I,Z0;G$(LL TO LL+IX);QQ-TT;" BYTES."
8120 LET H$=G$(L+I)
8121 FOR N=Z0 TO 31
8122 PRINT AT K,N;G$(Q);
8123 LET B=13107.2+F7*N+819.2*K
8124 LET D$=I$
8125 GOSUB SYSV
8126 LET BB=VAL D$
8127 IF BB-B<F6 THEN PRINT AT K,N;G$(Q+I);
8128 IF BB>B+F7 THEN GOTO 8137
8129 LET Q=Q+II
8130 LET S=S+I
8131 LET D$=CHR$ S
8132 GOSUB SYSV
8133 LET I$=D$
8134 IF LEN I$<II THEN LET I$="65536"
8135 IF VAL I$>B+F7 THEN GOTO 8137
8136 GOTO 8130
8137 NEXT N
8138 PRINT G$(T TO T+IV);TAB 27;G$(T+FIV TO T+IX)
8139 NEXT K
8140 STOP 
8141 GOTO HELP
8999 REM % %D%I%S%A%S%S%E%M%B%L%E%R% 
9000 PRINT AT XX,Z0;"DISASSEMBLE STARTING WHERE?"
9001 INPUT WB
9002 CLS 
9003 LET WL=Z0
9004 LET WIA=WB
9005 LET WFS=Z0
9006 LET WFN=I
9007 LET WFK=Z0
9008 LET WF=Z0
9009 LET WFW=Z0
9010 LET WV=Z0
9011 LET G$=""
9012 LET WN=112
9013 LET WL=WL+I
9014 LET WP=PEEK WB
9015 IF WP<>221 AND WP<>253 THEN GOTO 9021
9016 IF WFK THEN GOTO ERR
9017 LET WF=I+(I AND WP=253)
9018 LET WFK=I
9019 LET WB=WB+I
9020 GOTO 9014
9021 IF WP<>203 THEN GOTO 9034
9022 LET WFN=Z0
9023 LET WJ=345
9024 LET WB=WB+I+WFK
9025 LET WP=PEEK WB
9026 LET W1=INT (WP/F6)
9027 LET W=WP-F6*W1
9028 LET W2=INT (W/VIII)
9029 LET W=W-VIII*W2
9030 IF WFK AND W<>VI THEN GOTO ERR
9031 IF W1 THEN LET T$(WJ)=CHR$ (97+W1)+CHR$ (F4+I+W2)+CHR$ (W+I)
9032 IF NOT W1 THEN LET T$(WJ)=CHR$ (49+W2)+CHR$ (W+I)+CHR$ 97
9033 GOTO 9042
9034 LET WJ=I+PEEK WB
9035 LET WW=Z0
9036 IF WP<>237 THEN GOTO 9040
9037 LET WB=WB+I
9038 LET WW=PEEK WB
9039 LET WJ=193+WW-(36 AND WW>159)
9040 IF WW>123 AND WW<160 OR WJ>344 THEN GOTO ERR
9041 LET WDIS=PEEK (WB+I)
9042 LET V$=""
9043 LET W0=CODE T$(WJ,I)
9044 IF W0=WN+IV THEN GOTO ERR
9045 IF W0<>WN-IV THEN GOTO 9048
9046 LET WV=VAL (W$(CODE T$(WJ,II)))
9047 LET G$=" "
9048 GOSUB 9066
9049 LET B$=I$+" "
9050 LET W0=CODE T$(WJ,II)
9051 GOSUB 9066
9052 IF I$="" THEN GOTO 9063
9053 IF WP=211 THEN LET I$="(N)"
9054 LET B$=B$+I$
9055 LET W0=CODE T$(WJ,III)
9056 GOSUB 9066
9057 IF I$="" THEN GOTO 9060
9058 IF WP=219 THEN LET I$="(N)"
9059 LET B$=B$+","+I$
9060 IF WFK AND NOT WFW THEN GOTO ERR
9061 LET V$=STR$ WV
9062 IF NOT LEN G$ AND WV=Z0 THEN LET V$=""
9063 PRINT WIA;TAB VI;B$;TAB XX-I;V$+G$
9064 LET WB=WB+I+WFS*WFN
9065 GOTO 9004
9066 LET I$=W$(W0)
9067 GOSUB DTB
9068 IF W0=WN+FIV THEN GOSUB 9094
9069 IF W0<>WN+VI THEN GOTO 9075
9070 LET WB=WB+WFK+I
9071 LET WFN=Z0
9072 LET WV=PEEK WB
9073 IF WP=211 OR WP=219 THEN GOTO 9078
9074 LET G$=":"+CHR$ WV+":"
9075 IF WV>=F5 THEN GOTO 9078
9076 LET W=F4+I+III*WV
9078 IF W0<WN+VII THEN GOTO 9085
9079 LET WB=WB+II
9080 LET G$=" "
9081 LET WFN=Z0
9082 LET E=WB-I
9083 GOSUB DB
9084 LET WV=E
9085 IF NOT WFK THEN GOTO 9092
9086 IF W0=VII OR W0=61 OR W0=WN THEN LET WFW=I
9087 IF W0<>VII THEN GOTO 9091
9088 LET WFS=I
9089 GOSUB 9095
9090 LET I$=W$(WN+WF, TO III)+I$+")"
9091 IF W0=61 THEN LET I$=W$(WN+WF,II TO III)
9092 IF W0=WN THEN LET I$=W$(WN+WF)
9093 RETURN 
9094 LET WB=WB+I
9095 LET W=WDIS
9096 IF W<F7 THEN GOTO 9098
9097 LET W=W-F8
9098 IF NOT WFK THEN LET W=W+II
9099 IF W>=Z0 THEN LET I$="+"+STR$ W
9100 IF W<Z0 THEN LET I$=STR$ W
9101 IF B$( TO II)="JR" OR B$( TO II)="DJ" THEN LET WV=WIA+W
9102 RETURN 
9103 PRINT "ERROR AT ";WIA;". ",
9104 FOR J=Z0 TO III
9105 PRINT PEEK (WIA+J);" ";
9106 NEXT J
9107 PRINT 
9108 GOTO 9004
9120 REM %W%C%O%D
9121 CLS 
9122 PRINT ,," T$(345,3) TABLE FOR DECODING","MOST Z80 INSTRUCTIONS.",,,"N   VALUES      INTERPRETATION",,,
9123 FOR N=I TO 345
9124 PRINT N;" ";
9125 FOR K=I TO III
9126 PRINT CODE T$(N,K);" ";
9127 NEXT K
9128 PRINT ,
9129 FOR K=I TO III
9130 PRINT W$(CODE T$(N,K));" ";
9131 NEXT K
9132 PRINT 
9133 NEXT N
9134 STOP 
9135 REM %W%S%T%R
9136 CLS 
9137 PRINT ,," W$(120,4) ARRAY FOR MNEMONICS.",,,
9138 FOR N=I TO 120
9139 PRINT TAB VI;"W$(";N;")=","""";W$(N);""""
9140 NEXT N
9141 STOP 
9142 GOTO WCOD
9200 REM %E%D%I%T
9201 CLS 
9202 LET L=9228
9203 LET M=9317
9206 PRINT ,,"% %M%A%C%H%I%N%E% %L%A%N%G%U%A%G%E% %E%D%I%T%O%R% ",,,"WHERE ABOVE 16759?  START ";
9207 INPUT B
9208 PRINT B,"SELECT BY NO."
9209 FOR N=VI TO F4+I
9210 PRINT AT N,F4;"                "
9211 NEXT N
9212 PRINT AT IV,XX;"NOW   ";B
9213 PRINT ,," 1 SINGLE BYTE",," 2 DOUBLE BYTE",," 3 LD HL,(NN)",," 4 LD (NN),HL",," 5 PUSH SEQ",," 6 LD (NN),BC",," 7 LD BC,(NN)",," 8 LD (NN),DE",," 9 LD DE,(NN)",,"10 SBC HL,BC",,"11 ADC HL,BC",,"12 SBC HL,DE",,"13 ADC HL,DE",,"14 JUMPS",,"15 %Q%U%I%T"
9214 INPUT N
9215 IF N<I OR N>F4-II THEN GOTO M
9216 PRINT AT N+FIV,F4;"% "
9217 GOTO L-F4+VI*N
9218 INPUT K
9219 IF K<0 OR K>FF THEN GOTO M
9220 POKE B,K
9221 LET B=B+I
9222 GOTO 9209
9224 INPUT K
9225 IF K<0 OR K>=F8*F8 THEN GOTO M
9226 POKE B+I,INT (K/F8)
9227 POKE B,K-F8*INT (K/F8)
9228 LET B=B+II
9229 GOTO 9209
9236 POKE B,XXX+N
9237 LET B=B+I
9238 GOTO L-IV
9242 POKE B,245
9243 POKE B+I,213
9244 POKE B+II,229
9245 LET B=B+I
9246 GOTO L
9266 POKE B,237  
9267 POKE B+I,XX-I+VIII*N  
9268 LET B=B+II
9269 GOTO L-IV
9290 POKE B,237  
9291 POKE B+I,VIII*N-F4+II  
9292 GOTO L
9296 PRINT AT F4,F4;"JUMP TO?"
9297 INPUT N
9298 IF N<16760 OR N>=F8*F8 THEN GOTO M
9299 LET W=(B-N)>F7+I OR B-N<-F7+II
9300 PRINT AT VI,F4;"WHICH CONDITION?",AT VIII,F4;" 1 DJNZ",AT IX,F4;" 2 NONE",AT TEN,F4;" 3 NZ",AT TEN+I,F4;" 4  Z",AT VI+VI,F4;" 5 NC",AT IX+IV,F4;" 6  C",AT F4-II,F4;" 7 PO",AT F4-I,F4;" 8 PE",AT F4,F4;" 9  P   ",AT F4+I,F4;"10  M"   
9301 INPUT S
9302 IF S<I OR S>TEN THEN GOTO M
9303 IF W OR S>VI THEN GOTO 9309
9304 LET N=N-B-II
9305 IF N>=F7 THEN LET N=F7-N
9306 POKE B,VIII+VIII*S
9307 POKE B+I,N
9308 GOTO L
9309 IF S=I THEN GOTO M
9310 POKE B,170+VIII*S
9311 IF S=II THEN POKE B,195
9312 LET B=B+I
9313 LET P3=INT (N/F8)
9314 POKE B,N-F8*P3
9315 POKE B+I,P3
9316 GOTO L
9317 CLS 
9318 PRINT AT IX,Z0;"%Q%U%I%T OR AN ERROR HAS OCCURRED.  THE LAST LOCATION WAS ";B;".","CONTINUE FOR DISASSEMBLER."
9319 STOP 
9320 GOTO DISA
9449 REM %S%E%A%R%C%H
9450 CLS 
9451 LET Q=Z0
9452 LET E=I
9453 PRINT ,,"OBJECTIVE/TITLE?",
9454 INPUT G$
9455 PRINT AT I,Z0;G$;"                ";AT II,Z0;"PRINT? %YES OR %NO",
9456 LET W=Z0
9457 INPUT H$
9458 IF LEN H$ THEN IF H$(I)="Y" THEN LET W=I
9459 PRINT AT II,Z0;"INPUT YOUR CODE          ",
9460 INPUT L
9461 IF L>FF THEN GOTO 9481
9462 PRINT AT II,Z0;"IF DOUBLE BYTE, ENTER ""D"""
9463 INPUT H$
9464 IF LEN H$ THEN IF H$(I)="D" THEN GOTO 9481
9465 POKE 17015+E,L
9466 LET E=E+I
9467 PRINT AT II,Z0;"ANOTHER ENTRY? %YES OR %NO",
9468 INPUT H$
9469 IF LEN H$ THEN IF H$(I)="Y" THEN GOTO 9459
9470 CLS 
9471 IF NOT W THEN PRINT ,,G$
9472 IF W THEN LPRINT G$
9473 POKE 17125,E-I
9474 LET K=USR 16860
9475 GOTO 9477
9476 LET K=USR 16809
9477 LET Q=Q+I
9478 IF K=55555 THEN GOTO 9486
9479 GOSUB 9490+II*W
9480 GOTO 9476
9481 LET P2=INT (L/F8+II**-IX)
9482 POKE 17016+E,P2
9483 POKE 17015+E,L-F8*P2
9484 LET E=E+II
9485 GOTO 9467
9486 IF NOT W THEN PRINT "$";Q-I
9487 IF W THEN LPRINT "$";Q-I
9488 STOP 
9489 GOTO SEARCH
9490 PRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9491 RETURN 
9492 LPRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9493 RETURN 
9499 STOP 
9500 REM %V%L%S%T
9501 CLS 
9502 PRINT ,,,,"   %V%A%R%I%A%B%L%E%S",,,
9503 LET E=16400
9504 GOSUB DB
9505 LET L=E-I
9506 LET T=Z0
9507 LET T=T+I
9508 LET L=L+I
9509 LET B=L
9510 IF LEN H$>I THEN IF H$( TO II)="H$" THEN GOSUB VLST+XX
9511 LET CH=PEEK L
9512 PRINT TAB III-LEN STR$ T;T;" ";
9512 LET TP=INT (CH/F5)
9514 LET CH=CH-TP*F5+F5
9515 LET H$=CHR$ CH
9516 GOSUB VLST-F5+F5*TP
9517 LET E=TP=II OR TP=VI
9518 IF E THEN PRINT H$;TAB XX+VI;B
9519 IF NOT E THEN PRINT H$;TAB XX+III-LEN STR$ Q;Q;TAB XX+VI;B
9520 GOTO VLST+VI
9521 PRINT ,,"   %E%N%D% %O%F% %L%I%S%T ";L
9522 LET H$="***"
9523 STOP 
9524 GOTO VLST
9532 REM %S%T%R%I%N%G
9533 LET H$=H$+"$ "
9534 LET E=L+I
9535 GOSUB DB
9536 FOR Q=I TO (E AND E<F4)+(F4 AND E>=F4)
9537 LET H$=H$+CHR$ PEEK (L+II+Q)
9538 NEXT Q
9539 LET L=L+II+E
9540 RETURN 
9564 REM %S%I%N%G%L
9565 LET Q=VAL H$
9566 LET L=L+FIV
9567 RETURN 
9596 REM %N%(%)
9597 LET H$=H$+"("
9598 LET I$=H$
9599 LET S=PEEK (L+III)
9600 FOR Q=I TO S
9601 LET E=L+II+II*Q
9602 GOSUB DB
9603 IF Q>=S THEN GOTO VLST+105
9604 LET H$=H$+STR$ E+","
9605 LET I$=I$+"1,"
9606 NEXT Q
9607 LET H$=H$+STR$ E+")"
9608 LET I$=I$+"1)"
9609 LET Q=VAL I$
9610 LET E=L+I
9611 GOSUB DB
9612 LET L=L+II+E
9613 RETURN 
9628 REM %M%U%L%T
9629 LET L=L+I
9630 LET CH=PEEK L
9631 IF INT (CH/F6)=II THEN GOTO VLST+133
9632 LET H$=H$+CHR$ CH
9633 GOTO VLST+F7
9634 LET H$=H$+CHR$ (CH-F7)
9635 LET Q=VAL H$
9636 LET L=L+FIV
9637 RETURN 
9660 REM %$%(%)
9661 LET H$=H$+"$("
9662 LET S=PEEK (L+III)
9663 FOR Q=I TO S
9664 LET E=L+II+II*Q
9665 GOSUB DB
9666 IF Q>=S THEN GOTO VLST+168
9667 LET H$=H$+STR$ E+","
9668 NEXT Q
9669 LET H$=H$+STR$ E+")"
9670 LET E=L+VI
9671 LET U=L+III+II*S
9672 GOSUB DB
9674 FOR Q=U TO U+(E AND E<F4)+(F4 AND E>=F4)
9675 LET H$=H$+CHR$ PEEK Q
9676 NEXT Q
9677 GOTO VLST+109
9692 REM %F%-%N
9693 LET Q=VAL H$
9694 LET H$=H$+" FOR-NEXT"
9695 LET L=L+XX-III
9696 RETURN 
9697 REM %D%T%B
9698 FOR J=LEN I$ TO I STEP -I
9699 IF I$(J)=" " THEN NEXT J
9700 LET I$=I$( TO J)
9701 RETURN 
9702 REM %D%B
9703 LET E=F8*PEEK (E+I)+PEEK E
9704 RETURN 
9705 REM %S%R%C%H
9706 CLS 
9707 PRINT AT IX,I;"WRITE YOUR STRING WITHOUT LINE NUMBER.  ADD A QUOTE AND PRECEDESTRING WITH",,,," LET H$=""",,,," THEN ENTER AND CONTINUE."
9708 LET E=17116
9709 STOP 
9710 POKE E+IX,LEN H$
9711 POKE E-I,247
9712 POKE E,66
9713 LET K=PEEK 16396+F8*PEEK 16397-17143
9714 LET S=INT (K/F8)
9715 LET K=K-F8*S
9716 POKE E+III,K
9717 POKE E+IV,S
9718 FOR E=I TO LEN H$
9719 POKE (E+17015),CODE H$(E)
9720 NEXT E
9721 CLS 
9722 PRINT ,,"""";H$;"""";TAB Z0;,,
9723 LET K=USR 16809
9724 IF K=55555 THEN GOTO 9740
9727 LET Q=K
9728 LET Q=Q-I
9729 IF PEEK Q<>118 THEN GOTO 9728
9730 IF K-Q<IV THEN GOTO 9723
9732 LET E=F8*PEEK (Q+I)+PEEK (Q+II)
9733 LET K=F8*PEEK (Q+IV)+PEEK (Q+III)
9734 LET I$=""
9735 FOR Q=Q+FIV TO Q+III+K
9736 LET I$=I$+CHR$ PEEK Q
9737 NEXT Q
9738 PRINT E;TAB FIV;I$
9739 GOTO 9723
9740 PRINT ,,"  % %S%E%A%R%C%H% %C%O%M%P%L%E%T%E% "
9741 STOP 
9742 GOTO 9706
9750 REM %S%P%Y
9751 PRINT AT XX+I,Z0;"LOOK AT NO./%QUIT/%HIGHER/%L0WER"
9752 INPUT H$
9753 IF H$<>"Q" THEN GOTO 9755
9754 STOP 
9755 IF H$<>"H" THEN GOTO 9758
9756 LET B=B+F4
9757 GOTO 9762
9758 IF H$<>"L" THEN GOTO 9761
9759 LET B=B-F4
9760 GOTO 9762
9761 LET B=VAL H$
9762 CLS 
9763 FOR E=B TO B+XX+I
9764 PRINT E;TAB VI;PEEK E;TAB TEN;":";CHR$ PEEK E;":";TAB XX;F8*PEEK (E+I)+PEEK E
9765 NEXT E
9766 GOTO 9752
9800 REM %P%U%R%G
9801 LET N(1)=USR 16900
9802 REM %I%N%I%T%I%A%L%I%Z%A%T%I%O%N%S
9810 LET I=1
9811 LET Z0=I-I
9812 LET II=I+I
9813 LET III=II+I
9814 LET IV=II+II
9815 LET FIV=IV+I
9816 LET VI=IV+II
9817 LET VII=VI+I
9818 LET VIII=IV+IV
9819 LET IX=VIII+I
9820 LET TEN=IX+I
9821 LET XX=II*TEN
9822 LET XXX=30
9823 LET F4=II*VIII
9824 LET F5=II*F4
9825 LET F6=II*F5
9826 LET F7=II*F6
9827 LET F8=256
9828 LET FF=F8-I
9829 LET IK=I/F8/F8
9840 REM %K%E%Y%S
9841 LET VLST=9501
9842 LET DB=9703
9843 LET PURG=9801
9844 LET MEM=9916
9845 LET ZZ=9953
9846 LET ZZZ=ZZ-I
9847 LET ZZZZ=ZZ-II
9848 LET SAVE=9900
9849 LET SYSV=9928
9850 LET MAP=8101
9851 LET SEARCH=9450
9852 LET SRCH=9706
9853 LET HELP=9961
9854 LET SPY=9751
9855 LET DISA=9000
9856 LET ERR=9103
9857 LET DTB=9698
9858 LET WCOD=9121
9859 LET WSTR=9136
9860 LET NTRY=HELP
9861 LET EDIT=9201
9892 CLS 
9893 PRINT ,,,,"* TO DELETE STRINGS AND ARRAYS, REDIMENSION THEM TO ZERO."
9894 PRINT ,,"   DIM (NAME)$(0)  OR"
9895 PRINT ,,"   DIM (NAME)(0)"
9896 PRINT ,,"   THIS WILL PULL ERROR 3/0 BUT"," THE JOB IS DONE."
9897 STOP 
9898 GOTO VLST
9899 REM %S%A%V%E
9900 CLS 
9901 PRINT ,,,,"""";Z$;""" IS TO BE SAVED.",,,"START RECORDER.  PRESS ANY KEY.",,,Q$,,
9902 PRINT "MODE IS ";"LOOPING" AND NOT (NTRY-SAVE);"HELP" AND NOT (NTRY-HELP);"LOAD-AND-GO" AND NOT (NTRY-1000)
9903 SLOW 
9904 IF NTRY<>SAVE THEN PAUSE 40000
9905 FOR N=F6 TO I STEP -I
9906 UNPLOT N-I,XXX
9907 NEXT N
9908 SAVE Z$
9909 FAST 
9910 CLS 
9911 PRINT Y$;X$
9912 PRINT AT IX+VI,VII;"PRESENTS***"
9913 GOSUB ZZZ
9914 GOTO NTRY
9915 REM %M%E%M
9916 LET L=F8*(PEEK 16387-PEEK 16413)+PEEK 16386-PEEK 16412
9917 LET E=INT (L/F5/F5)
9918 PRINT AT IX,Z0;"MEMORY LEFT IS:";E;" K, ";L-F5*F5*E;" BYTES.",,,"(";L;" BYTES)"
9919 IF L<F8+XX THEN PRINT ,,"CAUTION: LIST EDITING MAY BE IMPAIRED."
9920 STOP 
9921 GOTO MAP
9927 REM %S%Y%S%V
9928 LET E=II*CODE D$-75
9929 IF E<I OR E>13 THEN GOTO 9933
9930 LET E$="10141824260002"
9931 LET E=VAL E$(E TO E+I)+16386
9932 LET D$=STR$ (F8*PEEK (E+I)+PEEK E)
9933 RETURN 
9950 REM %S%L%E%E%P
9951 LET ZZ=ZZ+F8
9952 LET ZZ=ZZ+F7
9953 LET ZZ=ZZ+F6
9954 LET ZZ=ZZ+F5
9955 LET E=ZZ-ZZZ+F5
9956 LET ZZ=ZZZ+I
9957 PAUSE E
9958 POKE 16437,FF
9959 RETURN 
9960 REM %H%E%L%P
9961 CLS 
9962 LET PAGE=I
9963 LET H$="% %H%E%L%P%  PAGE "
9964 PRINT AT I,IX;H$;PAGE
9965 PRINT ,,"* USE GOTO FOR DESIRED LOCATION,",,"* LET Z$=""(YOUR PROGRAM NAME)""",,,"* LET NTRY=1000 IF YOU WANT YOUR PROGRAM TO RUN AFTER LOADING." 
9966 PRINT ,,"* Z$=""";Z$;""""
9967 LET I$="% %K%E%Y%W%O%R%D% %L%I%N%E% %F%U%N%C%T%I%O%N% "
9968 PRINT ,,I$,"""HELP""   9960 HERE.","""VLST""   9500 VARIABLE LIST.","""MEM""    9915 AVAILABLE MEMORY. ""SAVE""   9900 SAVE PROGRAM,"
9969 PRINT """NTRY""   HELP UNLESS CHANGED."
9970 PRINT """PURG""   9800 DELETE VARIABLES."
9971 PRINT """MAP""    8100 MEMORY MAP."
9972 PRINT """SPY""    9750 LOOK AT MEMORY."
9973 PRINT """DISA""   9000 DISASSEMBLE."
9974 LET PAGE=II
9975 PRINT 
9976 CLS 
9977 PRINT AT I,IX;H$;PAGE,,,I$
9978 PRINT """WCOD""   9120 DECODE TABLE."
9979 PRINT """WSTD""   9135 MNEMONICS."
9980 PRINT """SRCH""   9705 BASIC CODE."
9981 PRINT """SEARCH"" 9450 ROM SPACE."
9982 PRINT """EDIT""   9200 MACH CODE."
9983 PRINT "*""GOTO VLST"" CODES AS:","  :236:V:L:S:T: (5 BYTES)" 
9984 PRINT "*""GOTO 9500"" CODES AS:","  :235:9:5:0:0:126:EXP:B4:B3:B2:B1:B0: (12 BYTES)"
9985 PRINT "* USING VARIABLES IN PLACE OF   NUMBERS CAN SAVE MEMORY."
9986 PRINT "* USE:Z0,I,II,III,IV,FIV,VI,VII,VIII,IX,TEN,XX,XXX IN PLACE OF:0,1,2,3,4,5,6,7,8,9,10,20,30."
9987 PRINT "* LIST 9802 TO SEE."
9988 STOP 
9989 GOTO HELP
9997 REM %M%/%L% %C%0%D%E% %T%E%M%P%L%A%T%E%S
9998 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.......   /\.'
9999 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.........1.......   /\.'
Scroll to Top
A\E5\E1\D1\AF\ED\E5\C1

Super Utility

Products: Super Utility
Developer(s): William J. Pedersen
Date: 1983
Type: Cassette
Platform(s): TS 1000

Utility for working with machine language programs and memory.

Content

Appears On

Related Products

Utility for working with machine language programs and memory.

Related Articles

Related Content

Image Gallery

Super Utility

Source Code

   1 REM %U%T%I%L%I%T%Y
   2 REM *************
   3 REM COPYRIGHT NOV 14, 1983 BY WILLIAM J. PEDERSEN. 1120 MERRIFIELD S.E., GRAND RAPIDS, MICHIGAN  49507
   4 REM REPRODUCTION OR USE OF THIS PROGRAM IS PROHIBITED WITHOUT EXPRESS WRITTEN PERMISSION.
   5 REM *************
   7 REM \7E\E6\E0\FE\C0\28\0E\F2\99\41\FE\80\28\07\F2\A2\41\FE\60\28\10\23\22\93\41\ED\5B\93\7B\19\23\23\C9\11\0C\00\19\11\06\00\19\C9\23\CB\7E\28\FB\18\F4\F5\D5\E5\2A\DB\42\ED\4B\DF\42\ED\5B\E7\42\1A\ED\B1\20\1B\22\DB\42\ED\43\DF\42\2B\ED\4B\E5\42\1A\ED\A1\20\DF\13\EA\C8\41\ED\4B\DB\42\18\21\01\03\D9\18\1C\F5\D5\E5\21\00\00\22\DB\42\21\FF\1F\22\DF\42\18\BF\00\00\D9\18\06
   8 REM \E1\D1\FD\2A\00\40\3E\1E\ED\47\F1\C9\F5\D5\E5\2A\10\40\22\DB\42\3E\80\BE\28\E6\CB\6E\F5\CD\78\41\22\DD\42\F1\20\08\2A\DD\42\22\DB\42\18\E7\CD\2E\42\2A\DB\42\18\DF\2A\DB\42\E5\ED\5B\DD\42\D5\AF\ED\52\EB\2A\1C\40\19\22\1C\40\2A\1A\40\19\22\1A\40\2A\14\40\E5\19\22\14\40\E1\D1\AF\ED\52\E5\C1\03\2A\DB\42\EB\ED\B0\E1\C9\1B\1B\1B\1B\1D\1B\1B\1B\1B\1B\1B\00\00\00\00\18\06
   9 REM \DC\07\F2\03\D9\FA\9C\AD\EA\78\42\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\57\1B\95\7B\A8\04\1B\1B\1B\1B\02\00\78\42\1B\1B\1B\1B\1B\1B\1E\1B\1B
8100 REM %M%A%P
8101 CLS 
8102 PRINT ,,"    % %M%E%M%O%R%Y% %M%A%P%  ";Z$
8103 LET G$="\##\##%P\:.\'.\':%V\:'\..\':%U%U\.'\.'1638420479204802457524576286712867232767ABCEFG0 PROGRAM =VARIABLES=AVAIL MEM=RAMTOP UP="
8104 LET H$="16509"
8105 LET Q=1
8106 LET S=37
8107 LET I$=CHR$ S
8108 FOR K=IV TO XX-I STEP FIV
8109 LET T=II*K+VII
8110 LET L=53.4+II*K/FIV
8111 LET D$=H$
8112 GOSUB SYSV
8113 LET TT=VAL D$
8114 LET D$=G$(L)
8115 GOSUB SYSV
8116 LET QQ=VAL D$
8117 IF QQ=Z0 THEN LET QQ=32768
8118 LET LL=54+II*K
8119 PRINT AT K-I,Z0;G$(LL TO LL+IX);QQ-TT;" BYTES."
8120 LET H$=G$(L+I)
8121 FOR N=Z0 TO 31
8122 PRINT AT K,N;G$(Q);
8123 LET B=13107.2+F7*N+819.2*K
8124 LET D$=I$
8125 GOSUB SYSV
8126 LET BB=VAL D$
8127 IF BB-B<F6 THEN PRINT AT K,N;G$(Q+I);
8128 IF BB>B+F7 THEN GOTO 8137
8129 LET Q=Q+II
8130 LET S=S+I
8131 LET D$=CHR$ S
8132 GOSUB SYSV
8133 LET I$=D$
8134 IF LEN I$<II THEN LET I$="65536"
8135 IF VAL I$>B+F7 THEN GOTO 8137
8136 GOTO 8130
8137 NEXT N
8138 PRINT G$(T TO T+IV);TAB 27;G$(T+FIV TO T+IX)
8139 NEXT K
8140 STOP 
8141 GOTO HELP
8999 REM % %D%I%S%A%S%S%E%M%B%L%E%R% 
9000 PRINT AT XX,Z0;"DISASSEMBLE STARTING WHERE?"
9001 INPUT WB
9002 CLS 
9003 LET WL=Z0
9004 LET WIA=WB
9005 LET WFS=Z0
9006 LET WFN=I
9007 LET WFK=Z0
9008 LET WF=Z0
9009 LET WFW=Z0
9010 LET WV=Z0
9011 LET G$=""
9012 LET WN=112
9013 LET WL=WL+I
9014 LET WP=PEEK WB
9015 IF WP<>221 AND WP<>253 THEN GOTO 9021
9016 IF WFK THEN GOTO ERR
9017 LET WF=I+(I AND WP=253)
9018 LET WFK=I
9019 LET WB=WB+I
9020 GOTO 9014
9021 IF WP<>203 THEN GOTO 9034
9022 LET WFN=Z0
9023 LET WJ=345
9024 LET WB=WB+I+WFK
9025 LET WP=PEEK WB
9026 LET W1=INT (WP/F6)
9027 LET W=WP-F6*W1
9028 LET W2=INT (W/VIII)
9029 LET W=W-VIII*W2
9030 IF WFK AND W<>VI THEN GOTO ERR
9031 IF W1 THEN LET T$(WJ)=CHR$ (97+W1)+CHR$ (F4+I+W2)+CHR$ (W+I)
9032 IF NOT W1 THEN LET T$(WJ)=CHR$ (49+W2)+CHR$ (W+I)+CHR$ 97
9033 GOTO 9042
9034 LET WJ=I+PEEK WB
9035 LET WW=Z0
9036 IF WP<>237 THEN GOTO 9040
9037 LET WB=WB+I
9038 LET WW=PEEK WB
9039 LET WJ=193+WW-(36 AND WW>159)
9040 IF WW>123 AND WW<160 OR WJ>344 THEN GOTO ERR
9041 LET WDIS=PEEK (WB+I)
9042 LET V$=""
9043 LET W0=CODE T$(WJ,I)
9044 IF W0=WN+IV THEN GOTO ERR
9045 IF W0<>WN-IV THEN GOTO 9048
9046 LET WV=VAL (W$(CODE T$(WJ,II)))
9047 LET G$=" "
9048 GOSUB 9066
9049 LET B$=I$+" "
9050 LET W0=CODE T$(WJ,II)
9051 GOSUB 9066
9052 IF I$="" THEN GOTO 9063
9053 IF WP=211 THEN LET I$="(N)"
9054 LET B$=B$+I$
9055 LET W0=CODE T$(WJ,III)
9056 GOSUB 9066
9057 IF I$="" THEN GOTO 9060
9058 IF WP=219 THEN LET I$="(N)"
9059 LET B$=B$+","+I$
9060 IF WFK AND NOT WFW THEN GOTO ERR
9061 LET V$=STR$ WV
9062 IF NOT LEN G$ AND WV=Z0 THEN LET V$=""
9063 PRINT WIA;TAB VI;B$;TAB XX-I;V$+G$
9064 LET WB=WB+I+WFS*WFN
9065 GOTO 9004
9066 LET I$=W$(W0)
9067 GOSUB DTB
9068 IF W0=WN+FIV THEN GOSUB 9094
9069 IF W0<>WN+VI THEN GOTO 9075
9070 LET WB=WB+WFK+I
9071 LET WFN=Z0
9072 LET WV=PEEK WB
9073 IF WP=211 OR WP=219 THEN GOTO 9078
9074 LET G$=":"+CHR$ WV+":"
9075 IF WV>=F5 THEN GOTO 9078
9076 LET W=F4+I+III*WV
9078 IF W0<WN+VII THEN GOTO 9085
9079 LET WB=WB+II
9080 LET G$=" "
9081 LET WFN=Z0
9082 LET E=WB-I
9083 GOSUB DB
9084 LET WV=E
9085 IF NOT WFK THEN GOTO 9092
9086 IF W0=VII OR W0=61 OR W0=WN THEN LET WFW=I
9087 IF W0<>VII THEN GOTO 9091
9088 LET WFS=I
9089 GOSUB 9095
9090 LET I$=W$(WN+WF, TO III)+I$+")"
9091 IF W0=61 THEN LET I$=W$(WN+WF,II TO III)
9092 IF W0=WN THEN LET I$=W$(WN+WF)
9093 RETURN 
9094 LET WB=WB+I
9095 LET W=WDIS
9096 IF W<F7 THEN GOTO 9098
9097 LET W=W-F8
9098 IF NOT WFK THEN LET W=W+II
9099 IF W>=Z0 THEN LET I$="+"+STR$ W
9100 IF W<Z0 THEN LET I$=STR$ W
9101 IF B$( TO II)="JR" OR B$( TO II)="DJ" THEN LET WV=WIA+W
9102 RETURN 
9103 PRINT "ERROR AT ";WIA;". ",
9104 FOR J=Z0 TO III
9105 PRINT PEEK (WIA+J);" ";
9106 NEXT J
9107 PRINT 
9108 GOTO 9004
9120 REM %W%C%O%D
9121 CLS 
9122 PRINT ,," T$(345,3) TABLE FOR DECODING","MOST Z80 INSTRUCTIONS.",,,"N   VALUES      INTERPRETATION",,,
9123 FOR N=I TO 345
9124 PRINT N;" ";
9125 FOR K=I TO III
9126 PRINT CODE T$(N,K);" ";
9127 NEXT K
9128 PRINT ,
9129 FOR K=I TO III
9130 PRINT W$(CODE T$(N,K));" ";
9131 NEXT K
9132 PRINT 
9133 NEXT N
9134 STOP 
9135 REM %W%S%T%R
9136 CLS 
9137 PRINT ,," W$(120,4) ARRAY FOR MNEMONICS.",,,
9138 FOR N=I TO 120
9139 PRINT TAB VI;"W$(";N;")=","""";W$(N);""""
9140 NEXT N
9141 STOP 
9142 GOTO WCOD
9200 REM %E%D%I%T
9201 CLS 
9202 LET L=9228
9203 LET M=9317
9206 PRINT ,,"% %M%A%C%H%I%N%E% %L%A%N%G%U%A%G%E% %E%D%I%T%O%R% ",,,"WHERE ABOVE 16759?  START ";
9207 INPUT B
9208 PRINT B,"SELECT BY NO."
9209 FOR N=VI TO F4+I
9210 PRINT AT N,F4;"                "
9211 NEXT N
9212 PRINT AT IV,XX;"NOW   ";B
9213 PRINT ,," 1 SINGLE BYTE",," 2 DOUBLE BYTE",," 3 LD HL,(NN)",," 4 LD (NN),HL",," 5 PUSH SEQ",," 6 LD (NN),BC",," 7 LD BC,(NN)",," 8 LD (NN),DE",," 9 LD DE,(NN)",,"10 SBC HL,BC",,"11 ADC HL,BC",,"12 SBC HL,DE",,"13 ADC HL,DE",,"14 JUMPS",,"15 %Q%U%I%T"
9214 INPUT N
9215 IF N<I OR N>F4-II THEN GOTO M
9216 PRINT AT N+FIV,F4;"% "
9217 GOTO L-F4+VI*N
9218 INPUT K
9219 IF K<0 OR K>FF THEN GOTO M
9220 POKE B,K
9221 LET B=B+I
9222 GOTO 9209
9224 INPUT K
9225 IF K<0 OR K>=F8*F8 THEN GOTO M
9226 POKE B+I,INT (K/F8)
9227 POKE B,K-F8*INT (K/F8)
9228 LET B=B+II
9229 GOTO 9209
9236 POKE B,XXX+N
9237 LET B=B+I
9238 GOTO L-IV
9242 POKE B,245
9243 POKE B+I,213
9244 POKE B+II,229
9245 LET B=B+I
9246 GOTO L
9266 POKE B,237  
9267 POKE B+I,XX-I+VIII*N  
9268 LET B=B+II
9269 GOTO L-IV
9290 POKE B,237  
9291 POKE B+I,VIII*N-F4+II  
9292 GOTO L
9296 PRINT AT F4,F4;"JUMP TO?"
9297 INPUT N
9298 IF N<16760 OR N>=F8*F8 THEN GOTO M
9299 LET W=(B-N)>F7+I OR B-N<-F7+II
9300 PRINT AT VI,F4;"WHICH CONDITION?",AT VIII,F4;" 1 DJNZ",AT IX,F4;" 2 NONE",AT TEN,F4;" 3 NZ",AT TEN+I,F4;" 4  Z",AT VI+VI,F4;" 5 NC",AT IX+IV,F4;" 6  C",AT F4-II,F4;" 7 PO",AT F4-I,F4;" 8 PE",AT F4,F4;" 9  P   ",AT F4+I,F4;"10  M"   
9301 INPUT S
9302 IF S<I OR S>TEN THEN GOTO M
9303 IF W OR S>VI THEN GOTO 9309
9304 LET N=N-B-II
9305 IF N>=F7 THEN LET N=F7-N
9306 POKE B,VIII+VIII*S
9307 POKE B+I,N
9308 GOTO L
9309 IF S=I THEN GOTO M
9310 POKE B,170+VIII*S
9311 IF S=II THEN POKE B,195
9312 LET B=B+I
9313 LET P3=INT (N/F8)
9314 POKE B,N-F8*P3
9315 POKE B+I,P3
9316 GOTO L
9317 CLS 
9318 PRINT AT IX,Z0;"%Q%U%I%T OR AN ERROR HAS OCCURRED.  THE LAST LOCATION WAS ";B;".","CONTINUE FOR DISASSEMBLER."
9319 STOP 
9320 GOTO DISA
9449 REM %S%E%A%R%C%H
9450 CLS 
9451 LET Q=Z0
9452 LET E=I
9453 PRINT ,,"OBJECTIVE/TITLE?",
9454 INPUT G$
9455 PRINT AT I,Z0;G$;"                ";AT II,Z0;"PRINT? %YES OR %NO",
9456 LET W=Z0
9457 INPUT H$
9458 IF LEN H$ THEN IF H$(I)="Y" THEN LET W=I
9459 PRINT AT II,Z0;"INPUT YOUR CODE          ",
9460 INPUT L
9461 IF L>FF THEN GOTO 9481
9462 PRINT AT II,Z0;"IF DOUBLE BYTE, ENTER ""D"""
9463 INPUT H$
9464 IF LEN H$ THEN IF H$(I)="D" THEN GOTO 9481
9465 POKE 17015+E,L
9466 LET E=E+I
9467 PRINT AT II,Z0;"ANOTHER ENTRY? %YES OR %NO",
9468 INPUT H$
9469 IF LEN H$ THEN IF H$(I)="Y" THEN GOTO 9459
9470 CLS 
9471 IF NOT W THEN PRINT ,,G$
9472 IF W THEN LPRINT G$
9473 POKE 17125,E-I
9474 LET K=USR 16860
9475 GOTO 9477
9476 LET K=USR 16809
9477 LET Q=Q+I
9478 IF K=55555 THEN GOTO 9486
9479 GOSUB 9490+II*W
9480 GOTO 9476
9481 LET P2=INT (L/F8+II**-IX)
9482 POKE 17016+E,P2
9483 POKE 17015+E,L-F8*P2
9484 LET E=E+II
9485 GOTO 9467
9486 IF NOT W THEN PRINT "$";Q-I
9487 IF W THEN LPRINT "$";Q-I
9488 STOP 
9489 GOTO SEARCH
9490 PRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9491 RETURN 
9492 LPRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9493 RETURN 
9499 STOP 
9500 REM %V%L%S%T
9501 CLS 
9502 PRINT ,,,,"   %V%A%R%I%A%B%L%E%S",,,
9503 LET E=16400
9504 GOSUB DB
9505 LET L=E-I
9506 LET T=Z0
9507 LET T=T+I
9508 LET L=L+I
9509 LET B=L
9510 IF LEN H$>I THEN IF H$( TO II)="H$" THEN GOSUB VLST+XX
9511 LET CH=PEEK L
9512 PRINT TAB III-LEN STR$ T;T;" ";
9512 LET TP=INT (CH/F5)
9514 LET CH=CH-TP*F5+F5
9515 LET H$=CHR$ CH
9516 GOSUB VLST-F5+F5*TP
9517 LET E=TP=II OR TP=VI
9518 IF E THEN PRINT H$;TAB XX+VI;B
9519 IF NOT E THEN PRINT H$;TAB XX+III-LEN STR$ Q;Q;TAB XX+VI;B
9520 GOTO VLST+VI
9521 PRINT ,,"   %E%N%D% %O%F% %L%I%S%T ";L
9522 LET H$="***"
9523 STOP 
9524 GOTO VLST
9532 REM %S%T%R%I%N%G
9533 LET H$=H$+"$ "
9534 LET E=L+I
9535 GOSUB DB
9536 FOR Q=I TO (E AND E<F4)+(F4 AND E>=F4)
9537 LET H$=H$+CHR$ PEEK (L+II+Q)
9538 NEXT Q
9539 LET L=L+II+E
9540 RETURN 
9564 REM %S%I%N%G%L
9565 LET Q=VAL H$
9566 LET L=L+FIV
9567 RETURN 
9596 REM %N%(%)
9597 LET H$=H$+"("
9598 LET I$=H$
9599 LET S=PEEK (L+III)
9600 FOR Q=I TO S
9601 LET E=L+II+II*Q
9602 GOSUB DB
9603 IF Q>=S THEN GOTO VLST+105
9604 LET H$=H$+STR$ E+","
9605 LET I$=I$+"1,"
9606 NEXT Q
9607 LET H$=H$+STR$ E+")"
9608 LET I$=I$+"1)"
9609 LET Q=VAL I$
9610 LET E=L+I
9611 GOSUB DB
9612 LET L=L+II+E
9613 RETURN 
9628 REM %M%U%L%T
9629 LET L=L+I
9630 LET CH=PEEK L
9631 IF INT (CH/F6)=II THEN GOTO VLST+133
9632 LET H$=H$+CHR$ CH
9633 GOTO VLST+F7
9634 LET H$=H$+CHR$ (CH-F7)
9635 LET Q=VAL H$
9636 LET L=L+FIV
9637 RETURN 
9660 REM %$%(%)
9661 LET H$=H$+"$("
9662 LET S=PEEK (L+III)
9663 FOR Q=I TO S
9664 LET E=L+II+II*Q
9665 GOSUB DB
9666 IF Q>=S THEN GOTO VLST+168
9667 LET H$=H$+STR$ E+","
9668 NEXT Q
9669 LET H$=H$+STR$ E+")"
9670 LET E=L+VI
9671 LET U=L+III+II*S
9672 GOSUB DB
9674 FOR Q=U TO U+(E AND E<F4)+(F4 AND E>=F4)
9675 LET H$=H$+CHR$ PEEK Q
9676 NEXT Q
9677 GOTO VLST+109
9692 REM %F%-%N
9693 LET Q=VAL H$
9694 LET H$=H$+" FOR-NEXT"
9695 LET L=L+XX-III
9696 RETURN 
9697 REM %D%T%B
9698 FOR J=LEN I$ TO I STEP -I
9699 IF I$(J)=" " THEN NEXT J
9700 LET I$=I$( TO J)
9701 RETURN 
9702 REM %D%B
9703 LET E=F8*PEEK (E+I)+PEEK E
9704 RETURN 
9705 REM %S%R%C%H
9706 CLS 
9707 PRINT AT IX,I;"WRITE YOUR STRING WITHOUT LINE NUMBER.  ADD A QUOTE AND PRECEDESTRING WITH",,,," LET H$=""",,,," THEN ENTER AND CONTINUE."
9708 LET E=17116
9709 STOP 
9710 POKE E+IX,LEN H$
9711 POKE E-I,247
9712 POKE E,66
9713 LET K=PEEK 16396+F8*PEEK 16397-17143
9714 LET S=INT (K/F8)
9715 LET K=K-F8*S
9716 POKE E+III,K
9717 POKE E+IV,S
9718 FOR E=I TO LEN H$
9719 POKE (E+17015),CODE H$(E)
9720 NEXT E
9721 CLS 
9722 PRINT ,,"""";H$;"""";TAB Z0;,,
9723 LET K=USR 16809
9724 IF K=55555 THEN GOTO 9740
9727 LET Q=K
9728 LET Q=Q-I
9729 IF PEEK Q<>118 THEN GOTO 9728
9730 IF K-Q<IV THEN GOTO 9723
9732 LET E=F8*PEEK (Q+I)+PEEK (Q+II)
9733 LET K=F8*PEEK (Q+IV)+PEEK (Q+III)
9734 LET I$=""
9735 FOR Q=Q+FIV TO Q+III+K
9736 LET I$=I$+CHR$ PEEK Q
9737 NEXT Q
9738 PRINT E;TAB FIV;I$
9739 GOTO 9723
9740 PRINT ,,"  % %S%E%A%R%C%H% %C%O%M%P%L%E%T%E% "
9741 STOP 
9742 GOTO 9706
9750 REM %S%P%Y
9751 PRINT AT XX+I,Z0;"LOOK AT NO./%QUIT/%HIGHER/%L0WER"
9752 INPUT H$
9753 IF H$<>"Q" THEN GOTO 9755
9754 STOP 
9755 IF H$<>"H" THEN GOTO 9758
9756 LET B=B+F4
9757 GOTO 9762
9758 IF H$<>"L" THEN GOTO 9761
9759 LET B=B-F4
9760 GOTO 9762
9761 LET B=VAL H$
9762 CLS 
9763 FOR E=B TO B+XX+I
9764 PRINT E;TAB VI;PEEK E;TAB TEN;":";CHR$ PEEK E;":";TAB XX;F8*PEEK (E+I)+PEEK E
9765 NEXT E
9766 GOTO 9752
9800 REM %P%U%R%G
9801 LET N(1)=USR 16900
9802 REM %I%N%I%T%I%A%L%I%Z%A%T%I%O%N%S
9810 LET I=1
9811 LET Z0=I-I
9812 LET II=I+I
9813 LET III=II+I
9814 LET IV=II+II
9815 LET FIV=IV+I
9816 LET VI=IV+II
9817 LET VII=VI+I
9818 LET VIII=IV+IV
9819 LET IX=VIII+I
9820 LET TEN=IX+I
9821 LET XX=II*TEN
9822 LET XXX=30
9823 LET F4=II*VIII
9824 LET F5=II*F4
9825 LET F6=II*F5
9826 LET F7=II*F6
9827 LET F8=256
9828 LET FF=F8-I
9829 LET IK=I/F8/F8
9840 REM %K%E%Y%S
9841 LET VLST=9501
9842 LET DB=9703
9843 LET PURG=9801
9844 LET MEM=9916
9845 LET ZZ=9953
9846 LET ZZZ=ZZ-I
9847 LET ZZZZ=ZZ-II
9848 LET SAVE=9900
9849 LET SYSV=9928
9850 LET MAP=8101
9851 LET SEARCH=9450
9852 LET SRCH=9706
9853 LET HELP=9961
9854 LET SPY=9751
9855 LET DISA=9000
9856 LET ERR=9103
9857 LET DTB=9698
9858 LET WCOD=9121
9859 LET WSTR=9136
9860 LET NTRY=HELP
9861 LET EDIT=9201
9892 CLS 
9893 PRINT ,,,,"* TO DELETE STRINGS AND ARRAYS, REDIMENSION THEM TO ZERO."
9894 PRINT ,,"   DIM (NAME)$(0)  OR"
9895 PRINT ,,"   DIM (NAME)(0)"
9896 PRINT ,,"   THIS WILL PULL ERROR 3/0 BUT"," THE JOB IS DONE."
9897 STOP 
9898 GOTO VLST
9899 REM %S%A%V%E
9900 CLS 
9901 PRINT ,,,,"""";Z$;""" IS TO BE SAVED.",,,"START RECORDER.  PRESS ANY KEY.",,,Q$,,
9902 PRINT "MODE IS ";"LOOPING" AND NOT (NTRY-SAVE);"HELP" AND NOT (NTRY-HELP);"LOAD-AND-GO" AND NOT (NTRY-1000)
9903 SLOW 
9904 IF NTRY<>SAVE THEN PAUSE 40000
9905 FOR N=F6 TO I STEP -I
9906 UNPLOT N-I,XXX
9907 NEXT N
9908 SAVE Z$
9909 FAST 
9910 CLS 
9911 PRINT Y$;X$
9912 PRINT AT IX+VI,VII;"PRESENTS***"
9913 GOSUB ZZZ
9914 GOTO NTRY
9915 REM %M%E%M
9916 LET L=F8*(PEEK 16387-PEEK 16413)+PEEK 16386-PEEK 16412
9917 LET E=INT (L/F5/F5)
9918 PRINT AT IX,Z0;"MEMORY LEFT IS:";E;" K, ";L-F5*F5*E;" BYTES.",,,"(";L;" BYTES)"
9919 IF L<F8+XX THEN PRINT ,,"CAUTION: LIST EDITING MAY BE IMPAIRED."
9920 STOP 
9921 GOTO MAP
9927 REM %S%Y%S%V
9928 LET E=II*CODE D$-75
9929 IF E<I OR E>13 THEN GOTO 9933
9930 LET E$="10141824260002"
9931 LET E=VAL E$(E TO E+I)+16386
9932 LET D$=STR$ (F8*PEEK (E+I)+PEEK E)
9933 RETURN 
9950 REM %S%L%E%E%P
9951 LET ZZ=ZZ+F8
9952 LET ZZ=ZZ+F7
9953 LET ZZ=ZZ+F6
9954 LET ZZ=ZZ+F5
9955 LET E=ZZ-ZZZ+F5
9956 LET ZZ=ZZZ+I
9957 PAUSE E
9958 POKE 16437,FF
9959 RETURN 
9960 REM %H%E%L%P
9961 CLS 
9962 LET PAGE=I
9963 LET H$="% %H%E%L%P%  PAGE "
9964 PRINT AT I,IX;H$;PAGE
9965 PRINT ,,"* USE GOTO FOR DESIRED LOCATION,",,"* LET Z$=""(YOUR PROGRAM NAME)""",,,"* LET NTRY=1000 IF YOU WANT YOUR PROGRAM TO RUN AFTER LOADING." 
9966 PRINT ,,"* Z$=""";Z$;""""
9967 LET I$="% %K%E%Y%W%O%R%D% %L%I%N%E% %F%U%N%C%T%I%O%N% "
9968 PRINT ,,I$,"""HELP""   9960 HERE.","""VLST""   9500 VARIABLE LIST.","""MEM""    9915 AVAILABLE MEMORY. ""SAVE""   9900 SAVE PROGRAM,"
9969 PRINT """NTRY""   HELP UNLESS CHANGED."
9970 PRINT """PURG""   9800 DELETE VARIABLES."
9971 PRINT """MAP""    8100 MEMORY MAP."
9972 PRINT """SPY""    9750 LOOK AT MEMORY."
9973 PRINT """DISA""   9000 DISASSEMBLE."
9974 LET PAGE=II
9975 PRINT 
9976 CLS 
9977 PRINT AT I,IX;H$;PAGE,,,I$
9978 PRINT """WCOD""   9120 DECODE TABLE."
9979 PRINT """WSTD""   9135 MNEMONICS."
9980 PRINT """SRCH""   9705 BASIC CODE."
9981 PRINT """SEARCH"" 9450 ROM SPACE."
9982 PRINT """EDIT""   9200 MACH CODE."
9983 PRINT "*""GOTO VLST"" CODES AS:","  :236:V:L:S:T: (5 BYTES)" 
9984 PRINT "*""GOTO 9500"" CODES AS:","  :235:9:5:0:0:126:EXP:B4:B3:B2:B1:B0: (12 BYTES)"
9985 PRINT "* USING VARIABLES IN PLACE OF   NUMBERS CAN SAVE MEMORY."
9986 PRINT "* USE:Z0,I,II,III,IV,FIV,VI,VII,VIII,IX,TEN,XX,XXX IN PLACE OF:0,1,2,3,4,5,6,7,8,9,10,20,30."
9987 PRINT "* LIST 9802 TO SEE."
9988 STOP 
9989 GOTO HELP
9997 REM %M%/%L% %C%0%D%E% %T%E%M%P%L%A%T%E%S
9998 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.......   /\.'
9999 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.........1.......   /\.'
Scroll to Top
A\DB\EB\ED\B0\E1\C9 itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"D itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B

Super Utility

Products: Super Utility
Developer(s): William J. Pedersen
Date: 1983
Type: Cassette
Platform(s): TS 1000

Utility for working with machine language programs and memory.

Content

Appears On

Related Products

Utility for working with machine language programs and memory.

Related Articles

Related Content

Image Gallery

Super Utility

Source Code

   1 REM %U%T%I%L%I%T%Y
   2 REM *************
   3 REM COPYRIGHT NOV 14, 1983 BY WILLIAM J. PEDERSEN. 1120 MERRIFIELD S.E., GRAND RAPIDS, MICHIGAN  49507
   4 REM REPRODUCTION OR USE OF THIS PROGRAM IS PROHIBITED WITHOUT EXPRESS WRITTEN PERMISSION.
   5 REM *************
   7 REM \7E\E6\E0\FE\C0\28\0E\F2\99\41\FE\80\28\07\F2\A2\41\FE\60\28\10\23\22\93\41\ED\5B\93\7B\19\23\23\C9\11\0C\00\19\11\06\00\19\C9\23\CB\7E\28\FB\18\F4\F5\D5\E5\2A\DB\42\ED\4B\DF\42\ED\5B\E7\42\1A\ED\B1\20\1B\22\DB\42\ED\43\DF\42\2B\ED\4B\E5\42\1A\ED\A1\20\DF\13\EA\C8\41\ED\4B\DB\42\18\21\01\03\D9\18\1C\F5\D5\E5\21\00\00\22\DB\42\21\FF\1F\22\DF\42\18\BF\00\00\D9\18\06
   8 REM \E1\D1\FD\2A\00\40\3E\1E\ED\47\F1\C9\F5\D5\E5\2A\10\40\22\DB\42\3E\80\BE\28\E6\CB\6E\F5\CD\78\41\22\DD\42\F1\20\08\2A\DD\42\22\DB\42\18\E7\CD\2E\42\2A\DB\42\18\DF\2A\DB\42\E5\ED\5B\DD\42\D5\AF\ED\52\EB\2A\1C\40\19\22\1C\40\2A\1A\40\19\22\1A\40\2A\14\40\E5\19\22\14\40\E1\D1\AF\ED\52\E5\C1\03\2A\DB\42\EB\ED\B0\E1\C9\1B\1B\1B\1B\1D\1B\1B\1B\1B\1B\1B\00\00\00\00\18\06
   9 REM \DC\07\F2\03\D9\FA\9C\AD\EA\78\42\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\57\1B\95\7B\A8\04\1B\1B\1B\1B\02\00\78\42\1B\1B\1B\1B\1B\1B\1E\1B\1B
8100 REM %M%A%P
8101 CLS 
8102 PRINT ,,"    % %M%E%M%O%R%Y% %M%A%P%  ";Z$
8103 LET G$="\##\##%P\:.\'.\':%V\:'\..\':%U%U\.'\.'1638420479204802457524576286712867232767ABCEFG0 PROGRAM =VARIABLES=AVAIL MEM=RAMTOP UP="
8104 LET H$="16509"
8105 LET Q=1
8106 LET S=37
8107 LET I$=CHR$ S
8108 FOR K=IV TO XX-I STEP FIV
8109 LET T=II*K+VII
8110 LET L=53.4+II*K/FIV
8111 LET D$=H$
8112 GOSUB SYSV
8113 LET TT=VAL D$
8114 LET D$=G$(L)
8115 GOSUB SYSV
8116 LET QQ=VAL D$
8117 IF QQ=Z0 THEN LET QQ=32768
8118 LET LL=54+II*K
8119 PRINT AT K-I,Z0;G$(LL TO LL+IX);QQ-TT;" BYTES."
8120 LET H$=G$(L+I)
8121 FOR N=Z0 TO 31
8122 PRINT AT K,N;G$(Q);
8123 LET B=13107.2+F7*N+819.2*K
8124 LET D$=I$
8125 GOSUB SYSV
8126 LET BB=VAL D$
8127 IF BB-B<F6 THEN PRINT AT K,N;G$(Q+I);
8128 IF BB>B+F7 THEN GOTO 8137
8129 LET Q=Q+II
8130 LET S=S+I
8131 LET D$=CHR$ S
8132 GOSUB SYSV
8133 LET I$=D$
8134 IF LEN I$<II THEN LET I$="65536"
8135 IF VAL I$>B+F7 THEN GOTO 8137
8136 GOTO 8130
8137 NEXT N
8138 PRINT G$(T TO T+IV);TAB 27;G$(T+FIV TO T+IX)
8139 NEXT K
8140 STOP 
8141 GOTO HELP
8999 REM % %D%I%S%A%S%S%E%M%B%L%E%R% 
9000 PRINT AT XX,Z0;"DISASSEMBLE STARTING WHERE?"
9001 INPUT WB
9002 CLS 
9003 LET WL=Z0
9004 LET WIA=WB
9005 LET WFS=Z0
9006 LET WFN=I
9007 LET WFK=Z0
9008 LET WF=Z0
9009 LET WFW=Z0
9010 LET WV=Z0
9011 LET G$=""
9012 LET WN=112
9013 LET WL=WL+I
9014 LET WP=PEEK WB
9015 IF WP<>221 AND WP<>253 THEN GOTO 9021
9016 IF WFK THEN GOTO ERR
9017 LET WF=I+(I AND WP=253)
9018 LET WFK=I
9019 LET WB=WB+I
9020 GOTO 9014
9021 IF WP<>203 THEN GOTO 9034
9022 LET WFN=Z0
9023 LET WJ=345
9024 LET WB=WB+I+WFK
9025 LET WP=PEEK WB
9026 LET W1=INT (WP/F6)
9027 LET W=WP-F6*W1
9028 LET W2=INT (W/VIII)
9029 LET W=W-VIII*W2
9030 IF WFK AND W<>VI THEN GOTO ERR
9031 IF W1 THEN LET T$(WJ)=CHR$ (97+W1)+CHR$ (F4+I+W2)+CHR$ (W+I)
9032 IF NOT W1 THEN LET T$(WJ)=CHR$ (49+W2)+CHR$ (W+I)+CHR$ 97
9033 GOTO 9042
9034 LET WJ=I+PEEK WB
9035 LET WW=Z0
9036 IF WP<>237 THEN GOTO 9040
9037 LET WB=WB+I
9038 LET WW=PEEK WB
9039 LET WJ=193+WW-(36 AND WW>159)
9040 IF WW>123 AND WW<160 OR WJ>344 THEN GOTO ERR
9041 LET WDIS=PEEK (WB+I)
9042 LET V$=""
9043 LET W0=CODE T$(WJ,I)
9044 IF W0=WN+IV THEN GOTO ERR
9045 IF W0<>WN-IV THEN GOTO 9048
9046 LET WV=VAL (W$(CODE T$(WJ,II)))
9047 LET G$=" "
9048 GOSUB 9066
9049 LET B$=I$+" "
9050 LET W0=CODE T$(WJ,II)
9051 GOSUB 9066
9052 IF I$="" THEN GOTO 9063
9053 IF WP=211 THEN LET I$="(N)"
9054 LET B$=B$+I$
9055 LET W0=CODE T$(WJ,III)
9056 GOSUB 9066
9057 IF I$="" THEN GOTO 9060
9058 IF WP=219 THEN LET I$="(N)"
9059 LET B$=B$+","+I$
9060 IF WFK AND NOT WFW THEN GOTO ERR
9061 LET V$=STR$ WV
9062 IF NOT LEN G$ AND WV=Z0 THEN LET V$=""
9063 PRINT WIA;TAB VI;B$;TAB XX-I;V$+G$
9064 LET WB=WB+I+WFS*WFN
9065 GOTO 9004
9066 LET I$=W$(W0)
9067 GOSUB DTB
9068 IF W0=WN+FIV THEN GOSUB 9094
9069 IF W0<>WN+VI THEN GOTO 9075
9070 LET WB=WB+WFK+I
9071 LET WFN=Z0
9072 LET WV=PEEK WB
9073 IF WP=211 OR WP=219 THEN GOTO 9078
9074 LET G$=":"+CHR$ WV+":"
9075 IF WV>=F5 THEN GOTO 9078
9076 LET W=F4+I+III*WV
9078 IF W0<WN+VII THEN GOTO 9085
9079 LET WB=WB+II
9080 LET G$=" "
9081 LET WFN=Z0
9082 LET E=WB-I
9083 GOSUB DB
9084 LET WV=E
9085 IF NOT WFK THEN GOTO 9092
9086 IF W0=VII OR W0=61 OR W0=WN THEN LET WFW=I
9087 IF W0<>VII THEN GOTO 9091
9088 LET WFS=I
9089 GOSUB 9095
9090 LET I$=W$(WN+WF, TO III)+I$+")"
9091 IF W0=61 THEN LET I$=W$(WN+WF,II TO III)
9092 IF W0=WN THEN LET I$=W$(WN+WF)
9093 RETURN 
9094 LET WB=WB+I
9095 LET W=WDIS
9096 IF W<F7 THEN GOTO 9098
9097 LET W=W-F8
9098 IF NOT WFK THEN LET W=W+II
9099 IF W>=Z0 THEN LET I$="+"+STR$ W
9100 IF W<Z0 THEN LET I$=STR$ W
9101 IF B$( TO II)="JR" OR B$( TO II)="DJ" THEN LET WV=WIA+W
9102 RETURN 
9103 PRINT "ERROR AT ";WIA;". ",
9104 FOR J=Z0 TO III
9105 PRINT PEEK (WIA+J);" ";
9106 NEXT J
9107 PRINT 
9108 GOTO 9004
9120 REM %W%C%O%D
9121 CLS 
9122 PRINT ,," T$(345,3) TABLE FOR DECODING","MOST Z80 INSTRUCTIONS.",,,"N   VALUES      INTERPRETATION",,,
9123 FOR N=I TO 345
9124 PRINT N;" ";
9125 FOR K=I TO III
9126 PRINT CODE T$(N,K);" ";
9127 NEXT K
9128 PRINT ,
9129 FOR K=I TO III
9130 PRINT W$(CODE T$(N,K));" ";
9131 NEXT K
9132 PRINT 
9133 NEXT N
9134 STOP 
9135 REM %W%S%T%R
9136 CLS 
9137 PRINT ,," W$(120,4) ARRAY FOR MNEMONICS.",,,
9138 FOR N=I TO 120
9139 PRINT TAB VI;"W$(";N;")=","""";W$(N);""""
9140 NEXT N
9141 STOP 
9142 GOTO WCOD
9200 REM %E%D%I%T
9201 CLS 
9202 LET L=9228
9203 LET M=9317
9206 PRINT ,,"% %M%A%C%H%I%N%E% %L%A%N%G%U%A%G%E% %E%D%I%T%O%R% ",,,"WHERE ABOVE 16759?  START ";
9207 INPUT B
9208 PRINT B,"SELECT BY NO."
9209 FOR N=VI TO F4+I
9210 PRINT AT N,F4;"                "
9211 NEXT N
9212 PRINT AT IV,XX;"NOW   ";B
9213 PRINT ,," 1 SINGLE BYTE",," 2 DOUBLE BYTE",," 3 LD HL,(NN)",," 4 LD (NN),HL",," 5 PUSH SEQ",," 6 LD (NN),BC",," 7 LD BC,(NN)",," 8 LD (NN),DE",," 9 LD DE,(NN)",,"10 SBC HL,BC",,"11 ADC HL,BC",,"12 SBC HL,DE",,"13 ADC HL,DE",,"14 JUMPS",,"15 %Q%U%I%T"
9214 INPUT N
9215 IF N<I OR N>F4-II THEN GOTO M
9216 PRINT AT N+FIV,F4;"% "
9217 GOTO L-F4+VI*N
9218 INPUT K
9219 IF K<0 OR K>FF THEN GOTO M
9220 POKE B,K
9221 LET B=B+I
9222 GOTO 9209
9224 INPUT K
9225 IF K<0 OR K>=F8*F8 THEN GOTO M
9226 POKE B+I,INT (K/F8)
9227 POKE B,K-F8*INT (K/F8)
9228 LET B=B+II
9229 GOTO 9209
9236 POKE B,XXX+N
9237 LET B=B+I
9238 GOTO L-IV
9242 POKE B,245
9243 POKE B+I,213
9244 POKE B+II,229
9245 LET B=B+I
9246 GOTO L
9266 POKE B,237  
9267 POKE B+I,XX-I+VIII*N  
9268 LET B=B+II
9269 GOTO L-IV
9290 POKE B,237  
9291 POKE B+I,VIII*N-F4+II  
9292 GOTO L
9296 PRINT AT F4,F4;"JUMP TO?"
9297 INPUT N
9298 IF N<16760 OR N>=F8*F8 THEN GOTO M
9299 LET W=(B-N)>F7+I OR B-N<-F7+II
9300 PRINT AT VI,F4;"WHICH CONDITION?",AT VIII,F4;" 1 DJNZ",AT IX,F4;" 2 NONE",AT TEN,F4;" 3 NZ",AT TEN+I,F4;" 4  Z",AT VI+VI,F4;" 5 NC",AT IX+IV,F4;" 6  C",AT F4-II,F4;" 7 PO",AT F4-I,F4;" 8 PE",AT F4,F4;" 9  P   ",AT F4+I,F4;"10  M"   
9301 INPUT S
9302 IF S<I OR S>TEN THEN GOTO M
9303 IF W OR S>VI THEN GOTO 9309
9304 LET N=N-B-II
9305 IF N>=F7 THEN LET N=F7-N
9306 POKE B,VIII+VIII*S
9307 POKE B+I,N
9308 GOTO L
9309 IF S=I THEN GOTO M
9310 POKE B,170+VIII*S
9311 IF S=II THEN POKE B,195
9312 LET B=B+I
9313 LET P3=INT (N/F8)
9314 POKE B,N-F8*P3
9315 POKE B+I,P3
9316 GOTO L
9317 CLS 
9318 PRINT AT IX,Z0;"%Q%U%I%T OR AN ERROR HAS OCCURRED.  THE LAST LOCATION WAS ";B;".","CONTINUE FOR DISASSEMBLER."
9319 STOP 
9320 GOTO DISA
9449 REM %S%E%A%R%C%H
9450 CLS 
9451 LET Q=Z0
9452 LET E=I
9453 PRINT ,,"OBJECTIVE/TITLE?",
9454 INPUT G$
9455 PRINT AT I,Z0;G$;"                ";AT II,Z0;"PRINT? %YES OR %NO",
9456 LET W=Z0
9457 INPUT H$
9458 IF LEN H$ THEN IF H$(I)="Y" THEN LET W=I
9459 PRINT AT II,Z0;"INPUT YOUR CODE          ",
9460 INPUT L
9461 IF L>FF THEN GOTO 9481
9462 PRINT AT II,Z0;"IF DOUBLE BYTE, ENTER ""D"""
9463 INPUT H$
9464 IF LEN H$ THEN IF H$(I)="D" THEN GOTO 9481
9465 POKE 17015+E,L
9466 LET E=E+I
9467 PRINT AT II,Z0;"ANOTHER ENTRY? %YES OR %NO",
9468 INPUT H$
9469 IF LEN H$ THEN IF H$(I)="Y" THEN GOTO 9459
9470 CLS 
9471 IF NOT W THEN PRINT ,,G$
9472 IF W THEN LPRINT G$
9473 POKE 17125,E-I
9474 LET K=USR 16860
9475 GOTO 9477
9476 LET K=USR 16809
9477 LET Q=Q+I
9478 IF K=55555 THEN GOTO 9486
9479 GOSUB 9490+II*W
9480 GOTO 9476
9481 LET P2=INT (L/F8+II**-IX)
9482 POKE 17016+E,P2
9483 POKE 17015+E,L-F8*P2
9484 LET E=E+II
9485 GOTO 9467
9486 IF NOT W THEN PRINT "$";Q-I
9487 IF W THEN LPRINT "$";Q-I
9488 STOP 
9489 GOTO SEARCH
9490 PRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9491 RETURN 
9492 LPRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9493 RETURN 
9499 STOP 
9500 REM %V%L%S%T
9501 CLS 
9502 PRINT ,,,,"   %V%A%R%I%A%B%L%E%S",,,
9503 LET E=16400
9504 GOSUB DB
9505 LET L=E-I
9506 LET T=Z0
9507 LET T=T+I
9508 LET L=L+I
9509 LET B=L
9510 IF LEN H$>I THEN IF H$( TO II)="H$" THEN GOSUB VLST+XX
9511 LET CH=PEEK L
9512 PRINT TAB III-LEN STR$ T;T;" ";
9512 LET TP=INT (CH/F5)
9514 LET CH=CH-TP*F5+F5
9515 LET H$=CHR$ CH
9516 GOSUB VLST-F5+F5*TP
9517 LET E=TP=II OR TP=VI
9518 IF E THEN PRINT H$;TAB XX+VI;B
9519 IF NOT E THEN PRINT H$;TAB XX+III-LEN STR$ Q;Q;TAB XX+VI;B
9520 GOTO VLST+VI
9521 PRINT ,,"   %E%N%D% %O%F% %L%I%S%T ";L
9522 LET H$="***"
9523 STOP 
9524 GOTO VLST
9532 REM %S%T%R%I%N%G
9533 LET H$=H$+"$ "
9534 LET E=L+I
9535 GOSUB DB
9536 FOR Q=I TO (E AND E<F4)+(F4 AND E>=F4)
9537 LET H$=H$+CHR$ PEEK (L+II+Q)
9538 NEXT Q
9539 LET L=L+II+E
9540 RETURN 
9564 REM %S%I%N%G%L
9565 LET Q=VAL H$
9566 LET L=L+FIV
9567 RETURN 
9596 REM %N%(%)
9597 LET H$=H$+"("
9598 LET I$=H$
9599 LET S=PEEK (L+III)
9600 FOR Q=I TO S
9601 LET E=L+II+II*Q
9602 GOSUB DB
9603 IF Q>=S THEN GOTO VLST+105
9604 LET H$=H$+STR$ E+","
9605 LET I$=I$+"1,"
9606 NEXT Q
9607 LET H$=H$+STR$ E+")"
9608 LET I$=I$+"1)"
9609 LET Q=VAL I$
9610 LET E=L+I
9611 GOSUB DB
9612 LET L=L+II+E
9613 RETURN 
9628 REM %M%U%L%T
9629 LET L=L+I
9630 LET CH=PEEK L
9631 IF INT (CH/F6)=II THEN GOTO VLST+133
9632 LET H$=H$+CHR$ CH
9633 GOTO VLST+F7
9634 LET H$=H$+CHR$ (CH-F7)
9635 LET Q=VAL H$
9636 LET L=L+FIV
9637 RETURN 
9660 REM %$%(%)
9661 LET H$=H$+"$("
9662 LET S=PEEK (L+III)
9663 FOR Q=I TO S
9664 LET E=L+II+II*Q
9665 GOSUB DB
9666 IF Q>=S THEN GOTO VLST+168
9667 LET H$=H$+STR$ E+","
9668 NEXT Q
9669 LET H$=H$+STR$ E+")"
9670 LET E=L+VI
9671 LET U=L+III+II*S
9672 GOSUB DB
9674 FOR Q=U TO U+(E AND E<F4)+(F4 AND E>=F4)
9675 LET H$=H$+CHR$ PEEK Q
9676 NEXT Q
9677 GOTO VLST+109
9692 REM %F%-%N
9693 LET Q=VAL H$
9694 LET H$=H$+" FOR-NEXT"
9695 LET L=L+XX-III
9696 RETURN 
9697 REM %D%T%B
9698 FOR J=LEN I$ TO I STEP -I
9699 IF I$(J)=" " THEN NEXT J
9700 LET I$=I$( TO J)
9701 RETURN 
9702 REM %D%B
9703 LET E=F8*PEEK (E+I)+PEEK E
9704 RETURN 
9705 REM %S%R%C%H
9706 CLS 
9707 PRINT AT IX,I;"WRITE YOUR STRING WITHOUT LINE NUMBER.  ADD A QUOTE AND PRECEDESTRING WITH",,,," LET H$=""",,,," THEN ENTER AND CONTINUE."
9708 LET E=17116
9709 STOP 
9710 POKE E+IX,LEN H$
9711 POKE E-I,247
9712 POKE E,66
9713 LET K=PEEK 16396+F8*PEEK 16397-17143
9714 LET S=INT (K/F8)
9715 LET K=K-F8*S
9716 POKE E+III,K
9717 POKE E+IV,S
9718 FOR E=I TO LEN H$
9719 POKE (E+17015),CODE H$(E)
9720 NEXT E
9721 CLS 
9722 PRINT ,,"""";H$;"""";TAB Z0;,,
9723 LET K=USR 16809
9724 IF K=55555 THEN GOTO 9740
9727 LET Q=K
9728 LET Q=Q-I
9729 IF PEEK Q<>118 THEN GOTO 9728
9730 IF K-Q<IV THEN GOTO 9723
9732 LET E=F8*PEEK (Q+I)+PEEK (Q+II)
9733 LET K=F8*PEEK (Q+IV)+PEEK (Q+III)
9734 LET I$=""
9735 FOR Q=Q+FIV TO Q+III+K
9736 LET I$=I$+CHR$ PEEK Q
9737 NEXT Q
9738 PRINT E;TAB FIV;I$
9739 GOTO 9723
9740 PRINT ,,"  % %S%E%A%R%C%H% %C%O%M%P%L%E%T%E% "
9741 STOP 
9742 GOTO 9706
9750 REM %S%P%Y
9751 PRINT AT XX+I,Z0;"LOOK AT NO./%QUIT/%HIGHER/%L0WER"
9752 INPUT H$
9753 IF H$<>"Q" THEN GOTO 9755
9754 STOP 
9755 IF H$<>"H" THEN GOTO 9758
9756 LET B=B+F4
9757 GOTO 9762
9758 IF H$<>"L" THEN GOTO 9761
9759 LET B=B-F4
9760 GOTO 9762
9761 LET B=VAL H$
9762 CLS 
9763 FOR E=B TO B+XX+I
9764 PRINT E;TAB VI;PEEK E;TAB TEN;":";CHR$ PEEK E;":";TAB XX;F8*PEEK (E+I)+PEEK E
9765 NEXT E
9766 GOTO 9752
9800 REM %P%U%R%G
9801 LET N(1)=USR 16900
9802 REM %I%N%I%T%I%A%L%I%Z%A%T%I%O%N%S
9810 LET I=1
9811 LET Z0=I-I
9812 LET II=I+I
9813 LET III=II+I
9814 LET IV=II+II
9815 LET FIV=IV+I
9816 LET VI=IV+II
9817 LET VII=VI+I
9818 LET VIII=IV+IV
9819 LET IX=VIII+I
9820 LET TEN=IX+I
9821 LET XX=II*TEN
9822 LET XXX=30
9823 LET F4=II*VIII
9824 LET F5=II*F4
9825 LET F6=II*F5
9826 LET F7=II*F6
9827 LET F8=256
9828 LET FF=F8-I
9829 LET IK=I/F8/F8
9840 REM %K%E%Y%S
9841 LET VLST=9501
9842 LET DB=9703
9843 LET PURG=9801
9844 LET MEM=9916
9845 LET ZZ=9953
9846 LET ZZZ=ZZ-I
9847 LET ZZZZ=ZZ-II
9848 LET SAVE=9900
9849 LET SYSV=9928
9850 LET MAP=8101
9851 LET SEARCH=9450
9852 LET SRCH=9706
9853 LET HELP=9961
9854 LET SPY=9751
9855 LET DISA=9000
9856 LET ERR=9103
9857 LET DTB=9698
9858 LET WCOD=9121
9859 LET WSTR=9136
9860 LET NTRY=HELP
9861 LET EDIT=9201
9892 CLS 
9893 PRINT ,,,,"* TO DELETE STRINGS AND ARRAYS, REDIMENSION THEM TO ZERO."
9894 PRINT ,,"   DIM (NAME)$(0)  OR"
9895 PRINT ,,"   DIM (NAME)(0)"
9896 PRINT ,,"   THIS WILL PULL ERROR 3/0 BUT"," THE JOB IS DONE."
9897 STOP 
9898 GOTO VLST
9899 REM %S%A%V%E
9900 CLS 
9901 PRINT ,,,,"""";Z$;""" IS TO BE SAVED.",,,"START RECORDER.  PRESS ANY KEY.",,,Q$,,
9902 PRINT "MODE IS ";"LOOPING" AND NOT (NTRY-SAVE);"HELP" AND NOT (NTRY-HELP);"LOAD-AND-GO" AND NOT (NTRY-1000)
9903 SLOW 
9904 IF NTRY<>SAVE THEN PAUSE 40000
9905 FOR N=F6 TO I STEP -I
9906 UNPLOT N-I,XXX
9907 NEXT N
9908 SAVE Z$
9909 FAST 
9910 CLS 
9911 PRINT Y$;X$
9912 PRINT AT IX+VI,VII;"PRESENTS***"
9913 GOSUB ZZZ
9914 GOTO NTRY
9915 REM %M%E%M
9916 LET L=F8*(PEEK 16387-PEEK 16413)+PEEK 16386-PEEK 16412
9917 LET E=INT (L/F5/F5)
9918 PRINT AT IX,Z0;"MEMORY LEFT IS:";E;" K, ";L-F5*F5*E;" BYTES.",,,"(";L;" BYTES)"
9919 IF L<F8+XX THEN PRINT ,,"CAUTION: LIST EDITING MAY BE IMPAIRED."
9920 STOP 
9921 GOTO MAP
9927 REM %S%Y%S%V
9928 LET E=II*CODE D$-75
9929 IF E<I OR E>13 THEN GOTO 9933
9930 LET E$="10141824260002"
9931 LET E=VAL E$(E TO E+I)+16386
9932 LET D$=STR$ (F8*PEEK (E+I)+PEEK E)
9933 RETURN 
9950 REM %S%L%E%E%P
9951 LET ZZ=ZZ+F8
9952 LET ZZ=ZZ+F7
9953 LET ZZ=ZZ+F6
9954 LET ZZ=ZZ+F5
9955 LET E=ZZ-ZZZ+F5
9956 LET ZZ=ZZZ+I
9957 PAUSE E
9958 POKE 16437,FF
9959 RETURN 
9960 REM %H%E%L%P
9961 CLS 
9962 LET PAGE=I
9963 LET H$="% %H%E%L%P%  PAGE "
9964 PRINT AT I,IX;H$;PAGE
9965 PRINT ,,"* USE GOTO FOR DESIRED LOCATION,",,"* LET Z$=""(YOUR PROGRAM NAME)""",,,"* LET NTRY=1000 IF YOU WANT YOUR PROGRAM TO RUN AFTER LOADING." 
9966 PRINT ,,"* Z$=""";Z$;""""
9967 LET I$="% %K%E%Y%W%O%R%D% %L%I%N%E% %F%U%N%C%T%I%O%N% "
9968 PRINT ,,I$,"""HELP""   9960 HERE.","""VLST""   9500 VARIABLE LIST.","""MEM""    9915 AVAILABLE MEMORY. ""SAVE""   9900 SAVE PROGRAM,"
9969 PRINT """NTRY""   HELP UNLESS CHANGED."
9970 PRINT """PURG""   9800 DELETE VARIABLES."
9971 PRINT """MAP""    8100 MEMORY MAP."
9972 PRINT """SPY""    9750 LOOK AT MEMORY."
9973 PRINT """DISA""   9000 DISASSEMBLE."
9974 LET PAGE=II
9975 PRINT 
9976 CLS 
9977 PRINT AT I,IX;H$;PAGE,,,I$
9978 PRINT """WCOD""   9120 DECODE TABLE."
9979 PRINT """WSTD""   9135 MNEMONICS."
9980 PRINT """SRCH""   9705 BASIC CODE."
9981 PRINT """SEARCH"" 9450 ROM SPACE."
9982 PRINT """EDIT""   9200 MACH CODE."
9983 PRINT "*""GOTO VLST"" CODES AS:","  :236:V:L:S:T: (5 BYTES)" 
9984 PRINT "*""GOTO 9500"" CODES AS:","  :235:9:5:0:0:126:EXP:B4:B3:B2:B1:B0: (12 BYTES)"
9985 PRINT "* USING VARIABLES IN PLACE OF   NUMBERS CAN SAVE MEMORY."
9986 PRINT "* USE:Z0,I,II,III,IV,FIV,VI,VII,VIII,IX,TEN,XX,XXX IN PLACE OF:0,1,2,3,4,5,6,7,8,9,10,20,30."
9987 PRINT "* LIST 9802 TO SEE."
9988 STOP 
9989 GOTO HELP
9997 REM %M%/%L% %C%0%D%E% %T%E%M%P%L%A%T%E%S
9998 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.......   /\.'
9999 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.........1.......   /\.'
Scroll to Top

Super Utility

Products: Super Utility
Developer(s): William J. Pedersen
Date: 1983
Type: Cassette
Platform(s): TS 1000

Utility for working with machine language programs and memory.

Content

Appears On

Related Products

Utility for working with machine language programs and memory.

Related Articles

Related Content

Image Gallery

Super Utility

Source Code

   1 REM %U%T%I%L%I%T%Y
   2 REM *************
   3 REM COPYRIGHT NOV 14, 1983 BY WILLIAM J. PEDERSEN. 1120 MERRIFIELD S.E., GRAND RAPIDS, MICHIGAN  49507
   4 REM REPRODUCTION OR USE OF THIS PROGRAM IS PROHIBITED WITHOUT EXPRESS WRITTEN PERMISSION.
   5 REM *************
   7 REM \7E\E6\E0\FE\C0\28\0E\F2\99\41\FE\80\28\07\F2\A2\41\FE\60\28\10\23\22\93\41\ED\5B\93\7B\19\23\23\C9\11\0C\00\19\11\06\00\19\C9\23\CB\7E\28\FB\18\F4\F5\D5\E5\2A\DB\42\ED\4B\DF\42\ED\5B\E7\42\1A\ED\B1\20\1B\22\DB\42\ED\43\DF\42\2B\ED\4B\E5\42\1A\ED\A1\20\DF\13\EA\C8\41\ED\4B\DB\42\18\21\01\03\D9\18\1C\F5\D5\E5\21\00\00\22\DB\42\21\FF\1F\22\DF\42\18\BF\00\00\D9\18\06
   8 REM \E1\D1\FD\2A\00\40\3E\1E\ED\47\F1\C9\F5\D5\E5\2A\10\40\22\DB\42\3E\80\BE\28\E6\CB\6E\F5\CD\78\41\22\DD\42\F1\20\08\2A\DD\42\22\DB\42\18\E7\CD\2E\42\2A\DB\42\18\DF\2A\DB\42\E5\ED\5B\DD\42\D5\AF\ED\52\EB\2A\1C\40\19\22\1C\40\2A\1A\40\19\22\1A\40\2A\14\40\E5\19\22\14\40\E1\D1\AF\ED\52\E5\C1\03\2A\DB\42\EB\ED\B0\E1\C9\1B\1B\1B\1B\1D\1B\1B\1B\1B\1B\1B\00\00\00\00\18\06
   9 REM \DC\07\F2\03\D9\FA\9C\AD\EA\78\42\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\57\1B\95\7B\A8\04\1B\1B\1B\1B\02\00\78\42\1B\1B\1B\1B\1B\1B\1E\1B\1B
8100 REM %M%A%P
8101 CLS 
8102 PRINT ,,"    % %M%E%M%O%R%Y% %M%A%P%  ";Z$
8103 LET G$="\##\##%P\:.\'.\':%V\:'\..\':%U%U\.'\.'1638420479204802457524576286712867232767ABCEFG0 PROGRAM =VARIABLES=AVAIL MEM=RAMTOP UP="
8104 LET H$="16509"
8105 LET Q=1
8106 LET S=37
8107 LET I$=CHR$ S
8108 FOR K=IV TO XX-I STEP FIV
8109 LET T=II*K+VII
8110 LET L=53.4+II*K/FIV
8111 LET D$=H$
8112 GOSUB SYSV
8113 LET TT=VAL D$
8114 LET D$=G$(L)
8115 GOSUB SYSV
8116 LET QQ=VAL D$
8117 IF QQ=Z0 THEN LET QQ=32768
8118 LET LL=54+II*K
8119 PRINT AT K-I,Z0;G$(LL TO LL+IX);QQ-TT;" BYTES."
8120 LET H$=G$(L+I)
8121 FOR N=Z0 TO 31
8122 PRINT AT K,N;G$(Q);
8123 LET B=13107.2+F7*N+819.2*K
8124 LET D$=I$
8125 GOSUB SYSV
8126 LET BB=VAL D$
8127 IF BB-B<F6 THEN PRINT AT K,N;G$(Q+I);
8128 IF BB>B+F7 THEN GOTO 8137
8129 LET Q=Q+II
8130 LET S=S+I
8131 LET D$=CHR$ S
8132 GOSUB SYSV
8133 LET I$=D$
8134 IF LEN I$<II THEN LET I$="65536"
8135 IF VAL I$>B+F7 THEN GOTO 8137
8136 GOTO 8130
8137 NEXT N
8138 PRINT G$(T TO T+IV);TAB 27;G$(T+FIV TO T+IX)
8139 NEXT K
8140 STOP 
8141 GOTO HELP
8999 REM % %D%I%S%A%S%S%E%M%B%L%E%R% 
9000 PRINT AT XX,Z0;"DISASSEMBLE STARTING WHERE?"
9001 INPUT WB
9002 CLS 
9003 LET WL=Z0
9004 LET WIA=WB
9005 LET WFS=Z0
9006 LET WFN=I
9007 LET WFK=Z0
9008 LET WF=Z0
9009 LET WFW=Z0
9010 LET WV=Z0
9011 LET G$=""
9012 LET WN=112
9013 LET WL=WL+I
9014 LET WP=PEEK WB
9015 IF WP<>221 AND WP<>253 THEN GOTO 9021
9016 IF WFK THEN GOTO ERR
9017 LET WF=I+(I AND WP=253)
9018 LET WFK=I
9019 LET WB=WB+I
9020 GOTO 9014
9021 IF WP<>203 THEN GOTO 9034
9022 LET WFN=Z0
9023 LET WJ=345
9024 LET WB=WB+I+WFK
9025 LET WP=PEEK WB
9026 LET W1=INT (WP/F6)
9027 LET W=WP-F6*W1
9028 LET W2=INT (W/VIII)
9029 LET W=W-VIII*W2
9030 IF WFK AND W<>VI THEN GOTO ERR
9031 IF W1 THEN LET T$(WJ)=CHR$ (97+W1)+CHR$ (F4+I+W2)+CHR$ (W+I)
9032 IF NOT W1 THEN LET T$(WJ)=CHR$ (49+W2)+CHR$ (W+I)+CHR$ 97
9033 GOTO 9042
9034 LET WJ=I+PEEK WB
9035 LET WW=Z0
9036 IF WP<>237 THEN GOTO 9040
9037 LET WB=WB+I
9038 LET WW=PEEK WB
9039 LET WJ=193+WW-(36 AND WW>159)
9040 IF WW>123 AND WW<160 OR WJ>344 THEN GOTO ERR
9041 LET WDIS=PEEK (WB+I)
9042 LET V$=""
9043 LET W0=CODE T$(WJ,I)
9044 IF W0=WN+IV THEN GOTO ERR
9045 IF W0<>WN-IV THEN GOTO 9048
9046 LET WV=VAL (W$(CODE T$(WJ,II)))
9047 LET G$=" "
9048 GOSUB 9066
9049 LET B$=I$+" "
9050 LET W0=CODE T$(WJ,II)
9051 GOSUB 9066
9052 IF I$="" THEN GOTO 9063
9053 IF WP=211 THEN LET I$="(N)"
9054 LET B$=B$+I$
9055 LET W0=CODE T$(WJ,III)
9056 GOSUB 9066
9057 IF I$="" THEN GOTO 9060
9058 IF WP=219 THEN LET I$="(N)"
9059 LET B$=B$+","+I$
9060 IF WFK AND NOT WFW THEN GOTO ERR
9061 LET V$=STR$ WV
9062 IF NOT LEN G$ AND WV=Z0 THEN LET V$=""
9063 PRINT WIA;TAB VI;B$;TAB XX-I;V$+G$
9064 LET WB=WB+I+WFS*WFN
9065 GOTO 9004
9066 LET I$=W$(W0)
9067 GOSUB DTB
9068 IF W0=WN+FIV THEN GOSUB 9094
9069 IF W0<>WN+VI THEN GOTO 9075
9070 LET WB=WB+WFK+I
9071 LET WFN=Z0
9072 LET WV=PEEK WB
9073 IF WP=211 OR WP=219 THEN GOTO 9078
9074 LET G$=":"+CHR$ WV+":"
9075 IF WV>=F5 THEN GOTO 9078
9076 LET W=F4+I+III*WV
9078 IF W0<WN+VII THEN GOTO 9085
9079 LET WB=WB+II
9080 LET G$=" "
9081 LET WFN=Z0
9082 LET E=WB-I
9083 GOSUB DB
9084 LET WV=E
9085 IF NOT WFK THEN GOTO 9092
9086 IF W0=VII OR W0=61 OR W0=WN THEN LET WFW=I
9087 IF W0<>VII THEN GOTO 9091
9088 LET WFS=I
9089 GOSUB 9095
9090 LET I$=W$(WN+WF, TO III)+I$+")"
9091 IF W0=61 THEN LET I$=W$(WN+WF,II TO III)
9092 IF W0=WN THEN LET I$=W$(WN+WF)
9093 RETURN 
9094 LET WB=WB+I
9095 LET W=WDIS
9096 IF W<F7 THEN GOTO 9098
9097 LET W=W-F8
9098 IF NOT WFK THEN LET W=W+II
9099 IF W>=Z0 THEN LET I$="+"+STR$ W
9100 IF W<Z0 THEN LET I$=STR$ W
9101 IF B$( TO II)="JR" OR B$( TO II)="DJ" THEN LET WV=WIA+W
9102 RETURN 
9103 PRINT "ERROR AT ";WIA;". ",
9104 FOR J=Z0 TO III
9105 PRINT PEEK (WIA+J);" ";
9106 NEXT J
9107 PRINT 
9108 GOTO 9004
9120 REM %W%C%O%D
9121 CLS 
9122 PRINT ,," T$(345,3) TABLE FOR DECODING","MOST Z80 INSTRUCTIONS.",,,"N   VALUES      INTERPRETATION",,,
9123 FOR N=I TO 345
9124 PRINT N;" ";
9125 FOR K=I TO III
9126 PRINT CODE T$(N,K);" ";
9127 NEXT K
9128 PRINT ,
9129 FOR K=I TO III
9130 PRINT W$(CODE T$(N,K));" ";
9131 NEXT K
9132 PRINT 
9133 NEXT N
9134 STOP 
9135 REM %W%S%T%R
9136 CLS 
9137 PRINT ,," W$(120,4) ARRAY FOR MNEMONICS.",,,
9138 FOR N=I TO 120
9139 PRINT TAB VI;"W$(";N;")=","""";W$(N);""""
9140 NEXT N
9141 STOP 
9142 GOTO WCOD
9200 REM %E%D%I%T
9201 CLS 
9202 LET L=9228
9203 LET M=9317
9206 PRINT ,,"% %M%A%C%H%I%N%E% %L%A%N%G%U%A%G%E% %E%D%I%T%O%R% ",,,"WHERE ABOVE 16759?  START ";
9207 INPUT B
9208 PRINT B,"SELECT BY NO."
9209 FOR N=VI TO F4+I
9210 PRINT AT N,F4;"                "
9211 NEXT N
9212 PRINT AT IV,XX;"NOW   ";B
9213 PRINT ,," 1 SINGLE BYTE",," 2 DOUBLE BYTE",," 3 LD HL,(NN)",," 4 LD (NN),HL",," 5 PUSH SEQ",," 6 LD (NN),BC",," 7 LD BC,(NN)",," 8 LD (NN),DE",," 9 LD DE,(NN)",,"10 SBC HL,BC",,"11 ADC HL,BC",,"12 SBC HL,DE",,"13 ADC HL,DE",,"14 JUMPS",,"15 %Q%U%I%T"
9214 INPUT N
9215 IF N<I OR N>F4-II THEN GOTO M
9216 PRINT AT N+FIV,F4;"% "
9217 GOTO L-F4+VI*N
9218 INPUT K
9219 IF K<0 OR K>FF THEN GOTO M
9220 POKE B,K
9221 LET B=B+I
9222 GOTO 9209
9224 INPUT K
9225 IF K<0 OR K>=F8*F8 THEN GOTO M
9226 POKE B+I,INT (K/F8)
9227 POKE B,K-F8*INT (K/F8)
9228 LET B=B+II
9229 GOTO 9209
9236 POKE B,XXX+N
9237 LET B=B+I
9238 GOTO L-IV
9242 POKE B,245
9243 POKE B+I,213
9244 POKE B+II,229
9245 LET B=B+I
9246 GOTO L
9266 POKE B,237  
9267 POKE B+I,XX-I+VIII*N  
9268 LET B=B+II
9269 GOTO L-IV
9290 POKE B,237  
9291 POKE B+I,VIII*N-F4+II  
9292 GOTO L
9296 PRINT AT F4,F4;"JUMP TO?"
9297 INPUT N
9298 IF N<16760 OR N>=F8*F8 THEN GOTO M
9299 LET W=(B-N)>F7+I OR B-N<-F7+II
9300 PRINT AT VI,F4;"WHICH CONDITION?",AT VIII,F4;" 1 DJNZ",AT IX,F4;" 2 NONE",AT TEN,F4;" 3 NZ",AT TEN+I,F4;" 4  Z",AT VI+VI,F4;" 5 NC",AT IX+IV,F4;" 6  C",AT F4-II,F4;" 7 PO",AT F4-I,F4;" 8 PE",AT F4,F4;" 9  P   ",AT F4+I,F4;"10  M"   
9301 INPUT S
9302 IF S<I OR S>TEN THEN GOTO M
9303 IF W OR S>VI THEN GOTO 9309
9304 LET N=N-B-II
9305 IF N>=F7 THEN LET N=F7-N
9306 POKE B,VIII+VIII*S
9307 POKE B+I,N
9308 GOTO L
9309 IF S=I THEN GOTO M
9310 POKE B,170+VIII*S
9311 IF S=II THEN POKE B,195
9312 LET B=B+I
9313 LET P3=INT (N/F8)
9314 POKE B,N-F8*P3
9315 POKE B+I,P3
9316 GOTO L
9317 CLS 
9318 PRINT AT IX,Z0;"%Q%U%I%T OR AN ERROR HAS OCCURRED.  THE LAST LOCATION WAS ";B;".","CONTINUE FOR DISASSEMBLER."
9319 STOP 
9320 GOTO DISA
9449 REM %S%E%A%R%C%H
9450 CLS 
9451 LET Q=Z0
9452 LET E=I
9453 PRINT ,,"OBJECTIVE/TITLE?",
9454 INPUT G$
9455 PRINT AT I,Z0;G$;"                ";AT II,Z0;"PRINT? %YES OR %NO",
9456 LET W=Z0
9457 INPUT H$
9458 IF LEN H$ THEN IF H$(I)="Y" THEN LET W=I
9459 PRINT AT II,Z0;"INPUT YOUR CODE          ",
9460 INPUT L
9461 IF L>FF THEN GOTO 9481
9462 PRINT AT II,Z0;"IF DOUBLE BYTE, ENTER ""D"""
9463 INPUT H$
9464 IF LEN H$ THEN IF H$(I)="D" THEN GOTO 9481
9465 POKE 17015+E,L
9466 LET E=E+I
9467 PRINT AT II,Z0;"ANOTHER ENTRY? %YES OR %NO",
9468 INPUT H$
9469 IF LEN H$ THEN IF H$(I)="Y" THEN GOTO 9459
9470 CLS 
9471 IF NOT W THEN PRINT ,,G$
9472 IF W THEN LPRINT G$
9473 POKE 17125,E-I
9474 LET K=USR 16860
9475 GOTO 9477
9476 LET K=USR 16809
9477 LET Q=Q+I
9478 IF K=55555 THEN GOTO 9486
9479 GOSUB 9490+II*W
9480 GOTO 9476
9481 LET P2=INT (L/F8+II**-IX)
9482 POKE 17016+E,P2
9483 POKE 17015+E,L-F8*P2
9484 LET E=E+II
9485 GOTO 9467
9486 IF NOT W THEN PRINT "$";Q-I
9487 IF W THEN LPRINT "$";Q-I
9488 STOP 
9489 GOTO SEARCH
9490 PRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9491 RETURN 
9492 LPRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9493 RETURN 
9499 STOP 
9500 REM %V%L%S%T
9501 CLS 
9502 PRINT ,,,,"   %V%A%R%I%A%B%L%E%S",,,
9503 LET E=16400
9504 GOSUB DB
9505 LET L=E-I
9506 LET T=Z0
9507 LET T=T+I
9508 LET L=L+I
9509 LET B=L
9510 IF LEN H$>I THEN IF H$( TO II)="H$" THEN GOSUB VLST+XX
9511 LET CH=PEEK L
9512 PRINT TAB III-LEN STR$ T;T;" ";
9512 LET TP=INT (CH/F5)
9514 LET CH=CH-TP*F5+F5
9515 LET H$=CHR$ CH
9516 GOSUB VLST-F5+F5*TP
9517 LET E=TP=II OR TP=VI
9518 IF E THEN PRINT H$;TAB XX+VI;B
9519 IF NOT E THEN PRINT H$;TAB XX+III-LEN STR$ Q;Q;TAB XX+VI;B
9520 GOTO VLST+VI
9521 PRINT ,,"   %E%N%D% %O%F% %L%I%S%T ";L
9522 LET H$="***"
9523 STOP 
9524 GOTO VLST
9532 REM %S%T%R%I%N%G
9533 LET H$=H$+"$ "
9534 LET E=L+I
9535 GOSUB DB
9536 FOR Q=I TO (E AND E<F4)+(F4 AND E>=F4)
9537 LET H$=H$+CHR$ PEEK (L+II+Q)
9538 NEXT Q
9539 LET L=L+II+E
9540 RETURN 
9564 REM %S%I%N%G%L
9565 LET Q=VAL H$
9566 LET L=L+FIV
9567 RETURN 
9596 REM %N%(%)
9597 LET H$=H$+"("
9598 LET I$=H$
9599 LET S=PEEK (L+III)
9600 FOR Q=I TO S
9601 LET E=L+II+II*Q
9602 GOSUB DB
9603 IF Q>=S THEN GOTO VLST+105
9604 LET H$=H$+STR$ E+","
9605 LET I$=I$+"1,"
9606 NEXT Q
9607 LET H$=H$+STR$ E+")"
9608 LET I$=I$+"1)"
9609 LET Q=VAL I$
9610 LET E=L+I
9611 GOSUB DB
9612 LET L=L+II+E
9613 RETURN 
9628 REM %M%U%L%T
9629 LET L=L+I
9630 LET CH=PEEK L
9631 IF INT (CH/F6)=II THEN GOTO VLST+133
9632 LET H$=H$+CHR$ CH
9633 GOTO VLST+F7
9634 LET H$=H$+CHR$ (CH-F7)
9635 LET Q=VAL H$
9636 LET L=L+FIV
9637 RETURN 
9660 REM %$%(%)
9661 LET H$=H$+"$("
9662 LET S=PEEK (L+III)
9663 FOR Q=I TO S
9664 LET E=L+II+II*Q
9665 GOSUB DB
9666 IF Q>=S THEN GOTO VLST+168
9667 LET H$=H$+STR$ E+","
9668 NEXT Q
9669 LET H$=H$+STR$ E+")"
9670 LET E=L+VI
9671 LET U=L+III+II*S
9672 GOSUB DB
9674 FOR Q=U TO U+(E AND E<F4)+(F4 AND E>=F4)
9675 LET H$=H$+CHR$ PEEK Q
9676 NEXT Q
9677 GOTO VLST+109
9692 REM %F%-%N
9693 LET Q=VAL H$
9694 LET H$=H$+" FOR-NEXT"
9695 LET L=L+XX-III
9696 RETURN 
9697 REM %D%T%B
9698 FOR J=LEN I$ TO I STEP -I
9699 IF I$(J)=" " THEN NEXT J
9700 LET I$=I$( TO J)
9701 RETURN 
9702 REM %D%B
9703 LET E=F8*PEEK (E+I)+PEEK E
9704 RETURN 
9705 REM %S%R%C%H
9706 CLS 
9707 PRINT AT IX,I;"WRITE YOUR STRING WITHOUT LINE NUMBER.  ADD A QUOTE AND PRECEDESTRING WITH",,,," LET H$=""",,,," THEN ENTER AND CONTINUE."
9708 LET E=17116
9709 STOP 
9710 POKE E+IX,LEN H$
9711 POKE E-I,247
9712 POKE E,66
9713 LET K=PEEK 16396+F8*PEEK 16397-17143
9714 LET S=INT (K/F8)
9715 LET K=K-F8*S
9716 POKE E+III,K
9717 POKE E+IV,S
9718 FOR E=I TO LEN H$
9719 POKE (E+17015),CODE H$(E)
9720 NEXT E
9721 CLS 
9722 PRINT ,,"""";H$;"""";TAB Z0;,,
9723 LET K=USR 16809
9724 IF K=55555 THEN GOTO 9740
9727 LET Q=K
9728 LET Q=Q-I
9729 IF PEEK Q<>118 THEN GOTO 9728
9730 IF K-Q<IV THEN GOTO 9723
9732 LET E=F8*PEEK (Q+I)+PEEK (Q+II)
9733 LET K=F8*PEEK (Q+IV)+PEEK (Q+III)
9734 LET I$=""
9735 FOR Q=Q+FIV TO Q+III+K
9736 LET I$=I$+CHR$ PEEK Q
9737 NEXT Q
9738 PRINT E;TAB FIV;I$
9739 GOTO 9723
9740 PRINT ,,"  % %S%E%A%R%C%H% %C%O%M%P%L%E%T%E% "
9741 STOP 
9742 GOTO 9706
9750 REM %S%P%Y
9751 PRINT AT XX+I,Z0;"LOOK AT NO./%QUIT/%HIGHER/%L0WER"
9752 INPUT H$
9753 IF H$<>"Q" THEN GOTO 9755
9754 STOP 
9755 IF H$<>"H" THEN GOTO 9758
9756 LET B=B+F4
9757 GOTO 9762
9758 IF H$<>"L" THEN GOTO 9761
9759 LET B=B-F4
9760 GOTO 9762
9761 LET B=VAL H$
9762 CLS 
9763 FOR E=B TO B+XX+I
9764 PRINT E;TAB VI;PEEK E;TAB TEN;":";CHR$ PEEK E;":";TAB XX;F8*PEEK (E+I)+PEEK E
9765 NEXT E
9766 GOTO 9752
9800 REM %P%U%R%G
9801 LET N(1)=USR 16900
9802 REM %I%N%I%T%I%A%L%I%Z%A%T%I%O%N%S
9810 LET I=1
9811 LET Z0=I-I
9812 LET II=I+I
9813 LET III=II+I
9814 LET IV=II+II
9815 LET FIV=IV+I
9816 LET VI=IV+II
9817 LET VII=VI+I
9818 LET VIII=IV+IV
9819 LET IX=VIII+I
9820 LET TEN=IX+I
9821 LET XX=II*TEN
9822 LET XXX=30
9823 LET F4=II*VIII
9824 LET F5=II*F4
9825 LET F6=II*F5
9826 LET F7=II*F6
9827 LET F8=256
9828 LET FF=F8-I
9829 LET IK=I/F8/F8
9840 REM %K%E%Y%S
9841 LET VLST=9501
9842 LET DB=9703
9843 LET PURG=9801
9844 LET MEM=9916
9845 LET ZZ=9953
9846 LET ZZZ=ZZ-I
9847 LET ZZZZ=ZZ-II
9848 LET SAVE=9900
9849 LET SYSV=9928
9850 LET MAP=8101
9851 LET SEARCH=9450
9852 LET SRCH=9706
9853 LET HELP=9961
9854 LET SPY=9751
9855 LET DISA=9000
9856 LET ERR=9103
9857 LET DTB=9698
9858 LET WCOD=9121
9859 LET WSTR=9136
9860 LET NTRY=HELP
9861 LET EDIT=9201
9892 CLS 
9893 PRINT ,,,,"* TO DELETE STRINGS AND ARRAYS, REDIMENSION THEM TO ZERO."
9894 PRINT ,,"   DIM (NAME)$(0)  OR"
9895 PRINT ,,"   DIM (NAME)(0)"
9896 PRINT ,,"   THIS WILL PULL ERROR 3/0 BUT"," THE JOB IS DONE."
9897 STOP 
9898 GOTO VLST
9899 REM %S%A%V%E
9900 CLS 
9901 PRINT ,,,,"""";Z$;""" IS TO BE SAVED.",,,"START RECORDER.  PRESS ANY KEY.",,,Q$,,
9902 PRINT "MODE IS ";"LOOPING" AND NOT (NTRY-SAVE);"HELP" AND NOT (NTRY-HELP);"LOAD-AND-GO" AND NOT (NTRY-1000)
9903 SLOW 
9904 IF NTRY<>SAVE THEN PAUSE 40000
9905 FOR N=F6 TO I STEP -I
9906 UNPLOT N-I,XXX
9907 NEXT N
9908 SAVE Z$
9909 FAST 
9910 CLS 
9911 PRINT Y$;X$
9912 PRINT AT IX+VI,VII;"PRESENTS***"
9913 GOSUB ZZZ
9914 GOTO NTRY
9915 REM %M%E%M
9916 LET L=F8*(PEEK 16387-PEEK 16413)+PEEK 16386-PEEK 16412
9917 LET E=INT (L/F5/F5)
9918 PRINT AT IX,Z0;"MEMORY LEFT IS:";E;" K, ";L-F5*F5*E;" BYTES.",,,"(";L;" BYTES)"
9919 IF L<F8+XX THEN PRINT ,,"CAUTION: LIST EDITING MAY BE IMPAIRED."
9920 STOP 
9921 GOTO MAP
9927 REM %S%Y%S%V
9928 LET E=II*CODE D$-75
9929 IF E<I OR E>13 THEN GOTO 9933
9930 LET E$="10141824260002"
9931 LET E=VAL E$(E TO E+I)+16386
9932 LET D$=STR$ (F8*PEEK (E+I)+PEEK E)
9933 RETURN 
9950 REM %S%L%E%E%P
9951 LET ZZ=ZZ+F8
9952 LET ZZ=ZZ+F7
9953 LET ZZ=ZZ+F6
9954 LET ZZ=ZZ+F5
9955 LET E=ZZ-ZZZ+F5
9956 LET ZZ=ZZZ+I
9957 PAUSE E
9958 POKE 16437,FF
9959 RETURN 
9960 REM %H%E%L%P
9961 CLS 
9962 LET PAGE=I
9963 LET H$="% %H%E%L%P%  PAGE "
9964 PRINT AT I,IX;H$;PAGE
9965 PRINT ,,"* USE GOTO FOR DESIRED LOCATION,",,"* LET Z$=""(YOUR PROGRAM NAME)""",,,"* LET NTRY=1000 IF YOU WANT YOUR PROGRAM TO RUN AFTER LOADING." 
9966 PRINT ,,"* Z$=""";Z$;""""
9967 LET I$="% %K%E%Y%W%O%R%D% %L%I%N%E% %F%U%N%C%T%I%O%N% "
9968 PRINT ,,I$,"""HELP""   9960 HERE.","""VLST""   9500 VARIABLE LIST.","""MEM""    9915 AVAILABLE MEMORY. ""SAVE""   9900 SAVE PROGRAM,"
9969 PRINT """NTRY""   HELP UNLESS CHANGED."
9970 PRINT """PURG""   9800 DELETE VARIABLES."
9971 PRINT """MAP""    8100 MEMORY MAP."
9972 PRINT """SPY""    9750 LOOK AT MEMORY."
9973 PRINT """DISA""   9000 DISASSEMBLE."
9974 LET PAGE=II
9975 PRINT 
9976 CLS 
9977 PRINT AT I,IX;H$;PAGE,,,I$
9978 PRINT """WCOD""   9120 DECODE TABLE."
9979 PRINT """WSTD""   9135 MNEMONICS."
9980 PRINT """SRCH""   9705 BASIC CODE."
9981 PRINT """SEARCH"" 9450 ROM SPACE."
9982 PRINT """EDIT""   9200 MACH CODE."
9983 PRINT "*""GOTO VLST"" CODES AS:","  :236:V:L:S:T: (5 BYTES)" 
9984 PRINT "*""GOTO 9500"" CODES AS:","  :235:9:5:0:0:126:EXP:B4:B3:B2:B1:B0: (12 BYTES)"
9985 PRINT "* USING VARIABLES IN PLACE OF   NUMBERS CAN SAVE MEMORY."
9986 PRINT "* USE:Z0,I,II,III,IV,FIV,VI,VII,VIII,IX,TEN,XX,XXX IN PLACE OF:0,1,2,3,4,5,6,7,8,9,10,20,30."
9987 PRINT "* LIST 9802 TO SEE."
9988 STOP 
9989 GOTO HELP
9997 REM %M%/%L% %C%0%D%E% %T%E%M%P%L%A%T%E%S
9998 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.......   /\.'
9999 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.........1.......   /\.'
Scroll to Top

Super Utility

Products: Super Utility
Developer(s): William J. Pedersen
Date: 1983
Type: Cassette
Platform(s): TS 1000

Utility for working with machine language programs and memory.

Content

Appears On

Related Products

Utility for working with machine language programs and memory.

Related Articles

Related Content

Image Gallery

Super Utility

Source Code

   1 REM %U%T%I%L%I%T%Y
   2 REM *************
   3 REM COPYRIGHT NOV 14, 1983 BY WILLIAM J. PEDERSEN. 1120 MERRIFIELD S.E., GRAND RAPIDS, MICHIGAN  49507
   4 REM REPRODUCTION OR USE OF THIS PROGRAM IS PROHIBITED WITHOUT EXPRESS WRITTEN PERMISSION.
   5 REM *************
   7 REM \7E\E6\E0\FE\C0\28\0E\F2\99\41\FE\80\28\07\F2\A2\41\FE\60\28\10\23\22\93\41\ED\5B\93\7B\19\23\23\C9\11\0C\00\19\11\06\00\19\C9\23\CB\7E\28\FB\18\F4\F5\D5\E5\2A\DB\42\ED\4B\DF\42\ED\5B\E7\42\1A\ED\B1\20\1B\22\DB\42\ED\43\DF\42\2B\ED\4B\E5\42\1A\ED\A1\20\DF\13\EA\C8\41\ED\4B\DB\42\18\21\01\03\D9\18\1C\F5\D5\E5\21\00\00\22\DB\42\21\FF\1F\22\DF\42\18\BF\00\00\D9\18\06
   8 REM \E1\D1\FD\2A\00\40\3E\1E\ED\47\F1\C9\F5\D5\E5\2A\10\40\22\DB\42\3E\80\BE\28\E6\CB\6E\F5\CD\78\41\22\DD\42\F1\20\08\2A\DD\42\22\DB\42\18\E7\CD\2E\42\2A\DB\42\18\DF\2A\DB\42\E5\ED\5B\DD\42\D5\AF\ED\52\EB\2A\1C\40\19\22\1C\40\2A\1A\40\19\22\1A\40\2A\14\40\E5\19\22\14\40\E1\D1\AF\ED\52\E5\C1\03\2A\DB\42\EB\ED\B0\E1\C9\1B\1B\1B\1B\1D\1B\1B\1B\1B\1B\1B\00\00\00\00\18\06
   9 REM \DC\07\F2\03\D9\FA\9C\AD\EA\78\42\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\57\1B\95\7B\A8\04\1B\1B\1B\1B\02\00\78\42\1B\1B\1B\1B\1B\1B\1E\1B\1B
8100 REM %M%A%P
8101 CLS 
8102 PRINT ,,"    % %M%E%M%O%R%Y% %M%A%P%  ";Z$
8103 LET G$="\##\##%P\:.\'.\':%V\:'\..\':%U%U\.'\.'1638420479204802457524576286712867232767ABCEFG0 PROGRAM =VARIABLES=AVAIL MEM=RAMTOP UP="
8104 LET H$="16509"
8105 LET Q=1
8106 LET S=37
8107 LET I$=CHR$ S
8108 FOR K=IV TO XX-I STEP FIV
8109 LET T=II*K+VII
8110 LET L=53.4+II*K/FIV
8111 LET D$=H$
8112 GOSUB SYSV
8113 LET TT=VAL D$
8114 LET D$=G$(L)
8115 GOSUB SYSV
8116 LET QQ=VAL D$
8117 IF QQ=Z0 THEN LET QQ=32768
8118 LET LL=54+II*K
8119 PRINT AT K-I,Z0;G$(LL TO LL+IX);QQ-TT;" BYTES."
8120 LET H$=G$(L+I)
8121 FOR N=Z0 TO 31
8122 PRINT AT K,N;G$(Q);
8123 LET B=13107.2+F7*N+819.2*K
8124 LET D$=I$
8125 GOSUB SYSV
8126 LET BB=VAL D$
8127 IF BB-B<F6 THEN PRINT AT K,N;G$(Q+I);
8128 IF BB>B+F7 THEN GOTO 8137
8129 LET Q=Q+II
8130 LET S=S+I
8131 LET D$=CHR$ S
8132 GOSUB SYSV
8133 LET I$=D$
8134 IF LEN I$<II THEN LET I$="65536"
8135 IF VAL I$>B+F7 THEN GOTO 8137
8136 GOTO 8130
8137 NEXT N
8138 PRINT G$(T TO T+IV);TAB 27;G$(T+FIV TO T+IX)
8139 NEXT K
8140 STOP 
8141 GOTO HELP
8999 REM % %D%I%S%A%S%S%E%M%B%L%E%R% 
9000 PRINT AT XX,Z0;"DISASSEMBLE STARTING WHERE?"
9001 INPUT WB
9002 CLS 
9003 LET WL=Z0
9004 LET WIA=WB
9005 LET WFS=Z0
9006 LET WFN=I
9007 LET WFK=Z0
9008 LET WF=Z0
9009 LET WFW=Z0
9010 LET WV=Z0
9011 LET G$=""
9012 LET WN=112
9013 LET WL=WL+I
9014 LET WP=PEEK WB
9015 IF WP<>221 AND WP<>253 THEN GOTO 9021
9016 IF WFK THEN GOTO ERR
9017 LET WF=I+(I AND WP=253)
9018 LET WFK=I
9019 LET WB=WB+I
9020 GOTO 9014
9021 IF WP<>203 THEN GOTO 9034
9022 LET WFN=Z0
9023 LET WJ=345
9024 LET WB=WB+I+WFK
9025 LET WP=PEEK WB
9026 LET W1=INT (WP/F6)
9027 LET W=WP-F6*W1
9028 LET W2=INT (W/VIII)
9029 LET W=W-VIII*W2
9030 IF WFK AND W<>VI THEN GOTO ERR
9031 IF W1 THEN LET T$(WJ)=CHR$ (97+W1)+CHR$ (F4+I+W2)+CHR$ (W+I)
9032 IF NOT W1 THEN LET T$(WJ)=CHR$ (49+W2)+CHR$ (W+I)+CHR$ 97
9033 GOTO 9042
9034 LET WJ=I+PEEK WB
9035 LET WW=Z0
9036 IF WP<>237 THEN GOTO 9040
9037 LET WB=WB+I
9038 LET WW=PEEK WB
9039 LET WJ=193+WW-(36 AND WW>159)
9040 IF WW>123 AND WW<160 OR WJ>344 THEN GOTO ERR
9041 LET WDIS=PEEK (WB+I)
9042 LET V$=""
9043 LET W0=CODE T$(WJ,I)
9044 IF W0=WN+IV THEN GOTO ERR
9045 IF W0<>WN-IV THEN GOTO 9048
9046 LET WV=VAL (W$(CODE T$(WJ,II)))
9047 LET G$=" "
9048 GOSUB 9066
9049 LET B$=I$+" "
9050 LET W0=CODE T$(WJ,II)
9051 GOSUB 9066
9052 IF I$="" THEN GOTO 9063
9053 IF WP=211 THEN LET I$="(N)"
9054 LET B$=B$+I$
9055 LET W0=CODE T$(WJ,III)
9056 GOSUB 9066
9057 IF I$="" THEN GOTO 9060
9058 IF WP=219 THEN LET I$="(N)"
9059 LET B$=B$+","+I$
9060 IF WFK AND NOT WFW THEN GOTO ERR
9061 LET V$=STR$ WV
9062 IF NOT LEN G$ AND WV=Z0 THEN LET V$=""
9063 PRINT WIA;TAB VI;B$;TAB XX-I;V$+G$
9064 LET WB=WB+I+WFS*WFN
9065 GOTO 9004
9066 LET I$=W$(W0)
9067 GOSUB DTB
9068 IF W0=WN+FIV THEN GOSUB 9094
9069 IF W0<>WN+VI THEN GOTO 9075
9070 LET WB=WB+WFK+I
9071 LET WFN=Z0
9072 LET WV=PEEK WB
9073 IF WP=211 OR WP=219 THEN GOTO 9078
9074 LET G$=":"+CHR$ WV+":"
9075 IF WV>=F5 THEN GOTO 9078
9076 LET W=F4+I+III*WV
9078 IF W0<WN+VII THEN GOTO 9085
9079 LET WB=WB+II
9080 LET G$=" "
9081 LET WFN=Z0
9082 LET E=WB-I
9083 GOSUB DB
9084 LET WV=E
9085 IF NOT WFK THEN GOTO 9092
9086 IF W0=VII OR W0=61 OR W0=WN THEN LET WFW=I
9087 IF W0<>VII THEN GOTO 9091
9088 LET WFS=I
9089 GOSUB 9095
9090 LET I$=W$(WN+WF, TO III)+I$+")"
9091 IF W0=61 THEN LET I$=W$(WN+WF,II TO III)
9092 IF W0=WN THEN LET I$=W$(WN+WF)
9093 RETURN 
9094 LET WB=WB+I
9095 LET W=WDIS
9096 IF W<F7 THEN GOTO 9098
9097 LET W=W-F8
9098 IF NOT WFK THEN LET W=W+II
9099 IF W>=Z0 THEN LET I$="+"+STR$ W
9100 IF W<Z0 THEN LET I$=STR$ W
9101 IF B$( TO II)="JR" OR B$( TO II)="DJ" THEN LET WV=WIA+W
9102 RETURN 
9103 PRINT "ERROR AT ";WIA;". ",
9104 FOR J=Z0 TO III
9105 PRINT PEEK (WIA+J);" ";
9106 NEXT J
9107 PRINT 
9108 GOTO 9004
9120 REM %W%C%O%D
9121 CLS 
9122 PRINT ,," T$(345,3) TABLE FOR DECODING","MOST Z80 INSTRUCTIONS.",,,"N   VALUES      INTERPRETATION",,,
9123 FOR N=I TO 345
9124 PRINT N;" ";
9125 FOR K=I TO III
9126 PRINT CODE T$(N,K);" ";
9127 NEXT K
9128 PRINT ,
9129 FOR K=I TO III
9130 PRINT W$(CODE T$(N,K));" ";
9131 NEXT K
9132 PRINT 
9133 NEXT N
9134 STOP 
9135 REM %W%S%T%R
9136 CLS 
9137 PRINT ,," W$(120,4) ARRAY FOR MNEMONICS.",,,
9138 FOR N=I TO 120
9139 PRINT TAB VI;"W$(";N;")=","""";W$(N);""""
9140 NEXT N
9141 STOP 
9142 GOTO WCOD
9200 REM %E%D%I%T
9201 CLS 
9202 LET L=9228
9203 LET M=9317
9206 PRINT ,,"% %M%A%C%H%I%N%E% %L%A%N%G%U%A%G%E% %E%D%I%T%O%R% ",,,"WHERE ABOVE 16759?  START ";
9207 INPUT B
9208 PRINT B,"SELECT BY NO."
9209 FOR N=VI TO F4+I
9210 PRINT AT N,F4;"                "
9211 NEXT N
9212 PRINT AT IV,XX;"NOW   ";B
9213 PRINT ,," 1 SINGLE BYTE",," 2 DOUBLE BYTE",," 3 LD HL,(NN)",," 4 LD (NN),HL",," 5 PUSH SEQ",," 6 LD (NN),BC",," 7 LD BC,(NN)",," 8 LD (NN),DE",," 9 LD DE,(NN)",,"10 SBC HL,BC",,"11 ADC HL,BC",,"12 SBC HL,DE",,"13 ADC HL,DE",,"14 JUMPS",,"15 %Q%U%I%T"
9214 INPUT N
9215 IF N<I OR N>F4-II THEN GOTO M
9216 PRINT AT N+FIV,F4;"% "
9217 GOTO L-F4+VI*N
9218 INPUT K
9219 IF K<0 OR K>FF THEN GOTO M
9220 POKE B,K
9221 LET B=B+I
9222 GOTO 9209
9224 INPUT K
9225 IF K<0 OR K>=F8*F8 THEN GOTO M
9226 POKE B+I,INT (K/F8)
9227 POKE B,K-F8*INT (K/F8)
9228 LET B=B+II
9229 GOTO 9209
9236 POKE B,XXX+N
9237 LET B=B+I
9238 GOTO L-IV
9242 POKE B,245
9243 POKE B+I,213
9244 POKE B+II,229
9245 LET B=B+I
9246 GOTO L
9266 POKE B,237  
9267 POKE B+I,XX-I+VIII*N  
9268 LET B=B+II
9269 GOTO L-IV
9290 POKE B,237  
9291 POKE B+I,VIII*N-F4+II  
9292 GOTO L
9296 PRINT AT F4,F4;"JUMP TO?"
9297 INPUT N
9298 IF N<16760 OR N>=F8*F8 THEN GOTO M
9299 LET W=(B-N)>F7+I OR B-N<-F7+II
9300 PRINT AT VI,F4;"WHICH CONDITION?",AT VIII,F4;" 1 DJNZ",AT IX,F4;" 2 NONE",AT TEN,F4;" 3 NZ",AT TEN+I,F4;" 4  Z",AT VI+VI,F4;" 5 NC",AT IX+IV,F4;" 6  C",AT F4-II,F4;" 7 PO",AT F4-I,F4;" 8 PE",AT F4,F4;" 9  P   ",AT F4+I,F4;"10  M"   
9301 INPUT S
9302 IF S<I OR S>TEN THEN GOTO M
9303 IF W OR S>VI THEN GOTO 9309
9304 LET N=N-B-II
9305 IF N>=F7 THEN LET N=F7-N
9306 POKE B,VIII+VIII*S
9307 POKE B+I,N
9308 GOTO L
9309 IF S=I THEN GOTO M
9310 POKE B,170+VIII*S
9311 IF S=II THEN POKE B,195
9312 LET B=B+I
9313 LET P3=INT (N/F8)
9314 POKE B,N-F8*P3
9315 POKE B+I,P3
9316 GOTO L
9317 CLS 
9318 PRINT AT IX,Z0;"%Q%U%I%T OR AN ERROR HAS OCCURRED.  THE LAST LOCATION WAS ";B;".","CONTINUE FOR DISASSEMBLER."
9319 STOP 
9320 GOTO DISA
9449 REM %S%E%A%R%C%H
9450 CLS 
9451 LET Q=Z0
9452 LET E=I
9453 PRINT ,,"OBJECTIVE/TITLE?",
9454 INPUT G$
9455 PRINT AT I,Z0;G$;"                ";AT II,Z0;"PRINT? %YES OR %NO",
9456 LET W=Z0
9457 INPUT H$
9458 IF LEN H$ THEN IF H$(I)="Y" THEN LET W=I
9459 PRINT AT II,Z0;"INPUT YOUR CODE          ",
9460 INPUT L
9461 IF L>FF THEN GOTO 9481
9462 PRINT AT II,Z0;"IF DOUBLE BYTE, ENTER ""D"""
9463 INPUT H$
9464 IF LEN H$ THEN IF H$(I)="D" THEN GOTO 9481
9465 POKE 17015+E,L
9466 LET E=E+I
9467 PRINT AT II,Z0;"ANOTHER ENTRY? %YES OR %NO",
9468 INPUT H$
9469 IF LEN H$ THEN IF H$(I)="Y" THEN GOTO 9459
9470 CLS 
9471 IF NOT W THEN PRINT ,,G$
9472 IF W THEN LPRINT G$
9473 POKE 17125,E-I
9474 LET K=USR 16860
9475 GOTO 9477
9476 LET K=USR 16809
9477 LET Q=Q+I
9478 IF K=55555 THEN GOTO 9486
9479 GOSUB 9490+II*W
9480 GOTO 9476
9481 LET P2=INT (L/F8+II**-IX)
9482 POKE 17016+E,P2
9483 POKE 17015+E,L-F8*P2
9484 LET E=E+II
9485 GOTO 9467
9486 IF NOT W THEN PRINT "$";Q-I
9487 IF W THEN LPRINT "$";Q-I
9488 STOP 
9489 GOTO SEARCH
9490 PRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9491 RETURN 
9492 LPRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9493 RETURN 
9499 STOP 
9500 REM %V%L%S%T
9501 CLS 
9502 PRINT ,,,,"   %V%A%R%I%A%B%L%E%S",,,
9503 LET E=16400
9504 GOSUB DB
9505 LET L=E-I
9506 LET T=Z0
9507 LET T=T+I
9508 LET L=L+I
9509 LET B=L
9510 IF LEN H$>I THEN IF H$( TO II)="H$" THEN GOSUB VLST+XX
9511 LET CH=PEEK L
9512 PRINT TAB III-LEN STR$ T;T;" ";
9512 LET TP=INT (CH/F5)
9514 LET CH=CH-TP*F5+F5
9515 LET H$=CHR$ CH
9516 GOSUB VLST-F5+F5*TP
9517 LET E=TP=II OR TP=VI
9518 IF E THEN PRINT H$;TAB XX+VI;B
9519 IF NOT E THEN PRINT H$;TAB XX+III-LEN STR$ Q;Q;TAB XX+VI;B
9520 GOTO VLST+VI
9521 PRINT ,,"   %E%N%D% %O%F% %L%I%S%T ";L
9522 LET H$="***"
9523 STOP 
9524 GOTO VLST
9532 REM %S%T%R%I%N%G
9533 LET H$=H$+"$ "
9534 LET E=L+I
9535 GOSUB DB
9536 FOR Q=I TO (E AND E<F4)+(F4 AND E>=F4)
9537 LET H$=H$+CHR$ PEEK (L+II+Q)
9538 NEXT Q
9539 LET L=L+II+E
9540 RETURN 
9564 REM %S%I%N%G%L
9565 LET Q=VAL H$
9566 LET L=L+FIV
9567 RETURN 
9596 REM %N%(%)
9597 LET H$=H$+"("
9598 LET I$=H$
9599 LET S=PEEK (L+III)
9600 FOR Q=I TO S
9601 LET E=L+II+II*Q
9602 GOSUB DB
9603 IF Q>=S THEN GOTO VLST+105
9604 LET H$=H$+STR$ E+","
9605 LET I$=I$+"1,"
9606 NEXT Q
9607 LET H$=H$+STR$ E+")"
9608 LET I$=I$+"1)"
9609 LET Q=VAL I$
9610 LET E=L+I
9611 GOSUB DB
9612 LET L=L+II+E
9613 RETURN 
9628 REM %M%U%L%T
9629 LET L=L+I
9630 LET CH=PEEK L
9631 IF INT (CH/F6)=II THEN GOTO VLST+133
9632 LET H$=H$+CHR$ CH
9633 GOTO VLST+F7
9634 LET H$=H$+CHR$ (CH-F7)
9635 LET Q=VAL H$
9636 LET L=L+FIV
9637 RETURN 
9660 REM %$%(%)
9661 LET H$=H$+"$("
9662 LET S=PEEK (L+III)
9663 FOR Q=I TO S
9664 LET E=L+II+II*Q
9665 GOSUB DB
9666 IF Q>=S THEN GOTO VLST+168
9667 LET H$=H$+STR$ E+","
9668 NEXT Q
9669 LET H$=H$+STR$ E+")"
9670 LET E=L+VI
9671 LET U=L+III+II*S
9672 GOSUB DB
9674 FOR Q=U TO U+(E AND E<F4)+(F4 AND E>=F4)
9675 LET H$=H$+CHR$ PEEK Q
9676 NEXT Q
9677 GOTO VLST+109
9692 REM %F%-%N
9693 LET Q=VAL H$
9694 LET H$=H$+" FOR-NEXT"
9695 LET L=L+XX-III
9696 RETURN 
9697 REM %D%T%B
9698 FOR J=LEN I$ TO I STEP -I
9699 IF I$(J)=" " THEN NEXT J
9700 LET I$=I$( TO J)
9701 RETURN 
9702 REM %D%B
9703 LET E=F8*PEEK (E+I)+PEEK E
9704 RETURN 
9705 REM %S%R%C%H
9706 CLS 
9707 PRINT AT IX,I;"WRITE YOUR STRING WITHOUT LINE NUMBER.  ADD A QUOTE AND PRECEDESTRING WITH",,,," LET H$=""",,,," THEN ENTER AND CONTINUE."
9708 LET E=17116
9709 STOP 
9710 POKE E+IX,LEN H$
9711 POKE E-I,247
9712 POKE E,66
9713 LET K=PEEK 16396+F8*PEEK 16397-17143
9714 LET S=INT (K/F8)
9715 LET K=K-F8*S
9716 POKE E+III,K
9717 POKE E+IV,S
9718 FOR E=I TO LEN H$
9719 POKE (E+17015),CODE H$(E)
9720 NEXT E
9721 CLS 
9722 PRINT ,,"""";H$;"""";TAB Z0;,,
9723 LET K=USR 16809
9724 IF K=55555 THEN GOTO 9740
9727 LET Q=K
9728 LET Q=Q-I
9729 IF PEEK Q<>118 THEN GOTO 9728
9730 IF K-Q<IV THEN GOTO 9723
9732 LET E=F8*PEEK (Q+I)+PEEK (Q+II)
9733 LET K=F8*PEEK (Q+IV)+PEEK (Q+III)
9734 LET I$=""
9735 FOR Q=Q+FIV TO Q+III+K
9736 LET I$=I$+CHR$ PEEK Q
9737 NEXT Q
9738 PRINT E;TAB FIV;I$
9739 GOTO 9723
9740 PRINT ,,"  % %S%E%A%R%C%H% %C%O%M%P%L%E%T%E% "
9741 STOP 
9742 GOTO 9706
9750 REM %S%P%Y
9751 PRINT AT XX+I,Z0;"LOOK AT NO./%QUIT/%HIGHER/%L0WER"
9752 INPUT H$
9753 IF H$<>"Q" THEN GOTO 9755
9754 STOP 
9755 IF H$<>"H" THEN GOTO 9758
9756 LET B=B+F4
9757 GOTO 9762
9758 IF H$<>"L" THEN GOTO 9761
9759 LET B=B-F4
9760 GOTO 9762
9761 LET B=VAL H$
9762 CLS 
9763 FOR E=B TO B+XX+I
9764 PRINT E;TAB VI;PEEK E;TAB TEN;":";CHR$ PEEK E;":";TAB XX;F8*PEEK (E+I)+PEEK E
9765 NEXT E
9766 GOTO 9752
9800 REM %P%U%R%G
9801 LET N(1)=USR 16900
9802 REM %I%N%I%T%I%A%L%I%Z%A%T%I%O%N%S
9810 LET I=1
9811 LET Z0=I-I
9812 LET II=I+I
9813 LET III=II+I
9814 LET IV=II+II
9815 LET FIV=IV+I
9816 LET VI=IV+II
9817 LET VII=VI+I
9818 LET VIII=IV+IV
9819 LET IX=VIII+I
9820 LET TEN=IX+I
9821 LET XX=II*TEN
9822 LET XXX=30
9823 LET F4=II*VIII
9824 LET F5=II*F4
9825 LET F6=II*F5
9826 LET F7=II*F6
9827 LET F8=256
9828 LET FF=F8-I
9829 LET IK=I/F8/F8
9840 REM %K%E%Y%S
9841 LET VLST=9501
9842 LET DB=9703
9843 LET PURG=9801
9844 LET MEM=9916
9845 LET ZZ=9953
9846 LET ZZZ=ZZ-I
9847 LET ZZZZ=ZZ-II
9848 LET SAVE=9900
9849 LET SYSV=9928
9850 LET MAP=8101
9851 LET SEARCH=9450
9852 LET SRCH=9706
9853 LET HELP=9961
9854 LET SPY=9751
9855 LET DISA=9000
9856 LET ERR=9103
9857 LET DTB=9698
9858 LET WCOD=9121
9859 LET WSTR=9136
9860 LET NTRY=HELP
9861 LET EDIT=9201
9892 CLS 
9893 PRINT ,,,,"* TO DELETE STRINGS AND ARRAYS, REDIMENSION THEM TO ZERO."
9894 PRINT ,,"   DIM (NAME)$(0)  OR"
9895 PRINT ,,"   DIM (NAME)(0)"
9896 PRINT ,,"   THIS WILL PULL ERROR 3/0 BUT"," THE JOB IS DONE."
9897 STOP 
9898 GOTO VLST
9899 REM %S%A%V%E
9900 CLS 
9901 PRINT ,,,,"""";Z$;""" IS TO BE SAVED.",,,"START RECORDER.  PRESS ANY KEY.",,,Q$,,
9902 PRINT "MODE IS ";"LOOPING" AND NOT (NTRY-SAVE);"HELP" AND NOT (NTRY-HELP);"LOAD-AND-GO" AND NOT (NTRY-1000)
9903 SLOW 
9904 IF NTRY<>SAVE THEN PAUSE 40000
9905 FOR N=F6 TO I STEP -I
9906 UNPLOT N-I,XXX
9907 NEXT N
9908 SAVE Z$
9909 FAST 
9910 CLS 
9911 PRINT Y$;X$
9912 PRINT AT IX+VI,VII;"PRESENTS***"
9913 GOSUB ZZZ
9914 GOTO NTRY
9915 REM %M%E%M
9916 LET L=F8*(PEEK 16387-PEEK 16413)+PEEK 16386-PEEK 16412
9917 LET E=INT (L/F5/F5)
9918 PRINT AT IX,Z0;"MEMORY LEFT IS:";E;" K, ";L-F5*F5*E;" BYTES.",,,"(";L;" BYTES)"
9919 IF L<F8+XX THEN PRINT ,,"CAUTION: LIST EDITING MAY BE IMPAIRED."
9920 STOP 
9921 GOTO MAP
9927 REM %S%Y%S%V
9928 LET E=II*CODE D$-75
9929 IF E<I OR E>13 THEN GOTO 9933
9930 LET E$="10141824260002"
9931 LET E=VAL E$(E TO E+I)+16386
9932 LET D$=STR$ (F8*PEEK (E+I)+PEEK E)
9933 RETURN 
9950 REM %S%L%E%E%P
9951 LET ZZ=ZZ+F8
9952 LET ZZ=ZZ+F7
9953 LET ZZ=ZZ+F6
9954 LET ZZ=ZZ+F5
9955 LET E=ZZ-ZZZ+F5
9956 LET ZZ=ZZZ+I
9957 PAUSE E
9958 POKE 16437,FF
9959 RETURN 
9960 REM %H%E%L%P
9961 CLS 
9962 LET PAGE=I
9963 LET H$="% %H%E%L%P%  PAGE "
9964 PRINT AT I,IX;H$;PAGE
9965 PRINT ,,"* USE GOTO FOR DESIRED LOCATION,",,"* LET Z$=""(YOUR PROGRAM NAME)""",,,"* LET NTRY=1000 IF YOU WANT YOUR PROGRAM TO RUN AFTER LOADING." 
9966 PRINT ,,"* Z$=""";Z$;""""
9967 LET I$="% %K%E%Y%W%O%R%D% %L%I%N%E% %F%U%N%C%T%I%O%N% "
9968 PRINT ,,I$,"""HELP""   9960 HERE.","""VLST""   9500 VARIABLE LIST.","""MEM""    9915 AVAILABLE MEMORY. ""SAVE""   9900 SAVE PROGRAM,"
9969 PRINT """NTRY""   HELP UNLESS CHANGED."
9970 PRINT """PURG""   9800 DELETE VARIABLES."
9971 PRINT """MAP""    8100 MEMORY MAP."
9972 PRINT """SPY""    9750 LOOK AT MEMORY."
9973 PRINT """DISA""   9000 DISASSEMBLE."
9974 LET PAGE=II
9975 PRINT 
9976 CLS 
9977 PRINT AT I,IX;H$;PAGE,,,I$
9978 PRINT """WCOD""   9120 DECODE TABLE."
9979 PRINT """WSTD""   9135 MNEMONICS."
9980 PRINT """SRCH""   9705 BASIC CODE."
9981 PRINT """SEARCH"" 9450 ROM SPACE."
9982 PRINT """EDIT""   9200 MACH CODE."
9983 PRINT "*""GOTO VLST"" CODES AS:","  :236:V:L:S:T: (5 BYTES)" 
9984 PRINT "*""GOTO 9500"" CODES AS:","  :235:9:5:0:0:126:EXP:B4:B3:B2:B1:B0: (12 BYTES)"
9985 PRINT "* USING VARIABLES IN PLACE OF   NUMBERS CAN SAVE MEMORY."
9986 PRINT "* USE:Z0,I,II,III,IV,FIV,VI,VII,VIII,IX,TEN,XX,XXX IN PLACE OF:0,1,2,3,4,5,6,7,8,9,10,20,30."
9987 PRINT "* LIST 9802 TO SEE."
9988 STOP 
9989 GOTO HELP
9997 REM %M%/%L% %C%0%D%E% %T%E%M%P%L%A%T%E%S
9998 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.......   /\.'
9999 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.........1.......   /\.'
Scroll to Top

Super Utility

Products: Super Utility
Developer(s): William J. Pedersen
Date: 1983
Type: Cassette
Platform(s): TS 1000

Utility for working with machine language programs and memory.

Content

Appears On

Related Products

Utility for working with machine language programs and memory.

Related Articles

Related Content

Image Gallery

Super Utility

Source Code

   1 REM %U%T%I%L%I%T%Y
   2 REM *************
   3 REM COPYRIGHT NOV 14, 1983 BY WILLIAM J. PEDERSEN. 1120 MERRIFIELD S.E., GRAND RAPIDS, MICHIGAN  49507
   4 REM REPRODUCTION OR USE OF THIS PROGRAM IS PROHIBITED WITHOUT EXPRESS WRITTEN PERMISSION.
   5 REM *************
   7 REM \7E\E6\E0\FE\C0\28\0E\F2\99\41\FE\80\28\07\F2\A2\41\FE\60\28\10\23\22\93\41\ED\5B\93\7B\19\23\23\C9\11\0C\00\19\11\06\00\19\C9\23\CB\7E\28\FB\18\F4\F5\D5\E5\2A\DB\42\ED\4B\DF\42\ED\5B\E7\42\1A\ED\B1\20\1B\22\DB\42\ED\43\DF\42\2B\ED\4B\E5\42\1A\ED\A1\20\DF\13\EA\C8\41\ED\4B\DB\42\18\21\01\03\D9\18\1C\F5\D5\E5\21\00\00\22\DB\42\21\FF\1F\22\DF\42\18\BF\00\00\D9\18\06
   8 REM \E1\D1\FD\2A\00\40\3E\1E\ED\47\F1\C9\F5\D5\E5\2A\10\40\22\DB\42\3E\80\BE\28\E6\CB\6E\F5\CD\78\41\22\DD\42\F1\20\08\2A\DD\42\22\DB\42\18\E7\CD\2E\42\2A\DB\42\18\DF\2A\DB\42\E5\ED\5B\DD\42\D5\AF\ED\52\EB\2A\1C\40\19\22\1C\40\2A\1A\40\19\22\1A\40\2A\14\40\E5\19\22\14\40\E1\D1\AF\ED\52\E5\C1\03\2A\DB\42\EB\ED\B0\E1\C9\1B\1B\1B\1B\1D\1B\1B\1B\1B\1B\1B\00\00\00\00\18\06
   9 REM \DC\07\F2\03\D9\FA\9C\AD\EA\78\42\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\57\1B\95\7B\A8\04\1B\1B\1B\1B\02\00\78\42\1B\1B\1B\1B\1B\1B\1E\1B\1B
8100 REM %M%A%P
8101 CLS 
8102 PRINT ,,"    % %M%E%M%O%R%Y% %M%A%P%  ";Z$
8103 LET G$="\##\##%P\:.\'.\':%V\:'\..\':%U%U\.'\.'1638420479204802457524576286712867232767ABCEFG0 PROGRAM =VARIABLES=AVAIL MEM=RAMTOP UP="
8104 LET H$="16509"
8105 LET Q=1
8106 LET S=37
8107 LET I$=CHR$ S
8108 FOR K=IV TO XX-I STEP FIV
8109 LET T=II*K+VII
8110 LET L=53.4+II*K/FIV
8111 LET D$=H$
8112 GOSUB SYSV
8113 LET TT=VAL D$
8114 LET D$=G$(L)
8115 GOSUB SYSV
8116 LET QQ=VAL D$
8117 IF QQ=Z0 THEN LET QQ=32768
8118 LET LL=54+II*K
8119 PRINT AT K-I,Z0;G$(LL TO LL+IX);QQ-TT;" BYTES."
8120 LET H$=G$(L+I)
8121 FOR N=Z0 TO 31
8122 PRINT AT K,N;G$(Q);
8123 LET B=13107.2+F7*N+819.2*K
8124 LET D$=I$
8125 GOSUB SYSV
8126 LET BB=VAL D$
8127 IF BB-B<F6 THEN PRINT AT K,N;G$(Q+I);
8128 IF BB>B+F7 THEN GOTO 8137
8129 LET Q=Q+II
8130 LET S=S+I
8131 LET D$=CHR$ S
8132 GOSUB SYSV
8133 LET I$=D$
8134 IF LEN I$<II THEN LET I$="65536"
8135 IF VAL I$>B+F7 THEN GOTO 8137
8136 GOTO 8130
8137 NEXT N
8138 PRINT G$(T TO T+IV);TAB 27;G$(T+FIV TO T+IX)
8139 NEXT K
8140 STOP 
8141 GOTO HELP
8999 REM % %D%I%S%A%S%S%E%M%B%L%E%R% 
9000 PRINT AT XX,Z0;"DISASSEMBLE STARTING WHERE?"
9001 INPUT WB
9002 CLS 
9003 LET WL=Z0
9004 LET WIA=WB
9005 LET WFS=Z0
9006 LET WFN=I
9007 LET WFK=Z0
9008 LET WF=Z0
9009 LET WFW=Z0
9010 LET WV=Z0
9011 LET G$=""
9012 LET WN=112
9013 LET WL=WL+I
9014 LET WP=PEEK WB
9015 IF WP<>221 AND WP<>253 THEN GOTO 9021
9016 IF WFK THEN GOTO ERR
9017 LET WF=I+(I AND WP=253)
9018 LET WFK=I
9019 LET WB=WB+I
9020 GOTO 9014
9021 IF WP<>203 THEN GOTO 9034
9022 LET WFN=Z0
9023 LET WJ=345
9024 LET WB=WB+I+WFK
9025 LET WP=PEEK WB
9026 LET W1=INT (WP/F6)
9027 LET W=WP-F6*W1
9028 LET W2=INT (W/VIII)
9029 LET W=W-VIII*W2
9030 IF WFK AND W<>VI THEN GOTO ERR
9031 IF W1 THEN LET T$(WJ)=CHR$ (97+W1)+CHR$ (F4+I+W2)+CHR$ (W+I)
9032 IF NOT W1 THEN LET T$(WJ)=CHR$ (49+W2)+CHR$ (W+I)+CHR$ 97
9033 GOTO 9042
9034 LET WJ=I+PEEK WB
9035 LET WW=Z0
9036 IF WP<>237 THEN GOTO 9040
9037 LET WB=WB+I
9038 LET WW=PEEK WB
9039 LET WJ=193+WW-(36 AND WW>159)
9040 IF WW>123 AND WW<160 OR WJ>344 THEN GOTO ERR
9041 LET WDIS=PEEK (WB+I)
9042 LET V$=""
9043 LET W0=CODE T$(WJ,I)
9044 IF W0=WN+IV THEN GOTO ERR
9045 IF W0<>WN-IV THEN GOTO 9048
9046 LET WV=VAL (W$(CODE T$(WJ,II)))
9047 LET G$=" "
9048 GOSUB 9066
9049 LET B$=I$+" "
9050 LET W0=CODE T$(WJ,II)
9051 GOSUB 9066
9052 IF I$="" THEN GOTO 9063
9053 IF WP=211 THEN LET I$="(N)"
9054 LET B$=B$+I$
9055 LET W0=CODE T$(WJ,III)
9056 GOSUB 9066
9057 IF I$="" THEN GOTO 9060
9058 IF WP=219 THEN LET I$="(N)"
9059 LET B$=B$+","+I$
9060 IF WFK AND NOT WFW THEN GOTO ERR
9061 LET V$=STR$ WV
9062 IF NOT LEN G$ AND WV=Z0 THEN LET V$=""
9063 PRINT WIA;TAB VI;B$;TAB XX-I;V$+G$
9064 LET WB=WB+I+WFS*WFN
9065 GOTO 9004
9066 LET I$=W$(W0)
9067 GOSUB DTB
9068 IF W0=WN+FIV THEN GOSUB 9094
9069 IF W0<>WN+VI THEN GOTO 9075
9070 LET WB=WB+WFK+I
9071 LET WFN=Z0
9072 LET WV=PEEK WB
9073 IF WP=211 OR WP=219 THEN GOTO 9078
9074 LET G$=":"+CHR$ WV+":"
9075 IF WV>=F5 THEN GOTO 9078
9076 LET W=F4+I+III*WV
9078 IF W0<WN+VII THEN GOTO 9085
9079 LET WB=WB+II
9080 LET G$=" "
9081 LET WFN=Z0
9082 LET E=WB-I
9083 GOSUB DB
9084 LET WV=E
9085 IF NOT WFK THEN GOTO 9092
9086 IF W0=VII OR W0=61 OR W0=WN THEN LET WFW=I
9087 IF W0<>VII THEN GOTO 9091
9088 LET WFS=I
9089 GOSUB 9095
9090 LET I$=W$(WN+WF, TO III)+I$+")"
9091 IF W0=61 THEN LET I$=W$(WN+WF,II TO III)
9092 IF W0=WN THEN LET I$=W$(WN+WF)
9093 RETURN 
9094 LET WB=WB+I
9095 LET W=WDIS
9096 IF W<F7 THEN GOTO 9098
9097 LET W=W-F8
9098 IF NOT WFK THEN LET W=W+II
9099 IF W>=Z0 THEN LET I$="+"+STR$ W
9100 IF W<Z0 THEN LET I$=STR$ W
9101 IF B$( TO II)="JR" OR B$( TO II)="DJ" THEN LET WV=WIA+W
9102 RETURN 
9103 PRINT "ERROR AT ";WIA;". ",
9104 FOR J=Z0 TO III
9105 PRINT PEEK (WIA+J);" ";
9106 NEXT J
9107 PRINT 
9108 GOTO 9004
9120 REM %W%C%O%D
9121 CLS 
9122 PRINT ,," T$(345,3) TABLE FOR DECODING","MOST Z80 INSTRUCTIONS.",,,"N   VALUES      INTERPRETATION",,,
9123 FOR N=I TO 345
9124 PRINT N;" ";
9125 FOR K=I TO III
9126 PRINT CODE T$(N,K);" ";
9127 NEXT K
9128 PRINT ,
9129 FOR K=I TO III
9130 PRINT W$(CODE T$(N,K));" ";
9131 NEXT K
9132 PRINT 
9133 NEXT N
9134 STOP 
9135 REM %W%S%T%R
9136 CLS 
9137 PRINT ,," W$(120,4) ARRAY FOR MNEMONICS.",,,
9138 FOR N=I TO 120
9139 PRINT TAB VI;"W$(";N;")=","""";W$(N);""""
9140 NEXT N
9141 STOP 
9142 GOTO WCOD
9200 REM %E%D%I%T
9201 CLS 
9202 LET L=9228
9203 LET M=9317
9206 PRINT ,,"% %M%A%C%H%I%N%E% %L%A%N%G%U%A%G%E% %E%D%I%T%O%R% ",,,"WHERE ABOVE 16759?  START ";
9207 INPUT B
9208 PRINT B,"SELECT BY NO."
9209 FOR N=VI TO F4+I
9210 PRINT AT N,F4;"                "
9211 NEXT N
9212 PRINT AT IV,XX;"NOW   ";B
9213 PRINT ,," 1 SINGLE BYTE",," 2 DOUBLE BYTE",," 3 LD HL,(NN)",," 4 LD (NN),HL",," 5 PUSH SEQ",," 6 LD (NN),BC",," 7 LD BC,(NN)",," 8 LD (NN),DE",," 9 LD DE,(NN)",,"10 SBC HL,BC",,"11 ADC HL,BC",,"12 SBC HL,DE",,"13 ADC HL,DE",,"14 JUMPS",,"15 %Q%U%I%T"
9214 INPUT N
9215 IF N<I OR N>F4-II THEN GOTO M
9216 PRINT AT N+FIV,F4;"% "
9217 GOTO L-F4+VI*N
9218 INPUT K
9219 IF K<0 OR K>FF THEN GOTO M
9220 POKE B,K
9221 LET B=B+I
9222 GOTO 9209
9224 INPUT K
9225 IF K<0 OR K>=F8*F8 THEN GOTO M
9226 POKE B+I,INT (K/F8)
9227 POKE B,K-F8*INT (K/F8)
9228 LET B=B+II
9229 GOTO 9209
9236 POKE B,XXX+N
9237 LET B=B+I
9238 GOTO L-IV
9242 POKE B,245
9243 POKE B+I,213
9244 POKE B+II,229
9245 LET B=B+I
9246 GOTO L
9266 POKE B,237  
9267 POKE B+I,XX-I+VIII*N  
9268 LET B=B+II
9269 GOTO L-IV
9290 POKE B,237  
9291 POKE B+I,VIII*N-F4+II  
9292 GOTO L
9296 PRINT AT F4,F4;"JUMP TO?"
9297 INPUT N
9298 IF N<16760 OR N>=F8*F8 THEN GOTO M
9299 LET W=(B-N)>F7+I OR B-N<-F7+II
9300 PRINT AT VI,F4;"WHICH CONDITION?",AT VIII,F4;" 1 DJNZ",AT IX,F4;" 2 NONE",AT TEN,F4;" 3 NZ",AT TEN+I,F4;" 4  Z",AT VI+VI,F4;" 5 NC",AT IX+IV,F4;" 6  C",AT F4-II,F4;" 7 PO",AT F4-I,F4;" 8 PE",AT F4,F4;" 9  P   ",AT F4+I,F4;"10  M"   
9301 INPUT S
9302 IF S<I OR S>TEN THEN GOTO M
9303 IF W OR S>VI THEN GOTO 9309
9304 LET N=N-B-II
9305 IF N>=F7 THEN LET N=F7-N
9306 POKE B,VIII+VIII*S
9307 POKE B+I,N
9308 GOTO L
9309 IF S=I THEN GOTO M
9310 POKE B,170+VIII*S
9311 IF S=II THEN POKE B,195
9312 LET B=B+I
9313 LET P3=INT (N/F8)
9314 POKE B,N-F8*P3
9315 POKE B+I,P3
9316 GOTO L
9317 CLS 
9318 PRINT AT IX,Z0;"%Q%U%I%T OR AN ERROR HAS OCCURRED.  THE LAST LOCATION WAS ";B;".","CONTINUE FOR DISASSEMBLER."
9319 STOP 
9320 GOTO DISA
9449 REM %S%E%A%R%C%H
9450 CLS 
9451 LET Q=Z0
9452 LET E=I
9453 PRINT ,,"OBJECTIVE/TITLE?",
9454 INPUT G$
9455 PRINT AT I,Z0;G$;"                ";AT II,Z0;"PRINT? %YES OR %NO",
9456 LET W=Z0
9457 INPUT H$
9458 IF LEN H$ THEN IF H$(I)="Y" THEN LET W=I
9459 PRINT AT II,Z0;"INPUT YOUR CODE          ",
9460 INPUT L
9461 IF L>FF THEN GOTO 9481
9462 PRINT AT II,Z0;"IF DOUBLE BYTE, ENTER ""D"""
9463 INPUT H$
9464 IF LEN H$ THEN IF H$(I)="D" THEN GOTO 9481
9465 POKE 17015+E,L
9466 LET E=E+I
9467 PRINT AT II,Z0;"ANOTHER ENTRY? %YES OR %NO",
9468 INPUT H$
9469 IF LEN H$ THEN IF H$(I)="Y" THEN GOTO 9459
9470 CLS 
9471 IF NOT W THEN PRINT ,,G$
9472 IF W THEN LPRINT G$
9473 POKE 17125,E-I
9474 LET K=USR 16860
9475 GOTO 9477
9476 LET K=USR 16809
9477 LET Q=Q+I
9478 IF K=55555 THEN GOTO 9486
9479 GOSUB 9490+II*W
9480 GOTO 9476
9481 LET P2=INT (L/F8+II**-IX)
9482 POKE 17016+E,P2
9483 POKE 17015+E,L-F8*P2
9484 LET E=E+II
9485 GOTO 9467
9486 IF NOT W THEN PRINT "$";Q-I
9487 IF W THEN LPRINT "$";Q-I
9488 STOP 
9489 GOTO SEARCH
9490 PRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9491 RETURN 
9492 LPRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9493 RETURN 
9499 STOP 
9500 REM %V%L%S%T
9501 CLS 
9502 PRINT ,,,,"   %V%A%R%I%A%B%L%E%S",,,
9503 LET E=16400
9504 GOSUB DB
9505 LET L=E-I
9506 LET T=Z0
9507 LET T=T+I
9508 LET L=L+I
9509 LET B=L
9510 IF LEN H$>I THEN IF H$( TO II)="H$" THEN GOSUB VLST+XX
9511 LET CH=PEEK L
9512 PRINT TAB III-LEN STR$ T;T;" ";
9512 LET TP=INT (CH/F5)
9514 LET CH=CH-TP*F5+F5
9515 LET H$=CHR$ CH
9516 GOSUB VLST-F5+F5*TP
9517 LET E=TP=II OR TP=VI
9518 IF E THEN PRINT H$;TAB XX+VI;B
9519 IF NOT E THEN PRINT H$;TAB XX+III-LEN STR$ Q;Q;TAB XX+VI;B
9520 GOTO VLST+VI
9521 PRINT ,,"   %E%N%D% %O%F% %L%I%S%T ";L
9522 LET H$="***"
9523 STOP 
9524 GOTO VLST
9532 REM %S%T%R%I%N%G
9533 LET H$=H$+"$ "
9534 LET E=L+I
9535 GOSUB DB
9536 FOR Q=I TO (E AND E<F4)+(F4 AND E>=F4)
9537 LET H$=H$+CHR$ PEEK (L+II+Q)
9538 NEXT Q
9539 LET L=L+II+E
9540 RETURN 
9564 REM %S%I%N%G%L
9565 LET Q=VAL H$
9566 LET L=L+FIV
9567 RETURN 
9596 REM %N%(%)
9597 LET H$=H$+"("
9598 LET I$=H$
9599 LET S=PEEK (L+III)
9600 FOR Q=I TO S
9601 LET E=L+II+II*Q
9602 GOSUB DB
9603 IF Q>=S THEN GOTO VLST+105
9604 LET H$=H$+STR$ E+","
9605 LET I$=I$+"1,"
9606 NEXT Q
9607 LET H$=H$+STR$ E+")"
9608 LET I$=I$+"1)"
9609 LET Q=VAL I$
9610 LET E=L+I
9611 GOSUB DB
9612 LET L=L+II+E
9613 RETURN 
9628 REM %M%U%L%T
9629 LET L=L+I
9630 LET CH=PEEK L
9631 IF INT (CH/F6)=II THEN GOTO VLST+133
9632 LET H$=H$+CHR$ CH
9633 GOTO VLST+F7
9634 LET H$=H$+CHR$ (CH-F7)
9635 LET Q=VAL H$
9636 LET L=L+FIV
9637 RETURN 
9660 REM %$%(%)
9661 LET H$=H$+"$("
9662 LET S=PEEK (L+III)
9663 FOR Q=I TO S
9664 LET E=L+II+II*Q
9665 GOSUB DB
9666 IF Q>=S THEN GOTO VLST+168
9667 LET H$=H$+STR$ E+","
9668 NEXT Q
9669 LET H$=H$+STR$ E+")"
9670 LET E=L+VI
9671 LET U=L+III+II*S
9672 GOSUB DB
9674 FOR Q=U TO U+(E AND E<F4)+(F4 AND E>=F4)
9675 LET H$=H$+CHR$ PEEK Q
9676 NEXT Q
9677 GOTO VLST+109
9692 REM %F%-%N
9693 LET Q=VAL H$
9694 LET H$=H$+" FOR-NEXT"
9695 LET L=L+XX-III
9696 RETURN 
9697 REM %D%T%B
9698 FOR J=LEN I$ TO I STEP -I
9699 IF I$(J)=" " THEN NEXT J
9700 LET I$=I$( TO J)
9701 RETURN 
9702 REM %D%B
9703 LET E=F8*PEEK (E+I)+PEEK E
9704 RETURN 
9705 REM %S%R%C%H
9706 CLS 
9707 PRINT AT IX,I;"WRITE YOUR STRING WITHOUT LINE NUMBER.  ADD A QUOTE AND PRECEDESTRING WITH",,,," LET H$=""",,,," THEN ENTER AND CONTINUE."
9708 LET E=17116
9709 STOP 
9710 POKE E+IX,LEN H$
9711 POKE E-I,247
9712 POKE E,66
9713 LET K=PEEK 16396+F8*PEEK 16397-17143
9714 LET S=INT (K/F8)
9715 LET K=K-F8*S
9716 POKE E+III,K
9717 POKE E+IV,S
9718 FOR E=I TO LEN H$
9719 POKE (E+17015),CODE H$(E)
9720 NEXT E
9721 CLS 
9722 PRINT ,,"""";H$;"""";TAB Z0;,,
9723 LET K=USR 16809
9724 IF K=55555 THEN GOTO 9740
9727 LET Q=K
9728 LET Q=Q-I
9729 IF PEEK Q<>118 THEN GOTO 9728
9730 IF K-Q<IV THEN GOTO 9723
9732 LET E=F8*PEEK (Q+I)+PEEK (Q+II)
9733 LET K=F8*PEEK (Q+IV)+PEEK (Q+III)
9734 LET I$=""
9735 FOR Q=Q+FIV TO Q+III+K
9736 LET I$=I$+CHR$ PEEK Q
9737 NEXT Q
9738 PRINT E;TAB FIV;I$
9739 GOTO 9723
9740 PRINT ,,"  % %S%E%A%R%C%H% %C%O%M%P%L%E%T%E% "
9741 STOP 
9742 GOTO 9706
9750 REM %S%P%Y
9751 PRINT AT XX+I,Z0;"LOOK AT NO./%QUIT/%HIGHER/%L0WER"
9752 INPUT H$
9753 IF H$<>"Q" THEN GOTO 9755
9754 STOP 
9755 IF H$<>"H" THEN GOTO 9758
9756 LET B=B+F4
9757 GOTO 9762
9758 IF H$<>"L" THEN GOTO 9761
9759 LET B=B-F4
9760 GOTO 9762
9761 LET B=VAL H$
9762 CLS 
9763 FOR E=B TO B+XX+I
9764 PRINT E;TAB VI;PEEK E;TAB TEN;":";CHR$ PEEK E;":";TAB XX;F8*PEEK (E+I)+PEEK E
9765 NEXT E
9766 GOTO 9752
9800 REM %P%U%R%G
9801 LET N(1)=USR 16900
9802 REM %I%N%I%T%I%A%L%I%Z%A%T%I%O%N%S
9810 LET I=1
9811 LET Z0=I-I
9812 LET II=I+I
9813 LET III=II+I
9814 LET IV=II+II
9815 LET FIV=IV+I
9816 LET VI=IV+II
9817 LET VII=VI+I
9818 LET VIII=IV+IV
9819 LET IX=VIII+I
9820 LET TEN=IX+I
9821 LET XX=II*TEN
9822 LET XXX=30
9823 LET F4=II*VIII
9824 LET F5=II*F4
9825 LET F6=II*F5
9826 LET F7=II*F6
9827 LET F8=256
9828 LET FF=F8-I
9829 LET IK=I/F8/F8
9840 REM %K%E%Y%S
9841 LET VLST=9501
9842 LET DB=9703
9843 LET PURG=9801
9844 LET MEM=9916
9845 LET ZZ=9953
9846 LET ZZZ=ZZ-I
9847 LET ZZZZ=ZZ-II
9848 LET SAVE=9900
9849 LET SYSV=9928
9850 LET MAP=8101
9851 LET SEARCH=9450
9852 LET SRCH=9706
9853 LET HELP=9961
9854 LET SPY=9751
9855 LET DISA=9000
9856 LET ERR=9103
9857 LET DTB=9698
9858 LET WCOD=9121
9859 LET WSTR=9136
9860 LET NTRY=HELP
9861 LET EDIT=9201
9892 CLS 
9893 PRINT ,,,,"* TO DELETE STRINGS AND ARRAYS, REDIMENSION THEM TO ZERO."
9894 PRINT ,,"   DIM (NAME)$(0)  OR"
9895 PRINT ,,"   DIM (NAME)(0)"
9896 PRINT ,,"   THIS WILL PULL ERROR 3/0 BUT"," THE JOB IS DONE."
9897 STOP 
9898 GOTO VLST
9899 REM %S%A%V%E
9900 CLS 
9901 PRINT ,,,,"""";Z$;""" IS TO BE SAVED.",,,"START RECORDER.  PRESS ANY KEY.",,,Q$,,
9902 PRINT "MODE IS ";"LOOPING" AND NOT (NTRY-SAVE);"HELP" AND NOT (NTRY-HELP);"LOAD-AND-GO" AND NOT (NTRY-1000)
9903 SLOW 
9904 IF NTRY<>SAVE THEN PAUSE 40000
9905 FOR N=F6 TO I STEP -I
9906 UNPLOT N-I,XXX
9907 NEXT N
9908 SAVE Z$
9909 FAST 
9910 CLS 
9911 PRINT Y$;X$
9912 PRINT AT IX+VI,VII;"PRESENTS***"
9913 GOSUB ZZZ
9914 GOTO NTRY
9915 REM %M%E%M
9916 LET L=F8*(PEEK 16387-PEEK 16413)+PEEK 16386-PEEK 16412
9917 LET E=INT (L/F5/F5)
9918 PRINT AT IX,Z0;"MEMORY LEFT IS:";E;" K, ";L-F5*F5*E;" BYTES.",,,"(";L;" BYTES)"
9919 IF L<F8+XX THEN PRINT ,,"CAUTION: LIST EDITING MAY BE IMPAIRED."
9920 STOP 
9921 GOTO MAP
9927 REM %S%Y%S%V
9928 LET E=II*CODE D$-75
9929 IF E<I OR E>13 THEN GOTO 9933
9930 LET E$="10141824260002"
9931 LET E=VAL E$(E TO E+I)+16386
9932 LET D$=STR$ (F8*PEEK (E+I)+PEEK E)
9933 RETURN 
9950 REM %S%L%E%E%P
9951 LET ZZ=ZZ+F8
9952 LET ZZ=ZZ+F7
9953 LET ZZ=ZZ+F6
9954 LET ZZ=ZZ+F5
9955 LET E=ZZ-ZZZ+F5
9956 LET ZZ=ZZZ+I
9957 PAUSE E
9958 POKE 16437,FF
9959 RETURN 
9960 REM %H%E%L%P
9961 CLS 
9962 LET PAGE=I
9963 LET H$="% %H%E%L%P%  PAGE "
9964 PRINT AT I,IX;H$;PAGE
9965 PRINT ,,"* USE GOTO FOR DESIRED LOCATION,",,"* LET Z$=""(YOUR PROGRAM NAME)""",,,"* LET NTRY=1000 IF YOU WANT YOUR PROGRAM TO RUN AFTER LOADING." 
9966 PRINT ,,"* Z$=""";Z$;""""
9967 LET I$="% %K%E%Y%W%O%R%D% %L%I%N%E% %F%U%N%C%T%I%O%N% "
9968 PRINT ,,I$,"""HELP""   9960 HERE.","""VLST""   9500 VARIABLE LIST.","""MEM""    9915 AVAILABLE MEMORY. ""SAVE""   9900 SAVE PROGRAM,"
9969 PRINT """NTRY""   HELP UNLESS CHANGED."
9970 PRINT """PURG""   9800 DELETE VARIABLES."
9971 PRINT """MAP""    8100 MEMORY MAP."
9972 PRINT """SPY""    9750 LOOK AT MEMORY."
9973 PRINT """DISA""   9000 DISASSEMBLE."
9974 LET PAGE=II
9975 PRINT 
9976 CLS 
9977 PRINT AT I,IX;H$;PAGE,,,I$
9978 PRINT """WCOD""   9120 DECODE TABLE."
9979 PRINT """WSTD""   9135 MNEMONICS."
9980 PRINT """SRCH""   9705 BASIC CODE."
9981 PRINT """SEARCH"" 9450 ROM SPACE."
9982 PRINT """EDIT""   9200 MACH CODE."
9983 PRINT "*""GOTO VLST"" CODES AS:","  :236:V:L:S:T: (5 BYTES)" 
9984 PRINT "*""GOTO 9500"" CODES AS:","  :235:9:5:0:0:126:EXP:B4:B3:B2:B1:B0: (12 BYTES)"
9985 PRINT "* USING VARIABLES IN PLACE OF   NUMBERS CAN SAVE MEMORY."
9986 PRINT "* USE:Z0,I,II,III,IV,FIV,VI,VII,VIII,IX,TEN,XX,XXX IN PLACE OF:0,1,2,3,4,5,6,7,8,9,10,20,30."
9987 PRINT "* LIST 9802 TO SEE."
9988 STOP 
9989 GOTO HELP
9997 REM %M%/%L% %C%0%D%E% %T%E%M%P%L%A%T%E%S
9998 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.......   /\.'
9999 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.........1.......   /\.'
Scroll to Top
9 REM \DC\F2\D9\FAC\AD\EA itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"BB\A8 itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B

Super Utility

Products: Super Utility
Developer(s): William J. Pedersen
Date: 1983
Type: Cassette
Platform(s): TS 1000

Utility for working with machine language programs and memory.

Content

Appears On

Related Products

Utility for working with machine language programs and memory.

Related Articles

Related Content

Image Gallery

Super Utility

Source Code

   1 REM %U%T%I%L%I%T%Y
   2 REM *************
   3 REM COPYRIGHT NOV 14, 1983 BY WILLIAM J. PEDERSEN. 1120 MERRIFIELD S.E., GRAND RAPIDS, MICHIGAN  49507
   4 REM REPRODUCTION OR USE OF THIS PROGRAM IS PROHIBITED WITHOUT EXPRESS WRITTEN PERMISSION.
   5 REM *************
   7 REM \7E\E6\E0\FE\C0\28\0E\F2\99\41\FE\80\28\07\F2\A2\41\FE\60\28\10\23\22\93\41\ED\5B\93\7B\19\23\23\C9\11\0C\00\19\11\06\00\19\C9\23\CB\7E\28\FB\18\F4\F5\D5\E5\2A\DB\42\ED\4B\DF\42\ED\5B\E7\42\1A\ED\B1\20\1B\22\DB\42\ED\43\DF\42\2B\ED\4B\E5\42\1A\ED\A1\20\DF\13\EA\C8\41\ED\4B\DB\42\18\21\01\03\D9\18\1C\F5\D5\E5\21\00\00\22\DB\42\21\FF\1F\22\DF\42\18\BF\00\00\D9\18\06
   8 REM \E1\D1\FD\2A\00\40\3E\1E\ED\47\F1\C9\F5\D5\E5\2A\10\40\22\DB\42\3E\80\BE\28\E6\CB\6E\F5\CD\78\41\22\DD\42\F1\20\08\2A\DD\42\22\DB\42\18\E7\CD\2E\42\2A\DB\42\18\DF\2A\DB\42\E5\ED\5B\DD\42\D5\AF\ED\52\EB\2A\1C\40\19\22\1C\40\2A\1A\40\19\22\1A\40\2A\14\40\E5\19\22\14\40\E1\D1\AF\ED\52\E5\C1\03\2A\DB\42\EB\ED\B0\E1\C9\1B\1B\1B\1B\1D\1B\1B\1B\1B\1B\1B\00\00\00\00\18\06
   9 REM \DC\07\F2\03\D9\FA\9C\AD\EA\78\42\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\57\1B\95\7B\A8\04\1B\1B\1B\1B\02\00\78\42\1B\1B\1B\1B\1B\1B\1E\1B\1B
8100 REM %M%A%P
8101 CLS 
8102 PRINT ,,"    % %M%E%M%O%R%Y% %M%A%P%  ";Z$
8103 LET G$="\##\##%P\:.\'.\':%V\:'\..\':%U%U\.'\.'1638420479204802457524576286712867232767ABCEFG0 PROGRAM =VARIABLES=AVAIL MEM=RAMTOP UP="
8104 LET H$="16509"
8105 LET Q=1
8106 LET S=37
8107 LET I$=CHR$ S
8108 FOR K=IV TO XX-I STEP FIV
8109 LET T=II*K+VII
8110 LET L=53.4+II*K/FIV
8111 LET D$=H$
8112 GOSUB SYSV
8113 LET TT=VAL D$
8114 LET D$=G$(L)
8115 GOSUB SYSV
8116 LET QQ=VAL D$
8117 IF QQ=Z0 THEN LET QQ=32768
8118 LET LL=54+II*K
8119 PRINT AT K-I,Z0;G$(LL TO LL+IX);QQ-TT;" BYTES."
8120 LET H$=G$(L+I)
8121 FOR N=Z0 TO 31
8122 PRINT AT K,N;G$(Q);
8123 LET B=13107.2+F7*N+819.2*K
8124 LET D$=I$
8125 GOSUB SYSV
8126 LET BB=VAL D$
8127 IF BB-B<F6 THEN PRINT AT K,N;G$(Q+I);
8128 IF BB>B+F7 THEN GOTO 8137
8129 LET Q=Q+II
8130 LET S=S+I
8131 LET D$=CHR$ S
8132 GOSUB SYSV
8133 LET I$=D$
8134 IF LEN I$<II THEN LET I$="65536"
8135 IF VAL I$>B+F7 THEN GOTO 8137
8136 GOTO 8130
8137 NEXT N
8138 PRINT G$(T TO T+IV);TAB 27;G$(T+FIV TO T+IX)
8139 NEXT K
8140 STOP 
8141 GOTO HELP
8999 REM % %D%I%S%A%S%S%E%M%B%L%E%R% 
9000 PRINT AT XX,Z0;"DISASSEMBLE STARTING WHERE?"
9001 INPUT WB
9002 CLS 
9003 LET WL=Z0
9004 LET WIA=WB
9005 LET WFS=Z0
9006 LET WFN=I
9007 LET WFK=Z0
9008 LET WF=Z0
9009 LET WFW=Z0
9010 LET WV=Z0
9011 LET G$=""
9012 LET WN=112
9013 LET WL=WL+I
9014 LET WP=PEEK WB
9015 IF WP<>221 AND WP<>253 THEN GOTO 9021
9016 IF WFK THEN GOTO ERR
9017 LET WF=I+(I AND WP=253)
9018 LET WFK=I
9019 LET WB=WB+I
9020 GOTO 9014
9021 IF WP<>203 THEN GOTO 9034
9022 LET WFN=Z0
9023 LET WJ=345
9024 LET WB=WB+I+WFK
9025 LET WP=PEEK WB
9026 LET W1=INT (WP/F6)
9027 LET W=WP-F6*W1
9028 LET W2=INT (W/VIII)
9029 LET W=W-VIII*W2
9030 IF WFK AND W<>VI THEN GOTO ERR
9031 IF W1 THEN LET T$(WJ)=CHR$ (97+W1)+CHR$ (F4+I+W2)+CHR$ (W+I)
9032 IF NOT W1 THEN LET T$(WJ)=CHR$ (49+W2)+CHR$ (W+I)+CHR$ 97
9033 GOTO 9042
9034 LET WJ=I+PEEK WB
9035 LET WW=Z0
9036 IF WP<>237 THEN GOTO 9040
9037 LET WB=WB+I
9038 LET WW=PEEK WB
9039 LET WJ=193+WW-(36 AND WW>159)
9040 IF WW>123 AND WW<160 OR WJ>344 THEN GOTO ERR
9041 LET WDIS=PEEK (WB+I)
9042 LET V$=""
9043 LET W0=CODE T$(WJ,I)
9044 IF W0=WN+IV THEN GOTO ERR
9045 IF W0<>WN-IV THEN GOTO 9048
9046 LET WV=VAL (W$(CODE T$(WJ,II)))
9047 LET G$=" "
9048 GOSUB 9066
9049 LET B$=I$+" "
9050 LET W0=CODE T$(WJ,II)
9051 GOSUB 9066
9052 IF I$="" THEN GOTO 9063
9053 IF WP=211 THEN LET I$="(N)"
9054 LET B$=B$+I$
9055 LET W0=CODE T$(WJ,III)
9056 GOSUB 9066
9057 IF I$="" THEN GOTO 9060
9058 IF WP=219 THEN LET I$="(N)"
9059 LET B$=B$+","+I$
9060 IF WFK AND NOT WFW THEN GOTO ERR
9061 LET V$=STR$ WV
9062 IF NOT LEN G$ AND WV=Z0 THEN LET V$=""
9063 PRINT WIA;TAB VI;B$;TAB XX-I;V$+G$
9064 LET WB=WB+I+WFS*WFN
9065 GOTO 9004
9066 LET I$=W$(W0)
9067 GOSUB DTB
9068 IF W0=WN+FIV THEN GOSUB 9094
9069 IF W0<>WN+VI THEN GOTO 9075
9070 LET WB=WB+WFK+I
9071 LET WFN=Z0
9072 LET WV=PEEK WB
9073 IF WP=211 OR WP=219 THEN GOTO 9078
9074 LET G$=":"+CHR$ WV+":"
9075 IF WV>=F5 THEN GOTO 9078
9076 LET W=F4+I+III*WV
9078 IF W0<WN+VII THEN GOTO 9085
9079 LET WB=WB+II
9080 LET G$=" "
9081 LET WFN=Z0
9082 LET E=WB-I
9083 GOSUB DB
9084 LET WV=E
9085 IF NOT WFK THEN GOTO 9092
9086 IF W0=VII OR W0=61 OR W0=WN THEN LET WFW=I
9087 IF W0<>VII THEN GOTO 9091
9088 LET WFS=I
9089 GOSUB 9095
9090 LET I$=W$(WN+WF, TO III)+I$+")"
9091 IF W0=61 THEN LET I$=W$(WN+WF,II TO III)
9092 IF W0=WN THEN LET I$=W$(WN+WF)
9093 RETURN 
9094 LET WB=WB+I
9095 LET W=WDIS
9096 IF W<F7 THEN GOTO 9098
9097 LET W=W-F8
9098 IF NOT WFK THEN LET W=W+II
9099 IF W>=Z0 THEN LET I$="+"+STR$ W
9100 IF W<Z0 THEN LET I$=STR$ W
9101 IF B$( TO II)="JR" OR B$( TO II)="DJ" THEN LET WV=WIA+W
9102 RETURN 
9103 PRINT "ERROR AT ";WIA;". ",
9104 FOR J=Z0 TO III
9105 PRINT PEEK (WIA+J);" ";
9106 NEXT J
9107 PRINT 
9108 GOTO 9004
9120 REM %W%C%O%D
9121 CLS 
9122 PRINT ,," T$(345,3) TABLE FOR DECODING","MOST Z80 INSTRUCTIONS.",,,"N   VALUES      INTERPRETATION",,,
9123 FOR N=I TO 345
9124 PRINT N;" ";
9125 FOR K=I TO III
9126 PRINT CODE T$(N,K);" ";
9127 NEXT K
9128 PRINT ,
9129 FOR K=I TO III
9130 PRINT W$(CODE T$(N,K));" ";
9131 NEXT K
9132 PRINT 
9133 NEXT N
9134 STOP 
9135 REM %W%S%T%R
9136 CLS 
9137 PRINT ,," W$(120,4) ARRAY FOR MNEMONICS.",,,
9138 FOR N=I TO 120
9139 PRINT TAB VI;"W$(";N;")=","""";W$(N);""""
9140 NEXT N
9141 STOP 
9142 GOTO WCOD
9200 REM %E%D%I%T
9201 CLS 
9202 LET L=9228
9203 LET M=9317
9206 PRINT ,,"% %M%A%C%H%I%N%E% %L%A%N%G%U%A%G%E% %E%D%I%T%O%R% ",,,"WHERE ABOVE 16759?  START ";
9207 INPUT B
9208 PRINT B,"SELECT BY NO."
9209 FOR N=VI TO F4+I
9210 PRINT AT N,F4;"                "
9211 NEXT N
9212 PRINT AT IV,XX;"NOW   ";B
9213 PRINT ,," 1 SINGLE BYTE",," 2 DOUBLE BYTE",," 3 LD HL,(NN)",," 4 LD (NN),HL",," 5 PUSH SEQ",," 6 LD (NN),BC",," 7 LD BC,(NN)",," 8 LD (NN),DE",," 9 LD DE,(NN)",,"10 SBC HL,BC",,"11 ADC HL,BC",,"12 SBC HL,DE",,"13 ADC HL,DE",,"14 JUMPS",,"15 %Q%U%I%T"
9214 INPUT N
9215 IF N<I OR N>F4-II THEN GOTO M
9216 PRINT AT N+FIV,F4;"% "
9217 GOTO L-F4+VI*N
9218 INPUT K
9219 IF K<0 OR K>FF THEN GOTO M
9220 POKE B,K
9221 LET B=B+I
9222 GOTO 9209
9224 INPUT K
9225 IF K<0 OR K>=F8*F8 THEN GOTO M
9226 POKE B+I,INT (K/F8)
9227 POKE B,K-F8*INT (K/F8)
9228 LET B=B+II
9229 GOTO 9209
9236 POKE B,XXX+N
9237 LET B=B+I
9238 GOTO L-IV
9242 POKE B,245
9243 POKE B+I,213
9244 POKE B+II,229
9245 LET B=B+I
9246 GOTO L
9266 POKE B,237  
9267 POKE B+I,XX-I+VIII*N  
9268 LET B=B+II
9269 GOTO L-IV
9290 POKE B,237  
9291 POKE B+I,VIII*N-F4+II  
9292 GOTO L
9296 PRINT AT F4,F4;"JUMP TO?"
9297 INPUT N
9298 IF N<16760 OR N>=F8*F8 THEN GOTO M
9299 LET W=(B-N)>F7+I OR B-N<-F7+II
9300 PRINT AT VI,F4;"WHICH CONDITION?",AT VIII,F4;" 1 DJNZ",AT IX,F4;" 2 NONE",AT TEN,F4;" 3 NZ",AT TEN+I,F4;" 4  Z",AT VI+VI,F4;" 5 NC",AT IX+IV,F4;" 6  C",AT F4-II,F4;" 7 PO",AT F4-I,F4;" 8 PE",AT F4,F4;" 9  P   ",AT F4+I,F4;"10  M"   
9301 INPUT S
9302 IF S<I OR S>TEN THEN GOTO M
9303 IF W OR S>VI THEN GOTO 9309
9304 LET N=N-B-II
9305 IF N>=F7 THEN LET N=F7-N
9306 POKE B,VIII+VIII*S
9307 POKE B+I,N
9308 GOTO L
9309 IF S=I THEN GOTO M
9310 POKE B,170+VIII*S
9311 IF S=II THEN POKE B,195
9312 LET B=B+I
9313 LET P3=INT (N/F8)
9314 POKE B,N-F8*P3
9315 POKE B+I,P3
9316 GOTO L
9317 CLS 
9318 PRINT AT IX,Z0;"%Q%U%I%T OR AN ERROR HAS OCCURRED.  THE LAST LOCATION WAS ";B;".","CONTINUE FOR DISASSEMBLER."
9319 STOP 
9320 GOTO DISA
9449 REM %S%E%A%R%C%H
9450 CLS 
9451 LET Q=Z0
9452 LET E=I
9453 PRINT ,,"OBJECTIVE/TITLE?",
9454 INPUT G$
9455 PRINT AT I,Z0;G$;"                ";AT II,Z0;"PRINT? %YES OR %NO",
9456 LET W=Z0
9457 INPUT H$
9458 IF LEN H$ THEN IF H$(I)="Y" THEN LET W=I
9459 PRINT AT II,Z0;"INPUT YOUR CODE          ",
9460 INPUT L
9461 IF L>FF THEN GOTO 9481
9462 PRINT AT II,Z0;"IF DOUBLE BYTE, ENTER ""D"""
9463 INPUT H$
9464 IF LEN H$ THEN IF H$(I)="D" THEN GOTO 9481
9465 POKE 17015+E,L
9466 LET E=E+I
9467 PRINT AT II,Z0;"ANOTHER ENTRY? %YES OR %NO",
9468 INPUT H$
9469 IF LEN H$ THEN IF H$(I)="Y" THEN GOTO 9459
9470 CLS 
9471 IF NOT W THEN PRINT ,,G$
9472 IF W THEN LPRINT G$
9473 POKE 17125,E-I
9474 LET K=USR 16860
9475 GOTO 9477
9476 LET K=USR 16809
9477 LET Q=Q+I
9478 IF K=55555 THEN GOTO 9486
9479 GOSUB 9490+II*W
9480 GOTO 9476
9481 LET P2=INT (L/F8+II**-IX)
9482 POKE 17016+E,P2
9483 POKE 17015+E,L-F8*P2
9484 LET E=E+II
9485 GOTO 9467
9486 IF NOT W THEN PRINT "$";Q-I
9487 IF W THEN LPRINT "$";Q-I
9488 STOP 
9489 GOTO SEARCH
9490 PRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9491 RETURN 
9492 LPRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9493 RETURN 
9499 STOP 
9500 REM %V%L%S%T
9501 CLS 
9502 PRINT ,,,,"   %V%A%R%I%A%B%L%E%S",,,
9503 LET E=16400
9504 GOSUB DB
9505 LET L=E-I
9506 LET T=Z0
9507 LET T=T+I
9508 LET L=L+I
9509 LET B=L
9510 IF LEN H$>I THEN IF H$( TO II)="H$" THEN GOSUB VLST+XX
9511 LET CH=PEEK L
9512 PRINT TAB III-LEN STR$ T;T;" ";
9512 LET TP=INT (CH/F5)
9514 LET CH=CH-TP*F5+F5
9515 LET H$=CHR$ CH
9516 GOSUB VLST-F5+F5*TP
9517 LET E=TP=II OR TP=VI
9518 IF E THEN PRINT H$;TAB XX+VI;B
9519 IF NOT E THEN PRINT H$;TAB XX+III-LEN STR$ Q;Q;TAB XX+VI;B
9520 GOTO VLST+VI
9521 PRINT ,,"   %E%N%D% %O%F% %L%I%S%T ";L
9522 LET H$="***"
9523 STOP 
9524 GOTO VLST
9532 REM %S%T%R%I%N%G
9533 LET H$=H$+"$ "
9534 LET E=L+I
9535 GOSUB DB
9536 FOR Q=I TO (E AND E<F4)+(F4 AND E>=F4)
9537 LET H$=H$+CHR$ PEEK (L+II+Q)
9538 NEXT Q
9539 LET L=L+II+E
9540 RETURN 
9564 REM %S%I%N%G%L
9565 LET Q=VAL H$
9566 LET L=L+FIV
9567 RETURN 
9596 REM %N%(%)
9597 LET H$=H$+"("
9598 LET I$=H$
9599 LET S=PEEK (L+III)
9600 FOR Q=I TO S
9601 LET E=L+II+II*Q
9602 GOSUB DB
9603 IF Q>=S THEN GOTO VLST+105
9604 LET H$=H$+STR$ E+","
9605 LET I$=I$+"1,"
9606 NEXT Q
9607 LET H$=H$+STR$ E+")"
9608 LET I$=I$+"1)"
9609 LET Q=VAL I$
9610 LET E=L+I
9611 GOSUB DB
9612 LET L=L+II+E
9613 RETURN 
9628 REM %M%U%L%T
9629 LET L=L+I
9630 LET CH=PEEK L
9631 IF INT (CH/F6)=II THEN GOTO VLST+133
9632 LET H$=H$+CHR$ CH
9633 GOTO VLST+F7
9634 LET H$=H$+CHR$ (CH-F7)
9635 LET Q=VAL H$
9636 LET L=L+FIV
9637 RETURN 
9660 REM %$%(%)
9661 LET H$=H$+"$("
9662 LET S=PEEK (L+III)
9663 FOR Q=I TO S
9664 LET E=L+II+II*Q
9665 GOSUB DB
9666 IF Q>=S THEN GOTO VLST+168
9667 LET H$=H$+STR$ E+","
9668 NEXT Q
9669 LET H$=H$+STR$ E+")"
9670 LET E=L+VI
9671 LET U=L+III+II*S
9672 GOSUB DB
9674 FOR Q=U TO U+(E AND E<F4)+(F4 AND E>=F4)
9675 LET H$=H$+CHR$ PEEK Q
9676 NEXT Q
9677 GOTO VLST+109
9692 REM %F%-%N
9693 LET Q=VAL H$
9694 LET H$=H$+" FOR-NEXT"
9695 LET L=L+XX-III
9696 RETURN 
9697 REM %D%T%B
9698 FOR J=LEN I$ TO I STEP -I
9699 IF I$(J)=" " THEN NEXT J
9700 LET I$=I$( TO J)
9701 RETURN 
9702 REM %D%B
9703 LET E=F8*PEEK (E+I)+PEEK E
9704 RETURN 
9705 REM %S%R%C%H
9706 CLS 
9707 PRINT AT IX,I;"WRITE YOUR STRING WITHOUT LINE NUMBER.  ADD A QUOTE AND PRECEDESTRING WITH",,,," LET H$=""",,,," THEN ENTER AND CONTINUE."
9708 LET E=17116
9709 STOP 
9710 POKE E+IX,LEN H$
9711 POKE E-I,247
9712 POKE E,66
9713 LET K=PEEK 16396+F8*PEEK 16397-17143
9714 LET S=INT (K/F8)
9715 LET K=K-F8*S
9716 POKE E+III,K
9717 POKE E+IV,S
9718 FOR E=I TO LEN H$
9719 POKE (E+17015),CODE H$(E)
9720 NEXT E
9721 CLS 
9722 PRINT ,,"""";H$;"""";TAB Z0;,,
9723 LET K=USR 16809
9724 IF K=55555 THEN GOTO 9740
9727 LET Q=K
9728 LET Q=Q-I
9729 IF PEEK Q<>118 THEN GOTO 9728
9730 IF K-Q<IV THEN GOTO 9723
9732 LET E=F8*PEEK (Q+I)+PEEK (Q+II)
9733 LET K=F8*PEEK (Q+IV)+PEEK (Q+III)
9734 LET I$=""
9735 FOR Q=Q+FIV TO Q+III+K
9736 LET I$=I$+CHR$ PEEK Q
9737 NEXT Q
9738 PRINT E;TAB FIV;I$
9739 GOTO 9723
9740 PRINT ,,"  % %S%E%A%R%C%H% %C%O%M%P%L%E%T%E% "
9741 STOP 
9742 GOTO 9706
9750 REM %S%P%Y
9751 PRINT AT XX+I,Z0;"LOOK AT NO./%QUIT/%HIGHER/%L0WER"
9752 INPUT H$
9753 IF H$<>"Q" THEN GOTO 9755
9754 STOP 
9755 IF H$<>"H" THEN GOTO 9758
9756 LET B=B+F4
9757 GOTO 9762
9758 IF H$<>"L" THEN GOTO 9761
9759 LET B=B-F4
9760 GOTO 9762
9761 LET B=VAL H$
9762 CLS 
9763 FOR E=B TO B+XX+I
9764 PRINT E;TAB VI;PEEK E;TAB TEN;":";CHR$ PEEK E;":";TAB XX;F8*PEEK (E+I)+PEEK E
9765 NEXT E
9766 GOTO 9752
9800 REM %P%U%R%G
9801 LET N(1)=USR 16900
9802 REM %I%N%I%T%I%A%L%I%Z%A%T%I%O%N%S
9810 LET I=1
9811 LET Z0=I-I
9812 LET II=I+I
9813 LET III=II+I
9814 LET IV=II+II
9815 LET FIV=IV+I
9816 LET VI=IV+II
9817 LET VII=VI+I
9818 LET VIII=IV+IV
9819 LET IX=VIII+I
9820 LET TEN=IX+I
9821 LET XX=II*TEN
9822 LET XXX=30
9823 LET F4=II*VIII
9824 LET F5=II*F4
9825 LET F6=II*F5
9826 LET F7=II*F6
9827 LET F8=256
9828 LET FF=F8-I
9829 LET IK=I/F8/F8
9840 REM %K%E%Y%S
9841 LET VLST=9501
9842 LET DB=9703
9843 LET PURG=9801
9844 LET MEM=9916
9845 LET ZZ=9953
9846 LET ZZZ=ZZ-I
9847 LET ZZZZ=ZZ-II
9848 LET SAVE=9900
9849 LET SYSV=9928
9850 LET MAP=8101
9851 LET SEARCH=9450
9852 LET SRCH=9706
9853 LET HELP=9961
9854 LET SPY=9751
9855 LET DISA=9000
9856 LET ERR=9103
9857 LET DTB=9698
9858 LET WCOD=9121
9859 LET WSTR=9136
9860 LET NTRY=HELP
9861 LET EDIT=9201
9892 CLS 
9893 PRINT ,,,,"* TO DELETE STRINGS AND ARRAYS, REDIMENSION THEM TO ZERO."
9894 PRINT ,,"   DIM (NAME)$(0)  OR"
9895 PRINT ,,"   DIM (NAME)(0)"
9896 PRINT ,,"   THIS WILL PULL ERROR 3/0 BUT"," THE JOB IS DONE."
9897 STOP 
9898 GOTO VLST
9899 REM %S%A%V%E
9900 CLS 
9901 PRINT ,,,,"""";Z$;""" IS TO BE SAVED.",,,"START RECORDER.  PRESS ANY KEY.",,,Q$,,
9902 PRINT "MODE IS ";"LOOPING" AND NOT (NTRY-SAVE);"HELP" AND NOT (NTRY-HELP);"LOAD-AND-GO" AND NOT (NTRY-1000)
9903 SLOW 
9904 IF NTRY<>SAVE THEN PAUSE 40000
9905 FOR N=F6 TO I STEP -I
9906 UNPLOT N-I,XXX
9907 NEXT N
9908 SAVE Z$
9909 FAST 
9910 CLS 
9911 PRINT Y$;X$
9912 PRINT AT IX+VI,VII;"PRESENTS***"
9913 GOSUB ZZZ
9914 GOTO NTRY
9915 REM %M%E%M
9916 LET L=F8*(PEEK 16387-PEEK 16413)+PEEK 16386-PEEK 16412
9917 LET E=INT (L/F5/F5)
9918 PRINT AT IX,Z0;"MEMORY LEFT IS:";E;" K, ";L-F5*F5*E;" BYTES.",,,"(";L;" BYTES)"
9919 IF L<F8+XX THEN PRINT ,,"CAUTION: LIST EDITING MAY BE IMPAIRED."
9920 STOP 
9921 GOTO MAP
9927 REM %S%Y%S%V
9928 LET E=II*CODE D$-75
9929 IF E<I OR E>13 THEN GOTO 9933
9930 LET E$="10141824260002"
9931 LET E=VAL E$(E TO E+I)+16386
9932 LET D$=STR$ (F8*PEEK (E+I)+PEEK E)
9933 RETURN 
9950 REM %S%L%E%E%P
9951 LET ZZ=ZZ+F8
9952 LET ZZ=ZZ+F7
9953 LET ZZ=ZZ+F6
9954 LET ZZ=ZZ+F5
9955 LET E=ZZ-ZZZ+F5
9956 LET ZZ=ZZZ+I
9957 PAUSE E
9958 POKE 16437,FF
9959 RETURN 
9960 REM %H%E%L%P
9961 CLS 
9962 LET PAGE=I
9963 LET H$="% %H%E%L%P%  PAGE "
9964 PRINT AT I,IX;H$;PAGE
9965 PRINT ,,"* USE GOTO FOR DESIRED LOCATION,",,"* LET Z$=""(YOUR PROGRAM NAME)""",,,"* LET NTRY=1000 IF YOU WANT YOUR PROGRAM TO RUN AFTER LOADING." 
9966 PRINT ,,"* Z$=""";Z$;""""
9967 LET I$="% %K%E%Y%W%O%R%D% %L%I%N%E% %F%U%N%C%T%I%O%N% "
9968 PRINT ,,I$,"""HELP""   9960 HERE.","""VLST""   9500 VARIABLE LIST.","""MEM""    9915 AVAILABLE MEMORY. ""SAVE""   9900 SAVE PROGRAM,"
9969 PRINT """NTRY""   HELP UNLESS CHANGED."
9970 PRINT """PURG""   9800 DELETE VARIABLES."
9971 PRINT """MAP""    8100 MEMORY MAP."
9972 PRINT """SPY""    9750 LOOK AT MEMORY."
9973 PRINT """DISA""   9000 DISASSEMBLE."
9974 LET PAGE=II
9975 PRINT 
9976 CLS 
9977 PRINT AT I,IX;H$;PAGE,,,I$
9978 PRINT """WCOD""   9120 DECODE TABLE."
9979 PRINT """WSTD""   9135 MNEMONICS."
9980 PRINT """SRCH""   9705 BASIC CODE."
9981 PRINT """SEARCH"" 9450 ROM SPACE."
9982 PRINT """EDIT""   9200 MACH CODE."
9983 PRINT "*""GOTO VLST"" CODES AS:","  :236:V:L:S:T: (5 BYTES)" 
9984 PRINT "*""GOTO 9500"" CODES AS:","  :235:9:5:0:0:126:EXP:B4:B3:B2:B1:B0: (12 BYTES)"
9985 PRINT "* USING VARIABLES IN PLACE OF   NUMBERS CAN SAVE MEMORY."
9986 PRINT "* USE:Z0,I,II,III,IV,FIV,VI,VII,VIII,IX,TEN,XX,XXX IN PLACE OF:0,1,2,3,4,5,6,7,8,9,10,20,30."
9987 PRINT "* LIST 9802 TO SEE."
9988 STOP 
9989 GOTO HELP
9997 REM %M%/%L% %C%0%D%E% %T%E%M%P%L%A%T%E%S
9998 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.......   /\.'
9999 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.........1.......   /\.'
Scroll to Top

Super Utility

Products: Super Utility
Developer(s): William J. Pedersen
Date: 1983
Type: Cassette
Platform(s): TS 1000

Utility for working with machine language programs and memory.

Content

Appears On

Related Products

Utility for working with machine language programs and memory.

Related Articles

Related Content

Image Gallery

Super Utility

Source Code

   1 REM %U%T%I%L%I%T%Y
   2 REM *************
   3 REM COPYRIGHT NOV 14, 1983 BY WILLIAM J. PEDERSEN. 1120 MERRIFIELD S.E., GRAND RAPIDS, MICHIGAN  49507
   4 REM REPRODUCTION OR USE OF THIS PROGRAM IS PROHIBITED WITHOUT EXPRESS WRITTEN PERMISSION.
   5 REM *************
   7 REM \7E\E6\E0\FE\C0\28\0E\F2\99\41\FE\80\28\07\F2\A2\41\FE\60\28\10\23\22\93\41\ED\5B\93\7B\19\23\23\C9\11\0C\00\19\11\06\00\19\C9\23\CB\7E\28\FB\18\F4\F5\D5\E5\2A\DB\42\ED\4B\DF\42\ED\5B\E7\42\1A\ED\B1\20\1B\22\DB\42\ED\43\DF\42\2B\ED\4B\E5\42\1A\ED\A1\20\DF\13\EA\C8\41\ED\4B\DB\42\18\21\01\03\D9\18\1C\F5\D5\E5\21\00\00\22\DB\42\21\FF\1F\22\DF\42\18\BF\00\00\D9\18\06
   8 REM \E1\D1\FD\2A\00\40\3E\1E\ED\47\F1\C9\F5\D5\E5\2A\10\40\22\DB\42\3E\80\BE\28\E6\CB\6E\F5\CD\78\41\22\DD\42\F1\20\08\2A\DD\42\22\DB\42\18\E7\CD\2E\42\2A\DB\42\18\DF\2A\DB\42\E5\ED\5B\DD\42\D5\AF\ED\52\EB\2A\1C\40\19\22\1C\40\2A\1A\40\19\22\1A\40\2A\14\40\E5\19\22\14\40\E1\D1\AF\ED\52\E5\C1\03\2A\DB\42\EB\ED\B0\E1\C9\1B\1B\1B\1B\1D\1B\1B\1B\1B\1B\1B\00\00\00\00\18\06
   9 REM \DC\07\F2\03\D9\FA\9C\AD\EA\78\42\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\57\1B\95\7B\A8\04\1B\1B\1B\1B\02\00\78\42\1B\1B\1B\1B\1B\1B\1E\1B\1B
8100 REM %M%A%P
8101 CLS 
8102 PRINT ,,"    % %M%E%M%O%R%Y% %M%A%P%  ";Z$
8103 LET G$="\##\##%P\:.\'.\':%V\:'\..\':%U%U\.'\.'1638420479204802457524576286712867232767ABCEFG0 PROGRAM =VARIABLES=AVAIL MEM=RAMTOP UP="
8104 LET H$="16509"
8105 LET Q=1
8106 LET S=37
8107 LET I$=CHR$ S
8108 FOR K=IV TO XX-I STEP FIV
8109 LET T=II*K+VII
8110 LET L=53.4+II*K/FIV
8111 LET D$=H$
8112 GOSUB SYSV
8113 LET TT=VAL D$
8114 LET D$=G$(L)
8115 GOSUB SYSV
8116 LET QQ=VAL D$
8117 IF QQ=Z0 THEN LET QQ=32768
8118 LET LL=54+II*K
8119 PRINT AT K-I,Z0;G$(LL TO LL+IX);QQ-TT;" BYTES."
8120 LET H$=G$(L+I)
8121 FOR N=Z0 TO 31
8122 PRINT AT K,N;G$(Q);
8123 LET B=13107.2+F7*N+819.2*K
8124 LET D$=I$
8125 GOSUB SYSV
8126 LET BB=VAL D$
8127 IF BB-B<F6 THEN PRINT AT K,N;G$(Q+I);
8128 IF BB>B+F7 THEN GOTO 8137
8129 LET Q=Q+II
8130 LET S=S+I
8131 LET D$=CHR$ S
8132 GOSUB SYSV
8133 LET I$=D$
8134 IF LEN I$<II THEN LET I$="65536"
8135 IF VAL I$>B+F7 THEN GOTO 8137
8136 GOTO 8130
8137 NEXT N
8138 PRINT G$(T TO T+IV);TAB 27;G$(T+FIV TO T+IX)
8139 NEXT K
8140 STOP 
8141 GOTO HELP
8999 REM % %D%I%S%A%S%S%E%M%B%L%E%R% 
9000 PRINT AT XX,Z0;"DISASSEMBLE STARTING WHERE?"
9001 INPUT WB
9002 CLS 
9003 LET WL=Z0
9004 LET WIA=WB
9005 LET WFS=Z0
9006 LET WFN=I
9007 LET WFK=Z0
9008 LET WF=Z0
9009 LET WFW=Z0
9010 LET WV=Z0
9011 LET G$=""
9012 LET WN=112
9013 LET WL=WL+I
9014 LET WP=PEEK WB
9015 IF WP<>221 AND WP<>253 THEN GOTO 9021
9016 IF WFK THEN GOTO ERR
9017 LET WF=I+(I AND WP=253)
9018 LET WFK=I
9019 LET WB=WB+I
9020 GOTO 9014
9021 IF WP<>203 THEN GOTO 9034
9022 LET WFN=Z0
9023 LET WJ=345
9024 LET WB=WB+I+WFK
9025 LET WP=PEEK WB
9026 LET W1=INT (WP/F6)
9027 LET W=WP-F6*W1
9028 LET W2=INT (W/VIII)
9029 LET W=W-VIII*W2
9030 IF WFK AND W<>VI THEN GOTO ERR
9031 IF W1 THEN LET T$(WJ)=CHR$ (97+W1)+CHR$ (F4+I+W2)+CHR$ (W+I)
9032 IF NOT W1 THEN LET T$(WJ)=CHR$ (49+W2)+CHR$ (W+I)+CHR$ 97
9033 GOTO 9042
9034 LET WJ=I+PEEK WB
9035 LET WW=Z0
9036 IF WP<>237 THEN GOTO 9040
9037 LET WB=WB+I
9038 LET WW=PEEK WB
9039 LET WJ=193+WW-(36 AND WW>159)
9040 IF WW>123 AND WW<160 OR WJ>344 THEN GOTO ERR
9041 LET WDIS=PEEK (WB+I)
9042 LET V$=""
9043 LET W0=CODE T$(WJ,I)
9044 IF W0=WN+IV THEN GOTO ERR
9045 IF W0<>WN-IV THEN GOTO 9048
9046 LET WV=VAL (W$(CODE T$(WJ,II)))
9047 LET G$=" "
9048 GOSUB 9066
9049 LET B$=I$+" "
9050 LET W0=CODE T$(WJ,II)
9051 GOSUB 9066
9052 IF I$="" THEN GOTO 9063
9053 IF WP=211 THEN LET I$="(N)"
9054 LET B$=B$+I$
9055 LET W0=CODE T$(WJ,III)
9056 GOSUB 9066
9057 IF I$="" THEN GOTO 9060
9058 IF WP=219 THEN LET I$="(N)"
9059 LET B$=B$+","+I$
9060 IF WFK AND NOT WFW THEN GOTO ERR
9061 LET V$=STR$ WV
9062 IF NOT LEN G$ AND WV=Z0 THEN LET V$=""
9063 PRINT WIA;TAB VI;B$;TAB XX-I;V$+G$
9064 LET WB=WB+I+WFS*WFN
9065 GOTO 9004
9066 LET I$=W$(W0)
9067 GOSUB DTB
9068 IF W0=WN+FIV THEN GOSUB 9094
9069 IF W0<>WN+VI THEN GOTO 9075
9070 LET WB=WB+WFK+I
9071 LET WFN=Z0
9072 LET WV=PEEK WB
9073 IF WP=211 OR WP=219 THEN GOTO 9078
9074 LET G$=":"+CHR$ WV+":"
9075 IF WV>=F5 THEN GOTO 9078
9076 LET W=F4+I+III*WV
9078 IF W0<WN+VII THEN GOTO 9085
9079 LET WB=WB+II
9080 LET G$=" "
9081 LET WFN=Z0
9082 LET E=WB-I
9083 GOSUB DB
9084 LET WV=E
9085 IF NOT WFK THEN GOTO 9092
9086 IF W0=VII OR W0=61 OR W0=WN THEN LET WFW=I
9087 IF W0<>VII THEN GOTO 9091
9088 LET WFS=I
9089 GOSUB 9095
9090 LET I$=W$(WN+WF, TO III)+I$+")"
9091 IF W0=61 THEN LET I$=W$(WN+WF,II TO III)
9092 IF W0=WN THEN LET I$=W$(WN+WF)
9093 RETURN 
9094 LET WB=WB+I
9095 LET W=WDIS
9096 IF W<F7 THEN GOTO 9098
9097 LET W=W-F8
9098 IF NOT WFK THEN LET W=W+II
9099 IF W>=Z0 THEN LET I$="+"+STR$ W
9100 IF W<Z0 THEN LET I$=STR$ W
9101 IF B$( TO II)="JR" OR B$( TO II)="DJ" THEN LET WV=WIA+W
9102 RETURN 
9103 PRINT "ERROR AT ";WIA;". ",
9104 FOR J=Z0 TO III
9105 PRINT PEEK (WIA+J);" ";
9106 NEXT J
9107 PRINT 
9108 GOTO 9004
9120 REM %W%C%O%D
9121 CLS 
9122 PRINT ,," T$(345,3) TABLE FOR DECODING","MOST Z80 INSTRUCTIONS.",,,"N   VALUES      INTERPRETATION",,,
9123 FOR N=I TO 345
9124 PRINT N;" ";
9125 FOR K=I TO III
9126 PRINT CODE T$(N,K);" ";
9127 NEXT K
9128 PRINT ,
9129 FOR K=I TO III
9130 PRINT W$(CODE T$(N,K));" ";
9131 NEXT K
9132 PRINT 
9133 NEXT N
9134 STOP 
9135 REM %W%S%T%R
9136 CLS 
9137 PRINT ,," W$(120,4) ARRAY FOR MNEMONICS.",,,
9138 FOR N=I TO 120
9139 PRINT TAB VI;"W$(";N;")=","""";W$(N);""""
9140 NEXT N
9141 STOP 
9142 GOTO WCOD
9200 REM %E%D%I%T
9201 CLS 
9202 LET L=9228
9203 LET M=9317
9206 PRINT ,,"% %M%A%C%H%I%N%E% %L%A%N%G%U%A%G%E% %E%D%I%T%O%R% ",,,"WHERE ABOVE 16759?  START ";
9207 INPUT B
9208 PRINT B,"SELECT BY NO."
9209 FOR N=VI TO F4+I
9210 PRINT AT N,F4;"                "
9211 NEXT N
9212 PRINT AT IV,XX;"NOW   ";B
9213 PRINT ,," 1 SINGLE BYTE",," 2 DOUBLE BYTE",," 3 LD HL,(NN)",," 4 LD (NN),HL",," 5 PUSH SEQ",," 6 LD (NN),BC",," 7 LD BC,(NN)",," 8 LD (NN),DE",," 9 LD DE,(NN)",,"10 SBC HL,BC",,"11 ADC HL,BC",,"12 SBC HL,DE",,"13 ADC HL,DE",,"14 JUMPS",,"15 %Q%U%I%T"
9214 INPUT N
9215 IF N<I OR N>F4-II THEN GOTO M
9216 PRINT AT N+FIV,F4;"% "
9217 GOTO L-F4+VI*N
9218 INPUT K
9219 IF K<0 OR K>FF THEN GOTO M
9220 POKE B,K
9221 LET B=B+I
9222 GOTO 9209
9224 INPUT K
9225 IF K<0 OR K>=F8*F8 THEN GOTO M
9226 POKE B+I,INT (K/F8)
9227 POKE B,K-F8*INT (K/F8)
9228 LET B=B+II
9229 GOTO 9209
9236 POKE B,XXX+N
9237 LET B=B+I
9238 GOTO L-IV
9242 POKE B,245
9243 POKE B+I,213
9244 POKE B+II,229
9245 LET B=B+I
9246 GOTO L
9266 POKE B,237  
9267 POKE B+I,XX-I+VIII*N  
9268 LET B=B+II
9269 GOTO L-IV
9290 POKE B,237  
9291 POKE B+I,VIII*N-F4+II  
9292 GOTO L
9296 PRINT AT F4,F4;"JUMP TO?"
9297 INPUT N
9298 IF N<16760 OR N>=F8*F8 THEN GOTO M
9299 LET W=(B-N)>F7+I OR B-N<-F7+II
9300 PRINT AT VI,F4;"WHICH CONDITION?",AT VIII,F4;" 1 DJNZ",AT IX,F4;" 2 NONE",AT TEN,F4;" 3 NZ",AT TEN+I,F4;" 4  Z",AT VI+VI,F4;" 5 NC",AT IX+IV,F4;" 6  C",AT F4-II,F4;" 7 PO",AT F4-I,F4;" 8 PE",AT F4,F4;" 9  P   ",AT F4+I,F4;"10  M"   
9301 INPUT S
9302 IF S<I OR S>TEN THEN GOTO M
9303 IF W OR S>VI THEN GOTO 9309
9304 LET N=N-B-II
9305 IF N>=F7 THEN LET N=F7-N
9306 POKE B,VIII+VIII*S
9307 POKE B+I,N
9308 GOTO L
9309 IF S=I THEN GOTO M
9310 POKE B,170+VIII*S
9311 IF S=II THEN POKE B,195
9312 LET B=B+I
9313 LET P3=INT (N/F8)
9314 POKE B,N-F8*P3
9315 POKE B+I,P3
9316 GOTO L
9317 CLS 
9318 PRINT AT IX,Z0;"%Q%U%I%T OR AN ERROR HAS OCCURRED.  THE LAST LOCATION WAS ";B;".","CONTINUE FOR DISASSEMBLER."
9319 STOP 
9320 GOTO DISA
9449 REM %S%E%A%R%C%H
9450 CLS 
9451 LET Q=Z0
9452 LET E=I
9453 PRINT ,,"OBJECTIVE/TITLE?",
9454 INPUT G$
9455 PRINT AT I,Z0;G$;"                ";AT II,Z0;"PRINT? %YES OR %NO",
9456 LET W=Z0
9457 INPUT H$
9458 IF LEN H$ THEN IF H$(I)="Y" THEN LET W=I
9459 PRINT AT II,Z0;"INPUT YOUR CODE          ",
9460 INPUT L
9461 IF L>FF THEN GOTO 9481
9462 PRINT AT II,Z0;"IF DOUBLE BYTE, ENTER ""D"""
9463 INPUT H$
9464 IF LEN H$ THEN IF H$(I)="D" THEN GOTO 9481
9465 POKE 17015+E,L
9466 LET E=E+I
9467 PRINT AT II,Z0;"ANOTHER ENTRY? %YES OR %NO",
9468 INPUT H$
9469 IF LEN H$ THEN IF H$(I)="Y" THEN GOTO 9459
9470 CLS 
9471 IF NOT W THEN PRINT ,,G$
9472 IF W THEN LPRINT G$
9473 POKE 17125,E-I
9474 LET K=USR 16860
9475 GOTO 9477
9476 LET K=USR 16809
9477 LET Q=Q+I
9478 IF K=55555 THEN GOTO 9486
9479 GOSUB 9490+II*W
9480 GOTO 9476
9481 LET P2=INT (L/F8+II**-IX)
9482 POKE 17016+E,P2
9483 POKE 17015+E,L-F8*P2
9484 LET E=E+II
9485 GOTO 9467
9486 IF NOT W THEN PRINT "$";Q-I
9487 IF W THEN LPRINT "$";Q-I
9488 STOP 
9489 GOTO SEARCH
9490 PRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9491 RETURN 
9492 LPRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I)
9493 RETURN 
9499 STOP 
9500 REM %V%L%S%T
9501 CLS 
9502 PRINT ,,,,"   %V%A%R%I%A%B%L%E%S",,,
9503 LET E=16400
9504 GOSUB DB
9505 LET L=E-I
9506 LET T=Z0
9507 LET T=T+I
9508 LET L=L+I
9509 LET B=L
9510 IF LEN H$>I THEN IF H$( TO II)="H$" THEN GOSUB VLST+XX
9511 LET CH=PEEK L
9512 PRINT TAB III-LEN STR$ T;T;" ";
9512 LET TP=INT (CH/F5)
9514 LET CH=CH-TP*F5+F5
9515 LET H$=CHR$ CH
9516 GOSUB VLST-F5+F5*TP
9517 LET E=TP=II OR TP=VI
9518 IF E THEN PRINT H$;TAB XX+VI;B
9519 IF NOT E THEN PRINT H$;TAB XX+III-LEN STR$ Q;Q;TAB XX+VI;B
9520 GOTO VLST+VI
9521 PRINT ,,"   %E%N%D% %O%F% %L%I%S%T ";L
9522 LET H$="***"
9523 STOP 
9524 GOTO VLST
9532 REM %S%T%R%I%N%G
9533 LET H$=H$+"$ "
9534 LET E=L+I
9535 GOSUB DB
9536 FOR Q=I TO (E AND E<F4)+(F4 AND E>=F4)
9537 LET H$=H$+CHR$ PEEK (L+II+Q)
9538 NEXT Q
9539 LET L=L+II+E
9540 RETURN 
9564 REM %S%I%N%G%L
9565 LET Q=VAL H$
9566 LET L=L+FIV
9567 RETURN 
9596 REM %N%(%)
9597 LET H$=H$+"("
9598 LET I$=H$
9599 LET S=PEEK (L+III)
9600 FOR Q=I TO S
9601 LET E=L+II+II*Q
9602 GOSUB DB
9603 IF Q>=S THEN GOTO VLST+105
9604 LET H$=H$+STR$ E+","
9605 LET I$=I$+"1,"
9606 NEXT Q
9607 LET H$=H$+STR$ E+")"
9608 LET I$=I$+"1)"
9609 LET Q=VAL I$
9610 LET E=L+I
9611 GOSUB DB
9612 LET L=L+II+E
9613 RETURN 
9628 REM %M%U%L%T
9629 LET L=L+I
9630 LET CH=PEEK L
9631 IF INT (CH/F6)=II THEN GOTO VLST+133
9632 LET H$=H$+CHR$ CH
9633 GOTO VLST+F7
9634 LET H$=H$+CHR$ (CH-F7)
9635 LET Q=VAL H$
9636 LET L=L+FIV
9637 RETURN 
9660 REM %$%(%)
9661 LET H$=H$+"$("
9662 LET S=PEEK (L+III)
9663 FOR Q=I TO S
9664 LET E=L+II+II*Q
9665 GOSUB DB
9666 IF Q>=S THEN GOTO VLST+168
9667 LET H$=H$+STR$ E+","
9668 NEXT Q
9669 LET H$=H$+STR$ E+")"
9670 LET E=L+VI
9671 LET U=L+III+II*S
9672 GOSUB DB
9674 FOR Q=U TO U+(E AND E<F4)+(F4 AND E>=F4)
9675 LET H$=H$+CHR$ PEEK Q
9676 NEXT Q
9677 GOTO VLST+109
9692 REM %F%-%N
9693 LET Q=VAL H$
9694 LET H$=H$+" FOR-NEXT"
9695 LET L=L+XX-III
9696 RETURN 
9697 REM %D%T%B
9698 FOR J=LEN I$ TO I STEP -I
9699 IF I$(J)=" " THEN NEXT J
9700 LET I$=I$( TO J)
9701 RETURN 
9702 REM %D%B
9703 LET E=F8*PEEK (E+I)+PEEK E
9704 RETURN 
9705 REM %S%R%C%H
9706 CLS 
9707 PRINT AT IX,I;"WRITE YOUR STRING WITHOUT LINE NUMBER.  ADD A QUOTE AND PRECEDESTRING WITH",,,," LET H$=""",,,," THEN ENTER AND CONTINUE."
9708 LET E=17116
9709 STOP 
9710 POKE E+IX,LEN H$
9711 POKE E-I,247
9712 POKE E,66
9713 LET K=PEEK 16396+F8*PEEK 16397-17143
9714 LET S=INT (K/F8)
9715 LET K=K-F8*S
9716 POKE E+III,K
9717 POKE E+IV,S
9718 FOR E=I TO LEN H$
9719 POKE (E+17015),CODE H$(E)
9720 NEXT E
9721 CLS 
9722 PRINT ,,"""";H$;"""";TAB Z0;,,
9723 LET K=USR 16809
9724 IF K=55555 THEN GOTO 9740
9727 LET Q=K
9728 LET Q=Q-I
9729 IF PEEK Q<>118 THEN GOTO 9728
9730 IF K-Q<IV THEN GOTO 9723
9732 LET E=F8*PEEK (Q+I)+PEEK (Q+II)
9733 LET K=F8*PEEK (Q+IV)+PEEK (Q+III)
9734 LET I$=""
9735 FOR Q=Q+FIV TO Q+III+K
9736 LET I$=I$+CHR$ PEEK Q
9737 NEXT Q
9738 PRINT E;TAB FIV;I$
9739 GOTO 9723
9740 PRINT ,,"  % %S%E%A%R%C%H% %C%O%M%P%L%E%T%E% "
9741 STOP 
9742 GOTO 9706
9750 REM %S%P%Y
9751 PRINT AT XX+I,Z0;"LOOK AT NO./%QUIT/%HIGHER/%L0WER"
9752 INPUT H$
9753 IF H$<>"Q" THEN GOTO 9755
9754 STOP 
9755 IF H$<>"H" THEN GOTO 9758
9756 LET B=B+F4
9757 GOTO 9762
9758 IF H$<>"L" THEN GOTO 9761
9759 LET B=B-F4
9760 GOTO 9762
9761 LET B=VAL H$
9762 CLS 
9763 FOR E=B TO B+XX+I
9764 PRINT E;TAB VI;PEEK E;TAB TEN;":";CHR$ PEEK E;":";TAB XX;F8*PEEK (E+I)+PEEK E
9765 NEXT E
9766 GOTO 9752
9800 REM %P%U%R%G
9801 LET N(1)=USR 16900
9802 REM %I%N%I%T%I%A%L%I%Z%A%T%I%O%N%S
9810 LET I=1
9811 LET Z0=I-I
9812 LET II=I+I
9813 LET III=II+I
9814 LET IV=II+II
9815 LET FIV=IV+I
9816 LET VI=IV+II
9817 LET VII=VI+I
9818 LET VIII=IV+IV
9819 LET IX=VIII+I
9820 LET TEN=IX+I
9821 LET XX=II*TEN
9822 LET XXX=30
9823 LET F4=II*VIII
9824 LET F5=II*F4
9825 LET F6=II*F5
9826 LET F7=II*F6
9827 LET F8=256
9828 LET FF=F8-I
9829 LET IK=I/F8/F8
9840 REM %K%E%Y%S
9841 LET VLST=9501
9842 LET DB=9703
9843 LET PURG=9801
9844 LET MEM=9916
9845 LET ZZ=9953
9846 LET ZZZ=ZZ-I
9847 LET ZZZZ=ZZ-II
9848 LET SAVE=9900
9849 LET SYSV=9928
9850 LET MAP=8101
9851 LET SEARCH=9450
9852 LET SRCH=9706
9853 LET HELP=9961
9854 LET SPY=9751
9855 LET DISA=9000
9856 LET ERR=9103
9857 LET DTB=9698
9858 LET WCOD=9121
9859 LET WSTR=9136
9860 LET NTRY=HELP
9861 LET EDIT=9201
9892 CLS 
9893 PRINT ,,,,"* TO DELETE STRINGS AND ARRAYS, REDIMENSION THEM TO ZERO."
9894 PRINT ,,"   DIM (NAME)$(0)  OR"
9895 PRINT ,,"   DIM (NAME)(0)"
9896 PRINT ,,"   THIS WILL PULL ERROR 3/0 BUT"," THE JOB IS DONE."
9897 STOP 
9898 GOTO VLST
9899 REM %S%A%V%E
9900 CLS 
9901 PRINT ,,,,"""";Z$;""" IS TO BE SAVED.",,,"START RECORDER.  PRESS ANY KEY.",,,Q$,,
9902 PRINT "MODE IS ";"LOOPING" AND NOT (NTRY-SAVE);"HELP" AND NOT (NTRY-HELP);"LOAD-AND-GO" AND NOT (NTRY-1000)
9903 SLOW 
9904 IF NTRY<>SAVE THEN PAUSE 40000
9905 FOR N=F6 TO I STEP -I
9906 UNPLOT N-I,XXX
9907 NEXT N
9908 SAVE Z$
9909 FAST 
9910 CLS 
9911 PRINT Y$;X$
9912 PRINT AT IX+VI,VII;"PRESENTS***"
9913 GOSUB ZZZ
9914 GOTO NTRY
9915 REM %M%E%M
9916 LET L=F8*(PEEK 16387-PEEK 16413)+PEEK 16386-PEEK 16412
9917 LET E=INT (L/F5/F5)
9918 PRINT AT IX,Z0;"MEMORY LEFT IS:";E;" K, ";L-F5*F5*E;" BYTES.",,,"(";L;" BYTES)"
9919 IF L<F8+XX THEN PRINT ,,"CAUTION: LIST EDITING MAY BE IMPAIRED."
9920 STOP 
9921 GOTO MAP
9927 REM %S%Y%S%V
9928 LET E=II*CODE D$-75
9929 IF E<I OR E>13 THEN GOTO 9933
9930 LET E$="10141824260002"
9931 LET E=VAL E$(E TO E+I)+16386
9932 LET D$=STR$ (F8*PEEK (E+I)+PEEK E)
9933 RETURN 
9950 REM %S%L%E%E%P
9951 LET ZZ=ZZ+F8
9952 LET ZZ=ZZ+F7
9953 LET ZZ=ZZ+F6
9954 LET ZZ=ZZ+F5
9955 LET E=ZZ-ZZZ+F5
9956 LET ZZ=ZZZ+I
9957 PAUSE E
9958 POKE 16437,FF
9959 RETURN 
9960 REM %H%E%L%P
9961 CLS 
9962 LET PAGE=I
9963 LET H$="% %H%E%L%P%  PAGE "
9964 PRINT AT I,IX;H$;PAGE
9965 PRINT ,,"* USE GOTO FOR DESIRED LOCATION,",,"* LET Z$=""(YOUR PROGRAM NAME)""",,,"* LET NTRY=1000 IF YOU WANT YOUR PROGRAM TO RUN AFTER LOADING." 
9966 PRINT ,,"* Z$=""";Z$;""""
9967 LET I$="% %K%E%Y%W%O%R%D% %L%I%N%E% %F%U%N%C%T%I%O%N% "
9968 PRINT ,,I$,"""HELP""   9960 HERE.","""VLST""   9500 VARIABLE LIST.","""MEM""    9915 AVAILABLE MEMORY. ""SAVE""   9900 SAVE PROGRAM,"
9969 PRINT """NTRY""   HELP UNLESS CHANGED."
9970 PRINT """PURG""   9800 DELETE VARIABLES."
9971 PRINT """MAP""    8100 MEMORY MAP."
9972 PRINT """SPY""    9750 LOOK AT MEMORY."
9973 PRINT """DISA""   9000 DISASSEMBLE."
9974 LET PAGE=II
9975 PRINT 
9976 CLS 
9977 PRINT AT I,IX;H$;PAGE,,,I$
9978 PRINT """WCOD""   9120 DECODE TABLE."
9979 PRINT """WSTD""   9135 MNEMONICS."
9980 PRINT """SRCH""   9705 BASIC CODE."
9981 PRINT """SEARCH"" 9450 ROM SPACE."
9982 PRINT """EDIT""   9200 MACH CODE."
9983 PRINT "*""GOTO VLST"" CODES AS:","  :236:V:L:S:T: (5 BYTES)" 
9984 PRINT "*""GOTO 9500"" CODES AS:","  :235:9:5:0:0:126:EXP:B4:B3:B2:B1:B0: (12 BYTES)"
9985 PRINT "* USING VARIABLES IN PLACE OF   NUMBERS CAN SAVE MEMORY."
9986 PRINT "* USE:Z0,I,II,III,IV,FIV,VI,VII,VIII,IX,TEN,XX,XXX IN PLACE OF:0,1,2,3,4,5,6,7,8,9,10,20,30."
9987 PRINT "* LIST 9802 TO SEE."
9988 STOP 
9989 GOTO HELP
9997 REM %M%/%L% %C%0%D%E% %T%E%M%P%L%A%T%E%S
9998 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.......   /\.'
9999 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.........1.......   /\.'
Scroll to Top
itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"E itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56719 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"B \n8100 REM %M%A%P \n8101 CLS \n8102 PRINT ,," % %M%E%M%O%R%Y% %M%A%P% ";Z$ \n8103 LET G$="\##\##%P\:.\'.\':%V\:'\..\':%U%U\.'\.'1638420479204802457524576286712867232767ABCEFG0 PROGRAM =VARIABLES=AVAIL MEM=RAMTOP UP=" \n8104 LET H$="16509" \n8105 LET Q=1 \n8106 LET S=37 \n8107 LET I$=CHR$ S \n8108 FOR K=IV TO XX-I STEP FIV \n8109 LET T=II*K+VII \n8110 LET L=53.4+II*K/FIV \n8111 LET D$=H$ \n8112 GOSUB SYSV \n8113 LET TT=VAL D$ \n8114 LET D$=G$(L) \n8115 GOSUB SYSV \n8116 LET QQ=VAL D$ \n8117 IF QQ=Z0 THEN LET QQ=32768 \n8118 LET LL=54+II*K \n8119 PRINT AT K-I,Z0;G$(LL TO LL+IX);QQ-TT;" BYTES." \n8120 LET H$=G$(L+I) \n8121 FOR N=Z0 TO 31 \n8122 PRINT AT K,N;G$(Q); \n8123 LET B=13107.2+F7*N+819.2*K \n8124 LET D$=I$ \n8125 GOSUB SYSV \n8126 LET BB=VAL D$ \n8127 IF BB-B<F6 THEN PRINT AT K,N;G$(Q+I); \n8128 IF BB>B+F7 THEN GOTO 8137 \n8129 LET Q=Q+II \n8130 LET S=S+I \n8131 LET D$=CHR$ S \n8132 GOSUB SYSV \n8133 LET I$=D$ \n8134 IF LEN I$<II THEN LET I$="65536" \n8135 IF VAL I$>B+F7 THEN GOTO 8137 \n8136 GOTO 8130 \n8137 NEXT N \n8138 PRINT G$(T TO T+IV);TAB 27;G$(T+FIV TO T+IX) \n8139 NEXT K \n8140 STOP \n8141 GOTO HELP \n8999 REM % %D%I%S%A%S%S%E%M%B%L%E%R% \n9000 PRINT AT XX,Z0;"DISASSEMBLE STARTING WHERE?" \n9001 INPUT WB \n9002 CLS \n9003 LET WL=Z0 \n9004 LET WIA=WB \n9005 LET WFS=Z0 \n9006 LET WFN=I \n9007 LET WFK=Z0 \n9008 LET WF=Z0 \n9009 LET WFW=Z0 \n9010 LET WV=Z0 \n9011 LET G$="" \n9012 LET WN=112 \n9013 LET WL=WL+I \n9014 LET WP=PEEK WB \n9015 IF WP<>221 AND WP<>253 THEN GOTO 9021 \n9016 IF WFK THEN GOTO ERR \n9017 LET WF=I+(I AND WP=253) \n9018 LET WFK=I \n9019 LET WB=WB+I \n9020 GOTO 9014 \n9021 IF WP<>203 THEN GOTO 9034 \n9022 LET WFN=Z0 \n9023 LET WJ=345 \n9024 LET WB=WB+I+WFK \n9025 LET WP=PEEK WB \n9026 LET W1=INT (WP/F6) \n9027 LET W=WP-F6*W1 \n9028 LET W2=INT (W/VIII) \n9029 LET W=W-VIII*W2 \n9030 IF WFK AND W<>VI THEN GOTO ERR \n9031 IF W1 THEN LET T$(WJ)=CHR$ (97+W1)+CHR$ (F4+I+W2)+CHR$ (W+I) \n9032 IF NOT W1 THEN LET T$(WJ)=CHR$ (49+W2)+CHR$ (W+I)+CHR$ 97 \n9033 GOTO 9042 \n9034 LET WJ=I+PEEK WB \n9035 LET WW=Z0 \n9036 IF WP<>237 THEN GOTO 9040 \n9037 LET WB=WB+I \n9038 LET WW=PEEK WB \n9039 LET WJ=193+WW-(36 AND WW>159) \n9040 IF WW>123 AND WW<160 OR WJ>344 THEN GOTO ERR \n9041 LET WDIS=PEEK (WB+I) \n9042 LET V$="" \n9043 LET W0=CODE T$(WJ,I) \n9044 IF W0=WN+IV THEN GOTO ERR \n9045 IF W0<>WN-IV THEN GOTO 9048 \n9046 LET WV=VAL (W$(CODE T$(WJ,II))) \n9047 LET G$=" " \n9048 GOSUB 9066 \n9049 LET B$=I$+" " \n9050 LET W0=CODE T$(WJ,II) \n9051 GOSUB 9066 \n9052 IF I$="" THEN GOTO 9063 \n9053 IF WP=211 THEN LET I$="(N)" \n9054 LET B$=B$+I$ \n9055 LET W0=CODE T$(WJ,III) \n9056 GOSUB 9066 \n9057 IF I$="" THEN GOTO 9060 \n9058 IF WP=219 THEN LET I$="(N)" \n9059 LET B$=B$+","+I$ \n9060 IF WFK AND NOT WFW THEN GOTO ERR \n9061 LET V$=STR$ WV \n9062 IF NOT LEN G$ AND WV=Z0 THEN LET V$="" \n9063 PRINT WIA;TAB VI;B$;TAB XX-I;V$+G$ \n9064 LET WB=WB+I+WFS*WFN \n9065 GOTO 9004 \n9066 LET I$=W$(W0) \n9067 GOSUB DTB \n9068 IF W0=WN+FIV THEN GOSUB 9094 \n9069 IF W0<>WN+VI THEN GOTO 9075 \n9070 LET WB=WB+WFK+I \n9071 LET WFN=Z0 \n9072 LET WV=PEEK WB \n9073 IF WP=211 OR WP=219 THEN GOTO 9078 \n9074 LET G$=":"+CHR$ WV+":" \n9075 IF WV>=F5 THEN GOTO 9078 \n9076 LET W=F4+I+III*WV \n9078 IF W0<WN+VII THEN GOTO 9085 \n9079 LET WB=WB+II \n9080 LET G$=" " \n9081 LET WFN=Z0 \n9082 LET E=WB-I \n9083 GOSUB DB \n9084 LET WV=E \n9085 IF NOT WFK THEN GOTO 9092 \n9086 IF W0=VII OR W0=61 OR W0=WN THEN LET WFW=I \n9087 IF W0<>VII THEN GOTO 9091 \n9088 LET WFS=I \n9089 GOSUB 9095 \n9090 LET I$=W$(WN+WF, TO III)+I$+")" \n9091 IF W0=61 THEN LET I$=W$(WN+WF,II TO III) \n9092 IF W0=WN THEN LET I$=W$(WN+WF) \n9093 RETURN \n9094 LET WB=WB+I \n9095 LET W=WDIS \n9096 IF W<F7 THEN GOTO 9098 \n9097 LET W=W-F8 \n9098 IF NOT WFK THEN LET W=W+II \n9099 IF W>=Z0 THEN LET I$="+"+STR$ W \n9100 IF W<Z0 THEN LET I$=STR$ W \n9101 IF B$( TO II)="JR" OR B$( TO II)="DJ" THEN LET WV=WIA+W \n9102 RETURN \n9103 PRINT "ERROR AT ";WIA;". ", \n9104 FOR J=Z0 TO III \n9105 PRINT PEEK (WIA+J);" "; \n9106 NEXT J \n9107 PRINT \n9108 GOTO 9004 \n9120 REM %W%C%O%D \n9121 CLS \n9122 PRINT ,," T$(345,3) TABLE FOR DECODING","MOST Z80 INSTRUCTIONS.",,,"N VALUES INTERPRETATION",,, \n9123 FOR N=I TO 345 \n9124 PRINT N;" "; \n9125 FOR K=I TO III \n9126 PRINT CODE T$(N,K);" "; \n9127 NEXT K \n9128 PRINT , \n9129 FOR K=I TO III \n9130 PRINT W$(CODE T$(N,K));" "; \n9131 NEXT K \n9132 PRINT \n9133 NEXT N \n9134 STOP \n9135 REM %W%S%T%R \n9136 CLS \n9137 PRINT ,," W$(120,4) ARRAY FOR MNEMONICS.",,, \n9138 FOR N=I TO 120 \n9139 PRINT TAB VI;"W$(";N;")=","""";W$(N);"""" \n9140 NEXT N \n9141 STOP \n9142 GOTO WCOD \n9200 REM %E%D%I%T \n9201 CLS \n9202 LET L=9228 \n9203 LET M=9317 \n9206 PRINT ,,"% %M%A%C%H%I%N%E% %L%A%N%G%U%A%G%E% %E%D%I%T%O%R% ",,,"WHERE ABOVE 16759? START "; \n9207 INPUT B \n9208 PRINT B,"SELECT BY NO." \n9209 FOR N=VI TO F4+I \n9210 PRINT AT N,F4;" " \n9211 NEXT N \n9212 PRINT AT IV,XX;"NOW ";B \n9213 PRINT ,," 1 SINGLE BYTE",," 2 DOUBLE BYTE",," 3 LD HL,(NN)",," 4 LD (NN),HL",," 5 PUSH SEQ",," 6 LD (NN),BC",," 7 LD BC,(NN)",," 8 LD (NN),DE",," 9 LD DE,(NN)",,"10 SBC HL,BC",,"11 ADC HL,BC",,"12 SBC HL,DE",,"13 ADC HL,DE",,"14 JUMPS",,"15 %Q%U%I%T" \n9214 INPUT N \n9215 IF N<I OR N>F4-II THEN GOTO M \n9216 PRINT AT N+FIV,F4;"% " \n9217 GOTO L-F4+VI*N \n9218 INPUT K \n9219 IF K<0 OR K>FF THEN GOTO M \n9220 POKE B,K \n9221 LET B=B+I \n9222 GOTO 9209 \n9224 INPUT K \n9225 IF K<0 OR K>=F8*F8 THEN GOTO M \n9226 POKE B+I,INT (K/F8) \n9227 POKE B,K-F8*INT (K/F8) \n9228 LET B=B+II \n9229 GOTO 9209 \n9236 POKE B,XXX+N \n9237 LET B=B+I \n9238 GOTO L-IV \n9242 POKE B,245 \n9243 POKE B+I,213 \n9244 POKE B+II,229 \n9245 LET B=B+I \n9246 GOTO L \n9266 POKE B,237 \n9267 POKE B+I,XX-I+VIII*N \n9268 LET B=B+II \n9269 GOTO L-IV \n9290 POKE B,237 \n9291 POKE B+I,VIII*N-F4+II \n9292 GOTO L \n9296 PRINT AT F4,F4;"JUMP TO?" \n9297 INPUT N \n9298 IF N<16760 OR N>=F8*F8 THEN GOTO M \n9299 LET W=(B-N)>F7+I OR B-N<-F7+II \n9300 PRINT AT VI,F4;"WHICH CONDITION?",AT VIII,F4;" 1 DJNZ",AT IX,F4;" 2 NONE",AT TEN,F4;" 3 NZ",AT TEN+I,F4;" 4 Z",AT VI+VI,F4;" 5 NC",AT IX+IV,F4;" 6 C",AT F4-II,F4;" 7 PO",AT F4-I,F4;" 8 PE",AT F4,F4;" 9 P ",AT F4+I,F4;"10 M" \n9301 INPUT S \n9302 IF S<I OR S>TEN THEN GOTO M \n9303 IF W OR S>VI THEN GOTO 9309 \n9304 LET N=N-B-II \n9305 IF N>=F7 THEN LET N=F7-N \n9306 POKE B,VIII+VIII*S \n9307 POKE B+I,N \n9308 GOTO L \n9309 IF S=I THEN GOTO M \n9310 POKE B,170+VIII*S \n9311 IF S=II THEN POKE B,195 \n9312 LET B=B+I \n9313 LET P3=INT (N/F8) \n9314 POKE B,N-F8*P3 \n9315 POKE B+I,P3 \n9316 GOTO L \n9317 CLS \n9318 PRINT AT IX,Z0;"%Q%U%I%T OR AN ERROR HAS OCCURRED. THE LAST LOCATION WAS ";B;".","CONTINUE FOR DISASSEMBLER." \n9319 STOP \n9320 GOTO DISA \n9449 REM %S%E%A%R%C%H \n9450 CLS \n9451 LET Q=Z0 \n9452 LET E=I \n9453 PRINT ,,"OBJECTIVE/TITLE?", \n9454 INPUT G$ \n9455 PRINT AT I,Z0;G$;" ";AT II,Z0;"PRINT? %YES OR %NO", \n9456 LET W=Z0 \n9457 INPUT H$ \n9458 IF LEN H$ THEN IF H$(I)="Y" THEN LET W=I \n9459 PRINT AT II,Z0;"INPUT YOUR CODE ", \n9460 INPUT L \n9461 IF L>FF THEN GOTO 9481 \n9462 PRINT AT II,Z0;"IF DOUBLE BYTE, ENTER ""D""" \n9463 INPUT H$ \n9464 IF LEN H$ THEN IF H$(I)="D" THEN GOTO 9481 \n9465 POKE 17015+E,L \n9466 LET E=E+I \n9467 PRINT AT II,Z0;"ANOTHER ENTRY? %YES OR %NO", \n9468 INPUT H$ \n9469 IF LEN H$ THEN IF H$(I)="Y" THEN GOTO 9459 \n9470 CLS \n9471 IF NOT W THEN PRINT ,,G$ \n9472 IF W THEN LPRINT G$ \n9473 POKE 17125,E-I \n9474 LET K=USR 16860 \n9475 GOTO 9477 \n9476 LET K=USR 16809 \n9477 LET Q=Q+I \n9478 IF K=55555 THEN GOTO 9486 \n9479 GOSUB 9490+II*W \n9480 GOTO 9476 \n9481 LET P2=INT (L/F8+II**-IX) \n9482 POKE 17016+E,P2 \n9483 POKE 17015+E,L-F8*P2 \n9484 LET E=E+II \n9485 GOTO 9467 \n9486 IF NOT W THEN PRINT "$";Q-I \n9487 IF W THEN LPRINT "$";Q-I \n9488 STOP \n9489 GOTO SEARCH \n9490 PRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I) \n9491 RETURN \n9492 LPRINT K-I;TAB TEN;PEEK K;TAB 15;PEEK (K+I);TAB XX;PEEK K+F8*PEEK (K+I) \n9493 RETURN \n9499 STOP \n9500 REM %V%L%S%T \n9501 CLS \n9502 PRINT ,,,," %V%A%R%I%A%B%L%E%S",,, \n9503 LET E=16400 \n9504 GOSUB DB \n9505 LET L=E-I \n9506 LET T=Z0 \n9507 LET T=T+I \n9508 LET L=L+I \n9509 LET B=L \n9510 IF LEN H$>I THEN IF H$( TO II)="H$" THEN GOSUB VLST+XX \n9511 LET CH=PEEK L \n9512 PRINT TAB III-LEN STR$ T;T;" "; \n9512 LET TP=INT (CH/F5) \n9514 LET CH=CH-TP*F5+F5 \n9515 LET H$=CHR$ CH \n9516 GOSUB VLST-F5+F5*TP \n9517 LET E=TP=II OR TP=VI \n9518 IF E THEN PRINT H$;TAB XX+VI;B \n9519 IF NOT E THEN PRINT H$;TAB XX+III-LEN STR$ Q;Q;TAB XX+VI;B \n9520 GOTO VLST+VI \n9521 PRINT ,," %E%N%D% %O%F% %L%I%S%T ";L \n9522 LET H$="***" \n9523 STOP \n9524 GOTO VLST \n9532 REM %S%T%R%I%N%G \n9533 LET H$=H$+"$ " \n9534 LET E=L+I \n9535 GOSUB DB \n9536 FOR Q=I TO (E AND E<F4)+(F4 AND E>=F4) \n9537 LET H$=H$+CHR$ PEEK (L+II+Q) \n9538 NEXT Q \n9539 LET L=L+II+E \n9540 RETURN \n9564 REM %S%I%N%G%L \n9565 LET Q=VAL H$ \n9566 LET L=L+FIV \n9567 RETURN \n9596 REM %N%(%) \n9597 LET H$=H$+"(" \n9598 LET I$=H$ \n9599 LET S=PEEK (L+III) \n9600 FOR Q=I TO S \n9601 LET E=L+II+II*Q \n9602 GOSUB DB \n9603 IF Q>=S THEN GOTO VLST+105 \n9604 LET H$=H$+STR$ E+"," \n9605 LET I$=I$+"1," \n9606 NEXT Q \n9607 LET H$=H$+STR$ E+")" \n9608 LET I$=I$+"1)" \n9609 LET Q=VAL I$ \n9610 LET E=L+I \n9611 GOSUB DB \n9612 LET L=L+II+E \n9613 RETURN \n9628 REM %M%U%L%T \n9629 LET L=L+I \n9630 LET CH=PEEK L \n9631 IF INT (CH/F6)=II THEN GOTO VLST+133 \n9632 LET H$=H$+CHR$ CH \n9633 GOTO VLST+F7 \n9634 LET H$=H$+CHR$ (CH-F7) \n9635 LET Q=VAL H$ \n9636 LET L=L+FIV \n9637 RETURN \n9660 REM %$%(%) \n9661 LET H$=H$+"$(" \n9662 LET S=PEEK (L+III) \n9663 FOR Q=I TO S \n9664 LET E=L+II+II*Q \n9665 GOSUB DB \n9666 IF Q>=S THEN GOTO VLST+168 \n9667 LET H$=H$+STR$ E+"," \n9668 NEXT Q \n9669 LET H$=H$+STR$ E+")" \n9670 LET E=L+VI \n9671 LET U=L+III+II*S \n9672 GOSUB DB \n9674 FOR Q=U TO U+(E AND E<F4)+(F4 AND E>=F4) \n9675 LET H$=H$+CHR$ PEEK Q \n9676 NEXT Q \n9677 GOTO VLST+109 \n9692 REM %F%-%N \n9693 LET Q=VAL H$ \n9694 LET H$=H$+" FOR-NEXT" \n9695 LET L=L+XX-III \n9696 RETURN \n9697 REM %D%T%B \n9698 FOR J=LEN I$ TO I STEP -I \n9699 IF I$(J)=" " THEN NEXT J \n9700 LET I$=I$( TO J) \n9701 RETURN \n9702 REM %D%B \n9703 LET E=F8*PEEK (E+I)+PEEK E \n9704 RETURN \n9705 REM %S%R%C%H \n9706 CLS \n9707 PRINT AT IX,I;"WRITE YOUR STRING WITHOUT LINE NUMBER. ADD A QUOTE AND PRECEDESTRING WITH",,,," LET H$=""",,,," THEN ENTER AND CONTINUE." \n9708 LET E=17116 \n9709 STOP \n9710 POKE E+IX,LEN H$ \n9711 POKE E-I,247 \n9712 POKE E,66 \n9713 LET K=PEEK 16396+F8*PEEK 16397-17143 \n9714 LET S=INT (K/F8) \n9715 LET K=K-F8*S \n9716 POKE E+III,K \n9717 POKE E+IV,S \n9718 FOR E=I TO LEN H$ \n9719 POKE (E+17015),CODE H$(E) \n9720 NEXT E \n9721 CLS \n9722 PRINT ,,"""";H$;"""";TAB Z0;,, \n9723 LET K=USR 16809 \n9724 IF K=55555 THEN GOTO 9740 \n9727 LET Q=K \n9728 LET Q=Q-I \n9729 IF PEEK Q<>118 THEN GOTO 9728 \n9730 IF K-Q<IV THEN GOTO 9723 \n9732 LET E=F8*PEEK (Q+I)+PEEK (Q+II) \n9733 LET K=F8*PEEK (Q+IV)+PEEK (Q+III) \n9734 LET I$="" \n9735 FOR Q=Q+FIV TO Q+III+K \n9736 LET I$=I$+CHR$ PEEK Q \n9737 NEXT Q \n9738 PRINT E;TAB FIV;I$ \n9739 GOTO 9723 \n9740 PRINT ,," % %S%E%A%R%C%H% %C%O%M%P%L%E%T%E% " \n9741 STOP \n9742 GOTO 9706 \n9750 REM %S%P%Y \n9751 PRINT AT XX+I,Z0;"LOOK AT NO./%QUIT/%HIGHER/%L0WER" \n9752 INPUT H$ \n9753 IF H$<>"Q" THEN GOTO 9755 \n9754 STOP \n9755 IF H$<>"H" THEN GOTO 9758 \n9756 LET B=B+F4 \n9757 GOTO 9762 \n9758 IF H$<>"L" THEN GOTO 9761 \n9759 LET B=B-F4 \n9760 GOTO 9762 \n9761 LET B=VAL H$ \n9762 CLS \n9763 FOR E=B TO B+XX+I \n9764 PRINT E;TAB VI;PEEK E;TAB TEN;":";CHR$ PEEK E;":";TAB XX;F8*PEEK (E+I)+PEEK E \n9765 NEXT E \n9766 GOTO 9752 \n9800 REM %P%U%R%G \n9801 LET N(1)=USR 16900 \n9802 REM %I%N%I%T%I%A%L%I%Z%A%T%I%O%N%S \n9810 LET I=1 \n9811 LET Z0=I-I \n9812 LET II=I+I \n9813 LET III=II+I \n9814 LET IV=II+II \n9815 LET FIV=IV+I \n9816 LET VI=IV+II \n9817 LET VII=VI+I \n9818 LET VIII=IV+IV \n9819 LET IX=VIII+I \n9820 LET TEN=IX+I \n9821 LET XX=II*TEN \n9822 LET XXX=30 \n9823 LET F4=II*VIII \n9824 LET F5=II*F4 \n9825 LET F6=II*F5 \n9826 LET F7=II*F6 \n9827 LET F8=256 \n9828 LET FF=F8-I \n9829 LET IK=I/F8/F8 \n9840 REM %K%E%Y%S \n9841 LET VLST=9501 \n9842 LET DB=9703 \n9843 LET PURG=9801 \n9844 LET MEM=9916 \n9845 LET ZZ=9953 \n9846 LET ZZZ=ZZ-I \n9847 LET ZZZZ=ZZ-II \n9848 LET SAVE=9900 \n9849 LET SYSV=9928 \n9850 LET MAP=8101 \n9851 LET SEARCH=9450 \n9852 LET SRCH=9706 \n9853 LET HELP=9961 \n9854 LET SPY=9751 \n9855 LET DISA=9000 \n9856 LET ERR=9103 \n9857 LET DTB=9698 \n9858 LET WCOD=9121 \n9859 LET WSTR=9136 \n9860 LET NTRY=HELP \n9861 LET EDIT=9201 \n9892 CLS \n9893 PRINT ,,,,"* TO DELETE STRINGS AND ARRAYS, REDIMENSION THEM TO ZERO." \n9894 PRINT ,," DIM (NAME)$(0) OR" \n9895 PRINT ,," DIM (NAME)(0)" \n9896 PRINT ,," THIS WILL PULL ERROR 3/0 BUT"," THE JOB IS DONE." \n9897 STOP \n9898 GOTO VLST \n9899 REM %S%A%V%E \n9900 CLS \n9901 PRINT ,,,,"""";Z$;""" IS TO BE SAVED.",,,"START RECORDER. PRESS ANY KEY.",,,Q$,, \n9902 PRINT "MODE IS ";"LOOPING" AND NOT (NTRY-SAVE);"HELP" AND NOT (NTRY-HELP);"LOAD-AND-GO" AND NOT (NTRY-1000) \n9903 SLOW \n9904 IF NTRY<>SAVE THEN PAUSE 40000 \n9905 FOR N=F6 TO I STEP -I \n9906 UNPLOT N-I,XXX \n9907 NEXT N \n9908 SAVE Z$ \n9909 FAST \n9910 CLS \n9911 PRINT Y$;X$ \n9912 PRINT AT IX+VI,VII;"PRESENTS***" \n9913 GOSUB ZZZ \n9914 GOTO NTRY \n9915 REM %M%E%M \n9916 LET L=F8*(PEEK 16387-PEEK 16413)+PEEK 16386-PEEK 16412 \n9917 LET E=INT (L/F5/F5) \n9918 PRINT AT IX,Z0;"MEMORY LEFT IS:";E;" K, ";L-F5*F5*E;" BYTES.",,,"(";L;" BYTES)" \n9919 IF L<F8+XX THEN PRINT ,,"CAUTION: LIST EDITING MAY BE IMPAIRED." \n9920 STOP \n9921 GOTO MAP \n9927 REM %S%Y%S%V \n9928 LET E=II*CODE D$-75 \n9929 IF E<I OR E>13 THEN GOTO 9933 \n9930 LET E$="10141824260002" \n9931 LET E=VAL E$(E TO E+I)+16386 \n9932 LET D$=STR$ (F8*PEEK (E+I)+PEEK E) \n9933 RETURN \n9950 REM %S%L%E%E%P \n9951 LET ZZ=ZZ+F8 \n9952 LET ZZ=ZZ+F7 \n9953 LET ZZ=ZZ+F6 \n9954 LET ZZ=ZZ+F5 \n9955 LET E=ZZ-ZZZ+F5 \n9956 LET ZZ=ZZZ+I \n9957 PAUSE E \n9958 POKE 16437,FF \n9959 RETURN \n9960 REM %H%E%L%P \n9961 CLS \n9962 LET PAGE=I \n9963 LET H$="% %H%E%L%P% PAGE " \n9964 PRINT AT I,IX;H$;PAGE \n9965 PRINT ,,"* USE GOTO FOR DESIRED LOCATION,",,"* LET Z$=""(YOUR PROGRAM NAME)""",,,"* LET NTRY=1000 IF YOU WANT YOUR PROGRAM TO RUN AFTER LOADING." \n9966 PRINT ,,"* Z$=""";Z$;"""" \n9967 LET I$="% %K%E%Y%W%O%R%D% %L%I%N%E% %F%U%N%C%T%I%O%N% " \n9968 PRINT ,,I$,"""HELP"" 9960 HERE.","""VLST"" 9500 VARIABLE LIST.","""MEM"" 9915 AVAILABLE MEMORY. ""SAVE"" 9900 SAVE PROGRAM," \n9969 PRINT """NTRY"" HELP UNLESS CHANGED." \n9970 PRINT """PURG"" 9800 DELETE VARIABLES." \n9971 PRINT """MAP"" 8100 MEMORY MAP." \n9972 PRINT """SPY"" 9750 LOOK AT MEMORY." \n9973 PRINT """DISA"" 9000 DISASSEMBLE." \n9974 LET PAGE=II \n9975 PRINT \n9976 CLS \n9977 PRINT AT I,IX;H$;PAGE,,,I$ \n9978 PRINT """WCOD"" 9120 DECODE TABLE." \n9979 PRINT """WSTD"" 9135 MNEMONICS." \n9980 PRINT """SRCH"" 9705 BASIC CODE." \n9981 PRINT """SEARCH"" 9450 ROM SPACE." \n9982 PRINT """EDIT"" 9200 MACH CODE." \n9983 PRINT "*""GOTO VLST"" CODES AS:"," :236:V:L:S:T: (5 BYTES)" \n9984 PRINT "*""GOTO 9500"" CODES AS:"," :235:9:5:0:0:126:EXP:B4:B3:B2:B1:B0: (12 BYTES)" \n9985 PRINT "* USING VARIABLES IN PLACE OF NUMBERS CAN SAVE MEMORY." \n9986 PRINT "* USE:Z0,I,II,III,IV,FIV,VI,VII,VIII,IX,TEN,XX,XXX IN PLACE OF:0,1,2,3,4,5,6,7,8,9,10,20,30." \n9987 PRINT "* LIST 9802 TO SEE." \n9988 STOP \n9989 GOTO HELP \n9997 REM %M%/%L% %C%0%D%E% %T%E%M%P%L%A%T%E%S \n9998 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0....... /\.' \n9999 REM .........1.........2.........3.........4.........5.........6.........7.........8.........9.........0.........1....... /\.'
Scroll to Top