FFORMAT/LISTBOX.ASM

1742 lines
37 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.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

; Œ¥âª¨ "@@@" - § ª®¬¬¥­â. ª®¤, çâ®¡ë ­¥ ®âà ¡ â뢠« ª«¨ª ¬ë誨 ­  ⥪ã饩
; ¯®§¨æ¨¨ ᯨ᪠ ¤«ï ¢ë室  ¨§ ListBox- 
;
; Œ¥âª¨ "###" - ®âà ¡®âª  "Enter" ª ª Tab
;
; Žâà¨á®¢ª  ®¡ê¥ªâ 
; Object ~List Box~
; Input: HL-label
; Format mouse table (IY=DialTab+5):
; +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 - Address list
; +0A - Y pos line up
; +0B - Y pos line down
; +0C - Previos Y pos bar
; +0D - Hot key
; +0E - Context
;
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,2
LD (IX+6),A
LD B,A
ADD A,3
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
ld a,ColLstBxFr
ld (de),a
INC DE
LD A," " ; ¢¥¤ãé. ¯à®¡¥« â¨â«  ®ª­ 
LD (DE),A
INC DE
INC DE
DEC B
ld a,(ColDialWn) ; 梥⠧ £®«®¢®ª  ListBox- 
LD C,A
LD A,(HL)
LstBox0:INC HL ; 横« ¯¥à¥­®á  § £®«®¢ª  ListBox- 
CP '~'
JR NZ,LstBox1
ld c,ColDhotkey
LD A,(HL)
INC HL
INC HL
LD (DE),A
INC DE
RES 5,A
LD (IY+0Fh),A ; hot-¡ãª¢ 
LD A,(DE)
AND 0F0h
OR C
LD (DE),A
INC DE
ld a,(ColDialWn)
LD C,A
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," " ; 墮áâ. ¯à®¡¥« â¨â«  ®ª­ 
LD (DE),A
INC DE
INC DE
DEC B
LD A,(IX+6)
SUB B
ADD A,(IY+2)
LD (IY+6),A ;Xi pos name
LD A,B
OR A
JR Z,LstBox2
lstbx2: LD A,"Ä"
LD (DE),A
INC DE
ld a,ColLstBxFr
ld (de),a
INC DE
DJNZ lstbx2
LstBox2:LD A,"¿"
LD (DE),A
inc de
ld a,ColLstBxFr
ld (de),a
INC (IX+5)
LD A,(HL) ; ï祩ª  ª®­â¥ªáâ  â¥ª. ListBox- 
LD (IY+10h),A
INC HL
; ãáâ. 㪠§ â¥«ì
ld de,(CurElem1) ; ¯®«®¦. 㪠§ â¥«ï 2-£® ListBox` 
ld b,14
or a ; ª®­â¥ªáâ ⥪. ListBox-a ?
jr nz,.loc1 ; 2-© ListBox
ld b,1
ld de,0 ; ¤«ï ®¤­®£® "A:"
ld a,(SetDriveB2) ; ¤¨áª®¢®¤  "B:" ­¥â ?
or a
jr nz,.loc1 ; "B:" ­¥â
inc b
ld de,(CurElem0) ; ¯®«®¦. 㪠§ â¥«ï 1-£® ListBox` 
.loc1: ld (iy+7),e ; ⥪.í«¥¬.
ld (iy+8),d ; ¯¥à¢ë© í«¥¬. ­  áâà ­¨æ¥
ld a,b
ld (elnum+1),a
ld a,d
ld b,d
ld (EndBox2+1),a
xor a
ld (iy+9),a ; ª®«-¢® í«¥¬¥­â®¢
ld e,(hl)
inc hl
ld d,(hl)
inc hl
ld (iy+0Ah),e ;  ¤à¥á ᯨ᪠
ld (iy+0Bh),d
;
.loc2: ld a,b
or a
jr z,.loc4
.loc3: ld a,(de)
inc de
cp 0Dh ; ª®­¥æ áâப¨
jr nz,.loc3
dec b
jr .loc2
;
.loc4: ld (iy+11h),e ;  ¤à¥á ᯨ᪠
ld (iy+12h),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 2
LD B,A ; ¤«¨­  ¢ë¢®¤. áâப ᯨ᪠
EX DE,HL
LD (HL),"³"
INC HL
ld (hl),ColLstBxFr
INC HL
ld c,ColListBox ; 梥â í«¥¬¥­â®¢ ListBox
ld a,(ix+5)
sub (ix+1)
inc a
cp (iy+7)
jr nz,lstbx4
ld c,ColLstBxHI ; 梥â 㪠§ â¥«ï ­¥  ªâ¨¢. ListBox- 
lstbx4: LD (HL)," " ; ¢¥¤ãé. ¯à®¡¥« ¢ ᯨ᪥ í«¥¬¥­â®¢
INC HL
LD (HL),C ;  âਡãâ
INC HL
LstBox4:LD A,(DE) ; 横« ¯¥à¥­®á  áâப¨ ᯨ᪠ ListBox- 
INC DE
CP 0Dh ; ª®­¥æ áâப¨
JR Z,NxtLst
LD (HL),A
INC HL
LD (HL),C
INC HL
DJNZ LstBox4 ; 横« ¯¥à¥­®á  áâப¨ ᯨ᪠
lstbx41:LD A,(DE)
INC DE
CP 0Dh ; ª®­¥æ áâப¨
JR NZ,lstbx41
NxtLst: LD A,B
OR A
JR Z,LstBox5
LD A," " ; § ¯®«­. á ª®­æ  áâப¨ í«¥¬¥­â 
lstbx42:LD (HL),A
INC HL
LD (HL),C ;  âਡãâ
INC HL
DJNZ lstbx42
LstBox5:LD (HL)," " ; 墮áâ. ¯à®¡¥« ¢ ᯨ᪥
INC HL
LD (HL),C ;  âਡãâ
INC HL
call ScrollB ; ­ à¨á®¢ âì  âਡãâë áªà®««-¡ à 
INC (IY+9)
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)
LD B,A
EX DE,HL
LD (HL),"³"
INC HL
ld (hl),ColLstBxFr
INC HL
ld c,ColListBox
LD A," " ; ¯ãáâ ï áâப  ¢ ᯨ᪥ (¥á«¨ ®ª­® ¡®«ìè¥ ¯® Y)
lstbx6: LD (HL),A
INC HL
LD (HL),C
INC HL
DJNZ lstbx6
; áªà®««-¡ à ­¨¦¥ ᯨ᪠
call ScrollB ; ­ à¨á®¢ âì  âਡãâë áªà®««-¡ à 
POP BC
DJNZ LstBox6
;
EndBox1:LD A,(HL)
endbx0: OR A
JR Z,EndBox2
endbx1: CP 0Dh ; ª®­¥æ áâப¨
INC HL
LD A,(HL)
JR NZ,endbx1
INC (IY+9)
jr endbx0
;
EndBox2:ld a,0
add a,(iy+9)
ld (iy+9),a
LD C,(IX+4) ;End string
LD B,(IX+5)
CALL GetPutA
EX DE,HL
LD (HL),"À"
INC HL
ld (hl),ColLstBxFr
INC HL
LD B,(IX+6)
endbx2: LD A,"Ä"
LD (HL),A
INC HL
ld (hl),ColLstBxFr
INC HL
DJNZ endbx2
LD (HL),"Ù"
inc hl
ld (hl),ColLstBxFr
LD A,(IY+4)
INC A
LD (IY+0Ch),A ;line up
INC A
prevPos:ld b,0
add a,b
LD (IY+0Eh),A ;prev pos
LD A,(IY+5)
SUB 2
LD (IY+0Dh),A ;line down
POP HL
LD BC,0013h ; ­¥ âண âì
LD (IY+0),C
ADD IY,BC
RET
;
; ¯à®à¨á®¢ª   âਡã⮢ áªà®««-¡ à 
ScrollB:LD A,(IY+4) ; Yo
SUB (IX+1) ; Y pos from begin window
INC A
CP (IX+5) ; Y ⥪. áâப¨ ᯨ᪠
LD B,""
JR Z,.loc1
call pos
LD B,"þ"
JR Z,.loc1
LD A,(IY+5) ; Yi
SUB (IX+1) ; Y pos from begin window
SUB 2
CP (IX+5) ; Y ⥪. áâப¨ ᯨ᪠
LD B,""
JR Z,.loc1
LD B,"±"
.loc1: LD (HL),B
INC HL
LD (HL),ColScrlBar
EX DE,HL
INC (IX+5) ; Y ⥪. áâப¨ ᯨ᪠
ret
; à áç¥â ¯®«®¦. áªà®««-¡ à  ¯® ⥪. ¯®«®¦¥­¨î 㪠§ â¥«ï ᯨ᪠
pos: exx
ld a,(iy+7)
add a,(iy+8)
ld e,a ; ᬥé. 㪠§ â¥«ï
ld c,3 ; ¢ëá®â  ¡ à 
call Mult8X8 ; E*C=HL, CurLine * LenScrollBar = num16bit
ld a,h
or l
jr z,ps1
elnum: ld a,0 ; ç¨á«® í«¥¬¥­â®¢ ¢ ᯨ᪥
or a
jr z,$+3
dec a
ld c,a
call Divis16X8 ; HL/C=LH
ps1: ld a,l
ld (prevPos+1),a
add a,4 ; ᪮à४â. ¯®«®¦.
cp (ix+5)
exx
ret
;[]===================================================[]
; ‘®¡ëâ¨ï ListBox- 
EListBox:
ld a,(DialTab+5+1) ; å à ªâ¥à ®¡ê¥ªâ 
res 7,a
cp ListBox
jr nz,ELst1
ld hl,(DialTab+5+7) ; 2 ï祩ª¨ ⥪. ¯®«®¦. 㪠§ â¥«ï
ld a,(DialTab+5+16) ; ï祩ª  ª®­â¥ªáâ 
or a
jr nz,ELst0
ld (CurElem0),hl ; á®åà. ¯®«®¦. ªãàá®à  ¢ ListBox1
jr ELst1
ELst0: ld (CurElem1),hl ; á®åà. ¯®«®¦. ªãàá®à  ¢ ListBox2
ELst1: 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)
JR NZ,ELcomb ; ¬®¦­® ¯¥à¥å®¤¨âì - ®¡ê¥ªâ ¢ë¤¥«¥­
PUSH IX
LD E,(IX+0)
LD D,0
ADD IX,DE
BIT 7,(IX+0)
POP IX
RET Z
INC HL
LD A,(HL) ; Shift+Tab
CP 9
RET NZ
JP SetLstBox ; ¢ë¤¥«¨âì ¯à¥¤. ®¡ê¥ªâ
;
ELmess: LD A,(HL)
INC HL
CP msHiddInvr
ret nz
BIT 7,(IX+1)
RET NZ
LD A,(IX+9)
OR A
RET Z
jp HdLstBoxI
;
ELcomb: INC HL
LD DE,ELexit
PUSH DE
LD A,(HL)
CP 58h ; Cursor Up
JR Z,ELup
CP 52h ; Cursor down
JP Z,ELdown
CP 59h ; PgUp
JP Z,ELpgup
CP 53h ; PgDwn
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+0Ah)
LD H,(IX+0Bh)
JR Z,ELupn1
LD L,(IX+11h)
LD H,(IX+12h)
DEC HL
DEC HL
LD A,(HL)
CP 0Dh
JR NZ,$-4
INC HL
ELupn1: LD (IX+11h),L
LD (IX+12h),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+0Ah)
LD H,(IX+0Bh)
JR Z,ELdwn1
LD L,(IX+11h)
LD H,(IX+12h)
LD A,(HL)
INC HL
CP 0Dh
JR NZ,$-4
ELdwn1: LD (IX+11h),L
LD (IX+12h),H
CALL PrnLstBox
CALL LstBoxBar
JP ELboxex
; <20>  áâà ­¨æã ¢¢¥àå
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
; <20>  áâà ­¨æã ¢­¨§
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+0Ah)
LD H,(IX+0Bh)
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+11h),L
LD (IX+12h),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
LD B,8
elbxs1: call ExmFire
RET Z
HALT
DJNZ elbxs1
RET
; ­ ç «® ListBox-ᯨ᪠
ELhome: LD A,(IX+8)
OR A
JR Z,ELhome1
LD (IX+8),0
LD L,(IX+0Ah)
LD H,(IX+0Bh)
LD (IX+11h),L
LD (IX+12h),H
CALL PrnLstBox
ELhome1:LD A,(IX+7)
OR A
RET Z
CALL RsLstBoxI
LD (IX+7),0
CALL StLstBoxI
JP LstBoxBar
; ª®­¥æ ListBox-ᯨ᪠
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+0Ah)
LD H,(IX+0Bh)
LD B,A
LD A,(HL)
INC HL
CP 0Dh
JR NZ,$-4
DJNZ $-6
LD (IX+11h),L
LD (IX+12h),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) ; Xcoord
INC HL
LD D,(HL) ; Ycoord
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),evNothing ;cmSelect
; RET
;
ELmous1:LD A,D
CP (IX+0Ch)
RET C
JP Z,ELup
CP (IX+0Dh)
JP Z,ELdown
RET NC
CP (IX+0Eh)
RET Z
JP C,ELpgup
JP NC,ELpgdwn
RET
; Ž¡à ¡®âª  ᮡë⨩ ®â ª« ¢¨ âãàë
ELkeys: LD A,(HL)
RES 5,A
BIT 7,(IX+1) ; Sel or nosel
RET NZ
CP 9 ; Tab
JR Z,SetLstBox ; ¢ë¤¥«¨âì á«¥¤. ®¡ê¥ªâ
CP 0Dh ; ###
JR Z,SetLstBox ; ¢ë¤¥«¨âì á«¥¤. ®¡ê¥ªâ
CP (IX+0Fh) ; Hot key
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,ColListBox
CALL LstBoxInv
POP AF
RET
; –¢¥â ªãàá®à  ­¥  ªâ¨¢­®£® ®¡ê¥ªâ 
HdLstBoxI:
ld a,ColLstBxHI
JR LstBoxInv
StLstBoxI:
ld a,ColLstBoxI ; 梥⠢뤥«. ªãàá®à 
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) ;; Yo
SUB (IX+1)
INC A
ADD A,(IY+7) ;;
LD B,A
CALL GetPutA
PUSH DE
IN A,(SLOT3)
PUSH AF
LD A,(hPages.Win2)
OUT (SLOT3),A
LD A,(IY+3)
SUB (IY+2)
SUB 3
LD L,A ; ¤«¨­  ¢ë¤¥«. ªãàá®à 
LD H,1
sub 2 ; ªãàá®à ­¥ ­  ¢áî è¨à¨­ã ListBox- 
ld b,a
ld a," "
ld (de),a ; ¢ 1-¬ ¬¥á⥠"­¥ ¢ë¢®¤¨âì" ¢ë¤¥«. ªãàá®à
inc de
ld a,ColListBox ;  âਡãâ (梥â ᯨ᪠ ListBox- )
ld (de),a
ex af,af'
inc de
lbcolor:LD A,0
lbclr1: INC DE ; 横« ¯à®à¨á®¢ª¨ ¢ë¤¥«. ªãàá®à 
LD (DE),A
INC DE
DJNZ lbclr1
ld a," "
ld (de),a ; ¢ ¯®á«. ¬¥á⥠"­¥ ¢ë¢®¤¨âì" ¢ë¤¥«. ªãàá®à
inc de
ex af,af'
ld (de),a
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
PrnLstBox:
PUSH IY
PUSH IX
IN A,(SLOT3)
PUSH AF
LD A,(hPages.Win2)
OUT (SLOT3),A
PUSH IX
POP IY
LD IX,DialData
LD L,(IY+11h)
LD H,(IY+12h)
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
PLstBoxI:
LD E,(IX+2) ; Xo
INC E
LD D,(IX+4) ; Y
LD A,(IX+6) ; Xi
SUB E
LD C,A
CALL SetDialInv
jp StLstBoxI
GetLstBox:
LD HL,what
INC HL
INC HL
LD A,(IX+7)
ADD A,(IX+8)
LD (HL),A
RET
; ‚¥àâ. áªà®««-¡ à ®¡ê¥ªâ  ListBox
LstBoxBar:
LD A,(IX+7)
ADD A,(IX+8)
LD E,A
;LD A,(IX+0Dh) ; line down
;SUB (IX+0Ch) ; line up
;SUB 2
;LD C,A ; ¢ëá®â  ¡ à 
ld c,3
CALL Mult8X8 ; E*C=HL, 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 ; HL/C=LH
LBB1: ld a,l
ld (prevPos+1),a
LD A,(IX+0Ch) ; ᬥ饭¨¥ ®â ­ ç « 
INC A
ADD A,L
CP (IX+0Eh) ; prev pos
RET Z ; ª®£¤  L=0 ?
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+0Eh) ; prev pos
SUB (IX+1)
LD B,A
CALL GetPutA
IN A,(SLOT3)
PUSH AF
LD A,(hPages.Win2)
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+0Eh) ; 0..31
BIT 7,E
JR NZ,LBe
ld h,ColScrlBar
LD L,"±" ; ¯à¥¤¢. áâ¥à¥âì "þ"
LD BC,1BB5h ; ᨬ¢®« ­  íªà ­
SUB A
RST ToBIOS
LBe: LD A,(IY+3)
SUB 2
LD E,A
POP AF ;-
LD (IY+0Eh),A ; prev pos
LD D,A ; 0..31
PUSH DE
BIT 7,E
JR NZ,LBe1
ld h,ColScrlBar
LD L,"þ" ; ­®¢®¥ ¯®«®¦.
LD BC,1BB5h ; ᨬ¢®« ­  íªà ­
SUB A
RST ToBIOS
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,(hPages.Win2)
OUT (SLOT3),A
LD A,"þ"
LD (DE),A
POP AF
OUT (SLOT3),A
POP IX
POP IY
RET
; <20>à®æ¥¤ãà  ã¬­®¦¥­¨ï (8*8bit)
; <20>  ¢å®¤: E*C
; <20>  ¢ë室: 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
.loc1: ADD HL,HL
JR NC,$+3
ADD HL,DE
DJNZ .loc1
RET
; <20>à®æ¥¤ãà  ¤¥«¥­¨ï (16X8bit)
; <20>  ¢å®¤: HL/C
; <20>  ¢ë室: L-१ã«ìâ â
; H-®áâ â®ª
Divis16X8:
LD B,8
.loc1: ADD HL,HL
LD A,H
JR C,.loc2
SUB C
JR NC,.loc3
ADD A,C
LD H,A
DJNZ .loc1
RET
.loc2: SUB C
.loc3: LD H,A
INC HL
DJNZ .loc1
RET
;[]===========================================================[]
; <20> ç «ì­®¥ ®ª­® ¯à®£à ¬¬ë
WinMain1:
dw 0409h,173Eh ; Yo,Xo,lenY,lenX
db " FFORMAT ",0 ; ¨¬ï ®ª­ 
;
db ListBox ; å à ªâ¥à ®¡ê¥ªâ 
dw 0203h,060Fh ; Yo,Xo,lenY,lenX
db "~D~rives",0 ; ¨¬ï ª« áâ¥à 
db 0 ; ª®­â. ¯®¬®éì
dw DiskList ; ᯨ᮪ í«¥¬¥­â®¢
;
db ListBox
dw 0219h,061Eh ; Yo,Xo,lenY,lenX
db "~A~vailable - Tr - Sc - Type",0
db 1 ; ª®­â¥ªáâ. ¯®¬®éì
dw ItemList ; ᯨ᮪ í«¥¬¥­â®¢
;
db ClRadioBut ; å à ªâ¥à ®¡ê¥ªâ 
dw 0C03h,0116h ; Yo,Xo,lenY,lenX
db "Options",0 ; ¨¬ï ª« áâ¥à 
db "Put ~s~ystem files",0 ; ¨¬ï í«¥¬¥­â 
db 2 ; ª®­â¥ªáâ. ¯®¬®éì
dw cSystem ; ï祩ª  ¯ ¬ïâ¨
db 0 ; ª®­¥æ ª« áâ¥à 
;
db ClCheckBut ; å à ªâ¥à ®¡ê¥ªâ 
dw 0C22h,0317h ; Yo,Xo,lenY,lenX
db "Perfomance",0 ; ¨¬ï ª« áâ¥à 
db "S~t~andart mode",0 ; ¨¬ï í«¥¬¥­â 
db 3 ; ª®­â¥ªáâ. ¯®¬®éì
dw Mode0 ; ï祩ª  ¯ ¬ïâ¨
db "O~p~timize sectors",0 ; ¨¬ï í«¥¬¥­â 
db 3 ; ª®­â¥ªáâ. ¯®¬®éì
dw Mode2 ; ï祩ª  ¯ ¬ïâ¨
db "Quic~k~ format",0 ; ¨¬ï í«¥¬¥­â 
db 3 ; ª®­â¥ªáâ. ¯®¬®éì
dw Mode1 ; ï祩ª  ¯ ¬ïâ¨
db 0 ; ª®­¥æ ª« áâ¥à 
;
db InputLine ; å à ªâ¥à ®¡ê¥ªâ 
dw 1103h ; Yo,Xo
db "~L~abel: ",0 ; ¨¬ï ª« áâ¥à 
db 12 ; ¤«¨­  । ªâ. áâப¨
db 4 ; ª®­â¥ªáâ. ¯®¬®éì
dw LabelBuff ;  ¤à¥á ¡ãä¥à  । ªâ. áâப¨
;
db Button ; å à ªâ¥à ®¡ê¥ªâ 
dw 1405h ; Yo,Xo
db " ~F~ormatting ",0 ; ¨¬ï í«¥¬¥­â 
db cmOkey ; ­ §­ ç. ª®¬ ­¤ 
db 5 ; ª®­â¥ªáâ. ¯®¬®éì
;
db Button
dw 1417h ; Yo,Xo
db " ~O~ptions ",0
db cmOptions
db 5
;
db Button
dw 142Bh ; Yo,Xo
db " ~Q~uit ",0 ; ¨¬ï í«¥¬¥­â 
db cmCancel
db 5
;
db 0xFF ; ª®­¥æ ᯨ᪠
DiskList:
DiskA: db " X: X.XX ",0Dh
DiskB: db " X: X.XX ",0Dh,0
ItemList:
db " 1.44 Mb 80 18 DS/HD",0Dh ; 0
db " 1.52 Mb 80 19 DS/HD",0Dh ; 1
db " 1.60 Mb 80 20 DS/HD",0Dh ; 2
db " 1.64 Mb 82 20 DS/HD",0Dh ; 3
db " 1.66 Mb 83 20 DS/HD",0Dh ; 4
db " 1.68 Mb 80 21 DS/HD",0Dh ; 5
db " 1.72 Mb 82 21 DS/HD",0Dh ; 6
db " 1.74 Mb 83 21 DS/HD",0Dh ; 7
db " 1.2 Mb 80 15 DS/HD",0Dh ; 8
db " 720 kB 80 09 DS/DD",0Dh ; 9
db " 800 kB 80 10 DS/DD",0Dh ; 10
db " 820 kB 82 10 DS/DD",0Dh ; 11
db " 830 kB 83 10 DS/DD",0Dh ; 12
db " 636 kB - 80 - 16 TR-DOS",0Dh ; 13
db " 800 kB - 80 - 05 CPM-80",0Dh ; 14
db 0
; Žª­® ®¯æ¨© ¢ë¡®à  ä®à¬ â  ¤¨áª®¢®¤®¢
WinOptions:
dw 0910h,0D2Fh ; Yo,Xo,lenY,lenX
db " Setup drivers ",0 ; ¨¬ï ®ª­ 
;
db Button
dw 0A07h ; Yo,Xo
db " ~O~k ",0
db cmOkey
db 5
;
db Button
dw 0A13h ; Yo,Xo
db " ~C~ancel ",0
db cmCancel
db 5
;
db Button
dw 0A1Fh ; Yo,Xo
db " ~S~ave ",0 ; ¨¬ï í«¥¬¥­â 
db cmSave
db 5
;
db ClCheckBut ; å à ªâ¥à ®¡ê¥ªâ 
dw 0203h,0212h ; Yo,Xo,lenY,lenX
db "Drive A:",0 ; ¨¬ï ª« áâ¥à 
db '1.44Mb 3.5"',0 ; ¨¬ï í«¥¬¥­â 
db 3 ; ª®­â¥ªáâ. ¯®¬®éì
dw SetDriveA0 ; ï祩ª  ¯ ¬ïâ¨
db ' 720kB 5.25"',0 ; ¨¬ï í«¥¬¥­â 
db 3 ; ª®­â¥ªáâ. ¯®¬®éì
dw SetDriveA1 ; ï祩ª  ¯ ¬ïâ¨
db 0 ; ª®­¥æ ª« áâ¥à 
;
db ClCheckBut ; å à ªâ¥à ®¡ê¥ªâ 
dw 0218h,0312h ; Yo,Xo,lenY,lenX
db "Drive B:",0 ; ¨¬ï ª« áâ¥à 
db '1.44Mb 3.5"',0 ; ¨¬ï í«¥¬¥­â 
db 3 ; ª®­â¥ªáâ. ¯®¬®éì
dw SetDriveB0 ; ï祩ª  ¯ ¬ïâ¨
db ' 720kB 5.25"',0 ; ¨¬ï í«¥¬¥­â 
db 3 ; ª®­â¥ªáâ. ¯®¬®éì
dw SetDriveB1 ; ï祩ª  ¯ ¬ïâ¨
db " None",0 ; ¨¬ï í«¥¬¥­â 
db 3 ; ª®­â¥ªáâ. ¯®¬®éì
dw SetDriveB2 ; ï祩ª  ¯ ¬ïâ¨
db 0 ; ª®­¥æ ª« áâ¥à 
;
db 0xFF ; ª®­¥æ ᯨ᪠
; Žª­® ¯à®æ¥áá  ä®à¬ â¨à®¢ ­¨ï
WinMain2:
dw 060Bh,133Ah ; Yo,Xo,lenY,lenX
db " FFORMAT ",0 ; ¨¬ï ®ª­ 
;
db Frame ; à ¬ª  "ª àâë" 樫¨­¤à®¢
dw 0502h,0534h ; Yo,Xo,lenY,lenX
;
db Frame ; à ¬ª  ⥪. 樫¨­¤à 
dw 0C02h,0218h ; Yo,Xo,lenY,lenX
;
db Frame ; à ¬ª  ¥¬ª®á⨠¤¨áª¥âë
dw 0C1Ch,031Ah ; Yo,Xo,lenY,lenX
;
db TextLine
dw 0704h ; Yo,Xo
db 75h ; 梥â áâப¨
db "ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ"
metka1: db "ÛÛ",0
;
db TextLine
dw 0730h ; Yo,Xo
db ColFormText ; 梥â áâப¨
db "Side 0",0
;
db TextLine
dw 0804h ; Yo,Xo
db 75h ; 梥â áâப¨
db "ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ"
metka2: db "ÛÛ",0
;
db TextLine
dw 0830h ; Yo,Xo
db ColFormText ; 梥â áâப¨
db "Side 1",0
;
db TextLine
dw 0904h ; Yo,Xo
db ColFormText ; 梥â áâப¨
db "0246802468024680246802468024680246802468"
metka3: db "02",0
;
db TextLine
dw 0930h ; Yo,Xo
db ColFormText ; 梥â áâப¨
db "Tracks",0
;
db TextLine
dw 0A04h ; Yo,Xo
db ColFormText ; 梥â áâப¨
db "0 1 2 3 4 5 6 7"
metka4: db " 8",0
;
db TextLine
dw 0D04h ; Yo,Xo
db ColFormText ; 梥â áâப¨
db "Head: ",0
;
db TextLine
dw 0D0Bh ; Yo,Xo
db ColFormNumber ; 梥â áâப¨
db "0",0
;
db TextLine
dw 0D0Ch ; Yo,Xo
db ColFormText ; 梥â áâப¨
db " Cylinder: ",0
;
db TextLine
dw 0D18h ; Yo,Xo
db ColFormNumber ; 梥â áâப¨
space4: db " 0",0
;
db TextLine
dw 0D1Eh ; Yo,Xo
db ColFormNumber ; 梥â áâப¨
space1: db "1457664",0
;
db TextLine
dw 0D25h ; Yo,Xo
db ColFormText ; 梥â áâப¨
db " Total disk space",0
;
db TextLine
dw 0E1Eh ; Yo,Xo
db ColFormNumber ; 梥â áâப¨
db " "
space3: db " 0",0 ; ç¨á«® bad-ᥪâ®à®¢
;
db TextLine
dw 0E25h ; Yo,Xo
db ColFormText ; 梥â áâப¨
db " Bad sectors",0
;
db TextLine
dw 0F1Eh ; Yo,Xo
db ColFormNumber ; 梥â áâப¨
space2: db "1457664",0
;
db TextLine
dw 0F25h ; Yo,Xo
db ColFormText ; 梥â áâப¨
db " Available bytes",0
;
db TextLine
dw 0504h ; Yo,Xo
; db ColFormNumber ; 梥â áâப¨
db 30h ; äã­ªæ¨ï ¢ DSS ­¥ ®âà ¡ â뢠¥â
LABEL1: db "NO NAME ",0
;
db TextLine
dw 0503h ; Yo,Xo
db ColFormText ; 梥â áâப¨
db "[",0
;
db TextLine
dw 050Fh ; Yo,Xo
db ColFormText ; 梥â áâப¨
db "]",0
;
db TextLine
dw 052Fh ; Yo,Xo
db ColFormNumber ; 梥â áâப¨
db "DISK "
LDISK: db "A:",0
;
db TextLine
dw 052Eh ; Yo,Xo
db ColFormText ; 梥â áâப¨
db "[",0
;
db TextLine
dw 0536h ; Yo,Xo
db ColFormText ; 梥â áâப¨
db "]",0
;
db TextLine
dw 0204h ; Yo,Xo
db ColFormText ; 梥â áâப¨
db "Formatting "
metka5: db "1.44 Mb",0
;
db TextLine
dw 0304h ; Yo,Xo
db ColFormText ; 梥â áâப¨
metka7: db "System files",0
;
db TextLine
dw 0223h ; Yo,Xo
db ColFormText ; 梥â áâப¨
metka6: db "(Optimize sectors) ",0
;
db Button
dw 1009h ; Yo,Xo
db " ~C~ancel ",0
db cmCancel
db 5
;
db 0xFF ; ª®­¥æ ᯨ᪠
; Žª­® § ¯à®á  ¢áâ ¢¨âì ¤¨áª¥âã
InsDiskette:
DW 0B16h,0824h ; Yo,Xo,lenY,lenX
DB " Information ",0
;
DB TextLine
DW 0305h ; Yo,Xo
db 1Fh ; 梥â áâப¨
DB "Insert NEW disk in drive "
DskName:db "A:",0
;
DB Button ; å à ªâ¥à ®¡ê¥ªâ 
DW 0507h ; Yo,Xo
DB " ~O~k ",0 ; ¨¬ï í«¥¬¥­â 
db cmOkey ; ­ §­ ç. ª®¬ ­¤ 
db 5 ; ª®­â¥ªáâ. ¯®¬®éì
;
DB Button
DW 0515h ; Yo,Xo
DB " ~C~ancel ",0
db cmCancel
db 5
;
db 0FFh ; ª®­¥æ ᯨ᪠
; Žª­® ¯®¤â¢. ¯à¥à뢠­¨ï ®¯¥à æ¨¨
Interrupt:
DW 0A16h,0A24h ; Yo,Xo,lenY,lenX
DB " Confirmation ",0
;
DB TextLine
DW 0205h ; Yo,Xo
db 1Fh ; 梥â áâப¨
DB "FFORMAT interrupted by user",0
;
DB TextLine
DW 0408h ; Yo,Xo
db 1Fh ; 梥â áâப¨
DB "Do you wish to cancel",0
;
DB TextLine
DW 0507h ; Yo,Xo
db 1Fh ; 梥â áâப¨
DB "the current operation ?",0
;
DB Button ; å à ªâ¥à ®¡ê¥ªâ 
DW 0707h ; Yo,Xo
DB " ~Y~es ",0 ; ¨¬ï í«¥¬¥­â 
db cmOkey ; ­ §­ ç. ª®¬ ­¤ 
db 5 ; ª®­â¥ªáâ. ¯®¬®éì
;
DB Button
DW 0715h ; Yo,Xo
DB " ~N~o ",0
db cmCancel
db 5
;
db 0FFh ; ª®­¥æ ᯨ᪠
; Žª­® ¯à¨ ®âáãâá⢨¨ ¤¨áª¥âë
MissingDisk:
DW 0B14h,0928h ; Yo,Xo,lenY,lenX
DB " Information ",0
;
DB TextLine
DW 0203h ; Yo,Xo
db 4Fh ; 梥â áâப¨
DB "The disk is missing from the drive",0
;
DB TextLine
DW 040Ah ; Yo,Xo
db 4Fh ; 梥â áâப¨
DB "Please insert a disk",0
;
DB Button ; å à ªâ¥à ®¡ê¥ªâ 
DW 0609h ; Yo,Xo
DB " ~O~k ",0 ; ¨¬ï í«¥¬¥­â 
db cmOkey ; ­ §­ ç. ª®¬ ­¤ 
db 5 ; ª®­â¥ªáâ. ¯®¬®éì
;
DB Button
DW 0617h ; Yo,Xo
DB " ~C~ancel ",0
db cmCancel
db 5
;
db 0FFh ; ª®­¥æ ᯨ᪠
; Žª­® ¯à¨ "¡¨â®©" ­ã«¥¢®© ¤®à®¦ª¥ ¤¨áª¥âë
NoForm:
DW 0B14h,0927h ; Yo,Xo,lenY,lenX
DB " Information ",0
;
DB TextLine
DW 0203h ; Yo,Xo
db 4Fh ; 梥â áâப¨
DB "This disk could not be formatted:",0
;
DB TextLine
DW 0305h ; Yo,Xo
db 4Fh ; 梥â áâப¨
DB "unrecoverable error in system",0
;
DB TextLine
DW 0403h ; Yo,Xo
db 4Fh ; 梥â áâப¨
DB "area or uncompatible format mode",0
;
DB Button ; å à ªâ¥à ®¡ê¥ªâ 
DW 060Fh ; Yo,Xo
DB " ~O~k ",0 ; ¨¬ï í«¥¬¥­â 
db cmOkey ; ­ §­ ç. ª®¬ ­¤ 
db 5 ; ª®­â¥ªáâ. ¯®¬®éì
;
db 0FFh ; ª®­¥æ ᯨ᪠
; Žª­® ãᯥ譮£® § ¢¥à襭¨ï ä®à¬ â¨à®¢ ­¨ï
FComplite:
dw 0B18h,071Fh ; Yo,Xo,lenY,lenX
db "Í",0
;
DB TextLine
DW 0208h ; Yo,Xo
db 1Fh ; 梥â áâப¨
DB "Format complete",0
;
DB Button ; å à ªâ¥à ®¡ê¥ªâ 
DW 040Bh ; Yo,Xo
DB " ~O~k ",0 ; ¨¬ï í«¥¬¥­â 
db cmOkey ; ­ §­ ç. ª®¬ ­¤ 
db 5 ; ª®­â¥ªáâ. ¯®¬®éì
;
db 0FFh ; ª®­¥æ ᯨ᪠
; Žª­® § ¯¨á¨ á¨áâ. ®¡« á⨠¤¨áª¥âë
SystemArea:
dw 0C19h,051Eh ; Yo,Xo,lenY,lenX
db "Í",0 ; ¡¥§ § £®«®¢ª 
;
db TextLine
dw 0204h ; Yo,Xo
db 1Fh ; 梥â áâப¨
db "Writing system area...",0
;
db 0xFF ; ª®­¥æ ᯨ᪠
; Žª­® ãᯥ譮£® ª®¯¨à®¢ ­¨ï á¨áâ. ä ©«®¢
SysCopy:
dw 0C19h,051Eh ; Yo,Xo,lenY,lenX
db "Í",0 ; ¡¥§ § £®«®¢ª 
;
DB TextLine
DW 0204h ; Yo,Xo
db 1Bh ; 梥â áâப¨
db "System files transfered",0
;
db 0FFh ; ª®­¥æ ᯨ᪠
; Žª­® § ¯¨á¨ á¨áâ. ä ©«®¢
SysWrite:
dw 0C19h,051Eh ; Yo,Xo,lenY,lenX
db "Í",0 ; ¡¥§ § £®«®¢ª 
;
db TextLine
dw 0204h ; Yo,Xo
db 1Bh ; 梥â áâப¨
db "Writing system files...",0
;
db 0xFF ; ª®­¥æ ᯨ᪠
; Žª­® ãᯥ譮£® ª®¯¨à®¢ ­¨ï á¨áâ. ä ©«®¢
ErrSysFiles:
dw 0B19h,081Eh ; Yo,Xo,lenY,lenX
db "Í",0 ; ¡¥§ § £®«®¢ª 
;
db TextLine
dw 0204h ; Yo,Xo
db 4Fh ; 梥â áâப¨
db "System files not found",0
db TextLine
dw 0304h ; Yo,Xo
db 4Fh ; 梥â áâப¨
db "or work with errors...",0
;
db Button ; å à ªâ¥à ®¡ê¥ªâ 
dw 050Bh ; Yo,Xo
db " ~O~k ",0 ; ¨¬ï í«¥¬¥­â 
db cmOkey ; ­ §­ ç. ª®¬ ­¤ 
db 5 ; ª®­â¥ªáâ. ¯®¬®éì
;
db 0xFF ; ª®­¥æ ᯨ᪠
; Žª­® "‡ é¨â  ®â § ¯¨á¨"
Protect:
dw 0C19h,071Eh ; Yo,Xo,lenY,lenX
db "Í",0 ; ¡¥§ § £®«®¢ª 
;
db TextLine
dw 0203h ; Yo,Xo
db 4Fh ; 梥â áâப¨
db "Disk is write protected!",0
;
DB Button ; å à ªâ¥à ®¡ê¥ªâ 
DW 040Bh ; Yo,Xo
DB " ~O~k ",0 ; ¨¬ï í«¥¬¥­â 
db cmOkey ; ­ §­ ç. ª®¬ ­¤ 
db 5 ; ª®­â¥ªáâ. ¯®¬®éì
;
db 0FFh ; ª®­¥æ ᯨ᪠
; Žª­® ¨­¨æ¨ «¨§ æ¨¨ ¤¨áª®¢®¤ 
InitFdd:
dw 0C1Bh,0519h ; Yo,Xo,lenY,lenX
db "Í",0
;
db TextLine
dw 0203h ; Yo,Xo
db 1Fh ; 梥â áâப¨
db "Resetting drive ...",0
;
db 0FFh ; ª®­¥æ ᯨ᪠
if release
else
PR: push af
push bc
push de
push hl
push ix
push iy
ld de,0100h
LD C,BIOS.LP_SET_PLACE
RST ToBIOS
ld hl,(hours) ; ç áë/¬¨­ãâë
call HEXHL
ld a," "
ld bc,0182h
RST ToBIOS
ld a,(seconds) ; ᥪ㭤ë
call HEX1
pop iy
pop ix
pop hl
pop de
pop bc
pop af
ret
HEXA: push hl
push de
push bc
push ix
push iy
push af
push af
ld de,0100h
LD C,BIOS.LP_SET_PLACE
RST ToBIOS
pop af
call HEX1
;ld a," "
;ld bc,0182h
;RST ToBIOS
;ld a,(ix+1)
;call HEX1
;ld a," "
;ld bc,0182h
;RST ToBIOS
;ld a,(iy+3)
;call HEX1
;ld a," "
;ld bc,0182h
;RST ToBIOS
;ld a,(iy+0Ch)
;call HEX1
;ld a," "
;ld bc,0182h
;RST ToBIOS
;ld a,(iy+0Eh)
;call HEX1
pop af
pop iy
pop ix
pop bc
pop de
pop hl
ret
HEXHL: ld a,h
call HEX1
ld a,l
HEX1: push af
rra
rra
rra
rra
call HEX2
pop af
HEX2: and 0Fh
add a,90h
daa
adc a,40h
daa
ld bc,0182h ; ¢ë¢®¤ 'a' ¢ ⥪. ¯®§¨æ¨¨ ªãàá®à 
RST ToBIOS
ret
endif