Wie man Apple 1 zusammenbaut und ein Spiel dafür schreibt

Wie man Apple 1 zusammenbaut und ein Spiel dafür schreibt




40 Jahre sind seit der Veröffentlichung des Computers Apple 1 vergangen. Heute erreichen seine Fähigkeiten nicht einmal einfache Mikroprozessorgeräte oder Mikrocontroller. Aber 1976 machte diese Neuheit viel Lärm, es wurde sogar von einer Revolution in der Welt der Computer gesprochen. Ich lade den Leser ein, Apple 1 mit mir zu sammeln, um herauszufinden, was daran interessant ist, und um eine Art Programm zu schreiben.

Ich muss sofort sagen, dass ich es nicht auf einmal gesammelt habe. Es dauerte drei Jahre, um nach Komponenten zu suchen, in Ihrer Freizeit zu erstellen und zu debuggen, dann ungefähr die gleiche Menge zu debuggen und schließlich zusammenzukommen und diesen Artikel zu schreiben.

Eigenschaften Apple 1


Typ: Personal Computer
Produktionsjahre: Juli 1976 - März 1977
Prozessor: MOS 6502
Taktfrequenz: 1MHz
Speicher: 256 Byte ROM, 4 KB RAM, erweiterbar auf bis zu 8 KB
Video: 40x24 Zeichen
Hergestellt: ca. 200 Stück

Ein bisschen Geschichte


Der Schöpfer von Apple 1 ist Stephen Wozniak. Tatsächlich hieß es zum Zeitpunkt seiner Erstellung noch nicht Apple 1. Ja, und Apple selbst war nicht da.

Steve entwarf schon in jungen Jahren gern elektronische Geräte. Seine erste Rechenmaschine war „Sahnesoda“, die auf integrierten Schaltkreisen ohne Verwendung eines Zentralprozessors entwickelt wurde und einfache mathematische Operationen ausführen kann. Leider konnte ich keine Fotos oder Beschreibungen dieses Computers finden, nur ziemlich gemeine Informationen von Steve selbst, die in seinem Buch beschrieben wurden. Das Schicksal der "Sahnesoda" ist ebenfalls traurig - sie brannte nieder und es gab keine Versuche, sie wiederherzustellen. Später, als Steve bei HP an Taschenrechnern arbeitete, lud sein Freund Allen Baum ein Treffen des Computer Clubs in Palo Alto, Kalifornien, ein. Steve wurde informiert, dass dieses Treffen Terminals und Videotechnik gewidmet war. Zu diesem Zeitpunkt hatte er bereits ein eigenes Terminal für die Arbeit in ARPANET erstellt und hatte eine Idee über die Terminaltechnik, weshalb er sich bereit erklärte, zu gehen. Steve war ein bescheidener Typ, und wenn er wüsste, dass es sich um Computer handelt, sagte er, dass er nicht dorthin gehen würde.
Während des Treffens fühlte er sich wohl, als die Anwesenden über einige seltsame Mikroprozessoren und den Altair 8800-Computer diskutierten.

Nach dem Treffen erhielt er eine Broschüre, in der der Mikroprozessor i8080A beschrieben wurde. Er beschloss, es in seiner Freizeit zu studieren und erkannte, dass dies genau das war, was er in seinem ersten PC-Sahnesoda tat und wie es einfacher gemacht werden konnte. Am selben Tag wurde ihm die Architektur des zukünftigen Apple 1 geboren. Sie kam jedoch erst nach wenigen Monaten zur Montage, in der die Spezifikationen neuer Mikroschaltungen untersucht und Komponenten gefunden wurden. Tatsache ist, dass in den 70er Jahren Mikroprozessoren und Speicher sehr teuer und knapp waren. Das Problem mit dem Prozessor wurde gelöst, als das Unternehmen MOS Technology einen Budget-Prozessor 6500 und bald 6502 herausbrachte, ein Analogon von 6500, aber mit großartigen Funktionen und einem Preis von nur 25 US-Dollar. Es war der legendäre 6502, der zuerst in die Hände von Steve fiel.

