1Mo de mémoire sur IBM PC XT

Placez ici vos trucs et astuces, étalez sans retenue votre savoir-faire et votre science qui va nous permettre de redonner une apparence neuve et fonctionnelle à nos bouzes.

Modérateurs : Papy.G, fneck, Carl

Avatar de l’utilisateur
xmamat
Messages : 322
Inscription : 31 août 2020 15:02
Localisation : Paris

1Mo de mémoire sur IBM PC XT

Message par xmamat »

Il existe une manipulation assez facile et connue pour installer 640Ko de mémoire directement sur la carte mère d'un IBM PC XT (de base ne supportant que 64 à 256Ko, sauf pour les dernières versions) décrite dans ce vieil article.

Moins répandue et plus complexe, une extension de cette manipulation permet d'installer jusqu'à 1Mo pour un maximum de 896Ko de mémoire adressable. Ceci est décrit dans un autre article (ci-joint) de Cy Atkinson datant de 1989.
Le problème étant que pour cela il faut remplacer la PROM de décodage d'adresse mémoire originale par une customisée pour adresser la mémoire se situant entre 640Ko et 1Mo (vendue à l'époque pour quelques dollars par l'auteur de l'article).
Heureusement des gars sur le forum vcfed.org décrivent ici comment se fabriquer un de ces décodeurs spéciaux en programmant une GAL16V8 (un type d'EEPROM qu'on trouve facilement pour quelques euros sur eBay ou Aliexpress) avec un dump issu du code de l'article original.

