Hablemos de... Beta Basic y discos una vez mas Mas experimentos con el BB3+D y BB4+D, SAVE TO con casetes... Y las funciones del BB 3.1 finalmente descubierto! Y si, vuelvo a retomar el tema del Beta Basic y los diferentes sistemas de disco, aunque con un ligero giro. Es decir, esta vez voy a comentar mis experimentos con diferentes versiones de Beta Basic y sus efectos en cada sistema de datos, (he elegido este termino, debido a que no todos los sistemas operativos para el ZX Spectrum son necesariamente discos, como es el caso del Microdrive o Wafadrive) y lo voy a abreviar con las siglas SDD, asi que cuando alguien encuentre esta sigla en mis textos ya sabe a que me refiero. Ademas voy a dividirlo en dos apartados 48k y 128k; y estos en varias secciones por cada SDD y cada BB en existencia. Y ahora si empiezo con... I- Spectrum 48k Para este modelo solo existen Beta Basic 1.00, 1.8, 1.9, 3.0 y 3.1 Basic de cassette Salvo excepciones, todas las versiones de Beta Basic eran versiones de cinta y estaban optimizadas para dicho formato. Microdrives Excepto la BB 1.00 que requiere del Multiface 1, todas las demas versiones a partir del 1.8 son faciles de copiar a un microdrive. Ya sea el 1.00 o 1.8, no hay problemas sobre que version de ROM tiene la IF1, ya que ninguno puede capturar los mensajes de error del SDD, simplemente vuelven al Basic Sinclair. En el caso del 1.8 se puede volver a activar mediante USR 58419. El 1.9 en cambio, depende de la version de ROM del IF1. Si se tiene la version original entonces añade EOF y la posibilidad de usar bucles del tipo DO - LOOP con ficheros OPEN. Pero los usuarios que tengan la 2da. version del IF1 ya no dispondrian de dicha mejora. Encima, tampoco puede capturar los errores del SDD y tambien se desactiva por eso, al igual que las anteriores versiones. En el caso de que el usuario tuviese el BB 3.0 con la ZX IF 1 y al menos un microdrive, entonces el BB 3 le añade nuevos comandos exclusivos. Sin embargo podia suceder lo sigte.: 1) que dependa de la ROM del IF1; en este caso, si se creo con la IF1 en su primera version puede que dicha copia no funcione correctamente con una IF1 con ROM segunda version. En ese caso hay que volver a crear una copia nueva usando la ultima ROM del IF1. Cada copia debera funcionar solamente con dicha ROM y ha de ser renombrada para no confundirse. 2) que carezca de los comandos extras, lo cual significa que se trato de crear la version IF1 usando una cinta de BB 3 que era una copia de copia y no una cinta original. Ahora, respecto a lo ofrecia como extra... DEFAULT tiene su sentido, ya que no hay modo de seleccionar la unidad por defecto en el caso de los microdrives. Su sintaxis obliga a que se tipee un numero de unidad para operar. La segunda es simplificar la misma sintaxis de los comandos de por si, demasiado larga de tipear. Y la tercera, agregarle otros comandos que operan con el valor por defecto como son SAVE DATA prog y SAVE x TO y, prog. Los otros añadidos son MOVE para copiar todo tipo de archivos, ya no solo ficheros, EOF(n) precisamente para capturar el fin de ficheros y la posibilidad de capturar errores del SDD mediante ON ERROR. Una copia de cinta al no tener todoas estas ventajas se cuelga al minimo error del SDD. Eso es en suma lo que ofrece de extra la version Microdrive. Disciple y +D Solo decir que las particularidades de las interfaces de disco de MGT obligaron al dr. Wright a crear una version exclusiva llamada 3.0+D, la cual carece de todos los comandos extras pensados para el Microdrive, pero al menos captura todos los mensajes de error del SDD. Ahora, lo que nos perdemos con esta version... DEFAULT es innecesario aqui ya que el G-dos usa CAT n para poder seleccionar la unidad por defecto. Pero aquellos comandos que lo requieren ya no se pueden usar como SAVE x TO y o SAVE DATA prog. La unica solucion a SAVE DATA es salvar primero el programa y luego borrar todas las lineas con DELETE y entonces salvarlo con otro nombre. De ese modo se pueden salvar las variables y cargarlas despues mediante un MERGE. En el caso de SAVE x TO y, es mas truquero y cansino ya que habria que usar DELETE para borrar el programa dejando solamente el fragmento que deseemos salvar y si hay mas fragmentos repetir el mismo procedimiento hasta que hayamos ya salvado todos los trozos deseados. EOF tampoco fucionaria para capturar el final de fichero de un archivo tipo OPEN, pero Betados y Unidos tienen ambos sus propias funciones para capturar el final y añaden muchas mas cosas que complementan muy perfectamente al BB3. En el caso de Unidos este agrega la posibilidad de trabajar con subdirectorios por ejemplo. Opus Discovery Antes de descubrir que se habia preservado una copia demo del BB 3.0d exclusiva para el Opus, me la habia pasado tratando de hacer que funcionase una version de cinta con el Discovery. Los resultados de tales pruebas fue que no todos lo comandos de disco funcionaban correctamente o simplemente no lo hacian. Hay que POKEarlo. Y lo que obtuve fue... CAT"m",1 - es la unica sintaxis aceptada para ver el directorio DEFAULT puede usarse pero su sintaxis no tiene afecto con discos. Los mensajes de error son reemplazados por letras en pantalla, pero pueden ser capturados de todos modos con ON ERROR. Excepto eso, el BB de cinta funciona. Tambien trate de usar la version para +D con el Opus. Y resulta que admite toda la sintaxis de Opus sin necesidad de POKEar nada, ademas de capturar los errores de disco pero al igual que la otra version de cinta, los mensajes de error se limitan a una letra. Cuando se carga un programa en vez de OK aparece un mensaje de error, que no afecta en nada al programa cargado y admite los ficheros tanto secuenciales como directos. Si bien DEFAULT existe, no hallo el modo de que admita alguna sintaxis valida, asi que por ello no hay SAVE TO ni SAVE DATA "nombre". En suma, la mejor opcion sera siempre la version exclusiva BB30D para usar con el Opùs. Pero en caso de no tenerse, hay siempre una alternativa como las antes mencionadas. Wafadrive Muy poco podemos decir actualmente sobre la version para Wafadrive, solo que era plenamente compatible y tenia todos los comandos extras del Microdrive, asi como la posibilidad de que ON ERROR capture los errores del SDD sin que se interrumpiese el programa en curso. Incluso POKEando una version comun de cinta, no podemos obtener un BB3 plenamente compatible con el Wafadrive. En cuanto a las versiones 1.8 y 1.9 pueden ser pasadas a un wafadrive pero otra vez sin la posibilidad de capturar errores. Por ultimo y tras ver que BB30+D funcionaba aceptablemente con el Opus, decidi probar a ver que pasaba si lo usaba con el Rotronics. El resultado fue inesperado. No solo acepta todos los comandos de SDD, encima si aparecen los mensajes de error y tambien pueden ser capturados con ON ERROR y ni hay conflicto en el manejo de ficheros. El unico pero es que al igual que las otras versiones de cinta, CAT* se muestra en la zona de INPUT. Excepto eso, todo aparentemente OK. Timex FDD Como ya se ha mencionado antes, no hubo al parecer ninguna version de Betabasic exclusiva para el Timex. Si bien las versiones 1.8 y 1.9 corren bien, la 3.0 y 3.1 requieren de ser POKEadas para que se puedan utilizar los comandos del SDD. Ahora tras ver los resultados de la BB3+D en Opus y Wafadrive, ya solo queda ver como opera esta version con el Timex. Y funciono igual de bien. Compatibilidad plena pero con las limitaciones de comandos que el BB3+D ofrece. Aparte probe tambien con el Timex la version BB3D del Opus y el resultado fue que es plenamente compatible con el FDD. Los errores de disco son capturados como error C - sin sentido en Basic y el comando DEFAULT funciona solamente para asignar la cinta, pero sin afectar las instrucciones de disco. Y tiene ENDIF, pero EOF() no funciona ya que depende del hardware y este no es Opus. Existe otra version alternativa de cinta que funciona igual de bien que la BB3D con el Timex. Didaktik D80 Y bueno, en este caso incluso las versiones de +D y Opus deben ser POKEadas para su correcto funcionamiento. Incluso eso no significa que tenga acceso a todos los comandos del D80. Ambas versiones capturan el error de disco como S missing loop. La diferencia estriba en que la de +D no acepta trabajar con los ficheros secuenciales, mientras la de Opus si lo hace. Por lo que es obvio que la 3.0D es la mejor opcion aqui. Betadisco Hay muchas versiones del Betadisco asi como de su SDD, el TRdos. En Brasil se popularizaron los clones de las versiones Beta48 y Plus, Mientras en Rusia se generalizo mas la Beta128. Esto es mncionado en el BBB#2 al respecto del Betadisco: "Los procedimientos ofrecen una solucion partial. El ejemplo sigte. es para el Beta Disc de Technology Research, pero podria servirle a usuarios con otros sistemas. Beta Disc usa una preciosa sintaxis para SAVE: RANDOMIZE USR 15363: REM : SAVE "name" Pero, si se tiene un procedimiento como: DEF PROC sv a$ RANDOMIZE USR 15363 REM SAVE a$ END PROC entonces se puede tipear simplemente: (space)sv "name" lo cual es mas simpe. El mismo principio puede ser aplicado a LOAD, MERGE, VERIFY, CAT, asi como el acceso a DOS. El juego completo de procedimientos .... (los usuarios ya habran notado que el BB es "desactivado" por LOAD y MERGE al disco y debe ser "activado" otra vez con RANDOMIZE USR 53419.)" Una alternativa a los procedimientos es definir teclas con las mismas funciones de SAVE o CAT, los cuales mo se salvan ni se borran al cargar un programa. Mencionado en el BBB#5: "(los usuarios) de la mas reciente version del Interfaz Beta Disc (version 5.01) de Technology Research, viven con Beta Basic menos felices que con las versiones anteriores. El problema es evitado desactivando el Beta Basic antes de usar los comandos de disco. El problema parece estar relacionado con el uso del Interrupt Mode 2. Eso puede ser controlado con: RANDOMIZE USR 63243 (normal Interrupt Mode 1) RANDOMIZE USR 61369 (Interrupt Mode 2) Las ventajas de este metodo son que se puede estar permanentemente en Interrupt Mode 1 y Beta Basic aun seguira operando, aparte de CLOCK y el mejorado BREAK. Esto solamente es con la Interfaz Beta Disc, obviamente." Ahora mis experimentos con el emulador SPECEMU: puedo pasar la version 1.0 a disco mediante el M1. Carga OK pero la linea cero se corrompe si uso un solo comando de disco que no sea CAT. Con BB1.8 y 1.9, ocurre lo mismo: la linea 0 se corrompe. En el caso del BB 3.1, la linea cero simplemente se borra totalmente. SpeccyDos Es posible cargar y hasta pasar a disco cualquier version de Beta basic, pero una vez cargado el BB x.xx, ya no es posible acceder a los comandos de disco. Hay que estar activando / desactivando para poder cargar, salvar u otra operacion con discos. SwiftDisk Al momento de escribir esto no hay aun emulacion de esta interfaz de disco, ni poseo uno real. En el BBB#10 se "reporta que BB 3.0 y BB 4.0 parecen ser razonablemente compatibles con el emulador de Microdrive que SixWord ofrece con el Swift Disc. Programas, codigo y datos, se cargan, salvan y se verifican O.K., MERGE O.K. y normal PRINT e INPUT a discos aparentemente funcionan. La unica cosa que falla es el comando extendido MOVE." Watfor Spdos y Kemstomp dos Segun una mencion de un usuario en el BBB#3, que tenia un SPDOS, el BB carga rapido pero elimina el codigo del DOS que esta alojado en la RAM, lo cual significa que pierde todo acceso a disco. En el BBB#4 se menciona que "Francis Glassborow de Southfield Software ha logrado hacer que BB funcione con el SPDOS disc system. Puedes pedirle su programa por £1.50". (Sigue una direccion donde solicitarla.) En suma, esta version esta definitivamente MIA y quiza por siempre, a menos que alguien la encuentre un dia y quiera luego compartirla. En cuanto a si correra tambien con el Kempston Dos ni idea. MB-02+ Solo mencionar que todas las versiones de cinta corren bien con esta interfaz, pero no todos los comandos de disco funcionan, ni siquiera POKEando, al menos lo basico como SAVE y LOAD funcionan. +3 y +2a/b Solamente se aceptan las versiones de cinta desde la 1.0 hasta la 3.1 en modo Basic 48k, es decir sin acceso al +3dos. Usando en cambio la utilidad 48disk es posible al menos cargar de disco la version 1.8 y 1.9, pero una vez cargados hay que hacer una desactivacion del BB para acceder a los comandos del disco y tras salvar, cargar o llevar a cabo cualquier otra operacion de disco, reactivar el BB. Luego esta la posibilidad de conectar un +D, el cual solamente opera en modo 48k y en este caso ya se nos permitiria usar BB 1.8 y 3 del disco. Aparte eso no existen otras alternativas. II- Spectrum 128k Para este modelo, incluido el +2 y clones como el Pentagon, sola mente existe el BB 4.00 y nada mas. Eso si, tambien tiene varias versiones como veremos a continuacion. Version cinta Pensada exclusivamente y plenamente operativa con cintas y disco RAM. Hubo varias ediciones corrigiendo bugs principalmente como paso con el BB3. Microdrives Al igual que la version 3, se requiere de una cinta original para poder crear una version MDR plenamente operativa, con todos los comandos extras como DEFAULT, EOF, SAVE TO, SAVE DATA y ON ERROR. Disciple y +D Como ya he mencioando antes, la version de cinta puede ser pasada a disco, pero se desactiva al minimo error de disco ya que ONERROR no los captura. Debido a eso es que hubo una version exclusiva, la 4.0+D la cual no admite DEFAULT (o al menos yo desconozco hasta ahora el modo de activarla) y por lo tanto carece de SAVE DATA y SAVE TO, en cambio si tiene SAVE!DATA y SAVE!TO. Opus Discovery Como ya mencione en textos anteriores, existio una version de BB4 para Opus, pero debido a que al momento de escribir esto sigue MIA tengo que buscar alternativas en su lugar. El BB4 alterno y Opus Discovery Tratando de esta version BB4 alterna es lo mas cercano al BB40D. Tiene todas las sentencias del BB4 operativas incluido ENDIF ON ERROR puede capturar los errores de disco pero no aparece ningun mensaje cuando se da un error de disco solo se ve una letra y el numero de linea en que ocurre el error o un cero si se uso un comando directo de disco FORMAT funciona pero un error de solo escritura y crash CAT funciona pero como CAT"m",1 SAVE* y LOAD* funcionan como se esperaria pero... para que ERASE, MERGE y VERIFY funcionen, incluida la sintaxis de CAT, hay que hacer POKE 64609,215 (sin esto pueden pasar cosas muy raras como nada o un cuelgue del sistema) pero ya no acepta los comando del disco RAM salvo SAVE! y LOAD!. Para volver a tener CAT!, ERASE!, MERGE! y VERIFY! hay que hacer POKE 64609,207. Si el programa no va a usar el disco RAM entonces puede dejarse el poke 215, de lo contrario hay que hacer "switch" continuamente ese poke. No hay SAVE x TO y programas a disco, pero si SAVE! x TO y. Igual no hay SAVE DATA variables pero si hay SAVE! DATA "nombre". Esto se debe a que no admite DEFAULT para elegir una unidad. Es decir que si quiero dividir un programa en varias partes, tengo que trocear el programa (o salvar las variables) al disco RAM para luego pasar todos esos pequeños programas recien al disco de OPUS. Asi que sabiendo usar los trucos ofrecidos se puede sacar provecho de este BB4 con el Opus. El BB4+D con el Opus Parece funcionar optimamente con el Opus, ya que no se necesita POKEar nada, eso si no deja ingresar el comando DEFAULT, por lo que no hay forma de hacer SAVE TO o SAVE DATA "nombre" ni a disco, ni a cinta, en cambio si admite SAVE!TO y SAVE!DATA al disco RAM. Timex FDD El BB4 alterno requiere de ser POKEado para funcionar correctamente pero pierde algunos comandos en el proceso como son los comandos del disco RAM y viceversa. Hay que estar intercambiando los POKEs para accesar ya sea al disco o al disco RAM mas cintas. El BB4+D parece funcionar optimamente con el Timex FDD del mismo modo que lo hace con el Opus, pues tampoco se necesita POKEar nada, pero sin DEFAULT no hay forma de hacer SAVE TO o SAVE DATA "nombre" y en cambio tiene SAVE!TO y SAVE!DATA al disco RAM. Beta128 Hasta donde se, no hubo version exclusiva para esta interfaz. Cualquier version de cinta operara correctamente, pero requiere de la rutina IM2 que esta presente en BB3 (mencionado en BBB#5). +3 y +2a Como ya se sabes, nunca llego a salir version alguna de Beta Basic para estos modelos. Pero si hubo intenciones de hacerlo de parte de su autor. Sobre como hubiera sido tal version, solamente queda especular. Y creo que esa especulacion merece tratarse otro dia con algo mas de detalle. Timex 20xx Nunca hubo una version exclusiva para las maquinas de Timex como el 2068 o el 2048, pero a la pregunta de como hubiese sido tales versiones, creo que hubiera sido algo parecido al SAM Basic. En el caso del 2048, cualquier version de cinta del BB funciona bien y en cuanto al FDD ya he tratado sobre que versiones son mas compatibles y en caso de parcharlo, que POKEs son los requeridos. En el caso del 2068, se requiere del cartucho con la ROM del 2048 o Spectrum para poder cargar siquiera una version de BB. Amstrad CPC Tampoco llego a salir, asi que tambien queda solo especular como pudo haber sido tal version y lo que pudo haber aportado al CPC. SAM Coupe Esta version tiene para hablar largo y tendido. Basta por el momento mencionar que aunque añade nuevas instrucciones, carece en cambio de algunas de las prestaciones que ofrece el BetaBasic, mientras renombra algunas sentencias y funciones ya sea del Basic Sinclair (como DUMP en vez de COPY) o del BetaBasic (como BAND y BOR en vez de AND() y OR()) ademas de cambiar la sintaxis de algunas instrucciones del BB como es el caso de DEFPROC. En suma, algunos programas deben ser editados para que corran como se espera en el SAM. Para obtener algunas mas de las funciones y comandos extras del BB que le faltan, se requiere del Master Basic y Master Dos. III - ACTUALIZANDO El secreto del BB 3.1 En mis anteriores notas mencionaba que no habia encontrado nada acerca de la version 3.1, pero tras experimentar con la version 1.9 y descubrir que esta version funcionaba exclusivamente con la IF1 pero solamente si esta es la que tiene la ROM original y no la segunda version de la ROM, llegue a la conclusion de que tal vez, la version 3.1 podia haber sido diseñada de la misma manera. Para comprobar si eso era cierto reemplace nuevamente la ROM del emulador (que por defecto usa la segunda ROM) en el unico emulador que me permite crear copias BB 3 y 4 para microdrives: Warajevo. Y el resultado fue... un rotundo exito! Asi es, ahora si ya pude crear un 3.1 MDR funcional con todas sus instrucciones extras plenamente operativas. DEFAULT, EOF, SAVE TO, SAVE DATA y ON ERROR ya funcionan tal como se espera. Y ya que hablamos de los extras de SAVE pasamos a... SAVE TO y SAVE DATA con casetes Estas son instrucciones exclusivas del BB 3.xx en adelante. Y si se mira bien lo que el manual dice respecto a ambas, es que estan relacionadas con DEFAULT y que existen tambien VERIFY TO y VERIFY DATA. "BB permite que solamente las variables o partes de un programa sean salvados (SAVE) o verificados (VERIFY). Si se omite la unidad SAVE operara con cintas, a menos que DEFAULT haya sido usado para especificar otro dispositivo de salida. Tambien es posible de usar la RED o el serial RS232. Si DATA o TO son omitidos, entonces el programa se salva del modo usual." "Para volver a cargarlas hay que usar preferentemente MERGE, ya que con LOAD borrarian cualquier programa en curso." "El uso principal de SAVE TO es el de salvar los procedimientos por separado, para asi poder crear un libreria de modulos para su utilizacion a futuro." Modo de uso En cualquier 48k o clonico - se usan tal como el manual instruye, eso es con cintas, MDR, Opus y la version Wafadrive. Pero en el caso de usarse con sistemas para los que no hay version exclusiva, entonces el modo seria el sigte.: 1) DEFAULT=t - para forzar el uso de cinta con SAVE TO y DATA 2) usar una cinta como intermedio para copiar variables o partes del programa y enseguida cargarlas para su traslado al disco. En el caso del Disciple o el +D - debido a que la version 3.0+D no admite ni DEFAULT ni SAVE TO y DATAs, el metodo seria el de usar dos versiones, una de cinta con la cual podremos trocear el listado o salvar solo las variables al disco y la version exclusiva +D para ejecutar los programas mas tarde. Es decir, BB3 para editar el programa y Bb3+d para su ejecucion final. En el caso del BB4 y 128k - aqui ya solo tenemos las versiones de cinta, MDR y Opus, pero este ultimo sigue MIA. En un sistema que este completo podremos salvar con SAVE TO y DATA a cinta, MDR o disco y por ultimo a disco RAM. Pero en los SDD que no tienen una version exclusiva, no podran funcionar cinta, disco y d.RAM al mismo tiempo ya que obliga a parchar el sistema para que opere de modo correcto y en alguno casos obliga a un "switcheo". Por ejemplo, en el caso de Timex FDD me vi motivado a llevar a cabo el sigte truco con BB4 de cinta alterno: 5 RESTORE 200 10 FOR n=48128 TO 48128+47 20 READ a:POKE n,a:NEXT n 200 DATA 62,207,50,97,252,62,45,50,76,253,62,237,50,77,253,50, 59,253,62,42,50,58,253,201 205 DATA 62,215,50,97,252,62,223,50,76,253,62,26,50,77,253,50, 59,253,63,224,50,58,253,201 Para usarlo: USR 48152 - accesa a los comandos de disco, pero ya no acepta los comandos de disco RAM o SAVE TO de cinta. USR 48128 - accesa los comandos del disco RAM y cinta para SAVE TO y DATA inclusive. Nota: a modo de advertencia, si se desactivan los comandos de disco del FDD, un CAT* basta para colgar el sistema, con la inevitable perdida de los datos si no fueron salvados previamente. En suma, si el programa necesita operar solamente con los comandos de disco, basta dejarlo en el primer USR, pero cada vez que se requiera ya sea del disco RAM o cintas para SAVE TO y DATA u otro comando d.RAM como CAT! o LOAD! entonces debemos usar el ultimo y "switchear" entre ambos USR segun convenga al caso. En el caso de un 3.1 con sistemas de disco no soportados, hice un truco similar: 5 RESTORE 30 10 FOR n=55808 TO 55808+21 20 READ a:POKE n,a:NEXT n 30 DATA 62,45,50,76,253,62,237,50,77,253,201 62,223,50,76,253,62,26,50,77,253,201 Para usarlo: USR 55808 - vuelve al sistema de cinta USR 55819 - permite accesar a los comandos de disco Las areas donde coloque estos USR fueron areas que encontre libres dentro del mismo codigo del Beta Basic. (c)2022-23 zx_if1@hotmail.com