' Interface driver routine for ' IBM Personal Computer ' Copyright (C) fischerwerke 1986 ' Version 2.1 ' ' changes made to make it run in qbasic ' no hardware control only plots to screen ' penup lines are grey pendown lines are yellow 'this file uses data lines for the font 'this is not the same as the downloadable file from fischer technic 'this was used on home telly computers (MSX,Etc) before this ibm interface 'that GWbasic program will not run in qbasic SCREEN 9 CLS GOSUB 19530 PRINT " Plotter-Initialization" GOSUB home CLS GOSUB 19530 PRINT " Reading character set " DIM Z%(95, 9) FOR I = 0 TO 94 FOR J = 0 TO 9 'these lines load the character font data lines READ Z%(I, J) NEXT J: NEXT I GOSUB 19530 REM ****************************** REM *** Begin of user program *** REM ****************************** SCREEN 12 begin: WINDOW (-0, -0)-(640, 480) X = 20 Y = 450 a$ = "Fischer-Technic Basic Plotter" r = 0 G = 4 GOSUB char XA = 1 YA = 1 XE = 639 YE = 479 S = 0 GOSUB drawbox X = 20 Y = 430 a$ = "Anno 1985 for Micro$oft BASIC BBC, C64, CPC64, AppleII, MSX" r = 0 G = 2 GOSUB char X = 20 Y = 30 a$ = "Http://www.luberth.com or Http://cstep.luberth.com" r = 0 G = 2 GOSUB char X = 20 Y = 10 a$ = "Mailto: Luberth@geocities.com " r = 0 G = 2 GOSUB char X = 320 Y = 240 a$ = " Changes by Luberth May 1999" r = 0 G = 2 GOSUB char X = 320 Y = 240 a$ = " HTTP://home.wxs.nl/~luberth" r = 1 G = 1 GOSUB char X = 320 Y = 240 a$ = " A Nice Plotter Example" r = 2 G = 1 GOSUB char X = 320 Y = 240 a$ = " From Fischer Technic" r = 3 G = 1 GOSUB char X = 320 Y = 240 rX = 50 rY = 50 wa = 0 we = 360 GOSUB drawcircle X = 320 Y = 240 rX = 50 rY = 100 wa = 0 we = 360 GOSUB drawcircle X = 320 Y = 240 rX = 100 rY = 50 wa = 0 we = 360 GOSUB drawcircle XA = 25 YA = 50 XE = 225 YE = 150 S = -7 GOSUB drawbox XA = 415 YA = 50 XE = 615 YE = 150 S = 7 GOSUB drawbox X = 20 Y = 360 a$ = "Fischer Technic" r = 0 G = 8 GOSUB char GOSUB home SLEEP 5 CLS WINDOW (0, 0)-(640, 480) 8000 DEF FNX (T) = COS(T) 8010 DEF FNY (T) = SIN(T) 8020 LET f$ = "Circle" 8030 LET TA = 0: LET TE = 6.28: LET TS = .1 8040 REM Loop from 0 to 2*PI step 0.1 8050 LET AX = 1: LET SK = 1 8060 REM Draw axis and scale them 8070 LET XA = -1.1: LET XE = 1.1: LET YA = -1.1: LET YE = 1.1 8080 LET YA = -1.1: LET YE = 1.1 8090 REM 8100 REM *** Program PARAM_F *** 8110 PRINT 8120 PRINT " Two-dimensional function plot" 8130 PRINT " "; f$ 8140 REM Same scale for X and Y 8150 REM Box XA,YA,XE,YE in the middle of the paper 8160 REM 8170 IF (XE - XA) * YM > (YE - YA) * XM THEN GOTO 8210 8180 LET YS = YM / (YE - YA): LET YH = -YA * YS 8190 LET XS = YS: LET XH = (XM - (XE + XA) * XS) / 2 8200 GOTO 8230 8210 LET XS = XM / (XE - XA): LET XH = -XA * XS 8220 LET YS = XS: LET YH = (YM - (YE + YA) * YS) / 2 8230 IF AX = 0 THEN GOTO 1270 8240 LET X1 = XA: LET X2 = XE: LET Y1 = YA: LET Y2 = YE 8250 LET X$ = f$: LET Y$ = "Fischer Technic " 8260 GOSUB drawaxis 8270 LET X = FNX(TA) 8280 LET Y = FNY(TA) 8290 GOSUB move: REM Go to start 8300 FOR T = TA TO TE STEP TS 8310 LET X = FNX(T) 8320 LET Y = FNY(T) 8330 GOSUB plotline 8340 NEXT T 8350 LET X = FNX(TE) 8360 LET Y = FNY(TE) 8370 GOSUB plotline 8380 GOSUB home SLEEP 5 CLS WINDOW (0, 0)-(640, 480) 1000 DEF FNcY (X) = SIN(X) * EXP(-X / 10) 1010 f$ = "SIN(X)*EXP(-X/10)" 1020 XA = 0: XE = 62.8 1030 REM 1040 REM *** Program FUNCTION *** 1070 1080 LOCATE 1, 25: PRINT " One-dimensional function plot" 1090 LOCATE 2, 25: PRINT " "; f$ 1100 REM 1110 REM Calculate min and max of the function 1120 mi! = FNcY(XA) 1130 ma! = FNcY(XA) 1140 FOR X = XA TO XE STEP (XE - XA) / 200 1150 IF FNcY(X) > ma! THEN ma! = FNcY(X) 1160 IF FNcY(X) < mi! THEN mi! = FNcY(X) 1170 NEXT X 1180 X1 = XA - (XE - XA) / 20 1190 X2 = XE + (XE - XA) / 20 1200 Y1 = mi! - (ma! - mi!) / 20 1210 Y2 = ma! + (ma! - mi!) / 20 1220 XA = 10: XE = XM - 10 1230 YA = 10: YE = YM - 10 1240 X$ = f$ 1250 Y$ = f$ 1260 SK = 1 1270 GOSUB drawaxis: : REM Draw axis 1280 X = X1 + (X2 - X1) / 22 1290 Y = FNcY(X) 1300 GOSUB move: : REM Go to starting point 1310 FOR x0 = X1 + (X2 - X1) / 22 TO X2 - (X2 - X1) / 22 STEP (X2 - X1) / 220 1320 X = x0: Y = FNcY(X) 1330 GOSUB plotline: 1340 NEXT x0 1350 GOSUB home: 1360 SLEEP 5 CLS WINDOW (-0, -0)-(640, 480) X = 1 Y = 350 a$ = "Have a nice day" r = 0 G = 8 GOSUB char X = 1 Y = 230 a$ = "Press + and to exit" r = 0 G = 3 GOSUB char X = 1 Y = 100 a$ = "Or wait to start again" r = 0 G = 5 GOSUB char SLEEP 5 CLS GOTO begin REM *************************** REM *** End of user program *** REM *************************** END 19500 REM ********************** 19510 REM *** Screen display *** 19520 REM ********************** 19530 CLS 19540 PRINT 19550 PRINT " fischertechnik" 19560 PRINT " computing" 19570 PRINT 19580 REM COLOR H, S 19590 PRINT " " 19600 PRINT " Plotter " 19610 PRINT " " 19620 REM COLOR S, H 19630 PRINT 19640 RETURN 19800 REM 19810 REM Important global variables: 19820 REM 19830 REM XM,YM: width, height of plotter area 19835 REM in plotter steps 19836 REM (680,500) = right, top corner 19837 REM (0,0) = left, bottom corner 19840 REM XJ,YJ: absolute coordinates 19845 REM of the actual point 19860 REM XH,YH: virtual (logical) zero 19865 REM in absolute coordinates 19866 REM (0,0) = at the beginning 19870 REM XS,YS: scale, number of 19875 REM plotter steps per logic unit 19876 REM 1 unit = 1 plotter step at the beginning 19880 REM XO,YO: (=xout,yout) flags; 19890 REM become 1, when XJ,YJ are 19895 REM out of the range 0...XM,0...YM 19896 REM Set up of the default values in the course of the 19897 REM HOME-routine 19898 REM MG$="off" pen lifted 19900 REM 19910 REM ******************************* 19920 REM *** P l o t t e r t o o l s *** 19930 REM ******************************* 19940 REM 19950 REM Variables used in this routine: 19960 REM 19970 REM G,R,RX,RY,S,SK,W,WA,WE,WS,A$,X$,Y$ 19980 REM X,X0,X1,X2,X3,XA,XE,XH,XS,Y 19985 REM Y0,Y1,Y2,Y3,YA,YD,YE,YH,YS 19990 drawbox: IF XA > XE THEN X = XE: XE = XA: XA = X IF YA > YE THEN Y = YE: YE = YA: YA = Y X = XA: Y = YA: GOSUB move X = XA: Y = YE: GOSUB plotline X = XE: Y = YE: GOSUB plotline X = XE: Y = YA: GOSUB plotline X = XA: Y = YA: GOSUB plotline IF S = 0 THEN RETURN 'Hatch FOR xd = 0 TO (XE - XA) + (YE - YA) STEP ABS(S) IF xd < (YE - YA) THEN X = XA: Y = YE - xd: GOTO 20140 X = XA + xd + YA - YE: Y = YA 20140 IF S < 0 THEN Y = YE + YA - Y GOSUB move: IF xd > (XE - XA) THEN X = XE: Y = YE + XE - XA - xd: GOTO 20180 X = XA + xd: Y = YE 20180 IF S < 0 THEN Y = YE + YA - Y GOSUB plotline NEXT xd RETURN drawcircle: 21020 rX = ABS(rX): rY = ABS(rY) 21030 XA = X: YA = Y: REM Save center coordinates 21040 X = XA + rX * COS(ATN(1) * wa / 45) 21050 Y = YA + rY * SIN(ATN(1) * wa / 45) 21060 GOSUB move 21070 REM Angel steps 21080 WS = SGN(we - wa) * 800 / (rX * XS + rY * YS + 40) 21090 FOR W = wa TO we STEP WS 21100 X = XA + rX * COS(ATN(1) * W / 45) 21110 Y = YA + rY * SIN(ATN(1) * W / 45) 21120 GOSUB plotline 21130 NEXT W 21140 X = XA + rX * COS(ATN(1) * we / 45) 21150 Y = YA + rY * SIN(ATN(1) * we / 45) 21160 GOSUB plotline 21170 RETURN drawaxis: 22010 22020 REM XA,XE,YA,YE specify position of the axes 22030 REM using actual scale factor. 22040 REM X1,X2,Y1,Y2 are the coordinates 22050 REM of the end points of the axes. 22060 22070 REM Scaling the plotter area 22080 REM corresponding to the axes. 22090 22100 REM X0,X3,Y0,Y3: new coordinates 22110 REM at the borders of the plotter area. 22120 22130 x0 = X1 - (X2 - X1) * (XA + XH / XS) / (XE - XA) 22140 X3 = X2 + (X2 - X1) * ((XM - XH) / XS - XE) / (XE - XA) 22150 Y0 = Y1 - (Y2 - Y1) * (YA + YH / YS) / (YE - YA) 22160 Y3 = Y2 + (Y2 - Y1) * ((YM - YH) / YS - YE) / (YE - YA) 22170 XS = XM / (X3 - x0) 22180 YS = YM / (Y3 - Y0) 22190 XH = -x0 * XS 22200 YH = -Y0 * YS 22210 REM Draw axes 22220 IF Y1 > 0 OR Y2 < 0 THEN GOTO 22490 22230 REM X-Axis 22240 X = X1: Y = 0: GOSUB move: 22250 X = X2: Y = 0: GOSUB plotline: 22260 X = -10 / XS: Y = 5 / YS: GOSUB Rline: 22270 X = 10 / XS: Y = -5 / YS: GOSUB rmove: 22280 X = -10 / XS: Y = -5 / YS: GOSUB Rline: 22290 REM Scaling and tering 22300 IF SK = 0 THEN GOTO 22490 22310 REM Step width for scaling 22320 XE = INT(LOG(X2 - X1) / LOG(10) - .3) 22323 xd = 1 22326 IF XE > 0 THEN FOR I = 1 TO XE: xd = xd * 10: NEXT 22329 IF XE < 0 THEN FOR I = XE TO -1: xd = xd / 10: NEXT 22330 IF (LEN(STR$(xd)) + 1) * 10 > xd * XS THEN xd = xd * 5: GOTO 22350 22340 IF (LEN(STR$(xd)) + 1) * 40 < xd * XS THEN xd = xd / 2 22350 x0 = 0 22360 IF x0 + 1.2 * xd < X2 THEN x0 = x0 + xd: GOTO 22360 22370 REM No lettering at origin 22380 IF ABS(x0) < xd / 2 THEN GOTO 22450 22390 X = x0: Y = 3 / YS: GOSUB move: 22400 X = x0: Y = -3 / YS: GOSUB plotline: 22410 a$ = STR$(x0): r = 0: G = 2 22420 IF x0 > 0 THEN a$ = "+" + RIGHT$(a$, LEN(a$) - 1) 22430 X = x0 - 5 * LEN(a$) / XS: Y = -18 / YS 22440 GOSUB char: 22450 IF x0 - 1.2 * xd > X1 THEN x0 = x0 - xd: GOTO 22380 22460 a$ = X$: r = 0: G = 2 22470 X = X2 - 10 * LEN(a$) / XS: Y = 12 / YS 22480 GOSUB char: 22490 IF X1 > 0 OR X2 < 0 THEN RETURN 22500 REM Y-Axis 22510 X = 0: Y = Y1: GOSUB move 22520 X = 0: Y = Y2: GOSUB plotline 22530 X = -5 / XS: Y = -10 / YS: GOSUB Rline 22540 X = 5 / XS: Y = 10 / YS: GOSUB rmove 22550 X = 5 / XS: Y = -10 / YS: GOSUB Rline 22560 REM Scaling and lettering 22570 IF SK = 0 THEN RETURN 22580 REM Step width for scaling 22590 YE = INT(LOG(Y2 - Y1) / LOG(10) - .3) 22593 Yd = 1 22596 IF YE > 0 THEN FOR I = 1 TO YE: Yd = Yd * 10: NEXT 22599 IF YE < 0 THEN FOR I = YE TO -1: Yd = Yd / 10: NEXT 22600 IF Yd * YS < 20 THEN Yd = Yd * 100: GOTO 22620 22610 IF Yd * YS > 60 THEN Yd = Yd / 2 22620 Y0 = 0 22630 IF Y0 + 1.2 * Yd < Y2 THEN Y0 = Y0 + Yd: GOTO 22630 22640 REM No lettering at origin 22650 IF ABS(Y0) < Yd / 2 THEN 22720 22660 Y = Y0: X = -3 / XS: GOSUB move: 22670 Y = Y0: X = 3 / XS: GOSUB plotline: 22680 a$ = STR$(Y0): r = 0: G = 2 22690 IF Y0 > 0 THEN a$ = "+" + RIGHT$(a$, LEN(a$) - 1) 22700 X = 8 / XS: Y = Y0 - 6 / YS 22710 GOSUB char 22720 IF Y0 - 1.2 * Yd > Y1 THEN Y0 = Y0 - Yd: GOTO 22650 22730 a$ = Y$: r = 1: G = 2 22740 X = -12 / XS: Y = Y2 - 10 * LEN(a$) / YS 22750 GOSUB char 22760 RETURN 22770 39900 REM ************************************ 39910 REM *** S i m p l e C o m m a n d s *** 39920 REM ************************************ 39930 REM 39940 REM Variables used in this routine: 39950 REM 39960 REM A$,E7,E8,I0,J0,J1,D,DX,DY,NX,NY,PE 39970 REM R,XP%,YP%,XN%,YN%,Z%,Z%(,) 39980 REM X,Y,X1,Y1,X2,Y2,XH,YH,XJ,YJ 39985 REM XM,YM,X0,Y0,XS,YS,XY,H 39990 home: 40010 40020 GOSUB penup 40030 Xj = 0: Yj = 0 40040 REM IF USR(E7) = 1 AND USR(E8) = 1 THEN GOSUB 57060: GOTO 40040 40050 REM IF USR(E7) = 1 THEN GOSUB 51050: GOTO 40050 40060 REM IF USR(E7) = 0 THEN GOSUB 50050: GOTO 40060 40070 REM IF USR(E8) = 1 THEN GOSUB 53050: GOTO 40070 40080 REM IF USR(E8) = 0 THEN GOSUB 52050: GOTO 40080 40090 REM GOSUB 54060: GOSUB 54060 40100 XM = 680: YM = 500 40110 XH = 0: YH = 0: XS = 1: YS = 1 40120 XOUT = 0: YOUT = 0 40125 r = 0: G = 2 40130 RETURN origin: 41010 GOSUB penup 41020 X = 0: Y = 0 41030 GOSUB move 41040 RETURN setorigin: REM *** SET ORIGIN *** 42010 XH = XH + X * XS 42020 YH = YH + Y * YS 42030 RETURN scale: 43020 IF NOT (X1 < X2) OR NOT (Y1 < Y2) THEN RETURN 43030 XS = XM / (X2 - X1) 43040 YS = YM / (Y2 - Y1) 43050 XH = -X1 * XS 43060 YH = -Y1 * YS RETURN plotline: 44020 GOSUB pendown: : REM Pen down 44030 X = INT(XH + XS * X - Xj + .5) 44040 Y = INT(YH + YS * Y - Yj + .5) 44050 REM X,Y now contain the relative distance 44060 REM in plotter steps. 44070 REM Number of plotter steps to the target point 44080 dX = ABS(X): dY = ABS(Y) 44090 nX = 0: nY = 0: REM Step counter 44100 d = 0: REM Distance to the optimum 44110 IF nX = dX AND nY = dY THEN RETURN 44120 IF ABS(d + dY) < ABS(d + dY - dX) THEN GOTO 44190 44130 IF ABS(d - dX) < ABS(d + dY - dX) THEN GOTO 44240 44140 REM Diagonal step 44150 ON 1 - 2 * (X > 0) - (Y > 0) GOSUB xandyminstep, xminyplusstep, xplusyminstep, xandyplusstep 44160 nX = nX + 1: nY = nY + 1 44170 d = d + dY - dX 44180 GOTO 44110 44190 REM X-Step 44200 ON -(X > 0) + 1 GOSUB xminstep, xplusstep 44210 nX = nX + 1 44220 d = d + dY 44230 GOTO 44110 44240 REM Y-Step 44250 ON -(Y > 0) + 1 GOSUB yminstep, yplusstep 44260 nY = nY + 1 44270 d = d - dX 44280 GOTO 44110 move: GOSUB penup GOTO 44030 Rline: GOSUB pendown 26040 X = INT(XS * X + .5) Y = INT(YS * Y + .5) GOTO 44050 rmove: GOSUB penup GOTO 26040 char: 48020 GOSUB move 48030 IF a$ = "" THEN RETURN 48040 FOR i0 = 1 TO LEN(a$) 48050 j0 = 0 48060 XPREV% = 0: YPREV% = 3: REM Starting point 48070 IF MID$(a$, i0, 1) = CHR$(8) THEN XNW% = -5: YNW% = 3: penS = 0: GOTO 48220 48080 Z% = Z%(ASC(MID$(a$, i0, 1)) - 32, j0): J1 = 0 48090 IF Z% = 0 THEN 48200 48100 XNW% = INT(Z% / 1000): YNW% = INT(Z% / 100) - 10 * XNW% 48110 Z% = 100 * (Z% - 1000 * XNW% - 100 * YNW%) 48120 penS = 0 48130 IF XNW% > 4 THEN XNW% = XNW% - 5: penS = -1 48140 GOSUB 48250 48150 XPREV% = XNW%: YPREV% = YNW% 48160 IF Z% <> 0 THEN J1 = 1: GOTO 48100 48170 IF j0 = 9 THEN GOTO 48200 48180 IF J1 = 1 THEN j0 = j0 + 1: GOTO 48080 48190 IF Z%(ASC(MID$(a$, i0, 1)) - 32, j0 + 1) <> 0 THEN J1 = 1: GOTO 48100 48200 REM ter is drawn, go to right lower corner 48210 XNW% = 5: YNW% = 3: penS = 0 48220 GOSUB 48250 48230 NEXT i0 48240 RETURN 48250 REM Draw, stretch and turn vector 48260 X = (XNW% - XPREV%) * G 48270 Y = (YNW% - YPREV%) * G 48280 IF r = 1 THEN Xy = X: X = -Y: Y = Xy 48290 IF r = 2 THEN X = -X: Y = -Y 48300 IF r = 3 THEN Xy = X: X = Y: Y = -Xy 48310 X = X / XS: Y = Y / YS 48320 IF penS THEN GOSUB Rline 48330 IF NOT penS THEN GOSUB rmove 48340 RETURN rchar: 49020 GOSUB rmove 49030 GOTO 48040 ' *********************************************** ' *** E l e m e n t a r y m o v e m e n t s *** ' *********************************************** xplusstep: REM *** +X-movement *** 50020 Xj = Xj + 1 50030 GOSUB CheckOutOfRange 50040 IF XOUT THEN RETURN 50050 50060 50070 50080 50090 50100 50110 50120 GOSUB checklimitswitch 50130 RETURN xminstep: REM *** -X-movement *** 51020 Xj = Xj - 1 51030 GOSUB CheckOutOfRange 51040 IF XOUT THEN RETURN 51050 51060 51070 51080 51090 51100 51110 51120 GOSUB checklimitswitch 51130 RETURN yplusstep: REM *** +Y-movement *** 52020 Yj = Yj + 1 52030 GOSUB CheckOutOfRange 52040 IF YOUT THEN RETURN 52050 52060 52070 52080 52090 52100 52110 52120 GOSUB checklimitswitch 52130 RETURN yminstep: REM *** -Y-movement *** 53020 Yj = Yj - 1 53030 GOSUB CheckOutOfRange 53040 IF YOUT THEN RETURN 53050 53060 53070 53080 53090 53100 53110 53120 GOSUB checklimitswitch 53130 RETURN xandyplusstep: REM *** +X/+Y-diagonal *** 54020 Xj = Xj + 1: Yj = Yj + 1 54030 GOSUB CheckOutOfRange 54040 IF XOUT THEN 52040 54050 IF YOUT THEN 50040 54060 54070 54080 54090 54100 54110 54120 54130 GOSUB checklimitswitch 54140 RETURN xplusyminstep: REM *** +X/-Y-diagonal *** 55020 Xj = Xj + 1: Yj = Yj - 1 55030 GOSUB CheckOutOfRange 55040 IF XOUT THEN 53040 55050 IF YOUT THEN 50040 55060 55070 55080 55090 55100 55110 55120 55130 55140 55150 GOSUB checklimitswitch 55160 RETURN xminyplusstep: REM *** -X/+Y-diagonal *** 56020 Xj = Xj - 1: Yj = Yj + 1 56030 GOSUB CheckOutOfRange 56040 IF XOUT THEN GOTO 52040 56050 IF YOUT THEN GOTO 51040 56060 56070 56080 56090 56100 56110 56120 56130 56140 56150 GOSUB checklimitswitch 56160 RETURN xandyminstep: REM *** -X/-Y-diagonal *** 57020 Xj = Xj - 1: Yj = Yj - 1 57030 GOSUB CheckOutOfRange 57040 IF XOUT THEN GOTO 53040 57050 IF YOUT THEN GOTO 51040 57060 57070 57080 57090 57100 57110 57120 57130 GOSUB checklimitswitch 57140 RETURN pendown: IF XOUT OR YOUT THEN RETURN IF MG$ = "on" THEN RETURN MG$ = "on" RETURN penup: IF MG$ = "off" THEN RETURN MG$ = "off" RETURN checklimitswitch: RETURN CheckOutOfRange: '***print to screen and dont overwrite pendown with penup lines************* IF MG$ = "off" THEN getpointcolor = POINT(Xj, Yj) IF getpointcolor <> 14 THEN PSET (Xj, Yj), 8 END IF IF MG$ = "on" THEN PSET (Xj, Yj), 14 '*************************************************************************** 61020 IF XOUT OR YOUT THEN GOTO 61080 61030 REM Last position was inside 61040 XOUT = Xj < 0 OR Xj > XM 61050 YOUT = Yj < 0 OR Yj > YM 61060 IF XOUT OR YOUT THEN GOSUB penup 61070 RETURN 61080 REM Last position was outside 61090 XOUT = Xj < 0 OR Xj > XM 61100 YOUT = Yj < 0 OR Yj > YM 61110 IF XOUT OR YOUT THEN RETURN 61120 IF MG$ = "on" THEN H = 0: GOSUB pendown RETURN ' *** CHARACTER SET *** DATA 0,0,0,0,0,0,0,0,0,0 DATA 9320,7900,0,0,0,0,0,0,0,0 DATA 3987,1967,0,0,0,0,0,0,0,0 DATA 1369,3983,4757,595,0,0,0,0,0,0 DATA 2379,4788,6857,6686,9584,6455,0,0,0,0 DATA 9908,5767,6858,4594,8485,9500,0,0,0,0 DATA 4573,6354,5587,8879,6958,5793,0,0,0,0 DATA 2989,8877,0,0,0,0,0,0,0,0 DATA 3977,7583,0,0,0,0,0,0,0,0 DATA 1977,7563,0,0,0,0,0,0,0,0 DATA 696,3864,1884,0,0,0,0,0,0,0 DATA 696,2874,0,0,0,0,0,0,0,0 DATA 2484,8372,0,0,0,0,0,0,0,0 DATA 696,0,0,0,0,0,0,0,0,0 DATA 2374,0,0,0,0,0,0,0,0,0 DATA 9900,0,0,0,0,0,0,0,0,0 DATA 557,6989,9795,8363,5500,0,0,0,0,0 DATA 3363,2379,6800,0,0,0,0,0,0,0 DATA 869,8998,9754,5393,0,0,0,0,0,0 DATA 869,8998,9786,7636,9594,8363,5400,0,0,0 DATA 4555,7939,8300,0,0,0,0,0,0,0 DATA 463,8394,9687,6756,5999,0,0,0,0,0 DATA 566,8695,9483,6354,5869,8998,0,0,0,0 DATA 9959,0,0,0,0,0,0,0,0,0 DATA 1657,5869,8998,9786,6655,5463,8394,9586,0,0 DATA 463,8394,9889,6958,5766,8697,0,0,0,0 DATA 2374,2677,0,0,0,0,0,0,0,0 DATA 2675,2473,6200,0,0,0,0,0,0,0 DATA 4956,9300,0,0,0,0,0,0,0,0 DATA 595,4757,0,0,0,0,0,0,0,0 DATA 996,5300,0,0,0,0,0,0,0,0 DATA 869,8998,9775,2473,0,0,0,0,0,0 DATA 3363,5457,6888,9795,8574,6566,7787,8500,0,0 DATA 5679,9693,4555,0,0,0,0,0,0,0 DATA 8394,9586,6636,9798,8959,1963,0,0,0,0 DATA 4889,6958,5463,8394,0,0,0,0,0,0 DATA 8394,9889,5919,6300,0,0,0,0,0,0 DATA 5999,3656,393,0,0,0,0,0,0,0 DATA 5999,3656,0,0,0,0,0,0,0,0 DATA 4889,6958,5463,8394,9676,0,0,0,0,0 DATA 5906,9649,9300,0,0,0,0,0,0,0 DATA 1383,2379,1989,0,0,0,0,0,0,0 DATA 463,7384,8929,9900,0,0,0,0,0,0 DATA 5906,9906,9300,0,0,0,0,0,0,0 DATA 953,9300,0,0,0,0,0,0,0,0 DATA 5976,9993,0,0,0,0,0,0,0,0 DATA 5993,9900,0,0,0,0,0,0,0,0 DATA 458,6989,9894,8363,5400,0,0,0,0,0 DATA 1369,989,9897,8666,0,0,0,0,0,0 DATA 458,6989,9894,8363,5425,9300,0,0,0,0 DATA 1369,989,9897,8666,2693,0,0,0,0,0 DATA 463,8394,9586,6657,5869,8998,0,0,0,0 DATA 2379,999,0,0,0,0,0,0,0,0 DATA 954,6383,9499,0,0,0,0,0,0,0 DATA 973,9900,0,0,0,0,0,0,0,0 DATA 956,6375,8396,9900,0,0,0,0,0,0 DATA 993,4953,0,0,0,0,0,0,0,0 DATA 976,7326,9900,0,0,0,0,0,0,0 DATA 999,5393,0,0,0,0,0,0,0,0 DATA 5679,9693,4555,958,4998,0,0,0,0,0 DATA 457,6888,9794,8363,5409,5849,9800,0,0,0 DATA 954,6383,9499,1968,3988,0,0,0,0,0 DATA 779,9700,0,0,0,0,0,0,0,0 DATA 90,0,0,0,0,0,0,0,0,0 DATA 3979,7887,0,0,0,0,0,0,0,0 DATA 667,8796,9345,6554,6383,9400,0,0,0,0 DATA 953,667,8796,9483,6354,0,0,0,0,0 DATA 4687,6756,5463,8394,0,0,0,0,0,0 DATA 4993,4687,6756,5463,8394,0,0,0,0,0 DATA 585,9687,6756,5463,8394,0,0,0,0,0 DATA 2378,8999,3666,0,0,0,0,0,0,0 DATA 261,8192,9687,6756,5463,8394,0,0,0,0 DATA 5906,6787,9693,0,0,0,0,0,0,0 DATA 3363,2377,6728,7900,0,0,0,0,0,0 DATA 161,7277,6728,7900,0,0,0,0,0,0 DATA 1963,1597,1593,0,0,0,0,0,0,0 DATA 303,3363,2379,6900,0,0,0,0,0,0 DATA 5787,9693,2377,0,0,0,0,0,0,0 DATA 753,667,8796,9300,0,0,0,0,0,0 DATA 456,6787,9694,8363,5400,0,0,0,0,0 DATA 157,667,8796,9483,6354,0,0,0,0,0 DATA 4197,4687,6756,5463,8394,0,0,0,0,0 DATA 5706,6787,9600,0,0,0,0,0,0,0 DATA 463,8394,8565,5667,8796,0,0,0,0,0 DATA 1686,2973,8300,0,0,0,0,0,0,0 DATA 754,6383,9447,9300,0,0,0,0,0,0 DATA 773,9700,0,0,0,0,0,0,0,0 DATA 755,6375,8395,9700,0,0,0,0,0,0 DATA 793,397,0,0,0,0,0,0,0,0 DATA 773,4761,0,0,0,0,0,0,0,0 DATA 797,5393,0,0,0,0,0,0,0,0 DATA 667,8796,9345,6554,6383,9419,6839,8800,0,0 DATA 456,6787,9694,8363,1139,0,0,0,0,0 DATA 3988,1968,754,6383,9447,9300,0,0,0,0 DATA 0566,8495,0,0,0,0,0,0,0,0