Computadora casera con procesador 8088 (no PC)

Bueno, respondiendo a tu pregunta.
Lo 1ro. que hago es trabajar con papel y lápiz, cuándo el circuito tiene forma, lo cargo al simulador Proteus. Una vez que pasa la prueba, al impreso lo hago simplemente a mano. Ya que armar un PCB por transferencia he tenido muchos problemas de todo tipo, desde la calidad del papel de transferencia, lograr que coincidan todos los holes( al ser doble faz), también por las ganas de que tenga el tóner ese día para colaborar, etc.
Mensaje automáticamente combinado:

luego nos terminara sorprendiendo con su version de 64
Jajajaaj!!!! Tendría que cambiar de medicamentos si intentara algo así!!😂😂😂
 
Me parece un buen proyecto pasar del PCB o los topos al circuito impreso , pero el objetivo es implementar perifericos y BIOS , quizas pueda echaros una mano en la programacion , yo programo en Ensamblador y con Delhi.
 
Este vendria a ser el mapa de memoria de 1 Megabyte direccionable por los 20 bits de direcciones del 8088, como sabemos el 8088 maneja segmentos de 64K por lo que se tendria 16 segmentos de 64K = 1 Mega pero por cuestiones practicas y de simplificacion he diseñado 4 modulos de memoria RAM y Eeprom, como nuestra tarjeta de soporte del CPU tiene 3 zocalos nomas para 3 modulos de memoria entonces la imagen nos muestra las posibles combinaciones que se puede hacer con esas tarjetitas de memoria y en cada encabezado se indica cuales son esos modulos, de tal manera que podamos usar diferentes combinaciones de 3 modulos que pueden ser asi :

** 1 chip Eeprom 28C256 y 2 chips RAM 62C256
** 2 chip Eeprom 28C256 y 1 chips RAM 62C256
** 1 chip Eeprom 28C256 y 2 chips RAM KM681000 (128 Kbyte)
** 2 chip Eeprom 28C256 y 1 chips RAM KM681000 (128 Kbyte)
** 2 chip Eeprom 28C256 y 1 chips RAM HM628512 (512 Kbyte)

y entonces se diria que en la ultima imagen hay una zona que no es ocupada en ninguna de las combinacion indicadas, en realidad si puede ocuparse tambien esa zona pero requeriria mas logica para la decodificacion o usar alguna GAL para la seleccion especifica en el mapa de memoria y esta seria asi :

** 1 chip Eeprom 28C256 y 2 chips RAM HM628512 (512 Kbyte)

pero en este caso ocurre que la segunda RAM de 512 Kbyte con la seleccion especifica de una GAL tendria habilitada solo 3/4 partes de su capacidad osea unos 448 Kbytes , como no queremos complicarnos mucho esta combinacion no esta habilitada o preparada por el momento y ademas con un chip de 512 Kbyte me parece que ya tenemos RAM mas que suficiente jeje.

Notaran que el mapa de memoria a sido dividido en 8 zonas de 128 Kbytes cada una determinada por la decodificacion de las tres lineas de direccion de mas peso A17...A19 que llegan a los decodificadores 74LS138 (1 de 8) , de alli que si ubicamos nuestro modulo en determinada zona en el mapeo logico ocupara toda esa zona de 128 Kbyte pero fisicamente puede ocupar menos, tal es el caso si usaramos una memoria de 64 Kbyte o una de 32 Kbyte (o hasta una de 8 Kbyte) que es las que usaremos habitualmente por ser mas difundidas, en el caso en donde si coinciden el mapeo logico con el mapeo fisico es cuando estamos usando una memoria de 128 Kbyte en adelante como la KM681000 (o equivalentes) que coincide exactamente con nuestra zona logica de 128 K.


Mapa de Memoria.jpg


Hace poco revisando en internet sobre mas memorias Eeprom me encontre que tambien hay unas 28C512 osea memorias Eeprom de 64 Kbyte pero no estan tan difundidas y adquirirlas estan algo costosas , muchos de estos chips de memoria que se estan vendiendo en tiendas online chinas son de segunda (usados y reetiquetados) y de cada 5 que compras pueden tocarte 2 a 3 buenas jeje
 
