Proyecto Atari-DMD
- Poltergeist
 - expert

 - Mensajes: 1618
 - Registrado: Lun Jul 14, 2008 7:36 pm
 - Reputación: 9
 
Re: Proyecto Atari-DMD
Muy buena!!! ya hay scroll y se ve perfecto!!!
Felicitaciones!!!
			
			
									
						
										
						Felicitaciones!!!
Re: Proyecto Atari-DMD
Nueva versión del driver, ahora con scrolling grueso, combinando las dos rutinas anteriores.
Vamos avanzando de a poco.
			
			
									
						
										
						Vamos avanzando de a poco.
Código: Seleccionar todo
	*=$4000
font = $E000
font2 = $6000
pt.1 = $CB
pt.2 = $CD
pt.3 = $CF
porta =$d300	; 54016
pactl =$d302	
setvbv =$e45c
xitvbv =$e462
clock = $14
CDTMV3 =$021c
prepara.font.caracteres = 128
display.columnas = 48   ;¿pueden ser más?
display.caracteres = 6
vbd
	jsr borra.pantalla
	jsr despliega.pantalla
	jmp xitvbv
init.vbd
	lda #$2B
	sta pactl
	lda #$FF
	sta porta
	ldy #<vbd
	ldx #>vbd
	lda #$07
	jsr setvbv
borra.pantalla
;vamos a tomar la rutina desplegada por ZZT.
;reset
	lda #0
	sta 54604      ; start reset (debe ser 0 y 1 con un ck del latch entremedio)
	lda #0
	sta 54602      ; activando el ck del latch
	lda #1
	sta 54604      ; end reset 
;output_enable
	lda #0
	sta 54601      ; OE debe ser 0
;joy_port
	lda #0
	sta porta      ; envía un 0 al joy (8 datos X columna)
