# Mini PC desarrollada en lógica discreta



## Gudino Roberto duberlin (Dic 31, 2018)

Hola gente! Cómo para terminar el año, quería compartirles un proyecto que lleva años entre avances y abandonos.
Aquí les dejo los links que explican hardware, funcionamiento, ejemplos de software y un pequeño juego de PONG, recientemente dándole forma.
Muchas gracias, Feliz Año Nuevo!


----------



## DOSMETROS (Dic 31, 2018)

¡ Feliz Año Nuevo pata vos también !


----------



## TRILO-BYTE (Dic 31, 2018)

Yo había visto ese proyecto hace años ¿apoco tú lo desarrollaste?

Me parece increíble hacer eso en lógica combinatoria, de por si es difícil hacerlo en un microcontrolador.
Felicidades


----------



## Gudino Roberto duberlin (Dic 31, 2018)

TRILO-BYTE dijo:


> Yo había visto ese proyecto hace años ¿apoco tú lo desarrollaste?
> 
> Me parece increíble hacer eso en lógica combinatoria, de por si es difícil hacerlo en un microcontrolador.
> Felicidades


Todo comenzó allá por el 2006, hubo más complicaciones que alegrías. Pero valió la pena no haberle prendido fuego jeje.
Éste proyecto utiliza aproximadamente  212 CIs.(incluidos todos los periféricos)

Hablando de microcontroladores, tengo la idea de armar algo en 32bits usando muchos uC y varias FPGA, ya que hacerlo con lógica discreta sería una locura. 

Cómo mejora al diseño, sería que corra un bios, añadir un kernel por hardware,  la posibilidad de tener interrupciones, agregar un procesador exclusivo para la ALU, ya que en ésta, lo hace a través de software haciendo un llamado a una rutina en una pequeña región de memoria y por último que pueda manejar una salida VGA.
Muchas gracias compañero!!!


----------



## TRILO-BYTE (Dic 31, 2018)

Fascinante.
¿Como diseñaste el cpu o te pasaste en un cpu comercial.?

Tengo muchas dudas una vez intenté hacer una computadora con un z80 iba bastante bien hasta que mi laptop se le daño el disco duro y mi grabador de memoria y mis programas se perdieron para siempre.

Muchas felicidades.
Que gran proyecto


----------



## Gudino Roberto duberlin (Dic 31, 2018)

Honestamente! No sé cómo trabaja un CPU comercial.
Te cuento cómo surgió todo.
Una vez intentaba hacer un secuenciador de luces. Cargaba una animación en una RAM. Y luego se ejecutaba cíclicamente con la ayuda de un contador. Parece complicado, pero era simple.
Pero buscaba la forma de poder modificar la secuencia, según el tipo de ritmo de música. Ya que usaba un micrófono electret cómo sincro.
Entonces empecé a usar contadores preseteables, y ahí surgió la idea de que si ejecutaba un programa cualquiera, podría realizar un salto debido a algún evento.
Éste CPU, utiliza contadores preseteables que direccionan la memoria de programa. Creo que cómo lo haría cualquier procesador. Y un comparador de bits se encarga de realizar los saltos enviando un pulso de LOAD a los contadores. Cómo el sistema es de 8bits y el bus es de 15bits tengo que realizar en dos pasos la carga de dirección en un salto de programa. Lo mismo ocurre para direccionar la RAM. Utiliza 11 bits de dirección para manejar los 2KB en una 6116. Y prácticamente se necesitan dos pasos para hacer las acciones, haciendo lento y tedioso el software.
Gracias nuevamente por el elogio.


TRILO-BYTE dijo:


> una vez intenté hacer una computadora con un z80 iba bastante bien hasta que mi laptop se le daño el disco duro y mi grabador de memoria y mis programas se perdieron para siempre.


Puedes retomar porque no? Estaría bueno hacer aportes entre todos los interesados, para armar algo experimental.


----------



## TRILO-BYTE (Dic 31, 2018)

Fíjate que ando en eso , acabo de construir una matriz de LEDS gigante para las luces navideñas y de año nuevo.
Por andar buscando piezas y herramientas me di cuenta que tengo muchos buffers con latch sin latch contadores, memorias hy6264 Uv eproms y varios z80 y como 6 protoboards.
Hace como 4 o 5 años Vi el vídeo de esa cpu pero no pensé que un día intercambiaria diálogo con el autor .

Hace años igual pensé en un sistema lógico basado en memorias y contadores para guardar audio y reproducirlo con un DAC pero lo recicle y se perdió.


Repito no lo continue y se perdió mucho del software y varios periféricos los términe reciclando.

A ver si lo continuamos en la comunidad solo por hobby.


----------



## Gudino Roberto duberlin (Dic 31, 2018)

Está excelente el tema audio con DAC.
Yo armé un ADC a 8bits para guardar el audio en RAM basado en las 61256 recicladas de varias mothers, para luego migrar a baja velocidad a una 27C010.
Lograba un minuto y medio aproximadamente de reproducción de audio.
Pensaba en comprimir el audio, algo similar a lo que hace el MP3. La idea original es tomar dos muestras y almacenar la diferencia entre ellas, así se ganaría mucho espacio.


----------



## Dr. Zoidberg (Ene 1, 2019)

Gudino Roberto duberlin dijo:


> La idea original es tomar dos muestras y almacenar la diferencia entre ellas, así se ganaría mucho espacio.


Eso es compresion sin perdidas, similar a lo que hace el algoritmo del compresor FLAC.
Buscá los fuentes, que son open source, y podras reutilizarlo a tu antojo.


----------



## Gudino Roberto duberlin (Ene 15, 2019)

Hola gente, aquí agrego primeras imágenes en formato de bloques sobre la arquitectura de la mini PC.


----------



## TRILO-BYTE (Ene 15, 2019)

Tengo una duda construiste el cpu basándote en los esquemas de un cpu teórico como en los libros de lógica digital y el micro código creaste los nemonicos propios?
Tantas dudas suena fascinante el proyecto. e


----------



## Gudino Roberto duberlin (Ene 15, 2019)

TRILO-BYTE dijo:


> Tengo una duda construiste el cpu basándote en los esquemas de un cpu teórico como en los libros de lógica digital y el micro código creaste los nemonicos propios?
> Tantas dudas suena fascinante el proyecto. e


Hola compañero, que tal? no me base en ninguna arquitectura.
El desarrollo teórico lo empecé allá por el año 1998. Y todo quedó ahí varios años, hasta que empecé la construcción en el 2004-2005 aprox. En el 2007, armé el 70% e hice las primeras pruebas. Consistía en contar una variable en un bucle y mostrar dicha cuenta en uno de los puertos. Luego volvió a quedar abandonado todo, y retomé al año siguiente.
A partir de ahí comencé con el desarrollo de la placa de vídeo. Teniendo algo dónde poder "ver", comencé a desarrollar el compilador.
Básicamente, es un programa que me permite, escribir en código alfanumérico, sin necesidad de escribír todo en 0s y 1s. Además tiene un pequeño procesador de texto. Ya que por ejem. No me permite ingresar un número mayor a 255. O ingresar un  microcódigo inexistente. Cómo lo muestra uno de los vídeos, que compartí.
Los micro códigos, los cree en función de la necesidad y el hardware que iba tomando forma. Y a medida que añadía hardware, necesitaba añadir más microcódigos, para poder controlar el nuevo hardware.

Respecto a la organización del programa de firmware. Posee dos memorias 27C256 trabajando en paralelo. A partir de la dirección 0/42 que es la forma en que la designé. La primer parte(cero), corresponde a los primeros 8bits de menor peso LSB.
La 2da. Parte al MSB, respectivamente, es decir el número 42.
Retomando, a partir de ésta dirección. Se escribieron todas las funciones que son llamadas por el programa que se está corriendo (que comienza desde la dirección 0/0 en adelante.)
Contiene funciones cómo CLS(Borrado completo de pantalla) ésto debe hacerse cada vez que se enciende el sistema, pues porque la RAM de vídeo tiene obviamente datos aleatorios, que de lo contrario mostraría un cielo estrellado jeje.
También contiene una función que gestiona la tarjeta de sonidos monofónico.
Debo escribir en dos registros específicos la duración y fcia. de la nota, antes de hacer el llamado a ésta función.
Luego otra función, que me convierte, un número binario de 16 bits en BCD de cinco dígitos.
Luego con otra función a la cuál hago el llamado me permite mostrar en pantalla ese número.
En dónde hago éste uso de función es en el inicio del sistema cuándo chequea la RAM.
Y por último, una función que me permite escribir texto en pantalla.
Consiste en escribir en hasta ocho registros consecutivos, valores numéricos que representan caracteres alfanuméricos, que va desde el cero hasta la Zeta, pasando por caracteres especiales cómo, punto, coma, barra, etc.
Obtenido todo ésto, ya me permite escribir el programa principal. Sólo debo hacer el llamado a la función necesaria cada vez que la necesite, y listo.
En la medida que pueda, subo fotos del resto del sistema. Y gracias por el interés!


----------



## TRILO-BYTE (Ene 16, 2019)

Uff creo que está muy lejos de mi entendimiento, y por esos años 98 estaba en la primaria, trataré de intentar algo así


----------



## Gudino Roberto duberlin (Ene 16, 2019)

TRILO-BYTE dijo:


> Uff creo que está muy lejos de mi entendimiento, y por esos años 98 estaba en la primaria, trataré de intentar algo así


Excelente! Tienes al menos mi apoyo en ese emprendimiento.


----------



## Gudino Roberto duberlin (Nov 26, 2019)

Hola gente, quería compartirles un proyecto sobre el desarrollo de un procesador de 32 bits realizado en lógica TTL.


----------



## TRILO-BYTE (Nov 26, 2019)

Admirable, lo que me causa curiosidad.
¿Cuál es la necesidad de hacer un pcb a mano alzada?


----------



## lynspyre (Nov 26, 2019)

Genial ver a un latino metiendose en aguas turbulentas. Yo sigo en YouTube a *Ben Eater*, hizo un PC 8-bit basandose en el Intel 6502. Tambien desarrolló una GPU, y todo lo armó en protoboards.


Oculto: GPU Protoboard - Parte 1













Oculto: GPU Protoboard - Parte 2










8-bit Protoboard Computer


----------



## Gudino Roberto duberlin (Nov 26, 2019)

TRILO-BYTE dijo:


> Admirable, lo que me causa curiosidad.
> ¿Cuál es la necesidad de hacer un pcb a mano alzada?


Esa es una buena pregunta!
Me resulta complicado hacer un PCB en doble faz por software y lograr que coincidan todos los holes.
Además de que hacer la transferencia por plancha, muchas veces las pistas delgadas se discontinuan o quedan restos entre ellas cuándo la distancia es menor a .5mm.


----------



## Fogonazo (Nov 26, 2019)

*¡ Admirable tu paciencia ! *

Ese método de trazado es similar al que empleaba yo, cuando hacía cosas, 
Cargaba una lapicera Rotring del trazo necesario al momento con pintura sintética muy diluida, y a trabajar


----------



## TRILO-BYTE (Nov 26, 2019)

Bárbaros, me faltan pantalones para hacer una artesanía de esas


----------



## Gudino Roberto duberlin (Nov 26, 2019)

Éste trabajo me lleva hasta el momento unos 4 meses, trabajando unas 4 hs diarias.
Es mi cable a tierra! hasta que pierda el pulso y la vista.

Buen día gente! Les comparto una primicia!


----------



## DOSMETROS (Nov 27, 2019)

Una locura


----------



## Dr. Zoidberg (Nov 27, 2019)

Gudino Roberto duberlin dijo:


> Buen día gente! Les comparto una primicia!


----------



## Gudino Roberto duberlin (Jul 26, 2020)

Buenas a la comunidad!
Les comparto adelantos y pruebas en el desarrollo  del procesador de 32bits.


----------



## cosmefulanito04 (Jul 29, 2020)

Fijate si esto te puede resultar útil:






Muy bueno el proyecto.


----------



## Gudino Roberto duberlin (Jul 29, 2020)

cosmefulanito04 dijo:


> Fijate si esto te puede resultar útil:
> 
> 
> 
> ...


Gracias Amigo! Casualmente el próximo desafío que tengo, es justamente desarrollar la tarjeta de vídeo!
Aquí les comparto, la controladora de teclado PS2.


----------



## Gudino Roberto duberlin (Sep 30, 2020)

Buenas a la comunidad, les comparto avances hasta el momento.
Se trata de controlar una fuente ATX a través del sistema.


----------



## avefenix586 (Oct 9, 2020)

"Estamos todos locos?" (Francella) 
Nooo, es la electronica digital que nos pone a todos euforicos, incluso mucho mas que el futbol (al menos a mi) .
Gudino su supercomputadora de 32 bits con sus placas conectadas en diferentes direcciones va tomando una forma que me recuerda a no se si a visto esa serie star trek  donde unos alienigenas borg son ciberneticos y tienen su nave en forma de cubo,
Alguna vez me imagine que los microprocesadores y sus partes pudieran llegar a ser como cubos  con terminales superficiales por todos sus lados donde solo juntar entre si con otros cubos de diferentes funciones establecerian conexion inmediata y ya se completaria una computadora apilable , es una vision futurista que pueda venir dentro de 200 años o mas  , esta interesante los avanzes de su computadora de 32 bits, tambien me da la curiosidad de preguntarle a que velocidad en Mhz efectivos esta corriendo todo el sistema y si ya maneja datos de 32 bits de golpe , y si piensa incorporarle mas adelante algun lenguaje de programacion?


----------



## Gudino Roberto duberlin (Oct 10, 2020)

Hola compañero ante  todo, muchas gracias!
El sistema maneja 32bits en paralelo, por ahora está corriendo a 4Mhz(para fines prácticos sería más que suficiente), la limitación viene dada por la memoria 28C256 que es la que aloja el programa.
Pero una vez terminado todo el sistema, se migraria a una 27C256 que es casi 3 veces más rápida en acceso a los datos. No puedo asegurar que pueda correr a 12Mhz ya que el sig. cuello de botella pueda ser otra área.
Aún falta añadir la memoria de sistema, y la idea sería aprovechar las antiguas memorias EDO RAM de 8Mb o 16Mb.
Respecto al tema lenguaje de programación, voy a integrar un sistema de BIOS propio, que maneja todo el sistema, desde atender el teclado, hasta actualizar la memoria de video.
Y el sig. paso sería, implementar un compilador.


----------



## avefenix586 (Oct 14, 2020)

En uno de sus videos me parecio escuchar la mencion de un cristal de 44 mhz  pero ahora nos aclara que era 4 mhz (parece que escuche mal ) . si le sube la velocidad a mas como 12 Mhz, podria adicionarle  algun mecanismo para estados de espera para los perifericos lentos, He visto en tarjetas antiguas que usaban unas memorias cache de 8k a 32k en formato delgado dip delgado me parece que eran de 20 nseg  (marca ISS) emparejado con procesadores de 40 mhz de entonces, con esas memorias ram ya correrian parejos lo programas a buena velocidad.


----------



## Gudino Roberto duberlin (Oct 15, 2020)

Hola!, las memorias caché que mencionas, las vengo persiguiendo porque son oro en polvo.
He reclicado de más de 20 mothers.
La versión más popular es la 61C256 en varios formatos.
Hasta de 12nS he conseguido.
En el caso de la tarjeta de vídeo, necesito usar caché. Ya que la velocidad de barrido es muy superior(25Mhz/pixel), a la de volcado de datos a representar.
En el resto de los periféricos no uso caché.
Sólo existe una bandera en cada uno, que cambia de estado, y así saber que hay que leer el registro correspondiente para tomar el dato.


----------



## Gudino Roberto duberlin (Ene 3, 2021)

Buenas gente! Feliz Año, y el deseo que la salud y el trabajo no falten.
Bueno, quiero compartirles un paso más sobre éste proyecto.
Realmente me ha costado mucho trabajo y tiempo. Se trata del diseño de la tarjeta VGA, para poder implementar al procesador de 32 bits.
Sin prolongar el aburrimiento, les dejo el link.






Muchas gracias!


----------



## Gudino Roberto duberlin (Ene 26, 2021)

Qué tal comunidad!
Les comparto otro avance del trabajo que llevo realizando.
Muchas gracias!


----------



## avefenix586 (Ene 28, 2021)

Gudino estoy sorprendido con sus avanzes de su PC de 32 bits, Gudino de haber nacido hace 70 años de seguro habria participado en la revolucion de las computadoras domesticas, creando su computadora personal en un garage como el Steve jobs y el Steve Bosnia lanzando su propia compañia para hacerles la competencia, que nombre le hubiera puesto a su compañia??  hubiera usado de simbolo alguna fruta? jeje


----------



## Gudino Roberto duberlin (Ene 29, 2021)

Gracias Amigo por el elogio. Y para seguir dándole forma a ésto.
Me quedaría añadir, alguna unidad de almacenamiento, quizás alguna especie de cartucho algo similar a un Pendrive.
Utilizando alguna memoria serial, tipo 25LC512.
Fruta o verdura, ya veremos que logo ponerle, se aceptan sugerencias, jeje!!


----------



## TRILO-BYTE (Ene 29, 2021)

Sería interesante vender el kit para quienes les gusta la retro computación.
Hay grupos en Facebook donde venden kits bien feos de amplificadores hechos de los diagramas de construya su vídeo rockola o de ratmayor.
Y tienen el descaro de decir que es cosecha suya.


----------



## Gudino Roberto duberlin (Ene 29, 2021)

Sinceramente nunca se me cruzó algún fin lucrativo en ésto, ya que todo está hecho, con un desempeño increíble y costos por el suelo en comparación.
Pero podría ser didáctico algo diseñado en arquitectura de 4bits., con planos detallados y demás para simular por ejem. Un microcontrolador con lógica discreta.


----------



## avefenix586 (Ene 29, 2021)

Creo que la fruta o verdura de usarla para simbolo seria una oriunda de su region jeje con tantas tarjetas conectadas entre si me imagine una alcachofa llena de hojas a manera de tarjetas montadas jeje, aproposito de programacion y rutinas, que lenguaje esta utilizando? su propio ensamblador nativo o ya paso a uno de alto nivel como el C o el Basic o uno propio?


----------



## Gudino Roberto duberlin (Ene 29, 2021)

Perfecto! La alcachofa, también conocida cómo alcaucil, ha sido seleccionada!👏👏
Por el momento tengo que escribir el programa en código máquina propio del sistema.
De ahí hay que crear un compilador con un nivel superior, pensaba con estructura de C.
Aquí comparto el ISA del sistema.

Añado el otro archivo cómo texto, porque la plataforma no permite compartir el archivo .DOCX
#############################
0 SIN USO SLOT TRASERO
1 SIN USO SLOT TRASERO
2 SIN USO SLOT TRASERO
3 REG KBD
4 REG UART
5  SIN USO SLOT FRONTAL
6  SIN USO SLOT FRONTAL
7 REG CACHE RAM
8 REG SHIFT LEFT
9 REG OPERATOR AND
10 REG SHIFT RIGHT
11 REG OPERATOR XOR
12 REG OPERATOR OR
13 REG ADDER
14 REG BIT STATE
15 REG SYSTEM
---------------------------------------------------------
REG 14

INPUT:
Bit 0:  A>B
Bit 1: A=B
Bit 2: A<B
Bit 3: CARRY IN ADD
Bit 4: ENABLE TMR=0
Bit 5: SEL SPK=0, TMR=1
Bit 6: -
Bit 7: -
Bit 8: -
Bit 9: -
Bit 10: -
Bit 11:  TURN-ON=1
Bit 12: BLINK TXT ON=1
Bit 13:
Bit 14:
Bit 15: RETURN=1
---------------------------------------------------------

OUTPUT:
Bit 0:  A>B
Bit 1: A=B
Bit 2: A<B
Bit 3: CARRY OUT  ADD
Bit 4: OVERFLOW TMR=1
Bit 5: Tx UART=1
Bit 6:  Rx UART=1
Bit 7:  Rx KBD=1
Bit 8:  TX KBD=1
Bit 9:  SLOT TRASERO
Bit 10: SLOT TRASERO
Bit 11:  TURN-OFF=0 (BOTON PRESIONADO)
Bit 12 y 13: RETURN STATE VGA
                   0= MODE GRAPH
                   1= REC BUFFER
                   2= MODE TEXT
                   3= MODE LOAD TEXT
Bit 14: -
Bit 15: -


----------



## TRILO-BYTE (Ene 29, 2021)

Yo sí lo compraría.
Y hacer un compilador no es tan complicado.
Si sabes usar archivos de texto en C.
Ya estás casi del otro lado.
Luego sigue lo que es apilar en una lista enlazada ya sabes apuntadores y apilas los símbolos ( ) + - ,>= etc.
Haces obviamente tokens en las cadenas de texto para desmenuzar el código.
Apilas variables los símbolos. 
Y con análisis léxico y sintáctico armas el código en código máquina.

Eso lo hice hace años para un pic16f84 cuando en internet no era fácil encontrar cosas.


----------



## Dr. Zoidberg (Ene 29, 2021)

TRILO-BYTE dijo:


> Eso lo hice hace años para un pic16f84 cuando en internet no era fácil encontrar cosas.


Pero ahora tenes el gcc como una base de primer nivel para recortar luego por donde quieras...


----------



## Gudino Roberto duberlin (Ene 29, 2021)

TRILO-BYTE dijo:


> Haces obviamente tokens en las cadenas de texto para desmenuzar el código.
> Apilas variables los símbolos.
> Y con análisis léxico y sintáctico armas el código en código máquina.


Veo que conoces a fondo esa parte.
Había pensado en algo similar, es decir usar un procesador de texto, y que analice cadenas.
Y lo más importante, saber reconocer, cuándo se abre una llave y a cuál complementa cuándo se cierra. Y si hay funciones anidadas, saber identificarlas.


----------



## TRILO-BYTE (Ene 29, 2021)

Si hoy volskwagen decidiera volver a fabricar el escarabajo, no dudes que habría uno que otro lunático en comprar ese coche tan definitivamente comparado con los de hoy.
Si decidieras vender tu kit yo sería un loco en comprarlo.


----------



## Gudino Roberto duberlin (Ene 29, 2021)

TRILO-BYTE dijo:


> Si hoy volskwagen decidiera volver a fabricar el escarabajo, no dudes que habría uno que otro lunático en comprar ese coche tan definitivamente comparado con los de hoy.
> Si decidieras vender tu kit yo sería un loco en comprarlo.


Creo que voy tomando muy en serio tu idea, jeje. 
Hay un kit llamado sino me equivoco Gigatron.


----------



## TRILO-BYTE (Ene 29, 2021)

Gudino Roberto duberlin dijo:


> Veo que conoces a fondo esa parte.
> Había pensado en algo similar, es decir usar un procesador de texto, y que analice cadenas.
> Y lo más importante, saber reconocer, cuándo se abre una llave y a cuál complementa cuándo se cierra. Y si hay


Es que no es difícil 
Digamos nuestro hipotético compilador vemos.

If ( a >> b )

