Compucolor.org – Virtual Media

Listing of file='EDIT.BAS;01' on disk='vmedia/chip_23-sector.ccvf'

100 GOTO 7580
110 REM   **  SCREEN EDITOR V1.2  MARCH 21,1981
120 REM   **
130 REM   **  JOHN R. BELL
140 REM   **  12 KIMBALL DRIVE
150 REM   **  ROCHESTER,NEW YORK  14623
160 REM   **  PHONE  (716)-475-1412
170 REM   **
180 POKE  33247,31
190 SL= 28672
200 SS= 28672:REM  START OF SCREEN MEMORY
210 LK= 33252:REM  LAST KEY CODE
220 KC= 33278:REM  KEYBOARD CHARACTER
230 DIM  LL(136)
240 REM  X IS CURRENT CURSOR POSITION,X1 IS PREVIOUS POSTION, AND
250 REM  XX IS CURSOR X POSITION OF CORNER WORKSPACE,X9 IS AMOUNT
260 REM  ADDED TO XX TO PLOT NUMBERS IN CORNER WORKSPACE.
270 REM  Y VALUES ARE SAME AS FOR X AS ABOVE.
280 BG= 16:FG= 18
290 DEF  FN  A(A)= 28672+ 128* Y+ X+ X:REM  CHARACTER AT CURSOR POSITION.
300 DEF  FN  B(B)= 28673+ 128* Y+ X+ X:REM  COLOR STATUS FOR ABOVE.
310 POKE  33289,255
320 B$= "":D$= ""
330 PLOT  6,6,12,14
340 PLOT  27,24
350 PLOT  3,19,0
360 PRINT "S C R E E N   E D I T O R"
370 PLOT  6,2,15
380 PLOT  3,0,4
390 PLOT  3,24,4
400 PRINT "BY JOHN R. BELL"
410 PLOT  3,16,6
420 PRINT "ENTER (ESC) TO CORRECT MISTAKES"
430 M= 15
440 PLOT  14,6,4
450 PLOT  3,28,10
460 PRINT "OPTIONS"
470 PLOT  15,6,1
480 PLOT  3,0,M
490 PRINT "WOULD YOU LIKE TO SAVE THE SCREEN IMAGE? (Y/N)"
500 FOR  J= 1 TO  30:NEXT  J
510 K= PEEK (LK):IF  K= 0 THEN 510
520 IF  K= 57 THEN PLOT  3,47,M:PRINT "Y":A$= "Y":GOTO 560
530 IF  K= 46 THEN PLOT  3,47,M:PRINT "N":A$= "N":GOTO 710
540 IF  K= 107 THEN 320
550 GOTO 500
560 PLOT  6,2
570 M= M+ 2
580 PLOT  3,0,M
590 PRINT "WHAT WOULD YOU LIKE TO NAME IT? (6 CHARACTERS)."
600 FOR  J= 1 TO  30:NEXT  J
610 K= PEEK (LK):IF  K= 0 THEN 610
620 IF  K= 93 THEN 710
630 IF  K= 107 THEN 320
640 IF  K< 16 OR  K> 58 THEN 600
650 IF  K> 25 AND  K< 33 THEN 600
660 B$= B$+ CHR$ (K+ 32)
670 PLOT  3,48,M
680 PRINT B$
690 IF  LEN (B$)= 6 THEN 710
700 GOTO 600
710 M= M+ 2
720 PLOT  3,0,M
730 PLOT  6,3
740 PRINT "WOULD YOU LIKE TO UPDATE A PREVIOUS IMAGE? (Y/N)"
750 FOR  J= 1 TO  30:NEXT  J
760 K= PEEK (LK):IF  K= 0 THEN 760
770 IF  K= 107 THEN 320
780 IF  K= 57 THEN PLOT  3,49,M:PRINT "Y":GOTO 1020
790 IF  K= 46 THEN PLOT  3,49,M:PRINT "N":GOTO 810
800 GOTO 750
810 M= M+ 2
820 PLOT  3,0,M
830 PLOT  6,4
840 PRINT "WOULD YOU LIKE TO MAKE THE BACKGROUND ONE COLOR? (Y/N)"
850 FOR  J= 1 TO  30:NEXT  J
860 K= PEEK (LK):IF  K= 0 THEN 860
870 IF  K= 107 THEN 320
880 IF  K= 57 THEN PLOT  3,55,M:PRINT "Y":GOTO 910
890 IF  K= 46 THEN PLOT  3,55,M:PRINT "N":GOTO 990
900 GOTO 850
910 M= M+ 2
920 PLOT  3,0,M
930 PLOT  6,5
940 PRINT "HIT THE CORRESPONDING COLORED KEY TO MAKE YOUR CHOICE."
950 FOR  J= 1 TO  30:NEXT  J
960 K= PEEK (LK):IF  K= 0 THEN 960
970 IF  K= 107 THEN 320
980 IF  K< 48 OR  K> 55 THEN 950
990 PLOT  30,K- 32
1000 PLOT  12
1010 GOTO 1290
1020 M= M+ 2
1030 PLOT  3,0,M
1040 PLOT  6,6
1050 PRINT "WHAT IS THE NAME OF THIS IMAGE? (ASSUMES .DSP TYPE)"
1060 FOR  J= 1 TO  30:NEXT  J
1070 K= PEEK (LK):IF  K= 0 THEN 1070
1080 IF  K= 93 THEN 1170
1090 IF  K= 107 THEN 320
1100 IF  K< 16 OR  K> 58 THEN 1060
1110 IF  K> 25 AND  K< 33 THEN 1060
1120 D$= D$+ CHR$ (K+ 32)
1130 PLOT  3,52,M
1140 PRINT D$
1150 IF  LEN (D$)= 6 THEN 1170
1160 GOTO 1060
1170 M= M+ 2
1180 PLOT  3,0,M
1190 PLOT  6,7
1200 PRINT "WHAT IS THE VERSION NUMBER?"
1210 FOR  J= 1 TO  30:NEXT  J
1220 K= PEEK (LK):IF  K= 0 THEN 1220
1230 IF  K= 107 THEN 320
1240 IF  K< 16 OR  K> 25 THEN 1210
1250 PLOT  30,16,12
1260 PLOT  27,4
1270 PRINT "LOAD ";D$;".DSP;";K- 16
1280 PLOT  27,27
1290 M= 0
1300 POKE  33247,31
1310 PLOT  15
1320 IF  AA= 0 THEN 1350
1330 AA= 1
1340 X1= X:X= X+ 1:IF  X> 63 THEN X= 0
1350 PLOT  3,X,Y
1360 FOR  J= 1 TO  30:NEXT  J
1370 K= PEEK (LK):IF  K= 0 THEN 1370
1380 PLOT  13:PLOT  3,X,Y
1390 IF  K= 106 THEN 1640:REM  LEFT CURSOR ROUTINE
1400 IF  K= 105 THEN 1710:REM  RIGHT CURSOR ROUTINE
1410 IF  K= 108 THEN 1760:REM  UP CURSOR ROUTINE
1420 IF  K=  90 THEN 1800:REM  DOWN CURSOR ROUTINE
1430 IF  K=  88 THEN 1840:REM  HOME CURSOR ROUTINE
1440 IF  K=  93 THEN 1870:REM  RETURN CURSOR ROUTINE
1450 IF  K=  89 AND  A(0)= 0 THEN 1920:REM  UPPER CORNER WORKSPACE ROUTINE
1460 IF  K= 89 AND  A(0)> 0 THEN 2260:REM  REPLACE CORNER ROUTINE
1470 IF  K= 110 THEN 2120:REM  BACKGROUND COLOR SET
1480 IF  K= 109 THEN 2190:REM  FOREGROUND COLOR SET
1490 IF  K= 85 AND  AA= 0 THEN AA= 2:GOTO 1320:REM  TURN ON AUTO ADVANCE MODE
1500 IF  K= 85 AND  AA= 1 THEN AA= 0:GOTO 1320:REM  TURN OFF AUTO ADVANCE MODE
1510 IF  K= 94 THEN PLOT  14:GOTO 1350:REM  TURN ON LARGE CHARACTERS
1520 IF  K= 95 THEN PLOT  15:GOTO 1350:REM  TURN OFF BLINK AND LARGE CHARACTERS
1530 IF  K= 111THEN PLOT  31:GOTO 1350:REM  TURN BLINK ON
1540 IF  K= 91 THEN 2400:REM  CHARACTER PLOT ROUTINE
1550 IF  K= 92 THEN 2800:REM  VECTOR PLOT ROUTINE
1560 IF  K= 107 THEN 7490:REM  STOP PROGRAM
1570 IF  K= 63 AND  PEEK (KC)= 31 THEN 5460:REM  DISPLAY CURSOR LOC.
1580 IF  K= 59 AND  PEEK (KC)= 27 THEN 6120:REM  STORE CC&CS
1590 IF  K= 61 AND  PEEK (KC)= 29 THEN 6170:REM  DISPLAY CC&CS
1600 IF  K= 62 AND  PEEK (KC)= 30 THEN 6210:REM  FILL MODE
1610 IF  PEEK (KC)< 32 THEN 1320
1620 IF  PEEK (KC)> 0 THEN PRINT  CHR$ (PEEK (KC));
1630 GOTO 1320
1640 X1= X
1650 IF  X= 0 THEN X= 64
1660 X= X- 1
1670 IF  AA= 0 THEN 1320
1680 X1= X:X= X- 1
1690 IF  X< 0 THEN X= 63:X1= 0
1700 GOTO 1320
1710 IF  AA= 1 THEN 1320
1720 X1= X
1730 IF  X= 63 THEN X= - 1
1740 X= X+ 1
1750 GOTO 1320
1760 Y1= Y
1770 IF  Y= 0 THEN Y= 32
1780 Y= Y- 1
1790 GOTO 1320
1800 Y1= Y
1810 IF  Y= 31 THEN Y= - 1
1820 Y= Y+ 1
1830 GOTO 1320
1840 X1= X:Y1= Y
1850 X= 0:Y= 0
1860 GOTO 1350
1870 X= X1:Y= Y1
1880 GOTO 1350
1890 REM  DECIDE WHICH CORNER TO CLEAR.
1900 IF  X> 17 OR  Y> 4 THEN K= 17:GOTO 1930
1910 K= 18:GOTO 1940
1920 K= PEEK (LK):IF  K= 0 THEN 1920
1930 IF  K= 17 THEN A(0)= 1:SL= 28672:XX= 0:YY= 0:GOTO 1980
1940 IF  K= 18 THEN A(0)= 2:SL= 28766:XX= 47:YY= 0:GOTO 1980
1950 IF  K= 19 THEN A(0)= 3:SL= 32256:XX= 0:YY= 28:GOTO 1980
1960 IF  K= 20 THEN A(0)= 4:SL= 32350:XX= 47:YY= 28:GOTO 1980
1970 GOTO 1920
1980 M= 0:REM  SL IS START LOCATION OF CORNER WORKSPACE
1990 FOR  I= 1 TO  4
2000 FOR  Q= SL TO  SL+ 33
2010 M= M+ 1
2020 LL(M)= PEEK (Q)
2030 POKE  Q,0
2040 NEXT  Q
2050 SL= SL+ 128
2060 NEXT  I
2070 M= 0
2080 IF  EL= 1 THEN 2450
2090 IF  EP= 1 THEN 2850
2100 IF  CA= 1 THEN 5500
2110 GOTO 1320
2120 FOR  J= 1 TO  20:NEXT  J
2130 K= PEEK (KC):IF  K= 0 THEN 2130
2140 IF  K= 32 THEN PLOT  30:GOTO 1350
2150 IF  K< 80 OR  K> 87 THEN 2130
2160 BG= K- 64
2170 PLOT  30,BG
2180 GOTO 1350
2190 FOR  J= 1 TO  20:NEXT  J
2200 K= PEEK (KC):IF  K= 0 THEN 2200
2210 IF  K= 32 THEN PLOT  29:GOTO 1350
2220 IF  K< 80 OR  K> 87 THEN 2200
2230 FG= K- 64
2240 PLOT  29,FG
2250 GOTO 1350
2260 IF  A(0)= 1 THEN SL= 28672
2270 IF  A(0)= 2 THEN SL= 28766
2280 IF  A(0)= 3 THEN SL= 32256
2290 IF  A(0)= 4 THEN SL= 32350
2300 M= 0
2310 FOR  I= 1 TO  4
2320 FOR  H=  SL TO  SL+ 33
2330 M= M+ 1
2340 POKE  H,LL(M)
2350 NEXT  H
2360 SL= SL+ 128
2370 NEXT  I
2380 M= 0:A(0)= 0
2390 GOTO 1350
2400 REM  CHARACTER PLOT MODE
2410 PLOT  15
2420 EL= 1:REM  ERASE LINE KEY (CHAR.PLOT MODE) ON.
2430 FG= 17:BG= 16
2440 IF  A(0)= 0 THEN 1890:REM  CHECK IF CORNER IS CLEAR
2450 GOSUB 5000
2460 GOSUB 5090
2470 GOSUB 5000
2480 PLOT  29,19
2490 PLOT  3,XX,YY
2500 PRINT "CHAR. PLOT     AF"
2510 PLOT  29,20
2520 PLOT  3,XX,YY+ 1
2530 PRINT "SELECT BLOCKS  BG"
2540 PLOT  3,XX,YY+ 2
2550 PRINT  "OR ENTER VALUE CH"
2560 PLOT  3,XX+ 15,YY+ 3
2570 PRINT "DI"
2580 X9= 0:Y9= 3
2590 GOSUB 5810
2600 IF  N< 0 OR  N> 254 THEN N= 0:GOTO 2470
2610 PLOT  3,XX,YY+ 3
2620 PRINT SPC( 14)
2630 PLOT  3,XX+ 1,YY+ 3
2640 PLOT  30,BG,29,FG,RR
2650 PLOT  2,254,N,255
2660 PLOT  3,XX+ 3,YY+ 3
2670 PLOT  30,16,29,21,15
2680 PRINT  "O.K.? (Y/N)"
2690 K= PEEK (LK):IF  K= 0 THEN 2690
2700 IF  K= 37 THEN 4950
2710 IF  K= 46 THEN 2470
2720 IF  K= 57 THEN 2760
2730 PLOT  3,XX,YY+ 3
2740 PRINT  SPC( 17)
2750 GOTO 2630
2760 PLOT  3,X,Y
2770 PLOT  30,BG,29,FG,RR
2780 PLOT  2,254,N,255
2790 GOTO 2450
2800 REM  VECTOR PLOT ROUTINE
2810 PLOT  15
2820 EP= 1:REM  ERASE PAGE (VEC. PLOT MODE) ON.
2830 IF  A(0)= 0 THEN 1890
2840 GOSUB 5000
2850 GOSUB 5090
2860 GOSUB 5000
2870 PLOT  3,XX,YY
2880 PLOT  29,19,15
2890 PRINT "VECTOR PLOT MODE"
2900 PLOT  3,XX,YY+ 1
2910 PLOT  29,21
2920 PRINT "ENTER IN X ORIGIN"
2930 PLOT  3,XX,YY+ 2
2940 PRINT  "XO="
2950 X9= 4:Y9= 2
2960 GOSUB 5810
2970 XO= N
2980 IF  XO> - 1 AND  XO< 128 THEN 3070
2990 PLOT  3,XX,YY+ 1
3000 PLOT  29,17,31
3010 PRINT "INVALID ENTRY    "
3020 FOR  J= 1 TO  450:NEXT  J
3030 PLOT  15
3040 PLOT  3,XX+ 4,YY+ 2
3050 PRINT  SPC( 4)
3060 GOTO 2900
3070 FOR  J= 1 TO  30:NEXT  J
3080 PLOT  3,XX,YY+ 1
3090 PLOT  29,22,15
3100 PRINT "ENTER IN Y ORIGIN"
3110 PLOT  3,XX+ 9,YY+ 2
3120 PRINT "YO="
3130 X9= 12:Y9= 2
3140 GOSUB 5810
3150 YO= N
3160 IF  YO> - 1 AND  YO< 128 THEN 3250
3170 PLOT  3,XX,YY+ 1
3180 PLOT  29,17,31
3190 PRINT "INVALID ENTRY    "
3200 FOR  J= 1 TO  450:NEXT  J
3210 PLOT  15
3220 PLOT  3,XX+ 12,YY+ 2
3230 PRINT  SPC( 4)
3240 GOTO 3080
3250 FOR  J= 1 TO  30:NEXT  J
3260 PLOT  3,XX,YY+ 1
3270 PLOT  29,18,15
3280 PRINT "ENTER IN X DEST. "
3290 PLOT  3,XX,YY+ 3
3300 PRINT "XD="
3310 X9= 4:Y9= 3
3320 GOSUB 5810
3330 XD= N
3340 IF  XD> - 1 AND  XD< 128 THEN 3430
3350 PLOT  3,XX,YY+ 1
3360 PLOT  29,17,31
3370 PRINT "INVALID ENTRY    "
3380 FOR  J= 1 TO  450:NEXT  J
3390 PLOT  15
3400 PLOT  3,XX+ 4,YY+ 3
3410 PRINT  SPC( 4)
3420 GOTO 3260
3430 FOR  J= 1 TO  30:NEXT  J
3440 PLOT  3,XX,YY+ 1
3450 PLOT  29,19,15
3460 PRINT "ENTER IN Y DEST."
3470 PLOT  3,XX+ 9,YY+ 3
3480 PRINT "YD="
3490 X9= 12:Y9= 3
3500 GOSUB 5810
3510 YD= N
3520 IF  YD> - 1 AND  YD< 128 THEN 3610
3530 PLOT  3,XX,YY+ 1
3540 PLOT  29,17,31
3550 PRINT "INVALID ENTRY    "
3560 FOR  J= 1 TO  450:NEXT  J
3570 PLOT  15
3580 PLOT  3,XX+ 12,YY+ 3
3590 PRINT  SPC( 4)
3600 GOTO 3440
3610 PLOT  29,FG,30,BG,RR
3620 PLOT  2,XO,YO,242,XD,YD,255
3630 GOSUB 5000
3640 PLOT  6,7
3650 PLOT  3,XX,YY
3660 PRINT "VECTOR OK? (Y/N)"
3670 FOR  J= 1 TO  30:NEXT  J
3680 K= PEEK (LK):IF  K= 0 THEN 3680
3690 IF  K= 37 THEN 4950
3700 IF  K= 57 THEN 2840
3710 IF  K= 46 THEN 3730
3720 GOTO 3670
3730 GOSUB 5000
3740 PLOT  6,1,29
3750 PLOT  3,XX,YY
3760 PRINT "WHICH ALTERATION?"
3770 PLOT  3,XX,YY+ 1
3780 PRINT "DELETE LINE, FG,"
3790 PLOT  3,XX,YY+ 2
3800 PRINT "BG, COORDINATES"
3810 PLOT  30
3820 FOR  J= 1 TO  30:NEXT  J
3830 K= PEEK (LK):IF  K= 0 THEN 3830
3840 IF  K< 34 AND  K> 38 THEN 3820
3850 IF  K= 37 THEN 4950
3860 IF  K= 35 THEN 4110
3870 PLOT  2,XO,YO,242,XD,YD,255
3880 IF  K= 34 THEN 3910
3890 IF  K= 38 THEN 4010
3900 GOTO 2840
3910 PLOT  6,3
3920 PLOT  3,XX,YY+ 3
3930 PRINT "HIT COLORED KEY"
3940 FOR  J= 1 TO  30:NEXT  J
3950 K= PEEK (LK):IF  K= 0 THEN 3950
3960 IF  K= E THEN 4950
3970 IF  K> 47 AND  K< 56 THEN 3990
3980 GOTO 3940
3990 BG= K- 32
4000 GOTO 3610
4010 PLOT  6,4
4020 PLOT  3,XX,YY+ 3
4030 PRINT "HIT COLORED KEY"
4040 FOR  J= 1 TO  30:NEXT  J
4050 K= PEEK (LK):IF  K= 0 THEN 4050
4060 IF  K= 37 THEN 4950
4070 IF  K> 47 AND  K< 56 THEN 4090
4080 GOTO 4040
4090 FG= K- 32
4100 GOTO 3610
4110 REM  COORDINATE CHANGING ROUTINE
4120 GOSUB 5000
4130 PLOT  6,4
4140 PLOT  3,XX,YY
4150 PRINT "COORDINATE CHANGE"
4160 PLOT  6,2
4170 PLOT  3,XX,YY+ 1
4180 PRINT "INPUT NEW VALUE"
4190 PLOT  3,XX,YY+ 2
4200 PRINT "OR HIT RETURN."
4210 PLOT  6,5
4220 PLOT  3,XX,YY+ 3
4230 PRINT SPC( 17)
4240 PLOT  3,XX,YY+ 3
4250 PRINT "XO=";XO
4260 PLOT  6,6
4270 PLOT  3,XX+ 8,YY+ 3
4280 PRINT "XO="
4290 X9= 11:Y9= 3
4300 GOSUB 5810
4310 IF  N$= "0" THEN XP= XO:GOTO 4390
4320 IF  N> - 1 AND  N< 128 THEN 4380
4330 PLOT  6,65
4340 PLOT  3,XX,YY+ 3
4350 PRINT "INVALID ENTRY    "
4360 FOR  J= 1 TO  700:NEXT  J
4370 GOTO 4210
4380 XP= N
4390 PLOT  6,5
4400 PLOT  3,XX,YY+ 3
4410 PRINT SPC( 17):PLOT  3,XX,YY+ 3
4420 PRINT "YO=";YO
4430 PLOT  6,6
4440 PLOT  3,XX+ 8,YY+ 3
4450 PRINT "YO="
4460 GOSUB 5810
4470 IF  N$= "0" THEN YP= YO:GOTO 4550
4480 IF  N> - 1 AND  N< 128 THEN 4540
4490 PLOT  6,65
4500 PLOT  3,XX,YY+ 3
4510 PRINT "INVALID ENTRY    "
4520 FOR  J= 1 TO  700:NEXT  J
4530 GOTO 4390
4540 YP= N
4550 PLOT  6,5
4560 PLOT  3,XX,YY+ 3
4570 PRINT SPC( 17):PLOT  3,XX,YY+ 3
4580 PRINT "XD=";XD
4590 PLOT  6,6
4600 PLOT  3,XX+ 8,YY+ 3
4610 PRINT "XD="
4620 GOSUB 5810
4630 IF  N$= "0" THEN XE= XD:GOTO 4710
4640 IF  N> - 1 AND  N< 128 THEN 4700
4650 PLOT  6,65
4660 PLOT  3,XX,YY+ 3
4670 PRINT "INVALID ENTRY    "
4680 FOR  J= 1 TO  700:NEXT  J
4690 GOTO 4540
4700 XE= N
4710 PLOT  6,5
4720 PLOT  3,XX,YY+ 3
4730 PRINT SPC( 17)
4740 PLOT  3,XX,YY+ 3
4750 PRINT "YD=";YD
4760 PLOT  6,6
4770 PLOT  3,XX+ 8,YY+ 3
4780 PRINT "YD="
4790 GOSUB 5810
4800 IF  N$= "0" THEN YE= YD:GOTO 4880
4810 IF  N> - 1 AND  N< 128 THEN 4870
4820 PLOT  6,65
4830 PLOT  3,XX,YY+ 3
4840 PRINT "INVALID ENTRY    "
4850 FOR  J= 1 TO  700:NEXT  J
4860 GOTO 4700
4870 YE= N
4880 PLOT  30
4890 PLOT  2,XO,YO,242,XD,YD,255
4900 XO= XP
4910 YO= YP
4920 XD= XE
4930 YD= YE
4940 GOTO 3610
4950 REM  END PLOT MODE ROUTINE
4960 GOSUB 5000
4970 EL= 0:REM  CHARACTER PLOT TURNED OFF
4980 EP= 0:REM  VECTOR PLOT TURNED OFF
4990 GOTO 1320
5000 REM  CLEAR CORNER WITH BLANK SPACES ROUTINE
5010 PLOT  30,16
5020 PLOT  3,XX,YY
5030 FOR  I= 1 TO  4
5040 PRINT  SPC( 17)
5050 PLOT  3,XX,YY+ I
5060 NEXT  I
5070 PLOT  3,XX,YY
5080 RETURN
5090 REM  PLOT MODES COLOR SETTING ROUTINE
5100 PLOT  15
5110 PLOT  3,XX,YY
5120 PLOT  30,16,29,23
5130 PRINT "V&C PLOT MODES"
5140 PLOT  3,XX,YY+ 1
5150 PRINT "ENTER 'E' TO END
5160 PLOT  29,17
5170 PLOT  3,XX,YY+ 2
5180 PRINT "BLINK ON? (Y/N)"
5190 FOR  J= 1 TO  30:NEXT  J
5200 K= PEEK (LK):IF  K= 0 THEN 5200
5210 IF  K= 37 THEN 4950
5220 IF  K= 46 THEN RR= 15 :GOTO 5250
5230 IF  K= 57 THEN RR= 31:GOTO 5250
5240 GOTO 5190
5250 PLOT  29,22,15
5260 PLOT  3,XX,YY+ 2
5270 PRINT  "SET F/G COLOR  "
5280 FOR  J= 1 TO  30:NEXT  J
5290 K= PEEK (LK):IF  K= 0 THEN 5290
5300 IF  K= 37 THEN 4950
5310 IF  K= 93 THEN 5350
5320 IF  K> 47 OR  K< 56 THEN 5340
5330 GOTO 5280
5340 FG= K- 32
5350 PLOT  3,XX,YY+ 3
5360 PLOT  29,18
5370 PRINT  "SET B/G COLOR"
5380 FOR  J= 1 TO  50:NEXT  J
5390 K= PEEK (LK):IF  K= 0 THEN 5390
5400 IF  K= 37 THEN 4950
5410 IF  K= 93 THEN RETURN
5420 IF  K> 47 OR  K< 56 THEN 5440
5430 GOTO 5380
5440 BG= K- 32
5450 RETURN
5460 REM  GIVE CURSOR X,Y ADDRESS
5470 PLOT  15
5480 CA= 1:REM  CURSOR ADDRESS MODE ON.
5490 IF  A(0)= 0 THEN 1890:REM  CHECK IF CORNER IS CLEAR
5500 GOSUB 5000
5510 PLOT  6,4
5520 PLOT  3,XX,YY
5530 PRINT "X=" X
5540 PLOT  6,1
5550 PLOT  3,XX+ 8,YY
5560 PRINT X* 2;- 2* X- 1
5570 PLOT  3,XX+ 6,YY
5580 PRINT "VX="
5590 PLOT  6,5
5600 PLOT  3,XX,YY+ 1
5610 PRINT  "Y=" Y
5620 PLOT  6,6:PLOT  3,XX,YY+ 2
5630 PLOT  6,3
5640 PLOT  3,XX+ 8,YY+ 1
5650 VY= 127- Y* 4
5660 PRINT  VY- 3;- VY
5670 PLOT  3,XX+ 6,YY+ 1
5680 PRINT "VY="
5690 PLOT  6,6
5700 PLOT  3,XX,YY+ 2
5710 PRINT "ASCII CHAR.=";
5720 PRINT PEEK (FN  A(0))
5730 PLOT  6,2
5740 PLOT  3,XX,YY+ 3
5750 P= PEEK (FN  B(0))
5760 PRINT "COLOR CODE =" P
5770 IF  P> 127 THEN P= P- 128
5780 PLOT  6,P
5790 CA= 0:REM  TURN OFF CURSOR ADDRESS MODE
5800 GOTO 1350
5810 REM  PLOT MODE NUMBER ENTERING SUBROUTINE
5820 N= 0:M= 0:N$= "":T$= ""
5830 FOR  J= 1 TO  30:NEXT J
5840 K= PEEK (LK):IF  K= 0 THEN 5840
5850 IF  K= 37 THEN 4950
5860 IF  EL< > 1 THEN 5880
5870 IF  K> 32 AND  K< 42 THEN T$= "Y":GOTO 5930
5880 IF  K= 93 THEN 5990
5890 IF  T$= "Y" THEN 5830
5900 IF  K> 15 AND  K< 26 THEN 5920
5910 GOTO 5830
5920 M= M+ 1
5930 N$= N$+ CHR$ (K+ 32)
5940 PLOT  3,XX+ X9,YY+ Y9
5950 PRINT N$
5960 IF  T$= "Y" THEN 6030
5970 FOR  J= 1 TO  20:NEXT  J
5980 IF  M< 3 THEN 5830
5990 IF  LEN (N$)< 1 THEN N$= "0"
6000 IF  T$= "Y" THEN RETURN
6010 N= VAL (N$)
6020 RETURN
6030 IF  K= 33 THEN N= N+ 1
6040 IF  K= 34 THEN N= N+ 2
6050 IF  K= 35 THEN N= N+ 4
6060 IF  K= 36 THEN N= N+ 8
6070 IF  K= 38 THEN N= N+ 16
6080 IF  K= 39 THEN N= N+ 32
6090 IF  K= 40 THEN N= N+ 64
6100 IF  K= 41 THEN N= N+ 128
6110 GOTO 5830
6120 REM  PICKUP CHARACTER AND COLOR STATUS OF CURRENT CURSOR POSITION
6130 REM  AND STORE IT FOR USE LATER.
6140 CC= PEEK (FN  A(0))
6150 CS= PEEK (FN  B(0))
6160 GOTO 1320
6170 REM  PLACE STORED CHARACTER AND COLOR AT CURRENT CURSOR POSITION.
6180 POKE  FN  A(0),CC
6190 POKE  SS+ 1+ 128* Y+ X+ X,CS
6200 GOTO 1320
6210 REM  FILL ROUTINES
6220 CH= PEEK (FN  A(0))
6230 CS= PEEK (FN  B(0))
6240 FOR  J= 1 TO  30:NEXT  J
6250 K= PEEK (LK):IF  K= 0 THEN 6250
6260 IF  K= 37 THEN 1320
6270 IF  K= 34 THEN M$= "B":GOTO 6310
6280 IF  K= 35 THEN M$= "C":GOTO 6310
6290 IF  K= 51 THEN M$= "S":GOTO 6310
6300 GOTO 6240
6310 FOR  J= 1 TO  30:NEXT  J
6320 K= PEEK (LK):IF  K= 0 THEN 6320
6330 IF  K= 37 THEN 1320
6340 IF  K= 88 THEN 7040
6350 IF  K= 90 THEN 6890
6360 IF  K= 105 THEN 6400
6370 IF  K= 106 THEN 6560
6380 IF  K= 108 THEN 6720
6390 GOTO 6310
6400 REM  RIGHT FILL
6410 IF  M$= "S" THEN 6500
6420 REM  RIGHT CHARACTER FILL
6430 SE= SS+ (128* (Y+ 1))- 2
6440 FOR  H= FN  A(0) TO  SE STEP  2
6450 POKE  H,CH
6460 IF  PEEK (H+ 2)= CH THEN 6480
6470 NEXT  H
6480 IF  M$< > "B" THEN 1320
6490 REM  RIGHT COLOR STATUS FILL
6500 SE= SS+ (128* (Y+ 1))- 1
6510 FOR  H= FN  B(0) TO  SE STEP  2
6520 POKE  H,CS
6530 IF  PEEK (H+ 2)= CS THEN 1320
6540 NEXT  H
6550 GOTO 1320
6560 REM  LEFT FILL
6570 IF  M$= "S" THEN 6650
6580 REM  FILL CHARACTER LEFT
6590 SB= SS+ 128* Y
6600 FOR  H= FN  A(0) TO  SB STEP  - 2
6610 POKE  H,CH
6620 IF  PEEK (H- 2)= CH THEN 6640
6630 NEXT  H
6640 IF  M$< > "B" THEN 1320
6650 REM  FILL COLOR STATUS LEFT
6660 SB= SS+ 128* Y+ 1
6670 FOR  H= FN  B(0) TO  SB STEP  - 2
6680 POKE  H,CS
6690 IF  PEEK (H- 2)= CS THEN 1320
6700 NEXT  H
6710 GOTO 1320
6720 REM  FILL UP
6730 IF  M$= "S" THEN 6810
6740 REM  UP CHARACTER FILL
6750 SB= SS+ X+ X
6760 FOR  H= FN  A(0) TO  SB STEP  - 128
6770 POKE  H,CH
6780 IF  PEEK (H- 128)= CH THEN 6800
6790 NEXT  H
6800 IF  M$< > "B" THEN 1320
6810 REM  FILL UP COLOR STATUS
6820 SB= SS+ X+ X+ 1
6830 FOR  H= FN  B(0) TO  SB STEP  - 128
6840 POKE  H,CS
6850 IF  PEEK (H- 128)= CS THEN 1320
6860 NEXT  H
6870 GOTO 1320
6880 REM  FILL DOWN MODE
6890 IF  M$= "S" THEN 6970
6900 REM  DOWN CHARACTER FILL
6910 SE= 32640+ X+ X
6920 FOR  H= FN  A(0) TO  SE STEP  128
6930 POKE  H,CH
6940 IF  PEEK (H+ 128)= CH THEN 6960
6950 NEXT  H
6960 IF  M$< > "B" THEN 1320
6970 REM  DOWN COLOR STATUS FILL
6980 SE= 32640+ X+ X+ 1
6990 FOR  H= FN  B(0) TO  SE STEP  128
7000 POKE  H,CS
7010 IF  PEEK (H+ 128)= CS THEN 1320
7020 NEXT  H
7030 GOTO 1320
7040 REM  HOME FILL MODE
7050 ZA= 0:ZB= 0:ZC= 0:ZD= 0:ZE= 0:ZF= 0
7060 ZZ= FN  A(0)
7070 ZZ= ZZ- 128
7080 ZA= ZA+ 1
7090 IF  ZZ< 28800 THEN 7120
7100 IF  PEEK (ZZ)= CH AND  PEEK (ZZ+ 1)= CS THEN 7120
7110 GOTO 7070
7120 ZZ= FN  A(0)
7130 ZZ= ZZ+ 128
7140 ZC= ZC+ 1
7150 IF  ZZ> 32637 THEN 7180
7160 IF  PEEK (ZZ)= CH AND  PEEK (ZZ+ 1)= CS THEN 7180
7170 GOTO 7130
7180 ZZ= FN  A(0)
7190 ZZ= ZZ- 2
7200 ZB= ZB+ 1
7210 IF  ZZ/ 128= INT (ZZ/ 128) THEN 7240
7220 IF  PEEK (ZZ)= CH AND  PEEK (ZZ+ 1)= CS THEN 7240
7230 GOTO 7190
7240 ZZ= FN  A(0)
7250 ZZ= ZZ+ 2
7260 ZD= ZD+ 1
7270 IF  (ZZ+ 2)/ 128= INT ((ZZ+ 2)/ 128) THEN 7300
7280 IF  PEEK (ZZ)= CH AND  PEEK (ZZ+ 1)= CS THEN 7300
7290 GOTO 7250
7300 ZE= FN  A(0)- (2* ZB)- (128* ZA)
7310 ZF= FN  A(0)- (128* ZA)+ (2* ZD)
7320 IF  M$= "S" THEN 7420
7330 FOR  I= 1 TO  ZA+ ZC+ 1
7340 FOR  W= ZE TO  ZF STEP  2
7350 POKE  W,CH
7360 NEXT  W
7370 ZE= ZE+ 128:ZF= ZF+ 128
7380 NEXT  I
7390 IF  M$< > "B" THEN 1320
7400 ZE= FN  A(0)- (2* ZB)- (128* ZA)
7410 ZF= FN  A(0)- (128* ZA)+ (2* ZD)
7420 FOR  I= 1 TO  ZA+ ZC+ 1
7430 FOR  W= ZE TO  ZF STEP  2
7440 POKE  W+ 1,CS
7450 NEXT  W
7460 ZE= ZE+ 128:ZF= ZF+ 128
7470 NEXT  I
7480 GOTO 1320
7490 REM   ******  PUT TOP OF MEMORY BACK
7500 GOSUB 7700:Z= TM+ 7:AD= ER:GOSUB 7690
7510 PLOT  2,255
7520 IF  A$= "N" THEN 7560
7530 PLOT  27,4
7540 PRINT "SAVE ";B$;".DSP 7000 1000"
7550 PLOT  27,27
7560 PLOT  27,11:END
7570 REM  NO-ECHO PATCH
7580 DATA  245,175,50,255,129,241,201
7590 GOSUB 7700:RESTORE 7580
7600 IF  TM> 65528 THEN TM= TM- 7:GOTO 7640
7610 FOR  J= 1 TO  7 :READ  D
7620 IF  D< > PEEK (TM+ J) THEN J= 7:TM= TM- 7
7630 NEXT
7640 RESTORE 7580
7650 FOR  J= 1 TO  7:READ  D:POKE  TM+ J,D:NEXT
7660 Z= TM+ 1:AD= 33222:GOSUB 7690:POKE  33221,195
7670 Z= TM:AD= ER:GOSUB 7690
7680 CLEAR  50:GOTO 180
7690 ZZ= INT (Z/ 256):POKE  AD,Z- 256* ZZ:POKE  AD+ 1,ZZ:RETURN
7700 ER= 32940:TM= 256* PEEK (ER+ 1)+ PEEK (ER):RETURN