Construyendo un 8088

Moderador: Fundadores

Avatar de Usuario
España_País_Vasco spark2k06
Demonio tercer orden
Demonio tercer orden
Mensajes: 871
Registrado: 16 Oct 2017, 10:18
Has thanked: 24 times
Been thanked: 114 times
Contactar:

Re: Construyendo un 8088

Mensaje por spark2k06 » 14 May 2020, 08:16

spark2k06 escribió:
23 Dic 2019, 07:19
He hecho una nueva corrección en la BIOS 0.9.7 de poca importancia. El caso es que con la tarjeta de RTC ausente también se mostraban y permitía llevar a cabo comandos de actualización de hora y fecha del RTC cuando evidentemente no servirían de nada, por tanto los oculto cuando éste se encuentra ausente:

Aquí tenéis disponible el fichero bios097.rom para su actualización con la aplicación uFLASH.

Aquí tenéis disponible los últimos fuentes hasta que Sergey decida hacer un merge en su repositorio oficial.
He actualizado uFLASH para dar soporte de timeout, lo cual permite el intercambio en caliente de la mitad de memoria que se va a programar, usando el switch correspondiente de la placa:



También he dejado disponibles los fuentes con los cambios en mi mi repositorio.

Avatar de Usuario
España_País_Vasco spark2k06
Demonio tercer orden
Demonio tercer orden
Mensajes: 871
Registrado: 16 Oct 2017, 10:18
Has thanked: 24 times
Been thanked: 114 times
Contactar:

Re: Construyendo un 8088

Mensaje por spark2k06 » 16 May 2020, 09:55

Una de las mejoras que quiero hacer en el software de uFLASH es poder grabar una imagen de 64Kb (o incluso más), actualmente el límite está en unos 61Kb debido al uso de la función malloc que asigna un buffer dentro del mismo segmento de datos:

Código: Seleccionar todo

	if ((buf = (unsigned char *) calloc (*rom_size, 1)) == NULL) {
		printf("ERROR: Failed to allocate %u bytes for input buffer: %s.\n",
		       *rom_size, strerror(errno));
		exit(5);
	}
Si se trata de asignar más memoria con este método provoca fallo y no se lleva a cabo. He intentado usar la función halloc disponible en Watcom C junto con un puntero tipo far*, parece que sí se asigna la memoria pero no estoy convencido de que lo haya hecho bien... no tengo muy claro cómo el programa selecciona el segmento y offsets adecuados para su gestión. Además hay otro problema, me interesa que después se pueda leer un fichero de 64Kb (o más) y guardarlo en dicho buffer pero la función fread parece que no acepta punteros de tipo far*. La cuestión es, alguien conoce un método que me pueda mostrar con un ejemplo que cargue un fichero de 64Kb o más y lo guarde en memoria en diferentes segmentos y se pueda acceder a éstos sin problema en un programa de MS-DOS de 16 bits que corre en un 8088? Por más que trato de buscar en Internet no encuentro nada.

Por cierto, la opción de ir cargando desde el fichero en bloques menores para almacenar en memoria no me interesa utilizar, quiero seguir conservando la posibilidad de hacer cambio en caliente de la mitad de memoria a flashear, y una vez hecho el cambio no es posible hacer llamadas a la BIOS (las lecturas de disco la hacen) y debe estar todo precargado en memoria.

Avatar de Usuario
España_Asturias alvaroalea
Demonio tercer orden
Demonio tercer orden
Mensajes: 752
Registrado: 25 Oct 2014, 12:49
Ubicación: Asturias, Paraiso Natural
Has thanked: 5 times
Been thanked: 58 times
Contactar:

Re: Construyendo un 8088

Mensaje por alvaroalea » 16 May 2020, 18:17

Y digo yo... asi pensando en voz alta, y sin tener ni pajolera idea idea:
el problema de que no te da mas de 61Kb de memoria es por la segmentacion, no encuentra un trozo de memoria suficientemente grande, pero si deberia dejarte reservar 2 trozos de 32Kb simultaneos ¿no? cargas a la vez medio fichero en cada uno, y luego cuando grabas, como esta todo en memoria no necesitas la bios.

Avatar de Usuario
España_País_Vasco spark2k06
Demonio tercer orden
Demonio tercer orden
Mensajes: 871
Registrado: 16 Oct 2017, 10:18
Has thanked: 24 times
Been thanked: 114 times
Contactar:

Re: Construyendo un 8088

Mensaje por spark2k06 » 16 May 2020, 19:36

alvaroalea escribió:
16 May 2020, 18:17
Y digo yo... asi pensando en voz alta, y sin tener ni pajolera idea idea:
el problema de que no te da mas de 61Kb de memoria es por la segmentacion, no encuentra un trozo de memoria suficientemente grande, pero si deberia dejarte reservar 2 trozos de 32Kb simultaneos ¿no? cargas a la vez medio fichero en cada uno, y luego cuando grabas, como esta todo en memoria no necesitas la bios.
Tampoco funciona así:

Código: Seleccionar todo

	if ((buf1 = calloc (32768, 1)) == NULL) {	
		printf("ERROR: Failed to allocate %lu bytes for input buffer 1: %s.\n",
		       32768, strerror(errno));
		exit(5);
	}
	
	if ((buf2 = calloc (32768, 1)) == NULL) {	
		printf("ERROR: Failed to allocate %lu bytes for input buffer 2: %s.\n",
		       32768, strerror(errno));
		exit(5);
	}
Resultado:

Código: Seleccionar todo

ERROR: Failed to allocate 32768 bytes for input buffer 2: No error

Avatar de Usuario
España_Asturias alvaroalea
Demonio tercer orden
Demonio tercer orden
Mensajes: 752
Registrado: 25 Oct 2014, 12:49
Ubicación: Asturias, Paraiso Natural
Has thanked: 5 times
Been thanked: 58 times
Contactar:

Re: Construyendo un 8088

Mensaje por alvaroalea » 18 May 2020, 00:03

Y estas utilizando los modelos de memoria compact o large?
https://users.pja.edu.pl/~jms/qnx/help/ ... odels.html

Avatar de Usuario
España_País_Vasco spark2k06
Demonio tercer orden
Demonio tercer orden
Mensajes: 871
Registrado: 16 Oct 2017, 10:18
Has thanked: 24 times
Been thanked: 114 times
Contactar:

Re: Construyendo un 8088

Mensaje por spark2k06 » 18 May 2020, 05:17

alvaroalea escribió:
18 May 2020, 00:03
Y estas utilizando los modelos de memoria compact o large?
https://users.pja.edu.pl/~jms/qnx/help/ ... odels.html
Si, el proyecto original es compact, pero también he usado parte y el resultado es el mismo.

Avatar de Usuario
España_País_Vasco spark2k06
Demonio tercer orden
Demonio tercer orden
Mensajes: 871
Registrado: 16 Oct 2017, 10:18
Has thanked: 24 times
Been thanked: 114 times
Contactar:

Re: Construyendo un 8088

Mensaje por spark2k06 » 18 May 2020, 11:31

He hecho una pequeña modificación en la BIOS para mostrar código POST en tiempo real a través del acceso directo a la memoria de vídeo mientras se ejecuta la BIOS, funciona tanto en la versión de micro8088 como en xi8088:

Pull request en GitHub


Avatar de Usuario
España Ben-kenobi
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3368
Registrado: 12 Nov 2013, 10:00
Has thanked: 2 times
Been thanked: 44 times
Contactar:

Re: Construyendo un 8088

Mensaje por Ben-kenobi » 22 May 2020, 12:11

perdon por mi ignorancia , pero eso para que es?
Quieres vinilos para makear tu spectrum? Mira Aqui

Avatar de Usuario
España_País_Vasco spark2k06
Demonio tercer orden
Demonio tercer orden
Mensajes: 871
Registrado: 16 Oct 2017, 10:18
Has thanked: 24 times
Been thanked: 114 times
Contactar:

Re: Construyendo un 8088

Mensaje por spark2k06 » 22 May 2020, 12:59

Ben-kenobi escribió:
22 May 2020, 12:11
perdon por mi ignorancia , pero eso para que es?
Para visualizar los códigos POST que se envían desde la BIOS durante su ejecución, aquí tienes la actual lista de códigos del proyecto:

https://github.com/skiselev/8088_bios/b ... /errno.inc

Aunque sólo se visualizarán obviamente los que se produzcan tras la inicialización de la tarjeta de vídeo. Para verlos todos, desde el primer momento que lo enciendes o reinicias el equipo necesitas una tarjeta como ésta:

Imagen

Mas información sobre los códigos POST aquí. Para el usuario medio no es que sea especialmente útil, más cuando con mi modificación sólo muestra los códigos tras la inicialización de la tarjeta de vídeo pero para mí como desarrollador sí que lo es, me puede venir bien en determinados casos para depuración. Por esta misma razón, a Sergey no parece interesarle mucho esta opción y he creado un fork de su proyecto con la misma activada de forma opciónal:

1. Binarios
2. Código fuente

Avatar de Usuario
España_País_Vasco spark2k06
Demonio tercer orden
Demonio tercer orden
Mensajes: 871
Registrado: 16 Oct 2017, 10:18
Has thanked: 24 times
Been thanked: 114 times
Contactar:

Re: Construyendo un 8088

Mensaje por spark2k06 » 27 May 2020, 19:39

Nueva actualización de uFLASH, utilidad para flashear una ROM de la BIOS desde nuestro Micro8088, sin necesidad de programador externo. Las novedades son:

1. Posibilidad de flashear imágenes de hasta 64Kb, el máximo direccionable de la memoria que lleva.

2. Ahora la visualización de la cuenta atrás para cambio de mitad de memoria en caliente se lleva a cabo directamente a través de la memoria de video, de manera que si esta otra mitad no contiene ninguna BIOS previa o se encuentra corrupta, no haya problema por el acceso a interrupciones, puesto que antes de la visualización ya se deshabilitan.

Imagen

https://github.com/spark2k06/micro_8088 ... aster/BIOS

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado