mirror of
https://github.com/Tolik-Trek/File-Manager.git
synced 2026-06-15 01:11:36 +03:00
561 lines
11 KiB
NASM
Executable File
561 lines
11 KiB
NASM
Executable File
;-------------------------------------------------
|
||
; ‡ ¯®«¥¨¥ áâப¨ ᯨ᪠¯® ä®à¬ âã ¯ ¥«¨
|
||
;-------------------------------------------------
|
||
; ¢å®¤: b=ä®à¬ â ¯ ¥«¨
|
||
; hl= ç «® § ¯¨á¨ ª â «®£
|
||
; de=ï祩ª âਡã⮢ ä ©«
|
||
fill_string:
|
||
ld ix,string_of_list ; ¡ãä¥à áâப¨
|
||
bit 1,b ; Medium
|
||
jp nz,fill_med
|
||
bit 2,b ; Brief
|
||
jp nz,fill_brief
|
||
; Full
|
||
bit 6,b
|
||
jp nz,fill_full_spec ; full-spec
|
||
; ms-dos
|
||
ld a,(de) ; ¡ ©â âਡã⮢
|
||
bit 4,a ; ¯ ¯ª ?
|
||
jp nz,dir_name_full ; ¤ , ¢ë¢®¤ ¨¬¥¨
|
||
; ä®à¬ â "file ext"
|
||
ld b,8
|
||
call L22BD ; ¨¬ï ä ©«
|
||
ld b,4 ; ç¨á«® ¯à®¡¥«®¢
|
||
call spaces ; ¢áâ ¢¨âì ¯à®¡¥«ë
|
||
ld b,3
|
||
call L22BD ; à áè. ä ©«
|
||
fill_string1__:
|
||
call separator ; "³" (¨«¨ " ") à §¤¥«¨â¥«ì ª®«®®ª
|
||
; 2 ª®«®ª (à §¬¥à ä ©« )
|
||
push hl
|
||
ld de,17 ; ᬥé. à §¬¥à ä ©«
|
||
add hl,de
|
||
call L0020 ; de = à §¬¥à ä ©«
|
||
ld c,(hl)
|
||
inc hl
|
||
ld b,(hl)
|
||
push bc
|
||
exx
|
||
pop hl
|
||
exx
|
||
ex de,hl
|
||
ld a,1
|
||
ld (put_mega),a ; ãáâ. ä« £
|
||
ld bc,0120h ; ¢¥¤ã騥 ¯à®¡¥«ë
|
||
call dec32 ; ¢ë¢®¤ à §¬¥à ä ©« (¢ ¯ ¥«¨)
|
||
ld hl,put_mega
|
||
ld (hl),0 ; á¡à. ä« £
|
||
pop hl
|
||
A2290: call separator ; "³" (¨«¨ " ") à §¤¥«¨â¥«ì ª®«®®ª
|
||
; 3 ª®«®ª (¤ â )
|
||
ld de,13
|
||
add hl,de ;+24 ¯¥à¥©â¨ ¤ âã
|
||
ex de,hl
|
||
ld a,(de)
|
||
and 1Fh
|
||
call dec8 ; ¢ë¢®¤ ¤ï
|
||
ld (ix+0),"." ; à §¤¥«¨â¥«ì "¤¥ì.¬¥áïæ"
|
||
inc ix
|
||
ld a,(de)
|
||
and 0E0h
|
||
ld b,a
|
||
inc de
|
||
ld a,(de)
|
||
and 1
|
||
or b
|
||
rlca
|
||
rlca
|
||
rlca
|
||
call dec8 ; ¢ë¢®¤ ¬¥áïæ
|
||
ld (ix+0),"." ; à §¤¥«¨â¥«ì "¬¥áïæ.£®¤"
|
||
inc ix
|
||
ld a,(de)
|
||
and 0FEh
|
||
rrca
|
||
add a,80
|
||
cp 100
|
||
jr c,$+4
|
||
sub 100
|
||
call dec8 ; ¢ë¢®¤ £®¤
|
||
call separator ; "³" (¨«¨ " ") à §¤¥«¨â¥«ì ª®«®®ª
|
||
; 4 ª®«®ª (¢à¥¬ï)
|
||
dec de
|
||
dec de
|
||
ld a,(de) ;+22 ï祩ª ¢à¥¬¥¨
|
||
and 0F8h
|
||
rrca
|
||
rrca
|
||
rrca
|
||
call dec8 ; ¢ë¢®¤ ç ᮢ
|
||
ld (ix+0),":" ; à §¤¥«¨â¥«ì "ç áë:¬¨ãâë"
|
||
inc ix
|
||
ld a,(de) ;+22
|
||
and 7
|
||
ld b,a
|
||
dec de
|
||
ld a,(de) ;+21
|
||
and 0E0h
|
||
or b
|
||
rlca
|
||
rlca
|
||
rlca
|
||
jp dec8 ; ¢ë¢®¤ ¬¨ãâ
|
||
;
|
||
; ¢ë¢®¤ ¨¬¥¨ ¯ ¯ª¨
|
||
; in: hl= ¤à¥á ¨¬¥¨
|
||
dir_name_full:
|
||
ld a,(hl)
|
||
push af
|
||
call dir_name ; ¢áâ ¢¨âì ¨¬ï ¯ ¯ª¨
|
||
ld b,3 ; ç¨á«® ¯à®¡¥«®¢
|
||
call spaces ; ¢áâ ¢¨âì ¯à®¡¥«ë
|
||
call separator ; "³" (¨«¨ " ") à §¤¥«¨â¥«ì ª®«®®ª
|
||
pop af
|
||
; 2 ª®«®ª
|
||
ld de,folder_string ; "Folder "
|
||
cp "." ; த¨â. ¯ ¯ª ?
|
||
jr nz,A2304_
|
||
ld de,up_string ; " Up "
|
||
A2304_: ex de,hl
|
||
ld b,7 ; ¤«¨ áâப¨
|
||
A2307_: ld a,(hl)
|
||
ld (ix+0),a ; ᨬ¢®« ¢ áâபã
|
||
inc hl
|
||
inc ix
|
||
djnz A2307_
|
||
ex de,hl
|
||
jp A2290 ; ¢ë¢®¤ ¤ âë ¨ ¢à¥¬¥¨
|
||
|
||
|
||
;-------------------------------------------------
|
||
; ¢ë¢®¤ ¨¬¥¨ ¯ ¯ª¨
|
||
;-------------------------------------------------
|
||
; in: hl= ç «® § ¯¨á¨ ª â «®£
|
||
; ix=¡ãä¥à
|
||
dir_name:
|
||
; ä®à¬ â "dir.ext" (¢á¥£¤ ¢ë¢®¤¨â 12 ᨬ¢®«®¢)
|
||
call directory1__
|
||
dec e
|
||
inc e
|
||
ret z
|
||
ld b,e
|
||
jp spaces ; ¤®¡ ¢¨âì ª®æ¥¢ë¥ ¯à®¡¥«ë
|
||
;
|
||
directory1__:
|
||
ld e,1 ; áç¥â稪 ¤®¯®«. ¯à®¡¥«®¢
|
||
ld b,8 ; ¨¬ï ¯ ¯ª¨
|
||
call directory3__
|
||
ld a,(hl)
|
||
cp " "
|
||
jr z,directory2__
|
||
dec e
|
||
ld (ix+0),"." ; ᨬ¢®« ¢ áâபã
|
||
inc ix
|
||
directory2__:
|
||
ld b,3 ; à áè. ¯ ¯ª¨
|
||
directory3__:
|
||
ld a,(hl)
|
||
cp " "
|
||
jr z,directory4__
|
||
; ¢ë¢®¤ ᨬ¢®«
|
||
ld (ix+0),a ; ᨬ¢®« ¢ áâபã
|
||
inc ix
|
||
inc hl
|
||
djnz directory3__
|
||
ret
|
||
directory4__:
|
||
inc hl
|
||
inc e
|
||
djnz directory4__
|
||
ret
|
||
|
||
|
||
;-------------------------------------------------
|
||
; Medium
|
||
;-------------------------------------------------
|
||
fill_med:
|
||
bit 6,b
|
||
jp nz,fill_med_spec ; med-spec
|
||
; ms-dos
|
||
ld a,(de) ;+11 ᬥé. ¤® ¡ ©â âਡã⮢
|
||
bit 4,a ; ¯ ¯ª ?
|
||
jp nz,dir_name_med ; ¤ , ¢ë¢®¤ ¨¬¥¨
|
||
; ä®à¬ â "file.ext" (¢á¥£¤ ¢ë¢®¤¨â 15 ᨬ¢®«®¢)
|
||
ld d,0 ; ¬ «¥ìª¨¥ ¡ãª¢ë
|
||
fill_med1:
|
||
call fill_med1__
|
||
fill_med__:
|
||
ld a,(string_len)
|
||
sub 15 ; 15=¤«¨ áâப¨ ¨¬¥¨
|
||
ld b,a
|
||
jp spaces
|
||
;
|
||
fill_med1__:
|
||
call fill_med2__
|
||
fill_med11__:
|
||
ld b,e
|
||
jp spaces ; ¤®¡ ¢¨âì ª®æ¥¢ë¥ ¯à®¡¥«ë
|
||
;
|
||
fill_med2__:
|
||
ld b,8 ; ¨¬ï ä ©«
|
||
ld e,1+3 ; áç¥â稪 ¤®¯®«. ¯à®¡¥«®¢
|
||
call fill_med4__
|
||
ld a,(hl)
|
||
cp " "
|
||
jr z,fill_med3__
|
||
dec e
|
||
ld (ix+0),"." ; ᨬ¢®« ¢ áâபã
|
||
inc ix
|
||
fill_med3__:
|
||
ld b,3 ; à áè.
|
||
fill_med4__:
|
||
ld a,(hl)
|
||
cp " "+1
|
||
jr c,fill_med7__
|
||
; ¢ë¢®¤ ᨬ¢®«
|
||
bit 0,d
|
||
jr nz,fill_med6__ ; ¥ ¬¥ïâì ॣ¨áâà ¡ãª¢
|
||
cp "_"
|
||
jr z,fill_med6__
|
||
set 5,a
|
||
cp "ð" ; 240
|
||
jr nz,fill_med6__
|
||
inc a ; 241 = "ñ"
|
||
fill_med6__:
|
||
ld (ix+0),a ; ᨬ¢®« ¢ áâபã
|
||
inc ix
|
||
inc hl
|
||
djnz fill_med4__
|
||
ret
|
||
fill_med7__:
|
||
inc hl
|
||
inc e
|
||
djnz fill_med7__
|
||
ret
|
||
;
|
||
dir_name_med:
|
||
call dir_name ; ¢áâ ¢¨âì ¨¬ï ¯ ¯ª¨
|
||
ld a,(string_len)
|
||
sub 12 ; ¤«¨ ¨¬¥¨ ¯ ¯ª¨
|
||
ld b,a ; ç¨á«® ¯à®¡¥«®¢
|
||
jp spaces ; ¢áâ ¢¨âì ¯à®¡¥«ë
|
||
|
||
; ¢áâ ¢¨âì ᯥª-¨¬ï "file.ext" ä®à¬ â
|
||
;--------------------------------------
|
||
fill_med_spec:
|
||
call fill_med_spec_name
|
||
jr fill_med__
|
||
;
|
||
fill_med_spec_name:
|
||
ld b,8-1 ; ¨¬ï ä ©«
|
||
ld e,1+3 ; áç¥â稪 ¤®¯®«. ¯à®¡¥«®¢
|
||
call fill_med_spec2
|
||
ld a,(hl)
|
||
cp " "
|
||
jr z,fill_med_spec1
|
||
dec e
|
||
ld (ix+0),"." ; ᨬ¢®« ¢ áâபã
|
||
inc ix
|
||
fill_med_spec1:
|
||
call fill_spec_ext1 ; ᪮¯¨à. à áè.
|
||
jr fill_med11__ ; ¤®¡ ¢¨âì ª®æ. ¯à®¡¥«ë
|
||
;
|
||
fill_med_spec2:
|
||
ld a,(hl)
|
||
and 7Fh ; á¡à.7-© ¡¨â (¬ àª.ä ©« )
|
||
ld (ix+0),a
|
||
inc ix
|
||
inc hl
|
||
fill_med_spec3:
|
||
ld a,(hl)
|
||
cp " "
|
||
jr nz,fill_med_spec4
|
||
inc hl
|
||
ld a,(hl)
|
||
dec hl
|
||
cp " "
|
||
jr z,fill_med_spec5
|
||
ld a,b
|
||
dec a
|
||
jr z,fill_med_spec5
|
||
ld a,"_" ;" " ; ᨬ¢®« ¢ãâਠ¨¬¥¨
|
||
fill_med_spec4:
|
||
ld (ix+0),a
|
||
inc ix
|
||
inc hl
|
||
djnz fill_med_spec3
|
||
ret
|
||
;
|
||
fill_med_spec5:
|
||
inc hl
|
||
inc e
|
||
djnz fill_med_spec5
|
||
ret
|
||
|
||
|
||
;-------------------------------------------------
|
||
; Brief
|
||
;-------------------------------------------------
|
||
fill_brief:
|
||
bit 6,b
|
||
jr nz,fill_brief_spec ; brief-spec
|
||
; ms-dos
|
||
ld a,(de) ;+11 ᬥé. ¤® ¡ ©â âਡã⮢
|
||
bit 4,a ; ¯ ¯ª ?
|
||
jp nz,dir_name ; ¤ , ¢ë¢®¤ ¨¬¥¨
|
||
; ä®à¬ â "filename ext"
|
||
ld b,8
|
||
call L22BD ; ¨¬ï ä ©«
|
||
ld (ix+0)," "
|
||
inc ix
|
||
ld b,3
|
||
jp L22BD ; à áè. ä ©«
|
||
;
|
||
; ä®à¬ â "filename ext"
|
||
fill_brief_spec:
|
||
ld b,1 ; ç¨á«® ¯à®¡¥«®¢ ¬¥¦¤ã "Filename" ¨ "Ext"
|
||
jp fill_spec_name
|
||
|
||
|
||
;-------------------------------------------------
|
||
; Full-Spec
|
||
;-------------------------------------------------
|
||
;º Name ³ Size³Start³SSz³Trk³Secº
|
||
;ºFilename Ext³00000³00000³000³000³000º
|
||
;
|
||
fill_full_spec:
|
||
ld b,3 ; ç¨á«® ¯à®¡¥«®¢ ¬¥¦¤ã "Filename" ¨ "Ext"
|
||
call fill_spec_name ; ¢ë¢®¤ "Filename Ext"
|
||
fill_full_spec1:
|
||
inc hl ; áâ àâ. ¤à¥á ä ©« (2-ï ¡ãª¢ à áè.)
|
||
push hl
|
||
; ª®«®ª "Size"
|
||
inc hl
|
||
inc hl
|
||
call L0020 ; ¢ de à §¬¥à ä ©« ¢ ¡ ©â å
|
||
call dec16s ; 16-bit ç¨á«® á ¢¥¤. ¯à®¡¥« ¬¨
|
||
call separator ; "³"
|
||
pop hl
|
||
; ª®«®ª "Start"
|
||
call L0020 ; ¢ de áâ àâ. ¤à¥á
|
||
call dec16s
|
||
call separator
|
||
inc hl
|
||
inc hl
|
||
; ª®«®ª "SSz"
|
||
ld a,(hl) ; à §¬¥à ä ©« ¢ ᥪâ®à å
|
||
inc hl
|
||
call dec9 ; 0..999 ç¨á«® á ¢¥¤. ¯à®¡¥« ¬¨
|
||
call separator
|
||
db 3Eh ; ld a,..
|
||
trd_records:
|
||
db true ; ä« £ trd-á¯¨áª ä ©«®¢
|
||
or a
|
||
jr z,fill_spec_scl
|
||
; ª®«®ª "Trk" (®¬¥à ¤®à®¦ª¨ ä ©« )
|
||
inc hl
|
||
ld a,(hl)
|
||
call dec9
|
||
call separator
|
||
dec hl
|
||
; ª®«®ª "Sec" (®¬¥à ¯¥à¢®£® ᥪâ®à ä ©« )
|
||
ld a,(hl)
|
||
jp dec9
|
||
;
|
||
; SCL-ᯨ᮪ ä ©«®¢
|
||
fill_spec_scl:
|
||
ld b,3
|
||
call spaces ; ®ç¨áâ¨âì ª®«®ªã "Trk"
|
||
call separator
|
||
ld b,3
|
||
jp spaces ; ®ç¨áâ¨âì ª®«®ªã "Sec"
|
||
|
||
; ˆ¬ï ᯥª-ä ©« ä®à¬ â "Filename Ext"
|
||
; ¢å®¤: b=ç¨á«® ¯à®¡¥«®¢ ¬¥¦¤ã "Filename" ¨ "Ext"
|
||
fill_spec_name:
|
||
push bc
|
||
ld a,(hl)
|
||
and 7Fh ; á¡à.7-© ¡¨â (¬ àª.ä ©« )
|
||
ld (ix+0),a
|
||
inc ix
|
||
inc hl
|
||
ld b,7
|
||
call A0E90 ; ᪮¯¨à. ¨¬ï ä ©«
|
||
pop bc
|
||
call spaces
|
||
push hl
|
||
call fill_spec_ext1 ; ᪮¯¨à. à áè.
|
||
call separator ; "³"
|
||
pop hl
|
||
ret
|
||
;
|
||
; Š®¯¨à®¢ ¨¥ ᯥª-à áè¨à¥¨ï ä ©«
|
||
fill_spec_ext1:
|
||
; § ¯à¥é¥ë ¢ ms-dos
|
||
; " + , . / : ; < = > [ \ ] |
|
||
; 22 2B 2C 2E 2F 3A 3B 3C 3D 3E 5B 5C 5D 7C
|
||
;
|
||
ld bc,0320h ; à áè./¯à®¡¥«
|
||
ld a,(hl)
|
||
cp "B" ; (B)asic-ä ©«
|
||
jr nz,fill_spec_ext__+1
|
||
ld (ix+0),a ; ᨬ¢®« ¢ áâபã
|
||
inc ix
|
||
inc hl
|
||
dec b
|
||
jr fill_spec_ext2__
|
||
fill_spec_ext__:
|
||
ld a,(hl)
|
||
cp " "+1
|
||
jr c,fill_spec_ext2__ ; ¥â à áè.
|
||
cp "z"+1
|
||
jr nc,fill_spec_ext2__
|
||
cp '"'
|
||
jr z,fill_spec_ext2__
|
||
cp "-"
|
||
jr z,fill_spec_ext1__
|
||
cp "," ; 2Ch
|
||
jr c,fill_spec_ext1__
|
||
cp "/"+1 ; 2Fh+1
|
||
jr c,fill_spec_ext2__
|
||
cp ":" ; 3Ah
|
||
jr c,fill_spec_ext1__
|
||
cp ">" ; 3Eh
|
||
jr c,fill_spec_ext2__
|
||
cp "["
|
||
jr c,fill_spec_ext1__
|
||
cp "_"+1
|
||
jr c,fill_spec_ext2__
|
||
cp "`"
|
||
jr z,fill_spec_ext2__
|
||
fill_spec_ext1__:
|
||
ld (ix+0),a ; ᨬ¢®« ¢ áâபã
|
||
inc ix
|
||
inc hl
|
||
djnz fill_spec_ext__
|
||
ret
|
||
;
|
||
fill_spec_ext2__:
|
||
ld (ix+0),c ; ᨬ¢®« ¢ áâபã
|
||
inc ix
|
||
inc hl
|
||
djnz fill_spec_ext2__
|
||
ret
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
;-------------------------------------------------
|
||
; ‚áâ ¢ª áâப¨ ¢ ¡ãä¥à (¬ «¥ìª¨¬¨ ¡ãª¢ ¬¨)
|
||
;-------------------------------------------------
|
||
; in: hl=áâப
|
||
; ix=¡ãä¥à
|
||
; b=¤«¨ ¢å®¤. áâப¨
|
||
;
|
||
L22BD: ld a,(hl)
|
||
inc hl
|
||
cp "_"
|
||
jr z,A22D0_
|
||
set 5,a
|
||
cp "ð" ; 240
|
||
jr nz,A22D0_
|
||
inc a ; 241 = "ñ"
|
||
A22D0_: ld (ix+0),a ; ᨬ¢®« ¢ áâபã
|
||
inc ix
|
||
djnz L22BD
|
||
ret
|
||
|
||
|
||
|
||
|
||
|
||
|
||
;-----------------------------------------------------------
|
||
; ‚뢮¤ ¨ä®à¬. áâப¨ ¢¨§ã ¯ ¥«¨
|
||
;-----------------------------------------------------------
|
||
print_status:
|
||
call test_show_panels ; â¥áâ ०¨¬ ¢ª«. ¯ ¥«¥©
|
||
ret z ; ¢ëª«.
|
||
ld a,(format_mode)
|
||
and form_info+form_qview
|
||
ret nz
|
||
call get_record ; ¤à¥á ⥪. § ¯¨á¨ ¢ ¯ ¯ª¥
|
||
ld b,a ;+11 âਡãâ ä ©«
|
||
jr print_status6__
|
||
;
|
||
print_status1:
|
||
db 21h ; ld hl,..
|
||
print_status1__:
|
||
dw 0 ; á®åà. ç «® § ¯¨á¨ (¨§ ª â «®£ )
|
||
db 6 ; ld b,..
|
||
print_status2__:
|
||
db 0 ; âਡãâ ä ©«
|
||
print_status6__:
|
||
; ®ç¨áâ¨âì áâ â. áâபã
|
||
di
|
||
ld (print_stat_stack),sp ; á®åà. á⥪
|
||
ld de,2020h ; ¯à®¡¥«ë
|
||
ld sp,status_string+42 ; ª®¥æ áâப¨ - 1
|
||
ld a,19 ; 38/2
|
||
print_stat_loop:
|
||
push de
|
||
dec a
|
||
jr nz,print_stat_loop
|
||
db 31h ; ld sp,..
|
||
print_stat_stack:
|
||
dw 0
|
||
ei
|
||
ld ix,status_string+4 ; ¡ãä¥à áâப¨
|
||
ld a," "
|
||
ld (separ__),a
|
||
ld a,(format_mode) ; ä®à¬ â ªâ. ¯ ¥«¨
|
||
bit 6,a ; spec
|
||
jr nz,print_status_spec
|
||
bit 4,b ; ¯ ¯ª ?
|
||
jr z,print_status4__ ; ¥â
|
||
bit 0,a ; full
|
||
jr z,print_status3__ ; ¥â
|
||
call dir_name ; ¢áâ ¢¨âì ⮫쪮 ¨¬ï ¯ ¯ª¨
|
||
jr print_status5__
|
||
;
|
||
print_status3__:
|
||
call dir_name_full ; ¢áâ ¢¨âì ¨¬ï+¤ â +¢à¥¬ï ¯ ¯ª¨
|
||
jr print_status5__
|
||
;
|
||
; ¨¬ï ä ©«
|
||
print_status4__:
|
||
ld d,1 ; ¥ ¬¥ïâì ॣ¨áâà ¡ãª¢
|
||
call fill_med1__ ; ä®à¬ â "file.ext" (¢ë¢®¤¨â 15 ᨬ¢.)
|
||
ld a,(format_mode) ; ä®à¬ â ªâ. ¯ ¥«¨
|
||
bit 0,a ; full
|
||
call z,fill_string1__ ; ¢áâ ¢¨âì à §¬¥à+¤ â +¢à¥¬ï
|
||
print_status5__:
|
||
ld a,"³"
|
||
ld (separ__),a ; ¢®ááâ. à §¤¥«¨â¥«ì
|
||
ld (ix+0),0 ; ª®¥æ ®¯¨á ⥫ï
|
||
; ¢ë¢®¤ £®â®¢®© áâப¨
|
||
ld hl,status_string ; ®¯¨á ⥫ì áâப¨
|
||
jp draw_text ; ¯®§¨æ. ¢ë¢®¤ áâப¨
|
||
;
|
||
;
|
||
; § ¯®«¥¨¥ ᯥª-áâப¨
|
||
print_status_spec:
|
||
; ä®à¬ â "file.ext"
|
||
push hl
|
||
call fill_med_spec_name ; ¢áâ ¢¨âì ᯥª. ¨¬ï
|
||
pop hl
|
||
ld bc,8 ; ᬥé. 1-î ¡ãª¢ã à áè.
|
||
add hl,bc ; ¤«ï ¯/¯ fill_full_spec1
|
||
ld a,(format_mode) ; ä®à¬ â ªâ. ¯ ¥«¨
|
||
bit 0,a ; full
|
||
call z,fill_full_spec1 ; ¢áâ ¢¨âì "Size-Start-SSz-Trk-Sec"
|
||
jr print_status5__ ; ¢ë¢®¤ £®â®¢®© áâப¨
|