Página 1 de 1
[DUDA] código asm65
Publicado: Vie Jul 25, 2014 10:31 pm
por dogdark
como estoy me intereso el tema de asm65, he estado revisando algunos libros donde vienen muchos códigos, pero la mayoría son para personas que ya tienen algo de conocimiento sobre asm y no explican como para novatos, por lo tanto igual quedo plop. tengo el siguiente código que esta en basic y me gustaría pasarlo a asm65 a ver si me echan una manopla.
20 SC=PEEK(560)+256*PEEK(561)+4
30 POKE SC-1,71:POKE SC+2,12
por mas que los integro como lda y sta no me funciona algo hago mal
Código: Seleccionar todo
0500 VAL1 = STA 560
0510 VAL2 = STA 561
0550 SC = LDA VAL1+256*VAL2+4
1000 ;MOSTRAMOS LOS DATOS
1001 ;EN PANTALLA
1010 *= $02E0
1020 .WORD INICIO
2000 ;
2001 ; GUARDAMOS LOS DATOS DE ACA EN
2002 ; ADELANTE EN LA POSICION DE
2003 ; MEMORIA $4000
2010 *= $4000
2120 INICIO
2300 ; CONFIGURAMOS LA PANTALLA
2320 LDA #71
2330 STA SC-1
2340 LDA #12
2350 STA SC+2
2435 JSR $C642
Que es lo que quiero, es que al principio de la pantalla al cargarla me aparezca en la primera linea letras mas grandes y también quiero que al medio pase lo mismo, pero que sean letras mas grandes pero mas chicas que en la primera, me explico de otra manera.
***********************************************************************************************
* HOLA (tamaño 4) *
----------------------------------------------------------------------------------------------
letra normal
fila 10 mas menos letra tamaño 2
como por ejemplo la portada de los copiadores del tio parche

Re: [DUDA] código asm65
Publicado: Sab Jul 26, 2014 10:40 am
por AsCrNet
hi mijo,
Primero que todo, leer este
libro que si es para iniciarse. es obligatorio!!!

