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

  1. DEFINT A-Z
  2. DECLARE SUB IconAide (A, B)
  3. DECLARE SUB IconBook (A, B)
  4. DECLARE SUB IconPrinter (A, B)
  5. DECLARE SUB Editeur (Texte$, lo%, x%, y%, CoulTxt%)
  6. DECLARE SUB TextBoxEcrireLire ()
  7. DECLARE SUB Clic (ClickDelay%)
  8. DECLARE SUB Mouse (OnOff%)
  9. DECLARE SUB ResetMouse ()
  10. DECLARE SUB MouseSpeed (Curseur%)
  11. DECLARE SUB GetMouse ()
  12. DECLARE SUB SetMouse (x%, y%)
  13. DECLARE SUB TestPrinterStatus ()
  14. DECLARE SUB ReadData ()
  15. DECLARE FUNCTION Interr% (Num%, AX%, Bx%, cx%, DX%)
  16. CLEAR
  17. ' $DYMAMIC:
  18. dummy = FRE("")
  19. DIM SHARED MS%(45)
  20. DIM Page$(23)   'AS STRING * 68 !!!
  21. DIM ListePages(212) AS STRING * 12
  22. DIM TextToPrint(23) AS STRING * 68
  23. DIM SHARED A, B, x%, y%, Key$, CoulTxt%, P%
  24. ReadData
  25. FlchUp1$ = CHR$(0) + CHR$(72): FlchUp2$ = CHR$(0) + CHR$(73) 'Up2=PgUp
  26. FlchDw1$ = CHR$(0) + CHR$(80): FlchDw2$ = CHR$(0) + CHR$(81) 'Dw2=PgDw
  27. CoulTxt% = 15
  28. E$ = SPACE$(68)
  29. SCREEN 12
  30. ON ERROR GOTO TraiteErreur
  31.  
  32. OPEN "Minilab\SETUP.INI" FOR INPUT AS #1
  33. SEEK #1, 1
  34. INPUT #1, CoulBarreTitre, CoulLettresTitre, CoulZoneTravail
  35. INPUT #1, VitesseSouris, ClickDelay
  36. CLOSE #1
  37.  
  38. Debuter: COLOR 15
  39. LINE (3, 3)-(636, 28), CoulBarreTitre, BF
  40. LINE (3, 61)-(636, 476), CoulZoneTravail, BF
  41. LINE (3, 29)-(636, 29), 15
  42. C = CoulLettresTitre: x = 25: y = 14: GOSUB Minilab: x = 26: GOSUB Minilab
  43. x = 282: GOSUB LogBook: x = 283: GOSUB LogBook
  44. LINE (3, 31)-(636, 60), 7, BF: LINE (3, 59)-(636, 59), 15
  45. LINE (3, 61)-(55, 478), 15, BF: LINE (54, 61)-(54, 478), 7
  46. LINE (0, 0)-(639, 479), 0, B: LINE (1, 1)-(638, 478), 7, B
  47. LINE (2, 2)-(637, 477), 0, B
  48. C = 4:  y = 44
  49. x = 25: GOSUB Ecrire: GOSUB Lire: x = 26: GOSUB Ecrire: GOSUB Lire: x = 25: GOSUB trt
  50. x = 140: GOSUB Imprimer: x = 141: GOSUB Imprimer: x = 154: GOSUB trt
  51. x = 230: GOSUB Aide: x = 231: GOSUB Aide: x = 230: GOSUB trt
  52. C = 9: x = 465: GOSUB M: GOSUB E: GOSUB trt: GOSUB N: GOSUB U: x = 466: GOSUB unem
  53. C = 0: x = 566: GOSUB trt: x = 565: GOSUB quit: x = 566: GOSUB quit
  54.  
  55. IconBook 8, 80
  56. IconPrinter 8, 120
  57. IconAide 8, 160
  58. A = 8: B = 365: LINE (A, B)-(A + 40, B + 30), 0, B     'Icone menu
  59. LINE (A + 2, B + 2)-(A + 38, B + 11), 9, BF
  60. x = 14: y = 371: C = 15: GOSUB unem: x = 15: GOSUB unem
  61. LINE (A + 2, B + 13)-(A + 38, B + 24), 7, BF
  62. A = 8: B = 405: LINE (A + 1, B + 8)-(A + 23, B + 22), 7, BF    'DOS
  63. LINE (A + 24, B + 4)-(A + 24, B + 26), 7
  64. LINE -(A + 35, B + 15), 7: LINE -(A + 24, B + 4), 7: PAINT (A + 26, B + 15), 7, 7
  65. LINE (A, B + 8)-(A, B + 23), 0: LINE -(A + 23, B + 23), 0
  66. LINE -(A + 23, B + 27), 0: LINE (A + 23, B + 4)-(A + 23, B + 7), 0
  67. C = 12: x = A + 5: y = B + 16: GOSUB sod: C = 12: x = A + 6: GOSUB sod
  68. AttenteDebut:
  69. ResetMouse
  70. Curseur% = VitesseSouris
  71. MouseSpeed Curseur%
  72.  
  73. AttChoix: Mouse 1: DO: GetMouse: f$ = INKEY$: f$ = UCASE$(f$)
  74.    LOOP UNTIL B% <> Bx% OR LEN(f$)
  75.       Mouse 0
  76.    IF B% = 1 THEN GOSUB TestMouse
  77. IF f$ = "E" THEN GOTO LireEcrire
  78. IF f$ = "P" THEN GOTO Printer
  79. IF f$ = "A" THEN GOTO Help
  80. IF f$ = "N" THEN GOTO Menu
  81. IF f$ = "Q" THEN GOTO RetourDos
  82. GOTO AttChoix: END
  83. REM ..............................................................
  84. LireEcrire: A = 210: AA = 445: B = 130: bb = 305: cf = 0: GOSUB Box
  85. TextBoxEcrireLire
  86.  
  87. AttChoix2: Mouse 1: DO: GetMouse: f$ = INKEY$: f$ = UCASE$(f$)
  88.    LOOP UNTIL B% <> Bx% OR LEN(f$)
  89.       Mouse 0
  90.    IF B% = 1 THEN GOSUB TestEcrire
  91. IF f$ = "M" THEN GOTO PageModele
  92. IF f$ = "N" THEN GOTO NouvellePage
  93. IF f$ = "C" THEN GOTO Consulter
  94. IF f$ = "Q" THEN
  95.  LINE (210, 130)-(445, 365), CoulZoneTravail, BF
  96.  GOTO AttChoix
  97.  END IF
  98. GOTO AttChoix2: END
  99. '..................................
  100. NouvellePage: A = 60: AA = 634: B = 65: bb = 474: cf = 0: GOSUB Box
  101. NoLigne% = 1
  102. FOR i = 1 TO 23: Page$(i) = "": NEXT i    'page blanche!
  103. GOSUB SaisieTexte
  104. GOSUB Sauvegarde
  105. LINE (60, 65)-(634, 474), CoulZoneTravail, BF: GOTO AttenteDebut
  106. '.................................................................
  107. PageModele: A = 60: AA = 634: B = 65: bb = 474: cf = 0: GOSUB Box
  108. Mois$ = LEFT$(DATE$, 2)
  109. Jour$ = MID$(DATE$, 4, 2) + " ": GOSUB TestJour
  110. Annee$ = RIGHT$(DATE$, 2)
  111. Heure$ = LEFT$(TIME$, 5)
  112. GOSUB MoisEnLettres
  113. InsereDate$ = "Date: " + Jour$ + Mois$ + " " + Annee$
  114. LongDate = LEN(InsereDate$)
  115. esp$ = SPACE$(56 - LongDate)
  116. GOSUB MoisEnLettres
  117. Page$(1) = InsereDate$ + esp$ + "Heure: " + Heure$
  118. COLOR 15: LOCATE 6, 10: PRINT Page$(1)
  119. NoLigne% = 2
  120. FOR i = 2 TO 23: Page$(i) = "": NEXT i
  121. GOSUB SaisieTexte
  122. GOSUB Sauvegarde
  123. LINE (60, 65)-(634, 474), CoulZoneTravail, BF: GOTO AttenteDebut
  124. '............................
  125. Consulter: coul = 14: GOSUB ChoiceBox
  126. x = 289: y = B + 14: C = 0: GOSUB Consult: x = 290: GOSUB Consult
  127. GOSUB SelectPageInList
  128. AttenteConsulter:
  129.   DO: K$ = INKEY$: K$ = UCASE$(K$): LOOP UNTIL LEN(K$)
  130.   IF K$ = FlchDw1$ THEN GOSUB SelectBoxDw
  131.   IF K$ = FlchUp1$ THEN GOSUB SelectBoxUp
  132.   IF K$ = FlchDw2$ THEN GOSUB SuiteListe
  133.   IF K$ = FlchUp2$ THEN
  134.   numero = numero - 48
  135.   IF numero < 1 THEN SOUND 800, .3: numero = 1
  136.   FinListe = 0: GOSUB SuiteListe
  137.   END IF
  138.   IF K$ = CHR$(13) THEN GOSUB TestListePage
  139.   IF K$ = "Q" OR K$ = CHR$(27) THEN
  140.   LINE (60, 65)-(634, 474), CoulZoneTravail, BF
  141.   GOTO AttenteDebut
  142.   END IF
  143.   GOTO AttenteConsulter
  144. '............................
  145. Printer: coul = 13: GOSUB ChoiceBox
  146. x = 297: y = B + 14: C = 0: GOSUB Imprimer: x = 298: GOSUB Imprimer
  147. GOSUB SelectPageInList
  148. AttentePrinter:
  149.   DO: K$ = INKEY$: K$ = UCASE$(K$): LOOP UNTIL LEN(K$)
  150.   IF K$ = FlchDw1$ THEN GOSUB SelectBoxDw
  151.   IF K$ = FlchUp1$ THEN GOSUB SelectBoxUp
  152.   IF K$ = FlchDw2$ THEN GOSUB SuiteListe
  153.   IF K$ = FlchUp2$ THEN
  154.   numero = numero - 48
  155.   IF numero < 1 THEN SOUND 800, .3: numero = 1
  156.   FinListe = 0: GOSUB SuiteListe
  157.   END IF
  158.   IF K$ = CHR$(13) THEN GOSUB PrintSelectedPage
  159.   IF K$ = "Q" OR K$ = CHR$(27) THEN
  160.   LINE (60, 65)-(634, 474), CoulZoneTravail, BF
  161.   GOTO AttenteDebut
  162.   END IF
  163.   GOTO AttentePrinter
  164. '.........................................
  165. Help: A = 60: AA = 634: B = 65: bb = 474: cf = 0: GOSUB Box   'Aide p.1
  166. OPEN "minilab\logbook\AIDE_1.HLP" FOR INPUT AS #1
  167. SEEK #1, 1
  168. FOR Ligne = 1 TO 23
  169. INPUT #1, Page$(Ligne)
  170. COLOR 3: LOCATE 5 + Ligne, 10: PRINT Page$(Ligne)
  171. NEXT Ligne
  172. CLOSE #1
  173. DO: K$ = INKEY$: K$ = UCASE$(K$): LOOP UNTIL K$ = "Q" OR K$ = "S"
  174.   IF K$ = "Q" THEN
  175.   LINE (60, 65)-(634, 474), CoulZoneTravail, BF
  176.   GOTO AttenteDebut
  177.   END IF
  178. A = 60: AA = 634: B = 65: bb = 474: cf = 0: GOSUB Box         'Aide p.2
  179. OPEN "minilab\logbook\AIDE_2.HLP" FOR INPUT AS #1
  180. SEEK #1, 1
  181. FOR Ligne = 1 TO 23
  182. INPUT #1, Page$(Ligne)
  183. COLOR 3: LOCATE 5 + Ligne, 10: PRINT Page$(Ligne)
  184. NEXT Ligne
  185. CLOSE #1
  186. DO: K$ = INKEY$: K$ = UCASE$(K$): LOOP UNTIL K$ = "Q" OR K$ = "R"
  187.   IF K$ = "Q" THEN
  188.   LINE (60, 65)-(634, 474), CoulZoneTravail, BF
  189.   GOTO AttenteDebut
  190.   END IF
  191.   IF K$ = "R" THEN GOTO Help
  192. '.........................................
  193. TestJour: IF LEFT$(Jour$, 1) = "0" THEN
  194. Day$ = MID$(Jour$, 2, 1)
  195. Jour$ = Day$ + " "
  196. END IF: RETURN
  197. MoisEnLettres:
  198. IF Mois$ = "01" THEN Mois$ = "janvier"
  199. IF Mois$ = "02" THEN Mois$ = "février"
  200. IF Mois$ = "03" THEN Mois$ = "mars"
  201. IF Mois$ = "04" THEN Mois$ = "avril"
  202. IF Mois$ = "05" THEN Mois$ = "mai"
  203. IF Mois$ = "06" THEN Mois$ = "juin"
  204. IF Mois$ = "07" THEN Mois$ = "juillet"
  205. IF Mois$ = "08" THEN Mois$ = "août"
  206. IF Mois$ = "09" THEN Mois$ = "septembre"
  207. IF Mois$ = "10" THEN Mois$ = "octobre"
  208. IF Mois$ = "11" THEN Mois$ = "novembre"
  209. IF Mois$ = "12" THEN Mois$ = "décembre"
  210. RETURN
  211. Menu: GOSUB Charge: dummy = FRE(""): CHAIN "minilab\minilab2.bas"
  212. Charge: Mouse 0: A = 200: AA = 440: B = 130: bb = 180: cf = 3: GOSUB Box
  213. x = 263: y = 155: C = 0: GOSUB inst: x = 264: GOSUB inst: RETURN
  214. RetourDos: LINE (175, 150)-(485, 200), CoulZoneTravail, BF
  215. A = 175: AA = 485: B = 150: bb = 200: cf = 12: GOSUB Box
  216. x = 210: y = 175: C = 0: GOSUB RetDos: x = 211: GOSUB RetDos
  217. choix: Mouse 1: DO: GetMouse
  218.    f$ = INKEY$: f$ = UCASE$(f$)
  219.    LOOP UNTIL B% <> Bx% OR LEN(f$)
  220.    IF B% = 1 THEN GOSUB Testquit
  221.    Mouse 0
  222. IF f$ = "O" THEN SYSTEM
  223. IF f$ = "N" THEN LINE (175, 150)-(485, 200), CoulZoneTravail, BF: Mouse 1: GOTO AttChoix
  224. GOTO choix
  225. Testquit: Mouse 0
  226. IF y% < 166 OR y% > 184 THEN RETURN choix
  227. IF x% > 343 AND x% < 370 THEN COLOR 15: SYSTEM
  228. IF x% > 398 AND x% < 430 THEN f$ = "N": RETURN
  229. RETURN choix
  230. RetDos: GOSUB r: GOSUB E: GOSUB T: GOSUB O: GOSUB U: GOSUB r: x = x + 9
  231. GOSUB A: GOSUB U: x = x + 9: GOSUB D: GOSUB O: GOSUB S: x = x + 3: GOSUB pintr
  232. x = x + 14: LINE (x, 179)-(x + 9, 170), 0, B: x = x + 20
  233. GOSUB trt: GOSUB O: GOSUB U: GOSUB i: x = x + 12
  234. LINE (x, 179)-(x + 9, 170), 0, B: x = x + 20
  235. GOSUB trt: GOSUB N: GOSUB O: GOSUB N: RETURN
  236. Box: LINE (A, B)-(AA, bb), 0, B: LINE (A + 5, B + 5)-(AA - 5, bb - 5), 0, B
  237. PAINT (A + 3, B + 10), 7, 0: LINE (A + 6, B + 6)-(AA - 6, bb - 6), cf, BF
  238. LINE (A + 1, B + 1)-(A + 1, bb - 1), 15: LINE -(AA - 1, bb - 1), 15
  239. LINE (A + 35, B)-(A + 35, B + 5), 8: LINE (A + 35, bb - 5)-(A + 35, bb - 1), 8
  240. LINE (AA - 35, B)-(AA - 35, B + 5), 8: LINE (AA - 35, bb - 5)-(AA - 35, bb - 1), 8
  241. LINE (A + 1, B + 35)-(A + 5, B + 35), 8: LINE (A + 1, bb - 35)-(A + 5, bb - 35), 8
  242. LINE (AA, B + 35)-(AA - 5, B + 35), 8: LINE (AA, bb - 35)-(AA - 5, bb - 35), 8
  243. RETURN
  244. BarBas: LINE (A + 6, bb - 23)-(AA - 6, bb - 6), 0, B
  245. LINE (A + 7, bb - 22)-(AA - 7, bb - 7), 7, BF
  246. LINE (AA - 7, bb - 22)-(AA - 24, bb - 22), 15: LINE -(AA - 24, bb - 7), 15
  247. LINE -(AA - 7, bb - 7), 8: LINE -(AA - 7, bb - 22), 8
  248. LINE (AA - 12, bb - 18)-(AA - 20, bb - 18), 0: LINE -(AA - 16, bb - 11), 0
  249. LINE -(AA - 12, bb - 18), 0: PAINT (AA - 16, bb - 15), 0, 0
  250. LINE (A + 7, bb - 22)-(A + 24, bb - 22), 15: LINE -(A + 24, bb - 7), 8
  251. LINE -(A + 7, bb - 7), 8: LINE -(A + 7, bb - 22), 15
  252. LINE (A + 12, bb - 11)-(A + 20, bb - 11), 0: LINE -(A + 16, bb - 18), 0
  253. LINE -(A + 12, bb - 11), 0: PAINT (A + 16, bb - 15), 0, 0: RETURN
  254.  
  255. A: PSET (x, y - 4), C: PSET (x + 1, y - 4), C
  256. PSET (x - 1, y - 3), C: PSET (x + 2, y - 3), C
  257. FOR vert = y - 2 TO y + 4: PSET (x - 2, vert), C: PSET (x + 3, vert), C: NEXT vert
  258. FOR hor = x - 1 TO x + 2: PSET (hor, y + 1), C: NEXT hor: x = x + 9: RETURN
  259. B: FOR V = y - 4 TO y + 4: PSET (x - 2, V), C: NEXT V         'B
  260. FOR H = x - 1 TO x + 2: PSET (H, y - 4), C: NEXT H
  261. FOR H = x - 1 TO x + 2: PSET (H, y), C: NEXT H
  262. FOR H = x - 1 TO x + 2: PSET (H, y + 4), C: NEXT H
  263. FOR V = y - 3 TO y - 1: PSET (x + 3, V), C: NEXT V
  264. FOR V = y + 1 TO y + 3: PSET (x + 3, V), C: NEXT V: x = x + 9: RETURN
  265. C: PSET (x, y - 4), C: PSET (x + 1, y - 4), C
  266. PSET (x - 1, y - 3), C: PSET (x + 2, y - 3), C
  267. FOR vert = y - 2 TO y + 2: PSET (x - 2, vert), C: NEXT vert
  268. PSET (x + 3, y - 2), C: PSET (x + 3, y + 2), C
  269. PSET (x, y + 4), C: PSET (x + 1, y + 4), C
  270. PSET (x - 1, y + 3), C: PSET (x + 2, y + 3), C: x = x + 9: RETURN
  271. D: FOR vert = y - 4 TO y + 4: PSET (x - 2, vert), C: NEXT vert
  272. FOR hor = x - 1 TO x + 1: PSET (hor, y - 4), C: NEXT hor
  273. PSET (x + 2, y - 3), C
  274. FOR vert = y - 2 TO y + 2: PSET (x + 2, vert), C: NEXT vert
  275. FOR hor = x - 1 TO x + 1: PSET (hor, y + 4), C: NEXT hor
  276. PSET (x + 2, y + 3), C: x = x + 9: RETURN
  277. E: FOR vert = y - 4 TO y + 4: PSET (x - 2, vert), C: NEXT vert
  278. FOR hor = x - 1 TO x + 3: PSET (hor, y - 4), C: NEXT hor
  279. FOR hor = x - 1 TO x + 1: PSET (hor, y), C: NEXT hor
  280. FOR hor = x - 1 TO x + 3: PSET (hor, y + 4), C: NEXT hor: x = x + 9: RETURN
  281. f: FOR vert = y - 4 TO y + 4: PSET (x - 2, vert), C: NEXT vert
  282. FOR hor = x - 1 TO x + 3: PSET (hor, y - 4), C: NEXT hor
  283. FOR hor = x - 1 TO x + 1: PSET (hor, y), C: NEXT hor: x = x + 9: RETURN
  284. G: PSET (x, y - 4), C: PSET (x + 1, y - 4), C                'G
  285. PSET (x - 1, y - 3), C: PSET (x + 2, y - 3), C
  286. FOR vert = y - 2 TO y + 2: PSET (x - 2, vert), C: NEXT vert
  287. PSET (x + 3, y - 2), C: PSET (x + 3, y + 2), C: PSET (x + 3, y + 1), C
  288. PSET (x, y + 4), C: PSET (x + 1, y + 4), C
  289. PSET (x - 1, y + 3), C: PSET (x + 2, y + 3), C
  290. FOR H = x + 1 TO x + 3: PSET (H, y), C: NEXT H: x = x + 9: RETURN
  291. i: x = x - 2: FOR V = y - 4 TO y + 4: PSET (x, V), C: NEXT V: x = x + 7: RETURN
  292. K: FOR V = y - 4 TO y + 4: PSET (x - 2, V), C: NEXT V
  293. V = y: FOR H = x - 1 TO x + 3: PSET (H, V), C: V = V - 1: NEXT H
  294. V = y: FOR H = x - 1 TO x + 3: PSET (H, V), C: V = V + 1: NEXT H
  295. x = x + 9: RETURN
  296. L: FOR V = y - 4 TO y + 4: PSET (x - 2, V), C: NEXT V
  297. FOR H = x - 1 TO x + 3: PSET (H, y + 4), C: NEXT H: x = x + 9: RETURN
  298. M: FOR V = y - 4 TO y + 4: PSET (x - 3, V), C: NEXT V
  299. FOR V = y - 4 TO y + 4: PSET (x + 3, V), C: NEXT V
  300. PSET (x - 2, y - 3), C: PSET (x - 1, y - 2), C: PSET (x - 1, y - 2), C
  301. PSET (x, y - 1), C
  302. PSET (x + 2, y - 3), C: PSET (x + 1, y - 2), C: PSET (x + 1, y - 2), C
  303. x = x + 9: RETURN
  304. N: FOR V = y - 4 TO y + 4: PSET (x - 3, V), C: NEXT V        'N
  305. FOR V = y - 4 TO y + 4: PSET (x + 3, V), C: NEXT V
  306. V = y - 3: FOR H = x - 2 TO x + 2: PSET (H, V), C: V = V + 1: NEXT H
  307. x = x + 9: RETURN
  308. O: PSET (x, y - 4), C: PSET (x + 1, y - 4), C
  309. PSET (x - 1, y - 3), C: PSET (x + 2, y - 3), C
  310. FOR V = y - 2 TO y + 2: PSET (x - 2, V), C: PSET (x + 3, V), C: NEXT V
  311. PSET (x, y + 4), C: PSET (x + 1, y + 4), C
  312. PSET (x - 1, y + 3), C: PSET (x + 2, y + 3), C: x = x + 9: RETURN
  313. P: FOR V = y - 4 TO y + 4: PSET (x - 2, V), C: NEXT V
  314. FOR H = x - 1 TO x + 1: PSET (H, y - 4), C: NEXT H
  315. PSET (x + 2, y - 3), C: PSET (x + 3, y - 2), C: PSET (x + 2, y - 1), C
  316. FOR H = x - 1 TO x + 1: PSET (H, y), C: NEXT H: x = x + 9: RETURN
  317. q: PSET (x, y - 4), C: PSET (x + 1, y - 4), C
  318. PSET (x - 1, y - 3), C: PSET (x + 2, y - 3), C
  319. FOR V = y - 2 TO y + 2: PSET (x - 2, V), C: PSET (x + 3, V), C: NEXT V
  320. PSET (x, y + 4), C: PSET (x + 1, y + 4), C
  321. PSET (x - 1, y + 3), C: PSET (x + 2, y + 3), C
  322. PSET (x + 1, y + 2), C: PSET (x + 3, y + 4), C
  323. PSET (x + 4, y + 4), C: x = x + 9: RETURN
  324. r:  FOR V = y - 4 TO y + 4: PSET (x - 2, V), C: NEXT V
  325. FOR H = x - 1 TO x + 1: PSET (H, y - 4), C: NEXT H
  326. PSET (x + 2, y - 3), C: PSET (x + 3, y - 2), C: PSET (x + 2, y - 1), C
  327. FOR H = x - 1 TO x + 1: PSET (H, y), C: NEXT H
  328. FOR V = y + 1 TO y + 4: PSET (x + 2, V), C: NEXT V: x = x + 9: RETURN
  329. S: FOR H = x - 1 TO x + 2: PSET (H, y - 4), C: NEXT H        'S
  330. FOR H = x - 1 TO x + 2: PSET (H, y), C: NEXT H
  331. FOR H = x - 1 TO x + 2: PSET (H, y + 4), C: NEXT H
  332. FOR V = y - 3 TO y - 1: PSET (x - 2, V), C: NEXT V
  333. FOR V = y + 1 TO y + 3: PSET (x + 3, V), C: NEXT V
  334. PSET (x + 3, y - 3), C: PSET (x - 2, y + 3), C: x = x + 9: RETURN
  335. T:  FOR V = y - 3 TO y + 4: PSET (x, V), C: NEXT V
  336. FOR H = x - 3 TO x + 3: PSET (H, y - 4), C: NEXT H: x = x + 9: RETURN
  337. U:  FOR V = y - 4 TO y + 3: PSET (x - 2, V), C: PSET (x + 3, V), C: NEXT V
  338. FOR H = x - 1 TO x + 2: PSET (H, y + 4), C: NEXT H: x = x + 9: RETURN
  339. V: FOR V = y - 4 TO y + 1: PSET (x - 2, V), C: PSET (x + 3, V), C: NEXT V
  340. FOR V = y + 2 TO y + 3: PSET (x - 1, V), C: PSET (x + 2, V), C: NEXT V
  341. PSET (x, y + 4), C: PSET (x + 1, y + 4), C: x = x + 9: RETURN
  342. x: f = x - 3: FOR D = y - 3 TO y + 3: PSET (f, D), C: f = f + 1: NEXT D
  343. f = x + 3: FOR D = y - 3 TO y + 3: PSET (f, D), C: f = f - 1: NEXT D
  344. PSET (x + 3, y + 4), C: PSET (x + 3, y - 4), C
  345. PSET (x - 3, y + 4), C: PSET (x - 3, y - 4), C: x = x + 9: RETURN
  346. trt: y = y + 7: FOR hor = x - 3 TO x + 4: PSET (hor, y), C: NEXT hor
  347. FOR hor = x - 3 TO x + 4: PSET (hor, y + 1), C: NEXT hor: y = y - 7: RETURN
  348. pintr: FOR H = x - 1 TO x + 2: PSET (H, y - 4), C: NEXT H
  349. FOR V = y TO y + 2: PSET (x, V), C: NEXT V
  350. FOR V = y - 2 TO y - 1: PSET (x + 3, V), C: NEXT V
  351. PSET (x - 2, y - 3), C: PSET (x + 3, y - 3), C: PSET (x, y + 4), C
  352. FOR H = x + 1 TO x + 2: PSET (H, y), C: NEXT H: RETURN
  353. Minilab: GOSUB M: GOSUB i: GOSUB N: GOSUB i: GOSUB L: GOSUB A: GOSUB B: RETURN
  354. LogBook: GOSUB L: GOSUB O: GOSUB G: x = x + 8: GOSUB B: GOSUB O: GOSUB O: GOSUB K: RETURN
  355. quit: GOSUB q: GOSUB U: GOSUB i: GOSUB T: GOSUB T: GOSUB E: GOSUB r: RETURN
  356. Ecrire: GOSUB E: GOSUB C: GOSUB r: GOSUB i: GOSUB r: GOSUB E: DRAW "B R3 E7": RETURN
  357. Lire: x = x + 9: GOSUB L: GOSUB i: GOSUB r: GOSUB E: RETURN
  358. Imprimer: GOSUB i: GOSUB M: GOSUB P: GOSUB r: GOSUB i: GOSUB M
  359. GOSUB E: GOSUB r: RETURN
  360. Consult: GOSUB C: GOSUB O: GOSUB N: GOSUB S: GOSUB U: GOSUB L: GOSUB T
  361. GOSUB E: GOSUB r: RETURN
  362. Efface: GOSUB E: GOSUB f: GOSUB f: GOSUB A: GOSUB C: GOSUB E
  363. GOSUB r: x = x + 6: GOSUB pintr: RETURN
  364. Aide: GOSUB A: GOSUB i: GOSUB D: GOSUB E: RETURN
  365. inst: GOSUB U: GOSUB N: x = x + 9: GOSUB i: GOSUB N: GOSUB S: GOSUB T
  366. GOSUB A: GOSUB N: GOSUB T: x = x + 9: GOSUB S: GOSUB V: GOSUB P: RETURN
  367. unem: GOSUB M: GOSUB E: GOSUB N: GOSUB U: RETURN
  368. sod: C = 12: GOSUB D: x = x - 1: C = 5: GOSUB O: C = 14: GOSUB S: RETURN
  369. TestMouse:
  370. IF x% > 7 AND x% < 49 THEN GOSUB TestIcon
  371. RETURN
  372. TestIcon:
  373. IF y% > 79 AND y% < 111 THEN GOTO LireEcrire
  374. IF y% > 119 AND y% < 151 THEN GOTO Printer
  375. IF y% > 159 AND y% < 191 THEN GOTO Help
  376. IF y% > 364 AND y% < 396 THEN GOTO Menu
  377. IF y% > 408 AND y% < 434 THEN GOTO RetourDos
  378. RETURN
  379. TestEcrire:
  380. IF x% > 228 AND x% < 240 THEN GOSUB TestOptionEcrire
  381. RETURN
  382. TestOptionEcrire:
  383. IF y% > 161 AND y% < 173 THEN GOTO NouvellePage
  384. IF y% > 193 AND y% < 205 THEN GOTO PageModele
  385. IF y% > 225 AND y% < 237 THEN GOTO Consulter
  386. IF y% > 257 AND y% < 269 THEN
  387.  LINE (210, 130)-(445, 365), CoulZoneTravail, BF
  388.  GOTO AttChoix
  389.  END IF
  390. RETURN
  391.  
  392. TraiteErreur: BEEP: Mouse 0
  393. A = 110: AA = 530: B = 150: bb = 320: LINE (A, B)-(AA, bb), 0, BF
  394. LINE (A, B)-(AA, bb), 12, B: LINE (A, B + 30)-(AA, B + 30), 12, B
  395. COLOR 12: LOCATE 22, 38: PRINT "ERREUR"
  396. CodErr$ = STR$(ERR): NoCode$ = "Code d'erreur :"
  397. IF ERR < 25 OR ERR = 26 THEN ME$ = "Erreur interne au programme"
  398. IF ERR > 28 OR ERR < 53 THEN ME$ = "Erreur interne au programme"
  399. IF ERR = 25 THEN ME$ = "Périphérique absent ou éteint"
  400. IF ERR = 27 THEN ME$ = "Imprimante : Attente papier..."
  401. IF ERR = 53 THEN ME$ = "Fichier absent !"
  402. IF ERR = 57 THEN ME$ = "Erreur de périphérique E / S"
  403. IF ERR = 61 THEN ME$ = "Disque saturé"
  404. IF ERR = 68 THEN ME$ = "Périphérique non disponible"
  405. IF ERR = 75 OR ERR = 76 THEN ME$ = "Erreur de chemin d'accès au fichier"
  406. COLOR 12: LOCATE 28, (80 - LEN(ME$)) / 2: PRINT ME$
  407. COLOR 14: LOCATE 32, (78 - LEN(NoCode$)) / 2: PRINT NoCode$; CodErr$
  408. Message$ = "Appuyez sur une touche pour continuer..."
  409. COLOR 12: LOCATE 36, (80 - LEN(Message$)) / 2: PRINT Message$
  410. DO: f$ = INKEY$: LOOP UNTIL LEN(f$)
  411. RESUME Debuter
  412. REM
  413. MouseData:
  414.  DATA 55,8b,ec,56,57,8b,76,0c,8b,04,8b,76,0a,8b,1c,8b,76,08,8b,0c
  415.  DATA 8b,76,06,8b,14,cd,21,8b,76,0c,89,04,8b,76,0a,89,1c
  416.  DATA 8b,76,08,89,0c,8b,76,06,89,14,5f,5e,5d,ca,08,00,#
  417.  
  418.  
  419. SaisieTexte: DO
  420.   Editeur Page$(NoLigne%), 68, 10, 5 + NoLigne%, CoulTxt%
  421.  
  422.   LOCATE 5 + NoLigne%, 10: PRINT E$
  423.   COLOR 15: LOCATE 5 + NoLigne%, 10: PRINT Page$(NoLigne%)
  424.  
  425.   SELECT CASE ASC(RIGHT$(Key$, 1))
  426.    CASE 72: NoLigne% = NoLigne% + (NoLigne% > 1)       ' haut
  427.    CASE 80, 13: NoLigne% = NoLigne% - (NoLigne% < 23)  ' bas, <Return>
  428.    CASE 27: EXIT DO                                    ' ESC = fin
  429.   END SELECT
  430. LOOP
  431. RETURN
  432.  
  433. Sauvegarde:
  434. REM              Numéro de Page libre
  435. OPEN "minilab\logbook\PageNo.dat" FOR INPUT AS #1
  436. SEEK #1, 1
  437. INPUT #1, PageNo
  438. PageNo$ = STR$(PageNo): PageNo$ = LTRIM$(PageNo$)   'signe!
  439. NewPageNo = PageNo + 1
  440. CLOSE
  441. REM
  442.   IF PageNo > 100 THEN
  443.   BEEP
  444.   LINE (160, 195)-(495, 305), CoulZoneTravail, BF
  445.   A = 160: AA = 495: B = 195: bb = 305: cf = 0: GOSUB Box
  446.   COLOR 12
  447.   LOCATE 14, 27: PRINT "Il n'y a plus de pages libres !"
  448.   COLOR 14:
  449.   LOCATE 17, 29: PRINT "Appuyez sur une touche ..."
  450.   SLEEP
  451.   RETURN
  452.   END IF
  453. REM              Entrer dans PageNo.dat le numéro d'ordre suivant
  454. OPEN "minilab\logbook\PageNo.dat" FOR OUTPUT AS #1
  455. WRITE #1, NewPageNo
  456. CLOSE
  457. REM              Proposer titre par défaut: PAGE1...
  458. NommerFichier:
  459.    NomPageDefaut$ = "PAGE_" + PageNo$ + ".LOG"
  460. LINE (60, 65)-(634, 474), CoulZoneTravail, BF
  461. A = 180: AA = 475: B = 130: bb = 265: cf = 0: GOSUB Box
  462. COLOR 7: LOCATE 11, 27: PRINT "Sauvegarder sous: " + NomPageDefaut$
  463. PageTitre$ = NomPageDefaut$
  464. COLOR 14: LOCATE 11, 45: PRINT PageTitre$
  465. COLOR 7: LOCATE 14, 32: PRINT "<OK>       <Annuler>"
  466. COLOR 14: LOCATE 14, 33: PRINT "O": LOCATE 14, 44: PRINT "A"
  467.  DO: K$ = INKEY$: K$ = UCASE$(K$): LOOP UNTIL K$ = "O" OR K$ = "A"
  468.  IF K$ = "A" THEN
  469.   NewPageNo = NewPageNo - 1           'récupérer numéro
  470.   OPEN "minilab\logbook\PageNo.dat" FOR OUTPUT AS #2
  471.   PRINT #2, NewPageNo
  472.   CLOSE #2
  473.   RETURN
  474.   END IF
  475. REM                 Créer fichier PAGE_xx.LOG dans \logbook
  476. OPEN "minilab\logbook\" + PageTitre$ FOR OUTPUT AS #1
  477. FOR Ligne = 1 TO 23
  478. WRITE #1, Page$(Ligne)
  479. NEXT Ligne
  480. CLOSE #1
  481. REM                Mise à jour Liste du fichier LISTPAGE.DAT
  482. GOSUB RemplirTableauTitresPages
  483.   numero = numero + 1
  484.   ListePages(numero) = PageTitre$                    'rajouter au tableau
  485. OPEN "minilab\logbook\ListPage.dat" FOR OUTPUT AS #1  'écrire tableau ds fichier
  486. FOR N = 1 TO numero
  487. WRITE #1, ListePages(N): NEXT N
  488. CLOSE
  489. RETURN
  490.  
  491. RemplirTableauTitresPages:
  492. OPEN "minilab\logbook\ListPage.dat" FOR INPUT AS #1   'lire fichier &
  493. numero = 1
  494. SEEK #1, 1
  495. DO UNTIL EOF(1) = -1
  496. INPUT #1, Titre$: ListePages(numero) = Titre$        'remplir tableau
  497. numero = numero + 1
  498. LOOP
  499. DernierNo = numero       'pour Renommer
  500. CLOSE #1
  501. RETURN
  502.  
  503. SelectBoxDw:
  504. LINE (260, sup)-(390, sup + 16), 0, B
  505. sup = sup + 16
  506. IF sup > 334 THEN sup = 334
  507. LineNb = LineNb + 1
  508. LINE (260, sup)-(390, sup + 16), coul, B
  509. RETURN
  510. SelectBoxUp:
  511. LINE (260, sup)-(390, sup + 16), 0, B
  512. sup = sup - 16
  513. IF sup < 158 THEN sup = 158
  514. LineNb = LineNb - 1
  515. LINE (260, sup)-(390, sup + 16), coul, B
  516. RETURN
  517.  
  518. TestListePage:                            'pour consulter une page
  519. numero = LastNumber - (26 - (2 * LineNb))
  520. IF numero > DernierNo THEN
  521.  SOUND 800, .3
  522.  RETURN
  523.  END IF
  524. PageTitre$ = ListePages(numero)
  525.  IF PageTitre$ = "" THEN
  526.  SOUND 800, .3
  527.  RETURN
  528.  END IF
  529. A = 60: AA = 634: B = 65: bb = 474: cf = 0: GOSUB Box
  530. OPEN "minilab\logbook\" + PageTitre$ FOR INPUT AS #2
  531. SEEK #2, 1
  532. FOR Ligne = 1 TO 23
  533. INPUT #2, Page$(Ligne)
  534. COLOR 15: LOCATE 5 + Ligne, 10: PRINT Page$(Ligne)
  535. NEXT Ligne
  536. CLOSE #2
  537. DO: K$ = INKEY$: K$ = UCASE$(K$): LOOP UNTIL LEN(K$)
  538. LINE (60, 65)-(634, 474), CoulZoneTravail, BF
  539. GOTO AttenteDebut
  540. RETURN
  541.  
  542. ChoiceBox: LINE (60, 65)-(634, 474), CoulZoneTravail, BF
  543. A = 240: AA = 410: B = 127: bb = 380: cf = 0: GOSUB Box: GOSUB BarBas
  544. LINE (A + 6, B + 6)-(AA - 6, B + 22), coul, BF: RETURN
  545.  
  546. SelectPageInList:
  547. GOSUB RemplirTableauTitresPages
  548. FinListe = 0
  549. numero = 1
  550. AfficherTitres: COLOR 7
  551. sup = 158
  552. LineNb = 1
  553. FOR Ligne = 0 TO 22 STEP 2
  554.  LOCATE 11 + (Ligne / 2), 36: PRINT ListePages(numero)
  555.  numero = numero + 2
  556.  IF numero >= DernierNo THEN FinListe = 1
  557. NEXT Ligne
  558. LastNumber = numero
  559. LINE (260, sup)-(390, sup + 16), coul, B
  560. RETURN
  561. SuiteListe: LINE (246, 151)-(404, 357), 0, BF
  562. IF FinListe = 0 THEN GOTO AfficherTitres
  563. IF FinListe = 1 THEN
  564. LINE (246, 151)-(404, 357), 0, BF
  565. SOUND 800, .4
  566. COLOR 12
  567. LOCATE 16, 36: PRINT "Fin de liste"
  568. AttenteFinListe:  DO: K$ = INKEY$: K$ = UCASE$(K$): LOOP UNTIL LEN(K$)
  569.   IF K$ = FlchDw2$ THEN SOUND 800, .4
  570.   IF K$ = FlchUp2$ THEN
  571.   LOCATE 16, 36: PRINT "            "
  572.   FinListe = 0
  573.   numero = LastNumber - 24
  574.   GOTO AfficherTitres
  575.   END IF
  576.   IF K$ = CHR$(27) THEN LINE (60, 65)-(634, 474), CoulZoneTravail, BF: GOTO AttenteDebut
  577. END IF
  578. GOTO AttenteFinListe
  579. RETURN
  580.  
  581. PrintSelectedPage:                            'pour imprimer une page
  582.   TestPrinterStatus          'Tester que printer On line
  583.   IF P% = 0 THEN
  584. LINE (60, 65)-(634, 474), CoulZoneTravail, BF
  585.   BEEP
  586.   A = 180: AA = 460: B = 195: bb = 305: cf = 0: GOSUB Box
  587.   COLOR 12: LOCATE 15, 29: PRINT "Imprimante hors service !"
  588.   COLOR 14: LOCATE 17, 29: PRINT "Appuyez sur une touche..."
  589.   DO: K$ = INKEY$: K$ = UCASE$(K$): LOOP UNTIL LEN(K$)
  590.   GOTO QuitPrint
  591.   END IF
  592. numero = LastNumber - (26 - (2 * LineNb))     'page à imprimer
  593. IF numero > DernierNo THEN
  594.  SOUND 800, .3
  595.  RETURN
  596.  END IF
  597. PageTitre$ = ListePages(numero)
  598.  IF PageTitre$ = "" THEN
  599.  SOUND 800, .3
  600.  RETURN
  601.  END IF
  602. LINE (60, 65)-(634, 474), CoulZoneTravail, BF                'Valider ordre d'impression
  603.   A = 180: AA = 460: B = 195: bb = 305: cf = 0: GOSUB Box
  604.   COLOR 12: LOCATE 15, 30: PRINT "Imprimer "; PageTitre$; " ?"
  605.   COLOR 7: LOCATE 17, 30: PRINT "<OK>         <Annuler>"
  606.   COLOR 14: LOCATE 17, 31: PRINT "O": LOCATE 17, 44: PRINT "A"
  607.  DO: K$ = INKEY$: K$ = UCASE$(K$): LOOP UNTIL K$ = "O" OR K$ = "A"
  608.  IF K$ = "A" THEN GOTO QuitPrint
  609. OPEN "minilab\logbook\" + PageTitre$ FOR INPUT AS #1
  610. SEEK #1, 1
  611. FOR Ligne = 1 TO 23
  612. INPUT #1, Texte$: TextToPrint(Ligne) = Texte$      'remplir tableau-tampon
  613. NEXT Ligne
  614. CLOSE
  615.  Z1$ = SPACE$(6): Z2$ = "┌": Z3$ = "─"
  616.  Z4$ = "┐": Z5$ = "└": Z6$ = "┘": Z7$ = "│"
  617. LongTitre = LEN(PageTitre$)
  618. OPEN "LPT1:" FOR OUTPUT AS #1                       'imprimer
  619. PRINT #1,
  620. PRINT #1, Z1$ + Z2$ + STRING$(13 + LongTitre, Z3$) + Z4$
  621. PRINT #1, Z1$ + Z7$ + " LOG BOOK : " + PageTitre$ + " " + Z7$
  622. PRINT #1, Z1$ + Z5$ + STRING$(13 + LongTitre, Z3$) + Z6$
  623. PRINT #1, : PRINT #1,
  624. FOR Ligne = 1 TO 23
  625. TextToPrint(Ligne) = Z1$ + TextToPrint(Ligne)
  626. PRINT #1, TextToPrint(Ligne)
  627. NEXT Ligne
  628. PRINT #1, :
  629. CLOSE
  630.   LINE (60, 65)-(634, 474), CoulZoneTravail, BF                   'annonce de fin d'impression
  631.   A = 155: AA = 490: B = 195: bb = 305: cf = 0: GOSUB Box
  632.   COLOR 12: LOCATE 15, 24: PRINT "Impression de "; PageTitre$; " terminée."
  633.   COLOR 14: LOCATE 17, 29: PRINT "Appuyez sur une touche..."
  634. DO: K$ = INKEY$: K$ = UCASE$(K$): LOOP UNTIL LEN(K$)
  635. QuitPrint: LINE (60, 65)-(634, 474), CoulZoneTravail, BF: GOTO AttenteDebut
  636. RETURN
  637.  
  638. DEFSNG A-Z
  639. SUB Clic (ClickDelay%)
  640. GetMouse
  641. FOR T = 0 TO ClickDelay%: NEXT T
  642. END SUB
  643.  
  644. 'DEFINT A-Z
  645. SUB Editeur (Texte$, lo%, x%, y%, CoulTxt%)
  646. xc% = 1                        ' position du curseur dans la chaîne
  647. Txt$ = Texte$
  648. BouclEditeur:
  649.  DO
  650.   IF xc% > lo% THEN xc% = lo%: SOUND 800, .4
  651.   r$ = MID$(Txt$, xc%)      'caractères de Txt$ à partir de xc%(curseur)
  652.   S$ = MID$(Txt$, xc%, 1)   '1er caractère de Txt$ à partir de xc%(curseur)
  653.  
  654.   COLOR CoulTxt%: LOCATE y%, x%
  655.   PRINT MID$(Txt$ + STRING$(lo%, "_"), 1, lo%);
  656.   COLOR 7: LOCATE y%, x% + xc% - 1: PRINT S$
  657.     
  658.                  DO: Key$ = INKEY$: LOOP UNTIL LEN(Key$)
  659.  
  660.   IF LEN(Key$) = 2 THEN
  661.    sk% = ASC(RIGHT$(Key$, 1))
  662.    SELECT CASE sk%
  663.     CASE 72, 80       ' curseur haut/bas
  664.      Texte$ = Txt$
  665.      EXIT DO
  666.  
  667.     CASE 71: xc% = 1                    ' Origine
  668.     CASE 79: xc% = LEN(Txt$) + 1        ' Fin
  669.     CASE 75                             ' curseur à gauche
  670.      xc% = xc% - 1
  671.      IF xc% = 0 THEN xc% = 1
  672.     CASE 77                             ' curseur à droite
  673.      xc% = xc% + 1
  674.      IF xc% > LEN(Txt$) + 1 THEN xc% = LEN(Txt$) + 1: SOUND 800, .4
  675.     CASE 82                             ' Insertion
  676.      ins% = 1 - ins%
  677.     CASE 83                             '*** Effacement
  678.      IF xc% < LEN(Txt$) + 1 THEN Txt$ = LEFT$(Txt$, xc% - 1) + MID$(r$, 2)
  679.      CASE ELSE
  680.    END SELECT
  681.   ELSE
  682.  
  683.    K% = ASC(Key$)
  684.    SELECT CASE K%
  685.     CASE 13, 27              ' Entrée ou Echappement
  686.     CoulTxt% = 15
  687.      Texte$ = Txt$
  688.      EXIT DO
  689.     CASE 8                    ' Retour arrière
  690.      IF xc% > 1 THEN
  691.       Txt$ = LEFT$(Txt$, xc% - 2) + r$
  692.       xc% = xc% - 1
  693.       END IF
  694.     CASE 15
  695.       Key$ = CHR$(234)
  696.       Txt$ = LEFT$(Txt$, xc% - 1) + Key$      ' Ctrl+O = ohm
  697.       xc% = xc% + 1
  698.   
  699.     CASE ELSE                  ' autre caractère
  700.       Txt$ = LEFT$(Txt$, xc% - 1) + Key$
  701.       IF ins% THEN
  702.        Txt$ = Txt$ + r$
  703.       ELSE
  704.        IF LEN(r$) THEN Txt$ = Txt$ + MID$(r$, 1)
  705.        END IF
  706.       Txt$ = LEFT$(Txt$, lo%)
  707.       xc% = xc% + 1
  708.     END SELECT
  709.   END IF
  710.  LOOP
  711. END SUB
  712.  
  713. SUB GetMouse
  714. r% = Interr%(&H33, 3, Bx%, cx%, DX%)
  715. B% = Bx%: x% = cx%: y% = DX%
  716. END SUB
  717.  
  718. DEFINT A-Z
  719. SUB IconAide (A, B)
  720. LINE (A, B + 15)-(A + 40, B + 30), 9, B
  721. CIRCLE (A + 20, B + 15), 13, 7: CIRCLE (A + 20, B + 15), 8, 7
  722. LINE (A + 17, B + 3)-(A + 23, B + 7), 12, BF
  723. LINE (A + 17, B + 27)-(A + 23, B + 23), 12, BF
  724. LINE (A + 7, B + 12)-(A + 12, B + 18), 12, BF
  725. LINE (A + 34, B + 12)-(A + 28, B + 18), 12, BF
  726. END SUB
  727.  
  728. SUB IconBook (A, B)
  729. LINE (A, B)-(A + 40, B + 30), 0, BF
  730. LINE (A + 2, B + 2)-(A + 18, B + 28), 15, BF
  731. LINE (A + 2, B + 2)-(A + 18, B + 28), 7, B
  732. LINE (A + 22, B + 2)-(A + 38, B + 28), 15, BF
  733. LINE (A + 22, B + 2)-(A + 38, B + 28), 7, B
  734. FOR i = 5 TO 25 STEP 5: LINE (A + 17, B + i)-(A + 23, B + i + 1), 7, BF: NEXT i
  735. FOR L = 5 TO 25 STEP 2
  736. LINE (A + 5, B + L)-(A + 15, B + L), 0: LINE (A + 25, B + L)-(A + 35, B + L), 0: NEXT L
  737. END SUB
  738.  
  739. SUB IconPrinter (A, B)
  740. LINE (A, B)-(A + 40, B + 30), 0, B
  741. LINE (A + 12, B + 3)-(A + 28, B + 13), 0, B
  742. LINE (A + 7, B + 14)-(A + 34, B + 16), 8, B
  743. LINE (A + 5, B + 17)-(A + 35, B + 26), 8, B
  744. LINE (A + 6, B + 27)-(A + 34, B + 27), 8
  745. PSET (A + 30, B + 20), 10
  746. END SUB
  747.  
  748. DEFSNG A-Z
  749. FUNCTION Interr% (Num%, AX%, Bx%, cx%, DX%)
  750.  IF MS%(0) = 0 THEN SYSTEM
  751.  DEF SEG = VARSEG(MS%(0))
  752.  POKE VARPTR(MS%(0)) + 26, Num%
  753.  CALL ABSOLUTE(AX%, Bx%, cx%, DX%, VARPTR(MS%(0)))
  754.  Interr% = AX%
  755. END FUNCTION
  756.  
  757. SUB Mouse (OnOff%)
  758. 'Mouse 1 = pointeur allumé  /  Mouse 0 = éteindre pointeur
  759.  
  760. IF OnOff% = 0 THEN OnOff% = 2 ELSE OnOff% = 1
  761. r% = Interr%(&H33, OnOff%, Bx%, cx%, DX%)
  762.  
  763. END SUB
  764.  
  765. DEFINT A-Z
  766. SUB MouseSpeed (Curseur%)
  767. r% = Interr%(&H33, 15, Bx%, Curseur%, Curseur%) '(1=rapide, 100=lent)
  768. END SUB
  769.  
  770. DEFSNG A-Z
  771. SUB ReadData
  772.  RESTORE MouseData
  773.  DEF SEG = VARSEG(MS%(0))
  774.  FOR i% = 0 TO 99
  775.   READ Byte$
  776.   IF Byte$ = "#" THEN EXIT FOR
  777.   POKE VARPTR(MS%(0)) + i%, VAL("&H" + Byte$)
  778.  NEXT i%
  779. END SUB
  780.  
  781. SUB ResetMouse
  782. r% = Interr%(&H33, 0, Bx%, cx%, DX%)
  783. END SUB
  784.  
  785. SUB SetMouse (x%, y%)
  786. r% = Interr%(&H33, 4, Bx%, x% * 8 - 8, y% * 8 - 8)
  787. END SUB
  788.  
  789. SUB TestPrinterStatus
  790. 'Interruption DOS &H17, Fonction 2: TEST ETAT IMPRIMANTE
  791. P% = Interr%(&H17, &H200, 0, 0, 0)
  792. 'Valeur hexa retournée (9000 = OnLine(10h) + Ready(80h)) = HEX$(P%)
  793. '0 = OffLine
  794. END SUB
  795.  
  796. SUB TextBoxEcrireLire
  797. COLOR 7
  798. LOCATE 11, 34: PRINT "Nouvelle page"
  799. LOCATE 13, 34: PRINT "Page Modèle"
  800. LOCATE 15, 34: PRINT "Consulter une page"
  801. LOCATE 17, 34: PRINT "Quitter l'option"
  802. COLOR 14
  803. LOCATE 11, 34: PRINT "N"
  804. LOCATE 13, 39: PRINT "M"
  805. LOCATE 15, 34: PRINT "C"
  806. LOCATE 17, 34: PRINT "Q"
  807. FOR i = 172 TO 268 STEP 32: LINE (230, i)-(240, i - 10), 7, B: NEXT i
  808. END SUB
  809.  
  810.