[DUDA] código asm65

Software y Juegos para retro-computadores, bueeeno... casi puros juegos :-)
Responder
Avatar de Usuario
dogdark
Mensajes: 594
Registrado: Lun Mar 04, 2013 1:36 pm
Contactar:

[DUDA] código asm65

Mensaje por dogdark » Vie Jul 25, 2014 10:31 pm

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

Imagen

AsCrNet
Mensajes: 130
Registrado: Lun Mar 11, 2013 10:47 am

Re: [DUDA] código asm65

Mensaje por AsCrNet » Sab Jul 26, 2014 10:40 am

hi mijo,

Primero que todo, leer este libro que si es para iniciarse. es obligatorio!!! :lol: y te voy respondiendo tus dudas... necesitas la base primero. :lol:

Saludos

Avatar de Usuario
dogdark
Mensajes: 594
Registrado: Lun Mar 04, 2013 1:36 pm
Contactar:

Re: [DUDA] código asm65

Mensaje por dogdark » Sab Jul 26, 2014 1:40 pm

Muchas gracias perrin lo leere sera de mucha ayuda

Avatar de Usuario
vitoco
Mensajes: 1970
Registrado: Lun Ene 28, 2013 5:47 pm
Contactar:

Re: [DUDA] código asm65

Mensaje por vitoco » Dom Jul 27, 2014 12:34 am

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!!!

Avatar de Usuario
dogdark
Mensajes: 594
Registrado: Lun Mar 04, 2013 1:36 pm
Contactar:

Re: [DUDA] código asm65

Mensaje por dogdark » Dom Jul 27, 2014 3:21 am

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.

Imagen


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



Avatar de Usuario
dogdark
Mensajes: 594
Registrado: Lun Mar 04, 2013 1:36 pm
Contactar:

Re: [DUDA] código asm65

Mensaje por dogdark » Dom Jul 27, 2014 2:37 pm

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

Avatar de Usuario
vitoco
Mensajes: 1970
Registrado: Lun Ene 28, 2013 5:47 pm
Contactar:

Re: [DUDA] código asm65

Mensaje por vitoco » Dom Jul 27, 2014 4:14 pm

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.

Avatar de Usuario
dogdark
Mensajes: 594
Registrado: Lun Mar 04, 2013 1:36 pm
Contactar:

Re: [DUDA] código asm65

Mensaje por dogdark » Dom Jul 27, 2014 5:15 pm

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.

Avatar de Usuario
vitoco
Mensajes: 1970
Registrado: Lun Ene 28, 2013 5:47 pm
Contactar:

Re: [DUDA] código asm65

Mensaje por vitoco » Dom Jul 27, 2014 5:27 pm

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).

Avatar de Usuario
fcatrin
Mensajes: 655
Registrado: Jue Ene 24, 2013 2:19 pm
Ubicación: Quilpué
Contactar:

Re: [DUDA] código asm65

Mensaje por fcatrin » Dom Jul 27, 2014 11:50 pm

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.

Avatar de Usuario
fcatrin
Mensajes: 655
Registrado: Jue Ene 24, 2013 2:19 pm
Ubicación: Quilpué
Contactar:

Re: [DUDA] código asm65

Mensaje por fcatrin » Dom Jul 27, 2014 11:51 pm

Ahh! Y recuerda que también está este tutorial:

http://franco.arealinux.cl/atari-assembler-paso-a-paso/

Avatar de Usuario
vitoco
Mensajes: 1970
Registrado: Lun Ene 28, 2013 5:47 pm
Contactar:

Re: [DUDA] código asm65

Mensaje por vitoco » Lun Jul 28, 2014 11:32 pm

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!!! :lol:

Si tienes más dudas, consulte no'más...

¡Suerte!

Avatar de Usuario
dogdark
Mensajes: 594
Registrado: Lun Mar 04, 2013 1:36 pm
Contactar:

Re: [DUDA] código asm65

Mensaje por dogdark » Mar Jul 29, 2014 12:52 pm

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.

Responder