SNArkos by Grim/Arkos
---v1.4 [20060204]---

SNArkos est un petit utilitaire permettant de  transférer des fichiers  .SNA  de
votre PC sur votre CPC via la CPCBooster.

Prérequis:
----------

Une CPCBooster avec le dernier BIOS (update 3).
Une RAMcard ou ROMcard
AFT lancé sur le PC
(Ceux qui trouvent que ça fait beaucoup de choses, je trouve qu'ils en font bien
peu. C'est probablement lié)

Pour avoir plus d'informations sur SNArkos ou la CPCBooster, allez jeter un oeil
sur ces sites web :

http://dirtyminds.cpcscene.com
http://arkos.cpcscene.com

License: sceneLegacyWare.
Si vous avez quoique ce soit relatif à la scène (demo, discmag, crack, ...)  sur
vos vieilles disquettes, faites  en des   DSK (sur 42 pistes, avec  ReadDSK  par
exemple :) et envoyez les à grim@cpcscene.com


--------------------------------------------------------------------------------


Qu'est-ce qu'un .SNA ?
----------------------

Un  .SNA  (aussi appelé  "snapshot") est  un format  de fichier  utilisé par les
émulateurs   ou autre  outil de  developpent (createSnapshot  par exemple)  afin
de stocker l'état complet (RAM et contexte des différents circuits) d'un  CPC  à
un moment donné.

SNArkos gère correctement les différentes versions du format .SNA  (v1.0 à v3.0)
dont les spécifications sont disponible en anglais sur le site web suivant :
http://andercheran.aiind.upv.es/~amstrad/docs/snapshot.html


Comment utiliser SNArkos ?
--------------------------

Il est OBLIGATOIRE que AFT soit préalablement lancé coté PC.

-Charger un SNA sur CPC

  ùsna,"maurice.sna"
  Va charger le snapshot "maurice.sna" sur votre CPC.

  L'extension du fichier est facultative. SNArkos l'ajoutera  automatiquement si
  elle n'est pas fournie :

  ùsna,"maurice"
  Va aussi charger le snapshot "maurice.sna" sur votre CPC.



-SNArkos gère un deuxième paramètre, l'autoboot :

  ùsna,"maurice.sna",1 
  Va charger le  snapshot "maurice.sna" sur  votre CPC en  activant  l'autoboot,
  ce  qui    va  automatiser    le  chargement    de  ce    snapshot  à   chaque
  initialisation du firmware (en language commun, aprés un reset du CPC).

  Lorsque l'autoboot est activé, vous  pouvez annuler le chargement du  snapshot
  en  maintenant  la   touche CTRL   lors de   l'initialisation du   firmware ou
  désactiver l'autoboot en maintenant la touche CLR.

  Si vous  ne voyez  aucun interêt  à cette  fonctionnalité,  oubliez  la,  elle
  n'est pas nécessaire pour jouer à Bomb Jack :)



-Vous pouvez aussi appeler SNArkos sans paramètre :

  ùsna
  Recharge le dernier snapshot utilisé ("snarkos.sna" est utilisé par défaut).



-Initialisation du FDC
  Lorsque  qu'un snapshot   est  transféré  sur  le  CPC, le   FDC peut  ne  pas
  être  initialisé.  SNArkos  initialise  automatiquement   le  steprate  et  le
  headload time mais, par défaut, ne recalibre pas le FDC ce qui, dans  certains
  cas, peut  poser problème.

  ùsnafdc,"A"
  ùsnafdc,"B"

  Avec  cette  commande,   SNArkos  recalibrera  (seektrack0)  le  FDC  avant le
  transfert  du .SNA (compatible avec les lecteurs 80 pistes).



-Information sur le dernier snapshot utilisé
  Une  commande permet  d'afficher  les  informations stockées  dans  le  header
  du fichier  snapshot, c'est  à dire  la valeur  des registres  des  différents
  circuits du CPC.

  ùsnah



Si quelque chose ne va pas (nom de fichier trop long, timeout, problème avec AFT
ou la CPCBooster, ...), SNArkos s'en plaindra immédiatement.

Pendant le transfert,  si l'écran devient  rouge vif, c'est  qu'un timeout s'est
produit. Vérifiez si tout est bien connecté et re-essayez.


CrossDev
--------

SNArkos a initiallement été developpé comme un outil de cross-developpement afin
de tester rapidement une routine sur un vrai CPC en se passant des émulateurs.
Il  est donc maintenant possible d'éditer vos sources  assembleur sur PC  et  en
quelque secondes seulement, assembler (zmac), créer un snapshot (createsnapshot)
et transférer le tout sur votre CPC ! Plus besoin de s'embeter à  transférer des
fichiers ou un dsk pour effectuer un simple test.

Vous trouverez tout le nécessaire et même plus en utilisant CPCTools, disponible
sur ces sites web :

http://arkos.cpcscene.com 
http://www.ramlaid.com

Il peut  cependant être  utilisé pour  transférer rapidement  n'importe quoi  ou
presque sur le CPC sans avoir à utiliser la moindre disquette.


Informations techniques
-----------------------

SNArkos  utilise  la  RAM  embarquée  dans  la  CPCBooster  pour  y  stocker  sa
configuration (nom du fichier, options, ...) et c'est pourquoi il est nécessaire
d'avoir la dernière version du  BIOS (qui autorise la lecture/écriture de la RAM
de la CPCBooster).

