Desde que era pequeño he tenido la ilusión de crear mi propio microordenador, creo que ya ha llegado el momento de hacer ese sueño realidad.
Para empezar os voy a decir cuales son los objetivos:
- Crear un ordenador de 8 bits sencillo (olvidaos de un nuevo Amiga)
- Crear un nuevo sistema operativo con entorno gráfico simple, el BASIC se cargará aparte
- Crear un poco de software para divertirnos
La idea de ordenador es la siguiente:
- Procesador Z80
- 48 KB de RAM (16 KB direcionables para vídeo y variables del sistema, 32 KB de usuario)
- 16 KB de ROM
- Un único modo gráfico de 256x192 pixels monocromo
- Interfaz de lectura y escritura desde audio
- Almacenamiento compact flash
- Interfaz PS/2 para teclado y ratón
- Sonido por beeper (sin intervención del procesador)
Lo se, un poco desfasadillo para lo que muchos esperáis, pero creo que lo suyo es empezar por algo simple y ya veremos si luego hay un segundo proyecto más ambicioso.
Mi objetivo no es crear el microordenador perfecto de 8 bits, es crear un ordenador de 8 bits educativo y agradable de usar, que a ser posible salga muy barato.
Inicialmente quiero usar componentes discretos y si acaso una FPGA pequeñita para una ULA que nos simplifique el asunto.
Así que para comenzar os pido opiniones, sobre todo a los genios del foro (Mc Leod, Jepalza, etc), y que discutamos como planificar el asunto para ponernos manos a la obra.
Proyecto ZDP-80 - Nuestro microordenador desde cero [#01]
- radastan
- Amiga 2500
- Mensajes: 4542
- Registrado: 11 Jun 2007, 19:29
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Sega Genesis/Megadrive
- Primera consola: TV Games/Pong Clone
- Ubicación: Córdoba
- Gracias dadas: 9 veces
- Gracias recibidas: 40 veces
- Contactar:
Proyecto ZDP-80 - Nuestro microordenador desde cero [#01]
Última edición por radastan el 02 Oct 2012, 20:14, editado 2 veces en total.
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝
Re: Proyecto ZDP-80 - Nuestro microordenador desde cero
Es algo, que siempre he deseado. Lo tengo en mente para antes de juvilarme. La idea es bonita, quizás minoritaria, como mucho, podiamos ser 50 interesados, pero bonita.
La mayor pega, es el chip gráfico. Hay que buscar uno cómodo de programar, fácil de encontrar y barato (las tres BBB).
El resto, es muy simple.
Se puede mirar. Lo malo, es que tengo la agenda llena de cosas a terminar (acabar el emulador del Thomson, el del Star rider, el TVGames de Elektor y empezar algún proyecto Hard mas que tengo en mente)
Por cierto, no has "cuadrado" muy bien la RAM de vídeo con el modo a emplear: 256x192 monocromo, son solo 6144 bytes a "gastar" y pides 16k de ram de vídeo, te sobran 10k
La mayor pega, es el chip gráfico. Hay que buscar uno cómodo de programar, fácil de encontrar y barato (las tres BBB).
El resto, es muy simple.
Se puede mirar. Lo malo, es que tengo la agenda llena de cosas a terminar (acabar el emulador del Thomson, el del Star rider, el TVGames de Elektor y empezar algún proyecto Hard mas que tengo en mente)
Por cierto, no has "cuadrado" muy bien la RAM de vídeo con el modo a emplear: 256x192 monocromo, son solo 6144 bytes a "gastar" y pides 16k de ram de vídeo, te sobran 10k

- Hark0
- Amiga 1200
- Mensajes: 1695
- Registrado: 11 Jul 2012, 23:44
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: (Otro)
- Primera consola: (Otro)
- Ubicación: Cornellà de Llobregat - Barcelona
- Contactar:
Re: Proyecto ZDP-80 - Nuestro microordenador desde cero
Vais a provocarme un divorcio tios!!!
Me interesa MUCHO MUCHO MUCHO...
;D
Me interesa MUCHO MUCHO MUCHO...
;D
- radastan
- Amiga 2500
- Mensajes: 4542
- Registrado: 11 Jun 2007, 19:29
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Sega Genesis/Megadrive
- Primera consola: TV Games/Pong Clone
- Ubicación: Córdoba
- Gracias dadas: 9 veces
- Gracias recibidas: 40 veces
- Contactar:
Re: Proyecto ZDP-80 - Nuestro microordenador desde cero
jepalza escribió:La mayor pega, es el chip gráfico. Hay que buscar uno cómodo de programar, fácil de encontrar y barato (las tres BBB).
Por cierto, no has "cuadrado" muy bien la RAM de vídeo con el modo a emplear: 256x192 monocromo, son solo 6144 bytes a "gastar" y pides 16k de ram de vídeo, te sobran 10k
Dos cosas:
- Un modo gráfico de 256x192 monocromo no necesita ningún chip gráfico. Es lo suficientemente sencillo para currárnoslo a pelo (ej. Jupiter ACE).
- He dicho 16K para memoria de vídeo y variables del sistema
Mi idea es que en los 16K de ROM haya rutinas genéricas (incluyendo gráficas) y un pequeño entorno gráfico que sirva para cargar cosas desde cinta o Compct Flash de una forma sencilla. No pretendo hacer un Windows, pero si algo parecido al ICE de QL.
No he entrado en paginación ni nada por el estilo porque quiero algo simple de verdad, que permita conocer los fundamentos de un microordenador de una forma económica y sencilla. Y divertirnos de lo lindo, que carajo.
Si quieres proponer ideas o tienes algo en mente suéltalo Jepalza, si luego quieres colaborar a ratos perdidos con algo lo haces, aquí el único comprometido con el proyecto soy yo.
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝
Re: Proyecto ZDP-80 - Nuestro microordenador desde cero
Yo es que si me meto, me meto. No voy a medias. Voy a lo bestia, como hago yo las cosas. una vez que me pongo, no paro hasta que lo consigo, o al menos, hasta que es visible y medio funcional. Luego, me apago cuando se acerca el final, y siempre queda algo a medio acabar.
- Hark0
- Amiga 1200
- Mensajes: 1695
- Registrado: 11 Jul 2012, 23:44
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: (Otro)
- Primera consola: (Otro)
- Ubicación: Cornellà de Llobregat - Barcelona
- Contactar:
Re: Proyecto ZDP-80 - Nuestro microordenador desde cero
¿Vais a ir contando paso a paso el proceso?
Desce cero, etc???
(Estoy interesado en programar un emulador de CPU etc, como ya he posteado en otro hilo... osea que hacer una máquina física ni os cuento...)

Desce cero, etc???
(Estoy interesado en programar un emulador de CPU etc, como ya he posteado en otro hilo... osea que hacer una máquina física ni os cuento...)

- radastan
- Amiga 2500
- Mensajes: 4542
- Registrado: 11 Jun 2007, 19:29
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Sega Genesis/Megadrive
- Primera consola: TV Games/Pong Clone
- Ubicación: Córdoba
- Gracias dadas: 9 veces
- Gracias recibidas: 40 veces
- Contactar:
Re: Proyecto ZDP-80 - Nuestro microordenador desde cero
A ver os dejo la idea esquemática del sistema:
El mapa de memoria sería, en páginas de 16K:
0 ROM (Sistema operativo)
1 RAM (memoria de vídeo, e/s, y variables del sistema)
2 RAM (memoria de usuario)
3 RAM (memoria de usuario y pila del Z80)
La idea es que la memoria del sistema, e/s, y vídeo sea independiente de la de usuario. Así, si no se accede a dichas cosas, la memoria está libre de "contenciones" y chorradas similares. Es decir, si estamos en la parte de dibujado de pantalla, podemos usar la memoria de usuario sin que se vea mermada la velocidad. No cuesta ningún trabajo y hace más sencilla la vida a la hora de programar.
La "gráfica" sería simplemente un buffer que coje los bytes de la memoria de pantalla bit a bit y los pasa tal cual a pixels del televisor. La memoria podemos hacerla lineal para simplificar el circuito, aunque luego signifique perder rendimiento en gráficos. De todas formas no creo que nadie se anime a hacer un scroll a pantalla completa, y siempre podemos usar lo que sobre de la FPGA para meter alguna ayudita por hard.
-- 02 Oct 2012, 10:35 --
Desde cero, si, primero a ver si llego a un entendimiento con los interesados para definir una arquitectura básica y ya voy comentando los pasos.
El mapa de memoria sería, en páginas de 16K:
0 ROM (Sistema operativo)
1 RAM (memoria de vídeo, e/s, y variables del sistema)
2 RAM (memoria de usuario)
3 RAM (memoria de usuario y pila del Z80)
La idea es que la memoria del sistema, e/s, y vídeo sea independiente de la de usuario. Así, si no se accede a dichas cosas, la memoria está libre de "contenciones" y chorradas similares. Es decir, si estamos en la parte de dibujado de pantalla, podemos usar la memoria de usuario sin que se vea mermada la velocidad. No cuesta ningún trabajo y hace más sencilla la vida a la hora de programar.
La "gráfica" sería simplemente un buffer que coje los bytes de la memoria de pantalla bit a bit y los pasa tal cual a pixels del televisor. La memoria podemos hacerla lineal para simplificar el circuito, aunque luego signifique perder rendimiento en gráficos. De todas formas no creo que nadie se anime a hacer un scroll a pantalla completa, y siempre podemos usar lo que sobre de la FPGA para meter alguna ayudita por hard.
-- 02 Oct 2012, 10:35 --
Hark0 escribió:¿Vais a ir contando paso a paso el proceso?
Desce cero, etc???
Desde cero, si, primero a ver si llego a un entendimiento con los interesados para definir una arquitectura básica y ya voy comentando los pasos.
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝
- Hark0
- Amiga 1200
- Mensajes: 1695
- Registrado: 11 Jul 2012, 23:44
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: (Otro)
- Primera consola: (Otro)
- Ubicación: Cornellà de Llobregat - Barcelona
- Contactar:
Re: Proyecto ZDP-80 - Nuestro microordenador desde cero
radastan escribió:
Desde cero, si, primero a ver si llego a un entendimiento con los interesados para definir una arquitectura básica y ya voy comentando los pasos.
Pues uno que se apunta a esto, pero en plan "mirón" / aprendiz / interesado / etc.... (si prospera el asunto, me apunto a fabricarmelo también).
Me callo ya... y que siga circulando la información...

- antoniovillena
- Amiga 1200
- Mensajes: 2013
- Registrado: 16 Abr 2012, 21:22
- Gracias recibidas: 8 veces
Re: Proyecto ZDP-80 - Nuestro microordenador desde cero
Por ahora se parece mucho a un ZX Spectrum 48K, sólo que con memoria lineal. La memoria lineal no simplifica (ni complica) el circuito. En el ZX Spectrum se usó esa ordenación tan específica para minimizar el tiempo en las lecturas de las memorias dinámicas y por tanto dar mas tiempo a la CPU con una contención menos agresiva. Pero con memorias estáticas no existe ninguna ventaja, y el no usar un mapa lineal sería complicar las cosas innecesariamente.
De todas formas 16K es demasiado para memoria de video+variables, ya que tendrías 10K sólo para variables. Una alternativa sería usar 8K con 2 espejos. Por ejemplo los accesos desde $4000-$5FFF que no tengan contención, aunque se vea nieve por pantalla y los accesos desde $6000-$7FFF que sí tengan contención. Es algo parecido a lo que se hacía en el Jupiter Ace.
De todas formas 16K es demasiado para memoria de video+variables, ya que tendrías 10K sólo para variables. Una alternativa sería usar 8K con 2 espejos. Por ejemplo los accesos desde $4000-$5FFF que no tengan contención, aunque se vea nieve por pantalla y los accesos desde $6000-$7FFF que sí tengan contención. Es algo parecido a lo que se hacía en el Jupiter Ace.
- radastan
- Amiga 2500
- Mensajes: 4542
- Registrado: 11 Jun 2007, 19:29
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Sega Genesis/Megadrive
- Primera consola: TV Games/Pong Clone
- Ubicación: Córdoba
- Gracias dadas: 9 veces
- Gracias recibidas: 40 veces
- Contactar:
Re: Proyecto ZDP-80 - Nuestro microordenador desde cero
antoniovillena escribió:Por ahora se parece mucho a un ZX Spectrum 48K, sólo que con memoria lineal. La memoria lineal no simplifica (ni complica) el circuito. En el ZX Spectrum se usó esa ordenación tan específica para minimizar el tiempo en las lecturas de las memorias dinámicas y por tanto dar mas tiempo a la CPU con una contención menos agresiva. Pero con memorias estáticas no existe ninguna ventaja, y el no usar un mapa lineal sería complicar las cosas innecesariamente.
De todas formas 16K es demasiado para memoria de video+variables, ya que tendrías 10K sólo para variables. Una alternativa sería usar 8K con 2 espejos. Por ejemplo los accesos desde $4000-$5FFF que no tengan contención, aunque se vea nieve por pantalla y los accesos desde $6000-$7FFF que sí tengan contención. Es algo parecido a lo que se hacía en el Jupiter Ace.
Efectivamente, se parece mucho a un ZX Spectrum pero no es igual, es mucho más simple.
Lo de reservar 16K para vídeo, variables, y e/s tiene sus motivos. Date cuenta que en esa memoria iría también la lectura de la compact flash con la FAT, lo cual implica meter una tabla en memoria. Además, si sobra memoria no hay nada malo en ello, lo mismo la necesitamos para una memoria de vídeo shadow o vaya usted a saber. 32K de memoria para usuario nos deja libertad para hacer muchas cosas, esto no está destinado a ser una videoconsola aunque se puedan hacer juegos.
Meter dos pantallas en espejo, una contenida y otra no me parece complicar el asunto.
De todas formas estoy abierto a sugerencias y se puede modificar algo si vemos que tiene utilidad y no complica el circuito. Dime que utilidad puede tener usar una memoria de vídeo no contenida con nieve.
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝
Volver a “Otros microordenadores”
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados