## French char. codes.
[LNG2] 

## Computer compatibilities.
[ROM6128] 

10 '   ***********************
20 '   *                     *
30 '   *   Presentation de   *
40 '   *   MOON    CONTROL   *
50 '   *                     *
60 '   * Par GRISEL LAURENT. *
70 '   *                     *
80 '   *    pour AMSTRAD     *
90 '   *       CPC 6128      *
100 '  *                     *
110 '  **********V#1**********
120 '
130 '	** ATTENTION **
140 '	Ce programme est
150 '	partiellement
160 '	incompatible avec
170 '	le CPC 464.
180 '
190 IF HIMEM=42619 THEN SYMBOL AFTER 32
200 MEMORY &5FFF
210 CO=10:MODE 1:BORDER CO:SPEED INK 5,5:INK 0,0:INK 1,CO:INK 2,6,0:INK 3,0:PEN 2:PAPER 0:SO=10:TP=10:EVERY TP,1 GOSUB 910
220 LOCATE 1,13:PRINT" CHARGEMENT en COURS , PATIENTEZ S.V.P. ":RESTORE 820:ADD=&6000:FOR I=1 TO 1500:NEXT
230 READ A$:IF A$="FIN" GOTO 250
240 POKE ADD,VAL("&"+A$):ADD=ADD+1:GOTO 230
250 MODE 1:OUT 255,1:OUT 256,1:WINDOW#2,1,40,1,1:PAPER#2,1:PEN#2,3:PRINT#2,"   	CHARGEMENT EN COURS   ";
260 PAPER 1:PEN 3:LOCATE 1,24:PRINT" Chargement en cours,PATIENTEZ S.V.P. ":X=7:Y=2:C1=1:P1=0:M$="MOON Control":GOSUB 500:PRINT#2,CHR$(13);" VEUILLEZ PATIENTER  SVP ";

## Caractres Franais.
## 64  = "" <> "@"
## 123 = "" <> "{"
## 124 = "" ->> "" <> "|" (|CPM)
## 125 = "" <> "}"
## 163 = "~" <> ""
270 SYMBOL 123,6,8,60,102,126,96,60:\
SYMBOL 124,24,36,60,102,126,96,60:\
SYMBOL 125,96,16,60,102,126,96,60:\
SYMBOL 64,96,16,120,12,124,204,118:\
SYMBOL 163,255,231,195,129,0,0,0,0

## Test les caractres
##275 Print "64=";chr$(64);" ";"123=";chr$(123);" 124=";chr$(124);" 125=";chr$(125);" ";"163=";chr$(163);" ";
##276 END

