Karoshi MSX Community

Desarrollo MSX => Desarrollo (Español/Spanish) => Mensaje iniciado por: Konamito en 16 de Enero de 2006, 11:25:48 pm



Título: Ayuda con BASIC
Publicado por: Konamito en 16 de Enero de 2006, 11:25:48 pm
Hola chicos,

Estoy haciendo algunas cosillas en BASIC muy sencillas, para desentumecer los conocimientos del lenguaje. Ahora mismo trabajo sobre el emulador para escribir el código, pero la verdad es que me parece que avanzaría más rápido usando algún intérprete de BASIC en mi PC y luego importando el código al MSX.

He oido hablar de NestorPreter de Konamiman, pero nunca me aclaro para usarlo. ¿Alguien me puede echar una mano para comenzar? Lo ideal sería abrir el wordpad de Windows, escribir las líneas y luego guardarlas como un programa en BASIC ejecutable en el emulador o en el MSX. ¿Cómo hago esto?

Sí, lo reconozco, soy un negado...  :-\


Título: Re: Ayuda con BASIC
Publicado por: pitpan en 17 de Enero de 2006, 12:29:54 am
Algunos emuladores te permiten pasar un fichero de texto como si lo hubieras tecleado, pero no sé si el BlueMSX soporta esta función.

Lo más cómodo es editarlo directamente desde el emulador. Si no te resulta práctico, hazlo con un editor de texto, sálvalo como ASCII puro (TXT) y mételo en una imagen DSK (con el DSKTOOL u otra herramienta) o monta el directorio en el que esté el fichero. Cárgalo directamente con LOAD y testea.

Pero no existe nada como un intérprete independiente de MSX BASIC para PC. Salvo los emuladores mismos. O el Q-Basic, salvando las distancias :P


Título: Re: Ayuda con BASIC
Publicado por: jltursan en 17 de Enero de 2006, 12:41:58 am
Citar
Si no te resulta práctico, hazlo con un editor de texto, sálvalo como ASCII puro (TXT) y mételo en una imagen DSK (con el DSKTOOL u otra herramienta)

Exacto y si automatizas el proceso para que la ejecución sea de una tacada, la verdad es que se desarrolla a toda pastilla. Yo me tragué el desarrollo del "Viking" con el editor ConTEXT para PC y se trabajaba bastante a gusto.


Título: Re: Ayuda con BASIC
Publicado por: Konamito en 17 de Enero de 2006, 01:41:55 am
Muchas gracias de verdad. Me he descargado el conTEXT y ahora sí que es fácil trabajar con el código.

De nuevo gracias por la ayuda chicos.  ;D


Título: Re: Ayuda con BASIC
Publicado por: AdOC en 17 de Enero de 2006, 09:39:33 am
Pues lo poco (de momento) que trabajo lo hago con el word pad, y luego cargo ese fichero texto desde el emulador.
Me he bajado el conTEXT a ver que tal.

 ;)
saludos


Título: Re: Ayuda con BASIC
Publicado por: jltursan en 17 de Enero de 2006, 09:51:03 am
La pena es que no tengo el archivo de coloreado de la sintáxis del MSX-BASIC (tengo la del asMSX, por ejemplo). A ver si alguien se anima y se construye el archivo para poder editar MSX-BASIC a todo color ;D


Título: Re: Ayuda con BASIC
Publicado por: MsxKun en 17 de Enero de 2006, 12:18:52 pm
La pena es que no tengo el archivo de coloreado de la sintáxis del MSX-BASIC (tengo la del asMSX, por ejemplo). A ver si alguien se anima y se construye el archivo para poder editar MSX-BASIC a todo color ;D

Yepa! Yo si lo tengo, pero para el EditPlus, asi cuando usaba nbasic lo coloreaba, y creo q como en realidad el fichero es un texto plano igual serviria. Luego en casa lo busco y lo cuelgo aqui por si sirviera.


Título: Re: Ayuda con BASIC
Publicado por: MsxKun en 17 de Enero de 2006, 02:42:47 pm
Ahi va! Es posible que con pocos cambios os funcione. Como poco ya tiene las palabras reservadas del Basic, incluida la palabra "Turbo" (pal Call Turbo ON  ;D )



Título: Re: Ayuda con BASIC
Publicado por: jltursan en 17 de Enero de 2006, 03:07:05 pm
¡Stupendo!, hoy mismo me lo adapto al ConTEXT. En cuanto lo haga lo posteo aquí mismo.  :)


Título: Re: Ayuda con BASIC
Publicado por: Konamito en 17 de Enero de 2006, 04:23:44 pm
¡Stupendo!, hoy mismo me lo adapto al ConTEXT. En cuanto lo haga lo posteo aquí mismo.  :)

Pues cuando sepas cómo se hace nos comentas por aquí :)


Título: Re: Ayuda con BASIC
Publicado por: x1pepe en 17 de Enero de 2006, 10:00:30 pm
Hay otra solución (la descubrí esta mañana). Desde el CATAPULT del OPENMSX hay una pestaña que dice: INPUT TEXT, le das y es un editor (muy muy basico) de texto. Lo bueno es que puedes COPIAR un cacho de texto de por ahí, PEGARLO (CONTROL+V) a este editor y luego le das al botón que dice: TYPE y automáticamente copiará todo tu cacho de texto al MSXBASIC.  ;D ;D ;D

Tiene algunos bugs, los símbolos:
=
:
+
(
)
*
"
&
^
aparecen cambiados ...  :'(


Título: Re: Ayuda con BASIC
Publicado por: Jon_Cortazar en 17 de Enero de 2006, 10:01:53 pm
Lo mejor es coger un emulador y escribir el código ahí mismo.  nnchks:)


Título: Re: Ayuda con BASIC
Publicado por: Konamito en 18 de Enero de 2006, 12:17:27 am
Lo mejor es coger un emulador y escribir el código ahí mismo.  nnchks:)

Aún mejor es hacerlo en el propio MSX. Este método es especialmente recomendado a los más puristas y a los que son anti-emuladores :P


Título: Re: Ayuda con BASIC
Publicado por: AdOC en 18 de Enero de 2006, 01:47:45 am
¡¡¡ Qué ganas tengo de montarme un despachito con una pantallita plana LCD para poder conectar mi (de momento... algún día caerá un TR  ;D) 8245, el portatil, los libros de MSX a mi lado... !!! en fin, un sitio de trabajo y desarrollo decente... y no ahora que parece que estoy de "prestao" en el comedor de casa...  :'(


Título: Re: Ayuda con BASIC
Publicado por: Jon_Cortazar en 18 de Enero de 2006, 07:14:34 am
Aún mejor es hacerlo en el propio MSX. Este método es especialmente recomendado a los más puristas y a los que son anti-emuladores :P

Hombre, esa es la mejor opción por descontado, claro  sjp:)


Título: Re: Ayuda con BASIC
Publicado por: nitrofurano en 18 de Enero de 2006, 02:24:36 pm
btw, where can i find good kun-basic code examples? (to understand better which parts of msx-basic is allowed and which not, since it's manual is far incomplete...)


Título: Re: Ayuda con BASIC
Publicado por: Jon_Cortazar en 18 de Enero de 2006, 03:07:16 pm
nitro: about kun-BASIC...


Código:
List of statements, commands and functions that can not be compiled.

AUTO, BASE, BLOAD, BSAVE, CALL, CDBL, CINT, CLEAR, CLOAD, CLOAD?, CLOSE,
CONT, CSAVE, CSNG, CVD, CVI, CVS, DEFFN, DELETE, DRAW, DSKF, EOF, ERASE, ERL,
ERR, ERROR, EQV, FIELD, FILES, FPOS, FRE, GET, IMP, INPUT#, KEY LIST, LFILES,
LINEINPUT#, LIST, LLIST, LOAD, LOC, LOF, LPRINT USING, LSET, MAXFILES, MERGE,
MOTOR, MKD$, MKI$, MKS$, NAME, NEW, ON ERROR GOTO, ON INTERVAL GOSUB (due to
a bug), OPEN, PLAY, PRINT#, PRINT USING, PUT KANJI, RENUM, RESUME, RSET,
SAVE, SPC, TAB, TRON, TROFF, WIDTH.

List of those with limits.

CIRCLE: Start, end angles and aspect ratio can't be specified.
COPY: Only graphic COPY is available.
DEFDBL: Same as DEFSNG.
DIM: Must come first in the program or in the turbo block.
INPUT: Can handle only one variable at the time.
KEY: ON KEY GOSUB, KEY(n) ON/OFF only.
LOCATE: x,y must be given in as a set. No cursor switch parameter.
NEXT: Variable names after the NEXT can not be omitted.
ON: ON STOP GOSUB, ON INTERVAL GOSUB not available.
PRINT: Commas work in a different way. No wrapping for digits.
PUT: PUT SPRITE only.
RUN: Variables won't be initialized.
SCREEN: Screen mode and sprite size only.
SET: SET PAGE only.
STOP: Same as END.
USR: Parameter type must be integer only.
VARPTR: File number can not be given as the parameter.

Otherwise there is no significant difference.

In general, I/O commands & functions, and editing commands can not be
compiled. Of course they are available in the direct mode, and outside of the
turbo block. You can edit, debug and save a program in MSX-BASIC and execute
it by _RUN.

If you want to use PRINT# to write characters on GRP:, use it outside of
turbo block. Otherwise study the sample, "PRINT.TRB".

If you want to use PLAY, use BGM compiler, and get the sound by USR(n).

Extracted from a text in here: http://home.hetnet.nl/~peter.verhaar/msx_files/kunbasic.txt

Hope it helps,


Título: Re: Ayuda con BASIC
Publicado por: Kotai en 21 de Enero de 2011, 06:22:44 pm
Perdonar que rescate un post tan viejo, pero estoy "montando mi entorno de trabajo" para hacer un juego en BASIC y compilarlo con XBASIC.BIN

Por lo que he ido leyendo he optado por el editor  conTEXT con el HighLighter de Visual Basic (es el que me ha asignado el programa y se adapta muy bien).
El emulador que uso es el BlueMSX y como DRIVE0 tengo el directorio de Windows donde tengo los .BAS pero tengo 2 problemas, el primero es que cada vez que cambio algo de los ficheros .BAS en Windows el MSX no se entera hasta que desasigno el directorio de trabajo y lo vuelvo a asignar o bien reinicio el MSX. Y el segundo problema y más gordo es que lo que grabo en MSX con SAVE no hace nada, creo un fichero nuevo por ejemplo SAVE"nuevo.bas" voy a la carpeta de windows y no hay nada incluso si cierro el emulador. Todo lo que hago en el MSX se pierde.

He pensado usar el NestorPreTer para poder añadir comentarios y no tener que usar números de línea, pero me parece que será muy pesado que cada cambio que haga en el editor tendré que grabarlo en windows, ir al emulador MSX desasignar la unidad y volverla a asignar, pasar el fichero de texto por el NestorPreTer para que me genere el fichero definitivo, hace un LOAD de ese fichero que como es ASCII es bastante lento de cargar y luego hacer RUN.

¿ Hay alguna forma más rápida de hacerlo ?

Y lo del NestorPreTer aún no lo he conseguido hacer, pero supongo (corregirme si no es así) que tendré que entrar en MSX-DOS para poder ejecutarlo y luego volver al BASIC para hacer el LOAD.

Aun teniendo que hacer todos estos pasos creo que es mejor que programar directamente sobre el MSX y más aún si no ves el cursor en dos tercios de la pantalla por haber redefinido los colores de los carácteres en SC1 como si fuera SC2.

Saludos


Título: Re: Ayuda con BASIC
Publicado por: Imanok en 21 de Enero de 2011, 06:31:41 pm
Creo que lo mejor que puedes hacer es crearte un DSK con todo lo que necesites (el MSX-DOS, XBASIC, NestorPreTer y un editor de textos -yo usaba el AKID-) y trabajar únicamente desde el MSX (o emulador).

Así lo hacía yo y era muy cómodo :)


Título: Re: Ayuda con BASIC
Publicado por: Kotai en 21 de Enero de 2011, 07:11:01 pm
No conozco ningún editor de texto de MSX pero viendo la resolución que tiene el MSX y además que dudo que pinten en colores las palabras reservadas... creo que prefiero hacerlo desde windows con una resolución de 1920x1200 y el código en colores (comentarios, números, palabras reservadas...) aunque cada vez que tenga que probar un cambio sea un poco más pesado.

Es lo malo que tienes haberse acostumbrado a los lenguajes de alto nivel de ahora, luego es muy duro volver atrás.

Gracias de todos modos.

Saludos.


Título: Re: Ayuda con BASIC
Publicado por: Imanok en 21 de Enero de 2011, 08:53:34 pm
La verdad es que no conozco ningún editor de texto para MSX que tenga colorines para palabras reservadas ! ;D ... son más bien tipo el EDIT de MS-DOS.

Si prefieres los colorines a la agilidad en probar los cambios, no te queda otra.


Título: Re: Ayuda con BASIC
Publicado por: e_sedes en 22 de Enero de 2011, 12:49:38 pm
Efectivamente el BlueMSX no guarda lo que grabes si como disco le asignas un directorio. Es algo fastidioso, pero puedes tener un .DSK metido en la otra unidad para cuando hagas algún cambio. Para actualizar el disco cuando asignas un directorio te basta con hacer un ALT+F9, sin tener que resetear ni nada de eso. Y para cargar programas en ASCII, ejecutar el NestorPreter y cosas de esas no hay nada como acelerar el emulador a tope.


un saludo.


Título: Re: Ayuda con BASIC
Publicado por: Kotai en 22 de Enero de 2011, 02:48:09 pm
Gracias por lo del ALT+F9.

Ya tengo el MSX-DOS  para ejecutar el NestorPreTer y he cambiado todo el código fuente del juego sin líneas y con etiquetas para los saltos. Ahora da gusto trabajar con los colorines, variables de más de 2 letras, saltos a "funciones"...

Y lo de que no grabe es un problema pero no tan gordo porque todos los cambios en el código fuente se hacen sobre el .ASC y no sobre el .BAS que devuelve el NestorPreTer. Lo único malo es que para cada cambio tengo que salir al MSX-DOS, convertir el .ASC a .BAS volver al basic y cargar el .BAS. Es un poco lento, pero lo compensa el poder trabajar con un código legible, en alta resolución y con los colores de las palabras reservadas y comentarios.

Ahora si que empieza a avanzar el juego :), solo me falta resolver los problemillas que tengo con el SC4 para poder hacer el juego para MSX2 en vez de MSX1

Saludos.


Título: Re: Ayuda con BASIC
Publicado por: Jos'b en 22 de Enero de 2011, 06:12:00 pm
hola Kotai;

solo quería hacer un apunte, no sé si lo sabes o no, pero Nestorpreter tiene un pequeño bug cuando el fichero ASCII supera los 16K y es que se come una línea cuando genera el fichero BAS. Sabiendo esto no hay problema porque lo puedes tener controlado, de lo contrario te puede hacer perder mucho tiempo.

De cualquier forma, si te sirve de información útil, yo he usado el Nestorpreter junto con el editor TED en un MSX real. TED es bastante pesado, pero para mí es el mejor editor de texto que hay para MSX.

Un Saludo


Título: Re: Ayuda con BASIC
Publicado por: Kotai en 22 de Enero de 2011, 06:52:42 pm
Pues lo cierto es que anoche perdí mucho tiempo porque los GOTO / GOSUB que apuntaban de mitad de programa hacia abajo lo hacían a una línea antes que justamente siempre era un RETURN por que era el final de la función anterior. Rebuscando por el código me di cuenta que era después de la línea del GOTO que cierra el bucle principal del juego, justo cuando empiezan todas las funciones, así que añadí un END en esa línea (que nunca se puede llegar a ella porque la linea de antes es el GOTO) y se solucionó el problema, apuntando correctamente a todas las funciones a partir de ese punto.

El editor uso el ConTEXT de Windows con los colores de VisualBasic y la verdad es que funciona bastante bien. Tengo que ver si puedo configurar lo de los colores para añadir un color nuevo para las etiquetas de los saltos ~etiqueta y otro para el de las variables y macros @variable

Saludos.


Título: Re: Ayuda con BASIC
Publicado por: Kotai en 31 de Enero de 2011, 06:54:43 pm
Nestorpreter tiene un pequeño bug cuando el fichero ASCII supera los 16K y es que se come una línea cuando genera el fichero BAS

Ya me estoy encontrando con este problema, pero no se come una línea, directamente corta el código fuente resultante y luego los GOTO/GOSUBS que van a esas líneas se quedan en blanco.

Tengo 2 ficheros, el que hace los gráficos que son unas 5000 lineas de 10 en 10 que nunca he podido convertir con NestorPreter porque se corta y el fichero del juego que como lo empecé de cero si que podía pasarlo por NestroPreTer hasta que he llegado a los 16KB y se come las lineas del final. He borrado un montón de comentarios del código fuente y al bajar de los 16KB el NestorPreTer ya pasa el fichero completo, pero en cuanto le añada unas cuantas líneas más me va a pasar lo mismo.

¿ Alguien ha podido convertir ficheros de más de 16KB ? He buscado en el manual y no veo nada para ficheros grandes ¿ Hay algúna opción que no conozco ? ¿ o grabar el fichero de texto en algún formato especial ?

Gracias.


Título: Re: Ayuda con BASIC
Publicado por: Imanok en 31 de Enero de 2011, 11:29:35 pm
Cómo es que te ocupa tanto el código??... lo único que se me ocurre es que tienes definidos los mapas dentro. Si es así, cargalos aparte en RAM aparte (o incluso en VRAM) y los lees de allí.

Además, con el XBASIC/Nestorbasic, no podrás hacer turbo-bloques (código entre el CALL TURBO ON y el CALL TURBO OFF) de más de 8Kb aproximadamente... pero sí que puedes hacer más de un turbo-bloque en un mismo programa, de manera que si divides las diferentes partes del juego con un poco de cabeza, te librarás del maldito "Out of memory" ;)


Título: Re: Ayuda con BASIC
Publicado por: Kotai en 01 de Febrero de 2011, 12:19:20 am
Ahora lo tengo todo en un único TURBO BLOQUE, pero ya he estado leyendo que es mucho mejor hacerlo en pequeños trozos para que no consuma tanta memoria en el momento de compilar.

Los mapas están dentro reducidos al máximo, te paso el código de una pantalla:
Código:
'** Pantalla 02-01 **
~P02_01:
~   DATA 5,4,15,4,3,
         4,8,1,8,4,
         19,8,1,8,4,
         4,4,0,0,5,
         19,4,0,0,6,
         0,0,24,4,11,
         0,4,4,16,11,
         20,4,4,16,11,
         4,16,6,4,11,
         14,16,6,4,11,
         10,16,0,0,9,
         13,16,0,0,10,
         *
RESTORE ~P02_01 : RETURN:

en cada linea tengo X,Y,Columnas,Lineas,Tipo de Objeto a pintar por lo que una pantalla ocupa muy poco, pero el problema son las funciones que pintan cada tipo de objeto que si bien no son muy largas hay más de 20 tipos de obejtos y son muchas líneas de código.

Tengo que estudiar el NestorCadenas para intentar guardar todas las fases y textos del juego en otra zona de la RAM. Solo quitando del programa las funciones que pintan los distintos objetos en pantalla y el vector de 20 strings con lo que tenemos pintado en pantalla seguro que tengo suficiente espacio para acabar el juego, aunque no como lo había pensado, lo voy a tener que simplificar mucho.

Saludos.


Título: Re: Ayuda con BASIC
Publicado por: Jos'b en 01 de Febrero de 2011, 09:16:14 am

¿ Alguien ha podido convertir ficheros de más de 16KB ? He buscado en el manual y no veo nada para ficheros grandes ¿ Hay algúna opción que no conozco ? ¿ o grabar el fichero de texto en algún formato especial ?


Yo resolví el problema averiguando la línea que se comia y poniendo un REM en esa línea, pero era para el juego que presente al concurso de Konamito de  la segunda edición, en Kun-Basic como dice Imanok, no podrás ejecutar programas muy largos.


Título: Re: Ayuda con BASIC
Publicado por: Kotai en 01 de Febrero de 2011, 02:13:02 pm
Si, ahora que pienso lo de comerse una línea también me pasó, todos los goto/gosub que iban a una línea posterior al bucle principal del juego lo hacían a la linea anterior que normalmente era un RETURN y no iba nada. Puse un END después del bucle y todo arreglado.

Pero el problema de ahora es que el fichero de salida se corta antes de llegar al final. Y cuanto más grande hago el fichero de entrada (aunque sean comentarios) antes se corta el fichero de salida, como si tuviese un tamaño máximo de 8Kb, que es el tamaño que tiene el fichero de salida.

Saludos.


Título: Re: Ayuda con BASIC
Publicado por: Imanok en 01 de Febrero de 2011, 11:53:13 pm
Ahora lo tengo todo en un único TURBO BLOQUE, pero ya he estado leyendo que es mucho mejor hacerlo en pequeños trozos para que no consuma tanta memoria en el momento de compilar.
Exacto... cada turbo bloque se compila individualmente.

Citar
Los mapas están dentro reducidos al máximo, te paso el código de una pantalla
Pues todo eso lo TIENES que sacar del código, porque si tienes muchas pantallas, te ocupa un montón... mételo en RAM, VRAM o lo que sea.

Citar
pero el problema son las funciones que pintan cada tipo de objeto que si bien no son muy largas hay más de 20 tipos de obejtos y son muchas líneas de código.
Pues yo te veo reacio con lo del SR5, pero con una única instrucción COPY, copias cualquier cosa en pantalla. Y convertir los gráficos a SR5 te iba a costar 5 minutos.

Citar
Tengo que estudiar el NestorCadenas para intentar guardar todas las fases y textos del juego en otra zona de la RAM. Solo quitando del programa las funciones que pintan los distintos objetos en pantalla y el vector de 20 strings con lo que tenemos pintado en pantalla seguro que tengo suficiente espacio para acabar el juego, aunque no como lo había pensado, lo voy a tener que simplificar mucho.
Si tienes que dividir en diferentes BAS, no te cortes. He visto los progresos en otro hilo y tiene buena pinta, ánimo!  :D


Título: Re: Ayuda con BASIC
Publicado por: NapalM en 02 de Febrero de 2011, 07:53:43 am
Lo mejor es coger un emulador y escribir el código ahí mismo.  nnchks:)

Yo lo hago así, luego no tienes sorpresas de caracteres raros.
Uso el TED.


Título: Re: Ayuda con BASIC
Publicado por: Kotai en 03 de Febrero de 2011, 01:47:34 pm
Ya tengo solucionado el problema con NestorPreTer que se comía líneas y no acababa de convertir el fichero, era pos usar MSX-DOS1 que Nestor no lo había probado. Ha sido pasar a MSX-DOS2 y ya va todo perfecto.

A continuar con el juego.

Saludos.