Tutti i testi

L'informatica

Sono francese e scrivo per migliorare la mia conoscenza dell'italiano.

KIM UNO


Siccome non avessi abbastanza cose da fare, ho comprato una copia di un'antica scheda informatica Commodore Kim 1.  Il prezzo era di 245 $ nel 1976, cioè circa 1.200 euro oggi. Comme si je n'avais pas assez de choses à faire, j'ai acheté la copie d'une antique carte informatique Commodore Kim-1. Le prix était de 245 dollars en 1976, c'est à dire environ 1.200 euros aujourd'hui.

L'ho ordinata in Italia (a Bari, in Puglia). È stata creata con una scheda Arduino ed è pagabile. (50 euro con il trasporto.)
Si chiama Kim Uno.
Je l’ai commandée en Italie (à Bari, dans les Pouilles). Elle a été créée avec une carte Arduino et est bon marché. (50 euros avec le transport.)
Elle se nomme Kim Uno

Nella scheda c'è già un programma esempio, un cronometro.
Ho trovato sul web due versioni del programma: in linguaggio esadecimale e in linguaggio assembly.

0 to F: sedici tasti per digitare il codice esadecimale di un indirizzo o di un dato.
AD: digitare l'indirizzo (esempio AD 0400).
DA: digitare il dato (esempio DA 00).
+: Incrementare l'indirizzo.
RS: fare il reset del sistema.
GO: eseguire il programma dall'indirizzo scritto sul display.
ST:  stoppare il programma.

Per modificare un dato:
AD (indirizzo) DA (dato)
Sur la carte, il y a déjà un exemple de programme, un chronomètre.
J’ai trouvé sur le web deux versions du programme : en langage hexadécimal et en langage assembleur.

0 to F : seize touches pour taper le code hexadécimal d’une adresse ou d’une donnée.
AD : saisir l’adresse (par exemple AD 0400).
DA : saisir la donnée (exemple DA 00).
+ : Incrémenter l’adresse.
RS : faire la réinitialisation du système.
GO : exécuter le programme à partir de l’adresse écrite sur l’écran.
ST : arrêter le programme.

Pour modifier une donnée:
AD (adresse) DA (donnée)
   

Esadecimale Hexadécimal
[RS] 1 sec [AD] 0400 [DA]

F8+18+A2+00+A9+01+85+29+
A0+00+A5+29+75+24+95+24+
DD+32+04+F0+06+B4+24+A9+
00+85+29+94+24+94+F9+E8+
E0+03+D0+E4+A9+45+85+28+
20+1F+1F+C6+28+D0+F9+4C+
00+04+60+60+24+00+00+00+

[AD] 0024 [DA]

50+58+23+

[AD] 0400 [DA]

