Uit Hack42
Ga naar: navigatie, zoeken

Radice quadrata

Radice quadrata scolastica

Per facilitare la comprensione dell’algoritmo della radice quadrata si riporta come esempio la radice di 2, svolta sino al 4° decimale. L’algoritmo scolastico ha molti punti in comune con quello utilizzato dalla P101. Se il numero di cifre prima della virgola è dispari si inizia con la prima cifra, se pari con la prima coppia di cifre. Nell’esempio radice di 2 si ha: c) d) e) f) g) h) i) j) k) l) I passi g e Radice della cifra (1), coppia se numero con nr di cifre intere pari. Sottrazione 2 – 1 = 1. Abbassamento della coppia successiva. Nel nostro caso 00. Sdoppiamento della coppia, con la 1° connessa a risultato sottrazione. Si raddoppia il risultato. Nell’esempio 1 diventa 2. Si esegue 10 : 2 = 5. Si aggiunge a 2 il 5. Prodotto 25 X 5 = 125, cifra scartata perché > 100. Riduzione della cifra, 5 diventa 4. Prodotto 24 X 4 = 96 cifra accettata perché < 100. Sottrazione 100 – 94 = 4 ... ripetizione da c) sino a nr decimali voluto. h, originano un ciclo se il prodotto continua a essere >. Si ricorda che per n >1, n 2 è dato dalla somma dei primi n termini della serie : 1, 3, 5, 7, 9 .... ottenuta a partire da 1, sommando 2 al termine precedente. 2 2 = 4, somma dei primi 2 termini (1+3=4). 3 2 = 9, somma dei primi 3 termini (4+5=9). . 4 2 = 16, somma dei primi 4 termini (9+7=16). 5 2 = 25, somma dei primi 5 termini (16+9=25). Ecc ..

Radice quadrata nella Programma 101

