S-BASIC (por Structured Basic) era una variante «estructurada» del BASIC, distribuida con los sistemas Kaypro CP/M.[1][2] Fue realizado por Topaz Programming y distribuido por Micro-Ap (San Ramon, CA).[3]
SBasic era compatible con la sintaxis de BASIC, un lenguaje de programación comúnmente utilizado en la década de 1970 hasta la década de 1980, así como con Fortran77. Sin embargo, el lenguaje relajó muchos de los requisitos de BASIC y tenía más flexibilidad que Fortran. Por ejemplo, los números de línea eran opcionales y permitían caracteres no numéricos. Además, SBasic ofreció a los desarrolladores conceptos de programación estructurados, que incluyen recursividad y anidamiento. Muchos programas PL-1 se podían compilar con pocas modificaciones, aunque SBasic no ofrecía una biblioteca de funciones extensa.
Entre las características más avanzadas estaba la capacidad de dar una «base» a una variable o matriz, lo que hace que la ubicación de la memoria sea dinámica y modificable durante la ejecución. Los programas SBasic tenían la capacidad de acceder a áreas de memoria reservadas para el sistema operativo a menos que el propio sistema operativo lo prohibiera (el CP/M de Kaypro no tenía tales prohibiciones). Esto permitió la utilización y modificación directas de DMA y otras áreas de memoria. Esta función también permitía que un programa se modificara a sí mismo en tiempo de ejecución. Esta capacidad también permitió modificar el puntero de instrucción, por lo que un programa podía vincular de manera efectiva otros módulos ejecutables que se leyeron durante la ejecución como datos.
A diferencia de los intérpretes BASIC que almacenaban «código p» que era analizado por un módulo de ejecución, SBasic era un compilador de dos pasos, que en última instancia producía archivos .COM que eran ejecutables. El lenguaje se escribió en un subconjunto de sí mismo y se compiló usando un kernel .com, luego se almacenó en un disquete (o disco duro en el último modelo de KayPro). Los archivos fuente se distribuyeron con algunos modelos de KayPro. Esto alentó la modificación del lenguaje de modo similar al código abierto, y algunos de los primeros grupos de usuarios anteriores a Internet intercambiaron disquetes físicos por correo postal.
No debe confundirse con el lenguaje de programación homónimo SBasic (S por Spectral Basic) para el software comercial Spectral UV-Visible.[4][5]
Jerry Pournelle en 1983 escribió que S-BASIC «es bastante agradable», afirmando que «compite con CB-80». Supuso que los usuarios de Kaypro «comenzarán usando Microsoft MBASIC, luego comenzarán a traducir sus programas a S-BASIC y aprenderán más sobre programación estructurada». Pournelle agregó: «Si tuviera que dar un premio por el documento de computadora más ilegible que he visto, el manual original de S-BASIC ganaría sin dudas»; sin embargo, Kaypro lo había reescrito y «es mucho más sensato».[2]