Por lo pronto como se anda en desarrollo de este sistema minimo 8088 nos conviene trabajar con las series 28Cxx para facilidad de la programacion que segun la datasheet anda por los 150 nseg de acceso y desde luego seria mejor usar las Eprom 27Cxx de 70 nseg de acceso para correr mas holgado, segun podemos deducir la memoria 28Cxx nos podria trabajar a una frecuencia de reloj maxima de 6,6 Mhz en teoria pero como los ciclos de lectura y escritura del 8088 requiere de varios ciclos de reloj CLK de entre 2 a 3 ciclos con lo que nos da un tiempo mayor de unos 300 a 450 nseg de acceso a esa frecuencia de 6.6 mhz, con lo que deberia poder facilmente trabajar con un 8088-2 de 8 Mhz sin ningun estado de espera y en cambio para el 8088-1 de 10 Mhz estemos en un umbral donde con las 28Cxx pueda que si se tenga que agregarse un estado de espera con un circuito de estados de espera , el cuello de botella de preocupacion en si seria mas los dispositivos de I/O que van del orden de los 2 a 5 Mhz por ejemplo el ACIA 68B50 utilizado para la comunicacion serie en el modulo de Z80 no me pudo funcionar a esa frecuencia de 7.3728 mhz indicado en el diagrama de referencia sino que a mucho menos y para que todo el sistema trabaje en armonia sin complicaciones se opto por que el reloj CLK fuera de 4 Mhz (lo probare proximamente a 6 Mhz) , y entonces para el caso del 8088 estandar este trabajaria tambien con una frecuencia proxima a los 5 Mhz (4.77 Mhz) con lo que todo el conjunto trabajaria sin ningun tiempo de espera extra .
En la tabla de la imagen queria mostrar la forma en que se podia combinar el uso de los 3 slots de memoria disponibles para este diseño , pero con las señales presentes de los buses el usuario hobbista tambien puede agregar su propia configuracion de memoria , memorias en presentacion DIP delgadas o en smd o quizas tenga a la mano una 62C64 y una 28C64 o con lo que le sea suficiente para practicar con este microprocesador.

En la Eeprom 28Cxx le instalare en una primera instancia solo el Bootloader tal como en el sistema del Z80 para poder cargarle los archivos hexadecimales compilados desde el Emu8086 y ya con eso pues se puede ir desarrollando una Bios o un sistema operativo mismo Opensource , o su propio S.O. a su gusto y si quieren lo bautizan con su nombre como por ejemplo S.O. Gudino8088 jeje, asi como hay versiones de compiladores para PIC o AVR yo quisiera una similar en C , Pascal, Basic que me generen un codigo hexadecimal libre del D.O.S , ojala apareciera el amigo Antiworldx para que nos de una mano en ese aspecto pues el ya tenia avanzado una gran parte de su S.O.
 
Allá por el 2003 aprox., cuándo comencé el 1er. procesador de 8bits CMOS, con su propio S.O., para evitar las pausas debido a las diferentes velocidades de los periféricos.
Simplemente, el sistema leía un registro específico para cada puerto, si el dato no estaba presente, continuaba con el ciclo, hasta que el dato era registrado. Para ello no usé interrupciones, dada la complejidad que implicaba hacerlo con lógica discreta.
En cbio. en la arquitectura que estoy realizando en 32bits, he creado un registro de estados, que lo llamé REGSTATE, en el que cada dispositivo posee un bit o bandera que cambia de estado, indicando que ocurrió algo, por ejem. si se pulsó una tecla, el bit de keyboard pasa a alto. Luego de leer el dato del registro, se borra el bit de estado por hardware.
Lo mismo ocurre para la A.L.U., el puerto USART, etc.
El REGSTATE, se lee al final de cada ciclo de programa, y se atiende al bit correspondiente que cambió, de ésta manera el programa luce cómo si ejecutara en multitarea.
 
