TO16 et mémoire haute

Pour tout ce qui touche au PC d'IBM et ses nombreux descendants. Attention tout de même, au delà de quelques MHz la discussion devient vite hors sujet.

Modérateurs : Papy.G, fneck, Carl

Avatar de l’utilisateur
fneck
Site Admin
Messages : 17423
Inscription : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Re: TO16 et mémoire haute

Message par fneck »

Fool-DupleX a écrit : 04 oct. 2020 13:09 Voici le document en question, rédigé avec amour par Bibi : http://www.forler.ch/misc/HWConfig_TO16.pdf
@ Fool, le fichier PDF n'est plus disponible :?
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Fool-DupleX
Messages : 2284
Inscription : 06 avr. 2009 12:07

Re: TO16 et mémoire haute

Message par Fool-DupleX »

Oui, c'est normal. Ca reviendra, mais pas tout de suite. Donne-moi le temps des fêtes pour remettre ça d'équerre.
Fool-DupleX
Messages : 2284
Inscription : 06 avr. 2009 12:07

Re: TO16 et mémoire haute

Message par Fool-DupleX »

Voilà, c'est réparé. Navré pour l'indisponibilité temporaire.
jvernet
Messages : 2454
Inscription : 12 avr. 2007 10:59
Localisation : France 69
Contact :

Re: TO16 et mémoire haute

Message par jvernet »

Est ce qu'il serait possible d'avoir des dumps des BIOS de ces machines ?
J'en ai une, qui doit être du modèle "slim": c'est pour ajouter la machine à 86Box.
Pour l'instant, j'ai la jolie image de boot, mais rien de spécifique n'est émulé (justement ce que l'on trouve dans le doc de FoolDuplex).
to16PC.png
to16PC.png (17.68 Kio) Consulté 4185 fois
Avatar de l’utilisateur
fneck
Site Admin
Messages : 17423
Inscription : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Re: TO16 et mémoire haute

Message par fneck »

On avait déjà parlé des ROM dans un autre topic, tu trouveras ici un BIOS 1.03 mais je ne pense pas que ce soit issu d'une machine "slim".

[edit] En fait j'avais copié la ROM de mon TO16 XP-HD pour la refiler à quelqu'un https://forum.system-cfg.com/viewtopic. ... 84#p131284
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
jvernet
Messages : 2454
Inscription : 12 avr. 2007 10:59
Localisation : France 69
Contact :

Re: TO16 et mémoire haute

Message par jvernet »

A priori, c'est celle là dont je dispose aujourd'hui.
Ca n'affiche pas le menu de test mémoire.

Je ne sais pas si c'est les mêmes ROM dans toutes les TO16 PC et XP ?
Fool-DupleX
Messages : 2284
Inscription : 06 avr. 2009 12:07

Re: TO16 et mémoire haute

Message par Fool-DupleX »

C'est la même ROM dans tous les TO16, quel que soit le modèle.

La jolie image de démarrage ne s'affiche que si on utilise la carte graphique interne et le (non-)test de mémoire ne s'affiche que si l'on utilise une carte graphique externe.

