Index du forum




Un petit coup de main... Vous pouvez nous aider à mettre ce site à jour: n'hésitez pas à me contacter !!!

* Connexion   * Inscription

* FAQ
Nous sommes actuellement le 30 Nov 2025, 18:24

Index du forum » Z80 Coding

Le fuseau horaire est UTC+1 heure


copychr$ ou call &BB60

Modérateur: poulette73



Publier un nouveau sujet Répondre au sujet  Page 1 sur 1
 [ 7 message(s) ] 
  Aperçu avant impression Sujet précédent | Sujet suivant 
Auteur Message
SSX
 Sujet du message : copychr$ ou call &BB60
Message Publié : 08 Nov 2013, 22:13 
Hors-ligne
Avatar de l’utilisateur

Inscription : 02 Nov 2013, 15:50
Message(s) : 6
Bonsoir les CPCistes,

J'ai ici un petit problème que je n'arrive pas à résoudre...
Le BASIC 1.0 de nos bons vieux CPC464 ne nous permet pas d'utiliser la fonction COPYCHR$, qui n'est malheureusement disponible qu'avec le BASIC 1.1.
N'ayant pas envie de monter au grenier pour aller chercher un 6128 :oops: , j'ai essayé de trouver une alternative... que semble permettre un CALL &BB60.
Cependant, je n'arrive pas à récupérer la valeur qui est sensée être retournée.
D'après mes recherche, on devrait avoir un truc comme ça...

10 CLS
20 PRINT "Test"
30 valeur%=0
40 LOCATE 1,1
50 CALL &BB60,@valeur%
60 LOCATE 1,3
70 PRINT "Caractère lu:";CHR$(valeur%)

Mais après le CALL &BB60, valeur% vaut toujours 0...
Avez-vous une idée de ce qui pourrait manquer à mon code pour reçevoir cette valeur?

C'est la première fois que j'essaye de faire appel à une routine du vecteur système, avec passage de paramètre.

Merci d'avance pour votre lumière...

Salutations Amstradiennes,
SSX


Haut
 Profil  
 
markerror
 Sujet du message : Re: copychr$ ou call &BB60
Message Publié : 09 Nov 2013, 09:41 
Hors-ligne
VIP
VIP

Inscription : 04 Sep 2007, 19:43
Message(s) : 739
Bonjour,

Sans avoir vérifié, j'ai tendance à penser que le passage de paramètre(s) à la suite d'un CALL ne sert qu'à transmettre à une routine assembleur des données. Ce n'est pas l'équivalent d'une fonction USR(x) qu'on trouve sur d'autres Basic (MSX, VG5000 !) qui rend un résultat dans une variable.

Pour simuler un COPYCHR$, il va falloir donc aligner un peu de code machine, en utilisant effectivement le vecteur &BB60.

T&J/GPA


Haut
 Profil  
 
SSX
 Sujet du message : Re: copychr$ ou call &BB60
Message Publié : 09 Nov 2013, 12:29 
Hors-ligne
Avatar de l’utilisateur

Inscription : 02 Nov 2013, 15:50
Message(s) : 6
Merci pour ta réponse Markerror.

Je vais voir ce que je peux faire avec l'assembleur "Dr Watson" que j'ai sur cassette.
C'est le seul que j'ai sur vrai CPC.
De toutes façons, je n'ai plus de lecteur de disquettes sur mon PC actuel, donc impossible de transférer Dams ou Maxam.
Mais c'est pas grave.

Bon... il va falloir que je creuse un peu pour me faire une petite routine qui appellera &BB60 alors...
C'est ça le fun de bidouiller sur nos bonnes vieilles bécanes!

Encore merci à toi!
A+
SSX


Haut
 Profil  
 
markerror
 Sujet du message : Re: copychr$ ou call &BB60
Message Publié : 10 Nov 2013, 10:46 
Hors-ligne
VIP
VIP

Inscription : 04 Sep 2007, 19:43
Message(s) : 739
Bonjour,

Bon, finalement, j'ai jeté un oeil sur le sujet :-). Le plus simple est encore de récupérer dans une case mémoire le résultat du CALL.

ex :

CALL &BB60
LD (&BE80),A
RET

Il suffit de faire un PEEK en &BE80 et hop.

Pour mettre à jour la variable appelée, c'est finalement pas beaucoup plus compliqué. A doit avoir été initialisée et appelée en paramètre lors du CALL. Comme le résultat est compris entre 0 et 255, ça devrait marcher à tous les coups :-).

PUSH DE
CALL &BB60
POP DE
LD (DE),A
RET


Haut
 Profil  
 
SSX
 Sujet du message : Re: copychr$ ou call &BB60
Message Publié : 10 Nov 2013, 16:34 
Hors-ligne
Avatar de l’utilisateur

Inscription : 02 Nov 2013, 15:50
Message(s) : 6
Très bonne idée.
Ca va m'éviter de chercher trop longtemps... :D
En attendant, je m'étais résolu à coder sur 6128, avant de prendre le temps de regarder à la manière de procéder.

Merci Markerror!


Haut
 Profil  
 
hERMOL
 Sujet du message : Re: copychr$ ou call &BB60
Message Publié : 11 Nov 2013, 16:34 
En ligne
Site Admin
Avatar de l’utilisateur

Inscription : 20 Août 2007, 18:21
Message(s) : 5103
sinon il existe un tas d'RSX qui font ce taf -> https://cpcrulez.fr/search-engine.php?s= ... 3D%3D&z=GO

J'ai retenu UPGRADE de ROLAND WADDILOVE et Copy-Funktion ..


Haut
 Profil  
 
sPOKE
 Sujet du message : Re: copychr$ ou call &BB60
Message Publié : 07 Mars 2014, 01:01 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 08 Fév 2012, 18:19
Message(s) : 375
SSX a écrit :
50 CALL &BB60,@valeur%
Salut SSX,

Ta méthode ne pouvait pas marcher car cette routine système, en &BB60, appellée "TXT RD CHAR",
n'a pas besoin de recevoir de paramètre. Elle se borne à lire le caractère ASCII qui se trouve à l'emplacement du curseur,
et à mettre sa valeur numérique dans le registre A. Tom&Jerry t'a donc donné une routine simple et pratique pour lire ce registre depuis le BASIC.

Plusieurs RSX très bien faites existent déjà, merci à l'ami hERMOL. Sinon, tu peux aussi faire comme ça en BASIC :
Code :
10 CLS: RESTORE 30
20 FOR i=&A000 to &A007:READ a$:POKE i,VAL("&"+a$):NEXT
30 DATA CD,60,BB,32,80,BE,C9
40 LOCATE 1,1:PRINT "CPCRULEZ"
50 LOCATE 7,1:CALL &A000
60 LOCATE 1,10:PRINT CHR$(PEEK(&BE80))


Haut
 Profil  
 
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  Page 1 sur 1
 [ 7 message(s) ] 

Index du forum » Z80 Coding

Le fuseau horaire est UTC+1 heure


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 51 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Aller vers :  
Powered by phpBB® Forum Software © phpBB Group
Traduit en français par Maël Soucaze.