right|thumb|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)

Gestion du son et du SID (microprocesseur) 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

Gestion du lecteur de disquettes 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

Gestion de l'imprimante HRDCPY - imprime le contenu d'un écran texte COPY - 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 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

Instructions de programmation structurée 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.

Catégorie:BASIC