Los hacks de WordStar para superar las limitaciones de memória de los primeros ordenadores
El sistema de almacenamiento de WordStar en su época de 8 bits (CP/M) y principios de los 16 bits (MS-DOS) era único e ingenioso.
Para ahorrar espacio en disquetes que apenas tenían entre 90 KB y 160 KB de capacidad, Rob Barnaby programador de WordStar, diseñó un formato de archivo que utilizaba un truco directo sobre el código binario, conocido popularmente como el truco del "Bit Alto" (High-Bit o Eighth-Bit), además de los Dot Commands y la paginación.
El truco del Bit Alto
En el código ASCII estándar de la época, los caracteres de texto (letras, números, puntuación) solo necesitaban 7 bits para representarse (valores del 0 al 127).
Como las computadoras procesaban bytes de 8 bits, el octavo bit (el bit más significativo, a la izquierda) siempre estaba libre y en valor 0.
Barnaby decidió usar ese octavo bit libre para "marcar" texto sin necesidad de insertar códigos de control adicionales que engordaran el archivo. Lo activaba cambiándolo a 1.
WordStar activaba el octavo bit en el último carácter de cada palabra si el párrafo estaba justificado. Al leer ese 1, el programa sabía dónde terminaba la palabra y calculaba cuántos espacios invisibles debía meter entre ellas en la pantalla para que el texto quedara perfectamente alineado a los márgenes.
Cuando escribías y el texto saltaba automáticamente al siguiente renglón, WordStar marcaba los caracteres de control de salto de línea (CR/LF) con el octavo bit activo. Si cambiabas los márgenes del documento, el programa buscaba esos bits activos para saber qué saltos de línea podía mover libremente ("soft") y cuáles eran saltos de párrafo fijos hechos por el usuario ("hard").
El caos de abrir un archivo WordStar en otro programa
Este truco ahorraba una cantidad masiva de memoria, pero provocaba un desastre visual si intentabas abrir un archivo de WordStar (.ws) en cualquier otro editor de texto básico de la época (como el comando TYPE de MS-DOS o Notepad años después).
Como el octavo bit estaba activo, los caracteres normales se transformaban en caracteres extendidos del sistema (letras con acentos extraños, símbolos matemáticos o bloques gráficos).
Una letra "a" minúscula (ASCII 97, binario 01100001) con el octavo bit activado se convertía en el valor 225 (11100001), que en la tabla de IBM PC se mostraba como la letra alemana "ß" o una "ß" con acento. Un texto normal de WordStar parecía un idioma alienígena lleno de jeroglíficos.
Los "Dot Commands" (Comandos de Punto)
Para las instrucciones de formateo complejas que no se podían resolver con el truco del octavo bit (como cambiar el interlineado, añadir encabezados o preparar una impresión), WordStar inventó las Dot Commands.
Si una línea empezaba con un punto (.) en la primera columna, WordStar sabía que esa línea no debía imprimirse, sino ejecutarse como una orden. Por ejemplo:
.MT 6(Margin Top): Dejaba un margen superior de 6 líneas..OP(Omit Page Numbers): Eliminaba la numeración de las páginas..PA(Page): Forzaba un salto de página.
Este sistema era increíblemente ligero: solo ocupaba los bytes exactos de los caracteres de texto escritos, a diferencia de los formatos modernos como .docx o .pdf, que guardan miles de líneas de código oculto para un documento de una sola frase.
Veamos el contenido de un documento de ejemplo:
.MT 6
.PA
Esto es un texto de ejemplo en WordStar. Notarás que las palabras con formato
especial muestran los caracteres de control directamente en pantalla, como por
ejemplo un texto en ^Bnegrita^B o un texto ^Ssubrayado^S.
En este ejemplo podemos observar:
Los caracteres de control en pantalla: No existía el texto en negrita real. Si activabas la negrita (Ctrl+B), aparecía el símbolo ^B antes y después de la palabra. Tenías que imaginarte el resultado final.
Los "Dot Commands": Comandos como .MT 6 (Margen superior) o .PA (Salto de página) se escribían al inicio de la línea y el programa sabía que no debía imprimirlos.
Paginación virtual en memoria para ahorrar RAM
En las máquinas de 8 bits, la memoria RAM era diminuta (muchas veces solo 64 KB). Un documento largo no cabía entero en la memoria.
El sistema de WordStar dividía el archivo en "páginas virtuales" y realizaba un intercambio constante con el disquete (swapping).
Mientras escribías, el programa leía fragmentos del disquete y borraba de la RAM lo que ya habías dejado atrás, guardándolo en el disco en tiempo real.
Esto hacía que el formato del archivo tuviera que ser secuencial y extremadamente predecible para no colapsar la lenta velocidad de los disquetes de la época.