L’estrazione di radice quadrata, è concepita come sottrazione ciclica, al radicando si sottrae un valore che parte da 1 ed è incrementato di 2 ogni ciclo successivo. Il registro A contiene il minuendo (radicando), M il sottraendo, R il numero di cicli di sottrazione (risultato). La fase di preparazione in SB ponendo in A il radicando, M = 1 e R = 0, imposta le condizioni iniziali per la serie di sottrazioni. La cifra 1 è posta in SB da (ZK *SB * TR * NH * ( TB + TD + TE), corredata da TB e TD, cifra valida e virgola. Essa rimarrà per tutto il calcolo come unica cifra con TB, quindi il PM sarà set solo in corrispondenza di questa cifra. In SC e SD avviene l’allineamento sulla cifra più significativa di M e A. In SE viene scritto in A il TA sul Crt che precede la virgola del numero di decimali impostato nella rotella. In SF del 1° ciclo, se le cifre del radicando che precedono la virgola sono pari, A viene ritardato di 1 Crt , M che contiene il sottraendo si trova allineato con la 2° cifra di A, quindi le successive operazioni operano sulla coppia. L’algoritmo nella fase esecutiva, stati SF – SK, prevede: Confronto A con M se: • Positivo ( A > M ) A = A–M. M = M+2. R = R+1. • Negativo ( A <= M ) Ritardo A di 2 Crt. Ritardo R di 1 Crt. Ritardo M di 1 Crt a partire da TF. Riciclo su confronto sino ad esaurimento cifre decimali. Esaurita la prima cifra o coppia, se non si è raggiunto il numero di decimali voluto, si ripete il ciclo per tante volte quante sono le cifre volute. Il ritardo di 2 Crt di A equivale a moltiplicare per 100 il resto delle sottrazioni. Il ritardo di M a partire da TF della cifra meno significativa di M, ha l’effetto di sdoppiare il risultato della sequenza di somme cicliche +2. La prima cifra, resta sempre 1, il rimanente, pari, viene moltiplicato per 10. Il ritardo di R di una cifra rispetto la prima cifra di M, riferimento della conta dei cicli di sottrazione, congela il calcolo della cifra del risultato e fa ripartire da 0 il calcolo delle conte di sottrazioni seguenti che fornisce il valore della nuova cifra del risultato moltiplicato per 10. Ad esempio per l’estrazione della radice di 2, le condizioni iniziali sono : • A = 2. Radicando. • M = 1. Termine di partenza della serie • R = 0. Contatore dei cicli di sottrazione fornenti le cifre del risultato. Applicando l’algoritmo si ha : 1° Ciclo A (2) > M (1) 2° Ciclo A (1) < M (3) A=2-1= M=1+2= R=0+1= A = 1 M = 000000001 000000003 000000001 000000100 000000021 993° Ciclo 4° Ciclo 5° Ciclo 6° Ciclo 7° Ciclo 8° Ciclo 9° Ciclo 10° Ciclo 11° Ciclo R = A (100) > M (021) A=100-021= M=021+002= R=010+001= A (079) > M (023) A=079-023= M=023+002= R=011+001= A (056) > M (025) A=056-025= M=025+002= R=012+001= A (031) > M (027) A=031-027= M=027+002= R=013+001= A (004) < M (029) A = M = R = A (400) > M (281) A=400-281= M=281+002= R=140+001= A (119) < M (283) A = M = R = A (11900) > M (2821) A=11900-2821= M=281+002= R=1410+0001= A (9079) > M (2823) A=9079-2823= M=2823+002= R=1411+0001= 000000001 000000079 000000023 000000011 000000056 000000025 000000012 000000031 000000027 000000013 000000004 000000029 000000014 000000400 000000281 000000014 000000119 000000283 000000141 000011900 000002821 000000141 000000119 000002823 000001411 000006256 000002825 000001412 Ecc... Gli ultimi 2 cicli della 4 a cifra saranno riassunti in : 6256-2825=3431-2827=604-2829 stop 4 cicli R=1414. Seguiti dalla 5 a cifra: 60400-28281=32119 -28283= 3836-28285 Stop 2 cicli R = 14142.

Algoritmo implementato

Le operazioni di calcolo e di shift richieste per implementare l’algoritmo di radice quadrata non sono eseguibili da un solo ciclo SH – SK. La soluzione è stata il raddoppio del ciclo SH – SK in caso di confronto A> M positivo. Il 1° ciclo è distinto dal 2° dallo stato del flip flop NL. Durante il 1° ciclo si compie la sottrazione, nel 2° le operazioni di incremento. Le operazioni di shift si eseguono in ambedue i cicli. Il Crt del registro R da incrementare è individuato dall’unicità di presenza del TB sul Crt meno significativo del numero contenuto in M. La condizione di A < M , confronto che indica fine calcolo di cifra è memorizzata in NM. Essa è data da riporto su cifra più significativa e WP (SG * NE * TA ). Con NM = 1, si blocca lo shift di M, permettendo sempre quello di R ed A. Dato che la cifra in calcolo è indicata dall’unico TB di M, si ottiene in questo modo il passaggio alla cifra seguente. Lo shift di M avviene a partire dal bit TF, questo metodo non sposta il TB di riferimento, ed avendo in M un numero dispari e >1, lascia 1 sul Crt con il TB di riferimento spostando il resto del contenuto di M di 1 Crt. 100Il 1° ciclo di sottrazioni è preceduto in SF, dal ritardo di A di 1 Crt se cifre intere del radicando in numero pari. Questa condizione si ha quando da SE si passa in SF con NC = 1. Lo stesso shift supplementare di A in SF si ha nei cicli di fine calcolo cifra standard in cui si “abbassa” sempre una coppia di cifre. Allo scopo VN ( SF * NC * LA) connette A e K, bloccando nel contempo la richiusura di A su RA. VR ( SF * NC * KA ) richiude l’anello con l’uscita di K su RA. In SF il confronto avviene sottraendo a M il complemento di, A in caso di una cifra, KA se coppia di cifre. Questo si ottiene con: • XM CE * LM * NM \ * ( ZK * NL ) \ • XA SF * PO * LA \ * NC \ , oppure SF * PA * NC * KA \ Onde minimizzare le modifiche, il 2° ciclo SF – SK è preceduto dello scambio del contenuto tra i registri A ed M, alla fine del 2° ciclo un altro scambio ripristina nei 2 registri i dati iniziali.

Caso A > M. Doppio ciclo SF – SK

1° Ciclo. NL reset. SF Stato di confronto con eventuale set di NM. SG Non operativo. Il set di NE è bloccato da ZC che non è attivo in SG . SH Sottrazione A = A – M SK Correzioni eventuali per riporto su cifre intermedie WR ( ZK * SK * NM \) setta NL, condizione per 2° ciclo. Scambio di A con M. 2° Ciclo. NL Set. SF Stato non operativo. SG Incremento di R. SH 1° incremento di A, dato lo scambio si opera su M. SK 2° incremento di A. WR ( ZK * SK * NM \) resetta NL, condizione per 1° ciclo. Scambio di A con M. Ripristino del contenuto logico dei registri I registri R, A, M, quando connessi al registro K sono ritardati di 1 Crt, questo avviene sempre rispettivamente in SG, SH, SK, mantenendo l’allineamento finale tra i 3 registri.

Caso A < M. Ciclo unico SF – SK

NM = 1, blocca XX e quindi mantiene NL = 0 disabilitando il 2° ciclo. SF Stato non operativo. SG R ritardo di 1 Crt. SH A ritardo di 1 Crt. SK M ritardo di 1 Crt a partire dal bit TF. Set di NC, predispone nuovo ritardo di 1 Crt di A nel seguente SF.

Stati preparatori

Il diagramma seguente mostra la sequenza di stati durante l’esecuzione della radice di 2. La conta dei cicli, commutazioni di NL, permette di anticipare il risultato 1,4142. Diagramma Sequenza stati Radice di 2. 101Il diagramma mostra la conta di Crt con scrittura del TA in A in corrispondenza dell’ultima cifra decimale. In A si ha il radicando (2), scritto in SB, tramite WK (SB * ZK) da WK * LX con segno meno bloccato con DA * TC * HD \. In M si ha 1, sottraendo iniziale, scritto in SB (SB * ZK * NH * TR *(TB+TD+ TE)). A e M sono entrambi allineati sul 1° Crt della LDR. Diagramma Stato SE.

Stati esecutivi

Negli stati SF – SK la connessione dei registri A, M,R, sia al sommatore che al registro K viene mantenuta costante. Unica variante è la connessione in SF di A al registro K per ottenere il ritardo di un Crt che permette di operare su una coppia e non su singola cifra. Lo scambio di A con M, solo in caso di doppio ciclo (NM = 0), mantenendo le connessioni fisiche scambia il contenuto logico dei 2 registri nel 2° ciclo. NL commuta sul fronte di discesa di XX (ZK * SK * NM \), in corrispondenza del passaggio da SK a SF, quindi si sovrappone esattamente al 2° ciclo.

Stato SF

NC mantiene le funzioni che aveva in divisione sia come stato di confronto che determina sia il passaggio a nuova cifra, sia la fine del calcolo. La funzione aggiunta, ritardo di A, si ottiene con NC agente da deviatore dell’informazione connessa sia al sommatore che alla richiusura del registro sulla LDR. Il ritardo introdotto da NC interviene se: • 1° Ciclo assoluto e Nr di cifre intere pari. • 1° Ciclo doppio a seguito di fine calcolo cifra precedente. Il confronto tra A ed M utilizza lo stesso hardware della divisione a cui si rimanda. 102• SF * PO * LA \ * NC \ Connette A negato al sommatore se NC = 0. • SF * PA * KA \ * NC Connette K negato al sommatore se NC = 1. • VR (SF * KA * NC) Connette K alla richiusura di A se NC = 1. • YN (SF * LA * NC ) Connette A al registro K se NC = 1. Con NC = 0, YN non si attiva sbloccando la richiusura di A su se stesso. Il diagramma presenta lo stato SK con NM = 1, set di NC in TF, seguito da SF sempre con NC set che produce il ritardo di A di 1 Crt. Diagramma Stati SK, SF con NC =1. La fine calcolo, set di NF, è data dal Crt con virgola di M, posta sulla cifra meno significativa, corrispondente al Crt di A con il TA di ultima cifra decimale. Questa condizione è data da VE (SF * LM * KF * TD * MT). Il diagramma presenta il set di NF, il passaggio da SF a SL e lo stato finale dei registri A, M, R, nell’esempio di radice di 2. Stati SF SL Finali

Stato SG

In SG avviene la conta dei cicli di sottrazione nel registro R. Il gate di conta dei cicli “normale” (ZC * SG * LM * TD * NM \), è disabilitato non essendo ZK3 attivo in SG . La conta avviene nel 2° ciclo con CH * NL * TB * MT * LA in maschera con ZK. 103Ogni SG comporta il ritardo di R di 1 Crt. Il passaggio della conta sulla nuova cifra avviene per il ritardo di R rispetto il bit TB che marca il Crt meno significativo di M.

Stato SH

Lo stato in NM = 0 e NL = 0, si comporta sommando a M il complemento di A con il risultato in A. Il riporto di Crt avviene per >15. Con NM = 0 e NL = 1, incrementa A con CH * NL * TB * MT * LA, in maschera con ZK sul set di NE. L’incremento avviene su M, per effetto dello scambio tra A ed M. Con NM = 1, nel sommatore XM non è pilotato ed in XA, SH * VC * LA, pone A. Ogni SH ritarda A di 1 Crt connettendolo al registro K. La richiusura del registro A, avviene con il blocco del TB se cifra 0 non valida se esterna a PO, SH* KA *(ZK * NM \ * TB* PO \ * KC \ * KD \ * KE \ * KF \).

Stato SK

Lo stato SK in NM = 0 e NL = 0, si comporta come in divisione, corregge i Crt con riporto sommando 6 ad A con il risultato complementato in A. Ogni SK con NM = 0, inoltre si ha: • WR (XX) Commuta NL. • VK (SK * XX *VS * TA \) scrive il risultato complementato del sommatore, logicamente A, in M. • VT (SK * LM * ER \ * TA \ *(NM * NH \)\ , pone M in K. • SK * XX * KA scrive K in A, completando lo scambio dei registri A ed M. • Con NM = 0 e NL = 1, incrementa A con CH * NL * TB * MT * LA, in maschera con ZK sul set di NE. L’incremento avviene su M, per effetto dello scambio tra A ed M. • Con NM = 1, VT pone M in K a partire dal set di NH che avviene dopo la richiusura di M del digit meno significativo 1, accompagnato dai bit di servizio TB e TD, con il TF del gate SK * ZK * PM * NM * TF . Si pongono le condizioni per il calcolo della cifra seguente. Ogni SK comporta il ritardo di M di 1 Crt. Il diagramma mostra lo stato SK al termine del 4° ciclo di sottrazioni con NM = 1. Nell’esempio si esegue la radice di 2. Il contenuto dei registri R, A, M, è: • R = 1414. • A = 604. • M = 28281. A conferma dei dati presentati precedentemente. Diagramma Stato SK . NM = 1. Fine del 4° Crt.

Stato SL

Lo stato SL compie lo scambio del contenuto di A, resto finale delle differenze, con quello di R, risultato della radice. Completa l’informazione con i bit TB mancanti. LA * TA \ * ( SL + XL) ZC * LR * TK \ SL * ZK * RA * TB Scrive A in R. Compresi i TB e TD. Scrive R in A tramite VA in SL * NC * PA * VA . Scrive i TB del risultato (A), in M. Diagramma Stato SL. Schema a blocchi algoritmo radice quadrata. (img)

Valore assoluto

L’istruzione valore assoluto di A, ha codice simbolico A↨ e codice macchina 34. Essa esegue l’eliminazione dei bit TC, segno meno, su tutti i Crt del registro A, gli altri registri rimangono invariati. La sequenza di stati è la stessa delle istruzioni di trasferimento. Nello stato SE, il gate WK * LX * (DA * TC * HD/ ) / , essendo attivi sia SA che HD/ , permette la richiusura di LX senza il bit TC. Essendo attivo DA, nel multiplexer LX si trova il contenuto di A. L’esempio mostrato dal diagramma visualizza 3 cicli di LDR, i primi 2 in SE il 3° in SA a operazione completata. Il ciclo operativo è il 2° con WK attivo, si osserva la presenza del TC in LA e la sua assenza in RA. Diagramma. Valore assoluto . Stato SE.

Stampa

Le istruzioni rivolte la gruppo di stampa sono 3, <> (X8) , * (X9), /<> (88), tutte attivano il decodificato ZL. Il registro stampato è selezionato dai bit di codice HD – HA del registro H . L’istruzione <>, da tastiera o programma stampa sempre il registro. L’istruzione * da tastiera, stampa il registro prima di azzerarlo. Inserita in un programma azzera il registro senza stamparlo. L’istruzione /<> comanda una interlinea. Ogni ciclo di stampa, da tastiera o programma è seguito automaticamente da una interlinea. La fase esecutiva, controllo della stampante, è composta sempre dagli stati SM, SN, SS. In interlinea, varia il controllo della battuta del martello che è bloccata. Se interlinea e stampa programma, non essendo previsti dati, lo stato SN è limitato ad 1 giro di ruota fonica senza battuta del martello. Gli stati SM e SN, che in or attivano CD, eseguono la stampa di: • SM Istruzione, Indirizzo e Spazio separatore. 3 colonne totali. • SN Dato eventualmente con virgola e segno meno. Nr colonne funzione del dato. CD avvia il carrello di stampa, il quale attiva il μSwitch AW sincronizzato con il vuoto della ruota fonica. Il sincronismo rende possibile il caricamento in K del codice istruzione prima dell’arrivo del 1° dente della ruota fonica. SS è lo stato di attesa della commutazione di AW, che indica il ritorno a casa del carrello non più comandato da CD. Se stampa programma AZ = 1, la stampa è avviata da istruzione di avvio programma, S, V, W, Y, Z. La stampa del programma si avvia, come tutti i casi di istruzioni da tastiera, con la stampa dell’istruzione e dell’eventuale dato. L’esecuzione dell’istruzione comporta il passaggio in stato esecuzione programma HP =1, con la stampa del programma a partire da: • S Istruzione puntata da HK – HM registro e TA in R per il Crt. • V, W, Y, Z Istruzione seguente il riferimento nel programma. Gli stati in stampa programma sono SP, SM, SN, SS, SP in ciclo, sino all’estrazione di una istruzione S, che resetta HP con ultimo ciclo SM, SN, SS, SA.

Stampa registro

La sequenza di stati a seguito di una istruzione di stampa, da programma o tastiera, è SP/SA, SB, SC, SD, SE, SM, SN, SS, SP/SA. Il numero di cifre decimali stampato è dato dalla rotella decimali, con troncatura se rotella<decimali del registro, aggiunta di zeri se rotella>decimali del registro. L’operazione di stampa, tranne Azzera registro, lascia inalterati tutti i registri, l’informazione è fornita da: • SM Registro H Istruzione ed indirizzo. • SN Multiplexer LT Dato nel registro. In SB si setta NL se LT non è nullo. Registro da stampare con almeno 1 cifra. Gli stati SC e SD allineano M e A sulla cifra meno significativa del 12° o 24° Crt se registro intero o splittato. SE scrive il TA in A, sul Crt che precede la virgola in LT del valore impostato sulla rotella decimali. La battuta del martello è bloccata, creando colonne vuote (spazi), in caso di : • Set di NK impedito da NH * NF \ . • 3° colonna di stampa. • segno con dato positivo . • virgola con dato senza decimali. • Registro vuoto diverso da A, M, R. • Registro M. SM * DM * NF * HD \ , blocca UG3 e di conseguenza la conta. Diagramma sequenza stati istruzione di stampa. La sequenza di stati a seguito di una istruzione, non di stampa, da tastiera è SA, SM, SN, SS, più stati esecutivi istruzione introdotta e ritorno in SA. A seguito dell’introduzione di dato da tastiera, se l’istruzione non è di stampa, si ha sempre la stampa implicita del registro M, il numero di decimali è quello introdotto e non dipende dalla rotella decimali. WY (SN * PM * NM * AP \), forza la selezione di M e blocca il registro che compare nell’istruzione. Diagramma sequenza stati stampa registro implicita. La fase esecutiva della stampa, stati SM e SN, è composta da 2 fasi: 1. Fetch o forzatura del codice da stampare in registro K. 2. Stampa del codice impostato. La fase di fetch o di forzatura del codice da stampare è diversificata per tipo di informazione e posizione della colonna di stampa in: • Fetch istruzione. • Fetch indirizzo. • Fetch cifra. • Forzatura virgola. • Forzatura segno meno. Il digit da stampare viene caricato in KE – KF come complemento a 15, contando i denti, la cifra 5 (0101), si trasforma in A (1010), essendo la battuta del martello comandata dal riporto di cifra, questo avviene sul 6° dente set di NK. La battuta del martello, per 1 periodo di dente, avviene sul 7° dente set di NC. La connessione di K tramite il sommatore, ha TK che blocca sul generatore di XS, i 4 bit meno significativi del Crt. Pertanto la conta dei denti avviene sul digit KE – KH per tutti i tipi di simbolo.

Fetch istruzione

Il codice in K è fornito da SM * NA * HH \ * AP \, che carica il contenuto di HH \ in K, durante gli 8 bit del clock CLKK in NA. Nel diagramma, al termine di NA il codice istruzione 8D (0001 1011) è convertito in 72 (1110 0100). il TK di blocco sul sommatore pone 70 (1110 0000), in K alla fine di NB . Diagramma stampa fetch Istruzione.

Fetch indirizzo

La differenza con il fetch di indirizzo rispetto l’istruzione è l’indirizzo che è contenuto nei bit meno significativi dello stesso Crt di H . Il 2° simbolo da stampare in SM è individuato dal set di NF con WW (SM * PS * NH \). SM

  • NF * NA * TK \ , blocca i secondi 4 bit in NA, ottenendo l’effetto di lasciare l’indirizzo in

KE – KF, al posto dell’istruzione. Nel nostro esempio 26 (0010 0110). Il TK di blocco sul sommatore pone 20 (0010 0000), in K alla fine di NB . 110Diagramma stampa fetch Indirizzo.

Fetch cifra

Il fetch delle cifre avviene in SN. La stampa è sempre da destra verso sinistra, pertanto il dato viene estratto una cifra (Crt) a colonna a partire dalle cifre meno significative e precisamente dal Crt del TA in A. Se si proviene da SA, SM, il TA in A sarà posizionato sul Crt con l’ultima cifra introdotta da tastiera. Se si proviene da ..SE, SM, il TA in A sarà posizionato sul Crt dato dalla conta dipendente dall’impostazione della rotella decimali. Ogni ciclo di fetch di cifra, tranne la virgola, comporta lo spostamento del TA sulla cifra seguente. Cancellazione del TA con NA e sua scrittura con NB . Nell’esempio si mostra l’estrazione in NA di 5, cifra che precede l’unità con virgola in NB . Essendo il dato negativo, tutte le cifre hanno pure TB e TC pertanto il Crt in LT sarà 56 (0101 0110). Complementato diventa A9 (1010 1001), al termine di NB a seguito del blocco del TK su XS si riduce a A0 (1010 0000) come previsto. Diagramma stampa fetch cifra.

Forzatura codice virgola

La virgola è stampata sulla colonna che precede la cifra delle unità con il TD = 1 . Da diagramma precedente, il set di NF dovuto a UF3 (SN * NB * LX * TD * NH \ , preannuncia la virgola. Il ciclo di fetch seguente NF blocca lo shift del TA in A . VI (SN * NB * NF * TB * MT), forza il codice della virgola A0 (1010 0000) che complementato diventa 50 (0101 0000) e resetta NF . VI setta KD e KF, codice 28, che dati i 2 bit di ritardo di VI corrisponde al codice effettivo 50. Diagramma stampa. Forzatura codice Virgola. 111Forzatura codice segno meno. La stampa eventuale, del segno meno avviene con NH set, che indica la fine delle cifre utili. Secondo fronte di SN * ZL * TP in NA. Se dato negativo WI (SN * NH * NL * TC * LT * MT) setta NF e KE. Causa il ritardo tra set di KE ed inizio temporizzazione di Crt, il codice impostato è 40 (0100 0000), complemento di B0 (1011 0000) codice del segno meno. Diagramma stampa. Forzatura codice Segno meno.

Stampa codice segno meno

La conta che porta alla battuta del simbolo utilizza sempre lo stesso meccanismo. CD * PS * NG * TC setta NE procurando l’incremento. NG garantisce un solo incremento per dente. La battuta è innescata dal riporto di cifra UG1 che setta NK. NK è settata in TA quindi in modo asincrono rispetto alla ruota fonica. Onde assicurare una battuta uniforme WX, dente di ruota fonica, resetta NK che provoca il set di NC che a sua volta viene resettato dal WX del dente seguente. Diagramma stampa Segno meno.

Stampa registro vuoto

I registri dati a seguito dell’inizializzazione non si presentano tutti nella stessa situazione. 112A, M, R Sono inizializzati con TB, TC, TD sul 24° Crt, quindi con -0, . I registri deposito, interi o splittati, non contengono nessun bit. Lo zero negativo segnala la condizione di registro non mutato dalla inizializzazione. Gli zeri derivati da calcolo o trasferimento sono con virgola ma positivi. La condizione di registro vuoto è data da NL = 0, NL * TR * TK * TA \ forza in LX lo stesso -0, onde evitare che la macchina si pianti. La stampa di A, M, R se sono impostati 2 decimali si comporterà come l’esempio che mostra la stampa di A. Al codice istruzione ed indirizzo fanno seguito due zeri per i decimali, virgola, lo zero per le unità ed il segno meno. Diagramma Stampa registro A con 0-. La stampa di un registro deposito, intero o splittato, anche se sono impostati 2 decimali si comporterà come l’esempio che mostra la stampa di B. Al codice istruzione ed indirizzo stampati non segue altro in quanto NL = 0, impedendo il reset di NH al termine di SM pone la condizione di fine stato SN. Diagramma Stampa registro B vuoto.

Stampa programma

La stampa del programma , prima introdotto via tastiera o cartolina, segue le stesse procedure del lancio di un programma in esecuzione con il preventivo inserimento del pulsante di “Stampa programma” (AZ) e la battuta del tasto di avvio del programma (V, W, Y e Z). Pertanto per una descrizione delle operazioni si rinvia a Esecuzione del programma. Le differenze tra Stampa e Esecuzione del programma consistono nella concatenazione degli stati che seguono l’esecuzione dell’esecuzione del salto di lancio. In entrambi i casi, in SB si verificano tipo e condizioni del salto di avvio, in SP si ricerca l’eventuale riferimento e si carica l’istruzione selezionata nel registro H . Sempre in SP, con l’avvio della fase di carica dell’istruzione in H, segnale XI, avviene il set del flip flop HP individuante la fase di esecuzione operazioni in automatico. In uscita da SP, in caso di: • Esecuzione programma gli stati di macchina seguenti si adeguano all’esecuzione dell’istruzione estratta in SP e caricata in H . • Stampa programma gli stati di macchina hanno sequenza fissa, indipendente dalla istruzione e sono quelli necessari alla stampa del codice operativo e dell’indirizzo eventuale. Si tratta dei 3 stati, SM, SN e SS. Sia in esecuzione programma che in stampa, al termine della gestione della istruzione corrente si torna in SP per l’estrazione della successiva. Il ciclo termina con il fetch di una istruzione di Stop (S). Si ha il reset di HP ed il rientro in SA. Diagramma Stampa programma. Sequenza stati.

Azzeramento registro

I registri M ed R non sono azzerabili. Il comportamento dell’istruzione è diverso se eseguita in manuale o nel corso del programma. In manuale l’istruzione di azzeramento registro x * , è realizzata tramite un normale ciclo di stampa in cui non si hanno battute di martelletto. L’istruzione è sempre preceduta dalla stampa dell’istruzione stessa e dell’eventuale dato numerico. La sequenza di stati esecutivi è quella comune alle istruzioni di stampa. Stato di fetch istruzione SA , seguito da SB, SC, SD, SE, SM, SN e SS. In automatico non si ha stampa. La sequenza di stati esecutivi è SP fetch, seguito da SB, SC, SD, SE e SS. Il passaggio diretto da SE a SS è dovuto a YX ( ZL * HE * HP * SE ) , che nel contempo blocca YE, set di SM. Per azzerare i registri deposito, il gate YP ( ZL * SS * TP * HE * AZ/ ), provvede in SS al blocco sulla rete RN della richiusura su LDR del registro, provocandone l’azzeramento totale. Per azzerare il registro A, analogamente il gate VG (ZL * SS * DA * HE * AZ/ ), provvede in SS al blocco della richiusura RA su LDR del registro, provocandone l’azzeramento. Nel contempo, VG forza WK che scrive LX in A. LX avendo NL resettato da SS, abilita in TR i bit TB, TC, TD corrispondenti a -0. Il diagramma mostra l’esecuzione dell’istruzione B * , con B contenente 3,14. Diagramma. Esecuzione manuale. Intera istruzione. Il diagramma seguente, mostra lo stato SS nell’esecuzione dell’istruzione B * , il 1° ciclo di SS, trova ancora il 3,14 in B, mentre in RB, cancellazione in corso, il contenuto è spurio. Il ciclo seguente in B rimangono solo i TA di inizio e fine temporizzazione. Diagramma. Esecuzione manuale. Stato SS. 115Il diagramma seguente, mostra la mutata sequenza di stati con l’istruzione inserita nel programma si ha il passaggio diretto dallo stato SE a SS. Diagramma. Esecuzione da programma. Intera istruzione. Il diagramma seguente, mostra l’inserimento in A della cifra -0 nel TR di SS. Senza una cifra valida in A, il sistema rimarrebbe bloccato sul primo stato SD di allineamento. Diagramma. Esecuzione da programma. Stato SS registro A.

Interlinea

L’istruzione di interlinea /< > , è realizzata tramite un normale ciclo di stampa in cui non si hanno battute di martelletto. La sequenza di stati esecutivi è quella comune alle istruzioni di stampa. Stato di fetch istruzione SA o SP, seguito da SB, SC, SD, SE, SM, SN e SS. L’istruzione /↨ origina DH, il quale blocca UG e di conseguenza il set di NK che interrompe la catena di comando del martelletto di stampa. La durata di un solo giro di tamburo, dello stato SN è data dal mancato reset di NH dovuta al reset di NL in SM ad opera di DH. Tranne il blocco della battuta del martelletto e l’accorciamento di SN, tutto il resto della logica hardware si attua come nelle normali istruzioni di stampa registro. Diagramma Istruzione interlinea manuale.

Istruzioni speciali

Costante codificata

La costante codificata è utilizzata per registrare nel programma un dato numerico da utilizzare durante la sua esecuzione. Le istruzioni dedicate alla costante codificata sono due: • A ↑ Istruzione preparatoria di codifica della costante. • A/↑ Istruzione di utilizzo della costante. Nel programma, la costante è individuata dalla istruzione iniziale A/↑, seguita da tanti caratteri quante sono le cifre della costante. I bit dei caratteri della costante seguono le regole generali del dato numerico, tranne il TA che indica ultima cifra, la più significativa della costante. Per comodità li ricordiamo: • TA Ultima cifra. • TB Cifra valida. • TC Costante negativa, su tutte le cifre. • TD Cifra con virgola. • TE – TH Codice decimale della cifra ( 0 – 9 ). Il passaggio dal valore dei bit, ai simboli dei tasti indirizzo ed istruzione, non è immediato ed ha bisogno di tavole di corrispondenza tra codici e simboli. Il compito del programmatore è facilitato dalla istruzione A ↑, eseguita in manuale, traduce il dato numerico introdotto da tastiera, nei simboli corrispondenti ad indirizzi ed istruzioni. Una volta ‘tradotta’ la costante viene inserita nel programma ed appare indistinta dal codice normale se non fosse che per l’istruzione iniziale A/↑.

Preparazione della costante

Onde facilitare il compito di codifica della costante è disponibile l’istruzione A ↑. La procedura consiste nella sequenza : • Premere pulsante Stampa Programma. • Azionare il Reset generale. • Introdurre le cifre della costante. • Introdurre l’istruzione A ↑. La procedura garantisce che dopo il reset segua l’esecuzione di A ↑. Il trasferimento di M in SD, dopo l’allineamento in SC, garantisce che la cifra meno significativa, la prima ad essere stampata, sia nel 1° Crt del 1° registro di programma. La presenza di Stampa programma connette la fine dell’esecuzione di A ↑, alla sequenza standard di stampa del contenuto dei registri programma a cui si rinvia per i dettagli. 118Il calcolatore stampa, come di consueto, su una riga il numero preceduto dalla istruzione ed indirizzo (A ↑). Successivamente stampa su righe separate la traduzione da cifre ad istruzioni. L’hardware dedicato all’istruzione A ↑, è dato da 2 gate: • ZH*LM*HD/*SD*DA, set di LG, trasferisce direttamente il dato numerico, introdotto da tastiera in M nel 1° registro di programma. • TC*PM*XO*NFN*ZH, set di KG, setta il bit TA della cifra più significativa di M, nello stato SC, essendo in SD bloccato PM. Il resto del compito è svolto dall’hardware della istruzione di trasferimento ↑ e da quello della procedura di stampa programma . Diagramma istruzione A ↑. Il diagramma mostra l’intera procedura di preparazione della costante 3,14. L’esempio mostra in H i codici binari delle istruzioni prima della loro stampa nello stato SM e ripetute da O. La stampa avviene invertendo l’ordine di introduzione delle cifre, quindi dalla cifra meno significativa. L’esempio nel diagramma indica la costante 3,14. 1° ciclo 24 R+ 2° ciclo 21 R↓ 3° ciclo A3 d↨ Il 4° ciclo stampa S, prodotto dal codice 00, segnala la fine della costante.

Lettura della costante

La costante numerica essendo inserita nel programma viene letta dal registro indicato da HK – HM e dal Crt seguente quello su cui è posizionato il TA in R. Il codice simbolico A / ↑ corrisponde al codice istruzione C2, con indirizzo precedente l’istruzione. Le condizioni ZA e CS, sono forzate dall’istruzione A / ↑. Durante il 1° ciclo di SB, NH off, il gate ZA * NH/ * SB provvede a cancellare in M il dato precedente. 119Nello stesso periodo il gate NG/ * ZH * LP * SB * NC, scrive il contenuto del registro programma selezionato in M. Il periodo di scrittura è limitato da NC set e NG reset. NA e NB hanno un tempo massimo di un Crt. NC è settato al reset di NA che a sua volta è settato dal TA in R, posizionato sul Crt di A / ↑, precedente il 1° Crt della costante. NG, pone fine alla scrittura della costante,è settato dalla caduta di NB, settato a sua volta dalla scrittura in M del Crt contenente il TA, gate RM * TA * CS * NG/ *SB. Il diagramma mostra la sequenza per la lettura della costante 3,14. Si noti che durante SB, il segnale PM indica il dato precedente in NH/ e la costante letta da programma in NH. Diagramma Esecuzione Costante di programma Stati SP e SB.

Istruzione RS . Scambio D con R

La sequenza di stati per l’esecuzione dell’istruzione RS è quella delle istruzioni di trasferimento. • Manuale. SA, SM, SN, SS, SB, SC, SD e SE. • Programma SP, SB, SC, SD e SE. L’istruzione scambia il contenuto “fisico” dei registri D ed R. Il termine fisico indica che lo scambio avviene senza un controllo logico del contenuto, questo permette lo scambio di due dati numerici, contenuti in D e d, con un unico dato in R. La specificità dell’istruzione è data dallo scambio del contenuto di registri in cui la logica della loro selezione è rovesciata. R, registro di servizio per le istruzioni di calcolo è solitamente selezionato in modo implicito. In RS la selezione è esplicita. D, registro deposito, la selezione del quale è generalmente esplicita, è ottenuta mediante forzatura del suo decodificato logico diritto (DD) tramite DR. Lo scambio avviene in SE, quindi SC e SD si eseguono, perchè si è deciso di non mutare la sequenza standard degli stati. YK (SE * ZN * NH * DR * LN), scrive l’informazione in R e blocca la riscrittura della stessa in D per tutti i Crt. Il contenuto di LN, abilitato dal DD forzato entrerebbe nel multiplexer LT se non fosse bloccato da DR. Vedi gate LN * TP * DR \ * WY \ . YH (SE * ZN * NH * DR * LT), scrive l’informazione in D e blocca la riscrittura della stessa in R per tutti i Crt. LT, grazie all’indirizzo esplicito, contiene R tramite DR * LR * TA \ * WY \ . La forzatura di DD, comporta il blocco della via “normale” dell’informazione in D. tramite il solito DR. Vedi gate RN * DD * DR \ . di trasferimento Diagramma RS.

Stampa forzata risultato

Le istruzioni di moltiplicazione, divisione e radice quadrata eseguite in manuale sono sempre seguite da una stampa del risultato in A. La stampa viene forzata dal segnale VZ (HP/*ZC*SL), indicante, modo manuale, moltiplicazione o divisione o radice quadrata e ultimo stato dell’operazione di calcolo. VZ setta NK e simula mediante WZ uno strobe di tastiera, esso cade con il fine stato SL ed il ritorno in SA. In SA, essendo i μswitch di tastiera rimasti impostati sull’ultimo tasto comandante l’istruzione di calcolo appena eseguita, si genera XW, che abilitato da NK imposta nel registro H, il codice 84 Hex, istruzione di stampa di A. L’istruzione di stampa A, viene accodata ed eseguita come se fosse stata comandata da tastiera. Il diagramma mostra la forzatura dell’istruzione di stampa A (84) a seguito dell’istruzione di moltiplicazione (60). Diagramma. Stampa forzata risultato.

Parte 5 -Programma

Introduzione programma da tastiera

I meccanismi di base di introduzione dei codici delle istruzioni di programma tramite la tastiera, sono gli stessi di quelli che intervengono durante l’introduzione di istruzioni singole in manuale. La fase è caratterizzata dalla attivazione del pulsante AP, che in or con cartolina (SO), genera il segnale CT . Le istruzioni vengono memorizzate in sequenza nei registri G, I, F, E , D. Il pulsante AZ inserito con AP, limita il numero di registri programma a 2 ( E,D ). I registri di programma sono selezionati dal registro H. Il contenuto di H è presettato tramite UE1 ( AP * AZ \) o UE2 ( AP * AZ) . AZ = 1, disabilita UE1, programma intero (5 registri, G, I, F, E, D) e abilita UE2, programma ridotto (2 registri, E, D). Il codice di tastiera viene posto in K (KA – D) da WV. Esso in caso di indirizzo è generato da XK, durante il TK di NB, corrispondente ai bit da TA a TD. In caso di istruzione o dato, è generato da XW, durante TK negato di NB, corrispondente ai bit da TE a TH. Si ottiene così di scrivere , un codice istruzione di quattro bit ed il precedente codice indirizzo sempre di quattro bit, su un unico Crt di otto bit. La posizione di inserimento della istruzione in LDR è data dal TA in R, segnale XE , che all’inizio è sul 24° Crt. imponendo l’inserimento del codice, indirizzo o istruzione, sul 1° Crt. di G. Il meccanismo utilizzato è dato da NA → NB, ogni flip flop dura 1 Crt, NA è settato da XE e NB dalla caduta di NA. Il codice introdotto da tastiera, durante NB viene scritto in LDR dal gate YF. Il gate WS blocca la scrittura del TA in R durante NA. Il gate WC abilita la scrittura del TA di R durante NB . Se NA ha preceduto NB, il TA in R viene spostato di un Crt. In caso di battuta di un codice indirizzo, il gate XK setta NC, il quale sulla battuta del codice istruzione seguente, determina il set diretto di NB . Si ottiene così di scrivere il codice sullo stesso Crt dell’indirizzo precedente e di non spostare di un ulteriore Crt il TA in R. In CT, la sovrapposizione di NA a TT, il gate SA * CT * NA * TT \ → UC4 , rivela la scrittura sull’ultimo Crt del registro programma corrente e facendo scorrere il contenuto del registro H di un bit, indirizza il registro programma seguente. In caso di programma intero, AZ non premuto, il gate UE1 aveva caricato in H il codice binario X00011XX (HA-H). La tabella indica la sequenza dei codici nel registro H e quindi dei registri selezionati a seguito degli shift dovuti alla coincidenza di NA e TT. Tabella 1 (table) Cartolina - Selezione registri PG. Nr. Istruzione Selezione iniziale HA X HB 0 HC 0 Registro X 1231-24 25-48 49-72 73-96 97-120 Selezione finale 0 0 0 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0 G (M) I (A) F E D C La sequenza degli stati che intervengono per ogni istruzione introdotta è data dal ciclo SA, SM, SN, SS, SA. Nella fase di introduzione del programma non sono previsti dati numerici se non nella forma di costanti di programma. I tasti utilizzati sono solo quelli di istruzione e indirizzo. Il diagramma mostra come esempio l’introduzione da tastiera, di un breve programma composto da 2 riferimenti di salto C6 e C4, radice quadrata B4 e stampa del risultato 84. Posto AP = 0, il programma viene posto in esecuzione dal tasto V codice C0 Diagramma Introduzione programma da tastiera.

Cartolina

La cartolina è il supporto magnetico utilizzato per memorizzare permanentemente i programmi della P101. La cartolina ha una capacità massima di 5 registri (G, I, F, E, D), quindi 120 codici di possibili coppie indirizzo – istruzione. Il tutto pari a 960 bit, metà della capacità della LDR che è di 1920 bit. La scrittura su cartolina necessita di due azioni: • Abbassamento del pulsante bistabile AP. • Introduzione di cartolina nel meccanismo di trascinamento. L’eventuale abbassamento del pulsante bistabile AZ, determina la registrazione di una cartolina corta, limitata ai registri E, D (48 istruzioni). L’utilizzo fra loro esclusivo dei registri M e A, per dati e G e I per programma, permette di usare lo stesso codice indirizzo 0 per M e G , 4 per A e I. Da notare, il registro HA – HH durante il calcolo contiene codice operativo ed indirizzo dell’istruzione, in cartolina contiene l’indirizzo del registro di programma con cui avviene il trasferimento del carattere. A sua volta il registro HK – HM che in esecuzione programma contiene l’indirizzo del registro di programma, in cartolina forma con NK il contatore, totale 4 bit, per i 12 bit del byte. 124Il verificarsi di un ciclo con NA=1 a cavallo di TT determina lo shift di 1 bit del registro HA – H ed il passaggio al registro seguente. Lo stesso meccanismo, con l’esaurimento dei registri di programma segnala la fine del trasferimento dei Crt. I dati su cartolina vengono registrati utilizzando il sistema di ritorno a zero RZ, esso prevede per ogni periodo di bit almeno una commutazione, quella del clock. La tastiera garantisce i tempi di accesso alla LDR grazie ai tempi della meccanica e dell’operatore. La cartolina, invece, richiede e genera un flusso di dati con periodo costante di scambio Crt tra essa e LDR. Onde evitare un registro hardware supplementare che permetta la sovrapposizione del tempo di accesso alla LDR, a quella di registrazione – lettura su cartolina, si sono inseriti 4 bit di servizio agli 8 bit di informazione. Il tempo corrispondente ai 4 bit di servizio, è sufficiente per l’accesso alla LDR. Pertanto i bit di Crt della cartolina sono 12. Sulla cartolina vengono registrati, 960 (programma) + 480 (servizio) = 1440 bit . Figura. Carattere cartolina. Il passaggio della cartolina sotto la testina, sia in lettura che scrittura è segnalato dall’azionamento da parte della cartolina in movimento di un μswitch (AO), condizione memorizzata nel flip flop SO, indicante il periodo utile per la registrazione- lettura della cartolina stessa. Il meccanismo di selezione dei registri programma (Registro H), che di selezione al loro interno dell’istruzione ( NA – NB – NG), non hanno bisogno di essere descritti in quanto sono gli stessi già utilizzati nella fase introduzione manuale del programma. Ciò è reso possibile da: • Stato unico SA per introduzione programma da tastiera e cartolina • Segnale CT, che è l’or di AP e SO. • PS or comprendente AK e HN, aventi la funzione di carattere pronto, AK per tastiera e HN cartolina. Esso utilizza: • TA di R come puntatore del Crt di LDR da cui leggere - scrivere il codice coinvolto. • La coppia di flip flop NA, NB per la selezione del Crt di codice e spostamento del TA in R sul Crt seguente. • Il flip flop NG impedisce che il meccanismo si attui ripeta più volte nel tempo dato dai 12 bit che definiscono il Crt di cartolina. 125Il via al ciclo di trasferimento carattere prevede al posto del mastro da tastiera AK, il segnale HN generato dalla temporizzazione di Crt. della cartolina. In registrazione, un monostabile OP, azionato dal primo fronte di SO, fornisce la prima richiesta di Crt da registrare alla LDR sopperendo alla mancanza di HN, segnale utilizzato in seguito con l’andata a regime della temporizzazione. In registrazione (AP = 1), il periodo di bit è definito tramite l’oscillatore OR . In ogni periodo di bit si ha la commutazione iniziale di clock, seguita dalla eventuale commutazione a metà periodo in caso di informazione di bit = 1. In lettura, la prima commutazione magnetica, rilevata dalla testina, viene considerata come inizio del periodo di bit (clock). Essa fa partire il monostabile OS, il quale ha una durata pari a 2/3 del periodo di bit. Pertanto le commutazioni magnetiche durante OS indicano dei bit ad 1 e concorrono alla formazione del codice letto. Le altre sono considerate clock, e come tali chiudono il periodo di bit precedente e facendo ripartire OS danno inizio al successivo. La base dei tempi della temporizzazione di cartolina, dovendo contare sino a 12 bisogna di 4 bit. Come spesso accade nella P101 essi non sono 4 flip flop dedicati , bensì: • Il primo è dato dal flip flop NK, che in questo caso fornisce la prima divisione del tempo di bit commutando ad ogni primo fronte di OS. • Gli altri 3 flip flop sono HK – M. Onde omogeneizzare il meccanismo di conta in registrazione a quello di lettura, OS per pilotare NK in registrazione, viene comunque attivato dal primo fronte di OR . Il segnale di Crt pronto di cartolina è dato da HN, or di HL e HK, il quale ha un rapporto pieno vuoto di 8/4, lo stesso esistente tra bit informazione e di servizio. Il flip flop NM, mantiene la sua funzione di pulizia dei registri, la stessa utilizzata per introduzione dati da tastiera, prima di essere settato dal primo ciclo di trasferimento Crt. riposiziona il TA di R in TR, cancellando quello eventualmente rimasto in altri Crt. In caso di lettura cartolina, tramite XY, blocca la richiusura sulla LDR dei registri G, I, F, E, D azzerandoli. Il flip flop NE sia in lettura che registrazione è set per tutta la fase, in lettura a partire dal primo bit letto da cartolina YI, in registrazione dal primo Crt. letto da LDR WS. Il reset in entrambi i casi è dato dal secondo fronte di SO. Il registro K, svolge la funzione di interfaccia dell’informazione, nello scambio Crt tra LDR e cartolina. Il clock che agisce sul registro è dato da: • MX Temporizzazione di bit LDR. Per gli 8 bit in NB . In registrazione prelievo del Crt da LDR. In lettura deposito del Crt in LDR. • OS Temporizzazione di bit di cartolina. Per gli 8 bit in HN (Codice). In registrazione scrittura dei bit di codice in cartolina. In lettura accumula dei bit di codice da cartolina in K. Con MX generato in HN negato ed OS durante HN, i due segnali essendo mutuamente esclusivi, non interferiscono nel tempo di carattere. In registrazione la base dei tempi della cartolina è data dall’oscillatore OR. In lettura, la cadenza del tempo è quella dei bit (LS), clock e dati, in uscita dall’amplificatore.

Registrazione cartolina

Lo start alla registrazione è dato dal μSwitch AO che genera SO – cartolina in movimento sotto la testina. Il fronte di SO con CT (AP) fa partire il monostabile OP da cui WZ e PS dando origine alla richiesta di lettura del 1° Crt da prelevare da LDR e registrare su cartolina. Il dato da LDR, selezionato dal decodificato attivo tra DM, DA, DF, DE e DD viene memorizzato per un tempo di bit in LN. La rete logica RK, dati in ingresso al registro, scrive in K, tramite il gate NB * SO * LN, i bit in LN. Lato temporizzazione di cartolina, il gate UC2 ( SO * AP* NM * NE ), a set avvenuto di NE e NM, Crt da LDR letto, abilita l’oscillatore OR, definente il periodo di bit della cartolina. Il primo fronte di OR fa partire il monostabile OS che fornisce il clock alla temporizzazione di bit della cartolina. In registrazione l’informazione RZ di bit è data da NL. Pertanto NL commuta : • Sul primo fronte di OS . Commutazione di clock, sia per codice che bit di servizio. • Nella fase di Crt con HN =1 di scrittura del codice. Sul secondo fronte di OR, gate HN * OR * KA * NB \ (rete XX), in caso di bit KA =1. • Nella fase di Crt con HN =0 di scrittura dei bit di servizio si effettua un controllo di parità. Sul secondo fronte di OR, gate HN \ * OR * NK * NL \, rete XX, in caso di numero di bit di codice = 1 dispari. Condizione segnalata da NK=1 e NL=0. Si ricorda che in cartolina NK=1, si ha in caso di numero di bit dispari. Con HN=0 il 9° bit è tra i bit di servizio il 1° e funge da parità. Con la commutazione di controllo NL si riallinea a NK sino all’inizio del Crt seguente. La scrittura del 24° Crt del registro D, con la generazione del decodificato che seleziona il registro C provoca il reset di NM con il blocco dell’oscillatore OR e mette fine alla registrazione. La cartolina continuando nel suo movimento quando sarà completamente passata oltre il μswitch AO, determina l’andata a 0 dello stesso e di SO.

Lettura cartolina

Il segnale proveniente dall’amplificatore di lettura della cartolina LS, genera YI sul cui 2° fronte parte il monostabile OS determinante la finestra temporale entro la quale un ulteriore LS sarà considerato un bit di codice a 1. La stringa continua dei segnali di lettura LS, a cui fa seguito OS sosterrà la temporizzazione di bit in fase di lettura cartolina, prendendosi il compito di OR in registrazione.. Un LS che avviene in presenza di OS, bit di codice = 1, genera XB il quale setta direttamente NF e tramite XX NL. 127Il bit in NF tramite il gate SO * AP \ * NF, viene scritto nel registro K. La temporizzazione di Crt di cartolina, con YF ( CT * SA * NB * KA * MK ) abilitato da DM e quindi DA, scrive direttamente il contenuto di KA nei registri G ed I. YF produce RN, che a sua volta con la successione dei decodificati DF, DE e DD, termina scrivendo in sequenza nei registri F, E ,D .

Esecuzione programma

L’esecuzione di un programma è identificata dal flip flop HP ed è avviata come tutte le altre operazioni della P101 dallo stato SA. L’esecuzione in corso del programma è segnalata all’operatore con il lampadino verde lampeggiante, pilotato dagli stati in UK1 (SA + SD + SG + SH + SM). A tasti AP e AZ non premuti, per avviare un programma si hanno 2 scelte : 1. Programma da iniziare o avvio di un sotto programma, si utilizza uno dei tasti di Avvio programma (V, W, Y, Z). 2. Programma sospeso in attesa di proseguire dopo introduzione di dati manuali. In genere si riparte con il tasto S. La macchina estrae le istruzioni nello stato SP, dai registri G, I, F, E, D. All’interno del registro la posizione dell’istruzione è indicata dal bit in TA del registro R. In esecuzione del programma il registro contenente l’istruzione da eseguire è selezionato dal decodificato dei 3 flip flop HM, HL e HK. Tabella. Registri programma HK 0 1 X 1 0 HL 1 X 1 0 X HM X 0 1 X 1 Registro G I F E D La connessione ad anello, con HM che si richiude invertito su HL impedisce le configurazioni che producono l’attivazione contemporanea di più registri. L’istruzione estratta dal registro selezionato viene memorizzata nel flip flop LP, unico per i 5 registri, indipendentemente dal gruppo, 1° o 2°, del registro. In SP il segnale XI, TA=1 di R, avvia la sequenza dei flip flop NA - NB , durata un tempo di carattere ognuno. In NB, l’istruzione contenuta in LP, viene caricata nel registro H . In caso di lettura di una istruzione di Stop (Codice operativo = 0 → S) si ha li reset del flip flop HP e la fine dell’esecuzione del programma con il rientro nello stato di attesa comandi SA. In tutte le altre istruzioni a SP segue SB. La successione degli stati è funzione dell’istruzione in esecuzione. Al termine dell’ultimo stato esecutivo si ritorna in SP. Se durante l’esecuzione di un programma si ha una condizione di errore, il set di ER, provoca il rientro in SA con lampadino rosso ON e il reset di HP. Il diagramma mostra il lancio del programma, introdotto precedentemente da tastiera, tramite il tasto di avvio V codice C0 in SA. A seguito della stampa dell’istruzione introdotta, la sua esecuzione negli stati SB e SP e l’estrazione ed inizio dell’ esecuzione con SE del codice B4, radice quadrata del contenuto di A . Diagramma Esecuzione programma. 128Il programma a seguito del tasto S, esegue l’istruzione data da: • Flip flop HK, HL, HM Selezione registro programma. • Bit TA di R Puntatore del Crt precedente l’istruzione da eseguire. A seguito di tasto avvio programma, la prima istruzione del programma sarà quella che nella sequenza ordinata dei registri programma (G, I, F, E, D) segue il codice riferimento corrispondente al tasto di avvio. A tutti gli effetti il tasto di avvio programma si comporta come una istruzione di salto incontrata nell’esecuzione del programma stesso. La fine dell’istruzione di avvio lascia comunque HK – HM, selezione registro programma e TA di R, puntati sul Crt del registro che precede quello contenente l’istruzione da eseguire. La sequenza di fetch se non interessa istruzioni di salto, provvede nel contempo al posizionamento del TA sull’istruzione seguente. La coincidenza del ciclo di fetch con il gap della LDR determina la selezione del nuovo registro programma. L’estrazione in sequenza di una istruzione di riferimento equivale a non opera. In SB si settano le condizioni di salto condizionato non soddisfatte. Il diagramma mostra un caso di fetch di nuova istruzione in una sequenza continua senza salti. Le istruzioni sono identificate da HK – HL (I), TA in R all’inizio sul 5° Crt (D4) e dopo fetch SP sul 6° Crt, istruzione stampa di M (80). Diagramma fetch istruzione . Istruzione in sequenza continua. Diagramma Dettaglio fetch istruzione da programma.

Istruzione di salto

La ricerca di un riferimento, per entrambi i salti, condizionato o no, avviene a partire dal primo carattere del registro G e termina se non trova la coincidenza con il giusto riferimento con il 24° Crt di D. Ne risulta, che se nel programma sono presenti due riferimenti identici, il primo oscura il secondo. Una ricerca di riferimento, con esito positivo, fa riprendere il programma con l’esecuzione della istruzione che segue il riferimento. Il riferimento di un salto, incontrato nell’esecuzione del programma, si comporta come un salto condizionato non verificato, non opera, si passa all’esecuzione dell’istruzione seguente. Il diagramma seguente mostra un doppio salto con riferimenti in 2 registri: Y (E0) Riferimento in I, HK – HL (3), seguito da istruzione di salto V (C0). V (C0) Riferimento in G,HK – HL (1), seguito da istruzione trasferisci in D (23). Diagramma Doppio salto. Seguono le funzioni assunte dai vari flip flop nella ricerca del riferimento del salto. • NC = 1 Salto non condizionato. • ND = 1 Bit TC possibile riferimento. • NE = 1 A fine Crt, in TH, uguaglianza tra altri bit da registro programma (LP) e salto, espresso da UB3 (SP * NE * ND * TH * MK \). • NA Fine riferimento del salto. • NB Istruzione da eseguire. • NG Fine ricerca. Il diagramma seguente mostra il fetch di un indirizzo a seguito di una istruzione di salto Z (F0). 130L’indirizzo D4, agisce come una istruzione nulla. Dopo lo stato SB si ritorna in SP ove si estrae l’istruzione di stampa M (80). Diagramma Sequenza di stati di fetch indirizzo.

Stampa programma

L’avvio di stampa programma avviene in SA. La condizione che distingue la stampa dall’esecuzione del programma è il pulsante AZ premuto. L’avvio della stampa programma si ha con : • Tasto S. Codifica ZN. • Tasto di Avvio programma (V, W, Y, Z). Codifica ZM. Con S la stampa avviene a partire dal registro individuato da HK – HM e dalla istruzione seguente quella puntata dal TA in R. Con tasto di avvio programma, la stampa avviene a partire dalla istruzione seguente il riferimento del tasto di avvio. In entrambi i casi si ha comunque prima la stampa di quanto introdotto da tastiera in SA. Il registro programma è sempre identificato da HK – HL, l’istruzione dal TA in R. Ogni ciclo sposta il TA in R sul Crt seguente. NA in presenza del gap seleziona il registro successivo. La sequenza degli stati è fissa, senza distinzioni dovute al codice istruzione. Il diagramma mostra la fase iniziale di stampa programma, il via è dato dal tasto V di cui segue la stampa accompagnata dalle prime 3 istruzioni: 10 ↓ Trasferisci M in A. 2C ↑\ C Trasferisci M in C splittato. 44 +\C Somma C splittato in A. La sequenza di stati di avvio stampa è la stessa di avvio esecuzione programma. Il ciclo di stati SM, SN, SS di stampa seguito da SP di estrazione dell’istruzione successiva, termina con la lettura di S, codice 00, alla cui stampa segue SA. Diagramma Stampa programma.

Condizioni di errore. Flip flop ER

Le condizioni di errore sono segnalate dal flip flop ER set. La macchina indica all’esterno lo stato di errore mediante l’accensione del lampadino Rosso (UH1) comandato da ER. ER, nei casi di rilevamento di errore, agisce sul succedersi degli stati forzando la fine dello stato in corso per attivare il ritorno in SA con il lampadino Rosso acceso. Onde facilitarne l’individuazione nella figura seguente, i comandi sono indicati con R se agenti su ingresso resistivo e con M se su maschera. Segue un numero onde distinguerli. La condizione di errore viene riposta sempre in SA. Da tastiera, la prima battuta di un tasto , che produca uno strobe AK attiva VH (R1) o dall’introduzione di una cartolina (M6). Figura . Flip flop di errore ER. Le condizioni di errore sono dovute a : • M1 Lettura cartolina (AP \ *SO ). Controllo bit letti. 133a) Il numero di bit letto è minore del previsto. b) Il numero di bit il lettura supera il massimo consentito. Vi sono due casi individuati dal decodificato di registro C (DC). o DC = 1 con SO = 1, quindi essendo DD = 0, la maschera è abilitata e il flip flop ER sarà settato in quanto si è letto un numero di bit maggiore all’atteso. o DC = 0 con fine cartolina SO = 0, la maschera è disabilitata se la temporizzazione di cartolina, sostenuta dai segnali da cartolina stessa, perviene allo stato con tutti e quattro i flip flop reset (NK\*HK\*HL\*HM\) . Quindi a fine cartolina si sono letti i bit nel numero atteso. Se uno dei quattro flip flop è set si ha errore e set di ER. • • • • • • • • • • M2 Segnala il tentativo di occupare il 24° Crt del registro A. L’inizio di PO comandante il passaggio in SG, avviene in presenza di NB settato in SF dalla fine del PO stesso settante il flip flop NA, Crt precedente NB . M3 Istruzione di stampa (ZL) Supero dei decimali permessi. Stato Se, primo giro (NH = 0), con fase di conta decimali terminata (NG = 0 e NF = 1). Segnala posizione della cifra meno significativa prima che siano terminate le cifre significative del registro selezionato (LP). M4 Segnala in divisione (ZF), un riporto di cifra nel registro R. Verificabile se divisione per 0 (Zero). M5 Istruzione di scambio con A (ZG * HF). Scambio di bit non validi. Stato SE. In questo caso il registro A è allineato con il digit meno significativo sul 1° o 13° Crt. Durante Crt validi in A (PA = 1) si segnalano bit (LN = 1) non validi nel registro selezionato (TP = 0). R2 Cartolina. Segnala la mancanza di allineamento tra informazione (NL) e clock durante il periodo di bit di servizio (NH = 0) in cui l’informazione è nulla. R3 Istruzione di trasferimento da M a registro X (ZF). Trasferimento di bit non validi. Stato SE. In questo caso il registro M è allineato con il digit meno significativo sul 1° o 13° Crt. Durante Crt validi in M (PM = 1) si segnalano bit (LN = 1) non validi nel registro selezionato (TP=0). R4 Stato SB. Istruzioni di stampa (ZL), trasferimento (ZH e ZG) e calcolo. Segnala il tentativo di occupare il 12° o 24° Crt (TM), durante il trasferimento in M del registro selezionato il cui contenuto è dato da LN.. R5 Istruzioni di calcolo (ZA). Supero dei decimali permessi. Il calcolo della posizione della virgola in funzione dei decimali richiesti (WD), posiziona la cifra meno significativa prima che siano terminate le cifre significative di A o M (PO). R6 Introduzione numero da tastiera i M. Tentativo di introduzione del 24° Crt. Il flip flop NA è contemporaneo a PM=1 segnalante Crt valido in M. R7 Istruzione di calcolo. Somma o moltiplica. L’aggiunta di un Crt dovuta ad un riporto di cifra ( KB*TA*PO\), introdotto dal gate 04E16 ♠ in K, si sovrappone al TA in A indicante l’ultima cifra decimale impostata.

Appendice A. Codici da tastiera

Tasto/Segnale Codice AA AB AC AD AE AF AK AM AV AN AT AG N N N N D/N D/N D/N D D D/N D/N D μ Switch S2 S3 S10 S4 S5 S6 S1 S7 S8 S9 S11 S12 Reset 1 ° ciclo Off Off Off Off Off Off Off Off Off Off Off ON Reset 2° ciclo ON Off ON ON Off Off ON Off Off Off ON Off Clear Off Off ON ON Off Off ON Off Off ON Off Off Livello 0 00 Off Off Off Off Off Off ON Off Off Off Off Off 1 01 ON Off Off Off Off Off ON Off Off Off Off Off 2 02 Off ON Off Off Off Off ON Off Off Off Off Off 3 03 ON ON Off Off Off Off ON Off Off Off Off Off 4 04 Off Off ON Off Off Off ON Off Off Off Off Off 5 05 ON Off ON Off Off Off ON Off Off Off Off Off 6 06 Off ON ON Off Off Off ON Off Off Off Off Off 7 07 ON ON ON Off Off Off ON Off Off Off Off Off 8 08 Off Off Off ON Off Off ON Off Off Off Off Off 9 09 ON Off Off ON Off Off ON Off Off Off Off Off C 31 ON Off Off Off ON ON ON Off Off Off Off Off R 32 Off ON Off Off ON ON ON Off Off Off Off Off D 33 ON ON Off Off ON ON ON Off Off Off Off Off A 34 Off Off ON Off ON ON ON Off Off Off Off Off B 35 ON Off ON Off ON ON ON Off Off Off Off Off F 36 Off ON ON Off ON ON ON Off Off Off Off Off E 37 ON ON ON Off ON ON ON Off Off Off Off Off / 38 Off Off Off ON ON ON ON Off Off Off Off Off S 20 Off Off Off Off Off ON ON Off Off Off Off Off ↓ 21 ON Off Off Off Off ON ON Off Off Off Off Off ↑ 22 Off ON Off Off Off ON ON Off Off Off Off Off ↕ 23 ON ON Off Off Off ON ON Off Off Off Off Off + 24 Off Off ON Off Off ON ON Off Off Off Off Off - 25 ON Off ON Off Off ON ON Off Off Off Off Off x 26 Off ON ON Off Off ON ON Off Off Off Off Off

27 ON ON ON Off Off ON ON Off Off Off Off Off

◊ 28 Off Off Off ON Off ON ON Off Off Off Off Off

  • 29 ON Off Off ON Off ON ON Off Off Off Off Off

√ 2B ON ON Off ON Off ON ON Off Off Off Off Off V 2C Off Off ON ON Off ON ON Off Off Off Off Off W 2D ON Off ON ON Off ON ON Off Off Off Off Off Y 2E Off ON ON ON Off ON ON Off Off Off Off Off Z 2F ON ON ON ON Off ON ON Off Off Off Off Off , Off ON Off ON Off Off Off Off ON Off Off Off - ON ON Off ON Off Off Off ON Off Off Off Off

Appendice B. Connettori Pacco Elettronica – Attuazioni

I connettori sono 4, ognuno ha 12 Contatti. Essi sono si inseriscono su pin saldati sul lato maggiore del back panel in basso.

Tabella 2

Connettore E - A Pin Segnale Gruppo Descrizione 1 2 3 4 5 6 7 8 9 10 11 12 AB2 AT3 AE2 AN1 AE1 BLT AA2 Vuoto OK1 Schermo +20 Massa Tastiera Rotella Decimali Tastiera Tastiera Tastiera Stampante Tastiera Codice peso 2 Binario – Vero = M Comune del Selettore decimali Codice peso 32 Binario – Vero = M Clear - Annulla ultima cifra – Vero = +20 Codice peso 32 Binario – Vero = +20 Blocco tastiera Codice peso 1 Binario – Vero = M Stampante Stampante Alimentatore Alimentatore Ruota fonica Ruota fonica

Tabella 3

Connettore E - B Pin Segnale Gruppo Descrizione 1 2 3 4 5 6 7 8 9 10 11 12 UD2 AT2 UD1 AN2 AG1 AF2 AT1 AZ2 AZ1 AC2 AW2 AD2 Selezione Decimali Tastiera Selezione Decimali Tastiera Tastiera Tastiera Tastiera Stampa PG Stampa PG Tastiera Stampante Tastiera Codice peso 2 Binario Reset 2 Ciclo Codice peso 1 Binario Clear - Annulla ultima cifra – Vero = M Reset Generale - Vero = +20 Codice peso 32 Binario – Vero = M Reset 2 Ciclo Vero = M Vero = +20 Codice peso 4 Binario – Vero = M μSwitch Carrello in moto Codice peso 8 Binario – Vero = M

Tabella 4

Connettore E - C Pin Segnale Gruppo Descrizione 1 2 3 4 5 6 7 8 9 10 11 12 UD4 UD3 AK1 AP2 Schermo IL IL2 IL1 IL0 Vuoto Luce Rossa Luce Verde AO1 Selezione Decimali Selezione Decimali Tastiera Registra PG Cartolina Cartolina Cartolina Cartolina Codice peso 8 Binario Codice peso 4 Binario Strobe - Codice tastiera valido – Vero = +20 Testina Testina Testina Testina Segnali VS Operatore Segnali VS Operatore Cartolina Errore P 101 in attività Cartolina in moto

Tabella 5

lettura lettura lettura lettura – – – – Schermo segnali IL0-2 Capo 2 Avvolgimento Capo 1 Avvolgimento Centrale Avvolgimento Connettore E - D 136in Segnale Gruppo Descrizione 1 2 3 4 5 6 7 8 9 10 11 12 Massa +20 AO2 AF1 CAR1 AP1 AW1 AV1 AM1 AW2 SPM AK2 Alimentatore Alimentatore Cartolina Tastiera Stampante Tastiera o Cartolina Stampante Tastiera Tastiera Stampante Stampante Tastiera Cartolina in moto Codice peso 32 Binario – Vero = +20 Avanzamento Carrello – Vero = +20 Registra PG Carrello in moto Virgola Segno Meno Carrello in moto Spara Martello Strobe Codice tastiera valido – Vero = M

Appendice C. Tabella corrispondenza Simboli e Ruota fonica.

(img)