Pensee de PC - Sharp PC-1500/A et Tandy PC-2

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
cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2347
Inscription : 30 août 2011 12:23
Localisation : Vous êtes ici -> .
Contact :

Pensee de PC - Sharp PC-1500/A et Tandy PC-2

Message par cgh » 07 mai 2013 19:31

Suite a de nombreux posts ces derniers jours concernant le PC-1500/PC-2, je vous propose de rouvrir les rubriques "Calculatrucs Programmastuces", "Pensee de PC", "Les Ragots du Casio" du prestigieux et irremplacable Ordinateur Individuel.

Le premier fil de cette rubrique concerne le Sharp PC-1500/A et le Tandy PC-2, ma machine de predilection.
A noter que le PC-1500 et le PC-2 etant identiques (sauf sur le look) tout ce qui concerne le PC-1500 s'applique au PC-2. Mais le PC-1500A, a cause de son implentation memoire differente, peut changer certaines informations ou valeurs et donc cela sera signaler.
J'ai compile ci-apres un certain nombre de posts auxquels j'ai participe. Toutes ces astuces sont basees sur mon experience personnelle. Elles ont fait leur preuve depuis 30 ans, mais il y a en surement d'autres et certainement meilleures.


Reset materiel du PC-1500/PC-2

Le PC-1500 est pourvu d'un bouton RESET au dos. Un appui plus ou moins long avec une pointe de stylo permet de reprendre la main en cas de plantage; c'est un RESET materiel. En appuyant en meme temps sur la touche ON, on obtient une remise a zero complete de la machine.
Oui, mais non ! Par experience ceci fonctionne bien a condition de ne pas avoir de module memoire installe. J'ai constate que le RESET materiel pouvait laisser la machine dans un etat impropre. Le mieux est d'enlever le module avant de provoquer ce RESET (attention a bien eteindre le PC avant le retrait du module).
Par contre, il a permis dans tous les cas de plantages de reprendre la main. Effet de bord: l'integrite des donnees presentes en memoire n'est pas garantie.


Reset soft du PC-1500/PC-2

Le RESET soft se fait par un call au vecteur de RESET (&FFFE), et a pour effet de remettre le PC dans etat connu, de recalculer la memoire et de reinitialiser tous les pointeurs et les vecteurs de derivation. Il est aussi beaucoup moins violent qu'un RESET materiel, et a toujours fonctionne apres l'insertion ou le retrait d'un module. Je vous conseille de l'utiliser lors de ces dernieres operations. Pour provoquer le RESET soft, il suffit de taper

Code : Tout sélectionner

CALL &E000
Vous allez obtenir le message NEW0? :CHECK. Faites un shift CA pour effacer l'ecran et terminer l'initialisation.
Attention. Si les pointeurs RAM sont recalcules correctement, les valeurs renvoyees par MEM ou STATUS n peuvent etre fausses, tant que le NEW 0 n'est pas effectue, car ce sont les valeurs des bornes (&7863 et &7864) qui sont recalculees.
La taille memoire totale est renvoyee par

Code : Tout sélectionner

(PEEK &7864 - PEEK &7863) * 256
Si vous n'obtenez pas le nombre attendu, verifier que votre module n'est pas protege en ecriture (CE-159/161/163).
Si vous faites un NEW 0 en mode PRO, vous allez reinitialiser les pointeurs du BASIC et dans ce cas MEM vous donnera la bonne valeur.

Code : Tout sélectionner

&7863 : Poids fort du bas de la RAM.
&7864 : Poids fort + 1 du haut de la RAM.
&7865/66 : Adresse de debut de la zone BASIC. Par defaut, c'est le debut (bas) de la RAM + &C5 (197 octets pour la memoire RESERVE)
&7867/68 : Fin du programme BASIC. Apres un NEW, cette adresse est la meme que celle en &7865/66.
&7869/6A : Pointeur de debut de merge, utilise par l'ordre MERGE. Apres un NEW, cette adresse est la meme que celle en &7865/66.
&7899/9A : Adresse des variables dynamiques et des tableaux. Apres un NEW ou un CLEAR, c'est la fin (haut) de la RAM.
Pour un PC-1500 sans module, on aura apres le soft RESET et le NEW 0:
  • &7863 = &40 (64 en decimal)
  • &7864 = &48 (72 en decimal)
  • &7865/66 = &40C5
  • &7867/68 = &40C5
  • &7869/6A = &40C5
  • &7899/9A = &4800