J'ai donc appliqué tout cela sur mon XT préféré, mon emblématique IBM 5155 :wink: (la procédure est identique pour un 5160).
IMG_3702.JPG
IMG_3702.JPG (1001.07 Kio) Consulté 1524 fois
La première partie est exactement la même que pour installer 640Ko :
  • mettre un bridge en E2 si pas de jumper déjà présent (là j'ai juste soudé un fil, mais il vaut mieux un cavalier) ;
  • insérer un multiplexeur type 74LS158 en U84.
A quoi il faut maintenant ajouter le remplacement de la PROM originale en U84 par le nouveau décodeur d'adresse.
La GAL étant un DIP20 et le socket un DIP16, il faut couper les 4 dernières pattes (qui seront dans le vide :o mais c'est pas grave) pour pouvoir l'insérer correctement. Ces 4 broches sont inutilisées sauf la 10 qui doit être reliée à GND : pour ça, il suffit de souder un petit bout de fil à la patte 8.

Ensuite, plus qu'à installer les banques mémoire jusqu'à 1Mo. Il n'est pas nécessaire de tout remplir avec des 41256, on peut laisser une banque sur les 4 avec des 4164 si on ne compte utiliser que 128Ko de mémoire supplémentaire.
L'article original détaille les différentes configurations possibles par rapport aux 6 segments A à F de 64Ko au dessus des 640Ko en fonction du matériel déjà installé (car en effet, une partie ces segments sont reservés par le système ou les extensions et ne sont donc pas utilisables).
5160 - Memory Map of the 640 KB to 1 MB Area.jpg
5160 - Memory Map of the 640 KB to 1 MB Area.jpg (328.14 Kio) Consulté 1524 fois
Par exemple, avec E2 fermé et les 4 banques remplies avec du 41256 :
  • switches 3 et 4 à ON : segments A, C, D, E utilisables (soit le maximum de 256Ko de mémoire supplémentaire) mais nécessite de ne pas avoir de carte EGA/VGA ni de carte de contrôleur de disque dur ;
  • switches 3 à OFF et 4 à ON : segments A, D, E utilisables (192Ko de mémoire supplémentaire), nécessite de ne pas avoir de carte EGA/VGA mais carte de contrôleur de disque dur possible.
Et avec E2 fermé et les 3 premières banques avec du 41256 et la 4ème avec du 4164 :
  • switches 3 et 4 à OFF : segments D, E utilisables (128Ko de mémoire supplémentaire), carte EGA/VGA et carte de contrôleur de disque dur possibles.
Pièces jointes
U44V2M.zip
dump ROM de décodage d'adresse (HIMEMV2)
(1.1 Kio) Téléchargé 61 fois
1mb-pc-xt.zip
article original de Cy Atkinson
(7.41 Kio) Téléchargé 70 fois
Avatar de l’utilisateur
xmamat
Messages : 322
Inscription : 31 août 2020 15:02
Localisation : Paris

Re: 1Mo de mémoire sur IBM PC XT

Message par xmamat »

Bon, c'est bien beau d'avoir toute cette mémoire supplémentaire :D, mais comment l'utiliser ?

On peut par exemple charger DOS et une partie des programmes TSR (drivers CONFIG.SYS/AUTOEXEC.BAT par exemple) en UMA (Upper Memory Area, c'est à dire cette fameuse mémoire au dessus des 640Ko jusqu'à 1Mo) pour récupérer un maximum de mémoire conventionnelle.
L'article de vcfed.org indique quels outils utiliser pour ça.

Il faut d'abord utiliser CLEARMEM.SYS sur les segments configurés précédemment pour s'assurer de ne pas avoir d'erreur de parité à ces adresses. Si les segments choisis ne sont pas contigus, il faut une ligne par bloc de mémoire (paramètres : <adresse de début du 1er segment> <taille>).
E.g. si on a configuré pour utiliser les segments A, D et E :
DEVICE=<chemin>\CLEARMEM.SYS A000 1000 : segment A
DEVICE=<chemin>\CLEARMEM.SYS D000 2000 : segments D et E

Ensuite, on peut utiliser un gestionnaire de mémoire haute pour pouvoir utiliser les UMBs (Upper Memory Blocks). Le classique HIMEM.SYS est possible, mais dans mon cas j'ai choisi celui conseillé par le forum: USE!UMBS.SYS.
On peut cette fois utiliser plusieurs paramètres avec les plages d'adresses (<début du 1er segment>-<début du segment suivant>). Donc pour les segments A, D et E :
DEVICE=<chemin>\USE!UMBS.SYS A000-B000 D000-F000

A partir de là il est possible d'utiliser DEVICEHIGH dans CONFIG.SYS et LOADHIGH (LH) dans AUTOEXEC.BAT en configurant DOS=UMB dans CONFIG.SYS.

IMG_3713.JPG
IMG_3713.JPG (548.71 Kio) Consulté 1516 fois

DOSMAX est un utilitaire permettant le chargement de l'environnement DOS en UMA, ce qui permet d'économiser beaucoup de mémoire conventionnelle.
D'abord, il faut ajouter HIGH pour simuler la HMA (High Memory Area, non présente ici) dans la variable DOS (donc DOS=UMB, HIGH avec USE!UMBS.SYS). Puis (par exemple) :
DEVICE=<chemin>\DOSMAX.EXE /REPORT:+ /PAUSE:-
SHELL=<chemin>\SHELLMAX.COM /REPORT:+ C:\COMMAND.COM C:\ /E:512 /P

IMG_3715.JPG
IMG_3715.JPG (554.45 Kio) Consulté 1516 fois
Pour plus de possibilités sur comment utiliser la mémoire avec DOSMAX, voir les .DOC qui sont très détaillés.
Pièces jointes
DOSMAX.zip
(82.28 Kio) Téléchargé 67 fois
USE!UMBS.zip
(942 octets) Téléchargé 68 fois
CLEARMEM.zip
(3.74 Kio) Téléchargé 68 fois
Avatar de l’utilisateur
fneck
Site Admin
Messages : 17423
Inscription : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Re: 1Mo de mémoire sur IBM PC XT

Message par fneck »

Merci pour cette procédure détaillée et bien documentée.

Une question que je me pose concerne le temps d'accès à la mémoire au travers de ces gestionnaires, il est identique à la mémoire de base ou c'est sensiblement plus lent? Bon, il faudrait peux être des outils spécifiques pour pouvoir le vérifier.
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Avatar de l’utilisateur
xmamat
Messages : 322
Inscription : 31 août 2020 15:02
Localisation : Paris

Re: 1Mo de mémoire sur IBM PC XT

Message par xmamat »

A priori je dirais que les temps d'accès sont identiques pour accéder aux programmes résidants en UMA par rapport à ceux en mémoire conventionnelle, puisque dans les deux cas l'adressage de la RAM se fait directement (contrairement à l'EMS/XMS par exemple).
Il n'est pas fait mention dans la documentation de DOSMAX d'un éventuel overhead sur l'éxecution des commandes DOS (en pratique je ne remarque pas de différence). Elle semble même dire qu'accéder à DOS en UMA serait plus performant que s'il est chargé en HMA.

Maintenant, je ne sais pas trop comment vérifier ça avec des tests. Si tu as une idée, je suis preneur.
Ythunder
Messages : 928
Inscription : 21 août 2019 10:12

Re: 1Mo de mémoire sur IBM PC XT

Message par Ythunder »

En générale on place des TSR dans la mémoire haute. Une fois chargés, je doute de la nécessité d'un timing efficace nécessaire, non ?
genesis8bit
Messages : 71
Inscription : 27 juil. 2017 21:51

Re: 1Mo de mémoire sur IBM PC XT

Message par genesis8bit »

Cela peut être fait sur vraiment n'importe quel XT ?

Le seul que j'ai actuellement est un Amstrad PPC 640, mais si j'arrive à récupérer un Amstrad PC 1512 ou 1640 c'est très intéressant.
Site sur les ordinateurs Amstrad : https://www.genesis8bit.fr/
Répondre