FR 2525788 A1 19831028 FR 8219388 A 19821119 L'invention concerne un appareil et un procédé perfectionnés pour lire avec précision des étiquettes à code à barres du type comprenant des barres sombres qui alternent avec des espaces clairs de diverses largeurs pour représenter une information numérique et alphanumé- rique. Divers "codes à barres", qui comprennent des barres sombres allongées alternant avec des espaces clairs pour représenter des codes numériques et alphanumériques sont couramment utilisés Par exemple, un code universel de produits ("Universal Product Code", UPC) est communé- ment utilisé sur des articles d'épicerie Des appareils appelés 'lecteurs de code à barres" sont utilisés pour lire et décoder de telles étiquettes à oede à barres En général, un lecteur de code à barres comprend un crayon- lecteur ayant une diode électroluminescente qui éclaire par une ouverture située à une extrémité du crayon Ce dernier est tenu verticalement par rapport à l'étiquette à code à barres et il est déplacé rapidement d'une extré- mité à l'autre de l'étiquette Ceci est appelé un "balayage" de l'étiquette Un dispositif photosensible tel qu'un phototransistor reçoit la lumière émise par la diode électroluminescente et réfléchie par les espaces clairs compris entre les barres sombres de l'étiquette. Le crayon-lecteur renferme généralement un amplificateur à étage unique qui amplifie le signal de sortie produit par le dispositif photosensible Ce signal, appelé "signal de crayon-lecteur" ou "signal analogique", possède généralement une amplitude d'environ 200 à 300 millivolts. Ce signal est conduit au moyen d'un câble flexible, partant de l'extrémité supérieure du crayon-lecteur, à un "circuit de conditionnement du crayon-lecteur" qui amplifie davan- tage et "met en forme" le signal du crayon pour produire un signal de "données brutes" comprenant une suite d'impul- sions séparées par des intervalles A une vitesse de balayage constante, les largeurs des impulsions et des intervalles correspondent avec précision aux largeurs des barres et des espaces Dans certains appareils connus, par exemple un appareil commercialisé par la firme Interface Mechanisms, Inc (désignée ci-après Intermech, Inc) de Lynnwood, Washington, EUA, le signal produit par le circuit de conditionnement du crayon-lecteur est appliqué à l'entrée d'un système à microprocesseur qui exécute des algorithmes pour convertir le signal de "données brutes" en nombres binaires, chacun de ces nombres binaires correspondant à chaque "caractère"e l'étiquette à code à barres, et chaque bit ayant un état lc 3 gqle (soit un "un", soit un "zéro") qui correspond à la largeur d'une barre ou d'un espace de l'étiquette à code à barres Une fois que les nombres binaires sont obtenus, les caractères qu'ils représentent peuvent être obtenus automatiquement en référence à une table de consultation. Les lecteurs de code à barres connus jusqu'à présent ne sont pas aussi précis qu'on le souhaiterait, car ils ne parviennent pas à lire avec précision certaines étiquettes à code à barres Un certain nombre de facteurs sont à l'origine des manques de précision des lecteurs de code à barres Le facteur le plus important, dans le cas de crayons tenus à la main, est la variation de la vitesse de balayage du crayon lorsque ce dernier est déplacé d'une extrémité à l'autre de l'étiquette à code à barres Un utilisateur augmente généralement par inadvertance la vitesbe de déplacement du crayon par rapport à l'étiquette à code à barres lorsqu'il surmonte l'inertie de son bras et celle du crayon lui-même pendant le balayage La vitesse du crayon à la fin du balayage peut souvent être supérieure de 50 % à celle existant au commencement du balayage d'une étiquette particulière à code à barres. Un autre facteur conduisant à une difficulté et à un manque de précision dans la conversion des données brutes précitées en nombres binaires représentant les caractères de l'étiquette à code à barres balayée est le fait que, souvent, la délimitation de couleur entre un espace de couleur claire d'un caractère et une barre sombre adja- cente de ce caractère n'est pas nette, mais relativement progressive Un autre facteur qui diminue la précision d'un lecteur de code à barres est la présence de petites erreurs de phase dans le circuit de conditionnement du crayon lorsque le signal analogique de niveau bas est amplifié et mis en forme pour atteindre des niveaux logi- ques normalisés Les meilleurs appareils de lecture à crayon de l'art antérieur sont incapables de lire avec précision des étiquettes à code à barres d'une mauvaise qualité "d'impression", qui produit des transitions floues entre les espaces et les barres, ou bien dans le cas o l'utilisateur ne maintient pas une vitesse de balayage constante du crayon Par conséquent, il existe un besoin non satisfait en un appareil et un procédé perfectionnés, plus fiables et plus précis de lecture de codes à barres. L'invention a donc pour objet un appareil et un procédé perfectionnés de lecture de codes à barres, moins sensibles aux imperfections d'impression des étiquettes à code à barres que les appareils et les procédés antérieurs, et moins sensibles, également, aux variations de vitesse du crayon pendant le balayage des étiquettes à code à barres. L'invention a pour autre objet un appareil et un procédé très précis et très fiables de lecture de code a barres. Brièvement décrite, l'invention concerne un appa- reil et un procédé de lecture d'une étiquette à code à barres qui utilisent un crayon-lecteur ou un dispositif photosensible pour balayer l'étiquette à code à barres et produire un signal analogique représentatif de quantités de lumière réfléchies par des barres et des espaces de l'étiquette à code à barres, amplifient et mettent en forme le signal analogique pour produire un signal de données brutes, mesurent les durées des impulsions et des intervalles entre les impulsions sur au moins une partie de l'étiquette à code à barres, produisent et mémorisent des nombres de durées numériques représentatifs de ces durées, respectivement, calculent un nombre de référence, comparent chacun des nombres de durées numéri- ques d'une partie prédéterminée de l'étiquette à code à barres au nombre de référence, produisent un nombre binaire ayant des bits qui correspondent respectivement aux barres et aux espaces de la partie prédéterminée, chaque-bit étant un "un" si son nombre-de durées numériques correspondant est supérieur au nombre de référence, déter- minent si le nombre binaire est acceptable conformément à un critère prédéterminé, ajustent le premier nombre de référence si le nombre binaire n'est pas acceptable, et recomparent les nombres de durées numériques aux nombres de référence ajustés et déterminent si le nouveau nombre binaire résultant est acceptable Dans la forme de réalisa- tion décrite de l'invention, les signaux analogiques sont produits par un crayon-lecteur classique de code à barres et le signal de données brutes est produit par un circuit classi- que de conditionnement du crayon Le signal de données brutes est appliqué à l'entrée d'un système à microproces- seur qui détecte des transitions dans le signal de données brutes, mesure les durées des impulsions et des intervalles du signal de données brutes, et produit et mémorise des nombres de durées numériques correspondants Le système à microprocesseur calcule un nombre de référence pour un premier caractère de l'étiquette à code à barres en divi- sant la somme des nombres de durées numériques du premier caractère par huit (en effectuant une simple opération de décalage binaire triple) afin de placer une valeur initiale du nombre de référence à peu près à midistance entre un nombre de durées numériques inférieur "typique", représen- tant un "zéro" et un nombre de durées numériques supérieur "typique"représentant un "un" à la vitesse à laquelle le premier caractère a été balayé Tous les nombres de durées numériques du premier caractère sont ensuite comparés au nombre de référence et reçoivent la valeur "zéro" logique ou "un" logique, suivant qu'ils sont inférieurs ou supé- rieurs au nombre de référence, afin de produire le nombre binaire qui représente la suite de "uns" et "zéros" logiques représentée par le premier caractère de l'étiquette à code à barres Dans la forme de réalisation décrite de l'inven- tion, l'étiquette à code à barres est une étiquette à code à barres "CODE 39 ", qui exige que chaque caractère possède exactement trois "uns" logiques Le système à microproces- seur détermine si le premier nombre binaire comprend exac- tement trois "uns" logiques, et si tel est le cas, il se réfère alors à une table de consultation mémorisée pour déterminer le premier caractère Si le premier nombre binaire possède plus de trois "uns" logiques, le système à microprocesseur augmente le premier nombre de référence de 6,25 % en effectuant une simple opération de translation binaire à division par seize, puis il recompare les nombres de durées numériques du premier caractère au nombre de référence ajusté Le système à microprocesseur produit ensuite une nouvelle valeur du premier nombre binaire et il détermine si la nouvelle valeur du premier nombre binaire contient à présent exactement trois "uns" logiques. Le système à microprocesseur répète ce processus plusieurs fois, si cela est nécessaire, pour tenter d'obtenir une valeur du premier nombre binaire qui contienne exactement trois "uns" logiques Si la valeur initiale du premier nombre binaire contient moins de trois "uns" binaires, le système à microprocesseur diminue la valeur initiale du nombre de référence de 6,25 %, recompare les nombres de durées numériques du premier caractère à la valeur ajustée du premier nombre de référence et détermine si la valeur résultante du premier nombre binaire contient trois "uns" logiques et, si cela est nécessaire, répète ce processus pour tenter de nouveau de trouver une valeur acceptable du premier nombre binaire Si aucune valeur acceptable du premier nombre binaire n'a été obtenue après modification de la valeur du premier nombre de référence d'un total d'environ 30 %, le système à microprocesseur détermine qu'il est impossible de lire le premier caractère Dans la forme de réalisation décrite de l'invention, un nombre de référence séparé est calculé et modifié, si cela est nécessaire, pour chaque caractère de l'étiquette à code à barres afin de minimiser l'effet des variations de la vitesse de balayage du crayon-lecteur, des imperfections "d'impression" de l'étiquette à code à barres, et des erreurs de phase introduites dans le circuit de condition- nement du crayon-lecteur qui produit le signal de données brutes en réponse au signal analogique Une "fenêtre de caractère", qui encadre un seul caractère à la fois de l'étiquette à code i barres, est utilisée pour éliminer les effets de signacx parasites produits par le crayon- lecteur à des instantes autres que pendant le balayage d'un caractère de l'étiquette à code à barres. L'invention sera dcrite plus en détail en regard des dessins annexés à titre d'exemple nullement limitatif et sur lesquels: les figures l A et l E montrent des éléments de code à barres et des caractères et elles aident à la compréhension de l'invention; les figures 2 A et 2 B représentent ensemble un schéma simplifié d'une forme de réalisation de la présente invention; la figure 3 A est un schéma d'un caractère en code à barres typique; la figure 3 B représente la forme d'onde d'un signal de sortie de crayon-lecteur produit en réponse au balayage du caractère montré surla figure 3 A; la figure 3 C illustre un signal de "données brutes" produit par un circuit de conditionnement de crayon-lecteur en réponse au signal de sortie du crayon- lecteur de la figure 3 B; et - la figure 4 est un organigramme du programme exécuté par un microprocesseur faisant partie du schéma représenté sur la figure 2 A. Un code à barres communément utilisé, appelé "Code 39 ", est indiqué à titre d'exemple pour faciliter la description de la présente invention La figure l A représente à échelle agrandie le caractère " 6 " du jeu de caractères en Code 39 D'autres caractères du jeu de caractères du Code 39 sont donnés dans l'annexe 1 jointe. Chaque caractère du code à barres appelé "Code 39 " est constitué de neuf "éléments" Les neuf éléments compren- nent cinq "barres", par exemple les barres 51, 53, 55, 57 et 59 du caractère 50 montré sur la figure 1 A Les cinq barres d'un caractère sont séparées respectivement par quatre "espaces" tels que les espaces 52, 54, 56 et 58 du caractère 50 La largeur de chaque élément représente sa valeur binaire Une barre étroite ou un espace étroit représente un "zéro" binaire, et une barre large ou un espace large représente un "un" binaire. Sur la figure 1 B, les transitions ou délimita- tions progressives 63 et 64 entre les barres 60 et 62, respectivement, et l'espace 61 illustrent les problèmes de délimitation mentionnés précédemment, qui provoquent souvent une mauvaise lecture, par les dispositifs anté- rieurs de lecture de code à barres, d'étiquettes à code à barres imprimées ou reproduites de façon imparfaite. Chaque élément large, qu'il s'agisse d'une barre ou d'un espace, possède une largeur égale à 2,2 fois celle de tout élément étroit (qui peut évidemment être une barre ou un espace). Compte tenu de ce qui précède, il convient à pré- sent de considérer les figures 2 A et 2 B pour décrire la structure de l'appareil 1 de lecture de code à barres, figures sur lesquelles la référence numérique 3 désigne une étiquette à code à barres qui comprend un caractère de "départ" et plusieurs caractères en code à barres, indiqués globalement par la référence numérique 5 La référence numérique 7 désigne un crayon-lecteur tenu à la main, qu'un utilisateur déplace (par exemple) dans le sens indiqué par la flèche 8 de manière que l'extrémité infé- rieure du crayon 7 soit adjacente à une étiquette 3 en code à barres Une diode électroluminescente, un dispositif photosensible classique et un amplificateur, contenus dans le crayon 7, coopèrent pour produire un signal analogique de crayon sur un conducteur flexible 9 Le conducteur 9 est relié à une entrée d'un circuit classique 11 de condi- tionnement du crayon-lecteur Le crayon 7 et un système, comprenant le circuit 11 de conditionnement du crayon, sont bien connus de l'homme de l'art et sont disponibles comme composants d'un appareil de lecture de code à barres commercialisé,par exemple, par la firme Intermech, Inc. La sortie du circuit Il de conditionnement du crayon-lecteur est connectée à l'entrée CB 2 d'un circuit d'horloge 15 se présentant sous la forme d'un dispositif périphérique "Synertek 6522 A" qui comprend une horloge et qui peut détecter les transitions du signal de données brutes présent sur un conducteur 13 Le circuit périphéri- que 15 produit un signal d'interruption à son entrée IRQ vers le microprocesseur 21 qui se présente sous la forme d'un microprocesseur "Synertek 6502 A" Les bornes du bus de données du microprocesseur 21 et de la puce périphéri- que 15 sont connectées aux huit conducteurs du bus de données indiqué par la référence numérique 19. Une mémoire morte 29, qui se présente sous la forme d'un circuit intégré de mémoire morte du type 2732, est connectée, par ses bornes de bus de données, aux conduc- teurs correspondants du bus de données 19 Une mémoire vive 31, qui se présente sous la forme d'une mémoire vive à cir- cuit intégré du type 2016 P, est connectée, par ses bornes de bus do données, aux conducteurs correspondants du bus de données 19 Les conducteurs d'un bus d'adresses 25 sont connectés aux sorties d'adresses correspondantes du micro- processeur 21 et aux entrées d'adresses correspondantes de la mémoire morte 29 et de la mémoire vive 31 Une puce à décodeur 33, qui peut se présenter sous la forme d'un cir- cuit du type 74 L 542, comporte trois entrées d'adresses connectées aux sorties d'adresses du microprocesseur 21 et qui sont décodées pour générer des signaux d'entrée de sélection de puces demandés par la puce périphérique 15, la mémoire morte 29, la mémoire vive 31 et un circuit de bascule 35 Ce dernier peut se présenter sous la forme d'un circuit intégré du type 74 L 5244. Huit interrupteurs manuels 39 sont reliés aux entrées correspondantes du circuit de bascule 35 pour per- mettre à l'utilisateur de sélectionner manuellement, parmi plusieurs types différents de codes à barres, celui pour la lecture duquel l'appareil 1 est réglé Les sorties du circuit de bascule 35 peuvent être lues par le micropro- cesseur 21, car elles sont connectées aux conducteurs correspondants du bus de données 19 Les accès 17 d'entrée- sortie de la puce périphérique 15 permettent à l'appareil 1 des figures 2 A et 2 B de communiquer avec, par exemple, un ordinateur central OC. Le caractère de "départ" du code à barres "Code 39 " est illustré sur la figure 3 A La figure 3 B montre le signal analogique de sortie du crayonlecteur, apparaissant sur le conducteur 9 de la figure 2 A à la suite du balayage du caractère de départ de la figure 3 A, de la gauche vers la droite Les "zéros" et "uns" indiqués au- dessus des barres et des espaces respectifs de la figure 3 A désignent les états logiques représentés par ces barres et espaces respectifs, ainsi qu'on peut le vérifier en se réfé- rant à la table du Code 39 donnée dans l'annexe 1 Le cir- cuit 11 de conditionnement du crayon-lecteur convertit le signal analogique de 200 millivolts, indiqué sur la figure 3 B, en une suite d'impulsions de niveau logique normalisé, indiquées sur la figure 3 C, dans laquelle les "zéros" et "uns" logiques de la figure 3 A sont répétés en alignement avec les impulsions et les espaces entre impulsions aux- quels ils correspondent respectivement. Il convient de noter que l'échelle des temps (t) indiquée sur les figures 3 B et 3 C n'est pas nécessairement linéaire et que, en fait, elle n'est linéaire que si l'utilisateur balaie le caractère de départ de la figure 3 A à une vitesse exactement constante Toutes variations de la vitesse de balayage entraînent des variations correspon- dantes de l'échelle des temps des figures 3 B et 3 C Comme mentionné précédemment, un utilisateur augmente notablement, en temps normal, la vitesse de déplacement du crayon- lecteur entre le bord avant et le bord arrière d'une éti- quette à code à barres, simplement par suite du phénomène consistant à vaincre l'inertie de son propre bras Comme mentionné préeedemment, cette variation de la vitesse de balayage constitue l'un des facteurs importants qui limitent la précision et la fiabilité des lecteurs connus de codes à barres. Pour élimine les problèmes précités, dus aux variations de la vitesse du crayon-lecteur, aux retards de phase du circuit de con&itionnement du crayon-lecteur, et aux imperfections de L'imression de l'étiquette à code à barres, l'appareil 1 recueille et mémorise toutes les "données brutes" produites sur le c-s:-nducteur 13 à la suite du balayage de la totalité de l'étiquette 5 à code à barres. Les données brutes (se présentant sous la forme d'impulsions et d'intervalles qui les séparent) sontg en effet converties en mesures de temps entre les transitons apparaissant sur le conducteur 13 La puce périphérique 15 interrompt le microprocesseur 21 à chaque fois qu'apparatt une transi- tion dans le signal de données brutes présent sur le con- ducteur 13, et le microprocesseur 21 lit le contenu d'une horloge (qui effectue un comptage à une vitesse constante) de la puce périphérique 15 à la suite de chaque interrup- tion Si l'horloge arrive à la fin de son comptage en totalisant 53 millisecondes sans apparition d'une transi- tion sur le conducteur 13, le microprocesseur 21 interprète ce fait comme étant la fin de l'étiquette à code à barres balayée par le crayon-lecteur 7 Lorsqu'une transition apparaît sur le conducteur 13 avant que l'horloge de la puce périphérique 15 ait fini de compter, l'horloge est remise à zéro et recommence son comptage pour mesurer la durée de l'impulsion ou de l'intervalle suivant (qui repré- sente une barre ou un espace) sur le conducteur 13. Ces comptes, appelés comptes de durées numéri- ques, et qui devraient idéalement être égaux à une pre- mière valeur pour représenter un "un" logique et à une autre valeur pour représenter un "zéro" logique, varient considérablement en raison des variations visuelles décrites ci-dessus de la vitesse de balayage. Conformément à la présente invention, un appa- reil i de lecture de code à barres tente de calculer une valeur initiale d'un "temps de référence" ou "compte de référence", qui est située à peu près à mi-distance entre un compte de durées numériques supérieur typique, repré- sentant un "un" et un compte de durées numériques infé- rieur typique représentant un "zéro" dans un premier carac- tère de l'étiquette à code à barres Chaque compte de durées numériques mémorisé représentant la durée de balayage d'une barre ou d'un espace de ce caractère est alors comparé à la valeur calculée initiale du compte de référence et est interprété comme un "zéro" logique si ce compte de durées numériques est inférieur au compte de référence, ou bien est interprété comme un "un" logique si ce compte de durées numériques dépasse la valeur ini- tiale du compte de référence calculé Le nombre binaire résultant représente alors, et correspond, sur la base d'un bit pour un élément, aux barres et espaces du premier caractère si ce caractère a été lu avec précision. Conformément à l'invention, le programme compte alors le nombre de "uns' logiques présents dans le nombre binaire ainsi obtenu par le présent caractère On peut rappeler à ce stade que, pour un caractère du Code 39, on doit avoir exactement trois "uns' logiques Conformément à l'invention, si le nombre des "uns" logiques obtenu est inférieur à trois, la valeur initiale du compte de réfé- rence est diminuée d'un petit pourcentage ( 6,25 %, qui est obtenu par une opération binaire de division par seize), puis la comparaison décrite ci-dessus des comptes de durées numériques du premier caractère est de nouveau effectuée, mais avec le compte de référence modifié ou ajusté Si la nouvelle valeur du nombre binaire précité contient le nombre correct de "uns" logiques (c'est-à-dire trois) pour le présent caractère, la donnée brute associée à ce caractère semble avoir été convenablement interprétée. Si l'on obtient moins de trois L'uns" logiques, la valeur présente du compte de référence du calculateur est de nouveau diminuée Ce processus est répété jusqu'à cinq fois, jusqu'à ce que l'on obtienne trois "uns" logiques. Si, après un ajustement vers le haut du compte de réfé- rence calculé initialement, cet ajustement pouvant attein- dre environ 3 %, on n'a pas obtenu trois "uns" logiques dans le nombre binaire indiqué ci-dessus, le microproces- seur 21 suppose que le premier caractère ne peut être lu correctement. De façon similaire, si la comparaison initiale des neuf comptes de durées de balayage pour le présent caractère, avec la valeur calculée initiale du compte de référence, donne plus de trois "uns" logiques, le programme élève automatiquement la valeur initiale du compte de réf 6- rence calculé de la petite quantité ( 6,25 %), et il répète la comparaison des neuf comptes de durées numériques du premier caractère, avec le compte de référence ajusté et, si cela est nécessaire, il répète l'opération précédente jusqu'à ce que le nombre binaire produit à la suite des comparaisons contienne exactement trois "uns" logiques. Si l'on n'obtient pas trois "uns" logiques au moment o l'ajustement vers le bas du compte de référence calculé devient à peu près égal à 30 % de sa valeur calculée initia- lement, le programme exécuté par le microprocesseur 21 suppose qu'il est impossible de lire le premier caractère. Dans le calcul décrit ci-dessus, une comparaison avec le compte de référence et, si cela est nécessaire, un ajustement du compte de référence et une nouvelle comparai- son des comptes de durées numériques avec le compte de référence ajusté pour chaque caractère de l'étiquette sont apparus compenser très efficacement les variations normales de la vitesse du crayon-lecteur pendant le balayage d'une étiquette particulière à code à barres. A ce stade, il convient de se référer à la figure 4 pour expliquer plus en détail comment le processus décrit ci-dessus est exécuté par l'appareil L'organigramme de la figure 4 est un organigramme fonctionnel du programme mentionné ci-dessus, exécuté par le microprocesseur 21 pour convertir le signal de données brutes présent sur le conduc- teur 13 en un code de "niveau élevé" représentant les carac- tères individuels (groupes de barres et d'espaces) consti- tuant une étiquette à code à barres balayée de façon satis- faisante L'annexe 2 jointe contient le code permettant au microprocesseur 21, du type 6502 A, d'exécuter le programme décrit en regard de la figure 4. Comme représenté sur la figure 4, le programme commence à l'étape 100 de départ et il passe au bloc 101 dans lequel le microprocesseur 21 réagit à l'interruption produite sur son entrée IRQ par la puce périphérique 15, en réponse à chaque transition apparaissant sur le conduc- teur 13, puis lit le contenu présent de l'horloge interne de la puce périphérique 15 Le contenu présent constitue le compte de durées numériques représentant la largeur de l'impulsion au de l'intervalle apparaissant entre les deux transitions les plus récentes du conducteur 13 Ce pro- cessus se poursuit pour l'ensemble de l'étiquette à code à barres jusqu'à ce que l'horloge interne aboutisse à 53 millisecondes et génère un autre signal d'interruption. A ce moment, le programme reconnaît que les comptes de durées numériques ont été collectés et stockés dans une mémoire pour l'ensemble de l'étiquette à code à barres. Le programme passe alors au bloc 102. Dans le bloc 102, le programme calcule le compte de référence précité pour le premier caractère balayé pré- cédemment Pour simplifier la programmation, le programme divise par huit les comptes de balayage des neuf éléments du présent caractère en effectuant simplement trois déca- lages binaires vers la droite et en utilisant ce nombre comme valeur initiale du compte de référence Le programme passe ensuite au bloc 103 et il compare chacun des comptes de durées numériques mémorisés du premiercaractère au compte de référence calculé et, si le compte de durées numériques lu précédemment est inférieur au compte de réfé- rence, le programme lui donne une valeur logique "zéro"; si ce compte de durées numériques est supérieur au compte de référence, le programme lui donne une valeur logique "un" Le programme arrive ensuite à l'étape 104 de décision et il vérifie le nombre binaire résultant à neuf bits pour voir s'il cornient exactement trois "uns" (dans le cas d'une étiquette Code 39 de l'exemple décrit) Si la réponse à cette déterminat bey t affirmative, le programme passe au bloc 108 et il 3 fe à une table mémorisée de consul- tation contenant d' i' atclo ronnée dans l'annexe 1 pour déterminer la nature du pre-Ji r -aractère Le programme revient ensuite au bloc l 02 et cacule un temps de référence initial pour un deuxième cardactre de l'étiquette concernée à code à barres. Cependant, si la détermiination effectuée à l'étape 104 de décision est négative, le programme passe à l'étape de décision A l'étape 105 de décision, le programme détermine si plus de cinq ajustements ont été réalisés sur la valeur calculée initiale du compte de référence pour le premier caractère Si la réponse à cette détermination est négative, le programme passe à l'étape 106 de décision et il augmente la valeur présente du temps de référence pour le caractère présent si le nombre total de "uns" dans le nombre binaire précité à neuf bits est supérieur à trois, ou bien il diminue la valeur présente du caractère de réfê- rence si le nombre de "uns"' du nombre binaire à neuf bits est inférieur à trois Pour effectuer de façon économique le calcul indiqué à l'étape 106, le microprocesseur décale simplement la valeur binaire présente du compte de référence quatre fois vers la droite, ce qui équivaut à une division binaire par seize On obtient ainsi un nombre égal à 6,25 % de la valeur présente Cette valeur est additionnée à la valeur présente du compte de référence afin de l'ajuster vers le haut, ou bien elle est soustraite du compte de référence afin de l'ajuster vers le bas Le programme revient ensuite au bloc 103 et il compare de nouveau chacun des neuf nombres de durées numériques à la valeur à ajuster du compte de référence pour convertir ces comptes de durées numériques en uns ou zéros binaires Si cet ajustement du compte de référence a pour résultat une réponse affirmative à la décision de l'étape 104 (avant que cinq ajustements aient été effectués sur le compte de référence pour le pré- sent caractère), la tentative de lecture du présent carac- tère a donné satisfaction et le programme passe à l'étape 108 et convertit le nombre binaire à neuf bits, le plus récemment obtenu dans le bloc 103, en un code de "niveau supérieur" représentant le premier caractère en se référant à la table mémorisée de consultation mentionnée précédem- ment. Cependant, si après cinq essais d'ajustements du compte de référence pour le caractère présent, le nombre correct de "uns" n'a pas été obtenu, la réponse à la détermination de l'étape 105 de décision est affirmative et le programme passe à l'étape 109 de décision par laquelle il détermine si le caractère présent est le pre- mier caractère de l'étiquette à code à barres Si la réponse à la détermination de l'étape 109 de décision est négative, le programme passe à l'étape 111, achève la séquence de décodage et positionne un indicateur indiquant une défaillance ou une impossibilité de lecture de la présente étiquette à code à barres Si la réponse à la détermination de l'étape 109 de décision est positive, le programme passe à l'étape de décision 110. Pour comprendre la fonction réalisée dans l'étape de décision 110, il est nécessaire de savoir que, lors de l'exécution du balayage d'un code à barres, il existe toujours un risque de lecture de parasites au com- mencement de l'étiquette à code à barres, car, souvent, le fait de placer la pointe du crayon-lecteur contre l'éti- quette peut provoquer une transition dans le niveau logi- que présent sur le conducteur 13 En outre, la zone précé- dant le commencement d'une étiquette à code à barres peut présenter une région étrangère suffisamment sombre pour faire apparaître sur le conducteur 13 une transition erronée du signal avant le balayage de l'étiquette à code à barres proprement dite La tentative par le programme d'interpréter cette transition peut poser des difficultés. Conformément à la présente invention, ce type de "parasi- tes" est supprimé par le déplacement d'une "fenêtre de caractère" qui n'encadre qu'un seul caractère à la fois "dans' la liste, précédemment collectée et mémorisée, de comptes de durées numériques jusqu'à ce que le caractère de départ soit trouvé Si le caractère de départ ne peut être trouvé, le fait que l'étiquette présente à code à barres n'est pas lue est indiqué par le programme Cette situation correspond à une réponse positive à la détermina- tion de l'étape de décision 110 Dans l'étape 107, le pro- gramme exécute la fonction consistant à déplacer la "fenêtre de caractère' précitée jusqu'à ce que le carac- tère de départ soit trouvé. L'appareil 1 de lecture de code à barres décrit ci-dessus a été essayé sur diverses étiquettes à code à barres de mauvaise qualité et il s'est révélé donner plus de 99 % de lectures précises L'appareil 1 de lecture de code à barres est apparu capable de lire avec précision des étiquettes à code à barres "Code 39 " qui ont été repro- duites trois ou quatre fois par xérographie à partir d'un original, même lorsque le balayage exécuté par le crayon- lecteur 7 est réalisé diagonalement sur l'étiquette. Bien que seule une forme particulière de réalisa- tion de l'invention ait été décrite, il est évident que l'invention s'applique à tous les appareils équivalents de lecture de code à barres qui calculent automatiquement un temps ou un compte de référence, puis qui ajustent automatiquement ce compte pour améliorer la conversion des données brutes, provenant du caractère précédent, en "uns" et "zéros" binaires, conformément aux critères particuliers du code à barres balayé. Les critères peuvent être constitués simplement par le fait que le nombre binaire produit à partir des données brutes soit trouvé dans une table de consultation de caractères valables Plutôt que de baserle calcul sur un compte de référence correspondant à un caractère complet de l'étiquette, on peut se baser sur toute autre partie ou groupe de barres et d'espaces. Il va de soi que de nombreuses modifications peuvent être apportées au procédé et à l'appareil décrits et représentés sans sortir du cadre de l'invention. ANNEXE 1 Jeu de caractères en Code 39 Caractère Barres Espaces 1 10001 0100 2 01001 0100 3 11000 0100 4 00101 0100 10100 0100 6 01100 0100 7 00011 0100 8 10010 0100 9 01010 0100 0 00110 0100 A 10001 0010 B 01001 0010 c 11000 0010 D 00101 0010 E 10100 0010 F 01100 0010 G 00011 0010 H 10010 0010 01010 0010 0010 *10001 0001 L 01001 0001 Caractère Barres Espaces m N P Q R S T U v w x y z Espace $ 1 11000 0001 00101 0001 10100 0001 01100 0001 00011 0001 ' 10010 0001 01010 0001 0001 10001 1000 01001 1000 11000 1000 00101 1000 10100 1000 01100 1000 00011 1000 10010 1000 01010 1000 00000 1110 00000 1101 00000 1011 00000 0111 DEPART: ARRET: 1000 1000 Ag N 31 ilitiq 'd V( 39 'dZL 39 M Vd yi 4 i:io 1 3 DVO z t foi tu zt la 11001 3 NSI bj 31 swâssy OO 9 1:,: , ' h: Il'. 1, ' , ' ' i- w %D s-bvw-lO ZS 564)94 JT Ml 3 D Uncs bilool MA lî Bl l 4 C" ce N) h) Ln X WON 3 oz d ON E 1 d ON ei d Off L 1 d ON d ON do N 1 doif c 1 d ON z 1 d ON 1 1 d ON O 1 aoyd aovwi 32 vnos te úb ze 1 W vouv a Nii t'b z jl)v d zo-,dyw-,Io Cs $ 6 dit #11 SNOIII Nidg Ob:)V 1 Co Co Il i ui C\j Ln cm i 11 A Cr O DEFINITIONS 14- 49:55 04-MAR-92 Pe GE LINE t ')Cq P 1 B? 53 34 PAGE Z 4 PAGE ZERO VARIA 3 LES 2 DEFINE GENERAL MENORY 31 oina CNTLC -*fl TEMP FOR BAR COUNTER 32 0301 CNTHG 33 0002 DIRECT t DIRECTION OF THE READ 34 Oa O 3 li 011,4 TTO * *+l 4 IRO TIMER TINE OUT 36 0105 3 CODE; THE BAR CODE CONSISTS OFS 37 con 5 PARS *U*+l BARS AND 38 0006 39 0007 Bl T *-*+l; TEMP FOR TH 5 UURRENT 81 43 0008 ADJLDW *=*+l 9 REF TIME AD TFIENT LOW 4 t 0009 ADJHGH *=C:+l éREF TIME ADJUSTMENT HIGH MIES '- ;-NUX 8 ER_n F n NF 43 0008 INCPAS *-**l I REMENT COUNTER 44 conc DECPAS *=*+l D Cq EAENT COUNTER 4 i coni CHRNUM NUMBER OF CHRS IN MSG 8 UFFER 46 DODE MIST TIME FLAG - 1-f rq 49 DEFINE GENERAL REIST RS -ODOF FLA -AEGI I 0010 ***+l I:ODE ID SWITCH VALU RG ISG STATUS FOR E BD 52 0011 MES *-*+l 53 001 ? TASTRG *-*+l t SELF TEST-STATUS F Oq E BD CF BUFF ER TU R ECEIYE NEXT INPUT 0014 NXTOUT *-t*+ 1 9 OF NEXT SUFFER TO XM'IT 56 0015 XREG *M*+l 4 VALUE FOR X REGISTER :." il EXPECTING DATA FLAG -IGNORE-1 RO-FR Old-E-BD-P-L Ar, S Ffl TEST FLAG DE ODE THE BARCODE FLAG DECODE THE MAGSTRIPE FLAG 1-=> SUFFER IN USE SEEN SENT TG E-BOARD YET) POME T 2, HR,MTTT Ep TOE FeR NDI HT DRE FOR G U c RESERVED FOR'INDIRECTJU 4 ps -TE MP-S TDRAGE FOR -PNT LOW+ 1. TEMP STORAGE FOR PNTHGH+l çq PAGE 6 1 OEFINETFA 62 0016 EXPOPG *=*+l a 64 DOIR TESTFG *-**l 1 & 5 0019 p A Qc FG *=*+l 61 OOIA MAGSFG *-*+l 69 ooic BF 1 *lt*+l 69 0010 BF 2 *=*+I, 001 E BF 3 *-*+l 72 t O DEFINE Péîïiâî 73 t 74 00;F POINT *ni" 2 CO 1 TL j 76 ()023 PNTHGH *=*+i 77 0025 PNTS Wp *+ 73 0027 T 1 14 PNT*z*t 2 0029 AUúPNT er* L QA X" 41 TPT * *+l M 5 OUFFPT 9-*+ 2 012) JMPADR *c,,;+z a 3 CQ 2 F 84 0030 s Avée Gli*z*+l t Ab DEFINE COUNTEIS-* 9 i 0031 SKOCNT *-*+l 8 - 003 ? CHRCNT *-*+l 00 0033 c cui T*-*+l r 1 CO 3 4 E VCNT Q 2 0036 SWPCNT *=*+l 93 0037 T 1 IIC NT OAéR 2 F MESUS Kl PPE H CT CO NTER LOOP CO TER REVERSE IMES OUNT REVERSE IMES COUNT TIME BUF ER COUNT UîED TC IIORE MSG CHECKSUM AS -M SAGE U 1 i r%. Lf) CM Lfi Ci 14 e 49:58 04-MAR-82 PAGE 4 ACRO DEFINITIONS Rq LIKIE ADOR 81 32 R 3 84 SOURCE IMAGE t INRI E;; PIIINT _ D Au Ttmc c Aur As N Mr i _; Mart, Itit-lirlpwtfli 14-,,,,, - 1, INDIRECT POINTER 9 RAW TIME SAVE Nu 1 RECT PO 1 NTER* SWAP REGISTER ME BUFFER POINTER ntq PIAV %LIF Fr R POINTFR 00. r Ln Ln MACRO DEFINITIONS 11 t:50:02 04-MAR-82 PAGE Eq F LIME AO Dq 81 82 53 84 ' Sa Uq CE IMAGE 96 PAGE 99 îicî 0200 SWAP $ 0200 1 SWAPPING BUFFER 101 0400 1-BARCODE-TIMES- LDW Io? obo 3 l IMHGH $ 0600; 8 ARCODE TIMES HIGH 104 003 A; CHARACTER SUFFER 4,0 IC 6 00 t 4 CHRBF 3 *=*+ 53 CHARACTER BUFFER 92 107 O On 9 CHR 3 F 4 *=*+ 5 CHARACTER BUFFER 93 109 8000 PORTS 1-WAND # M&GSTR IP EANRU-1 Ili 8001 PORTA $ 5001 E-BOARD 1/0 111 q OO 2 DDRB a $ 8002 sys DATA DIRECTION REG 8 Il? 8003 DDRA 58001 i SYS DATA DIRECTION REG A 113 8309 'e-TIMER-Z LATCH LOW, f WRLTE 114 ROOS TZCL $ 8008; TIMER 2 COUNTER LOW (RE Ab ONLY) 8009 TZCH $ 8009 1 TIMER 2 COUNTER HIGH qf 115 8910 fl SACR $ 8008 1 SYS AUX CONTROL REGISTER 117 SOCC 3 PCA -SYSPER *-CON TR OL -REG 1 S TE liq 81)MO FI Fq O SYS TNT FLAG REGISTER 119 800 E SIFR $ 800 E SYS INT ENABLE REGISTER 123 800 F APRTNH $ 300 F S PORT A;ITHOUT HANDSHAKE 122 2000 SWIYCH $ 2000 t CODE Id SWI'TCM Il 1- 1 7 1 - 1 1 ' L, i 1 1 i -,1 l 1, i c c e Co Ul cm LM %IACRO DEFINITI-INS 14:50 '04 04-IMAR-82 PAGE 6 Fk R LINZ ADOR $ 1 92 33 '34 123 PAGE I 24 12 5 127 GENERAL STARTUP AYO INITS It IZATION 129 O START 131 FOOO os CLO POWER ON STARTUP 132 FOOI, A 2 FF - 133 F 003 9 A TXS t 141 TIALIZE'THE-STACK 134 FOC 4 A 9 01 LOA #soi 1 F 006 80 os 80 STA SACR t PA LATCH 9 SR DISABLE 9 Tz -r IME;t 136 F 009 A 9 00 137 FOQI 80 03 PO STA DORA 131 FOCE a P 02 80 STA DOQB PORT 8 IS ALL INPUTS Gil INITIALI ZrSUFFEZO P OINT ERS 141 NOTE CONTROI S'HOULD NEVER RETUAN NERE EXCEPT ON RE ET 1 412 143 F 011 20 74 F 5 JSR DUFINI IXITL 146 9014 20 3 C FS i SR SETMEM 1 INITIALIZE GENERAL MEM LOCATIONS 147 F 017 20 87 FS JSR SETINT INITIALIZE FOR INTERRUPT HANDLING 14 q FOIA 8 CL 1 1 41 START OF YHE MAIN LOOP L 1 -rinp 153 FOIS As 19 e Rg -f f TEf W 70 t 1 "fd-r W If 4 F 010 30 Il 1 8 RCODE MESSAGE 9 I 5 L E à LDA MAGSFG F- t T, IS,-TI ME-TIL-DEC QD 157 FIJ 21 30 03 W, DECMAG 1 MAGSTRIPE MESSAGE. 159 F 023 4 C 18 FO im LOOP , j of j -,l -1 _l i i r.- Lri (M L(l t\j MAC STRIPE DECCOE 14:50 '06 04-P AR-82 PAGE LINC Af)'):t013 Z q 3l,4 suÀëE im AGE PAGE OMAG'S Tq IPE DECDD- -# 161 F 025 lbz F 026 EA lh 3 F 027 EA PIOP 164 Fn 2 il -NOP l F 029 FA NOP 166 F 024 lA NOP 167 F' 73 FA NOP 16 i F - 4 ; CEA 16 q F 12 D FA NOP FIZE EA NOP 171 F 02 F EA NOP im j -I f, 'e-j ' : 1 vf- f 1 f - -I - OC) fl 1 Ln Ln BAR CODE DECO De C 4- 14 AR-42PAGE FRI LIIE A 00 q 81 92 8 1 3 4 SOURCE im A'rî"' 17 ') PAGE s AitCODE o Ecooe- 17 74 O BARCODE DECODE ROUTINE 10 F 030 DIZCB'AR 177 FOID E 6 13. 1 7 8F 032 e 5 13 LOA NXTIN NEXT BUFF Eil 17 N F '34 29 03 ANQ #$ 03 EATVE#MDEFANINGFUL Bl TS - IRD FO? 5 AA TAX TO INDEX REG 121 F 037 5 1 5 LOA -BFDPX 31 JFFER AVAILABLE? 182 F 039 FO 03 é E O + 5 YES* CONTINUE WITH DECOO - 183 F 039 4 C 61 FO J M NODEC N* GET OUT WITHOUT DOING DECODE 184 F 33 e A 5 10 LOA SWITRG G 5 T THE CODE ID SWITCH VALUE F 045 29 07 STAI P -OFFTOP-5 1 eb FC 42 CA ASL A 1 03 UI)LF RESULT IP 7 P 043 Aà TAX t MOVE TO INDEX REGISTER IP 3 F 144 o 51 FO LDA JM PTB Lt X GET LS 8 YTF OF JUMP'S Oc 129 F 047 85 20 - JMPA Oct; SAVE IN Z-PAGF - o 100 F 04 q80 5 î FO LDA JMPT; 'L+ 19 X GET MS BYTE OF Jumpi's b Esflbi Af Id N r,4 191 FO'4 C 65 2 STA JMPA Dgt+l t SAVE IN Z-PAGE 102 F 04 E b C 2 D 00 JMP (JMPADR) 60 TO PROPER DECODE ROUTINE IQ 3 F 151 194 F 151 64 Fà tiop O DEC 39 O %> CODE 39 r-( 53 93 F 2 WORD DEC 251 1 "> 2 OF 5 INTERLEAVED 19 b 909, 91) F 2 WO R f) OC 25 S > 2 O F 5 STANDARD F 057 A 7 F) DÈCUPC > UPG CODE. 1 QS F 059 81 F 2, WORD DECEA% 4 w> EAN CODE 199 Fona 3 FZ wano DECCOR 5 > COOABAR F 05 D C 5 F 2 WORD or-CABC, t 6 w> ABC CODE 2 01. 2 ? 03 i NERE IF NO BUFFER IS AVAILABLE TU RECEIVE NEWLY OECODED INPUT DATA 2 04 205 F O à 1 à,% 2 Q ' F 061 C 63 DEC NXTIN TC 7 O 7 F Oi-3 49 #00 T ODE E ADY' * 21 M F 065 85 19 TA CAPCFû 9 o FLAG 209 F 067 4 C m P GD-BACK,-TO-,ID Lr Cj Ct)I)F 39 DECODE 14:5 0: 11 04-M 4 R-EZ p Ar, 1 Ln -7 CM R LIVC AIDR n I 52 83 34 SOURCE IMAGE 2 1 O PAGE ICODE 39 DE 40 E, 213 CO De 39 DECODE ROUTINE 216 DE Cil? 217 Fnb A 7 a sel 3 a écis AS 31 LDA TIMCNT+l 219 F 061)C q, O 1 r 4 P tic 1 2 ? O F 06 r FO 06 SEO DC 901 2 ? 1 TIMCNT+I=I SO AT LEAST 256 TIMES 2 ?? FI)7 J AS 37 LDA TIICNT TIMCNT+ 1 = O SC C HECK IF AT LEAST 19 23 _ F 07 IMES YER 5 VEO -_ 214 F 075 90 90 acc INITL VLESS THAN 199 REINIT FUR BARCODES 2 ? 5 F 077 DC 901 227 F 077 22 q F 07 qES 21 STA PNTL Okl TIME-BJFF Ek S TU SEGINNING ADORESS ? 21 F 075 A 9 04 LOA O TIHHGH 233 F 081 85 23 STA PNTHGH 234 FOA Ag 06 LDA # 237 F 087 AS 13 NXTIN S ET JWPUT BUFFER NUMBER 239 P 059 29 03 AND #503; MAKE CIRCULAR SO SUFFER NOT > 3 A 241 FORC RI EC F 4 LOA BADPTLX CET LOW NO HIGH ADORESS OF PROPER 24 ? FORF 85 29 STA BUFFPT CHARACTER SUFFER IN WHICK TO PUT 243 FC 91-SD F O P-4- AACPTH*X____ é- THI-S- 244 F 094 85 2 C STA BUFFPT+l 24 i 246 F 96 Ag 09 LOA 09 'I'NITIALIZE MORE VARIABLES 2 4 O F 09 A Ag 00 LOA 00 ? 49 Foq C q S 02 STA DIRECT 290 Foqi 85 28 STA Tlmpblr+l 2 FOAO 85 31 STA SKPCNT LA CM CODE 39 OECOOF 14,50:14 04-P AR-82 PAGE, IC. RP LINE ADOR 81 2 f% 3 44 ? 53 P Ad E 254 5 FOA 2 85 27 TIMP Pr. 57 FOA 4 20 EB FO JSR CONVRT 258 FOA 7 _ 90 07 i -GODD- KES SAGED EC DDE 2 ri -? FOAQA-5 3 LOA CHRCNT 1 FAI CHECK IF AT -T-Àf 260 F Oeî FO O BEQ DC 904; AT k TAAT 261 FOAD 4 C 14 FO imp INITL 1 NOT AT STAR Te MSG NO GOOO 26 2 2 -3FO RO FINISH 264 F 090 20 40 F 3 JSR OEC Xlr 60 00 DECODE EXIT HOUSEKEEPING 265 FORI 4 C ID FO imp LOOP RETURN TO IOLE LOUP 2 t'b l,7 FOR 6 E 6 31 INC SKP NT SKIP A TIME AND-TRY AGAIN 6 îr-,)pA 53 i LOA s K Pc Nf 6 l FOBA C 9 05 CMP us 270 FOGC-90 E 4 - Dc 9 D 3 2 -HAVE- NGI-DGNI: Co 271 8 SE 272 FOB 2 A 9 01 LDA #1 T-THE MISSED FIRST TIME FLAG 273 FOCQ 85 OE STA MISTI-4 274 FOC 2-. ? 75 FOC 4 A 9 15 STA XREG 27 5 FOC 6 A 9 00 LDA go "' 77 FOC 995 27 STA 7 IMP Nt à 7 B FOCA 20 EB 2 RO FOCO 90 él BCC FINISH GOOD MESSAGE OECOÈE 281 FOCF A 5 32 LOA '' CHRCNT S FAILE 09 CHECK IF AT START OF MSG -8,-Q DC 905 283 F 003 4 C 14 FO imp INITL NOT AT STARIP MESSAGE NO G On D 2 R 4 FO Db ne 9 os 295 FOD 6 A 5 02 LDA T Re CT 1 2.96-FOOS FD-03 - 287 FODA 4 C 14 FO JMP INITL GIVE UP AFTER 10 t AIESONO 283 FOOD Dc 9 D 6 2 $ 9 FOQQ E 6 02 INC Di REC 1 2 9 3FDDF -20 09 SR P VTI 291 FOE 2 Aq 09 k DA #9 293 FOE 4 85 15 TA REG ) 3FQF 6 A 9 00 V)A O â 94 FOES _ 4 C40 F O (NJ ro DE 39 I)CCGI)E 04-MAR-82 ' PAGE Il FIR L 1 H Af)DR 81 32 93 34 i O Je FUAGE 2 5 Z 7 O N VÈi Y T'HÉ-fii E Z 99 CONVRT 300 FOES A 9 00 #00 CHAR -CO-UN -f- FOR STARTCHAR 31 l Fofo si 32 STA CHRCNT 'O,'-POSITION I USED F 8 R O COFSCHARS 302 1 POSITION 1 USED F R 8 M 10 103 FOEF A 5 22 LDA PNT Lobf+l SAVE INITIAL POINTER 304 FOFI 83 2 F SAVLCW 305 FOF 3 A 5 24 LOA PNTHGH+l SAVE IN 171 AL POINTER 306 FOC 5 85 30 $TA SAVHGH 309 FOF 7 Ab 15 ? 09 F 094 A 4 27 LDY TIMPNY' 310 90 fl Aq 01 LDA 40 CLEAR THE REFERENCE TIME REGISTERS 311 FOF 9 Aî 00 STA C 4 TLCW 312 FOFF C 5 01 313 ADOLOP 314 FIOI 51 21 LDA (P Nt LOW)o Y ADO NINE LOW AND HIGH TIMES rq 315 F 103 Il CLC et 3 là F 104 -65 r NTLCW O 317 9106 85 00 STA CNTLOW te 319 FIQB 81 23 le 323 FICA (,501 321 Fl IC P 5 01 STA CNTHGH 372 Fia= 20 sz F 3 JSR INCY BUMP Y-REG & CHECK PAGE BOUNDARIES 323 Fili 'CA DEX 3 ? 4 F 1 1 2 DOED F ADOLOP ? 2.5 F 114 46 01 LSK CNTHG 4 DIVIDE CNTHGH-CNTLOW SY 8 327 F 116 66 00 ROR 321 Fllq -46 3 1 FIIA 6 b 80 ROR CNTLCW 330 Fl IC 46 1 LSR CNTHGH 331 FIIE 66 00 ROR CNTLOW CNTHGH-CNTLOW HAS THE REF TIME 332 'T -C'T'H"GH'-ct-C -333 F 170 A 5 CI LOA PU O 334 FIZ 2 q 5 Oq STA ADJHGH 1 ADJH H-ADJL 335 F 124 AS 00 tf)A CNTLOW os çl' A AD JLGW 338 Fis 46 09 ' LSF( ADJHGH DIVIDE THE ADJHGH-ADJLOW 319 F 17 A 6 b Oe ROR ADJL 8 w NU 14 SER BY 16THIS IS 340 -FIZC 4609 LSP ADJHGA 341 FIZE 6 b O R? Aojhnw 342 F 130 4 b 09 L ADJ G 4 343 F 32 66 ci ROR ADJL 04 344 F 134 46 09 345 F 136 66 on ROP AUJLOW úBA 03 MSINI-J ION 910 3 NFI LO 00 6 L Id SVú I Nn C'J d WD cc sa L 4 Id 1/ L -60 -6 v ç z 1 d ', CIDQ 29 ú 53 WIL 9 AING úY ONIUDO 1 és:JA dvir ul Dl, ELI:i IGZ ION dl H 3 N Vbg 3 AVI 00:,5 SIW CIDO 03 b úO Od OL Id DUC SI Hilli 30 c DM l)NIAVI"di' viimrw voi Q Od tid NOII SU 9 N OJ JNI d O 'AMIE SIHI O 1 EC 99 D 91 d 9 Lt AUVON 1108 3 C Yd)IJBH 3 2 03 b-A dffl9 ADNI Usr Cd 2 e OZ 691 d LZú Ibve V soll box dl: xioci Du lob 90 1 tL,IJ 'LL OZ& V SV Il I Nno 2 eni 4 à y si owli hns 3 NO DNI va q: 5 5 1:1 IVúú licou y Si 3 WLI 1 EDO DDU zo Ob ú 91 A ELZ úDo ZLE -.Zrxg-14 C)I1 r,ÀO il 1 57 19 le ILú m 38 V APP L A&M'Ilffl vol IZ 19 ds I= OLL #&Il# V *A*CHDMI Ndj>kjo Hlwj LIG 3 NW 1; O tu ob Ijbyz osa ié V'A( H'JMI Nd) 3 wil: -10 'D - 6 b iq - 49 t- SHI M 1114 BWII SHI 3 d Vd WU 2 t A (USHúNd) vol cz lu Lsid 99 E 59 ú xvi vv 9 sid 1 9 ú Tg, GNV bz 1 SI:f:1 úy,& X 30 NI 3:)Yd S/'d Yg 3 WI dn igs t i Nnai vol LE Sv ZId z 9 19 ú I+kl)Hl Nd Vis 7 Z Se C 51 d c O çi H 59 AV 5 vol Oú çv a 1 14 t L 104011 ud vis z z bd D'ili Sú aniv A V 31 NI Od 010 1-30 1401 AVS vol dz 5 V 'q I, 1 zi Laú îNd W Il AGI LZ IV 8 17 1 j 9 iú s 3 Ncr v L v oç a ç, id ssz INIIOD vis úú LJ 171 d Salivd S vis 90 sa 2 1 1 dESú SB:)Vd S ONV SUYS AVYN 11 t suvo vis l W sî Olyld zsc oo 611 Ucid ISE Obú V dd 3 k DO Cc 8 1, E I:it-Y E I Nno 3 ssvd t 1 go sa v Eld P 7 c -23 (r ZDN l' a Hr-li Nt-9 Do -,00-,6 y-"Szl d' 3 D Vd 11 j E' BDVWI 43 bilos tu ib Zfa Ili 100 v SNI 1 etij Zl 3 C Vd 3 UO 130 6 ú 300 D r%) r%) CD w -7- oliff 39 OC-CODE 04-MAR-82 PAGE 13 F;R LIN A(DR 31 52 83 14 SCUR IMAGE PAGE 3 q F 17 SA 9 3 i CORRECT 9 OF ONES 3 3 q 4 F 170 CS DA fi O' el cS U m 391 F 17 F 90 62 occ INCREF TOO MANY ONE 59 INC REF 3 q IFISI DO 7 C - 393 r-193 AS 3 ? LOA CHRCNT IF THIS t S THE FIRST CHAR CHECK 3 4 F 185 DO 17 ONE CC 9 19 IT IS A 'Ott THE STA RT CHAR ? 11;-FIP 7AS05 BARS 1 396 FI 59 29 OF AND #$CF MASK'OFF FIRST DITS# TC ALLOW FOR 3 q 7 FIR% e 5 Oc, STA BARS IST-TI 4 E-Ti)O-LONG SYNDROME 3 q I F 19 D C 9 06 C 14 P #506 * 0-3 q 9 F 1 9 r- -DO -5 O NE OCEJt R b-8 AD 't ZAR-T-CHAILAC-T-EP- 4 n D F 191 AS 06 LDA SPACES 401 FIQ 3 Cq 08 CMP #108 4 N 2 FIQS D 3 44 SNE DCCRR BAD START CHARACTER FIC)7 Ag 02 -POSITION -2 4 r 4,FIQ 9lt 53 ',) STA CHRCNT 405 Fl 3 4 C AC Fl imp DC 20 l I GOOD START CHA Ri MOVE TG NEXT CHAR i-SR DE-CO Dr ONV ERZBAR-AND-SP-ACZ-813-SIa-&-CHAP-, 41 q Fl Ai 90 03 scc DEèl GOOD DECODE IF CARRY IS CLEAR 409 FIA 3 4 C El Fl J 4 p r, RR COULD NOT FIND CODE 410, Dcll 4 1 1 FIA 6 A 4. 412 FIAS 91 2 B STA fỦFFPT)iy SUFFER THE CHARACTER* IS IN 'A' REG 413 FIAA Eb 32 INC CHRCNT PUT PTR 70 NEXT CHAR POSITION 415 Dc 2 n 416 Fl Aî AS, 2 F LDA SAVLOW 1 GET OLD PTR VALUE 417 FIA q 5 22 STA PNTLOW+l 41 î Fleô AS 3-1 LDA SAVHGH GET OLD PTR VALUE -) Flri 2 41 85 24 4 71 F 19 t, AS 27 LDA T 1 MPNT Sb 421 Fla 6 19 CLC MSXETH,PCIN Tea TC M NEXT GROUP 42 ? Flf 17 69 DA AOC 910 8 S AND 4 SPACE 425 F 199 90 OE acc DC 12 1 HAVE NOT ENTEREO NEXT Z 56 SLOCK 426 F 1 RO f 6 22 INî PNTLV CARRY WAS SE Ts SU INC THE HIGH 4,17 24. OA FICI E 6 28 INC TIMPNT+l 429 FIC 3 AS 22 LOA PNTLOW+l 431 FI Cr 85 2 F STA SAVLOW 431 FIC 7 432 Ficq 85 30 STA SAVHG 4 433 DC 12 434 F Ir AS 28 LDA TIMPNT+l 435 FICD CS 3 8 Mc NT. 4 6 FILF 90 08 acc DCIS 41,7 F 101 FO Q 3 BEO OC 40 43 N F D 3 4 C 14 FU J 4 P INITL Ti NCNT+l"IMPNT+ 19 NOT ALLOWED V l 1 r%. 1 tn cm Ln tu L., t l i y b, li e- f, i. l j 1 l' COOE 39 DECODE 14 5023 Z 04-MAR-82 PA rqq tly E Acix ni % 2 83 84 SOURCE IMAGE 43,1 PAGE 443 O 441 F 106 A 5 7 LOA TIMPNT S MICH BYTES ARE CHECK LOW BYTES 44 ? F 103 C 57 CMP Tt MCNT é 443 FIDA BO 03 scs DCOK t T 114 CNT 444 5 1- 44 S ri Dc 4 c Fi Fo JMP PCI 44, O Cn K 447 F 1 9 DI: W CLC t GOOD RETURN 448 Fl FD 615 449 DCERR 451 CIFI 31 SEC ERROR RETURN 451 FIE 2 _ 60 rà Ln q DE 39 DECCOF. 1 î:50, 34 04-MAR-8 Z PAGE 15 P a 14 ? 23 ai# 4 c? PAGE, 4 r, 3 4 r 4F 1 O 3 F 6 09 1 NC INCPAS 4 '; 5Fjêr 5tg09 LDA 95 4 56 Ftc 7 C 5 OB CMP INCPAS CHECK IF '5 PASSES MADE 4 57 FIÈ 9 90 4 qi F Irl AS CC 5-HAVL-Z EENMADE#-OUIT LOA DCCPAS c) F Icl DI) F 2 CHECK IF AOJUSTED 700 FA:t RNF DCERR TOU FA Rt STILL NO GOOD 9 QUIT 460 Fi F A 3 os L)A A)J Lnd 44 SI r IF 1 1,1 462 FIFZ 65 00 AOî ENTLOW INC CNTLOW-CNTHGH BY 6 2519 4 (% 3 FIF 4 85 0, 464 F 1 F 6 A 5 09 Sr NTLOW LOA ADJHGH 46 liFI c 165 ADC_ CNTHGH _ 465 FIF 4 F 5 J 31 STA NTHGH 467 IFC 4 C 3 E FI imp OC 5 461 Fl Fc OECREF 46-1 F Ir FF 6OC NC - DECPAS 470 F 101 Aq 05 LDA 95 471 F 203 C 5 OC CMP DECPAS CHECK IF 5 PASSES MADE 472 F 205 qa DA scc DCERR 5 HAVE BEEN MADE 9 QUIT 473-F 207 474 FZC 9 DI p 6 4 ? EN E OCFRR 1 TOO FA Rt STILINO GOOD# QUIT F 20 i 33 SEC 4 75 FZOC a 5 00 LRA NTLOW -477 Fzoz F- F 5 os ADJLOW 473 F 210 85 00 STA CINTLOW 47 q F 212 AS 01 LDA CNTHGH 491 F 214 ES 09 SPIC ADJHGH 482 F 213 4 C 39 Fl imp OC 5 1 1 ,;, 1 oe r- L( 11 Cu Ln Cu COOE 39 DECODE 14150 40 04-MAR-82 PAGE it, Lll A O ', R al; à 2 q 3 84f O-U'R-CE 4.q 3 FAGF- 49 4 F 213 485 " 18 Ag na DA MISSED FIRST TIME ROUTINE 49 à F 21 L% C 5 33 M LOOK AT ONLY 9 TIMZS 4 e 7 f IF FO 03 BFO r CI 4 488 F 221 4 C 5 2 F 1 M DC 6 4 1; Q CC 1 4 491 F 224 Ag 03 LOA li 3 t 4:>l F? 26 C 5OA CMP ON Estim 492 9223 90 59 BC C 114 CZ F F, REF. 493 F 22 A 00 03 014 E DCCREF TOC MANY ZER 059 DEC REF 495 F 2 ?C A 5 05 DA n ARS THIS IS FIRST CHAR SO CHECK IF IT 196 FZ 4 P osen. 4 9 7 F 230 PQ AF BNE PCERR IS NOT 403 9212 A 5 06 LDA SPACES 4 q 9 Fl 4 rq 06 cmp #% 06 P 236 502 F 239 A 5 27 LDA TIMP Nt S GOOD START CHA Ri MOVE TO NEXT CHAR 503 F 23 A 1 q CLC ( 14F 2; B1,9 09 O NLY 9 POSITIONS SINCE We G 9 F 2 3 i) P 5 27 STA TIMPNT 4 AVE SKIPPED THE FIRST TIME 106 F? 3 F Ag 00 LDA go 1 C 7 F 241 F 5 OE STA MISTIM CLEAR THE MISSED TIME FLAG C 3 F 243 AI) 09 -09 -RFEINIT-114 EX REGIST ER. 909 F 245 25 15 TA XREG 510 ' F? 47 Ag 02 LDA NZ S PUT THE CHRCNT AT 1ST CHAR POSITION 511 F 249 P 5 32 STA CHRCNT 51 F 243-4 C i M 1:, , i. Co VI 14.5 Ot 45 04-MAR-CZ PAGE 17 Ln rzp Li I;i: A O) O - 1 81 12 % 3 14 sotiacc 1 MAG i 3 P Aq -SU Il ROUTINES, 515 OÈCDE THE ISAR AND OSOA- et BYTES TO A CHARACTER 517 DECODE 1 8F 24 E - A 5 O i- CASF 51 q F 250 00 15 UNE DC 83 1; 21 F 252 AZ 03 LOX 93 CHECK FOR THE 4 SPECIAL CHARS 522 P 254 - A 5 06 - L DA SPA Ce S. 514 F')56 0-3 9 C F 3 CMP SSPE Ct X 525 Fà 59 FO 06 BH Ocaz 52 6 F? ri DE 577 F 2 C 10 FF SPL ccal 1 Se S F 25 E 4 C qi F 2 J 14 P DC 89 S BAD CODE f 5.112 Ocez i Ln 33 F 261 BO AO F 3 LOA- ESCHAR #X P USE. ç 3 l' F 264 4 C 8 F F 2 imp DCBB 8 SPECIAL CODE 512 DC 53 533 F 267 AZ 09 LDX #9 CHECK FOR ONE OF THE VALID 'SA Re pàa-lúaus- 535 F? 69 Di) U F 3 CMP PTYP Eu X Sib F 26 C go 06 13 EO OC 85 537 FO)F C% DEX SL F Zl)l: 13 F 9 539 F 271 4 C 91 F 2 imp OC 69 A" a IL N OC 85 541 F 274 9 6 07 STX BIT SAVE THE #BAR& INDEX 142 F 276 A 5 Ob l DA SPACES I 43 F 27 q A 2 O 3 LDX 93 r 44 OC 56 PATTERN 545 F 27 A MO 94 F 3 CM P -, îTYPEIX 547 F 27 P CA OEX 548 F? 30 1 FS SPI OC 86 U ATTERN 549 FZRZ 42 91 P 2 imp JA? #SPAC P, n Cp,7 -i LD L)t THE 550-F 285-80-9811-3 A x AND ë B'À:k-i 40 EX -; 1F 21 Nis CLC qç? 9291 65 07 AOC Bl T % 3 F 2 9 -1 AA T"x AND FETCH THE CHARACT ER f 4F 2 PC55 A 4r3- j 55 ME à à f 6 F 29 FIA GODO RETURN 557 F 290 60 LT çç; F QI 34 &O 9 92 60 2 OF 5 114 TERLEAVED DECODE 14:50, 52 04-MAR-82 P AG E LINE A On R il a 2 53 i 4 1; 61 PAGE #Z OF 5 14 TERLEAVEO DECODE 9 562 F 293 DEC 251 & 3 F 293 PATCH 51,4 F 2 q 3 FA + NOP 565 9294 FA NOP 566 F 295 EA 567 F 2 q 6FA + Nop 563 F 107 FA NOP 56 q F 291 FA + NOP 570 F 299 EA 571 F 29 A FA NOP 572 F 293 FA NOP 573 F 29 C EA NOP Co r 4- Ln tu Ln Cu CK) Ln OF 5 STANDARD DECODE 14:50 '53 04-MAR-82 PA'GE 19 Ln Cu F;R LINE ADOR Pl 62 a 3 84 ' '- b URCE IMAGE 574 PAGE #2 OF 5 STANDARD DECODE' 575 F Zq O 1 576 F 290 PATCH 77 FCào 5 A + NOP 57 î F 29 EA + NOP r 79 F 2 9 F -FA- QJ F? 40 FÀ + -Nop fi r 2-11E 4 élop592 FZAZ FA NOP 583 FZA 3 FA 514 FU 4 FA NOP ú 5 FA 5 EA NOP 586 F 2 A 6 EA NOP Co d ON va G Ezd 66 5 d ON, 3 ey;d eb; d ON V eve 1 Lbt VD (Ivzd &S d ON ve Dvii t 5 d ON + i-vi -, d ON vv Li Ebb MON 6 VZJ d ON va Evzd 16 & do N Lvd 06 b K 31 vd LV Ld idnisa úVU Vqs 39 vd Lub tg CU ZZ 19 b OOV Nll Uti ru oz 19 vd 100 DIG 'Jefl LM Co C" àA(,E 21 VI Cu LI Ni AOIK 81 12 -13 94 SOURCE 'i MAGE PAGE "EAN I)ECDCFO 601 F 2 Pl b O P 29; PATCH 603 F Zft 1 E A NOP 614 F 282 EA NOP 605 F 293 EA 6011) FZB 4 FA NOP b 07 F 15 EA NOP 603 P 226 EA NOP 609 F 2 û 7 úA P 610 9138 EA NOP 611 F 9 q EA NOP 612 F 2 BA EA NOP Ln VI 1 OA*OCO 43: 5: 04-MAR-82 PAGE 22 ARR LIN% Af 3 Olet 82 63 fi 4 SOURCE IMAGE 614 F 8 __ _ _ _ 61 b FZES EA NOP b 17 P?rn CEA NOP 618 & - O élc> F'21 FA NOP 623 p 2 qFA + NOP 6.?t F' CO FA NDP 623 F' C' FA 623 F 2 C'y FA +NOP 625 F 2 C 4EA NOP L -, j d ON V 3 3 D Ed 6 ú 9 d ON D Ld ça,; dri N V 3 Z'JZA U 9 d ON V 3 VDú:i I ç 9 do N VJ CI zd i E 9 dc N 3 S zi Zú 9 d ON V 3 q Dzd O ú 9 d ON va sazd 629 SDZA LZ 9 vd alivwl 331 dnos fi É Zt lu k û ti V 'ï 1 1 ob 3 CZ 3 O Vd Zs-bvw-,O BCCU 30 DçI r U LM 9 %) Ln -Ij Co Co t 4150:56 04-M Aq-32 21 4 ' 'd E MA GE' ERR LINE ADDR 81 8 Z % 3 q SOUR 639 PAGE 'CODE Il DECODEO b 4 OF 2 CF 641 F 2 CF PATCH 642 FCF EA + NOP 643 F 200 EA NOP 644 F 2 DI _FA 645 F? 02 FA NOP t 46 FD 3 FA + NI)p b 47 F 204 FA + NOP 643,F 2 D 5 EÀ 649 F 106 F 4 + NOP b 5 lF 2 D 7E 4 + NOP 651 F 208 E A + NOP r_ Lri cm VI ei (N - i 1;, s % i 11, 1 1415 0157 124-M AI8 2 OACF 25 1 _ __ 1 PAGE 'UTILITY SU 3 ROUT E REVERSE THE TIMINGS FOR À REVERSE READ LDA *>TIMLOW 9 SîTMUP THE PO;NTER TO THE STA POINT 1 E-LOW BUF ER STA POINT+ 1 JSR AEVIT a GO REVERSE THE TIMLOW BUFFER Co Co r- Lri Cu tn tu UTILITY SU Uq VUTINES LINE AODA ai 32 ni 6 r, 4 654; b 5 FID 9 Aq 30 61,f) F?" A i IF 661 F 2 r D A 9 04 66 ? F r)F 'q 5jm 663 Mi 20 ô F 2 SOURCE IMAGE 34 ' bbî F 2 F 4 -A 9 00, 1 O 9 > 11 MH GH A S E_T -U PL -T B L-RO IM 1EX10 -T Pl F_ 666 F 2 r 6 a 5 i r STA P 017-r TIME-HIGH BUFFEP 667 Fce A 9 O 6 LDA a 675 F 290 A 9 00 DA #>SWAP SET UP THE POINTER TO THE 674 REVIT 67 , ç 2 F 2 95 25 PNTSWP SWAP BLIFFER 677 F Zi:4 -A 902 #CSWAP _ 21 679 F 2 F 6 85 26 STA PNTSWP+l 690 F 2 > FeAli 38 LOA TIMCNT+l CHE% Ir MORE -r HAN 256 TIMES 67:; 6 8 IF 2 FA-C 9 01 CMP 901 - w Ei L 8 î, ONLY BàOKOSAVFD 68 ? F 2 FC93 02 TIIIENT+im 583 FZFE Eb 20 î'NE WNT i T M N + WENT INT N BLOCK 6 P 4 t b Rb 8 IN It THE REVCNT TC 07 Fil 6 687 F 3 02 85 34 681 FîQ 4 A 5 38 -__OA T 1 MCNT+j 689 F TA- REVCNT+ ïjî 17tifÉ 'cïf bq I F Ing AI 00 Ll It T Sip 691 F 30 A 85 36 ST Sd ; 1 _ - __ 8 ", Lri Lri UTILITY PAGE Cu gq P Ll%-E ADCR Al 32 B 3 i 4 SOUR&CE 'im Ace CY 6 qz PAGE 694 F 30 C 6 34 DEC R ÉVC, A Y' peu 6 Q 5 F 30 E 4 34 LOY REV NT, 6 qb FIIO mi 19 fl $OVE THE LAST TIME IN THE RUFFER Li A (PRI Nrl#Y 697 F 312 A 4 36 L Y Sw NT -To Tt IE 699 F 314 91 2 i STA (PNT$tfp)7 -"' 8 UFFER. 701 F 316 A 5 34 LOA REVCNT 8 CHECK IF AT BEGINNING OF A 256 MCX bal 701 F 313 01 OA -RV 4 NDT YET 702 FIIA Aq 3 15 LOA REVC Nt+l AT e EGINNINGé CHECK Ir WE WERE IN 703 F 31 C Cq 01 CMP 401 2ND 2 56 8 LO K. 7 C 4 F 31 E 90 On BCC RV 2 ONLY 1 BLOCK SAVED SO WE ARE ODNE 705 F 320,C 62 O 2 -ALDG K$. Z 06 F 322 C 6 3 r, oric REVCNT*l 1 r 7 RV 4 1 7 C 9 r3 26O ') E 4 N 9 OV 1 C H E C K1 PA T E N O O F1 's TS W A PQL Ocx-, 7 N 8 F 324 E 6 36 INC Sd PCNT 710 F 328 Fà 26 lèiî P14 T S P + 1, I YE St GO t O i ND WAP SLOCK 711 MA 4 COC F 3 JM RVI -T.HE SWAP 714 F 3 PO AQ 32 f)A "SWAP THE ORIGINAL 715 F 3 ?F C 5 26 CMP PNTSWP+l 8 îHECK IF IN ISTBUOFFRE; 2 t D 25 b 8 LOCK 71 à>9331 O 3 ? 1 REO RV 5 WEY 8 LOCK,,,ONLY r AREK OVE POINT 1 TU 2ND q LOCK F 333 6 20 NO BLO 'MIST E POINT 4,1 a M 72-') RVB 1 START AT THE LAST TIME IN SWAP AND 9 F 335 A 4 3 b LDY' Sti PC Nr 721 f 337-8 I-25 1 D A - ( PN Tsdp-) Y,-IMDVú-PARALLEL-,TOIP DI NT)-,BM EF 9 'Z e (.10 INT)9 Y t 7 ? 3F 339 Q 3 TYA CHECK IF AT BEGINNING OF 256 3 LOCK 722 F 33 q 91 1 F SYA 724 F 33 C 00 08 Bal 1 NOT YCT F 33 EAq 02 LDA # 731 F 345 C 6 20 DEC POINT*l MOVE 'FO IST 25 i, BLGCI . 732 F 347 Cô 26 DEC PNTSWP+i El lD C"R'ÈM'EU 'T' 70 N 734 F 349 % 08 'f'l NE J" p 73 % F 34 A 4 C 37 F 3 Imp M 8 CONTINUE T E LOOP Co Co Lfi cj IJT IL IT YSJ1 T 1 MS 1 1 1 014 P 4 GE27 Lri 1 il '1233 % 4 SIURCE IMAGE 7 3 7 - ___; 73 b PAGE, 73 q RESPONSIBILITIES INCLUDE CEARING -BARCFG BAR CODE READY F Lt G ? 1 1 1 DECODE Ei If ROUT NE 743 SET IMESGRGI TO SHOW NEW MESSAG;: IS READY 74 ? FIND MESSAGE SOURCE & STC' IE IN BUFFER + 1 744 r 34:) 6 ECXIT 746 F 34 F A 5 10 LDA SVITR:; CHECK WHICH CODE IS ACTIVE 745 F 14 J C 6 32 747 F 351 29 07 AND #07 7 tq F 353 00 OD 91 NE f)XITI 3 NOT CODE 39 753 F 3 & 7 1 23 LOA (ilu FFPTJY t A STOP CHA Rt THE ? F 3 i FI) ( 1, qo OXIT 2 IS THERE 9 G 000 MESSAGF. 7 % 1F 1 IlC 92 A CM P 912 A 753 F 35 D4 C14 r INI TL BAD MESSAGF - 0 '4 P tn 74; 5 F 160 C 6 37 DEC CHRCNT DONIT INCLUDE * IN MESSAGE STRING 754 F 360 OXIT 2 797 IMPU T -READY-1 ri Ar w 756 36 DXITI 7 cl F 36 F 6 il INC MESGP:; SET MESSAGE REGISTER => ANCTHER XSG 743 3 b 4 85 Il STA RARCFG 760 r 363 AI 00 LDY iloo Y INDEX TO OT-4 BUFFER POSITION 761 F 36 i%As - 32 Ge TMZSIAGE-LENGTH 76 ? 936 C 91 28 STA (SUFFPTJ*Y SAVE IN BUFF Eq 763 F 36 = à 9 00 LOA #Go SET MESSAGE 10 -> BARCODE SAVE-RES SA Gr-ID 764 F 375 cî INY UPDATE INDEX INTO 8 UFFE;(. 76.%F 373 25 37 STA TIMCNT CLEAR 767 F 37 R 5 '33 STA TIPC Nr+l ALS PP R 8 YT 76 r 377 A 5 13 LOA NXTIN GET BJFFER 1 WERE USING 7 ôJ F 379 29 03 BUT ONLY USE UL 771 F 37 , AA TAX TO INDEX REGISTER 771 F 37 CA 9Fc LDA' 9-1 SET 'i 3 UFFERINUSE' 772 F 37 E qî 18 STA PFOIX FLAG 73 F 380 53 r Ll - -I -RE 7 ENAZ Lr I N Tr RRUP-T 5 774 F 381 60 RTS RETURN Tu CALL. 775 SUBROUTINE TO INCREMENT Y-R Er#ISTER AND MODIFY PNTLOW/PNTHGH 77 8 F 33 DID Y-REGISTER ROLL OVER? * 721 -F 383 r O04 BNE- -YRET POINCIER IN REMENTS 77 q F 38 CA INCY IN 7 e? j 55 E 6 ? 2 1 NC PNT Le 1 i; 1 __ INC LOW 'rim E 7 S P Tk 7 'STP GE-K Cf Nr WWV- 7.q 3 F 317 ' Fb 24 INC P THGH+l 1 INC HI TIMES PTR PAST PAGE 00,)NDÀRY 7 F', F 3 qq YRET 725 F 3 3 160 T S ou CD r-_ Ln Cu Ln UT 1 L 1 TY SIMMOUT 1 NIE S k oui ï-î, iii 'ZnLINF fi 1 Rel 13 4 4 796 PAGE 7 5 7 781 DEFINE HE 789 Ag 791 f 3 S A Il 09 18 05 E 1 7 âg o 7 Q F Iq E14 OC 03 12 7 7 5F 398 CD OA 14 IC 09101 795 F 3 QC Ce 00 03 07 SSPEC BYTE 14 i 13 7 q 7F 3 AIJ 2 F2 25 S S C H AltBYTE j$/+% 7 Q 9 F 3 A 4 il 32 33 34 ST Aa LE BYTE '1234 F 3 A 2- 35 3, - 37 3 8 l CI F 3 AC 3 q 30 41 42 q Ol F 3 ,)4344 45 46 02 F 314 47 49 49 4 A 9 C ', F 3 Jl 4 i 4 C 4 LI 4 F R 04 F 3 PC4 F1;-j52 e C 5 F 3 CO 53 5 4 5 5 56 6 N 6 F 3 C 4 57 58 59 5 A F 3 C j212 E2 0-2-A, PAGE 23 AL CODES, 39 ITX CISD" 'Tlà'EE' 1 i 7 i 67890 ABCDEFGHIJO 1 Poqs TUVWXY z ' * r__ Lri Lei 14 sils 10 04- %IAPO 2 PAGE 29 M INTERRUPT Se TUP A-Nn SERVICE CNJ Clé L 1 é-_ MMR M #32 à 3 134 S DUR C E IMAGE 9 ng cil 1 IRO 114 TERRUPT HANDLER ai ail 815 F 3 CC 43 HA i SA Vl E THE A*Xt AND Y REG 814 IROINT A 1 f)F JC)RA ISTERS 817 F 3 CE48 F 3 CF q S TYA Blq F 300 4 î PHA q?.1 F 3 ni go GD 80 LOA -IFR 821 F 3 D 4 20 OE30 '-ASSUREON" F-úq A 2 LED-BI T S 82 ? Fln 7 8 CF STA FLAGRG ' îAV THE FLAG REG FOR LATERGUSE 4 3 F 309 24 Za AND 0328 1 ES FOR TZ OR C 829 THE BCO E INTS q? 4 F 30 a 00 01 BNE IROBA% 325 F 3 CD 4 C ib E F 4 827 O BARCODE INTERRUPT ROU Tie(E 8 2 6 903 AR TZCL so F 3 FI A 9 OP go 1 p 3 î FIC 3 A 09 90 LOX T 2 CH q 32 F 3 E 6 q 00 STA CNTLC 4 SAVE THE T 2 TIRER 9 1 1 F 3 ES 86 01 - - STX:___ CNTHGH 815 F 3 EA A 9 FF LOA ISFF 1 RESTART THE T 2 TIRER 836 F 3 EC 80 08 20 TA T 2 LL 837 F 3 FF -M 09 -30 ZA T 2 CH 31 F 3 FZ A 5 OF LOA FLAGR 3 840 F 3 F 4 29 08 AND fisol t T Ef T FOR AN EOGE IN Ti CC 82 341 F 3 F 6, 03; L-YE t I T- JS C 62 -SERV ,F- -Il 843 F 3 FA B 5 04 M TTC Y ME"TIM 4-8 'DU'T 9 SET THE TTO P 42 F 399 A 9 FF DA R-i 844 FIFC AS 01 LOA TSTAT LAG AN CH Er K IF LAST TIRE GOOD. E 4 5F 3 FE10 _2 P-1 rfinnil IR 9 _'RESSAGEIS FINIJHED 84 S F 400 4 C 33 F 4 J-14 P IR 083 1 SAD TIME REINIT WAéi OEO-GE OETEC'r 943 F 403 ?,O 01) 80 STA SUR R THECBZINTER;t UPT H Tji A A 31.7 IRQ 51 Oir t-DA T Tû. L Ji T a 351 F 408 Fo 07 au IR O CCUX'ED ? 94 AC 85 04 STA TTC 1 IT 0109 CLEAR THE TTC FLA Ge AND 851 F 4 t)A A 9 00 D 00 NP-90; E PETE TDRA - 853 F 40 c_ 4 C 33 F 4 AVSOVL ids CO ril vtd S a O Sv il'H t 1 1 IX 9 Nv 00 40 ve SYM 3 wil di f uvobi dwr 5:i 9 ú Ui 99 v 9 ibs Ug IST 03 U V Dd NI Od Nt S Od-03 N MIS i v 3 ds vis 08 DO os 111 d i 2 a ï '>J b Lb 99 D-JO 3003 S Od,t vssa vol V 5 6 V d Cti OW z 9 LA visa 91 (il 6 V Vú'd L La ZOSO" IZO-6 z 9 ú 1 >dIl L Er 31 VIS b 3 MIC 3 HI 01 NC I Nav 5 d Gúa;'HDIBN 0-:is sO Od SZI>d 9 L F foi g Li ONVM BHL do Bl VIS BHI 013 U tilod vol os 00 UV CE,d >Lb 1 EX 3 I Lb(ldl dwr sd 9 ú DIP Octe Lb Co Ztd ILV V(J1 D Zid C Lb -3 GO:)30 Dl' Auvav-: Ossa vc'l zscul O? 6 V 8 z loi b 9 s v ssgwl Ixa N 10:1 IINIBU IVISI VIS sa V Zld bçu isoiii, dtir Et:)t,5 Z'i -1L'; 6 Di Vie 3 wil-gocu ewi 3 mis S Ivisi vis úO Sd CZ 1/ çqs gwil 0000 y I Vid e Otll#, vol 6 V 1 z Id sve 0:) 17 9 û a W Ildo01 % 01001'X 91 :ik 9 il 9 HOMINI vis W çs u 1 $H 19 b c 9:1 A S bois dd Oi bleu G 9 6 J 401 IN 3 vis 00 9 Slti Fip id fi 11 iltd 45 U 9 J 40ON, -*i 00 4 moa 1 1 'pà 9 bd -l' Tti S 1 i q 3 bnos t 1 b%i afi1 btuov a Nilu k:% tn LA Ut 30 ve il a Di Auss o Nv dni 3 S idndu 3 l NL 10 Co Co M- re - 1 Lf) 1 cm Lri cm T 5 Tun ANO SIQVECE 14:11:18 1 11):% 3 134 S Iu Rci IMAGE PAGZ AND LàW TI M Ei;" C 6 ii S SAVE THE lqos Av F 44 '3 A 5 01 LDA CNToww),y LOW 8 BITS OF TIME F 449 A 4 37 C 44 F 91 21 STA 1 PN W r 451 A 5 31 LOA CNTHGH HIGH DITS OF TIME F 443 91 21 -STA 1 PNTHCHI 9 Y F 495 f 5 37 INC T 1 Mc éi T MOVE POINTER TO NEXT LOCATION F'.57 FD 03 8 EQ IROSV 1 GOING TO NEXT 25 ô SOLCK P 45 a 4 C 35 F 5 imp IRORTI NDRMAL EXIT F 45 CFô 22 INC PNTLGW+l MOVE TU NEXT BLOCK OF 256 BYTES IROSVI F 45 ú 5 ? 4 INC PNTHG 4 + 1 l:463 C 6 38 j N C 1 1 M C N f i 1 F 4 b 4 C 9 02 Cmp 1102 CHECK IF O OF TIMES EXCECO 512 F 4 b 2A 53 S LOA TIICNT+l F 465 90 03 BCC IR 096 STILL OK F 46 R4 C1 LFO 1 TL -EP ROR-9 9463 4 C 36 F 5 I R Oa 6JM p IROPTI NDRMAL EXIT :Tr- n q( 13 (D 4 ci "J 5 Co CY INTEROUPT Sf TUP Allin SPERVICE 14:51:21 ( 14-MAR-32 PAGE 3; A) r):t 81 R? q 3 R 4 ' ï"IMA Ce"'-" PAGE TEST F Oct MAGSTRIPE'INTERRUPT 91 3 P 46 EA 5OP L D 915 L AGRG - 111 > F 47020 10 AND #SIO TEST FOR THE MS IN Ts CC 811 QI? F 472 Fa 01 SEO IROZ NIT IT GO TEST FOR E BD INT -0 MAGST RI PE S ERV 1 C E R OUT 1 NE Wl L L Ca HER E ) Iq Q 2 D 1 O 72 __,;;:Z,_ W 1 a , JIS INT IS TO BE IGNORED RESPONSE TO AD CMD). L-AR E-ZRANS F E;t M NG ffl a> SUCCESSFUL TRANSFER )o IGNORE IT CHR XMITTE 09 INIT 20 ACC N 15 ME 0. T EN Di GO SEND NEXT CHAR Co f'- Ln CY Lei cj 14 si Is 22 04-MAR-12 ' PA Jr#E 33 -' A Rv SERVICE ROUTINE SZURCE IMAGE LIM 5 ACIR 41 37 53 %* PAGE a IE-BOAR-) SERVICE %OUTINE O Q 26 - JF 474-AS Of A F-L AG 927 C 476 21 02 AND O 502 Il TEST F Oq Ti Q 25 923 1 47 en O01 BNE 1 R O Efll) 0 > 9 F 47 A 4 C 36 F 5 i Mp IRORTI NOT IT* AUJ 931 JE-BOARDANTERUPT'ROUTINE 93) C 33 F 470 l RQEBD O 91 4 935 F 47 E AS 17 OA IGNRFZ 1 CHECK IF TF 1) 35 F 77 D top -137 F 490 30 72 BMI IRGE 6 IFOLLOWIN( 02 A 5 ro C 4 EM IF-Wi 939 F 43 LOA f:xpoi 939 F 4 F 4 33 17 8 M 1 IRQE 1 MESSAGE BL Q'l F 4 %q 6 Ab OF 80 LCA APRTNH READ CMI) pf F 4 , A O_ 91 AO ki Ecx-mkx 9414 04 e 4 FO 34 SEO Iq QE 2 1145 FZ 81) Cq A? _CMP #SAZ CHMANS m-1 9 b-F 48 F FO -3 E_' Y S-G Xjij t) 44 94 q F 4 QI C 9 20 CMP #360 CHECK FDR C q 47 049 F 493 FO 69 8 EO IROE 4 9 rl F 495 C-4 p çico 1 CHECK FOR C o Do 1 q 52 F 497 Il oz IR On 53 F 49 A' 4 '36 F 5 itip IRORTI SAD COMMANC 955 F 490 Eb 2 A g X Mj TPT POINTER TO 057 F 40 r A 5 zt A Xm TPT 1-T PT -05 i il n 5 l F 4 A 3 93 OF acc IROFII; NOT AI END q,O F 4 A 5 FO 00 SEO 190 il STILL NOT j 96 2 go U q 63 F 4 A 9 85 16 STA --EXPFG' END"'M FF 764 F 4 e 85 2 A STA XMI PT THE CF ET MSG C, q 65 F 4 AD A 6 39 LDX c l S u M AND HE 9 bà F 4 AF- -E 5 -39 IA ' __CKSUM E ï E Q 67 F 411 4 C 26 P 5 i Mp IROX 4 t-' N Vr CHMÉ C léli IROEII q Oj 9 F 4-14 A 4 2 A LOY XMITPT 97 f) F 496 Si 25 1171 P 483 Ai TAX q 73 9494 b 5 9 AOC K 5814 1 ADO LIARACI q 72 F 4 q 9 13 CLC 974 F 42 C-35- 39 SIA KS i E E 50 INT 9 (Ckll T SE BAD' INT $ O IGNORE b 1 AI r T MT Fftnm RA Rroar - IFFER. l OM E BOARD W O CÀ 1 CLEAR nu Mn AA e EK'4-C'LEAR-'TH'E' IR POINTER. :CKSUM FOR TRANSMISSION çl Im - UN TO E-30 ARD H"Qjl E -XM 1 Jr E O,,, ER TU CHECKSUM ** - e-RIARD SERVI Cr ROUTINE 04-MAP-it 2 P Ar,ú 34 L 1 NE AC 01 91 J 2 83 84 Souitcr IMAGE 9 ? 9 F 4 PE 4 C 26 F 5 imp t RCXMT 1 SENO C 14 ARACTER TO THE E BOARD 973 F 4 l A 5 IR LDA TESTFG 'l CHECK IF WE ARE DOING St Lf:Tú-S-r IRQEZ 971 F 4 3 30 05 3 MI IROTST YE St SEND SELF-TEST STATUS Q 91 MESGRG 40 *> NO NEW DATA 980 F 4 C 5-A 41 1 __ DX ME-SGRG- 092 l EWODA;A AVAILASLE 93 94 C 7 4 C 26 F 3 i p tortxmr t, SEND rr TO'Ir; >E E 8 AR Ln Ln e Aile p 1 çqv 1 CE R 19 JT I ME 14 ' 51:29 O 4-t UP R 2PAGE 35 A11 Il 3 4 4 ' ')UICEIMAGE Cu 9 El 9 IROTST ,I Q 4 PAGE 9 p, Ft CA A 6 12 u) x TES Tq G SEND S EL F TEST $TATUS TG E BOARD 9 q 7 F 4 CC 4 '26 F 5 Ji Mp i Roxblr '41 F 4 Ct A 5 14 LOA NXTOUT PSULT TO ACCUMULATOR qnl F 4 CI 1 ?q oi A 1 %, 11UL 03 G-T THE LOW 2 BITS OF COMMAND 9 ? 3 q Q 204 L'3Aî TAX 994 F 406 25 16 STA EXPOF; SET EXPECTING DATA FLAG 9 I? 3F 1, IC 4AqFF LOA 9-1 9 Qb F 409 F') EC F 4 LDA g Ar-PTL*X USE X TO GET LOW ADRS OF CHR 6 UFF :R 7 F 4 DS85 ZB PUT Il -INB Urf FPTLOW 99 q F 4 D(,' l D F -J F 4 LOA 3 Ao PT 4 v X USE X TJ GET HIGH AOR OF CHR di FF Et dit Qq 5 a -1 z? C 4 f) 95 2 c STA BUFFPT+ 1 PUT IT IN BUFFPT HIGH 1 Z 01r 4 E 2AIon THIS 15 FIRST, C 4 RLDC&TION- JYO In G 2F 4 48125 LLIA (BUFFPT)*Y Ln 11) r 4 r 4 F 7 F 'i 01) STA CHR NUM NO OF CHRS IN THIS MSG SUFFER 1 r f,3F 4 E,%A % TAX JOCS F 4 E 9 4 C 26 ICIC 7 F 4 FC 3 A 13 PTL 9 YTE XH Apri irii F 4- O6 e BYTE >CHR 3 2 IZ 9 F 4 F A 4 JI:)F 4 CFD BYTE >C Hiq B 4 IC 2 F 4 FO 01 e ADPTH BYTE 111:; F 4 F 3 0) BYTE "HRP 4 1018 F 4 F 4 A 01 80 LOA PORTA -INTE Rk UPT 102 J F 4 Fq85 17 STA IGNRF' CLEAR IGNORE-C Al-INT FLAG 111 q F 4 F 7 A 00 LOA blo -.5 -RTI. 1071 F 4 FE 4 C -36 F 1 O 2 3: HERE FOR a NC 014 MA"S FR 3 M E-BOARD IMPLYING SUCCESSFUL 1025, ; , ,'4; MESSAGE TR S Fe R l'à? 7 F 4 FE 45 14 LDA NXTOUT 1 GET SUFFER 9 14 FIVE JUST SENT 1121 F 5 OJ 4 îq 03 AND f 103 BUTûNLY USEFUL BITS lo? 6 F 41:E F 502 A TO 1 'NO EnREGISTER 1029 CLEAR THE, sbFFER IN us Et, 1131 F 5 C 3 AI 00 À M M t FLAG J 3 ? F 5 C 7 C 6 Il DFC MUSGRI DECREMENT'if OF MESSAGES READY Ir II 31950595 is N DIX SEND I O 33 F 509e% SAOT O E-P D TO KEE:?OLL GOING 014 F 50 A Eb 14 INC NXTO T" UPOATE OUTPUT BUFFER F 50 C 4 C 26 FS imp IRO Xur SEND IT IMI 6 riop PATCH r O 37F 5 CFEA E-SDARD ffl VICE ROUTINF l J'5 1: 3404-Me R-82 PAC-E 36 LTNF A(D;t Pl 82 R 3 94 ' VIURCE IP 39 F;i 1 OFA Nl P ? 9F Il EA I'4 i')F 512EA NIP A N'i P ICLI F 113 r- 1042 F 914 EÀ NOP 1044 F,Ib EA NOP 1045 c 517 E 4 NIP 1 C 45 9518 EA + Nop IC 48 t HERE FOR C COMMANDS REQUIRINC >-BOARD SFLF TEST IC 47 1.'49 1 Ci O F 519 1 r, 51F 519 PATCH_ 1 rr -)Fill EA NOP 1053 Fil A FA Nc rp 1054 9518 FA Wo O 11.55 Filc E& " 16 F 51 N F: NOP ui Inc 7F 51 zFA NOP 1051 F 5 20 EA 1093 F 51 ? FA NOP 1 O 1 O F 5 Pl FA 1061 Fn P 2EA p 106 ? F 523 4 C3 b95 JMF 1 gt QRTI 1065 F 526 A 9 FF LOA fis FF 1066 F 525 81 03 PO D,') O A CHANGE -PORT A TO OUTPUT -67 -ú O YH EE IC F 523 SE DL TX PORTA DATA TQ-. I 49 F 52 F A 9 00 LDA #$Do, t GE PORT A SACK TO INPUT 1069 F 530 80 03 q D STA DOPA I CHAN 107-) F 513 4 C 36 F 5 imp MRTI 1071 F 536 1 '7;) 1074 F 536 6 q PLA RESTORE Xt Yt AND A REGISTERS 1073 1 R O R T 1 1075 F 537 -AS 1075 F 53 e ba PLA 1077 Fi 39 AA TAX 107 R F 53 A 69 PLA 1079 -RT-1 Ln Ln 14 11116 04-%i AP-R? PAGE 37 Cu LI %E À)DR e 1 7 e 3 i 4 S;Jt)%CE i 4 AG r c%à l lie PAGE -4 f WZIYle JITIALIZ$èTIINO ical lot INITIALIZE SENEAAL 14 EM Mk Y ROUTINE ils? 1085 -9. E Io SWITC 4 103 ? cfc A 3 li c REAO THE COD ICCI Kiiz ? 5 in T S ITRG AND STORE IT. 1 r 19é; 4 1A LOA fliso 141 TIALI ZETHEBAR CODE- 1000 P 543 95 03 STA TSTAT VARIABLES ON O 91 F 945 41 ? FF LDA 0-1 F 547 8 i 04 STA TTC IC'q 3F 549-49 00 LDA 90 I Cf 4 Fi 4 i 85 37 STA T 1 mc Nt VARIASLES 1 CI Q 5594185 33 STA Tlpcp 4 T+l 1. 1096 54 C PS DE STA MISTI-4 t 1097 F 551 e 516 TA 1003 Fr,53 85 Il STA IGNRFG Ln 1 tl Q-,F 15585 la STA TESTFG lipn F 557 5 9 STA SAR FG 1101 F 559 85- 12 lie> F 553 35 00 STA CHRNWA i i c jFi 5 oA 5?A STA X'IITPT JIC 4 F 55 F Fi OF STA FLAGFG 11 ( 15 F '-6 L A 9 00 1106 F 63 P-5 21 STA PNT Lr W 1107 Fl Jà 5 Ag 04 Lf)A * Ciel 1 13F 571Cb 13. 11, F 573 60 RTS 1113 F 574 OUFINI _Illh, T A NXTIN T ()-O TH-INPUT 5 UFFER F 574 Ag no LOA don F 576 85 1 _; I N I T IA iiii r 57 'l 85 14 STA èIXTOUT 1 INITIALIZE TO OTH n UTP Uf '"u FFÉ 7-''- 111-7 F 57 A A 5 le STA e FO CLEAR 1123 F 57 C 95 IC STA OFI BUFFER 112 ? F 580 85 IE STA BF 3 PLAG 11 ? 1 F 582 Ag 40 LDA XSAO 1 INITIALIZE MSG REGISTER TO SH'IW* 112 1 Il?/, F 594 05 Il TA MESG Ra 1 NO MESSAGES READY TO XHIT 1125 F 586 60 r- OD Ln Ln I'TERRU'JT INITIALIZATION 14 8 5 1 4204-MAR-82 PAGE 34 cj L 1 kf Fàfltl '32Al 14 source imi GE Cu 1 1 roi PAGE ll INTîAUPT INITIALIZATIONI INITI&LIZE INTERRUPTS ROUTINE i 27 1131 A-# SL-J?- 1 1 île 1132 SETINT 1134 Vi RQ O -D OC 90 STA S 1 r A t Lt INTERRUPTS I L -lt 4 'r F RR UP T FLA 1 1 '43F 597Aq 7 F LOA lis TF 1 LI 5 F 83 00 9 CI TA S 1 FR L AR-LAE 137 F 5 q F AD On 80 LDA' P,)Rtn READ THE STATE OF 'f HE WAN 59 1 ? 1 Fi 92 29 02 AN D Pi O 2 1 AND SET THE EDGE Df TECTOR IC 112) FOR 1131 F i 9 4FO O E Y IDA-30-UC MKER- W-à 1143 Fi 9 à A 9 JA LOA #ZIA 1 NEG CDGE Or C 92 J E,_ 1 LI F Sq B 4 C ?P F 5 j 4 p ST 12 1 CIA AND SA ALSO SET NEG Ta 4 NS ON CAI 114 ? STII 'POS TRANS UN CBIP PULSE OUT JN CA 2) 1143 F 9 BA 95 & 1144 STIZ 11115 F 590 80 OC 80 STA SPCR 1147 F 5 AO A 9FF TZ -T I n EgW ITH -THE, M AX. 1149 94 AZ Bc 08 PO STA T 2 LL t COUNT AND EN Ae LE T 4 E'Ea G-e INT. 1190 Aq À 9 AA LOA #SAA IA Am BARCODE ONLY 9 92 z MAGSTRIPE ONLY 9 114 q F 45 Pl Oq 80 STA T 2 crf 1 1 c 1F 3 AAC DO E80 STA SIER Ilr,2 F 5 AJ 60 RTS 1154 *XZFFFA 1 DEFINE THE VECTORS 1156 FFFC END Pl y C O QUIT1 19T 1,%L 1 ZATI t 1-j 14 1:41 01-i Ai8 2 PAGF 3 LAAFL VALUF C 1 O 1 1 3 3 74 01) O 9 41 3 34 33 î 4 î ? 4 j 344 464 4 * O -,.IJL r II 4O,),,) 3 40 3 36 33 4 4 3 45 460 4 77 -1 20 9 4 1 qtrn TH F 4 FO 24 3 : r, a j il C 2 il, 1 9 96 1),17 :b 5 1 53 09 % 75 S 571 Il 00 37 3 5 ? 395 3 97 495 1 a à 'Z F G n l el ')C OID ID 5 36 3 76 -à 7 1 R 1 7 72 10 31 11 19 1 10 1 C -bî 1 12 ') 00 1 D -6 q 1 12 1 3 O-) 1 E 70 Il p 1 T O 1-1) 7 39 541 5 52 IT AILE -, 3 4 3 1,4:7 99 Tvf)c F 3-% 5 3 5 791 UUFC p Ir 31-1 2 i -31 242; 144-412 750 762 26 &-9711- 997 q 99 1002 AUF 1 1 1F 574 143 -1115 SUFP 111 T 7 -1 Ln ú Hq 5 F 1 03 3 A -104 r.-ilr 2 006 F:105 1003 013 r 4 r"i D 1 C 0144 lob 11)09 014 1 C? 1010 11) 15 CHR C 14 T5032 89 259-281 101, 393 404 411 511 745 749 7915 761 CH-7 NUM (,)CO -45 958 1004 1102 C.K cuit 0039 -94 965 966 973 974 367 465 466 479 481 333 959 861 u't MCNTLCW 0000 -M 311 3 16 317 327 329 331 335 3 7 1 4 6 2-4 63 47 6 -4 7 8 832 Cllhjvc T FOFB 257 278 -î 99 C r UY T 0033 -90 3 5 4 62 378 384 dffl Cci FOF 7 -307 - 445 C 11 Fi Ab 408 -410 rci? Flrq 425 -433 )C 1 F 175 390 -382 1 e 14 F 2 24 -t 9 7e 489. ncis Floc 436 -441# F 1 -% C 405 -415 n C 40 Fi 06 437 -440 r-C F 1 2 -361 385 488 t(: 7 Flà 3 361 _ 369 -372 r r F 167 7 375 6 L 06 qú O lut b Lk 1 1 j I, - Ctoz; Lqs 6 L?-_ 9 z b d t U b 1 úgr 91, 9 cj 89 i ú 9 G 51 S &Z'id 4 UL, 4 ? 51 Il b t O,:a 2 6 L 16 't, L 41:i duel 4 j Lez M 19 Z 4 j z z51 > 1 N 1 ku Co bv j: 1 86 ot oeoi 9 ú 6 L 9 L 1 t O 9 d i "Il 9 Z 6 5 16 6 fl M ogî O G O D bli V 1 0 9 z eg ( 1 boi Hb 1 -,; i 6 z 9 q t JO:;j U JY:,'O 19 L 2 5 L 09 ú elixu çj 5 t L Z 9 k j 1 1 1 Xf cc zjoo LVZ 3 t; Ili i 29 l 16 ú d I:i "') z Z, 69 -> bv u'J=U Ltç L 041 c c i -;c 091 Lïl Qzd v 3 'z 1 o 1 _8 6 1 Isid Nt e D; 19 b 6 1 k 1 O é K, 9 L 1 4,5 Il oi O e -ci 7 b D i-,Co Lzg oiz -:) z:l D'o V D -A 9 IZ t 6 l V 9 ce to GL 5 t) 1 Zzi s lu Z 9 _ 15 1 Il J 1 Z, Uúl 1 1: ZOOU t L 6901 99 01 úci 1 1 E o V tenu 00 L 6 le 65 ' Ls- 61 t 6 01,? O t, 66 zi b fi 955 bts Kb v 1 b z:i tlti Zj cçg 1 zd FIS n ébs 4 a LU ju 1 ,' 75 V L c ,v Ju Z:j i; US 6162 51 1 92 zu m, 1; bi k DU i, S zii ç L( d but im 992 O Ci 2 9 c'a v (,'J (j 7 rood D" OLE Z 2 L tL) Xj b ( 1 e oz> Ju qe el 01 L 40:J 1 O JU Co Co OCI, 91 * L%ú JO ce 04 ul'Av S Z Et Rit 65 9 90 1 ;_ fiú O HUMA v 1. b bu; b CEL VZL 51 ú:1 LAC RIL 9 IL ú:1 s Ak, 529 Z 9 Ocd úAd ciú to L O cd k Ad TIL 60 L Z 69:)Oúd IAC tú 9 t 9 q ú 99 oizd 1 1 A_,, j L ZOL COL 569 6 9 6 9 L 99 16 1 ic(i 1 fq:) A c Lu 1 l-t 42-bol 000 Y VIGI O TT__ _ _Io O r VU j ICL, ZZL úIL dico INI"d -ZOO' dk Slid CA 969 ú 89 899 999 Z 9 099 1 pi soit ço Z 06 tbe ZRú 6 Z 9 Z Lit Oúú vaú 1 1 cúaú ocz EZZ L IZOO M 011 NU 2111 0111 cob 969 COL IPV L Zi 99 C 09 ú 9 L ' '-"CZC-0 HDHII, I 61 68 C 'y L C ssi ztl_ voclo W(IS=t u ffil 11521 kzil obi ' J, 1 LO 1 A ul x \ LL t Do N 1 1 ', iv Tçac 15 oij,,i 0 00 (jo ')'c v ItLn 9601 - fl S, 6 Lú W 2 li: Borlo talc -1 S tel %D tzil ED 096 6 4 cç 1 1 uu ti 5 b O rioco Abz;% ir. 951 9 ç 1 CO 15 s 9 z 602 Z 91 Z, ú 61obi ; 9 1 1 1 U 1 db% 1, t 9 CT-'SCCI9001 L 86 ú 86 S Lb L 96 9 esd LA 1 586 6 L 6 vîl>:i Os Et 141 J,) O 1 &és l Aszel 16 & 5 ee t-1 id AV b à tiri cz i zqri i Loj_i 56 6 Z 6 606 666 ffl ZL? Il iw, 1 úú 6 ïZ 6 (Júao -J LIOI Zïi. 68 b_ 97 L 6 C'p e, 1 D td Z Zi 1 096 09 e b 1; 6 jd 1 1 j C (- 6 C 6, t ; livcj ait fie è Cita;J* 1: 1 1 %j ui Co -.bwmffl Nj t" %"r, V'm, W à Wè 1 vu L "l ON e toi ISL 61 C 3 1 i b A vz UU 'Ici 1 1 xx-, b toc z 6 z SLZ L 6 oc t, O x Z 601 Z 56 6178 'y b é 1 > 8 tú- 0601 1 ? 88698 999 Lzco vq dw, 1 1 SOS ZOS 1 1 Yú li ezt úO 1 SOIT 199 6 9 OZZ LU lit oulio MZ 1 1 1 b(J 1 1L 99 599 45-C z ZU z a 1 -00 O klljmbl zz E a 1 ?",úb Lcoo J,4 w s 6 ci"O Sob -O 61 1 68 Zbs k 9 L 99 L ziao li eï 5 l os 9-1 10 Il 98 6 ci- 6601 OL 6 'e 9 î fi M 9 úu CI _ Foob lizi OCR tit 900 ii 1 zl iEtt lit I b Q Gki 6 IL SOL L 69 169 zb QúC:o D ii e b Efvol 91 L toi lb 0100 O aï 1 P 4 ZZT 00 (Je 'Hil lh- 9 ZL #il L LL 9 SL 9 001 OZ 20 ïM. j 6 L ad Alb 4 J> 11 zils V> Il 6 CIT ilis G O 01 ldvib Offli S:4 141 l à. ç 6 L 'JES:)bt:i 'Jz Jb Zab Lit Dous l'jus 6 t 001 J Esú oc 9000 SJ'Jv cis WE 7: iceu ir 4)d YS 56 L O;ï Fàrd xî;-,q 15 et$ OZ 611 Goût; celb &Il r PH 1,:i i b ibt j Jb 911 w:1 W 1 L lit 1 1 Mû Ln -4 Co Co REVENDICATIONS 1 Procédé de lecture d'une étiquette ( 3) à code à barres, caractérisé en ce qu'il consiste: (a) à produire un signal analogique à la suite du balayage de l'étiquette à code à barres, ce signal analogique comprenant des signaux représentatifs de quanti- tés de lumière réfléchie par des barres ( 51, 53, 55, 57, 59) et des espaces ( 52, 54, 56, 58) de l'étiquette à code à barres, les largeurs des barres et des espaces indiquant si lesdites barres et lesdits espaces représentent un pre- mier ou un second état logique (b) à amplifier et mettre en forme le signal analogique pour produire un signal de données brutes compre- nant plusieurs impulsions, les durées d'impulsions succes- sives correspondant aux largeurs des barres successives, respectivement, de l'étiquette à code à barres, et les durées d'intervalles successifs entre lesdites impulsions correspondant aux largeurs d'espaces successifs, respecti- vement, ladite étiquette à code à barres comportant au moins un caractère ( 50) qui comprend plusieurs desdites barres et desdits espaces; (c) à mesurer les durées de plusieurs desdites impulsions et desdits intervalles d'au moins un caractère de l'étiquette à code à barres pour produire plusieurs nombres de durées numériques représentatifs desdites durées, respec- tivement, et à mémoriser ces nombres; (d) à calculer un premier nombre de référence; (e) à comparer chacun des nombres de durées numériques audit premier nombre de référence et à produire un premier nombre binaire ayant plusieurs bits correspon- dant, respectivementaux barres et aux espaces dudit carac- tèrç, chacun desdits bits étant égal audit premier état logique si l'un, correspondant, desdits nombres de durées. numériques est inférieur audit premier nombre de référence, chacun desdits bits étant égal audit second état numérique si l'un, correspondant, desdits nombres de durées numériques est supérieur audit premier nombre de référence; (f) à déterminer si le premier nombre binaire est un nombre acceptable conformément à un critère prédé- terminé, et à décoder le premier nombre binaire, s'il est acceptable, pour déterminer la nature dudit caractère; et (g) à ajuster la valeur dudit premier nombre de référence, d'une quantité prédéterminée, si ledit pre- mier nombre binaire n'est pas acceptable, et à répéter les étapes (e) et {f). 2 Procédé selon la revendication 1, caracté- risé en ce que le critère prédéterminé comprend la néces- sité, pour ledit premier nombre binaire, de posséder exactement un premier nombre prédéterminé de bits égaux audit premier état logique. 3 Procédé selon la revendication 2, caracté- risé en ce que l'ajustement consiste à diminuer le premier nombre de référence si le nombre de bits égaux audit pre- mier état logique dans le premier nombre binaire est inférieur audit premier nombre pr,édêterminé, afin que davantage de nombres de durées numériques puissent dépasser le premier nombre de référence ajusté et qu'un plus grand 'nombre de bits du premier nombre binaire puissent ainsi devenir égaux au premier état logique. 4 Procédé selon la revendication 2, caracté- risé en ce que ledit ajustement consiste à accroître le premier nombre de référence si le nombre de bits égaux au premier état logique dans le premier nombre binaire est supérieur audit premier nombre prédéterminé, afin que davantage de nombres de durées numériques puissent être inférieurs au premier nombre de référence ajusté et qu'ainsi davantage de bits dudit pre 4 ier nombre binaire puissent étre égaux audit second état logique. Procédé selon la revendication 1, caracté- risé en ce que l'étiquette à code à barres comprend plu- sieurs caractères ( 5) et en ce que l'étape (c) est exécu- tée sur la totalité de l'étiquette à code à barres avant que l'étape (d) soit effectuée pour un premier desdits caractères. 6 Procédé selon la revendication 5, caracté- risé en ce qu'il consiste à calculer un second nombre de référence correspondant à un autre desdits caractères. 7 Procédé selon la revendication 1, caracté- risé en ce que le premier nombre de référence est calculé par l'exécution de plusieurs décalages binaires de la somme de tous les nombres de durées numériques dudit caractère et en ce que ladite quantité prédéterminée de l'étape (g) est obtenue par l'exécution de plusieurs décalages binaires sur ledit premier nombre de référence. 8 Procédé selon la revendication 7, caracté- risé en ce que la valeur dudit premier nombre de référence est soumise à un nombre d'ajustements pouvant atteindre 5. 9 Procédé selon la revendication 1, caractérisé en ce que le décodage du premier nombre binaire est effec- tué par référence à une table de consultation. Procédé selon la revendication 5, caracté- risé en ce qu'il consiste à choisir une fenêtre de carac- tère qui encadre un seul caractère à la fois et à dépla- cer ledit caractère pour provoquer le calcul d'un nombre de référence uniquement sur la base de nombres de durées numériques compris dans un caractère et encadrés totale- ment par ladite fenêtre de caractère, ce qui élimine les effets de signaux parasites pouvant être produits en dehors de la période de balayage des caractères de ladite étiquette à code à barres. 11 Procédé de ledture d'une étiquette ( 3) à -code à barres, caractérisé en ce qu'il consiste: (a) à produire un signal analogique à la suite du balayage de l'étiquette à code à barres, ce signal analogique comprenant des signaux représentatifs de quantités de lumière réfléchie par des barres ( 51, 53, , 57, 59) et des espaces ( 52, 54, 56, 58) de l'étiquette à code à barres, les largeurs des barres et des espaces indiquant si lesdites barres et lesdits espaces représen- tent des premiers ou des seconds états logiques; (b) à amplifier et mettre en forme ledit signal analogique pour produire un-signal de données brutes comprenant plusieurs impulsions, les durées d'im- pulsions successives correspondant aux largeurs de-barres successives, respectivement, de l'étiquette à code à barres, les durées d'intervalles successifs entre lesdites impulsions correspondant aux largeurs d'espaces successifs, respectivement, ladite étiquette à code à barres compre- nant au moins une partie qui présente plusieurs desdites barres et desdits espaces; (c) à mesurer les durées desdites impulsions et desdits intervalles sur au moins ladite par- tie de l'étiquette à code à barres pour produire plusieurs nombres de durées numériques représentatifs desdites durées, respectivement, et à mémoriser ces nombres; (d) à calculer un premier nombre de référence; (e) à comparer chacun des nombres de durées numériques audit premier nombre de référence et à produire un premier nombre binaire ayant plusieurs bits correspon- dant respectivement aux barres et aux espcaces de ladite partie, chacun desdits bits étant égal audit premier état logique si l'un, correspondant, desdits nombres de durées numériques est inférieur au premier nombre de référence, chacun desdits bits étant égal audit second état logique si l'un, correspondant, desdits nombres de durées numéri- ques est supérieur audit premier nombre de référence; (f) à déterminer si le premier nombre binaire est un nombre acceptable conformément à un critère prédé- terminé, et à décoder le premier nombre binaire, s'il est acceptable, pour déterminer laquelle partie il représente; et (g) à ajuster la valeur dudit premier nombre de référence, d'une quantité prédéterminée, si ledit pre- mier nombre binaire n'est pas acceptable, et répéter les étapes (e) et (f). 12 Appareil de lecture d'une étiquette ( 3) à code à barres, caractérisé en ce qu'il comporte un dispo- sitif ( 7) destiné à produire un signal analogique à la suite du balayage de l'étiquette à code à barres, ledit signal analogique comprenant des signaux représentatifs de quantités de lumière réfléchie par des barres ( 51, 53, , 57, 59) et des espaces ( 52, 54, 56, 58) de l'étiquette à code à barres, les largeurs desdites barres et desdits espaces indiquant si les barres et les espaces représentent des premiers ou des seconds états logiques, un dispositif ( 11) destiné à amplifier et mettre en forme ledit signal analogique pour produire un signal de données brutes comprenant plusieurs impulsions, les durées d'impulsions successives correspondant aux largeurs des barres succes- sives, respectivement, de l'étiquette à code à barres, les durées d'intervalles successifs entre lesdites impul- sions correspondant aux largeurs d'espaces successifs, respectivement, et l'étiquette à code à barres comportant au moins un caractère qui présente plusieurs barres et plusieurs espaces, l'appareil comportant en outre un dis- positif ( 15) destiné à mesurer les durées de plusieurs desdites impulsions et desdits intervalles d'au moins un caractère d'étiquette à code à barres pour produire plu- sieurs nombres de durées numériques représentatifs desdites durées, respectivement, et à mémoriser lesdits nombres de durées numériques, un dispositif ( 21) destiné à calculer un premier nombre de référence, un dispositif ( 21) destiné à comparer chacun desdits nombres de durées numériques audit premier nombre de référence et à produire un premier nombre binaire ayant plusieurs bits correspon- dant, respectivement, aux barres et aux espaces dudit caractère, chaque bit étant égal audit premier état logique si l'un, correspondant, desdits nombres de durées numériques est inférieur audit premier nombre de référence, chaque bit étant égal audit second état logique si l'un, correspondant, desdits nombres de durées numériques est supérieur audit premier nombre de référence, un dispositif destiné à déterminer si le premier nombre binaire est un nombre acceptable conformément à un critère prédéterminé, et à décoder le premier nombre binaire, s'il est accep- table, pour déterminer la nature du caractère, et un dispositif ( 21) destiné à régler la valeur dudit premier nombre de référence, d'une quantité prédéterminée, si le premier nombre binaire n'est pas acceptable. 13 Appareil selon la revendication 12, carac- térisé en ce que le critère prédéterminé comprend la nécessité, pour le premier nombre binaire, de posséder exacte- ment un premier nombre prédéterminé de bits égaux au premier état logique. 14 Appareil selon la revendication 13, carac- térisé en ce que le dispositif d'ajustement comprend un élément destiné à diminuer le premier nombre de référence si le nombre de bits égaux au premier état logique, dans le premier nombre binaire, est inférieur audit premier nombre prédéterminé, de manière que davantage de nombres de durées numériques puissent dépasser le premier nombre de référence ajusté et qu'ainsi davantage de bits du premier nombre binaire puissent être égaux audit premier état logique. Appareil selon la revendication 13, carac- térisé en ce que le dispositif d'ajustement comprend un élément destiné à accroître le premier nombre de référence si le nombre de bits égaux au premier état logique, dans le premier nombre binaire, est supérieur au premier nombre prédéterminé, de manière que davantage de nombres de durées numériques puissent être inférieurs au premier nombre de référence ajusté et qu'ainsi davantage de bits du premier nombre binaire puissent être égaux au second état logique. 16., Appareil selon la revendication 12, carac- térisé en ce que l'étiquette ( 3) à code à barres comprend plusieurs caractères ( 5). 17 Appareil selon la revendication 16, carac- térisé en ce qu'il comporte un dispositif ( 21) destiné à calculer un second nombre de référence correspondant à un autre desdits caractères. 18 Appareil selon la revendication 12, carac- térisé en ce que le décodage du premier nombre binaire est effectué par référence à une table de consultation. 19 Appareil selon la revendication 16, caracté- risé en ce qu'il comporte un dispositif ( 21) destiné à choisir une fenêtre de caractère qui encadre un seul caractère à la fois et qui déplace ledit caractère pour provoquer le calcul d'un nombre de référence uniquement sur la base de nombres de durées numériques compris dans un caractère encadré totalement par ladite fenêtre, ce qui élimine les effets de signaux parasites pouvant être produits en dehors de la période de balayage des carac- tères de l'étiquette à code à barres. Appareil selon la revendication 12, caracté- risé en ce que le dispositif produisant un signal analo- gique comprend un crayon-lecteur ( 7), en ce que le dispo- sitif de mesure comprend un compteur qui compte à une vitesse prédéterminée, et en ce que le dispositif de calcul, le dispositif de comparaison et le dispositif d'ajustement sont compris dans un système à microproces- seur ( 21). I; Il:e 1 h e 1 e. î -