Hacemos token 
If 
(
a 
>>
b 
)
Dónde todo el token encontramos un (
Que se abre lo apilamos y hacemos una sentencia que recuerde que hay un ( abierto.
Si encontramos cualquier cosa fuera de la sintaxis marcamos un error.
Pero dentro del (
Si encontramos una formula a + b eso ya sabemos hacerlo en código maquina.
Esperamos encontrar el )
Para afirmar que se escribió correctamente el código.
Y así para todo.
Es tedioso pero si se puede

Lo más fácil de implementar es sumas restas, igualdad. Puerto de 8 bits etc.

	Mensaje automáticamente combinado: Ene 29, 2021



Gudino Roberto duberlin dijo:


> Creo que voy tomando muy en serio tu idea, jeje.
> Hay un kit llamado sino me equivoco Gigatron.


Si lo he visto me gustaría tenerlo pero sería mejor uno hecho en el foro


----------



## Gudino Roberto duberlin (Ene 29, 2021)

Dr. Zoidberg dijo:


> Pero ahora tenes el gcc como una base de primer nivel para recortar luego por donde quieras...


Al parecer parece una buena alternativa.
Una persona que ha visto éste proyecto se ofreció a hacer el compilador, sólo me dijo "pasame el set de instrucciones y algo vamos a armar"
Es increíble que personas aún hoy en día se motivan a ésta área.

	Mensaje automáticamente combinado: Ene 29, 2021



TRILO-BYTE dijo:


> Es que no es difícil
> Digamos nuestro hipotético compilador vemos.
> 
> If ( a >> b )
> ...


Dada tu reiteración te ganaste una posición. 
Lo que voy a hacer es subir un esquema de la arquitectura en 4bits, con funciones matemáticas básicas. Y con la posibilidad de manejar un puerto, ya sea de 4 u 8 bits.
Básicamente se trata de la arquitectura que armé para el sistema de 8 y 32bits.

	Mensaje automáticamente combinado: Ene 29, 2021



TRILO-BYTE dijo:


> Dónde todo el token encontramos un (
> Que se abre lo apilamos y hacemos una sentencia que recuerde que hay un ( abierto.
> Si encontramos cualquier cosa fuera de la sintaxis marcamos un error.


Exactamente! e incluso añadir la posibilidad de múltiples operadores en la misma sentencia.

Una vez comentaste que habías armado un sistema a base del procesador Zilog,  una pena que hayas perdido ese trabajo, pero si puedes retomarlo, sería un gusto verlo funcionar.


----------



## avefenix586 (Ene 29, 2021)

Vaya Gudino al ver las lineas de su lenguaje assembler ya me perdi pues no se parece mucho al assembler que acostumbramos como de los microprocesadores clasicos como 6502, 8085 o del z80 jeje,  esta parte de como crear un lenguaje compilador se pone interesante tambien para mi proyecto que tenia en mente tomar la sintaxis del lenguaje del arduino IDE y con alguna aplicacion convertirlo a lenguaje maquina para el z80  jeje


----------



## TRILO-BYTE (Ene 30, 2021)

Pues hay compiladores básic para z80.
No le veo caso hacer uno C.
Pero para una máquina sacada de la nada me parece interesante hacer uno a medida


----------



## Scooter (Ene 30, 2021)

Puedes usar SDCC si quieres que compila para varios procesadores. El autor es muy accesible y si quieres modificar cosas te contestará rápidamente.





						SDCC - Small Device C Compiler
					






					sdcc.sourceforge.net
				




Respecto a lo de comercializarlo no sería para ganar dinero sino para compartir conocimientos mas bien.
No sería el primer PC de ese estilo que ha salido en los últimos años.


----------



## Dr. Zoidberg (Ene 30, 2021)

El problema con hacer un compilador para ese target es que primero necesitás un sistema operativo donde ejecutarlo, lo cual es toda una historia adicional para ese hardware, a menos que uses un cross-compiler....y esos ya están disponibles hace mucho tiempo y me parece que no tiene sentido gastarse en hacer uno nuevo (aunque si es por diversión, todo vale).
Por supuesto que si el hardware es compatible con una PC entonces podés usar algo como el FreeDOS....pero también ya trae todo resuelto  🤷‍♂️  🤷‍♂️


----------



## Gudino Roberto duberlin (Ene 30, 2021)

Así Dr., pero se puede hacer lo sig.
Escribir el código en .txt, luego con un procesador de texto creado para tal fin, compilar la sintaxis y generar un archivo .HEX compatible al hardware dónde correrá.

	Mensaje automáticamente combinado: Ene 30, 2021

Explicando un poco la mecánica del programa del sistema PDC32 sería así:
Supongamos que queremos sumar 2 números y enviarlos al puerto paralelo.
La sintaxis sería:
A12 0xF //Indica que los datos son asignados por el programa que está corriendo.
A1 0x00 // Reservamos el registro de Carry IN del sumador de la ALU.
A9 0x01 // Cargamos en el registro A el valor 1.
A14 0x02 // Cargamos en el registro B el valor 2.
A12 13// Vuelca el resultado del sumador en el BUS.
B7 - // El dato se transfirió del BUS al registro del puerto paralelo.
A12 0xF
A5 0x00 // El programa vuelve a la línea 0 y se repite el bucle.

	Mensaje automáticamente combinado: Ene 30, 2021

Cómo se puede ver una instrucción se forma siempre por una letra seguida de un número.
El byte de instrucción tiene un formato así:
DCBAXXXX, entonces por ejem si deseamos elegir la instrucción A12, entonces la posición que ocupa la letra A se coloca en 0, el resto permanece en 1 siempre!
Luego los 4bits de menor peso forman el número.
Quedaría así:
A12 es igual a 11101111.
Internamente los bits A, B, C y D, están conectados a multiplexores tipo 74LS138.
Y los datos a las líneas de dirección. A partir de ahí las salidas de cada multiplexor, ataca el CK o bien  el Enable del registro al que está conectado.


----------



## avefenix586 (Ene 30, 2021)

Ya algo de luz se asoma con su explicacion de la codificacion pero aun asi algunas dudas asomarme como por ejemplo el acceso al bus de datos del sistema  , si la CPU es de 32 bits este accede directamente a la memoria externa RAM y ROM  a un bus de datos del ancho de 32 bits (4 bytes) o el acceso al bus de datos es como el 8088 que internamente maneja un bus de 16 bits pero al exterior el bus es de 8 bits y requiere completar la instruccion de 16 bits en dos ciclos maquina?



Gudino Roberto duberlin dijo:


> El byte de instrucción tiene un formato así:
> DCBAXXXX, entonces por ejem si deseamos elegir la instrucción A12, entonces la posición que ocupa la letra A se coloca en 0, el resto permanece en 1 siempre!
> Luego los 4bits de menor peso forman el número.
> Quedaría así:
> A12 es igual a 11101111.


la instruccion A12  seria una  A  de seleccion acompa;ado del 12 en decimal o hexadecimal?  pero al transcribirlo al formato binario de la instruccion deberia quedar en alguna de estas formas?binario como 

11101111 00010010  ( con 12 en hex)

11101111 00001100  (con 12 en decimal)

o todo en un solo byte compacto?

11101100  



Gudino Roberto duberlin dijo:


> A12 13// Vuelca el resultado del sumador en el BUS.


como seria esta instruccion desmenuzada en binario?

Gudino creo que tendra que publicarnos su tabla de OP jeje

esa es una parte que no me quedaba del todo claro con los procesadores de buses de instrucciones y datos anchos , por ejemplo si en el juego de instrucciones de un determinado microprocesador de 32 bits tuviera instrucciones implicitas de solo un byte de ancho  quiere decir que este capturaria de un solo golpe 4 instrucciones de la memoria que tendria que ejecutar en secuencia una tras otra mientras otra etapa sigue capturando en su memoria cache mas instrucciones pero llegando a que justo entre las proximos 4 bytes el ultimo codigo fuera parte de una instruccion de 16 bits tendria que esperar a la proxima captura de los 4 bytes siguientes para completar con este primer byte su instruccion de 16 bits pendiente y recien poder ejecutar esa, ya me maree jeje


----------



## Gudino Roberto duberlin (Ene 30, 2021)

Bueno, ampliando un poco más es así:
El firmware está cargado en 1byte para instrucción y 16 bits de datos( Ésto lo definí así porque trabajar con 32bits de firmware requiere usar 5 memorias en paralelo.)
Volviendo, entonces se necesita de la instrucción A10, que lo que hace es cargar en el Word alto, los otros 16 bits para completar los 32 bits si es que hay que llevar datos al BUS. Pero ésto sólo es necesario cuándo hay que inyectar un dato del firmware al BUS, ya que el resto trabaja con la cantidad de bits que necesita, por ejem. La RAM, ALU, etc. Poseen 32 bits. El TIMER del sistema y el controlador de Keyboard son de 24bits.
La tarjeta VGA requiere 20bits para direccionar la RAM de vídeo y 8bits para datos.
En resumen, cada tarjeta se conecta al BUS, con la cantidad de bits que necesita para funcionar, además de las señales de control, que le dicen, éste dato entra y éste otro dato sale.
Me corrijo del mensaje anterior, sucede que cuándo volví a releerlo NO se podía editar.
La instrucción A12 equivale a 11101100 en binario y así netamente se carga en el firmware.
Sí a eso le acompañamos el argumento 15.
Quedaría en total:
A12 15 igual a 11101100 00000000 00001111.
Se pueden observar tres bytes, ya que el firmware utiliza tres memorias EEPROMs en paralelo, cómo mencioné anteriormente.
La instrucción A12 13 en binario equivale a:
11101100 00000000 1101.
Gracias por tu interés!!!👏👏👏


----------



## avefenix586 (Feb 1, 2021)

Gudino Roberto duberlin dijo:


> A12 13// Vuelca el resultado del sumador en el BUS.


Gudino esta instruccion aun me tiene medio confusio, con la parte del programa que habia puesto habia supuesto que el codigo de operacion es un byte y lo que le sigue seria un dato pero en esa linea nos da a entender que el 13 no es un dato sino tambien parte de la instruccion que le indica al procesador a poner el resultado en el bus?

y en el caso de querer cargar un valor inmediato de 32 bits en el registro acumulador cual seria el codigo de esa accion?


----------



## Gudino Roberto duberlin (Feb 1, 2021)

Hola Amigo, A12 es una instrucción de direccionamiento.
El argumento valor 13 es un dato que le dice adónde direccionar.
Vale aclarar que A12 13, NO es una acción de operación.
Respondiendo a  cómo cargar un dato en el acumulador, hacemos así.
1ro. Hay que indicar de dónde vienen los datos. En éste caso los provee el programa qué está corriendo, entonces sería:
A12 15
Luego ejecutamos A10 XX, en dónde XX es el valor alto en formato 16bits(Word) del valor a cargar en el acumulador.
Luego se ejecuta la instrucción A9 XX, en dónde XX lleva los 16bits bajos al acumulador.
Es decir, se requieren 3 ciclos de máquina para llevar un dato al acumulador.
A partir de allí quedan cargados los 32bits en el registro acumulador.
Aclarando un poco más respecto a la instrucción A12, lo que hace es conectar el BUS con un único destino.
De esa forma se evita colisión con cualquier otro dispositivo que tenga algún dato para entregar al BUS.


----------



## Gudino Roberto duberlin (Jun 8, 2021)

Buenas gente, aquí les comparto otro adelanto más al proyecto PDC32, se trata del módulo controlador de memorias seriales. Para poder utilizar cómo almacenamiento extraíble(simil Pendrive).
Realmente ésta etapa del proyecto, ha estado lleno de complicaciones de lo más insólito que puede ocurrírseles.
Empezando por ejem. que las memorias que conseguí (24C08 y 24LC512) ambas estaban dañadas. Eso lo descubrí, luego de "renegar" un buen tiempo, ya que uno se espera que el circuito es el culpable...   La primer memoria, entregaba cualquier dato, es cómo si las direcciones de memoria internamente estuvieran cortocircuitadas. Y la segunda memoria directamente NO entregaba ninguna confirmación, luego de enviarle los comandos.
En fin, hubo que esperar hasta que llegaran más memorias, y probarlas fuera de la placa de forma manual, por si había algún inconveniente con el circuito.
Desde ya, muchas gracias.


----------



## TRILO-BYTE (Jun 8, 2021)

Simplemente admirable.


----------



## Gudino Roberto duberlin (Jun 8, 2021)

A partir de aquí, estaría en condiciones de comenzar con la programación del sistema.
Pero hay un detalle, y aquí es dónde Uds. se transforman en protagonistas!
Resulta que el sistema NO tiene reloj, más precisamente reloj calendario.
Entonces el dilema sería. Utilizamos un reloj afín, cómo el DS1307 o similar?
Aunque va en contra de la ideología de utilizar sólo discretos!
Ahora bien, diseñar un reloj con lógica,  aparece el problema de la autonomía.(Alimentar un puñado de circuitos 30 o 40  CMOS con pilas, sería un presupuesto mantener todo eso funcionando por períodos largos) y además voluminoso.
Recurrir a algo intermedio?
por ejem. utilizar un PIC a baja velocidad?
Alguna otra alternativa?
Escucho opiniones! Toda idea aunque parezca absurda puede resultar la más genial!


----------



## J2C (Jun 8, 2021)

Sugiero el DS3231 que es una variante avanzada del 1307


Saludos, JuanKa.-


----------



## Dr. Zoidberg (Jun 8, 2021)

Gudino Roberto duberlin dijo:


> Entonces el dilema sería. Utilizamos un reloj afín, cómo el DS1307 o similar?
> Aunque va en contra de la ideología de utilizar sólo discretos!


Yo conozco lo que es pelear con tecnologías antediluvianas, pero en virtud de lo que he analizado de PCs viejas (muy viejas) YO usaría un chip como el RTC de Dallas (con la pila "on-board" jajaja) y no me complicaría la vida. Sigue siendo algo arcaico pero te reduce el hardware en forma significativa.


----------



## 426ivan (Jun 8, 2021)

Roberto tu trabajo es realmente increíble. Me parece espectacular como fuiste encarando parte por parte todo el equipo.

Muchas gracias por compartirlo aquí. De verdad gracias.


----------



## TRILO-BYTE (Jun 9, 2021)

Yo lo que no veo son diagramas 😡


----------



## Gudino Roberto duberlin (Jun 9, 2021)

TRILO-BYTE dijo:


> Yo lo que no veo son diagramas 😡


Tienes razón!! Subiré los esquemas en formato .BMP.   Tengo todo documentado en Proteus.
Incluso estuve haciendo la lista del ISA, que también compartiré.


----------



## Gudino Roberto duberlin (Jun 9, 2021)

Buenas, para empezar, comparto el set de instrucciones y lectura de registros especiales del PDC32.

Añado además, los esquemas correspondientes a decodificador de instrucciones + A.L.U+ control Power-ON/OFF.

*Nota: Hay entradas que aparecen sin conexión, (simplemente para simplificar, físicamente se conectaron a VCC o GND, según corresponde)
Luego añado los esquemas que corresponden a ctrl de speaker+UART+Keyboard.
Añado, esquema Multi-Timers.


----------



## Scooter (Jun 10, 2021)

Hombre siendo puristas yo lo haría con transistores...

Pues como quieras. Eso del RTC es un invento moderno, he usado muchos ordenadores que no tenían y no pasaba nada.


----------



## cosmefulanito04 (Jun 10, 2021)

Estaría genial después repetir la experiencia con una FPGA baratita.


----------



## TRILO-BYTE (Jun 10, 2021)

Yo luego me hago bolas haciendo los circuitos en el protoboard.
No sé si te haz equivocado varias veces antes de hacer el pcb.


----------



## Gudino Roberto duberlin (Jun 11, 2021)

TRILO-BYTE dijo:


> Yo luego me hago bolas haciendo los circuitos en el protoboard.
> No sé si te haz equivocado varias veces antes de hacer el pcb.


Si! Claro que sí. Aunque repaso varias veces las conexiones he cometido errores.
Es más! la tarjeta de teclado tuve que hacerla de nuevo. Al no estudiar COMPLETAMENTE cómo funcionaba el protocolo PS2, aparece un bit de confirmación por parte del teclado(que ignoré), y lo que hacía era desplazarme el registro de corrimiento un lugar más, así que podés imaginarte el resultado.
Para pasar de la hoja al PCB, tildo las puntas de cada cable de conexión. Y si hay nodos, a aclarar más aún. Así resulta más fácil.


----------



## Gudino Roberto duberlin (Jun 29, 2021)

Buenas gente!
Les comparto otro pequeño avance en terminación de detalles del proyecto!






Muchas gracias!


----------



## Gudino Roberto duberlin (Sep 30, 2021)

Buenas gente! les comparto otro avance de la PDC32.

Desde ya muchas gracias!


----------



## unmonje (Sep 30, 2021)

Preguntita : ¿sirve para hacer mineríaa de bitcoins ?


----------



## Gudino Roberto duberlin (Oct 1, 2021)

unmonje dijo:


> Preguntita : ¿sirve para hacer mineríaa de bitcoins ?


Ojalá! Pero es imposible.


----------



## TRILO-BYTE (Oct 1, 2021)

Fascinante, ¿creaste tu propio compilador?.
Veo que tiene funciones de BASIC el código en block de notas.


----------



## Gudino Roberto duberlin (Oct 1, 2021)

TRILO-BYTE dijo:


> Fascinante, ¿creaste tu propio compilador?.
> Veo que tiene funciones de BASIC el código en block de notas.


En realidad primero armé el programa en una PC normal! Para poder depurar errores.

Y luego lo transcribí a código máquina y ahí desaparece toda naturaleza de Basic que pudo haber!
Pero la idea es hacer un compilador que corra en la misma PDC.


----------



## J2C (Oct 1, 2021)

.



@Gudino Roberto duberlin  CLAP    CLAP     CLAP


----------



## DJ T3 (Oct 2, 2021)

Lo que no me gusta, es que esta en ingles.
El resto... Es fascinante...
El bios, es como el tipico bios (de configurar la maquina, etc...), o en éste prototipo tiene otro tipo de funcion?


----------



## unmonje (Oct 2, 2021)

DJ T3 dijo:


> Lo que no me gusta, es que esta en ingles.
> El resto... Es fascinante...
> El bios, es como el tipico bios (de configurar la maquina, etc...), o en éste prototipo tiene otro tipo de funcion?


BIOS ---->    «Basic Input Output System«   Sistema de entrada y salida Básico

No confundir con--> *DIOS*  --> DATA  Input Output System --> Sistema de entrada y salida de datos 🙏


----------



## Gudino Roberto duberlin (Oct 2, 2021)

DJ T3 dijo:


> Lo que no me gusta, es que esta en ingles.
> El resto... Es fascinante...
> El bios, es como el tipico bios (de configurar la maquina, etc...), o en éste prototipo tiene otro tipo de funcion?


Así es, básicamente desde esa ventana de parámetros se puede configurar todo.
Sobre el idioma se puede cambiar.
Sucede que muchos de los términos en inglés usan menos letras que el español, y es una ventaja para reducir espacio en memoria.


----------



## DJ T3 (Oct 2, 2021)

unmonje dijo:


> BIOS ---->    «Basic Input Output System«   Sistema de entrada y salida Básico
> 
> No confundir con--> *DIOS*  --> DATA  Input Output System --> Sistema de entrada y salida de datos 🙏


Nunca escuche ni lei ese tal "D.I.O.S.".... En qué se usa?



Gudino Roberto duberlin dijo:


> Sobre el idioma se puede cambiar.


Igual, te jodia (bromeaba) nomas. Y si, a veces es mejor el ingles referente a simplificacion y acostumbramiento (me ha pasado que he tenido que volver al ingles, ya que estaba acostumbrado a los terminos en ese idioma)


----------



## unmonje (Oct 2, 2021)

DJ T3 dijo:


> Nunca escuche ni lei ese tal "D.I.O.S.".... En qué se usa?
> 
> 
> Igual, te jodia (bromeaba) nomas. Y si, a veces es mejor el ingles referente a simplificacion y acostumbramiento (me ha pasado que he tenido que volver al ingles, ya que estaba acostumbrado a los terminos en ese idioma)


*DIOS* se usa en un *sistema operativo*, muy conocido en un *lenguaje *muy particular, también conocido como* ADN o ARN*  (me extraña araña) todo es software al final  Es una programación en* base 4*  pero es una programación


----------



## Dr. Zoidberg (Oct 2, 2021)

LPM que está bueno eso!!!!!!   
Las funciones de acceso a la pantalla, teclado y puerto serie las has hecho usando el concepto de las interrupciones por software???
Eso es importante por que se transforman en subrutinas que pueden ser invocadas por el software de usuario (es lo que hacían CP/M y DOS) y de esa forma se abstraen los detalles del hardware para futuros desarrollos de software....


----------



## Gudino Roberto duberlin (Oct 2, 2021)

Dr. Zoidberg dijo:


> LPM que está bueno eso!!!!!!
> Las funciones de acceso a la pantalla, teclado y puerto serie las has hecho usando el concepto de las interrupciones por software???
> Eso es importante por que se transforman en subrutinas que pueden ser invocadas por el software de usuario (es lo que hacían CP/M y DOS) y de esa forma se abstraen los detalles del hardware para futuros desarrollos de software....


Tal cuál Dr.! Las interrupciones son por soft. El prog. hace un sondeo en una variable, y según que bit cambia interpreta cuándo se pulsó una tecla.
O cuándo la tarjeta de video terminó de hacer el barrido vertical.
Lo mismo ocurre con el puerto serial, si se recibe un dato, un bit se pone en 1.
Cuándo se graba en la EEPROM, otro bit permanece en alto mientras dura la grabación, etc.
La idea es armar una función para cada periférico, de esa forma te desentedes de los datos y señales que trabajan ocultos.
Por ejem si quieres hacer un PRINT" "
sólo debes escribir el valor ASCII en una variable y llamás a la función TEXTO.
Y la función solita se encarga de incrementar el puntero X en pantalla para imprimir desde la última impresión, y cambiar las señales necesarias de la tarjeta para intercambiar de página de video y demás cosas.


----------



## Gudino Roberto duberlin (Nov 7, 2021)

Buenas a la comunidad, aquí les traigo otro avance en éste proyecto, y mi agradecimiento especial al Dr. Zoidberg, ya que él, fue quien me dió una luz para usar el DS1387, un RTC con todas las letras.


----------



## Andrxx (Nov 7, 2021)

Me quito el sombrero, es sinceramente, impresionante.


----------



## unmonje (Nov 7, 2021)

4800 baudios ...que tiempos aquellos !!    

Les pones Internet a 9600 baudios y los chavales te hacen "Bunshee" sin soga, desde el cordón al asfalto, posta !


----------



## Gudino Roberto duberlin (Ene 11, 2022)

Buenas a la comunidad! 
Aquí les acerco otro paso más, a éste proyecto!
Muchas gracias!


----------



## TRILO-BYTE (Ene 11, 2022)

Pero que bárbaro esto supera la ficción.


----------



## aitopes (Ene 11, 2022)

TRILO-BYTE dijo:


> Pero que bárbaro esto supera la ficción.


Es IMPRESIONANTE.


----------



## Dr. Zoidberg (Ene 11, 2022)

Bueniiiiiissssiiiimmmoooooo!!!!!
Impresionante laburo!!!!          🤩🤩🤩🤩🤩🤩


----------



## unmonje (Ene 11, 2022)

Que jugador !!!!    😍


----------



## Gudino Roberto duberlin (Feb 10, 2022)

Buenas gente!
Les comparto otro avance más!
Desde ya, muchas gracias!


----------



## unmonje (Feb 11, 2022)

Gudino Roberto duberlin dijo:


> Buenas gente!
> Les comparto otro avance más!
> Desde ya, muchas gracias!


Cuantos recuerdos de cuando estudiaba esos formatos de campos de registros.!!!!


----------



## Gudino Roberto duberlin (Jun 28, 2022)

Buenas gente!, les comparto la finalización del sistema operativo de la PDC32.


----------



## unmonje (Jun 28, 2022)

Gudino Roberto duberlin dijo:


> Buenas gente!, les comparto la finalización del sistema operativo de la PDC32.



Horas, Dias, semanas, meses, incluso años, detrás de una pasión !!!!
Al final, es casi lo único que importa. !!
Aunque la rueda, ya la hallan inventado otros y redonda, no es lo mismo ver el final del camino, sino, haberlo caminado uno mismo, en soledad o en compañía.
Mejor en compañía siempre.....  e_p_ta_cular !!! Titánica tarea la suya.


----------



## Andrxx (Jun 29, 2022)

Estoy boquiabierto con este proyecto, no sólo por el reto sino por la meticulosidad de dedicar 4 horas diarias durante 4 meses para fabricar la tarjeta VGA, impresionante. Una cuestión ¿Las PCB las fabricas con el método del papel seco sensible a la luz ultravioleta?


----------



## Gudino Roberto duberlin (Jun 29, 2022)

Andrxx dijo:


> Estoy boquiabierto con este proyecto, no sólo por el reto sino por la meticulosidad de dedicar 4 horas diarias durante 4 meses para fabricar la tarjeta VGA, impresionante. Una cuestión ¿Las PCB las fabricas con el método del papel seco sensible a la luz ultravioleta?


Muchas gracias @Andrxx, a las PCBs, las dibujo a mano, aplicando con tinta indeleble, en una aguja tipo insulina.
Me parece que en el primer video que subí, verás algo de ese tema.


unmonje dijo:


> Horas, Dias, semanas, meses, incluso años, detrás de una pasión !!!!
> Al final, es casi lo único que importa. !!
> Aunque la rueda, ya la hallan inventado otros y redonda, no es lo mismo ver el final del camino, sino, haberlo caminado uno mismo, en soledad o en compañía.
> Mejor en compañía siempre.....  e_p_ta_cular !!! Titánica tarea la suya.


Creo que explicaste de forma sublime, la filosofía de reinventar la rueda.
Para muchos puede ser una pérdida de tiempo, pero para otros, la experiencia no tiene precio! Muchas gracias @unmonje.


----------



## unmonje (Jun 29, 2022)

Gudino Roberto duberlin dijo:


> Muchas gracias @Andrxx, a las PCBs, las dibujo a mano, aplicando con tinta indeleble, en una aguja tipo insulina.
> Me parece que en el primer video que subí, verás algo de ese tema.
> 
> Creo que explicaste de forma sublime, la filosofía de reinventar la rueda.
> Para muchos puede ser una pérdida de tiempo, pero para otros, la experiencia no tiene precio! Muchas gracias @unmonje.


Ya anduve por otras zanjas parecidas , pero sin compañías  🥴  🤣


----------



## Dr. Zoidberg (Jun 29, 2022)

unmonje dijo:


> Ya anduve por otras zanjas parecidas , pero sin compañías


Tirando el pelado???


----------



## unmonje (Jun 29, 2022)

Dr. Zoidberg dijo:


> Tirando el pelado???


A mi edad, no sé que es eso Doctor, ni caspa tengo.
Me refería al infierno, de cada quien.     ¿Los suyos ? 🥴 ..Digo, ¿ a que zanja usted refería?


----------



## Dr. Zoidberg (Jun 29, 2022)

unmonje dijo:


> Me refería al infierno, de cada quien.    ¿Los suyos ? 🥴 ..Digo, ¿ a que zanja usted refería?


Ahhhhhhh.......entendí mal....


----------



## 426ivan (Jul 3, 2022)

Volviendo al tema, este es uno de esos proyectos que te dejan sin palabras. Lo único que se puede llegar a decir es GUAU! 
La verdad, desde que vi este proyecto quedé impresionado. No solo por lo titánico del trabajo, sino por el desarrollo en sí mismo. No creo en eso de que solo tiene fines didácticos, o que se reinvente la rueda, creo que rompe los paradigmas y las trabas autoimpuestas de cualquiera en este mundo de gigantes de la tecnología y no por lo que puede hacer, sino porque "se puede hacer". Es como una liberación que te dice: él lo hizo solo, entonces otros (por qué no yo?) quizás puedan hacerlo también. Los videos del paso a paso no te dicen todos pueden, obviamente hay estudios, conocimiento y dedicación pero te dejan la puerta abierta a la libertad de hacer cualquier cosa. Este proyecto dice yo te abro la puerta, atravesarla depende solo de tus ganas.
GRACIAS Gudino Roberto, de verdad gracias!!!
Un abrazo cordial desde Catamarca, Argentina.


----------



## Gudino Roberto duberlin (Jul 3, 2022)

426ivan dijo:


> Volviendo al tema, este es uno de esos proyectos que te dejan sin palabras. Lo único que se puede llegar a decir es GUAU!
> La verdad, desde que vi este proyecto quedé impresionado. No solo por lo titánico del trabajo, sino por el desarrollo en sí mismo. No creo en eso de que solo tiene fines didácticos, o que se reinvente la rueda, creo que rompe los paradigmas y las trabas autoimpuestas de cualquiera en este mundo de gigantes de la tecnología y no por lo que puede hacer, sino porque "se puede hacer". Es como una liberación que te dice: él lo hizo solo, entonces otros (por qué no yo?) quizás puedan hacerlo también. Los videos del paso a paso no te dicen todos pueden, obviamente hay estudios, conocimiento y dedicación pero te dejan la puerta abierta a la libertad de hacer cualquier cosa. Este proyecto dice yo te abro la puerta, atravesarla depende solo de tus ganas.
> GRACIAS Gudino Roberto, de verdad gracias!!!
> Un abrazo cordial desde Catamarca, Argentina.


Woww! Imposible no responder a un mensaje así!
Sinceramente! Muchas gracias por tu comentario, al igual que a muchas personas que han visto éste proyecto!
Creo que como bien dices! La perseverancia está por encima de todo. 
Conocimiento más o conocimiento menos, sólo puede demorar en mayor o menor medida realizar algo! Lo que sea. Pero la constancia es el motor de todo. Y eso motiva a que cualquiera pueda encarar sus metas, sin considerar su conocimiento.
Gracias nuevamente por tus palabras, que empujan a continuar con  mi motivación!
Abrazo grande! Desde Córdoba, Argentina!


----------



## TRILO-BYTE (Jul 3, 2022)

El software como lo escribes?


----------



## unmonje (Jul 3, 2022)

TRILO-BYTE dijo:


> El software como lo escribes?


Hay varias maneras, ninguna fácil.

Todo apuntando a construir la *ROM* para el *bootstrap* (tirabotas)* , *que ponga en arranque al procesador e intente cargar algún sistema operativo desde algún origen, pero no cualquier sistema. Tiene que estar escrito en leguaje de maquina, que el procesador pueda interpretar.

*a- *Se pueden usar muletas, de algún sistema operativo y lenguaje pre existente, lo cual ahorra mucho tiempo, o sea, dinero.

*b-* desde cero, si el paquete de instrucciones va a ser uno *propio*, para un  *procesador discreto* que uno* inventa*. Este es el mas difícil, el que nadie quiere hacer.    🤣

Es como andar en selva espesa.
Uno empieza arrastrando se con el machete en la boca , luego de rodillas, luego se pone de pie, después pasito a pasito, luego un paso y después el  otro , hasta empezar a caminar. Ahí comienza la parte mas divertida, si se quiere.

Si se uso como " muleta ", algún lenguaje con *compilador - ensamblador*,  después hay que pasarlo a HEXA para poder grabar una EPROM de arranque, compatible con el WORD de nuestra CPU primitiva, sea en 4 bits (nibble) , en 8 (byte), etc.
Lógico que antes que todo esto, hay que INVENTAR el circuito eléctrico.
Es un montón de laburo, sin entrar a hablar de las herramientas de contexto del sistema operativo. Es decir los llamados COMANDOS (edit, delete, format , etc, etc)

 Podría escribir horas y el señor Gudino x años.

Para ahorrar tiempo, hace muchos años, con amigos, preparamos un *ordenador, *que accedía a una interfase, que* simulaba ser *una* EPROM *y ésta, se insertaba en el zócalo de otro ordenador donde iba emplazada una EPROM REAL, simulando ser su Bootstrap. 🤣

Entonces era muy fácil modificar el *boostrap*, corregirlo, porque en realidad era una RAM, que simulaba ser una EPROM. 
De ésta manera, no había que esperar a *quemar* la EPROM para ver los resultados.
En la *máquina A*, hacíamos las modificaciones, transferíamos a la *RAM* *simuladora* y reseteábamos la* máquina B* para ver resultados de las modificaciones.
De paso, nos quedaba registro de *toda la corrida*, cual si fuera un* LOGIC ANALIZER* , de hecho lo era, de esa manera, se avanzaba rápido, para hacer ingeniería directa o inversa, según el caso.

Que años. !


----------



## Gudino Roberto duberlin (Jul 3, 2022)

TRILO-BYTE dijo:


> El software como lo escribes?


El soft hasta el momento lo escribo en lenguaje máquina(propio de la arquitectura)
Pero estoy trabajando en un intérprete de C.


unmonje dijo:


> Hay varias maneras, ninguna fácil.
> 
> Todo apuntando a construir la *ROM* para el *bootstrap* (tirabotas)* , *que ponga en arranque al procesador e intente cargar algún sistema operativo desde algún origen, pero no cualquier sistema. Tiene que estar escrito en leguaje de maquina, que el procesador pueda interpretar.
> 
> ...


Pues!!! Ni que hubieras estado en mis zapatos!
😂
Es tal cuál lo describes, aquí no hay ni huevo ni gallina!
Como me dice mi Sra. Aguánteselas mijo'! Que nadie lo mandó a hacer eso!😂
Bien, pues si. El mecanismo para hacer algo propio, NO tiene alternativas de atajo.
A remarla desde cero!
Y añadiendo un poco más.
El intérprete de C,.tiene que compilar en un pseudocódigo, para que al cargarlo en RAM, el programa interno del firmware, contiene el programa que se encarga de ejecutar al pseudocódigo!
Ésto tiene dos ventajas, y es que el pseudocódigo ocupa muy poco espacio.
Y por otro lado, todas las señales del procesador quedan abstraidas de ser controladas por el programador.
El inconveniente, es que la ejecución es más lenta, porque un código base ejecuta a otro código de mayor nivel, como si se tratase de una máquina virtual.


----------



## unmonje (Jul 3, 2022)

Gudino Roberto duberlin dijo:


> El soft hasta el momento lo escribo en lenguaje máquina(propio de la arquitectura)
> Pero estoy trabajando en un intérprete de C.
> 
> Pues!!! Ni que hubieras estado en mis zapatos!
> ...


De hecho, yo diria que lo es (E mula)   🤣


----------



## TRILO-BYTE (Jul 3, 2022)

¿Entonces tú código lo escribes en crudo hexadecimal?


----------



## ricbevi (Jul 4, 2022)

TRILO-BYTE dijo:


> ¿Entonces tú código lo escribes en crudo hexadecimal?


Lo escribe en asembler del procesador y después lo pasa a hexadecimal para grabarlo/cargarlo.

Al menos así lo entendí y siempre lo hice(no a ese nivel) por acá.


----------



## Gudino Roberto duberlin (Jul 4, 2022)

TRILO-BYTE dijo:


> ¿Entonces tú código lo escribes en crudo hexadecimal?


Así es, hasta el momento.


----------



## TRILO-BYTE (Jul 5, 2022)

ricbevi dijo:


> Lo escribe en asembler del procesador y después lo pasa a hexadecimal para grabarlo/cargarlo.
> 
> Al menos así lo entendí y siempre lo hice(no a ese nivel) por acá.


Ya se todo lo que me dicen, yo también he hecho mi computadora basada en Z80.
Pero yo uso un ensamblador que no hice yo.

Por eso tenía mi duda que si escribía todo el software a mano pelona.


----------



## unmonje (Jul 5, 2022)

TRILO-BYTE dijo:


> Ya se todo lo que me dicen, yo también he hecho mi computadora basada en Z80.
> Pero yo uso un ensamblador que no hice yo.
> 
> Por eso tenía mi duda que si escribía todo el software a mano pelona.



En casos extremos he quemado PROMS Byte a byte manualmente, esa es la peor condición, cuando ni siquiera podes usar un ensamblador ajeno.
Es lo que nadie quiere pero a veces se te pone en medio. 🥴


----------



## TRILO-BYTE (Jul 5, 2022)

Se puede hacer un ensamblador solo haciendo comparaciones de cadenas de texto en C++.
Digamos si encuentro un jump compara para ver si está bien escrito y lo reemplaza por un hexadecimal.

Ejemplo


cadena="jump";

Si ("jump" = cadena)
Pone 0x00

Es muy burdo lo que pongo pero no creo que sea tan difícil.


----------



## Gudino Roberto duberlin (Jul 5, 2022)

TRILO-BYTE dijo:


> Se puede hacer un ensamblador solo haciendo comparaciones de cadenas de texto en C++.
> Digamos si encuentro un jump compara para ver si está bien escrito y lo reemplaza por un hexadecimal.
> 
> Ejemplo
> ...


Exacto!!!! Bueno de hecho, es así.
En el intérprete que estoy trabajando, se complica bastante cuándo se invoca a un elemento de un array, por ejem. A {b}.(usé llaves, porque, la plataforma del foro,  interpreta a los corchetes, como elementos de texto.)
Volviendo, primero debe detectar que "b" es una variable, luego acceder a su valor, y usarlo como "sumando" al puntero de dirección de A.
Es engorroso, pero se puede.
Se complica aún más, cuándo debe reasignar por ejem,  VAR{r}=TITO{f}.


----------



## TRILO-BYTE (Jul 5, 2022)

¿Pero en este caso estás trabajando en un compilador de seudo código?


----------



## Gudino Roberto duberlin (Jul 5, 2022)

El intérprete debe traducir la sintaxis C, en un pseudocódigo. Bueno, esa sería la idea.
Caso contrario, armar un intérprete de ASM a pseudocódigo, que es mucho más simple.
Cuándo tenga algo más o menos presentable, lo subo en video para que puedan ver cómo trabaja.
Hasta el momento, lo más eficiente que logré en éste compilador es:
Por ejem. si tenemos que A=b+c-d*4/t.
Cuándo accede a la dirección de A, genera un registro que lo llamé TOTAL y luego todo lo que venga luego del símbolo igual, es cálculo. Ya sea con constantes o variables, y genera un registro llamado PARCIAL, entonces cuándo se encuentra con un +, -, * o /. sabe que el sig. elemento debe aplicar la operación necesaria con PARCIAL.
Lo malo de ésto es que no distingue prioridad de cálculo. Pero bueno, los avances son así. No se puede todo de una!


----------



## unmonje (Jul 5, 2022)

TRILO-BYTE dijo:


> ¿Pero en este caso estás trabajando en un compilador de seudo código?


Le sorprendería saber que, no pocos procesadores trabajan así, internamente aún dentro del mismo procesador.  🥴


----------



## TRILO-BYTE (Jul 5, 2022)

Yo creo que para hacer que detecte prioridad de operaciones aritméticas hay que ir apilando los operadores y cuando se encuentra uno de mayor prioridad atacar la operación hasta llegar de la menor prioridad.

No se haciendo tokens y apilar, un contador de prioridades.

Se me ocurre.

No sé si ya tengas funcionando un analizador léxico y un sintactico.


----------



## Gudino Roberto duberlin (Jul 5, 2022)

TRILO-BYTE dijo:


> Yo creo que para hacer que detecte prioridad de operaciones aritméticas hay que ir apilando los operadores y cuando se encuentra uno de mayor prioridad atacar la operación hasta llegar de la menor prioridad.
> 
> No se haciendo tokens y apilar, un contador de prioridades.
> 
> ...


La idea es genial!!!
Respondiendo a tu pregunta, básicamente hay una parte que detecta cadenas de instrucciones como declaración de variables,  "int, if, printf()", etc. Por otro lado hay un detector de fin de línea";"
Y por otro lado, detecta cuándo un string es cadena de una variable y cuándo es una cadena de números, para transformarlo en un valor numérico.
También elimina los espacios para manejar todo más compacto.
De hecho hay muchas cosas por hacer.
Hasta el momento, el analizador de texto, detecta cadenas de operaciones con variables de longitud indefinida.
Incluso puede operar con arrays por ej.
A{x}=J{3}-B{h}*Y+1;
Ésta es la parte más compleja, porque en los cálculos parciales hay un elemento array, uno con puntero variable y otro con constante, más una variable y una constante.
El sig. paso, es traducir ésto a pseudocódigo.


----------



## 426ivan (Jul 8, 2022)

Gudino Roberto duberlin dijo:


> Woww! Imposible no responder a un mensaje así!
> Sinceramente! Muchas gracias por tu comentario, al igual que a muchas personas que han visto éste proyecto!
> Creo que como bien dices! La perseverancia está por encima de todo.
> Conocimiento más o conocimiento menos, sólo puede demorar en mayor o menor medida realizar algo! Lo que sea. Pero la constancia es el motor de todo. Y eso motiva a que cualquiera pueda encarar sus metas, sin considerar su conocimiento.
> ...



Juajua!! Pensé que eras europeo, jajja. 
Abrazo  vecino!!! 🤣
(Yo viví 12 años en Nva Cba)


----------



## Gudino Roberto duberlin (Jul 9, 2022)

426ivan dijo:


> Juajua!! Pensé que eras europeo, jajja.
> Abrazo  vecino!!! 🤣
> (Yo viví 12 años en Nva Cba)


Nueva Cba. Ahora parece Las Vegas! La plaza España  y alrededores están irreconocible. 👏


----------



## Gudino Roberto duberlin (Jul 29, 2022)

Buenas comunidad!
Les comparto una charla a la que me invitaron, para comentar sobre el desarrollo del S.O. de la PDC32. Y luego una demostración del sistema!
Muchas gracias!


----------



## J2C (Jul 29, 2022)

.




*FELICITACIONES* Roberto !!!!!!​


.


----------



## unmonje (Jul 29, 2022)




----------



## Gudino Roberto duberlin (Oct 23, 2022)

Buenas tardes comunidad, luego de algunos meses de  trabajo en el compilador ensamblador para la PDC 32, les comparto la 1ra. etapa alcanzada.
Muchas gracias, como siempre!


----------



## TRILO-BYTE (Oct 23, 2022)

Eres un crack de cracks.


----------



## unmonje (Oct 23, 2022)

Gudino Roberto duberlin dijo:


> Buenas tardes comunidad, luego de algunos meses de  trabajo en el compilador ensamblador para la PDC 32, les comparto la 1ra. etapa alcanzada.
> Muchas gracias, como siempre!


Una PREGUN TONTA  Don Roberto.... ¿ ya hace operaciones de memoria con punteros  indirectos, o eso vendrá mas adelante ?
No lo apuro, es una ilusión mía nomas     que querría que si, pero se que todo eso come VIDA. Me hago la cabeza mientras.🥶


----------



## Gudino Roberto duberlin (Oct 23, 2022)

unmonje dijo:


> Una PREGUN TONTA  Don Roberto.... ¿ ya hace operaciones de memoria con punteros  indirectos, o eso vendrá mas adelante ?
> No lo apuro, es una ilusión mía nomas     que querría que si, pero se que todo eso come VIDA. Me hago la cabeza mientras.🥶


Cómo estás compañero?
La respuesta es sí!
Desde microcódigo, aunque parezca difícil, no lo es, aunque se requieren como 8 a 10 ciclos de máquina para hacerlo.
Por ejem. el código:
A=Var(b)
*Con ésta simple variable array, la uso mucho para refrescar el buffer de vídeo.
La variable b, puede tomar un valor desde 0 a 2400, que es el tamaño de la matriz del buffer de texto, 80x30 caracteres.
La variable A, me devuelve el ASCII de esa posición.*


----------



## Gudino Roberto duberlin (Nov 13, 2022)

Buen día comunidad, avanzando un paso más en el compilador.
Les comparto las primeras instrucciones interpretables, por el sistema.


----------



## unmonje (Nov 13, 2022)

Gudino Roberto duberlin dijo:


> Buen día comunidad, avanzando un paso más en el compilador.
> Les comparto las primeras instrucciones interpretables, por el sistema.


Se entendió todo y está perfecto, hasta los errores voluntarios y omiciones en el compilado para mostrar . ☝️número 1


----------



## Gudino Roberto duberlin (Nov 13, 2022)

unmonje dijo:


> Se entendió todo y está perfecto, hasta los errores voluntarios y omiciones en el compilado para mostrar . ☝️número 1


El error en la sintaxis fue sin querer queriendo.
El resto sí fue a "prosopito"😁


----------



## DJ T3 (Nov 14, 2022)

Tengo un problema grave, que es el inglés. Ya que lo hiciste tu, no estaría mal que esté en español...

Pero es solo MI problema...

Por el resto, una belleza....


----------



## unmonje (Nov 14, 2022)

DJ T3 dijo:


> Tengo un problema grave, que es el inglés. Ya que lo hiciste tu, no estaría mal que esté en español...
> 
> Pero es solo MI problema...
> 
> Por el resto, una belleza....


Bueno, alguien pisó el palito, no estaría mal que Don Roberto y DJ que NO viven TAN  TAN lejos uno del otro, se juntaran en algun BAR de Villa Maria ó Bell Ville , así comienza  * DJ * la transcripción del editor/compilador al Castellano , de paso DJ afila los dientes con el ingles y queda en Cero la ecuación !!!  .
Y hacen buenas migas de paso.


----------



## DJ T3 (Nov 14, 2022)

unmonje dijo:


> así comienza * DJ * la transcripción del editor/compilador al Castellano


Siempre pensé en realizar algún intérprete o similar, pero que sea en Castellano/Español, ya que creo no existe, y cuando salen errores hay que ir al traductor...   , aunque también existe un problema y es el costumbrismo.
Por dar un ejemplo, tengo la traducción en Español de un programa de música, pero la verdad que no encontré agradable el cambio, por estar tan acostumbrado al inglés...



unmonje dijo:


> se juntaran en algun BAR


Aunque esto no vendría nada mal... 🍻😁


----------



## unmonje (Nov 14, 2022)

DJ T3 dijo:


> Siempre pensé en realizar algún intérprete o similar, pero que sea en Castellano/Español, ya que creo no existe, y cuando salen errores hay que ir al traductor...   , aunque también existe un problema y es el costumbrismo.
> Por dar un ejemplo, tengo la traducción en Español de un programa de música, pero la verdad que no encontré agradable el cambio, por estar tan acostumbrado al inglés...
> 
> 
> Aunque esto no vendría nada mal... 🍻😁


Se nota DJ que a usted, nunca le ha tocado posiblemente, leer un manual del usuario de un TESTER chino, traducido del Ingles al Castellano, por un oficinista Chino. 
Si alguna vez le tocara esa suerte, le recomiendo hacerlo cerca de algun sistema de salud, por poco estallo al quedar sin aliento, cuando me pasó. 🤣


----------



## Gudino Roberto duberlin (Nov 14, 2022)

DJ T3 dijo:


> Siempre pensé en realizar algún intérprete o similar, pero que sea en Castellano/Español, ya que creo no existe, y cuando salen errores hay que ir al traductor...   , aunque también existe un problema y es el costumbrismo.
> Por dar un ejemplo, tengo la traducción en Español de un programa de música, pero la verdad que no encontré agradable el cambio, por estar tan acostumbrado al inglés...
> 
> 
> Aunque esto no vendría nada mal... 🍻😁


Yo también me sumo a la idea de picar algo. Y si queda tiempo, ver el código.😁


----------



## TRILO-BYTE (Nov 15, 2022)

Ahorita recordé que te encontré en un grupo de home brew computer en feisbuq , ahí publicaste mas vídeos que aquí.


----------



## Gudino Roberto duberlin (Nov 15, 2022)

TRILO-BYTE dijo:


> ahorita recordé que te encontré en un grupo de home brew computer en feisbuq. ahí publicaste mas vídeos que aquí.


En ese grupo publiqué videos sin editar.


----------



## Gudino Roberto duberlin (Nov 27, 2022)

Buenas tardes gente, bueno para terminar con ésta etapa del compilador PDC. Les comparto la puesta en prueba de la instrucción MOV y ROUT.
Ésta última, es una instrucción específica del sistema, para poder acceder a cualquier rutina de la BIOS.
Muchas gracias!


----------



## avefenix586 (Dic 28, 2022)

Gudino increible y fantastico todos los avanzes que anda logrando con su computer PDC32 va avanzando a pasos agigantados que ya nos dejo rezagados con nuestros prototipos casi a punto de arrancar en la linea de partida (de alli la imagen) jeje, su setup clasico, su sistema de texto a lo DOS , su ensamblador que seguro cuando ya este bien desarrollado pasara a dar el salto a algun compilador como el C o Basic y ya ni que decir de que proximo avanze para el 2024 quizas su sistema grafico a lo windows o linux , ahora que lo vi en los videos de invitado le note algun parecido con un cantante un tal Antonio de Jesus jeje, sigo pensando que debio haber nacido hace 50 años para competir con el billy gates y el Steve jobs por la carrera de la era de las computadoras domesticas jeje ya quiero ver el poder de calculo del PDC32 en las operaciones matematicas multiplicaciones, divisiones etc, saludos y que pasen un feliz año nuevo colegas de las retrocomputadoras


----------



## Gudino Roberto duberlin (Dic 28, 2022)

Muchas gracias Amigo, bueno el modelo de la PDC, la bauticé con tu descripción cuándo dijiste ,"todas esas placas apiladas" y de ahí surgió (Artich=Alcachofa), si Apple usó una fruta, porque no usar una verdura, verdad? 🤣espero no me reclames el derecho de sugerencia, jeje.
Supongo que nací tarde, y sin dinero. Pero bueno, pechando el buque.
En resumen, no me quedo quieto con éste proyecto, siempre apunto a las mejoras.
Actualmente terminé el compilador y estoy trabajando en la posibilidad de incluir archivos de librería.
Gracias por la motivación! Y Feliz Año!👏👏


----------



## unmonje (Dic 29, 2022)

OFF-TOPIC  :  APPLE no  existis !!! 

vamos con ALCA_CHOFA😍


----------



## Gudino Roberto duberlin (Dic 31, 2022)

Muchas Felicidades Compañeros!!!👏👏👏


----------



## unmonje (Dic 31, 2022)

Gudino Roberto duberlin dijo:


> Muchas Felicidades Compañeros!!!👏👏👏


OFF-TOPIC :
Imagenes propias de CPM, MPM ó DOS, tales como las del ´ 78 (la ramera)  y las del  ´ 86 (el humo) !!!!
...pero muchachos..., -Que suerte que llegamos al LOCO ( ´ 22 )  😍


----------



## TRILO-BYTE (Ene 1, 2023)

Me recuerda a las antiguas computadoras Atari 800

Tengo 2 chips TIA de la Atari 2600 , no se si sea buena idea tratar de hacer video con ellos o no vale la pena, logré sacar audio y obviamente suena muy retro.


----------



## DJ T3 (Ene 3, 2023)

TRILO-BYTE dijo:


> Atari 2600


Los diagramas; https://www.atariage.com/2600/archives/schematics/index.html



TRILO-BYTE dijo:


> chips TIA


El datasheet; Atari 2600 TIA Technical Manual : Free Download, Borrow, and Streaming : Internet Archive


----------



## Gudino Roberto duberlin (Ene 3, 2023)

TRILO-BYTE dijo:


> Tengo 2 chips TIA de la Atari 2600 , no se si sea buena idea tratar de hacer video con ellos o no vale la pena, logré sacar audio y obviamente suena muy retro.


Sobre gustos, todo es relativo. Creo en lo personal que, aventurarse en eso, será una gran experiencia!


----------

