DoubleDOS


Introduction

Nous avons vu en détail dans un dossier précédant le système d'exploitation de la société S.S.I., à savoir le Rdos 3.3 de Roland Gustafsson.
Nous avons donc à disposition un dos sympa pour faire des jeux.
Le soucis, c'est que les outils de développements eux, n'existent que sur les OS classiques. Il faut donc à un moment où un autre se préoccuper du transfert des objets générés par exemple avec l'assembleur Merlin sous DOS 3.3 vers notre disquette de jeu Rdos.
Il y a plusieurs possibilités dans ce cas de figure.
Soit on a du temps et on programme l'équivalent d'un Copy II+ compatible Dos 3.3 / Rdos 3.3, soit on n'en a pas et on se débrouille comme on peut.

En ce qui me concerne, quand j'ai développé le jeu Muryaden, j'étais à fond dans la conception du soft aussi n'avais-je pas la possibilité à ce moment là de m'investir dans un programme (conséquent) d'échange entre ces systèmes.

J'ai trouvé qu'il était plus simple d'avoir un outil permettant d'avoir en même temps les 2 dos en ligne pour charger et sauvegarder mes programmes modifiés. A dire vrai, j'ai commencé bestialement par faire des chargements de mes programmes en ram dans un espace protégé (non altéré par un reboot) suivi de PR#6 après avoir mis un Rdos 3.3 en ligne dans mon drive.
Etant ainsi sous Rdos, je n'avais plus qu'à faire mes sauvegardes.

Mais ce n'était pas élégant (et long s'il y avait beaucoup de modifications). Aussi par la suite j'ai peaufiné une solution plus viable. C'est ainsi qu'est né DoubleDOS.

Il était avec tout un tas de programmes liés à mon projet Muryaden et ce n'est qu'en 1992 que j'ai décidé d'en faire une disquette "propre" à part entière dans le cadre d'un autre projet, celui d'un émulateur Rdos fonctionnant sous ProDOS en remplacement du BASIC.SYSTEM (j'ai nommé mon RDOS.SYSTEM).

Ce qui suit est la documentation de mon outil de conversion manuel.


Documentation Hellfire Club

DOUBLEDOS est l'assemblage des 2 DOS suivants:

RDOS 3.3 SSI   (Roland GUSTAFSSON - (C) 1981/1986)
DAVID-DOS II.2 (David WESTON - (C) 1984)


Le résultat vous permet de faire des transferts de programmes BASIC et BINaires d'une disquette RDOS 3.3 (perso ou du commerce mais déplombée évidemment!) vers une disquette DOS 3.x (x>=3) et vice versa. Je n'ai pas combiné les 2 Dos pour un autre usage; mon but premier étant de passer MES progs RDOS vers DOS 3.x pour après les transférer sous PRODOS et utiliser mon RDOS.SYSTEM.

IL N'Y A PAS DE TRANSFERT AUTOMATIQUE.
LES OPERATIONS DOIVENT ETRE REALISEES A LA MAIN OU PAR PROGRAMME.

Si vous voulez un programme de transfert automatique, utilisez plutôt la production américaine RDOS UTILITY TRANSFER de Andy McFadden qui effectue directement des conversions sous ProDOS (voir le magazine Computist numéro 52).


La disquette en annexe est bootable et contient tout ce qu'il faut.

Le DAVID-DOS II se charge et lance le programme HELLO.

WARNING: pour une raison que j'ignore, il arrive que le programme HELLO ne soit pas totalement exécuté au boot.
Je m'explique! Normalement, lorsque le DAVID-DOS trouve un PRINT CHR$(4)"HIDOS", il charge le Dos en carte langage et poursuit l'exécution du programme BASIC en sucrant toutes les lignes précédant la ligne du HIDOS (cette dernière comprise). Mais il arrive des fois (rare!) que le programme s'arrête après ce HIDOS. Dans ce cas là, vous devez faire un LOAD HELLO, enlever la ligne du HIDOS et faire un RUN pour charger le RDOS.

Lorsque le programme HELLO se déroule correctement, il vous propose de choisir entre un RDOS normal (catalog en piste $01) et un RDOS compatible avec Muryaden I & II (catalog piste $22). Avec ce dernier vous pouvez réellement aller voir tous les programmes de mes jeux de role...

Pour faire les échanges DOS - RDOS, je vous conseille de mette le disk RDOS en drive 1 et le disk DOS 3.3 en drive 2. Après un CATALOG,D2 le RDOS "travaillera" sur le lecteur 1 et le DAVID-DOS sur le 2.

Vous etes alors libre d'effectuer des &LOAD "nom" (ou autres commandes) et SAVE nom à gogo... (ou autres commandes)


Notes


Il y a des avantages et des inconvénients à avoir un catalog en piste $01 ou $22.
Avec le catalog en piste $01, le début du stockage de vos objets commencent à partir de la piste $02.
Si vous ne vouliez pas mettre de système d'exploitation sur une face et bien la piste $00 est perdue.

Avec un catalog en piste $22, vous ne perdez plus la piste $00 si vous ne souhaitez pas qu'elle soit bootable.
En bloquant le bloc 0, vous pouvez commencer le stockage dès le bloc rdos 1.
Mais c'est un peu plus lent car les programmes débutant en piste $00, il y a plus de "chance" pour que la majorité des programmes se trouvent sur les 1ères pistes or à chaque recherche d'un nom dans le catalog, la tête de lecture doit partir à l'opposée (enfin, ça dépend des projets et du nombre d'objets + la place prise).

