stringBug
Descripción del contenido de la página
Demostración de un fallo de Beta BASIC, para la Sinclair ZX Spectrum.
Etiquetas:
Durante el desarrollo de Alien-B descubrí un incómodo fallo de la función STRING$
de Beta BASIC 4.0+D: si se anida la función, no siempre da el resultado correcto. Escribí este pequeño programa para mostrarlo.
Pantallazo
El programa muestra una pantalla con los resultados previstos y reales de varios cálculos, y su código:
Código fuente
10 REM stringBug
20 REM A demo of a Beta BASIC 4.0+D's bug, found out by the author
30 REM By Marcos Cruz (programandala.net)
40 REM 2010-11-23 First version
50 REM 2011-02-03 Some little changes in the code
60 RANDOMIZE USR 58419
REM Beta BASIC on
70 WINDOW 0
PAPER 0
BORDER 0
INK 1
CSIZE 8,7
CLS
80 PRINT "Bug in Beta BASIC 4.0+D:"'"sometimes nested STRING$ doesn't"'"work fine."'
90 PRINT INVERSE 1'"Should be","Result"
100 PRINT 300,LEN STRING$(10,"012345678901234567890123456789")
110 PRINT 300,LEN STRING$(10,STRING$(10,"abc"));" (nested)"
120 PRINT 448,LEN STRING$(14,"123456789_123456789_123456789_12")
130 PRINT 448,LEN STRING$(14,(CHAR$(0)+STRING$(28,"a")+CHAR$(0)));" (nested)"
140 PRINT 392,LEN STRING$(28,"123456789_1234")
150 PRINT 392,LEN STRING$(28,STRING$(14,"a"));" (nested)"
160 PRINT 392,LEN STRING$(14,STRING$(28,"a"));" (nested)"
170 PRINT 10,LEN STRING$(5,STRING$(2,"A"));" (nested)"
180 PRINT 10,LEN STRING$(2,STRING$(5,"A"));" (nested)"
190 CSIZE 4,7
PRINT
LIST 100 TO 170
200 CSIZE 8
PAUSE 0
STOP
210 DEF PROC s
220 ERASE d*"stringBug~"
230 ERASE d*"stringBug" TO "stringBug~"
240 SAVE d*"stringBug" LINE 10
250 END PROC
Descargas
Las imágenes de disquete de +D contienen, además del programa OverBug:
- Beta DOS 1.3 (1990), corregido con los programas Betafix publicados en las publicaciones Format (número 9/9, de 1996-05) y Outlet (número 132, de 1998).
- Beta BASIC 4.0+D (1987), para ZX Spectrum 128 con interfaz +D.
El fichero de autoarranque Autoload carga Beta BASIC y el programa stringBug.
- stringbug.mgt.zip (49.86 KiB) Imagen de disquete de +D comprimida con zip.
- stringbug.mgt.gz (49.75 KiB) Imagen de disquete de +D comprimida con gzip.