Neotenien a écrit:
Je ne suis pas stupide!!
J'ai trouvé pourquoi yavé des écritures aléatoire, c'était un retour d'interruption sur une page "basic" dans une banque RAM. J'ai donc bouclé la routine assembleur principale... J'ai tout expliqué dans mon message précédent.
C'est juste pas ça
. J'insiste.. Tu te réserves toutes les RAM $A000->$DFFF depuis la banque basic n°2, mais charge et execute tout avec la banque basic n°1 active. Ya rien qui te choque là ? D'ailleurs as tu besoin de réserver 13 * 16 = 208 Ko de ram ? C'est quand même énorme.
Citation:
Et si le script Basic se fout dans la page banque 2 celle qui sert pour affichage écran, on considère que le retour à ce basic est impossible et à la fin du jeu, je ferai simplement un reboot à chaud.
Le basic se mets dans les banques que tu lui laisse libre à savoir la banque système n°0 (de $6000->$7xxx que tu lui laisse) et les banques basic n°0 et n°1.. Oui la banque n°1, celle qui est présente quand tu lances ton prog et celle que utilise comme écran (ram système n°2). Note aussi que comme je te l'ai indiqué à plusieurs reprises au début que tu te lançais dans le projet, le basic ne numérote pas les banque par les numéros systèmes. Il y a un décalage de 1 parce que ce que le basic appelle bank c'est la zone commutable de $A000 à $DFFF, pas la banque de ram physique.
Citation:
ADNZ en avait parlé également, on doit tout faire en assembleur.
C'est pas forcé. Ca dépend de ce qu'on veut faire, et de comment on le fait. Tu peux parfaitement déplacer le contenu de la bank système 2 (que tu va utiliser comme écran) dans la banque 15 pendant que ton programme tourne, et restaurer le système dans son état d'origine à la sortie de ton programme. C'est toi qui choisis.
Citation:
Le jeu "Mission LiftOff" ne retourne pas au basic, il tourne en Boucle.
Il utilise *toute* la ram (sans les 31 pages, point d'animation d'intro par exemple). Donc le basic est dégagé pour libérer un max de place
Citation:
Et d'ailleurs, à ma connaissance, aucun jeu en Assembleur 100% ne retourne au BASIC, on doit rebooter de manière hardware.
Si le jeu est en ASM 100%, il se charge même sans utiliser le basic : il est autboot. Donc pour sortir du jeu tu reviens au niveau du menu par le bouton reset de la machine comme cela se faisait à l'époque. Tous les jeux ST/Amiga/CPC/Spectrum font ainsi. C'est pas une surprise.
Par contre sur Thomson ya pas mal de jeux qui sont un mix ASM et BASIC et cela cohabite très bien. Je me souviens particulièrement bien de Coliseum, et de, plus récent, la secte noire à laquelle j'ai participé.
Citation:
Le problème est résolu.
Si tu le dis, mais pour moi tes explications ne sont pas claires dans la mesure où tu ne dis pas si tu as compris les points en rouges plus haut. Mais une chose est sure, en restant dans l'ASM c'est à dire dans un environnement que tu contrôles à 100%, si ca bug, c'est que ca vient de toi et pas de d'un codage ne permettant pas la cohabitation avec le système sous-jacent. Par contre il faudra tout faire à la main, les initialisations de l'extramon, du dos-disk, la gestion de la pile, etc. En particulier il faudra que tu fasses toi-même le chargement du binaire depuis le disk dans les bank mémoire. C'est pas mal de boulot, mais c'est passionnant, et c'est bien ca qui compte au final.