Hablemos de... Beta Basic otra vez Y empezamos con... BETABASIC 1.0 Si, la primera version que salio en el año 1983. Creada por el Dr Andy Wright bajo su sello Betadoft. Solo obtuvo una breve mencion en Popular Computing Weekly 4ta semana de setiembre del 83, mientras que en Sinclair User noviembre 83 y Your Computer diciembre 83 nada mas que avisos. "BETA BASIC Basic mejorado para el ZX Spectrum 16/48k 26 sentencias nuevas - 10 funciones nuevas - muchas mas caracteristicas extras Las sentencias incluyen: ALTER - permite una gran manipulacion de los atributos AUTO - para añadir automaticamente los numeros de linea CLOCK - reloj digital con alarma y posibilidad de GOSUB segun un tiempo dado DELETE - borra bloques de lineas DO - bucles con LOOP, WHILE, UNTIL y EXIT IF DPOKE - Doble POKE EDIT - edita un numero de linea ELSE - usado con IF ... THEN ... GET - espera a que uno pulse una tecla sin esperar ENTER KEYWORDS - cambia entre el modo grafico normal y el juego de nuevas sentencias ON - con GOSUB y GOTO ON ERROR - captura errores en combinacion con las variables ERROR, LINE y STAT POP - extrae datos del "STACK" del GOSUB PROC - llama a un procedimiento creado con DEFPROC y ENDPROC RENUM - renumera un programa, todo o solo partes del listado ROLL - mueva la pantalla en pixeles, ya sea todo o partes de esta SCROLL - similar a ROLL, pero sin envolver SORT - ordena el contenido de cadenas o matrices, SORT INVERSE es al reves TRACE - sigue y rastrea la ejecucion de un programa para su depuracion USING - usado con PRINT para formateo de numeros Las funciones ofrecen: Convertir entre decimal y hexadecimal, entre enteros y cadenas de 2 caracteres (permite arreglos de valor entero), formateado de numeros, equivalentes a STRING e INSTRING, memoria libre, Doble PEEK y tiempo en curso. Las caracteristicas incluidas son: Las nuevas sentencias (se ingresan en modo Grafico) tienen correccion sintactica, hay 7 nuevos mensajes de error, compatibilidad con el Basic Sinclair, el programa ocupa solamente 5.6k, el cursor se puede mover en todas las direcciones dentro de una linea en modo edicion, el puntero de linea en curso parpadea, BREAK te saca de cuelgues inclusive si son causados por codigo maquina, PLOT permite escribir cadenas de texto en cualquier parte de la pantalla, la escala y posicionado de PLOT y DRAW puede ser modificado mediante XRG, YRG, XOS e YOS, versiones para el 16 o 48k existen en la misma cinta y viene con un manual comprensivo. A solo 11 libras" Eso es lo que decia el aviso publicado. Y aparentemente esta es toda la informacion que hay y lo mas cercano a un manual de instrucciones muy resumido del Beta Basic 1.0, asi que vamos a ver que mas podemos añadir tras experimentar con esta version. Hasta el momento de escribir estas notas, solamente existe en formato TAP, lo pruebo con Real Spectrum y tras cargar la cinta me doy con el mensaje de "Beta Basic 1.0 (c) Betasoft 1983". Pulso ENTER y aparece la linea cero con las funciones, muy pocas, comparado con sus sucesores. Veamoslo con mas detalle: FN H$(n) - convierte n a hexadecimal FN D(h$) - convierte h$ a decimal FN I(n,a$,b$) - busca una cadena dentro de otra a partir de n FN U$(s$,n) - formatea numero n segun la cadena s$ FN T$() - tiempo FN S$(n,s$) - repite n veces el contenido de la cadena s$ FN P(n) - doble Peek de n FN M() - memoria libre. El equivalente a FRE(0) FN C$(n) - convierte n en cadena de 2 bytes FN N(c$) - convierte c$ en numero Hago MERGE para ver el cargador del programa y me doy conque la linea 1 esta llena de codigo y es imposible de editar. Eso me indica que esta protegido contra copia y eso me lleva a lo sigte.: puedo usar un debugger para ver que contiene y tratar algo o... mas simple usar el MULTIFAZ para copiarlo a disco o Microdrive. Lo cual me lleva a probar primero... Microdrive Selecciono la IF1, y cargo el BB10, lo salvo a cartucho mediante el Multifaz 1 y empiezo a probar algunos comandos y funciones. Todo OK hasta que me doy con los errores de Microdrive y se detiene el programa con el consabido mensaje de error pero con el añadido de salir del Betabasic sin saber como retornar. ON ERROR puede capturar los errores del Basic, menos los del IF1-MDR, pero con una unica excepcion, la del error 8 EOF de fin de fichero. Opus Discovery Igual que con el IF1, lo transfiero a disco mediante el M1 y paso a probar a ver que sucede. Resultado: no aparece ninguno de los mensajes de error del disco, lo que al principio me hizo creer que algo estaba mal aqui. Pero realmente el mensaje de error si sale solamente que es la letra asociada a dicho error, pruebo con ON ERROR y si captura tambien los errores de disco con lo que no se pierde el control del BB10 como si sucede con el MDR. Timex FDD Igual que con la version de Opus D, pero aqui si se muestran los mensajes de error y sin perder el control del BB10. Para pasarlo al disco debo copiar la version salvada a cinta por el M1 pero modificando el cargador a la sintaxis de Timex. La captura de errores de disco no siempre es eficaz con ON ERROR, los considera a todos como "nonsense in Basic" (sin sentido en Basic), pero el FDD tiene su propio metodo de capturar los errores como lo hace Disciple y ambos complementan bien. Algunos comandos de disco pueden provocar cuelgues como LIST*. Didaktik 80 En este caso, tal como pasa con el Opus, los mensajes de error del disco no se imprimen en la pantalla, Solo la letra asignada a dicho error y no se pierde el control del BB10. Para pasarlo a disco, tengo aqui dos posibilidades, una usando el boton de copiado del Didaktik y la otra es como en el caso del FDD, usando una copia hecha con el M1 y cambiando la sintaxis al cargador. Algunos comandos de disco no son aceptados sintacticamente, LIST* por ejemplo. MB-02+ Lo pase tambien mediante la copia del M1. La diferencia estriba en que el mensaje de Beta Basic aparece un instante y es reemplazado por una linea en blanco, pero basta con pulsar una tecla y aparece la linea cero, indicando que si ha cargado correctamente. Excepto SAVE, LOAD, MERGE, VERIFY, CAT y COPY, ninguno de los demas comandos del BS-Dos es aceptado. Y el unico error que he logrado obtener y capturar es el de "F invalid file name" (nombre de archivo no valido) y que supongo se usa aqui para 'archivo no encontrado' tambien. Disciple En este caso, elijo salvarlo a disco mediante el boton de copiado y opcion 4 para un snapshot de 48k. Igual que con el MDR se detiene y se sale del BB10 apenas se da un error de disco. Sin embargo el Disciple permite capturar el error de disco evitando asi el cuelgue, pero algunas instrucciones pueden dar problemas pese a eso. Con el +D pasa algo similar. El Wafadrive simplemente no es compatible. Tampoco el SpeccyDos. Betadisco BB10 carga sin problemas (si carga) pero basta con usar un comando de disco para que se corrompa la linea cero, o desaparezca todo el listado. Es decir, mejor no usar BB10 con ningun Betadisco. BETABASIC 1.8 Se gano una mencion en Sinclair User enero 85 y se le hicieron alguno que otro review en distintos magazines aparte de publicar solamente avisos. Ya he hablado antes de esta version del Beta Basic, asi que solo resaltare lo necesario por razones de comparacion con el BB10. Cinta Aparentemente no fue pensado originalmente para usarse con discos o Microdrive. Una vez cargado de la cinta, aparece en pantalla el sigte mensaje: "Beta Basic 1.8 (c) Betasoft 1984". Esta version no esta protegida a diferencia del anterior, asi que basta con hacer MERGE para ver el cargador y modificarlo para pasarlo ya sea a cinta, MDR o discos. Y con esto ultimo en mente paso a ver... Timex FDD. Es mas compatible ya que acepta incluso LIST* sin colgarse o interrumpirse. Con Opus Discovery y Didaktik 80, los resultados son los mismos que con el BB10, captura los errores sin colgarse y solo da la letra que indica el error. Con Microdrive, Disciple y +D, sigue pasando lo mismo, basta un error de disco y salgo del BB18. La ventaja es que ahora si puedo recuperar el control del B-Basic, que es mediante USR 58419. Wafadrive si acepta esta version, pero basta un error de drive para que pase lo mismo que con MDR y +D. Sin embargo, ON ERROR si puede capturar los errores del drive, solo que ahora lo que se desactiva es el WOS. Tambien me saca del BB el mero uso de LOAD "algo" desde cinta. Eso significa que no todos los programas correran correctamente del modo esperado. CAT* opera solamente en la zona INPUT (#0) y no en la pantalla principal (#2). Betadisco requiere en cambio de una rutina IM1 que hay que extraer del BB30 y ponerla en cualquier espacio libre en la RAM ya que es reubicable.(*) Carga con SpeccyDos pero no reconoce ningun comando de disco. Plenamente compatible con MB-02+, con las mismas excepciones de su version anterior. (*) ver articulo "Beta Basic y los diferentes sistemaas operativos para Spectrum" BETABASIC 1.9 No hay mucha info respecto a esta version. Acaso corrija algunos bugs. Por el demo que venia originalmente en la cinta, tal vez fue la exclusividad para algunos clubes, supongo. Todo lo dicho sobre compatibilidad con discos de la version 1.8 valen para la 1.9 que salio tambien el mismo año 84 tal como muestra su mensaje tras cargarse: "Beta Basic 1.9 (c) Betasoft 1984". BETABASIC 3.0 La evolucion. Supongo que a partir de aqui ya empezo a llamar la atencion de los usuarios y editores de magazines ZX. Tuvo su articulo tanto en magazines britanicos como españoles desde TodoSpectrum, Microhobby a Input Sinclair y un buen etc. Cinta y Microdrive Tras cargar el programa de la cinta, aparece el mensaje: "Beta Basic 3.0 (c) Betasoft 1985" El metodo de copiarlo a otra cinta era el mismo, excepto cuando se pasaba a un Microdrive. Siempre y cuando fuese la cinta original y no una copia de copia, era posible crear una version exclusiva para MDR, la cual añadia nuevos comandos a la IF1, entre los cuales estaba una sintaxis mas breve y simplificada, asi como salvar solamente las variables o fragmentos de listado en vez del programa completo. Si se usa una version de cinta o una copia con el MDR, puede ocurrir lo sigte.: CAT sin parametro alguno puede ser aceptado, pero LOAD 1,"nombre" dara OK sin cargar nada. Cualquier error de drive y me salgo del BB3. ON ERROR no funciona para la captura de errores del MDR aqui. SAVE DATA "nombre" y SAVE x TO y;"nombre" tal vez funcionen pero daran un mensaje de error interrumpiendo el programa en ejecucion. Se podran cargar tales archivos pero daran nuevamente un mensaje de error tras hacerlo. MOVE dara error y a reiniciar el BB3. ERASE sin embargo funcionara correctamente incluso en su forma breve. Nota: habia un falo en CAT de microdrive cuando habia mas de 22 ficheros en el cartucho, que se solucionaba mediante DPOKE 60082,63676: DPOKE 60088,63678: DPOKE 56097, 63676: DPOKE 56100,63678. Opus Discovery Si se pasaba a disco la version original de cinta, sucedia lo mismo que cuando se usaba la version 1.0 o la 1.8, y es la de que solo aparece una letra indicando el error del disco pero sin dar el mensaje de error. Incluso hay que POKEar para poder acceder a algunas sentencias como CAT. Debido a eso se creo una version exclusiva para Opus, la '3.0 D', la cual no solo mostraba los mensajes de error correctamente, sino que añadia los comandos extras de la version MDR, asi como una instruccion IF - ENDIF multilineas. Su mensaje es: "Beta Basic 3.0D (c) Betasoft 1985". Disciple Habia que parchar el G-dos para poder correr el BB 3.0 y añadirle unos POKEs al BB para que fuese lo mas compatible posible con el Disciple. Pese a todo eso, BB3 no puede aun capturar los errores de disco y se desactiva apenas se topa con eso. Lo mismo ocurre con el +D. Para paliar eso, Betasoft saco el Betados para +D, con la version '3.0 +D', la cual corre tambien en el Disciple. Esta version +D si captura los errores de disco, pero a diferencia de la version '3.0 D' para Opus, esta carece de los comandos extras de la version MDR asi como de ENDIF. En lugar de DEFAULT se usa CAT n para elegir la unidad por defecto. Unidos tambien toma ventajas de la version '3.0 +D'. Una vez cargado aparece el mensaje: "Beta Basic 3.0+D (c) Betasoft 1987". Timex FDD Hasta el momento de escribir esto, desconozco si hubo en su momento alguna version exclusiva para Timex. Al usar una version de cinta y la paso al FDD, me encuentro conque los comandos de disco no son aceptados. Para corregir eso, basta con añadir los sigtes POKEs, originalmente publicados para que corra con el Disciple: Para CAT,FORMAT,MOVE,ERASE,OPEN,CLOSE,MERGE,VERIFY: POKE 64609,215 Para SAVE: POKE 64844,223: POKE 64845,26 Para LOAD: POKE 64826,224: POKE 64827,26 Didaktik 80 Al no haber tampoco una version exclusiva, se debe cargar una version de cinta y añadirle los POKEs antes mencionados y aun asi no todos los comandos de disco como LIST* seran admitidos, pero al menos funcionaran los mas necesarios. Igual que con Opus con las versiones 1.0 y 1.8, solo aparecen letras indicando los errores de disco, los cuales son posibles de capturar sin problema. Wafadrive Permite cargar y salvar el BB3. Pero un error de drive y todo se va al tacho ya que ON ERROR no funciona con tal clase de errores. Excepto eso parece aceptar casi todos los comandos del WOS. Hubo sin embargo una version exclusiva para este sistema, el cual si admite DEFAULT, SAVE DATA, acceso a los puertos serial y paralelo, ademas de EOF y ON ERROR. Betadisco Hay que ejecutar una pequeña rutina IM1 que es parte del codigo del BB3. Y listo. MB-02+ tampoco da problemas con BB3, salvo las mismas excepciones de las 1.0 y 1.8. Un usuario llego incluso a adaptarlo para el Watfor SP-dos. BETABASIC 3.1 Al igual que con la version 1.9, no hay nada de info acerca de esta version. A menos que corrijiese algunos bugs, no parece haber diferencia, salvo que... con solo cargarla aparece en pantalla negra con tinta blanca, el mensaje: "Beta Basic 3.1 (c) Betasoft 1985" Y tras pulsar una tecla vemos que la pantalla esta en 64 caracteres de ancho. Todo lo dicho sobre la version 3.0 vale para la 3.1 BETABASIC 4.0 Hubo que esperar hasta 1987 para que saliera la que termino siendo la ultima version. Era y es un BB3 diseñado con mas comandos y funciones pensado para explotar todo el potensial que ofrecia el Spectrum 128k (1985) o el +2 (1986). Cinta y Microdrive Tras cargar la cinta original aparece el mensaje en pantalla: "Beta Basic 4.0 (c) Betasoft 1987" Al igual que con el BB3, se podia pasar al Microdrive con lo que ahora ya era posible hacer uso de los comandos extras para manejar los MDRs. Si era copia de copia y no un original, entonces, no solo no habia comandos extras sino tambien lo de colgarse al minimo error de drive que ya no puede capturar. Timex FDD Al igual que con BB3, no se de ninguna version exclusiva para Timex, asi que no me queda otra que pasar al FDD una version de cinta. Nuevamente no me acepta ninguno de los comandos de disco. Hay que POKEar como en el caso anterior, y ahora ya tengo acceso a todas las sentencias de disco. Pero y aqui viene un pero... ya perdi las sentencias del disco RAM como CAT! Para acceder otra vez al disco RAM debo volver a POKEar todo a sus valores originales que son: Para CAT!,ERASE!,MERGE!,VERIFY!: POKE 64609,207 Para SAVE!: POKE 64844,45: POKE 64845,237 Para LOAD!: POKE 64826,42: POKE 64827,237 Eso significa que si mi programa requiere del uso tanto del FDD como del disco RAM a la vez, me temo que tengo que estar switcheando entre ambos juegos de POKEs. Opus Discovery Asi como hay una version del BB30 para Opus, tambien hubo una del BB4, la cual es la '4.0 D', pero la doy por MIA hasta el momento de escribir esto. No queda otra que pasar al disco la version de cinta, pero sabiendo que sufrire del mismo problema que con el Timex FDD: la de switchear entre POKEs segun quiera usar el diskete o el disco RAM. Claro esta, que tengo otra opcion, la de prescindir de los comandos extras como CAT! y demas, ya que podria acceder al disco RAM como disco 6. Y esto solamente se puede hacer en Opus: en vez de CAT! usar CAT 6, en vez de SAVE!"nombre" usar SAVE*6,"..." y asi por el estilo. En este caso, puedo hacer lo mismo incluso si uso el BB3 en modo 48 con el disco 6. Disciple y +D Antes de que apareciera la version '4.0 +D', solo quedaba usar la version de cinta y POKEar con los mismos efectos que esto tiene de salirme del BB4 apenas se da un error de disco. "Beta Basic 4.0 +D (c) Betasoft 1987" corre bien incluso en un Disciple, al igual que la '3.0 +D' puede capturar los errores de disco y complementarse mejor aun con Betados y Unidos. Incluye la forma IF...ENDIF multilineas. Beta128 La version cinta requiere de la rutina IM1 presente en BB3. Una vez hecho eso, ya es posible usar los comandos de disco sin problemas. +3 y +2a/b En modo 48k corre sin problemas las versiones de cinta de 1.0, 1.8, 1.9, 3.0 y 3.1. BB4 cuelga al +3 apenas carga de cinta. Sin embargo si lo copio con M128 a una cinta esta si puede ser cargada por el +3 y +2a. Todos los comandos del BB4 estan presentes menos PLAY y los comandos de disco RAM. En un +2a aparentemente puede operar con +D ademas de cintas. Sin PLAY aun funciona BEEP!. Pero sin las ordenes del disco RAM, es como un BB3 aunque con las sentencias extras del BB4. BETABASIC para +3 Nunca salio. BETABASIC para Amstrad CPC Mencionado pero actualmente inexistente. Hay en cambio un emulador ZXM del Spectrum para el CPC, pero que carece de FLASH y solo ejecuta programas en BASIC SINCLAIR. Sigma Basic es una adaptacion checa del Beta Basic creada por Sinsoft. Existe en las versiones 1.0, 2.0, 4/85-II y 5/85. La última versión permite que los archivos sean salvados en modo TURBO usando los comandos SAVE#"nombre" y cargados mediante LOAD#"nombre". Ademas tiene UDGs con signos en checo. Super Basic De diciembre del 85, se encuentra en el magazine covertape "Load 'n' Run issue 22", con el nombre de "Super BASIC Instruzioni". Aparentemente se trata de una copia del BB 1.8. Es una demo con las instrucciones en italiano y tras cargar muestra en pantalla el sigte. mensaje: "SUPER BASIC (C) LOAD'N'RUN By A.V." SAM Basic Basado completamente en el Beta Basic y Betados para +D, es el Basic base del SAM Coupe con (c)1990. Usa la sintaxis del Basic Sinclair con el cual es compatible. Su sistema de disco es el SAM Dos. Master Basic Se carga desde un disco, junto con Master Dos, son la forma final para SAM Coupe. Y para cerrar Basic aPASCALado o aCOMALado Considerando que el YS Megabasic aparecio en 1984 y solo añadia REPEAT- UNTIL mas procedimientos y otros competidores de la misma epoca, solamente ofrecian comandos del tipo Toolkit (herramientas), se podria decir sin lugar a equivoco que el Beta Basic fue el primero en dotar al Spectrum tanto de estructura como de procedimientos aunque al principio estos ultimos carecieran de parametros. Gracias al Beta Basic, ahora era posible tipear un listado originalmente hecho en PASCAL o incluso uno de COMAL sin demasiados cambios que los sintacticos. A modo de ejemplo un programa en Pascal del libro "Programacion con el lenguaje Pascal" de editorial Paraninfo del año 80. 1 REM PROGRAM DIA 111 DEF PROC LEERFECHA 113 PRINT "***TECLEAR DIA, MES, ANNO" 114 INPUT D,M,A 115 PRINT " FECHA LEIDA ES =";D;"/";M;"/";A 116 DO WHILE A<1760 118 PRINT "ERROR, EL ANNO DEBE SER > 1760" 119 INPUT D,M,A 120 LOOP 121 END PROC 223 REM BEGIN 224 PRINT "***COMIENZA PROGRAMA***" 225 INPUT LINE A$ 226 PROC LEERFECHA 227 DO: REM REPEAT 228 LET K=INT(.6+1/M) 229 LET L=A-K 230 LET O=M+12*K 231 LET P=L/100 232 LET I1=INT(P/4) 233 LET I2=INT P 234 LET I3=INT((5*L)/4) 235 LET I4=INT(13*(O+1)/5) 236 LET I=I4+I3-I2+I1+D-1 237 LET I=I-(7*INT(I/7))+1 238 PRINT "EL DIA DE LA SEMANA PARA ";D;"/";M;"/";A;" ES" 239 REM CASE I 240 IF I=1 THEN PRINT "DOMINGO" 241 IF I=2 THEN PRINT "LUNES" 242 IF I=3 THEN PRINT "MARTES" 243 IF I=4 THEN PRINT "MIERCOLES" 244 IF I=5 THEN PRINT "JUEVES" 245 IF I=6 THEN PRINT "VIERNES" 246 IF I=7 THEN PRINT "SABADO" 248 PROC LEERFECHA 249 LOOP UNTIL D<=0 250 PRINT "***FIN DEL PROGRAMA***" 251 REM END. Nota: No importa donde se pongan los procedimientos, Beta Basic ignora los DEF PROC hasta que son llamados mediante PROC. De ahi que se puedan poner al comienzo del programa sin que eso afecte su ejecucion. Se podria reemplazar por GOSUB pero eso obligaria poner la subrutina al final del listado o al comienzo pero con un GOTO como primera linea para evitar que RUN la ejecute al inicio y de un error luego. ON ERROR Y ya que hablamos de capturas de errores, para ver que sistemas de disco son compatibles con Beta Basic, probe lo sigte.: 10 ON ERROR 1000 20 LOAD*"nombre" 30 STOP 1000 PRINT "ERROR",error 1010 ON ERROR 0 Los unicos sistemas que son exitosos con esta prueba son Timex FDD, Opus Discovery MB-02+ y Didaktik 80. En el caso de Disciple debo reemplazar ON ERROR por: 10 LET trap=23728: LET errn=23610 20 POKE trap,255 30 LOAD d*"nombre" 40 LET err=PEEK errn: IF err<>255 THEN PRINT "Error ="; err 50 POKE trap,0: POKE errn,255 Ficheros No podia faltar el probar rutinas de ficheros y ver la compatibilidad Beta Basic con sistemas de discos y empiezo convirtiendo un pequeño programa a... Microdrive 100 OPEN #4;"M",2;"ACTA.SEQ" 110 PRINT "NOMBRE DEL ALUMNO ?"; 120 INPUT N$ 130 PRINT N$: IF N$="FIN" THEN GOTO 200 140 PRINT "CALIFICACION ?"; 150 INPUT C 160 PRINT #4;N$ 170 PRINT #4;C 180 PRINT 190 GOTO 110 200 CLOSE #4 210 STOP 300 ON ERROR 350 310 OPEN #4;"M",2;"ACTA.SEQ" 315 REM IF EOF(4) THEN GOTO 350 - ES CAPTURADO POR ON ERROR 320 INPUT #4;N$,C 330 PRINT N$;TAB 20;C 340 GOTO 320 350 CLOSE #4 Opus Discovery puede usar su propia sintaxis expandida: 100 OPEN #4;2;"ACTA.SEQ" OUT 310 OPEN #4;2;"ACTA.SEQ" IN y en el DIDAKTIK 80: 100 OPEN #4,,"ACTA_SEQ" 310 OPEN #4,"ACTA_SEQ" Pero en el caso del Timex FDD para que haga lo mismo, los cambios son: 100 OPEN #*1;"ACTA.SEQ";O 160 PRINT *#1;CHR$34+N$+CHR$34+CHR$13 170 PRINT *#1;STR$ C+CHR$13 200 CLOSE #*1 300 LET EOF=72: LET TRAP=23729:LET ERR=23728 310 OPEN #*1;"ACTA.SEQ";I 315 POKE TRAP,255 320 INPUT *#1;N$:INPUT *#1;C$ 325 IF PEEK ERR=EOF THEN GOTO 350 350 CLOSE #*1 Aqui como se ve, ON ERROR no puede capturar el EOF como error, por lo que debe de usarse la propia formula de captura de errores de disco del Timex para ello. Disciple y +D Pense que seria posible capturar el EOF con ON ERROR y si lo hace pero igual termino saliendo del Beta Basic. Pense entonces en reemplazar ON ERROR por la formula propia del Disciple para capturar errores como lo hace el Timex pero ahora resulta que se cuelga totalmente. La razon es que el EOF da doble mensaje de error, por un lado el error 8 que ON ERROR si captura pero a la vez da un error 27 para el G-Dos y no deja capturar ambos a la vez. Claro esta nada de esto sucede cuando se usa una version exclusiva como la 3.0+D o la 4.0+D. Ahora, el unico dilema de BB 3+D es que cualquier comando de disco da indistintamente el mensaje "N statement lost" (error 23 de sentencia perdida) en vez del OK esperado, interrumpiendo asi cualquier programa en curso. Para solucionarlo basta con POKEar el sistema para que los comandos de disco ya no den ese mensaje. Una vez corregido ya es posible eliminar la linea ON ERROR y en su lugar añadir: 335 IF EOF(4) THEN GOTO 350 IF...ENDIF Terminamos con esta instruccion que existe solamente en algunas versiones de Beta Basic, como '3.0D' para Opus y '4.0+D' para +D, ademas de algunas pocas versiones diferentes de '4.0'. Tiene dos formas sintacticas: 1) IF cond: sentencias: ...: ENDIF 2) IF cond sentencias: ... ENDIF Es una alternativa a IF...THEN...ELSE. Pero se puede considerar incompleto en su sintaxis ya que carece de ELSE asi como de ELSEIF. Hubiera sido interesante si eso se hubiera añadido a la nueva instruccion. EDIT En la mayoria de versiones de BB, basta con tipear 0 para que aparezca EDIT, pero a veces no lo hace y se imprime solamente el cero, aun asi basta con pulsar ENTER para que se edite la linea en curso o tipear 0 + un numero para que se edite dicho numero. En el caso del BB 1.0 eso no pasa, si en vez de EDIT aparece cero, hay que volver a tipear hasta que EDIT aparezca si queremos editar. En suma... Por que usar BB 1.0 a dia de hoy? Si lo que quiero es Basic estructurado sin nada de lo añadido en el plano grafico por BB 1.8, pues, y por que no? Tiene como pro, su estructuracion pascaliana precisamente y el dejar casi 35k de RAM libre. Como contra en cambio el tener que usar M1 para poderlo copiar a disco o MDR, y solo funcionar optimamanete con Timex FDD, Opus y Didaktik pero con MDR, Disciple o +D no tanto. BB 1.8 tiene como pro, mas comandos graficos y mas funciones utiles, pero dejandome tan solo con unos 31k libres. En cambio BB3 añade el poder de los procedimientos con paraaetros y mucho mas, pero me deja la RAM disponible reducida a unos 22k. Solamente la version '3.0D' saca el maximo provecho del BB3 combinado con Opus, Opus incluso permite usar el disco RAM como unidad 6 y los comandos extras de MDR. La version '3.0+D' captura los errores de disco correctamente pero no admite la orden DEFAULT ni SAVE DATA x;"nombre". BB4 tiene como pro que esta optimizado para explotar todo lo que un 128k puede dar, tanto el sonido como el disco RAM. El problema esta a la hora de usarlo con sistemas de disco, ya sea Timex FDD, Opus o Microdrives. Se requiere de versiones exclusivas para tales sistemas de lo contrario hay que estar POKEando para obtener el resultado deseado. Otro problema no mencionado pero que he encontrado en cada version de BB4 es que ENDPROC puede dar error por lo que debo reemplazarlo por RETURN: ENDPROC para que el procedimiento invocado se ejecute correctamente. En cuanto a la compatibilidad entre versiones, eso depende. Si quiero que el programa se ejecute en todas las versiones esta debe de ser menor a 20k y limitarse a ser estructurado y nada mas. Pero si el programa ocupa mas de 31k entonces sera exclusivo del BB 1.0. Si el programa BB 1.8 es menor a 20k, podra correr tambien en BB 3 y 4. Si pasa de los 20k solo correra en BB 1.8 y 1.9, lo mismo si un programa BB4 usa todos los comandos del 128k, no podra ser ejecutado en BB3, pero los de este si que se podran ejecutar en BB4. De hecho todos los listados en Basic puro ya sea Sinclair o Beta Basic, podran ser ejecutados en el SAM Basic del Sam Coupe. Encima estan las versiones exclusivas de discos que solamente correran en dichas versiones que usen sus comandos extras. Si, definitivamente hay Beta Basic para todos los gustos y necesidades. (c)2022 zx_if1@hotmail.com