mirror of
https://github.com/Tolik-Trek/FFORMAT.git
synced 2026-06-15 09:21:43 +03:00
1971 lines
31 KiB
NASM
Executable File
1971 lines
31 KiB
NASM
Executable File
; Œ¥âª "###" - ®âà ¡®âª "Enter" ª ª Tab
|
||
; Œ¥âª "$$$" - à ᪮¬¬¥â à¨âì, çâ®¡ë ¯®¯ ¤ âì Enter-®¬
|
||
; (¨ Tab-®¬) ¢ InputLine.
|
||
;
|
||
|
||
|
||
|
||
; <20>ãä¥à ¨¬¥¨ ¬¥âª¨ ¤¨áª¥âë
|
||
LabelBuff: DB 11 ; Max input symbols
|
||
DB 0 ; ReadyString
|
||
DB 0 ; Pos X
|
||
DB 0 ; Add X
|
||
DB 0 ; Inp.Symb
|
||
LABEL: DS 12,0
|
||
|
||
cSystem: DB 0 ; 01/00 - á®§¤./¥ á®§¤. á¨áâ. ¤¨áª¥âã
|
||
|
||
|
||
Mode0: DB 0 ; "Standart mode"
|
||
Mode2: DB 1 ; "Optimize sectors"
|
||
Mode1: DB 0 ; "Quick format"
|
||
|
||
|
||
CurElem0: DW 0 ; ⥪. ¯®«®¦. ªãàá®à ListBox1-
|
||
CurElem1: DW 0 ; ⥪. ¯®«®¦. ªãàá®à ListBox2-
|
||
|
||
|
||
CurILFl: DB 0 ; ä« £ ªãàá®à 00-¢ëª«/01-¢ª«
|
||
;Flag: DB 0 ; ä« £ ªãàá®à 00-¥â/01-¥áâì
|
||
Timer: DB 1 ; â ©¬¥à
|
||
CursPos: DW 0 ; ¯®§¨æ¨ï ªãàá®à
|
||
|
||
_OS: DB 0 ; 00/01/02 ⨯ Ž‘ (ms-dos/tr-dos/cpm)
|
||
|
||
|
||
; Ž¯æ¨¨ ¢ë¡®à ä®à¬ â FDD
|
||
; ¤¨áª "A"
|
||
DriveA:
|
||
SetDriveA0: DB 1 ; 1.44Mb 3.5"
|
||
SetDriveA1: DB 0 ; 720kB 5.25"
|
||
SetDriveA2: DB 0 ; None (ï祩ª ¥ ®âá«¥¦¨¢ ¥âáï)
|
||
; ¤¨áª "B"
|
||
DriveB:
|
||
SetDriveB0: DB 0 ; 1.44Mb 3.5"
|
||
SetDriveB1: DB 1 ; 720kB 5.25"
|
||
SetDriveB2: DB 0 ; None
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
;[]===========================================================[]
|
||
; Žâà¨á®¢ª ®¡ê¥ªâ
|
||
; Put object 'input line'
|
||
; Input: HL-label
|
||
; Format mouse table:
|
||
; +0 - Object ~Input line~
|
||
; +1 - Xo position object
|
||
; +2 - Xi position object
|
||
; +3 - Y position object
|
||
; +4 - Xi position text
|
||
; +5 - Xo position input line
|
||
; +6 - Hot keys
|
||
; +7 - Context
|
||
; +8,9 - Address input buffer
|
||
;
|
||
PInpLine:
|
||
PUSH IY ; iy=DialTab+5
|
||
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 (IX+4),A ;Temp X coord
|
||
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
|
||
CALL GetPutA
|
||
EX DE,HL
|
||
LD A,(ColDialWn)
|
||
LD C,A
|
||
LD A,(DE)
|
||
PInpLp1: INC DE
|
||
CP '~'
|
||
JR NZ,PInpN0
|
||
LD C,ColDhotkey
|
||
;LD C,A
|
||
LD A,(DE)
|
||
INC DE
|
||
LD (HL),A
|
||
INC HL
|
||
RES 5,A
|
||
LD (IY+6),A ;Hot key
|
||
LD A,(HL)
|
||
AND 0F0h
|
||
OR C
|
||
LD (HL),A
|
||
INC HL
|
||
INC DE
|
||
INC (IX+4)
|
||
LD A,(ColDialWn)
|
||
LD C,A
|
||
LD A,(DE)
|
||
INC DE
|
||
PInpN0: LD (HL),A
|
||
INC HL
|
||
LD (HL),C
|
||
INC HL
|
||
INC (IX+4)
|
||
LD A,(DE)
|
||
OR A
|
||
JR NZ,PInpLp1
|
||
EX DE,HL
|
||
INC HL
|
||
LD A,(IX+4)
|
||
LD (IY+4),A ;Xi position text
|
||
LD A,(IX+4)
|
||
LD (IY+5),A ;Xi position input line
|
||
LD (next1+1),DE
|
||
LD B,(HL) ;len input line
|
||
INC HL
|
||
LD A,(HL) ;context
|
||
INC HL
|
||
LD (IY+7),A
|
||
LD E,(HL) ;DE-Address input buffer
|
||
LD (IY+8),E
|
||
INC HL
|
||
LD D,(HL)
|
||
LD (IY+9),D
|
||
INC HL
|
||
LD A,(DE)
|
||
INC DE
|
||
SUB A
|
||
INC A
|
||
LD (DE),A ;Ready
|
||
DEC A
|
||
INC DE
|
||
LD (DE),A ;Pos X
|
||
INC DE
|
||
LD (DE),A ;Add X
|
||
INC DE
|
||
INC DE
|
||
PUSH HL
|
||
next1: LD HL,0
|
||
LD C,ColInpLine ; 梥â áâப¨ ¢¢®¤
|
||
;LD C,A
|
||
PInpLp2: LD A,(DE)
|
||
INC DE
|
||
LD (HL),A
|
||
INC HL
|
||
LD (HL),C
|
||
INC HL
|
||
INC (IX+4)
|
||
DJNZ PInpLp2 ; 横« ¯à®å®¤ áâப¨ ¢¢®¤
|
||
POP HL
|
||
LD E,(IY+5)
|
||
LD D,(IY+3)
|
||
LD (CursPos),DE
|
||
LD A,(IX+4)
|
||
LD (IY+2),A ;Xi position object
|
||
LD BC,000Ah
|
||
ADD IY,BC ;IY-next element
|
||
PUSH IY
|
||
EXX ;Len label objects
|
||
POP HL
|
||
POP DE
|
||
OR A
|
||
SBC HL,DE
|
||
LD A,L
|
||
LD (DE),A
|
||
EXX
|
||
RET
|
||
|
||
|
||
; Žâà¨á®¢ª ®¡ê¥ªâ
|
||
; Object ~Claster radio buttons~
|
||
; Input: HL-label
|
||
; Format mouse table:
|
||
; +0 - Object ~Claster radio buttons"
|
||
; +1 - Xo position object
|
||
; +2 - Xi position object
|
||
; +3 - Yo position object
|
||
; +4 - Yi position object
|
||
; +5 - Xi position name
|
||
; from: +0 - Y position radio button
|
||
; +1 - Hot key
|
||
; +2 - Context
|
||
; +3 - (Ceil)
|
||
; +4,5 - Address ceil
|
||
; 80h - End buttons
|
||
PClRadioB:
|
||
PUSH IY
|
||
INC IY
|
||
LD (IY+0),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 screen
|
||
LD (IY+1),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 screen
|
||
LD (IY+3),A ;+3 Yo
|
||
CALL GetPutA
|
||
LD A,(HL)
|
||
INC HL
|
||
LD (IX+6),A
|
||
SUB 2
|
||
LD C,A
|
||
LD B,0
|
||
ADD A,4
|
||
ADD A,(IY+1)
|
||
LD (IY+2),A ;Xi pos
|
||
LD A,(HL)
|
||
INC HL
|
||
ADD A,3 ;Yi pos
|
||
ADD A,(IY+3)
|
||
LD (IY+4),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
|
||
LDI ;$-5
|
||
INC DE
|
||
LD A,(HL)
|
||
OR A
|
||
JR NZ,$-5
|
||
LD A," "
|
||
LD (DE),A
|
||
INC DE
|
||
INC DE
|
||
INC HL
|
||
LD A,(IX+6)
|
||
SUB C
|
||
INC A
|
||
ADD A,(IY+1)
|
||
LD (IY+5),A ;Xi pos name
|
||
LD A,C
|
||
OR A
|
||
JR Z,ClRadN1
|
||
LD B,C
|
||
clrd1: LD A,"Ä"
|
||
LD (DE),A
|
||
INC DE
|
||
LD A,ColLstBxFr ;
|
||
LD (DE),A
|
||
INC DE
|
||
DJNZ clrd1
|
||
ClRadN1: LD A,"¿"
|
||
LD (DE),A
|
||
INC DE
|
||
LD A,ColLstBxFr ;
|
||
LD (DE),A
|
||
INC (IX+5)
|
||
LD BC,6 ;Next element claster
|
||
ADD IY,BC
|
||
;
|
||
LD C,(IX+4) ;Empty string
|
||
LD B,(IX+5)
|
||
CALL GetPutA
|
||
EX DE,HL
|
||
LD (HL),"³"
|
||
INC HL
|
||
;ld a,(ColLstBxFr) ;
|
||
LD (HL),ColLstBxFr
|
||
INC HL
|
||
LD C,(IX+6)
|
||
LD B,0
|
||
ADD HL,BC
|
||
ADD HL,BC
|
||
LD (HL),"³"
|
||
INC HL
|
||
;ld a,(ColLstBxFr) ;
|
||
LD (HL),ColLstBxFr
|
||
INC (IX+5)
|
||
EX DE,HL
|
||
;
|
||
; Next element
|
||
ClRadLp: LD C,(IX+4) ;pos element
|
||
LD B,(IX+5)
|
||
CALL GetPutA
|
||
LD B,0
|
||
EX DE,HL
|
||
LD (HL),"³"
|
||
INC HL
|
||
;ld a,(ColLstBxFr) ;
|
||
LD (HL),ColLstBxFr
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
INC B
|
||
LD (HL),'['
|
||
INC HL
|
||
INC HL
|
||
INC B
|
||
PUSH HL
|
||
INC HL
|
||
INC HL
|
||
INC B
|
||
LD (HL),']'
|
||
INC HL
|
||
INC HL
|
||
INC B
|
||
INC HL
|
||
INC HL
|
||
INC B
|
||
;
|
||
LD A,(ColDialWn) ;Put name element
|
||
LD C,A
|
||
LD A,(DE)
|
||
ClRadL1: INC DE
|
||
CP '~'
|
||
JR NZ,ClRadN0
|
||
LD C,ColDhotkey
|
||
;LD C,A
|
||
LD A,(DE)
|
||
INC DE
|
||
LD (HL),A
|
||
INC HL
|
||
RES 5,A
|
||
LD (IY+1),A ;Hot key
|
||
LD A,(HL)
|
||
AND 0F0h
|
||
OR C
|
||
LD (HL),A
|
||
INC HL
|
||
INC DE
|
||
LD A,(ColDialWn)
|
||
LD C,A
|
||
INC B
|
||
LD A,(DE)
|
||
INC DE
|
||
ClRadN0: LD (HL),A
|
||
INC HL
|
||
LD (HL),C
|
||
INC HL
|
||
INC B
|
||
LD A,(DE)
|
||
OR A
|
||
JR NZ,ClRadL1
|
||
INC DE
|
||
LD A,(IX+6)
|
||
SUB B
|
||
LD C,A
|
||
LD B,0
|
||
ADD HL,BC
|
||
ADD HL,BC
|
||
LD (HL),"³"
|
||
INC HL
|
||
;ld a,(ColLstBxFr) ;
|
||
LD (HL),ColLstBxFr
|
||
LD A,(IX+5) ;Current Y pos
|
||
ADD A,(IX+1) ;from begin screen
|
||
LD (IY+0),A
|
||
INC IY
|
||
INC IY
|
||
EX DE,HL
|
||
LD A,(HL)
|
||
INC HL
|
||
LD (IY+0),A ;Context
|
||
INC IY
|
||
LD C,(HL)
|
||
INC HL
|
||
LD B,(HL)
|
||
INC HL
|
||
LD A,(BC)
|
||
LD (IY+0),A ;(Ceil)
|
||
INC IY
|
||
LD (IY+0),C ;BC=Ceil
|
||
INC IY
|
||
LD (IY+0),B
|
||
INC IY
|
||
POP BC
|
||
OR A
|
||
LD A," "
|
||
JR Z,$+4
|
||
LD A,"x"
|
||
LD (BC),A
|
||
INC (IX+5)
|
||
LD A,(HL)
|
||
OR A
|
||
JP NZ,ClRadLp
|
||
LD (IY+0),80h ;End tab claster
|
||
INC IY
|
||
INC HL
|
||
;
|
||
LD C,(IX+4) ;End string
|
||
LD B,(IX+5)
|
||
CALL GetPutA
|
||
EX DE,HL
|
||
LD (HL),"À"
|
||
INC HL
|
||
;ld a,(ColLstBxFr) ;
|
||
LD (HL),ColLstBxFr
|
||
INC HL
|
||
LD B,(IX+6)
|
||
clrd2: LD A,"Ä"
|
||
LD (HL),A
|
||
INC HL
|
||
;ld a,(ColLstBxFr) ;
|
||
LD (HL),ColLstBxFr
|
||
INC HL
|
||
DJNZ clrd2
|
||
LD (HL),"Ù"
|
||
INC HL
|
||
;ld a,(ColLstBxFr) ;
|
||
LD (HL),ColLstBxFr
|
||
EX DE,HL
|
||
PUSH IY
|
||
EXX
|
||
POP HL
|
||
POP DE
|
||
OR A
|
||
SBC HL,DE
|
||
LD A,L
|
||
LD (DE),A
|
||
EXX
|
||
RET
|
||
|
||
|
||
; Žâà¨á®¢ª ®¡ê¥ªâ
|
||
; Object ~Claster check buttons~
|
||
; Input: HL-label
|
||
; Format mouse table:
|
||
; +0 - Object ~Claster check buttons"
|
||
; +1 - Xo position object
|
||
; +2 - Xi position object
|
||
; +3 - Yo position object
|
||
; +4 - Yi position object
|
||
; +5 - Xi position name
|
||
; from: +0 - Y position check button
|
||
; +1 - Hot key
|
||
; +2 - Context
|
||
; +3 - (Ceil)
|
||
; +4,5 - Address ceil
|
||
; 80h - End buttons
|
||
PClCheckB:
|
||
PUSH IY
|
||
INC IY
|
||
LD (IY+0),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 screen
|
||
LD (IY+1),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 screen
|
||
LD (IY+3),A ;+3 Yo
|
||
CALL GetPutA
|
||
LD A,(HL)
|
||
INC HL
|
||
LD (IX+6),A
|
||
SUB 2
|
||
LD C,A
|
||
LD B,0
|
||
ADD A,4
|
||
ADD A,(IY+1)
|
||
LD (IY+2),A ;Xi pos
|
||
LD A,(HL)
|
||
INC HL
|
||
ADD A,3 ;Yi pos
|
||
ADD A,(IY+3)
|
||
LD (IY+4),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
|
||
LDI ;$-5
|
||
INC DE
|
||
LD A,(HL)
|
||
OR A
|
||
JR NZ,$-5
|
||
LD A," "
|
||
LD (DE),A
|
||
INC DE
|
||
INC DE
|
||
INC HL
|
||
LD A,(IX+6)
|
||
SUB C
|
||
INC A
|
||
ADD A,(IY+1)
|
||
LD (IY+5),A ;Xi pos name
|
||
LD A,C
|
||
OR A
|
||
JR Z,ClChkN1
|
||
LD B,C
|
||
clch1: LD A,"Ä"
|
||
LD (DE),A
|
||
INC DE
|
||
LD A,ColLstBxFr ;
|
||
LD (DE),A
|
||
INC DE
|
||
DJNZ clch1
|
||
ClChkN1: LD A,"¿"
|
||
LD (DE),A
|
||
INC DE
|
||
LD A,ColLstBxFr ;
|
||
LD (DE),A
|
||
INC (IX+5)
|
||
LD BC,6 ;Next element claster
|
||
ADD IY,BC
|
||
;
|
||
LD C,(IX+4) ;Empty string
|
||
LD B,(IX+5)
|
||
CALL GetPutA
|
||
EX DE,HL
|
||
LD (HL),"³"
|
||
INC HL
|
||
;ld a,(ColLstBxFr) ;
|
||
LD (HL),ColLstBxFr
|
||
INC HL
|
||
LD C,(IX+6)
|
||
LD B,0
|
||
ADD HL,BC
|
||
ADD HL,BC
|
||
LD (HL),"³"
|
||
INC HL
|
||
;ld a,(ColLstBxFr) ;
|
||
LD (HL),ColLstBxFr
|
||
INC (IX+5)
|
||
EX DE,HL
|
||
; Next element
|
||
ClChkLp: LD C,(IX+4) ;pos element
|
||
LD B,(IX+5)
|
||
CALL GetPutA
|
||
LD B,0
|
||
EX DE,HL
|
||
LD (HL),"³"
|
||
INC HL
|
||
;ld a,(ColLstBxFr) ;
|
||
LD (HL),ColLstBxFr
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
INC B
|
||
LD (HL),'('
|
||
INC HL
|
||
INC HL
|
||
INC B
|
||
PUSH HL
|
||
INC HL
|
||
INC HL
|
||
INC B
|
||
LD (HL),')'
|
||
INC HL
|
||
INC HL
|
||
INC B
|
||
INC HL
|
||
INC HL
|
||
INC B
|
||
;
|
||
LD A,(ColDialWn) ;Put name element
|
||
LD C,A
|
||
LD A,(DE)
|
||
ClChkL1: INC DE
|
||
CP '~'
|
||
JR NZ,ClChkN0
|
||
LD C,ColDhotkey
|
||
;LD C,A
|
||
LD A,(DE)
|
||
INC DE
|
||
LD (HL),A
|
||
INC HL
|
||
RES 5,A
|
||
LD (IY+1),A ;Hot key
|
||
LD A,(HL)
|
||
AND 0F0h
|
||
OR C
|
||
LD (HL),A
|
||
INC HL
|
||
INC DE
|
||
LD A,(ColDialWn)
|
||
LD C,A
|
||
INC B
|
||
LD A,(DE)
|
||
INC DE
|
||
ClChkN0: LD (HL),A
|
||
INC HL
|
||
LD (HL),C
|
||
INC HL
|
||
INC B
|
||
LD A,(DE)
|
||
OR A
|
||
JR NZ,ClChkL1
|
||
INC DE
|
||
LD A,(IX+6)
|
||
SUB B
|
||
LD C,A
|
||
LD B,0
|
||
ADD HL,BC
|
||
ADD HL,BC
|
||
LD (HL),"³"
|
||
INC HL
|
||
;ld a,(ColLstBxFr) ;
|
||
LD (HL),ColLstBxFr
|
||
;
|
||
LD A,(IX+5) ;Current Y pos
|
||
ADD A,(IX+1) ;from begin screen
|
||
LD (IY+0),A
|
||
INC IY
|
||
INC IY
|
||
EX DE,HL
|
||
LD A,(HL)
|
||
INC HL
|
||
LD (IY+0),A ;Context
|
||
INC IY
|
||
LD C,(HL)
|
||
INC HL
|
||
LD B,(HL)
|
||
INC HL
|
||
LD A,(BC)
|
||
LD (IY+0),A ;(Ceil)
|
||
INC IY
|
||
LD (IY+0),C ;BC=Ceil
|
||
INC IY
|
||
LD (IY+0),B
|
||
INC IY
|
||
POP BC
|
||
OR A
|
||
LD A," "
|
||
JR Z,$+4
|
||
LD A,""
|
||
LD (BC),A
|
||
INC (IX+5)
|
||
LD A,(HL)
|
||
OR A
|
||
JP NZ,ClChkLp
|
||
LD (IY+0),80h ;End tab claster
|
||
INC IY
|
||
INC HL
|
||
;
|
||
LD C,(IX+4) ;End string
|
||
LD B,(IX+5)
|
||
CALL GetPutA
|
||
EX DE,HL
|
||
LD (HL),"À"
|
||
INC HL
|
||
;ld a,(ColLstBxFr) ;
|
||
LD (HL),ColLstBxFr
|
||
INC HL
|
||
LD B,(IX+6)
|
||
clch2: LD A,"Ä"
|
||
LD (HL),A
|
||
INC HL
|
||
;ld a,(ColLstBxFr) ;
|
||
LD (HL),ColLstBxFr
|
||
INC HL
|
||
DJNZ clch2
|
||
LD (HL),"Ù"
|
||
INC HL
|
||
;ld a,(ColLstBxFr) ;
|
||
LD (HL),ColLstBxFr
|
||
EX DE,HL
|
||
PUSH IY
|
||
EXX
|
||
POP HL
|
||
POP DE
|
||
OR A
|
||
SBC HL,DE
|
||
LD A,L
|
||
LD (DE),A
|
||
EXX
|
||
RET
|
||
|
||
|
||
|
||
; Žâà¨á®¢ª ®¡ê¥ªâ
|
||
; Object ~Frame~
|
||
; Input: HL-label
|
||
; Format mouse table: None
|
||
;
|
||
PFrame: LD C,(HL) ; X pos
|
||
INC HL
|
||
LD B,(HL) ; Y pos
|
||
INC HL ; X len
|
||
INC HL ; Y len
|
||
LD A,(HL)
|
||
PUSH AF ; á®åà. Y len
|
||
PUSH BC
|
||
CALL GetPutA
|
||
LD A,"Ú"
|
||
LD (DE),A
|
||
INC DE
|
||
LD A,ColorFrame
|
||
LD (DE),A
|
||
INC DE
|
||
DEC HL
|
||
LD B,(HL) ; X len
|
||
.loop1: LD A,"Ä"
|
||
LD (DE),A
|
||
INC DE
|
||
LD A,ColorFrame
|
||
LD (DE),A
|
||
INC DE
|
||
DJNZ .loop1
|
||
LD A,"¿"
|
||
LD (DE),A
|
||
INC DE
|
||
LD A,ColorFrame
|
||
LD (DE),A
|
||
POP BC
|
||
.loop2: INC B
|
||
PUSH BC
|
||
CALL GetPutA
|
||
EX DE,HL
|
||
LD (HL),"³"
|
||
INC HL
|
||
LD (HL),ColorFrame
|
||
INC HL
|
||
EX DE,HL
|
||
LD B,(HL) ; X len
|
||
.loop3: LD A," "
|
||
LD (DE),A
|
||
INC DE
|
||
LD A,ColorFrame ; 梥⠢ãâਠä३¬
|
||
LD (DE),A
|
||
INC DE
|
||
DJNZ .loop3
|
||
LD A,"³"
|
||
LD (DE),A
|
||
INC DE
|
||
LD A,ColorFrame
|
||
LD (DE),A
|
||
INC DE
|
||
POP BC
|
||
INC HL
|
||
DEC (HL)
|
||
DEC HL
|
||
JR NZ,.loop2
|
||
INC B
|
||
CALL GetPutA
|
||
LD A,"À"
|
||
LD (DE),A
|
||
INC DE
|
||
LD A,ColorFrame
|
||
LD (DE),A
|
||
INC DE
|
||
LD B,(HL) ; X len
|
||
INC HL
|
||
POP AF
|
||
LD (HL),A ; ¢®ááâ. Y len
|
||
.loop4: LD A,"Ä"
|
||
LD (DE),A
|
||
INC DE
|
||
LD A,ColorFrame
|
||
LD (DE),A
|
||
INC DE
|
||
DJNZ .loop4
|
||
LD A,"Ù"
|
||
LD (DE),A
|
||
INC DE
|
||
LD A,ColorFrame
|
||
LD (DE),A
|
||
INC HL
|
||
RET
|
||
|
||
|
||
|
||
|
||
|
||
;[]===========================================================[]
|
||
; Event Input Line
|
||
EInpLine:
|
||
LD HL,what ; ᯨ᮪ ᮡë⨩
|
||
LD A,(HL)
|
||
INC HL
|
||
CP evMouseFr
|
||
JR Z,EImouse
|
||
CP evKeyboard
|
||
JR Z,EIkeys
|
||
CP evCombKey
|
||
JP Z,EIcombK
|
||
RET
|
||
|
||
;Event - Mouse fire
|
||
EImouse: LD E,(HL) ;Xcoord
|
||
INC HL
|
||
LD D,(HL) ;Ycoord
|
||
LD A,D
|
||
CP (IX+4) ;Y pos input line
|
||
RET NZ
|
||
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
|
||
BIT 7,(IX+1)
|
||
JR Z,SetInLn
|
||
BIT 7,(IX+6)
|
||
JR NZ,$+6
|
||
CP (IX+6) ;Xo inp.line
|
||
RET C
|
||
SUB (IX+6) ;shift from begin
|
||
LD C,A
|
||
LD L,(IX+9)
|
||
LD H,(IX+0Ah)
|
||
INC HL
|
||
LD (HL),0 ;Flag
|
||
INC HL
|
||
CP (HL)
|
||
RET Z
|
||
PUSH HL
|
||
INC HL
|
||
ADD A,(HL) ;AddX
|
||
INC HL
|
||
CP (HL) ;InpSymb
|
||
LD A,(HL)
|
||
POP HL
|
||
JR Z,EIM
|
||
JR C,EIM
|
||
INC HL
|
||
SUB (HL)
|
||
DEC HL
|
||
LD C,A
|
||
EIM: LD (HL),C
|
||
DEC HL
|
||
DEC HL
|
||
PUSH IY
|
||
PUSH HL
|
||
POP IY
|
||
CALL PrnInLn
|
||
POP IY
|
||
JR InLnExt
|
||
|
||
;Event - Key press
|
||
EIkeys: BIT 7,(IX+1)
|
||
JR NZ,ILwork
|
||
LD A,(HL) ; what+1
|
||
RES 5,A
|
||
; CP 9 ; Tab
|
||
; JR Z,SetInLn
|
||
; cp 0Dh ; $$$
|
||
; jr z,SetInLn
|
||
CP (IX+7) ;Hot key
|
||
RET NZ
|
||
SetInLn: CALL MoveObj ;Select Input line
|
||
CALL ResDialInv ;Reset previos invert
|
||
LD IX,DialTab+5
|
||
LD E,(IX+2) ;Xo
|
||
LD D,(IX+4) ;Y
|
||
LD A,(IX+5) ;Xi text
|
||
SUB E
|
||
LD C,A ;Len text
|
||
CALL SetDialInv
|
||
PUSH IY
|
||
LD L,(IX+9)
|
||
LD H,(IX+0Ah)
|
||
PUSH HL
|
||
POP IY
|
||
INC HL
|
||
LD (HL),1 ;Flag
|
||
INC HL
|
||
SUB A
|
||
LD (HL),A ;Pos X
|
||
INC HL
|
||
LD (HL),A ;Add X
|
||
INC HL
|
||
CALL PrnInLn
|
||
POP IY
|
||
CALL PILCurs ; ãáâ. ªãàá®à
|
||
EI
|
||
InLnExt: LD HL,what
|
||
LD (HL),evNothing
|
||
JP GetFire
|
||
|
||
|
||
; Work select input line
|
||
ILwork: LD A,(HL) ; what+1 Get keys
|
||
ILwrk2: CP 8
|
||
JR Z,ILw1
|
||
CP " "
|
||
RET C
|
||
ILw1: PUSH IY
|
||
LD DE,InLnWex
|
||
PUSH DE
|
||
LD L,(IX+9) ;Address buffer
|
||
LD H,(IX+0Ah)
|
||
PUSH HL
|
||
POP IY
|
||
PUSH AF
|
||
RES 7,(IY+1)
|
||
LD A,1
|
||
AND 1
|
||
RRCA
|
||
OR (IY+1)
|
||
LD (IY+1),A
|
||
POP AF
|
||
CP 8
|
||
JP Z,ILdelet
|
||
EX AF,AF'
|
||
BIT 0,(IY+1)
|
||
CALL NZ,ClearIL
|
||
LD A,(IY+4) ;InpytSymb
|
||
CP (IY+0) ;Max len
|
||
JR NZ,ILn
|
||
LD A,(IY+2)
|
||
ADD A,(IY+3)
|
||
CP (IY+0)
|
||
RET NC
|
||
BIT 7,(IY+1)
|
||
RET NZ
|
||
ILn: LD A,(IY+4)
|
||
SUB (IY+3)
|
||
SUB (IY+2)
|
||
JR Z,NoInsrt
|
||
DEC (IY+4)
|
||
BIT 7,(IY+1)
|
||
JR Z,NoInsrt
|
||
INC (IY+4)
|
||
; ‚¢®¤ ¢ á¥à¥¤¨ã ⥪áâ
|
||
LD C,A
|
||
LD B,0
|
||
LD L,(IX+9)
|
||
LD H,(IX+0Ah)
|
||
LD A,(IY+4)
|
||
ADD A,L
|
||
LD L,A
|
||
JR NC,$+3
|
||
INC H
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
LD D,H
|
||
LD E,L
|
||
DEC HL
|
||
LDDR
|
||
NoInsrt: LD L,(IX+9)
|
||
LD H,(IX+0Ah)
|
||
LD A,(IY+2)
|
||
ADD A,(IY+3)
|
||
ADD A,L
|
||
LD L,A
|
||
JR NC,$+3
|
||
INC H
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
EX AF,AF'
|
||
LD (HL),A
|
||
INC (IY+4)
|
||
INC (IY+2)
|
||
LD A,(IX+3)
|
||
SUB (IX+6)
|
||
CP (IY+2)
|
||
CALL Z,OutIL
|
||
CALL PrnInLn
|
||
POP DE
|
||
InLnWex: LD HL,what
|
||
LD (HL),evNothing
|
||
POP IY
|
||
RET
|
||
|
||
;Šãàá®à § íªà ®¬
|
||
OutIL: LD A,(IY+3)
|
||
ADD A,8 ;Step
|
||
LD (IY+3),A
|
||
LD A,(IY+2)
|
||
SUB 8 ;Step
|
||
LD (IY+2),A
|
||
RET
|
||
|
||
;Clear Buffer
|
||
ClearIL: SUB A
|
||
LD B,(IY+0)
|
||
LD L,(IX+9)
|
||
LD H,(IX+0Ah)
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
LD (HL),A
|
||
DJNZ $-2
|
||
LD (IY+4),A
|
||
RES 0,(IY+1)
|
||
RET
|
||
|
||
|
||
; Combination keys
|
||
EIcombK: BIT 7,(IX+1)
|
||
JR NZ,EIcombn
|
||
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) ; what+2 Shift+Tab
|
||
CP 9
|
||
RET NZ
|
||
JP SetInLn ; ¢ë¤¥«¨âì ¯à¥¤. ®¡ê¥ªâ
|
||
;
|
||
EIcombn: PUSH IY
|
||
LD C,(HL) ; what+1
|
||
INC HL
|
||
LD A,(HL) ; what+2
|
||
LD L,(IX+9) ; Address buffer
|
||
LD H,(IX+0Ah)
|
||
LD DE,InLnWex
|
||
PUSH DE
|
||
PUSH HL
|
||
POP IY
|
||
BIT 7,C ; ªãàá®àë¥ ¨«¨ shift+... ?
|
||
JR NZ,eicmb1 ; Shift+...
|
||
CP 54h
|
||
JR Z,ILleft ; ªãàá®à ¢«¥¢®
|
||
CP 56h
|
||
JR Z,ILright ; ªãàá®à ¢¯à ¢®
|
||
CP 4Fh
|
||
JP Z,IL_del_ ; 㤠«¨âì ᨬ¢®« ¢ ⥪. ¯®§¨æ¨¨
|
||
CP 57h
|
||
JP Z,ILHome ; ¢ ç «® áâப¨
|
||
CP 51h
|
||
JP Z,ILEnd ; ¢ ª®¥æ áâப¨
|
||
JR eicmb2
|
||
eicmb1: CP " "
|
||
JR C,eicmb2
|
||
CP "~"+1
|
||
JP C,ILwrk2 ; ¢¢®¤ ᨬ¢®«®¢
|
||
eicmb2: POP DE
|
||
POP IY
|
||
RET
|
||
|
||
|
||
;Šãàá®à ¢«¥¢® ®¤® ¬¥áâ®
|
||
ILleft: LD A,(IY+2)
|
||
DEC A
|
||
JP P,ILlfnxt
|
||
LD A,(IY+3)
|
||
SUB 8 ;Step
|
||
RET C
|
||
LD (IY+3),A
|
||
LD A,(IY+2)
|
||
ADD A,8 ;Step
|
||
ILlfnxt: LD (IY+2),A
|
||
CALL PrnInLn
|
||
RES 0,(IY+1)
|
||
RET
|
||
|
||
;Šãàá®à ¢¯à ¢® ®¤® ¬¥áâ®
|
||
ILright: LD A,(IY+2)
|
||
ADD A,(IY+3)
|
||
CP (IY+4)
|
||
RET Z
|
||
LD A,(IX+3)
|
||
SUB (IX+6)
|
||
LD B,A
|
||
LD A,(IY+2)
|
||
INC A
|
||
CP B
|
||
JR NZ,ILrgnxt
|
||
LD A,(IY+3)
|
||
ADD A,8 ;Step
|
||
LD (IY+3),A
|
||
LD A,(IY+2)
|
||
SUB 8 ;Step
|
||
ILrgnxt: LD (IY+2),A
|
||
CALL PrnInLn
|
||
RES 0,(IY+1)
|
||
RET
|
||
|
||
;delete
|
||
ILdelet: LD A,(IY+2)
|
||
OR A
|
||
JR NZ,ILDelNx
|
||
LD A,(IY+3)
|
||
SUB 8 ;Step
|
||
RET C
|
||
LD (IY+3),A
|
||
LD A,(IY+2)
|
||
ADD A,8 ;Step
|
||
LD (IY+2),A
|
||
ILDelNx: LD L,(IX+9)
|
||
LD H,(IX+0Ah)
|
||
LD A,(IY+2)
|
||
ADD A,(IY+3)
|
||
ADD A,L
|
||
LD L,A
|
||
JR NC,$+3
|
||
INC H
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
LD D,H
|
||
LD E,L
|
||
DEC DE
|
||
LD A,(IY+4)
|
||
SUB (IY+3)
|
||
SUB (IY+2)
|
||
JR Z,ILDelN
|
||
LD C,A
|
||
LD B,0
|
||
LDIR
|
||
ILDelN: SUB A
|
||
LD (DE),A
|
||
DEC (IY+2)
|
||
DEC (IY+4)
|
||
CALL PrnInLn
|
||
RES 0,(IY+1)
|
||
RET
|
||
|
||
;Delete Char in Current Position
|
||
IL_del_: LD L,(IX+9)
|
||
LD H,(IX+0Ah)
|
||
LD A,(IY+2)
|
||
INC A
|
||
ADD A,(IY+3)
|
||
ADD A,L
|
||
LD L,A
|
||
JR NC,$+3
|
||
INC H
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
LD D,H
|
||
LD E,L
|
||
DEC DE
|
||
LD A,(IY+4)
|
||
SUB (IY+3)
|
||
SUB (IY+2)
|
||
RET Z
|
||
LD C,A
|
||
LD B,0
|
||
LDIR
|
||
SUB A
|
||
LD (DE),A
|
||
DEC (IY+4)
|
||
CALL PrnInLn
|
||
RES 0,(IY+1)
|
||
RET
|
||
|
||
;Home
|
||
ILHome: LD A,(IY+2)
|
||
OR A
|
||
RET Z
|
||
SUB A
|
||
LD (IY+2),A
|
||
LD (IY+3),A
|
||
CALL PrnInLn
|
||
RES 0,(IY+1)
|
||
RET
|
||
|
||
;End string
|
||
ILEnd: LD A,(IY+4)
|
||
SUB (IY+3)
|
||
CP (IY+2)
|
||
RET Z
|
||
ADD A,(IY+3)
|
||
LD C,A
|
||
LD (IY+3),0
|
||
LD A,(IX+3)
|
||
SUB (IX+6)
|
||
SUB C
|
||
JR Z,ILEndLp
|
||
JR NC,EndNIL
|
||
NEG
|
||
ILEndLp: LD C,A
|
||
LD A,(IY+3)
|
||
ADD A,8 ;Step
|
||
LD (IY+3),A
|
||
LD A,C
|
||
SUB 8 ;Step
|
||
JR NC,ILEndLp
|
||
EndNIL: LD A,(IY+4)
|
||
SUB (IY+3)
|
||
LD (IY+2),A
|
||
CALL PrnInLn
|
||
RES 0,(IY+1)
|
||
RET
|
||
|
||
|
||
|
||
|
||
|
||
|
||
;[]===========================================================[]
|
||
; Put Input Line in window
|
||
PrnInLn: LD A,(CurILFl)
|
||
PUSH AF
|
||
CALL ResILCr ; á¡à®á¨âì ªãàá®à
|
||
LD HL,0
|
||
LD E,(IX+6) ;Xo pos inp.line
|
||
LD D,(IX+4) ;Y pos object
|
||
BIT 7,(IX+3)
|
||
JP NZ,prne
|
||
BIT 7,E
|
||
JR Z,$+7
|
||
LD A,E
|
||
NEG
|
||
LD L,A
|
||
LD E,H
|
||
LD (prnadd+1),HL
|
||
;LD C,BIOS.LP_SET_PLACE ; ãáâ. ¯®§¨æ¨î ªãàá®à
|
||
;RST ToBIOS
|
||
LD C,Dss.Locate
|
||
RST ToDSS
|
||
LD L,(IX+9) ;Address buffer
|
||
LD H,(IX+0Ah)
|
||
LD A,(IY+3)
|
||
ADD A,L
|
||
LD L,A
|
||
JR NC,$+3
|
||
INC H
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
LD A,(IX+3) ;Xi-Xo(inp.ln.)=Len inp.ln.
|
||
SUB (IX+6)
|
||
LD E,A
|
||
LD C,A
|
||
LD B,A
|
||
LD A,(IX+6)
|
||
ADD A,C
|
||
CP 80+1
|
||
JR C,$+8
|
||
LD A,80
|
||
SUB (IX+6)
|
||
LD B,A
|
||
BIT 7,(IX+6)
|
||
JR Z,$+11
|
||
LD A,(IX+6)
|
||
NEG
|
||
SUB C
|
||
NEG
|
||
LD B,A
|
||
PUSH BC
|
||
SUB A
|
||
LD B,E
|
||
LD DE,CompBuff
|
||
PUSH DE
|
||
LD (DE),A
|
||
INC DE
|
||
DJNZ $-2
|
||
LD A,(IY+0)
|
||
SUB (IY+3)
|
||
CP C
|
||
JR NC,$+3
|
||
LD C,A
|
||
LD B,0
|
||
LD A,(IY+4)
|
||
SUB C
|
||
JR NC,$+4
|
||
ADD A,C
|
||
LD C,A
|
||
POP DE
|
||
PUSH DE
|
||
LD A,B
|
||
OR C
|
||
JR Z,$+4
|
||
LDIR
|
||
POP HL
|
||
POP BC
|
||
prnadd: LD DE,0
|
||
ADD HL,DE
|
||
LD A,B
|
||
OR A
|
||
JR Z,prne
|
||
LD C,86h ; ¢ë¢®¤ áâப¨ ¡¥§ âਡã⮢
|
||
RST ToBIOS
|
||
prne: LD A,(IY+2)
|
||
ADD A,(IX+6)
|
||
LD E,A
|
||
LD D,(IX+4)
|
||
LD (CursPos),DE
|
||
POP AF
|
||
OR A
|
||
CALL NZ,PILCurs ; ãáâ. ªãàá®à
|
||
EI
|
||
PUSH IY
|
||
LD IY,DialData
|
||
LD A,(IX+6)
|
||
SUB (IY+0)
|
||
LD C,A
|
||
LD A,(IX+4)
|
||
SUB (IY+1)
|
||
LD B,A
|
||
POP IY
|
||
PUSH IX
|
||
LD IX,DialData
|
||
CALL GetPutA
|
||
POP IX
|
||
LD HL,CompBuff
|
||
LD A,(IX+3) ;Xi-Xo(inp.ln.)=Len inp.ln.
|
||
SUB (IX+6)
|
||
LD C,A
|
||
LD B,0
|
||
IN A,(Page3)
|
||
PUSH AF
|
||
LD A,(Win2)
|
||
OUT (Page3),A
|
||
LDI
|
||
INC DE
|
||
JP PE,$-3
|
||
POP AF
|
||
OUT (Page3),A
|
||
RET
|
||
|
||
;;;;;;;;;;;;;;;;
|
||
PILCurs: LD DE,(CursPos) ; ãáâ. ªãàá®à
|
||
LD (ResILCr.CrPs),DE
|
||
BIT 7,E
|
||
JR NZ,.cre
|
||
;
|
||
LD C,Dss.Locate
|
||
RST ToDSS
|
||
;
|
||
LD BC,Dss.K_SETUP.ShowCursor
|
||
RST ToDSS
|
||
;
|
||
.cre: LD A,1
|
||
LD (CurILFl),A
|
||
LD A,12 ;!FIXIT ¤® «¨?
|
||
RET
|
||
;;;;;;;;;;;;;;;;
|
||
|
||
; ‘¡à®á¨âì ªãàá®à
|
||
ResILCr: LD A,(CurILFl)
|
||
OR A
|
||
RET Z
|
||
;
|
||
.CrPs+1: LD DE,0
|
||
BIT 7,E
|
||
RET NZ
|
||
;
|
||
LD BC,Dss.K_SETUP.HideCursor
|
||
RST ToDSS
|
||
XOR A
|
||
LD (CurILFl),A
|
||
RET
|
||
|
||
|
||
;;;;;;;;;;;;;;;;
|
||
;!FIXIT CURSOR ¯¥à¥¤¥« âì ªãàá®à ¤®á ¨ ã¡à âì ¯¥à¥å¢ âì ¯à¥àë¢ ¨©
|
||
;Šãàá®à ®¡ê¥ªâ InputLine
|
||
; PrnILCr: LD A,(Timer) ;¯ ã§ ¬¨£ ¨ï
|
||
; DEC A
|
||
; CALL Z,.PutILCr
|
||
; LD (Timer),A
|
||
; RET
|
||
; ;
|
||
|
||
; .PutILCr: LD A,(Flag)
|
||
; CPL
|
||
; LD (Flag),A
|
||
; PILCurs: LD DE,(CursPos) ; ãáâ. ªãàá®à
|
||
; LD (ResILCr.CrPs),DE
|
||
; BIT 7,E
|
||
; JR NZ,.cre
|
||
; ;
|
||
; LD C,0B4h ; ¯®«ãç¨âì ᨬ¢®«
|
||
; SUB A
|
||
; RST ToBIOS
|
||
; LD A,(Flag)
|
||
; OR A
|
||
; LD B,1Bh
|
||
; JR Z,.NoILC
|
||
; LD B,5Bh ; ªãàá®à ç¥àâ®çª®©
|
||
; .NoILC: LD C,0B5h ; ᨬ¢®« íªà
|
||
; SUB A
|
||
; RST ToBIOS
|
||
; .cre: LD A,1
|
||
; LD (CurILFl),A
|
||
; LD A,12
|
||
; RET
|
||
;;;;;;;;;;;;;;;;
|
||
|
||
|
||
; ‘¡à®á¨âì ªãàá®à
|
||
; ResILCr: LD A,(CurILFl)
|
||
; OR A
|
||
; RET Z
|
||
; LD A,#FF
|
||
; LD (Flag),A
|
||
; INC A
|
||
; LD (CurILFl),A
|
||
; LD A,12
|
||
; LD (Timer),A
|
||
; .CrPs+1: LD DE,0
|
||
; BIT 7,E
|
||
; RET NZ
|
||
; ;
|
||
; LD C,#B4 ; ¯®«ãç¨âì ᨬ¢®«
|
||
; SUB A
|
||
; RST ToBIOS
|
||
; LD BC,1BB5h ; ᨬ¢®« íªà
|
||
; SUB A
|
||
; RST ToBIOS
|
||
; RET
|
||
;;;;;;;
|
||
|
||
|
||
;
|
||
InpLineI:
|
||
LD E,(IX+2) ;Xo
|
||
LD D,(IX+4) ;Y
|
||
LD A,(IX+5) ;Xi text
|
||
SUB E
|
||
LD C,A ;Len text
|
||
CALL SetDialInv
|
||
LD DE,(CursPos)
|
||
CALL PILCurs ; ãáâ. ªãàá®à
|
||
EI
|
||
RET
|
||
|
||
ClastI: LD E,(IX+2) ;Xo
|
||
INC E
|
||
LD D,(IX+4) ;Y
|
||
LD A,(IX+6) ;Xi name
|
||
SUB E
|
||
LD C,A
|
||
CALL SetDialInv
|
||
LD E,(IX+2) ;Xo
|
||
INC E
|
||
LD D,(IX+7) ;Y elem
|
||
LD A,(IX+3)
|
||
SUB E
|
||
DEC A
|
||
LD C,A ;Len X
|
||
JP SetClasInv
|
||
|
||
|
||
|
||
; Set claster buttons invert
|
||
; Input:
|
||
; E - X pos
|
||
; D - Y pos
|
||
; C - X len
|
||
SetClasInv:
|
||
PUSH IX
|
||
LD IX,DialData
|
||
IN A,(Page3)
|
||
PUSH AF ;á®åà.page4
|
||
LD A,(Win2)
|
||
OUT (Page3),A ;¢ª«.¡ãä¥à
|
||
PUSH HL
|
||
LD L,C ;Len X
|
||
LD H,1 ;len Y
|
||
LD (RClIlen+1),HL ;Save len
|
||
LD (RClIpos+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 (RClIbuf+2),HL
|
||
LD B,E
|
||
LD E,ColDialInv
|
||
;LD E,A
|
||
LD D,ColDhotkey
|
||
;LD D,A
|
||
SetDin2: 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
|
||
.loc2: INC HL
|
||
DJNZ SetDin2
|
||
LD IX,(RClIbuf+2) ;Put Name with invert
|
||
LD HL,(RClIlen+1)
|
||
LD DE,(RClIpos+1)
|
||
CALL PutDialLn
|
||
POP HL
|
||
POP AF
|
||
OUT (Page3),A
|
||
POP IX
|
||
LD E,(IX+2) ;Xo pos element
|
||
INC E
|
||
INC E
|
||
INC E
|
||
LD D,(HL) ;Y pos element
|
||
LD (CursPos),DE
|
||
PUSH HL
|
||
CALL PILCurs ; Set cursor
|
||
POP HL
|
||
LD A,1
|
||
LD (CIflag+1),A
|
||
RET
|
||
|
||
|
||
|
||
; Get claster data
|
||
GetClDt: PUSH IX
|
||
POP HL
|
||
LD BC,7
|
||
ADD HL,BC ;Begin claster elements
|
||
GetDtLp: INC HL ;Ypos
|
||
INC HL ;Hot key
|
||
INC HL ;Context
|
||
LD A,(HL) ;(Ceil)
|
||
INC HL
|
||
LD E,(HL) ;Address Ceil
|
||
INC HL ;
|
||
LD D,(HL) ;
|
||
INC HL
|
||
LD (DE),A
|
||
BIT 7,(HL) ;7bit-end claster
|
||
JR Z,GetDtLp
|
||
RET
|
||
|
||
|
||
|
||
|
||
|
||
|
||
;[]===========================================================[]
|
||
; Event claster radio/check buttons
|
||
;
|
||
EClasterB:
|
||
LD HL,what
|
||
LD A,(HL)
|
||
INC HL
|
||
CP evMouseFr
|
||
JR Z,ECmouse ;Mouse fire
|
||
CP evKeyboard
|
||
JR Z,ECkeys ;Key press
|
||
CP evCombKey
|
||
JP Z,ECcombK ;Key press
|
||
RET
|
||
|
||
; Event - Mouse fire
|
||
; ¯à®¢¥àª ª®®à¤¨ â ¬ë誨
|
||
ECmouse: LD E,(HL) ;Xpos
|
||
INC HL
|
||
LD D,(HL) ;Ypos
|
||
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
|
||
RET C ;<
|
||
CP (IX+5) ;Yi pos
|
||
RET NC ;>
|
||
SUB A
|
||
LD (ECnext+1),A
|
||
DEC A
|
||
LD (SaveA1+1),A ;Begin element claster
|
||
PUSH IX
|
||
POP HL
|
||
INC HL
|
||
LD BC,6 ;len element claster
|
||
LD E,B ;number element
|
||
LD A,D
|
||
EClsLp1: ADD HL,BC
|
||
BIT 7,(HL)
|
||
JP NZ,SelClas ;Elem not found
|
||
INC E
|
||
CP (HL) ;Compare with Y pos elem
|
||
JR NZ,EClsLp1
|
||
JR CSelNxt
|
||
|
||
;Event - Key press
|
||
ECkeys: SUB A
|
||
LD (ECnext+1),A
|
||
DEC A
|
||
LD (SaveA1+1),A ;Begin element claster
|
||
LD A,(HL)
|
||
; CP 0Dh
|
||
; JR Z,ECspace ; test on "Enter"
|
||
CP " "
|
||
JR Z,ECspace ; test on "Space"
|
||
RES 5,A
|
||
BIT 7,(IX+1)
|
||
JR NZ,ECkeyN ; I is select
|
||
CP 9 ; Tab
|
||
JP Z,SelCls0 ; ¢ë¤¥«¨âì á«¥¤. ®¡ê¥ªâ
|
||
CP 0Dh ; ###
|
||
JP Z,SelCls0 ; ¢ë¤¥«¨âì á«¥¤. ®¡ê¥ªâ
|
||
ECkeyN: PUSH IX
|
||
POP HL
|
||
INC HL
|
||
LD BC,6 ;Len elements
|
||
LD E,B
|
||
ECkeyLp: ADD HL,BC
|
||
BIT 7,(HL)
|
||
RET NZ
|
||
INC E
|
||
INC HL
|
||
CP (HL) ;Hot key element
|
||
DEC HL
|
||
JR NZ,ECkeyLp
|
||
CSelNxt: BIT 7,(IX+1) ;NZ-object is select
|
||
JP NZ,CSelect
|
||
JP SelCls1
|
||
|
||
;Test on space
|
||
ECspace: BIT 7,(IX+1)
|
||
RET Z ;not select
|
||
LD A,(SavElem+1)
|
||
OR A
|
||
JR NZ,ECspc1
|
||
INC A
|
||
LD (SavElem+1),A
|
||
ECspc1: LD (ECnext+1),A
|
||
PUSH IX
|
||
POP HL
|
||
INC HL
|
||
LD DE,6
|
||
LD B,A
|
||
ADD HL,DE ;find elem.label
|
||
DJNZ $-1
|
||
JP ECnext ;change
|
||
|
||
;Test on cursor keys
|
||
ECcombK: BIT 7,(IX+1)
|
||
JR NZ,ECcombn ;is select
|
||
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 SelCls0 ; ¢ë¤¥«¨âì ¯à¥¤. ®¡ê¥ªâ
|
||
;
|
||
ECcombn: SUB A
|
||
LD (ECnext+1),A ;Flag change buttons
|
||
INC HL
|
||
LD A,(HL)
|
||
CP 58h ; ªãàá®à ¢¢¥àå
|
||
JR Z,ECup
|
||
CP 54h ; ªãàá®à ¢«¥¢®
|
||
JR Z,ECup
|
||
CP 52h ; ªãàá®à ¢¨§
|
||
JR Z,ECdown
|
||
CP 56h ; ªãàá®à ¢¯à ¢®
|
||
RET NZ
|
||
; ªãàá®à ¢¨§
|
||
ECdown: PUSH IX
|
||
POP HL
|
||
INC HL
|
||
LD E,L
|
||
LD D,H
|
||
LD BC,6
|
||
LD A,(SavElem+1)
|
||
OR A
|
||
JR NZ,$+3
|
||
INC A
|
||
INC A ;increment element
|
||
LD (SavElem+1),A
|
||
ECcmlp: ADD HL,BC ;find label
|
||
BIT 7,(HL)
|
||
CALL NZ,EndClst ;table is over
|
||
DEC A
|
||
JR NZ,ECcmlp
|
||
CALL ResClasInv ;Res inver elem
|
||
JP Pcurs ;next invert
|
||
|
||
;Get begin table elem
|
||
EndClst: EX DE,HL
|
||
ADD HL,BC ;table is begin
|
||
LD A,1
|
||
LD (SavElem+1),A ;first elem.
|
||
RET
|
||
|
||
;Cursor up
|
||
ECup: PUSH IX
|
||
POP HL
|
||
INC HL
|
||
LD DE,6
|
||
LD A,(SavElem+1)
|
||
OR A
|
||
JR NZ,$+3
|
||
INC A
|
||
DEC A ;decrement cur.elem.
|
||
CALL Z,BegClst
|
||
LD (SavElem+1),A
|
||
LD B,A
|
||
ADD HL,DE ;find label
|
||
DJNZ $-1
|
||
CALL ResClasInv ;Res inver elem
|
||
JR Pcurs ;next invert
|
||
|
||
;Get end table elem
|
||
BegClst: PUSH HL
|
||
SUB A
|
||
DEC A
|
||
INC A
|
||
ADD HL,DE ;find nember end element
|
||
BIT 7,(HL)
|
||
JR Z,$-4
|
||
POP HL
|
||
RET ;A=end element
|
||
|
||
;selected claster
|
||
SelClas: BIT 7,(IX+1)
|
||
JR NZ,SaveA1 ;NZ-is select
|
||
SelCls0: LD E,0
|
||
SelCls1: LD A,E
|
||
LD (SaveA1+1),A
|
||
CALL MoveObj
|
||
CALL ResDialInv ;Res orevios invert
|
||
LD IX,DialTab+5
|
||
LD E,(IX+2) ;Xo name
|
||
INC E
|
||
LD D,(IX+4) ;Y name
|
||
LD A,(IX+6) ;Xi name
|
||
SUB E
|
||
LD C,A ;len name
|
||
CALL SetDialInv ;Set my invert
|
||
SaveA1: LD A,0
|
||
INC A
|
||
JR Z,EClexit ;Element not found
|
||
DEC A
|
||
LD (SavElem+1),A
|
||
LD (ECnext+1),A
|
||
JR CButton ;Change buttons
|
||
|
||
;Event - Mouse fire (in select claster)
|
||
CSelect: LD A,1
|
||
LD (ECnext+1),A
|
||
LD A,(SavElem+1)
|
||
CP E
|
||
JR Z,ECnext
|
||
LD A,E
|
||
LD (SavElem+1),A
|
||
CALL ResClasInv ;Res inver elem
|
||
CButton: PUSH IX
|
||
POP HL
|
||
INC HL
|
||
LD DE,6
|
||
SavElem: LD A,0
|
||
OR A
|
||
JR NZ,$+3
|
||
INC A
|
||
LD B,A
|
||
ADD HL,DE
|
||
DJNZ $-1
|
||
Pcurs: LD E,(IX+2) ;Xo pos element
|
||
INC E
|
||
LD D,(HL) ;Y pos element
|
||
LD A,(IX+3)
|
||
SUB E
|
||
DEC A
|
||
LD C,A ;len element
|
||
CALL SetClasInv ;Set inver elem
|
||
ECnext: LD A,0
|
||
OR A
|
||
CALL NZ,ChangeB
|
||
EClexit: LD HL,what ;Event claster exit
|
||
LD (HL),evNothing
|
||
JP GetFire
|
||
|
||
|
||
|
||
;[]===========================================================[]
|
||
; Change buttons (Check/Radio)
|
||
; Input parameters: HL-Address claster element label
|
||
ChangeB: LD A,(IX+1)
|
||
RES 7,A
|
||
CP ClRadioBut
|
||
JP Z,ChangeR
|
||
; Change check button
|
||
LD E,L
|
||
LD D,H
|
||
PUSH IX
|
||
POP HL
|
||
LD BC,7
|
||
ADD HL,BC
|
||
PUSH HL ;Save cur.elem
|
||
ChangL1: INC HL ;Begin elements claster
|
||
INC HL
|
||
INC HL
|
||
LD (HL),B ;(Ceil)=0
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
BIT 7,(HL)
|
||
JR Z,ChangL1
|
||
EX DE,HL ;HL=Current element claster
|
||
INC B
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
LD (HL),B ;Cur.elem=1
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
POP HL ;Reset begin elem table
|
||
IN A,(Page3)
|
||
PUSH AF
|
||
LD A,(Win2)
|
||
OUT (Page3),A
|
||
ChangL2: LD D,(HL) ;Ypos
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
LD A,(HL) ;Address ceil
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
LD E,(IX+2) ;X pos
|
||
INC E
|
||
INC E
|
||
INC E
|
||
PUSH IX
|
||
PUSH DE
|
||
LD IX,DialData
|
||
EX AF,AF'
|
||
LD A,E
|
||
SUB (IX+0)
|
||
LD C,A
|
||
LD A,D
|
||
SUB (IX+1)
|
||
LD B,A
|
||
CALL GetPutA
|
||
EX AF,AF'
|
||
LD C,A
|
||
OR A
|
||
LD A," "
|
||
JR Z,$+4
|
||
LD A,""
|
||
LD (DE),A
|
||
POP DE
|
||
POP IX
|
||
;LD A,D
|
||
;CP 31
|
||
;JR NC,cl1
|
||
BIT 7,E
|
||
JR NZ,cl1
|
||
;LD A,E
|
||
;CP 80
|
||
;JR NC,cl1
|
||
PUSH HL
|
||
LD A,C
|
||
PUSH AF
|
||
LD C,BIOS.LP_SET_PLACE ; ãáâ. ¯®§¨æ¨î ªãàá®à
|
||
RST ToBIOS
|
||
POP AF
|
||
OR A
|
||
LD A," "
|
||
JR Z,$+4
|
||
LD A,""
|
||
LD BC,0182h
|
||
RST ToBIOS ;Print on/off
|
||
POP HL
|
||
cl1: BIT 7,(HL)
|
||
JR Z,ChangL2
|
||
CALL ResILCr ; á¡à®á¨âì ªãàá®à
|
||
CALL PILCurs ; Set cursor
|
||
EI
|
||
POP AF
|
||
OUT (Page3),A
|
||
RET
|
||
|
||
;Change radio button ([x])
|
||
ChangeR: IN A,(Page3)
|
||
PUSH AF
|
||
LD A,(Win2)
|
||
OUT (Page3),A
|
||
LD D,(HL) ;Ypos
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
LD A,(HL) ;Address ceil
|
||
XOR 1
|
||
LD (HL),A
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
LD E,(IX+2) ;Xpos
|
||
INC E
|
||
INC E
|
||
INC E
|
||
PUSH IX
|
||
PUSH DE
|
||
LD IX,DialData
|
||
EX AF,AF'
|
||
LD A,E
|
||
SUB (IX+0)
|
||
LD C,A
|
||
LD A,D
|
||
SUB (IX+1)
|
||
LD B,A
|
||
CALL GetPutA
|
||
EX AF,AF'
|
||
LD C,A
|
||
OR A
|
||
LD A," "
|
||
JR Z,$+4
|
||
LD A,"x"
|
||
LD (DE),A
|
||
POP DE
|
||
POP IX
|
||
;LD A,D
|
||
;CP 31
|
||
;JR NC,cl2
|
||
BIT 7,E
|
||
JR NZ,cl2
|
||
;LD A,E
|
||
;CP 80
|
||
;JR NC,cl2
|
||
LD A,C
|
||
PUSH AF
|
||
LD C,BIOS.LP_SET_PLACE ; ãáâ. ¯®§¨æ¨î ªãàá®à
|
||
RST ToBIOS
|
||
POP AF
|
||
OR A
|
||
LD A," "
|
||
JR Z,$+4
|
||
LD A,"x"
|
||
LD BC,0182h
|
||
RST ToBIOS ;Print
|
||
cl2: CALL ResILCr ; á¡à®á¨âì ªãàá®à
|
||
CALL PILCurs ; ãáâ. ªãàá®à
|
||
EI
|
||
POP AF
|
||
OUT (Page3),A
|
||
RET
|
||
|