La memoire du PC-1500 va de &4000 a &47FF, soit 2Ko. Moins 197 octets de mode RESERVE - 1 octet de fin de programme = 1850.
La memoire RAM valide s'etend ainsi de (PEEK &7863)*256 jusqu'a (PEEK &7864)*256 - 1.

Ci-dessous les adresses en fonctions des modules et des modeles.

Code : Tout sélectionner

             PC-1500          PC-1500A
Base         &4000 .. &47FF   &4000 .. &57FF
CE-151       &4000 .. &57FF   &4000 .. &67FF
CE-155       &3800 .. &5FFF   &3800 .. &6FFF
CE-159       &2000 .. &47FF   &2000 .. &57FF
CE-161/163   &0000 .. &47FF   &0000 .. &57FF

Remise de la RAM a zero

Les deux routines ci-dessous, detruisent entierement le contenu de la RAM en mettant la valeur 0 a toutes les adresses valides.
La premiere s'adapte en fonction de la RAM effectivement trouvee:

Code : Tout sélectionner

POKE &7900,&A5,&78,&63,&08,&4A,&00,&34,&41,&84,&A7,&78,&64,&91,&08,&9A
La seconde remet a zero sur tout l'espace &0000..&6FFF (soit les 28Ko).

Code : Tout sélectionner

POKE &7900,&34,&08,&0A,&41,&4C,&70,&91,&05,&9A
Appellez la routine de votre choix par un CALL &7900. N'oublier pas de faire NEW apres, pour initialiser les pointeurs et la zone BASIC.
Ces routines sont logees dans la zone des variables A, B, C et seront donc effacees apres un CLEAR. Mais, elles sont relogeables n'importe ou.


Verification de la RAM systeme et de la RAM BASIC+module

Le PC-1500 possede deux espaces RAM:
  • - L'espace BASIC+module decrit plus haut,
  • - La RAM systeme ou sont ranges les differents pointeurs, piles, zones de travail, buffers et les variables statiques A a Z et A$ a Z$. Cette zone est situee de &7600 a &7BFF (7FFF sur le PC1500A).
Voici un petit programme qui teste la RAM systeme (adresses de &7000 a &7BFF):

Code : Tout sélectionner

POKE &4700,&48,&70,&4A,&00,&05,&2A,&BD,&FF
POKE &4708,&28,&0E,&05,&A6,&89,&0F,&BD,&FF
POKE &4710,&26,&89,&0A,&41,&4C,&7C,&91,&14
POKE &4718,&BE,&E6,&69,&F9,&9A,&FB,&9A
La routine est implantee en &4700, mais elle est relogeable n'importe ou dans la RAM BASIC.
Pour l'utiliser, faire:

Code : Tout sélectionner

X=0
CALL &4700,X
Si la RAM est OK, un bip se fait entendre. Sinon, pas de bip et X vaudra en retour l'adresse ou le test a echoue.

Voici un petit programme qui teste la RAM BASIC+module. Cette routine s'adapte en fonction de la RAM et des modules installes:

Code : Tout sélectionner

POKE &7750,&A5,&78,&63,&08,&4A,&00,&05,&2A
POKE &7758,&BD,&FF,&28,&0E,&05,&A6,&89,&11
POKE &7760,&BD,&FF,&26,&89,&0C,&41,&84,&A7
POKE &7768,&78,&64,&91,&16,&BE,&E6,&69,&F9,&9A,&FB,&9A
De meme, pour l'utiliser, on fait:

Code : Tout sélectionner

X=0
CALL &7750,X
Si la RAM est OK, un bip se fait entendre. Sinon, pas de bip et X vaudra en retour l'adresse ou le test a echoue.
Attention, cette routine est implantee dans l'espace des variables P$, Q$, R$. Elle sera effacee par un NEW ou un CLEAR. Elle est totalement relogeable, mais doit imperativement residee en RAM systeme.

