100 MODE 7 110 PROCscreen 120 PROCinit 130 PROCassemble 140 PROCload 150 ON ERROR GOTO 1730 160 REPEAT 170 ON FNMENU(1) GOSUB 880,950,1140,1160,1220,1250,1280,1430,1670 180 UNTIL FALSE 190 DEFPROCscreen 200 FOR A%=0 TO 1:VDU 31,0,A%,134,157,129,141,31,15,A%:PRINT"Elite Cheat":NEXT A% 210 VDU 28,0,24,39,2 220 VDU 23,1;0;0;0;0 230 ENDPROC 240 DEFPROCinit 250 @%=0 260 *FX 4,1 270 DIM memory% 40,file% &100,check% 100 280 DIM entries%(8),menu$(8,9),details$(8,9),lazer%(6),rating%(9),status%(3),mission%(5),cargo$(17) 290 X%=&70:Y%=0:A%=0:filesystem%=USR(&FFDA) AND &F 310 FOR A%=0 TO &FF STEP 4:A%!file%=0:NEXT A% 320 !&70=1E3:file%!&B=&446E803:file%?&10=&F:file%?&16=&16:file%?&33=3 330 file%!1=&5A4AD14:file%!5=&B7530248 340 lock%=FALSE 360 FOR A%=1 TO 6:READ lazer%(A%):NEXT A% 370 DATA 0,&F,&8F,&32,&97,&FF 380 FOR A%=1 TO 9:READ rating%(A%):NEXT A% 390 DATA 0,8,&10,&20,&40,&80,&200,&A00,&1900 400 FOR A%=1 TO 3:READ status%(A%):NEXT A% 410 DATA 0,1,50 420 FOR A%=1 TO 5:READ mission%(A%):NEXT A% 430 DATA 0,1,2,&A,&E 440 FOR A%=1 TO 8 450 READ entries%(A%),details$ 460 FOR B%=0 TO entries%(A%) 470 READ menu$(A%,B%) 480 IF details$="I" AND B% READ details$(A%,B%) ELSE IF details$="N" THEN details$(A%,B%)="N" ELSE details$(A%,B%)=details$ 490 NEXT B%,A% 500 IF filesystem%<>4 THEN entries%(1)=7 510 FOR A%=1 TO 17:READ cargo$(A%),files%?(A%+&34):NEXT A% 520 ENDPROC 530 DATA 9,I,MAIN MENU,SET MONEY,!&70/10,ALTER EQUIPMENT,N,ALTER LASERS,N,SET NUMBER OF MISSILES,file%?&33,SET RATING,FNRATING,SET STATUS,FNSTATUS,SET GALAXY,file%?&F+1,ALTER CARGO,N,SET MISSION,FNMISSION 540 DATA 9,I,ALTER EQUIPMENT,FUEL,(file%?&D)/10,CARGO BAY SIZE,(file%?&16)-2,ECM SYSTEM,FNGOT(file%?&28),FUEL SCOOPS,FNGOT(file%?&29),ESCAPE CAPSULE,FNGOT(file%?&2E),ENERGY BOMB,FNGOT(file%?&2A),ENERGY UNIT,FNENERGY 550 DATA DOCKING COMPUTER,FNGOT(file%?&2C),GALACTIC HYPERSPACE,FNGOT(file%?&2D) 560 DATA 4,N,ENERGY UNIT,NOT PRESENT,NORMAL,NAVAL,CHEAT 570 DATA 6,N,LASER TYPE,NONE,PULSE,BEAM,MINING,MILITARY,CHEAT 580 DATA 4,FNLASER,LASER POSITION,FRONT,REAR,LEFT,RIGHT 590 DATA 9,N,COMBAT RATING,HARMLESS,MOSTLY HARMLESS,POOR,AVERAGE,ABOVE AVERAGE,COMPETENT,DANGEROUS,DEADLY,E L I T E 600 DATA 3,N,LEGAL STATUS,CLEAN,OFFENDER,FUGITIVE 610 DATA 5,N,MISSION MENU,BEFORE MISSION 1,DURING MISSION 1,AFTER MISSION 1,DURING MISSION 2,AFTER MISSION 2 620 DATA FOOD,&10,TEXTILES,&F,RADIOACTIVES,&11,SLAVES,0,LIQUOR/WINES,3,LUXURIES,&1C,NARCOTICS,&E,COMPUTERS,0,MACHINERY,0,ALLOYS,&A,FIREARMS,0,FURS,&11,MINERALS,&3A,GOLD,7,PLATINUM,9,GEMS,8,ALIEN ITEMS,0 630 DEFPROCassemble 640 FOR PASS%=0TO2 STEP2 650 P%=check% 660 [OPT PASS% 670 LDX #&49 680 LDA #&49 690 CLC 700 .checkloop 710 ADC file%-1,X 720 EOR file%,X 730 DEX 740 BNE checkloop 750 STA file%+&4B:EOR #&A9:STA file%+&4A:RTS 760 ] 770 NEXT PASS% 780 ENDPROC 790 DEFPROCload 800 PRINTTAB(9,9)"DO YOU WANT TO LOAD A" 810 PRINTTAB(7,12)"PREVIOUS COMMANDER?"; 820 IF NOT(FNYESNO) ENDPROC 830 PROCoscli("LOAD "+FNFILENAME+" "+STR$~(file%)) 840 FOR A%=0TO3:A%?&70=file%?(&C-A%):NEXTA% 850 IF ?file%=1 OR ?file%=6 OR ?file%=&A THEN lock%=TRUE 860 ENDPROC 880 CLS 890 PRINTTAB(9,9)"ENTER AMOUNT OF MONEY" 910 !&70=FNINPUT(14,15,10,&CCCCCCC,TRUE)*10 920 FOR A%=0 TO 3:file%?(&C-A%)=A%?&70:NEXT A% 930 RETURN 950 REPEAT 960 ON FNMENU(2) GOSUB 980,1020,1060,1070,1080,1090,1100,1110,1120 970 UNTIL FALSE 980 CLS:PRINTTAB(7,9)"AMOUNT HYPER FUEL?" 1000 file%?&D=FNINPUT(17,15,4,25.5,TRUE)*10 1010 RETURN 1020 CLS:PRINTTAB(10,9)"ENTER C.BAY SIZE" 1030 file%?&16=FNINPUT(18,11,3,253,FALSE)+2 1040 RETURN 1060 file%?&28=NOT file%?&28:RETURN 1070 file%?&29=NOT file%?&29:RETURN 1080 file%?&2E=NOT file%?&2E:RETURN 1090 file%?&2A=file%?&2A EOR &7F:RETURN 1100 file%?&2B=FNMENU(3)-1:RETURN 1110 file%?&2C=NOT file%?&2C:RETURN 1120 file%?&2D=NOT file%?&2D:RETURN 1140 REPEAT file%?(FNMENU(5)+&F)=lazer%(FNMENU(4)):UNTIL FALSE 1160 CLS 1170 PRINTTAB(8,9)"ENTER AMOUNT MISSILES" 1190 file%?&33=FNINPUT(19,15,3,255,FALSE) 1200 RETURN 1220 file%!&47=rating%(FNMENU(6)) OR (file%!&74 AND &FFFF0000) 1230 RETURN 1250 file%?&34=status%(FNMENU(7)) 1260 RETURN 1280 CLS 1290 RESTORE 1340 1300 PRINTTAB(10,8)"ENTER GALAXY NO." 1310 file%?&F=FNINPUT(19,11,1,8,FALSE)-1 1320 FOR A%=1 TO file%?&F+1:READ file%!1,file%!5:NEXTA% 1330 RETURN 1340 DATA &5A4AAD14,&B7530248 1350 DATA &B4945F60,&6FA60490 1360 DATA &69296F5A,&DE4D0821 1370 DATA &D2526763,&BD9A1042 1380 DATA &A5A45D69,&7B352084 1390 DATA &4B496663,&F66A4009 1400 DATA &96925F6A,&EDD48012 1410 DATA &2D25605E,&DBA90124 1430 CLS 1440 PRINTTAB(22)"QUANTITY QUANTITY" 1450 PRINT" NO. PRODUCT UNIT AS CARGO FOR SALE" 1460 FOR A%=1TO17 1470 PRINTTAB(1);A%;".";TAB(5);cargo$(A%);TAB(18);FNUNIT;TAB(24);(file%?(A%+&16));TAB(33);(file%?(A%+&34)) 1480 NEXT A% 1490 VDU &86,&9D,&81:PRINT" ESCAPE TO MAIN MENU" 1500 REPEAT 1510 PRINTTAB(1,20)"ENTER NO. OF PRODUCT TO ALTER" 1520 number%=FNINPUT(34,20,2,17,FALSE) 1530 PRINTTAB(1,20)"ENTER AMOUNT ";cargo$(number%);SPC13;TAB(1,21)"IN CARGO BAY.";SPC(19) 1540 PRINTTAB(23,number%+1);CHR$(&88);TAB(28,number%+1);CHR$(&89) 1550 file%?(number%+&16)=FNINPUT(14,21,3,255,FALSE) 1560 PRINTTAB(23,number%+1);" ";(file%?(number%+&16));" " 1570 IF number%=17 THEN 1620 1580 PRINTTAB(32,number%+1);CHR$(&88);TAB(36,number%+1);CHR$(&89) 1590 PRINTTAB(1,21)"FOR SALE AT PLANET" 1600 file%?(number%+&34)=FNINPUT(20,21,3,255,FALSE) 1610 PRINTTAB(32,number%+1);" ";(file%?(number%+&34));" " 1620 PRINTTAB(0,20);SPC(119); 1630 UNTIL 0 1640 DEFFNUNIT 1650 IF A%<14 THEN ="t" ELSE IF A%<16 THEN ="kg" ELSE IF A%=16 THEN ="g" ELSE="t" 1670 ?file%=mission%(FNMENU(8)) 1680 IF?file%=1THENfile%!1=&B4942190:file%!5=&6FA60490:file%?&F=1 1690 IF?file%=&ATHENfile%!1=&692954D7:file%!5=&DE4D0821:file%?&F=2 1700 lock%=(?file%=1 OR ?file%=&A) 1710 RETURN 1730 IF INKEY(-1)OR ERR<>17 REPORT:PRINT"AT LINE";ERL:GOTO1800 1740 IF mainmenu%=FALSE THEN160 1750 CLS 1760 mainmenu%=FALSE 1770 PRINT TAB(5,5)"ESCAPE TO RE-EDIT COMMANDER" 1780 FOR A%=10 TO11:PRINT TAB(11,A%)CHR$(&8D);"SAVE COMMANDER.":NEXTA% 1790 CALL check%:PROCoscli("SAVE "+FNFILENAME+" "+STR$~(file%)+" +100 00") 1800 *FX4,0 1810 END 1820 DEFFNYESNO 1830 PRINT"? (Y/N)";CHR$(&88); 1840 REPEAT get%=GET AND &DF:UNTIL get%=&59 OR get%=&4E 1850 VDU get% 1860 REPEAT get2%=GET AND &DF:UNTIL get2%=&59 OR get2%=&4E OR get2%=&D 1870 IF get2%<>&D THEN get%=get2%:VDU &7F:GOTO1850 1880 VDU8,8,32 1890 =get%=&59 1900 DEFFNFILENAME 1910 PRINTTAB(4,15)"ENTER FILENAME "; 1920 VDU23,1,1;0;0;0; 1930 input$="" 1940 REPEAT 1950 REPEAT get%=GET : UNTIL(get%>&1F AND get%<&80) OR get%=&D 1960 IF get%<>&7F THEN 1990 1970 IF LEN(input$) input$=LEFT$(input$,LEN(input$)-1):VDU&7F 1980 GOTO2000 1990 IF(LEN(input$)<10 +(3*(filesystem%=4))) AND (get%<>&D)THEN input$=input$+CHR$(get%):VDUget% 2000 UNTIL get%=&D AND input$<>"" 2010 VDU23,1;0;0;0;0 2020 IF filesystem%=4THEN PRINTTAB(9,19)"ENTER DRIVE NUMBER ":=":"+STR$(FNINPUT(28,19,1,3,FALSE))+".E."+input$ 2030 =input$ 2040 DEFPROCoscli($memory%) 2050 PRINT 2060 X%=memory% MOD &100 2070 Y%=memory% DIV &100 2080 CALL &FFF7 2090 ENDPROC 2100 DEFFNMENU(number%) 2110 VDU23,1;0;0;0;0 2120 CLS 2130 FORA%=0TO1:PRINTTAB((39-LEN(menu$(number%,0)))DIV2,A%)CHR$&8D;menu$(number%,0):NEXTA% 2140 FOR A%=1 TO entries%(number%) 2150 PRINTTAB(3,(A%*2)+1);CHR$(129);A%;".";CHR$(124);menu$(number%,A%); 2160 IF details$(number%,A%)<>"N" PRINTCHR$&82;"(";EVAL(details$(number%,A%));")" 2170 NEXT A% 2180 PRINT TAB(0,21)"ENTER FUNCTION REQUIRED (1-";entries%(number%);")" 2190 PRINT TAB(3,22)"OR ESCAPE TO "; 2200 IF number%=1 PRINT"RE-SAVE COMMANDER";:mainmenu%=TRUE ELSE PRINT"RETURN TO MAIN MENU"; 2210 REPEAT get%=GET-&30:UNTIL get%>0 AND get%<(entries%(number%)+1)AND NOT((get%=7)AND(number%=1)AND lock%) 2220 PRINTTAB(0,(get%*2)+1);CHR$&88 2230 REPEAT get2%=GET:UNTIL (get2%>&30 AND get2%<(entries%(number%)+&31)AND NOT((get2%=&37)AND (number%=1)AND lock%)) OR (get2%=&D) 2240 IF get2%<>&D THEN PRINT TAB(0,(get%*2)+1);" ":get%=get2%-&30:GOTO 2220 2250 mainmenu%=FALSE 2260 =get% 2270 DEFFNSTATUS 2280 Z%=4 2290 REPEAT Z%=Z%-1:UNTIL file%?&34>=status%(Z%) 2300 =menu$(7,Z%) 2310 DEFFNRATING 2320 Z%=10 2330 REPEAT Z%=Z%-1:UNTIL (file%!&47 AND &FFFF)>=rating%(Z%) 2340 =menu$(6,Z%) 2350 DEFFNMISSION 2360 IF ?file%=6 THEN =menu$(8,4) 2370 Z%=0 2380 REPEAT Z%=Z%+1:UNTIL ?file%=mission%(Z%) 2390 =menu$(8,Z%) 2410 DEFFNENERGY 2420 Z%=file%?&2B 2430 IF Z%>3 THEN Z%=3 2440 IF Z%=0 THEN ="NOT PRESENT" ELSE =menu$(3,Z%+1) 2450 DEFFNLASER 2460 Z%=0 2470 REPEAT Z%=Z%+1:UNTIL file%?(A%+&F)=lazer%(Z%) 2480 =menu$(4,Z%) 2490 DEFFNGOT(A%) 2500 IF A% THEN ="PRESENT" ELSE ="NOT PRESENT" 2510 DEFFNINPUT(X%,Y%,L%,max,point%) 2520 LOCAL input$ 2530 VDU 23,1,1;0;0;0; 2540 PRINT TAB(X%,Y%);SPC(L%);TAB(X%,Y%); 2550 input$="" 2560 REPEAT get%=GET:UNTIL(get%>&2F AND get%<&3A)OR (get%=&2E AND point%)OR (get%=&7F)OR (get%=&D) OR (get%=&15) 2570 IF get%=&15 THEN 2540 2580 IF get%<>&7F THEN 2610 2590 IF input$<>"" input$=LEFT$(input$,LEN(input$)-1):VDU &7F 2600 GOTO 2560 2610 IF LEN (input$) THEN P%=INSTR(input$,".") ELSE P%=0 2620 IF get%=&2E AND P% THEN 2560 2630 IF P% AND (P%&D THEN 2560 2640 IF get%<>&D AND LEN(input$)&D OR input$="" THEN 2560 2660 IF VAL(input$)<=max VDU 23,1;0;0;0;0:=VAL(input$) 2670 PRINT '"MAX POSSIBLE VAL. = ";max; 2680 get%=INKEY(100) 2690 GOTO 2540