TP-TOOLS v0.2 By Nemo (2020)
============================
1. Introduction
---------------
Cette version 0.2 et sa documentation associee sont provisoires.
L'objectif est une v1.0 qui sera completee avec d'autres procedures et unites.
TP-Tools (Turbo Pascal Tools) est une bibliotheque d'unites thematiques pour
developper en Turbo Pascal v3 (Borland) sous CPM+ (Digital Research) avec les
ordinateurs Amstrad CPC6128 et CPC6128+.
TP-Tools v0.2 est organise en 4 unites :
- UGraph.inc : Gestion des graphismes
- USound.inc : Gestion du son
- UKBoard.inc: Gestion clavier/Joystick
- UAsic.inc : Gestion de l'Asic du CPC+
D'autres unites seront ajoutes en v1 (UCrt, USprite ...)
2. Convention de nommage
------------------------
Les procedures et fonctions sont generalement nommees par groupe de 3 lettres
representant des mots anglais comme suit :
a/ Les trois premieres lettres correspondent a un verbe :
Set : Get : Dsp : Display (Affiche)
Hid : Hide (cache) Ini : Initialize Drw : Draw (Trace)
Mov : Move (Deplace) Rmv : Remove (Enleve) Enc : Encode
Tst : Test Dlk : Delock Opn : Open
Clo : Close Spl : Split
b/ Les groupes de trois lettres suivantes correspondent a des mots :
Txt : Text Cur : Cursor Pap : Paper
Pen : Pen (Stylo) Gra : Graphic Ink : Ink (encre)
Bdr : Border Scr : Screen Ver : Vertical
Hor : Horizontal Adr : Address (Adresse) Abs : Absolute
Scr : Screen Org : Origin Rel : Relative
Pnt : Point Msk : Mask Lin : Line
Rec : Rectangle Mod : Mode Pal : Palette
Win : Windows Env : Enveloppe Vol : Volume
Ton : Tone Chn : Channel Snd : Sound
Chr : Char Key : Hlt : Halt
JoyA: JoystickA JoyB: JoyStickB Asic:
Spr : Sprite Evr : Every Aft : After
Par exemple, HidTxtCur : Hide Text Cursor
3. Description rapide des unites
--------------------------------
Attention : le TP3 ne gere pas les unites (UNIT / USE) au sens des versions
ulterieures de Turbo Pascal. Ce qu'on appelle ici "unites" sont en fait des
bibliotheques de type "include" qui sont recompiles a chaque fois qu'elles
sont utilisees (voir la doc de TP3 facilement trouvable en ligne)
a/ UGraph.inc
Cette unite reprend essentiellement les fonctions du firmware des Amstrad
CPC. Tout cela est tres bien documente dans le "Firmware guide...
Contrairement C l'AMSDOS, la memoire video sous CPM+ est placee a
l'adresse &4000. De plus elle se trouve dans la configuration memoire c1,
alors que le TPA (la zone ou le Turbo Pascal fonctionne) est en configuration
memoire c2. Noter que dans le CPM+ la configuration memoire c1 est appelle
Bank 0 et la la configuration memoire c2 est appelee Bank 1.
Il n'y pas grand chose a ajouter. Soyez cependant vigilant sur un point :
certaines procedures ou fonctions utilisent les coordonnees graphique de
type (600x400), d'autre des coordonnees physique qui dependent de mode
graphique en cours. Cf Firmware
Cette unite integre aussi une prodecure permettant de copier des blocs
memoire entre les "banks memoire" du CPM+
b/ Usound.inc
Cette unite aussi reprend les fonctions du firmware. Elles sont tres
puissantes (voir les exemples) mais egalement un peu compliquees a
comprendre et utiliser. Un utilitaire devrait etre prochainement
disponible pour creer des sons et produire le code Pascal associe
c/ UKBoard.inc
Le firmware toujours et encore ...
d/ UAsic.inc
ATTENTION : Cette unite ne fonctionne qu'avec un CPC+ ! L'utiliser
sur un CPC "old" entrainera un plantage direct.
Cette unite permet de gerer tres facilement les specificite du CPC+
et en particulier la gestion des sprites Hard.
Elle sera completee ulterieurement pour la gestion des scrolls
horizontaux et verticaux.
Quand vous utilisez cette unite gardez bien en tete que entre les
instructions OpnAsic (open Asic) et CloAsic (CloAsic), la memoire
entre les adresses &4000 et &7fff est celle de l'ASIC et qu'elle
remplace la memoire de la Bank 1...
Cela peut poser des probemes. La facon la plus simple de les
contourner de compiler le code Pascal au dessus l'adresse &8000
(Touche "S" dans les options de compilation), ou en dessous de &4000
(Touche "E" dans les options de compilation)
Il y a d'autres facon plus subtiles de faire pour mieux utiliser
la memoire mais elles sont plus complexes. Vous pouvez par exemple
utiliser cette zone pour stocker des datas avec la commande
ABSOLUTE du TP mais charge a vous de n'y acceder que quand cette
zone memoire est "visible". Il n'est pas non plus impossible d'y
stocker du code Pascal mais il faut verifier l'adresse des procedures
et fonctions (Addr(procedure)), et ne pas y acceder si elles sont pour tout
ou partie entre &4000 et &8000 quand l'Asic est "ouvert".
4. Utilitaire
-------------
Le programme Inline (ecrit Pascal), permet de generer un fichier pour integrer
des structures inline dans un source Pascal.
Taper Inline en CP/M pour aficher la syntaxe.
Un utilitaire pour "dessiner" et combiner des sons devrait être dispo par la suite
Un utilitaire pour optimiser et réduire la taille du code doit suivre aussi. En effet contrairement
au TP4 et suivant le TP3 n'a pas d'optimiseur integre. Une procedure décrite dans une bibliotheque
sera dans le .com final même si elle n'est pas utilisee. On peu gerer ca a la main, mais autant
l'automatiser. Soyons intelligemment faineant ;D
5. Tutoriel video
-----------------
Vous pouvez trouver des tutoriels video sur YouTube et des explications dans
le forum de https://CPCRulez.fr
Voila voila en attendant la v1 ;D