--- title: "CLASSY Part Four" type: "article" slug: "classy-part-four" url: "http://localhost/article/classy-part-four/" markdown_url: "http://localhost/article/classy-part-four.md" published_at: "2026-03-13T18:21:04+00:00" modified_at: "2026-03-13T18:21:05+00:00" featured_image: url: "http://localhost/wp-content/uploads/2022/04/20230809-041332.jpg" excerpt: "The concluding installment of a series on a custom font-printing machine-code routine for the TS2068, providing code for lines 100-220 and demonstrating keywords including AT, OR, TO, and NOT. Describes a user-definable jump table for STEP, AND, THEN, and STOP. Readers will need earlier installments to assemble the complete routine." category: - name: "Time Designs Magazine" slug: "time-designs" taxonomy: "category" url: "http://localhost/category/periodicals/time-designs/" post_tag: - name: "Machine language programming" slug: "machine-language" taxonomy: "post_tag" url: "http://localhost/tag/machine-language/" - name: "TS 2068" slug: "ts2068" taxonomy: "post_tag" url: "http://localhost/tag/ts2068/" - name: "Type-in program" slug: "type-in-program" taxonomy: "post_tag" url: "http://localhost/tag/type-in-program/" model: - name: "Timex/Sinclair 2068" slug: "ts-2068" taxonomy: "model" url: "http://localhost/model/ts-2068/" indiv: - name: "Paul Bingham" slug: "paul-bingham" taxonomy: "indiv" url: "http://localhost/indiv/paul-bingham/" publication_r: id: 10277 title: "Time Designs Magazine" type: "periodical" url: "http://localhost/periodical/time-designs-magazine/" authors_r: - name: "Paul Bingham" slug: "paul-bingham" taxonomy: "indiv" url: "http://localhost/indiv/paul-bingham/" volume: "4" issue: "1" issues_articles: - id: 36805 title: "Time Designs Magazine v4 n1" type: "issue" url: "http://localhost/issue/time-designs-magazine-v4-n6-2/" pages: "15" pubdate: "November/December 1987" product_reviews: - id: 25192 title: "Bingham’s Best" type: "product" url: "http://localhost/product/binghams-best/" archive_link: false article_media: - id: 51907 title: "JazzoFire" type: "computer_media" url: "http://localhost/computer_media/jazzofire/" --- # CLASSY Part Four The concluding installment of a series on a custom font-printing machine-code routine for the TS2068, providing code for lines 100-220 and demonstrating keywords including AT, OR, TO, and NOT. Describes a user-definable jump table for STEP, AND, THEN, and STOP. Readers will need earlier installments to assemble the complete routine. ## Source Code: JazzoFire ``` 1 REM _____UDG+_____ "ULTRA-EASY DESIGNER GRAPHICS" version 2.0 by p. bingham 2 REM (This program is nearly identical to "son of udg" from TDM N/D '86. It includes three alterations from TDM listing in lines 42, 350, and 9680.) 10 CLEAR 64597: GO SUB 800: FOR t=15616 TO 16384: POKE (t+48982),PEEK t: NEXT t: FOR t=65528 TO 65535: READ o: POKE t,o: NEXT t: FLASH 0: CLS : GO SUB 9015: GO SUB 9520: DATA 0,0,63,252,252,248,0,0 20 DIM k(257): DIM c(4): FOR t=1 TO 4: LET c(t)=32: NEXT t: DIM d(32): DIM u(20): LET cs=7: LET at=7: LET px=5: LET py=1: INPUT "Press ENTER to continue...";n$: GO TO 105 21 LET x=1: LET y=5: GO TO 400 22 LET x=1: LET y=13: GO TO 400 23 LET x=9: LET y=5: GO TO 400 24 LET x=9: LET y=13: GO TO 400 25 GO TO 350 26 PAPER 7: LET k=5+(8*INT (px/13)): FOR h=k TO k+7: PRINT AT py,h;CHR$ 128: NEXT h: RETURN 27 PAPER 0: LET k=5+(8*INT (px/13)): FOR h=k TO k+7: PRINT AT py,h;CHR$ 143: NEXT h: RETURN 28 INPUT "1)SAVE UDGs 2)LOAD UDGs ";t: IF t=1 THEN SAVE "UDG"CODE 64598,941: RETURN 29 LOAD "UDG"CODE 64598,941: GO SUB 9000: RETURN 30 LET s=1: LET x=1: LET y=4: LET q=1: GO TO 35 31 LET s=9: LET x=1: LET y=12: LET q=22: GO TO 35 32 LET s=17: LET x=9: LET y=4: LET q=1: GO TO 35 33 LET s=25: LET x=9: LET y=12: LET q=22: GO TO 35 34 FOR m=30 TO 33: GO SUB m: NEXT m: RETURN 35 GO SUB 300: RETURN 36 LET s=1: LET qx=0: GO TO 410 37 LET s=9: LET qx=1: GO TO 410 38 LET s=17: LET qx=0: GO TO 410 39 LET s=25: LET qx=1: GO TO 410 40 FOR m=36 TO 39: GO SUB m: LET f=1: NEXT m: RETURN 41 INPUT "1)COPY 2)DISPLAY ";t: IF t=1 THEN COPY : LPRINT : LPRINT : LPRINT : RETURN 42 INPUT "1st:";c(1);" 2nd:";c(2);" 3rd:";c(3);" 4th:";c(4): FOR t=1 TO 4: IF c(t)<32 OR c(t)>127 AND c(t)<144 OR c(t)>163 OR c(t)=124 OR c(t)=126 THEN GO TO 42: NEXT t 43 IF ci=9000 THEN GO SUB 350: GO SUB 600: PRINT AT 0,1;CHR$ c(1);CHR$ c(2);AT 1,1;CHR$ c(3);CHR$ c(4): GO SUB 610: FOR t=6 TO 18 STEP 4: PRINT AT 0,t;c(1+(t-6)/4): NEXT t: PAPER 1: RETURN 44 FOR t=1 TO 4: IF t<=2 THEN LET y1=1: LET x1=(INT (t*6/12))*8+4: GO TO 46 45 LET y1=9: LET x1=(INT (t*3/12))*8+4 46 IF c(t)>143 THEN LET h=(c(t)-144)*8+65368: GO TO 63 47 LET h=(c(t)-32)*8+64598 63 FOR m=h TO h+7: LET a1=PEEK m 64 FOR g=8 TO 1 STEP -1: LET a1=a1/2: IF INT a121 THEN LET cs=1 137 PAPER 7: PRINT AT cs,26;CHR$ 164 140 IF CODE INKEY$=52 THEN LET cs=cs-1: GO TO 160 150 GO TO 190 165 IF cs=9 THEN LET cs=8 170 IF cs=15 THEN LET cs=14 175 IF cs<1 THEN LET cs=21 180 PAPER 7: PRINT AT cs,26;CHR$ 164 190 IF CODE INKEY$=49 THEN GO SUB cs+750 200 IF CODE INKEY$=97 THEN GO SUB ci 210 GO TO 105 300 FOR h=x TO x+7: DIM a(8): LET b=1: LET c=0 310 FOR t=8 TO 1 STEP -1: LET a(t)=INT ((ATTR (h,y+t))/8) 320 IF a(t)<>7 THEN LET c=c+b 330 LET b=b*2: NEXT t: LET d(s)=c: LET s=s+1 340 PAPER 5: BRIGHT 1: PRINT AT h,q;" ": PRINT AT h,q;c: NEXT h: BRIGHT 0: RETURN 350 PAPER 7: IF ci=9000 THEN PRINT AT 0,1;" ";AT 0,6;" ";AT 0,10;" ";AT 0,14;" ";AT 0,18;" ";AT 1,1;" ";AT 21,16;" ": RETURN 360 FOR m=21 TO 24: GO SUB m: NEXT m: RETURN 400 PAPER 7: FOR h=x TO x+7: FOR t=y TO y+7: PRINT AT h,t;CHR$ 128: NEXT t: NEXT h: RETURN 410 INPUT "CHR$ Number(C#) as Storage:";vn: IF vn>31 AND vn<128 AND vn<>124 AND vn<>126 OR vn>143 AND vn<165 THEN LET e=vn: GO TO 420 415 INPUT "Illegal entry!--hit ENTER";v$: GO TO 410 420 IF e>127 THEN LET j=INT (s/8): LET w=e-143: LET i=65360+8*w: GO TO 430 425 LET j=INT (s/8): LET w=e-31: LET i=64590+8*w 430 LET ru=s: FOR t=i TO i+7: POKE t,d(ru): LET ru=ru+1: NEXT t 435 PAPER 7: IF ci=9000 THEN GO TO 530 500 LET ki=i: LET f=e: FOR h=18+j TO 21: GO SUB 600: PRINT AT h,11;CHR$ e;AT h,23;CHR$ f: GO SUB 610: PRINT AT h,13;ki;AT h,19;f;: PAPER 5: BRIGHT 1: PRINT " ";: PAPER 7: BRIGHT 0: LET ki=ki+8: LET f=f+1: NEXT h 505 IF CODE CHR$ e=124 OR CODE CHR$ e=126 THEN RETURN 510 GO SUB 600: FOR h=19 TO 21: PRINT AT h,j+1;CHR$ e: NEXT h 520 IF j<2 THEN PRINT AT 19,j+7;CHR$ e: GO SUB 610: RETURN 525 PRINT AT 20,j+5;CHR$ e: GO SUB 610: RETURN 530 IF e<50 THEN LET gx=2: LET gy=28: GO TO 560 535 IF e<70 THEN LET gx=6: LET gy=48: GO TO 560 540 IF e<90 THEN LET gx=10: LET gy=68: GO TO 560 545 IF e<110 THEN LET gx=14: LET gy=88: GO TO 560 550 IF e<128 THEN LET gx=19: LET gy=108: GO TO 560 555 LET gx=24: LET gy=143 560 PRINT AT 21,16;i;AT 0,6+INT (s/8)*4;" ";AT 0,6+INT (s/8)*4;e: GO SUB 600: PRINT AT qx,1+INT (s/17);CHR$ e;AT gy-e,gx;CHR$ e: GO SUB 610: RETURN 600 POKE 23606,86: POKE 23607,251: RETURN 610 POKE 23606,0: POKE 23607,60: RETURN 785 IF ci=9600 THEN GO SUB cs+20: RETURN 790 IF ci=9000 AND cs=5 OR cs=8 OR cs>15 THEN GO SUB cs+20: RETURN 795 RETURN 800 FLASH 1: PRINT AT 17,8;"jesemenet!": RETURN 8000 GO SUB 8100 8002 LET n=CODE INKEY$: IF n=53 THEN GO SUB 8100: LET px=px-1 8005 IF px<5 THEN LET px=20 8010 IF n=54 THEN GO SUB 8100: LET py=py+1 8015 IF py>16 THEN LET py=1 8020 IF n=55 THEN GO SUB 8100: LET py=py-1 8025 IF py<1 THEN LET py=16 8030 IF n=56 THEN GO SUB 8100: LET px=px+1 8035 IF px>20 THEN LET px=5 8040 IF n=48 THEN PAPER 7: PRINT AT py,px;CHR$ 128 8042 IF n=57 THEN PAPER 0: PRINT AT py,px;CHR$ 143: PAPER 7 8045 FOR t=103 TO 105: PLOT 104,t: PLOT t,104: NEXT t 8050 RETURN 8100 LET at=INT ((ATTR (py,px))/8) 8105 IF at=7 THEN PRINT AT py,px;CHR$ 134: PRINT AT py,px;CHR$ 137: PRINT AT py,px;CHR$ 128 8110 IF at=0 THEN PAPER 7: PRINT AT py,px;CHR$ 134: PRINT AT py,px;CHR$ 137: PAPER 0: PRINT AT py,px;CHR$ 143: PAPER 7 8980 RETURN 9000 GO SUB 9015: INPUT "Display previous work? ";n$: IF n$<>"n" THEN LET tx=5: LET ty=1: FOR t=1 TO 256: GO TO 9003 9001 RETURN 9003 IF k(t)=1 THEN PAPER 0: PRINT AT ty,tx;CHR$ 143: PAPER 7: GO TO 9010 9005 PRINT AT ty,tx;CHR$ 128 9010 LET tx=tx+1: IF tx>20 THEN LET tx=5: LET ty=ty+1 9011 NEXT t: GO SUB 34: RETURN 9015 LET ci=9600: BORDER 1: PAPER 5: BRIGHT 1: FOR t=0 TO 21: PRINT AT t,0;" ";: NEXT t 9060 BRIGHT 0: FOR t=4 TO 21: PRINT AT 0,t;" ";AT 17,t;" ": NEXT t 9070 FOR t=1 TO 16: PRINT AT t,4;" ";AT t,21;" ": NEXT t 9080 PRINT AT 0,4;"_";AT 0,21;"_";AT 8,4;"_";AT 8,21;"_" 9090 FOR t=32 TO 39: PLOT 39,t: PLOT 103,t: PLOT 168,t: PLOT 39,t+136: PLOT 103,t+136: PLOT 168,t+136: NEXT t 9092 PRINT AT 0,8;"-1-";AT 17,8;"-3-";AT 0,15;"-2-";AT 17,15;"-4-" 9093 PLOT 39,39: DRAW 0,129: DRAW 129,0: DRAW 0,-129: PLOT 32,39: DRAW 143,0 9130 BRIGHT 0: PAPER 7: FOR t=1 TO 16: PRINT AT t,5;" ": NEXT t 9200 INK 0: PAPER 5: BRIGHT 1 9215 PRINT AT 18,1;"ABCD" 9225 PAPER 7: BRIGHT 0 9250 RETURN 9500 PRINT AT j,a;"-1-";AT j+1,a;"-2-";AT j+2,a;"-3-";AT j+3,a;"-4-";AT j+4,a;"all": RETURN 9520 PAPER 1: BRIGHT 0: FOR t=0 TO 21: PRINT AT t,26;" ": NEXT t 9530 BRIGHT 1: FOR t=0 TO 21: PRINT AT t,27;" ": NEXT t 9540 BRIGHT 0: PRINT AT 0,27;"ERASE";AT 7,27;"SWATH";AT 8,27;"SAVE ";AT 9,27;"CODES";AT 15,27;"STORE";AT 21,27;"PRINT" 9550 BRIGHT 1: LET a=28: LET j=1: GO SUB 9500 9560 LET j=10: GO SUB 9500: LET j=16: GO SUB 9500 9570 PRINT AT 6,a;"row": PAPER 7: BRIGHT 0: RETURN 9600 INPUT "Returning to current work? ";n$: IF n$<>"n" THEN PAPER 7: GO SUB 800: LET tx=5: LET ty=1: FOR t=1 TO 256: GO TO 9602 9601 GO TO 9608 9602 IF INT (ATTR (ty,tx)/8)<>7 THEN LET k(t)=1: GO TO 9605 9603 LET k(t)=0 9605 LET tx=tx+1: IF tx>20 THEN LET tx=5: LET ty=ty+1 9606 NEXT t 9608 LET ci=9000: FLASH 0: BORDER 5: PAPER 5: BRIGHT 0: FOR t=0 TO 21: PRINT AT t,0;" ": NEXT t 9610 LET bb=0: LET xp=32: LET yp=49: LET wp=28: LET xt=0: GO SUB 9720 9620 LET xp=50: LET yp=69: LET wp=48: LET xt=4: GO SUB 9720 9630 LET xp=70: LET yp=89: LET wp=68: LET xt=8: GO SUB 9720 9640 LET xp=90: LET yp=99: LET wp=88: LET xt=12: GO SUB 9720 9650 LET xp=100: LET yp=109: LET xt=11: GO SUB 9720 9660 LET xp=110: LET yp=127: LET wp=108: LET xt=16: GO SUB 9720 9670 LET xp=144: LET yp=164: LET wp=143: LET xt=21: LET bb=1: GO SUB 9720 9680 PAPER 7: PRINT AT 0,6;" ": PAPER 5: PRINT AT 16,25;" ";AT 16,19;"- ";AT 18,19;"- ";AT 0,0;"1 2";AT 1,0;"3 4" 9690 PRINT AT 0,5;"1";AT 0,9;"2";AT 0,13;"3";AT 0,17;"4": BRIGHT 1: PRINT AT 3,0;"C#:";AT 0,21;"UDG:";AT 20,16;"addr:": PAPER 7: BRIGHT 0: PRINT AT 21,16;"63568";AT 0,1;" ";AT 1,1;" " 9700 BRIGHT 0: RETURN 9720 FOR z=xp TO yp: LET aa=z-wp: PAPER 5: BRIGHT bb: PRINT AT aa,xt;z; 9730 POKE 23606,86: POKE 23607,251: PAPER 7: BRIGHT 0: PRINT CHR$ z: POKE 23606,0: POKE 23607,60: NEXT z: RETURN 9999 SAVE "UDG+" LINE 10: SAVE "UDG+" LINE 10 1 REM cfe/mc (+demo) 3 CLS : PRINT AT 9,4;"18 seconds to lift-off..."'''"The demo (lines 2000 thru 9999) is a dummy menu screen showing some of cfe's potential. To re-start GO TO 2000." 4 LET code=45000 5 LET print=code+13 6 POKE 23728,(code-256*INT (code/256)): POKE 23729,INT (code/256) 7 FOR t=code TO code+1501: READ o: POKE t,o: NEXT t 8 REM CFE CODE 10 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,213,197,229,245,217,8,213,197,229,245,237,91,176,92,24,13,0,0,0,0 20 DATA 0,0,0,0,0,225,35,24,7,42,85,92,1,5,0,9,126,254,173,32,6,235,54,2,235,24,77,254,172,32,6,235,54,1,235,24,67 30 DATA 254,34,32,6,229,33,26,1,25,233 40 DATA 235,22,65,1,116,0,9,114,35,35,35,119,62,0,205,48,18,62,69,215,62,82,215,62,82,215,62,79,215,62,82,215,62,32,215,62,120,215,62,120,215 50 DATA 205,9,32,56,251,241,225,193,209,8,217,241,225,193,209,201 60 DATA 35,126,1,97,8,213,229,33,3,0,25,235,225,185,32,3,26,24,50,12,19,16,246,209,1,48,10,185,40,8,12,16,250,235,22,66,24,164 70 DATA 213,198,208,79,35,26,254,1,40,4,30,59,24,2,30,44,126,187,121,40,11,6,9,129,16,253,79,62,208,134,129,35,209,1,118,92,2 80 DATA 35,229,26,254,2,40,35,1,8,168,58,118,92,111,62,0,189,40,8,60,245,120,145,71,241,24,245,120,213,235,17,12,0,25,209,119,62,2,18,225,24,140 90 DATA 58,118,92,1,8,8,103,62,0,203,68,40,1,129,203,33,203,44,16,245,213,235,17,11,0,25,209,119,225 100 DATA 35,24,2,24,141,126,254,34,32,51,35,126,254,58,32,18,229,33,38,0,229,46,11,124,25,119,35,126,214,8,119,225,25,233,254,59,40,5 110 DATA 33,126,0,24,233,35,126,254,13,32,5,33,126,0,25,233,43,229,33,38,0,25,233,254,39,32,14,35,126,254,39,32,4,62,34,24,8,43,126,24,4 120 DATA 203,127,32,20,6,7,229,213,22,0,95,213,225,25,16,253,209,229,24,122,198,185,24,236,254,199,40,248,254,200,40,244,254,201,40,240 130 DATA 24,5,235,22,67,24,137,254,197,40,77,254,195,40,114,254,172,40,120,254,204,40,18,254,203,40,104,254,198,40,102,254,205,40,100,254,226,40,98 140 DATA 24,217,229,213,225,35,126,254,1,40,7,54,1,1,138,24,24,5,54,0,1,217,229,33,73,2,25,112,35,113,24,123,229,8,217,197,245,121,193,144 150 DATA 193,79,120,198,248,71,8,24,101,229,33,45,2,25,126,254,56,40,4,54,56,24,2,54,48,24,88 160 DATA 193,33,198,1,25,9,8,126,8,126,213,229,33,11,0,25,78,35,70,225,197,24,18 170 DATA 24,68,24,162,24,160,24,158,24,156,229,33,11,0,25,53,24,47 180 DATA 217,193,217,71,35,175,126,197,6,8,23,217,48,7,197,245,205,62,38,241,193,4,217,16,241,193,217,12,120,198,248,71,217,16,225 190 DATA 209,33,11,0,25,229,217,225,113,35,112,217,33,26,1,25,233 200 DATA 62,0,50,119,92,35,126,254,34,40,37,254,195,32,46,213,225,1,116,0,9,54,61,35,35,35,58,119,92,6,2,79,175,121,23,56,4,16,251,14,32,121,119,33,92,0,25,233 210 DATA 33,37,0,25,58,119,92,119,33,126,0,25,233,203,127,40,21,1,199,2,185,40,13,12,16,250,254,172,32,183,58,119,92,61,24,174,198,185 220 DATA 229,213,6,7,22,0,95,213,225,25,16,253,209,229,193,33,198,1,25,9,58,119,92,134,225,24,145 980 REM CLASSY FONT TABLE DATA 1000 DATA 4,0,0,0,0,0,0,0.,3,0,94,94,0,0,0,0.,5,0,7,0,0,7,0,0.,6,34,255,34,34,255,34,0.,6,0,44,110,255,74,48,0 1010 DATA 7,0,12,10,102,50,94,54.,5,0,40,124,214,84,0,0.,3,0,4,3,0,0,0,0.,4,0,60,126,129,0,0,0.,4,0,129,126,60,0,0,0 1020 DATA 6,0,10,4,31,4,10,0.,6,0,16,16,124,16,16,0.,3,0,144,112,0,0,0,0.,5,0,24,24,24,24,0,0.,3,0,96,96,0,0,0,0 1030 DATA 4,0,96,24,6,0,0,0.,6,0,60,126,82,74,60,0.,4,0,68,126,64,0,0,0.,5,0,100,98,82,76,0,0.,6,0,34,66,74,126,50,0 1040 DATA 5,0,24,20,126,16,0,0.,5,0,46,78,74,50,0,0.,6,0,56,124,74,74,48,0.,5,0,2,114,26,14,0,0.,6,0,52,126,74,74,52,0 1050 DATA 6,0,12,94,82,82,60,0.,3,0,40,40,0,0,0,0.,3,0,168,104,0,0,0,0.,5,0,24,60,102,129,0,0.,3,40,40,40,0,0,0,0 1060 DATA 5,0,129,102,60,24,0,0.,6,0,4,2,82,94,12,0.,7,0,4,50,42,122,66,60.,6,0,124,126,18,18,124,0.,6,0,126,126,74,74,52,0 1070 DATA 6,0,60,126,66,66,36,0.,6,0,126,126,66,66,60,0.,6,0,126,126,74,74,66,0.,6,0,126,126,10,10,2,0.,6,0,60,126,66,82,116,0 1080 DATA 6,0,126,126,8,8,126,0.,5,0,66,126,126,66,0,0.,6,0,48,64,64,126,62,0.,6,0,126,126,24,36,66,0.,6,0,126,126,64,64,64,0 1090 DATA 7,0,126,126,4,8,4,126.,7,0,126,126,12,48,126,126.,6,0,60,126,66,66,60,0.,6,0,126,126,18,18,12,0.,6,0,60,126,82,98,252,0 1100 DATA 6,0,126,126,18,50,108,0.,6,0,44,110,74,74,48,0.,6,2,2,126,126,2,2,0.,6,0,62,126,64,64,62,0.,7,0,6,30,120,96,24,6 1110 DATA 7,0,62,126,64,48,64,62.,7,0,66,102,60,24,36,66.,7,2,6,12,120,120,4,2.,6,0,98,114,90,78,70,0.,3,0,255,129,0,0,0,0 1120 DATA 4,0,6,24,96,0,0,0.,3,0,129,255,0,0,0,0.,7,0,62,30,30,62,114,32.,6,128,128,128,128,128,128,0.,7,0,252,254,194,194,194,126 1130 DATA 5,0,48,120,72,120,0,0.,5,0,126,72,120,48,0,0.,5,0,48,120,72,72,0,0.,5,0,48,120,72,126,0,0.,5,0,48,120,104,88,0,0 1140 DATA 4,0,8,126,10,0,0,0.,5,0,176,248,200,248,0,0.,5,0,126,8,8,112,0,0.,4,0,72,122,64,0,0,0.,3,128,128,122,0,0,0,0 1150 DATA 5,0,126,16,48,72,0,0.,4,0,66,126,64,0,0,0.,7,0,120,120,8,120,8,112.,5,0,120,120,8,112,0,0.,5,0,48,120,72,48,0,0 1160 DATA 5,0,248,72,120,48,0,0.,5,0,48,120,72,248,0,0.,5,0,120,112,8,8,0,0.,5,0,80,88,120,40,0,0.,4,0,8,126,72,0,0,0 1170 DATA 5,0,56,120,64,120,0,0.,5,0,24,48,96,24,0,0.,7,0,56,120,64,48,64,56.,5,0,72,48,48,72,0,0.,5,0,152,184,96,56,0,0 1180 DATA 5,0,72,104,88,72,0,0.,6,1,1,1,1,1,1,0.,4,0,255,255,0,0,0,0.,6,170,170,170,170,170,170,0.,7,68,108,56,31,56,108,68 1190 DATA 5,0,24,60,231,36,0,0 1200 DATA 6,255,119,219,119,219,255,0.,3,0,24,24,0,0,0,0.,7,24,48,96,48,8,4,2 2000 REM DRAW MAIN SCREEN 2005 PAPER 5: BORDER 1: CLS : PAPER 7: FOR t=0 TO 7: PRINT " ";: NEXT t: PLOT 2,2: DRAW 250,0: DRAW 0,166: DRAW -250,0: DRAW 0,-166: PLOT 2,159: DRAW 250,0: RANDOMIZE USR print 2010 REM AT 0,1;">= File Edit OR Demo^ OR Windows Options";AT 1,0;" }`}}}}}}}} CLASSY FRONT END DEMO }}}}}}}}}" 2020 PAPER 5: RANDOMIZE USR print 2030 REM AT 2,2;">= New 2068 Medium character set:" 2040 FOR t=1 TO 6: RANDOMIZE USR print 2050 REM " !''#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO" 2060 RANDOMIZE USR print 2070 REM "AT PQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyzAT AT { STICK } FREE " 2080 RANDOMIZE USR print 2090 REM " AT \*<=>=<>%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO" 2100 NEXT t 2500 REM ARROW KEY LOOP 2510 PAPER 7: GO SUB 8200 2520 LET a=11: GO SUB 6020 3000 IF INKEY$="6" THEN GO SUB 6000 3010 IF CODE INKEY$=13 THEN STOP 3020 IF INKEY$="7" THEN GO SUB 6030 3030 GO TO 3000 5990 REM MENU ICON 6000 PRINT AT a,6;" ": GO SUB 7890+a*10 6010 LET a=a+1: IF a=20 THEN LET a=11 6020 PRINT AT a,6;" ": GO SUB 7980+a*10: RETURN 6030 PRINT AT a,6;" ": GO SUB 7890+a*10 6040 LET a=a-1: IF a=10 THEN LET a=19 6050 PRINT AT a,6;" ": GO SUB 7980+a*10: RETURN 7990 REM menu subroutines 8000 RANDOMIZE USR print 8005 REM AT 11,6;">= AT AT ''Kerning'' function " 8009 RETURN 8010 RANDOMIZE USR print 8015 REM AT 12,6;">= AT OR Inverse AT AT printing " 8019 RETURN 8020 RANDOMIZE USR print 8025 REM AT 13,6;">= AT TO Vertical AT AT printing " 8029 RETURN 8030 RANDOMIZE USR print 8035 REM AT 14,6;">= AT NOT AT AT Line AT AT length AT tester " 8039 RETURN 8040 RANDOMIZE USR print 8045 REM AT 15,6;">= AT AT STEP, AT AT AND,AT AT THEN, AT AT STAT OP" 8049 RETURN 8050 RANDOMIZE USR print 8055 REM AT 16,6;">= AT ERROR AT AT codes A, B, C " 8059 RETURN 8060 RANDOMIZE USR print 8065 REM AT 17,6;">= AT Using color commands " 8069 RETURN 8070 RANDOMIZE USR print 8075 REM AT 18,6;">= AT Using OVER & ERASE " 8079 RETURN 8080 RANDOMIZE USR print 8085 REM AT 19,6;">= AT QUIT AT program AT demos " 8089 RETURN 8090 RANDOMIZE USR print 8095 REM AT 11,6;" OR >= AT AT ''Kerning'' function OR " 8099 RETURN 8100 RANDOMIZE USR print 8105 REM AT 12,6;" OR >= AT OR Inverse AT AT printing OR " 8109 RETURN 8110 RANDOMIZE USR print 8115 REM AT 13,6;" OR >= AT TO Vertical AT AT printing OR " 8119 RETURN 8120 RANDOMIZE USR print 8125 REM AT 14,6;" OR >= AT NOT AT Line AT AT length AT AT tester OR " 8129 RETURN 8130 RANDOMIZE USR print 8135 REM AT 15,6;" OR >= AT STEP, AT AT AND,AT AT THEN, AT AT STAT OP OR " 8139 RETURN 8140 RANDOMIZE USR print 8145 REM AT 16,6;" OR >= AT ERROR AT codes A, B, C OR " 8149 RETURN 8150 RANDOMIZE USR print 8155 REM AT 17,6;" OR >= AT Using color commands AT AT AT OR " 8159 RETURN 8160 RANDOMIZE USR print 8165 REM AT 18,6;" OR >= AT Using OVER & ERASE AT AT AT OR " 8169 RETURN 8170 RANDOMIZE USR print 8175 REM AT 19,6;" OR >= AT QUIT AT program AT demos AT AT AT OR " 8179 RETURN 8190 REM DRAW MENU BOX 8200 PAPER 7: FOR t=9 TO 20: PRINT AT t,6;" ": NEXT t: PLOT 46,104: DRAW 0,-98: DRAW 113,0: DRAW 0,1: DRAW -112,0: DRAW 0,88: DRAW 112,0: PLOT 46,104: DRAW 114,0: DRAW 0,-97: PAPER 3: RANDOMIZE USR print 8210 REM AT 9,6;"}}}}}} MENU }}}}}}}" 8230 PAPER 7: FOR b=11 TO 19: GO SUB 7890+b*10: NEXT b 8240 RETURN 9999 SAVE "cfe/mc" LINE 3: SAVE "cfe/mc" LINE 3 1 REM window & porthole demo 2 CLS : PRINT AT 10,8;"just a second...";AT 14,0;"(to go to next demo after port- holes just press ""2"")";AT 0,0; 5 FOR t=55000 TO 56163: READ o: POKE t,o: NEXT t: DATA 213,197,229,245,217,8,213,197,229,245,17,216,214,33,3,4 10 DATA 125,1,3,15,185,40,5,12,16,250,24,10,124,1,4,25,185,40,6,12,16,250,33,10,16,34,118,92 1360 DATA 1,8,168,62,0,189,40,8,60,245,120,145,71,241,24,245,120,217,71,217,65,62,0,203,68,40,1,129,203,33,203,44,16,245 1370 DATA 217,79,197,217,235,209,229,1,112,0,9,126,254,128,40,16,131,79,35,126,130,71,35,229,213,205,62,38,209,225,24,235,35,233 1380 DATA 237,24,238,24,239,25,20,24,21,24,19,25,18,26,17,27,16,27,230,16,231,16,231,17,231,18,27,16,26,17,26,18,25,19,24,20,24,21 1390 DATA 231,235,230,236,231,236,229,237,230,237,231,237,229,238,230,238,231,238,228,239,229,239,230,239,231,239,24,236,24,237,25,238,26,239 1400 DATA 239,228,237,229,238,229,239,229,236,230,237,230,238,230,239,230,234,231,235,231,236,231,237,231,238,231,239,231,16,229,16,230,17,230,17,231,18,231,18,231,128 1410 DATA 37,1,36,0,9,229,62,2,205,48,18,42,118,92,62,35,148,103,62,27,149,111,69,76,205,20,9,1,157,3,225,34,54,92,9,233 1420 DATA 0,0,0,0,0,0,0,0.,0,1,6,24,32,192,3,12.,63,192,0,0,31,224,0,0.,255,0,0,0,255,0,0,0.,128,112,12,3,0,224,28,3 1430 DATA 12,24,48,97,194,132,136,8.,16,96,128,0,0,0,0,0.,130,65,32,16,8,4,4,2.,7,6,14,12,28,24,56,56.,16,32,32,64,64,128,128,128 1440 DATA 1,1,0,0,0,0,0,0.,16,8,136,132,68,66,66,34.,49,113,113,97,226,226,226,226.,34,33,33,17,17,17,17,17.,226,226,226,226,226,225,241,241 1450 DATA 17,17,17,17,33,33,34,34.,248,120,120,124,60,62,30,31.,128,128,64,64,32,16,8,4.,0,0,0,0,1,1,2,2.,68,68,132,136,8,16,16,32.,132,194,225,240,248,252,255,127 1460 DATA 0,0,0,192,32,24,6,129.,0,0,0,0,0,1,6,24.,4,8,16,32,193,2,12,24.,224,248,252,255,127,31,7,0.,240,15,0,0,224,255,255,127 1465 DATA 1,254,0,0,0,255,255,254.,224,1,7,31,252,240,192,0 1470 DATA 1,6,24,32,96,224,224,224.,255,0,0,0,0,0,0,0.,224,224,224,224,224,224,224,224.,224,24,6,1,1,1,1,1.,1,1,1,1,1,1,1,1.,1,1,1,6,28,248,240,192.,224,224,224,248,254,127,31,7.,0,0,0,0,0,255,255,255 1475 DATA 63,32,239,232,232,232,232,232.,255,0,255,0,0,0,0,0.,232,232,232,232,232,232,232,232.,255,1,253,5,5,5,5,5.,5,5,5,5,5,5,5,5.,5,5,5,253,1,255,252,252.,232,232,232,239,224,255,255,255.,0,0,0,255,0,255,255,255 1480 DATA 1,6,8,16,49,98,228,228.,255,0,0,255,0,0,0,0.,228,228,228,228,228,228,228,228.,224,24,4,194,34,17,9,9.,9,9,9,9,9,9,9,9.,17,34,194,4,24,240,224,128.,226,241,240,120,126,63,31,7.,0,0,255,0,0,255,255,255 1485 DATA 0,0,7,12,20,52,212,212.,14,19,253,1,7,15,9,6.,212,212,212,212,212,212,212,212.,0,0,255,1,1,1,1,1.,1,1,1,1,1,1,1,1.,1,1,255,2,254,4,252,248.,212,212,215,208,223,192,255,255.,0,0,255,0,255,0,255,255 1490 DATA 0,63,42,250,230,254,225,255.,0,255,170,170,170,170,170,255.,225,255,225,255,225,255,225,255.,0,254,170,174,178,190,194,254.,130,254,130,254,130,254,130,254.,130,254,178,174,170,254,248,248.,225,255,230,250,234,255,255,255.,255,170,170,170,170,255,255,255 1495 DATA 123,196,192,202,192,235,66,202.,219,36,0,170,0,255,0,0.,194,234,66,202,226,74,194,202.,239,17,1,169,2,233,33,41.,33,41,34,41,33,42,33,41.,33,233,2,169,1,17,255,222.,194,235,64,202,192,196,255,247.,0,255,0,170,0,36,255,183 1500 DATA 7,62,82,209,209,255,126,12.,255,0,0,0,0,0,0,0.,14,28,15,30,4,14,28,28.,240,30,9,9,9,30,56,32.,16,48,64,32,16,16,32,32.,16,30,9,9,9,30,248,192.,14,62,82,209,209,254,127,15.,0,0,0,0,0,0,255,255 1510 DATA 62,33,215,62,34,215,62,35,215,62,36,215,42,136,92,37,62,5,133,111,229,193,205,20,9,62,37,215,62,38,215,6,3,62,32,215,16,251 1520 DATA 62,39,215,42,136,92,37,62,7,133,111,229,193,205,20,9,62,40,215,62,41,215,6,4,62,32,215,16,251,62,42,215,62,43,215,42,136,92,37 1530 DATA 62,8,133,111,229,193,205,20,9,62,44,215,6,6,62,32,215,16,251,62,45,215,42,136,92,37,62,8,133,111,229,193,205,20,9,62,46,215 1540 DATA 6,6,62,32,215,16,251,62,47,215,42,136,92,37,62,8,133,111,229,193,205,20,9,62,48,215,62,49,215,6,4,62,32,215,16,251,62,50,215 1550 DATA 62,51,215,42,136,92,37,62,7,133,111,229,193,205,20,9,62,52,215,62,53,215,62,32,215,62,32,215,62,54,215,62,55,215,42,136,92,37 1560 DATA 62,5,133,111,229,193,205,20,9,62,56,215,62,57,215,62,58,215,62,59,215,209,33,0,60,34,54,92 2000 DATA 241,225,193,209,8,217,241,225,193,209,201 3000 CLS : LET l=55000: FOR t=1 TO 44: PRINT "@@@@@@@@@@@@@@@@";: NEXT t 3010 LET x=RND*28: IF x<4 THEN GO TO 3010 3020 LET y=RND*17: IF y<3 THEN RANDOMIZE : GO TO 3010 3030 POKE l+14,y: POKE l+15,x: LET k=USR l 3040 PRINT AT y,x-2;INT (y+.5);",";INT (x+.5): IF INKEY$="2" THEN GO TO 4000 3050 GO TO 3010 4000 CLS 4005 LET x=0: LET y=0: LET chars=23606: GO SUB 4160 4010 FOR g=108 TO 60 STEP -8 4020 PRINT AT y,x;CHR$ g; 4030 FOR h=x+1 TO x+18: PRINT CHR$ (g+1);: NEXT h: PRINT CHR$ (g+3) 4040 FOR h=y+1 TO y+14: PRINT AT h,x;CHR$ (g+2);" ";CHR$ (g+4): NEXT h 4050 PRINT AT y+15,x;CHR$ (g+6);: FOR h=x+1 TO x+18: PRINT CHR$ (g+7);: NEXT h 4060 PRINT CHR$ (g+5) 4090 LET d=((g-60)/8+65): GO SUB 4150: PRINT AT y+4,x+6;"WINDOW ";CHR$ d;AT y+9,x+3;"Press any key": IF d<>65 THEN PRINT AT y+10,x+2;"for next window.": GO SUB 4160: GO TO 4110 4100 PRINT AT y+10,x+6;"to STOP.": GO SUB 4160 4110 IF INKEY$="1" THEN GO SUB 4150: GO TO 3000 4120 IF INKEY$="" THEN GO TO 4110 4130 LET x=x+2: LET y=y+1: NEXT g 4140 GO SUB 4150: STOP 4150 POKE chars,0: POKE chars+1,60: RETURN 4160 POKE chars,221: POKE chars+1,214: RETURN 9999 SAVE "w&p" LINE 2: SAVE "w&p" LINE 2 ```