APPLICATIONSPROGRAMMATION ★ DAMS OVL ROM ★

D.A.M.S / DAMS / A.D.A.M / ADAMDAMSDams ConverterDams OverdriveDams OVL RROM|Overland for RAMCARDS)

Syntaxe

|ds : charge DAMS en #3e8
|ds,ad : charge DAMS en ad.
|dms & |dams : idem.

Qu'apporte cette version ROM ?

  • Pavé numérique utilisable.
  • Break inhibé (un appui malencontreux sur ESC provoquait un plantage).
  • Sauvegarde du source en bank / réinstallation chaud.

Ce dernier point mérite précisions.

Lors du développement, il est bien naturel de retrouver son source au retour du programme, pour peu que ce dernier n'ait pas corrompu toute la mémoire.
Les ceusses se forçant recharger leurs sources (voire DAMS lui-meme) ont vite abandonné la programmation Z80 au profit de la chasse en discothéque. Pire, certains se sont tournés vers les émulateurs ou autres expédiants démesurés.

D'autre part, les 64ko de base étant priviligiés, beaucoup logent DAMS en bank. Mais cela fixe une limite superflue la taille du source.

Quoiqu'il en soit, pendant l'exécution du code, pourquoi garder DAMS en mémoire quand on dispose du fichier en ROM ?

La solution de stockage proposée ici s'arrange d'une initialisation de DAMS en configuration de base (&C0).
Elle permet, au retour d'un programme, de réinstaller DAMS en mémoire. On peut ainsi récupérer l'espace occupé par DAMS pour en faire une zone de travail.

Dans un soucis de confort, les variables d'environnement (position du pointeur d'édition, chaines de recherche, etc) sont sauvegardées. C'est justement la premiére fonction de la RSX |store.

Voici les paramétres fournir :

  • A : numéro de bank supplémentaire servant la sauvegarde. (1 = #C4, 2 = #C5, 5 = #CC) ...
  • IX : adresse normale de retour, récupérer dans la pile.
  • DE : adresse d'une zone libre de 32 octets dans laquelle sera placé le code de retour. !!! Adresses #C000 #FFFF non autorisées.

On comprendra aisément que l'opération de restauration ne soit pas proposée sous forme de RSX : elle doit rester accessible meme si le firmware a été écrasé. C'est pourquoi |store place une petite routine de retour l'adresse indiquée par DE. Pour revenir sous DAMS, il suffit de sauter cette routine, quelque soit l'état de la pile et de la mémoire.
On choisira par exemple l'adresse BE80. Ainsi, en cas de reset, un CALL &BE80 réinstallera DAMS avec votre source (voir plus loin).

L'adresse de retour, charger dans IX, sert retrouver l'adresse d'implémentation de DAMS (c'est vraiment de la bidouille !).
On écrira donc en début de source :

LD hl,rsxname
CALL #bcd4 ; KL FIND COMMAND
JR nc,no_rsx
;
LD a,1 ; (ou #81, voir plus loin)
LD de,fin
POP ix
CALL #1b ; Prend en entrée C et HL renvoyés par #BCD4
no_rsx
... ; Votre ingénieux programme

fin di ; Permet d'utiliser HACKER ou MULTIFACE si
halt ; |store n'existe pas.
defs 30

rsxname defm stor
defb "e"+#80

Attention, la RSX |store présume que la connection courante des banks est &C0, et, en sortie, reconnecte en conséquence.

Ne vous étonnez pas de voir apparaitre des merdouilles l'écran, c'est au contraire le signe du bon déroulement du stockage, puisque la page #C000-#FFFF sert de tampon.

L'écriture en bank commence partir de #4000, et si seul DAMS est sauvegardé, cela prend #54 octets.

Vous noterez que tout cela ne remet absolument pas en cause l'utilisation du source avec une version de DAMS dépourvue de cette RSX supplémentaire : le code de retour ne sera tout simplement pas généré.
Votre programme fonctionnera donc sans probléme, seulement il n'y aura pas de retour DAMS.

SAUVEGARDE DU SOURCE

Forcer le bit 7 de A indique la RSX qu'il faut aussi sauvegarder le source. Il sera placé la suite des paramétres de DAMS, et éventuellement dans la bank suivante : attention ne pas vous faire surprendre quand il dépassera les #3F9C octets (sa taille est donnée par l'instruction 'x' de DAMS).

LA RESTAURATION

Dans tous les cas, le systéme est intégralement réinitialisé, réadoptant ainsi un schéma plus logique :
ce n'est pas votre programme de remettre les choses en place une fois terminé (surtout que rien ne permet de connaitre la configuration de départ), mais c'est au logiciel appelé (ici DAMS) de se placer dans les conditions qui conviennent (bon format d'écran, AMSDOS initialisé...).

Une somme de controle a été effectuée pour garantir le bon état de la sauvegarde. Si aucun message d'erreur n'apparait, tout est ok.

UTILISATION EN TEMPS QUE POINT D'ARRET

Malgré la compléte réinitialisation du systéme, l'état de TOUS les registres (lors de l'appel de la routine de retour) est conservé.
Ne me demandez pas comment, je n'en sais fichtre rien. Ah ben si, je le sais, puisque c'est moi qui l'ai fait.

Vous pouvez donc revenir DAMS n'importe quelle moment, indépendamment de l'état de la pile, soit en sautant la routine de retour, soit en ayant recopié cette derniere par un simple LDIR l'endroit souhaité.
La commande T vous donnera l'état des registres.

Attention ! Si SP a été détourné, cela ne génera pas DAMS qui utilise son propre pointeur de pile. Mais cela peut provoquer un plantage lors d'une nouvelle exécution du code, moins de recharger SP avec le classique #C000 (commande .SP,#C000).
Amis lecteurs, si vous ne voyez pas de quoi je parle, ce n'est pas grave, c'est que vous n'etes surement pas concernés.

ULTIMES REMARQUES

L'adresse d'implémentation moins 1 est stockée en AE5E, AE60, B071, B073 communiquant ainsi au BASIC le nouveau Himem. S'il est devenu trop bas pour les accés discs (MEMORY FULL), pensez aux RSX (|DIR, et |LOAD & |SAVE si vous possédez UTOPIA).

Cette version n'inclue pas l'astuce (du Nul Part System ?) consistant forcer l'adresse limite d'écriture en mémoire C000. Si de plus gros codes étaient effectivement permis, ils écrasaient alors la zone AMSDOS, provoquant généralement un plantage quand, aprés un assemblage, on enregistrait le source.
Au contraire, cette adresse limite est ici fixée au Himem systéme, afin de protéger les RSX. Pour regagner de la place, dévalidez les ROMS UTOPIA, PROTEXT...

Si vous souhaitez modifier la ROM, n'oubliez pas de mettre jour l'octet de checksum en #ffff, de telle façon ce que la somme des &4000 octets soit nulle modulo &100.

Remarque anecdotique, il y a (dans la version originale) un petit bug lorsque DAMS est exécuté pour la premiére fois : il prend soin de sauvegarder les registres (ce qui est plutot inutile, du reste), mais se fourvoie en oubliant un PUSH.

A FAIRE

  • Proposer la sauvegarde de la table des symboles.
  • Corriger petit bug graphique quand curseur moniteur en bas de page.
  • Ajouter une RSX de restauration (utile avec une MEMCARD).

CONCLUSION

La vraie solution serait de disposer d'un assembleur résidant en ROM. C'est le cas de MAXAM, mais ce dernier moult présente défauts.

Il ne s'agit ici que de bricolage, en attendant mieux.

Pour tout dire, j'ai conçu cette RSX lors du bouclage de la démo du Croco Chanel, car la mémoire commençait manquer. Si cela peut servir quelqu'un d'autre, tant mieux.

Mais sachez qu'ANA proposera un mécanisme similaire de sauvegarde / réinitialisation du systéme, en plus propre.

BURN V1.

|BURN,"nom",rom

Remplit la meme fonction que le programme "RAMCARD.BAS". Le nom de cette RSX est un clin d'oeil l'opération de programmation des vraies EPROM (on brule une ROM, dans le jargon des électroniciens - aucun rapport avec Néron).

Utilisation :

  • Activez la ROM que vous souhaitez programmer en positionnant le switch correspondant. Cette manoeuvre peut aussi etre effectuée une fois la RSX lancée.
  • Entrez la commande |BURN,"nom",rom.
  • Quand on y vous invite, placez le switch d'écriture de votre RAMCARD sur ON.
  • Attendez 0.4 secondes.
  • Placez le switch d'écriture sur OFF.
  • Vous pouvez reprendre le cours normal de vos activités.

Ce programme vérifie que la zone #4000-#8800 est bien libre, pour ne pas écraser malencontreusement des données présentes en mémoire.

madram

★ GROUPE: OVERLANDERS
★ ANNÉES: 2002 , 2004 (v1.1=2002 / v1.2 =2004)
★ CONFIG: ???
★ LANGAGE:
★ LICENCE: FREEWARE
★ AUTEUR: Madram (Yves Gerey)

★ AMSTRAD CPC ★ DOWNLOAD ★

Files:
» DAMS  OVL  v1.2DATE: 2019-03-10
DL: 29 fois
TYPE: ZIP
SIZE: 23Ko
NOTE: Uploaded by CPCLOV ; 40 Cyls
.HFE: NON

» DAMS  OVL    ROMDATE: 2002-12-02
DL: 549 fois
TYPE: ZIP
SIZE: 22Ko
NOTE:
.HFE: NON
.ROM: OUI

Je participe au site:
» Newfile(s) upload/Envoye de fichier(s)
★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Demoscene » Addams Fanz 1
» Info » Bob Adams
» Applications » Dams Overdrive
» Applications » D.A.M.S / DAMS / A.D.A.M / ADAM
» Info » Scott Adams
» Applications » DAMS (Notice)

CPCrulez[Content Management System] v8.7-desktop/cache
Page créée en 085 millisecondes et consultée 1318 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.