mirror of
https://github.com/antoinevignau/source.git
synced 2025-01-02 06:30:17 +00:00
2031 lines
50 KiB
ArmAsm
2031 lines
50 KiB
ArmAsm
;...............................................................
|
|
;
|
|
; FILE : SHOWSELECT.S - SELECTION D'UN OBJET -
|
|
; ------------
|
|
;...............................................................
|
|
;...............................................................
|
|
;
|
|
; Click_Select : Select OBJET
|
|
;
|
|
;...............................................................
|
|
Click_Select START
|
|
Using GlobalData
|
|
|
|
jsr sauve_buffer |et oui
|
|
|
|
jsr Selection |Selection d'une Shape, Ligne ETC...
|
|
bcs ok
|
|
|
|
jsr Un_Select |UnSelect Object
|
|
|
|
jsr Select_Group |Selection Groupee
|
|
|
|
ok jsr Menu_On_Off |change les Menus si selection
|
|
|
|
rts
|
|
|
|
END
|
|
;...............................................................
|
|
;
|
|
; un_select : efface cadre de selection
|
|
;
|
|
;...............................................................
|
|
Un_Select START
|
|
Using GlobalData
|
|
;--
|
|
lda Top_Select_D |une Drag
|
|
beq S0
|
|
jsr Draw_DragE |efface la selection
|
|
stz Top_Select_D
|
|
;--
|
|
S0 lda Nb_List_Select
|
|
bne Loop
|
|
rts
|
|
;--
|
|
Loop pha
|
|
asl a
|
|
tay
|
|
lda List_Record,y
|
|
jsr DeSelection
|
|
pla
|
|
dec a
|
|
bne Loop
|
|
;--
|
|
stz Nb_List_Select
|
|
|
|
rts
|
|
;----------
|
|
DeSelection pha
|
|
and #$FF00
|
|
xba
|
|
beq DeSelect_Line
|
|
cmp #1
|
|
beq DeSelect_Shape
|
|
cmp #2
|
|
beq Deselect_Icon
|
|
cmp #3
|
|
beq Deselect_Number
|
|
cmp #4
|
|
beq Deselect_Graph
|
|
cmp #5
|
|
beq Deselect_Sticker
|
|
pla
|
|
rts
|
|
;--
|
|
DeSelect_Line ANOP
|
|
pla
|
|
and #$00FF
|
|
sta zligne
|
|
jsr cal_rect2 |taille du rect
|
|
jsr draw_rect2 |effacons
|
|
bra FIN
|
|
;--
|
|
DeSelect_Shape ANOP
|
|
pla
|
|
and #$00FF
|
|
jsr Eor_poignees |Selection
|
|
bra FIN
|
|
;--
|
|
Deselect_Icon ANOP
|
|
pla
|
|
and #$00FF
|
|
jsr Rest_Icon
|
|
jsr Cal_RectIcon
|
|
jsr Draw_RectIcon
|
|
bra Fin
|
|
;--
|
|
Deselect_Sticker ANOP
|
|
pla
|
|
and #$00FF
|
|
jsr Rest_Sticker
|
|
jsr Cal_RectSticker
|
|
jsr Draw_RectSticker
|
|
bra Fin
|
|
;--
|
|
Deselect_Number ANOP
|
|
pla
|
|
bra Fin
|
|
;--
|
|
Deselect_Graph ANOP
|
|
pla
|
|
and #$00FF
|
|
jsr Rest_graph
|
|
jsr Draw_RectGraph
|
|
bra fin
|
|
;--
|
|
FIN lda #$ffff |raz
|
|
sta Line_Select
|
|
sta Shape_Select
|
|
sta Icon_Select
|
|
sta Graph_Select
|
|
sta Sticker_Select
|
|
|
|
rts
|
|
|
|
END
|
|
;...............................................................
|
|
;
|
|
; Select : affiche cadre de selection d'un OBJET
|
|
;
|
|
;...............................................................
|
|
Select_Line START
|
|
Using GlobalData
|
|
|
|
lda zligne |Un_Select si besoin
|
|
sta Line_Select
|
|
sta cou_ligne
|
|
jsr rest_buffer
|
|
|
|
jsr cal_rect2
|
|
|
|
jsr draw_rect2
|
|
|
|
no rts
|
|
|
|
END
|
|
;...............................................................
|
|
;
|
|
; Re_Select : affiche cadre de selection en cas de refresh
|
|
;
|
|
;...............................................................
|
|
Re_Select START
|
|
Using GlobalData
|
|
|
|
jsr Select_groupe
|
|
|
|
lda Top_select_D
|
|
beq no
|
|
jsr Draw_DragE
|
|
;--
|
|
no rts
|
|
|
|
END
|
|
;...............................................................
|
|
;
|
|
; Select_Group : Selection de plusieurs ELEMENTS
|
|
;
|
|
;...............................................................
|
|
Select_Group START
|
|
Using GlobalData
|
|
;--
|
|
stz Nb_List_Select |pas de groupe
|
|
;--
|
|
lda MouseX |CLICK ICI
|
|
sta X_ORG
|
|
sta Anc_X
|
|
lda MouseY
|
|
sta Y_ORG
|
|
sta Anc_Y
|
|
;--
|
|
stz Top_Draw |Efface ou Non
|
|
;--
|
|
Loop PushLong #0
|
|
_StillDown
|
|
pla
|
|
beq Relache
|
|
|
|
PushLong #EventWhere |Quel Position ?
|
|
_GetMouse
|
|
|
|
lda Mousey |BOUGER ?
|
|
cmp Anc_Y
|
|
bne Bouge
|
|
lda Mousex
|
|
cmp Anc_X
|
|
beq Loop
|
|
;--
|
|
Bouge lda Top_Draw
|
|
bne CaBouge
|
|
inc Top_Draw
|
|
bra SUITE
|
|
|
|
Cabouge jsr XOR_RectGroup |EffACE en XOR
|
|
;--
|
|
SUITE lda MouseX
|
|
sta Anc_X
|
|
lda MouseY
|
|
sta Anc_Y
|
|
|
|
jsr XOR_RectGroup |AFFICHE en XOR
|
|
|
|
bra Loop
|
|
;--
|
|
Relache lda Top_draw |a t'on BOUGE ?
|
|
beq fin
|
|
|
|
jsr Xor_RectGroup |Efface Forme
|
|
|
|
jsr Object_Select |liste des objets select
|
|
|
|
fin jsr Select_Groupe |Selection de GROUPE
|
|
;--
|
|
rts
|
|
|
|
END
|
|
;...............................................................
|
|
;
|
|
; Xor_RectGroup : Dessine Cadre SELECTION GROUPEE
|
|
;
|
|
;...............................................................
|
|
Xor_RectGroup START
|
|
Using GlobalData
|
|
|
|
lda X_ORG
|
|
sta Rect_SelectX0
|
|
lda Anc_X
|
|
sta Rect_SelectX1
|
|
|
|
lda Y_ORG
|
|
sta Rect_SelectY0
|
|
lda Anc_Y
|
|
sta Rect_SelectY1
|
|
;-- |CADRAGE
|
|
lda Rect_SelectX0
|
|
cmp Rect_SelectX1
|
|
bcc ok
|
|
|
|
ldx Rect_SelectX1
|
|
sta Rect_SelectX1
|
|
stx Rect_SelectX0
|
|
|
|
ok lda Rect_SelectY0
|
|
cmp Rect_SelectY1
|
|
bcc okok
|
|
|
|
ldx Rect_SelectY1
|
|
sta Rect_selectY1
|
|
stx Rect_selectY0
|
|
;--
|
|
okok PushLong #Pat1 |Pattern
|
|
_SetPenPat
|
|
|
|
PushWord #2 |Xor
|
|
_SetPenMode
|
|
|
|
PushLong #Rect_Select
|
|
_FrameRect
|
|
|
|
PushWord #0 |Retablir MODE COPY
|
|
_SetPenMode
|
|
|
|
rts
|
|
|
|
END
|
|
;...............................................................
|
|
;
|
|
; Object_Select : Determine les objets SELECTIONNES
|
|
;
|
|
;...............................................................
|
|
Object_select START
|
|
Using GlobalData
|
|
|
|
stz Top_Draw |Flag
|
|
stz Nb_List_Select |raz compteur
|
|
|
|
jsr Group_Number |Frame Number
|
|
|
|
jsr Group_Text |Les Lignes de TEXTE
|
|
|
|
jsr Group_Icon |Les Icons
|
|
|
|
jsr Group_Sticker |Les Stickers
|
|
|
|
jsr Group_Graph |les Graphs
|
|
|
|
jsr Group_Shape |Les Shapes
|
|
|
|
rts
|
|
;--------------------------------------
|
|
; Group_Number
|
|
;--------------------------------------
|
|
Group_Number ENTRY
|
|
|
|
lda Status_Number
|
|
bne ok
|
|
rts
|
|
;--
|
|
ok PushWord #0 |Inside
|
|
PushLong #Rect_Select
|
|
PushLong #NumberRect
|
|
PushLong #Rect_Result
|
|
_SectRect
|
|
pla
|
|
beq LasuiteN
|
|
;--
|
|
PushWord #0
|
|
PushLong #NumberRect
|
|
PushLong #Rect_Result
|
|
_EqualRect
|
|
pla
|
|
bne InsideN
|
|
;--
|
|
LaSuiteN rts
|
|
;--
|
|
InsideN ANOP
|
|
jsr Plus_One_Select |inc Nb_List_Select
|
|
bcs LasuiteN
|
|
;--
|
|
lda #$0300
|
|
tax
|
|
lda Nb_List_Select |et on stocke
|
|
asl a
|
|
tay
|
|
txa
|
|
sta List_record,y
|
|
;--
|
|
inc Top_Draw
|
|
;--
|
|
PushLong #Rect_SelectF
|
|
PushLong #NumberRect
|
|
PushLong #Rect_SelectF
|
|
_UnionRect
|
|
;--
|
|
rts
|
|
;--------------------------------------
|
|
; Group_Text
|
|
;--------------------------------------
|
|
Group_Text ENTRY
|
|
|
|
lda Frame_Line
|
|
bne ouiL
|
|
rts
|
|
;--
|
|
ouiL lda Frame_Line |LA Neme Line texte
|
|
dec a
|
|
|
|
LOOPL pha |Met la Shape dans RECORD
|
|
sta cou_ligne
|
|
sta zligne
|
|
jsr Rest_buffer
|
|
;--
|
|
jsr cal_Rect2
|
|
;--
|
|
PushWord #0 |Inside
|
|
PushLong #Rect_Select
|
|
PushLong #Rect2
|
|
PushLong #Rect_Result
|
|
_SectRect
|
|
pla
|
|
beq Lasuitel
|
|
;--
|
|
PushWord #0
|
|
PushLong #Rect2
|
|
PushLong #Rect_Result
|
|
_EqualRect
|
|
pla
|
|
bne InsideL
|
|
;--
|
|
LaSuiteL pla |SUIVANT
|
|
dec a
|
|
bpl LOOPL
|
|
rts
|
|
;--
|
|
InsideL jsr Plus_One_Select |inc Nb_List_Select
|
|
bcs LasuiteL
|
|
lda 1,s |shape select
|
|
and #$00FF |c'est une shape
|
|
tax
|
|
lda Nb_List_Select |et on stocke
|
|
asl a
|
|
tay
|
|
txa
|
|
sta List_record,y
|
|
;--
|
|
lda Top_Draw |rectangle de TOUR
|
|
bne SauteL
|
|
|
|
inc Top_Draw
|
|
|
|
PushLong #Rect2
|
|
bra Saute1L
|
|
;--
|
|
SauteL PushLong #Rect_SelectF
|
|
Saute1L PushLong #Rect2
|
|
PushLong #Rect_SelectF
|
|
_UnionRect
|
|
;--
|
|
brl LaSuiteL
|
|
|
|
rts
|
|
;--------------------------------------
|
|
; Group_Shape
|
|
;--------------------------------------
|
|
Group_Shape ENTRY
|
|
|
|
lda Frame_Shape |DES SHAPES ?
|
|
bne ouiS
|
|
rts
|
|
;--
|
|
ouiS lda Frame_Shape |LA Neme SHAPE GEO
|
|
|
|
LOOPS pha |Met la Shape dans RECORD
|
|
jsr Rest_Shape
|
|
;--
|
|
lda Shape_Type |si Ligne -13
|
|
bne LOOPS0
|
|
;--
|
|
PushLong #Shape_Rect
|
|
PushWord #12
|
|
PushWord #12
|
|
_InSetRect
|
|
;--
|
|
LOOPS0 PushWord #0 |Inside
|
|
PushLong #Rect_Select
|
|
PushLong #Shape_Rect
|
|
PushLong #Rect_Result
|
|
_SectRect
|
|
pla
|
|
beq LaSuiteS
|
|
;--
|
|
PushWord #0
|
|
PushLong #Shape_Rect
|
|
PushLong #Rect_Result
|
|
_EqualRect
|
|
pla
|
|
bne InsideS
|
|
;--
|
|
LaSuiteS pla |SUIVANT
|
|
dec a
|
|
bne LOOPS
|
|
rts
|
|
;--
|
|
InsideS jsr Plus_One_Select |inc Nb_List_Select
|
|
bcs LaSuiteS
|
|
lda 1,s |shape select
|
|
and #$00FF |c'est une shape
|
|
ora #$0100
|
|
tax
|
|
lda Nb_List_Select |et on stocke
|
|
asl a
|
|
tay
|
|
txa
|
|
sta List_record,y
|
|
;--
|
|
lda Shape_Type
|
|
bne InsideS0
|
|
PushLong #Shape_Rect
|
|
PushWord #-12
|
|
PushWord #-12
|
|
_InSetRect
|
|
;--
|
|
InsideS0 lda Top_Draw |rectangle de TOUR
|
|
bne SauteS
|
|
|
|
inc Top_Draw
|
|
|
|
PushLong #Shape_Rect
|
|
bra Saute1S
|
|
;--
|
|
SauteS PushLong #Rect_SelectF
|
|
Saute1S PushLong #Shape_Rect
|
|
PushLong #Rect_SelectF
|
|
_UnionRect
|
|
;--
|
|
brl LaSuiteS
|
|
|
|
rts
|
|
;--------------------------------------
|
|
; Group_Graph
|
|
;--------------------------------------
|
|
Group_Graph ENTRY
|
|
|
|
lda Frame_Graph |DES GraphS ?
|
|
bne ouiG
|
|
rts
|
|
;--
|
|
ouiG lda Frame_Graph |LE Neme Graph
|
|
|
|
LOOPG pha |Met la Graph dans RECORD
|
|
jsr Rest_Graph
|
|
;--
|
|
PushWord #0 |Inside
|
|
PushLong #Rect_Select
|
|
PushLong #GraphRect
|
|
PushLong #Rect_Result
|
|
_SectRect
|
|
pla
|
|
beq LaSuiteG
|
|
;--
|
|
PushWord #0
|
|
PushLong #GraphRect
|
|
PushLong #Rect_Result
|
|
_EqualRect
|
|
pla
|
|
bne InsideG
|
|
;--
|
|
LaSuiteG pla |SUIVANT
|
|
dec a
|
|
bne LOOPG
|
|
rts
|
|
;--
|
|
InsideG jsr Plus_One_Select |inc Nb_List_Select
|
|
bcs LaSuiteG
|
|
lda 1,s |Graph select
|
|
and #$00FF |c'est un Graph
|
|
ora #$0400
|
|
tax
|
|
lda Nb_List_Select |et on stocke
|
|
asl a
|
|
tay
|
|
txa
|
|
sta List_record,y
|
|
;--
|
|
lda Top_Draw |rectangle de TOUR
|
|
bne SauteG
|
|
|
|
inc Top_Draw
|
|
|
|
PushLong #GraphRect
|
|
bra Saute1G
|
|
;--
|
|
SauteG PushLong #Rect_SelectF
|
|
Saute1G PushLong #GraphRect
|
|
PushLong #Rect_SelectF
|
|
_UnionRect
|
|
;--
|
|
brl LaSuiteG
|
|
|
|
rts
|
|
;--------------------------------------
|
|
; Group_Icon
|
|
;--------------------------------------
|
|
Group_Icon ENTRY
|
|
|
|
lda Frame_Icon |DES SHAPES ?
|
|
bne ouiI
|
|
rts
|
|
;--
|
|
ouiI lda Frame_Icon |LA Neme SHAPE GEO
|
|
|
|
LOOPI pha |Met la Shape dans RECORD
|
|
jsr Rest_Icon
|
|
jsr Cal_RectIcon
|
|
;--
|
|
PushWord #0 |Inside
|
|
PushLong #Rect_Select
|
|
PushLong #Rect_Icone
|
|
PushLong #Rect_Result
|
|
_SectRect
|
|
pla
|
|
beq LaSuiteI
|
|
;--
|
|
PushWord #0
|
|
PushLong #Rect_Icone
|
|
PushLong #Rect_Result
|
|
_EqualRect
|
|
pla
|
|
bne InsideI
|
|
;--
|
|
LaSuiteI pla |SUIVANT
|
|
dec a
|
|
bne LOOPI
|
|
rts
|
|
;--
|
|
InsideI jsr Plus_One_Select |inc Nb_List_Select
|
|
bcs LasuiteI
|
|
lda 1,s |shape select
|
|
and #$00FF |c'est une shape
|
|
ora #$0200
|
|
tax
|
|
lda Nb_List_Select |et on stocke
|
|
asl a
|
|
tay
|
|
txa
|
|
sta List_record,y
|
|
;--
|
|
lda Top_Draw |rectangle de TOUR
|
|
bne SauteI
|
|
|
|
inc Top_Draw
|
|
|
|
PushLong #Rect_Icone
|
|
bra Saute1I
|
|
;--
|
|
SauteI PushLong #Rect_SelectF
|
|
Saute1I PushLong #Rect_Icone
|
|
PushLong #Rect_SelectF
|
|
_UnionRect
|
|
;--
|
|
brl LaSuiteI
|
|
|
|
rts
|
|
;--------------------------------------
|
|
; Group_Sticker
|
|
;--------------------------------------
|
|
Group_Sticker ENTRY
|
|
|
|
lda Frame_Sticker |DES Stickers ?
|
|
bne ouiK
|
|
rts
|
|
;--
|
|
ouiK lda Frame_Sticker |LA Neme SHAPE GEO
|
|
|
|
LOOPK pha |Met la Shape dans RECORD
|
|
jsr Rest_Sticker
|
|
jsr Cal_RectSticker
|
|
;--
|
|
PushWord #0 |Inside
|
|
PushLong #Rect_Select
|
|
PushLong #Rect_Stick
|
|
PushLong #Rect_Result
|
|
_SectRect
|
|
pla
|
|
beq LaSuiteK
|
|
;--
|
|
PushWord #0
|
|
PushLong #Rect_Stick
|
|
PushLong #Rect_Result
|
|
_EqualRect
|
|
pla
|
|
bne InsideK
|
|
;--
|
|
LaSuiteK pla |SUIVANT
|
|
dec a
|
|
bne LOOPK
|
|
rts
|
|
;--
|
|
InsideK jsr Plus_One_Select |inc Nb_List_Select
|
|
bcs LaSuiteK
|
|
lda 1,s |shape select
|
|
and #$00FF |c'est une shape
|
|
ora #$0500
|
|
tax
|
|
lda Nb_List_Select |et on stocke
|
|
asl a
|
|
tay
|
|
txa
|
|
sta List_record,y
|
|
;--
|
|
lda Top_Draw |rectangle de TOUR
|
|
bne SauteK
|
|
|
|
inc Top_Draw
|
|
|
|
PushLong #Rect_Stick
|
|
bra Saute1K
|
|
;--
|
|
SauteK PushLong #Rect_SelectF
|
|
Saute1K PushLong #Rect_Stick
|
|
PushLong #Rect_SelectF
|
|
_UnionRect
|
|
;--
|
|
brl LaSuiteK
|
|
|
|
rts
|
|
;--------------------------------------
|
|
; Plus_One_Select
|
|
;--------------------------------------
|
|
Plus_One_Select ENTRY
|
|
|
|
lda Nb_List_Select
|
|
cmp #100
|
|
bcs FP_O_S
|
|
inc Nb_List_Select
|
|
FP_O_S rts
|
|
|
|
END
|
|
;...............................................................
|
|
;
|
|
; Select_Groupe : PLUSIEURS OBJET ON
|
|
;
|
|
;...............................................................
|
|
Select_Groupe START
|
|
Using GlobalData
|
|
|
|
lda Nb_List_Select
|
|
bne ok
|
|
rts
|
|
|
|
ok lda Nb_List_Select
|
|
;--
|
|
Loop Pha
|
|
asl a
|
|
tay
|
|
;--
|
|
lda List_Record,y
|
|
pha
|
|
and #$FF00
|
|
xba
|
|
beq LineOn
|
|
cmp #1
|
|
beq ShapeOn
|
|
cmp #2
|
|
beq IconOn
|
|
cmp #4
|
|
beq GraphOn
|
|
cmp #5
|
|
beq StickerOn
|
|
pla
|
|
bra suite
|
|
;--
|
|
LineOn pla
|
|
and #$00FF
|
|
sta zligne
|
|
jsr Cal_Rect2
|
|
jsr Draw_Rect2
|
|
bra suite
|
|
;--
|
|
ShapeOn pla
|
|
and #$00FF
|
|
jsr Eor_poignees |Selection
|
|
bra suite
|
|
;--
|
|
IconOn pla
|
|
and #$00FF
|
|
jsr Rest_Icon
|
|
jsr Cal_RectIcon
|
|
jsr Draw_RectIcon
|
|
bra suite
|
|
;--
|
|
GraphOn pla
|
|
and #$00FF
|
|
jsr Rest_Graph
|
|
jsr Draw_RectGraph
|
|
bra suite
|
|
;--
|
|
StickerOn pla
|
|
and #$00FF
|
|
jsr Rest_Sticker
|
|
jsr Cal_RectSticker
|
|
jsr Draw_RectSticker
|
|
;--
|
|
suite pla
|
|
dec a
|
|
bne Loop
|
|
|
|
rts
|
|
|
|
END
|
|
;...............................................................
|
|
;
|
|
; Move_Object: DEPLACE UN OBJET et GROUPE SELECT
|
|
;
|
|
;...............................................................
|
|
Move_OBJECT START
|
|
Using GlobalData
|
|
;--
|
|
jsr Set_Rect_Move |Rectangle de l'objet
|
|
;--
|
|
jsr Cop_rgn0_Shape
|
|
jsr Copy_rect_Undo |pour le undo
|
|
;--
|
|
lda MouseX |ORIGINE DU CLICK
|
|
sta Anc_X
|
|
sta X_ORG
|
|
lda MouseY
|
|
sta Anc_Y
|
|
sta Y_ORG
|
|
;--
|
|
jsr INV_FANTOME |inverse Fantome
|
|
|
|
stz Top_draw
|
|
;--
|
|
Loop PushLong #0
|
|
_StillDown
|
|
pla
|
|
bne Appuie
|
|
brl relache
|
|
;--
|
|
Appuie PushLong #EventWhere |Quel Position ?
|
|
_GetMouse
|
|
|
|
lda MouseY |BOUGER ?
|
|
cmp Anc_Y
|
|
bne Bouge
|
|
lda MouseX
|
|
cmp Anc_X
|
|
beq Loop
|
|
;--
|
|
Bouge lda #1
|
|
sta Top_draw
|
|
;--
|
|
lda MouseY
|
|
sec
|
|
sbc Anc_Y
|
|
sta Delta_Y
|
|
|
|
lda MouseX
|
|
sec
|
|
sbc Anc_X
|
|
sta Delta_X
|
|
;--
|
|
jsr Out_Page |test si Cadre selection Inside Page
|
|
;--
|
|
lda MouseY |BOUGER ?
|
|
cmp Anc_Y
|
|
bne Bouge1
|
|
lda MouseX
|
|
cmp Anc_X
|
|
beq Loop
|
|
;--
|
|
Bouge1 jsr INV_FANTOME |EFFACE
|
|
;--
|
|
lda MouseX
|
|
sta Anc_X
|
|
lda MouseY
|
|
sta Anc_Y
|
|
;--
|
|
PushLong #Rect_SelectF
|
|
PushWord Delta_X
|
|
PushWord Delta_Y
|
|
_OffSetRect
|
|
;--
|
|
PushLong #Shape_Debut
|
|
PushWord Delta_X
|
|
PushWord Delta_Y
|
|
_OffSetRect
|
|
|
|
PushLong #RectShape
|
|
PushWord Delta_X
|
|
PushWord Delta_Y
|
|
_OffSetRect
|
|
;--
|
|
jsr INV_FANTOME |AFFICHE en XOR
|
|
|
|
brl Loop
|
|
;--
|
|
Relache ANOP
|
|
jsr INV_FANTOME |efface cadre selection
|
|
|
|
lda Top_draw |a t'on BOUGE ?
|
|
bne fin01
|
|
;--
|
|
jsr Del_Undo
|
|
bra fin
|
|
;--
|
|
fin01 jsr MAJ_MOVE |REPERCUTE LE DEPLACEMENT
|
|
;--
|
|
fin jsr Cop_rgn1_Shape
|
|
jsr Aff_shapeS |REFRESH FENETRE
|
|
;--
|
|
rts
|
|
;--
|
|
END
|
|
;...............................................................
|
|
;
|
|
; Out_Page : Test if Rect in PAGE For Selection
|
|
;
|
|
;...............................................................
|
|
Out_Page START
|
|
Using GlobalData
|
|
;--
|
|
lda Nb_List_Select |Plus d'un Objet ?
|
|
cmp #2
|
|
bcs ok
|
|
rts
|
|
;--
|
|
ok Ldy #6
|
|
|
|
ROut_Page lda Rect_SelectF,y
|
|
sta Rect_Travail,y
|
|
dey
|
|
dey
|
|
bpl ROut_Page
|
|
;--
|
|
PushLong #Rect_Travail
|
|
PushWord Delta_X
|
|
PushWord Delta_Y
|
|
_OffSetRect
|
|
;--
|
|
PushWord #0
|
|
PushLong #Rect_Travail
|
|
PushLong #FullRect
|
|
PushLong #Rect_Result
|
|
_SectRect
|
|
pla
|
|
beq Out_Cadre
|
|
;--
|
|
PushWord #0
|
|
PushLong #Rect_Result
|
|
PushLong #Rect_Travail
|
|
_EqualRect
|
|
pla
|
|
bne EgalOk
|
|
;--
|
|
Out_cadre ANOP
|
|
|
|
Trt_X0 lda Rect_Travail+2
|
|
bpl Trt_X1
|
|
Eor #$FFFF
|
|
inc a
|
|
clc
|
|
adc MouseX
|
|
sta MouseX
|
|
bra Trt_Y0
|
|
;-
|
|
Trt_X1 lda Rect_Travail+6
|
|
cmp #321
|
|
bcc Trt_Y0
|
|
sec
|
|
sbc #320
|
|
sta Variable
|
|
lda MouseX
|
|
sec
|
|
sbc Variable
|
|
sta MouseX
|
|
;--
|
|
Trt_Y0 lda Rect_Travail
|
|
bpl Trt_Y1
|
|
eor #$FFFF
|
|
inc a
|
|
clc
|
|
adc MouseY
|
|
sta MouseY
|
|
bra DiffKo
|
|
;-
|
|
Trt_Y1 lda Rect_Travail+4
|
|
cmp #201
|
|
bcc DiffKo
|
|
sec
|
|
sbc #200
|
|
sta Variable
|
|
lda MouseY
|
|
sec
|
|
sbc Variable
|
|
sta MouseY
|
|
;--
|
|
DiffKo ANOP
|
|
lda MouseY
|
|
sec
|
|
sbc Anc_Y
|
|
sta Delta_Y
|
|
|
|
lda MouseX
|
|
sec
|
|
sbc Anc_X
|
|
sta Delta_X
|
|
;--
|
|
EgalOk clc
|
|
rts
|
|
|
|
variable ds 2
|
|
|
|
END
|
|
;...............................................................
|
|
;
|
|
; MAJ_MOVE : Repercute les Modifications sur les objets
|
|
;
|
|
;...............................................................
|
|
MAJ_MOVE START
|
|
Using GlobalData
|
|
;--
|
|
jsr Save_Undo0
|
|
;--
|
|
lda Nb_List_Select
|
|
bne ok
|
|
rts
|
|
;--
|
|
ok ANOP
|
|
|
|
lda #1 |Refresh plus rapide que les phrases
|
|
sta Only_Text
|
|
;--
|
|
lda MouseX |DEPLACEMENT
|
|
sec
|
|
sbc X_ORG
|
|
sta Delta_X
|
|
|
|
lda MouseY
|
|
sec
|
|
sbc Y_ORG
|
|
sta Delta_Y
|
|
;--
|
|
lda Nb_List_Select
|
|
;--
|
|
Loop Pha
|
|
asl a
|
|
tay
|
|
|
|
lda List_Record,y
|
|
jsr Maj_OBJECT |ON MODIFIE
|
|
|
|
pla
|
|
dec a
|
|
bne Loop
|
|
|
|
rts
|
|
;--
|
|
Maj_Object ENTRY
|
|
pha
|
|
and #$FF00
|
|
xba
|
|
beq Maj_ObjectL |Text
|
|
cmp #1
|
|
beq Maj_ObjectS |shape
|
|
cmp #2
|
|
bne ko
|
|
brl Maj_ObjectI |icon
|
|
ko cmp #3
|
|
bne ko1
|
|
brl Maj_ObjectN |frame number
|
|
ko1 cmp #4
|
|
bne ko2
|
|
brl Maj_ObjectG |Graph
|
|
ko2 cmp #5
|
|
bne ko3
|
|
brl Maj_ObjectK |Sticker
|
|
;--
|
|
ko3 pla
|
|
rts
|
|
;--
|
|
Maj_ObjectS lda 1,s
|
|
and #$00FF
|
|
jsr Rest_Shape
|
|
;--
|
|
PushLong #Shape_Debut
|
|
PushWord Delta_X
|
|
PushWord Delta_Y
|
|
_OffSetRect
|
|
;--
|
|
PushLong #Shape_Rect
|
|
PushWord Delta_X
|
|
PushWord Delta_Y
|
|
_OffSetRect
|
|
;--
|
|
pla
|
|
and #$00FF
|
|
jsr Copie_Shape
|
|
|
|
stz Only_Text
|
|
|
|
rts
|
|
;--------------------------------------
|
|
Maj_ObjectL lda 1,s
|
|
sta Cou_ligne
|
|
jsr Rest_buffer
|
|
;--
|
|
inc top_sauvegarde
|
|
;--
|
|
lda Line_Y
|
|
clc
|
|
adc Delta_Y
|
|
sta Line_Y
|
|
|
|
lda Line_X
|
|
clc
|
|
adc Delta_X
|
|
sta Line_X
|
|
;--
|
|
PushLong #Shape_Rect
|
|
PushWord Delta_X
|
|
PushWord Delta_Y
|
|
_OffSetRect
|
|
;--
|
|
pla
|
|
and #$00FF
|
|
sta cou_ligne
|
|
jsr Sauve_buffer
|
|
|
|
rts
|
|
;--
|
|
Maj_ObjectN ANOP
|
|
|
|
PushLong #NumberRect
|
|
PushWord Delta_X
|
|
PushWord Delta_Y
|
|
_OffSetRect
|
|
pla
|
|
stz Only_Text
|
|
rts
|
|
;--
|
|
Maj_ObjectI lda 1,s
|
|
and #$00FF
|
|
jsr Rest_Icon
|
|
;--
|
|
lda Icon_Y
|
|
clc
|
|
adc Delta_Y
|
|
sta Icon_Y
|
|
|
|
lda Icon_X
|
|
clc
|
|
adc Delta_X
|
|
sta Icon_X
|
|
;--
|
|
pla
|
|
and #$00FF
|
|
jsr Copie_Icon
|
|
|
|
stz Only_text
|
|
|
|
rts
|
|
;--
|
|
Maj_ObjectK lda 1,s
|
|
and #$00FF
|
|
jsr Rest_Sticker
|
|
;--
|
|
ldy #Sticker_Y
|
|
lda [Ptr_BufStick],y
|
|
clc
|
|
adc Delta_Y
|
|
sta [Ptr_BufStick],y
|
|
|
|
ldy #Sticker_X
|
|
lda [Ptr_BufStick],y
|
|
clc
|
|
adc Delta_X
|
|
sta [Ptr_BufStick],y
|
|
;--
|
|
pla
|
|
and #$00FF
|
|
jsr Copie_Sticker
|
|
|
|
stz Only_Text
|
|
|
|
rts
|
|
;--
|
|
Maj_ObjectG lda 1,s
|
|
and #$00FF
|
|
jsr Rest_Graph
|
|
;--
|
|
PushLong #GraphRect
|
|
PushWord Delta_X
|
|
PushWord Delta_Y
|
|
_OffSetRect
|
|
;--
|
|
pla
|
|
and #$00FF
|
|
jsr Copie_Graph
|
|
|
|
stz Only_Text
|
|
|
|
rts
|
|
|
|
END
|
|
;...............................................................
|
|
;
|
|
; INV_FANTOME : INVERSE SELECTION
|
|
;
|
|
;...............................................................
|
|
INV_FANTOME START
|
|
Using GlobalData
|
|
|
|
PushWord #15 |Couleur Blanche
|
|
_SetSolidPenPat
|
|
|
|
PushWord #2 |en Xor
|
|
_SetPenMode
|
|
;--
|
|
lda Nb_List_Select |CADRE DE GROUPE SELECT
|
|
cmp #1
|
|
beq saute
|
|
|
|
PushLong #Pat1 |Pattern
|
|
_SetPenPat
|
|
|
|
PushLong #Rect_SelectF
|
|
_FrameRect
|
|
;--
|
|
Saute jsr Xor_Shape11 |Fantome de l'objet
|
|
|
|
rts
|
|
|
|
END
|
|
;...............................................................
|
|
;
|
|
; Set_Rect_move : Rectangle objet Pointe
|
|
;
|
|
;...............................................................
|
|
Set_Rect_Move START
|
|
Using GlobalData
|
|
|
|
lda Which_Select
|
|
cmp #1
|
|
beq LineR /** une ligne **/
|
|
cmp #2
|
|
beq ShapeR /** une shape **/
|
|
cmp #3
|
|
beq IconR /** une icone **/
|
|
cmp #4
|
|
beq NumberR /** frame number **/
|
|
cmp #5
|
|
beq GraphR /** un graph **/
|
|
cmp #6
|
|
beq StickerR /** un sticker **/
|
|
rts
|
|
;--
|
|
ShapeR ldy #6
|
|
Loop1 lda Shape_Rect,y
|
|
sta RectShape,y
|
|
dey
|
|
dey
|
|
bpl Loop1
|
|
rts
|
|
;--
|
|
LineR ldy #6
|
|
Loop2 lda Rect2,y
|
|
sta RectShape,y
|
|
dey
|
|
dey
|
|
bpl Loop2
|
|
|
|
Shapetype1 lda #1
|
|
sta Shape_Type
|
|
rts
|
|
;--
|
|
IconR ldy #6
|
|
Loop3 lda Rect_Icone,y
|
|
sta RectShape,y
|
|
dey
|
|
dey
|
|
bpl Loop3
|
|
|
|
bra Shapetype1
|
|
;--
|
|
NumberR ldy #6
|
|
Loop4 lda NumberRect,y
|
|
sta RectShape,y
|
|
dey
|
|
dey
|
|
bpl Loop4
|
|
bra Shapetype1
|
|
;--
|
|
GraphR ldy #6
|
|
Loop5 lda GraphRect,y
|
|
sta RectShape,y
|
|
dey
|
|
dey
|
|
bpl Loop5
|
|
bra ShapeType1
|
|
;--
|
|
StickerR ldy #6
|
|
Loop6 lda Rect_Stick,y
|
|
sta RectShape,y
|
|
dey
|
|
dey
|
|
bpl Loop6
|
|
bra Shapetype1
|
|
|
|
END
|
|
;...............................................................
|
|
;
|
|
; Selection : Selection d'un OBJET QUELCONQUE
|
|
;
|
|
;...............................................................
|
|
Selection START
|
|
Using GlobalData
|
|
|
|
stz Which_select
|
|
|
|
stz Top_size |pas de sizing par option
|
|
;--
|
|
stz Top_Objet_S
|
|
jsr Already_Select |si select alors priorite
|
|
;--
|
|
lda Top_Objet_S
|
|
beq NoAlready
|
|
|
|
lda Type_Objet_s
|
|
asl a
|
|
tax
|
|
|
|
lda Number_Objet_S
|
|
jsr (tableAlready,x)
|
|
rts
|
|
;--
|
|
NoAlready jsr Test_In_Number |in Frame Number
|
|
bcc S0selection
|
|
brl Ok_Number
|
|
|
|
S0selection jsr Test_In_Line |in ligne ? -> zligne
|
|
bcc S1selection
|
|
brl Ok_Line
|
|
|
|
S1selection jsr Test_In_Icon |in icon ?
|
|
bcc S2selection
|
|
brl Ok_Icon
|
|
|
|
S2selection jsr Test_In_Sticker |in Sticker ?
|
|
bcc S3selection
|
|
brl Ok_Sticker
|
|
|
|
S3selection jsr Test_In_Graph |In Graph
|
|
bcc S4selection
|
|
brl Ok_Graph
|
|
|
|
S4selection jsr Test_In_Shape |in Shape ?
|
|
bcs Ok_Shape
|
|
|
|
clc
|
|
rts
|
|
;--
|
|
TableAlready ANOP
|
|
dc i'Ok_Number'
|
|
dc i'Ok_Line'
|
|
dc i'Ok_Icon'
|
|
dc i'Ok_Graph'
|
|
dc i'Ok_Shape'
|
|
dc i'Ok_Sticker'
|
|
;--
|
|
_Sysbeep
|
|
;------------------------------------------------------------------
|
|
; ------------ select a OBJECT -----------------
|
|
;------------------------------------------------------------------
|
|
Ok_Shape ANOP
|
|
|
|
ora #$0100
|
|
pha
|
|
jsr In_List |dans la selection groupe
|
|
bcs S_Yes_In_List
|
|
;--
|
|
S_Not_In_List jsr Un_Select |Deselection des anciens
|
|
|
|
lda 1,s |en derniere position
|
|
and #$00FF
|
|
jsr Shape_Last
|
|
|
|
pla |valeur devenue inutile
|
|
lda Frame_Shape
|
|
sta Shape_Select
|
|
ora #$0100
|
|
jsr Put_In_List |Selection dans la liste
|
|
;--
|
|
lda Frame_Shape
|
|
jsr Rest_shape
|
|
;--
|
|
lda #1 |SIZING
|
|
sta Top_size
|
|
jsr Copy_RectS
|
|
bra Ssuite
|
|
;--
|
|
S_Yes_In_List pla
|
|
and #$00FF
|
|
jsr Rest_shape
|
|
lda #2
|
|
sta Which_select
|
|
;--
|
|
lda Nb_List_Select
|
|
cmp #2
|
|
bcs Ssuite
|
|
lda List_Select
|
|
and #$00FF
|
|
sta Shape_Select
|
|
lda #1
|
|
sta Top_size
|
|
;--
|
|
Ssuite jsr MoveSize_Shape |et on Bouge OU on Size
|
|
|
|
sec
|
|
rts
|
|
;------------------------------------------------------------------
|
|
; ------------ select a Graph -----------------
|
|
;------------------------------------------------------------------
|
|
Ok_Graph ANOP
|
|
|
|
ora #$0400
|
|
pha
|
|
jsr In_List |dans la selection groupe
|
|
bcs G_Yes_In_List
|
|
;--
|
|
G_Not_In_List jsr Un_Select |Deselection des anciens
|
|
|
|
lda 1,s |en derniere position
|
|
and #$00FF
|
|
jsr Graph_Last
|
|
|
|
pla |valeur devenue inutile
|
|
lda Frame_Graph
|
|
sta Graph_Select
|
|
ora #$0400
|
|
jsr Put_In_List |Selection dans la liste
|
|
;--
|
|
lda Frame_Graph
|
|
jsr Rest_Graph
|
|
;--
|
|
lda #1 |SIZING
|
|
sta Top_size
|
|
jsr Copy_RectG
|
|
bra Gsuite
|
|
;--
|
|
G_Yes_In_List pla
|
|
and #$00FF
|
|
jsr Rest_Graph
|
|
;--
|
|
lda Nb_List_Select
|
|
cmp #2
|
|
bcs Gsuite
|
|
lda List_Select
|
|
and #$00FF
|
|
sta Graph_Select
|
|
lda #1
|
|
sta Top_size
|
|
jsr Copy_rectG
|
|
;--
|
|
Gsuite lda #5
|
|
sta Which_select
|
|
jsr MoveSize_Shape |et on Bouge OU on Size
|
|
|
|
sec
|
|
rts
|
|
;------------------------------------------------------------------
|
|
; ------------- select d'une ligne de texte -----------------
|
|
;------------------------------------------------------------------
|
|
Ok_Line ANOP
|
|
lda zligne
|
|
pha
|
|
jsr In_List |Deja Dans une Selection Groupe
|
|
bcs L_Yes_In_list
|
|
;--
|
|
L_Not_In_List jsr Un_Select |Deselection des ANCIENS
|
|
|
|
lda 1,s |ligne en derniere position
|
|
sta zligne
|
|
jsr Ligne_move
|
|
|
|
pla
|
|
lda Frame_line
|
|
dec a
|
|
sta Line_Select
|
|
sta cou_ligne
|
|
sta zligne
|
|
jsr Rest_buffer
|
|
|
|
inc top_sauvegarde
|
|
|
|
lda Line_Select
|
|
jsr Put_In_List
|
|
jsr cal_Rect2
|
|
jsr Copy_RectL
|
|
bra Lsuite
|
|
;--
|
|
L_Yes_In_list pla
|
|
sta Cou_ligne
|
|
jsr Rest_buffer
|
|
jsr Cal_Rect2
|
|
lda List_Select
|
|
and #$00FF
|
|
sta Line_Select
|
|
;--
|
|
Lsuite lda #1
|
|
sta Which_select
|
|
jsr MoveSize_Shape |Deplacement
|
|
|
|
sec
|
|
rts
|
|
;------------------------------------------------------------------
|
|
; ------------ selection d'une Icone ---------------
|
|
;------------------------------------------------------------------
|
|
Ok_Icon ENTRY
|
|
|
|
ora #$0200 |une icone
|
|
pha
|
|
jsr In_List |dans la selection groupe
|
|
bcs I_Yes_In_List
|
|
;--
|
|
I_Not_In_List jsr Un_Select |Deselection des anciens
|
|
|
|
lda 1,s |en derniere position
|
|
and #$00FF
|
|
jsr Icon_Last
|
|
|
|
pla |valeur devenue inutile
|
|
lda Frame_Icon
|
|
sta Icon_Select
|
|
ora #$0200
|
|
jsr Put_In_List |Selection dans la liste
|
|
;--
|
|
lda Frame_Icon
|
|
jsr Rest_Icon
|
|
jsr Cal_RectIcon
|
|
jsr Copy_RectI
|
|
;--
|
|
bra Isuite
|
|
;--
|
|
I_Yes_In_List pla
|
|
and #$00FF
|
|
jsr Rest_Icon
|
|
jsr Cal_RectIcon
|
|
lda List_Select
|
|
and #$00FF
|
|
sta Icon_Select
|
|
;--
|
|
Isuite ANOP
|
|
lda #3
|
|
sta Which_select
|
|
|
|
jsr MoveSize_Shape |et on Bouge OU on Size
|
|
|
|
sec
|
|
rts
|
|
;------------------------------------------------------------------
|
|
; ------------ selection d'un Sticker --------------
|
|
;------------------------------------------------------------------
|
|
Ok_Sticker ENTRY
|
|
|
|
ora #$0500 |un sticker
|
|
pha
|
|
jsr In_List |dans la selection groupe
|
|
bcs K_Yes_In_List
|
|
;--
|
|
K_Not_In_List jsr Un_Select |Deselection des anciens
|
|
|
|
lda 1,s |en derniere position
|
|
and #$00FF
|
|
jsr Sticker_Last
|
|
|
|
pla |valeur devenue inutile
|
|
lda Frame_Sticker
|
|
sta Sticker_Select
|
|
ora #$0500
|
|
jsr Put_In_List |Selection dans la liste
|
|
;--
|
|
lda Frame_Sticker
|
|
jsr Rest_Sticker
|
|
jsr Cal_RectSticker
|
|
jsr Copy_RectK
|
|
;--
|
|
bra Ksuite
|
|
;--
|
|
K_Yes_In_List pla
|
|
and #$00FF
|
|
jsr Rest_Sticker
|
|
jsr Cal_RectSticker
|
|
lda List_Select
|
|
and #$00FF
|
|
sta Sticker_Select
|
|
;--
|
|
Ksuite ANOP
|
|
lda #6
|
|
sta Which_select
|
|
|
|
jsr MoveSize_Shape |et on Bouge OU on Size
|
|
|
|
sec
|
|
rts
|
|
;------------------------------------------------------------------
|
|
; ------------- select du Frame Number -----------------
|
|
;------------------------------------------------------------------
|
|
Ok_Number ANOP
|
|
ora #$0300
|
|
pha
|
|
jsr In_List |Deja Dans une Selection Groupe
|
|
bcs N_Yes_In_list
|
|
;--
|
|
N_Not_In_List jsr Un_Select |Deselection des ANCIENS
|
|
|
|
pla
|
|
jsr Put_In_List
|
|
jsr Copy_RectN
|
|
bra Nsuite
|
|
;--
|
|
N_Yes_In_list pla
|
|
;--
|
|
Nsuite lda #4
|
|
sta Which_select
|
|
jsr MoveSize_Shape |Deplacement
|
|
|
|
sec
|
|
rts
|
|
|
|
END
|
|
;...............................................................
|
|
;
|
|
; Already_Select : si Select alors click PRIORITAIRE
|
|
;
|
|
;...............................................................
|
|
Already_Select START
|
|
Using GlobalData
|
|
|
|
lda #8
|
|
sta Ch_Group
|
|
jsr Change_Groupe
|
|
|
|
rts
|
|
|
|
END
|
|
;...............................................................
|
|
;
|
|
; Put_In_List : Selection dans la liste
|
|
;
|
|
;...............................................................
|
|
Put_In_list START
|
|
Using GlobalData
|
|
|
|
ldy #2
|
|
sta List_Record,y
|
|
|
|
lda #1
|
|
sta Nb_List_Select
|
|
|
|
rts
|
|
|
|
END
|
|
;...............................................................
|
|
;
|
|
; In_List : selection deja dans une selection de groupe ?
|
|
;
|
|
;...............................................................
|
|
In_List START
|
|
Using GlobalData
|
|
|
|
ldx Nb_List_Select
|
|
bne ok
|
|
non clc
|
|
rts
|
|
;--
|
|
ok sta TempoData
|
|
|
|
Loop txa
|
|
asl a
|
|
tay
|
|
lda List_Record,y
|
|
cmp TempoData
|
|
beq trouve
|
|
|
|
dex
|
|
bne Loop
|
|
bra non
|
|
;--
|
|
trouve sec
|
|
rts
|
|
|
|
TempoData ds 2
|
|
|
|
END
|
|
;...............................................................
|
|
;
|
|
; Copy_Rect : rectangle selection dans rectangle globale
|
|
;
|
|
;...............................................................
|
|
Copy_Rect START
|
|
Using GlobalData
|
|
;--
|
|
Copy_RectL ENTRY
|
|
|
|
ldy #6
|
|
RCopy_RectL lda Rect2,y
|
|
sta Rect_SelectF,y
|
|
dey
|
|
dey
|
|
bpl RCopy_RectL
|
|
;--
|
|
ShapeType1 lda #1
|
|
sta Shape_Type
|
|
rts
|
|
;--
|
|
Copy_RectI ENTRY
|
|
|
|
ldy #6
|
|
RCopy_RectI lda Rect_Icone,y
|
|
sta Rect_SelectF,y
|
|
dey
|
|
dey
|
|
bpl RCopy_RectI
|
|
bra ShapeType1
|
|
;--
|
|
Copy_RectK ENTRY
|
|
|
|
ldy #6
|
|
RCopy_RectK lda Rect_Stick,y
|
|
sta Rect_SelectF,y
|
|
dey
|
|
dey
|
|
bpl RCopy_RectK
|
|
bra ShapeType1
|
|
;--
|
|
Copy_RectS ENTRY
|
|
|
|
ldy #6
|
|
RCopy_RectS lda Shape_Rect,y
|
|
sta Rect_SelectF,y
|
|
dey
|
|
dey
|
|
bpl RCopy_rectS
|
|
rts
|
|
;--
|
|
Copy_RectN ENTRY
|
|
|
|
ldy #6
|
|
RCopy_RectN lda NumberRect,y
|
|
sta Rect_SelectF,y
|
|
dey
|
|
dey
|
|
bpl RCopy_RectN
|
|
|
|
bra ShapeType1
|
|
;--
|
|
Copy_RectG ENTRY
|
|
|
|
ldy #6
|
|
RCopy_RectG lda GraphRect,y
|
|
sta Rect_SelectF,y
|
|
sta Shape_Rect,y |pour les poignees
|
|
dey
|
|
dey
|
|
bpl RCopy_RectG
|
|
|
|
bra ShapeType1
|
|
|
|
END
|
|
;...............................................................
|
|
;
|
|
; Set_Shift_Key : top si shift
|
|
;
|
|
;...............................................................
|
|
Set_Shift_Key START
|
|
Using GlobalData
|
|
|
|
stz Top_shift
|
|
|
|
lda EventModifiers |si SHIFT Set top_shift
|
|
and #$0100
|
|
beq Fin
|
|
|
|
inc Top_shift
|
|
|
|
fin rts
|
|
|
|
END
|
|
;...............................................................
|
|
;
|
|
; TRT_SHIFT_KEY : SI SHIFT KEY FORME SYMETRIQUE
|
|
;
|
|
;...............................................................
|
|
TRT_SHIFT_KEY START
|
|
Using GlobalData
|
|
|
|
lda Top_Shift
|
|
bne ok
|
|
rts
|
|
;--
|
|
ok ANOP
|
|
lda MouseX
|
|
sec
|
|
sbc X_Org
|
|
sta zdep_x
|
|
sta dep_x
|
|
bpl s
|
|
eor #$FFFF
|
|
inc a
|
|
sta dep_x
|
|
|
|
s lda MouseY
|
|
sec
|
|
sbc Y_org
|
|
sta zdep_y
|
|
sta dep_Y
|
|
bpl s1
|
|
eor #$FFFF
|
|
inc a
|
|
sta dep_y
|
|
;--
|
|
s1 PushLong #0 |applique le ratio 10/9
|
|
PushWord dep_Y
|
|
PushWord #21
|
|
_Multiply
|
|
pla
|
|
plx
|
|
|
|
PushLong #0
|
|
Pha
|
|
PushWord #17
|
|
_UDivide
|
|
pla
|
|
plx
|
|
sta z1dep_y
|
|
;--
|
|
PushLong #0 |applique le ratio 10/9
|
|
PushWord dep_X
|
|
PushWord #17
|
|
_Multiply
|
|
pla
|
|
plx
|
|
|
|
PushLong #0
|
|
Pha
|
|
PushWord #21
|
|
_UDivide
|
|
pla
|
|
plx
|
|
sta z1dep_x
|
|
;---------
|
|
lda Shape_type
|
|
bne s2
|
|
;--
|
|
lda dep_y
|
|
sta z1dep_y
|
|
lda dep_x
|
|
sta z1dep_x
|
|
;--
|
|
lda dep_x
|
|
cmp #10
|
|
bcs s11
|
|
lda X_Org
|
|
sta MouseX
|
|
bra fin
|
|
s11 lda dep_y
|
|
cmp #10
|
|
bcs s2
|
|
lda Y_org
|
|
sta MouseY
|
|
bra fin
|
|
;--
|
|
s2 lda dep_x
|
|
cmp z1dep_y
|
|
bcc Xinf
|
|
;--
|
|
Yinf lda zdep_x
|
|
bpl sYinf
|
|
|
|
lda X_org
|
|
sec
|
|
sbc z1dep_y
|
|
sta MouseX
|
|
rts
|
|
|
|
SYinf lda X_org
|
|
clc
|
|
adc z1dep_y
|
|
sta MouseX
|
|
fin rts
|
|
;--
|
|
Xinf lda zdep_y
|
|
bpl sXinf
|
|
|
|
lda Y_org
|
|
sec
|
|
sbc z1dep_x
|
|
sta MouseY
|
|
rts
|
|
|
|
SXinf lda Y_org
|
|
clc
|
|
adc z1dep_x
|
|
sta MouseY
|
|
rts
|
|
;--
|
|
dep_y ds 2
|
|
dep_x ds 2
|
|
zdep_y ds 2
|
|
zdep_x ds 2
|
|
z1dep_y ds 2 |avec ratio
|
|
z1dep_x ds 2 |avec ratio
|
|
|
|
END
|
|
;...............................................................
|
|
;
|
|
; Menu_On_Off : if object ON or OFF-> MENU Change
|
|
;
|
|
;...............................................................
|
|
Menu_On_Off START
|
|
Using GlobalData
|
|
Using WindowData
|
|
;--
|
|
stz FlipOnOff
|
|
stz Cut_actif
|
|
|
|
PushWord #267 |cut
|
|
_DisableMItem
|
|
|
|
PushWord #268 |copy
|
|
_DisableMItem
|
|
|
|
PushWord #275 |Flip V
|
|
_DisableMItem
|
|
|
|
PushWord #276 |Flip H
|
|
_DisableMItem
|
|
|
|
PushWord #280 |shadow
|
|
_DisableMItem
|
|
;--
|
|
jsr Paste_On_Off |paste ok ou non
|
|
;--
|
|
lda Nb_List_Select
|
|
bne ok
|
|
jsr Set_Option_Flip
|
|
jsr Set_Option_Cut
|
|
rts
|
|
|
|
ok lda Nb_List_Select
|
|
;--
|
|
Loop Pha
|
|
asl a
|
|
tay
|
|
;--
|
|
lda List_Record,y
|
|
pha
|
|
and #$FF00
|
|
xba
|
|
beq MenuOn1 |text
|
|
cmp #1
|
|
beq MenuOn0 |shape
|
|
cmp #2
|
|
beq MenuOn |icon
|
|
cmp #4
|
|
beq MenuOn0 |graph
|
|
cmp #5
|
|
beq MenuOn
|
|
pla
|
|
bra suite
|
|
;--
|
|
MenuOn0 PushWord #280 |Shadow for graph shape
|
|
_EnableMItem
|
|
;--
|
|
MenuOn pla
|
|
PushWord #275 |Flip V
|
|
_EnableMItem
|
|
|
|
PushWord #276 |Flip H
|
|
_EnableMItem
|
|
|
|
lda #1
|
|
sta FlipOnOff
|
|
bra MenuOn11
|
|
;--
|
|
MenuOn1 pla
|
|
;--
|
|
MenuOn11 PushWord #267 |cut
|
|
_EnableMItem
|
|
|
|
PushWord #268 |copy
|
|
_EnableMItem
|
|
|
|
lda #1
|
|
sta Cut_Actif
|
|
;--
|
|
suite pla
|
|
dec a
|
|
bne Loop
|
|
|
|
jsr Set_Option_Flip
|
|
|
|
jsr Set_Option_Cut
|
|
|
|
rts
|
|
;--------------------------------------
|
|
; Paste_on_off
|
|
;--------------------------------------
|
|
Paste_on_off ANOP
|
|
lda Top_Paste
|
|
beq koPaste
|
|
;--------------------------------------
|
|
OkPaste PushWord #269
|
|
_EnableMItem
|
|
rts
|
|
KoPaste PushWord #269
|
|
_DisableMItem
|
|
rts
|
|
;--------------------------------------
|
|
; Set_Option_Cut
|
|
;--------------------------------------
|
|
Set_Option_Cut ENTRY
|
|
|
|
lda Cut_actif
|
|
beq SOC_Off
|
|
;--------------------------------------
|
|
SOC_ON PushLong #0 |ok dans le cartouche
|
|
_GetPort
|
|
|
|
PushLong Ptr_OptionW
|
|
_SetPort
|
|
|
|
jsr D_Hdl_PPI_Opt |Deref Hdl
|
|
|
|
lda #27
|
|
sta SrcRecty0
|
|
lda #19
|
|
sta SrcRectx0
|
|
lda #39
|
|
sta SrcRecty1
|
|
lda #36
|
|
sta SrcRectx1
|
|
|
|
PushLong #LocInfo_Option |Bitmap Option
|
|
PushLong #SrcRect |rectangle a copier
|
|
PushWord #20 |destX
|
|
PushWord #28 |destY
|
|
PushWord #0
|
|
_PPtoPort
|
|
|
|
jsr U_Hdl_PPI_OPT |Unlock Hdl
|
|
|
|
_SetPort
|
|
|
|
rts
|
|
;--------------------------------------
|
|
SOC_OFF PushLong #0 |griser dans le cartouche
|
|
_GetPort
|
|
|
|
Pushlong Ptr_OptionW
|
|
_SetPort
|
|
|
|
PushLong #Patgrise
|
|
_SetPenPat
|
|
|
|
PushWord #$0001 |notBIC
|
|
_SetPenMode
|
|
|
|
PushLong #RectCut
|
|
_PaintRect
|
|
|
|
_PenNormal
|
|
|
|
_SetPort
|
|
|
|
rts
|
|
|
|
Cut_actif dc i'0'
|
|
|
|
END
|