3.4 La ROM Basic3.4.1 L'arithmétique à virgule flottante ****** opérateurs BASIC codes de hiérarchie + adressesCFF0 F4, '+' CFF3 F5, '-' CFP6 F6, '*' CFF9 F7, '/' CFFC F8, 'A' CFFF F9, 'Backslash' D002 FA, 'AND' D005 FB, 'MOD' D008 FC, 'OR' D00B FD, 'XOR' ****** comparaison arithmétique D00E D012 comparaison arithmétique D01D accepter signe ****** '-' signe négatif D020 code de hiérarchie D022 aller chercher terme D026 changer signe ****** opérateur BASIC NOT D02B code de hiérarchie D02D aller chercher terme D031 opérateur NOT ****** aller chercher expression D036 ignorer les espaces ****** aller chercher expression D039 'Operand missing' D03D aller chercher variable D041 aller chercher valeur numérique D043 "" DO45 aller chercher chaîne D048 fonction ? D04A au calcul de fonction D04E adresse de base de la table D051 rechercher dans la table D055 ignorer les espaces, saut à fonction D058 sortir message d'erreur D05B 'Operand missing' ****** fonctions spéciales D05C nombre des entrées de la table D05D pas trouvé, 'Syntax error' D05E '-' D062 '+' D065 '(' D068 'NOT' D06B 'ERL' D06E 'FN' D071 'MID$' D074 '@' ****** aller chercher variable D077 aller chercher adresse de variable D07A pas encore définie ? D07C type de variable D07E chaîne ? D087 chaîne ? D089 annuler variable D08C pointeur sur zéro D08F comme descripteur de chaîne D094 longueur de chaîne zéro ******* aller chercher valeur numérique D095 ôter Offset D09A plus petit que 10 ? D09C oui, aller chercher chiffre D0A0 valeur un octet ? D0A2 oui D0A6 valeur deux octets (déc, hex, bin) ? D0A8 oui D0AA valeur à virgule flottante ? DOAC oui D0AE 'Syntax error' D0B1 'Real' D0B3 fixer type de variable ****** aller chercher valeur deux octets D0B9 ****** aller chercher valeur à virgule flottante D0C0 D0CD type de variable sur 'Real' D0D1 ignorer les espaces ******* '(' aller chercher terme entre parenthèses D0D4 aller chercher expression D0D7 tester si ')' ******* D0DA 'Syntax error' ******* calcul de fonction D0DD incrémenter pointeur de programme D0DE aller chercher Token D0DF ignorer les espaces D0E2 tester Token D0E5 40 - 49, variable réservée D0E9 aller chercher adresse de variable réservée DOEC tester si '(' DOF0 Token fois 2 D0F6 'Syntax error' D0FA calculer fonction D0FC aller chercher argument de fonction en parenthèses D100 calculer fonction ****** calculer fonction D105 adresse des fonctions D10A annuler octet fort D10C additionner Token fois 2 D111 exécuter fonction ****** aller chercher adresse de variable réservée D113 doubler Token D115 adresse de base d'Offset de table ****** adresses des variables réservées D11A 40, EOF D11C 41.ERR D11E 42, HIMEM D120 43, INKEY$ D122 44, PI D124 45, RND D126 46, TIME D128 47, XPOS D12A 48, YPOS D12C 49, DERR ****** variable réservée DERR D12E numéro erreur disque ****** variable réservée ERR D133 numéro ERROR D137 accepter contenu accu comme nombre entier ****** variable réservée TIME D13D KL TIME PLEASE D140 convertir valeur 4 octets en format virgule flottante ****** variable réservée ERL D146 aller chercher numéro de ligne ERROR ****** variable réservée HIMEM D14B D14C HIMEM D14F accepter valeur ****** '@', pointeur de variable D151 aller chercher adresse de variable D154 pas défini, 'Improper argument' D15A chaîne ? D15F accepter valeur ****** variable réservée XPOS D164 D165 GRA ASK CURSOR D168 valeur de colonne dans HL ****** variable réservée YPOS D16C GRA ASK CURSOR D16F accepter nombre entier dans HL ******* instruction BASIC DEF D174 tester si encore un caractère D177 'FN' D179 aller chercher numéro de ligne dans HL D17D 'Invalid direct command' D17F sortir message d'erreur D182 chercher fonction D18A ignorer reste de l'instruction ****** fonction BASIC FN D18D chercher fonction D199 'Unknown user function' D19B sortir message d'erreur D1A2 '(' D1A6 ignorer les espaces D1AA tester si '(' D1B3 aller chercher expression D1B8 affecter valeur à une variable D1BC suit virgule ? D1BF non D1C2 tester si',' D1C5 prochaine variable D1C7 tester si ')' D1CB tester si ')' D1D1 tester si '=' D1D4 aller chercher expression D1D7 'Syntax error' D1DA tester si chaîne D1E5 tester si même type de variable ****** fonctions BASIC avec plusieurs arguments D1E8 71,BIN$ D1EA 72, DEC$ D1EC 73, HEX$ D1EE 74, INSTR D1F0 75, LEFTS D1F2 76, MAX D1F4 77, MIN D1F6 78, POS D1F8 79, RIGHTS D1FA 7A, ROUND D1FC 7B, STRINGS D1FE 7C, TEST D200 7D, TESTR D202 7E, COPYCHRS D204 7F, VPOS ****** adresses des fonctions BASIC D206 00, ABS D208 01, ASC D20A 02, ATN D20C 03, CHR$ D20E 04, CINT D210 05, COS D212 06, CREAL D214 07, EXP D216 08, FIX D218 09, FRE D21A 0A, INKEY D21C 0B, INP D21E 0C, INT D220 0D, JOY D222 0E, LEN D224 0F, LOG D226 10, LOG10 D228 ll,LOWER$ D22A 12, PEEK D22C 13, REMAIN D22E 14, SGN D230 15, SIN D232 16, SPACE$ D234 17, SQ D236 18.SQR D238 19, STR$ D23A 1A, TAN D23C 1B, UNT D23E 1C, UPPERS D240 1D, VAL ****** fonction BASIC MIN D242 flag pour MIN ****** fonction BASIC MAX D246 flag pour MAX D248 aller chercher expression D24B suit virgule ? D24E non, tester si ')', terminé D251 placer variable sur pile BASIC D254 aller chercher expression D259 libérer place dans pile BASIC D25E comparaison arithmétique D267 aller chercher résultat des comparaisons D26B prochain argument ****** fonction BASIC ROUND D26D aller chercher expression D270 et placer sur pile BASIC D273 suit virgule ? D276 défaut zéro D279 oui, aller chercher valeur entière avec signe D27C tester si *)' D281 39 D284 additionner D285 79 D288 comparaison HL <> DE D28B supérieur, Tmproper argument' D290 libérer place dans pile BASIC D293 nombre de chiffres d'arrondissage dans B D294 arrondir nombre ****** instruction BASIC CAT D29B interrompre I/O disque D2A1 DISK CATALOG D2A4 ranger erreur disquette ****** instruction BASIC OPENOUT D2AB D2B4 DISK OUT OPEN ****** instruction BASIC OPENIN D2B7 D2BD sortir message d'erreur D2C0 'File type error' D2C1 aller chercher nom de fichier D2C7 DISK IN OPEN D2CD aller chercher expression et param. chaîne D2D2 tester si messages système D2D5 ranger erreur disquette D2DA sortir message d'erreur D2DD 'File already open' ****** tester si messages système D2DE D2E0 pas nom de fichier ? D2E3 premier caractère du nom D2E4 '!' D2E8 non D2EA fixer pointeur sur second caractère D2EB décrémenter longueur D2EC inverser flag D2ED CAS NOISY ****** instruction BASIC CLOSEIN D2F0 D2F1 DISK IN CLOSE ****** instruction BASIC CLOSEOUT D2F8 D2F9 DISK OUT CLOSE D2FC ranger erreur disquette ****** interrompre I/O disque D303 D306 DISK IN ABANDOM D30C DISK OUT ABANDOM ******* instruction BASIC SOUND D316 aller chercher valeur 8 bits D319 état canal D31C tester si ',' D31F aller chercher argument 0 à 4095 D322 période de note D326 suit virgule ? D329 valeur défaut 20 D32C oui, aller chercher valeur entière avec signe D32F durée D333 max. 15, défaut 12 D336 aller chercher arguments s'il y en a D339 volume D33C max. 15, défaut 0 D33E aller chercher arguments s'il y en a D341 courbe d'enveloppe de volume D344 aller chercher arguments s'il y en a D347 courbe d'enveloppe de note D34A max. 31, défaut 0 D34C aller chercher arguments s'il y en a D34F période de bruit D352 fin de l'instruction, sinon 'Syntax error' D356 adresse du bloc de paramètres SOUND D359 SOUND QUEUE D35F à la boucle de l'interpréteur ****** aller chercher s'il y a lieu valeur 8 bits D362 suit virgule ? D365 charger valeur défaut D366 pas virgule, terminé D368 ',' D36C aller chercher valeur 8 bits D36F comparer avec valeur maximum D370 plus petit, ok D371 Improper argument' ****** instruction BASIC RELEASE D373 8 D375 aller chercher valeur 8 bits < 8 D379 SOUND RELEASE ****** fonction BASIC SQ D37E CINT D383 tester bit 0 D384 mis ? D386 tester bit 1 D387 mis ? D389 tester bit 2 D38A pas mis, 'Improper argument' D38C octet fort supérieur zéro ? D38D oui, Tmproper argument' D390 SOUND CHECK D393 accepter contenu accu comme nombre entier ****** aller chercher argument -128 à +127 D396 aller chercher valeur entière avec signe D39E 'Improper argument' ******* instruction BASIC ENV D3A1 aller chercher valeur 8 bits différente de zéro D3A4 supérieur ou égal 16 ? D3A6 oui, 'Improper argument' D3AC aller chercher paramètre D3B1 adresse du bloc de paramètre D3B5 SOUND AMPL ENVELOPE D3BB '=' D3BF ignorer les espaces D3C2 16 D3C4 aller chercher valeur 8 bits < 16 D3C7 fixer bit 7 D3CA tester si ',' D3CD aller chercher valeur 16 bits D3D0 128 D3D2 aller chercher valeur 8 bits < 128 D3D5 aller chercher 2 arguments ****** instruction BASIC ENT D3D7 aller chercher argument -128 à +127 D3DD zéro ? D3E2 zéro ? D3E3 'Improper argument' D3E5 supérieur ou égal 16 ? D3E7 'Improper argument' D3ED aller chercher paramètre D3F2 adresse du bloc de paramètre D3FB SOUND TONE ENVELOPE D401 D405 ignorer les espaces D408 aller chercher argument 0 à 4095 D412 240 D414 aller chercher valeur 8 bits < 240 D418 tester si',' D41B aller chercher argument -128 à +127 D41F tester si ',' D422 aller chercher valeur 8 bits ****** aller chercher paramètre pour ENT & ENV D428 D42B suit virgule ? D432 JP (DE) D439 adresse du bloc de paramètre D44C fin de l'instruction, sinon 'Syntax error' ****** aller chercher argument 0 à 4095 D44F aller chercher valeur entière avec signe D452 octet fort D453 bit 12-15 mis ? D455 oui, 'Improper argument' ****** fonction BASIC INKEY D459 CINT D45C 80 D45F comparaison HL <> DE D462 'Improper argument' D465 KM TEST KEY D468 -1 si pas appuyée D46D résultat dans L D470 accepter nombre entier dans HL ****** fonction BASIC JOY D473 KM GET JOYSTICK D477 CINT D483 accepter contenu accu comme nombre entier D486 'Improper argument' ****** instruction BASIC KEY D489 'DEF' D48D aller chercher valeur 8 bits D491 tester si ',' D494 aller chercher expression chaîne et paramètre D497 longueur de chaîne dans C D499 numéro de touche dans B D49B adresse chaîne dans HL D49C KM SET EXPAND D4A0 'Improper argument' ****** KEY DEF D4A3 ignorer les espaces D4A6 80 comme valeur maximum D4A8 aller chercher valeur 8 bits < 80 D4AC tester si ',' D4AF 2 D4B1 aller chercher argument < 2 D4BA KM SET REPEAT D4BF KM SET TRANSLATE D4C2 tester si encore un argument D4C5 KM SET SHIFT D4C8 tester si encore un argument D4CB KM SET CONTROL D4CE suit virgule ? D4D1 non, terminé D4D3 aller chercher valeur 8 bits D4D9 saut en (HL) ****** instruction BASIC SPEED D4DE 'WRITE' D4E2 'KEY' D4E4 KM SET DELAY D4E9 INK' D4EB SCR SET FLASHING D4EE 'Syntax error' ******* SPEED KEY & INK D4FI D4F2 ignorer les espaces D4F5 aller chercher valeur 8 bits différente de zéro D4F9 tester si ',' D4FC aller chercher valeur 8 bits différente de zéro D503 saut en (BC) ****** SPEED WRITE D508 ignorer les espaces D50B 2 D50D aller chercher argument < 2 D511 167 D517 zéro ? D519 non, doubler constante de durée D51B CAS SET SPEED ******* variable réservée PI D520 D521 fixer type sur 'Real' D524 type de variable dans C, HL sur variable D527 aller chercher PI ****** instruction BASIC DEG D52C flag pour DEG ****** instruction BASIC RAD D530 flag pour RAD D53I fixer mode DEG/RAD ****** fonction BASIC SQR D534 fonction SQR ****** opérateur BASIC 'A' D539 D53B CREAL D53F mémoire provisoire pour variable à virgule flottante D542 copier variable de (DE) dans (HL) D548 fixer type et adresse de variable D54C élévation à la puissance D54F exécuter fonction D552 pas d'erreur ? D553 'Division by zéro' D556 'Overflow' D559 Improper argument' ****** exécuter fonction à virgule flottante D55C D55E CREAL D562 exécuter fonction ****** fonction BASIC EXP D563 fonction EXP ****** fonction BASIC LOG10 D568 fonction LOG10 ****** fonction BASIC LOG D56D fonction LOG ****** fonction BASIC SIN D572 fonction SIN ****** fonction BASIC COS D577 fonction COS ****** fonction BASIC TAN D57C fonction TAN ****** fonction BASIC ATN D581 fonction ATN D586 'Random number seed ? ',0 ******* instruction BASIC RANDOMIZE D59C D59E aller chercher expression D5A5 'Random number seed ? ' D5A8 sortir D5AB aller chercher ligne d'entrée D5AE sortir LF D5B1 lire entrée D5B4 non valable, répéter D5B6 ignorer espace, TAB et LF D5BA non valable, répéter D5BC CREAL D5BF SET RANDOM SEED ****** variable réservée RND D5C4 D5C5 '(' D5C9 ignorer les espaces D5CC aller chercher expression D5CF tester si ')' D5D3 CREAL D5D6 SGN D5D9 différ. de zéro ? D5DB aller chercher dernière valeur RND D5E0 négatif, SET RANDOM SEED D5E5 fixer type sur virgule flottante D5E8 RND ****** restaurer pointeur de variable D5ED annuler table D5F0 fin du programme D5F3 début des variables D5F6 début des tableaux D5F9 fin des tableaux ******* annuler table D5FD base de la table D600 54 = 2*27, A-Z plus fonctions D602 annuler #ADB7 â #ADEC D60A annuler #ADED à #ADF2 ****** annuler flag pour FN D611 ****** calculer adresse table D61A 'Z'+1 D61C début des variables D620 moins 1 D621 fois 2 D624 plus #AD35 ****** calculer adresse table pour tableau D62A début des tableaux D62E moins 1 D632 fois D635 plus #ADED ****** toutes les variables sur type REAL D63B 'AZ' D63E type 'Real' D641 nombre dans A D642 plus petit 1, alors 'Syntax error' D646 base de la table égale #ADB2 D64B lettre égale pointeur dans table D64E toutes les lettres ****** instruction BASIC DEFSTR D653 type 'chaîne' ****** instruction BASIC DEFINT D657 type Integer' ****** instruction BASIC DEFREAL D65B type 'Real' D65D aller chercher lettre D65E tester si lettre D661 'Syntax error' D663 dans BC (de - à) D665 ignorer les espaces D668 '-' D66C ignorer les espaces D66F tester si lettre D672 'Syntax error' D674 à D675 ignorer les espaces D678 fixer type de variable D67B suit virgule ? D67E oui, continuer D681 'Syntax error' D684 sortir message d'erreur D687 'Subscript out of range' D688 sortir message d'erreur D68B 'Array already dimensioned' D68C 2* #7C T D68E extension d'instruction ****** instruction BASIC LET D691 aller chercher variable D695 tester si '=' D698 aller chercher expression D69D affecter valeur à une variable ****** affecter valeur à une variable D6A2 type de variable D6A3 et type du résultat D6A6 comparer D6A8 types correspondants, sinon 'Type mismatch' D6AB tester si chaîne D6AE non, copier variable dans (HL) D6B2 gestion de chaîne D6B6 accepter pointeur sur chaîne ****** instruction BASIC DIM D6B9 dimensionnement D6BC suit virgule ? D6BF oui, prochaine variable ****** chercher variable D6C2 lire nom de variable D6C5 tester si variable dimensionnée D6C8 aller chercher type de variable ****** aller chercher adresse de variable D6CC lire nom de variable D6CF tester si variable dimensionnée D6D2 aller chercher type de variable D6D5 première lettre D6D6 calculer position table ****** chercher fonction D6DE lire nom de variable D6E4 calculer position table pour FN D6EA créer fonction D6EF lire nom de variable D6F5 première lettre D6F6 calculer position table D6FC type de variable D705 début des variables D70C type de variable D712 lire nom de variable D715 tester si variable indexée D718 aller chercher type de variable D72A chercher tableau D72E trouvé ? D733 chercher tableau D736 trouvé ? ****** chercher tableau D75B type de variable D77A fixer bit 6, 'FN' D787 début des tableaux D78B reserver place dans zone des variables D78E incrémenter pointeur pour zone des tableaux D7C6 LDIR D7C9 type de variable ****** dimensionnement D7E4 aller chercher nom de variable D7E8 '(' D7EC ']' D7EE 'Syntax error' D7F6 type de variable D7F9 calculer position table pour tableau D7FC chercher tableau D7FF trouvé, 'tableau already dimensioned' ****** tester si variable dimensionnée D80A D80C '(' D810 ']' D817 début des variables ****** variable dimensionnée D820 D827 début des tableaux D830 type de variable D833 calculer position table pour tableau D836 chercher tableau D839 pas trouvé ? D845 'Subscript out of range' D857 nombre des dimensions D85C limite des tableaux dans DE ****** lire indices D887 D888 ignorer les espaces D88B type de variable D88E ranger D88F nombre des indices D891 aller chercher valeur 16 bits 0 - 32767, index D897 reserver place dans pile BASIC D89B index sur pile BASIC D89E incrémenter nombre des indices D89F suit virgule ? D8A2 oui, prochain index D8A5 ')' D8A9 '[' D8AB 'Syntax error' D8AE ignorer les espaces D8B2 restaurer type de variable D8C4 fin des tableaux D8C8 reserver place dans zone des variables D8D5 type de variable D8E3 10, valeur défaut pour index D92B 2 octets D92D libérer place dans pile BASIC ****** lire nom de variable D935 déterminer type de variable D93D variable déjà définie ? D93E non D941 ignorer lettres du nom D942 tester bit 7 D943 dernière lettre ? D945 ignorer les espaces suivants D94B fixer pointeur sur type de variable D988 type de variable D991 #05 + #09 => #0D D995 40 D997 reserver place dans pile BASIC D99B 41 D99D déjà 40 caractères? D99E oui, alors 'Syntax error' D9A1 lire prochain caractère du nom D9A3 convertir minuscules en majuscules D9A7 dernier caractère ? D9A8 non D9AA fixer pointeur de pile BASIC D9B0 ignorer les espaces suivants ****** déterminer type de variable D9B3 D9B6 plus petit que #0B ? D9B8 -#09, #0D => #05 D9BA '!', variable Real ? D9BC fixer type sur 'Real' D9BE 'Syntax error' D9C0 '%', variable entière ? D9C2 ou '$', chaîne ? D9C4 non, 'Syntax error' D9C7 'Real' D9C9 ranger type de variable ****** actualiser table des tableaux D9CD annuler table pour tableaux D9D0 fin des tableaux D9D4 début des tableaux D9D7 comparaison HL <> DE D9DA aucun tableau D9E5 calculer position table pour tableau ******* instruction BASIC ERASE D9F4 D9F7 annuler tableau D9FA suit virgule ? D9FD oui, prochain tableau ******* annuler tableau DA00 lire nom de variable DA04 type de variable DA07 calculer position table pour tableau DA0A chercher tableau DA0D pas trouvé, 'Improper argument' DA16 BC:=HL-DE DA1F actualiser table des tableaux DA33 6 octets DA35 reserver place dans pile BASIC DA71 reserver place dans pile BASIC DA75 déterminer type de variable DA88 type de variable DA8D reserver place dans pile BASIC DAAC 26 lettres, 'A' DABO première lettre du nom DABI calculer position table DAB8 prochaine lettre DAB9 déjà toutes les lettres ? DABD calculer position table pour tableau DAC8 début des tableaux DAE2 comparaison HL <> BC DB10 saut en (HL) ****** instruction BASIC LINE DB18 tester si encore un caractère DB1B 'INPUT DBlC aller chercher numéro de canal DB1F sortir évent. chaîne de dialogue DB22 chercher variable DB25 type 'chaîne', sinon 'Type mismatch' DB2A aller chercher entrée sur périphérique actif DB2D entrer chaîne dans descripteur de pile DB31 affecter résultat à une variable ****** aller chercher entrée sur périphérique actif DB36 DB39 aller chercher entrée sur la disquette DB42 ';' ****** instruction BASIC INPUT DB48 aller chercher numéro de canal DB4B aller chercher entrée et convertir DB4F chercher variable DB59 suit virgule ? DB5C oui, prochaine variable ****** aller chercher entrée et convertir DB60 DB63 sortir évent. chaîne de dialogue ****** DB7E '?Redo from start', LF,0 ****** sortir évent. chaîne de dialogue DB90 DB91 ';' DB93 ranger signe de séparation DB96 ignorer les espaces DB99 "" DB9B pas chaîne ? DBA0 suit virgule ? DBA3 oui DBA4 tester si encore un caractère DBA4 tester si encore un caractère DBA7 ';' DBAC '?' DBAE sortir DBB1 ' ' DBB3 sortir DBC6 'type mismatch' DBCE sortir message d'erreur DBD1 'type mismatch' DBD5 aller chercher nom et type de variable DBDF 'chaîne' DBE1 oui, aller chercher param. de chaîne DBE5 suit virgule ? DBEA non DBEC ',' DBFD tester si chaîne DC13 ignorer espace, TAB et LF DC22 entrer chaîne dans Descriptor DC25 ignorer espace, TAB et LF DC28 "" DC2A lire chaîne DC39 sortir message d'erreur DC3C 'EOF met' DC42 '"' DC53 début du buffer d'entrée DC56 premier caractère égale zéro DC59 "" DC5F 'EOF met' DC64 début du buffer d'entrée DC6A JP (DE) DC7F CR DC82 "" DCA4 LF + CR DCA7 CR ? DCAA LF ? DCBE ',' DCC1 CR DCC4 " DCC7 TAB DCCA LF ****** instruction BASIC RESTORE DCCD aucun numéro de ligne ? DCCF aller chercher numéro de ligne dans DE DCD3 chercher ligne BASIC DE DCD7 fixer pointeur DATA DCDA début du programme DCDD comme pointeur DATA ****** instruction BASIC READ DCDF DCE0 pointeur DATA DCE3 aller chercher prochain élément DATA DCE7 chercher variable DCEC ':' DCF6 ',' DCFA adresse de ligne pendant instruction READ DCFD fixer adresse de ligne actuelle DD00 'Syntax error' DD04 suit virgule ? DD08 oui DD0A pointeur DATA DD10 ',' DD13 ignorer reste de la ligne DD16 fin de ligne ? DD17 non DD1A longueur de ligne DD1C zéro, fin du programme ? DD1E 'DATA exhausted' DD20 sortir message d'erreur DD23 adresse de ligne pendant instruction READ DD27 ignorer les espaces DD2A 'DATA' DD2C non, continuer à chercher DD2F ranger signe DD30 former valeur absolue ******* accepter signe B DD3C DD41 signe du résultat DD42 négatif, alors changement de signe DD47 inverser bit signe ******* addition entière HL := DE + HL DD4F annuler flag carry DD50 addition DD53 résultat positif ? DD54 fixer flags ******* soustraction entière HL := DE - HL DD57 échanger opérandes DD58 annuler flag carry DD59 soustraction DD5C résultat positif ? DD5D fixer flags ******* multiplication entière avec signe DD60 déterminer signe du résultat DD63 multiplication non signée DD66 accepter signe ******* déterminer signe du résultat DD6C signe de HL DD6D et signe de DE DD6E dans B DD70 former valeur absolue de DE DD74 former valeur absolue de HL ******* multiplication entière sans signe DD77 ****** division entière avec signe DDA1 Division HL := HL / DE DDA4 accepter signe ******* calcul MOD integer DDA8 ranger signe DDA9 Division DDAC reste dans HL DDAD ramener signe DDAE et accepter ****** Division HL := HL / DE, DE := reste DDB0 déterminer signe du résultat ****** former valeur absolue DDEF tester signe DDF1 positif, déjà terminé ****** changement de signe integer DDF2 ******* SGN signe de HL DDFE ****** comparaison HL <> DE DE07 signe de HL DE08 et signe de DE DE0A comparer nombres avec même signe ******* tester si encore une virgule DE1A ',' ******* tester si parenthèse ouverte DE1E '(' ******* tester si parenthèse fermée DE22 ')' ******* tester si signe égale DE26 '=' ******* tester si encore un caractère DE2A aller chercher adresse de retour DE2B aller chercher caractère DE2D ramener pointeur de programme DE2E comparer caractère DE2F 'Syntax error' ****** ignorer les espaces DE31 DE33 ' ' DE35 continuer à tester si espaces DE37 fin de l'instruction ? ****** tester si fin de ligne, sinon 'Syntax error' DE3C DE40 'Syntax error' ****** tester si fin de l'instruction DE42 ****** tester si virgule DE46 DE47 ignorer les espaces DE4A ',' DE4D ignorer les espaces ****** ignorer espace, TAB et LF DE52 aller chercher caractère DE53 incrémenter pointeur DE54 ' ' DE58 TAB DE5C LF DE60 décrémenter pointeur ****** boucle de l'interpréteur DE62 adresse de l'instruction actuelle DE65 fixer adresse de l'instruction actuelle DE68 KL POLL SYNCHRONOUS DE6B traitement event (AFTER/EVERY) DE6E ignorer les espaces DE71 exécuter instruction BASIC DE74 lire texte programme DE75 ':', fin de l'instruction ? DE77 oui DE79 'Syntax error' DE7D longueur de ligne DE7E égale zéro ? DE80 oui, à l'instruction END DE82 ranger adresse de ligne actuelle DE86 flag TRACE mis ? DE8A non DE8C routine TRACE DE8F au début de la boucle de l'interpréteur DE91 à l'instruction END ****** exécuter instruction BASIC DE94 Token fois 2 DE95 tester si extension d'instruction DE9A token non valable, 'Syntax error' DE9F plus #DEE5 (adresse table) DEA7 adresse d'instruction sur pile DEA9 ignorer les espaces, saut à instruction DEAC 'Syntax error' ****** adresse de ligne actuelle sur zéro DEAF zéro DEB2 comme adresse de ligne actuelle ****** charger adresse de ligne actuelle DEB6 adresse de ligne actuelle ****** test mode direct/aller chercher adresse de ligne DEBA adresse de ligne actuelle DEBF zéro, mode direct DEC2 numéro de ligne dans HL ****** instruction BASIC TRON DEC6 fixer flag ****** instruction BASIC TROFF DECA annuler flag ****** routine TRACE DECF ']' DED1 sortir DED5 adresse de ligne actuelle DED9 numéro de ligne dans HL DEDC sortir numéro de ligne DEEO '[' DEE2 sortir ******* adresses des instructions BASIC DEE5 80, AFTER DEE7 81, AUTO DEE9 82, BORDER DEEB 83, CALL DEED 84, CAT DEEF 85, CHAIN DEF1 86, CLEAR DEF3 87, CLG DEF5 88, CLOSEIN DEF7 89, CLOSEOUT DEF9 8A, CLS DEFB 8B, CONT DEFD 8C, DATA DEFF 8D, DEF DF01 8E, DEFINT DF03 8F, DEFREAL DF04 90, DEFSTR DF07 91,DEG DF09 92, DELETE DF0B 93, DIM DF0D 94, DRAW DF0F 95, DRAWR DF11 96, EDIT DF13 97, ELSE DF15 98, END DF17 99, ENT DF19 9A, ENV DF1B 9B, ERASE DF1D 9C, ERROR DF1F 9D, EVERY DF21 9E, FOR DF23 9F, GOSUB DF25 AO, GOTO DF27 AI, IF DF29 A2, INK DF2B A3, INPUT DF2D A4, KEY DF2F A5, LET DF31 A6, UNE DF33 A7, LIST DF35 A8, LOAD DF37 A9, LOCATE DF39 AA, MEMORY DF3B AB, MERGE DF3D AC, MID$ DF3F AD, MODE DF41 AE, MOVE DF43 AF, MO VER DF45 BO, NEXT DF47 Bl, NEW DF49 B2, ON DF4B B3, ON BREAK DF4D B4, ON ERROR GOTO 0 DF4F B5, ON SQ DF51 B6, OPENIN DF53 B7, OPENOUT DF55 B8, ORIGIN DF57 B9, OUT DF59 BA, PAPER DF5B BB, PEN DF5D BC, PLOT DF5F BD, PLOTR DF61 BE, POKE DF63 BF, PRINT DF65 CO, ' DF67 Cl.RAD DF69 C2, RANDOMIZE DF6B C3, READ DF6D C4, RELEASE DF6F C5, REM DF71 C6, RENUM DF73 Cl, RESTORE DF75 C8, RESUME DF77 C9, RETURN DF79 CA, RUN DF7B CB, SAVE DF7D CC, SOUND DF7F CD, SPEED DF81 CE, STOP DF83 CF, SYMBOL DF85 DO, TAG DF86 Dl,TAGOFF DF89 D2, TROFF DF8B D3, TRON DF8D D4, WAIT DF8F D5, WEND DF91 D6, WHILE DF93 D7, WIDTH DF95 D8, WINDOW DF97 D9, WRITE DF99 DA, ZONE DF9B DB, DI DF9D DC, El DF9E DD, FILL DFA1 DE, GRAPHICS DFA3 DF, MASK DFA5 EO, FRAME DFA7 El.CURSOR DFAA début de la RAM libre DFB2 max. 300 caractères DFB5 aller chercher caractère dans buffer d'entrée DFB9 dernier caractère ? DFBA non DFBE 301 - état compteur DFC0 égale longueur de ligne DFC3 dans B DFC6 trois fois zéro comme terminaison ****** aller chercher caractère dans buffer d'entrée DFCD DFCE dernier caractère ? DFD0 lettre ? DFD3 oui DFD5 numérique ? DFD8 oui DFDB '&' ? DFDD oui DFE1 Token ? DFE2 oui DFE3 '!' DFE8 ignorer espaces supplémentaires ? E0A3 écrire dans buffer E0B6 adresse de base de la table E0B9 rechercher dans la table
CPCrulez[Content Management System] v8.732-desktop/c Page créée en 157 millisecondes et consultée 1763 foisL'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko. |
|
|