¿Qué me recomendais?
Moderador: Sir Cilve Sinclair
- Alxinho
- Freddy Hardest
- Mensajes: 896
- Registrado: Mar Jun 19, 2007 11:20 am
- Ubicación: Barcelona
- Contactar:
¿Qué me recomendais?
Llevo un tiempecillo asimilando el assembler con el curso de Sromero para aprender esta forma de programar más profesional y me gustaría comprarme un libro en español pero no se cuál. ¿Hay alguno en especial que sea el mejor o cualquiera me vale?
Retrobytes Productions --> http://retrobytesproductions.blogspot.com.es
Soy un tío feliz, más que nada ... porque me sale más a cuenta.
Soy un tío feliz, más que nada ... porque me sale más a cuenta.
- oblo
- Sabreman
- Mensajes: 327
- Registrado: Lun Feb 07, 2011 9:53 am
Re: ¿Qué me recomendais?
En mis años mozos me puse con el curso de Microhobby; no es un libro como tal pero se aprende bastante. Ya más en español poca cosa, aunque si te vale en inglés hay unos cuantos en WoS.
salu2
salu2
- JBGV
- Manic Miner
- Mensajes: 279
- Registrado: Vie Feb 11, 2011 9:16 am
Re: ¿Qué me recomendais?
Hola, yo también consulto el curso de SRomero y el Libro de "Código máquina zx spectrum" de indescomp.
En WOS y en la página del Trastero del spectrum tienes un montón de libros completamente digitalizados , yo rebusco por alli.
En WOS y en la página del Trastero del spectrum tienes un montón de libros completamente digitalizados , yo rebusco por alli.
-
- Jack The Nipper
- Mensajes: 146
- Registrado: Mar May 07, 2013 9:42 am
Re: ¿Qué me recomendais?
Por aquí:
http://wiki.speccy.org/cursos/ensamblador/indice
Esto es más entretenido que hacer sudokus.
¡Bienvenido amigo!
EDITADO:
Ah! Vale! que es el mismo de sromero.
En Amazon he visto alguno de segunda mano in inglis, pero si tienes una tablet, no hay nada mejor que descargarte los de micro hobby y estudiarlo en la cama como yo. =o)
Enviado con Tapatalk
http://wiki.speccy.org/cursos/ensamblador/indice
Esto es más entretenido que hacer sudokus.
¡Bienvenido amigo!
EDITADO:
Ah! Vale! que es el mismo de sromero.
En Amazon he visto alguno de segunda mano in inglis, pero si tienes una tablet, no hay nada mejor que descargarte los de micro hobby y estudiarlo en la cama como yo. =o)
Enviado con Tapatalk
-
- Jack The Nipper
- Mensajes: 146
- Registrado: Mar May 07, 2013 9:42 am
Re: ¿Qué me recomendais?
Perdón por añadir un post seguido:
Aquí tengo algo muy interesante para cuando quieras animar sprites con desplazamientos de 1, 2 o x pixels, puedes aplicarlo de forma inmediata por cada frame o precalculadas, tendrás que considerar también posteriormente las máscaras si lo aplicas, pero he aprendido mucho sólo con estudiar estas microrutinas:
http://www.chilliant.com/z80shift.html
Enviado con Tapatalk
Aquí tengo algo muy interesante para cuando quieras animar sprites con desplazamientos de 1, 2 o x pixels, puedes aplicarlo de forma inmediata por cada frame o precalculadas, tendrás que considerar también posteriormente las máscaras si lo aplicas, pero he aprendido mucho sólo con estudiar estas microrutinas:
http://www.chilliant.com/z80shift.html
Enviado con Tapatalk
-
- Manic Miner
- Mensajes: 215
- Registrado: Vie Jun 08, 2007 9:42 am
- Ubicación: En un lugar de la mancha
- Contactar:
Re: ¿Qué me recomendais?
Para rematar la faena te recomiendo también los "artículos de discusion" de este foro (por llamarlos de alguna forma)
Son acerca de optimizaciones, no todas ellas incluidas en los documentos de SRomero.
Curso ASMZ80 XV: Gráficos en Spectrum (III): Sprites Lowres
viewtopic.php?f=6&t=2129
Curso ASM Z80 (XIII): "Gráficos en el Spectrum (I): la VRAM"
viewtopic.php?f=6&t=2105
Curso ASM Z80 (XII): "Las interrupciones del uP Z80"
viewtopic.php?f=6&t=2093
Curso ASM Z80 (XI): "Lectura del teclado en el Spectrum"
viewtopic.php?f=6&t=2085
Curso ASM Z80 (X): "Compresión y Descompresión RLE"
viewtopic.php?f=6&t=1332
Aquí un par de rutinas que libere para graficos, para imprimir en cualquier lugar de la pantalla en 42 columnas (empieza a imprimir a partir de una posición múltiplo de 8 pixels e imprime un texto en 42 columnas, para poder dejar un margen, o escribir en bocadillos y que el texto tenga un color, independientemente de en que columna se empieze a escribir.
En este utilizo algunas técnicas y uso la instrucción RRD/RLD que es algo rara de encontrar en un programa, esta perfectamente documentada, y los warning son que es posible cambiar los JR por JP si la dirección de continue comienza en una dirección por la que es factible ahorrar algún tiempecillo y bytes.
// WARNING
// procurar que continue caiga en la direccion #xx14 o #xx2C
// podemos ahorrar unos cuantos bytes y T-States
Y el otro es una "competicion" para direccionar una dirección en la pantalla.
http://z80user.zobyhost.com/foro/viewfo ... b16a196c65
También hay la rutina para el compresor descompresor RLE que esta en el "tontorial" de SRomero que por alguna razón no me lo certifica
Agradecemos a Z80user su aportación, y aunque advertimos a los lectores que no podemos certificar el código, lo listamos para quien le pueda resultar de interés.
Lo cual me resulto curioso, un certificado para decir que una rutina funciona. MICROSOFT HELP ME, ejem ROMERO CERTIFICAMELO
http://z80user.zobyhost.com/foro/viewfo ... b16a196c65
NOTA: a los tutoriales les llamo "tontoriales" no solo al de SRomelo "ni los tonto lo leen" (lease RED DWARF para mas información)
Son acerca de optimizaciones, no todas ellas incluidas en los documentos de SRomero.
Curso ASMZ80 XV: Gráficos en Spectrum (III): Sprites Lowres
viewtopic.php?f=6&t=2129
Curso ASM Z80 (XIII): "Gráficos en el Spectrum (I): la VRAM"
viewtopic.php?f=6&t=2105
Curso ASM Z80 (XII): "Las interrupciones del uP Z80"
viewtopic.php?f=6&t=2093
Curso ASM Z80 (XI): "Lectura del teclado en el Spectrum"
viewtopic.php?f=6&t=2085
Curso ASM Z80 (X): "Compresión y Descompresión RLE"
viewtopic.php?f=6&t=1332
Aquí un par de rutinas que libere para graficos, para imprimir en cualquier lugar de la pantalla en 42 columnas (empieza a imprimir a partir de una posición múltiplo de 8 pixels e imprime un texto en 42 columnas, para poder dejar un margen, o escribir en bocadillos y que el texto tenga un color, independientemente de en que columna se empieze a escribir.
En este utilizo algunas técnicas y uso la instrucción RRD/RLD que es algo rara de encontrar en un programa, esta perfectamente documentada, y los warning son que es posible cambiar los JR por JP si la dirección de continue comienza en una dirección por la que es factible ahorrar algún tiempecillo y bytes.
// WARNING
// procurar que continue caiga en la direccion #xx14 o #xx2C
// podemos ahorrar unos cuantos bytes y T-States
Y el otro es una "competicion" para direccionar una dirección en la pantalla.
http://z80user.zobyhost.com/foro/viewfo ... b16a196c65
También hay la rutina para el compresor descompresor RLE que esta en el "tontorial" de SRomero que por alguna razón no me lo certifica
Agradecemos a Z80user su aportación, y aunque advertimos a los lectores que no podemos certificar el código, lo listamos para quien le pueda resultar de interés.
Lo cual me resulto curioso, un certificado para decir que una rutina funciona. MICROSOFT HELP ME, ejem ROMERO CERTIFICAMELO
http://z80user.zobyhost.com/foro/viewfo ... b16a196c65
NOTA: a los tutoriales les llamo "tontoriales" no solo al de SRomelo "ni los tonto lo leen" (lease RED DWARF para mas información)
Si vas a tirar Hardware, primero pregunta si alguien lo puede recuperar.
No abandones un ordenador en un vertedero, donalo a alguien.
No abandones un ordenador en un vertedero, donalo a alguien.
- Alxinho
- Freddy Hardest
- Mensajes: 896
- Registrado: Mar Jun 19, 2007 11:20 am
- Ubicación: Barcelona
- Contactar:
Re: ¿Qué me recomendais?
Buah! Menuda faena me habéis dado entre todos! Y yo encantado ...
Por lo primero que tengo que empezar creo es por el inglés
Voy a ir rapiñando de aquí y de allá y supongo que con el tiempo algo aprenderé.
Gracias a todos!
Por lo primero que tengo que empezar creo es por el inglés
Voy a ir rapiñando de aquí y de allá y supongo que con el tiempo algo aprenderé.
Gracias a todos!
Retrobytes Productions --> http://retrobytesproductions.blogspot.com.es
Soy un tío feliz, más que nada ... porque me sale más a cuenta.
Soy un tío feliz, más que nada ... porque me sale más a cuenta.
-
- Jack The Nipper
- Mensajes: 146
- Registrado: Mar May 07, 2013 9:42 am
Re: ¿Qué me recomendais?
Y yo! Y yo!
Enviado con Tapatalk
Enviado con Tapatalk
-
- Manic Miner
- Mensajes: 215
- Registrado: Vie Jun 08, 2007 9:42 am
- Ubicación: En un lugar de la mancha
- Contactar:
Re: ¿Qué me recomendais?
El Ingles es una ayuda para todo, pero no creo que tengas que dejar los tontoriales en español, yo la verdad empeze con el ensamblador del 80x86 con un libro dedicado a el, el ensamblador de Spectrum osease del Z80 con las MICROFICHAS, que sin ser perfectas son estupendas (no hay instrucciones indocumentadas)
En tontorial de Ensamblador de la micro hobby, creo que lo lei algo por encima pero no demasiado, las microfichas eran un material mucho mas preciado para mi, te recomiendo tenerlas a mano son muy útiles.
Una cosa muy practica también es tener un emulador a mano como el ZX-Spin (lo digo por el depurador) que te permite editar e introducir un nemocodigo para poder ejecutarlo, y así poder comprobar las banderas de estado, para los valores que quieres, cuando no sabes si realmente se activara una bandera o lo hará su homónimo C en lugar de NC por ejemplo, con tanto JR, CALL y JP, para las banderas prefiero apostar a un caballo ganador que creer o leer algo mal, mas vale prevenir que lamentar.
Otra cosa es que como con todos los lenguajes de programación hay formas de hacer las cosas "normales", "optimas", "rápidas" y "rebuscadas".
Yo me identifico dentro de las "rebuscadas" le busco los 3 pies al gato cuando hago una rutina, y esto me cuesta un monton de tiempo, pero hago una rutina como a mi me gusta, rápida y compacta, Metalbrain creo que es como yo, quizás sin ser tan rebuscado, o rehago las rutinas una y otra vez varias veces, la de impresión de graficos no se la de veces que la rehize completamente.
Hay otra gente que con que funcionen se dan por satisfechos "normales" el ensamblador es muchísimo mas rápido que el BASIC, porque optimizarlo si con la ganancia sobra para hacerlo perfectamente.
A mi por ejemplo, me llena mas hacer algo que ocupe poco, pero no el mínimo, pero que si alguien intenta hacer algo mejor que yo le cueste hacerlo. A otros les gusta mas hacer juegos como churros sin importar (demasiado) si el juego puede funcionar mejor como los Mojones que los sacan como churros (y son geniales).
A lo que me refiero, es que programar en ensamblador es bueno, puedes hacer virguerías con el, puedes hacer cosas que sean rápidas, que ocupen poco, y que funcionen que es lo mas importante, no importa como lo hagas, si haces una rutina para imprimir un texto como la mía que lo hace rápido, o como la que me ofreció Winston (también impresión de 42 columnas) que tiene controles para el texto.
Y una cosa mas aunque es difícil ver a primera vista
bucle JR bucle
puede se una forma de bloquear un programa, pero también de pausarlo, hay una rutina de interrupciones que se puede ejecutar simultáneamente, recuerda poner DI para poder disponer de toda la potencia del Z80 si la necesitas y volver a poner EI cuando termines y crea una rutina de interrupciones cuando crees un videojuego, ganaras mucho, podrás agregar sonido, contadores y demás en ella, y crear el juego por debajo que corre independientemente con la instrucción HALT puedes sincronizar ambas ejecuciones, y también como he visto alguna vez con un "bucle JR bucle" pero la rutina de interrupciones tiene que cambiar esto
Si bienes del BASIC puedes omitir los primeros 16 KB de memoria y empezar a partir de la dirección de memoria 32768, con un CLEAR 32767 para dejarte memoria para tu programa, que además correrá algo mas rápido y suele ser un numero muy fácil de recordar, luego el típico RANDOMIZE USR 32768 o similares PRINT USR 32768 suerte, y si necesitas ayuda/consejo, pregunta por aquí, algunos estamos algo locos a veces.
En tontorial de Ensamblador de la micro hobby, creo que lo lei algo por encima pero no demasiado, las microfichas eran un material mucho mas preciado para mi, te recomiendo tenerlas a mano son muy útiles.
Una cosa muy practica también es tener un emulador a mano como el ZX-Spin (lo digo por el depurador) que te permite editar e introducir un nemocodigo para poder ejecutarlo, y así poder comprobar las banderas de estado, para los valores que quieres, cuando no sabes si realmente se activara una bandera o lo hará su homónimo C en lugar de NC por ejemplo, con tanto JR, CALL y JP, para las banderas prefiero apostar a un caballo ganador que creer o leer algo mal, mas vale prevenir que lamentar.
Otra cosa es que como con todos los lenguajes de programación hay formas de hacer las cosas "normales", "optimas", "rápidas" y "rebuscadas".
Yo me identifico dentro de las "rebuscadas" le busco los 3 pies al gato cuando hago una rutina, y esto me cuesta un monton de tiempo, pero hago una rutina como a mi me gusta, rápida y compacta, Metalbrain creo que es como yo, quizás sin ser tan rebuscado, o rehago las rutinas una y otra vez varias veces, la de impresión de graficos no se la de veces que la rehize completamente.
Hay otra gente que con que funcionen se dan por satisfechos "normales" el ensamblador es muchísimo mas rápido que el BASIC, porque optimizarlo si con la ganancia sobra para hacerlo perfectamente.
A mi por ejemplo, me llena mas hacer algo que ocupe poco, pero no el mínimo, pero que si alguien intenta hacer algo mejor que yo le cueste hacerlo. A otros les gusta mas hacer juegos como churros sin importar (demasiado) si el juego puede funcionar mejor como los Mojones que los sacan como churros (y son geniales).
A lo que me refiero, es que programar en ensamblador es bueno, puedes hacer virguerías con el, puedes hacer cosas que sean rápidas, que ocupen poco, y que funcionen que es lo mas importante, no importa como lo hagas, si haces una rutina para imprimir un texto como la mía que lo hace rápido, o como la que me ofreció Winston (también impresión de 42 columnas) que tiene controles para el texto.
Y una cosa mas aunque es difícil ver a primera vista
bucle JR bucle
puede se una forma de bloquear un programa, pero también de pausarlo, hay una rutina de interrupciones que se puede ejecutar simultáneamente, recuerda poner DI para poder disponer de toda la potencia del Z80 si la necesitas y volver a poner EI cuando termines y crea una rutina de interrupciones cuando crees un videojuego, ganaras mucho, podrás agregar sonido, contadores y demás en ella, y crear el juego por debajo que corre independientemente con la instrucción HALT puedes sincronizar ambas ejecuciones, y también como he visto alguna vez con un "bucle JR bucle" pero la rutina de interrupciones tiene que cambiar esto
Si bienes del BASIC puedes omitir los primeros 16 KB de memoria y empezar a partir de la dirección de memoria 32768, con un CLEAR 32767 para dejarte memoria para tu programa, que además correrá algo mas rápido y suele ser un numero muy fácil de recordar, luego el típico RANDOMIZE USR 32768 o similares PRINT USR 32768 suerte, y si necesitas ayuda/consejo, pregunta por aquí, algunos estamos algo locos a veces.
Si vas a tirar Hardware, primero pregunta si alguien lo puede recuperar.
No abandones un ordenador en un vertedero, donalo a alguien.
No abandones un ordenador en un vertedero, donalo a alguien.
-
- Jack The Nipper
- Mensajes: 146
- Registrado: Mar May 07, 2013 9:42 am
Re: ¿Qué me recomendais?
¿Tenéis a mano algún link de los ciclos y tamaños reales de las instrucciones del z80 en un spectrum? No recuerdo donde lo vi.
Gracias.
Enviado con Tapatalk
Gracias.
Enviado con Tapatalk
- Alxinho
- Freddy Hardest
- Mensajes: 896
- Registrado: Mar Jun 19, 2007 11:20 am
- Ubicación: Barcelona
- Contactar:
Re: ¿Qué me recomendais?
¿Podrías compartir tu rutina de impresión, tu print personal? Supongo que sirve para los sprites de un juego ¿no?
Retrobytes Productions --> http://retrobytesproductions.blogspot.com.es
Soy un tío feliz, más que nada ... porque me sale más a cuenta.
Soy un tío feliz, más que nada ... porque me sale más a cuenta.
-
- Jack The Nipper
- Mensajes: 146
- Registrado: Mar May 07, 2013 9:42 am
Re: ¿Qué me recomendais?
Bueno, yo tengo algo así, ten en cuenta que estoy empezando, son para sprites de 2 bytes de ancho, con máscara pero sin desplazamientos, fijate que se repite 2 veces una parte de la rutina (los 2 bytes del sprite por línea) para evitar saltos y por tanto ciclos, se puede optimizar mucho, cualquier aportación que me hagais bienvenido.
Código: Seleccionar todo
printm
ld de,prueba ;sprite
ld hl,scanline
ld b,16 ;sprite de 16 de altura
_bucle:
push hl
ld a,(hl)
inc l ;peligro, posibilidad de carry sin sumar a h
ld h,(hl)
ld l,a ;hl pant
ex de,hl
ld a,(de) ;2 bytes
and (hl)
inc hl
or (hl)
inc hl
ld (de),a
inc e ;peligro, posibilidad de carry sin sumar a h
ld a,(de) ;2 bytes
and (hl)
inc hl
or (hl)
inc hl
ld (de),a
inc e ;peligro, posibilidad de carry sin sumar a h
ex de,hl
pop hl
inc hl
inc hl
djnz _bucle ;b=b-1 y salta si no es cero
ret
prueba:
DEFB 224, 31, 7,248,192, 32, 3, 4
DEFB 128, 64, 1, 2, 0,128, 0, 1
DEFB 0,128, 0, 1, 0,156, 0, 57
DEFB 0,130, 0, 65, 0,154, 0, 89
DEFB 0,152, 0, 25, 0,128, 0, 1
DEFB 0,128, 0, 1, 0,144, 0, 9
DEFB 0,143, 0,241,128, 64, 1, 2
DEFB 192, 32, 3, 4,224, 31, 7,248
scanline:
DW $4000, $4100, $4200, $4300, $4400, $4500, $4600, $4700
DW $4020, $4120, $4220, $4320, $4420, $4520, $4620, $4720
DW $4040, $4140, $4240, $4340, $4440, $4540, $4640, $4740
DW $4060, $4160, $4260, $4360, $4460, $4560, $4660, $4760
DW $4080, $4180, $4280, $4380, $4480, $4580, $4680, $4780
DW $40A0, $41A0, $42A0, $43A0, $44A0, $45A0, $46A0, $47A0
DW $40C0, $41C0, $42C0, $43C0, $44C0, $45C0, $46C0, $47C0
DW $40E0, $41E0, $42E0, $43E0, $44E0, $45E0, $46E0, $47E0
DW $4800, $4900, $4A00, $4B00, $4C00, $4D00, $4E00, $4F00
DW $4820, $4920, $4A20, $4B20, $4C20, $4D20, $4E20, $4F20
DW $4840, $4940, $4A40, $4B40, $4C40, $4D40, $4E40, $4F40
DW $4860, $4960, $4A60, $4B60, $4C60, $4D60, $4E60, $4F60
DW $4880, $4980, $4A80, $4B80, $4C80, $4D80, $4E80, $4F80
DW $48A0, $49A0, $4AA0, $4BA0, $4CA0, $4DA0, $4EA0, $4FA0
DW $48C0, $49C0, $4AC0, $4BC0, $4CC0, $4DC0, $4EC0, $4FC0
DW $48E0, $49E0, $4AE0, $4BE0, $4CE0, $4DE0, $4EE0, $4FE0
DW $5000, $5100, $5200, $5300, $5400, $5500, $5600, $5700
DW $5020, $5120, $5220, $5320, $5420, $5520, $5620, $5720
DW $5040, $5140, $5240, $5340, $5440, $5540, $5640, $5740
DW $5060, $5160, $5260, $5360, $5460, $5560, $5660, $5760
DW $5080, $5180, $5280, $5380, $5480, $5580, $5680, $5780
DW $50A0, $51A0, $52A0, $53A0, $54A0, $55A0, $56A0, $57A0
DW $50C0, $51C0, $52C0, $53C0, $54C0, $55C0, $56C0, $57C0
DW $50E0, $51E0, $52E0, $53E0, $54E0, $55E0, $56E0, $57E0
¿Quién está conectado?
Usuarios navegando por este Foro: Bing [Bot] y 6 invitados