CPC Rulez
https://cpcrulez.fr/forum/

utilisation et implantation de DAMS
https://cpcrulez.fr/forum/viewtopic.php?f=4&t=5075
Page 2 sur 5

Auteur :  Horos [ 11 Juin 2013, 02:12 ]
Sujet du message :  Re: utilisation et implantation de DAMS

Merci Syde! J'ai réussi ! Même en cas de Reset du CPC, je retrouve mon DAMS intact! et j'ai 64 Ko supplémentaires !
Je peux donc écrire des programmes en langage machine pour CPC6128 plus grands que 42 Ko ???

Par contre, je comprends pas bien à quoi sert d'affecter la chaîne "OUT &7F00,&C5:CALL &4000"
à une touche du clavier, car en cas de reboot (CALL 0), l'affectation disparaît.

[EDIT de Horos:] Je viens de comprendre: c'est utile quand on sort de DAMS par B, et non lors d'un reboot! [ok]

Pour ceux qui souhaitent le faire, avec la touche TAB, c'est comme ça :
KEY DEF 68,1,159: KEY 159,"OUT &7F00,&C5:CALL &4000"+CHR$(13)

Maintenant, ce qu'il me reste à comprendre, vu que DAMS est placé en bank,
c'est comment j'ai accès aux 42 Ko de la Ram centrale (&C0) du CPC et faire que mon code s'écrive dans la bank &C0 ?

Auteur :  shap [ 11 Juin 2013, 09:05 ]
Sujet du message :  Re: utilisation et implantation de DAMS

horos a écrit :
Maintenant, ce qu'il me reste à comprendre, vu que DAMS est placé en bank,
c'est comment j'ai accès aux 42 Ko de la Ram centrale (&C0) du CPC et faire que mon code s'écrive dans la bank &C0 ?

Pas compris, en fait la notion de RAM centrale de 42Ko c'est surtout valable pour les programmes Basic pour le langage machine, si tu n'utilises pas de vecteurs système tu t'en fous royalement.

Et pour que ton code s'assemble entre #4000 et #8000 il faut soit implanter DAMS ailleurs qu'en #4000 soit demander à DAMS d'assembler à une autre adresse que celle ou il met réellement les données assemblées, il te suffit ensuite de charger/copier ton code à la bonne adresse pour l'exécuter.

Auteur :  Hicks [ 11 Juin 2013, 09:42 ]
Sujet du message :  Re: utilisation et implantation de DAMS

@Horos: à ce stade, je pense que le mieux pour toi est de lire quelques articles sur la question.

Par exemple sur le site de Tom&Jerry (rubrique "Programmer" puis "Articles" et "La mémoire vive des CPC") :
http://tj.gpa.free.fr/

Il y a aussi bien sûr Quasar Net où tu pourras trouver pas mal de choses (orienté "pédagogique") :
http://quasar.cpcscene.com/doku.php?id=sommaire

Et le Grimware, un peu plus orienté "doc technique", mais très complet :
http://www.grimware.org/doku.php

Car nos réponses sur forum seront forcément plus rapides et moins complètes que ce que tu trouveras là !

Auteur :  Horos [ 11 Juin 2013, 10:34 ]
Sujet du message :  Re: utilisation et implantation de DAMS

@ Hicks, Shap : oui, vous avez raison. J'ai déjà 64 Ko de Ram (Vram incluse) pour commencer (+ les banks quand j'aurai tout pigé), de quoi faire pas mal de chose. Le reste viendra en pratiquant. Merci pour vos conseils et les liens! Je peux implanter DAMS tranquillou maintenant, assembler/sauver, et même utiliser P2!
Thank you guys! :)

Si d'autres ont des question sur DAMS, n'hésitez pas à les poser ici. J'essaierai de vous aider aussi.
(par exemple pour le moniteur ou l'éditeur qui est très simple à utiliser en fait)

Auteur :  hERMOL [ 12 Juin 2013, 19:34 ]
Sujet du message :  Re: utilisation et implantation de DAMS

Hicks a écrit :
Car nos réponses sur forum seront forcément plus rapides et moins complètes que ce que tu trouveras là !

notice en ligne est dispo pas la ..
https://cpcrulez.fr/search-engine.php?m= ... ice&g=Wouu
y'a aussi CPCrulez , pas mal de cours/tutoriaux , infos techniques, sources, documentations qui sont dispo dans la section coding du site --> https://cpcrulez.fr/coding.htm :postcount:

Auteur :  Horos [ 12 Juin 2013, 20:32 ]
Sujet du message :  Re: utilisation et implantation de DAMS

SyDe! a écrit :
Oui après un reboot, il te suffit d'ouvrir la bank et de faire un Call &4000 avec la commande OUT &7F00,&C5:CALL &4000
J'ai réussi! comme quoi, l'assembleur, c'est comme le vélo, ça s'oublie pas. :D

Intrigué par cette phrase de Longshot :
"Vu qu'il est tout petit, il suffit de placer DAMS dans une banque pour l'appeler via une petite routine logée en &BE80 par exemple après chaque reset sans avoir à le recharger..."

J'ai voulu tester cette astuce et y loger aussi mon code source : ça marche impec. Je retrouve DAMS et mon source en mémoire après un reset! Merci les 128 Ko.

Il suffit de mettre OUT &7F00,&C5 dans le listing BASIC du chargeur de DAMS,
ainsi que cette routine à implanter en &BE80 (mettez les Hexa dans une ligne DATA du Basic) :
Code :
ld bc,#7F00+#C5
out c(c)
call #4000
ret
En mettant votre code source en #A000 par exemple, vous le retrouverez intact, même après un reboot à chaud,
avec un simple CALL &BE80 depuis le BASIC. Pratique en cas de plantage... ou de déplombage.

Auteur :  Hicks [ 15 Juin 2013, 12:27 ]
Sujet du message :  Re: utilisation et implantation de DAMS

fano a écrit :
Tiens , j'en profite pour placer ma question à propos de DAMS (oui j'utilise DAMS sur un vrai CPC , j'ai changé :oops: ) car j'ai un petit doute.Le pavé numérique n'est pas reconnu ou c'est moi qui ait une version bugguée ?


J'ai retrouvé la version disquette de DAMS avec le pavé numérique débloqué, voir en pièce jointe.
C'était bien ce que tu cherchais ?

Auteur :  fano [ 15 Juin 2013, 13:17 ]
Sujet du message :  Re: utilisation et implantation de DAMS

Merci mon poulet , ça va sacrément me soulager :D

Auteur :  Horos [ 15 Juin 2013, 17:56 ]
Sujet du message :  Re: utilisation et implantation de DAMS

De ce que je me souviens, DAMS n'avait pas de bug avec le pavé numérique quand je l'utilisais à l'époque
(mais c'est loin tout ça, je peux me tromper). Est-ce la version mise en dsk qui était buggée pour le pavé numérique, ou bien le vrai DAMS l'a toujours été ? (car je me souviens vraiment pas de ce bug là!)

Auteur :  Horos [ 16 Juin 2013, 03:55 ]
Sujet du message :  Re: utilisation et implantation de DAMS

Hello,

Je n'ai pas pu résister à l'envie de désassembler DAMS pour voir pourquoi P2 foire dans certains cas et pas d'autres :
J'ai trouvé un bon début de piste, qui va me permettre d'écrire ma routine de sauvegarde Binaire. :)

Admettons que DAMS est placé en #4000 : (nn=#4000)
Quand vous assemblez votre programme, par exemple ORG #90BB

DAMS place cette valeur (#90BB) à l'adresse nn+47 et nn+48 : debut

l'adresse de fin de votre programme est placée en mémoire à nn+76 et nn+77 : fin

La soustraction fin - debut nous indique la longueur du programme.

Après maints essais, j'ai remarqué que DAMS n'inscrit PAS l'adresse de début en {nn+47/nn+48}
si DAMS est implanté APRES le programme! il mets alors une fausse valeur, toujours la même : F6FF
Mais il l'écrit correctement si DAMS est situé plus bas en mémoire que notre programme assemblé.

L'adresse de fin, elle {nn+76/nn+77} , est corectement écrite dans tous les cas de figure.

Donc, peu importe qu'on implante DAMS en #3E8,#1000,#2000,#3000,#4000,#5000, #6000 ou #606D,
si on place notre programme APRES DAMS, l'adresse de début sera correctement écrite à {nn+47/nn+48}


J'ai testé en implantant DAMS à 28000, et mon programme en #A500 : ça marche très bien, j'ai mon point d'entrée.
Mais quand j'assemble mon programme plus bas que DAMS en mémoire, l'adresse de début {nn+47/nn+48} est faussée à chaque fois.
D'où le bug de la commande p2...


Alors comment vais-je écrire ma routine de sauvegarde binaire ? facile! :)

J'ai remarqué que le texte du code source lui, et donc le ORG, ne change JAMAIS de place,
se trouve toujours, sans exception aucune, à nn+ 10485 + 2
mais codé en ASCII suivi d'un 0D (fin de ligne). Donc facile à récupérer !
et je vais ainsi récupérer l'adresse de début de mon programme qui me manquait :

ORG #2001=32,30,30,31,0D
ORG #100 = 31,30,30,0D
ORG #80 = 38,30,0D

Voilà, c'est bon. Comme je connais le nn qui est dans le source BASIC, j'y mets une ligne de BASIC
qui avec des Peek va aller me chercher le ORG et le traduire en hexadécimal.
Puis je fais un PEEK(nn+76)+PEEK(nn+77)*256 pour aller chercher l'adresse de fin (end of code) de notre programme assemblé.
(Je peux même savoir grâce à ça si vous avez assemblé AVANT ou APRES DAMS (nn) et en déduire si {nn+47/nn+48} existe ou pas
depuis le BASIC ! et adapter ma routine en conséquence et choisir de quelle façon je vais aller chercher le point d'entrée du programme)

Ne reste plus qu'à soustraire (fin - ORG) pour avoir la longueur du programme. Il suffit alors de faire un SAVE "prog",B,debut,longueur
J'associe cette ligne à une touche du clavier (toujours en BASIC dans le chargeur DAMS : KEY, KEY DEF).

Voilà, j'Assemble, je quitte DAMS avec B, j'appuie sur Control-S et ça sauvegarde mon binaire.
J'appuie sur une autre touche et je repars dans DAMS.


Epilogue :

Vous me direz, pourquoi je ne me suis pas contenté de mettre DAMS en mémoire basse et faire un p2 :
Et bien pour montrer à ce foutu ordinateur QUI est le boss! Non mais!!!!!!!!!!! Qui commande ? Hein ?
C'est qui le patron ? Sac à puces !!! Voilà, sois sage et t'aura un biscuit... enfin, une disquette quoi! Lol :D

Houlaa, il est tard, (tôt ?) je pars en vrille!! vite au dodo.... zzzzzzzzzz

Auteur :  fano [ 16 Juin 2013, 10:17 ]
Sujet du message :  Re: utilisation et implantation de DAMS

Quelle obstination , bravo pour tes recherches :winner:

Auteur :  hERMOL [ 17 Juin 2013, 18:37 ]
Sujet du message :  Re: utilisation et implantation de DAMS

j'ai ajouter cette version patcher sur le site, il serait également intéressant de fixé le bug de la commande p2 .. À vot' bon cœur messieurs dames...

url: https://cpcrulez.fr/applications_coding-DAMS_CC.htm#DL

Auteur :  Horos [ 18 Juin 2013, 00:20 ]
Sujet du message :  Re: utilisation et implantation de DAMS

Suite à ma découverte du point d'entrée manquant à {nn+47/nn+48} lorsque DAMS est situé plus HAUT en mémoire que le programme à assembler,
j'ai réussi à faire un patch BASIC de DAMS. (en attendant qu'on patche vraiment DAMS un jour)
Je vous avais bien dit que le BASIC est un langage génial. Il suffit de savoir l'exploiter.

En appuyant simplement sur une touche, la commande P2 fonctionnera à nouveau :

ajoutez simplement ces 5 lignes dans DAMS.BAS , puis sauvegardez DAMS.BAS
Code :
1 KEY DEF 68,1,159:KEY 159,"GOTO 1000"+CHR$(13)
1000 a$="":b$="":ad=nn+10485+1:IF PEEK(ad)=35 THEN b$="&":ad=ad+1
1010 IF PEEK(ad)<>13 THEN a$=a$+CHR$(PEEK(ad)):ad=ad+1:GOTO 1010
1020 ORG=val(b$+a$):IF ORG<0 THEN ORG=ORG+65536
1030 IF nn<ORG THEN CALL nn ELSE highbyte=int(ORG/256):POKE nn+47,ORG-(256*highbyte):POKE nn+48,highbyte:CALL nn
Assemblez votre code. tapez B pour sortir et appuyez aussitôt sur la touche TAB pour revenir immédiatement sous DAMS et faîtes P2,monprog

Voilà c'est tout !! la commande P2 fonctionne, et sauvegardera votre programme OBJET (.BIN) :winner:

Plus besoin de vous fatiguer à calculer la longueur de votre programme, ni de taper sous BASIC un SAVE "MONPROG.BIN",B,debut,longueur,
et de devoir ensuite encore taper un CALL nn pour continuer.

Comme vous le voyez, mon patch va chercher le ORG en ASCII dans le code source, vérifie s'il est en BASE 10 ou en Base 16,
et le convertit en valeur numérique. Il sait aussi détecter si vous avez assemblé votre code plus bas ou plus haut en mémoire que DAMS,
et ne Poke que si c'est nécessaire. Vous n'avez plus à vous occuper de rien. :)

