novato saluda y duda ensamblera(ejecutar comandos copy (MSX2) heeelp)

Door cybernoid

Rookie (19)

afbeelding van cybernoid

16-12-2009, 12:12

Hola,

Ante todo saludar a la gente del foro, soy usuario de MSX desde hace muchos años, seguramente no tantos como muchos de vosotros Smile yo me incorpore en el 92, en pleno declive Tongue, fue cuando realmente vi un poco de lo que hacia el MSX, ademas mi spectrum ya estaba en mas declive que el MSX que al menos se nutria del soft japones, despues de mucho tiempo usando MSX1 me compre mi MSX2 Philimps NMS 8235 (mas que comprarlo lo cambie por un PC Tongue ) y mas tarde adquiri un 8245, como (casi) todos tube una larga epoca de abandono del sistema y hace un añito o algo mas he resucitado (emeesequixeramente hablando)

total que ahora voy probando cosillas y aprendiendo asm, y como no, cuando uno hace cosas empizan a surgir las dudas Smile

aqui va una:

Vereis, queria hacer unas pruebecillas con los copiando datos de VRAM a VRAM en msx2, he visto que dispone de unas funciones por hard, pero no tengo ni idea de como llamarlas

he visto que esta funcion en la bios BLTVV que permite hacer eso(copiar de vram a vram)... pero la verdad ni puñetera idea de como usarla

para empezar aparentemente hay que pasar por la funcion SUBROM o EXTROM pasandoles en IX la direccion de la funcion deseada en este caso BLTVV

parece que la cosa seria algo asi

;aqui los parametros para BLTVV
ld ix,BLTVV
call subrom

pero bueno, entonces me miro la funcion BLTVV y aqui viene el mas dificil todavia Tongue, entre mi pobre nivel de ingles y mi poca experiencia ensamblera me lia una poco

Function: transfers data in VRAM area

Input: HL register <-- F562H
The following parameters should be set:

* SX (F562H, 2) X-coordinate of the source
* SY (F564H, 2) Y-coordinate of the source
* DX (F566H, 2) X-coordinate of the destination
* DY (F568H, 2) Y-coordinate of the destination
* NX (F56AH, 2) number of dots in the X direction
* NY (F56CH, 2) number of dots in the Y direction
* CDUMMY (F56EH, 1) dummy (not required to be set)
* ARG (F56FH, 1) selects the direction and expansion
RAM (same as VDP R#45)
* LOGOP (F570H, 1) logical operation code (same as the
logical operation code of VDP)

Output: the CY flag is reset

Registers: all

entiendo que SC,SY,etc,etc son posiciones de memoria, pero no se si pertenecen a la ram o a la vram
creo (si, CREO) que NX y NY hace referencia a el ancho y alto de la imagen, pero no lo tengo claro( eso de "numero de puntos" me despista)

alguien tiene algun ejemplo que me pueda servir?

gracias de antemano

EDIT: adjunto pedacin de codigo que no chuta

;  MSX2

;---------------------------------------------------------
; ASSEMBLER DIRECTIVES (asMSX)
;---------------------------------------------------------
        .bios           ; Defines MSX BIOS routines
        .page 1         ; Assembly starts at 8000h
        .rom            ; Selected format
        ;.basic
        .db      "MSX2",1Ah
                        ; Text header - not MSX standard
        .start  INIT    ; Program start

INIT:
		call    INIGRP
		ld a,5
	    call CHGMOD
	    

   	    ld hl,0    ; inicio pantalla sc5
	    ld b,100   ; repetir 100 veces
   	    ld a,255
PINTA:                ; dibujo un rallote feo
	    call WRTVRM
	    inc hl
	    djnz PINTA


;copio los parametros de copia en la direccion que toca (teoricamente claro...)
		ld de,$F562 ; direccion de los parametros
		ld hl,datas
		ld bc,15
		ldir

; ahora quiero copiarlo en otras coordenadas

	    ld hl,$F562 ; direccion de los parametros
	    ld ix,$0191 ; BLTVV
	    call SUBROM


BUCLE:                      ; dando vueltas como un tonto...
		jp BUCLE


; parametros
datas:
	db 0,0,0,0   	; sx,sy
	db 0,100,0,100 	; dx,dy
	db 0,100,0,100  ; nx,ny
	db 0 			; dummy
	db 0 			; arg
	db 0 			; logical operation
		 			; 15 bytes

¿ por que no chuta? WHYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY?

Aangemeld of registreer om reacties te plaatsen

Van cybernoid

Rookie (19)

afbeelding van cybernoid

17-12-2009, 09:43

solucionado, le pasaba mal los parametros Tongue me di cuenta mirando el manual del VDP

Van mesiasmsx

Prophet (3324)

afbeelding van mesiasmsx

21-12-2009, 13:16

Hola!

Primero de todo saludarte y darte la enhorabuena por reengancharte a la Comunity Shield Tongue del MSX . Yo practicamente soy usuario desde el mismo año que tu auqnue en mi caso no lo he abnadonado nunca.

Me alegro de que otro usuario este con nosotros y espero que esa programacion que etsas haciendo se transforme un dia en algo para que todos lo podamos disfrutar ni que sea un programa para ahcer las quinielas Big smile . A mi me gustaria algun dia (Si tardo mucho mas sere mas viejo que David el Gnomo Santa ) empezar a aprender iniciandome ocn el Basic, pro que en teoria es lo mas sencillo,no? Es la duda que tengo, si para alguien que no tiene ni puta idea mas que hacer prints lo logico y normal es adentrarse en el Basic.

Saludetes.

Van cybernoid

Rookie (19)

afbeelding van cybernoid

23-12-2009, 18:01

hola mesiasmsx,

Pues en ello estamos, por si no lo sabias en la web de konamito estamos llevando a cabo un proyecto en ensamblador en el que puede participar cualquiera, unos hacen graficos, otros mapeado,etc,etc lo digo por si te animas Smile el codigo es abierto, asi que puedes mirarlo, modificarlo etc

la verdad es que el basic para empezar es lo mejor, luego puedes comenzar a mezclarlo con asm y de ahi a asm o C directamente Smile

si necesitas ayuda con el basic ya sabes donde estoy Big smile Santa