Hola Saccopharynx, en principio no necesito el BASIC, solo la BIOS para las llamadas. No se bien en que dirección debería cargar con BLOAD para sobreescribir el BASIC sin problemas. En MSX-DOS el cambio de contexto entre threads funciona bien, pero el problema está al hacer llamadas al sistema desde MSX-DOS desde diferentes threads lo que provoca que se cuelgue todo. En cambio con BLOAD haciendo llamadas al BIOS no me pasa eso.
Vos decís que genere un binario tipo COM (dirección 0x0100) y lo cargue con BLOAD? El BIOS utiliza alguna región de memoria o simplemente el stack actual? Estaría bueno poder disponer de los 64k de RAM en un solo slot como hace MSX-DOS.
Con respecto al simulador uso OpenMSX en Linux con las ROMS de la SVI-738 que es una máquina que dispongo. Tambien tengo BlueMSX en un XP sobre VirtualBox, pero con la configuración por defecto (MSX1)
Por el momento como lo que estoy desarrollando es una libería no necesito demasiada memoria RAM, ya que no estoy haciendo una aplicación grande que usa la librería. De hecho no tengo nada especifico pensado para hacer con la librería
. De todas maneras está bueno tener el máximo de memoria disponible porque los semáforos (para sincronización) suelen tomarse y liberarse muchas veces seguidas y se implementa con una cola (lista enlazada), por lo cual te imaginarás que la RAM es valiosa. Afortunadamente SDCC trae una implementación aceptable de malloc y free, pero claro, cuando el malloc tiene que empezar a buscar huecos de memoria libre (liberados por free) se pone lenta la cosa. Aunque debo decir que los resultados que he obtenido por el momento con programitas de prueba son bastante satisfactorios
, al menos desde mi punto de vista.