Proyecto ZX-Apple-81

dancresp
Mensajes: 4992
Registrado: 13 Nov 2010 02:08
Agradecido : 14 veces
Agradecimiento recibido: 83 veces

Proyecto ZX-Apple-81

Mensajepor dancresp » 22 Nov 2016 10:40

Steve Wozniak programó, como sistema operativo para su Apple-I, un programa monitor que solo ocupa 256 bytes, en assembler del 6502.
Este programa monitor permite hacer volcados de memoria, modificar la memoria y ejecutar programas.

Para refrescar un poco el assembler del Z80, estoy programando una versión para mi ZX-81 1K, que funcionará igual.
Y para rizar el rizo, en ningún caso puede ocupar más de esos 256 bytes, y como no... lo estoy ensamblando a mano.

El programa muestra 8 bytes por linea (equippo con 16 KB), pero con un POKE se puede hacer que solo muestre 4, de forma que funcionará perfectamente en un equipo con 1 KB, ya que ahorro casi la mitad de la memoria de vídeo.

Ahora mismo el esquema de memoria es el siguiente:

16514 - Zona de 10 bytes para las variables necesarias por el programa monitor.
16524 - Rutina PRTHEX: 15 bytes. Muestra en formato hexadecimal el valor del registro A.
16539 - Rutina DUMP: 46 bytes. Vuelca en pantalla el contenido de la memoria entre las direcciones HL a DE.
16585 - Rutina CR+LF: 19 bytes. Al final de cada línea de DUMP se hace un salto de línea y un SCROLL si llega al final de la pantalla.

Y aquí tengo un problema: Cuando llega a la fila 21, hago un CALL 3086 (CD0E0C) para ejecutar la rutina SCROLL de la ROM, pero... no hace nada.

¿Alguien sabe el porqué? -nb

Os iré informando, pero para ir abriendo boca...

Cargador CM en BASIC:
Apple-81_1.gif
Apple-81_1.gif (71.89 KiB) Visto 668 veces


Versión 1K:
Apple-81_3.gif
Apple-81_3.gif (55.58 KiB) Visto 668 veces


Versión 16K:
Apple-81_2.gif
Apple-81_2.gif (52.96 KiB) Visto 668 veces


Y así se ve el del Apple-I:
monitor_2.gif
monitor_2.gif (43.18 KiB) Visto 667 veces

Avatar de Usuario
minter
Mensajes: 1310
Registrado: 22 Jul 2014 18:51
Agradecido : 530 veces
Agradecimiento recibido: 274 veces

Re: HELP Ensamblador ZX-81: Proyecto ZX-Apple-81

Mensajepor minter » 22 Nov 2016 13:49

Que manera más curiosa que tiene el ZX81 de meter datas
Como siempre que nos sucede al meter DATAS... están bien metidos?

Acostumbrado al bucle READ A : POKE MEMORIA+I, A : NEXT del commodore...

Avatar de Usuario
Josepzin
Mensajes: 956
Registrado: 31 Oct 2010 10:46
Ubicación: Arjensuela
Agradecimiento recibido: 18 veces
Contactar:

Re: HELP Ensamblador ZX-81: Proyecto ZX-Apple-81

Mensajepor Josepzin » 22 Nov 2016 15:01

Que máquina eres....

dancresp
Mensajes: 4992
Registrado: 13 Nov 2010 02:08
Agradecido : 14 veces
Agradecimiento recibido: 83 veces

Re: HELP Ensamblador ZX-81: Proyecto ZX-Apple-81

Mensajepor dancresp » 22 Nov 2016 23:38

minter escribió:Que manera más curiosa que tiene el ZX81 de meter datas
Como siempre que nos sucede al meter DATAS... están bien metidos?

Acostumbrado al bucle READ A : POKE MEMORIA+I, A : NEXT del commodore...

Su pobre ROM de 8 KB no da para más, pero visto lo visto, no deja de sorprender.

