***************************************************************
*
*              Pick'n Pile //e
*              ---------------
*
* Version      :        Beta
* Conversion   :        Atreid Concept SA
****************************************************************

         list off
         gen off
         msb off
         symbol off
         65816 off
         65c02 off
         keep PnP.Sys

               mcopy PnP.Macros




ProDOS         gequ $BF00               ;acces au MLI
IOBuffer       gequ $Ba00
vbest          gequ $800
Codes          gequ $860


               org $8000




PnP            START PnP

               lda #0
               sta <$50
               sta <$52
               lda #$20
               sta <$51
               lda #$80
               sta <$53
               ldx #0
PnPInstall     anop
               lda ($50,x)
               sta ($52,x)
               lda <$50
               clc
               adc #1
               bcs Inc51inst
               sta <$50
               beq Inc52inst
               bne Inc52inst
Inc51inst      anop
               sta <$50
               inc <$51
Inc52Inst      anop
               lda <$52
               clc
               adc #1
               bcs Inc53inst
               sta <$52
               beq Inc54Inst
               bne Inc54Inst
Inc53inst      anop
               sta <$52
               inc <$53
Inc54Inst      anop
               lda <$53
               cmp #$bf                 ;borne superieure de la mem
               bne PnpInstall
               jmp PnpInstalled

PnpInstalled   anop
               lda $c036                ;cyareg *****************
               and #$7f                 *****************
               sta $c036                *****************

               tsx                      ;on sauve s !!!
               stx StackPtr

               jsr InitPnP

               lda #vbestFile           ;ptr string
               sta GSTemp1
               lda #>vbestFile
               sta GSTemp1+1

               lda #$18                 ;taille a lire
               sta GSTemp2
               lda #$0c
               sta GSTemp2+1

               lda #vbest               ;buffer mem
               sta GSTemp3
               lda #>vbest
               sta GSTemp3+1

               jsr LoadFile

               lda #Car                 ;ptr string
               sta GSTemp1
               lda #>Car
               sta GSTemp1+1

               lda #0                   ;taille a lire
               sta GSTemp2
               lda #$20
               sta GSTemp2+1

               lda #0                   ;buffer mem
               sta GSTemp3
               lda #$60
               sta GSTemp3+1

               jsr LoadFile

               jsr EnterCode

               lda #Calib               ;ptr string
               sta GSTemp1
               lda #>Calib
               sta GSTemp1+1

               lda #0                   ;taille a lire
               sta GSTemp2
               lda #$20
               sta GSTemp2+1

               lda #0                   ;buffer mem
               sta GSTemp3
               lda #$40
               sta GSTemp3+1

               jsr LoadFile

               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               lda #CalibStr1
               sta GSTemp1
               lda #>CalibStr1
               sta GSTemp1+1
               ldx #10
               ldy #73
               jsr Texte8

               lda #CalibStr2
               sta GSTemp1
               lda #>CalibStr2
               sta GSTemp1+1
               ldx #8
               ldy #84
               jsr Texte8

               lda #KeyPick
               sta GSTemp1
               lda #>KeyPick
               sta GSTemp1+1
               ldx #25
               ldy #167
               jsr Texte8

               lda #KeyFall
               sta GSTemp1
               lda #>KeyFall
               sta GSTemp1+1
               ldx #25
               ldy #181
               jsr Texte8

               lda #0
               sta Temp
               lda #30
               sta Temp2                ;origine x de la croix
               sta $c010                ;echantillonnage clavier
CalibLoop      anop
               lda Temp
               beq CalibLoop2
               ldx #0
               lda Temp1
               sta <$50
               lda Temp1+1
               sta <$51
               lda ($50,x)              ;XOR d'une ligne
               eor #$ff
               sta ($50,x)

CalibLoop2     anop
               ldx #1                   ;manette 1
               jsr $fb1e                ;lecture manette

               tya                      ;resultat dans a
               clc
               lsr a
               lsr a
               cmp #60
               blt CalibY
               lda #59
CalibY         anop
               and #%11111100
               tax
               lda adrlo,x
               clc
               adc Temp2                ;x source
               sta <$50
               sta Temp1
               lda adrhi,x
               adc #$40                 ;HGR2
               sta <$51
               sta Temp1+1

               ldx #0
               lda ($50,x)              ;XOR d'une ligne
               eor #$ff
               sta ($50,x)

               lda #1
               jsr Pause                ;Attente...

               ldx #0                   ;manette 0
               jsr $fb1e                ;lecture manette

               tya                      ;resultat dans a
               clc
               lsr a
               lsr a
               lsr a
               lsr a
               adc #23                  ;decalage horiz cadre
               sta Temp2

               jsr doKeyAff

               ldx CalibKey
               lda KeyUp,x
               eor #$80
               sta KeyUp,x
               lda #1
               sta Temp

               lda $c000
               bpl CalibLoop
               and #$7f
               cmp #27
               beq CalibEnd
               jsr doCalibKey
               sta $c010                ;echantillonnage clavier
               jmp CalibLoop

doCalibKey     anop
               cmp #$21                 ;point exclamation
               blt doCalibKeyEnd
               cmp #$7b
               bge doCalibKeyEnd
               ldx CalibKey
               sta KeyUp,x
               inx
               inx
               stx CalibKey
               cpx #16
               blt doCalibKeyEnd
               ldx #1
               stx CalibKey
doCalibKeyEnd  anop
               rts

CalibEnd       anop
               ldx CalibKey
               lda KeyUp,x
               and #$7f
               sta KeyUp,x

Programme      anop
               jsr Presentation
               bcs PnpEnd
               jsr BouclePrin1
               jmp Programme


PnpEnd         anop
               lda $c036                ;cyareg *****************
               ora #$80                 *****************
               sta $c036                *****************

               lda #0                   ;hgr
               jsr ClearHGR

               jsr ProDOS
               dc h'65'                 ;Quit
               dc i2'QuitBloc'

               brk
               brk





;---------------------------------------------------------------------
doKeyAff       anop
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               lda #KeyUp
               sta GSTemp1
               lda #>KeyUp
               sta GSTemp1+1
               ldx #30
               ldy #111
               jsr Texte8

               lda #KeyLeft
               sta GSTemp1
               lda #>KeyLeft
               sta GSTemp1+1
               ldx #25
               ldy #131
               jsr Texte8

               lda #KeyRight
               sta GSTemp1
               lda #>KeyRight
               sta GSTemp1+1
               ldx #35
               ldy #131
               jsr Texte8

               lda #KeyDown
               sta GSTemp1
               lda #>KeyDown
               sta GSTemp1+1
               ldx #30
               ldy #153
               jsr Texte8

               rts




;---------------------------------------------------------------------
InitPnp        anop

               lda #1                   ;hgr2
               jsr ClearHGR

               lda #0
               sta $c050                ;graph
               sta $c052                ;plein ecran
               sta $c055                ;page 2
               sta $c057                ;hgr

               rts





;---------------------------------------------------------------------
BouclePrin1    anop
               lda #3
               sta Vies
               sta Vies1
               sta Vies2
               lda #0
               sta ELife
               sta ELife1
               sta ELife2
               sta Score
               sta Score+1
               sta Score+2
               sta Score+3
               sta Score1
               sta Score1+1
               sta Score1+2
               sta Score1+3
               sta Score2
               sta Score2+1
               sta Score2+2
               sta Score2+3
               sta Player
               jsr ClrDiams
               sta $c010                ;echantillonnage clavier

BouclePrin2    anop
               lda #0
               sta FirstScore
               inc ScoreTemp
               jsr Nettoyage
               jsr InitLevel
               jsr Preparation

BouclePrin     anop
               lda Diams+19
               cmp #5
               beq pasBonus
               jsr BonusST
pasBonus       anop
               lda Time+1
               cmp #$90
               blt PasFin
               lda #0
               sta Time
               sta Time+1
               sta vpoum
               sta vpoum+1
               sta OkClic
               jsr Afscore
               jsr Explosions
               ldx #5
               ldy #96
               lda #phtolate
               sta GSTemp1
               lda #>phtolate
               sta GSTemp1+1
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               jsr Texte16
               lda #50
               jsr Pause
               sed
               dec Vies
               cld
               jsr Gestion2Joueurs
               cmp #0
               bne FinJeuGo
               lda #1                   ;hgr2
               jsr ClearHGR
               jmp BouclePrin2
FinJeuGo       jmp FinJeu

pasfin         anop
               lda MBut2
               bne PasFinFall
               lda $c062                ;option
               bpl BPFire0
pasFinFall     anop
               lda #0
               sta MBut2
               inc doFall
BPFire0        anop
               lda $c000                ;lecture clavier
               bpl BPPause
               and #$7f
               cmp #'p'
               beq BPPause1
               cmp #'P'
               beq BPPause1
               cmp #27                  ;esc
               beq FinJeu
               bne BPPause
BPPause1       anop
               jsr doPause
BPPause        anop
               ldy vmousejoy
               beq pasReadKeys
               jsr KeyMove
pasReadKeys    anop
               lda vmousejoy
               bne pasReadX
               ldx #0
               jsr $FB1E
               sty JoyX
pasReadX       anop

               jsr GestionSouris
               jsr Afscore
               jsr Poum

               lda vmousejoy
               bne pasReadY
               ldx #1
               jsr $FB1E
               sty JoyY
pasReadY       anop

               jsr DrawCursor
               jsr Affiche
               jsr DeplaceBloc
               jsr Alignement
               lda #0
               sta doFall
               lda Reussit
               bne OkReussit
               jmp BouclePrin

OkReussit      anop
               jsr Afscore
               lda #0
               sta Reussit
               sta okClic
               sta FirstScore
               inc ScoreTemp
               jsr Affiche
               jsr DecTime
               lda #20
               jsr Pause
               lda #1                   ;HGR2
               jsr ClearHGR
               inc Level
               lda Level
               cmp #99
               bne okReussit2
               lda #1
               sta Level
okReussit2     anop
               jsr Gestion2Joueurs
               jmp BouclePrin2

FinJeu         anop
               lda #0
               sta okClic
               lda #9
               sta GSTemp1
               lda #70
               sta GSTemp1+1
               lda #22
               sta GSTemp2
               lda #46
               sta GSTemp2+1
               lda #%10101010
               sta GSTemp3
               lda #%11010101
               sta GSTemp3+1
               jsr PaintRect

               lda #10
               sta GSTemp1
               lda #73
               sta GSTemp1+1
               lda #20
               sta GSTemp2
               lda #40
               sta GSTemp2+1
               lda #0
               sta GSTemp3
               sta GSTemp3+1
               jsr PaintRect

               ldx #11
               ldy #76
               lda #phgameover
               sta GSTemp1
               lda #>phgameover
               sta GSTemp1+1
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               jsr Texte16

               lda Player
               bne FinPl2
               ldx #12
               ldy #95
               lda #phPlayer1
               sta GSTemp1
               lda #>phPlayer1
               sta GSTemp1+1
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               jsr Texte16
               jmp FinJeu2

FinPl2         anop
               ldx #12
               ldy #95
               lda #phPlayer2
               sta GSTemp1
               lda #>phPlayer2
               sta GSTemp1+1
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               jsr Texte16

FinJeu2        anop
               jsr Afscore
               lda #35
               jsr Pause

               lda #1                   ;hgr2
               jsr ClearHGR

               rts





;--------------------------------------------------------------------------
EnterCode      anop
               lda #0
               ldx #0
               clc
EnterCode0     anop
               adc $0,x
               inx
               bne EnterCode0

EnterCode00    anop
               pha
               jsr Random
               pla
               beq EnterCode1
               sec
               sbc #1
               jmp EnterCode00

EnterCode1     anop
               jsr Random
               cmp #60
               bge EnterCode1
               sta CodeY
               tax
               lda HexDec,x
               pha
               and #$0f
               clc
               adc #$30                 ;zero
               sta PassLine+8
               pla
               and #$f0
               clc
               lsr a
               lsr a
               lsr a
               lsr a
               clc
               adc #$30                 ;zero
               sta PassLine+7

EnterCode2     anop
               jsr Random
               cmp #10
               bge EnterCode2
               sta CodeX
               clc
               adc #$41                 ;caractere A
               sta PassRow+8

               lda #8
               sta GSTemp1
               lda #70
               sta GSTemp1+1
               lda #25
               sta GSTemp2
               lda #64
               sta GSTemp2+1
               lda #%10101010
               sta GSTemp3
               sta GSTemp3+1
               jsr PaintRect

               lda #9
               sta GSTemp1
               lda #76
               sta GSTemp1+1
               lda #23
               sta GSTemp2
               lda #52
               sta GSTemp2+1
               lda #0
               sta GSTemp3
               sta GSTemp3+1
               jsr PaintRect

               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               lda #PassText
               sta GSTemp1
               lda #>PassText
               sta GSTemp1+1
               ldx #10
               ldy #83
               jsr Texte8

               lda #PassRow
               sta GSTemp1
               lda #>PassRow
               sta GSTemp1+1
               ldx #14
               ldy #92
               jsr Texte8

               lda #PassLine
               sta GSTemp1
               lda #>PassLine
               sta GSTemp1+1
               ldx #14
               ldy #101
               jsr Texte8

               lda #0
               sta ScoreStr

EnterCodeLoop  anop
               jsr WaitUser
               cmp #$20                 ;espace?
               blt SpecialCars
               cmp #$7f                 ;Delete?
               beq BackCode
               cmp #$7b
               bge EnterCodeLoop
               cmp #$61
               blt CodeUpper
               sec
               sbc #$20

CodeUpper      anop
               ldx ScoreStr
               cpx #5
               bge EnterCodeLoop
               inx
               stx ScoreStr
               sta ScoreStr,x

AffCode        anop
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               lda #ScoreStr
               sta GSTemp1
               lda #>ScoreStr
               sta GSTemp1+1
               ldx #18
               ldy #113
               jsr Texte8
               jmp EnterCodeLoop

SpecialCars    anop
               cmp #$0d                 ;return?
               beq EnterCodeEnd0
               cmp #$08                 ;fleche gauche?
               beq BackCode
               jmp EnterCodeLoop

BackCode       anop
               ldx ScoreStr
               beq EnterCodeLoop
               dex
               stx ScoreStr

               lda #18
               sta GSTemp1
               lda #113
               sta GSTemp1+1
               lda #5
               sta GSTemp2
               lda #7
               sta GSTemp2+1
               lda #0
               sta GSTemp3
               sta GSTemp3+1
               jsr PaintRect

               jmp AffCode

EnterCodeEnd0  anop
               lda ScoreStr
               cmp #5
               bne PasCodeOk
               jsr CodeCalc
               lda Temp2
               clc
               adc #vbest+96
               sta <$50
               lda Temp2+1
               adc #>vbest
               sta <$51

               ldx #0
               lda ($50,x)
               cmp ScoreStr+1
               bne pasCodeOk
               jsr Inc50
               lda ($50,x)
               cmp ScoreStr+2
               bne pasCodeOk
               jsr Inc50
               lda ($50,x)
               cmp ScoreStr+3
               bne pasCodeOk
               jsr Inc50
               lda ($50,x)
               cmp ScoreStr+4
               bne pasCodeOk
               jsr Inc50
               lda ($50,x)
               cmp ScoreStr+5
               bne pasCodeOk

EnterCodeEnd   anop
               rts

PasCodeOk      anop
               lda #1                   ;HGR2
               jsr ClearHGR

               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               lda #WrongCode
               sta GSTemp1
               lda #>WrongCode
               sta GSTemp1+1
               ldx #2
               ldy #100
               jsr Texte8

               jsr WaitUser

               ldx StackPtr
               txs
               jmp PnPEnd


CodeCalc       anop
               lda #0
               sta Temp2
               sta Temp2+1
               ldx CodeY
               beq CodeCalc20
               lda #0
CodeCalc10     anop
               clc
               adc #50                  ;une ligne de codes...
               bcc CodeCalc100
               inc Temp2+1
CodeCalc100    anop
               dex
               bne CodeCalc10
               sta Temp2

CodeCalc20     anop
               ldx CodeX
               beq CodeCalc40
               lda #0

CodeCalc30     anop
               clc
               adc #5                   ;un code...
               dex
               bne CodeCalc30
               clc
               adc Temp2
               sta Temp2
               lda #0
               adc Temp2+1
               sta Temp2+1

CodeCalc40     anop
               rts




;--------------------------------------------------------------------------
KeyMove        anop
               cmp KeyUp+1
               beq doKeyUp
               cmp KeyUp+3
               beq doKeyUp
               cmp KeyLeft+1
               beq doKeyLeft
               cmp KeyLeft+3
               beq doKeyLeft
               cmp KeyRight+1
               beq doKeyRight
               cmp KeyRight+3
               beq doKeyRight
               cmp KeyDown+1
               beq doKeyDown
               cmp KeyDown+3
               beq doKeyDown
               cmp #' '
               beq doKeyPick
               cmp #13
               beq doKeyFall
               lda #128
               sta JoyX
               sta JoyY
               lda #$ea                 ;nop
               sta doKeyPick
               rts

doKeyUp        anop
               lda #90
               sta JoyY
               lda #128
               sta JoyX
               lda #$ea                 ;nop
               sta doKeyPick
               rts
doKeyDown      anop
               lda #165
               sta JoyY
               lda #128
               sta JoyX
               lda #$ea                 ;nop
               sta doKeyPick
               rts
doKeyRight     anop
               lda #165
               sta JoyX
               lda #128
               sta JoyY
               lda #$ea                 ;nop
               sta doKeyPick
               rts
doKeyLeft      anop
               lda #90
               sta JoyX
               lda #128
               sta JoyY
               lda #$ea                 ;nop
               sta doKeyPick
               rts
doKeyFall      anop
               lda #128
               sta JoyX
               sta JoyY
               sta MBut2
               lda #$ea                 ;nop
               sta doKeyPick
               rts
doKeyPick      anop
               nop
               lda #128
               sta JoyX
               sta JoyY
               sta MBut
               lda #$60                 ;rts
               sta doKeyPick
               rts





;--------------------------------------------------------------------------
DecTime        anop
               lda #20
DCLoop         anop
               pha
               jsr Affiche
               pla
               sec
               sbc #1
               bne DCLoop

DCLoop2        anop
               sed
               lda Time
               sec
               sbc #10
               sta Time
               bcs DCL20
               lda Time+1
               sec
               sbc #1
               sta Time+1
               bcc DCLoop3
DCL20          anop
               lda Score
               clc
               adc #10
               sta Score
               lda #0
               adc Score+1
               sta Score+1
               lda #0
               adc Score+2
               sta Score+2
               lda #0
               adc Score+3
               sta Score+3
               cld
               jsr AfScore
               lda #10
               ldx #5
               jsr Sound
               lda #5
               ldx #10
               jsr Sound
               jmp DCLoop2

DCLoop3        anop
               cld
               lda #0
               sta Time
               sta Time+1
               jsr AfScore
               jsr Affiche
               lda #20
               jsr Pause
               rts





;--------------------------------------------------------------------------
BonusST        anop
               jsr AfScore
               ldx #20
BSTloop        anop
               txa
               pha
               lda Diams-1,x
               tay
               lda #5
               sta Diams-1,x            ;efface diam
               lda #0
               sta DiamsTbl2-1,x
               sed
               lda ShScore,y            ;valeur du diam
               clc
               lsr a                    ;multi 10
               lsr a
               lsr a
               lsr a
               adc Score+1
               sta Score+1
               lda #0
               adc Score+2
               sta Score+2
               lda #0
               adc Score+3
               sta Score+3
               lda #0
               adc Score+4
               sta Score+4
               cld

               lda #10
               ldx #5
               jsr Sound
               jsr Afscore
               lda #2
               ldx #30
               jsr Sound
               jsr Affiche

               pla
               tax
               dex
               bne BSTLoop
               rts





;--------------------------------------------------------------------------
Gestion2Joueurs anop

               lda Player
               bne GJpl2

               ldx #0
GJpl1Loop      anop
               lda Diams,x
               sta Diams1,x
               inx
               cpx #20
               bne GJpl1Loop
               lda Score
               sta Score1
               lda Score+1
               sta Score1+1
               lda Score+2
               sta Score1+2
               lda Score+3
               sta Score1+3
               lda Level
               sta Level1
               lda ELife
               sta ELife1
               lda Vies
               sta Vies1
               beq Perdu2
               lda NbPlayer
               beq paschange1
               lda #1
               sta Player
paschange1     anop
               lda #0
               rts

paschange2     anop
               lda #-1
               rts

Perdu2         anop
               jsr BestScore
               lda NbPlayer
               beq paschange2
               lda Vies2
               beq paschange2
               lda #1
               sta Player
               jmp paschange1


GJpl2          anop

               ldx #0
GJpl2Loop      anop
               lda Diams,x
               sta Diams2,x
               inx
               cpx #20
               bne GJpl2Loop
               lda Score
               sta Score2
               lda Score+1
               sta Score2+1
               lda Score+2
               sta Score2+2
               lda Score+3
               sta Score2+3
               lda Level
               sta Level2
               lda ELife
               sta ELife2
               lda Vies
               sta Vies2
               beq Perdu3
               lda Vies1
               beq paschange1
               lda #0
               sta Player
               rts

Perdu3         anop
               jsr BestScore
               lda Vies1
               beq paschange2
               lda #0
               sta Player
               sta NbPlayer
               rts





;--------------------------------------------------------------------------
BestScore      anop
               lda #0
               sta NeedSave

               jsr CopyBest

               ldx #0
HiScoreLoop    anop
               lda vbest+15,x
               cmp Score+3
               blt HiScoreLoopOk
               bne NextHiScore
               lda vbest+14,x
               cmp Score+2
               blt HiScoreLoopOk
               bne NextHiScore
               lda vbest+13,x
               cmp Score+1
               blt HiScoreLoopOk
               bne NextHiScore
               lda Score
               cmp vbest+12,x
               blt NextHiScore
HiScoreLoopOk  anop
               txa
               tay
               stx Temp
               jmp OkHiScore

NextHiScore    anop
               txa
               clc
               adc #16
               tax
               cmp #5*16
               blt HiScoreLoop
               jmp HiScores

OkHiScore      anop
               ldx #(4*16)+1
OkHiScore2     anop
               dex
               lda vbest,x
               sta vbest+16,x
               cpx Temp
               bne OkHiScore2
               lda Score
               sta vbest+12,y
               lda Score+1
               sta vbest+13,y
               lda Score+2
               sta vbest+14,y
               lda Score+3
               sta vbest+15,y
               ldx Level
               lda HexDec,x
               sta vbest,y
               jsr EntreNom

HiScores       anop
               lda #0
               sta FirstScore
               inc ScoreTemp
               jsr AfScore

               ldx #9
               ldy #45
               lda #phhi
               sta GSTemp1
               lda #>phhi
               sta GSTemp1+1
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               jsr Texte16

               lda #80
               sta HiVert
               ldx #0
ShowHi         anop
               txa
               pha
               lda vbest,x
               and #$0f
               clc
               adc #$30                 ;zero
               sta ScoreStr+2
               lda vbest,x
               and #$f0
               lsr a
               lsr a
               lsr a
               lsr a
               adc #$30                 ;zero
               sta ScoreStr+1
               lda #2
               sta ScoreStr

               ldx #0
               ldy HiVert
               lda #ScoreStr
               sta GSTemp1
               lda #>ScoreStr
               sta GSTemp1+1
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               jsr Texte16              ;Affiche le level...

               pla
               pha
               clc
               adc #1
               adc #vbest
               sta GSTemp1
               lda #>vbest
               sta GSTemp1+1
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               ldx #5
               ldy HiVert
               jsr Texte16              ;affiche le nom...

               pla
               pha
               tax
               lda #$30                 ;zero
               sta ScoreStr+8
               lda vbest+12,x
               and #$0f
               clc
               adc #$30                 ;zero
               sta ScoreStr+7
               lda vbest+12,x
               and #$f0
               lsr a
               lsr a
               lsr a
               lsr a
               adc #$30                 ;zero
               sta ScoreStr+6
               lda vbest+13,x
               and #$0f
               adc #$30                 ;zero
               sta ScoreStr+5
               lda vbest+13,x
               and #$f0
               lsr a
               lsr a
               lsr a
               lsr a
               adc #$30                 ;zero
               sta ScoreStr+4
               lda vbest+14,x
               and #$0f
               adc #$30                 ;zero
               sta ScoreStr+3
               lda vbest+14,x
               and #$f0
               lsr a
               lsr a
               lsr a
               lsr a
               adc #$30                 ;zero
               sta ScoreStr+2
               lda vbest+15,x
               and #$0f
               adc #$30                 ;zero
               sta ScoreStr+1
               lda #8
               sta ScoreStr

               ldx #24
               ldy HiVert
               lda #ScoreStr
               sta GSTemp1
               lda #>ScoreStr
               sta GSTemp1+1
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               jsr Texte16              ;Affiche le score...

               lda HiVert
               clc
               adc #18
               sta HiVert

               pla
               clc
               adc #16
               tax
               cmp #5*16
               beq pasShowHi
               jmp ShowHi

pasShowHi      anop
               jsr WaitUser
               lda NeedSave
               beq pasSaveHS
               jsr SaveHiScore

pasSaveHS      anop
               rts





;--------------------------------------------------------------------------
SaveHiScore    anop
               jsr ProDOS
               dc h'c8'                 ;Open
               dc i2'OpenHS'
               bcs SaveHSErr

               lda RefNumHS
               sta WriteHS+1
               sta CloseHS+1

               jsr ProDOS
               dc h'cb'                 ;Write
               dc i2'WriteHS'
               bcs SaveHSErr

SaveHSclose    anop
               jsr ProDOS
               dc h'cc'                 ;Close
               dc i2'CloseHS'

               rts

SaveHSErr      anop
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               lda #SaveHS
               sta GSTemp1
               lda #>SaveHS
               sta GSTemp1+1
               ldx #11
               ldy #182
               jsr Texte8

               jmp SaveHSClose





;--------------------------------------------------------------------------
EntreNom       anop
               inc NeedSave             ;il faut sauver les hiscores
               tya
               pha

               ldx #5
               ldy #50
               lda #phbest
               sta GSTemp1
               lda #>phbest
               sta GSTemp1+1
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               jsr Texte16

               lda Player
               bne ENpl2

               lda #phplayer1
               sta GSTemp1
               lda #>phplayer1
               sta GSTemp1+1
               jmp EN2

ENpl2          anop
               lda #phplayer2
               sta GSTemp1
               lda #>phplayer2
               sta GSTemp1+1

EN2            anop
               ldx #12
               ldy #70
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               jsr Texte16

               lda #0
               sta FirstScore
               inc ScoreTemp
               jsr AfScore

               pla
               pha
               tay
               tax
               lda #0
               sta vbest+1,x
EN3            anop
               sty Temp
               jsr WaitUser
               ldy Temp
               cmp #0                   ;clic ou fire
               beq EN3
               cmp #$7f                 ;Delete ?
               beq EN4
               cmp #$08                 ;fleche gauche ?
               beq EN4
               cmp #$0d                 ;return ?
               beq EN5
               cmp #$5b                 ;A-Z, 0-9, espace, ...
               blt EN30
               sec
               sbc #$20                 ;force majuscule
EN30           anop
               sta Temp
               lda vbest+1,y            ;nb caracteres str
               tax
               cpx #9
               beq EN3
               pla
               tax
               lda Temp
               sta vbest+2,x            ;caractere tape
               inx
               txa
               pha
               tya
               tax
               inc vbest+1,x
EN33           anop
               sty Temp
               tya
               clc
               adc #vbest+1
               sta GSTemp1
               lda #>vbest
               sta GSTemp1+1
               ldx #11
               ldy #108
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               jsr Texte16

               ldy Temp
               jmp EN3

EN4            anop
               tya
               tax
               lda vbest+1,x
               beq EN3
               dec vbest+1,x
               pla
               sec
               sbc #1
               pha
               sty Temp

               lda #11
               sta GSTemp1
               lda #108
               sta GSTemp1+1
               lda #18
               sta GSTemp2
               lda #15
               sta GSTemp2+1
               lda #0
               sta GSTemp3
               sta GSTemp3+1
               jsr PaintRect

               ldy Temp
               jmp EN33

EN5            anop
               pla
               lda #1                   ;HGR2
               jsr ClearHGR
               jsr CopyBest

               rts





;--------------------------------------------------------------------------
ProDOSErr      anop
               bcs ProDOSerr2
               rts

ProDOSErr2     anop
               tax
               lda HexDec,x
               pha
               and #$0f
               clc
               adc #$30                 ;zero
               sta Err2Str+1
               pla
               and #$f0
               clc
               lsr a
               lsr a
               lsr a
               lsr a
               clc
               adc #$30                 ;zero
               sta Err2Str

               lda #9
               sta GSTemp1
               lda #70
               sta GSTemp1+1
               lda #22
               sta GSTemp2
               lda #52
               sta GSTemp2+1
               lda #$ff
               sta GSTemp3
               sta GSTemp3+1
               jsr PaintRect

               lda #10
               sta GSTemp1
               lda #76
               sta GSTemp1+1
               lda #20
               sta GSTemp2
               lda #40
               sta GSTemp2+1
               lda #0
               sta GSTemp3
               sta GSTemp3+1
               jsr PaintRect

               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               lda #ProDOSstr1
               sta GSTemp1
               lda #>ProDOSstr1
               sta GSTemp1+1
               ldx #13
               ldy #83
               jsr Texte8

               lda #ProDOSstr2
               sta GSTemp1
               lda #>ProDOSstr2
               sta GSTemp1+1
               ldx #14
               ldy #93
               jsr Texte8

               lda #ErrStr
               sta GSTemp1
               lda #>ErrStr
               sta GSTemp1+1
               ldx #23
               ldy #106
               jsr Texte8

               jsr WaitUser

               ldx StackPtr
               txs
               jmp PnPEnd





;--------------------------------------------------------------------------
Alignement     anop

               lda #8*20                ;taille tableau - une ligne
               sta Temp
bcl1           anop
               lda #0
               sta Multi
               sta PileSize
               sta Temp4+1
               sta Temp4+2
               sta Temp4+3

               ldx Temp
               lda Tableau0,x
bcl11          anop
               sta Temp2
               tax
               lda TypeDep,x
               cmp #13                  ;affreux ?
               bne pasAffreux
               stx StackX
               lda #1
               ldx #5
               jsr Sound
               ldx StackX
               sed
               lda Time
               sec
               sbc #1
               sta Time
               bcs pastrouv0
               lda Time+1
               sec
               sbc #1
               sta Time+1
pastrouv0      cld
               jmp pasTrouv2
pasAffreux     anop
               cmp #9
               bge PasTrouv1
               sta Temp3
               cmp #6                   ;multiplicateur?
               bne PasMulti
               lda Temp2
               sec
               sbc #61                  ;numero element des multis - 2
               sta Multi
pasMulti       anop
               lda ShScore,x
               sta Temp4

               lda Temp
               sta Temp+1
bcl2           anop
               inc PileSize
               lda Temp+1
               sec
               sbc #20                  ;ligne superieur
               sta Temp+1
               tax
               lda Tableau0,x
               beq Trouv1
               tay
               tax
               lda TypeDep,x
               cmp #6                   ;multiplicateur ?
               bne pasMulti2
               tya
               sec
               sbc #61                  ;numero element des multis - 2
               cmp Multi
               blt pasmulti2
               sta Multi
pasMulti2      anop
               sed
               lda ShScore,x
               cmp #$99
               beq bcl2score0
               clc
               adc Temp4
               sta Temp4
               bcc bcl2score
bcl2score0     anop
               inc Temp4+1
bcl2score      anop
               cld
               lda TypeDep,x
               beq Trouv1
               cmp #9
               beq pasTrouv1
               tax
               cpy Temp2
               beq bcl2
               cpx #5                   ;bonus?
               beq bcl2
               cpx #6                   ;multi?
               beq bcl2
               cpx #8                   ;time?
               beq bcl2

PasTrouv1      jmp pasTrouv2

Trouv1         anop
               lda PileSize
               cmp Minimum
               blt pastrouv1
               lda Temp
               sta Temp+1
bcl3           anop
               ldx Temp+1
               lda Tableau0,x
               cmp #80
               blt bcl3notdiams
               cmp #99
               bge bcl3notdiams
               ldx #0
bcl3diams      anop
               ldy Diams,x
               cpy #5
               beq bcl3okdiam
               inx
               cpx #20
               bne bcl3diams
bcl3okdiam     anop
               sta Diams,x
bcl3notdiams   anop
               tay
               lda TypeDep,y
               cmp #8                   ;time?
               bne pastime2
               sed
               lda Time+1
               clc
               adc #2
               sta Time+1
               cld
PasTime2       anop
               lda valcar,y             ;afficher valeur de l'element
               ldx Temp+1
               sta Tableau0,x
               lda #0
               sta Tableau20,x

               lda Temp+1
               sec
               sbc #20                  ;ligne superieure
               sta Temp+1
               dec PileSize
               bne bcl3

               lda #10
               sta Show                 ;pour ne pas effacer les valeurs

               lda Temp4
               sta Temp2
               lda Temp4+1
               sta Temp2+1
               sed
               ldx Multi
               beq pasbcl4
               dex
bcl4           anop
               lda Temp4
               clc
               adc Temp2
               sta Temp4
               lda Temp4+1
               adc Temp2+1
               sta Temp4+1
               dex
               bne bcl4

pasbcl4        anop
               cld

               ldx Temp+1
               lda Temp4+1
               cmp #$01
               blt pasbonx
               cmp #$02
               bge pasDiams1
               lda #80                  ;diams 1
               sta Tableau,x
               jmp pasbonx

pasDiams1      anop
               cmp #$04
               bge pasDiams2
               lda #83                  ;diams 2
               sta Tableau,x
               jmp pasbonx

pasDiams2      anop
               cmp #$06
               bge pasDiams3
               lda #86                  ;diams 3
               sta Tableau,x
               jmp pasbonx

pasDiams3      anop
               cmp #$08
               bge pasDiams4
               lda #89                  ;diams 4
               sta Tableau,x
               jmp pasbonx

pasDiams4      anop
               cmp #$10
               bge pasDiams5
               lda #92                  ;diams 5
               sta Tableau,x
               jmp pasbonx

pasDiams5      anop
               lda #95                  ;diams 6
               sta Tableau,x

pasbonx        anop
               sed
               clc
               lda Temp4
               adc Score
               sta Score
               lda Temp4+1
               adc Score+1
               sta Score+1
               lda Temp4+2
               adc Score+2
               sta Score+2
               lda Temp4+3
               adc Score+3
               sta Score+3
               cld

PasTrouv2      anop
               inc Temp
               lda Temp
               cmp #9*20                ;le tableau est fini ?
               beq pasbcl1
               jmp bcl1

pasbcl1        anop
               ldx #8*20
bcl5           anop
               lda Tableau-1,x
               cmp #40                  ;boule 1
               beq pasReussit
               cmp #41                  ;boule 2
               beq pasReussit
               cmp #42                  ;boule 3
               beq pasReussit
               dex
               bne Bcl5

               lda #-1
               sta Reussit
               rts

pasReussit     anop
               ldx #8*20
bcl6           anop
               lda Tableau-1,x
               cmp #135                 ;pot de fleur ?
               bne paspot
               lda Tableau-1+20,x       ;ligne suivante
               beq Paspot
               tay
               lda TypeDep,y
               cmp #11
               beq paspot
               cmp #20
               beq paspot
               lda #68                  ;explosion
               sta Tableau-1+20,x
paspot         anop
               dex
               bne bcl6

               rts





;--------------------------------------------------------------------------
DrawCursor     anop

               lda JoyX
               clc
               lsr a
               lsr a
               lsr a
               lsr a
               lsr a
               sec
               sbc #4
               beq DCJoyX
               bcc DCsubX
               clc
               adc Mx
               sta Mx
               jmp DCjoyX

DCsubX         anop
               eor #$ff
               sta Temp
               lda Mx
               sec
               sbc Temp
               sta Mx

DCJoyX         anop
               lda JoyY
               clc
               lsr a
               lsr a
               lsr a
               lsr a
               lsr a
               sec
               sbc #4
               beq DCJoyY
               bcc DCsubY
               clc
               adc My
               sta My
               jmp DCjoyY

DCsubY         anop
               eor #$ff
               sta Temp
               lda My
               sec
               sbc Temp
               sta My

DCJoyY         anop
               lda Mx
               cmp #39
               blt DCClampX
               cmp #$e0
               blt DCClampX0
               lda #0
               sta Mx
               jmp DCClampX
DCClampX0      anop
               lda #38
               sta Mx

DCClampX       anop
               lda My
               cmp #24
               blt DCClampY
               cmp #$e0
               blt DCClampY0
               lda #0
               sta My
               jmp DCClampY
DCClampY0      anop
               lda #23
               sta My

DCClampY       anop

               ldx Mx
               beq doMousePos
               dex
doMousePos     anop
               txa
               clc
               lsr a
               ldx My
               adc ShapeTableY,x
               sta MousePos
               adc #20
               sta MousePos2
               adc #1
               sta MousePos3
               sec
               sbc #20
               sta MousePos4


               ldx Mx
               ldy My
               jsr XORCursor

               lda OldMouse
               cmp Mx
               bne DCClearCursor
               lda OldMouse+1
               cmp My
               beq DrawCursorDone
DCClearCursor  anop
               lda OldMouse
               clc
               lsr a
               ldx OldMouse+1
               adc ShapeTableY,x
               tax
               lda #0
               sta Tableau2,x
               sta Tableau2-1,x
               sta Tableau2+20,x
               sta Tableau2+20-1,x

DrawCursorDone anop
               lda Mx
               sta OldMouse
               lda My
               sta OldMouse+1
               rts

XORCursor      anop
               lda ShapesLineY,y
               clc
               adc #4
               sta Temp3
               txa
               sta Temp1
               lda #0
               sta Temp2
               sta Temp4
               tax
XORCursor2     anop
               ldy Temp3
               lda adrlo,y
               clc
               adc Temp1
               sta <$50
               lda adrhi,y
               adc PageHGR
               sta <$51
               lda ($50,x)
               ldy Temp4
               and CursorMask,y
               ora CursorPict,y
               iny
               sta ($50,x)
               jsr Inc50
               lda ($50,x)
               and CursorMask,y
               ora CursorPict,y
               iny
               sty Temp4
               sta ($50,x)
               inc Temp3
               inc Temp2
               lda Temp2
               cmp #9
               bne XORCursor2
               rts

XORCursor3     anop
               lda ShapesLineY2,y
               sta Temp3
               txa
               asl a
               sta Temp1
               lda #0
               sta Temp2
               sta Temp4
               tax
XORCursor4     anop
               ldy Temp3
               lda adrlo,y
               clc
               adc Temp1
               sta <$50
               lda adrhi,y
               adc PageHGR
               sta <$51
               lda ($50,x)
               ldy Temp4
               and CursorMask2,y
               ora CursorPict2,y
               iny
               sta ($50,x)
               jsr Inc50
               lda ($50,x)
               and CursorMask2,y
               ora CursorPict2,y
               iny
               sty Temp4
               sta ($50,x)
               inc Temp3
               inc Temp2
               lda Temp2
               cmp #15
               bne XORCursor4
               rts

OldMouse       ds 2
MousePos       ds 1
MousePos2      ds 1
MousePos3      ds 1
MousePos4      ds 1




;---------------------------------------------------------------------
Explosions     anop
               ldy #250
               sty MousePos
               sty MousePos2
               sty MousePos3
               sty MousePos4
               ldy #0
               ldx #0
ExploLoop      anop
               lda #68
               sta Tableau,y
               lda #0
               sta Tableau2,y
               iny
               cpy #20*8
               bne ExploLoop

               lda #10
Explo1         anop
               pha
               jsr Affiche
               pla
               sec
               sbc #1
               bne Explo1

               lda AffSpeed
               pha
               lda #20
               sta AffSpeed

               lda #100
Explo2         anop
               pha
               jsr Random
               and #$f
               clc
               adc #2
               sta Temp
               jsr Random
               and #7
               tax
               lda #0
ExploMul       anop
               cpx #0
               beq ExploMul2
               clc
               adc #20
               dex
               jmp ExploMul

ExploMul2      anop
               clc
               adc Temp
               tax
               lda #68                  ;explosion
               sta Tableau,x

               jsr Affiche

               pla
               sec
               sbc #1
               bne Explo2

               pla
               sta AffSpeed

               lda #10
Explo3         anop
               pha
               jsr Affiche
               pla
               sec
               sbc #1
               bne Explo3

               lda #10
               jsr Pause
               rts





;---------------------------------------------------------------------
Preparation    anop
               jsr Nettoyage
               lda #200
               sec
               sbc Level
               sta vexplo
               lda #0
               sta Temp
               lda Level
               asl a
               asl a
               asl a
               asl a
               clc
               adc #Diff
               bcc Prep0
               inc Temp
Prep0          anop
               sta <$50
               lda Level
               clc
               lsr a
               lsr a
               lsr a
               lsr a
               clc
               adc #>Diff
               adc Temp
               sta <$51
               ldx #0
               lda ($50,x)              ;nb de balles
               sta nbBalls
               jsr Inc50
               jsr Inc50
               lda ($50,x)              ;time+1
               sta Time+1
               jsr Inc50
               lda ($50,x)              ;time
               sta Time
               jsr Inc50
               lda ($50,x)              ;longueur-1 des lignes
               clc
               adc #1
               sta Minimum
               jsr Inc50
               jsr Inc50
               lda ($50,x)              ;difficulte
               sta Difficulte
               jsr Inc50
               jsr Inc50
               lda ($50,x)              ;% tete de mort
               sta Affreux
               jsr Inc50
               jsr Inc50
               lda ($50,x)              ;% flammes
               sta Flammes
               jsr Inc50
               jsr Inc50
               lda ($50,x)              ;% pot fleurs
               sta Pot

               jsr CopyBest

               jsr Afscore
               inc doFall               ;simule l'appuie sur espace
               sta $c010                ;echantillonnage clavier
Prep2          anop
               lda vmousejoy
               bne pasReadX2
               ldx #0
               jsr $FB1E
               sty JoyX
pasReadX2      anop

               jsr GestionSouris
               jsr Afscore
               jsr Poum

               lda vmousejoy
               bne pasReadY2
               ldx #1                   *******
               jsr $FB1E                *
               sty JoyY                 *
pasReadY2      anop

               jsr DrawCursor
               jsr Affiche
               jsr DeplaceBloc

               lda $c000
               bpl Prep3
               and #$7f
               cmp #'p'
               beq Prep22
               cmp #'P'
               beq Prep22
               jmp Prep3
Prep22         anop
               jsr doPause
Prep3          anop
               ldy vmousejoy
               beq pasReadKeys2
               jsr KeyMove
pasReadKeys2   anop
               dec NbBalls
               bne Prep2

               dec doFall
               rts




;---------------------------------------------------------------------
doPause        anop
               ldx #15
               ldy #96
               lda #phpause
               sta GSTemp1
               lda #>phpause
               sta GSTemp1+1
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               jsr Texte16

               jsr WaitUser             ;* Debug
               cmp #'*'                 ;*
               bne doPause1             ;*
               lda #$01                 ;*
               sta Time+1               ;*
               lda #1                   ;*
               sta Vies                 ;*
               lda #0                   ;*
               sta FirstScore           ;*
               jmp doPause2             ;*

doPause1       anop                     ;*
               cmp #'+'                 ;*
               bne doPause2             ;*
               sed                      ;*
               lda Score+1              ;*
               clc                      ;*
               adc #1                   ;*
               sta Score+1              ;*
               cld                      ;*
               inc ScoreTemp            ;*
               inc ScoreTemp            ;*
               jsr AfScore              ;*
               jmp doPause              ;*

doPause2       anop
               jsr ForceAff

               rts





;---------------------------------------------------------------------
GestionSouris  anop

               jsr Random
               sta Temp3

               lda Temp3
               cmp #8
               bge doFallTest
               lda Difficulte
               bge doFallTest
               and RNDRoot
               and RNDRoot+1
               cmp #1
               bne doFallTest
               cmp Temp3
               beq doFallRout

doFallTest     anop
               lda doFall
               beq notFallRout

doFallRout     anop
               jsr Random
               eor Temp3
               and #%00111100           ;colonne entre 0 et 15
               clc
               lsr a
               lsr a
               adc #2                   ;...entre 2 et 17
               tay
               jsr Random
               sta Temp3
               lda #0
               sta Temp4
               ldx #0
RndLoop        anop
               lda Apparition,x
               beq pasval
               bmi notFallRout
               clc
               adc Temp4
               sta Temp4
               cmp Temp3
               bge OkVal
pasval         anop
               inx
               jmp RndLoop

okval          anop
               txa
               sta Tableau0,y

notFallRout    anop
               lda Etalon
               bne PasApp
               lda MBut
               bne doSourisFire
               lda $c061
               bmi doSourisFire
               rts

doSourisFire   anop
               lda #0
               sta MBut
               lda #3
               sta Etalon
               lda OkClic
               bne DejaClic
               lda #12
               ldx #8
               jsr Sound
               ldx MousePos
               lda Tableau,x
               tax
               lda TypeDep,x
               beq PasApp
               cmp #10
               bge PasApp

               ldx MousePos
               lda #0
               sta Tableau2,x

               lda MousePos
               sta Curs1
               lda Mx
               clc
               lsr a
               sta XSour
               lda My
               sta YSour
               lda #-1
               sta OkClic

PasApp         anop
               lda Etalon
               beq PasApp2
               dec Etalon
PasApp2        rts

dejaClic       anop
               ldx MousePos
               lda Tableau,x
               sta Temp2+1
               tay
               lda TypeDep,y
               cmp #11
               beq PasApp
               ldx Curs1
               lda Tableau,x
               sta Temp2
               ldx MousePos
               sta Tableau,x
               lda #0
               sta Tableau2,x
               tya
               ldx Curs1
               sta Tableau,x
               lda #0
               sta Tableau2,x
               sta OkClic

               lda #8
               ldx #12
               jsr Sound

               ldx Temp2
               lda TypeDep,x
               cmp #7
               bne PasApp

               lda vexplo
               sec
               sbc #1
               cmp Temp2+1
               beq OkExplo
               sec
               sbc #10
               cmp Temp2+1
               beq OkExplo
               sec
               sbc #10
               cmp Temp2+1
               beq OkExplo
               sec
               sbc #10
               cmp Temp2+1
               beq OkExplo
               sec
               sbc #10
               cmp Temp2+1
               beq OkExplo
               sec
               sbc #10
               cmp Temp2+1
               beq OkExplo
               sec
               sbc #10
               cmp Temp2+1
               beq OkExplo
               sec
               sbc #10
               cmp Temp2+1
               beq OkExplo
               sec
               sbc #10
               cmp Temp2+1
               beq OkExplo

               lda #68
FillExplo      anop
               ldy Diams
               ldx MousePos
               sta Tableau-20-1,x
               sta Tableau-20,x
               sta Tableau-20+1,x
               sta Tableau-1,x
               sta Tableau,x
               sta Tableau+1,x
               sta Tableau+20-1,x
               sta Tableau+20,x
               sta Tableau+20+1,x
               sty Diams
               jmp doGround

OkExplo        anop
               jsr Random
               and #$f
               clc
               adc #82
               jmp FillExplo

doGround       anop
               lda #0
               sta Tableau2-20-1,x
               sta Tableau2-20,x
               sta Tableau2-20+1,x
               sta Tableau2-1,x
               sta Tableau2,x
               sta Tableau2+1,x
               sta Tableau2+20-1,x
               sta Tableau2+20,x
               sta Tableau2+20+1,x

               ldx #0
               lda #2
doGroundLoop   anop
               sta Diams-20,x
               inx
               cpx #20
               bne doGroundLoop
               jmp PasApp





;---------------------------------------------------------------------
DeplaceBloc    anop
               ldx #20*8-1
DepBloc1       anop
               lda Tableau-20,x         ;on charge un element
               beq PasTombe
               tay
               lda TypeDep,y
               cmp #20
               bge PasTombe
               tay
               lda Tableau,x            ;ligne en dessous
               bne tpasbas
               lda Tableau-20,x
               sta Tableau,x
               lda #0
               sta Tableau-20,x
               sta Tableau2-20,x
               sta Tableau2,x
               jmp pasTombe

tpasbas        anop
               cpy #9
               beq PasTombe
               jsr Random
               and #%00000010
               bne tgauche

               lda Tableau+1,x
               bne pastombe
               lda Tableau-20,x
               sta Tableau+1,x
               lda #0
               sta Tableau-20,x
               sta Tableau2-20,x
               sta Tableau2+1,x
               jmp pastombe

tgauche        anop
               lda Tableau-1,x
               bne pastombe
               lda Tableau-20,x
               sta Tableau-1,x
               lda #0
               sta Tableau-20,x
               sta Tableau2-20,x
               sta Tableau2-1,x

Pastombe       anop
               dex
               bne DepBloc1

               ldx #20
               lda #0
ClearSky       anop
               sta Tableau0-1,x
               dex
               bne ClearSky

               rts





;---------------------------------------------------------------------
Affiche        anop

               lda #0
               sta GSTemp2
               lda #$20
               sta GSTemp2+1

               ldx #0
               lda Show
               beq Affiche1
               dec Show
Affiche1       anop
               stx Temp
               lda OffSetX,x
               sta GSTemp7              ;x dest
               lda OffSetY,x
               clc
               adc #42                  ;tableau de bord
               sta GSTemp7+1            ;y dest

               lda Tableau,x

               ldy Show
               beq OkAnim
               cmp #160                 ;element valeur alignement
               bge Aff123

OkAnim         anop
               tax
               ldy TypeDep,x
               cpy #14                  ;flamme
               bne Affpasflamme
               pha
               jsr Random
               tay
               ldx Temp
               pla
               iny
               bne AffPasFlamme
               sta Tableau-20,x         ;propagation des flammes

AffPasFlamme   anop
               ldx Temp
               tay
               lda Listeanim,y          ;animation de l'objet
               cmp Tableau,x
               beq Aff123
               sta Tableau,x
               jmp Aff124
Aff123         anop
               ldy Tableau2,x
               bne NotAff

Aff124         anop
               tay
               lda OffSetX,y
               sta GSTemp6              ;x source
               lda OffSetY,y
               sta GSTemp6+1            ;y source
               lda #$80
               sta Tableau2,x           ;ne pas reafficher!

               inc AffNumber
               jsr Sprite16

               lda Curs1
               cmp Temp
               beq AffCurs0
               cmp MousePos
               beq AffCurs0
               cmp MousePos2
               beq AffCurs0
               cmp MousePos3
               beq AffCurs0
               cmp MousePos4
               bne AffCurs1
AffCurs0       anop
               lda OkClic
               beq AffCurs1
               inc AffNumber
               ldx XSour
               ldy YSour
               jsr XORCursor3

Affcurs1       anop
               lda Temp
               cmp MousePos
               beq AffFleche
               cmp MousePos2
               beq AffFleche
               cmp MousePos3
               beq AffFleche
               cmp MousePos4
               bne NotAff

AffFleche      anop
               inc AffNumber
               ldx Mx
               ldy My
               jsr XORCursor            ;utilise Temp1-4

NotAff         anop
               ldx Temp
               inx
               cpx #20*10
               beq AfficheDone
               jmp Affiche1

AfficheDone    anop
               lda AffNumber
               cmp AffSpeed
               blt AfficheDone2
               lda #0
               sta AffNumber
               rts

AfficheDone2   anop                     ;Tempo pour vitesse constante
               lda #10
               sta GSTemp6              ;x source
               lda #0
               sta GSTemp6+1            ;y source
               lda #38
               sta GSTemp7              ;x dest
               lda #177
               sta GSTemp7+1            ;y dest
               jsr Sprite16
               inc AffNumber
               lda AffNumber
               cmp AffSpeed
               bne AfficheDone2
               lda #0
               sta AffNumber
               rts





;---------------------------------------------------------------------
Poum           anop
               sed
               lda Time
               sec
               sbc #1
               sta Time
               bcs Poum2
               lda Time+1
               sec
               sbc #1
               sta Time+1
Poum2          anop
               cld
               lda vtictac
               bne PoumDone

               ldx vpoum
               beq doPoum
               dex
               stx vpoum
               jmp PoumDone

doPoum         anop
               lda TicSide
               eor #$ff
               sta TicSide
               bne TicLeft
               lda #25
               jmp TicRight
TicLeft        anop
               lda #15
TicRight       anop
               ldx #8
               jsr Sound                ;clic...c'est le tictac!

               lda Time+1
               sta vpoum

PoumDone       anop
               rts





;---------------------------------------------------------------------
CopyBest       anop

               lda #1
               jsr ClearHGR2

               lda #0
               sta Temp2
               lda #150
               sta Temp
CopyBestLoop   anop
               ldx Temp
               lda adrlo,x
               sta <$50
               lda adrhi,x
               adc #$60                 ;Buffer car
               sta <$51

               ldx Temp2
               lda adrlo,x
               sta <$52
               lda adrhi,x
               adc #$40                 ;HGR2
               sta <$53

               ldy #40
CopyBestLine   anop
               ldx #0
               lda ($50,x)              ;copie d'une ligne
               sta ($52,x)
               jsr Inc50
               jsr Inc52
               dey
               bne CopyBestLine

               inc Temp
               inc Temp2
               lda Temp2
               cmp #42
               bne CopyBestLoop

               rts





;---------------------------------------------------------------------
Afscore        anop

               lda ELife
               cmp Score+2
               beq AfScore2

AfScore1       anop                     ;extra life !
               lda #0
               sta FirstScore

               lda Score+2
               sta ELife
               sed
               lda Vies
               clc
               adc #1
               sta Vies
               cld

               lda #7
               sta GSTemp1
               lda #70
               sta GSTemp1+1
               lda #26
               sta GSTemp2
               lda #46
               sta GSTemp2+1
               lda #%10101010
               sta GSTemp3
               lda #%11010101
               sta GSTemp3+1
               jsr PaintRect

               lda #8
               sta GSTemp1
               lda #73
               sta GSTemp1+1
               lda #24
               sta GSTemp2
               lda #40
               sta GSTemp2+1
               lda #0
               sta GSTemp3
               sta GSTemp3+1
               jsr PaintRect

               ldx #10
               ldy #85
               lda #phextralife
               sta GSTemp1
               lda #>phextralife
               sta GSTemp1+1
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               jsr Texte16

               lda #15
               jsr Pause

               jsr ForceAff

AfScore2       anop
;-----------------------
;affiche le temps
               clc
               lda Time
               and #$0f
               adc #$c2                 ;zero (66 + $80)
               sta ScoreStr+4
               lda Time
               and #$f0
               lsr a
               lsr a
               lsr a
               lsr a
               adc #$c2                 ;zero (66 + $80)
               sta ScoreStr+3
               lda Time+1
               and #$0f
               adc #$c2                 ;zero (66 + $80)
               sta ScoreStr+2
               lda Time+1
               and #$f0
               lsr a
               lsr a
               lsr a
               lsr a
               adc #$c2                 ;zero (66 + $80)
               sta ScoreStr+1
               lda #4
               sta ScoreStr

               ldx #30
               ldy #9
               lda #ScoreStr
               sta GSTemp1
               lda #>ScoreStr
               sta GSTemp1+1
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               jsr Texte16


;-----------------------
;affiche le score
               lda Score
               eor Score+1
               eor Score+2
               eor Score+3
               sta Temp
               lda ScoreTemp
               eor ScoreTemp+1
               eor ScoreTemp+2
               eor ScoreTemp+3
               cmp Temp
               bne doAffScore
               jmp affvie

