Leyendo el teclado ASM + Z88DK

Soporte técnico sobre los lanzamientos de MojonTwins y comentarios sobre los güegos. Ofrecemos soporte técnico con Fourspriter, te ayudamos con ZX Basic o Z88DK, te damos pistas some cómo saltarse un bicho y cosas así.

Moderador: na_th_an

Avatar de Usuario
radastan
Mensajes: 692
Registrado: Vie, 20 Ago 2010, 12:54
Contactar:

Leyendo el teclado ASM + Z88DK

Mensajepor radastan » Vie, 14 Mar 2014, 23:19

Bien, he realizado esta rutina:

$this->bbcode_second_pass_code('', 'int port_in (int port)
{
#asm
ld hl,2
add hl,sp
ld c, (hl)
in a,(c)
ld h,0
ld l, a
#endasm
}')

Si hago un:

if (port_in(64510)&1) ....

Debería detectar si se pulsa la tecla Q.

¿Me estoy equivocando? es que "no doy con la tecla". :mrgreen:
Avatar de Usuario
iforeve
Mensajes: 731
Registrado: Vie, 09 Ene 2009, 19:49

Re: Leyendo el teclado ASM + Z88DK

Mensajepor iforeve » Sab, 15 Mar 2014, 00:09

hola radastran

ld c, (hl) cambialo por ld bc, (hl). La instruccion in a, (c) lo que hace es que pone en la mitad inferior del bus de direcciones el valor de c y en el superior el b. Si te das cuenta, en tu rutina el registro B puede tener cualquier bazofia

Salu2.
antoniovillena
Mensajes: 494
Registrado: Jue, 24 Oct 2013, 15:52

Re: Leyendo el teclado ASM + Z88DK

Mensajepor antoniovillena » Sab, 15 Mar 2014, 00:28

Has hecho mal dos cosas, primero estás tratando al parámetro como un puntero y segundo lo que te indica iforeve (salvo que ld bc,(hl) no existe). Usando fastcall se te queda tan sencillo como esto:

$this->bbcode_second_pass_code('', '
int port_in __FASTCALL__ (int port)
{
#asm
ld b, h
ld c, l
ld h, 0
in l, (c)
#endasm
}')
Avatar de Usuario
iforeve
Mensajes: 731
Registrado: Vie, 09 Ene 2009, 19:49

Re: Leyendo el teclado ASM + Z88DK

Mensajepor iforeve » Sab, 15 Mar 2014, 00:42

tienes razon antonio, he visto que faltaba cargar el registro b y no he reparado en que no existe la instruccion. Es que la noche me confunde :lol:
Avatar de Usuario
radastan
Mensajes: 692
Registrado: Vie, 20 Ago 2010, 12:54
Contactar:

Re: Leyendo el teclado ASM + Z88DK

Mensajepor radastan » Sab, 15 Mar 2014, 10:23

Pues gracias a ambos, pero ninguna de vuestras dos soluciones funciona.

:lol: :lol: :lol: :lol:

Os cuento:

ld bc, (hl)

esa instruccción no se puede hacer en Z88DK.

Y el fastcall da error de compilación.

Lo que me ha ido bien es hacer:

$this->bbcode_second_pass_code('', 'int port_in (int port)
{
#asm
ld b, h
ld c, l
ld h, 0
in l, (c)
#endasm
}')

Todo perfecto, al final habéis dado con la solución pero el problema era que os habíais pasado de sofisticación. :mrgreen:

Lo importante es que funciona, muchísimas gracias a los dos.
Avatar de Usuario
iforeve
Mensajes: 731
Registrado: Vie, 09 Ene 2009, 19:49

Re: Leyendo el teclado ASM + Z88DK

Mensajepor iforeve » Sab, 15 Mar 2014, 10:40

tu ere un cachondo radastran, nos has vacilao :lol: :lol: :lol: :lol: :lol:
antoniovillena
Mensajes: 494
Registrado: Jue, 24 Oct 2013, 15:52

Re: Leyendo el teclado ASM + Z88DK

Mensajepor antoniovillena » Sab, 15 Mar 2014, 11:38

Radastan creo que el fastcall va delante de la función. Que funcione ahora no te garantiza que lo haga en futuras versiones
Avatar de Usuario
radastan
Mensajes: 692
Registrado: Vie, 20 Ago 2010, 12:54
Contactar:

Re: Leyendo el teclado ASM + Z88DK

Mensajepor radastan » Sab, 15 Mar 2014, 22:33

$this->bbcode_second_pass_quote('antoniovillena', 'R')adastan creo que el fastcall va delante de la función. Que funcione ahora no te garantiza que lo haga en futuras versiones


¿Y cuál es la función de __FASTCALL__?