Última edición:
Gudino alguna vez nos gustaria mirar esos esquematicos de su CPU de 8 bits , creo que a esa tecnica de explorar semaforos de los dispositivos para ver si se produjo algun cambio se le llama polling como alternativa a las interrupciones pero en cierta forma consume la atencion de la CPU a estar revisando periodicamente esos flags para atender un cambio, se ve complejo con logica combinacional poder atender todo ello con interrupciones, cargar algun vector y despues retornar a la direccion siguiente , una forma seria solo crearle una interrupcion o vector unico para todos esos flags en conjunto y de acuerdo a cual se activo saltar con un JMP a donde corresponda y luego intentar retornar al programa principal y no permita atender interrupciones anidadas sino podria desbordarse, pero si que de todas maneras la cosa esta para romperse la cabeza jeje.
Ando tambien ideando como poder construirle para mi sistema un modulo de dos o tres salidas PWM programables, mas o menos ya tengo una idea en el papel en el que o bien uso contadores programables y temporizadores o bien me apoyo en los PTC 8253 o PTC 8254 que contienen 3 contadores descendentes de 16 bits y agregandole hardware extra se tiene una aproximacion a salidas PWM digitales para controlar servos como los que se le conectan a un arduino.
Otro dolor de cabeza me va a parecer la preparacion de modulos I2C con el cual poder conectarse a infinidad de dispositivos I2C que existen como los sensores que se aplica en arduino , aqui si que habria que implementarles librerias de codigo para los diferentes dispositivos I2C pero hay que empezar con el diseño del modulo base I2C de donde partir.
El 8088 para atender interrupciones si que tiene una forma muy potente pero algo pesada de cada vez que se le interrumpa tiene que cargar una direccion completa de IP:CS osea 32 bits alojada en un vector programable y como el ACIA que recibe los datos via puerto serie genera una interrupcion por cada caracter recibido pues la cosa se le vuelve tediosa al CPU, por eso del ACIA evolucionaron a otros similares que contienen una cola de 16 bytes o quizas ahora mas para recibir los bytes y una vez llena la cola recien molestar a la CPU.

Bueno aqui ahora les muestro los diseños de los modulos de memoria RAM y EEPROM para este sistema minimo con 8088:
En la primera imagen podemos apreciar 4 modulos diseñados para alojar 4 tipos de chips RAM de diferentes capacidades, como son 8K, 32K, 128K y 512K, en el mismo cuerpo va indicado una etiqueta que dice "8088" para no confundirlas con otros modulos de memoria que sean para otra CPU por la disposicion de las señales, en lo posible trato de hacerlas compatibles pero a veces no es factible porque no puedes cubrir todos los requerimientos de diferentes señales de diferentes CPUs pero eso se hace mas notorio en los dispositivos I/O de cada familia, en cuanto a la RAM si hay mas factibilidad de ser intercambiables sus modulos porque son standar y se acomodan a los buses de las CPUs retro salvo por el ancho del bus de direcciones y la selecion de la ubicacion de los bancos en su mapa de memoria alli si habria ligeras modificaciones que hacerle, por ejemplo estos diseños de modulos de memoria practicamente deberia servir para la CPU MC68008 de bus de 8 bits con unas leves modificaciones siempre en cuando usemos tambien solo 1 mega en vez de toda su capacidad de 8 megas propia.
En los modulos de 8 K , 32 K y 128K podemos ver que en la esquina superior derecha hay 4 terminales , en esos pines se coloca un jumper de selecion para poder configurar a ese modulo si ocupa el primer banco de 128 K o el segundo banco de 128 K del mapa de memoria de esa forma podemos instalar dos modulos iguales de estos tres modelos, en cambio con la memoria de 512 Kbytes ya no lleva esos jumper de seleccion porque se considera como que con un solo banco se es suficiente para la mayoria de usos pero como ya mencione si es posible adicionar otro banco de 512 K pero hay que preparar la configuracion de su seleccion con mas circuitos logicos de apoyo o un GAL para que no interfiera con el espacio de la Eprom del ultimo banco superior , notese que este ultimo modulo de 512 Kbyte no lleva decodificador 74LS138 como los otros modulos sino solo requiere de una compuerta OR de un 74LS32.