280 GOSUB 670:RESTORE 760:PEN 3:LOCATE 1,21:FOR I=1 TO 40:READ A:PRINT CHR$(A);:NEXT:LOCATE 34,20:PRINT CHR$(240);CHR$(239):LOCATE 1,22:PRINT STRING$(40,143)
290 RESTORE 590:FOR H=0 TO 80 STEP 80:FOR I=0+H TO 9+H:FOR J=50594+I TO 64930+I STEP 2048:READ Q:POKE J,Q:NEXT:NEXT:NEXT
300 LOCATE 1,5:PEN 2:PRINT" Un jeu qui se droule au pixel et  la          milliseconde prs."
310 PRINT:PEN 1:PRINT"	A dconseiller aux grand nerveux !"
320 PRINT:PEN 3:PRINT" Serez-vous l'unique explorateur lunaire  avoir parcouru les 26 secteurs de A  Z avec seulement six vhicules ?"
330 PRINT:PEN 1:PRINT" MOON ControL ,":PEN 2:PRINT"     un jeu plein de rebondissements ."
340 PEN 1:LOCATE 15,17:PRINT "En BASIC & Langage Machine" :INK 1,6:INK 2,11
345 for i=0 to 10000:NEXT
350 PAPER#2,0:CLS#2:CALL&6000:INK 3,0:MODE 1
360 WINDOW#2,1,25,1,1:PAPER  3:CLS:PEN#2,1:PRINT#2,CHR$(13);" VEUILLEZ PATIENTER  SVP ";:WINDOW#3,2,39,2,24:PAPER  #3,2:CLS#3:WINDOW#3,3,38,3,23:PAPER #3,1:CLS#3:WINDOW#3,4,37,4,22:PAPER #3,0:CLS#3
370 FOR I=1 TO 40:PLOT RND*544+48,48+RND*304,3:NEXT
380 XT=400:YT=140:P=120:EN=3:GOSUB 890:XT=350:YT=175:P=50:EN=0:GOSUB 880:XT=420:YT=130:P=15:GOSUB 880:XT=325:YT=95 :P=22:GOSUB 880:XT=450:YT=80:P=30:GOSUB 880:XT=460:YT=210:P=40:GOSUB 880
390 XT=60:YT=60:P=20:EN=2:GOSUB 890:FOR I=1 TO 60:PLOT RND*544+48,48+RND*304,0:NEXT
400 PAPER 0:PEN 3:LOCATE 7,5:PRINT"Attention les yeux !":PEN 2:LOCATE 17,7:PRINT"VOICI ..."
410 PAPER #2,3:CLS#2:INK 3,24:FOR I=10 TO 40:SOUND 2,10+I*3,5:OUT 255,1:OUT 256,I:FOR J=1 TO 60:NEXT:NEXT:BORDER 3,9:Q=REMAIN(1)
420 FOR I=1 TO 5000:NEXT:BORDER 15,16:FOR I=1 TO 6:CALL&600C:CALL&6022:NEXT
430 LOCATE 1,24:MEMORY &6FFF:end:'RUN"moon2"
440 '
450 ' **************************
460 ' *  CARACTERES  a DOUBLE
470 ' *   HAUTEUR et LARGEUR
480 ' **************************
490 '

500 FOR J=1 TO LEN(M$):AD=8\
*ASC(MID$(M$,J,1))+40699:FOR\
 I=1 TO 8:Q$=BIN$(PEEK(AD+I)\
,8):D$="":FOR H=1 TO 4:B$=MI\
D$(Q$,H,1):D$=D$+B$+B$:NEXT:\
C(I)=VAL("&X"+D$):D$=""
505 FOR H=5 TO 8:B$=MID$(Q$,H,1):D$=D$+B$+B$:NEXT:D(I)=VAL("&X"+D$):NEXT
510 SYMBOL 252,C(1),C(1),C(2),C(2),C(3),C(3),C(4),C(4)
512 SYMBOL 253,C(5),C(5),C(6),C(6),C(7),C(7),C(8),C(8):SYMBOL 254,D(1),D(1),D(2),D(2),D(3),D(3),D(4),D(4)
515 SYMBOL 255,D(5),D(5),D(6),D(6),D(7),D(7),D(8),D(8):PAPER P1:PEN C1
520 LOCATE X+J*2,Y:PRINT CHR$(252)+CHR$(254);:LOCATE X+J*2,Y+1:PRINT CHR$(253)+CHR$(255);:NEXT:RETURN
530 '
540 '  **************
550 '  * DONNEES du *
560 '  *  VEHICULE  *
570 '  **************
580 '
590 DATA 0,0,0,0,0,0,0,0,0,\
0,0,1,7,7,7,15,0,1,3,15,15,1\
5,15,15,1,15,15,8,12,14,15,1\
5,15,15,15,0,0,0,0,15,0,14,1\
5,1,0,0,0,15,0,0,14,15,15,7,\
3,15,0,0,0,30,15,15,15,15,0,\
0,0,240,240,120,8,12,0,0,0,1\
28,128,128,0,0
600 DATA 0,0,1,1,15,1,0,0,1\
27,15,15,15,15,30,0,0,255,15\
,120,240,240,240,240,96,255,\
15,15,135,135,131,0,0,255,15\
,15,15,15,15,0,0,255,15,15,1\
5,15,15,0,0,255,15,30,60,60,\
120,48,16,255,15,135,195,225\
,224,192,128,206,15,15,15,15\
,0,0,0,0,8,12,14,14,0,0,0

