2IMGCdrP@@0 X DISQUETTE DE DONNEES NON AMORCABLE.O=====!====!====!====!====!====!====!====!====!====!====!====!====!====!====!===8~ ?LG.HS3.CNM' %TXT10N.TECH57f# d%TXT11N2000000=%_F  %TXT12P.000000*P  %TXT13P.0000009**TXT14P.000000(# %TXT14P.000000b  ____________ __________B! ! !__________ U_S_E_R_'_s6! (( )) ! (((()))) ! ! D! (((( )))) ! (( ! (((()))) !__________   !"#$%&'()*+,-./0123456789:;j@ l@. Un rechargement peut etre provoqu{ en GEtapant BRUN BOOT ASM qui sera alors une entr{e @ froid, "d{truisant" tout fichier en m{moire.1 ______________________________________________2! !2!a commande GE"ASSEM". Utiliser simplement "ASSEM" partout o| une commande DOS est ECvalable (par exemple, en basic). Un BRUN MERLIN ou un boot de disk HFpourra {galement provoquer une r{entr{e @ chaud ou bien ne rechargera FDpas MERLIN si il est d{te toute liaison d'E/S que vous FDpourriez avoir {tabli par les commandes PR# de l'{diteur. Sortir de GEl'assembleur (assemblage termin{ ou ctrl-C) d{connecte {galement les liaisons E/S.EC R{entrer apr}s une sortie vers le basic se fait par lEstandards et reconnecte le DOS. Ceci revient @ taper PR#0 et IN#0 au FDclavier. Entrer dans l'EDITEUR d{connecte le dos, ainsi vous pouvez IGutiliser des variables telles que INIT sans cons{quences d{sastreuses. ECR{entrer dans le mode EXEC d{connecI Quand vous sortez pour acc{der au basic ou au moniteur, ces pointeurs KIsont sauv{s sur la carte RAM @ $E00A-$E00F. Il sont restaur{s quand vous r{entrez dans Merlin.GE Entrer dans Merlin remplace les variables d'E/S actuelles par les Gfectera automatiquement les adresses $C, $D.1 ______________________________________________2! !2! Informations g{n{rales (dos 3.3 seulement) !2!______________________________________________!K par d{faut @ $AA00 en prodos)% END OF SOURCE dans $E,$FEC Notez que HIMEM ne change pas @ moins qu'une routine USER ou un GEprogramme utilitaire change les adresses $73, $74. Un tel changement 0afRCE au chargement, sans se soucier de son adresse originelle.# Les pointeurs importants sont:A START OF SOURCE dans $A,$B (mis @ $901 par d{faut)H HIMEM dans $C,$D (par d{faut @ $9853 en dos 3.3H [[[1 ___________________________3 _! !_4 !_! INFORMATIONS TECHNIQUES !_!2 !___________________________!KI Le source est plac{ @ STARTOFSOU(( )) !E >>> >>> >>> >>>>>>> ~~~~~~~~ ! (( )) !E !__________!8 traduit par SHEHERAZADE pour 'son' LO44 pr{f{r{/ [[[[[[[[[[[ [>> >>> >>> >>> ! (( ! (( )) !E >>> >>> >>> >>> >>> >>> !________! (((( )) !E >>>>>>>> >>>>>>>> >>> >>> ! (( )))) !E >>> >>> >>> >>> >>> PART III ! !__________! (( ! (( !: ! (((()))) ! (( !D !__________! (( !__________E >>>>>>>> >>>>>>>> >>>>>>> ! (( ! !E >>> >>> > M_A_N_U_A_L1! (( (()) )) ! ((())) ! (( )) ! !1! (( )) ! (( ! (((()))) ! (( !9! (( )) ! (((()))) ! (( )) ! (( !________:!____________!__________! (( )) ! (( ! !: Informations g{n{rales (prodos et dos 3.3) !2!______________________________________________!FD Si pendant l'assemblage, le code objet d{passe la ram utilisable IGalors le code ne sera pas {crit en m{moire, mais l'assembleur semblera ECproc{der normalement et le r{sultat sera afficher @ l'{cran ou sur CAimprimante. La seule preuve que cela est arriv{, si ce n'est pas GEintentionnel, est que la commande OBJECT CODE SAVE dans le mode EXEC KIn'est pas utilisable dans ce cas. Il y a habit FDr{serv{es aux routines utilisateur (remarquer que le programme XREF KIutilise ces adresses). La zone $60-$6F de la page z{ro est r{serv{e pour JHles routines utilisateur supl{mentaires et peuvent etre utilis{es comme Fbon vous semble. Il n'y pm{moire principale sert aux routines KId'interface E/S. (on ne peut envoyer un caract}re @ COUT, par exemple, @ GEpartir de la m{moire auxiliaire). Merlin n'utilise pas ces zones. La ECzone $90-$9F de la page z{ro n'est pas utilis{e par Merlin et sone avec Merlin !*!______________________________________!JH Les zones m{moires $300-$3EF dans la m{moire principale et $800-$FFF JHdans la m{moire auxiliaire sont disponibles pour les ajouts USER et les KIroutines USR. La page trois dans la mmand{ de passer en mode 40 colonnes avant de faire cela. B@"CONTROL I 80N" dans le commande d'imprimante r{soud parfois le probl}me.) ______________________________________*! !*! R{partition de m{moiral 24 X 80, le support de ULTRATERM d{pend +de la carte qui se trouve dans le slot 3.HF Il se peut qu'il y ait des probl}mes si vous essayez d'envoyer des KIchoses @ l'imprimante alors que vous etes dans certains modes ULTRATERM. GEIl est recoSC 8 128 X 32IG Retourner au mode EXEC reimplantera l'{tat par d{faut qui se trouve IGdans le programme HELLO du dos 3.3 ou du fichier PARMS du prodos et on -obtient la meme chose de la commande VID 3.KI Except{ pour le format norm80 X 24 caract}res standards ESC 2 96 X 24 ESC 3 160 X 24; ESC 4 80 X 24 caract}res de haute qualit{ ESC 5 80 X 32 ESC 6 80 X 48 ESC 7 132 X 24 Eiteur, le mode ULTRATERM peut etre modifi{ par la s{quence IGESCAPE donn{e dans le manuel ULTRATERM. Ainsi, les commandes suivantes donnent les effets indiqu{s:> ESC 0 40 X 24 (meme effet que VID $10 ou 16)4 ESC 1 Hcolonnes, ne fera pas cela dans le mode EDIT mais produit simplement un "Ctrl-A dans la ligne du fichier. _________________________! !! Information Ultraterm !!_________________________!IG Dans l'{drole aura l'effet d{crit dans cette IGdoc et PAS celui d{crit dans votre manuel de la carte 80 colonnes. Par ECexemple, Ctrl-C n'effacera pas l'{cran, mais est le "case toggle". GECtrl-A, qui agit comme un "case toggle" sur la plupart des cartes 80 J symbole externe! E = symbole d'entr{eJH Les labels locaux ne sont pas montr{s dans le listing de la table de symboles.FD Dans le mode EDIT, MERLIN prend le controle total des entr{es et IGsorties. Taper un caract}re de conta table de symbole resemble @ ceci: MD = D{fintion Macro, M = label d{fini dans une macro6 V = Variable (symbols commen\ant par "[")@ ? = un symbole qui a {t{ d{fini mais ne sert jamais X = emblage @ moins que LST B@OFF ait {t{ utilis{. Elle est faite par ordre alphab{tique puis HFnum{riquement. La table de symbole peut etre stopp{e @ tout moment en KIpressant Ctrl-C. La stopper de cette fa\on n'affectera pas le code objet .g{n{r{. Ltuellement un espace de 16K =pour le code objet, qui peut etre chang{ avec l'opcode OBJ. _____________________! !! Table de Symboles !!_____________________!JH La table de symboles est imprim{e apr}s l'assas d'autre zone de la page z{ro disponible.% __________________________________&! !&! Configuration (version Prodos) !&!__________________________________!KI Les donn{es de configuration se trouvent dans un fichier appel{ PARMS DBqui est charg{ quand l'assembleur tourne. Pour changer les datas, <changez juste le fichier source PARMS.S et r{assemblez le.& ___________________________________'! !'! Confie ! carte.I 21 0 LSTDO par d{faut: 0,1-LSTDO ON, >1-LSTDO OFF. E Le bit 0, si @ 0, provoque une mise au 40 C colonnes quand il y a une commande PRTR.Fur. Donne un curseur r{gulier J si c'est $40 et un curseur bloc si c'est 0. La I carte 80-col Apple doit avoir le curseur bloc K ce marqueur sera modifi{ si vous utilisez cettnibble bas J d{termine le mode par d{faut de l'Ultraterm si F vous l'utilisez. La valeur 5 ou $85 met en 1 place le mode 32 X 80.J 20 $40 marqueur de curse pression sur une touche lors d'une erreur; si @ G 'off', un son retentira pendant 20 secondes 8 puis l'assemblage continuera.J Le bit V @ 1 d{connecte le bip. Le marqueur erreur/bip et param}tres de d{part % Ultraterm.F Le bit de poids fort, si sur 'on', forceraK l'assembleur @ faire une pause en attendant une K ut de l'{diteur et de H l'assembleur, remarquer que ces valeurs sont > relatives au cot{ gauche de l'{cranH 18 8 nombre de bytes/ligne apr}s la premi}re ligneG 19 5 able de symboleI 14 $AF "/" caract}re recherch{ lors d'une entr{e "UPDATE D SOURCE" dans l'assembleur. Si c'est 0 la 0 question sera {vit{e.B 15,16,17 14,20,31 les tabs par d{faetre {gal @ @ l'adresse de d{part du fichier sourceD 12 $DE "^" le caract}re de l'{diteur de la wild cardI 13 4 nombre de champs par ligne dans le listing de . la tTRE $83 EN PRODOS.H 6,7 $901 adresse de d{part du fichier source, ne doit 1 pas etre moins de $9012 8,9 $AA00 NE DOIT PAS ETRE CHANGEG 10,11 $901 fin de pointeur de source. Doit $83 marqueur 80 colonne. Doit etre $80+3 si la K carte 80 colonnes est en slot 3 (ou carte Apple G 80 col) doit etre choisi au moment du boot. < Sinon 0. DOIT Eprovoque un caract}re "form feed")F 3 80 nombre de caract}res par lignes (pour PRTR)K 4 $80 doit etre 80 si l'imprimante fait son propre CR = en fin de ligne, sinon doit etre 0F 5 __________________________________________________!" DATA # PAR DEFAUT UTILITE@ 1 60 nombre de lignes par page (pour PRTR)D 2 0 lignes @ passer au changement de page (0 = et SAVE HELLO.F ___________________________________________________________________G! !G! Description des datas pour les configurations Prodos et Dos 3.3 !G!_________________guration (version DOS 3.3) !'!___________________________________!HF Les DATAS dans le programme de boot Applesoft "HELLO" contient les KIinformations de configuration. Pour changer les datas, faites juste LOAD +HELLO, changez les donn{es 22 72 colonne @ laquelle le compte de cycle sera I imprim{ lors de l'utilisation de l'opcode CYC.E 23 $EC type de curseur pour Ultraterm. Doit etre H chang{ si le mode Ultraterm est chang{ (voir # byte 19)E 24-44 "$F1" @ noms de type de fichier pour les types de J "$F7" fichier d{fini par l'utilisateur de $F1 @ $F7. E Ces noms se__F! !F! Transf{rer des fichiers sources de Merlin Pro Dos 3.3 @ Prodos !F!__________________________________________________________________!IG Il y a deux m{thodes pour t pour la commande "C" selon que vous soyez en mode 40 ou 80 colonnes.DB Le volume Prodos /RAM/ est d{connect{ par Merlin Pro puisqu'il &utilise toute la m{moire auxiliaire.E ________________________________________________________________nterpr{teur BASIC, il n'y a pas de 1r{entrer @ chaud comme avec la version dos 3.3.HF Il n'y a pas d'{quivalent aux commandes BASIC CAT ou CATALOG comme EC"commandes de disk". L'interpr{teur s{lectionne automatiquement le KIformat de catalogue d{sirez.KI Les param}tres de drive et de slot ne sont accept{s par les commandes 4et les opcodes. Vous DEVEZ utiliser des pathnames.GE Puisque la version Prodos de Merlin fonctionne grace @ son propre HFimterpr{teur plutot que grace @ l'iomatiquement et le fichier SRC sera plac{ @ l'int{rieur.GE Il est sage d'utiliser un pathname complet dans les op{randes des HFopcodes SAV, USES et PUT, car sinon le pr{fixe actuel sera attach{ au :nom et pourrait ne pas etre le pr{fixe que vous volume MYVOL et dans le GEsous r{pertoire SUB qui n'existe pas dans le r{pertoire MYVOL. Alors JHtapez simplement /MYVOL/SUB/SRC alors le pathname est demand{ (ou juste IGSUB/SRC si /MYVOL/ est le pr{fixe) et le sous r{pertoire SUB sera cr{{ =autFIX/LIB/MYPUT s'il est dans le volume appel{ PREFIX.JH Si vous sauvez un fichier sous un nom de directory qui n'existe pas, KIun sous r{pertoire sera cr{{ sous ce nom. Par exemple, supposez que vous HFvouliez sauver votre source actuel SRC sur lez tous les fichiers GEdestin{s aux opcodes PUT et USE dans un r{pertoire. Par exemple vous KIpouvez sauvez un fichier nomm{ MYPUT sous le pathname LIB/MYPUT. Il sera HFalors appel{ dans un programme assembl{ comme suit: PUT LIB/MYPUT, ou >PUT /PRE Ceci inclus les fichiers destin{s aux opcodes PUT et JHUSE, et tous ces fichiers doivent avoir l'extension ".S" dans le nom de HFfichier (qui est fourni par l'assembleur pour tous les chargements et FDles sauvegardes). Il est sugg{r{ que vous gardiet{ chang{." _______________________________#! !#! Notes sur Merlin Pro Prodos !#!_______________________________!DB La version prodos utilise exclusivement des fichiers TXT comme GEfichier source.e l'opcode ERR pour v{rifier si HIMEM CAou SYM ont {t{ mis en place, ils peuvent etre d{truits. Si votre JHprogramme utilise Sweet 16 alors l'opcode SW devra etre inserr{. Ainsi, JHtout opcode OBJ devra etre remplac{ puisque le sens de cet opcode a {Dsur le disk utilisateur Prodos. Certains changements dans le source FDpeuvent etre n{cessaires @ cause des pseudos opcodes manquants dans IGMerlin Pro. Si votre programme utilise HIMEM: ou SYM, ils peuvent etre KId{truits. Si votre programme utilis_____________________!IG Les fichiers sources de Merlin 64K peuvent etre charg{s directement JHpar Merlin Pro Dos 3.3. Pour utiliser un fichier source Merlin 64k avec KIMerlin Pro Prodos vous devez utiliser l'utilitaire CONVERT qui se trouve Front montr{ dans le catalogue. , Prodos seulement./ ____________________________________________0! !0! Fichiers source Merlin 64K et Merlin Pro !0!_______________________ransf{rer des fichiers de la version dos KI3.3 de Merlin Pro @ la version Prodos. Puisque la version prodos utilise JHuniquement des fichiers texte, vous pouvez charger des fichiers dans la GEversion dos 3.3 et les {crire en tant que fichiers texte et puis les JHtransf{rer avec le programme CONVERT de Apple. Malheureusement, CONVERT IGn'est pas un transfert literal, car il effacera les bits hauts dans le HFfichier. La version Prodos de Merlin remettra les hauts bits, mais la JHtabulation dans utre fichier PUT. BAD "SAV" [[[[[[[[[JH Ceci est caus{ par un SAV dans une macro ou un SAV apr}s un multiple OBJ apr}s le dernier SAV. BAD INPUT ( mauvaise entr{e ) [[[[[[[[[IG Ceci r{sulte soit d'une absence d'entr{e ({e )[[[[[[[[[[[[[KI Des macros emboit{es plus de 15 fois ou des conditions emboit{es plus $de 8 fois g{n{reront cette erreur.BAD "PUT" ( mauvais "PUT" ) [[[[[[[[[JH Ceci est caus{ par un PUT dans une macro ou par un PUT dans un a Ce dernier cas ne se produira pas avec une d{finition MACRO.NOT MACRO ( pas de macro ) [[[[[[[[[KI R{f{rence pr{coce @ une MACRO, ou r{f{rence par PMC ou >>> @ un label qui n'est pas une MACRO.$NESTING ERROR ( erreur emboit Ceci HFapparait {galement si vous tentez de vous r{f{rez @ une d{finition de KIMACRO par quelque chose d'autre que PMC ou >>>. Il peut aussi apparaitre ECsi le label auquel on fait r{f{rence est dans un environement sans FDassemblage conditionnel. ces deux conditions: code JHsource trop grand ou table de symbole trop grande. Voir "Note sp{ciale" @ la fin de cette partie."UNKNOWN LABEL ( label inconnu )[[[[[[[[[[[[[GE Votre programme se r{f}re @ un label qui n'a pas {t{ d{fini.ent {t{ trait{es.)DUPLICATE SYMBOL ( symbole en double )[[[[[[[[[[[[[[[[E A la premi}re passe, l'assembleur trouve deux labels identiques.!MEMORY FULL ( m{moire pleine ) [[[[[[[[[[[HF Ceci est habituellement caus{ par une dehors de port{e, c'est-@-dire qui d{passent +127 bytes.HF NOTE: la plupart des erreurs stopperont le calcul des adresses par IGl'assembleur. Les erreurs de mauvais branchement peuvent etre ignor{es <jusqu'@ ce que les erreurs pr{c{dentes aiuvais mode d'adressage )[[[[[[[[[[[[[[[DB Le mode d'adressage n'est pas une instruction 6502 valide; par (exemple, JSR (LABEL) ou LDX (LABEL),Y.%BAD BRANCH ( mauvais branchement ) [[[[[[[[[[KI Un branchement @ une adresse qui est !_____________________! BAD OPCODE ( mauvais opcode ) [[[[[[[[[[?= Apparait lorsque l'opcode n'est pas valide (peut etre mal Gorthographi{) ou lorsque l'opcode se trouve dans la colonne de label./BAD ADRESS MODE ( mados 3.3 pour les fichiers PUT, il sera parfois *n{cessaire de renommer de tels fichiers.. _____________________0 _! !_1 !_! MESSAGES D'ERREUR !_!/ s peuvent ECetre charg{s en changeant le byte utilis{ pour d{signer le type de Jfichier source qui se trouve en $BE5D (qui contient ordinairement un 4).HF Puisque la version Prodos de l'assembleur n'utilise pas la syntaxe DB"T." de la version ue pas @ la sauvegarde) Apr}s le chargement d'un FDfichier source binaire, il peut etre effac{ et resauv{ (en tant que ECfichier TXT). La commande de charmgement permet automatiquement le HFchargement de fichiers TXT et BIN. D'autres types de fichier ralenti.KI Une autre m{thode est de transf{rer les fichiers en fichiers binaires EC@ partir du Dos 3.3 et d'utiliser le fait que la version Prodos de JHMerlin a la possibilit{ de charger des fichiers binaire (ou tout type). DB(Ceci ne s'appliql'{diteur sera troubl{e par cette proc{dure. Cependant, GEvous devez simplement taper FIX dans l'{diteur et resauver le source FDpour rem{dier @ ce probl}me. Les fichiers destin{s @ "PUT" et "USE" >doivent etre resauv{s car, sinon, l'assemblage sera seulement), soit JHd'une entr{e exc{dant 37 caract}res (r{ponse @ l'opcode de requ}te KBD) pour la valeur d'un label.BREAK[[[[[KI Ce message est caus{ par un EQU, MAC, ENT ou EXT sans label, un label CAtrop grand (sup{rieur @ 13 caract}res) ou un label contenant des HFcaract}res non-autoris{s (un label doit commencer par un caract}re au GEmoins aussi large en valeur ASCII que la colonne et ne doit contenir -aucun caract}res en dessous du digit z{ro). BAD ORG quelques fa\ons de le r{soudre.MEMORY FULL IN LINE: xx.[[[[[[[[[[[[[[[[[[[! G{n{r{e durant l'assemblage.H CAUSE: Il y a trop de symboles dans la table de symboles; ainsi il4 y a d{passement de la place disponible.J Note Sp{ciale - Erreurs de MEMOIRE PLEINE !1!_____________________________________________!KI Il existe trois causes possibles pour le message d'erreur MEMORY FULL KI(m{moire pleine). Voici une description plus d{taill{e de ce probl}me et !appel macro, le num{ro de ligne sera celui de CAla ligne d'appel et pas celui de la ligne dans la macro (qui est inconnue pour l'assembleur).0 _____________________________________________1! !1! la FDligne contenant l'erreur est imprim{e sur l'{cran. Elle peut ne pas GEavoir la meme forme que celle qui ce trouve dans le source, car elle KImontre les substitutions de texte que peut avoir provoqu{e une expansion KIde macro. Si c'est dans un e fichier ill{gal )6[[[[[[[[[[[[[[[[[ (sur la Version PRODOS seulement)KI Opcode TYP utilis{ avec un op{rande ill{gal. L'op{rande doit avoir la valeur 0,6,F0-F7, ou FF.GENOTE GENERALE: Quand une erreur provoque l'arret de l'assemblage, tique apparait dans l'op{rande alors que ?=l'assembleur attend un op{rateur math{matique. Ceci apparait GEhabituellement dans les appels de macro avec une syntaxe imapropri{e (r{sultant de la substitution de texte.0ILLEGAL FILE TYPE ( type dd l'expr contient un GEexternal et que le d{calage de la valeur de l'expression @ partir de celle de l'external exc}de 7.AILLEGAL CHAR IN OPERAND ( caract}re ill{gal dans un op{rande )[[[[[[[[[[[[[[[[[[[[[[[FD Un caract}re non-math{ma RELATIVE ADRS ( adresse relative ill{gale )[[[[[[[[[[[[[[[[[[[[[CA En mode REL une multiplication, division ou operation logique CAapparait en expression relative. Ceci apparait {galement pour un CAop{rande du type #>expr ou un DFB >expr quanou plus externals dans une expression op{rande.DICTIONNARY FULL[[[[[[[[[[[[[[[[D D{passement d'un dictionnaire de transfert dans un fichier REL.256 EXTERNALS[[[[[[[[[[[[[( Le fichier a plus de 256 externals.6ILLEGALchoses qui doivent pouvoir HFcalculer la valeur @ la premi}re passe (par exemple ORG< OBJ DUM). Il JHapparait {galement si un label est utilis{ avant d'etre d{fini dans une section DUM en page z{ro.TWO EXTERNALS[[[[[[[[[[[[[9 Deux ILLEGAL FORWARD REFERENCE[[[[[[[[[[[[[[[[[[[[[[[[[JH Un label dont la valeur devient une adresse de page z{ro apr}s qu'il HFait {t{ utilis{. Ceci apparait {galement quand un label inconnu (@ la HFpremi}re passe) est utilis{ pour certaines que vous ne donner pas @ une macro le nombre de IGvariables qu'elle attend. Il peut {galement apparaitre pour une erreur GEde syntaxe dans une chaine de caract}re donn{e @ une variable macro, 7comme pour une expression sans les guillemets finaux.BAD EXTERNAL[[[[[[[[[[[[DB EXT ou ENT dans une macro ou l'{galisation d'un label avec une DBexpression contenant un external, ou un branchement @ un external (utilisation de JMP).BAD VARIABLE[[[[[[[[[[[[GE Ceci apparait lors[[[[[[[0 R{sulte d'un ORG au d{but d'un fichier REL. BAD OBJ [[[[[[[E Un OBJ apr}s le d{but du codage ou OBJ pas entre $4000 et $BFE0. BAD REL [[[[[[[C Un opcode REL apparait apr}s la d{finition de certains labels. REMEDE: Rendre la table de symboles plus grande en mettant la valeur F de OBJ @ $BFE0 et utiliser DSK pour assembler directement sur le disk.ERR:MEMORY FULL.[[[[[[[[[[[[[[[[K G{n{r{e imm{diatement apr}s que vous ayez tap{ une ligne trop longue. K CAUSE: Le code source est trop grand et a d{pass{ la ram disponible. H REMEDE: D{couper le source en sections plus petites et rajouter lesG quand cela est n{cessaire en utilisant le pseudo-op "PUor{e.D 3. Il vous sera ensuite demand{ si vous voulez charger un fichierC @ d{sassembler. Si vous s{lectionnez cette option, le fichierD sera charg{ et il vous sera demand{ les adresses de chargement et de fin du programme.D VouCEROR: --------------------------4 1. BRUN SOURCEROR @ partir du mode EXEC de MerlinD 2. Pour faire appel @ SOURCEROR, tapez -USER- depuis le mode EDITD en mode 40 Colonnes. Si vous }tes en mode 80 Colonnes, la com- mande sera igner des fichiers< Merlin en dehors de programmes Binaires, {xecut{ habi-% tuellement en un certain temps.= SORCEROR d{sassemble les codes -Sweet 16- aussi bien) que les codes 6502, 65C02 ou 65802. Uitilisation de SOUR<>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`0 S.O.U.R.C.E.R.O.R Merlin Pro Introduction: -------------= SOURCEROR est sophistiqu{ et facile pour utiliser un< d{sassembleur co-r{sident destin{ @ cr{BO=!==!==!===!=!=================================================================B O=<==<==<===<=<=================================================================__________ < FROM > _____________ < SHEHERAZADE >___________________________ 3 ___________________________. ___ ___/ ___ ___2 _____ _____J < KISSES > ________________^^__^^__^^__^^^^^^______^^________^^^^__^^___^^__^^_______H ___________^^__^^^^^^__^^__________^^________^^__^^^^___^^__^^_______E _______^^__^^__^^__^^^^^^______^^^^^^^^__^^____^^__^^^^^^______C __________________________________________________________E _______^^^^^^^^^^^^_________________^^^^^^^^^__________________H ______________^^__________^^^^^^______^^_____________________________I______________^^__^^__^^__^^__________^^^^^^^___^^____^^__^^^^^^_______I un assemblage a d{pass{ l'espace! des 16K disponibles.F REMEDE: Mettre OBJ @ une adresse inf{rieure @ $8000 par d{faut ou utiliser DSK.3 ___________________________? _________________T".9ERROR MESSAGE: none (aucun, rien, que dalle koi!)[[[[[[[[[[[[[[FD Aucun message d'erreur, mais aucun code objet ne sera g{n{r{ (il ;n'apparaitra pas d'information OBJECT sur le menu EXEG). F CAUSE: Le code objet g{n{r{ pars pourrez aussi acc{der @ une "fourniture secr}te" avant leD chargement. C'est possible en tapant -CTRL S- avant ou au lieuD du nom du fichier. Ceci est pr{vu pour faciliter le d{sassemb-C lage d'un programme en utilisant une version RAM de Sweet 16.C ```Si vous avez charg{ un fichier cod{, passez @ l'{tape 5```C 4. Maintenant, il vous sera demand{ de taper -RETURN- si le pro-D gramme @ d{sassembler est @ son adresse originale (de d{roule-@ ment), ou alors vous dract}res), ce Byte sera cr{{.C -T- (TEXT) : Cette commande tente de d{sassembler les donn{es seD trouvant @ l'adresse actuelle comme une ligne ASCII. D{pen-@ dant de la forme des donn{es, ce sera (automatiquement)A N- (NORMAL) : C'est a peu pr}s la meme chose que -L-, mais cela@ oblige le d{sassembleur @ d{marrer en mode NORMAL 6502.B -H- (HEX) : Cette commande cr{{ le mode de donn{es HEX. Si vousD ins{rez un nombre HEX de 1 Byte (Un ou deux caB -S- (SWEET) : C'est a peu pr}s la meme chose que -L-, mais celaE oblige le d{sassembleur @ d{marrer en mode SWEET 16. Le modeF SWEET 16 retourne en mode Normal 6502 chaque fois que le code! Sweet 16 RTN est trouv{.C -nes de codes. Elle peut }tre r{p{t{eB (Ex: 2000LLL d{sassemblera 60 lignes de codes @ partie deB $2000). Si un JSR est trouv{ par l'interpr{teur SWEET 16,> le d{sassemblage est automatiquement bascul{ en mode SWEET 16.e, utilis{ un Hexa ou une autre commande, et de changer ce dont vous avez envie. Description des Commandes: --------------------------C -L- (LIST) : C'est la principale commande de d{sassemblage. Elle? d{sassemble 20 ligossible. Si vous avez un nouvel ORG et que vous n'en voulezC pas, essayez de revenir d'un Bit jusqu'@ ce que vous n'ayez plus& de nouvel ORG sur le d{sassemblage.E Ce retour vous permet de r{p{ter un d{sassemblage si vous avez,D par exemplt {gale @ une adresse pr{c{dente. SiD c'est la cas, il se produit un retour @ cet endroit. Sinon, il seC produit un retour @ la nouvelle adresse et il se cr{er un nouvelC ORG. Il est g{n{ralemnt pr{f{rable d'avoir de nouveaux ORG quandE c'est prez un nombre plus {lev{ que la pr{sente adresse, un nouvel ORG sera cr{{.D Plus commun{ment, vous devez entrer une adresse plus basse queE la pr{sente valeur par d{faut. Dans ce cas, le d{sassembleur cher-E che @ voir si cette adresse es mandes acceptent une adresse Hexa @ 4 caract}res avant le lettre deA commande. Si ce chiffre est oubli{, le d{sassemblage continue E depuis la pr{sente adresse. Un nombre doit }tre sp{cifi{ seulement sur l'entr{e initiale.E Si vous ent d{sassembleur.+ Commandes utilis{es en D{sassemblage:+ -------------------------------------E Les commandes de d{sassemblage sont tr}s proches de celles uti-F lis{es par le d{sassembleur dans le Moniteur Apple. Toutes les com-Fe le code @9 l'endroit pr{sent et transf}re les adresses.C 6. Lorsque vous avez fini d'utiliser SOURCEROR, vous devez taperE -USER1- depuis l'EDITOR pour se d{barasser de SOURCEROR et pour7 lib{rer la m{moire utilis{e par leresse ORIGINALE du programme et non l'adresse ou il se E trouve actuellement. Il vous apparaitra que vous }tes enF train de d{sassembler le programme @ son adresse origina-C le, mais actuellement, SOURCEROR d{sassemblparaitra. Vous pourrez alors d{marrer le 5 d{sassemblage ou utiliser toute autre commande.E Votre premi}re commande doit contenir une adresse Hexad{cimale.F <<<< NOTE >>>>: Pendant le d{sassemblage, vous DEVEZ utiliser l'ad-D evrez sp{cifier en Hexa la pr{sente A adresse du code @ d{sassembler. Et finalement, il vous sera2 demand{ l'adresse originale de ce programme.F 5. Enfin, la page contenant les synoptiques des commandes utilis{esB en d{sassemblage ap d{sassembl{ sous un pseudo-code ASC, DCI, INV ou FLS. LeD d{limiteur appropri{ ( " ou ') sera automatiquement choisi.D Le d{sassemblage s'arretera lorsqu'une donn{e inappropri{eB sera rencontr{e, lorsque seront trait{s 62 caract}res, ouD lorsque le Bit Haut de la donn{e changera. En derni}re con-? dition, le code ASC est automatiquement chang{ en DCI.C Quelquefois, le changement en DCI n'est pas appropri{.E Ce changement peut }tre d{jou{ eD les codes d'assemblage. Si vous faites un RESET @ ce moment, vous7 retournerez @ Merlin et perdrez le code d{sassembl{.D Le traitement prendra une ou deux secondes si le programme estA court, et quelques minutes s'il est assez long. Soyez $94BE,YC et que la derni}re ligne n'inclus que des "d{chets", tapez0 2344Q. Cela effacera la derni}re ligne. Proc{dure Finale: -----------------F Apr}s la commande Q, le programme doit traiter quelques instantse avant le Q, leE pointeur d'adresse est remis @ cette adresse avant la proc{-D dure. Si, @ la fin du d{sassemblage, il est inclus dans les3 lignes: 2341- 4C 03 E0 JMP $E0035 2344- A9 BE 94 LDA possible d'apporter une noteC l@ o| vous vouliez reprendre, ou d'utiliser la commande / avant la commande R.E -Q- (QUIT) : Ceci arr}te le d{sassemblage et va automatiquement enC proc{dure finale. Si vous tapez une adresszD (adresse)R, puis L tout seul, et le d{sassemblage proc}deraF comme si vous n'aviez jamais utilis{ le R. Si vous n'avez pasE l'intention d'utiliser l'adresse par d{faut lorsque vous re-E tournez au d{sasemblage, il est Apr}s cela, R tout seul vous donnera la page m{moire suivanteE Les nombres utilis{s pour cette commande sont totalement in-2 d{pendants des adresses de d{sassemblage.@ Cependant, vous pouvez d{sassembler, alors utilise texte est suivi d'une donn{e Hex (Comme $8D pour un retourC chariot par exemple), tapez simplement -/- pour effacer le2 -L- et tapez la commande appropri{e -H- .D -R- (READ) : Pour lire les donn{es de $1000 @ $10FF, tapez 1000R.Fun retour est d{sir{.E Par exemple, supposons que vous tapez -T- pour d{sassem-F bler un texte, vous ne pouvez pas savoir ce qui suit le texteF vous pouvez seulement taper -L- pour le regarder. Alors si leC s exactement, cela retabli la derni}re adresse par d{fautE (l'adresse utilis{e pour une commande qui n'{tait pas neces-D sairement attach{e @ une adresse).Ceci est d'usage, ca vousE permet d'ignorer l'entr{e d'une adresse lorsqu'rra }tre @B votre avantage de refaire le d{sassemblage avec quelques  notes @ la main. Commandes de Nettoyage: -----------------------C -/- (CANCEL) : Cela efface essentiellement la derni}re commande.E Pluest souvent la forme appropri{e lorsque le programme utiliseA les adresses en les mettant sur la pile. Vous pouvez le D d{tecter pendant le d{sassemblage ou apr}s que le programmeC ait {t{ d{sassembl{. Dans Le derni}r cas, il poun option, si la commande -WW- estC utilis{e, ces Bytes seront d{sassembl{s comme un code DDB.E Si W- (W moins) est utilis{ comme une commande, les deuxF Bytes sont d{sassembl{s sous la forme DA LABEL-1. La derni}reE ous devrez limi-E ter le nombre de caract}res entr{s en ins{rant un nombre HEX8 @ un ou deux caract}res apr}s la commande -T- .D -W- (WORD) : Cela d{sassemble les deux prochain Bytes @ l'endroitF pr{sent, comme un code DA. En utilisant la commande -TT- @ la place de -T- .F Occasionnellement, le d{sassemblage peut ne pas s'arr}terE @ la bonne place, parce que les codes suivant sont comme desE donn{es ASCII pour SOURCEROR. Dans ce cas, vpatient.E Lorsque le traitement est termin{, vous retournez @ Merlin avecF une nouvelle source cr{{e. Vous pouvez utiliser la commande SAVE de1 Merlin pour sauvegarder quand vous le d{sirez., Manipulation avec une Source Termin{e:, --------------------------------------F Vous pourrez noter qu'un DA sera plus appropri{ dans les formatsE DA LABEL-1 ou DDB LABEL. Dans ce cas, il sera pr{f{rable de d{sas-E sembler @ nouveau en prenant quelques notes. Le d{sassemblage es Ce programme travaille en faisant un scan de la copie ApplesoftE pr{sente dans l'ordinateur et g{b}re des fichiers textes contenant@ la plus grosse partie du Basic Applesoft: APSOFT.1, APSOFT.2, APSOFT.3, APSOFT.4.F Pour garder de ---------------------------- Sourceror FP: -------------B Un fichier source de Basic Applesoft enti}rement {tiquet{ et? comment{ peut }tre g{n{r{ par le programme SOURCEROR.FP, sur. l'autre face de la disquette ProDos Merlin.Eource Merlin. Le fichier source est sur le Disk Merlin etD peut }tre modifi{ directement par l'utilisateur. Il doit }tre as-C sembl{ et sauv{ sous le m}me nom que le fichier label pr{c{dent.$ INFORMATION LISTING APPLESOFT:$ --ser; passer et d{marrera automatiquement la proc{dure finale.0 Changement des Tables Labels de SOURCEROR:0 ------------------------------------------E Les tables labels utilis{es par SOURCEROR sont juste assembl{esF fichiers scloture. Vous pouvez aussi l'utiliser pour allerA un peu plus loin que SOURCEROR et d{sassembler un peu plus de F lignes. Evidemment, vous ne devrez pas pousser ceci @ l'extr}me. SiF vous utilisez trop de memoire, SOUCEROR n'acceptera plus le laisre. Il y un laisserF passer secret en m{moire au point de m{moire pleine. Si vous appuy-E ez sur la touche CTRL-O (Pour Override, laisser passer), SOURCERORF retournera @ une autre commande. Vous pouvez l'utiliser pour sp{ci-D fier le point de space libre, vous verrez le message MEMORY FULL et HIT A KEY.F Lorsque vous enfoncez une touche, SOURCEROR ira directement en pro-E c{dure finale. La raison du "trou" du byte $600, est que SOURCERORE a besoin d'un certain espace pour cette proc{dun premi}re place plutot qu'un code, et; on doit agir avec cela pour avoir un assemblage correct. Message de M{moire Pleine: --------------------------G Lorsque le fichier source atteind les bytes $600 de la fin, dans E son e trouverez unF programme qui utilise cette forme pour une instruction de page zeroD Dans ce cas, vous aurez @ ins{rer un caract}re apr}s le code LDA B pour l'avoir assembl{ de facon identique @ sa forme originelle.E Souvent, il y a une donn{e eexemple, le d{sas-& sembleur trouvait la donn{e AD008D.D Cela d{sassemblera correctement, comme LDA $008D. L'assembleurD assemble toujours ce code comme une instruction de page zero, en E donnant les deux bytes A5 8D. Occasionnellement, vousventuellement vous d{placez les {quations au d{but du programme, D vous n'aurez pas d'erreur, mais l'assamblage NE SERA PAS CORRECT.C Il est tr}s important d'agir dans cette premi}re situation siB un inconv{nient venait @ apparaitre, si, par Cela peut r{sul-D ter d'une tentative de d{sassemblage de quelques donn{es comme un code r{gulier.F NOTE: Si vous essayez d'assembler la source dans ces conditions,E vous aurez une erreur aussitot que les {quations apparaitront. Si,E {ette table de pr}s. Elle ne devrait contenir aucune page d'{qua-C tion z{ro except{ s'il y a une r{sultante de DA, @ savoir JMP ouC JSR. C'est une mani}re sure de voir une erreur dans le d{sassem-D blage (Une de vos erreurs, et non de SOURCEROR). t F si rapide et facile, que c'est souvent plus facile que d'essayer de! changer directement la source.B La source n'aura, dans une table d'{quation @ la fin, aucuneE reconaissance de labels ext{rieurs ou autres. Vous devrez regarderD cla place, ces fichiers contiennent des macros quiA sont d{finies dans un autre fichier sur la disquette intitul{eF APSOFT.S. Ce fichier, lorsque l'assemblage utilise la commande PRTRF imprimera un d{sassemblage formatt{ de l'Applesoft, prenant et uti-E lisant autant que n{cessaire les fichiers APSOFT. Des d{tails sont donn{s plus loin.C S.V.P NOTEZ que ceci n'est PAS un listing "officiel" de APPLEE COMPUTER, Inc., mais plutot un produit de la recherche personnelleE de l'auteur -----------------------------------------------? 1. Chargez le fichier Applesoft depuis le disk SOURCEROR.FP,A 2. Quittez le mode EXEC et Appuyez sur -D- pour Disk commande, 3. BRUN /MERLIN/UTIL/XREFA,+ 4. Allez en Editor avec la commande -E-tines que son pro-F gramme utilise d{truiront ou non le contenu de ces deux pages ou siE cela causera des difficult{es @ localiser des bugs dans son progr.C Manipulations pour Impression d'un Applesoft Cross R{f{rence:C -------------- programme Applesoft en cours, faire des appels @ des routines D Applesoft internes et utiliser des pages z{ro en $50 et $51 commeC des registres temporaires ou des pointeurs. Ce "Cross R{f{rence"F informera imm{diatement le programmeur si les rout savoir l@ o| elles sont utilis{es etF appell{es. Ce sont des informations inestimables pour quelqu'un quiC veut utiliser ces routines dans l'Applesoft pour ses programmes.E Pour, par exemple, appeler un programme de l'utilisateur par unAinformations internes, lesB adresses internes Applesoft, subroutines et page z{ro de "cross? r{f{rences". En utilisant l'utilitaire XREFA avec une source@ Applesoft, vous pouvez produire un listing de chaque routine,C d'adresses de pages z{ro etables deD symboles) et presque 1 heure 30 pour imprimer (D{bit d'imprimante de 80 caract}res/seconde)./ AppleSoft Source Cross R{f{rence Listing:/ -----------------------------------------@ Merlin offre une autre source d' avec quelques p{riodes B entre celles-ci. C'est normal. La premi}re passe enti}re prends environ 3 minutes et demi.D Merlin imprimera alors un d{sassemblage complet, et un listingD Applesoft comment{. Il prendra 105 pages (Y compris les ourC enclencher la proc{dure d'impression. Si vous r{pondez "1", vousF sauverez un 'object code' au d{pens d'un ralentissement du syst}me.B Merlin {x{cutera maintenant la premi}re passe assembleur. La@ disquette sera sollicit{e un instant,a "APPLESOFT LISTING" en t}te de page.F Merlin demandera alors "GIVE VALUE FOR SAVEOBJ :" si vous voulezF ou non sauver un 'object code' g{n{r{ par l'assemblage. Il est re-E command{ de r{pondre "0". C'est tout ce que vous avez @ faire p, tapez:. PRTR 1 "I80N""APPLESOFT LISTING" ASMF Dans l'exemple ci-dessus, la commande PRTR enverra le signal surC le Slot 1, initialisera l'interface imprimante avec 6. Envoyez la commande PRTR: PRTR 1 "I80N" "APPLESOFT XREF"E 7. Envoyez la commande ASM pour d{marrer la proc{dure d'assemblageD Lorsque ceci sera fait, la source Applesoft sera @ nouveau as-A sembl{e. Le programme XREFA la sortie imprimante @ la table de "Cross R{f{rence".00 !_____________________________!& ! !& ! Positions d'entr{es/sorties !&C000 !_____________________________!& ! !& ! Code objet et dictionnaire !& ! (s'il exist auxiliaire% _____________________________&FFFF ! !& ! Moniteur !&F800 !_____________________________!& ! !& ! Merlin Pro !&D0 !& ! Pile !&100 !_____________________________!& ! !& ! Page z{ro !&0 !_____________________________!Adr$ M{moire !& ! Interfaces I/O pour les !& ! routines utilisateurs !&300 !_____________________________!& ! !& ! Buffer clavier !&200 !_____________________________!& ! !& ! Page texte 1 !&400 !_____________________________!& ! !& ! Vecteurs DOS !&3F0 !_____________________________!& ! ! Fichier source !&900 !_____________________________!&8FF ! !& ! Espace pour l'{diteur et !& ! l'assembleur !&800 !_____________________________!& ! !E ! ! _ Fin des fichiers librairies& !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!& ! espace inutilis{ !7 ! ! _ Fin du source( !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~! & d'entr{es/sorties !&C000 !_____________________________!& ! !& ! DOS 3.3 !&9853 !_____________________________!& ! !& ! Macros (fichiers USE) ! Moniteur !&F800 !_____________________________!& ! !& ! Integer Basic (si charg{) !&D000 !_____________________________!& ! !& ! Positionsacdefghijklmnop_________________________! _ Adresse OBJ (80(Carte m{moire sous Merlin Pro, DOS 3.3(--------------------------------------Adr$ M{moire principale% _____________________________&FFFF ! !&AO=====<====<====<====<====<====<====<====<====<====<====<====<====<====<====<===@O=====<====<====<====<====<====<====<====<====<====<====<====<====<====<====<===0!____e) !F8000 !_____________________________! _ Adresse OBJ (8000 par d{faut)& ! Limite ignor{e si REL !& ! !& ! Table des symboles !& ! !&1000 !_____________________________!& ! !& ! Programmes USER (XREF,...) !& ! ou !& ! espace libre !&800 !_____________________________!& ! REF,...) !& ! ou !& ! espace libre !&800 !_____________________________!& ! !& ! Utilis{ par carte 80 col. !&400 !_____________________________!& Limite ignor{e si REL !& ! !& ! Table des symboles !& ! !&1000 !_____________________________!& ! !& ! Programmes USER (Xs/sorties !&C000 !_____________________________!& ! !& ! Code objet et dictionnaire !& ! (s'il existe) !F8000 !_____________________________! _ Adresse OBJ (8000 par d{faut)& ! niteur !&F800 !_____________________________!& ! !& ! Merlin Pro !&D000 !_____________________________!& ! !& ! Positions d'entr{e______!& ! !& ! Page z{ro !&0 !_____________________________!Adr$ M{moire auxiliaire% _____________________________&FFFF ! !& ! Mo______________________!& ! !& ! Buffer clavier !&200 !_____________________________!& ! !& ! Pile !&100 !_______________________ ! !& ! Vecteurs divers !&3F0 !_____________________________!& ! !& ! Interfaces I/O pour les !& ! routines utilisateurs !&300 !_______ !& ! Espace pour l'{diteur et !& ! l'assembleur !&800 !_____________________________!& ! !& ! Page texte 1 !&400 !_____________________________!&~~~~~~~~~~~!& ! espace inutilis{ !7 ! ! _ Fin du source( !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~! & ! Fichier source !&900 !_____________________________!&8FF ! ! Interpr{teur Merlin Pro !&AA00 !_____________________________!&A9FF ! !& ! Macros (fichiers USE) !E ! ! _ Fin des fichiers librairies& !~~~~~~~~~~~~~~~~~~ !& ! ProDOS !&D000 !_____________________________!& ! !& ! Positions d'entr{es/sorties !&C000 !_____________________________!& ! !&e z{ro de Merlin !&0 !_____________________________!'Carte m{moire sous Merlin Pro, ProDOS'-------------------------------------Adr$ M{moire principale% _____________________________&FFFF ! !& ! Utilis{ par XREF !&200 !_____________________________!& ! !& ! Pile de Merlin !&100 !_____________________________!& ! !& ! Pag !& ! Utilis{ par carte 80 col. !&400 !_____________________________!& ! !& ! Inutilis{ !&300 !_____________________________!& ! ! !& ! Inutilis{ !&300 !_____________________________!& ! !& ! Utilis{ par XREF !&200 !_____________________________!& ! !& ! Pile de Merlin !&100 !_____________________________!& ! !& ! Page z{ro de Merlin !&0 !_____________________________!Traduction de RJP : 6/3/9 banc de donn{es)($8B ; 1 octet)'PLD(d{pile le registre direct)($2B ; 1 octet)'PHD(empile le registre direct)($0B ; 1 octet)5PHK(empile le registre de banc de programme)anc de donn{es)($AB ; 1 octet)MKLes registres de banc de donn{es et de banc de programme appartiennent aux OMcapacit{s d'adressage {tendues du 65816 et donc n'ont que peu d'utilit{ pour le 65802. 3PHB(empile le registre de($62 ; 3 octets)PNL'op{rande donne un offset. Il est alors ajout{ au compteur de programme (PC) IGcourant pour former une adresse adrs1. Le contenu de adrs1,adrs1+1 est empil{, octet haut en premier.3PLB(d{pile le registre de bdirecte effective)($D4 ; 2 octets)ECLe registre direct est ajout{ @ - pour former adrs1. Le contenu de Aadrs1,adrs1+1 est alors mis sur la pile, octet haut en premier.;PER --(empile l'adresse indirecte relative effective)ructions PUSH et PULL:&~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~0PEA --(empile l'adresse absolue effective)($F4; 3 octets)LCeci met l'adresse 16 bits -- sur la pile, octet de poids fort en premier.2PEI -(empile l'adresse inri}re)). Voir la description de ces codes.NOUVEAUX OPCODES:-----------------LJLe 65802 supporte toutes les instructions du 65C02 (non-compris les codes @Rockwell). En plus, il dispose des nouveaux opcodes suivants :&Nouvelles inste effective.$Adressage du d{placement de blocs:$~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~JHCeci s'applique seulement aux opcodes de d{placement de blocs MVP (move NLforward (d{placement vers l'avant)) et MVN (move backward (d{placement vers 0l'ar /l'octet en adrs1+2 donne le "banc d'adresse". [-],YKILe registre direct est ajout{ @ - pour former une adresse adrs1. Le LJcontenu de adrs1,adrs1+1 (et adrs1+2 en mode 16 bits) est alors ajout{ au -registre Y pour former l'adress&{tendues du microprocesseur 65816) :6[-](NRJP:En fait ce sont des crochets !)KILe registre direct est ajout{ @ - pour former une adresse adrs1. Le PNcontenu de adrs1,adrs1+1 est alors l'adresse effective. Dans le mode 16 bits,male et index{e. OMChacune est support{e par les instructions ORA, AND, EOR, ADC, STA, LDA, CMP LJet SBC. Bien que l'assembleur supporte ces modes d'adressage, ils ne font NLrien d'utile sur le 65802. (Ils sont fournis pour les capacit{s d'adressage effective est adrs2+Y. Le but de ce mode d'adressage est d'utiliser =la pile pour passer des adresses de donn{es @ des routines.Adressage indirect long:~~~~~~~~~~~~~~~~~~~~~~~~OMC'est un nouveau mode d'adressage qui existe en versions nor - pour former l'adresse /effective (qui est une adresse dans la pile).(-,S),YHFDans ce mode, le registre de pile est ajout{ @ - pour former une KIadresse adrs1. Puis le contenu de adrs1,adrs1+1 forme une adresse adrs2. PNL'adresseur 6502. Il OMexiste @ la fois en versions normales et indirectes index{es. Chacune de ces LJversions est support{e par les instructions ORA, AND, EOR, ADC, STA, LDA, CMP, et SBC: -,SNLDans ce mode, le registre de pile est ajout{ @2($4B ; 1 octet)%INSTRUCTIONS DE MANIPULATION D'ETAT%-----------------------------------:REP #-(mets @ 0 les bits d'{tat d{finis par l'octet)($C2 ; 2 octets)PNSi le bit n de - est @ 1, alors le n-i}me bit du drapeau d'{tat correspondant Jest mis @ 0. Si le bit n de - est @ 0, alors le n-i}me bit est inchang{.:SEP #-(mets @ 1 les bits d'{tat d{finis par l'octet)($E2 ; 2 octets)PNSi le bit n de - est @ 1, alors le n-i}me bit du drapeau d'{tanterruption)($CB ; 1 octet)9Mets la ligne RDY en {tat bas. Attend un IRQ ou un NMI.ction peut etre utilis{e pour appeler un coprocesseur Dcomme un coprocesseur arithm{tique, mais ceci est li{ au hardware.STP(Arrete l'horloge)($DB ; 1 octet)&Arrete l'horloge du microprocesseur.%WAI(Attend une i-------COP -(Coprocesseur)($02 ; 2 octets)OMCeci entraine un saut @ l'adresse contenue dans $FFF4,5. La signification du NLdeuxi}me octet d{pendrait de la fa\on avec laquelle ce serait implant{ dans PNle syst}me. Cette instrucumulateur soit nul. Les deux octets suivants l'opcode sp{cifient le banc LJde destination et le banc source respectivement. Sur le 65802 ils doivent 7etre @ z{ro, mais vous devez quand meme le sp{cifier.INSTRUCTIONS DIVERSES--------------($54 ; 3 octets)IGCette instruction d{place l'octet contenu @ l'adresse contenue dans le B@registre X @ l'adresse contenue dans le registre Y. Puis X,Y et LJl'accumulateur C sont d{cr{ment{s. Le processus est r{p{t{ jusqu'@ ce que PNl'acr soit nul. Les deux octets suivants l'opcode MKsp{cifient le banc de destination et le banc source respectivement. Sur le I65802 ils doivent etre @ z{ro, mais vous devez quand meme le sp{cifier.1MVN -,-(D{placement de blocs vers l'arri}re)IGCette instruction d{place l'octet contenu @ l'adresse contenue dans le GEregistre X @ l'adresse contenue dans le registre Y. Puis X et Y sont JHincr{ment{s et l'accumulateur C est d{cr{ment{. Le processus est r{p{t{ LJjusqu'@ ce que l'accumulateu "longs" qui ne font rien sur le 65802, et qui ne sont "pas support{s par l'assembleur).&INSTRUCTIONS DE DEPLACEMENT DE BLOCS&------------------------------------/MVP -,-(D{placement de blocs vers l'avant)($44 ; 3 octets) que l'offset peut etre !compris entre -32768 et +32767.6JSR (--,X)(Saut pr{-index{ @ un sous-programme)!($FC ; 3 octets)KUn saut au sous-programme est effectu{ @ l'adresse contenue en -- plus X.PN(Il y a aussi des sauts($EB ; 1 octet)2NOUVELLES INSTRUCTIONS DE BRANCHEMENT ET DE SAUT2------------------------------------------------&BRL --(Branchement relatif long)($82 ; 3 octets)KIC'est juste comme un branchement sur le 6502 saufe de pile @ l'accumulateur C)($3B ; 1 octet) TXY(transf}re X dans Y)($9B ; 1 octet) TYX(transf}re Y dans X)($BB ; 1 octet):XBA({change les parties A et B de l'accumulateur))($5B ; 1 octet)?TDC(transf}re le registre direct D @ l'accumulateur C)($7B ; 1 octet)<TCS(transf}re l'accumulateur C au registre de pile)($1B ; 1 octet)>TSC(transf}re le registrmulation E.5NOUVELLES INSTRUCTIONS DE MANIPULATION DE REGISTRE:5---------------------------------------------------=(Rappel: le registre C est l'ensemble accumulateur A et B.)=TCD(transf}re l'accumulateur C au registre direct Dt correspondant Jest mis @ 1. Si le bit n de - est @ 0, alors le n-i}me bit est inchang{.<XCE({change le bit d'{mulation E avec la retenue C)($FB ; 1 octet)NLNotez que c'est la seule fa\on de changer ou de lire le drapeau d'{AO=====<====<====<====<====<====<====<====<====<====<====<====<====<====<====<===@O=====<====<====<====<====<====<====<====<====<====<====<====<====<====<====<===0!____!&1000!_____________________________!&!!&! Programmes USER (XREF,...) !&!ou!&! espace libre!&800!_____________________________!&! (s'il existe)!F8000 !_____________________________! _ Adresse OBJ (8000 par d{faut)&! Limite ignor{e si REL!&! !&! Table des symboles!&!!&D000!_____________________________!&!!&! Positions d'entr{es/sorties !&C000 !_____________________________!&!!&! Code objet et dictionnaire !&Adr$M{moire auxiliaire% _____________________________&FFFF ! !&! Moniteur!&F800!_____________________________!&!!&! Merlin Pro_____!&!!&! Pile!&100!_____________________________!&!!&! Page z{ro!&0!_____________________________!!&! Interfaces I/O pour les!&! routines utilisateurs!&300!_____________________________!&!!&! Buffer clavier!&200!________________________!!&! Page texte 1!&400!_____________________________!&!!&! Vecteurs DOS!&3F0!_____________________________!&!~~~~~~~~~~~! &! Fichier source!&900!_____________________________!&8FF!!&! Espace pour l'{diteur et !&! l'assembleur!&800!_____________________________!&ichiers USE)!E!! _ Fin des fichiers librairies&!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!&! espace inutilis{!7!! _ Fin du source(!~~~~~~~~~~~~~~~~~~! Positions d'entr{es/sorties !&C000 !_____________________________!&!!&! DOS 3.3!&9853 !_____________________________!&!!&! Macros (f!&! Moniteur!&F800!_____________________________!&!!&! Integer Basic (si charg{)!&D000!_____________________________!&!!&_________________________! _ Adresse OBJ (80(Carte m{moire sous Merlin Pro, DOS 3.3(--------------------------------------/Adr$M{moire principale% _____________________________&FFFF ! !!&! Utilis{ par carte 80 col.!&400!_____________________________!&!!&! Inutilis{ !&300!_____________________________!&!nCO=!==!==!===!=!=================================================================@ O=<==<==<===<=<================================================================= les param}tres de programmes @ zero, @2 la valeur normale ou par d{faut. I/O : Entr{e/Sortie; Interface : M{thode d'interconnexion des {quipements.* Invert : Changer @ l'{tat oppos{.= Label : Nom app premier Byte, ou le plus significatif, pour une: valeur ou un adresse Hexa de deux Bytes.B Hook : Adresse vecteur pour une routine ou un port I/O./ Increment : Valeur croissant constamment.D Initialize : Mettre tous pr{server ou {tablir le status d'une op{ration don-) n{e ou d'une condition.E Hex : Syst}me de nombres (Base 16) h{xad{cimaux, compos{s> de chiffres de 1 @ 9 et de lettres de A @ F.D High Order : Lebolique, actuelle ou implicite.( Fetch : Retrouver ou acqu{rir.D Field : Portion de donn{e r{serv{e @ un type sp{cifique de donn{e.E Flag : Endroit de la m{moire ou d'un registre utilis{ pourE dans une ligne de programme Basic.B Displacement: Constante ou variable utilis{e pour calaculer la> distance entre deux endroiits de la m{moire.' Equate : Etablir une variable.; Expression : Donn{e symfait utilis{ dans un progr.1 D{crement : Valeur d{croissant constamment.F D{fault : Valeur nominale ou condition assign{e @ un param}tre; s'il n'est pas sp{cifi{ par l'utilsateur.F Delimit : S{paration. Comme un : e machine.) Ctrl : Abr{viation de Control.F Cursor : Caract}re usuellement clignotant blanc qui marque laC position du prochain caract}res qui va }tre tap{.D Data : Donn{e. Information ou de 8 bits binaires.1 Carry : Fouiller dans le registre 6502.B Chip : Petite pi}ces de silicone et germanium contenant1 une foule de circuits int{gr{s.A Code : Ecriture de donn{es ou instructions de languagos et de uns.> Bit : Une unit{ de donn{es binaires, comme 1 ou 0.E Branch : Execution continue @ un nouvel endroit.Branchement.; Buffer : Espace temporaire de stockage de donn{es.A Byte : Repr{sentation Hexad{cimaleun syst}me num{rique, l'exposant auquel le D syst}me se r{f}re; Le nombre de symboles requi{ris+ par ce syst}me num{rique.F Binary : Un syst}me de base de 2 nombres compos{s uniquement % de z{r Algorithm : Une m{thdoe sp{cifique pour r{soudre un probl./ Allocate : Allouer ou r{server un place.D ASCII : Un syst}me standard de 128 caract}res assign{s par- des codes alpha-num{riques.B Base : Dans  Glossaire: ----------7 Abort : Terminer une op{ration pr{matur{ment.2 Access : Localiser ou r{parer une donn{e.8 Address : Un endroit bien sp{cifique en m{moire.@liqu{ @ une variable ou une adresse.$ Lookup : Argot; Voir table.A Low-order : Le second ou le + petit Byte significatif d'une8 adresse ou d'une valeur de deux Bytes.0 LSB : Least Significant Bit or Byte.F Macro : En assembleur, capacit{ @ appeler un code par un nomA symbolique et le placer dans le fichier Object.B Microproc. : Coeur du micro-ordinateur (Le 6502 dans l'Apple)? Mod : Algorythme retourant le reste d'une chose donn{e par le programme est le controle deF chaque commencement de ligne par un espace. Si ce n'est pas le cas,C un espace est ins{r{ @ chaque d{but de ligne. Ceci est fait pourE donner une marge gauche en utilisant la commande {diteur TAB ae jusqu'@ la fin. Il vous sera demand{ une longueur deA ligne qui devra }tre inf{rieure @ 250. Pour finir, vous devrezD dire si vous voulez que le fichier soit justifi{ sur les 2 cot{s.) (Plutot que d'}tre seulement @ gauche)B La premi}re ire.E Pour formatter un fichier en m{moire, envoyez une commande USER depuis l'{diteur.F Le programme FORMATTER demande des limites @ formatter (Range). B Si vous donnez juste un nombre, le fichier sera formatt{ depuisC cette ligntilisant une longueur de ligne sp{cifique. Dans le E fichier original, les paragraphes sont s{par{s par une ligne vide.F Pour utiliser FORMATTER, vous devez d'abord faire un BRUN depuis> le mode EXEC. FORMATTER se chargera alors en haute m{mo . U.T.I.L.I.T.I.E.S Merlin Pro Formateur: ----------C Ce programme est concu pour r{hausser l'utilisation de MerlinF comme un {diteur texte. Il formattera automatiquement un fichier enF paragraphes en u programme./ Toggle : Passage d'un {tat @ un autre.F Variable : Expression alphanum{rique pouvant }tre assign{e @ un$ nombre de valeurs.' Vector : Adresse @ r{f{rencer. " .@ Sweet 16 : Programme simulant un microprocesseur 16 Bits.1 Symbol : Label mn{monique ou symbolique.> Syntax : M{thode prescrite pour l'entr{e des donn{es.E Table : Liste de valeurs, mots et donn{es r{f{renc{ par un Stack : Espace de stockage temporaire en RAM utilis{ par leB 6502 et par des programmes en language assembl{.F String : Un groupe de caract}res ASCII usuellement inclus par0 les d{limiteurs comme ' ou: Read Only Memory.? Sign Bit : Bit huit d'un Byte; n{gatif si valeur > @ $80E Source cde : Donn{e entr{e dans l'assembleur destin{e @ produireC un programme en language machine lorsque elle est assembl{e.E Prompt : Caract}re sollicitant l'utilisateur @ entrer une donn{e.& Pseudo : Artifice, substitut.' RAM : Random Access Memory., Register : Endroit m{moire, registre. Relative : # ROM pheral : Proc{d{ ext{rieur.F Pointer : Endroit de la m{moire contenant une adresse de don{e* quelque part en m{moire.C Port : Point d'interconnexion physique reliant les {qui-% pements exterieurs.B par le 6502.@ Operand : Donn{es utilis{es par une instruction du 6502.. Page : Espace m{moire de 256 Bytes.F Parameter : Valeur ou constante utilis{e par un programme ou une. op{ration pour une fonction.$ PeriB : Most Significant Bit or Byte. Null : Sans valeur.F Object Code : Code pret @ executer produit par un programme assem- bleur.* Offset : Valeur d'un d{placement.3 Opcode : Instruction ex{cut{edivision.. Mode : Sous-op{ration particuli}re.F Module : Portion de programme destin{e @ une tache sp{cifiqueB Mnemonic : Abr{viation symbolique utilisant des caract}res 2 aidant au rappel d'une fonction./ MSvant? l'utilsation de la commande PRINT, pour imprimer le fichier.D FORMATTER utilise des espaces invers{s pour le remplissage n{-D cessit{ par les justifications des deux cot{s. Ceci est fait pourD pouvoir les localiser et reformatter le fichier plus tard si vousF le voulez. Il est important de ne pas utiliser les commandes FIX etD TEXT sur un fichier apr}s que celui-ci ait {t{ formatt{ (A moins B qu'une copie ait {t{ sauv{e). Pour les fichiers provenant d'uneE source ext{rieur SAUVEF le fichier sur lequel vous travailliez, et s{lectionnez le num{-. ro de DRIVE o| se trouve le disk Merlin.E 2. CATALOGUEZ le disk et lorsque Merlin vous demande une commande,+ apr}s le catalogue, entrez BRUN XREF.E 2a.Pour M E source (Qui est la ligne qui contient le code PUT) et la ligne 828 du fichier PUT, o| le label est actuellement utilis{. Instructions XREF: ------------------F 1. Allez en mode Executive Merlin, assurez vous que vous avezt d'entr{e majeure est suffix{ par un "*".E Le rajout d'un trait est une notation sp{ciale pour des sourcesF suppl{mentaires qui sont donn{es durant l'assemblage avec le pseudoD code PUT: par exemple, "134.82" indique la ligne 134 du fichierest indiqu{e par le signe "="F et le num{ro de ligne de chaque ligne dans le fichier source que leF label fait apparaitre est list{ @ droite de la d{finition. En plus,E le num{ro de ligne o| le label est soit d{fini soit utilis{ comme 4 un poinrenc{s - Ordre Num{rique:$ BK =$F706 104 121*$ ADD =$F786 101 185*# BC =$F7B0 90 207*E Comme vous pouvez le voir dans l'exemple ci-dessus, la "d{fini-F tion ou la valeur actuelle d'un label xemple d'impression Merlin XREF:A Table de Symboles Cross R{f{renc{s - Ordre Alphab{tique:$ ADD =$F786 101 185*$ BC =$F7BO 90 207*$ BK =$F706 104 121*> Table de Symboles Cross R{f{e de Symboles Merlin:0 Table de Symboles - Ordre Alphab{tique:9 ADD =$F786 BC =$F7B0 BK =$F706- Table de Symboles - Ordre Num{rique:9 BK =$F706 ADD =$F786 BC =$F7B0* EREFA.H sont des versions ProDos des programmes XREF F et XREFA qui utilisent une page de haute m{moire plutot qu'une pageE m{moire 3. Ceci est pr{vu pour les utilisateurs ayant une Horloge en page 3.; Exemples d'impression de Tablique et num{rique com-C pl}te d'un label utilis{ dans un programme de language assembl{.F XREFA donne une table de Cross R{f{rence par adresse. Ceci est plusF utilis{ pour une source importante contenant assez de fichiers PUT.E XREF.H et Xaliser les valeurs ouD les adresses actuelles des labels, cela ne vous permettra pas de> poursuivre l'utilisation des labels @ travers le programme.0 C'est l@ que le programme XREF intervient.C XREF vous donne une impression alphab{te debugger ou d'affiner * certaines portions d'un long programme.@ L'assembleur Merlin produit tout seul l'impression de ses E tables de symboles uniquement apr}s un assemblage correct. PendantD que la table de symboles vour permet de visuous les labels utilis{s avec un programme de lan- guage assembl{ Merlin.C Un tel listing peu vous aider rapidement @ trouver ou identi-B fier des valeurs @ travers un programme. Ceci plus sp{cialement? lorsque vous tentez de comprendre, d{di- tion du fichier.D N'oubliez pas d'utiliser les commandes TAB avant d'imprimer un fichier formatt{. IREF IREFA: -------------B Cet utilitaire fourni un moyen de g{n{rer un listing Cross -B R{f{rence de te, il est pr{f{rable d'utiliser en premier la com-C mande FIX pour s'assurer qu'ils sont dans les formats exig{s parE FORMATTER. Pour la m}me raison, il est conseill{ de reformatter unD fichier en utilisant seulement la justification, avant toute erlin ProDos, appuyez sur D (Disk) et lorsque Merlin vous5 demande une commande, entrez /MERLIN/UTIL/XREF.( 3. Tapez la commande USER appropri{e:F USER O -Imprime uniquement un list.assembl{ ou un Cross-RefC alphab{tique (Notez que USER est idem @ USER O).A USER 1 -Imprime listing assembl{ et un Cross-R{f{rence- alphab{tique et num{rique.E USER 2 -N'imprime pas le listing assembl{ mais imprime les? listings Cr assembl{s etF donne l'avantage de ne pas avoir @ assembler un programme pour voir les Objects Codes. APPLICATIONS: -------------# Inclus dans les applications:B - Incorporation des fichiers textes assembl{s dans un docuichiers textes g{n{r{s par PRINTFILER incluent les ObjectE codes d'un listing assembl{, ce qui n'est normalement pas faisableC lors de sauvegardes de fichiers sources. Cela permet de disposerF compl}tement d'informations de programmes de languagesE ver sur disquette un listing assembl{ comme un fichier s{quentiel.E Il vous permet en option de s{lectionner "File Packing" qui r{duitD l'espace requit et vous permet de couper la sortie Vid{o pour des op{rations plus rapides.D Les f @ la valeur du Clabel {xecpt{ pour des labels EQUivalents, cas o| il sera indiqu{6l'adresse compteur lorsque l'{quation sera termin{e. PRINTFILER: -----------E PRINTFILER est un utilitaire inclus dans Merlin qui sert @ sau-sque vous avez un certain nombre de fichiers PUT. Puisque ceFprogramme n'a besoin que de 5 Bytes par Cross r{f{rence au lieu de 6Dil peut supporter des sources beaucoup plus longues. Une des r{f{-D rences ne sera pas donn{e parce qu'elle est {gale <---- Appel MacroF Dans l'exemple ci-dessus, la variable GLOBAL est Cross R{f{renc{) mais le label local DONE ne l'est pas. XREFA: ------E C'est une adresse de programme Cross R{f{rence tout @ fait com-Fmode lorEF MAC <---- D{finition Macro CMP #]1 BNE DONE ASL DONE <<>> DEF.GLOBAL , mais ce n'est pas sur @ 100% .C Une autre chose pour savoir quand utiliser une commande macroF avec XREF. Les labels d{finis dans les d{finitions macros n'ont pasA de signification globale et ne sont donc pas Cross R{f{renc{s.> D symbole). PourF la m}me raison, la commande CTRL-D ne doit pas }tre utilis{e durantF l'assemblage. Le programme permet de d{terminer si l'assembleur luiB envoie un message d'erreur dans la premi}re passe et interrompt; l'assemblage dans ce casnt dans ces espaces n'apparaitront pas dans les tables. EnE particulier, il est n{cessaire pour la bonne {x{cution de XREF queD la condition de LST soit ON @ la fin de l'assemblage (Puisque le F programme intercepte la sortie r{guli}re de table deSM (En dessous).F 4. Entrez une commande ASM pour commencer l'assemblage et l'impres- sion.E Pendant que le programme XREF requiert les sorties assembleur, A les codes avec LST OFF ne seront pas {x{cut{s et les labels seC trouvasF d'assemblages conditionnels @ imprimer, quel que soit l'{tat du DO.E NOTE: Vous pouvez changer de commande USER quand vous le voulezF (de USER 1 @ USER 2 par exemple). Le changement ne sera permanent4 que si vous entrez une commande Ablages conditionnels avec le DO en condition OFF, ignor{s et1 non imprim{s dans la table de Cross R{f{rence.F Il y a des commandes USER additionnelles 4 @ 7 qui ont les m}mesF fonctions {xecpt{ qu'elles occasionnent des labels dans les espaceoss-R{f{rence aplhab. uniquement.E USER 3 -N'imprime pas le listing assembl{ mais imprime lesB listings Cross-Ref alphab{tiques et num{riques.F Les commandes USER 1 @ 3 (Ci-dessus) occasionnent des label dansD assemment 5 pr{par{ par un mot processeur (Word Processor).9 - Envoi d'un fichier par communications avec un modem.E - Disposition d'un mailing permettant de travailler avec le d{sas-; semblage complet sans avoir @ assembler le programme.- Comment Utiliser PRINTFILER en Dos 3.3:- ---------------------------------------C 1. Depuis le mode EXEC, assurez vous que vous avez sauver chaqueD fichier source (S{lectionnez en premier le Drive des fichier @F sauver), s{lec80 Pour compacter et vid{o en service, ou6 300:80 00 Pour d{compacter et vid{o coup{e, ou: 300:80 80 Pour d{compacter et vid{o en service, ou- les valeurs normales sont 300:80 00C Tapez RETURN CTRL-Y RETURN pour retoudes fichiers compact{s, et prennent presque 3 fois  plus de temps.; Pour changer les options PRINTFILER: (temporairement)3 Entrez en {diteur, entrez "MON" et entrez:4 300:00 00 Pour compacter et vid{o coup{e, ou8 300:00 B sur la disquette. Le temps que cela prends ralentit Printfiler.G Le proc{d{ de coupure de la sortie vid{o permet un gain de temps  de 25% environ.F De plus, les fichiers non compact{s prennent presque 2 fois plusC de place que E Unpacking (d{compactage) permet de restituer le fichier sous saE forme originale. Notez que lorsque vous ne pouvez pas assembler de) fichier, vous pouvez au moins le lire.D Vid{o {choing permet d'imprimer sur l'{cran ce qui est envoy{sur disquette parD le remplacement des blancs par un simple caract}res ayant un bit D haut @ l'{tat Off. Un listing de fichier compact{ vous montre lesF blancs remplac{s par une lettre en inverse (A= 1 blanc, B= 2 blancs C= 3 blans, etc...).----------------------B Printfiler poss}de 2 options que vous pouvez changer: "File A Packing" et "Vid{o Output". Changements que vous pouvez entrer) temporairement ou de facon permanente.E File Packing r{duit la taille des fichier mis Dos 3.3, ci-dessus paragraphe 3. A la place de la com-9 mande USER, faites PRTR 8 "Pathname" "Page Header".E 3. Idem que paragraphe 4 de l'utilisation sous Dos 3.3, ci-dessus.( Changer les Options de PRINTFILER:( ------------ /MERLIN/UTIL/PRINTFILER.? 2. Chargez le fichier @ assembler. Lorsque vous entrez dans D l'{diteur, tapez USER "Pathname" (Nom de fichier) (En incluantE les guillemets). Pour la commande PRTR, idem que pour l'utilsa-F tion sous es op{rations.. Comment utiliser PRINTFILER sous ProDos:. ----------------------------------------A 1. Soyez certain que le fichier /MERLIN/UTIL/PRINTFILER est enC place. Puis appuyez sur D pour commande Disk, et entrez: BRUNE SOURCE", PRINTFILER assemblera automatiquement le fichier D source directement sur le disk. Notez que vous ne verrez rien E apparaitre sur l'{cran puisque PRINTFILER est pr{configur{ pourC couper la sortie vid{o, ceci pour la rapidit{ davec le listing. Dans ce cas, entrez la com-C mande suivante @ la place de la commande USER: PRTR 8 "Nom du8 fichier" "Page header" (Avec tous les guillemets).F 4. Entrez ASM, et apr}s qu'il vous soit demand{ si vous voulez "UP-E DATe l@ o| vous voulezA sauver le d{sassemblage, entrez dans l'{diteur @ nouveau etF entrez USER "Nom de fichier" (Avec les guillemets). Vous pouvezE alors utiliser la commande PRTR si vous voulez que les t}tes deE pages soit envoy{s F 2. Appuyez sur RETURN, s{lectionner le Drive contenant le fichier @D assembler et chargez le fichier en m{moire. (Vous devez passer: cette {tape si vous avez d{j@ fait BRUN PRINTFILER).C 3. Quittez l'{diteur, s{lectionnez le Drive dtionner le Drive o| se trouve PRINTFILER (Usuelle-F ment le Disk Merlin) et faites un catalogue. Lorsque vous verrezF apparaitre "COMMAND:", tapez BRUN PRINTFILER (Vous devez passer < cette {tape si vous avez avez d{j@ charg{ Printfiler).rner en mode EXEC. LesA valeurs entr{es sont valables jusqu'@ ce que vous refassiez un BRUN PRINTFILER.@ Pour changer les options PRINTFILER: (De facon permanente)C 1. Chargez Printfiler et faites un ASM. Pendant l'assemblage,/ il vous sera demand{ plusieurs choses:D 2. Apr}s la question UPDATE SOURCE?, Printfiler demandera GIVEC VALUE FOR FORMAT: si vous tapez 0, vous mettrez en service? l'option Pack. Si vous tapez 1, ce ne sera pas le cas.C 3. P!&! Positions d'entr{es/sorties !&C000 !_____________________________!&!!&! Code objet et dictionnaire !&! (s'il existe)!F8000 !_____________________________! _ Adresse!&! Moniteur!&F800!_____________________________!&!!&! Merlin Pro!&D000!_____________________________!&!!&100!_____________________________!&!!&! Page z{ro!&0!_____________________________!Adr$M{moire auxiliaire% _____________________________&FFFF ! lisateurs!&300!_____________________________!&!!&! Buffer clavier!&200!_____________________________!&!!&! Pile!_____________________________!&!!&! Vecteurs divers!&3F0!_____________________________!&!!&! Interfaces I/O pour les!&! routines uti________!&8FF!!&! Espace pour l'{diteur et !&! l'assembleur!&800!_____________________________!&!!&! Page texte 1!&400airies&!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!&! espace inutilis{!7!! _ Fin du source(!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~! &! Fichier source!&900!_____________________!!&! Interpr{teur Merlin Pro!&AA00 !_____________________________!&A9FF!!&! Macros (fichiers USE)!E!! _ Fin des fichiers libr_______&FFFF ! !&! ProDOS!&D000!_____________________________!&!!&! Positions d'entr{es/sorties !&C000 !_____________________________!&!&! Page z{ro de Merlin!&0!_____________________________!'Carte m{moire sous Merlin Pro, ProDOS'-------------------------------------/Adr$M{moire principale% ______________________!&! Utilis{ par XREF!&200!_____________________________!&!!&! Pile de Merlin!&100!_____________________________!&!l'Object Code. A chaque fois que C vous ferez un BRUN de l'Object Code, les valeurs utilis{es) seront celles entr{es plus haut.STEPH95...02/92rintfiler demandera alors GIVE VALUE FOR MONITOR: Si vousC tapez 0, la sortie vid{o sera coup{e, si vous tapez 1, ce A sera l'inverse. Printfiler assemblera imm{diatemment en  Object Codes.F 4. Quitter l'{diteur et sauvez OBJ (8000 par d{faut)&! Limite ignor{e si REL!&! !&! Table des symboles!&!!&1000!_____________________________!&!!&! Programmes USER (XREF,...) !&!ou!&! espace libre!&800!_____________________________!&!!&! Utilis{ par carte 80 col.!&400!s le mode 16-bits (E=0 et M=0), une instruction LDA $1000 chargera le PNregistre A sur 8 bits avec la valeur en $1000 et le registre B avec la valeur en $1001.MKLe registre de pile est aussi sur 16 bits quand E=0. Ainsi, on peut mettre #une pi0).PNQuand E=0 et M=0, l'accumulateur est sur 16-bits et est appel{ le registre C, NLavec A correspondant aux 8 bits de poids faibles, les 8 bits de poids forts PN{tant appel{s B. (On doit cependant utiliser LDA,etc.. dans le mode 16-bits). KIDanne l'acc}s m{moire (par GELDA, etc..) sur 8-bits (M=1) ou 16-bits (M=0) ainsi que la taille de l'accumulateur.JHLe bit 4 du registre d'{tat est appel{ X et s{lectionne la longueur des ?registres d'index (X et Y) sur 8-bits (X=1) ou 16-bits (X= bit CAinutilis{ du 6502, et l'autre, le 4, est le bit BRK sur le 6502. OML'utilisation de ces derniers bits est rendu possible par un changement dans 'la fa\on de traiter un BRK quand E=0.PNLe bit 5 du registre d'{tat est appel{ M, et s{lectionu registre d'{tat. Comme E ne fait pas @partie techniquement du registre d'{tat, PLP ne le change pas.NLQuand E=0 (emulation off), il y a deux bits du registre d'{tat qui controle HFles modes 16 bits du processeur. Un de ces bits, le bit 5, est le alors certaines OMpetites choses (comme le traitement de BRK) se passent differemment du 6502, &et l'adressage 16 bits est possible.JHLe bit d'{mulation E peut etre chang{ par seulement un opcode, XCE, qui MKl'{change avec le bit de retenue C ds et de nouveaux modes d'adressage.OMIl y a un nouveau bit d'{tat, appel{ "bit d'{mulation" et nomm{ E. Si ce bit NLest @ 1, alors le 65802 est totalement compatible avec le 6502 et le 65C02, IGmais reconnait de nouveaux opcodes. Si ce bit est @ 0,_________________________! _ Adresse OBJ (80Merlin Pro 65802LE MICROPROCESSEUR 65802~~~~~~~~~~~~~~~~~~~~~~~~OMLe nouveau microprocesseur 65802 est une am{lioration du 65C02, qui supporte Ll'adressage 16 bits, de nouveaux opcodeBO=====<====<====<====<====<====<====<====<====<====<====<====<====<====<====<===@O=====<====<====<====<====<====<====<====<====<====<====<====<====<====<====<===0!____Traduction de RJP : 6/3/92_____________!&!!&! Pile de Merlin!&100!_____________________________!&!!&! Page z{ro de Merlin!&0!_____________________________!_____________________________!&!!&! Inutilis{ !&300!_____________________________!&!!&! Utilis{ par XREF!&200!________________le n'importe o| en m{moire.PNIl y a un nouveau registre appel{ le registre direct D quand E=0. Ce registre OMaugmente l'adressage en page z{ro du 6502, qui est appel{ "adressage direct" MKsur le 65802. Quand E=0 n'importe quel "mode adresse direct" comme LDA $40 NLop}re en ajoutant l'octet suivant l'opcode ($40 ici) au contenu du registre HFdirect, qui forme alors l'adresse effective pour l'instruction. Si le GEregistre direct contient la valeur $2010, alors l'instruction serait KI{quivalentctive.Modes d'adressages absolus:~~~~~~~~~~~~~~~~~~~~~~~~~~~MKLe modes d'adressage "--", "--,X" et "--,Y" op}rent de la meme mani}re que NLsur le 6502, sauf bien sur en mode 16 bits. (Si M=0, STA $1000 rangera A en N$1000 et B en $1001.)gistre X pour former adrs2, puis le contenu de adrs2,adrs2+1 +forme adrs3 qui sera l'adresse effective.Mode adresse : (-)IGLe registre direct est ajout{ @ - pour former l'adresse adrs1. Puis le 5contenu de adrs1,adrs1+1 forme l'adresse effet l'adresse $DBA1 alors l'instruction LDA PN($26),Y chargera l'accumulateur avec l(es) octet(s) en $DBA1+Y (et $DBA2+Y si M=0).Mode adresse : (-,X)LJLe registre direct est ajout{ @ - pour former une adresse adrs1. Elle est LJajout{e au ret ajout{ @ - pour former une adresse adrs1. Alors le PNcontenu de adrs1,adrs1+1 forme une adresse adrs2. Elle est @ son tour ajout{e PNau registre Y pour former l'adresse effective. Par exemple, si D=$1234 et que OMles adresses $125A,$125B contiennens comme direct,Y n'est MKpas support{ par LDA, ce sera assembl{ comme si c'{tait LDA $0010,Y.) Pour IGforcer le mode non-direct pour une instruction LDX ou STX, utilisez la syntaxe LDX: et STX:.Mode adresse : (-),YMKLe registre direct es effective.Mode adresse : -,YOMCe mode est disponible seulement pour LDX -,Y et STX -,Y. Le registre direct OMest ajout{ @ - et est ajout{ @ Y pour former l'adresse effective. (Notez que NLl'assembleur acceptera des choses comme LDA $10,Y maive. PNAinsi, si D=$1234 alors LDA $56 chargera l'accumulateur @ partir de l'adresse '$1234+$56=$128A (et de $128B si M=0).Mode adresse : -,XLJLe registre direct est ajout{ @ - et le r{sultat est ajout{ au registre X "pour former l'adresse{ro, et deux tirets pour indiquer une adresse ou une valeur sur 16 bits.Mode adresse : -OMC'est le plus simple des modes d'adressage "directs". Le registre direct est MKajout{ @ - (le 2e octet de l'instruction). Cela forme l'adresse effectin en langage KIassembleur. Nous {viterons ces termes et, @ la place, nous d{crirons les DBdiff{rents modes d'adressage en montrant la syntaxe en assembleur IGcorrespondante. Nous utiliserons un simple tiret "-" pour indiquer une OMexpression page zd'abominations de syntaxes commes KI"adressage indirect direct pr{-index{". Les plus suspicieux d'entre vous NLpourraient penser que ces termes ont {t{ expressement choisis pour d{router LJles d{butants et garder un air myst{rieux sur la programmatioct PNcontient la valeur 0, alors l'adressage direct est compl}tement {quivalent au 5vieil "adressage en page z{ro" dans tous les modes."Les modes d'adressage "directs": ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~JHL'utilisation du terme "direct" vient tre D avec la valeur OM$300, alors l'instruction LDA (0),Y chargera l'accumulateur avec les donn{es NLqui sont @ l'adresse $1000+Y (c'est-@-dire @ partir de l'adresse contenue @ KIla position $300+0 plus la valeur de Y). Notez que si le registre direro. L'effet de l'am{lioration du registre KIdirect est de permettre l'impl{mentation d'une page z{ro n'importe o| en OMm{moire. Par exemple si vous placez le pointeur $1000 en position $300 ($00 KIen $300 et $10 en $301) et que vous chargez le regise @ LDA $2050 (car $2010+$40=$2050), mais serait ex{cut{e plus PNrapidement. Pour une ex{cution plus rapide, l'octet haut du registre direct D JHdevrait etre laiss{ @ 0, car des cycles d'horloges suppl{mentaires sont KIn{cessaires s'il n'est pas @ z{ Ainsi ces modes n'ont pas besoin d'etre d{taill{s ici.Adressage imm{diat:~~~~~~~~~~~~~~~~~~~KIL'adressage imm{diat se r{f}re @ des choses comme LDA #3 et CPX #$45. Le PN65802 permet aussi ces memes opcodes pour op{rer sur des donn{es sur 16-bits. NLAinsi, ils op{reront sur 8 ou 16 bits d{pendemment des bits d'{tats M et X. OMDes codes tels que LDA #, CMP #, BIT #, (en fait n'importe quel code n'ayant PNpas X ou Y) op}reront sur des donn{es 16 bits si le drapeau M est @ z{ro. Les PNcr former une adresse adrs1. Le contenu de adrs1,adrs1+1 est empil{, octet haut en premier.1PLB (d{pile le registre de banc de donn{es) ($AB ; 1 octet)MKLes registres de banc de donn{es et de banc de programme appartiennent aux Ode Aadrs1,adrs1+1 est alors mis sur la pile, octet haut en premier.9PER -- (empile l'adresse indirecte relative effective) ($62 ; 3 octets)PNL'op{rande donne un offset. Il est alors ajout{ au compteur de programme (PC) IGcourant poue) ($F4 ; 3 octets)LCeci met l'adresse 16 bits -- sur la pile, octet de poids fort en premier.0PEI - (empile l'adresse indirecte effective) ($D4 ; 2 octets)ECLe registre direct est ajout{ @ - pour former adrs1. Le contenu porte toutes les instructions du 65C02 (non-compris les codes @Rockwell). En plus, il dispose des nouveaux opcodes suivants :&Nouvelles instructions PUSH et PULL:&~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.PEA -- (empile l'adresse absolue effectivque seulement aux opcodes de d{placement de blocs MVP (move NLforward (d{placement vers l'avant)) et MVN (move backward (d{placement vers 0l'arri}re)). Voir la description de ces codes.NOUVEAUX OPCODES:-----------------LJLe 65802 sup pour former une adresse adrs1. Le contenu OMde adrs1,adrs1+1 (et adrs1+2 en mode 16 bits) est alors ajout{ au registre Y "pour former l'adresse effective.$Adressage du d{placement de blocs:$~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~JHCeci s'applits !)NLLe registre direct est ajout{ @ - pour former une adresse adrs1. Le contenu PNde adrs1,adrs1+1 est alors l'adresse effective. Dans le mode 16 bits, l'octet 'en adrs1+2 donne le "banc d'adresse".[-],YNLLe registre direct est ajout{ @ -, STA, LDA, CMP LJet SBC. Bien que l'assembleur supporte ces modes d'adressage, ils ne font NLrien d'utile sur le 65802. (Ils sont fournis pour les capacit{s d'adressage &{tendues du microprocesseur 65816) :+[-] (NRJP:En fait ce sont des crocheour passer des adresses de donn{es @ des routines.Adressage indirect long:~~~~~~~~~~~~~~~~~~~~~~~~OMC'est un nouveau mode d'adressage qui existe en versions normale et index{e. OMChacune est support{e par les instructions ORA, AND, EOR, ADC). (-,S),YKIDans ce mode, le registre de pile est ajout{ @ - pour former une adresse MKadrs1. Puis le contenu de adrs1,adrs1+1 forme une adresse adrs2. L'adresse NLeffective est adrs2+Y. Le but de ce mode d'adressage est d'utiliser la pile 5pectes index{es. Chacune de ces LJversions est support{e par les instructions ORA, AND, EOR, ADC, STA, LDA, CMP, et SBC:-,SIGDans ce mode, le registre de pile est ajout{ @ - pour former l'adresse /effective (qui est une adresse dans la pilepar exemple. Notez l'utilisation de donn{es binaires ici).Adressage relatif @ la pile:~~~~~~~~~~~~~~~~~~~~~~~~~~~~JHC'est un nouveau mode d'adressage qui n'a pas d'{quivalent sur 6502. Il OMexiste @ la fois en versions normales et indir dans un programme en ex{cution. Ainsi, pour que NLl'assembleur assemble correctement un opcode imm{diat, il doit etre inform{ OMdes {tats de ces bits. Cela est fait par le pseudo-opcode MX. (L'instruction PNMX %01 dit @ l'assembleur que M=0 et X=1, odes imm{diats comme LDX # ou CPY #, qui mettent en oeuvre X et Y, op}reront GEsur des donn{es 16 bits si le drapeau X est @ z{ro. Malheureusement, PNl'assembleur (quel qu'il soit) n'a aucune fa\on de savoir quels seront l'{tat GEdes registres M et XMcapacit{s d'adressage {tendues du 65816 et donc n'ont que peu d'utilit{ pour le 65802. 1PHB (empile le registre de banc de donn{es) ($8B ; 1 octet)%PLD (d{pile le registre direct) ($2B ; 1 octet)%PHD (empile le registre direct) ($0B ; 1 octet)3PHK (empile le registre de banc de programme) ($4B ; 1 octet)%INSTRUCTIONS DE MANIPULATION D'ETAT%-----------------------------------8REP #- (mets @ 0 les bits d'{aquelle ce serait implant{ dans PNle syst}me. Cette instruction peut etre utilis{e pour appeler un coprocesseur Dcomme un coprocesseur arithm{tique, mais ceci est li{ au hardware.STP (Arrete l'horloge) ($DB ; 1 octet)&Arrete l'eme le sp{cifier.INSTRUCTIONS DIVERSES---------------------COP - (Coprocesseur) ($02 ; 2 octets)OMCeci entraine un saut @ l'adresse contenue dans $FFF4,5. La signification du NLdeuxi}me octet d{pendrait de la fa\on avec lont d{cr{ment{s. Le processus est r{p{t{ jusqu'@ ce que PNl'accumulateur soit nul. Les deux octets suivants l'opcode sp{cifient le banc LJde destination et le banc source respectivement. Sur le 65802 ils doivent 7etre @ z{ro, mais vous devez quand m{cifier.1MVN -,- (D{placement de blocs vers l'arri}re) ($54 ; 3 octets)IGCette instruction d{place l'octet contenu @ l'adresse contenue dans le B@registre X @ l'adresse contenue dans le registre Y. Puis X,Y et LJl'accumulateur C s{ment{. Le processus est r{p{t{ LJjusqu'@ ce que l'accumulateur soit nul. Les deux octets suivants l'opcode MKsp{cifient le banc de destination et le banc source respectivement. Sur le I65802 ils doivent etre @ z{ro, mais vous devez quand meme le spD{placement de blocs vers l'avant) ($44 ; 3 octets)IGCette instruction d{place l'octet contenu @ l'adresse contenue dans le GEregistre X @ l'adresse contenue dans le registre Y. Puis X et Y sont JHincr{ment{s et l'accumulateur C est d{cru{ @ l'adresse contenue en -- plus X.PN(Il y a aussi des sauts "longs" qui ne font rien sur le 65802, et qui ne sont "pas support{s par l'assembleur).&INSTRUCTIONS DE DEPLACEMENT DE BLOCS&------------------------------------/MVP -,- ( ($82 ; 3 octets)KIC'est juste comme un branchement sur le 6502 sauf que l'offset peut etre !compris entre -32768 et +32767.2JSR (--,X) (Saut pr{-index{ @ un sous-programme) ($FC ; 3 octets)KUn saut au sous-programme est effectB ; 1 octet)8XBA ({change les parties A et B de l'accumulateur) ($EB ; 1 octet)2NOUVELLES INSTRUCTIONS DE BRANCHEMENT ET DE SAUT2------------------------------------------------$BRL -- (Branchement relatif long) ateur C au registre de pile) ($1B ; 1 octet)<TSC (transf}re le registre de pile @ l'accumulateur C) ($3B ; 1 octet)TXY (transf}re X dans Y) ($9B ; 1 octet)TYX (transf}re Y dans X) ($Be C est l'ensemble accumulateur A et B.);TCD (transf}re l'accumulateur C au registre direct D) ($5B ; 1 octet)=TDC (transf}re le registre direct D @ l'accumulateur C) ($7B ; 1 octet):TCS (transf}re l'accumulnue C) ($FB ; 1 octet)NLNotez que c'est la seule fa\on de changer ou de lire le drapeau d'{mulation E.5NOUVELLES INSTRUCTIONS DE MANIPULATION DE REGISTRE:5---------------------------------------------------=(Rappel: le registrs par l'octet) ($E2 ; 2 octets)PNSi le bit n de - est @ 1, alors le n-i}me bit du drapeau d'{tat correspondant Jest mis @ 1. Si le bit n de - est @ 0, alors le n-i}me bit est inchang{.:XCE ({change le bit d'{mulation E avec la retetat d{finis par l'octet) ($C2 ; 2 octets)PNSi le bit n de - est @ 1, alors le n-i}me bit du drapeau d'{tat correspondant Jest mis @ 0. Si le bit n de - est @ 0, alors le n-i}me bit est inchang{.8SEP #- (mets @ 1 les bits d'{tat d{finihorloge du microprocesseur.#WAI (Attend une interruption) ($CB ; 1 octet)9Mets la ligne RDY en {tat bas. Attend un IRQ ou un NMI. RJP...03/92