Das nächste Problem dieser Zeit war die Vorbereitung des Computers für den Start. In jenen Jahren wurde das Boot-Programm in der Regel manuell oder vom Band in Computer eingegeben, dies dauerte bis zu einer halben Stunde, und erst danach konnte etwas an ihnen getan werden. Ein Video zum Start von BASIC und ein darauf geschriebenes Spielprogramm auf dem Altair 8800 finden Sie unter dem zweiten Link am Ende des Artikels. Steve löste dieses Problem, indem er permanente Speicherchips (ROM) auf seinem PC installierte, in denen das Steuerprogramm aufgezeichnet war, das er „Monitor“ nannte. Der Name spiegelte den Zweck wider - die meiste Zeit überwachte sie die Tastenanschläge und übertrug sie an das Terminal. Außerdem konnte sie die Werte in den Speicherzellen anzeigen und das Programm von einem bestimmten Ort aus ausführen. Der Monitor von Wozniak passt in 253 Bytes.
Aber ihm fehlte immer noch RAM, um den Computer zu starten. Die erste Version seines PCs basiert auf einem langsamen statischen Speicher. Später ersetzte er es durch ein dynamisches, was die Anzahl der Chips auf dem Board reduzierte und die Arbeitsgeschwindigkeit positiv beeinflusste.
Steve zeigte seinen PC der Öffentlichkeit, und sein Freund Steve Jobs, der den Monitor zum Club trug, schlug vor, mit der Produktion von Leiterplatten für diesen PC zu beginnen und eine eigene Firma mit dem Namen Apple zu gründen.

Sie können mehr darüber und vieles mehr im iWoz-Buch lesen.

Apple Hauptplatine 1




PC-Architektur


Ein PC besteht aus mehreren Knoten.


( Site-Quelle )

Bilderzeugungs- und Ausgabeeinheit (Terminal)




Eigentlich ist dies das Steve-Terminal für ARPANET. An seinem Eingang befindet sich ein 7-Bit-Bus, über den Daten zur Ausgabe auf einen Fernsehbildschirm empfangen werden.

Es gibt keine Schemata für den direkten Zugriff auf den Videospeicher (DAP), es wird jedoch eine zyklische Speicheraktualisierung von 1024 Zellen mit 7 Bit verwendet (außerdem werden 64 Zellen nicht verwendet). Aufgrund des Fehlens eines DAP funktioniert dieses Terminal wie eine Schreibmaschine - sie haben ein Zeichen an die Eingabe gesendet, es auf dem Bildschirm angezeigt, den Cursor für das nächste Zeichen bewegt und keine Grafiken. Aufgrund der ständigen Aktualisierung dieses Speichers ist der Betrieb des Terminals ziemlich langsam. Alle Zeichen werden nacheinander angezeigt. Sie können nicht einfach zurückgehen und ein falsch eingegebenes Zeichen korrigieren. Zum Bearbeiten müssen Sie den Befehl Monitor eingeben, der den Inhalt der Speicherzelle ändert, in der der Fehler aufgetreten ist, und dann den anderen Befehl verwenden, um den Bytewert aus der geänderten Speicherzelle anzuzeigen.

Wenn wir in unserem Programm den Bildschirm löschen möchten, müssen wir den Wagen 24 Mal in eine neue Zeile übertragen. Übrigens, wenn Sie die Eingabetaste drücken (die moderne Bezeichnung ist Enter), startet der Generator, der das Leerzeichen bis zum Ende der Zeile druckt.

Es gibt keinen Grafikmodus, und der Zeichensatz ist auf den Standardsatz von ASCII-Codes mit Werten von 1 bis 127 beschränkt (auf dem Bildschirm werden nur Zeichen aus dem Intervall 32-126 angezeigt, einige andere werden als Steuerzeichen verwendet, z. B. 13-Zeilen-Feed), daher der 7-Bit-Bus und in der höchsten Ordnung ist die Einheit immer eingestellt.

Layouts aller angezeigten Zeichen werden im Nur-Lese-Speicher (ROM) aufgezeichnet. Nachdem das Zeichen am Terminaleingang angekommen ist, wird es zuerst in einen kleinen Speicher (ein Analogon eines modernen Videospeichers) geschrieben, und dann werden über das Zählersystem die Adressen im Zeichengenerator-ROM ausgewählt, die das Layout des Ausgabezeichens enthalten, und über die Schieberegister werden diese Daten mit den erzeugten Videotaktimpulsen gemischt Monitoreingang (oder Niederfrequenz-TV-Eingang).

Um die Helligkeit des Bildes anzupassen, verfügt die Karte über einen Abstimmwiderstand. Ich habe es durch eine einfache Halbierende ersetzt.

Es sollte auch beachtet werden, dass es aufgrund von Fehlern im Bilderzeugungsschema auf den meisten modernen digitalen Fernsehgeräten oder Monitoren nicht korrekt angezeigt werden kann. Analoge Fernsehgeräte verzeihen diese Fehler. Am Ende des Artikels ein dreiminütiges Video mit meiner Qual auf einem solchen Monitor.

Mikroprozessoreinheit



Es enthält einen 6502-Mikroprozessor, einen ROM, einen E / A-Port (PIA), Pufferverstärker, einen Geräteadressdecoder, RAM und einige kleine Mikroschaltungen.

E / A blockieren und mit externen Geräten arbeiten




Die Tastatur wird abgefragt und das eingegebene Zeichen wird vom Eingabe-Ausgabe-Controller (PIA) 6520 auf den Datenbus übertragen. Stattdessen habe ich 6821 installiert. Und es funktioniert einwandfrei.