y te voy respondiendo tus dudas... necesitas la base primero.
Saludos
Re: [DUDA] código asm65
Publicado: Sab Jul 26, 2014 1:40 pm
por dogdark
Muchas gracias perrin lo leere sera de mucha ayuda
Re: [DUDA] código asm65
Publicado: Dom Jul 27, 2014 12:34 am
por vitoco
Tengo varios comentarios respecto del código publicado y de lo que quieres hacer, pero ando de viaje y sin el notebook, por lo que no puedo escribir algo completo o al menos decente. Me vas a tener que esperar hasta el lunes
Por el momento, te digo que además del enlace que ya te dieron (incluyendo el capitulo 13), mira el "Mapping the Atari".
En vez de intentar modificar la lista de despliegue actual, te conviene crear una propia, y no llames a rutinas del cartucho BASIC. Si vas a hacer un programa 100% assembler, no tendrás el cartucho a la mano!!!
Re: [DUDA] código asm65
Publicado: Dom Jul 27, 2014 3:21 am
por dogdark
gracias vitoco, espero aprender cada día mas, el libro me ayudo bastante por lo menos para entender que es lo que tengo que hacer y conocer los conceptos y algunos comandos a usar, a diferenciar un decimal de un hexadecimal, u otras cosas, aunque estoy recién empezando en esto todavía estoy medio colgado en varias cosas, con el libro del mapping de atari di puro jugo por eso me clave con el que me paso el ascrnet, me aclaro varias cosas, para empezar desde 0, porque con los otros no te dicen o no te explican como para novatos, si no que son explicaciones ya para quienes tienen noción porque son guias, seguiré haciendo comparaciones entre libros y seguiré estudiando, y agradecido a ustedes por la voluntad por que siempre ayudan
este es el resultado de lo que hice, primero lo cree en basic que es lo que mas tengo conocimiento y después realice comparaciones con el libro y ahí comprendí varias cosas.
y el codigo
Código: Seleccionar todo
*=$3000
LDX #0
JMP INICIO
SDMCTL = $022F
P560 = $0230
P561 = $0231
COLOR0=$02C4 ; OS COLOR REGISTERS
COLOR1=$02C5
COLOR2=$02C6
COLOR3=$02C7
COLOR4=$02C8
; IMPRIMOS ALGUNA COSA
INICIO
LDA COLOR1
STA COLOR3
LDA COLOR4
STA COLOR2
LDA #0
STA SDMCTL
LDA #HLIST&255
STA P560
LDA #HLIST/256
STA P561
LDA #$22
STA SDMCTL
JMP RETORNO
LINEA1
.SBYTE " mi primer programa "
LINEA2
.SBYTE " PARA RETRONIA EN ASM65 "
LINEA3
.SBYTE " GRACIAS POR EL LIBRO "
LINEA4
.SBYTE " ASCRNET "
RETORNO
JMP RETORNO
HLIST
.BYTE $70
.BYTE $46
.WORD LINEA1
.BYTE $70
.BYTE $43
.WORD LINEA2
.BYTE $70,$70,$70
.BYTE $43
.WORD LINEA3
.BYTE $70,$70,$70
.BYTE $47
.WORD LINEA4
Re: [DUDA] código asm65
Publicado: Dom Jul 27, 2014 2:37 pm
por dogdark
despues de haber realizado el codigo me encontre con el siguiente problema, el de las posiciones, por ejemplo en basic, position 3,1, trate de realizarlo sumando los siguiente
Código: Seleccionar todo
; INGRESAMOS LA POSISION DE LINEA
;LINEA NUMERO 6
LDA #5
INGRESO POSICION de LINE
STA 84
; INGRESAMOS LA COLUMNA
LDA #5
STA 85
Ssegun mapping de atari seria asi, pero se cambian todos los caracteres y no mantiene la proporcion.
los coloque en INICIO, DESPUES HLIST Y NADA DE NADA, algo malo estoy haciendo
Re: [DUDA] código asm65
Publicado: Dom Jul 27, 2014 4:14 pm
por vitoco
Olvídate del POSITION. Eso sólo sirve en modos gráficos predefinidos. Igual puedes simular que estás en uno que más te convenga y usar los equivalentes a POKE y XIO para tirar líneas como si fueran POSITION y DRAWTO, además de PRINT #6
Pero recuerda que sólo tienen sentido si las líneas consecutivas ocupan la misma cantidad de bytes.
Re: [DUDA] código asm65
Publicado: Dom Jul 27, 2014 5:15 pm
por dogdark
por eso me refería a trabajar con el poke 84($54) que es row para definir en que row quiero colocar dicha LINEA1, posicionarla en el row 5 de la pantalla EL LINE3 en el row 8 y después subir al row 3 e imprimir LINEA2.
Re: [DUDA] código asm65
Publicado: Dom Jul 27, 2014 5:27 pm
por vitoco
Ojo que si defines tu propia DL, 2 líneas consecutivas en memoria pueden estar separadas por medida pantalla de espacio vacío (con bytes 112). Ahí no necesitas PRINT sino que podrías apuntar la línea a la memoria donde está el texto (sumando o restando múltiplos de 32 para ATASCII).
Re: [DUDA] código asm65
Publicado: Dom Jul 27, 2014 11:50 pm
por fcatrin
Ampliando esa explicación...
La memoria de video es lineal, o sea es como una linea recta en donde un byte queda a continuación de otro. La idea de columnas es una mera ilusión.
Cuando tienes un modo de video normal, cada linea tiene la misma cantidad de bytes (o caracteres). Si tuvieras una resolución de 10 columnas * 4 filas, tendrías las siguientes posiciones de memoria representando la pantalla.
Código: Seleccionar todo
00 01 02 03 04 05 06 07 08 09
10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29
30 31 32 33 34 35 36 37 38 39
Si modificas la posición 00, entonces escribes en la primera fila, primera columna. Si modificas la posición 01 modificas primera fila, SEGUNDA columna, si modificas la posición 21, modificas la TERCERA fila, segunda columna etc.
En general el cálculo de cualquier posición será : columna + fila * 10
Este es solo un ejemplo, en los modos de atari tienes 40 o 20 caracteres de ancho. Por lo tanto para escribir en un modo mixto debes considerar que algunas filas serán de 40 y otras de 20 al momento de calcular su posición.
Pero ojo, eso sólo si quieres hacer un calculo genérico. Si ya sabes lo que vas a escribir, puedes precalcular eso a mano y usar esos valores precalculados directamente en el programa.
Re: [DUDA] código asm65
Publicado: Dom Jul 27, 2014 11:51 pm
por fcatrin
Re: [DUDA] código asm65
Publicado: Lun Jul 28, 2014 11:32 pm
por vitoco
A estas alturas, ya te habrás dado cuenta de los problemas que tenía el primer código que publicaste, como el intento de utilizar "variables", por lo que no haré mayor comentario sobre eso.
Por otro lado, Franco ya te dio buenos hints para el manejo de texto en memoria/pantalla, además de su tutorial.
Finalmente, respecto del
Mapping, efectivamente no está escrito para enseñarte a hacer cosas en el Atari, sino que es la ayuda que necesitas para entender cómo otros hicieron algo que estás desensamblando (o mirando el código fuente). Los apéndices son un poco más didácticos, como el 8 para el manejo de listas de despliege en pantalla, aunque ni tanto!!!
Si tienes más dudas, consulte no'más...
¡Suerte!
Re: [DUDA] código asm65
Publicado: Mar Jul 29, 2014 12:52 pm
por dogdark
si muchachos agradecidos por todo, en este momento me encuentro leyendo el libro atari roots y traduciéndolo al mismo tiempo para poder entender de mejor manera como funciona todo, así que entre trabajo y ratos que puedo lo leo, después hare mas consultas al respecto, agradecido por todo por lo menos seguiré en este hilo para mas consultas.