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.

La cartouche d'extension Simon's Basic commercialisée par Commodore
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- FCHRet- 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 ERRORet 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- DISAPAafin 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/- UNTILet 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 IFsoit 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 IFsoit 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 PROCet y reste
- EXEC- saute à une procédure nommée défini par- PROC/- END PROCet 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.
    Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.