% ----------------------------------------------------------
\chapter{Basic}
\index{dosbox}\label{chap:Basic}

% ====================================================================

% https://www.theregister.com/2023/03/28/nostalgic_for_basic/

% ====================================================================
\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 enore.
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 ? « 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.

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}.
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}

Première conclusion : affaire à suivre.

% ====================================================================
\section{Yabasic} \index{yabasic}

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{FreeBASIC} \index{FreeBASIC}

https://www.freebasic.net/

\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}

% ====================================================================

\section{BASIC-256} \index{BASIC-256}

https://basic256.org/

\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}


% ====================================================================

% ====================================================================

\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.

% -------------------------------------------
% ====================================================================
