Varias dudas

Todo sobre la creación, diseño y programación de nuevo software para
nuestro Spectrum

Moderador: Sir Cilve Sinclair

Varias dudas

Notapor Jake Speed el Mie Jul 29, 2015 8:37 pm

Hola ZXeros :) Hace tiempo ya me hice con un flamante +2 a estrenar, y desde entonces vengo jugando a mil juegos, cargando mil pokes y leyendo mil cosas, y como es lógico, teniendo en cuenta que no trasteé estos cacharros en mi infancia, me surgen mil dudas... aclaro que trabajo sobre un Spectrum "en vivo" sin emuladores ni nada de eso, 128 kb y gracias.

-Para practicar programación, estoy haciendo viejos ejercicios, trucos y juegos que venían en esa gran revista que fue y será Microhobby... la mayoría de los juegos traen un pequeño apartado denominado "notas graficas" con simbolitos graficos asociados a letras, lo que es motivo de frustracion para mi... porque si, por ejemplo, tenemos que A es o deberia ser un monigote con forma humana, yo pulso GRAF, pulso A, y solo obtengo una bonita A mayuscula. ¿Los graficos venian en la cinta de microhobby, quizas, o como demonios los conseguiais? :roll:

También hay palabras que vienen "subrayadas" en negrita, o sea no subrayadas sino inmersas en una raya negra, y lo jodío es que hay mucho código así, y no tengo ni idea de como se hace... :x

-Aunque la mayoria de instrucciones, sentencias, bucles, etc, ya las entiendo y domino porque programo en C, hay comandos del Spectrum que me tienen maravillado. DATA, por ejemplo. Te viene DATA seguido de un montón de números. ¿Para que demonios sirve? ¿Esos numeros que son, direcciones de memoria? Es que, mirando algunos juegos que lo incluyen, me maravilla y me aterra, ¿como sabia la gente lo que tenia que poner? :roll: Tres cuartos de lo mismo con POKE, que si, lo tengo bien usado para meter mis trucos en el Abu Simbel :mrgreen: pero no entiendo de donde salen. ¿Son bugs de los programas, aprovechables por terceros que los descubren? ¿Estuvieron ahi siempre, los dejaron sus creadores?

-Sobre todo... Código máquina. Uno de mis grandes retos en el futuro es aprender codigo máquina en el Spectrum. Creo que es ideal aprender codigo maquina, ensamblador o como le digan, en una computadora de 8 bytes, donde realmente puedes saber y controlar de los procesos de la máquina, cosa que en un PC moderno con terabytes de espacio, gigas de RAM, miles de procesos abiertos... no considero ni posible.
Pero no entiendo "como" se programaba en codigo maquina. O sea, ¿se programa en el mismo ""IDE"" donde se programa BASIC? Me suena, por cosas dispersas que he leido, que primero se metian instrucciones en BASIC y luego ya escribias en codigo máquina, ¿es asi? No hace falta ningun programa mas... ¿o si? Me interesa mucho saberlo, aunque no me pondré con Codigo maquina hasta que domine BASIC, que aún me falta.

Os agradeceré cualquiera de estas dudas que me podía resolver :wink:
Jake Speed
rst 0
 
Mensajes: 16
Registrado: Mar Ene 21, 2014 6:04 pm

Re: Varias dudas

Notapor zup el Mie Jul 29, 2015 11:05 pm

Jake Speed escribió:... porque si, por ejemplo, tenemos que A es o deberia ser un monigote con forma humana, yo pulso GRAF, pulso A, y solo obtengo una bonita A mayuscula. ¿Los graficos venian en la cinta de microhobby, quizas, o como demonios los conseguiais? :roll:


Lo haces bien. Los gráficos se almacenan en un área de la memoria, y hasta que no la cambia el programa guarda las primeras 21 letras. Si tecleas bien el programa, lo ejecutas y pulsas BREAK descubrirás que todas las "notas gráficas" han cambiado mágicamente a lo que muestra la revista.

Jake Speed escribió:También hay palabras que vienen "subrayadas" en negrita, o sea no subrayadas sino inmersas en una raya negra, y lo jodío es que hay mucho código así, y no tengo ni idea de como se hace... :x


Esa es la segunda versión de las notas gráficas. Para no dejarte los ojos, decidieron que todos los subrayados se introduzcan desde el modo gráfico.

Ten en cuenta, además, que el 48k tiene 21 UDG, pero el 128k solo 19. Si en un listado te encuentras con que tienes que usar la T o la U desde modo gráfico, mejor teclea esas líneas en modo 48k y ejecuta el programa desde modo 48k.

Jake Speed escribió:-Aunque la mayoria de instrucciones, sentencias, bucles, etc, ya las entiendo y domino porque programo en C, hay comandos del Spectrum que me tienen maravillado. DATA, por ejemplo. Te viene DATA seguido de un montón de números. ¿Para que demonios sirve? ¿Esos numeros que son, direcciones de memoria?


Para nada y para todo. DATA está íntimamente relacionado con RESTORE y READ, y son definiciones de datos. Cuando tu usas READ A (por ejemplo), metes un número de una línea DATA. Cuando vuelves a hacer READ, lees el siguiente... y así hasta que se te acaben los números (o cadenas, puedes hacer READ A$).

RESTORE cambia el puntero de READ a la línea que indiques. Por ejemplo, RESTORE 7000 haría que READ lea el siguiente número en una línea DATA a partir de la 7000.

