3.4 La ROM Basic 3.4.1 L'arithmétique à virgule flottante ****** instructions avec numéro de ligneE0C8 'RESTORE' E0C9 'AUTO' E0CA 'RENUIVP E0CB 'DELETF E0CC 'EDIT' E0CD 'RESUME' E0CE 'ERL' E0CF 'ELSE' E0D0 'RUN' E0D1 'LIST' E0D2 'GOTO' E0D3 'THEN' E0D4 'GOSUB' E0D5 fin de la table E0D6 '!' E0DA '&' E0DD '$' E0F9 Token pour numéro de ligne E105 tester si chaîne E108 Token pour nombre à virgule flottante E&12 Token pour nombre deux octets E119 10 E11D additionner Offset E121 Token pour nombre un octet E123 écrire dans buffer E128 écrire dans buffer El 2F écrire dans buffer El34 comparaison HL <> DE El45 Token pour nombre binaire E14B écrire dans buffer El52 aller chercher type de variable El58 écrire dans buffer E161 "" E165 T, extension d'instruction E16B '?' E16D Token pour 'PRINT' E172 adresse des opérateurs BASIC E187 '" E18B écrire dans buffer E190 "" E19A écrire dans buffer E1A1 "" E1A5 écrire dans buffer ****** traiter extension d'instruction E1A8 écrire dans buffer E1AB zéro E1AF écrire dans buffer E1B2 prochain caractère E1B3 incrémenter pointeur E1B4 tester si lettre ou chiffre E1B7 oui, alors dans buffer E1BA pointeur de un en arrière E1BC fixer bit 7 sur le dernier caractère E1C3 écrire dans buffer E1C6 "' E1C8 écrire dans buffer E1CB caractère E1CE écrire dans buffer jusqu'à la fin de la ligne ****** instruction BASIC LIST E1D2 aller chercher numéro de zone de ligne E1D7 aller chercher numéro de canal E1DA fin de l'instruction, sinon 'Syntax error' E1DD adresse de ligne actuelle sur zéro E1E2 lister lignes E1E5 au mode READY ****** lister lignes BASIC BC- DE E1E8 E1E9 numéro de ligne dans DE E1EB chercher ligne BASIC DE E1F0 fin du programme ? E1F5 terminé E1F6 interruption par 'ESC E1FA additionner longueur de ligne E201 prochain numéro de ligne dans DE E205 comparaison HL <> DE E209 supérieur dernier numéro de ligne ? E20B lister ligne BASIC dans buffer E20E pointeur sur buffer E211 sortir caractère E214 incrémenter pointeur E215 prochain caractère E217 pas encore fin ? E219 sortir LF E21F lister prochaine ligne E222 charger canal de sortie plus petit 8 ? E225 caractère E226 oui, sortie écran E228 sortir caractère E22B LF E22E CR E232 caractère de contrôle ? E234 sortir comme caractère imprimable E23A sortir caractère E249 pointeur sur buffer E26B token d'instruction ? E27C sortir constante E27E T, extension d'instruction E290 '" E294 'ELSE' E299 ':' E29D "" E2A8 "" E2CF écrire caractère dans buffer E2D0 incrémenter pointeur de buffer ****** lister extension d'instruction E2D6 E2D8 écrire dans buffer E2DC prochain caractère E2DD incrémenter pointeur E2DE fin de ligne ? E2DF non E2E1 annuler bit 7 E2E3 écrire dans buffer E2E6 dernier caractère ? E2E8 non, prochain caractère E2ED ' ' E2EF écrire dans buffer E302 fonction ? E324 tester si lettre ou chiffre E337 nombre à virgule flottante ? E33F nombre binaire ? E343 nombre hexadécimal ? E347 adresse de ligne ? E34B numéro de ligne ? E34F nombre deux octets ? E356 nombre un octet ? E35B chiffre ? E376 *X' E38D '&' E398 type de variable 'Real' E39A aller chercher nombre E3AE 'A' E3B3 plus #E41D, adresse des mots d'instruction E3BF 26 lettres E3C1 table des mots d'instruction E3CA prochaine lettre E3CC table des opérateurs de base E3D2 'Syntax error' E3F6 TAB E3FA ' ' ******* adresses des mots d'instruction E41D A E41F B E421 C E423 D E425 E E427 F E429 G E42B H E42D I E42F J E431 K E433 L E435 M E437 N E439 O E43B P E43D Q E43F R E44I S E443 T E445 U E447 V E449 W E44B X E44D Y E44F Z ****** table des instructions BASIC ****** lettre Z E451 DA ZONE ****** lettre Y E456 48 YPOS ****** lettre X E45B 47 XPOS E45F FD XOR ****** lettre W E463 D9 WRITE E468 D8 WINDOW E46E D7 WIDTH E473 D6 WHILE E478 D5 WEND E47C D4 WAIT ****** lettre V E481 7F VPOS E485 1D VAL ****** lettre U E489 ED USING E48E 1C UPPERS E494 1B UNT ****** lettre T E498 D3 TRON E49C D2 TROFF E4A1 EC TO E4A4 46 TIME E4A7 EB THEN E4AB 7D TESTR E4B0 7C TEST E4B4 1A TAN E4B7 D1 TAGOFF E4BD D0 TAG E4C0 EA TAB ****** lettres S E4C4 CF SYMBOL E4CA E7 SWAP E4CE 7B STRINGS E4D5 19 STR$ E4D9 CE STOP E4DD E6 STEP E4E1 18 SQR E4E3 17 SQ E4E6 CD SPEED E4EB E5 SPC E4EE 16 SPACES E4F3 CC SOUND E4F9 15 SIN E4FC 14 SGN E4FF CB SAVE ****** lettre R E504 CA RUN E507 7A ROUND E50C 45 RND E50F 79 RIGHT$ E515 C9 RETURN E51B C8 RESUME E521 C7 RESTORE E528 C6 RENUM E52D 13 REMAIN E533 C5 REM E536 C4 RELEASE E53D C3 READ E541 C2 RANDOMIZE E549 C1 RAD ****** lettre Q ****** lettre P E54F BF PRINT E554 78 POS E557 BE POKE E55B BD PLOTR E560 BC PLOT E564 44 PI E566 BB PEN E569 12 PEEK E56D BA PAPER ****** lettre O E573 B9 OUT E576 B8 ORIGIN E57C FC OR E57E B7 OPENOUT E585 B6 OPENIN E58B B5 ON SQ E598 B4 ON ERROR GOTO 0 E5A0 B3 ON BREAK E5A8 B2 ON ****** lettre N E5AB FE NOT E5AE B1 NEW E5B1 B0 NEXT ****** lettre M E5B6 AF MOVER E5BB AE MOVE E5BF AD MODE E5C3 FB MOD E5C6 77 MIN E5C9 AC MID$ E5CD AB MERGE E5D2 AA MEMORY E5D8 76 MAX E5DB DF MASK ****** lettre L E5E0 11 LOWERS E5E6 10 LOG10 E5EB 0F LOG E5EE A9 LOCATE E5F4 A8 LOAD E5F8 A7 LIST E5FC A6 LINE E600 A5 LET E603 0E LEN E606 75 LEFTS ****** lettre K E60C A4 KEY ****** lettre J E610 OD JOY ****** lettre I E614 OC INT E617 74 INSTR E61C A3 INPUT E621 OB INP E624 43 INKEYS E62A OA INKEY E62F A2 INK E632 A1 IF ****** lettre H E635 42 HIMEM E63A 73 HEX$ ****** lettre G E63F DE GRAPHICS E647 A0 GOTO E64C 9F GOSUB ****** lettre F E653 09 FRE E656 EO FRAME E65B 9E FOR E65E E4 FN E660 08 FIX E663 DD FILL ****** lettre E E668 07 EXP E66B 9D EVERY E670 9C ERROR E675 41 ERR E678 E3 ERL E67B 9B ERASE E680 40 EOF E683 9A ENV E686 99 ENT E689 98 END E68C 97 ELSE E690 DC El E692 96 EDIT ****** lettre D E697 95 DRAWR E69C 94 DRAW E6A0 93 DIM E6A3 DB DI E6A5 49 DERR E6A9 92 DELETE E6AF 91 DEG E6B2 90 DEFSTR E6B8 8F DEFREAL E6BF 8E DEFINT E6C5 8D DEF E6C8 72 DEC$ E6CC 8C DATA ****** lettreC E6D1 E1 CURSOR E6D7 06 CREAL E6DC 05 COS E6DF 7E COPYCHRS E6E7 8B CONT E6EB 8 A CLS E6EE 89 CLOSEOUT E6F6 88 CLOSEIN E6FD 87 CLG E700 86 CLEAR E705 04 CINT E709 03 CHR$ E70D 85 CHAIN E712 84 CAT E715 83 CALL ****** lettre B E71A 82 BORDER E720 71 BIN$ ****** lettre A E725 81 AUTO E729 02 ATN E72C 01 ASC E72F FA AND E732 80 AFTER E737 00 ABS ****** opérateurs BASIC et Tokens correspondants E73B F8 w E73D F9 'Backslash' E740 FO >=' E743 FO '=>' E747 EE V E749 F2 '<>' E74D F3 '<=' E751 F3 '=<' E755 EF '=' E757 FI V E759 F7 '/' E75B 01 ':' E75D F6 '*' E75F F5 '-' E761 F4 '+' E763 C0 '" ****** annuler pointeur de programme E766 E767 début du programme E76D trois fois zéro à la fin du programme E770 fin du programme E77D placer numéro de ligne ****** remplacer adresses de ligne par numéro de ligne E78B aller chercher prochain élément de la ligne E78E fin de l'instruction ? E790 oui E791 'adresse de ligne' ? E793 non E79F numéro de ligne dans DE E7A2 'numéro de ligne' E7A6 placer ****** instruction BASIC DELETE E7F3 E7F6 fin de l'instruction, sinon 'Syntax error' E802 au mode READY E805 aller chercher numéro de zone de ligne E80A chercher ligne BASIC DE E80F chercher ligne BASIC DE ****** aller chercher adresse de ligne E82C E82E numéro ou adresse dans DE E830 'adresse de ligne' ? E832 oui E834 'numéro de ligne' ? E836 'Syntax error' E83A aller chercher numéro de ligne dans HL E83D comparaison HL <> DE E840 plus petit, chercher à partir du début du programme E845 ignorer reste de la ligne E848 à partir de adresse (HL) E849 chercher ligne BASIC DE E84C pas trouvé, chercher à partir de début du programme E854 'adresse de ligne' E859 dans le programme E85B adresse de ligne dans le programme ****** chercher ligne BASIC DE E861 E865 sortir message d'erreur E868 'Line does not exist' E869 début du programme E86E longueur de ligne dans BC E872 fin du programme ? E873 pas trouvé E878 numéro de ligne dans HL E87C comparaison HL <> DE E882 supérieur, pas trouvé E883 égal, trouvé E884 additionner longueur de ligne E885 chercher encore ****** chercher ligne BASIC DE E887 début du programme E88B ranger adresse de ligne E88D longueur de ligne dans BC E891 fin du programme ? E893 oui E896 numéro de ligne dans HL E89A comparaison HL <> DE E89F actuel numéro de ligne supérieur ou égal ? E8A0 additionner longueur de ligne E8A1 chercher encore ****** instruction BASIC RENUM E8A3 10, défaut pour valeur initiale E8A6 aller chercher numéro de ligne dans DE E8AA 0, défaut E8AD suit virgule ? E8B0 aller chercher numéro de ligne dans DE E8B4 10, défaut E8B7 suit virgule ? E8BD fin de ligne, sinon 'Syntax error' E8C6 chercher ligne BASIC DE E8CB chercher ligne BASIC DE E8D0 comparaison HL <> DE E8D3 'Improper argument' E8F2 'Improper argument' E967 'IF' E974 'ELSE' E980 ']' E984 '(' E98D ']' E98F E991 '(' E995 '[' E999 ')' E9A1 'Syntax error' ****** instruction BASIC DATA E9A8 ****** instructions BASIC REM et ' E9AC ****** instruction BASIC ELSE E9B2 E9C2 début du programme E9D1 saut en (BC) E9EC sortir message d'erreur E9FA 'ELSE' E9FD 'THEN' EA02 ignorer les espaces EAOE "" EA12 T EA16 "' EA1A 'REM1 EA1E fonction EA25 "" EA2C "" ****** instruction BASIC RUN EA7D fin de l'instruction ? EA80 début du programme comme défaut EA84 oui EA86 numéro de ligne ? EA88 oui EA8A adresse de ligne ? EA94 MC BOOT PROGRAMM EA9A début du programme EA9F aller chercher adresse de ligne EAB7 à la boucle de l'interpréteur ****** instruction BASIC LOAD EABA EAC2 au mode READY EACC DISK IN DIRECT EAD6 aller chercher nom, ouvrir fichier EAD9 type de fichier EAE7 suit virgule ? EAEA oui, aller chercher valeur 16 bits EAED comme adresse de début EAF1 fin de l'instruction, sinon 'Syntax error' EAF6 adresse de début EAF9 DISK IN DIRECT EAFD DISK IN CLOSE ****** instruction BASIC CHAIN EB02 'MERGE' EB04 flag pour MERGE EB07 ignorer les espaces EB0D valeur défaut zéro pour ligne de début EB10 suit virgule ? EB13 non EB16 V EB18 aller chercher valeur 16 bits EB1C suit virgule ? EB1F non EB21 tester si encore un caractère EB24 'DELETE' EB25 annuler zone de ligne EB2A fin de l'instruction, sinon 'Syntax error' EB30 Garbage Collection EB3D aller chercher ligne de début EB3E début du programme comme défaut EB42 aucune ligne de début EB4C flag pour MERGE ****** instruction BASIC MERGE EB59 aller chercher nom, ouvrir fichier EB5C fin de l'instruction, sinon 'Syntax error' EB5F annuler variables EB62 tester type de fichier EB65 au mode READY EB71 fin du programme EB75 début du programme EB79 fin du programme EB7D BD := HL - DE EBA5 comparaison HL <> DE EBBA fin du programme EBCD comparaison HL <> DE EBE9 fin du programme EBF1 fin du programme EBFD 'Memory full' EBFF sortir message d'erreur EC01 DISK IN CHAR EC05 CTRL Z EC09 erreur disquette ECOE erreur disquette EC14 'EOF met' EC1B sortir message d'erreur EC24 fin du programme EC2A fin du programme EC32 fin du programme EC4B fin du programme EC67 type de fichier EC6E fichier ASCII ? EC70 non EC72 type de fichier EC75 fichier ASCII EC77 oui EC79 annuler bit 0 (fichier protégé) EC7D sortir message d'erreur EC80 'File type error' EC87 début du programme EC9A comparaison HL <> DE ECA2 fin du programme ECA5 type de fichier ECA8 tester bit 0 ECAA fixer flag pour fichier protégé ECAF DISK IN DIRECT ECB2 'EOF met' ECD8 'Direct command found' ECDC 'Overflow' ECDE sortir message d'erreur ****** instruction BASIC SAVE ECE1 ECE4 OPENOUT ECE7 type de fichier 0, programme BASIC ECE9 suit virgule ? ECEC non ECEE tester si encore un caractère ECF1 variable normale ECF4 nom de variable ECF5 convertir minuscules en majuscules ECF7 'Syntax error' ECFB adresse de base de la table ECFE rechercher dans la table ED01 adresse dans table sur pile ED02 ignorer les espaces ED05 nombre des entrées ED06 pas trouvé, 'Syntax error' ED08 'A' EDOB 'B' EDOE 'P' ****** SAVE ,P EDI 1 type de fichier 1, protected EDI 3 fin de l'instruction, sinon 'Syntax error' ED1E début du programme ED23 fin du programme ED27 HL := HL - DE ****** SAVE ,B ED30 tester si ',' ED33 aller chercher valeur 16 bits ED36 ranger ED37 tester si ',' ED3A aller chercher valeur 16 bits ED3D ranger ED3E suit virgule ? ED41 0, défaut pour adresse d'entrée ED44 oui, aller chercher valeur 16 bits ED47 ranger ED48 fin de l'instruction, sinon 'Syntax error' ED4B type de fichier 2, binaire ED4D adresse d'entrée ED4E adresse de fin ED4F adresse de début ED50 DISK OUT DIRECT ED53 interruption par 'ESC ED56 CLOSEOUT ****** SAVE ,A ED58 fin de l'instruction, sinon 'Syntax error' ED5C 9 ED5E sortie sur canal 9, disquette ED62 1 à ED65 65535 ED68 lister lignes ED6C sortie à nouveau sur défaut ED6F CLOSEOUT ED79 annuler espace, TAB et LF ED7E '&' ED82 tester si numérique ED87 type sur Integer ED8A annuler variable ED9A '&' EDA3 accepter nombre entier dans HL EDBO V EDB2 annuler espace, TAB et LF EDB5 tester si chiffre EDBC '.' EDC1 type sur Integer EDCE '.' EDD5 type sur Real EDEF tester si chaîne EDF2 non EDFF Integer 4 octets * 256 en virgule flottante EE03 multiplier nombre par 10AA EE07 fixer type de variable sur virgule flottante EE0A copier variable de (DE) dans (HL) EE14 annuler espace, TAB et LF EE18 -1 EE1A '-' EE1D 0 EE1E V EE24 annuler espace, TAB et LF EE28 tester si chiffre EE2E convertir minuscules en majuscules EE33 '0' EE47 'F EE52 annuler espace, TAB et LF EE55 tester si chiffre EE60 fixer type sur Real EE6B 100 EE99 ignorer espace, TAB et LF EECO fois 10 EEC4 plus prochain chiffre EEDA accepter nombre entier dans HL EEED ignorer espace, TAB et LF EEFO convertir minuscules en majuscules EEF3 base 2, binaire EEF5 'X' EEF9 base 16, hex EEFB 'H' EF00 ignorer espace, TAB et LF EF05 Basis 10, décimal EF08 convertir chiffre (hexa) en binaire EF12 convertir chiffre (hexa) en binaire EF1C base du système numérique EF1D multiplication entière sans signe ******* convertir chiffre (hexa) en binaire EF31 aller chercher caractère EF32 incrémenter pointeur EF33 tester si chiffre EF36 oui EF38 convertir minuscules en majuscules EF3B 'A' EF3E plus petit que 'A1, erreur EF40 'A'-('9'+l) EF42 '0' EF45 pas erreur EF47 annuler Carry ****** sortir nombre entier HL EF49 convertir nombre entier en ASCII EF4C sortir chaîne CPCrulez[Content Management System] v8.73-desktop Page créée en 274 millisecondes et consultée 1457 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. |
|