;serial_data
	lda #1
	sta 54600      ; serial data =1 (poner a 0 después de comenzar exploración (inicio1)
	rts
despliega.pantalla
	ldx #display.columnas-1
despliega.pantalla.loop1
	jsr inicia.pantalla
	lda display,x
	jsr imprime.columna
	dex
	bpl despliega.pantalla.loop1
	rts
inicia.pantalla
	lda #1
	sta 54603       ; activa ck
	lda #0
	sta 54603       ; desactiva ck
	lda #1
	sta 54602       ; activa latch
	lda #0
	sta 54602       ; desactiva latch
	lda #0
	sta 54600       ; serial data= 0. Ya se cargo un 1 al activarse los clock ahora debe ser 0 por cada paso
			; de la exploracion (si no pone 0 todas las columnas se activarían)
	rts
imprime.columna
	eor #$ff
	sta porta
	rts
display
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
;lista la rutina del display, ahora la del font
prepara.font
	lda #>font
	sta pt.1+1
	lda #<font
	sta pt.1
	lda #>font2
	sta pt.2+1
	lda #<font2
	sta pt.2
	lda #prepara.font.caracteres	; caracteres a transferir
	sta prepara.font.contador
prepara.font.loop1
	ldy #$7		;transferimos el font a un buffer auxiliar para trabajar
prepara.font.loop2
	lda (pt.1),y
	sta prepara.font.buffer,y
	lda #$00
	sta prepara.font.buffer2,y
	dey
	bpl prepara.font.loop2
; Ahora vamos a transponer los datos
	ldx #$00
prepara.font.loop3
	asl prepara.font.buffer
	rol prepara.font.buffer2,x
	asl prepara.font.buffer + 1
	rol prepara.font.buffer2,x
	asl prepara.font.buffer + 2
	rol prepara.font.buffer2,x
	asl prepara.font.buffer + 3
	rol prepara.font.buffer2,x
	asl prepara.font.buffer + 4
	rol prepara.font.buffer2,x
	asl prepara.font.buffer + 5
	rol prepara.font.buffer2,x
	asl prepara.font.buffer + 6
	rol prepara.font.buffer2,x
	asl prepara.font.buffer + 7
	rol prepara.font.buffer2,x
	inx
	cpx #8
	bne prepara.font.loop3
; y ahora a copiar al font2
	ldy #$7
prepara.font.loop4
	lda prepara.font.buffer2,y
	sta (pt.2),y
	dey
	bpl prepara.font.loop4
	lda pt.1
	clc
	adc #$08
	sta pt.1
	lda pt.1+1
	adc #$00
	sta pt.1+1
	lda pt.2
	clc
	adc #$08
	sta pt.2
	lda pt.2+1
	adc #$00
	sta pt.2+1
	dec prepara.font.contador
	bne prepara.font.loop1
	rts
prepara.font.buffer
	.byte 0,0,0,0,0,0,0,0
prepara.font.buffer2
	.byte 0,0,0,0,0,0,0,0
prepara.font.contador
	.byte 0
;rutina que convierte el texto en caracteres de display
;Parámetros: "x" guarda el byte menor de la posición.
; "y" guarda el byte mayor de la posición
prepara.caracteres
	stx pt.1
	sty pt.1+1
	ldy #$00
	ldx #$00
prepara.caracteres.loop1
	lda (pt.1),y
	sta prepara.caracteres.caracter
	lda #$00
	sta prepara.caracteres.caracter+1
;vamos a multiplicarlo por 8
	asl prepara.caracteres.caracter ;*2
	rol prepara.caracteres.caracter+1
	asl prepara.caracteres.caracter ;*4
	rol prepara.caracteres.caracter+1
	asl prepara.caracteres.caracter ;*8
	rol prepara.caracteres.caracter+1
	lda prepara.caracteres.caracter
	clc
	adc #<font2
	sta pt.2
	lda prepara.caracteres.caracter+1
	adc #>font2
	sta pt.2+1
	sty pt.3
	ldy #$00
prepara.caracteres.loop2
	lda (pt.2),y
	sta display,x
	inx
	iny
	cpy #$08
	bne prepara.caracteres.loop2
	ldy pt.3
	iny
	cpy #display.caracteres
	bne prepara.caracteres.loop1
	rts
prepara.caracteres.caracter
	.byte 0,0
inicio
	jsr prepara.font
	jsr init.vbd
inicio.loop0
	ldx #<tabla.retrogames
	ldy #>tabla.retrogames
	stx scroll.puntero
	sty scroll.puntero+1
inicio.loop1
	ldx scroll.puntero
	ldy scroll.puntero+1
	jsr prepara.caracteres
	ldy #display.columnas-1
inicio.loop2
	lda display,y
	sta (88),y
	dey
	bpl inicio.loop2
	jsr wait
	inc scroll.puntero
	bne inicio.loop2.noinc
	inc scroll.puntero+1
inicio.loop2.noinc
	lda scroll.puntero
	cmp #<tabla.retrogames.fin
	bne inicio.loop1
	lda scroll.puntero+1
	cmp #>tabla.retrogames.fin
	bne inicio.loop1
	jmp inicio.loop0
wait
	lda #8
	sta CDTMV3
	lda #0
	sta CDTMV3+1
wait.loop
	lda CDTMV3
	bne wait.loop
	rts
tabla.retrogames
	.sbyte "      RETROGAMES"
tabla.retrogames.fin
	.sbyte "      "
scroll.puntero
	.byte 0,0
	
	*=$2e0
	.word inicio
Re: Proyecto Atari-DMD
Nueva versión. Se supone hace scrolling fino. ZZT, confirma please!!
			
			
									
						
										
						Código: Seleccionar todo
	*=$4000
font = $E000
font2 = $6000
pt.1 = $CB
pt.2 = $CD
pt.3 = $CF
porta =$d300	; 54016
pactl =$d302	
setvbv =$e45c
xitvbv =$e462
clock = $14
CDTMV3 =$021c
prepara.font.caracteres = 128
display.columnas = 48   ;¿pueden ser más?
display.caracteres = 6
vbd
	jsr borra.pantalla
	jsr despliega.pantalla
	jsr scroll
	jmp xitvbv
init.vbd
	lda #$2B
	sta pactl
	lda #$FF
	sta porta
	ldy #<vbd
	ldx #>vbd
	lda #$07
	jsr setvbv
borra.pantalla
;vamos a tomar la rutina desplegada por ZZT.
;reset
	lda #0
	sta 54604      ; start reset (debe ser 0 y 1 con un ck del latch entremedio)
	lda #0
	sta 54602      ; activando el ck del latch
	lda #1
	sta 54604      ; end reset 
;output_enable
	lda #0
	sta 54601      ; OE debe ser 0
;joy_port
	lda #0
	sta porta      ; envía un 0 al joy (8 datos X columna)
;serial_data
	lda #1
	sta 54600      ; serial data =1 (poner a 0 después de comenzar exploración (inicio1)
	rts
despliega.pantalla
	ldx #display.columnas-1
despliega.pantalla.loop1
	jsr inicia.pantalla
	lda display,x
	jsr imprime.columna
	dex
	bpl despliega.pantalla.loop1
	rts
inicia.pantalla
	lda #1
	sta 54603       ; activa ck
	lda #0
	sta 54603       ; desactiva ck
	lda #1
	sta 54602       ; activa latch
	lda #0
	sta 54602       ; desactiva latch
	lda #0
	sta 54600       ; serial data= 0. Ya se cargo un 1 al activarse los clock ahora debe ser 0 por cada paso
			; de la exploracion (si no pone 0 todas las columnas se activarían)
	rts
imprime.columna
	eor #$ff
	sta porta
	rts
display
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
;lista la rutina del display, ahora la del font
prepara.font
	lda #>font
	sta pt.1+1
	lda #<font
	sta pt.1
	lda #>font2
	sta pt.2+1
	lda #<font2
	sta pt.2
	lda #prepara.font.caracteres	; caracteres a transferir
	sta prepara.font.contador
prepara.font.loop1
	ldy #$7		;transferimos el font a un buffer auxiliar para trabajar
prepara.font.loop2
	lda (pt.1),y
	sta prepara.font.buffer,y
	lda #$00
	sta prepara.font.buffer2,y
	dey
	bpl prepara.font.loop2
; Ahora vamos a transponer los datos
	ldx #$00
prepara.font.loop3
	asl prepara.font.buffer
	rol prepara.font.buffer2,x
	asl prepara.font.buffer + 1
	rol prepara.font.buffer2,x
	asl prepara.font.buffer + 2
	rol prepara.font.buffer2,x
	asl prepara.font.buffer + 3
	rol prepara.font.buffer2,x
	asl prepara.font.buffer + 4
	rol prepara.font.buffer2,x
	asl prepara.font.buffer + 5
	rol prepara.font.buffer2,x
	asl prepara.font.buffer + 6
	rol prepara.font.buffer2,x
	asl prepara.font.buffer + 7
	rol prepara.font.buffer2,x
	inx
	cpx #8
	bne prepara.font.loop3
; y ahora a copiar al font2
	ldy #$7
prepara.font.loop4
	lda prepara.font.buffer2,y
	sta (pt.2),y
	dey
	bpl prepara.font.loop4
	lda pt.1
	clc
	adc #$08
	sta pt.1
	lda pt.1+1
	adc #$00
	sta pt.1+1
	lda pt.2
	clc
	adc #$08
	sta pt.2
	lda pt.2+1
	adc #$00
	sta pt.2+1
	dec prepara.font.contador
	bne prepara.font.loop1
	rts
prepara.font.buffer
	.byte 0,0,0,0,0,0,0,0
prepara.font.buffer2
	.byte 0,0,0,0,0,0,0,0
prepara.font.contador
	.byte 0
;rutina que convierte el texto en caracteres de display
;Parámetros: "x" guarda el byte menor de la posición.
; "y" guarda el byte mayor de la posición
prepara.caracteres
	stx pt.1
	sty pt.1+1
	ldy #$00
	ldx #$00
prepara.caracteres.loop1
	lda (pt.1),y
	sta prepara.caracteres.caracter
	lda #$00
	sta prepara.caracteres.caracter+1
;vamos a multiplicarlo por 8
	asl prepara.caracteres.caracter ;*2
	rol prepara.caracteres.caracter+1
	asl prepara.caracteres.caracter ;*4
	rol prepara.caracteres.caracter+1
	asl prepara.caracteres.caracter ;*8
	rol prepara.caracteres.caracter+1
	lda prepara.caracteres.caracter
	clc
	adc #<font2
	sta pt.2
	lda prepara.caracteres.caracter+1
	adc #>font2
	sta pt.2+1
	sty pt.3
	ldy #$00
prepara.caracteres.loop2
	lda (pt.2),y
	sta scroll.tabla,x
	inx
	iny
	cpy #$08
	bne prepara.caracteres.loop2
	ldy pt.3
	iny
	cpy #display.caracteres+1
	bne prepara.caracteres.loop1
	rts
prepara.caracteres.caracter
	.byte 0,0
scroll
	dec scroll.aux
	bne scroll.no.reset
	lda #$8
	sta scroll.aux
	inc scroll.puntero
	bne scroll.noinc
	inc scroll.puntero+1
scroll.noinc
	ldx scroll.puntero
	ldy scroll.puntero+1
	jsr prepara.caracteres
	lda scroll.puntero
	cmp #<tabla.retrogames.fin
	bne scroll.no.reset
	lda scroll.puntero+1
	cmp #>tabla.retrogames.fin
	bne scroll.no.reset
	lda #<tabla.retrogames-1
	sta scroll.puntero
	lda #>tabla.retrogames-1
	sta scroll.puntero+1
scroll.no.reset
	lda #$8
	sec
	sbc scroll.aux
	tax
	ldy #$00
scroll.loop3
	lda scroll.tabla,x
	sta display,y
	inx
	iny
	cpy #display.columnas
	bne scroll.loop3
	rts
scroll.aux
	.byte 8
scroll.puntero
	.byte 0,0
scroll.tabla
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
inicio
	jsr prepara.font
	jsr init.vbd
	ldx #<tabla.retrogames
	ldy #>tabla.retrogames
	stx scroll.puntero
	sty scroll.puntero+1
inicio.loop1
	ldy #display.columnas-1
inicio.loop2
	lda display,y
	sta (88),y
	dey
	bpl inicio.loop2
	jmp inicio.loop1
wait
	lda #8
	sta CDTMV3
	lda #0
	sta CDTMV3+1
wait.loop
	lda CDTMV3
	bne wait.loop
	rts
tabla.retrogames
	.sbyte "      RETROGAMES"
tabla.retrogames.fin
	.sbyte "      "
	
	*=$2e0
	.word inicio
- ZZT
 - Site Admin

 - Mensajes: 10917
 - Registrado: Mar Nov 07, 2006 2:45 pm
 - Reputación: 10
 - Ubicación: La Florida-Santiago-Chile
 - Contactar:
 
Re: Proyecto Atari-DMD
Y este es el código del Willy, que se fue al chancho con la velocidad de exploración, y por eso se ve muy ténue. Fácil de arreglar.  
Si se fijan bien, las letras se ven pulento (es el font del atari itself).
			
			
									
						
										
						Si se fijan bien, las letras se ven pulento (es el font del atari itself).
Re: Proyecto Atari-DMD
Se ven al revés las letras. Esto debiera arreglarlo:
			
			
									
						
										
						Código: Seleccionar todo
	*=$4000
font = $E000
font2 = $6000
pt.1 = $CB
pt.2 = $CD
pt.3 = $CF
porta =$d300	; 54016
pactl =$d302	
setvbv =$e45c
xitvbv =$e462
clock = $14
CDTMV3 =$021c
prepara.font.caracteres = 128
display.columnas = 48   ;¿pueden ser más?
display.caracteres = 6
vbd
	jsr borra.pantalla
	jsr despliega.pantalla
	jsr scroll
	jmp xitvbv
init.vbd
	lda #$2B
	sta pactl
	lda #$FF
	sta porta
	ldy #<vbd
	ldx #>vbd
	lda #$07
	jsr setvbv
borra.pantalla
;vamos a tomar la rutina desplegada por ZZT.
;reset
	lda #0
	sta 54604      ; start reset (debe ser 0 y 1 con un ck del latch entremedio)
	lda #0
	sta 54602      ; activando el ck del latch
	lda #1
	sta 54604      ; end reset 
;output_enable
	lda #0
	sta 54601      ; OE debe ser 0
;joy_port
	lda #0
	sta porta      ; envía un 0 al joy (8 datos X columna)
;serial_data
	lda #1
	sta 54600      ; serial data =1 (poner a 0 después de comenzar exploración (inicio1)
	rts
despliega.pantalla
	ldx #display.columnas-1
despliega.pantalla.loop1
	jsr inicia.pantalla
	lda display,x
	jsr imprime.columna
	dex
	bpl despliega.pantalla.loop1
	rts
inicia.pantalla
	lda #1
	sta 54603       ; activa ck
	lda #0
	sta 54603       ; desactiva ck
	lda #1
	sta 54602       ; activa latch
	lda #0
	sta 54602       ; desactiva latch
	lda #0
	sta 54600       ; serial data= 0. Ya se cargo un 1 al activarse los clock ahora debe ser 0 por cada paso
			; de la exploracion (si no pone 0 todas las columnas se activarían)
	rts
imprime.columna
	eor #$ff
	sta porta
	rts
display
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
;lista la rutina del display, ahora la del font
prepara.font
	lda #>font
	sta pt.1+1
	lda #<font
	sta pt.1
	lda #>font2
	sta pt.2+1
	lda #<font2
	sta pt.2
	lda #prepara.font.caracteres	; caracteres a transferir
	sta prepara.font.contador
prepara.font.loop1
	ldy #$7		;transferimos el font a un buffer auxiliar para trabajar
prepara.font.loop2
	lda (pt.1),y
	sta prepara.font.buffer,y
	lda #$00
	sta prepara.font.buffer2,y
	dey
	bpl prepara.font.loop2
; Ahora vamos a transponer los datos
	ldx #$00
prepara.font.loop3
	asl prepara.font.buffer
	ror prepara.font.buffer2,x
	asl prepara.font.buffer + 1
	ror prepara.font.buffer2,x
	asl prepara.font.buffer + 2
	ror prepara.font.buffer2,x
	asl prepara.font.buffer + 3
	ror prepara.font.buffer2,x
	asl prepara.font.buffer + 4
	ror prepara.font.buffer2,x
	asl prepara.font.buffer + 5
	ror prepara.font.buffer2,x
	asl prepara.font.buffer + 6
	ror prepara.font.buffer2,x
	asl prepara.font.buffer + 7
	ror prepara.font.buffer2,x
	inx
	cpx #8
	bne prepara.font.loop3
; y ahora a copiar al font2
	ldy #$7
prepara.font.loop4
	lda prepara.font.buffer2,y
	sta (pt.2),y
	dey
	bpl prepara.font.loop4
	lda pt.1
	clc
	adc #$08
	sta pt.1
	lda pt.1+1
	adc #$00
	sta pt.1+1
	lda pt.2
	clc
	adc #$08
	sta pt.2
	lda pt.2+1
	adc #$00
	sta pt.2+1
	dec prepara.font.contador
	bne prepara.font.loop1
	rts
prepara.font.buffer
	.byte 0,0,0,0,0,0,0,0
prepara.font.buffer2
	.byte 0,0,0,0,0,0,0,0
prepara.font.contador
	.byte 0
;rutina que convierte el texto en caracteres de display
;Parámetros: "x" guarda el byte menor de la posición.
; "y" guarda el byte mayor de la posición
prepara.caracteres
	stx pt.1
	sty pt.1+1
	ldy #$00
	ldx #$00
prepara.caracteres.loop1
	lda (pt.1),y
	sta prepara.caracteres.caracter
	lda #$00
	sta prepara.caracteres.caracter+1
;vamos a multiplicarlo por 8
	asl prepara.caracteres.caracter ;*2
	rol prepara.caracteres.caracter+1
	asl prepara.caracteres.caracter ;*4
	rol prepara.caracteres.caracter+1
	asl prepara.caracteres.caracter ;*8
	rol prepara.caracteres.caracter+1
	lda prepara.caracteres.caracter
	clc
	adc #<font2
	sta pt.2
	lda prepara.caracteres.caracter+1
	adc #>font2
	sta pt.2+1
	sty pt.3
	ldy #$00
prepara.caracteres.loop2
	lda (pt.2),y
	sta scroll.tabla,x
	inx
	iny
	cpy #$08
	bne prepara.caracteres.loop2
	ldy pt.3
	iny
	cpy #display.caracteres+1
	bne prepara.caracteres.loop1
	rts
prepara.caracteres.caracter
	.byte 0,0
scroll
	dec scroll.aux
	bne scroll.no.reset
	lda #$8
	sta scroll.aux
	inc scroll.puntero
	bne scroll.noinc
	inc scroll.puntero+1
scroll.noinc
	ldx scroll.puntero
	ldy scroll.puntero+1
	jsr prepara.caracteres
	lda scroll.puntero
	cmp #<tabla.retrogames.fin
	bne scroll.no.reset
	lda scroll.puntero+1
	cmp #>tabla.retrogames.fin
	bne scroll.no.reset
	lda #<tabla.retrogames-1
	sta scroll.puntero
	lda #>tabla.retrogames-1
	sta scroll.puntero+1
scroll.no.reset
	lda #$8
	sec
	sbc scroll.aux
	tax
	ldy #$00
scroll.loop3
	lda scroll.tabla,x
	sta display,y
	inx
	iny
	cpy #display.columnas
	bne scroll.loop3
	rts
scroll.aux
	.byte 8
scroll.puntero
	.byte 0,0
scroll.tabla
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
inicio
	jsr prepara.font
	jsr init.vbd
	ldx #<tabla.retrogames
	ldy #>tabla.retrogames
	stx scroll.puntero
	sty scroll.puntero+1
inicio.loop1
	ldy #display.columnas-1
inicio.loop2
	lda display,y
	sta (88),y
	dey
	bpl inicio.loop2
	jmp inicio.loop1
wait
	lda #8
	sta CDTMV3
	lda #0
	sta CDTMV3+1
wait.loop
	lda CDTMV3
	bne wait.loop
	rts
tabla.retrogames
	.sbyte "      RETROGAMES"
tabla.retrogames.fin
	.sbyte "      "
	
	*=$2e0
	.word inicio
- ZZT
 - Site Admin

 - Mensajes: 10917
 - Registrado: Mar Nov 07, 2006 2:45 pm
 - Reputación: 10
 - Ubicación: La Florida-Santiago-Chile
 - Contactar:
 
Re: Proyecto Atari-DMD
Ahora si, se ven bacan pero aun muy tenues. Insisto, la velocidad de exploración está muy alta.
			
			
									
						
										
						Re: Proyecto Atari-DMD
Prueba esta versión, calibrable con el paddle:
			
			
									
						
										
						Código: Seleccionar todo
	*=$4000
ciclos = 200 ; parámetro a calibrar
font = $E000
font2 = $6000
pt.1 = $CB
pt.2 = $CD
pt.3 = $CF
porta =$d300	; 54016
pactl =$d302	
setvbv =$e45c
xitvbv =$e462
clock = $14
CDTMV3 =$021c
paddl0 = $0270 ;paddle 0
prepara.font.caracteres = 128
display.columnas = 48   ;¿pueden ser más?
display.caracteres = 6
vbd
	jsr borra.pantalla
	jsr despliega.pantalla
	jsr scroll
	jmp xitvbv
init.vbd
	lda #$2B
	sta pactl
	lda #$FF
	sta porta
	ldy #<vbd
	ldx #>vbd
	lda #$07
	jsr setvbv
borra.pantalla
;vamos a tomar la rutina desplegada por ZZT.
;reset
	lda #0
	sta 54604      ; start reset (debe ser 0 y 1 con un ck del latch entremedio)
	lda #0
	sta 54602      ; activando el ck del latch
	lda #1
	sta 54604      ; end reset 
;output_enable
	lda #0
	sta 54601      ; OE debe ser 0
;joy_port
	lda #0
	sta porta      ; envía un 0 al joy (8 datos X columna)
;serial_data
	lda #1
	sta 54600      ; serial data =1 (poner a 0 después de comenzar exploración (inicio1)
	rts
despliega.pantalla
	ldx #display.columnas-1
despliega.pantalla.loop1
	jsr inicia.pantalla
	lda display,x
	jsr imprime.columna
	dex
	bpl despliega.pantalla.loop1
	jsr inicia.pantalla ; para que no quede sobrecargada la última columna
	rts
inicia.pantalla
	lda #1
	sta 54603       ; activa ck
	lda #0
	sta 54603       ; desactiva ck
	lda #1
	sta 54602       ; activa latch
	lda #0
	sta 54602       ; desactiva latch
	lda #0
	sta 54600       ; serial data= 0. Ya se cargo un 1 al activarse los clock ahora debe ser 0 por cada paso
			; de la exploracion (si no pone 0 todas las columnas se activarían)
	rts
imprime.columna
	eor #$ff
	sta porta
	ldx paddl0
imprime.columna.loop
	nop
	nop
	nop
	dex
	bne imprime.columna.loop
	rts
display
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
;lista la rutina del display, ahora la del font
prepara.font
	lda #>font
	sta pt.1+1
	lda #<font
	sta pt.1
	lda #>font2
	sta pt.2+1
	lda #<font2
	sta pt.2
	lda #prepara.font.caracteres	; caracteres a transferir
	sta prepara.font.contador
prepara.font.loop1
	ldy #$7		;transferimos el font a un buffer auxiliar para trabajar
prepara.font.loop2
	lda (pt.1),y
	sta prepara.font.buffer,y
	lda #$00
	sta prepara.font.buffer2,y
	dey
	bpl prepara.font.loop2
; Ahora vamos a transponer los datos
	ldx #$00
prepara.font.loop3
	asl prepara.font.buffer
	ror prepara.font.buffer2,x
	asl prepara.font.buffer + 1
	ror prepara.font.buffer2,x
	asl prepara.font.buffer + 2
	ror prepara.font.buffer2,x
	asl prepara.font.buffer + 3
	ror prepara.font.buffer2,x
	asl prepara.font.buffer + 4
	ror prepara.font.buffer2,x
	asl prepara.font.buffer + 5
	ror prepara.font.buffer2,x
	asl prepara.font.buffer + 6
	ror prepara.font.buffer2,x
	asl prepara.font.buffer + 7
	ror prepara.font.buffer2,x
	inx
	cpx #8
	bne prepara.font.loop3
; y ahora a copiar al font2
	ldy #$7
prepara.font.loop4
	lda prepara.font.buffer2,y
	sta (pt.2),y
	dey
	bpl prepara.font.loop4
	lda pt.1
	clc
	adc #$08
	sta pt.1
	lda pt.1+1
	adc #$00
	sta pt.1+1
	lda pt.2
	clc
	adc #$08
	sta pt.2
	lda pt.2+1
	adc #$00
	sta pt.2+1
	dec prepara.font.contador
	bne prepara.font.loop1
	rts
prepara.font.buffer
	.byte 0,0,0,0,0,0,0,0
prepara.font.buffer2
	.byte 0,0,0,0,0,0,0,0
prepara.font.contador
	.byte 0
;rutina que convierte el texto en caracteres de display
;Parámetros: "x" guarda el byte menor de la posición.
; "y" guarda el byte mayor de la posición
prepara.caracteres
	stx pt.1
	sty pt.1+1
	ldy #$00
	ldx #$00
prepara.caracteres.loop1
	lda (pt.1),y
	sta prepara.caracteres.caracter
	lda #$00
	sta prepara.caracteres.caracter+1
;vamos a multiplicarlo por 8
	asl prepara.caracteres.caracter ;*2
	rol prepara.caracteres.caracter+1
	asl prepara.caracteres.caracter ;*4
	rol prepara.caracteres.caracter+1
	asl prepara.caracteres.caracter ;*8
	rol prepara.caracteres.caracter+1
	lda prepara.caracteres.caracter
	clc
	adc #<font2
	sta pt.2
	lda prepara.caracteres.caracter+1
	adc #>font2
	sta pt.2+1
	sty pt.3
	ldy #$00
prepara.caracteres.loop2
	lda (pt.2),y
	sta scroll.tabla,x
	inx
	iny
	cpy #$08
	bne prepara.caracteres.loop2
	ldy pt.3
	iny
	cpy #display.caracteres+1
	bne prepara.caracteres.loop1
	rts
prepara.caracteres.caracter
	.byte 0,0
scroll
	dec scroll.aux
	bne scroll.no.reset
	lda #$8
	sta scroll.aux
	inc scroll.puntero
	bne scroll.noinc
	inc scroll.puntero+1
scroll.noinc
	ldx scroll.puntero
	ldy scroll.puntero+1
	jsr prepara.caracteres
	lda scroll.puntero
	cmp #<tabla.retrogames.fin
	bne scroll.no.reset
	lda scroll.puntero+1
	cmp #>tabla.retrogames.fin
	bne scroll.no.reset
	lda #<tabla.retrogames-1
	sta scroll.puntero
	lda #>tabla.retrogames-1
	sta scroll.puntero+1
scroll.no.reset
	lda #$8
	sec
	sbc scroll.aux
	tax
	ldy #$00
scroll.loop3
	lda scroll.tabla,x
	sta display,y
	inx
	iny
	cpy #display.columnas
	bne scroll.loop3
	rts
scroll.aux
	.byte 8
scroll.puntero
	.byte 0,0
scroll.tabla
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
inicio
	jsr prepara.font
	jsr init.vbd
	ldx #<tabla.retrogames
	ldy #>tabla.retrogames
	stx scroll.puntero
	sty scroll.puntero+1
inicio.loop1
	ldy #display.columnas-1
inicio.loop2
	lda display,y
	sta (88),y
	dey
	bpl inicio.loop2
	jmp inicio.loop1
wait
	lda #8
	sta CDTMV3
	lda #0
	sta CDTMV3+1
wait.loop
	lda CDTMV3
	bne wait.loop
	rts
tabla.retrogames
	.sbyte "      RETROGAMES"
tabla.retrogames.fin
	.sbyte "      "
	
	*=$2e0
	.word inicio
Re: Proyecto Atari-DMD
Nueva versión: le agregué más NOP al grabar la columna, con ciclos regulables por paddle.
Le agregué además una instrucción que deje el color de fondo a blanco cuando termina la rutina, a fin de ver cuánto del barrido de la pantalla ocupa.
Saludos.
			
			
									
						
										
						Le agregué además una instrucción que deje el color de fondo a blanco cuando termina la rutina, a fin de ver cuánto del barrido de la pantalla ocupa.
Saludos.
Código: Seleccionar todo
	*=$4000
ciclos = 200 ; parámetro a calibrar
font = $E000
font2 = $6000
pt.1 = $CB
pt.2 = $CD
pt.3 = $CF
porta =$d300	; 54016
pactl =$d302	
setvbv =$e45c
xitvbv =$e462
clock = $14
CDTMV3 =$021c
paddl0 = $0270 ;paddle 0
colbk= $d01a
prepara.font.caracteres = 128
display.columnas = 48   ;¿pueden ser más?
display.caracteres = 6
vbd
	jsr borra.pantalla
	jsr despliega.pantalla
	jsr scroll
	lda #$0f
	sta colbk
	jmp xitvbv
init.vbd
	lda #$2B
	sta pactl
	lda #$FF
	sta porta
	ldy #<vbd
	ldx #>vbd
	lda #$07
	jsr setvbv
borra.pantalla
;vamos a tomar la rutina desplegada por ZZT.
;reset
	lda #0
	sta 54604      ; start reset (debe ser 0 y 1 con un ck del latch entremedio)
	lda #0
	sta 54602      ; activando el ck del latch
	lda #1
	sta 54604      ; end reset 
;output_enable
	lda #0
	sta 54601      ; OE debe ser 0
;joy_port
	lda #0
	sta porta      ; envía un 0 al joy (8 datos X columna)
;serial_data
	lda #1
	sta 54600      ; serial data =1 (poner a 0 después de comenzar exploración (inicio1)
	rts
despliega.pantalla
	ldx #display.columnas-1
despliega.pantalla.loop1
	jsr inicia.pantalla
	lda display,x
	jsr imprime.columna
	dex
	bpl despliega.pantalla.loop1
	jsr inicia.pantalla ; para que no quede sobrecargada la última columna
	rts
inicia.pantalla
	lda #1
	sta 54603       ; activa ck
	lda #0
	sta 54603       ; desactiva ck
	lda #1
	sta 54602       ; activa latch
	lda #0
	sta 54602       ; desactiva latch
	lda #0
	sta 54600       ; serial data= 0. Ya se cargo un 1 al activarse los clock ahora debe ser 0 por cada paso
			; de la exploracion (si no pone 0 todas las columnas se activarían)
	rts
imprime.columna
	eor #$ff
	sta porta
	ldx paddl0
imprime.columna.loop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	dex
	bne imprime.columna.loop
	rts
display
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
;lista la rutina del display, ahora la del font
prepara.font
	lda #>font
	sta pt.1+1
	lda #<font
	sta pt.1
	lda #>font2
	sta pt.2+1
	lda #<font2
	sta pt.2
	lda #prepara.font.caracteres	; caracteres a transferir
	sta prepara.font.contador
prepara.font.loop1
	ldy #$7		;transferimos el font a un buffer auxiliar para trabajar
prepara.font.loop2
	lda (pt.1),y
	sta prepara.font.buffer,y
	lda #$00
	sta prepara.font.buffer2,y
	dey
	bpl prepara.font.loop2
; Ahora vamos a transponer los datos
	ldx #$00
prepara.font.loop3
	asl prepara.font.buffer
	ror prepara.font.buffer2,x
	asl prepara.font.buffer + 1
	ror prepara.font.buffer2,x
	asl prepara.font.buffer + 2
	ror prepara.font.buffer2,x
	asl prepara.font.buffer + 3
	ror prepara.font.buffer2,x
	asl prepara.font.buffer + 4
	ror prepara.font.buffer2,x
	asl prepara.font.buffer + 5
	ror prepara.font.buffer2,x
	asl prepara.font.buffer + 6
	ror prepara.font.buffer2,x
	asl prepara.font.buffer + 7
	ror prepara.font.buffer2,x
	inx
	cpx #8
	bne prepara.font.loop3
; y ahora a copiar al font2
	ldy #$7
prepara.font.loop4
	lda prepara.font.buffer2,y
	sta (pt.2),y
	dey
	bpl prepara.font.loop4
	lda pt.1
	clc
	adc #$08
	sta pt.1
	lda pt.1+1
	adc #$00
	sta pt.1+1
	lda pt.2
	clc
	adc #$08
	sta pt.2
	lda pt.2+1
	adc #$00
	sta pt.2+1
	dec prepara.font.contador
	bne prepara.font.loop1
	rts
prepara.font.buffer
	.byte 0,0,0,0,0,0,0,0
prepara.font.buffer2
	.byte 0,0,0,0,0,0,0,0
prepara.font.contador
	.byte 0
;rutina que convierte el texto en caracteres de display
;Parámetros: "x" guarda el byte menor de la posición.
; "y" guarda el byte mayor de la posición
prepara.caracteres
	stx pt.1
	sty pt.1+1
	ldy #$00
	ldx #$00
prepara.caracteres.loop1
	lda (pt.1),y
	sta prepara.caracteres.caracter
	lda #$00
	sta prepara.caracteres.caracter+1
;vamos a multiplicarlo por 8
	asl prepara.caracteres.caracter ;*2
	rol prepara.caracteres.caracter+1
	asl prepara.caracteres.caracter ;*4
	rol prepara.caracteres.caracter+1
	asl prepara.caracteres.caracter ;*8
	rol prepara.caracteres.caracter+1
	lda prepara.caracteres.caracter
	clc
	adc #<font2
	sta pt.2
	lda prepara.caracteres.caracter+1
	adc #>font2
	sta pt.2+1
	sty pt.3
	ldy #$00
prepara.caracteres.loop2
	lda (pt.2),y
	sta scroll.tabla,x
	inx
	iny
	cpy #$08
	bne prepara.caracteres.loop2
	ldy pt.3
	iny
	cpy #display.caracteres+1
	bne prepara.caracteres.loop1
	rts
prepara.caracteres.caracter
	.byte 0,0
scroll
	dec scroll.aux
	bne scroll.no.reset
	lda #$8
	sta scroll.aux
	inc scroll.puntero
	bne scroll.noinc
	inc scroll.puntero+1
scroll.noinc
	ldx scroll.puntero
	ldy scroll.puntero+1
	jsr prepara.caracteres
	lda scroll.puntero
	cmp #<tabla.retrogames.fin
	bne scroll.no.reset
	lda scroll.puntero+1
	cmp #>tabla.retrogames.fin
	bne scroll.no.reset
	lda #<tabla.retrogames-1
	sta scroll.puntero
	lda #>tabla.retrogames-1
	sta scroll.puntero+1
scroll.no.reset
	lda #$8
	sec
	sbc scroll.aux
	tax
	ldy #$00
scroll.loop3
	lda scroll.tabla,x
	sta display,y
	inx
	iny
	cpy #display.columnas
	bne scroll.loop3
	rts
scroll.aux
	.byte 8
scroll.puntero
	.byte 0,0
scroll.tabla
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
inicio
	jsr prepara.font
	jsr init.vbd
	ldx #<tabla.retrogames
	ldy #>tabla.retrogames
	stx scroll.puntero
	sty scroll.puntero+1
inicio.loop1
	ldy #display.columnas-1
inicio.loop2
	lda display,y
	sta (88),y
	dey
	bpl inicio.loop2
	jmp inicio.loop1
wait
	lda #8
	sta CDTMV3
	lda #0
	sta CDTMV3+1
wait.loop
	lda CDTMV3
	bne wait.loop
	rts
tabla.retrogames
	.sbyte "      RETROGAMES"
tabla.retrogames.fin
	.sbyte "      "
	
	*=$2e0
	.word inicio
Re: Proyecto Atari-DMD
Increíble todo lo que se puede hacer con n atari.
			
			
									
						
										
						- ZZT
 - Site Admin

 - Mensajes: 10917
 - Registrado: Mar Nov 07, 2006 2:45 pm
 - Reputación: 10
 - Ubicación: La Florida-Santiago-Chile
 - Contactar:
 
Re: Proyecto Atari-DMD
Atari da pa mucho. Lo mejor detodo es que los flippers de su época corren el software y hardware casi iguales, por eso es relativamente fácil hacer compatibilidades.Salonvip escribió:Increíble todo lo que se puede hacer con n atari.
Nup, no anda el scroll (se prenden solo la dos primeras columnas). El cambio de color de fondo si anda, y el efecto es alucinante!.WillySoft escribió:Nueva versión: le agregué más NOP al grabar la columna, con ciclos regulables por paddle.
Le agregué además una instrucción que deje el color de fondo a blanco cuando termina la rutina, a fin de ver cuánto del barrido de la pantalla ocupa.
Saludos.► Mostrar Spoiler
- ZZT
 - Site Admin

 - Mensajes: 10917
 - Registrado: Mar Nov 07, 2006 2:45 pm
 - Reputación: 10
 - Ubicación: La Florida-Santiago-Chile
 - Contactar:
 
Re: Proyecto Atari-DMD
Atari da pa mucho. Lo mejor detodo es que los flippers de su época corren el software y hardware casi iguales, por eso es relativamente fácil hacer compatibilidades.Salonvip escribió:Increíble todo lo que se puede hacer con n atari.
Nup, no anda el scroll (se prenden solo la dos primeras columnas). El cambio de color de fondo si anda, y el efecto es alucinante!.WillySoft escribió:Nueva versión: le agregué más NOP al grabar la columna, con ciclos regulables por paddle.
Le agregué además una instrucción que deje el color de fondo a blanco cuando termina la rutina, a fin de ver cuánto del barrido de la pantalla ocupa.
Saludos.► Mostrar Spoiler
Re: Proyecto Atari-DMD
Cool!  
			
			
									
						
										
						Re: Proyecto Atari-DMD
Prueba esta versión, le saqué un JSR final que buscaba nivelar la intensidad de todas las columnas:ZZT escribió: Nup, no anda el scroll (se prenden solo la dos primeras columnas). El cambio de color de fondo si anda, y el efecto es alucinante!.
Código: Seleccionar todo
	*=$4000
ciclos = 200 ; parámetro a calibrar
font = $E000
font2 = $6000
pt.1 = $CB
pt.2 = $CD
pt.3 = $CF
porta =$d300	; 54016
pactl =$d302	
setvbv =$e45c
xitvbv =$e462
clock = $14
CDTMV3 =$021c
paddl0 = $0270 ;paddle 0
colbk= $d01a
prepara.font.caracteres = 128
display.columnas = 48   ;¿pueden ser más?
display.caracteres = 6
vbd
	jsr borra.pantalla
	jsr despliega.pantalla
	jsr scroll
	lda #$0f
	sta colbk
	jmp xitvbv
init.vbd
	lda #$2B
	sta pactl
	lda #$FF
	sta porta
	ldy #<vbd
	ldx #>vbd
	lda #$07
	jsr setvbv
borra.pantalla
;vamos a tomar la rutina desplegada por ZZT.
;reset
	lda #0
	sta 54604      ; start reset (debe ser 0 y 1 con un ck del latch entremedio)
	lda #0
	sta 54602      ; activando el ck del latch
	lda #1
	sta 54604      ; end reset 
;output_enable
	lda #0
	sta 54601      ; OE debe ser 0
;joy_port
	lda #0
	sta porta      ; envía un 0 al joy (8 datos X columna)
;serial_data
	lda #1
	sta 54600      ; serial data =1 (poner a 0 después de comenzar exploración (inicio1)
	rts
despliega.pantalla
	ldx #display.columnas-1
despliega.pantalla.loop1
	jsr inicia.pantalla
	lda display,x
	jsr imprime.columna
	dex
	bpl despliega.pantalla.loop1
;	jsr inicia.pantalla ; para que no quede sobrecargada la última columna
	rts
inicia.pantalla
	lda #1
	sta 54603       ; activa ck
	lda #0
	sta 54603       ; desactiva ck
	lda #1
	sta 54602       ; activa latch
	lda #0
	sta 54602       ; desactiva latch
	lda #0
	sta 54600       ; serial data= 0. Ya se cargo un 1 al activarse los clock ahora debe ser 0 por cada paso
			; de la exploracion (si no pone 0 todas las columnas se activarían)
	rts
imprime.columna
	eor #$ff
	sta porta
	ldx paddl0
imprime.columna.loop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	dex
	bne imprime.columna.loop
	rts
display
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
;lista la rutina del display, ahora la del font
prepara.font
	lda #>font
	sta pt.1+1
	lda #<font
	sta pt.1
	lda #>font2
	sta pt.2+1
	lda #<font2
	sta pt.2
	lda #prepara.font.caracteres	; caracteres a transferir
	sta prepara.font.contador
prepara.font.loop1
	ldy #$7		;transferimos el font a un buffer auxiliar para trabajar
prepara.font.loop2
	lda (pt.1),y
	sta prepara.font.buffer,y
	lda #$00
	sta prepara.font.buffer2,y
	dey
	bpl prepara.font.loop2
; Ahora vamos a transponer los datos
	ldx #$00
prepara.font.loop3
	asl prepara.font.buffer
	ror prepara.font.buffer2,x
	asl prepara.font.buffer + 1
	ror prepara.font.buffer2,x
	asl prepara.font.buffer + 2
	ror prepara.font.buffer2,x
	asl prepara.font.buffer + 3
	ror prepara.font.buffer2,x
	asl prepara.font.buffer + 4
	ror prepara.font.buffer2,x
	asl prepara.font.buffer + 5
	ror prepara.font.buffer2,x
	asl prepara.font.buffer + 6
	ror prepara.font.buffer2,x
	asl prepara.font.buffer + 7
	ror prepara.font.buffer2,x
	inx
	cpx #8
	bne prepara.font.loop3
; y ahora a copiar al font2
	ldy #$7
prepara.font.loop4
	lda prepara.font.buffer2,y
	sta (pt.2),y
	dey
	bpl prepara.font.loop4
	lda pt.1
	clc
	adc #$08
	sta pt.1
	lda pt.1+1
	adc #$00
	sta pt.1+1
	lda pt.2
	clc
	adc #$08
	sta pt.2
	lda pt.2+1
	adc #$00
	sta pt.2+1
	dec prepara.font.contador
	bne prepara.font.loop1
	rts
prepara.font.buffer
	.byte 0,0,0,0,0,0,0,0
prepara.font.buffer2
	.byte 0,0,0,0,0,0,0,0
prepara.font.contador
	.byte 0
;rutina que convierte el texto en caracteres de display
;Parámetros: "x" guarda el byte menor de la posición.
; "y" guarda el byte mayor de la posición
prepara.caracteres
	stx pt.1
	sty pt.1+1
	ldy #$00
	ldx #$00
prepara.caracteres.loop1
	lda (pt.1),y
	sta prepara.caracteres.caracter
	lda #$00
	sta prepara.caracteres.caracter+1
;vamos a multiplicarlo por 8
	asl prepara.caracteres.caracter ;*2
	rol prepara.caracteres.caracter+1
	asl prepara.caracteres.caracter ;*4
	rol prepara.caracteres.caracter+1
	asl prepara.caracteres.caracter ;*8
	rol prepara.caracteres.caracter+1
	lda prepara.caracteres.caracter
	clc
	adc #<font2
	sta pt.2
	lda prepara.caracteres.caracter+1
	adc #>font2
	sta pt.2+1
	sty pt.3
	ldy #$00
prepara.caracteres.loop2
	lda (pt.2),y
	sta scroll.tabla,x
	inx
	iny
	cpy #$08
	bne prepara.caracteres.loop2
	ldy pt.3
	iny
	cpy #display.caracteres+1
	bne prepara.caracteres.loop1
	rts
prepara.caracteres.caracter
	.byte 0,0
scroll
	dec scroll.aux
	bne scroll.no.reset
	lda #$8
	sta scroll.aux
	inc scroll.puntero
	bne scroll.noinc
	inc scroll.puntero+1
scroll.noinc
	ldx scroll.puntero
	ldy scroll.puntero+1
	jsr prepara.caracteres
	lda scroll.puntero
	cmp #<tabla.retrogames.fin
	bne scroll.no.reset
	lda scroll.puntero+1
	cmp #>tabla.retrogames.fin
	bne scroll.no.reset
	lda #<tabla.retrogames-1
	sta scroll.puntero
	lda #>tabla.retrogames-1
	sta scroll.puntero+1
scroll.no.reset
	lda #$8
	sec
	sbc scroll.aux
	tax
	ldy #$00
scroll.loop3
	lda scroll.tabla,x
	sta display,y
	inx
	iny
	cpy #display.columnas
	bne scroll.loop3
	rts
scroll.aux
	.byte 8
scroll.puntero
	.byte 0,0
scroll.tabla
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
	.byte 0,0,0,0,0,0,0,0
inicio
	jsr prepara.font
	jsr init.vbd
	ldx #<tabla.retrogames
	ldy #>tabla.retrogames
	stx scroll.puntero
	sty scroll.puntero+1
inicio.loop1
	ldy #display.columnas-1
inicio.loop2
	lda display,y
	sta (88),y
	dey
	bpl inicio.loop2
	jmp inicio.loop1
wait
	lda #8
	sta CDTMV3
	lda #0
	sta CDTMV3+1
wait.loop
	lda CDTMV3
	bne wait.loop
	rts
tabla.retrogames
	.sbyte "      RETROGAMES"
tabla.retrogames.fin
	.sbyte "      "
	
	*=$2e0
	.word inicio
- ZZT
 - Site Admin

 - Mensajes: 10917
 - Registrado: Mar Nov 07, 2006 2:45 pm
 - Reputación: 10
 - Ubicación: La Florida-Santiago-Chile
 - Contactar:
 
Re: Proyecto Atari-DMD
Sigue sin haber scroll.
			
			
									
						
										
						Re: Proyecto Atari-DMD
Que hermoso y la mansa pega programando eso. A mi me vendría útil para la puerta de mi pieza un "no molestar" así de cool,  
			
			
									
						
										
						- 
					
- Similar Topics
 - Respuestas
 - Vistas
 - Último mensaje
 
 
- 
						
- 0 Respuestas
 - 56152 Vistas
 - 
								Último mensaje por Poltergeist																			
											
										
																		
 
 