Quelques informations sur les systèmes d'exploitation de la série des Muryadens:

Muryaden I  : rdos avec catalog en piste $22.
Muryaden II : présence de 2 Rdos différents sur la face 1. Le 1er pour la présentation (Rdos 3.3) puis lancement du
2nd qui est celui du jeu (catalog en piste $22). L'idée était d'une part faire croire à un Rdos classique (en ne montrant que les objets de la présentation) et d'autre part faire en sorte que lorsque le Rdos cherche un objet précis, il ne passe pas du temps en passant sur les objets de la présentation qui ne sont utilisés qu'une seule fois au boot.
Attention, faites un &CAT à partir de DoubleDOS et pas d'un simple Rdos 3.3 car il n'y a pas de secteur contenant le module externe &CAT sur les disks Muryaden.

Ces Rdos Muryaden commencent en $B400 au lieu de $B300 (longueur = $C00).
Pour Muryaden II, le Rdos du jeu correspond à l'objet GO dans le catalog en piste $01.
Il est chargé en $4400 (17408) puis est mové en $B400 via une routine implantée en $300 par le programme HELLO.
Les Rdos des 2 jeux ne sont pas identiques. On en reparlera prochainement.


1) INCOMPATIBILITE RDOS 2.1

DOUBLEDOS ne permet pas de manipuler les softs originaux écrits sous RDOS 2.1. Il y a un problème de compatibilité du fait des différences 13/16 secteurs. Ensuite certains cracks de softs initialement sous Rdos 2.1 et qui devraient en théorie passer  (suite à la conversion en RWTS 3.3) coincent du fait de la méthode utilisée par le pirate (skewing différent, ...) Dans certains cas, on obtient un catalog partiel avec un &CAT et dans d'autres, il y a rejet total avec un I/O error (à noter que ceci n'est pas du à l'absence de la commande externe &CAT sur un secteur de la piste 0 car cette commande a été incluse directement dans DoubleDOS pour éviter ce cas de figure).


2) ORGANISATION MEMOIRE AVEC DOUBLEDOS

David-DOS II.2

Carte lang. : DAVID DOS (compatible DOS 3.3).
$BE00-$BFFF : Adresses et autres faisant le lien BASIC/DAVID DOS.

RDOS 3.3

$AE00-$AEFF : module &CAT classique pré-chargé.
$AF00-$AFFF : NBUF1 du RDOS 3.3 (pour utilisation de la RWTS).
$B000-$B0FF : NBUF2 + les valeurs/compteurs/adresses utilisées par le RDOS qui se trouvaient avant à partir de $BF56.
$B100-$B1FF : Buffer contenant un module chargé (et autre usage comme avec &DEF).
$B200-$B2FF : Buffer contenant le secteur chargé par la RWTS).
$B300-$BDFF : RDOS 3.3 Roland GUSTAFSSON.


3) COMMANDE RDOS GOTO INTERDITE (WARNING: DON'T USE &GOTO CMD!!)

En effet, toutes les adresses de la page BF00 ont été transférées en B000 avec NBUF2. Donc un &GOTO bien que chargé correctement en $B200 puis copié en $B100 plantera lamentablement. (Ne devrais-je pas dire méchamment?)


4) HIMEM

