Simons' BASIC
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 spriteMMOB
- position du sprite sur l'écranRLOCMOB
- déplace un sprite d'une position à une autreCMOB
- définit les deux couleurs principales pour des sprites multicouleursMOB OFF
- désactive un spriteDETECT
- initialise la détection de collision du spriteCHECK
- vérifie s'il y a collision d'un sprite
Gestion graphique haute résolution
HIRES
- initialise un mode graphique haute résolutionMULTI
- initialise un mode graphique multicouleursNRM
- retourne à l'affichage textuelLOW COL
- change la couleur du pixel de dessinHI COL
- réinitialise la couleur du pixel de dessin à sa couleur d'originePLOT
- dessine un pixelLINE
- dessine une ligneCIRCLE
- dessine un cercleARC
- dessine un arc de cercleANGL
- dessine un angle de cerclePAINT
- effectue une opération de remplissage de surfaceREC
- dessine un rectangleBLOCK
- dessine un rectangle pleinDRAW
- dessine un ensemble de lignesROT
- définit le facteur de zoom pour l'instructionDRAW
CHAR
- écrit un caractère sur un écran en haute résolutionTEXT
- écrit une chaîne de caractères sur un écran en haute résolutionTEST
- 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'écranCSET
- sélectionne une police de caractèresMEM
- copie la police de caractères standard de la ROM en RAMBCKGNDS
- configure le mode étendu de la couleur de fondFLASH
- fait flasher l'écranOFF
- annule le flashage de l'écran provoqué par l'instructionFLASH
BFLASH
- fait flasher la bordure de l'écranFCHR
- rempli une zone d'écran avec un caractèreFCOL
- change la couleur des caractères dans une zone d'écranFILL
- une combinaison des instructionsFCHR
etFCOL
MOVE
- copie une partie de l'écranINV
- affiche une partie de l'écran à l'enversLEFT
- déplace l'écran vers la gaucheRIGHT
- déplace l'écran vers la droiteUP
- déplace l'écran vers le hautDOWN
- déplace l'écran vers le basGRAPHICS
- variable réservée toujours égale à $D000 (l'adresse de base du VIC-II)
Gestion du son et du SID (microprocesseur)
MUSIC
- joue une série de notes contenue dans une variable de chaîne de caractèresPLAY
- détermine si le programme doit continuer ou non pendant l'exécution de l'instructionMUSIC
VOL
- définit le volume principalWAVE
- définit la forme d'onde pour une voixENVELOPE
- définit l'enveloppe ADSR d'une voixSOUND
- 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 FETCHINKEY
- teste si une touche de fonction a été saisieON KEY
- teste une touche particulière et exécute un saut si ouiDISABLE
- désactive la commande précédenteON KEY
RESUME
- réactive la commande précédenteON KEY
Gestion des périphériques d'entrées
JOY
- informations en lecture de la position du joystickPOT
- informations en lecture du paddlePENX
- informations en lecture de la position horizontale du stylo optiquePENY
- 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 graphiqueDESIGN
- 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'erreurOUT
- fin d'une séquence de code de gestion d'erreurNO ERROR
- annuleON ERROR
et rend le contrôle des erreurs BASIC à l'interpréteur
Gestion du lecteur de disquettes
DIR
- affiche le répertoire d'une disquette sans effacer un éventuel programme BASIC stocké en mémoireDISK
- envoie une commande au lecteur de disquetteSCRSV
- sauvegarde un écran de texte sur disquetteSCRLD
- recharge un écran de texte depuis une disquette
Gestion de l'imprimante
HRDCPY
- imprime le contenu d'un écran texteCOPY
- imprime le contenu graphique d'un écran
Gestion des chaînes de caractères
INSERT
- insère un champ texte à l'intérieur d'un autre champINST
- similaire àINSERT
, mais réécrit par-dessus au lieu d'insérerPLACE
- recherche d'un champ texte dans le contenu d'un autre champDUP
- 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 texteCENTER
- centre un champ texte au milieu d'un écran texteUSE
- défini un format numérique d'un champ texteLIN
- retourne la position verticale du curseur
Instructions mathématiques
MOD
- effectue une division et restitue le reste de la division entièreDIV
- effectue une division et restitue le quotient de la division entièreFRAC
- restitue la partie fractionnelle d'un nombreEXOR
- 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 BASICRENUMBER
- renumérote les lignes d'un programme BASIC (mais ne corrige pas les redirectionsGOTO
/GOSUB
)OLD
- restaure un programme BASIC accidentellement effacé par l'instructionNEW
KEY
- assigne un champ texte en tant que macro à une touche de fonctionDISPLAY
- affiche toutes les touches de fonctions macroMERGE
- fusionne un programme BASIC de la disquette à celui actuellement en mémoirePAGE
- affiche un programme BASIC page par pageOPTION
- affiche en surbrillance les instructions spécifiques Simons' BASIC lors de l'instructionLIST
DELAY
- modifie la vitesse d'affichage du scroll lors d'une commandeLIST
FIND
- recherche un champ texte dans un programme BASICTRACE
- affiche la ligne de programme actuellement en cours lorsqu'un programme est exécutéRETRACE
- affiche le résultat d'un traceDUMP
- affiche toutes les valeurs des variables excepté les tableaux de variablesCOLD
- reset à froid du C64
Gestion de la sécurité du code source
DISAPA
- cache une ligne de programme BASICSECURE
- cache toutes les lignes marqués avecDISAPA
afin qu'elles n'apparaissent pas lors d'un affichage avecLIST
Instructions de programmation structurée
ELSE
- permet un choix alternatif lors d'une conditionIF
/THEN
REPEAT
- démarre une boucle de typeREPEAT
/UNTIL
UNTIL
- défini la condition de boucle àREPEAT
/UNTIL
et en fixe la finRCOMP
- reprend la dernière conditionIF
/THEN
LOOP
- défini le début d'une boucle qui va jusqu'à ce que la conditionEXIT IF
soit vraieEXIT IF
- si la condition est vrai, quitte la structureLOOP
/END LOOP
END LOOP
- défini la fin de la boucle jusqu'à ce que la conditionEXIT IF
soit vraiPROC
- défini le début d'une procédure nomméeEND PROC
- défini la fin d'une procédure nomméeCALL
- saute à une procédure nommée défini parPROC
/END PROC
et y resteEXEC
- saute à une procédure nommée défini parPROC
/END PROC
et revient à la suite du code après exécutionLOCAL
- redéfini une variable utilisée dans une procédureGLOBAL
- inverse l'effet de la précédente commandeLOCAL
Instructions diverses
CGOTO
- équivalent duGOTO
, mais accepte des expressions issues de calculsRESET
- déplace le pointeur d'exécutionDATA
à une ligne définiePAUSE
- 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.
Portail de la programmation informatique