167 lines
5.7 KiB
TeX
167 lines
5.7 KiB
TeX
% ----------------------------------------------------------
|
|
\chapter{Basic}
|
|
\label{chap:Basic}
|
|
\index{dosbox}\index{Basic}
|
|
|
|
% ====================================================================
|
|
|
|
% https://www.theregister.com/2023/03/28/nostalgic_for_basic/
|
|
% https://retrofun.pl/2023/12/18/was-basic-that-horrible-or-better/
|
|
|
|
% ====================================================================
|
|
% \section{BASIC} \index{BASIC}
|
|
|
|
C'est probablement un des premiers langages interactifs utilisable par le
|
|
peuple et les gens. Déja, à ce titre, dénonce que ce langage
|
|
demande un peu de curiosité, il a traversé soixante ans
|
|
d'informatique, et il existe encore.
|
|
Mais pour moi, le véritable intérèt
|
|
est dans la multitude et la diversité des implémentations.
|
|
Des minis catatoniques des années 60 aux micros-ordinateurs 8 bits,
|
|
des dizaines de versions souvent incompatibles ont vues le jour.
|
|
Un nom pour citer un exemple ? « Locomotive », ça ira ?
|
|
|
|
Dans un premier temps, je vais les lister sommairement, et
|
|
ensuite j'aurais une idée sur lesquels seront les plus funs
|
|
à explorer, voire sauront trouver leur place dans un
|
|
environnement dédié à la techno-futilité, concept très
|
|
tendance dans certains milieux.
|
|
|
|
Pour en savoir plus : \textsc{Dartmouth Time Sharing System}
|
|
|
|
% ====================================================================
|
|
\section{Bywater} \index{bywater}
|
|
|
|
\begin{quote}
|
|
The Bywater BASIC Interpreter (bwBASIC) implements a large superset of the
|
|
ANSI\index{ANSI} Standard for Minimal BASIC (X3.60-1978)
|
|
and a significant subset of the ANSI Standard for
|
|
Full BASIC (X3.113-1987) in C.
|
|
\end{quote}
|
|
|
|
\begin{verbatim}
|
|
Bywater BASIC Interpreter/Shell, version 2.10
|
|
---------------------------------------------
|
|
Copyright (c) 1993, Ted A. Campbell
|
|
for bwBASIC version 2.10, 11 October 1993
|
|
\end{verbatim}
|
|
|
|
Le mode interactif me semble un peu rustre, mais utilisable à l'ancienne.
|
|
Les messages d'erreur sont du genre \textsc{bdos error on a, select}.
|
|
Je n'ai pas réussi à faire une sauvegarde du programme\footnote{J'ai
|
|
renoncé au bout de 30 secondes}, ce qui limite son \textsl{utilisability}.
|
|
|
|
Heureusement, on peut utiliser son éditeur de texte favori pour écrire
|
|
le code source, et le lancer en mode batch. Voici un exemple rudimentaire
|
|
mais canonique~:
|
|
|
|
\lstinputlisting{code/Basic/bywater-1.bas}
|
|
|
|
Ce qui nous donne à l'exécution~:
|
|
|
|
\begin{verbatim}
|
|
tth@redlady:~/Devel/TetaTricks$ bwbasic code/Basic/bywater-1.bas
|
|
Bywater BASIC Interpreter/Shell, version 2.20 patch level 2
|
|
Copyright (c) 1993, Ted A. Campbell
|
|
Copyright (c) 1995-1997, Jon B. Volkoff
|
|
|
|
2 4
|
|
3 9
|
|
4 16
|
|
5 25
|
|
|
|
tth@redlady:~/Devel/TetaTricks$
|
|
\end{verbatim}
|
|
|
|
Première conclusion : affaire à suivre.
|
|
|
|
% ====================================================================
|
|
\section{Yabasic} \index{yabasic}
|
|
|
|
\begin{quote}
|
|
Yabasic implements the most common and simple elements of the BASIC
|
|
language; it comes with for-loops and goto with while-loops and
|
|
procedures. yabasic does monochrome line graphics, and printing
|
|
comes with no extra effort. yabasic runs under Unix and Windows;
|
|
it is small (less than 200 KB) and free.
|
|
\end{quote}
|
|
|
|
Première innovation, les numéros de ligne ne sont plus obligatoires.
|
|
|
|
\lstinputlisting{code/Basic/yabasic-1.bas}
|
|
|
|
Et on peut faire des images qui clignotent :)
|
|
|
|
\lstinputlisting{code/Basic/yabasic-2.bas}
|
|
|
|
C'est vraiment dommage que l'on ne puisse mettre de gif89a\index{gif89a}
|
|
dans un livre imprimé\dots
|
|
|
|
% ====================================================================
|
|
|
|
\section{sdlBasic} \index{sdlBasic}
|
|
|
|
http://www.sdlbasic.altervista.org/main/
|
|
|
|
% ====================================================================
|
|
\section{Brandy}
|
|
|
|
\index{BBC} \index{Acorn}
|
|
|
|
\begin{quote}
|
|
Brandy is an interpreter for BBC BASIC V, the dialect of BASIC that
|
|
Acorn Computers supplied with their ranges of desktop computers that
|
|
use the ARM processor such as the Archimedes and Risc PC, and is still
|
|
in use on these and compatibles.
|
|
\end{quote}
|
|
|
|
https://www.bbcbasic.co.uk/index.html
|
|
|
|
% ====================================================================
|
|
|
|
\section{FreeBASIC} \index{FreeBASIC}
|
|
|
|
\begin{quote}
|
|
When used in its "QB" language mode, FreeBASIC provides a high level
|
|
of support for programs written for QuickBASIC\index{QuickBASIC}.
|
|
Many programs written for QuickBASIC will compile and run in this mode
|
|
with no changes needed.
|
|
\end{quote}
|
|
|
|
https://www.freebasic.net/
|
|
|
|
% ====================================================================
|
|
|
|
\section{BASIC-256} \index{BASIC-256}
|
|
|
|
\begin{quote}
|
|
BASIC-256 is an easy to use version of BASIC designed to teach anybody
|
|
(especially middle and high-school students) the basics of computer
|
|
programming.
|
|
It uses traditional control structures like gosub, for/next, and goto,
|
|
which helps kids easily see how program flow-control works.
|
|
It has a built-in graphics mode which lets them draw pictures
|
|
on screen in minutes, and a set of detailed, easy-to-follow tutorials
|
|
that introduce programming concepts through fun exercises.
|
|
\end{quote}
|
|
|
|
https://basic256.org/
|
|
|
|
% ====================================================================
|
|
|
|
\section{Benchmark}
|
|
|
|
Nous avons une liste de Basics, il faut maintenant les comparer.
|
|
Il y a le très classique (et très ancien) crible d'Eratostène, mais
|
|
nous pouvons trouver mieux en fouillant dans les archives.
|
|
|
|
% ====================================================================
|
|
|
|
\section{Et ailleurs ?}
|
|
|
|
L'interpréteur \texttt{Qbasic} de Microsoft fonctionne très bien
|
|
dans Dosbox~: à lire en page \pageref{Qbasic}. Son prédécesseur,
|
|
\texttt{GWBASIC} marche très bien aussi.
|
|
|
|
% ====================================================================
|