mirror of
https://github.com/Tolik-Trek/File-Manager.git
synced 2026-06-15 01:11:36 +03:00
263 lines
4.6 KiB
NASM
Executable File
263 lines
4.6 KiB
NASM
Executable File
;-----------------------------------------------------------
|
||
; <20>à®à¨á®¢ª ®¡ê¥ªâ ~Process Line~.
|
||
; <20>ਠ¬ ªá. ç¨á«¥ ¬¥ì襬, 祬 è¨à¨ «¨¥©ª¨ ¯à®æ¥áá ,
|
||
; ¯®£à¥è®áâì ¡®«ìè ï (¥ § ªà 訢 ¥âáï ¢áï «¨¥©ª ).
|
||
;
|
||
; Object ~Process Line~
|
||
; Input: HL-label
|
||
; Format mouse table:
|
||
; +0 - Object ~Process line~
|
||
; +1 - Xo position object
|
||
; +2 - Xi position object
|
||
; +3 - Y position object
|
||
; +4 - ¯®§. ¯¥ç â¨
|
||
; +5,6 - ª®«-¢® ¥¤¨¨æ 1 ¤¥«¥¨¥ ¯à®æ¥áá
|
||
; +7,8 - ï祩ª , £¤¥ ⥪. ç¨á«® ¥¤¨¨æ
|
||
; +9,10 - ¯®¤¯à®£à ¬¬ ¯à®æ¥áá
|
||
;-----------------------------------------------------------
|
||
; db ProcesLine
|
||
; dw 0504h ; Y,X ¯®«®¦.
|
||
; db 72 ; ¤«¨ «¨¥©ª¨
|
||
; dw FileBytes ; ¤à¥á ï祩ª¨ á MAX ç¨á«®¬
|
||
; dw CurrBytes ; ¤à¥á ï祩ª¨ á ⥪. ç¨á«®¬
|
||
;ConCall:dw 0 ; ¤à¥á ¯®¤¯à®£à ¬¬ë ¯à®æ¥áá
|
||
;-----------------------------------------------------------
|
||
;FileBytes:
|
||
; dw 0,0 ; à §¬¥à ä ©«
|
||
;CurrBytes:
|
||
; dw 0,0 ; ⥪. ᬥ饨¥ ¢ ä ©«¥
|
||
;-----------------------------------------------------------
|
||
PProcess:
|
||
ld (iy+1),a ;+0 object
|
||
ld a,(hl) ; X pos
|
||
inc hl
|
||
ld c,a
|
||
add a,(ix+0) ; Pos X from begin screen
|
||
ld (iy+2),a ;+1 Xo
|
||
ld a,(hl) ; Y pos
|
||
inc hl
|
||
ld b,a
|
||
add a,(ix+1) ; Pos Y from begin screen
|
||
ld (iy+4),a ;+3 Yo
|
||
ld a,(hl)
|
||
inc hl
|
||
add a,(iy+2)
|
||
ld (iy+3),a
|
||
ld (iy+5),0 ; ¯®§. ¢ë¢®¤
|
||
ld e,(hl) ; £¤¥ ¬ ªá.
|
||
inc hl
|
||
ld d,(hl)
|
||
inc hl
|
||
push ix
|
||
push hl
|
||
push bc
|
||
ex de,hl
|
||
ld e,(hl) ; HL,IX - max. ¥¤¨¨æ
|
||
inc hl
|
||
ld d,(hl)
|
||
inc hl
|
||
push de
|
||
pop ix ; ¬«. à §àï¤
|
||
ld a,(hl)
|
||
inc hl
|
||
ld h,(hl) ; áâ. àï§àï¤
|
||
ld l,a
|
||
ld a,(iy+3)
|
||
sub (iy+2)
|
||
ld c,a ; ª®«-¢® ¤¥«¥¨© ¯à®æ¥áá (è¨à¨ «¨¥©ª¨)
|
||
ld b,0
|
||
call Divis32
|
||
db 0DDh
|
||
ld a,l
|
||
ld (iy+6),a ; +6,+7 ª®íä䍿¨¥â
|
||
db 0DDh
|
||
ld a,h
|
||
ld (iy+7),a
|
||
pop bc
|
||
pop hl
|
||
pop ix
|
||
ld a,(hl)
|
||
inc hl
|
||
ld (iy+8),a
|
||
ld a,(hl)
|
||
inc hl
|
||
ld (iy+9),a
|
||
ld a,(hl)
|
||
inc hl
|
||
ld (iy+10),a
|
||
ld a,(hl)
|
||
inc hl
|
||
ld (iy+11),a
|
||
call GetPutA
|
||
ex de,hl
|
||
ld a,(color_array+52) ; 30h 梥⠫¨¥©ª¨ ¯à®æ¥áá
|
||
ld c,a
|
||
ld a,(iy+3)
|
||
sub (iy+2)
|
||
ld b,a
|
||
ld (hl),"°"
|
||
inc hl
|
||
ld (hl),c
|
||
inc hl
|
||
djnz $-5
|
||
ex de,hl
|
||
ld de,12
|
||
ld (IY+0),e
|
||
add iy,de
|
||
ret
|
||
|
||
|
||
|
||
|
||
|
||
;-----------------------------------------------------------
|
||
;
|
||
; Ž¡à ¡®â稪 ᮡë⨩ ®¡ê¥ªâ®¢ ~Process Line~
|
||
;
|
||
;-----------------------------------------------------------
|
||
; ¯/¯ ¯à®æ¥áá ¤®«¦ ¢®§¢à é âì "Carry", ¥á«¨
|
||
; ¯à®æ¥áá § ª®ç¥.
|
||
EProcess:
|
||
push ix
|
||
ld de,EProcNx ; ¤à¥á ¢ë室
|
||
push de
|
||
ld l,(ix+10) ; <20>®¤¯à®£à ¬¬
|
||
ld h,(ix+11) ; ¯à®æ¥áá
|
||
jp (hl)
|
||
;
|
||
EProcNx:pop ix
|
||
push af
|
||
push ix
|
||
ld l,(ix+8) ; ⥪. ¯®«®¦¥¨¥
|
||
ld h,(ix+9)
|
||
ld c,(ix+6) ; bc=ª®íä䍿¨¥â
|
||
ld b,(ix+7)
|
||
ld e,(hl) ; hl,ix = cur. ¥¤¨¨æ
|
||
inc hl
|
||
ld d,(hl)
|
||
inc hl
|
||
push de
|
||
pop ix
|
||
ld a,(hl) ; áâ. à §àï¤
|
||
inc hl
|
||
ld h,(hl)
|
||
ld l,a
|
||
call Divis32 ; hl,ix / bc
|
||
db 0DDh
|
||
ld a,l
|
||
pop ix
|
||
ld b,a
|
||
ld a,(ix+3)
|
||
sub (ix+2)
|
||
ld c,a
|
||
cp b
|
||
ld a,b
|
||
jr nc,$+3
|
||
ld a,c
|
||
sub (ix+5) ; ¯à¥¤. ¯®§¨æ¨ï ¢ë¢®¤
|
||
jp z,ProcEx1
|
||
ld b,a ; à §¨æ ¬¥¦¤ã ¯®«®¦¥¨ï¬¨
|
||
ld c,(ix+5)
|
||
add a,c
|
||
ld (ix+5),a ; § ¯®¬. ⥪. ¯®«®¦¥¨¥
|
||
ld a,(ix+2) ; Xo
|
||
add a,c ; ⥪. ¯®«®¦¥¨¥
|
||
ld e,a
|
||
ld d,(ix+4) ; Yo
|
||
push de
|
||
push bc
|
||
bit 7,(ix+3) ; Xi
|
||
jr nz,ProcExt
|
||
bit 7,e
|
||
jr z,proc1
|
||
ld a,e
|
||
neg
|
||
sub b
|
||
neg
|
||
jr z,ProcExt
|
||
jp m,ProcExt
|
||
ld b,a
|
||
ld e,0
|
||
proc1: ld a,e
|
||
cp 80
|
||
jr nc,ProcExt
|
||
add a,b
|
||
cp 80
|
||
jr c,proc2
|
||
ld a,80
|
||
sub e
|
||
ld b,a
|
||
proc2: ld a,d
|
||
cp 31
|
||
jr nc,ProcExt
|
||
push ix
|
||
push bc
|
||
ld c,84h ; ãáâ. ªãàá®à
|
||
rst 08h
|
||
pop bc ; b=ç¨á«® ᨬ¢®«®¢
|
||
ld a,"Û"
|
||
ld c,82h
|
||
rst 08h
|
||
pop ix
|
||
ProcExt:pop hl ; h=ç¨á«® ¥¤¨¨æ
|
||
pop bc ; ¯®§¨æ¨ï íªà ¥
|
||
push ix
|
||
in a,(SLOT3)
|
||
push af
|
||
ld a,(page_dial_screen) ; áâà. ¡ãä¥à
|
||
out (SLOT3),a
|
||
ld ix,DialData ; â ¡«¨æ ®á. ¤¨ «. ®ª
|
||
ld a,c
|
||
sub (ix+0)
|
||
ld c,a
|
||
ld a,b
|
||
sub (ix+1)
|
||
ld b,a
|
||
call GetPutA
|
||
ld b,h
|
||
ld a,"Û"
|
||
ld (de),a
|
||
inc de
|
||
inc de
|
||
djnz $-3
|
||
pop af
|
||
out (SLOT3),a
|
||
pop ix
|
||
ProcEx1:pop af ; ä« £ ®â ¯/¯ ¯à®æ¥áá
|
||
ret nc ; ¯à®æ¥áá ¥ § ª®ç¨«áï
|
||
ld hl,what ; ¯®«¥ ᮡë⨩
|
||
ld (hl),evCommand
|
||
inc hl
|
||
ld (hl),cmOkey
|
||
ret
|
||
|
||
|
||
|
||
|
||
;-------------------------------------------------
|
||
; <20>à®æ¥¤ãà ¤¥«¥¨ï (32bit)
|
||
; ¢å®¤: hl,de / bc
|
||
; ¢ë室: de=楫®¥, hl=®áâ ⮪
|
||
;-------------------------------------------------
|
||
Divis32:ld a,b
|
||
or c
|
||
ret z
|
||
ex de,hl
|
||
ld hl,0
|
||
ld a,32
|
||
div32b1:add ix,ix
|
||
ex de,hl
|
||
adc hl,hl
|
||
ex de,hl
|
||
adc hl,hl
|
||
sbc hl,bc
|
||
jr nc,div32b2
|
||
add hl,bc
|
||
dec a
|
||
jr nz,div32b1
|
||
ret
|
||
div32b2:inc ix
|
||
dec a
|
||
jr nz,div32b1
|
||
ret
|