Dudas con el INKEY$

By Klius

Supporter (6)

Klius's picture

06-09-2018, 00:49

Muy buenas!
Hace unas semanas me entró la gusa de picar algo de código y probar a convertir mi msx en un organillo.
El problema lo tengo con inkey$ al mantener sostenida la tecla, la primera pulsación la pilla bien y luego hace una pausa y entonces vuelve a pillar la tecla del tirón...
Mi pregunta es hay alguna manera de evitar la pausa?
Esto es lo que tengo de momento:

10 tron
20 screen 0,,0
30 play"a"
40 Z = 10 'maximo de intentos hasta que detecta silencio
50 c = 0 'Contador
60 k$ = inkey$ 'lee teclado
70 if c = z then sound 8,0:goto 50 'para el sonido i resetea el contador
80 if k$ = "" then c = c+1:goto 60 else goto 100
90 'NOTAS OCTAVA 4
100 if k$ = "a" then sound 0,&HAC:SOUND 1,&H1:sound 8,12:c = 0
110 if k$ = "s" then sound 0,&h7D:sound 1,&h1:Sound 8,12:c = 0
120 if k$ = "d" then sound 0,&h53:sound 1,&h1:Sound 8,12:c = 0
130 if k$ = "f" then sound 0,&h40:sound 1,&h1:Sound 8,12:c = 0
140 if k$ = "g" then sound 0,&h1D:sound 1,&h1:Sound 8,12:c = 0
150 if k$ = "h" then sound 0,&hfe:sound 1,&h0:Sound 8,12:c = 0
160 if k$ = "j" then sound 0,&he3:sound 1,&h0:Sound 8,12:c = 0
170 if k$ = "k" then sound 0,&hd6:sound 1,&h0:Sound 8,12:c = 0
180 goto 60

Saludos!! Smile

Login or register to post comments

By theNestruo

Expert (106)

theNestruo's picture

07-09-2018, 14:27

Con el INKEY$ lo veo complicado, porque utiliza las rutinas que están pensadas para teclear.
Puedes probar a POKEar el valor de REPCNT (&HF3F7h, "Delay until the auto-repeat of the key begins. (50 by default)"), pero aún así yo diría que si pulsas varias teclas a la vez no te va a funcionar.
Una solución que se me ocurre es que hagas PEEKs a NEWKEY (&HFBE5 y siguientes, "New status of each keyboard matrix row. The status is updated by the KEYINT interrupt routine.")...

Referencia: https://www.msx.org/wiki/System_variables_and_work_area

By Klius

Supporter (6)

Klius's picture

13-09-2018, 13:30

Funciona de maravilla, muchas gracias!! Big smile