-L'état du PPI n'est pas restauré.

-Le repositionnement sur la piste courante du FDC n'est pas effectuée.

-Il n'y a aucune détection materielle, vous pouvez envoyer un snapshot de  128Ko
sur un  CPC muni  de seulement  64Ko. Ca  ne fera  que planter  le CPC.  Un test
couterait de l'espace dans la ROM Arkos et est à mon avis inutile si vous  savez
utiliser l'organe situé entre vos deux oreilles.

-Les informations de synchronisation  (apparues dans la version 3 du format SNA)
ne sont pas prise en compte. L'exécution sera effectuée dès que le snapshot  est
prêt.

-Les interruptions masquable sont désactivées pendant le transfert, puis,  celon
l'état du registre IFF0, seront réactivées si nécéssaire  juste avant le  JUMP à
l'adresse indiquée par PC (le registre Z80).  Dans  le  cas ou les interruptions
sont  effectivement  réactivées,  cela implique  qu'une  interruption  aura trés
probablement lieu  juste aprés  le JUMP  et juste  avant l'éxecution  du code  à
l'adresse du JUMP.

-16 octets sont utilisés dans la RAM du CPC pour y placer la routine d'exécution
du snapshot (de &FFF0  à &FFFF). Ces octets  seront écrit  dans la  RAM celon la
configuration RAM du snapshot (c'est à dire que cela peut être dans les 64Ko  de
base ou dans les banks). Cela impose aussi une limitation : SNArkos refusera  de
charger un snapshot dont la  ROM haute est activée (sa  routine d'initialisation
du snapshot se retrouvant dans ce cas masquée par la ROM),  excluant  ainsi  les
programmes BASIC en cours d'exécution (désolé SuperSly :).

-Les chunks de données additionnelles introduit dans la version 3 du format .SNA
ne sont pour le moment pas gérés (cf note sur le chunk "CPC+").

-Les registres du AY3-8912, CRTC, GateArray et Z80 (sauf R) sont tous  restaurés
ainsi que l'intégralité de la RAM correspondant aux pages de 64Ko fourni dans le
snapshot.


Comment faire un SNA qui fonctionne bien
----------------------------------------

Configurez correctement votre émulateur ou générateur de snapshot pour créer  un
.SNA correspondant à la configuration de votre CPC (RAM et ROM principalement).

En régle  générale, il est conseillé d'avoir les interruptions désactivées  (di)
dans le snapshot et en particulier lorsque c'est le firmware qui les  prends  en
charge.


Lorsqu'il s'agit  de tester  des ruptures  ou tout  autre chose  nécessitant une
synchro trés précise,  ne faite pas  le snapshot pendant  l'exécution mais avant
(par exemple pendant l'initialisation de votre routine).

Attention au FDC ! Si vous  utilisez une routine de chargement custom,  pensez à
le recalibrer soit dans votre routine ou en utilisant la commande ùsnafdc.

Le  registre  R  du  Z80  n'étant  pas  restauré,  votre  snapshot  peut  ne pas
fonctionner  avec certaine  protection. Faite  votre snapshot  plus tard  (aprés
l'exécution de la protection).

Les vieilles  versions de  WinAPE (anterieures  à la  2.0A6) produisent  un .SNA
corrompu (les valeurs des registres CRTC sont écrites sur 16bit au lieu de 8  et
"dépassent" sur l'espace réservé aux données du PPI... bref... un gros merdier).
Utilisez la dernière version de WinAPE (ou un autre émulateur comme WinCPC).

Pour une raison encore   assez flou, le snapshot   d'un CPC en train  d'exécuter
une  routine  du  firmware  (gestionnaire  d'interruption  en  particulier)  bug
sévèrement. Cela sera  eventuellement  corrigé dans   une prochaine version mais
rien n'est sûr (SNArkos étant un outil punk, il fuck the system).


A propos du chunk "CPC+"
------------------------

Ce chunk est défini depuis la version 3 du format .SNA et permettrait de stocker
l'état  de  l'ASIC des  AmstradPlus   et donc  de  le restaurer  par   la suite.
Cependant, je n'ai trouvé  aucun émulateur  capable de gérer ce chunk et  par la
même  de produire  un fichier  .SNA l'incluant.  J'ai donc  désactivé toute   la
gestion de  ce chunk dans cette  version de SNArkos  faute d'avoir pu  la tester
(Désolé Iron, tu vas aussi devoir coder ton propre émulateur AmstradPlus :).
 

--------------------------------------------------------------------------------


Si vous en êtes  à lire cette phrase  c'est trés bien car  toute  question   sur
SNArkos  dont   la  réponse   se  trouve   dans  cette  doc  n'obtiendra  aucune
réponse serieuse de ma part :)

Merci à Antitec pour avoir dépanné plusieurs fois mes CPCBoosters :)

Bon code !

Grim/Arkos