Modulos RAM.jpg
Y ahora llegamos a la parte de la memoria no volatil donde puede residir nuestro Bootloader , nuestro firmware, Bios, servicios, Sistema Operativo etc etc, estos modulos estaran soportados sobre estos dos modelos de memoria Eeprom 28Cxx,
el primer modulo de 32K tambien es compatible con los pines de una 28C64 de 8K asi que podemos usarla indistintamente para cualquiera de ellas en este mismo modulo con zocalo de 28 pines, el otro modulo para memoria 28C512 es un poco inusual encontrarsela pero aun asi esta preparado este modulo por si se la tiene a la mano o se la pueda conseguir en tiendas online de China, al igual que los modulos de RAM en la parte derecha superior podemos ver tambien que tiene provisto unos pines para seleccionar con un jumper en que zona del mapa se situa es decir o bien el ultimo bloque o el penultimo y asi se puede colocar dos de estas tarjetitas de memoria , pero ademas hay una particularidad con estos modulos es que tienen un par de pines donde va un jumper , esos dos puntos dicen "write" porque colocando un jumper alli estamos habilitando la linea de escritura del bus de sistema osea la señal /WR, esto con la finalidad de poder colocar mediante la seleccion adecuada dos de estas tarjetas y jumpeando en una de ellas los terminales "write" podamos programarlo o escribir nuestros programas sobre ella sin necesidad de estar retirandolo y colocandolo en un programador , claro esto trabajaria a cierta velocidad baja del sistema que estaria por probarse pueda ser que trabaje bien a menos de 5 Mhz o se tenga que agregarle estados de espera para garantizar esa funcionalidad pero alli la tenemos presente. Algo que podria ser osado pero que se podria hacerce es tener conectado un solo modulo de memoria EEprom unico donde esta contenido nuestro Bootloader y dejando habilitado el jumper de escritura podria reprogramarse a si mismo mas funciones o aplicaciones pero claro con el riesgo de sobreescribirse alguna parte de codigo inadvertidamente o que se vaya a la deriva y aleatoriamente se sobreescriba el bootloader , Bios o S.O. y para corregir ese desastre tendriamos que volverle a cargar el codigo Bootloader desde un programador externo como el TL866.


Modulos EEPROM.jpg
 
Última edición:
Aquí <-- Puedes ver los esquemas en bloques sobre la arquitectura de 8bits.
No está completo cómo detalle.
Respecto al modo de sondear el registro de estado o polling cómo bien dices, en realidad no me consume gran tiempo del ciclo del programa.
Ya que, lo que hago es comparar el valor del registro del ciclo anterior, con el estado presente, si la comparación es diferente, pues ahí se produce un salto de rutina para atender dónde se produjo el cambio.

Aquí un ejemplo de vídeo juego, usando todos los recursos disponibles, leyendo teclado, refrescando la página de vídeo, cálculo en ALU, y cómo detalle adicional, el desplazamiento en el eje Y de la pelotita, lo hago con una variable en modo registro de desplazamiento por soft. Ya que no se había pensado en darle ésta utilidad, y todo ésto se ejecuta en un ciclo completo de programa.


No quiero quitarle protagonismo a tu tema.
Respecto al PWM, que quieres implementar, puedes hacer un contador preseteable, y cargas en él, el valor de ON y mediante otro contador que cuente el final del periodo de la señal de OFF. De sendos contadores surgen la señal de SET a un FF, y la señal de RESET respectivamente.
Entonces en la salida del FF, tendrás la señal de PWM.
El trabajo qué estás haciendo es loable de paciencia! Pocas personas he visto que realicen cosas así! Felicitaciones con ese proyecto, lo voy siguiendo todo el tiempo!
 
Última edición:
Le agradezco sus palabras amigo Gudino, en youtube he visto que hay muchas personas mas entusiastas que siguen enseñando o divulgando los retro microprocesadores, hay muchos videos sobre el Z80 y el 6502 (otros se preguntaran ya para que? ) , ahora hay muchos circuitos comerciales preparados en modulos compactos o tarjetas completas para que un hobbista armen su computadora retro por nostalgia o por aprendizaje, la mayoria de youtuber de retrocomputadoras son de habla inglesa y muy poco en español , eso tambien me motiva con este tema, los retro microprocesadores son tambien como una aficcion asi como tener o conservar coches antiguos jeje