Je n'ai pas besoin de calculer la longueur du programme ni de faire une sauvegarde : quand on remet le point d'entrée du programme en {nn+47/nn+48}
P2 refonctionne à nouveau et DAMS sauvegarde correctement votre BINaire exécutable.

Alors, elle est pas belle la vie ? :D

Auteur :  Horos [ 19 Juin 2013, 16:31 ]
Sujet du message :  Re: utilisation et implantation de DAMS

========================== DAMS Mode d'Emploi facile ========================

D'abord, je vous conseille de passer en HEXA : Touches CONTROL B (le moniteur l'affiche en haut à droite : Dec./Hex.)
Ainsi, quand vous désassemblez, c'est plus facile de lire les adresses en Hexadécimal.

Tout est noir, vous êtes dans le MONITEUR (c'est d'ici qu'on Assemble, qu'on charge, qu'on sauvegarde, qu'on désassemble, etc.)
Le CURSEUR est un DAMIER

Nous allons entrer dans l'EDITEUR : tapez L puis sur ENTREE
Le CURSEUR est maintenant le signe >

Si vous appuyez sur ENTREE maintenant, vous SORTEZ de l'éditeur de code source !!
et vous vous retrouvez dans le MONITEUR (le curseur est un DAMIER).

C'est pour ça que les débutants on du mal. Reprenons :

