**************************************** * SNG v0.72 * * Shell avec Niveaux de Gris * * * * par Marc Plouhinec * * le 14/02/2003 * * site: http://thebestof.vze.com * * Email: mailto://m_plouhinec@yahoo.fr * * * **************************************** ATTENTION: la partie "liste des variables" ne marche pas dans cette version. SOMMAIRE: I Introduction II Mode d'emploi III Programmer pour SNG IV Comment utiliser les niveaux de gris V Comment programmer avec le son VI Comment utiliser les interruptions VII Editeur hexadécimal VIII Debuggeur IX Programmer en langage machine directement sur TI-82 X Programmer en assembleur directement sur TI-82 XI Améliorations à venir I Introduction: --------------- SNG possède des fonctions pour les niveaux de gris et pour le son (à venir) en plus des fonctions de ACE (les programmes de ACE ne sont pas supportés). Les programmes de SNG seront réunis sur mon site (si vous voulez programmer pour ce shell, envoyez-moi le programme par email). II Mode d'emploi: ----------------- Exécutez SNG comme un programme BASIC, vous allez arriver dans un menu. Dans la partie "Liste des programmes", choisissez votre programme et appuyez sur ENTER. Pour quitter un menu, appuyez sur MODE. III Programmer pour SNG: ------------------------ Le fichier "aide pour compiler pour SNG.bat" est là pour vous aider. Cliquez du bouton droit et selectionnez 'Edition' et remplacez 'test' par le nom de votre programme. N'oubliez pas de rajouter #include "sngbeta.inc" au début de votre programme. IV Comment utiliser les niveaux de gris: ---------------------------------------- Pour créer les niveaux de gris, SNG fait clignoter des pixels, les images sont enregistrées dans deux plans (le plan 0 pour le gris clair et le plan 1 pour le gris foncé). Si vous voulez faire du blanc, laisser les plans 0 et 1 vide. Si vous voulez faire du gris clair, remplissez seulement le plan 0. Si vous voulez faire du gris foncé, remplissez seulement le plan 1. Si vous voulez faire du noir, remplissez les deux plans. Pour mettre en marche les niveaux de gris faites 'CALL GRAYSCALE_ON' pour revenir au mode d'affichage normal faites 'CALL GRAYSCALE_OFF'. Allez voir les sources des programmes "test" et "test2" pour mieux comprendre. V Comment programmer avec le son -------------------------------- Il faut d'abord brancher des écouteurs après s'être fabriqué un adaptateur. Dans le programme, il faut faire: LD HL,700 ;HL=ton LD DE,100 ;DE=durée CALL BEEP Allez voir la source du programme "son.asm" pour mieux comprendre. VI Comment utiliser les interruptions ------------------------------------- Les interruptions sont un peu comme du multi-tâche, une ou plusieurs routines sont exécutées en même temps que le programme. Voila comment les utiliser: LD DE,nom_de_la_routine_à_exécuter_en_interruption CALL NEW_INTERRUPT boucle_générale: (...) JP NZ,boucle_générale LD A,0 ;A=numéro de l'interruption CALL STOP_INTERRUPT RET nom_de_la_routine_à_exécuter_en_interruption: (...) RET Allez voir la source du programme "interrupt.asm" pour mieux comprendre. VII Editeur hexadécimal: ------------------------ L'éditeur hexadécimal ne fait pas parti du programme SNG pour que les gens qui n'en ont pas besoin peuvent gagner 1172 octets. Ce programme a 3 modes d'affichages: -Le premier est accessible avec la touche Y=, c'est le mode par défaut. (Allez voir à l'adresse $2AC0, il y a des chaines de caractères de TI OS) Les touches: -haut,bas,droite,gauche = déplacement du curseur -division = - $1000 -multiplication = + $1000 -moins = - $100 -plus = + $100 -chiffres et lettre (A à F) = modification d'un nombre hexadécimal -Le second est le mode image, il est accessible avec la touche WINDOW. (Allez voir dans le programme SNG et vous trouverez le titre du shell) Les touches: -haut,bas,droite,gauche = déplacement -Le troisième est le mode sprite, il est accessible avec la touche ZOOM. (Allez voir les adresses à partir de $590d, c'est là où sont enregistrés les caractères) Les touches: -haut,bas,droite,gauche = déplacement Important: Entre les adresses $4000 et $7FFF, c'est la ROM page 1. VIII Debuggeur: --------------- Le debuggeur peut désassembler et modifier un programme (Attention: ce programme ne fait pas la différence entre du code et des variables). Le debuggeur ne fait pas parti du programme SNG pour que les gens qui n'en ont pas besoin peuvent gagner 11777 octets. Les touches: -haut,bas = déplacement du curseur -division = - $1000 -multiplication = + $1000 -moins = - $100 -plus = + $100 -enter = modification d'une instruction Comment modifier une instruction? On doit sélectionner l'instruction à modifier, appuyer sur 'ENTER', sélectionner la taille de l'instruction puis la choisir dans une liste (touches: haut,bas,plus,moins = déplacement du curseur). IX Programmer en langage machine directement sur TI-82: ------------------------------------------------------- Avant tout, imprimez les fichiers: 'Tasm80.tab' et 'sngbeta.inc'. Sur votre calculette, créez un programme BASIC, éditez-le et tapez "SNG" puis le nom du programme qui apparaitra dans le shell. Ajoutez aussi des caractères, ce sera utile quand vous les remplacerez par du code. Lancez SNG. Allez dans la 'liste des variables' puis selectionnez votre programme. Allez avec l'éditeur hexadécimal à l'adresse du fichier dans la VAT. Remplacez le '05' par un '06' et si vous voulez, modifiez le nom du programme. Ensuite, allez à l'adresse du fichier dans la RAM. Vous pouvez modifier le nom du programme qui apparaitra dans le menu du shell. Mettez ensuite un '00' après le nom du programme. Maintenant, vous remplacez les caractères que vous avez rajoutés par du code. Si c'est trop compliqué pour vous, voila un exemple: On créé un programme nommé "ESSAI", on l'édite, on met "SNG" , le nom du programme (ESSAI 1) et des caractères supplémentaires. On obtiendra ceci: ---------------- |PROGRAM:ESSAI | |:SNGESSAI 1AAAAA| |AAAAAAAAAAAAAAAA| |AAAAAAAAAAAAAAAA| | | | | | | | | ---------------- On lance SNG. On regarde dans 'liste des variables' et on selectionne le programme et on a: ----------- NOM ESSAI TYPE PROG TAILLE: 58 ADRESSE: -VAT: FD91 -RAM: FD58 ----------- Avec l'éditeur hexadécimal on va à l'adresse du programme dans la VAT (FD91) et on remplace le '05' par un '06'. On trouve, un peu plus haut dans la mémoire le nom du programme écrit à l'envers (IASSE) et on renomme le fichier (iassE). On va à l'adresse du fichier (FD58), 2 octets plus loin, on trouve "SNGESSAI)1AAAA...", On met un '00' à la fin du nom et on obtient "SNGESSAI)1 AAA...", puis on renomme le fichier (attention il faut remplacer le ")" par un espace " " qui a pour code $20) et on obtient: "SNGEessai 1 AAA...". On veut faire un programme comme ceci: -------------------------------------------------------- | ASSEMBLEUR | EQUIVALENT EN LANGAGE MACHINE | -------------------------------------------------------- |CALL CLEARLCD |CD CD 39 | |LD HL,0 |21 00 00 | |LD (CURSOR_POS),HL |22 0C 80 | |LD HL,chaine |21 1B A6 | |CALL D_ZT_STR |CD 2D 3A | |CALL PAUSE |CD 56 8D | |RET |C9 | |chaine .DB "Bonjour",0|42 6F 6E 6A 6F 75 72 00 | -------------------------------------------------------- Donc on tape: cd cd 39 21 00 00 22 0c 80 21 1b a6 cd 2d 3a cd 56 8d c9 42 6f 6e 6a 6f 75 72 00 Voila, on a un programme en asm ! X Programmer en assembleur directement sur TI-82: ------------------------------------------------- Avant tout, imprimez 'sngbeta.inc'. Sur votre calculette, créez un programme BASIC, éditez-le et tapez "SNG" puis le nom du programme qui apparaitra dans le shell. Ajoutez aussi des caractères, ce sera utile quand vous les remplacerez par du code. Lancez SNG. Allez dans la 'liste des variables' puis selectionnez votre programme. Allez avec l'éditeur hexadécimal à l'adresse du fichier dans la VAT. Remplacez le '05' par un '06' et si vous voulez, modifiez le nom du programme. Ensuite, allez à l'adresse du fichier dans la RAM. Vous pouvez modifier le nom du programme qui apparaitra dans le menu du shell. Mettez ensuite un '00' après le nom du programme. Mémorisez l'adresse où le code commencera (après le 00 après le nom du programme). Lancez le debuggeur. Placez le curseur à l'adresse où commencera le code; vous n'avez plus qu'a entrer les instructions. Si c'est trop compliqué pour vous, prenez l'exemple du "Programmer en langage machine directement sur TI-82". Au lieu de taper le code dans l'éditeur hexadécimal, tapez-le avec le debuggeur. XI Améliorations à venir: ------------------------- -Optimiser le code -Faire les fonctions manquantes -Faire en sorte qu'il n'y a plus de problèmes quand on quitte. -Améliorer les niveaux de gris. Envoyez-moi vos questions et vos suggestions!