Si habia visto sus esquemas en bloques pero queria ver si habia algun esquematico mas detallado ya sea en proteus y hasta simulable pero si no lo tiene parece que diseña como yo sus circuitos solo en un cuaderno borrador y de alli a lanzarlo al impreso jeje , sobre el PWM ojala los creadores del PTC 8253/54 le hubieran adicionado esa funcionalidad PWM a sus contadores se hubieran adelantado a su epoca , si estaba viendo tambien lo de los contadores y circuiteria logica pero estos podrian hacer el circuito mas engorroso y a la final solo tener un canal de PWM, asi que estoy analizando un poco mas como aprovechar esos 3 canales del chip del 8253 para usarlos como PWM con circuitos extras y sacarle tres canales de golpe, antes de la pandemia estabamos tan atareados con el trabajo de costumbre y rutinario que casi ni se tenia un respiro como para hecharle mano a proyectos de este tipo, por eso tambien que casi se quedo suspendido tantos años para continuarlo en mi caso y ahora por las circunstancias por causa de esta pandemia habiendo algo de tiempo por quedarse en casa uno y cada cual lo aprovecha de la manera como puede pues yo aprovecho para avanzar lo mas que se pueda para completar este proyecto del 8088 y de los demas micros.
Hay programas como el fritzing en el que se diseñan circuitos hasta de la manera mas caprichosa enviando las pistas por donde se puedan , por debajo, por encima, gruesos , delgados, rectos , curvos y despues enviarle los archivos a los chinos para que nos devuelvan unas tarjetas en un acabado profesional muy deseable pero los costos de cantidad y envios pues salen altos aun, asi que por ahora prefiero hacer mis diseños de esta manera monocara y con sus puentes con sencillez como para que otros interesados puedan facilmente replicarlos y aplicarlos de forma didactica mas que todo pues ya sabemos que para una aplicacion real o comercial tienen opciones mas potentes y modernas ,
Ademas construir modulos son muy practicos y nos evitan muchas selvas como la que encontre aqui en este video donde uno ajeno se termina perdiendo jeje

 
un compilador en ensamblador o en C para la familia intel de los 8085 - 8088
No es lo mismo! El 8085 es de 8 bits y el 8088 es de 16 bits.

Esto parece gratis para el 8085...si te funcionara el link. A mí nó: https://webcache.googleusercontent....=7&hl=es-419&ct=clnk&gl=ar&client=firefox-b-d
Este es otro que si está: azman/my1asm85

Para el 8088 va cualquiera que genere código para el 8086, como el Turbo C de Borland... por ahí aún se consigue gratis
 
Última edición:
En esta imagen les muestro el desarrollo de los modulos PPI, PIC, ACIA, PTC

La primera imagen corresponde al Controlador Programable de interrupciones , asi que el sistema contara con 8 lineas de peticion de interrupciones , una de las interrupciones corresponde o estara atendiendo la trasmision serial del Terminal de la PC cuando le va trasmitiendo los caracteres uno a uno , en un primer momento para poner a puesta la configuracion del 82C59 la comunicacion en serie se hara por la linea NMI interrupcion no enmascarable hasta dejar a punto la configuracion del 82C59 y luego se le conectara a la IRQ designada que en este caso es la IRQ2 , incluso uno podria usar la linea NMI y olvidarse del 82C59 pero no seria lo deseable y mas bien la linea NMI hay que usarla para otra finalidad de alta prioridad .

El modulo PPI es el mismo que se usa para el del Z80 pero con la configuracion de buses correspondiente al modulo del 8088, si se requiere podriamos hasta conectar dos modulos PPI por si se requiere mas salidas y seleccionar con jumper su direccion de habilitacion para evitar conflictos.

El modulo ACIA esta en dos versiones, con las pruebas que hize con el Z80 con la configuracion funcionando a 57600 baudios fue estable asi que esa sera la frecuencia de trabajo, tambien para este modulo se usara un cristal de 3.6864 Mhz, una version trabaja solo con esa velocidad de 57600 baudios mientras que la otra version lleva adicionalmente un 74LS90 contador de decadas configurado como divisor 6 con lo que la frecuencia se divide entre 6 y obtenemos 9600 baudios seleccionables mediante un jumper , esto por si se quiere trabajar con algun dispositivo que corre solo a esa velocidad de 9600 baudios, tambien se puede usar esa tarjeta y no colocarle el 74LS90 con lo que se comportaria como la tarjeta simplificada y ya cuando se requiera menor velocidad se le adiciona el divisor.

Y por ultimo vemos la imagen del PTC 8253 en desarrollo , para fines de temporizacion o generacion de señales periodicas , one shot, generador de onda cuadrada , temporizador o contador para lo cual tendriamos 3 channels, se me ocurre que se podria conectar una de las salidas al reset del sistema para utilizarlo como Watchdog asi como en los microcontroladores , otra de las salidas puede ser para conectarla a un amplificador como LM386 y a su parlantito para generar sonidos y el otro channel disponible para algun uso que se nos ocurra jeje


