Nouvelles commandes RSX disponnibles PC-CPC contient une nouvelle rom dévelopée spécialement qui contient plusieurs nouvelles commandes RSX ajoutées au BASIC Amstrad (si la Rompack est installée) |PACKSCR,adr_buffer,adr_longueur Permet de compacter l'écran affiché sur le cpc (adresse #C000->#FFCF). adr_buffer représente l'adresse où sera stockée l'image compactée, adr_longueur représente l'adresse où sera stockée sur 16 bits la longueur de l'image compactée. adr_longueur peut être l'adresse d'une variable basic entière (ex : @longueur%) |DEPKSCR,adr_buffer Permet de décompacter l'écran stocké à l'adresse adr_buffer. |PACKWIN,xd,yd,xa,ya,adr_buffer,adr_longueur Permet de compacter la fenêtre affichée sur le cpc en choisissant les coordonnées (xd,yd) comme point de départ et (xa,ya) comme point d'arrivée de la fenêtre. xd varie de 0 à 79 quel que soit le mode écran (xd représente la colonne de départ en octets), xa varie de 0 à 79 et doit être supérieur ou égal à xd. yd varie de 0 à 199 quel que soit le mode écran (yd représente la ligne de départ en octets), ya varie de 0 à 199 et doit être supérieur ou égal à yd. adr_buffer représente l'adresse où sera stockée la fenêtre compactée, adr_longueur représente l'adresse où sera stockée sur 16 bits la longueur de l'image compactée. adr_longueur peut être l'adresse d'une variable basic entière (ex : @longueur%) |DEPKWIN,adr_buffer Permet de décompacter la fenêtre stocké à l'adresse adr_buffer. |PACKWINDC,adr_buffer,adr_longueur Permet de compacter la fenêtre affichée sur le cpc en calculant automatiquement les coordonnées de celle-ci en fonction des points présents sur l'écran. Pour résumer, il suffit d'afficher la fenêtre que l'on veut compacter sur un écran vierge, et ce RSX calculera automatiquement les coordonnées. Le format de la fenêtre compactée est le même qu'avec l'instruction |PACKWIN. adr_buffer représente l'adresse où sera stockée l'image compactée, adr_longueur représente l'adresse où sera stockée sur 16 bits la longueur de l'image compactée. adr_longueur peut être l'adresse d'une variable basic entière (ex : @longueur%) |PACKWINDIFF,adr_buffer,adr_diff,adr_longueur Permet de compacter la fenêtre affichée sur le cpc en calculant automatiquement les coordonnées de celle-ci en fonction des différences entre l'image affichée à l'écran et l'image située à l'adresse adr_diff. Le format de la fenêtre compactée est le même qu'avec l'instruction |PACKWIN. adr_buffer représente l'adresse où sera stockée l'image compactée, adr_dif représente l'adrfesse de l'image sur laquelle effectuer les différences, adr_longueur représente l'adresse où sera stockée sur 16 bits la longueur de l'image compactée. adr_longueur peut être l'adresse d'une variable basic entière (ex : @longueur%) |INITBUFFDIFF,adr_buffer Permet d'initialiser le buffer des différences inter-images. Ceci permet, lors du premier appel de |PACKWINDIFF, d'avoir un buffer initialisé avec un écran par défaut. En général, on pourra faire : MODE 1:|INITBUFFDIFF,&C000 |PACKBUFF,adr_source,longueur,adr_dest,adr_longueur Permet de compacter une zone mémoire d'adresse et de longueur déterminée vers une zone de destination. adr_source représente l'adresse de la zone mémoire à compacter, longueur représente la longueur de la zone mémoire à compacter, adr_dest représente l'adresse de la zone de destination (qui contiendra les données compactées) adr_longueur représente l'adresse où sera stockée sur 16 bits la longueur de l'image compactée. adr_longueur peut être l'adresse d'une variable basic entière (ex : @longueur%) |DEPKBUFF,adr_source,adr_dest,adr_longueur Permet de décompacter la zone mémoire stocké à l'adresse adr_source vers adr_dest. adr_longueur représente l'adresse où sera stockée sur 16 bits la longueur de la zone décompactée. adr_longueur peut être l'adresse d'une variable basic entière (ex : @longueur%) |CONVERTBITMAP,"nom_image"[,"paramètres"] Permet de convertir une image bitmap (.BMP) depuis son emplacement sur le disque dur du PC et de l'afficher à l'écran du cpc (dans la mémoire vidéo) convertie avec le mode courant. "nom_image" est une chaine de caractères ou une variable alphanumérique contenant le nom et le chemin complet de l'image source (par exemple: "C:\WINNT\WINNT256.BMP" (sur cpc azerty, le '\' est remplacé par 'ç') Les paramètres doivent être mis dans une chaine de caractères, séparés par des espaces, exemple : "-T1 -X2" Les paramètres sont : -Bnnn valeur de la composante bleue (en %) -L bloquer la palette (utiliser les valeurs courantes) -Pnnn pourcentage de tramage (en %) -Rnnn valeur de la composante rouge (en %) -Tnnn type de trame (de 0 à 3, 0=rien) -Vnnn valeur de la composante verte (en %) -Xnnn type de matrice de tramage (2 ou 3) -A mode "transparent" : les points en couleur 0 ne sont pas affichés -DXnnn Déplacement en X de l'image de nnn points -DYnnn Déplacement en Y de l'image de nnn points |CONVLIGNE,Etat,ModeAdresse Permet de charger l'état de conversion des donnéées mémoire écran vers les fenêtres pour compactage : si Etat=0, la conversion sera effectuée par colonnes (mode par défaut) sinon, la conversion sera effectuée par lignes (plus rapide, mais moins efficace à la compression.). Si ModeAdresse=0, les coordonnées XD,YD,XA,YA seront stockées au début des données de la fenêtre (mode par défaut), sinon, l'adresse écran (2 octets), le nombre de lignes et le nombre de colonnes seront stockées. |SAUVEBITMAP,"NomFic" Pemet de sauvegarder l'image courante (à l'écran de l'émulateur) dans un fichier au format BMP. |TURBOON Permet d'activer le mode turbo. (Equivalent touche F1 (toggle)) |TURBOOFF Permet de désactiver le mode turbo. (Equivalent touche F1 (toggle)) |READSNAP,"NomFicSna" Permet de lire un fichier snapshot. (Equivalent touche F4) |SAVESNAP,"NomFicSna" Permet de sauvegarder un fichier snapshot. (Equivalent touche F5) |DEBUGON Permet d'activer le mode debug. (Equivalent touche F6) |SETDSKFILE,"NomFicDsk" Permet de choisir un fichier .DSK à utiliser. (Equivalent touche F7) |SAVEAVI,"NomFicAvi" Permet de démarrer l'enregistrement de l'écran d'émulation dans un fichier avi. (Equivalent touches SHIFT+F11) |ENDAVI Permet d'arrêter l'enregistrement du fichier avi. (Equivalent touches SHIFT+F11) |SAVEYM,NomFicYM Permet de démarrer l'enregistrement de la sortie sonore dans un fichier au format YM5. (Equivalent touches SHIFT+F5) |ENDYM Permet d'arrêter l'enregistrement du fichier YM. (Equivalent touches SHIFT+F5) |SETDIRECTDIR,"Directory" Permet de choisir le répertoire vers lequel seront dirigés les accès disques. (accès direct à un répertoire, équivalent touche F12) |SETNEWDISC,Etat Permet de modifier l'etat des acces disques (si Etat = 1, accède au disque dur du PC comme média de lecture/écriture, si Etat = 0, accède aux fichiers DSK comme média de lecture/écriture) |SYMBVIDOPEN,NomFic Permet d'ouvrir un fichier au format VID (format vidéo de SymbOs) |SYMBVIDREAD,adr Permet de lire à l'adresse adr la trame en cours du fichier VID ouvert, et passe le pointeur de fichier à la trame suivante |SYMBVIDPLAY Equivalent à |SYMBVIDREAD, mais affiche directement la trame à partir de l'adresse #C000, passe le pointeur de fichier à la trame suivante (comme |SYMBVIDREAD) |SYMBVIDCLOSE Ferme le fichier VID ouvert. |ASSEMBLE,"NomFicAsm" Permet d'assembler le fichier "NomFicAsm". Certains OP-CODE Z80 ont étés redéfinis pour pouvoir utiliser directement ces nouvelles fonctionnalités en assembleur, sans la ROM-PACK : ED 01 : équivalent de |PACKSCR, avec en entrée : HL = adresse du buffer de compactage IX = adresse contenant la longueur compactée Aucun registre n'est modifié au retour. ED 02 : équivalent de |PACKWIN, avec en entrée : E = xd D = yd C = xa B = ya HL = adresse du buffer de compactage IX = adresse contenant la longueur compactée Aucun registre n'est modifié au retour. ED 03 : équivalent de |DEPKSCR, avec en entrée: HL = adresse du buffer des données compactées Aucun registre n'est modifié au retour. ED 04 : équivalent de |DEPKWIN, avec en entrée: HL = adresse du buffer des données compactées Aucun registre n'est modifié au retour. ED 05 : équivalent de |PACKWINDC, avec en entrée: HL = adresse du buffer de compactage IX = adresse contenant la longueur compactée Aucun registre n'est modifié au retour. ED 06 : équivalent de |PACKBUFF, avec en entrée: HL = adresse de la zone à compacter (source) DE = adresse de la zone destination BC = longueur de la zone à compacter. IX = adresse contenant la longueur compactée Aucun registre n'est modifié au retour. ED 07 : équivalent de |DEPKBUFF, avec en entrée: HL = adresse de la zone source (zone compactée) DE = adresse de la zone destination IX = adresse contenant la longueur décompactée Aucun registre n'est modifié au retour. ED 08 : équivalent de |PACKWINDIFF, avec en entrée: HL = adresse du buffer de compactage DE = adresse du buffer écran pour comparaison des différences IX = adresse contenant la longueur compactée Aucun registre n'est modifié au retour. ED 09 : équivalent de |INITBUFFDIFF, avec en entrée: HL = adresse du buffer d'initialisation Aucun registre n'est modifié au retour. ED 0A : équivalent de |CONVERTBITMAP, avec en entrée: HL = Pointeur vers nom du fichier BMP B = Longueur nom fichier BMP DE = Pointeur vers chaine contenant les arguments C = Longueur chaine contenant les arguments Aucun registre n'est modifié au retour. ED 0B : équivalent de |CONVLIGNE, avec en entrée: A = Etat B = ModeAdresse Aucun registre n'est modifié au retour. ED 0C : équivalent de |SAUVEBITMAP, avec en entrée: HL = Pointeur vers nom du fichier BMP B = Longueur nom fichier BMP Aucun registre n'est modifié au retour. ED 0D : équivalent de |TURBOON ou de |TURBOOFF, avec en entrée: A = mode turbo (0 = OFF, sinon ON) Aucun registre n'est modifié au retour. ED 0E : équivalent de |READSNAP, avec en entrée: HL = Pointeur vers nom du fichier SNA B = Longueur nom fichier SNA Aucun registre n'est modifié au retour. ED 0F : équivalent de |SAVESNAP, avec en entrée: HL = Pointeur vers nom du fichier SNA B = Longueur nom fichier SNA Aucun registre n'est modifié au retour. ED 10 : équivalent de |DEBUGON Aucun registre n'est modifié au retour. ED 11 : équivalent de |SETDSKFILE, avec en entrée: HL = Pointeur vers nom du fichier DSK B = Longueur nom fichier DSK Aucun registre n'est modifié au retour. ED 12 : équivalent de |SAVEAVI, avec en entrée: HL = Pointeur vers nom du fichier AVI B = Longueur nom fichier AVI Aucun registre n'est modifié au retour. ED 13 : équivalent de |ENDAVI Aucun registre n'est modifié au retour. ED 14 : équivalent de |SAVEYM, avec en entrée: HL = Pointeur vers nom du fichier YM B = Longueur nom fichier YM Aucun registre n'est modifié au retour. ED 15 : équivalent de |ENDYM Aucun registre n'est modifié au retour. ED 16 : équivalent de |SETDIRECTDIR, avec en entrée: HL = Pointeur vers chemin complet B = Longueur chemin complet Aucun registre n'est modifié au retour. ED 17 : équivalent de |SYMBVIDOPEN, avec en entrée : HL = Pointeur vers chemin complet B = Longueur chemin complet ED 18 : équivalent de |SYMBVIDREAD, avec en entrée : HL = adresse du buffer vers lequel lire la trame en cours. ED 19 : équivalent de |SYMBVIDPLAY HL modifié en sortie (invalide) FLAG Z indique si erreur fichier (Z=1) ou lecture OK (Z=0) ED 1A : équivalent de |SYMBVIDCLOSE HL modifié en sortie (invalide) FLAG Z indique si fichier pas ouvert (Z=1) ou fermeture OK (Z=0) ED_1B : équivalent de |PROFILESTART Aucun registre n'est modifié au retour. ED_1C : équivalent de |PROFILESTOP * Exemple : Compactage d'un écran : Aucun registre n'est modifié au retour. ED_1D : équivalent de |SETNEWDISC, avec en entrée : A = mode newdisc (0=off, 1=on) Aucun registre n'est modifié au retour. ED_1E : équivalent de |DRAWCADREWIN, avec en entrée : B = x départ cadre (en octet mémoire vidéo) C = y départ cadre (en octet mémoire vidéo) D = x arrivée cadre (en octet mémoire vidéo) E = y arrivée cadre (en octet mémoire vidéo) Aucun registre n'est modifié au retour. ED_1F : équivalent de |ASSEMBLE, avec en entrée : HL = Pointeur vers chemin complet B = Longueur chemin complet * Exemple : Compactage d'un écran BUFFER EQU #4000 LD HL,BUFFER LD IX,TAILLE DB #ED,#01 RET TAILLE DW 0 * Exemple : Décompactage d'un écran BUFFER EQU #4000 LD HL,BUFFER DB #ED,#03 RET Il existe également un source assembleur Z80 des routines de décompactage, donc utilisable sur un vrai CPC. (Me contacter pour l'obtenir)