NL7906416A - Rekenmachinesysteem, waarbij het programmageheugen geschikt is om doorlopen te worden waarbij niet tot een instruktie behorende gegevens apart gedetekteerd worden. - Google Patents

Rekenmachinesysteem, waarbij het programmageheugen geschikt is om doorlopen te worden waarbij niet tot een instruktie behorende gegevens apart gedetekteerd worden. Download PDF

Info

Publication number
NL7906416A
NL7906416A NL7906416A NL7906416A NL7906416A NL 7906416 A NL7906416 A NL 7906416A NL 7906416 A NL7906416 A NL 7906416A NL 7906416 A NL7906416 A NL 7906416A NL 7906416 A NL7906416 A NL 7906416A
Authority
NL
Netherlands
Prior art keywords
address
instruction
signal
block
program memory
Prior art date
Application number
NL7906416A
Other languages
English (en)
Original Assignee
Philips Nv
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Philips Nv filed Critical Philips Nv
Priority to NL7906416A priority Critical patent/NL7906416A/nl
Priority to US06/178,646 priority patent/US4376977A/en
Priority to FR8018382A priority patent/FR2464521A1/fr
Priority to GB8027474A priority patent/GB2057731B/en
Priority to DE19803031964 priority patent/DE3031964A1/de
Priority to JP11716380A priority patent/JPS5635249A/ja
Publication of NL7906416A publication Critical patent/NL7906416A/nl

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Calculators And Similar Devices (AREA)
  • Microcomputers (AREA)

Description

