Satanas * Amstrad & cpc 34 - juin 1989
-------
CPC 464 / 6128
Jerome Alet
Ce programme est un moniteur destine aux programmeurs en langage machine et aux
bidouilleurs invertebres comme votre serviteur. Pour des raisons evidentes de
rapidite et de faible encombrement dans mes etroits 64ko, il est 100% en
assembleur.
Note de T&J : ce programme ne fonctionne qu'avec des cassettes. Une version
disquette existe, et propose des fonctions supplementaires
(desassembleur... ).
Attention : il est place tres haut en memoire, donc les caracteresde 240 a 255
ne sont pas disponibles. Lorsque vous avez la main sous Basic, evitez une
redefinition de SYMBOL.
L'acces a une option se fait en appuyant sur la premiere lettre de son nom. Une
options en cours est symbolisee par une bordure rouge vif. L'acces au menu est
symbolise par une bordure noire. Chaque valeur necessaire au programme doit lui
etre fournie en hexadecimal sans prefixe et avec tous les chiffres (significa-
tifs ou non) mais sans valider par <ENTER>. Le reset complet par CTRL/SHIFT/ESC
est inhibe. Bon allez, arretez de baver, voici la liste et les explications des
differentes options.
* MONITEUR :
Demande si l'on desire une sortie sur imprimante ou non, une adresse de depart
et l'etat ROM/RAM si necessaire. Affiche l'adresse courante suivie des 13 (8
pour l'imprimante 40 colonnes) octets suivants puis les valeurs ASCII de ces
octets. Ces valeurs ascii sont :
- diminuees de &7F si superieures a &7F
Pour imprimantes :
- Remplacees par "." si inferieures a &20.
- le caractere &7F est remplace par le caractere &7F
<ENTER> ramene au menu.
Une autre touche augmente l'adresse courante de &0D et recommance.
* FILL :
Demande un depart, une longueur non nulle, et une valeur entre &00 et &FF.
Remplit la zone memoire entre depart et depart+longueur avec la valeur
specifiee.
* TRANSFERT :
Demande un depart, une longueur non nulle, et un nouveau depart. Transfere la
zone memoire etre depart et depart+longueur a la zone memoire entre nouveau
depart et nouveau depart+memoire.
* SAISIE :
Demande une sequence de valeurs entre 0 et 255 octets que l'on desire
rechercher en RAM par l'option suivante :
- Exemple :
* vous cherchez le mot CPC dans un programme.
Taper 43 50 43 <ENTER>
* vous cherchez l'instruction CALL &BB06
Taper CD 06 BB <ENTER>
<ENTER> ramene au menu.
* RECHERCHE :
Demande si l'on veut une sortie sur imprimante ou non et une adresse de depart
ou doit commencer la recherche.
Recherche les octets saisis par l'option ci-dessus et affiche les adresses ou
se trouvent des sequences identiques a celle saisie.
Quand "Rien trouve." s'affiche n'importe quelle touche ramene au menu.
* POKER :
Demande un depart.
Affiche l'adresse courante et la valeur pokee a cette adresse.
Demande une nouvelle valeur a poker a cette adresse.
ENTER ramene au menu sinon l'adresse courante est incrementee et on continue.
* SAUVER :
Demande un nom de fichier, les caracteres obtenus par CTRL sont autorises et ce
nom est facultatif sur K7 (ENTER), une adresse de depart, une longueur, une
adresse d'entree, et un type de fichiers (4 possibles).
Sauve la zone ainsi definie sur K7.
ESC ramene au menu durant la sauvegarde.
* CHARGER :
Demande un nom de fichier (comme pour SAUVER).
Charge un fichier en memoire.
ESC ramene au menu durant le chargement.
Affiche l'adresse de depart, la longueur, et l'adresse d'entree du programme
charge des la fin du premier BLOCK, attention a ne pas ecraser SATANAS : si
vous avez des doutes, tapez ESC.
* Q :
Retourne au BASIC si l'on a charge SATANAS par :
MEMORY &A568
LOAD"SATANAS"
CALL &AB67
Un retour a SATANAS est alors possible par le point du pave numerique (pour
464 et 6128 car je n'ai pu trouver l'adresse de redefinition de cette touche
sur 664 mais vous pouvez taper CALL &AB67).
Fait un reset complet si l'on a charge SATANAS par RUN"SATANAS".
Le programme SATANAS BASIC est le chargeur Basic complet avec DATA et
checksum. Il va poker en memoire le programme SATANAS et faire les
adaptations pour CPC 6128, CP C664, et imprimante 40 colonnes car SATANAS est
prevu pour CPC 464 et imprimante 80 colonnes.
* pour CPC 6128 : l'adresse de definition du point du pave numerique (touche
138), soit &B5A4, est pokee sous le format octet faible suivi d'octet fort
aux adresses &ABC7 et &ABC8.
* pour CPC 664 : je n'ai pas trouve cette adresse mais SATANAS BASIC propose,
si vous la connaissez, de faire les modifications necessaires.
* Pour imprimante 40 colonnes : le nombre &08 est poke aux adresses &A9C9 et
A9DD. Ce nombre est le maximum d'octets pouvant etre imprimes sur une ligne
de 40 colonnes par l'option Moniteur. Par defaut, ce nombre est &0D pour
imprimante 80 colonnes : ce n'est pas plus car j'ai choisi d'avoir le
menu constamment sous les yeux donc une fenetre empeche d'afficher le
maximum possible.
Enfin, ce programme propose une sauvegarde du code objet ainsi obtenu sous
le doux nom de SATANAS. Apres cette sauvegarde, le programme SATANAS BASIC
devient inutile alors je vous offre une petite demo, bande de petits
veinard : (?)
CALL &AB67
F
0040
A500
00
Q
LIST
Etonnant, non ?
PS : Si vous vous trompez durant une saisie quelconque ENTER ramene au menu.