FAQ  •  Register  •  Login

Instrucciones para operar a nivel de bit

<<

juan

Posts: 2

Joined: Sat Nov 08, 2008 9:51 am

Post Sat Nov 08, 2008 10:01 am

Instrucciones para operar a nivel de bit

Hola, boriel.

¿Hay en zx basic instrucciones o funciones para trabajar a nivel de bit? Las necesito, por ejemplo, para leer el teclado con IN.

Gracias.
<<

boriel

Site Admin

Posts: 1463

Joined: Wed Nov 01, 2006 6:18 pm

Location: Santa Cruz de Tenerife, Spain

Post Sat Nov 08, 2008 5:55 pm

Re: Instrucciones para operar a nivel de bit

juan wrote:Hola, boriel.

¿Hay en zx basic instrucciones o funciones para trabajar a nivel de bit? Las necesito, por ejemplo, para leer el teclado con IN.

Gracias.


Hola, Juan.
Pues me vas a matar, porque están previstas, pero no las he programado aún. :oops:

Tienes dos opciones por ahora:
1) Usar divisiones y mutiplicaciones de potencias de 2 (el compilador creo que ya las optimiza).
2) Meter ensamblador en medio del código.

Bueno, también puedes esperar a que las saque. Están previstos los Desplazamientos, BIT, AND, OR y XOR a nivel de BIT de hasta 32 bits. Pero no he tenido tiempo de hacerlo. En cuanto lo tenga te a aviso. Eso sí, estas operaciones no van a ser tan rápidas quizá como en ASM. Pero para lo que quieres hacer yo creo que de sobra.
<<

juan

Posts: 2

Joined: Sat Nov 08, 2008 9:51 am

Post Sat Nov 08, 2008 8:59 pm

Re: Instrucciones para operar a nivel de bit

No problem. Aislaré las operaciones a nivel de bit en funciones (y me apañaré con operaciones con múltiplos de 2), así, cuando el compilador las implemente, sólo tendré que cambiar estas funciones.

Muchas gracias por contestar.
<<

boriel

Site Admin

Posts: 1463

Joined: Wed Nov 01, 2006 6:18 pm

Location: Santa Cruz de Tenerife, Spain

Post Fri Feb 13, 2009 8:30 am

Re: Instrucciones para operar a nivel de bit

juan wrote:No problem. Aislaré las operaciones a nivel de bit en funciones (y me apañaré con operaciones con múltiplos de 2), así, cuando el compilador las implemente, sólo tendré que cambiar estas funciones.

Muchas gracias por contestar.

Gracias por tu paciencia, Juan.

Ya he comenzado a implementar las funciones bit a bit. De momento empezaré con shr y shl. Te avisaré cuando estén.
Por cierto, bájate la versión 1.0.5, ya que las anteriores tienen fallos que pueden impedir que tu programa compile bien.
<<

britlion

Posts: 766

Joined: Mon Apr 27, 2009 7:26 pm

Location: Slough, Berkshire, UK

Post Sat Jan 30, 2010 9:26 pm

Re: Instrucciones para operar a nivel de bit

This should be fairly simple to implement for the most part. Certainly for 8 bits:

  Code:
FUNCTION FASTCALL bNOT (sentIn as uByte) as uByte
    asm
    CPL
    end asm
END FUNCTION

DIM a as uByte

FOR a=0 to 20
print a,bNOT(a)
next a


Of course I haven't worked out how to drop into asm mode well, because CALL and FASTCALL aren't documented as to where they put their parameters.
It looks like a standard call puts them on the stack, but Boriel's code then plays with the stack pointer, which totally confuses me.

Anyway, 8 bit binary NOT? - One line of asm :)


For 16 bit function code:

  Code:
FUNCTION FASTCALL bNOT (sentIn as uInteger) as uInteger
    asm
    LD a,h
    CPL
    ld h,a
    ld a,l
    CPL
    ld l,a
    end ASM
END FUNCTION

DIM a as uByte

FOR a=0 to 20
print a,bNOT(a)
next a
<<

britlion

Posts: 766

Joined: Mon Apr 27, 2009 7:26 pm

Location: Slough, Berkshire, UK

Post Tue Feb 02, 2010 10:31 pm

Re: Instrucciones para operar a nivel de bit

Instructions for a binary AND, OR and NOT are in the how-to's section of this forum:

viewforum.php?f=14

Return to ZX Basic Compiler

Who is online

Users browsing this forum: No registered users and 1 guest

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by Vjacheslav Trushkin for Free Forums/DivisionCore.

phpBB SEO