home *** CD-ROM | disk | FTP | other *** search
/ Carsten's PPE Collection / Carstens_PPE_Collection_2007.zip / T / TLY-BRD2.ZIP / CY_BRD.PPS < prev    next >
Text File  |  1995-04-28  |  17KB  |  665 lines

  1. Integer indice, Max, CurCol, Curlgn, NbCol, Nblgn, stalgn, keycol
  2. Integer MinLgn, Curind, Nivsec[90], j, Col[10], stacol, kbuflen
  3. String Touche, TabLis[90], Csel, Cnor, Cpri, Tabul, Keycoul, Maincmd, Minispeed
  4. String Carsec, Prim[90], TmpKey, Statut, Chemin, fconf, fich[3], comm, Conni
  5. String fillb, tmptok
  6.  
  7. ;******************************************************************
  8. ;** init les var et crée un fich. temp. pour la pos. du curs.
  9. ;******************************************************************
  10.  
  11. LET Curcol = 1
  12. LET Curind = 1
  13. LET indice = 1
  14. LET Tmpkey = ""
  15. LET fillb = ""
  16.  
  17. TOKENIZE TOKENSTR()                      ;regarde les paramètres passés au ppe
  18. LET chemin = PPEPATH()
  19. LET fconf = GETTOKEN()
  20. IF (fconf<>"") GOTO init
  21. PRINTLN "@X0FP@X0Au@X02T @X0FT@X0Ah@X02E @X0FN@X0Aa@X02Me @X0Fo@X0AF @X0Ft@X0AH@X02e @X0FC@X0Ao@X02nFIguRaTIon @X0FF@X0Ai@X02lE @X0Fa@X0AS @X0FA @X0FP@X0Aa@X02RAmETeR !"
  22. PRINTLN "eX : !C:\PCB\PPE\MEN\MEN.PPE BRDCNF"
  23. WAIT
  24. END
  25.  
  26. :init
  27. IF (EXIST(fconf)) GOTO gone
  28. IF (!EXIST(chemin+fconf)) GOTO errconf
  29. LET fconf = chemin+fconf
  30. GOTO gone
  31.  
  32. :errconf
  33. PRINTLN "@X0FC@X0Ao@X02NFiGuRATiOn @X0Ff@X0AI@X02Le @X0FN@X0AO@X02t @X0FF@X0Ao@X02UnD @X0Fo@X0AN @X0FD@X0Ai@X02SK"
  34. WAIT
  35. END
  36.  
  37. ;****************************************************************************
  38. ;** range les lignes de txt du menu (fichier de configuration)
  39. ;****************************************************************************
  40.  
  41. :gone
  42. FOPEN 2,"PCBOARD.SYS",O_RD,S_DN
  43. FSEEK 2,18,1
  44. FREAD 2,CONNI,5
  45. FCLOSE 2
  46. FOPEN 1,fconf+LANGEXT(),O_RD,S_DN
  47. FGET 1,fich[1]              ;nom fich. cadre
  48. FGET 1,fich[2]              ; "  fich. barre stat
  49. FGET 1,fich[3]              ; "  fich. menu statique
  50. FGET 1,Minispeed
  51. FGET 1,Maincmd
  52. FGET 1,Nblgn
  53. FGET 1,MinLgn
  54. LET Curlgn = Minlgn
  55. FGET 1,Tabul
  56. TOKENIZE Tabul
  57. GETTOKEN Col[indice]
  58. WHILE (Col[indice]<>"") DO
  59.     INC indice
  60.     GETTOKEN Col[indice]
  61. ENDWHILE
  62.  
  63. FGET 1,Cnor
  64. FGET 1,Csel
  65. FGET 1,Cpri
  66. FGET 1,Carsec
  67. Carsec = Carsec+" "
  68. LET indice = 1
  69. WHILE (!(FERR(1))) DO
  70.     FGET 1,TabLis[indice]
  71.     IF (TabLis[indice] == "<EOL>") GOTO LABEL01
  72.     FGET 1,Prim[indice]
  73.     FGET 1,Nivsec[indice]
  74.     INC indice
  75. ENDWHILE
  76. FCLOSE 1
  77. GOTO ErrLis
  78.  
  79. :LABEL01
  80. FCLOSE 1
  81. Max = indice-1
  82. Nbcol = (Max-1)/Nblgn
  83.  
  84. ;************************************************************************
  85. ;** affiche le cadre et le statut
  86. ;************************************************************************
  87.  
  88. :LABEL02
  89. FOPEN 4,chemin+fich[2]+LANGEXT(),O_RD,S_DN
  90. IF (FERR(4)) THEN
  91.     GOTO errsta
  92. ELSE
  93.     FGET 4,stacol
  94.     FGET 4,Stalgn
  95.     FGET 4,keycol
  96.     FGET 4,kbuflen
  97.     FGET 4,keycoul
  98.     FGET 4,Statut
  99.     FCLOSE 4
  100. ENDIF
  101. FOR indice = 1 TO kbuflen
  102.     fillb = fillb + " "
  103. NEXT
  104. GETUSER
  105. IF (U_EXPERT) GOTO eslab    ; to see if xpert mode is on (=> no menu :)
  106. IF ( UPPER(CONNI) == "LOCAL" ) GOTO letsgo
  107. IF ( CONNI < MiniSpeed ) GOTO affmenu
  108. :letsgo
  109. CLS
  110. DISPSTR "%"+chemin+fich[1]+LANGEXT()
  111. ANSIPOS stacol,stalgn
  112. PRINT statut
  113.  
  114. ;******************************************************************
  115. ;** écrit les lignes
  116. ;******************************************************************
  117.  
  118. :LABEL03
  119. FOR j = 1 TO (Nbcol+1)
  120.     Curlgn = Minlgn
  121.     Curcol = j
  122.     FOR indice = 1 TO Nblgn
  123.         IF ( ((j-1)*NbLgn)+indice > Max) GOTO Endmenu
  124.         IF (CURSEC() >= NivSec[((j-1)*Nblgn)+indice]) THEN
  125.             ANSIPOS Col[CurCol], Curlgn
  126.             IF (TabLis[((j-1)*Nblgn)+indice] <> "") THEN
  127.                 PRINT Carsec+Cnor+TabLis[((j-1)*Nblgn)+indice]
  128.                 ANSIPOS Col[CurCol], Curlgn
  129.                 PRINT Carsec+Cpri+Prim[((j-1)*Nblgn)+indice]
  130.             ELSE PRINT ""
  131.             ENDIF
  132.         ELSE
  133.             ANSIPOS Col[CurCol], Curlgn
  134.             IF (TabLis[((j-1)*Nblgn)+indice] <> "") THEN
  135.                 PRINT "  "+Cnor+TabLis[((j-1)*Nblgn)+indice]
  136.                 ANSIPOS Col[CurCol], Curlgn
  137.                 PRINT "  "+Cpri+Prim[((j-1)*Nblgn)+indice]
  138.             ELSE PRINT ""
  139.             ENDIF
  140.         ENDIF
  141.         INC Curlgn
  142.     NEXT
  143. NEXT
  144. :Endmenu
  145. Tablis[Max+1] = ""
  146. ;initialise la sélection
  147. LET Curlgn = Minlgn                ;prendre les val. du fich. temp
  148. LET Curcol = 1                     ;pour le node en cours...
  149. IF (CURSEC() >= Nivsec[Curind]) THEN
  150.     IF (Tablis[curind]<>"") THEN
  151.         ANSIPOS col[Curcol],Curlgn
  152.         PRINT Carsec+Csel+Tablis[Curind]
  153.         ANSIPOS col[Curcol],Curlgn
  154.         PRINT Carsec+Cpri+Prim[1]
  155.     ELSE
  156.         WHILE ((Tablis[Curind]=="")&&(Curind<Max)) DO
  157.             INC Curind
  158.             INC Curlgn
  159.             IF (Curlgn>Nblgn) THEN
  160.                 INC Curcol
  161.                 Curlgn = 1
  162.             ENDIF
  163.         ENDWHILE
  164.         ANSIPOS col[Curcol],Curlgn
  165.         PRINT Carsec+Csel+Tablis[Curind]
  166.         ANSIPOS col[Curcol],Curlgn
  167.         PRINT Carsec+Cpri+Prim[1]
  168.     ENDIF
  169. ELSE
  170.     IF (Tablis[curind]<>"") THEN
  171.         ANSIPOS col[Curcol],Curlgn
  172.         PRINT "  "+Csel+Tablis[Curind]
  173.         ANSIPOS col[Curcol],Curlgn
  174.         PRINT "  "+Cpri+Prim[1]
  175.     ELSE
  176.         WHILE ((Tablis[curind]=="")&&(Curind<Max)) DO
  177.             INC curind
  178.             INC Curlgn
  179.             IF (Curlgn>Nblgn) THEN
  180.                 INC Curcol
  181.                 Curlgn = 1
  182.             ENDIF
  183.         ENDWHILE
  184.         ANSIPOS col[Curcol],Curlgn
  185.         PRINT "  "+Csel+Tablis[Curind]
  186.         ANSIPOS col[Curcol],Curlgn
  187.         PRINT "  "+Cpri+Prim[1]
  188.     ENDIF
  189. ENDIF
  190.  
  191. ;******************************************************************
  192. ;** lit la touche appuyée
  193. ;******************************************************************
  194.  
  195. :readtouche
  196. LET touche = ""
  197. LET Touche = UPPER(INKEY())
  198. IF ( (Touche == "UP") | (Touche == "8") ) THEN
  199.     GOSUB Uplab
  200. ELSEIF ( (Touche == "DOWN") | (Touche == "2") ) THEN
  201.     GOSUB dwlab
  202. ELSEIF ( (Touche == "RIGHT") | (Touche == "6") ) THEN
  203.     GOSUB rglab
  204. ELSEIF ( (Touche == "LEFT") | (Touche == "4") ) THEN
  205.     GOSUB lflab
  206. ELSEIF (Touche == CHR(13)) THEN
  207.     GOSUB crlab
  208. ELSEIF (Touche == CHR(8)) THEN
  209.     GOSUB bklab
  210. ELSEIF (Touche == CHR(27)) THEN
  211.     GOSUB eslab
  212. ELSEIF (Touche <> "") THEN
  213.     GOSUB autrelab
  214. ENDIF
  215. GOTO readtouche
  216.  
  217. ;******************************************************************
  218. ;** affiche une erreur pour le fich. de conf.
  219. ;******************************************************************
  220.  
  221. :ErrLis
  222. PRINTLN Touche
  223. CLS
  224. PRINTLN "@X0FE@X0Ar@X02RoR @X0F: @X0FC@X0Aa@X02N'T @X0FR@X0Ae@X02Ad @X0Ft@X0AH@X02E @X0Fc@X0AO@X02NfIGuRAtiOn @X0Ff@X0AI@X02lE"
  225. WAIT
  226. END
  227.  
  228. ;******************************************************************
  229. ;** affiche une erreur pour le fich. de barre de statut
  230. ;******************************************************************
  231.  
  232. :Errsta
  233. PRINTLN Touche
  234. CLS
  235. PRINTLN "@X0F@X0FE@X0Ar@X02RoR @X0F: @X0FC@X0Aa@X02N'T @X0FR@X0Ae@X02Ad @X0Ft@X0AH@X02E @X0Fs@X0AT@X02AtUs @X0Fb@X0AA@X02r @X0Ff@X0AI@X02lE"
  236. WAIT
  237. END
  238.  
  239. ;******************************************************************
  240. ;** gère la touche UP ou 8
  241. ;******************************************************************
  242.  
  243. :Uplab
  244. ANSIPOS Keycol,stalgn
  245. PRINT fillb
  246. LET Touche = ""
  247. IF (CurLgn-1<MinLgn) RETURN
  248.  
  249. LET indice = curind-1
  250. LET j = curlgn-1
  251. WHILE ( Tablis[indice]=="" ) DO
  252.     DEC indice
  253.     DEC j
  254.     IF (j < MinLgn ) RETURN
  255. ENDWHILE
  256.  
  257. IF (CURSEC() >= NivSec[Curind]) THEN
  258.     ANSIPOS col[Curcol], Curlgn
  259.     IF (Tablis[curind]<>"") THEN
  260.         PRINT Carsec+Cnor+Tablis[Curind]
  261.         ANSIPOS col[Curcol], Curlgn
  262.         PRINT Carsec+Cpri+Prim[Curind]
  263.     ELSE
  264.         ANSIPOS col[Curcol],Curlgn
  265.         PRINT Carsec+Csel+Tablis[Curind]
  266.         ANSIPOS col[Curcol],Curlgn
  267.         PRINT Carsec+Cpri+Prim[1]
  268.     ENDIF
  269. ELSE
  270.     IF (Tablis[curind]<>"") THEN
  271.         ANSIPOS col[Curcol], Curlgn
  272.         PRINT "  "+Cnor+Tablis[Curind]
  273.         ANSIPOS col[Curcol], Curlgn
  274.         PRINT "  "+Cpri+Prim[Curind]
  275.     ELSE
  276.         ANSIPOS col[Curcol],Curlgn
  277.         PRINT "  "+Csel+Tablis[Curind]
  278.         ANSIPOS col[Curcol],Curlgn
  279.         PRINT "  "+Cpri+Prim[1]
  280.     ENDIF
  281. ENDIF
  282.  
  283. LET indice = curind-1
  284. LET j = curlgn-1
  285. WHILE ( Tablis[indice]=="" ) DO
  286.     DEC indice
  287.     DEC j
  288.     IF (j < MinLgn ) RETURN
  289. ENDWHILE
  290.  
  291. LET CurLgn = j
  292. LET Curind = indice
  293. ANSIPOS col[Curcol],Curlgn
  294. IF (CURSEC() >= NivSec[Curind]) THEN
  295.     PRINT Carsec+Csel+Tablis[Curind]
  296.     ANSIPOS col[Curcol], Curlgn
  297.     PRINT Carsec+Cpri+Prim[Curind]
  298. ELSE
  299.     PRINT "  "+Csel+Tablis[Curind]
  300.     ANSIPOS col[Curcol], Curlgn
  301.     PRINT "  "+Cpri+Prim[Curind]
  302. ENDIF
  303. LET Tmpkey = ""
  304. RETURN
  305.  
  306. ;******************************************************************
  307. ;** gère la touche DOWN ou 2
  308. ;******************************************************************
  309.  
  310. :Dwlab
  311. ANSIPOS Keycol,stalgn
  312. PRINT fillb
  313. LET Touche = ""
  314. IF ((Curind +1)>Max) RETURN
  315. IF (CurLgn > NbLgn+Minlgn-2) RETURN
  316.  
  317. LET indice = curind+1
  318. LET j = curlgn+1
  319. WHILE ( Tablis[indice]=="" ) DO
  320.     INC indice
  321.     INC j
  322.     IF (j > NbLgn+Minlgn-1 ) RETURN
  323. ENDWHILE
  324.  
  325. IF (CURSEC() >= NivSec[Curind]) THEN
  326.     ANSIPOS Col[Curcol], Curlgn
  327.     PRINT Carsec+Cnor+Tablis[Curind]
  328.     ANSIPOS col[Curcol], Curlgn
  329.     PRINT Carsec+Cpri+Prim[Curind]
  330. ELSE
  331.     ANSIPOS Col[Curcol], Curlgn
  332.     PRINT "  "+Cnor+Tablis[Curind]
  333.     ANSIPOS col[Curcol], Curlgn
  334.     PRINT "  "+Cpri+Prim[Curind]
  335. ENDIF
  336.  
  337. LET indice = curind+1
  338. LET j = curlgn+1
  339. WHILE ( Tablis[indice]=="" ) DO
  340.     INC indice
  341.     INC j
  342.     IF (j > NbLgn+Minlgn-1 ) RETURN
  343. ENDWHILE
  344.  
  345. LET Curlgn = j
  346. LET Curind = indice
  347. ANSIPOS Col[Curcol],Curlgn
  348. IF (CURSEC() >= NivSec[Curind]) THEN
  349.     PRINT Carsec+Csel+Tablis[Curind]
  350.     ANSIPOS col[Curcol], Curlgn
  351.     PRINT Carsec+Cpri+Prim[Curind]
  352. ELSE
  353.     PRINT "  "+Csel+Tablis[Curind]
  354.     ANSIPOS col[Curcol], Curlgn
  355.     PRINT "  "+Cpri+Prim[Curind]
  356. ENDIF
  357. LET Tmpkey = ""
  358. RETURN
  359.  
  360. ;******************************************************************
  361. ;** gère la touche RIGHT ou 6
  362. ;******************************************************************
  363.  
  364. :rglab
  365. ANSIPOS Keycol,stalgn
  366. PRINT fillb
  367. LET Touche = ""
  368. IF (CurCol>Nbcol) RETURN
  369. IF (Tablis[Curind+Nblgn] == "") THEN
  370.     LET indice = Curind+Nblgn
  371.     LET j = Curlgn
  372.     WHILE (Tablis[indice]=="") DO
  373.         DEC j
  374.         DEC indice
  375.         IF (j<Minlgn) GOTO rplab
  376.     ENDWHILE
  377.     GOTO rolab
  378. :rplab
  379.     LET indice = Curind+Nblgn
  380.     LET j = Curlgn
  381.     WHILE (Tablis[indice]=="") DO
  382.         INC j
  383.         INC indice
  384.         IF (j>Minlgn+Nblgn-1) RETURN
  385.     ENDWHILE
  386. ENDIF
  387. :rolab
  388. IF (CURSEC() >= NivSec[Curind]) THEN
  389.     ANSIPOS Col[Curcol],Curlgn
  390.     PRINT Carsec+Cnor+Tablis[Curind]
  391.     ANSIPOS col[Curcol], Curlgn
  392.     PRINT Carsec+Cpri+Prim[Curind]
  393. ELSE
  394.     ANSIPOS Col[Curcol],Curlgn
  395.     PRINT "  "+Cnor+Tablis[Curind]
  396.     ANSIPOS col[Curcol], Curlgn
  397.     PRINT "  "+Cpri+Prim[Curind]
  398. ENDIF
  399.  
  400. LET indice = Curind+Nblgn
  401. LET j = Curlgn
  402. WHILE (Tablis[indice]=="") DO
  403.     DEC j
  404.     DEC indice
  405.     IF (j<Minlgn) GOTO rplab02
  406. ENDWHILE
  407. GOTO rolab02
  408. :rplab02
  409. LET indice = Curind+Nblgn
  410. LET j = Curlgn
  411. WHILE (Tablis[indice]=="") DO
  412.     INC j
  413.     INC indice
  414.     IF (j>Minlgn+Nblgn-1) RETURN
  415. ENDWHILE
  416. :rolab02
  417.  
  418. INC Curcol
  419. LET Curlgn = j
  420. LET Curind = indice
  421. ANSIPOS Col[Curcol],Curlgn
  422. IF (CURSEC() >= NivSec[Curind]) THEN
  423.     PRINT Carsec+Csel+Tablis[Curind]
  424.     ANSIPOS col[Curcol], Curlgn
  425.     PRINT Carsec+Cpri+Prim[Curind]
  426. ELSE
  427.     PRINT "  "+Csel+Tablis[Curind]
  428.     ANSIPOS col[Curcol], Curlgn
  429.     PRINT "  "+Cpri+Prim[Curind]
  430. ENDIF
  431. LET Tmpkey = ""
  432. RETURN
  433.  
  434. ;******************************************************************
  435. ;** gère la touche LEFT ou 4
  436. ;******************************************************************
  437.  
  438. :lflab
  439. ANSIPOS Keycol,stalgn
  440. PRINT fillb
  441. LET Touche = ""
  442. IF (CurCol-1<1) RETURN
  443. IF (Tablis[Curind-Nblgn] == "") THEN
  444.     LET indice = Curind-Nblgn
  445.     LET j = Curlgn
  446.     WHILE (Tablis[indice]=="") DO
  447.         DEC j
  448.         DEC indice
  449.         IF (j<Minlgn)GOTO lplab
  450.     ENDWHILE
  451.     GOTO lolab
  452. :lplab
  453.     LET indice = Curind-Nblgn
  454.     LET j = Curlgn
  455.     WHILE (Tablis[indice]=="") DO
  456.         INC j
  457.         INC indice
  458.         IF (j>Minlgn+Nblgn-1) RETURN
  459.     ENDWHILE
  460. ENDIF
  461. :lolab
  462. IF (CURSEC() >= NivSec[Curind]) THEN
  463.     ANSIPOS Col[Curcol],Curlgn
  464.     PRINT Carsec+Cnor+Tablis[Curind]
  465.     ANSIPOS col[Curcol], Curlgn
  466.     PRINT Carsec+Cpri+Prim[Curind]
  467. ELSE
  468.     ANSIPOS Col[Curcol],Curlgn
  469.     PRINT "  "+Cnor+Tablis[Curind]
  470.     ANSIPOS col[Curcol], Curlgn
  471.     PRINT "  "+Cpri+Prim[Curind]
  472. ENDIF
  473.  
  474. LET indice = Curind-Nblgn
  475. LET j = Curlgn
  476. WHILE (Tablis[indice]=="") DO
  477.     DEC j
  478.     DEC indice
  479.     IF (j<Minlgn)GOTO lplab02
  480. ENDWHILE
  481. GOTO lolab02
  482. :lplab02
  483. LET indice = Curind-Nblgn
  484. LET j = Curlgn
  485. WHILE (Tablis[indice]=="") DO
  486.     INC j
  487.     INC indice
  488.     IF (j>Minlgn+Nblgn-1) RETURN
  489. ENDWHILE
  490. :lolab02
  491.  
  492. DEC Curcol
  493. LET Curlgn = j
  494. LET Curind = indice
  495. ANSIPOS Col[Curcol],Curlgn
  496. IF (CURSEC() >= NivSec[Curind]) THEN
  497.     PRINT Carsec+Csel+Tablis[Curind]
  498.     ANSIPOS col[Curcol], Curlgn
  499.     PRINT Carsec+Cpri+Prim[Curind]
  500. ELSE
  501.     PRINT "  "+Csel+Tablis[Curind]
  502.     ANSIPOS col[Curcol], Curlgn
  503.     PRINT "  "+Cpri+Prim[Curind]
  504. ENDIF
  505. LET Tmpkey = ""
  506. RETURN
  507.  
  508. ;******************************************************************
  509. ;** gère la touche RC
  510. ;******************************************************************
  511.  
  512. :crlab
  513. LET Touche = ""
  514. LET Tmpkey = ""
  515. IF (CURSEC() >= NivSec[Curind]) THEN
  516.     CLS
  517.     Touche = Prim[Curind]
  518.     KBDSTUFF Touche
  519. ELSE RETURN
  520. ENDIF
  521. END
  522.  
  523. ;******************************************************************
  524. ;** gère la touche ESC
  525. ;******************************************************************
  526.  
  527. :eslab
  528. CLS
  529. ANSIPOS stacol,stalgn
  530. PRINT statut
  531. LET Touche = ""
  532. LET Tmpkey = ""
  533. ANSIPOS 1,2
  534. PRINTLN "@X09≡ @X0Fc@X09A@X01RrIEr @X0FS@X09p@X01EeD : @X0D"+CONNI+" @X09≡ @X0Fb@X09Y@X01tES @X0Fc@X09R@X01EdItS :  @X0D@BYTECREDIT@"
  535. INPUTSTR Maincmd,comm,08h,40,MASK_ASCII(),110h
  536. IF (UPPER(comm) == "") THEN
  537.     KBDSTUFF "^M"
  538.     END
  539. ENDIF
  540. TOKENIZE comm
  541. GETTOKEN tmptok
  542. GOSUB afflog
  543. CLS
  544. FOR indice = 1 TO Max
  545.     IF (UPPER(tmptok) == Prim[indice]) GOTO esTrouve
  546. NEXT
  547. GOTO esNtrouve
  548. :esTrouve
  549. IF (CURSEC() >= Nivsec[indice]) THEN
  550.     KBDSTUFF UPPER(comm)
  551.     END
  552. ELSE
  553.     PRINTLN "@X0FI@X0Cn@X04SUfFIsAnT @X0Fs@X0CE@X04CuRiTy @X0FL@X0Ce@X04VEl !"
  554.     WAIT
  555.     END
  556. ENDIF
  557. :esNtrouve
  558. KBDSTUFF UPPER(comm)
  559. END
  560.  
  561. ;******************************************************************
  562. ;** gère la touche BACKSPACE
  563. ;******************************************************************
  564.  
  565. :bklab
  566. ANSIPOS stacol,stalgn
  567. PRINT statut
  568. LET Touche = ""
  569. LET Tmpkey = ""
  570. ANSIPOS Keycol,Stalgn
  571. PRINT Keycoul+Tmpkey
  572. RETURN
  573.  
  574. ;******************************************************************
  575. ;** gère les autres touches
  576. ;******************************************************************
  577.  
  578. :autrelab
  579. Tmpkey = Tmpkey + Touche
  580. ANSIPOS Keycol,Stalgn
  581. PRINT ""
  582. ANSIPOS Keycol,Stalgn
  583. PRINT KeyCoul+Tmpkey
  584. LET Touche = ""
  585. FOR indice = 1 TO Max
  586.     IF (Tmpkey == Prim[indice]) GOTO Trouve
  587. NEXT
  588. GOTO Ntrouve
  589.  
  590. :Trouve
  591. IF (Tablis[indice] == "") RETURN
  592. IF (CURSEC() >= NivSec[Curind]) THEN
  593.     ANSIPOS Col[Curcol],Curlgn
  594.     PRINT Carsec+Cnor+Tablis[Curind]
  595.     ANSIPOS col[Curcol], Curlgn
  596.     PRINT Carsec+Cpri+Prim[Curind]
  597. ELSE
  598.     ANSIPOS Col[Curcol],Curlgn
  599.     PRINT "  "+Cnor+Tablis[Curind]
  600.     ANSIPOS col[Curcol], Curlgn
  601.     PRINT "  "+Cpri+Prim[Curind]
  602. ENDIF
  603. LET Curind = indice
  604. Curcol = ((indice+Nblgn-1)/NbLgn)
  605. Curlgn = Minlgn +indice -1 -((Curcol-1)*Nblgn)
  606. ANSIPOS col[Curcol], Curlgn
  607. IF (CURSEC() >= NivSec[Curind]) THEN
  608.     PRINT Carsec+Csel+Tablis[Curind]
  609.     ANSIPOS col[Curcol], Curlgn
  610.     PRINT Carsec+Cpri+Prim[Curind]
  611. ELSE
  612.     PRINT "  "+Csel+Tablis[Curind]
  613.     ANSIPOS col[Curcol], Curlgn
  614.     PRINT "  "+Cpri+Prim[Curind]
  615. ENDIF
  616. RETURN
  617.  
  618. :Ntrouve
  619. ANSIPOS Col[Curcol],Curlgn
  620. RETURN
  621.  
  622. ;******************************************************************
  623. ;** affiche le menu statique
  624. ;******************************************************************
  625.  
  626. :affmenu
  627. CLS
  628. DISPSTR "%"+chemin+fich[3]+LANGEXT()
  629. INPUTSTR Maincmd,comm,08h,40,MASK_ASCII(),10h
  630. IF (UPPER(comm) == "") THEN
  631.     KBDSTUFF "^M"
  632.     END
  633. ENDIF
  634. TOKENIZE comm
  635. GETTOKEN tmptok
  636. GOSUB afflog
  637. CLS
  638. FOR indice = 1 TO Max
  639.     IF (UPPER(tmptok) == Prim[indice]) GOTO stTrouve
  640. NEXT
  641. GOTO stNtrouve
  642. :stTrouve
  643. IF (CURSEC() >= Nivsec[indice]) THEN
  644.     KBDSTUFF UPPER(comm)
  645.     END
  646. ELSE
  647.     PRINTLN "@X0FI@X0Cn@X04SUfFIsAnT @X0Fs@X0CE@X04CuRiTy @X0FL@X0Ce@X04VEl !"
  648.     WAIT
  649.     END
  650. ENDIF
  651. :stNtrouve
  652. KBDSTUFF UPPER(comm)
  653. END
  654.  
  655. ;******************************************************************
  656. ;** affiche le logo
  657. ;******************************************************************
  658.  
  659. :afflog
  660. NEWLINE
  661. ANSIPOS 32,GETY()
  662. PRINTLN "@X0Ft@X09R@X01iLoXy @X0E≡ @X0FI@X09k@X01C/95"
  663. DELAY 1
  664. RETURN
  665.