pico6502 Manual de Usuario
Nota: El proyecto pico6502 esta en fase de desarrollo inicial. El hardware es funcional y la interfaz de bus esta operativa, pero el soporte de drivers es limitado. Este manual refleja el estado actual del proyecto y se actualizara a medida que el desarrollo progrese.
Manual de usuario del pico6502
El pico6502 es un reemplazo directo para una CPU 6502 en cualquier computadora con socket DIP-40. Se conecta directamente en el socket 6502 de su computadora vintage y — sin ninguna modificacion a la placa host — proporciona memoria ampliada, perifericos virtuales y una interfaz de gestion basada en navegador via WiFi.
El pico6502 comparte hardware identico con el picoZ80 — el mismo microcontrolador de doble nucleo RP2350B, 8 MB de PSRAM, 16 MB de Flash, coprocesador ESP32, ranura de tarjeta SD y hub USB. La diferencia clave esta en el firmware de interfaz de bus: el pico6502 apunta al esquema de reloj bifasico PHI1/PHI2 del 6502 y su modelo de perifericos completamente mapeados en memoria. A diferencia del Z80, el 6502 no tiene un espacio de direcciones I/O separado — todos los perifericos (VIA, ACIA, etc.) se acceden a traves del mapa de memoria usando bloques FUNC.
Este manual cubre la placa fisica, la configuracion inicial, la conexion a una maquina host y el uso de la interfaz web. Para detalles de arquitectura, referencia de configuracion e internos del firmware, consulte la Guia tecnica del pico6502. Para la vision general del proyecto, consulte la pagina del proyecto pico6502.
Vista general de la placa
El PCB del pico6502 (revision 2.2) esta disenado para encajar dentro de la huella de un paquete DIP estandar de 40 pines, midiendo 52 mm x 19 mm. Los 40 pines DIP emergen del lado inferior de la placa, coincidiendo exactamente con el pinout de un 6502 real, de modo que se inserta directamente en cualquier socket 6502 sin doblado ni adaptacion.
Conectores e indicadores
| Elemento | Descripcion |
|---|---|
| Conector de depuracion de 6 pines | Ubicado en el borde de la placa. Proporciona acceso SWD (Serial Wire Debug) al RP2350, ademas de lineas SWO y Reset. |
| Puerto USB | Conectividad USB para flasheo de firmware via almacenamiento masivo USB (modo BOOTSEL) y para puente USB-UART hacia el ESP32. |
| Ranura de tarjeta SD | Ranura de tarjeta SD de tamano completo gestionada por el ESP32. Contiene el config.json, imagenes ROM y activos del sistema de archivos. |
Pinout del conector de depuracion
| Pin | Senal | Funcion |
|---|---|---|
| 1 | SWCLK |
Reloj Serial Wire Debug (ARM SWD) |
| 2 | SWDIO |
Datos Serial Wire Debug (ARM SWD) |
| 3 | SWO |
Serial Wire Output — salida de traza opcional del RP2350 |
| 4 | RESET |
Reset activo bajo para el RP2350. Llevar a tierra para reiniciar. |
| 5 | GND |
Referencia de tierra |
| 6 | 3V3 |
Salida de alimentacion 3,3 V (no usar como entrada) |
Primeros pasos
Siga estos pasos en orden la primera vez que configure una placa pico6502:
- Flashear el bootloader del RP2350 via modo almacenamiento masivo USB (BOOTSEL).
- Flashear el firmware del ESP32 via
esptool. - Preparar una tarjeta SD con el
config.jsony las imagenes ROM necesarias. - Instalar el pico6502 en el socket 6502 de su computadora host.
- Encender y esperar a que el pico6502 inicie su punto de acceso WiFi.
- Conectarse a la interfaz web y completar la configuracion inicial.
Paso 1 — Flashear el bootloader del RP2350
El RP2350 no tiene botones fisicos BOOTSEL o Reset en la placa pico6502 — estas senales son accesibles programaticamente o via el conector de depuracion. Para entrar en el bootloader USB en modo almacenamiento masivo:
- No inserte el pico6502 en una computadora host aun — conectelo a un PC solo por cable USB.
- Mantenga la senal BOOTSEL en nivel bajo.
- Aplique alimentacion al puerto USB — el RP2350 comienza a arrancar.
- Suelte BOOTSEL rapidamente despues de que la placa se enumere como dispositivo de almacenamiento masivo USB.
- El PC montara una unidad llamada RPI-RP2 (o similar).
- Copie
Bootloader_<version>.uf2a la unidad montada. El RP2350 se auto-flasheara y reiniciara automaticamente.
Paso 2 — Flashear el firmware del ESP32
El firmware del ESP32 se flashea usando
esptool. El procedimiento es identico al del picoZ80 — consulte el Manual de usuario del picoZ80 — Paso 2 para todos los detalles. El binario del firmware ESP32 es el mismo para ambas placas.
python3 -m venv ./venv/ source ./venv/bin/activate cd $HOME/esptool
PORT=/dev/ttyUSB0 # Linux — ajustar segun sea necesario
BINPATH=/path/to/esp32/build
python3 ./esptool.py \
-p ${PORT} -b 115200 \
--before default_reset --after hard_reset \
--chip esp32s3 \
write_flash \
--flash_mode dio --flash_size 4MB --flash_freq 80m \
0x0 ${BINPATH}/bootloader.bin \
0x8000 ${BINPATH}/partition-table.bin \
0x9000 ${BINPATH}/ota_data_initial.bin \
0x10000 ${BINPATH}/sd_card.bin
Paso 3 — Preparar la tarjeta SD
La tarjeta SD contiene el archivo de configuracion, imagenes ROM y activos de la interfaz web.
Requisitos de formato: Sistema de archivos FAT32. Hasta 32 GB recomendado.
Archivos minimos requeridos:
config.jsonen la raiz de la tarjeta SD.- Directorio
webfs/— activos de la interfaz web ESP32.
| Directorio | Contenido |
|---|---|
ROM/ |
Imagenes ROM referenciadas por el config.json |
DSK/ |
Imagenes de disco para futuros drivers de emulacion |
Paso 4 — Instalacion en la computadora host
Seguridad ante todo: Siempre apague y desconecte la computadora host antes de instalar o retirar el pico6502.
Procedimiento de instalacion:
- Apagar la computadora host y descargar la electricidad estatica.
- Retirar el chip CPU 6502 existente de su socket DIP-40.
- Insertar la tarjeta SD en la ranura del pico6502.
- Alinear el pico6502 con el socket 6502, asegurandose de que el Pin 1 del pico6502 este alineado con el Pin 1 del socket.
- Presionar suave y uniformemente el pico6502 en el socket.
- Encender la computadora host.
NB. El pico6502 se alimenta desde la linea de 5 V en el pin VCC del socket 6502. El convertidor buck integrado entrega 3,3 V a todos los componentes de la placa. Asegurese de que la fuente de 5 V de su computadora host pueda suministrar al menos 500 mA.
Paso 5 — Encendido
Encienda la computadora host. El pico6502 arrancara desde el bootloader del RP2350, cargara el firmware desde la Flash, leera el
config.json desde la tarjeta SD, inicializara el mapa de memoria y comenzara a servir los ciclos de bus del 6502.
Paso 6 — Conexion a la interfaz web
En el primer arranque, conectese al punto de acceso WiFi
pico6502 y navegue hacia http://192.168.4.1. Desde la pagina del gestor WiFi, ingrese las credenciales de su red domestica. Despues de guardar y reiniciar el ESP32, el pico6502 se unira a su red y sera accesible en la direccion IP configurada (por defecto http://192.168.1.192).
Configuracion WiFi
El procedimiento de configuracion WiFi del pico6502 es identico al del picoZ80. El coprocesador ESP32 proporciona conectividad WiFi. En el primer arranque (o cuando no se han guardado credenciales WiFi) el ESP32 inicia en modo Punto de Acceso (AP).
Conexion en modo Punto de Acceso
- Busque una red WiFi llamada pico6502. La contrasena AP predeterminada es pico6502AP.
- Abra un navegador y navegue hacia http://192.168.4.1.
- Navegue al gestor WiFi para ingresar el SSID y contrasena de su red domestica.
- Haga clic en Save & Connect. El ESP32 se reiniciara y se conectara a su red como cliente.
Modo cliente (estacion)
Una vez configurado en modo cliente, el ESP32 se une a su red WiFi domestica y es accesible en la direccion IP mostrada en la pagina del panel de control.
http://192.168.1.192
Interfaz web
La interfaz web del pico6502 es identica a la del picoZ80 — una aplicacion Bootstrap 4 de siete paginas servida por el ESP32. Todas las paginas son accesibles desde la barra de navegacion en la parte superior de cada pagina.
Panel de control (index.htm)
El panel de control es la pagina de inicio de la interfaz web. Muestra informacion del sistema en tiempo real incluyendo version de firmware, particion activa, persona activa, reloj RP2350, reloj PSRAM, estado WiFi, tarjeta SD y tiempo de actividad.
Editor de configuracion (config.htm)
Editor en navegador para el archivo
config.json almacenado en la tarjeta SD con resaltado de sintaxis y validacion JSON basica.
Gestor de archivos (filemanager.htm)
Vista basada en navegador del contenido de la tarjeta SD. Permite navegar directorios, cargar/descargar archivos, crear directorios y eliminar archivos.
Seleccion de persona (personality.htm)
Permite elegir que personalidad de maquina (persona) el pico6502 presenta a la computadora host. Persona 6502 actualmente soportada: BBC Model B (en desarrollo).
Actualizaciones de firmware (OTA)
El firmware del RP2350 y ESP32 puede actualizarse over-the-air (OTA) desde la interfaz web. El procedimiento es identico al del picoZ80 — consulte el Manual de usuario del picoZ80 — Actualizaciones de firmware.
Gestor WiFi (wifimanager.htm)
Configura las opciones de red del ESP32: modo WiFi (AP o cliente), SSID, contrasena, IP/mascara/gateway, DHCP. Los cambios se persisten en NVS y toman efecto al siguiente reinicio.
Configuracion basica
Todo el comportamiento del pico6502 esta controlado por el
config.json en la tarjeta SD. Consulte la Guia tecnica — Referencia de configuracion para una descripcion completa de todas las opciones.
Diferencia clave con el picoZ80: la clave CPU de nivel superior es "6502" (no "z80"), y no hay un array "io" — todos los perifericos se mapean usando bloques FUNC en el array "memory".
{
"esp32": {
"core": { "device": "6502", "mode": 0 },
"wifi": { "override": 1, "wifimode": "client", "ssid": "YourNetwork", "password": "YourPassword", "ip": "192.168.1.192", "netmask": "255.255.255.0", "gateway": "192.168.1.1", "dhcp": 0, "webfs": "webfs", "persist": 0 }
},
"rp2350": {
"core": { "cpufreq": 300000000, "psramfreq": 133000000, "voltage": 1.10 },
"6502": [
{
"memory": [
{ "enable":1, "addr":"0x0000", "size":"0x8000", "type":"RAM", "bank":0, "tcycwait":0, "tcycsync":0, "task":"", "file":"", "fileofs":0 },
{ "enable":1, "addr":"0x8000", "size":"0x1000", "type":"FUNC", "bank":0, "tcycwait":0, "tcycsync":0, "task":"VIA", "file":"", "fileofs":0 },
{ "enable":1, "addr":"0xC000", "size":"0x4000", "type":"ROM", "bank":1, "tcycwait":0, "tcycsync":0, "task":"", "file":"/ROM/basic.rom", "fileofs":0 },
{ "enable":1, "addr":"0xE000", "size":"0x2000", "type":"ROM", "bank":2, "tcycwait":0, "tcycsync":0, "task":"", "file":"/ROM/os.rom", "fileofs":0 }
],
"drivers": []
}
]
}
}
Resolucion de problemas
La computadora host no arranca
- Verificar la orientacion — asegurese de que el Pin 1 del pico6502 este alineado con el Pin 1 del socket.
- Verificar el asentamiento — retire y reinserte, asegurandose de que los 40 pines esten completamente insertados.
- Verificar la tarjeta SD — si el
config.jsonfalta o esta malformado, el firmware intentara usar la configuracion Flash en cache. El vector de reset del 6502 debe estar en una region ROM valida. - Verificar la alimentacion del host — el pico6502 puede consumir hasta 400 mA de la linea de 5 V.
No se puede conectar a la interfaz web
- Verificar modo WiFi — en el primer arranque, el ESP32 inicia en modo AP. Conectese primero a la red WiFi
pico6502. - Verificar la tarjeta SD — los activos web en
webfs/son necesarios. - Reset de fabrica WiFi — re-flashee el firmware ESP32 para borrar la configuracion NVS.
Las imagenes ROM no se cargan / el 6502 se bloquea al reinicio
- Verifique que la ruta del archivo en el
config.jsoncoincida exactamente (las rutas distinguen entre mayusculas y minusculas). - Verificar el vector de reset — el 6502 lee el vector de reset desde las direcciones
0xFFFCy0xFFFD. Ambas deben estar en un bloque ROM o RAM valido.
Sitios de referencia
| Recurso | Enlace |
|---|---|
| Pagina del proyecto pico6502 | /pico6502/ |
| Guia tecnica del pico6502 | /pico6502-technicalguide/ |
| Pagina del proyecto picoZ80 | /picoz80/ |
| Manual de usuario del picoZ80 | /picoz80-usermanual/ |
| Hoja de datos del RP2350 | datasheets.raspberrypi.com |
| Documentacion del Pico SDK | raspberrypi.github.io/pico-sdk-doxygen |
| Referencia tecnica ESP32-S3 | docs.espressif.com |
| Hoja de datos MOS 6502 | westerndesigncenter.com |
Aviso regulatorio inalambrico
Este dispositivo incorpora un modulo inalambrico ESP32-S3-PICO-1 que transmite en la banda ISM de 2,4 GHz, convirtiendolo en un emisor intencional segun las regulaciones de radiofrecuencia a nivel mundial.
Limitaciones importantes
Es responsabilidad exclusiva del constructor asegurarse de que cualquier dispositivo construido a partir de estos disenos cumpla con todas las regulaciones de radiofrecuencia aplicables en su jurisdiccion.
- Los dispositivos ensamblados no deben ser vendidos o distribuidos a terceros a menos que el producto terminado haya obtenido su propia autorizacion de equipo.
- La construccion para uso personal en cantidades limitadas generalmente esta permitida bajo disposiciones para aficionados (ej. FCC § 15.23).
Es responsabilidad exclusiva del constructor asegurarse de que cualquier dispositivo construido a partir de estos disenos cumpla con todas las regulaciones de radiofrecuencia aplicables en su jurisdiccion.