Die Arbeit mit externen Geräten erfolgt wie mit Speicherzellen. Jedes Gerät verfügt über einen eigenen Speicherbereich. Der Portdecoder befasst sich mit der Einbeziehung der Ein- / Ausgabe eines bestimmten Geräts. Die Eingangsleitungen sind mit den Adressleitungen des Mikroprozessors verbunden. Wenn Sie also die gewünschte Adresse einstellen, wird das benötigte Gerät an den Datenbus angeschlossen. Was und wie Sie damit umgehen können, hängt vom Programm und vom Gerät selbst ab.
Da in diesem PC keine Unterbrechungen implementiert sind, verarbeitet der Zentralprozessor den gesamten Datenstrom (Tastatureingabe, Zeichenausgabe, Datenaustausch mit externen Geräten usw.).

Zum Anschließen eines externen Geräts befindet sich ein Anschluss auf der Hauptplatine. Das einzige mir bekannte Gerät, das in den 70er Jahren für diesen PC entwickelt wurde, ist eine Schnittstellenkarte für die Arbeit mit einem externen Datenspeicher - einem Kassettenrekorder.



Netzteil




Hier ist alles einfach. Zur Stromversorgung eines Computers werden vier Spannungen benötigt. + 5 V, -5 V, + 12 V und -12 V. Das Netzteil wurde vom Käufer eigenständig hergestellt. Zu diesem Zweck mussten zwei Abwärtstransformatoren separat erworben und an die Hauptplatine angeschlossen werden, auf der sich bereits Gleichrichter und Stabilisatoren befanden. Der Kühler verfügt über einen + 5-V-Stabilisator, der sich erheblich erwärmt. Viele Benutzer haben einen Lüfter installiert, ich habe kein Fahrrad erfunden und das Gleiche getan.

Natürlich war es möglich, ein modernes Schaltnetzteil zu installieren, aber ich wollte eine warme Röhre, die mit 50 Hz rumpelt.

Komponentensuche, Montage und Inbetriebnahme


Wie ich oben schrieb, dauerte die Suche nach Komponenten fast 3 Jahre, wenn auch zeitweise. Die erste wurde eine Leiterplatte gekauft, nachdem sie etwa ein Jahr in einem Regal gelegen hatte, begann sie allmählich zu Bauteilen zu wachsen. Zuerst habe ich die Buchsen für Mikroschaltungen und Anschlüsse zum Anschließen von Strom und Monitor gelötet. Dann alle passiven Elemente - Widerstände, Kondensatoren und Dioden. Zwar konnten die ursprünglichen Sprague-Kondensatoren nicht sofort bezogen werden, und stattdessen handelte es sich in der ersten Jahreshälfte um gewöhnliche moderne Elektrolyte.

Die meisten Mikroschaltungen wurden sofort erworben, außerdem haben die meisten sowjetische Analoga der 155. Serie. Ich musste für solche Mikroschaltungen laufen:

Video-ROM - Eine bestimmte Firmware muss darin aufgezeichnet sein, da sonst kein ausreichendes Bild angezeigt wird.
2504V - sieben Register, in denen das auf dem Bildschirm angezeigte Bild gespeichert ist.
2519B ist ein Zähler, der zum Erstellen eines Bildes ohne Analoga verwendet wird.
8T97 - Datenbuspuffer, die eine Überlastung des Mikroprozessor-Datenbusses verhindern, in anderen Angelegenheiten fanden sie später einen sowjetischen Ersatz - K155LP11.
ROM mit dem Steuerprogramm "Monitor".

Nachdem alle Komponenten gefunden, gelötet oder auf der Hauptplatine installiert waren, begann der interessanteste Teil - das Debuggen.

Beim ersten Einschalten - auf den Netzschalter klicken, 5 Sekunden, ausschalten - es gibt keinen Rauch, Staus in der Wohnung sind intakt, nichts hat Feuer gefangen - Ordnung. Ich schalte es ein, schaue mir das Bild an - es gibt Müll von zufälligen Zeichen auf dem Bildschirm. Ich drücke RESET und CLEAR SCREEN dahinter (ja, ja, es gibt einen solchen Knopf - Benutzer wurden damals nicht mit modischen Dingen verwöhnt, und Designer dachten, lassen Sie den Benutzer den Bildschirm löschen, wenn er muss), nichts passiert - der gleiche zufällige Müll.
Darüber hinaus beginnt der + 5V-Stabilisator bereits zu backen, ein warmes Röhrenaroma von frisch verbrannten Lackfilzen, Farbfilze von diesem Stabilisator sind durch den Raum gegangen. Ich schalte es aus, warte 5 Minuten, bis es vollständig abgekühlt ist, und in solch kurzen Serien versuche ich, während des gesamten Debugging-Zeitraums weiter zu debuggen, daher wird diese Tatsache nicht weiter angezeigt.

