10 !  Ins{nt till ABC-klubben f|r fri disposition 11 !  841013. Programmet konstruerat 840125 12 !  Programmerare Mikael Wahlgren 13 !  H{ggv{gen 3 14 !  681 00 Kristinehamn 15 !  tel 0550-197 62 16 !  ======================== 17 !  Grafikprogram till ABC800/806 med HR-grafik 18 !  Programmet kr{ver i nuvarande skick en 19 !  floppy-enhet, men kan l{tt g|ras om s} att 20 !  det g}r {nd}. Man f}r d} avst} fr}n att 21 !  spara bilderna. 22 !  Det {r l{tt att {ndra grafik-mode om man har 23 !  ABC806. Det skall bara vara att {ndra p} 24 !  variablerna C och D f|rst i programmet 25 !  och sedan {ndra grafik FGCTL-kommandot. 26 !  Det blir antagligen lite problem n{r 27 !  man dumpar sk{rmen p} skrivaren, s} 28 !  man f}r g|ra om den rutinen i s} fall. 29 !  Om man v{ljer att ha 16 f{rger 30 !  f}r man antingen l{gga in f{rgerna p} 31 !  andra funktionstangenter, eller 32 !  ocks} v{lja f{rgerna 4-15 genom 33 !  CTRL PF2. 34 !  Programmet sp}rar ur p} en del st{llen 35 !  p} grund av bristande felhantering. 36 !  Om man har suttit och jobbat med en 37 !  bild b}de l{nge och v{l... och programmet 38 !  sedan sp}rar ur kan man l{tt r{dda bilden 39 !  genom att skriva: 40 !  PUT #2,CHR$(210) 41 !  CLOSE 42 !  NAME "BUFFERT.BLD" AS "Bildnamn.BLD" 43 !  Ledtexterna hoppar tyv{rr upp p} en 44 !  del st{llen, i st{let f|r att suddas 45 !  ut (i alla fall om man har ABC800). 46 !  Editeringsfunktionerna {r mycket brist- 47 !  f{lliga (obefintliga skulle man kunna s{ga). 48 !  Dessa f}r man konstruera sj{lv om man vill. 49 !  ================================ 50 !  Funktionstangenter 51 !  PF1-PF4 -F{rg 0-3 52 !  Shift PF1 -Hoppar |ver redan ritad del 53 !  PF5 -Fyller ett slutet omr}de i en viss f{rg (FGPAINT) 54 !  PF6 -Konstruerar m}ngh|rningar (0 h|rn f|r cirkel) 55 !  man kan {ven rita ut en del av m}ngh|rningen 56 !  PF7 -G|r linje mellan aktuell pos och lagrad pos 57 !  CTRL PF7 -Raderar punktminnet 58 !  Shift PF7 -Lagrar pos (f|r linje or rektangel) 59 !  PF8 -[ndrar storlek och f{rg p} bokst{verna 60 !  Shift PF3 -Lagrar bild p} skiva 61 !  Shift PF4 -H{mtar bild fr}n skiva 62 !  a-| -Bokst{ver ofyllda 63 !  A-\ -Bokst{ver fyllda 64 !  (Siffror finns inte men kan l{tt l{ggas till i DATA-satserna sist) 65 !  Du styr med det numeriska tangentbordet }t resp h}ll. 66 !  Femman {r ledig till egen funktion 67 !  CTRL PF1 -T|mmer sk{rmen 68 !  Shift CTRL PF1 -B|rjar om fr}n b|rjan (t|mmer BUFFERTEN) 69 !  Shift PF8 -[ndrar stegl{ngden p} mark|ren 70 !  Shift PF2 -G|r rektangel mellan akutell pos och lagrad pos (FGFILL) 71 !  CTRL PF2 -Mata in f{rgvalsnummer (samma sak som PF1-PF4) 72 !  Shift PF5 -Dumpar sk{rmen p} skrivaren 73 !  . -(punkt) [ndrar fr}n stor stegl{ngd till normal eller vice versa 74 !  ==================================== 75 !  === H{r b|rjar sj{lva programmet === 76 !  ==================================== 77 INTEGER : EXTEND : OPTION BASE 0 ! Justerat 850518 av Bo Kullmar s} att programmet g}r att l{gga ut i BAS-format 78 Pf1$=CHR$(192) : Pf2$=CHR$(193) : Pf3$=CHR$(194) : Pf4$=CHR$(195) : Pfs1$=CHR$(208) 79 OPEN "CON:" AS FILE 1 : PREPARE "BUFFERT.BLD" AS FILE 2 80 Bredd=PEEK(65364) : C=238 : D=238 : X.=C/2 : Y.=D/2 : ; CHR$(12); : A1.=1 : A.=(238/C)*1.3 : St.=1 : Skala.=1 : Sk=-1 : Bild=0 81 DIM Ia(3),Ib(3),Ja(3),Jb(3),Ka(3),Kb(3),La(3),Lb(3) 82 RESTORE 83 : FOR I=0 TO 3 : READ Ia(I),Ib(I),Ja(I),Jb(I),Ka(I),Kb(I),La(I),Lb(I) : NEXT I 83 DATA 0,0,0,0,0,0,0,0 84 DATA 128,64,32,16,8,4,2,1 85 DATA 128,192,32,48,8,12,2,3 86 DATA 192,192,48,48,12,12,3,3 87 Skala.=1 : St.=Skala. : Dummy=FNSkala : X=X. : Y=Y. 88 FGCTL 27 : F{rg$(0)="Svart" : F{rg$(1)="Gult" : F{rg$(2)="Bl}tt" : F{rg$(3)="Lila" 89 IF Q<>240 FGPOINT 0,0,0 : FGFILL C+1,D+1 90 POKE 65507,0 91 IF Sk J=FGPOINT(X+1,Y+1) : K=FGPOINT(X+1,Y-1) : L=FGPOINT(X-1,Y+1) : M=FGPOINT(X-1,Y-1) : FGPOINT X+1,Y+1,J+3 : FGPOINT X+1,Y-1,K+1 92 IF Sk FGPOINT X-1,Y+1,L+1 : FGPOINT X-1,Y-1,M+3 93 GET #1,Q$ : Q=ASCII(Q$) : IF Q=210 IF NOT Sk GOTO 246 94 IF Sk FGPOINT X+1,Y+1,J : FGPOINT X+1,Y-1,K : FGPOINT X-1,Y+1,L : FGPOINT X-1,Y-1,M : N=FGPOINT(X,Y) : FGPOINT X,Y,F 95 IF Q>48 AND Q<58 Dummy=FNStyr(Q-48) 96 IF Q>191 AND Q<196 OR (Q=208 AND NOT G) Dummy=FNF{rg(Q-192) 97 IF Q=46 IF St.=Skala. St.=Skala.*10 ELSE St.=Skala. 98 IF G GOTO 117 99 PUT #2,Q$ : IF Q=208 AND NOT Sk ; #2,X1 : ; #2,Y1 100 IF Q=35 Dummy=FNF{rgval 101 IF Q=243 Om=-1 102 IF Q=242 Om=0 103 IF Q=215 Dummy=FNStegl{ngd 104 IF Q=209 Dummy=FNRektangel 105 IF Q=240 GOTO 79 106 IF Q=196 Dummy=FNFyll 107 IF Q=197 Dummy=FNCirkel 108 IF Q=214 Dummy=FNLagrapunkt 109 IF Q=198 Dummy=FNLinje 110 IF Q=230 Dummy=FNMark|rbort 111 IF Q=199 Dummy=FNTeckenstorlek 112 IF Q=210 Dummy=FNLagrabild 113 IF Q=211 Dummy=FNH{mtabild 114 IF Q=212 Dummy=FNDumpa 115 IF Q=224 FGCTL 0 : GOTO 80 116 IF Q>64 AND Q<126 OR Q=13 OR Q=32 Dummy=FNBokstav : GOTO 90 117 Q=FNKontroll(Q) 118 IF G F=FGPOINT(X,Y) 119 IF G OR Q=197 OR Q=0 FGPOINT X,Y 120 IF Sk ; CUR(24,55) "Bild " Bild "X=" X "Y=" Y; 121 FGLINE X,Y,F : POKE 65507,0 : GOTO 91 122 ; CHR$(7) CUR(24,17) "Fel" ERRCODE; : IF ERRCODE=207 GOTO 93 ELSE RESUME 123 DEF FNBokstav 124 A2.=A1.*Skala. 125 FGPOINT X,Y,N : IF Q=13 AND Sk X.=1 : Y.=ABS(Y-A2.*40) : POSIT #2,POSIT(2)-1 : PUT #2,Pfs1$ : X=X. : Y=Y. : ; #2,X : ; #2,Y : RETURN 0 126 IF Q=32 X.=ABS(X+A2.*21) : X=X. : RETURN 0 ELSE IF Q=95 OR Q=96 OR Q=94 RETURN 0 127 IF Q>96 A2=1 : Q=Q-32 ELSE A2=0 128 T=Q-64 : ON T RESTORE 247,248,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,266,267,269,270,271,272,273,274,275,276,278,280 129 READ A3 : IF X+A2.*A3>C X=1 : Y=Y-A2.*40 130 IF Y<1 Y=1 ELSE IF Y+A2.*30>D Y=D-A2.*30 131 READ E$,K,R : IF E$="SLUT" X=X+A2.*K : X.=X : Y.=Y : RETURN 0 132 IF E$="P" FGPOINT X+A2.*K,Y+A2.*R*A.,F ELSE IF E$="F" AND A2=1 GOTO 131 ELSE IF E$="F" FGPAINT X+A2.*K,Y+A2.*R*A.,A1 ELSE FGLINE X+A2.*K,Y+A2.*R*A.,F 133 GOTO 131 134 FNEND 135 DEF FNStyr(Q) LOCAL Q 136 IF Q=1 X.=X.-St. : Y.=Y.-St. ELSE IF Q=2 Y.=Y.-St. ELSE IF Q=3 X.=X.+St. : Y.=Y.-St. ELSE IF Q=4 X.=X.-St. ELSE IF Q=6 X.=X.+St. 137 IF Q=7 Y.=Y.+St. : X.=X.-St. ELSE IF Q=8 Y.=Y.+St. ELSE IF Q=9 Y.=Y.+St. : X.=X.+St. 138 RETURN 0 139 FNEND 140 DEF FNFyll 141 FGPAINT X-1,Y-1,F 142 RETURN 0 143 FNEND 144 DEF FNF{rg(Q) LOCAL Q 145 ON ERROR GOTO 148 146 IF Q=16 AND NOT Sk INPUT #1,X1 : INPUT #1,Y1 : St.=Skala. : Dummy=FNSkala : X.=Sx+Skala.*X1 : Y.=Sy+Skala.*Y1 : G=-1 : GOTO 148 147 IF Q=16 ; CUR(24,0) "Hoppar "; : G=-1 : PUT #2,Q$ ELSE F=Q : ; CUR(24,0) F{rg$(F) " "; : IF G ; #2,X : ; #2,Y : G=0 : St.=Skala. 148 RETURN 0 149 FNEND 150 DEF FNF{rgval 151 ; CUR(24,17) "Vilken f{rg:"; 152 GET #1,Q$ 153 ON ERROR GOTO 152 154 F=VAL(Q$) : PUT #2,Q$ 155 ; CUR(24,0) F{rg$(F); 156 RETURN 0 157 FNEND 158 DEF FNCirkel 159 ON ERROR GOTO 159 : ; CUR(24,17) "Vilken radie "; : INPUT #1,P; : ; FNRensa$ CUR(24,17) "Hur m}nga h|rn "; : INPUT #1,R; : P=Skala.*P 160 ; FNRensa$ CUR(24,17) "Hel figur (J/N) "; : GET #1,P$ : ; FNRensa$; : FGPOINT X+P,Y : I.=0 : IF R=0 Z.=1./18. ELSE Z.=2*PI/R 161 ; #2,P : ; #2,R : PUT #2,P$ : IF NOT P$="N" WHILE I.<2*PI : I.=I.+Z. : FGLINE COS(I.)*P+X,SIN(I.)*P*A.+Y : WEND : GOTO 168 162 ; CUR(24,17) "4=Mots. 6=Meds."; : WHILE I.<2*PI : ; CUR(24,16); 163 GET #1,W$ : PUT #2,W$ : IF W$=Pf1$ F=0 ELSE IF W$=Pf2$ F=1 ELSE IF W$=Pf3$ F=2 ELSE IF W$=Pf4$ F=3 ELSE IF W$=Pfs1$ G=-1 ELSE 165 164 IF NOT W$=Pfs1$ G=0 : GOTO 167 165 IF W$="4" I.=I.+Z. ELSE IF W$="6" I.=I.-Z. ELSE 163 166 IF I.<0 I.=0 167 FGLINE COS(I.)*P+X,SIN(I.)*P*A.+Y,F : WEND 168 FGPOINT X,Y : RETURN 0 169 FNEND 170 DEF FNRensa$ 171 ; CUR(24,17) SPACE$(Bredd-38); 172 RETURN "" 173 FNEND 174 DEF FNLagrapunkt 175 IF ]=0 ]=X : [=Y 176 FGPOINT ]+1,[+1,J : FGPOINT ]+1,[-1,K : FGPOINT ]-1,[+1,L : FGPOINT ]-1,[-1,M : ]=X. : [=Y. 177 Z1=J : Z2=K : Z3=L : Z4=M : FGPOINT X+1,Y+1,J+3 : FGPOINT X+1,Y-1,K+1 : FGPOINT X-1,Y+1,L+1 : FGPOINT X-1,Y-1,M+3 : FGPOINT X,Y,F 178 RETURN 0 179 FNEND 180 DEF FNLinje 181 IF ]=0 THEN 182 ELSE FGPOINT X+1,Y+1,Z1 : FGPOINT X+1,Y-1,Z2 : FGPOINT X-1,Y+1,Z3 : FGPOINT X-1,Y-1,Z4 : FGPOINT ],[,F : FGLINE X,Y 182 RETURN 0 183 FNEND 184 DEF FNRektangel 185 IF ]=0 THEN 186 ELSE FGPOINT X+1,Y+1,Z1 : FGPOINT X+1,Y-1,Z2 : FGPOINT X-1,Y+1,Z3 : FGPOINT X-1,Y-1,Z4 : FGPOINT ],[,F : FGFILL X,Y 186 RETURN 0 187 FNEND 188 DEF FNMark|rbort 189 IF ]=0 GOTO 190 ELSE FGPOINT ]+1,[+1,Z1 : FGPOINT ]+1,[-1,Z2 : FGPOINT ]-1,[+1,Z3 : FGPOINT ]-1,[-1,Z4 190 RETURN 0 191 FNEND 192 DEF FNTeckenstorlek 193 ON ERROR GOTO 193 : ; CUR(24,17) "Teckenstorlek "; : INPUT #1,A1.; : ; FNRensa$ CUR(24,17) "Ev fylln f{rg "; : INPUT #1,A1; 194 ; FNRensa$; : ; #2,A1. : ; #2,A1 195 RETURN 0 196 FNEND 197 DEF FNLagrabild 198 ; CUR(24,17) "Vad skall bilden heta? "; : INPUT C$ : IF LEN(C$)>8 C$=LEFT$(C$,8) 199 ; CUR(24,0) SPACE$(Bredd-1); : CLOSE 2 : ON ERROR GOTO 200 : NAME "BUFFERT.BLD" AS C$+".BLD" : PREPARE "BUFFERT.BLD" AS FILE 2 : GOTO 202 200 ; FNRensa$ CUR(24,17) "Bilden finns redan. Skall den nya |verlagras (J/N)"; 201 GET T$ : IF T$="N" GOTO 202 ELSE IF T$="J" KILL C$+".BLD" : GOTO 199 ELSE 201 202 RETURN 0 203 FNEND 204 DEF FNH{mtabild 205 IF Sk ; CUR(24,17) "Vilken bild "; : INPUT C$ : ; CUR(24,0) SPACE$(Bredd-1); 206 ON ERROR GOTO 206 : ; CUR(24,17) "Vilken skala skall anv{ndas"; : INPUT #1,Skala. : IF Sk Skal.=Skala. 207 ; #2,Skala. : St.=Skala. 208 IF Skala.>1 Stor=-1 : Sk.=Skala. : Skala.=1 209 Sx=X.-Skala.*C/2. : Sy=Y.-Skala.*D/2. 210 Dummy=FNSkala : FGPOINT Sx,Sy,0 : FGFILL INT(Sx+Skala.*(C+1)),INT(Sy+Skala.*239) : FGPOINT X,Y 211 IF Sk ON ERROR GOTO 213 : OPEN C$+".BLD" AS FILE 1 : Sk=0 212 PUT #2,Q$ : RETURN FNSkala 213 ; CUR(24,17) "Bilden finns inte"; : GOTO 212 214 FNEND 215 DEF FNKontroll(Ctrl) LOCAL Ctrl 216 IF X.<1 X.=1 217 IF X.>C X.=C 218 IF Y.<1 Y.=1 219 IF Y.>D Y.=D 220 X=X. : Y=Y. 221 RETURN -1 222 FNEND 223 DEF FNSkala 224 Mx=Sx : My=Sy 225 RETURN 0 226 FNEND 227 DEF FNStegl{ngd 228 ON ERROR GOTO 228 : ; CUR(24,17) "Mata in stegl{ngden "; : INPUT #1,St. : ; #2,St. : St.=St.*Skala. 229 RETURN 0 230 FNEND 231 DEF FNDumpa 232 ON ERROR GOTO 244 233 OPEN "PR:VSA30A72.5" AS FILE 3 234 PRINT #3 235 FOR I=239 TO 1 STEP -4 : J=I-1 : K=J-1 : L=K-1 236 PRINT #3,CHR$(27,75,224,1); 237 FOR M=0 TO 239 238 I1=FGPOINT(M,I) : J1=FGPOINT(M,J) : K1=FGPOINT(M,K) : L1=FGPOINT(M,L) 239 ; #3,CHR$(Ia(I1)+Ja(J1)+Ka(K1)+La(L1),Ib(I1)+Jb(J1)+Kb(K1)+Lb(L1)); 240 NEXT M 241 PRINT #3,CHR$(27,65,8) 242 NEXT I 243 PRINT #3,CHR$(27,65,12) : FOR I=1 TO 6 : PRINT #3 : NEXT I 244 CLOSE 1 : RETURN 0 245 FNEND 246 CLOSE 1 : OPEN "CON:" AS FILE 1 : Sk=-1 : GOTO 93 247 DATA 21,P,0,0,,6,30,,12,30,,18,0,,12,0,,11,6,,7,6,,6,0,,0,0,P,10,12,,9,15,,8,12,,10,12,F,9,9,SLUT,21,0 248 DATA 21,P,0,0,,0,30,,12,30,,18,24,,18,18,,15,14,,18,12,,18,6,,12,0,,0,0,P,9,6,,6,6,,6,12,,12,12,,12,9,,9,6,P,6,18,,6,24,,9,24,,12,21,,12,18,,6,18,F,3,3 249 DATA SLUT,21,0 250 DATA 21,P,6,0,,0,6,,0,24,,6,30,,12,30,,18,24,,18,21,,12,21,,9,24,,6,21,,6,9,,9,6,,12,9,,18,9,,18,6,,12,0,,6,0,F,9,3,F,16,23,SLUT,21,0 251 DATA 21,P,0,0,,0,30,,12,30,,18,24,,18,6,,12,0,,0,0,P,6,6,,6,24,,9,24,,12,21,,12,9,,9,6,,6,6,F,3,3,SLUT,21,0 252 DATA 21,P,0,0,,0,30,,18,30,,18,24,,6,24,,6,18,,12,18,,12,12,,6,12,,6,6,,18,6,,18,0,,0,0,F,3,3,SLUT,21,0 253 DATA 21,P,0,0,,0,30,,18,30,,18,24,,6,24,,6,18,,12,18,,12,12,,6,12,,6,0,,0,0,F,3,3,SLUT,21,0 254 DATA 21,P,6,0,,0,6,,0,24,,6,30,,12,30,,18,24,,18,21,,12,21,,9,24,,6,21,,6,9,,9,6,,12,9,,12,15,,18,15,,18,0,,13,0,,13,2,,10,0,,6,0,F,5,5,F,16,23,SLUT,21,0 255 DATA 21,P,0,0,,0,30,,6,30,,6,18,,12,18,,12,30,,18,30,,18,0,,12,0,,12,12,,6,12,,6,0,,0,0,F,9,15,SLUT,21,0 256 DATA 9,P,0,0,,0,30,,6,30,,6,0,,0,0,F,3,3,SLUT,9,0 257 DATA 21,P,3,0,,0,3,,0,9,,6,9,,6,6,,9,6,,12,9,,12,30,,18,30,,18,6,,12,0,,3,0,F,6,3,SLUT,21,0 258 DATA 21,P,0,0,,0,30,,6,30,,6,21,,12,30,,18,30,,12,21,,18,0,,12,0,,8,15,,6,12,,6,0,,0,0,F,9,18,SLUT,21,0 259 DATA 21,P,0,0,,0,30,,6,30,,6,6,,18,6,,18,0,,0,0,F,3,3,SLUT,21,0 260 DATA 27,P,0,0,,0,30,,6,30,,12,23,,18,30,,24,30,,24,0,,18,0,,18,21,,12,14,,6,21,,6,0,,0,0,F,3,27,F,21,27,SLUT,27,0 261 DATA 21,P,0,0,,0,30,,6,30,,12,15,,12,30,,18,30,,18,0,,12,0,,6,15,,6,0,,0,0,F,3,27,F,15,27,SLUT,21,0 262 DATA 21,P,6,0,,0,6,,0,24,,6,30,,12,30,,18,24,,18,6,,12,0,,6,0,P,9,6,,6,9,,6,21,,9,24,,12,21,,12,9,,9,6,F,5,5,SLUT,21,0 263 DATA 21,P,0,0,,0,30,,12,30,,18,24,,18,18,,12,12,,6,12,,6,0,,0,0,P,6,18,,6,24,,9,24,,12,21,,9,18,,6,18,F,3,3,SLUT,21,0 264 DATA 21,P,6,0,,0,6,,0,24,,6,30,,12,30,,18,24,,18,6,,12,0,,6,0,P,16,4,,18,1,,18,0,,17,0,,14,2,P,9,6,,6,9,,6,21,,9,24,,12,21,,12,9,,9,6,F,5,5,F,17,1,F,16,2 265 DATA SLUT,21,0 266 DATA 21,P,0,0,,0,30,,12,30,,18,24,,18,18,,12,12,,18,0,,12,0,,6,12,,6,0,,0,0,P,6,18,,6,24,,9,24,,12,21,,9,18,,6,18,F,3,17,SLUT,21,0 267 DATA 21,P,3,0,,0,3,,0,9,,6,9,,6,6,,9,6,,12,9,,0,18,,0,24,,6,30,,15,30,,18,27,,18,21,,12,21,,12,24,,9,24,,6,21,,18,12,,18,6,,12,0,,3,0,F,5,4,F,16,24,SLUT 268 DATA 21,0 269 DATA 21,P,6,0,,6,24,,0,24,,0,30,,18,30,,18,24,,12,24,,12,0,,6,0,F,9,27,SLUT,21,0 270 DATA 21,P,6,0,,0,6,,0,30,,6,30,,6,9,,9,6,,12,9,,12,30,,18,30,,18,6,,12,0,,6,0,F,5,5,SLUT,21,0 271 DATA 21,P,6,0,,0,30,,6,30,,9,12,,12,30,,18,30,,12,0,,6,0,F,9,3,SLUT,21,0 272 DATA 27,P,0,0,,0,30,,6,30,,6,9,,12,16,,18,9,,18,30,,24,30,,24,0,,18,0,,12,7,,6,0,,0,0,F,11,8,F,22,3,SLUT,27,0 273 DATA 21,P,6,0,,0,0,,6,15,,0,30,,6,30,,9,23,,12,30,,18,30,,12,15,,18,0,,12,0,,9,7,,6,0,F,9,15,SLUT,21,0 274 DATA 21,P,6,0,,6,12,,0,30,,6,30,,9,21,,12,30,,18,30,,12,12,,12,0,,6,0,F,9,3,SLUT,21,0 275 DATA 21,P,0,0,,0,6,,12,24,,0,24,,0,30,,18,30,,18,24,,6,6,,18,6,,18,0,,0,0,F,9,15,SLUT,21,0 276 DATA 21,P,0,0,,6,26,,12,26,,18,0,,12,0,,11,6,,7,6,,6,0,,0,0,P,8,9,,9,12,,10,9,,8,9,P,5,28,,5,30,,7,30,,7,28,,5,28,P,11,28,,11,30,,13,30,,13,28,,11,28 277 DATA F,9,17,F,6,29,F,12,29,SLUT,21,0 278 DATA 21,P,6,0,,0,6,,0,20,,6,26,,12,26,,18,20,,18,6,,12,0,,6,0,P,9,6,,6,9,,6,17,,9,20,,12,17,,12,9,,9,6,P,5,28,,5,30,,7,30,,7,28,,5,28,P,11,28,,11,30,,13 279 DATA 30,,13,28,,11,28,F,5,5,F,6,29,F,12,29,SLUT,21,0 280 DATA 21,P,0,0,,6,26,,12,26,,18,0,,12,0,,11,6,,7,6,,6,0,,0,0,P,8,9,,9,12,,10,9,,8,9,P,8,28,,8,30,,10,30,,10,28,,8,28,F,9,17,F,9,29,SLUT,21,0