Jake Speed escribió:Es que, mirando algunos juegos que lo incluyen, me maravilla y me aterra, ¿como sabia la gente lo que tenia que poner?


Porque son sus datos. Si tu quisieras guardar los días de los meses, podrías hacer DATA 31,28,31... a grandes rasgos, los DATA son las constantes de los programas.

Jake Speed escribió: Tres cuartos de lo mismo con POKE, que si, lo tengo bien usado para meter mis trucos en el Abu Simbel :mrgreen: pero no entiendo de donde salen. ¿Son bugs de los programas, aprovechables por terceros que los descubren? ¿Estuvieron ahi siempre, los dejaron sus creadores?


No, y no. Imagina que haces en C un juego de naves. Cuando tu nave choca, harías una instrucción del tipo vidas=vidas-1, vidas --... ese tipo de cosas. En ensamblador del Spectrum, eso sería algo del estilo

Código: Seleccionar todo
...
ld a,(vidas)
dec a
jr z, game_over
...


Si yo machacho la instrucción "dec a" (que decrementa el valor de a), cuando te maten el ordenador no te quitará la vida y nunca llegarás al GAME OVER. En síntesis, lo que hacen los POKEs de la Microhobby: cambian instrucciones del programa para que "olvide" descontar vidas, o te ponga x vidas al inicio del programa, o esas cosas.

Jake Speed escribió:Sobre todo... Código máquina. Uno de mis grandes retos en el futuro es aprender codigo máquina en el Spectrum. Creo que es ideal aprender codigo maquina, ensamblador o como le digan, en una computadora de 8 bytes, donde realmente puedes saber y controlar de los procesos de la máquina, cosa que en un PC moderno con terabytes de espacio, gigas de RAM, miles de procesos abiertos... no considero ni posible.


El c/m se usaba porque, como habrás descubierto, el BASIC del Spectrum es leeeeento. En un PC, no se programa directamente así porque es un coñazo... y muchos compiladores de C generan código máquina más rápido que lo que hacen los programadores medios.

Jake Speed escribió:Pero no entiendo "como" se programaba en codigo maquina. O sea, ¿se programa en el mismo ""IDE"" donde se programa BASIC? Me suena, por cosas dispersas que he leido, que primero se metian instrucciones en BASIC y luego ya escribias en codigo máquina, ¿es asi? No hace falta ningun programa mas... ¿o si? Me interesa mucho saberlo, aunque no me pondré con Codigo maquina hasta que domine BASIC, que aún me falta.


Un Spectrum a pelo no tiene ningún ensamblador integrado (un ensamblador es el equivalente de un compilador de C... le metes por un lado instrucciones en ensamblador y por otro lado escupe el código máquina). Tendrías que descargar uno y aprender a usarlo (Microhobby tenía alguno). A día de hoy, no es buena idea seguir ese camino. En c/m tienes el control total de la máquina... y eso significa que es un camino lleno de reseteos (si te equivocas, y créeme que todo el mundo lo hace).

A finales de la vida útil del Spectrum, las casas de software usaban entornos de desarrollo en PC, que les permitían general el código en un PC (más rápido) y poder hacer el burro sin problemas (porque si el Spectrum se colgaba siempre tenían todo el código bien guardadito en el PC).

Hoy en día tenemos emuladores con ensamblador (personalmente me encanta ZX Spin para esas cosas), que te permitirán hacer tus pinitos con el ensamblador del Spectrum sin que te den ganas de tirarlo por la ventana (lo que pasa cuando llevas toda la tarde programando y logras bloquear el Spectrum sin haber guardado primero). Yo creo que este es el camino a seguir si vas a programar en Spectrum: hacerlo en un emulador y, cuando lo tengas ya terminado y sin bugs, lo grabas en cinta desde el PC y se lo sueltas a la máquina real.

Una alternativa bastante popular, si el ensamblador se te atraganta, es usar un compilador de BASIC. Te convierte el BASIC a c/m (con lo que se ejecuta más rápido) y no tienes que aprender demasiadas cosas nuevas.
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start...
zup
Freddy Hardest
 
Mensajes: 637
Registrado: Vie Ago 15, 2008 2:43 pm

Re: Varias dudas

Notapor Jake Speed el Jue Jul 30, 2015 4:49 pm

Muchas gracias por contestar! Además, todo muy claro y bien explicado. Sobre todo las notas gráficas, que me tenían intrigadísimo :D Si me surge alguna duda más en el futuro la iré poniendo aquí.
Jake Speed
rst 0
 
Mensajes: 16
Registrado: Mar Ene 21, 2014 6:04 pm

Re: Varias dudas

Notapor Ivanzx el Jue Jul 30, 2015 6:32 pm

No puedo ayudarte en los temas técnicos, pero da alegría ver posts como este de vez en cuando que te re-animan a seguir en la escena, sobre todo viendo como gente como tú, que nunca había tocado un Spectrum, se anima a meterse en el tema :)

Esperando a tus futuros programas! ;)
Ivanzx
Nonamed
 
Mensajes: 1185
Registrado: Lun May 07, 2007 12:11 pm
Ubicación: Frankfurt, Germany


Volver a Programación y nuevos desarrollos

¿Quién está conectado?

Usuarios navegando este Foro: Google [Bot] y 4 invitados

cron