doAffScore     anop
               lda AffNumber            ;controle de la vitesse
               clc                      ;d'affichage
               adc #7
               sta AffNumber

               clc
               lda Score
               and #$0f
               adc #$c2                 ;zero (66 + $80)
               sta ScoreStr+7
               lda Score
               and #$f0
               lsr a
               lsr a
               lsr a
               lsr a
               adc #$c2                 ;zero (66 + $80)
               sta ScoreStr+6
               lda Score+1
               and #$0f
               adc #$c2                 ;zero (66 + $80)
               sta ScoreStr+5
               lda Score+1
               and #$f0
               lsr a
               lsr a
               lsr a
               lsr a
               adc #$c2                 ;zero (66 + $80)
               sta ScoreStr+4
               lda Score+2
               and #$0f
               adc #$c2                 ;zero (66 + $80)
               sta ScoreStr+3
               lda Score+2
               and #$f0
               lsr a
               lsr a
               lsr a
               lsr a
               adc #$c2                 ;zero (66 + $80)
               sta ScoreStr+2
               lda Score+3
               and #$0f
               adc #$c2
               sta ScoreStr+1
               lda #7
               sta ScoreStr

               ldx #12
               ldy #9
               lda #ScoreStr
               sta GSTemp1
               lda #>ScoreStr
               sta GSTemp1+1
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               jsr Texte16

               lda Score
               sta ScoreTemp
               lda Score+1
               sta ScoreTemp+1
               lda Score+2
               sta ScoreTemp+2
               lda Score+3
               sta ScoreTemp+3

;-----------------------
;affiche les vies
affvie         anop
               lda FirstScore
               beq doScore
               rts

doScore        inc FirstScore
               clc
               lda Vies
               and #$0f
               adc #$c2                 ;zero (66 + $80)
               sta ScoreStr+2
               lda Vies
               and #$f0
               lsr a
               lsr a
               lsr a
               lsr a
               adc #$c2                 ;zero (66 + $80)
               sta ScoreStr+1
               lda #2
               sta ScoreStr

               ldx #2
               ldy #9
               lda #ScoreStr
               sta GSTemp1
               lda #>ScoreStr
               sta GSTemp1+1
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               jsr Texte16

;-----------------------
;affiche les blasons

               lda Level
               sta Temp
               ldx #0
Blason50       anop
               lda Temp
               cmp #50
               blt Blason10
               sec
               sbc #50
               sta Temp
               inx
               lda #204                 ;blason 50
               sta ScoreStr,x
               jmp Blason50

Blason10       anop
               lda Temp
               cmp #10
               blt Blason5
               sec
               sbc #10
               sta Temp
               inx
               lda #205                 ;blason 10
               sta ScoreStr,x
               jmp Blason10

Blason5        anop
               lda Temp
               cmp #5
               blt Blason1
               sec
               sbc #5
               sta Temp
               inx
               lda #206                 ;blason 5
               sta ScoreStr,x
               jmp Blason5

Blason1        anop
               lda Temp
               beq Blason0
               sec
               sbc #1
               sta Temp
               inx
               lda #207                 ;blason 1
               sta ScoreStr,x
               jmp Blason1

Blason0        anop
               stx ScoreStr
               ldx #10
               ldy #26
               lda #ScoreStr
               sta GSTemp1
               lda #>ScoreStr
               sta GSTemp1+1
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               jsr Texte16

               rts





;---------------------------------------------------------------------
Inc50          anop
               lda <$50
               clc
               adc #1
               bcs Inc51
               sta <$50
               rts
Inc51          anop
               sta <$50
               inc <$51
               rts





;---------------------------------------------------------------------
Inc52          anop
               lda <$52
               clc
               adc #1
               bcs Inc53
               sta <$52
               rts
Inc53          anop
               sta <$52
               inc <$53
               rts





;---------------------------------------------------------------------
InitLevel      anop
               lda #Menu                ;ptr string
               sta GSTemp1
               lda #>Menu
               sta GSTemp1+1

               lda #0                   ;taille a lire
               sta GSTemp2
               lda #$20
               sta GSTemp2+1

               lda #0                   ;buffer mem
               sta GSTemp3
               lda #$40
               sta GSTemp3+1

               jsr LoadFile

               lda #$ff
               sta ScoreTemp

               lda Player
               bne ILpl2
               lda Score1
               sta Score
               lda Score1+1
               sta Score+1
               lda Score1+2
               sta Score+2
               lda Score1+3
               sta Score+3
               lda Vies1
               sta Vies
               lda ELife1
               sta ELife
               lda Level1
               sta Level
               ldx #0
ILpl1Loop      anop
               lda Diams1,x
               sta Diams,x
               inx
               cpx #20
               bne ILpl1Loop

               ldx #12
               ldy #96
               lda #phplayer1
               sta GSTemp1
               lda #>phplayer1
               sta GSTemp1+1
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               jsr Texte16
               jmp IL2

ILPl2          anop
               lda Score2
               sta Score
               lda Score2+1
               sta Score+1
               lda Score2+2
               sta Score+2
               lda Score2+3
               sta Score+3
               lda Vies2
               sta Vies
               lda ELife2
               sta ELife
               lda Level2
               sta Level
               ldx #0
ILpl2Loop      anop
               lda Diams2,x
               sta Diams,x
               inx
               cpx #20
               bne ILpl2Loop

               ldx #12
               ldy #96
               lda #phplayer2
               sta GSTemp1
               lda #>phplayer2
               sta GSTemp1+1
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               jsr Texte16

IL2            anop
               ldx #13
               ldy #115
               lda #phready
               sta GSTemp1
               lda #>phready
               sta GSTemp1+1
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               jsr Texte16

               ldx #0
               lda Level
IL3Loop        anop
               sec
               sbc #5
               bcc IL4
               inx
               inx
               cpx #20
               bne IL3Loop
               ldx #0
               jmp IL3Loop

IL4            anop

               lda LoadTable,x          ;ptr string
               sta GSTemp1
               lda LoadTable+1,x
               sta GSTemp1+1
               lda #0                   ;taille a lire
               sta GSTemp2
               lda #$20
               sta GSTemp2+1
               lda #0                   ;buffer mem
               sta GSTemp3
               lda #$20                 ;hgr1
               sta GSTemp3+1
               jsr LoadFile

               jsr WaitUser

               rts




;---------------------------------------------------------------------
Nettoyage      anop
               ldx #0
               txa
NettoyLoop     anop
               sta Tableau,x
               sta Tableau2,x
               inx
               cpx #9*20
               bne NettoyLoop

               ldx #0
               lda #2
NettoyLoop2    anop
               sta Tableau+(8*20),x
               inx
               cpx #20
               bne NettoyLoop2

               rts




;---------------------------------------------------------------------
ForceAff       anop
               ldx #0
               txa
ForceALoop     anop
               sta Tableau2,x
               inx
               cpx #10*20
               bne ForceALoop

               rts




;---------------------------------------------------------------------
ClrDiams       anop
               lda #5
               ldx #0
ClrDiamsLoop   anop
               sta Diams,x
               inx
               cpx #20*3                ;diams + diams1 + diams2
               bne ClrDiamsLoop
               rts




;---------------------------------------------------------------------
Presentation   anop

               lda #Convers             ;ptr string
               sta GSTemp1
               lda #>Convers
               sta GSTemp1+1

               lda #0                   ;taille a lire
               sta GSTemp2
               lda #$20
               sta GSTemp2+1

               lda #0                   ;buffer mem
               sta GSTemp3
               lda #$40
               sta GSTemp3+1

               jsr LoadFile

               jsr WaitUser

               lda #Presents            ;ptr string
               sta GSTemp1
               lda #>Presents
               sta GSTemp1+1

               lda #0                   ;taille a lire
               sta GSTemp2
               lda #$20
               sta GSTemp2+1

               lda #0                   ;buffer mem
               sta GSTemp3
               lda #$40
               sta GSTemp3+1

               jsr LoadFile

               jsr WaitUser

               lda #1                   ;Hgr2
               jsr ClearHGR

               lda #Menu                ;ptr string
               sta GSTemp1
               lda #>Menu
               sta GSTemp1+1

               lda #0                   ;taille a lire
               sta GSTemp2
               lda #$20
               sta GSTemp2+1

               lda #0                   ;buffer mem
               sta GSTemp3
               lda #$40
               sta GSTemp3+1

               jsr LoadFile

               jsr ChoixnbPlayer
               jsr ChoixLevel
               jsr ChoixMouseJoy
               jsr ChoixTictac

PrepWait       anop
               jsr WaitUser
               cmp #'1'
               bne PW2
               lda nbPlayer
               eor #1
               sta nbPlayer
               jsr ChoixNbPlayer
               jmp PrepWait
PW2            anop
               cmp #'2'
               bne PW3
               lda Level1x
               eor #1
               sta Level1x
               jsr ChoixLevel
               jmp PrepWait
PW3            anop
               cmp #'3'
               bne PW4
               lda vmousejoy
               eor #1
               sta vmousejoy
               jsr ChoixMouseJoy
               jmp PrepWait
PW4            anop
               cmp #'4'
               bne PW5
               lda vtictac
               eor #1
               sta vtictac
               jsr ChoixTictac
               jmp PrepWait
PW5            anop
               cmp #27
               bne PW6
               sec
               rts
PW6            anop
               cmp #0
               beq okPW7
               cmp #' '
               beq okPW7
               cmp #13
               bne PW7
okPW7          anop
               lda #1                   ;hgr2
               jsr ClearHGR
               clc
               rts
PW7            anop
               jmp PrepWait




;---------------------------------------------------------------------
ChoixMouseJoy  anop

               lda vmousejoy
               bne CMJ2

               ldx #8
               ldy #108
               lda #phmouse
               sta GSTemp1
               lda #>phmouse
               sta GSTemp1+1
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               jsr Texte16
               rts

CMJ2           anop
               ldx #8
               ldy #108
               lda #phjoy
               sta GSTemp1
               lda #>phjoy
               sta GSTemp1+1
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               jsr Texte16
               rts