Wenn alles funktioniert hat, sollte nach dem Einschalten des Computers ein Begrüßungsbildschirm in Form von abwechselnden, blinkenden "@_" Zeichen im gesamten Arbeitsbereich des Monitors auf dem Bildschirm angezeigt werden. Nach Drücken von RESET und CS sollte der Bildschirm gelöscht werden und nur der Cursor zur Eingabe des Befehls sollte übrig bleiben Steuerprogramm "Monitor".

Die Sichtprüfung und die Kontinuität der Bildgebungs- und Stromkreise ergaben nichts. Und nach einigen Tagen der Qual stellte ich fest, dass der Verkäufer mir die falschen Analoga der Videospeicherchips geschickt hatte. Ich stand 1403A, obwohl die Analoga 1404A sind. Ich habe diese Register aus den Bedienfeldern gezogen, und auf dem Bildschirm hat sich nichts geändert. Der Verkäufer gab seinen Fehler zu und bat ihn, diese Register an ihn zurückzusenden, aber da sie nicht teuer waren, habe ich mich nicht darum gekümmert. Die ursprünglichen Register haben mich bereits ungefähr 80 Dollar gekostet. Sie mussten drei Wochen warten.

Nach dem Ersetzen der Register erschienen schließlich die lang erwarteten blinkenden Hunde (oder Äpfel, denen Sie mehr mögen), was Videospeicher und damit den gesamten verdienten Videoblock bedeutet.

Ich drücke RESET, CS, der Bildschirm wird gelöscht, aber der Cursor erscheint nicht. Die Mikroprozessoreinheit funktioniert also nicht. Es gibt nicht viele Problemquellen - entweder den Prozessor oder das ROM oder die kleine Logik in ihrer Bindung.

Die erste untersuchte Komponente war das ROM mit dem „Monitor“, da sich einer der Mikrokreise erheblich erwärmte.

Ein wenig abgelenkt werde ich sagen, dass das Steuerprogramm in zwei Speicherchips aufgezeichnet ist, von denen jeder 255 Speicherzellen hat und jeder Chip nur 4 Bits im Ausgang hat. Um den 8-Bit-Prozessor zu steuern, hat Wozniak zwei solcher Mikroschaltungen parallel geschaltet und die erforderlichen 8 Datenbits am Ausgang empfangen. Und sein gesamtes Steuerprogramm passte in 253 Bytes (2 Bytes blieben frei).



Um den Inhalt dieses Speichers zu lesen, habe ich ein Arduino-basiertes Gerät auf einem Steckbrett zusammengebaut.

Die Steuerung sortierte die Adressen dieser ROMs nacheinander, führte 4-Bit-Daten zu 8-Bit-Daten zusammen und zeigte sie in hexadezimaler Form auf dem Monitor des Kommunikationskanals auf dem Computer an. Nachdem ich den Inhalt des ROM überprüft hatte, fand ich keine Fehler darin.

Das Ersetzen der kleinen Logik führte ebenfalls nicht zu Ergebnissen, so dass der Verdacht auf die ehrwürdigen Jahre des Hauptverarbeiters und seinen Ruhestand fiel.

Ich habe keinen anderen 6502-basierten Computer, also habe ich ihn auf einem Steckbrett installiert, ihn mit Strom von Arduinki versorgt, 1-MHz-Generatorimpulse (vom zukünftigen Specialist-PC), den NOP-Befehl auf dem Datenbus mit Jumpern auf +5 V oder Masse installiert und Ich habe erwartet, dass durch Ausführen einer leeren Aktion der Wert des Adresszählers erhöht wird. Dies ist jedoch nicht geschehen. Es ist überhaupt nichts passiert. Es sieht so aus, als wäre ein Stein jetzt definitiv ein Stein. Ich habe ein anderes bestellt, da es von MOS produziert werden sollte. Während er fuhr, schaffte ich es in den Urlaub zu fahren und im Meer zu schwimmen.



Testen des Prozessors 6502. Ja, es war möglich, 1 MHz von Mega-Timern zu erhalten, ja, es war überhaupt möglich, darauf zu verzichten, ich kann das alles tun, aber dann wollte ich genau das tun.

Nach der Installation eines neuen Prozessors einschalten - Hallo, Hunde - RESET - CS - Hallo Befehlszeile! Die Prozessoreinheit hat funktioniert, weniger als sechs Monate sind vergangen!

Das nächste Problem - ich hatte nichts, um Befehle und Code einzugeben, es gab keine Tastatur.

Tastatur