Por cierto, he arañado unos bytes y he comprobado que en 1 KB funciona a pantalla "casi" completa.
En lugar de 4 columnas puedo poner 6, sin el clásico error 4.

Apple-81_4.gif
Apple-81_4.gif (88.75 KiB) Visto 623 veces


¿Por cierto, alguien sabe algo del tema del SCROLL?

-nb

Avatar de Usuario
minter
Mensajes: 1310
Registrado: 22 Jul 2014 18:51
Agradecido : 530 veces
Agradecimiento recibido: 274 veces

Re: HELP Ensamblador ZX-81: Proyecto ZX-Apple-81

Mensajepor minter » 23 Nov 2016 00:14

Mira a ver si puede ser la pos 0C55

Nos quedaría CD0C55 en vez la de 0E0C....

Ostia putes! que esto es del ZX spectrum. -banghead

No bueno, ahora en serio.

En tu cargador en BASIC no localizo el CALL a scroll (la cadena CD0E0C). (O estoy con los ojos cansados o no lo veo)

Anda, coñes, que ahora me doy cuenta... ¿¿¿te refieres a meter el comando directo???

Avatar de Usuario
minter
Mensajes: 1310
Registrado: 22 Jul 2014 18:51
Agradecido : 530 veces
Agradecimiento recibido: 274 veces

Re: HELP Ensamblador ZX-81: Proyecto ZX-Apple-81

Mensajepor minter » 23 Nov 2016 10:49

tendra algo que ver la pila? Se quedará sin espacio para realizar la rutina?
Haciendo una llamada sin haber cargado el programa tuyo funciona la llamada al scroll? Se puede invocar desde el basic?

dancresp
Mensajes: 4992
Registrado: 13 Nov 2010 02:08
Agradecido : 14 veces
Agradecimiento recibido: 83 veces

Re: HELP Ensamblador ZX-81: Proyecto ZX-Apple-81

Mensajepor dancresp » 23 Nov 2016 11:19

minter escribió:En tu cargador en BASIC no localizo el CALL a scroll (la cadena CD0E0C).

Ahora mismo tengo que por defecto el volcado lo haga sobre la zona donde está almacenado el programa, para de esta forma poder revisar los códigos hexadecimales.

Si miras la última imagen, veras una la linea que empieza por "40D0:". En las columnas 2,3 y 4 aparece el código del CALL del SCROLL. Pero como digo, no hace nada.

Por otro lado, uso los 32 bytes del búffer de la impresora como buffer de entrada del teclado (rutina no hecha), pero ya tengo funcional la rutina que pasa dos dígitos hexadecimales a su valor numérico, que guardo en el registro A. La rutina ocupa 34 bytes.

Con todo esto, el programa ya ocupa la friolera de 107 bytes !!! -shock

El los 148 bytes restantes tengo que meter las rutinas de proceso de la linea de entrada, lectura del teclado y ejecutar los 3 comandos disponibles.

A ver si hay suerte... -thumbup

jltursan
Mensajes: 1876
Registrado: 20 Sep 2011 13:59
Agradecido : 47 veces
Agradecimiento recibido: 141 veces

Re: HELP Ensamblador ZX-81: Proyecto ZX-Apple-81

Mensajepor jltursan » 23 Nov 2016 18:34

Me temo que deberás seguir con el depurador de un emulador de ZX-81 (¿los habrá con depurador, no?) la ejecución de esa rutina de la ROM y ver porque en ese caso parece no obedecer. Por supuesto compara antes la ejecución con la de uno de los scrolles que funcionan...

dancresp
Mensajes: 4992
Registrado: 13 Nov 2010 02:08
Agradecido : 14 veces
Agradecimiento recibido: 83 veces

Re: HELP Ensamblador ZX-81: Proyecto ZX-Apple-81

Mensajepor dancresp » 24 Nov 2016 09:32

jltursan escribió:Me temo que deberás seguir con el depurador de un emulador de ZX-81 (¿los habrá con depurador, no?) la ejecución de esa rutina de la ROM y ver porque en ese caso parece no obedecer. Por supuesto compara antes la ejecución con la de uno de los scrolles que funcionan...