Choses plus ou moins spécifiques à émuler :
  • Plantronics Colorplus, mais ca semble déjà en place (y'a aussi le Hercules monochrome, c'est bon?)
  • Mémoire paginée (voir ma doc, mais c'est pas suffisant, j'ai le reste des infos)
  • Horloge temps réel (seulement sur XP) : chip MM58167AN, mais son accès est un peu spécial (j'ai les infos)
  • Mode turbo : j'ai aussi les infos
Et j'ai un petit scoop supplémentaire, on dirait bien qu'il y a 64 Ko de RAM vidéo câblée. Ca frise le n'importe quoi à ce stade, vu le prix de la RAM à l'époque (rappel: seuls 16 Ko sont nécessaires pour le CGA qui était le seul système exploitable facilement sur le TO16, et 32 Ko sont nécessaires pour le Colorplus). Mais je n'ai pas encore réussi à adresser les 32 Ko supérieurs pour le moment.
jvernet
Messages : 2454
Inscription : 12 avr. 2007 10:59
Localisation : France 69
Contact :

Re: TO16 et mémoire haute

Message par jvernet »

86Box emule bien la carte ColorPlus, ou Hercule, au besoin. Les programmes utilisant le mode ColorPlus se compte sur les doigts d'une demi main...
Il doit y avoir UN jeu (sorti en 2019.... Planet X3), un programme de tracé de fractales, et 2/3 bricoles.Il existe un driver GSX (pas trouvé !) pour GEM.

Les mécanismes pour la mémoire EMS existent, si c'est assez proche de la norme LIM EMS, mais on peut aussi créer les mécanismes qui vont bien, c'est fait pour certaines machines qui ont aussi ce genre d'extension (les TOshiba T1200, par exemple).
Toute la gestion des switchs physiques est à faire (comment y accède t'on en assembleur in/out, lecture mémoire ??). Il faut juste dire à 86Box quoi répondre lorsque le guest accède aux ports/adresses spécifiques.
J'ai aussi désassemblé la ROM, c'est très sommaire, pour une ROM 32k. On y trouve les noms des programmeurs, à priori, et une bonne partie de la ROM est occupée par l'image de boot.

PCEM propose bien la machine dans sa liste de machine émulées, mais c'est juste une émulation PC/XT générique avec carte color plus forcée.

J'ai commencé à intégrer le TO16 dans 86Box, mais je ne vais pas plus loin que PCEM... Du coup, au boot, il y a plusieurs BEEP pas normaux.
Le programme SETUP du TO16 se comporte assez bizarrement (la date et l'heure ne change pas, le choix turbo/pas turbo reste sur 10Mhz). Il y a une NVRAM et une pile, donc ?
Fool-DupleX
Messages : 2284
Inscription : 06 avr. 2009 12:07

Re: TO16 et mémoire haute

Message par Fool-DupleX »

Tu sembles motivé ... :D oui, comme indiqué précédemment ce que tu appelles la nvram est le chip MM58167AN avec une pile bouton. Elle est montée sur le XP, mais pas sur le PC (les composants sont absents sur la carte-mère, qui reste la même que le XP).

Tu as désassemblé le bios mais tu ne l'as pas étudié en détails :wink: . L'image ne prend pas tant de place que ça et elle comprimée RLE. Le reste est très instructif.

En etudiant ce fameux BIOS, on apprend que le changement du mode turbo se fait simplement en accédant, peu importe la manière, aux ports 0C0h-0C3h. Pour lire la vitesse courante, c'est les ports 0E0h-0E3h (tout est dans la doc que j'ai publiée, page 4 pour cette partie-la). P.2 de la même doc, la batterie SW2 est lisible à travers le PPI, ce qui est un mécanisme standard sur PC-AT : les bits 0-3 du port 62h forment 2 nibbles que l'on sélectionne à travers le bit 3 du port 61h. Au passage, le bit 4 de ce dernier active la parité RAM.

Pour la vitesse, on peut aussi s'en persuader en désassemblant SLOW.EXE et FAST.EXE qui ne font que quelques octets.

On apprend aussi à toutes fins utiles que les modes Colorplus ne sont pas gérés par le BIOS, qui s'arrête au mode 7, tout mode supérieur est redirigé sur le mode 0. Sauf si un BIOS externe est détecté, auquel cas, le mode est envoyé à ce BIOS pour interprétation.

Enfin, concernant le mécanisme de commutation, tout est dans ma doc, sauf ceci : la commutation de page se fait au travers du port 208h. Si le bit7 est fixé à 1, la banque est visible. Le no de page, de 0 à 7 est codé sur les bits 0-2.

Le BIOS teste beaucoup les deux batteries de switches, par exemple pour initialiser la vidéo. Et puis il y a la parité RAM. Tous ces tests peuvent produire des bips en cas d'anomalie. Mais ils sont généralement accompagnés d'un message d'erreur.

Il reste assez étonnant que l'heure ne bouge pas dans setup, car en théorie, c'est l'interruption timer standard à 18.2Hz qui est utilisée. Est-ce qu'elle bouge quand on demande deux fois time dans DOS ?
jvernet
Messages : 2454
Inscription : 12 avr. 2007 10:59
Localisation : France 69
Contact :

Re: TO16 et mémoire haute

Message par jvernet »

Merci pour ces infos.

Je ne suis pas allé très loin dans l'étude du BIOS, seulement les premiers tests, après je me perd assez vite, pas assez compétent ;).
Je cherchais justement la procédure d'affichage de l'image, entre autre.

J'avais déja regardé SLOW et FAST.86Box ne gère de toute façon pas le changement de vitesse du proc de manière dynamique.

Dans 86Box ou PCEM, si on sélectionne une autre carte vidéo, on a pas d'affichage du test de mémoire, ça part après les bip vers le boot MSDOS sans affichage. Logique, si le BIOS teste des choses pour l'affichage.

L'horloge marche dans MSDOS, mais si tu utilise le SETUP pour mettre à jour, ça ne marche pas, ce n'est pas pris en compte.
Fool-DupleX
Messages : 2284
Inscription : 06 avr. 2009 12:07

Re: TO16 et mémoire haute

Message par Fool-DupleX »

La routine d'affichage se trouve en F000:ED31. Elle commence par tester si la video est interne couleur, interne monochrome ou externe. Si externe, elle ressort immédiatement. Sinon elle appelle une sous-routine pour configurer soit le mode graphique Hercules 720x348x1 soit le mode Plantronics 320x200x16, puis elle appelle une seconde sous-routine (F000:EDCF) qui décompresse l'image.

Juste avant cette routine d'affichage, on trouve deux structures de 20 octets chacune qui décrivent de quelle manière et où l'image doit être décompressée.

L'image est stockée en F000:8000, son début est marqué par un flag A55Ah, suivi par l'offset de l'image noir et blanc compressée (0006h -> F000:8006), suivi par l'offset de l'image couleur compressée (1800h -> F000:9800).

Ces deux flux sont décomprimés par la sous-routine en F000:EDCF. Le format est simple : 1 octet pour indiquer la longueur du paquet de données qui suit. Si cette longueur <= 127, on est en présence d'une valeur répétée de 1 octet, sinon c'est un bloc de données compact.

Par exemple, le début de l'image noir et blanc est codé ainsi :

Code : Tout sélectionner

.org F000:8006

7F 00         130 (127+3) fois la valeur 00 (le +3 vient du fait que l'algo ne code pas de manière repetitive 
              0, 1 ou 2 octets identiques)
7F 00         130 fois la valeur 00
...
27 00         42 fois la valeur 00
81 01 F0      Bloc de données compact, 81-7F = 2, de longueur 2 -> 01 F0
55 00         88 fois la valeur 00
81 0E 3E      Bloc de données compact, 81-7F = 2, de longueur 2 -> 0E 3E
...
Si tu cherches quelque chose d'autre de particulier, fais-moi signe. J'ai intégralement documenté ce BIOS. Il n'est d'ailleurs pas optimal. C'est probablement un BIOS générique de Multitech qui a été légèrement adapté. Il reste de la place pour y ajouter d'autres trucs, par exemple la gestion des modes plantronics ou de la commutation mémoire :wink:

J'ai jeté un oeil à setup.exe, il teste la présence de la nvram à chaque affichage de l'heure, si elle est présente il utilise ça pour l'heure, sinon il fait un appel a la fonction getdatetime de DOS. Peut-être que sur l'ému, la nvram est incorrectement détectée comme présente, d'où le blocage.

Autre truc rigolo avec setup.exe, il ne permet de configurer le port série que jusqu'à 9600 bauds maximum, mais pourtant c'est un chip standard qui monte à 115200 bauds :D
Fool-DupleX
Messages : 2284
Inscription : 06 avr. 2009 12:07

Re: TO16 et mémoire haute

Message par Fool-DupleX »

Oh, je viens de m'apercevoir que le BIOS que j'ai désassemblé est la v1.02 du 28 aout 1987 et que le BIOS proposé ici est la v1.03 du 13 novembre 1987.

Très peu de changement entre les deux, essentiellement un PUSH CX PUSH CX STI / CLI POP CX POP CX dans l'interruption 10h. Amusant. Ca doit correspondre à un bug, mais lequel ?

Je vais mettre à jour la ROM de mon TO16 :D
Fool-DupleX
Messages : 2284
Inscription : 06 avr. 2009 12:07

Re: TO16 et mémoire haute

Message par Fool-DupleX »

Je me réponds encore à moi-même, mais je viens de tester PCEm et le résultat est plutôt probant : 1 bip à l'allumage, 2 bips successifs une fois que le BIOS a fini son POST, c'est le comportement normal. En revanche, il semblerait que ça plante après. Je m'attendais à un message d'erreur du type "insert system disk".

Edit: en fait, ça ne plante pas. Le texte ne s'affiche pas, je n'ai que le curseur qui clignote. Mais la machine répond, j'ai fait un DIR. Une idée ?

jvernet : ca me plairait bien d'avoir le TO16 complètement émulé dans PCEm, je pourrais peut-être te seconder ?
Fool-DupleX
Messages : 2284
Inscription : 06 avr. 2009 12:07

Re: TO16 et mémoire haute

Message par Fool-DupleX »

Une idée ?
Ouais, c'est sûr que sans la ROM caractère, peu de chance que le texte s'affiche. Ca tourne maintenant.
jvernet
Messages : 2454
Inscription : 12 avr. 2007 10:59
Localisation : France 69
Contact :

Re: TO16 et mémoire haute

Message par jvernet »

Hello,

Désolé de la réponse tardive, un peu occupée en cette fin d'année.

PCEM intègre bien le TO16, mais sans rien de spécifique en fait, hormis la carte Plantronic.

Perso, je préfère 86Box, développement plus ouvert. j'ai un fork perso ici:
https://github.com/jvernet/86Box

qui intègre un début de TO16. Sous 86Box, j'ai bien un affichage après l'écran Logo.

PCEM fonctionne sous linux et Windows, 86Box que sous Windows , (linux en cours) , du coup il faut travailler sous Windows en installant msys. 86box est un fork de PCEm par des dev un peu plus ouverts que celle de PCEM.

Il faut regarder le code du Toshiba 1000/1200 ou du laser XT3 qui ressemblent un peu en caractéristiques (mémoire EMS, puce RTC, etc).

C'est quoi, cette ROM caractère manquante ?
Répondre