presque la fin

This commit is contained in:
Antoine Vignau 2023-11-18 11:16:31 +01:00
parent 69898d223c
commit 3a4380e5e6
5 changed files with 5768 additions and 5409 deletions

View File

@ -1 +1 @@
drgenius=Type(00),AuxType(0000),VersionCreate(70),MinVersion(BE),Access(E3),FolderInfo1(000000000000000000000000000000000000),FolderInfo2(000000000000000000000000000000000000)
drgenius=Type(06),AuxType(4000),VersionCreate(70),MinVersion(BE),Access(E3),FolderInfo1(000000000000000000000000000000000000),FolderInfo2(000000000000000000000000000000000000)

View File

@ -28,6 +28,13 @@ HPAG = $e6
dpFROM = $fc
dpTO = $fe
chrRET = $0d
chrSPC = $20
chrRET2 = $8d
chrSPC2 = $a0
TEXTBUFFER = $200
KBD = $c000
CLR80COL = $c000
SET80COL = $c001
@ -249,17 +256,76 @@ REPLAY
sta N
jmp :1000
:530
:530 ldx #7
lda C,x
cmp #1+1
bcc :540
lda P,x
cmp #1
bne :540
lda C,x
sec
sbc #1
sta C,x
:540 ldx #3
lda C,x
cmp #1+1
bcc :545
lda P,x
cmp #1
bne :545
lda C,x
sec
sbc #1
sta C,x
:545 ldx #4
lda C,x
cmp #1+1
bcc :547
lda P,x
cmp #1
bne :547
lda C,x
sec
sbc #1
sta C,x
:547 ldx #5
lda C,x
cmp #1+1
bcc :550
lda C,x
sec
sbc #1
sta C,x
:550 @print #strCOMMANDE
*--------
* lda #cursorCHAR
* sta PROMPT
jsr GETLN
lda TEXTBUFFER
cmp #chrRET2
bne :570
jsr switchVIDEO
jmp :550
strILFAITNOIR
asc "IL FAIT NOIR COMME DANS UN FOUR, IL"8D
asc "FAUDRAIT PEUT-ETRE ALLUMER"00
strILYA asc 8D"IL Y A DANS LA SALLE :"00
strSPACE asc " "00
strRETURN asc 8D
:570 stx lenSTRING ; longueur de la chaine saisie
jsr :6000
lda MO$1
cmp #"0"
bne :900
lda MO$1+1
cmp #"0"
bne :900
@print #strJENECOMPRENDS
@wait #200
jmp :100
*-----------------------------------
* 900 - CONTROLE MVT
@ -340,7 +406,22 @@ strRETURN asc 8D
cmp #0
beq :1150
* make :1120
lda NL ; E$=C$(NL)
asl
tax
lda tblC$,x
sta LINNUM
lda tblC$+1,x
sta LINNUM+1
ldy #0
lda (LINNUM),y
tax
]lp lda (LINNUM),y
sta E$,y
iny
dex
bpl ]lp
jmp :1400
:1150 lda NL
@ -360,17 +441,20 @@ strRETURN asc 8D
:1170 @print #strIMPOSSIBLE
lda MO$1
cmp #"0"
bne :1190
lda MO$1+1
cmp #"9"+1
bcs :1190
@print #strCECHEMIN
:1190 @print #strEXCLAM
jmp :100
:1200
*--------
strIMPOSSIBLE
asc 8D"IMPOSSIBLE "00
strCECHEMIN
asc "DE PRENDRE CE CHEMIN"00
strEXCLAM
asc "!"00
*-----------------------------------
* 1400 - CONDITIONS
*-----------------------------------
@ -604,6 +688,8 @@ tbl1500 da :1500,:1510,:1520,:1530,:1540
tblBRKV dfb 10,30,50,53
tblBRKA da :100,:300,:500,:530
hex BDBDBD
*-----------------------------------
* 1800
*-----------------------------------
@ -1023,7 +1109,89 @@ str4640 asc "LE PLACARD ETAIT PIEGE, VOUS N"A7"AURIEZ"8D
* 6000 - ANALYSE DU MOT
*-----------------------------------
:6000
nbCAR = 100 ; on ne depasse pas 100 caracteres
:6000 lda #0
sta N
sta GN
lda #"0" ; initialise les mots
sta MO$1
sta MO$1+1
sta MO$2
sta MO$2+1
* 1. cherche l'index du premier mot
ldx #0 ; cherche le premier caractere
]lp lda TEXTBUFFER,x
cmp #chrRET2
beq :6021
cmp #" "
bne :6022
inx
cpx lenSTRING
bcs :6021
cpx #nbCAR
bcc ]lp
:6021 rts ; retourne sans avoir trouve
* 2. recopie le mot
:6022 ldy #1
lda TEXTBUFFER,x
cmp #chrSPC2
beq :6023
cmp #chrRET2
beq :6023
sta X$1,y
inx
cpx lenSTRING
bcs :6023
iny
cpy #4
bcc ]lp
:6023 sty X$1 ; sauve la longueur
* 3. cherche l'index du second mot
inx
]lp lda TEXTBUFFER,x
cmp #chrRET2
beq :6021
cmp #" "
bne :6032
inx
cpx lenSTRING
bcs :6031
cpx #nbCAR
bcc ]lp
:6031 rts ; retourne sans avoir trouve
* 4. recopie le mot
:6032 ldy #1
lda TEXTBUFFER,x
cmp #chrSPC2
beq :6033
cmp #chrRET2
beq :6033
sta X$2,y
inx
cpx lenSTRING
bcs :6033
iny
cpy #4
bcc ]lp
:6033 sty X$2 ; sauve la longueur
*--------
:6160 brk $bd
X$1 ds 4+1 ; premier mot saisi
X$2 ds 4+1 ; second mot saisi
*-----------------------------------
* 7000 - DESCRIPTION DES PIECES
@ -1629,12 +1797,21 @@ setHGR ; HGR
sta HIRES
rts
*----------------------
* switchVIDEO
*----------------------
switchVIDEO
lda #0
eor #1
sta switchVIDEO+1
beq setMIXEDOFF
*----------------------
* setMIXEDON
*----------------------
setMIXEDON ; HGR + 4 LINES OF TEXT
sta TXTCLR
sta MIXSET
lda #20 ; et c'est fen<65>trŽ en plus !
@ -1647,8 +1824,7 @@ setMIXEDON ; HGR + 4 LINES OF TEXT
* setMIXEDOFF
*----------------------
setMIXEDOFF ; TEXT ONLNY
sta TXTSET
setMIXEDOFF ; FULL HGR
sta MIXCLR
rts
@ -2218,13 +2394,14 @@ E ds 1
E$ ds 32 ; the longest string
F1 ds 1
G ds 1
GN ds 1
H ds 1
HH ds 1
L ds 1
LI ds 1
LX ds 1
MO$1 ds 2 ; "00"
MO$2 ds 2 ; "00"
MO$1 ds 2 ; "00" (une chaine raccourcie)
MO$2 ds 2 ; "00" (une chaine raccourcie)
N ds 1
NL ds 1
OK ds 1
@ -2241,6 +2418,32 @@ Z ds 1
*--- The lazy decimal to hexadecimal conversion
tblD2H dfb 0,10,20,30,40,50,60,70,80,90
lenSTRING ds 1
*-----------------------------------
* STRINGS
*-----------------------------------
strILFAITNOIR
asc "IL FAIT NOIR COMME DANS UN FOUR, IL"8D
asc "FAUDRAIT PEUT-ETRE ALLUMER"00
strILYA asc 8D"IL Y A DANS LA SALLE :"00
strSPACE asc " "00
strRETURN asc 8D
strCOMMANDE
asc 8D"QUE FAITES-VOUS ? "
strJENECOMPRENDS
asc 8D"JE NE COMPRENDS PAS..."00
strIMPOSSIBLE
asc 8D"IMPOSSIBLE "00
strCECHEMIN
asc "DE PRENDRE CE CHEMIN"00
strEXCLAM
asc " !"00
*-----------------------------------
* LES AUTRES FICHIERS

File diff suppressed because it is too large Load Diff

View File

@ -1,41 +1,3 @@
200 REM DESCRIPTION SALLE
210 PRINT
220 GOSUB(7000+SALLE*10)-10
300 H=0:N=1
310 IF O(N)<>SALLE THEN 400
320 IF H=1 THEN GOTO 350
330 PRINT"Il y a dans la salle:":WAIT 100
340 H=1
350 PRINT" ";O$(N);
360 WAIT 150
400 N=N+1
410 IF N<=O THEN 310
420 PRINT""
500 REM ACCEPTATION COMMANDE
510 T=1:Y$(1) ="":Y$(2)="":N=0
520 GOTO 1000
530 IF C(7)>1 AND P(7)=1 THEN C(7)=C(7)-1
540 IF C(3)>1 AND P(3)=1 THEN C(3)=C(3)-1
545 IF C(4)>1 AND P(4)=1 THEN C(4)=C(4)-1
547 IF C(5)>1 THEN C(5)=C(5)-1
550 INPUT"Que faites vous";X$
560 CLS:PRINTX$
570 GOSUB 6000
580 IF MO$(1)="00" THEN PRINT"Je ne comprends pas...":WAIT 200:GOTO100
1000 REM CONTROLE
1010 NL=0
1100 NL=NL+1
1110 IF T=0 THEN GOTO 1150
1120 E$=C$(NL)
1130 GOTO 1400
1150 IF NL<=A THEN 1200
1159 PY=23:CO=12
1160 IF A1=1 THEN GOTO 500
1170 PRINT"Impossible ";
1180 IF VAL(MO$(1))<10 THEN PRINT"de prendre ce chemin";
1190 PRINT"!":GOTO 100
1200 IF MID$(A$(NL),1,2)<>MO$(1) THEN 1100
1210 Y$=MID$(A$(NL),3,2)
1220 IF Y$<>"00" AND Y$<>MO$(2) THEN 1100