KIM UN

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 è economica. (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.
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: 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.
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.
Per modificare un dato:
AD (indirizzo) DA (dato)
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)
* = $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 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 START
0400 SED (Mettre le drapeau des décimales à 1.)
0401 CLC (Mettre le drappeau des retenues à 0.)
0402 LDX #$00 (Charger la valeur dans le registre X.)
0404 LDA #$01 (Charger la valeur dans le registre de l'accumulateur A.)
0406 STA *$29 (Conserver une valeur provenant du registre accumulateur.)
0408 NEXTD
0408 LDY #$00 (Charger la valeur dans le registre Y.)
040A LDA *$29 (Charger la valeur dans le registre de l'accumulateur A.)
040C ADC *$24,X (Éxécuter une addition avec retenue.)
040E STA *$24,X (Conserver une valeur provenant du registre accumulateur.)
0410 CMP CARRYT,X (Comparer les drapeaux comme si une soustraction était effectuée.)
0413 BEQ CONTIN (Passer à l’adresse lorsque le drapeau d’égalité est 1.)
0415 LDY *$24,X (Charger la valeur dans le registre Y.)
0417 LDA #$00 (Charger la valeur dans le registre de l’accumulateur A.)
0419 STA *$29 (Conserver une valeur provenant du registre de l’accumulateur.)
041B CONTIN
041B STY *$24,X (Conserver une valeur provenant du registre de l’accumulateur.)
041D STY *$F9,X (Conserver une valeur provenant du registre de l’accumulateur.)
041F INX (Incrémenter le registre X.)
0420 CPX #$03 (Comparer les drapeaux comme si une soustraction était effectuée sur le registre X.)
0422 BNE NEXTD (Sauter à l’adresse lorsque le drapeau d’égalité est 0.)

0424 LDA #$45 (Charger la valeur dans le registre de l’accumulateur.)
0426 STA *$28 (Conserver une valeur provenant du registre de l’accumulateur.)
0428 L1

0428 JSR $1F1F (Appeler un sous-programme à l’adresse.)
042B DEC *$28 (Décrémenter une mémoire.)
042D BNE L1 (Passer à l’adresse lorsque le drapeau d’égalité est 0.)

042F JMP START (Aller à l’adresse.)

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.
Dopo l'acquisto e le prime prove, cosa ne ho fatto? 😉
✅ Lo ho conservata come oggetto da collezione.
❌ Lo ho programmata ed esplorata in fondo.
Et, après l'achat et les premiers essais, qu'en ai-je fait ? 😉
✅ Je l'ai conservée comme objet de collection.
❌ Je l'ai programmée et explorée en profondeur.


Questa pagina è stata modificata il 20.10.24.