File-Manager/OBJS/LISTBOX.ASM
2025-04-04 00:37:36 +10:00

1073 lines
24 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>à®à¨á®¢ª  ®¡ê¥ªâ 
; Object ~List Box~
; Input: HL-label
; Format mouse table:
; +0 - Object ~List Box"
; +1 - Xo position object
; +2 - Xi position object
; +3 - Yo position object
; +4 - Yi position object
; +5 - Xi position name
; +6 - ⥪. í«¥¬¥­â
; +7 - ç¨á«® í«¥¬¥­â®¢ ¢ ListBox
; +8,9 -  ¤à¥á ᯨ᪠
; +10 - Y pos line up
; +11 - Y pos line down
; +12 - Previos Y pos bar
; +13 - hot-¡ãª¢ 
; +14 - ª®­â¥ªáâ
;-----------------------------------------------------------
PListBox:
LD (IY+1),A
LD A,(HL) ;X pos
INC HL
LD C,A
LD (IX+4),A ;Save X pos
ADD A,(IX+0) ;Pos X from begin window
LD (IY+2),A ;+1 Xo
LD A,(HL) ;Y pos
INC HL
LD B,A
LD (IX+5),A ;Save Y pos
ADD A,(IX+1) ;Pos Y from begin window
LD (IY+4),A ;+3 Yo
CALL GetPutA
LD A,(HL) ;len X
INC HL
ADD A,3
LD (IX+6),A
LD B,A
ADD A,2
ADD A,(IY+2)
LD (IY+3),A ;Xi pos
LD A,(HL) ;len Y
INC HL
ADD A,2 ;Yi pos
ADD A,(IY+4)
LD (IY+5),A
LD A,"Ú"
LD (DE),A
INC DE
INC DE
LD A," " ; ¢¥¤ã騩 ¯à®¡¥«
LD (DE),A
INC DE
INC DE
DEC B
LD A,(color_array+24) ; 梥⠤¨ «. ®ª­ 
LD C,A
LD A,(HL)
LstBox0:INC HL
CP "&"
JR NZ,LstBox1
LD A,(HL)
LD (DE),A ; hot-¡ãª¢ã ¢ ¡ãä¥à
INC HL
INC DE
push bc
ld a,(color_array+25) ; 梥â hot-¡ãª¢ë ¤¨ «. ®ª­ 
ld b,a
ld a,c
and 0F0h
or b
ld (de),a ;  âਡãâ
pop bc
inc de
DEC B
LD A,(HL)
INC HL
LstBox1:LD (DE),A
INC DE
INC DE
DEC B
LD A,(HL)
OR A
JR NZ,LstBox0
INC HL
ld a,(hl)
inc hl
ld (iy+15),a ; hot-¡ãª¢ 
LD A," " ; ª®­æ¥¢®© ¯à®¡¥«
LD (DE),A
INC DE
INC DE
DEC B
LD A,(IX+6)
SUB B
ADD A,(IY+2)
inc a
LD (IY+6),A ; Xi ¯®«®¦. § £®«®¢ª 
LD A,B
OR A
JR Z,LstBox2
LD A,"Ä"
LD (DE),A
INC DE
INC DE
DJNZ $-3
LstBox2:LD A,"¿"
LD (DE),A
INC (IX+5)
LD A,(HL) ; ª®­â¥ªáâ
INC HL
LD (IY+16),A
SUB A
LD (IY+7),A ;’¥ª.í«¥¬.
LD (IY+8),A ;<3B>¥à¢ë© í«¥¬. ­  áâà ­¨æ¥
LD (IY+9),A ;Š®«-¢® í«¥¬.
LD E,(HL)
INC HL
LD (IY+10),E ;€¤à¥á ᯨ᪠
LD (IY+17),E ;€¤à¥á ᯨ᪠
LD D,(HL)
INC HL
LD (IY+11),D
LD (IY+18),D
PUSH HL
EX DE,HL
LD A,(HL)
OR A
JP Z,EndBox
; Next element list
LstBox3:LD C,(IX+4) ;pos element
LD B,(IX+5)
CALL GetPutA
LD A,(IX+6)
SUB 3
LD B,A
EX DE,HL
LD (HL),"³"
INC HL
INC HL
LD A,(IY+4)
SUB (IX+1)
INC A
CP (IX+5)
LD A,(color_array+29) ; 梥â ListBox- 
JR NZ,$+5
LD A,(color_array+31) ; 梥⠯®á«¥ 㪠§ â¥«ï
LD C,A
LD (HL)," "
INC HL
LD (HL),C
INC HL
LstBox4:LD A,(DE)
INC DE
CP 0Dh ; ª®­¥æ áâப¨
JR Z,NxtLst
LD (HL),A
INC HL
LD (HL),C
INC HL
DJNZ LstBox4
LD A,(DE)
INC DE
CP 0Dh ; ª®­¥æ áâப¨
JR NZ,$-4
NxtLst: LD A,B
OR A
JR Z,LstBox5
LD A," "
LD (HL),A
INC HL
LD (HL),C
INC HL
DJNZ $-4
LstBox5:LD (HL)," "
INC HL
LD (HL),C
INC HL
LD A,(IY+4)
SUB (IX+1)
INC A
CP (IX+5)
LD B,""
JR Z,PutLsBr
INC A
CP (IX+5)
LD B,"þ"
JR Z,PutLsBr
LD A,(IY+5)
SUB (IX+1)
SUB 2
CP (IX+5)
LD B,""
JR Z,PutLsBr
LD B,"±"
PutLsBr:LD (HL),B
INC HL
LD A,(color_array+32) ; 梥â áªà®««-¡ à 
LD (HL),A
INC HL
LD (HL),"³"
EX DE,HL
INC (IY+9)
INC (IX+5)
LD A,(IY+5)
SUB (IX+1)
DEC A
CP (IX+5)
JR Z,EndBox1
LD A,(HL)
OR A
JP NZ,LstBox3
EndBox: LD A,(IY+5)
SUB (IX+1)
SUB (IX+5)
DEC A
JR Z,EndBox1
LD B,A
LstBox6:PUSH BC
LD C,(IX+4) ;pos element
LD B,(IX+5)
CALL GetPutA
LD A,(IX+6)
DEC A
LD B,A
EX DE,HL
LD (HL),"³"
INC HL
INC HL
LD A,(color_array+29) ; 梥â ListBox- 
LD C,A
LD A," "
LD (HL),A
INC HL
LD (HL),C
INC HL
DJNZ $-4
LD A,(IY+4)
SUB (IX+1)
INC A
CP (IX+5)
LD B,""
JR Z,PutLsB1
INC A
CP (IX+5)
LD B,"þ"
JR Z,PutLsB1
LD A,(IY+5)
SUB (IX+1)
SUB 2
CP (IX+5)
LD B,""
JR Z,PutLsB1
LD B,"±"
PutLsB1:LD (HL),B
INC HL
LD A,(color_array+32) ; 梥â áªà®««-¡ à 
LD (HL),A
INC HL
LD (HL),"³"
EX DE,HL
INC (IX+5)
POP BC
DJNZ LstBox6
;
EndBox1:LD A,(HL)
OR A
JR Z,EndBox2
CP 0Dh ; ª®­¥æ áâப¨
INC HL
LD A,(HL)
JR NZ,$-4
INC (IY+9)
JR EndBox1+1
;
EndBox2:LD C,(IX+4) ;End string
LD B,(IX+5)
CALL GetPutA
EX DE,HL
LD (HL),"À"
INC HL
INC HL
LD B,(IX+6)
LD A,"Ä"
LD (HL),A
INC HL
INC HL
DJNZ $-3
LD (HL),"Ù"
LD A,(IY+4)
INC A
LD (IY+12),A ;line up
INC A
LD (IY+14),A ;prev pos
LD A,(IY+5)
SUB 2
LD (IY+13),A ;line down
POP HL
LD BC,19
LD (IY+0),C
ADD IY,BC
RET
GetLstBox:
LD HL,what
INC HL
INC HL
LD A,(IX+7)
ADD A,(IX+8)
LD (HL),A
RET
;-------------------------------------------------
; Ž¡à ¡®â稪 ᮡë⨩ ®¡ê¥ªâ®¢ ~List Box~
;-------------------------------------------------
EListBox:
ld hl,what ; ¯®«¥ ᮡë⨩
ld a,(hl)
inc hl
cp evMouseFr
jp z,ELmouse
cp evKeyboard
jp z,ELkeys
cp evMessage
jr z,ELmess
cp evCombKey
ret nz
bit 7,(ix+1) ; sel or nosel
jp nz,ELcomb ; ®¡ê¥ªâ 㦥 ¢ë¤¥«¥­
ld b,(hl) ;+1 what
inc hl
ld a,(hl) ;+2 what
cp 56h ; ªãàá®à ¢¯à ¢®
jp z,SetLstBox
push ix
ld e,(ix+0) ; à §¬¥à â ¡«¨æë "List Box"
ld d,0
add ix,de
bit 7,(ix+0)
pop ix
ret z ; ¥é¥ ­¥ ª®­¥æ ®¡ê¥ªâ®¢
cp 54h ; ªãàá®à ¢«¥¢®
jp z,SetLstBox
ld a,b
and 00111111b ; ¡¨âë Ctrl, Alt
ret nz
ld a,(hl) ;+2 what
cp 15+80h ; Tab ᪥­-ª®¤+80h
ret nz
; Shift+Tab
jp SetLstBox ; select my
; ‘®¡ë⨥ - á®®¡é¥­¨ï
ELmess: LD A,(HL) ;+1 what
INC HL
CP msHiddInvr
JR NZ,ELmess1
BIT 7,(IX+1)
RET NZ
LD A,(IX+9)
OR A
RET Z
JP HdLstBoxI
;
ELmess1:CP msNewList
RET NZ
LD E,(HL)
INC HL
LD D,(HL)
LD (IX+10),E
LD (IX+11),D
LD (IX+17),E
LD (IX+18),D
LD B,0
ELmess2:LD A,(DE)
INC DE
CP 0Dh
JR NZ,ELmess2
INC B
LD A,(DE)
OR A
JR NZ,ELmess2
ELmessE:LD (IX+9),B
CALL RsLstBoxI
SUB A
LD (IX+7),A
LD (IX+8),A
LD A,(IX+9)
OR A
JR Z,ELmesE1
BIT 7,(IX+1)
PUSH AF
CALL Z,HdLstBoxI
POP AF
CALL NZ,StLstBoxI
ELmesE1:CALL PrnLstBox
CALL LstBoxBar
JP ELboxex
; ‘®¡ë⨥ - ªãàá®à­ë¥ ª« ¢¨è¨
ELcomb: inc hl
ld de,ELexit
push de
ld a,(hl) ;+2 what
cp 58h ; ªãàá®à ¢¢¥àå
jr z,ELup
cp 52h ; ªãàá®à ¢­¨§
jp z,ELdown
cp 54h ; ªãàá®à ¢«¥¢®
jp z,ELpgup
cp 56h ; ªãàá®à ¢¯à ¢®
jp z,ELpgdwn
cp 59h ; PageUp
jp z,ELpgup
cp 53h ; PageDown
jp z,ELpgdwn
cp 57h ; Home
jp z,ELhome
cp 51h ; End
jp z,ELend
pop de
ret
ELup: LD A,(IX+9)
CP 2
RET C
LD A,(IX+7)
DEC A
JP M,ELup1
CALL RsLstBoxI
LD (IX+7),A
CALL StLstBoxI
CALL LstBoxBar
JP ELboxex
;
ELup1: LD A,(IX+8)
DEC A
RET M
LD (IX+8),A
LD L,(IX+10)
LD H,(IX+11)
JR Z,ELupn1
LD L,(IX+17)
LD H,(IX+18)
DEC HL
DEC HL
LD A,(HL)
CP 0Dh
JR NZ,$-4
INC HL
ELupn1: LD (IX+17),L
LD (IX+18),H
CALL PrnLstBox
CALL LstBoxBar
JP ELboxex
ELdown: LD A,(IX+9)
CP 2
RET C
LD A,(IX+5)
SUB (IX+4)
SUB 2
LD C,A
LD A,(IX+7)
ADD A,(IX+8)
INC A
CP (IX+9)
RET Z
SUB (IX+8)
CP C
JR Z,ELdown1
CALL RsLstBoxI
LD (IX+7),A
CALL StLstBoxI
CALL LstBoxBar
JP ELboxex
;
ELdown1:LD A,(IX+8)
INC A
LD (IX+8),A
LD L,(IX+10)
LD H,(IX+11)
JR Z,ELdwn1
LD L,(IX+17)
LD H,(IX+18)
LD A,(HL)
INC HL
CP 0Dh
JR NZ,$-4
ELdwn1: LD (IX+17),L
LD (IX+18),H
CALL PrnLstBox
CALL LstBoxBar
JP ELboxex
; Page Up
ELpgup: LD A,(IX+9)
CP 2
RET C
LD A,(IX+8)
OR A
LD B,1
JP Z,ELnopg
LD A,(IX+5)
SUB (IX+4)
SUB 2
LD C,A
LD A,(IX+8)
SUB C
JR NC,$+3
SUB A
LD (IX+8),A
JR ELpgex
ELpgdwn:LD A,(IX+9)
CP 2
RET C
LD A,(IX+5)
SUB (IX+4)
SUB 2
LD C,A
LD A,(IX+9)
SUB (IX+8)
LD B,A
CP C
JR C,ELnopg
JR Z,ELnopg
LD A,(IX+8)
ADD A,C
CP (IX+9)
JR C,$+6
LD A,(IX+9)
SUB C
LD (IX+8),A
ADD A,C
CP (IX+9)
JR C,ELpgex
JR Z,ELpgex
LD A,(IX+9)
SUB C
LD (IX+8),A
;
ELpgex: LD L,(IX+10)
LD H,(IX+11)
LD A,(IX+8)
OR A
JR Z,ELpgex1
LD B,A
LD A,(HL)
INC HL
CP 0Dh
JR NZ,$-4
DJNZ $-6
ELpgex1:LD (IX+17),L
LD (IX+18),H
CALL PrnLstBox
CALL LstBoxBar
LD A,(IX+7)
ADD A,(IX+8)
CP (IX+9)
JR C,ELboxex
LD A,(IX+9)
SUB (IX+8)
LD B,A
;
ELnopg: DEC B
LD A,B
CP (IX+7)
RET Z
CALL RsLstBoxI
LD (IX+7),A
CALL StLstBoxI
CALL LstBoxBar
;
ELboxex:LD HL,what
LD (HL),evMessage
INC HL
LD (HL),msNewElem
INC HL
LD A,(IX+7)
ADD A,(IX+8)
LD (HL),A ; ⥪. í«¥¬¥­â
call TransMessUp
jp get_fire
;ld b,8
;call get_mouse_info
;ret z
;HALT
;DJNZ $-5
;RET
; Home
ELhome: LD A,(IX+8)
OR A
JR Z,ELhome1
LD (IX+8),0
LD L,(IX+10)
LD H,(IX+11)
LD (IX+17),L
LD (IX+18),H
CALL PrnLstBox
ELhome1:LD A,(IX+7)
OR A
RET Z
CALL RsLstBoxI
LD (IX+7),0
CALL StLstBoxI
jp LstBoxBar
; End
ELend: LD A,(IX+8)
ADD A,(IX+7)
INC A
CP (IX+9)
RET Z
LD A,(IX+5)
SUB (IX+4)
SUB 2
LD C,A
LD A,(IX+9)
SUB C
JR C,ELend1
JR Z,ELend1
LD A,(IX+9)
SUB C
LD (IX+8),A
LD L,(IX+10)
LD H,(IX+11)
LD B,A
LD A,(HL)
INC HL
CP 0Dh
JR NZ,$-4
DJNZ $-6
LD (IX+17),L
LD (IX+18),H
CALL RsLstBoxI
CALL PrnLstBox
LD A,(IX+9)
DEC A
SUB (IX+8)
LD (IX+7),A
CALL StLstBoxI
jp LstBoxBar
;
ELend1: CALL RsLstBoxI
LD A,(IX+9)
DEC A
LD (IX+7),A
CALL StLstBoxI
jp LstBoxBar
; ‘®¡ë⨥ - ¬ë誠
ELmouse:LD E,(HL) ; X coord
INC HL
LD D,(HL) ; Y coord
LD A,E
BIT 7,(IX+2)
JR NZ,$+6
CP (IX+2) ;Xo pos
RET C ;<
BIT 7,(IX+3)
RET NZ
CP (IX+3) ;Xi pos
RET NC ;>
LD A,D
CP (IX+4) ;Yo pos list box
RET C
CP (IX+5) ;Yi pos list box
RET NC
BIT 7,(IX+1) ;Sel or nosel
PUSH DE
CALL Z,SetLstBox
POP DE
LD HL,ELexit
PUSH HL
LD A,(IX+9)
OR A
RET Z
LD A,E
ADD A,2
CP (IX+3)
JR Z,ELmous1
RET NC
LD A,E
CP (IX+2)
RET Z
LD A,D
CP (IX+4)
RET Z
INC A
CP (IX+5)
RET Z
LD A,D
SUB (IX+4)
DEC A
ADD A,(IX+8)
CP (IX+9)
JR C,$+6
LD A,(IX+9)
DEC A
SUB (IX+8)
CP (IX+7)
JR Z,SelLine
CALL RsLstBoxI
LD (IX+7),A
CALL StLstBoxI
CALL LstBoxBar
jp ELboxex
;
SelLine:POP HL
LD HL,what ; ¯®«¥ ᮡë⨩
LD (HL),evCommand
INC HL
LD (HL),cmSelect
RET
ELmous1:LD A,D
CP (IX+12)
RET C
JP Z,ELup
CP (IX+13)
JP Z,ELdown
RET NC
CP (IX+14)
RET Z
JP C,ELpgup
JP NC,ELpgdwn
RET
; ‘®¡ë⨥ - ®¡ëç­ë¥ ª« ¢¨è¨
ELkeys: ld a,(hl)
bit 7,(ix+1) ; sel or nosel
ret nz
cp 9 ; Tab
jr z,SetLstBox ; set button
inc hl
ld a,(hl) ;+2 what ᪥­-ª®¤
cp (ix+15) ; hot-¡ãª¢ 
ret nz
SetLstBox:
CALL MoveObj ;Select Button
CALL ResDialInv ;Reset previos invert
LD IX,DialTab+5
LD E,(IX+2) ;Xo
INC E
LD D,(IX+4) ;Y
LD A,(IX+6) ;Xi
SUB E
LD C,A
CALL SetDialInv
LD A,(IX+9)
OR A
CALL NZ,StLstBoxI
LD HL,what ; ¯®«¥ ᮡë⨩
LD (HL),evMessage
INC HL
LD (HL),msNewElem
INC HL
LD A,(IX+7)
ADD A,(IX+8)
LD (HL),A ; ⥪. í«¥¬¥­â
CALL TransMessUp
ELexit: LD HL,what
LD (HL),evNothing
RET
RsLstBoxI:
PUSH AF
LD A,(color_array+29) ; 梥â ListBox- 
CALL LstBoxInv
POP AF
RET
HdLstBoxI:
LD A,(color_array+31) ; 梥⠯®á«¥ 㪠§ â¥«ï
JR LstBoxInv
;
StLstBoxI:
LD A,(color_array+30) ; 梥â 㪠§ â¥«ï ListBox- 
LstBoxInv:
LD (lbcolor+1),A
PUSH IY
PUSH IX
PUSH IX
POP IY
LD IX,DialData ; â ¡«¨æ  ®á­. ¤¨ «. ®ª­ 
LD A,(IY+2)
SUB (IX+0)
INC A
LD C,A
LD A,(IY+4)
SUB (IX+1)
INC A
ADD A,(IY+7)
LD B,A
CALL GetPutA
PUSH DE
IN A,(SLOT3)
PUSH AF
LD A,(page_dial_screen)
OUT (SLOT3),A
LD A,(IY+3)
SUB (IY+2)
SUB 3
LD L,A
LD H,1
LD B,L
lbcolor:LD A,0
INC DE
LD (DE),A
INC DE
DJNZ $-3
POP AF
OUT (SLOT3),A
POP IX
LD E,(IY+2)
INC E
LD A,(IY+4)
INC A
ADD A,(IY+7)
LD D,A
CALL PutDialLn
POP IX
POP IY
RET
LstBoxBar:
LD A,(IX+7)
ADD A,(IX+8)
LD E,A
LD A,(IX+13)
SUB (IX+12)
SUB 2
LD C,A
CALL Mult8X8 ;CurLine*LenScrollBar=num16bit
LD A,H
OR L
JR Z,LBB1
LD A,(IX+9) ;num16bit/EquipElem
OR A
JR Z,$+3
DEC A
LD C,A
CALL Divis16X8
LBB1: LD A,(IX+12) ;‘¬¥é¥­¨¥ ®â ­ ç « 
INC A
ADD A,L
CP (IX+14)
RET Z
PUSH IY
PUSH IX
PUSH AF
PUSH IX
POP IY
LD IX,DialData
LD A,(IY+3)
SUB (IX+0)
SUB 2
LD C,A
LD A,(IY+14)
SUB (IX+1)
LD B,A
CALL GetPutA
IN A,(SLOT3)
PUSH AF
LD A,(page_dial_screen)
OUT (SLOT3),A
LD A,"±"
LD (DE),A
POP AF
OUT (SLOT3),A
LD A,(IY+3)
SUB 2
LD E,A
LD D,(IY+14)
LD A,D
CP 31
JR NC,LBe
BIT 7,E
JR NZ,LBe
LD A,E
CP 80
JR NC,LBe
LD A,(color_array+32) ; 梥â áªà®««-¡ à 
LD H,A
LD L,"±"
LD BC,1BB5h
SUB A
RST 08h
LBe: LD A,(IY+3)
SUB 2
LD E,A
POP AF
LD (IY+14),A
LD D,A
PUSH DE
CP 31
JR NC,LBe1
BIT 7,E
JR NZ,LBe1
LD A,E
CP 80
JR NC,LBe1
LD A,(color_array+32) ; 梥â áªà®««-¡ à 
LD H,A
LD L,"þ"
LD BC,1BB5h
SUB A
RST 08h
LBe1: POP DE
LD A,E
SUB (IX+0)
LD C,A
LD A,D
SUB (IX+1)
LD B,A
CALL GetPutA
IN A,(SLOT3)
PUSH AF
LD A,(page_dial_screen)
OUT (0E2h),A
LD A,"þ"
LD (DE),A
POP AF
OUT (SLOT3),A
POP IX
POP IY
RET
PrnLstBox:
PUSH IY
PUSH IX
IN A,(SLOT3)
PUSH AF
LD A,(page_dial_screen)
OUT (SLOT3),A
PUSH IX
POP IY
LD IX,DialData ; â ¡«¨æ  ®á­. ¤¨ «. ®ª­ 
LD L,(IY+17)
LD H,(IY+18)
LD A,(IY+2)
SUB (IX+0)
ADD A,2
LD C,A
LD A,(IY+4)
SUB (IX+1)
INC A
LD B,A
LD A,(IY+5)
SUB (IY+4)
SUB 2
PrLsBx0:PUSH AF
PUSH BC
CALL GetPutA
LD A,(IY+3)
SUB (IY+2)
SUB 5
LD B,A
PrLsBx1:LD A,(HL)
INC HL
CP 0Dh
JR Z,PrLsBx2
LD (DE),A
INC DE
INC DE
DJNZ PrLsBx1
LD A,(HL)
INC HL
CP 0Dh
JR NZ,$-4
PrLsBx2:LD A,B
OR A
JR Z,PrLsBx3
LD A," " ; ª®­æ. ¯à®¡¥«ë ⥪. ¯ã­ªâ 
LD (DE),A
INC DE
INC DE
DJNZ $-3
PrLsBx3:POP BC
INC B
POP AF
DEC A
JR Z,PrLsBx4
LD E,(HL)
INC E
DEC E
JR NZ,PrLsBx0
PrLsBx4:OR A
JR Z,PrLsBx6
PrLsBx5:PUSH AF
PUSH BC
CALL GetPutA
LD A,(IY+3)
SUB (IY+2)
SUB 5
LD B,A
SUB A
LD (DE),A
INC DE
INC DE
DJNZ $-3
POP BC
INC B
POP AF
DEC A
JR NZ,PrLsBx5
PrLsBx6:CALL PutDial
POP AF
OUT (SLOT3),A
POP IX
POP IY
RET
; <20>à®æ¥¤ãà  ¤¥«¥­¨ï (16x8bit)
; ¢å®¤: HL/C
; ¢ë室: l=楫®¥, h=®áâ â®ª
Divis16X8:
LD B,8
Div16X8:ADD HL,HL
LD A,H
JR C,Div1
SUB C
JR NC,Div2
ADD A,C
LD H,A
DJNZ Div16X8
RET
Div1: SUB C
Div2: LD H,A
INC HL
DJNZ Div16X8
RET
; <20>à®æ¥¤ãà  ã¬­®¦¥­¨ï (8*8bit)
; ¢å®¤: e * c
; ¢ë室: hl=१ã«ìâ â
Mult8X8:SUB A
LD L,A
LD H,A
LD D,A
CP C
RET Z
CP E
RET Z
LD H,C
LD B,8
Mlt8x8: ADD HL,HL
JR NC,$+3
ADD HL,DE
DJNZ Mlt8x8
RET