Die Tastatur dieses PCs ist ein Gitter von Leitern, in deren Knoten Tasten installiert sind. Dieser Fall ist mit einem gedrückten Tastendecoder verbunden, der einen gedrückten Tastencode entlang einer 7-Bit-ASCII-Leitung und einen Kurzzeit-Gate-Impuls auf einer separaten Leitung ausgibt. Wenn dieser Impuls an den Steuerbus weitergeleitet wird, beginnt der Prozessor mit der Verarbeitung des eingegebenen Zeichens.



Um eine solche Tastatur zu erhalten, wird die Angelegenheit im Allgemeinen noch gelöst, aber dies ist normalerweise eine Zahl mit zwei Nullen und nicht in russischen Rubeln. Daher begann ich zu überlegen, wie ich meine PS / 2-Tastatur an meinen Computer anschließen könnte.

Nichts Interessanteres als der Arduino Nano ist mir eingefallen. Im Laufe des Abends habe ich den Adapter zwischen der PS / 2 und dem ASCII-Port durch Montage montiert und die Firmware dafür geschrieben. Da Apple 1 nicht über die Tasten PgUp und PgDown verfügt, habe ich sie als Tasten RESET und CLEAR SCREEN verwendet. Von diesem Tag an musste ich die Beine nicht mehr mit einer Pinzette auf dem Brett von Hand zu Hand schließen, was sehr erfreulich war.

Die eingegebenen Zeichen wurden bekanntermaßen auf dem Bildschirm gedruckt, und sogar das Testprogramm aus der Dokumentation für diesen Computer funktionierte. Sie zeigt lediglich alle auf diesem Computer angezeigten Zeichen in einer Schleife an.


Blick von oben


Ansicht von unten

Eine lustige Geschichte passierte mit der Tastatur. Anfänglich funktionierte die Eingabetaste nur zur Hälfte - sie gab Befehle korrekt in den Speicher ein und gab Anweisungen für ihre Ausführung, aber die Übersetzung in eine neue Zeile fand nicht statt. Aufgrund der Beschaffenheit des Terminals verursachte dies im Allgemeinen keine großen Probleme. Aber ich habe beschlossen, diese Angelegenheit zu beheben. Ich begann mit dem Studium des PC-Schaltplans. Der Benutzer Mdesk hat mit zx-pk.ru eine große Hilfe geleistet. Als ich die Schaltung studierte, hatte ich keine einzige Frage zum Betrieb der Hardware-Wagenübersetzungseinheit, sondern setzte mich an den Tester und das Oszilloskop. Das Klingeln der Leiter ergab nichts - alles intakt. Dann ging das Oszilloskop in Aktion. Ich habe die Eingangssignale von der PIA angerufen - sie waren normal, das Signal ging irgendwo auf dem 7451N verloren, ich habe versucht, es auf 7450 zu ändern, und die sowjetischen Kollegen (155LR1 und 155LR11) haben nicht funktioniert. Als ich die Ketten weiter entwirrte, kam ich zum Einzelvibrator 74123, und es war notwendig, die von ihm erzeugten Verzögerungen zu überprüfen. Aber mein Adapter schließt es physisch, was den Anruf unangenehm macht.

Dann habe ich ein Testprogramm geschrieben
280: A9 8D 20 EF FF A9 31 20 EF FF 4C 80 02
Sie zeigt lediglich die Sequenz Return-1-Return-1 an (Einheiten mit Bildlauf nach unten).

Ich habe damit angefangen, Einheiten gingen wie erwartet an die Reihe. Dann nahm ich den Adapter aus der Steckdose, die Geräte liefen sofort aus. Der Grund ist also der Adapter. Danach löste sich das Problem schnell. Die Schaltflächen PgUp und PgDown, die ich zum Zurücksetzen und Löschen des Bildschirms verwende. Die Bildschirmreinigung (CLR) hing an einem der Beine von Arduina. Zum Zeitpunkt der Reinigung habe ich dort eine aufgetragen. Nach dem Loslassen habe ich sie auf 0 zurückgesetzt. Diese 0 löschte die gesamte CLR-Linie aus, verwendet jedoch auch den Linienvorschubblock. Die Lösung ist einfach - setzen Sie eine Diode zwischen Arduinka und CLR, und es hat funktioniert!

Da das Wählen von Hand-zu-Hand-Kilobyte-Programmen eine mühsame und nicht immer genaue Aufgabe wäre, kam mir die Idee, eine SD-Karte an dieselbe Arduinka anzuschließen, mit der Sie Programme eingeben können. Das funktioniert so: Ich lege die Datei dump.hex im Stammverzeichnis ab. Wenn ich die TAB-Taste drücke, liest der Controller den Inhalt der Datei und drückt die entsprechenden Tasten.

Software


