Karoshi MSX Community
06 de Julio de 2021, 04:48:11 am *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias:
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: [1]
  Imprimir  
Autor Tema: MSXScript es ahora SymSCRIPT  (Leído 3717 veces)
0 Usuarios y 1 Visitante están viendo este tema.
nerlaska
Karoshi Excellent Member
******
Mensajes: 1102


Programador


WWW Email
« : 12 de Julio de 2007, 11:20:44 am »

Bueno, como veo que no hay muchas noticias de desarrollo .. voy a intentar crear una Smiley
Como bien saben algunos .. estaba con el compilador MSXScript en marcha y en pausa. Hace unos meses me puse a desarrollar un SDK para Symbos el cual tengo bastante avanzado y que permite desarrollar aplicaciones en C con SDCC para este sistema operativo.
El Symbos es realmente alucinante .. no doy crédito a ver el pedazo de curro que se ha pegado el Jörn Mirka y lo impresionante que es este sistema operativo.
La cuestión que se me ocurrió migrar el MSXScript a Symbos y continuarlo de manera que pudieramos tener una herramienta de desarrollo para MSX y dentro de Symbos. Y he aquí la noticia Smiley .. pues que ya tengo una versión del compilador para PC (de momento, aunque preparada para hacer el port a MSX) y que compila y todo Smiley jejeje .. bueno .. mi intención es crear algo al menos igual de rápido que MSXBASIC pero para Symbos claro está. El compilador compila algo muy parecido al C .. la verdad es que practicamente igual aunque sin sintaxis de punteros típica (char **) (pero tiene punteros, por supuesto)
En estos momentos ya se pueden hacer cosas como:

#include "prueba.h"

struct DATA
{
   byte b;
   char c;
   pointer str;
   int i;
};

const int x = 10;
int j;

void MyHook (void)
{
   print ("MyHook\n\r");
}

void main ()
{
   DATA data;
   const char str[32] = "HOLA";
   pointer str2 = malloc(64);
   pointer s;
   int f;
   word len;
   pointer buffer;
   byte lastLine = -1;
   byte line;
   byte pat;

   data.str = "HOLA";
   print(data.str);

   memcpy (str2, "SYMSCRIPT POWER!\n\r", strlen("SYMSCRIPT POWER!\n\r")+1);
   print (str2);
   free (str2);

   buffer = MyHook;
   buffer();
   
   f = fopen ("A:\\music.pt3");
   len = fsize(f);
   buffer = malloc (len);
   fread (f, buffer, len);
   fclose(f);
   
   pat = sizeof(int);
   pat = sizeof(data.str);
   pat++;
   print ("%d\n\r", (int)pat);
   
   for (pat=0; pat<10; pat++)
   {
      print ("%d", (int)pat);
   }
   
   print ("\n\rPress Space to Stop\n\r");
   
   PT3_Play (buffer, len);

   while(1)
   {
      if (keytest(47)) // SPACE
      {
         break;
      }
      line = PT3_GetCurrentLine();
      pat = PT3_GetCurrentPattern();
      if (lastLine != line)
      {
         lastLine = line;
         print ("P:%d", (int)line, " L:%d\n\r", (int)pat);
      }
   }
   
   print ("End\n\r");
   
   return;
}

Aunque parezca mentira Smiley .. eso se compila y se ejecuta y funciona Smiley .. gracias al poder de Symbos .. impresionante!
El "prueba.h" viene a ser esto:

#ifndef __INC_PT3__
#define __INC_PT3__

pointer malloc (word len) extern 1;
void free (pointer addr) extern 2;
void print (pointer str, ...) extern 3;
void itoa (int val, pointer str) extern 4;
void memcpy (pointer dst, pointer src, word len) extern 5;
word strlen (pointer src) extern 6;
byte inp (word port) extern 7;
void outp (word port, byte value) extern 8;
pointer loadscript (pointer str) extern 9;
int runscript (pointer script) extern 10;
pointer runprogram (pointer str) extern 11;
void endprogram (pointer id) extern 12;
int fopen (pointer path) extern 13;
int fread (int handle, pointer buffer, int bytes) extern 14;
int fwrite (int handle, pointer buffer, int bytes) extern 15;
int fsize (int handle) extern 16;
int fclose (int handle) extern 17;
byte keytest (byte scanCode) extern 18;

#define PT3_MAP_FILE "pt3.dll"
extern PT3_MAP_FILE : "H:/prog_msx/projects/symbos_msxscript/pt3_DLL/release/main.map";

void PT3_Play (pointer buffer, word len) extern PT3_MAP_FILE : _f_PT3_Play;
void PT3_Stop (void) extern PT3_MAP_FILE : _f_PT3_Stop;
byte PT3_GetCurrentPattern (void) extern PT3_MAP_FILE : _f_PT3_GetCurrentPattern;
byte PT3_GetCurrentLine (void) extern PT3_MAP_FILE : _f_PT3_GetCurrentLine;

#endif

Como podeis apreciar, todo esto son pruebas. Necesito asegurarme que el compilador compila bien y que todo funciona antes de que nadie le eche mano y luego tenga ganas de matarme Smiley
Lo interesante es que permite trabajar con DLLs que se linkan en tiempo real, de manera que podemos aumentar la libreria de funciones y disponer solo en memoria de lo que necesitamos. Vease el caso de las pruebas con el módulo PT3.
Luego hay una biblioteca fija (por asi decirlo) que es la de funciones básicas (malloc, free, etc.)

Ala, pues a ver si sigo con esto y podemos hacer algo divertido. Me gustaría poder incluir "Assembler Inline" y todo eso pero .. antes tengo más cosillas por hacer.


En línea

MSX4EVER2GETHER
www.nerlaska.com
jltursan
Karoshi Forum's Guru
*******
Mensajes: 1516


¿Que es lo que has aprendido hoy?


WWW Email
« Respuesta #1 : 12 de Julio de 2007, 06:18:04 pm »

Por lo que se ve en el ejemplo, parece que está orientado a la consola, ¿tienes algo por ahí para soportar el interfaz gráfico de SymbOS? Grin

Lo del asm inline estaría curioso, el SymStudio lo soporta; pero claro, con los petardazos que pega lo veo bastante poco usable sin un termo de tila al lado :-(

¡Enhorabuena por el desarrollo!, realmente creo que el SymbOS es de lo más prometedor que he visto en mucho tiempo en torno al MSX Smiley
En línea

Doom dee doom dee doom
doraemonppc
Karoshi Maniac
****
Mensajes: 358



WWW
« Respuesta #2 : 12 de Julio de 2007, 07:07:05 pm »

WOW.
Vaya curro te estas pegando!
A ver ese SDK ... que la verdad, tengo ganas de hincarle el diente Smiley
En línea

- El ensamblador con sangre entra-
nerlaska
Karoshi Excellent Member
******
Mensajes: 1102


Programador


WWW Email
« Respuesta #3 : 13 de Julio de 2007, 04:48:26 am »

Lo cierto es que la consola de comandos es simplemente para sacar logging .. el script puede abrir sus propias ventanas, de hecho también he trabajado en un lenguaje para generar ventanas y cosas del interface de Symbos además de una herramienta que permite convertir archivos de proyecto de SymStudio ha este lenguaje .. adjunto un ejemplo.
A ver hasta donde podemos llegar con todo esto, desde luego el proyecto en si resulta del todo interesante Smiley
En línea

MSX4EVER2GETHER
www.nerlaska.com
jltursan
Karoshi Forum's Guru
*******
Mensajes: 1516


¿Que es lo que has aprendido hoy?


WWW Email
« Respuesta #4 : 13 de Julio de 2007, 01:13:55 pm »

¡Ajaaaaa, eso está fenomenal!. Eso lo pone al nivel del SymStudio Smiley
En línea

Doom dee doom dee doom
nerlaska
Karoshi Excellent Member
******
Mensajes: 1102


Programador


WWW Email
« Respuesta #5 : 18 de Julio de 2007, 07:02:07 am »

Por cierto .. he estado trabajando con Symbos en FullScreen y la verdad es que hay poder.
Sabe alguien de los valores que hay que escribir en los puertos VDP para establecer todos los modos de video MSX2?
Por ejemplo.  Tengo por aquí como establecer el modo TXT80, sería posible hacer algo similar para todos los modos?
Quien es tan amable de postear los array para cada modo? Gracias gracias! Smiley De seguro que nos vendrá bien a todos.
Esto por supuesto es que estoy preparando un Kit para desarrollar en SymbOS y SDCC. Lo tengo bastante avanzado y con él es como estoy montando el SymScript. Consta de una Libreria (symbos.lib) + Includes + Make.EXE

void vdpreg (unsigned char *hl, unsigned char c, unsigned char b)
{
   hl;
   c;
   b;
   _asm
    ld l, 4(ix)
    ld h, 5(ix)
    ld c, 6(ix)
    ld b, 7(ix)
    ld a, c
    di
    out (#0x99),a
    ld  a,#145
    ei
    out (#0x99),a
    ld  c, #0x9B
    otir
   _endasm; 
}

void VDP_SetScreenMode_TXT80 (void)
{
    unsigned char msxakt1[] = {0x04,0x70,0x03,0x27,0x02,0x36,0x07,0x21,0x08,0x02,0,0,0x12,0x42};
    vdpreg(msxakt1, 0, 14);
}
En línea

MSX4EVER2GETHER
www.nerlaska.com
Dioniso
Visitante
« Respuesta #6 : 18 de Julio de 2007, 09:18:12 am »

Por cierto .. he estado trabajando con Symbos en FullScreen y la verdad es que hay poder.
Sabe alguien de los valores que hay que escribir en los puertos VDP para establecer todos los modos de video MSX2?

Pues te remito a la Biblia que pasó a mano Konamiman.
En línea
Páginas: [1]
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.21 | SMF © 2013, Simple Machines XHTML 1.0 válido! CSS válido!