Ces 2 routines lisent chaque octet de l'espace a controler, font un XOR &FF de la valeur, ecrivent la valeur ainsi obtenue, relisent l'octet, le comparent, puis refont un XOR &FF, comparent la valeur a l'octet d'origine et le replacent. Elles ne sont donc pas destructrices, sauf si un des tests echoue.


Calcul de checksum de la ROM

La routine ci-dessous permet de calculer une somme de controle de la ROM (&C0000..&FFFF) du PC-1500.

Code : Tout sélectionner

POKE &78C0,&34,&08,&0A,&2A,&68,&C0,&65,&FD,&CA,&6C,&00,&99,&07,&FB,&9A
Puis faire:

Code : Tout sélectionner

X=0
CALL &78C0,X
X
et vous aurez dans X la somme de controle.
Ceci, car il existe plusieurs versions de la ROM, et ce calcul permet donc de connaitre quelle ROM est installee. A savoir que si la somme de controle n'est pas referencee si dessous, il est possible que la ROM soit endommagee, et pourrait expliquer le comportement erratique eventuel du PC.
J'ai rescense 3 ROMs differentes (4 avec celle du PC-1600). Peut-etre, il y en a-t-il d'autres. Dans les revues de l'epoque, il etait fait mention de 4 ROMs, mais jusqu'a ce jour, seules 3 ont ete identifiees:

Code : Tout sélectionner

-20007 = &B1D9 : ROM0 - PC1500 (debut-mi 1982) -> PEEK &E2B9 <> 56, ce qui rend le driver clavier inutilisable.
-20920 = &AE48 : ROM1 - PC1500 (12/1982) = PC2
-21986 = &AA1E : ROM2 - PC1500 (?) = PC1500A = PC2
 31949 = &7CCD : ROM(3) ? PC1600 (A priori la ROM1500 dans le PC1600 est différente)

Restauration d'un programme apres un NEW ou apres incoherence des pointeurs BASIC

Le petit programme ci-dessous permet de recuperer un programme efface par un NEW (a condition qu'il n'est pas ete reecrit par dessus).

Code : Tout sélectionner

POKE &7900,&CC,&65,&05,&DD,&89,&01,&0E,&FD,&6A,&44,&44,&05,&FD,&CA,&05,&B7,&0D,&89,&09
POKE &7913,&44,&05,&B7,&FF,&99,&12,&CA,&67,&9A,&FD,&28,&B5,&FF,&0E,&9E,&0A
Il est stocke dans les variables A,B,C,D,E. Mais il est entierement relogeable et peut etre place n'import ou.
Un CALL &7900 va restaurer le programme BASIC efface, eventuellement, meme partiellement un programme BASIC corrompu, meme si les pointeurs BASIC sont incoherents. Attention cependant: ce programme ne se sort pas de toutes les situations, mais il peut etre utilise entre autre pour remettre les pointeurs BASIC en coherence apres une commutation de page avec le module CE-163.


Commutation de page du CE-163

Le CE-163 est un module de 32Ko pagines; il contient donc deux pages de 16Ko chacune, accesibles exclusivement l'une de l'autre.
Pour commuter les pages, des POKEs sont necessaires:
  • POKE &5800,0 commutera en page 0 pour un PC-1500
  • POKE &5801,0 commutera en page 1 pour un PC-1500
  • POKE &6800,0 commutera en page 0 pour un PC-1500A
  • POKE &6801,0 commutera en page 1 pour un PC-1500A
Si un programme BASIC est stocke dans chacune des pages, utiliser la routine dans la rubrique ci-dessus pour remettre les pointeurs BASIC en coherence.


Voila. En esperant que ces astuces vous seront utiles. Et surtout n'hesitez pas a communiquer les votres et a enrichir cette rubrique pour d'autres machines dans un autre fil.

Edit: Mise a jour avec les routines de controle de la RAM systeme et de la RAM BASIC+module
Dernière édition par cgh le 19 mai 2013 23:06, édité 6 fois.
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

Okinawok
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 855
Inscription : 12 avr. 2011 15:07

Re: Pensee de PC - Sharp PC-1500/A et Tandy PC-2

