mirror of
https://github.com/Tolik-Trek/FFORMAT.git
synced 2026-06-15 09:21:43 +03:00
1775 lines
31 KiB
NASM
Executable File
1775 lines
31 KiB
NASM
Executable File
; Œ¥âª¨ "@@@" - § ª®¬¬¥â. ª®¤, çâ®¡ë ¥ ®âà ¡ âë¢ « "Enter" ¤«ï ¢ë室 ¨§
|
||
; ListBox- .
|
||
; Œ¥âª¨ "###" - ®âà ¡®âª "Enter" ª ª Tab
|
||
;
|
||
|
||
|
||
; ‚ãâ२¥ á®®¡é¥¨ï
|
||
evNothing: EQU 0 ; ¥â ᮡë⨩
|
||
evMouseFr: EQU 1 ; ¦ â ª®¯ª ã ¬ëè¨
|
||
evKeyboard: EQU 2 ; ¦ â ª« ¢¨è
|
||
evCombKey: EQU 3 ; ¦ â ª®¬¡¨ æ¨ï ª« ¢¨è
|
||
evCommand: EQU 4 ; ¯¥à¥¤ ç ª®¬ ¤ë
|
||
evMessage: EQU 5 ; ¯¥à¥¤ ç á®®¡é¥¨ï
|
||
|
||
TextLine: EQU 1
|
||
InputLine: EQU 2
|
||
ClRadioBut: EQU 3
|
||
ClCheckBut: EQU 4
|
||
ListBox: EQU 5
|
||
Button: EQU 9
|
||
Frame: EQU 10
|
||
|
||
cmOkey: EQU 36h
|
||
cmCancel: EQU 37h
|
||
cmOptions: EQU 38h
|
||
cmSave: EQU 39h
|
||
|
||
CTlabTD: EQU 47h
|
||
CTkeypadD: EQU 4Ah
|
||
CTcancD: EQU 36h
|
||
CTokD: EQU 37h
|
||
CThelpD: EQU 35h
|
||
CTbox1D: EQU 4Bh
|
||
CTbox2D: EQU 4Ch
|
||
|
||
msHiddInvr: EQU 83h
|
||
msNewElem: EQU 84h ; ¥ ®âá«¥¦¨¢ ¥âáï
|
||
|
||
|
||
|
||
|
||
|
||
; áâநâì ªãàá®à ç¥àâ®çª®©
|
||
;call SetCursor
|
||
; ®ç¨áâ¨âì íªà
|
||
CALL ClearDesk
|
||
; ãáâ. ¬ëèªã ¢ æ¥âà íªà
|
||
LD HL,312 ; X ª®®à¤¨ â (0-639)
|
||
LD DE,120 ; Y ª®®à¤¨ â (0-255)
|
||
LD C,4
|
||
RST ToDSS.Mouse
|
||
; á¡à®á¨âì 㪠§ ⥫¨ ListBox`®¢
|
||
LD HL,0
|
||
LD (CurElem0),HL
|
||
LD (CurElem1),HL
|
||
|
||
|
||
;!FIXIT CURSOR ¯¥à¥¤¥« âì ¤®á
|
||
MainLOOP: ; ¯®¤¬¥¨âì ¢¥ªâ®à ᢮© (¤«ï ¬¨£ ¨ï ªãàá®à )
|
||
; ld hl,(0039h) ;rdlow ok
|
||
; ld (vect),hl
|
||
; ld hl,rst38
|
||
; ld (0039h),hl
|
||
;
|
||
Loop1: CALL SetList ; áâநâì ᯨ᮪ ¤¨áª®¢®¤®¢
|
||
Loop2: LD HL,WinMain1
|
||
CALL DialogW
|
||
LD A,(HL)
|
||
CP cmCancel
|
||
;jp z,Exit1
|
||
JP Z,Exit
|
||
CP cmOptions
|
||
JR NZ,.contin
|
||
;
|
||
LD HL,WinOptions
|
||
CALL DialogW
|
||
LD A,(HL)
|
||
CP cmOkey
|
||
JR Z,Loop1
|
||
CP cmSave
|
||
JR NZ,Loop2
|
||
CALL SaveInit ; á®åà. áâனª¨ ä«®¯®¢®¤®¢
|
||
JR Loop1
|
||
;
|
||
.contin: ; ¢®ááâ. ¢¥ªâ®à
|
||
; ld hl,(vect) ;!FIXIT CURSOR ¯¥à¥¤¥« âì ªãàá®à ¤®á ¨ ã¡à âì ¯¥à¥å¢ âì ¯à¥àë¢ ¨©
|
||
; ld (0039h),hl
|
||
CALL SetDrive ; ãáâ. § ¤ ë© ä®à¬ â ä«®¯®¢®¤®¢
|
||
LD A,(CurElem0)
|
||
LD (DISK),A ; ¤«ï ¯/¯ ä®à¬ â.
|
||
ADD A,"A"
|
||
LD (DskName),A ; ¡ãª¢ ¤¨áª
|
||
LD (LDISK),A
|
||
; ¡«®ª áâனª¨ ¯®¤ ¢ë¡à ë© ä®à¬ â
|
||
CALL Setup_Map ; áâனª è¨à¨ë ª àâë (¨ ¤à.)
|
||
CALL FSETUP ; áâà. ¯à®£à ¬¬ã ä®à¬ â ¤¨áª¥âë
|
||
;--
|
||
;--
|
||
Loop3: CALL Clear1
|
||
LD HL,InsDiskette ; "‚áâ ¢ì⥠¤¨áª ¢ ¤¨áª®¢®¤"
|
||
CALL DialogW ; ®âª. ®ª® § ¯à®á
|
||
LD A,(HL)
|
||
CP cmCancel
|
||
JR Z,MainLOOP ; § ¤ ¢ ç. ®ª® fformat-
|
||
;
|
||
LD A,(ColDialWn)
|
||
PUSH AF
|
||
LD A,37h ; 梥⠮ª ä®à¬ â¨à®¢ ¨ï
|
||
LD (ColDialWn),A
|
||
LD HL,WinMain2 ; ®ª® ¯à®æ¥áá ä®à¬ â¨à®¢ ¨ï
|
||
CALL PutDialWn
|
||
POP AF
|
||
LD (ColDialWn),A
|
||
CALL FFORMAT
|
||
JR Loop3
|
||
|
||
;!FIXIT CURSOR ¯¥à¥¤¥« âì ªãàá®à ¤®á ¨ ã¡à âì ¯¥à¥å¢ âì ¯à¥àë¢ ¨©
|
||
;Exit1: ; ¢®ááâ. ¢¥ªâ®à
|
||
; ld hl,(vect)
|
||
; ld (0039h),hl
|
||
;jp Exit
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
; <20> áâநâì ᯨ᮪ ¤¨áª®¢®¤®¢ ᮣ« á® § ¤ ë¬ ®¯æ¨ï¬
|
||
SetList: LD A," "
|
||
LD (DiskB),A ; ç «® áâப¨ ¤¨áª "B:"
|
||
LD C,0 ; ¤¨áª "A:"
|
||
LD HL,DriveA ; 3 ï祩ª¨ ®¯æ¨© ¤¨áª
|
||
LD DE,DiskA+2 ; áâப § 票ï
|
||
CALL SetDiskList
|
||
LD C,1 ; ¤¨áª "B:"
|
||
LD HL,DriveB ; 3 ï祩ª¨ ®¯æ¨© ¤¨áª
|
||
LD DE,DiskB+2 ; áâப § 票ï
|
||
|
||
; <20> áâனª áâப¨ ¤¨áª®¢®¤ ᮣ« á® § ¤ ë¬ ®¯æ¨ï¬
|
||
; ¢å: C=¤¨áª (0=A,1=B)
|
||
; HL= ¤à¥á 3-å ï祥ª ®¯æ¨© ¤¨áª
|
||
; DE= ¤à¥á áâப¨ § 票ï
|
||
SetDiskList: XOR A
|
||
CP (HL)
|
||
JR NZ,.loc1 ; 1.44Mb 3.5"
|
||
INC HL
|
||
CP (HL)
|
||
JR NZ,.loc2 ; 720kB 5.25"
|
||
; no device "B:"
|
||
LD (DiskB),A ; á⮯-¡ ©â ¯¥à¥¤ áâப®©
|
||
RET
|
||
.loc1: LD HL,.loc4
|
||
JR .loc3
|
||
.loc2: LD HL,.loc5
|
||
.loc3: LD A,"A"
|
||
ADD A,C
|
||
.loc6: LD (HL),A
|
||
LD BC,10
|
||
LDIR
|
||
RET
|
||
|
||
.loc4: DB "X: 1.44 Mb"
|
||
.loc5: DB "X: 720 kB"
|
||
|
||
|
||
|
||
|
||
|
||
;
|
||
DialogW: PUSH HL
|
||
; ®ç¨áâ¨âì ¡ãä¥à ª« ¢ë
|
||
LD BC,3135h
|
||
RST ToDSS
|
||
POP HL
|
||
CALL Dialog
|
||
LD HL,what
|
||
LD A,(HL)
|
||
INC HL
|
||
RET
|
||
|
||
|
||
;Žá®¢®© ®¡à ¡®â稪 ¤¨ «®£®¢®£® ®ª
|
||
;<3B> ¢å®¤: HL-€¤à¥á ®¯¨á â¥«ï ¤¨ «®£®¢®£® ®ª
|
||
Dialog: CALL PutDialWn
|
||
;
|
||
DialogLp: CALL handleEvent ;—¨â ¥¬ ᮡë⨥
|
||
LD IX,DialTab+5 ;’ ¡«¨æ ®¡'¥ªâ®¢
|
||
DialWlp: LD HL,DialWex
|
||
PUSH HL
|
||
LD A,(ix+1) ;’¥ªã騩 ®¡'¥ªâ
|
||
RES 7,A
|
||
CP InputLine
|
||
JP Z,EInpLine
|
||
CP ClRadioBut
|
||
JP Z,EClasterB
|
||
CP ClCheckBut
|
||
JP Z,EClasterB
|
||
CP ListBox
|
||
JP Z,EListBox
|
||
CP Button
|
||
JP Z,EButton
|
||
;
|
||
POP HL
|
||
DialWex: LD C,(ix+0)
|
||
LD B,0
|
||
ADD IX,BC ;‘«¥¤.®¡ê¥ªâ
|
||
BIT 7,(ix+0)
|
||
JR Z,DialWlp ;7-© ¡¨â - ª®¥æ ®¡ê¥ªâ®¢ (横« ¥ âண âì)
|
||
;
|
||
LD HL,what ; ¯®«¥ ᮡë⨩
|
||
LD DE,DialogC
|
||
PUSH DE
|
||
LD A,(HL) ; +0
|
||
INC HL
|
||
CP evKeyboard ; ᮡë⨥ ª« ¢¨ âãàë
|
||
JR Z,TstKeyD ; ¯à®¢¥àª Enter/Esc
|
||
CP evCombKey
|
||
JR Z,TstCombKeyD ; â¥áâ F10
|
||
CP evCommand
|
||
JR Z,TstCmnD ; ¯à®¢¥àª ª®¬ ¤ ®â ¬ë誨, ª« ¢ë
|
||
;
|
||
POP DE
|
||
DialogC: JR DialogLp
|
||
|
||
|
||
|
||
TstCombKeyD: INC HL
|
||
LD A,(HL) ;+2
|
||
CP 44h ; F10
|
||
JR Z,CancelD
|
||
RET
|
||
|
||
|
||
TstKeyD: LD A,(HL) ;+1
|
||
CP 1Bh ; Esc
|
||
JR Z,CancelD
|
||
;@@@ cp 0Dh ; Enter
|
||
; jr z,OkeyD
|
||
RET
|
||
;
|
||
TstCmnD: LD A,(HL)
|
||
CP cmCancel
|
||
JR Z,CancelD
|
||
JR OkeyDn
|
||
|
||
;@@@ Ok
|
||
;OkeyD: ld hl,what
|
||
; ld (hl),evCommand
|
||
; inc hl
|
||
; ld (hl),cmOkey
|
||
OkeyDn: LD IX,DialTab+5
|
||
OkeyLp: LD DE,OkeyN ; Find clasters & get data
|
||
PUSH DE
|
||
LD A,(ix+1) ; ª ª®© ⥪. ®¡ê¥ªâ ?
|
||
RES 7,A
|
||
CP ClRadioBut
|
||
JP Z,GetClDt
|
||
CP ClCheckBut
|
||
JP Z,GetClDt
|
||
CP ListBox
|
||
JP Z,GetLstBox
|
||
POP DE
|
||
OkeyN: LD C,(ix+0)
|
||
LD B,0
|
||
ADD IX,BC ;Next object
|
||
BIT 7,(ix+0)
|
||
JR Z,OkeyLp ;NZ-End object table
|
||
DialogE: CALL ClsDial ; § ªàëâì ®ª® ¤¨ «®£
|
||
POP DE ; ¢ë室 ¨§ 横« (¢ë஢¨âì á⥪)
|
||
JP GetFire
|
||
|
||
|
||
; Cancel
|
||
CancelD: LD HL,what
|
||
LD (HL),evCommand
|
||
INC HL
|
||
LD (HL),cmCancel
|
||
JR DialogE
|
||
|
||
|
||
|
||
|
||
PutDial: PUSH IX
|
||
LD A,(IX+2) ;with shadow
|
||
ADD A,2
|
||
LD L,A
|
||
LD A,(IX+3)
|
||
INC A
|
||
LD H,A ;Wind len
|
||
LD E,(IX+0)
|
||
LD D,(IX+1)
|
||
LD IX,WinBoxBuff+6800 ;Address Box buffers
|
||
EXX
|
||
CALL GetMousInfo
|
||
EXX
|
||
DI
|
||
kk2: LD A,(hPages.Win2) ;Page buffer
|
||
LD B,A
|
||
XOR A
|
||
LD C,BIOS.WIN_RESTORE ; ¨§ ¡ãä¥à ¢ ⥪áâ. ®ª®
|
||
RST ToBIOS
|
||
EI
|
||
CALL GetMousInfo
|
||
LD C,1 ; ¢ë¢¥á⨠ªãàá®à ¬ë誨
|
||
RST ToDSS.Mouse
|
||
POP IX
|
||
RET
|
||
|
||
|
||
; Close Dialog window and restore box place
|
||
ClsDial: CALL ResILCr ; á¡à®á¨âì ªãàá®à
|
||
LD IX,DialData
|
||
LD A,(IX+2) ;with shadow
|
||
ADD A,2
|
||
LD L,A
|
||
LD A,(IX+3)
|
||
INC A
|
||
LD H,A ;Wind len
|
||
LD E,(IX+0)
|
||
LD D,(IX+1)
|
||
EXX
|
||
CALL GetMousInfo
|
||
EXX
|
||
DI
|
||
LD IX,WinBoxBuff ;Address Box buffers
|
||
kk3: LD A,(hPages.Win2) ;Page buffer
|
||
LD B,A
|
||
XOR A
|
||
LD C,BIOS.WIN_RESTORE ; ¨§ ¡ãä¥à ¢ ⥪áâ. ®ª®
|
||
RST ToBIOS
|
||
EI
|
||
CALL GetMousInfo
|
||
LD C,1 ; ¢ë¢¥á⨠ªãàá®à ¬ë誨
|
||
RST ToDSS.Mouse
|
||
RET
|
||
|
||
|
||
|
||
|
||
;
|
||
; <20>à®æ¥¤ãà à¨á®¢ ¨ï ¨ ¯¥ç ⨠¤¨ «®£®¢®£® ®ª
|
||
; <20> ¢å®¤: HL - €¤à¥á ®¯¨á ⥫ï
|
||
PutDialWn:
|
||
PUSH IY
|
||
LD IY,DialTab
|
||
LD IX,DialData
|
||
IN A,(SLOT3)
|
||
PUSH AF
|
||
kk4: LD A,(hPages.Win2) ;Page buffer
|
||
OUT (SLOT3),A
|
||
LD A,(HL) ;X position
|
||
LD (IX+0),A ;Xpos
|
||
INC HL
|
||
LD A,(HL) ;Y position
|
||
LD (IX+1),A ;Ypos
|
||
INC HL
|
||
LD A,(HL) ;Len X
|
||
LD (IX+2),A ;Xlen
|
||
INC HL
|
||
LD A,(HL) ;Len Y
|
||
LD (IX+3),A ;Ylen
|
||
INC HL
|
||
LD DE,DialName
|
||
.loc1: LDI
|
||
LD A,(HL)
|
||
OR A
|
||
JR NZ,.loc1
|
||
LDI
|
||
PUSH HL
|
||
CALL SavDial ;Save dialog place
|
||
CALL PutDialRc
|
||
LD HL,FramDSl
|
||
CALL PutDialFr ;Put Dialog frame & name
|
||
CALL PutDialSh
|
||
LD A,(IX+0) ;move window
|
||
LD (IY+0),A ; +0
|
||
INC IY
|
||
ADD A,(IX+2)
|
||
LD (IY+0),A ; +1
|
||
INC IY
|
||
LD A,(IX+1)
|
||
LD (IY+0),A ; +2
|
||
INC IY
|
||
LD A,(IX+0) ; ª®®à¤¨ âë |þ| (§ ªà.®ª®)
|
||
LD (IY+0),A ; +3
|
||
INC IY
|
||
LD A,(IX+1)
|
||
LD (IY+0),A ; +4
|
||
INC IY
|
||
POP HL
|
||
DialCyc: LD A,(HL) ;Next get includes objects
|
||
INC HL
|
||
BIT 7,A
|
||
JR NZ,DialExt ;End dialog label
|
||
LD DE,DialCyc
|
||
PUSH DE
|
||
CP TextLine
|
||
JP Z,PTextLn ;Put text line
|
||
CP InputLine
|
||
JP Z,PInpLine ;Put object input line
|
||
CP ClRadioBut
|
||
JP Z,PClRadioB ;Put claster radio buttons
|
||
CP ClCheckBut
|
||
JP Z,PClCheckB ;Put claster check buttons
|
||
CP ListBox
|
||
JP Z,PListBox ;Put List box
|
||
CP Button
|
||
JP Z,PButton ; ¢áâ ¢¨âì ¡ãâ®
|
||
CP Frame
|
||
JP Z,PFrame
|
||
;
|
||
POP DE
|
||
DialExt: LD (IY+0),80h ;+5 End dialog table
|
||
POP AF
|
||
OUT (SLOT3),A
|
||
CALL PutDial ;Put dialog window
|
||
POP IY
|
||
; Select last element
|
||
SelLast: LD HL,DialTab+5
|
||
LD DE,ReCompBuff
|
||
LD B,0
|
||
LD C,(HL)
|
||
LD A,C
|
||
LDIR ; § ¯®«. ¡ãä¥à DialTab+5
|
||
LD C,A
|
||
DEC HL
|
||
LD E,L
|
||
LD D,H
|
||
OR A
|
||
SBC HL,BC
|
||
PUSH HL
|
||
LD BC,DialTab+4
|
||
OR A
|
||
SBC HL,BC
|
||
LD C,L
|
||
LD B,H
|
||
POP HL
|
||
LD A,B
|
||
OR C
|
||
JR Z,$+4
|
||
LDDR
|
||
LD HL,ReCompBuff
|
||
LD DE,DialTab+5
|
||
LD C,(HL)
|
||
LDIR
|
||
SUB A
|
||
LD (CIflag+1),A
|
||
LD IX,DialTab+5
|
||
LD HL,DIALe
|
||
PUSH HL
|
||
LD A,(IX+1)
|
||
SET 7,(IX+1)
|
||
CP InputLine
|
||
JP Z,InpLineI
|
||
CP ClRadioBut
|
||
JP Z,ClastI
|
||
CP ClCheckBut
|
||
JP Z,ClastI
|
||
CP ListBox
|
||
JP Z,PLstBoxI
|
||
CP Button
|
||
JR Z,ButtonI
|
||
POP HL
|
||
DIALe: LD C,1 ; ¢ë¢¥á⨠ªãàá®à ¬ë誨
|
||
RST ToDSS.Mouse
|
||
RET
|
||
|
||
|
||
ButtonI: LD E,(IX+2) ;Xo
|
||
LD D,(IX+4) ;Y
|
||
LD A,(IX+3) ;Xi
|
||
SUB E
|
||
LD C,A
|
||
JP SetDialInv
|
||
|
||
|
||
|
||
; Object ~Text line~
|
||
; Input: HL-label
|
||
; Format mouse table: None
|
||
;
|
||
PTextLn: LD C,(HL) ; X pos
|
||
INC HL
|
||
LD B,(HL) ; Y pos
|
||
INC HL
|
||
CALL GetPutA
|
||
LD A,(HL) ; 梥â áâப¨ ®¡ê¥ªâ TextLine
|
||
EX AF,AF'
|
||
INC HL
|
||
.loc1: LDI
|
||
EX AF,AF'
|
||
LD (DE),A
|
||
EX AF,AF'
|
||
INC DE
|
||
LD A,(HL)
|
||
CP 0FFh
|
||
JR Z,.loc2
|
||
OR A
|
||
JR NZ,.loc1
|
||
INC HL
|
||
RET
|
||
.loc2: INC HL
|
||
LD A,(HL)
|
||
OR A
|
||
JR NZ,.loc2
|
||
INC HL
|
||
RET
|
||
|
||
|
||
|
||
|
||
|
||
|
||
; ަ¨¤ ¨¥ ᮡë⨩
|
||
handleEvent: LD IX,what
|
||
handle1: LD (ix+0),evNothing ; what = evNoting
|
||
CALL ExmFire ; ¯®«ãç¨âì ⥪áâ. ª®®à¤. ¬ë誨
|
||
OR A ; ¡ãâ®(ë) ¬ë誨 ¦ â ?
|
||
JR NZ,ButtPrs ; ¤
|
||
LD C,31h ; ®¯à®á ª« ¢ë ¡¥§ ®¦¨¤ ¨ï
|
||
RST ToDSS
|
||
RET Z ; ¡ãä¥à ª« ¢ë ¯ãáâ
|
||
LD A,E
|
||
OR A
|
||
JR Z,NewComb ; ªãàá. ª« ¢¨è¨ (+Home,End,PgUp,PgDwn)
|
||
BIT 7,D
|
||
JR NZ,NewCmb ; ª®¬¡¨ 樨 á Shift,Ctrl,Alt
|
||
LD (ix+0),evKeyboard
|
||
LD (ix+1),E ; ª®¤ ᨬ¢®«
|
||
LD (ix+2),D ; ª®¤ áâ âãá ª« ¢ë
|
||
RET
|
||
|
||
; Šãàá®àë¥ ª« ¢¨è¨
|
||
NewComb: LD (ix+0),evCombKey ; ¯à¨§ ª ᮡëâ¨ï
|
||
LD (ix+1),E ; ¨¤¥â ®«ì
|
||
LD (ix+2),D ; ª®¤ ªãàá.ª« ¢¨è (¨«¨ áâ âãá ª« ¢ë)
|
||
RET
|
||
|
||
; Š®¬¡¨ æ¨ï á Shift,Ctrl,Alt
|
||
NewCmb: LD (ix+0),evCombKey
|
||
LD (ix+1),D ; 7-© ¡¨â, ¯à¨§ ª ¦ â¨ï Ctrl,Shift,Alt
|
||
LD (ix+2),E ; ª®¤ ª« ¢¨è¨
|
||
RET
|
||
|
||
; <20> ¦ ⨥ ¡ãâ® ¬ë誨
|
||
ButtPrs: BIT 1,A
|
||
RET NZ ; ¦ â ¯à ¢ ï ª« ¢¨è
|
||
LD (ix+0),evMouseFr ; ¯à¨§ ª ᮡëâ¨ï
|
||
LD (ix+1),L ; X Tcoord
|
||
LD (ix+2),H ; Y Tcoord
|
||
RET
|
||
|
||
|
||
what: DS 8 ; ¯®«¥ ᮡë⨩
|
||
|
||
|
||
|
||
|
||
|
||
|
||
;<3B>à®æ¥¤ãà ¯¥à¥¤ ç¨ á®®¡é¥¨© ¯® ®¡ê¥ªâ ¬ á ⥪ã饣® ®¡ê¥ªâ
|
||
TransMessUp:
|
||
PUSH IY
|
||
PUSH IX
|
||
JR TransEx
|
||
|
||
;<3B>à®æ¥¤ãà ¯¥à¥¤ ç¨ á®®¡é¥¨© ¯® ®¡ê¥ªâ ¬ á ¯¥à¢®£® ®¡ê¥ªâ
|
||
TransMessage:
|
||
PUSH IY
|
||
PUSH IX
|
||
LD IX,DialTab+5 ;’ ¡«¨æ ®¡ê¥ªâ®¢
|
||
TransLp: LD HL,TransEx
|
||
PUSH HL
|
||
LD A,(IX+1) ;’¥ªã騩 ®¡ê¥ªâ
|
||
AND 7Fh ;7-© ¡¨â - ®¡ê¥ªâ ¢ë¤¥«¥ë©
|
||
CP InputLine
|
||
JP Z,EInpLine
|
||
CP ClRadioBut
|
||
JP Z,EClasterB
|
||
CP ClCheckBut
|
||
JP Z,EClasterB
|
||
CP ListBox
|
||
JP Z,EListBox
|
||
CP Button
|
||
JP Z,EButton
|
||
;
|
||
POP HL
|
||
TransEx: LD C,(IX+0)
|
||
LD B,0
|
||
ADD IX,BC ;‘«¥¤. ®¡ê¥ªâ
|
||
BIT 7,(IX+0)
|
||
JR Z,TransLp ;7-© ¡¨â - ª®¥æ ®¡ê¥ªâ®¢
|
||
POP IX
|
||
POP IY
|
||
LD HL,what
|
||
LD A,(HL)
|
||
CP evMessage
|
||
RET NZ ;Test command
|
||
LD (HL),evNothing
|
||
RET
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
; Object ~Button~
|
||
; Input: HL-label
|
||
; Format mouse table:
|
||
; +0 - Object ~Claster check buttons"
|
||
; +1 - Xo position object
|
||
; +2 - Xi position object
|
||
; +3 - Y position object
|
||
; +4 - genered command
|
||
; +5 - Hot key
|
||
; +6 - Context
|
||
;
|
||
PButton: PUSH IY
|
||
INC IY
|
||
LD (IY+0),A ; +0 object
|
||
LD A,(HL) ; X pos
|
||
INC HL
|
||
LD C,A
|
||
ADD A,(IX+0) ; Pos X from begin screen
|
||
LD (IY+1),A ; +1 Xo
|
||
LD A,(HL) ; Y pos
|
||
INC HL
|
||
LD B,A
|
||
ADD A,(IX+1) ; Pos Y from begin screen
|
||
LD (IY+3),A ; +3 Yo
|
||
PUSH BC ; Save position
|
||
CALL GetPutA
|
||
EX DE,HL
|
||
LD C,ColButton
|
||
;LD C,A
|
||
LD B,0
|
||
LD (IY+5),B
|
||
LD A,(DE)
|
||
PButLp1: INC DE
|
||
CP '~'
|
||
JR NZ,PButN0
|
||
LD C,ColDhotkey
|
||
;LD C,A
|
||
LD A,(DE)
|
||
INC DE
|
||
LD (HL),A
|
||
INC HL
|
||
RES 5,A
|
||
LD (IY+5),A ; § ¤ âì Hot key
|
||
LD A,ColButton
|
||
AND 0F0h
|
||
OR C
|
||
LD (HL),A
|
||
INC HL
|
||
INC DE
|
||
LD C,ColButton ; 梥⠡ãâ® ¯®á«¥ hot-¡ãª¢ë
|
||
;LD C,A
|
||
INC B
|
||
LD A,(DE)
|
||
INC DE
|
||
PButN0: LD (HL),A
|
||
INC HL
|
||
LD (HL),C
|
||
INC HL
|
||
INC B
|
||
LD A,(DE)
|
||
OR A
|
||
JR NZ,PButLp1
|
||
INC DE
|
||
LD A,(IY+1)
|
||
ADD A,B
|
||
LD (IY+2),A
|
||
LD A,(ColDialWn) ;--
|
||
AND 0F0h
|
||
LD (HL),"Ü"
|
||
INC HL ;
|
||
LD (HL),A ;
|
||
EX DE,HL
|
||
POP BC ; Reset position
|
||
INC B
|
||
CALL GetPutA
|
||
INC DE
|
||
INC DE
|
||
LD A,(IY+2)
|
||
SUB (IY+1)
|
||
LD B,A
|
||
LD A,(ColDialWn) ;--
|
||
AND 0F0h ;
|
||
LD C,A ;
|
||
pbtn2: LD A,"ß"
|
||
LD (DE),A
|
||
INC DE
|
||
LD A,C ;
|
||
LD (DE),A ;
|
||
INC DE
|
||
DJNZ pbtn2
|
||
LD A,(HL)
|
||
INC HL
|
||
LD (IY+4),A
|
||
LD A,(HL)
|
||
INC HL
|
||
LD (IY+6),A ; Context
|
||
LD BC,7
|
||
ADD IY,BC
|
||
PUSH IY
|
||
EXX
|
||
POP HL
|
||
POP DE
|
||
OR A
|
||
SBC HL,DE
|
||
LD A,L
|
||
LD (DE),A
|
||
EXX
|
||
RET
|
||
|
||
|
||
|
||
;[]===========================================================[]
|
||
; Event button
|
||
; IX,DialTab+5
|
||
;
|
||
EButton: LD HL,what ; ᯨ᮪ ᮡë⨩
|
||
LD A,(HL)
|
||
INC HL
|
||
CP evMouseFr
|
||
JR Z,EBmouse
|
||
CP evKeyboard
|
||
JR Z,EBkeys
|
||
CP evCombKey
|
||
RET NZ
|
||
BIT 7,(IX+1)
|
||
RET NZ ; ¢ë©â¨ - ®¡ê¥ªâ ¢ë¤¥«¥
|
||
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) ;+1
|
||
CP 9 ; Shift+Tab
|
||
RET NZ
|
||
XOR A
|
||
LD (_Push+1),A ; Push flag
|
||
JP SetButt ; ¢ë¤¥«¨âì ¯à¥¤. ®¡ê¥ªâ
|
||
|
||
; ‘®¡ë⨥ ®â ¬ë誨,
|
||
; ¯à®¢¥àª ª®®à¤¨ â
|
||
EBmouse: LD E,(HL) ;Xcoord
|
||
INC HL
|
||
LD D,(HL) ;Ycoord
|
||
LD A,D
|
||
CP (IX+4) ;Y pos button
|
||
RET NZ ;if <> exit
|
||
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 ;>
|
||
SUB A
|
||
LD (Kbutt+1),A
|
||
INC A
|
||
LD (_Push+1),A ;Push flag
|
||
BIT 7,(IX+1)
|
||
JR NZ,_Push
|
||
JR SetButt
|
||
|
||
; ‘®¡ë⨥ - ¦ â ª« ¢¨è
|
||
EBkeys: XOR A
|
||
LD (_Push+1),A ; Push flag
|
||
LD A,(HL)
|
||
CP " "
|
||
JR C,ebkey1
|
||
CP "A"
|
||
RET C
|
||
ebkey1: INC HL ; hl,what+2
|
||
BIT 7,(HL) ; ¦ â ª« ¢¨è á Ctrl,Shift,Alt ?
|
||
RET NZ ; ¤ , ¢ë©â¨
|
||
RES 5,A ; a..z -> A..Z
|
||
BIT 7,(IX+1) ; ¢ë¡à ¨«¨ ¥ ¢ë¡à
|
||
JR NZ,EBkeyN
|
||
CP 9 ; Tab
|
||
JR Z,SetButt ; ¢ë¤¥«¨âì á«¥¤. ®¡ê¥ªâ
|
||
CP 0Dh ; ###
|
||
JR Z,SetButt
|
||
JR EBkeyN1
|
||
;
|
||
EBkeyN: CP 0Dh
|
||
JR Z,EBent
|
||
EBkeyN1: CP (IX+6) ; Hot key
|
||
RET NZ
|
||
EBent: LD A,1
|
||
LD (_Push+1),A
|
||
LD (Kbutt+1),A
|
||
SetButt: CALL MoveObj ; Select Button
|
||
CALL ResDialInv ; Reset previos invert
|
||
LD IX,DialTab+5
|
||
LD E,(IX+2) ; Xo
|
||
LD D,(IX+4) ; Y
|
||
LD A,(IX+3) ; Xi
|
||
SUB E
|
||
LD C,A
|
||
CALL SetDialInv
|
||
_Push: LD A,0
|
||
OR A
|
||
JP Z,BTexit
|
||
CALL PushBut ; Push/pop ¡ãâ®
|
||
JP C,BTexit
|
||
LD HL,what
|
||
LD (HL),evCommand
|
||
INC HL
|
||
LD A,(IX+5)
|
||
LD (HL),A
|
||
RET
|
||
;Button exit
|
||
BTexit: LD HL,what
|
||
LD (HL),evNothing
|
||
RET
|
||
|
||
; <20> ¦ âì/®â¦ âì ¡ãâ®
|
||
PushBut: IN A,(SLOT3)
|
||
PUSH AF
|
||
kk5: LD A,(hPages.Win2)
|
||
OUT (SLOT3),A
|
||
PUSH IX
|
||
LD E,(IX+2) ;Xo
|
||
LD D,(IX+4) ;Y
|
||
LD A,(IX+3) ;Xi
|
||
SUB E
|
||
INC A ;Xi-Xo+1=Full len with shadow
|
||
LD L,A
|
||
LD H,1 ;Ylen=2 with shadow
|
||
LD (BTlen+1),HL ;Save len
|
||
LD (BTpos+1),DE ;Save pos
|
||
LD A,L
|
||
PUSH AF ;Save len
|
||
LD IX,DialData
|
||
LD A,E
|
||
SUB (IX+0)
|
||
LD C,A
|
||
LD A,D
|
||
SUB (IX+1)
|
||
LD B,A
|
||
PUSH BC
|
||
CALL GetPutA
|
||
LD C,L
|
||
SLA C
|
||
LD B,0
|
||
LD HL,ReCompBuff
|
||
EX DE,HL
|
||
LDIR
|
||
EX DE,HL
|
||
POP BC
|
||
INC B
|
||
CALL GetPutA
|
||
POP AF
|
||
LD C,A
|
||
SLA C
|
||
LD B,0
|
||
EX DE,HL
|
||
LDIR
|
||
PUSH AF
|
||
DEC A ;len without shadow
|
||
ADD A,A
|
||
LD C,A
|
||
LD B,0
|
||
LD HL,ReCompBuff
|
||
LD DE,ReCompBuff+160
|
||
LD A,20h
|
||
LD (DE),A ;shift on one pos
|
||
INC DE
|
||
LD A,(ColDialWn)
|
||
LD (DE),A
|
||
INC DE
|
||
LDIR ;move button
|
||
POP AF ;reset len
|
||
EX DE,HL
|
||
LD B,A
|
||
;LD D,20h
|
||
LD A,(ColDialWn)
|
||
btln: LD (HL),20h;D
|
||
INC HL
|
||
LD (HL),A ;without down shadow
|
||
INC HL
|
||
DJNZ btln ;$-4
|
||
LD IX,ReCompBuff+160 ;Put button
|
||
BTlen: LD HL,0
|
||
BTpos: LD DE,0
|
||
CALL testbut
|
||
JR NC,bt1
|
||
DI
|
||
IN A,(SLOT1)
|
||
LD B,A
|
||
XOR A
|
||
LD C,BIOS.WIN_RESTORE
|
||
RST ToBIOS
|
||
EI
|
||
LD IX,ReCompBuff+160 ;Put button
|
||
LD HL,(BTlen+1)
|
||
LD DE,(BTpos+1)
|
||
INC D
|
||
LD A,L
|
||
ADD A,A
|
||
ADD A,XL
|
||
LD XL,A
|
||
JR NC,$+4
|
||
INC XH
|
||
CALL testbut
|
||
JR NC,bt1
|
||
DI
|
||
IN A,(SLOT1)
|
||
LD B,A
|
||
XOR A
|
||
LD C,BIOS.WIN_RESTORE
|
||
RST ToBIOS
|
||
EI
|
||
bt1: POP IX
|
||
Kbutt: LD A,0 ; ०¨¬ ¬ëèª /ª« ¢
|
||
OR A
|
||
JR Z,PushLp ; ¬ëèª
|
||
LD B,8
|
||
HALT
|
||
DJNZ $-1
|
||
JR PushEx
|
||
PushLp: ; ¯à®¢¥àª ª®®à¤¨ â ¬ë誨
|
||
CALL ExmFire ; ¯®«ãç¨âì § ª. ª®®à¤. ¬ë誨
|
||
JR Z,PushEx
|
||
BIT 0,A ;1,a
|
||
JR Z,PushEx ; ¦ â «¥¢ ï ª« ¢¨è
|
||
LD A,H
|
||
CP (IX+4) ; Y pos button
|
||
JR NZ,PushEx
|
||
LD C,(IX+2) ; Xo pos
|
||
LD B,(IX+3) ; Xi pos
|
||
INC B
|
||
LD A,L
|
||
BIT 7,C
|
||
JR NZ,$+5
|
||
CP C ; Xo pos
|
||
JR C,PushEx ; <
|
||
BIT 7,B
|
||
JR NZ,PushLp
|
||
CP B
|
||
JR C,PushLp ; >
|
||
PushEx: PUSH IX
|
||
PUSH HL
|
||
LD IX,ReCompBuff ; Put prev button
|
||
LD HL,(BTlen+1)
|
||
LD DE,(BTpos+1)
|
||
CALL testbut
|
||
JR NC,bt2
|
||
DI
|
||
IN A,(SLOT1)
|
||
LD B,A
|
||
XOR A
|
||
LD C,BIOS.WIN_RESTORE
|
||
RST ToBIOS
|
||
EI
|
||
LD IX,ReCompBuff ;Put button
|
||
LD HL,(BTlen+1)
|
||
LD DE,(BTpos+1)
|
||
INC D
|
||
LD A,L
|
||
ADD A,A
|
||
ADD A,XL
|
||
LD XL,A
|
||
JR NC,$+4
|
||
INC XH
|
||
CALL testbut
|
||
JR NC,bt2
|
||
IN A,(SLOT1)
|
||
LD B,A
|
||
XOR A
|
||
LD C,BIOS.WIN_RESTORE ; ¨§ ¡ãä¥à ¢ ®ª®
|
||
DI
|
||
RST ToBIOS
|
||
EI
|
||
bt2: POP HL
|
||
POP IX
|
||
POP AF
|
||
OUT (SLOT3),A
|
||
LD A,(Kbutt+1)
|
||
OR A
|
||
RET NZ
|
||
; ª®®à¤¨ âë ¬ë誨
|
||
LD A,H
|
||
CP (IX+4) ;Y pos button
|
||
SCF
|
||
RET NZ
|
||
LD C,(IX+2) ;Xo pos
|
||
LD B,(IX+3) ;Xi pos
|
||
INC B
|
||
LD A,L
|
||
BIT 7,C
|
||
JR NZ,$+4
|
||
CP C ;Xo pos
|
||
RET C ;<
|
||
BIT 7,B
|
||
SCF
|
||
RET NZ
|
||
CP B ;Xi pos
|
||
CCF ;>
|
||
RET
|
||
;
|
||
testbut:
|
||
LD A,D
|
||
CP 31
|
||
RET NC
|
||
BIT 7,E
|
||
JR Z,bt0
|
||
LD A,E
|
||
LD E,0
|
||
NEG
|
||
LD C,A
|
||
SUB L
|
||
NEG
|
||
LD L,A
|
||
OR A
|
||
RET Z
|
||
RET M
|
||
LD A,C
|
||
ADD A,A
|
||
ADD A,XL
|
||
LD XL,A
|
||
JR NC,bt0
|
||
INC XH
|
||
bt0: LD A,E
|
||
CP 80
|
||
RET NC
|
||
ADD A,L
|
||
CP 80
|
||
RET C
|
||
LD A,80
|
||
SUB E
|
||
LD L,A
|
||
SCF
|
||
RET
|
||
|
||
|
||
; Moving object to first tab pos
|
||
; Input: IX-Address object
|
||
MoveObj: SET 6,(IX+0) ;Mark object
|
||
LD HL,DialTab+5
|
||
MoveOlp: BIT 6,(HL) ;Test on mark object
|
||
RES 6,(HL) ;Reset mark
|
||
RET NZ ;Exit if mark
|
||
INC HL
|
||
RES 7,(HL) ;Reset select object
|
||
DEC HL
|
||
LD DE,ReCompBuff ;Move first object in buffer
|
||
LD C,(HL) ;Len object label
|
||
LD B,0
|
||
RES 6,C
|
||
LDIR ;Move
|
||
PUSH HL
|
||
PUSH HL
|
||
LD C,(HL) ;-6
|
||
RES 6,C
|
||
ADD HL,BC ;Search end table
|
||
BIT 7,(HL)
|
||
JR Z,$-6
|
||
POP BC
|
||
OR A ;HL-End table,BC-Address 2 obj
|
||
SBC HL,BC ;HL-BC=Len table -1 object
|
||
LD C,L ;BC=Len table
|
||
LD B,H
|
||
POP HL
|
||
LD DE,DialTab+5 ;Move to begin table
|
||
PUSH DE
|
||
LD A,B
|
||
OR C
|
||
JR Z,$+4
|
||
LDIR
|
||
LD HL,ReCompBuff ;Move from buffer to end table
|
||
LD C,(HL) ;object BC=len Object label
|
||
RES 6,C
|
||
LDIR
|
||
POP HL
|
||
INC HL
|
||
SET 7,(HL) ;Setting object
|
||
DEC HL
|
||
JR MoveOlp
|
||
|
||
|
||
|
||
|
||
;[]===========================================================[]
|
||
; Setting dialog invert objects
|
||
; Input:
|
||
; E - X pos
|
||
; D - Y pos
|
||
; C - X len
|
||
SetDialInv:
|
||
PUSH IX
|
||
LD IX,DialData
|
||
IN A,(SLOT3)
|
||
PUSH AF ;á®åà.page4
|
||
kk6: LD A,(hPages.Win2)
|
||
OUT (SLOT3),A ;¢ª«.¡ãä¥à
|
||
LD L,C
|
||
LD H,1
|
||
LD (RDlIlen+1),HL ;Save len
|
||
LD (RDlIpos+1),DE ;Save pos
|
||
LD A,E
|
||
SUB (IX+0)
|
||
LD C,A
|
||
LD A,D
|
||
SUB (IX+1)
|
||
LD B,A
|
||
CALL GetPutA
|
||
EX DE,HL
|
||
LD (RDlIbuf+2),HL
|
||
LD B,E
|
||
LD E,ColDialInv
|
||
;LD E,A
|
||
LD D,ColDhotkey
|
||
;LD D,A
|
||
SetDin1: INC HL
|
||
LD A,(HL)
|
||
AND 0Fh
|
||
CP D
|
||
JR Z,setdn2 ;$+5
|
||
LD A,(HL)
|
||
;XOR E
|
||
AND 0xF0 ;
|
||
OR E ;
|
||
LD (HL),A
|
||
setdn2: INC HL
|
||
DJNZ SetDin1
|
||
LD IX,(RDlIbuf+2) ;Put Name with invert
|
||
LD HL,(RDlIlen+1)
|
||
LD DE,(RDlIpos+1)
|
||
CALL PutDialLn
|
||
POP AF
|
||
OUT (SLOT3),A
|
||
POP IX
|
||
RET
|
||
|
||
|
||
|
||
|
||
; Res dialog invert objects
|
||
; Input: None
|
||
ResDialInv:
|
||
PUSH IX
|
||
IN A,(SLOT3)
|
||
PUSH AF ;á®åà.page4
|
||
kk7: LD A,(hPages.Win2)
|
||
OUT (SLOT3),A ;¢ª«.¡ãä¥à
|
||
LD HL,(RDlIbuf+2)
|
||
LD A,(RDlIlen+1)
|
||
LD B,A
|
||
LD E,ColDialInv1
|
||
;LD E,A
|
||
LD D,ColDhotkey
|
||
;LD D,A
|
||
ResDin1: INC HL
|
||
LD A,(HL)
|
||
AND 0Fh
|
||
CP D
|
||
JR Z,resdn2 ;$+5
|
||
LD A,(HL)
|
||
;XOR E
|
||
AND 0xF0 ;
|
||
CP ColButton
|
||
JR Z,.loc2
|
||
OR E ;
|
||
.loc2: LD (HL),A
|
||
resdn2: INC HL
|
||
DJNZ ResDin1
|
||
RDlIbuf: LD IX,0 ;Put Name with invert
|
||
RDlIlen: LD HL,0
|
||
RDlIpos: LD DE,0
|
||
CALL PutDialLn
|
||
CIflag: LD A,0 ;1-Was claster invert
|
||
OR A
|
||
CALL NZ,ResClasInv
|
||
CALL ResILCr ; á¡à®á¨âì ªãàá®à ¢ inp.line
|
||
POP AF
|
||
OUT (SLOT3),A
|
||
POP IX
|
||
LD HL,what
|
||
LD (HL),evMessage
|
||
INC HL
|
||
LD (HL),msHiddInvr
|
||
JP TransMessage
|
||
|
||
|
||
; Res Claster invert
|
||
; Input: None
|
||
ResClasInv:
|
||
PUSH IX
|
||
IN A,(SLOT3)
|
||
PUSH AF ;á®åà.page4
|
||
kk8: LD A,(hPages.Win2)
|
||
OUT (SLOT3),A ;¢ª«.¡ãä¥à
|
||
PUSH HL
|
||
LD HL,(RClIbuf+2)
|
||
LD A,(RClIlen+1)
|
||
LD B,A
|
||
LD E,ColDialInv1
|
||
;LD E,A
|
||
LD D,ColDhotkey
|
||
;LD D,A
|
||
ResDin2: INC HL
|
||
LD A,(HL)
|
||
AND 0Fh
|
||
CP D
|
||
JR Z,.loc2 ;$+5
|
||
LD A,(HL)
|
||
;XOR E
|
||
AND 0xF0 ;
|
||
OR E ;
|
||
LD (HL),A ;+6
|
||
.loc2: INC HL
|
||
DJNZ ResDin2
|
||
RClIbuf: LD IX,0 ;Put Name with invert
|
||
RClIlen: LD HL,0
|
||
RClIpos: LD DE,0
|
||
CALL PutDialLn
|
||
CALL ResILCr ; á¡à®á¨âì ªãàá®à
|
||
SUB A
|
||
LD (CIflag+1),A
|
||
POP HL
|
||
POP AF
|
||
OUT (SLOT3),A
|
||
POP IX
|
||
RET
|
||
|
||
|
||
;[]===========================================================[]
|
||
;
|
||
PutDialLn:
|
||
LD A,D
|
||
CP 1Fh
|
||
RET NC
|
||
BIT 7,E
|
||
JR Z,pdln
|
||
LD A,E
|
||
LD E,0
|
||
NEG
|
||
LD C,A
|
||
SUB L
|
||
NEG
|
||
LD L,A
|
||
RET Z
|
||
RET M
|
||
LD A,C
|
||
ADD A,A
|
||
ADD A,XL
|
||
LD XL,A
|
||
JR NC,pdln
|
||
INC XH
|
||
pdln: LD A,E
|
||
CP 80
|
||
RET NC
|
||
ADD A,L
|
||
CP 80
|
||
JR C,$+6
|
||
LD A,80
|
||
SUB E
|
||
LD L,A
|
||
DI
|
||
kk9: LD A,(hPages.Win2)
|
||
LD B,A
|
||
XOR A
|
||
LD C,BIOS.WIN_RESTORE
|
||
RST ToBIOS
|
||
EI
|
||
RET
|
||
|
||
|
||
|
||
|
||
;!FIXIT CURSOR
|
||
; “áâ ®¢ª ªãàá®à ç¥àâ®çª®©
|
||
; SetCursor: ; ¯®«ãç¨âì á¨áâ. § ª®£¥¥à â®à
|
||
; ld de,0xB700 ; ¡ãä¥à ¤«ï 2kB § ª®£¥¥à â®à
|
||
; ld c,BIOS.WIN_GET_ZG
|
||
; RST ToBIOS
|
||
; ; ¯®á«¥¤¨¥ 512 ¡ ©â (2 ¨¦¨¥ ç¥àâë) § ¯®«¨âì ª®¤®¬ 0xFF
|
||
; ld hl,0xB700+1536
|
||
; ld bc,00FFh
|
||
; ._loop: ld (hl),c
|
||
; inc hl
|
||
; ld (hl),c
|
||
; inc hl
|
||
; djnz ._loop
|
||
; ; ãáâ. § ª®£¥¥à â®à á ®¬¥à®¬ 0x5B
|
||
; ld a,0x5B
|
||
; ld de,0xB700
|
||
; ld c,BIOS.WIN_SET_ZG
|
||
; RST ToBIOS
|
||
; ret
|
||
;
|
||
|
||
;-- Dialog Windows color
|
||
ColDialFr: EQU 0Fh ; 梥â à ¬ª¨ ®ª
|
||
|
||
ColDhotkey: EQU 0Ch ; 梥â hot-ª« ¢¨è
|
||
|
||
ColButton: EQU 20h ; 梥⠡ãâ®®¢
|
||
|
||
ColLstBxFr: EQU 1Fh ; 梥â à ¬ª¨ ListBox-
|
||
ColListBox: EQU 1Fh ; 梥â ᯨ᪠ListBox-
|
||
ColLstBoxI: EQU 5Eh ; 梥⠢뤥«. ªãàá®à ªâ. ®¡ê¥ªâ
|
||
ColLstBxHI: EQU 1Eh ; 梥⠢뤥«. ªãàá®à ¥ ªâ. ®¡ê¥ªâ
|
||
ColScrlBar: EQU 0Fh ; 梥â áªà®««-¡ à
|
||
ColInpLine: EQU 0Eh ; 梥â । ªâ. ¯®«ï ¬¥âª¨ ¤¨áª¥âë
|
||
|
||
ColDialInv: EQU 0Fh ; color dialog window invert
|
||
ColDialInv1: EQU 07h ; color dialog window invert
|
||
|
||
ColFormText: EQU 31h ; 梥â ⥪áâ ¢ ®ª¥ ä®à¬ â¨à®¢ ¨ï
|
||
ColFormNumber: EQU 3Eh ; æ¢¥â æ¨äà ¢ ®ª¥ ä®à¬ â¨à®¢ ¨ï
|
||
ColorFrame: EQU ColFormText ; 梥â à ¬ª¨ ®¡ê¥ªâ Frame
|
||
|
||
|
||
ColDialWn: DB 17h ; 梥⠮ª
|
||
|
||
FramDSl: DB "ɻȼͺºº" ; à ¬ª ®ª
|
||
|
||
|
||
|
||
SavDial: PUSH IX
|
||
LD A,(IX+2) ;with shadow
|
||
ADD A,2
|
||
LD L,A
|
||
LD A,(IX+3)
|
||
INC A
|
||
LD H,A ;Wind len
|
||
LD E,(IX+0)
|
||
LD D,(IX+1)
|
||
EXX
|
||
CALL GetMousInfo
|
||
EXX
|
||
DI
|
||
LD IX,WinBoxBuff ;Address Box buffers
|
||
kk1: LD A,(hPages.Win2) ;Page buffer
|
||
LD B,A
|
||
XOR A
|
||
LD C,BIOS.WIN_COPY ; ª®¯¨à. ¨§ ®ª ¢ ¡ãä¥à
|
||
RST ToBIOS
|
||
EI
|
||
CALL GetMousInfo
|
||
POP IX
|
||
RET
|
||
|
||
|
||
|
||
|
||
; <20>à®æ¥¤ãà ®á¢®¡®¦¤¥¨ï ¯àאַ㣮«ì®© ¯«®é ¤¨ ¤¨ «. ®ª
|
||
; <20> ¢å®¤: IX - ®¯¨á ⥫ì
|
||
;
|
||
PutDialRc:
|
||
LD HL,WinBoxBuff+6800
|
||
LD B,(IX+3) ;Len Y
|
||
LD C,(IX+2) ;Len X
|
||
;LD E,20h
|
||
LD A,(ColDialWn)
|
||
PutRc1: LD D,C
|
||
putrc: LD (HL),20h ;E
|
||
INC HL
|
||
LD (HL),A ;window color
|
||
INC HL
|
||
DEC D
|
||
JR NZ,putrc ;$-5
|
||
INC HL ;place for shadow
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
DJNZ PutRc1
|
||
RET
|
||
|
||
|
||
; <20>à®æ¥¤ãà «®¦¥¨ï ¯àאַ㣮«ìãî ¯«®é ¤ì ¤¨ «. ®ª à ¬ª¨
|
||
; <20> ¢å®¤: IX - ®¯¨á ⥫ì
|
||
; HL - ¤à¥á ®¯¨á ⥫ï à ¬ª¨
|
||
;
|
||
PutDialFr:
|
||
PUSH IY
|
||
PUSH HL
|
||
POP IY
|
||
LD HL,WinBoxBuff+6800
|
||
LD C,ColDialFr
|
||
LD A,(ColDialWn)
|
||
AND 0F0h
|
||
OR C
|
||
LD C,A
|
||
LD A,(IY+0)
|
||
LD (HL),A ;First Line
|
||
INC HL
|
||
LD (HL),C
|
||
INC HL
|
||
LD B,(IX+2) ;Len DialX
|
||
DEC B
|
||
DEC B
|
||
LD A,(IY+4)
|
||
.loc1: LD (HL),A
|
||
INC HL
|
||
LD (HL),C
|
||
INC HL
|
||
DJNZ .loc1
|
||
LD A,(IY+1)
|
||
LD (HL),A
|
||
INC HL
|
||
LD (HL),C
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
;
|
||
LD E,(IX+2) ;lenX
|
||
DEC E
|
||
DEC E
|
||
LD D,B
|
||
LD B,(IX+3) ;lenY
|
||
DEC B
|
||
DEC B
|
||
LD A,(IY+5)
|
||
.loc2: LD (HL),A ;middle space window
|
||
INC HL
|
||
LD (HL),C
|
||
INC HL
|
||
ADD HL,DE
|
||
ADD HL,DE
|
||
LD (HL),A ;middle space window
|
||
INC HL
|
||
LD (HL),C
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
DJNZ .loc2
|
||
;
|
||
LD A,(IY+2)
|
||
LD (HL),A ;End Line
|
||
INC HL
|
||
LD (HL),C
|
||
INC HL
|
||
LD B,(IX+2) ;Len X
|
||
DEC B
|
||
DEC B
|
||
LD A,(IY+4)
|
||
.loc3: LD (HL),A
|
||
INC HL
|
||
LD (HL),C
|
||
INC HL
|
||
DJNZ .loc3
|
||
LD A,(IY+3)
|
||
LD (HL),A
|
||
INC HL
|
||
LD (HL),C
|
||
INC HL
|
||
LD HL,DialName
|
||
LD E,L ;DE=Dial label
|
||
LD D,H
|
||
LD B,1
|
||
.loc4: INC B ;B=Len name+2 (for space)
|
||
LD A,(HL)
|
||
INC HL
|
||
OR A ;0-End name
|
||
JR NZ,.loc4
|
||
LD HL,WinBoxBuff+6800
|
||
LD A,(IX+2) ;Len X
|
||
SUB B ;LenX-Len name=Len empty
|
||
SRL A ;Len empty/2=shift
|
||
LD C,A
|
||
LD B,0
|
||
ADD HL,BC ;get address name place
|
||
ADD HL,BC
|
||
;LD (HL)," " ; ¢¥¤. ¯à®¡¥« ¨¬¥¨ ®ª
|
||
INC HL
|
||
INC HL
|
||
EX DE,HL ;HL=Adr.Name,DE=Adr.Place
|
||
.loc5: LDI ;Move
|
||
INC DE ;Attrib place
|
||
LD A,(HL)
|
||
OR A ;0-End name
|
||
JR NZ,.loc5
|
||
;LD A," " ; § ªà. ¯à®¡¥« ¨¬¥¨ ®ª
|
||
;LD (DE),A
|
||
POP IY
|
||
RET
|
||
|
||
; <20>à®æ¥¤ãà ¢ë¢®¤ ¢ ¡ãä¥à ⥨ ®ª
|
||
; <20> ¢å®¤: IX - ¤à¥á ®¯¨á ⥫ï
|
||
PutDialSh:
|
||
LD HL,WinBoxBuff+6800
|
||
LD A,(IX+2)
|
||
LD E,A
|
||
LD D,0
|
||
ADD HL,DE
|
||
ADD HL,DE
|
||
EXX
|
||
LD E,A ;¤«¨ ®ª X
|
||
BIT 7,(IX+0)
|
||
JR Z,ExShD1 ;¯à ¢ ï £à ¨æ íªà
|
||
LD A,(IX+0)
|
||
NEG ;¢ A- ᪮«ìª® ®ª® § «¥§«® § íªà
|
||
SUB E ;-¤«¨ ®ª =-¢¨¤¨¬ ï ç áâì
|
||
NEG
|
||
LD E,A ;¤«¨ ¢¨¤¨¬®© ç áâ¨
|
||
ExShD1: LD D,0
|
||
LD HL,WinBoxBuff
|
||
ADD HL,DE
|
||
ADD HL,DE
|
||
LD A,(HL) ;¯¥à¢ ï «¨¨ï ¡¥§ ⥨
|
||
INC HL
|
||
EXX
|
||
LD (HL),A
|
||
INC HL
|
||
EXX
|
||
LD A,(HL)
|
||
INC HL
|
||
EXX
|
||
LD (HL),A
|
||
INC HL
|
||
EXX
|
||
LD A,(HL)
|
||
INC HL
|
||
EXX
|
||
LD (HL),A
|
||
INC HL
|
||
EXX
|
||
LD A,(HL)
|
||
INC HL
|
||
EXX
|
||
LD (HL),A
|
||
INC HL
|
||
; á¥à¥¤¨ ®ª
|
||
LD B,(IX+3) ;¤«¨ ®ª Y-1
|
||
DEC B
|
||
DShadLp: ADD HL,DE
|
||
ADD HL,DE
|
||
EXX
|
||
ADD HL,DE
|
||
ADD HL,DE
|
||
LD A,(HL)
|
||
INC HL
|
||
EXX
|
||
LD (HL),A
|
||
INC HL
|
||
EXX
|
||
LD A,(HL)
|
||
INC HL
|
||
EXX
|
||
AND 7
|
||
JR NZ,$+4
|
||
LD A,7
|
||
LD (HL),A
|
||
INC HL
|
||
EXX
|
||
LD A,(HL)
|
||
INC HL
|
||
EXX
|
||
LD (HL),A
|
||
INC HL
|
||
EXX
|
||
LD A,(HL)
|
||
INC HL
|
||
EXX
|
||
AND 7
|
||
JR NZ,$+4
|
||
LD A,7
|
||
LD (HL),A
|
||
INC HL
|
||
DJNZ DShadLp
|
||
ADD HL,DE ;ª®¥æ «¨¨¨ ¤«ï ⥨
|
||
ADD HL,DE
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
EXX
|
||
ADD HL,DE ;ª®¥æ ¡ãä¥à
|
||
ADD HL,DE
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
EXX
|
||
LD B,E
|
||
DShadL1: EXX
|
||
DEC HL ;§ ¯®«ï¥¬ á ª®æ
|
||
LD A,(HL)
|
||
EXX
|
||
DEC HL
|
||
AND 7
|
||
JR NZ,$+4
|
||
LD A,7
|
||
LD (HL),A
|
||
EXX
|
||
DEC HL
|
||
LD A,(HL)
|
||
EXX
|
||
DEC HL
|
||
LD (HL),A
|
||
DJNZ DShadL1
|
||
EXX ;¤¢ ¯¥à¢ëå § ª®¬¥áâ ¡¥§ ¨§¬¥¥¨©
|
||
DEC HL
|
||
LD A,(HL)
|
||
EXX
|
||
DEC HL
|
||
LD (HL),A
|
||
EXX
|
||
DEC HL
|
||
LD A,(HL)
|
||
EXX
|
||
DEC HL
|
||
LD (HL),A
|
||
EXX
|
||
DEC HL
|
||
LD A,(HL)
|
||
EXX
|
||
DEC HL
|
||
LD (HL),A
|
||
EXX
|
||
DEC HL
|
||
LD A,(HL)
|
||
EXX
|
||
DEC HL
|
||
LD (HL),A
|
||
RET
|
||
|
||
|
||
; Get put address in memory
|
||
; Input: BC - Coords from begin window
|
||
; Output: DE - Address put place
|
||
;
|
||
GetPutA: PUSH HL
|
||
LD HL,WinBoxBuff+6800
|
||
LD A,(IX+2) ;Len X-2
|
||
ADD A,2 ;Full len with shadow
|
||
ADD A,A ;With attributs
|
||
LD E,A ;LenX in bytes
|
||
LD D,0
|
||
LD A,B
|
||
OR A
|
||
JR Z,$+5
|
||
ADD HL,DE
|
||
DJNZ $-1
|
||
LD E,C ;$+5
|
||
ADD HL,DE ;DE-shiftX
|
||
ADD HL,DE
|
||
EX DE,HL ;DE-Address
|
||
POP HL
|
||
RET
|
||
|
||
|
||
|
||
|
||
|
||
|
||
;[]========================================================[]
|
||
|
||
|
||
; Žç¨áâ¨âì ¤¥áªâ®¯
|
||
ClearDesk: CALL setpal
|
||
; ’¨â« ¯à®£à ¬¬ë
|
||
LD DE,0000h
|
||
LD C,BIOS.LP_SET_PLACE ; ãáâ. ¯®«®¦. ªãàá®à
|
||
RST ToBIOS
|
||
LD HL,Title
|
||
LD E,0Fh ; âਡãâ
|
||
LD BC,#50*256+BIOS.LP_PRINT_LINE ; ¢ë¢®¤ áâப¨
|
||
RST ToBIOS
|
||
CALL Clear1
|
||
; ¨¦ïï ¯®«®áª
|
||
LD DE,1F00h ; Y/X ¯®«®¦. ᨬ¢®«
|
||
LD C,BIOS.LP_SET_PLACE ; ãáâ. ª®®à¤¨ âë ¢ ®ª¥
|
||
RST ToBIOS
|
||
LD A," " ; ᨬ¢®«
|
||
LD E,0Fh ; âਡãâ
|
||
LD BC,5081h ; ¯¥ç âì ᨬ¢®« á âਡã⮬
|
||
RST ToBIOS
|
||
RET
|
||
|
||
|
||
Clear1: LD DE,0100h ; Y/X ¯®«®¦. ®ª
|
||
LD HL,1E50h ; Y/X à §¬¥à
|
||
LD BC,408Dh ; b= âਡãâ
|
||
LD A," " ; ᨬ¢®«
|
||
RST ToBIOS
|
||
RET
|
||
|
||
|
||
|
||
;setpal: ld hl,pallete ; ¯ «¨âà
|
||
; ld de,1000h ; ç¨á«® 梥⮢ ¯ «¨âàë/ ç «ìë© æ¢¥â
|
||
; ld bc,0FFA4h ; ¬ ᪠梥â /äãªæ¨ï ãáâ ®¢ª¨
|
||
; ld a,1 ; ®¬¥à ¯ «¨âàë (0=0-© íªà , 1=1-© íªà )
|
||
; RST ToBIOS
|
||
; ret
|
||
|
||
;pallete: ; b,g,r,0
|
||
; db 0,0,0,0 ; 梥â 0, ç¥àë©
|
||
; db 128,0,0,0 ; 梥â 1, ᨨ©
|
||
; db 0,128,0,0 ; 梥â 2, §¥«¥ë©
|
||
; db 128,128,0,0 ; 梥â 3, ¡¨àî§®¢ë© (æ¨ )
|
||
; db 0,0,128,0 ; 梥â 4, ªà áë©
|
||
; db 128,0,128,0 ; 梥â 5, ¯ãà¯ãàë©
|
||
; db 64,64,64,0 ; 梥â 6, ª®à¨ç¥¢ë©
|
||
; db 128,128,128,0 ; 梥â 7, á¥àë©
|
||
;
|
||
; db 192,192,192,0 ; 梥â 8, ¡¥«ë©
|
||
; db 255,0,0,0 ; 梥â 9, £®«ã¡®©
|
||
; db 0,255,0,0 ; 梥â A, ïમ-§¥«¥ë©
|
||
; db 255,255,0,0 ; 梥â B, ïમ-¡¨àî§®¢ë©
|
||
; db 0,0,255,0 ; 梥â C, ïમ-ªà áë©
|
||
; db 255,0,255,0 ; 梥â D, ïમ-¯ãà¯ãàë©
|
||
; db 0,255,255,0 ; 梥â E, ïમ-¦¥«âë©
|
||
; db 255,255,255,0 ; 梥â F, ïમ-¡¥«ë©
|
||
|
||
|
||
; “áâ ®¢¨âì ¨¢¥àá¨î ¤«ï 梥â 0Fh
|
||
setpal: LD HL,pal ; ¯ «¨âà
|
||
LD DE,0100h ; ç¨á«® 梥⮢ ¯ «¨âàë/ ç «ìë© æ¢¥â
|
||
LD BC,0FFA4h ; ¬ ᪠梥â /äãªæ¨ï ãáâ ®¢ª¨
|
||
LD A,4 ; ®¬¥à ¯ «¨âàë (0=0-© íªà , 1=1-© íªà )
|
||
RST ToBIOS
|
||
LD HL,pal1
|
||
LD DE,010Fh ; ç¨á«® 梥⮢ ¯ «¨âàë/ ç «ìë© æ¢¥â
|
||
LD BC,0FFA4h
|
||
LD A,4
|
||
RST ToBIOS
|
||
;
|
||
LD HL,pal1
|
||
LD DE,0100h ; ç¨á«® 梥⮢ ¯ «¨âàë/ ç «ìë© æ¢¥â
|
||
LD BC,0FFA4h
|
||
LD A,5
|
||
RST ToBIOS
|
||
LD HL,pal
|
||
LD DE,010Fh ; ç¨á«® 梥⮢ ¯ «¨âàë/ ç «ìë© æ¢¥â
|
||
LD BC,0FFA4h
|
||
LD A,5
|
||
RST ToBIOS
|
||
;
|
||
LD HL,pal
|
||
LD DE,0100h ; ç¨á«® 梥⮢ ¯ «¨âàë/ ç «ìë© æ¢¥â
|
||
LD BC,0FFA4h
|
||
LD A,6
|
||
RST ToBIOS
|
||
LD HL,pal1
|
||
LD DE,010Fh ; ç¨á«® 梥⮢ ¯ «¨âàë/ ç «ìë© æ¢¥â
|
||
LD BC,0FFA4h
|
||
LD A,6
|
||
RST ToBIOS
|
||
;
|
||
LD HL,pal1
|
||
LD DE,0100h ; ç¨á«® 梥⮢ ¯ «¨âàë/ ç «ìë© æ¢¥â
|
||
LD BC,0FFA4h
|
||
LD A,7
|
||
RST ToBIOS
|
||
LD HL,pal
|
||
LD DE,010Fh ; ç¨á«® 梥⮢ ¯ «¨âàë/ ç «ìë© æ¢¥â
|
||
LD BC,0FFA4h
|
||
LD A,7
|
||
RST ToBIOS
|
||
RET
|
||
|
||
|
||
pal: DB 0,0,0,0
|
||
pal1: DB 255,255,255,0
|