dispositivos InOut.jpg
 
Esta nota que se me aparecio mientras buscaba mas material del 8088 , esos japoneses parece que se enteraron que hay locos (como yo) por alli que siguen usando este chip que lo lanzan nuevamente pero mas para tenerlo como coleccion de la prehistoria de la computacion porque de conseguirle el resto de componentes para armar una PC XT completa esta mas remoto , alli dice que no se garantiza el funcionamiento del chip 8088-2 y mas es como para tener un adorno en tu escritorio para coleccionistas, osea no vayan a ser como las versiones chinas que pueden ser cualquier chip y lo han retiquetado nomas , en todo caso de que si sea un procesador funcional debieron hacerles un rediseñado con mejoras como que por dentro corra a 50 mhz o que incluya el coprocesador 8087 en su interior y algunos dispositivos mas o quizas un diseño que lo asemejen a un microcontrolador pero sin dejar su compatibilidad con el 8088 , pero bueno sino les es posible meterlo en una PC al menos lo pueden usar en artificios que andan por alli en internet o tambien hecharlo a andar con este sistema que andamos preparando pacientemente aqui en el foro jeje

 
Junto con la compra de los micros w65c816S tambien pedi cuatro de estas memorias HM628512 (dos en dos en diferentes tiendas) ademas de otros chips variados, estas memorias fueron las primeras que quize probar o testear en mi TL866 que las soporta como memoria ram standar 628512, de este resultado tendria un buen dia o no jeje, coloque la memoria en el zocalo y le di a testear , despues de unos segundos arrojo un error codigo 31 de que no reconoce o no lee dispositivo algo asi , habia comprado en total 4 de esas memorias que en la imagen se ven asi maltratadas , rayadas como si las hubieran lijado, pero curiosamente el nombre se ve bien , me da la impresion que han sido reetiquetadas, y bueno probe la segunda , la tercera y la cuarta, y todos dieron error codigo 31 entonces me dije "estos chinos la volvieron a hacer!!" pero se me ocurrio probar la configuracion de memoria standar 628256 y pues luego de las pruebas tambien arrojaron error de codigo 31 , ya me decia que parece que no sirven completamente , pero segui insistiendo y cambie la configuracion a memoria standar 628128 y ohhh sorpresa alli si pasaron la prueba los 4 olimpicamente con lo que se determina que son realmente memorias de 128 kilobytes y no 512 kilobytes como dice en el cuerpo, lo cual es dar gato por liebre y si tendria alegato para reclamarles no? , que mal porque ahora no podra implementar ese modulo de memoria de 512 Kbytes porque de seguro estas memorias reetiquetadas han inundado el mercado chino asi como lo estan haciendo con los sensores de temperatura LM35 que ya he comprado como 5 veces en diferentes tiendas y resultan ser simples transistores NPN , una tienda ahora puso en su aviso "seleccione version original o version china" y ni con eso porque en los comentarios se lee que igual les andan cabeceando porque asi pida uno originales que cuesta mas , igual les envian la version china reetiquetada jeje. en los comentarios de la tienda de estas memorias le han puesto recibido ok pero parece que no las han probado o es una loteria y para mala suerte me toco las truchas. si alguien las compra en alguna tienda online y comprueba que estan buenas osea son genuinas de capacidad 512 kbytes pues que nos pase el enlace

IMG_20201104_130829382.jpg


