IT7370879A1 - Calcolatore elettronico con apparecchiatura per la messa a punto dei programmi operativi - Google Patents
Calcolatore elettronico con apparecchiatura per la messa a punto dei programmi operativiInfo
- Publication number
- IT7370879A1 IT7370879A1 ITTO1973A70879A IT7087973A IT7370879A1 IT 7370879 A1 IT7370879 A1 IT 7370879A1 IT TO1973A70879 A ITTO1973A70879 A IT TO1973A70879A IT 7087973 A IT7087973 A IT 7087973A IT 7370879 A1 IT7370879 A1 IT 7370879A1
- Authority
- IT
- Italy
- Prior art keywords
- register
- program
- instruction
- address
- memory
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/362—Debugging of software
- G06F11/3648—Debugging of software using additional hardware
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Calculators And Similar Devices (AREA)
Description
[0001] Classe internazionale G06f-3/o0 Descrizione dell'invenzione industriale avente per titolo: CALCOLATORE ELETTRONICO CON APPARECCHIATURA PER LA MESSA A PUNTO DEI PROGRAMMI OPERATIVI.
[0002] a nome ING.
[0003] C.
[0004] OLIVETTI C., S.P.A.
[0005] -10O15 IVREA (Torino) via G.
[0006] Jervis, 77 1000643 depositata il 28DIC.1973 70879-A/73 La presente invenzione si riferisce ad un calcolatore punto dei programmi operativi compilati dall'operatore, pri- ma della ioro utilizzazione.
[0007] Ing.
[0008] C.
[0009] OLIVETTI C., S.p.A.
[0010] E' noto nel campo dell'elaborazione dati l'esigenza di provare un programma prima della sua utilizzazione al fine di eliminare gli errori e le contraddizioni originati durante la prima stesura del programma stesso.
[0011] Normalmente negli elaboratori di grande capacita di cal- colo e di memoria, esistono programmi di prova o di debugging gia compilati e adatti a fornire all'operatore tutte le faci- litazioni che gli permettono di seguire l'elaborazione del pro gramma in prova e di visualizzare eventuali errori.
[0012] E' evidente che tali programmi di debugging poiche agi scono sul programma in prova, devono coesistere insieme a flolale questo nella memoria dell'elaboratore, per cui solo ela boratori di.
[0013] grandi dimensioni offrono tali facilitazi ni.
[0014] Nel caso poi di elaboratori di piccole dimensioni tenere il programma di dimensione massima tra quelli relativi all'applicazione specifica dell'elaboratore ( per esempio l'applicazione a problemi contabili), non pilato, Infatti la tendenza dei costruttori di tali ela S.p.A.
[0015] bc atori e di fornire i programmi necessari all'uten- "0 te, gia messi a punto.
[0016] OLIVETTI Tale tendenza trova la sua t giustificazione nel fatto che un aumento dellamemoria perospitare i programmi di debugging inciderebbe in modo negativo sul costo dell'elaboratore; d'altra parte l'utente acqui- a causa della parte di memoria inutilizzata.
[0017] Lo svantaggio evidente per l'utente, derivante da questa tendenza, e l'assoluta mancanza di flessibilita dell'elabora- tore acquistato in quanto l'utente non e in grado di apporta- re da solo la minima modifica ai programmi forniti con l'ela boratore.
[0018] Tale rigidita di prestazioni dell'elaboratore pone l'uten- l'elaboratore per qualsiasi evoluzione di prestazioni legate ad una modifica di programmi.
[0019] Di ccseguenza l'utente e costretto richiedere al fornitore la rodifica dei programmi, cosa che comporta lunghi tempi di at- S.p.A tesa e costi elevati.
[0020] Per ovviare a tali inconvenienti l'utente C.OLIVETTI C.
[0021] e portato a modificare da se i programmi e a richiedere ai cen- tri di calcolo esterni il debugging delle modifiche apportate.
[0022] Anche in questo caso l'utente é costretto.a lunghi tempi di atte sa ed a costi supplementari.
[0023] Uno degli obiettivi della presente invenzione,e pertanto di fornire un sistema per il debugging dei programmi a disposizione del programmatore in modo da poter modificare o creare nuovi pro- grammi.
[0024] Un'altro obiettivo e quello di fornire tale sistema di de-- moria dell'elaboratore.
[0025] Un ulteriore obiettivo e quello di fornire un set base di programmi di debugging residenti nella memoria a sola lettura (ROM) dell'elaboratore e la possibilita di introdurre in una par- ticolare zona della memoria di lavoro (RAM) senza alterare i parametri significativi del programmain prova, programmi di debugging preregistrati su una cartolina magnetica.
[0026] Un ulteriore obiettivo é quello di permettere al programma tore di scrivere ed utilizzare i programmi di debugging piu adat ti al suo particolare problema, mediante la registrazione su car- tolina magnetica.
[0027] Un ulteriore obiettivo infine e quello di eseguire tutte le operazioni relative al debugging utilizzando soltanto la tastie 'V'd's ra, la console, il display di normale dotazione dell'eiaborato- re, senza fare uso di un'apposita apparecchiatura per il debugging L OLIVET come realizzato nei grandi elaboratori.
[0028] Queste ed altre caratteristiche dell'invenzione appariranno 100 piu chiare dalla descrizione e dalle figure annesse in cui: FIG.
[0029] Ja rappresenta uno schema a blocchi dell'elaboratore utilizzante il sistema di messa a punto dei programmi secondo l'invenzione; FIG.
[0030] 1b rappresenta una vista prospettica dell'elaboratore; FIGG.
[0031] 2a, 2b, 2c, rappresentano uno schema a blocchi detta- gliato dell'unita centrale dell'elaboratore; FIG.
[0032] 2, rappresenta la composizione delle FIGG.
[0033] 2a-2c; FIG.
[0034] 3 rappresenta dei segnali di temporizzazione dell'unita centrale; FIG.
[0035] 4 rappresenta il registro di stato SO ; FIG.
[0036] 5 rappresenta segnali di temporizzazione del registro di stato SO; FIG.
[0037] 6 rappresenta segnali operanti sul registro So durante la lettura di una microistruzione; FIG..
[0038] 7 rappresenta i registri operativi 30; FIG.
[0039] 8 rappresenta uno schema a blocchi dei registri 30; FIG.
[0040] 9 rappresenta uno schema di zRM del RAM1; FIG.
[0041] .9a rappresenta il byte di condizioni di programma; FIG.
[0042] 9b rappresenta il byte di codice di interruzione; FIG.
[0043] 9c rappresenta il byte di prenotazione interruzione; C.,S.p,A.
[0044] FIG.
[0045] 9d rappresenta il byte di servizio debugging; FIGG.
[0046] 10a, 10b e 10c, rappresentano il diagramma di flusso C.OLIVETTI del'microprogramma interprete; FIG.
[0047] 1od, rappresenta i formati delle istruzioni; FIGG.
[0048] 11a-11g, rappresentano i diagrammi di flusso del pro- gramma di DBG; FIGG.
[0049] 12a-12f rappresentano un esempio di visualizzazione di un'istruzione; FIG.
[0050] 13 rappresenta il diagramma di flusso del microprogram ma di identificazione delle Barre; FIG.
[0051] 14 rappresenta il diagramma di flusso riassuntivo del- le operazioni del sistema di debugging secondo l'invenzione.
[0052] Indice Argomenti -LISTA DELLE ABBREVIAZIONI Pag.
[0053] 7 L'Uficlale Rogante -DESCRIZIONE.GENERALE 8.
[0054] -UNITA'CENTRALE(FIG.
[0055] 2 12 1.
[0056] Temporizzatore 20 Pag.13 2.
[0057] Esecuzione delle microistruzioni (TABELLA A) 11 14 3.
[0058] Registro di Stato (s0), 27 11 17 4.
[0059] Registro istruzioni (R0), 26 23 5.
[0060] Registri operativi 30 (scratch-pad) 11 23 6.
[0061] Unita Aritmetica 35 11 25 7.
[0062] Deviatori 40 27 Y 8.
[0063] Rete di shift 41 28 9.
[0064] Rete d.
[0065] ingresso ai.registri operativi 11 29.
[0066] S.p.
[0067] 10.
[0068] Rete di collegamento alla RAM1 11 30 11.Logica di Canale 45 I1 33 IT "1 35 -MICROPROGRAMMA DI INTERPRETAZIONE DELLE ISTRUZIONI .11 51 .Bul -PROGRAMMI DI DBG 11 70 1.Istruzioni utilizzate 11 70 2.visualizzazione dell istruzione nei reg.
[0069] 362 e 363 11 76 3.Riconoscimento barre " 93 4.Programma introduzione da C.M.
[0070] (Barra s2) 11 104 5.Programma leggi RAM (Barra so) 113 6.Programma di prenotazione sTOP (Barra s1) 115 7.Programma di scrittura ir RAM (Barra s6) .117 119 -CONCLUSIONI ED ESEMPI 11 121 -RIVENDICAZIONI 11 128 LISTA DELLE ABBREVIAZIONI DI= Registro 41, indica gli otto deviatori DEV= Un deviatore del Registro 41, specificato-da tre bit CRT=Carattere, corrisponde ad otto bit di memoria MEM= Memoria RAM 1 IND= Indirizzo MLS=Matrice logica di sequenza 28 RB=1 Registro Base P1=Point r 1 P2=VPointer 2 C.
[0071] OLIVEttI C.
[0072] Sp.A, CP= Condizioni di programma CI= Codice interruzione MI = : Modifica Istruzione DBG= Debugging BSD= Byte Serv.
[0073] DBG C.M.= Cartolina magnetica OREX= OR esclusivo CI = Codice interruzione IP= Indirizzatore di programma (207) AI= Abilitazione interruzione PSR= Programma in corso (Registro 300 di RAM 1) IPsR= Programma di interruzione (Registro 302 di RAM 1) OPSR= Programma interrotto (Registro 301 di RAM 1) zRM= Zona riservata di RAM 1 RC= Riferimento corrente cC= Codice condizione UC= Unita centrale 3 UP= Unita periferica 4 IR= Indirizzo di rientro (Reg.
[0074] 327 Fig.
[0075] 9) II= Indirizzi del programma di interruzione (Reg.
[0076] 335 di Fig.9) IS= Indirizzo di stop (Reg.
[0077] 350 Fig.
[0078] 9) BSD= Byte servizio debugging (Reg.
[0079] 351 di Fig.
[0080] 9 RL= Registro di lavoro (Reg.
[0081] 352 di Fig.
[0082] 9) AB= Abilita barre ITR= Registro indirizzo Tabella Riferimenti.
[0083] DESCRIZIONE GENERALE Viene ora fatta con riferimento alle Figg.
[0084] 1a e 1b una descrizione sommaria dell'elaboratore utilizzante il sistema di messa a punto dei programmi (debugging) secondo l'invenzio Ing.
[0085] ne.
[0086] Naturalmente si fara riferimento ad una particolare forma di realizzazione dell'elaboratore senza per questo limitare le possibilita di applicazione del sistema secondo l'invenzione ad altri tipi di elaboratori.
[0087] In particolare l'elaboratore di Figg.
[0088] 1a e 1b e del tipo microprogrammato, cioé ad ogni istruzione del programma cor- risponde un microprogramma registrato in una memoria fissa per cui l'esecuzione di un'istruzione di programma viene realizza ta mediante l'esecuzione,sequenziale delle microistruzioni del relativo microprogramma.
[0089] 8 L'elaboratore di Figg.
[0090] 1a e 1b comprende una memoria RAM? so di esecuzione, una memoria ROM2 atta a contenere sia i mi- croprogrammi che implementano le istruzioni dei programmi sia i programmi utilizzati dal sistema di debugging secondo l'in- venzione come verra meglio spiegato in seguito.
[0091] La RAM1 e la ROM2 possono essere di un qualsiasi tipo no- si precisa soltanto che ciascuna cella di entrambe le memorie e a ta a contenere sedici bit.
[0092] La RAM1 e la ROM2 sono collegate ad un'unita centrale 3 di elaborazione, la quale verra spiegata in dettaglio in segui to, e che a sua volta e collegata ad un gruppo di unita peri- feriche 4.
[0093] Le unita periferiche 4 possono essere di vario genere se re.
[0094] Nel caso particolare verranno descritte e mostrate in segui to soltanto le unita periferiche utilizzate dal sistema di debugging secondo l'invenzione.
[0095] In particolare le unita perife riche mostrate sono: una tastiera alfanumerica 5, un visualiz zatore o display 6, una console di comando.7, una stampante 8, ed un'unita di lettura e scrittura 9' atta a registrare e leg- folale Ro gere dati su una cartolina magnetica 9.
[0096] Con riferimento alle Figg.
[0097] 1a e 1b vengono ora descritte brevemente le operazioni che il programmatore deve effettuare durante la fase di debugging di un programma in precedenza re- verranno descritte in dettaglio.
[0098] Si supponga ora che il programma registrato nella RAM 1 non venga eseguito correttamente dall'elaboratore a causa de- gli errori di vario genere che il programmatore puo aver com- messo durante la sua compilazione.
[0099] A questo punto il programmatore intende eseguire un con- trollo delle istruzioni del programma che l'elaboratore non é in grado di eseguire, e presume che una di esse sia errata.
[0100] Per correggere direttamente nella RAM1 questa istruzione, il OLIVETTI programmatore agisce sulla console 7 posizionando un commuta- di debugging, scrive sulla parte numerica 101 della tastiera Ing.
[0101] 5 l'indirizzo relativo dell'istruzione e aziona poi una bar- ra di servizio s1 appartenente ad un gruppo di barre 102.
[0102] In corrispondenza di questa manovra, viene generata una interruzione del programma da correggere (causata dal commu- programmi di debugging registrati nella ROM 2 associato alla esempio puo avere come effetto la visualizzazione dell'istru zione corrispondente all'indirizzo scritto in tastiera,el'ar- 1.0 istruzione che ritiene corretta.
[0103] Successivamente l'operatore aziona un'altra barra di servizio s6,a cui e associato un al- tro programma di debugging che registra nella memoria RAM 1 l'istruzione corretta all'indirizzo impostato in precedenza.
[0104] Qualora il programmatore desideri eseguire un programma di debugging diverso da quelli registrati nella ROM2, inserisce to un programma di debugging ed aziona la barra di servizio s2.
[0105] Quest'ultima richiama un parti- colare programma della RoM2 che provoca:la lettura del program S.p.A.
[0106] ma registrato sulla cartolina 9, il suo trasferimento in una zona fissa (zRM) della RAM1 e l'esecuzione immediata di OLIVETTI C tale programma.
[0107] Si puntualizza, e questo verra spiegato in dettaglic nel seguito, che la zona fissa della RAM1 nella quale viene trasfe rito il programma di cartolina non contiene informazioni signi ha perdita di informazioni nell'eseguire il programma di to appare evidente uno dei vantaggi del sistema secondo l'inven zione e cioe la possibilita di provare i programmi semplicemen te azionando un commutatore ed utilizzando gli stessi organi (tastiera, display, cartolina magnetica) utilizzati durante il funzionamento normale.
[0108] UNITA' CENTRALE (FIG.
[0109] 2) Viene ora eseguita con riferimento alla FIG.
[0110] 2 una de- scrizione dettagliata dell'unita centrale 3.
[0111] L'unita centrale 3 e un insieme di circuiti logici che gestiscono ed eseguono i vari microprogrammi contenuti nella ROM 2.
[0112] Essa e composta da quattro blocchi principali: Un temporizzatore 20 che temporizza l'evolversi dell'ela borazione dei dati all'interno dell'unita centrale 3.
[0113] Esso si compone di un oscillatore 21 e di un insieme di circuiti gene S.P.A ratori di segnali 22.
[0114] C.
[0115] OLIVETTI Una rete della matrice logica di sequenza 25, la quale staticizza e interpreta i codici delle microistruzioni lette dalla ROM2 e genera i comandi necessari alla sua esecuzione.
[0116] Essa e composta da un registro della microistruzione 26 (Ro), 28(MLS).
[0117] Una rete operativa la quale esegue l'elaborazione dei da- ti con modalita imposte dalla matrice logica di sequenza 28.
[0118] La rete operativa comprende: i registri operativi 30 (scratch- pad) i.quali sono divisi in due gruppi RA-31 e RB-32 ciascuno dei quali e composto da sedici registri di otto bit indicati nel.seguito con AO-A15, e B0-B15 : rispettivamente; un'unita aritmetica 35, la quale e'formata da,tre blocchi con paralle- lismo; otto bit: UA-36, UB-37, UC-38; i deviatori DI-40; una 12 rete di shift ND-41 una rete di ingresso ai registri opera tivi che comprend i nodiNA e NB,e due registri BA-42, BB-43, ed una rete di collegamento con la RAM 1 composta di nodi NO ed NC; una logica di canale 45 la quale gestisce l'interfaccia di collegamento delle unita periferiche e controlla la simul- taneita operativa dell'Unita Centrale 3.
[0119] "Viene ora eseguita una descrizione dettagliata dei bloc- chi sopra elencati.
[0120] 1.
[0121] TEMPORIZZATORE (20) ,S.p.A.
[0122] L'oscillatore 21 genera impulsi periodici che definisco no un periodo di tempo fisso detto ciclo di macchina che du- ra il tempo necessario alla esecuzione di una operazione ele- mentare, (per esempio: Lettura di un registro operativo 30, suo incremento e riscrittura nel registro operativo 30).
[0123] Durante il ciclo di macchina vengono generati dal circui to 22 dei segnali la cui durata e il cui posizionamento sono fissi nel ciclo di macchina.
[0124] La funzione di tali segnali e prestabilita e,il fatto che agiscano o no sui circuiti dell'unita centrale 3 e determinato dalle condizioni generate dalla matrice di sequenza 28 nel mo- do che verra descritto in seguito.
[0125] Il funzionamento dell'unita centrale 3 e completamente con le unita periferiche.
[0126] I segnali generati dal circuito 22 sono dieci e la loro 13 utilizzazione verra illustrata in seguito.
[0127] Essi sono: TO che agisce sul registro di stato 27, T1 che temporizza la lettura della RoM 2, T2 che temporizza la RAM 1, T3A che agisce sul registro R0-26, T3N che agisce anch'essa sul registro RO26, T4A che agisce sui registri BA42, BB43 e sui deviatori 40, T4N che agisce sui registri BA42, BB43 e sui deviatori 40, T5 che agisce sui registri operativi 31 e 32, T6.Y T7 che agiscono sulla logica di canale 45.
[0128] C.OLIVETTI C.
[0129] cui.compaiono i segnali citati.
[0130] Naturalmente l'oscillatore 21 ed i circuiti 22 non vengo- Ing.
[0131] no descritti in dettaglio poiche sono noti nel campo della pro- gettazione di circuiti.
[0132] 2.
[0133] ESECUZIONE DELLE MICROISTRUZIONI Prima di procedere alla descrizione degli altri blocchi istruzioni utilizzate dall'unita centrale 3 nel sistema di debugging secondo l'invenzione ed alla loro esecuzione.
[0134] L'esecuzione di una microistruzione si pu suddividere in due fasi: una fase Interpretativa, comune a tutte le microistru zioni, che legge dalla ROM2 la microistruzione indirizzata, ne RoM2.
[0135] Tale fase e evidentemente indipendente dal codice della 14 microistruzione letta.
[0136] Una fase esecutiva, durante la quale av viene la elaborazione dei dati secondo le modalita indicate dal la microistruzione letta nella fase interpretativa precedente.
[0137] china e la configurazione dei segnali (in seguito detti Comandi) e stabile nell'ambito del ciclo.
[0138] La configurazione di tali coman di definisce le operazioni da svolgere ed e detta "stato Inter- pretativo".
[0139] La presenza dello Stato Interpretativo e identificata da un flip-flop del registro 27 detto S000 (Fig.
[0140] 4): OLIVETTI La fase esecutiva e svolta in uno o piu cicli di macchina ai quali corrispondono altrettanti stati definiti ciascuno da un corrispondente flip-flop del registro 27.
[0141] Durante tutta la fase esecutiva il codice della microistru zione in oggetto resta stabile sul registro 26, mentre evolve la situazione dei flip-flop del registro 27 che definiscono lo stato in corso.
[0142] Ogni stato definisce il successivo in funzione del codice della microistruzione letta.
[0143] Alla fine dell'esecuzione di ciascuna microistruzione si ritorna nello stato interpretativo s000 per leggere dalla R0M2 la microistruzione successiva.
[0144] Durante le due fasi, interpretativa ed esecutiva, la rete combinatoria 28 (MLs) che ha come ingressi i registri 26 e 27, genera dei comandi C che abilitano determinati flussi di in- =15 formazione attraverso la rete operativa o gli altri blocchi dell'unita centrale 3.
[0145] Le informazioni circolano quindi tra i blocchi deli'unita centrale 3 attraverso una serie di porte AND di vario tipo che vengono controllate dai comandi C generati dalla rete combina- toria 28.
[0146] In FIG.
[0147] 2 queste porte sono simbolicamente rappre- sentate divise in tre zone.
[0148] La zona centrale contiene il se- gnale di controllo della porta generato dalla rete 28 (MLs).
[0149] Quando questo comando é presente i segnali all'ingresso del- S.P.A la porta vengono trasferiti al blocco successivo.
[0150] Le coppie di numeri variabili da 00 a 15 che si trovano nella zona su- OLIVETTI periore e nella zona inferiore delle porte indicano il nume sizioni in cui si trovano all'ingresso e all'uscita questi bit.
[0151] coppie di rumeri 07, 00 é una porta che trasferisce un caratte re di otto bit in diretto parallelo.
[0152] Una porta avente invece nella zona superiore, cioe in ingresso, la coppia di numeri O3, 0o e nella zona inferiore, cioe in uscita, la coppia di numeri 07, 04 e una porta che trasferisce quattro bit scalan doli verso sinistra di quattro posizioni.
[0153] Se 07, 04 sono in ingresso e 03, 00 in uscita, lo scalamento e di quattro posi- gnifica che i bit vengono forzati nella porta dall'esterno.
[0154] Si descrive di seguito, con riferimento alla tabella A, 16 il gruppo di microistruzioni utilizzate dal sistema di debugging secondo l'invenzione, tralasciando le altre mi- croistruzioni che l'unita centrale e in grado di effettuare Le microistruzioni riportate nella Tabella A hanno un for- mato fisso di sedici bit che corrisponde ad una parola del- la RoM2.
[0155] Il formato delle microistruzioni e il seguente: YIZ 15 11 07 03 00 I campi, ciascuno di quattro bit, hanno il seguente signifi catc F e il codice operativo della microistruzione; x indica il primo operando; Y indica il secondo operando; z e un espansore di uno dei campi precedenti.
[0156] Qualora i campi x e y specifichino come operandi i regi- stri A, B o L dei registri operativi 30, saranno indicati nel- le microistruzioni con i simboli Ax, Bx, Lx, Ay, By, Ly rispet tivamente.
[0157] Le microistruzioni sono suddivise in gruppi, distinti dal diverso codice di funzione cioe dalla diversa configurazione binaria del campo F della microistruzione.
[0158] Le microistruzioni aventi lo stesso codice di funzione omclale Rogante vengono eseguite con la stessa sequenza di stati.
[0159] 3.
[0160] REGISTRO SO (27) Il registro 27 e formato da otto flip-flop (FIG.4) che di 17 TABELLA A Nome F x Y Z FUNZIONE ARITMETICHE LOGICHE ADDB 0110 A B 0101 BA+B ANDA 0110 A B 1000 SeA-AANDB)=O ANDB 0110 A B 0100 SeBAANDB)=0 PONE AND 0110 A B 0000 seA AND B=0 DO1=1 ORA 0110 A B 1110 seA-AOR B)=0 ORE 0110 A B 0111 AOR.EXB=O S.p.A.
[0161] se SOT 0110 A B 0010 A-B 0 D0O=1 TRASFERIMENTO TAB 0101 A B 1100 B4A TBA 0101 A B 0011 AB SCAMBIO SLL .0100 L L 1111 AxBy;BxAy DECREMENTO DCA 1010 A 0100 1010 se(AA-1)=0pone DO1=1 CARICA DEVIATORI TADI 1011 A 1110 0111 DIA 18 TABELLA A (Continua) Nome F x FUNZIONE TBDI 1011 B 1111 0111 REDI 1011 O DEV 0110 0110 DEV 'O' SEDI 1011 1 DEV 0110 0110 DEV1 SHSB 1011 B 0001 0101 SHIFT B un bit a sin.
[0162] ROTB 1011 B 0001 0110 Scambio semibyte AZAP 1011 A 0010 0111 Azzera semibyte sinistro SALTO SAI 000 Salto incondizionato IND.I SADO 0010 0.DEV I Salto a I se DEV = 0 SADI 0011 O DEV if DEV =1 SCRIVI/LEGGI RAM1 MAD 1100 A T A MEM.IND.I AMD 1101 A I MEM.
[0163] IND.I 4- A AMI 1110 A 1011 MEM.: IND.LA BMI 1110 L B 0011 MEM.
[0164] IND.LB AMIP 1110 A 1001 MEM.IND.L-A;LL+ BMIP 1110 L B 0001 MEM.IND.L-B;LL+1 MAIP 1110 L A 1101 AMEM.IND.L;LL+1 19 TABELLA A (Continua) Nome F x Y Z FUNZIONE MBIP 1110 B 0101 MEM.IND.L;LL+ FORZA REGISTRI 3O CRTA 1000 A CRT A CRT CRTB.
[0165] 1001 B CRT A CRT Ing.C.OLIVETTI C., S.p.A.
[0166] LEGGI ROM2 ROMA 0111 A 0000 0000 A MEM.IND.L2; seb07=0 poni 8 bits meno significativi se b07=1 poni 8 bits piu si- gnificativi.
[0167] b07=bit piu significativo del registro B2.L2 - L2 + 1 TCCA 1010 A 1000 1000 A CRT.DA CONSOLE 20 ferenziano i vari cicli di macchina.Essi sono: s000-s001-s002- S003-S004-S042-S043-S010.
[0168] Il loro posizionamento viene comandato dalla matrice lo- gica 28 analizzando direttamente il campo F della microistru- zione presente nel registro 26 (Ro).
[0169] Il cambiamento della con- figurazione del registro 27 avviene con il fronte di salita del segnale To ed e questa la prima operazione che la matri- ce 28 effettua nell'ambito di un ciclo di temporizzazione.
[0170] I segnali s042, s043, s010 sono ottenuti dall'OR dei se guenti stati: C.
[0171] OLIVETTI C., S.p.A.
[0172] S042=S004+S002 S043 =S004 + S003 S010=S000+ S001 In Figura 5 e mostrato il diagramma di temporizzazione relativo allc stato s0i0 a partire dagli stati S000 e S001.
[0173] Naturalmente in modo analogo verranno generati gli stati s042 e s043.
[0174] E' da notare pertanto che la matrice 28 genera solo 5 stati e cioé s000-s004, mentre gli altri tre stati sono de- rivati da questi.
[0175] Si riporta ora nella TABELLA B la successione degli stati relativi alle microistruzioni della TABELLA A.
[0176] L'Ufflclale Rogahte TABELLA B F SEQUENZA DI ESECUZIONE TIPO DI MICROISTRUZIONE 000 S001 0010 S001 SALTO 0011 S001 0100 S002 S003 0101 S002 TRASFERIMENTO 0110 S002 ARITMETICHE E LOGICHE 0111 S002 S001 S004 LETTURA 1000 S004 ROM2 IN RA/RB 1001 s004 1010 S004 +VERIFICA;VARIE CONSOLE 1011 S004 SHIFT E OPER.
[0177] SU DEVIATORI 40 1100 S004 s002 1101 S004 S002 1110 S004 S002 MEMORIARAM1 1110 S004 S003 1111 S004 S003 te dallo stato interpretativo soo0.
[0178] I comandi generati dalla matrice 28 nei singoli stati verranno descritti nel seguito della descrizione.
[0179] 22 4.
[0180] REGISTRO MICROISTRUZIONI 26 (RO) Il registro 26 comprende sedici flip-flop che staticiz zano il codice della microistruzione o l'informazione letta dalla ROM all'indirizzo specificato da prefissati registri operativi 30.
[0181] I sedici flip-flop sono divisi in due gruppi di otto: quelli meno significativi sono comandati dal segnale T3N, gli altri dal segnale T3A.
[0182] S.p.
[0183] La gcnerazione dei segnali T3N e T3A avviene soltanto nei.
[0184] Jue stati in cui si esegue una lettura della ROM, e cioé: 28 OLIVETTI nello stato s000 interpretativo di tutte le microistruzioni e nello stato S001 della microistruzione R0MA.
[0185] C.
[0186] Con il fronte di salita del segnale T3N e T3A i sedici bits letti dalla ROM2 vengono staticizzati nel registro R0-26 e costituiscono il codice della microistruzione che deve es- sere eseguita.
[0187] L'informazione rimane stabile nel registro durante tutti gli stati esecutivi seguenti come mostrato in FIG.
[0188] 6.
[0189] Nello stato s001 della microistruzione R0MA come si e det- to avviene una seconda lettura della RoM.
[0190] Gli otto flip-flop meno significativi del registro 26 vengono posizionati col se- dipende dal valore del bit 07 del registro B2 (Ved.
[0191] TAB.
[0192] A) 5.
[0193] I REGISTRI OPERATIVI 30 (SCRATCH PAD I registri operativi 30 sono organizzati in due serie 23- dette A e B di sedici registri ognuno aventi una capacita di otto bit (FIG.
[0194] 8).
[0195] I bit dello stesso peso dei registri di ti in una matrice 4x4 (FIG.
[0196] 7).
[0197] Per cui si hanno otto matrici 4x4 in cui il primo bit di ciascuna di esse formano il regi- stro A0, il secondo bit il registro A1, e cosi via.
[0198] Per selezionare un registro, per esempio il registro A15 basta inviare sugli otto fili di.
[0199] selezione mostrati in FIG.7 otto comandi co24-c031 aventi la seguente configurazione 10000001.
[0200] Naturalmente i comandi C024-C031 sono generati dalla ma trice di sequenza 28 la quale tiene conto dei campi x e Y delle microistruzioni per generare sia i comandi di selezio- delle due serie di registri.
[0201] In particolare lo stato s043 se- leziona uno dei registri della serie B, mentre lo stato S042 seleziona un registro della serie A.
[0202] Lo stato so10 invece é associato a un registro lungo sedici bit formato dai registri A e B analoghi, detto "Registro Lungo" ed indicato con L.
[0203] La scrittura di un'informazione in uno dei registri 30 con le in- formazioni gia registrate nei registri 42 e 43, come e stato detto e temporizzato dal segnale T5 (FIG.
[0204] 2).
[0205] In tale istan- te i comandi CT04-CT07 generati dalla matrice logica 28 sele zionano i dati da trasferire nei registri 31 e 32 al livello di quattro bit alla volta, cioe e possibile modificare uno 24 dei registri A o B in una sua parte lasciando l'altra par te inalterata.
[0206] 6.UNITA' ARITMETICA35 L'unita aritmetica 35 esegue operazioni aritmetiche e logiche sul contenuto dei registri operativi 30.
[0207] Essa e costituita da due sommatori con parallelismo otto UA-36 e UB-37 e da una rete logica UC-38.
[0208] I due som- matori 36 e 37 (UA e UB) sono collegati fra loro in manie- ra da ottenere un sommatore unico con parallelismo 16.
[0209] Pero solo in particolari operazioni, quando cioe si opera su un registro lungo (L), sono significative tutte le sedici usci- te del sommatore.
[0210] La rete Uc-38 che puo entrare come 1° operando in UA, realizza le funzioni logiche OR, AND e OR esclusivo.
[0211] L'Unita Aritmetica 35 per mezzo di un decodificatore 50 (FIG.
[0212] 2b) fornisce inoltre informazioni sul risultato delle operazioni aritmetiche e logiche che vengono memorizzate nel deviatore DO2 in.conseguenza dei comandi CD11 e CD12 generati dalla matrice logica MLs-28.
[0213] Tale deviatore viene poi tastato ne.
[0214] Viene qui di seguito riportata in Tabella C la lista del L'Uffolale' da MLs26 che attuano il trasferimento dei dati e gli stati 25.
[0215] validita dei comandi.
[0216] TABELLA C cUOO CUO1 C ulstr.
[0217] CU02 2CUO4 CUO5 CUO6 CUO7 CUO8 CUO9 Stato di validita ADDB 0 0 0 1 x x x x S002 DCA 0 0 0 1 0 x x x x S004 AND 1 0 x 0 1 0 S002 ANDA X 0 1 0 S002 ANDB X 0 1 0 S002 ORA X 0 0 S002 ORE 1 X 0 0 1 S002 ROMA 1 0 0 X X x S001 C.OLIVETT TAB 1 0 O 0 X x x S002 TBA 1 O 0 0 X x x S002 Ing.
[0218] MAIP 1 0 1 0 X X X S004 AMIP 1 0 0 0 X X X S004 MBIP 1 C 0 0 x X S004 BMIP 1 0 0 0 0 X x S004 MBI 1 0 0 0 X X.
[0219] S004 AMI 1 0 0 0 X X x S004 BMI 1 1 0 0 0 X x S004 NOTA: x = indifferente 26 7.
[0220] I DEVIATORI (40) I deviatori 40 sono costituiti.da otto flip-flop (D00-D07) che staticizzano eventi che si verificano durante l'esecuzione te l'esecuzione dei microprogrammi per condizionare l'effettuar si di salti di indirizzo negli indirizzatori della ROM2.
[0221] Le mi- croistruzioni logiche (AND, OR ecc.) li interessano automatica mente per depositare il risultato dell'operazione logica effet tuata.
[0222] Ogni singolo deviatore puo inoltre essere posizionato a C.OLIVETTI C.,S.p.A.
[0223] ZERO oppure a UNO dalla microistruzione REDI e SEDI rispet- tivamente (TAB.A).
[0224] Nel formato di tale microistruzione (TAB.
[0225] A) i tre bits meno significativi del campo x costituiscono l'indirizzo bina- rio (00:07) del deviatore interessato.
[0226] Alcune microistruzioni (TADI-TBDI-SADI forzano negli ot- to deviatori gli otto bits del registro A o B selezionato (Ved.
[0227] TAB.
[0228] A).
[0229] Alcune microistruzioni aritmetiche e logiche (AND,OR,ORE, ADD) invece posizionano i deviatori col loro risultato quali- tativo; in particolare il deviatore DoI staticizza il verifi- carsi di un risultato nullo in uscita dall'unita aritmetica 35.
[0230] I deviatori 40 cambiano il loro stato ir due tempi di- stinti.
[0231] I deviatori DOO-D03 commutano con il segnale T4N men- tre i deviatori D04-DO7 commutano con il segnale T4A.
[0232] Viene -27 di seguito riportata la Tabella D la quale contiene le mi- croistruzioni riguardanti i deviatori 40 ed i comandi di abi litazione dei deviatori stessi generati dalla MLs28.
[0233] TABELLA D MICROISTR CDRR CU05 CD11 CD13 CD14 REDI 1 0 0 0 0 DCA 0 0 1 0 0 AND/A/B 0 7 0 7 OR/A/B 0 0 0 ORE 0 0 0 7 ADD/A/B 0 0 0 TADI 0 0 0 1 SADI 0 O 0 0 TBDI 0 0 0 0 1 8.
[0234] RETE DI SCALAMENTO (SHIFT) 41 Attraverso questa rete formata da circuiti di tipo AND-OR si possibili verso la rete di ingresso (NA, NB) ai registri operativi (31, 32).
[0235] La rete di shift 41 e formata da un grup- po di otto porte.
[0236] diviso in due sottogruppi collegati rispet- tivamente ai registri operativi RA-31 ed RB-32.
[0237] Ognuno di ta- li sottogruppi e capace di operare uno scalamento (shift) o una rotazione sui dati provenienti dai registri operativi 30 28 come e mostrato simbolicamente in FIG.
[0238] 2b.
[0239] Ciascuna porta dei due sottogruppi e indirizzata da una combinazione di tre bit delle microistruzioni sHSB e ROTB che agiscono su tale rete.
[0240] Tali combinazioni sono indicate simbolicamente nella FIG.
[0241] 2b con i simboli CZ00-CZ07, mentre le altre due porte della rete 41 sono comandate in modo diretto e ser- vono a forzare le condizioni dei deviatori oppure zero.
[0242] Un ingresso alla rete di shift 41 é costituito inoltre da una porta 70 la quale e collegata alla logica di canale 45 mediante il canale di introduzione dati D.
[0243] Tale porta 70 permette l'introduzione dei dati provenienti dalle unita periferiche tramite la logica 45 nei registri operativi 30 attraverso i nodi NA o NB.
[0244] 9: RETE DI INGRESSO AI REGISTRI OPERATIVI E' una rete a.cui fanno capo i registri operativi 31 e 32; essa permette di selezionare il byte che deve essere in viato e scritto nei registri operativi 31 e 32..
[0245] Tale rete e formata dai nodi NA e NB e dai registri BA-42 e BB-43.
[0246] I nodi NA e NB sono due reti ognuna con parallelismo otto bit che selezionano per mezzo dei comandi CA00-CA07,generati registri operativi 31 e 32.
[0247] AUfficlale Roganta Le informazioni che vengono selezionate possono proveni re infatti dalle seguenti unita: - dall'unita aritmetica 35 (due flussi), - dalla rete di shift 41 (ND), - dalla ROM2, - dalla RAM1, - dalla console 7 (due flussi) - dalla logica di canale 45.
[0248] -I registri BA-42 e BB-43 staticizzano l'informazione pre- sente sui nodi NA e NB selezionata da uno dei comandi CAOO-CAO7 in presei za del segnale T4.Il contenuto di BA-42 e BB-43 puo ve nive o meno scritto nei registri operativi 31 e 32 a seconda .OLIVETTI C., S.p.A, che saranno attuati o meno i comandi CT04CTO7 descritti in precedenza.
[0249] 1O..RETE DI COLLEGAMENTO ALLA RAM1 L'unita centrale 3 e collegata all'ingresso della memoria RAM1 tramite un nodo NO con Parallelismo 16 bit (NO00-15).
[0250] Tale nodo viene attivato durante l'esecuzione delle microistruzio- ni di scrittura in memoria e di lettura dalla memoria.
[0251] In entrambi i casi il nodo NO fornisce l'indirizzo cui si vuole accedere e solo nelle microistruzioni di scrittura esso invia il carattere (otto bits) da immagazzinare.
[0252] L'uscita della RAM1 e costituita da un nodo NC a paral- tura.
[0253] Tutte le microistruzioni che prevedono lettura o scrittu ra nella RAM1 sono eseguite in tre cicli di macchina: nel pri -30- mo ciclo sooo si svolge lo stato interpretativo, nel secon- do ciclo s004 si invia attraverso il nodo NO l'indirizzo del la RAM2 nel quale opera la microistruzione.
[0254] I registri che possono essere collegati al nodo NO co- me indirizzatori, sono il registro R0-26 se si vuole accede- re ad un indirizzo minore di 255 (cioe alla zona riservata della RAM1) oppure una coppia di registri (AB oppure BA) se si vuole accedere ad un indirizzo qualsiasi della RAM1.
[0255] Nella FIG.
[0256] 2 i comandi di indirizzamento della memoria RAMd .
[0257] C.
[0258] OLIVETTI C., S.p.A.
[0259] sono rappresentati dai comandi CMO3*CM07.
[0260] Il comando CM03 abilita il registro RO, mentre i comandi CMO4 e CMO5 abili- tano i registri RA-31 ed RB-32.
[0261] istruzione in svolgimento, in s002 oppure in s003.
[0262] Si passa allo stato S002 per tutte quelle microistruzio ni in cui e un registro B che fornisce il dato da scrivere o che riceve l'informazione letta.
[0263] si passa allo stato s003 quando invece é un registro A che viene interessato alla lettura o scrittura.
[0264] Nell'ambito degli stati s002 e s003 bisogna distinguere due differenti funzionamenti: 1) nelle microistruzioni di scrittura viene inviato, accompagnato dal segnale T2, il da- to da scrivere in memoria (all'indirizzo gia specificato nel- lo stato S004) tramite i primi otto bit del nodo N0 (N000*07) L'uscita NC della memoria non e significativa e non viene uti lizzata.
[0265] Le informazioni che possono essere.scritte possono prove nire dai registri RA-31, RB-32 oppure dalle unita periferiche rispettivamente i comandi CM04, CM06 e CM07.
[0266] 2) Nelle microistruzioni di lettura invece il nodo NO non e si re l'uscita NC che puo essere inviata in un registro B se presente lo stato (s002) ed il comando CA05 oppure in un re gistro A se é presente lo stato s003 ed il comando CA05.
[0267] Nella tabella E sono elencate le microistruzioni utiliz- zanti la RAM1 con i rispettivi comandi e stati generati dalla MLS28.
[0268] TABELLA E Stato S004 Stato S002 Stato S003 MICRO COMANDI COMANDI COMANDI ISTRUZIONE CMO3.CMO4 CMO5 CMO4 CMO6 CM07 CMO4 CMO6 CM07 AMD 1 0 1 0 0 MAD 1 0 0 x x x MAIP 0 1 x X MBIP 0 1 X X X AMI 0 1 1 0 0 AMIP 0 1 0 0 BMI 0 BMIP 0 0 32 Nella descrizione precedente sono stati mostrati tutti i blocchi dell'unita centrale 3, nonche tutti i comandi ge- nerati dalla MLs28 per gestire il flusso delle informazioni tra i blocchi stessi.
[0269] Non e stata pero mostrata in dettaglio me righe le uscite dei registri 26 e 27 e come colonne icon duttori su cui sono generati i comandi C.
[0270] La MLs28 e condi- zionata inoltre dal temporizzatore 20 per generare i comandi S.p.A nella successione voluta.
[0271] Per maggiori dettagli sulla MLs28 si fa riferimento al volume "Microprogramming, Principles and Practices" di Samir S.
[0272] Husson edito dalla Prentice-Hall Inc.
[0273] Englewood Cliff N.J., Stati Uniti d'America nel 1970.
[0274] Nel capitolo 2 e spiegato con riferimento ad esempi concreti il principio con cui ven- gono generati una sequenza di comandi atti ad eseguire micro- istruzioni.
[0275] 11.
[0276] LOGICA DI CANALE 45.
[0277] La logica di canale 45 e un complesso di circuiti atti a gestire ed a coordinare lo scambio dei dati e comandi tra la unita centrale 3 e le unita periferiche 4 ad essa collegate, ad esclusione della console 7 la quale ha l'accesso diretto al- l'unita centrale 3 tramite il nodo NA-NB.
[0278] Una descrizione dettagliata della logica di canale 45 e ri le 1972 a nome della richiedente.
[0279] Ora si vuole solo puntualizzare che la logica di canale presenti neli'elaboratore sulla base di un ordine priorita- rio prestabilito.
[0280] La ragione di aver inserito la logica di canale 45 e prioritario.
[0281] Nel caso particolare si hanno quattro livelli prioritari .
[0282] C.
[0283] OLIVETTI C., S.p.A.
[0284] di microprogrammi e cioé: -Il microprogramma principale o di priorita 4 che ha normal- mente la funzione di interpretare ed eseguire le istruzioni del programma elaborando i dati ed avviando le operazioni di Ing.
[0285] ingresso e di uscita; -Un microprogramma di priorita 3, normalmente destinato ad eseguire operazioni che non rientrano nella sequenza temporale predeterminata del programma, ad esempio predisposizioni di in terruzioni del programma, gestione microprogrammata di opera zioni di input-output; -Microprogrammi di priorita 2 ed 1; normalmente destinati ad effettuare il trasferimento di dati da un'unita periferica alla memoria o viceversa.
[0286] tore come riportato nella FIG.
[0287] 8.
[0288] 34 il livello 3 dal registro L01, il livello 2 dal registro A13 ed il livello 1 dai registro A12.
[0289] Il trasferimento.dei dati dalle unita periferiche alla unita centrale 3 pu avvenire in due modi.
[0290] Il primo é gesti- to dalla porta 39 che tramite il nodo NO (FIG.
[0291] 2c) permette l'accesso diretto alla RAM1.
[0292] Tale porta e controllata dalle microistruzioni di accesso diretto alla RAM1 gia descritte in precedenza.
[0293] Il secondo modo e gestito dalla porta 70 del nodo ND-41 e permette l'accesso ai registri operativi 31 e 32 tra- mite i nodi NA ed NB.
[0294] I dati ed i comandi che dalle unita pe- S.P.
[0295] riferiche vengono registrati nei registri operativi 30 e 31 OLIVETTI C sono elaborati direttamente dal gruppo di microistruzioni che lavorano sui registri.
[0296] DESCRIZIONE DETTAGLIATA DELLA RAM1 E DELLA ROM2 Viene ora fatta una descrizione della parte di RAM1 uti- RAM1 e divisa in due zone.
[0297] La prima zona detta zona riservata (zRM) e a disposizione del microprogramma interprete e dei mi- croprogrammi che gestiscono le unita periferiche e dei program- mi di DBG.
[0298] La seconda zona e invece destinata a registrare i program mi da eseguire, i dati sui quali questi programmi operano ed i risultati delle elaborazioni.
[0299] Prima di descrivere in dettaglio la RAM1 bisogna accennare brevemente alle.operazioni svolte da un particolare microprogram 35 ma, residente nella ROM2, detto interprete.
[0300] Tale microprogramma che verra descritto in dettaglio in seguito, compie le seguen ti operazioni: Interpreta l'istruzione in corso (Fase ALFA).
[0301] - Riconosce le interruzioni di programma.
[0302] - Lancia il programma di interruzione riconoscendo se esso e registrato nella RAM1 o nella ROM2.
[0303] - Disabilita tutte le interruzioni, compresa quella del programma in fase di lancio.
[0304] - Abilita la lettura da RAM1 o da ROM2 a seconda che il .C.OLIVETTI C.,S.p.A.
[0305] programma interrompente risiede nella RAM1 o nella RoM2.
[0306] - Esegue la lettura dell'istruzione da RAM1 o da ROM2.
[0307] - Riconosce i formati delle istruzioni.
[0308] - Estrae gli operandi.
[0309] - Esegue le istruzioni lanciando i microprogrammi ad esse associati (Fase BETA).
[0310] In particolare la zRM comprende un registro PsR-300 (FIG.9) che contiene i parametri del programma in corso di elaborazione, esso e costituito dai seguenti registri:(Ved.TAB.
[0311] F) Un registro base RB-310 che contiene l'indirizzo di inizio della zona di memoria disponibile per i normali programmi.
[0312] indirizzi degli operandi espressi nelle istruzioni.
[0313] Esso vie- ne modificato.da apposite istruzioni durante l'esecuzione di un programma.
[0314] 36- TABELLAF REG.N° NOME NBYTE INDIRIZZO SIGLA DAL A 310 REG.
[0315] BASE RB 2 OOBO 00B1 311 POINTER 1 P1 2 00B2 00B3 312 POINTER 2 P2 00B4 00B5 PSR-300 2 313 CONDIZ, PROGRAMMA CP 1 00B6 314 PRENOTAZIONE INTERR.
[0316] PI 1 00B7 315 MODIFICA ISTRUZIONE MI 00B8 Ing.
[0317] C.
[0318] OLIVETTI C., S.p.A.
[0319] 1 320 REG.BASE RB 2 OODO OOD1 321 POINTER1 P1 2 0OD2 0OD3 322 POINTER 2 P2 2 00D4 0OD5 OPSR-301 323 CONDIZ.
[0320] PROGRAMMA CP 7 0OD6 324 COD.
[0321] INTERR.
[0322] CI 1 0OD7 325 MODIFICA ISTRUZIONE MI 1 0OD8 327 IND.OPSR IR 2 OODA OODB 333 CONDIZ: PROGR.
[0323] CP 1 OOBC IPSR-302 334 ABILIT.
[0324] INT.
[0325] AI 1 00BD 335 IND.
[0326] INTERR.
[0327] II 2 OOBE OOBF miale Rogante 350 IND.STOP IS 2 OOEC OOED 37 TABELLA F (continua) REG.N° NOME SIGLA INDIRIZZO N°BYTE DALA 351 BYTE SERV.
[0328] DBG BSD 1 00C7 352 REGISTRO LAVORO RL 8 00A8 OOAF 353 INDIRIZZ.TAB.RIFER.
[0329] ITR 3 0OD4 0OD6 38- Registri Pointer P1-311 e P2-312; sono dei registri uti lizzati da particolari istruzioni per calcolare gli indiriz zi assoluti degli operandi.
[0330] Tali indirizzi si ottengono som mando P1-311 o P2-312 con RB-310.
[0331] I1 loro contenuto pu es- sere modificato da particolari istruzioni.
[0332] il seguente significato: I bit 00, 01 sono detti codice, di condizione (cc) e ven gono compilati dalle istruzioni aritmetiche e logiche per me- morizzare i risultati significativi.
[0333] Tali condizioni vengono S.p.A poi saggiate da altre istruzioni per eseguire salti su condi- C.OLIVETTI C., zione.
[0334] Il bit 03 viene utilizzato dall'interprete per stabili re se l'istruzione da eseguire deve essere letta dalla RAM1 (bit 03=1) o dalla ROM2 (bit 03=0).
[0335] Tale bit e normalmente ad terprete quando quest'ultimo riconosce un'interruzione generata dall'azionamento della chiave 100 la quale richiama un programma di DBG residente in ROM2 per indicare che le istruzioni di tale programma devono essere lette nella ROM2.Il bit 05 e normalmente ad uno e viene utilizzato per abilitare le interruzioni del programmatore per richie ste diDBG, e posto a zero dall'interprete quandol'interruzione é attuata.
[0336] I bit 02, 04, 06, 07 non vengono utilizzati dai programmi di DBG, e servono per abilitare altre cause interrompenti.
[0337] Byte di Prenotazione Interruzioni (PI-311 di FIG.
[0338] 9).
[0339] E' utilizzato dall'interprete per attuare una richiesta -39- di interruzione contenuta in esso.
[0340] Un'interruzione e attuata se l'AND tra PI e CP e diverso da zero, come verra spiegato in seguito (paragrafo interprete).
[0341] Esso viene compilato dai microprogrammi associati a cause in- terrompenti sia provenienti dalla U.C.-3 che dalla U.P.-4.
[0342] In particolare il bit O5 indica un'interruzione da DBG.
[0343] Il modo con cui viene forzato ad "1" il bit 05 del byte di Prenotazione interruzione, verra descritto in dettaglio in seguito nel paragrafo riguardante il byte di servizio di de- bugging (Tabella F).
[0344] Byte di modifica Istruzione (MI-315 di FIG.9) byte dell'istruzione da eseguire e pu venire compilato dal programmatore in funzione di risultati di istruzioni pre- cedenti.
[0345] I byte 316, 317 e 318 vengono utilizzati per altri scopi che non interessano l'invenzione e perci non vengono descritti.
[0346] La ZRM comprende inoltre un altro registro.0PSR-301 che ser ve a contenere i parametri del programma interrotto.
[0347] L'0PsR-301 e compilato dall'interprete prelevando i.registri ed i.byte cor- rispondenti dal PsR-300.
[0348] Quando il programma di interruzione ter- mina, l'ultima istruzione e sempre di ripristino del programma interrotto, e cioé e una istruzione che trasferisce 0PsR-301 in PSR-300.
[0349] In particolare 0PSR-301 comprende: I registri RB-320, P1-321, P2-322, CP-323, MI-325, 326, i 40 quali sono compilati con il contenuto dei corrispondenti re- gistri 310-316 di PsR-300.
[0350] Il registro 324 contiene il codice di interruzione CI (FIG.
[0351] 9b) cioe il codice della causa interrompente in corso di elaborazione nel programma in esecuzione.
[0352] Esso viene com- rompente.
[0353] Le cause interrompenti specificate dal C.I.
[0354] sono state divise in cinque classi omogenee ciascuna trattata da un microprogramma diverso.
[0355] A ciascuna classe corrisponde un ,S.p.A.
[0356] bit di C.I., in particolare le classi 1 e 2 corrispondono ognuna ad una sola causa interrompente e sono identificate dal bit 01 e 02 rispettivamente.
[0357] Le classi 3, 4, 5 sono iden- tificate dal bit 05, 06, 07 rispettivamente e ciascuna compren- de piu cause interrompenti (al piu 16 cause identificate dai bit 00-03.
[0358] Lo scopo di registrare in OPsR-301 il C.I.
[0359] della causa interrompente e dovuto al fatto che il ripristino o meno del programma interrotto dipende proprio dal tipo di interruzio- ne.
[0360] Per esempio se la causa interrompente e tale che il pro gramma interrotto non pu essere ripreso, allora il program- ma di interruzione termina chiamando l'operatore.
[0361] Solo dopo l'intervento dell'operatore il programma interrotto potra es- fficlale sere ripreso.
[0362] Il registro IR-327 contiene l'indirizzo di rientro di PsR-300 a cui corrisponde l'istruzione.che deve essere ese .41.
[0363] guita al momento del rientro.
[0364] Esso e compilato dall'interprete trasferendo il conte- nuto del registro operativo L07 (indirizzatore di programma) all'atto dell'interruzione.
[0365] La zRM comprende inoltre un registro IPsR-302 che serve a contenere i parametri del programma di interruzione.
[0366] Esso e formato da un byte Cp-333 che indica le condizioni di program- ma ad esso associate.
[0367] Il byte CP ha il significato descritto in figura 9a e viene trasferito dall'interprete nel registro Cp-g 3 al momento dell'abilitazione del programma interrompen te Il registro IPsR-302 comprende inoltre l'indirizzo del programma di interruzione II-335 (Fig.
[0368] 9) il quale caricato dall'interprete nel registro L07 dei registri 30 di Fig.
[0369] 2b se il programma di interruzione e registrato nella RAM1.
[0370] Il registro 302 comprende inoltre il byte di abilitazio- ne interruzione AI-334 riportato in Figura 9c nel quale i bit lativi alle classi di interruzione rispettive sono registrati nella RAM1, se al livello zero indicano che i programmi sono registrati nella ROM2.
[0371] codice di interruzione CI ed il byte di Abilitazione dell'In terruzione AI.
[0372] se l'AND logico e zero, significa che il program ma associato all'interruzione e registrato in ROM2, se e uno, -42 e registrato in RAM1.
[0373] Nel primo caso l'interprete forza il contenuto del re- gistro II-335 nel registro operativo L07, nel secondo caso forza in esso l'indirizzo della ROM2 di inizio della zona B riservata ai programmi di DBG.
[0374] tiene l'indirizzo di sToP a cui l'operatore desidera arrestare l'elaborazione del programma come accennato nella parte inizia le e come verra meglio spiegato in seguito.
[0375] Tale registro viene compilato da un programma di DBG utilizzando i dati impostati C.OLIVETTI C.,S.p.A.
[0376] in tastiera dal programmatore.
[0377] Il BsD-351 e riportato in dettaglio in Figura 9d.
[0378] I bit utilizzati sono il bit 01 il quale indica(come verra me- Ing.
[0379] glio spiegato nel capitolo dell'interprete) se deve essere dell'in- terruzione.
[0380] Se tale bit e.uguale a zero l'istruzione e ese- guita, altrimenti - viene t eseguito il programma di interruzione.
[0381] Il bit 02 indica se e stato prenotato uno stop, esso viene compilato dal programma di DBG associato allo stop indirizzato.
[0382] Il bit O3 indica se il commutatore a chiave 1o0 e in posizione normale (bit 03=0) o in posizione debugging (bit 03=1).
[0383] Esso viene do la posizione delia chiave 100.
[0384] 43 TABELLA G IND.SIMB.
[0385] M-ISTRUZ.
[0386] CODICE OPERANDO II OPERANDO IDISO CAC7 MAD A10 CC7 92F7 CRTB B02 CF7 6A28 ANDA A10 B02 A888 TCCA A.08 B8E7 TADI A08 9200 C.
[0387] OLIVETTI C., S.p.A.
[0388] CRTB B02 COO 2236 SADO DO2 IDISAO 9208 CRTB B02 C08 IDISAO 6A2E ORA A10 B02 DAC7 AMD A10 CC7 Ing.
[0389] C2B7 MAD A02 .CB7 CRTB B02 CDO 6228 ANDA A02 BO2 BAE7 TADI A10 9230 CRTB B02 C20 3240 SADI DO2 IDISA1 3340 SADI DO3 IDISA1 IDISA1 622E ORA A02 B02 2 B 7 AMD A02 CB7 44 Con riferimento alla Fig.
[0390] 2c, la console 7 tramite la chiave 100 attiva un interruttore.
[0391] 60 il quale e collegato tramite il filo 61 facente parte del canale 62, direttamen te al nodo NA.
[0392] Se la chiave 1OO e nella posizione NORMAL (N), l'inter- ruttore 60 e aperto e quindi il filo 61 e a livello zero.
[0393] Que- sto corrisponde come si e detto al funzionamento normale del- la macchina.
[0394] Quando invece la chiave 1o0 e in posizione di DEBUGGING (DBG), l'interruttore 6O viene chiuso, per cui il filo 61 e al livello uno.
[0395] .C.
[0396] OLIVETTI C., S.p.A.
[0397] Il temporizzatore 20, genera ogni 60 millisecondi un se- gnale TM il quale provoca un'interruzione del microprogramma microistruzione indirizzata dal registro Lo1 (indirizzatore del microprogramma di livello 3).
[0398] Tale microistruzione fa par- te di una sequenza predefinita di microistruzioni che corri- sponde alle varie condizioni esterne da controllare durante lo svolgimento di un programma.
[0399] Mediante una microistruzione MAD, viene caricata in Ai0 la cella di RAM2 all'indirizzo C7, cioe il byte servizio DBG, BSD-351.
[0400] Viene poi caricato tramite una CRTA il numero "F7"- L'Uficlale Royanie 11110111 nel registro B02.
[0401] Tramite una ANDA viene trasferitc in A1O, l'AND logico tra BSD e "F7" e cioe in A1O si ha ilBSD 45 con il bit b03=0.
[0402] Indi mediante una microistruzione TcCA viene trasferito in A08 il byte presente sul canale 62.
[0403] (Vedi FIG.
[0404] 2).
[0405] In par- ticolare se la chiave 100 si trova in posizione DBG, il filo 61 (che corrisponde al bit 02 del canale 62) e al livello '1' Tramite una TADI, il byte sul canale 62 viene trasferito sui deviatori 40.
[0406] Indi mediante una CRTB, viene forzato il numero "00" nel registro B02.
[0407] Successivamente viene saggiato il li- S.p.A.
[0408] ne dl filo 61 che corrisponde alla posizione DBG della chia- C.
[0409] OLIVETTI C., forzato nel registro B02 il numero '08' = 00001000 e viene -8ul tenuto del registro A10 ed il numero 8'.
[0410] E' da notare che nel registro A10 si trovava registrato ilBSD con il bit b03= 0, quin- di il risultato della microistruzione ORA e di forzare ad uno il bit b03.
[0411] Se invece il bit sul filo 61 era al livello zero, non ve- niva eseguita la CRTB che forzava 00001000 in B02, per cui l'OR logico veniva eseguito tra il contenuto del registro A10 ed il numero '00000000'; ci corrisponde a lasciare a zero il bit O3 di BSD.
[0412] Dopo tali operazioni, mediante una AMD viene riscritto nella posizione gC7 (BSD-351) il BSD cosi modificato.
[0413] In de- finitiva se la chiave 1OO e in posizione NORMAL, si ha ilbit -46.- bO3 = 0, se invece e in posizione DBG, bO3 = 1.
[0414] Lo stesso mi- di Prenotazione Interruzione (PI).
[0415] Mediante una microistruzio ne MAD viene trasferito nel registro A02 il byte registrato all'indirizzo B7 della RAM1, e cioe il byte PI - 314.
[0416] Indi mediante le due microistruzioni CTRB ed ANDA viene azzerato il bit 05 di PI.
[0417] Mediante una TADI viene trasferito sui deviatori 40 il contenuto del registro.A10, e cioe il BSD modificato in precedenza secondo la condizione della chiave 100..1i console.
[0418] Viene poi scritto con una CRTB il numero '20' = 00100000 nel registro BO2.
[0419] Indi mediante due SADI vengono saggiati che corrispondono rispettivamente all'aver prenotato un in- posto ad uno il bit bO5 del byte PI, il quale mediante una AMD viene riscritto nella RAM1.
[0420] Se invece ambedue i bit bO2 e bO3 di BSD erano al livello zero, mediante una CRTB veniva forzato nel registro B02 il numero '10' = 00010000 che corri sponde ad un'altra causa interrompente che non interessa li1 DBG, e percio non viene descritta.
[0421] La zRM comprende inoltre un registro di 8 byte detto re- gistro di lavoro (RL - 352 in Fig.
[0422] 9) che viene utilizzato co 47 lo svolgimento di alcune istruzioni e per fornire, a fine i- struzione, un risultato che non pu essere contenuto nei re- gistri degli operandi (per esempio ii resto della divisione).
[0423] La zRM comprende inoltre un registro 359 di otto byte detto registro condizioni RC.
[0424] Ciascun byte e diviso in due se mibyte, i quali identificano particolari condizioni del pro- gramma.
[0425] Il registro 359, infatti viene utilizzato per racco gliere tutte le condizioni significative del programma che sor gono durante l'esecuzione di istruzioni interne o esterne e che, dato il loro numero elevato, non possono essere espresse nel codice di condizione oppure che e opportuno memorizzare indipendentemente da esso.
[0426] Di tutti i semibyte si spiega soltanto il contenuto del nono poiche esso viene utilizzato dai programmi di DBG come verra spiegato in seguito.
[0427] Il nono semibyte occupa i primi 4 bit della cella gcB e viene utilizzato dalle istruzioni di che ha concluso una introduzione dati da tastiera.
[0428] La zRM comprende inoltre un registro di un byte AB-370 il quale identifica le barre 102 che sono abilitate dal.programma.
[0429] In particolare esso viene compilato, come si vedra in seguito, dai programmi di DBG per abilitare le barre SO, S1, s2, S6 poiche esse soltanto hanno significato durante lo svolgimento del DBG.
[0430] La zRM comprende inoltre un gruppo di otto registri 48 360 - 367 (Fig.
[0431] 9) i quali vengono normalmente utilizzati dai programmi nel modo seguente.
[0432] I registri da 360 a 363, vengo- i risultati intermedi durante le operazioni di moltiplicazione e divisione ed i risultati che non possono essere contenutinei registri degli operandi.
[0433] Piu precisamente le istruzioni di mol tiplicazione e divisione sono realizzate da microprogrammi che operano su detti registri.
[0434] E' da notare che il contenuto di ta li registr i, non e significativo alla fine dell'istruzione che li va utilizzati, in quanto tutte le condizioni ed i risultati S.P.A significativi sono trasferiti in aree di memoria esterne alla 8 OLIVETTI zRM indirizzate dagli operandi delle istruzioni specifiche.
[0435] I registri 364 e 365 sono utilizzati dalle istruzioni di EDITING di un registro, e cioé contengono tutti i caratteri re iativi alla punteggiatura, i caratteri algebrici (+, -), gli spazi ecc.
[0436] necessari durante la stampa di un'area di memoria.
[0437] Essi vengono richiamati dagli operandi di tali istruzioni, ed il loro contenuto non e piu significativo alla fine di tale i struzione.
[0438] I registri 366 e 367, vengono utilizzati dal programma di DBG come espansione del registro 0PsR-301.
[0439] Servono cioe a caricare condizioni significative del programma interrotto che non possono essere contenute nel registro OPsR 301.
[0440] E' da notare che mentre i registri da 360 a 365 al termi ne dell'istruzione che li utilizza non contengono dati signifr cativi, i registri 366 e 367 contengono dati significativi 49 fini della ripresa del programma interrotto e quindi possono es sere usati dai programmi DBG solo in casi particolari che ver- ranno precisati in seguito.
[0441] E' da notare inoltre che i registri da 360 a 367 non devo% in- dicate in Fig.
[0442] 9, ma possono essere in una qualunque zona della memoria.
[0443] Una delle caratteristiche dell'invenzione sta infatti nell'individuare nella RAM1, mediante i rispettivi indirizzi, un certo numero di registri (nel nostro caso otto) i quali non ,S.p.A.
[0444] contengono dati significativi alla fine dell'esecuzione delle istruzioni e di utilizzare tali registri come registri di appog .OLIVETTI gio dei programmi di debugging.
[0445] Tutto ci naturalmente e fatto in modo automatico e senza intervento del programmatore, il qua Ing.
[0446] le deve soltanto azionare la chiave 100 e le barre 102.
[0447] Si precisa inoltre che come registri di appoggio dei pro- grammi di DBG non devono necessariamente essere utilizzati i re gistri 360 - 367, ma possono essere utilizzati registri riserva ti esclusivamente ai programmi di DBG i quali possono essere al locati sia in zRM, sia neila memoria libera o anche possono es- sere registri esterni alla memoria.
[0448] La zona libera di memoria, cioe la zona immediatamente suc cessiva alla zRM contieneinoltre una zona detta tabella dei rife rimenti la cui ubicazione e definita da un registro di zRM.
[0449] Ta- 50 riferimenti viene indirizzata da alcune istruzioni per calco- lare gli indirizzi degli operandi.
[0450] La zona libera di memoria, immediatamente successiva alla tabella riferimenti, contiene 16 registri di otto byte ognuno, detti registri privilegiati.
[0451] Essi infatti possono essere direttamente indirizzati dalle i- struzioni citando in esadecimale il loro numero di riferimen- ta in modo libero.
[0452] La ROM2 e divisa in due zone A e B (Fig.
[0453] 9).
[0454] La zona S.p.A A comprende tutti i microprogrammi necessari al funzionamento C.
[0455] OLIVETTI dell'elaboratore, la zona B comprende i programmi di DBG .
[0456] MICROPROGRAMMA DI INTERPRETAZIONE DELLE ISTRUZIONI (INTERPRETE) C.
[0457] Come e stato detto i programmi registrati nella RAM1 vengo Ing.
[0458] no eseguiti istruzione per .istruzione.
[0459] Ciascuna istruzione vie- ne a sua volta eseguita in due fasi: una fase interpretativa (Fase ALFA) ed una fase esecutiva (fase BETA).
[0460] La fase inter- pretativa é comune a tutte le istruzioni e viene eseguita da un apposito microprogramma, detto interprete, registrato nella zo- na A della ROM2.
[0461] Tale fase termina con il riconoscimento del so ha letto dalla RAM1 o dalla ROM2 e con la preparazione degli operandi nei registri operativi 30.
[0462] Tale microprogramma viene pertanto richiamato all'inizio di ogni istruzione dalla micro- istruzione di fine esecuzione dell'istruzione appena eseguita.
[0463] 51 In particolare quindi l'esecuzione di una qualsiasi istru- zione del programma che l'elaboratore esegue avviene nelmodo seguente: L'ultima microistruzione del microprogramma che ha esegui- to l'istruzione precedente, é una microistruzione SAI di salto incondizionato all'indirizzo IALFA (Tabella H) cioe alla pri- ma microistruzione del microprogramma interprete.
[0464] Qui di seguito viene riportata la tabella H in cui sono e- lencate le microistruzioni relative al microprogramma interpre- S.p.A, te.
[0465] La prima colonna indica il nome simbolico degli indirizzi OLIVETTI di salto che verranno usati come operandi nelle microistruzioni decimale; la terza, quarta e quinta riportano l'istruzione sot to forma simbolica e cioé, rispettivamente, la funzione esple- tata, il primo operando ed il secondo operando.
[0466] si fa notare che se un operando é indicato con la lettera C seguita da due caratteri alfanumerici, cio significa che l'o- perando e il numero esadecimale (un byte) che segue la lettera C.
[0467] alle Fig.
[0468] 10a, 10b e 10c.
[0469] Mediante le prime due microistruzioni CRTA e AMD, viene forzata all'indirizzo B8 della RAM1 il carattere CRT '00', cioé viene posto a zero il byte di modifica istruzione (blocco 52- TABELLA H IND.SIMB M-ISTRUZ.
[0470] CODICE IOPERANDO II OPERANDO IALFA 8800 CRTA A08 COO D8B8 AMD A08 CB8 IALFAJ CEB6 MAD A14 CB6 5EFC TAB A14 B15, CEB7 MAD A14 CB7 6EF0 AND A14 B15 21E1 SADO DO1 IINTE IALFAR CEB6 MAD A14 CB6 BEE7 TADI A14 3313 SADI D03 IALFA7 472F SLL L07 .L02 7 800 ROMA A08 58EC TAB A08 B14 7800 ROMA A08 5.8FC TAB A08 B15 427F SLL L02 L07 0215 SAI IALFA2 IALFA1 E7E5 MBIP MO7 B14 L'Ofclcle Roganta E7F5 MBIP MO7 B15 IALFA2 C8B8 MAD A08 CB8 B066 REDI DOO -53- TABELLA H (Continua) IND.SIMB.
[0471] U-ISTRUZ.
[0472] CODICE I OPERANDO II OPERANDO 68F5 ADDB A08 .B15 9202 CRTB B02 CO2 52E3 TBA A02 B14 7B00 ROMA A11 7200 ROMA A02 5B2C Ing.C.
[0473] OLIVETTI C., S.p.A.
[0474] TAB A11 B02 54 -200.
[0475] di Fig.
[0476] 10a); ci e necessario dovendo iniziare una nuova istruzione.
[0477] Mediante le due microistruzioni successive, cioe MAD e TAB, viene trasferito nel registro operativo B15 del grup- po di registri 32 di figura 2b il contenuto della cella pB6 la quale come si e detto contiene il byte delle condizioni di programma CP-313 (blocco 201).
[0478] .Con la microistruzione MAD, viene trasferito nel registro A14 del gruppo 31 il contenuto della cella B7 nella quale e registratc il byte di prenotazione interruzioni PI-3i4 (blocco 201 g.
[0479] C.
[0480] OLIVETTI C., S.p.A.
[0481] visto in forma codificata ie cause che possono provocare una interruzione del programma in esecuzione.
[0482] Indi viene eseguito dalla microistruzione AND, l'and logico tra C.P.-313 e P.I.-314 (bivio logico 202).
[0483] Come spiegato in precedenza (vedi tabella A), la microistru zione di AND manda ad uno il deviatore DO1 del gruppo di devia- tori 40 se il risultato dell'AND e zero.
[0484] Con la microistruzio- ne successiva sADO, viene saggiato il contenuto del deviatore D01, e se questi e al livello logico zero (cioe se e stata pre notata una interruzione), viene eseguito un salto all'indirizzo dato dal nome simbolico IINTE (blocco 250) in cui e registrata la prima microistruzione di un microprogramma che tratta interruzioni (Vedi Tabella J) Se invece il deviatore e al li- -55 TABELLA J IND.SIMB.
[0485] u-ISTRUZ CODICE I OPERANDO II OPERANDO IINTE 6EF4 ANDB A14 B15 CAC7 MAD A10 CC7 BFF7 TBDI B15 BAE7 TADI A10 2161 SADO DO1 IINTE? 2267 SADO DO2 IINTE2 3367 SADI D03 IINTE2 C8ED MAD A08 CED 588C TAB A08 B08 C8EC MAD A08 CEC 6873 ORE A08 .B07 2161 SADO DO1 IINTED 6783 ORE A07 B08 3167 SADI DO1 IINTE2 IINTE! 9A02 CRTB B10 CO2 6AAE ORA A10 B10 DAC7 AMD A10 CC7 CAB6 MAD A10 CB6 5AFC TAB A10 B15 0207 SAI IALFAR IINTE2 9AFD CRTB B10 CFD 56 TABELLA J (continua) IND.SIMB.
[0486] U-ISTRUZ.
[0487] CODICE IOPERANDO II OPERANDO 6AA8 ANDA A10 B10 DAC7 AMD A10 CC7 9D04 CRTB B13 C04 IERRO1 8EB0 CRTA A14 CBO 9800 CRTB B08 COO 88D0 CRTA A08 CDO 8BOA CRTA A11 C.OLIVETTI C., S.p.A.
[0488] COA INTER1 EE9D MAIP A14 A09 E899 AMIP M08 A09 AB4A DCA A11 2174 SADO DO1 .INTER1 Ing.
[0489] E871 BMIP M08 B07 E87B AMI M08 A07 88D7 CRTA A08 C07 E8D3 BMI MO8 B13 DBB8 AMD A11 CB8 C9BD MAD A09 CBD clale Rogant 5BD2 TBA A11 B13 INTER5 6B90 AND A11 B09 218E SADO DO1 INTER2 8B00 CRTA A11 COO 57 TABELLA J (continua) IND.SIMB.
[0490] u-ISTRUZ.
[0491] CODICE IOPERANDO IIOPERANDO INTER4 DBB6 AMD A11 CB6 INTER4 9717 CRTB B07 C17 8700 CRTA A07 COO 2000 SAI IALFA INTER2 C9BC MAD A09 CBC D9B6 AMD A09 CB6 C7BE MAD A07 CBE 577C TAB A07 B07 C.OLIVETTI C., C7BF MAD A07 CBF 2000 SAI IALFA -9u1 -58- IaRAM1.
[0492] IINTE o il proseguimento del microprogramma interprete.
[0493] Se il byte P.I.
[0494] e 0000 0000, l'AND con il byte C.P.
[0495] sara senz'altro 0000 0000 per cui il deviatore D01 e al livello 1 ed il salto non viene quindi eseguito.
[0496] La condizione P.I.0000 0000 indica che nessuna interruzione é stata prenotata.
[0497] se al- meno un bit di P.I.
[0498] é al livello uno, ed il corrispondente bit di C.P.
[0499] e anch'esso ad uno cioe quella particolare microinter C.
[0500] OLIVETTI C., S.p.A.
[0501] ruz'one e abilitata, allora l'AND tra C.P.
[0502] e P.I.
[0503] avra ad uno il/bit dello stesso peso di quello di P.I.
[0504] se ad esempio e stata prenotata una interruzione tramite la chiave 100 di con sole (fig.
[0505] 1b), come si e visto il byte P.I.
[0506] ha la configura- zione 0010 0000.
[0507] A sua volta il byte C.P..é stato posiziona- to dal programmatore con la configurazione 1x1x xxxx, ruzione di DBG, per cui l'AND tra C.P.
[0508] e P.I.
[0509] sara OO1O OOOO.
[0510] Di conseguenza Do1 sara forzato a zero dalla microistruzione AND e quindi si avra il salto ad IINTE.
[0511] Se non c'é stata interruzione, mediante le microistruzioni MAD e TADI, viene trasferito sui deviatori 4O, l'intero byte C.
[0512] P.
[0513] (blocco 203).
[0514] Viene quindi controllato con una microistru- zione SADI se il deviatore DO3 e al livello uno o al livello zero (bivio logico 204).
[0515] Come e stato detto il bit 03 del byte C.P.
[0516] indica se la -59- lettura della istruzione deve essere fatta dalla RAM1 o dalla ROM2.
[0517] Se la lettura dell'istruzione deve essere fatta dallaRAM1 (caso dei programmi normali), con le due microistruzioni MBIP dirizzo contenuto nel registro lungo L07 (blocco 205).
[0518] Il regi- stro 207 ad ogni lettura (MBIP) viene incrementato di uno.
[0519] I due byte vengono inoltre trasferiti nei registri B14 e B15 dei registri c erativi 32.
[0520] Da quanto detto si vede come il registro Lo7 vunziona da indirizzatore di programma per.
[0521] le istruzioni, yd's OLIVETTI po ogni lettura.
[0522] Nel caso inoltre che l'istruzione precedente a quella in corso era una istruzione di salto, essa gia aveva com pilato, tramite un apposito microprogramma eseguito nella fase BETA, nel registro LO7 l'indirizzo della RAM1 della istruzione a cui saltare.
[0523] In conclusione sia per l'indirizzamento sequen- ziale, sia per l'indirizzamento con salto; il registro Lo7 con- tiene sempre l'indirizzo della RAM1 della istruzione successiva.
[0524] Se l'istruzione in corso deve essere letta dalla ROM2 (ca- so dei programmi di DBG) il bit O3 delle condizioni di program- ma era stato forzato a zero per cui il salto in IALFA1 non vie- ne eseguito.
[0525] Viene per eseguita la microistruzione sLl che scambia il contenuto del registro L07 con quello del registro L02 (blocco 206).
[0526] Indi con due coppie successive di istruzioni ROMA e TAB vengono trasferiti nei due registri B14 e B15 i pri- 60 mi due bytes dell'istruzione letta (blocco 206).
[0527] E' da notare che lo scambio di L07 e L02 e reso necessario dal fatto che la microistruzione ROMA che esegue la lettura dal la ROM2 viene indirizzata esclusivamente dal registro LO2.
[0528] Essa gni lettura.
[0529] Dopo la lettura del primo e secondo byte della i- struzione viene ripristinato il contenuto del registro L07 ese- guendo una microistruzione di scambio SLL, mediante la quale il registro L02 viene scambiato con il registro L07.
[0530] E' da notare pertanto che in ambedue i casi, lettura dalla RAM1 e lettura dal la ROM2, nei due registri B14 e B15 dei registri 32 si trovano registrati i due bytes della istruzione da eseguire e che dopo struzione successiva.
[0531] Dopo di ci con tre.microistruzioni MAD, Ing.
[0532] REDI, ADDB (blocco 207 di Fig.
[0533] 10a) viene modificato il secondo byte dell'istruzione letta secondo il byte di modifica istruzio ne (MI) precedentemente registrato nella cella B8.
[0534] Mediante le microistruzioni CRTB e TBA (bloeco 208), il primo byte dell'istruzione e usato per calcolare un indirizzo di ROM a partire dal quale sono scritte coppie di byte che corrispondono ai formati delle istruzioni(1° semibyte) e gli in- dirizzi delle fasi esecutive (2-,3° e4- semibyte) associati a gruppi terizzanti l'istruzione.
[0535] Indi con due microistruzioni RoM con- secutive, vengono letti i due byte associati alla istruzione 61 vengono trasferiti nel registro operativo L02 (fig.
[0536] 8).
[0537] A que- sto punto l'istruzione contenuta in.Lo2 viene esaminata da un microprogramma che riconosce uno dei sette formati possibili riportati in Fig.
[0538] 10a.
[0539] posta da un codice di funzione F, due bit I1 e I2 che indicano o indiretto la RAM1 e due campi di quattro bit R1 e R2 che in- dicano due costanti.
[0540] se I1 = I2 = 0 gli indirizzi degli operan S.p.A.
[0541] sommando al risultato il valore del registro base RB-310.
[0542] OLIVETTI C., In tal modo la RAM1 pu essere indirizzata per registri di 8 byte.
[0543] Se I1 = 1 e I2 = 0, R1 indica uno dei sedici registri privile- giati della RAM1 e R2 ha lo stesso significato precedente.
[0544] In .9ui rizzata dal contenuto di R1, mentre il secondo operando viene calcolato, come detto in precedenza.
[0545] Tutti i casi: I1 = 0 e I2 = 1 oppure I1 = I2 =1 sono deducibili dai precedenti.
[0546] Se l'istruzione e del formato 2 essa e composta di un co- o outad TItT a ldues anp aI tq un auotzunJ Ip astp perando viene calcolato come nel formato .1 (I1 = 0, I1 = 1) men tre il secondo operando e calcolato sommando ad RB il pointer P1 o P2 specificato dal codice F.
[0547] Il campo L2 contiene il nu- mero di byte del secondo operando da leggere a partire dall'in dirizzo calcolato.
[0548] .62 Se l'istruzione e del formato 3 essa é composta da un co- dice di funzione F e da due.campi L1 e L2.
[0549] Gli indirizzi degli operandi vengono calcolati come quelli del secondo operando del formato 2 e le lunghezze degli operandi sono specificate dai cam piL1eL2.
[0550] Se l'istruzione é del formato 4 essa e composta di due cam pi, uno.
[0551] indica ii.
[0552] codice di funzione F e l'altro un campo E, MD, I ed L che pu assumere quattro diversi significati in base al contenuto di F.
[0553] Il codice F indirizza i due operandi per mezzo dei pointer P1 e P2 come per il formato 3 ed inoltre specifica il significato del secondo campo.
[0554] S.p.A.
[0555] Se l'istruzione e del formato 5 e composta da un codice di C.OLIVETTI funzione F in cui il primo operando e calcolato come per il for- Se l'istruzione é del formato 6 i due byte dell'istruzione vengono direttamente utilizzati nella fase BETA successiva.
[0556] Se l'istruzione del formato 7 essa é composta da quattro byte per cui trasferisce prima i byte 1 e 2 in altri registri 30 e poi pone in B14 e B15 i byte 3 e 4 indirizzati dal registro L07.
[0557] Essa e composta da un codice funzione F, un campo E che indica l'elemento delia tabella dei riferimenti dal quale calcolarel'in dirizzo dell'operando ad un campo LD che indica lo spiazzamento rispetto all'indirizzo cosi calcolato.
[0558] Dopo tali operazioni l'interprete esaurisce il suo compito ed inizia pertanto la fase esecutiva BETA in cui vengono elabora 63 ti gli operandi calcolati in precedenza.
[0559] Le istruzioni esegui- te dai programmi di DBG sono riportate in TAB.L in cui e riporta to il rispettivo formato.
[0560] Se durante la fase ALFA viene riconosciuta una interruzio- ne (bivio logico 202 di Fig.
[0561] 10a) i'interprete esegue un salto all'indirizzo IINTE (Tabella 5 e fig.
[0562] 10b).
[0563] La prima microistru zione ANDB, esegue di nuovo l'AND tra C.P.
[0564] e P.I.
[0565] e ne conserva il risultato nel registro B15 (blocco 251.
[0566] Indi tale risulta- che/vengono sondati per riconoscere la causa interrompente (bloc co252).Trascuriamo le possibili.cause interrompenti ad eccezione OLIVETTI di quelle originate dall'intervento del programmatore per richie ste di DBG.
[0567] In questo caso, mediante la microistruzione MAD vie ne letto dalla RAM1 il byte servizio DBG e successivamente esso viene trasferito sui deviatori 40 mediante la microistruzione TADI (blocco 256).
[0568] Dopo di cio vengono sondati i deviatori D01, D02e D03 i quali contengono il bit 01, 02 e 03 del BSD rispet- tivamente.
[0569] Tale bit é normalmente a livello 0 per cui viene eseguito un salto all indirizzo IINTE1 in cuitale bitviene PO- sto IALFAR Ci viene fatto per rendere operante l'interruzione non du- - 64 - Indi viene saggiato il deviatore D03 (blocco 259) il quale.discrimina lo sTOP indirizzato da tutti gli altri programmi di DBG.
[0570] Il controllo del bit 03 e effettuato dopo il bit 02 per i motivi seguenti.
[0571] si supponga che il programmatore prenoti un indirizzo di sToP, cioé vuole che l'esecuzione del programma si interrompa all'istruzione corrispondente all'indirizzo di sTOP.
[0572] Cio pro- voca, come verra meglio descritto in seguito, che il bit 02 del BSD e portato ad uno insieme al bit O5 del byte P.I.
[0573] Tale S.p.A, disposizione di bit condiziona l'interprete a saltare all'indi OLIVETTI C.
[0574] gico 259.
[0575] Il bivio logico 259 discrimina se oltre allo sTOP indiriz- zato, e stato richiesto dal programmatore un altro programma di DBG.
[0576] Tale eventualita nasce se l'operatore si accorge che la richiesta di sTOP appena effettuata non gli e di alcuna utilita, ed invece vuole per esempio eseguire un programma speciale di DBG registrato sulla cartolina magnetica 9.
[0577] Tale eventualita corrisponde ad avere ad "uno" nel BSD i bit 02 e 03 : simultanea mente.
[0578] Ci provoca un salto dell'interprete ad, IINTE2.
[0579] Si an- ticipa che in IINTE2 verra disabilitato lo STOP indirizzato e re..
[0580] Nell'esempio citato, .tale programma provoca la lettura l'esecuzione del programma registrato sulla C.M-9.
[0581] LUfflclaleRog 65 In definitiva risulta chiaro come la ricerca di un indiriz zo prenotato di sToP avviene solo se non vi sono altre richieste di DBG alternative, e pertanto e il programma di DBG meno priori tario, infatti il bit 02 dello STOP indirizzato viene disabilita to da qualunque altra richiesta di DBG.
[0582] Nel caso che l'unica richiesta di DBG sia lo STOP indiriz- zato, vengono eseguite le microistruzioni MAD, TAB, MAD (blocco 260) mediante le quali vengono trasferiti nel registro L08 (30 in Fig.
[0583] 2b) i due byte dell'indirizzo di STOP prenotato prele- vati dalle celle EC e ED (Registro IS-350 Fig.
[0584] 9).
[0585] Indi vie iS ne eseguito tramite le microistruzioni ORE, sADO, ORE, l'OREX 63 OLIVETTI tra il contenuto dei registri L07 e L08 (30 in Fig.
[0586] 2b).
[0587] Cioe viene eseguito il confronto tra l'indirizzo di programma e l'in- dirizzo prenotato.
[0588] Se i due indirizzi sono uguali la microistruzione ORE pone ad uno il deviatore D01.
[0589] In tal caso la microistruzione sADI provoca un salto a dirizzo prenotato.
[0590] istruzioni CRTB, ORA e AMD le quali provocano la scrittura nel to posto a livello 1 (blocco 265).
[0591] Indi vengono eseguite le 66 il byte cp (blocco 266).
[0592] Successivamente viene eseguita una microistruzione sAI che provoca un salto incondizionato all.'in dirizzo IALFAR (blocco 2O3 di FIG.
[0593] 10a).
[0594] In tal modo sia che il bit 01 del BSD e a livello 0 (bi- vio logico 256), sia che gli indirizzi risultano diversi, si pone ad 1 in ogni caso ilbit 01 di BSD e sicon- tinua pertanto alla interpretazione dell'istruzione, per cui durante l'istruzione seguente l'interprete esegue di nuovo il confronto degli indirizzi.
[0595] Nel caso che gli indirizzi siano uguali oppure vi sia una richiesta di DBG diversa dalla apreno- tazione STOP si salta all'indirizzo IINTE2.
[0596] S.p.A.
[0597] C.OLIVETTI C., ta, dopo che e attivata l'interruzione, la condizione normale di tale bit.Indi il BSD cosi modificato viene rimesso nella RAM1 all'in- dirizzo gC7 mediante le microistruzioniAMD e CRTB (blocco 271).
[0598] In tal modo viene annullata la prenotazione dello sTOP.
[0599] Indi viene eseguita la microistruzione CRTB mediante la quale viene scritto nel registro B13 il byte CI "0000 0100", il qua- le indica che la causa interrompente é un programma di DBG.
[0600] A partire da questa microistruzione avviene l'effettiva in terruzione del programma in corso, infatti vengono eseguite le otto microistruzioni successive a quelle contenute nell'indiriz- zo di ROM2, IERRO1 le quali provocano il trasferimento dei pri- mi dieci byte dei parametri del programma in esecuzione tre- 67 gistrati nel registro 300-PsR nelle corrispondenti celle del registro 301-0PSR (blocco 273).
[0601] Indi con le microistruzioni BMIP e AMI viene registra to agli indirizzi DA e DB della RAM1 il contenuto del l'indirizzatore di programma del programma interrotto.
[0602] .Viene poi scritto tramite la microistruzione CRTA e BMI all'indirizzo gD7 (registro 324 di Fig.
[0603] 9) il codice di interr"zione in precedenza compilato.
[0604] - In tal modo nel registro 0PSR-301 vengono salvati tutti i parametri che consentiranno la ripresa del programma inter 1ng.C.
[0605] OLIVETTI C., S.p.A.
[0606] rotto alla fine del programma di interruzione.
[0607] Come si vedra, tutti i programmi di interruzione termi- nano con il ripristino del registro 0PSR-301 nel registro PsR-300.
[0608] Dopo tale fase il microprogramma interprete compila il registro 300 con i parametri del programma di interruzione che deve essere eseguito in sostituzione del programma inter- rotto.
[0609] In particolare con le microistruzioni AMD (blocco 280 di Fig.
[0610] 10c) azzera il byte M.I.
[0611] del registro PsR-300 e con le microistruzioni MAD e TBA, TAB trasferisce nel registro BO9 il byte A.I.
[0612] registrato nella cella BD della RAM1 (reg.AI-334) e nel registro A11 il byte C.I.
[0613] in precedenza compilato con "00000100" (b1occo 281).
[0614] Come e stato detto, il byte A.I.
[0615] viene compilato dal programmatore per definire se il programma di interruzione e 68 residente nella ROM1 o nella RAM2.
[0616] Nel caso particolare si e scelto per le ragioni spiegate nell'introduzione di regi- strare i programmi di DBG nella ROM2, pero ci non chiude all'utente la possibilita di registrare nella RAM1 i propri programmi di DBG nel caso ne abbia la convenienza.
[0617] Per far cio e sufficiente attivare il bit 03 diAI-334.Viene ora ese guito l'AND logico tra AI e CI che pone DO1=1 se l'AND é diverso da 0000 0000.
[0618] La microistruzione sADO controlla il deviatore DO1 e C.OLIVETTI C., S.p.A.
[0619] due microistruzioni CRTA e AMD le quali azzerano il byte CP del programma di interruzione in corso (blocco 283).
[0620] In tal modo si fa notare come il microprogramma inter prete avendo riconosciuto che la causa interrompente e un programma di DBG, provvede a disabilitare ogni altra eventua 1e interruzione (CP =0000 0000) in quanto queste sarebbero incompatibili con i programmi DBG: Dopo di ci esegue le microistruzioni CRTB e CRTA median LOT osy6a Tau tWO TP DpLl ozzatpu.T ezaoJ ITenb aT a (blocco 284), quindi esegue un salto incondizionato all'in- ma istruzione del programma di DBG.
[0621] L'indirizzo 17gg corri da notare che tra l'altro l'interprete ha forzato a zero an che il bit 03 di CP-313 per cui quando si ritornera ad IALFA la lettura delle istruzioni verra effettuata dalla ROM2 e non dalla RAM1.
[0622] E' da notare inoltre che l'interprete annulla anche il bit 05 di CP-313 relativo alle istruzionidaDBG perché al- trimenti dopo aver lanciato il programma di DBG, entrerebbe in un circuito chiuso.
[0623] nfatti nell'eseguire la prima istruzione del programma be abilitata l'interruzione da DBG in quanto PI non é varia to e il bit 05 di CP=1.
[0624] Conseguentemente salterebbe a IINTE S.p.A.
[0625] .C.OLIVETTI C.
[0626] rebbe di nuovo all'indirizzo IALFA e non uscirebbe piu dal ciclo suddetto.
[0627] Nel caso infine che ii programma di interruzione sia re- croistruzioni MAD, AMD, MAD, TAB, MAD (blocco 285 di Fig.
[0628] 10c) mediante le quali forza nel registro indirizzatore del program- ma in esecuzione L07 l'indirizzo contenuto nel 3° e 4° byte del registro IPsR-302 e carica inoltre nel registro CP-313 il byte CP-333 del registro IPsR-302, instaurando cosi nel registro PsR-300 le nuove condizoni del programma di interruzione.
[0629] PROGRAMMI DI DEBUGGING 1.
[0630] Istruzioni utilizzate.
[0631] si e visto in precedenza che il funzionamento della chia- ve 1o0 oppure il riconoscimento di un indirizzo di sToP prenota- 70 il bit 03 di BSD sono forzati a livello 1.
[0632] si e visto inoltre la ROM2 ha avuto cura di porre a "O" il bit 01 del byte AI-334di IPSR-302.
[0633] Si e visto infine come la presenza simultanea dei valori dei bit ora menzionati condizioni il microprogramma interprete ad interrompere la elaborazione del programma in corso, a sal- vare i suoi parametri significativi ed a forzare nell'indiriz- zat re di programma LO7 l'indirizzo "17" di ROM2.
[0634] Tale indirizzo e l'indirizzo dell'istruzione iniziale del programma di DBG memorizzato nella ROM2.
[0635] Prima di procedere alla descrizione del programma di DBG e opportuno spiegare con riferimento alla Tabella K il signifi- cato delle istruzioni da esso utilizzato.
[0636] il formato descritto in precedenza a cui l'istruzione stessa ap- l'operazione effettuata dall'istruzione e la terza e quarta co- ionna indicano rispettivamente il codice simbolico ed il codice macchina in esadecimale dell'istruzione stessa.
[0637] Esaminiamo ora brevemente i passi da eseguire per elaborare una qualsiasi istruzione di Tabella K.
[0638] L'interprete,come si e visto, legge i due byte dell'istruzio ne dalla RAM1 o dalla ROM2.
[0639] In base al contenuto di tali byte 71 TABELLA K FORM.
[0640] DESCRIZIONE COD.SIMB! CODICE MACCHINA BYTE 2°BYTE 7 R1 R1+R2 AR C 00X,Xz R1 R2 1 R1 R1-R2 SR 01X,Xz R1 R2 1 R1R2 LR 10X,Xz R1 R2 1 R2REG.DI LAVORO LAX 6 110 Xz B R2 2 IMPACCA PK L'X00 5 R1 12 S.p.A.
[0641] 3 INTR.
[0642] E VISUAL.
[0643] PER DBG YOP 6 E L1 Ing.
[0644] C.
[0645] OLIVETTI C., 12 3 DISIMP.ETRASC.ESADEC.
[0646] XLA D 6 L1 12 4 P1P1+MD+1 AP,1 3 C MD 4 P1-P1-MD+1 SP,1 3 E MD 4 P2--P2+MD+1 AP,2 3 D MD 4 P2-P2-MD+1 SP,2 3 F MD 4 P1E TL,1 B 8 a 4 TL,2 B 9 a 4 POINT1- POINT2 MVC C 5 L 4 COST'I'-MEM(P1) MVI,1 C 6 I 4 COST'I'-MEM(P2) MVI,2 C I 4 CONFR.COST 'I'-POINT 1 CBI,1 B C I 72 TABELLA K (continua) FORM.
[0647] DESCRIZIONE COD.SIMB.
[0648] CODICE MACCHINA 1BYTE 2BYTE 4 CONFR.COST 'I'- POINT 2 CBI,2 B D I 4 ABILITA' BARRE KES A 7 I 4 ATTESA FINE OPERAZ.
[0649] WAIT A 5 I 5 P1 R2 TRD,1 6 110 Xz R2 5 P2R2 TRD,2 110 X2 6 1 R2 5 R2 P1 LPD,1 6 110 Xz 2 R2 S.p.A.
[0650] 5 R2P2 LPD,2 110 X2 6 3 R2 C.OLIVETTI 6 IP (IP+SD(SKIP) F 7 3 00 SD 6 IP (IP-SD)(SKIP) R 7 3 01 SD 6 MOD.BIN.
[0651] SECONDOP1 MBD,1 9 A 00 SD 6 MOD.
[0652] BIN.
[0653] SECONDO P2 MBD,2 9 B 00 SD 6 SCAMBIARBP1 YBP,1 A E 2 6 SCAMBIA RBP2 YBP,2 A F 2 6 SCAMBIAP1P2 TCP 8 3 2 6 CONVERS.
[0654] DECIM -- BINAR.
[0655] CVB 3 8 1 6 INVIO COM.
[0656] U.P.
[0657] SEC.
[0658] P1 STI0,1 A M 6 INVIO COM.
[0659] U.P.
[0660] SEC.
[0661] P2 STI0,2 A 1 M A'oficlala 6 ACCENDI LUCE"ERRORE" ON KBE E 4 -73 TABELLA k (continua) FORM.
[0662] DESCRIZIONE COD.SIMB CODICE MACCHINA BYTE 2BYTE 6 AND.COST.
[0663] K (.)POS.P di R NI 2 P.
[0664] K 6 AND.COST.K(.)POS.P di RC NIC 2 8 P K 6 OR:COST.K(+)POS.P diRO 10 2 9 P K 6 OPSR in PSR ed esegui YPS 3 8 9 CODICE MACCHINA FORM.
[0665] DESCRIZIONE COD.SIMB.
[0666] 1BYTE 23°e4° S.p.A SALTO DIR.
[0667] INCOND.F.LUNGO BD 7 a LD OLIVETTI C., 17 SALTO SU CONDVERIF.
[0668] F.LUNGO BDC F OOCC E LD 7 CARICA 'P1'DIR.F.LUNGO TLD,1 F 8 LD 7 CARICA 'P2'DIR.F.LUNGO TLD,2 E 9 a LD .8ul 7 ATTIVA PROGR.
[0669] C.M.
[0670] LAC A B a LD -74- l'interprete riconosce il formato associato all'istruzione, in base al formato calcola l'indirizzo degli operandi, estrae dal- la RAM1 gli operandi e li trasferisce nei registri operativi B4 e B15.
[0671] A questo punto in base al contenuto del campo F dell'istruzione vengono estratti dalla ROM2 i microprogrammi che eseguono la istruzione.
[0672] Ala fine dell'esecuzione si richiama l'interprete che procede all'estrazione dell'istruzione seguente.
[0673] Con riferimento alla tabella K ora si spiega la simbologia usata nelle colonne del codice simbolico e nel codice macchina dell istruzioni.
[0674] Con R1 e R2 si indica .
[0675] S.p.A uno dei sedici re- .C.OLIVETTI C., gis-ri privilegiati della RAM1.
[0676] L'indirizzo del primo operando R1 o del secondo operando R2 e contenuto nel registro in- dicato nell'istruzione (indirizzamento diretto), se il bit cor- rispondente x1 o rispettivamente x2 e a zero.
[0677] Se tale bit e a livello uno il registro corrispondente indirizza una zona di me- moria nella quale e registrato l'indirizzo dell'operando.
[0678] L1 e L2 indicano il numero di byte meno uno degli operandi indirizzato da pointer P1 e P2.
[0679] zionata o sottratta al valore del pointer P1.
[0680] e P2.
[0681] - E e il numero del riferimento che contiene l'indirizzo da forzare in P1 o P2.
[0682] I indica l'operando immediato equivalente al byte da utilizzare nell'istruzione.
[0683] sD indica il valore che deve esse re aggiunto o sottratto all'indirizzatore di programma per ot- 75 2.
[0684] Visualizzatore dell'istruzione presente nei registri 362 e 363.
[0685] Viene ora descritto con riferimento alla tabella L ed al- le Figg.
[0686] 11a * 11g il programma di DBG registrato in ROM2.
[0687] Il programma di DBG registrato in ROM2 e diviso in piu blocchi funzionali di cui il primo e comune a tutti gli altri; i successivi invece sono richiamabili selettivamente dalle bar- re so, s1, s2, s6 indicate complessivamente con 102in Fig.
[0688] 1b.
[0689] E' da precisare che tutte le barre 102 (s0-s6) vengono uti lizzate anche quando la chiave 1OO e in posizione NORMAL.
[0690] In tal caso esse assumono ognuna un significato particolare asse- gnato loro dal programma in corso di esecuzione.
[0691] Per esempio ie .C.OLIVETTI C., S.p.A.
[0692] barre sQ e 56 possono essere interpretate dal programma come fine normale di introduzione dati dalla tastiera5 e riprese dalle elaborazioni utilizzando tali dati.
[0693] Le restanti barre S1-s5 oltre a chiudere l'introduzione normale dei dati aggiungono tali blocchi dati.
[0694] informazioni supple- mentari stabilite dal.
[0695] programmatore.
[0696] Naturalmente non viene descritto il funzionamento dell'ela boratore quando la chiave 10O é in posizione NORMAL, ma verranno la chiave 1O0 e in posizione DBG.
[0697] si descrive ora il blocco di inizio del programma comune a tutti gli altri programmi.
[0698] Tale blocco funzionale salva altri parametri del programma interrotto che non sono contenuti in 76 PROGRAMMA DI DEBUGGING - TABELLAL IND.
[0699] CODICE ISTRUZIONE ROM2 SIMBOLICO COMMENTO 17 g TLD,2 CARICA 16g in P2 94 YBP,2 AF2 SCAMBIA P2 cOn RB (RB=16) 6 LAX 6CB4 DEPOSITA R.L.IN R4 8 TL B 8 g g AZZERA POINTER 1 DA YBP,1 AE2 SCAMBIAP1CON RBRB= pc TL-,1 88LP08 CARICA 188 IN P1 TLD,2 CARICA CA IN P2 .C.OLIVETTI C., S.p.A.
[0700] 14 MVC C51 TRASF.2BYTEDACAA188 16 AP,1 3C1 SOMMA 2 A P1(P1=18A) 18 AP,2 3D19 SOMMA1A A P2P2=E4 1A MVC C 5.
[0701] g TRASF.1 BYTEDAE4 A18A (RISERVA BYTE 'ABILITAZIONE 'BARRE) 1C SP,2 3FgC SOTTRAI DAP2P2=D7) 1E SP,1 3E21 SOTTRAI 22AP1 P1=168) 26 MVC C 5 TRASF.1BYTEDAD7A168 (SALVA C.I.) 22 AP,2 3D g2 SOMMA3 A P2(P2=DA) 24 SP,1 3EB5 SOTTRAI B6A P1 (P1=B2 26 MVC C51 TRASF.2BYTEDADAAB2 (SALVA IP DI OPSR IN P1DIPSR) A'Officlale -77- PROGRAMMA DI DEBUGGING - TABELLA L cOntinUa) IND.
[0702] CODICE ISTRUZIONE COMMENTO ROM2 SIMBOLICO 1728 AP,2 3D85 SOMMA86 AP2P2=16) 2.A LPD 6C20 TRASF.P1 IN RO(RO=I.P.DI OPSR 2C YBP,2 AF2 SCAMBIAP2CON RB(RB=16 2E SP,2 3F8F SOTTRAI 9 AP2(P2=D) 30 TLD,1 FE CARICA B2INP1 34 MVC C51 TRASF 2BYTE,DADAB2 RB DIOPSRINP1 DI PSR S.p.A.
[0703] 36 AP,2 3D8F SOMMA 9AP2P2=16 38 LPD,1 6C22 TRASF.P1 IN R2(RBDIOPSRINR2 3A SR 42 RO-- R2-ROINDIR.
[0704] RELATIVO DI OPSR IN RO) 3C LR g 8 3 g TRASF.ROIN R3 3E TL,1 p 8 8 AZZERA P1 40 TLD,2 CARICA5 IN P2 44 XLA D673 DISIMPACCA E TRANSCODIFICA (IND.RELATIVO DI OPSRDA165 A 16D 46 MVI,2 C72g FORZA K IN 0165 48 YBP,1 AE2 4A AP,1 3C5 SOMMA6 AP1P1=166 78 PROGRAMMA DI DEBUGGING- TABELLA L (COntinua) IND.
[0705] CODICE ISTRUZIONE COMMENTO ROM2 SIMBOLICO 174C AP,2 3DDg SOMMAD1AP2P2=D6 4E XLA D61g DISIMPACCA E TRASCODIFICA(CP DI OPSR IN 166) DA D6 A 166 5g KES A747 ABILITA BARRE: SO,S1,S2,S6 (01000111) 52 SP,1 3EB1 SOTTRAI B2 A P1P1=B4 54 SP,2 3Fg5 SOTTRAI 6 A P2 (P2=D) 56 MVC C51 TRASF.2BYTEDADAB4 (RB DI OPSR IN P2 DI PSR) 58 AP,1 3C9B SOMMA9CAP1P1=15 5A YBP,1 AE2 SCAMBIA RB CON P1RB=15 5C LPD,2 6C34 TRASF..P2 IN R4 (RB DI OPSR IN R2 DA RB=16 5E LR 814 TRASF.R2 IN158(RB DIOPSR IN 158) 6g AR C 4 5 R2R2+R3R2=IND.ASSOLUTO DI OPSR) 62 LR 8 P TRASF.R2IN15 64 TRD 6C14 TRASF.R2 IN P2 (P2 CONTIENE IND.
[0706] ASSOLUTO DI OPSR) 79 PROGRAMMA DI DEBUGGING - TABELLA L (cOntinua) IND.
[0707] CODICE ISTRUZIONE COMMENTO ROM2 SIMBOLICO 1766 TL p 8 a AZZERAP1 68 YBP,1 AEg2 SCAMBIA P1 CON RB RB= 6A AP,'1 3C1B SOMMA1C AP1P1=16C 6C MVC C53 TRASF.4 BYTE (ISTRUZIONE NON ESEGUITA DI OPSR IN16C 6E TLD,2 F9gg168 CARICA 168 IN P2 72 TCP 38g2 SCAMBIA P1 CON P2 (P1=168 E C.
[0708] OLIVETTI C., S.p.A.
[0709] P2=16C 74 XLA D673 DISIMPACCA E TRASCODIFICA (ISTRUZIONE NON ESEGUITA DI OPSR DA 16C A 168 76 SP,1 3E1 SOTTRAI2 DA P1(P1=166 78 SP,2 3Fg4 SOTTRAI5DAP2(P2=167 .9ul 7A MVC C 5 g TRASF.1BYTE DA167A166 (2° SEMIBYTE DI CP IN 166).
[0710] 7C MVI C72 FORZA K IN 167 7E SP,2 3 F g 6 SOTTRAI7 AP2P2=16 8g YBP,2 AF2 SCAMBIA RBCON P2 RB=16 82 TLD,1 FORZA1IN P1P1=1 -80- PROGRAMMA DI DEBUGGING - TABELLA L (COntinUa) IND.
[0711] CODICE ISTRUZIONE 11 COMMENTO ROM2 SIMBOLICC 1786 YOP 6E7F VISUALIZZA ISTRUZIONE DA ESE- GUIRE DI OPSR PER 16 BYTE IN- DIRIZZATI DA P1E INTRODUCI DATI DA TASTIERA PER 8 BYTE INDIRIZZATI DA P2 PONI CC=O SE SO, CC=1 SE S1 S.p.A.
[0712] CC=2 SE S6, CC=3 SE S2 O RUN C.OLIVETTI C 88 BDC FOOO17AE SALTA A INDIR.
[0713] 17AE SE CC= 8C BDC F1gg17C4 SALTA A INDIR.
[0714] 17C4 SE CC=1 6 BDC F217EE SALTA A INDIR.
[0715] 17EESE CC=2 94 YBP,2 AF2 SCAMBIA RBCON P2 RB= 96 NIC 289D AND TRA 1101 E SEMIBYTE IN POSIZ.
[0716] 9 DI R.C.
[0717] (CODICE BAR- RA IMPOSTATA) PONE CC=O SE S2 98 Fd 684 SE CC=O, SKIF 9A BD SALTO ALPRG.RUN'-INDIR.18C Ufflciale Rog 81 PROGRAMMA DI DEBUGGING - TABELLA L cOntinua) IND.
[0718] CODICE ISTRUZIONE COMMENTO ROM2 SIMBOLICO PROGRAMMA INTRODUZIONE DA C.M BARRA S2.
[0719] 179E TLD,1 F8gg18C FORZA 18C in P1 A2 SP,2 3F91 SOTTRAI 92 A P2 (P2=BE A4 MVC C 51 SALVA I.I.
[0720] NEL REGISTRO 367 A6 AP,2 3D81 SOMMA82 A P2P2=15 A8 STI0,2 AFgg COMPILA PARAMETRI TRASFERIM.
[0721] ,S.p.A, C.OLIVETTI C., PERIFERICA-RAM1 TRASFERISCI DA C.M.SECONDO P2 AA LAC AB88g150 LANCIA PGR INDIR.15 RAM.
[0722] PROGRAMMA LEGGI MEMORIA BARRA SO.
[0723] AE AP,1 3CAF SOMMA B A P1 P1=C7 BD YBP,1 AE2 SCAMBIA P1 CONRB(RB=C7 B2 NI 2 g g B (BSD(BSDAND gB) B4 YBP,1 AED2 SCAMBIA P1CON RB RB=16) B6 SP,1 3EAF SOTTRAIBA P1 (P1=1) B8 CBI,1 8C2g SALTA A S1 SE INTRODOTTO BA FNO 6888 INDIRIZZO DA TASTIERA 82 PROGRAMMA DI DEBUGGING - TABELLA L (cOntinua) IND.
[0724] CODICE ISTRUZIONE COMMENTO ROM2 SIMBOLICO 17BC ARI 534 REG365REG365)+4 BE LR g 8 g 3 REG362--REG(365 cp BD 7173E SALTA A INDIR.
[0725] 173E PROGRAMMA DI PRENOTAZIONE STOP BARRA S1 CA..
[0726] PK 51 IMPACCA REG(364 ETRASCOD.
[0727] TRASFER.IN REG.(362) INDIRIZ ,S.p.A C.OLIVETTIC.
[0728] ZO INTRODOTTO DA TASTIERA C6 NIC 289F (0101AND (POS.9 DIRC) C8 BD Fg173C SE AND=0 SALTA A 173C CC TLD,2 FORZA 158 IN P2 DO YBP,2 AF2 SCAMBIA P2 CON RB(RB=158 D2 AR IND.ASSOLUTO PRENOT.
[0729] IN 361 D4 CVB 381 361 DEC.361BIN.) D6 SP,2 3FC1 SOTTRAI C2AP2P2=9E D8 TLD,1 FORZA CIN P1 DC YBP,1 AEg2 SCAMBIA RB CON P1 RB=C Ep TLD,1 FORZA 2C IN P1 MVC C51 TRASF.1E2BYTEDI361IN350 PROGRAMMA DI DEBUGGING - TABELLA L (cOntinUa) IND.
[0730] CODICE ISTRUZIONE ROM2 COMMENTO SIMBOLICO 17 E6 OI 21F4 (BSD 351) OR (0100) E8 AP,2 3DC1 SOMMA C2 A P2P2=16g) EA YBP,2 AF2 SCAMBIA P2 CON RB (RB=16) (P2=Bpcp) EC BD SALTO A 17BE PROGRAMMA DI SCRITTURA NELLA RAM1-BARRAS6 S.p.A.
[0731] AP,2 3D13 FORZA 14IN P2(P2=14 FO TCP 382 SCAMBIA.P1 CON P2 (P2=1) F2 YTC D737 IMPACCA E TRASCODIFICA INDIRIZZO INTRODOTTO F4 TLD,2 FORZA 15gIN P2 (P2=15) F8 YBP,2 AFg2 SCAMBIA P2 CON RB (RB=15) FA TRD,1 6 C g TRASFERISCE REG(362)=ID.
[0732] IN POINTER P1 FC TL,2 p 6 u FORZA P2 A 'g' FE YBP,2 AF2 SCAMBIA RB CON P2(RB=) 18 g AP,2 3D23 SOMMA 24'A P2 (P2=174) 2 MVC C 5 g 3 SOSTITUISCE ISTRUZ.
[0733] INTRODOTTA AD ISTRUZ.
[0734] VISUALIZZATA.
[0735] PROGRAMMA DI DEBUGGING - TABELLA L (cOntinua) IND.
[0736] CODICE ISTRUZIONE ROM2 COMMENTO SIMBOLICO 1894 SP,2 3F13 SOTTRAI14A P2P2=16g 6 YBP,2 AF2 SCAMBIA RB CON P2 (RB=16) 98 BD SALTA A 17BC PROGRAMMA DI "ESECUZIONE PASSO-PASSO" TASTO RUN.
[0737] d'c.
[0738] TLD,2 F9ggg188 FORZA P2A188 yds TLD,1 FORZA P1 ACA' 14 MVC C 5 1 RIPRISTINA 2 BYTE IN R.C.
[0739] 359 16 AP,2 3 D p 1 SOMMA 2 AP2(P2=18A) 18 AP,1 3C1 9 SOMMA 1A AP1 P1=E4 1A MVC RIPRISTINA BYTE 'ABILITABARRE (370) 1C SP,2 3 F g 9 SOTTRAI AAP2P2=18) 1E SP,1 3E3B SOTTRAI3C'A P1P1=A8) 20 MVC C 5 g 7 RIPRISTINA 8 BYTE DI REG(366) IN REG.LAVORO 352 22 YPS 389 RIPRISTINA 1O BYTE DI OPSR 3O1 IN PSR 3O0 E ATTIVA PROGRAMMA IN PROVA.
[0740] Lffolale Roganta 85 OPsR-301 e prepara inoltre la visualizzazione dell'indirizzo e dell'istruzione che.
[0741] doveva essere.esegui- ta all'istante dell'interruzione.
[0742] In particolare mediante le prime due istruzioni TLD,2 e YPB,2 viene portato a 16g il registro RB-310 (blocco 400 di Fig.
[0743] 11a).
[0744] Indi viene trasferito nel registro 366 il contenuto 401).
[0745] E' da notare che il registro 366 viene indirizzato dalla LAx come quarto registro (individuato dall'ultimo semibyte dei- l'istruzione) a partire dal registro base RB-310 di PSR-300 che con tiene 1'indirizzo 16.
[0746] Mediante le istruzioni TL e YBP,1 viene azzerato il registro base RB-310 (blocco 402).Successivamente mediante le istruzioni TLD,1, TLD,2 e MVC vengono salvati due byte del registro condi- zioni RC-359 nelle celle g188 e g189 (blocco 403) i quali, come si e detto, contengono le condizioni impostate dall'esterno dall'ope- ratore prima dell'interruzione di DBG.
[0747] Tali byte verranno rimessi nel RC-359 dal programma di DBG nel caso che il programma inter- rotto venga ripreso dopo l'esecuzione del programma di DBG.
[0748] E' da notare che l'istruzione MVc trasferisce a partire dal la cella indirizzata dalla somma dei contenuti del registro P2-312 e RB-310 un campo di lunghezza L+1 a partire dalla cella indirizzata.della somma dei contenuti di RB-310 e P1-311; L e ii numero contenuto nel secondo byte dell'istruzione.
[0749] Indi mediante le istruzioni AP1, AP2 e MVC viene trasferito 86 il registro AB-370 (Abilita barre) nella cella 18A (blocco 404).
[0750] Mediante le istruzioni sP2, SP1 e MVC viene trasferi- to il registro cI-324 nella cella 0168 (blocco 405).
[0751] Mediante le istruzioni AP2, SP1, MVC vengono trasferiti i due byte che indicano l'indirizzo assoluto di rientro del prfgramma interrotto (registro IR-327) nel registro P1-311 di PSR-300.
[0752] Successivamente mediante le istruzioni AP2 e LPD ta- le indirizzo viene trasferito da P1-311 nel registro.362 (blocco 406).
[0753] C, OLIVETTI C., S.p.A, Mediante le istruzioni YBP,2, sP2, TLD,1 e MVC viene por- tato il registro RB-310 alvalore$16g e viene trasferito il registro baseRB-320 di 0PSR-301 nel registro P1-311 di PSR-300.
[0754] Indi mediante le istruzioni AP2 e LPD1 il registro RB-320 viene .gu trasferito nel registro 364.
[0755] Mediante l'istruzione sR viene eseguita la differenza tra il contenuto dei registri 364 e 362 ed il risultato viene posto nel registro 362 (blocco 407).
[0756] Tale differenza viene poi trasfe rita mediante una LR nel registro 363 (blocco 408).
[0757] Mediante le operazioni ora descritte nei registri 360 e 363 e registra to l'indirizzo relativo in codice esadecimale dell'istruzione da eseguire del programma interrotto.
[0758] Mediante le istruzioni TL1 e TL2 si posizionano i regi- stri P1-311 e P2-312 rispettivamente ai valori g e 5 che som mati al registro RB-310 indirizzano le celle 16 e g165 rispet tivamente.
[0759] Viene poi eseguita un'istruzione YTx la quale disimpac- ca e transcodifica quattro byte (specificati dall'ultimo semibyte dell'istruzione) dal registro P2-312 e li trasfe- risce in otto byte (specificati dal terzo semibyte dell'istru zione) indirizzati dal registro P1-311 eliminando gli zeri non significativi (blocco 409).
[0760] rizzata da P2-312 e scrive un CRT "spazio" nella cella 165 (blocco 410).
[0761] .C.
[0762] OLIVET.TI C., S.p.A.
[0763] Mediante le istruzioni YPB,1, API e AP2 e YTX viene az- RAM1, disimpaccato, transcodificato e trasferito nelle celle 0166 e 0167 (blocco 411 di Fig.
[0764] 11b).
[0765] Viene eseguita poi l'istruzione KEs la quale compila nel- la cella gE4 il codice espresso dal secondo byte.
[0766] Tale codice ra 102 (blocco 412).
[0767] In particolare tale codice viene interpre- tato come un codice di abilitazione delle barre s0, S1, s2 e S6 dall'istruzione YOP per controllare che le barre azionate dal programmatore siano state abilitate o meno.
[0768] Mediante le istruzioni SP1, sP2 e MVC viene trasferito il registro RB-320 di 0PSR-301 nel registro P2-312 di PSR (blocco 413).
[0769] Mediante le istruzioni AP1, YBP1, LPD2 viene trasferito RB-320 da 0PsR-301 nel registro 364 (blocco 414).
[0770] Il contenuto 8 co 415).
[0771] Mediante le struzioni LR ed AR viene calcolato nel regi- stro 364 l'indirizzo assoluto dell'istruzione da eseguire del programma interrotto (blocco 416).
[0772] E' da notare che il contenu- to del registro 365 era l'indirizzo relativo del programma in- terrotto.
[0773] Tale indirizzo assoluto viene poi trasferito nel re- gistro 360 e nel registro P2-312 mediante le istruzioni LR e TRD blocco 416).
[0774] Mediante le istruzioni TL e YBP1 viene azze- ratc-il registro RB-310 e mediante le istruzioni AP1 e MVC vie S.p.A, ne rasferito il contenuto della cella indirizzata da P2-3i2 OLIVETTI nella seconda metä del registro 363.Tale contenuto viene disim- YTx, per cui nel registro 363 si trova registrata l'istruzione che doveva essere eseguita dal programma interrotto in codice disimpaccato (blocco 417.
[0775] Mediante le istruzioni sP1, sP2 e MVC si sposta di una cella a sinistra il secondo semibyte del byte cP, registrato nella cella 167, per cui tale semibyte si trova ora registrato in entrambe le celle 166 e 9167.
[0776] Succes- sivamente mediante l'istruzione MVI viene scritto un CRT di LffclaleR "spazio" nella cella β167 (blocco 418).
[0777] In conclusione le operazioni svolte dal blocco 406 al[ co 418 hanno predisposto nei registri 362 e 363 in codice disim paccato l'indirizzo relativo dell'istruzione da eseguire del pro- gramma interrotto, un CRT spazio, il secondo semibyte del byte CP 89 (che comprende tra l'altro il codice di condizione), un CRT "spazio" ed il codice esadecimale dell'istruzione contenuta in tale indirizzo.
[0778] viene descritto un esempio di preparazio- ne dei registri 362 e 363 con riferimento alle Figg.
[0779] 12a-12f.
[0780] Si supponga che il programma sia stato interrotto all'in quale viene trasferito nel registro 362 (blocco 406) e in es- Fig.
[0781] 12, dove l'ultimo semibyte (carattere c) rappresenta il .C.
[0782] OLIVETTI C.,S.p.A.
[0783] RB-20 di 0PSR-301 sia "12g", tale contenuto viene trasfe- rito nel registro 364 (blocco 407) e viene rappresentato nel- la differenza tra i due registri 364 e 362 e il risultato vie ne memorizzato nel registro 362 .come é mostrato in Fig.
[0784] 12b (blocco 408).Il contenuto del registro 362 viene quindi disim- paccato (blocco 409) e occupa quindi i primi cinque byte del nella cella 165 (blocco 410) ed il byte C.P.
[0785] (323) in forma disimpaccata nelle celle 0166 e 0167.
[0786] si suppone che tale byte abbia il valore "4A" rappresentato.
[0787] in Fig.
[0788] 12e.
[0789] Successivamente viene letta l'istruzione che doveva essere eseguita dal programma meta del registro 363.
[0790] Si supponga che l'istruzione abbia il 90 quale viene caricato il numero "5" nel pointer P2-312 (Fig.
[0791] 12b).
[0792] Successivamente tale istruzione viene riscritta nel registro 363 in forma disimpaccata (Fig.
[0793] 12c e blocco 417).
[0794] Indi il byte Cp viene spostato a sinistra di una posizione e viene scritto nella cella 167 un CRT di "spazio" (blocco 418.).
[0795] In definitiva la configurazione dei due registri 362 e 363 e quella mostrata il Fig.
[0796] 12d.
[0797] La Fig.
[0798] 12f mostra in dettaglio la sequenza delle confi gurazioni delle celle 166 e 167 nel passaggio dalla confi- .C.OLIVETTI C.,S.p.A.
[0799] gurazione di Fig.
[0800] 12c a quella di Fig.
[0801] 12d.
[0802] La configurazione predisposta nei registri 363 e 364 ver- ra poi visualizzata come si vedra meglio in seguito.
[0803] Si riprende ora la descrizione del programma di DBG (Fig.
[0804] 11b).
[0805] Mediante le istruzioni SP2, YBP,2 e TLD,1 viene portato a 16D il registro RB310 e viene portato a p1 il registro P1-31 (blocco 419 di Fig.
[0806] 11b).
[0807] Dopo di ci viene eseguita una istru- zione YOP (blocco 420 e 421 di Fig.
[0808] 11c) la quale invia al display 103 i caratteri registrati nei registri 362 e.363 rap- presentati e trasferisce i dati impostati dall'operatore nel ra 102 azionata dall'operatore.
[0809] L'istruzione YOP pu essere considerata divisa sostanzial- mente in tre blocchi funzionali: un primo blocco provvede ad in viare al visualizzatore 6 i dati compilati dalle istruzioni precedenti nei registri 362 e 363; un secondo blocco provve- de ad introdurre nel registro 364 indicato dal pointer P1-311 i dati impostati in tastiera; ed un terzo blocco che provvede a compilare il codice di condizione contenuto nel byte condi- zioni di programma 313 e il nono semibyte del registro condi- zioni 359 secondo la barra che e stata azionata.
[0810] Il primo blocco funzionale e un microprogramma il quale utilizza la somma del pointer P2-312 e del registro base RB-310 per indirizzare il primo byte del registro 362 per iniziare la S.p.A.
[0811] lettura dalla RAM1 dei dati contenuti nei sedici byte successi- Ing.
[0812] C.
[0813] OLIVETTI C., vi a quello indirizzato7 Tale microprogramma mediante apposite microistruzioni trasferisce (tramite il nodo NC e la logica di canale 45) i dati direttamente alle unita periferiche selezionate.
[0814] In questo caso, la logica di canale 45, tramite l'istru- zione YOP ha selezionato il display 6 (Fig.
[0815] 1b) per cui i dati contenuti nei due registri 362 e 363 vengono visualizzati.
[0816] Il modo con cui la logica di canale 45 seleziona il display 6, e stato accennato in precedenza ed e inoltre riportato nella citata domanda di brevetto N.
[0817] 916.415.
[0818] Inoltre, tale selezione viene descritta in dettaglio anche perche non costituisce l'og- getto della presente invenzione.
[0819] Il secondo blocco funzionale della Yop e un microprogram- 92 ma il quale utilizza la somma del pointer P1-311 e RB-310 per indirizzare la cella iniziale del registro 364 e depositare negli otto byte successivi i dati impostati in tastiera.
[0820] Tale microprogramma utilizza apposite microistruzioni (non riportate nelle tabelle) che permettono di scambiare i dati con l'unita periferica selezionata.
[0821] Tali dati, attraverso la porta.70 di Fig.
[0822] 2b,.sono introdotti sul nodo ND e da questo (mediante il nodo NB), sono trasferiti nel registro B14 (Fig.
[0823] 8).
[0824] L'intro- duzione dei dati dalla tastiera 5 nel registro B14 e controlla- to da una microistruzione non riportata nelle tabelle, la quale ger :ra i comandi: CZ03, CA02, CTO6, CT07 ed i comandi di sele- S.p.A zione C032*C039 i quali agiscono rispettivamente sulle porte 70, 71, 72, 73 e sui circuiti di selezione riportati in figu- OLIVETTI ra 7, per cui i caratteri vengono trasferiti dalla tastiera 5, avviene in parallelo per bit ed in serie per carattere, cioe i caratteri vengono trasferiti uno alla volta.
[0825] 3.
[0826] Riconoscimento barre.
[0827] Viene ora descritto in dettaglio il terzo blocco funzio ed al diagramma di flusso di Fig.
[0828] 13.
[0829] Come e stato detto nel registro B14 e stato memorizzato ad opera del secondo blocco funzionale, l'ultimo carattere pro- veniente dalla tastiera 5 (blocco 600 di Fig.13).
[0830] Tramite la microistruzione sDIB, viene scambiato CRT -93 TABELLA M IND.SIMB.
[0831] J-ISTRUZ.
[0832] CODICE I OPERANDO II OPERANDO IGOTEO BE97 SDIB B14 27A2 SADO DO7 IGOTEH 36A2 SADI D06 IGOTEH 35A2 SADI DO5 IGOTEH 84A2 SADO D04 IGOTEH 23A2 SADO.
[0833] D03 IGOTEH BE97 SDIB B14 C.
[0834] OLIVETTI C., S.p.A, 898F CRTA A09 C9F 69E3 ORE A09 B14 1F4 3 SADI DO1 IGOTUX 8907 CRTA A09 .CO7 69E4 ANDB A09 B14 8900 CRTA A09 COO 9201 CRTB B02 CO1 IGOTU4 B866 SEDI DOO 69E2 SOT A09 B14 31D2 SADI DO1 IGOTU3 A949 ICA A09 08D8 SHSB B02 O8CC SAI IGOTU4 IGOTU3 C2E4 MAD A02 CE4 94 TABELLA M (continua) IND.SIMB.
[0835] A-ISTRUZ.
[0836] CODICE I OPERANDO II OPERANDO 6220 AND A02 B02 08D4 SADI DO1 IGOTAJ IGOTUY C2CB MAD A02 CCB B227 AZAP A02 592C TAB A09 B02 B216 ROTB B02 .C.OLIVETTI C., S.p.A.
[0837] 622E ORA A02 B02 D2CB AMD A02 CCB 9206 CRTB B02 C06 6 923 ORE A09 B02 31EE SADI DO1 IGOTU6 2 CRTB B02 C02 B866 SEDI DOO 6922 SOT A09 B02 30EC SADI DOO IGOTUZ IGOTU8 C2B6 MAD A02 CB6 92FC CRTB B02 CFC 6224 ANDB A02 B02 692E ORA A09 B02 D 9B 6 AMD A09 CB6 0200 SAI IALFA 95 TABELLA M (continua) IND.SIMB.
[0838] J-ISTRUZ.
[0839] CODICE OPERANDO II OPERANDO IGOTU7 8903 CRTA A09 C03 08E4 SAI IGOTU8 IGOTU6 8902 CRTA A09 C02 08E4 SAI IGOTU8 IGOTUX 6060 CRTA A09 C09 08D5 SAI IGOTUY Ing.
[0840] C.
[0841] OLIVETTI C., S.p.A.
[0842] 96 contenuto in B14 con quello contenuto nei deviatori 40.
[0843] Indi vengono saggiati i bit da 03 a 07 dell'ultimo CRT introdotto mediante le istruzioni SADO e SADI che operano sui deviatori da D03 a DO7 (bivio logico 601).
[0844] E' da notare che se l'ultima introduzione da tastiera e registro B14, il CRT registrato assume la seguente configura- 0 a 6 associato alle barre 102, mentre il numero 7 e associa- to al tasto RUN.
[0845] Se invece l'ultimo carattere introdotto e un codice alfa S.p.A.
[0846] numerico, almeno uno dei bit da b03 a b07 assume una configura Ing.C.OLIVETTI C., zione diversa da 10011, per cui viene eseguito un salto all'in dirizzo IGOTEH.
[0847] Il microprogramma che ha inizio in IGOTEH e quello che effettua l'introduzione dei caratteri .del registro 364 della RAM1, cioe realizza il secondo blocco funzionale ac- cennato in precedenza.
[0848] Se i bit b03-b07 hanno la configurazione 10011, viene ri- microistri zioni CRTA, ORE e SADI che verificano con una masche ra se il contenuto del registro B14 e uguale a 10011111 (bivio logico 602).
[0849] se tale contenuto e diverso, certamente il CRT e una barra del gruppo 102.
[0850] LUlficlale R Mediante le microistruzioni CRTA e ANDB vengono azze bit da 03 a 07 del registro B14, mentre i bit 00-02 indicat con 102 introdotta non vengono alterati (blocco 603).
[0851] Indi me- diante le microistruzioni CRTA e CRTB e sEDI vengono predi- sposti i registri operativi A09 ='g' e B02 ='1' e viene posto ad uno il deviatore D00.
[0852] Mediante le microistruzioni SOT e SADI viene controllato se il contenuto di B14 é ugua- le al contenuto di A09 (bivio logico 606).
[0853] Se i due registri hanno contenuto diverso, mediante le microistruzioni IcA e SHsB viene incrementato di un'unita il registro AO9 e viene C.OLIVETTI C., S.p.A.
[0854] B02 (blocco 607).
[0855] Indi con un salto incondizionato SAI, si ritorna al blocco 604, e si ripete il ciclo dei blocchi 604, 606, 607.
[0856] Tale ciclo viene ripetuto tante volte quanto e il numero d'ordine della barra 1o2 impostata.
[0857] .gul Se per esempio era stata impostata la barra S6 il ciclo viene ripetuto sette volte e cosi via.
[0858] E' da notare che quan- do il contenuto del registro B14 e uguale.
[0859] a quello del registro A09, il bit "1", inizialmente registrato nella prima posizione ni quanti sono stati i cicli effettuati.
[0860] Nell'esempio citato il bit "1" si trova registrato nella settima posizione del Quando B14 = AO9 mediante le microistruzioni MAD, AND e meno dal programma (bivio logico 608).
[0861] Come e stato detto in 98.
[0862] gE4 della RAM1 (registro 370 di Fig.
[0863] 9) con un byte di abi- litazione barre in cui i bit a iivello "1" identificano la barra abilitata.
[0864] In particolare erano state abilitate le barre sO, S1, S2, S6 (blocco 412 di Fig.
[0865] 11b) per cui nella posizione E4 della RAM1 si trova registrato il byte 01000111.
[0866] Mediante la microistruzione AND viene pertanto control- 1 lato se nella posizione del registro 370 corrispondente alla C.OLIVETTI C., S.p.A.
[0867] "1" cioé si controlla se la barra e stata abilitata.
[0868] Nell'esem pio citato sia nella sesta posizione del registro B02 che nel bit "1".
[0869] Nel caso invece che la barra non fosse stata abilitata si sarebbe effettuato un salto all'indirizzo IGOTAJ.
[0870] In tale in- dirizzo si trova registrata la microistruzione iniziale di un microprogramma che gestisce le operazioni conseguenti all'azio namento di una barra non abilitata per esempio l'accensione di una lampada della console 7 e l'attesa di una nuova in- troduzione.
[0871] Naturalmente tale microprogramma non viene descrit to poiché non costituisce l'oggetto della presente invenzione.
[0872] Se la barra azionata dall'operatore era stata abilitata che trasferisce nel registro operativo A02 il 5° byte del re- 99= gistro condizioni RC-359., che si trova registrato nella cella gcB.
[0873] Come e stato detto in tale byte sono registra- te a partire da destra i semibyte ottava e nona posizione di RC-359 e la nona posizione contiene il codice della bar- ra introdotta per ultima ed in precedenza registrata anche nella cella 188 (registro 365), come descritto con riferi- mento al blocco 403 di Fig.
[0874] 11a.
[0875] Viene quindi eseguita una microistruzione AzAP che pone a zero i bit della posizione 9 di RC.
[0876] Mediante le microistruzioni TAB e ROTB, viene trasferi- .C.OLIVETTI C., S.p.A.
[0877] in A09 dopo aver scambiato,i semibyte.
[0878] Nell'esempio considerato (azionamento della barra s6), nel registro A09 era presente il byte 00000110 per cui nel registro B02 si trova ora registrato il byte 0110 0000.
[0879] Attraverso la microistruzione ORA, viene eseguito l'OR tra il registro A02 e quello del registro B02, ed il risulta to viéne trasferito nel registro A02.
[0880] In tal modo, nel primo semibyte del registro Ao2 si trova registrato il codice bina- rio della barra azionata, e nel secondo semibyte il contenuto inalterato della posizione otto del RC-359.
[0881] Infine mediante la microistruzione AMD, viene ripristina to nella posizione nove di RC-359 il codice binario della bar ra azionata, mentre la posizione otto viene riscritta inalte- rata.
[0882] Tali operazioni sono brevemente indicate nel blocco 609 100 di Fig.13.
[0883] Nel caso che il tasto azionato non sia una barra, bensi il tasto RuN come si e detto veniva eseguito un salto all'in dirizzo IGOTuX in cui viene scritto mediante una CRTA (bloc- co 610) il carattere 0000 1001 nel registro A09.
[0884] Tale carat- tere corrisponde al tasto RuN, e mediante un salto incondizio- nato sAI all'indirizzo IGOTUY (blocco 609) viene eseguita la registrazione del carattere 'ioo1' nella posizione nove del microistruzione AMD del blocco 609, mediante le microistru- Ing.
[0885] C.
[0886] OLIVETTI C., S.p,A.
[0887] zioni CRTB e ORE, viene controllato se il contenuto del re- gistro A09 e uguale al carattere '06' che identifica la bar ra S6, (bivio logico 611).
[0888] Se il confronto ha esito negativo, viene controllato me- diante le microistruzioni CRTB, SEDI, SOT se il contenuto del registro A09 e maggiore o uguale a due, sioé se sono state azionate le barre so, s1, oppure la restante barra abilitata s2, (bivio logico 612).
[0889] si supponga che la barra azionata sia so, oppure s1, per cui il registro A09 contiene il byte 0000 0000, oppure 0000 0001.
[0890] Mediante la microistruzione MAD, CRTB e ANDB, viene estratto il byte CP-313 dall'indirizzo B6 e vengono azzerati i due Indi mediante le microistruzioni ORA e AND, viene risc 101 to nella cella gB6, il byte CP-313 i cui due bit mena significati vi contengono 00 o.01 second che la barra azionata sia so o 613.
[0891] Se invece era stata azionata la barra S6 (bivio logico 611) o la barra s2 (bivio logico 612) venica eseguito un salto all'indirizzo IGOTU6, o all'indirizzo IGOTU7 rispettivamente.
[0892] In entrambi i casi veniva eseguita la microistruzione CRTA (blocchi 614 e 615) la quale forzava nel registro A09 il carat- tere 0000 0010 o 0000 0011 rispettivamente.
[0893] Indi in ambedue i S.p.A.
[0894] cas veniva eseguito un salto incondizionato all'indirizzo 01 IGoTu8 a partire dal quale vengono eseguite le microistruzio- C.OLIVETTI ni gia descritte con riferimento al blocco 6i3.
[0895] Dopo di -cio, si salta all'indirizzo IALFA per eseguire Ing.
[0896] tramite il microprogramma interprete il riconoscimento della istruzione successiva come spiegato in precedenza.
[0897] In conclusione, si e visto come il terzo blocco funziona- condizione a 0o se e stata azionata la barra so, o1 per barra Le operazioni dei tre blocchi funzionali dell'istruzione YOP ora descritti sono indicate simbolicamente dai blocchi 420,421 e422 di Fig.11c.
[0898] viene ora ripresa la descrizione del programma di DBG con 102- riferimento alla tabella L e lla Fig.
[0899] 1ic.
[0900] Dopo l'esecuzio ne dell'istruzione.YoP viene analizzato il codice di condi- zione mediante tre istruzioni BDC di salto condizionato (bi- vio 1ogico 422, 423, 424.
[0901] si accenna ora brevemente alle operazioni associate alle barre so, sd e S6, che verranno poi spiegate in dettaglio.
[0902] Se e stata azionata la barra s0 si ha CC=O per cui viene eseguito ul salto all'indirizzo 17AE in cui e registrato il programma di lettura della memoria il quale visualizza l'istru zione successiva a quella gia visualizzata dalla YOP, oppure .C.OLIVETTI C., S.p.A.
[0903] nel caso che l'operatore abbia introdotto un numero in .tastie ra, viene visualizzata l'istruzione registrata all'indirizzo espresso dal numero impostato aumentato del contenuto del RB-310.
[0904] Ing.
[0905] Se e stato impostato in tastiera un numero ed e stata azionata la barra s1 (CC=1) viene eseguito un salto all'indi- l'arresto delle elaborazioni del programma da correggere all'in dirizzo di RAM1 espresso dal numero impostato aumentato del contenuto di RB-320.
[0906] 6.F) di otto CRT ed e stata azionata la barra s6 (CC = 3) vie- programma.che registra all'indirizzo di memoria visualizzato sul 103 display 7,l'istruzione o idatiintrodotti in tastiera e che visualizza il contenuto del campo registrato all'indirizzo visualizzato+4,permet dificare una qualsiasi istruzione del programma da correggere.
[0907] 4.
[0908] Programma introduzione da CM (barra s2) Si consideri ora il caso che sia stata azionata la barra S2 o il tasto RUN.
[0909] Tramite un'istruzione YBP2 viene azzerato il registro ba- se RB-310 e viene poi confrontato mediante un'istruzione NIC il contenuto della posizione 9 del registro condizioni 359 con la costante "1101".
[0910] Come é stato detto nella posizione 9 del re- S.p.A.
[0911] gistro condizioni era stato in precedenza compilato il codice binario della barra azionata.
[0912] In particolare il codice associa- .C:OLIVETTI to al tasto RUN e '1001'.
[0913] L'istruzione NIC pone a zero il codi- ce di condizione se l'AND e uguale a zero, e invece lo pone a "1" se l'AND é diverso da zero.
[0914] Se nella posizione 9 del regi- stro condizoni 359 e registrato 1001 (tasto RUN) l'AND e diver- so da zero per cui cc = 1; se invece e registrato 0010 (barra s2 1'AND é zero e CC=0 (blocco 426 di Fig.11c).
[0915] Viene controllato, mediante l'istruzione Fo (bivio logico 427) se il cC=0.
[0916] Se il CC=0, cioe se e stata azionata la barra s2, si salta l'istruzione seguente e si procede con la istruzione TLD1 che corrisponde al programma di "introduzione programma di DBG.
[0917] da C.M.
[0918] ed esecuzione immediata".
[0919] Se invece CC=1, mediante l'istruzione BD, si salta al- l'indirizzo 8C nel quale é registrato un programma che ripren 104 de l'esecuzione del programma interrotto, cioe trasferisce il registro 301-0PSR nel registro 300-PSR.
[0920] Nel caso.
[0921] di azionamento della barra s2 viene eseguita, come si e detto, l'istruzione TLD,1 e pertanto viene scritto nel registro P1-311 l'indirizzo 18C; e mediante l'istruzione SP2 viene forzato nel registro P2-312 l'indirizzo gBE.
[0922] Indi mediante l'istruzione MVC vengono trasferiti due byte a par- tire da gBE, all'indirizzo 18C.
[0923] In tal modo viene salvato nella seconda meta del registro 367 (Fig.
[0924] 9) l'indirizzo del programma di interruzione registrato nel registro IPsR-302 (blocco 428 di Fig.
[0925] 11c).
[0926] OLIVETTI C.,S.p.A.
[0927] Viene poi eseguita l'istruzione AP2 che forza l'indiriz- zo g15g nel registro P2-312, Mediante l'istruzione successiva STI0 viene trasferito il contenuto della cartolina magnetica 9 (Fig.
[0928] 1b) nei registri 360-367.
[0929] Ing.
[0930] L'istruzione sTI0 si puo considerare come divisa in due blocchi funzionali.
[0931] Il primo blocco compila nel registro 360 otto CRT i quali specificano l'unita periferica di selezione, il tipo di trasferimento (lettura o registrazione), indirizzo di RAM1 in cui devono essere introdotti o letti i dati e la lunghezza del campo interessato al trasferimento (massimo di 64 byte).
[0932] Tali caratteri vengono utilizzati dalla logica di ca- L'Ufficlale Roganta nale 45 per gestire il trasferimento (blocco 426).
[0933] Il secondo blocco funzionale provvede al trasferimento ed al controllo dell'esattezza dei dati ricevuti in maniera nota 105 (blocco 430) utilizzando il pointer P2 come indirizzatore della RAM1.
[0934] Viene quindi eseguita l'istruzione LAC che lancia il pro- gramma di C.M.
[0935] registrato nel modo che viene ora descritto con riferimento alla tabella N,la quale contiene il microprogramma associato alla fase BETA dell'istruzione LAC.
[0936] La prima microistruzione di tale microprogramma é una MAD la quale trasferisce nel registro A14 il byte CP-313 registra- to all'indirizzo ggB6.
[0937] Indi mediante le microistruzioni TADI e SADJ viene sondato il bit 03 di CP-313, il quale come si e vi- C.OLIVETTI C., S.p.A.
[0938] stc (Fig.
[0939] 9a) indica se l'istruzione e da leggere in RAM1 o in RoM2.
[0940] Tale controllo si rende necessario poiche l'istruzione LAC e lunga quattro byte (Tabella k) per cui viene letta in due fasi successive.
[0941] Durante la prima fase vengono trasferiti, co- me e stato spiegato nel capitolo relativo all'Interprete, nei registri B14 e B15 i primi due byte e cioe 'AB' ed '88' rispet- il quarto byte e cioé '1' e '5'.
[0942] Nel caso di programma di DBG l'istruzione LAc si trova registrata nella ROM2 per cui si ren- gramma registrato nel registro L07 (Fig.
[0943] 8).
[0944] Ci viene operato tramite le microistruzioni sLL e SAB.
[0945] Infine tramite due microistruzioni RoMA e una microistru- zione TAB vengono trasferiti nel registro L11 (Fig.
[0946] 8) il ter- zo e quarto byte dell'istruzione e cioé 'g15g' .
[0947] Nel caso che 106 TABELLA N IND.SIMB.
[0948] M-ISTRUZ.
[0949] CODICE I OPERANDO II OPERANDO IPSRI CEB6 MAD A14 CB6' BEE7 TADI A14 33C6 SADI D03 IPSRO 472F SLL L07 L02 522F SAB A02 B02 7BO0 ROMA A11 7A00 ROMA A10 Ing.
[0950] C.
[0951] OLIVETTI C., S.p.A.
[0952] 5ABC TAB A10 B11 15C8 SAI IPSR1 IPSRO E7BD MAIP M07 A11 E7B7 MBI MO7 .B11 .IPSR1 47BF SLL L07 L11 15C9 TBA A14 B15 DEB6 AMD A14 CB6 0200 SAI IALFA 107 l'istruzione LAC apparteneva ad.un programma residente nella RAM1 si sarebbe effettuato un salto all'indirizzo IPSRO per cui sarebbero state eseguite le microistruzioni MAIP e MBI in dirizzate dal registro L07.
[0953] In ogni caso nel registro L11 si trova registrato 1'indirizzo 'gi5g'.
[0954] Indi viene eseguita la microistruzione sLL per cui l'indirizzo 'pi5g: viene trasferi- to nell'indirizzatore di programma L07.
[0955] Indi mediante le micro- istruzioni TBA e AMD viene trasferito nel registro CP-313 il byte contenuto nel registro B14 e cioe il byte '88' che in co- dice esadecimale-binario assume la configurazione '10001000'.
[0956] S.p.A.
[0957] Viene poi eseguito un salto incondizionato all'indirizzo di microprogramma interprete (Fig.
[0958] 10a).
[0959] Le operazioni ora descritte sono indicate simbolicamente dal blocco 431 di Fig.
[0960] 11c.
[0961] In conclusione al termine dell'istruzione LAC si ha che nel registro CP-313 é registrato il byte 10001000 e che nel- l'indirizzatore di programma e registratol'indirizzo '15g'.
[0962] Ci significa che quando l'interprete giungera al bivio 250), poiche il bit 05 del byte CP (10001000) e a livello '0'.
[0963] Quando poi 1'interprete giungera al bivio logico 204 tro- dalla RAM1 (blocco 205) all'indirizzo indicato dal registro L07 e cioe'g15'.
[0964] 108 In tale indirizzo e stata registrata dall'istruzione sTI0 (blocco 431) la prima istruzione del programma di cartolina ma gnetica il quale, come e stato detto, si trova registrato nei registri da 360 a 367.
[0965] Questi ultimi si trovano allocati nelle celle della RAM1 comprese tra 15 e 18F (Fig.
[0966] 9.
[0967] Indi viene eseguito il programma di cartolina magnetica come un qualunque altro programma residente in RAM1.
[0968] E' da notare che forzando semplicemente il byte '88' nel registro CP-313 e stato possibile cambiare il supporto del pro- grarma in corso di esecuzione.
[0969] Infatti si e passati dalla lettu- S.p.A ra,la ROM2, in cui si trovano registrati i programmi di DBG, al OLIVETTI gistrato sulla cartolina magnetica 9.
[0970] Il programma di C.M.
[0971] pu essere un qualsiasi programma di gad.tttanb ep osuaatp(agq t9 e tad eatssea ezzay6unt Ip) ga senti nella RoM2.
[0972] Il programmatore avra pertanto a disposizione un gruppo di C.M.
[0973] su cui sono registrati altrettanti programmi di DBG, i quali possono comprendere i programmi forniti insie- me al sistema secondo l'invenzione oppure programmi da lui stes- so compilati per risolvere particolari problemi connessi con il tipo di programma da lui utilizzati.
[0974] Per esempio i programmi di * debugging per programmi orientati su problemi contabili saranno diversi dai programmi di debugging per programmi orientati su problemi.scientifici.
[0975] Ufficlale Roga E' da precisare che i programmi registrati su C.M.
[0976] devono -109- essere compilati in modo da fornire al termine della loro ese cuzione i parametri del programma che dovra essere attivato in seguito.
[0977] In particolare si possono avere tre casi: a) il programma di rientro da DBG e il programma interrotto in precedenza (programma in prova) ; b) il programma di rientro e un altro programma di DBG; c) il programma di rientro e definito dal programma di C.M.
[0978] oppure il programma di C.M.
[0979] chiude il lavoro di debugging.
[0980] Nei casi a) e b) il programma di C.M.
[0981] non pu essere lun- go al piu 48 byte in modo da non occupare i registri 366 e 367 C.OLIVETTI C.,S.p.A.
[0982] i quali come si e detto, contengono parametri che insieme a quelli registrati nel registro 0PsR-301 sono necessari alla ri- Ing.
[0983] Nel caso c) invece il programma di C.M.
[0984] pu essere lungo fino a 64 byte poiche i dati registrati nei registri 366 e 367 non verranno utilizzati per definire il programma successivo.
[0985] Il caso c) si presenta, per esempio, quando il programmato- 64 byte.
[0986] In tal caso il programmatore deve compilare suuna C.M.
[0987] un unj T4uan6as aT eaTdsa atenb II aXq t9 ntd Te o6unt eaueu6oxd zioni: 1) trasferisce una zona di memoria RAM1 definita dal programma- 110 tore su un supporto esterno per esempio unita a disco; 2) introdurre un programma registrato su un supporto esterno (cartoline magnetiche o nastro magnetico) nell'area in pre- cedenza liberata; 3) caricare il byte condizione di programma 313 con il bit 05 di CP a livello 1 (Lettura RAM) e l'indirizzatore di programma L07 con l'indirizzo della prima istruzione del programma cari- cato.
[0988] Quest'ultima operazione e stata descritta in dettaglio con riferimento alla Tabella N e, come si e visto, e eseguita da un'unica istruzione LAC.
[0989] 1ng.
[0990] C.
[0991] OLIVETTI C., S.p.A.
[0992] funzioni diagnostiche sul programma registrato nella restante parte della RAM1.
[0993] In tal modo e possibile eseguire programmi di DBG di una certa complessita,.e quindi di una certa lunghezza, senza al- terare il programma da provare contenuto nella RAM1.
[0994] Infatti si supponga che il programma da provare ed i suoi dati occupino interamente la zona libera della RAM1 per cui non esiste memoria disponibile per caricare un programma di DBG an- che di dimensioni minime.
[0995] In tale eventualita non sarebbe pos- sibile caricare il programma di DBG senza distruggere almeno parzialmente il programma in prova e non sarebbe poi possibile far funzionare alternativamente i due programmi.
[0996] Di conseguen- provare il programma su un elaboratore di capacita superiore e edi programmi di DBG.
[0997] Mediante il sistema secondo l'invenzione invece portan do semplicemente la chiave 1O0 in posizione DBG introducen- do la C.M.
[0998] 9 nel lettore di C.M.9' edazionando labarra s2, tenuto nella C.M.
[0999] e caricato nei registri 360-367 oppure 360- 365.
[1000] Tale operazione non altera la zona libera di memoria e quir,li il programma in prova.
[1001] Da questo punto in poi, come si .
[1002] OLIVETTI C., S.p.A..
[1003] e visto, il programma introdotto da C.M.
[1004] viene eseguito.
[1005] In particolare si supponga che il programma di C.M.
[1006] nente una parte del programma da provare, ad esempio la secon da meta.
[1007] si supponga inoltre che esso introduca in tale area un programma di DBG, il quale viene poi abilitato ad elaborare la prima meta del programma in prova residente in RAM1; agendo poi sulla chiave 100 si pu ottenere il funzionamento alterna- tivo dei due PGM.
[1008] Il programma di DBG esegue quindi le elabo- razioni di diagnostica e fornisce i risultati del controllo ef- fettuato stampando per esempio gli errori commessi nella com- pilazione del programma in prova.
[1009] Esso inoltre e stato compi- A questo punto il programma di DBG provvede a trasferire 112- su un supporto esterno la parte controllata e corretta del programma .in prova ed a caricare al suo posto la seconda me- ta del programma in prova in precedenza trasferito sul sup- porto esterno.
[1010] Indi viene controllata la seconda meta del programma in prova e vengono stampati in modo analogo a quanto detto prima i risultati del controllo effettuato.
[1011] Successivamente il programmatore é in grado di apportare le correzioni alle istruzioni sulla base del controllo effet- tuato dal programma di DBG; e di ricaricare il programma cor retto xella RAM1.
[1012] Indi il programmatore comanda l'esecuzione S.p.A.
[1013] del programma cosi corretto.
[1014] Da quanto detto si e visto come C.OLIVETTI C., il programmatore utilizzando il sistema di DBG secondo l'in- complessi senza alterare il programma in prova.
[1015] Come é stato detto il sistema di DBG secondo l'invenzione permette inoltre di richiamare programmi di DBG gia registrati nella RoM2 semplicemente azionando la chiave 1o0 ed una delle barre 102 (s0, s1, s6).
[1016] 5.
[1017] Programma leggi RAM1 (barra so) con l'azionamento della barra s0 (bivio logico 423 Fig.
[1018] 11c) zo e registrata un'istruzione AP,1 la quale forza l'indirizzo C7 nel registro P1-3i1; indi viene eseguita un'istruzione 113 la quale forza l'indirizzo gC7 nel registro RB- 310.
[1019] Median te l'istruzione NI viene azzerato il bit 02 del byte BSD-351 (blocco 435 di Fig.
[1020] 11d).
[1021] Indi mediante le istruzioni YBP,1 e SP,1 viene portato il registro base RB-310 a 16g ed il re- gistro P1 a.g1g (blocco 436).
[1022] Viene poi controllato tramite 1'istruzione CBI,1 se sono stati introdotti dei dati nel re- gistro 364 (bivio logico 437).
[1023] Se sono stati introdotti dati in tastiera si salta all'indirizzo 17C4, altrimenti viene ese- guita i'istruzione ARI la quale somma la costante 4 al conte- nuto del registro 365 (blocco 438).
[1024] Come si e visto, in tale registro e contenuto l'indirizzo relativo del programma inter rotto (blocco 408 di Fig.
[1025] 11a).
[1026] Indi tale indirizzo cosi mo- zione LR, e viene eseguito un salto incondizionato all'indiriz co 409 in poi ha inizio la visualizzazione dell'istruzione con tenuta nell'indirizzo caricato nel registro 362.
[1027] In questo caso vengono visualizzati i due byte successivi alla istruzione visualizzata in precedenza.
[1028] Pertanto azionando la chia ve 100 e la barra s0 possono venire visualizzate sul display 7 una alla volta le istruzioni del programma da correggere.
[1029] Se invece l'azionamento della barra so e stata preceduta un'introduzione da tastiera e stata conclusa con l'azionamen- to della.barra s1 (bivio logico 424 di Fig.
[1030] 11c) si salta al- l'indirizzo 17C4.
[1031] Viene impaccato e trasferito nel registro 362 il contenuto del registro 364, .il quale contiene 1'indi- operazioni sono indicate dal blocco 439 di Fig.
[1032] 11e.
[1033] Indi mediante le istruzioni NIC e BD viene controllato se la barra azionata e so oppure S1, cio viene fatto mediante cedenza compilato secondo la barra azionata (Fig..13) e la co- stante 1101 (blocco 440).
[1034] Se 1'AND é zero si esegue un salto all'indirizzo 173C.
[1035] Pertanto vengono eseguite le operazioni Ing.
[1036] C.
[1037] OLIVETTI C., S.p.A.
[1038] descritte a partire dal blocco 408 di Fig.
[1039] 11a e cioe viene visualizzata l'istruzione il cui indirizzo e stato introdotto 362 (blocco 439 di Fig.
[1040] 11e).
[1041] In conclusione se viene intro- dotto nella tastiera 5 un indirizzo e viene azionata la barra so, viene visualizzata i'istruzione contenuta nell'indirizzo impostato.
[1042] 6.
[1043] Programma di prenotazione sTOP (Barra s1) Se invece e stata azionata la barra S1 mediante le istru- zioni TLD,2 e YBP viene portato a 158 il registro RB-3T0.
[1044] Indi viene eseguita la somma (AR) dei contenuti dei registri 361 e 362 ed il risultato viene registrato nel registro 361 (blocco 442).
[1045] Il registro 361, come si e detto con riferimento al bloc- co 415 di Fig.
[1046] 11b, contiene il registro base RB-320 del program- ma interrotto, mentre il registro 362 (blocco 439) contiene.l'in 115 dirizzo relativo impostato in tastiera 5.
[1047] Pertanto mediante le operazioni descritte dal blocco 442 viene compilato nel registro 361 l'indirizzo assoluto del programma interrotto selezionato dal programmatore mediante la tastiera 5.
[1048] Mediante un'istruzione CvB l'indirizzo assoluto espres- so in binario viene decodificato in decimale e viene trasfe- rito nel primo e secondo byte del registro 361 (blocco 443).
[1049] Mediante le istruzioni SP,2; TLD,1; YBP,1; TLD,1; e MVC ta- le indirizzo viene trasferito nel registro Is-350 (blocco 444'.
[1050] Tramite le istruzioni 0I viene posto ad 1 il bit 02 de.
[1051] byte BsD-351, viene poi forzato l'indirizzo 16g nel re- S.p.A.
[1052] gistra RB-3i0 e successivamente vene eseguito un salto.in- Ing.C.OLIVETTI C., condizionato all'indirizzo 17BE (blocco 438 di Fig.
[1053] 11d).
[1054] Da con riferimento ai blocchi 438' (Fig.
[1055] 11d), 409 e seguenti (Figg.
[1056] 11a e 11b e c) per cui permane sul display 6 l'istru- zione in precedenza visualizzata.
[1057] Si é visto pertanto che se il programmatore imposta un indirizzo relativo sulla tastiera 5 ed aziona la barra s1, viene automaticamente scritto nel re Postato e viene posto al binario "1" il.bit 02 del BSD-351.
[1058] Come spiegato in precedenza, tali dati vengono utilizzati dal se ALFA di ogni istruzione se l'indirizzo dell'istruzione in corso e uguale a quello prenotato (bivio logico 258 e 262 di -116- Fig.10b).
[1059] Dopo aver prenotato l'indirizzo di sToP, il programma- tasto RuN.
[1060] Riprende quindi l'elaborazione del programma da ne visualizzata sul display 6.
[1061] Sara quindi il programma interprete ad arrestare l'ela- borazione ed a visualizzare l'istruzione quando l'indirizzo prenotato e uguale all'indirizzo dell'istruzione da eseguire.
[1062] rizzo di arresto del programma" risulta evidente se si consi- dera il caso di un programma da correggere che sia errato da un certo punto in avanti.
[1063] In questo caso e utile arrestare le elaborazioni diretta- mente all'inizio del blocco di istruzioni in cui si presume che ng.
[1064] ci sia un errore.
[1065] 7.
[1066] Programma di scrittura in RAM1 (Barra S6).
[1067] il programma di DBG esegue un salto al blocco 446 di Fig.
[1068] 11.f che corrisponde all'indirizzo 17EE della tabella L.
[1069] A partire da questo indirizzo e registrato il "programma di scrittura nella RAM1" e quindi gli otto caratteri esadecima- li come verra di seguito spiegato, vengono considerati come una modifica del contenuto della RAM1.
[1070] L'Ufficlala Rogay 117 La prima istruzione registrata all'indirizzo 7EE e unaAP,2 che posiziona il pointer P2-312 sul 4 byte del registro 364, mentre la successiva istruzione TcP posizio- na il pointer P1-311 sul primo byte del registro 364.
[1071] Come e stato detto con riferimento al blocco 421 di Fig.
[1072] 11c, nel registro 364 vengono registrati i caratteri introdotti da tastiera.
[1073] Indi viene eseguita l'istruzione YTC la quale impacca e transcodifica i caratteri introdotti presenti nel registro 364, tali istruzioni sono rappresentate simbolicamente dal S.p.A.
[1074] blocco 446 diFig.
[1075] 11f.
[1076] Indi mediante le istruzioni TLD,2; YBP,2 e TRD,1 viene trasferito nel registro P1-311 il conte- .OLIVETTI nuto del registro 362 il quale come si e visto (blocco 420 di Fig.
[1077] 1lc) contiene l'indirizzo dell'istruzione o dati presenti sul dislpay 6.
[1078] Viene poi azzerato mediante una TL,2 il registro Ing.
[1079] P2-312 (blocco 447 di Fig.
[1080] 11f).
[1081] Mediante le istruzioni YBP,2; AP,2.e MvC viene trasferito il contenuto del registro 364 nel registro di memoria RAM1 indirizzato dal registro P1-311 (bloc- co 448.
[1082] Indi viene posizionato il registro RB-310 al valore (blocco 438 di Fig.
[1083] 11d) a partire dal quale viene visualizza- ta l'istruzione o i dati successivi a quella modificata nel mo do detto .
[1084] in precedenza.
[1085] Si e visto pertanto come impostando 8 CRT sulla tastiera 5 e azionando la barra S6, sia possibile modificare il contenuto 118 dell'istruzione presente sul display 6.
[1086] 8.
[1087] Programma di esecuzione passo-passo.
[1088] Se infine l'operatore aziona il tasto RuN della console to un salto all'indirizzo 18gC.
[1089] Vengono pertanto eseguite le istruzioni TLD,2,- TLD,1 e MVC (blocco 450 di Fig.
[1090] 11g) per ripristinare nelle celle CA e CB i due byte del registro RC-359 in precedenza trasferiti nel registro 367 (ved.
[1091] blocco 403 di Fig.
[1092] 11a); successivamente mediante le istruzioni AP,2; AP,1 e MVc (blocco 451) viene ripristinato nel registro AB-370 il .
[1093] C.
[1094] OLIVETTI C., S.p.A.
[1095] byi abilita barre in precedenza trasferito nella cella g18A (blocco 404 di Fig.
[1096] 11a).
[1097] -Mediante le istruzioni SP,2; SP,1 e MVC (blocco 452) vie trasferito nel registro 366 (blocco.401 di Fig.
[1098] 11a).
[1099] Ing.
[1100] Infine viene eseguita un'istruzione YPs la quale ripri- stina il registro 0PsR-301 nel registro PsR-300 e trasferisce il registro IR-327 nell'indirizzatore di programma L07 (blocco 452).
[1101] In tal modo viene letta l'istruzione del programma in pro va successiva a quella visualizzata dal display.
[1102] Piu precisamente il programma interprete: 1) esegue il salto all'indirizzo simbolico IINTE (bivio lo- e PI-314 hanno sempre il bit 05 al livello uno, dato che la chi@ ve 100 é sempre in posizione DBG.
[1103] 119 2) Poiche il bit 01 del BSD e al livello zero,(che corrisponde al suo assettonormale) viene eseguito un salto all'indirizzo IINTE1 (bivio logico 257 e blocco 265 di Fig.10b),il bit b01 del BSD viene posto ad uno e siprocede infine all'esecuzione dell'istruzione me- diante il salto a IALFAR (blocco 265).
[1104] 3) Alla fine di tale istruzione, l'interprete esegue le operazioni spiegate al punto 1) sull'istruzione che segue, ed al bivio logico 257 procede in sequenza per quanto detto al punto 2).
[1105] Viene inoltre posto a zero il bit 01 di BSD, il quale pertanto viene sempre annullato prima della esecuzione di un programma di DBG.
[1106] OLIVETTI C., S.p.A.
[1107] 4) Come spiegato in precedenza (Figure 10b e 10c) si passa ad ese- guire il programma di DBG e quindisi visualizza l'istruzione eseguita.
[1108] si e visto pertanto che se il programmatore pone la chiave 1o0 nel- la posizione di DBG ed aziona il tasto RUN viene eseguita l'istru- zione visualizzata.
[1109] Ogni volta che viene azionato il tasto RUN il contatore di programma viene incrementato di quattro unita come si e detto a proposito dell'interprete e l'elaboratore esegue l'istru zione registrata in tale indirizzo.
[1110] E' possibile quindi mediante l'azionamento ripetuto del tasto RUN comandare l'esecuzione di un'istruzione ela visualizzazione dell'i- za alternata di esecuzione dell'istruzione con visualizzazione della ta per il DBG di un programma in prova e evidente.
[1111] 120 CONCLUSIONI viene fatta ora con riferimento alla Figura 14, una descrizione conclusiva delle possibilita offerte al program- sistema di DBG secondo l'invenzione.
[1112] Normalmente il programmatore carica nel calcolatore il Quando si accorge di un errore, gira la chiave 1oo nella posizione DBG (bivio logico 701) ed arresta cosi l'esecuzione S.p.A "0 del programma in prova, provocando poi la visualizzazione sul OLIVETTI zione (blocco 702).
[1113] Lelaboratore puo inoltre passare al fun- Ing.C.
[1114] zionamento in debugging anche quando e stato riconosciuto l'indirizzo di arresto delle elaborazioni prenotate in prece- denza.
[1115] In tale eventualita l'elaboratore si compor- ta come se fosse stata azionata la chiave 1o0 e quindi anche in questo caso alle barre so-s6 viene attribuito il signifi- cato descritto in precedenza per il funzionamento in DBG.
[1116] A questo punto il programma di DBG abilita le barre sO, S1, s2, S6 e si pone in attesa di introduzione dati da ta- stiera (blocco 703).
[1117] A seconda della barra azionata (bivi logici 704, 705) l'elaboratore esegue il corrispondente programma di DBG, gistrato nella ROM2.
[1118] 121 Al termine dei programmi di DBG associati alle barre sO, S1, S6 ed al tasto RUN, l'elaboratore ritorna al blocco 701 per richiedere l'esecuzione di un altro programma di DBG.
[1119] Se invece l'operatore ha comandato tramite la barra s2 1'esecuzione di un programma registrato su C.M.
[1120] (blocco 706), il rientro e controllato dallo stesso programma di C.M.
[1121] In gramma in prova oppure altri programmi di DBG), oppure al bi- vio logico 702 e quindi direttamente in DBG.
[1122] Ing.C.OLIVETTI C., S.p.A.
[1123] Il programma registrato su C.M.
[1124] offre al programmatore la possibilita di attivare altri programmi di DBG registrati su altri supporti e di conseguenza il programmatore ha a di- sposizione tutti i tipi di rientro da lui previsti.
[1125] Vengono ora fatti due esempi semplici di utilizzazione del sistema di DBG secondo l'invenzione.
[1126] Esempio1 si supponga che il programmatore debba ricercare un erro- re in un programma.
[1127] Egli pu per esempio, dividere il programma in blocchi di un certo numero di istruzioni e cercare nell'ambi- to del biocco l'istruzione errata.
[1128] In questo caso deve procede- re nel modo seguente.
[1129] zata l'istruzione successiva a quella di interruzione.
[1130] - Imposta in tastiera l'indirizzo relativo dell'istruzione a cui vuole che il programma si arresti ed aziona la barra s1, (bloc- .122 chi 710 e 711).
[1131] - Riporta la chiave 1OO in posizione NORMAL ed aziona il ta- Sto RUN.
[1132] Il programma in prova riprende i'esecuzione fino all'in- dirizzo prenotato.
[1133] A questo indirizzo il programma in prova si arresta e viene visualizzata l'istruzione registrata all'indi- rizzo prenotato (blocco 702).
[1134] Poiche il programma e stato ese- guito fino all'indirizzo prenotato, cio indica che in tale bloc- co non c'erano errori formali.
[1135] si suppornga anche che non sia- no presenti errori inerenti al programma in prova.
[1136] Il program- ma ore prenota nel modo 'visto precedentemente, l'indirizzo del S biocco successivo, riporta la chiave 100 in NORMAL ed azionail OLIVETTI tasto RuN.
[1137] si supponga ora che il programmatore rilevi un errore di ng.
[1138] zione da correggere.
[1139] Imposta allora in tastiera l'indirizzo ini ziale del blocco ed aziona la barra s0 (blocchi 712 e 713).
[1140] Il programma di DBG provvede a visualizzare sul display l'indiriz- zo e l'istruzione corrispondente ritornando quindi nei blocchi 702 e 703.
[1141] A questo punto il programmatore dopo aver corretto gli errori contenuti nel blocco aziona il tasto RuN che provoca la ripresa del programma in prova dal punto in cui era stato interrotto.
[1142] In tal modo il programmatore pu eseguire istruzione per istru- zione il blocco nel quale ha presunto che ci sia un errore.
[1143] Quando rileva che l'istruzione visualizzata e errata, in- -123- vece di azionare il tasto RuN compila sulla tastiera l'istru zione corretta ed aziona la barra s6.
[1144] In questo modo il pro- gramma di DBG sostituisce all'indirizzo visualizzato l'istru zione errata con quella impostata in tastiera.
[1145] In tal modo il programmatore ha la possibilita di con- correzioni che ritiene opportuno.
[1146] Esempio 2.
[1147] si supponga ora che il programma da mettere a punto oc- cupi tutta la parte dela memoria disponibile.
[1148] ,C.OLIVETTI C., S.p.A.
[1149] Si supponga inoltre che alla fine di tutte le possibili operazioni di DBG eseguite dai relativi programmi residenti in RoM2, il programmatore non sia stato in grado di eliminare gli errori.
[1150] Da quanto detto, e evidente che il programma in prova non Ing, potra piu essere ripreso, e quindi il programmatore dovra rive- dere il suo programma.
[1151] Per fare cio, gli e senz'altro utile avere stampato su un tabulato contenuto della RAM1.
[1152] In tal modo il programmatore analizzando tale risultato pu risalire alle istruzioni errate.
[1153] Naturalmente per eseguire la stampa del contenuto della memoria, e necessario che un apposito programma di DBG ne controlli l'ese cuzione.
[1154] Poiche tale programma non fa parte di quelli registrati in ROM2 il programmatore pu utilizzare una C.M.
[1155] su cui tale pro gramma si trova registrato.
[1156] 124 Per avere la stampa del contenuto della memoria, il pro- grammatore deve operare nel modo seguente: - Introduce la C.M.
[1157] nell'introduttore 9'.
[1158] Posiziona la chiave 100 su DBG.
[1159] - Aziona la barra s2.
[1160] Come si e visto in precedenza, cio provoca che il program- ma registrato su C.M.
[1161] viene trasferito nei registri 360-367 del la zRM e viene eseguito immediatamente.
[1162] si ribadisce che i registri 360-367 non sono riservati esclusivamente ai programmi di DBG, ma vengono utilizzati du- rante il funzionamento normale per contenere risultati interme X di di alcune istruzioni.
[1163] Si fa notare inoltre che tali registri 360-367 sono comun- que presenti in qualsiasi elaboratore, perche e sempre necessa- rio memorizzare risultati intermedi in alcune istruzioni (come per esempio nelle istruzooni di moltiplicazione e divisione).
[1164] Risulta evidente da quanto detto come l'utilizzazione di tali registri della zRM permette di caricare e di eseguire un qualsiasi programma registrato su una c.M.
[1165] senza alterare i parametri significativi del programma in prova.
[1166] I vantaggi di tale possibilita non sono derivanti esclu- sivamente dal programma di DBG registrato su C.M.
[1167] il quale e limitato di per se, ma derivano soprattutto dalla possibilira che tale programma ha di poter liberare una zona di memoria L'Offic senza distruggerne il contenuto e di registrare in tale zon 125 un programma di DBG di lunghezza e di complessita superiore.
[1168] Da quanto detto, appare evidente come il programmatore, utilizzando il sistema di DBG secondo l'invenzione sia comple- tamente indipendente per ci che concerne la stesura e la mes- sa a punto di un programma o una modifica ad un programma esi stente.
[1169] .Appare ancora chiaro come la gamma di possibilita offerta al programmatore dal sistema secondo l'invenzione sia in effet ti di gran lunga superiore a quanto descritto in precedenza.
[1170] Infatti essa dipende essenzialmente dalla complessita del pro .C.
[1171] OLIVETTI C., S.p.A.
[1172] blema trattato, dal numero di programmi di DBG a disposizione ed infine dalle capacita del programmatore.
[1173] si intende che al sistema di messa a punto dei programmi o aggiunte di parti senza uscire dall'ambito della presente in venzione.
[1174] Per esempio la chiave 1o0 che serve al programmatore per attivare i programmi di debugging pu essere sostituita da un tasto che abilita un commutatore, il risultato essenziale e che il livello logico del segnale presente sul filo 61 di Fig.
[1175] 2c sia commutato in qualunque modo.
[1176] Il supporto esterno dei programmi di debugging a disposi- zione del programmatore, oltre che una c.M.
[1177] puo essere un nastro magnetico, un gruppo di cartoline perforate eccetera.
[1178] L'unico vincolo é che il numero dei caratteri registrati su tale suppor 126 1a ZRM.
[1179] I programmi di DBG residenti nella ROM2 e descritti in precedenza, possono variare sia in numero sia in contenuto secondo la zona di ROM2 disponibile e le esigenze del calco- latore.
[1180] La funzione riservata alle barre so-s6 durante l'esecu- zione dei programmi di DBG residenti in ROM2, pu essere fat- ta da altri tasti alfabetici compresi tra G e z, essendo quel- li tra A ed F utilizzati dal codice esadecimale per modifica- .C.OLIVETTI C.,S.p.A.
[1181] re le istruzioni.
[1182] Anche tasti aggiunti espressamente per ri- chiamare i programmi di DBG residenti nella ROM2, o deviatori o chiavi, rientrano nelle varianti possibili al sistema di mes sa a punto dei programmi illustrati nelle pagine precedenti.
[1183] I registri 360-367 della zRM della RAM1 che durante il fun ng.
[1184] zionamento in DBG memorizzano il programma di DBG registrato su un supporto esterno, possono essere disposti in maniera di- versa da quella illustrata in Fig.
[1185] 9.
[1186] Piu precisamente essi pos- sono occupare qualsiasi cella nella zRM, purche il loro contenu to sia non significativo al termine delle istruzioni che le sti non sequenzialmente nella zRM, ma allocati in gruppi sepa- rati.
[1187] In questo caso, sara cura del programmatore indirizzare Infine sia i programmi di DBG registrati in ROM2, che la -127 zona di RAM1 (registri 360-367) destinata a ricevere altri programmi di DBG registrati su supporti esterni (per es.
[1188] C.M.), sono essere allocati in una zona della RAM1 predisposta per ri- l'unita centrale 3 destinata esclusivamente a contenere pro- grammi di DBG.
[1189] Infine e da precisare che il riconoscimento delle condi- zioni esterne che interessano i programmi di DBG (chiave 100 e de tinati a ricevere dette condizioni, puo essere fatto in un C.OLIVETTI C., S.p,A.
[1190] qualsiasi altro modo diverso da quello descritto.
[1191] .
Claims (1)
1. 1.
Calcolatore elettronico con apparecchiatura per la messa a punto dei programmi operativi comprendente una prima memoria Ing.
per contenere le istruzioni ed i dati di detti programmi ope- rativi, una seconda memoria per contenere i microprogrammi as- sociati a dette istruzioni, un'unita centrale per eseguire det- ti microprogrammi, caratterizzato da mezzi di commutazione per definire selettivamente un primo funzionamento di detto calco- latore per l'elaborazione di detti programmi operativi ed un secondo funzionamento per l'elaborazione di un programma di messa a punto di detti programmi operativi e damezzi control- lati da detti mezzi di commutazione per condizionare detta -128- mi operativi e ad attivare detto programma di messa a punto.
2.
Calcolatore come nella rivendicazione caratterizzato da ci che detti mezzi di commutazione generano selettivamente detto primo funzionamento ed un secondo livello logico asso- ciato a detto secondo funzionamento e che detti mezzi control- lati sono condizionati da detto secondo livelio logico di det- per attivare detto secondo funzionamento.
3.
Calcolatore come nella rivendicazione 2 caratterizzato da ci che detti mezzi controllati comprendono mezzi per ricono- S scere detto secondo livello logico di detto primo segnale, mez- zi di registrazione controllati da detto mezzi per riconoscere OLIVI per registrare in un primo registro di detta prima memoria det- to primo segnale logico, un secondo registro di detta prima me- moria per registrare un secondo segnale di abilitazione di det- to primo segnale e mezzi di attivazione inclusi in detta unita centrale per attivare detto secondo funzionamento in presenza di detto secondo livello logico di detto primo segnale e di det- to secondo segnale di abilitazione.
4.
Calcolatore come nella rivendicazione 3, in cui detta unita l'indirizzo di detta prima memoria dell'istruzione successiva all'istruzione in esecuzione, caratterizzato da ci che detti L'Ufficial mezzi di attivazione comprendono un terzo registro di detta pr 129 ma memoria per registrare un terzo segnale avente un primo li vello logico associato a detta prima memoria ed un secondo livello logico associato a detta seconda memoria, mezzi di in- lo logico di detto terzo segnale per registrare rispettivamente in detto primo registro operativo l'indirizzo di detta prima e di detta seconda memoria di detta istruzione successiva ed in detto secondo registro un quarto segnale avente un primo ed un secondo livello logico associato a detta prima ed a detta se- conda memoria rispettivamente.
5.
Calcolatore come nella rivendicazione 4, caratterizzato da S.p.A .C.OLIVETTI C., mezzi di lettura controllati da detto primo livello logico e da detto secondo livello di detto quarto segnale per leggere detta istruzione successiva in detta prima e in detta seconda memoria rispettivamente.
.8ul .6.
Calcolatore come nella rivendicazione 5, caratterizzato da ci che detto programma di messa a punto é registrato in una predeterminata zona di detta seconda memoria e che detti mez- zi di indirizzamento sono controllati da detto secondo livello logico di detto terzo segnale per registrare rispettivamente in detto registro operativo l'indirizzo di inizio di detta prede- terminata zona ed in detto secondo registro detto secondo li- vello logico di detto quarto segnale.
7.
Calcolatore come in una delle rivendicazioni precedenti, comprendente inoltre una tastiera per introdurre dati e coman- 130 di in detta unita centrale ed in cui detto programma di.messa a punto comprende una pluralita di blocchi, caratterizzato da predeterminati tasti di detta tastiera associati a corrispon- denti blocchi di detto programma di messa a punto, e da mezzi di selezione controllati da detti predeterminati tasti per se- lezionare detti corrispondenti blocchi.
8.
Calcolatore come nella rivendicazione 7 caratterizzato da un quarto registro di detta prima memoria per registrare com- binazioni di segnali associate a detti predeterminati tasti, me i di scrittura controllati da detti predeterminati tasti S.p.A pe- scrivere in detto quarto registro dette combinazioni C.OLIVETTI C segnali, detti mezzi di selezione essendo attivati da.detta combinazioni di segnali per selezionare detti corrispondenti blocchi.
9.
Calcolatore come nella rivendicazione 8 caratterizzato da cio che detti mezzi di selezione comprendono mezzi per rico- noscere dette combinazioni di segnali registrate in detto quar- to registro, detti mezzi di scrittura essendo controllati da detti mezzi per riconoscere per scrivere selettivamente in detto registro operativo l'indirizzo di detti blocchi associa ti a dette predeterminate combinazioni di segnali.
10.
Calcolatore come nelle rivendicazioni 7, 8 o 9 comprenden- centrale dati e programmi registrati su un supporto esterno, caratterizzato da una terza memoria per contenere detti pro- 131 grammi registrati su detto supporto, da un tasto di detti Predeterminati tasti associato ad un predeterminato blocco di detta pluralita, da mezzi controllati da detto predeter- to supporto in detta terza memoria e da mezzi per attivare det- to programma registrato in detta terza memoria.
1i.
Calcolatore come nella rivendicazione 10, caratterizzato da ci che detta terza memoria é inclusa in detta prima memo ria.
12.
Calcolatore come nella rivendicazione 11 caratterizzato S.p.A da mezzi controllati da detti programmi operativi di detto pri mo funzionamento per registrare in detta terza memoria infor- OLIVETTI mazioni associate a detti programmi operativi.
13.
Calcolatore come nella rivendicazione 12 caratterizzato da na magnetica, e detto supporto di registrazione comprende una cartolina magnetica.
14.
Calcolatore come in una delle rivendicazioni da 10 a 13 ca- ratterizzato da ci che detti mezzi per attivare detto programma controllano detti mezzi di indirizzamento per registrare in det- to registro operativo l'indirizzo di detta terza memoria.
15.
Calcolatore come nella rivendicazione 14 caratterizzato da ci che detti mezzi per attivare detto programma controllano det- ti mezzi di indirizzamento per registrare in detto secondo re- 132 P.pi Ing.C.OLIVETT1 C.S.p.A.
L'Ufficiale Rogante 133 .
Priority Applications (11)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| IT70879/73A IT1000643B (it) | 1973-12-28 | 1973-12-28 | Calcolatore elettronico con appa recchiatura per la messa a punto dei programmi operativi |
| BE151062A BE822844A (fr) | 1973-12-28 | 1974-12-02 | Calculateur electronique avec appareillage pour la mise ou point des programmes operatoires |
| JP14039174A JPS5722137B2 (it) | 1973-12-28 | 1974-12-06 | |
| DE2458651A DE2458651C2 (de) | 1973-12-28 | 1974-12-09 | Elektronische Datenverarbeitungsanlage mit Einrichtung zur Fehlerbefreiung von Programmen |
| CA215,646A CA1032273A (en) | 1973-12-28 | 1974-12-10 | Electronic computer with equipment for debugging operative programs |
| AR256880A AR208682A1 (es) | 1973-12-28 | 1974-12-12 | Calculador electrico con equipo para la puesta a punto de los programas operativos |
| GB53991/74A GB1480520A (en) | 1973-12-28 | 1974-12-13 | Electronic computer with debugging equipment |
| AU76517/74A AU488016B2 (en) | 1974-12-17 | Electronic computer with equipment for debugging operative programmes | |
| ES433381A ES433381A1 (es) | 1973-12-28 | 1974-12-27 | Perfeccionamientos en calculadoras electronicas. |
| FR7443047A FR2256476B1 (it) | 1973-12-28 | 1974-12-27 | |
| US05/648,587 US3987420A (en) | 1973-12-28 | 1976-01-12 | Electronic computer with equipment for debugging operative programs |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| IT70879/73A IT1000643B (it) | 1973-12-28 | 1973-12-28 | Calcolatore elettronico con appa recchiatura per la messa a punto dei programmi operativi |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| IT7370879A1 true IT7370879A1 (it) | 1975-06-28 |
| IT1000643B IT1000643B (it) | 1976-04-10 |
Family
ID=11314444
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| IT70879/73A IT1000643B (it) | 1973-12-28 | 1973-12-28 | Calcolatore elettronico con appa recchiatura per la messa a punto dei programmi operativi |
Country Status (9)
| Country | Link |
|---|---|
| JP (1) | JPS5722137B2 (it) |
| AR (1) | AR208682A1 (it) |
| BE (1) | BE822844A (it) |
| CA (1) | CA1032273A (it) |
| DE (1) | DE2458651C2 (it) |
| ES (1) | ES433381A1 (it) |
| FR (1) | FR2256476B1 (it) |
| GB (1) | GB1480520A (it) |
| IT (1) | IT1000643B (it) |
Families Citing this family (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| IT1047329B (it) * | 1975-09-30 | 1980-09-10 | C Olivetto E C S P A Ing | Dispositivo di teleaccensione e di inizzializzazione di un terminale |
| JPS5580153A (en) * | 1978-12-14 | 1980-06-17 | Toshiba Corp | Program processor |
| JPS55128641A (en) | 1979-03-23 | 1980-10-04 | Nissan Motor Co Ltd | Controlling system for vehicle |
| USRE31582E (en) * | 1979-03-23 | 1984-05-08 | Nissan Motor Company, Limited | Automatic control system for method and apparatus for checking devices of an automotive vehicle in use with a microcomputer |
| DE2912657A1 (de) * | 1979-03-30 | 1980-10-09 | Olympia Werke Ag | Datenverarbeitendes geraet |
| DE3038367C2 (de) * | 1979-10-13 | 1994-06-23 | Canon Kk | Elektrofotografisches Gerät |
| JPS59133610A (ja) * | 1983-01-19 | 1984-08-01 | Omron Tateisi Electronics Co | プログラマブルコントロ−ラ |
| JPH01137018U (it) * | 1988-03-12 | 1989-09-19 |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3415981A (en) * | 1967-10-10 | 1968-12-10 | Rca Corp | Electronic computer with program debugging facility |
-
1973
- 1973-12-28 IT IT70879/73A patent/IT1000643B/it active
-
1974
- 1974-12-02 BE BE151062A patent/BE822844A/xx not_active IP Right Cessation
- 1974-12-06 JP JP14039174A patent/JPS5722137B2/ja not_active Expired
- 1974-12-09 DE DE2458651A patent/DE2458651C2/de not_active Expired
- 1974-12-10 CA CA215,646A patent/CA1032273A/en not_active Expired
- 1974-12-12 AR AR256880A patent/AR208682A1/es active
- 1974-12-13 GB GB53991/74A patent/GB1480520A/en not_active Expired
- 1974-12-27 FR FR7443047A patent/FR2256476B1/fr not_active Expired
- 1974-12-27 ES ES433381A patent/ES433381A1/es not_active Expired
Also Published As
| Publication number | Publication date |
|---|---|
| CA1032273A (en) | 1978-05-30 |
| DE2458651A1 (de) | 1975-07-10 |
| DE2458651C2 (de) | 1987-03-12 |
| GB1480520A (en) | 1977-07-20 |
| FR2256476A1 (it) | 1975-07-25 |
| ES433381A1 (es) | 1976-12-16 |
| IT1000643B (it) | 1976-04-10 |
| BE822844A (fr) | 1975-04-01 |
| JPS5722137B2 (it) | 1982-05-11 |
| AU7651774A (en) | 1976-06-17 |
| AR208682A1 (es) | 1977-02-28 |
| JPS5099445A (it) | 1975-08-07 |
| FR2256476B1 (it) | 1979-03-16 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US3987420A (en) | Electronic computer with equipment for debugging operative programs | |
| CA1151306A (en) | Programmable controller | |
| US3585605A (en) | Associative memory data processor | |
| US4219874A (en) | Data processing device for variable length multibyte data fields | |
| US4268901A (en) | Variable configuration accounting machine with automatic identification of the number and type of connected peripheral units | |
| EP0111407B1 (en) | Microprogrammed control unit for handling the intermixed occurences of microprogram branches and interrupts | |
| US4031517A (en) | Emulation of target system interrupts through the use of counters | |
| US3725868A (en) | Small reconfigurable processor for a variety of data processing applications | |
| US3374466A (en) | Data processing system | |
| US3872447A (en) | Computer control system using microprogramming and static/dynamic extension of control functions thru hardwired logic matrix | |
| Blaauw et al. | The structure of SYSTEM/360: Part I—Outline of the logical structure | |
| US4079449A (en) | Display apparatus for a biprogrammable accounting computer with operator guidance | |
| US3286236A (en) | Electronic digital computer with automatic interrupt control | |
| EP0074479B1 (en) | Data processing apparatus with intersegment call | |
| IE59021B1 (en) | Improvements in microprocessors | |
| IT7370879A1 (it) | Calcolatore elettronico con apparecchiatura per la messa a punto dei programmi operativi | |
| IT7370874A1 (it) | Calcolatore elettronico con dispositivo di deviazione dei microprogrammi | |
| US4015245A (en) | Biprogrammable electronic accounting machine | |
| US3234367A (en) | Quotient guess divider | |
| CA1081854A (en) | Control store system and method | |
| US4114026A (en) | Electronic desk-top accounting machine and calculator | |
| Detmer | Introduction to 80x86 assembly language and computer architecture | |
| GB968546A (en) | Electronic data processing apparatus | |
| US3665402A (en) | Computer addressing apparatus | |
| US3849634A (en) | Electronic computer |