home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d5xx / d583 / aroff.lha / ARoff / Sources / aroff.doc.src < prev    next >
Text File  |  1992-01-04  |  20KB  |  609 lines

  1. .ll 76
  2. .lt 76
  3. .pl 66
  4. .nh
  5. \" numéro de paragraphe (registre)
  6. .nr PN 0 1
  7. \"------------- début de paragraphe
  8. .de PR
  9. .nf
  10. .ne 5
  11. .fs u1
  12. \\n+(PN. \\$1
  13. .fs n
  14. .fi
  15.  
  16. ..
  17. \"------- description d'une requête
  18. .de RQ
  19.  
  20. .ne 3
  21. .ti -4
  22. \\$1  \\$2
  23. .br
  24. Syntaxe\\ \\ \\ \\ \\ :\\ \\$1 \\$3
  25. .br
  26. Description\\ :\\ \\
  27. ..
  28. .de SP
  29. .br
  30. .ti -16
  31. ..
  32. \" entête de page
  33. .de HD
  34. .ls 2
  35. .tl "ARoff"Manuel de référence"Page \\n(pn"
  36. .ls 1
  37. ..
  38. \"-------- début de note importante
  39. .de NI
  40.  
  41. .ne 4
  42. .ce
  43. NOTE IMPORTANTE :
  44.  
  45. .in 8
  46. .ll -8
  47. ..
  48. \"---------- fin de note importante
  49. .de FN
  50.  
  51. .in
  52. .ll
  53. ..
  54. .wh 1 HD
  55. \"--------------------------- TEXTE
  56.  
  57. .PR Avertissement
  58. .ti +8
  59. Ce manuel décrit la version 1.12 de l'utilitaire ARoff. Ce programme est
  60. placé dans le domaine public, avec autorisation de le copier librement et
  61. de le diffuser par n'importe quels moyens, à condition que le produit soit
  62. diffusé dans son intégralité, et sans aucune modification.
  63. ARoff est (c)1991 par Denis GOUNELLE, toute utilisation commerciale ou
  64. vente de ce programme sans autorisation écrite est STRICTEMENT INTERDITE.
  65. .ti +8
  66. Malgré de nombreux tests, je ne peux garantir qu'ARoff ne contient aucune
  67. erreur. VOUS UTILISEZ CE PROGRAMME A VOS RISQUES ET PERILS. Je ne pourrai
  68. en aucun cas être tenu responsable de tout dommage, direct ou indirect,
  69. résultant de l'utilisation d'ARoff.
  70.  
  71. .PR Introduction
  72. .ti +8
  73. ARoff est un programme de formatage de texte puissant et complet, avec
  74. registres, macros, etc... : il prend en entrée un fichier comprenant à
  75. la fois le texte et les commandes de formatage, et produit en sortie le
  76. texte mis en page comme vous l'avez demandé.
  77. .ti +8
  78. ARoff peut être considéré comme une sorte de portage de l'utilitaire
  79. "nroff", que l'on trouve habituellement sous système UNIX. Les deux
  80. programmes sont cependant assez différents, et il y a sûrement beaucoup
  81. de choses que ARoff ne sait pas faire.
  82.  
  83. .ti +8
  84. La syntaxe d'appel de ARoff est la suivante :
  85.  
  86. .ce
  87. aroff [-wpile] [-l] <nom de fichier>
  88.  
  89. <nom de fichier> est le nom du fichier que vous voulez traiter. Si vous
  90. indiquez "-" comme nom, l'entrée standard sera utilisée.
  91. .NI
  92. La version actuelle de ARoff ne peut fonctionner correctement si
  93. elle est utilisée en sortie de pipe (e.g. "cat toto | aroff -").
  94. .FN
  95. .br
  96. .ti +8
  97. L'option -w vous permet d'augmenter la taille de la pile de travail
  98. allouée par ARoff. Par défaut cette taille est de 256 emplacements
  99. de 8 octets chacun, mais il peut arriver que cela ne suffise pas : vous
  100. obtiendrez alors un message "Error 2 in file pile.c at line 58". Pour
  101. faire passer la taille de la pile à 300 emplacements (par exemple),
  102. appelez ARoff par "aroff -w300 <nom de fichier>".
  103. .ti +8
  104. Si vous indiquez l'option -l, le fichier d'entrée sera chargé entièrement
  105. en mémoire avant d'être traité. Sur Amiga, ceci peut rendre le traitement
  106. deux à trois fois plus rapide dans certains cas, mais est à déconseiller si
  107. vous avez peu de mémoire libre.
  108.  
  109. .ti +8
  110. Si vous appelez ARoff sans arguments (ou avec des arguments incorrects)
  111. vous obtiendrez un message indiquant la version du programme et la
  112. syntaxe à respecter pour les arguments.
  113.  
  114. .PR Principe\ de\ fonctionnement
  115. .ti +8
  116. Comme "nroff", ARoff assemble automatiquement les lignes de texte pour
  117. obtenir une ligne suffisamment longue. Cela veut dire que votre texte
  118. est vu comme une suite de mots que ARoff se contente de recopier,
  119. jusqu'à ce que la taille d'une ligne de sortie soit atteinte, ou que
  120. vous provoquiez la fin de l'assemblage (soit par une requête, soit par
  121. une ligne vide). Les requêtes suivantes provoquent automatiquement une
  122. fin de l'assemblage :
  123. .nf
  124. .in 16
  125.  
  126. bp\tnouvelle page
  127. br\tnouvelle ligne
  128. ce\tcentre la(les) ligne(s) suivante(s)
  129. fi\tactivation du mode "assemblage"
  130. nf\tdésactivation du mode "assemblage"
  131. sp\tsaut de ligne
  132. in\tindentation
  133. ti\tindentation temporaire
  134.  
  135. .in
  136. .fi
  137. .ti +8
  138. Une fois cette ligne assemblée, ARoff effectue un ajustement, suivant
  139. le mode que vous avez indiqué : centrage, justification, cadrage à
  140. droite ou à gauche. Le résultat constitue une ligne de sortie.
  141. .ti +8
  142. Les commandes de formatage (ou requêtes) doivent être indiquées sur
  143. une ligne à part, commençant par un point. Le nom de la requête suit
  144. immédiatement, et fait exactement deux caractères. Viennent ensuite les
  145. arguments éventuels de la requête.
  146. Pour utiliser une des requêtes ci-dessus sans provoquer de fin
  147. d'assemblage, utilisez le caractère "quote simple" à la place du
  148. point (e.g. : "'ti -3" au lieu de ".ti -3").
  149.  
  150. .PR Liste\ des\ requêtes\ courantes
  151. .ti +8
  152. Dans tout ce qui suit, N désigne un entier positif, et ±N désigne soit
  153. un entier positif (spécification d'une valeur précise), soit le signe
  154. plus suivi d'un entier positif (spécification d'une incrémentation),
  155. soit enfin le signe moins suivi d'un entier positif (spécification
  156. d'une décrémentation).
  157. .in 8
  158. .RQ ab ABort message
  159. affiche le message indiqué, vide le tampon de sortie et termine.
  160. .RQ ad ADjust [mode]
  161. change le mode d'ajustement des lignes. Si vous n'indiquez pas
  162. d'argument, la valeur précédente est reprise. Les valeurs de mode sont :
  163. .nf
  164.  
  165. \tl\tcadrage à gauche
  166. \tr\tcadrage à droite
  167. \tc\tcentrage
  168. \tb\tjustification
  169. .fi
  170. .RQ bp Begin\ Page [N]
  171. provoque un saut de page. La page suivante aura le numéro N si
  172. un argument est indiqué.
  173. .RQ br BReak
  174. provoque un saut de ligne. L'assemblage de la ligne courante est
  175. interrompu, et cette ligne est imprimée sans ajustement.
  176. .RQ ce CEnter [N]
  177. centre la ligne suivante, ou les N lignes suivantes si un argument est
  178. indiqué.
  179. .RQ ex EXit
  180. vide le tampon de sortie et termine.
  181. .RQ fi FIll
  182. active l'assemblage des lignes.
  183. .RQ fs Font\ Style style
  184. modifie le style des caractères. La chaine "style" est une combinaison
  185. quelconque des spécifications suivantes :
  186.  
  187. .nf
  188. \tb0\tfin de caractères gras
  189. \tb1\tdébut de caractères gras
  190. \ti0\tfin de caractères italiques
  191. \ti1\tdébut de caractères italiques
  192. \tu0\tfin de caractères soulignés
  193. \tu1\tdébut de caractères soulignés
  194. \tn\tretour aux caractères normaux
  195. .fi
  196. .RQ in INdent [±N]
  197. change la marge gauche. Sans argument, la valeur précédente est reprise.
  198. .RQ ll Line\ Length [±N]
  199. change la longueur des lignes de sortie (indentation comprise). Sans argument,
  200. la valeur précédente est reprise.
  201. .RQ ls Line\ Spacing [±N]
  202. change l'espacement des lignes de sortie. Sans argument, la valeur
  203. précédente est reprise.
  204. .RQ lt Title\ Length [±N]
  205. change la longueur du titre (voir requête "tl"). Sans argument, la valeur
  206. précédente est reprise.
  207. .RQ na No\ Adjusting
  208. désactive l'ajustement des lignes en sortie.
  209. .RQ ne NEed [N]
  210. provoque un saut de page s'il reste moins de N lignes (1 si aucun
  211. argument n'est indiqué) avant la fin de la page ou la prochaine
  212. trappe.
  213. .RQ nf No\ Filling
  214. désactive l'assemblage des lignes.
  215. .RQ nm line\ NuMbering [±num\ int\ spc\ idt]
  216. active la numérotation des lignes. La numérotation commence au numero "num",
  217. et se fera toutes les "int" lignes (1 par défaut). Il y aura "spc" espaces
  218. (1 par défaut) entre les numéros et le texte, et "idt" espaces (0 par
  219. défaut) entre la marge et les numéros. Sans arguments, la numérotation
  220. est désactivée. Un argument non numérique est considéré comme manquant.
  221. Un argument manquant n'est pas modifié.
  222. .RQ nn No\ line\ Numbering [N]
  223. ne numérote pas les N lignes suivantes, ou la ligne suivante si
  224. aucun argument n'est indiqué.
  225. .RQ pl Page\ Length [±N]
  226. change le nombre de lignes par page. Sans argument, la valeur par défaut
  227. est reprise.
  228. .RQ pn Page\ Number ±N
  229. change le numéro de la prochaine page.
  230. .RQ po Page\ Offset [±N]
  231. change la marge gauche pour tout le document (différent de l'indentation).
  232. Sans argument, la valeur précedente est reprise.
  233. .RQ so SOurce fichier
  234. insère le contenu du fichier indiqué.
  235. .RQ sp SPace [N]
  236. insère N (1 par défaut) lignes blanches.
  237. .RQ ta TAbulation N
  238. positionne les arrêts de tabulations aux colonnes 1, N+1, 2N+1, etc...
  239. .RQ tc Tab\ Character [c]
  240. indique le caractère à utiliser lors de l'extension des tabulations. Sans
  241. argument, la valeur par défaut est reprise.
  242. .RQ ti Temporary\ Indent N
  243. indente la ligne suivante de la valeur indiquée.
  244. .RQ tl TitLe 'a'b'c'
  245. imprime un texte en trois parties : "a" est cadré à gauche, "b" est centré,
  246. et "c" est cadré à droite. N'importe quel caractère peut être utilisé
  247. pour séparer les trois parties, et une ou deux parties peuvent être vides.
  248. .RQ tm Terminal\ Message message
  249. affiche le message indiqué.
  250. .RQ tr TRanslate abcd...
  251. indique une conversion en sortie : a est changé en b, c est changé en d,
  252. etc... Si un nombre impair de caractères est indiqué, le dernier sera
  253. changé en un espace.
  254. .RQ ts Title\ Style str
  255. indique le style de caractères du titre. "str" est n'importe quelle
  256. combinaison de :
  257.  
  258. .nf
  259. \tb\tpassage en gras
  260. \ti\tpassage en italiques
  261. \tu\tpassage en souligné
  262. .fi
  263. .in
  264.  
  265. .PR Le\ format\ des\ lignes
  266. .ti +8
  267. ARoff reconnait les constructions suivantes :
  268.  
  269. .fi
  270. .in 24
  271. .SP
  272. \\t\t\ttabulation
  273. .SP
  274. \\<espace>\tespace fixe
  275. .SP
  276. \\<newline>\tretour à la ligne à ignorer
  277. .SP
  278. \\"\t\tle reste de la ligne est un commentaire
  279. .SP
  280. \\!\t\tle reste de la ligne est à lire sans aucune interprétation,
  281. et à envoyer sur la sortie sans ajustement (ne peut être utilisé qu'en
  282. début de ligne)
  283. .SP
  284. \\n\t\tinsérer la valeur d'un registre
  285. .SP
  286. \\*\t\tinsérer la valeur d'une chaine
  287. .in
  288.  
  289. Il vous est très vivement conseillé de ne pas mettre de tabulations dans
  290. votre texte : utilisez plutôt la séquence "\\t".
  291.  
  292. .ti +8
  293. Les registres permettent de stocker des valeurs numériques entières. On
  294. manipule les registres à l'aide des requêtes suivantes :
  295. .in 8
  296. .RQ nr New\ Register nom\ val\ [inc]
  297. crée le registre "nom" et lui donne la valeur initiale "val". Si l'argument
  298. "inc" est indiqué, il est mémorisé comme valeur de l'incrément du
  299. registre. Le nom peut faire un ou deux caractères. Les arguments "val" et
  300. "inc" sont des entiers positifs.
  301. .RQ rr Remove\ Register nom
  302. détruit le registre "nom".
  303. .in
  304.  
  305. L'utilisation des registres se fait de la manière suivante :
  306. .nf
  307. .in 8
  308.  
  309. \\nx\tinsère la valeur du registre x
  310. \\n+x\tincrémente puis insère la valeur du registre x
  311. \\n-x\tdécrémente puis insère la valeur du registre x
  312. \\n(xx\tinsère la valeur du registre xx
  313. \\n+(xx\tincrémente puis insère la valeur du registre xx
  314. \\n-(xx\tdécrémente puis insère la valeur du registre xx
  315.  
  316. .ti -8
  317. Les registres suivants sont pré-définis par ARoff :
  318.  
  319. dw\tjour de la semaine (1 à 7)
  320. dy\tjour du mois (1 à 31)
  321. mo\tmois (1 à 12)
  322. yr\tannée (deux chiffres)
  323. hr\theure (0 à 23)
  324. mn\tminutes (0 à 59)
  325. sc\tsecondes (0 à 59)
  326. pn\tnuméro de la page courante (en sortie)
  327. il\tnuméro de la ligne courante (en sortie)
  328. ol\tnuméro de la ligne courante (en entrée)
  329.  
  330. .fi
  331. .in
  332. Notez que les registres donnant la date et l'heure sont initialisés une
  333. fois pour toutes lors de l'initialisation de ARoff, et ne sont pas mis à
  334. jour par la suite.
  335.  
  336. .ti +8
  337. Les chaines permettent de stocker des chaines de caractères d'au plus 255
  338. caractères. On manipule les chaines à l'aide des requêtes suivantes\ :
  339. .in 8
  340. .RQ ds Define\ String nom\ chaine
  341. crée une chaine de nom indiqué, et lui affecte la valeur "chaine". Pour
  342. conserver les espaces en début de chaine, il suffit de mettre un guillemet
  343. avant le premier espace. Le nom peut faire un ou deux caractères. Si la
  344. chaine "nom" existe déjà, ARoff se contente de changer sa valeur.
  345. .RQ as Append\ String nom\ chaine
  346. ajoute la chaine indiquée à la chaine "nom". Cette chaine est créée si
  347. elle n'existe pas. Pour conserver les espaces en début de chaine, il suffit
  348. de mettre un guillemet avant le premier espace.
  349. .RQ rs Remove\ String nom
  350. détruit la chaine indiquée.
  351. .in
  352.  
  353. Les chaines s'utilisent de la manière suivante :
  354.  
  355. .in 8
  356. \\*x\tinsère la valeur de la chaine x
  357. .br
  358. \\*(xx\tinsère la valeur de la chaine xx
  359. .in
  360.  
  361. La chaine "fn" est définie automatiquement par ARoff, et contient le nom
  362. du fichier en cours de traitement.
  363.  
  364. .PR Les\ macros
  365. .ti +8
  366. Les macros permettent de stocker et de rappeler facilement une serie de
  367. requêtes et/ou un grand morceau de texte. On manipule les macros à
  368. l'aide des requêtes suivantes :
  369. .in 8
  370. .RQ de DEfine\ macro nom
  371. commence la définition de la macro "nom". Si cette macro existe déjà,
  372. son contenu est effacé. Les lignes suivantes sont mémorisées en tant que
  373. définition, jusqu'à ce qu'une ligne commence par ".." (deux points).
  374. .RQ am Append\ to\ Macro nom
  375. ajoute les lignes suivantes (jusqu'à ce qu'une ligne commence  par "..") à
  376. la définition de la macro "nom". Si cette macro n'existe pas, elle est
  377. créée.
  378. .RQ rm Remove\ Macro nom
  379. détruit la macro indiquée.
  380. .RQ pm Print\ Macro [macro]
  381. affiche la définition de la macro indiquée, ou de toutes les macros si
  382. aucun argument n'est spécifié.
  383.  
  384. .in
  385. L'appel d'une macro se fait exactement de la même manière qu'une
  386. requête\ : un point en début de ligne, suivi du nom de la macro. On peut
  387. passer au plus neuf arguments à une macro. Ils sont accessibles dans la
  388. définition par \\$1, \\$2, ... \\$9. Le nombre d'arguments peut être connu
  389. en consultant le registre ".$". Le séparateur d'arguments est l'espace.
  390. Si vous voulez passer un argument comprenant un espace, ajoutez un "\\"
  391. devant cet espace. Si vous voulez passer un argument comprenant un espace
  392. fixe, ajoutez trois "\\" devant cet espace.
  393. .NI
  394. Lors de la lecture de la définition d'une macro, le texte est interprété
  395. de la même façon que d'habitude. Pensez donc à doubler les "\\" devant les
  396. appels de registres, de chaines ou d'arguments, si vous voulez différer
  397. leur interprétation à l'exécution de la macro.
  398. .FN
  399. Contrairement à "nroff", il est d'interdit d'inclure une requête ".de" ou
  400. ".am" dans une définition de macro. L'appel d'une macro par une autre est
  401. possible.
  402.  
  403. .PR Les\ trappes
  404. .ti +8
  405. Les trappes permettent de déclencher l'exécution d'une macro à une
  406. certaine position verticale dans la page. C'est avec ce mécanisme que
  407. l'on peut ajouter une en-tête ou un pied-de-page. On manipule les trappes
  408. à l'aide des requêtes suivantes :
  409. .in 8
  410. .RQ wh WHen ligne\ nom
  411. place une trappe à la ligne indiqué. La macro exécutée sera la macro
  412. "nom". S'il y avait déjà une trappe à cette position, ARoff se contente
  413. de changer le nom de la macro à exécuter. Si "ligne" est négatif, il
  414. s'agit d'une position relative à la fin de la page. Si "ligne" est nul, la
  415. trappe est déclenchée en fin de page.
  416. .RQ rt Remove\ Trap ligne
  417. enlève la trappe placée à la ligne indiquée.
  418. .NI
  419. Dans la version actuelle de ARoff, la trappe de fin de page n'est jamais
  420. déclenchée sur la dernière page de texte.
  421. .FN
  422. .in 0
  423. Lorsque ARoff est sur le point d'écrire une ligne, il regarde si une trappe
  424. est placée sur cette ligne. Si oui, il appelle la macro indiquée avant
  425. de tenter à nouveau d'écrire la ligne. Ce fonctionnement permet le
  426. déclenchement en cascade de trappes placées sur des lignes consécutives.
  427.  
  428. .PR Les\ conditions
  429. .ti +8
  430. ARoff permet de rendre conditionnelle l'exécution d'une requête ou d'une
  431. macro, ou bien encore l'insertion d'une portion de texte. On manipule les
  432. conditions à l'aide des requêtes suivantes :
  433. .in 8
  434. .RQ if If cond\ reste
  435. Ignore le reste de la ligne si la condition n'est pas verifiée.
  436. .RQ el Else reste
  437. Ignore le reste de la ligne si la condition testée par le "if" précédent
  438. était verifiée. La requête "el" doit suivre IMMEDIATEMENT la requête "if".
  439. .in
  440.  
  441. Le format des conditions est le suivant :
  442.  
  443. .nf
  444. \to\t\tla page courante est de numéro impaire
  445. \te\t\tla page courante est de numéro pair
  446. \tn\t\tle formateur est "nroff" (toujours vrai)
  447. \tt\t\tle formateur est "troff" (toujours faux)
  448. \t'ch1'ch2'\tla chaine 'ch1' est identique à la chaine 'ch2'
  449. \tN<M\t\tl'entier N est inférieur à l'entier M
  450. \tN>M\t\tl'entier N est supérieur à l'entier M
  451. \tN=M\t\tl'entier N est égal à l'entier M
  452. .fi
  453.  
  454. On peut inverser une condition, en la faisant précéder par un point
  455. d'exclamation "!". Les arguments des tests peuvent bien entendu être des
  456. registres ou des chaines. Voici quelques exemples :
  457.  
  458. .nf
  459. .in 8
  460. \!.if o .tl 'Entete de page impaire''\n(pn'
  461. \!.el .tl 'Entete de page paire''\n(pn'
  462.  
  463. \!.if '\*(fn'macros' le fichier macros
  464. \!.el un autre fichier
  465.  
  466. \!.\" Saut de page si la ligne d'entrée est > 56
  467. \!.if \n(il>56 .bp
  468. .in
  469. .fi
  470.  
  471. .PR Divers
  472. .ti +8
  473. Les registres et les chaines sont insérés dans le texte au fur et à
  474. mesure de sa lecture. On peut utiliser un registre ou une chaine comme
  475. argument d'une requête. Un registre inconnu a une valeur égale à zéro,
  476. une chaine inconnue est remplacée par une chaine vide. Une requête
  477. inconnue entrainera la recherche d'une macro. L'appel d'une macro non
  478. définie sera ignoré.
  479. .ti +8
  480. A la différence de "nroff", les registres, chaines et macros sont conservés
  481. dans des listes différentes. Cela veut dire que vous pouvez donner le même
  482. nom à un registre, à une chaine et à une macro : il n'y aura aucune
  483. confusion. Par contre, comme la liste des requêtes est parcourue avant la
  484. liste des macros, si une macro et une requête ont le même nom, c'est la
  485. requête qui sera exécutée.
  486.  
  487. .nf
  488. Voici la liste des codes d'erreurs indiqués par ARoff :
  489.  
  490. .in 16
  491. 0\terreur interne
  492. 1\tpile vide
  493. 2\tpile pleine
  494. 3\terreur de syntaxe
  495. 4\tdébordement de table ou de tampon
  496. 5\touverture de fichier impossible
  497. 6\targuments incorrects
  498. 7\terreur d'écriture
  499. 8\tplus de mémoire libre
  500. 9\trequête "el" non précédée par une requête "if"
  501. 10\timpossible de se déplacer dans le fichier
  502. 11\terreur de lecture dans le fichier à traiter
  503. 12\tle fichier à traiter est vide
  504.  
  505. .in
  506. Voici les valeurs par défaut des paramètres de mise en page :
  507.  
  508. .in 16
  509. ajustement\t\tad\tb
  510. indentation\t\tin\t0
  511. longueur des lignes\tll\t80
  512. espacement des lignes\tls\t1
  513. longueur des titres\tlt\t80
  514. longueur des pages\tpl\t66
  515. numero de page\t\tpn\t1
  516. marge gauche\t\tpo\t0
  517. tabulation\t\tta\t8
  518. caractere tabulation\ttc\tespace
  519.  
  520. .in
  521. .fi
  522. .ti +8
  523. Vous pouvez me faire part de vos remarques ou critiques sur ce programme,
  524. en écrivant à l'adresse suivante :
  525.  
  526. .ne 4
  527. .ce 4
  528. M. GOUNELLE Denis
  529. Boite 71
  530. 6, rue des cailloux
  531. 92110 CLICHY - FRANCE
  532.  
  533. .ti +8
  534. ARoff a été développé presque entièrement sous système UNIX, puis
  535. recompilé sur Amiga avec l'Aztec C 3.6a. Les fichiers sources sont
  536. fournis (il n'y a pas beaucoup de commentaires, désolé !), avec les
  537. "makefile" pour Unix et pour Aztec. Ce programme devrait pouvoir être
  538. compilé sans trop de problèmes par n'importe quel compilateur C. Les
  539. parties spécifiques au compilateur Aztec C sont placées entre "#ifdef".
  540.  
  541. .PR Historique
  542. .in 8
  543. .ti -8
  544. v1.00\t06-Sep-91, 22144 octets
  545. .br
  546. Première version diffusée.
  547.  
  548. .ti -8
  549. v1.01\t20-Oct-91, 22524 octets
  550. .br
  551. Ajout de la requête "fs".
  552. .br
  553. Ajout de la chaine "$VER:" pour la commande Version (OS 2.0).
  554.  
  555. .ti -8
  556. v1.02\t11-Nov-91, 22736 octets.
  557. .br
  558. Ajout de la requête "ts".
  559. .br
  560. Correction d'une erreur dans la numérotation des pages (commençait à 2
  561. au lieu de 1).
  562.  
  563. .ti -8
  564. v1.03\t13-Nov-91, 22896 octets
  565. .br
  566. Plusieurs optimisations (6% plus rapide d'après "prof", consomme moins
  567. de mémoire).
  568.  
  569. .ti -8
  570. v1.10\t14-Nov-91, 24020 octets
  571. .br
  572. La pile interne est maintenant allouée correctement : depuis le début
  573. on allouait (TaillePile * 2) octets au lieu de (TaillePile * 8), d'où
  574. des plantages avec de gros fichiers sources.
  575. .br
  576. Ajout des requêtes "if" et "el".
  577. .br
  578. La fonction Pop() ne dépilait jamais le dernier élément (s'arrêtait
  579. quand SP valait 1, au lieu d'aller jusqu'à 0).
  580. .br
  581. La fonction myalloc() alloue toujours un nombre pair d'octets (pour
  582. éviter des problèmes d'alignement), et vérifie qu'on essaye pas
  583. d'allouer 0 octets.
  584. .br
  585. La fonction LigneSuiv() n'allouait pas assez de place pour stocker la
  586. ligne en cours en cas de trappe (il manquait un octet pour l'octet nul
  587. à la fin).
  588. .br
  589. Lorsqu'on utilise la requête "so", n'oublie plus de revenir au fichier
  590. précédent en fin de fichier.
  591. .br
  592. N'oublie plus l'indentation quand une ligne commence par \\!.
  593.  
  594. .ti -8
  595. v1.11\t27-Nov-91, 24028 octets
  596. .br
  597. La fonction SetMacArgs() n'allouait pas assez de place pour les arguments
  598. des macros (il manquait un octet pour l'octet nul à la fin).
  599. .br
  600. [Erreur détectée et corrigée grâce à l'aide de Michel SCHINZ]
  601.  
  602. .ti -8
  603. v1.12\t29-Nov-91, 24828 octets
  604. .br
  605. Ajout de l'option -l (charge le fichier en mémoire) qui permet de rendre
  606. le traitement deux à trois fois plus rapide dans certains cas (166% à 280%
  607. constatés sur mon A500).
  608.  
  609.