Cómo armar Apple 1 y escribir un juego para él

Cómo armar Apple 1 y escribir un juego para él




Han pasado 40 años desde el lanzamiento de la computadora Apple 1. Hoy en día, sus capacidades no alcanzan ni siquiera los microprocesadores o microcontroladores. Pero en 1976, esta novedad hizo mucho ruido, incluso se dijo sobre una revolución en el mundo de las computadoras. Invito al lector a recopilar Apple 1 conmigo para descubrir qué es lo interesante y escribir algún tipo de programa.

Debo decir de inmediato que no lo recogí de una vez. Tomó tres años buscar componentes, construir y depurar en su tiempo libre, luego depurar aproximadamente la misma cantidad y finalmente reunirse y escribir este artículo.

Características Apple 1


Tipo: computadora personal
Años de producción: julio de 1976 - marzo de 1977
Procesador: MOS 6502
Frecuencia de reloj: 1MHz
Memoria: ROM de 256 bytes, 4kB RAM, ampliable hasta 8 kB
Video: 40x24 caracteres
Fabricado: alrededor de 200 piezas.

Un poco de historia


El creador de Apple 1 es Stephen Wozniak. En realidad, en el momento de su creación, todavía no se llamaba Apple 1. Sí, y la propia Apple no estaba allí.

A Steve le gustaba diseñar dispositivos electrónicos desde una edad temprana. Su primera máquina de cómputo fue "refresco de crema", diseñada en circuitos integrados sin usar un procesador central, y capaz de realizar operaciones matemáticas simples. Desafortunadamente, no pude encontrar fotos o descripciones de esta computadora, solo información bastante mala del propio Steve, descrita en su libro. El destino del "refresco de crema" también es triste: se quemó y no hubo intentos de restaurarlo. Más tarde, cuando Steve trabajó en calculadoras en HP, su amigo, Allen Baum, invitó a una reunión del Club de Computación en Palo Alto, California. Steve fue informado de que esta reunión estaba dedicada a terminales y tecnología de video. En ese momento, ya había creado su propio terminal para trabajar en ARPANET, y tenía una idea sobre la técnica del terminal, por lo que accedió a ir. Steve era un tipo modesto, y si sabía que se trataba de computadoras, dijo que no iría allí.
En la reunión, se sintió a gusto, ya que los presentes estaban discutiendo algunos microprocesadores extraños y la computadora Altair 8800.

Después de la reunión, le dieron un folleto que describe el microprocesador i8080A. Decidió estudiarlo en su tiempo libre, y se dio cuenta de que esto era exactamente lo que estaba haciendo en su primer “refresco de crema” para PC, y cómo podría hacerse más fácil. El mismo día, nació la arquitectura del futuro Apple 1. Pero solo llegó al ensamblaje después de unos meses, que se dedicó al estudio de las especificaciones de los nuevos microcircuitos y la búsqueda de componentes. El hecho es que en los años 70 los microprocesadores y la memoria eran muy caros y escasos. El problema con el procesador se resolvió cuando la compañía MOS Technology lanzó un procesador económico 6500, y pronto 6502, un análogo de 6500, pero con excelentes características, y con un costo de solo $ 25. Fue el legendario 6502 quien cayó por primera vez en manos de Steve.

El siguiente problema de esa época fue preparar la computadora para el lanzamiento. En esos años, el programa de arranque, por regla general, se ingresaba en las computadoras manualmente o desde una cinta, esto tomó hasta media hora, y solo después de eso se pudo hacer algo con ellas. Un video del lanzamiento de BASIC y un programa de juego escrito en el Altair 8800 está disponible en el segundo enlace al final del artículo. Steve resolvió este problema instalando chips de memoria permanente (ROM) en su PC, con el programa de control grabado en ellos, al que llamó "Monitor". El nombre reflejaba el propósito: la mayoría de las veces supervisaba las pulsaciones de teclas y las transfería al terminal, además de permitir mostrar los valores en las celdas de memoria y ejecutar el programa desde un lugar específico. El monitor de Wozniak cabe en 253 bytes.
Pero aún le faltaba RAM para iniciar la computadora. La primera versión de su PC fue construida en memoria lenta y estática. Más tarde, lo reemplazó por uno dinámico, lo que redujo el número de fichas en el tablero y afectó positivamente la velocidad del trabajo.
Steve mostró su PC al público, y su amigo, Steve Jobs, quien ayudó a llevar el monitor al club, sugirió comenzar a producir placas de circuito impreso para esa PC y comenzar su propia compañía, que se llamaba Apple.

Puede leer más sobre esto y mucho más en el libro de iWoz.

Placa principal de Apple 1




Arquitectura de PC


Una PC consta de varios nodos.


( Fuente del sitio )

Unidad de formación y salida de imágenes (terminal)




En realidad, esta es la terminal de Steve para ARPANET. En su entrada hay un bus de siete bits, a través del cual se reciben datos para enviarlos a una pantalla de TV.

No tiene esquemas para el acceso directo a la memoria de video (DAP), pero utiliza una actualización de memoria cíclica de 1024 celdas de 7 bits (además, no se usan 64 celdas). Debido a la falta de un DAP, este terminal funciona como una máquina de escribir: enviaron un carácter a la entrada, lo mostró en la pantalla, movió el cursor para el siguiente carácter y no tiene gráficos. Debido a la actualización constante de esta memoria, el funcionamiento del terminal es bastante lento. Todos los caracteres se muestran secuencialmente, no puede regresar y corregir un carácter ingresado incorrectamente. Para editar, debe ingresar el comando Monitor, que cambiará el contenido de la celda de memoria donde se cometió el error, y luego usar el otro comando para mostrar el valor de byte de la celda de memoria modificada.

Si en nuestro programa queremos borrar la pantalla, necesitamos transferir el carro 24 veces a una nueva línea 24 veces. Por cierto, cuando presiona Retorno (la designación moderna es Enter), se inicia el generador, que imprime el carácter de espacio al final de la línea.

No hay modo gráfico, y el conjunto de caracteres está limitado al conjunto estándar de códigos ASCII, con valores del 1 al 127 (en la pantalla solo se muestran los caracteres del intervalo 32-126, algunos otros se usan como caracteres de control, por ejemplo, alimentación de 13 líneas), por lo tanto, el bus de siete bits y en el orden más alto, la unidad siempre está configurada.

Los diseños de todos los caracteres mostrados se registran en la memoria de solo lectura (ROM). Después de que el carácter llega a la entrada del terminal, primero se escribe en una pequeña memoria (un análogo de la memoria de video moderna), y luego a través del sistema de contador se seleccionan las direcciones en la ROM del generador de caracteres que contiene el diseño del carácter de salida, y a través de los registros de desplazamiento, estos datos se mezclan con los pulsos generados del reloj de video entrada de monitor (o entrada de TV de baja frecuencia).

Para ajustar el brillo de la imagen, la placa tiene una resistencia de ajuste. Lo reemplacé con una bisectriz simple.

También debe tenerse en cuenta que debido a errores en el esquema de formación de imágenes, no se puede mostrar correctamente en la mayoría de los televisores o monitores digitales modernos, los televisores analógicos perdonan estos errores. Al final del artículo, un video de tres minutos con mi tormento en ese monitor.

Unidad de microprocesador



Contiene un microprocesador 6502, ROM, puerto de E / S (PIA), amplificadores de búfer, un decodificador de direcciones del dispositivo, RAM y algunos microcircuitos a pequeña escala.

Bloqueo de E / S y trabajo con dispositivos externos




Se sondea el teclado y el controlador de entrada-salida (PIA) 6520 transmite el carácter ingresado al bus de datos. En su lugar, instalé 6821. Y funciona bien.

El trabajo con dispositivos externos ocurre como con las celdas de memoria. Cada dispositivo tiene su propia área de memoria. El decodificador de puerto se ocupa de la inclusión de entrada / salida de un dispositivo específico. Sus líneas de entrada están conectadas a las líneas de dirección del microprocesador, por lo que cuando configura la dirección deseada, el dispositivo que necesitamos está conectado al bus de datos. El programa y el dispositivo en sí determinan qué y cómo puede hacerlo.
Dado que las interrupciones no se implementan en esta PC, el procesador central se encarga de procesar todo el flujo de datos (entrada de teclado, salida de caracteres, intercambio de datos con dispositivos externos, etc.).