Es gibt nicht viele Programme, die für Apple 1 geschrieben wurden. Ich verbinde dies mit dem bevorstehenden Erscheinen eines fortgeschritteneren Computers - Apple 2. Und dennoch gibt es mehrere Spiele und Systemprogramme dafür. Zum 30-jährigen Jubiläum von Apple 1 haben Enthusiasten sogar eine ziemlich große Demo geschrieben (Link unten).

Ich habe das alles gestartet und nachgesehen, aber ich wollte etwas Eigenes schreiben. Ich habe beschlossen, ein 2048-Spiel für ihn zu schreiben. Ich habe 2 Stunden gebraucht, um den Algorithmus zu schreiben und zu codieren (vorher konnte ich nicht unter 6502 schreiben). Die Größe des empfangenen Programms betrug 1679 Bytes. Sie können es sowohl auf der Originalhardware als auch in Emulatoren ausführen.

Das Programm
280: 4C F8 08 20 20 20 20 20
288:20 20 32 20 20 20 34 20
290:20 20 38 20 20 31 36 20
298:20 33 32 20 20 36 34 20
2A0:31 32 38 20 32 35 36 20
2A8:35 31 32 31 30 32 34 32
2B0:30 34 38 01 00 00 00 00
2B8:00 00 00 00 00 00 00 00
2C0:00 00 00 2B 2D 2D 2D 2D
2C8:2D 2D 2B 2D 2D 2D 2D 2D
2D0:2D 2B 2D 2D 2D 2D 2D 2D
2D8:2B 2D 2D 2D 2D 2D 2D 2B
2E0:8D 00 A2 00 A9 8D E8 20
2E8:EF FF E0 24 F0 03 4C E6
2F0:02 60 A9 2B 20 EF FF A9
2F8:20 20 EF FF 60 A9 8D 20
300:EF FF 60 0A 2A A8 A9 00
308:79 83 02 20 EF FF C8 A9
310:00 79 83 02 20 EF FF C8
318:A9 00 79 83 02 20 EF FF
320:C8 A9 00 79 83 02 20 EF
328:FF A9 20 20 EF FF 20 F2
330:02 60 20 FD 02 A2 00 BD
338:C3 02 20 EF FF E8 E0 1E
340:F0 03 4C 37 03 60 20 32
348:03 20 F2 02 AD B3 02 20
350:03 03 AD B4 02 20 03 03
358:AD B5 02 20 03 03 AD B6
360:02 20 03 03 20 32 03 20
368:F2 02 AD B7 02 20 03 03
370:AD B8 02 20 03 03 AD B9
378:02 20 03 03 AD BA 02 20
380:03 03 20 32 03 20 F2 02
388:AD BB 02 20 03 03 AD BC
390:02 20 03 03 AD BD 02 20
398:03 03 AD BE 02 20 03 03
3A0:20 32 03 20 F2 02 AD BF
3A8:02 20 03 03 AD C0 02 20
3B0:03 03 AD C1 02 20 03 03
3B8:AD C2 02 20 03 03 20 32
3C0:03 60 32 30 34 38 8D 8D
3C8:57 2D 55 50 8D 41 2D 4C
3D0:45 46 54 8D 44 2D 52 49
3D8:47 48 54 8D 53 2D 44 4F
3E0:57 4E 8D 8D 43 4F 44 45
3E8:3A 20 44 45 4E 49 53 20
3F0:50 41 52 59 53 48 45 56
3F8:8D 8D 50 52 45 53 53 20
400:41 4E 59 20 4B 45 59 A2
408:00 BD C2 03 20 EF FF E8
410:E0 45 F0 03 4C 09 04 AD
418:11 D0 10 FB AD 10 D0 8D
420:E1 02 60 47 41 4D 45 20
428:4F 56 45 52 59 4F 55 20
430:57 49 4E 20 E2 02 A2 00
438:BD 23 04 20 EF FF E8 E0
440:09 F0 03 4C 38 04 A2 34
448:BD C2 03 20 EF FF E8 E0
450:43 F0 03 4C 48 04 AD 11
458:D0 10 FB AD 10 D0 4C F8
460:08 A0 00 AD E1 02 29 0F
468:AA C8 C0 11 F0 C5 BD B3
470:02 C9 00 F0 0A E8 E0 10
478:D0 EF A2 00 4C 69 04 A9
480:01 9D B3 02 8E E1 02 60
488:A2 00 A9 00 9D B3 02 E8
490:E0 10 D0 F8 A9 01 8D B3
498:02 60 00 00 00 00 00 00
4A0:AE 9F 04 BD 9A 04 C9 00
4A8:D0 14 AE 9E 04 BD 9A 04
4B0:AE 9F 04 9D 9A 04 A9 00
4B8:AE 9E 04 9D 9A 04 60 A9
4C0:03 8D 9F 04 A9 02 8D 9E
4C8:04 20 A0 04 A9 02 8D 9F
4D0:04 A9 01 8D 9E 04 20 A0
4D8:04 A9 01 8D 9F 04 A9 00
4E0:8D 9E 04 20 A0 04 A9 03
4E8:8D 9F 04 A9 02 8D 9E 04
4F0:20 A0 04 A9 02 8D 9F 04
4F8:A9 01 8D 9E 04 20 A0 04
500:A9 03 8D 9F 04 A9 02 8D
508:9E 04 20 A0 04 60 20 E2
510:02 A2 00 BD 2C 04 20 EF
518:FF E8 E0 07 F0 03 4C 13
520:05 A2 34 BD C2 03 20 EF
528:FF E8 E0 43 F0 03 4C 23
530:05 AD 11 D0 10 FB AD 10
538:D0 4C F8 08 AE 9E 04 BD
540:9A 04 C9 00 F0 1D AE 9F
548:04 DD 9A 04 D0 15 A8 C8
550:98 AE 9F 04 9D 9A 04 C9
558:0B F0 B3 A9 00 AE 9E 04
560:9D 9A 04 60 A9 02 8D 9E
568:04 A9 03 8D 9F 04 20 3C
570:05 A9 01 8D 9E 04 A9 02
578:8D 9F 04 20 3C 05 A9 00
580:8D 9E 04 A9 01 8D 9F 04
588:20 3C 05 60 20 BF 04 20
590:64 05 20 BF 04 60 AD B3
598:02 8D 9D 04 AD B7 02 8D
5A0:9C 04 AD BB 02 8D 9B 04
5A8:AD BF 02 8D 9A 04 20 8C
5B0:05 AD 9A 04 8D BF 02 AD
5B8:9B 04 8D BB 02 AD 9C 04
5C0:8D B7 02 AD 9D 04 8D B3
5C8:02 AD B4 02 8D 9D 04 AD
5D0:B8 02 8D 9C 04 AD BC 02
5D8:8D 9B 04 AD C0 02 8D 9A
5E0:04 20 8C 05 AD 9A 04 8D
5E8:C0 02 AD 9B 04 8D BC 02
5F0:AD 9C 04 8D B8 02 AD 9D
5F8:04 8D B4 02 AD B5 02 8D
600:9D 04 AD B9 02 8D 9C 04
608:AD BD 02 8D 9B 04 AD C1
610:02 8D 9A 04 20 8C 05 AD
618:9A 04 8D C1 02 AD 9B 04
620:8D BD 02 AD 9C 04 8D B9
628:02 AD 9D 04 8D B5 02 AD
630:B6 02 8D 9D 04 AD BA 02
638:8D 9C 04 AD BE 02 8D 9B
640:04 AD C2 02 8D 9A 04 20
648:8C 05 AD 9A 04 8D C2 02
650:AD 9B 04 8D BE 02 AD 9C
658:04 8D BA 02 AD 9D 04 8D
660:B6 02 60 AD B3 02 8D 9A
668:04 AD B7 02 8D 9B 04 AD
670:BB 02 8D 9C 04 AD BF 02
678:8D 9D 04 20 8C 05 AD 9D
680:04 8D BF 02 AD 9C 04 8D
688:BB 02 AD 9B 04 8D B7 02
690:AD 9A 04 8D B3 02 AD B4
698:02 8D 9A 04 AD B8 02 8D
6A0:9B 04 AD BC 02 8D 9C 04
6A8:AD C0 02 8D 9D 04 20 8C
6B0:05 AD 9D 04 8D C0 02 AD
6B8:9C 04 8D BC 02 AD 9B 04
6C0:8D B8 02 AD 9A 04 8D B4
6C8:02 AD B5 02 8D 9A 04 AD
6D0:B9 02 8D 9B 04 AD BD 02
6D8:8D 9C 04 AD C1 02 8D 9D
6E0:04 20 8C 05 AD 9D 04 8D
6E8:C1 02 AD 9C 04 8D BD 02
6F0:AD 9B 04 8D B9 02 AD 9A
6F8:04 8D B5 02 AD B6 02 8D
700:9A 04 AD BA 02 8D 9B 04
708:AD BE 02 8D 9C 04 AD C2
710:02 8D 9D 04 20 8C 05 AD
718:9D 04 8D C2 02 AD 9C 04
720:8D BE 02 AD 9B 04 8D BA
728:02 AD 9A 04 8D B6 02 60
730:AD B6 02 8D 9A 04 AD B5
738:02 8D 9B 04 AD B4 02 8D
740:9C 04 AD B3 02 8D 9D 04
748:20 8C 05 AD 9D 04 8D B3
750:02 AD 9C 04 8D B4 02 AD
758:9B 04 8D B5 02 AD 9A 04
760:8D B6 02 AD BA 02 8D 9A
768:04 AD B9 02 8D 9B 04 AD
770:B8 02 8D 9C 04 AD B7 02
778:8D 9D 04 20 8C 05 AD 9D
780:04 8D B7 02 AD 9C 04 8D
788:B8 02 AD 9B 04 8D B9 02
790:AD 9A 04 8D BA 02 AD BE
798:02 8D 9A 04 AD BD 02 8D
7A0:9B 04 AD BC 02 8D 9C 04
7A8:AD BB 02 8D 9D 04 20 8C
7B0:05 AD 9D 04 8D BB 02 AD
7B8:9C 04 8D BC 02 AD 9B 04
7C0:8D BD 02 AD 9A 04 8D BE
7C8:02 AD C2 02 8D 9A 04 AD
7D0:C1 02 8D 9B 04 AD C0 02
7D8:8D 9C 04 AD BF 02 8D 9D
7E0:04 20 8C 05 AD 9D 04 8D
7E8:BF 02 AD 9C 04 8D C0 02
7F0:AD 9B 04 8D C1 02 AD 9A
7F8:04 8D C2 02 60 AD B6 02
800:8D 9D 04 AD B5 02 8D 9C
808:04 AD B4 02 8D 9B 04 AD
810:B3 02 8D 9A 04 20 8C 05
818:AD 9A 04 8D B3 02 AD 9B
820:04 8D B4 02 AD 9C 04 8D
828:B5 02 AD 9D 04 8D B6 02
830:AD BA 02 8D 9D 04 AD B9
838:02 8D 9C 04 AD B8 02 8D
840:9B 04 AD B7 02 8D 9A 04
848:20 8C 05 AD 9A 04 8D B7
850:02 AD 9B 04 8D B8 02 AD
858:9C 04 8D B9 02 AD 9D 04
860:8D BA 02 AD BE 02 8D 9D
868:04 AD BD 02 8D 9C 04 AD
870:BC 02 8D 9B 04 AD BB 02
878:8D 9A 04 20 8C 05 AD 9A
880:04 8D BB 02 AD 9B 04 8D
888:BC 02 AD 9C 04 8D BD 02
890:AD 9D 04 8D BE 02 AD C2
898:02 8D 9D 04 AD C1 02 8D
8A0:9C 04 AD C0 02 8D 9B 04
8A8:AD BF 02 8D 9A 04 20 8C
8B0:05 AD 9A 04 8D BF 02 AD
8B8:9B 04 8D C0 02 AD 9C 04
8C0:8D C1 02 AD 9D 04 8D C2
8C8:02 60 AD 11 D0 10 FB AD
8D0:10 D0 8D E1 02 C9 D7 D0
8D8:04 20 96 05 60 C9 D3 D0
8E0:04 20 63 06 60 C9 C1 D0
8E8:04 20 30 07 60 C9 C4 D0
8F0:04 20 FD 07 60 4C CA 08
8F8:20 88 04 20 E2 02 20 07
900:04 20 E2 02 20 61 04 20
908:46 03 20 CA 08 4C 01 09