^ fc. .
PHN 9555 1 N.V. PHILIPS’ GLOEILAMPENFABRIEKEN te Eindhoven.
"Rekenmachinesysteem, waarbij het programmageheugen geschikt is om doorlopen te worden waarbij niet tot een instruktie behorende gegevens apart gedetekteerd worden".
ACHTERGROND VAN DE UITVINDING.
De uitvinding betreft een rekenmachinesysteem, bevattende: 5 a. een programmageheugen met een volgorde van adresplaatsen voor het opslaan van machinekodes; b. een toetsenbord; c. een afbeeldinrichting voor tenminste één regel karakters; d. een processor, tenminste bevattende: 10 dl. een adresregister voor het programmageheugen met een incrementeeringang; d2. een instruktieregister (205) en verdere op-slagmiddelen (207» 256) van tesamen een voor afbepaalde lengte om een uit het programma-15 geheugen uitgelezen instruktie van maximaal die voorafbepaalde lengte op te slaan; d3. een op het instruktieregister aangesloten eerste instruktiedekodeur; d4. een uitvoeringselement voor het onder' be-20 sturing van een signaal van de eerste in- struktiedekodeur uitvoeren van een informatiebewerking; waarbij genoemde elementen door informatieverbindingen voor data- en besturingssignalen zijn verbonden.
25 De afbeeldinrichting kan een drukker bevatten, of een kato-destraalbuis, of een afbeeldelement met plasmalichtbronnen voor één of meer regels karakters. De processor kan een arith—metische en logische eenheid bevatten en verdere inrichtingen voor het verwerken en verzenden (routen) van 30 gegevens. Programma’s worden aan het rekenmachinesysteem veelal toegevoerd als "bronprogramma’s’1 bijvoorbeeld via het toetsenbord. In het bronprogramma bevat een (bron)-instruktie een hem symboliserende groep van bijvoorbeeld 79η PA 1 6 . 4 PHN 9555 2 vier karakters, verder dikwijls een verdere indikatie, zoals de naam van één of meer registers, waar dan een gegeven voor de uit te voeren instruktie moet worden opgehaald, of waar het resultaat van de bewerking moet worden 5 opgeslagen, de waarde van een te gebruiken parameter, of een verder gegeven. Dit geeft de instruktie een gemakkelijke herkenbaarheid voor de programmeur. Een broninstruktie is adresseerbaar door het bijbehorende regelnummer van een regelsgewijze afbeelding ervan, en zo is wijzigen van het 10 programma mogelijk. Het nadeel van genoemde vormgeving is de grote redundantie omdat er bijvoorbeeld soms tot twintig alfanumerieke karakters nodig kunnen zijn om een enkele instruktie te representeren. Via een vertaalelement (assembler) wordt daarom het bronprogramma omgezet in zogenaamde 15 objektkode. Daarbij worden symbolische adressen (regelnummers) omgezet in de eigenlijke adressen van het programma-geheugen. Het vertaalelement kan voortdurend in het reken-machinesysteem aanwezig zijn. Het kan ook slechts worden aangesloten om eenmalig het bronprogramma te vertalen, zo-20 dat het geen noodzakelijk element van de uitvinding is.
De genoemde objektkode bevat een volgorde van machinein-strukties. Een machineinstruktie bevat een op(eratie)-code of machinecode, waardoor de machineinstruktie is geïdentificeerd. Elke verschillende machine-kode is als het 25 ware door een ander nummer gesymboliseerd. Zo'n nummer is bevat in een groep van bijvoorbeeld acht binaire cijfers. Verder kan de machineinstruktie naast genoemd nummer weer bevatten een datagegeven of een verwijzing naar een geheu-genadres waar speciale gegevens zijn opgeslagen. Deze spe-30 ciale gegevens zijn bijvoorbeeld een tekst, een subroutine, en in voorkomende gevallen data of adressen. Zo kan de objektkode soms aanzienlijk kompakter zijn dan het bronprogramma en vergt de opslag minder geheugenruimte. Hierna wordt verondersteld, dat het machineprogramma voor nader 35 gebruik reeds in het programmageheugen aanwezig is.
Het is in veel gevallen nodig dat het machineprogramma voor de programmeur toegankelijk zij, bijvoorbeeld om het op bepaalde manier te wijzigen, of er bepaalde informatie 7906416 PHN 9555 3 * * aan te ontlenen, evenwel zonder dat het programma ook wordt uitgevoerd. Nu bevat een machineprogramma, onder meer voor de uitvoering ervan, naast de instrukties zelf* (met de binnen de instrukties vervatte verdere informaties), ook bui-ten 5 de eigenlijke instrukties opgestelde informatie, zoals tekst (commentaar of titels), adressen, (bijvoorbeeld beginadres-sen van een hoeveelheid gegevens of sprongadressen) en datagegevens. Deze worden bij de uitvoering van het machi-neprogramma anders behandeld dan de machineïnstrukties, om-^ dat de laatste instruktie voor zo een hoeveelheid andere gegevens altijd een aftakinstruktie.is, waarbij dus naar een specifiek adres (of meerdere adressen) in het geheugen wordt verwezenj bij het aanroepen van zo’n adres is de rekenmachine dus al van te voren er op ingesteld om de uit ^ het programmageheugen arriverende informatie op de juiste wijze te behandelen. Bij het ontwerpen van een programma is het echter veelal voordelig om het programmageheugen direkt te adresseren, waarbij bijvoorbeeld de adressen achtereenvolgens worden afgelopen. Dan bestaat in voorkomende geval-20 len de kans dat een niet-instruktie wordt gedekodeerd hetgeen ortoelaatbaar is. Er wordt nog aan herinnerd dat in het bronprogramma dit probleem niet bestaat omdat het adres seren daar kan gebeuren door middel van het regelnummer.
25 SAMENVATTING VAN DE UITVINDING.
Het is een doelstelling van de uitvinding om in een reken-machinesysteem volgens de aanhef eenvoudige middelen te implementeren om de bovengenoemde niet tot een machinein-00 struktie behorende gegevens niet door de instruktiedekodeur als een uit te voeren machineinstruktie te doen dekoderen, zodat ze, met name in de ontwerpfase van een programma, op andere manier voor de programmeur aan te spreken zijn, en aan de andere kant dat voor het dekoderen van een uit O® te voeren instruktiekode het adresregister van het programmageheugen ook altijd foutloos op het adres, bijvoorbeeld het op-code-adres, van een machineinstruktie is ingesteld, waardoor de noodzaak tot permanente aanwezigheid van het 7906416 • > PHN 9555 4 bronprogramma in een geheugen van grote kapaciteit is vervallen. De uitvinding realiseerd de doelstelling doordat hij het kenmerk heeft dat verder aanwezig is: d5 een met het instruktieregister koppelbare twee-5 de instruktiedekodeur (290) om onder besturing « van een voorafbepaalde machinekode verzameling (110001XX) een aktiveringssignaal toe te voeren aan een aktiveringsingang van d6 een adresafstandsdetektor (298, 302) welke ge-W schikt is om een adresafstand te detekteren met een waardebereik waarvan de bovengrens tenminste de maximale inhoud van een instruktie omvat en welke adresafstandsdetektor voorzien is van eerste middelen (209) om een bij de desbetreffen ^ de machinekode uit genoemde verzameling behorend separaat signaal van een eerste adresafstand in het programmageheugen te ontvangen en dan een eerste stuursignaal (296) te genereren, tweede middelen (298) om een na genoemde machinekode 20 afgelegde relatieve adresafstand in het program mageheugen bij te houden en bij het bereiken van genoemde adresafstand een desaktiveringssignaal (304) te genereren en .genoemd eerste stuursignaal te beëindigen waarbij genoemd eerste stuur-20 signaal geschikt is om de processor voor na genoemd separaat signaal uit het programmageheugen arriverende informaties in een niet aktieve mode te sturen. Zo’n adresafstandsdetektor kan een kleine teller zijn en het aktiveringssignaal kan door 30 een eenvoudige dekodering van één of meer gereserveerde machinekode s worden afgeleid. Zo bevat nu het machineprogramma een volgorde van informaties, bijvoorbeeld informatie-bytes, waarbij geen verdere maatregelen dan het toevoegen van deze gereserveerde machinekodes nodig zijn om aan te 35 geven dat een stuk informatie een instruktiedeel, dan wel een niet-instruktie-deel betreft. Ook nu blijft hat machi-neprogramma dus zeer kompakt genoteerd. Door de toevoeging volgens de uitvinding mag het machineprogramma als het ware 7906416 ΡΗΝ 9555 5 Λ » pseudo-instrukties bevatten, waarvan de lengte tot zeer grote maximum waarden mag hebben, en die dus, mits ze via de bijbehorende pseudo-opcode worden bereikt, nooit als een ,,echte,, machineinstruktie worden gedekodeerd. De daar-5 toe benodigde extra geheugenkapaciteit is evenwel slechts beperkt.
De behandeling van een instruktie kent een aantal fasen: 1) de instruktie wordt uit het geheugen gelezen; 10 ('fetch") 2) de opcode wordt gedekodeerd; 3) daardoor is bekend, wat de gehele informatie van de instruktie inhoudt; 4) de instruktie wordt uitgevoerd (a) of afge- 15 beeld als karakters (b) of na terugvertaling in een broninstruktie afgebeeld als karakters (c) of gemodificeerd (d); 5) de instruktie wordt eventueel op een ander adres, in het geheugen teruggeschreven.
20 ("store").
Voor de behandeling in een "niet-instruktie"-mode blijven dus de bovengenoemde elementen 2), 3)» 4) altijd achterwege. Modificeren kan onder besturing van een specifiek element uit genoemde voorafbepaalde machinekodeverza-25 meling op specifieke manier gebeuren voor de binnen een "normale" instruktie vervatte gegevens zowel als voor de niet in zo'n normale instruktie vervatte. Al naar gelang de stuurmode, waarin het programma doorlopen wordt zal het systeem onder punt 4) voor de operaties a), b), c) of d) 30 kiezen.
Het is gunstig als een eerst-in-eerst-uit (FIFO) buffer aanwezig is (30θ) met een ingang die verbonden is met een uitgang van het programmageheugen, en een laadin-gang om per adres van het programmageheugen genoemd eer-35 ste stuursignaal te ontvangen. Zo kan een aanzienlijke hoeveelheid gegevens uit het programmageheugen snel worden ge-extratreerd, hetgeen bijvoorbeeld voor gezamenlijke reloka-tie zeer voordelig kan zijn. Een andere toepassing van zo'n 7906416 * J.
PHN 9555 6 buffer kan zijn dat er nog gelegenheid is om een eventuele voorlopige detektie van een element uit de voorafbepaalde machinekode verzameling ongeldig te maken, als het bij nader inzien bijvoorbeeld een datakarakter zou betreffen. Zo 5 iets kan voorkomen als de machine een genoemde pseudo- instruktie ergens "in het midden" binnenkomt. De eerst-in-eerst-uit buffer kan als een specifieke bouwsteen aanwezig zijn. Het is ook mogelijk een eerst-in-eerst-uit buffer in het programmageheugen te implementeren door middel· van 10 een beginadres (pointer) en een (lopend) eindadres die in twee registerposities zijn opgeslagen.
VERDERE DETAILS VAN DE UITVINDING.
^ Het is gunstig als genoemde ..tweede instruktie- dekodeur voorzien is van een eerste signaaluitgang om onder besturing van een tot genoemde voorafbepaalde machinekode verzameling behorende eerste specifieke machinekode (c4, 11000100) in samenwerking met genoemd eerste stuursignaal 20 een uit het programmageheugen uitgelezen woord te indiceren als een adresgegeven. Zo kunnen in een bijwerkmode (editor) van het programma alle gedetekteerde adressen worden bijgewerkt, bijvoorbeeld met een vaste adresafstand worden veranderd, als. een programma gedeelte over deze zelfde 2!5 adresafstand wordt verplaatst in een relokatiebewerking.
Het is gunstig als genoemde tweede instruktie-dekodeur voorzien is van een tweede signaaluitgang om onder besturing van een tot genoemde voorafbepaalde machinekode-verzameling behorende tweede specifieke machinekode (C5» 30 11000101) in samenwerking met genoemd eerste stuursignaal een uit het programmageheugen uitgelezen woord te identificeren als een datagegeven. Bij een afbeeld-bewerking (list) worden zo de data niet als instruktie gedekodeerd maar als datagegevens afgebeeld, terwijl ze anderzijds niet aan de 35 eerder besproken adresbewerking worden onderworpen.
Het is gunstig als genoemde tweede instruktie-dekodeur voorzien is van een derde signaaluitgang om onder besturing van een tot genoemde voorafbepaalde machinekode- 7906415 PHN 9555 7- * * verzameling behorende derde specifieke machinekode (C6, 11000110) in samenwerking met genoemd eerste stuursignaal een uit het programmageheugen uitgelezen woord te identificeren als een tekstgegeven. Bij genoemde afbeeldbe-werking 3 worden de tekst gegevens evenmin als instruktie gedekodeerd of als adres bewerkt. De afbeelding van tekst kan voordelig plaatsvinden in alfanumerieke karakters, de afbeelding van datagegevens vaak beter als hexadecimale karakters.
Het is gunstig als genoemde tweede instruktie-10 dekodeur voorzien is van een vierde signaaluitgang om onder besturing van een tot genoemde voorafbepaalde machine-kodeverzameling behorende vierde specifieke machinekode (C7 11000111) in samenwerking met genoemd eerste stuursignaal een uit het programmageheugen uitgelezen woord te identi- ^ ficeren als een titelgegeven. Zo kan telkens gemakkelijk // het voorkomen van een titel worden gedetekteerd, zodat bijvoorbeeld een inhoudsopgave van een programmageheugen kan worden afgebeeld of een titel als kommentaar kan worden gebruikt.
20
Het is gunstig als genoemd desaktiveringssig-naal (304) werkt als een eerste stopsignaal (294) voor genoemd adresregister, en dat genoemd toetsenbord voorzien is van vierde middelen (bijvoorbeeld spatiebalk) om middels een tweede stuursignaal (270) genoemd eerste stopsig- oc naai onwerkzaam te maken. Zo kan telkens een volgende hoeveelheid gegevens (gewone machineinstruktie of pseudomachine instruktie) worden opgeroepen, bijvoorbeeld om op een katodestraalbuis te worden afgebeeld, waarna de programmeur voldoende tijd kan nemen voor een soms gekompliceerde 30 beslissing (bijvoorbeeld een modifikatie of een relokatie).
Xn een eenvoudig geval kan bijvoorbeeld elke (pseudo)-instruktie op een nieuwe regel worden afgebeeldj in een ge-kompliceerdere mode kan (echter alleen voor de afbeelding) elke machineinstruktie in de bij-behorende broninstruktie 35 worden terug vertaald.
Het is gunstig als genoemd toetsenbord is voorzien van vijfde middelen om middels een derde stuursignaal genoemd eerste stopsignaal voortdurend onwerkzaam te maken 7906416 PHN 9555 8 , % en dat adresvergelijkmiddelen aanwezig zijn om bij het door het adresregisters bereiken van een eindadres genoemd derde stuursignaal te beëindigen en een tweede stopsignaal voor het adresregister te genereren. Zo kan een sektor van het 5 programma bewerkt worden, bijvoorbeeld afgebeeld op dezelfde wijze als hierboven beschreven. Een andere bewerkings-mode is dat voor een relokatie van het programmagedeelte alle adressen dienovereenkomstig worden bijgewerkt.
10 KORTE BESCHRIJVING VAN DE BIGÖREN.
De uitvinding wordt hierna nader uitgelegd aan de hand van enkele figuren. Met name wordt de uitvinding besproken aan de hand van een bekende microprocessor en 15 een daarvoor verkrijgbaar ontwikkelingssysteem. Tenslotte worden een aantal voordelige gebruiksmodes van een volgens de uitvinding uitgebreid rekenmachinesysteem uitgelegd.
Fig, 1 geeft een blokschema van een bekende microprocessor.
20 Fig. 2 geeft een volgens de uitvinding uitge breid rekenmachinesysteem.
Fig. 3 geeft verdere detaillering van genoemde uitbreiding.
Fig. 4a, 4b geven twee tijdsdiagrammen.
25 Fig. 5 geeft een voorbeeldprogramma te gebrui ken in een rekenmachinesysteem, en bewerkt volgens een toepassingsmethode van de uitvinding.
Fig. 6 geeft een tweede representatie van ditzelfde programma.
30 Fig. 7 geeft een stroomdiagram van een werk- mode om de aangeroepen adressen te identificeren»
Fig. 8 geeft een stroomdiagram van een werkmode om een programmagedeelte volgens de adresvolgorde af te beelden.
35 Fig. 9a, 9b> 9c geven een stroomdiagram van een werkmode om de in een programmagedeelte voorkomende adressen met een voorafbepaalde verschuivingsafstand bij te werken.
7906416 * « PHN 9555 9
Fig·. 10a, 10b geven een stroomdiagram van een werkmode om een sektor van het programma af te beelden.
GEDETAILLEERDE BESCHRIJVING VAN DE UITVINDING 5
De uitvinding kan worden toegepast in een rekenmachinesysteem van willekeurige grootte. Eenvoudshalve wordt de uitvinding beschreven in de omgeving van een mikroprocessor-systeem. Fig. 1 geeft een blockschema van een bekende mikro. processor, namelijk de Signetics 2650 bipolaire mikropro-cessor, zoals deze is getoond in het gelijknamige boek dat is uitgegeven door de fabrikant Signetics Corporation^ 811 East Arques Av. Sunnyvale, Cal, 1975» roet name in Fig. 1.
Het doel van deze figuur is het verschaffen van een begrips kader voor de hierna in de omgeving van deze mikroproces-sor te beschrijven realisatie van de uitvinding. In de schakeling zijn door cijfers de 8-bits—datapaden en de 13“ bits- en 15 bits adrespaden geïdentificeerd. De met "1" of "x" aangegeven verbindingen maken deel uit van de bestu- 20 ringsbus. De overige leidingen van deze besturingsbus zijn eenvoudshalve niet aangegeven. Verbinding 200 is een 8-bits bidirektionele databus met aansluitend register 202. De inkomende lijn 204 is aangesloten op het 8-bits instruktie- register 206, het 8 bits houd-register 208 en een 8-bits in 25 gang van de adres-opteller 210. Deze laatste werkt over een breedte van 13 bits. Op lijn 21k kan verschijnen een onderbreeksignaal van buiten (interrupt request), lijn 216 is bestemd, voor een onderbreek-toestemmingssignaal (in- terrupt-acknowledge). Voorts bezit de microprocessor een 30 hier niet aangegeven aansluiting voor het ontvangen van een pauzeer-signaal dat de microprocessor kan doen stoppen aan het eind van de lopende instruktie. Het kan de verwerking van gegevens voor onbepaalde tijd doen aanhouden en wordt gebruikt voor een direkte geheugen toegang np (direct memory access of DMA) te realiseren. In verband met de lijnen 214 en 216 bevat blok 212 de onderbreeklo-gika. Dit blok kan voorts een signaal sturen aan de deko-deer- en besturingslogika in blok 218. De lijnen 220 zijn 7906416 PHN 9555 10 de invoer/uitvoerbesturingslijnen. De signalen daarop werken samen met de logika 222 en met blok 218. Lijn 224 is een externe klokpulslijn, welke klokpuls in de tijdgenere-ren«Je logica 226 tot sekundaire kloksignalen voor blok 218 5 wordt verwerkt. De van blok 218 uitgaande besturingslijnen naar de verdere onderdelen van de schakeling zijn niet aangegeven. Een tweede, 13 bits brede ingang van de adres-opteller 210 is verbonden met de adresbus 228 waarvan de externe verbinding alleen geschikt is om signalen uit te 10 zenden. De uitgang van de adresopteller 210 is verbonden met het vijftien bits adres operand register 230; dit geeft dus het adres aan waar een operand of datagegevens zijn opgeslagen. De uitgang van register 230 is verbonden met het instruktieadresregister 232 en ook met het uitgangsbestu-15 ringselement 234: zo is signaleerbaar het adres alwaar een instruktie is opgeslagen. De uitgang van register 232 is verbonden met het uitgangsbesturingselement 234 en normaliter gaat het operandadres ook daarheen. Alleen in geval een aftakoperatie plaats vindt naar een subroutine gaat het 20 aktuele adres naar de subroutine terugkeeradresstapel 236. Door een "terugkeer"-signaal kan een adres uit element 236 worden heropgeroepen. De stapel heeft een kapaciteit van 8 woorden k 15 bit, De adresselektie hiervan gebeurt met de stapelaanwijzer 238. De inkomende lijn 204 is tenslotte 25 nog aangesloten op een data-aansluiting van de arithmeti-sche en logische eenheid (ALü) 240 die een veelheid van 8— bits brede bewerkingen kan uitvoeren. De besturing wordt verzorgd, naast de signalen van eenheid 218 door de inhoud van het programma statuswoord 242, hetwelk een kapaciteit 30 heeft van 2x8 bits. Een 8-bits breed resultaat van de bewerking in element 240 kan via lijn 244 toegevoerd worden aan een registerstapel welke bevat het zogenaamde nulregis*· ter (Ro) 246 en een selekteerbare helft van de verdere stapel 248 die 2x3 registers bevat. De keuze tussen de 35 · helften wordt bestuurd door de bit RS uit het programma-statuswoord, de verdere selektie vindt plaats door signalen uit de eenheid 218. De uitgang van het nulregister 246 is verbonden met de ALU-eenheid 240 en voorts met de multi- 7906416 > Λ ΡΗΝ 9555 11 plexer 250. De uitgang van de verdere stapel 248 is ook verbonden met de multiplexer 250. De uitgaande lijn van de multiplexer is verbonden met de ALU-eenheid 240 met de adresopteller 210 (om als relatief* adres of indexgegeven te 5 kunnen werken), en met het aan de databus 200 aangesloten register 202. Tenslotte bevat het blok 250A logika voor de konditiekode en eventuele aftakkingen. Dit blok is aangesloten op de ALU-eenheid 240 en kan onder omstandigheden een stuursignaal uitzenden naar de besturings- en dekodeer-M logika 218. Voor de met deze mikroprocessor te realiseren funkties en voor verdere technische details wordt in het algemeen verwezen naar het geciteerde boek van de fabrikant Uitwendig is deze mikroprocessor gerealiseerd als een DIP-module met 40 aansluitpennen.
Fig. 2 geeft een volgens de uitvinding uitgebreid rekenmachinesysteem. Het systeem bevat een processor 52,een geheugen 54, en een i/O-subsysteem 60. Dit laatste kan bevatten een toetsenbord, een afdrukinrichting, en een CRT-afbeeldinrichting. Het geheugen 5k bevat het programma 20 om de processor 52 te besturen, zodat deze verschillende bewerkingen kan uitvoeren. Het kan een aparte module zijn, maar in voorkomende gevallen ook met de processor 52 op hetzelfde halfgeleidersubstraat zijn aangebracht. Anderzijds kan de processor 52 een Signetics ”2650" mikroprocessor 25 zijn. Genoemde elementen worden verbonden door een bidirek-tionele databuslijn 50 en door de unidirektionele adresbus 58. Als de schakelaars 64 en 66 geopend zijn, en de schakelaars 62 en 68 gesloten is een konventioneel mikroproces— sor systeem aanwezig, dat niet verder beschreven wordt.
30 Voorts is aanwezig een extra-element 56 dat bij geopende stand van de schakelaars 62 en 68 met het geheugen 54 en met het l/0-subsysteem 60 kan kommuniceren. De werking hier van in detail wordt hierna uitgelegd. Met name is het hiermee mogelijk om het geheugen 5k te adresseren, de uitgelee 25 zen instrukties en verdere gegevens te ontvangen, en daarbij de instrukties niet, zoals de processor 52 zou doen, uit te voeren, waarbij dus door de instrukties zelf bestuurde aftakbewerkingen zouden worden uitgevoerd, maar 790641g PHN 9555 12 daarentegen de instrukties te behandelen in de zelfde volgorde als ze in het geheugen 54 zijn opgeslagen en ze daarbij in geen geval uit te voeren. Met name -worden geen aftak- of sprong-bewerkingen geëffektueerd. De aard van de 5 dan toch nog geëffektueerde behandeling wordt nader besproken. Na de behandeling kan de instruktie teruggestuurd worden naar geheugen 54 of verder worden gestuurd naar l/θ-subsysteem 60. De bediening van de schakelaars 62 tot en met 68 geschiedt van uit het toetsenbord dat deel uitmaakt van het i/O-subsysteem 60s met name is steeds slechts één paar schakelaars van de beide paren 64/66 en 62/68 geopend.
Fig. 3 geeft de uitbreiding-schakeling 56 nit fig. 2. Deze- sehakeling vertoont een met de mikroprocessor uit fig. 1 gedeeltelijk overeenkomstige organisatie en daarom wordt reeds verwezen naar de eerder geciteerde do-kumentatie van deze mikroprocessor. Met name zijn in de figuur aangegeven de datalijn 50, de schakelaar 68, en de registers 205 (komt overeen met 206) en 207 (komt overeen met 208). Register 205 ontvangt steeds weer de eerste byte 20 (8-bits) van een instruktie die hier de operatiekode (opcode) bevat. Het houdregister 207 wordt gebruikt voor het voorbijgaand opslaan van verdere instruktie-informatie en partiële absolute adressenin het geval van meerbytes (meer dan 8 bits dus)-instrukties, In tegenstelling tot de situa-25 tie in fig. 1 zijn hier de registers 205» 207 en ook 256 (zie hierna) alle voor bidirektioneel verkeer aan de data buslijn 50 aangesloten. Yoorts is aangegeven de adreslijn 228 waardoor de adresregisters 252 en 254 (één voor lezen en één voor schrijven) voor het geheugen 54 kunnen worden 30 geladen, De eigenlijke adressering gebeurt dan weer via schakelaar 62 en adresbuslijn 58. Het geheugen 54 heeft een woordlengte van 8..bits en een adreskapaciteit van hoogstens 15 bits* Het kan het programma van de mikroprocessor 52 in objektkode bevatten, waarbij dus elle woordplaats een kapa-35 citeit heeft van twee hexadecimale karakters. Het vormen van het adres op lijn 238 kan op geëigende manier gebeuren, bijvoorbeeld door manuele toevoer middels het toetsenbord van het l/O-subsysteem of door uitlezing van een re- 7906416 PHN 9555 13 gister of geheugen-plaats, hetgeen op dezelfde wijze georganiseerd kan zijn als de elementen 230 tot en met 236 in fig. 1· De op zichzelf konventionele verbindingen vóór het laden van de registers 252, 253 zijn eenvoudshalve niet 5 aangegeven. Voorts kan adresregister 252 door een incre- menteerpuls op lijn 264, resp. adresregister 253 door een incrementeerpuls op lijn 265 worden opgehoogd. Overeenkomstige verbindingen zijn aanwezig om deze registers door een decrementeerpuls af te lagen. Een leesschrijfbesturingssig— ^ naai, resp. een toestemmings—(enable—)signaal voor geheugen 54 verschijnen nog op eventueel meervoudigelijn 272. Verder bevat de schakeling van fig. 3 nog een derde register 256 dat ook met de datalijn 204 is verbonden. Dit register kan virtueel zijn, doordat het in feite is besloten 15 in het biokelement 258, waarin de verdere verwerking plaats vindt, zoals hierna zal worden besproken. Deze verdere verwerking kan gebeuren met schakelelementen die goeddeels van overeenkomstige aard zijn als de dataverwerkende elementen in fig. 1 bijvoorbeeld een adresopteller (210), dekodeerd-20 en besturingslogika (218) en de in fig. 1 kortheidshalve niet aangegeven bus voor besturingssignalen. Een deel van de besturingslogika is voorts reeds in de figuur aangegeven. In feite kan het element 56 een slechts enigszins gemodificeerde mikroprocessor zijn van hetzelfde type als 25 element 52, dus bijvoorbeeld een Signetics ”2650", waarbij enkele uitbreidingen zijn toegevoegd, zoals te beschrijven, en waarbij andere funkties niet zijn geïmplementeerd omdat het eigenlijke programma niet mag worden uitgevoerd en wel met name geen aftak-bewerkingen behoeven te worden 30 uitgevoerd (deze kunnen uiteraard wel in het element 52 wor den uitgevoerd). In het element 56 wordt met name het pro-grammageheugen 54 in een doorlopende adressekwentie doorlopen, waarbij begin- en eindadressen steeds van buiten worden toegevoerd, en wel met name vanuit het toetsenbord in 35 het l/0-subsysteem 60. In een andere uitvoering kan één enkel element de onderdelen 52 en 56 tesamen vervangen, waarbij dan in dat element al naar gelang de besturings-mode (zie later) bepaalde onderdelen zijn uitgeschakeld.
79 0 6 4 1 ff PHN 9555 14
Eerst worden nu de onderdelen besproken die zich ook reeds in het arrangement van fig. 1 bevinden. Eerst wordt het lezen uit geheugen 54 beschreven:
Element 266 is de start/stop-besturingslogika. Op ingang 5 268 verschijnt elke geheugencyclus van het programma ge heugen 254 een klokpuls, welke wordt ontleend aan de primaire klokpuls op lijn 224 in fig. 1. Voorts verschijnt, als aan het afwerken van de eerstvolgende machine instruk-tie moet worden begonnen op klem 270 een "volgende"signaal. Daarna is element 266 aktief om klokpulsen af te geven op de lijnen 264 en 274. Zoals vermeld werkt de klokpuls op lijn 264 als een incrementeersignaal. Element 276 is een twee-bits binaire teller die door het signaal op klem 270 in de nulstand wordt teruggesteld. Voor deze teller werkt het signaal op lijn 274 als incrementeersignaal. Dit, signaal wordt ook, voor zover in de gebruikte geheugenopbouw noodzakelijk, via een niet-aangegeven verbinding toegevoerd als leesbesturingssignaal aan lijn 272. Element 278 is een binair-naar-1:3 dekodeur. Als teller 276 de stand "1" 20 bereikt verschijnt een "1" puls op uitgang 280. Deze wordt toegevoerd als laadpuls aan register 205· Op overeenkomstige manier genereren de standen "2" en "3" van teller 276 laad besturingspulsen voor de register^ 207 en 256 middels de lijnen 282 en 284.
2® Element 2Ö0 is deel van het dood-geheugen voor de besturing dat voor elke instruktie de lengte ervan aangeeft voor elr ke instruktie (byte in register 206) geeft het 'aan: 1, 2 of 3> op da 2-bits lijn 262, en wel zolang als het register 30 205 het betreffende instruktiedeel bevat. Element 286 is een tweebits komparator voor de stand van teller 276 en het signaal op lijn 262. Het "gelijk"-signaal verschijnt op lijn 288 en als het een uit de instruktie verzameling van de Signetics 2650 mikroprocessor bekende instruktie be-3® treft worden daardoor de klokpulsreeksen op de lijnen 264 en 274 gestopt. Het signaal op lijn 288 kan nog worden gebruikt om de verdere bewerkingen in blok 258 te starten (niet aangegeven): voor zover van toepassing is de betref- 7906416 PHN 9555 15 fende instruktie geheel beschikbaar in de registers 205, 207 en 256.
In deze uitvoering echter bewerkstelligt het signaal op lijn 288, in samenwerking met het ontbreken 5 (zie later) van een signaal op lijn 292 een "gereed” signaal op lijn 294, dat in blok 258 dan wel in andere delen van het rekenmachinesysteem operationeel kan worden.
Voor het realiseren van de uitbreiding volgens de uitvinding zijn er enkele verdere onderdelen aanwezig.
10 Op de uitgang van register 206 is een verder dekodeurgedeel te 290 aanwezig. Dit element spreekt aan op de tot dusverre in de instruktieverzameling van de Signetics 2650 mikro-processor niet gedefinieerde machinekodesignalen C4 (IIOOOIOO) tot en met CT (11000111) die men tesamen aan kan 15 geven als (110001xx), waarin x een willekeurige (ion't care) informatie aangeeft. De uitgangslijn 291 is viervoudig en elk van de vier leidingen is gereserveerd om de detektie të signaleren van een van de vier genoemde machinekodesignalen Element 293 is een selektieelement om onder besturing van een se-20 lektiesignaal op de stuuringang 295 één of meer van genoemde machinekodedetekties door te laten en een signaal op lijn 292 te presenteren. Als element 293 ingesteld is om alle vier genoemde machinekodes te detekteren komt het signaal op leiding 292 overeen met de OF— funktie van het 25 meervoudige signaal op lijn 291. Voor de besturing van element 266, dat de uitleescyclus bestuurt is deze OF-funktie nodig. Op overeenkomstige manier kan op een andere uitgang 297 van element 293 een andere selektie van genoemde vier machinekodes gedetekteerd worden. Genoemde vier machine— 30 kodes werken steeds als twee byte-instrukties en daardoor wordt dus naast register 206 ook register 208 geladen, maar niet register 256. Verder wordt nu onder besturing van het signaal op lijn 288 (maar nu is er wèl een signaal op lijn 292) geen signaal "klaar" op lijn 294 gevormd, maar 35 wordt een nieuwe reeks klokpulsen gevormd op lijn 296, bestemd voor de 8-bits teller 298, en de 256-bytes eerst-ia-eerst-uit buffer (FIFO) 300. Dit kan gemakkelijk gebeuren door omschakelen van de eerder op lijn 274 verschijnen- 7906416 PHN 9555 16 de klokpulsreeks. Deze pulsen werken voor teller 298 als incrementeersignalen en worden zonodig langs een niet aangegeven verbinding als lees/schrijfbesturingssignalen aan lijn 272 toegevoerd· Klem 270 is ook verbonden met de te-5 rugstelingang van de 8-bitsteller 298 en met die van de FIFO-buffer 300. De telpulsen op lijn 296 worden ook toegezonden aan de FIFO-buffer 300. De stand van de teller 298 wordt toegevoerd aan de 8-bits-comparator 302. Deze comparator ontvangt verder de inhoud van het register 207· Zo-^ lang er ongelijkheid bestaat wordt dus nog steeds telkens een volgend woord in het programmageheugen 254 uitgelezen en via de 8-bits-lijn 204 toegevoerd aan de eerst-in-eerst-uit-buffer 300 om daarin te worden opgeslagen, een en ander onder aktivering door de klokpulsen op lijn 296. Als er 15 gelijkheid gedetekteerd wordt in element 302 wordt er een signaal, bijvoorbeeld een "1"-puls gegeven op lijn 304·
De koexistentie tussen deze puls en het signaal op lijn 292 dat de eerder genoemde machinekodesignalen G4 t/m C7 indiceert, wordt in het besturingselement 266 omgezet in een 20 "gereed" signaal op lijn 294. Voor zover nog nieb gebruikt is de uit het programmageheugen uitgelezen informatie in de volgorde van uitlezen aanwezig in de FIFO-buffer 300.
De lijnen 306 zijn geschikt voor resp· het toevoeren van een uitleespuls aan de FIFO—buffer, en een terugstelpuls 25 waardoor de informaties daarin worden uitgewist· De uitgelezen informatie uit buffer 300 komt op lijn 308 voorver— \I der gebruik in het blokelement 308 beschikbaar· De FIF£3 buffer 300 kan opgebouwd zijn volgens bekende technieken; losse bouwstenen met deze funktie zijn beschikbaar· Het on programmageheugen kan een PRQM-geheugen zijn, waardoor de later te bespreken list-mode effektueerbaar is. Het kan ook een RAM geheugen (willekeurig toegankelijk)zijn, waarbij dan zowel lezen als schrijven mogelijk is. De adressen voor het schrijven bevinden zich dan in het adresregister 35 253 dat op dezelfde manier als het register 252 wordt geladen. De in te schrijven informaties worden op overeenkomstige wijze geleverd door de registers 205» 207 en 256 en door de FIFO-buffer 300· De aansluitingen van deze elemen— 7906416 PHN 9555 17 ten op de datalijn 50 zijn daartoe tweezijdig aktief. Op klem 269 kan verschijnen een lees-schrijfbesturingssignaal dat de incrementering van de adresregisters 253/254 selek-teert, en voorts de richting van het informatietransport ® op de datalijn 50. Een schrijfoperatie in het programmage-heugen 54 wordt goeddeels op dezelfde meinier als een lees-operatie geëffektueerd;eerst verschijnt weer een terugstel-signaal op klem 270, daarna worden eerst de registers 205» 207 uitgelezen onder besturing van het selektiesignaal van element 278 en dan wordt achtereenvolgens de inhoud van de FIFO-buffer 300 afgevoerd. Weer veroorzaakt de gede-tekteerde gelijkheid van element 302 een stopsignaal, als slechts een -enkele hoeveelheid gegevens wordt verplaatst. Deze gelijkheid kan echter ook een nieuw leessignaal voor ^ geheugen 5^ aktiveren op het door register 252 aangegeven adres.
Het belang van boven beschreven uitbreiding is dus dat in een programma, met daarin eventueel ingevooegd adressen, tekst, datagegevens en titels, de adresteller(s) nn het programma volgens de normale volgorde der adressen kan aftasten, terwijl er anderzijds volstrekte zekerheid is dat enerzijds: a. de informatie die aan register 205 wordt toegevoerd is altijd een instruktiekode (bevattend de op-code), hetzij 25 van een tot dusverre gebruikelijke, eventueel uit te voeren instruktie, hetzij van een speudo-instruktie, die verdere gegevens bevat; b. en anderzijds, dat alle instruktiekodes, de bekende zowel als de nieuw ingevoerde pseudo-instrukties, steeds hun 30 eerste byte zien toegevoerd aan register 205» zodat ze op geëigende manier kunnen worden gedekodeerd.
Ter verduidelijking van de beschreven leesope-ratie in het programmageheugen geeft fig. 4a, 4b eerst een tijdsdiagram. Pig. 4a geeft het diagram voor een ge- oc wone machine-instruktie van drie bytes. Aan het begin wyst het adresregister naar de opkode byte van de betreffende instruktie. Na de startpuls op lijn 270 ontvangen de lijnen 264 en 274 elk drie klokpulsen (onderling in de tijd ver- 7906416 PHN 9555 18 schoven). Daarna verschijnen snel na elkaar het "gelijk"-signaal op lijn 288 en het "klaar"-signaal op lijn 294. Daarna wijst het adres register naar de opcodebyte van de volgende instruktie. De signalen op de lijnen 288 en 294 5 kunnen, op zijn laatst bij de startpuls op lijn 270tbeëindigd worden voor het starten van een nieuwe cyclus.
Fig. 4b geeft het diagram voor een "direkt-door-laat"-machine instruktie, die dus na twee bytes het "gelijk' signaal op lijn 288 geeft. Kort te voren is dan echter het 10 signaal op lijn 292 hoog geworden, zodat daarna de klokpul-sen op lijn 296 verschijnen. Verondersteld is dat na vier doorgelaten bytes het gelijksignaal op lijn 304 verschijnt. Tesamen met het hoge signaal op lijn 2$2 vormt dit dan snel het "klaar"-signaal op lijn 294. Ook dan wijst het adres-15 register naar de opcodebyte van de volgende instruktie.
Fig. 5 geeft in dit geval een voorbeeldprogramma, te gebruiken in een inrichting volgens de uitvinding, en wel zoals dit in een bepaalde gebruiksmode ("list") afgedrukt, resp. afgebeeld kan worden. De eerste kolom, 20 beginnend met 2500» geeft de adressen in hexadecimale cijfers in het programmageheugen. De tweede kolom, beginnend met C7^,geeft de opkode van de instrukties telkens als twee hexadecimale karakters, dus als een achtbits byte.
De derde kolom, beginnend met 0F, en de vierde kolom, be-25 ginnend met 40, geven de telkens tot een machine instruktie behorende verdere gegevens, zoals bijvoorbeeld adressen of data. De vijfde kolom, beginnend met "PROGRAM EXAMPLE" geeft of wel de instruktie als een hem symboliserende groep karakters, ofwel andere gegevens, zoals die bij het interpre-30 teren van de instruktie worden gevormd. Regel 1 bevat de "nieuwe" opkode C7» regel 19 bevat de nieuwe opkode C4, rebel 20 de nieuwe opkode C5 en regel 21 de nieuwe opkode C6. Daarbij is resp., na het adresafstandssignaal (0F, 06, 04 en 0a) de verdere informatie van titel, adres, data en is te vinden 35 tekst afgedrukt. De betekenis van de bekende instrukties^ in het boek "Signetics Microprocessor 2650" dat reeds is gerefereerd. De verdere struktuur van Fig. 4.wordt later besproken. Fig. 6 geeft de inhoud van het programmageheugen 7906416 PHN 9555 19 zoals die nodig is om de informatie van Fig. 5 te kunnen hervormen. Er wordt nog op gewezen dat in Fig. 6 een zeer groot deel van de ruimte wordt ingenomen, door de niet tot een uit te voeren machineinstruktie behorende informatie.
5 De aanduiding C5-4C in fig. 6 is nodig voor het afbeelden van de informatie van die figuur.
In de schakeling van fig. 3 spreekt de instruk-tiedekodeur 290 „aan op de machinekodes C4 t/m C7» het signaal op lijn 292 geeft dus aan dat de informatie 110001XX Μ ontvangen is, waarbij de X-signalen een willekeurige waarde bezitten. Hierbij geven deze machinekodes de volgende programma-inhoud aan: C4 (IIOOOIOO): na de adresafstandsbyte volgt een door de inhoud van de adresafstandsbyte bepaalde hoeveelheid bytes I5 (geheugenplaatsen) met adresinformaties, waarbij in dit uitvoeringsvoorbeeld twee bytes tesamen een adres vormen, C5 (IIOOOIOI): na de adresafstandsbyte volgt een door de inhoud van de adresafstandsbyte bepaald aantal bytes data-gegevens, waarbij elk data gegeven uit een byte bestaat, 20 C6 (IIOOOIIO): na de'adresafstandsbyte volgt een door de in houd van de adresafstandsbyte bepaalde hoeveelheid lengtes karakters, bijvoorbeeld in ASCII kodes gekodeerde karakters, uitgedrukte tekst. Met name is een ASCII-tekst-byte (dat zijn hoofdletters, cijfers een beperkte verzameling 25 tekens voor afbeelding daardoor herkenbaar dat de waarde ervan ligt tussen 20 (OOIOOOOO) en 5F (01011111). Tussen 0 (OOOOOOOO) en 20 liggen daarentegen besturingskarakters en tussen 5^ en. FF (11111111) liggen weer andere tekens die niet voor het afbeelden noodzakelijk zijn, en wel met 30 name de kleine letters.
C7 (IIOOOIII): na de adresafstandsbyte volgt een door de inhoud van de adresafstandsbyte bepaalde hoeveelheid ka-rakterbytes die tesamen een titel vormen. Dit kunnen dezelf de ASCII karakters zijn als hiervoor;alleen de funktie van 25 een titel is verschillend (zie later) .
GEBRUIKSMODES VAN DE UITVINDING
7906416 PHN 9555 20
Hierna wordt kort beschreven enige problemen bij het ontwerpen van een programma, een bekend ontwerp-systeem en ten slotte enige gebruiksmodes van de uitvinding. Het programma wordt als brongprogramma geconcipieerd, met be-5 hulp van een toetsenbord, dat bevat alfanumerieke toetsen en funktietoetsen, zoals "terugwagen, nieuwe regel" en "spatie". Het programma bevat broninstrukties die bestaan uit een symboliserende groep karakters (instruktie '“Mnemonics) en verdere gegevens, zoals een aanroep adres of de 10 waarde van een parameter. Verder bevat het bronprogramma verklarende tekst, titels (bijvoorbeeld van subroutines) adressen en datagegevens (niet alle kategorieën zijn altijd aanwezig). Het bronprogramma is bij afbeelding zeer overzichtelijk en korrektie dus in sommige opzichten ge-15 makkelijk. Het bronprogramma wordt vertaald met een ver-taalelement (assembler) dat opgebouwd is rondom een dood-geheugen. Het machineprogramma dat zo ontstaat kan worden getest. Het kan bestemd zijn voor..de besturing van een technische inrichting, zoals bijvoorbeeld een digitaal 20 meetinstrument, een produktiemachine of een machine voor het verwerken van financiële gegevens, bijvoorbeeld zulke welke een mikroprocessor bevatten. Een ontwikkelingssysteem voer zulke programma's is bijvoorbeeld het Signetics "TWIN" systeem dat is beschreven in het boek "Operatos Guide", 25 gepubliceerd door Signetics Corp., 811 East Arques Av.,
Sunnyvale, Cal, 1976, document no. TW 09003000, en de bijbehorende werken "TWIN System Refference Manual (No. TW 09004000), dat de fysieke strukturen van het rekenmachine-systeem beschrijft en "2650 Twin assmbly language manual" 30 dat de opzet van het vertaalsysteem en het gebruik daarvan beschrijft (TW 09005000). Het bijwerken van het programma, en meer specifiek het oplossen van het probleem van de "onherkenbare" niet-instruktiegedeelten in het machineprogramma wordt hier opgelost middels een dubbele Signetics 35 2650 mikroprocessor. Van deze twee voert de eerste het eigenlijke machine programma uit, terwijl de tweede de eerste mikroprocessor bestuurt. Dit gebeurt in een zogenaamde "Spoorvolg" of "trace" metode, waarbij elke machine in- 7906416 PHN 9555 21 struktie dus verwijst naar een volgende machine instruktie (zonder extra maatregelen in een machineinstruktie is dat de-gene die in het direkt opvolgende geheugenadres is opgeslagen. Op die manier wordt nooit een ,,niet-instruktie,,-deel ® van het machineprogramma bereikt omdat het begin daarvan altijd direkt voorafgegaan wordt door een "aftakt instruktie. Bij deze spoorvolgmetode wordt elke machine instruktie terugvertaald in de bijbehorende broninstruktie door middel van een terugvertaalelement (disassembler). Als een aftak-^ instruktie wordt ontmoet specificeert deze het aftakadres en wordt de aftakoperatie ook uitgevoerd. Men krijgt bij het toepassen van deze spoorvolgmetode zö wel een beeld van de werking van een programma, maar in het geheel niet van de wijze waarop dit programma (instrukties en verdere ge-15 \ gevens) in het geheugen is opgeslagen. Deze laatste organisatie is in het bekende systeem alleen na te gaan aan de hand van het bronprogramma, waarvoor als eerder vermeld een veel grotere hoeveelheid geheugenruimte nodig is. Volgens de uitvinding behoeft men geenszins de beschikking te 20 hebben over dit bronprogramma. Voorts worden bij invoering van de uitbreidingen volgens de uitvinding een aantal werk- modes mogelijk die op nog weer andere wijze het programma hanteerbaar maken dan met gebruik van het bronprogramma mogelijk zo.u zijn.
25
Fig. Jsl, 7b geven een stroomdiagram van een werk mode om aangeroepen adressen te identificeren;zo wordt de vraag beantwoord: roept deze machine instruktie een subroutine aan, en zo ja, welke? De aanroepende instruktie bevindt zich in de schakeling van fig. 3 dan in de regis-^ ters 205» 207 en eventueel 256. In de schakeling van fig.
1 kunnen dit de overeenkomstige registers 206, 208 en 202 zijn. Er is verondersteld dat de machine gestopt is. Er zijn voor een aanroepadres twee mogelijkheden. Het kan een absoluut adres zijn dat de laatste twee bytes van een drie
OC
byte-instruktie vult. Het kan ook een relatief adres zijn dat de laatste byte van de twee-byte-instruktie vult. Als het een relatief adres is wordt eerst op bekende manier 7906416 PHN 9555 22 door de machine het absoluut aanroepadres gerekonstrueerd, * met adresopteller 210, respektievelijk een daarmee overeenkomstig, niet aangegeven element in de schakeling van fig. 3. Fig. Ja, 7b geven een stroomdiagram van de benodigde 5 subroutine die-als dan wordt aangeroepen, en waarvan de elementen gangbaar zijn. In zijn totaliteit en samen met het feit, dat elke titel in het machine programma wordt voorafgegaan door de machinekode C7 plus een adresafstands-byte biedt deze subroutine een handig hulpmiddel voor het terugvinden van de titel die is gerelateerd aan het programma adres dat wordt aangeroepen. Er wordt nu verondersteld. dat titels een beperkte lengte hebben, bijvoorbeeld ten hoogste 20 karakters. Verder wordt er verondersteld dat als er een subroutine met titel aangeroepen wordt (dus ^ niet bijvoorbeeld een adres van de tot dè.n toe in uitvoering zijnde (sub)routine of een datakarakter), dat dan altijd aangeroepen wordt naar een van de eerste (bijvoorbeeld eerste tien) adressen na het einde van de subroutinetitel. De beperking tot tien is slechts van praktische aard. Eerst ^ wordt nu in Fig. Ja blok 102 (na de "start" in blok 100) gedetekteerd dat het een "instruktie met aanroepadres" betreft. Als dit niet zo zou zijn wordt geïncrementeerd naar de volgende instruktie. In blok 104 wordt dan zonodig het absolute aanroepadres berekend en daarna verminderd met 4 een vaste voorinstellingswaardei deze is in het bovengenoem de geval bijvoorbeeld tenminste (20+10=30) adressen, en het resulterende adres wordt in het adresregister gezet, dstfc-* op analoge manier wordt geïncrementeerd als het adres register 252 in fig. 1. Fysiek kan dit hetzelfde register 30 zijn, waarbij het oude adres wordt gered. Vervolgens wordt in fig. Jh de FIFO-buffer 300 op nul teruggesteld, zodat geen "oude" informatie meer relevant is (blok 109). Vervolgens wordt in blok 110 telkens met een eenheid geïncrementeerd, terwijl in element 293 in fig. 3 de selektie uit-35 sluitend plaats vindt op de opkode "C7"· Dit gebeurt, omdat het niet apriori bekend kan zijn waar de betreffende ",pseudo"-opkode C7, die het begin van de titel aangeeft, 7906416 PHN 9555 23 is opgeslagen (blok 112). In blok 114 wordt gedetekteerd of het aktuele adres groter is dan het aanroepadres (waarvan oorspronkelijk was uit-gegaan), Als dit zo is wordt de subroutine via blok 128 verlaten. Als de kode C7 ontmoet 3 wordt, wordt in blok 115 de afstandsinformatie ingelezen in register 207· In blok 118 wordt (het aktuele adres, plus de adresafstandsbyte) vergeleken met het aanroepadres.
Als het laatste kleiner is, is de "C7” kode waarschijnlijk een datakode uit een vóórgaand programmagedeelte: dan gaat de machine terug naar blok 110. Anders wordt in blok 119 de FIFO-buffer op nul teruggesteld. Het kan in principe voorkomen dat twee titels worden ontmoet en dan is alleen de laatste van de twee (of eventueel drie) relevant. Vervolgens wordt in blok 122 gekontroleerd, of het een ASCII 15 karakter betreft. Als dit niet zo is, is er een fout opgetreden, bijvoorbeeld doordat de "C7" kode een datakarak-ter betrof: dan wordt ook de buffer weer teruggesteld zo— . dat er bij het verlaten van de subroutine nooit irrelevante informatie in de buffer aanwezig is. Als het wèl 23 een ASCII karakter voorafbeelding betrof .wordt blok 124 gekontroleerd of het eindadres al bereikt is. Als het "gelijk11 signaal op lijn 304 nog niet is verschenen wordt in blok 126 het betreffende karakter in de FIFO-buffer opgeslagen. Als blok 25 128 "klaar" bereikt is wordt de inhoud van de FIFO-buffer toegevoerd aan een alfanumerieke karakter generator en vandaar naar de katedestraalbuisafbeeldinrichting of de drukker. In het bovenstaande kan de doorloop sneller gemaakt worden als men zeker weet dat hoogstens één titel aanwe-30 zig is: dan is de "ja" uitgang van blok 124 ook op blok 128 aangesloten en blok 119 kan vervallen.
Fig. 8 geeft een stroomdiagram van een werkmode om een programma gedeelte volgens de adresvolgorde af te beelden, en met name een inhoudsopgave te maken van de sub» 35 routines (titel en begin adres) die in het programma opgenomen zijn. Na het begin in blok 140 wordt in blok 142 het eerste adres van een programma aangeroepen en het aktueel (current) adres daaraan gelijk gemaakt. Verder wordt het 7906416 PHN 9555 24 laatste adres opgegeven, dat is het adres van de opcode-byte direkt na de laatste instruktie. In blok 144 wordt gekontroleerd of het laatste adres nog steeds groter is dan het aktueel adres. Als dit niet zo is, wordt blok 146 (EIND) 5 bereikt. Vervolgens wordt in blok 148 de adresteller gestart (klem 270 in fig. 3) en een hele instruktie van 1, 2 of 3 bytes uitgelezen. In blok 150 wordt gekontroleerd of het één van de vier opcodes C4 tot en met C7 betreft. Als dit niet zo is wordt blok 144 weer bereikt. Als het wel Μ een "pseudo"-opcode betreft wordt in blok 152 de FIFO-buffer terug op nul gesteld en de adres afstandsbyte uit register 207 geaktiveerd. Vervolgens worden in blok 153 evenveel informatiebytes uit het programmageheugen uitgelezen als de adresafstandsbyte aangeeft, en worden ze in de FIFO-^ buffer opgeslagen. Vervolgens wordt in blok 15^ gedetek-teerd of het opcode C7 betreft. In dat geval wordt in blok 155 het aktuele adres (het eerste adres né. de titel, waarvan de informatie in de FIFO-buffer is opgeslagen) afge-beeld en getabuleerd. Daarna wordt in blok 156 de inhoud van on de FIFO-buffer afgebeeld en gaat het afbeeldapparaat naar een nieuwe regel. Als blok 146 is bereikt zijn alle subrou-tinetitels met hun startadres afgebeeld (bijvoorbeeld op een drukker). Als het een beeldscherm met een kapaciteit van een beperkt aantal regels betreft kan de uitgang van 2® blok 156 het bij de mikroprocessor 2650 besproken pauzesig-naal impliceren. Dit kan, bijvoorbeeld door het bekrachtigen van de spatiebalk, op het toetsenbord, manueel onwerkzaam worden gemaakt. Een verdere gebruiksmode om ten hoogste een voorafbepaald aantal regels van het beeldscherm in één on slag af te beelden, wordt hier kortheidshalve niet besproken.
Fig, 9a, 9h» 9° geven een stroomdiagran van een procedure om de in een programmagedeelte voorkomende adressen over een voorafbèpaalde verschuivingsafstand bij te 35 werken, en tesamen daarmee het betreffende programmagedeelte over diezlefde verschuivingsafstand te verplaatsen. Er wordt verondersteld dat er tegen deze relokatie geen bezwaar bestaat, zowel op technologische gronden (de bestem- 7906416 PHN 9555 25 ming is een lees/schrijfgeheugen) als op organisatorische gronden (het geheugendeel waar de relokatie plaats vindt is vrij). Enkele modifikaties voor specifieke gevallen worden hierna besproken.
5 Na het begin in blok 160 wordt in blok 162 het oorsprongsadres (daar begint het programmadeel) in het leesadresregister (252 in fig. 3) opgeslagen en het eind-adres van het betreffende programmadeel ter latere vergelijking opgehaald. In blok 164 wordt dan het bestemmings-10 adres (daar begint het geheugendeel waar het programmadeel zal worden opgeslagen) op-geslagen in het Schrijfadresregis—· ter (253 in. fig. 3)· In blok 166 wordt gekontroleerd of de inhoud van het leesadresregister (dus het "current” of ak-tuele adres) gelijk is aan het eindadres. In blok 167 wordt 15 de eerstvolgende instruktie van 1, 2 of 3 bytes uitgelezen. In blok 168 wordt gedetekteerd of het een instruktie met een relatief aanroepadres betreft (dit is een 2-bytes instruktie), Als dit zo is, wordt fig. 92 verlaten via blok 163. In blok 170 wordt gedetekteerd of de opcodebyte de 20 waarde Ck heeft. Als dit zo is wordt fig. 9a. verlaten via blok 169. In blok 171 wordt gedetekteerd of het een instruktie met een absoluut aanroepadres betreft. In blok 172 wordt gedetekteerd of dat aanroepadres ligt tussen het oorsprongsadres en het eindadres. Alleen als dat zo is wondt 25 het aanroepadres in blok 173 veranderd met het verschil tussen oorsprongsadres en bestemmingsadres. Dit verschil kan positief of negatief zijn. Daarna wordt in blok 17^ de instruktie zonder verdere wijziging naar het bestemmings adres getransporteerd en gaat het systeem terug naar blok 30 166. Blok 17^· wordt ook bereikt vanuit blok 171 (het betreft een instruktie zonder adres) of vanuit blok 172 (het adres wijst naar een geheugenplaats buiten het te transporteren programmagedeelte) . Het-transporteren van een "pseudo"-instruktie met opcode C5* C6 of C7 kan een aantal cycli ver-35 gen, op dezelfde wijze als in fig. 9b voor een "C4"-instruk tie is besproken, maar deze pseudo-instrukties wordén onveranderd naar hun bestemmingsadressen getransporteerd. Tenslotte wordt de subroutine van fig. 9a.-c verlaten via 7 9 0 t> 4 18 * * PHN 9555 26 blok 165. Kortheidshalve is dit (blok 188, 192 in fig. 9b) hier weggelaten.
Fig. 9b wordt bereikt via blok 169. In blok 18^-wordt gedetekteerd of het betreffende adres ligt tussen het 5 oorsprorigsadres en het eindadres (vergelijk 172). In blok 186 wordt het aanroepadres bijgewerkt (vergelijk blok 186) In blok 188 wordt de informatie getransporteerd (twee bytes informatie). In blok 192 wordt gedetekteerd of de adres afstand (element 302) is bereikt. Zolang dit niet zo is 10 wordt de cyclus van fig. 9b telkens doorlopen. Tenslotte vindt de uitgang plaats via blok 19^ en wordt blok 166 weer bereikt. De subroutine van fig. 9b kan ook worden geïmplementeerd door eerst de gehele inhoud van de pseudo-instruktie met opcode C4 in de FIFO-buffer op te slaan en . 15 de zo beschikbare adressen achtereenvolgens bij te werken en in de FIFO-buffer opnieuw op te slaan. Als de gehele reeks adressen is bewerkt zijn ze dan in de goede volgorde aan de uitgang van de FIFO-buffer beschikbaar. Als ze na bijwerken beschikbaar zijn wordt de informatie van de 20 FIFO-buffer getransporteerd naar het bestemmingsadres doordat dan nog blok 17^· wordt doorlopen.
Fig. 9° wordt bereikt via blok 163. In blok 17i> wordt het aanroepadres bepaald als de som van het aktuele adres en de instruktie byte die de relatieve adresgegevens 25 bevat, In blok 176 wordt gedetekteerd of het aanroepadres ligt tussen het oorsprongsadres en het eindadres. Er wordt nu, als uitbreiding, verondersteld, dat slechts een gedeelte, van het programma wordt verplaatst. Daarbij kunnen ook bepaalde adressen buiten dat programma gedeelte moeten wor-30 den bijgewerkt. Daarom wordt in beide blokken 177a» 177b f gedetekteerd of het aktuele adres ligt tussen het oorspror^s •adres en het eindadres. Als beide adressen (berekend adres en aktueel adres) binnen, of beide adressen buiten het te transporteren programma gedeelte liggen, behoeft een rela4; 35 tief adres niet veranderd te worden en wordt via blok 178 het blok 17^· in fig. 9a bereikt. Als een van genoemde adres sen binnen, en één der genoemde adressen buiten het te ^ ......transporteren programma gedeelte ligt wordt blok 179 bereikt.
7906416 PHN 9555 27
Hier wordt het aanroepadres veranderd met het verschil tussen oorsprongsadres en bestemmingsadres (blok 173 in fig. 9a). Daarna wordt in blok 180 het (absolute) aanroepadres verminderd met het aktuele adres. In blok 181 wordt ge-5 detekteerd of het resulterende relatieve adres binnen de daarvoor gestelde grenzen ligt. Voor een 8 bits byte kunnen deze grenzen liggen bij + 63 (deze byte bevat dan zes adresbits, een tekenbit en een zogenaamde Hindirektie"-bit), waarbij ook -64 nog toelaat-baar is (zie het geciteerde 10 boek over de ”265O" microprocessor). Als dit in orde is wordt via blok 182 de Fig. 9a weer bereikt (blok 174).
Als de relatieve adresafstand niet in orde is wordt in blok 183 de instruktie afgebeeld in de oorspronkelijke vorm, dus met vermelding van het daarvoor geldende aktuele adres en 15 het oorspronkelijke relatieve adres. De programmeur kan dan later ingrijpen want de afgebeelde informatie vormt een signalering van de fouten. Eén mogelijkheid voor kor-rektie is dat de instruktie met relatief aanroep adres veranderd wordt in een instruktie met absoluut aanroepadres, 20 waarvoor één extra adresbyte nodig is. Dan moet het gehele getransporteerde deel door de programmeur worden aangepast.
Na blok 183 is de ongewijzigde instruktie dus weer beschikbaar en wordt via blok 190 weer het schema van fig. 9a bereikt.
, 25 Het bovenstaande werkt ook goed als er een over lapping bestaat tussen het oorspronkelijke programma deel en het verplaatste programmadeel, mits er getransporteerd wordt naar lagere adressen. Als er dan getransporteerd moet worden naar hogere adressen vindt het proces in twee stap-30 pen plaatst: eerst worden de adressen bijgewerkt, en pas als het gehele programma bijgewerkt is wordt het getransporteerd, waarbij van achteren begonnen wordt, terwijl de adrestellers decrementeerpulsen krijgen toegevoerd. Op dezelfde manier als boven beschreven kan ook een (geheel) 35 programma uit een PROM geheugen worden overgebracht naar een RAM—geheugen, en aldèAr operationeel zijn.
Fig. 10a, 10b geven een stroomdiagram van een werkmode om een sektor van het machineprogramma af te beel- 7906416 PHN 9555 28 den. Zo ontstaat uit het machineprogramma dat als voorbeeld in fig. 6 is afgebeeld, een voor een programmeur veel beter beeld, dat door fig. 5 wordt weergegeven. Na het begin in blok 310, waarbij tevens het eerste en het laatste adres 5 van de af te beelden sektor worden opgegeven wordt in blok 334 het aktuele adres gelijk gemaakt aan het eerste adres. In blok 336 wordt gedetekteerd of het aktuele adres ten minste even groot is als het laatste adres. Als dit zo is wordt de subroutine verlaten via blok 338; eind. Zolang W dit niet zo is wordt in blok 312 het aktuele leesadres van het programmageheugen in een tussenregister opgeslagen en bovendien wordt de op het aktuele adres beginnende in-struktie van 1, 2 of 3 bytes uit het programmageheugen uitgelezen en in verdere tussen registerruimte opgeslagen (dit kunnen de registers 205, 207, 256 zijn). In blok 316 wordt gedetekteerd of de opcode de waarde C7 heeft. Als dit zo is wordt in blok 318 een nieuwe afdruk pagina geak-tiveerd (verondersteld wordt dat het afbeeldelement een drukker is). Vervolgens wordt in blok 320 het laatst in 20 genoemd tussenregister opgeslagen opcode adres opgehaald en afgeheeld, waarna een tabulatie volgt. Vervolgens wordt in blok 322 de eerder uitgelezen instruktie uit de verdere tussenregisterruimte afgebeeld (in machinekode), en volgt weer een tabulatie. In blok 324 wordt gedetekteerd of de 25 opcode enerzijds de waarde C4, C5 heeft (1100010x), of anderzijds de waarde C6, C7 (1100011x) of tenslotte een andere waarde heeft dan (110001xx). In het geval C6, C7 (tekst respektievelijk titels) wordt in blok 326 een ASCII terug-vertaalelement geaktiveerd. In het geval C4-C7 wordt dan 30 in blok 330 de eerstvolgende byte uit het programmageheugen gelezen en afgebeeld. In het geval C4 wordt een byte omgezet in twee hexadecimale karakters, terwijl telkens na de tweede, vierde, enz. byte een spatie volgt. In het geval C5 wordt een byte omgezet in twee hexadecimale karakters, 35 terwijl na elke byte een spatie volgt. In de gevallen C6, C7 wordt elke byte omgezet in een alfanumeriek karakter, waarbij spaties ook in het programmageheugen moeten zijn opgeslagen. Daarna wordt in blok 328 gedetekteerd of de 7906416 PHN 9555 29 adresafstand is bereikd (vergelijk bijvoorbeeld blok 118 in fig. 76) zolang dié niet zo is wordt in blok 330 telkens de eerstvolgende byte uit het programmageheugen behandeld. Als de adresafstand is bereikt wordt in blok 332 een spa-® tieregel afgebeeld en gaat de drukker verder naar het begin van de daar weer op volgende nieuwe regel, en daarna naar blok 336.
Als het blok 324 een andere kode dan (llOOOIxx) betreft, wordt in blok 340 een terubvertaal element (dis-10 assmbler) voor de machineinstruktie geaktiveerd, de in-struktie wordt in bronkode terug vertaald en afgebeeld. Daarna volgt een tabulatie. In blok 342 wordt gedetekteerd of het een instruktie met een adres betreft. Deze detektie gebeurt aan de hand van de nog steeds beschikbare opcode, 15 Als dit zo is, wordt in blok 344 gedetekteerd of het een relatief adres betreft. Als dit zo is wordt in blok 246 uit het relatieve adres en het aktuele adres (het eerste adres na het einde van de aktuele instruktie) het absolute adres berekend. In blok 348 wordt het nu gevonden absolute adres 20 afgebeeld, eventueel samen met een volgend elements a) een ster, om aan te geven dat het een indirekt adres betreft, b) een opgave van een indexregister, en een opgave van een extra increment of decrement (bijvoorbeeld 2540 + x3 + 1
25 op de vijfde tekstregel van fig. 5J
Een en ander gebeurt geheel op grond van de bekende struk-tuur van de instruktie verzameling van de 2650 Signetics microprocessor.
Na het adres volgt weer een tabulatie. Daarna wordt in blok 350 gedetekteerd of het betreffende absolute adres wijst naar een subrotine door dat de bijbehorende titel wordt opgezocht (zo mogelijk ) en afgebeeld en daarna volgt in blok 352 een detektie of het een aftak instruktie betreft. Als dat zo is volgt de afbeelding van een spatiere-35 é?el (blok 353)· Dit vergroot de overzichtelijkheid van de afbeelding. Daarna volgt in blok 354 het teruggaan naar een nieuwe regel en wordt blok 336 weer bereikt.
Als in blok 342 wordt gedetekteerd dat het geen 7906415 PHN 9555 30 instruktie met een adres betreft wordt gedetekteerd (in blok 356) of het een instruktie betreft met een datagegeven. Als dit zo is wordt in blok 358 eerst getabuleerd en dan de data afgebeeld in binaire kode. Daarna wordt steeds blok 5 354 weer bereikt.
Het programma van fig. 5 is als demonstratie programma bedoeld; het l^evat geen syntaktische fouten; het vervult op zichzelf geen nuttige funktie. Uit fig. 6 is duar delijk hoe beknopt de notering in machine kode is: het be-10 treft minder dan de helft van de geheugenruimte en de rest wordt gevuld door additionele gegevens.
De uitvinding is hierboven uitgelegd aan de hand van een eenvoudige en voordelige implementatie met behulp van een Signetics 2650 microprocessor. Ook andere proces-15 soren zijn toepasbaar. Metname is de uitvinding niet beperkt tot instrukties met variabele lengte.
Fig. 7a: 100 - start 102 - instruktie met aanroepadres 104 - bewaar inhoudadresteller 20 106 - bereken aanroepadres minus voor instelling en vul adresteller
Fig. 7h: 109 - stel FIFO-buffer terug 110 - stap met één adres 112 - heeft data de waarde C7? 25 114 - is aktueel adres groter dan aanroepadres? 115 - lees volgende informatiebyte 118 - eindadres = aktueel adres plus laatst gele zen byte groter dan aanroepadres? 119 - stel FIFO-buffer terug 30 120 - lees volgende informatiebyte 122 -- ASCII-karakt er? \J 124 - aktueel adres ^ eindadres Ί 126 - informatiebyte naar FIFO-buffer 128 - eind 35 Fig. 8: 1 40 - begin 142 - roep eerste adres van een programma aan en geef adres laatste instruktiebyte op (eind- 790 64 1 6 adres) ΡΗΝΓ 9555 31 144 - is aktueel adres > eindadres? 146 - eind 148 - start adresteller en lees één instruktie uit programma geheugen 5 I50 - is de opcode 110001XX? 152 - aktiveer adresafstandsbyten en stel FIFO- buffer terug 153 “ lees evenveel informatie bytes als adres- afstandsbyte aangeeft en sla ze op in de 10 FIFO-buffer 154 — is de opcode C7? 155 — beeld aktueel adres af en tabuleer 156 - beeld inhoud van FIFO-buffer af en ga naar een nieuwe regel 15 Fig. 9a: l60 - begin ; 165 - eind 162 - sla oorsprongsadres in leesadres-register op en haal eindadres op 164 - sla bestemmingsadres op in schrijfadresregister 20 166 - inhoud lees- adresregister = eindadres? 167 - lees volgende instruktie 168 - is het een instruktie met relatief aanroep- adres? 170 — heeft de opcodebyte de waarde C4? 25 17I “ is het een instruktie met absoluut aanroep- adres? 172 - aanroepadres tussen oorsprongadres en eind adres 173 “ verander aanroepadres met verschil tussen 30 oorsprongadres en bestemmingsadres 174 — transporteer de informatie
Fig. 9h: 184 - aanroepadres tussen oorsprongadres en eind adres? 186 — verander aanroepadres met verschil tussen 35 oorsprongadres en bestemmingsadres 188 - transporteer de informatie 192 - adresafstand (302) bereikt? 7906418 * » PHN 9555 32
Fig. 9c: 175 - aanroepadres wordt aktueel adres + relatieve adresbyte .176 - aanroepadres tussen oorsprongsadres en eind- adres ? 5 177a- aktueel adres tussen oorsprongsadres en eindadres ^ 177b- aktueel adres tussen oorsprongsadres en eindadres 1 ^79 - verander aanreep adres met verschil tussen 10 oorsprongsadres en bestemmingsadres 1Bo - verminder aanroepadres met aktueel adres ^8l „ ligt relatief1 adres tussen gestelde grenzen? ^3 - beeld oude instruktie af
Fig 10a: 310 _ n 16 ·,,, - aktuele adres wordt eerste adres 336 _ aktuele adres ^ laatste adres? 338 - eind 312 red aktuele adres in tussen-register en lees aktuele instruktie 20 -51 o - is opcode = C7? 3^8 - aktiveer nieuwe afdrukpagina 320 - beeld gered adres af en tabuleer 322 «. beeld aktuele instruktie af en tabuleer 25 324 - is opcode C4, C5, C6, C? ? 326 «. aktiveer ASCII terugvertaalelement 330 - lees eerstvolgende byte eiï beeld af 328 - is adresafstand bereikt? 332 - beeld spatieregel af en ga naar nieuwe regel
Fig. 0b. 34-0 aktiveer terugvertaalelement* beeld vertaalde 30 3 instruktie af en tabuleer 342 » instruktie met adres? 344 - is adres relatief adres? 346 » bereken absolute adres 348 _ beeld absolute adres af en tabuleer 35 ->50 - detekteer titel subroutine en beeld af 352 - is bet een aftakinstruktie \ 353 - beeldspatie regel af 790641e PHN 9555 33 356 - instruktie met datagegeven? 358 - tabuleer en beeld binaire data af 354 - ga naar nieuwe regel 5 10 15 20 25 30 7906418 35

Claims (8)

1- Rekenmachinesysteem, bevattende: a. een programmageheugen met een volgorde van adresplaatsen 5 voor het opslaan van machinekodes; b. een toetsenbord; c. een afbeeldinrichting voor tenminste één regel karakters; d. een processor, tenminste bevattende: d1. een adresregister voor het programmageheugen; 10 met een incrementeeringang; d2. een instruktieregister (205) en verdere op- slagmiddelen (207» 256) van tesamen een voorafbepaalde lengte om een uit het programmageheugen uitgelezen instruktie van maximaal die 15 voorafbepaalde lengte op te slaan; d3. een op het instruktieregister aangesloten eerste instruktiedekodeur; - dk, een uitvoeringselement voor het onder besturing van een signaal van de eerste instruktie— 20 dekodeur uitvoeren van een informatiebewerking waarbij genoemde elementen door informatiever-bindingen voor data- en besturingssignalen zijn verbonden, met het kenmerk, dat verder aanwezig is: 25 d5. een met het instruktieregister koppelbare tweede instruktiedekodeur (290) om onder be- sturing van een voorafbepaalde machinekode verzameling (IIOOOIXX) een aktiveringssignaal toe te voeren aan een aktiveringsingang van 30 d6. een adresafstandsdetektor (298, 302) welke geschikt is om een adresafstand te detekteren met een waardebereik waarvan de bovengrens tenminste de maximale inhoud van een instruktie omvat en welke adresafstandsdetektor voor-35 zien is van eerste middelen (209) om een bij de desbetreffende machinekode uit genoemde verzameling behorend , separaat signaal van 79 0 6 4 1 6 een eerste adresafstand in het programmageheu- vm 9555 35 gen te ontvangen en dan een eerste stuursignaal (296) te genereren, tweede middelen (298) om een na genoemde machinekode afgelegde re-' latieve adresafstand in het programmageheugen 5 bij te houden en bij het bereiken van genoemde adresafstand een desaktiveringssignaal (304) te genereren en genoemd eerste stuursignaal te beëindigen waarbij genoemd eerste stuursignaal geschikt is om de processor voor na genoemd separaat signaal uit het programmageheugen arriverende informaties in een niet-aktieve mode te sturen.
2. Rekenmachinesysteem volgens conclusie 1, met het kenmerk, dat een eerst-in-eerst-uit (FIFO)-buffer aanwezig 15 is (300) met een ingang die verbonden is met een uitgang van het programmageheugen, en een laadingang om per adres van het programmageheugen genoemd eerste stuursignaal te ontvangen.
3· Rekenmachinesysteem volgens conclusie 1 of 2, 20 met het kenmerk, dat genoemde tweede instruktie-dskodeur voorzien is van een eerste signaaluitgang om onder besturing van een tot genoemde voorafbepaalde machinekodeverza-meling behorende eerste specifieke machinekode (c4, 11000100) in samenwerking met genoemd eerste stuursignaal 25 een uit het programmageheugen uitgelezen woord te indiceren. als een adresgegeven.
4. Rekenmachinesysteem volgens conclusie 1 of 2, met het kenmerk, dat genoemde tweede instruktiedekodeur voorzien is van een tweede signaaluitgang om onder bestu-30 ring van een tot genoemde voorafbepaalde machinekodeverza-meling behorende tweede specifieke machinekode (C5» 11000101) in samenwerking met genoemd eerste stuursignaal een uit het programmageheugen uitgelezen woord te identificeren als een datagegeven.
5. Rekenmachinesysteem volgens conclusie 1 of 2, met het kenmerk, dat genoemde tweede instruktiedekodeur voorzien is van een derde signaaluitgang om onder besturing van een tot genoemde voorafbepaalde machinekodeverzameling 7906416 PHN 9555 36 behorende derde specifieke machinekode (C6, 11000110) in samenwerking met genoemd eerste stuursignaal een uit het programmageheugen uitgelezen woord te identificeren als een tekstgegeven.
® 6. Rekenmachinesysteem volgens conclusie 1 of 2, met het kenmerk, dat genoemde tweede instruktiedekodeur voorzien is van een vierde signaaluitgang om onder besturing van een tot genoemde voorafbepaalde machinekodeverzameling behorende vierde specifieke machinekode (C7» 11000111) in ^ samenwerking met genoemd eerste stuursignaal een uit het programmageheugen uitgelezen woord te identificeren als een titelgegeven.
7· Rekenmachinesysteem volgens één der conclusies 1 tot en met 6, met het kenmerk, dat genoemd desaktiverings-15 signaal (304) werkt als een eerste stopsignaal (294) voor genoemd adresregister, en dat genoemd toetsenbord voorzien is van vierde middelen (bijvoorbeeld spatiebalk) om middels een tweede stuursignaal (2Jö) genoemd eerste stopsignaal onwerkzaam te maken,
8. Rekenmachinesysteem volgens conclusie 7» met het kenmerk, dat genoemd toetsenbord is voorzien van vijfde middelen om middels een derde stuursignaal genoemd eerste stopsignaal voortdurend onwerkzaam te maken en dat adres-vergelijkmiddelen aanwezig zijn om bij het door het adres register bereiken van een eindadres genoemd derde stuursignaal te beëindigen en een tweede stopsignaal voor het adresregister te genereren. 30 35 7906416
NL7906416A 1979-08-27 1979-08-27 Rekenmachinesysteem, waarbij het programmageheugen geschikt is om doorlopen te worden waarbij niet tot een instruktie behorende gegevens apart gedetekteerd worden. NL7906416A (nl)

Priority Applications (6)

Application Number Priority Date Filing Date Title
NL7906416A NL7906416A (nl) 1979-08-27 1979-08-27 Rekenmachinesysteem, waarbij het programmageheugen geschikt is om doorlopen te worden waarbij niet tot een instruktie behorende gegevens apart gedetekteerd worden.
US06/178,646 US4376977A (en) 1979-08-27 1980-08-15 Computer system with scannable program memory
FR8018382A FR2464521A1 (fr) 1979-08-27 1980-08-22 Systeme de machine a calculer dans lequel la memoire de programme peut etre parcourue et des donnees qui n'appartiennent pas a une instruction sont detectees separement
GB8027474A GB2057731B (en) 1979-08-27 1980-08-22 Computer system in which the contents of the programme memory are rendered more accessible for investigation and/or modifition
DE19803031964 DE3031964A1 (de) 1979-08-27 1980-08-25 Rechnersystem, bei dem sich der programmspeicher zum durchlaufen eignet, wobei einem befehl nicht zugeordnete daten einzeln detektiert werden
JP11716380A JPS5635249A (en) 1979-08-27 1980-08-27 Computer system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
NL7906416 1979-08-27
NL7906416A NL7906416A (nl) 1979-08-27 1979-08-27 Rekenmachinesysteem, waarbij het programmageheugen geschikt is om doorlopen te worden waarbij niet tot een instruktie behorende gegevens apart gedetekteerd worden.

Publications (1)

Publication Number Publication Date
NL7906416A true NL7906416A (nl) 1981-03-03

Family

ID=19833731

Family Applications (1)

Application Number Title Priority Date Filing Date
NL7906416A NL7906416A (nl) 1979-08-27 1979-08-27 Rekenmachinesysteem, waarbij het programmageheugen geschikt is om doorlopen te worden waarbij niet tot een instruktie behorende gegevens apart gedetekteerd worden.

Country Status (6)

Country Link
US (1) US4376977A (nl)
JP (1) JPS5635249A (nl)
DE (1) DE3031964A1 (nl)
FR (1) FR2464521A1 (nl)
GB (1) GB2057731B (nl)
NL (1) NL7906416A (nl)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4541045A (en) * 1981-09-21 1985-09-10 Racal-Milgo, Inc. Microprocessor architecture employing efficient operand and instruction addressing
JPS5938870A (ja) * 1982-08-30 1984-03-02 Sharp Corp 電子式計算機
JPS62229343A (ja) * 1986-03-29 1987-10-08 Toshiba Corp プログラム・カウンタ表示方式
US5535331A (en) * 1987-09-04 1996-07-09 Texas Instruments Incorporated Processor condition sensing circuits, systems and methods
US5440749A (en) * 1989-08-03 1995-08-08 Nanotronics Corporation High performance, low cost microprocessor architecture
US6970985B2 (en) 2002-07-09 2005-11-29 Bluerisc Inc. Statically speculative memory accessing
US20050114850A1 (en) 2003-10-29 2005-05-26 Saurabh Chheda Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control
US7996671B2 (en) 2003-11-17 2011-08-09 Bluerisc Inc. Security of program executables and microprocessors based on compiler-architecture interaction
US8607209B2 (en) 2004-02-04 2013-12-10 Bluerisc Inc. Energy-focused compiler-assisted branch prediction
US20070294181A1 (en) * 2006-05-22 2007-12-20 Saurabh Chheda Flexible digital rights management with secure snippets
US20080126766A1 (en) 2006-11-03 2008-05-29 Saurabh Chheda Securing microprocessors against information leakage and physical tampering
US20080154379A1 (en) * 2006-12-22 2008-06-26 Musculoskeletal Transplant Foundation Interbody fusion hybrid graft
US10333696B2 (en) 2015-01-12 2019-06-25 X-Prime, Inc. Systems and methods for implementing an efficient, scalable homomorphic transformation of encrypted data with minimal data expansion and improved processing efficiency
US11070373B2 (en) * 2018-02-21 2021-07-20 Ebay Inc. Masked key hopping

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3893084A (en) * 1973-05-01 1975-07-01 Digital Equipment Corp Memory access control system
US4089059A (en) * 1975-07-21 1978-05-09 Hewlett-Packard Company Programmable calculator employing a read-write memory having a movable boundary between program and data storage sections thereof
US4180854A (en) * 1977-09-29 1979-12-25 Hewlett-Packard Company Programmable calculator having string variable editing capability
US4231087A (en) * 1978-10-18 1980-10-28 Bell Telephone Laboratories, Incorporated Microprocessor support system

Also Published As

Publication number Publication date
DE3031964A1 (de) 1981-03-19
JPS5635249A (en) 1981-04-07
FR2464521A1 (fr) 1981-03-06
GB2057731A (en) 1981-04-01
US4376977A (en) 1983-03-15
GB2057731B (en) 1983-06-22
FR2464521B1 (nl) 1982-11-26

Similar Documents

Publication Publication Date Title
NL7906416A (nl) Rekenmachinesysteem, waarbij het programmageheugen geschikt is om doorlopen te worden waarbij niet tot een instruktie behorende gegevens apart gedetekteerd worden.
US4435756A (en) Branch predicting computer
US5226149A (en) Self-testing microprocessor with microinstruction substitution
JP2746549B2 (ja) コンピュータシステム及びその動作方法
KR100875401B1 (ko) 프로세서 장치 및 복합 조건 처리 방법
JPH0429093B2 (nl)
US5129068A (en) Operand address calculation in a pipeline processor by decomposing the operand specifier into sequential step codes
US5220656A (en) System for selecting control parameter for microinstruction execution unit using parameters and parameter selection signal decoded from instruction
US6611909B1 (en) Method and apparatus for dynamically translating program instructions to microcode instructions
US5812809A (en) Data processing system capable of execution of plural instructions in parallel
US5313644A (en) System having status update controller for determining which one of parallel operation results of execution units is allowed to set conditions of shared processor status word
US4945511A (en) Improved pipelined processor with two stage decoder for exchanging register values for similar operand instructions
US4301511A (en) Programmable calculator with a device for controlling the reading of program data
US5210864A (en) Pipelined microprocessor with instruction execution control unit which receives instructions from separate path in test mode for testing instruction execution pipeline
US3911406A (en) Correction apparatus for use with a read only memory system
KR100442306B1 (ko) 파이프라인마이크로프로세서테스트장치
US5396610A (en) Register address specifying circuit for simultaneously accessing two registers
US5349681A (en) Bit searching circuit and data processor including the same
US5269008A (en) Method and apparatus for pre-processing the source of a pop instruction in a pipeline computer
US5361338A (en) Pipelined system for decomposing instruction into two decoding parts and either concurrently generating two operands addresses of merging decomposing decoding codes based upon the second operand
US5745723A (en) Data processing system capable of execution of plural instructions in parallel
US5463747A (en) Microprogram data processor processing operand address calculation and instruction execution with common hardware
US9043673B2 (en) Techniques for reusing components of a logical operations functional block as an error correction code correction unit
US20030018883A1 (en) Microcode branch prediction indexing to macrocode instruction addresses
JP2007188366A (ja) コンパイル装置

Legal Events

Date Code Title Description
A1B A search report has been drawn up
BV The patent application has lapsed