[VG5000] comment trouver la bonne vram pour les setet et seteg resolu

Cette catégorie traite de développements récents destinés à nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

Avatar de l’utilisateur
hlide
Messages : 3470
Inscription : 29 nov. 2017 10:23

Re: [VG5000] comment trouver la bonne vram pour les setet et seteg resolu

Message par hlide »

Ben je ne sais plus faire du BASIC :/
Avatar de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: [VG5000] comment convertir des decimal en hexadecimal

Message par rendomizer »

Resolu:
dectohex1.png
dectohex1.png (197.86 Kio) Consulté 4243 fois
dectohex2.png
dectohex2.png (163.73 Kio) Consulté 4243 fois
Je ne suis qu'un utilisateur pas un pro
__sam__
Messages : 7924
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [VG5000] comment trouver la bonne vram pour les setet et seteg resolu

Message par __sam__ »

Que penses tu de ceci ?

Code : Tout sélectionner

INPUT A:H$="0123456789ABCDEF":PRINT MID$(H$, INT(A/16)+1,1);MID$(H$,(A AND 15)+1,1)
Remarque: on peut utiliser MOD 16 si le AND bit a bit n'existe pas
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Avatar de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: [VG5000] comment trouver la bonne vram pour les setet et seteg resolu

Message par rendomizer »

__sam__ a écrit : 30 juil. 2020 15:11 Que penses tu de ceci ?

Code : Tout sélectionner

INPUT A:H$="0123456789ABCDEF":PRINT MID$(H$, INT(A/16)+1,1);MID$(H$,(A AND 15)+1,1)
Remarque: on peut utiliser MOD 16 si le AND bit a bit n'existe pas
wow !!! merci sam c'est du jedi ton code pour moi mais ça marche !
Je ne suis qu'un utilisateur pas un pro
__sam__
Messages : 7924
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [VG5000] comment trouver la bonne vram pour les setet et seteg resolu

Message par __sam__ »

Merci. Tu devrais regarder et essayer de comprendre comment il marche. Ca vaut le coup!

Soluce: C'est juste pareil que ton code, mais en remplaçant les "IF" par un accès à un tableau (un caractère dans une chaîne en fait).

Le challenge quand on a compris le truc est d'en faire une version pour des nombres à 4 chiffres (genre 65535), puis avec autant de chiffres que nécessaire (4095 doit utiliser 3 chiffres, 65536 quant à lui: 5) ;)
[code]
10 INPUT A:H$="0123456789ABCDEF":R$=""
20 R$=MID$(H$,A-INT(A/16)*16+1,1) + R$:A=INT(A/16):IF A<>0 THEN GOTO 20 ' Utiliser FIX si INT fait un débordement de capacité
30 PRINT R$[/code]
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
__sam__
Messages : 7924
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [VG5000] comment trouver la bonne vram pour les setet et seteg resolu

Message par __sam__ »

__sam__ a écrit : 30 juil. 2020 23:56 Merci. Tu devrais regarder et essayer de comprendre comment il marche. Ca vaut le coup!

Soluce: C'est juste pareil que ton code, mais en remplaçant les "IF" par un accès à un tableau (un caractère dans une chaîne en fait).

