Discriminer de façon logicielle SHARP 1500/1500A
Modérateur : Politburo
Discriminer de façon logicielle SHARP 1500/1500A
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.
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.
- rogeroge
- Fonctionne à 9600 bauds
- Messages : 4250
- Enregistré le : 14 mai 2010 21:41
- Localisation : Entre Nancy et Bercy : à Torcy
Re: Discriminer de façon logicielle SHARP 1500/1500A
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.
...
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 !
Re: Discriminer de façon logicielle SHARP 1500/1500A
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)
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)
- rogeroge
- Fonctionne à 9600 bauds
- Messages : 4250
- Enregistré le : 14 mai 2010 21:41
- Localisation : Entre Nancy et Bercy : à Torcy
Re: Discriminer de façon logicielle SHARP 1500/1500A
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
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 !
-
- 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
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:
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
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
Re: Discriminer de façon logicielle SHARP 1500/1500A
Super, merci !
Je ne voyais en effet qu'un test sur cette zone mémoire supplémentaire comme point discriminant que tu confirmes donc…
Je ne voyais en effet qu'un test sur cette zone mémoire supplémentaire comme point discriminant que tu confirmes donc…
-
- 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
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
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
-
- 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
Le meme en assembleur:
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:
Si A contient 0, nous sommes sur un PC1500, si A contient 65 ("A"), nous sommes sur un PC1500A.
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
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
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
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
Re: Discriminer de façon logicielle SHARP 1500/1500A
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…
Pourquoi diable ((A+1) and 255) ?
Pourquoi un XOR 255 (OK, j'ai compris pourquoi en LM) ?
La logique derrière m'échappe…
-
- 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
Parce que si A vaut 255, A+1 vaut 256 et donc on aura une ERROR 19 Voilà.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…
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
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
Re: Discriminer de façon logicielle SHARP 1500/1500A
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.
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.
-
- 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
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
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