Nous allons entrer dans l'EDITEUR : taper L puis sur ENTREE (L veut dire Listing)
Le CURSEUR est maintenant le signe >
Appuyez sur la touche FLECHE vers la GAUCHE du clavier :

Le curseur devient un DAMIER (comme sous le Moniteur, mais vous êtes bien dans l'EDITEUR) :
Vous pouvez maintenant écrire la ligne de code :
- tapez toujours un ESPACE en début de ligne (SAUF quand vous voulez écrire une étiquette)
- tapez ORG #A000 puis ENTREE
- tapez ENT $ puis ENTREE

- tapez (sans espace AVANT) : DEBUT LD A,65 puis ENTREE (DEBUT est une ETIQUETTE : pas de point pour l'étiquette, ni avant ni après)
- tapez (d'abord un espace) : CALL #BB5A puis ENTREE
- tapez (d'abord un espace) : RET puis ENTREE

Si vous OUBLIEZ l'espace en début de ligne, le RET sera collé à gauche et sera une ETIQUETTE, donc FAUX!

sous l'EDITEUR, le curseur est une flèche > quand on se déplace dans le listing de BAS en HAUT,
mais c'est un damier quand on édite une ligne existante ou une nouvelle ligne.

Quand on a commencé à éditer un NOUVELLE ligne, si on veut annuler et retourner se balader dans le listing,
On Efface TOUTE la ligne avec DEL jusqu'a toucher la marge gauche, puis ENTREE

Quand vous avez fini de taper votre code source, tapez simple ENTREE : le curseur devient >

- On utilise les flèches du clavier pour MONTER et DESCENDRE dans le Code Source
- Touche Flèche vers la DROITE pour modifier la ligne
- Touche Flèche vers la GAUCHE pour INSERER une ligne en DESSOUS
- touche DELETE pour supprimmer la ligne de code sur laquelle vous vous trouvez.

- appuyez sur ENTREE pour sortir du code source :vous êtes dans le MONITEUR.
- Tapez L puis ENTREE pour revenir dans l'EDITEUR de code source : votre listing apparaît.

Il faut être dans le MONITEUR pour assembler votre code :

- tapez A puis ENTREE : voilà, c'est assemblé (D#A000 pour vérifier et désassembler la RAM)
- tapez J puis ENTREE pour exécuter votre programme : la lettre A (65 en ascii) s'affiche et vous êtes dans le MONITEUR
- tapez p monprog.s pour sauvegarder votre code source
- tapez p2monprog.bin pour sauvegarder le programme objet (.BIN exécutable)
- tapez D#A000 pour désassembler la mémoire (PAS d'espace entre D et l'adresse)
- tapez K#A000 pour afficher Hexa-Ascii (entrée, ou espace pour aller plus vite)
- tapez Q ou control C pour arrêter un désassembler, un dump Hexa-Ascii

Pour résumer :
On tape L puis ENTREE pour aller dans l'EDITEUR, touche flèche droite du clavier pour éditer les lignes de codes,
On tape ENTREE pour revenir dans le MONITEUR et Assembler, Desassembler,Sauvegarder,etc.

Tout ça paraît bien compliqué, mais si vous jouez une heure avec DAMS, vous allez voir que c'est ULTRA-SIMPLE et RAPIDE.

==========================================================================================

Auteur :  Horos [ 19 Juin 2013, 16:51 ]
Sujet du message :  Re: utilisation et implantation de DAMS

Jolie trouvaille de hERMOL : DAMS a été distribué en Angleterre sous le nom de A.D.A.M !
Ca se prononce donc A,D,A,M en anglais et non pas comme le prénom.

(car DAMS signifie "barrages" en anglais, pas très joli, d'où le changement de nom)

Image

J'ai testé le programme A.D.A.M, il est identique à DAMS (bug compris) sauf la doc traduite + le chargeur BASIC dont 2 lignes ont été traduites en anglais.

Anecdotique, mais sympa à savoir. :)

Page 2 sur 5 Le fuseau horaire est UTC+1 heure
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/