diff --git a/lemanoirdudocteurgenius/apple2/_FileInformation.txt b/lemanoirdudocteurgenius/apple2/_FileInformation.txt new file mode 100644 index 0000000..fe2cc5a --- /dev/null +++ b/lemanoirdudocteurgenius/apple2/_FileInformation.txt @@ -0,0 +1 @@ +ampersand=Type(06),AuxType(1800),VersionCreate(70),MinVersion(BE),Access(E3),FolderInfo1(000000000000000000000000000000000000),FolderInfo2(000000000000000000000000000000000000) diff --git a/lemanoirdudocteurgenius/apple2/ampersand b/lemanoirdudocteurgenius/apple2/ampersand new file mode 100644 index 0000000..2322b93 Binary files /dev/null and b/lemanoirdudocteurgenius/apple2/ampersand differ diff --git a/lemanoirdudocteurgenius/apple2/ampersand.s b/lemanoirdudocteurgenius/apple2/ampersand.s new file mode 100644 index 0000000..d77d6f1 --- /dev/null +++ b/lemanoirdudocteurgenius/apple2/ampersand.s @@ -0,0 +1,384 @@ +* +* Le manoir du Dr Genius +* + + mx %11 + org $1800 + lst off + +*----------------------------------- + +GOSUBTKN = $b0 ; the GOSUB token + +WNDLFT = $20 ; left edge of text window +WNDWDTH = $21 ; width of text window +WNDTOP = $22 ; top of text window +WNDBTM = $23 ; bottom+1 of text window +CH = $24 ; cursor horizontal position +CV = $25 ; cursor vertical position +LINNUM = $50 ; result from GETADR +CURLIN = $75 ; current line number +DATPTR = $7d ; DATA statement pointer +FORPNT = $85 ; temp pointer +LOWTR = $9b ; FNDLIN puts link ptr here +CHRGET = $b1 ; get next program token +TXTPTR = $b8 ; current token address +X0L = $e0 ; X-coord +X0H = $e1 +Y0 = $e2 ; Y-coord +HPAG = $e6 +AMPERV = $3f5 + +GETSTK = $d3d6 ; check stack space +FNDLIN = $d61a ; find line in memory +NEWSTT = $d7d2 ; execute statements +GOTO = $d93e ; go to new line number +FRMNUM = $dd67 ; Evaluate a numeric expression +CHKCOM = $debe ; syntax error if no comma +SYNERR = $dec9 ; syntax error +GETADR = $e752 ; convert num to 2-byte int +HGR = $f3e2 ; HGR +HPLOT = $f457 ; HPLOT +HCOLOR = $f6e9 ; HCOLOR= (call+3) +HILIN = $f53a ; HPLOT TO +HOME = $fc58 ; HOME routine +WAIT = $fca8 ; WAIT routine + +*----------------------------------- +* Useful info @ https://llx.com/Neil/a2/as.addons.html + +* Les routines & qu'on fait : +* CURMOV M +* CURSET S +* INK I +* PAPER P +* HIRES H +* WAIT W +* DRAW D +* RESTORE R to a line number +* GOSUB G to an expression + +* +* On ne fait pas : +* CIRCLE C +* EXPLODE E +* +* On des/installe par CALL 6144 + +*----------------------------------- + +myENTRY lda #0 + bne doUNINSTALL + + inc myENTRY+1 ; on dit qu'on installe + + lda AMPERV ; on sauve + sta myPTR + lda AMPERV+1 + sta myPTR+1 + lda AMPERV+2 + sta myPTR+2 + + lda #$4c ; on installe le vecteur + sta AMPERV + lda #myVECTOR + sta AMPERV+2 + rts + +doUNINSTALL dec myENTRY+1 + + lda myPTR + sta AMPERV + lda myPTR+1 + sta AMPERV+1 + lda myPTR+2 + sta AMPERV+2 + rts + +myPTR ds 3 ; 4C xx yy + +*----------------------------------- + +myVECTOR ldx #myADRS-myCMDS-1 +]lp cmp myCMDS,x + beq doVECTOR + dex + bpl ]lp + jmp SYNERR + +doVECTOR txa + asl + tax + lda myADRS+1,x + pha + lda myADRS,x + pha + rts + +myCMDS asc 'SMDCIPHWERG' + +myADRS da doS-1 + da doM-1 + da doD-1 + da doC-1 + da doI-1 + da doP-1 + da doH-1 + da doW-1 + da doE-1 + da doR-1 + da doG-1 + +*----------------------------------- Data + +theX dw 140 ; milieu de l'Žcran par dŽfaut +theY ds 96 +theX2 ds 2 +theY2 ds 2 +theRADIUS ds 1 +theFB ds 1 +theINK ds 1 +thePAPER ds 1 + +* APPLE ORIC +* 0 black1 black +* 1 green red +* 2 blue green +* 3 white1 yellow +* 4 black2 blue +* 5 - magenta +* 6 - cyan +* 7 white2 white + +oric2hgr hex 0705010602030400 + +*----------------------------------- CURSET x,y,fb + +doS + jsr CHRGET ; get next token + jsr FRMNUM ; eval expression + jsr GETADR ; convert to int + lda LINNUM + sta theX + lda LINNUM+1 + sta theX+1 ; new X-coord + + jsr CHKCOM ; check for comma + jsr FRMNUM ; eval expression + jsr GETADR ; convert to int + lda LINNUM + sta theY + lda LINNUM+1 + sta theY+1 ; new Y-coord + + jsr CHKCOM ; check for comma + jsr FRMNUM ; eval expression + jsr GETADR ; convert to int + lda LINNUM + sta theFB + rts + +*----------------------------------- CURMOV x,y,fb + +doM + jsr CHRGET ; get next token + jsr FRMNUM ; eval expression + jsr GETADR ; convert to int + lda LINNUM + clc + adc theX + sta theX + lda LINNUM+1 + adc theX+1 + sta theX+1 ; new X-coord + + jsr CHKCOM ; check for comma + jsr FRMNUM ; eval expression + jsr GETADR ; convert to int + lda LINNUM + clc + adc theY + sta theY + lda LINNUM+1 + adc theY+1 + sta theY+1 ; new Y-coord + + jsr CHKCOM ; check for comma + jsr FRMNUM ; eval expression + jsr GETADR ; convert to int + lda LINNUM + sta theFB + rts + +*----------------------------------- DRAW x,y,fb + +doD + jsr CHRGET ; get next token + jsr FRMNUM ; eval expression + jsr GETADR ; convert to int + lda LINNUM + clc + adc theX + sta theX2 + lda LINNUM+1 + adc theX+1 + sta theX2+1 ; new X-coord + + jsr CHKCOM ; check for comma + jsr FRMNUM ; eval expression + jsr GETADR ; convert to int + lda LINNUM + clc + adc theY + sta theY2 + lda LINNUM+1 + adc theY + sta theY2+1 ; new Y-coord + + jsr CHKCOM ; check for comma + jsr FRMNUM ; eval expression + jsr GETADR ; convert to int + lda LINNUM + sta theFB + +*---------- It is now time to draw as we have all variables + + ldy theINK ; the ink color + ldx oric2hgr,y ; from the Oric to the Apple II + jsr HCOLOR+3 ; to skip CHRGET + + ldx theX ; HPLOT x,y + ldy theX+1 + lda theY + jsr HPLOT + + lda theX2 ; TO x2,Y2 + ldx theX2+1 + ldy theY2 + jsr HILIN ; draw the line + + lda X0L ; save the updated coords + sta theX + lda X0H + sta theX+1 + lda Y0 + sta theY + rts + +*----------------------------------- CIRCLE n,fb + +doC + jsr CHRGET ; get next token + jsr FRMNUM ; eval expression + jsr GETADR ; convert to int + lda LINNUM + sta theRADIUS ; the radius + + jsr CHKCOM ; check for comma + jsr FRMNUM ; eval expression + jsr GETADR ; convert to int + lda LINNUM + sta theFB ; the foreground color + rts + +*----------------------------------- INK fb + +doI + jsr CHRGET ; get next token + jsr FRMNUM ; eval expression + jsr GETADR ; convert to int + lda LINNUM + sta theINK + rts + +*----------------------------------- PAPER fb + +doP + jsr CHRGET ; get next token + jsr FRMNUM ; eval expression + jsr GETADR ; convert to int + lda LINNUM + sta thePAPER + rts + +*----------------------------------- HIRES + +doH + jsr CHRGET ; get next token + + lda #0 + sta WNDLFT + lda #40 + sta WNDWDTH + lda #20 + sta WNDTOP + lda #24 + sta WNDBTM + jsr HOME + + jsr HGR + rts + +*----------------------------------- WAIT x + +doW + jsr CHRGET ; get next token + jsr FRMNUM ; eval expression + jsr GETADR ; convert to int + + lsr LINNUM+1 + ror LINNUM + lda LINNUM + jmp WAIT + +*----------------------------------- EXPLODE + +doE + jsr CHRGET + rts + +*----------------------------------- RESTORE address + +doR + jsr CHRGET ; get next token + jsr FRMNUM ; eval expression + jsr GETADR ; convert to int + jsr FNDLIN ; find chosen line no. + + ldy LOWTR+1 ; point DATPTR at byte before it + ldx LOWTR + bne dx + dey +dx dex + sty DATPTR+1 + stx DATPTR + rts + +*----------------------------------- GOSUB address + +doG + lda #3 ; make sure there's enough stack + jsr GETSTK + + lda TXTPTR+1 ; push marker for RETURN + pha + lda TXTPTR + pha + lda CURLIN+1 + pha + lda CURLIN + pha + lda #GOSUBTKN + pha + + jsr CHRGET ; get next token + jsr FRMNUM ; parse numeric expr + jsr GETADR ; convert it to int + jsr GOTO+3 ; point at chosen statement + jmp NEWSTT ; start running it + +*--- End of code + + asc "(c) 2023, Antoine Vignau & Olivier Zardini" diff --git a/lemanoirdudocteurgenius/apple2/ampersand_Output.txt b/lemanoirdudocteurgenius/apple2/ampersand_Output.txt new file mode 100644 index 0000000..f3e62c7 --- /dev/null +++ b/lemanoirdudocteurgenius/apple2/ampersand_Output.txt @@ -0,0 +1,425 @@ +------+-----------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- + Line | # File Line | Line Type | MX | Reloc | Size | Address Object Code | Source Code +------+-----------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- + 1 | 1 ampersand.s 1 | Comment | 11 | | 0 | 00/8000 | * + 2 | 1 ampersand.s 2 | Comment | 11 | | 0 | 00/8000 | * Le manoir du Dr Genius + 3 | 1 ampersand.s 3 | Comment | 11 | | 0 | 00/8000 | * + 4 | 1 ampersand.s 4 | Empty | 11 | | 0 | 00/8000 | + 5 | 1 ampersand.s 5 | Directive | 11 | | 0 | 00/8000 | mx %11 + 6 | 1 ampersand.s 6 | Directive | 11 | | 0 | 00/8000 | org $1800 + 7 | 1 ampersand.s 7 | Directive | 11 | | 0 | 00/1800 | lst off + 8 | 1 ampersand.s 8 | Empty | 11 | | 0 | 00/1800 | + 9 | 1 ampersand.s 9 | Comment | 11 | | 0 | 00/1800 | *----------------------------------- + 10 | 1 ampersand.s 10 | Empty | 11 | | 0 | 00/1800 | + 11 | 1 ampersand.s 11 | Equivalence | 11 | | 0 | 00/1800 | GOSUBTKN = $b0 ; the GOSUB token + 12 | 1 ampersand.s 12 | Empty | 11 | | 0 | 00/1800 | + 13 | 1 ampersand.s 13 | Equivalence | 11 | | 0 | 00/1800 | WNDLFT = $20 ; left edge of text window + 14 | 1 ampersand.s 14 | Equivalence | 11 | | 0 | 00/1800 | WNDWDTH = $21 ; width of text window + 15 | 1 ampersand.s 15 | Equivalence | 11 | | 0 | 00/1800 | WNDTOP = $22 ; top of text window + 16 | 1 ampersand.s 16 | Equivalence | 11 | | 0 | 00/1800 | WNDBTM = $23 ; bottom+1 of text window + 17 | 1 ampersand.s 17 | Equivalence | 11 | | 0 | 00/1800 | CH = $24 ; cursor horizontal position + 18 | 1 ampersand.s 18 | Equivalence | 11 | | 0 | 00/1800 | CV = $25 ; cursor vertical position + 19 | 1 ampersand.s 19 | Equivalence | 11 | | 0 | 00/1800 | LINNUM = $50 ; result from GETADR + 20 | 1 ampersand.s 20 | Equivalence | 11 | | 0 | 00/1800 | CURLIN = $75 ; current line number + 21 | 1 ampersand.s 21 | Equivalence | 11 | | 0 | 00/1800 | DATPTR = $7d ; DATA statement pointer + 22 | 1 ampersand.s 22 | Equivalence | 11 | | 0 | 00/1800 | FORPNT = $85 ; temp pointer + 23 | 1 ampersand.s 23 | Equivalence | 11 | | 0 | 00/1800 | LOWTR = $9b ; FNDLIN puts link ptr here + 24 | 1 ampersand.s 24 | Equivalence | 11 | | 0 | 00/1800 | CHRGET = $b1 ; get next program token + 25 | 1 ampersand.s 25 | Equivalence | 11 | | 0 | 00/1800 | TXTPTR = $b8 ; current token address + 26 | 1 ampersand.s 26 | Equivalence | 11 | | 0 | 00/1800 | X0L = $e0 ; X-coord + 27 | 1 ampersand.s 27 | Equivalence | 11 | | 0 | 00/1800 | X0H = $e1 + 28 | 1 ampersand.s 28 | Equivalence | 11 | | 0 | 00/1800 | Y0 = $e2 ; Y-coord + 29 | 1 ampersand.s 29 | Equivalence | 11 | | 0 | 00/1800 | HPAG = $e6 + 30 | 1 ampersand.s 30 | Equivalence | 11 | | 0 | 00/1800 | AMPERV = $3f5 + 31 | 1 ampersand.s 31 | Empty | 11 | | 0 | 00/1800 | + 32 | 1 ampersand.s 32 | Equivalence | 11 | | 0 | 00/1800 | GETSTK = $d3d6 ; check stack space + 33 | 1 ampersand.s 33 | Equivalence | 11 | | 0 | 00/1800 | FNDLIN = $d61a ; find line in memory + 34 | 1 ampersand.s 34 | Equivalence | 11 | | 0 | 00/1800 | NEWSTT = $d7d2 ; execute statements + 35 | 1 ampersand.s 35 | Equivalence | 11 | | 0 | 00/1800 | GOTO = $d93e ; go to new line number + 36 | 1 ampersand.s 36 | Equivalence | 11 | | 0 | 00/1800 | FRMNUM = $dd67 ; Evaluate a numeric expression + 37 | 1 ampersand.s 37 | Equivalence | 11 | | 0 | 00/1800 | CHKCOM = $debe ; syntax error if no comma + 38 | 1 ampersand.s 38 | Equivalence | 11 | | 0 | 00/1800 | SYNERR = $dec9 ; syntax error + 39 | 1 ampersand.s 39 | Equivalence | 11 | | 0 | 00/1800 | GETADR = $e752 ; convert num to 2-byte int + 40 | 1 ampersand.s 40 | Equivalence | 11 | | 0 | 00/1800 | HGR = $f3e2 ; HGR + 41 | 1 ampersand.s 41 | Equivalence | 11 | | 0 | 00/1800 | HPLOT = $f457 ; HPLOT + 42 | 1 ampersand.s 42 | Equivalence | 11 | | 0 | 00/1800 | HCOLOR = $f6e9 ; HCOLOR= (call+3) + 43 | 1 ampersand.s 43 | Equivalence | 11 | | 0 | 00/1800 | HILIN = $f53a ; HPLOT TO + 44 | 1 ampersand.s 44 | Equivalence | 11 | | 0 | 00/1800 | HOME = $fc58 ; HOME routine + 45 | 1 ampersand.s 45 | Equivalence | 11 | | 0 | 00/1800 | WAIT = $fca8 ; WAIT routine + 46 | 1 ampersand.s 46 | Empty | 11 | | 0 | 00/1800 | + 47 | 1 ampersand.s 47 | Comment | 11 | | 0 | 00/1800 | *----------------------------------- + 48 | 1 ampersand.s 48 | Comment | 11 | | 0 | 00/1800 | * Useful info @ https://llx.com/Neil/a2/as.addons.html + 49 | 1 ampersand.s 49 | Empty | 11 | | 0 | 00/1800 | + 50 | 1 ampersand.s 50 | Comment | 11 | | 0 | 00/1800 | * Les routines & qu'on fait : + 51 | 1 ampersand.s 51 | Comment | 11 | | 0 | 00/1800 | * CURMOV M + 52 | 1 ampersand.s 52 | Comment | 11 | | 0 | 00/1800 | * CURSET S + 53 | 1 ampersand.s 53 | Comment | 11 | | 0 | 00/1800 | * INK I + 54 | 1 ampersand.s 54 | Comment | 11 | | 0 | 00/1800 | * PAPER P + 55 | 1 ampersand.s 55 | Comment | 11 | | 0 | 00/1800 | * HIRES H + 56 | 1 ampersand.s 56 | Comment | 11 | | 0 | 00/1800 | * WAIT W + 57 | 1 ampersand.s 57 | Comment | 11 | | 0 | 00/1800 | * DRAW D + 58 | 1 ampersand.s 58 | Comment | 11 | | 0 | 00/1800 | * RESTORE R to a line number + 59 | 1 ampersand.s 59 | Comment | 11 | | 0 | 00/1800 | * GOSUB G to an expression + 60 | 1 ampersand.s 60 | Empty | 11 | | 0 | 00/1800 | + 61 | 1 ampersand.s 61 | Comment | 11 | | 0 | 00/1800 | * + 62 | 1 ampersand.s 62 | Comment | 11 | | 0 | 00/1800 | * On ne fait pas : + 63 | 1 ampersand.s 63 | Comment | 11 | | 0 | 00/1800 | * CIRCLE C + 64 | 1 ampersand.s 64 | Comment | 11 | | 0 | 00/1800 | * EXPLODE E + 65 | 1 ampersand.s 65 | Comment | 11 | | 0 | 00/1800 | * + 66 | 1 ampersand.s 66 | Comment | 11 | | 0 | 00/1800 | * On des/installe par CALL 6144 + 67 | 1 ampersand.s 67 | Empty | 11 | | 0 | 00/1800 | + 68 | 1 ampersand.s 68 | Comment | 11 | | 0 | 00/1800 | *----------------------------------- + 69 | 1 ampersand.s 69 | Empty | 11 | | 0 | 00/1800 | + 70 | 1 ampersand.s 70 | Code | 11 | | 2 | 00/1800 : A9 00 | myENTRY lda #0 + 71 | 1 ampersand.s 71 | Code | 11 | | 2 | 00/1802 : D0 25 | bne doUNINSTALL + 72 | 1 ampersand.s 72 | Empty | 11 | | 0 | 00/1804 | + 73 | 1 ampersand.s 73 | Code | 11 | | 3 | 00/1804 : EE 01 18 | inc myENTRY+1 ; on dit qu'on installe + 74 | 1 ampersand.s 74 | Empty | 11 | | 0 | 00/1807 | + 75 | 1 ampersand.s 75 | Code | 11 | | 3 | 00/1807 : AD F5 03 | lda {$3f5} ; on sauve + 76 | 1 ampersand.s 76 | Code | 11 | | 3 | 00/180A : 8D 3F 18 | sta myPTR + 77 | 1 ampersand.s 77 | Code | 11 | | 3 | 00/180D : AD F6 03 | lda {$3f5}+1 + 78 | 1 ampersand.s 78 | Code | 11 | | 3 | 00/1810 : 8D 40 18 | sta myPTR+1 + 79 | 1 ampersand.s 79 | Code | 11 | | 3 | 00/1813 : AD F7 03 | lda {$3f5}+2 + 80 | 1 ampersand.s 80 | Code | 11 | | 3 | 00/1816 : 8D 41 18 | sta myPTR+2 + 81 | 1 ampersand.s 81 | Empty | 11 | | 0 | 00/1819 | + 82 | 1 ampersand.s 82 | Code | 11 | | 2 | 00/1819 : A9 4C | lda #$4c ; on installe le vecteur + 83 | 1 ampersand.s 83 | Code | 11 | | 3 | 00/181B : 8D F5 03 | sta {$3f5} + 84 | 1 ampersand.s 84 | Code | 11 | | 2 | 00/181E : A9 42 | lda #myVECTOR + 87 | 1 ampersand.s 87 | Code | 11 | | 3 | 00/1825 : 8D F7 03 | sta {$3f5}+2 + 88 | 1 ampersand.s 88 | Code | 11 | | 1 | 00/1828 : 60 | rts + 89 | 1 ampersand.s 89 | Empty | 11 | | 0 | 00/1829 | + 90 | 1 ampersand.s 90 | Code | 11 | | 3 | 00/1829 : CE 01 18 | doUNINSTALL dec myENTRY+1 + 91 | 1 ampersand.s 91 | Empty | 11 | | 0 | 00/182C | + 92 | 1 ampersand.s 92 | Code | 11 | | 3 | 00/182C : AD 3F 18 | lda myPTR + 93 | 1 ampersand.s 93 | Code | 11 | | 3 | 00/182F : 8D F5 03 | sta {$3f5} + 94 | 1 ampersand.s 94 | Code | 11 | | 3 | 00/1832 : AD 40 18 | lda myPTR+1 + 95 | 1 ampersand.s 95 | Code | 11 | | 3 | 00/1835 : 8D F6 03 | sta {$3f5}+1 + 96 | 1 ampersand.s 96 | Code | 11 | | 3 | 00/1838 : AD 41 18 | lda myPTR+2 + 97 | 1 ampersand.s 97 | Code | 11 | | 3 | 00/183B : 8D F7 03 | sta {$3f5}+2 + 98 | 1 ampersand.s 98 | Code | 11 | | 1 | 00/183E : 60 | rts + 99 | 1 ampersand.s 99 | Empty | 11 | | 0 | 00/183F | + 100 | 1 ampersand.s 100 | Data | 11 | | 3 | 00/183F : 00 00 00 | myPTR ds 3 ; 4C xx yy + 101 | 1 ampersand.s 101 | Empty | 11 | | 0 | 00/1842 | + 102 | 1 ampersand.s 102 | Comment | 11 | | 0 | 00/1842 | *----------------------------------- + 103 | 1 ampersand.s 103 | Empty | 11 | | 0 | 00/1842 | + 104 | 1 ampersand.s 104 | Code | 11 | | 2 | 00/1842 : A2 0A | myVECTOR ldx #myADRS-myCMDS-1 + 105 | 1 ampersand.s 105 | Code | 11 | | 3 | 00/1844 : DD 5B 18 | ozunid_1 cmp myCMDS,x + 106 | 1 ampersand.s 106 | Code | 11 | | 2 | 00/1847 : F0 06 | beq doVECTOR + 107 | 1 ampersand.s 107 | Code | 11 | | 1 | 00/1849 : CA | dex + 108 | 1 ampersand.s 108 | Code | 11 | | 2 | 00/184A : 10 F8 | bpl ozunid_1 + 109 | 1 ampersand.s 109 | Code | 11 | | 3 | 00/184C : 4C C9 DE | jmp {$dec9} + 110 | 1 ampersand.s 110 | Empty | 11 | | 0 | 00/184F | + 111 | 1 ampersand.s 111 | Code | 11 | | 1 | 00/184F : 8A | doVECTOR txa + 112 | 1 ampersand.s 112 | Code | 11 | | 1 | 00/1850 : 0A | asl + 113 | 1 ampersand.s 113 | Code | 11 | | 1 | 00/1851 : AA | tax + 114 | 1 ampersand.s 114 | Code | 11 | | 3 | 00/1852 : BD 67 18 | lda myADRS+1,x + 115 | 1 ampersand.s 115 | Code | 11 | | 1 | 00/1855 : 48 | pha + 116 | 1 ampersand.s 116 | Code | 11 | | 3 | 00/1856 : BD 66 18 | lda myADRS,x + 117 | 1 ampersand.s 117 | Code | 11 | | 1 | 00/1859 : 48 | pha + 118 | 1 ampersand.s 118 | Code | 11 | | 1 | 00/185A : 60 | rts + 119 | 1 ampersand.s 119 | Empty | 11 | | 0 | 00/185B | + 120 | 1 ampersand.s 120 | Data | 11 | | 11 | 00/185B : 53 4D 44 43 | myCMDS asc 'SMDCIPHWERG' + | | | | | | 49 50 48 57 | + | | | | | | 45 52 47 | + 121 | 1 ampersand.s 121 | Empty | 11 | | 0 | 00/1866 | + 122 | 1 ampersand.s 122 | Data | 11 | | 2 | 00/1866 : ED 18 | myADRS da doS-1 + 123 | 1 ampersand.s 123 | Data | 11 | | 2 | 00/1868 : 22 19 | da doM-1 + 124 | 1 ampersand.s 124 | Data | 11 | | 2 | 00/186A : 65 19 | da doD-1 + 125 | 1 ampersand.s 125 | Data | 11 | | 2 | 00/186C : D8 19 | da doC-1 + 126 | 1 ampersand.s 126 | Data | 11 | | 2 | 00/186E : F5 19 | da doI-1 + 127 | 1 ampersand.s 127 | Data | 11 | | 2 | 00/1870 : 04 1A | da doP-1 + 128 | 1 ampersand.s 128 | Data | 11 | | 2 | 00/1872 : 13 1A | da doH-1 + 129 | 1 ampersand.s 129 | Data | 11 | | 2 | 00/1874 : 2D 1A | da doW-1 + 130 | 1 ampersand.s 130 | Data | 11 | | 2 | 00/1876 : 3F 1A | da doE-1 + 131 | 1 ampersand.s 131 | Data | 11 | | 2 | 00/1878 : 43 1A | da doR-1 + 132 | 1 ampersand.s 132 | Data | 11 | | 2 | 00/187A : 5C 1A | da doG-1 + 133 | 1 ampersand.s 133 | Empty | 11 | | 0 | 00/187C | + 134 | 1 ampersand.s 134 | Comment | 11 | | 0 | 00/187C | *----------------------------------- Data + 135 | 1 ampersand.s 135 | Empty | 11 | | 0 | 00/187C | + 136 | 1 ampersand.s 136 | Data | 11 | | 2 | 00/187C : 8C 00 | theX dw 140 ; milieu de l'Žcran par dŽfaut + 137 | 1 ampersand.s 137 | Data | 11 | | 96 | 00/187E : 00 00 00 00 | theY ds 96 + | | | | | | 00 00 00 00 | + | | | | | | 00 00 00 00 | + | | | | | | 00 00 00 00 | + | | | | | | 00 00 00 00 | + | | | | | | 00 00 00 00 | + | | | | | | 00 00 00 00 | + | | | | | | 00 00 00 00 | + | | | | | | 00 00 00 00 | + | | | | | | 00 00 00 00 | + | | | | | | 00 00 00 00 | + | | | | | | 00 00 00 00 | + | | | | | | 00 00 00 00 | + | | | | | | 00 00 00 00 | + | | | | | | 00 00 00 00 | + | | | | | | 00 00 00 00 | + | | | | | | 00 00 00 00 | + | | | | | | 00 00 00 00 | + | | | | | | 00 00 00 00 | + | | | | | | 00 00 00 00 | + | | | | | | 00 00 00 00 | + | | | | | | 00 00 00 00 | + | | | | | | 00 00 00 00 | + | | | | | | 00 00 00 00 | + 138 | 1 ampersand.s 138 | Data | 11 | | 2 | 00/18DE : 00 00 | theX2 ds 2 + 139 | 1 ampersand.s 139 | Data | 11 | | 2 | 00/18E0 : 00 00 | theY2 ds 2 + 140 | 1 ampersand.s 140 | Data | 11 | | 1 | 00/18E2 : 00 | theRADIUS ds 1 + 141 | 1 ampersand.s 141 | Data | 11 | | 1 | 00/18E3 : 00 | theFB ds 1 + 142 | 1 ampersand.s 142 | Data | 11 | | 1 | 00/18E4 : 00 | theINK ds 1 + 143 | 1 ampersand.s 143 | Data | 11 | | 1 | 00/18E5 : 00 | thePAPER ds 1 + 144 | 1 ampersand.s 144 | Empty | 11 | | 0 | 00/18E6 | + 145 | 1 ampersand.s 145 | Comment | 11 | | 0 | 00/18E6 | * APPLE ORIC + 146 | 1 ampersand.s 146 | Comment | 11 | | 0 | 00/18E6 | * 0 black1 black + 147 | 1 ampersand.s 147 | Comment | 11 | | 0 | 00/18E6 | * 1 green red + 148 | 1 ampersand.s 148 | Comment | 11 | | 0 | 00/18E6 | * 2 blue green + 149 | 1 ampersand.s 149 | Comment | 11 | | 0 | 00/18E6 | * 3 white1 yellow + 150 | 1 ampersand.s 150 | Comment | 11 | | 0 | 00/18E6 | * 4 black2 blue + 151 | 1 ampersand.s 151 | Comment | 11 | | 0 | 00/18E6 | * 5 - magenta + 152 | 1 ampersand.s 152 | Comment | 11 | | 0 | 00/18E6 | * 6 - cyan + 153 | 1 ampersand.s 153 | Comment | 11 | | 0 | 00/18E6 | * 7 white2 white + 154 | 1 ampersand.s 154 | Empty | 11 | | 0 | 00/18E6 | + 155 | 1 ampersand.s 155 | Data | 11 | | 8 | 00/18E6 : 07 05 01 06 | oric2hgr hex 0705010602030400 + | | | | | | 02 03 04 00 | + 156 | 1 ampersand.s 156 | Empty | 11 | | 0 | 00/18EE | + 157 | 1 ampersand.s 157 | Comment | 11 | | 0 | 00/18EE | *----------------------------------- CURSET x,y,fb + 158 | 1 ampersand.s 158 | Empty | 11 | | 0 | 00/18EE | + 159 | 1 ampersand.s 159 | Empty | 11 | | 0 | 00/18EE | doS + 160 | 1 ampersand.s 160 | Code | 11 | | 3 | 00/18EE : 20 B1 00 | jsr {$b1} ; get next token + 161 | 1 ampersand.s 161 | Code | 11 | | 3 | 00/18F1 : 20 67 DD | jsr {$dd67} ; eval expression + 162 | 1 ampersand.s 162 | Code | 11 | | 3 | 00/18F4 : 20 52 E7 | jsr {$e752} ; convert to int + 163 | 1 ampersand.s 163 | Code | 11 | | 2 | 00/18F7 : A5 50 | lda {$50} + 164 | 1 ampersand.s 164 | Code | 11 | | 3 | 00/18F9 : 8D 7C 18 | sta theX + 165 | 1 ampersand.s 165 | Code | 11 | | 2 | 00/18FC : A5 51 | lda {$50}+1 + 166 | 1 ampersand.s 166 | Code | 11 | | 3 | 00/18FE : 8D 7D 18 | sta theX+1 ; new X-coord + 167 | 1 ampersand.s 167 | Empty | 11 | | 0 | 00/1901 | + 168 | 1 ampersand.s 168 | Code | 11 | | 3 | 00/1901 : 20 BE DE | jsr {$debe} ; check for comma + 169 | 1 ampersand.s 169 | Code | 11 | | 3 | 00/1904 : 20 67 DD | jsr {$dd67} ; eval expression + 170 | 1 ampersand.s 170 | Code | 11 | | 3 | 00/1907 : 20 52 E7 | jsr {$e752} ; convert to int + 171 | 1 ampersand.s 171 | Code | 11 | | 2 | 00/190A : A5 50 | lda {$50} + 172 | 1 ampersand.s 172 | Code | 11 | | 3 | 00/190C : 8D 7E 18 | sta theY + 173 | 1 ampersand.s 173 | Code | 11 | | 2 | 00/190F : A5 51 | lda {$50}+1 + 174 | 1 ampersand.s 174 | Code | 11 | | 3 | 00/1911 : 8D 7F 18 | sta theY+1 ; new Y-coord + 175 | 1 ampersand.s 175 | Empty | 11 | | 0 | 00/1914 | + 176 | 1 ampersand.s 176 | Code | 11 | | 3 | 00/1914 : 20 BE DE | jsr {$debe} ; check for comma + 177 | 1 ampersand.s 177 | Code | 11 | | 3 | 00/1917 : 20 67 DD | jsr {$dd67} ; eval expression + 178 | 1 ampersand.s 178 | Code | 11 | | 3 | 00/191A : 20 52 E7 | jsr {$e752} ; convert to int + 179 | 1 ampersand.s 179 | Code | 11 | | 2 | 00/191D : A5 50 | lda {$50} + 180 | 1 ampersand.s 180 | Code | 11 | | 3 | 00/191F : 8D E3 18 | sta theFB + 181 | 1 ampersand.s 181 | Code | 11 | | 1 | 00/1922 : 60 | rts + 182 | 1 ampersand.s 182 | Empty | 11 | | 0 | 00/1923 | + 183 | 1 ampersand.s 183 | Comment | 11 | | 0 | 00/1923 | *----------------------------------- CURMOV x,y,fb + 184 | 1 ampersand.s 184 | Empty | 11 | | 0 | 00/1923 | + 185 | 1 ampersand.s 185 | Empty | 11 | | 0 | 00/1923 | doM + 186 | 1 ampersand.s 186 | Code | 11 | | 3 | 00/1923 : 20 B1 00 | jsr {$b1} ; get next token + 187 | 1 ampersand.s 187 | Code | 11 | | 3 | 00/1926 : 20 67 DD | jsr {$dd67} ; eval expression + 188 | 1 ampersand.s 188 | Code | 11 | | 3 | 00/1929 : 20 52 E7 | jsr {$e752} ; convert to int + 189 | 1 ampersand.s 189 | Code | 11 | | 2 | 00/192C : A5 50 | lda {$50} + 190 | 1 ampersand.s 190 | Code | 11 | | 1 | 00/192E : 18 | clc + 191 | 1 ampersand.s 191 | Code | 11 | | 3 | 00/192F : 6D 7C 18 | adc theX + 192 | 1 ampersand.s 192 | Code | 11 | | 3 | 00/1932 : 8D 7C 18 | sta theX + 193 | 1 ampersand.s 193 | Code | 11 | | 2 | 00/1935 : A5 51 | lda {$50}+1 + 194 | 1 ampersand.s 194 | Code | 11 | | 3 | 00/1937 : 6D 7D 18 | adc theX+1 + 195 | 1 ampersand.s 195 | Code | 11 | | 3 | 00/193A : 8D 7D 18 | sta theX+1 ; new X-coord + 196 | 1 ampersand.s 196 | Empty | 11 | | 0 | 00/193D | + 197 | 1 ampersand.s 197 | Code | 11 | | 3 | 00/193D : 20 BE DE | jsr {$debe} ; check for comma + 198 | 1 ampersand.s 198 | Code | 11 | | 3 | 00/1940 : 20 67 DD | jsr {$dd67} ; eval expression + 199 | 1 ampersand.s 199 | Code | 11 | | 3 | 00/1943 : 20 52 E7 | jsr {$e752} ; convert to int + 200 | 1 ampersand.s 200 | Code | 11 | | 2 | 00/1946 : A5 50 | lda {$50} + 201 | 1 ampersand.s 201 | Code | 11 | | 1 | 00/1948 : 18 | clc + 202 | 1 ampersand.s 202 | Code | 11 | | 3 | 00/1949 : 6D 7E 18 | adc theY + 203 | 1 ampersand.s 203 | Code | 11 | | 3 | 00/194C : 8D 7E 18 | sta theY + 204 | 1 ampersand.s 204 | Code | 11 | | 2 | 00/194F : A5 51 | lda {$50}+1 + 205 | 1 ampersand.s 205 | Code | 11 | | 3 | 00/1951 : 6D 7F 18 | adc theY+1 + 206 | 1 ampersand.s 206 | Code | 11 | | 3 | 00/1954 : 8D 7F 18 | sta theY+1 ; new Y-coord + 207 | 1 ampersand.s 207 | Empty | 11 | | 0 | 00/1957 | + 208 | 1 ampersand.s 208 | Code | 11 | | 3 | 00/1957 : 20 BE DE | jsr {$debe} ; check for comma + 209 | 1 ampersand.s 209 | Code | 11 | | 3 | 00/195A : 20 67 DD | jsr {$dd67} ; eval expression + 210 | 1 ampersand.s 210 | Code | 11 | | 3 | 00/195D : 20 52 E7 | jsr {$e752} ; convert to int + 211 | 1 ampersand.s 211 | Code | 11 | | 2 | 00/1960 : A5 50 | lda {$50} + 212 | 1 ampersand.s 212 | Code | 11 | | 3 | 00/1962 : 8D E3 18 | sta theFB + 213 | 1 ampersand.s 213 | Code | 11 | | 1 | 00/1965 : 60 | rts + 214 | 1 ampersand.s 214 | Empty | 11 | | 0 | 00/1966 | + 215 | 1 ampersand.s 215 | Comment | 11 | | 0 | 00/1966 | *----------------------------------- DRAW x,y,fb + 216 | 1 ampersand.s 216 | Empty | 11 | | 0 | 00/1966 | + 217 | 1 ampersand.s 217 | Empty | 11 | | 0 | 00/1966 | doD + 218 | 1 ampersand.s 218 | Code | 11 | | 3 | 00/1966 : 20 B1 00 | jsr {$b1} ; get next token + 219 | 1 ampersand.s 219 | Code | 11 | | 3 | 00/1969 : 20 67 DD | jsr {$dd67} ; eval expression + 220 | 1 ampersand.s 220 | Code | 11 | | 3 | 00/196C : 20 52 E7 | jsr {$e752} ; convert to int + 221 | 1 ampersand.s 221 | Code | 11 | | 2 | 00/196F : A5 50 | lda {$50} + 222 | 1 ampersand.s 222 | Code | 11 | | 1 | 00/1971 : 18 | clc + 223 | 1 ampersand.s 223 | Code | 11 | | 3 | 00/1972 : 6D 7C 18 | adc theX + 224 | 1 ampersand.s 224 | Code | 11 | | 3 | 00/1975 : 8D DE 18 | sta theX2 + 225 | 1 ampersand.s 225 | Code | 11 | | 2 | 00/1978 : A5 51 | lda {$50}+1 + 226 | 1 ampersand.s 226 | Code | 11 | | 3 | 00/197A : 6D 7D 18 | adc theX+1 + 227 | 1 ampersand.s 227 | Code | 11 | | 3 | 00/197D : 8D DF 18 | sta theX2+1 ; new X-coord + 228 | 1 ampersand.s 228 | Empty | 11 | | 0 | 00/1980 | + 229 | 1 ampersand.s 229 | Code | 11 | | 3 | 00/1980 : 20 BE DE | jsr {$debe} ; check for comma + 230 | 1 ampersand.s 230 | Code | 11 | | 3 | 00/1983 : 20 67 DD | jsr {$dd67} ; eval expression + 231 | 1 ampersand.s 231 | Code | 11 | | 3 | 00/1986 : 20 52 E7 | jsr {$e752} ; convert to int + 232 | 1 ampersand.s 232 | Code | 11 | | 2 | 00/1989 : A5 50 | lda {$50} + 233 | 1 ampersand.s 233 | Code | 11 | | 1 | 00/198B : 18 | clc + 234 | 1 ampersand.s 234 | Code | 11 | | 3 | 00/198C : 6D 7E 18 | adc theY + 235 | 1 ampersand.s 235 | Code | 11 | | 3 | 00/198F : 8D E0 18 | sta theY2 + 236 | 1 ampersand.s 236 | Code | 11 | | 2 | 00/1992 : A5 51 | lda {$50}+1 + 237 | 1 ampersand.s 237 | Code | 11 | | 3 | 00/1994 : 6D 7E 18 | adc theY + 238 | 1 ampersand.s 238 | Code | 11 | | 3 | 00/1997 : 8D E1 18 | sta theY2+1 ; new Y-coord + 239 | 1 ampersand.s 239 | Empty | 11 | | 0 | 00/199A | + 240 | 1 ampersand.s 240 | Code | 11 | | 3 | 00/199A : 20 BE DE | jsr {$debe} ; check for comma + 241 | 1 ampersand.s 241 | Code | 11 | | 3 | 00/199D : 20 67 DD | jsr {$dd67} ; eval expression + 242 | 1 ampersand.s 242 | Code | 11 | | 3 | 00/19A0 : 20 52 E7 | jsr {$e752} ; convert to int + 243 | 1 ampersand.s 243 | Code | 11 | | 2 | 00/19A3 : A5 50 | lda {$50} + 244 | 1 ampersand.s 244 | Code | 11 | | 3 | 00/19A5 : 8D E3 18 | sta theFB + 245 | 1 ampersand.s 245 | Empty | 11 | | 0 | 00/19A8 | + 246 | 1 ampersand.s 246 | Comment | 11 | | 0 | 00/19A8 | *---------- It is now time to draw as we have all variables + 247 | 1 ampersand.s 247 | Empty | 11 | | 0 | 00/19A8 | + 248 | 1 ampersand.s 248 | Code | 11 | | 3 | 00/19A8 : AC E4 18 | ldy theINK ; the ink color + 249 | 1 ampersand.s 249 | Code | 11 | | 3 | 00/19AB : BE E6 18 | ldx oric2hgr,y ; from the Oric to the Apple II + 250 | 1 ampersand.s 250 | Code | 11 | | 3 | 00/19AE : 20 EC F6 | jsr {$f6e9}+3 ; to skip CHRGET + 251 | 1 ampersand.s 251 | Empty | 11 | | 0 | 00/19B1 | + 252 | 1 ampersand.s 252 | Code | 11 | | 3 | 00/19B1 : AE 7C 18 | ldx theX ; HPLOT x,y + 253 | 1 ampersand.s 253 | Code | 11 | | 3 | 00/19B4 : AC 7D 18 | ldy theX+1 + 254 | 1 ampersand.s 254 | Code | 11 | | 3 | 00/19B7 : AD 7E 18 | lda theY + 255 | 1 ampersand.s 255 | Code | 11 | | 3 | 00/19BA : 20 57 F4 | jsr {$f457} + 256 | 1 ampersand.s 256 | Empty | 11 | | 0 | 00/19BD | + 257 | 1 ampersand.s 257 | Code | 11 | | 3 | 00/19BD : AD DE 18 | lda theX2 ; TO x2,Y2 + 258 | 1 ampersand.s 258 | Code | 11 | | 3 | 00/19C0 : AE DF 18 | ldx theX2+1 + 259 | 1 ampersand.s 259 | Code | 11 | | 3 | 00/19C3 : AC E0 18 | ldy theY2 + 260 | 1 ampersand.s 260 | Code | 11 | | 3 | 00/19C6 : 20 3A F5 | jsr {$f53a} ; draw the line + 261 | 1 ampersand.s 261 | Empty | 11 | | 0 | 00/19C9 | + 262 | 1 ampersand.s 262 | Code | 11 | | 2 | 00/19C9 : A5 E0 | lda {$e0} ; save the updated coords + 263 | 1 ampersand.s 263 | Code | 11 | | 3 | 00/19CB : 8D 7C 18 | sta theX + 264 | 1 ampersand.s 264 | Code | 11 | | 2 | 00/19CE : A5 E1 | lda {$e1} + 265 | 1 ampersand.s 265 | Code | 11 | | 3 | 00/19D0 : 8D 7D 18 | sta theX+1 + 266 | 1 ampersand.s 266 | Code | 11 | | 2 | 00/19D3 : A5 E2 | lda {$e2} + 267 | 1 ampersand.s 267 | Code | 11 | | 3 | 00/19D5 : 8D 7E 18 | sta theY + 268 | 1 ampersand.s 268 | Code | 11 | | 1 | 00/19D8 : 60 | rts + 269 | 1 ampersand.s 269 | Empty | 11 | | 0 | 00/19D9 | + 270 | 1 ampersand.s 270 | Comment | 11 | | 0 | 00/19D9 | *----------------------------------- CIRCLE n,fb + 271 | 1 ampersand.s 271 | Empty | 11 | | 0 | 00/19D9 | + 272 | 1 ampersand.s 272 | Empty | 11 | | 0 | 00/19D9 | doC + 273 | 1 ampersand.s 273 | Code | 11 | | 3 | 00/19D9 : 20 B1 00 | jsr {$b1} ; get next token + 274 | 1 ampersand.s 274 | Code | 11 | | 3 | 00/19DC : 20 67 DD | jsr {$dd67} ; eval expression + 275 | 1 ampersand.s 275 | Code | 11 | | 3 | 00/19DF : 20 52 E7 | jsr {$e752} ; convert to int + 276 | 1 ampersand.s 276 | Code | 11 | | 2 | 00/19E2 : A5 50 | lda {$50} + 277 | 1 ampersand.s 277 | Code | 11 | | 3 | 00/19E4 : 8D E2 18 | sta theRADIUS ; the radius + 278 | 1 ampersand.s 278 | Empty | 11 | | 0 | 00/19E7 | + 279 | 1 ampersand.s 279 | Code | 11 | | 3 | 00/19E7 : 20 BE DE | jsr {$debe} ; check for comma + 280 | 1 ampersand.s 280 | Code | 11 | | 3 | 00/19EA : 20 67 DD | jsr {$dd67} ; eval expression + 281 | 1 ampersand.s 281 | Code | 11 | | 3 | 00/19ED : 20 52 E7 | jsr {$e752} ; convert to int + 282 | 1 ampersand.s 282 | Code | 11 | | 2 | 00/19F0 : A5 50 | lda {$50} + 283 | 1 ampersand.s 283 | Code | 11 | | 3 | 00/19F2 : 8D E3 18 | sta theFB ; the foreground color + 284 | 1 ampersand.s 284 | Code | 11 | | 1 | 00/19F5 : 60 | rts + 285 | 1 ampersand.s 285 | Empty | 11 | | 0 | 00/19F6 | + 286 | 1 ampersand.s 286 | Comment | 11 | | 0 | 00/19F6 | *----------------------------------- INK fb + 287 | 1 ampersand.s 287 | Empty | 11 | | 0 | 00/19F6 | + 288 | 1 ampersand.s 288 | Empty | 11 | | 0 | 00/19F6 | doI + 289 | 1 ampersand.s 289 | Code | 11 | | 3 | 00/19F6 : 20 B1 00 | jsr {$b1} ; get next token + 290 | 1 ampersand.s 290 | Code | 11 | | 3 | 00/19F9 : 20 67 DD | jsr {$dd67} ; eval expression + 291 | 1 ampersand.s 291 | Code | 11 | | 3 | 00/19FC : 20 52 E7 | jsr {$e752} ; convert to int + 292 | 1 ampersand.s 292 | Code | 11 | | 2 | 00/19FF : A5 50 | lda {$50} + 293 | 1 ampersand.s 293 | Code | 11 | | 3 | 00/1A01 : 8D E4 18 | sta theINK + 294 | 1 ampersand.s 294 | Code | 11 | | 1 | 00/1A04 : 60 | rts + 295 | 1 ampersand.s 295 | Empty | 11 | | 0 | 00/1A05 | + 296 | 1 ampersand.s 296 | Comment | 11 | | 0 | 00/1A05 | *----------------------------------- PAPER fb + 297 | 1 ampersand.s 297 | Empty | 11 | | 0 | 00/1A05 | + 298 | 1 ampersand.s 298 | Empty | 11 | | 0 | 00/1A05 | doP + 299 | 1 ampersand.s 299 | Code | 11 | | 3 | 00/1A05 : 20 B1 00 | jsr {$b1} ; get next token + 300 | 1 ampersand.s 300 | Code | 11 | | 3 | 00/1A08 : 20 67 DD | jsr {$dd67} ; eval expression + 301 | 1 ampersand.s 301 | Code | 11 | | 3 | 00/1A0B : 20 52 E7 | jsr {$e752} ; convert to int + 302 | 1 ampersand.s 302 | Code | 11 | | 2 | 00/1A0E : A5 50 | lda {$50} + 303 | 1 ampersand.s 303 | Code | 11 | | 3 | 00/1A10 : 8D E5 18 | sta thePAPER + 304 | 1 ampersand.s 304 | Code | 11 | | 1 | 00/1A13 : 60 | rts + 305 | 1 ampersand.s 305 | Empty | 11 | | 0 | 00/1A14 | + 306 | 1 ampersand.s 306 | Comment | 11 | | 0 | 00/1A14 | *----------------------------------- HIRES + 307 | 1 ampersand.s 307 | Empty | 11 | | 0 | 00/1A14 | + 308 | 1 ampersand.s 308 | Empty | 11 | | 0 | 00/1A14 | doH + 309 | 1 ampersand.s 309 | Code | 11 | | 3 | 00/1A14 : 20 B1 00 | jsr {$b1} ; get next token + 310 | 1 ampersand.s 310 | Empty | 11 | | 0 | 00/1A17 | + 311 | 1 ampersand.s 311 | Code | 11 | | 2 | 00/1A17 : A9 00 | lda #0 + 312 | 1 ampersand.s 312 | Code | 11 | | 2 | 00/1A19 : 85 20 | sta {$20} + 313 | 1 ampersand.s 313 | Code | 11 | | 2 | 00/1A1B : A9 28 | lda #40 + 314 | 1 ampersand.s 314 | Code | 11 | | 2 | 00/1A1D : 85 21 | sta {$21} + 315 | 1 ampersand.s 315 | Code | 11 | | 2 | 00/1A1F : A9 14 | lda #20 + 316 | 1 ampersand.s 316 | Code | 11 | | 2 | 00/1A21 : 85 22 | sta {$22} + 317 | 1 ampersand.s 317 | Code | 11 | | 2 | 00/1A23 : A9 18 | lda #24 + 318 | 1 ampersand.s 318 | Code | 11 | | 2 | 00/1A25 : 85 23 | sta {$23} + 319 | 1 ampersand.s 319 | Code | 11 | | 3 | 00/1A27 : 20 58 FC | jsr {$fc58} + 320 | 1 ampersand.s 320 | Empty | 11 | | 0 | 00/1A2A | + 321 | 1 ampersand.s 321 | Code | 11 | | 3 | 00/1A2A : 20 E2 F3 | jsr {$f3e2} + 322 | 1 ampersand.s 322 | Code | 11 | | 1 | 00/1A2D : 60 | rts + 323 | 1 ampersand.s 323 | Empty | 11 | | 0 | 00/1A2E | + 324 | 1 ampersand.s 324 | Comment | 11 | | 0 | 00/1A2E | *----------------------------------- WAIT x + 325 | 1 ampersand.s 325 | Empty | 11 | | 0 | 00/1A2E | + 326 | 1 ampersand.s 326 | Empty | 11 | | 0 | 00/1A2E | doW + 327 | 1 ampersand.s 327 | Code | 11 | | 3 | 00/1A2E : 20 B1 00 | jsr {$b1} ; get next token + 328 | 1 ampersand.s 328 | Code | 11 | | 3 | 00/1A31 : 20 67 DD | jsr {$dd67} ; eval expression + 329 | 1 ampersand.s 329 | Code | 11 | | 3 | 00/1A34 : 20 52 E7 | jsr {$e752} ; convert to int + 330 | 1 ampersand.s 330 | Empty | 11 | | 0 | 00/1A37 | + 331 | 1 ampersand.s 331 | Code | 11 | | 2 | 00/1A37 : 46 51 | lsr {$50}+1 + 332 | 1 ampersand.s 332 | Code | 11 | | 2 | 00/1A39 : 66 50 | ror {$50} + 333 | 1 ampersand.s 333 | Code | 11 | | 2 | 00/1A3B : A5 50 | lda {$50} + 334 | 1 ampersand.s 334 | Code | 11 | | 3 | 00/1A3D : 4C A8 FC | jmp {$fca8} + 335 | 1 ampersand.s 335 | Empty | 11 | | 0 | 00/1A40 | + 336 | 1 ampersand.s 336 | Comment | 11 | | 0 | 00/1A40 | *----------------------------------- EXPLODE + 337 | 1 ampersand.s 337 | Empty | 11 | | 0 | 00/1A40 | + 338 | 1 ampersand.s 338 | Empty | 11 | | 0 | 00/1A40 | doE + 339 | 1 ampersand.s 339 | Code | 11 | | 3 | 00/1A40 : 20 B1 00 | jsr {$b1} + 340 | 1 ampersand.s 340 | Code | 11 | | 1 | 00/1A43 : 60 | rts + 341 | 1 ampersand.s 341 | Empty | 11 | | 0 | 00/1A44 | + 342 | 1 ampersand.s 342 | Comment | 11 | | 0 | 00/1A44 | *----------------------------------- RESTORE address + 343 | 1 ampersand.s 343 | Empty | 11 | | 0 | 00/1A44 | + 344 | 1 ampersand.s 344 | Empty | 11 | | 0 | 00/1A44 | doR + 345 | 1 ampersand.s 345 | Code | 11 | | 3 | 00/1A44 : 20 B1 00 | jsr {$b1} ; get next token + 346 | 1 ampersand.s 346 | Code | 11 | | 3 | 00/1A47 : 20 67 DD | jsr {$dd67} ; eval expression + 347 | 1 ampersand.s 347 | Code | 11 | | 3 | 00/1A4A : 20 52 E7 | jsr {$e752} ; convert to int + 348 | 1 ampersand.s 348 | Code | 11 | | 3 | 00/1A4D : 20 1A D6 | jsr {$d61a} ; find chosen line no. + 349 | 1 ampersand.s 349 | Empty | 11 | | 0 | 00/1A50 | + 350 | 1 ampersand.s 350 | Code | 11 | | 2 | 00/1A50 : A4 9C | ldy {$9b}+1 ; point DATPTR at byte before it + 351 | 1 ampersand.s 351 | Code | 11 | | 2 | 00/1A52 : A6 9B | ldx {$9b} + 352 | 1 ampersand.s 352 | Code | 11 | | 2 | 00/1A54 : D0 01 | bne dx + 353 | 1 ampersand.s 353 | Code | 11 | | 1 | 00/1A56 : 88 | dey + 354 | 1 ampersand.s 354 | Code | 11 | | 1 | 00/1A57 : CA | dx dex + 355 | 1 ampersand.s 355 | Code | 11 | | 2 | 00/1A58 : 84 7E | sty {$7d}+1 + 356 | 1 ampersand.s 356 | Code | 11 | | 2 | 00/1A5A : 86 7D | stx {$7d} + 357 | 1 ampersand.s 357 | Code | 11 | | 1 | 00/1A5C : 60 | rts + 358 | 1 ampersand.s 358 | Empty | 11 | | 0 | 00/1A5D | + 359 | 1 ampersand.s 359 | Comment | 11 | | 0 | 00/1A5D | *----------------------------------- GOSUB address + 360 | 1 ampersand.s 360 | Empty | 11 | | 0 | 00/1A5D | + 361 | 1 ampersand.s 361 | Empty | 11 | | 0 | 00/1A5D | doG + 362 | 1 ampersand.s 362 | Code | 11 | | 2 | 00/1A5D : A9 03 | lda #3 ; make sure there's enough stack + 363 | 1 ampersand.s 363 | Code | 11 | | 3 | 00/1A5F : 20 D6 D3 | jsr {$d3d6} + 364 | 1 ampersand.s 364 | Empty | 11 | | 0 | 00/1A62 | + 365 | 1 ampersand.s 365 | Code | 11 | | 2 | 00/1A62 : A5 B9 | lda {$b8}+1 ; push marker for RETURN + 366 | 1 ampersand.s 366 | Code | 11 | | 1 | 00/1A64 : 48 | pha + 367 | 1 ampersand.s 367 | Code | 11 | | 2 | 00/1A65 : A5 B8 | lda {$b8} + 368 | 1 ampersand.s 368 | Code | 11 | | 1 | 00/1A67 : 48 | pha + 369 | 1 ampersand.s 369 | Code | 11 | | 2 | 00/1A68 : A5 76 | lda {$75}+1 + 370 | 1 ampersand.s 370 | Code | 11 | | 1 | 00/1A6A : 48 | pha + 371 | 1 ampersand.s 371 | Code | 11 | | 2 | 00/1A6B : A5 75 | lda {$75} + 372 | 1 ampersand.s 372 | Code | 11 | | 1 | 00/1A6D : 48 | pha + 373 | 1 ampersand.s 373 | Code | 11 | | 2 | 00/1A6E : A9 B0 | lda #{$b0} + 374 | 1 ampersand.s 374 | Code | 11 | | 1 | 00/1A70 : 48 | pha + 375 | 1 ampersand.s 375 | Empty | 11 | | 0 | 00/1A71 | + 376 | 1 ampersand.s 376 | Code | 11 | | 3 | 00/1A71 : 20 B1 00 | jsr {$b1} ; get next token + 377 | 1 ampersand.s 377 | Code | 11 | | 3 | 00/1A74 : 20 67 DD | jsr {$dd67} ; parse numeric expr + 378 | 1 ampersand.s 378 | Code | 11 | | 3 | 00/1A77 : 20 52 E7 | jsr {$e752} ; convert it to int + 379 | 1 ampersand.s 379 | Code | 11 | | 3 | 00/1A7A : 20 41 D9 | jsr {$d93e}+3 ; point at chosen statement + 380 | 1 ampersand.s 380 | Code | 11 | | 3 | 00/1A7D : 4C D2 D7 | jmp {$d7d2} ; start running it + 381 | 1 ampersand.s 381 | Empty | 11 | | 0 | 00/1A80 | + 382 | 1 ampersand.s 382 | Comment | 11 | | 0 | 00/1A80 | *--- End of code + 383 | 1 ampersand.s 383 | Empty | 11 | | 0 | 00/1A80 | + 384 | 1 ampersand.s 384 | Data | 11 | | 42 | 00/1A80 : A8 E3 A9 A0 | asc "(c) 2023, Antoine Vignau & Olivier Zardini" + | | | | | | B2 B0 B2 B3 | + | | | | | | AC A0 C1 EE | + | | | | | | F4 EF E9 EE | + | | | | | | E5 A0 D6 E9 | + | | | | | | E7 EE E1 F5 | + | | | | | | A0 A6 A0 CF | + | | | | | | EC E9 F6 E9 | + | | | | | | E5 F2 A0 DA | + | | | | | | E1 F2 E4 E9 | + | | | | | | EE E9 | + 385 | 1 ampersand.s 385 | Empty | 11 | | 0 | 00/1AAA | +------+-----------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- diff --git a/lemanoirdudocteurgenius/apple2/jeu.bas b/lemanoirdudocteurgenius/apple2/jeu.bas new file mode 100644 index 0000000..cb7c2fe --- /dev/null +++ b/lemanoirdudocteurgenius/apple2/jeu.bas @@ -0,0 +1,883 @@ +1 REM +2 REM COPYRIGHT LORICIELS 83 L.BENES +3 REM LE MANOIR DU DOCTEUR GENIUS +4 REM +5 REM VERSION APPLE II REALISEE EN 2023 +6 REM PAR BRUTAL DELUXE SOFTWARE : ANTOINE VIGNAU & OLIVIER ZARDINI +7 REM +9 REM ... COPYRIGHT LORICIELS TOUT DROIT DE REPRODUCTION INTERDIT ..... + +45 HOME: PRINT: PRINT " VEUILLEZ PATIENTER" +50 GOSUB 8000 'CHARGEMENT VARIABLES +55 & H:DIM P(12):P(11)=0:P(12)=0 +60 SALLE=1 +70 FOR N=1 TO 10 +80 P(N)=0:C(N)=0 +85 NEXT +90 C(3)=14:C(7)=12:C(1)=80:C(9)=12 +100 IFSALLE<>14ANDSALLE<>16ANDSALLE<>17ANDSALLE<>19 THEN P(2)=0 +105 IF P(2)=0 THEN 200 +106 IF O(22)=SA AND P(7)=1 THEN 200 +107 IF O(05)=SA AND P(3)=1 THEN 200 +110 IF C(9)>1 THEN C(9)=C(9)-1 +130 & H +140 PRINT "Il fait noir comme dans un four,il faudrait peut etre allumer" +145 IF KEY$<>"" THEN & W 500 ELSE & W 300 +150 GOTO 500 +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:": & W 100 +340 H=1 +350 PRINT " ";O$(N); +360 & W 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 HOME:PRINTX$ +570 GOSUB 6000 +580 IF MO$(1)="00" THEN PRINT "Je ne comprends pas...": & W 200:GOTO100 +900 REM CONTROLE Mvt +910 Z=1 +920 T$=MID$(M$(SALLE),Z,2) +930 IF T$="00" THEN 980 +940 IF T$<>MO$(1) THEN 970 +950 SALLE=VAL(MID$(M$(SALLE),Z+2,2)) +960 GOTO 100 +970 Z=Z+4:GOTO920 +980 T=0 +990 A1=0 +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 +1230 E$=MID$(A$(NL),5) +1400 REM CONDITIONS +1410 E=1 +1420 IF MID$(E$,E,1)="." THEN 1700 +1430 LI=ASC(MID$(E$,E,1))-65 +1440 N=VAL(MID$(E$,E+1,2)) +1450 GOSUB 1500+LI*10 +1460 IF OK=0 THEN 1100 +1470 E=E+3:GOTO1420 +1500 IF N=SALLE THEN OK=1 ELSE OK=0 +1505 RETURN +1510 IF O(N)=-1 OR O(N)=SALLE THEN OK=1 ELSE OK=0 +1515 RETURN +1520 IF O(N)<>SALLE AND O(N)<>-1 THEN OK=1 ELSE OK=0 +1525 RETURN +1530 IF O(N)=-1 THEN OK=1 ELSE OK=0 +1535 RETURN +1540 IF P(N)=1 THEN OK=1 ELSE OK=0 +1545 RETURN +1550 IF P(N)=0 THEN OK=1 ELSE OK=0 +1555 RETURN +1560 IF C(N)=1 THEN OK=1 ELSE OK=0 +1565 RETURN +1570 IF INT(RND(1)*99+1)SALLE THEN OK=1 ELSE OK=0 +1585 RETURN +1700 REM ACTIONS +1705 E=E+1:A1=1 +1710 IF MID$(E$,E,1)="." THEN 1100 +1720 LI=ASC(MID$(E$,E,1))-65 +1730 IF MID$(E$,E+1,1)<>"." THEN N=VAL(MID$(E$,E+1,2)) +1740 BREAK=0 +1750 GOSUB 1800+LI*100 +1760 IF BREAK<>0 THEN GOTO BREAK +1780 E=E+3 +1790 GOTO 1710 +1800 G=0:HH=0 +1810 G=G+1 +1820 IF O(G)=-1 THEN GOTO 1840 +1830 IF G-1 THEN 1960 +1935 REM CE PROGRAMMEEST LA PROPRIETE DE L.WEILL LORICIELS +1940 PRINT "Vous l'avez deja,vous etes etourdit etdans cette maison ce n'est pas" +1945 & W 400 +1950 PRINT "tres conseille...":GOTO1920 +1960 O(N)=-1:S(1)=S(1)+1:RETURN +2000 IF O(N)=-1 THEN 2030 +2010 PRINT "Comment voulez vous poser ce que vous n'avez pas" +2020 GOTO 1920 +2030 O(N)=SALLE:S(1)=S(1)-1:RETURN +2100 HOME: & G 4000+N*10 +2110 RETURN +2200 P(N)=1: RETURN +2300 P(N)=0: RETURN +2400 C(N)=VAL(MID$(A$(N),E+3,2)):E=E+2:RETURN +2500 IF O(N)=-1 THEN S(1)=S(1)-1 +2510 O(N)=0 :RETURN +2600 SALLE=N:RETURN +2700 PRINT "D'accord..." +2710 & W 150:BREAK=300:RETURN +2800 BREAK=500 +2810 RETURN +2900 BREAK=530:RETURN +3000 BREAK=100:RETURN +3100 POP:GOTO20000 +3200 O(N)=SALLE:RETURN +3300 X$=O$(N):O$(N)=O$(N+1):O$(N+1)=X$:RETURN +4000 & H:FORN=1TO20: & E : & W 4:NEXT +4001 PRINT "Vous avez gardez la lampe trop longtemps allumee,elle a explose" +4005 & W 400:RETURN +4010 & H +4011 PRINT "Vous avez oubliez de fermer le robinetvous mourez sous des tonnes d'eau" +4015 & W 500:RETURN +4020 & H +4022 PRINT "Lapporte vient de se refermer derrierevous,vous voila prisonnier..." +4025 & W 500:RETURN +4030 & H +4031 PRINT "Vous avez trebuche dans l'escalier,vous vous empallez sur le couteau!" +4035 & W 500:RETURN +4040 & H +4041 PRINT "Vous renversez l'eau dans l'escalier, ce qui provoque une decharge"; +4042 PRINT " de la": & W 300:PRINT "prise electrique" +4045 & W 300:RETURN +4050 & H +4051 PRINT "Vous etes sauf grace a la combinaison que vous avez enfile..!" +4055 & W 500:RETURN +4060 PRINT "Vous mourrez electrocute..." +4065 & W 300:RETURN +4070 & H: REM FOR N=1 TO 20:MUSIC2,2,2,10:PLAY3,7,4,80: & W 1: & E : & W 6:NEXT +4071 PRINT "La piece etait pleine de gaz explosif,vous auriez du eteindre..." +4072 & W 500:HOME:PRINT "On ramassera vos morceaux un autre jour..!" +4075 & W 300:RETURN +4080 & H +4081 PRINT "Vous mourez empalle sur des lances sorties du mur...!" +4085 & W 400:RETURN +4090 REM +4091 PRINT "La porte ne s'ouvre pas de cette piece": & W 300:RETURN +4100 & H +4101 PRINT "La lampe et le briquet refusent de marcher dans cette piece" +4105 & W 400:RETURN +4110 & H +4111 PRINT "Vous tombez dans une trappe,vous vous disloquez en arrivant au sol.." +4115 & W 500:RETURN +4120 REM +4121 PRINT "Vous avez raison de passer,car ce monstre n'etait qu'une projection" +4124 & W 400:PRINT "en 3 dimentions sur un ecran de fumee" +4125 & W 250:RETURN +4130 REM +4131 PRINT "Vous avez raison,la curiosite est un vilain defaut!!!" +4132 & W 400 +4133 POP:TEXT:PRINT:PRINT:PRINTSPC(12)"AU REVOIR" +4135 & W 200:GOTO 20100 +4140 PRINT "Vous avez raison d'attendre,mais cela ne pourra pas durer"; +4141 PRINT " eternellement.." +4142 & W 450:RETURN +4150 : & H:PRINT "Vous avez de la chance car ce coffre etait ouvert.": & W 400 +4152 PRINT "Un message a l'interieur dit:": & W 250:PRINT "Ne respectez pas les "; +4154 PRINT "couleurs du":PRINT "code de la route...?": & W 500 +4156 PRINT "Tiens le coffre se referme": & W 200:RETURN +4160 PRINT "Maintenant,vous avez une lampe pleine de petrole" +4165 & W 400:RETURN +4170 PRINT "Vous n'avez rien pour transporter le petrole": & W 400:RETURN +4180 & H:PRINT "Le briquet que vous aviez laisse allume vient d'exploser" +4181 FOR N=1 TO 10: & E : & W 6:NEXT +4185 & W 300:PRINT "Ca tue l'etourderie.....": & W 200:RETURN +4190 & H:PRINT "A force de marcher en long et en large dans cette maison," +4195 & W 300:PRINT "vous sombrez dans un coma des plus mortel...": & W 300:RETURN +4200 PRINT "L'eau coule...":RETURN +4210 & H:PRINT "Vous avez les pieds trempes,et cela vous rend tres malade..." +4215 & W 400:PRINT "Vous mourez d'une triple pneumonie...!": & W 300:RETURN +4220 PRINT "Le titre est:": & W 200:PRINT "La mort a la premiere page.": & W 300:RETURN +4230 & H:FOR N=1 TO 20: & E :NEXT +4233 PRINT "Le livre a explose lorsque vous l'avezouvert...": & W 400:RETURN +4240 PRINT "Le papier indique: Cherchez la clef.": & W 300:RETURN +4250 PRINT "La clef vous permettera de trouver le code de la porte d'entree." +4255 & W 400:RETURN +4260 & H:PRINT "Il y a , a cote de la porte,un claviernumerique permettant "; +4265 PRINT "d'entrer un code": & W 400:RETURN +4270 PRINT "Pour faire quoi..?": & W 200:RETURN +4280 PRINT "Il y a une odeur de gaz.": & W 300:RETURN +4290 PRINT "Apparement,il n'y a occune odeur mais...": & W 300:RETURN +4300 PRINT "C'est deja fait,espece de rigolo": & W 300:RETURN +4310 PRINT "Il faudrait peut etre du feu": & W 300:RETURN +4320 PRINT "La lampe ne contient pas de petrole": & W 300:RETURN +4330 PRINT "Vous ne l'avez pas": & W 200:RETURN +4340 PRINT "Le briquet est encore allume et il eclaire la piece."& W 300:RETURN +4350 FOR N=1 TO 15: & E : & W 4:NEXT +4355 PRINT "La torche etait piegee,elle vous explose dans les mains.." +4357 & W 400:RETURN +4360 PRINT "La lampe est encore allumee,et elle vous eclaire": & W 300:RETURN +4370 & H:PRINT "Un nain vient de vous lancer un poignard en plein coeur.." +4375 & W 300:RETURN +4380 PRINT "Un nain vient de se precipiter sur vous,il s'empalle sur votre"; +4385 PRINT " ciseau": & W 400:RETURN +4390 PRINT "Un nain vient de se precipiter sur vous,il s'empalle sur votre"; +4395 PRINT " couteau": & W 400:RETURN +4400 & H:PRINT "Vous venez de renverser le pot": & W 150:RETURN +4410 & H:PRINT "La foudre vient de tomber sur la maison": & W 200 +4412 PRINT "La maison n'existe plus,vous non plus": & W 200:RETURN +4420 & H:PRINT "A force de marcher dans le noir,vous avez trebuche": & W 200 +4425 PRINT "Vous mourez d'une fracture du crane...": & W 200:RETURN +4430 PRINT "Vous ne pouvez pas travailler dans le noir...": & W 300:RETURN +4440 PRINT "La lumiere du briquet ne suffit pas pour travaillez...": & W 400:RETURN +4450 PRINT "Impossible !": & W 100:RETURN +4460 PRINT "Vous n'avez aucun outil..": & W 250:RETURN +4470 PRINT "Le teleporteur est en panne,donc les boutons ne fonctionnent pas." +4475 & W 400:RETURN +4480 FOR N=1 TO 25: & E : & W 5:NEXT +4484 PRINT "Le teleporteur vient d'exploser,vous etes decompose..!": & W 400:RETURN +4490 PRINT "Le teleporteur se met en marche,vous disparaissez" +4491 REM MUSIC2,1,5,0:PLAY2,1,3,1000 +4492 FOR N=1 TO 12 +4493 & P 4: & W 8: & P 1: & W 8: & P 3: & W 8: & P 4: & W 8: & P 1: & W 8 +4494 NEXT: & P 0: REM PLAY0,0,0,0 +4495 FOR N=500 TO 30 STEP-5 +4497 NEXT: REM SOUND2,N,12:PLAY2,0,0,100:NEXT +4498 RETURN : REM PLAY0,0,0,0 : & H:RETURN +4500 & H:PRINT "Vous prenez du 30000 Volts dans les doigts,": & W 300:RETURN +4510 PRINT "Le placard est ferme a clef": & W 150:RETURN +4520 & H:PRINT "L'horrible monstre sorti du placard vient de vous devorer" +4525 & W 400:RETURN +4530 PRINT "Il ne fallait pas fuir": & W 200:RETURN +4540 & H:PRINT "Vous avez raison d'utiliser le ciseau,le monstre est mort" +4545 & W 400:RETURN +4550 PRINT "A l'interieur du placard,le No "PL" est inscrit": & W 300 +4555 PRINT "Le placard se referme.": & W 150:RETURN +4560 & H:FOR N=1 TO 30: & E : & W 5:NEXT:PRINT "le pistolet a explose": & W 200 +4565 RETURN +4570 & H:FOR N=1 TO 25: & E : & W 7:NEXT: +4575 PRINT "le clavier numerique a explose": & W 250:RETURN +4580 & H:PRINT "Le clavier numerique prends feu, heureusement,vous aviez "; +4582 & W 300:PRINT "un pot plein": & W 100 +4585 PRINT "d'eau qui vous a permis d'eteindre ce feu" +4586 & W 400:RETURN +4590 & H:INPUT"No DE CODE";ZC +4595 IF ZC<>PL THEN GOTO 4570 +4600 & W 200:PRINT "Le code est exact...":POP:PRINT "La porte s'ouvre..." +4603 & W 400 +4605 GOSUB10000:PRINT "Vous voila en dehors de la maison..." +4608 GOSUB 32000:GOTO20100 +4610 & H:PRINT "A l'interieur du placard,il y a un motqui parle d'un teleporteur" +4615 & W 400:PRINT "Tiens le placard se ferme tout seul...": & W 150:RETURN +4620 PRINT "Avant de la poser par terre,il faudrait peut etre l'enlever." +4625 & W 350:RETURN +4630 & H:PRINT "Il y a un horrible monstre devant vousqui est sortie du placart." +4635 & W 400:RETURN +4640 & H:PRINT "Le placard etait piege,vous n'auriez pas du l'ouvrir" +4645 FOR N=1 TO 30: & E : & W 7:NEXT +4647 & W 150:RETURN +6000 REM ANALYSE DU MOT +6010 N=0:GN=0 +6020 REPEAT:N=N+1 +6030 UNTIL MID$(X$,N,1)<>" " +6040 REPEAT:GN=GN+1 +6050 UNTIL MID$(X$,N+GN,1)=" "OR MID$(X$,N+GN,1)="" OR GN=20 +6060 IF GN>4 THEN GN=4 +6070 X$(1)=MID$(X$,N,GN) +6080 REPEAT:N=N+1 +6090 UNTIL MID$(X$,N,1)=" "OR MID$(X$,N,1)="" +6100 REPEAT:N=N+1 +6110 UNTIL MID$(X$,N,1)<>" " +6115 GN=0 +6120 REPEAT:GN=GN+1 +6130 UNTIL MID$(X$,N+GN,1)=" "OR MID$(X$,N+GN,1)="" OR GN=20 +6140 IF GN>4 THEN GN=4 +6150 X$(2)=MID$(X$,N,GN) +6160 FOR W=1 TO 2:N=0:MO$(W)="00" +6170 N=N+1 +6180 IF N>V THEN W=3:GOTO 6300 +6190 IF MID$(V$(N),3,4)=X$(W) THEN GOTO 6250 +6200 GOTO 6170 +6250 MO$(W)=MID$(V$(N),1,2) +6300 NEXT W +6310 RETURN +7000 GOSUB10000 +7005 PRINT "Vous etes devant le manoir du defunt":PRINT: & W 250 +7006 PRINTSPC(12)"Dr GENIUS" +7007 IF KEY$<>"" THEN & W 400 ELSE & W 100 +7008 RETURN +7010 GOSUB10100 +7015 PRINT "Vous etes dans le hall d'entree." +7016 IF KEY$<>"" THEN & W 400 ELSE & W 100 +7017 RETURN +7020 GOSUB10200 +7024 PRINT "Vous etes en bas de l'escalier menant au 2eme etage" +7025 IF KEY$<>"" THEN & W 400 ELSE & W 100 +7026 RETURN +7030 F1=0:GOSUB10300 +7034 PRINT "Vous etes dans la salle a manger." +7035 IF KEY$<>"" THEN & W 400 ELSE & W 100 +7036 RETURN +7040 F1=1:GOSUB10300 +7043 PRINT "Vous etes dans une biblioteque sans livre...!" +7045 IF KEY$<>"" THEN & W 400 ELSE & W 100 +7046 RETURN +7050 GOSUB 10500 +7053 PRINT "Vous etes dans une buanderie" +7055 IF KEY$<>"" THEN & W 400 ELSE & W 100 +7056 RETURN +7060 GOSUB 10600 7th +7063 PRINT "Vous etes dans le salon" +7065 IF KEY$<>"" THEN & W 400 ELSE & W 100 +7066 RETURN +7070 LX=0:GOSUB 10700 8th +7073 PRINT "Vous etes dans une chambre." +7075 IF KEY$<>"" THEN & W 400 ELSE & W 100 +7076 RETURN +7080 GOSUB10800 9th +7083 PRINT "Vous etes dans un corridor" +7085 IF KEY$<>"" THEN & W 400 ELSE & W 100 +7086 RETURN +7090 LX=0:GOSUB10900 10th +7093 PRINT "Vous etes dans une salle d'attente." +7095 IF KEY$<>"" THEN & W 400 ELSE & W 100 +7096 RETURN +7100 LX=0:GOSUB11000 11th +7103 PRINT "Vous etes dans le vestibules" +7105 IF KEY$<>"" THEN & W 400 ELSE & W 100 +7106 RETURN +7110 LX=2:GOSUB10700 12th +7113 PRINT "Vous etes dans la chambre d'amis." +7115 IF KEY$<>"" THEN & W 400 ELSE & W 100 +7116 RETURN +7120 LX=1:GOSUB 10700 13th +7123 PRINT "Vous etes dans une chambre." +7125 IF KEY$<>"" THEN & W 400 ELSE & W 100 +7126 RETURN +7140 LX=2:GOSUB12200 14th +7143 PRINT "Vous etes dans une petite salle" +7145 IF KEY$<>"" THEN & W 400 ELSE & W 100 +7146 RETURN +7150 GOSUB11500 15th +7153 PRINT "Vous etes dans le laboratoire du Dr GENIUS" +7155 IF KEY$<>"" THEN & W 400 ELSE & W 100 +7156 RETURN +7160 LX=1:GOSUB10900 16th +7163 PRINT "Vous etes dans une petite piece vide." +7165 IF KEY$<>"" THEN & W 400 ELSE & W 100 +7166 RETURN +7170 GOSUB 11700 17th +7173 PRINT "Vous etes...": & W 300:PRINT "Justement,vous ne savez pas ou vous etes" +7175 IF KEY$<>"" THEN & W 400 ELSE & W 100 +7176 RETURN +7180 GOSUB 11800 18th +7183 PRINT "Vous etes en haut de l'escalier" +7185 IF KEY$<>"" THEN & W 400 ELSE & W 100 +7186 RETURN +7190 LX=2:GOSUB10900 19th +7193 PRINT "Vous etes dans la salle bain" +7195 IF KEY$<>"" THEN & W 400 ELSE & W 100 +7196 RETURN +7200 LX=1:GOSUB12200 20th +7203 PRINT "Vous etes dans le living room" +7205 IF KEY$<>"" THEN & W 400 ELSE & W 100 +7206 RETURN +7210 LX=1:GOSUB11000 21th +7213 PRINT "Vous etes dans une piece enfumee...!" +7215 IF KEY$<>"" THEN & W 400 ELSE & W 100 +7216 RETURN +7220 LX=0:GOSUB12200 22th +7223 PRINT "Vous etes dans une grande piece" +7225 IF KEY$<>"" THEN & W 400 ELSE & W 100 +7226 RETURN +7230 GOSUB 12300 23th +7233 PRINT "Vous etes dans une piece de rangement" +7235 IF KEY$<>"" THEN & W 400 ELSE & W 100 +7236 RETURN +7240 GOSUB12400 24th +7243 PRINT "Vous etes dans le dressing" +7245 IF KEY$<>"" THEN & W 400 ELSE & W 100 +7246 RETURN +8000 REM CHARGEMENT VARIABLES +8001 & R 8000: REM RESTORE +8010 V=70:DIM V$(V) +8020 FOR N=1 TO V +8030 READ KO$ +8040 V$(N)=KO$ +8050 NEXT +8060 DATA 01N,01NORD,02S,02SUD,03E,03EST,04O,04OUEST,05MONT,05GRIM,06DESC +8070 DATA 10PREN,10RAMA,11POSE,12OUVR,13FERM,14ENTR,14AVAN,15ALLU,16ETEI +8080 DATA 17REPA,17DEPA,18LIS,19REGA,20RETO,21RENI,21SENS,22REMP,23VIDE +8090 DATA 24INVE,24LIST,25RIEN,25ATTE,26POIG,27COUT,28TOUR,29LAMP,30CODE +8100 DATA 31ESCA,32PIST,33PLAC,34TORC,35TELE,36MONS,37PETR,38POT,18LIT +8110 DATA 39CLEF,40PAPI,41LIVR,42BRIQ,43COMB,44COFF,45ROUG,46BLEU,47VERT +8120 DATA 48TITR,49ROBI,50CISE,51PORT +8124 DATA 52ACTI,53JETE,53LANCE,54EAU,55ENFI,55PASS,56APPU,56ENFO,57ENLE +8126 DATA 58RENT +8130 O=25:DIM O(O):DIM O$(O) +8140 FOR N=1 TO O +8150 READ KO +8160 O(N)=KO +8170 NEXT +8180 DATA 06,05,05,08,08,00,00,11,11 +8190 DATA 13,20,18,16,16,16,16,00,21 +8200 DATA 00,22,25,12,00,25,00 +8210 FOR N=1 TO O +8220 READ KO$ +8230 O$(N)=KO$ +8240 NEXT +8250 DATA UNE TORCHE ELECTRIQUE,UN ROBINET,UN CISEAU,UN TOURNEVIS +8260 DATA UNE LAMPE A PETROLE,UNE LAMPE PLEINE,UNE LAMPE ALLUME,UN COUTEAU +8270 DATA UN PAPIER,UN LIVRE,DU PETROLE DANS UN LAVABO BOUCHE +8280 DATA UNE CLEF,UN BOUTON ROUGE,UN BOUTON BLEU +8290 DATA UN BOUTON VERT,UN TELEPORTEUR,UN TELEPORTEUR REPARE +8300 DATA UNE COMBINAISON ARGENTEE,UNE COMBINAISON ENFILEE,UN MONSTRE ALL'EST +8310 DATA UN PISTOLET,UN BRIQUET,UN BRIQUET ALLUME,UN POT,UN POT PLEIN D'EAU +8320 M=25:DIM M$(M) +8330 FOR N=1 TO M +8340 READ KO$ +8350 M$(N)=KO$ +8360 NEXT +8370 DATA 00,0403030400,030200,04020305010600,04040107032000,020400 +8380 DATA 04080109020500,030700,04130207031000 +8390 DATA 0409021100,0110031200,041100,030900,0209031500,00,00 +8400 DATA00,00,0122032100,040500,0125022200,012100 +8410 DATA 0124042200,022300,022100 +8430 A=128:DIM A$(A) +8440 FOR N=1 TO A +8450 READ KO$ +8460 A$(N)=KO$ +8470 NEXT +8480 DATA 1400A01.I02D02M.,0500A03D08.D03N.,0500A03E08E09D24.D04D05I19E02M. +8485 DATA 0500A03E08D24.D04D06N. +8490 DATA 0500A03E07.I19M.,0500A03E03.I19M.,0500A03.I19E02M.,0600A19D08.D03N. +8500 DATA0600A19E08E09D24.D04D05I03M.,0600A19E08D24.D04D06N.,0600A19.I03M. +8505 DATA 0100A09E07B22.D07N. +8510 DATA 0100A09E03B05.D07N.,0100A09.I14E02M.,0100A14.I16E02M. +8515 DATA 0200A16E07B22.D07N.,0200A16E03B05.D07N. +8520 DATA 0200A16.I14E02M.,0400A15E03B05.D07N.,0400A15E07B22.D07N. +8522 DATA 0400A15.I14E02M.,0100A15E03.I17M.,0100A15E07.I17M.,0100A15.I17E02M. +8525 DATA 0200A17.F01I15M. +8530 DATA 0300A17.D08N.,0400A17.D09K.,0300A18.D10F03E01E02I17M. +8531 DATA 0400A21E03.I19M. +8535 DATA 0400A21E07.I19M.,0400A21.I19E02M.,0200A22E03.I19M.,0200A22E07.I19M. +8540 DATA 0200A22.I19E02M.,0200A19.D11N.,0400A19.D11N.,0300A22.D12I23M. +8541 DATA 2500A01.D13.,2500I01.D14K.,1244A03.D15M.,1034B01.B01J.,1027B08.B08J. +8545 DATA 1028B04.B04J.,1029B05.B05J.,1032B21.B21J.,1038B24.B24J. +8548 DATA 1039B12.B12J.,1040B09.B09J.,1041B10.B10J.,1043B18.B18J. +8550 DATA 1050B03.B03J.,1042B22.B22J.,1037A20B05.H11P05E05D16K.,1037A20.D17K. +8553 DATA 1134.C01J.,1127.C08J.,1128.C04J.,1129.C05J.,1132.C21J.,1138.C24J. +8555 DATA 1143E09.D62K. +8556 DATA 1139.C12J.,1140.C09J.,1141.C10J.,1143.C18J.,1150.C03J.,1142.C22J. +8560 DATA 2400.A00L.,1249A05.E04D20G0405J.,1349A05.F04J.,2238A05E04.P24E08J. +8563 DATA 2338A05E08.F08P24J.,2338E08.D21N.,1848B10.D22L.,1841B10.D23N. +8566 DATA1840B09.D24K.,2040B09.D25K.,1951A02.D26M.,1951.D27K.,2100A14.D28K. +8570 DATA 2100.D29K.,1542C22.D33K.,1542E07.D30K.,1542A14.D07N. +8575 DATA 1542A17E01.D10K.,1542E02.F02E07E06P22M.,1542.E07P22J. +8580 DATA 1529C05.D33K.,1529E03.D30K.,1529F07.D31L.,1529F05.D32L. +8590 DATA 1529E02.F02E03E06P06P05M.,1529.E03P06P05J. +8595 DATA 1642C22.D33K.,1642F07.D30K.,1642E06E03.D36F07P22M. +8597 DATA 1642E06.E02F07F06P22M. +8600 DATA 1642.F07P22M.,1629C05.D33K.,1629F03.D30K.,1629E07E06.D34F03P05M. +8605 DATA 1629E06.E02F06F03P05M.,1629.F03P05M.,1534B01.D35N. +8610 DATA 1735I16.D45K.,1735E02.D43K.,1735F03.D44K.,1735C04.D46K. +8615 DATA 1735.P16E10J.,5600A16F10.D47K.,5646A16.D48N.,5647A16.D48N. +8620 DATA 5645A16F09.D50D06N.,5645A16.D49I18M.,5543D18E09.D30K. +8625 DATA 5543D18.P18E09J.,574& E AND18F09.D30K.,5743D18.P18F09J. +8630 DATA 1233A24C12.D51K.,1233A24C03.D52N.,1233A24.G0503E11D63K. +8635 DATA 2636E11.D54F11D55K.,5350E11.D54F11D55K.,5232B21.D56N. +8640 DATA 5830F08.D57.,5830.D58D59.,1233A06.D61M. +8650 DATA 1233A25.D64N. +8700 PL=INT(RND(1)*9000+1000) +8800 C=14:DIMC$(C) +8810 FOR N=1 TO C +8820 READ KO$ +8830 C$(N)=KO$ +8840 NEXT N +8850 DATA G03E03.D00N.,G04E04.D01N.,I14I16I17I19.F02.,G07E07.D18N.,GO1.D19N. +8860 DATA H06C03C08.D37N.,H08D08.D39L.,H06D03.D38L.,G08E08B24.D40D21N. +8870 DATA H02.D41N.,G09E02.D42N.,G05E11.D52N.,I24E11.D53D52N.,.L. +8900 RETURN + +10000 & H: & I 0: & S 100,190,1 +10005 & D 0,-60,1: & D 97,0,1: & D 7,10,1: & D -97,0,1: & D -7,-10,1: & D 15,-20,1 +10010 & D -30,-50,1: & D -15,20,1: & D 30,50,1: & S 100,190,1: & D -30,-50,1 +10015 & D 0,-60,1: & S 100,190,1: & D 22,0,1: & D 0,-30,1: & D 15,0,1: & D 0,30,1 +10020 & D 60,0,1: & D 0,-50,1: & M 0,-10,1: & D 0,-30,1: & D -67,-40,1 +10025 & D -23,30,1: & D -30,-50,1: & D 23,-30,1: & D 30,50,1: & S 197,100,1 +10030 & D -45,-60,1: & D -52,-30,1: & S 85,60,1: & D 0,-6,1: & S 115,110,1 +10035 & D 0,-30,1: & M 7,0,1: & D 7,-10,1: & D 7,10,1: & D 0,20,1: & D -15,0,1 +10040 & D 0,-20,1: & M 7,-10,1: & D 0,30,1: & S 182,100,1: & D -30,0,1 +10045 & D 0,20,1: & D 30,0,1: & D 0,-20,1: & M -7,0,1: & D 0,20,1: & M -16,0,1 +10050 & D 0,-20,1: & S 122,190,1: & D 13,7,1: & D 0,-30,1: & D -13,-7,1 +10055 & S 133,182,1: & S 182,150,1: & D -30,0,1: & D 0,20,1: & D 30,0,1 +10060 & D 0,-20,1: & M -7,0,1: & D 0,20,1: & M -16,0,1: & D 0,-20,1 +10065 & S 78,130,1: & D 15,25,1: & D 0,-20,1: & D -15,-25,1: & D 0,20,1 +10070 & M 3,5,1: & D 0,-20,1: & M 9,15,1: & D 0,20,1: & I 3:RETURN +10100 & H: & I 0: & S 15,190,1: & D 0,-160,1: & D 75,-20,1: & D 0,40,1 +10110 & D 0,-40,1: & D 60,0,1: & D 0,20,1: & D 10,10,1: & D -40,0,1: & D 40,0,1 +10120 & D 0,3,1: & D -40,0,1: & D 0,-3,1: & D 0,-10,1: & D 30,0,1: & D 0,-20,1 +10130 & D 82,20,1: & D 0,160,1: & D -73,-126,1: & D 73,126,3: & D -30,-50,3 +10140 & D 0,-80,1: & D -22,-16,1: & D 0,58,1: & M 19,-9,1: & C 1,1 +10145 & S 15,190,1: & D 37,-68,1: & D 0,-70,1: & D 18,-13,1: & D 0,50,1 +10150 & D -18,33,3: & D 38,-71,1: & D 31,0,1: & D 0,-8,3: & D 0,23,1: & D 3,0,1 +10155 & D 0,-23,1: & D 0,8,1: & D 21,0,1: & D 0,-8,1: & D 0,8,1: & D 1,2,1 +10157 & D 0,-10,1: & D 0,10,1 +10160 & D 2,0,1: & D 0,-10,1: & D 0,8,1: & D 2,0,1: & D 0,-8,1: & D 0,8,1 +10165 & D 3,5,1: & D 0,-12,1: & D 0,20,1: & D 2,3,1: & D 0,-23,1: & D 0,23,1 +10170 & D 3,0,1: & D 0,-23,1: & S 67,68,1: & C 1,1: & I 3:RETURN +10200 & H: & I 0: & S 15,190,1: & D 0,-120,1: & D 105,-50,1: & D 60,0,1 +10205 & D 45,50,1: & D 0,110,1: & D -45,-100,1: & M 0,-60,1: & D 0,60,1 +10210 & D -60,0,1: & M 0,-60,1: & D 0,60,1: & D -52,54,1: & S 15,190,1 +10215 & D 24,-26,1: & D 0,-104,1: & D 0,60,1: & D 27,14,1: & D 0,-10,1 +10220 & D 53,-50,1: & D -6,-2,1: & D -54,47,1: & M 7,3,1: & D -7,-3,1 +10225 & D 0,-10,1: & D 53,-44,1: & D 0,8,1: & D 0,-8,1: & D -5,-2,1: & D -56,40,1 +10230 & D 9,4,1: & D -9,-4,1: & D 0,-10,1: & D 55,-36,1: & D 0,7,1: & D 0,-7,1 +10235 & D -5,-2,1: & D -56,33,1: & D 7,3,1: & D -7,-3,1: & D 0,-10,1 +10240 & D -5,-2,1: & D 5,2,1: & D 57,-30,1: & D 0,8,1: & D 0,-8,1: & D -5,-2,1 +10245 & D -57,25,1: & D 57,-25,1: & D 0,-7,1: & D -57,24,1: & D 57,-24,1 +10250 & D -5,-2,1: & D -16,5,1: & D 16,-5,1: & D 0,-4,1 +10255 & S 211,146,1: & D 0,-64,1: & D -15,-20,1: & D 0,52,1: & S 207,108,1 +10260 & C 1,1: & S 156,80,1: & D 24,0,0: & D 6,12,0: & D -6,-12,0: & D 0,-40,0 +10265 & D -26,0,1: & D 0,40,1: & D 5,12,1: & D 27,0,1: & D 0,-42,1: & D -6,-10,1 +10270 & D 6,10,1: & D -27,0,1: & D -4,-10,1: & D 4,10,1: & D 0,42,1 +10275 & S 169,70,0: & C 4,1: & S 169,66,1: & D 0,-3,1: & S 169,74,1 +10280 & D 0,2,1: & S 165,70,1: & D -2,0,1: & S 173,70,1: & D 2,0,1 +10285 & S 165,58,1: & C 1,1: & S 170,58,1: & C 1,1: & S 175,58,1 +10290 & C 1,1: & I 3:RETURN +10300 & H: & I 0: & S 15,190,1: & D 67,-110,1: & D 68,0,1: & D 82,110,1 +10305 & D 0,-140,1: & D -82,-40,1: & D 0,70,0: & D 0,-70,1: & D -68,0,1 +10310 & D 0,70,0: & D 0,-70,1: & D -67,40,1: & D 0,140,1: & S 90,80,1 +10315 & D 0,-50,1: & D 24,0,1: & D 0,50,1: & D -24,0,0: & D 18,10,1: & D 0,-50,1 +10320 & D -18,-10,1: & S 105,64,1 +10325 & S 210,160,1: & D 0,-90,1: & D -23,-14,1: & D 0,74,1: & S 205,110,1 +10330 & S 45,140,1: & D 0,-74,1: & D 18,-14,1: & D 0,60,1: & S 60,86,1 +10335 IF F1=0 THEN & I 3:RETURN +10400 & I 0: & S 124,80,1: & D 26,0,0: & D 0,-70,0: & D 0,70,0 +10401 & S 149,80,0: & D 12,14,0 +10402 & S 150,80,0: & D 10,14,0 +10405 & S 168,18,1: & D 0,86,1: & D -38,0,1: & D 0,-86,1: & D 38,0,1 +10410 & D -38,0,1: & D -6,-8,1: & D 0,70,1: & D 6,24,1 +10415 & S 168,94,1: & D -38,0,1: & S 168,94,1: & D -8,-10,1: & S 168,84,1 +10420 & D -38,0,1: & S 168,84,1: & D -8,-10,1: & S 168,74,1: & D -38,0,1 +10430 & S 168,74,1: & D -9,-10,1: & S 168,64,1: & D -38,0,1: & S 168,64,1 +10435 & D -9,-10,1: & S 168,54,1: & D -38,0,1: & S 168,54,1: & D -18,-18,1 +10440 & D -18,0,1: & D 18,0,1: & D 0,-16,1 +10445 & I 3:RETURN +10500 & H: & I 0: & S 13,180,1: & D 0,-132,1: & D 63,-28,1: & D 83,0,1 +10505 & D 67,30,1: & D 0,130,1: & D -11,-14,1: & D -4,-4,0: & D -17,-25,1 +10510 & D -24,-36,0: & D -12,-20,1: & D 0,-61,1: & D 0,61,1: & D -83,0,1 +10515 & D 0,-60,1: & D 0,60,1: & D -63,100,1: & S 22,90,1: & D 19,0,1 +10520 & D 0,-30,3: & D -19,0,1: & D 0,30,1: & D 0,-30,1: & D 33,-20,1 +10525 & D 13,0,1: & D 0,20,1: & D -28,30,1: & D 0,-30,1: & D 27,-20,1 +10530 & D -11,9,1: & D 0,23,1: & S 52,64,1: & S 60,58,1: & S 157,100,1 +10535 & D 30,0,1: & D 29,34,1: & D -40,0,1: & D 0,2,1: & D 40,0,1: & D 0,-2,1 +10540 & D 0,2,3: & D -2,0,3: & D 0,34,1: & D -3,0,1: & D 0,-34,1: & D -30,0,1 +10545 & D 0,34,1: & D -3,0,1: & D 0,-34,1: & D -2,0,3: & D -20,-34,1: & D 0,-2,1 +10550 & D 20,34,1: & S 159,104,1: & D 0,24,1: & D 3,0,1: & D 0,-18,1 +10555 & I 3:RETURN +10600 & H: & I 0: & S 15,190,1: & D 0,-130,1: & D 75,-50,1 +10605 & D 52,0,1: & D 90,50,1: & D 0,130,1: & D -22,-32,1: & D 0,-52,1 +10610 & D -3,-5,1: & D -42,-43,1: & D -6,0,1: & D -2,4,1: & D 0,10,1: & D -12,0,1 +10613 & D 5,0,1: & D -7,-10,1: & D 0,-50,1: & D 0,50,1 +10615 & D -22,0,1: & D 0,-30,1: & D -15,0,1: & D 13,3,1: & D 0,30,1 +10620 & D -13,-3,1: & D 0,-30,1: & D 0,30,1: & D -15,0,1: & D 0,-50,1: & D 0,50,1 +10625 & D -23,40,1: & D -22,0,1: & D 22,0,1: & D 0,-52,1: & D -22,22,1: & D 0,70,1 +10630 & D -30,50,1: & S 116,49,1: & S 210,158,1: & D -45,0,1: & D 0,-18,1 +10633 & D 0,18,1 +10635 & D -26,-60,0: & D 0,-10,1: & D 6,-16,1: & D 12,0,3: & D 4,4,1: & D -12,0,1 +10640 & D -4,-4,1: & D 4,4,1: & D -6,14,1: & D 10,-2,1: & D 9,0,1: & D 0,-11,1 +10645 & D 0,11,1: & D 19,25,1: & S 165,140,1: & D 10,-20,1: & D 21,0,1 +10650 & D -5,-7,1: & D -21,0,1:: & D 5,7,1: & D -5,-7,1: & D -7,14,1 +10655 & D -20,-37,1: & S 165,140,1: & D -26,-50,1: & S 165,158,1 +10660 & D -26,-59,1: & D 0,-1,1: & S 196,120,1: & D 0,-14,1: & D 2,-5,1 +10665 & D 9,0,1: & D -9,0,1: & D -39,-43,1 +10670 & I 3:RETURN +10700 & H: & I 0: & S 15,190,1: & D 57,-106,1: & D -57,106,1: & D 0,-150,1 +10705 & D 67,-30,1: & D 0,32,1: & D 0,-32,1: & D 75,0,1: & D 0,50,1: & D 0,-50,1 +10710 & D 75,30,1: & D 0,150,1: & D -75,-130,1: & S 202,138,1: & D 0,-78,1 +10715 & D -22,-18,1: & D 0,56,1: & S 157,60,1: & D -9,0,1: & D 2,3,3 +10720 & D -78,0,1: & D 0,8,1: & D 78,0,2: & D 0,-8,1: & D 0,20,1 +10725 & D -78,0,1: & D 0,-38,1: & D 10,-12,1: & S 82,42,1: & D -10,13,1 +10730 & D 6,1,1: & D 9,-13,1: & D -4,-1,1: & D 4,1,1: & D 0,6,1: & D -9,13,1 +10735 & D 0,1,1: & D 0,-7,1: & D 0,6,1: & D 9,-13,1: & D 55,0,1: & D 8,15,1 +10738 IF LX=2 THEN GOTO 10745 +10740 & S 197,93,1: & C 1,1 +10745 IF LX=0 THEN & I 3:RETURN +10750 IF LX=1 THEN GOTO 10780 +10755 & S 202,137,0: & D 0,-77,0: & D -22,-18,0: & D 0,55,0 +10760 & S 30,162,1: & D 26,-49,0: & D 0,1,0: & D -26,49,0 +10765 & S 30,162,1: & D 0,-80,1: & D 22,-22,1: & D 0,9,1: & D 0,-9,1 +10770 & D -22,22,1: & D 27,-15,1: & D 0,77,1: & D -25,18,1: & S 51,111,1 +10775 & C 1,1: & I 3:RETURN +10780 & S 30,50,1: & D 0,40,1: & D 22,-24,1: & D 0,-29,1: & D -22,14,1 +10785 & D 12,-8,3: & D 0,33,1 +10790 & I 3:RETURN +10800 & H: & I 0: & S 15,190,1: & D 0,-140,1: & D 82,-40,1: & D 53,0,1 +10805 & D 75,40,1: & D 0,140,1: & D -30,-50,1: & D 0,-80,1: & D -26,-22,1 +10810 & D 0,60,1: & D 26,0,1: & D -26,0,1: & D -19,-30,1: & D 0,-58,1 +10812 & D 0,58,1: & D -22,0,1 +10815 & D 0,-40,1: & D -15,0,1: & D 13,4,1: & D 0,40,1: & D -13,-4,1: & D 0,-40,1 +10820 & D 0,40,1: & D -15,0,1: & D 0,-58,1: & D 0,58,1: & D -30,42,1: & D -22,0,1 +10825 & D 22,0,1: & D 0,-68,1: & D -22,16,1: & D 0,86,1: & D -30,43,1 +10830 & S 123,52,1: & I 3:RETURN +10900 & H: & I 0: & S 232,190,1: & D 0,-150,1: & D -82,-30,1: & D 0,50,1 +10905 & D 0,-50,1: & D -60,0,1: & D 0,50,1: & D 0,-50,1: & D -75,30,1: & D 0,150,1 +10910 IF LX=0 THEN & D 75,-130,1: & D -23,40,3:GOTO10920 +10915 & D 30,-52,1: & D -30,52,1: & D 75,-130,3: & D -23,40,1: & D -22,0,1 +10918 & D 22,0,1 +10920 & D 0,-58,1: & D -22,16,1: & D 0,80,1 +10925 & S 90,60,1: & D 60,0,1: & D 82,130,1 +10930 IF LX=0 THEN & S 63,78,1: & C 1,1: & I 3:RETURN +10935 IF LX=1 THEN & I 3:RETURN +10940 & S 210,100,1: & D -15,0,1: & D -3,-10,1: & D 18,0,1: & D 0,10,1 +10945 & D 0,-10,1: & D -27,-25,1: & D 0,5,1: & D 20,20,1: & D -20,-20,1 +10950 & D -8,0,1: & D 8,0,1: & D 0,-5,1: & D -12,0,1: & D 21,25,1: & D -21,-25,1 +10955 & D -1,0,1: & D 2,8,1: & D 21,26,1 +10960 & I 3:RETURN +11000 & H: & I 0: & S 15,190,1: & D 0,-150,1: & D 82,-30,1: & D 0,40,1 +11005 & D 0,-40,1: & D 60,0,1: & D 0,40,1: & D 0,-40,1: & D 75,30,1: & D 0,150,1 +11010 & D -22,-42,1: & D 0,-75,1: & D -23,-21,1: & D 0,52,1: & D 23,0,1 +11015 & D -23,0,1: & D -30,-54,1: & D -60,0,1: & D -82,140,0: & D 82,-140,1 +11020 & D 15,0,1: & D 0,-24,1: & D 12,0,1: & D 0,24,1: & M -3,-12,1 +11025 IF LX=0 THEN & I 3:RETURN +11030 & S 187,104,1: & D 22,0,0: & M -22,0,1: & D 23,44,1: & M -5,-45,1 +11035 & C 1,1: & S 30,50,1: & D 0,40,1: & D 37,-34,1: & D 0,-25,1: & D -37,20,1 +11040 & D 21,-10,3: & D 0,31,1: & I 3:RETURN +11500 & H: & I 0: & S 15,180,1: & D 0,-140,1: & D 67,-30,1: & D 75,0,1 +11505 & D 67,30,1: & D 0,150,1: & D -42,-70,1: & D 0,-70,1: & D -24,-20,1 +11510 & D 0,-20,1: & D 0,20,1: & D -45,0,1: & D -15,20,1: & D 85,0,1: & D -33,0,1 +11515 & D 0,70,1: & D 33,0,1: & D -34,0,1: & D -14,-40,1: & D 0,-30,1: & D 0,30,1 +11520 & D -22,0,1: & D 0,-30,1: & D 0,30,1: & D -15,40,1: & D 0,-70,1: & D 0,30,1 +11525 & D -15,0,1: & D 0,-70,1: & D 0,70,1: & D -67,100,1 +11530 & S 167,60,1: & C 1,1: & M 0,10,1: & C 1,1: & M 0,10,1: & C 1,1 +11540 & M 0,20,1: & D 6,2,1: & D -6,-2,1: & C 8,1 +11545 REM POKE 43346,1:POKE 43348,3:POKE 43386,1:POKE 43388,3 +11550 REM POKE 43746,4:POKE 43748,3:POKE 43786,4:POKE 43788,3 +11555 REM POKE 44146,2:POKE 44148,3:POKE 44186,2:POKE 44188,3 +11560 & I 3:RETURN +11700 & H: & I 0: & S 15,190,1: & D 0,-140,1: & D 60,-40,1: & D 75,00,1 +11705 & D 82,40,1: & D 0,140,1: & D -45,-72,3: & D 0,-54,1: & D -15,-14,1 +11710 & D 0,44,1: & S 232,190,1: & D -82,-130,1: & D 0,-50,1: & D 0,50,1 +11715 & D -75,0,1: & D 0,-50,1: & D 0,50,1: & D -4,10,1: & D 9,0,1: & D -23,0,1 +11720 & D -34,50,1: & D 39,0,1: & D 18,-50,1: & D 0,4,1: & D -18,52,1 +11725 & D 0,-6,1: & D 0,6,1: & D -39,0,1: & D 0,-6,1 +11730 & S 15,190,1: & D 15,-33,1: & D 0,-30,1 +11735 & D 4,0,3: & D 0,37,1: & D -4,0,1: & D 0,-7,1: & D 0,7,1: & D 4,0,1 +11740 : & D 3,-8,1: & D 0,-29,1: & D 15,0,3: & D 0,37,1: & D 4,0,1: & D 0,-37,1 +11745 & D 0,37,1: & D 3,-8,1: & D 0,-29,1: & D -14,0,3: & D -7,16,1 +11750 & S 74,93,1: & D 0,12,1: & D 3,0,1: & D 0,-19,1: & D 0,19,1 +11755 & D 2,-7,1: & D 0,-18,1 +11760 & S 184,86,1: & I 3:RETURN +11800 & H: & I 0: & S 15,199,1: & D 0,-160,1: & D 75,-30,1: & D 52,0,1 +11805 & D 90,30,1: & D 0,160,1: & S 15,199,1: & D 75,-140,1: & D 0,-50,1 +11810 & D 0,50,1: & D 15,0,1: & D 0,-30,1: & D 12,4,1: & D 0,30,1: & D -12,-4,1 +11815 & D 0,-30,1: & D 15,0,1: & D 0,30,1: & D 22,0,1: & D 0,-50,1: & D 0,50,1 +11820 & D 36,55,1: & D 21,0,1: & D -21,0,1: & D 0,-60,1: & D 21,15,1: & D 0,74,1 +11825 & D 6,8,1: & D -106,0,1: & D -15,46,1: & D 15,-46,1: & D 0,10,1: & D 106,0,1 +11830 & D 0,-10,1: & D 0,10,1: & D 4,5,1: & D -112,0,1: & D 2,-5,1: & D -2,5,1 +11835 & D 0,10,1: & D 112,0,1: & D 0,-10,1: & D 0,10,1: & D 4,6,1: & D -119,0,1 +11840 & D 3,-6,1: & D -3,6,1: & D 0,10,1: & D 119,0,1: & D 0,-10,1: & D 0,10,1 +11845 & D 4,6,1: & D -126,0,1: & D 3,-6,1: & S 115,49,1 +11850 & I 3:RETURN +12200 & H: & I 0: & S 15,190,1: & D 0,-150,1: & D 75,-30,1: & D 0,50,1 +12205 & D 0,-50,1: & D 60,0,1: & D 0,50,1: & D 0,-50,1: & D 82,30,1: & D 0,150,1 +12210 & D -82,-130,1: & D -45,0,1: & D 0,-30,1: & D 15,0,1: & D 0,30,1: & D -30,0,1 +12215 & D -30,53,1:IF LX=2 THEN & D -23,0,1: & D 23,0,1 +12220 & D 0,-60,1: & D -23,17,1: & D 0,80,1 +12225 IF LX<>2 THEN & D 23,-37,1: & D -23,37,1 +12230 & D -22,40,1:IF LX<>2 THEN & S 57,88,1: & C 1,1 +12235 IF LX<>0 THEN & S 117,45,1: & C 1,1: & I 3:RETURN +12240 & S 105,60,1: & D 15,0,0: & M -15,0,1: & D 0,-30,1: & D 12,3,1 +12245 & D 0,30,1: & D -12,-4,1: & S 115,48,1: & I 3:RETURN +12299 GOTO14000 +12300 & H: & I 0: & S 15,190,1: & D 0,-150,1: & D 67,-30,1: & D 67,0,1 +12310 & D 82,30,1: & D 0,150,1: & D -65,-104,1: & D 0,-54,1: & D -16,-10,1 +12315 & D 0,-10,1: & D 0,10,1: & D -37,0,1: & D -3,10,1: & D 0,54,1: & D 56,0,1 +12320 & D 0,-54,1: & D -28,0,1: & D 0,54,1: & D 0,-54,1: & D -28,0,1: & D 0,30,1 +12325 & D -27,0,1: & D 0,-50,1: & D 0,50,1: & D -67,130,1 +12330 & S 133,60,1: & C 1,1: & M 11,0,1: & C 1,1 +12340 & I 3:RETURN +12400 & H: & I 0: & S 30,164,1: & D -15,26,1: & D 0,-143,1: & D 15,-7,1 +12405 & D 0,124,1: & D 15,0,1: & D 0,-124,1: & D -15,0,1: & D 15,0,1: & D 45,-30,1 +12410 & D 0,13,1: & D 0,-13,1: & D 60,0,1: & D 0,50,1: & D 0,-50,1: & D 82,30,1 +12415 & D 0,150,1: & D -82,-130,1: & D -50,0,1: & D -32,104,1: & D -22,0,1 +12420 & D 22,0,1: & D 0,-92,1: & D -22,0,1: & D 44,-48,1: & D 10,0,1: & D -32,48,1 +12425 & D 32,-48,1: & D 0,35,1: & D -14,46,3: & D 0,-61,1 +12430 & S 81,88,1: & C 1,1: & M 11,-21,1: & C 1,1: & I 3:RETURN +12499 GOTO14000 +13000 & H: & I 0: & S 75,62,1: & D -5,0,1: & D -55,108,1: & D 37,-10,1 +13005 & D 30,-90,1: & D -19,5,1: & D 19,-5,1: & D 20,5,1: & D -12,94,1 +13007 & D -38,-10,1: & D 38,10,1: & D 0,20,1: & D -75,0,1: & D 0,-20,1 +13010 & D 0,20,1: & D 75,0,1: & D 15,-112,1: & D 0,-15,1 +13012 & D -3,14,1: & D 3,-14,1: & D -13,0,1 +13015 & D 0,-12,1: & D 0,12,1: & D -4,10,1: & D 0,-22,1: & D 12,0,1 +13020 & D 4,-7,1: & D 0,-15,1: & D -4,6,1: & D 0,16,1: & D 0,-16,1: & D -12,0,1 +13025 & D 4,-6,1: & D 12,0,1: & D -12,0,1: & D 0,-16,1: & D -4,6,1: & D 0,16,1 +13030 & D 0,-16,1: & D -12,0,1: & D 4,-6,1: & D 12,0,1: & D -12,0,1: & D -4,6,1 +13035 & D 0,16,1: & D -12,0,1: & D 4,-6,1: & D 7,0,1: & D -7,0,1: & D -4,6,1 +13040 & D 0,16,1: & D 12,0,1: & D 0,22,1 +13045 & I 3:RETURN + +20000 GOSUB 13000 'TOMBE +20010 GOSUB 30000 'SARABANDE +20100 TEXT: PRINT: PRINT: PRINT: PRINT: PRINT "Voulez-vous rejouer ?":GET X$ +20105 IF X$="O" THEN RUN 45 +20110 IF X$="N" THEN GOTO 20200 +20120 GOTO 20100 +20200 HOME: PRINT: PRINT: PRINT: PRINT " AU REVOIR" +20210 END + +30000 REM SARABANDE +30001 RETURN +30005 & R 30000: REM RESTORE +30010 FOR N=1 TO 41:READ Y$,Y$,Y$,Y$,Y$,Y$,Y$:NEXT +30015 FOR N=1 TO 75 +30020 READ A1,A2,A3,A4,A5 +30025 READ A6,A7,A8,A9,A0 +30030 REM MUSIC1,A1,A2,A3:MUSIC2,A4,A5,A6:MUSIC3,A7,A8,A9:PLAY7,0,0,100: & W A0 +30032 REM IF N>70 THEN NEXT:PLAY0,0,0,0:RETURN +30035 REM PLAY0,0,0,0:NEXT +30040 DATA 3,6,8,3,3,8,2,10,8,80 +30045 DATA 3,6,8,3,3,8,2,10,8,80 +30050 DATA 0,1,1,0,1,1,0,1,1,40 +30055 DATA 3,8,8,3,5,8,0,1,1,40 +30060 DATA 3,5,8,3,2,8,2,10,8,80 +30065 DATA 3,5,8,3,2,8,2,10,8,40 +30070 DATA 1,11,8,0,1,1,0,1,1,40 +30075 DATA 1,10,8,0,1,1,0,1,1,40 +30080 DATA 1,8,8,0,1,1,0,1,1,40 +30085 DATA 3,10,8,3,6,9,3,1,8,80 +30090 DATA 3,10,8,3,6,9,3,1,8,80 +30095 DATA 0,1,1,0,1,1,0,1,1,40 +30100 DATA 3,11,8,3,8,8,0,1,1,40 +30105 DATA 3,8,8,3,5,8,3,1,8,80 +30110 DATA 3,8,8,3,5,8,3,1,8,40 +30115 DATA 2,1,8,0,1,1,0,1,1,40 +30120 DATA 1,11,8,0,1,1,0,1,1,40 +30125 DATA 1,10,8,3,7,8,3,10,8,40 +30130 DATA 3,11,8,3,8,8,3,3,8,80 +30135 DATA 3,11,8,3,8,8,3,3,8,80 +30140 DATA 1,8,8,0,1,1,0,1,1,40 +30145 DATA 1,8,8,3,10,8,4,1,8,40 +30150 DATA 3,10,8,3,6,8,3,3,8,80 +30155 DATA 3,10,8,3,6,8,3,3,8,80 +30160 DATA 0,1,1,0,1,1,0,1,1,40 +30165 DATA 3,10,8,2,1,8,0,1,1,40 +30170 DATA 4,3,8,3,10,8,1,11,8,80 +30175 DATA 4,3,8,3,8,8,2,11,9,80 +30180 DATA 0,1,1,0,1,1,0,1,1,40 +30185 DATA 4,5,8,0,1,1,0,1,1,40 +30190 DATA 4,2,8,3,10,8,3,5,8,80 +30195 DATA 4,2,8,3,10,8,3,5,8,40 +30200 DATA 2,8,8,0,1,1,0,1,1,40 +30202 DATA 2,6,8,0,1,1,0,1,1,40 +30203 DATA 2,5,8,0,1,1,0,1,1,40 +30205 DATA 3,6,8,3,3,8,2,10,8,80 +30210 DATA 3,6,8,3,3,8,2,10,8,80 +30215 DATA 0,1,1,0,1,1,0,1,1,40 +30220 DATA 3,8,8,3,5,8,0,1,1,40 +30225 DATA 3,5,8,3,2,8,2,10,8,80 +30230 DATA 3,5,8,3,2,8,2,10,8,40 +30235 DATA 1,11,8,0,1,1,0,1,1,40 +30240 DATA 1,10,8,0,1,1,0,1,1,40 +30245 DATA 1,8,8,0,1,1,0,1,1,40 +30250 DATA 3,10,8,3,6,9,3,1,8,80 +30255 DATA 3,10,8,3,6,9,3,1,8,80 +30260 DATA 0,1,1,0,1,1,0,1,1,40 +30265 DATA 3,11,8,3,8,8,0,1,1,40 +30270 DATA 3,8,8,3,5,8,3,1,8,80 +30275 DATA 3,8,8,3,5,8,3,1,8,40 +30280 DATA 2,1,8,0,1,1,0,1,1,40 +30285 DATA 1,11,8,0,1,1,0,1,1,40 +30290 DATA 1,10,8,3,7,8,3,10,8,40 +30295 DATA 3,11,8,3,8,8,3,3,8,80 +30300 DATA 2,8,8,0,1,1,0,1,1,40 +30305 DATA 3,11,8,3,8,8,3,1,8,40 +30310 DATA 2,8,8,0,1,1,0,1,1,40 +30315 DATA 2,1,8,0,1,1,0,1,1,40 +30320 DATA 4,1,8,2,5,8,0,1,1,40 +30325 DATA 3,10,8,3,6,8,3,1,8,80 +30330 DATA 3,10,8,2,3,8,0,1,1,40 +30335 DATA 4,3,8,3,6,8,2,11,8,40 +30340 DATA 4,2,8,0,1,1,0,1,1,40 +30345 DATA 4,3,8,3,11,8,2,8,8,40 +30350 DATA 4,5,8,0,1,1,0,1,1,40 +30355 DATA 4,6,8,3,10,8,2,10,8,80 +30360 DATA 4,5,8,3,8,8,1,10,8,40 +30365 DATA 0,1,1,3,8,8,1,10,8,40 +30370 DATA 4,3,8,0,1,1,0,1,1,40 +30375 DATA 4,3,8,3,6,8,2,3,8,80 +30380 DATA 3,3,8,3,10,8,3,6,8,40 +30385 DATA 3,3,7,3,10,7,3,6,7,40 +30390 DATA 3,3,6,3,10,6,3,6,6,40 +30395 DATA 3,3,5,3,10,5,3,6,5,40 +30400 DATA 3,3,4,3,10,4,3,6,5,40 + +32000 REM TEA FOR TWO +32001 GOTO 33000 +32002 & R 32000: REM RESTORE +32004 FOR N=1 TO 166:READ Y$,Y$,Y$,Y$,Y$,Y$,Y$,Y$:NEXT +32005 FOR N=1 TO 110 +32010 READ A1,A2,A3 +32015 REM MUSIC1,A1,A2,10:PLAY1,0,0,100: & W A3 +32020 REM PLAY0,0,0,0 +32022 NEXT +32025 DATA 4,6,45,4,3,15,4,5,45,4,3,15,4,6,45,4,3,15,4,5,45 +32030 DATA 4,1,15,4,5,45,4,1,15,4,3,45,4,1,15,4,5,45,4,1,15 +32035 DATA4,3,45,4,1,15,4,6,45,4,3,15,4,5,45,4,3,15,4,6,45 +32040 DATA4,3,15,4,5,45,4,1,30,4,10,30,4,10,22,4,7,8,4,9,30,4,9,22,4,7,8 +32045 DATA4,10,30,4,10,22,4,7,8,4,9,30,4,9,22,4,5,8,4,9,30,4,7,22,4,5,8 +32050 DATA4,7,30,4,7,22,4,5,8,4,9,30,4,9,22,4,5,8,4,7,30,4,7,22,4,5,8 +32055 DATA4,10,30,4,10,22,4,7,8,4,9,30,4,9,22,4,7,8,4,10,30,4,10,22,4,7,8 +32060 DATA4,9,30,4,9,30,5,2,120,5,1,60,4,6,45,4,3,15,4,5,45,4,3,15,4,6,45 +32065 DATA4,3,15,4,5,45,4,1,15,4,5,45,4,1,15,4,3,45,4,1,15,4,5,45,4,1,15 +32070 DATA4,3,45,4,1,15,4,6,45,4,3,15,4,5,45,4,3,15,4,6,45,4,3,15,4,5,45 +32075 DATA4,1,30,5,3,45,5,3,15,5,1,45,5,1,15,4,11,45,4,11,15,4,10,45,4,10,15 +32080 DATA5,1,45,5,1,15,4,11,45,4,11,15,4,10,45,4,10,15,4,8,45,4,8,15 +32085 DATA4,6,45,4,3,15,4,5,45,4,3,15 +32090 DATA4,6,45,4,3,15,4,5,45,4,10,15,4,6,120 + +33000 TEXT:HOME:NORMAL +33002 GOSUB 50000 +33003 RETURN: REM LOGO +33005 FOR N=1 TO 331:READ Y$,Y$,Y$,Y$,Y$:NEXT:READ Y$,Y$,Y$ +33010 FOR N=46360 TO 46423 +33020 READ GH:POKE N,GH +33030 NEXT +33040 DATA 1,2,4,4,4,2,3,1,48,32,24,16,32,16,32,32 +33050 DATA 2,6,9,8,8,8,4,6,16,16,8,40,26,12,10,16 +33060 DATA 7,8,8,16,16,8,28,0,48,8,8,4,4,2,3,0 +33070 DATA 3,4,4,6,2,2,3,0,48,24,8,4,4,4,6,0 +33100 FOR N=48802 TO 48836 STEP 2 +33110 POKE N,35:POKE N+1,36:POKE N+40,37:POKE N+41,38:POKE N+80,39:POKE N+81,40 +33120 REM & W 48836-N +33130 POKE N,32:POKE N+40,32:POKE N+80,32 +33140 POKE N+1,35:POKE N+2,36:POKE N+41,37:POKE N+42,38:POKE N+81,41:POKE N+82,42 +33150 REM & W 48836-N +33160 POKE N+1,32:POKE N+41,32:POKE N+81,32 +33170 NEXT +33180 POKE N,32:POKE N+40,32:POKE N+80,32 +33190 REM CALL#F89B +33200 RETURN + +50000 PRINT: PRINT " Cela est exceptionnel,vous etes le premier a etre sorti vivant"; +50010 PRINT " de cette": PRINT: PRINT "maison , mais je serais vous , je me ": PRINT "mettrais a "; +50020 PRINT "courrir car un nain rode": PRINT: PRINT "peut etre dans les parages" +50030 RETURN diff --git a/lemanoirdudocteurgenius/apple2/presentation2.bas b/lemanoirdudocteurgenius/apple2/presentation2.bas new file mode 100644 index 0000000..6317f5f --- /dev/null +++ b/lemanoirdudocteurgenius/apple2/presentation2.bas @@ -0,0 +1,107 @@ +1 REM +2 REM COPYRIGHT LORICIELS 83 L.BENES +3 REM LE MANOIR DU DOCTEUR GENIUS +4 REM VERSION APPLE II REALISEE EN 2023 +5 REM PAR BRUTAL DELUXE SOFTWARE : ANTOINE VIGNAU & OLIVIER ZARDINI + +6 HOME: TEXT: NORMAL: HTAB 4: VTAB 12: PRINT "LORICIELS EST FIER DE PRESENTER :" +7 PRINT CHR$(4)"BLOAD AMPERSAND,A$1800": CALL 6144: REM $1800 +8 HOME +9 REM ... COPYRIGHT LORICIELS TOUT DROIT DE REPRODUCTION INTERDIT ..... + +10 HTAB 3: VTAB 1: PRINT "@ @@@ @ @ @@@ @ @ @@@ @ @@@" +11 HTAB 3: VTAB 2: PRINT "@ @ @@ @@ @ @ @@ @ @ @ @ @ @" +12 HTAB 3: VTAB 3: PRINT "@ @@ @ @ @ @@@ @@@@ @ @ @ @@@" +13 HTAB 3: VTAB 4: PRINT "@ @ @ @ @ @ @ @@ @ @ @ @@" +14 HTAB 3: VTAB 5: PRINT "@@@ @@@ @ @ @ @ @ @ @@@ @ @ @" + +15 HTAB 6: VTAB 7: PRINT "@@ @ @ @@" +16 HTAB 6: VTAB 8: PRINT "@ @ @ @ @ @ @" +17 HTAB 6: VTAB 9: PRINT "@ @ @ @ @ @ @@" +18 HTAB 6: VTAB 10: PRINT "@ @ @ @ @ @ @ @" +19 HTAB 6: VTAB 11: PRINT "@@@ @@@ @@@ @" + +20 HTAB 3: VTAB 14: PRINT "@@@@ @@@@ @@ @ @ @ @ @@@@" +21 HTAB 3: VTAB 15: PRINT "@ @ @ @@ @ @ @ @ @" +22 HTAB 3: VTAB 16: PRINT "@ @ @@@ @ @ @ @ @" +23 HTAB 3: VTAB 17: PRINT "@ @@@ @ @ @ @ @ @ @@@@" +24 HTAB 3: VTAB 18: PRINT "@ @@ @ @ @@@ @ @ @ @" +25 HTAB 3: VTAB 19: PRINT "@ @ @ @ @@ @ @ @ @" +26 HTAB 3: VTAB 20: PRINT "@@@@ @@@@ @ @@ @ @@@@ @@@@ @ @" + +30 HTAB 6: VTAB 22: PRINT " VERSION APPLE II PAR ": & W 1000 +31 HTAB 6: VTAB 22: PRINT " BRUTAL DELUXE SOFTWARE ": & W 1000 +32 HTAB 6: VTAB 22: PRINT " MERCI FRED_72 ": & W 1000 +33 HTAB 6: VTAB 22: PRINT "(C) 1983, L. BENES & LORICIELS" +34 GOSUB 31000: GOSUB 51000 + +40 HOME: PRINT: PRINT: PRINT: PRINT +41 PRINT " La liste des instructions (O/N) ?" +42 GET V$ +43 IF V$="O" THEN 50 +44 IF V$="N" THEN 60 +45 GOTO 42 + +50 HOME: PRINT: PRINT "Vous voici arrive dans le manoir du Dr Genius..." +51 & W 350: PRINT: PRINT "Pour converser avec l'ordinateur,il faut rentrer les ordres" +52 & W 300: PRINT: PRINT "en 1 ou 2 mots tels que:": PRINT: & W 200: PRINT " NORD" +53 & W 200: PRINT: PRINT " PRENDS PILLULE" +54 & W 200: PRINT: PRINT "ou pour commencer:";: & W 150: PRINT "ENTRE" +55 & W 300: PRINT: PRINT: PRINT "Si vous voulez faire durer la phrase decrivant"; +56 PRINT " la salle taper une touche": & W 400 +57 PRINT: PRINT: PRINT: PRINT: PRINT " pressez une touche": GET X$ + +58 HOME: PRINT: PRINT " Un dernier conseil:";: & W 200: PRINT "Il peut parfois": PRINT +59 PRINT "y avoir une porte derriere vous.": & W 1000 + +60 HOME: HTAB 12: VTAB 12: FLASH: PRINT "VEUILLEZ PATIENTER": NORMAL +61 POKE 16384,0: POKE 103,1: POKE 104,64: REM $4001 +62 PRINT CHR$(4);"RUN JEU" + +31000 REM BADINERIE +31005 RETURN: REM RESTORE +31010 FOR N=1 TO 148:READ Y$,Y$,Y$,Y$,Y$,Y$,Y$:NEXT +31012 READ Y$ +31015 FOR N=1 TO 97 +31020 READ A1,A2,A3 +31022 REM MUSIC1,A1,A2,10:PLAY1,0,0,100:& W A3 +31025 REM PLAY 0,0,0,0:NEXT +31026 NEXT +31030 DATA 4,12,20,5,3,10,4,12,10,4,7,20 +31035 DATA 4,12,10,4,7,10,4,3,20,4,7,10 +31040 DATA 4,3,10,3,12,40,3,7,10,3,12,10 +31045 DATA 4,3,10,3,12,10,4,2,10,3,12,10 +31050 DATA 4,2,10,3,12,10,3,11,10,4,2,10 +31055 DATA 4,5,10,4,2,10,4,3,20,3,12,20 +31060 DATA 4,12,20,5,3,10,4,12,10,4,7,20 +31065 DATA 4,12,10,4,7,10,4,3,20,4,7,10 +31070 DATA 4,3,10,3,12,40,4,3,20,4,3,20 +31075 DATA 4,3,20,4,3,20,4,12,20,4,3,20 +31080 DATA 4,3,7,4,5,7,4,3,7 +31085 DATA 4,2,20,4,7,20,4,7,20,4,7,20 +31090 DATA 4,7,20,5,3,20,4,7,20,4,7,7 +31100 DATA 4,8,7,4,7,7,4,6,20,4,2,10 +31105 DATA 4,7,10,4,10,10,4,7,10,4,9,10 +31115 DATA 4,7,10,4,6,10,4,9,10,4,12,10 +31120 DATA 4,9,10,4,10,10,4,9,10,4,10,10 +31125 DATA 4,9,10,4,7,10,4,10,10,4,7,10 +31130 DATA 4,6,10,4,7,10,4,12,10,4,7,10 +31145 DATA 4,6,10,4,7,10,5,2,10,4,7,10 +31150 DATA 4,6,10,4,7,10,5,3,10,4,7,10 +31155 DATA 4,6,10,4,7,10,5,3,10,5,2,10 +31160 DATA 4,12,10,5,2,10,4,10,10,4,9,10 +31165 DATA 4,7,10,4,10,10,4,9,7,4,10,7,4,9,7,4,7,20 +31170 RETURN + +51000 HOME: PRINT: PRINT: PRINT "ATTENTION ................. +51005 PRINT: PRINT "L'utilisation de ce programme est" +51010 PRINT: PRINT "deconseillee aux personnes sensibles" +51020 PRINT: PRINT "aux enfants en bas age,ainsi qu'a" +51030 PRINT: PRINT "toute personne susceptible d'avoir" +51040 PRINT: PRINT "des malaises cardiaques." +51050 PRINT: PRINT "Nous ne pourrions etre tenu responsa-" +51060 PRINT: PRINT "bles,des troubles physiques ou mentaux" +51070 PRINT: PRINT "provoques par votre echec dans" +51080 PRINT: PRINT "le Manoir du Dr GENIUS ............." +51099 & W 1000 +51100 RETURN \ No newline at end of file diff --git a/lemanoirdudocteurgenius/images/10th.bmp b/lemanoirdudocteurgenius/images/10th.bmp new file mode 100644 index 0000000..6dbd0d6 Binary files /dev/null and b/lemanoirdudocteurgenius/images/10th.bmp differ diff --git a/lemanoirdudocteurgenius/images/11th.bmp b/lemanoirdudocteurgenius/images/11th.bmp new file mode 100644 index 0000000..4958ed9 Binary files /dev/null and b/lemanoirdudocteurgenius/images/11th.bmp differ diff --git a/lemanoirdudocteurgenius/images/12th.bmp b/lemanoirdudocteurgenius/images/12th.bmp new file mode 100644 index 0000000..68d6590 Binary files /dev/null and b/lemanoirdudocteurgenius/images/12th.bmp differ diff --git a/lemanoirdudocteurgenius/images/13th.bmp b/lemanoirdudocteurgenius/images/13th.bmp new file mode 100644 index 0000000..ac0b982 Binary files /dev/null and b/lemanoirdudocteurgenius/images/13th.bmp differ diff --git a/lemanoirdudocteurgenius/images/14th.bmp b/lemanoirdudocteurgenius/images/14th.bmp new file mode 100644 index 0000000..e9aed6c Binary files /dev/null and b/lemanoirdudocteurgenius/images/14th.bmp differ diff --git a/lemanoirdudocteurgenius/images/15th.bmp b/lemanoirdudocteurgenius/images/15th.bmp new file mode 100644 index 0000000..5f666d3 Binary files /dev/null and b/lemanoirdudocteurgenius/images/15th.bmp differ diff --git a/lemanoirdudocteurgenius/images/16th.bmp b/lemanoirdudocteurgenius/images/16th.bmp new file mode 100644 index 0000000..166bd6e Binary files /dev/null and b/lemanoirdudocteurgenius/images/16th.bmp differ diff --git a/lemanoirdudocteurgenius/images/17th.bmp b/lemanoirdudocteurgenius/images/17th.bmp new file mode 100644 index 0000000..de49659 Binary files /dev/null and b/lemanoirdudocteurgenius/images/17th.bmp differ diff --git a/lemanoirdudocteurgenius/images/18th.bmp b/lemanoirdudocteurgenius/images/18th.bmp new file mode 100644 index 0000000..abf1076 Binary files /dev/null and b/lemanoirdudocteurgenius/images/18th.bmp differ diff --git a/lemanoirdudocteurgenius/images/19th.bmp b/lemanoirdudocteurgenius/images/19th.bmp new file mode 100644 index 0000000..bc3b1d4 Binary files /dev/null and b/lemanoirdudocteurgenius/images/19th.bmp differ diff --git a/lemanoirdudocteurgenius/images/1st.bmp b/lemanoirdudocteurgenius/images/1st.bmp new file mode 100644 index 0000000..a4d7f0d Binary files /dev/null and b/lemanoirdudocteurgenius/images/1st.bmp differ diff --git a/lemanoirdudocteurgenius/images/20th.bmp b/lemanoirdudocteurgenius/images/20th.bmp new file mode 100644 index 0000000..46ae1f2 Binary files /dev/null and b/lemanoirdudocteurgenius/images/20th.bmp differ diff --git a/lemanoirdudocteurgenius/images/21th.bmp b/lemanoirdudocteurgenius/images/21th.bmp new file mode 100644 index 0000000..032287f Binary files /dev/null and b/lemanoirdudocteurgenius/images/21th.bmp differ diff --git a/lemanoirdudocteurgenius/images/22th.bmp b/lemanoirdudocteurgenius/images/22th.bmp new file mode 100644 index 0000000..6f087e0 Binary files /dev/null and b/lemanoirdudocteurgenius/images/22th.bmp differ diff --git a/lemanoirdudocteurgenius/images/23th.bmp b/lemanoirdudocteurgenius/images/23th.bmp new file mode 100644 index 0000000..e30d67a Binary files /dev/null and b/lemanoirdudocteurgenius/images/23th.bmp differ diff --git a/lemanoirdudocteurgenius/images/24th.bmp b/lemanoirdudocteurgenius/images/24th.bmp new file mode 100644 index 0000000..e2a9b23 Binary files /dev/null and b/lemanoirdudocteurgenius/images/24th.bmp differ diff --git a/lemanoirdudocteurgenius/images/2nd.bmp b/lemanoirdudocteurgenius/images/2nd.bmp new file mode 100644 index 0000000..56a0411 Binary files /dev/null and b/lemanoirdudocteurgenius/images/2nd.bmp differ diff --git a/lemanoirdudocteurgenius/images/3rd.bmp b/lemanoirdudocteurgenius/images/3rd.bmp new file mode 100644 index 0000000..fae7541 Binary files /dev/null and b/lemanoirdudocteurgenius/images/3rd.bmp differ diff --git a/lemanoirdudocteurgenius/images/4th.bmp b/lemanoirdudocteurgenius/images/4th.bmp new file mode 100644 index 0000000..5ca4d91 Binary files /dev/null and b/lemanoirdudocteurgenius/images/4th.bmp differ diff --git a/lemanoirdudocteurgenius/images/5th.bmp b/lemanoirdudocteurgenius/images/5th.bmp new file mode 100644 index 0000000..f106c63 Binary files /dev/null and b/lemanoirdudocteurgenius/images/5th.bmp differ diff --git a/lemanoirdudocteurgenius/images/6th.bmp b/lemanoirdudocteurgenius/images/6th.bmp new file mode 100644 index 0000000..83adb57 Binary files /dev/null and b/lemanoirdudocteurgenius/images/6th.bmp differ diff --git a/lemanoirdudocteurgenius/images/7th.bmp b/lemanoirdudocteurgenius/images/7th.bmp new file mode 100644 index 0000000..d193f8e Binary files /dev/null and b/lemanoirdudocteurgenius/images/7th.bmp differ diff --git a/lemanoirdudocteurgenius/images/8th.bmp b/lemanoirdudocteurgenius/images/8th.bmp new file mode 100644 index 0000000..27e8a77 Binary files /dev/null and b/lemanoirdudocteurgenius/images/8th.bmp differ diff --git a/lemanoirdudocteurgenius/images/9th.bmp b/lemanoirdudocteurgenius/images/9th.bmp new file mode 100644 index 0000000..46fb947 Binary files /dev/null and b/lemanoirdudocteurgenius/images/9th.bmp differ diff --git a/lemanoirdudocteurgenius/images/tombe.bmp b/lemanoirdudocteurgenius/images/tombe.bmp new file mode 100644 index 0000000..0a04526 Binary files /dev/null and b/lemanoirdudocteurgenius/images/tombe.bmp differ diff --git a/lemanoirdudocteurgenius/lemanoirdudrgenius.dsk b/lemanoirdudocteurgenius/lemanoirdudrgenius.dsk index fe786a8..6c21765 100644 Binary files a/lemanoirdudocteurgenius/lemanoirdudrgenius.dsk and b/lemanoirdudocteurgenius/lemanoirdudrgenius.dsk differ diff --git a/lemanoirdudocteurgenius/jeu copie.bas b/lemanoirdudocteurgenius/vg2apple/jeu copie.bas similarity index 100% rename from lemanoirdudocteurgenius/jeu copie.bas rename to lemanoirdudocteurgenius/vg2apple/jeu copie.bas diff --git a/lemanoirdudocteurgenius/jeu.bas b/lemanoirdudocteurgenius/vg2apple/jeu.bas similarity index 100% rename from lemanoirdudocteurgenius/jeu.bas rename to lemanoirdudocteurgenius/vg2apple/jeu.bas diff --git a/lemanoirdudocteurgenius/presentation.bas b/lemanoirdudocteurgenius/vg2apple/presentation.bas similarity index 100% rename from lemanoirdudocteurgenius/presentation.bas rename to lemanoirdudocteurgenius/vg2apple/presentation.bas diff --git a/lemanoirdudocteurgenius/vg5000/code.asm b/lemanoirdudocteurgenius/vg5000/code.asm new file mode 100644 index 0000000..46396a2 --- /dev/null +++ b/lemanoirdudocteurgenius/vg5000/code.asm @@ -0,0 +1,1069 @@ +; N° du mot1 dans MOTX1; ***************************************************** +; ** ** +; ** fonctions musicales et graphiques pour VG5000 ** +; ** PLAY,SOUND,MUSIC,PING,SHOOT,EXPLODE,ZAP,WAIT ** +; ** CADRE,ZONE,DESSIN,COPY_GR,COPY_EG,SAVEDES ** +; ** ** +; ***************************************************** +; +; assembleur utilisĂ© TASM301 +; +; tasm.exe -80 -g3 sound.asm +; + +DIRX .equ 0FFFCh ; direction (-4) +MOTX1 .equ 0FFFDh ; 1er mot (-3) +MOTX2 .equ 0FFFEh ; 2eme mot (-2) +BFACT .equ 0FFE0h ; buffer chaine action (-32) +NL .equ 0FFDFh ; N° action (-33) + +start: +; Les fonctions sont appelĂ©es par le Hook MODEM + +; PING 'G' ; C000 = -16384 +; SHOOT 'T' ; C002 = -16382 +; EXPLODE 'E' ; C004 = -16380 +; ZAP 'Z' ; C006 = -16378 +; PLAY 'P' ; C008 = -16376 +; SOUND 'S' ; C00A = -16374 +; MUSIC 'M' ; C00D = -16371 +; WAIT 'W' ; C010 = -16368 +; +; +; ZONE 'N' ; 0C400h = -15360 +; DESSIN 'D' ; 0C409h = -15351 +; CADRE 'C' ; 0C40Fh = -15345 +; SCROLL 'L' ; 0C412h = -15342 +; PAPER 'F' +; +; VOCA1 'U' +; VOCA2 'V' +; DIR 'I' +; ACTION 'A' + +; mise en place du Hook MODEM +; CALL -16384 + + .org 0C000h + push hl +; vecteur MODEM + ld hl,entry + ld (47f8h),hl + ld a,0c3h + ld (47f7h),a + pop hl + ret + + +entry: + + ld a,(hl) + inc hl + cp 'G' + jp z, PING + cp 'T' + jp z, SHOOT + cp 'E' + jp z, EXPLODE + cp 'Z' + jp z, ZAP + cp 'P' + jp z, PLAY + cp 'S' + jp z, SOUND + cp 'M' + jp z, MUSIC + cp 'W' + jp z, WAIT + cp 'N' + jp z, ZONE + cp 'D' + jp z, DESSIN + cp 'C' + jp z, CADRE + cp 'L' + jp z, SCROLL + cp 'F' + jp z, PAPER + cp 'U' + jp z,VOCA1 + cp 'V' + jp z,VOCA2 + cp 'I' + jp z,DIR + cp 'A' + jp z,ACTION + ret + + +ZAP: + push hl + ld hl,dataZAP + call trf + + ld c,0 +zap0: + xor a + out (0ffh),a + ld a,c + out (0feh),a + ld b,0 +zap1: + nop + djnz zap1 + inc c + ld a,c + cp 070h + jr nz,zap0 + ld a,8 + out (0ffh),a + xor a + out (0feh),a + pop hl + ret + + +PING: ; fonction ping + push hl + ld hl,dataPING + call trf + pop hl + ret + + +SHOOT: ; fonction shoot + push hl + ld hl,dataSHOOT + call trf + pop hl + ret + + +EXPLODE: ; fonction explode + push hl + ld hl,dataEXPLODE + call trf + pop hl + ret + + +trf: + ld c,0 +trf1: + ld a,c + cp 0eh + ret z + ld b,(hl) + call W8192 + inc c + inc hl + jr trf1 + +PLAY: ; commande PLAY t,s,e,d + call rdval + ld (PARAMS+1),de + jr nz, error_syntaxe + call rdval + ld (PARAMS+3),de + jr nz, error_syntaxe + call rdval + ld (PARAMS+5),de + jr nz, error_syntaxe + call rdval + ld (PARAMS+7),de + + push hl + ld IY,PARAMS + ld a,(IY+3) + sla a + sla a + sla a + or (IY+1) + xor 03fh + ld b,a + ld a,7 + call W8192 + ld l,(IY+7) + ld h,(IY+8) + add hl,hl + ld a,0bh + ld b,l + call W8192 + ld a,0ch + ld b,h + call W8192 + ld c,(IY+5) + ld b,0 + ld hl,dataPLAY + add hl,bc + ld a,(hl) + pop hl + and 7 + ld b,a + ld a,0dh + jp W8192 + + +error_syntaxe: + ld e,02h + jp 2252h + + + +SOUND: ; commande SOUND c,h,v + call rdval + ld (PARAMS+1),de + jr nz, error_syntaxe + call rdval + ld (PARAMS+3),de + jr nz, error_syntaxe + call rdval + ld (PARAMS+5),de +sound1: + ld IY,PARAMS + ld a,(IY+1) + cp 1 + jr nz, snd2 + ld b,(IY+3) + xor a + call W8192 + ld b,(IY+4) + ld a,1 + call W8192 +snd0: + ld a,(IY+5) + and 0fh + ld b,a + jr nz, snd1 + ld b,10h +snd1: + ld a,8 + jr W8192 + +snd2: + cp 2 + jr nz,snd4 + ld b,(IY+3) + ld a,2 + call W8192 + ld b,(IY+4) + ld a,3 + call W8192 +snd2a: + ld a,(IY+5) + and 0fh + ld b,a + jr nz, snd3 + ld b,10h +snd3: + ld a,9 + jr W8192 + +snd4: + cp 3 + jr nz,snd6 + ld b,(IY+3) + ld a,4 + call W8192 + ld b,(IY+4) + ld a,5 + call W8192 +snd4a: + ld a,(IY+5) + and 0fh + ld b,a + jr nz, snd5 + ld b,10h +snd5: + ld a,10 + jr W8192 + +snd6: + ld b,(IY+3) + ld a,6 + call W8192 + + ld a,(IY+1) + cp 4 + jr z, snd0 + cp 5 + jr z, snd2a + cp 6 + jr z, snd4a + inc (IY+0) + ret + +W8192: ; psg [a]=b + out (0ffh),a + ld a,b + out (0feh),a + ret + + + +MUSIC: ; music c,o,n,v + call rdval + ld (PARAMS+1),de +music0: + jp nz, error_syntaxe + call rdval + ld (PARAMS+3),de + jr nz, music0 + call rdval + ld (PARAMS+5),de + jr nz, music0 + call rdval + ld (PARAMS+7),de + + push hl + ld IY,PARAMS + ld e,(IY+3) + ld c,(IY+5) + ld b,0 + ld hl,dataMUSIC + add hl,bc + ld a,(hl) + ld (IY+4),a + ld hl,dataMUSIC1 + add hl,bc + ld a,(hl) + ld (IY+3),a + ld a,(IY+7) + ld (IY+5),a + pop hl +music1: + dec e + jp m,sound1 + srl (IY+4) + rr (IY+3) + jr music1 + +rdval: + inc hl + call 89h + call 83h + ld a,(hl) + cp ',' + ret + + +WAIT: + call rdval + ld (W_COUNT),de +wait1: + ld bc,1200 +wait2: + nop + dec bc + ld a,b + or c + jr nz,wait2 + + ld de,(W_COUNT) + dec de + ld (W_COUNT),de + ld a,d + or e + jr nz, wait1 + ret + + + +; +;********************************************* +;* * +;* ** DESSIN CADRE ** * +;* * +;********************************************* +; +; + +VRAM .equ 405Ch +BUFFER .equ 0D000h + + +; scrooling text 1 ligne vers le haut +; depuis Y vers Y-1 +SCROLL: + push hl +scroll0: + ld a,(4806h) + cp 24 + jr z,scroll1 + cp 23 + jr nz,fin +scroll1: + ld de,45A0h + ld hl,45F0h + ld bc,0230h + ldir + ld a,(4806h) + push af + ld hl,4780h + ld (hl),80h + inc hl + ld (hl),0b3h + inc hl + ld b,39 +scroll2: + ld (hl),' ' + inc hl + ld (hl),0 + inc hl + djnz scroll2 + pop af + dec a + ld (4806h),a + jr scroll0 +fin: + pop hl + ret + +; trace le cadre et vide l'intĂ©rieur +CADRE: + push hl + di + ld hl,0400Ah + ld de,80 + push hl + + ld (hl),92 + inc hl + ld (hl),083h + inc hl + + ld b,28 +cadre1: + ld (hl),76 + inc hl + ld (hl),083h + inc hl + djnz cadre1 + + ld (hl),108 + inc hl + ld (hl),083h + + + pop hl + ld b,15 +cadre2: + push bc + add hl,de + push hl + ld (hl),85 + inc hl + ld (hl),083h + inc hl + + ld b,28 + call effligne + + ld (hl),106 + inc hl + ld (hl),083h + pop hl + pop bc + djnz cadre2 + add hl,de + + ld (hl),77 + inc hl + ld (hl),083h + inc hl + + ld b,28 +cadre3: + ld (hl),76 + inc hl + ld (hl),083h + inc hl + djnz cadre3 + + ld (hl),78 + inc hl + ld (hl),083h + + ei + ld a,1 + ld (47fbh),a + call W_RFSH + pop hl + ret + +; efface une ligne +; b=nbr de caractères +; hl=adresse dĂ©but +effligne: + ld (hl),' ' + inc hl + ld (hl),0 + inc hl + djnz effligne + ret + +; ** vidage de la zone en bas de l'Ă©cran ** +; +ZONE: + push hl + ld hl,045A0h + ld de,80 + ld b,7 +zone1: + push hl + ld (hl),080h + inc hl + ld (hl),0B3h + inc hl + push bc + ld b,39 + call effligne + pop bc + pop hl + add hl,de + djnz zone1 + ld a,1 + ld (4805h),a + ld a,18 + ld (4806h),a + pop hl + ret + +; copie un dessin vers la zone image +; puis met Ă  jour les tables de caractères +; + +DESSIN: + di + push hl + ld hl,VRAM + ld de,BUFFER + ld b,14 +dessin1: + push bc + push hl + ld bc,56 + ex de,hl + ldir + ex de,hl + pop hl + ld bc,80 + add hl,bc + pop bc + djnz dessin1 + +; copie la table EG + ld hl,BUFFER+0400h + ld e,(hl) + inc hl + ld d,(hl) + inc hl + ld a,e + or d + call nz,copyEG +; copie la table GR + ld e,(hl) + inc hl + ld d,(hl) + ld a,e + or d + call nz,copyEG + pop hl + ei + ret + +PAPER: + push hl + ld b,3 +paper0: + push bc + ld a,68 + call ZONE_P + call W_RFSH + ld a,65 + call ZONE_P + call W_RFSH + ld a,67 + call ZONE_P + call W_RFSH + ld a,65 + call ZONE_P + call W_RFSH + xor a + call ZONE_P + call W_RFSH + pop bc + djnz paper0 + pop hl + ret + +ZONE_P + di + ld hl,VRAM+1 + ld b,15 +paper1: + push bc + push hl + ld b,28 +paper2: + ld (hl),a + inc hl + inc hl + djnz paper2 + pop hl + ld bc,80 + add hl,bc + pop bc + djnz paper1 + ld a,1 + ld (47fbh),a + ei + ret + +W_RFSH: + ld a,(47fbh) + cp 00 + jr nz,W_RFSH + + ld b,50 +W_RFSH1: + djnz W_RFSH1 + ret + + + +;** CODE DE REDEFINITION DES CARACTERES ** +; + +; copie de la table GR +; de=adr table +copyGR: + push hl + ex de,hl + ld c,32 + ld b,127 + +setcar1: + ld a,c + or 80h + push hl + push bc + call 1bh + pop bc + pop hl + ld de,10 + add hl,de + inc c + djnz setcar1 + pop hl + ret + + +; copie de la table EG +; de=adr table + +copyEG: + + push hl + ex de,hl + ld c,32 + ld b,127 + +setcar2: + ld a,c + push hl + push bc + call 1bh + pop bc + pop hl + ld de,10 + add hl,de + inc c + djnz setcar2 + + pop hl + ret + +; +;*************** +;* * +;* VOCABULAIRE * +;* * +;*************** +; + + +VOCA1: + call VOCAx + ld (MOTX1),a + ret + +VOCA2: + call VOCAx + ld (MOTX2),a + ret + +VOCAx: + inc hl ; lecture des paramètres d'une expression + call 02861h ; lecture de l'expression après la commande + push hl + call 02851h ; vĂ©rifie que c'est une chaĂ®ne de car. + call 37d1h + call 05e0h ; E=nb de caractères, BC=adr de la chaine + + ld hl,CHAINE + push hl + ld d,0 +voca00: + ld a,(BC) + ld (HL),a + inc hl + inc bc + inc d + ld a,d + cp 04 + jr z,voca02 + cp e + jr nz,voca00 +voca01: + + ld a,d + cp 04 + jr z, voca02 + ld (hl),' ' + inc hl + inc d + jr voca01 + +voca02: + pop hl + ld de,VOCAB +voca0: + push de + push hl + ld b,4 +voca1: + ld a,(de) + cp (hl) + inc hl + inc de + jr nz,voca2 + + djnz voca1 + ld a,(de) + pop hl + pop de + jr voca3 + +voca2: + pop de + pop hl + ld bc,5 + add hl,bc + ld a,(hl) + ex de,hl + cp 0 + jr nz,voca0 +voca3: + pop hl + ret + + +DIR: + call rdval + ld (PARAMS+1),de ; N° de la salle + ; N° du mot dans MOTX1 + push hl + ld a,(PARAMS+1) + ld b,a + dec b + + ld hl,DIRD +dir1: + ld a,(hl) + inc hl + or a + jr nz,dir1 + djnz dir1 + +dir2: + ld a,(hl) + or a + jr z, dir4 ;a=0 + + ld a,(MOTX1) + cp (hl) + inc hl + jr nz,dir2 + ld a,(hl) ; a=N° salle destination + +dir4: + ld (DIRX),a + pop hl + ret + +ACTION: + push hl ; N° du mot1 dans MOTX1 + ; N° du mot2 dans MOTX2 + xor a + ld (NL),a + ld (BFACT),a + ld hl,ACTIOND +acti1: + ld a,(MOTX1) + cp (hl) + inc hl + jr nz, acti2 + ld a,(MOTX2) + cp (hl) + jr z, acti3 + cp 0 + jr z, acti3 + +acti2: + ld a,(hl) + inc hl + cp 0ffh + jr nz,acti2 + ld a,(hl) + cp 0ffh + jr z,acti5 + ld a,(NL) + inc a + ld (NL),a + jr acti1 + +acti3: + ld de,BFACT +acti4: + ld a,(hl) + ld (de),a + inc hl + inc de + cp 0ffh + jr nz,acti4 +acti5: + pop hl + ret + + + +dataPING: + .byte 18h,00h,00h,00h,00h,00h,00h + .byte 3Eh,10h,00h,00h,00h,0Fh,00h + +dataSHOOT: + .byte 00h,00h,00h,00h,00h,00h,0Fh + .byte 07h,10h,10h,10h,00h,08h,00h + +dataEXPLODE: + .byte 00h,00h,00h,00h,00h,00h,1Fh + .byte 07h,10h,10h,10h,00h,18h,00h + +dataZAP: + .byte 00h,00h,00h,00h,00h,00h,00h + .byte 3Eh,0Fh,10h,10h,00h,00h,00h + +dataPLAY: + .byte 00h,00h,04h,08h,0Ah,0Bh,0Ch,0Dh + +dataMUSIC: + .byte 00h,07h,07h,06h,06h,05h,05h,05h + .byte 04h,04h,04h,04h,03h + +dataMUSIC1: + .byte 00h,77h,0Bh,0A6h,47h,0ECh,97h + .byte 47h,0FBh,0B3h,070h,30h,0F4h + +PARAMS: + .byte 00h + .byte 00h,00h + .byte 00h,00h + .byte 00h,00h + .byte 00h,00h + +W_COUNT: + .byte 00h,00h,00h + +COUNT: + .byte 00h,00h + +CHAINE: + .byte 0,0,0,0,0 + +VOCAB: + .byte "N ",001h,"NORD",001h,"S ",002h,"SUD ",002h + .byte "E ",003h,"EST ",003h,"O ",004h,"OUES",004h + .byte "MONT",005h,"GRIM",005h,"DESC",006h + .byte "PREN",00Ah,"RAMA",00Ah + .byte "POSE",00Bh,"OUVR",00Ch,"FERM",00Dh + .byte "ENTR",00Eh,"AVAN",00Eh,"ALLU",00Fh + .byte "ETEI",010h,"REPA",011h + .byte "DEPA",011h,"LIS ",012h,"REGA",013h + .byte "RETO",014h,"RENI",015h,"SENS",015h + .byte "REMP",016h,"VIDE",017h,"INVE",018h + .byte "LIST",018h,"RIEN",019h,"ATTE",019h + .byte "POIG",01Ah,"COUT",01Bh,"TOUR",01Ch + .byte "LAMP",01Dh,"CODE",01Eh,"ESCA",01Fh + .byte "PIST",020h,"PLAC",021h,"TORC",022h + .byte "TELE",023h,"MONS",024h,"PETR",025h + .byte "POT ",026h,"LIT ",012h + .byte "CLEF",027h,"PAPI",028h + .byte "LIVR",029h,"BRIQ",02Ah,"COMB",02Bh + .byte "COFF",02Ch,"ROUG",02Dh,"BLEU",02Eh + .byte "VERT",02Fh,"TITR",030h,"ROBI",031h + .byte "CISE",032h,"PORT",033h,"ACTI",034h + .byte "JETE",035h,"LANC",035h,"EAU ",036h + .byte "ENFI",037h,"PASS",037h + .byte "APPU",038h,"ENFO",039h,"ENLE",03Ah + .byte "RENT",03Bh + .byte 0 + +DIRD: + .byte 0, 0, 4,3,3,4,0, 3,2,0 + .byte 4,2,3,5,1,6,0, 4,4,1,7,3,20,0 + .byte 2,4,0, 4,8,1,9,2,5,0, 3,7,0 + .byte 4,13,2,7,3,10,0, 4,9,2,11,0 + .byte 1,10,3,12,0, 4,11,0, 3,9,0 + .byte 2,9,3,15,0, 0, 0, 0, 0 + .byte 1,22,3,21,0, 4,5,0 ,1,25,2,22,0 + .byte 1,21,0, 1,24,4,22,0, 2,23,0, 2,21,0 + +ACTIOND: + .byte 14,0,"A01.I02D02M.",0ffh + .byte 5,0,"A03D08.D03N.",0ffh + .byte 5,0,"A03E08E09D24.D04D05I19E02M.",0ffh + .byte 5,0,"A03E08D24.D04D06N.",0ffh + .byte 5,0,"A03E07.I19M.",0ffh + .byte 5,0,"A03E03.I19M.",0ffh + .byte 5,0,"A03.I19E02M.",0ffh + .byte 6,0,"A19D08.D03N.",0ffh + .byte 6,0,"A19E08E09D24.D04D05I03M.",0ffh + .byte 6,0,"A19E08D24.D04D06N.",0ffh + .byte 6,0,"A19.I03M.",0ffh + .byte 1,0,"A09E07B22.D07N.",0ffh + .byte 1,0,"A09E03B05.D07N.",0ffh + .byte 1,0,"A09.I14E02M.",0ffh + .byte 1,0,"A14.I16E02M.",0ffh + .byte 2,0,"A16E07B22.D07N.",0ffh + .byte 2,0,"A16E03B05.D07N.",0ffh + .byte 2,0,"A16.I14E02M.",0ffh + .byte 4,0,"A15E03B05.D07N.",0ffh + .byte 4,0,"0A15E07B22.D07N.",0ffh + .byte 4,0,"A15.I14E02M.",0ffh + .byte 1,0,"A15E03.I17M.",0ffh + .byte 1,0,"A15E07.I17M.",0ffh + .byte 1,0,"A15.I17E02M.",0ffh + .byte 2,0,"A17.F01I15M.",0ffh + .byte 3,0,"A17.D08N.",0ffh + .byte 4,0,"A17.D09K.",0ffh + .byte 3,0,"A18.D10F03E01E02I17M.",0ffh + .byte 4,0,"A21E03.I19M.",0ffh + .byte 4,0,"A21E07.I19M.",0ffh + .byte 4,0,"A21.I19E02M.",0ffh + .byte 2,0,"A22E03.I19M.",0ffh + .byte 2,0,"A22E07.I19M.",0ffh + .byte 2,0,"A22.I19E02M.",0ffh + .byte 2,0,"A19.D11N.",0ffh + .byte 4,0,"A19.D11N.",0ffh + .byte 3,0,"A22.D12I23M.",0ffh + .byte 25,0,"A01.D13.",0ffh + .byte 25,0,"I01.D14K.",0ffh + .byte 12,44,"A03.D15M.",0ffh + .byte 10,34,"B01.B01J.",0ffh + .byte 10,27,"B08.B08J.",0ffh + .byte 10,28,"B04.B04J.",0ffh + .byte 10,29,"B05.B05J.",0ffh + .byte 10,32,"B21.B21J.",0ffh + .byte 10,38,"B24.B24J.",0ffh + .byte 10,39,"B12.B12J.",0ffh + .byte 10,40,"B09.B09J.",0ffh + .byte 10,41,"B10.B10J.",0ffh + .byte 10,43,"B18.B18J.",0ffh + .byte 10,50,"B03.B03J.",0ffh + .byte 10,42,"B22.B22J.",0ffh + .byte 10,37,"A20B05.H11P05E05D16K.",0ffh + .byte 10,37,"A20.D17K.",0ffh + .byte 11,34,".C01J.",0ffh + .byte 11,27,".C08J.",0ffh + .byte 11,28,".C04J.",0ffh + .byte 11,29,".C05J.",0ffh + .byte 11,32,".C21J.",0ffh + .byte 11,38,".C24J.",0ffh + .byte 11,43,"E09.D62K.",0ffh + .byte 11,39,".C12J.",0ffh + .byte 11,40,".C09J.",0ffh + .byte 11,41,".C10J.",0ffh + .byte 11,43,".C18J.",0fvfh + .byte 11,50,".C03J.",0ffh + .byte 11,42,".C22J.",0ffh + .byte 24,0,".A00L.",0ffh + .byte 12,49,"A05.E04D20G0405J.",0ffh + .byte 13,49,"A05.F04J.",0ffh + .byte 22,38,"A05E04.P24E08J.",0ffh + .byte 23,38,"A05E08.F08P24J.",0ffh + .byte 23,38,"E08.D21N.",0ffh + .byte 18,48,"B10.D22L.",0ffh + .byte 18,41,"B10.D23N.",0ffh + .byte 18,40,"B09.D24K.",0ffh + .byte 20,40,"B09.D25K.",0ffh + .byte 19,51,"A02.D26M.",0ffh + .byte 19,51,".D27K.",0ffh + .byte 21,0,"A14.D28K.",0ffh + .byte 21,0,".D29K.",0ffh + .byte 15,42,"C22.D33K.",0ffh + .byte 15,42,"E07.D30K.",0ffh + .byte 15,42,"A14.D07N.",0ffh + .byte 15,42,"A17E01.D10K.",0ffh + .byte 15,42,"E02.F02E07E06P22M.",0ffh + .byte 15,42,".E07P22J.",0ffh + .byte 15,29,"C05.D33K.",0ffh + .byte 15,29,"E03.D30K.",0ffh + .byte 15,29,"F07.D31L.",0ffh + .byte 15,29,"F05.D32L.",0ffh + .byte 15,29,"E02.F02E03E06P06P05M.",0ffh + .byte 15,29,".E03P06P05J.",0ffh + .byte 16,42,"C22.D33K.",0ffh + .byte 16,42,"F07.D30K.",0ffh + .byte 16,42,"E06E03.D36F07P22M.",0ffh + .byte 16,42,"E06.E02F07F06P22M.",0ffh + .byte 16,42,".F07P22M.",0ffh + .byte 16,29,"C05.D33K.",0ffh + .byte 16,29,"F03.D30K.",0ffh + .byte 16,29,"E07E06.D34F03P05M.",0ffh + .byte 16,29,"E06.E02F06F03P05M.",0ffh + .byte 16,29,".F03P05M.",0ffh + .byte 15,34,"B01.D35N.",0ffh + .byte 17,35,"I16.D45K.",0ffh + .byte 17,35,"E02.D43K.",0ffh + .byte 17,35,"F03.D44K.",0ffh + .byte 17,35,"C04.D46K.",0ffh + .byte 17,35,".P16E10J.",0ffh + .byte 56,0,"A16F10.D47K.",0ffh + .byte 56,46,"A16.D48N.",0ffh + .byte 56,45,"A16F09.D50D06N.",0ffh + .byte 56,45,"A16.D49I18M.",0ffh + .byte 55,43,"D18E09.D30K.",0ffh + .byte 55,43,"D18.P18E09J.",0ffh + .byte 57,43,"D18F09.D30K.",0ffh + .byte 57,43,"D18.P18F09J.",0ffh + .byte 12,33,"A24C12.D51K.",0ffh + .byte 12,33,"A24C03.D52N.",0ffh + .byte 12,33,"A24.G0503E11D63K.",0ffh + .byte 26,36,"E11.D54F11D55K.",0ffh + .byte 53,50,"E11.D54F11D55K.",0ffh + .byte 52,32,"B21.D56N.",0ffh + .byte 58,30,"F08.D57.",0ffh + .byte 58,30,".D58D59.",0ffh + .byte 12,33,"A06.D61M.",0ffh + .byte 12,33,"A25.D64N.",0ffh + .byte 0ffh + + + + + + + + .end + \ No newline at end of file