ZX81 France, les fichiers...

Modérateur : XavierSnp

Avatar du membre
XavierSnp
Legendary
Messages : 749
Enregistré le : 22-02-2012 08:00
Contact :

ZX81 France, les fichiers...

Message non lu par XavierSnp »

Groupe fb : ZX81 France
Groupe fb : ZX81 France
zx81france.jpg (17.93 Kio) Vu 5683 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]

Nota:
L'hébergement sur ce forum étant limité à 500 ko, me contacter pour un hébergement sur Zx81.Ordi5 pour les fichiers plus lourds (PDF/Zips).
Avatar du membre
XavierSnp
Legendary
Messages : 749
Enregistré le : 22-02-2012 08:00
Contact :

Re: ZX81 France, les fichiers...

Message non lu par XavierSnp »

Salut,

Le ficher image de "Chevalier Arthur" de M. Bouat.
ChevalierArthur.gif
ChevalierArthur.gif (38.04 Kio) Vu 8413 fois
ScrChevalierA_ZX.zip
(1.06 Mio) Téléchargé 212 fois
Amusez-vous bien...
Oncle Bob
Nomad
Messages : 1
Enregistré le : 19-06-2018 12:48

Re: ZX81 France, les fichiers...

Message non lu par Oncle Bob »

Bon package il est bien complet :-D
Avatar du membre
jsm
Citizen
Messages : 6
Enregistré le : 20-06-2018 12:54

Re: ZX81 France, les fichiers...

Message non lu par jsm »

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

Sources :
Argolath.zip
(84.68 Kio) Téléchargé 180 fois
Modifié en dernier par jsm le 20-06-2018 22:51, modifié 1 fois.
Avatar du membre
XavierSnp
Legendary
Messages : 749
Enregistré le : 22-02-2012 08:00
Contact :

Re: ZX81 France, les fichiers...

Message non lu par XavierSnp »

Merci Jean-Stéphane.
Avatar du membre
jsm
Citizen
Messages : 6
Enregistré le : 20-06-2018 12:54

Re: ZX81 France, les fichiers...

Message non lu par jsm »

Rigel
Rigel.jpg
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 :
Rigel.zip
(85.74 Kio) Téléchargé 188 fois
Avatar du membre
jsm
Citizen
Messages : 6
Enregistré le : 20-06-2018 12:54

Re: ZX81 France, les fichiers...

Message non lu par jsm »

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.
banquise_jaquette_jsm.png
(la jaquette n'existe pas, c'est un faux de ma part)


extrait de Soft & Micro
source_Soft&Micro_low_res.pdf
(459.88 Kio) Téléchargé 207 fois
source :
banquise.zip
(207.87 Kio) Téléchargé 178 fois
Modifié en dernier par jsm le 20-06-2018 23:29, modifié 2 fois.
Avatar du membre
jsm
Citizen
Messages : 6
Enregistré le : 20-06-2018 12:54

Re: ZX81 France, les fichiers...

Message non lu par jsm »

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.
Avatar du membre
XavierSnp
Legendary
Messages : 749
Enregistré le : 22-02-2012 08:00
Contact :

Re: ZX81 France, les fichiers...

Message non lu par XavierSnp »

Salut,

Version d' "Argolath" non officielle modifiée.
Argolath_v2.zip
(129.85 Kio) Téléchargé 175 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.
Avatar du membre
XavierSnp
Legendary
Messages : 749
Enregistré le : 22-02-2012 08:00
Contact :

Re: ZX81 France, les fichiers...

Message non lu par XavierSnp »

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.
Avatar du membre
XavierSnp
Legendary
Messages : 749
Enregistré le : 22-02-2012 08:00
Contact :

Re: ZX81 France, les fichiers...

Message non lu par XavierSnp »

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 !
Avatar du membre
XavierSnp
Legendary
Messages : 749
Enregistré le : 22-02-2012 08:00
Contact :

Comment Dumper une ROM...

Message non lu par XavierSnp »

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 : Tout sélectionner

    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.
écran Vb81
écran Vb81
Puis pourra être chargée dans un émulateur.

Partie assembleur:

Code : Tout sélectionner

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
RomDump.zip
(56.25 Kio) Téléchargé 153 fois
Avatar du membre
XavierSnp
Legendary
Messages : 749
Enregistré le : 22-02-2012 08:00
Contact :

animation sur ZX81...

Message non lu par XavierSnp »

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
Anim8images.zip
Anim 8 images ZX81
(156.04 Kio) Téléchargé 169 fois
Avatar du membre
XavierSnp
Legendary
Messages : 749
Enregistré le : 22-02-2012 08:00
Contact :

Tuto ASM: Scrolling horizontal d'un écran très large

Message non lu par XavierSnp »

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.

Image demo
Image demo
wild-scroll.gif (14.08 Kio) Vu 8251 fois
Wild-Scroll.zip
Tuto ASM Z80
(6.87 Kio) Téléchargé 166 fois
Avatar du membre
XavierSnp
Legendary
Messages : 749
Enregistré le : 22-02-2012 08:00
Contact :

Petits trucs...

Message non lu par XavierSnp »

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.
Image fond
Image fond
Fonds.zip
fonds pour fenêtres...
(28.3 Kio) Téléchargé 159 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!

;)
Avatar du membre
XavierSnp
Legendary
Messages : 749
Enregistré le : 22-02-2012 08:00
Contact :

Tuto pour le désassemblage du Z80...

Message non lu par XavierSnp »

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.
Avatar du membre
XavierSnp
Legendary
Messages : 749
Enregistré le : 22-02-2012 08:00
Contact :

Avis aux lecteurs...

Message non lu par XavierSnp »

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!)
Echo10.jpg
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é.
Avatar du membre
XavierSnp
Legendary
Messages : 749
Enregistré le : 22-02-2012 08:00
Contact :

Gestion des blocs graphiques...

Message non lu par XavierSnp »

Salut à tous,
miroir2.jpg
miroir2.jpg (13.15 Kio) Vu 7874 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...
BlocTools.zip
Démo ZX81
(222.09 Kio) Téléchargé 163 fois
Avatar du membre
XavierSnp
Legendary
Messages : 749
Enregistré le : 22-02-2012 08:00
Contact :

Créez vos blocs graphiques...

Message non lu par XavierSnp »

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.
Capture1.JPG
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'.
Capture2.JPG
Sélectionnez le bouton "copier dans le presse papier" de la fonction Text>TASM.
Capture3.JPG
Puis, copiez le tout dans un nouveau fichier.
Il suffira d'effacer les $76 (retour chariot) et les $00 (espaces) en trop.
Capture4.JPG
Amusez-vous bien...
Avatar du membre
XavierSnp
Legendary
Messages : 749
Enregistré le : 22-02-2012 08:00
Contact :

Cristal 5... Démo!

Message non lu par XavierSnp »

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 : Tout sélectionner

# 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 : Tout sélectionner

# 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.
Le plan du niveau 1.
Le plan du niveau 1.
Plan.jpg (29.74 Kio) Vu 5709 fois
Les commandes.
Les commandes.
commandes.jpg (39.4 Kio) Vu 5709 fois
Cristal5.zip
Le ZIP avec les fichiers P.
(51.96 Kio) Téléchargé 116 fois
Répondre