>-------L-------!-------!-------!-------!-------!-------!-------!-----------R

CPC_T 3.0  - N{cessite  128 kb

18 Mai 2003

(Brouillon 1)  



Utilisation
___________

|CPC_T,"nom" [,"newname"]

		Si "newname" est omis, le fichier compact{ sera enregistr{ 
	avec le meme nom que le fichier source.
		Attention, la syntaxe rompt avec la logique de |REN !


		Le format "RSX" permet de lancer un compactage tout aussi 
	rapidement que s'il fallait passer par un menu et choisir un fichier 
	avec le curseur. Cependant, meme en version ROM, il ne s'agit pas 
	d'une RSX "transparente" :lanc{e avec param}tre, elle copie des 
	choses en BANK, en #BF00, puis charge le fichier en #40...
		L'abscence d'interface ne doit pas laisser croire qu'on 
	puisse retrouver ses donn{es en m{moire (source, courrier intime sous 
	Protext, ...) @ la fin du compactage.
		Cette restriction provient de mon manque de courage @ jongler 
	avec Himem, Lowmem, ... (*). De toute fa\on, pour les plus gros 
	fichier, il aurait bien fallu faire place nette. 

		CPC_T essaye plusieurs m{thodes. Cette premi}re phase n'est 
	qu'une simulation ! Les donn{es compact{es ne sont pas stock{es, car 
	rien ne garantit qu'il y aurait assez de place (le logiciel aurait pu 
	etre un peu plus intelligent, en essayant de stocker quand meme, 
	quite @ {craser au fur @ et mesure la version la moins bien compact{e 
	(*)).
		Bref, ceci explique pourquoi il faille encore attendre, une 
	fois la m{thode choisie, que le fichier soit r{ellement compact{.

(*) J'attends les facilit{s de gestion m{moire d'ANA pour introduire ce genre 
	de jonglage.

		La phase de simulationest court-circuit{e en appuyant sur 
	CONTROL au lancement de la RSX (@ moins d'etre tr}s rapide, cela 
	revient @ valider la commande en appuyant sur CONTROL + RETURN au 
	lieu de RETURN).

		L'indication "Time" fournit une approximation de la dur{ede 
	d{compactage, en milli-secondes (ou kilo-NOP !).



Emplacement du fichier compact{
_______________________________

		Le fichier est par d{faut plac{ en #40, si cela ne chevauche 
	pas la zone destination.
		Sinon, le fichier est plac{ de fa\on @ ce que la zone de 
	chevauchement soit maximale : cette fois ci, c'est possible, car tout 
	est calcul{ de fa\on @ ce que les donn{es compact{es {cras{es 
	soient celles qui ont d{j@ servi. Ainsi, charger le fichier ne 
	serait-ce qu'un octet plus bas compromet gravement le d{compactage.

		Mais ceci peut amener le fichier @ d{passer #A700, rendant 
	son chargement improbable. Dans ce cas, CPC_T propose de le placer en 
	#40 et ajoute un LDDR le copiant @ l'endroit ad{quat ({crasant 
	forc{ment A700 : si vous souhaitez r{cup{rer le lecteur actif, il 
	faudra patcher).
		Attention, la copie {crasera {ventuellement le syst}me (si la 
	zone d{passe B100). Le LDDR est pr{c{d{ d'un DI, ce qui garantit un 
	d{compactage correct. Mais si le programme d{compact{ utilise les 
	vecteurs syst}me (ne serait-ce que pour passer en MODE 2, par 
	exemple), il y a de grandes chances de plantage. Peut-etre qu'une 
	prochaine version proposera de r{tablir le syst}me.
		La zone copi{e atteindra{ventuellementC000. Dans ce cas, la 
	pile est enti}rement prise en charge : elle est momentan{ment plac{e 
	@ un endroit sur (juste apr}s la routine de d{compactage, elle-meme 
	plac{e @ la fin de la zone copi{e). Puis elle est replac{e en C000. 
	L'adresse de retour est pr{cieusement sauvegard{e (sauf si le fichier 
	d'origine avait une adresse d'ex{cution non nulle, auquel cas il n'y 
	a pas de retour mais un saut direct dans le programme). En 
	revanche, les autres mots de la pile ne sont pas conserv{s. 
		De telles finesses permettent par exemple de lancer la 
	version compact{e du fichier principal de Ghost'n'goblins sans aucune 
	intervention. On remarquera simplement que le programmeur du jeu a 
	rabot{ certaines initialisations.

		Vous pouvez sans probl}me charger votre fichier ailleurs (du 
	moment que cela respecte les contraintes de chevauchement indiqu{es), 
	il suffit de calculer la nouvelle adresse d'ex{cution ! EXCEPTION : 
	cas du fichier "auto-relog{", car les adresses du LDDR sont absolues.


La routine de d{compactage
__________________________

		Elle n'utilise pas les registres secondaires, et cohabite 
	parfaitement avec le firmware et BASIC (d'ailleurs les interruptions 
	ne sont pas coup{es).


Comparaison avec CPCT_2
_______________________

		Il n'y a plus de signature dans le fichier. Seule la routine 
	de d{compactage et la faible taille du fichier t{moigneront du doigt{ 
	d'Overlanders. 

	Methode 10 : Il s'agit du meme principe que la methode 00 (recherche 
	de chaine identique parmi les &100 derni}res donn{es d{compact{es), 
	mais impl{ment{ diff{rement : la distinction chaine / nouveau 
	caract}re ne se fait plus par un flag, mais par un octet L cod{ comme 
	suit :
	- Si L < 192, alors il s'agit d'une chaine de longueur L+3 (car les 
	chaines de longueurs 2 ne sont pas int{ressantes).
	- Si L >= 192, alors il y a L-191 nouveaux caract}res @ copier.

		Ce type de codage ne semble avantageux que lorsqu'on cherche 
	des chaines sur une plus grande fenetre - methode 12 ou 13.
		Mais les m{thodes 10 @ 13 reposent sur les memes routines, et 
	je n'ai pas jug{ n{cessaire de r{introduire la m{thode 00, car, meme 
	dans le cas o| elle serait plus efficace que la m{thode 10, elle se 
	verrait sans aucun doute surpass{ par une des autres m{thodes.

		Le gain en vitesse du compactage d{coule uniquement de 
	l'optimisation de la routine de recherche de chaine.


Remarques techniques
____________________

		Pour les m{thodes 10 @ 13 (c'{tait aussi le cas pour 
	les m{thodes 00 et 04), la routine de compactage ne trouve pas 
	forc{ment le meilleur codage possible. Illustration :

		Imaginons la s{quence AAAABCDEAAAAAA @ compacter.

(@ suivre)

		Quand une s{quence de caract}re n'est pas maximale, ce qui 
	suit est n{cessairement une chaine. A l'heure actuelle, on ne profite 
	pas de cette information, alors qu'on pourrait r{assigner les codes 
	"s{quence caract}res" @ une autre signification.  
		Remarquez, si vous le voulez, que la routine de d{compression 
	d'une telle variante serait en mesure de traiter les fichiers 
	compress{s avec la m{thode actuelle !


		Dans le meme ordre d'id{e (mais il s'agirait ici d'une 
	variante incompatible), apr}s une chaine de longueur non maximale, on 
	pourrait supposer que ce qui suit est toujours un caract}re (cela 
	dissoudrait imm{diatement la n{cessit{ de tester les 2 mani}res de 
	compresser une suite de meme valeur).
		Reste @ savoir si cela serait statistiquement int{ressant.


Pourquoi un nouvel utilitaire de compactage ?
_____________________________________________

(@ suivre)
_____________________________________

(@ suivre)   come with an integrated
Basic and all needed standart applications.
FutureSoft is working on an conversion of FutureOS for the CPCng. Other OS's
are planned. Through the integrated TCP/IP stack of the eZ80 the CPCng will be
internet ready.

The Zilog eZ80
--------------
The eZ80 can be used with a maximum of 50 MHz (at the moment). It's optimized
pipeline architecture makes a 50 MHz eZ80 as fast as a Z80 with 200 MHz. That
means that the eZ80 is four times faster than the Z80.
When using the ADL mode (ADL = ADdress Long) the eZ80 has a LINEAR address
space of 16 MB. You can use the known Z80 opcodes. Today the eZ80 is sold as
a webserver implementation, the eZ80190 webserver. It has two DMA channels, a
special interface (UART, IIC or SPI; you can choose), six PRTs (programmable
reload timers) with prescalers, 1 KB Dualport SRAM, 8 KB SRAM, a 32 bit GPIO
with interrupt support, a on-chip crystal and a debug interface (ZDI). The eZ80
contains a strongly expanded command set compared to the Z80