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:

Resultado

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:

El fichero de autoarranque Autoload carga Beta BASIC y el programa stringBug.

Páginas relacionadas

Apuntes sobre Beta BASIC 4.0+D
Relación de características destacadas, limitaciones, fallos y trucos de Beta BASIC 4.0+D (para ZX Spectrum 128 con interfaz +D).
OverBug
Herramienta para investigar un fallo de Beta DOS en Beta BASIC, para la Sinclair ZX Spectrum.
bb4d-fixer
Programa que corrige varios fallos de Beta BASIC 4.0+D.