La cartouche d'extension Simon's Basic commercialisée par Commodore
Le Simons' BASIC est une extension du BASIC V2 de Commodore utilisé par le Commodore 64 . Écrit en 1983 par un jeune programmeur anglais de 16 ans, David Simons, il a été commercialisé par Commodore sous forme de cartouche d'extension . Il a également été diffusé de façon non officielle sous forme de fichier exécutable .
Contenu
114 instructions sont ajoutées au BASIC V2 de Commodore dans le but d'exploiter le potentiel multimédia du Commodore 64 de façon simplifiée. Le jeu d'instructions étendu ajoute des commandes pour gérer les sprites , les modes graphiques haute résolution, le SID pour le son. Le Simon's BASIC ajoute également des instructions permettant une approche de programmation structurée .
Les instructions
Gestion des sprites
MOB SET
- définit les attributs d'un sprite
MMOB
- position du sprite sur l'écran
RLOCMOB
- déplace un sprite d'une position à une autre
CMOB
- définit les deux couleurs principales pour des sprites multicouleurs
MOB OFF
- désactive un sprite
DETECT
- initialise la détection de collision du sprite
CHECK
- vérifie s'il y a collision d'un sprite
Gestion graphique haute résolution
HIRES
- initialise un mode graphique haute résolution
MULTI
- initialise un mode graphique multicouleurs
NRM
- retourne à l'affichage textuel
LOW COL
- change la couleur du pixel de dessin
HI COL
- réinitialise la couleur du pixel de dessin à sa couleur d'origine
PLOT
- dessine un pixel
LINE
- dessine une ligne
CIRCLE
- dessine un cercle
ARC
- dessine un arc de cercle
ANGL
- dessine un angle de cercle
PAINT
- effectue une opération de remplissage de surface
REC
- dessine un rectangle
BLOCK
- dessine un rectangle plein
DRAW
- dessine un ensemble de lignes
ROT
- définit le facteur de zoom pour l'instruction DRAW
CHAR
- écrit un caractère sur un écran en haute résolution
TEXT
- écrit une chaîne de caractères sur un écran en haute résolution
TEST
- détermine si à un emplacement défini le pixel est dessiné ou non
Autres commandes graphiques
COLOUR
- définit la couleur de fond d'écran et de la bordure d'écran
CSET
- sélectionne une police de caractères
MEM
- copie la police de caractères standard de la ROM en RAM
BCKGNDS
- configure le mode étendu de la couleur de fond
FLASH
- fait flasher l'écran
OFF
- annule le flashage de l'écran provoqué par l'instruction FLASH
BFLASH
- fait flasher la bordure de l'écran
FCHR
- rempli une zone d'écran avec un caractère
FCOL
- change la couleur des caractères dans une zone d'écran
FILL
- une combinaison des instructions FCHR
et FCOL
MOVE
- copie une partie de l'écran
INV
- affiche une partie de l'écran à l'envers
LEFT
- déplace l'écran vers la gauche
RIGHT
- déplace l'écran vers la droite
UP
- déplace l'écran vers le haut
DOWN
- déplace l'écran vers le bas
GRAPHICS
- variable réservée toujours égale à $D000 (l'adresse de base du VIC-II )
MUSIC
- joue une série de notes contenue dans une variable de chaîne de caractères
PLAY
- détermine si le programme doit continuer ou non pendant l'exécution de l'instruction MUSIC
VOL
- définit le volume principal
WAVE
- définit la forme d'onde pour une voix
ENVELOPE
- définit l'enveloppe ADSR d'une voix
SOUND
- variable réservée, toujours égale à $D400 (l'adresse de base du SID)
Gestion du clavier et des interruptions
FETCH
- attend une saisie sur le clavier avec les restrictions définies par la commande FETCH
INKEY
- teste si une touche de fonction a été saisie
ON KEY
- teste une touche particulière et exécute un saut si oui
DISABLE
- désactive la commande précédente ON KEY
RESUME
- réactive la commande précédente ON KEY
Gestion des périphériques d'entrées
JOY
- informations en lecture de la position du joystick
POT
- informations en lecture du paddle
PENX
- informations en lecture de la position horizontale du stylo optique
PENY
- informations en lecture de la position verticale du stylo optique
Définition des sprites et des caractères graphiques
@
- représente une ligne de graphique d'un sprite ou d'un caractère graphique
DESIGN
- utilise les lignes @
pour définir un sprite ou un caractère graphique
Gestion des événements d'erreurs
ON ERROR
- défini une séquence de code lors d'une détection d'une condition d'erreur
OUT
- fin d'une séquence de code de gestion d'erreur
NO ERROR
- annule ON ERROR
et rend le contrôle des erreurs BASIC à l'interpréteur
DIR
- affiche le répertoire d'une disquette sans effacer un éventuel programme BASIC stocké en mémoire
DISK
- envoie une commande au lecteur de disquette
SCRSV
- sauvegarde un écran de texte sur disquette
SCRLD
- recharge un écran de texte depuis une disquette
HRDCPY
- imprime le contenu d'un écran texte
COPY
- imprime le contenu graphique d'un écran
INSERT
- insère un champ texte à l'intérieur d'un autre champ
INST
- similaire à INSERT
, mais réécrit par-dessus au lieu d'insérer
PLACE
- recherche d'un champ texte dans le contenu d'un autre champ
DUP
- duplique un champ de texte un nombre donné de fois
Gestion de format de texte
AT
- affiche un champ texte aux coordonnées d'un écran texte
CENTER
- centre un champ texte au milieu d'un écran texte
USE
- défini un format numérique d'un champ texte
LIN
- retourne la position verticale du curseur
Instructions mathématiques
MOD
- effectue une division et restitue le reste de la division entière
DIV
- effectue une division et restitue le quotient de la division entière
FRAC
- restitue la partie fractionnelle d'un nombre
EXOR
- effectue une opération logique OR exclusive
Instructions d'aides à la programmation
AUTO
- génère automatiquement des numéros de lignes lors de la saisie d'un programme BASIC
RENUMBER
- renumérote les lignes d'un programme BASIC (mais ne corrige pas les redirections GOTO
/GOSUB
)
OLD
- restaure un programme BASIC accidentellement effacé par l'instruction NEW
KEY
- assigne un champ texte en tant que macro à une touche de fonction
DISPLAY
- affiche toutes les touches de fonctions macro
MERGE
- fusionne un programme BASIC de la disquette à celui actuellement en mémoire
PAGE
- affiche un programme BASIC page par page
OPTION
- affiche en surbrillance les instructions spécifiques Simons' BASIC lors de l'instruction LIST
DELAY
- modifie la vitesse d'affichage du scroll lors d'une commande LIST
FIND
- recherche un champ texte dans un programme BASIC
TRACE
- affiche la ligne de programme actuellement en cours lorsqu'un programme est exécuté
RETRACE
- affiche le résultat d'un trace
DUMP
- affiche toutes les valeurs des variables excepté les tableaux de variables
COLD
- reset à froid du C64
Gestion de la sécurité du code source
DISAPA
- cache une ligne de programme BASIC
SECURE
- cache toutes les lignes marqués avec DISAPA
afin qu'elles n'apparaissent pas lors d'un affichage avec LIST
ELSE
- permet un choix alternatif lors d'une condition IF
/THEN
REPEAT
- démarre une boucle de type REPEAT
/UNTIL
UNTIL
- défini la condition de boucle à REPEAT
/UNTIL
et en fixe la fin
RCOMP
- reprend la dernière condition IF
/THEN
LOOP
- défini le début d'une boucle qui va jusqu'à ce que la condition EXIT IF
soit vraie
EXIT IF
- si la condition est vrai, quitte la structure LOOP
/END LOOP
END LOOP
- défini la fin de la boucle jusqu'à ce que la condition EXIT IF
soit vrai
PROC
- défini le début d'une procédure nommée
END PROC
- défini la fin d'une procédure nommée
CALL
- saute à une procédure nommée défini par PROC
/END PROC
et y reste
EXEC
- saute à une procédure nommée défini par PROC
/END PROC
et revient à la suite du code après exécution
LOCAL
- redéfini une variable utilisée dans une procédure
GLOBAL
- inverse l'effet de la précédente commande LOCAL
Instructions diverses
CGOTO
- équivalent du GOTO
, mais accepte des expressions issues de calculs
RESET
- déplace le pointeur d'exécution DATA
à une ligne définie
PAUSE
- suspend l'exécution du programme pour un temps spécifié en secondes
Autres fonctionnalités
$
and %
sont également considérés comme instructions pour un total de 114 instructions supplémentaires.