Forums Abandonware

Lankhor.net - Abw-Definition - Abw-Magazines - Abw-Videos - Abw annuaire
Nous sommes le 19-11-2018 19:37

Heures au format UTC+01:00




Poster un nouveau sujet  Répondre au sujet  [ 24 messages ]  Aller à la page 1 2 Suivante
Auteur Message
 Sujet du message : ZX81 France, les fichiers...
Message non luPosté : 19-06-2018 03:15 
Hors ligne
Legendary
Avatar du membre

Enregistré le : 22-02-2012 08:00
Messages : 486
Fichier(s) joint(s) :
Commentaire : Groupe fb : ZX81 France
zx81france.jpg
zx81france.jpg [ 17.93 Kio | Vu 114 fois ]




Bonjour à tous,

Ce fil est dédié aux échanges de fichiers du groupe Facebook dédié au ZX81:

Merci de bien vouloir vous enregistrer, et de commenter brièvement ou abondamment, vos fichiers déposés.

Le contenu des fichiers 'P' ou Zip devront respecter l'esprit de ce forum...
Merci à tous.

Nota:
- cliquez sur [répondre] pour ajouter vos contributions.
- En cas de modification ou suppression d'un de vos message, contactez-moi en MP.

Xavier / [XavSnap]

_________________
Modo Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr & http://abandonlistings.free.fr/tilt/


Haut
   
 Sujet du message : Re: ZX81 France, les fichiers...
Message non luPosté : 19-06-2018 04:03 
Hors ligne
Legendary
Avatar du membre

Enregistré le : 22-02-2012 08:00
Messages : 486
Salut,

Le ficher image de "Chevalier Arthur" de M. Bouat.

Fichier(s) joint(s) :
ChevalierArthur.gif
ChevalierArthur.gif [ 38.04 Kio | Vu 2844 fois ]


Fichier(s) joint(s) :
ScrChevalierA_ZX.zip [1.06 Mio]
Téléchargé 55 fois


Amusez-vous bien...

_________________
Modo Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr & http://abandonlistings.free.fr/tilt/


Haut
   
 Sujet du message : Re: ZX81 France, les fichiers...
Message non luPosté : 19-06-2018 13:34 
Hors ligne
Nomad

Enregistré le : 19-06-2018 12:48
Messages : 1
Bon package il est bien complet :-D


Haut
   
 Sujet du message : Re: ZX81 France, les fichiers...
Message non luPosté : 20-06-2018 21:37 
Hors ligne
Villager
Avatar du membre

Enregistré le : 20-06-2018 12:54
Messages : 5
Argolath

Fichier(s) joint(s) :
Argolath_jaq.jpg
Argolath_jaq.jpg [ 31.98 Kio | Vu 2813 fois ]


Page de référence :
https://arkalysproject.blogspot.com/201 ... olath.html

Sources :
Fichier(s) joint(s) :
Argolath.zip [84.68 Kio]
Téléchargé 50 fois


Modifié en dernier par jsm le 20-06-2018 22:51, modifié 1 fois.

Haut
   
 Sujet du message : Re: ZX81 France, les fichiers...
Message non luPosté : 20-06-2018 22:45 
Hors ligne
Legendary
Avatar du membre

Enregistré le : 22-02-2012 08:00
Messages : 486
Merci Jean-Stéphane.

_________________
Modo Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr & http://abandonlistings.free.fr/tilt/


Haut
   
 Sujet du message : Re: ZX81 France, les fichiers...
Message non luPosté : 20-06-2018 22:51 
Hors ligne
Villager
Avatar du membre

Enregistré le : 20-06-2018 12:54
Messages : 5
Rigel

Fichier(s) joint(s) :
Rigel.jpg
Rigel.jpg [ 46.25 Kio | Vu 2812 fois ]


touches :
R pour radar longue et courte portée
- pour tirer (bon courage)
S pour construire une base
0 check list
5,6,7,8 pour se déplacer

Source :
Fichier(s) joint(s) :
Rigel.zip [85.74 Kio]
Téléchargé 52 fois


Haut
   
 Sujet du message : Re: ZX81 France, les fichiers...
Message non luPosté : 20-06-2018 23:21 
Hors ligne
Villager
Avatar du membre

Enregistré le : 20-06-2018 12:54
Messages : 5
Banquise

C'est le jeu avec lequel j'ai usé le clavier de mon ZX81 quand j'avais 12 ans ! Je l'adorais et il m'a donné beaucoup de mal pour le récupérer. Ce n'est qu'une fois sauvé que nous avons trouvé qu'il venait du magazine 'Soft & Micro' de novembre 1984.

Fichier(s) joint(s) :
banquise_jaquette_jsm.png
banquise_jaquette_jsm.png [ 184.55 Kio | Vu 2808 fois ]
(la jaquette n'existe pas, c'est un faux de ma part)


extrait de Soft & Micro
Fichier(s) joint(s) :
source_Soft&Micro_low_res.pdf [459.88 Kio]
Téléchargé 54 fois


source :
Fichier(s) joint(s) :
banquise.zip [207.87 Kio]
Téléchargé 51 fois


Modifié en dernier par jsm le 20-06-2018 23:29, modifié 2 fois.

Haut
   
 Sujet du message : Re: ZX81 France, les fichiers...
Message non luPosté : 20-06-2018 23:24 
Hors ligne
Villager
Avatar du membre

Enregistré le : 20-06-2018 12:54
Messages : 5
XavierSnp a écrit :
Merci Jean-Stéphane.


de rien, il faut amorcer la pompe !

Par contre, la taille des fichiers autorisés ici est un peu faible si l'on veut mettre des PDF.


Haut
   
 Sujet du message : Re: ZX81 France, les fichiers...
Message non luPosté : 21-06-2018 01:20 
Hors ligne
Legendary
Avatar du membre

Enregistré le : 22-02-2012 08:00
Messages : 486
Salut,

Version d' "Argolath" non officielle modifiée.

Fichier(s) joint(s) :
Argolath_v2.zip [129.85 Kio]
Téléchargé 53 fois


C'est en effet, un programme hybride Basic/Assembleur qui accélère l'affichage du jeu.
Il est donné comme exemple, mais ne doit pas faire ombrage à l'original.

Ce n'est pas une mise à jour, ni une version officielle, mais une version altérative de XavSnap.
Cela pour éviter que cette version ne soit prise pour une version originale, commercialisée par Loriciels.

_________________
Modo Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr & http://abandonlistings.free.fr/tilt/


Haut
   
 Sujet du message : Re: ZX81 France, les fichiers...
Message non luPosté : 21-06-2018 01:28 
Hors ligne
Legendary
Avatar du membre

Enregistré le : 22-02-2012 08:00
Messages : 486
jsm a écrit :
Par contre, la taille des fichiers autorisés ici est un peu faible si l'on veut mettre des PDF.

Il y aura toujours une solution pour l'hébergement de fichiers "lourds"...

Un espace peut-être créé sur la page "zx81.ordi5.free.fr".
Mais, il est toujours possible de diffuser les PDF, en fichiers 'image jpg'.
Pour les listings, je vous propose de me les envoyer à mon adresse mail, pour les uploader sur ordi5.

Un lien sera créé sur ce forum, par la suite.

_________________
Modo Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr & http://abandonlistings.free.fr/tilt/


Haut
   
 Sujet du message : Re: ZX81 France, les fichiers...
Message non luPosté : 21-06-2018 01:57 
Hors ligne
Legendary
Avatar du membre

Enregistré le : 22-02-2012 08:00
Messages : 486
Juste une chose au sujet des PDF,

ORDI-5 et Echos Sinclair ont été mis en ligne sur le site:

Image

Image

Certains ne sont pas consultable directement, il faut envoyer les JPG au site, car les contributions ont été envoyées en PDF et non en images JPG séparées.

Je vais extraire les JPG pour "Fredo_L", afin qu'elle soit visible pour les visiteurs, et que des liens puissent être disponibles...

[EDIT] C'est fait, les "Echos Sinclair" seront visualisable prochainement...

Pour les livres, c'est ici : http://zx81.ordi5.free.fr/others/

Bonne lecture !

_________________
Modo Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr & http://abandonlistings.free.fr/tilt/


Haut
   
 Sujet du message : Comment Dumper une ROM...
Message non luPosté : 22-06-2018 01:38 
Hors ligne
Legendary
Avatar du membre

Enregistré le : 22-02-2012 08:00
Messages : 486
Salut,

Pour dumper une ROM matérielle, il suffit de créer une variable A$ et de la remplir avec le contenu binaire de cette ROM.

Tapez ce petit programme :

Code :
    1  REM [DEC:\
 42, 18, 64,235, 33,  0, 32,  1,\
  0, 16,237,176,195, 91,  0,201\
  ]

     2 DIM A$(4096)
     3 LET A$(1)=CHR$ USR 16514
 

Puis un SAVE pour l'enregistrer sur une K7.
Extraction du fichier "P", et isolement du binaire de A$ avec un éditeur.
Fichier(s) joint(s) :
Commentaire : écran Vb81
Capture.JPG
Capture.JPG [ 53.85 Kio | Vu 2765 fois ]

Puis pourra être chargée dans un émulateur.

Partie assembleur:

Code :
EXTERR equ $005B ; Basic Break function ! Ignore line instructions.
DEST      .equ $4012 ; Basic Vars pointer. (Last variable used)

ORG $4082 ; [@16514/@h4082]

   LD HL,(DEST) ; Vars A$(1) location
   EX DE,HL ; DE=HL
   LD HL,$2000 ; ROM location
   LD BC,4096 ; ROM lenght
   LDIR ; Copy bytes HL TO DE loc.
        JP EXTERR ; Exit and ignore de Basic line ! a$(1) is not changed.
   RET
.end


Fichier(s) joint(s) :
RomDump.zip [56.25 Kio]
Téléchargé 48 fois

_________________
Modo Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr & http://abandonlistings.free.fr/tilt/


Haut
   
 Sujet du message : animation sur ZX81...
Message non luPosté : 28-06-2018 08:15 
Hors ligne
Legendary
Avatar du membre

Enregistré le : 22-02-2012 08:00
Messages : 486
Salut,

Voici les sources assembleur de la démo pour l'affichage de blocs sur le ZX81:
Inclus TASM, les symboles en mémoire du ZX81 (accès ROM) et le code réécrit de l'affichage de bloc issus du programme "Chevalier Arthur" de Loriciels.

Header des blocs:
Offset D_file: + 01 00 ; début d'écran. (deux octets)
Nombre de ligne : XX ; (un octet)
Nombre de caractère sur une ligne: XX ; (un octet)
: XX XX XX XX ... ; Caractères à afficher.


Fichiers joints :
Commentaire : Anim 8 images ZX81
Anim8images.zip [156.04 Kio]
Téléchargé 47 fois

_________________
Modo Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr & http://abandonlistings.free.fr/tilt/
Haut
   
Message non luPosté : 03-07-2018 16:59 
Hors ligne
Legendary
Avatar du membre

Enregistré le : 22-02-2012 08:00
Messages : 486
Salut à tous,

En attendant, les excellentes nouvelles au sujet de la préservation des jeux d'antan... Je vous propose de vous initier au Z80, avec des exemples simples sous forme de démos...pour vous donner l'envie de faire vrombir votre Zx81 ou votre émulateur.


Fichier(s) joint(s) :
Commentaire : Image demo
wild-scroll.gif
wild-scroll.gif [ 14.08 Kio | Vu 2682 fois ]


Fichier(s) joint(s) :
Commentaire : Tuto ASM Z80
Wild-Scroll.zip [6.87 Kio]
Téléchargé 46 fois

_________________
Modo Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr & http://abandonlistings.free.fr/tilt/


Haut
   
 Sujet du message : Petits trucs...
Message non luPosté : 03-07-2018 18:29 
Hors ligne
Legendary
Avatar du membre

Enregistré le : 22-02-2012 08:00
Messages : 486
Salut,

En recherchant des exemples de routines ASM pour le ZX81, j'ai trouvé deux petits programmes inutilement indispensable!

Deux fond d'écran pour le masquage du bureau !
L'un est noir en plein écran (on en sort avec Alt+F4).
L'autre est une image JPG que l'on peut placer sous une fenêtre.

Donc sur cet exemple, le fond noir et le masque image.
Fichier(s) joint(s) :
Commentaire : Image fond
Fonds.JPG
Fonds.JPG [ 58.53 Kio | Vu 2681 fois ]


Fichier(s) joint(s) :
Commentaire : fonds pour fenêtres...
Fonds.zip [28.3 Kio]
Téléchargé 44 fois

Dlls Visual-Basic sur dskcenter.free.fr (à installer qu'un fois)

Ca évite de voir tous les bouts d'icones honteuses comme "Word", "excel" ou "commande DOS" que vous collectionnez avec amour!

;)

_________________
Modo Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr & http://abandonlistings.free.fr/tilt/


Haut
   
Message non luPosté : 17-07-2018 07:06 
Hors ligne
Legendary
Avatar du membre

Enregistré le : 22-02-2012 08:00
Messages : 486
Salut à tous,

Avant de désassembler, il faut garder à l'esprit qu'il peut y avoir plusieurs types d'informations dans un programme assembleur Z80.

Les mnémoniques du programme, constituées par une série de codes en octets spécifiques au processeur, les informations de saut, d'adressage et de donnée liées aux fonctions appelées.

Un octet (ou plus) aiguille vers une fonction bien spécifique, un peu comme un ascenseur et ses étages.

Le code 00 donne l'ordre du NOP : No Operand.

Le 01 donne un ordre LD (Load), et charge BC avec la valeur qui suit... LD BC= +2 octets.
l'incrémentation des pas (le PC) du processeur est automatique et dépend de la fonction.

Pour un NOP, c'est un décalage de 1 octet, pour lire la fonction suivante.
Pour un LD BC,xx c'est 3 pas, car BC est un registre dit "Paire" en 2 octets, la commande 1 octet.

Une petite particularité pour la lecture des données, c'est que ces données sont archivées dans l'ordre inverse de la lecture naturelle, donc si BC=00AA en hexadécimale, il est noté 01(fonction LD): AA (C) : 00 (B)

01,AA,00 sera donc désassemblé: LD BC,$00AA

liste des mnémoniques.

Dans un monde idéal, un programme assembleur serai constitué uniquement de fonctions et données de registre.

Mais, il faut parfois y stocker des textes, des données temporaires et des informations rémanentes.

Pour le désassembler, tout est code, et même le texte sera traité comme des instructions à exécuter.

Il faut donc différencier données, texte et mnémonique d’exécution.

Pour cela, nous avons la méthode visuelle et la méthode de repérage des valeurs numériques.

Prenons un exemple sur VB81, avec un programme assembleur.
Image

Il faut avant tout marger le programme assembleur, généralement inclus dans une REM, avec une adresse basse et une adresse haute... comprenant l'ensemble du code avec les datas.

Un clique permet de sélectionner une ligne REM en particulier, mais, parfois le mode "user" est nécessaire pour inclure plusieurs lignes.

Les marges peuvent être fixées manuellement en haut de la fenêtre de désassemblage.

Seule la partie margée sera désassemblée lors de l'exportation des codes sources.

Si la notation en Hexadécimal vous pose problème, cliquez sur l'entête de la colonne des adresses pour changer cette notation.... même chose pour les valeurs d'adresse (Hexa, décimal et texte) .
Image

Avec la fenêtre de visualisation binaire, vérifiez l'adresse des données texte et passez en mode texte dans la fenêtre de désassemblage (clique gauche sur l'entête de la colonne).
Image

Afin de différentier les données non actives (DATA et TEXTE), il suffit, avec un clique à droit, de donner la nature d'une zone... ou d'une adresse... puis avec l'appuie de "Shift" après le clique droit... le curseur change et un second clique droit remplit la zone entre la première et la seconde adresse, avec l'info de donnée de la première adresse.
Image

Nous avons donc une option DATA qui réserve la place à l'octet, du texte en mode ZX81, du texte en ASCII et un traitement en OP. Code langage machine (par défaut).

Le choix de ces informations est purement cosmétique et permettra au désassembleur embarqué du VB81, de modifier la notation des informations et de ne pas désassembler certains codes en DATA (partie en Basic entre les lignes REMs).

En .db "A","B","C","D","E","F" pour le texte.

En .db $01,$02,$03,$04,$05 pour les datas et le reste sera en Op. codes.

Pour l'exportation, c'est simple (!?!).
Image

Dans "Datas type", il est possible de sauvegarder les informations de désassemblage dans un fichier ".arr", afin de les retrouver plus tard avec le "LOAD".

Les carrés bleus avec la flèche permettent un "Copier" dans le presse-papier... en mode texte (plus rapide, pas de sauvegarde!).

Le bouton standard, lui, permet la sauvegarde du fichier en mode texte.
Image

Le résultat vous donnera un code source avec labels d'appels, de sauts, de datas et les caractères ZX directement exploitables dans TASM.

Le désassemblage fonctionne pour les CODES Spectrum, CPC, MSX ... mais, certaines informations spécifiques aux ZX81s pourront être mal interprétés... comme les IO, les adresses des variables du basic entre 4000-4080. etc...

Les 64K sont utilisables, mais dans ce cas, il faudra bloquer l'émulateur, pour éviter le plantage (émulation du code implanté).

Pour l’implantation binaire, c'est le carré gris avec une flèche rouge... mais attention, pour éviter l'écrasement des lignes REMs sur ZX81, l'émulateur fait un remplissage du binaire sur la partie bornée que vous avez définie à l'avance. Donc, si l'éditeur est de $4000 à $4100... le code implanté sera de $100 octets... et pas un de plus!

Il faut donc se mettre en "USER" pour définir une borne haute plus élevée en cas de débordement, en n'oubliant pas de "rafraichir" la zone définie.

Amusez-vous bien.
Xav.

_________________
Modo Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr & http://abandonlistings.free.fr/tilt/


Haut
   
 Sujet du message : Avis aux lecteurs...
Message non luPosté : 24-07-2018 05:10 
Hors ligne
Legendary
Avatar du membre