Message par Okinawok » 07 mai 2013 20:58

Merci pour cet excellent post :D !

Avatar de l’utilisateur
Hobiecat
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3564
Inscription : 06 sept. 2011 14:57
Localisation : Normandie / Antwerpen

Re: Pensee de PC - Sharp PC-1500/A et Tandy PC-2

Message par Hobiecat » 07 mai 2013 21:10

Merci Cgh !
Un vrai post de référence !

Avatar de l’utilisateur
Paul Tergeist
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 2418
Inscription : 15 oct. 2007 15:50
Localisation : 3ème planète après le soleil

Re: Pensee de PC - Sharp PC-1500/A et Tandy PC-2

Message par Paul Tergeist » 07 mai 2013 21:37

Super idée Cgh ! J'adore ces chroniques. Merci

Avatar de l’utilisateur
babaorhum
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 581
Inscription : 13 janv. 2013 20:44
Localisation : Toulon-ouest

Re: Pensee de PC - Sharp PC-1500/A et Tandy PC-2

Message par babaorhum » 07 mai 2013 21:40

Ouch ! y'a gros là ! 8O

...On se le met de côté celui là, pour le décortiquer tranquillement à tête reposée (comme un crabe, c'est bon mais faut pas être pressé) !

Merci CGH
BaBaoRhum
HP J728,200LX,1000CX,75C,71B, 48GX,42s,41CX,35s,32E,32Sii,28S,22s,21,16C,11C,12Cp
Sharp PC- E500,1600,1500,1350,1261,1245
Casio FX-502P,850P,3900P,4000P
TI-74&92 ; Canon X-07 ; Panasonic HHC RL-H1400 ; TANDY EC-4026

cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2347
Inscription : 30 août 2011 12:23
Localisation : Vous êtes ici -> .
Contact :

Re: Pensee de PC - Sharp PC-1500/A et Tandy PC-2

Message par cgh » 07 mai 2013 22:16

@Okinawok, Hobiecat, Paul Tergeist, babaorhum : Merci a tous ! :-D

Mise a jour avec les routines de controle de la RAM systeme et de la RAM BASIC+module.
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

Avatar de l’utilisateur
Alainza
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 199
Inscription : 19 sept. 2009 06:59
Localisation : Seattle

Re: Pensee de PC - Sharp PC-1500/A et Tandy PC-2

Message par Alainza » 07 mai 2013 23:33

C'est malin : après ce super post, je regrette vraiment d'avoir mes deux CE 150 en rade... :D

Avatar de l’utilisateur
bernouilli92
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4641
Inscription : 21 nov. 2012 14:03
Localisation : Ile de France

Re: Pensee de PC - Sharp PC-1500/A et Tandy PC-2

Message par bernouilli92 » 08 mai 2013 08:12

Merci pour ces précieuses informations.
HP, Casio, Sharp, Psion, quelques TI et divers autres

Avatar de l’utilisateur
doum-doum
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1548
Inscription : 08 déc. 2012 17:24

Re: Pensee de PC - Sharp PC-1500/A et Tandy PC-2

Message par doum-doum » 08 mai 2013 17:39

Merci pour ce post cgh, je viens d'apprendre plein de chose, et au moins je sais maintenant que mes PC-1500 sont tous en Rom2 (-21986).

Tes routines sont de l'assembleur ? Question de newbie :geek:

cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2347
Inscription : 30 août 2011 12:23
Localisation : Vous êtes ici -> .
Contact :

Re: Pensee de PC - Sharp PC-1500/A et Tandy PC-2

Message par cgh » 08 mai 2013 18:37

doum-doum a écrit :Merci pour ce post cgh, je viens d'apprendre plein de chose, et au moins je sais maintenant que mes PC-1500 sont tous en Rom2 (-21986).

Tes routines sont de l'assembleur ? Question de newbie :geek:
Vi. J'ai eu la chance de pouvoir m'acheter un PC1500 debut 1983, et je l'ai choisi uniquement pour son acces a l'Assembleur.
Voici les routines desassemblees: Desole pour les puristes, mais je suis allergique aux mnemoniques officielles, je prefere et j'utilise celles en simili-Z80.

Code : Tout sélectionner

7900	A5 78 63          LDA	(STARTRAM)
7903	08                STA	B
7904	4A 00             LD	 C,00
7906	34                CLA
7907	41                STI	(BC)
7908	84                LDA	B
7909	A7 78 64          CPA	(ENDRAM)
790C	91 08             JR	 NC,7906
790E	9A                RET

Code : Tout sélectionner

7900	34                CLA
7901	08                STA	B
7902	0A                STA	C
7903	41                STI	(BC)
7904	4C 70             CP	 B,70
7906	91 05             JR	 NC,7903
7908	9A                RET

Code : Tout sélectionner

4700	48 70             LD	 B,70
4702	4A 00             LD	 C,00
4704	05                LDA	(BC)
4705	2A                STA	L
4706	BD FF             XOR	FF
4708	28                STA	H
4709	0E                STA	(BC)
470A	05                LDA	(BC)
470B	A6                CPA	H
470C	89 0F             JR	 NZ,471D
470E	BD FF             XOR	FF
4710	26                CPA	L
4711	89 0A             JR	 NZ,471D
4713	41                STI	(BC)
4714	4C 7C             CP	 B,7C
4716	91 14             JR	 NC,4704
4718	BE E6 69          CALL	BEEP1
471B	F9                RCF
471C	9A                RET
471D	FB                SCF
471E	9A                RET

Code : Tout sélectionner

7750	A5 78 63          LDA	(STARTRAM)
7753	08                STA	B
7754	4A 00             LD	 C,00
7756	05                LDA	(BC)
7757	2A                STA	L
7758	BD FF             XOR	FF
775A	28                STA	H
775B	0E                STA	(BC)
775C	05                LDA	(BC)
775D	A6                CPA	H
775E	89 11             JR	 NZ,7771
7760	BD FF             XOR	FF
7762	26                CPA	L
7763	89 0C             JR	 NZ,7771
7765	41                STI	(BC)
7766	84                LDA	B
7767	A7 78 64          CPA	(ENDRAM)
776A	91 16             JR	 NC,7756
776C	BE E6 69          CALL	BEEP1
776F	F9                RCF
7770	9A                RET
7771	FB                SCF
7772	9A                RET

Code : Tout sélectionner

78C0	34                CLA
78C1	08                STA	B
78C2	0A                STA	C
78C3	2A                STA	L
78C4	68 C0             LD	 H,C0
78C6	65                LDI	(HL)
78C7	FD CA             ADD	BC
78C9	6C 00             CP	 H,00
78CB	99 07             JR	 NZ,78C6
78CD	FB                SCF
78CE	9A                RET

Code : Tout sélectionner

7900	CC 65             LDS	65
7902	05                LDA	(BC)
7903	DD                INC	A
7904	89 01             JR	 NZ,7907
7906	0E                STA	(BC)
7907	FD 6A             LD	 HL,BC
7909	44                INC	BC
790A	44                INC	BC
790B	05                LDA	(BC)
790C	FD CA             ADD	BC
790E	05                LDA	(BC)
790F	B7 0D             CPA	0D
7911	89 09             JR	 NZ,791C
7913	44                INC	BC
7914	05                LDA	(BC)
7915	B7 FF             CPA	FF
7917	99 12             JR	 NZ,7907
7919	CA 67             STS	67
791B	9A                RET
791C	FD 28             LD	 BC,HL
791E	B5 FF             LDA	FF
7920	0E                STA	(BC)
7921	9E 0A             JR	 7919
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

Avatar de l’utilisateur
doum-doum
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1548
Inscription : 08 déc. 2012 17:24

Re: Pensee de PC - Sharp PC-1500/A et Tandy PC-2

Message par doum-doum » 08 mai 2013 19:48

Whowww, va falloir que j'aille m'acheter l'assembleur pour les nuls :D

franck196569
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 154
Inscription : 27 sept. 2012 09:56
Localisation : Nantes

Re: Pensee de PC - Sharp PC-1500/A et Tandy PC-2

Message par franck196569 » 08 mai 2013 20:18

Merci pour ce post !

Répondre

Revenir vers « Tous les Pockets »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Bing [Bot] et 10 invités