nitrofurano
|
|
« Respuesta #15 : 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...)
|
|
|
En línea
|
|
|
|
Jon_Cortazar
|
|
« Respuesta #16 : 18 de Enero de 2006, 03:07:16 pm » |
|
nitro: about kun-BASIC... 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.txtHope it helps,
|
|
|
En línea
|
Jon Cortázar Abraido (aka El Viejo Archivero) RELEVO Videogames [Dioniso: La cafeína está haciendo su trabajo; yo espero hacer el mío.] [pitpan: Me sigue pareciendo más productivo jugar al SNAIL MAZE que seguir esta discusión.]
|
|
|
Kotai
|
|
« Respuesta #17 : 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
|
|
|
En línea
|
|
|
|
Imanok
|
|
« Respuesta #18 : 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
|
|
|
En línea
|
|
|
|
Kotai
|
|
« Respuesta #19 : 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.
|
|
|
En línea
|
|
|
|
Imanok
|
|
« Respuesta #20 : 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 ! ... 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.
|
|
|
En línea
|
|
|
|
e_sedes
|
|
« Respuesta #21 : 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.
|
|
|
En línea
|
sempre fun un valente corredor
|
|
|
Kotai
|
|
« Respuesta #22 : 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.
|
|
|
En línea
|
|
|
|
Jos'b
|
|
« Respuesta #23 : 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
|
|
|
En línea
|
|
|
|
Kotai
|
|
« Respuesta #24 : 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.
|
|
|
En línea
|
|
|
|
Kotai
|
|
« Respuesta #25 : 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.
|
|
|
En línea
|
|
|
|
Imanok
|
|
« Respuesta #26 : 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"
|
|
|
En línea
|
|
|
|
Kotai
|
|
« Respuesta #27 : 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: '** 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.
|
|
|
En línea
|
|
|
|
Jos'b
|
|
« Respuesta #28 : 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.
|
|
|
En línea
|
|
|
|
Kotai
|
|
« Respuesta #29 : 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.
|
|
|
En línea
|
|
|
|
|