Discriminer de façon logicielle SHARP 1500/1500A

Ici, on fait dans le petit, le LCD qui déchire sa race, on y cause même calculatrices quand on est en manque !

Modérateur : Politburo

Répondre
MacVador
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 81
Enregistré le : 31 juil. 2017 13:54

Discriminer de façon logicielle SHARP 1500/1500A

Message par MacVador »

Bonjour,
quelqu'un at-til vu déjà publié quelque part un moyen logiciel de discriminer à coup sûr entre un SHARP 1500 et un SHARP 1500A ?
Merci par avance.
Avatar du membre
rogeroge
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4249
Enregistré le : 14 mai 2010 21:41
Localisation : Entre Nancy et Bercy : à Torcy

Re: Discriminer de façon logicielle SHARP 1500/1500A

Message par rogeroge »

Bonjour,
Venant d'un extrait de commentaire de Woodstock, ici :
viewtopic.php?f=21&t=33510
Pour être exhaustif, voici leurs différences :
...
2) Leur RAM : 1850 octets d'origine pour le 1500, 5976 (faux : 5946, merci Badaze !) pour le 1500A, plus 1023 octets accessibles par PEEK & POKE (mais ne permettant que l'exécution de programmes en langage-machine) de &7C01 à &7FFF.
...
Il faut être fou pour venir sur ce site mais encore plus fou pour ne pas y revenir !
MacVador
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 81
Enregistré le : 31 juil. 2017 13:54

Re: Discriminer de façon logicielle SHARP 1500/1500A

Message par MacVador »

Merci.
Certes cela liste les différences, mais point de bout de code pour autodéterminer la machine sur lequel il s'exécute…
Je ne vois que la partie de RAM pour LM qu'il faut tester qui dans un cas est la recopie d'une autre zone mémoire (1500) ou alors différente (1500A)
Avatar du membre
rogeroge
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4249
Enregistré le : 14 mai 2010 21:41
Localisation : Entre Nancy et Bercy : à Torcy

Re: Discriminer de façon logicielle SHARP 1500/1500A

Message par rogeroge »

Alors, il existe ce post de CGH, très complet qui devrait te fournir une réponse :
viewtopic.php?f=46&t=35147&sid=8bbe305d ... 50b6ae1573
Il faut être fou pour venir sur ce site mais encore plus fou pour ne pas y revenir !
cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2143
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: Discriminer de façon logicielle SHARP 1500/1500A

Message par cgh »

Tu peux connaitre la machine, car le PC-1500A possede une memoire "speciale" de &7C00 à &7FFF, alors que sur un PC-1500, les adresses sont recopiées entre &7800-&7BFF et &7C00-&7FFF.
L'astuce consite donc a faire un XOR &FF de l'octet à &7801. Si l'octet a &7C01 contient la meme valeur, tu es sur un PC-1500. Si elle est differente, tu es sur un PC-1500A. Il te suffira apres de refaire un XOR &FF de l'octet en &7801 pour remettre la bonne valeur. Il faut eviter l'octet &7C00 car il y a un bug dans la ROM et celui-ci peut se retrouve force a &0D.
En BASIC,
Tu peux faire:

Code : Tout sélectionner

10 A=PEEK &7801:P$=""
20 POKE &7801,(A+1) AND 255
30 IF PEEK &7C01<>PEEK &7801 LET P$="A"
40 PRINT "JE SUIS SUR UN PC-1500";P$
50 POKE &7801,A
Modifié en dernier par cgh le 28 nov. 2017 11:45, modifié 3 fois.
Il y a ceux qui voient les choses telles qu'elles sont et se demandent pourquoi, et il y a ceux qui imaginent les choses telles qu'elles pourraient être et se disent... pourquoi pas? - George Bernard Shaw
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque
MacVador
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 81
Enregistré le : 31 juil. 2017 13:54

Re: Discriminer de façon logicielle SHARP 1500/1500A

Message par MacVador »

Super, merci !
Je ne voyais en effet qu'un test sur cette zone mémoire supplémentaire comme point discriminant que tu confirmes donc…
cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2143
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: Discriminer de façon logicielle SHARP 1500/1500A

Message par cgh »

Attention, il y a une erreur a la ligne 30.
Il y a ceux qui voient les choses telles qu'elles sont et se demandent pourquoi, et il y a ceux qui imaginent les choses telles qu'elles pourraient être et se disent... pourquoi pas? - George Bernard Shaw
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque
cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2143
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: Discriminer de façon logicielle SHARP 1500/1500A

Message par cgh »

Le meme en assembleur:

Code : Tout sélectionner

