5 MAXFILES=1:DEFINTA-Z 10 E$=CHR$(27):VL$=E$+"V":VU$=E$+"W":VR$=E$+"p":VN$=E$+"q":EK$=E$+"K":CN$=E$+"Q":CY$=E$+"P" 15 IPL:GOSUB80:IFBN<0THEN900ELSEIFSS=42THEN310ELSEIFSS=75THEN510 20 GOSUB54:GOSUB51 25 GOSUB70:OUT128,(BN*8)+32 30 POKE65450,0:GOTO30 50 CLS:N=40-LEN(S$):M=N/2:N=N-M:PRINTVR$SPACE$(M)S$SPACE$(N)VN$;:RETURN 51 PRINT@280,VR$VL$"Bank Load Save Name Kill .... XR4* Menu "VN$CN$; 52 ONKEYGOSUB100,200,300,400,500,600,700,800:KEYON:PRINT@40,;:CALL910'? 53 RETURN 54 S$="XR4MNUe (c) 1992 EME Systems":GOSUB50:RETURN 60 S$="file not found":L=7 61 BEEP:CLOSE:PRINT@(L-1)*40,S$EK$;:FORJ=1TO700:NEXT:RETURN 70 OUT128,BN*8:XR=0:XP=32239:CALL910': 71 RETURN 80 XP=31280:GOSUB85:IFXR!<>35405THEN81ELSEXP=64:GOSUB85:IFXR!=21080THEN82 81 BN=-1:BB=ABS(PEEK(63850)-48)MOD16:RETURN 82 XP=69:XR$=SPACE$(4):CALL910'[ 83 BB=VAL(MID$(XR$,2)):BN=BB-1:BA=BN*8:POKE63850,BB+48:NB=VAL(RIGHT$(XR$,1)):SS=ASC(XR$):RETURN 85 GOSUB86:CALL64712,,XP:XR=PEEK(64722):CALL64712,,XP+1:XR!=XR+256*PEEK(64722):RETURN 86 RESTORE87:ONERRORGOTO0:CS=0:FORAD!=64704TO64733:READD:POKEAD!,D:CS=CS+D:NEXTAD!:IFCS<>5489THENBEEP:PRINT"typo";CS:ENDELSERETURN 87 DATA 71,205,211,252,112,195,217,252,205,211 88 DATA 252,126,50,210,252,195,217,252,0,243 89 DATA 62,1,211,224,201,175,211,224,251,201 100 BN=(BN+1)MODNB:OUT128,BN*8+32:RUN 200 KEYOFF:PRINT@240,"File to load"EK$;:A$="":INPUTA$:XR$=A$:IFA$=""THENRUNELSEXP=0:CALL910'= 205 IFXP=0THENGOSUB60:GOTO200 210 IFINSTR(A$,".D")ORINSTR(A$,".d")THEN225 215 CLS:PRINT"Wait..":CALL910'+ 220 IFXR=0THENRUNELSEIFXR=1THENGOSUB60:RUNELSECALL910';; 221 PRINT@280,"Clear";65536+XR;"for "A$"? (Y/N)"CY$; 222 R$=INKEY$:IFR$=""THEN222ELSEPRINTR$CN$;:R=ASC(R$)OR32:IFR=121THENCLEARFRE(""),65536+XR:RUNELSEIFR=110THENRUNELSE221 225 CLS:S$="RAM files:":GOSUB50:FILES:B$=A$:PRINT@280,"load as"EK$VU$;:INPUTB$ 230 ONERRORGOTO250:OPENB$FOROUTPUTAS1:ONERRORGOTO255 235 CLS:PRINT"loading..":CALL910'+1 240 ONERRORGOTO0:CLOSE:GOSUB50:GOSUB51:GOTO200 250 S$="Bad fileSpec":L=7:GOSUB61:RESUME225 255 L=8:S$="failed!":GOSUB61:RUN 300 KEYOFF:GOSUB745:XP=69:XR=42:CALL910': 305 IPL:CALL910'* 310 KEYSTOP:S$="RAM files":GOSUB50:GOSUB51:PRINT@240,"File to save"EK$;:A$="":INPUTA$:XR$=A$:IFA$=""THEN350ELSEXP=0:CALL910'= 315 IFXP=0THENGOSUB60:RUN 320 IFINSTR(A$,".D")ORINSTR(A$,".d")THEN325ELSEPRINT@240,".DO files only!"EK$;:GOTO340 325 CLS:S$="XR files:":GOSUB50:FILES:B$=A$:PRINT@280,"save as"EK$VU$;:INPUTB$ 330 ONERRORGOTO360:OPENB$FOROUTPUTAS1:ONERRORGOTO365 335 CLS:PRINT"Saving..";:CALL910'+1 340 RUN 350 IPL:GOSUB745:XP=69:XR=95:CALL910': 351 CALL910'* 360 S$="Bad fileSpec":L=7:GOSUB61:RESUME325 365 PRINT@280,"failed!"EK$;:RESUME340 400 KEYOFF:A$="":PRINT@240,"File to rename"EK$;:INPUTA$:IFA$=""THENRUNELSEXR$=A$:XP=0:XR=0:CALL910'= 405 IFXR=0THENBEEP:RUN 410 B$="":PRINT@240,"as"EK$;:INPUTB$:IFB$=""THENRUN 415 IFINSTR(B$,".")THENB$=LEFT$(B$,INSTR(B$,".")-1) 420 B$=LEFT$(B$,6):B=LEN(B$):B$=B$+SPACE$(6-B) 425 FORJ=1TOB:A=ASC(MID$(B$,J,1)):IFA>96ANDA<123THENA=A-32:MID$(B$,J,1)=CHR$(A):NEXTELSENEXT 430 A=ASC(B$):IFA<65ORA>122THENBEEP:GOTO410 435 XR$=B$+".DO":XN=XR+3:XP=0:CALL910'= 440 IFXRTHENBEEP:RUN 445 XR$=B$:XP=XN:OUT128,BN*8:CALL910'] 450 RUN 500 KEYOFF:GOSUB745:XP=69:XR=75:CALL910': 505 IPL:CALL910'* 510 CLS:S$="XR files":GOSUB50:FILES:PRINT@280,"File to kill"EK$;:A$="":INPUTA$:IFA$=""THEN520 515 ONERRORGOTO530:KILLA$:RUN 520 IPL:GOSUB745:XP=69:XR=95:CALL910': 525 CALL910'* 530 L=8:S$="Bad fileSpec":GOSUB61:RESUME510 600 RETURN 700 KEYOFF:CLS:GOSUB54:PRINT" 0) Exit to previous screen":PRINT" n) Switch to bank n (n=1 to 4)":PRINT" *) Swap RAM with XR4":PRINT" $) Save RAM to XR4" 705 PRINT" !) Load XR4 to RAM":PRINT@280," Choice (0,1->4,*,$,!)"CY$; 710 A$=INKEY$:IFA$=""THEN710 715 PRINTA$CN$;:A=VAL(A$):IFATHEN720ELSEIFA$="*"THEN725ELSEIFA$="$"THEN730ELSEIFA$="!"THEN740ELSERUN 720 A=(A-1)MOD4:OUT128,A*8+32:POKE63850,A+49:RUN 725 GOSUB745:CALL910'* 730 A$="!RAM overwrite XR bank"+STR$(BB)+" (Y/N)?":GOSUB743:GOSUB745:CALL910'$ 735 RUN 740 A$="!XR bank"+STR$(BB)+" overwrite RAM (Y/N)?":GOSUB743:GOSUB745:CALL910'! 743 PRINT@280,EK$A$CY$; 744 R$=INKEY$:IFR$=""THEN744ELSEPRINTR$CN$;:R=ASC(R$)OR32:IFR=121THENRETURNELSEIFR=110THENRUNELSE743 745 CLS:PRINT"wait.."; 750 OUT128,BN*8:XR$="XR4MNJ.BA"+CHR$(13)+CHR$(0):XP=32239:CALL910'] 755 RETURN 800 MENU 900 CLS:GOSUB1000:X$=X$(BB):GOSUB54 905 PRINT" Current bank"BB" is "X$:PRINT" 0) exit to menu":PRINT" n) n=1 to 4--switch to bank n":PRINT" 8) deactivate "X$:PRINT" 9) activate "X$:PRINT@280," choice (0,1->4,8,9)"CY$; 910 A$=INKEY$:IFA$=""THEN910ELSEPRINTA$CN$;:A=VAL(A$) 915 ONAGOTO920,920,920,920,,,,925,930:MENU 920 GOSUB940:OUT128,(A-1)*8+32:POKE63850,A+48:RUN 925 GOSUB940:RUN 930 GOSUB940:CALL63012:RUN 940 PRINT" OK..";:CALL32454:FORK=0TO36:POKE62981+K,PEEK(879+K):NEXT 941 FORI=-1639TO-1441STEP11:IFPEEK(I)=240THENPOKEI,0 942 NEXT:POKE65006,0:POKE65450,0:FORK=0TO7:CALL64712,,64+K:POKE64164+K,PEEK(64722):NEXT:RETURN 1000 'rom names 1001 X$(1)="?? 1002 X$(2)="?? 1003 X$(3)="?? 1004 X$(4)="?? 1005 RETURN