Para conectar un dispositivo externo, hay un conector en la placa principal. El único dispositivo conocido para mí que fue creado para esta PC en los años 70 es una placa de interfaz para trabajar con un almacenamiento de datos externo: una grabadora de cinta.



Fuente de alimentación




Todo es simple aquí. Se necesitan cuatro voltajes para alimentar una computadora. + 5V, -5V, + 12V y -12V. La fuente de alimentación fue fabricada por el comprador de forma independiente. Para hacer esto, era necesario comprar por separado dos transformadores reductores y conectarlos a la placa principal, en la que ya había rectificadores y estabilizadores. Hay un estabilizador de + 5V en el radiador, y se calienta significativamente, por lo que muchos usuarios instalaron un ventilador en él, no inventé una bicicleta, e hice lo mismo.

Por supuesto, era posible poner una fuente de alimentación de conmutación moderna, pero quería un retumbar de tubo caliente a 50 Hz.

Búsqueda de componentes, montaje y puesta en servicio.


Como escribí anteriormente, tardó casi 3 años en buscar componentes, aunque de manera intermitente. Al primero se le compró una placa de circuito impreso, después de estar aproximadamente un año en un estante, comenzó a convertirse gradualmente en componentes. Primero, solde los enchufes para microcircuitos y conectores para conectar la alimentación y un monitor. Luego, todos los elementos pasivos: resistencias, condensadores y diodos. Es cierto que los condensadores Sprague originales no se podían obtener de inmediato, y en su lugar, la primera mitad del año eran electrolitos modernos comunes.

La mayoría de los microcircuitos fueron adquiridos de inmediato, además, la mayoría de ellos tienen análogos soviéticos de la serie 155. Tuve que correr por esos microcircuitos:

Video ROM: debe grabarse cierto firmware, de lo contrario no habrá una imagen adecuada.
2504V: siete registros en los que se almacena la imagen que se muestra en la pantalla.
2519B es un contador utilizado para construir una imagen que no tiene análogos.
8T97: memorias intermedias del bus de datos que evitan la sobrecarga del bus de datos del microprocesador; en otros asuntos, más tarde encontraron un reemplazo soviético: K155LP11.
ROM con el programa de control "Monitor".

Después de que todos los componentes se encontraron, soldaron o instalaron en la placa principal, comenzó la parte más interesante: la depuración.

El primer encendido - haga clic en el interruptor de encendido, 5 segundos, apague - no hay humo, los atascos en el apartamento están intactos, nada se incendió - ordene. Lo enciendo, miro la imagen: hay basura de caracteres aleatorios en la pantalla. Presiono RESET y CLEAR SCREEN detrás de él (sí, sí, hay un botón, los usuarios no se vieron mimados con cosas de moda entonces, y los diseñadores pensaron, dejar que el usuario borre la pantalla cuando lo necesite), no sucede nada: la misma basura aleatoria.
Además de eso, el estabilizador de + 5V ya está comenzando a hornearse, un aroma de tubo caliente de fieltros de barniz recién quemados, fieltros de pintura de este estabilizador han dado la vuelta a la habitación. Lo apago, espero 5 minutos, hasta que se enfríe por completo, y en series tan cortas trato de depurar más durante el período de depuración, por lo tanto, este hecho no se indica más.

Si todo funcionó, luego de encender la computadora, debería aparecer una pantalla de bienvenida en la pantalla en forma de caracteres "@_" alternativos y parpadeantes en todo el espacio de trabajo del monitor, y después de presionar RESET y CS, la pantalla debería borrarse y solo debería permanecer el cursor para ingresar el comando programa de control "Monitor".

La inspección visual y la continuidad de la imagen y los circuitos de potencia no produjeron nada. Y después de varios días de tormento, descubrí que el vendedor me envió los análogos incorrectos de los chips de memoria de video. Me puse de pie 1403A, aunque los análogos son 1404A. Saqué estos registros de los paneles, y nada ha cambiado en la pantalla. El vendedor admitió su error y me pidió que le enviara estos registros, pero como no eran caros, no me molesté en hacerlo. Los registros originales ya me han costado alrededor de $ 80. Tuvieron que esperar tres semanas.