Videoarbeit auf youtube.

Was weiter?


Zunächst möchte ich den Fall schön machen.

Adapter für Tastatur und SD-Karte. Es ist notwendig, die Oberflächenmontage loszuwerden. Ich plane, eine Leiterplatte dafür in China zu entwickeln und zu bestellen.

Arbeiten Sie mit mehreren Dateien. Ich habe vor, einen Dateimanager für Arduinka zu schreiben, mit dem ich eine Datei von der Karte auswählen und ausführen kann.

Ich habe auch einen Anschluss für Erweiterungskarten gekauft. Ich möchte für ihn eine Audiokarte auf K580VI53 löten (nur weil dieser Timer zu Hause herumliegt) und eine kleine Demo mit Ton zeichnen.
Dies wird wahrscheinlich der nächste Artikel sein.

Fazit


Zu sagen, dass ich es wirklich genossen habe, ein Programm für Apple 1 zu erstellen, zu debuggen und zu schreiben, ist fast nichts zu sagen.

Vielen Dank an den Benutzer Mdesk und alle Mitarbeiter von zx-pk.ru für ihre Hilfe bei der Erläuterung der Feinheiten der Architektur und für nützliche Tipps zum Einrichten dieses PCs.

Nun, der größte Dank geht an Steve Wozniak für diesen wunderbaren PC !!!

Nützliche Links


Apple 1 im Wiki
BASIC wird auf Altair 8800 geladen
Apple 1 und ein moderner Monitor (dreieinhalb Minuten Schmerzen und Leiden)
30 Jahre Apple 1 (Demo)
Online-Emulator Apple 1
Online Assembler / Disassembler / Debugger 6502

Russischsprachige Websites für Apple 1:
mdesk.ru
zx-pk.ru

Source: https://habr.com/ru/post/de431270/


All Articles