Y pues ya quedo tambien terminado el modulo de los temporizadores del PTC 8553/54 con lo que practicamente ya esta casi completo los modulos basicos para el sistema minimo con el 8088 , en la imagen se a dispuesto hacia la parte superior los tres canales del PTC agrupados de tres en tres es decir las señales OUT 0 , CLK0 y Gate 0 agrupados, lo mismo para el canal 1 y canal 2 con ligera separacion, ademas este modulo tiene su propio generador de señal clock que deberia ser de 1 mhz, la idea de que tenga su propio reloj propio es para que sea independiente de la velocidad del microprocesador al que si le hariamos trabajar hasta la velocidad que soporte, en la parte donde dice "clk" tenemos unos jumpers con los que se puede conectar la frecuencia principal de 1 mhz a la entrada CLK respectiva de cada contador y si no se conecta es porque el usuario piensa usar esa entrada CLK x con un reloj externo ya sea un timer 555 o cualquier otra señal , ademas tambien tenemos que la salida Out del canal 0 se deriva hacia el bus de señales y se conecta a la IRQ1 del 8259 del mismo modo que el ACIA 6850 se conecta al IRQ 2 , y pues solo habria que crearle su servicio de atencion para el vector que le corresponda, alli hay que seguir clamando por el forista Artiworldx para que aparezca jeje.
Bueno ya solo faltaria como modulos adicionales un ADC para el cual usaremos el ADC0808 de 8 bits de resolucion y pues el modulo de dispositivos I2C , aproposito Gudino para su super computadora de 32 bits tambien piensa implementarle una interface I2C? , bueno ahora solo faltaria construirlo todo en fisico y echarlo a andar con su bootloader respectivo, mas adelante viene la preparacion de la tarjeta principal en modo maximo con soporte para el 8087 que usaria los mismos modulos y slots del 8088 en modo minimo.

modulo 8253.jpg
 
Hola, en cuánto a nomenclatura de memorias, siempre se específica la capacidad en Kilobits.
Porque pueden venir organizadas en 8bits, 16bits o Word, etc
Por ejem. La memoria 62256, es una RAM estática de 32Kb x8 lo que arroja 256Kbits.
 
Gudino la memoria RAM que encargue es de capacidad total de 512 Kbytes osea 1/2 Megabyte o tambien 4000 kilobits aprox. en un solo chip, su codigo es HM628512 no 62512 que es diferente pero me enviaron una de 128 Kbytes que viene en el mismo empaque de 32 pines Dip por eso esta reetiquetada o disfrazada , ya los conozco a esos chinos no es la primera vez que hacen eso, cada cierto tiempo que les compro algo salen con alguna sorpresa incluso mandan chips muertos pero al comprar un lote de 10 que vengan 2 o 3 fallados o inservibles es hasta aceptable, si habia leido en los comentarios del producto que eran memorias de segunda pero la cosa era que funcionara a toda su capacidad y no recortada, alli le adjunto la datasheet de esta memoria que pedi pero que me enviaron gato por liebre , no mas cuando compre el microprocesador W65C816S se comentaba que era un R65C02 disfrazado o reetiquetados pero bueno ya cuando haga las pruebas de rigor me dare cuenta si me timaron en eso tambien jeje

HM628512.png

HM628512 512 Kbytes
 
Última edición:
Aqui haciendo correr el 8088 con un oscilador integrado de 4 mhz a travez de dos contadores CD4040 en cascada para ralentizarlo y pues no es tan imprescindible usar el generador de reloj 8284 por si no se consigue asi que alternativamente podria acondicionar la tarjeta principal a una version con oscilador de inversores y/o oscilador integrado de 4 pines, el oscilador con inversores seria para usar un cristal de baja velocidad de 4 a 6 Mhz y el oscilador integrado para frecuencias de 8 a 10 Mhz con la version 8088-1 , el que si es nesesario es el 74LS573 que pude comprobar que para este caso no se requiere de una compuerta inversora adicional para la señal ALE sino que va directo a su entrada latch para almacenar correctamente la direcciones multiplexadas, vaya que en la datasheet del 8088 he revisado las instrucciones de este microprocesador y no he encontrado la instruccion NOP o no existe para el 8088? pero bueno para andar la cuenta binaria del bus de direcciones le ingrese una instruccion CLC que ocupa un byte y lo que hace es borrar el acarreo una y otra vez asi que fue valido la prueba.

IMG_20201105_224931669.jpgIMG_20201105_224935075.jpg
 

Adjuntos

  • IMG_20201105_224907232.jpg
    IMG_20201105_224907232.jpg
    350.7 KB · Visitas: 1
  • IMG_20201105_224909972.jpg
    IMG_20201105_224909972.jpg
    350.1 KB · Visitas: 0
  • IMG_20201105_224920114.jpg
    IMG_20201105_224920114.jpg
    302 KB · Visitas: 2
Gran avance!!!🎊🎊
Referente a la instrucción NOP, lo que hago en mi arquitectura de 32bits, ya que tampoco implementé esa instrucción. Simplemente se trata de leer un dato cualquiera de cualquier registro.
En mi caso pierdo 2 ciclos de reloj.
 
Atrás
Arriba