Después de reemplazar los registros, finalmente aparecieron los tan esperados perros parpadeantes (o manzanas, a quienes les gusta más), lo que significa memoria de video y con ello se ganó todo el bloque de video.

Presiono RESET, CS, la pantalla se borra, pero el cursor no aparece. Por lo tanto, la unidad de microprocesador no funciona. No hay muchas fuentes de problemas, ya sea el procesador o la ROM, o la pequeña lógica en su enlace.

El primer componente que se investigó fue la ROM con el "Monitor", ya que uno de los microcircuitos se estaba calentando significativamente.

Un poco distraído, diré que el programa de control está grabado en dos chips de memoria, cada uno de los cuales tiene 255 celdas de memoria, y cada chip tiene solo 4 bits en la salida. Para controlar el procesador de ocho bits, Wozniak puso 2 de esos microcircuitos en paralelo, recibió los 8 bits de datos necesarios en la salida. Y todo su programa de control cabía en 253 bytes (2 bytes permanecieron libres).



Para leer el contenido de esta memoria, ensamblé un dispositivo basado en Arduino en una placa de pruebas.

El controlador clasificó secuencialmente las direcciones de estas ROM, fusionó los datos de 4 bits en 8 bits y los mostró en forma hexadecimal en el monitor del canal de comunicación en la computadora. Después de verificar el contenido de la ROM, no encontré ningún error en ella.

Reemplazar la lógica insignificante tampoco produjo resultados, por lo que las sospechas recayeron en los venerables años del procesador principal y su retiro.

No tengo otra computadora basada en 6502, así que la instalé en una placa de prueba, le suministré energía de Arduinki, pulsos de reloj del generador a 1 MHz (de la futura PC Especialista), instalé un comando NOP en el bus de datos con puentes a + 5V, y Esperaba que al realizar una acción vacía aumentaría el valor del contador de direcciones. Pero esto no sucedió. No pasó nada en absoluto. Parece que una piedra ahora es definitivamente una piedra. Pedí otro, ya que debería ser producido por MOS. Mientras conducía, me las arreglé para ir de vacaciones y nadar en el mar.



Probar el procesador 6502. Sí, era posible obtener 1 MHz de los temporizadores Mega, sí, era posible prescindir de él, puedo hacer todo esto, pero quería hacerlo.

Después de instalar un nuevo procesador, encienda - hola, perros - RESET - CS - hola línea de comando! La unidad de procesador ha funcionado, ¡han pasado menos de seis meses!

El siguiente problema: no tenía nada para ingresar comandos y código, no había teclado.

Teclado


El teclado de esta PC es una red de conductores, en cuyos nodos están instalados los botones. Este caso está conectado a un decodificador de tecla presionada, que emite un código de tecla presionada a lo largo de una línea ASCII de siete bits y un pulso de activación a corto plazo en una línea separada. A medida que este impulso pasa al bus de control, el procesador comienza a procesar el carácter ingresado.



Para obtener un teclado de este tipo, en general, el problema aún se está resolviendo, pero generalmente es un número con dos ceros, y no en rublos rusos. Por lo tanto, comencé a pensar cómo conectar mi teclado PS / 2 a mi computadora.

Nada más interesante que el Arduino Nano se me ha ocurrido. Durante la noche, monté el adaptador entre el PS / 2 y el puerto ASCII montando el montaje y escribí el firmware para él. Como Apple 1 no tiene las teclas PgUp y PgDown, las utilicé como los botones RESET y CLEAR SCREEN. Desde este día, no tuve que cerrar las piernas mano a mano con pinzas en el tablero, lo cual fue muy agradable.

Los caracteres mecanografiados se imprimieron en la pantalla, e incluso el programa de prueba de la documentación de esta computadora funcionó. Todo lo que hace es mostrar todos los personajes que se muestran en esta computadora en un bucle.


Vista superior


Vista inferior

