File-Manager/CORE/UTILS.ASM
2025-04-05 01:58:39 +10:00

361 lines
6.9 KiB
NASM
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

max_width_dest equ 34 ; à §¬¥à ¡ãä¥à  áâப¨ ®¯¨á â¥«¥©
;--------------------------------------------------------------
; ‘à ¢­¥­¨¥ ¯ã⥩ (¨ ¤¨áª®¢) ¤¢ãå ¯ ­¥«¥©
; ¢ë室: Z - à ¢­ë
; NZ - ­¥ à ¢­ë
;--------------------------------------------------------------
compare_path_two_panels:
; áà ¢­¨âì ¤¨áª¨
ld a,(disk) ; ¤¨áª  ªâ. ¯ ­¥«¨
ld hl,disk1 ; ¤¨áª ¯ áá. ¯ ­¥«¨
cp (hl)
ret nz
; áà ¢­¨âì ¯ãâ¨
ld hl,(__buff) ; ¯ãâì  ªâ. ¯ ­¥«¨
ld de,(__buff1) ; ¯ãâì ¯ áá. ¯ ­¥«¨
comp_path_two_pan:
ld a,(de)
cp (hl)
ret nz
inc de
inc hl
ld a,(de)
or a
jr nz,comp_path_two_pan
cp (hl)
ret
;--------------------------------------------------------------
; <20>®¨áª ®â¬¥ç¥­­®© § ¯¨á¨ ¢ ᯨ᪥ ¯ ­¥«¨
; (¯®¨áª ¨¤¥â á ­ ç «  ᯨ᪠)
; ¢ë室: hl=­ ©¤¥­­ ï § ¯¨áì
; de=ï祩ª   âਡãâ  § ¯¨á¨
; a= âਡãâ § ¯¨á¨
; "Carry" - ­¥ ­ è«¨ § ¯¨áì
;--------------------------------------------------------------
scan_mark_records:
ld bc,(all_files) ; ç¨á«® § ¯¨á¥© ᯨ᪠
inc bc
ld hl,0 ; ­ ç âì á ­ ç «  ᯨ᪠
ld (scan_mark_numb+1),bc
ld (scan_mark_loop+1),hl
scan_mark_loop:
ld hl,0 ; á«¥¤. ¯®«®¦¥­¨¥ ¢ ᯨ᪥
scan_mark_numb:
ld bc,0 ; ç¨á«® ®áâ ¢è¨åáï § ¯¨á¥© ¢ ᯨ᪥
push hl
call get_record1 ; ᪠­¨à. ᯨ᮪ ¯ ­¥«¨
ld (scan_mark_rec+1),hl
ld (attr_record),a ;  âਡãâ ä ©«  (£«®¡. ï祩ª )
inc de
pop hl
inc hl ; ­  á«¥¤. § ¯¨áì
dec bc
ld (scan_mark_loop+1),hl
ld (scan_mark_numb+1),bc
ld a,c
or b
scf
ret z ; ª®­¥æ ᯨ᪠
ld a,(de) ;+12 ï祩ª  ®â¬¥âª¨
and 80h
jr z,scan_mark_loop ; § ¯¨áì ­¥ ®â¬¥ç¥­ 
; ­ è«¨ § ¯¨áì
scan_mark_rec:
ld hl,0 ;  ¤à¥á § ¯¨á¨
dec de
ld a,(de) ;+11  âਡãâ ä ©« 
or a ; á¡à. "Carry"
ret
;-----------------------------------------------------------
; Ž£à ­¨ç¥­¨¥ ­ ¡à ­­®© áâப¨ ¯¥à¢ë¬¨ 34-¬ï ᨬ¢®« ¬¨
; á æ¥­â஢ª®©.
; ¢å®¤: hl=¡ãä¥à ¢¢®¤  ~input line~
; de=ªã¤ 
;-----------------------------------------------------------
copy_dest_name:
push hl
push de
; ®ç¨áâ¨âì áâப㠮¯¨á â¥«ï
ld b,max_width_dest ; 34 à §¬¥à ¡ãä¥à 
ld a," "
ld (de),a
inc de
djnz $-2
xor a
ld (width_dest1__),a ; á¡à. ä« £ ¯¥à¥¯®«­. áâப¨
dec hl
ld a,(hl) ;+4 ¤«¨­  ¢¢¥¤. áâப¨
cp max_width_dest+1 ; 34+1
jr c,$+7 ; ¤«¨­  ¯ã⨠=< 32
ld a,max_width_dest ; 34
ld (width_dest1__),a ; ãáâ. ä« £ ¯¥à¥¯®«­. áâப¨
width_dest__:
ld c,a
; 業â஢ª  ¨¬¥­¨
ld a,max_width_dest ; 34 è¨à¨­  ¡ãä¥à  áâப¨
sub c
srl a ; /2
ld e,a
ld d,0
ld b,d
pop hl ; ªã¤ 
add hl,de
ex de,hl ; de=­ ç «® áâப¨ ¢ ®¯¨á â¥«¥
pop hl ; ®âªã¤ 
; ᪮¯¨à. áâபã
ld a,(hl)
cp "a"
jr c,$+4
res 5,a ; a..z -> A..Z
ld (de),a
inc hl
inc de
dec bc
ld a,c
or b
jr nz,$-13
db 3Eh ; ld a,..
width_dest1__:
db false
or a
ret z
; § ¯¨á âì ª®­æ¥¢ë¥ ".."
dec de
dec de
ld a,"."
ld (de),a
inc de
ld (de),a
ret
;-------------------------------------------------
; ‘ª®¯¨à®¢ âì ¨á室­®¥ ¨¬ï ä ©« /¯ ¯ª¨ "file.ext"
; ¢ áâப㠮¯¨á â¥«ï ®ª­ .
; ¢å®¤: bc=ªã¤ 
; ¢ë室: CF - ".." ⥪ãé ï § ¯¨áì
;-------------------------------------------------
copy_source_name:
ld hl,(mark_files) ; ç¨á«® ¢ë¤¥«. ä ©«®¢
ld a,l
or h
ret nz
call get_record ; ⥪. § ¯¨áì
ld (attr_record),a ;  âਡãâ ä ©«  (£«®¡. ï祩ª )
ld a,(hl) ; ¨¬ï ä ©« 
cp "."
scf
ret z ; ⥪ã騩 ".."
;-----------------------------------------------------------
; ‘ª®¯¨à®¢ âì ¨¬ï ä ©«  "file.ext" ¨ ®â業â஢ âì ¢ áâப¥
; ¢å®¤: hl=§ ¯¨áì ä ©« 
; bc=áâப  ®¯¨á â¥«ï ®ª­ 
; ¢ë室: § ¯®«­¥­­ë© ¡ãä¥à temp_fname
;-----------------------------------------------------------
copy_cur_fname:
call copyfname
; 業â஢ª  ¨¬¥­¨
ld a,12 ; ¡ãä¥à áâப¨
sub c
srl a ; /2
ld l,a
ld h,0
ld b,h
add hl,de
ex de,hl ; de=­ ç «® áâப¨ ¢ ®¯¨á â¥«¥
push bc
ld hl,work_buffer ; ®âªã¤ 
ldir
pop bc
ld hl,work_buffer ; ®âªã¤ 
ld de,temp_fname ; ªã¤ 
ldir
xor a
ld (de),a
ret
; ¢å®¤: bc=ªã¤ 
; ¢ë室: CF - ".." ⥪ãé ï § ¯¨áì
copyname:
ld hl,(mark_files) ; ç¨á«® ¢ë¤¥«. ä ©«®¢
ld a,l
or h
ret nz
call get_record ; ⥪. § ¯¨áì
ld (attr_record),a ;  âਡãâ ä ©«  (£«®¡. ï祩ª )
ld a,(hl) ; ¨¬ï ä ©« 
cp "."
scf
ret z ; ⥪ã騩 ".."
call copyfname
ld hl,work_buffer ; ®âªã¤ 
xor a
ld b,a
push bc
ldir
;inc hl
ld (hl),a
ex de,hl
ld (hl)," "
inc hl
ld (hl),"t"
inc hl
ld (hl),"o"
inc hl
ld (hl),":"
inc hl
pop bc
ld a,12
sub c
ret z
; ¤®¯¨á âì ¯à®¡¥«ë
ld (hl)," "
inc hl
dec a
jr nz,$-4
ret
; ᪮¯¨à. ¨¬ï ä ©« 
; ¢å®¤: bc=ªã¤  (¡ãä¥à 12 ¡ ©â)
; hl=¨¬ï ä ©« 
; ¢ë室: c=¤«¨­  ¨¬¥­¨
copyfname:
; ®ç¨áâ¨âì áâப㠮¯¨á â¥«ï
push bc
ld a," "
ld d,12
ld (bc),a
inc bc
dec d
jr nz,$-3
; ¨¬ï ¢ ä®à¬ â file.ext
ld ix,work_buffer ; ¢à¥¬. ¡ãä¥à
ld d,1 ; ­¥ ¬¥­ïâì ॣ¨áâà ¡ãª¢
bit 4,a ;  âਡãâ ä ©« 
jr nz,$+19 ; ¯ ¯ª 
ld a,(format_mode) ; ä®à¬ â  ªâ. ¯ ­¥«¨
and form_trd ; 6-© ¡¨â ᯥª-ä®à¬ â 
jr z,$+7
call fill_med_spec_name ; ᯥª-¨¬ï
jr $+10
call fill_med1__ ; "Filename.Ext" (¢á¥£¤  ¢ë¢®¤¨â 12 ᨬ¢.)
jr $+5
call dir_name_med ; ¢ë¢®¤ ¯ ¯ª¨ (¢á¥£¤  ¢ë¢®¤¨â 12 ᨬ¢.)
; ã§­ âì ¤«¨­ã ¨¬¥­¨
ld a,15 ; ª®­áâ ­â 
sub e
ld c,a
pop de ; ªã¤ 
ret
;-----------------------------------------------------------
; Ž£à ­¨ç¥­¨¥ ­ ¡à ­­®© áâப¨ ¯¥à¢ë¬¨ 34-¬ï ᨬ¢®« ¬¨
; ¢å®¤: hl=¡ãä¥à ¢¢®¤  ~input line~
; de=ªã¤ 
;-----------------------------------------------------------
copy_dstname:
push hl
push de
; ®ç¨áâ¨âì áâப㠮¯¨á â¥«ï
ld b,max_width_dest ; 34 à §¬¥à ¡ãä¥à 
ld a," "
ld (de),a
inc de
djnz $-2
xor a
ld (width_dst1__),a ; á¡à. ä« £ ¯¥à¥¯®«­. áâப¨
dec hl
ld a,(hl) ;+4 ¤«¨­  ¢¢¥¤. áâப¨
cp max_width_dest+1 ; 34+1
jr c,$+7 ; ¤«¨­  ¯ã⨠=< 32
ld a,max_width_dest ; 34
ld (width_dst1__),a ; ãáâ. ä« £ ¯¥à¥¯®«­. áâப¨
ld c,a
ld b,0
pop de ; ªã¤ 
pop hl ; ®âªã¤ 
; ᪮¯¨à. áâபã
ld a,(hl)
cp "a"
jr c,$+4
res 5,a ; a..z -> A..Z
ld (de),a
inc hl
inc de
dec bc
ld a,c
or b
jr nz,$-13
db 3Eh ; ld a,..
width_dst1__:
db false
or a
ret z
; § ¯¨á âì ª®­æ¥¢ë¥ ".."
dec de
dec de
ld a,"."
ld (de),a
inc de
ld (de),a
ret
;-----------------------------------------------------------
; ‘ª®¯¨à®¢ âì ¨¬ï ä ©«  "file.ext" ¨ ®â業â஢ âì ¢ áâப¥
; ¯à¨ ᪠­¨à®¢ ­¨¨ ¯ ¯ª¨.
; ¢å®¤: hl=¨¬ï ä ©«  ¢ ä®à¬ â¥ file.ext
; de=áâப  ®¯¨á â¥«ï ®ª­ 
;-----------------------------------------------------------
copy_cur_fname_alt:
; ®ç¨áâ¨âì áâப㠮¯¨á â¥«ï
push de
ld a," "
ld bc,0C00h ; áç¥â稪¨
ld (de),a
inc de
djnz $-2
pop de
push hl
; ã§­ âì ¤«¨­ã ¨¬¥­¨
ld a,(hl)
or a
jr z,$+6
inc c ; ++¤«¨­  ¨¬¥­¨
inc hl
jr $-6
; 業â஢ª  ¨¬¥­¨
ld a,12 ; ¡ãä¥à áâப¨
sub c
srl a ; /2
ld l,a
ld h,0
ld b,h
add hl,de
ex de,hl ; de=­ ç «® áâப¨ ¢ ®¯¨á â¥«¥
pop hl ; ®âªã¤ 
ldir
ret