Le challenge quand on a compris le truc est d'en faire une version pour des nombres à 4 chiffres (genre 65535), puis avec autant de chiffres que nécessaire (15 :arrow: 1 chiffre, 255 :arrow: 2 chiffres, 4095 :arrow: 3 chiffres, 65536 quant à lui doit utiliser 5 chiffres) ;)
Soluce: [code]
10 INPUT A:H$="0123456789ABCDEF":R$=""
20 R$=MID$(H$,A-INT(A/16)*16+1,1) + R$:A=INT(A/16):IF A<>0 THEN GOTO 20 ' Utiliser FIX si INT fait un débordement de capacité
30 PRINT R$[/code]
(débrouillez vous pour trouver un moyen de la lire dans mon message si vous n'arrivez pas à la coder tout seul, non mais ca serait trop façile sinon :mrgreen: )
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Avatar de l’utilisateur
hlide
Messages : 3470
Inscription : 29 nov. 2017 10:23

Re: [VG5000] comment trouver la bonne vram pour les setet et seteg resolu

Message par hlide »

Ou le faire en 1+log2(nombre de chiffre hexa) dans l'hypothèse que ça reste un nombre compris entre 0 et 65535

Code : Tout sélectionner


10 INPUT A:GOSUB 100
...
100 H$="0123456789ABCDEF"
110 B = INT(A/256): GOSUB 120: A = A AND 255
120 B = INT(A/16): GOSUB 130: A = A AND 15
130 PRINT MID$(H$,(B AND 15)+1,1); 
121 RETURN
Non testé...

Si on place la définition de H$ initialement au début du programme, il suffirait de faire GOSUB 130 pour afficher un nibble en hexa, GOSUB 120 pour un octet, GOSUB 110 pour un mot 16-bit.
__sam__
Messages : 7924
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [VG5000] comment trouver la bonne vram pour les setet et seteg resolu

Message par __sam__ »

Ce prog marche peut-être (jai un doute car les manips entre B et A ne me semble pas homogènes), mais il a surtout un gros défaut: il affiche 0007 (4 chiffres) quand on entre 7. Or on en voudrait qu'un, pas quatre ou trois qui lui est réservé à la version britannique (on en a pour son ag[r]ent) [*]. La solution est pas loin (je la vois, mais j'ai une bonne lunette, cf mes centres d’intérêts dans mon profil), et pratiquement plus simple.
___
[*] cette blague m'a mise sur le Q :mrgreen:
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Avatar de l’utilisateur
hlide
Messages : 3470
Inscription : 29 nov. 2017 10:23

Re: [VG5000] comment trouver la bonne vram pour les setet et seteg resolu

Message par hlide »

J'aime bien que les octets soient sur deux chiffres et les mots 16-bit sur quatre, je trouve ça plus homogène pour l'indentation.

Et je déteste les programmes qui génère du C avec un tableau contenant des octets avec 1 ou deux chiffres hexa : c'est illisible et ça illustre la paresse du codeur de ne pas faire l'effort d'une indentation pour rendre lisible.
Dernière modification par hlide le 31 juil. 2020 12:26, modifié 1 fois.
__sam__
Messages : 7924
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [VG5000] comment trouver la bonne vram pour les setet et seteg resolu

Message par __sam__ »

Oui sauf que là c'est toujours 4 octets. Si on veut a tout prix une longueur paire j'ajoute un

Code : Tout sélectionner

IF (LEN(R$)AND1) THEN R$="0"+R$
dans ma soluce.

PS: En basic, du moins sur thomson, 0 s'interprète en faux. Sinon il faut faire "(EXPRESSION)<>0" et ca marche pareil.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Avatar de l’utilisateur
hlide
Messages : 3470
Inscription : 29 nov. 2017 10:23

Re: [VG5000] comment trouver la bonne vram pour les setet et seteg resolu

Message par hlide »

Oui mais là je montre une solution récursive : tu veux du 32-bit, tu rajoutes une ligne. Tu veux du 64-bit, ça fera deux lignes (mais je doute que le basic soit en mesure de le contenir parfaitement). Tu veux un affichage 1, 2, 4 ou 8 chiffres, tu appelles le bon GOSUB et le code reste mutualisé - pas optimal mais de toute façon tout ce qui est fait en BASIC n'est pas optimal, ce MID$ par exemple ne vaut pas la version en C :

Code : Tout sélectionner

"0123456789ABCDEF"[number&15]
Avatar de l’utilisateur
hlide
Messages : 3470
Inscription : 29 nov. 2017 10:23

Re: [VG5000] comment trouver la bonne vram pour les setet et seteg resolu

Message par hlide »

Et tu as raison de douter, je viens de le voir :

B = A / 256: GOSUB ... -> B = A / 16 <-------------- ce n'est pas bon. Bon je vais arrêter avec le BASIC. Je n'ai jamais vraiment aimé ce langage qui ne t'incite pas à faire de la bonne programmation. Surtout avec les GOTO <ligne> Beuuurk !
Répondre