POKE -1,170

Por Tolemac

Expert (87)

Imagen del Tolemac

17-01-2010, 19:57

Hola,

alguien me puede explicar que es lo que hace la siguiente instrucción: POKE -1,170 ?. Se que la instrucción POKE sirve para escribir un valor en una dirección de memoria. La pregunta es debido a que un juego que no me cargaba, si añado al cargador la instrucción de referencia el juego funciona a la perfección. Me ha dejado un poco intrigado el tema.

He visto tambien: POKE -1,(15-PEEK(-1)\16)*17 , que justamente la segunda parte (15-PEEK(-1)\16)*17 devuelve el valor 170 si hago un print.

PRINT (15-PEEK(-1)\16)*17
170
OK

Que es lo que hay en la dirección -1 ?. Por que (15-PEEK(-1)\16)*17 ?

Saludos.

Login sesión o register para postear comentarios

Por KNIGHTMARE

Champion (383)

Imagen del KNIGHTMARE

18-01-2010, 10:17

Buf soy un negao en programación....el caso es que sin saber exactamente lo que hacia
Question entraban muchos juegos que daban problemas de carga, eran 2 pokes: el -1,170 y el
65535,168

Saludos.

Por chaostar

Supporter (6)

Imagen del chaostar

18-01-2010, 14:31

dependía del tipo de ordenador msx2 por cierto. Recuerdo también el poke -1,171. Yo dispongo de un Sony MSX2 F9S y por lo general cargaba todo sin necesitar usar pokes, pero en ordenadores mayores como el sony F700s si que eran necesarios con muchos juegos de cinta.

Por kabish

Master (223)

Imagen del kabish

18-01-2010, 14:40

Lo teneis explicado aqui.
http://dhost.info/konamiman/msx/easymb4.txt

Esta justo al final.

Por mesiasmsx

Prophet (3318)

Imagen del mesiasmsx

18-01-2010, 23:24

Yo conozco hasta 3, cuando tenia los MSX2 usaba el -1,170 que para muchos jeugos de cinta era milagroso. Para los ordenadores japoneses, no se si todas las generaciones, pero en principio parece que funciona es el -1,0 y para los Sony al menos MSX1 que tengo uso el -1,255 .

Por jrcp_kun

Paragon (1410)

Imagen del jrcp_kun

19-01-2010, 21:58

para sony es -1,255
para philips -1,170

jeje genericamente el de arriba para todos

Por mohai

Paladin (930)

Imagen del mohai

22-01-2010, 18:01

Arrojo un poco de luz:

Depenende de en que sub-slot tega tu MSX la RAM. Como solo hay 4 posibles sub slots, pues solo hay 4 posible valores. Si no pones el correcto, tu MSX se colgara sin mas. Si vale mas de uno, es que tu MSX no lo necesita. Para verlo mas claro, estos son los valores en binario:

POKE -1,0
POKE -1,&B01010101
POKE -1,&B10101010
POKE -1,&B11111111

La direccion -1 es la misma que 65535 o &HFFFF

La formula del primer post es para calcular que valor poner e incluirlo en el cargador, para que el MSX no se cuelgue.

Por Tolemac

Expert (87)

Imagen del Tolemac

22-01-2010, 23:29

Muchas gracias a todos por las respuestas. kabish, el manual de ensamblador que has vinculado está muy bien. Ya me lo estoy leyendo.

Por otro lado en referencia a la respuesta de mohai, si yo hago un print en binario del contenido del registro &HFFFF, obtengo el valor:

PRINT BIN$(PEEK(&HFFFF))
01010011
OK

Con este resultado, como puedo saber en que sub-slot tengo la RAM?. Según he leido, los primeros BITs se corresponden con el sub-slot para la página cero, los dos segundos BITs para en de la página 1, .....

Si miro el contenido de la dirección de memoria &H00A8 (Primary Slot Select Register), el resultado que me devuelve es:

PRINT BIN$(PEEK(&H00A8))
11000011
OK

Según he leido los 64K de la memoria principal del MSX están divididos en bloques de 16K (páginas). Este registro controla que slot será mapeado para cada página. Además cada slot puede ser expandido en 4 sub-slots (dirección &HFFFF). Con estos ambos valores (primary slot select register y el seconray slot select register) como está mapeada la memoria de mi MSX?. Dispongo de 128K.

PRIMARY SLOT (&H00A8) --> 11000011
SECONDARY SLOT (&HFFFF) --> 01010011

Gracias.

Por mohai

Paladin (930)

Imagen del mohai

27-01-2010, 11:57

El comando

PRINT BIN$(PEEK(&HFFFF))
01010011

Te devuelve el subslot seleccionado para cada página de el SLOT primario que tengas seleccionado para la página 3, PERO INVERTIDO. En tu caso, el valor real que tiene el registro es 10101100, lo que te dice que tienes la ram en el subslot 2 y una rom (DISKROM?) en la página 1, subslot 3.

Dicho de otra manera, primero seleccionas con el REGISTRO &HA8 (OUT &HA8,algo) un slot primario para leer su registro de subslot (&HFFFF). Luego lo lees como más arriba, lo complementas y, sabes que subslot está seleccionado para cada página.

Para leer el registro de slot principal, tienes que leer el puerto A8:

PRINT BIN$(INP(&HA8))
11000011
OK

Trabajando desde BASIC, tendrás una configuración para las 64K (más o menos) como la siguiente:

banco:  3  -  2  -   1   -  0
tipo:  RAM - RAM - BASIC - BIOS
slot:   3  -  3  -   0   -  0
sslot:  2  -  2  -   0   -  0
 

El BIOS y el BASIC siempre estarán en el slot 0-0, pero la RAM puede variar según el modelo de MSX. En el ejemplo es la de un Philips MSX2.

Luego, si usas memoria mapeada, tendrás que usar los puertos &HFC-&HFF, pero eso es otra historia...

Por manolito74

Paragon (1190)

Imagen del manolito74

27-01-2010, 15:15

Hola:

Si quieres ampliar conocimientos al respecto y de paso aprender más cosillas sobre el MSX, la memoria, etc, etc, etc, te paso el siguiente enlace:

http://www.konamito.com/curso-de-desproteccion-de-programas/

Ahí puedes encontrar un "pdf" de una especie de curso Teórico-Práctico. El curso en sí era para "desproteger" juegos y programas de msx, ententiéndose por desproteger el hecho de poder "manipular-modificar" el código de los programas con el fin de poder pasar los juegos que estaban en cinta a disco.

El curso es muy fácil de seguir ya que empieza desde cero patatero y explica de forma didáctica el funcionamiento del MSX, la memoria, la carga desde el cassette, y también unos conocimientos mínimos de ensamblador.

Te invito, os invito, a que le echéis un vistazo ya que además también incluye ejercicios prácticos.

Saludetes. ;-)

pd. El curso no es mío, yo lo pasé a formato "word" y posteriormente konamito lo convirtió a "pdf" y lo colgó en la web.

pd. En el curso se menciona al autor original.

Por Tolemac

Expert (87)

Imagen del Tolemac

14-02-2010, 19:39

Hola,

gracias a todos. A partir de los manuales que me habéis dicho y vuestros comentarios estoy ampliando mis conocimientos sobre este sistema.

Un saludo.