1 ' MEMOMASTER V2.1 (c) by G.S. 05-03-1993 50 CLS:C$=CHR$(5):CLEAR:PRINT "MEMOMASTER V2.1"; 100 RESTORE#: RESTORE# "\\\\Conf",,130 110 READ#$,STC1,STC2,ADR,ZMOD,HEX,DPL 120 GOTO 150 130 STC1=999:STC2=999 150 DEFCHR$(252)="FE8AAAA2FE" 151 DEFCHR$(253)="FEBE82FEFE" 152 DEFCHR$(254)="FEA2AA8AFE" 153 DEFCHR$(255)="FE82AEAEFE" 200 DEFSEG=ADR\32*2:ADP=ADR MOD32 210 IF DPL=0 THEN DI$=" *** MEMOMASTER V2.1 *** DISPL:0":GOTO 270 220 DI$="":FOR A=0 TO 31:B=PEEK(A) 225 IF B=STC1 THEN DI$=DI$+CHR$(253):GOTO 260 226 IF B=STC2 THEN DI$=DI$+CHR$(254):GOTO 260 230 IF B>31 AND B<252 AND B<>127 THEN DI$=DI$+CHR$(B) 235 IF B=127 THEN DI$=DI$+" " 240 IF B<32 THEN DI$=DI$+CHR$(252) 245 IF B<255 AND B>251 THEN DI$=DI$+CHR$(251) 250 IF B=255 THEN DI$=DI$+CHR$(255) 260 CLS:PRINT DI$;:NEXT A 270 IF ZMOD THEN ADZ=(PEEK(ADP)+PEEK(ADP+1)*256) ELSE ADZ=(PEEK(ADP)+PEEK(ADP+1)*256+PEEK(ADP+2)*65536) 271 IF HEX=0 THEN ADZ$=STR$(ADZ) ELSE ADZ$=" "+RIGHT$(HEX$(ADZ\65536),2)+HEX$(ADZ MOD65536) 272 IF ZMOD THEN ADZ$=ADZ$+"*" 280 IF HEX=1 THEN 285 283 CLS:PRINT DI$;"{";MID$(STR$(ADR\32*32)+" ",2,7);"}{";MID$(STR$(PEEK(ADP))+" ",2,3);"}{";MID$(STR$(ADR)+" ",2,7);"}{";MID$(ADZ$+" ",2,7);"}";CHR$(9);:GOTO 290 285 CLS:PRINT DI$;"{";MID$(RIGHT$(HEX$(ADR\65536),1)+HEX$(ADR MOD65536\32*32)+" ",1,7);"}{";MID$(HEX$(PEEK(ADP)),3,2);"H}{";MID$(RIGHT$(HEX$(ADR\65536),1)+HEX$(ADR MOD65536)+" ",1,7);"}{";MID$(ADZ$+" ",2,7);"}";CHR$(9);:GOTO 290 290 IF DPL THEN LOCATE ADR MOD32,0 ELSE LOCATE 31,0 291 $=INPUT$(1):IF $=CHR$(14) OR $=CHR$(4) THEN PRINT $;:GOTO 290 292 IF $="L" THEN 600 293 IF $="Z" THEN IF DPL=0 THEN DPL=1:GOTO 200 ELSE DPL=0:GOTO 200 295 IF $=CHR$(29) AND ADR>0 THEN IF ADR MOD32>0 THEN ADP=ADP-1: ADR=ADR-1:GOTO 270 ELSE ADR=ADR-1:GOTO 200 296 IF $=CHR$(28) THEN IF ADR MOD32<31 THEN ADP=ADP+1: ADR=ADR+1:GOTO 270 ELSE ADR=ADR+1:GOTO 200 297 IF $=CHR$(31) THEN ADR=ADR+32:GOTO 200 298 IF $=CHR$(30) AND ADR>31 THEN ADR=ADR-32:GOTO 200 299 IF $="U" THEN IF HEX=1 THEN HEX=0:GOTO 270 ELSE HEX=1:GOTO 270 300 IF $=CHR$(251) THEN LOCATE15,1:INPUT @7;A$:A$=LEFT$(A$,7):LOCATE0,0:ADR=VAL(A$):GOTO 200 301 IF $="R" THEN LOCATE10,1:INPUT @3;A$:LOCATE0,0: A$=LEFT$(A$,3):IF LEN(A$)>1 THEN A=VAL(A$):POKE ADP,A:GOTO 200 ELSE POKE ADP,ASC(A$):GOTO 200 320 IF $="Y" THEN ZMOD=NOT ZMOD:GOTO 270 330 IF $="E" THEN 450 340 IF $=CHR$(2) THEN LOCATE15,1:PRINT "- ";:LOCATE 16,1:INPUT @6;A$:LOCATE0,0:ADR=ADR-VAL(A$):ADR=ADR*-((SGN ADR)=1):GOTO 200 341 IF $=CHR$(6) THEN LOCATE15,1:PRINT "+ ";:LOCATE 16,1:INPUT @6;A$:LOCATE0,0:ADR=ADR+VAL(A$):ADR=ADR*-((SGN ADR)=1):GOTO 200 345 IF $=CHR$(11) THEN ADR=ADR\32*32:ADP=0:GOTO 270 350 IF $="\" THEN 400 365 IF $="T" THEN 500 370 IF $="P" THEN 1 399 GOTO 290 400 CLS:PRINT "SAVE SETTINGS"; 410 RESTORE#:RESTORE#"\\\\Conf",,420 420 WRITE# :WRITE#"\\\\Conf,"+STR$(STC1)+","+STR$(STC2)+","+STR$(ADR)+","+STR$(ZMOD)+","+STR$(HEX)+","+STR$(DPL) 430 GOTO 200 450 LOCATE 24,1:INPUT @7;A$:A$=LEFT$(A$,7):LOCATE 0,0 455 A=VAL(A$) 460 IF ZMOD THEN POKE ADP,A MOD256:POKE ADP+1,A\256 ELSE POKE ADP,A MOD256:POKE ADP+1,A MOD 65536 \256:POKE ADP+2,A\65536 470 GOTO 200 500 CLS:PRINT "CHANGE";STC1;" BY";CHR$(253);:LOCATE 7,0:INPUT @3;A$:STC1=VAL(LEFT$(A$,3)) 510 CLS:PRINT "CHANGE";STC2;" BY";CHR$(254);:LOCATE 7,0:INPUT @3;A$:STC2=VAL(LEFT$(A$,3)) 520 GOTO 200 600 CLS:PRINT "Search from";ADR;CHR$(13);"[1] STRING$ [2] ASCII [.] END"; 610 $=INPUT$(1,@) 620 IF $="." THEN 270 630 IF $="1" THEN 660 640 IF $="2" THEN 680 650 GOTO 610 660 CLS:INPUT "ASCII:"+CHR$(13);@64;SCI$ 670 SU$="": FOR SCHL=1 TO LEN(SCI$):SXS=ASC(MID$(SCI$,SCHL,1)):SU$=SU$+MID$(STR$(SXS)+" ",2,3):NEXT SCHL 675 GOTO 700 680 CLS:INPUT "ASCII [3]"+CHR$(13);@192;SU$ 700 CLS:INPUT "Stop search at:";@7;ABB 710 SUB=ADR 720 DEFSEG=SUB\16 730 IF PEEK(SUB MOD16)=VAL(LEFT$(SU$,3) THEN 770 740 IF INKEY$="." THEN 270 750 SUB=SUB+1: CLS:PRINT SUB;:IF SUB0 THEN 270 ELSE 720 770 SUB2=1 780 IF PEEK(SUB MOD16+SUB2)=VAL(MID$(SU$,SUB2*3+1,3)) THEN SUB2=SUB2+1:IF SUB2*3>=LEN(SU$) THEN 790 ELSE 780 ELSE 750 790 ADR=SUB:PRINT " *"; 795 GOTO 200