Una historia divertida sucedió con el teclado. Inicialmente, la tecla Retorno funcionó solo a la mitad: ingresó correctamente los comandos en la memoria y dio instrucciones para su ejecución, pero no se produjo la traducción a una nueva línea. En general, debido a la naturaleza de la terminal, esto no creó grandes problemas. Pero decidí arreglar este asunto. Comencé estudiando el diagrama de circuito de la PC, el usuario Mdesk proporcionó una gran ayuda con zx-pk.ru. Cuando estudié el circuito, no tenía una sola pregunta sobre el funcionamiento de la unidad de traducción del carro de hardware, me senté en el probador y el osciloscopio. El sonido de los conductores no produjo nada, todo intacto. Entonces el osciloscopio entró en acción. Llamé a las señales de entrada del PIA: eran normales, la señal se perdió en algún lugar del 7451N, intenté cambiarla a 7450 y las contrapartes soviéticas (155LR1 y 155LR11), esto no funcionó. Al desenredar aún más las cadenas, llegué al vibrador único 74123, era necesario verificar los retrasos generados por él. Pero mi adaptador lo cierra físicamente, lo que hace que la llamada sea incómoda.

Luego escribí un programa de prueba
280: A9 8D 20 EF FF A9 31 20 EF FF 4C 80 02
Todo lo que hace es mostrar la secuencia Return-1-Return-1 (unidades con desplazamiento hacia abajo).

Lo comencé, las unidades, como se esperaba, fueron a la línea. Luego saqué el adaptador del zócalo, las unidades se agotaron inmediatamente. Entonces la razón es el adaptador. Después de eso, desenroscó el problema rápidamente. Los botones PgUp y PgDown que uso como reinicio y borran la pantalla. La limpieza de pantalla (CLR) colgaba de una de las piernas de Arduina, en el momento de la limpieza apliqué una allí, después de soltarla restablecí a 0. Y este mismo 0 extinguió toda la línea CLR, pero de hecho también usa el bloque de alimentación de línea. La solución es simple: coloque un diodo entre Arduinka y CLR, ¡y funcionó!

Dado que marcar programas de kilobytes mano a mano sería una tarea tediosa y no siempre precisa, se me ocurrió la idea de conectar una tarjeta SD al mismo Arduinka con el que podría ingresar programas. Funciona así: coloco el archivo llamado dump.hex en la raíz y, cuando presiono la tecla TAB, el controlador lee el contenido del archivo y presiona las teclas correspondientes.

Software


No hay muchos programas escritos para Apple 1, asocio esto con la aparición inminente de una computadora más avanzada: Apple 2. Y, sin embargo, hay varios juegos y programas de sistema para ello.En el 30 aniversario de Apple 1, los entusiastas incluso escribieron una demostración bastante grande (enlace a continuación).

Lancé todo esto y busqué, pero quería escribir algo propio. Decidí escribir un juego de 2048 para él. Me tomó 2 semanas escribir el algoritmo, codificando (antes de eso no podía escribir bajo 6502). El tamaño del programa recibido fue de 1679 bytes. Puede ejecutarlo tanto en el hardware original como en emuladores.

El programa
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




Video de trabajo en youtube.

Que sigue


En primer lugar, el caso, quiero que sea hermoso.

Adaptador para teclado y tarjeta SD. Es necesario deshacerse del montaje en la superficie, planeo desarrollar y ordenar una placa de circuito impreso en China.

Trabaja con varios archivos. Planeo escribir un administrador de archivos para Arduinka, que me permitirá seleccionar un archivo de la tarjeta y ejecutarlo.

También compré un conector para tarjetas de expansión. Quiero soldarle una tarjeta de audio en K580VI53 (solo porque este temporizador está en casa) y dibujar una pequeña demostración con sonido.
Este probablemente será el próximo artículo.

Conclusión


Decir que realmente disfruté compilar, depurar y escribir un programa para Apple 1 no es casi nada que decir.

Muchas gracias al usuario Mdesk, y a todos los chicos de zx-pk.ru por su ayuda para explicar las complejidades de la arquitectura, y por consejos útiles para configurar esta PC.

Bueno, ¡muchas gracias a Steve Wozniak por esta maravillosa computadora personal!

Enlaces utiles


Apple 1 en la wiki
Carga BÁSICA en Altair 8800
Apple 1 y un monitor moderno (tres minutos y medio de dolor y sufrimiento)
30 años Apple 1 (demo)
Emulador en línea de Apple 1
Ensamblador / desensamblador / depurador en línea 6502

Sitios en ruso dedicados a Apple 1:
mdesk.ru
zx-pk.ru

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


All Articles