home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 12 / CD_ASCQ_12_0294.iso / maj / 2364 / minilab / scope2.bas < prev    next >
BASIC Source File  |  1994-02-15  |  57KB  |  1,339 lines

  1. REM W. Prévost 1993 : Minilab : SCOPE
  2. DECLARE SUB IconRefaire (a, B)
  3. DECLARE SUB IconGraf (a, B)
  4. DECLARE SUB IconSchema (a, B)
  5. DECLARE SUB IconDataBook (a, B)
  6. DECLARE SUB IconQuitter (a, B)
  7. DECLARE SUB Clic (ClickDelay%)
  8. DECLARE SUB Mouse (OnOff%)
  9. DECLARE SUB ResetMouse ()
  10. DECLARE SUB GetMouse ()
  11. DECLARE SUB MouseSpeed (Curseur%)
  12. DECLARE SUB ReadData ()
  13. DECLARE SUB SaisieNum (Num$, lo%, X%, Y%)
  14. DECLARE FUNCTION Interr% (Num%, AX%, Bx%, CX%, DX%)
  15. DIM SHARED MS%(45)
  16. CLEAR , , 6000
  17. ReadData
  18. DIM SHARED a, B, X%, Y%, B%, key$
  19. REM
  20. SCREEN 12: DEFINT A-E, G-Z: DEFLNG F
  21. OPEN "Minilab\SETUP.INI" FOR INPUT AS #1
  22. SEEK #1, 1
  23. INPUT #1, CoulBarreTitre, CoulLettresTitre, CoulZoneTravail
  24. INPUT #1, VitesseSouris, ClickDelay
  25. CLOSE #1
  26. debuter:
  27. ON ERROR GOTO TraiteErreur
  28. REM ----------------------- Interface Générateur Sigx ---------------
  29. debut: cf = 3: GOSUB BarTitre
  30. Y = 44: c = 0: X = 245: GOSUB generat: X = 246: GOSUB generat
  31. '     barre bas + icones
  32. LINE (3, 415)-(636, 476), 15, BF: LINE (3, 415)-(636, 415), 0
  33. LINE (3, 417)-(636, 417), 0
  34. LINE (0, 0)-(639, 479), 0, B: LINE (1, 1)-(638, 478), 7, B
  35. LINE (2, 2)-(637, 477), 0, B
  36. c = 0: Y = 427
  37. X = 50: GOSUB refaire: c = 9: X = 130: GOSUB graf: X = 195: GOSUB schem
  38. X = 274: GOSUB dbook: X = 364: GOSUB memo: X = 415: GOSUB menu
  39. c = 0: X = 51: GOSUB refaire: c = 9: X = 131: GOSUB graf: X = 196: GOSUB schem
  40. X = 275: GOSUB dbook: X = 365: GOSUB memo: X = 416: GOSUB menu
  41. c = 4: X = 480: GOSUB quit: X = 481: GOSUB quit
  42.  
  43. IconRefaire 50, 440
  44. IconGraf 120, 440
  45. IconSchema 170, 440
  46. a = 170: B = 440: c = 13: X = a + 23: Y = B + 22: GOSUB I: GOSUB c
  47. IconDataBook 220, 440
  48. X = 270: Y = 445: GOSUB URI: X = 271: GOSUB URI
  49. X = 270: Y = 456: GOSUB 707: X = 271: GOSUB 707
  50. Y = 465: X = 282: GOSUB PUI: X = 283: GOSUB PUI
  51. a = 320: B = 440: LINE (a, B)-(a + 40, B + 30), 0, B            'Icon MENU
  52. LINE (a + 2, B + 2)-(a + 38, B + 11), 9, BF
  53. X = a + 6: Y = B + 6: c = 15: GOSUB menu: X = a + 7: GOSUB menu
  54. LINE (a + 2, B + 13)-(a + 38, B + 24), 7, BF
  55. IconQuitter 370, 440
  56. X = 375: Y = 456: GOSUB sod: X = 376: GOSUB sod
  57. REM -------------------- REFAIRE --------------------------------
  58. recomm:
  59. frm = 0: unitV1 = 0: V1 = 0: UnitF1 = 0: Fq1 = 0: RCa = 0: RCb = 0
  60. frm2 = 0: unitV2 = 0: V2 = 0: unitF2 = 0: Fq2 = 0: RCc = 0: RCd = 0
  61. DIM valnb(25) AS INTEGER: ndg = 0: lim = 0: nfp = 0
  62.  
  63. a = 50: aa = 590: B = 130: bb = 360: cf = 7: GOSUB boite     'cadre général
  64.    FOR I = 20 TO 180 STEP 40
  65.    LINE (a + 20, B + I)-(305, B + I + 30), 0, B
  66.    LINE (305, B + I)-(305, B + I + 30), 15
  67.    LINE -(a + 20, B + I + 30), 15: NEXT I
  68.    FOR I = 20 TO 180 STEP 40
  69.    LINE (325, B + I)-(aa - 20, B + I + 30), 0, B
  70.    LINE (aa - 20, B + I)-(aa - 20, B + I + 30), 15
  71.    LINE -(325, B + I + 30), 15: NEXT I
  72.  
  73. REM ::::::::::::::::::::::::::::::::::::::::::::::::::::
  74. a = 205: aa = 435: B = 70: bb = 115: cf = 7: GOSUB boite
  75. Y = 90: c = 15: X = 231
  76. GOSUB mode: GOSUB trt: GOSUB MONO: GOSUB ou: GOSUB trt: GOSUB DUAL: GOSUB pintr
  77. Y = 91: c = 0: X = 230
  78. GOSUB mode: GOSUB trt: GOSUB MONO: GOSUB ou: GOSUB trt: GOSUB DUAL: GOSUB pintr
  79. ResetMouse
  80. Curseur% = VitesseSouris
  81. MouseSpeed Curseur%
  82. 1 : GOSUB Entree
  83. IF Y% > 10 AND Y% < 15 THEN GOSUB MonoDual
  84. Y = 90: c = 15: X = 410
  85. IF f$ = "M" THEN GOSUB Mm: X = 409: Y = 91: c = 0: GOSUB Mm: mode = 1: GOTO 2
  86. IF f$ = "D" THEN GOSUB Dm: X = 409: Y = 91: c = 0: GOSUB Dm: mode = 2: GOTO 2
  87. IF f$ <> "M" OR f$ <> "V" THEN BEEP: GOTO 1
  88.  
  89. 2 : Y = 165: c = 15: X = 81: GOSUB sigal: GOSUB SinCarTri
  90. Y = 166: c = 0: X = 80: GOSUB sigal: GOSUB SinCarTri
  91. 20 : GOSUB Entree
  92. IF Y% > 20 AND Y% < 25 THEN GOSUB SiCaTr
  93. Y = 165: c = 15: X = 290
  94. IF f$ = "S" THEN GOSUB Sm: X = 289: Y = 166: c = 0: GOSUB Sm: frm = 1: GOTO 3
  95. IF f$ = "C" THEN GOSUB Cm: X = 289: Y = 166: c = 0: GOSUB Cm: frm = 2: GOTO 3
  96. IF f$ = "T" THEN GOSUB Tm: X = 289: Y = 166: c = 0: GOSUB Tm: frm = 3: GOTO 3
  97. IF f$ <> "S" OR f$ <> "C" OR f$ <> "T" THEN BEEP: GOTO 20
  98.  
  99. 3 : Y = 205: c = 15: X = 81: GOSUB amplitude: GOSUB en: GOSUB trt: GOSUB mv
  100. GOSUB ou: GOSUB en: GOSUB trt: GOSUB Vm: X = X + 4: GOSUB pintr
  101. Y = 206: c = 0: X = 80: GOSUB amplitude: GOSUB en: GOSUB trt: GOSUB mv
  102. GOSUB ou: GOSUB en: GOSUB trt: GOSUB Vm: X = X + 4: GOSUB pintr
  103. 30 : GOSUB Entree
  104. IF Y% > 25 AND Y% < 29 THEN GOSUB AmpliSignal1
  105. Y = 205: c = 15: X = 270
  106. IF f$ = "V" THEN GOSUB Vm: X = 269: Y = 206: c = 0: GOSUB Vm: unitV1 = 1: GOTO 4
  107. IF f$ = "M" THEN GOSUB mv: X = 269: Y = 206: c = 0: GOSUB mv: unitV1 = 2: GOTO 4
  108. IF f$ <> "M" OR f$ <> "V" THEN BEEP: GOTO 30
  109.  
  110. 4 : LINE (71, 231)-(304, 259), 7, BF
  111. Y = 247: c = 15: X = 81: GOSUB amplitude: GOSUB sigal: GOSUB g1: GOSUB pt2
  112. Y = 248: c = 0: X = 80: GOSUB amplitude: GOSUB sigal: GOSUB g1: GOSUB pt2
  113. Y = 247: c = 15: X = 265
  114. IF unitV1 = 1 THEN GOSUB Vm ELSE GOSUB mv
  115. Y = 248: c = 0: X = 264
  116. IF unitV1 = 1 THEN GOSUB Vm ELSE GOSUB mv
  117. LINE (217, 238)-(253, 255), 0, BF
  118. LINE (254, 239)-(254, 256), 15: LINE -(218, 256), 15
  119. COLOR 15: LOCATE 16, 29: PRINT "   ": Num$ = ""
  120. DO
  121.   SaisieNum Num$, 3, 29, 16
  122.   LOCATE 16, 29: PRINT "   "
  123.   COLOR 7: LOCATE 16, 29: PRINT Num$
  124.   SELECT CASE ASC(RIGHT$(key$, 1))
  125.   CASE 13: EXIT DO
  126.   END SELECT
  127. LOOP
  128. V1 = VAL(Num$)
  129. IF V1 = 0 THEN BEEP: GOTO 4
  130.  
  131. Y = 285: c = 15: X = 81: GOSUB frequence: GOSUB en: GOSUB trt: GOSUB Hz
  132. X = X + 9: GOSUB trt: GOSUB Km: GOSUB Hz: X = X + 9: GOSUB trt: GOSUB Mm
  133. GOSUB Hz: X = X + 6: GOSUB pintr
  134. Y = 286: c = 0: X = 80: GOSUB frequence: GOSUB en: GOSUB trt: GOSUB Hz
  135. X = X + 9: GOSUB trt: GOSUB Km: GOSUB Hz: X = X + 9: GOSUB trt: GOSUB Mm
  136. GOSUB Hz: X = X + 6: GOSUB pintr
  137. 5 : GOSUB Entree
  138. IF Y% > 34 AND Y% < 38 THEN GOSUB FreqSignal1
  139. Y = 285: c = 15: X = 275:
  140. IF f$ = "H" THEN GOSUB Hz: X = 274: Y = 286: c = 0: GOSUB Hz: UnitF1 = 1: GOTO 6
  141. IF f$ = "K" THEN GOSUB Km: GOSUB Hz: X = 274: Y = 286: c = 0: GOSUB Km: GOSUB Hz: UnitF1 = 3: GOTO 6
  142. IF f$ = "M" THEN GOSUB Mm: GOSUB Hz: X = 274: Y = 286: c = 0: GOSUB Mm: GOSUB Hz: UnitF1 = 6: GOTO 6
  143. IF f$ <> "H" OR f$ <> "K" OR f$ <> "M" THEN BEEP: GOTO 5
  144.  
  145. 6 : I = 180: LINE (71, 130 + I + 1)-(304, 130 + I + 29), 7, BF
  146. Y = 326: c = 15: X = 81: GOSUB frequence: GOSUB sigal: GOSUB g1: GOSUB pt2
  147. Y = 327: c = 0: X = 80: GOSUB frequence: GOSUB sigal: GOSUB g1: GOSUB pt2
  148. Y = 326: c = 15: X = 266
  149. IF UnitF1 = 1 THEN GOSUB Hz
  150. IF UnitF1 = 3 THEN GOSUB Km: GOSUB Hz
  151. IF UnitF1 = 6 THEN GOSUB Mm: GOSUB Hz
  152. Y = 327: c = 0: X = 265
  153. IF UnitF1 = 1 THEN GOSUB Hz
  154. IF UnitF1 = 3 THEN GOSUB Km: GOSUB Hz
  155. IF UnitF1 = 6 THEN GOSUB Mm: GOSUB Hz
  156. LINE (217, 318)-(253, 335), 0, BF
  157. LINE (254, 319)-(254, 336), 15: LINE -(218, 336), 15
  158. COLOR 15: LOCATE 21, 29: PRINT "   ": Num$ = ""
  159. DO
  160.   IF UnitF1 = 6 THEN
  161.   SaisieNum Num$, 2, 29, 21
  162.   ELSE
  163.   SaisieNum Num$, 3, 29, 21
  164.   END IF
  165.   LOCATE 21, 29: PRINT "   "
  166.   COLOR 7: LOCATE 21, 29: PRINT Num$
  167.   SELECT CASE ASC(RIGHT$(key$, 1))
  168.   CASE 13: EXIT DO                     'Enter pour sortie boucle
  169.   END SELECT
  170. LOOP
  171. Fq1 = VAL(Num$)
  172. IF Fq1 = 0 THEN BEEP: GOTO 6
  173. IF UnitF1 = 6 AND Fq1 > 99 THEN BEEP: GOTO 6
  174. IF UnitF1 = 1 THEN Fq1 = Fq1 ELSE Fq1 = Fq1 * 10 ^ UnitF1
  175. IF mode = 1 AND frm = 1 THEN GOTO 14
  176. IF mode = 2 AND frm = 1 THEN GOTO 8
  177. 70 :
  178. RCa = 50: RCb = 50
  179. testmode: IF mode = 1 THEN GOTO 14 ELSE GOTO 8      'mode MONO ou DUAL
  180.                   
  181. 8 : Y = 165: c = 15: X = 336: GOSUB sigal: GOSUB SinCarTri
  182. Y = 166: c = 0: X = 335: GOSUB sigal: GOSUB SinCarTri
  183. 80 : GOSUB Entree
  184. IF Y% > 20 AND Y% < 25 THEN GOSUB SiCaTr2
  185. Y = 165: c = 15: X = 545
  186. IF f$ = "S" THEN GOSUB Sm: X = 544: Y = 166: c = 0: GOSUB Sm: frm2 = 1: GOTO 9
  187. IF f$ = "C" THEN GOSUB Cm: X = 544: Y = 166: c = 0: GOSUB Cm: frm2 = 2: GOTO 9
  188. IF f$ = "T" THEN GOSUB Tm: X = 544: Y = 166: c = 0: GOSUB Tm: frm2 = 3: GOTO 9
  189. IF f$ <> "S" OR f$ <> "C" OR f$ <> "T" THEN BEEP: GOTO 80
  190.  
  191. 9 : Y = 205: c = 15: X = 336: GOSUB amplitude: GOSUB en: GOSUB trt: GOSUB mv
  192. GOSUB ou: GOSUB en: GOSUB trt: GOSUB Vm: X = X + 4: GOSUB pintr
  193. Y = 206: c = 0: X = 335: GOSUB amplitude: GOSUB en: GOSUB trt: GOSUB mv
  194. GOSUB ou: GOSUB en: GOSUB trt: GOSUB Vm: X = X + 4: GOSUB pintr
  195. 90 : GOSUB Entree
  196. IF Y% > 25 AND Y% < 29 THEN GOSUB AmpliSignal2
  197. Y = 205: c = 15: X = 535
  198. IF f$ = "V" THEN GOSUB Vm: Y = 206: X = 534: c = 0: GOSUB Vm: unitV2 = 1: GOTO 10
  199. IF f$ = "M" THEN GOSUB mv: Y = 206: X = 534: c = 0: GOSUB mv: unitV2 = 2: GOTO 10
  200. IF f$ <> "M" OR f$ <> "V" THEN BEEP: GOTO 90
  201.  
  202. 10 : LINE (326, 231)-(569, 259), 7, BF
  203. Y = 247: c = 15: X = 336: GOSUB amplitude: GOSUB sigal: GOSUB g2: GOSUB pt2
  204. Y = 248: c = 0: X = 335: GOSUB amplitude: GOSUB sigal: GOSUB g2: GOSUB pt2
  205. Y = 247: c = 15: X = 521
  206. IF unitV2 = 1 THEN GOSUB Vm ELSE GOSUB mv
  207. Y = 248: c = 0: X = 520
  208. IF unitV2 = 1 THEN GOSUB Vm ELSE GOSUB mv
  209. LINE (473, 238)-(508, 255), 0, BF
  210. LINE (509, 239)-(509, 256), 15: LINE -(472, 256), 15
  211. COLOR 15: LOCATE 16, 61: PRINT "   ": Num$ = ""
  212. DO
  213.   SaisieNum Num$, 3, 61, 16
  214.   LOCATE 16, 61: PRINT "   "
  215.   COLOR 7: LOCATE 16, 61: PRINT Num$
  216.   SELECT CASE ASC(RIGHT$(key$, 1))
  217.   CASE 13: EXIT DO
  218.   END SELECT
  219. LOOP
  220. V2 = VAL(Num$)
  221. IF V2 = 0 THEN BEEP: GOTO 10
  222.  
  223. Y = 285: c = 15: X = 336: GOSUB frequence: GOSUB en: c = 12
  224. IF UnitF1 = 1 THEN GOSUB Hz
  225. IF UnitF1 = 3 THEN GOSUB Km: GOSUB Hz
  226. IF UnitF1 = 6 THEN GOSUB Mm: GOSUB Hz
  227. Y = 286: c = 0: X = 335: GOSUB frequence: GOSUB en: c = 4
  228. IF UnitF1 = 1 THEN GOSUB Hz: unitF2 = 1
  229. IF UnitF1 = 3 THEN GOSUB Km: GOSUB Hz: unitF2 = 3
  230. IF UnitF1 = 6 THEN GOSUB Mm: GOSUB Hz: unitF2 = 6
  231. IF unitF2 = 1 THEN Fq2 = Fq2 ELSE Fq2 = Fq2 * 10 ^ unitF2
  232.  
  233. 12 : I = 220: LINE (326, 311)-(569, 339), 7, BF
  234. Y = 326: c = 15: X = 336: GOSUB frequence: GOSUB sigal: GOSUB g2: GOSUB pt2
  235. Y = 327: c = 0: X = 335: GOSUB frequence: GOSUB sigal: GOSUB g2: GOSUB pt2
  236. Y = 326: c = 15: X = 521
  237. IF unitF2 = 1 THEN GOSUB Hz
  238. IF unitF2 = 3 THEN GOSUB Km: GOSUB Hz
  239. IF unitF2 = 6 THEN GOSUB Mm: GOSUB Hz
  240. Y = 327: c = 0: X = 520
  241. IF unitF2 = 1 THEN GOSUB Hz
  242. IF unitF2 = 3 THEN GOSUB Km: GOSUB Hz
  243. IF unitF2 = 6 THEN GOSUB Mm: GOSUB Hz
  244. LINE (473, 318)-(508, 335), 0, BF
  245. LINE (509, 319)-(509, 336), 15: LINE -(472, 336), 15
  246. COLOR 15: LOCATE 21, 61: PRINT "   ": Num$ = ""
  247. DO
  248.   IF UnitF1 = 6 THEN
  249.   SaisieNum Num$, 2, 61, 21
  250.   ELSE
  251.   SaisieNum Num$, 3, 61, 21
  252.   END IF
  253.   LOCATE 21, 61: PRINT "   "
  254.   COLOR 7: LOCATE 21, 61: PRINT Num$
  255.   SELECT CASE ASC(RIGHT$(key$, 1))
  256.   CASE 13: EXIT DO                     'Enter pour sortie boucle
  257.   END SELECT
  258. LOOP
  259. Fq2 = VAL(Num$)
  260. IF unitF2 = 6 AND Fq2 > 99 THEN BEEP: GOTO 12
  261. IF unitF2 = 1 THEN Fq2 = Fq2 ELSE Fq2 = Fq2 * 10 ^ unitF2
  262. IF Fq2 = 0 THEN BEEP: GOTO 12
  263. IF Fq1 > 10 * Fq2 OR Fq2 > 10 * Fq1 THEN BEEP: GOTO 12
  264. IF frm2 = 1 THEN GOTO 14
  265. 13 : RCc = 50: RCd = 50
  266. 14 :
  267. REM                           OSCILLOSCOPE
  268. REM  barre titre
  269. LINE (3, 31)-(636, 60), 15, BF: cf = 9: LINE (3, 61)-(636, 477), cf, BF
  270. LINE (535, 40)-(545, 50), 0, B
  271. Y = 44: c = 0: X = 556: GOSUB trt: X = 555: GOSUB quit: X = 556: GOSUB quit
  272. Facteur% = 1: fa = 390          'facteur% d'atténuation: fa=posit. curseur
  273. 1000 :
  274. REM                tracé scope
  275. a = 38: aa = 312: B = 78: bb = 302: cf = 0: GOSUB boite         'cadre
  276. FOR h = 90 TO 290 STEP 25: LINE (50, h)-(300, h), 9: NEXT h     'grille
  277. FOR V = 50 TO 300 STEP 25: LINE (V, 90)-(V, 290), 9: NEXT V
  278. FOR h = 90 TO 290 STEP 5: LINE (173, h)-(177, h), 9: NEXT h
  279. FOR V = 50 TO 300 STEP 5: LINE (V, 188)-(V, 192), 9: NEXT V
  280. REM              CALIBRES AUTO
  281. a = 38: aa = 312: B = 355: bb = 475: cf = 7: GOSUB boite        'calibre auto
  282. LINE (a, B - 20)-(aa, bb), 0, B
  283. LINE (a + 1, B - 19)-(aa - 1, B - 1), 1, BF
  284. X = 122: Y = B - 10: c = 15: GOSUB calibroto: X = 123: GOSUB calibroto
  285.    FOR I = 20 TO 80 STEP 30
  286.    LINE (a + 20, B + I)-(aa - 20, B + I + 20), 0, B
  287.    LINE (aa - 20, B + I)-(aa - 20, B + I + 20), 15
  288.    LINE -(a + 20, B + I + 20), 15: NEXT I
  289.    c = 15: Y = 385: X = 71: GOSUB sigal: GOSUB g1: X = X + 2: GOSUB pt2
  290.    c = 0: Y = 386: X = 70: GOSUB sigal: GOSUB g1: X = X + 2: GOSUB pt2
  291.    c = 15: Y = 415: X = 71: GOSUB sigal: GOSUB g2: GOSUB pt2
  292.    c = 0: Y = 416: X = 70: GOSUB sigal: GOSUB g2: GOSUB pt2
  293.    c = 15: Y = 445: X = 71: GOSUB timebase
  294.    c = 0: Y = 446: X = 70: GOSUB timebase
  295. REM                 BOITE AFFICHAGE & REGLAGES
  296. a = 350: aa = 610: B = 150: bb = 475: cf = 7: GOSUB boite         'réglages
  297. LINE (a, B - 20)-(aa, bb), 0, B: LINE (a + 1, B - 19)-(aa - 1, B - 1), 1, BF
  298. X = 445: Y = B - 10: c = 15: GOSUB reglages: X = 446: GOSUB reglages
  299.  c = 15: X = 456: Y = B + 19: GOSUB sigal: GOSUB g1
  300.  c = 0: X = 455: Y = B + 20: GOSUB sigal: GOSUB g1
  301.    FOR I = 35 TO 95 STEP 30
  302.    GOSUB TouchePlms: NEXT I
  303.    FOR I = 155 TO 215 STEP 30
  304.    GOSUB TouchePlms: NEXT I
  305.  c = 15: X = 456: Y = B + 134: GOSUB sigal: GOSUB g2
  306.  c = 0: X = 455: Y = B + 135: GOSUB sigal: GOSUB g2
  307.    c = 15: Y = 195: X = 416: GOSUB amplitude: GOSUB pt2
  308.    c = 0: Y = 196: X = 415: GOSUB amplitude: GOSUB pt2
  309.    c = 15: Y = 225: X = 416: GOSUB frequence: GOSUB pt2
  310.    c = 0: Y = 226: X = 415: GOSUB frequence: GOSUB pt2
  311.    IF frm = 1 THEN GOTO AffSte
  312.    c = 15: Y = 255: X = 401: GOSUB rapportcy: GOSUB pt2
  313.    c = 0: Y = 256: X = 400: GOSUB rapportcy: GOSUB pt2
  314. AffSte:
  315.    IF mode = 1 THEN GOTO AfficheVal
  316.    q = 120
  317.    c = 15: Y = 195 + q: X = 416: GOSUB amplitude: GOSUB pt2
  318.    c = 0: Y = 196 + q: X = 415: GOSUB amplitude: GOSUB pt2
  319.    c = 15: Y = 225 + q: X = 416: GOSUB frequence: GOSUB pt2
  320.    c = 0: Y = 226 + q: X = 415: GOSUB frequence: GOSUB pt2
  321.    IF frm2 = 1 THEN GOTO AfficheVal
  322.    c = 15: Y = 255 + q: X = 401: GOSUB rapportcy: GOSUB pt2
  323.    c = 0: Y = 256 + q: X = 400: GOSUB rapportcy: GOSUB pt2
  324. AfficheVal:
  325.      c = 15: Y = 195: X = 496: GOSUB ValAmpSig1    'affichage valeurs signal 1
  326.      c = 0: Y = 196: X = 495: GOSUB ValAmpSig1
  327.      c = 15: Y = 225: X = 496: GOSUB ValFeqSig1
  328.      c = 0: Y = 226: X = 495: GOSUB ValFeqSig1
  329.       IF frm = 1 THEN GOTO AffCanal2
  330.       c = 15: Y = 255: X = 529: GOSUB AFFRC1
  331.       c = 0: Y = 256: X = 528: GOSUB AFFRC1
  332. AffCanal2:                               'affichage valeurs pour signal 2
  333.      IF mode = 1 THEN GOTO ReglagAtt
  334.      c = 15: Y = 195 + q: X = 496: GOSUB ValAmpSig2
  335.      c = 0: Y = 196 + q: X = 495: GOSUB ValAmpSig2
  336.      c = 15: Y = 225 + q: X = 496: GOSUB ValFeqSig2
  337.      c = 0: Y = 226 + q: X = 495: GOSUB ValFeqSig2
  338.       IF frm2 = 1 THEN GOTO ReglagAtt
  339.       c = 15: Y = 255 + q: X = 529: GOSUB AFFRC2
  340.       c = 0: Y = 256 + q: X = 528: GOSUB AFFRC2
  341. ReglagAtt:                                 'réglage du facteur% atténuation
  342. c = 15: X = 413: Y = B + 255: GOSUB facteuratt
  343. c = 0: X = 412: Y = B + 256: GOSUB facteuratt
  344. a = 350: aa = 610: B = 150
  345.    I = 275: GOSUB TouchePlms
  346. Y = 455: c = 15:
  347. X = 401: GOSUB g1: X = 421: GOSUB g2: X = 441: GOSUB g3
  348. X = 461: GOSUB g4: X = 481: GOSUB g5: X = 501: GOSUB g6
  349. X = 521: GOSUB g7: X = 541: GOSUB g8: X = 561: GOSUB g9
  350. Y = 456: c = 0:
  351. X = 400: GOSUB g1: X = 420: GOSUB g2: X = 440: GOSUB g3
  352. X = 460: GOSUB g4: X = 480: GOSUB g5: X = 500: GOSUB g6
  353. X = 520: GOSUB g7: X = 540: GOSUB g8: X = 560: GOSUB g9
  354. LINE (fa, B + I + 1)-(fa + 20, B + I + 19), 0, B
  355. LINE (fa + 1, B + I + 18)-(fa + 1, B + I + 2), 15
  356. LINE -(fa + 19, B + I + 2), 15
  357. '................................................
  358. T1! = 1 / Fq1
  359. IF V1 <= 9.99 THEN VCH1! = V1 * 10
  360. IF V1 >= 10 AND V1 <= 99.9 THEN VCH1! = V1
  361. IF V1 >= 100 THEN VCH1! = V1 / 10
  362. IF VCH1! < 100 THEN VDIV1! = .5
  363. IF VCH1! < 40 THEN VDIV1! = 1.25
  364. IF VCH1! < 20 THEN VDIV1! = 2.5
  365.  
  366. IF mode = 1 THEN Fq2 = 0: GOTO AffCalOto
  367. T2! = 1 / Fq2
  368. IF V2 <= 9.99 THEN VCH2! = V2 * 10
  369. IF V2 >= 10 AND V2 <= 99.9 THEN VCH2! = V2
  370. IF V2 >= 100 THEN VCH2! = V2 / 10
  371. IF VCH2! < 100 THEN VDIV2! = .5
  372. IF VCH2! < 40 THEN VDIV2! = 1.25
  373. IF VCH2! < 20 THEN VDIV2! = 2.5
  374.  
  375. REM affichage calibres auto V/DIV 1 & 2
  376. AffCalOto:
  377.    c = 15: Y = 385: X = 141: GOSUB CalSig1Oto
  378.    c = 0: Y = 386: X = 140: GOSUB CalSig1Oto
  379.     IF mode = 1 THEN GOTO CalBaseTmps
  380.    c = 15: Y = 415: X = 141: GOSUB CalSig2Oto
  381.    c = 0: Y = 416: X = 140: GOSUB CalSig2Oto
  382. CalBaseTmps:
  383.    IF Fq1 >= Fq2 THEN GOTO BaseTemps2 ELSE GOTO BaseTemps1
  384. BaseTemps2: DO: FOR P = -8 TO 1
  385. IF T1! > 0 * 10 ^ P AND T1! <= 2 * 10 ^ P THEN TCAL! = 1 * 10 ^ P: EXIT DO
  386. IF T1! > 2 * 10 ^ P AND T1! <= 5 * 10 ^ P THEN TCAL! = 2 * 10 ^ P: EXIT DO
  387. IF T1! > 5 * 10 ^ P AND T1! <= 9.9 * 10 ^ P THEN TCAL! = 5 * 10 ^ P: EXIT DO
  388. NEXT P: LOOP: GOTO AffCalBtOto
  389. BaseTemps1: DO: FOR P = -8 TO 1
  390. IF T2! > 0 * 10 ^ P AND T2! <= 2 * 10 ^ P THEN TCAL! = 1 * 10 ^ P: EXIT DO
  391. IF T2! > 2 * 10 ^ P AND T2! <= 5 * 10 ^ P THEN TCAL! = 2 * 10 ^ P: EXIT DO
  392. IF T2! > 5 * 10 ^ P AND T2! <= 9.9 * 10 ^ P THEN TCAL! = 5 * 10 ^ P: EXIT DO
  393. NEXT P: LOOP
  394. REM                   Affichage du calibre base de temps
  395. AffCalBtOto:
  396. c = 15: Y = 445: X = 176: GOSUB CalBtOto
  397. c = 0: Y = 446: X = 175: GOSUB CalBtOto
  398. '......................................................
  399.    cc = 10                          'couleur des traces
  400.    IF frm = 1 THEN GOSUB sin1
  401.    IF frm = 2 THEN GOSUB CAR1
  402.    IF frm = 3 THEN GOSUB TRI1
  403.    IF frm2 = 1 THEN GOSUB sin2
  404.    IF frm2 = 2 THEN GOSUB CAR2
  405.    IF frm2 = 3 THEN GOSUB TRI2
  406. ResetMouse
  407. MouseSpeed Curseur%
  408. AttMouse: Mouse 1
  409.    DO
  410.    GetMouse
  411.    f$ = INKEY$: f$ = UCASE$(f$)
  412.    LOOP UNTIL B% <> Bx% OR LEN(f$)
  413.    Mouse 0
  414.    IF B% = 1 THEN GOSUB TestMouse
  415. IF f$ = "Q" THEN GOSUB QuitOuiNon
  416. IF f$ <> "Q" THEN GOTO AttMouse
  417. END
  418. '......................................................................
  419. REM                barre titre
  420. BarTitre:
  421. LINE (3, 3)-(636, 26), CoulBarreTitre, BF: LINE (3, 29)-(636, 29), 15
  422. c = CoulLettresTitre: X = 25: Y = 14: GOSUB minilab: X = 26: GOSUB minilab
  423. X = 300: GOSUB scop: X = 301: GOSUB scop
  424. LINE (3, 61)-(636, 479), cf, BF: LINE (3, 31)-(636, 60), 15, BF
  425. LINE (3, 60)-(636, 60), 0: RETURN
  426.  
  427. boite: LINE (a, B)-(aa, bb), 0, B
  428. LINE (a + 11, B + 11)-(aa - 11, bb - 11), cf, BF: PAINT (a + 7, B + 7), 7, 0
  429. LINE (a + 9, bb - 9)-(a + 9, B + 9), 8: LINE -(aa - 9, B + 9), 8
  430. LINE (aa - 9, B + 9)-(aa - 9, bb - 9), 15: LINE -(a + 9, bb - 9), 15: RETURN
  431.  
  432. CalBtOto:                                       'détermine calibre base temps
  433. TCAL$ = STR$(TCAL!): cal$ = MID$(TCAL$, LEN(TCAL$))
  434. IF cal$ = "8" THEN cal$ = MID$(TCAL$, 2, 1)
  435. IF cal$ = "1" THEN GOTO cal1
  436. IF cal$ = "2" THEN GOTO cal2
  437. IF cal$ = "5" THEN GOTO cal5
  438. cal1: IF cal$ = "1" AND P = 0 OR P = -3 OR P = -6 OR P = -9 THEN GOSUB g1
  439. IF cal$ = "1" AND P = -1 OR P = -4 OR P = -7 THEN GOSUB cent
  440. IF cal$ = "1" AND P > 0 OR P = -2 OR P = -5 OR P = -8 THEN GOSUB dix
  441. GOTO cals
  442. cal5: IF cal$ = "5" AND P = 0 OR P = -3 OR P = -6 OR P = -9 THEN GOSUB g5
  443. IF cal$ = "5" AND P = -1 OR P = -4 OR P = -7 THEN GOSUB cinqct
  444. IF cal$ = "5" AND P > 0 OR P = -2 OR P = -5 OR P = -8 THEN GOSUB cinqnte
  445. GOTO cals
  446. cal2: IF cal$ = "2" AND P = 0 OR P = -3 OR P = -6 OR P = -9 THEN GOSUB g2
  447. IF cal$ = "2" AND P = -1 OR P = -4 OR P = -7 THEN GOSUB deuxct
  448. IF cal$ = "2" AND P > 0 OR P = -2 OR P = -5 OR P = -8 THEN GOSUB vgt
  449. cals: X = X + 6
  450. IF P >= 0 THEN GOSUB S
  451. IF P < 0 AND P >= -3 THEN GOSUB M: GOSUB S
  452. IF P < -3 AND P >= -6 THEN GOSUB micro: GOSUB S
  453. IF P < -6 AND P >= -9 THEN GOSUB N: GOSUB S
  454. X = X + 8: GOSUB pardiv
  455. RETURN
  456. CalSig1Oto:                                'détermine calibre V/DIV 1
  457. IF VDIV1! = .5 AND V1 < 10 THEN GOSUB g5
  458. IF VDIV1! = .5 AND V1 >= 10 AND V1 < 100 THEN GOSUB cinqnte
  459. IF VDIV1! = .5 AND V1 >= 100 THEN GOSUB cinqct
  460. IF VDIV1! = 1.25 AND V1 < 10 THEN GOSUB g2
  461. IF VDIV1! = 1.25 AND V1 >= 10 AND V1 < 100 THEN GOSUB vgt
  462. IF VDIV1! = 1.25 AND V1 >= 100 THEN GOSUB deuxct
  463. IF VDIV1! = 2.5 AND V1 < 10 THEN GOSUB g1
  464. IF VDIV1! = 2.5 AND V1 >= 10 AND V1 < 100 THEN GOSUB dix
  465. IF VDIV1! = 2.5 AND V1 >= 100 THEN GOSUB cent
  466. X = X + 8
  467. IF unitV1 = 1 THEN GOSUB Vm
  468. IF unitV1 = 2 THEN GOSUB M: GOSUB Vm
  469. X = X + 8: GOSUB pardiv
  470. RETURN
  471. CalSig2Oto:                                   'détermine calibre V/DIV 2
  472. IF VDIV2! = .5 AND V2 < 10 THEN GOSUB g5
  473. IF VDIV2! = .5 AND V2 >= 10 AND V2 < 100 THEN GOSUB cinqnte
  474. IF VDIV2! = .5 AND V2 >= 100 THEN GOSUB cinqct
  475. IF VDIV2! = 1.25 AND V2 < 10 THEN GOSUB g2
  476. IF VDIV2! = 1.25 AND V2 >= 10 AND V2 < 100 THEN GOSUB vgt
  477. IF VDIV2! = 1.25 AND V2 >= 100 THEN GOSUB deuxct
  478. IF VDIV2! = 2.5 AND V2 < 10 THEN GOSUB g1
  479. IF VDIV2! = 2.5 AND V2 >= 10 AND V2 < 100 THEN GOSUB dix
  480. IF VDIV2! = 2.5 AND V2 >= 100 THEN GOSUB cent
  481. X = X + 8
  482. IF unitV2 = 1 THEN GOSUB Vm
  483. IF unitV2 = 2 THEN GOSUB M: GOSUB Vm
  484. X = X + 8: GOSUB pardiv
  485. RETURN
  486. ValAmpSig1: chf$ = STR$(V1)
  487.    FOR I = 2 TO LEN(chf$): nbr = VAL(MID$(chf$, I, 1)): GOSUB TestChf: NEXT I
  488.    X = X + 5
  489.    IF unitV1 = 1 THEN GOSUB Vm
  490.    IF unitV1 = 2 THEN GOSUB M: GOSUB Vm
  491.    RETURN
  492. ValFeqSig1:
  493.    IF UnitF1 = 1 THEN affF1 = Fq1
  494.    IF UnitF1 = 3 THEN affF1 = Fq1 / 1000
  495.    IF UnitF1 = 6 THEN affF1 = Fq1 / 1000000
  496.    cf$ = STR$(affF1): FOR I = 2 TO LEN(cf$): nbr = VAL(MID$(cf$, I, 1))
  497.    GOSUB TestChf: NEXT I: X = X + 5
  498.    IF UnitF1 = 1 THEN GOSUB Hz
  499.    IF UnitF1 = 3 THEN GOSUB Km: GOSUB Hz
  500.    IF UnitF1 = 6 THEN GOSUB Mm: GOSUB Hz
  501.    RETURN
  502. ValAmpSig2: chf$ = STR$(V2)
  503.    FOR I = 2 TO LEN(chf$): nbr = VAL(MID$(chf$, I, 1)): GOSUB TestChf: NEXT I
  504.    X = X + 5
  505.    IF unitV2 = 1 THEN GOSUB Vm
  506.    IF unitV2 = 2 THEN GOSUB M: GOSUB Vm
  507.    RETURN
  508. ValFeqSig2:
  509.    IF unitF2 = 1 THEN affF2 = Fq2
  510.    IF unitF2 = 3 THEN affF2 = Fq2 / 1000
  511.    IF unitF2 = 6 THEN affF2 = Fq2 / 1000000
  512.    cf$ = STR$(affF2): FOR I = 2 TO LEN(cf$): nbr = VAL(MID$(cf$, I, 1))
  513.    GOSUB TestChf: NEXT I: X = X + 5
  514.    IF unitF2 = 1 THEN GOSUB Hz
  515.    IF unitF2 = 3 THEN GOSUB Km: GOSUB Hz
  516.    IF unitF2 = 6 THEN GOSUB Mm: GOSUB Hz
  517.    RETURN
  518. AFFRC1:
  519.    RCa$ = STR$(RCa): FOR I = 2 TO LEN(RCa$): nbr = VAL(MID$(RCa$, I, 1))
  520.    GOSUB TestChf: NEXT I: GOSUB pt2: X = X + 6
  521.    RCb$ = STR$(RCb): FOR I = 2 TO LEN(RCb$): nbr = VAL(MID$(RCb$, I, 1))
  522.    GOSUB TestChf: NEXT I: RETURN
  523. AFFRC2:
  524.    RCc$ = STR$(RCc): FOR I = 2 TO LEN(RCc$): nbr = VAL(MID$(RCc$, I, 1))
  525.    GOSUB TestChf: NEXT I: GOSUB pt2: X = X + 6
  526.    RCd$ = STR$(RCd): FOR I = 2 TO LEN(RCd$): nbr = VAL(MID$(RCd$, I, 1))
  527.    GOSUB TestChf: NEXT I: RETURN
  528. TestChf: IF nbr = 0 THEN GOSUB g0
  529.    IF nbr = 1 THEN GOSUB g1
  530.    IF nbr = 2 THEN GOSUB g2
  531.    IF nbr = 3 THEN GOSUB g3
  532.    IF nbr = 4 THEN GOSUB g4
  533.    IF nbr = 5 THEN GOSUB g5
  534.    IF nbr = 6 THEN GOSUB g6
  535.    IF nbr = 7 THEN GOSUB g7
  536.    IF nbr = 8 THEN GOSUB g8
  537.    IF nbr = 9 THEN GOSUB g9
  538.    RETURN
  539. TouchePlms:                   'boîtes et touches + - de réglages
  540.    LINE (a + 20, B + I)-(aa - 20, B + I + 20), 0, B
  541.    LINE (aa - 20, B + I)-(aa - 20, B + I + 20), 15
  542.    LINE -(a + 20, B + I + 20), 15:
  543.    LINE (a + 21, B + I + 1)-(a + 39, B + I + 19), 8, B
  544.    LINE (a + 22, B + I + 18)-(a + 22, B + I + 2), 15
  545.    LINE -(a + 38, B + I + 2), 15
  546.    LINE (aa - 39, B + I + 1)-(aa - 21, B + I + 19), 8, B
  547.    LINE (aa - 38, B + I + 18)-(aa - 38, B + I + 2), 15
  548.    LINE -(aa - 22, B + I + 2), 15
  549.    X = a + 29: Y = B + I + 10: c = 4: GOSUB moins
  550.    X = a + 30: Y = B + I + 9: c = 12: GOSUB moins
  551.    X = aa - 29: Y = B + I + 10: c = 2: GOSUB plus
  552.    X = aa - 30: Y = B + I + 9: c = 10: GOSUB plus: RETURN
  553.  
  554. sin1: IF mode = 1 THEN Y = 190: X = 50      'sinus1
  555. IF mode = 2 THEN Y = 140: X = 50
  556. TDIV! = 360 / (25 * (T1! / TCAL!))
  557.    DO
  558. FOR a = 0 TO 180 STEP 2
  559. ang! = a * .01745: divt! = a / TDIV!
  560. PSET (X + divt!, Y + (VCH1! * SIN(ang!)) * VDIV1!), cc
  561. IF X + divt! > 299 THEN EXIT DO
  562. NEXT a
  563. FOR a = 180 TO 360 STEP 2
  564. ang! = a * .01745: divt! = a / TDIV!
  565. PSET (X + divt!, Y + (VCH1! * SIN(ang!)) * VDIV1!), cc
  566. IF X + divt! > 299 THEN EXIT DO
  567. NEXT a
  568.    X = X + (25 * (T1! / TCAL!)): LOOP: RETURN
  569. sin2: Y = 240: X = 50      'sinus2
  570. TDIV! = 360 / (25 * (T2! / TCAL!))
  571.    DO
  572. FOR a = 0 TO 180 STEP 2
  573. ang! = a * .01745: divt! = a / TDIV!
  574. PSET (X + divt!, Y + (VCH2! * SIN(ang!)) * VDIV2!), cc
  575. IF X + divt! > 299 THEN EXIT DO
  576. NEXT a
  577. FOR a = 180 TO 360 STEP 2
  578. ang! = a * .01745: divt! = a / TDIV!
  579. PSET (X + divt!, Y + (VCH2! * SIN(ang!)) * VDIV2!), cc
  580. IF X + divt! > 299 THEN EXIT DO
  581. NEXT a
  582.    X = X + (25 * (T2! / TCAL!)): LOOP: RETURN
  583.  
  584. CAR1: IF mode = 1 THEN Y = 190: X = 50             'Trace signal CARRE
  585. IF mode = 2 THEN Y = 140: X = 50
  586. T10! = T1! * RCa / 100: T12! = T1! * RCb / 100
  587. cycle1 = (25 * T10!) / TCAL!: cycle2 = (25 * T12!) / TCAL!
  588. ampmax = VCH1! * VDIV1!
  589.      DO
  590. LINE (X, Y + ampmax)-(X, Y - ampmax), cc
  591. FOR q = X TO X + cycle1
  592. PSET (q, Y - ampmax), cc: IF q > 299 THEN EXIT DO
  593. NEXT q: LINE -(X + cycle1, Y + ampmax), cc
  594. FOR q = X + cycle1 TO X + cycle1 + cycle2
  595. PSET (q, Y + ampmax), cc: IF q > 299 THEN EXIT DO
  596. NEXT q: X = X + cycle1 + cycle2: LOOP: RETURN
  597. CAR2: X = 50: Y = 240: T20! = T2! * RCc / 100: T22! = T2! * RCd / 100
  598. cycle1 = (25 * T20!) / TCAL!: cycle2 = (25 * T22!) / TCAL!
  599. ampmax = VCH2! * VDIV2!
  600.      DO
  601. LINE (X, Y + ampmax)-(X, Y - ampmax), cc
  602. FOR q = X TO X + cycle1
  603. PSET (q, Y - ampmax), cc: IF q > 299 THEN EXIT DO
  604. NEXT q: LINE -(X + cycle1, Y + ampmax), cc
  605. FOR q = X + cycle1 TO X + cycle1 + cycle2
  606. PSET (q, Y + ampmax), cc: IF q > 299 THEN EXIT DO
  607. NEXT q: X = X + cycle1 + cycle2: LOOP: RETURN
  608.  
  609. TRI1: IF mode = 1 THEN Y = 190: X = 50              'Trace Signal TRIANGLE
  610. IF mode = 2 THEN Y = 140: X = 50
  611. T10! = T1! * RCa / 100: T12! = T1! * RCb / 100
  612. cycle1 = (25 * T10!) / TCAL!: cycle2 = (25 * T12!) / TCAL!
  613. ampmax = VCH1! * VDIV1!
  614.      DO
  615. IF X + cycle1 > 301 THEN EXIT DO
  616.    LINE (X, Y + ampmax)-(X + cycle1, Y - ampmax), cc
  617. IF X + cycle1 + cycle2 > 301 THEN EXIT DO
  618.    LINE -(X + cycle1 + cycle2, Y + ampmax), cc
  619. X = X + cycle1 + cycle2
  620. LOOP: RETURN
  621. TRI2: X = 50: Y = 240: T20! = T2! * RCc / 100: T22! = T2! * RCd / 100
  622. cycle1 = (25 * T20!) / TCAL!: cycle2 = (25 * T22!) / TCAL!
  623. ampmax = VCH2! * VDIV2!
  624.      DO
  625. IF X + cycle1 > 301 THEN EXIT DO
  626. LINE (X, Y + ampmax)-(X + cycle1, Y - ampmax), cc
  627. IF X + cycle1 + cycle2 > 301 THEN EXIT DO
  628. LINE -(X + cycle1 + cycle2, Y + ampmax), cc
  629. X = X + cycle1 + cycle2: LOOP: RETURN
  630. '................................. REGLAGES .....................
  631. Ampli1Plus: V1 = V1 + Facteur%
  632. IF V1 > 999 THEN V1 = 999
  633. Mouse 0: GOTO 1000
  634. Ampli1Moins: V1 = V1 - Facteur%
  635. IF V1 < 1 THEN V1 = 1
  636. Mouse 0: GOTO 1000
  637. Ampli2Moins:
  638. IF mode <> 2 THEN RETURN AttMouse
  639. V2 = V2 - Facteur%
  640. IF V2 < 1 THEN V2 = 1
  641. Mouse 0: GOTO 1000
  642. Ampli2Plus:
  643. IF mode <> 2 THEN RETURN AttMouse
  644. V2 = V2 + Facteur%
  645. IF V2 > 999 THEN V2 = 999
  646. Mouse 0: GOTO 1000
  647.  
  648. Feq1Plus:
  649. IF UnitF1 = 1 THEN Fq1 = Fq1 + Facteur% ELSE Fq1 = Fq1 + (Facteur% * 10 ^ UnitF1)
  650. IF Fq1 > 999 * 10 ^ UnitF1 THEN Fq1 = 999 * 10 ^ UnitF1
  651. IF Fq1 > 99 * 10 ^ 6 THEN Fq1 = 99 * 10 ^ 6
  652. Mouse 0: GOTO 1000
  653. Feq1Moins:
  654. IF UnitF1 = 1 THEN Fq1 = Fq1 - Facteur% ELSE Fq1 = Fq1 - (Facteur% * 10 ^ UnitF1)
  655. IF Fq1 < 1 * 10 ^ UnitF1 THEN Fq1 = 1 * 10 ^ UnitF1
  656. Mouse 0: GOTO 1000
  657. Feq2Plus:
  658. IF mode <> 2 THEN RETURN AttMouse
  659. IF unitF2 = 1 THEN Fq2 = Fq2 + Facteur% ELSE Fq2 = Fq2 + (Facteur% * 10 ^ unitF2)
  660. IF Fq2 > 999 * 10 ^ unitF2 THEN Fq2 = 999 * 10 ^ unitF2
  661. IF Fq2 > 99 * 10 ^ 6 THEN Fq2 = 99 * 10 ^ 6
  662. Mouse 0: GOTO 1000
  663. Feq2Moins:
  664. IF mode <> 2 THEN RETURN AttMouse
  665. IF unitF2 = 1 THEN Fq2 = Fq2 - Facteur% ELSE Fq2 = Fq2 - (Facteur% * 10 ^ unitF2)
  666. IF Fq2 < 1 * 10 ^ unitF2 THEN Fq2 = 1 * 10 ^ unitF2
  667. Mouse 0: GOTO 1000
  668.  
  669. RC1Plus: IF frm = 1 THEN RETURN AttMouse
  670. GOSUB RCaPlus: Mouse 0: GOTO 1000
  671. RC1Moins: IF frm = 1 THEN RETURN AttMouse
  672. GOSUB RCaMoins: Mouse 0: GOTO 1000
  673. RC2Plus: IF mode = 1 THEN RETURN AttMouse
  674. IF frm2 = 1 THEN RETURN AttMouse
  675. GOSUB RCcPlus: Mouse 0: GOTO 1000
  676. RC2Moins: IF mode = 1 THEN RETURN AttMouse
  677. IF frm2 = 1 THEN BEEP: RETURN AttMouse
  678. GOSUB RCcMoins: Mouse 0: GOTO 1000
  679.  
  680. RCaPlus: RCa = RCa + Facteur%
  681. IF RCa > 90 THEN RCa = 90: BEEP
  682. RCb = RCb - Facteur%
  683. IF RCb < 10 THEN RCb = 10
  684. RETURN
  685. RCaMoins: RCa = RCa - Facteur%
  686. IF RCa < 10 THEN RCa = 10: BEEP
  687. RCb = RCb + Facteur%
  688. IF RCb > 90 THEN RCb = 90
  689. RETURN
  690. RCcPlus: RCc = RCc + Facteur%
  691. IF RCc > 90 THEN RCc = 90: BEEP
  692. RCd = RCd - Facteur%
  693. IF RCd < 10 THEN RCd = 10
  694. RETURN
  695. RCcMoins: RCc = RCc - Facteur%
  696. IF RCc < 10 THEN RCc = 10: BEEP
  697. RCd = RCd + Facteur%
  698. IF RCd > 90 THEN RCd = 90
  699. RETURN
  700.  
  701. fin: COLOR 15: SYSTEM
  702.  
  703. egal: FOR h = X - 2 TO X + 3: PSET (h, Y - 1), c: NEXT h
  704. FOR h = X - 2 TO X + 3: PSET (h, Y - 2), c: NEXT h
  705. FOR h = X - 2 TO X + 3: PSET (h, Y + 1), c: NEXT h:
  706. FOR h = X - 2 TO X + 3: PSET (h, Y + 2), c: NEXT h: X = X + 9: RETURN
  707.  
  708. g1: FOR vert = Y - 4 TO Y + 4: PSET (X, vert), c: NEXT vert
  709. PSET (X - 1, Y - 4), c: PSET (X - 1, Y + 4), c: PSET (X + 1, Y + 4), c
  710. X = X + 9: RETURN
  711. g2: PSET (X, Y - 4), c: PSET (X + 1, Y - 4), c: PSET (X - 1, Y - 3), c
  712. PSET (X + 2, Y - 3), c: PSET (X - 2, Y - 2), c: PSET (X + 3, Y - 2), c
  713. PSET (X + 3, Y - 1), c: PSET (X + 2, Y), c
  714. PSET (X, Y + 1), c: PSET (X + 1, Y), c
  715. PSET (X - 2, Y + 2), c: PSET (X - 1, Y + 2), c: PSET (X - 2, Y + 3), c
  716. FOR hor = X - 2 TO X + 3: PSET (hor, Y + 4), c: NEXT hor: X = X + 9: RETURN
  717. g3: FOR h = X - 2 TO X + 2: PSET (h, Y - 4), c: NEXT h
  718. FOR h = X - 2 TO X + 2: PSET (h, Y + 4), c: NEXT h
  719. FOR h = X - 1 TO X + 2: PSET (h, Y), c: NEXT h
  720. FOR V = Y - 3 TO Y - 1: PSET (X + 3, V), c: NEXT V
  721. FOR V = Y + 1 TO Y + 3: PSET (X + 3, V), c: NEXT V: X = X + 9: RETURN
  722. g4: FOR V = Y - 1 TO Y + 4: PSET (X + 2, V), c: NEXT V
  723. FOR V = Y - 4 TO Y: PSET (X - 2, V), c: NEXT V
  724. FOR h = X - 2 TO X + 3: PSET (h, Y + 1), c: NEXT h: f = X + 3: X = X + 9: RETURN
  725. g6: FOR h = X - 1 TO X + 2: PSET (h, Y), c: NEXT h
  726. FOR h = X - 1 TO X + 2: PSET (h, Y - 4), c: NEXT h
  727. FOR h = X - 1 TO X + 2: PSET (h, Y + 4), c: NEXT h
  728. FOR V = Y - 3 TO Y + 3: PSET (X - 2, V), c: NEXT V: PSET (X + 3, Y - 3), c
  729. FOR V = Y + 1 TO Y + 3: PSET (X + 3, V), c: NEXT V: X = X + 9: RETURN
  730. g7: FOR h = X - 2 TO X + 3: PSET (h, Y - 4), c: NEXT h
  731. PSET (X - 2, Y - 3), c: FOR V = Y - 4 TO Y - 1: PSET (X + 3, V), c: NEXT V
  732. FOR V = Y + 2 TO Y + 4: PSET (X - 1, V), c: NEXT V
  733. f = X + 2: FOR D = Y TO Y + 2: PSET (f, D), c: f = f - 1: NEXT D
  734. X = X + 9: RETURN
  735. g8: FOR h = X - 1 TO X + 2: PSET (h, Y), c: NEXT h
  736. FOR h = X - 1 TO X + 2: PSET (h, Y - 4), c: NEXT h
  737. FOR h = X - 1 TO X + 2: PSET (h, Y + 4), c: NEXT h
  738. FOR V = Y + 1 TO Y + 3: PSET (X - 2, V), c: NEXT V
  739. FOR V = Y + 1 TO Y + 3: PSET (X + 3, V), c: NEXT V
  740. FOR V = Y - 3 TO Y - 1: PSET (X - 2, V), c: NEXT V
  741. FOR V = Y - 3 TO Y - 1: PSET (X + 3, V), c: NEXT V: X = X + 9: RETURN
  742. g5: FOR h = X - 2 TO X + 3: PSET (h, Y - 4), c: NEXT h
  743. FOR V = Y - 3 TO Y - 1: PSET (X - 2, V), c: NEXT V
  744. FOR h = X - 1 TO X + 2: PSET (h, Y), c: NEXT h
  745. FOR V = Y + 1 TO Y + 3: PSET (X + 3, V), c: NEXT V
  746. FOR h = X - 1 TO X + 2: PSET (h, Y + 4), c: NEXT h
  747. PSET (X - 2, Y + 3), c: X = X + 9: RETURN
  748. g9: FOR h = X - 1 TO X + 2: PSET (h, Y - 4), c: NEXT h
  749. FOR h = X - 1 TO X + 2: PSET (h, Y), c: NEXT h
  750. FOR h = X - 1 TO X + 2: PSET (h, Y + 4), c: NEXT h
  751. FOR V = Y - 3 TO Y - 1: PSET (X - 2, V), c: NEXT V
  752. FOR V = Y - 3 TO Y + 3: PSET (X + 3, V), c: NEXT V
  753. PSET (X - 2, Y + 3), c: X = X + 9: RETURN
  754. g0: FOR h = X - 1 TO X + 2: PSET (h, Y - 4), c: NEXT h
  755. FOR h = X - 1 TO X + 2: PSET (h, Y + 4), c: NEXT h
  756. FOR V = Y TO Y + 3: PSET (X - 2, V), c: NEXT V
  757. FOR V = Y TO Y + 3: PSET (X + 3, V), c: NEXT V
  758. FOR V = Y - 3 TO Y - 1: PSET (X - 2, V), c: NEXT V
  759. FOR V = Y - 3 TO Y - 1: PSET (X + 3, V), c: NEXT V: X = X + 9: RETURN
  760.  
  761. Am: PSET (X, Y - 4), c: PSET (X + 1, Y - 4), c
  762. PSET (X - 1, Y - 3), c: PSET (X + 2, Y - 3), c
  763. FOR vert = Y - 2 TO Y + 4: PSET (X - 2, vert), c: PSET (X + 3, vert), c: NEXT vert
  764. FOR hor = X - 1 TO X + 2: PSET (hor, Y + 1), c: NEXT hor: X = X + 9: RETURN
  765. Bm: FOR V = Y - 4 TO Y + 4: PSET (X - 2, V), c: NEXT V
  766. FOR h = X - 1 TO X + 2: PSET (h, Y - 4), c: NEXT h
  767. FOR h = X - 1 TO X + 2: PSET (h, Y), c: NEXT h
  768. FOR h = X - 1 TO X + 2: PSET (h, Y + 4), c: NEXT h
  769. FOR V = Y - 3 TO Y - 1: PSET (X + 3, V), c: NEXT V
  770. FOR V = Y + 1 TO Y + 3: PSET (X + 3, V), c: NEXT V: X = X + 9: RETURN
  771. Cm: PSET (X, Y - 4), c: PSET (X + 1, Y - 4), c
  772. PSET (X - 1, Y - 3), c: PSET (X + 2, Y - 3), c
  773. FOR vert = Y - 2 TO Y + 2: PSET (X - 2, vert), c: NEXT vert
  774. PSET (X + 3, Y - 2), c: PSET (X + 3, Y + 2), c
  775. PSET (X, Y + 4), c: PSET (X + 1, Y + 4), c
  776. PSET (X - 1, Y + 3), c: PSET (X + 2, Y + 3), c: X = X + 9: RETURN
  777. Dm: FOR vert = Y - 4 TO Y + 4: PSET (X - 2, vert), c: NEXT vert
  778. FOR hor = X - 1 TO X + 1: PSET (hor, Y - 4), c: NEXT hor
  779. PSET (X + 2, Y - 3), c
  780. FOR vert = Y - 2 TO Y + 2: PSET (X + 2, vert), c: NEXT vert
  781. FOR hor = X - 1 TO X + 1: PSET (hor, Y + 4), c: NEXT hor
  782. PSET (X + 2, Y + 3), c: X = X + 9: RETURN
  783. Em: FOR vert = Y - 4 TO Y + 4: PSET (X - 2, vert), c: NEXT vert
  784. FOR hor = X - 1 TO X + 3: PSET (hor, Y - 4), c: NEXT hor
  785. FOR hor = X - 1 TO X + 1: PSET (hor, Y), c: NEXT hor
  786. FOR hor = X - 1 TO X + 3: PSET (hor, Y + 4), c: NEXT hor: X = X + 9: RETURN
  787. Fm: FOR vert = Y - 4 TO Y + 4: PSET (X - 2, vert), c: NEXT vert
  788. FOR hor = X - 1 TO X + 3: PSET (hor, Y - 4), c: NEXT hor
  789. FOR hor = X - 1 TO X + 1: PSET (hor, Y), c: NEXT hor: X = X + 9: RETURN
  790. Gm: PSET (X, Y - 4), c: PSET (X + 1, Y - 4), c
  791. PSET (X - 1, Y - 3), c: PSET (X + 2, Y - 3), c
  792. FOR vert = Y - 2 TO Y + 2: PSET (X - 2, vert), c: NEXT vert
  793. PSET (X + 3, Y - 2), c: PSET (X + 3, Y + 2), c: PSET (X + 3, Y + 1), c
  794. PSET (X, Y + 4), c: PSET (X + 1, Y + 4), c
  795. PSET (X - 1, Y + 3), c: PSET (X + 2, Y + 3), c
  796. FOR h = X + 1 TO X + 3: PSET (h, Y), c: NEXT h: X = X + 9: RETURN
  797. Hm: FOR vert = Y - 4 TO Y + 4: PSET (X - 2, vert), c: PSET (X + 3, vert), c: NEXT vert
  798. FOR hor = X - 1 TO X + 2: PSET (hor, Y), c: NEXT hor: X = X + 9: RETURN
  799. Im: X = X - 2: FOR V = Y - 4 TO Y + 4: PSET (X, V), c: NEXT V: X = X + 7: RETURN
  800. Lm: FOR V = Y - 4 TO Y + 4: PSET (X - 2, V), c: NEXT V
  801. FOR h = X - 1 TO X + 3: PSET (h, Y + 4), c: NEXT h: X = X + 9: RETURN
  802. Mm: FOR V = Y - 4 TO Y + 4: PSET (X - 3, V), c: NEXT V
  803. FOR V = Y - 4 TO Y + 4: PSET (X + 3, V), c: NEXT V
  804. PSET (X - 2, Y - 3), c: PSET (X - 1, Y - 2), c: PSET (X - 1, Y - 2), c
  805. PSET (X, Y - 1), c: PSET (X + 2, Y - 3), c: PSET (X + 1, Y - 2), c
  806. PSET (X + 1, Y - 2), c: X = X + 9: RETURN
  807. Nm: FOR V = Y - 4 TO Y + 4: PSET (X - 3, V), c: NEXT V
  808. FOR V = Y - 4 TO Y + 4: PSET (X + 3, V), c: NEXT V
  809. V = Y - 3: FOR h = X - 2 TO X + 2: PSET (h, V), c: V = V + 1: NEXT h
  810. X = X + 9: RETURN
  811. Km: FOR V = Y - 4 TO Y + 4: PSET (X - 2, V), c: NEXT V
  812. V = Y: FOR h = X - 1 TO X + 3: PSET (h, V), c: V = V - 1: NEXT h
  813. V = Y: FOR h = X - 1 TO X + 3: PSET (h, V), c: V = V + 1: NEXT h
  814. X = X + 9: RETURN
  815. Om: PSET (X, Y - 4), c: PSET (X + 1, Y - 4), c
  816. PSET (X - 1, Y - 3), c: PSET (X + 2, Y - 3), c
  817. FOR V = Y - 2 TO Y + 2: PSET (X - 2, V), c: PSET (X + 3, V), c: NEXT V
  818. PSET (X, Y + 4), c: PSET (X + 1, Y + 4), c
  819. PSET (X - 1, Y + 3), c: PSET (X + 2, Y + 3), c: X = X + 9: RETURN
  820. Pm: FOR V = Y - 4 TO Y + 4: PSET (X - 2, V), c: NEXT V
  821. FOR h = X - 1 TO X + 1: PSET (h, Y - 4), c: NEXT h
  822. PSET (X + 2, Y - 3), c: PSET (X + 3, Y - 2), c: PSET (X + 2, Y - 1), c
  823. FOR h = X - 1 TO X + 1: PSET (h, Y), c: NEXT h: X = X + 9: RETURN
  824. Qm: PSET (X, Y - 4), c: PSET (X + 1, Y - 4), c
  825. PSET (X - 1, Y - 3), c: PSET (X + 2, Y - 3), c
  826. FOR V = Y - 2 TO Y + 2: PSET (X - 2, V), c: PSET (X + 3, V), c: NEXT V
  827. PSET (X, Y + 4), c: PSET (X + 1, Y + 4), c
  828. PSET (X - 1, Y + 3), c: PSET (X + 2, Y + 3), c
  829. PSET (X + 1, Y + 2), c: PSET (X + 3, Y + 4), c
  830. PSET (X + 4, Y + 4), c: X = X + 9: RETURN
  831. rm:  FOR V = Y - 4 TO Y + 4: PSET (X - 2, V), c: NEXT V
  832. FOR h = X - 1 TO X + 1: PSET (h, Y - 4), c: NEXT h
  833. PSET (X + 2, Y - 3), c: PSET (X + 3, Y - 2), c: PSET (X + 2, Y - 1), c
  834. FOR h = X - 1 TO X + 1: PSET (h, Y), c: NEXT h
  835. FOR V = Y + 1 TO Y + 4: PSET (X + 2, V), c: NEXT V: X = X + 9: RETURN
  836. Sm: FOR h = X - 1 TO X + 2: PSET (h, Y - 4), c: NEXT h
  837. FOR h = X - 1 TO X + 2: PSET (h, Y), c: NEXT h
  838. FOR h = X - 1 TO X + 2: PSET (h, Y + 4), c: NEXT h
  839. FOR V = Y - 3 TO Y - 1: PSET (X - 2, V), c: NEXT V
  840. FOR V = Y + 1 TO Y + 3: PSET (X + 3, V), c: NEXT V
  841. PSET (X + 3, Y - 3), c: PSET (X - 2, Y + 3), c: X = X + 9: RETURN
  842. Tm:  FOR V = Y - 3 TO Y + 4: PSET (X, V), c: NEXT V
  843. FOR h = X - 3 TO X + 3: PSET (h, Y - 4), c: NEXT h: X = X + 9: RETURN
  844. Um:  FOR V = Y - 4 TO Y + 3: PSET (X - 2, V), c: PSET (X + 3, V), c: NEXT V
  845. FOR h = X - 1 TO X + 2: PSET (h, Y + 4), c: NEXT h: X = X + 9: RETURN
  846. Vm: FOR V = Y - 4 TO Y + 1: PSET (X - 2, V), c: PSET (X + 3, V), c: NEXT V
  847. FOR V = Y + 2 TO Y + 3: PSET (X - 1, V), c: PSET (X + 2, V), c: NEXT V
  848. PSET (X, Y + 4), c: PSET (X + 1, Y + 4), c: X = X + 9: RETURN
  849. '                      minuscules
  850. a: Y = Y + 1: FOR V = Y - 2 TO Y + 2: PSET (X - 2, V), c: NEXT V
  851. FOR V = Y - 3 TO Y + 3: PSET (X + 2, V), c: NEXT V
  852. FOR h = X - 1 TO X + 1: PSET (h, Y + 3), c: NEXT h
  853. FOR h = X - 1 TO X + 1: PSET (h, Y - 3), c: NEXT h
  854. X = X + 7: Y = Y - 1: RETURN
  855. B: Y = Y + 1: FOR V = Y - 5 TO Y + 3: PSET (X - 2, V), c: NEXT V
  856. FOR V = Y - 2 TO Y + 2: PSET (X + 2, V), c: NEXT V
  857. FOR h = X - 1 TO X + 1: PSET (h, Y + 3), c: NEXT h
  858. FOR h = X - 1 TO X + 1: PSET (h, Y - 3), c: NEXT h
  859. X = X + 7: Y = Y - 1: RETURN
  860. D: Y = Y + 1: FOR V = Y - 5 TO Y + 3: PSET (X + 2, V), c: NEXT V
  861. FOR V = Y - 2 TO Y + 2: PSET (X - 2, V), c: NEXT V
  862. FOR h = X - 1 TO X + 1: PSET (h, Y + 3), c: NEXT h
  863. FOR h = X - 1 TO X + 1: PSET (h, Y - 3), c: NEXT h
  864. X = X + 7: Y = Y - 1: RETURN
  865. f: Y = Y + 1: FOR V = Y - 4 TO Y + 3: PSET (X - 2, V), c: NEXT V
  866. PSET (X + 2, Y - 4), c: FOR h = X - 1 TO X + 1: PSET (h, Y - 1), c: NEXT h
  867. FOR h = X - 1 TO X + 1: PSET (h, Y - 5), c: NEXT h: X = X + 7: Y = Y - 1: RETURN
  868. g: Y = Y + 1: FOR V = Y - 2 TO Y + 2: PSET (X - 2, V), c: NEXT V
  869. FOR V = Y - 3 TO Y + 5: PSET (X + 2, V), c: NEXT V
  870. FOR h = X - 1 TO X + 1: PSET (h, Y + 3), c: NEXT h
  871. FOR h = X - 1 TO X + 1: PSET (h, Y - 3), c: NEXT h
  872. FOR h = X - 1 TO X + 1: PSET (h, Y + 5), c: NEXT h
  873. X = X + 7: Y = Y - 1: RETURN
  874. h: Y = Y + 1: PSET (X, Y - 3), c: PSET (X + 1, Y - 3), c
  875. FOR V = Y - 5 TO Y + 3: PSET (X - 1, V), c: NEXT V
  876. FOR V = Y - 2 TO Y + 3: PSET (X + 2, V), c: NEXT V: X = X + 7: Y = Y - 1: RETURN
  877. l: Y = Y + 1: FOR V = Y - 4 TO Y + 3: PSET (X, V), c: NEXT V
  878. PSET (X - 1, Y - 4), c: PSET (X - 1, Y + 3), c: PSET (X + 1, Y + 3), c
  879. X = X + 5: Y = Y - 1: RETURN
  880. P: Y = Y + 1: FOR V = Y - 3 TO Y + 5: PSET (X - 2, V), c: NEXT V
  881. FOR V = Y - 2 TO Y + 2: PSET (X + 2, V), c: NEXT V
  882. FOR h = X - 1 TO X + 1: PSET (h, Y + 3), c: NEXT h
  883. FOR h = X - 1 TO X + 1: PSET (h, Y - 3), c: NEXT h: X = X + 7: Y = Y - 1: RETURN
  884. q: Y = Y + 1: FOR V = Y - 2 TO Y + 2: PSET (X - 2, V), c: NEXT V
  885. FOR V = Y - 3 TO Y + 5: PSET (X + 2, V), c: NEXT V
  886. FOR h = X - 1 TO X + 1: PSET (h, Y + 3), c: NEXT h
  887. FOR h = X - 1 TO X + 1: PSET (h, Y - 3), c: NEXT h
  888. X = X + 7: Y = Y - 1: RETURN
  889. r: Y = Y + 1: FOR V = Y - 3 TO Y + 3: PSET (X - 2, V), c: NEXT V
  890. PSET (X + 2, Y - 2), c
  891. FOR h = X - 1 TO X + 1: PSET (h, Y - 3), c: NEXT h: X = X + 7: Y = Y - 1: RETURN
  892. T: Y = Y + 1: FOR V = Y - 4 TO Y + 2: PSET (X - 2, V), c: NEXT V
  893. FOR h = X - 1 TO X + 1: PSET (h, Y - 2), c: NEXT h
  894. FOR h = X - 1 TO X + 1: PSET (h, Y + 3), c: NEXT h: X = X + 6: Y = Y - 1: RETURN
  895. V: Y = Y + 1: FOR V = Y - 3 TO Y + 1: PSET (X - 2, V), c: PSET (X + 3, V), c: NEXT V
  896. FOR V = Y + 2 TO Y + 2: PSET (X - 1, V), c: PSET (X + 2, V), c: NEXT V
  897. PSET (X, Y + 3), c: PSET (X + 1, Y + 3), c: X = X + 9: Y = Y - 1: RETURN
  898. X: Y = Y + 1: f = X - 3: FOR D = Y - 3 TO Y + 3: PSET (f, D), c: f = f + 1: NEXT D
  899. f = X + 3: FOR D = Y - 3 TO Y + 3: PSET (f, D), c: f = f - 1: NEXT D
  900. X = X + 7: Y = Y - 1: RETURN
  901. Y: Y = Y + 1: FOR V = Y - 3 TO Y + 2: PSET (X - 2, V), c: NEXT V
  902. FOR V = Y - 3 TO Y + 5: PSET (X + 2, V), c: NEXT V
  903. FOR h = X - 1 TO X + 1: PSET (h, Y + 3), c: NEXT h
  904. FOR h = X - 1 TO X + 1: PSET (h, Y + 6), c: NEXT h
  905. X = X + 7: Y = Y - 1: RETURN
  906. c: Y = Y + 1: FOR h = X - 1 TO X + 1: PSET (h, Y - 3), c: NEXT h
  907. PSET (X - 2, Y - 2), c: PSET (X + 2, Y - 2), c
  908. FOR V = Y - 1 TO Y + 1: PSET (X - 2, V), c: NEXT V
  909. PSET (X - 2, Y + 2), c: PSET (X + 2, Y + 2), c
  910. FOR h = X - 1 TO X + 1: PSET (h, Y + 3), c: NEXT h: Y = Y - 1: X = X + 7: RETURN
  911. e: Y = Y + 1: FOR h = X - 1 TO X + 1: PSET (h, Y - 3), c: NEXT h
  912. PSET (X - 2, Y - 2), c: PSET (X + 2, Y - 2), c
  913. PSET (X - 2, Y - 1), c: PSET (X + 2, Y - 1), c
  914. FOR h = X - 2 TO X + 1: PSET (h, Y), c: NEXT h: PSET (X - 2, Y + 1), c
  915. PSET (X - 2, Y + 2), c: PSET (X + 2, Y + 2), c
  916. FOR h = X - 1 TO X + 1: PSET (h, Y + 3), c: NEXT h: Y = Y - 1: X = X + 7: RETURN
  917. eacc: FOR h = X - 1 TO X + 1: PSET (h, Y - 4), c: NEXT h
  918. GOSUB e: RETURN
  919. I: Y = Y + 1: PSET (X, Y - 4), c: FOR V = Y - 2 TO Y + 3: PSET (X, V), c: NEXT V
  920. PSET (X - 1, Y - 2), c: PSET (X - 1, Y + 3), c: PSET (X + 1, Y + 3), c
  921. Y = Y - 1: X = X + 6: RETURN
  922. M:  Y = Y + 1: X = X + 1: FOR V = Y - 3 TO Y + 3
  923. PSET (X - 3, V), c: PSET (X, V), c: PSET (X + 3, V), c: NEXT V
  924. FOR h = X - 3 TO X + 3: PSET (h, Y - 2), c: NEXT h: X = X + 8: Y = Y - 1: RETURN
  925. N: Y = Y + 1: PSET (X - 2, Y - 3), c: PSET (X, Y - 3), c: PSET (X + 1, Y - 3), c
  926. FOR V = Y - 2 TO Y + 3: PSET (X - 1, V), c: NEXT V
  927. FOR V = Y - 2 TO Y + 3: PSET (X + 2, V), c: NEXT V: Y = Y - 1: X = X + 7: RETURN
  928. O: Y = Y + 1: FOR V = Y - 2 TO Y + 2: PSET (X - 2, V), c: NEXT V
  929. FOR V = Y - 2 TO Y + 2: PSET (X + 2, V), c: NEXT V
  930. FOR h = X - 1 TO X + 1: PSET (h, Y + 3), c: NEXT h
  931. FOR h = X - 1 TO X + 1: PSET (h, Y - 3), c: NEXT h: Y = Y - 1: X = X + 7: RETURN
  932. S: Y = Y + 1: FOR h = X - 1 TO X + 1: PSET (h, Y - 3), c: NEXT h
  933. PSET (X - 2, Y - 2), c: PSET (X + 2, Y - 2), c: PSET (X - 2, Y - 1), c
  934. FOR h = X - 1 TO X + 1: PSET (h, Y), c: NEXT h: PSET (X + 2, Y + 1), c
  935. PSET (X - 2, Y + 2), c: PSET (X + 2, Y + 2), c
  936. FOR h = X - 1 TO X + 1: PSET (h, Y + 3), c: NEXT h: Y = Y - 1: X = X + 7: RETURN
  937. U: Y = Y + 1: FOR V = Y - 3 TO Y + 2: PSET (X - 2, V), c: NEXT V
  938. FOR V = Y - 3 TO Y + 2: PSET (X + 2, V), c: NEXT V
  939. FOR h = X - 1 TO X + 1: PSET (h, Y + 3), c: NEXT h: Y = Y - 1: X = X + 7: RETURN
  940. z: Y = Y + 1: FOR h = X - 2 TO X + 3: PSET (h, Y + 3), c: NEXT h
  941. FOR h = X - 2 TO X + 3: PSET (h, Y - 3), c: NEXT h
  942. V = Y + 3: FOR h = X - 2 TO X + 3: PSET (h, V), c: V = V - 1: NEXT h
  943. Y = Y - 1: X = X + 7: RETURN
  944.  
  945. dix: GOSUB g1: GOSUB g0: RETURN
  946. vgt: GOSUB g2: GOSUB g0: RETURN
  947. cinqnte: GOSUB g5: GOSUB g0: RETURN
  948. cent: GOSUB dix: GOSUB g0: RETURN
  949. deuxct: GOSUB vgt: GOSUB g0: RETURN
  950. cinqct: GOSUB cinqnte: GOSUB g0: RETURN
  951.  
  952. dot: PSET (X, Y + 3), c: X = X + 5: RETURN
  953. apos: PSET (X, Y - 3), c: PSET (X, Y - 2), c: X = X + 7: RETURN
  954. moins: FOR h = X - 2 TO X + 2: PSET (h, Y), c: NEXT h: RETURN
  955. plus: FOR h = X - 2 TO X + 2: PSET (h, Y), c: NEXT h
  956. FOR V = Y - 2 TO Y + 2: PSET (X, V), c: NEXT V: RETURN
  957. micro: Y = Y + 1: FOR V = Y - 3 TO Y + 5: PSET (X - 2, V), c: NEXT V
  958. FOR h = X - 1 TO X + 1: PSET (h, Y + 3), c: NEXT h
  959. FOR V = Y - 2 TO Y + 4: PSET (X + 2, V), c: NEXT V: X = X + 7: Y = Y - 1: RETURN
  960. pt2: PSET (X, Y + 2), c: PSET (X, Y - 1), c: RETURN
  961. trt: Y = Y + 7: FOR hor = X - 3 TO X + 4: PSET (hor, Y), c: NEXT hor
  962. FOR hor = X - 3 TO X + 4: PSET (hor, Y + 1), c: NEXT hor: Y = Y - 7: RETURN
  963. tirt: FOR hor = X - 2 TO X + 3: PSET (hor, Y + 1), c: NEXT hor
  964. FOR hor = X - 2 TO X + 3: PSET (hor, Y), c: NEXT hor: X = X + 9: RETURN
  965. pintr: FOR h = X - 1 TO X + 2: PSET (h, Y - 4), c: NEXT h
  966. FOR V = Y TO Y + 2: PSET (X, V), c: NEXT V
  967. FOR V = Y - 2 TO Y - 1: PSET (X + 3, V), c: NEXT V
  968. PSET (X - 2, Y - 3), c: PSET (X + 3, Y - 3), c: PSET (X, Y + 4), c
  969. FOR h = X + 1 TO X + 2: PSET (h, Y), c: NEXT h: RETURN
  970.  
  971. inst: GOSUB Um: GOSUB Nm: X = X + 9: GOSUB Im: GOSUB Nm: GOSUB Sm: GOSUB Tm
  972. GOSUB Am: GOSUB Nm: GOSUB Tm: X = X + 9: GOSUB Sm: GOSUB Vm: GOSUB Pm: RETURN
  973. charge: Mouse 0: LINE (0, 0)-(639, 479), 3, BF
  974. a = 200: B = 130: aa = 440: bb = 200: cf = 7: GOSUB boite
  975. X = 263: Y = 165: c = 0: GOSUB inst: X = 264: GOSUB inst: RETURN
  976.  
  977. retourmenu: GOSUB charge: CHAIN "minilab\MINILAB2.bas"
  978. graph: GOSUB charge: CHAIN "minilab\graf.bas"
  979. schema: GOSUB charge: CHAIN "minilab\schemas.bas"
  980. databk: GOSUB charge: CHAIN "minilab\dtbook.bas"
  981. modmemo: GOSUB charge: CHAIN "minilab\memo.bas"
  982.  
  983. minilab: GOSUB Mm: GOSUB Im: GOSUB Nm: GOSUB Im: GOSUB Lm: GOSUB Am: GOSUB Bm: RETURN
  984. generat: GOSUB Gm: GOSUB eacc: GOSUB N: GOSUB eacc: GOSUB r: GOSUB a: X = X + 1:
  985. GOSUB T: GOSUB e: GOSUB U: GOSUB r: X = X + 7: GOSUB D: GOSUB e: X = X + 7
  986. GOSUB Sm: X = X - 1: GOSUB I: GOSUB g: GOSUB N: GOSUB a: GOSUB U: GOSUB X: RETURN
  987. CHANGE: GOSUB Cm: GOSUB Hm: GOSUB Am: GOSUB Nm: GOSUB Gm: GOSUB Em
  988. GOSUB rm: X = X + 7: RETURN
  989. refaire: GOSUB rm: GOSUB Em: GOSUB Fm: GOSUB Am: GOSUB Im: GOSUB rm
  990. GOSUB Em: RETURN
  991. graf: GOSUB Gm: GOSUB rm: GOSUB Am: GOSUB Pm: GOSUB Hm: GOSUB Em: RETURN
  992. dbook: GOSUB Dm: GOSUB Am: GOSUB Tm: GOSUB Am: GOSUB Bm: GOSUB Om
  993. GOSUB Om: GOSUB Km: RETURN
  994. schem: GOSUB Sm: GOSUB Cm: GOSUB Hm: GOSUB Em: GOSUB Mm: GOSUB Am
  995. GOSUB Sm: RETURN
  996. memo: GOSUB Mm: GOSUB Em: GOSUB Mm: GOSUB Om: RETURN
  997. menu: GOSUB Mm: GOSUB Em: GOSUB Nm: GOSUB Um: RETURN
  998. sod: c = 12: GOSUB Dm: X = X - 1: c = 5: GOSUB Om: c = 14: GOSUB Sm: RETURN
  999. OK: GOSUB Om: GOSUB Km: RETURN
  1000. Hz: GOSUB Hm: GOSUB z: RETURN
  1001. scop: GOSUB Sm: GOSUB Cm: GOSUB Om: GOSUB Pm: GOSUB Em: RETURN
  1002. calibroto: GOSUB Cm: GOSUB Am: GOSUB Lm: GOSUB Im: GOSUB Bm: GOSUB rm
  1003. GOSUB Em: GOSUB Sm: X = X + 8: GOSUB Am: GOSUB Um: GOSUB Tm: GOSUB Om: RETURN
  1004. reglages: GOSUB rm: GOSUB Em: GOSUB Gm: GOSUB Lm: GOSUB Am: GOSUB Gm
  1005. GOSUB Em: GOSUB Sm: RETURN
  1006. quit: GOSUB Qm: GOSUB Um: GOSUB Im: GOSUB Tm: GOSUB Tm: GOSUB Em
  1007. GOSUB rm: RETURN
  1008. oui: GOSUB Om: GOSUB Um: GOSUB Im: RETURN
  1009. non: GOSUB Nm: GOSUB Om: GOSUB Nm: RETURN
  1010. timebase: GOSUB Bm: X = X - 1: GOSUB a: GOSUB S: GOSUB e: X = X + 7: GOSUB D
  1011. GOSUB e: X = X + 7: GOSUB T: GOSUB e: GOSUB M: GOSUB P: GOSUB S: GOSUB pt2
  1012. RETURN
  1013. amplitude: GOSUB Am: GOSUB M: GOSUB P: GOSUB l: GOSUB I
  1014. GOSUB T: GOSUB U: GOSUB D: GOSUB e: X = X + 4: RETURN
  1015. sigal: GOSUB Sm: GOSUB I: GOSUB g: GOSUB N: GOSUB a: GOSUB l: X = X + 7: RETURN
  1016. pardiv: GOSUB P: GOSUB a: GOSUB r: X = X + 7: GOSUB Dm: GOSUB Im: GOSUB Vm: RETURN
  1017. frequence: GOSUB Fm: GOSUB r: GOSUB eacc: GOSUB q: GOSUB U
  1018. GOSUB e: GOSUB N: GOSUB c: GOSUB e: X = X + 4: RETURN
  1019. rapportcy: GOSUB rm: GOSUB a: GOSUB P: GOSUB P: GOSUB O: GOSUB r: GOSUB T
  1020. X = X + 7: GOSUB Cm: GOSUB Y: GOSUB c: GOSUB l: GOSUB I: GOSUB q: GOSUB U
  1021. GOSUB e: X = X + 4: RETURN
  1022. facteuratt: GOSUB Fm: GOSUB a: GOSUB c: GOSUB T: GOSUB e: GOSUB U: GOSUB r
  1023. X = X + 7: GOSUB D: GOSUB apos: GOSUB a: GOSUB T: GOSUB T: GOSUB eacc: GOSUB N
  1024. GOSUB U: GOSUB a: GOSUB T: GOSUB I: GOSUB O: GOSUB N: RETURN
  1025. mode: GOSUB Mm: GOSUB Om: GOSUB Dm: GOSUB Em: X = X + 8: RETURN
  1026. MONO: GOSUB Mm: GOSUB Om: X = X + 1: GOSUB Nm: GOSUB Om: X = X + 8: RETURN
  1027. ou: GOSUB O: GOSUB U: X = X + 8: RETURN
  1028. en: GOSUB e: GOSUB N: X = X + 8: RETURN
  1029. DUAL: GOSUB Dm: GOSUB Um: GOSUB Am: GOSUB Lm: X = X + 10: RETURN
  1030. SinCarTri: GOSUB trt: GOSUB Sm: GOSUB I: GOSUB N: GOSUB U: GOSUB S: X = X + 7
  1031. GOSUB trt: GOSUB Cm: GOSUB a: GOSUB r: GOSUB r: GOSUB eacc: X = X + 7
  1032. GOSUB trt: GOSUB Tm: GOSUB r: GOSUB I: GOSUB a: GOSUB N: GOSUB g: GOSUB l
  1033. GOSUB e: X = X + 5: GOSUB pintr: RETURN
  1034. mv: GOSUB M: GOSUB Vm: X = X + 8: RETURN
  1035. URI: c = 12: GOSUB Um: c = 3: GOSUB egal: c = 2: GOSUB rm: c = 9: GOSUB Im: RETURN
  1036. 707 : c = 4: GOSUB dot: GOSUB g7: GOSUB g0: GOSUB g7: RETURN
  1037. PUI: c = 13: GOSUB Pm: GOSUB egal: c = 12: GOSUB Um: GOSUB Im: RETURN
  1038. REM ...............................................................
  1039. Entree: Mouse 1
  1040.    DO: Clic ClickDelay
  1041.    f$ = INKEY$: f$ = UCASE$(f$)
  1042.    LOOP UNTIL B% <> Bx% OR LEN(f$)
  1043.    Mouse 0
  1044.    IF Y% > 55 AND Y% < 61 THEN GOSUB TestIcon
  1045.    RETURN
  1046. TestIcon:
  1047. IF X% > 6 AND X% < 13 THEN GOTO recomm
  1048. IF X% > 15 AND X% < 22 THEN GOTO graph
  1049. IF X% > 22 AND X% < 29 THEN GOTO schema
  1050. IF X% > 29 AND X% < 34 THEN GOTO databk
  1051. IF X% > 35 AND X% < 40 THEN GOTO modmemo
  1052. IF X% > 40 AND X% < 47 THEN GOTO retourmenu
  1053. IF X% > 47 AND X% < 52 THEN SYSTEM
  1054. RETURN
  1055. MonoDual:
  1056. IF X% > 34 AND X% < 40 THEN f$ = "M"
  1057. IF X% > 42 AND X% < 48 THEN f$ = "D"
  1058. RETURN
  1059. SiCaTr:
  1060. IF X% > 15 AND X% < 21 THEN f$ = "S"
  1061. IF X% > 21 AND X% < 26 THEN f$ = "C"
  1062. IF X% > 26 AND X% < 34 THEN f$ = "T"
  1063. RETURN
  1064. AmpliSignal1:
  1065. IF X% > 20 AND X% < 24 THEN f$ = "M"
  1066. IF X% > 29 AND X% < 33 THEN f$ = "V"
  1067. RETURN
  1068. FreqSignal1:
  1069. IF X% > 21 AND X% < 24 THEN f$ = "H"
  1070. IF X% > 24 AND X% < 28 THEN f$ = "K"
  1071. IF X% > 28 AND X% < 33 THEN f$ = "M"
  1072. RETURN
  1073. RcOkCh1:
  1074. IF X% > 20 AND X% < 23 THEN f$ = "O"
  1075. IF X% > 23 AND X% < 32 THEN f$ = "C"
  1076. RETURN
  1077. SiCaTr2:
  1078. IF X% > 47 AND X% < 53 THEN f$ = "S"
  1079. IF X% > 53 AND X% < 58 THEN f$ = "C"
  1080. IF X% > 58 AND X% < 66 THEN f$ = "T"
  1081. RETURN
  1082. AmpliSignal2:
  1083. IF X% > 52 AND X% < 57 THEN f$ = "M"
  1084. IF X% > 60 AND X% < 65 THEN f$ = "V"
  1085. RETURN
  1086. RcOkCh2:
  1087. IF X% > 53 AND X% < 55 THEN f$ = "O"
  1088. IF X% > 55 AND X% < 63 THEN f$ = "C"
  1089. RETURN
  1090. TestMouse:
  1091. IF X% > 46 AND X% < 51 THEN GOSUB ReglMoins
  1092. IF X% > 71 AND X% < 76 THEN GOSUB ReglPlus
  1093. IF X% > 67 AND X% < 70 AND Y% > 5 AND Y% < 8 THEN GOSUB QuitOuiNon
  1094. RETURN
  1095. ReglMoins:
  1096. IF Y% > 23 AND Y% < 27 THEN GOTO Ampli1Moins
  1097. IF Y% > 27 AND Y% < 31 THEN GOTO Feq1Moins
  1098. IF Y% > 31 AND Y% < 35 THEN GOTO RC1Moins
  1099. IF Y% > 38 AND Y% < 42 THEN GOTO Ampli2Moins
  1100. IF Y% > 42 AND Y% < 46 THEN GOTO Feq2Moins
  1101. IF Y% > 46 AND Y% < 50 THEN GOTO RC2Moins
  1102. IF Y% > 53 AND Y% < 57 THEN GOTO FacteurMoins
  1103. RETURN
  1104. ReglPlus:
  1105. IF Y% > 23 AND Y% < 27 THEN GOTO Ampli1Plus
  1106. IF Y% > 27 AND Y% < 31 THEN GOTO Feq1Plus
  1107. IF Y% > 31 AND Y% < 35 THEN GOTO RC1Plus
  1108. IF Y% > 38 AND Y% < 42 THEN GOTO Ampli2Plus
  1109. IF Y% > 42 AND Y% < 46 THEN GOTO Feq2Plus
  1110. IF Y% > 46 AND Y% < 50 THEN GOTO RC2Plus
  1111. IF Y% > 53 AND Y% < 57 THEN GOTO FacteurPlus
  1112. RETURN
  1113. FacteurPlus: Facteur% = Facteur% + 1
  1114. IF Facteur% > 9 THEN Facteur% = 9: RETURN
  1115. LINE (fa, 426)-(fa + 20, 444), 7, BF
  1116. fa = fa + 20
  1117. LINE (fa, 426)-(fa + 20, 444), 0, B: LINE (fa + 1, 443)-(fa + 1, 427), 15
  1118. LINE -(fa + 19, 427), 15: Clic ClickDelay
  1119. RETURN
  1120. FacteurMoins: Facteur% = Facteur% - 1
  1121. IF Facteur% < 1 THEN Facteur% = 1: RETURN
  1122. LINE (fa, 426)-(fa + 20, 444), 7, BF
  1123. fa = fa - 20
  1124. LINE (fa, 426)-(fa + 20, 444), 0, B: LINE (fa + 1, 443)-(fa + 1, 427), 15
  1125. LINE -(fa + 19, 427), 15: Clic ClickDelay
  1126. RETURN
  1127. QuitOuiNon: a = 350: aa = 610: B = 81: bb = 150:
  1128. LINE (a, B)-(aa, bb), 9, BF: cf = 12: GOSUB boite
  1129. LINE (a, B - 20)-(aa, bb), 0, B: LINE (a + 1, B - 19)-(aa - 1, B - 1), 4, BF
  1130. X = 449: Y = B - 10: c = 15: GOSUB quit: X = 450: GOSUB quit
  1131. Y = B + 31: LINE (a + 40, B + 25)-(a + 50, B + 35), 0, B
  1132. c = 0: X = a + 60: GOSUB trt: GOSUB oui: X = a + 61: GOSUB oui
  1133. LINE (aa - 40, B + 25)-(aa - 50, B + 35), 0, B
  1134. X = aa - 80: GOSUB non: X = aa - 81: GOSUB trt: GOSUB non
  1135. ChoixQuit:
  1136.    Mouse 1
  1137.    DO: Clic ClickDelay
  1138.    f$ = INKEY$: f$ = UCASE$(f$)
  1139.    LOOP UNTIL B% <> Bx% OR LEN(f$)
  1140.    Mouse 0
  1141. IF Y% > 13 AND Y% < 16 AND X% > 49 AND X% < 52 THEN f$ = "O"
  1142. IF Y% > 13 AND Y% < 16 AND X% > 69 AND X% < 74 THEN f$ = "N"
  1143. a = 350: aa = 610: B = 81: bb = 150: LINE (a, B - 20)-(aa, bb), 9, BF
  1144. B = 150: bb = 475
  1145. LINE (a, B - 20)-(aa, bb), 0, B: LINE (a + 1, B - 19)-(aa - 1, B - 1), 1, BF
  1146. X = 445: Y = B - 10: c = 15: GOSUB reglages: X = 446: GOSUB reglages
  1147. LINE (a, B)-(aa, B), 0
  1148. IF f$ = "O" THEN GOTO debut
  1149. IF f$ = "N" THEN RETURN
  1150. RETURN AttMouse
  1151. REM +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1152. TraiteErreur: BEEP: Mouse 0
  1153. a = 100: aa = 540: B = 150: bb = 320: LINE (a, B)-(aa, bb), 0, BF
  1154. LINE (a, B)-(aa, bb), 12, B: LINE (a, B + 30)-(aa, B + 30), 12, B
  1155. COLOR 12: LOCATE 11, 38: PRINT "ERREUR"
  1156. CodErr$ = STR$(ERR): NoCode$ = "Code d'erreur :"
  1157. IF ERR < 25 OR ERR = 26 THEN ME$ = "Erreur interne au programme"
  1158. IF ERR > 28 OR ERR < 53 THEN ME$ = "Erreur interne au programme"
  1159. IF ERR = 25 THEN ME$ = "Périphérique absent ou éteint"
  1160. IF ERR = 27 THEN ME$ = "Imprimante : Attente papier..."
  1161. IF ERR = 53 THEN ME$ = "Fichier absent !"
  1162. IF ERR = 57 THEN ME$ = "Erreur de périphérique E / S"
  1163. IF ERR = 61 THEN ME$ = "Disque saturé"
  1164. IF ERR = 68 THEN ME$ = "Périphérique non disponible"
  1165. IF ERR = 75 OR ERR = 76 THEN ME$ = "Erreur de chemin d'accès au fichier"
  1166. COLOR 12: LOCATE 14, (80 - LEN(ME$)) / 2: PRINT ME$
  1167. COLOR 14: LOCATE 16, (78 - LEN(NoCode$)) / 2: PRINT NoCode$; CodErr$
  1168. Message$ = "Appuyez sur une touche pour continuer..."
  1169. COLOR 12: LOCATE 18, (80 - LEN(Message$)) / 2: PRINT Message$: SLEEP 2
  1170. DO: f$ = INKEY$: LOOP UNTIL LEN(f$)
  1171. COLOR 15: RESUME debuter
  1172.  
  1173. MS.Data:
  1174.  DATA 55,8b,ec,56,57,8b,76,0c,8b,04,8b,76,0a,8b,1c,8b,76,08,8b,0c
  1175.  DATA 8b,76,06,8b,14,cd,21,8b,76,0c,89,04,8b,76,0a,89,1c
  1176.  DATA 8b,76,08,89,0c,8b,76,06,89,14,5f,5e,5d,ca,08,00,#
  1177.  
  1178. DEFSNG A-Z
  1179. SUB Clic (ClickDelay%)
  1180. GetMouse
  1181. B% = 0
  1182. FOR T = 0 TO ClickDelay%: NEXT T
  1183. GetMouse
  1184. END SUB
  1185.  
  1186. SUB GetMouse
  1187.  r% = Interr%(&H33, 3, Bx%, CX%, DX%)
  1188.  B% = Bx%: X% = CX% / 8 + 1: Y% = DX% / 8 + 1
  1189. END SUB
  1190.  
  1191. SUB IconDataBook (a, B)
  1192. LINE (a + 10, B)-(a + 23, B + 20), 0, B
  1193. LINE (a + 10, B + 7)-(a + 23, B + 20), 0, BF: CIRCLE (a + 16, B + 3), 2, 0
  1194. LINE (a + 10, B + 10)-(a + 23, B + 10), 7
  1195. LINE (a + 11, B + 21)-(a + 12, B + 30), 7, B
  1196. LINE (a + 21, B + 21)-(a + 22, B + 30), 7, B
  1197. LINE (a + 16, B + 21)-(a + 17, B + 30), 7, B
  1198. LINE (a + 25, B + 12)-(a + 33, B + 18), 7, BF
  1199. LINE (a + 25, B + 11)-(a + 33, B + 19), 8, B
  1200. LINE (a + 25, B + 19)-(a + 35, B + 19), 8
  1201. LINE (a + 27, B + 19)-(a + 24, B + 30), 8
  1202. LINE (a + 31, B + 19)-(a + 34, B + 30), 8
  1203. LINE (a + 29, B + 20)-(a + 29, B + 30), 8
  1204. END SUB
  1205.  
  1206. SUB IconGraf (a, B)
  1207. LINE (a + 3, B + 1)-(a + 3, B + 30), 0: LINE (a, B + 27)-(a + 40, B + 27), 0
  1208. FOR I = B + 24 TO B STEP -6: LINE (a + 2, I)-(a + 3, I), 0: NEXT I
  1209. FOR I = a + 6 TO a + 40 STEP 6: LINE (I, B + 27)-(I, B + 28), 0: NEXT I
  1210. LINE (a + 7, B + 23)-(a + 18, B + 5), 12: LINE -(a + 25, B + 19), 12
  1211. LINE -(a + 36, B + 3), 12
  1212. END SUB
  1213.  
  1214. SUB IconQuitter (a, B)
  1215. LINE (a + 1, B + 8)-(a + 23, B + 22), 7, BF
  1216. LINE (a + 24, B + 4)-(a + 24, B + 26), 7
  1217. LINE -(a + 35, B + 15), 7: LINE -(a + 24, B + 4), 7
  1218. PAINT (a + 26, B + 15), 7, 7
  1219. LINE (a, B + 8)-(a, B + 23), 0: LINE -(a + 23, B + 23), 0
  1220. LINE -(a + 23, B + 27), 0: LINE (a + 23, B + 4)-(a + 23, B + 7), 0
  1221. END SUB
  1222.  
  1223. SUB IconRefaire (a, B)
  1224. LINE (a, B)-(a + 40, B + 30), 8, B
  1225. LINE (a + 1, B + 1)-(a + 39, B + 29), 3, BF
  1226. LINE (a + 5, B + 5)-(a + 35, B + 25), 7, BF
  1227. PSET (a + 2, B + 2), 12: DRAW "c12 R15 G5 F15 G5 H15 G5 U15"
  1228. PSET (a + 3, B + 1), 4: DRAW "c4 R16 G5 F15 G5"
  1229. PAINT (a + 5, B + 4), 12, 12
  1230. END SUB
  1231.  
  1232. SUB IconSchema (a, B)
  1233. LINE (a, B)-(a + 40, B + 30), 0, BF
  1234. LINE (a + 7, B + 5)-(a + 7, B + 25), 13: LINE -(a + 22, B + 15), 13
  1235. LINE -(a + 7, B + 5), 13: LINE (a + 23, B + 15)-(a + 29, B + 15), 12
  1236. LINE (a + 30, B + 13)-(a + 30, B + 17), 14
  1237. LINE (a + 32, B + 13)-(a + 32, B + 17), 14
  1238. LINE (a + 33, B + 15)-(a + 40, B + 15), 12
  1239. LINE (a + 35, B)-(a + 35, B + 7), 10: LINE -(a + 37, B + 7), 10
  1240. LINE -(a + 37, B), 10: LINE (a + 36, B + 8)-(a + 36, B + 14), 10
  1241. LINE (a, B + 9)-(a + 6, B + 9), 12: LINE (a, B + 20)-(a + 6, B + 20), 12
  1242. LINE (a + 16, B)-(a + 16, B + 10), 12
  1243. LINE (a + 16, B + 20)-(a + 16, B + 30), 12
  1244. END SUB
  1245.  
  1246. FUNCTION Interr% (Num%, AX%, Bx%, CX%, DX%)
  1247.  IF MS%(0) = 0 THEN                     '** est-ce que MS%() est initialisé ?
  1248.   PRINT "ERREUR : le programme machine est absent ! Arrêt !"
  1249.   END
  1250.  END IF
  1251.  
  1252.  DEF SEG = VARSEG(MS%(0))
  1253.  POKE VARPTR(MS%(0)) + 26, Num%
  1254.  CALL ABSOLUTE(AX%, Bx%, CX%, DX%, VARPTR(MS%(0)))
  1255.  
  1256.  Interr% = AX%
  1257.  
  1258. END FUNCTION
  1259.  
  1260. SUB Mouse (OnOff%)
  1261. IF OnOff% = 0 THEN OnOff% = 2 ELSE OnOff% = 1
  1262. r% = Interr%(&H33, OnOff%, Bx%, CX%, DX%)
  1263. END SUB
  1264.  
  1265. SUB MouseSpeed (Curseur%)
  1266. r% = Interr%(&H33, 15, Bx%, Curseur%, Curseur%)
  1267. END SUB
  1268.  
  1269. SUB ReadData
  1270.  RESTORE MS.Data
  1271.  DEF SEG = VARSEG(MS%(0))
  1272.  FOR I% = 0 TO 99
  1273.   READ Byte$
  1274.   IF Byte$ = "#" THEN EXIT FOR
  1275.   POKE VARPTR(MS%(0)) + I%, VAL("&H" + Byte$)
  1276.  NEXT I%
  1277. END SUB
  1278.  
  1279. SUB ResetMouse
  1280. r% = Interr%(&H33, 0, Bx%, CX%, DX%)
  1281. r% = Interr%(&H33, 1, Bx%, CX%, DX%)
  1282. END SUB
  1283.  
  1284. SUB SaisieNum (Num$, lo%, X%, Y%)
  1285.  IF Y% = 0 THEN Y% = CSRLIN
  1286.  IF X% = 0 THEN Y% = POS(0)
  1287.  xc% = 1
  1288.  Ed$ = Num$
  1289. BoucleSaisie:
  1290.  DO
  1291.   IF xc% > lo% THEN xc% = lo%
  1292.   LOCATE Y%, X%, 0
  1293.   PRINT MID$(Ed$ + STRING$(lo%, "_"), 1, lo%);
  1294.   LOCATE Y%, X% + xc% - 1, 1, 5 * ins%, 7
  1295.   DO
  1296.   key$ = INKEY$
  1297.   LOOP UNTIL LEN(key$)
  1298.   r$ = MID$(Ed$, xc%)
  1299.   IF LEN(key$) = 2 THEN
  1300.    sk% = ASC(RIGHT$(key$, 1))
  1301.    SELECT CASE sk%
  1302.     CASE 75
  1303.      xc% = xc% - 1
  1304.      IF xc% = 0 THEN xc% = 1
  1305.     CASE 77
  1306.      xc% = xc% + 1
  1307.      IF xc% > LEN(Ed$) + 1 THEN xc% = LEN(Ed$) + 1
  1308.     CASE 83
  1309.      IF xc% < LEN(Ed$) + 1 THEN Ed$ = LEFT$(Ed$, xc% - 1) + MID$(r$, 2)
  1310.     CASE ELSE
  1311.    END SELECT
  1312.   ELSE
  1313.   k% = ASC(key$)
  1314.    SELECT CASE k%
  1315.     CASE 9
  1316.     CASE 13
  1317.      Num$ = Ed$
  1318.      EXIT DO
  1319.     CASE 8
  1320.      IF xc% > 1 THEN
  1321.       Ed$ = LEFT$(Ed$, xc% - 2) + r$
  1322.       xc% = xc% - 1
  1323.      END IF
  1324.     CASE ELSE
  1325.       Ed$ = LEFT$(Ed$, xc% - 1) + key$
  1326.       IF ins% THEN
  1327.        Ed$ = Ed$ + r$
  1328.       ELSE
  1329.        IF LEN(r$) THEN Ed$ = Ed$ + MID$(r$, 2)
  1330.       END IF
  1331.       Ed$ = LEFT$(Ed$, lo%)
  1332.       xc% = xc% + 1
  1333.     END SELECT
  1334.   END IF
  1335.  LOOP
  1336.  LOCATE , , 0
  1337.  END SUB
  1338.  
  1339.