mirror of
https://github.com/antoinevignau/source.git
synced 2025-01-06 01:31:57 +00:00
2064 lines
25 KiB
ArmAsm
2064 lines
25 KiB
ArmAsm
*
|
||
* La Belle Zohra
|
||
*
|
||
* (c) 1992, FranŤois Coulon
|
||
* (c) 2023, Antoine Vignau & Olivier Zardini
|
||
*
|
||
|
||
mx %00
|
||
|
||
*-----------------------
|
||
|
||
soundctl = $3c ; $c03c
|
||
sounddata = $3d ; $c03d
|
||
soundadrl = $3e ; $c03e
|
||
soundadrh = $3f ; $c03f
|
||
|
||
*-----------------------
|
||
* macros
|
||
*-----------------------
|
||
|
||
@carre mac
|
||
PushLong ]1
|
||
PushWord ]2
|
||
PushWord ]3
|
||
PushWord ]4
|
||
jsr carre
|
||
eom
|
||
|
||
@t mac
|
||
lda ]1
|
||
ldy ]2
|
||
jsr t
|
||
eom
|
||
|
||
@cree_fenetre mac
|
||
lda ]1
|
||
ldx ]2
|
||
jsr cree_fenetre
|
||
eom
|
||
|
||
*-----------------------
|
||
* DATA_ERROR - OK
|
||
*-----------------------
|
||
* data_error
|
||
|
||
data_error pha
|
||
PushLong #pgmSTR1
|
||
PushLong #pgmSTR2
|
||
PushLong #errSTR3
|
||
PushLong #errSTR2
|
||
_TLTextMountVolume
|
||
pla
|
||
sec
|
||
rts
|
||
|
||
*-----------------------
|
||
* LOAD_TEXTE - OK
|
||
*-----------------------
|
||
* load_texte
|
||
|
||
load_texte
|
||
cmp #nombre_objets+1
|
||
bcc lt_1
|
||
rts
|
||
lt_1 cmp #0
|
||
bne lt_2
|
||
brl data_error
|
||
|
||
lt_2 sep #$20
|
||
ora #'0'
|
||
sta pTXT+22
|
||
rep #$20
|
||
|
||
*---
|
||
|
||
lda #pTXT
|
||
sta proOPEN+4 ; filename
|
||
|
||
jsl GSOS
|
||
dw $2010
|
||
adrl proOPEN
|
||
bcs lt_err2
|
||
|
||
lda proOPEN+2
|
||
sta proREAD+2
|
||
sta proCLOSE+2
|
||
|
||
ldy proEOF
|
||
sty proREAD+8
|
||
ldx proEOF+2
|
||
stx proREAD+10
|
||
|
||
pha
|
||
pha
|
||
phx
|
||
phy
|
||
PushWord myID
|
||
PushWord #%11000000_00001100
|
||
PushLong #0
|
||
_NewHandle
|
||
phd
|
||
tsc
|
||
tcd
|
||
lda index
|
||
dec
|
||
asl
|
||
asl
|
||
tax
|
||
lda [3]
|
||
sta ptrTXT1,x
|
||
sta proREAD+4
|
||
ldy #2
|
||
lda [3],y
|
||
sta ptrTXT1+2,x
|
||
sta proREAD+6
|
||
pld
|
||
pla
|
||
pla
|
||
bcs lt_err1
|
||
|
||
jsl GSOS
|
||
dw $2012
|
||
adrl proREAD
|
||
|
||
lt_err1 jsl GSOS
|
||
dw $2014
|
||
adrl proCLOSE
|
||
clc
|
||
lt_err2 rts
|
||
|
||
*-----------------------
|
||
* LOAD_REFERENCE - OK
|
||
*-----------------------
|
||
* load_reference
|
||
|
||
load_reference
|
||
cmp #nombre_objets+1
|
||
bcc lr_1
|
||
rts
|
||
lr_1 cmp #0
|
||
bne lr_2
|
||
brl data_error
|
||
|
||
lr_2 sep #$20
|
||
ora #'0'
|
||
sta pREF+22
|
||
rep #$20
|
||
|
||
*---
|
||
|
||
lda #pREF
|
||
sta proOPEN+4 ; filename
|
||
|
||
jsl GSOS
|
||
dw $2010
|
||
adrl proOPEN
|
||
bcs lr_err2
|
||
|
||
lda proOPEN+2
|
||
sta proREAD+2
|
||
sta proCLOSE+2
|
||
|
||
ldy proEOF
|
||
sty proREAD+8
|
||
ldx proEOF+2
|
||
stx proREAD+10
|
||
|
||
pha
|
||
pha
|
||
phx
|
||
phy
|
||
PushWord myID
|
||
PushWord #%11000000_00001100
|
||
PushLong #0
|
||
_NewHandle
|
||
phd
|
||
tsc
|
||
tcd
|
||
lda index
|
||
dec
|
||
asl
|
||
asl
|
||
tax
|
||
lda [3]
|
||
sta ptrREF1,x
|
||
sta proREAD+4
|
||
ldy #2
|
||
lda [3],y
|
||
sta ptrREF1+2,x
|
||
sta proREAD+6
|
||
pld
|
||
pla
|
||
pla
|
||
bcs lr_err1
|
||
|
||
jsl GSOS
|
||
dw $2012
|
||
adrl proREAD
|
||
|
||
lr_err1 jsl GSOS
|
||
dw $2014
|
||
adrl proCLOSE
|
||
clc
|
||
lr_err2 rts
|
||
|
||
*-----------------------
|
||
* GESTION DES ICONES
|
||
*-----------------------
|
||
|
||
test_icone
|
||
lda #0 ; from 1
|
||
]lp pha
|
||
asl
|
||
asl
|
||
asl
|
||
tax
|
||
lda taskWHERE+2 ; compare le X
|
||
cmp peche_x,x
|
||
bcc icone_ko
|
||
lda peche_xx,x
|
||
cmp taskWHERE+2
|
||
bcc icone_ko
|
||
|
||
lda taskWHERE ; et le Y
|
||
cmp peche_y,x
|
||
bcc icone_ko
|
||
lda peche_yy,x
|
||
cmp taskWHERE
|
||
bcc icone_ko
|
||
|
||
pla ; on a notre ic™ne
|
||
inc
|
||
* sta instruction2
|
||
rts
|
||
|
||
icone_ko
|
||
pla
|
||
inc
|
||
cmp #nombre_objets-1 ; et non plus nombre_icones
|
||
bcc ]lp
|
||
rts
|
||
|
||
*---
|
||
|
||
efface_icone ; X is object
|
||
cpx #0
|
||
beq ei1
|
||
jsr set_icone
|
||
|
||
_HideCursor
|
||
PushLong #iconParamPtr
|
||
_PaintPixels
|
||
_ShowCursor
|
||
ei1 rts
|
||
|
||
*---
|
||
|
||
affiche_icone ; X is object
|
||
cpx #0
|
||
beq ai1
|
||
jsr set_icone
|
||
|
||
_HideCursor
|
||
PushLong #fondParamPtr
|
||
_PaintPixels
|
||
_ShowCursor
|
||
ai1 rts
|
||
|
||
*---
|
||
|
||
set_icone txa
|
||
dec
|
||
asl
|
||
asl
|
||
asl ; because we are 16-bit
|
||
tax
|
||
lda peche_y,x
|
||
sta iconToSourceRect
|
||
sta iconToDestPoint
|
||
lda peche_x,x
|
||
sta iconToSourceRect+2
|
||
sta iconToDestPoint+2
|
||
lda peche_yy,x
|
||
sta iconToSourceRect+4
|
||
lda peche_xx,x
|
||
sta iconToSourceRect+6
|
||
rts
|
||
|
||
*---
|
||
|
||
fondParamPtr
|
||
adrl fondToSourceLocInfo
|
||
adrl iconToDestLocInfo
|
||
adrl iconToSourceRect
|
||
adrl iconToDestPoint
|
||
dw $0000 ; mode copy
|
||
ds 4
|
||
|
||
iconParamPtr
|
||
adrl iconToSourceLocInfo
|
||
adrl iconToDestLocInfo
|
||
adrl iconToSourceRect
|
||
adrl iconToDestPoint
|
||
dw $0000 ; mode copy
|
||
ds 4
|
||
|
||
fondToSourceLocInfo
|
||
dw mode_320 ; mode 320
|
||
ds 4 ; ptrFOND - $0000 on entry, high set after _NewHandle
|
||
dw 160
|
||
dw 0,0,199,319
|
||
|
||
iconToSourceLocInfo
|
||
dw mode_320 ; mode 320
|
||
adrl $8000 ; ptrICON - $8000 on entry, high set after _NewHandle
|
||
dw 160
|
||
dw 0,0,199,319
|
||
|
||
iconToDestLocInfo
|
||
dw mode_320 ; mode 320
|
||
adrl ptrE12000
|
||
dw 160
|
||
dw 0,0,199,319
|
||
|
||
iconToSourceRect
|
||
dw 3,0,109,272
|
||
iconToDestPoint
|
||
dw 3,0
|
||
|
||
*-----------------------
|
||
* GESTION DES OBJETS
|
||
*-----------------------
|
||
|
||
test_objet
|
||
lda #0 ; from 1
|
||
]lp pha
|
||
asl
|
||
asl
|
||
asl
|
||
tax
|
||
lda taskWHERE+2 ; compare le X
|
||
cmp objet_x,x
|
||
bcc objet_ko
|
||
lda objet_xx,x
|
||
cmp taskWHERE+2
|
||
bcc objet_ko
|
||
|
||
lda taskWHERE ; et le Y
|
||
cmp objet_y,x
|
||
bcc objet_ko
|
||
lda objet_yy,x
|
||
cmp taskWHERE
|
||
bcc objet_ko
|
||
|
||
pla ; on a notre ic™ne
|
||
inc
|
||
* sta instruction2
|
||
rts
|
||
|
||
objet_ko
|
||
pla
|
||
inc
|
||
cmp #nombre_objets ; et non plus nombre_objets
|
||
bcc ]lp
|
||
rts
|
||
|
||
*---
|
||
|
||
efface_objet ; X is object
|
||
cpx #0
|
||
beq eo1
|
||
jsr set_objet
|
||
|
||
_HideCursor
|
||
PushLong #iconParamPtr
|
||
_PaintPixels
|
||
_ShowCursor
|
||
eo1 rts
|
||
|
||
*---
|
||
|
||
affiche_objet ; X is object
|
||
cpx #0
|
||
beq ao1
|
||
jsr set_objet
|
||
|
||
_HideCursor
|
||
PushLong #fondParamPtr
|
||
_PaintPixels
|
||
_ShowCursor
|
||
ao1 rts
|
||
|
||
*---
|
||
|
||
set_objet txa
|
||
dec
|
||
asl
|
||
asl
|
||
asl ; because we are 16-bit
|
||
tax
|
||
lda objet_y,x
|
||
sta iconToSourceRect
|
||
sta iconToDestPoint
|
||
lda icon_x,x
|
||
sta iconToSourceRect+2
|
||
sta iconToDestPoint+2
|
||
lda icon_yy,x
|
||
sta iconToSourceRect+4
|
||
lda icon_xx,x
|
||
sta iconToSourceRect+6
|
||
rts
|
||
|
||
*-----------------------
|
||
* set_language
|
||
*-----------------------
|
||
|
||
set_language
|
||
PushWord #0
|
||
PushWord #$29
|
||
_ReadBParam
|
||
pla
|
||
cmp #20
|
||
bcc st_ok
|
||
rts
|
||
|
||
* index
|
||
* TEXTES : +16
|
||
|
||
st_ok jsr st_setit ; try IIgs language
|
||
bcc st_ok99
|
||
|
||
lda #0 ; if not, try EN US
|
||
jsr st_setit
|
||
bcc st_ok99
|
||
|
||
lda #2 ; it not, force FR - It always exists
|
||
jsr st_setit
|
||
st_ok99 rts
|
||
|
||
*---
|
||
|
||
st_setit sta saveLANGUAGE
|
||
asl
|
||
tax
|
||
lda tblLANG,x
|
||
sta pREF+16
|
||
sta pTXT+16
|
||
|
||
lda #pREF ; check file exists
|
||
sta proOPEN+4
|
||
|
||
jsl GSOS
|
||
dw $2010
|
||
adrl proOPEN
|
||
bcs st_setit99
|
||
|
||
lda proOPEN+2
|
||
sta proCLOSE+2
|
||
|
||
jsl GSOS
|
||
dw $2014
|
||
adrl proCLOSE
|
||
|
||
st_setit99 rts
|
||
|
||
*---
|
||
|
||
tblLANG asc 'us' ; 0
|
||
asc 'uk'
|
||
asc 'fr' ; 2
|
||
asc 'nl'
|
||
asc 'es' ; 4
|
||
asc 'it'
|
||
asc 'de' ; 6
|
||
asc 'se'
|
||
asc 'us'
|
||
asc 'ca'
|
||
asc 'nl'
|
||
asc 'he'
|
||
asc 'jp'
|
||
asc 'ar'
|
||
asc 'gr'
|
||
asc 'tr'
|
||
asc 'fi'
|
||
asc 'ta'
|
||
asc 'hi'
|
||
asc 'us' ; 19
|
||
|
||
*-----------------------
|
||
* XX - OK
|
||
*-----------------------
|
||
|
||
xx
|
||
rts
|
||
|
||
*-----------------------
|
||
* MAIN - OK
|
||
*-----------------------
|
||
|
||
main
|
||
rts
|
||
|
||
*-----------------------
|
||
* VIGIL - OK
|
||
*-----------------------
|
||
* vigil(max_x%,max_y%,max_xx%,max_yy%,sauvegarde!)
|
||
|
||
vigil
|
||
rts
|
||
|
||
*-----------------------
|
||
* TEST_FIN - OK
|
||
*-----------------------
|
||
|
||
teste_fin lda paragraphes_lus
|
||
sec
|
||
sbc pointeur_paragraphes
|
||
cmp #1
|
||
bne tf_99
|
||
|
||
jmp the_end
|
||
|
||
tf_99 rts
|
||
|
||
*-----------------------
|
||
* DEMANDE_OBJET
|
||
*-----------------------
|
||
|
||
demande_objet
|
||
ldx #1
|
||
]lp lda reference_peche-1,x
|
||
and #$ff
|
||
cmp #8
|
||
beq do_1
|
||
|
||
lda paragraphe_lu-1,x
|
||
and #$ff
|
||
cmp #FALSE
|
||
bne do_1
|
||
|
||
lda indicateur_paragraphes_prealables-1,x
|
||
and #$ff
|
||
tay
|
||
lda indicateur-1,y
|
||
and #$ff
|
||
cmp #TRUE
|
||
bne do_1
|
||
|
||
lda reference_objet-1,x
|
||
and #$ff
|
||
tay
|
||
sep #$20
|
||
lda #TRUE
|
||
sta icone_objets-1,y
|
||
|
||
do_1 inx
|
||
cpx pointeur_paragraphes
|
||
bcc ]lp
|
||
beq ]lp
|
||
|
||
*-------- Affichage des objets
|
||
|
||
ldx #1
|
||
]lp phx
|
||
lda icone_objets-1,x
|
||
and #$ff
|
||
cmp #TRUE
|
||
bne do_2
|
||
|
||
jsr affiche_objet
|
||
|
||
do_2 plx
|
||
inx
|
||
cpx #nombre_objets
|
||
bcc ]lp
|
||
beq ]lp
|
||
|
||
*-------- Attend un clic
|
||
|
||
|
||
rts
|
||
|
||
*-----------------------
|
||
*
|
||
*-----------------------
|
||
|
||
demande_peche
|
||
rts
|
||
|
||
*-----------------------
|
||
*
|
||
*-----------------------
|
||
|
||
recherche_references
|
||
rts
|
||
|
||
*-----------------------
|
||
*
|
||
*-----------------------
|
||
|
||
affiche_image
|
||
rts
|
||
|
||
*-----------------------
|
||
* SAUVEGARDE - OK
|
||
*-----------------------
|
||
* sauvegarde -> doSAVE
|
||
|
||
sauvegarde
|
||
rts
|
||
|
||
*-----------------------
|
||
* CHARGEMENT - OK
|
||
*-----------------------
|
||
* chargement -> doLOAD
|
||
|
||
chargement
|
||
rts
|
||
|
||
*-----------------------
|
||
* THE_END - OK
|
||
*-----------------------
|
||
* the_end
|
||
|
||
the_end
|
||
@cree_fenetre #9;pointeur_paragraphes
|
||
jsr pre_scrolling
|
||
|
||
PushWord #0
|
||
_ClearScreen
|
||
|
||
lda #TRUE
|
||
sta fgTHEEND
|
||
rts
|
||
|
||
*-----------------------
|
||
* PRE_SCROLLING
|
||
*-----------------------
|
||
* pre_scrolling
|
||
|
||
pre_scrolling
|
||
sep #$20
|
||
ldx paragraphe
|
||
lda #TRUE
|
||
sta paragraphe_lu,x
|
||
rep #$20
|
||
|
||
inc paragraphes_lus
|
||
|
||
* LOGO
|
||
|
||
rts
|
||
|
||
*-----------------------
|
||
*
|
||
*-----------------------
|
||
|
||
scrolling
|
||
rts
|
||
|
||
*-----------------------
|
||
*
|
||
*-----------------------
|
||
|
||
verif
|
||
rts
|
||
|
||
*-----------------------
|
||
* INIT - OK
|
||
*-----------------------
|
||
* init
|
||
|
||
init PushWord #0
|
||
_ClearScreen
|
||
|
||
jsr init_resolution
|
||
jsr mouse_off
|
||
jmp init_routines
|
||
|
||
*-----------------------
|
||
* INIT2 - OK
|
||
*-----------------------
|
||
|
||
init2 jsr init_objets
|
||
jsr init_peches
|
||
jsr init_icones
|
||
jsr init_indicateurs
|
||
jsr init_fenetres
|
||
jsr init_souris
|
||
jsr init_texte
|
||
jsr chargement
|
||
jmp mouse_on
|
||
|
||
*-----------------------
|
||
* INIT_RESOLUTION - OK
|
||
*-----------------------
|
||
|
||
init_resolution
|
||
rts
|
||
|
||
*-----------------------
|
||
* INIT_INDICATEURS - OK
|
||
*-----------------------
|
||
* init_indicateurs
|
||
|
||
init_indicateurs
|
||
sep #$20
|
||
ldx #0
|
||
]lp stz indicateurTEXT,x
|
||
stz indicateur,x
|
||
inx
|
||
cpx #nombre_indicateurs
|
||
bcc ]lp
|
||
|
||
stz pointeur_indicateurs
|
||
|
||
ldx #0
|
||
]lp stz paragraphe_lu,x
|
||
stz indicateur_paragraphes,x
|
||
stz indicateur_paragraphes_prealables,x
|
||
inx
|
||
cpx #nombre_paragraphes
|
||
bcc ]lp
|
||
|
||
ldx #0
|
||
lda #TRUE
|
||
sta indicateur,x
|
||
rep #$20
|
||
rts
|
||
|
||
*-----------------------
|
||
* INIT_OBJETS - OK
|
||
*-----------------------
|
||
* init_objets
|
||
|
||
init_objets
|
||
stz ancien_objet
|
||
rts
|
||
|
||
*-----------------------
|
||
* INIT_PECHES - OK
|
||
*-----------------------
|
||
* init_peches
|
||
|
||
init_peches
|
||
rts
|
||
|
||
*-----------------------
|
||
* INIT_ICONES - OK
|
||
*-----------------------
|
||
* init_icones
|
||
|
||
init_icones
|
||
PushWord #0
|
||
_ClearScreen
|
||
|
||
@loadfile #pFOND;ptrFOND
|
||
@loadfile #pICONES;ptrICONES
|
||
rts
|
||
|
||
*-----------------------
|
||
* INIT_ROUTINES - OK
|
||
*-----------------------
|
||
* init_routines
|
||
|
||
init_routines
|
||
rts
|
||
|
||
*-----------------------
|
||
* INIT_FENETRES - OK
|
||
*-----------------------
|
||
* init_fenetres
|
||
|
||
init_fenetres
|
||
rts
|
||
|
||
*-----------------------
|
||
* INIT_SOURIS - OK
|
||
*-----------------------
|
||
* init_souris
|
||
|
||
init_souris
|
||
PushLong #monCURSEUR
|
||
_SetCursor
|
||
rts
|
||
|
||
*-----------------------
|
||
* DATAS_INIT - OK
|
||
*-----------------------
|
||
* datas_init
|
||
|
||
datas_init
|
||
rts
|
||
|
||
*-----------------------
|
||
* INIT_TEXTE - OK
|
||
*-----------------------
|
||
* init_texte
|
||
|
||
init_texte
|
||
lda #1
|
||
]lp sta index
|
||
|
||
lda index ; fait patienter
|
||
jsr presentation
|
||
lda index ; charge le texte
|
||
jsr load_texte
|
||
lda index ; charge la rŽfŽrence
|
||
jsr load_reference
|
||
|
||
lda #2
|
||
jsr nowWAIT
|
||
|
||
lda index
|
||
inc
|
||
cmp #nombre_objets+1
|
||
bcc ]lp
|
||
rts
|
||
|
||
*-----------------------
|
||
* INIT_INDICATEURS_TEXTE
|
||
*-----------------------
|
||
* init_indicateurs_texte
|
||
|
||
init_indicateurs_texte
|
||
sep #$20
|
||
ldx #0
|
||
]lp stz paragraphe,x
|
||
inx
|
||
cpx #nombre_paragraphes
|
||
bcc ]lp
|
||
rep #$20
|
||
|
||
* paragraphe%(1)=0
|
||
|
||
stz pointeur_paragraphes
|
||
stz paragraphes_lus
|
||
|
||
* LOGO
|
||
|
||
rts
|
||
|
||
*-----------------------
|
||
*
|
||
*-----------------------
|
||
|
||
lookindex
|
||
rts
|
||
|
||
*-----------------------
|
||
* PRESENTATION - OK
|
||
*-----------------------
|
||
* presentation
|
||
* A: numŽro du texte
|
||
|
||
presentation
|
||
cmp #nombre_objets+1
|
||
bcc pr_1
|
||
rts
|
||
pr_1 cmp #0
|
||
beq pr_2
|
||
pha
|
||
|
||
PushWord #0
|
||
_ClearScreen
|
||
|
||
pla
|
||
dec
|
||
asl
|
||
tax
|
||
jsr (tbl_pres,x)
|
||
pr_2 rts
|
||
|
||
*---
|
||
|
||
tbl_pres da pr_case_1
|
||
da pr_case_2
|
||
da pr_case_3
|
||
da pr_case_4
|
||
da pr_case_5
|
||
da pr_case_6
|
||
da pr_case_7
|
||
da pr_case_8
|
||
|
||
*---
|
||
|
||
pr_case_1 @carre #prSTR11;#100;#80;#$0771
|
||
@carre #prSTR12;#100;#120;#$0774
|
||
|
||
PushWord #15
|
||
_SetForeColor
|
||
PushWord #0
|
||
_SetBackColor
|
||
|
||
@t #prSTR13;#21
|
||
@t #prSTR14;#22
|
||
@t #prSTR15;#23
|
||
rts
|
||
|
||
pr_case_2 @carre #prSTR21;#25;#20;#$0437
|
||
rts
|
||
|
||
pr_case_3 @carre #prSTR31;#25;#180;#$0275
|
||
rts
|
||
|
||
pr_case_4 @carre #prSTR41;#100;#0;#$0743
|
||
rts
|
||
|
||
pr_case_5 @carre #prSTR51;#150;#20;#$0743
|
||
@carre #prSTR52;#50;#100;#$0743
|
||
@carre #prSTR53;#70;#180;#$0177
|
||
rts
|
||
|
||
pr_case_6 @carre #prSTR61;#0;#100;#$0607
|
||
@carre #prSTR62;#20;#150;#$0607
|
||
rts
|
||
|
||
pr_case_7 @carre #prSTR71;#0;#99;#$0073
|
||
|
||
PushWord #15
|
||
_SetForeColor
|
||
PushWord #0
|
||
_SetBackColor
|
||
|
||
@t #prSTR72;#20
|
||
@t #prSTR73;#21
|
||
@t #prSTR74;#22
|
||
@t #prSTR75;#23
|
||
rts
|
||
|
||
pr_case_8 @carre #prSTR81;#100;#180;#$0555
|
||
rts
|
||
|
||
*---
|
||
|
||
prSTR11 str 'la belle zohra'
|
||
prSTR12 str '(morceaux de bravoure)'
|
||
prSTR13 str 'fran'8d'ois coulon'
|
||
prSTR14 str 'les logiciels d'27'en face 1992'
|
||
prSTR15 str 'reproduction interdite'
|
||
prSTR21 str 'graphismes faustino ribeiro'
|
||
prSTR31 str 'programmation pascal piat'
|
||
prSTR41 str 'musique erik ecqier'
|
||
prSTR51 str 'un grand merci '88':'
|
||
prSTR52 str 'emmanuel talmy'
|
||
prSTR53 str 'sans qui ce logiciel... etc.'
|
||
prSTR61 str 'miss zohra c'8e'lestibus est habill'8e'e...'
|
||
prSTR62 str '...par aristide aristibus'
|
||
prSTR71 str 8e'crit et r'8e'alis'8e' par fran'8d'ois coulon'
|
||
prSTR72 str 'Version Apple IIgs'
|
||
prSTR73 str 'par'
|
||
prSTR74 str 'Brutal Deluxe Software'
|
||
prSTR75 str 'Antoine Vignau & Olivier Zardini'
|
||
prSTR81 str 88' la famille paspire...'
|
||
|
||
*-----------------------
|
||
* CARRE
|
||
*-----------------------
|
||
* carre(texte$,x%,y%,couleur$)
|
||
* 3,s word : RGB color
|
||
* 5,s word : y
|
||
* 7,s word : x
|
||
* 9,s long : @text
|
||
|
||
* couleur$ est pour le carrŽ
|
||
* le texte est toujours en jaune
|
||
|
||
carre lda 5,s
|
||
sta carreRECT
|
||
clc
|
||
adc #12
|
||
sta carreRECT+4
|
||
lda 7,s
|
||
sta carreRECT+2
|
||
clc
|
||
adc #12
|
||
sta carreRECT+6
|
||
lda 9,s
|
||
sta dpFROM
|
||
lda 11,s
|
||
sta dpFROM+2
|
||
|
||
*--- la couleur du GS
|
||
|
||
lda 3,s ; R
|
||
and #$0f00
|
||
asl
|
||
sta carreRGB
|
||
|
||
lda 3,s ; G
|
||
and #$00f0
|
||
asl
|
||
ora carreRGB
|
||
sta carreRGB
|
||
|
||
lda 3,s ; B
|
||
and #$000f
|
||
asl
|
||
ora carreRGB
|
||
sta carreRGB
|
||
|
||
*--- draw square
|
||
|
||
PushWord #0 ; on met du RGB
|
||
PushWord index
|
||
PushWord carreRGB
|
||
_SetColorEntry
|
||
|
||
ldx index
|
||
lda carreRECT ; la couleur si > 100
|
||
cmp #100+1
|
||
bcs carre_1
|
||
ldx #8 ; le rose sinon
|
||
carre_1 phx
|
||
_SetSolidPenPat
|
||
|
||
lda carreRECT+2
|
||
pha
|
||
lda carreRECT
|
||
pha
|
||
_MoveTo
|
||
|
||
PushLong #carreRECT
|
||
_PaintRect
|
||
|
||
*--- print text in bold typeface
|
||
|
||
pha
|
||
_GetTextFace
|
||
pha
|
||
_GetForeColor
|
||
pha
|
||
_GetBackColor
|
||
|
||
PushWord #%00000000_00000001 ; bold
|
||
_SetTextFace
|
||
PushWord #15
|
||
_SetForeColor
|
||
PushWord #0
|
||
_SetBackColor
|
||
|
||
lda carreRECT+2
|
||
clc
|
||
adc #15
|
||
pha
|
||
lda carreRECT
|
||
clc
|
||
adc #8
|
||
pha
|
||
_MoveTo
|
||
PushLong dpFROM
|
||
_DrawString
|
||
|
||
_SetBackColor
|
||
_SetForeColor
|
||
_SetTextFace ; restore
|
||
|
||
carreEXIT lda 1,s
|
||
plx
|
||
plx
|
||
plx
|
||
plx
|
||
plx
|
||
sta 1,s
|
||
rts
|
||
|
||
*---
|
||
|
||
carreRGB ds 2 ; couleur du carre (4 bits)
|
||
|
||
carreRECT ds 2 ; y0
|
||
ds 2 ; x0
|
||
ds 2 ; y0+12
|
||
ds 2 ; y0+12
|
||
|
||
*-----------------------
|
||
* RAMDISK - OK
|
||
*-----------------------
|
||
|
||
ramdisk
|
||
rts
|
||
|
||
*-----------------------
|
||
*
|
||
*-----------------------
|
||
|
||
shoot_text
|
||
rts
|
||
|
||
*-----------------------
|
||
*
|
||
*-----------------------
|
||
|
||
shoot_ligne
|
||
rts
|
||
|
||
*-----------------------
|
||
* CREE_FENETRE
|
||
*-----------------------
|
||
* cree_fenetre(objet%,paragraphe%)
|
||
* A : objet
|
||
* X : paragraphe
|
||
|
||
cree_fenetre
|
||
rts
|
||
|
||
*-----------------------
|
||
*
|
||
*-----------------------
|
||
* display_text(ligne%,niveau%)
|
||
|
||
display_text
|
||
rts
|
||
|
||
*-----------------------
|
||
* ICE_LOAD - OK
|
||
*-----------------------
|
||
* ice_load(fichier$)
|
||
|
||
ice_load
|
||
rts
|
||
|
||
*-----------------------
|
||
* ICE_DISP - OK
|
||
*-----------------------
|
||
* ice_disp(adresse_image%)
|
||
|
||
ice_disp
|
||
rts
|
||
|
||
*-----------------------
|
||
* PALETTE - OK
|
||
*-----------------------
|
||
* palette(palette$)
|
||
|
||
palette
|
||
rts
|
||
|
||
*-----------------------
|
||
*
|
||
*-----------------------
|
||
|
||
hide_screen
|
||
rts
|
||
|
||
*-----------------------
|
||
*
|
||
*-----------------------
|
||
|
||
show_screen
|
||
rts
|
||
|
||
*-----------------------
|
||
*
|
||
*-----------------------
|
||
|
||
hide_screen2
|
||
rts
|
||
|
||
*-----------------------
|
||
*
|
||
*-----------------------
|
||
|
||
show_screen2
|
||
rts
|
||
|
||
*-----------------------
|
||
* MOUSE_ON - OK
|
||
*-----------------------
|
||
* mouse_on
|
||
|
||
mouse_on
|
||
_ShowCursor
|
||
rts
|
||
|
||
*-----------------------
|
||
* MOUSE_OFF - OK
|
||
*-----------------------
|
||
* mouse_off
|
||
|
||
mouse_off
|
||
_HideCursor
|
||
rts
|
||
|
||
*-----------------------
|
||
* MUSIQUE - OK
|
||
*-----------------------
|
||
* musique
|
||
|
||
musique lda fgSND ; can we play?
|
||
bne mu_1 ; yes
|
||
rts ; no
|
||
|
||
mu_1 jsr init_musique
|
||
|
||
lda #1
|
||
sta i
|
||
|
||
]lp lda i
|
||
jsr rythme
|
||
jsr rythme_joue ; joue le rythme
|
||
lda i
|
||
jsr charge_son
|
||
jsr clavier_sonore
|
||
bcs mu_exit ; si *, on quitte le clavier sonore
|
||
jsr nettoie_musique
|
||
inc i
|
||
lda i
|
||
cmp #5
|
||
bcc ]lp
|
||
beq ]lp
|
||
mu_exit jmp fin_musique
|
||
|
||
*-----------------------
|
||
* NETTOIE_MUSIQUE - OK
|
||
*-----------------------
|
||
* nettoie_musique
|
||
|
||
nettoie_musique
|
||
PushLong haBEAT
|
||
_DisposeHandle
|
||
|
||
lda #0
|
||
]lp pha
|
||
asl
|
||
asl
|
||
tax
|
||
lda haSND1+2,x
|
||
pha
|
||
lda haSND1,x
|
||
pha
|
||
_DisposeHandle
|
||
pla
|
||
inc
|
||
cmp j ; nombre de sons
|
||
bcc ]lp
|
||
rts
|
||
|
||
*-----------------------
|
||
* INIT_MUSIQUE - OK
|
||
*-----------------------
|
||
|
||
init_musique
|
||
sei
|
||
pha
|
||
pha
|
||
PushWord #11
|
||
_GetVector
|
||
PullLong sndVECTOR
|
||
|
||
PushWord #11
|
||
PushLong #sndINTERRUPT
|
||
_SetVector
|
||
cli
|
||
|
||
PushWord #$ffff
|
||
_ClearScreen
|
||
rts
|
||
|
||
*-----------------------
|
||
* RYTHME - OK
|
||
*-----------------------
|
||
* rythme(rythme%)
|
||
|
||
*--- offset to beat number is +22
|
||
|
||
rythme sep #$20
|
||
ora #'0'
|
||
sta pBEAT+22
|
||
rep #$20
|
||
|
||
*---
|
||
|
||
lda #pBEAT
|
||
sta proOPEN+4 ; filename
|
||
|
||
jsl GSOS
|
||
dw $2010
|
||
adrl proOPEN
|
||
bcs ry_err2
|
||
|
||
lda proOPEN+2
|
||
sta proREAD+2
|
||
sta proCLOSE+2
|
||
|
||
ldy proEOF
|
||
sty proREAD+8
|
||
ldx proEOF+2
|
||
stx proREAD+10
|
||
|
||
pha
|
||
pha
|
||
phx
|
||
phy
|
||
PushWord myID
|
||
PushWord #%11000000_00001100
|
||
PushLong #0
|
||
_NewHandle
|
||
phd
|
||
tsc
|
||
tcd
|
||
lda [3]
|
||
sta ptrBEAT
|
||
sta proREAD+4
|
||
ldy #2
|
||
lda [3],y
|
||
sta ptrBEAT+2
|
||
sta proREAD+6
|
||
pld
|
||
pla
|
||
sta haBEAT
|
||
pla
|
||
sta haBEAT+2
|
||
bcs ry_err1
|
||
|
||
jsl GSOS
|
||
dw $2012
|
||
adrl proREAD
|
||
|
||
ry_err1 jsl GSOS
|
||
dw $2014
|
||
adrl proCLOSE
|
||
clc
|
||
ry_err2 rts
|
||
|
||
*-----------------------
|
||
* RYTHME_JOUE - OK
|
||
*-----------------------
|
||
* rythme_joue
|
||
|
||
rythme_joue
|
||
lda ptrBEAT
|
||
sta rj_from+1
|
||
lda ptrBEAT+1
|
||
sta rj_from+2
|
||
lda proEOF
|
||
sta rj_eof+1
|
||
|
||
* 1. on met en RAM son
|
||
|
||
sei
|
||
phd
|
||
lda #$c000
|
||
tcd
|
||
sep #$20
|
||
|
||
ldal $e100ca
|
||
and #%0000_1111
|
||
ora #%0110_0000
|
||
sta soundctl
|
||
|
||
lda #0
|
||
sta soundadrl
|
||
sta soundadrh
|
||
|
||
ldx #0
|
||
rj_from ldal $aabbcc,x
|
||
sta sounddata
|
||
inx
|
||
rj_eof cpx #$ffff
|
||
bcc rj_from
|
||
|
||
* 2. on dŽmarre
|
||
|
||
jsr ensoniq_beat
|
||
|
||
* 3. on sort et Ťa joue
|
||
|
||
rep #$20
|
||
pld
|
||
cli
|
||
rts
|
||
|
||
*-----------------------
|
||
* ENSONIQ_BEAT - OK
|
||
*-----------------------
|
||
* ensoniq_beat
|
||
|
||
mx %10
|
||
|
||
ensoniq_beat
|
||
ldy #0 ; oscillos 0 & 1
|
||
|
||
ldal $e100ca ; volume
|
||
and #%0000_1111
|
||
sta soundctl
|
||
|
||
tya ; frŽquence basse
|
||
sta soundadrl
|
||
lda #217
|
||
sta sounddata
|
||
tya
|
||
ora #$01
|
||
sta soundadrl
|
||
lda #217
|
||
sta sounddata
|
||
|
||
tya ; frŽquence haute
|
||
ora #$20
|
||
sta soundadrl
|
||
lda #0
|
||
sta sounddata
|
||
tya
|
||
ora #$21
|
||
sta soundadrl
|
||
lda #0
|
||
sta sounddata
|
||
|
||
tya ; volume
|
||
ora #$40
|
||
sta soundadrl
|
||
lda #$ff
|
||
sta sounddata
|
||
tya
|
||
ora #$41
|
||
sta soundadrl
|
||
lda #$ff
|
||
sta sounddata
|
||
|
||
tya ; address pointer (at $4000)
|
||
ora #$80
|
||
sta soundadrl
|
||
lda #$40
|
||
sta sounddata
|
||
tya
|
||
ora #$81
|
||
sta soundadrl
|
||
lda #$40
|
||
sta sounddata
|
||
|
||
tya ; waveform table size (32K)
|
||
ora #$c0
|
||
sta soundadrl
|
||
lda #%00111111
|
||
sta sounddata
|
||
tya
|
||
ora #$c1
|
||
sta soundadrl
|
||
lda #%00111111
|
||
sta sounddata
|
||
|
||
tya ; control register
|
||
ora #$a0
|
||
sta soundadrl
|
||
lda #%0000_0000
|
||
sta sounddata
|
||
tya
|
||
ora #$a1
|
||
sta soundadrl
|
||
lda #%0001_1000 ; with interrupt
|
||
sta sounddata
|
||
rts
|
||
|
||
mx %00
|
||
|
||
*-----------------------
|
||
* CHARGE_SON - OK
|
||
*-----------------------
|
||
* charge_son
|
||
|
||
*--- offset to sfxs number is +21
|
||
|
||
charge_son dec
|
||
asl ; pointe sur la table de pointeurs
|
||
tax ; par niveau (1..5)
|
||
lda tblSND,x
|
||
cmp #-1
|
||
bne ch_1
|
||
sec
|
||
rts
|
||
ch_1 sta dpFROM ; pointe sur sndPARTx
|
||
|
||
lda #1 ; on charge tous les sons maintenant
|
||
sta j
|
||
|
||
]lp lda j
|
||
dec
|
||
asl
|
||
tay
|
||
tax
|
||
lda (dpFROM),y
|
||
cmp #-1 ; fin d'une structure
|
||
bne ch_2
|
||
clc
|
||
rts
|
||
ch_2 sta dpTO ; pointe sur l'entrŽe de la structure d'un son
|
||
|
||
lda (dpTO) ; nom du son
|
||
sta pSND+21
|
||
ldy #2
|
||
lda (dpTO),y
|
||
sta tblFREQ,x ; la frŽquence du son
|
||
|
||
lda dpTO
|
||
clc
|
||
adc #4
|
||
sta tblSTR1,x ; on pointe sur la premiŹre string
|
||
sta dpTO
|
||
lda (dpTO)
|
||
and #$ff
|
||
clc
|
||
adc tblSTR1,x
|
||
inc
|
||
sta tblSTR2,x
|
||
|
||
jsr charge_un_son
|
||
|
||
inc j
|
||
bra ]lp
|
||
|
||
*---
|
||
|
||
charge_un_son
|
||
lda #pSND
|
||
sta proOPEN+4 ; filename
|
||
|
||
jsl GSOS
|
||
dw $2010
|
||
adrl proOPEN
|
||
bcs cus_err2
|
||
|
||
lda proOPEN+2
|
||
sta proREAD+2
|
||
sta proCLOSE+2
|
||
|
||
ldy proEOF
|
||
sty proREAD+8
|
||
ldx proEOF+2
|
||
stx proREAD+10
|
||
|
||
pha
|
||
pha
|
||
phx
|
||
phy
|
||
PushWord myID
|
||
PushWord #%11000000_00001100
|
||
PushLong #0
|
||
_NewHandle
|
||
phd
|
||
tsc
|
||
tcd
|
||
|
||
lda j
|
||
dec
|
||
asl
|
||
tay
|
||
asl
|
||
tax
|
||
lda proEOF+1 ; nombre de pages
|
||
sta tblSIZE,y
|
||
|
||
lda [3]
|
||
sta ptrSND1,x
|
||
sta proREAD+4
|
||
ldy #2
|
||
lda [3],y
|
||
sta ptrSND1+2,x
|
||
sta proREAD+6
|
||
pld
|
||
pla
|
||
sta haSND1,x
|
||
pla
|
||
sta haSND1+2,x
|
||
bcs cus_err1
|
||
|
||
jsl GSOS
|
||
dw $2012
|
||
adrl proREAD
|
||
|
||
cus_err1 jsl GSOS
|
||
dw $2014
|
||
adrl proCLOSE
|
||
clc
|
||
cus_err2 rts
|
||
|
||
*-----------------------
|
||
* CLAVIER_SONORE - OK
|
||
*-----------------------
|
||
|
||
clavier_sonore
|
||
pha
|
||
_GetForeColor
|
||
pha
|
||
_GetBackColor
|
||
|
||
PushWord #0
|
||
_SetForeColor
|
||
PushWord #15
|
||
_SetBackColor
|
||
|
||
ldx #0 ; init keyboard
|
||
lda #FALSE
|
||
]lp sta sndKEY,x
|
||
inx
|
||
inx
|
||
cpx #10*2
|
||
bcc ]lp
|
||
|
||
cl_loop pha
|
||
PushWord #%00000000_00001010
|
||
PushLong #taskREC
|
||
_GetNextEvent
|
||
pla
|
||
beq cl_loop
|
||
|
||
lda taskREC ; une touche ?
|
||
cmp #keyDownEvt
|
||
bne cl_loop
|
||
|
||
lda taskMESSAGE ; entre 0 et 9 ?
|
||
cmp #'*'
|
||
beq cl_exit
|
||
cmp #'0'
|
||
bne cl_1
|
||
|
||
cl_0 _SetBackColor
|
||
_SetForeColor
|
||
clc
|
||
rts ; on sort
|
||
|
||
cl_exit _SetBackColor
|
||
_SetForeColor
|
||
sec ; dŽfinitivement
|
||
rts
|
||
|
||
cl_1 cmp #'1'
|
||
bcc cl_loop
|
||
cmp #'9'+1
|
||
bcs cl_loop
|
||
|
||
sec
|
||
sbc #'1'
|
||
cmp j ; dans la limite du nombre de sons
|
||
bcs cl_loop
|
||
|
||
asl ; affiche les cha”nes
|
||
tax
|
||
phx
|
||
lda tblSIZE,x
|
||
sta waveSIZE
|
||
lda tblFREQ,x
|
||
sta waveFREQ
|
||
|
||
txa
|
||
asl
|
||
tay
|
||
lda ptrSND1,y
|
||
sta waveSTART
|
||
lda ptrSND1+2,y
|
||
sta waveSTART+2
|
||
|
||
lda sndKEY,x ; did we press the key?
|
||
cmp #TRUE
|
||
beq cl_2
|
||
lda #TRUE
|
||
sta sndKEY,x
|
||
|
||
lda tblSTR1,x
|
||
ldy #22
|
||
jsr t
|
||
|
||
plx
|
||
lda tblSTR2,x
|
||
ldy #23
|
||
jsr t
|
||
|
||
brl cl_loop ; LOGO
|
||
|
||
cl_2 plx
|
||
brl cl_loop
|
||
|
||
PushWord #%0000_0000_1000_0000 ; play the sound
|
||
_FFStopSound
|
||
|
||
PushWord #$0701
|
||
PushLong #waveSTART
|
||
_FFStartSound
|
||
|
||
brl cl_loop
|
||
|
||
*-----------------------
|
||
* MIX - OK
|
||
*-----------------------
|
||
* mix(numero_son%)
|
||
|
||
mix
|
||
rts
|
||
|
||
*-----------------------
|
||
* STOP_SAMPLE - OK
|
||
*-----------------------
|
||
* stop_sample
|
||
|
||
stop_sample
|
||
rts
|
||
|
||
*-----------------------
|
||
* FIN_MUSIQUE - OK
|
||
*-----------------------
|
||
* fin_musique
|
||
|
||
fin_musique
|
||
sei
|
||
|
||
PushWord #11
|
||
PushLong sndVECTOR
|
||
_SetVector
|
||
|
||
phd
|
||
lda #$c000
|
||
tcd
|
||
sep #$20
|
||
|
||
ldal $e100ca
|
||
and #%0000_1111
|
||
sta soundctl
|
||
|
||
ldx #2 ; boucle 2 fois
|
||
fm_1 ldy #$1f
|
||
]lp tya
|
||
ora #$a0
|
||
sta soundadrl
|
||
lda #$01
|
||
sta sounddata
|
||
dey
|
||
bpl ]lp
|
||
dex
|
||
bne fm_1
|
||
|
||
rep #$20
|
||
pld
|
||
cli
|
||
rts
|
||
|
||
*-----------------------
|
||
* ENSONIQ ROUTINES
|
||
*-----------------------
|
||
|
||
initMUSIC lda #$373
|
||
sta zikPAGE
|
||
lda ptrMUSIC
|
||
sta zikMUSIC
|
||
lda ptrMUSIC+2
|
||
sta zikMUSIC+2
|
||
|
||
sep #$20
|
||
ldal $e100ca
|
||
and #$0f
|
||
stal $e0c03c
|
||
|
||
ldy #$04
|
||
tya
|
||
ora #$00
|
||
stal $e0c03e
|
||
lda #$d1
|
||
stal $e0c03d
|
||
tya
|
||
ora #$01
|
||
stal $e0c03e
|
||
lda #$d1
|
||
stal $e0c03d
|
||
tya
|
||
ora #$20
|
||
stal $e0c03e
|
||
lda #$00
|
||
stal $e0c03d
|
||
tya
|
||
ora #$21
|
||
stal $e0c03e
|
||
lda #0
|
||
stal $e0c03d
|
||
tya
|
||
ora #$40
|
||
stal $e0c03e
|
||
lda #$f0
|
||
stal $e0c03d
|
||
tya
|
||
ora #$41
|
||
stal $e0c03e
|
||
lda #$f0
|
||
stal $e0c03d
|
||
tya
|
||
ora #$80
|
||
stal $e0c03e
|
||
lda #$3e
|
||
stal $e0c03d
|
||
tya
|
||
ora #$81
|
||
stal $e0c03e
|
||
lda #$3f
|
||
stal $e0c03d
|
||
tya
|
||
ora #$c0
|
||
stal $e0c03e
|
||
lda #0
|
||
stal $e0c03d
|
||
tya
|
||
ora #$c1
|
||
stal $e0c03e
|
||
lda #0
|
||
stal $e0c03d
|
||
rep #$20
|
||
lda #1
|
||
sta zikPLAY
|
||
rts
|
||
|
||
*---
|
||
|
||
mx %00
|
||
|
||
sndINTERRUPT
|
||
phb
|
||
phd
|
||
phk
|
||
plb
|
||
|
||
clc
|
||
xce
|
||
rep #$30
|
||
|
||
lda #$c000
|
||
tcd
|
||
|
||
sep #$20
|
||
|
||
]lp lda soundctl
|
||
bmi ]lp
|
||
|
||
ldal $e100ca
|
||
and #%0000_1111
|
||
sta soundctl
|
||
|
||
lda #$e0 ; which oscillo
|
||
sta soundadrl ; has generated
|
||
lda sounddata ; the interrupt?
|
||
lda sounddata
|
||
and #%0011_1110
|
||
lsr
|
||
cmp #1 ; oscillo 1 (liŽ <20> 0)
|
||
beq sndINTERRUPT1
|
||
cmp #5 ; oscillo 5 (liŽ <20> 4)
|
||
beq sndINTERRUPT2
|
||
bne sndINTERRUPT99
|
||
|
||
sndINTERRUPT1
|
||
lda #$a0 ; oscillos 0 & 1
|
||
sta soundadrl
|
||
lda #%0000_0000
|
||
sta sounddata
|
||
lda #$a1
|
||
sta soundadrl
|
||
lda #%0001_1000 ; with interrupt
|
||
sta sounddata
|
||
|
||
sndINTERRUPT99
|
||
sep #$30
|
||
pld
|
||
plb
|
||
clc
|
||
rtl
|
||
|
||
*---
|
||
|
||
mx %10
|
||
|
||
sndINTERRUPT2
|
||
ldal $e100ca
|
||
and #%0000_1111
|
||
ora #%0110_0000
|
||
sta soundctl
|
||
|
||
stz soundadrl
|
||
lda soundadrl
|
||
ora fgPAGE
|
||
eor #1
|
||
sta soundadrh
|
||
|
||
ldy zikMUSIC
|
||
lda zikMUSIC+2
|
||
pha
|
||
plb
|
||
|
||
]move = $00
|
||
lup 256
|
||
lda ]move,y
|
||
sta sounddata
|
||
]move = ]move+1
|
||
--^
|
||
|
||
phk
|
||
plb
|
||
|
||
rep #$20
|
||
|
||
inc zikMUSIC+1
|
||
dec zikPAGE
|
||
bne sndINTERRUPT3
|
||
|
||
* lda whichSND
|
||
* beq sndINTERRUPT21
|
||
*
|
||
* sep #$20
|
||
*
|
||
* ldal $e100ca
|
||
* and #$0f
|
||
* sta soundctl
|
||
*
|
||
* lda #$a4
|
||
* sta soundadrl
|
||
* lda #%0000_0011
|
||
* sta sounddata
|
||
* inc soundadrh
|
||
* lda #%0001_0011
|
||
* sta sounddata
|
||
* bra sndINTERRUPT5
|
||
*
|
||
* mx %00
|
||
|
||
sndINTERRUPT21
|
||
lda waveSIZE
|
||
sta zikPAGE
|
||
lda waveSTART
|
||
sta zikMUSIC
|
||
lda waveSTART+2
|
||
sta zikMUSIC+2
|
||
|
||
sndINTERRUPT3
|
||
sep #$20
|
||
|
||
ldal $e100ca
|
||
and #%0000_1111
|
||
sta soundctl
|
||
|
||
ldy #$04
|
||
|
||
ldx fgPAGE
|
||
bne sndINTERRUPT4
|
||
|
||
tya
|
||
ora #$a0
|
||
sta soundadrl
|
||
lda #%0000_1110
|
||
sta sounddata
|
||
inc soundadrl
|
||
lda #%0001_1111
|
||
sta sounddata
|
||
bra sndINTERRUPT5
|
||
|
||
sndINTERRUPT4
|
||
tya
|
||
ora #$a0
|
||
sta soundadrl
|
||
lda #%0000_1111
|
||
sta sounddata
|
||
inc soundadrl
|
||
lda #%0001_1110
|
||
sta sounddata
|
||
|
||
sndINTERRUPT5
|
||
lda fgPAGE
|
||
eor #1
|
||
sta fgPAGE
|
||
|
||
sep #$30
|
||
pld
|
||
plb
|
||
clc
|
||
rtl
|
||
|
||
mx %00
|
||
|
||
*-----------------------
|
||
* DATA_FICHIERS_MUSIQUE - OK
|
||
*-----------------------
|
||
* data_fichiers_musique
|
||
|
||
data_fichiers_musique
|
||
rts
|
||
|
||
*-----------------------
|
||
* T - OK
|
||
*-----------------------
|
||
* t(ligne%,texte$)
|
||
* A: @texte$
|
||
* Y: ligne%
|
||
|
||
t sty theY
|
||
|
||
PushWord #^t ; pointer to string
|
||
pha
|
||
|
||
PushWord #0 ; get string length
|
||
PushWord #^t
|
||
pha
|
||
_StringWidth ; return left on stack
|
||
|
||
lda #320 ; why 160?
|
||
sec
|
||
sbc 1,s
|
||
bpl t1
|
||
lda #0
|
||
t1 lsr
|
||
sta 1,s ; X
|
||
|
||
lda theY ; pour MoveTo
|
||
asl
|
||
asl
|
||
asl
|
||
pha ; Y
|
||
_MoveTo
|
||
_DrawString
|
||
rts
|
||
|
||
*-----------------------
|
||
* FIN - OK
|
||
*-----------------------
|
||
|
||
fin
|
||
rts
|
||
|
||
*-----------------------
|
||
* MON BEAU CURSEUR
|
||
*-----------------------
|
||
|
||
monCURSEUR
|
||
dw 16,5
|
||
hex FF000000000000000000 ; data
|
||
hex F0F00000000000000000
|
||
hex F00F0000000000000000
|
||
hex F000F000000000000000
|
||
hex F0000F000FFFFF000000
|
||
hex F00000F0F00000F00000
|
||
hex F000000F00FFF00F0000
|
||
hex F0000FFF00F0F00F0000
|
||
hex F0F00F0F00F0F00F0000
|
||
hex FF0F00FF00F0F00F0000
|
||
hex F000F00FFFFFF00F0000
|
||
hex 00000F00000000F00000
|
||
hex 000000FFFFFFFF000000
|
||
hex 0FFFFFFF00F000000000
|
||
hex F00000000F0000000000
|
||
hex 0FFFFFFFF00000000000
|
||
|
||
hex FF000000000000000000 ; mask
|
||
hex FFF00000000000000000
|
||
hex FFFF0000000000000000
|
||
hex FFFFF000000000000000
|
||
hex FFFFFF000FFFFF000000
|
||
hex FFFFFFF0FFFFFFF00000
|
||
hex FFFFFFFFFFFFFFFF0000
|
||
hex FFFFFFFFFFF0FFFF0000
|
||
hex FFFFFF0FFFF0FFFF0000
|
||
hex FF0FFFFFFFF0FFFF0000
|
||
hex F000FFFFFFFFFFFF0000
|
||
hex 00000FFFFFFFFFF00000
|
||
hex 000000FFFFFFFF000000
|
||
hex 0FFFFFFFFFF000000000
|
||
hex FFFFFFFFFF0000000000
|
||
hex 0FFFFFFFF00000000000
|
||
|
||
dw 1,1
|
||
|
||
*--- The end
|