Enregistré le : 22-02-2012 08:00
Messages : 486
Vu dans l'Echos Sinclair n°10 [dernier numéro]
(Ce qui clôtura la publication du journal, car tout le monde n'oubliait plus de le demander!)

Fichier(s) joint(s) :
Echo10.jpg
Echo10.jpg [ 175.41 Kio | Vu 2461 fois ]


NDL(R): Méthode qui je n'approuve pas du tout, car l'équipe semblait "vivre" des contributions gratuites, et de la générosité des "généreux donateurs"...
Même chose pour l'Hebdogiciel, pour qui les auteurs devaient passer après la rédaction, l'imprimeur et les beuveries pour fêter les augmentations de salaires. En règle générale, la rémunération des auteurs n'était pas une priorité... et semblait être une économie non substantielle pour les "juges" distribuant l'honneur d'être publié.

_________________
Modo Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr & http://abandonlistings.free.fr/tilt/


Haut
   
 Sujet du message : Gestion des blocs graphiques...
Message non luPosté : 11-08-2018 00:04 
Hors ligne
Legendary
Avatar du membre

Enregistré le : 22-02-2012 08:00
Messages : 486
Salut à tous,

Fichier(s) joint(s) :
miroir2.jpg
miroir2.jpg [ 13.15 Kio | Vu 2305 fois ]



Cette démo est basée sur l'utilisation et la gestion de blocs graphiques relocalisable sur la fenêtre graphique de l'écran.
Il y a deux parties:
- Une partie en assembleur, pour l'affichage du bloc.
- Une partie donnée qui héberge le décalage du bloc,plus sa taille en hauteur et largeur:
Le type de stockage est le même que celui du jeu "chevalier Arthur" de M. Bouat.

;;Graphisme.
; x1 : Byte 2 -\_ D_FILE OFFSET: X2*256+X1
; X2 : Byte 1 -/ 33*lignes+colonnes
; X3 : RAWs (lignes à afficher)
; X4 : LENGHT PER RAW (largueur du bloc)

Cette nouvelle version du moteur d'affichage, permet l'affichage des blocs, en position fixe, en position relative et en miroir.

Position fixe: routine [BDisplay]
Position relocalisée: routine [XDisplay] D_File + valeur à l'adresse (GiveOFF) 2 octets.
Position fixe miroir: routine [MDisplay]
Position relocalisée: routine [XMDisplay]

Nous pouvons donc afficher des blocs graphiques de 1x1 à 32x24.
... ou des blocs de texte.

Un seul impératif est demandé: ne pas choisir un offset demandant un affichage à cheval avec la dernière line de l'écran.

Le moteur d'affichage ne contrôle effectivement pas le remplacement du caractère de fin de ligne [$76], et le supprimera... désorganisant définitivement l'affichage de la machine.
L'offset d'affichage est donc de (colonnex33)-largeur du bloc-1.

Une fois le D_file (mémoire écran) désorganisé, vous serez obligé de faire un RESET pour récupérer un affichage exploitable en BASIC/ASM.
Les fonctions RAND USR [XDisplay] et RND USR [MDisplay] sont directement exploitables en BASIC, mais en position relative, il faut poker la valeur du décalage à l'adresse [GiveOFF] dépendant du programme ASM compilé.

LET X=312 [$01$38]
POKE [GiveOFF],X-INT(X/256)*256 (valeur de l'octet faible)>>>[$38]
POKE [GiveOFF+1],INT(X/256) (valeur de l'octet fort)>>>[$01]
Puis, pointer sur une routine d'affichage [XDisplay] ....

Voici une petite démo en assembleur...
Fichier(s) joint(s) :
Commentaire : Démo ZX81
BlocTools.zip [222.09 Kio]
Téléchargé 44 fois

_________________
Modo Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr & http://abandonlistings.free.fr/tilt/


Haut
   
 Sujet du message : Créez vos blocs graphiques...
Message non luPosté : 11-08-2018 02:52 
Hors ligne
Legendary
Avatar du membre

Enregistré le : 22-02-2012 08:00
Messages : 486
Salut à tous,

Pour faire suite au poste précédent, voici la méthode la plus simple pour exporter un bloc de la mémoire écran du ZX81.
A l'aide de vb81, dessiner un bloc (Tools>EasyDraw) directement sur l'écran d'accueil.

Fichier(s) joint(s) :
Capture1.JPG
Capture1.JPG [ 51.34 Kio | Vu 2285 fois ]


Ouvrir la fenêtre de désassemblage, puis callez vous sur le début du D_File (après le basic ou en l'absence de programmes, il se trouve en $407D), puis trouvez l'adresse de fin de bloc pour mettre ces données en 'DATA'.

Fichier(s) joint(s) :
Capture2.JPG
Capture2.JPG [ 77.2 Kio | Vu 2285 fois ]


Sélectionnez le bouton "copier dans le presse papier" de la fonction Text>TASM.

Fichier(s) joint(s) :
Capture3.JPG
Capture3.JPG [ 54.54 Kio | Vu 2285 fois ]


Puis, copiez le tout dans un nouveau fichier.
Il suffira d'effacer les $76 (retour chariot) et les $00 (espaces) en trop.

Fichier(s) joint(s) :
Capture4.JPG
Capture4.JPG [ 53.46 Kio | Vu 2285 fois ]


Amusez-vous bien...

_________________
Modo Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr & http://abandonlistings.free.fr/tilt/


Haut
   
 Sujet du message : Cristal 5... Démo!
Message non luPosté : 12-11-2018 20:05 
Hors ligne
Legendary
Avatar du membre

Enregistré le : 22-02-2012 08:00
Messages : 486
Bonjour à tous,

Afin de vous faire patienter jusqu'à la sortie de la vidéo et l'interview de l'auteur, je vous dévoile la première partie du jeu, qui en comprend trois.

Le but de ce message n'est pas de refaire l'histoire, corriger ou faire une version destinée à humilier les autodidactes des années 80... Mais belle est bien de pointer les défauts du ZX81, et plus précisément ceux de son Basic.

C'est donc un exemple, un chalenge de ma part, qui suis fort d'une expérience de saisie "Bête et gentil" de près de deux cents listings, de l'écriture d'un émulateur et d'une persévérance hors du commun dans l'exploration de la simplicité tordue de ce bon vieux ZX81!

Il n'est donc pas question de refaire du vieux avec du mieux, de l'assembleur ou tout refaire...
Mais, de pointer des astuces de programmation glanées ici et là... Pour optimiser la mémoire (principalement) et la vitesse.

Que l'auteur ne tienne pas rigueur de ces modifications... elles ne sont possibles qu'avec les émulateurs et les outils actuels... car sur une machine (une vraie), certaines astuces sont bel et bien impossible à réaliser.
Je prend pour exemple, les lignes 'PRINT' pouvant faire 16K de long, alors que sur une machine, il serai lent et fastidieux des les taper, voir impossible de les éditer!

Donc, voici les deux programmes:
(Fichiers au format 'p' en fin de message)

Programme original:
Code :
# REM 5Z_Y _Y FW4__
     0  REM [HEX:\
21,BF,03,3E,80,D7,3E,00,\
2B,BC,20,F7,C9 ]


# REM  (C)1984 BY CYRIL DUFER
    10  REM [HEX:\
00,10,28,11,1D,25,24,20,\
00,27,3E,00,28,3E,37,2E,\
31,00,29,3A,2B,2A,37 ]

    15 RAND
    20 LET G$="µµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµ"
    30 LET F$="´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´"
    40 LET O$="********************************"
    50 DIM Q(36)
    55 LET Z$="fOUILLE : VOUS NE TROUVEZ RIEN  DE TRES INTERESSANT."
    60 LET E$="que«faites‘vous«Š"
    70 LET C$="vOUS REMARQUEZ AUSSI "
    80 LET H3=0
    90 LET H4=0
   100 LET H5=0
   110 LET H10=0
   120 LET H1=20
   130 LET H2=10
   140 LET H11=0
   150 LET H12=0
   160 LET H30=0
   170 LET H6=0
   180 LET H14=0
   190 LET M1=1
   200 GOSUB 520
   210 LET I=J
   220 GOSUB 520
   230 LET P=J
   240 GOSUB 520
   250 LET D=J
   260 GOSUB 520
   270 LET R=J
   280 GOSUB 520
   290 LET VO=J
   300 GOSUB 520
   310 LET F=J
   320 GOSUB 520
   330 LET E=J
   340 GOSUB 520
   350 LET VI=J
   360 GOSUB 520
   370 LET C=J
   380 GOSUB 520
   390 LET A=J
   400 GOSUB 520
   410 LET B1=J
   420 GOSUB 520
   430 LET B2=J
   440 GOSUB 520
   450 GOSUB 2920
   460 PRINT AT 21,7;"VOTRE NOM :       ";
   470 INPUT W$
   480 IF LEN W$>=9 THEN LET W$=W$( TO 9)
   490 PRINT AT 21,19;W$
   500 RAND SIN SIN SIN SIN PI
   510 RETURN
   520 LET J=INT (RND*20)+4
   530 RETURN
   540 PRINT AT 2,7;"Ž«transit«reussi«"
   550 LET B$="vous«etes«dans«l•obscurite"
   555 PRINT AT 5,3;B$
   560 PRINT AT 9,1;"la«piece«est«assez«oppressante";
   570 PRINT AT 11,5;"et«sent«le«renferme–––"
   580 LET N$="‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘"
   585 PRINT AT 6,3;N$
   590 PRINT AT 21,7;E$
   600 GOSUB 3550
   620 CLS
   630 GOSUB 4690
   640 IF Q(12) THEN GOTO 680
   650 CLS
   660 RAND USR 16514
   670 GOTO 550
   680 CLS
   690 GOSUB 5130
   700 PRINT ,,"oN RECONNAIT AISEMENT LA PIECE  PRINCIPALE DÀUN ABRI ANTI -     ATOMIQUE."
   710 PRINT ,,"lES MURS SONT COUVERTS          DÀETAGERES:LIVRES,VIDEOS,MUSIQUEBREF TOUT POUR SE DISTRAIRE     DURANT DES MOIS"
   720 PRINT ,,"oN VOIT 3 PORTES, ET UN ESCALIEREN SPIRALE;PRES DE LA PORTE SUD:UN INTERPHONE"
   730 PRINT ,,"¼-¸¸¯"
   740 PRINT "º   °"
   750 PRINT "I* O°  (5*5)"
   760 PRINT "º   °"
   770 PRINT "ª®®-¬"
   780 GOSUB 4320
   790 IF Q(32) THEN GOTO 1010
   800 IF Q(33) THEN GOTO 1250
   810 IF Q(34) THEN GOTO 840
   820 IF Q(10) THEN GOTO 1350
   830 GOTO 680
   840 CLS
   850 GOSUB 5130
   860 PRINT AT 2,10;"lE DORTOIR:"
   870 PRINT TAB 10;"----------"
   880 PRINT ,,"oN Y TROUVE 18 COUCHETTES       SUPERPOSEES ET DES ARMOIRES     METALLIQUES VIDES."
   890 PRINT ,,C$;"UNE PORTE."
   900 PRINT ,,,,,,"¼¸-¯"
   910 PRINT "º  °"
   920 PRINT "º *I  (4*5)"
   930 PRINT "º  °"
   940 PRINT "ª®®¬"
   945 LET H30=1
   950 GOSUB 4320
   960 IF Q(30) THEN PRINT AT 10,0;"lES LITS SONT FAIT,ET IL NÀY A  AUCUNE AFFAIRE PERSONNELLE"
   965 IF Q(30) THEN GOSUB 2920
   970 IF Q(13) THEN GOSUB 3550
   980 IF Q(32) THEN GOTO 1140
   990 IF Q(8) OR Q(9) OR Q(35) THEN GOTO 680
  1000 GOTO 840
  1010 CLS
  1020 GOSUB 5130
  1030 PRINT AT 2,11;"lA RESERVE:"
  1040 PRINT TAB 11;"----------"
  1050 PRINT ,,"pLUSIEURS METRES CUBES DE       NOURRITURE"
  1060 PRINT ,,"lES VIVRES SONT SUFFISANTS POUR 12 PERSONNES PENDANT 6 MOIS."
  1070 PRINT ,,,,,,"¼¸¸¸¯"
  1080 PRINT "º*  °  (5*3)"
  1090 PRINT "ª-®®¬"
  1100 GOSUB 4320
  1110 IF Q(19) THEN LET F=F+1
  1120 IF Q(8) OR Q(9) OR Q(33) THEN GOTO 680
  1130 GOTO 1010
  1140 CLS
  1150 GOSUB 5130
  1160 PRINT AT 2,13;"w‘c"
  1170 PRINT TAB 13;"---"
  1180 PRINT ,,"lES DOUCHES-TOILETTES DANS UN   COIN,UNE MACHINE A LAVER DANS   LÀAUTRE."
  1190 PRINT ,,,,,,"¼¸¸¯"
  1200 PRINT "º *°  (4*3)"
  1210 PRINT "ª®-¬"
  1220 GOSUB 4320
  1230 IF Q(33) OR Q(8) OR Q(9) THEN GOTO 840
  1240 GOTO 1140
  1250 CLS
  1260 GOSUB 5130
  1270 PRINT ,,,,"lONGUE PIECE CONTENANT: LES     DIVERS RESERVOIRS DÀEAU,DÀAIR   AINSI QUE LES FILTRES DE        RECYCLAGE."
  1280 PRINT ,,,,,,"¼¸¸¸¸¸¸-¯"
  1290 PRINT "º      *°  (9*3)"
  1300 PRINT "ª®®®®®®®¬"
  1310 GOSUB 4320
  1320 IF Q(8) OR Q(9) OR Q(32) THEN GOTO 680
  1330 CLS
  1340 GOTO 1250
  1350 CLS
  1360 GOSUB 5130
  1370 PRINT ,," lÀESCALIER : VOUS MONTEZ...";
  1380 RAND SIN SIN SIN SIN SIN SIN SIN PI
  1390 PRINT AT 4,14;"VOUS MONTEZ..."
  1400 RAND SIN SIN SIN SIN SIN SIN SIN PI
  1410 PRINT ,,"eT ENFIN 50 METRES PLUS HAUT,"
  1420 PRINT ,,"vOUS VOUS TROUVEZ DANS UN LONG  COULOIR."
  1430 PRINT "aUX 2 BOUTS: UNE PORTE FERME A   CLEF."
  1440 PRINT "aU MILIEU: UNE PORTE OUVERTE."
  1450 PRINT ,,"¼-¯"
  1460 LET Q$="º °"
  1470 PRINT Q$
  1480 PRINT Q$
  1490 PRINT "ºO°  (3*8)"
  1500 PRINT Q$
  1510 PRINT "º*I"
  1520 PRINT Q$
  1530 PRINT "ª-¬"
  1540 GOSUB 4320
  1550 IF H14 THEN GOTO 1610
  1560 LET H20=INT (RND*100)+1
  1570 IF Q(27) AND (Q(32) OR Q(33)) THEN GOTO 1830
  1580 IF Q(26) AND (Q(32) OR Q(33)) AND H20>H6 THEN PRINT AT 9,3;"vOUS NÀETES PAS CAPABLE DE       CROCHETER CETTE SERRURE."
  1590 IF Q(26) AND (Q(32) OR Q(33)) AND H20>H6 THEN GOSUB 2920
  1600 IF Q(26) AND H20>H6 AND (Q(32) OR Q(33)) THEN GOTO 2680
  1605 IF Q(26) AND H20<H6 AND (Q(32) OR Q(33)) THEN GOTO 1830
  1610 IF Q(35) THEN GOTO 1650
  1620 IF Q(11) THEN GOTO 680
  1630 IF NOT H14 THEN GOTO 2680
  1640 IF Q(32) OR Q(33) THEN GOTO 1830
  1645 GOTO 2680
  1650 CLS
  1660 GOSUB 5130
  1670 PRINT ,,"lE GARAGE: ECLAIRE PAR DES      MEURTRIERES,"
  1680 PRINT ,,"aU SOL, 2 MOTOS ELECTRIQUES A   MOITIE DEMONTEES ET HORS DÀUSAGE"
  1690 PRINT ,,"dE PLUS, VOUS REMARQUEZ LES     TRACES DÀUN VEHICULE PLUS GROS  MAIS CE VEHICULE A DISPARU."
  1700 PRINT ,,,,"¼¸¸¸¯"
  1710 LET Q$="º   °"
  1720 PRINT Q$
  1730 PRINT Q$
  1740 PRINT Q$;"  (5*8)"
  1750 PRINT Q$
  1760 PRINT "I * °"
  1770 PRINT Q$
  1780 PRINT "ª®®®¬"
  1790 GOSUB 4320
  1800 IF Q(8) OR Q(9) OR Q(34) THEN GOTO 2680
  1810 CLS
  1820 GOTO 1650
  1830 CLS
  1840 GOSUB 5130
  1850 LET H14=1
  1860 PRINT AT 2,6;" zONE DE SECURITE:"
  1870 PRINT ,,"lE SOL EST RECOUVERT DÀUNE      POUSSIERE BLEUATRE."
  1880 PRINT "cETTE ZONE EST FERMEE PAR 3 SAS."
  1890 PRINT ,," ½½"
  1900 PRINT "» ¬®®®®®®"
  1910 PRINT "º       °"
  1920 PRINT "«‘««««««°"
  1930 LET Q$="««««««««°"
  1940 PRINT Q$
  1950 PRINT Q$
  1960 PRINT "«««««««« ½  (9*10)"
  1970 PRINT Q$
  1980 PRINT Q$
  1990 PRINT Q$
  2000 PRINT "«‘««««««°"
  2010 PRINT "º     * °"
  2020 PRINT "± ¯¸¸¸¸¸¸"
  2030 PRINT " ½½"
  2040 LET H30=1
  2050 GOSUB 4320
  2060 CLS
  2070 PRINT TAB 11;"attention‰"
  2075 PRINT ,,"dORENAVANT,VOUS POUVEZ ETEINDRE VOTRE TORCHE:CETTE SALLE ET LES SUIVANTES SONT ECLAIREES."
  2080 IF Q(30) THEN PRINT ,,"fOUILLE:VOUS NE POUVEZ PAS      ANALYSER CETTE POUSSIERE."
  2090 IF Q(30) THEN PRINT ,,"dE PLUS VOUS TROUVEZ A COTE DU  SAS EST:DES ARMES"
  2100 LET Q$=" EST BLOQUE."
  2110 IF Q(32) THEN PRINT ,,"lE SAS NORD";Q$
  2120 IF Q(33) THEN PRINT ,,"lE SAS SUD";Q$
  2130 GOSUB 2920
  2140 IF Q(8) OR Q(9) OR Q(34) THEN GOTO 2680
  2150 IF Q(35) THEN GOTO 2180
  2160 CLS
  2170 GOTO 1830
  2180 CLS
  2190 GOSUB 5130
  2200 PRINT ,,"lA COMMANDE DU SAS ÀESTÀ MARCHE"
  2210 RAND SIN SIN SIN SIN SIN SIN PI
  2220 PRINT ,,"lA MASSIVE PORTE BLINDEE TOURNE LENTEMENT SUR SES GONDS."
  2230 RAND SIN SIN SIN SIN SIN SIN SIN SIN SIN SIN SIN SIN SIN PI
  2240 PRINT ,,"sI VOUS DESIREZ VIVRE LA SUITE  DE VOTRE MISSION SUR ÀVALIR 4À:"
  2250 PRINT ,,,,"- ˜) RECOPIEZ ATTENTIVEMENT"
  2260 PRINT TAB 5;"CETTE LIGNE:"
  2270 PRINT ,,;
  2280 LET Z=H1
  2290 GOSUB 2620
  2300 LET Z=H2
  2310 GOSUB 2620
  2320 LET Z=M1
  2330 GOSUB 2620
  2340 LET Z=I
  2350 GOSUB 2620
  2360 LET Z=P
  2370 GOSUB 2620
  2380 LET Z=D
  2390 GOSUB 2620
  2400 LET Z=R
  2410 GOSUB 2620
  2420 LET Z=VO
  2430 GOSUB 2620
  2440 LET Z=F
  2450 GOSUB 2620
  2460 LET Z=E
  2470 GOSUB 2620
  2480 LET Z=VI
  2490 GOSUB 2620
  2500 LET Z=C
  2510 GOSUB 2620
  2520 LET Z=A
  2530 GOSUB 2620
  2540 LET Z=B1
  2550 GOSUB 2620
  2560 LET Z=B2
  2570 GOSUB 2620
  2580 LET Z=H10
  2590 GOSUB 2620
  2600 PRINT W$
  2610 GOTO 2650
  2620 IF Z<10 THEN PRINT "0";Z;
  2630 IF Z>=10 THEN PRINT Z;
  2640 RETURN
  2650 PRINT ,,"- ™) METTEZ VOTRE MAGNETO SUR                 play"
  2660 GOSUB 2920
  2670 LOAD ""
  2680 CLS
  2690 GOSUB 5130
  2700 GOTO 1420
  2710 IF INKEY$="" THEN GOTO 2710
  2720 SCROLL
  2730 RETURN
  2740 IF INKEY$="" THEN GOTO 2740
  2750 SCROLL
  2755 PRINT "- 28) CONVAINC UN RESIDENT DE"
  2760 SCROLL
  2765 PRINT TAB 6;"FOURNIR UN RENSEIGNEMENT."
  2770 RETURN
  2780 STOP
  2790 CLS
  2792 PRINT ,,"- FUSIL 30/30 : ";H2;" BALLES"
  2795 PRINT ,,"- PARALYSANTS : ";H1;" JETS"
  2800 PRINT ,,,,"   -legende-"
  2810 PRINT ,," ¼¸¸¸¯ --> CLOISON"
  2820 PRINT " O     --> ESCALIER"
  2830 PRINT " -  I  --> PORTES"
  2840 PRINT " ½     --> SAS OU PORTE BLINDEE  *     --> VOTRE PERSONNAGE."
  2850 PRINT ,,"   N"
  2860 PRINT "  O+E  --> ROSE DES VENTS"
  2870 PRINT "   S"
  2880 PRINT ,," (3*6) --> (LONGUEUR * LARGEUR)"
  2890 GOSUB 2920
  2900 CLS
  2910 RETURN
  2920 PRINT AT 21,7;"entrez«Žnew‘line"
  2930 LET A$=INKEY$
  2940 IF A$<>"" THEN GOTO 2965
  2950 PRINT AT 21,7;"ENTREZ <NEW-LINE>"
  2960 GOTO 2920
  2965 PRINT AT 21,7;"««wait«a«minute««"
  2970 RETURN
  2980 CLS
  2990 PRINT TAB 8;E$
  3000 PRINT ,,"-  1) REGARDE DEVANT"
  3010 PRINT "-  2) REGARDE SUR LES COTES"
  3020 PRINT "-  3) REGARDE EN HAUT"
  3030 PRINT "-  4) REGARDE EN BAS"
  3040 PRINT "-  5) AVANCE NORMALEMENT"
  3050 PRINT "-  6) AVANCE ARME POINTE AU SOL"
  3060 PRINT "-  7) AVANCE ARME POINTEE DEVANT"
  3070 PRINT "-  8) RECULE"
  3080 PRINT "-  9) RECULE RAPIDEMENT"
  3090 PRINT "- 10) MONTE LÀESCALIER"
  3100 PRINT "- 11) DESCEND LÀESCALIER"
  3110 PRINT "- 12) ALLUME TORCHE"
  3120 PRINT "- 13) ETEIND TORCHE"
  3130 PRINT "- 14) ANALYSE LÀATMOSPHERE"
  3140 PRINT "- 15) MET COMBINAISON SPATIALE"
  3150 PRINT "- 16) ENLEVE COMBI. SPATIALE"
  3160 PRINT "- 17) REPARE COMBI. SPATIALE"
  3170 PRINT "- 18) PREND AIR COMPRIME SECOURS"
  3180 PRINT "- 19) MANGE"
  3190 PRINT "- 20) REPOS"
  3200 GOSUB 2710
  3210 PRINT "- 21) SOIGNE UN RESIDENT"
  3220 GOSUB 2710
  3230 PRINT "- 22) SOIGNE SOI-MEME"
  3240 GOSUB 2710
  3250 PRINT "- 23) TIRE UN JET DE PARALYSANT"
  3260 GOSUB 2710
  3270 PRINT "- 24) TIRE UNE BALLE EXPLOSIVE"
  3280 GOSUB 2710
  3290 PRINT "- 25) ATTAQUE AVEC LE COUTEAU"
  3300 GOSUB 2710
  3310 PRINT "- 26) CROCHETE UNE SERRURE"
  3320 GOSUB 2710
  3330 PRINT "- 27) FAIT EXPLOSER LA SERRURE"
  3340 GOSUB 2740
  3350 GOSUB 2710
  3360 PRINT "- 29) SEDUIT UN RESIDENT"
  3370 GOSUB 2710
  3380 PRINT "- 30) FOUILLE"
  3390 GOSUB 2710
  3400 PRINT "- 31) UTILISE LÀINTERPHONE"
  3410 GOSUB 2710
  3420 PRINT "- 32) PREND LA PORTE ÀNORDÀ"
  3430 GOSUB 2710
  3440 PRINT "- 33)";TAB 21;"ÀSUDÀ"
  3450 GOSUB 2710
  3460 PRINT "- 34)";TAB 21;"ÀOUESTÀ"
  3470 GOSUB 2710
  3480 PRINT "- 35)";TAB 21;"ÀESTÀ"
  3490 GOSUB 2710
  3500 PRINT "- 36) AVALE MEDICAMENTS"
  3510 RAND SIN SIN SIN SIN PI
  3520 SCROLL
  3530 GOSUB 2920
  3540 RETURN
  3550 POKE 16418,2
  3555 GOSUB 3660
  3560 GOSUB 3700
  3570 INPUT L$
  3575 IF L$="" THEN GOTO 3570
  3580 IF L$="A" OR L$="P" OR L$="R" OR L$="M" THEN GOTO 3610
  3585 LET L=VAL L$
  3590 IF L<=0 OR L>40 THEN GOTO 3570
  3600 LET Q(L)=1
  3610 IF L$="A" THEN GOSUB 2980
  3620 IF L$="P" THEN GOSUB 3890
  3630 IF L$="R" THEN RETURN
  3640 IF L$="M" THEN GOSUB 2790
  3650 GOTO 3560
  3660 FOR L=1 TO 36
  3670 LET Q(L)=0
  3680 NEXT L
  3690 RETURN
  3700 CLS
  3710 PRINT O$;AT 21,0;O$
  3720 PRINT AT 3,11;"’«menu«’"
  3730 PRINT ,,,,"1-36  -> ACTION"
  3740 PRINT ,,"ÀAÀ   -> LISTE ACTIONS"
  3750 PRINT ,,"ÀMÀ   -> LISTE MATERIEL"
  3755 PRINT ,,"ÀPÀ   -> PERSONNAGE"
  3760 PRINT ,,"ÀRÀ   -> RETOUR"
  3780 LET P$="ENTREZ VOTRE SELECTION"
  3790 FOR Q=1 TO LEN P$
  3800 LET X=CODE P$(Q)
  3810 LET Z=X+128
  3820 IF INKEY$<>"" THEN GOTO 3880
  3830 LET P$(Q)=CHR$ Z
  3840 PRINT AT 19,5;P$
  3850 LET P$(Q)=CHR$ X
  3860 NEXT Q
  3870 GOTO 3790
  3880 RETURN
  3890 CLS
  3900 PRINT TAB 3;"caracteristiques«de‰";W$
  3910 FOR Q=2 TO 11
  3920 PRINT AT Q,15;"º"
  3930 NEXT Q
  3940 PRINT AT 2,0;"intellec–«‰ ";I;TAB 16;"perception‰ ";P
  3950 PRINT ,,"decision««‰ ";D;TAB 16;"reflexe«««‰ ";R
  3960 PRINT ,,"volonte«««‰ ";VO;TAB 16;"force«««««‰ ";F
  3970 PRINT ,,"equilibre«‰ ";E;TAB 16;"vitalite««‰ ";VI
  3980 PRINT ,,"communic–«‰ ";C;TAB 16;"adaptation‰ ";A
  3990 PRINT ,,,,,,"apparence«‰ ";B1
  4000 PRINT ,,"reputation‰ ";B2
  4010 GOSUB 2920
  4020 RETURN
  4030 CLS
  4040 POKE 16518,33
  4050 GOSUB 4290
  4060 POKE 16518,32
  4070 GOSUB 4290
  4080 POKE 16518,31
  4090 GOSUB 4290
  4100 POKE 16518,30
  4110 GOSUB 4290
  4120 POKE 16518,29
  4130 GOSUB 4290
  4140 POKE 16518,28
  4150 GOSUB 4290
  4160 POKE 16518,14
  4170 GOSUB 4290
  4180 POKE 16518,27
  4190 GOSUB 4290
  4200 POKE 16518,1
  4210 GOSUB 4290
  4220 POKE 16518,6
  4230 GOSUB 4290
  4240 POKE 16518,7
  4250 GOSUB 4290
  4260 POKE 16518,128
  4270 RAND USR 16514
  4280 GOTO 540
  4290 RAND USR 16514
  4300 CLS
  4310 RETURN
  4320 GOSUB 2920
  4330 GOSUB 3550
  4340 CLS
  4350 GOSUB 4690
  4360 CLS
  4370 RETURN
  4380 SAVE "CRYSTALœ"
  4390 PRINT AT 3,12;"crystal«œ"
  4400 PRINT AT 5,4;"JE NE VOUS CACHE PAS QUE"
  4410 PRINT AT 7,3;"LÀAVENTURE PEUT SE REVELER"
  4420 PRINT AT 9,1;"DANGEREUSE.VOUS PARTIREZ AVEC"
  4430 PRINT AT 11,0;"TOUTES LES PRECAUTIONS POSSIBLES"
  4440 PRINT AT 13,1;"ET NE PRENDREZ PAS DE RISQUES"
  4450 PRINT AT 15,1;"INUTILES SI VOUS DECOUVREZ QUÀ"
  4460 PRINT AT 17,4;"ILS SONT TOUS MORTS..."
  4470 GOSUB 0
  4480 CLS
  4490 GOSUB 4580
  4500 FOR Z=1 TO 11
  4510 PRINT AT 3,12;"rEaDy Š"
  4520 PRINT AT 9,7;"ALORS , ACTION..."
  4530 PRINT AT 15,12;"TRANSIT"
  4540 PRINT AT 16,12;"-------"
  4550 PRINT AT 3,12;"ReAdY«?"
  4560 NEXT Z
  4570 GOSUB 4030
  4580 FOR Z=0 TO 20
  4590 PRINT AT Z,0;"¼¯";TAB 30;"¼¯"
  4600 NEXT Z
  4610 PRINT "¸¸";TAB 30;"¸¸"
  4620 FOR Z=21 TO 0 STEP -1
  4630 PRINT AT Z,2;"±";TAB 29;"»"
  4640 RAND PI*PI
  4650 PRINT AT Z,2;"»";TAB 29;"±"
  4660 PRINT AT Z,2;" ";TAB 29;" "
  4670 NEXT Z
  4680 RETURN
  4690 PRINT TAB 11;"remarques";AT 1,11;"---------"
  4700 IF Q(27) AND H2>0 THEN LET H2=H2-1
  4705 IF Q(27) AND H2<=0 THEN LET Q(27)=0
  4710 IF Q(16) THEN LET M1=1
  4720 IF Q(23) AND H1<=0 THEN LET Q(23)=0
  4730 IF Q(23) AND H1>0 THEN LET H1=H1-1
  4740 IF Q(14) THEN PRINT ,,"aTMOSPHERE : OK."
  4750 IF H1<=0 THEN PRINT ,,"vOTRE PARALYSANT EST VIDE."
  4760 IF Q(24) AND H2<=0 THEN LET Q(24)=0
  4770 IF Q(24) AND H2>0 THEN LET H2=H2-1
  4780 IF Q(15) AND H10=0 THEN LET M1=0
  4790 IF H2<=0 THEN PRINT ,,"vOTRE FUSIL 30/30 EST VIDE"
  4800 IF Q(19) AND H3>=7 THEN LET F=F+1
  4810 IF Q(19) THEN LET H3=0
  4815 IF H3=7 OR H3=10 OR H3=13 OR H3=16 OR H3=20 THEN LET F=F-1
  4820 IF Q(20) AND H4>=12 THEN LET VI=VI+1
  4830 IF Q(20) THEN LET H4=0
  4833 IF H4=12 OR H4=15 OR H4=19 OR H4=22 THEN LET VI=VI-1
  4840 IF Q(22) AND H5 THEN LET VI=VI+INT (RND*5)+1
  4850 IF Q(26) THEN LET H6=((P-10)+(A-10)+(I-10))*4
  4860 IF Q(28) THEN LET H7=((C-10)+(D-10)+(I-10))*4
  4870 IF Q(29) THEN LET H8=((C-10)+(A-10))*4
  4880 IF Q(29) AND B1>19 THEN LET H8=H8+10
  4890 PRINT
  4891 IF M1 AND H10=5 THEN PRINT "vOUS AVEZ FROID."
  4893 IF M1 AND H10=5 THEN LET VI=VI-1
  4900 IF M1 AND H10=8 THEN PRINT "vOUS VENEZ DE TOUSSER"
  4905 IF H10=8 THEN LET VI=VI-1
  4910 IF M1 AND H10=12 THEN PRINT "vOUS TOUSSEZ POUR LA DEUXIEME   FOIS."
  4911 IF H10=12 THEN LET VI=VI-1
  4920 IF Q(36) THEN LET H12=0
  4930 IF Q(36) THEN LET H11=1
  4940 LET H12=H12+1
  4950 IF H12=6 THEN LET H11=0
  4960 IF H12=6 THEN LET H12=0
  4970 IF H12=6 THEN LET VI=VI-1
  4980 IF H11 AND M1 AND H10=15 OR H10=13 THEN PRINT "vOUS ETERNUEZ"
  4990 IF M1 AND H10=23 AND H11 THEN PRINT "vOUS AVEZ DE LA FIEVRE"
  5000 IF M1 AND (H10=30 OR H10=33 OR H10=36) AND H11 THEN PRINT "vOUS ETES TRES MALADE."
  5010 IF H11 AND M1 AND H10=15 OR H10=13 THEN LET VI=VI-3
  5020 IF H11 AND M1 AND H10=20 THEN LET VI=VI-(INT (RND*4)+1)
  5030 IF H11 AND M1 AND (H10=30 OR H10=33 OR H10=36) THEN LET VI=VI-(INT (RND*6)+2)
  5060 LET H3=H3+1
  5070 LET H4=H4+1
  5080 LET H10=H10+1
  5090 IF Q(30) AND NOT H30 THEN PRINT ,,Z$
  5095 LET H30=0
  5100 IF Q(31) THEN PRINT ,,"lE VOYANT DE LÀINTERPHONE SÀEST ALLUME,MAIS PERSONNE NE REPOND"
  5110 IF VI<=0 THEN GOTO 5190
  5120 GOSUB 2920
  5124 IF Q(13) AND NOT H14 THEN GOSUB 5330
  5125 RETURN
  5160 PRINT F$
  5163 POKE 16418,0
  5166 PRINT AT 23,0;G$
  5170 PRINT AT 1,0;
  5180 RETURN
  5190 CLS
  5195 RAND USR 16514
  5200 PRINT AT 6,7;"HORREUR."
  5210 FOR Z=0 TO 21
  5230 PRINT AT 11,4;"++++++++++++++"
  5240 PRINT AT Z,Z;""
  5250 PRINT AT 11,4;"vous«etes«mort"
  5260 PRINT AT Z,21-Z;""
  5270 NEXT Z
  5280 LET A$="½½½½½½½½½½"
  5290 FOR Z=21 TO 0 STEP -1
  5300 PRINT AT Z,22;A$
  5310 NEXT Z
  5320 GOTO 9999
  5330 POKE 16518,128
  5340 CLS
  5350 RAND USR 16514
  5360 PRINT AT 6,3;B$
  5370 PRINT AT 7,3;N$
  5390 GOSUB 4320
  5400 IF Q(12) THEN RETURN
  5410 GOTO 5340


Programme optimisé:
Code :
# REM REMPLISSAGE ASM
#
#ORG $4082 ; [@16514/@h4082]
#   LD HL,$03BF
#Lb4085:
#   LD A,$80
#   RST 10H ; Display= A reg.
#   LD A,$00
#   DEC HL
#   CP H
#   JR NZ, Lb4085 ; [$4085:16517]
#   RET ; ==========================

     0  REM [HEX:\
21,BF,03,3E,80,D7,3E,00,\
2B,BC,20,F7,C9 ]

# REM  (C)1984 BY CYRIL DUFER
    10  REM (C)1984 BY CYRIL DUFER
    15 RAND
    20 LET G$="µµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµ"
    30 LET F$="´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´"
    40 LET O$="********************************"
    50 DIM Q(36)
    60 DIM W$(9)
    75 LET S=4
    77 lET G=VAL"16514"
    80 LET H3=0
    90 LET H4=0
   100 LET H5=0
   110 LET H10=0
   120 LET H1=20
   130 LET H2=10
   140 LET H11=0
   150 LET H12=0
   160 LET H30=0
   170 LET H6=0
   180 LET H14=0
   190 LET M1=1
   210 LET I=INT (RND*H1)+S
   230 LET P=INT (RND*H1)+S
   250 LET D=INT (RND*H1)+S
   270 LET R=INT (RND*H1)+S
   290 LET VO=INT (RND*H1)+S
   310 LET F=INT (RND*H1)+S
   330 LET E=INT (RND*H1)+S
   350 LET VI=INT (RND*H1)+S
   370 LET C=INT (RND*H1)+S
   390 LET A=INT (RND*H1)+S
   410 LET B1=INT (RND*H1)+S
   430 LET B2=INT (RND*H1)+S
   440 lET J=INT (RND*H1)+S
   450 GOSUB 2920
   460 PRINT AT 21,7;"VOTRE NOM :       ";
   470 INPUT W$
   480 LET W$=W$( TO 9)
   490 PRINT AT 21,19;W$
   500 RAND SIN SIN SIN SIN PI
   510 RETURN
   540 PRINT AT 2,7;"Ž«transit«reussi«";AT 5,3;"vous«etes«dans«l•obscurite";AT 9,1;"la«piece«est«assez«oppressante";AT 11,5;"et«sent«le«renferme–––"
   580 LET N$="‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘"
   585 PRINT AT 6,3;N$
   590 PRINT AT 21,7;"que«faites‘vous«Š"
   595 GOSUB 2710
   600 GOSUB 3550
   620 CLS
   630 GOSUB 4690
   640 IF Q(12) THEN GOTO 680
   650 CLS
   660 RAND USR G
   670 GOTO 550
   680 CLS
   690 GOSUB 5130
   700 PRINT ,,"oN RECONNAIT AISEMENT LA PIECE  PRINCIPALE DÀUN ABRI ANTI -","ATOMIQUE.",,,,"lES MURS SONT COUVERTS","DÀETAGERES:LIVRES,VIDEOS,MUSIQUEBREF TOUT POUR SE DISTRAIRE","DURANT DES MOIS",,,,"oN VOIT 3 PORTES, ET UN ESCALIEREN SPIRALE;PRES DE LA PORTE SUD:UN INTERPHONE",,,,"¼-¸¸¯",,"º   °",,"I* O°  (5*5)",,"º   °",,"ª®®-¬"
   780 GOSUB 4320
   790 IF Q(32) THEN GOTO 1010
   800 IF Q(33) THEN GOTO 1250
   810 IF Q(34) THEN GOTO 840
   820 IF Q(10) THEN GOTO 1350
   830 GOTO 680
   840 CLS
   850 GOSUB 5130
   860 PRINT AT 2,10;"lE DORTOIR:",TAB 10;"----------",,,"oN Y TROUVE 18 COUCHETTES","SUPERPOSEES ET DES ARMOIRES","METALLIQUES VIDES.",,,,,"vOUS REMARQUEZ AUSSI UNE PORTE.",,,,,,,"¼¸-¯",,"º  °",,"º *I  (4*5)",,"º  °",,"ª®®¬"
   945 LET H30=1
   950 GOSUB 4320
   960 IF Q(30) THEN PRINT AT 10,0;"lES LITS SONT FAIT,ET IL NÀY A  AUCUNE AFFAIRE PERSONNELLE"
   965 IF Q(30) THEN GOSUB 2920
   970 IF Q(13) THEN GOSUB 3550
   980 IF Q(32) THEN GOTO 1140
   990 IF Q(8) OR Q(9) OR Q(35) THEN GOTO 680
  1000 GOTO 840
  1010 CLS
  1020 GOSUB 5130
  1030 PRINT AT 2,11;"lA RESERVE:",TAB 11;"----------"
  1050 PRINT ,,"pLUSIEURS METRES CUBES DE","NOURRITURE",,,,"lES VIVRES SONT SUFFISANTS POUR 12 PERSONNES PENDANT 6 MOIS."
  1070 PRINT ,,,,,,"¼¸¸¸¯",,"º*  °  (5*3)",,"ª-®®¬"
  1100 GOSUB 4320
  1110 IF Q(19) THEN LET F=F+1
  1120 IF Q(8) OR Q(9) OR Q(33) THEN GOTO 680
  1130 GOTO 1010
  1140 CLS
  1150 GOSUB 5130
  1160 PRINT AT 2,13;"w‘c",TAB 13;"---",,,,,"lES DOUCHES-TOILETTES DANS UN   COIN,UNE MACHINE A LAVER DANS   LÀAUTRE.",,,,,,,,"¼¸¸¯",,"º *°  (4*3)",,"ª®-¬"
  1220 GOSUB 4320
  1230 IF Q(33) OR Q(8) OR Q(9) THEN GOTO 840
  1240 GOTO 1140
  1250 CLS
  1260 GOSUB 5130
  1270 PRINT ,,,,"lONGUE PIECE CONTENANT: LES     DIVERS RESERVOIRS DÀEAU,DÀAIR   AINSI QUE LES FILTRES DE        RECYCLAGE.",,,,,,,,"¼¸¸¸¸¸¸-¯",,"º      *°  (9*3)","ª®®®®®®®¬"
  1310 GOSUB 4320
  1320 IF Q(8) OR Q(9) OR Q(32) THEN GOTO 680
  1330 CLS
  1340 GOTO 1250
  1350 CLS
  1360 GOSUB 5130
  1370 PRINT ,," lÀESCALIER : VOUS MONTEZ...";
  1380 RAND SIN SIN SIN SIN SIN SIN SIN PI
  1390 PRINT AT 4,14;"VOUS MONTEZ..."
  1400 RAND SIN SIN SIN SIN SIN SIN SIN PI
  1410 PRINT ,,"eT ENFIN 50 METRES PLUS HAUT,",,,
  1420 PRINT "vOUS VOUS TROUVEZ DANS UN LONG  COULOIR.",,"aUX 2 BOUTS: UNE PORTE FERME A   CLEF.",,"aU MILIEU: UNE PORTE OUVERTE.",,,"¼-¯"
  1460 LET Q$="º °"
  1470 PRINT Q$,,Q$,,"ºO°  (3*8)",,Q$,,"º*I",,Q$,,"ª-¬"
  1540 GOSUB 4320
  1550 IF H14 THEN GOTO 1610
  1560 LET H20=INT (RND*100)+1
  1570 IF Q(27) AND (Q(32) OR Q(33)) THEN GOTO 1830
  1580 IF Q(26) AND (Q(32) OR Q(33)) AND H20>H6 THEN PRINT AT 9,3;"vOUS NÀETES PAS CAPABLE DE       CROCHETER CETTE SERRURE."
  1590 IF Q(26) AND (Q(32) OR Q(33)) AND H20>H6 THEN GOSUB 2920
  1600 IF Q(26) AND H20>H6 AND (Q(32) OR Q(33)) THEN GOTO 2680
  1605 IF Q(26) AND H20<H6 AND (Q(32) OR Q(33)) THEN GOTO 1830
  1610 IF Q(35) THEN GOTO 1650
  1620 IF Q(11) THEN GOTO 680
  1630 IF NOT H14 THEN GOTO 2680
  1640 IF Q(32) OR Q(33) THEN GOTO 1830
  1645 GOTO 2680
  1650 CLS
  1660 GOSUB 5130
  1670 PRINT ,,"lE GARAGE: ECLAIRE PAR DES","MEURTRIERES,",,,,"aU SOL, 2 MOTOS ELECTRIQUES A   MOITIE DEMONTEES ET HORS DÀUSAGE",,,,"dE PLUS, VOUS REMARQUEZ LES","TRACES DÀUN VEHICULE PLUS GROS  MAIS CE VEHICULE A DISPARU.",,,"¼¸¸¸¯"
  1710 LET Q$="º   °"
  1720 PRINT Q$,,Q$,,Q$;"  (5*8)",,Q$,,"I * °",,Q$,,"ª®®®¬"
  1790 GOSUB 4320
  1800 IF Q(8) OR Q(9) OR Q(34) THEN GOTO 2680
  1810 CLS
  1820 GOTO 1650
  1830 CLS
  1840 GOSUB 5130
  1850 LET H14=1
  1860 PRINT AT 2,6;" zONE DE SECURITE:",,,"lE SOL EST RECOUVERT DÀUNE","POUSSIERE BLEUATRE.","cETTE ZONE EST FERMEE PAR 3 SAS.",," ½½"
  1900 PRINT "» ¬®®®®®®",,"º       °",,"«‘««««««°"
  1930 LET Q$="««««««««°"
  1940 PRINT Q$,,Q$,,"«««««««« ½  (9*10)",Q$,,Q$,,Q$,,"«‘««««««°",,"º     * °",,"± ¯¸¸¸¸¸¸",," ½½"
  2040 LET H30=1
  2050 GOSUB 4320
  2060 CLS
  2070 PRINT TAB 11;"attention‰",,,"dORENAVANT,VOUS POUVEZ ETEINDRE VOTRE TORCHE:CETTE SALLE ET LES SUIVANTES SONT ECLAIREES."
  2080 IF Q(30) THEN PRINT ,,"fOUILLE:VOUS NE POUVEZ PAS","ANALYSER CETTE POUSSIERE."
  2090 IF Q(30) THEN PRINT ,,"dE PLUS VOUS TROUVEZ A COTE DU  SAS EST:DES ARMES"
  2100 LET Q$=" EST BLOQUE."
  2110 IF Q(32) THEN PRINT ,,"lE SAS NORD";Q$
  2120 IF Q(33) THEN PRINT ,,"lE SAS SUD";Q$
  2130 GOSUB 2920
  2140 IF Q(8) OR Q(9) OR Q(34) THEN GOTO 2680
  2150 IF Q(35) THEN GOTO 2180
  2160 CLS
  2170 GOTO 1830
  2180 CLS
  2190 GOSUB 5130
  2200 PRINT ,,"lA COMMANDE DU SAS ÀESTÀ MARCHE"
  2210 RAND SIN SIN SIN SIN SIN SIN PI
  2220 PRINT ,,"lA MASSIVE PORTE BLINDEE TOURNE LENTEMENT SUR SES GONDS."
  2230 RAND SIN SIN SIN SIN SIN SIN SIN SIN SIN SIN SIN SIN SIN PI
  2240 PRINT ,,"sI VOUS DESIREZ VIVRE LA SUITE  DE VOTRE MISSION SUR ÀVALIR 4À:",,,"- ˜) RECOPIEZ ATTENTIVEMENT",,TAB 5;"CETTE LIGNE:",,,,("0" AND H1<10);H1;("0" AND H2<10);H2;("0" AND M1<10);M1;("0" AND I<10);I;("0" AND P<10);P;("0" AND D<10);D;("0" AND R<10);R;("0" AND VO<10);VO;("0" AND F<10);F;("0" AND E<10);E;("0" AND VI<10);VI;("0" AND C<10);C;("0" AND A<10);A;("0" AND B1<10);B1;("0" AND B2<10);B2;("0" AND H10<10);H10;W$,,,,"  - ™) METTEZ VOTRE MAGNETO SUR                 play"
  2660 GOSUB 2920
  2670 LOAD ""
  2680 CLS
  2690 GOSUB 5130
  2700 GOTO 1420
  2710 FOR Q=0 TO 500
  2711 IF INKEY$="" THEN NEXT Q
  2714 RETURN
  2720 IF INKEY$="" THEN GOTO 2720
  2722 FOR Q=0 TO 8
  2724 SCROLL
  2726 NEXT Q
  2730 PRINT AT 13,0;
  2770 RETURN
  2790 CLS
  2792 PRINT ,,"- FUSIL 30/30 : ";H2;" BALLES",,,"- PARALYSANTS : ";H1;" JETS",,,,,"   -legende-",,,," ¼¸¸¸¯ --> CLOISON"," O     --> ESCALIER"," -  I  --> PORTES"," ½     --> SAS OU PORTE BLINDEE  *     --> VOTRE PERSONNAGE.",,,"   N",,"  O+E  --> ROSE DES VENTS","   S",,,," (3*6) --> (LONGUEUR * LARGEUR)"
  2890 GOSUB 2920
  2900 CLS
  2910 RETURN
  2920 PRINT AT 21,7;"entrez«Žnew‘line"
  2930 LET A$=INKEY$
  2940 IF A$<>"" THEN GOTO 2965
  2950 PRINT AT 21,7;"ENTREZ <NEW-LINE>"
  2960 GOTO 2920
  2965 PRINT AT 21,7;"«««un««instant«««"
  2970 RETURN
  2980 CLS
  2990 PRINT TAB 8;"que«faites‘vous«Š"
  3000 PRINT ,,"-  1) REGARDE DEVANT","-  2) REGARDE SUR LES COTES","-  3) REGARDE EN HAUT","-  4) REGARDE EN BAS","-  5) AVANCE NORMALEMENT","-  6) AVANCE ARME POINTE AU SOL","-  7) AVANCE ARME POINTEE DEVANT-  8) RECULE",,"-  9) RECULE RAPIDEMENT","- 10) MONTE LÀESCALIER","- 11) DESCEND LÀESCALIER","- 12) ALLUME TORCHE","- 13) ETEIND TORCHE","- 14) ANALYSE LÀATMOSPHERE","- 15) MET COMBINAISON SPATIALE","- 16) ENLEVE COMBI. SPATIALE","- 17) REPARE COMBI. SPATIALE","- 18) PREND AIR COMPRIME SECOURS- 19) MANGE",,"- 20) REPOS"
  3200 GOSUB 2720
  3210 PRINT "- 21) SOIGNE UN RESIDENT","- 22) SOIGNE SOI-MEME","- 23) TIRE UN JET DE PARALYSANT","- 24) TIRE UNE BALLE EXPLOSIVE","- 25) ATTAQUE AVEC LE COUTEAU","- 26) CROCHETE UNE SERRURE","- 27) FAIT EXPLOSER LA SERRURE","- 28) CONVAINC UN RESIDENT DE",TAB 6;"FOURNIR UN RENSEIGNEMENT."
  3220 GOSUB 2720
  3330 PRINT "- 29) SEDUIT UN RESIDENT","- 30) FOUILLE",,"- 31) UTILISE LÀINTERPHONE","- 32) PREND LA PORTE ÀNORDÀ","- 33)";TAB 21;"ÀSUDÀ","- 34)";TAB 21;"ÀOUESTÀ","- 35)";TAB 21;"ÀESTÀ","- 36) AVALE MEDICAMENTS"
  3510 RAND SIN SIN SIN SIN PI
  3520 SCROLL
  3530 GOSUB 2920
  3540 RETURN
  3550 POKE 16418,2
  3555 DIM Q(36)
  3560 GOSUB 3700
  3570 INPUT L$
  3575 IF L$="" THEN GOTO 3570
  3580 IF L$="A" OR L$="P" OR L$="R" OR L$="M" THEN GOTO 3610
  3585 LET L=VAL L$
  3590 IF L<=0 OR L>40 THEN GOTO 3570
  3600 LET Q(L)=1
  3610 IF L$="A" THEN GOSUB 2980
  3620 IF L$="P" THEN GOSUB 3890
  3630 IF L$="R" THEN RETURN
  3640 IF L$="M" THEN GOSUB 2790
  3650 GOTO 3560
  3700 CLS
  3710 PRINT O$;AT 21,0;O$
  3720 PRINT AT 3,11;"’«menu«’"
  3730 PRINT ,,,,"1-36  -> ACTION",,,,"ÀAÀ   -> LISTE ACTIONS",,,"ÀMÀ   -> LISTE MATERIEL",,,"ÀPÀ   -> PERSONNAGE",,,"ÀRÀ   -> VALIDER LE TOUR"
  3780 LET P$="ENTREZ VOTRE SELECTION"
  3790 FOR Q=1 TO LEN P$
  3810 LET Z=CODE P$(Q)+128
  3820 IF INKEY$<>"" THEN GOTO 3880
  3830 LET P$(Q)=CHR$ Z
  3840 PRINT AT 19,5;P$
  3845 IF INKEY$<>"" THEN GOTO 3880
  3850 LET P$(Q)=CHR$ (Z-128)
  3860 NEXT Q
  3870 GOTO 3790
  3880 RETURN
  3890 CLS
  3900 PRINT TAB 3;"caracteristiques«de‰ ";W$;AT 2,14;
  3910 FOR Q=2 TO 11
  3920 PRINT TAB15;"º"
  3930 NEXT Q
  3940 PRINT AT 2,0;"intellec–«‰ ";I,"perception‰ ";P,,,"decision««‰ ";D,"reflexe«««‰ ";R,,,"volonte«««‰ ";VO,"force«««««‰ ";F,,,"equilibre«‰ ";E,"vitalite««‰ ";VI,,,"communic–«‰ ";C,"adaptation‰ ";A,,,,,,,"apparence«‰ ";B1,"reputation‰ ";B2
  4010 GOSUB 2920
  4020 RETURN
  4030 CLS
  4040 lET Z$="543210:."+CHR$(1)+CHR$(6)+CHR$(7)
  4050 FOR Q=1 TO 11
  4060 POKE 16518,CODE Z$(Q)
  4090 RAND USR G
  4100 CLS
  4110 NEXT Q
  4160 POKE 16518,128
  4170 RAND USR G
  4200 GOTO 540
  4320 GOSUB 2920
  4330 GOSUB 3550
  4340 CLS
  4350 GOSUB 4690
  4360 CLS
  4370 RETURN
  4380 SAVE "CRYSTALœ"
  4390 PRINT AT 3,12;"crystal«œ";AT 5,4;"JE NE VOUS CACHE PAS QUE";AT 7,3;"LÀAVENTURE PEUT SE REVELER";AT 9,1;"DANGEREUSE.VOUS PARTIREZ AVEC";AT 11,0;"TOUTES LES PRECAUTIONS POSSIBLES";AT 13,1;"ET NE PRENDREZ PAS DE RISQUES";AT 15,1;"INUTILES SI VOUS DECOUVREZ QUÀ";AT 17,4;"ILS SONT TOUS MORTS..."
  4470 GOSUB 0
  4480 CLS
  4490 GOSUB 4580
  4500 FOR Z=1 TO 11
  4510 PRINT AT 3,12;"rEaDy Š";AT 9,7;"ALORS , ACTION...";AT 15,12;"TRANSIT";AT 16,12;"-------";AT 3,12;"ReAdY«?"
  4560 NEXT Z
  4570 GOSUB 4030
  4580 FOR Z=0 TO 20
  4590 PRINT "¼¯                            ¼¯";
  4600 NEXT Z
  4610 PRINT "¸¸";TAB 30;"¸¸"
  4620 FOR Z=21 TO 0 STEP -1
  4630 PRINT AT Z,2;"±";TAB 29;"»"
  4640 RAND PI*PI
  4650 PRINT AT Z,2;"»";TAB 29;"±"
  4660 PRINT AT Z,2;" ";TAB 29;" "
  4670 NEXT Z
  4680 RETURN
  4690 PRINT TAB 11;"remarques";AT 1,11;"---------"
  4700 IF Q(27) AND H2>0 THEN LET H2=H2-1
  4705 IF Q(27) AND H2<=0 THEN LET Q(27)=0
  4710 IF Q(16) THEN LET M1=1
  4720 IF Q(23) AND H1<=0 THEN LET Q(23)=0
  4730 IF Q(23) AND H1>0 THEN LET H1=H1-1
  4740 IF Q(14) THEN PRINT ,,"aTMOSPHERE : OK."
  4750 IF H1<=0 THEN PRINT ,,"vOTRE PARALYSANT EST VIDE."
  4760 IF Q(24) AND H2<=0 THEN LET Q(24)=0
  4770 IF Q(24) AND H2>0 THEN LET H2=H2-1
  4780 IF Q(15) AND H10=0 THEN LET M1=0
  4790 IF H2<=0 THEN PRINT ,,"vOTRE FUSIL 30/30 EST VIDE"
  4800 IF Q(19) AND H3>=7 THEN LET F=F+1
  4810 IF Q(19) THEN LET H3=0
  4815 IF H3=7 OR H3=10 OR H3=13 OR H3=16 OR H3=20 THEN LET F=F-1
  4820 IF Q(20) AND H4>=12 THEN LET VI=VI+1
  4830 IF Q(20) THEN LET H4=0
  4833 IF H4=12 OR H4=15 OR H4=19 OR H4=22 THEN LET VI=VI-1
  4840 IF Q(22) AND H5 THEN LET VI=VI+INT (RND*5)+1
  4850 IF Q(26) THEN LET H6=((P-10)+(A-10)+(I-10))*4
  4860 IF Q(28) THEN LET H7=((C-10)+(D-10)+(I-10))*4
  4870 IF Q(29) THEN LET H8=((C-10)+(A-10))*4
  4880 IF Q(29) AND B1>19 THEN LET H8=H8+10
  4890 PRINT
  4891 IF M1 AND H10=5 THEN PRINT "vOUS AVEZ FROID."
  4893 IF M1 AND H10=5 THEN LET VI=VI-1
  4900 IF M1 AND H10=8 THEN PRINT "vOUS VENEZ DE TOUSSER"
  4905 IF H10=8 THEN LET VI=VI-1
  4910 IF M1 AND H10=12 THEN PRINT "vOUS TOUSSEZ POUR LA DEUXIEME   FOIS."
  4911 IF H10=12 THEN LET VI=VI-1
  4920 IF Q(36) THEN LET H12=0
  4930 IF Q(36) THEN LET H11=1
  4940 LET H12=H12+1
  4950 IF H12=6 THEN LET H11=0
  4960 IF H12=6 THEN LET H12=0
  4970 IF H12=6 THEN LET VI=VI-1
  4980 IF H11 AND M1 AND H10=15 OR H10=13 THEN PRINT "vOUS ETERNUEZ"
  4990 IF M1 AND H10=23 AND H11 THEN PRINT "vOUS AVEZ DE LA FIEVRE"
  5000 IF M1 AND (H10=30 OR H10=33 OR H10=36) AND H11 THEN PRINT "vOUS ETES TRES MALADE."
  5010 IF H11 AND M1 AND H10=15 OR H10=13 THEN LET VI=VI-3
  5020 IF H11 AND M1 AND H10=20 THEN LET VI=VI-(INT (RND*4)+1)
  5030 IF H11 AND M1 AND (H10=30 OR H10=33 OR H10=36) THEN LET VI=VI-(INT (RND*6)+2)
  5060 LET H3=H3+1
  5070 LET H4=H4+1
  5080 LET H10=H10+1
  5090 IF Q(30) AND NOT H30 THEN PRINT ,,"fOUILLE : VOUS NE TROUVEZ RIEN  DE TRES INTERESSANT."
  5095 LET H30=0
  5100 IF Q(31) THEN PRINT ,,"lE VOYANT DE LÀINTERPHONE SÀEST ALLUME,MAIS PERSONNE NE REPOND"
  5110 IF VI<=0 THEN GOTO 5190
  5120 GOSUB 2920
  5124 IF Q(13) AND NOT H14 THEN GOSUB 5330
  5125 RETURN
  5160 PRINT F$
  5163 POKE 16418,0
  5166 PRINT AT 23,0;G$
  5170 PRINT AT 1,0;
  5180 RETURN
  5190 CLS
  5195 RAND USR G
  5200 PRINT AT 6,7;"HORREUR."
  5210 FOR Z=0 TO 21
  5230 PRINT AT 11,4;"++++++++++++++";AT Z,Z;"";AT 11,4;"vous«etes«mort";AT Z,21-Z;""
  5270 NEXT Z
  5280 LET A$="½½½½½½½½½½"
  5290 FOR Z=21 TO 0 STEP -1
  5300 PRINT AT Z,22;A$
  5310 NEXT Z
  5320 GOTO 9999
  5330 POKE 16518,128
  5340 CLS
  5350 RAND USR G
  5360 PRINT AT 6,3;"vous«etes«dans«l•obscurite"
  5370 PRINT AT 7,3;N$
  5390 GOSUB 4320
  5400 IF Q(12) THEN RETURN
  5410 GOTO 5340


L'esprit du programme à été conservé, mais certaines routines on était modifiée, des lignes assemblées pour gagner de la mémoire, et des astuces connues sur le ZX81 utilisées pour accélérer l'affichage graphique.

Mais je rappelle que ce travail a été réalisé en mode texte, donc avec une vue globale du programme, des facilités de déplacement de code et renumérotation simplifiée... alors qu'avec une vraie de vraie, il aurai fallu tout retaper et vérifier le code sur un ticket de caisse enregistreuse lisible avec un binoculaire!

Donc, CYRIL DUFER n'a pas à rougir de son travail, car même si simple, il est de bonne facture!
La preuve, je n'ai pas tout corrigé...

Résultat, nous passons de 15,5K à 12,8K avec l'écran.
Et je rappelle aussi que ce mur de mémoire était l'équivalent du mur du son, qui détruisait le programme si l'auteur n'allégeait pas sont code!
Résultat, beaucoup de routines annexes se voyaient effacées afin de faire fonctionner le programme.
Nous pouvons encore vidanger près de 3k avec des VAL"1" =NOT PI et autre monstruosités du genre CODE "a" ...

Mais, cela rend illisible le programme originel, et rend impossible sa modification...
Donc, ici groupage de lignes et optimisation des boucles...
Je vous laisse apprécier la différence :D entre les deux programmes...

Merci à Chris, Jean-Sébastien et Oncle bob pour la sauvegarde du programme original!
(qui est forcement mieux, car ORIGINAL, dans l'histoire, le Game-Play et dans l'approche du multimédia sur zx81)

Encore merci Cyril pour ton accord de diffusion.
La star c'est lui, et nous, on apprend de son travail passé... pour raconter, imaginer des alternatives ou tout simplement pour nous divertir.

Fichier(s) joint(s) :
Commentaire : Le plan du niveau 1.
Plan.jpg
Plan.jpg [ 29.74 Kio | Vu 140 fois ]


Fichier(s) joint(s) :
Commentaire : Les commandes.
commandes.jpg
commandes.jpg [ 39.4 Kio | Vu 140 fois ]


Fichier(s) joint(s) :
Commentaire : Le ZIP avec les fichiers P.
Cristal5.zip [51.96 Kio]
Téléchargé 1 fois

_________________
Modo Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr & http://abandonlistings.free.fr/tilt/


Haut
   
Afficher les messages postés depuis :  Trier par  
Poster un nouveau sujet  Répondre au sujet  [ 24 messages ]  Aller à la page 1 2 Suivante

Heures au format UTC+01:00


Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas modifier vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher :
Aller à :  
cron
Développé par phpBB® Forum Software © phpBB Limited
Traduit par phpBB-fr.com