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

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