Llamar a |b desde ensamblador.
Reglas del Foro
Debido a que hay varios temas pidiendo ayuda para programar en ensamblador máquinas distintas al Amstrad CPC, con micro distinto al Z80 y que incluso dependen del sistema operativo, nos vemos en la necesidad de poner por escrito que estos posts son bienvenidos pero que no es el lugar adecuado ya que por estos lares nos dedicamos más al ensamblador del Z80, un microprocesador de 8 bits que tuvo su gran auge en ordenadores y consolas de los años 80.
De todas formas, esto no quita que alguien que sepa del asunto pueda postear alguna respuesta pero es más fácil encontrar foros dedicados a programar en ensamblador en Windows o MS-DOS que ayudarán más que nosotros:
http://www.lawebdelprogramador.com/news ... nsamblador
Debido a que hay varios temas pidiendo ayuda para programar en ensamblador máquinas distintas al Amstrad CPC, con micro distinto al Z80 y que incluso dependen del sistema operativo, nos vemos en la necesidad de poner por escrito que estos posts son bienvenidos pero que no es el lugar adecuado ya que por estos lares nos dedicamos más al ensamblador del Z80, un microprocesador de 8 bits que tuvo su gran auge en ordenadores y consolas de los años 80.
De todas formas, esto no quita que alguien que sepa del asunto pueda postear alguna respuesta pero es más fácil encontrar foros dedicados a programar en ensamblador en Windows o MS-DOS que ayudarán más que nosotros:
http://www.lawebdelprogramador.com/news ... nsamblador
Llamar a |b desde ensamblador.
Hola, ¿alguien sabe si se puede llamar a esta rsx desde ensamblador?. No tengo muy claro como funciona el tema de las rsx porque no tengo ramcards ni nada.
La idea es que me gustaria tener un |hxca y un |hxcb de tal manera que al llamarlos internamente antes de ejecuar la rom hagan un |a o |b automatico para no tener que hacerlo tu desde el basic. Independientemente de en que unidad estes tu en el basic.
La idea es que me gustaria tener un |hxca y un |hxcb de tal manera que al llamarlos internamente antes de ejecuar la rom hagan un |a o |b automatico para no tener que hacerlo tu desde el basic. Independientemente de en que unidad estes tu en el basic.
Re: Llamar a |b desde ensamblador.
Échale un vistazo a la rutina del firmware &BCD4, que busca un RSX en las ROM.
Re: Llamar a |b desde ensamblador.
Fácil, en &A700 se establece la unidad de disco en uso, A=0 y B=1 así que es tan fácil como:
EDITADO para corregir dirección de memoria.
Código: Seleccionar todo
|A
xor a ; o ld a, 0
ld (&a700),a
|B
ld a,1
ld (&a700),a
Salu2,
Arta
Arta
Re: Llamar a |b desde ensamblador.
Pues no parece tema sencilo.
Pongo esto:
org &8000
ld a,&c2
ld (&9002),a
ld hl,&9002
call &bcd4;
Y me dice que la dirección es c021 (hasta ahi vale es el salto en el amsdos que esta comentado en el desensamblado)
Y la rom me dice que es 84 ¿El burning rubber?.
En cualquier caso si monto amsdos despues de eso en la upper rom y hago un jp a c021/call , desaparece en otra dimension y no vuelve.
Dicho esto y despues de hacer el tonto voy a probar lo de artaburu que me ha saltado al enviar el mensaje.
edit: pues tampoco va, sigo estando en a.
Pongo esto:
org &8000
ld a,&c2
ld (&9002),a
ld hl,&9002
call &bcd4;
Y me dice que la dirección es c021 (hasta ahi vale es el salto en el amsdos que esta comentado en el desensamblado)
Y la rom me dice que es 84 ¿El burning rubber?.
En cualquier caso si monto amsdos despues de eso en la upper rom y hago un jp a c021/call , desaparece en otra dimension y no vuelve.
Dicho esto y despues de hacer el tonto voy a probar lo de artaburu que me ha saltado al enviar el mensaje.
edit: pues tampoco va, sigo estando en a.
Re: Llamar a |b desde ensamblador.
Corcho, que me he colado, que es en &A700, no en &A000
Código: Seleccionar todo
|A
xor a ; o ld a, 0
ld (&a700),a
|B
ld a,1
ld (&a700),a
Salu2,
Arta
Arta
Re: Llamar a |b desde ensamblador.
¿El Burning Rubber? Se estás trabajando en un Plus, cuidado con la numeración de las ROM que varía mucho. De todas maneras, lo que indica artaburu parece lo más sencillo para usar en código. Desde BASIC funciona
Re: Llamar a |b desde ensamblador.
Claro miguelsky. Es para el parcheo al cartucho del sistema que estoy haciendo ¿No lo has visto en cpc wiki?.
Me he quedado para mi las llamadas rsx |juego equivalentes. Y las he desviado para que llamen al hxc y al c4cpc.
Es que para mi era un toston acceder al hxc. c4cpc->seleccionar os-> |b ->cat->run" hxc". asi cada reinicio.
Ahora lo enciendo y solo tengo que hacer |b |hxc y espero eliminar el barra b.
Eso si, ha sido un poco toston hacerlo, porque el hxc no se puede emular en el winape, he tenido que ir parcheando los saltos para ver cuando salia.
Tengo el |spiel libre para transformarlo en un |hxcb
probare lo de artaburu, mientras Yo habia encontrado otra manera:
Me he quedado para mi las llamadas rsx |juego equivalentes. Y las he desviado para que llamen al hxc y al c4cpc.
Es que para mi era un toston acceder al hxc. c4cpc->seleccionar os-> |b ->cat->run" hxc". asi cada reinicio.
Ahora lo enciendo y solo tengo que hacer |b |hxc y espero eliminar el barra b.
Eso si, ha sido un poco toston hacerlo, porque el hxc no se puede emular en el winape, he tenido que ir parcheando los saltos para ver cuando salia.
Tengo el |spiel libre para transformarlo en un |hxcb
probare lo de artaburu, mientras Yo habia encontrado otra manera:
Código: Seleccionar todo
org &8000
ld a,&c2
ld (&9002),a
ld hl,&9002
call &bcd4;
call &001b
ret
Re: Llamar a |b desde ensamblador.
Correcto, funciona! No, no he leído el hilo en cpcwiki, hace meses que sólo leo los que me llaman la atención por el título. Mi tiempo ya no me da para mucho. Como no tengo c4cpc ni hxc me estoy saltando esos Últimamente sólo leo el juego de C|-|E, el wifi y ayer un reflote sobre el GAC. Y algún video de jgonza
Re: Llamar a |b desde ensamblador.
Pues si, he aqui el resultado que dudo que le interese a nadie porque to cristo tiene rom cards(menos yo XD) .
Al final he usado el parche artaburo que eran menos lineas. Y lo he pasado por parametros,me reservo el spiel para otra cosa si se me ocurre
El firm 3.15 mas el parados no me va se reinicia constantemente espero que no sea culpa mia.
Queda tal que |game/spiel burning rubber |hxc lee de donde estes |hxc,"a"(o A) lee de a |hxc,"b" (o b) lee de b |c4cpc=c4cpc |hxc.0 o |hxc,1
Al final he usado el parche artaburo que eran menos lineas. Y lo he pasado por parametros,me reservo el spiel para otra cosa si se me ocurre
El firm 3.15 mas el parados no me va se reinicia constantemente espero que no sea culpa mia.
Queda tal que |game/spiel burning rubber |hxc lee de donde estes |hxc,"a"(o A) lee de a |hxc,"b" (o b) lee de b |c4cpc=c4cpc |hxc.0 o |hxc,1
- Adjuntos
-
- compilacion cartuchos españoles.rar
- (487.68 KiB) Descargado 35 veces
Última edición por dragon131 el Vie 19 Ago , 2016 10:40 pm, editado 4 veces en total.
Re: Llamar a |b desde ensamblador.
Pues artaburu he encontrado un fallo(si se le puede llamar asi) pokear a700 no funciona si cargas el fimrware 3.12 en la lower rom.
De echo un barra b no la modifica tampoco esa dire.
¿Alquien sabe donde esta la dirección?
De echo un barra b no la modifica tampoco esa dire.
¿Alquien sabe donde esta la dirección?
Re: Llamar a |b desde ensamblador.
Vale, pues ya me ha contado syx cual es el problema.
Asi no se hace. No se puede mirar directamente &a700 porque forma parte de la zona de las variables de amsdos. Y la zona puede desplazarse hacia abajo segun necesidades del sistema operativo y entonces el invento se va al traste.
El codigo correcto es:
Porque en la variable &be7d se guarda la dirección de memoria donde empieza la zona de variables de amsdos. Y esta coincide casualmente con la de la disquetera a 0 b.
Asi no se hace. No se puede mirar directamente &a700 porque forma parte de la zona de las variables de amsdos. Y la zona puede desplazarse hacia abajo segun necesidades del sistema operativo y entonces el invento se va al traste.
El codigo correcto es:
Código: Seleccionar todo
ld hl,(&be7d)
ld a,1 ;0 0
ld (hl),a
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro
La Comunidad Española |