Logicielsmoto.com

Nous sommes le 01 Mar 2024, 09:48

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 3 messages ] 
Auteur Message
MessagePosté: 02 Nov 2023, 14:08 
Hors ligne

Inscription: 21 Fév 2020, 11:38
Messages: 366
Bonjour

Dans le cadre du développement de "Scramble" sur TO8 (et à priori possiblement sur toutes les machines Thomson), j'ai 2 questions. La première est la plus importante (nécessaire pour positionner chaque vaisseau à la droite de l'écran au dessus du sol)
1/ Comment récupérer les paramètres du curseur courant dans les entrées du Moniteur en Assembleur, c'est à dire, avoir l'équivalent Assembleur des commandes Basic CSRLIN et POS ?
Dans les registres du moniteur ($6000-$60FF), je n'ai juste trouvé que le pointeur courant de l'écran (SCRPT en $605A-$605B) pour lequel je suis obligé de créer une routine pour retrouver les coordonées X et Y du curseur. A partir de ce pointeur je fais une différence (avec RAM écran), 3 fois un décalage à droite (/8) et une division entière par 40 (Via extramoniteur) et un modulo 40 (Via extramoniteur) pour retrouver ces coordonnées curseur! J'en déduis que le système ne sauvegarde pas ces 2 coordonnées là ? Et pourtant on les a en Basic... C'est sûr qu'avec un 6309 la division entière se ferait toute seule sans passer par l'Extramoniteur.
2/ J'ai vu qu'il y a un code ascii "répétition de dernier caractère"... malheureusement, c'est limité à 13 et je n'ai pas trouvé de moyen de changer cette valeur de répétition (ça m'aurait enlevé un petit bout de code assembleur)

A titre d'info, je vous livre le code assembleur que j'ai tapé pour retourner les coordonnées X et Y à partir de SCRPT
Code:
**********************************************
* Equates adresses RAM
* spécifiques aux TO
* a changer pour les MO
**********************************************
SCRPT EQU $605A Ptr adr. courant ecran
EXTRA EQU $ECOC 'Pt d'entrée Extra
RESETC EQU 0 'Pour un reset à froid
RESETW EQU 1 'Pour un reset à chaud
VALTYP EQU $6105 'Entrée Type Var
FACMO EQU $6150 'Mantisse A1 Octet1
FACLO EQU $6151 'Mantisse A1 Octet0
ARGMO EQU $615B 'Mantisse A2 Octet1
ARGLO EQU $615C 'Mantisse A2 Octet0
IMODO EQU 59 'Code Modulo Entiere
IDIVO EQU 60 'Code Div Entiere
MOVFM EQU 62 'Code FAC->X
MOVMF EQU 63 'Code X-FAC
**************************************
* Calcul curseur courant a partir du
* pointeur courant sur écran (SCRPT)
**************************************
CalCur *
 PULS A,B
 LDA #2
 STA VALTYP 'Type entier
 LDD SCRPT
 SUBD #SCREEN 'Pour TO ou MO ?
*** Division D/8 car 8 lines/carac.***
 LSRA 'Division de D par 8
 ROLB
 LSRA
 ROLB
 LSRA
 ROLB 'Fin division/8
*** Division entière /40 ***
 STD ARGMO 'Dividende (2 Octets)
 LDD #40 '40 carac/ligne
 STD FACMO 'Diviseur
 LDB #IDIVO 'Code pour Div entier
 JSR EXTRA
 LDD FACMO 'Curseur Y Courant
 ADDB #64 'Pour PUTC Curs Y
 STB CurseY
 LDD #40 '40 carac/ligne
 STD FACMO 'Diviseur
 LDB #IMODO 'Code pour Div entier
 JSR EXTRA
 LDD FACMO 'Curseur Y Courant
 ADDB #65 'Pour PUTC Curs X
 STB CurseX
 PSHS A,B
 RTS
CurseY FCB 0 'Position Curseur Y
CurseX FCB 0 'Position Curseur X


C'est sûr que la division entière par 40 prend quelques cycles d'horloges (plusieurs dizaines ?) et idem pour le modulo mais cette opération ne s'effecuera qu'à l'ajout d'un nouveau vaisseau à droite de la zone ce qui est moins gourmant que MAJ CurseY et CurseXv à chaque changement de colonne du relief (20 colonnes) toutes les 4 phases..


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 04 Nov 2023, 13:38 
Hors ligne
M. DCMOTO

Inscription: 06 Juin 2004, 08:23
Messages: 681
Localisation: Provence (France)
Ligne en $601B
Colonne en $6020


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 04 Nov 2023, 19:55 
Hors ligne

Inscription: 21 Fév 2020, 11:38
Messages: 366
Daniel Coulom a écrit:
Ligne en $601B
Colonne en $6020


Ok j'avais fait des tests basic avec ces entrées, mais ça ne me donnait pas les valeurs voulues...j'ai donc posé la question sur le forum Dans la doc il est écrit "ligne logique courante" et "Colonne logique courante"

Il y a aussi d'autres registre du pointeurs qui ne me parlent pas trop "Première ligne logique de la fenêtre", Pointeur sur le sommet logique de la table des terminateurs de ligne" etc, mais je suppose que c'est lié aux lignes affichée sur l'écran.

En fait je viens de retester mais en ajoutant un "locate" cette fois. et ça à l'air de fonctionner (avec le +1 pour le X)
Code:
LOCATE 20,21:A=PEEK(&H6020):B=PEEK(&H601B):?A;:?B 'Pointeur curseur


Bon ça signifie que le système met à jour ces valeurs à nouvelle entrée de PUTC... Faudra que je prévoie ça (MAJ position curseur) pour la version BM16 mode page....

En tous cas un grand merci Daniel!


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 3 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
cron
Développé par phpBB® Forum Software © phpBB Group
Traduction par phpBB-fr.com