Logicielsmoto.com

Nous sommes le 30 Jan 2023, 19:09

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 10 messages ] 
Auteur Message
MessagePosté: 08 Déc 2022, 22:11 
Hors ligne

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

Dans le cadre d'un petit challenge proposé sur internet, il est demandé de dessiner une étoile pleine avec un algorithme le plus court possible (J'ai choisi le BASIC512 et le code tient en une seule ligne basic)

Le soucis vient de la commande "LINE -(X1,X2)". Normalement, c'est sensé reprendre du dernier point "posé"

Et pourtant, quand j'écris ce code

Code:
cls:line (4,4)-(10,10)"*":line-(16,4)"*"

Ca affiche ceci (du moins dans DCMOTO avec n'importe laquelle des ROM)
Fichier(s) joint(s):
Screenshot_Line-().png
Screenshot_Line-().png [ 9.7 Kio | Vu 562 fois ]

Il y a un décalage du nouveau point de départ... Est ce normal docteur ? Est ce que le problème arrive sur les vraie machines ?

D'autant que si je mets
Code:
cls:line (4,4)-(10,10)"*":line(10,10)-(16,4)"*"

Ici ça s'affiche correctement!


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 10 Déc 2022, 19:40 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1768
Localisation: Brest
Je ne sais pas, mais vu comme ça de loin, ca fait un peu penser à un bug du dessin de lignes en mode caractère.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 13 Déc 2022, 16:11 
Hors ligne

Inscription: 24 Juil 2010, 16:08
Messages: 446
Localisation: France
Je dirais que chaque affichage de caractère fait avancer le curseur vers la position suivante (vers la droite) automatiquement. Et la ligne suivante repart de cette nouvelle position.

Je ne sais pas s'il y a moyen de désactiver le déplacement du curseur lors de l'affichage de caractères?


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 15 Déc 2022, 16:47 
Hors ligne

Inscription: 13 Juin 2005, 21:50
Messages: 290
Localisation: Planete Zorg (31)
Essaye ça LINE-(17,4)"*" ;)


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 16 Déc 2022, 12:02 
Hors ligne

Inscription: 21 Fév 2020, 11:38
Messages: 353
Je demande juste de tester ça sur une vraie machine, je soupconne un bug dans DC Moto à ce propos

Comme indiqué dans mon message, si on fait le traçage en partant des points origines (et non pas juste le racourci) on obtient le bon traçé... C'est à doire que le point origine qui est sensé être le dernier point du dernier traçé, et ici correctement calculé.


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 16 Déc 2022, 22:03 
Hors ligne
M. DCMOTO

Inscription: 06 Juin 2004, 08:23
Messages: 677
Localisation: Provence (France)
Pourquoi soupçonner dcmoto ? As-tu des indices ou des preuves ? As-tu essayé ton programme avec d'autres émulateurs ? As-tu lu et compris la réponse de PulkoMandy ?


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 17 Déc 2022, 11:06 
Hors ligne

Inscription: 13 Juin 2005, 21:50
Messages: 290
Localisation: Planete Zorg (31)
Ce n'est pas un bug de DCMOTO ou sinon tout les ordinateurs Thomson ont le même :roll:

Le fait de faire line-(16,4)"*" fait débuter l'affichage à la position du curseur non pas en x=10 mais en x=11

[edit] Correction avec les abscisses (x) et non les ordonnées (y)


Dernière édition par jasz le 26 Déc 2022, 16:50, édité 2 fois.

Haut
 Profil  
Répondre en citant le message  
MessagePosté: 21 Déc 2022, 06:57 
Hors ligne

Inscription: 21 Fév 2020, 11:38
Messages: 353
jasz a écrit:
Ce n'est pas un bug de DCMOTO ou sinon tout les ordinateurs Thomson ont le même :roll:

Le fait de faire line-(16,4)"*" fait débuter l'affichage à la position du curseur non pas en y=10 mais en y=11


Ok merci pour l'info

C'est pas top comme solution. Ca agit comme pour print ou putc des moniteur. Je pense qu'ils ont dû essayer de réduire au maximum le code dans les ROM.

Et pardon à Daniel d'avoir douté, c'est pourquoi j'avais demandé de vérifier avec une vraie machine.


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 21 Déc 2022, 07:06 
Hors ligne

Inscription: 21 Fév 2020, 11:38
Messages: 353
PulkoMandy a écrit:
Je dirais que chaque affichage de caractère fait avancer le curseur vers la position suivante (vers la droite) automatiquement. Et la ligne suivante repart de cette nouvelle position.

Je ne sais pas s'il y a moyen de désactiver le déplacement du curseur lors de l'affichage de caractères?


Oui le problème vient de là. Ca doit être lié à l'instruction "PRINT" je pense (et à PUTC en assembleur/moniteur)

C'est quand même ennuyeux quand on s'attend à un résultat qui est documenté et qu'on obtient autre chose.

Tant pis, faudra que je pense à ne plus utiliser cette particularité en mode caractère.

Par contre, je me demande quel est le résultat sur des Basic Microsoft 1.0 sur d'autres machines (MSX, C64, Amstrad, TRS80 Coco etc), je suppose qu'on a le même résultat ?... Je viens de vérifier sur les Basic d'autres machines comme Amstrad, TRS Coco, C64... Il semble que leur Basic étaient nettement moins avancé que celle des Thomson. Il faut attendre Basic 3.5 voire 7 pour C64 afin d'avoir un basic de même niveau que celui des Thomson. Et donc, dans aucun de ces Basic, on a un "line" et "Box" utilisant les chaines de caractères.

Et donc, pour en revenir au problème initial, j'ai testé en ajoutant un "?chr$(8);" ou un "locate pos-1" avant le line -(), mais rien n'y fait. Ca ne semble pas lié aux fonction de position écran finalement.


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 22 Déc 2022, 16:39 
Hors ligne

Inscription: 13 Juin 2005, 21:50
Messages: 290
Localisation: Planete Zorg (31)
Ceci fonctionne plutôt bien


Fichiers joints:
1.jpg
1.jpg [ 5.2 Kio | Vu 381 fois ]
Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 10 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 5 invités


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 à:  
Développé par phpBB® Forum Software © phpBB Group
Traduction par phpBB-fr.com