File-Manager/MOD0/OBJS/PROCESS.ASM
2025-04-05 01:58:39 +10:00

263 lines
4.6 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.

;-----------------------------------------------------------
; <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