La Place des Développeurs Utilisation de disque MSX-DOS, BDOS, Disk BASIC, et autres joyeusetés
Reprise du message précédent
pour l'instant on n'a pas parlé du MSX-DOS2 qui est une extension uniquement logicielle et qui requiert elle 128 Ko de RAMpas mal d'infos sur ce site http://map.grauw.nl/resources/
pour travailler avec les MSX-DOS il faut aussi une disquette de boot contenant 2 fichiers
DOS1 avec COMMAND.COM et MSXDOS.SYS
DOS2 avec COMMAND2.COM et MSXDOS2.SYS
donc pour l'instant tu veux juste parler des commandes qui permettent de travailler avec le disque en assembleur
les adresses des commandes commencent a la page 118 du livre du disque
sur cette page j'y ai écrit idem FFA7h Call Bios 144h
FFA7h H.PHYD Call: At the beginning of the routine PHYDIO (Main-ROM at 0144h).
Usage: Process the routine.
Note: Used by the Disk-ROM.
PHYDIO (0144H)
Function: Physical input/output for disk devices
Input: A for the drive number (0 = A:, 1 = B:,...)
B for the number of sector to be read from or written to
C for the media ID
DE for the first sector number to be read rom or written to
HL for the startinga address of the RAM buffer to be
read from or written to specified sectors
CY set for sector writing; reset for sector reading
Output: CY set if failed
B for the number of sectors actually read or written
A for the error code (only if CY set):
0 = Write protected
2 = Not ready
4 = Data error
6 = Seek error
8 = Record not found
10 = Write error
12 = Bad parameter
14 = Out of memory
16 = Other error
Registers: all
les adresses des commandes commencent a la page 118 du livre du disque
sur cette page j'y ai écrit idem FFA7h Call Bios 144h
FFA7h H.PHYD Call: At the beginning of the routine PHYDIO (Main-ROM at 0144h).
Usage: Process the routine.
Note: Used by the Disk-ROM.
PHYDIO (0144H)
Function: Physical input/output for disk devices
Input: A for the drive number (0 = A:, 1 = B:,...)
B for the number of sector to be read from or written to
C for the media ID
DE for the first sector number to be read rom or written to
HL for the startinga address of the RAM buffer to be
read from or written to specified sectors
CY set for sector writing; reset for sector reading
Output: CY set if failed
B for the number of sectors actually read or written
A for the error code (only if CY set):
0 = Write protected
2 = Not ready
4 = Data error
6 = Seek error
8 = Record not found
10 = Write error
12 = Bad parameter
14 = Out of memory
16 = Other error
Registers: all
aoineko
Membre non connecté
Conseiller Municipal
Jipe :
sur cette page j'y ai écrit idem FFA7h Call Bios 144h
Oh ! Je ne savais pas que le BIOS de base avait des routines pour gérer les disques !
Bon, c'est assez spartiate vu qu'on lit les secteurs et non des fichiers, mais c'est bon à savoir.
Est-ce que cette fonction est utilisable même si le programme n'a pas donné la main au Disk-ROM ?
Par ex., dans le cas d'une cartouche dans un slot plus petit que celui ou se trouve le contrôleur de disque.
Ou bien est-ce qu'elle utilise elle-même les fonctions du BDOS (Basic-DOS) ?
On est toujours ignorant avant de savoir.
trouvé dans pratique du MSX2
6.4 SYSTEME A DISQUETTES OU A CASSETTES ?
Pour savoir si l'ordinateur possède un lecteur de disquettes ou non, il faut vérifier l'état d'un hook
modifié par le système d'exploitation de disquette. Le hook H.PHYD convient parfaitement. Ainsi,
si 0FFA7H - adresse de H.PHYD - contient 0C9H (code du RET en Z80), vous travaillez sur un
système à cassette. Si 0FFA7H contient autre chose que 0C9H (qui devrait être 0F7H, code du RST
30), alors l'ordinateur possède un lecteur de disquette, intégré ou non.
De plus, lorsqu'un lecteur de disquette est présent, certaines variables système sont modifiées :
adresse contenu
0FB21H nombre de lecteurs sur le premier contrôleur
0FB22H numéro de slot du premier contrôleur
0FB23H nombre de lecteurs sur le second contrôleur
0FB24H numéro de slot du second contrôleur
0FB25H nombre de lecteurs sur le troisième contrôleur
0FB26H numéro de slot du troisième contrôleur
0FB27H nombre de lecteurs sur le quatrième contrôleur
0FB28H numéro de slot du quatrième contrôleur
Un MSX peut donc gérer jusqu'à 8 lecteurs de disquettes simultanément. S'il y a moins de quatre
contrôleurs, les variables système correspondant aux contrôleurs inexistants contiennent 0.
En cas d'absence de lecteur de disquette, cette zone mémoire n'est pas initialisée et contient donc
n'importe quoi.
6.4 SYSTEME A DISQUETTES OU A CASSETTES ?
Pour savoir si l'ordinateur possède un lecteur de disquettes ou non, il faut vérifier l'état d'un hook
modifié par le système d'exploitation de disquette. Le hook H.PHYD convient parfaitement. Ainsi,
si 0FFA7H - adresse de H.PHYD - contient 0C9H (code du RET en Z80), vous travaillez sur un
système à cassette. Si 0FFA7H contient autre chose que 0C9H (qui devrait être 0F7H, code du RST
30), alors l'ordinateur possède un lecteur de disquette, intégré ou non.
De plus, lorsqu'un lecteur de disquette est présent, certaines variables système sont modifiées :
adresse contenu
0FB21H nombre de lecteurs sur le premier contrôleur
0FB22H numéro de slot du premier contrôleur
0FB23H nombre de lecteurs sur le second contrôleur
0FB24H numéro de slot du second contrôleur
0FB25H nombre de lecteurs sur le troisième contrôleur
0FB26H numéro de slot du troisième contrôleur
0FB27H nombre de lecteurs sur le quatrième contrôleur
0FB28H numéro de slot du quatrième contrôleur
Un MSX peut donc gérer jusqu'à 8 lecteurs de disquettes simultanément. S'il y a moins de quatre
contrôleurs, les variables système correspondant aux contrôleurs inexistants contiennent 0.
En cas d'absence de lecteur de disquette, cette zone mémoire n'est pas initialisée et contient donc
n'importe quoi.
CALL Far
Nom : CALLF
Adresse : 00030H / ROM
Rôle : appel inter-slot à une adresse.
Ces routines n'appellent pas de commentaire particulier (voir le Bios) sauf peut-être la dernière
routine « CALL Far » :
Pour accéder à une adresse se trouvant dans un autre slot, il suffit d'écrire les 3 instructions
suivantes en assembleur :
RST 30
DB numéro du slot
DW adresse à appeler
Le RET de la routine appelée renverra l'exécution à l'octet immédiatement après l'adresse définie
par le DW. Par exemple la suite d'octets F7, 8E, 0, C0, AF générerait la séquence suivante :
0F7H code Z80 de « RST 30 »
08EH slot secondaire 2-3
000H adresse à appeler 0C000H
0C0H
0AFH code Z80 de « XOR A », le RET de la routine en 0C0000H dans le slot 2-3 fera
reprendre l'exécution du programme avec ce « XOR A ».
Nom : CALLF
Adresse : 00030H / ROM
Rôle : appel inter-slot à une adresse.
Ces routines n'appellent pas de commentaire particulier (voir le Bios) sauf peut-être la dernière
routine « CALL Far » :
Pour accéder à une adresse se trouvant dans un autre slot, il suffit d'écrire les 3 instructions
suivantes en assembleur :
RST 30
DB numéro du slot
DW adresse à appeler
Le RET de la routine appelée renverra l'exécution à l'octet immédiatement après l'adresse définie
par le DW. Par exemple la suite d'octets F7, 8E, 0, C0, AF générerait la séquence suivante :
0F7H code Z80 de « RST 30 »
08EH slot secondaire 2-3
000H adresse à appeler 0C000H
0C0H
0AFH code Z80 de « XOR A », le RET de la routine en 0C0000H dans le slot 2-3 fera
reprendre l'exécution du programme avec ce « XOR A ».
ericb59
Membre non connecté
Conseiller Municipal
Question soumise à votre sagacité ...
J'ai pris pour acquis, que si je veux développer une ROM, ou depuis le Basic, je peux utiliser ces zones mémoires comme des zones temporaires ou tampon, car elles sont réservées pour certaines instructions Basic. (Voir autre post avec metalion quelle part ici )
MUSQLN en 0xF975
BUF en 0xF55E
KBUF en 0xF41F
D'après le bouquin déterré par AOINEKO, en page 140, il est détaillé la memory map sous MSX-DOS.
Il y est donc indiqué que de 0xF380 à 0xFFFF c'est une zone de communication du Basic.
Du coup, je me dit deux choses...
1) Je peux continuer à utiliser comme je veux mes 3 zones tampons décrite plus haut comme je veux, même avec MSX-DOS
2) Je peux utiliser TOUTE cette zone 0XF380 à 0xFFF, comme je veux, si je n'ai pas l'intention de retourner au Basic depuis le MSX-DOS
Est-ce que cela vous parait cohérent ?
Edité par ericb59 Le 11/05/2022 à 19h53
J'ai pris pour acquis, que si je veux développer une ROM, ou depuis le Basic, je peux utiliser ces zones mémoires comme des zones temporaires ou tampon, car elles sont réservées pour certaines instructions Basic. (Voir autre post avec metalion quelle part ici )
MUSQLN en 0xF975
BUF en 0xF55E
KBUF en 0xF41F
D'après le bouquin déterré par AOINEKO, en page 140, il est détaillé la memory map sous MSX-DOS.
Il y est donc indiqué que de 0xF380 à 0xFFFF c'est une zone de communication du Basic.
Du coup, je me dit deux choses...
1) Je peux continuer à utiliser comme je veux mes 3 zones tampons décrite plus haut comme je veux, même avec MSX-DOS
2) Je peux utiliser TOUTE cette zone 0XF380 à 0xFFF, comme je veux, si je n'ai pas l'intention de retourner au Basic depuis le MSX-DOS
Est-ce que cela vous parait cohérent ?
Edité par ericb59 Le 11/05/2022 à 19h53
Clefs pour MSX
F41F-F55C 318 Tampon pour le codage d’une ligne Basic (KRUNCH).
F55E-F65F 258 Zone tampon pour le clavier.
F956-FB8B 565 Zone de travail pour l’instruction PLAY.
Pratique du MSX2
0F41FH KBUF 318 « Crunch buffer » utilisé par le Basic
0F55EH BUF 256 Buffer du mode direct
0F956H MCLTAB 2 Mémoire de travail pour « MACLNG »
0F958H MCLFLG 1 Flag indiquant un « PLAY » ou un « DRAW »
0F959H QUETAB 24 Quatre queues de six octets chacune
0F971H QUEBAK 4 Utilisé par « BCKQ »
0F975H VOICAQ 128 Queue musicale pour la voie A
0F9F5H VOICBQ 128 Queue musicale pour la voie B
0FA75H VOICCQ 128 Queue musicale pour la voie C
donc ce n'est utilisé que par le Basic
mais tous les divers programmes DOS ou L.M. sur les cracks de mégaroms que j'ai pu voir utilisent la Zone des Queues musicales a partir de F975
après tu peux expérimenter et nous faire part des résultats
F41F-F55C 318 Tampon pour le codage d’une ligne Basic (KRUNCH).
F55E-F65F 258 Zone tampon pour le clavier.
F956-FB8B 565 Zone de travail pour l’instruction PLAY.
Pratique du MSX2
0F41FH KBUF 318 « Crunch buffer » utilisé par le Basic
0F55EH BUF 256 Buffer du mode direct
0F956H MCLTAB 2 Mémoire de travail pour « MACLNG »
0F958H MCLFLG 1 Flag indiquant un « PLAY » ou un « DRAW »
0F959H QUETAB 24 Quatre queues de six octets chacune
0F971H QUEBAK 4 Utilisé par « BCKQ »
0F975H VOICAQ 128 Queue musicale pour la voie A
0F9F5H VOICBQ 128 Queue musicale pour la voie B
0FA75H VOICCQ 128 Queue musicale pour la voie C
donc ce n'est utilisé que par le Basic
mais tous les divers programmes DOS ou L.M. sur les cracks de mégaroms que j'ai pu voir utilisent la Zone des Queues musicales a partir de F975
après tu peux expérimenter et nous faire part des résultats
aoineko
Membre non connecté
Conseiller Municipal
Jipe :
sur cette page j'y ai écrit idem FFA7h Call Bios 144h
Le call 0144h fonctionne même si le contrôleur de disque n'a pas était initialisé ? J'imagine que non.
On est toujours ignorant avant de savoir.
La recopie du livre avance, un cinquième est déjà retapé
Par contre, il est parfois difficile de bien lire ce qui est écrit, je ne suis pas à l'abri de faire quelques coquilles
Par contre, il est parfois difficile de bien lire ce qui est écrit, je ne suis pas à l'abri de faire quelques coquilles
MSX un jour, MSX toujours !
aoineko
Membre non connecté
Conseiller Municipal
granced :
La recopie du livre avance, un cinquième est déjà retapé
Par contre, il est parfois difficile de bien lire ce qui est écrit, je ne suis pas à l'abri de faire quelques coquilles
Par contre, il est parfois difficile de bien lire ce qui est écrit, je ne suis pas à l'abri de faire quelques coquilles
Super
N'hésites pas à m'envoyer ce que tu as déjà fait. Je pourrais relire (en plus de me documenter ).
On est toujours ignorant avant de savoir.
ericb59
Membre non connecté
Conseiller Municipal
J'arrive trop tard avec mon nouveau scan tout neuf ?
http://ebsoft.fr/dms/seeddms/out/out.ViewDocument.php?documentid=899
@granced: garde tes yeux pour des taches plus nobles. Avec ce nouveau scan du bouquin plus propre, il est assez facile de faire une version texte en utilisant l'OCR intégré à MacOS. (Ou avec d'autres logiciels comme Read Iris par exemple).
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie