Spectrum-48 contra un paquete de cigarrillos, papilla de un hacha o lo que puede hacer el video STM32F103C8T6 + (actualización)

Todo comenzó con otro intento de dejar de fumar. Después de haber despertado mi "sapo" interno en busca de apoyo, le digo: "Mira, un paquete de mis cigarrillos cuesta hoy como una computadora retro de bolsillo con una pantalla, es decir, alrededor de $ 10, y alguna vez, por el clon Sinclair-48K, gastamos todo el salario mensual". y pasé más de un mes en montaje y depuración ". Ella: "Ustedes son cabras y mentirosos, ¡demuéstralo!" Tuve que trabajar

Entonces, los materiales de origen:

  1. Píldora azul: STM32F103C8T6 - 20K ram 64K flash $ 2.06
  2. Pantalla Arduino: ILI9341 2.8 "320x240 con pantalla táctil y ranura para tarjeta de $ 7.72
  3. Tweeter $ 0.18
  4. Unos botones (7 piezas) $ 0.2
  5. Algunos cables $ 0.1
  6. Tarjeta flash para 64 mega (de una cámara antigua), no incluida en el cálculo
  7. El programador ST-LINK no se consume y no se incluye en el cálculo, sin embargo, también cuesta un par de dólares.
  8. Un paquete de cigarrillos, consumido demasiado rápido y todos los días, $ 8.37



La maravillosa "píldora azul" hecha en China es buena para todos, excepto por la cantidad de RAM, solo 20K (aunque también hay poca constante, solo 64K). Spectrum-48K necesita 48K (¿coincidencia? No creo) de RAM y 16K de constante. Tomaremos la RAM de la pantalla, porque la resolución del spessi es 256x192 + borde, mientras que ILI9341 tiene 320x240 con 18 bits por punto. Es decir, puede usar el centro de la pantalla para renderizar y todo lo demás para el "área de intercambio" real (¿área de intercambio?). Además, la mayoría de las veces (algoritmo LRU) utilizado por la memoria del emulador de procesador Z80 se almacena en caché en RAM STM32, el resto se almacena en la memoria de pantalla ILI9341, con acceso lento (SPI).

Hace unos 25 años, escribí el emulador Z80 en la plataforma 80286, no son parientes lejanos con el Z80, ambos vinieron de 8080, lo que me permitió obtener un código muy rápido usando el maravilloso Borland TACM y C ++, pero luego no hubo necesidad de una emulación tan detallada ( el código fue escrito para ambos lados: un cuaderno con un diccionario y su emulador en Windows 3.1 para la depuración).

Era demasiado vago para escribir desde cero para el brazo, así que le pregunté a Google: "Dime Google, ¿cómo están las cosas con la emulación Z80 ordenada hoy?" Google me dio un par de miles de proyectos adecuados: basado en STM32F4, autor de Gorien y el emulador de fusibles más avanzado y depurado. En el primer ensamblaje del código de Gorien, se obtuvieron alrededor de 100K de código ejecutable, que está claramente más disponible sobre el tema. Tuve que jugar un poco con meter un elefante en el refrigerador . Por ejemplo, las llamadas a variables locales se compilan en un código más compacto que los globales, todos los comandos extendidos de los registros IX e IY son los mismos, precisos para el reemplazo de variables, la tabla del generador de caracteres se puede reemplazar con un enlace al generador de caracteres Spectrum, etc. También requirió overclocking del procesador a 112 MHz ( gracias a xedas por la idea ).

Resultado: un emulador ZX spectrum-48 de funcionamiento (probé una docena de juegos mientras todos trabajan) con una pantalla del tamaño de un paquete de cigarrillos (ya se está metiendo en el bolsillo, pero los cables sobresalen), leyendo volcados (icono + imagen de memoria + registros ~ 50K) de juegos con formato de tarjeta flash FAT32 (unos pocos kilobytes más de código) y con un consumo total de ~ 50 mA (es decir, ¡aproximadamente 50 horas con una batería 18650 típica para 2500 mAh!), el tiempo de encendido es inferior a un segundo y el costo total de aproximadamente menos de $ 10.

Desventajas

  1. Todavía un poco más lento que el original.
  2. La pantalla muestra el código del programa descargado, en color.
  3. Necesita un joystick o botones más suaves. Y la tarifa. Y una caja. Y brazos rectos. Y ...


En planes aproximados: reducir el consumo (arrancar los LED de la placa), agregar modulación del brillo de la pantalla, modo de reloj con la pantalla apagada, soldar un teclado normal con un joystick, ajustar el retraso para un sonido correcto y leer desde una grabadora de cinta (¿y qué?), Convertidor de formato de archivo de PC volcados, exprima un poco más de código para alojar la interfaz de usuario. Intente reducir el costo de la plataforma con una pantalla de 2.4 pulgadas. Es cierto, bueno, muy pequeño, pero para 5 ... Está claro que aquí el interés es puramente deportivo, aunque si se tiene en cuenta la velocidad de desmantelamiento de cualquier elemento electrónico en partes inutilizables por parte de los nietos, el precio sigue siendo importante.

Código de trabajo actualmente actual en Github

Y más fotos para los fanáticos, el juego tipo R, el área de intercambio alrededor de los bordes de la pantalla principal:



El otro lado:



Juego Atic-Atac:



PD: No alcancé el precio de un paquete de cigarrillos, por lo que mi "sapo" tendrá que soportar mis malos hábitos, pero ya tengo 55 años, así que ya pasé la mayor parte ... Continuaré.
Video, sin sonido, lo siento:

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


All Articles