610 '
620 '	******************
630 '	*  REDEFINITION  *
640 '   * des CARACTERES *
650 '	******************
660 '
670 SYMBOL 250,165,255,255,255,255,255,255,255:SYMBOL 249,13,223,255,255,255,255,255,255:SYMBOL 248,137,251,255,255,255,255,255,255:SYMBOL 247,213,255,255,255,255,255,255,255 ' **SOL**

680 SYMBOL 246,128,224,248,2\
48,252,254,255,255:SYMBOL 24\
5,0,0,0,0,0,16,58,255:SYMBOL\
 244,5,15,31,31,63,127,127,2\
55:SYMBOL 243,0,0,0,0,8,72,2\
52,255 ' ** TROU **

690 SYMBOL 240,0,2,7,15,15,3\
1,127,255:SYMBOL 239,32,48,1\
20,252,252,254,254,255 ' ** BOSSES**
700 RETURN
710 '
720 '   ******************
730 '	*  DESSIN du SOL *
740 '	******************
750 '
760 DATA 250,249,248,247,250\
,249,248,247,250,249,248,247\
,250,249,248,247,246,245,243\
,244,250,249,248,247,250,249\
,248,247,250,249,248,247,249\
,143,143,250,249,248,247,250\
,250
770 '
780 ' *******************
790 ' * LANGAGE MACHINE *
800 ' *******************
810 ' 

## Mmoire UDG place en 40699=9EFBh
## le buffer crase l'UDG en A100h
## sur Cpc464, l'UDG est plus haut donc
## on passe le memory &63FF  &59FF
## Copier l'cran en tampon (Buffer [cran 2]).
## ORG 6000h
## 21 00 C0       LD HL,C000 ' Adresse Origine.
## 11 00 61       LD DE,6100 * ' Adresse destination.
## 01 00 40       LD BC,4000 ' Taille cran
## ED B0          LDIR       ' Registre HL vers DE (BC fois)
## C9             RET

##' Ecran 1 vers cran 2
## 11 00 40       LD DE,4000 ' Taille cran
## 21 00 C0       LD HL,C000 ' Adresse cran Origine.
## 01 00 61       LD BC,6100 * ' Adresse cran 2
## A0             AND B
## 77             LD (HL),A
## 03             INC BC
## 23             INC HL
## 1B             DEC DE
## 7A             LD A,D
## B3             OR E
## FE 00          CP 00
## C2 15 60       JP NZ,6015 *
## C9             RET

##' Ecran 2 vers cran 1
## 21 00 C0       LD HL,C000
## 01 00 61       LD BC,6100 *
## 11 00 40       LD DE,4000
## 0A             LD A,(BC)
## EE FF          XOR FF
## 77             LD (HL),A
## 03             INC BC
## 23             INC HL
## 1B             DEC DE
## 7A             LD A,D
## B3             OR E
## FE 00          CP 00
## 20 F3          JR NZ,002B
## C9             RET

820 DATA 21,00,C0,11,00,61,0\
1,00,40,ED,B0,C9,11,00,40,21\
,00,C0,01,00,61,A0,77,03,23,\
1B,7A,B3,FE,00,C2,15,60,C9,2\
1,00,C0,01,00,61,11,00,40,0A\
,EE,FF,77,03,23,1B,7A,B3,FE,\
00,20,F3,C9,FIN
830 ' *********************
850 ' * CERCLES & DISQUES *
860 ' *********************
870 '
880 P2=P*P:PLOT 700,700,EN:ORIGIN XT,YT:FOR H=0 TO P*SIN(PI/4) STEP 2:J=SQR(P2-H*H):PLOT H,J:PLOT H,-J:PLOT -H,J:PLOT -H,-J:PLOT J,H:PLOT J,-H:PLOT -J,H:PLOT -J,-H:NEXT:ORIGIN 0,0:RETURN

890 PLOT 700,700,EN:P2=P*P:ORIGIN XT,YT:FOR H=0 TO P*0.71 STEP 2:J =SQR(P2-H*H):MOVE H,J:DRAW H,-J:MOVE J,H:DRAW J,-H:MOVE -H,J:DRAW -H,-J:MOVE -J,H:DRAW -J,-H:NEXT:ORIGIN 0,0:RETURN
900 '
910 SO=SO+3:SOUND 1,SO,TP:RETURN
