mirror of
https://github.com/Tolik-Trek/File-Manager.git
synced 2026-06-15 01:11:36 +03:00
1073 lines
24 KiB
NASM
Executable File
1073 lines
24 KiB
NASM
Executable File
;-----------------------------------------------------------
|
||
; <20>à®à¨á®¢ª ®¡ê¥ªâ
|
||
; Object ~List Box~
|
||
; Input: HL-label
|
||
; Format mouse table:
|
||
; +0 - Object ~List Box"
|
||
; +1 - Xo position object
|
||
; +2 - Xi position object
|
||
; +3 - Yo position object
|
||
; +4 - Yi position object
|
||
; +5 - Xi position name
|
||
; +6 - ⥪. í«¥¬¥â
|
||
; +7 - ç¨á«® í«¥¬¥â®¢ ¢ ListBox
|
||
; +8,9 - ¤à¥á ᯨáª
|
||
; +10 - Y pos line up
|
||
; +11 - Y pos line down
|
||
; +12 - Previos Y pos bar
|
||
; +13 - hot-¡ãª¢
|
||
; +14 - ª®â¥ªáâ
|
||
;-----------------------------------------------------------
|
||
PListBox:
|
||
LD (IY+1),A
|
||
LD A,(HL) ;X pos
|
||
INC HL
|
||
LD C,A
|
||
LD (IX+4),A ;Save X pos
|
||
ADD A,(IX+0) ;Pos X from begin window
|
||
LD (IY+2),A ;+1 Xo
|
||
LD A,(HL) ;Y pos
|
||
INC HL
|
||
LD B,A
|
||
LD (IX+5),A ;Save Y pos
|
||
ADD A,(IX+1) ;Pos Y from begin window
|
||
LD (IY+4),A ;+3 Yo
|
||
CALL GetPutA
|
||
LD A,(HL) ;len X
|
||
INC HL
|
||
ADD A,3
|
||
LD (IX+6),A
|
||
LD B,A
|
||
ADD A,2
|
||
ADD A,(IY+2)
|
||
LD (IY+3),A ;Xi pos
|
||
LD A,(HL) ;len Y
|
||
INC HL
|
||
ADD A,2 ;Yi pos
|
||
ADD A,(IY+4)
|
||
LD (IY+5),A
|
||
LD A,"Ú"
|
||
LD (DE),A
|
||
INC DE
|
||
INC DE
|
||
LD A," " ; ¢¥¤ã騩 ¯à®¡¥«
|
||
LD (DE),A
|
||
INC DE
|
||
INC DE
|
||
DEC B
|
||
LD A,(color_array+24) ; 梥⠤¨ «. ®ª
|
||
LD C,A
|
||
LD A,(HL)
|
||
LstBox0:INC HL
|
||
CP "&"
|
||
JR NZ,LstBox1
|
||
LD A,(HL)
|
||
LD (DE),A ; hot-¡ãª¢ã ¢ ¡ãä¥à
|
||
INC HL
|
||
INC DE
|
||
push bc
|
||
ld a,(color_array+25) ; 梥â hot-¡ãª¢ë ¤¨ «. ®ª
|
||
ld b,a
|
||
ld a,c
|
||
and 0F0h
|
||
or b
|
||
ld (de),a ; âਡãâ
|
||
pop bc
|
||
inc de
|
||
DEC B
|
||
LD A,(HL)
|
||
INC HL
|
||
LstBox1:LD (DE),A
|
||
INC DE
|
||
INC DE
|
||
DEC B
|
||
LD A,(HL)
|
||
OR A
|
||
JR NZ,LstBox0
|
||
INC HL
|
||
ld a,(hl)
|
||
inc hl
|
||
ld (iy+15),a ; hot-¡ãª¢
|
||
LD A," " ; ª®æ¥¢®© ¯à®¡¥«
|
||
LD (DE),A
|
||
INC DE
|
||
INC DE
|
||
DEC B
|
||
LD A,(IX+6)
|
||
SUB B
|
||
ADD A,(IY+2)
|
||
inc a
|
||
LD (IY+6),A ; Xi ¯®«®¦. § £®«®¢ª
|
||
LD A,B
|
||
OR A
|
||
JR Z,LstBox2
|
||
LD A,"Ä"
|
||
LD (DE),A
|
||
INC DE
|
||
INC DE
|
||
DJNZ $-3
|
||
LstBox2:LD A,"¿"
|
||
LD (DE),A
|
||
INC (IX+5)
|
||
LD A,(HL) ; ª®â¥ªáâ
|
||
INC HL
|
||
LD (IY+16),A
|
||
SUB A
|
||
LD (IY+7),A ;’¥ª.í«¥¬.
|
||
LD (IY+8),A ;<3B>¥à¢ë© í«¥¬. áâà ¨æ¥
|
||
LD (IY+9),A ;Š®«-¢® í«¥¬.
|
||
LD E,(HL)
|
||
INC HL
|
||
LD (IY+10),E ;€¤à¥á ᯨáª
|
||
LD (IY+17),E ;€¤à¥á ᯨáª
|
||
LD D,(HL)
|
||
INC HL
|
||
LD (IY+11),D
|
||
LD (IY+18),D
|
||
PUSH HL
|
||
EX DE,HL
|
||
LD A,(HL)
|
||
OR A
|
||
JP Z,EndBox
|
||
; Next element list
|
||
LstBox3:LD C,(IX+4) ;pos element
|
||
LD B,(IX+5)
|
||
CALL GetPutA
|
||
LD A,(IX+6)
|
||
SUB 3
|
||
LD B,A
|
||
EX DE,HL
|
||
LD (HL),"³"
|
||
INC HL
|
||
INC HL
|
||
LD A,(IY+4)
|
||
SUB (IX+1)
|
||
INC A
|
||
CP (IX+5)
|
||
LD A,(color_array+29) ; 梥â ListBox-
|
||
JR NZ,$+5
|
||
LD A,(color_array+31) ; 梥⠯®á«¥ 㪠§ ⥫ï
|
||
LD C,A
|
||
LD (HL)," "
|
||
INC HL
|
||
LD (HL),C
|
||
INC HL
|
||
LstBox4:LD A,(DE)
|
||
INC DE
|
||
CP 0Dh ; ª®¥æ áâப¨
|
||
JR Z,NxtLst
|
||
LD (HL),A
|
||
INC HL
|
||
LD (HL),C
|
||
INC HL
|
||
DJNZ LstBox4
|
||
LD A,(DE)
|
||
INC DE
|
||
CP 0Dh ; ª®¥æ áâப¨
|
||
JR NZ,$-4
|
||
NxtLst: LD A,B
|
||
OR A
|
||
JR Z,LstBox5
|
||
LD A," "
|
||
LD (HL),A
|
||
INC HL
|
||
LD (HL),C
|
||
INC HL
|
||
DJNZ $-4
|
||
LstBox5:LD (HL)," "
|
||
INC HL
|
||
LD (HL),C
|
||
INC HL
|
||
LD A,(IY+4)
|
||
SUB (IX+1)
|
||
INC A
|
||
CP (IX+5)
|
||
LD B,""
|
||
JR Z,PutLsBr
|
||
INC A
|
||
CP (IX+5)
|
||
LD B,"þ"
|
||
JR Z,PutLsBr
|
||
LD A,(IY+5)
|
||
SUB (IX+1)
|
||
SUB 2
|
||
CP (IX+5)
|
||
LD B,""
|
||
JR Z,PutLsBr
|
||
LD B,"±"
|
||
PutLsBr:LD (HL),B
|
||
INC HL
|
||
LD A,(color_array+32) ; 梥â áªà®««-¡ à
|
||
LD (HL),A
|
||
INC HL
|
||
LD (HL),"³"
|
||
EX DE,HL
|
||
INC (IY+9)
|
||
INC (IX+5)
|
||
LD A,(IY+5)
|
||
SUB (IX+1)
|
||
DEC A
|
||
CP (IX+5)
|
||
JR Z,EndBox1
|
||
LD A,(HL)
|
||
OR A
|
||
JP NZ,LstBox3
|
||
EndBox: LD A,(IY+5)
|
||
SUB (IX+1)
|
||
SUB (IX+5)
|
||
DEC A
|
||
JR Z,EndBox1
|
||
LD B,A
|
||
LstBox6:PUSH BC
|
||
LD C,(IX+4) ;pos element
|
||
LD B,(IX+5)
|
||
CALL GetPutA
|
||
LD A,(IX+6)
|
||
DEC A
|
||
LD B,A
|
||
EX DE,HL
|
||
LD (HL),"³"
|
||
INC HL
|
||
INC HL
|
||
LD A,(color_array+29) ; 梥â ListBox-
|
||
LD C,A
|
||
LD A," "
|
||
LD (HL),A
|
||
INC HL
|
||
LD (HL),C
|
||
INC HL
|
||
DJNZ $-4
|
||
LD A,(IY+4)
|
||
SUB (IX+1)
|
||
INC A
|
||
CP (IX+5)
|
||
LD B,""
|
||
JR Z,PutLsB1
|
||
INC A
|
||
CP (IX+5)
|
||
LD B,"þ"
|
||
JR Z,PutLsB1
|
||
LD A,(IY+5)
|
||
SUB (IX+1)
|
||
SUB 2
|
||
CP (IX+5)
|
||
LD B,""
|
||
JR Z,PutLsB1
|
||
LD B,"±"
|
||
PutLsB1:LD (HL),B
|
||
INC HL
|
||
LD A,(color_array+32) ; 梥â áªà®««-¡ à
|
||
LD (HL),A
|
||
INC HL
|
||
LD (HL),"³"
|
||
EX DE,HL
|
||
INC (IX+5)
|
||
POP BC
|
||
DJNZ LstBox6
|
||
;
|
||
EndBox1:LD A,(HL)
|
||
OR A
|
||
JR Z,EndBox2
|
||
CP 0Dh ; ª®¥æ áâப¨
|
||
INC HL
|
||
LD A,(HL)
|
||
JR NZ,$-4
|
||
INC (IY+9)
|
||
JR EndBox1+1
|
||
;
|
||
EndBox2:LD C,(IX+4) ;End string
|
||
LD B,(IX+5)
|
||
CALL GetPutA
|
||
EX DE,HL
|
||
LD (HL),"À"
|
||
INC HL
|
||
INC HL
|
||
LD B,(IX+6)
|
||
LD A,"Ä"
|
||
LD (HL),A
|
||
INC HL
|
||
INC HL
|
||
DJNZ $-3
|
||
LD (HL),"Ù"
|
||
LD A,(IY+4)
|
||
INC A
|
||
LD (IY+12),A ;line up
|
||
INC A
|
||
LD (IY+14),A ;prev pos
|
||
LD A,(IY+5)
|
||
SUB 2
|
||
LD (IY+13),A ;line down
|
||
POP HL
|
||
LD BC,19
|
||
LD (IY+0),C
|
||
ADD IY,BC
|
||
RET
|
||
|
||
|
||
|
||
GetLstBox:
|
||
LD HL,what
|
||
INC HL
|
||
INC HL
|
||
LD A,(IX+7)
|
||
ADD A,(IX+8)
|
||
LD (HL),A
|
||
RET
|
||
|
||
|
||
|
||
|
||
|
||
;-------------------------------------------------
|
||
; Ž¡à ¡®â稪 ᮡë⨩ ®¡ê¥ªâ®¢ ~List Box~
|
||
;-------------------------------------------------
|
||
EListBox:
|
||
ld hl,what ; ¯®«¥ ᮡë⨩
|
||
ld a,(hl)
|
||
inc hl
|
||
cp evMouseFr
|
||
jp z,ELmouse
|
||
cp evKeyboard
|
||
jp z,ELkeys
|
||
cp evMessage
|
||
jr z,ELmess
|
||
cp evCombKey
|
||
ret nz
|
||
bit 7,(ix+1) ; sel or nosel
|
||
jp nz,ELcomb ; ®¡ê¥ªâ 㦥 ¢ë¤¥«¥
|
||
ld b,(hl) ;+1 what
|
||
inc hl
|
||
ld a,(hl) ;+2 what
|
||
cp 56h ; ªãàá®à ¢¯à ¢®
|
||
jp z,SetLstBox
|
||
push ix
|
||
ld e,(ix+0) ; à §¬¥à â ¡«¨æë "List Box"
|
||
ld d,0
|
||
add ix,de
|
||
bit 7,(ix+0)
|
||
pop ix
|
||
ret z ; ¥é¥ ¥ ª®¥æ ®¡ê¥ªâ®¢
|
||
cp 54h ; ªãàá®à ¢«¥¢®
|
||
jp z,SetLstBox
|
||
ld a,b
|
||
and 00111111b ; ¡¨âë Ctrl, Alt
|
||
ret nz
|
||
ld a,(hl) ;+2 what
|
||
cp 15+80h ; Tab ᪥-ª®¤+80h
|
||
ret nz
|
||
; Shift+Tab
|
||
jp SetLstBox ; select my
|
||
|
||
; ‘®¡ë⨥ - á®®¡é¥¨ï
|
||
ELmess: LD A,(HL) ;+1 what
|
||
INC HL
|
||
CP msHiddInvr
|
||
JR NZ,ELmess1
|
||
BIT 7,(IX+1)
|
||
RET NZ
|
||
LD A,(IX+9)
|
||
OR A
|
||
RET Z
|
||
JP HdLstBoxI
|
||
;
|
||
ELmess1:CP msNewList
|
||
RET NZ
|
||
LD E,(HL)
|
||
INC HL
|
||
LD D,(HL)
|
||
LD (IX+10),E
|
||
LD (IX+11),D
|
||
LD (IX+17),E
|
||
LD (IX+18),D
|
||
LD B,0
|
||
ELmess2:LD A,(DE)
|
||
INC DE
|
||
CP 0Dh
|
||
JR NZ,ELmess2
|
||
INC B
|
||
LD A,(DE)
|
||
OR A
|
||
JR NZ,ELmess2
|
||
ELmessE:LD (IX+9),B
|
||
CALL RsLstBoxI
|
||
SUB A
|
||
LD (IX+7),A
|
||
LD (IX+8),A
|
||
LD A,(IX+9)
|
||
OR A
|
||
JR Z,ELmesE1
|
||
BIT 7,(IX+1)
|
||
PUSH AF
|
||
CALL Z,HdLstBoxI
|
||
POP AF
|
||
CALL NZ,StLstBoxI
|
||
ELmesE1:CALL PrnLstBox
|
||
CALL LstBoxBar
|
||
JP ELboxex
|
||
|
||
; ‘®¡ë⨥ - ªãàá®àë¥ ª« ¢¨è¨
|
||
ELcomb: inc hl
|
||
ld de,ELexit
|
||
push de
|
||
ld a,(hl) ;+2 what
|
||
cp 58h ; ªãàá®à ¢¢¥àå
|
||
jr z,ELup
|
||
cp 52h ; ªãàá®à ¢¨§
|
||
jp z,ELdown
|
||
cp 54h ; ªãàá®à ¢«¥¢®
|
||
jp z,ELpgup
|
||
cp 56h ; ªãàá®à ¢¯à ¢®
|
||
jp z,ELpgdwn
|
||
cp 59h ; PageUp
|
||
jp z,ELpgup
|
||
cp 53h ; PageDown
|
||
jp z,ELpgdwn
|
||
cp 57h ; Home
|
||
jp z,ELhome
|
||
cp 51h ; End
|
||
jp z,ELend
|
||
pop de
|
||
ret
|
||
|
||
ELup: LD A,(IX+9)
|
||
CP 2
|
||
RET C
|
||
LD A,(IX+7)
|
||
DEC A
|
||
JP M,ELup1
|
||
CALL RsLstBoxI
|
||
LD (IX+7),A
|
||
CALL StLstBoxI
|
||
CALL LstBoxBar
|
||
JP ELboxex
|
||
;
|
||
ELup1: LD A,(IX+8)
|
||
DEC A
|
||
RET M
|
||
LD (IX+8),A
|
||
LD L,(IX+10)
|
||
LD H,(IX+11)
|
||
JR Z,ELupn1
|
||
LD L,(IX+17)
|
||
LD H,(IX+18)
|
||
DEC HL
|
||
DEC HL
|
||
LD A,(HL)
|
||
CP 0Dh
|
||
JR NZ,$-4
|
||
INC HL
|
||
ELupn1: LD (IX+17),L
|
||
LD (IX+18),H
|
||
CALL PrnLstBox
|
||
CALL LstBoxBar
|
||
JP ELboxex
|
||
|
||
ELdown: LD A,(IX+9)
|
||
CP 2
|
||
RET C
|
||
LD A,(IX+5)
|
||
SUB (IX+4)
|
||
SUB 2
|
||
LD C,A
|
||
LD A,(IX+7)
|
||
ADD A,(IX+8)
|
||
INC A
|
||
CP (IX+9)
|
||
RET Z
|
||
SUB (IX+8)
|
||
CP C
|
||
JR Z,ELdown1
|
||
CALL RsLstBoxI
|
||
LD (IX+7),A
|
||
CALL StLstBoxI
|
||
CALL LstBoxBar
|
||
JP ELboxex
|
||
;
|
||
ELdown1:LD A,(IX+8)
|
||
INC A
|
||
LD (IX+8),A
|
||
LD L,(IX+10)
|
||
LD H,(IX+11)
|
||
JR Z,ELdwn1
|
||
LD L,(IX+17)
|
||
LD H,(IX+18)
|
||
LD A,(HL)
|
||
INC HL
|
||
CP 0Dh
|
||
JR NZ,$-4
|
||
ELdwn1: LD (IX+17),L
|
||
LD (IX+18),H
|
||
CALL PrnLstBox
|
||
CALL LstBoxBar
|
||
JP ELboxex
|
||
|
||
; Page Up
|
||
ELpgup: LD A,(IX+9)
|
||
CP 2
|
||
RET C
|
||
LD A,(IX+8)
|
||
OR A
|
||
LD B,1
|
||
JP Z,ELnopg
|
||
LD A,(IX+5)
|
||
SUB (IX+4)
|
||
SUB 2
|
||
LD C,A
|
||
LD A,(IX+8)
|
||
SUB C
|
||
JR NC,$+3
|
||
SUB A
|
||
LD (IX+8),A
|
||
JR ELpgex
|
||
|
||
ELpgdwn:LD A,(IX+9)
|
||
CP 2
|
||
RET C
|
||
LD A,(IX+5)
|
||
SUB (IX+4)
|
||
SUB 2
|
||
LD C,A
|
||
LD A,(IX+9)
|
||
SUB (IX+8)
|
||
LD B,A
|
||
CP C
|
||
JR C,ELnopg
|
||
JR Z,ELnopg
|
||
LD A,(IX+8)
|
||
ADD A,C
|
||
CP (IX+9)
|
||
JR C,$+6
|
||
LD A,(IX+9)
|
||
SUB C
|
||
LD (IX+8),A
|
||
ADD A,C
|
||
CP (IX+9)
|
||
JR C,ELpgex
|
||
JR Z,ELpgex
|
||
LD A,(IX+9)
|
||
SUB C
|
||
LD (IX+8),A
|
||
;
|
||
ELpgex: LD L,(IX+10)
|
||
LD H,(IX+11)
|
||
LD A,(IX+8)
|
||
OR A
|
||
JR Z,ELpgex1
|
||
LD B,A
|
||
LD A,(HL)
|
||
INC HL
|
||
CP 0Dh
|
||
JR NZ,$-4
|
||
DJNZ $-6
|
||
ELpgex1:LD (IX+17),L
|
||
LD (IX+18),H
|
||
CALL PrnLstBox
|
||
CALL LstBoxBar
|
||
LD A,(IX+7)
|
||
ADD A,(IX+8)
|
||
CP (IX+9)
|
||
JR C,ELboxex
|
||
LD A,(IX+9)
|
||
SUB (IX+8)
|
||
LD B,A
|
||
;
|
||
ELnopg: DEC B
|
||
LD A,B
|
||
CP (IX+7)
|
||
RET Z
|
||
CALL RsLstBoxI
|
||
LD (IX+7),A
|
||
CALL StLstBoxI
|
||
CALL LstBoxBar
|
||
;
|
||
ELboxex:LD HL,what
|
||
LD (HL),evMessage
|
||
INC HL
|
||
LD (HL),msNewElem
|
||
INC HL
|
||
LD A,(IX+7)
|
||
ADD A,(IX+8)
|
||
LD (HL),A ; ⥪. í«¥¬¥â
|
||
call TransMessUp
|
||
jp get_fire
|
||
;ld b,8
|
||
;call get_mouse_info
|
||
;ret z
|
||
;HALT
|
||
;DJNZ $-5
|
||
;RET
|
||
|
||
; Home
|
||
ELhome: LD A,(IX+8)
|
||
OR A
|
||
JR Z,ELhome1
|
||
LD (IX+8),0
|
||
LD L,(IX+10)
|
||
LD H,(IX+11)
|
||
LD (IX+17),L
|
||
LD (IX+18),H
|
||
CALL PrnLstBox
|
||
ELhome1:LD A,(IX+7)
|
||
OR A
|
||
RET Z
|
||
CALL RsLstBoxI
|
||
LD (IX+7),0
|
||
CALL StLstBoxI
|
||
jp LstBoxBar
|
||
|
||
; End
|
||
ELend: LD A,(IX+8)
|
||
ADD A,(IX+7)
|
||
INC A
|
||
CP (IX+9)
|
||
RET Z
|
||
LD A,(IX+5)
|
||
SUB (IX+4)
|
||
SUB 2
|
||
LD C,A
|
||
LD A,(IX+9)
|
||
SUB C
|
||
JR C,ELend1
|
||
JR Z,ELend1
|
||
LD A,(IX+9)
|
||
SUB C
|
||
LD (IX+8),A
|
||
LD L,(IX+10)
|
||
LD H,(IX+11)
|
||
LD B,A
|
||
LD A,(HL)
|
||
INC HL
|
||
CP 0Dh
|
||
JR NZ,$-4
|
||
DJNZ $-6
|
||
LD (IX+17),L
|
||
LD (IX+18),H
|
||
CALL RsLstBoxI
|
||
CALL PrnLstBox
|
||
LD A,(IX+9)
|
||
DEC A
|
||
SUB (IX+8)
|
||
LD (IX+7),A
|
||
CALL StLstBoxI
|
||
jp LstBoxBar
|
||
;
|
||
ELend1: CALL RsLstBoxI
|
||
LD A,(IX+9)
|
||
DEC A
|
||
LD (IX+7),A
|
||
CALL StLstBoxI
|
||
jp LstBoxBar
|
||
|
||
; ‘®¡ë⨥ - ¬ëèª
|
||
ELmouse:LD E,(HL) ; X coord
|
||
INC HL
|
||
LD D,(HL) ; Y coord
|
||
LD A,E
|
||
BIT 7,(IX+2)
|
||
JR NZ,$+6
|
||
CP (IX+2) ;Xo pos
|
||
RET C ;<
|
||
BIT 7,(IX+3)
|
||
RET NZ
|
||
CP (IX+3) ;Xi pos
|
||
RET NC ;>
|
||
LD A,D
|
||
CP (IX+4) ;Yo pos list box
|
||
RET C
|
||
CP (IX+5) ;Yi pos list box
|
||
RET NC
|
||
BIT 7,(IX+1) ;Sel or nosel
|
||
PUSH DE
|
||
CALL Z,SetLstBox
|
||
POP DE
|
||
LD HL,ELexit
|
||
PUSH HL
|
||
LD A,(IX+9)
|
||
OR A
|
||
RET Z
|
||
LD A,E
|
||
ADD A,2
|
||
CP (IX+3)
|
||
JR Z,ELmous1
|
||
RET NC
|
||
LD A,E
|
||
CP (IX+2)
|
||
RET Z
|
||
LD A,D
|
||
CP (IX+4)
|
||
RET Z
|
||
INC A
|
||
CP (IX+5)
|
||
RET Z
|
||
LD A,D
|
||
SUB (IX+4)
|
||
DEC A
|
||
ADD A,(IX+8)
|
||
CP (IX+9)
|
||
JR C,$+6
|
||
LD A,(IX+9)
|
||
DEC A
|
||
SUB (IX+8)
|
||
CP (IX+7)
|
||
JR Z,SelLine
|
||
CALL RsLstBoxI
|
||
LD (IX+7),A
|
||
CALL StLstBoxI
|
||
CALL LstBoxBar
|
||
jp ELboxex
|
||
;
|
||
SelLine:POP HL
|
||
LD HL,what ; ¯®«¥ ᮡë⨩
|
||
LD (HL),evCommand
|
||
INC HL
|
||
LD (HL),cmSelect
|
||
RET
|
||
|
||
ELmous1:LD A,D
|
||
CP (IX+12)
|
||
RET C
|
||
JP Z,ELup
|
||
CP (IX+13)
|
||
JP Z,ELdown
|
||
RET NC
|
||
CP (IX+14)
|
||
RET Z
|
||
JP C,ELpgup
|
||
JP NC,ELpgdwn
|
||
RET
|
||
|
||
; ‘®¡ë⨥ - ®¡ëçë¥ ª« ¢¨è¨
|
||
ELkeys: ld a,(hl)
|
||
bit 7,(ix+1) ; sel or nosel
|
||
ret nz
|
||
cp 9 ; Tab
|
||
jr z,SetLstBox ; set button
|
||
inc hl
|
||
ld a,(hl) ;+2 what ᪥-ª®¤
|
||
cp (ix+15) ; hot-¡ãª¢
|
||
ret nz
|
||
SetLstBox:
|
||
CALL MoveObj ;Select Button
|
||
CALL ResDialInv ;Reset previos invert
|
||
LD IX,DialTab+5
|
||
LD E,(IX+2) ;Xo
|
||
INC E
|
||
LD D,(IX+4) ;Y
|
||
LD A,(IX+6) ;Xi
|
||
SUB E
|
||
LD C,A
|
||
CALL SetDialInv
|
||
LD A,(IX+9)
|
||
OR A
|
||
CALL NZ,StLstBoxI
|
||
LD HL,what ; ¯®«¥ ᮡë⨩
|
||
LD (HL),evMessage
|
||
INC HL
|
||
LD (HL),msNewElem
|
||
INC HL
|
||
LD A,(IX+7)
|
||
ADD A,(IX+8)
|
||
LD (HL),A ; ⥪. í«¥¬¥â
|
||
CALL TransMessUp
|
||
ELexit: LD HL,what
|
||
LD (HL),evNothing
|
||
RET
|
||
|
||
|
||
|
||
|
||
RsLstBoxI:
|
||
PUSH AF
|
||
LD A,(color_array+29) ; 梥â ListBox-
|
||
CALL LstBoxInv
|
||
POP AF
|
||
RET
|
||
|
||
|
||
HdLstBoxI:
|
||
LD A,(color_array+31) ; 梥⠯®á«¥ 㪠§ ⥫ï
|
||
JR LstBoxInv
|
||
;
|
||
StLstBoxI:
|
||
LD A,(color_array+30) ; 梥â 㪠§ ⥫ï ListBox-
|
||
LstBoxInv:
|
||
LD (lbcolor+1),A
|
||
PUSH IY
|
||
PUSH IX
|
||
PUSH IX
|
||
POP IY
|
||
LD IX,DialData ; â ¡«¨æ ®á. ¤¨ «. ®ª
|
||
LD A,(IY+2)
|
||
SUB (IX+0)
|
||
INC A
|
||
LD C,A
|
||
LD A,(IY+4)
|
||
SUB (IX+1)
|
||
INC A
|
||
ADD A,(IY+7)
|
||
LD B,A
|
||
CALL GetPutA
|
||
PUSH DE
|
||
IN A,(SLOT3)
|
||
PUSH AF
|
||
LD A,(page_dial_screen)
|
||
OUT (SLOT3),A
|
||
LD A,(IY+3)
|
||
SUB (IY+2)
|
||
SUB 3
|
||
LD L,A
|
||
LD H,1
|
||
LD B,L
|
||
lbcolor:LD A,0
|
||
INC DE
|
||
LD (DE),A
|
||
INC DE
|
||
DJNZ $-3
|
||
POP AF
|
||
OUT (SLOT3),A
|
||
POP IX
|
||
LD E,(IY+2)
|
||
INC E
|
||
LD A,(IY+4)
|
||
INC A
|
||
ADD A,(IY+7)
|
||
LD D,A
|
||
CALL PutDialLn
|
||
POP IX
|
||
POP IY
|
||
RET
|
||
|
||
LstBoxBar:
|
||
LD A,(IX+7)
|
||
ADD A,(IX+8)
|
||
LD E,A
|
||
LD A,(IX+13)
|
||
SUB (IX+12)
|
||
SUB 2
|
||
LD C,A
|
||
CALL Mult8X8 ;CurLine*LenScrollBar=num16bit
|
||
LD A,H
|
||
OR L
|
||
JR Z,LBB1
|
||
LD A,(IX+9) ;num16bit/EquipElem
|
||
OR A
|
||
JR Z,$+3
|
||
DEC A
|
||
LD C,A
|
||
CALL Divis16X8
|
||
LBB1: LD A,(IX+12) ;‘¬¥é¥¨¥ ®â ç «
|
||
INC A
|
||
ADD A,L
|
||
CP (IX+14)
|
||
RET Z
|
||
PUSH IY
|
||
PUSH IX
|
||
PUSH AF
|
||
PUSH IX
|
||
POP IY
|
||
LD IX,DialData
|
||
LD A,(IY+3)
|
||
SUB (IX+0)
|
||
SUB 2
|
||
LD C,A
|
||
LD A,(IY+14)
|
||
SUB (IX+1)
|
||
LD B,A
|
||
CALL GetPutA
|
||
IN A,(SLOT3)
|
||
PUSH AF
|
||
LD A,(page_dial_screen)
|
||
OUT (SLOT3),A
|
||
LD A,"±"
|
||
LD (DE),A
|
||
POP AF
|
||
OUT (SLOT3),A
|
||
LD A,(IY+3)
|
||
SUB 2
|
||
LD E,A
|
||
LD D,(IY+14)
|
||
LD A,D
|
||
CP 31
|
||
JR NC,LBe
|
||
BIT 7,E
|
||
JR NZ,LBe
|
||
LD A,E
|
||
CP 80
|
||
JR NC,LBe
|
||
LD A,(color_array+32) ; 梥â áªà®««-¡ à
|
||
LD H,A
|
||
LD L,"±"
|
||
LD BC,1BB5h
|
||
SUB A
|
||
RST 08h
|
||
LBe: LD A,(IY+3)
|
||
SUB 2
|
||
LD E,A
|
||
POP AF
|
||
LD (IY+14),A
|
||
LD D,A
|
||
PUSH DE
|
||
CP 31
|
||
JR NC,LBe1
|
||
BIT 7,E
|
||
JR NZ,LBe1
|
||
LD A,E
|
||
CP 80
|
||
JR NC,LBe1
|
||
LD A,(color_array+32) ; 梥â áªà®««-¡ à
|
||
LD H,A
|
||
LD L,"þ"
|
||
LD BC,1BB5h
|
||
SUB A
|
||
RST 08h
|
||
LBe1: POP DE
|
||
LD A,E
|
||
SUB (IX+0)
|
||
LD C,A
|
||
LD A,D
|
||
SUB (IX+1)
|
||
LD B,A
|
||
CALL GetPutA
|
||
IN A,(SLOT3)
|
||
PUSH AF
|
||
LD A,(page_dial_screen)
|
||
OUT (0E2h),A
|
||
LD A,"þ"
|
||
LD (DE),A
|
||
POP AF
|
||
OUT (SLOT3),A
|
||
POP IX
|
||
POP IY
|
||
RET
|
||
|
||
|
||
PrnLstBox:
|
||
PUSH IY
|
||
PUSH IX
|
||
IN A,(SLOT3)
|
||
PUSH AF
|
||
LD A,(page_dial_screen)
|
||
OUT (SLOT3),A
|
||
PUSH IX
|
||
POP IY
|
||
LD IX,DialData ; â ¡«¨æ ®á. ¤¨ «. ®ª
|
||
LD L,(IY+17)
|
||
LD H,(IY+18)
|
||
LD A,(IY+2)
|
||
SUB (IX+0)
|
||
ADD A,2
|
||
LD C,A
|
||
LD A,(IY+4)
|
||
SUB (IX+1)
|
||
INC A
|
||
LD B,A
|
||
LD A,(IY+5)
|
||
SUB (IY+4)
|
||
SUB 2
|
||
PrLsBx0:PUSH AF
|
||
PUSH BC
|
||
CALL GetPutA
|
||
LD A,(IY+3)
|
||
SUB (IY+2)
|
||
SUB 5
|
||
LD B,A
|
||
PrLsBx1:LD A,(HL)
|
||
INC HL
|
||
CP 0Dh
|
||
JR Z,PrLsBx2
|
||
LD (DE),A
|
||
INC DE
|
||
INC DE
|
||
DJNZ PrLsBx1
|
||
LD A,(HL)
|
||
INC HL
|
||
CP 0Dh
|
||
JR NZ,$-4
|
||
PrLsBx2:LD A,B
|
||
OR A
|
||
JR Z,PrLsBx3
|
||
LD A," " ; ª®æ. ¯à®¡¥«ë ⥪. ¯ãªâ
|
||
LD (DE),A
|
||
INC DE
|
||
INC DE
|
||
DJNZ $-3
|
||
PrLsBx3:POP BC
|
||
INC B
|
||
POP AF
|
||
DEC A
|
||
JR Z,PrLsBx4
|
||
LD E,(HL)
|
||
INC E
|
||
DEC E
|
||
JR NZ,PrLsBx0
|
||
PrLsBx4:OR A
|
||
JR Z,PrLsBx6
|
||
PrLsBx5:PUSH AF
|
||
PUSH BC
|
||
CALL GetPutA
|
||
LD A,(IY+3)
|
||
SUB (IY+2)
|
||
SUB 5
|
||
LD B,A
|
||
SUB A
|
||
LD (DE),A
|
||
INC DE
|
||
INC DE
|
||
DJNZ $-3
|
||
POP BC
|
||
INC B
|
||
POP AF
|
||
DEC A
|
||
JR NZ,PrLsBx5
|
||
PrLsBx6:CALL PutDial
|
||
POP AF
|
||
OUT (SLOT3),A
|
||
POP IX
|
||
POP IY
|
||
RET
|
||
|
||
|
||
|
||
|
||
|
||
; <20>à®æ¥¤ãà ¤¥«¥¨ï (16x8bit)
|
||
; ¢å®¤: HL/C
|
||
; ¢ë室: l=楫®¥, h=®áâ ⮪
|
||
Divis16X8:
|
||
LD B,8
|
||
Div16X8:ADD HL,HL
|
||
LD A,H
|
||
JR C,Div1
|
||
SUB C
|
||
JR NC,Div2
|
||
ADD A,C
|
||
LD H,A
|
||
DJNZ Div16X8
|
||
RET
|
||
Div1: SUB C
|
||
Div2: LD H,A
|
||
INC HL
|
||
DJNZ Div16X8
|
||
RET
|
||
|
||
|
||
|
||
; <20>à®æ¥¤ãà 㬮¦¥¨ï (8*8bit)
|
||
; ¢å®¤: e * c
|
||
; ¢ë室: hl=१ã«ìâ â
|
||
Mult8X8:SUB A
|
||
LD L,A
|
||
LD H,A
|
||
LD D,A
|
||
CP C
|
||
RET Z
|
||
CP E
|
||
RET Z
|
||
LD H,C
|
||
LD B,8
|
||
Mlt8x8: ADD HL,HL
|
||
JR NC,$+3
|
||
ADD HL,DE
|
||
DJNZ Mlt8x8
|
||
RET
|