190 DIM C$(4,7):C$(1,0) = "BLACK":C$(1,1) = "WHITE": FOR I = 0 TO 7: READ C$(4,I): NEXT : DATA BLACK 1,GREEN,PURPLE,WHITE 1,BLACK 2,ORANGE,BLUE,WHITE 2: REM COLOR CONVERSION ARRAY
200 FOR I = 768 TO I +6: READ J: POKE I,J: NEXT : POKE 232,0: POKE 233,3: SCALE= 1: ROT= 0: DATA 1,0,4,0,7,1,0: REM SET UP ZOT
210 D3 = PEEK(48896) < >76: REM 0 FOR PRODOS, 1 FOR DOS 3.3
220 REM
230 REM RUN THE MENU
240 REM
250 HOME : IF NOT MI THEN MI = 1: REM FIRST TIME, DEFAULT OPTION IS LOAD PICTURE
260 VTAB 1:S$ = "MAIN MENU": GOSUB 490
270 IF MI = 1 THEN INVERSE : REM SELECTED OPTION IN INVERSE
280 VTAB 5:S$ = "LOAD PICTURE": GOSUB 490: NORMAL
290 IF MI = 2 THEN INVERSE
300 VTAB 7:S$ = "CATALOG DISK": GOSUB 490: NORMAL
310 IF MI = 3 THEN INVERSE
320 VTAB 9:S$ = "GET COLORS FROM SCREEN (COLOR)": GOSUB 490: NORMAL
330 IF MI = 4 THEN INVERSE
340 VTAB 11:S$ = "GET PIXELS FROM SCREEN (MONOCHROME)": GOSUB 490: NORMAL
350 IF MI = 5 THEN INVERSE
360 VTAB 13:S$ = "QUIT PROGRAM": GOSUB 490: NORMAL
370 VTAB 17:S$ = "SELECT AN OPTION WITH THE ARROWS, THEN": GOSUB 490: PRINT :S$ = "PRESS RETURN. ": GOSUB 490: PRINT CHR$(8);
380 GET A$: IF A$ = CHR$(13) THEN ON MI GOSUB 730,900,1070,1070,1370: GOTO 250
390 IF A$ = CHR$(27) THEN MI = 5: GOTO 260: REM ESCAPE SELECTS QUIT, BUT DOESN'T GO TO IT
400 MI = MI +(A$ = CHR$(21)) +(A$ = CHR$(10)) -(A$ = CHR$(8)) -(A$ = CHR$(11)):MI = (MI = 6) +MI *(MI >0 AND MI <6) +5 * NOT MI: GOTO 270
410 REM
420 REM GET A RETURN
430 REM
440 GET A$: IF A$ < > CHR$(13) THEN PRINT CHR$(7);: GOTO 440
690 IF R = 2 THEN 900: REM ERROR IN GETTING CATALOG
700 REM
710 REM LOAD A PICTURE INTO PAGE 1
720 REM
730 HOME :R = 1
740 VTAB 1:S$ = "LOAD PICTURE": GOSUB 490
750 VTAB 6:S$ = "ENTER A FILENAME AND PRESS RETURN.": GOSUB 490: PRINT
760 S$ = "(YOU MAY ALSO PRESS ESCAPE AND SELECT": GOSUB 490: PRINT
770 S$ = "THE CATALOG DISK OPTION.)": GOSUB 490
780 VTAB 12:S$ = "FILENAME? ": FOR I = 1 TO 15 +15 *D3:S$ = S$ + CHR$(95): NEXT : GOSUB 490: FOR I = 1 TO 15 +15 *D3: PRINT CHR$(8);: NEXT :P = 1:N$ = "": REM ALLOW 15 CHARACTERS FOR PRODOS, 30 FOR DOS 3.3
790 GET A$: GOSUB 520: IF A$ = CHR$(27) THEN MI = 2: RETURN : REM ESCAPE MAKES CATALOG DISK THE DEFAULT OPTION
800 IF A$ >"@" AND A$ < CHR$(91) AND P <16 +15 *D3 THEN PRINT A$;:N$ = N$ +A$:P = P +1: GOTO 790: REM ONLY LETTERS CAN BE THE FIRST CHARACTER
810 IF ((((A$ >"/" AND A$ <":") OR A$ = ".") AND P >1 AND P <16) AND NOT D3) OR (A$ > CHR$(31) AND P >1 AND P <31 AND D3) THEN PRINT A$;:N$ = N$ +A$:P = P +1: GOTO 790: REM OTHER CHARS MAY BE LETTERS, #S, PERIODS (PRODOS) OR ANY PRINTABLE CHAR (DOS 3.3)
820 IF A$ = CHR$(8) AND P >1 THEN PRINT CHR$(8) CHR$(95) CHR$(8);:N$ = MID$ (N$,1, LEN(N$) -1):P = P -1: GOTO 790
830 IF A$ < > CHR$(13) OR P = 1 THEN PRINT CHR$(7);: GOTO 790
840 HTAB 1: PRINT SPC( 40): VTAB 12:S$ = "FILENAME: " +N$: GOSUB 490: REM CLEAN UP DISPLAY
850 VTAB 15:S$ = "LOADING THE PICTURE...PLEASE WAIT": GOSUB 490: GOSUB 560: REM ERROR TRAPPING IS TURNED ON AROUND DISK OPERATIONS
860 PRINT : PRINT CHR$(4)"BLOAD"N$",A$2000": GOSUB 610:MI = 3: RETURN : REM DEFAULT OPTION IS COLOR GET
870 REM
880 REM CATALOG A DISK
890 REM
900 S = S * NOT NOT S +6 * NOT S:D = D * NOT NOT D + NOT D: GOSUB 490: PRINT :R = 2: REM FIRST TIME OPTION IS UDES, DEFAULTS OF SLOT 6, DRIVE 1 ARE SET
1010 POKE 34,2: HOME : VTAB 3:S$ = "SLOT " + STR$(S) +", DRIVE " + STR$(D): GOSUB 490: POKE 34,4: HOME : REM SLOT, DRIVE GO INTO TEMPORARY HEADER AT TOP OF SCREEN
1020 PRINT : GOSUB 560: PRINT CHR$(4)"CAT" MID$ ("ALOG",1,4 *D3)",S"S",D"D: GOSUB 610: REM "CAT" FOR PRODOS, "CATALOG" FOR DOS 3.3
1030 PRINT :S$ = "PRESS RETURN TO CONTINUE. ": GOSUB 490: PRINT CHR$(8);: GOSUB 440: TEXT :MI = 1: RETURN
1040 REM
1050 REM ENTER FOR THE TWO GETTING ROUTINES
1060 REM
1070 HOME
1080 VTAB 1
1090 IF MI = 3 THEN S$ = "GET COLORS FROM SCREEN (COLOR)":F = 4: REM USR(4) FOR COLOR
1100 IF MI = 4 THEN S$ = "GET PIXELS FROM SCREEN (MONOCHROME)":F = 1: REM USR(1) FOR MONOCHROME
1110 GOSUB 490
1120 VTAB 9:S$ = "USE THE ARROWS OR IJKM TO MOVE THE": GOSUB 490: PRINT
1130 S$ = "CURSOR. THE COLOR WILL APPEAR ON THE": GOSUB 490: PRINT
1140 S$ = "BOTTOM OF THE SCREEN. PRESS ESCAPE": GOSUB 490: PRINT
1250 VTAB 22: HTAB 1: PRINT SPC( 40): VTAB 22:S$ = C$(F, USR(F),X,Y): GOSUB 490: REM MODE (1 OR 4) AND COLOR RETURNED SELECT A COLOR NAME FROM THE ARRAY
1260 XDRAW 1 AT X,Y: REM USE THE ZOT AS A CURSOR
1270 K = PEEK( -16368):K = K -32 *(K >223): REM THIS WAY, YOU DON'T HAVE TO WAIT FOR THE KEY TO REPEAT
1280 X = X +(K = 149 OR K = 203) -(K = 136 OR K = 202): REM UPDATE X
1290 Y = Y +(K = 138 OR K = 205) -(K = 139 OR K = 201): REM UPDATE Y
1300 X = 279 *(X = -1) +X *(X > -1 AND X <280):Y = 159 *(Y = -1) +Y *(Y > -1 AND Y <160): REM X IS LIMITED TO 0-279 AND Y IS LIMITED TO 0-159. SCREEN WRAPAROUND IS USED.
1310 XDRAW 1: REM ERASE ZOT
1320 IF K = 155 THEN MI = 3 +(MI = 3): TEXT : RETURN : REM ON ESCAPE, THE DEFAULT ITEM BECOMES THE OTHER GETTING OPTION (COLOR IF MONOCHROME, AND VICE VERSA)