Vous devez faire un HIMEM: 44544 (=$AE00) avant d'utiliser DOUBLEDOS (si vous n'etes pas passé par le programme HELLO qui s'en charge).


5) INCOMPATIBILITE DAVID-DOS/80 COLONNES

Le DAVID-DOS n'aime pas les CATALOG en 80 colonnes. Le résultat est caca!
DAVID n'a pas utilisé le retour chariot après l'affichage d'un nom. Il doit combler avec des espaces pour faire 40 caractères. (D'où des décalages en mode 80 colonnes)


6) CREER UNE DISQUETTE DOUBLEDOS

Il faut savoir que le DAVID-DOS utilise les octets $07-$26, $28-$2F de la VTOC (piste $11 secteur $00) pour stocker du code. En temps normal le DOS 3.3 n'utilise pas cette place.

Si l'octet $07 ne contient pas $A0 (1er mnémonic du code=LDY) le DAVID-DOS refuse d'effectuer le HIDOS.

ATTENTION DONC SI VOUS VOULEZ VOUS CREER UNE DISQUETTE DOUBLEDOS AVEC COPY II+ EN FORMATTANT ET EN NE RECOPIANT QUE LE DOS ET LES PROGRAMMES, CA NE MARCHERA PAS SI LA VTOC N'A PAS LE BON CODE.



hr DoubleDOS


DoubleDOS
DoubleDOS
DoubleDOS
DoubleDOS
DoubleDOS


Floppy
David Dos II & RDOS 3.3 ou RDOS Muryaden
Download DoubleDOS (with source codes) (gzipped)

Disk : DoubleDOS.dsk
"-" files are DELETED files | "*" files are LOCKED files
----------------------------------------------------------------------
 A A$0000 (000000) L$01F3 (000499) 004 HELLO
 B A$AE00 (044544) L$1000 (004096) 018 RDOS
 B A$AE00 (044544) L$1000 (004096) 018 RDOSP$22
 T A$0000 (000000) L$0400 (001024) 004 T.MAKE.DOUBLEDOS
 T A$0000 (000000) L$0B00 (002816) 011 T.INCLUDE.DOUBLEDOS          
 T A$0000 (000000) L$0D00 (003328) 013 T.MODULE.CAT
 T A$0000 (000000) L$0D00 (003328) 013 T.NBUF.VAR
 T A$0000 (000000) L$7A00 (031232) 122 T.INTERFACE
 T A$0000 (000000) L$0F00 (003840) 015 T.RWTS
 T A$0000 (000000) L$1C00 (007168) 028 T.RWTS.SUBS

This catalog contains 10 files. 0 were DELETED.
----------------------------------------------------------------------

10  REM DOS <-> RDOS CONVERTER
20  REM (C)1992 BY DECKARD
30  REM
40  PRINT  CHR$ (4)"HIDOS"
45  POKE 103,1: POKE 104,8: REM BASIC EN $801
50  HOME : PRINT "1 - RDOS AVEC CAT PISTE $1": PRINT "2 - RDOS AVEC CAT PISTE
$22": PRINT "3 - FIN"
55  PRINT : INPUT "CHOIX:";CH: IF CH = 3 THEN  END
60  IF CH = 1 THEN  PRINT  CHR$ (4)"BLOADRDOS,A$AE00": GOTO 70
65  PRINT  CHR$ (4)"BLOADRDOSP$22,A$AE00"
70  POKE 1014,0: POKE 1015,179: REM & SAUTE EN $B300
80  HIMEM: 44544: REM $AE00
90  PRINT "DECKARD présente...": PRINT : PRINT "DOUBLEDOS (RDOS
3.3/DAVID-DOS)": PRINT : PRINT "(C)1992 HELLFIRE CLUB"
100  PRINT : PRINT : PRINT "HIMEM doubleDOS: $AE00"
110  PRINT : PRINT "Ready.": PRINT
200  NEW
----------------------------------------------------------------------

Pour créer les objets RDOS et RDOSP$22, il faut charger le source T.MAKE.DOUBLEDOS sous Merlin-8 DOS (commande Read) puis l'assembler avec la commande ASM sous l'éditeur. Il vous demandera de taper les lettres R ou M suivi de ENTER. R, c'est pour avoir un Rdos avec catalog en piste $01 et M, c'est la version Muryaden avec catalog en piste $22.
L'objet correspondant est alors automatiquement sauvegardé sur la disquette.