;---------------------------------------------------------------------
ChoixLevel     anop

               lda Level1x
               bne CLV2

               ldx #8
               ldy #91
               lda #phleveleasy
               sta GSTemp1
               lda #>phleveleasy
               sta GSTemp1+1
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               jsr Texte16

               lda #1
               sta Level1
               sta Level2
               rts

CLV2           anop
               ldx #8
               ldy #91
               lda #phlevelhard
               sta GSTemp1
               lda #>phlevelhard
               sta GSTemp1+1
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               jsr Texte16

               lda #50
               sta Level1
               sta Level2
               rts




;---------------------------------------------------------------------
ChoixnbPlayer  anop

               lda nbPlayer
               bne CNP2

               ldx #30
               ldy #75
               lda #phclear
               sta GSTemp1
               lda #>phclear
               sta GSTemp1+1
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               jsr Texte16

               ldx #8
               ldy #75
               lda #phplay1
               sta GSTemp1
               lda #>phplay1
               sta GSTemp1+1
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               jsr Texte16
               rts

CNP2           anop
               ldx #8
               ldy #75
               lda #phplay2
               sta GSTemp1
               lda #>phplay2
               sta GSTemp1+1
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               jsr Texte16
               rts




;---------------------------------------------------------------------
ChoixTictac    anop

               lda vTictac
               bne CTT2

               ldx #30
               ldy #126
               lda #phclear
               sta GSTemp1
               lda #>phclear
               sta GSTemp1+1
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               jsr Texte16

               ldx #8
               ldy #126
               lda #phtictac1
               sta GSTemp1
               lda #>phtictac1
               sta GSTemp1+1
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               jsr Texte16
               rts

CTT2           anop
               ldx #8
               ldy #126
               lda #phtictac2
               sta GSTemp1
               lda #>phtictac2
               sta GSTemp1+1
               lda #0
               sta GSTemp2
               lda #$60
               sta GSTemp2+1
               jsr Texte16
               rts




KeyUp          str 'I i'
KeyLeft        str 'J j'
KeyRight       str 'L l'
KeyDown        str 'K k'
KeyPick        str 'PICK:  Space'
KeyFall        str 'FALL:  Return'
HiVert         ds 1
CalibKey       dc i1'1'
NeedSave       ds 1
nbPlayer       ds 1
vtictac        ds 1
vmousejoy      ds 1
Etalon         ds 1
OkClic         ds 1
Curs1          ds 1
XSour          ds 1
YSour          ds 1
Level1x        ds 1
Level          ds 1
Level1         ds 1
Level2         ds 1
Vies           ds 1
Vies1          ds 1
Vies2          ds 1
ELife          ds 1
ELife1         ds 1
ELife2         ds 1
ScoreTemp      ds 4
Score          ds 4
Score1         ds 4
Score2         ds 4
Player         ds 1
FirstScore     ds 1
Time           ds 2
Multi          ds 1
PileSize       ds 1
Show           ds 1
vexplo         ds 1
nbBalls        ds 1
Reussit        ds 1
AffNumber      ds 1
TicSide        ds 1
Minimum        ds 1
Difficulte     ds 1
vpoum          ds 1
doFall         ds 1
JoyX           dc i1'128'
JoyY           dc i1'128'
AffSpeed       dc i1'40'
StackPtr       ds 1
ScoreStr       ds 20
ShapesLineY    dc i1'42,47,52,57,62,67,72,77,82,87,92,97'
               dc i1'102,107,112,117,122,127,132,137,142,147,152,157'
ShapesLineY2   dc i1'42,42,42,57,57,57,72,72,72,87,87,87'
               dc i1'102,102,102,117,117,117,132,132,132,147,147,147'
ShapeTableY    dc i1'0,0,0,20,20,20,40,40,40,60,60,60'
               dc i1'80,80,80,100,100,100,120,120,120,140,140,140'

Tableau0       anop
               ds 20
Tableau        ds 20*9
Diams          ds 20
Diams1         ds 20
Diams2         ds 20

Tableau20      anop
               ds 20
Tableau2       ds 20*9
DiamsTbl2      ds 20

HexDec         dc h'00010203040506070809101112131415161718192021222324'
               dc h'25262728293031323334353637383940414243444546474849'
               dc h'50515253545556575859606162636465666768697071727374'
               dc h'75767778798081828384858687888990919293949596979899'

phclear        str '  '
phplay1        str '1. 1 PLAYER'
phplay2        str '1. 2 PLAYERS'
phlevelhard    str '2. LEVEL HARD'
phleveleasy    str '2. LEVEL EASY'
phjoy          str '3. KEYBOARD'
phmouse        str '3. JOYSTICK'
phtictac1      str '4. TICTAC ON'
phtictac2      str '4. TICTAC OFF'
phgameover     str 'GAME OVER'
phextralife    str 'EXTRA LIFE'
phbest         str 'ENTER YOUR NAME'
phtolate       str 'SORRY TOO LATE !'
phplayer1      str 'PLAYER 1'
phplayer2      str 'PLAYER 2'
phready        str 'READY !'
name1          str ']]]]]]]]]]'
name2          str ']]]]]]]]]]'
ready          str 'READY !'
phnumber1      str 'RANK  :'
phlevel1       str 'LEVEL :'
phname1        str 'NAME  :'
phscore        str 'SCORE :'
phhi           str 'BEST SCORES'
phpause        str 'PAUSE'

ProDOSstr1     str 'PRODOS ERROR!'
ProDOSstr2     str 'Press a key'
SaveHS         str 'HiScores not saved.'
ErrStr         dc i1'7'
               dc c'Err #'
Err2Str        ds 2

CalibStr1      str 'ADJUST JOY & KEYS'
CalibStr2      str 'Press "ESC" to continue'

WrongCode      str 'WRONG CODE...press any key to quit !'
PassText       str 'Enter password for...'
PassLine       str 'Line:    '
PassRow        str 'Row :    '
CodeX          ds 1
CodeY          ds 1

***************************************
Serie          dc c'.mgb.'
***************************************
Temp           ds 2
Temp1          ds 2
Temp2          ds 2
Temp3          ds 2
Temp4          ds 4
***************************************
               MSB ON

LoadTable      anop
               dc i2'Motif1'
               dc i2'Motif2'
               dc i2'Motif3'
               dc i2'Motif4'
               dc i2'Motif5'
               dc i2'Motif6'
               dc i2'Motif7'
               dc i2'Motif8'
               dc i2'Motif9'
               dc i2'Motif10'

Motif1         str 'PNP.Datas/Ball8'
Motif2         str 'PNP.Datas/Ball2'
Motif3         str 'PNP.Datas/Ball3.5.9'
Motif4         str 'PNP.Datas/Ball4'
Motif5         str 'PNP.Datas/Ball3.5.9'
Motif6         str 'PNP.Datas/Ball6'
Motif7         str 'PNP.Datas/Ball1.7'
Motif8         str 'PNP.Datas/Ball1.7'
Motif9         str 'PNP.Datas/Ball3.5.9'
Motif10        str 'PNP.Datas/Ball10'

Presents       str 'PNP.Datas/Present2'
Menu           str 'PNP.Datas/Menu1'
Car            str 'PNP.Datas/Car'
Convers        str 'PNP.Datas/Convers'
Calib          str 'PNP.Datas/Calib'
vbestFile      str 'PNP.Datas/HiScores'


OpenHS         anop
               dc i1'3'
               dc i2'vbestfile'
               dc i2'IOBuffer'
RefNumHS       ds 1

WriteHS        anop
               dc i1'4'
               ds 1
               dc i2'vbest'
               dc i2'96'
               ds 2

CloseHS        anop
               dc i1'1'
               ds 1


               MSB OFF
****************************************

CursorPict     anop
               dc b'00000000 00000000'
               dc b'00011000 00000000'
               dc b'01111000 00000000'
               dc b'01111000 00000011'
               dc b'01111000 00001111'
               dc b'01111000 00000001'
               dc b'00011000 00000011'
               dc b'00000000 00000110'
               dc b'00000000 00000000'

CursorMask     anop
               dc b'11100111 11111111'
               dc b'10000001 11111111'
               dc b'10000001 11111100'
               dc b'10000001 11110000'
               dc b'10000001 11000000'
               dc b'10000001 11100000'
               dc b'10000001 11110000'
               dc b'10100111 11100000'
               dc b'11111111 11111001'

CursorPict2    anop
               dc b'01111111 01111111'
               dc b'01111111 01111111'
               dc b'00000111 01110000'
               dc b'00000111 01110000'
               dc b'00000111 01110000'
               dc b'00000111 01110000'
               dc b'00000111 01110000'
               dc b'00000111 01110000'
               dc b'00000111 01110000'
               dc b'00000111 01110000'
               dc b'00000111 01110000'
               dc b'00000111 01110000'
               dc b'00000111 01110000'
               dc b'01111111 01111111'
               dc b'01111111 01111111'

CursorMask2    anop
               dc b'10000000 10000000'
               dc b'10000000 10000000'
               dc b'11110000 10000111'
               dc b'11110000 10000111'
               dc b'11110000 10000111'
               dc b'11110000 10000111'
               dc b'11110000 10000111'
               dc b'11110000 10000111'
               dc b'11110000 10000111'
               dc b'11110000 10000111'
               dc b'11110000 10000111'
               dc b'11110000 10000111'
               dc b'11110000 10000111'
               dc b'10000000 10000000'
               dc b'10000000 10000000'

               copy Datas.Src
               copy GameSys.Src


               END

