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

  1. REM W. Prévost 1993 : MINILAB    GRAF
  2. DECLARE SUB Mouse (OnOff%)
  3. DECLARE SUB ResetMouse ()
  4. DECLARE SUB GetMouse ()
  5. DECLARE SUB MouseSpeed (Curseur%)
  6. DECLARE SUB SetMouse (x%, y%)
  7. DECLARE SUB ReadData ()
  8. DECLARE FUNCTION Interr% (Num%, AX%, Bx%, CX%, DX%)
  9. DIM SHARED MS%(45)
  10. CLEAR
  11. ReadData
  12. DIM SHARED x%, y%, B%
  13. ON ERROR GOTO TraiteErreur
  14. DEFINT A-Z: SCREEN 12
  15. OPEN "Minilab\SETUP.INI" FOR INPUT AS #1
  16. SEEK #1, 1
  17. INPUT #1, CoulBarreTitre, CoulLettresTitre, CoulZoneTravail
  18. INPUT #1, VitesseSouris, ClickDelay
  19. CLOSE #1
  20.  
  21. debut: COLOR 15
  22. LINE (3, 3)-(636, 28), CoulBarreTitre, BF
  23. LINE (3, 106)-(636, 476), CoulZoneTravail, BF
  24. LINE (3, 29)-(636, 29), 15
  25. c = CoulLettresTitre: x = 30: y = 14: GOSUB minilab: x = 31: GOSUB minilab
  26. x = 297: GOSUB graf: x = 298: GOSUB graf
  27. LINE (3, 31)-(636, 60), 7, BF: LINE (3, 61)-(636, 105), 15, BF
  28. LINE (3, 59)-(636, 59), 15: LINE (3, 103)-(636, 103), 7
  29. LINE (0, 0)-(639, 479), 0, B: LINE (1, 1)-(638, 478), 7, B
  30. LINE (2, 2)-(637, 477), 0, B
  31. c = 4:  y = 44: x = 30: GOSUB trt: GOSUB Typede: GOSUB graf
  32. x = 31: GOSUB Typede: GOSUB graf
  33. c = 9: x = 182: GOSUB trt: x = 172: GOSUB schm: x = 173: GOSUB schm
  34. x = 247: GOSUB trt: GOSUB mem: x = 248: GOSUB mem
  35. x = 294: GOSUB trt: GOSUB scop: x = 295: GOSUB scop
  36. x = 350: GOSUB trt: GOSUB dbook: x = 351: GOSUB dbook
  37. c = 0: x = 505: GOSUB M: GOSUB E: GOSUB trt: GOSUB N: GOSUB U: x = 506: GOSUB men
  38. x = 556: GOSUB trt: x = 555: GOSUB quit: x = 556: GOSUB quit
  39. A = 230: B = 65: GOSUB IconDatabook
  40. A = 80: B = 65: GOSUB IconSchemas
  41. x = 135: y = 70: GOSUB URI: x = 136: GOSUB URI       'Icone MEMO
  42. x = 135: y = 81: GOSUB 707: x = 136: GOSUB 707
  43. y = 90: x = 143: GOSUB PUI: x = 144: GOSUB PUI
  44. A = 180: B = 65: GOSUB IconScope
  45. A = 30: B = 65: GOSUB IconGraf
  46. A = 280: B = 65: GOSUB IconMenu
  47. A = 330: B = 65: GOSUB IconQuit
  48. ResetMouse
  49. Curseur% = VitesseSouris
  50. MouseSpeed Curseur%
  51. AttChoix: Mouse 1
  52. DO: GetMouse: F$ = INKEY$: F$ = UCASE$(F$): LOOP UNTIL B% <> Bx% OR LEN(F$)
  53.    Mouse 0
  54. IF B% = 1 THEN GOSUB TestMouse
  55. IF F$ = "T" THEN GOTO LisTe
  56. IF F$ = "S" THEN GOTO Scope
  57. IF F$ = "D" THEN GOTO Databook
  58. IF F$ = "C" THEN GOTO sChemas
  59. IF F$ = "M" THEN GOTO Memo
  60. IF F$ = "N" THEN GOTO meNu
  61. IF F$ = "Q" THEN GOTO RetourDos
  62. GOTO AttChoix: END
  63. '_________________________________________________________________________
  64. LisTe: A = 180: aa = 460: B = 150: bb = 345: cf = 7: GOSUB boite
  65.    FOR I = 20 TO 160 STEP 40
  66.    LINE (A + 20, B + I)-(aa - 20, B + I + 30), 0, B
  67.    LINE (aa - 20, B + I)-(aa - 20, B + I + 30), 15
  68.    LINE -(A + 20, B + I + 30), 15: NEXT I
  69. LINE (A, B - 20)-(aa, bb), 0, B
  70. LINE (A + 1, B - 19)-(aa - 1, B - 1), 2, BF
  71. x = A + 78: y = B - 10: c = 15: GOSUB Typede: GOSUB graf: GOSUB pintr
  72. x = A + 79: GOSUB Typede: GOSUB graf: GOSUB pintr
  73. c = 0: y = B + 36: x = A + 30: GOSUB Sig: GOSUB Sinus: x = A + 88: GOSUB trt
  74. c = 0: y = B + 76: x = A + 30: GOSUB Sig: GOSUB Carre: x = x + 14
  75.    c = 15: GOSUB NE555: c = 0: x = A + 88: GOSUB trt
  76. ChoixType: Mouse 1
  77.    DO
  78.    GetMouse
  79.    F$ = INKEY$: F$ = UCASE$(F$)
  80.    LOOP UNTIL B% <> Bx% OR LEN(F$)
  81.    IF B% = 1 THEN GOSUB TestType
  82.    Mouse 0
  83.    IF F$ = "S" THEN GOTO GrafSinus
  84.    IF F$ = "C" THEN GOTO GrafCarre
  85.    LINE (170, 130)-(460, 390), CoulZoneTravail, BF: GOTO AttChoix
  86. GOTO ChoixType: END
  87. REM ................................................................
  88. GrafSinus: GOSUB interf1: GOSUB charge: CHAIN "minilab\graf1.bas"
  89. GrafCarre: GOSUB interf2: GOSUB charge: CHAIN "minilab\graf2.bas"
  90. Scope: GOSUB charge: CHAIN "minilab\scope2.bas"
  91. Databook: GOSUB charge: CHAIN "minilab\dtbook.bas"
  92. meNu: GOSUB charge: CHAIN "minilab\minilab2.bas"
  93. sChemas: GOSUB charge: CHAIN "minilab\schemas.bas"
  94. Memo: GOSUB charge: CHAIN "minilab\memo.bas"
  95. REM .....................INTERFACE pour CHAIN.......................
  96. interf1: GOSUB interf: GOSUB interf1bis
  97. c = 0: y = 44: x = 255: GOSUB Sig: GOSUB Sinus: x = 256: GOSUB Sig: GOSUB Sinus
  98. RETURN
  99. interf2: GOSUB interf: GOSUB interf2bis
  100. c = 0: y = 44: x = 276: GOSUB Sig: GOSUB Carre: x = 277: GOSUB Sig: GOSUB Carre
  101. RETURN
  102.  
  103. interf: Mouse 0
  104. LINE (0, 0)-(639, 479), 0, B: LINE (1, 1)-(638, 478), 7, B
  105. LINE (2, 2)-(637, 477), 0, B
  106. LINE (3, 3)-(636, 28), CoulBarreTitre, BF: LINE (3, 29)-(636, 29), 15
  107. c = CoulLettresTitre: x = 25: y = 14: GOSUB minilab: x = 26: GOSUB minilab
  108. x = 300: GOSUB graf: x = 301: GOSUB graf
  109. LINE (3, 61)-(636, 476), cf, BF: LINE (3, 31)-(636, 60), 15, BF
  110. LINE (3, 60)-(636, 60), 0
  111. '     barre bas + icones
  112. LINE (3, 415)-(636, 476), 15, BF: LINE (3, 415)-(636, 415), 0
  113. LINE (3, 417)-(636, 417), 0
  114. RETURN
  115. interf1bis:
  116. c = 0: y = 427
  117. x = 50: GOSUB refaire: c = 9: x = 130: GOSUB dbook: x = 218: GOSUB schm
  118. x = 300: GOSUB scop: x = 360: GOSUB mem: x = 411: GOSUB men
  119. c = 0: x = 51: GOSUB refaire: c = 9: x = 131: GOSUB dbook: x = 219: GOSUB schm
  120. x = 301: GOSUB scop: x = 361: GOSUB mem: x = 412: GOSUB men
  121. c = 4: x = 480: GOSUB quit: x = 481: GOSUB quit
  122. A = 50: B = 440: GOSUB IconRefaire
  123. A = 120: B = 440: GOSUB IconDatabook
  124. A = 170: B = 440: GOSUB IconSchemas
  125. A = 220: B = 440: GOSUB IconScope
  126.  x = 270: y = 445: GOSUB URI: x = 271: GOSUB URI
  127.  x = 278: y = 456: GOSUB 707: x = 279: GOSUB 707
  128.  y = 467: x = 275: GOSUB PUI: x = 276: GOSUB PUI
  129. A = 320: B = 440: GOSUB IconMenu
  130. A = 370: B = 440: GOSUB IconQuit
  131. RETURN
  132.  
  133. interf2bis: c = 0: y = 427
  134. A = 50: B = 440: GOSUB IconRefaire
  135. A = 320: B = 440: GOSUB IconMenu
  136. A = 370: B = 440: GOSUB IconQuit
  137. RETURN
  138. REM .....................................................................
  139. charge: Mouse 0: A = 200: aa = 440: B = 130: bb = 180: cf = 3: GOSUB box
  140. x = 260: y = 155: c = 0: GOSUB inst: x = 261: GOSUB inst: RETURN
  141.  
  142. RetourDos: A = 175: aa = 485: B = 150: bb = 200: cf = 12: GOSUB box
  143. x = 210: y = 175: c = 0: GOSUB retdos: x = 211: GOSUB retdos
  144. choix: Mouse 1
  145.    DO: GetMouse: F$ = INKEY$: F$ = UCASE$(F$): LOOP UNTIL B% <> Bx% OR LEN(F$)
  146.    Mouse 0
  147. IF F$ = "O" THEN SYSTEM
  148. IF F$ = "N" THEN LINE (170, 149)-(490, 201), CoulZoneTravail, BF: GOTO AttChoix
  149. IF B% = 1 THEN GOSUB Testquit
  150. GOTO choix
  151. Testquit:
  152. IF y% < 170 OR y% > 185 THEN RETURN choix
  153. IF x% > 343 AND x% < 381 THEN SYSTEM
  154. IF x% > 398 AND x% < 441 THEN LINE (170, 149)-(490, 201), CoulZoneTravail, BF: GOTO AttChoix
  155. RETURN choix
  156. retdos: GOSUB r: GOSUB E: GOSUB T: GOSUB O: GOSUB U: GOSUB r: x = x + 9
  157. GOSUB A: GOSUB U: x = x + 9: GOSUB D: GOSUB O: GOSUB S: x = x + 3: GOSUB pintr
  158. x = x + 14: LINE (x, 179)-(x + 9, 170), 0, B: x = x + 20
  159. GOSUB trt: GOSUB O: GOSUB U: GOSUB I: x = x + 12
  160. LINE (x, 179)-(x + 9, 170), 0, B: x = x + 20
  161. GOSUB trt: GOSUB N: GOSUB O: GOSUB N: RETURN
  162.  
  163. box: LINE (A, B)-(aa, bb), 0, B: LINE (A + 5, B + 5)-(aa - 5, bb - 5), 0, B
  164. PAINT (A + 3, B + 10), 7, 0: LINE (A + 6, B + 6)-(aa - 6, bb - 6), cf, BF
  165. LINE (A + 1, B + 1)-(A + 1, bb - 1), 15: LINE -(aa - 1, bb - 1), 15
  166. LINE (A + 35, B)-(A + 35, B + 5), 8: LINE (A + 35, bb - 5)-(A + 35, bb - 1), 8
  167. LINE (aa - 35, B)-(aa - 35, B + 5), 8: LINE (aa - 35, bb - 5)-(aa - 35, bb - 1), 8
  168. LINE (A + 1, B + 35)-(A + 5, B + 35), 8: LINE (A + 1, bb - 35)-(A + 5, bb - 35), 8
  169. LINE (aa, B + 35)-(aa - 5, B + 35), 8: LINE (aa, bb - 35)-(aa - 5, bb - 35), 8
  170. RETURN
  171.  
  172. REM =        Chiffres & lettres & messages  graphiques
  173. 5 : FOR h = x - 2 TO x + 3: PSET (h, y - 4), c: NEXT h
  174. FOR V = y - 3 TO y - 1: PSET (x - 2, V), c: NEXT V
  175. FOR h = x - 1 TO x + 2: PSET (h, y), c: NEXT h
  176. FOR V = y + 1 TO y + 3: PSET (x + 3, V), c: NEXT V
  177. FOR h = x - 1 TO x + 2: PSET (h, y + 4), c: NEXT h
  178. PSET (x - 2, y + 3), c: x = x + 9:  RETURN
  179. 7 : FOR h = x - 2 TO x + 3: PSET (h, y - 4), c: NEXT h
  180. PSET (x - 2, y - 3), c: FOR V = y - 4 TO y - 1: PSET (x + 3, V), c: NEXT V
  181. FOR V = y + 2 TO y + 4: PSET (x - 1, V), c: NEXT V
  182. F = x + 2: FOR D = y TO y + 2: PSET (F, D), c: F = F - 1: NEXT D
  183. x = x + 9:  RETURN
  184. 0 : FOR h = x - 1 TO x + 2: PSET (h, y - 4), c: NEXT h
  185. FOR h = x - 1 TO x + 2: PSET (h, y + 4), c: NEXT h
  186. FOR V = y TO y + 3: PSET (x - 2, V), c: NEXT V
  187. FOR V = y TO y + 3: PSET (x + 3, V), c: NEXT V
  188. FOR V = y - 3 TO y - 1: PSET (x - 2, V), c: NEXT V
  189. FOR V = y - 3 TO y - 1: PSET (x + 3, V), c: NEXT V: x = x + 9: RETURN
  190. egal: FOR h = x - 2 TO x + 3: PSET (h, y - 2), c: NEXT h
  191. FOR h = x - 2 TO x + 3: PSET (h, y + 1), c: NEXT h: x = x + 11: RETURN
  192. REM ========================================================================
  193. A: PSET (x, y - 4), c: PSET (x + 1, y - 4), c
  194. PSET (x - 1, y - 3), c: PSET (x + 2, y - 3), c
  195. FOR vert = y - 2 TO y + 4: PSET (x - 2, vert), c: PSET (x + 3, vert), c: NEXT vert
  196. FOR hor = x - 1 TO x + 2: PSET (hor, y + 1), c: NEXT hor: x = x + 9: RETURN
  197. B: FOR V = y - 4 TO y + 4: PSET (x - 2, V), c: NEXT V         'B
  198. FOR h = x - 1 TO x + 2: PSET (h, y - 4), c: NEXT h
  199. FOR h = x - 1 TO x + 2: PSET (h, y), c: NEXT h
  200. FOR h = x - 1 TO x + 2: PSET (h, y + 4), c: NEXT h
  201. FOR V = y - 3 TO y - 1: PSET (x + 3, V), c: NEXT V
  202. FOR V = y + 1 TO y + 3: PSET (x + 3, V), c: NEXT V: x = x + 9: RETURN
  203. c: PSET (x, y - 4), c: PSET (x + 1, y - 4), c
  204. PSET (x - 1, y - 3), c: PSET (x + 2, y - 3), c
  205. FOR vert = y - 2 TO y + 2: PSET (x - 2, vert), c: NEXT vert
  206. PSET (x + 3, y - 2), c: PSET (x + 3, y + 2), c
  207. PSET (x, y + 4), c: PSET (x + 1, y + 4), c
  208. PSET (x - 1, y + 3), c: PSET (x + 2, y + 3), c: x = x + 9: RETURN
  209. D: FOR vert = y - 4 TO y + 4: PSET (x - 2, vert), c: NEXT vert
  210. FOR hor = x - 1 TO x + 1: PSET (hor, y - 4), c: NEXT hor
  211. PSET (x + 2, y - 3), c
  212. FOR vert = y - 2 TO y + 2: PSET (x + 2, vert), c: NEXT vert
  213. FOR hor = x - 1 TO x + 1: PSET (hor, y + 4), c: NEXT hor
  214. PSET (x + 2, y + 3), c: x = x + 9: RETURN
  215. E: FOR vert = y - 4 TO y + 4: PSET (x - 2, vert), c: NEXT vert
  216. FOR hor = x - 1 TO x + 3: PSET (hor, y - 4), c: NEXT hor
  217. FOR hor = x - 1 TO x + 1: PSET (hor, y), c: NEXT hor
  218. FOR hor = x - 1 TO x + 3: PSET (hor, y + 4), c: NEXT hor: x = x + 9: RETURN
  219. F: FOR vert = y - 4 TO y + 4: PSET (x - 2, vert), c: NEXT vert
  220. FOR hor = x - 1 TO x + 3: PSET (hor, y - 4), c: NEXT hor
  221. FOR hor = x - 1 TO x + 1: PSET (hor, y), c: NEXT hor: x = x + 9: RETURN
  222. G: PSET (x, y - 4), c: PSET (x + 1, y - 4), c                'G
  223. PSET (x - 1, y - 3), c: PSET (x + 2, y - 3), c
  224. FOR vert = y - 2 TO y + 2: PSET (x - 2, vert), c: NEXT vert
  225. PSET (x + 3, y - 2), c: PSET (x + 3, y + 2), c: PSET (x + 3, y + 1), c
  226. PSET (x, y + 4), c: PSET (x + 1, y + 4), c
  227. PSET (x - 1, y + 3), c: PSET (x + 2, y + 3), c
  228. FOR h = x + 1 TO x + 3: PSET (h, y), c: NEXT h: x = x + 9: RETURN
  229. h: FOR vert = y - 4 TO y + 4: PSET (x - 2, vert), c: PSET (x + 3, vert), c: NEXT vert
  230. FOR hor = x - 1 TO x + 2: PSET (hor, y), c: NEXT hor: x = x + 9: RETURN
  231. I: x = x - 2: FOR V = y - 4 TO y + 4: PSET (x, V), c: NEXT V: x = x + 7: RETURN
  232. L: FOR V = y - 4 TO y + 4: PSET (x - 2, V), c: NEXT V
  233. FOR h = x - 1 TO x + 3: PSET (h, y + 4), c: NEXT h: x = x + 9: RETURN
  234. M: FOR V = y - 4 TO y + 4: PSET (x - 3, V), c: NEXT V
  235. FOR V = y - 4 TO y + 4: PSET (x + 3, V), c: NEXT V
  236. PSET (x - 2, y - 3), c: PSET (x - 1, y - 2), c: PSET (x - 1, y - 2), c
  237. PSET (x, y - 1), c
  238. PSET (x + 2, y - 3), c: PSET (x + 1, y - 2), c: PSET (x + 1, y - 2), c
  239. x = x + 9: RETURN
  240. N: FOR V = y - 4 TO y + 4: PSET (x - 3, V), c: NEXT V        'N
  241. FOR V = y - 4 TO y + 4: PSET (x + 3, V), c: NEXT V
  242. V = y - 3: FOR h = x - 2 TO x + 2: PSET (h, V), c: V = V + 1: NEXT h
  243. x = x + 9: RETURN
  244. K: FOR V = y - 4 TO y + 4: PSET (x - 2, V), c: NEXT V
  245. V = y: FOR h = x - 1 TO x + 3: PSET (h, V), c: V = V - 1: NEXT h
  246. V = y: FOR h = x - 1 TO x + 3: PSET (h, V), c: V = V + 1: NEXT h
  247. x = x + 9: RETURN
  248. O: PSET (x, y - 4), c: PSET (x + 1, y - 4), c
  249. PSET (x - 1, y - 3), c: PSET (x + 2, y - 3), c
  250. FOR V = y - 2 TO y + 2: PSET (x - 2, V), c: PSET (x + 3, V), c: NEXT V
  251. PSET (x, y + 4), c: PSET (x + 1, y + 4), c
  252. PSET (x - 1, y + 3), c: PSET (x + 2, y + 3), c: x = x + 9: RETURN
  253. P: FOR V = y - 4 TO y + 4: PSET (x - 2, V), c: NEXT V
  254. FOR h = x - 1 TO x + 1: PSET (h, y - 4), c: NEXT h
  255. PSET (x + 2, y - 3), c: PSET (x + 3, y - 2), c: PSET (x + 2, y - 1), c
  256. FOR h = x - 1 TO x + 1: PSET (h, y), c: NEXT h: x = x + 9: RETURN
  257. Q: PSET (x, y - 4), c: PSET (x + 1, y - 4), c
  258. PSET (x - 1, y - 3), c: PSET (x + 2, y - 3), c
  259. FOR V = y - 2 TO y + 2: PSET (x - 2, V), c: PSET (x + 3, V), c: NEXT V
  260. PSET (x, y + 4), c: PSET (x + 1, y + 4), c
  261. PSET (x - 1, y + 3), c: PSET (x + 2, y + 3), c
  262. PSET (x + 1, y + 2), c: PSET (x + 3, y + 4), c
  263. PSET (x + 4, y + 4), c: x = x + 9: RETURN
  264. r:  FOR V = y - 4 TO y + 4: PSET (x - 2, V), c: NEXT V
  265. FOR h = x - 1 TO x + 1: PSET (h, y - 4), c: NEXT h
  266. PSET (x + 2, y - 3), c: PSET (x + 3, y - 2), c: PSET (x + 2, y - 1), c
  267. FOR h = x - 1 TO x + 1: PSET (h, y), c: NEXT h
  268. FOR V = y + 1 TO y + 4: PSET (x + 2, V), c: NEXT V: x = x + 9: RETURN
  269. S: FOR h = x - 1 TO x + 2: PSET (h, y - 4), c: NEXT h        'S
  270. FOR h = x - 1 TO x + 2: PSET (h, y), c: NEXT h
  271. FOR h = x - 1 TO x + 2: PSET (h, y + 4), c: NEXT h
  272. FOR V = y - 3 TO y - 1: PSET (x - 2, V), c: NEXT V
  273. FOR V = y + 1 TO y + 3: PSET (x + 3, V), c: NEXT V
  274. PSET (x + 3, y - 3), c: PSET (x - 2, y + 3), c: x = x + 9: RETURN
  275. T:  FOR V = y - 3 TO y + 4: PSET (x, V), c: NEXT V
  276. FOR h = x - 3 TO x + 3: PSET (h, y - 4), c: NEXT h: x = x + 9: RETURN
  277. U:  FOR V = y - 4 TO y + 3: PSET (x - 2, V), c: PSET (x + 3, V), c: NEXT V
  278. FOR h = x - 1 TO x + 2: PSET (h, y + 4), c: NEXT h: x = x + 9: RETURN
  279. V: FOR V = y - 4 TO y + 1: PSET (x - 2, V), c: PSET (x + 3, V), c: NEXT V
  280. FOR V = y + 2 TO y + 3: PSET (x - 1, V), c: PSET (x + 2, V), c: NEXT V
  281. PSET (x, y + 4), c: PSET (x + 1, y + 4), c: x = x + 9: RETURN
  282. x: F = x - 3: FOR D = y - 3 TO y + 3: PSET (F, D), c: F = F + 1: NEXT D
  283. F = x + 3: FOR D = y - 3 TO y + 3: PSET (F, D), c: F = F - 1: NEXT D
  284. PSET (x + 3, y + 4), c: PSET (x + 3, y - 4), c
  285. PSET (x - 3, y + 4), c: PSET (x - 3, y - 4), c: x = x + 9: RETURN
  286. y: PSET (x - 3, y - 4), c: PSET (x + 3, y - 4), c
  287. F = x - 3: FOR D = y - 3 TO y: PSET (F, D), c: F = F + 1: NEXT D
  288. F = x + 3: FOR D = y - 3 TO y: PSET (F, D), c: F = F - 1: NEXT D
  289. FOR h = y TO y + 4: PSET (x, h), c: NEXT h: x = x + 9: RETURN
  290. REM ========================================================================
  291. dot: PSET (x, y + 4), c: x = x + 9: RETURN
  292. trt: y = y + 7: FOR hor = x - 3 TO x + 4: PSET (hor, y), c: NEXT hor
  293. FOR hor = x - 3 TO x + 4: PSET (hor, y + 1), c: NEXT hor: y = y - 7: RETURN
  294. pintr: FOR h = x - 1 TO x + 2: PSET (h, y - 4), c: NEXT h
  295. FOR V = y TO y + 2: PSET (x, V), c: NEXT V
  296. FOR V = y - 2 TO y - 1: PSET (x + 3, V), c: NEXT V
  297. PSET (x - 2, y - 3), c: PSET (x + 3, y - 3), c: PSET (x, y + 4), c
  298. FOR h = x + 1 TO x + 2: PSET (h, y), c: NEXT h: RETURN
  299. '                      minuscules
  300. cm: FOR h = x - 1 TO x + 1: PSET (h, y - 3), c: NEXT h
  301. PSET (x - 2, y - 2), c: PSET (x + 2, y - 2), c
  302. FOR V = y - 1 TO y + 1: PSET (x - 2, V), c: NEXT V
  303. PSET (x - 2, y + 2), c: PSET (x + 2, y + 2), c
  304. FOR h = x - 1 TO x + 1: PSET (h, y + 3), c: NEXT h: RETURN
  305. Im: PSET (x, y - 4), c: FOR V = y - 2 TO y + 4: PSET (x, V), c: NEXT V
  306. PSET (x - 1, y - 2), c: PSET (x - 1, y + 4), c: PSET (x + 1, y + 4), c
  307. RETURN
  308.  
  309. minilab: GOSUB M: GOSUB I: GOSUB N: GOSUB I: GOSUB L: GOSUB A: GOSUB B: RETURN
  310. dbook: GOSUB D: GOSUB A: GOSUB T: GOSUB A: GOSUB B: GOSUB O: GOSUB O: GOSUB K: RETURN
  311. scop: GOSUB S: GOSUB c: GOSUB O: GOSUB P: GOSUB E: RETURN
  312. graf: GOSUB G: GOSUB r: GOSUB A: GOSUB P: GOSUB h: GOSUB E: RETURN
  313. quit: GOSUB Q: GOSUB U: GOSUB I: GOSUB T: GOSUB T: GOSUB E: GOSUB r: RETURN
  314. refaire: GOSUB r: GOSUB E: GOSUB F: GOSUB A: GOSUB I: GOSUB r: GOSUB E: RETURN
  315. Sig: GOSUB S: GOSUB I: GOSUB G: GOSUB N: GOSUB A: GOSUB L: x = x + 8: RETURN
  316. Sinus: GOSUB S: GOSUB I: GOSUB N: GOSUB U: GOSUB S: GOSUB O: GOSUB I: GOSUB D
  317. GOSUB A: GOSUB L: RETURN
  318. Carre: GOSUB c: GOSUB A: GOSUB r: GOSUB r: GOSUB E: RETURN
  319. NE555:  GOSUB N: GOSUB E: x = x + 8: GOSUB 5: GOSUB 5: GOSUB 5: RETURN
  320. Typede: GOSUB T: GOSUB y: GOSUB P: GOSUB E: x = x + 8
  321. GOSUB D: GOSUB E: x = x + 8: RETURN
  322. SOD: c = 12: GOSUB D: x = x - 1: c = 5: GOSUB O: c = 14: GOSUB S: RETURN
  323. inst: GOSUB U: GOSUB N: x = x + 9: GOSUB I: GOSUB N: GOSUB S: GOSUB T
  324. GOSUB A: GOSUB N: GOSUB T: x = x + 9: GOSUB S: GOSUB V: GOSUB P: RETURN
  325. mem: GOSUB M: GOSUB E: GOSUB M: GOSUB O: RETURN
  326. schm: GOSUB S: GOSUB c: GOSUB h: GOSUB E: GOSUB M: GOSUB A: GOSUB S: RETURN
  327. men: GOSUB M: GOSUB E: GOSUB N: GOSUB U: RETURN
  328. URI: c = 12: GOSUB U: c = 3: GOSUB egal: c = 2: GOSUB r: c = 9: GOSUB I: RETURN
  329. 707 : c = 4: GOSUB dot: GOSUB 7: GOSUB 0: GOSUB 7: RETURN
  330. PUI: c = 13: GOSUB P: GOSUB egal: c = 12: GOSUB U: GOSUB I: RETURN
  331. '........................... ICONES ............................
  332. IconDatabook: LINE (A + 10, B)-(A + 23, B + 20), 0, B
  333. LINE (A + 10, B + 7)-(A + 23, B + 20), 0, BF: CIRCLE (A + 16, B + 3), 2, 0
  334. LINE (A + 10, B + 10)-(A + 23, B + 10), 7
  335. LINE (A + 11, B + 21)-(A + 12, B + 30), 7, B
  336. LINE (A + 21, B + 21)-(A + 22, B + 30), 7, B
  337. LINE (A + 16, B + 21)-(A + 17, B + 30), 7, B: RETURN
  338.                                
  339. IconSchemas: LINE (A, B)-(A + 40, B + 30), 0, BF
  340. LINE (A + 7, B + 5)-(A + 7, B + 25), 13: LINE -(A + 22, B + 15), 13
  341. LINE -(A + 7, B + 5), 13
  342. LINE (A + 23, B + 15)-(A + 29, B + 15), 14
  343. LINE (A + 30, B + 13)-(A + 30, B + 17), 14
  344. LINE (A + 32, B + 13)-(A + 32, B + 17), 14
  345. LINE (A + 33, B + 15)-(A + 40, B + 15), 14
  346. LINE (A + 35, B)-(A + 35, B + 7), 10: LINE -(A + 37, B + 7), 10
  347. LINE -(A + 37, B), 10: LINE (A + 36, B + 8)-(A + 36, B + 14), 10
  348. LINE (A, B + 9)-(A + 6, B + 9), 12: LINE (A, B + 20)-(A + 6, B + 20), 12
  349. LINE (A + 16, B)-(A + 16, B + 10), 12: LINE (A + 16, B + 20)-(A + 16, B + 30), 12
  350. c = 13: x = A + 24: y = B + 22: GOSUB Im: y = y + 1: x = x + 5: GOSUB cm: RETURN
  351. IconScope: LINE (A, B)-(A + 40, B + 26), 7, BF
  352. LINE (A + 3, B + 3)-(A + 19, B + 19), 8, B
  353. LINE (A + 4, B + 4)-(A + 18, B + 18), 3, BF
  354. CIRCLE (A + 8, B + 22), 1, 12: CIRCLE (A + 15, B + 22), 1, 0
  355. CIRCLE (A + 25, B + 19), 2, 8: CIRCLE (A + 35, B + 19), 2, 8
  356. CIRCLE (A + 35, B + 9), 2, 8: CIRCLE (A + 25, B + 9), 2, 9: RETURN
  357. IconGraf: LINE (A + 3, B + 1)-(A + 3, B + 30), 0
  358. LINE (A, B + 27)-(A + 40, B + 27), 0
  359. FOR I = B + 24 TO B STEP -6: LINE (A + 2, I)-(A + 3, I), 0: NEXT I
  360. FOR I = A + 6 TO A + 40 STEP 6: LINE (I, B + 27)-(I, B + 28), 0: NEXT I
  361. LINE (A + 7, B + 23)-(A + 18, B + 5), 12: LINE -(A + 25, B + 19), 12
  362. LINE -(A + 36, B + 3), 12: RETURN
  363. IconMenu: LINE (A, B)-(A + 40, B + 30), 0, B
  364. LINE (A + 2, B + 2)-(A + 38, B + 11), 9, BF
  365. x = A + 6: y = B + 6: c = 15: GOSUB men: x = A + 7: GOSUB men
  366. LINE (A + 2, B + 13)-(A + 38, B + 24), 7, BF: RETURN
  367. IconQuit: LINE (A + 1, B + 8)-(A + 23, B + 22), 7, BF
  368. LINE (A + 24, B + 4)-(A + 24, B + 26), 7
  369. LINE -(A + 35, B + 15), 7: LINE -(A + 24, B + 4), 7
  370. PAINT (A + 26, B + 15), 7, 7
  371. LINE (A, B + 8)-(A, B + 23), 0: LINE -(A + 23, B + 23), 0
  372. LINE -(A + 23, B + 27), 0: LINE (A + 23, B + 4)-(A + 23, B + 7), 0
  373. x = A + 5: y = B + 16: GOSUB SOD: x = A + 6: GOSUB SOD: RETURN
  374. IconRefaire:
  375. LINE (A, B)-(A + 40, B + 30), 9, B          'Icon REFAIRE
  376. LINE (A + 3, B + 3)-(A + 37, B + 27), 7, BF
  377. PSET (A + 2, B + 2), 12: DRAW "c12 R15 G5 F15 G5 H15 G5 U15"
  378. PSET (A + 3, B + 1), 4: DRAW "c4 R16 G5 F15 G5"
  379. PAINT (A + 5, B + 4), 12, 12: RETURN
  380. REM ..................
  381. TestMouse:
  382. IF y% > 63 AND y% < 97 THEN GOSUB TestIcon
  383. RETURN
  384. TestIcon:
  385. IF x% > 35 AND x% < 64 THEN GOTO LisTe
  386. IF x% > 79 AND x% < 120 THEN GOTO sChemas
  387. IF x% > 133 AND x% < 172 THEN GOTO Memo
  388. IF x% > 179 AND x% < 221 THEN GOTO Scope
  389. IF x% > 230 AND x% < 271 THEN GOTO Databook
  390. IF x% > 279 AND x% < 321 THEN GOTO meNu
  391. IF x% > 329 AND x% < 366 THEN GOTO RetourDos
  392. RETURN
  393. TestType:
  394. IF x% < 201 OR x% > 438 THEN RETURN
  395. IF y% > 171 AND y% < 199 THEN GOTO GrafSinus
  396. IF y% > 211 AND y% < 239 THEN GOTO GrafCarre
  397. 'IF Y% > 251 AND Y% < 279 THEN GOTO
  398. RETURN
  399. REM +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  400. TraiteErreur: BEEP: Mouse 0
  401. A = 100: aa = 540: B = 150: bb = 320: LINE (A, B)-(aa, bb), 0, BF
  402. LINE (A, B)-(aa, bb), 12, B: LINE (A, B + 30)-(aa, B + 30), 12, B
  403. COLOR 12: LOCATE 11, 38: PRINT "ERREUR"
  404. CodErr$ = STR$(ERR): NoCode$ = "Code d'erreur :"
  405. IF ERR < 25 OR ERR = 26 THEN me$ = "Erreur interne au programme"
  406. IF ERR > 28 OR ERR < 53 THEN me$ = "Erreur interne au programme"
  407. IF ERR = 25 THEN me$ = "Périphérique absent ou éteint"
  408. IF ERR = 27 THEN me$ = "Imprimante : Attente papier..."
  409. IF ERR = 53 THEN me$ = "Fichier absent !"
  410. IF ERR = 57 THEN me$ = "Erreur de périphérique E / S"
  411. IF ERR = 61 THEN me$ = "Disque saturé"
  412. IF ERR = 68 THEN me$ = "Périphérique non disponible"
  413. IF ERR = 75 OR ERR = 76 THEN me$ = "Erreur de chemin d'accès au fichier"
  414. COLOR 12: LOCATE 14, (80 - LEN(me$)) / 2: PRINT me$
  415. COLOR 14: LOCATE 16, (78 - LEN(NoCode$)) / 2: PRINT NoCode$; CodErr$
  416. Message$ = "Appuyez sur une touche pour continuer..."
  417. COLOR 12: LOCATE 18, (80 - LEN(Message$)) / 2: PRINT Message$
  418. SLEEP 2: DO: F$ = INKEY$: LOOP UNTIL LEN(F$)
  419. RESUME debut
  420. MS.Data:
  421.  DATA 55,8b,ec,56,57,8b,76,0c,8b,04,8b,76,0a,8b,1c
  422.  DATA 8b,76,08,8b,0c,8b,76,06,8b,14,cd,21
  423.  DATA 8b,76,0c,89,04,8b,76,0a,89,1c,8b,76,08,89,0c
  424.  DATA 8b,76,06,89,14,5f,5e,5d,ca,08,00,#
  425. boite: LINE (A, B)-(aa, bb), 0, B
  426. LINE (A + 11, B + 11)-(aa - 11, bb - 11), cf, BF: PAINT (A + 7, B + 7), 7, 0
  427. LINE (A + 9, bb - 9)-(A + 9, B + 9), 8: LINE -(aa - 9, B + 9), 8
  428. LINE (aa - 9, B + 9)-(aa - 9, bb - 9), 15: LINE -(A + 9, bb - 9), 15: RETURN
  429.  
  430. DEFSNG A-Z
  431. SUB GetMouse
  432. r% = Interr%(&H33, 3, Bx%, CX%, DX%)
  433. B% = Bx%: x% = CX%: y% = DX%
  434. END SUB
  435.  
  436. FUNCTION Interr% (Num%, AX%, Bx%, CX%, DX%)
  437.  IF MS%(0) = 0 THEN SYSTEM
  438.  DEF SEG = VARSEG(MS%(0))
  439.  POKE VARPTR(MS%(0)) + 26, Num%
  440.  CALL ABSOLUTE(AX%, Bx%, CX%, DX%, VARPTR(MS%(0)))
  441.  Interr% = AX%
  442. END FUNCTION
  443.  
  444. SUB Mouse (OnOff%)
  445. IF OnOff% = 0 THEN OnOff% = 2 ELSE OnOff% = 1
  446. r% = Interr%(&H33, OnOff%, Bx%, CX%, DX%)
  447. END SUB
  448.  
  449. SUB MouseSpeed (Curseur%)
  450. r% = Interr%(&H33, 15, Bx%, Curseur%, Curseur%)
  451. END SUB
  452.  
  453. SUB ReadData
  454.  RESTORE MS.Data
  455.  DEF SEG = VARSEG(MS%(0))
  456.  FOR I% = 0 TO 99
  457.   READ Byte$
  458.   IF Byte$ = "#" THEN EXIT FOR
  459.   POKE VARPTR(MS%(0)) + I%, VAL("&H" + Byte$)
  460.  NEXT I%
  461. END SUB
  462.  
  463. SUB ResetMouse
  464. r% = Interr%(&H33, 0, Bx%, CX%, DX%)
  465. END SUB
  466.  
  467.