FR2533721A1 - COMPUTER SYSTEM WITH REAL-TIME COMPILATION - Google Patents
COMPUTER SYSTEM WITH REAL-TIME COMPILATION Download PDFInfo
- Publication number
- FR2533721A1 FR2533721A1 FR8315244A FR8315244A FR2533721A1 FR 2533721 A1 FR2533721 A1 FR 2533721A1 FR 8315244 A FR8315244 A FR 8315244A FR 8315244 A FR8315244 A FR 8315244A FR 2533721 A1 FR2533721 A1 FR 2533721A1
- Authority
- FR
- France
- Prior art keywords
- compiler
- original
- code
- editor
- location
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4825—Interrupt from clock, e.g. time of day
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/48—Incremental compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
Abstract
L'INVENTION CONCERNE UN SYSTEME D'ORDINATEUR ASSURANT LA COMPILATION EN TEMPS REEL D'UN PROGRAMME D'ORIGINE EN LANGAGE EVOLUE AU MOMENT OU IL EST ENTRE OU REVISE AU PUPITRE. A CETTE FIN, L'ORDINATEUR COMPORTE UN PROGRAMME COMPILATEUR, UN PROGRAMME EDITEUR ET UNE MEMOIRE-TAMPON DE CODE D'ORIGINE. UN CARACTERE DE MARQUE DE PAUSE EST ENREGISTRE AU DEBUT DE LA MEMOIRE-TAMPON ET EMPECHE LE COMPILATEUR D'AVANCER AU-DELA. LORSQUE DES CARACTERES SONT ENTRES AU CLAVIER, L'EDITEUR PREND LA COMMANDE DU SYSTEME ET ENREGISTRE CES CARACTERES DANS LA MEMOIRE-TAMPON JUSQU'A CE QU'UN RETOUR DU CHARIOT SOIT ENTRE. A CE MOMENT, IL REMPLACE LA MARQUE DE PAUSE PAR UN ESPACEMENT ET ENREGISTRE UNE NOUVELLE MARQUE DE PAUSE DANS L'EMPLACEMENT ADJACENT AU RETOUR DU CHARIOT. LE COMPILATEUR PEUT ALORS EFFECTUER L'ANALYSE LEXICALE, SYNTACTIQUE ET SEMANTIQUE DE LA LIGNE QUI VIENT D'ETRE ECRITE, JUSQU'A LA NOUVELLE MARQUE DE PAUSE.THE INVENTION RELATES TO A COMPUTER SYSTEM ENSURING THE COMPILATION IN REAL TIME OF AN ORIGINAL PROGRAM IN LANGUAGE EVOLVED AT THE TIME IT IS ENTERED OR REVISED AT THE DESK. FOR THIS PURPOSE, THE COMPUTER INCLUDES A COMPILER PROGRAM, AN EDITOR PROGRAM AND AN ORIGINAL CODE BUFFER MEMORY. A PAUSE MARK CHARACTER IS RECORDED AT THE BEGINNING OF THE BUFFER MEMORY AND PREVENTS THE COMPILER FROM MOVING BEYOND. WHEN CHARACTERS ARE ENTERED AT THE KEYBOARD, THE EDITOR TAKES CONTROL OF THE SYSTEM AND SAVES THESE CHARACTERS INTO BUFFER MEMORY UNTIL A CART FEEDBACK IS ENTERED. AT THIS TIME, IT REPLACES THE PAUSE MARK WITH A SPACING AND SAVES A NEW PAUSE MARK IN THE LOCATION ADJACENT TO THE RETURN OF THE TROLLEY. THE COMPILER CAN THEN CARRY OUT THE LEXICAL, SYNTACTIC AND SEMANTIC ANALYSIS OF THE LINE WHICH JUST BEEN WRITTEN, UNTIL THE NEW BRAND OF PAUSE.
Description
La présente invention se rapporte aux systèmes d'ordina-The present invention relates to computer systems.
teur et plus particulièrement à-une nouvelle architecture d'ordinateur qui assure la compilation en temps réel d'un programme d'origine évolué en même temps que le programme est entré ou révisé au pupitre par le programmeur. Etant donné que les hommes écrivent les programmes en and more particularly to a new computer architecture which ensures the compilation in real time of an original program evolved at the same time as the program is entered or revised at the desk by the programmer. Since men write programs in
un langage de programmation et que les ordinateurs n'exé- a programming language and that computers do not
cutent que le langage machine, il est fréquemment nécessaire d'effectuer la traduction d'un langage dans l'autre Lorsque le langage de programmation est "évolué", c'est-à-dire abstrait dans le sens qu'il ne manipule pas explicitement cutent than machine language, it is frequently necessary to translate from one language to another When the programming language is "advanced", that is to say abstract in the sense that it does not handle explicitly
les registres et autres matériels de l'ordinateur, la traduc- registers and other computer hardware, translation
tion du programme original est exécuté par un autre programme appelé un "compilateur" Le programma original est appelé un "code d'origine" et la traduction du-programme résultante est tion of the original program is executed by another program called a "compiler" The original programma is called a "source code" and the resulting translation of the program is
appelée le "code résultant".called the "resulting code".
En plus de la traduction, le compilateur doit également effectuer des analyses lexicales, syntactiques et sémantiques du code d'origine L'analyse lexicale est effectuée par un In addition to translation, the compiler must also perform lexical, syntactic and semantic analyzes of the original code. Lexical analysis is performed by a
"explorateur" et c'est le processus de formation d'une sé- "explorer" and this is the process of forming a se-
quence de multiplets de code d'origine en symboles ou signes, quence of bytes of original code in symbols or signs,
quelque peu à la manière de la formation d'une séquence de. somewhat like the formation of a sequence of.
caractères en mots anglais Ces symboles sont ensuite soumis à l'analyse syntactique par un analyseur syntactique appelé characters in English words These symbols are then subjected to syntactic analysis by a syntactic analyzer called
un "perser" qui détermine si ils sont agencés dans une rela- a "perser" which determines if they are arranged in a rela-
tion qui est conforme aux règles grammaticales rigides du langage de programmation L'analyse sémantique détermine si les symboles sont conformes à des règles supplémentaires qui ne peuvent pas être commodément exprimées par la grammaire tion that conforms to the rigid grammatical rules of the programming language Semantic analysis determines whether symbols conform to additional rules that cannot be conveniently expressed by grammar
du langage.of language.
Ces analyses sont très semblables à une analyse syntac- These analyzes are very similar to a syntactic analysis.
tique des mots d'une phrase anglaise Si la séquence de sym- tick of words in an English sentence If the sym-
boles viole une règle syntactique ou sémantique, on dit boles violates a syntactic or semantic rule, we say
qu'une "erreur" a été commise et le compilateur doit en in- that an "error" has been committed and the compiler must find out
former le programmeur en émettant un "message d'erreur" vi- train the programmer by issuing an "error message"
sible. Après traduction, le code résultant est habituellement "enchaîné" et "chargé", processsus au cours duquel il est joint à d'autres modules en code résultant pour former un programme en code machine com Dlet qui peut être exécuté car sible. After translation, the resulting code is usually "chained" and "loaded", a process in which it is joined with other modules in resulting code to form a program in machine code com Dlet which can be executed because
la machine.the machine.
Au cours de ces dernières années, le fort accroissement des coûts du logiciel, le manque de programmeurs spécialisés, In recent years, the sharp increase in software costs, the lack of specialized programmers,
l'expansion rapide du marché des ordinateurs, l'adoption géné- the rapidly expanding computer market, widespread adoption
ralisée des micro-ordinateurs et la sous-utilisation d'une grande partie du matériel disponible par suite d'un manque de logiciel ont contraint à l'adoption de langages évoluéset à l'entreprise d'efforts concertés pour rendre leur emploi widespread use of microcomputers and the under-utilization of a large part of the available hardware due to a lack of software have forced the adoption of advanced languages and the undertaking of concerted efforts to make their use
plus efficace.more efficient.
Cependant, la programmation dans un langage évolué est encore un processsus lent, fastidieux et inefficace Par exemple, même dans les conditions optimales d'un pupitre interactif, un langage compilé nécessite l'exécution d'une séquence d'étapes répétées qui comprennent le chargement de l'éditeur, l'écriture ou la révision du code d'origine, le chargement du compilateur, l'exécution du compilateur, le chargement de l'éditeur de liens, l'exécution de l'éditeur de liens, le passage en machine du programme et la répétition However, programming in an advanced language is still a slow, tedious and ineffective process. For example, even under the optimal conditions of an interactive console, a compiled language requires the execution of a sequence of repeated steps which include loading of the editor, writing or revising the original code, loading the compiler, running the compiler, loading the link editor, running the link editor, switching to program and repeat machine
de la séquence lorsqu'une erreur est indiquée pendant la com- of the sequence when an error is indicated during the comp
pilation du code d'origine ou l'exécui:ion du code résultant. breaking the original code or executing it: the resulting code.
Pendant une grande partie du temps, le programmeur est obli- For a large part of the time, the programmer is obli-
gé d'attendre l'achèvement des étapes de chargement ou d'exé- ge to wait for the completion of loading or execution steps
cution et ce temps d'attente constitue un gaspillage tout en cution and this waiting time is a waste while
étant fastidieux Il en résulte que le processus de program- being tedious As a result, the programming process
mation est lent et onéreux Il est généralement admis que la production du programmeur professionnel moyen n'est que de cinq à dix lignes de code d'origine mis au point par jour (Doc n' 4) Les mentions entre-parenthèses se réfèrent à la Mation is slow and expensive It is generally accepted that the production of the average professional programmer is only five to ten lines of original code developed per day (Doc n '4) The mentions in parentheses refer to the
bibliographie donnée à la fin de cette description. bibliography given at the end of this description.
L'utilisation généralisée récente des micro-ordinateurs domestiques a fortement accru la difficulté du problème de The recent widespread use of home microcomputers has greatly increased the difficulty of the problem of
programmation La plupart des utilisateurs qui écrivent actu- programming Most users who currently write
ellement des programmes pour de tels ordinateurs n'ont pas reçu un enseignement professionnel de programmeur et sont peu disposés à perdre le temps, à effectuer les efforts et endurer l'ennui et la frustration inhérents à la mécaniqaue de la programmatior dans un langage compilé avec les svstèmes Programs for such computers have not received professional programmer training and are reluctant to waste time, effort and endure the boredom and frustration inherent in the mechanics of programming in a language compiled with the systems
de micro-ordinateur actuels (Doc N O 9). of current microcomputers (Doc N O 9).
Au lieu de cela, la maj 6 rité des programmeurs d'ordina- Instead, the majority of computer programmers
teurs domestiques utilisent des interprètes de BASIC Ces domestic workers use BASIC interpreters These
derniers sont généralement syntactiquement pauvres, ineffi- the latter are generally syntactically poor, ineffective
caces pour révéler les erreurs, incapables d'utiliser des variables locales, incapables de transmettre des paramètres aux sous-routines, incapables d'appeler des sous-routines par leur nom, incapables de lier des modules de bibliothèque, et caces to reveal errors, unable to use local variables, unable to pass parameters to subroutines, unable to call subroutines by name, unable to link library modules, and
ils manquent à la fois de structures de données et de struc- they lack both data structures and struc-
tures de commande de flux de données de sorte qu'ils rendent extrêmement difficile d'écrire un programme exempt d'erreur pour des applications quelconques à l'exception des plus simples Le BASIC est, par conséquent, considéré comme étant un très mauvais moyen pour enseigner une bonne technique de data flow control tures so that it makes it extremely difficult to write an error-free program for any but the simplest applications BASIC is therefore considered to be a very poor means of teach good technique of
programmation (Doc n 1) Ces interprètes de BASIC sont éga- programming (Doc n 1) These BASIC interpreters are also
lement si lents d'exécution qu'ils sont également désavanta- so slow in execution that they are also disadvantaged
geux, voire inutilisables pour de nombreuses applications. gaseous or even unusable for many applications.
Néanmoins, la mécanique de la compilation avec les sys- However, the mechanics of compiling with sys-
tèmes de micro-ordinateurs actuels est si malcommode que les interprètes de BASIC prédominent dans le domaine des micro-ordinateurs et dégradent considérablement le processus of modern microcomputers is so inconvenient that BASIC interpreters predominate in the field of microcomputers and considerably degrade the process
de programmation.programming.
De nombreuses tentatives ont été effectuées en vue de Many attempts have been made to
réduire les inconvénients de l'utilisation classique des com- reduce the disadvantages of conventional use of
pilateurs Une telle méthode est le compilateur dit-"incré- pilators One such method is the so-called "incremental" compiler
mentiel" (Doc n 5, 6, 7, 10, 11)o Lorsque chaque ligne de code d'origine est entrée au pupitre, elle est analysée afin de déterminer si elle est conforme aux règles de syntaxe d'une grammairelocale restreinte,dans laquelle la ligne est traitée isolément sans tenir compte du contexte de l'ensemble du programme Si la ligne est exempte d'erreur sous cet angle "(Doc # 5, 6, 7, 10, 11) o When each line of original code is entered at the desk, it is analyzed to determine if it conforms to the syntax rules of a restricted local grammar, in which the line is treated in isolation without taking into account the context of the whole program If the line is free of error from this angle
limité, le programmeur est libre d'entrer la ligne suivante. limited, the programmer is free to enter the next line.
Sinon, un message d'erreur est affiché et l'erreur doit être corrigée avant que de nouvelles lignes soient entrées Après que l'ensemble du programmne a été entré, le programme est soumis à de nouvelles analyses syntactiques et sémantiques en ce qui concerne les règles fonction du contexte après quoi la génération du code résultant et l'exécution peuvent être effectuées. Le compilateur incrementiel présente certains avantages lorsqu'il est utilisé avec les langages qui comportent peu de limitations fonction du contexte, tels que le BASIC Pour les langages structurés modernes, tels que l'Algol, le Pascal le PL/1, le C et l'Ada, l'analyse locale lir tée qui peut être effectuée après l'entrée de chaque ligne n'est qu'une partie relativement petite de l'analyse totale requise et Otherwise, an error message is displayed and the error must be corrected before new lines are entered. After the whole program has been entered, the program is subjected to new syntactic and semantic analyzes with regard to the context-dependent rules after which the resulting code generation and execution can be performed. The incremental compiler has certain advantages when used with languages which have few context-dependent limitations, such as BASIC For modern structured languages, such as Algol, Pascal PL / 1, C and l 'Ada, the read local analysis that can be performed after entering each line is only a relatively small part of the total analysis required and
ne justifie pas le temps système correspondant. does not justify the corresponding overhead.
Une autre méthode bien connue de la technique antérieure a été appelée " recompilation répétée" (Doc n 2) Dans cette solution, les analyses syntactiques et sémantiques effectuées après l'entrée de chaque ligne comprennent toutes les règles fonction du contexte et prennent'en considération la totalité du programme partiel entré jusqu'à ce point Par conséquent, Another well-known method of the prior art has been called "repeated recompilation" (Doc n 2) In this solution, the syntactic and semantic analyzes carried out after the entry of each line include all the context-dependent rules and take into consideration the entire partial program entered up to this point Therefore,
lors de la révision même d'un unique multiplet du code d'ori- even when a single multiplet of the original code is revised
gine entré, la totalité du programme d'origine doit être re- gine entered, the entire original program must be re-
compilée à partir du début Etant donné que cette recompi-. compiled from the beginning Since this recompi-.
lation doit être achevée avant que de nouvelles lignes lation must be completed before new lines
puissent être entrées,le temps-système important de cette mé- can be entered, the important system time of this
rhode empêche son emploi sauf pour les programmes les plus courts. rhode prevents its use except for the shortest programs.
Dans un effort effectué en vue d'éviter le temps-sys- In an effort to avoid time-sys-
tème de la recompilation complète un certain nombre de mé- teme of recompilation completes a number of meta
thodes de recompilation partielle ont été imaginées (Doc. partial recompilation methods have been devised (Doc.
3 n 1, 3, 8) Ces méthodes ont généralement nécessité l'em- 3 n 1, 3, 8) These methods generally required the use of
ploi d'une structure de données complexe pour le code d'o- use of a complex data structure for the code of-
rigine et/ou d'un éditeur complexe qui sont tels qu'un pro- rigine and / or a complex editor that are such a pro-
grammeur ayant suffisamment de compétences dans la méthode grammer with sufficient method skills
particulière peut effectuer un changement dans le code d'o- particular can make a change in the code of-
rigine de manière qu'il soit seulement nécessaire d'effec- rigin so that it is only necessary to perform
tuer une recompilation de la partie modifiée du code d'ori- kill a recompilation of the modified part of the original code
gine Ces solutions nécessitent l'emploi d'une quantité exces- gine These solutions require the use of an excess quantity
sive de mémoire d'ordinateur et/ou des compétences hautement computer memory and / or highly skilled
spécialisées du programmeur.of the programmer.
Ces méthodes de la technique antérieure, n'ont eu aucune These prior art methods have had no
application pratique sauf en tant que curiosités experimen- practical application except as curiosities experimen-
tales en recherche pure Les compilateurs disponibles dans le commerce nécessitent encore les séquences répétées des étapes de chargement, édition, chargement, compilation, chargement, tales in pure search The commercially available compilers still require the repeated sequences of the loading, editing, loading, compilation, loading,
liaison et passage machine, comme décrit ci-dessus. connection and machine passage, as described above.
L'architecture idéale pour la fonction de programmation devrait présenter les caractéristiques ci-après: la compilation devrait être effectuée en temps réel The ideal architecture for the programming function should have the following characteristics: compilation should be performed in real time
lorsque le code d'origine est entré ou révisé par le program- when the original code is entered or revised by the program-
meur; le système devrait être capable d'utiliser un langage moderne structuré en blocs ayant une syntaxe puissante, tel que l'Algol, le C, le Pascal ou le PL/1; il ne devrait pas y avoir d'attente pour les accès aux disques pendant l'écriture, l révision ou la compilation du programme sauf dans la mesure nécessaire pour l'entrée initiale ou la sauvegarde des fichiers de code d'origine; un message d'erreur devrait être affiché pratiquement instantanément après qu'une erreur de syntaxe a été entrée au pupitre; la correction des erreurs de code d'origine devrait dies; the system should be able to use modern block-structured language with powerful syntax, such as Algol, C, Pascal or PL / 1; there should be no waiting for access to the discs while writing, reviewing or compiling the program except to the extent necessary for the initial entry or saving of the original code files; an error message should be displayed almost instantly after a syntax error has been entered at the desk; correction of original code errors should
être rapide et facile sans rechargement de l'éditeur du fi- be quick and easy without reloading the file editor
chier de code d'origine ni du compilateur; la compilation devrait être finie presqu'instantanément après l'entrée de la dernière ligne d'un programme d'origine sans erreur; shit original code or compiler; compilation should be completed almost immediately after entering the last line of an original program without error;
la compilation devrait être complète en ce sens qu'au- compilation should be complete in the sense that
cune autre analyse syntactique ou sémanr -:ique ne devrait être nécessaire et que l'absence d'un message d'erreur devrait no other syntactic or semantic analysis should be necessary and that the absence of an error message should
garantir que le programme ne contient pas d'erreur syntac- ensure that the program does not contain syntax errors
tique ni sémantique;tick or semantic;
le programmeur devrait être capable d'arrêter à tout mo- the programmer should be able to stop at any time
ment l'exécution du code résultant, d'examiner les valeurs de toutes les variables et de poursuivre l'exécution, tout cela sans nécessiter l'insertion préalable d'instructicns d'écriture, de points de rupture ou autre code de miseau point dans le programme d'origine; et l'architecture ne devrait pas imposer des conditions supplémentaires quelconques relatives à l'em loi d'une syn- ment the execution of the resulting code, to examine the values of all the variables and to continue the execution, all this without requiring the prior insertion of writing instructions, break points or other focus code in the original program; and architecture should not impose any additional conditions relating to the law of a syn-
taxe de langage propre particulière, d'une mécanique d'édi- tax of particular peculiar language, of an editing mechanic
teur complexe ni exiger une spécialisation particulière du complex or demand special specialization of the
programmeur dans la méthode.programmer in the method.
L'exposé ci-après est une description résumée d'un The following is a summary description of a
mode de réalisation préféré de l'invention. preferred embodiment of the invention.
Le programmeur appelle le système comrplateur-éditeur en temps réel en tapant son nom de fichier de commande sur le clavier du pupitre Le fichier de commande contenant la The programmer calls the integrator-editor system in real time by typing his command file name on the keyboard of the console The command file containing the
partie de logiciel du système est alors chargé dans la mé- part of the system software is then loaded into the
moire à partir d'un disque La mémoire-tampon de code d'o- moire from disk o-code buffer
rigine, une région de la mémoire qui doit contenir le code d'origine,est initialisée de sorte que le premier multiplet qu'elle met en mémoire est un code prédéterminé qui sera rigine, a region of memory which must contain the original code, is initialized so that the first byte it stores in memory is a predetermined code which will be
appelé une "Marque de Pause" L'exécution du compilateur com- called a "Pause Mark" Running the compiler com-
mence alors par la lecture de la "Marque de Pause" en tant que caractère qui se trouve dans le premier emplacement de la mémoire-tampon Lorsque le compilateur lit la "Marque de Pause",il entre de manière répétée dans une boucle infinie lisant le même emplacement jusqu'à ce que le contenu de cet then begins by reading the "Pause Mark" as a character found in the first location of the buffer When the compiler reads the "Pause Mark", it repeatedly enters an infinite loop reading the same location until the contents of this
emplacement soit changé par l'éditeur en un blanc (espace- location be changed by the editor to a blank (space-
ment). Lorsque le programmeur frappe une touche sur le clavier is lying). When the programmer hits a key on the keyboard
du pupitre, le processeur central exécute la séquence d'in- of the console, the central processor executes the sequence of in-
terruption suivante, décritepourun micro-processeur 8080 next terruption, described for an 8080 microprocessor
ou Z 80 Après achèvement de l'instruction en cours d'exécu- or Z 80 After completion of the instruction being executed
tion, le processeur entre dans le mode d'interruption et communique son nouvel état au système en émettant un signal tion, the processor enters the interrupt mode and communicates its new state to the system by emitting a signal
d'accusé-réception d'interruption. acknowledgment of interruption.
A réception de ce signal,le matériel d'interruption Upon receipt of this signal, the interrupt equipment
transmet une instruction RST sur le bus de données Le pro- transmits an RST instruction on the data bus The pro-
cesseur exécute alors l'instruction RST qui est un appel d'un multiplet à un emplacementchoisi dans la partie basse de la mémoire o est mise en mémoire une instruction de saut ("vecteur") à la routine de service des interruptions qui stopper then executes the RST instruction which is a call to a byte at a location chosen in the lower part of the memory where a jump instruction ("vector") is stored in the interrupt service routine which
comprend l 'éditeur.includes the editor.
La routine de service des'interruptions sauvegarde tout d'abord le pointeur de pile et les autres registres de l'uni- The interrupt service routine firstly backs up the stack pointer and other registers of the unit.
té de traitement Si la touche frappée correspond à un carac- processing tee If the key hit corresponds to a character
tère alphanumérique ou autre caractère qui n'est pas un carac- alphanumeric or other character that is not a character
tère de commande, ce caractère est placé dans le second empla- control character, this character is placed in the second place
cement de la mémoire-tampon de code d'origine immédiatement après la Marque de Pause Le pointeur de la mémoire-tampon est alors avancé à l'emplacement suivant, les registresde cement the original code buffer immediately after the Pause Mark The buffer pointer is then advanced to the next location, the registers
l'unité sont restaurés, l'unité de traitement est mise l'é- the unit are restored, the processing unit is switched on
tat interruptible et' l'instruction RET (retour) est exécutée interruptible status and 'RET (return) instruction is executed
pour retourner la commande au compilateur. to return the command to the compiler.
Le compilateur continue à exécuter sa boucle infinie dans laquelle il lit de manière répétée le caractère de Marque de Pause contenu dans le premier empladement de la mémoire-tampon de code d'origine Cette séquence est répétée lorsque le programmeur frappe de nouvelles touches sur le The compiler continues to execute its infinite loop in which it repeatedly reads the Pause Mark character contained in the first string of the original code buffer This sequence is repeated when the programmer hits new keys on the
clavier,les caractères successifs étant entrés dans des em- keyboard, successive characters being entered in em-
placements successifs de la mémoire-tampon de code d'origine à mesure que le pointeur de la mémoire-tampon avance Cette séquence se poursuit jusqu'à ce qu'une touche correspondant successive placements of the original code buffer as the buffer pointer advances This sequence continues until a corresponding key
à un caractère de commande soit frappée. to a command character be struck.
Si ce caractère de commande est un retour du chariot, If this command character is a carriage return,
le code correspondant ( 13) est introduit dans la mémoire- the corresponding code (13) is entered in the memory-
tampon, le pointeur de la mémoire-tampon est avancé, le code de Marque de Pause est alors introduit dans l'emplacement de la mémoire-tampon adjacent au code de retour du chariot et le code de Marque de Pause initial contenu dans le premier emplacement est remplacé par le code ( 32) représentant un espace blanc L'emplacement de la farque de Pause a ainsi buffer, the buffer pointer is advanced, the Pause Mark code is then entered in the buffer location adjacent to the carriage return code and the initial Pause Mark code contained in the first location is replaced by the code (32) representing a white space The location of the Pause farque has thus
été déplacé de son point initial et mis à la fin de la pre- been moved from its original point and put at the end of the first
mière ligne de code d'origine.1st line of original code.
Après retour au compilateur à partirade la routine de service des interruptions,le pointeur du compilateur accède au premier emplacement de la mémoire-tampon et lit le code représentant un espacement au lieu de la Maraue de Pause Le After returning to the compiler from the interrupt service routine, the compiler pointer goes to the first location in the buffer and reads the code representing a spacing instead of the Pause Mare
compilateur fait alors avancer son pointeur de manière répéti- compiler then advances its pointer repeatedly
tive à l'emplacement de mémoire suivante et effectue ses ana- tive to the next memory location and performs its ana-
lyses lexicales, syntactiques et sémantiques sur la premiere ligne de code d'origine contenue dans la mémoire-tampon Le compilateur peut soit afficher un message d'erreur soit émettre un code résuitant compilé, selon le cas, jusqu'à ce que le pointeur du compilateur atteigne la nouvelle Marque de Pause introduite à la fin de la première ligne du code Lexical, syntactic and semantic lyses on the first line of original code contained in the buffer The compiler can either display an error message or issue a compiled summarized code, as the case may be, until the pointer to the compiler reaches the new Pause Mark introduced at the end of the first line of the code
d'origine.of origin.
Lorsqu'il atteint la nouvelle Marque de Pause, le compi- When it reaches the new Break Mark, the
lateur entre à nouveau dans une boucle infinie sans faire avancer son pointeur jusqu'à ce que l'éditeur déplace la Marque de Pause jusqu'à la fin de la ligne suivante à la suite de quoi le compilateur est libre de compiler cette again enters an infinite loop without advancing its pointer until the editor moves the Pause Mark to the end of the next line after which the compiler is free to compile this
ligne suivante de code d'origine.next line of original code.
Il est possible d'entrer des caractères de commande Command characters can be entered
autres qu'un retour du chariot en frappant les touches ap- other than a carriage return by hitting the keys
propriées pour effectuer les fonctions d'édition classiques d'un éditeur d'écran Par exemple, on peut corriger les properties for performing the classic editing functions of a screen editor For example, you can correct
erreurs dans la ligne en cours de code d'origine en dépla- errors in the line in progress with the original code being moved
çant le curseur en arrière Ceci n'a pas d'effet sur le com- erasing the cursor backwards This has no effect on the com-
pilateur qui ne peut pas avancer au-delà de la Marque de pilator who cannot advance beyond the Mark of
Pause située à la fin de la ligne précédente. Pause located at the end of the previous line.
Cependant, si, en frappant la touche de commande appro- However, if by hitting the appropriate command key
priée on provoque le déplacement du curseur vers le haut d'une ou de plusieurs lignes jusqu'à un emplacement situé avant la Marque de Pause, ceci met en fonction un Indicateur requested we cause the cursor to move up one or more lines to a location before the Pause Mark, this activates an Indicator
de Recompilation de façon à entrer un mode de recompilation. Recompilation in order to enter a recompilation mode.
Dans ce cas, à la suite du retour de la commande au compila- In this case, following the return of the order to the compilation
teur, ce dernier est ré-initialisé de façon qu'il puisse re- the latter is re-initialized so that it can re-
compiler le code d'origine à partir du tout début de la mé- compile the original code from the very beginning of the
moire-tampon d'origine Les révisions ou insertions de original buffer moire Revisions or insertions of
texte d'origine suivantes ont pour effet que l'éditeur dé- The following original text results in the editor de-
place la Marque de Pause jusqu'à un emplacement de mise à jour adjacent à l'extrémité de la ligne qui précède la ligne places the Pause Mark to an update location adjacent to the end of the line before the line
la plus récemment révisée.most recently revised.
-33721-33721
Lorsque le compilateur trouve une erreur de syntaxe dans When the compiler finds a syntax error in
le code d'origine, il affiche un message d'erreur Le pro- the original code, it displays an error message The pro-
grammeur peut alors réviser le programme d 'origine pour corri- grammer can then revise the original program to correct
ger l'erreur Après retour de l'éditeur, le compilateur est ré-initialisé pour recompiler le code d'origine. Le code d'origine entré et le code résultant émis sont, de préférence, mis en mémoire dans la mémoire centrale de Manage the error After returning from the editor, the compiler is re-initialized to recompile the original code. The original code entered and the resulting code sent are preferably stored in the central memory of
sorte que des accès à des disques n'entravent pas d'une ma- so that accesses to disks do not hinder
nière excessive les processus d'édition et de compilation. excessive editing and compilation processes.
Si la mémoire-tampon de code d'origine ou de code résultant If the original code or resulting code buffer
est pleine, son contenu peut être mis en mémoire dans un fi- is full, its contents can be stored in a file
chier sur disque de la manière classique utilisée dans les éditeurs et les processeurs de mots tels que le CP/M ED etle Wordstar L'emploi de systèmes de mémoire à sélection de bancs ou la venue sur le marché des microprocesseurs à 16 bits avec leurs plus grands espaces de mémoire évitera la shit on disk in the classic way used in editors and word processors such as CP / M ED and Wordstar The use of memory selection systems or the arrival on the market of 16-bit microprocessors with their advantages large memory spaces will avoid the
nécessité d'un stockage sur disque jusqu'à ce que la compi- need for disk storage until the compi-
lation soit finie D'autres caractéristiques de l'invention apparaitront lation be finished Other features of the invention will appear
à la lecture de la description qui va suivre et à l'examen on reading the description which follows and examining
des dessins annexés dans lequels:of the attached drawings in which:
la Fig 1 est un schéma synoptique qui représente les. Fig 1 is a block diagram which represents the.
relations er-re les éléments principaux du matériel qui cons- relationships between the main elements of the material which
titue un mode de réalisation préféré du système d'ordinateur selon la présente invention; la Fig 2 est un schéma qui représente la logique et les circuits d'interruption du matériel du système; la Fig 3 est un organigramme représentant la séquence générale des opérations; la Fig 4 est un organigramme représentant la séquence des opérations du compilateur; la Fig 5 est un organigramme représentant la séquence des opérations de l'éditeur; et la Fig 6 est un organigramme représentant la séquence titue a preferred embodiment of the computer system according to the present invention; Fig 2 is a diagram showing the logic and hardware interrupt circuits of the system; Fig 3 is a flowchart showing the general sequence of operations; Fig 4 is a flowchart showing the sequence of operations of the compiler; Fig 5 is a flowchart showing the sequence of editor operations; and Fig 6 is a flowchart showing the sequence
des opérations des routines de caractère de commande de l'é- operations of the control character routines of the e-
diteur.editor.
On donnera ci-après une description détaillée d'un mode A detailed description of a mode will be given below
de réalisation préféré de l'invention Les détails décrits sont simplement illustratifs de l'une des nombreuses formes preferred embodiment of the invention The details described are merely illustrative of one of the many forms
sous lesquelles l'invention peut être mise en oeuvre L'in- under which the invention can be implemented The
vention et la nouveauté ne résident ni dans le matériel ni dans le logiciel considérés séparément mais plutôt dans une vention and the novelty do not reside in the hardware or in the software considered separately but rather in a
combinaison des deux.combination of the two.
Sur la Fig 1 à laauelle on se référera tout d'abord, In Fig 1 with the arrow we will first refer,
on a représenté les principaux éléments matériels aui consti- the main material elements have been represented
tuent l'ensemble du système d'un mode de réalisation préféré de la présente invention Chaque élément sera désigné par kill the entire system of a preferred embodiment of the present invention Each element will be designated by
l'inscription écrite dans le rectangle respectif du dessin. the inscription written in the respective rectangle of the drawing.
Le PUPITRE A TUBE CATHODIQUE se réfère à un terminal appro- The CATHODIC TUBE DESK refers to an appropriate terminal
prié quelconque comportant un clavier pour l'entrée du code d'origine qui doit être compilé et également pour l'entrée any required including a keyboard for entering the original code to be compiled and also for entering
de commandes de révision servant à changer le code Le ter- of revision commands used to change the code Le ter-
minal comporte également un affichage vidéo pour permettre minal also includes a video display to allow
l'emploi d'un éditeur d'écran Le clavier est, de préfé- using a screen editor The keyboard is preferably
rence, solidaire de l'affichage vidéo pour former un pupitre unitaire ayant une liaison série RS-232-C avec le reste du rence, integral with the video display to form a unitary console having an RS-232-C serial link with the rest of the
système.system.
Cette liaison série est connectée au POINT D'ACCES This serial link is connected to the ACCESS POINT
D'ENTREE qui est, de préférence, constitué par un ERAS (émet- INPUT which is preferably made up of an ERAS (
teur-récepteur asynchrone universel) tel que, par exemple le 1602, le AY5-1013 ou le TMS 5501 Chaque frappe de touche sur le clavier du pupitre à tube cathodique a pour effet la transmission en série à i'ERAS d'un train de bits constituant universal asynchronous receiver-receiver) such as, for example the 1602, the AY5-1013 or the TMS 5501 Each keystroke on the keyboard of the cathode ray tube console results in the serial transmission to the ERAS of a train of constituent bits
le multiplet du code ASCII correspondant à la touche frappée. the byte of the ASCII code corresponding to the key hit.
L'ERAS reforme les bits en ce multiplet qui est ensuite trans- ERAS reformats the bits into this byte which is then trans-
mis en parallèle sur le bus de données à l'accumulateur de l'unité de traitement (UDT) L'ERAS forme également un point d'accès de sortie L'exécution d'une commande de SORTIE par l'unité de traitement a pour effet la transmission sur le bus de données d'un multiplet de l'accumulateur à l'ERAS aui peut ensuite transmettre le multiplet en série au PUPITRE A paralleled on the data bus to the processing unit accumulator (UDT) ERAS also forms an output access point The execution of an OUTPUT command by the processing unit is effect the transmission on the data bus of a byte from the accumulator to the ERAS aui can then transmit the byte in series to the DESK A
TUBE CATHODIQUE pour affichage sur l'écran vidéo. CATHODIC TUBE for display on the video screen.
Dans le mode de fonctionnement habituel d'un micro- In the usual operating mode of a micro-
ordinateur classique, l'état du point d'accès d'entrée est contrôlé de manière répétée par l'unité de traitement dans une boucle d'appel sélectif jusqu'à ce que l'état du point d'accès d'entrée indique qu'un multiplet de données a été renu et est disponible dans le registre de données reçues D de i'ERA So La présente invention utilise à la place de ce conventional computer, the state of the entry access point is repeatedly checked by the processing unit in a selective call loop until the state of the entry access point indicates that a byte of data has been kept and is available in the register of data received D of i'ERA So The present invention uses instead of this
mode, un mode d'interruption du fonctionnement au moyen du- mode, a mode of interruption of operation by means of-
quel l'unité de traitement exécute normalement le compila- which processing unit normally performs the compilation
teur jusqu'à ceque l'ERAS reçoive un multiplet du PUPITRE A TUBE CATHODIQUE Le compilateur est mis en mémoire dans une zone de la mémoire principale désignée COMPILATEUR sur tor until ERAS receives a byte from the CATHODIC TUBE DESK The compiler is stored in an area of the main memory designated COMPILER on
la Fig 1.Fig 1.
La ligne de données disponibles del'ERAS est alors por- The line of data available from ERAS is then
tée à un haut niveau et ceci actionne à son tour le CONTRO- high level and this in turn activates the CONTRO-
LEUR D'INTERUPTION pour provoquer l'exécution,par l'unité de traitement, de l'éditeur Ce dernier est mis en mémoire dans une zone de la mémoire principale désignée EDITEUR sur THEIR INTERUPTION to cause the execution, by the processing unit, of the editor The latter is stored in an area of the main memory designated EDITOR on
le dessin Après entrée du caractère reçu dans la MEMOIRE- the drawing After entering the character received in MEMORY-
TAMPON DE CODE D'ORIGINE formée dans la mémoire principale ORIGINAL CODE BUFFER formed in main memory
ou après achèvement d'une commande d'édition, une instruc- or after completion of an editing order, an instruction
tion de retour (RET) est exécutée par llunité de traitement pour provoquer sa reprise de l'exécution du compilateur à return (RET) is executed by the processing unit to cause it to resume execution of the compiler at
partir du point o elle a été interrompue. from the point where it was interrupted.
Lorsque le COMPILATEUR est exécuté, il effectue, de When the COMPILER is executed, it performs,
préférence, des analyses lexicales, syntactiques et séman- preferably lexical, syntactic and semantic analyzes
tiques du code d'origine du programme mis en mémoire dans la MEMOIRETAMPON DE CODE D'ORIGINE Dans un mode de réalisation préféré, le COMPILATEUR émet également un code résultant et ticks of the original code of the program stored in the ORIGINAL CODE BUFFER MEMORY In a preferred embodiment, the COMPILATOR also issues a resulting code and
le met en mémoire dans la Ml EMOIRE-TAMPON DE CODE RESULTANT. puts it in memory in the Ml EMOIRE-PAMPON OF RESULTING CODE.
Après achèvement de l'entrée et de la compilation du pro- After completion of entry and compilation of the
gramme en code d'origine, la commande del'unité de traitement- gram in original code, ordering the processing unit-
peut être transmise à l'INTERPRETE pour exécution du code résultant si ce dernier se présente sous la forme d'un code may be transmitted to the INTERPRETER for execution of the resulting code if the latter is in the form of a code
intermédiaire L'option peut être offerte au programmeur de - intermediate The option can be offered to the programmer from -
sauvegarder le code d'origine et/ou le code résultant dans une mémoire secondaire,telle qu'un support sur disque ou sur bande Au lieu d'engendrer un code intermédiaire ("code p"), le COMPILATEUR peut être du type qui émet des codes machine exécutables Le COMPILATEUR peut ne nécessiter qu'un seul passage du code d'origine à la manière du cor mpilateur Pascal save the original code and / or the resulting code in a secondary memory, such as a disk or tape medium. Instead of generating an intermediate code ("p code"), the COMPILATOR can be of the type which transmits executable machine codes The COMPILER may require only one pass of the original code in the manner of the Pascal cor mpiler
descendant récursif usuel Si le COMPILATEUR nécessite plu- usual recursive descendant If the COMPILATOR requires more
sieurs passages, le premier passage devrait, de préférence, effectuer l'analyse syntactique de façon à révéler toutes If there are several passages, the first passage should preferably perform the syntactic analysis so as to reveal all
les erreurs Se syntaxe.errors get syntax.
Le sys-%me d'interruption permet au programmeur d'arre- The interrupt system allows the programmer to stop
ter l'exécuzion du programme en code machine a un moment don- ter execution of the program in machine code at a given time
né quelconque, d'examiner les valeurs des variabies,puis de poursuivre l'exécution Aucun matériel supplémentaire n'es-z nécessaire pour cette fonction supplémentaire et le logiciel born any, examine the values of the variabies, then continue execution No additional hardware is required for this additional function and software
supplémentaire nécessaire est très peu important. extra required is very unimportant.
Sur la Fig 2 à laquelle on se référera maintenant, on a représenté les circuits et les éléments du matériel qui In Fig 2 to which we will now refer, the circuits and the elements of the material which are shown
interviennent directement dans l'opération d'interruption. intervene directly in the interruption operation.
Lorsqu'on frappe une touche du PUPITRE A TUBE CATHODIQUE,un train d'impulsions constituant le multiplet correspondant à When a key on the CATHODIC TUBE is hit, a train of pulses constituting the multiplet corresponding to
la touche frappée est transmis par le point d'accès de sor- the key pressed is transmitted by the exit access point
tie série S du RS-232-C Une porte convertisseuse C 1 conver- tie S series of RS-232-C A converting door C 1 conver-
tit le train d'impulsions des niveaux RS-232-C aux niveaux tit the pulse train from RS-232-C levels to levels
TTL (logique à transistor-transistor) pour répondre aux condi- TTL (transistor-transistor logic) to meet the conditions
tions du point d'accès d'entrée EN de i'ERAS Ce dernier transforme le train d'impulsions successives en un multiplet de huit bits {octet) qui est mis en mémoire dans le registre des données reçues de l'ERAS Ce dernier émet alors un signal de données disponibles sur une broche DAV, signal qui est The access point EN of the ERAS This transforms the train of successive pulses into a byte of eight bits (byte) which is stored in the register of data received from the ERAS The latter emits then a data signal available on a DAV pin, signal which is
transmis par une porte G 1 à une entrée d'interruptions à vec- transmitted by a door G 1 to a vector interrupt input
teurs VI du CODEUR DE PRIORITE.tors VI of the PRIORITY ENCODER.
Bien qu'on n'ait représenté qu'une broche d'entrée VI de Although only a VI input pin of
ce codeur, il est bien entendu que cette microplaquette com- this encoder, it is understood that this chip includes
porte d'autres broches d'entrée d'interruptions à vecteurs auxquelles d'autres dispositifs interrupteurs peuvent être connectés. carries other vector interrupt input pins to which other switch devices can be connected.
Le CODEUR DE PRIORITE arbitre les demandes d'interru D- The PRIORITY ENCODER arbitrates requests to interrupt D-
tion concurrentes appliquées à ses entrées et détermine competing tion applied to its inputs and determines
qu'elle est la demande qui a la priorité la plus élevée. that it is the request which has the highest priority.
L'entrée EI de mise en fonction du CODEUR DE P Ri ORITE est The EI input to activate the P Ri ORITE ENCODER is
* mise à-la masse, comme représenté.* grounding, as shown.
Si l'on admet que la demande d'interruption du PUPITRE et de l'ERAS est reconnue prioritaire, le CODEUR transmet If it is accepted that the request to interrupt the DESK and the ERAS is recognized as priority, the ENCODER transmits
alors un code de trois bits A 0, A 1, A 2 aux entrées respec- then a three-bit code A 0, A 1, A 2 at the respective inputs
tives du REGISTRE DE VECTEUR D'INTERRUPTION Les cinq autres entrées de ce registre sont maintenues à l'état positif par une source de tension +V de sorte que le multiplet résultant appliqué à cette microplaquette de registre constitue une instruction d'appel RST Le signal produit sur la broche de sortie GS du CODEUR DE PRIORITE est transmis par une porte G 2 à l'entrée d'activation de verrouillage LE du REGISTRE DE VECTEUR D'INTERRUPTION pour provoquer la mise en mémoire INTERRUPTION VECTOR REGISTER tives The other five entries in this register are kept positive by a voltage source + V so that the resulting byte applied to this register chip constitutes an RST call instruction The signal product on the output pin GS of the PRIORITY ENCODER is transmitted by a door G 2 to the lock activation input LE of the INTERRUPTION VECTOR REGISTER to cause storage
par ce dernier de l'instruction d'appel RST dans ses bas- by the latter of the RST call instruction in its bas-
cules bistables internes.internal bistable cules.
L'activation de la broche de sortie GS du CODEUR DE Activation of the output pin GS of the ENCODER
PRIORITE transmet également un signal d'interruption par- PRIORITY also transmits an interrupt signal by
l'intermédiaire d'une porte ET A 1 à la broche de demande d'interruption INT* de l'unité de traitement ZSO Si l'on suppose que l'interruption du processeur est autorisée, après achèvement de l'instruction-en cours, les broches IORQ* et M 1 * d'état de l'unité de traitement sont rendues actives et leurs signaux sont transmis par des portes G 3, via an AND gate A 1 to the interrupt request pin INT * of the ZSO processing unit If it is assumed that the interruption of the processor is authorized, after completion of the instruction-in progress , the status pins IORQ * and M 1 * of the processing unit are made active and their signals are transmitted by gates G 3,
G 4 à une porte A 2 pour fo'rmer le signal INTA (AR d'interrup- G 4 at a gate A 2 to form the INTA signal (AR interrupt-
tion) Ce dernier signal est inversé par une porte G 5 et ap- tion) This last signal is inverted by a gate G 5 and ap-
pliqué à la broche OE d'activation de la sortie du REGISTRE DE VECTEURD'INTERRUPTION à la suite de quoi l'instruction d'appel RST appliquée aux entrées de ce registre est chargée folded to the OE pin for activating the output of the INTERRUPTION VECTOR REGISTER after which the RST call instruction applied to the inputs of this register is loaded
sur le BUS DE DONNEES.on the DATA BUS.
L'instruction RST est alors entrée dans l'unité du trai tement Z 80 qui l'exécute,ce qui a pour effet qu'elle refoule le contenu du compteur de programme dans la pile et qu'elle effectue un saut à un emplacement prédéterminé de la partie basse de la mémoire Cet emplacement contient un "vecteur" The RST instruction is then entered in the processing unit Z 80 which executes it, which has the effect that it drives back the content of the program counter in the stack and that it jumps to a predetermined location of the lower part of the memory This location contains a "vector"
ou instruction de saut (JMP) de trois multiplets à une rou- or jump instruction (JMP) from three bytes to one wheel
tine de service des interruptions Cette dernière contient l'éditeur ainsi qu'une sous-routine pour mettre en mémoire tine of service of interruptions This last contains the editor as well as a subroutine to put in memory
le contenu des registres de l'unité de traitement La com- the contents of the registers of the processing unit
ande de l'unité de traitement est alors conservée par l'édi- ande of the processing unit is then kept by the editor
teur jusqu'à ce qu'un caractère ait été entré dans la mémoire- until a character has been entered into memory-
tampon de code d'origine ou qu'une opération d'édition ait original code buffer or an edit operation has
été achevée.been completed.
L'éditeur comporte une instruction d'entrée qui, lors- qu'elle est exécutée, a pour effet que l'unité de traitement The editor includes an input instruction which, when executed, has the effect that the processing unit
place l'adresse du point d'accès de l'ERAS sur le BUS D'A- places the address of the ERAS access point on the BUS D'A-
DRESSE Cette adresse est vérifiée par le COMPARATEUR et si DRESS This address is verified by the COMPARATOR and if
elle correspond à celle du point d'accès, la broche de sor- it corresponds to that of the access point, the output pin
tie EOUT est rendue active pour le signaler au DECODEUR Ce tie EOUT is made active to signal it to DECODER This
dernier est commandé par d'autes signaux de commande et d'é- the latter is controlled by other control and
tat (non représentés) de la manière classique de façon à transmettre un signal RDE* à l'entrée correspondante RDE de l'ERAS Le multiplet contenu dans le registre des données reçues (non représenté) de l'ERAS est alors appliqué sur le BUS DE DONNEES et transmis à l'accumulateur qui fait partie tat (not shown) in the conventional way so as to transmit an RDE * signal to the corresponding RDE input of the ERAS The byte contained in the register of received data (not shown) of the ERAS is then applied to the BUS DATA and transmitted to the accumulator which is part
de l'unité de traitement.of the processing unit.
Dans le mode de réalisation préféré de l'invention re- In the preferred embodiment of the invention
présenté sur la Fig 2, les circuits intégrés utilisés presented in Fig 2, the integrated circuits used
peuvent être les suivants.may be as follows.
ERAS: 1602ERAS: 1602
CODEUR DE PRIORITE: 74 L 5148PRIORITY ENCODER: 74 L 5148
REGISTRE DE VECTEUR D'INTERRUPTICN: 74 L 5373 INTERRUPTICN VECTOR REGISTER: 74 L 5373
DECODEUR: 74 L 5155DECODER: 74 L 5155
COMPARATEUR: 25 L 52521COMPARATOR: 25 L 52521
C 1: 1489C 1: 1489
C 2: 1488C 2: 1488
Sur la Fig 3 à laquelle on se référera maintenant, In Fig 3 to which we will now refer,
on a représenté la séquence générale des opérations du sys- the general sequence of system operations has been shown
tome Le COMPILATEUR détient normalement a commande de l'unité de traitement et est soit dans une boucle infinie tome The COMPILATOR normally holds control of the processing unit and is either in an infinite loop
après avoir atteint une Marque de Pause dans la mémoire-tam- after reaching a Pause Mark in the memory-tam-
pon de code d'origine soit en train d'analyser le code d'o- pon of original code is analyzing the code from-
rigine qui se trouve dans la mémoire-tampon. which is in the buffer.
Lorsqu'il se produit une FRAPPE DE TOUCHE sur le termi- When there is a KEY STRIKE on the termi-
nal, ceci provoque une INTERRUPTION à la suite de quoi l'or- nal, this causes an INTERRUPTION as a result of which the-
dinateur est envoyé à la routine de service des interruptions. computer is sent to the interrupt service routine.
Cette dernière comporte une sous-routine pour exécuter l'o- The latter includes a subroutine to execute the
pération SAUVEGARDER LES REGISTRES indiquée sur le dessin. operation SAVE THE REGISTERS indicated on the drawing.
L'EDITEUR est alors exécuté par l'unité de traitement. The EDITOR is then executed by the processing unit.
Si la FRAPPE DE TOUCHE correspond à un caractère de commande, une procédure d'édition, telle qu'un déplacement du curseur, un défilement de l'image, sur l'écran, une suppression de caractère ou une suppression de ligne, est effectuée Si la FRAPPE DE TOUCEHE correspond à un caractère alphanumérique ou autre caractère de code d'oricine valide, ce dernier est entré dans la mémoire-tampon de code d'origine et affiché sur l'écran vidéo et le curseur d'écran est avancé à la position If the KEY STRIKE corresponds to a command character, an editing procedure, such as moving the cursor, scrolling the image, on the screen, deleting a character or deleting a line, is performed If the KEYKEY matches an alphanumeric or other valid origin code character, the original enter code buffer is displayed on the video screen and the screen cursor is advanced to the position
de caractère suivante.next character.
La routine de service des interruptions effectue alors The interrupt service routine then performs
un saut à sa sous-routine pour effectuer sa procédure RESTAU- a jump to its subroutine to perform its RESTAU-
RER LES REGISTRES au moyen de laquelle les registres de l'u- RER THE REGISTERS by means of which the registers of the
nité de traitement sont remis à leurs valeurs d'origine qu'ils treatment nity are returned to their original values they
avaient au moment de l'interruption. had at the time of the interruption.
L'instruction AUTORISER LESINTERRUPTIONS (El) est alors The instruction AUTHORIZE INTERRUPTIONS (El) is then
exécutée par l'unité de traitement de façon que cette aer- executed by the processing unit so that this aer-
nière puisse répondre à l'interruption suivante Enfin, l'ins- can respond to the next interruption Finally, the ins-
truction RET est exécutée de façon que l'ordinateur puisse RET truction is executed so that the computer can
RETOURNER AU COMPILATEUR Le compilateur reprend alors l'exé- RETURN TO THE COMPILER The compiler then resumes the exe
cution au point o elle avait été interrompue. cution to the point where it was interrupted.
Sur la Fig 4 à laquelle on se référera maintenant, on a représenté la séquence des opérations du compilateur Après In Fig 4 to which we will now refer, the sequence of operations of the compiler has been shown.
initialisation, le compilateur effectue tout d'abord sa fonc- initialization, the compiler first performs its function
tion LIRE CARACTERE au moyen de laquelle le multiplet contenu tion READ CHARACTER by means of which the byte contained
dans le premier emplacement de la mémoire-tampon du code d'o- in the first location of the o-code buffer
rigine est lu.rigine is read.
Si ce multiplet est le code prédéterminé désigné Marque de Pause, le pointeur du compilateur n'avance pas et le compilateur entre dans unc boucle infinie dans laquelle il-continue de lire le idême emplacement jusqu'à ce que le contenu soit changé en un blanc par l'éditeur Lorsque ce If this byte is the predetermined code designated Pause Mark, the pointer of the compiler does not advance and the compiler enters an infinite loop in which it continues to read the same location until the content is changed to a blank by the editor When this
changement se produit, le poihnteur de la mémoire du compila- change occurs, the compiler memory poihntor
teur est incrémenté à l'emplacement suivant de la mémoire- tor is incremented at the next location in memory-
tampon de sorte que le compilateur sort de sa boucle de Pause buffer so the compiler comes out of its Pause loop
comr e indiqué par l'inscription AVANCER POINTEUR DE MEMOIRE. comr e indicated by the inscription ADVANCE MEMORY POINTER.
Comme indiqué par l'inscriptiod'SYMBOLE? ", l'analyseur As indicated by the inscription'SYMBOLE? ", the analyzer
lexical du compilateur détermine alors si le caractère d'ori- the lexical of the compiler then determines if the character of ori-
gine lu constitue le dernier caractère d'un symbole, tel qu'un identificateur, un opérateur ou une marque de ponctua- tion Dans la négative, la fonction LIRE CARACTERE est à gine lu constitutes the last character of a symbol, such as an identifier, an operator or a punctuation mark If not, the GET CHARACTER function is
nouveau exécutée jusqu'à ce qu'un symbole soit reconnu. again executed until a symbol is recognized.
L'analyseur de syntaxe du compilateur détermine alors si ce symbole est conforme à une SYNTAXE CORRECTE en conformité avec la grammaire du langage de programmation Si le symbole The compiler syntax analyzer then determines whether this symbol conforms to a CORRECT SYNTAX in accordance with the grammar of the programming language If the symbol
n'est pas conforme à la syntaxe, un MESSAGE D'ERREUR est af- does not conform to the syntax, an ERROR MESSAGE is displayed
fiché. Si la syntaxe est correcte, la fonction LIRE CARACTERE est répétée jusqu'à cequ'une erreur soit trouvée ou que la FIN DU PROGRAMME soit atteinte Dans ce cas, le GENERATEUR DE CODE peut être appelé si cette fonction est exécutée sous la forme d'un passage séparé Alternativement, la génération du code peut être effectuée concurremment avec les analyses lexicales et syntactiques Le code engendré peut alors être plug. If the syntax is correct, the READ CHARACTER function is repeated until an error is found or the END OF THE PROGRAM is reached In this case, the CODE GENERATOR can be called if this function is executed in the form of a separate passage Alternatively, the generation of the code can be carried out concurrently with the lexical and syntactic analyzes The generated code can then be
mis en mémoire sur disque et/ou exécuté, au choix du pro- stored on disk and / or executed, at the option of the pro-
grammeur, comme indiqué par l'inscription SAUVEGARDER/-EX 4 CU- grammer, as indicated by the inscription SAVE / -EX 4 CU-
TER CODE RESULTANT.TER RESULTING CODE.
Pour la clarté de l'illustration, on montrera comment For the clarity of the illustration, we will show how
le compilateur simple et très largement publié PL/0 du pro- the simple and widely published PL / 0 compiler of the pro-
fesseur N Wirth (Doc N 12) peut être modifié pour la mise N Wirth spanker (Doc N 12) can be modified to put
en oeuvre de la présente invention Dans la description qui of the present invention In the description which
suite on a ajouté les identificateurs ci-après qui n'appa- the following identifiers have been added which do not appear
raissent pas dans le compilateur PL/0 d'origine tel que publié. CONT, PEEK, RECOMPILE, PTR, PM et SP La première instruction dans le compilateur modifié est: not appear in the original PL / 0 compiler as published. CONT, PEEK, RECOMPILE, PTR, PM and SP The first instruction in the modified compiler is:
SI NON CONT ALORSIF NOT CONT THEN
La variable booléenne CONT est FAUSSE lors de l'entrée initiale dans le compilateur, ce qui signifie que ce n'est pas une continuation d'une exécution précédente En d'autres The Boolean variable CONT is FALSE on initial entry into the compiler, which means that it is not a continuation of a previous execution.
termes, le compilateur vient juste d'être entré pour la pre- terms, the compiler has just been entered for the first
mière fois au cours de laprésente session Les instructions d'affectation suivntes sont, par conséquent, exécutées pour initialiser le contenu des tableaux W ORD, WSYM, SSYM, MNEM 1 ONIC, DECLBEGSYS, STATBEGSYS et FACBEGSYS représentés aux pages 346, first time during this session The following assignment instructions are therefore executed to initialize the contents of the W ORD, WSYM, SSYM, MNEM 1 ONIC tables, DECLBEGSYS, STATBEGSYS and FACBEGSYS shown on pages 346,
347 du traité de Wirth (Doc n 12) Les valeurs de ces ta- 347 of the Treaty of Wirth (Doc n 12) The values of these ta-
bleaux restent fixes pendant toute l'exécution du compilateur remain fixed during the whole execution of the compiler
et l'instruction conditionnelle SI ci-dessus évite la néces- and the IF conditional statement above avoids the need for
sité de ré-exécuter toutes ces ins:ructions d'affectation à re-execute all of these ins: ructions in assignment to
la suite des-ré-initialisations du compilateur pour les recom- The rest of the re-initializations of the compiler for recom-
pilations En d'autres termes, après la première vérification pilations In other words, after the first check
de la variable CONT,celle-cl est mise à VRAI de façon à con- of the variable CONT, this one is set to TRUE so as to con-
tourner ensuite les instructions d'affectation lorsqu'une re- then rotate the assignment instructions when a re-
compilation est requise.compilation is required.
Après le bloc conditionnel d'affectation des tableaux, une fonction de langage d'assemblage PEEK est appelée pour After the conditional block for assigning arrays, a PEEK assembly language function is called to
lire le contenu de l'emplacement de mémoire qui précède immé- read the contents of the memory location above immediately
diatement le début de la mémoire-tampon de code d'origine, the start of the original code buffer,
emplacement dans lequel est contenu l'Indicateur de Recompi- location in which the Recompilation Indicator is contained
lation Si,dans cet emplacement,le code ASCII représentant la lettre "R" a été chargé par l'éditeur,une procédure du compilateur RECOMPILE est appelée pour ré-initialiser les variables ERR, CC, CX et LL et pour attribuer la valeur de If, in this location, the ASCII code representing the letter "R" has been loaded by the editor, a procedure of the RECOMPILE compiler is called to re-initialize the variables ERR, CC, CX and LL and to assign the value to
constante AL ( 10) à la variable KK. constant AL (10) to the variable KK.
La procédure RECOMPILE met également la valeur d'une The RECOMPILE procedure also puts the value of a
variable pointeur PTR égale à l'adresse de début de la mé- PTR pointer variable equal to the start address of the met
moire-tampon de code d'origine Le pointeur PTR est le poin- original code buffer The PTR pointer is the point
teur de mémoire de l'analyseur lexical du compilateur et il est successivement avancé multiplet par multiplet du code d'origine pour lire ce dernier l'analyseur lexical lit le multiplet contenu dans l'emplacement de mémoire désigné par memory of the compiler lexical analyzer and it is successively advanced byte by byte of the original code to read the latter the lexical analyzer reads the byte contained in the memory location designated by
le pointeur PTR.the PTR pointer.
L'analyseur lexical comporte également une autre modifi- The lexical analyzer also includes another modification
cation importante du compilateur PL/0 Cette modification est incluse dans la procédéure GETSYM dans laquelle est également important cation of the PL / 0 compiler This modification is included in the GETSYM procedure in which is also
imbriquée la procédure GETCH.nested the GETCH procedure.
GETSYM a en tant que premiere instruction: GETSYM has as its first instruction:
PENDANT QUE CH=' ' EXECUTER GETCH;WHILE CH = '' EXECUTE GETCH;
Ceci constitue une partie d'une boucle infinie qui se répète tant que la procédure GETCH retourne le code ASCII ( 32) qui représente un espacement Comme expliqué ci-dessus, la procédure GETCH retourne le code d'espacement 32 chaque This is part of an infinite loop that repeats as long as the GETCH procedure returns the ASCII code (32) which represents a spacing As explained above, the GETCH procedure returns the spacing code 32 each
fois qu'elle lit la Marque de Pause. once she reads the Pause Mark.
La première instruction de GETCH est: The first instruction of GETCH is:
CH: = PTR-;CH: = PTR-;
de façon à charger dans la variable CH le contenu de l'em- so as to load the contents of the job into the variable CH
placement de la mémoire de code d'origine désigné par la va- placement of the original code memory designated by the va-
riable pointeur PTR L'instruction suivante de la procédure GETCH est: riable pointer PTR The following instruction of the GETCH procedure is:
SI CH = CHR(PM) ALORSIF CH = CHR (PM) THEN
vérifiant ainsi si le multiplet lu est le Masque de Pause PM qui est une constante égale à 35 On a choisi cette valeur étant donné que c'est un caractère visible et qu'elle n'était thus checking if the byte read is the PM Pause Mask which is a constant equal to 35 We chose this value since it is a visible character and it was not
pas autrement utilisée.not otherwise used.
L'instruction suivante suit la clause SI: The following statement follows the SI clause:
CH: = CHR (SP)CH: = CHR (SP)
dans laquelle SP est égal au code ASCII ( 32) pour un espace- in which SP is equal to the ASCII code (32) for a space-
ment La commande retourne alors à GETSYM dans laquelle la condition de la clause PENDANT QUE est satisfaite de sorte qu'elle appelle à nouveau la procédure GETCH Cette séquence est répétée et se traduit par une boucle infinie tant que le multiplet contenu dans l'emplacement de mémoire qui est lu The command then returns to GETSYM in which the condition of the clause WHILE THAT is satisfied so that it calls the GETCH procedure again This sequence is repeated and results in an infinite loop as long as the byte contained in the location of memory that is read
est la Marque de Pause.is the Break Mark.
Après que l'éditeur a remplacé ce multiplet de Marque de Pause par le code ASCII représentant un espacement,la boucle est interrompue du fait que la condition-booléenne de la clause SI n'est plus satisfaite (la variable CH n'est pas égale à PM) Au lieu de cela la clause SINON suivante est exécutée de façon à faire avancer le pointeur PTR de la mémoire de code d'origine à l'emplacement de mémoire suivant, par l'instruction: After the editor has replaced this Pause Mark multiplet with the ASCII code representing a spacing, the loop is interrupted because the Boolean condition of the SI clause is no longer satisfied (the variable CH is not equal Instead, the following ELSE clause is executed to advance the PTR pointer from the original code memory to the following memory location by the instruction:
PTR: = PTR + 1;PTR: = PTR + 1;
après quoi l'appel suivant de la procédure GETCH lit l'empla- after which the next call to the GETCH procedure reads the job
cement suivant de la mémoire de code d'origine, pour per- next cement from the original code memory, to allow
mettre au compilateur de poursuivre son avance à travers le code d'origine le pointeur PTR esz avancé de manière répétée put the compiler to continue its advance through the original code the PTR esz pointer advanced repeatedly
à chaque appel de la procédure GETCH jusqu'à ce qu'il at- each time you call the GETCH procedure until it has
teigne la nouvelle Marque de Pause introduite par l'éditeur, the new Break Mark introduced by the publisher,
comme décrit ci-dessous.as described below.
Sur la Fig 5-à laquelle on se référera, on a représen- In Fig 5-to which we will refer, we have represented
té la séquence des opérations de l'éditeur La fonction EN- TRER CARACTERE est tout d'abord exécutée en réponse à FRAPPE DE CARACTERE (Fig 3) L'éditeur détermine alors si The editor's sequence of operations The ENTER CHARACTER function is first executed in response to CHARACTER HIT (Fig 3) The editor then determines whether
le multiplet entré est un CARACTERE DE COMMANDE Dans la né- the byte entered is an ORDER CHARACTER In the ne-
gative, le caractère est entré dans la mémoire-tampon de code d'origine, comme indiqué par l'inscription CAR DANS gative, the character is entered in the original code buffer, as indicated by the inscription CAR IN
MEM-TAMPON Le caractère entré est également affiché sur l'é- MEM-BUFFER The entered character is also displayed on the display.
cran comme indiqué par l'inscription CAR TRANS A ECRAN PU- notch as indicated by the inscription CAR TRANS A ECRAN PU-
PITRE Si le caractère entré est un caractère de commande, PITRE If the character entered is a control character,
l'éditeur détermine alors s'il s'agit d'un RETOUR DU CHA- the editor then determines whether it is a RETURN FROM CHA-
RIOT? Dans la négative, la routine de l'éditeur -appropriée pour traiter les caractères de commande est appelée, comme, indiqué par l'inscription TRANSF A ROUTINE CAR DE COM et RIOT? If not, the routine of the editor - appropriate for processing the command characters is called, as indicated by the inscription TRANSF A ROUTINE CAR DE COM and
comme on le décrira ci-dessous en se référant à la Fig 6. as will be described below with reference to Fig 6.
Comme représenté sur la Fig 5 à laquelle on continue- As shown in Fig 5 to which we continue-
ra de se référer, si le caractère entré est un retour du ra to refer, if the character entered is a return of the
chariot, une nouvelle Marque de Pause est écrite dans la mé- cart, a new Break Mark is written in the
moire-tampon de code d'origine dans l'emplacement adjacent original code buffer in adjacent slot
à la fin de la ligne en cours, comme indiqué par l'inscrip- at the end of the current line, as indicated by the inscription-
tion INTRODUIRE NOUVELLE MARQUE DE PAUSE L'ancienne Marque de Pause est changée en un blanc (espacement) comme indiqué tion INSERT NEW PAUSE MARK The old Pause Mark is changed to a blank (spacing) as shown
par l'inscription RETIRER ANCIENNE MARQUE DE PAUSE. by the inscription REMOVE OLD PAUSE MARK.
Pour faciliter la localisation ultérieure de l'emplace- To facilitate the subsequent location of the location-
ment de la Marque de Pause, un emplacement de mot de mémoire Pause Mark, a memory word location
est réservé en tant que Registre de Pause pour mettre en mé- is reserved as a Pause Register to highlight
moire l'adresse de l'emplacement de la Marque de Pause L'a- moire the address of the Pause Mark location The
dresse de la nouvelle Marque de Pause est ainsi mise en mé- of the new Break Mark is thus set
moire dans ce registre de la mémoire, comme indiqué par l'inscription METTRE A JOUR REGISTRE DE PAUSE Le code ASCII représentant un retour de chariot ( 13) est alors entré dans moire in this memory register, as indicated by the inscription UPDATE PAUSE REGISTER The ASCII code representing a carriage return (13) is then entered in
la mémoire-tampon de code d'origine dans l'emplacement adja- the original code buffer in the adja- location
cçent à la Marque de Pause, comme indiqué par l'inscription o INTRODUIRE CAR DANS MEM-TAMPON Le code ASCII représentant une avance de ligne ( 10) peut être entré après le retour du cce at the Pause Mark, as indicated by the inscription o INSERT CAR IN MEM-BUFFER The ASCII code representing a line advance (10) can be entered after the return of the
chariot, si cette convention est désirée. cart, if this convention is desired.
Sur la Fig 6 à laquelle on se référera maintenant, on In Fig 6 to which we will now refer, we
a représenté la séquence des opérations des routines de l'é- represented the sequence of operations of the routines of the
diteur pour traiter les caractères de co Lmmande entrés au pu- editor to process the characters of co Lmmande entered in the pu-
pitre Le caractère entré est tout d'abord vérifié pour dé- pitre The character entered is first checked to
terminer si c'est le code correspondant à l'opération de REMONTEE DU CURSEUR Dans la négative, une vérification est finish if it is the code corresponding to the CURSOR RISE operation If not, a check is
alors effectuée pour déterminer si c'est le code correspon- then performed to determine if it is the corresponding code
dant à l'opération de REMONTEE DE L'IMA GE (vers le début du programme ce qui correspond,en pratique,à un défilement de during the IMA GE BACKUP operation (towards the start of the program, which in practice corresponds to a scrolling of
l'image vers le bas) Dans la négative, le caractère de com- image down) If not, the character of com-
mande est traité de la manière classique que l'on ne décrira pas davantage, comme indiqué par l'inscription TRAITER AUTRES Mande is treated in the conventional manner which will not be described further, as indicated by the inscription TREAT OTHERS
CARACTERES DE COMMANDE.ORDER CHARACTERS.
Si le caractère de commande entré est le code qui repré- If the command character entered is the code that represents
sente la REMONTEE DU CURSEUR ou celui qui représente la REMONTEE DE L'IMAGE, l'opération respective REMONTER LE CURSEUR ou FAIRE DEFILER L'IMAGE est exécutée Dans le premier cas, le feel the CURSOR UP or the one representing the PICTURE RISE, the respective operation Raise the CURSOR or SCROLL THE IMAGE is executed In the first case, the
curseur est déplacé d'une ligne vers le haut sur l'écran vidéo. cursor is moved up one line on the video screen.
Dans le second cas, l'écran est effacé et ré-écrit pour affi- In the second case, the screen is cleared and rewritten to display
cher les lignes de la mémoire-tampon de code d'origine qui expensive lines from the original code buffer which
précèdent immédiatement les lignes effacées. immediately precede deleted lines.
Comme indiqué par l'inscription INTRODUIRE NOUVELLE MARQUE DE PAUSE, une nouvelle Marque de Pause est introduite à l'emplacement immédiatement adjacent à la fin de la ligne de la mémoire-tampon de code d'origine qui précède la ligne qui porte la nouvelle position du curseur Les opérations RETIRER ANCIENNE MARQUE DE PAUSE et METTRE A JOUR REGISTRE As indicated by the inscription ENTER NEW PAUSE MARK, a new Pause Mark is introduced at the location immediately adjacent to the end of the line of the original code buffer preceding the line which carries the new position of the cursor The operations REMOVE OLD PAUSE MARK and UPDATE REGISTER
DE PAUSE sont alors effectuées de la manière que l'on a dé- OF PAUSE are then carried out in the manner that has been
crite ci-dessus en se référant à la Fig 5. above, referring to Fig 5.
L'opération METTRE INDICATEUR DE RECOSMPILATION provoque The operation SET RECOSMPILATION INDICATOR causes
la ré-initialisation du compilateur lorsque ce dernier re- re-initializing the compiler when the latter
prend la commande de l'unité de traitement après le retour de la routine de service de l'interruption Cet indicateur est, de préférence, un eimplacement de la mémoire dans leqeul takes control of the processing unit after the return of the interrupt service routine This indicator is preferably a location of the memory in the only
un code prédéterminé peut être chargé pour informer le compi- a predetermined code can be loaded to inform the compi-
lateur qu'une recompilation du code d'origine est requise. reader that a recompilation of the original code is required.
Dans le mode de réalisation préféré, cet indicateur de recompilation est r is pour requérir une recompilation chaque fois que le curseur est déplacé vers le haut ou que l'on remonte l'image En d'autres termes, on admet que chaque fois que le curseur est déplacé de façon à désigner un code d'origine qui peut avoir déjà été compilé, ce code sera In the preferred embodiment, this recompilation indicator is required to require a recompilation each time the cursor is moved up or the image is raised. In other words, it is accepted that each time the cursor is moved to indicate an original code which may have already been compiled, this code will be
changé de façon à nécessiter une recompilation. changed to require recompilation.
Une autre méthode consisterait à ne mettre l'inducteur de recompilation que si le code précédemment compilé est Another method would be to put the recompilation inducer only if the code previously compiled is
effectivement changé étant donné qu'il se peut que le pro- actually changed since the pro-
gralleur fasse défiler l'image dans un sens puis dans l'autre gralleur scrolls the image in one direction then in the other
sans apporter aucun changement au code d'origine. without making any changes to the original code.
Encore une autre solution consisterait à créer dans la Yet another solution would be to create in the
mémoire un registre qui contiendrait l'adresse de la der- memory a register which would contain the address of the last
nière position du pointeur du compilateur L'éditeur pourrait position of the compiler pointer The editor could
alors comparer cette adresse à l'emplacement de la mémoire- then compare this address to the memory location-
tampon de code d'origine désignée par le curseur pour déter- original code buffer designated by the cursor to determine
miner si des changements d'édition sont en train d'être ap- undermine if editing changes are being applied
pcrtés à un code d'origine qui a déjà été compilé. pcrtés to an original code that has already been compiled.
Bien que ces autres méthodes entraînent un plus petit Although these other methods result in a smaller
nombre de recompilations, le mode de réalisation préféré pré- number of recompilations, the preferred embodiment pre-
sente l'avantage d'une mise en oeuvre plus simple En outre, le processus de recompilation est tellement plus rapide que feels the advantage of a simpler implementation In addition, the recompilation process is so much faster than
la frappe manuelle du code d'origine au pupitre que le com- manual entry of the original code on the console that the
pilateur pourra recompiler tous le programme et rattraper le programmeur avant que ce dernier ait eu le temps de taper plus de quelques nouvelles lignes de code sauf dans le casde pilateur will be able to recompile all the program and catch up with the programmer before the latter has had time to type more than a few new lines of code except in the case of
programmes extrêmement volumineux Par conséquent, la réduc- extremely large programs Therefore, the reduction
tion du nombre des recompilations au minimum absolu n'est tion of the number of recompilations to the absolute minimum is
pas essentielle.not essential.
L'éditeur est écrit en Pascal avec des appels à seize The editor is written in Pascal with calls to sixteen
procédures et fonctions en langage d'assemblage externes. procedures and functions in external assembly language.
On décrira maintenant celles de ces routines qui sont propres We will now describe those of these routines which are clean
à la présente invention.to the present invention.
Lors de l'entrée de l'éditeur, la variable bool enne ECONT est vérifiée pour déterminer si cet appel de l'éditeur When entering the editor, the bool enne ECONT variable is checked to determine if this editor call
est la première entrée de la présente session ou une conti- is the first entry in this session or a conti-
nuation Si la variable ECONT est FAUSSE,elle est alors mise à VRAI et les procédures suivantes: INIT, NEWFILE, VECTOR et nuation If the variable ECONT is FALSE, it is then set to TRUE and the following procedures: INIT, NEWFILE, VECTOR and
TOPLO sont exécutées.TOPLO are executed.
D La procédure INIT remet à zéro la mémoire-tampon de code D The INIT procedure resets the code buffer to zero
d'origine, met le pointeur de mémoire au début de la mém-ire- original, puts the memory pointer at the beginning of the memory
tampon, introduit la Marque de Pause dans le premier emplace- pad, introduces the Break Mark in the first place
ment de la mémoire-tampon, met le contenu du Registre de Pause buffer, puts the contents of the Pause Log
égal à l'adresse de ce premier emplacement, initialise le cur- equal to the address of this first location, initializes the cur-
seur à la première rangée et à la première colonne de l'écran et met le pointeur d'indicateur de recompilation de façon in the first row and in the first column of the screen and places the recompilation indicator pointer
qu'il désigne l'emplacement de la mémoire qui précède le pre- that it designates the location of the memory which precedes the first
mier multiplet de la mémoire-tampon. mier byte from the buffer.
La procédure NEWFTILE souffle au programmeur qu'il doit The NEWFTILE procedure prompts the programmer to
choisir soit un nouveau fichier pour l'entrée du Code d'ori- choose either a new file for entering the Code of Ori-
gine soit un ancien fichier pour l'exécutiorn d'une révision. gine is an old file for executing a revision.
Dans ce dernier cas, le fichier est chargé dans la mémoire- In the latter case, the file is loaded into memory-
tampon de code d'origine à partir d'ul disque et la premiere original code buffer from disk and first
image d'écran de code d'origine est affichée. original code screen image is displayed.
La procédure VECTOR appelle la procédure d'assemblage The VECTOR procedure calls the assembly procedure
externe POKE trois fois pour mettre en mémoire dans la par- external POKE three times to store in the
tie basse de la mémoire ( 20 H) le vecteur de saut à une sous- low memory link (20 H) the jump vector to a sub-
routine SAVREGS qui met en mémoire le contenu des registres SAVREGS routine which stores the contents of the registers
de l'unité de traitement En réponse à une interruption ren- of the processing unit In response to an interrupt
due active par la frappe d'une touche sur le clavier du pu- due active by pressing a key on the pu keyboard
pitre, l'unité de traitement exécute l'instruction d'appel RST 4 et exécute ce vecteur de saut puis la sous-routine SAVREGS Après que les registres ont été sauvegardés,une instruction de saut contenue dans la sous-routine envoie pitre, the processing unit executes the RST 4 call instruction and executes this jump vector then the SAVREGS subroutine After the registers have been saved, a jump instruction contained in the subroutine sends
l'unité de traitement à l'éditeur. the processing unit to the editor.
La procédure TOPL O transmet la commande au compilateur PL/0 Elle est habituellement appelée après que l'éditeur a achevé l'entrée du caractère ou la fonction d'édition The TOPL O procedure transmits the command to the PL / 0 compiler. It is usually called after the editor has completed entering the character or the editing function.
correspondant à la touche frappée sur le clavier du terminal. corresponding to the key hit on the terminal keyboard.
Dans ce cas, la procédure est appelée après initialisation In this case, the procedure is called after initialization
*de l'éditeur.* from the publisher.
L'instruction suivante de l'éditeur n'est atteinte que lorsqu'une interruption se produit en réponse à la frappe d'une touche Cette instruction charge dans une variable le coda ASCII entré provenant du registre des données reçues de l'ERAS Ce multiplet d'entrée est vérifié pour déterminer The following instruction from the editor is only reached when an interruption occurs in response to a keystroke. This instruction loads the ASCII coda entered from the register of data received from ERAS into a variable. input is checked to determine
v s'il s' agit d'un caractère de commande ou d'un caractère al- v if it is a command character or an al-
ph-anurérique (supérieur à 31) Dans ce dernier cas, le multi- ph-anuric (greater than 31) In the latter case, the multi-
plet est entré dans la mémoire-tatpon de code d'origirm et plet entered the origirm code memory and
affiché sur l'écran vidéo de la manière classique. displayed on the video screen in the conventional manner.
Si le multiplet entré est soit le code de comzande pour déplacer le curseur vers le bas soit le code de commande pour remonter l'image, la procédure appropriée est appelée et se If the byte entered is either the control code to move the cursor down or the command code to raise the image, the appropriate procedure is called and
ternine par l'appel de la procédure de mise à jour UPDATE. by the call to the UPDATE update procedure.
Cette dernière entre dans la mémoire-tampon de code d'ori- The latter enters the original code buffer.
gine une nouvelle Marque de Pause dans l'emplacement adjacent à la fin de l'ancienne ligne dans le cas d'une opération de gine a new Pause Mark in the location adjacent to the end of the old line in the case of a
descente du curseur et dans l'emplacement adjacent à l'extré- descent of the cursor and in the location adjacent to the end
mité de la ligne non visible qui précède la première ligne from the invisible line preceding the first line
affichée dans le cas d'une opération de descente de l'image. displayed in the case of an image descent operation.
L'opération de mise à jour UPDATE supprime également l'an- The UPDATE update operation also removes the an-
cienne Marque de Pause en remplaçant la Marque de Pause con- this Pause Mark by replacing the Pause Mark
tenue dans l'ancien emplacement de cette dernière par le code ASCII qui représente un espacement ( 32) le Registre held in the former location of the latter by the ASCII code which represents a space (32) in the Register
de Pause est également mis à jour à l'adresse de l'emplace- is also updated at the location address
ment de la nouvelle Marque de Pause. ment of the new Break Mark.
Si le multiplet d'entrée est soit le code de commande If the input byte is either the order code
pour déplacer le curseur vers le haut soit le code de com- to move the cursor upwards be the code of com-
mande pour remonter l'image d'écran en direction du début du code d'origine, la procédure correspondante est appelée pour effectuer l'opération respective Cette procédure se termine par les appels de la procédure précédemment décrite request to raise the screen image towards the beginning of the original code, the corresponding procedure is called to perform the respective operation This procedure ends with the calls to the procedure previously described
de mise à jour UPDATE et également de la procédure RECOMPILE. UPDATE update and also the RECOMPILE procedure.
Cette dernière met en mémoire le code ASCII représentant la The latter stores the ASCII code representing the
lettre "R" dans l'emplacement de mémoire qui précède immédia- letter "R" in the memory location immediately preceding-
tement le début de la mémoire-tampon de code d'origine de fa- the start of the original code buffer so
çon à constituer-l'indicateur de recompilation ci-dessus men- lesson to build-the recompilation indicator above men-
tionné Après achèvement de l'opération de remontée du cur- After completion of the recovery of the cur-
seur ou de remontée de l'image d'écran,i'unité de traitement the screen image, the processing unit
retourne au com Dilateur cui vérifie l'indicateur de recom- returns to com Dilator cui checks the recommendation indicator
pilation, détermine que cet indicateur est mis puis appelle pilation, determines that this indicator is set and then calls
sa Procédure de ré-initialisation pour contraindre le compi- its Re-initialization procedure to constrain the compi-
lateur à recompiler le code d'origine depuis le début de la mémoiretampon de code d'origine. Si le multiplet entré est le code ASCII qui représente reader to recompile the original code from the start of the original code buffer. If the byte entered is the ASCII code that represents
le retour du chariot ( 13), la procédure CRET est appelée. the return of the carriage (13), the CRET procedure is called.
Cette routine entre dans la mémoire-tampon de code d'origine une nouvelle Marque de Pause dans l'emplacement adjacent au code de retour du chariot, retire l'ancienne Marque de Pause, This routine enters a new Pause Mark in the slot adjacent to the carriage return code in the original code buffer, removes the old Pause Mark,
met à jour le Registre de Pause, et exécute d'autres fonc- updates the Pause Registry, and performs other functions
tions plus classiques,telles que l'entrée du code d'avancede ligne dans la mémoire-tampon, la mise à jour du curseur et le défilement de l'affichage vidéo si la ligne en cours est more conventional, such as entering the line advance code in the buffer, updating the cursor and scrolling the video display if the current line is
la dernière ligne de l'écran.the last line of the screen.
Ir doit être bien compris que le mode de réalisation préféré décrit cidessus et représenté sur les dessins a été It should be understood that the preferred embodiment described above and shown in the drawings has been
donné uniquement à titre d'illustration de l'une des nom- given only as an illustration of one of the nom-
breuses formes sous lesquelles l'invention peut être mise en oeuvre et que de nombreuses modifications peuvent être apportées à ce mode de réalisation par les spécialistes de la technique sans s'écarter pour cela du cadre des revendir breuse forms in which the invention can be implemented and that many modifications can be made to this embodiment by those skilled in the art without departing from the scope of reselling
cations annexées.appended cations.
Par exemple, au lieu de réaliser la Marque de Pause sous forme d'un code prédéterminé entré dans un emplacement For example, instead of making the Pause Mark in the form of a predetermined code entered in a location
de mémoire à l'intérieur de la mémoire-tampon de code d'ori- of memory inside the original code buffer
gine, l'emplacement de pause peut être défini pour le compi- gine, the pause location can be defined for the compi-
lateur par une adresse de mémoire contenue dans un registre. reader by a memory address contained in a register.
Le compilateur peut alors être empêché d'analyser le code The compiler can then be prevented from parsing the code
mis en mémoire dans les emplacements de mémoire situés au- stored in memory locations located above
delà de cette adresse qui peut être incrémentée et décré beyond this address which can be incremented and decremented
mentée par l'éditeur.edited by the publisher.
En outre, l'interruption qui provoque le transfert de In addition, the interruption that causes the transfer of
la commande de l'unité de traitement du compilateur à l'édi- control of the compiler's processing unit from the editor
teur peut être rendue active par un minuteur ou une horloge au lieu de l'être au moyen du clavier En d'autres termes, le compilateur peut être interrompu périodiquement et le point d'accès d'entrée peut être appelé sélectivement pour déterminer si une touche a été frappée Dans la négative, The timer can be made active by a timer or clock instead of by the keyboard. In other words, the compiler can be interrupted periodically and the entry access point can be called selectively to determine if a key was struck If not,
l'interruption est terminée et la commande retourne au com- the interruption is completed and the command returns to the
pilateur Si l'appel sélectif du point d'accès révèle qu'une touche a été frappée,l'éditeur de la routine de service des interruptions prend la commande et est exécuté de la manière pilot If the selective call of the access point reveals that a key has been hit, the editor of the interrupt service routine takes the command and is executed in the manner
que l'on a décrite ci-dessus en se référant au mode de réa- which has been described above with reference to the mode of reaction
lisation préféré décrit Pour la plupart des applications, des interruptions pilotées par horloge à des intervalles d'environ 10 à 30 millisecondes doivent être suffisamment fréquentes pour rester au niveau de la fréquence de frappe preferred readout described For most applications, clock-driven interruptions at intervals of about 10 to 30 milliseconds should be frequent enough to stay at the typing frequency
des touches sur le clavier.keys on the keyboard.
En outre, l'indicateur de recompilation peut être mis In addition, the recompilation indicator can be set
chaque fois que le compilateur détermine que le code d'ori- each time the compiler determines that the code for
gine contient une erreur En d'autres termes, on peut ad- gine contains an error In other words, we can ad-
mettre que chaque fois qu'une erreur est révélée, le code put that every time an error is revealed, the code
d'origine sera modifié de sorte qu'il nécessitera une recom- original will be changed so that it will require a recommendation
pilation. Une autre modification possible consiste à supprimer l'exigence d'une recompilation à partir du tout début du code d'origine dans le cas o l'erreur se produit dans la pounding. Another possible modification consists in removing the requirement of a recompilation from the very beginning of the original code in case the error occurs in the
dernière ligne achevée de code d'origine Pendant la compi- last completed line of original code During compilation
lation de la ligne, les valeurs de registre résultantes, les lation of the line, the resulting register values, the
entrées dans les tables, les manipulations de piles, les a- entries in the tables, the handling of stacks, the a-
fectations de variables et les entrées dans la mémoire- variable assignments and entries in memory-
tampon de code sont temporairement mises en mémoire et ne sont finalement entrées que lorsque l'analyse syntactique de la ligne de code d'origine est achevée et détermine que la ligne est conforme à la grammaire Si la ligne contient une erreur, ces entrées temporaires sont supprimées et le pointeur du compilateur est ramené à l'extrémité de la ligne précédente, évitant ainsi la recompilation Cependant, cette méthode exige encore une recompilation si les lignes de code code buffer are temporarily stored in memory and are not entered until the parsing of the original line of code is completed and determines that the line conforms to grammar If the line contains an error, these temporary entries are removed and the compiler pointer is brought back to the end of the previous line, thus avoiding recompilation However, this method still requires recompilation if the lines of code
d'origine qui précèdent la dernière ligne sont modifiées. original lines preceding the last line are changed.
Encore untre possibilité serait de faire avancer la Another possibility would be to advance the
Marque de Pause par l'éditeur après l'entrée de chaque carac- Pause mark by the editor after entering each character
tère ou après l'entrée de chaque symbole délinité Ceci pré- tere or after entering each delineate symbol This pre-
2533721 t2,533,721 t
senterait l'avantage de révéler une erreur presqu'instanta- would feel the benefit of revealing an error almost instantly
nrément lors de son entrée au clavier L'inconvénient serait when entering the keyboard The downside would be
qu'une recompilation serait nécessaire pour toutes les pe- that recompilation would be necessary for all pe-
tites erreurs de fragpe sans donner au procranm eur la possibi- tite fragpe errors without giving the processor the opportunity
lité de les corriger avant qu'ellessoient explorées et ana- It is necessary to correct them before they are explored and analyzed.
lysées syntactiquement.syntactically lysed.
BIBLIOGPPHIEBIBLIOGPPHY
1 L V Atkinson, et autres, "Context Sensitive Editing as an Ap Droach to _ncrérmental Compilation", The Computer Journal, Tome 24, n 3, 1981, pages 222-229, Heyden & Son Ltd. 2 L V Atkinson et S D North, "COPAS A Conversational Pascal System", Softw- are Practice and Experience, Tome11, 1981, pages 819-829, John Wiley & Sons Ltd. 3 R B Ayres et R L Derrenbacher, "Partial Recompilation", 1 L V Atkinson, et al., "Context Sensitive Editing as an Ap Droach to _ncrérmental Compilation", The Computer Journal, Tome 24, n 3, 1981, pages 222-229, Heyden & Son Ltd. 2 L V Atkinson and S D North, "COPAS A Conversational Pascal System", Softw- are Practice and Experience, Tome11, 1981, pages 819-829, John Wiley & Sons Ltd. 3 R B Ayres and R L Derrenbacher, "Partial Recompilation",
Spring Joint Computer Conference, 1971, pages 497-502. Spring Joint Computer Conference, 1971, pages 497-502.
4 F T Baker et H D Mills, "Chief Programmer Teams", Classics in Softwate Engineering, Edité par E N Yourdon, 4 F T Baker and H D Mills, "Chief Programmer Teams", Classics in Softwate Engineering, Published by E N Yourdon,
Yourdon Press, pages 195-204.Yourdon Press, pages 195-204.
L Bolliet, et autres, "D 2 IA 2 'AG: A ulti-Access System for On-Line Algol Programming", Proc Spring JCC 1967, pages L Bolliet, et al., "D 2 IA 2 'AG: A ulti-Access System for On-Line Algol Programming", Proc Spring JCC 1967, pages
547-552.547-552.
6 P J Brown, "Writting Interactive Compilers and Inter- 6 P J Brown, "Writting Interactive Compilers and Inter-
preters, Ch 2 4, pages 41-45, John Wiley & Sons. preters, Ch 2 4, pages 41-45, John Wiley & Sons.
7 J Earley et P Caizergues, "A Method for Incrementally 7 J Earley and P Caizergues, "A Method for Incrementally
Compiling Languages with Nested Statement Structure", Commu- Compiling Languages with Nested Statement Structure ", Commu-
nications of the ACM, tome 15, N 12, Déc 1972, pages 1040- indications of the ACM, volume 15, N 12, Dec 1972, pages 1040-
1044.1044.
8 K Lock, "Structuring Programs for Multiprogram Time- 8 K Lock, "Structuring Programs for Multiprogram Time-
Sharing On-Line Applications", Proc Fall JCC 1965, pages Sharing On-Line Applications ", Proc Fall JCC 1965, pages
457-472.457-472.
9 J Pournelle, User's Column, BYTE, Sept 1982, page 324. 9 J Pournelle, User's Column, BYTE, Sept 1982, page 324.
J L Ryan, et autres, "A Conversational System for Incremental Compilation and Execution in a Time-Sharing Environment", Proceedings Fall Joint Computer Conference, J L Ryan, et al., "A Conversational System for Incremental Compilation and Execution in a Time-Sharing Environment", Proceedings Fall Joint Computer Conference,
1966, pages 1-21.1966, pages 1-21.
11 S Sonderstrup et M Pelle, "COMAL-80 A New Language?", 11 S Sonderstrup and M Pelle, "COMAL-80 A New Language?",
Dr Dobb's Journal, n 56, Jiin 1981, pages 14-15, 46-47. Dr Dobb's Journal, No. 56, Jiin 1981, pages 14-15, 46-47.
12 N Wirth, "Algorithms + Data structures-= Programs", Ch 5, pages 280347, 1976, Prentice-Hall, Inc. 12 N Wirth, "Algorithms + Data structures- = Programs", Ch 5, pages 280347, 1976, Prentice-Hall, Inc.
Claims (19)
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US42561282A | 1982-09-28 | 1982-09-28 |
Publications (1)
Publication Number | Publication Date |
---|---|
FR2533721A1 true FR2533721A1 (en) | 1984-03-30 |
Family
ID=23687299
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR8315244A Withdrawn FR2533721A1 (en) | 1982-09-28 | 1983-09-26 | COMPUTER SYSTEM WITH REAL-TIME COMPILATION |
Country Status (2)
Country | Link |
---|---|
FR (1) | FR2533721A1 (en) |
GB (1) | GB2130406B (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0194822A2 (en) * | 1985-03-11 | 1986-09-17 | Sony Corporation | Methods of and apparatus for compiling high-level language statements into low-level language instruction sets |
EP0406028A2 (en) * | 1989-06-30 | 1991-01-02 | Digital Equipment Corporation | Incremental compiler for source code development system |
US5325531A (en) * | 1989-06-30 | 1994-06-28 | Digital Equipment Corporation | Compiler using clean lines table with entries indicating unchanged text lines for incrementally compiling only changed source text lines |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0275021A (en) * | 1988-09-12 | 1990-03-14 | Hitachi Ltd | Source program editing system |
US5261103A (en) * | 1988-09-12 | 1993-11-09 | Hitachi, Ltd. | Method of and system for compiling source program |
US6457172B1 (en) * | 1999-04-13 | 2002-09-24 | International Business Machines Corporation | Compiler for supporting multiple runtime data representations |
US8281288B1 (en) * | 2011-10-20 | 2012-10-02 | Google Inc. | Integrated development environment with network-based compilation and sandboxed native machine-language capabilities |
-
1983
- 1983-09-07 GB GB08323914A patent/GB2130406B/en not_active Expired
- 1983-09-26 FR FR8315244A patent/FR2533721A1/en not_active Withdrawn
Non-Patent Citations (4)
Title |
---|
IBM TECHNICAL DISCLOSURE BULLETIN, vol. 15, no. 8, janvier 1973, pages 2387-2388, New York, US; E. KELLERMAN: "Recognition of misspelled keywords" * |
IBM TECHNICAL DISCLOSURE BULLETIN, vol. 8, no. 4, septembre 1965, page 568, New York, US; K. MALING: "Executing programs while they are being loaded" * |
PROCEEDINGS OF THE SPRING JOINT COMPUTER CONFERENCE, Washington, 1967, pages 547-552, US; L. BOLLIET et al.: "DIAMAG: a multi-access system for on-line Algol programming" * |
SOFTWARE PRACTICE AND EXPERIENCE, vol. 11, 1981, pages 819-829, John Wiley & Sons, Ltd, New York, US; L.V. ATKINSON et al.: "COPAS - a conversational Pascal system" * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0194822A2 (en) * | 1985-03-11 | 1986-09-17 | Sony Corporation | Methods of and apparatus for compiling high-level language statements into low-level language instruction sets |
EP0194822A3 (en) * | 1985-03-11 | 1989-03-15 | Sony Corporation | Methods of and apparatus for compiling high-level language statements into low-level language instruction sets |
EP0406028A2 (en) * | 1989-06-30 | 1991-01-02 | Digital Equipment Corporation | Incremental compiler for source code development system |
EP0406028A3 (en) * | 1989-06-30 | 1993-01-07 | Digital Equipment Corporation | Incremental compiler for source code development system |
US5325531A (en) * | 1989-06-30 | 1994-06-28 | Digital Equipment Corporation | Compiler using clean lines table with entries indicating unchanged text lines for incrementally compiling only changed source text lines |
Also Published As
Publication number | Publication date |
---|---|
GB2130406A (en) | 1984-05-31 |
GB2130406B (en) | 1986-11-26 |
GB8323914D0 (en) | 1983-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1838088B (en) | Method of instrumenting code having restrictive calling conventions | |
US6532401B2 (en) | Methods for automatically verifying the performance of a virtual robot | |
US10409564B2 (en) | Recording and playback of development sessions | |
Bromley et al. | Lisp Lore: A Guide to Programming the Lisp Machine | |
Pooley | An introduction to programming in SIMULA | |
US6904563B2 (en) | Editing platforms for remote user interface translation | |
JPH09198276A (en) | Program debugging system | |
Ladd et al. | Programming the Web: An application-oriented language for hypermedia service programming | |
Matloff et al. | The art of debugging with GDB, DDD, and Eclipse | |
KR20040063837A (en) | Method and system for recording macros in a language independent syntax | |
Canou et al. | Scaling up functional programming education: under the hood of the OCaml MOOC | |
FR2533721A1 (en) | COMPUTER SYSTEM WITH REAL-TIME COMPILATION | |
US5379407A (en) | Error handling in a state-free system | |
Horton et al. | Android: Game Programming | |
Pelc | Programming Forth | |
Epstein | Lingo in a Nutshell | |
EP0481012A1 (en) | Computer operations recorder and training system | |
Rather et al. | The FORTH approach to operating systems | |
Tanenbaum et al. | The people's time sharing system | |
Érdi | An Adventure in Symbolic Execution | |
Reiser | BAIL | |
Shivers et al. | Modular rollback through control logging: a pair of twin functional pearls | |
Messier | Beginning Rust Programming | |
Liberty | Sams Teach Yourself C++ in 10 Minutes | |
Arbuckle | Daniel Arbuckle's Mastering Python |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
ST | Notification of lapse |