Assembly Assembleur
Ho voluto commentare, linea dopo linea, il programma assembly (6502). J'ai voulu commenter, ligne par ligne le programme assembleur (6052)
Langage de programmation - Référence des instructions 6502
* = $0400
0400 START
0400 SED (Impostare il flag del decimale a 1.)
0401 CLC (Riportare il flag del riporto a 0.)
0402 LDX #$00 (Caricare il valore nel registro X.)
0404 LDA #$01 (Caricare il valore nel registro dell'accumulatore A.)
0406 STA *$29 (Conservare un valore che proveniente dal registro accumulatore.)
0408 NEXTD
0408 LDY #$00 (Caricare il valore nel registro Y.)
040A LDA *$29 (Caricare il valore nel registro dell'accumulatore A.)
040C ADC *$24,X (Eseguire un'addizione con il riporto.)
040E STA *$24,X (Conservare un valore proveniente dal registro dell'accumulatore.)
0410 CMP CARRYT,X (Confrontare i flag come se fosse eseguita una sottrazione .)
0413 BEQ CONTIN (Saltare all'indirizzo quando il flag di uguaglianza è 1.)
0415 LDY *$24,X (Caricare il valore nel registro Y.)
0417 LDA #$00 (Caricare il valore nel registro dell'accumulatore A.)
0419 STA *$29 (Conservare un valore proveniente dal registro dell'accumulatore.)
041B CONTIN
041B STY *$24,X (Conservare un valore proveniente dal registro dell'accumulatore.)
041D STY *$F9,X (Conservare un valore proveniente dal registro dell'accumulatore.)
041F INX (Incrementare il registro X.)
0420 CPX #$03 (Confrontare i flag come se fosse eseguita una sottrazione sul registro X.)
0422 BNE NEXTD (Saltare all'indirizzo quando il flag di uguaglianzia è 0.)

0424 LDA #$45 (Caricare il valore nel registro dell'accumulatore.)
0426 STA *$28 (Conservare un valore proveniente dal registro dell'accumulatore.)
0428 L1

0428 JSR $1F1F (Chiamare un sottoprogramma all'indirizzo.)
042B DEC *$28 (Decrementare una memoria.)
042D BNE L1 (Saltare all'indirizzo quando il flag di uguaglianza è 0.)

042F JMP START  (Saltare all'indirizzo.)

0432 CARRYT
0432 .BYTE $60
0433 .BYTE $60
0434 .BYTE $24

* = $0400
0400 START
0400 SED (Met le drapeau de décimal à 1.)
0401 CLC (Met le drapeau de retenue à 0.)
0402 LDX #$00 (Charge la valeur dans le registre X.)
0404 LDA #$01 (Charge la valeur dans le registre de l'accumulateur A.)
0406 STA *$29 (Entrepose une valeur provenant du registre de l'accumulateur.)
0408 NEXTD
0408 LDY #$00 (Charge la valeur dans le registre Y.)
040A LDA *$29 (Charge la valeur dans le registre de l'accumulateur A.)
040C ADC *$24,X (Permet de faire une addition avec la retenue.)
040E STA *$24,X (Entrepose une valeur provenant du registre de l'accumulateur.)
0410 CMP CARRYT,X (Compare des ensembles de drapeaux comme si une soustraction avait été effectuée.)
0413 BEQ CONTIN (Fait un saut à l'emplacement spécifié si le drapeau d'égalité vaut 1.)
0415 LDY *$24,X (Charge la valeur dans le registre Y.)
0417 LDA #$00 (Charge la valeur dans le registre de l'accumulateur A.)
0419 STA *$29 (Entrepose une valeur provenant du registre de l'accumulateur.)
041B CONTIN
041B STY *$24,X (Entrepose une valeur provenant du registre de l'accumulateur.)
041D STY *$F9,X (Entrepose une valeur provenant du registre de l'accumulateur.)
041F INX (Incrémente le registre X.)
0420 CPX #$03 (Compare des ensembles de drapeaux comme si une soustraction avait été effectuée sur le registre X.)
0422 BNE NEXTD (Fait un saut à l'emplacement spécifié si le drapeau d'égalité vaut 0.)

0424 LDA #$45 (Charge la valeur dans le registre de l'accumulateur A.)
0426 STA *$28 (Entrepose une valeur provenant du registre del'accumulateur.)
0428 L1

0428 JSR $1F1F (Appelle un sous-programme à l'emplacement spécifié.)
042B DEC *$28 (Décrémente une cellule mémoire.)
042D BNE L1 (Fait un saut à l'emplacement spécifié si le drapeau d'égalité vaut 0.)

042F JMP START (Saute à l'adresse spécifiée.)

0432 CARRYT
0432 .BYTE $60
0433 .BYTE $60
0434 .BYTE $24

Per non avere un cronometro, ma un orologio, bisogna impostare un'ora e digitare:
AD 0024 DA SS+MM+OO+ (secondi, minuti, ore)
AD 0400 GO
Pour ne pas avoir un chronomètre, mais une horloge, il faut régler une heure et taper :
AD 0024 DA SS+MM+OO+ (secondes, minutes, heures)
AD 0400 GO

Questo è un programma esempio perché… l'orologio non funziona bene : in dieci minuti è in ritardo di quattro minuti. C’est un exemple de programme parce que... l'horloge ne fonctionne pas bien : en dix minutes, elle a quatre minutes de retard.

Questa pagina è stata modificata il 02/03/2024. (C) (E) (L) (P 03.2024