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

101 lines
2.2 KiB
NASM
Executable File
Raw Permalink 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.

old1: dw 0 ; ¯®«®¦. 㪠§ â¥«ï
old2: dw 0 ; ᬥé. ᯨ᪠
old3: dw 0 ; ç¨á«® § ¯¨á¥©
; ä« £ ᬥ­ë ⥪. ¤¨áª  ¨«¨ ¯ãâ¨
change: db false ; 01/00 ¬¥­ï«áï/­¥â
; ‘®åà ­¨âì ¯®«®¦. 㪠§ â¥«ï ¨ ᯨ᪠
save_pos_list:
ld hl,(cur_pointer) ; áâ à®¥ ¯®«®¦. 㪠§ â¥«ï
ld (old1),hl
ld hl,(offset_list) ; áâ à®¥ ᬥé. ᯨ᪠
ld (old2),hl
ld hl,(all_files) ; áâ à®¥ ç¨á«® § ¯¨á¥©
ld (old3),hl
ret
; “áâ ­®¢¨âì ¯®«®¦. 㪠§ â¥«ï ¨ ᯨ᪠
; ¯®á«¥ ­®¢®£® ç⥭¨ï ᯨ᪠.
set_newpos_list:
ld a,(change) ; ä« £ ᬥ­ë ⥪. ¤¨áª  ¨«¨ ¯ãâ¨
or a
jr nz,set_zero_pos ; ¬¥­ï«áï, á¡à. ¯®«®¦. 㪠§ â¥«ï
ld de,(all_files) ; ­®¢®¥ ç¨á«® § ¯¨á¥©
ld hl,(old3) ; ¯à¥¦­¥¥ ç¨á«® § ¯¨á¥©
and a
sbc hl,de ; ç¨á«® § ¯¨á¥© ¨§¬¥­¨«®áì ?
jr nz,set_new_pos ; ¤ 
set_old_pos:
ld hl,(old1) ; ¯à¥¦­¥¥ ¯®«®¦. 㪠§ â¥«ï
ld (cur_pointer),hl
ld hl,(old2) ; ¯à¥¦­¥¥ ᬥé. ᯨ᪠
ld (offset_list),hl
ret
set_new_pos:
ld hl,(old1) ; ¯à¥¦­¥¥ ¯®«®¦. 㪠§ â¥«ï
ld bc,(old2) ; ¯à¥¦­¥¥ ᬥé. ᯨ᪠
add hl,bc
and a
sbc hl,de
jr c,set_old_pos
; ¯à¥¦­¥¥ ¯®«®¦. 㪠§ â¥«ï > ­®¢®£® ç¨á«  § ¯¨á¥©
jr set_to_end_list ; ¢ ª®­¥æ ᯨ᪠
; á¡à®á¨âì ¯®«®¦. 㪠§ â¥«ï ¨ ᯨ᪠
; ¤¨áª ¨«¨ ¯ãâì ¬¥­ï«áï.
set_zero_pos:
xor a
ld l,a
ld h,a
ld (change),a ; á¡à. ä« £ ᬥ­ë ⥪. ¤¨áª  ¨«¨ ¯ãâ¨
ld (offset_list),hl ; ᬥé. ᯨ᪠
set_zr: ld (cur_pointer),hl ; ⥪. ¯®«®¦. 㪠§ â¥«ï
ret
; ãáâ. 㪠§ â¥«ì ­  ª®­¥æ ᯨ᪠
set_to_end_list:
ld bc,(all_files) ; ç¨á«® § ¯¨á¥©
ld hl,(cur_pointer)
ld de,(offset_list) ; ᬥé. ᯨ᪠
add hl,de
inc hl
ld a,l
sub c
ld a,h
sbc a,b
ret z ; 㪠§ â¥«ì ¢ ª®­æ¥ ᯨ᪠
ld de,(_0D01+1) ; à §¬¥à áâà ­¨æë - 1
ld l,c ; hl=all_files
ld h,b
call cmphlde
jr nc,set_end_lst2
; ç¨á«® ä ©«®¢ ¬¥­ìè¥ á¯¨áª  ¯ ­¥«¨
set_end_lst1:
dec hl
jr set_zr ; ãáâ. ⥪. ¯®«®¦. 㪠§ â¥«ï
;
set_end_lst2:
ld bc,-1 ; áç¥â稪
dec hl ; --all_files
inc bc
call cmphlde ; hl ¨ "à §¬¥à áâà ­¨æë - 1"
jr nc,$-5
ld hl,(offset_list) ; ᬥé. ᯨ᪠
and a
sbc hl,bc
jr c,set_end_lst3
; 㪠§ â¥«ì ¢ ¯à¥¤¥« å ¯®á«¥¤. áâà ­¨æë ᯨ᪠
ex de,hl
jr set_end_lst1
;
set_end_lst3:
dec bc
ld (offset_list),bc
inc de
ld (cur_pointer),de
ret