40C5	68 78             LD	H,78
40C7	6A 01             LD	L,01
40C9	25                LDA	(HL)
40CA	BD FF             XOR	FF
40CC	2E                STA	(HL)
40CD	48 00             LD	B,00
40CF	4A 00             LD	C,00
40D1	A7 7C 01          CPA	(7C01)
40D4	8B 02             JR	Z,40D8
40D6	4A 41             LD	C,41
40D8	BD FF             XOR	FF
40DA	2E                STA	(HL)
40DB	FB                SCF
40DC	9A                RET
Le code est parfaitement relogeable, mais il est donne pour le debut de RAM sur PC1500/PC1500A, c'est a dire &40C5.
Faire un NEW &40DD et entrer le programme par POKE. Un fois le programme installe en RAM, faire:

Code : Tout sélectionner

A=0
CALL &40C5,A
A
Si A contient 0, nous sommes sur un PC1500, si A contient 65 ("A"), nous sommes sur un PC1500A.
Il y a ceux qui voient les choses telles qu'elles sont et se demandent pourquoi, et il y a ceux qui imaginent les choses telles qu'elles pourraient être et se disent... pourquoi pas? - George Bernard Shaw
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque
MacVador
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 81
Enregistré le : 31 juil. 2017 13:54

Re: Discriminer de façon logicielle SHARP 1500/1500A

Message par MacVador »

Dans le programme basic, je ne comprends pas très bien pourquoi tu ne te contentes pas de poker une valeur et de regarder si tu la retrouves plus loin…
Pourquoi diable ((A+1) and 255) ?
Pourquoi un XOR 255 (OK, j'ai compris pourquoi en LM) ?
La logique derrière m'échappe…
cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2143
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: Discriminer de façon logicielle SHARP 1500/1500A

Message par cgh »

MacVador a écrit : 28 nov. 2017 19:20 Dans le programme basic, je ne comprends pas très bien pourquoi tu ne te contentes pas de poker une valeur et de regarder si tu la retrouves plus loin…
Pourquoi diable ((A+1) and 255) ?
Pourquoi un XOR 255 (OK, j'ai compris pourquoi en LM) ?
La logique derrière m'échappe…
Parce que si A vaut 255, A+1 vaut 256 et donc on aura une ERROR 19 ;) Voilà.
Le but consiste à lire la valeur de l'octet, mettre une valeur differente, et verifier si celle-ci a changee. Apres on remet la valeur originale.
Il y a ceux qui voient les choses telles qu'elles sont et se demandent pourquoi, et il y a ceux qui imaginent les choses telles qu'elles pourraient être et se disent... pourquoi pas? - George Bernard Shaw
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque
MacVador
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 81
Enregistré le : 31 juil. 2017 13:54

Re: Discriminer de façon logicielle SHARP 1500/1500A

Message par MacVador »

On peut tout aussi bien faire un B = RND(255) et un POKE &7801, B du coup…
En fait, on est confronté au "problème" de l'absence de la fonction XOR en basic qui aurait permis de faire la même chose qu'en LM.
cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2143
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: Discriminer de façon logicielle SHARP 1500/1500A

Message par cgh »

MacVador a écrit : 29 nov. 2017 10:12 On peut tout aussi bien faire un B = RND(255) et un POKE &7801, B du coup…
En fait, on est confronté au "problème" de l'absence de la fonction XOR en basic qui aurait permis de faire la même chose qu'en LM.
Non, car RND pourrait generer la meme valeur. Le but est une valeur differente, mais en tenant compte de la valeur existante. Avec XOR &FF, c'est le mieux. Un (A+1) AND 255 donnera la valeur existante +1 ramenee à 0..255: 0->1, 65->66, 255->0...
Il y a ceux qui voient les choses telles qu'elles sont et se demandent pourquoi, et il y a ceux qui imaginent les choses telles qu'elles pourraient être et se disent... pourquoi pas? - George Bernard Shaw
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque
MacVador
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 81
Enregistré le : 31 juil. 2017 13:54

Re: Discriminer de façon logicielle SHARP 1500/1500A

Message par MacVador »

cgh a écrit : 29 nov. 2017 13:20
MacVador a écrit : 29 nov. 2017 10:12 On peut tout aussi bien faire un B = RND(255) et un POKE &7801, B du coup…
En fait, on est confronté au "problème" de l'absence de la fonction XOR en basic qui aurait permis de faire la même chose qu'en LM.
Non, car RND pourrait generer la meme valeur. Le but est une valeur differente, mais en tenant compte de la valeur existante. Avec XOR &FF, c'est le mieux. Un (A+1) AND 255 donnera la valeur existante +1 ramenee à 0..255: 0->1, 65->66, 255->0...
CQFD :D
Répondre

Retourner vers « Tous les Pockets »