Karoshi MSX Community
06 de Julio de 2021, 04:53:59 am *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias:
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: [1]
  Imprimir  
Autor Tema: ejecutar comandos copy (MSX2) heeelp  (Leído 4391 veces)
0 Usuarios y 1 Visitante están viendo este tema.
cybernoid
Karoshi Maniac
****
Mensajes: 368



WWW
« : 16 de Diciembre de 2009, 10:22:10 am »

Hola,

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

Código:
;  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 EXTROM


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?
« Última modificación: 16 de Diciembre de 2009, 03:44:23 pm por gobblin » En línea
Jon_Cortazar
Administrator
Karoshi Forum's God
********
Mensajes: 2777



WWW Email
« Respuesta #1 : 16 de Diciembre de 2009, 03:14:11 pm »

Yo siento no poder ayudarte, porque no tengo ni guarra de como van los comandos del VDP del MSX2 Cry, de todas formas te dejo un link a un artículo del MAP donde se trata el tema y que tal vez te de alguna pista: VDP programming tutorial Wink
En línea

Jon Cortázar Abraido (aka El Viejo Archivero)
RELEVO Videogames
[Dioniso: La cafeína está haciendo su trabajo; yo espero hacer el mío.]
[pitpan: Me sigue pareciendo más productivo jugar al SNAIL MAZE que seguir esta discusión.]
cybernoid
Karoshi Maniac
****
Mensajes: 368



WWW
« Respuesta #2 : 16 de Diciembre de 2009, 03:44:55 pm »

Yo siento no poder ayudarte, porque no tengo ni guarra de como van los comandos del VDP del MSX2 Cry, de todas formas te dejo un link a un artículo del MAP donde se trata el tema y que tal vez te de alguna pista: VDP programming tutorial Wink

gracias, le pegare un vistazo, aunque mi ingles no vale mucho que se diga Tongue
En línea
cybernoid
Karoshi Maniac
****
Mensajes: 368



WWW
« Respuesta #3 : 16 de Diciembre de 2009, 05:02:24 pm »

parece que he conseguido copiar a traves del VDP, pero atraves de la bios nada Tongue

bueno, seguire jugando a ver que pasa...

por cierto, al VDP del msx2 tambien hay que dejarle tiempo entre out y out?  si hay que dejarle tiempo ¿como lo calculo?
En línea
cybernoid
Karoshi Maniac
****
Mensajes: 368



WWW
« Respuesta #4 : 17 de Diciembre de 2009, 09:27:52 am »

solucionado Tongue estaba pasando mal los parametros, me di cuenta leyendo el manual del VDP del msx2
En línea
ARTRAG
Visitante
« Respuesta #5 : 17 de Diciembre de 2009, 12:02:57 pm »

This is from the tutorial and works
Código:
;
;Is supposed to run in screen 5, so you should make a small BASIC loader,
; or call the CHMOD BIOS routine.
;
DoExampleCopy:
xor a ;set vram write base address
ld hl,#8000 ; to 1st byte of page 1...
call SetVDP_Write

ld a,#88 ;use color 8 (red)
FillL1: ld c,8 ;fill 1st 8 lines of page 1
FillL2: ld b,128 ;
out (#98),a ;could also have been done with
djnz FillL2 ;a vdp command (probably faster)
dec c ;(and could also use a fast loop)
jp nz,FillL1

ld hl,COPYBLOCK ;execute the copy
call DoCopy

ret


COPYBLOCK:
DB 0,0,0,1
DB 0,0,0,0
DB 8,0,8,0
DB 0,0,#D0 ;HMMM

;As an alternate notation, you might actually prefer the following:
;
; DW #0000,#0100
; DW #0000,#0000
; DW #0008,#0008
; DB 0,0,#D0

En línea
cybernoid
Karoshi Maniac
****
Mensajes: 368



WWW
« Respuesta #6 : 17 de Diciembre de 2009, 12:33:24 pm »

This is from the tutorial and works
Código:
;
;Is supposed to run in screen 5, so you should make a small BASIC loader,
; or call the CHMOD BIOS routine.
;
DoExampleCopy:
xor a ;set vram write base address
ld hl,#8000 ; to 1st byte of page 1...
call SetVDP_Write

ld a,#88 ;use color 8 (red)
FillL1: ld c,8 ;fill 1st 8 lines of page 1
FillL2: ld b,128 ;
out (#98),a ;could also have been done with
djnz FillL2 ;a vdp command (probably faster)
dec c ;(and could also use a fast loop)
jp nz,FillL1

ld hl,COPYBLOCK ;execute the copy
call DoCopy

ret


COPYBLOCK:
DB 0,0,0,1
DB 0,0,0,0
DB 8,0,8,0
DB 0,0,#D0 ;HMMM

;As an alternate notation, you might actually prefer the following:
;
; DW #0000,#0100
; DW #0000,#0000
; DW #0008,#0008
; DB 0,0,#D0


tnx Smiley

me lo mirare, igualmente ya lo tengo solucionado Smiley

disculpa que no conteste en ingles, mi ingles escrito es peor que mi ingles leido
En línea
MsxKun
Karoshi Forum's Guru
*******
Mensajes: 1554


Kimochi-ii


WWW Email
« Respuesta #7 : 19 de Diciembre de 2009, 04:05:34 pm »

parece que he conseguido copiar a traves del VDP, pero atraves de la bios nada Tongue

bueno, seguire jugando a ver que pasa...

por cierto, al VDP del msx2 tambien hay que dejarle tiempo entre out y out?  si hay que dejarle tiempo ¿como lo calculo?


Pues no hace falta, de hecho se come ristras de outis a pelo... (que me corrijan si me equivoco)
En línea

--

Cindy Lauper She Bops!
Páginas: [1]
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.21 | SMF © 2013, Simple Machines XHTML 1.0 válido! CSS válido!