This is the BASIC program that runs as a substitute for one of the BEX Menus (it is named START because it tricks BEX into thinking it is the STARTING Menu) BEX uses lots of assembly language to set output and input modes U is the location of the start of the configuration information 1E00 hex CD is the location of where most assembly language options execute 7200 hex ST is the location of where most data files are located 8200 hex DK is number of disk drives L2 at the user (intermediate level) i.e. not a beginner L3 at the master (highest level) i.e. expert user line 1200 is the key back translator ]LIST 5 CALL 14 * 256 7 PRINT CHR$ (4);"MAXFILES 1" 15 ST = 130 * 256:CD = 114 * 256: DIR = 149 * 256 20 HOME : HIMEM: 29184 30 D$ = CHR$ (4) 50 U = 30 * 256:EC = 14 * 256:UQ = U + 109 55 DK = PEEK (U + 75):L2 = PEEK (U + 64):L3 = PEEK (U + 65): ZN$ = "]":LS$ = "START" 60 GOSUB 8500 90 DIM CS$(40),CT$(40),DS%(40),D T%(40) 99 H$ = CHR$ (8) + "":ZP = PEEK (lines 1-99 only executed once) (U + 231) 100 POKE U + 86,1: POKE U + 485, (reset things after an option is executed) 0: CALL EC + 21: POKE 216,0: POKE U + 74,145: POKE U + 84,0: POKE 50,255 103 SV = 0:ZX = 0:PX = 0: POKE U + 236,0: POKE U + 90,0:DJ = DK 104 IF PEEK (U + 2) + PEEK (U + (if a blind user, make a beep) 4) + INT ( PEEK (U + 8) / 6) > 0 THEN B = 49200: FOR I = 1 TO 50:A = PEEK (B): NEXT I 110 A$ = "": IF L3 = 0 THEN A$ = " Menu" 112 PRINT "Math";A$;":^"; (display prompt, get a character) 120 GET OP$:OP = ASC (OP$): PRINT OP$ 122 IF OP = 1 THEN GOTO 8200 (control-A execute macro) 123 IF (OP = 18 OR OP = 42) AND (control-R or * record a macro) L2 > 0 THEN GOTO 8000 124 IF OP = 19 AND PEEK (U + 81 (control-S save a macro) ) < > 0 THEN GOTO 8100 125 IF OP = 5 THEN GOTO 8030 (control-E send Echo command) 126 IF OP = 15 THEN GOTO 8035 (control-O output command seq. to synthesizer) 127 IF OP = 4 THEN PRINT CHR$ (control-D load this disk to Ram drive) (4);"RUN MRAM" 128 IF OP = 28 THEN INPUT "";A: (ASCII 28 - poke a direct value into BEX configuration) INPUT "";B: POKE U + A,B: GOTO 100 129 IF OP = 35 THEN GOTO 6540 (# - list # free sectors) 130 CALL 852 132 IF OP = 32 THEN GOTO 350 (space, go to BEX Main menu) 135 IF OP = 63 OR OP < 32 THEN GOTO (not a letter, list options, reprompt) 200 140 IF OP < 65 OR OP > 90 THEN GOTO 390 150 IF OP < 74 THEN ON OP - 64 GOTO 390,390,2200,6500,2500,320,39 0,390,320 160 IF OP < 84 THEN ON OP - 73 GOTO 345,2800,390,1200,390,390,100 0,199,3000,310 170 ON OP - 83 GOTO 390,390,390, 390,390,390,390 199 END 200 PRINT "Enter option:" 205 PRINT 213 PRINT "C - Copy chapters" line 2200 220 PRINT "D - Disk catalog" line 6500 230 PRINT "E - Editor" line 2500 232 PRINT "F - From VersaBraille line 320 (VB uses another program) " 235 PRINT "I - Input through slo line 320 (another program) t" 237 PRINT "J - Jump to Main Menu line 345 " 240 PRINT "K - Kill chapters" line 2800 250 PRINT "M - Math output" Line 1200 This is the big one! 260 PRINT "P - Print" line 1000 270 PRINT "Q - Quit" line 199 272 PRINT "R - Replace character line 3000 s" 285 PRINT "spacebar - go to Star ting Menu" 290 PRINT : GOTO 100 310 IF Q9 = 0 OR PEEK (49249) < 128 THEN GOTO 390 320 POKE 800,OP: GOSUB 385: PRINT CHR$ (4);"RUN INP" 340 IF DK > 1 THEN PRINT "Inser t BEX Main Disk and press any key": GET A$: PRINT 345 GOSUB 380: PRINT D$;"RUN MAI N" 350 PRINT "Load Starting Menu Y" ;H$;: INPUT "";A$: IF LEFT$ (A$ + "Y",1) < > "Y" THEN GOTO 100 360 GOSUB 385: POKE 8166, PEEK ( 7926): CALL EC + 21: PRINT D$ ;"RUN";LS$ 380 GOSUB 385: POKE U + 485,1: CALL EC + 21: RETURN 385 IF DK = 1 THEN POKE UQ,22: CALL EC + 24: GET A$: PRINT 386 ONERR GOTO 7060 387 RETURN 390 POKE UQ,23: CALL EC + 24: GOTO 100 999 GOTO 9200 1000 POKE UQ,24: CALL EC + 24 1002 POKE U + 74,17: POKE U + 77 ,1 1010 BQ = 0:BW = 2: GOSUB 7000 1012 GOSUB 5100: IF N = 0 THEN GOTO 100 1020 GOSUB 4000: IF L = 0 THEN GOTO 100 1025 POKE U + 2,VV: POKE U + 4,B B 1035 POKE CD + 8,0: POKE U + 78, 1: POKE U + 17,0 1040 SV = 0: GOSUB 5500 1042 POKE 49164,0: CALL - 1233: POKE U + 211,0 1045 POKE U + 74,145: CALL EC: HOME : GOTO 100 1055 IF L2 = 0 THEN GOTO 390 1200 PRINT "Math output" 1202 POKE 38128,0: POKE 38130,0: POKE 38131,48: POKE 38129,0 1203 POKE 38134,0: POKE 38135,0 1210 GOSUB 5100: IF N = 0 THEN GOTO select files to output 100 1220 GOSUB 4100: IF L = 0 THEN GOTO select output device 100 1225 GOSUB 1280 load translation table 1240 SV = 0: GOSUB 5500: IF SL THEN CALL CD + 7 1241 CALL EC + 3 1242 HOME : CALL EC: GOTO 100 1260 POKE U + 86,1: CALL EC + 21 : IF VE THEN GOTO 1266 1262 BW = 12: GOSUB 7000: POKE CD + 5,SL: POKE CD + 6,0: RETURN 1266 BW = 19: GOSUB 7000: PRINT D $;"BLOAD TALK0.A,A$2000": PRINT CHR$ (4);"BLOAD ERR0.A,A$300 0": RETURN 1280 POKE U + 86,1: CALL EC + 21 1282 BW = 13: GOSUB 7000: PRINT D $;"BLOAD ";TT$;",A$3000": PRINT CHR$ (4);"BLOAD ZQMREV.A,A$2 000": RETURN 2200 IF L2 = 0 THEN GOTO 390 2205 PRINT "Copy chapters" 2210 GOSUB 5400: IF N = 0 THEN GOTO 100 2220 BQ = 0:SV = 1: POKE CD,96: GOSUB 5500 2230 GOTO 100 2500 PRINT "Editor" 2505 BW = 1: GOSUB 7000 2510 TS = 36:ZH = 2: GOSUB 5100: IF DU$ = "" THEN GOTO 100 2512 CX$ = DU$:DX = DG 2517 GOSUB 7100 2519 A = PEEK (DIR): IF A = 1 THEN CX = 1: GOTO 2525 2520 IF A = 0 THEN GOTO 2591 2521 PRINT "There are ";A;" page s": PRINT "Edit on page 1";H$ ;: INPUT "";B$ 2522 CX = VAL (B$ + " "): IF CX = 0 THEN CX = 1 2524 IF A < CX THEN GOTO 2510 2525 POKE CD + 7,CX:CY$ = DU$:DY = DG:CX$ = DU$:DX = DG 2530 CALL CD + 3:CX = PEEK (CD + 7): IF CX = 0 THEN GOTO 2535 2532 LE = PEEK (DIR + 3 * CX + 1 ) + 256 * PEEK (DIR + 3 * CX + 2): IF LE > 0 THEN GOSUB 7200 2535 CALL CD: ONERR GOTO 2580 2540 CY = PEEK (CD + 6): POKE 43 602,0 2542 LE = PEEK (DIR + 3 * CY + 1 ) + 256 * PEEK (DIR + 3 * CY + 2): IF LE > 0 THEN GOSUB 7400 2544 GOSUB 7300: POKE 216,0 2550 A = PEEK (CD + 8): IF A = 0 THEN CALL EC: IF PEEK (U + 8) < 6 THEN CALL - 936 2551 IF A = 0 THEN PRINT "Quit the Editor": GOTO 100 2555 GOTO 2530 2580 HOME : POKE CD + 8,0: CALL 14 * 256 2582 POKE U + 109,47: CALL EC + 24: GET A$: GOTO 999 2590 IF PEEK (222) < > 6 THEN GOTO 5190 2591 IF LEN (DU$) > 25 THEN PRINT CHR$ (7);"Chapter name is ov er 25 characters": GOTO 2510 2592 : POKE 46533,0: POKE U + 109 ,45: CALL EC + 24: INPUT "";A $: IF LEFT$ (A$ + "Y",1) < > "Y" THEN GOTO 2510 2594 POKE DIR,1: POKE DIR + 3,1: POKE DIR + 4,0: POKE DIR + 5 ,0 2595 POKE 216,0:CX = 1: GOTO 252 5 2800 PRINT "Kill chapters": GOSUB 5100: IF N = 0 THEN GOTO 100 2810 PRINT "O K to proceed? N";H $;: INPUT "";A$: IF LEFT$ (A $,1) = "Y" THEN GOSUB 5500 2820 GOTO 100 3000 PRINT "Replace" 3005 BW = 3: GOSUB 7000 3010 GOSUB 5400: IF N = 0 THEN GOTO 100 3015 GOSUB 3100: POKE 216,0 3020 IF DU$ = "" AND L2 = 0 THEN GOTO 100 3030 CALL CD + 5: POKE U + 26,1 3031 E = ( PEEK (U + 8) < > PEEK (U + 40)) 3032 IF PEEK (CD + 17) = 0 THEN GOTO 1045 3035 PRINT "Continue? Y";H$;: INPUT "";A$: IF LEFT$ (A$ + "Y",1) < > "Y" THEN GOTO 1045 3040 SV = 1: GOSUB 5500: POKE CD + 30,255 3045 A = 256 * PEEK (CD + 19) + PEEK (CD + 18) 3047 CALL EC: IF E THEN HOME 3050 PRINT "Replaced ";A;" times " 3055 IF PEEK (CD + 20) = 0 THEN GOSUB 3200 3060 GOTO 100 3100 NN = N: POKE CD + 20,0:DJ = DK 3105 TS = 37:ZX = 4: GOSUB 5475:N = NN: IF DU$ = "" THEN RETURN 3106 ONERR GOTO 3180 3107 CX$ = DU$:DX = DG: GOSUB 710 0 3110 A = PEEK (DIR): IF A < 1 OR A > 2 THEN PRINT CHR$ (7);" Use only one or two page chap ters": GOTO 3105 3115 IF PEEK (U + 8) > 4 THEN POKE U + 109,78: CALL EC + 15: HOME 3120 CX = 1: GOSUB 7200: CALL CD + 8 3130 IF A = 2 THEN CX = 2: GOSUB 7200: CALL CD + 11 3140 POKE CD + 20,1: POKE 216,0: RETURN 3180 POKE U + 109,10: CALL EC + 24: GOTO 100 3200 REM 3210 TS = 27:ZX = 4: GOSUB 5475: IF DU$ = "" THEN RETURN 3215 CALL CD + 14 3220 LE = PEEK (DIR + 4) + 256 * PEEK (DIR + 5) 3230 CY$ = DU$:DY = DG:CY = 1: GOSUB 7300: GOSUB 7400: RETURN 4000 PRINT "Which printer: ^";: INPUT "";A$:L = LEN (A$): IF L = 0 THEN RETURN 4010 A = VAL (A$) 4020 IF LEFT$ (A$,1) = "S" THEN POKE U + 109, ASC ( MID$ (A$ + " ",2,2)): POKE 7896,0: CALL EC + 15: RETURN 4030 IF A$ = "?" THEN GOSUB 420 0: GOTO 4000 4035 POKE U + 109,A: IF A < 1 OR A > 4 THEN L = 0: RETURN 4060 POKE U,0: CALL EC + 12: RETURN 4100 PRINT "tix where: ^";: INPUT "";A$:L = LEN (A$): IF L = 0 THEN RETURN 4105 IF A$ = "?" THEN GOTO 4170 4110 SL = 0:VE = 0:TT$ = "MOTR.A" : IF A$ = "V" THEN VE = 1:TT$ = "VTR.A": RETURN 4120 IF A$ = "S" THEN RETURN 4130 IF A$ = "I" AND P9 = 0 THEN PRINT CHR$ (7);"No graphics printer configured!": GOTO 4 100 4140 IF A$ = "I" THEN SL = PEEK (U + 128 + 16 * P9): POKE 255 ,P9: RETURN 4160 PRINT CHR$ (7);"Enter one of the following:" 4170 PRINT "S - screen preview": PRINT "V - verbalize": PRINT "I - inkprint hard copy": GOTO 4100 4200 A = 128 + U:P = 1:C = 0 4255 B = A + P * 16:S = PEEK (B) :S1 = PEEK (B + 4):S2 = PEEK (B + 5):S3 = PEEK (B + 1) 4257 A$ = "Printer": IF S3 = 128 THEN A$ = "Brailler" 4260 IF S = 0 THEN GOTO 4270 4265 PRINT P;" - ";A$;" in slot ";S;" (";S1;" by ";S2;")":P = P + 1: IF P < 5 THEN GOTO 42 55 4270 RETURN 5000 TS = 18 5005 POKE UQ,TS: CALL EC + 24: INPUT "";DU$: IF DU$ = "" THEN RETURN 5007 IF LEFT$ (DU$,1) = "+" THEN AG = 1:DU$ = MID$ (DU$,2,30) 5010 IF DU$ = "?" THEN GOSUB 90 00: GOTO 5005 5012 IF RIGHT$ (DU$,1) = " " THEN PRINT CHR$ (7);"Chapter nam e cannot end with space": GOTO 5005 5013 IF LEFT$ (DU$,1) = "*" THEN DU$ = MID$ (DU$,2,30):DG = 1 29: GOTO 5040 5015 DG = VAL (DU$): IF DG = 0 AND LEFT$ (DU$,1) < > "0" THEN DG = DJ: GOTO 5040 5020 IF DG > DK THEN PRINT "You only have ";DK;" disk drives ": GOTO 5005 5030 DU$ = MID$ (DU$, LEN ( STR$ (DG)) + 1,30) 5040 IF DG > 0 THEN POKE U + 85 ,0: POKE U + 86,DG: CALL EC + 21 5041 IF DU$ = "]" AND L3 = 0 THEN DU$ = "": RETURN 5042 IF ZX = 2 AND DU$ = "" THEN RETURN 5043 IF DU$ = "" THEN DU$ = "/" 5044 IF DU$ = "/" THEN RETURN 5050 IF ASC (DU$) = 47 THEN POKE U + 85, ASC ( MID$ (DU$ + "/" ,2,1)):DU$ = "/" 5060 RETURN 5100 N = 0 5102 IF DK = 1 THEN POKE UQ,8: CALL EC + 24 5105 ZX = 1 5110 AG = 0: GOSUB 5000: IF DU$ = "" AND N = 0 THEN POKE U + 1 09,25: CALL EC + 24 5112 IF DU$ = "" THEN RETURN 5115 IF DU$ = "/" THEN GOTO 520 0 5145 IF DU$ = ZN$ THEN GOTO 517 0 5155 ONERR GOTO 5190 5156 IF OP$ = "E" THEN POKE 216 ,0: ONERR GOTO 2590 5160 PRINT D$;"BLOAD ";DU$;",A$8 200" 5170 POKE 216,0 5180 N = N + 1:CS$(N) = DU$:DS%(N ) = DG: IF L2 = 0 AND PEEK ( U + 81) = 0 THEN RETURN 5182 IF OP$ = "E" THEN RETURN 5185 GOTO 5110 5190 B = PEEK (222):A = 44 + 2 * (B = 11) - 34 * (B = 6) 5192 POKE UQ,A: CALL EC + 24: GOTO 130 5200 POKE U + 86,DG:NN = 0: IF D G = 0 THEN GOTO 5110 5230 CALL 14 * 256 + 33:A = 130 * 256 5235 IF PEEK (U + 109) > 0 GOTO 5110 5240 N$ = "":B = PEEK (A): IF B = 255 THEN GOTO 5260 5244 N$ = N$ + CHR$ (B):A = A + 1:B = PEEK (A): IF B < > 25 5 THEN GOTO 5244 5245 NN = NN + 1:CT$(NN) = N$:A = A + 1: GOTO 5240 5260 PRINT : PRINT "There are "; NN;" chapters:": IF NN = 0 THEN GOTO 5110 5262 FOR I = 1 TO NN: PRINT I;" ";CT$(I): NEXT I 5265 PRINT 5266 IF OP$ = "E" THEN GOTO 530 0 5270 PRINT "Use entire list? N"; H$;: INPUT "";DU$: IF LEFT$ (DU$ + "N",1) < > "Y" THEN GOTO 5300 5277 FOR I = 1 TO NN:N = N + 1:C S$(N) = CT$(I):DS%(N) = DG: NEXT I 5280 IF AG = 1 THEN PRINT "Sele ct more chapters": GOTO 5110 5285 RETURN 5300 B = 0 5310 IF OP$ < > "E" THEN PRINT "Select chapters by number" 5315 POKE U + 109,28: CALL EC + 24: INPUT "";A$:A = VAL (A$ + " ") 5317 IF A > NN THEN PRINT "Ente r a number from 1 to ";NN: GOTO 5315 5318 IF A$ = "-" AND N > 0 THEN CT$(B) = CS$(N):N = N - 1: PRINT CT$(B);" Canceled": GOTO 5315 5320 IF A < 1 THEN DU$ = "": GOTO 5280 5325 IF CT$(A) = "" THEN PRINT "You picked this one already" : GOTO 5315 5327 PRINT CT$(A):B = A 5328 IF OP$ = "E" THEN DU$ = CT$ (A): RETURN 5330 N = N + 1:CS$(N) = CT$(A):CT $(A) = "":DS%(N) = DG: GOTO 5 315 5400 GOSUB 5100 5406 IF N = 0 THEN RETURN 5407 IF N = 1 THEN ZX = 2: GOTO 5470 5410 TS = 20:ZX = 3: GOSUB 5005: IF DU$ = "" THEN N = 0: RETURN 5416 IF ASC (DU$) = 46 THEN DU$ = MID$ (DU$,2,30) 5420 B$ = LEFT$ (DU$,1):C$ = MID$ (DU$,2,30):DJ = DG 5421 IF B$ = "D" THEN B$ = "L":C $ = "" 5422 FOR I = 1 TO 4: IF B$ = MID$ ("ALIS",I,1) THEN GOTO 5430 5423 NEXT I 5427 PRINT CHR$ (7);"Invalid na ming method": GOTO 5410 5430 FOR I = 1 TO N 5431 DT%(I) = DG: IF DG = 0 THEN DT%(I) = DS%(I) 5433 IF B$ = "A" THEN CT$(I) = C S$(I) + C$ 5435 IF B$ = "L" THEN CT$(I) = LEFT$ (CS$(I), LEN (CS$(I)) - 1) + C$ 5436 IF B$ = "S" THEN CT$(I) = C S$(I) 5437 IF B$ = "I" THEN GOSUB 546 5:CT$(I) = DU$:DT%(I) = DG 5438 IF RIGHT$ (CT$(I),1) = " " THEN PRINT CHR$ (7);"Chapt er name ";CT$(I);" ends in a space": GOTO 130 5439 IF LEN (CT$(I)) > 25 THEN PRINT "Chapter ";CT$(I);" ha s a name over 25 characters": GOTO 130 5440 NEXT I 5445 RETURN 5465 PRINT "For chapter ";CS$(I) 5470 TS = 19 5475 GOSUB 5005: IF DU$ = "" THEN N = 0: RETURN 5478 IF ZX = 2 AND ASC (DU$) = 46 THEN GOTO 5416 5479 IF DG = 0 THEN DG = DS%(1) 5480 IF ZX = 2 THEN CT$(1) = DU$ :DT%(1) = DG:DY = DG 5485 RETURN 5500 T = 0 5520 POKE U + 78,0 5550 FOR I = 1 TO N 5560 CX$ = CS$(I):DX = DS%(I): GOSUB 7100 5565 FOR J = 1 TO LEN (CX$): POKE 735 + J, ASC ( MID$ (CX$,J,1) ): POKE 736 + J,0: NEXT J 5570 IF SV = 1 THEN CY$ = CT$(I) :DY = DT%(I) 5580 FOR CX = 1 TO PEEK (DIR) 5585 T = T + 1:CY = CX: POKE 767, CX 5590 IF OP$ = "M" AND T > 1 THEN GOSUB 1280 5600 LE = PEEK (DIR + 3 * CX + 1 ) + 256 * PEEK (DIR + 3 * CX + 2) 5610 IF LE = 0 THEN GOTO 5700 5615 IF OP$ = "K" THEN GOSUB 76 00: GOTO 5710 5620 GOSUB 7200 5625 POKE ST + LE,255: POKE U + 111,CX 5630 LE = LE + 1: POKE CD + 4, INT (LE / 256): POKE CD + 3,LE - 256 * PEEK (CD + 4) 5635 CALL CD: IF PEEK (U + 78) THEN RETURN 5640 IF OP$ = "M" THEN GOSUB 12 60: CALL CD: IF SL = 0 THEN CALL CD + 7 5680 LE = 256 * PEEK (CD + 4) + PEEK (CD + 3) - 1 5684 IF PEEK (U + 78) = 1 THEN PRINT CHR$ (7): PRINT "Stru cture error found.": PRINT "P lease use Verbalize to check" : PRINT "Chapter ";CX$;" page ";CX: GOTO 100 5687 IF PEEK (U + 78) THEN RETURN 5690 IF LE AND SV THEN GOSUB 74 00 5700 IF SV THEN POKE DIR + 3 * CX + 2, INT (LE / 256): POKE DIR + 3 * CX + 1,LE - 256 * PEEK (DIR + 3 * CX + 2) 5710 NEXT CX 5720 IF SV THEN GOSUB 7300 5725 IF OP$ = "K" THEN GOSUB 75 00 5729 IF OP$ < > "M" AND OP$ < > "P" THEN PRINT "Chapter ";CS $(I);" done" 5730 NEXT I 5734 IF OP$ = "P" THEN CALL CD + 5: POKE U + 90,0 5740 POKE U + 86,1: CALL EC + 21 5750 RETURN 6500 T$ = "Which drive? ": GOSUB 6550: CALL EC + 36 6507 IF PEEK (U + 109) = 0 THEN PRINT "Press space for DOS c atalog: ^";: GET A$: IF A$ = " " THEN PRINT : PRINT D$;"C ATALOG" 6520 PRINT : GOTO 100 6540 T$ = "Free sectors on drive: ": GOSUB 6550: CALL EC + 33 6546 IF PEEK (U + 109) = 0 THEN PRINT 256 * PEEK (255) + PEEK (254);" sectors free" 6547 GOTO 100 6550 DU$ = H$: IF DK > 9 THEN DU$ = CHR$ (8) + DU$ 6555 PRINT T$;DK;DU$;: INPUT ""; A$:DG = VAL (A$): IF DG = 0 THEN DG = DK 6556 IF A$ = "*" THEN DG = 129: GOTO 6565 6557 IF A$ = "?" THEN GOTO 6580 6560 IF DG > DK THEN PRINT "You only have ";DK;" disk drives ": GOTO 6550 6565 POKE U + 86,DG: RETURN 6580 S = PEEK (8164): IF S THEN PRINT "Sider has ";S;" volum es" 6581 A = PEEK (8167): IF A < > 1 THEN PRINT "Main disk redi rected to drive ";A 6582 FOR I = 1 TO DK - S 6584 PRINT I + S;" is slot "; PEEK (8144 + 2 * I);" drive "; PEEK (8145 + 2 * I) 6585 NEXT I: GOTO 6550 7000 IF BW = 13 AND PEEK (49152 ) < 128 THEN BQ = 0: POKE U + 109,78: CALL EC + 15: HOME 7004 POKE U + 236,BW 7005 IF BW = BQ THEN RETURN 7007 ONERR GOTO 7060 7010 IF PEEK (U + 104) = 128 AND BW < 4 THEN GOTO 7090 7012 GOSUB 385 7015 PRINT D$;"BLOAD MOD";BW;",A $7200" 7020 BQ = BW: IF BQ < 4 OR BQ > 5 THEN POKE 216,0: RETURN 7025 A$ = "ZQFOR": IF BQ = 5 THEN A$ = "ZQREV" 7030 PRINT D$;"BLOAD ";A$;".A,A$ 2000" 7035 A = 256 * (32 + PEEK (43617 )) + PEEK (43616) 7040 PRINT D$;"BLOAD ";A$;".B,A" ;A 7050 POKE 216,0: RETURN 7060 POKE U + 109,9: CALL EC + 2 4: POKE 216,0: GOTO 100 7090 POKE U + 237,BW + 3: POKE U + 238,1: POKE U + 239,0 7095 CALL EC + 42:BQ = BW: RETURN 7100 IF CX$ = ZN$ THEN POKE U + 239,0: GOTO 7310 7105 POKE U + 86,DX: CALL EC + 2 1: PRINT D$;"BLOAD";CX$;",A$9 500": RETURN 7200 OL = PEEK (DIR + 3 * CX) + 64: IF CX$ = ZN$ AND OL < 65 + ZP THEN GOTO 7250 7207 POKE U + 86,DX: CALL EC + 2 1 7208 POKE 43602,0 7210 PRINT D$;"BLOAD ";CX$;"."; CHR$ (OL);",A$8200": RETURN 7250 POKE U + 239,0: POKE U + 23 8,OL - 64: GOTO 7460 7300 IF CY$ < > ZN$ THEN POKE U + 86,DY: CALL EC + 21: PRINT D$;"BSAVE";CY$;",A$9500,L$FF" : RETURN 7302 POKE DIR + 254,179: POKE DI R + 255,42 7305 POKE U + 239,1 7310 POKE U + 237,0: POKE U + 23 8,1: CALL EC + 42: RETURN 7400 OL = PEEK (DIR + 3 * CY) + 64: IF CY$ = ZN$ AND OL < 65 + ZP THEN GOTO 7450 7407 POKE U + 86,DY: CALL EC + 2 1 7410 PRINT D$;"BSAVE ";CY$;"."; CHR$ (OL);",A$8200,L";LE: RETURN 7450 POKE U + 239,1: POKE U + 23 8,OL - 64 7460 POKE U + 237,2: CALL EC + 4 2: RETURN 7500 IF CX$ = ZN$ THEN POKE DIR ,0: GOTO 7305 7505 POKE U + 86,DX: CALL EC + 2 1: PRINT D$;"DELETE ";CX$: RETURN 7600 OL = PEEK (DIR + 3 * CX) + 64: IF CX$ = ZN$ AND OL < 65 + ZP THEN RETURN 7607 POKE U + 86,DX: CALL EC + 2 1: PRINT D$;"DELETE ";CX$;"." ; CHR$ (OL): RETURN 8000 IF PEEK (U + 81) > 0 THEN PRINT "Cancel remember mode" : POKE U + 81,0: GOTO 100 8010 POKE U + 82,0: POKE 46533,0 : POKE U + 83,0: POKE U + 81, 64: PRINT : PRINT "Start reme mber mode": GOTO 100 8030 PRINT CHR$ (5); 8035 GET A$: PRINT A$;: IF ASC (A$) < > 13 THEN GOTO 8035 8040 GOTO 100 8100 CALL EC + 48:ZX = 2:TS = 38 : GOSUB 5475: IF DU$ = "" THEN GOTO 100 8110 LE = PEEK (U + 82) + 256 * PEEK (U + 83):CY$ = DU$:DY = DG: GOSUB 7300:CY = 1: GOSUB 7400: GOTO 100 8200 TS = 38:ZX = 2: GOSUB 5475: IF DU$ = "" THEN GOTO 100 8210 CX$ = DU$:CX = 1:DX = DG: GOSUB 7100: GOSUB 7200: CALL EC + 5 1: GOTO 100 8500 IF PEEK (U + 104) < > 128 THEN PRINT CHR$ (7);"Mathe matiX requires 128k memory": GOTO 340 8505 IF L2 = 0 THEN PRINT CHR$ (7);"You must configure at Us er or": PRINT "Master Level t o use MathematiX": GOTO 340 8506 IF PEEK (U + 231) = 0 THEN POKE U + 231,6: POKE U + 235 ,1: POKE 852,96 8508 IF PEEK (852) = 96 THEN ZN $ = CHR$ (127):LS$ = "MAIN" 8510 IF PEEK (U + 235) = 0 THEN PRINT CHR$ (7);"You must fi rst go to Main Menu": PRINT " before using MathematiX": GOTO 340 8512 IF DK = 1 THEN PRINT CHR$ (7);"MathematiX requires 2 or more disk drives": GOTO 340 8515 IF PEEK (7926) = 0 THEN POKE 7926, PEEK (8166) 8520 FOR P = 4 TO 1 STEP - 1 8525 IF PEEK (U + 129 + 16 * P) = 64 THEN P9 = P 8530 NEXT P 8585 IF PEEK (U + 235) = 2 THEN RETURN 8588 IF P9 = 0 THEN PRINT CHR$ (7);"Can't tix inkprint! Your configuration": PRINT "must include one large print print er!" 8590 PRINT CHR$ (4);"BRUN MOD17 ,A$7200": POKE U + 235,2: RETURN 9000 A = 4: IF ZX = 3 THEN A = 5 9005 IF ZX = 2 THEN A = 50 9010 POKE U + 109,A: CALL EC + 2 4: RETURN 9200 U = 30 * 256:EC = 14 * 256:D $ = CHR$ (4):DIR = 149 * 256 9205 PRINT 9210 POKE DIR,1: POKE DIR + 3,1: POKE DIR + 4,255: POKE DIR + 5,15 9220 CY$ = "SAVE":CY = 1:DY = 1:L E = 4096: GOSUB 7300 9230 GOSUB 7400: POKE U + 109,11 : CALL EC + 24: IF PEEK (U + 78) = 1 THEN GOTO 100 ]