Aparentemente el programa ya ejecuta los 3 comandos, pero lo estoy depurando para intentar ganar unos bytes para poder meter la rutina de lectura del teclado.

También he de hacer pruebas del tema del SCROLL porque, cosas de ensamblar a mano y boli, los saltos relativos hacia adelante los hacía mal y ponía un byte de más.

Y estoy experimentando con el depurador del "Eightyone" para ver realmente que hace, pero sorprendentemente, la mayoría de las rutinas me han funcionado a la primera.

Avatar de Usuario
minter
Mensajes: 1310
Registrado: 22 Jul 2014 18:51
Agradecido : 530 veces
Agradecimiento recibido: 274 veces

Re: HELP Ensamblador ZX-81: Proyecto ZX-Apple-81

Mensajepor minter » 24 Nov 2016 11:50

me pareece sorprendente la capacidad que tienes para simplificar y depurar para crear programas.
Solo hay que ver como tienes organizados tus equipos para darse cuenta que te gusta aprovechar los recursos al maximo.
Seguro que echas pestes del vbasic y vC, cuando compilas esos programas tan grandes. Yo me cagé en la madre que los pario con los directx, cuando me dedicaba a programar bajo msdos siguiendo un curso muy antiguo de dos chicos que se llamaba ... CPV.

dancresp
Mensajes: 4992
Registrado: 13 Nov 2010 02:08
Agradecido : 14 veces
Agradecimiento recibido: 83 veces

Re: HELP Ensamblador ZX-81: Proyecto ZX-Apple-81

Mensajepor dancresp » 25 Nov 2016 13:53

He conseguido reducir la zona de variables de 10 bytes a 3 bytes, y de la rutina de DUMP he ahorrado 3 bytes más.

Con todo, el intérprete de comandos ocupa 95 bytes, y me quedan 39 bytes libres para meter la rutina de los comandos.

Que dios me coja confesado, pero esto casi está !!!

Avatar de Usuario
Josepzin
Mensajes: 956
Registrado: 31 Oct 2010 10:46
Ubicación: Arjensuela
Agradecimiento recibido: 18 veces
Contactar:

Re: HELP Ensamblador ZX-81: Proyecto ZX-Apple-81

Mensajepor Josepzin » 25 Nov 2016 15:24

39 bytes... :O

dancresp
Mensajes: 4992
Registrado: 13 Nov 2010 02:08
Agradecido : 14 veces
Agradecimiento recibido: 83 veces

Re: HELP Ensamblador ZX-81: Proyecto ZX-Apple-81

Mensajepor dancresp » 25 Nov 2016 17:12

Mi primera rutina de entrada de comandos ocupa 50 bytes !!!

Dios mio, necesito 11 bytes.

Fracaso a la vista.

Avatar de Usuario
eltargui
Mensajes: 197
Registrado: 06 Feb 2014 18:38
Agradecido : 20 veces
Agradecimiento recibido: 23 veces

Re: HELP Ensamblador ZX-81: Proyecto ZX-Apple-81

Mensajepor eltargui » 25 Nov 2016 20:29

A ver si hay suerte....Necesito tus programas para seguir con el ZX81 -thumbup

dancresp
Mensajes: 4992
Registrado: 13 Nov 2010 02:08
Agradecido : 14 veces
Agradecimiento recibido: 83 veces

Re: HELP Ensamblador ZX-81: Proyecto ZX-Apple-81

Mensajepor dancresp » 25 Nov 2016 21:35

Conseguido.

Avatar de Usuario
Chema
Mensajes: 1514
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 408 veces
Agradecimiento recibido: 180 veces
Contactar:

Re: HELP Ensamblador ZX-81: Proyecto ZX-Apple-81

Mensajepor Chema » 25 Nov 2016 22:18

Genial! Tío eres un crack!


Volver a “Sinclair ZX80/81”

¿Quién está conectado?

Usuarios navegando por este Foro: Jinks y 1 invitado