home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 19 / CD_ASCQ_19_010295.iso / bonus / morse.zip / MORSE.BAS < prev    next >
BASIC Source File  |  1994-11-09  |  32KB  |  1,012 lines

  1. '     Conçu pour fonctionner sous QBASIC de Microsoft MS/DOS 5.xx & +
  2. '
  3. '     Codes  Morse          )    Légionnaire en retraite qui s'emmerde...
  4. '                           ))
  5. '     Pogam Alexis          )))
  6. ' 87 allée des étoiles      )))) Codé par Xor - Respectez l'auteur MERCI ...
  7. '     97310 Kourou          )))
  8. '                           ))    Je n' ai pas de compilateur Basic.
  9. '    tél.  32.06.08         )     Je vous offre ce programme.
  10. '                                    Un compilateur Basic me ferai plaisir
  11. '                                       On a le droit de rèver, non !...
  12. '
  13. ' Si vous perfectionnez ce programme, vous pouvez mettre votre nom ci-dessous.
  14. ' et m'envoyer une copie.
  15. '  P.S. Je ne suis pas Radio Amateur, si des erreurs ont été commises, je vous
  16. ' prie de bien vouloir m'en informer. encore Merci.
  17. '
  18. '
  19. '
  20. '
  21.  
  22. '
  23. '
  24. DECLARE SUB EHaut ()
  25. DECLARE SUB ChargeTexte ()
  26. DECLARE SUB Cadre (x1%, y1%)
  27. DECLARE SUB aaz ()
  28. DECLARE SUB CodesQ ()         ' J'ai pondu ce merdier en 5 jours.
  29. DECLARE SUB PasBon ()         ' Si vous avez fait des programmes intéressant
  30. DECLARE SUB SauveVitesse ()   ' Envoyez-les moi
  31. DECLARE SUB ChargeVitesse ()
  32. DECLARE SUB auteur ()
  33. DECLARE SUB Info ()
  34. DECLARE SUB Morse ()
  35. DECLARE SUB Menu ()
  36. DECLARE SUB Aleatoire ()
  37. DECLARE SUB clair ()
  38. DECLARE SUB Click ()
  39. DECLARE SUB Init ()            ' Merci à Micro Application
  40. DECLARE SUB Souris (OnOff%)    ' Le Grand Livre Qbasic
  41. DECLARE SUB GetSouris ()       ' pour les routines de traitement
  42. DECLARE SUB SetSouris (X%, Y%) ' de la souris.
  43. DECLARE SUB Reglage ()
  44. DECLARE SUB Apprendre ()
  45. DECLARE SUB Exercices ()       ' Tout le reste, je l'ai imaginé.
  46. DECLARE SUB Quitter ()
  47. DECLARE SUB Sortie ()
  48. DECLARE SUB SortieM ()
  49. DECLARE SUB Lecon (L%)
  50. DECLARE SUB selectfile (chemin$, filename$)
  51. DECLARE SUB readfiles (path$, masque$, files$(), flen&(), attr%(), masque%, nbrefich%)
  52. DECLARE SUB selectentry (titre$, liste$(), nbre%, X%, Y%, b%, h%, Choix%)
  53. DECLARE FUNCTION Interr% (NuM%, ax%, BX%, CX%, DX%)
  54. DIM SHARED files$(200), flen&(200), attr%(200)
  55. DIM SHARED chemin$, nom$
  56. DIM SHARED SourisX%, SourisD$, SourisY%, SourisC$, SourisB%, Sort%
  57. DIM SHARED ms%(30), Choix%, Choix1%, alea$(100), a$, S$(9), P$
  58. DIM SHARED v, t, frq, v1, t1, frq1, Scr
  59. 'ON ERROR GOTO Niet
  60. DIM SHARED EcranHaut(1 TO 7)
  61. Init
  62. Souris 1
  63. Menu
  64. END
  65. Niet:                         ' Non en Russe
  66. PasBon
  67. Souris.Data:
  68. DATA 55,8b,ec,56,57
  69. DATA 8b,76,0c,8b,04
  70. DATA 8b,76,0a,8b,1c
  71. DATA 8b,76,08,8b,0c
  72. DATA 8b,76,06,8b,14
  73. DATA cd,21
  74. DATA 8b,76,0c,89,04
  75. DATA 8b,76,0a,89,1c
  76. DATA 8b,76,08,89,0c
  77. DATA 8b,76,06,89,14
  78. DATA 5f,5e,5d
  79. DATA ca,08,00
  80. DATA #
  81. Lm.Data:                  'G    H         D    B
  82. DATA &HB8,&H01,&H06,&HB9,&H00,&H08,&HBA,&H4F,&H15,&HB7,&H00,&HCD,&H10,&HCB
  83.  
  84. SUB aaz
  85. Click
  86. IF Choix% = 7 THEN Choix% = 0: Souris 0: PCOPY 2, 0: Souris 1: EXIT SUB
  87. IF Choix% <> 7 THEN
  88. Souris 0: PCOPY 2, 0
  89. COLOR 0, 7: LOCATE 1, 14: PRINT " Apprendre le Morse "
  90. COLOR 0, 1
  91. LOCATE 3, 16: PRINT "╔═════════════╗"
  92. LOCATE 4, 16: PRINT "║   Annuler   ║██"
  93. LOCATE 5, 16: PRINT "║   -------   ║██"
  94. LOCATE 6, 16: PRINT "║   Leçon 1   ║██"
  95. LOCATE 7, 16: PRINT "║   Leçon 2   ║██"
  96. LOCATE 8, 16: PRINT "║   Leçon 3   ║██"
  97. LOCATE 9, 16: PRINT "║   Leçon 4   ║██"
  98. LOCATE 10, 16: PRINT "║   Leçon 5   ║██"
  99. LOCATE 11, 16: PRINT "╚═════════════╝██"
  100. LOCATE 12, 18: PRINT "███████████████"
  101. LOCATE 4, 36: PRINT "╔════════════════════╗"
  102. LOCATE 5, 36: PRINT "║     Leçon 1+2      ║██"
  103. LOCATE 6, 36: PRINT "║    Leçon 1+2+3     ║██"
  104. LOCATE 7, 36: PRINT "║   Leçon 1+2+3+4    ║██"
  105. LOCATE 8, 36: PRINT "║  Leçon 1+2+3+4+5   ║██"
  106. LOCATE 9, 36: PRINT "║ 1+2+3+4+5+chiffres ║██"
  107. LOCATE 10, 36: PRINT "╚════════════════════╝██"
  108. LOCATE 11, 38: PRINT "██████████████████████"
  109. Souris 1
  110. END IF
  111. Choix% = 7
  112. END SUB
  113.  
  114. SUB Aleatoire
  115. FOR i = 1 TO 80                         ' 80 groupe de 5 caractères
  116.         alea$(i) = ""
  117.         FOR J = 1 TO 5
  118.         a = INT(RND * 26) + 65
  119.         alea$(i) = alea$(i) + CHR$(a)
  120.         NEXT
  121.         alea$(i) = alea$(i) + " "
  122. NEXT
  123. FOR i = 81 TO 100                       '+ 20 groupes de 5 chiffres
  124.         alea$(i) = ""
  125.         FOR J = 1 TO 5
  126.         a = INT(RND * 10) + 48
  127.         alea$(i) = alea$(i) + CHR$(a)
  128.         NEXT
  129.         alea$(i) = alea$(i) + " "
  130. NEXT
  131. a = 0
  132. FOR i = 1 TO 100 STEP 10                ' affichage des 100 groupes
  133. a = a + 1
  134. LOCATE 11 + a, 10: PRINT " ";
  135. FOR J = 0 TO 9
  136. PRINT alea$(i + J);
  137. NEXT
  138. PRINT
  139. NEXT
  140.  
  141. a = 0
  142. a$ = "#  ": Morse                       ' envoie de # au s/prog Morse
  143. FOR i = 1 TO 100 STEP 10                ' et des 100 groupes
  144. a = a + 1
  145. FOR J = 0 TO 9                          ' par lignes de 10 groupes
  146. Sortie
  147. ' t'en as marre, tu quittes.
  148. IF Sort% = 1 THEN EXIT SUB
  149. a$ = alea$(i + J): Morse                ' sinon ça continue
  150. NEXT
  151. NEXT
  152. a$ = "  #": Morse                       ' envoie du BT de fin de texte
  153. END SUB
  154.  
  155. SUB Apprendre
  156. IF Choix% = 2 THEN Choix% = 0: Souris 0: PCOPY 2, 0: Souris 1: EXIT SUB
  157. IF Choix% <> 2 THEN
  158. Souris 0: PCOPY 2, 0
  159. COLOR 0, 7: LOCATE 1, 14: PRINT " Apprendre le Morse "
  160. COLOR 0, 1
  161. LOCATE 3, 16: PRINT "╔═════════════╗"
  162. LOCATE 4, 16: PRINT "║  Apprendre  ║██"
  163. LOCATE 5, 16: PRINT "║   -------   ║██"
  164. LOCATE 6, 16: PRINT "║   A  à  Z   ║██"
  165. LOCATE 7, 16: PRINT "║   0  à  9   ║██"
  166. LOCATE 8, 16: PRINT "║ Ponctuation ║██"
  167. LOCATE 9, 16: PRINT "║   Codes Q   ║██"
  168. LOCATE 10, 16: PRINT "╚═════════════╝██"
  169. LOCATE 11, 18: PRINT "███████████████"
  170. Souris 1
  171. END IF
  172. Choix% = 2
  173. END SUB
  174.  
  175. SUB auteur
  176. IF Choix% = 6 THEN Choix% = 0: Souris 0: PCOPY 2, 0: Souris 1: EXIT SUB
  177. IF Choix% <> 6 THEN
  178. Souris 0: PCOPY 0, 3: PCOPY 2, 0: Souris 1
  179. COLOR 0, 1
  180. LOCATE 3, 56: PRINT "╔═════════════╗"
  181. LOCATE 4, 56: PRINT "║   Annuler   ║██"
  182. LOCATE 5, 56: PRINT "╚═════════════╝██"
  183. LOCATE 6, 58: PRINT "███████████████"
  184. v1 = v: t1 = t: frq1 = frq         ' Fréquence et vitesse du code d'origine
  185. v = 1200: t = .8: frq = 2400       ' Nouvelle Frq et vitesse.
  186. a = 16
  187. a$ = SourisD$                      ' SourisD$ = Nom et Adresse de l'Auteur
  188. FOR i = 1 TO LEN(SourisD$)         '            Codés par Xor 16 à 24
  189. b$ = MID$(SourisD$, i, 1)          '
  190. b = (ASC(b$))                      ' l'idée m'est venue en décortiquant
  191. c = b XOR a                        ' un programme des [ Ducons Craker's ]
  192. MID$(a$, i, 1) = CHR$(c)           ' tournant sur CPC 6128 (il y a lontemps)
  193. a = a + 1: IF a > 25 THEN a = 17   '
  194. NEXT                               '
  195. LOCATE 12, 12: PRINT a$            '
  196. Morse
  197.         IF Sort% = 1 THEN
  198. v = v1: t = t1: frq = frq1         ' Remise en place Frq et vitesse d'origine
  199.         EXIT SUB
  200.         END IF
  201. END IF
  202. Choix% = 6
  203. END SUB
  204.  
  205. SUB Cadre (x1%, y1%)
  206. c1% = POS(0)
  207. COLOR 0
  208. PRINT "┌"; STRING$(x1% - 2, "─"); "┐"
  209. b$ = "│" + SPACE$(x1% - 2) + "│"
  210. FOR i% = 1 TO y1% - 2
  211. LOCATE , c1%
  212. PRINT b$
  213. NEXT i%
  214. LOCATE , c1%
  215. PRINT "└" + STRING$(x1% - 2, "─"); "┘"
  216. END SUB
  217.  
  218. SUB ChargeTexte
  219. Souris 0: PCOPY 2, 0
  220. COLOR 0, 1
  221. LOCATE 3, 34: PRINT "╔═════════════╗"
  222. LOCATE 4, 34: PRINT "║   Annuler   ║██"
  223. LOCATE 5, 34: PRINT "╚═════════════╝██"
  224. LOCATE 6, 36: PRINT "███████████████"
  225. SetSouris 36, 4
  226. Souris 1
  227. FOR i = 1 TO 14
  228. EHaut
  229. NEXT
  230. Scr = 8: COLOR 1, 0
  231.         OPEN nom$ FOR INPUT AS #1
  232.     DO
  233.         LINE INPUT #1, a$
  234.         Scr = Scr + 1: IF Scr > 22 THEN Scr = 22: EHaut
  235.         LOCATE Scr, 1: PRINT "  "; a$
  236.         Morse
  237.         IF Sort% = 1 THEN CLOSE #1: EXIT SUB
  238.     LOOP UNTIL (EOF(1))
  239.     CLOSE #1
  240. END SUB
  241.  
  242. SUB ChargeVitesse
  243. OPEN "Morse.dat" FOR INPUT AS #1
  244. INPUT #1, SourisD$      ' Nom et adresse de l'auteur codé par Xor
  245. FOR i = 1 TO 9
  246. INPUT #1, S$(i)
  247. NEXT
  248. INPUT #1, v               ' Une variable qui ne sert à rien
  249. INPUT #1, t    ' Vitesse     
  250. INPUT #1, frq  ' Fréquence
  251. CLOSE #1
  252. END SUB
  253.  
  254. SUB clair
  255. Souris 0: PCOPY 0, 4: PCOPY 2, 0: Souris 1
  256. LOCATE 3, 28: PRINT " Exercice texte clair "
  257. LOCATE 22, 36: PRINT " Annuler "
  258. LOCATE 20, 36: PRINT "   OK    "
  259. selectfile chemin$, filename$
  260. COLOR 1, 7
  261. IF Sort% = 1 THEN Choix% = 3: EXIT SUB
  262. Choix% = 3
  263. END SUB
  264.  
  265. SUB Click         ' Attend que l'on relache le bouton de la souris
  266. WHILE SourisB%
  267. GetSouris
  268. WEND
  269. SourisB% = 0
  270. END SUB
  271.  
  272. SUB CodesQ
  273. Choix% = 0
  274. LOCATE 4, 35: PRINT "            Codes internationaux            "
  275. LOCATE 5, 35: PRINT "            --------------------            "
  276. LOCATE 6, 35: PRINT "  QTH ....   = ma position est ....         "
  277. LOCATE 7, 35: PRINT "  QTH ?      = quelle est votre position ?  "
  278. LOCATE 8, 35: PRINT "  QRZ ....   = j'appelle .....              "
  279. LOCATE 9, 35: PRINT "  QRZ ?      = qui m'appelle ?              "
  280. LOCATE 10, 35: PRINT "  QSO ....   = j'ai liaison avec ....       "
  281. LOCATE 11, 35: PRINT "  QSO ? .... = avez-vous liaison avec ....? "
  282. LOCATE 12, 35: PRINT "                                            "
  283. LOCATE 13, 35: PRINT "  Vous trouverez les codes internationaux   "
  284. LOCATE 14, 35: PRINT "  auprès de toute Station Radio Amateur.    "
  285. LOCATE 15, 35: PRINT "                                            "
  286. LOCATE 16, 35: PRINT "                                            "
  287. Click
  288. DO
  289. GetSouris
  290. LOOP UNTIL SourisB% = 1
  291. Souris 0: PCOPY 2, 0: Souris 1: Choix% = 0
  292. END SUB
  293.  
  294. SUB EHaut
  295.     DEF SEG = VARSEG(EcranHaut(1))
  296.     CALL Absolute(VARPTR(EcranHaut(1)))
  297.     DEF SEG
  298. END SUB
  299.  
  300. SUB Exercices
  301. IF Choix% = 3 THEN Choix% = 0: Souris 0: PCOPY 2, 0: Souris 1: EXIT SUB
  302. IF Choix% <> 3 THEN
  303. Souris 0: PCOPY 2, 0
  304. COLOR 0, 7: LOCATE 1, 36: PRINT " Exercices "
  305. COLOR 0, 1
  306. LOCATE 3, 34: PRINT "╔═════════════╗"
  307. LOCATE 4, 34: PRINT "║   Annuler   ║██"
  308. LOCATE 5, 34: PRINT "║  ---------  ║██"
  309. LOCATE 6, 34: PRINT "║ Texte Clair ║██"
  310. LOCATE 7, 34: PRINT "║             ║██"
  311. LOCATE 8, 34: PRINT "║  Aléatoire  ║██"
  312. LOCATE 9, 34: PRINT "╚═════════════╝██"
  313. LOCATE 10, 36: PRINT "███████████████"
  314. Souris 1
  315. END IF
  316. Choix% = 3
  317. END SUB
  318.  
  319. SUB GetSouris
  320. R% = Interr%(&H33, 3, BX%, CX%, DX%)
  321. SourisB% = BX%
  322. SourisX% = CX% / 8 + 1
  323. SourisY% = DX% / 8 + 1
  324. END SUB
  325.  
  326. SUB Info
  327. IF Choix% = 4 THEN Choix% = 0: Souris 0: PCOPY 2, 0: Souris 1: EXIT SUB
  328. IF Choix% <> 4 THEN
  329. Souris 0: PCOPY 2, 0
  330. COLOR 0, 7: LOCATE 1, 49: PRINT " Souris "
  331. COLOR 0, 1
  332. LOCATE 3, 41: PRINT "╔═════════════════════╗"
  333. LOCATE 4, 41: PRINT "║    Info. Souris     ║██"
  334. LOCATE 5, 41: PRINT "║    ------------     ║██"
  335. LOCATE 6, 41: PRINT "║ Un clic Prolongé    ║██"
  336. LOCATE 7, 41: PRINT "║ est nécessaire pour ║██"
  337. LOCATE 8, 41: PRINT "║ que l'action soit   ║██"
  338. LOCATE 9, 41: PRINT "║ prise en compte,    ║██"
  339. LOCATE 10, 41: PRINT "║ en particulier pour ║██"
  340. LOCATE 11, 41: PRINT "║ sortir des règlages ║██"
  341. LOCATE 12, 41: PRINT "║ et des Exercices.   ║██"
  342. LOCATE 13, 41: PRINT "╚═════════════════════╝██"
  343. LOCATE 14, 43: PRINT "███████████████████████"
  344. Souris 1
  345. END IF
  346. Choix% = 4
  347. END SUB
  348.  
  349. SUB Init
  350. SCREEN 0, 1, 2, 2: CLS  ' Effacement des écrans utilisés par le programme.
  351. SCREEN 0, 1, 3, 3: CLS  ' "
  352. SCREEN 0, 1, 1, 1: CLS  ' "
  353. SCREEN 0, 1, 0, 0: CLS  ' "
  354. PALETTE 1, 63
  355. COLOR 1, 15
  356. LOCATE 1, 1, 0
  357. CLS                     ' Création du menu
  358. COLOR 0, 1
  359. LOCATE 1, 1: PRINT "  Règlages    Apprendre le Morse    Exercices    Souris    Auteur     Quitter   "
  360. PCOPY 0, 2
  361. RESTORE Souris.Data     ' Chargement des codes machine pour la souris
  362. DEF SEG = VARSEG(ms%(0))
  363. FOR i% = 0 TO 99
  364. READ Octet$
  365. IF Octet$ = "#" THEN EXIT FOR
  366. POKE VARPTR(ms%(0)) + i%, VAL("&H" + Octet$)
  367. NEXT
  368.     RESTORE Lm.Data
  369.     P = VARPTR(EcranHaut(1))
  370.     DEF SEG = VARSEG(EcranHaut(1))
  371.     FOR i = 0 TO 13
  372.        READ J
  373.        POKE (P + i), J
  374.     NEXT i
  375.     DEF SEG
  376. ChargeVitesse           ' Chargement des vitesse et fréquence et XOR
  377. SetSouris 40, 10        ' Positionne la souris en 40,10
  378. Souris 1                ' affiche la souris
  379. COLOR 0, 7
  380. END SUB
  381.  
  382. FUNCTION Interr% (NuM%, ax%, BX%, CX%, DX%)
  383. IF ms%(0) = 0 THEN PasBon
  384. DEF SEG = VARSEG(ms%(0))
  385. POKE VARPTR(ms%(0)) + 26, NuM%
  386. CALL Absolute(ax%, BX%, CX%, DX%, VARPTR(ms%(0)))
  387. Interr% = ax%
  388. END FUNCTION
  389.  
  390. SUB Lecon (L%)
  391. LOCATE 4, 16: PRINT "║   Annuler   ║██"
  392. COLOR 1, 7: FOR i = 14 TO 22: LOCATE i, 1: PRINT SPACE$(78): NEXT
  393. COLOR 0, 1
  394. IF L% = 1 THEN  '1
  395. P$ = "#     A     N     I     M     E     A     N     I     M     E      "
  396. LOCATE 14, 7
  397. GOSUB OKLecon
  398. P$ = "    ANIME EMINA AEINM MINAE IAMEN EMINA NAMIE MANIE NMEIE AEAMN   #"
  399. LOCATE 15, 7
  400. GOSUB OKLecon
  401. END IF
  402. IF L% = 2 THEN  '2
  403. P$ = "#     B     V     K     R     W     B     V     K     R     W      "
  404. LOCATE 14, 7
  405. GOSUB OKLecon
  406. P$ = "    BVKRW WVKBR VBWKR VRKBW RBRKW BVVRK VKBVR RRVKB WRKVB BVRWK   #"
  407. LOCATE 15, 7
  408. GOSUB OKLecon
  409. END IF
  410. IF L% = 3 THEN    '3
  411. P$ = "#     C     F     L     P     X     C     F     L     P     X      "
  412. LOCATE 14, 7
  413. GOSUB OKLecon
  414. P$ = "    CFLPX FCXPL PCXFL CLXPF CCLPF XLFXP CLFPX LXFPC CFLPX XPFLC   #"
  415. LOCATE 15, 7
  416. GOSUB OKLecon
  417. END IF
  418. IF L% = 4 THEN    '4
  419. P$ = "#     D     U     S     O     G     D     U     S     O     G      "
  420. LOCATE 14, 7
  421. GOSUB OKLecon
  422. P$ = "    DUSOG UDGOS DOSUG OGSUD SSOGDU UDSGG GOSUD ODUSD DUSOG OGDUS  #"
  423. LOCATE 15, 7
  424. GOSUB OKLecon
  425. END IF
  426. IF L% = 5 THEN    '5
  427. P$ = "#     Z    Q    Y    X    T    H    Z    Q    Y    X    T    H     "
  428. LOCATE 14, 7
  429. GOSUB OKLecon
  430. P$ = "    ZQYXT HZQYX THZXQ YZTHX HTXYQ ZXTHY QXTHZ YXQTH TYZQX YHQTZ   #"
  431. LOCATE 15, 7
  432. GOSUB OKLecon
  433. END IF
  434. IF L% = 7 THEN    '1&2
  435. P$ = "#   A  N  I  M  E  B  V  K  R  W  A  N  I  M  E  B  V  K  R  W     "
  436. LOCATE 14, 7
  437. GOSUB OKLecon
  438. P$ = "    ANIME BVKRW ABNVI KMREW WKRVE BIMAN WRKVB ENIMA WERMK IVNBA   #"
  439. LOCATE 15, 7
  440. GOSUB OKLecon
  441. END IF
  442. IF L% = 8 THEN    '1&2&3
  443. P$ = "#   ACNFI LMPEX BCVCK CRCWC ACNFI FMFEF BAVAK APRWX ALBCI FEKNV    "
  444. LOCATE 14, 7
  445. GOSUB OKLecon
  446. P$ = "    VNKEF ICBLA XCBLA XWRPA KAVAB FENPM IFNCA CWCRB XEPML IFNCA    "
  447. LOCATE 15, 7
  448. GOSUB OKLecon
  449. P$ = "    VNKLA EFXCB XWRPA ICPKA VABFE BLANI FNMCA WMMRB XEPCL INCAC   #"
  450. LOCATE 16, 7
  451. GOSUB OKLecon
  452. END IF
  453. IF L% = 9 THEN    '1&2&3&4
  454. P$ = "#   ARNBI PCMDO EVWFU XKGLS EODMC PIBNR ASLGK XUFWV IBNRA ODMCP    "
  455. LOCATE 14, 7
  456. GOSUB OKLecon
  457. P$ = "    IBARN OEVWF UXSEO DMCPI BNRBI PASLG KCMDX UFWVN RKGLA ODMCP    "
  458. LOCATE 15, 7
  459. GOSUB OKLecon
  460. P$ = "    VNILG BAVMC WFUXS EODPI BNRBI PDMAO ESKCM DXUFR NWRKG LAOCP    "
  461. LOCATE 16, 7
  462. GOSUB OKLecon
  463. P$ = "    PCOAL GKVNI LESGB MCWFA VXSEU OPIBD NBIRP RMAOK DXCMU FWRRN   #"
  464. LOCATE 17, 7
  465. GOSUB OKLecon
  466. END IF
  467. IF L% = 10 THEN   '1&2&3&4&5
  468. P$ = "# AZRNB QIPYC MDXOE TVWFH UXZKG LSEQO DMCYP IBNRX ASLGT KXUFH  "
  469. LOCATE 14, 9
  470. GOSUB OKLecon
  471. P$ = "  WVIBN AODMC PZQYT VAZRN BQIPY CMDXO ETVWF HUXZK GLSEQ ODMCY  "
  472. LOCATE 15, 9
  473. GOSUB OKLecon
  474. P$ = "  PIBNR XASLG TKXUF HAODM CPZQY TVAZR NBQIP YCMDX OETVWFIBNRX #"
  475. LOCATE 16, 9
  476. GOSUB OKLecon
  477. END IF
  478. IF L% = 11 THEN   '1&2&3&4&5&chiffres
  479. P$ = "# A1ZRN 2BQ3I PY4CM 5DXO6 ET7VW F8HU9 XZK0G L5SEQ 5OD6M C4YPI  "
  480. LOCATE 14, 9
  481. GOSUB OKLecon
  482. P$ = "  WVI7B N65AO D4M3C 9P8ZQ Y2TVA 7BN8R 9XA1S L23GT KXUFH 0ZRNB  "
  483. LOCATE 15, 9
  484. GOSUB OKLecon
  485. P$ = "  D1MC4 PZQ3Y TV5AZ 5RNB9 QIPY8 TVW4F IBNR0 E4TVW WZ0K2 G8LSE  "
  486. LOCATE 16, 9
  487. GOSUB OKLecon
  488. P$ = "  P6IBN R00X1 ASL8G TK4XU FH5AO 1QIPY CMDXO 7FH1U E4TVW Q9ODM  "
  489. LOCATE 17, 9
  490. GOSUB OKLecon
  491. P$ = "  C5YXE 8CMDX 76O2E PZQ3Y 5DXO6 R8NB7 TG32L 7L2J8 QZOA0 AGDES #"
  492. LOCATE 18, 9
  493. GOSUB OKLecon
  494. END IF
  495. IF L% = 12 THEN  'Ponctuation
  496. P$ = "#   ,    .    /    :    (    )    -    +    é    à    ?    '   "
  497. LOCATE 14, 7
  498. GOSUB OKLecon
  499. P$ = "    à l'école : ( 30 + 1 / 2 = 31 - 0, 5 ) ok ?   A+   #       "
  500. LOCATE 15, 7
  501. GOSUB OKLecon
  502. END IF
  503. IF L% = 13 THEN  'Chiffres
  504. P$ = "#     1     2     3     4     5     6     7     8     9     0      "
  505. LOCATE 14, 7
  506. GOSUB OKLecon
  507. P$ = "    12345 67890 78946 32109 28163 72945 46859 10327 09524 86173   #"
  508. LOCATE 15, 7
  509. GOSUB OKLecon
  510. END IF
  511. GOTO finLecon
  512. OKLecon:
  513. FOR i = 1 TO LEN(P$)
  514. a$ = MID$(P$, i, 1)
  515. PRINT a$;
  516. Morse
  517. IF Sort% = 1 THEN GOTO finLecon    ' t'en as marre, tu quittes.
  518. NEXT
  519. RETURN
  520. finLecon:
  521. Choix% = 7
  522. Sort% = 0
  523. 'Souris 0: PCOPY 2, 0: Souris 1: choix% = 0: L% = 0
  524. END SUB
  525.  
  526. SUB Menu
  527. DO
  528. DebutMenu:
  529. IF Sort% = 1 THEN Souris 0: PCOPY 2, 0: Souris 1: Choix% = 0: Sort% = 0
  530. a$ = INKEY$: IF a$ = CHR$(27) THEN Quitter
  531. IF a$ = "q" OR a$ = "Q" THEN Quitter
  532. IF a$ = "a" OR a$ = "A" THEN auteur
  533. 'LOCATE 23, 1: PRINT "X:"; SourisX%; " Y:"; SourisY%, choix%
  534. GetSouris
  535. SELECT CASE SourisY%                    ' pour cette boucle, rien à dire
  536.         CASE 1                          ' les SUBs portent le nom de leur
  537.                 SELECT CASE SourisB%    ' fonction
  538.                 CASE 1
  539.         SELECT CASE SourisX%
  540.         CASE 2 TO 11
  541.         Reglage
  542.         Click
  543.         CASE 14 TO 33
  544.         Apprendre
  545.         Click
  546.         CASE 36 TO 46
  547.         Exercices
  548.         Click
  549.         CASE 49 TO 56
  550.         Info
  551.         Click
  552.         CASE 59 TO 66
  553.         Click
  554.         auteur
  555.         CASE 70 TO 78
  556.         Click
  557.         Quitter
  558.         END SELECT
  559.                       END SELECT
  560. END SELECT
  561. SELECT CASE SourisB%
  562.         CASE 2
  563.         EXIT SUB
  564. END SELECT
  565. IF Choix% = 2 THEN
  566. SELECT CASE SourisB%
  567.         CASE 1
  568.                 SELECT CASE SourisX%
  569.                 CASE 17 TO 29
  570.                         SELECT CASE SourisY%
  571.                         CASE 6
  572.                         aaz
  573.                         CASE 7
  574.                         Lecon 13
  575.                         CASE 8
  576.                         Lecon 12
  577.                         CASE 9
  578.                         CodesQ
  579.                         CASE 8
  580.                         END SELECT
  581.                 END SELECT
  582. END SELECT
  583. END IF
  584. IF Choix% = 9 THEN
  585. SELECT CASE SourisB%
  586.         CASE 1
  587.                 SELECT CASE SourisX%
  588.                 CASE 17 TO 28
  589.                         SELECT CASE SourisY%
  590.                         CASE 4
  591.                         Souris 0: PCOPY 2, 0: Souris 1: Choix% = 0
  592.                         END SELECT
  593.                 END SELECT
  594. END SELECT
  595. END IF
  596. IF Choix% = 7 THEN
  597. SELECT CASE SourisB%
  598.         CASE 1
  599.                 SELECT CASE SourisX%
  600.                 CASE 17 TO 28
  601.                         SELECT CASE SourisY%
  602.                         CASE 4
  603.                         Souris 0: PCOPY 2, 0: Souris 1: Choix% = 0
  604.                         CASE 6 TO 10
  605.                         Lecon SourisY% - 5
  606.                         END SELECT
  607.                 CASE 37 TO 56
  608.                         SELECT CASE SourisY%
  609.                         CASE 4 TO 10
  610.                         Lecon SourisY% + 2
  611.                         END SELECT
  612.                 END SELECT
  613. END SELECT
  614. END IF
  615. IF Choix% = 3 THEN
  616. SELECT CASE SourisB%
  617.         CASE 1
  618.         SELECT CASE SourisX%
  619.         CASE 35 TO 47
  620.                 SELECT CASE SourisY%
  621.                 CASE 4
  622.                 Souris 0: PCOPY 2, 0: Souris 1: Choix% = 0
  623.                 CASE 6
  624.                 clair
  625.                 CASE 8
  626.                 Aleatoire
  627.                 END SELECT
  628.         END SELECT
  629. END SELECT
  630. END IF
  631. IF Choix% = 1 THEN
  632. LOCATE 6, 5: PRINT USING ("##### Hz"); frq
  633. 'LOCATE 10, 5: PRINT USING ("#####"); v '  calcul à revoir
  634. GOSUB 100: GOSUB 100: GOSUB 100: GOSUB 200: GOSUB 300: GOSUB 300
  635. GetSouris
  636.         SELECT CASE SourisB%           ' Règlage Fréquence et Vitesse
  637.         CASE 1
  638.                 SELECT CASE SourisY%
  639.                 CASE 4
  640.                         SELECT CASE SourisX%
  641.                         CASE 3 TO 14
  642.                         Souris 0: PCOPY 2, 0: Souris 1: Choix% = 0
  643.                         END SELECT
  644.                 CASE 7
  645.                         SELECT CASE SourisX%
  646.                         CASE 3
  647.                         frq = frq - 100: IF frq < 37 THEN frq = frq + 100
  648.                         CASE 14
  649.                         frq = frq + 100: IF frq > 32767 THEN frq = frq - 100
  650.                         END SELECT
  651.                 CASE 9
  652.                         SELECT CASE SourisX%
  653.                         CASE 3
  654.                         t = t + .1: v = v - 80: IF t > 65535 THEN t = t + .1: v = v + 5
  655.                         CASE 14
  656.                         t = t - .1: v = v + 80: IF t < 0 THEN t = t + .1: v = v - 5
  657.                         END SELECT
  658.                 END SELECT
  659.         END SELECT
  660. END IF
  661. IF Choix% = 5 THEN
  662. GetSouris
  663. SELECT CASE SourisB%
  664. CASE 1
  665.         SELECT CASE SourisY%
  666.         CASE 1
  667.                 GOTO FinMenu
  668.         CASE 10
  669.                 SELECT CASE SourisX%
  670.                 CASE 54 TO 58
  671.                 Souris 0
  672.                 SauveVitesse
  673.                 GOTO termine
  674.                 CASE 67 TO 72
  675. termine:
  676.                 Souris 0                         ' Quitter le programme
  677.                 COLOR 15, 0
  678.                 SCREEN 0, 1, 2, 2: CLS           ' Explications dans Init
  679.                 SCREEN 0, 1, 3, 3: CLS
  680.                 SCREEN 0, 1, 1, 1: CLS
  681.                 SCREEN 0, 1, 0, 0: CLS
  682.                 COLOR 15, 0
  683.                 a = 17                           '   ici, nom nom et mon
  684.                 FOR J = 1 TO 8                   '   adresse codés par Xor
  685.                 a$ = S$(J)                       '
  686.                 FOR i = 1 TO LEN(a$)             '
  687.                 b$ = MID$(S$(J), i, 1)           '
  688.                 b = (ASC(b$))                    '
  689.                 c = b XOR a                      '
  690.                 MID$(a$, i, 1) = CHR$(c)         '
  691.                 a = a + 1: IF a > 25 THEN a = 17 '
  692.                 IF J > 1 THEN COLOR 15, 4        '
  693.                 NEXT                             '
  694.                 LOCATE 10 + J, 28: PRINT a$      '
  695.                 NEXT                             '
  696.                 COLOR 15, 0                      '
  697.                 SYSTEM
  698.                 END SELECT
  699.         END SELECT
  700. END SELECT
  701. END IF
  702. FinMenu:
  703. LOOP
  704.                             ' Série de V pour les règlages
  705. 100 SOUND frq, t            ' Point
  706. SOUND 32767, t
  707. RETURN
  708. 200 SOUND frq, t * 2        ' Trait
  709. SOUND 32767, t
  710. RETURN
  711. 300 SOUND 32767, t * 2      ' Espace
  712. RETURN
  713. END SUB
  714.  
  715. SUB Morse
  716.                           ' Alphabet, chiffres et ponctuation usuelle
  717. FOR lon = 1 TO LEN(a$)
  718. SortieM
  719. ' t'en as marre, tu quittes.
  720. IF Sort% = 1 THEN EXIT SUB
  721. L = ASC(MID$(a$, lon, 1))
  722. IF L = 32 THEN GOSUB 30
  723. IF L = 130 THEN GOSUB eaccent
  724. IF L = 133 THEN GOSUB aaccent
  725. IF L > 32 AND L < 65 THEN L = L - 32: GOSUB chiffres
  726. IF L > 64 AND L < 91 THEN L = L - 64: GOSUB lettres
  727. IF L > 96 AND L < 123 THEN L = L - 96: GOSUB lettres
  728. SortieM
  729. IF Sort% = 1 THEN EXIT SUB
  730. L = ASC(MID$(a$, lon, 1))
  731. NEXT
  732. GOTO FinMorse
  733. chiffres:
  734. ON L GOSUB 30, 30, bt, 30, 30, 30, apostrophe, parent, parent, X, ar, virgule, tiret, pt, barre, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, pt2, 30, 30, bt, 30, imi, 30
  735. RETURN
  736. lettres:
  737. ON L GOSUB a, b, c, d, e, f, g, h, i, J, k, L, m, n, O, P, q, R, S, t, u, v, w, X, Y, z
  738. RETURN
  739. END
  740. 10 SOUND frq, t             ' point
  741. SOUND 32767, t
  742. RETURN
  743. 20 SOUND frq, t * 2         ' trait
  744. SOUND 32767, t
  745. RETURN
  746. 30 SOUND 32767, t * 2       ' espace
  747. RETURN
  748. a: GOSUB 10: GOSUB 20: GOSUB 30: RETURN
  749. b: GOSUB 20: GOSUB 10: GOSUB 10: GOSUB 10: GOSUB 30: RETURN
  750. c: GOSUB 20: GOSUB 10: GOSUB 20: GOSUB 10: GOSUB 30: RETURN
  751. d: GOSUB 20: GOSUB 10: GOSUB 10: GOSUB 30: RETURN
  752. e: GOSUB 10: GOSUB 30: RETURN
  753. f: GOSUB 10: GOSUB 10: GOSUB 20: GOSUB 10: GOSUB 30: RETURN
  754. g: GOSUB 20: GOSUB 20: GOSUB 10: GOSUB 30: RETURN
  755. h: GOSUB 10: GOSUB 10: GOSUB 10: GOSUB 10: GOSUB 30: RETURN
  756. i: GOSUB 10: GOSUB 10: GOSUB 30: RETURN
  757. J: GOSUB 10: GOSUB 20: GOSUB 20: GOSUB 20: GOSUB 30: RETURN
  758. k: GOSUB 20: GOSUB 10: GOSUB 20: GOSUB 30: RETURN
  759. L: GOSUB 10: GOSUB 20: GOSUB 10: GOSUB 10: GOSUB 30: RETURN
  760. m: GOSUB 20: GOSUB 20: GOSUB 30: RETURN
  761. n: GOSUB 20: GOSUB 10: GOSUB 30: RETURN
  762. O: GOSUB 20: GOSUB 20: GOSUB 20: GOSUB 30: RETURN
  763. P: GOSUB 10: GOSUB 20: GOSUB 20: GOSUB 10: GOSUB 30: RETURN
  764. q: GOSUB 20: GOSUB 20: GOSUB 10: GOSUB 20: GOSUB 30: RETURN
  765. R: GOSUB 10: GOSUB 20: GOSUB 10: GOSUB 30: RETURN
  766. S: GOSUB 10: GOSUB 10: GOSUB 10: GOSUB 30: RETURN
  767. t: GOSUB 20: GOSUB 30: RETURN
  768. u: GOSUB 10: GOSUB 10: GOSUB 20: GOSUB 30: RETURN
  769. v: GOSUB 10: GOSUB 10: GOSUB 10: GOSUB 20: GOSUB 30: RETURN
  770. w: GOSUB 10: GOSUB 20: GOSUB 20: GOSUB 30: RETURN
  771. X: GOSUB 20: GOSUB 10: GOSUB 10: GOSUB 20: GOSUB 30: RETURN
  772. Y: GOSUB 20: GOSUB 10: GOSUB 20: GOSUB 20: GOSUB 30: RETURN
  773. z: GOSUB 20: GOSUB 20: GOSUB 10: GOSUB 10: GOSUB 30: RETURN
  774. 1 : GOSUB 10: GOSUB 20: GOSUB 20: GOSUB 20: GOSUB 20: GOSUB 30: RETURN
  775. 2 : GOSUB 10: GOSUB 10: GOSUB 20: GOSUB 20: GOSUB 20: GOSUB 30: RETURN
  776. 3 : GOSUB 10: GOSUB 10: GOSUB 10: GOSUB 20: GOSUB 20: GOSUB 30: RETURN
  777. 4 : GOSUB 10: GOSUB 10: GOSUB 10: GOSUB 10: GOSUB 20: GOSUB 30: RETURN
  778. 5 : GOSUB 10: GOSUB 10: GOSUB 10: GOSUB 10: GOSUB 10: GOSUB 30: RETURN
  779. 6 : GOSUB 20: GOSUB 10: GOSUB 10: GOSUB 10: GOSUB 10: GOSUB 30: RETURN
  780. 7 : GOSUB 20: GOSUB 20: GOSUB 10: GOSUB 10: GOSUB 10: GOSUB 30: RETURN
  781. 8 : GOSUB 20: GOSUB 20: GOSUB 20: GOSUB 10: GOSUB 10: GOSUB 30: RETURN
  782. 9 : GOSUB 20: GOSUB 20: GOSUB 20: GOSUB 20: GOSUB 10: GOSUB 30: RETURN
  783. 0 : GOSUB 20: GOSUB 20: GOSUB 20: GOSUB 20: GOSUB 20: GOSUB 30: RETURN
  784. pt: GOSUB 10: GOSUB 20: GOSUB 10: GOSUB 20: GOSUB 10: GOSUB 20: GOSUB 30: RETURN
  785. pt2: GOSUB 20: GOSUB 20: GOSUB 20: GOSUB 10: GOSUB 10: GOSUB 10: GOSUB 30: RETURN
  786. ar: GOSUB 10: GOSUB 20: GOSUB 10: GOSUB 20: GOSUB 10: GOSUB 30: RETURN
  787. virgule: GOSUB 20: GOSUB 20: GOSUB 10: GOSUB 10: GOSUB 20: GOSUB 20: GOSUB 30: RETURN
  788. eaccent: GOSUB 10: GOSUB 10: GOSUB 20: GOSUB 10: GOSUB 10: GOSUB 30: RETURN
  789. aaccent: GOSUB 10: GOSUB 20: GOSUB 20: GOSUB 10: GOSUB 20: GOSUB 30: RETURN
  790. imi: GOSUB 10: GOSUB 10: GOSUB 20: GOSUB 20: GOSUB 10: GOSUB 10: GOSUB 30: RETURN
  791. barre: GOSUB 20: GOSUB 10: GOSUB 10: GOSUB 20: GOSUB 10: GOSUB 30: RETURN
  792. bt: GOSUB 20: GOSUB 10: GOSUB 10: GOSUB 10: GOSUB 20: GOSUB 30: RETURN
  793. parent: GOSUB 20: GOSUB 10: GOSUB 20: GOSUB 20: GOSUB 10: GOSUB 20: GOSUB 30: RETURN
  794. tiret: GOSUB 20: GOSUB 10: GOSUB 10: GOSUB 10: GOSUB 10: GOSUB 20: GOSUB 30: RETURN
  795. apostrophe: GOSUB 10: GOSUB 20: GOSUB 20: GOSUB 20: GOSUB 20: GOSUB 10: GOSUB 30: RETURN
  796. 'teste: GOSUB 10: RETURN
  797. FinMorse:
  798. Choix% = 0
  799. END SUB
  800.  
  801. SUB PasBon              ' rien à dire
  802. SCREEN 0, 1, 2, 2: CLS  ' Effacement des écrans utilisés par le programme.
  803. SCREEN 0, 1, 3, 3: CLS  ' "
  804. SCREEN 0, 1, 1, 1: CLS  ' "
  805. SCREEN 0, 1, 0, 0
  806. COLOR 15, 0: CLS
  807. LOCATE 10, 26: PRINT " Un problème est survenu "
  808. LOCATE 12, 26: PRINT "    retour au système"
  809. SYSTEM
  810. END SUB
  811.  
  812. SUB Quitter
  813. IF Choix% = 5 THEN Choix% = 0: Souris 0: PCOPY 2, 0: Souris 1: EXIT SUB
  814. IF Choix% <> 5 THEN
  815. Souris 0: PCOPY 2, 0
  816. COLOR 0, 7: LOCATE 1, 70: PRINT " Quitter "
  817. COLOR 0, 1
  818. LOCATE 3, 49: PRINT "╔═══════════════════════════╗"
  819. LOCATE 4, 49: PRINT "║          Quitter          ║██"
  820. LOCATE 5, 49: PRINT "║          -------          ║██"
  821. LOCATE 6, 49: PRINT "║ Voulez-vous sauvegarder   ║██"
  822. LOCATE 7, 49: PRINT "║ la vitesse et la tonalité ║██"
  823. LOCATE 8, 49: PRINT "║ pour la prochaine fois?   ║██"
  824. LOCATE 9, 49: PRINT "║                           ║██"
  825. LOCATE 10, 49: PRINT "║     Oui     /    Non      ║██"
  826. LOCATE 11, 49: PRINT "╚═══════════════════════════╝██"
  827. LOCATE 12, 51: PRINT "█████████████████████████████"
  828. Souris 1
  829. END IF
  830. Choix% = 5
  831. END SUB
  832.  
  833. SUB readfiles (path$, masque$, files$(), flen&(), attr%(), masque%, nbrefich%)
  834. dta$ = STRING$(80, " ")
  835. ax% = Interr%(&H21, &H1A00, 0, 0, SADD(dta$))
  836. nbrefich% = 0
  837. filename$ = path$ + masque$ + CHR$(0)
  838. ax% = Interr%(&H21, &H4E00, 0, masque%, SADD(filename$))
  839. WHILE ax% < 18
  840. f$ = MID$(dta$, 31, 12)
  841. IF INSTR(f$, CHR$(0)) THEN f$ = LEFT$(f$, INSTR(f$, CHR$(0)) - 1)
  842. IF f$ <> "." THEN
  843.         nbrefich% = nbrefich% + 1
  844.         files$(nbrefich%) = f$
  845.         flen&(nbrefich%) = CVL(MID$(dta$, 27, 4))
  846.         attr%(nbrefich%) = ASC(MID$(dta$, 22, 1))
  847.         IF attr%(nbrefich%) = 16 THEN
  848.                 files$(nbrefich%) = "[" + files$(nbrefich%) + "]"
  849.         END IF
  850. END IF
  851. ax% = Interr%(&H21, &H4F00, 0, 0, 0)
  852. WEND
  853. END SUB
  854.  
  855. SUB Reglage
  856. IF Choix% = 1 THEN Choix% = 0: Souris 0: PCOPY 2, 0: Souris 1: EXIT SUB
  857. IF Choix% <> 1 THEN
  858. Souris 0: PCOPY 2, 0
  859. COLOR 0, 7: LOCATE 1, 2: PRINT " Règlages "
  860. COLOR 0, 1
  861. LOCATE 3, 2: PRINT "╔════════════╗"
  862. LOCATE 4, 2: PRINT "║   Sortir   ║██"
  863. LOCATE 5, 2: PRINT "║  --------  ║██"
  864. LOCATE 6, 2: PRINT "║            ║██"
  865. LOCATE 7, 2: PRINT "║"; CHR$(25); " Tonalité "; CHR$(24); "║██"
  866. LOCATE 8, 2: PRINT "║            ║██"
  867. LOCATE 9, 2: PRINT "║"; CHR$(25); " Vitesse  "; CHR$(24); "║██"
  868. LOCATE 10, 2: PRINT "║            ║██"
  869. LOCATE 11, 2: PRINT "╚════════════╝██"
  870. LOCATE 12, 4: PRINT "██████████████"
  871. Souris 1
  872. END IF
  873. Choix% = 1
  874. END SUB
  875.  
  876. SUB SauveVitesse                       ' Idem que ChargeVitesse
  877. OPEN "Morse.dat" FOR OUTPUT AS #1
  878. PRINT #1, SourisD$
  879. FOR i = 1 TO 9
  880. PRINT #1, S$(i)
  881. NEXT
  882. PRINT #1, v
  883. PRINT #1, t
  884. PRINT #1, frq
  885. CLOSE #1
  886. END SUB
  887.  
  888. SUB selectentry (titre$, liste$(), nbre%, X%, Y%, b%, h%, Choix1%)
  889. LOCATE Y%, X%
  890. Cadre b% + 2, h% + 2
  891. 'COLOR 4
  892. LOCATE Y% - 1, X% + (b% - LEN(titre$) + 1) / 2
  893. PRINT titre$;
  894. offs% = 0
  895. Choix1% = 1
  896. nom$ = liste$(Choix1%)
  897. DO
  898. Boucle:
  899. Souris 0
  900. FOR i% = 1 TO h%
  901. LOCATE Y% + i%, X% + 1
  902. IF i% + offs% = Choix1% THEN COLOR 1, 0 ELSE COLOR 0, 7
  903.         IF i% + offs% <= nbre% THEN
  904.                 PRINT liste$(i% + offs%); TAB(X% + b% + 1);
  905.                 ELSE
  906.                 PRINT SPACE$(b%);
  907.         END IF
  908. NEXT i%
  909. Souris 1
  910. DO
  911. GetSouris
  912. LOCATE 15, 1: PRINT "x:"; SourisX%; "y:"; SourisY%; "Bouton:"; SourisB%
  913. SELECT CASE SourisB%
  914.         CASE 1
  915.                 SELECT CASE SourisX%
  916.                 CASE 53 TO 68
  917.                         SELECT CASE SourisY%
  918.                         CASE 6 TO 20
  919.                         Choix1% = SourisY% - 5: GOTO Touches
  920.                         END SELECT
  921.                 CASE 36 TO 44
  922.                         SELECT CASE SourisY%
  923.                         CASE 20
  924.                         ChargeTexte
  925.                         EXIT SUB
  926.                         CASE 22
  927.                         Sort% = 1
  928.                         EXIT SUB
  929.                         END SELECT
  930.                 END SELECT
  931. END SELECT
  932. key$ = INKEY$
  933. LOOP UNTIL LEN(key$)
  934. IF key$ = CHR$(27) THEN Choix1% = 0: END
  935. 'IF key$ = CHR$(13) THEN Choix% = 11: EXIT SUB
  936. IF key$ = CHR$(13) THEN
  937. ChargeTexte
  938. IF Sort% = 1 THEN EXIT SUB
  939. EXIT SUB
  940. END IF
  941. Touches:
  942. IF Choix1% > nbre% THEN Choix1% = nbre%
  943. IF Choix1% < 1 THEN Choix1% = 1
  944. IF Choix1% <= offs% THEN offs% = Choix1% - 1
  945. IF offs% < Choix1% - h% THEN offs% = Choix1% - h%
  946. GOTO fin
  947. LOOP
  948. COLOR 1, 0
  949. fin:
  950. nom$ = liste$(Choix1%)
  951. 'chargeico
  952. GOTO Boucle
  953. END SUB
  954.  
  955. SUB selectfile (chemin$, filename$)
  956. 'x% = xpos
  957. 'y% = 10'CSRLIN
  958. COLOR 0, 7
  959. LOCATE 9, 9: PRINT "Choisissez votre texte avec la souris"
  960. DO
  961. readfiles chemin$, "*.txt", files$(), flen&(), attr%(), 16 + 32, nbrefich%
  962. selectentry "Selection du Texte", files$(), nbrefich%, 52, 5, 16, 15, chois%
  963. IF Choix1% > 0 AND attr%(Choix1%) = 16 THEN
  964.         chemin$ = chemin$ + MID$(files$(Choix1%), 2, LEN(files$(Choix1%)) - 2) + "\"
  965.         IF RIGHT$(chemin$, 3) = "..\" THEN
  966.                 FOR i% = LEN(chemin$) - 4 TO 1 STEP -1
  967.                 IF MID$(chemin$, i%, 1) = "\" THEN
  968.                         chemin$ = LEFT$(chemin$, i%)
  969.                         EXIT FOR
  970.                 END IF
  971.                 NEXT i%
  972.         END IF
  973. ELSE
  974. EXIT DO
  975. END IF
  976. LOOP
  977. filename$ = files$(Choix1%)
  978. END SUB
  979.  
  980. SUB SetSouris (X%, Y%)
  981. R% = Interr%(&H33, 4, BX%, X% * 8 - 8, Y% * 8 - 8)
  982. END SUB
  983.  
  984. SUB Sortie
  985. GetSouris                    ' pour sortir d'une SUB en cours
  986. SELECT CASE SourisB%
  987. CASE 1
  988.         SELECT CASE SourisY%
  989.         CASE 1
  990.         Sort% = 1: EXIT SUB
  991.         END SELECT
  992. END SELECT
  993. SourisB% = 0
  994. END SUB
  995.  
  996. SUB SortieM
  997. GetSouris                    ' pour sortir d'une SUB en cours
  998. SELECT CASE SourisB%
  999. CASE 1
  1000.         SELECT CASE SourisY%
  1001.         CASE 4
  1002.         Sort% = 1: EXIT SUB
  1003.         END SELECT
  1004. END SELECT
  1005. END SUB
  1006.  
  1007. SUB Souris (OnOff%)
  1008. IF OnOff% = 0 THEN OnOff% = 2 ELSE OnOff% = 1
  1009. R% = Interr%(&H33, OnOff%, BX%, CX%, DX%)
  1010. END SUB
  1011.  
  1012.