1947 lines
29 KiB
Plaintext
1947 lines
29 KiB
Plaintext
|
||
; LAST UPDATE: 20.03.2025 savelij
|
||
|
||
;[]==========================================================[]
|
||
FEPrnASCIIpage LD HL,PrnASCIIinfo
|
||
PUSH HL
|
||
LD HL,(FEPageShift)
|
||
LD (FETempShift),HL
|
||
LD B,0x1C
|
||
FEPrnASCIIlp PUSH BC
|
||
CALL PrnASCIIline ;‚뢮¤¨¬ áâப㠢 ¡ãä ¨ íªà
|
||
POP BC
|
||
JR C,FillASCII ;CY-‡ ª®ç¨«¨áì ¡ ©âë ¤«ï ¯¥ç â¨
|
||
LD A,B
|
||
ADD A,0x08
|
||
LD B,A
|
||
CP 0xE4
|
||
JR NZ,FEPrnASCIIlp
|
||
SUB A
|
||
LD (FEEmptyLines),A
|
||
LD E,(IY+CursorX)
|
||
LD D,(IY+CursorY)
|
||
CALL FESetCursor
|
||
CALL GetString
|
||
RET
|
||
|
||
;<3B>à®æ¥¤ãà ®âç¨á⪨ ¨¦¥© ®¡« á⨠íªà
|
||
FillASCII LD A,0xE4
|
||
SUB B
|
||
LD (FEFLenASC),A
|
||
JR Z,FEFASCIIe ;Z-¥â ®âç¨á⪨
|
||
LD A,B
|
||
LD (FEFPosASC),A
|
||
MAKEWINDOW WINSUBOBJ.WOBIND
|
||
W_FILL 0,0,624,0,COLORI.PANEL
|
||
FEFPosASC EQU $ - 7
|
||
FEFLenASC EQU $ - 3
|
||
W_END
|
||
|
||
FEFASCIIe LD A,(FEFLenASC)
|
||
SRL A
|
||
SRL A
|
||
SRL A
|
||
LD (FEEmptyLines),A
|
||
LD E,(IY+CursorX)
|
||
LD D,(IY+CursorY)
|
||
CALL FESetCursor
|
||
CALL GetString
|
||
RET
|
||
|
||
;[]----------------------------------------------------------[]
|
||
RefrASCIIpage LD HL,PrnASCIIinfo
|
||
PUSH HL
|
||
CALL FEResCursor
|
||
LD HL,(FEPageShift)
|
||
LD (FETempShift),HL
|
||
LD B,0x1C
|
||
LD C,(IY+CursorY)
|
||
.RefrASCIIlp PUSH BC
|
||
LD A,C
|
||
OR A
|
||
JR NZ,.RfASCII
|
||
CALL PrnASCIIstring
|
||
LD HL,(FETempShift)
|
||
CALL FESearchDown
|
||
LD (FETempShift),HL
|
||
JR .L1
|
||
|
||
.RfASCII CALL PrnASCIIline ;‚뢮¤¨¬ áâப㠢 ¡ãä ¨ íªà
|
||
.L1 POP BC
|
||
RET C ;CY-‡ ª®ç¨«¨áì ¡ ©âë ¤«ï ¯¥ç â¨
|
||
DEC C
|
||
LD A,B
|
||
ADD A,0x08
|
||
LD B,A
|
||
CP 0xE4
|
||
JR NZ,.RefrASCIIlp
|
||
RET
|
||
|
||
;[]----------------------------------------------------------[]
|
||
;<3B>à®æ¥¤ãà ¯¥ç ⨠⥪.áâப¨ ¢ ¡ãä¥à ¨ íªà
|
||
PrnASCIIline LD IXH,B
|
||
LD C,0xF0
|
||
LD HL,(FEFileLenght)
|
||
LD DE,(FETempShift)
|
||
OR A
|
||
SBC HL,DE
|
||
RET C
|
||
LD B,0xF0
|
||
LD A,H
|
||
OR A
|
||
JR NZ,PutASCIIln
|
||
OR L
|
||
SCF
|
||
RET Z
|
||
LD B,L
|
||
PutASCIIln LD HL,TempBuffer
|
||
GETPORT WINSP.CPU1
|
||
PUSH AF
|
||
LD DE,(FETempShift)
|
||
LD A,D ;‚뤥«ï¥¬ ®¬¥à áâà ¨æë
|
||
AND 0xC0
|
||
RLCA
|
||
RLCA
|
||
EXX
|
||
LD E,A ;DE - €¤à¥á áâà ¨æë ¢ ᯨ᪥
|
||
LD D,HIGH (PagesList)
|
||
LD A,(DE) ;’¥ª.áâà ¨æ
|
||
SETPORT WINSP.CPU1,,0
|
||
EXX
|
||
RES 7,D ;‚ª«.á 0x4000
|
||
SET 6,D
|
||
PutASCIIlnLp BIT 7,D
|
||
JR Z,PutLnA1
|
||
RES 7,D
|
||
SET 6,D
|
||
EXX
|
||
INC E ;DE - €¤à¥á áâà ¨æë ¢ ᯨ᪥
|
||
LD A,(DE) ;’¥ª.áâà ¨æ
|
||
SETPORT WINSP.CPU1,,0
|
||
EXX
|
||
PutLnA1 LD A,(DE)
|
||
INC DE
|
||
CP 0x0D
|
||
JR NZ,PutLineA1
|
||
BIT 7,D
|
||
JR Z,PutLnA2
|
||
RES 7,D
|
||
SET 6,D
|
||
EXX
|
||
INC E ;DE - €¤à¥á áâà ¨æë ¢ ᯨ᪥
|
||
LD A,(DE) ;’¥ª.áâà ¨æ
|
||
SETPORT WINSP.CPU1,,0
|
||
EXX
|
||
PutLnA2 LD A,(DE)
|
||
CP 0x0A
|
||
JR NZ,PutLnExitA
|
||
INC DE
|
||
JR PutLnExitA
|
||
|
||
PutLineA1 CP 0x0A
|
||
JR Z,PutLnExitA
|
||
CP 0x09
|
||
JR NZ,PutLineA2
|
||
PutTabA LD (HL),0x20
|
||
INC L
|
||
LD A,L
|
||
CP C
|
||
JR Z,PutLnEA1
|
||
AND 0x07
|
||
JR NZ,PutTabA
|
||
JR PutLineA3-2
|
||
|
||
PutLnEA0 BIT 7,D
|
||
JR Z,PutLEA1
|
||
RES 7,D
|
||
SET 6,D
|
||
EXX
|
||
INC E ;DE - €¤à¥á áâà ¨æë ¢ ᯨ᪥
|
||
LD A,(DE) ;’¥ª.áâà ¨æ
|
||
SETPORT WINSP.CPU1,,0
|
||
EXX
|
||
PutLEA1 LD A,(DE)
|
||
CP 0x0D
|
||
JR Z,PutLineA3
|
||
INC DE
|
||
CP 0x0A
|
||
JR Z,PutLnExitA
|
||
PutLnEA1 DJNZ PutLnEA0
|
||
JR PutLineA3
|
||
|
||
PutLineA2 LD (HL),A
|
||
INC L
|
||
LD A,L
|
||
CP C
|
||
JR Z,PutLineA3
|
||
DJNZ PutASCIIlnLp
|
||
PutLineA3 BIT 7,D
|
||
JR Z,PutLnA3
|
||
RES 7,D
|
||
SET 6,D
|
||
EXX
|
||
INC E ;DE - €¤à¥á áâà ¨æë ¢ ᯨ᪥
|
||
LD A,(DE) ;’¥ª.áâà ¨æ
|
||
SETPORT WINSP.CPU1,,0
|
||
EXX
|
||
PutLnA3 LD A,(DE)
|
||
CP 0x0D
|
||
JR NZ,PutLnExitA
|
||
INC DE
|
||
BIT 7,D
|
||
JR Z,PutLnA4
|
||
RES 7,D
|
||
SET 6,D
|
||
EXX
|
||
INC E ;DE - €¤à¥á áâà ¨æë ¢ ᯨ᪥
|
||
LD A,(DE) ;’¥ª.áâà ¨æ
|
||
SETPORT WINSP.CPU1,,0
|
||
EXX
|
||
PutLnA4 LD A,(DE)
|
||
CP 0x0A
|
||
JR NZ,PutLnExitA
|
||
INC DE
|
||
PutLnExitA RES 6,D
|
||
EXX
|
||
LD A,E
|
||
EXX
|
||
BIT 7,D
|
||
RES 7,D
|
||
JR Z,.L1
|
||
INC A
|
||
.L1 RRCA
|
||
RRCA
|
||
OR D
|
||
LD D,A
|
||
LD (FETempShift),DE
|
||
POP AF
|
||
SETPORT WINSP.CPU1,,0
|
||
LD A,(IY+CursAddX)
|
||
ADD A,0x4E
|
||
SUB L
|
||
JR Z,PutLnExA
|
||
JR C,PutLnExA
|
||
LD B,A
|
||
LD A,0x20
|
||
.L2 LD (HL),A
|
||
INC L
|
||
DJNZ .L2
|
||
PutLnExA LD L,(IY+CursAddX)
|
||
LD H,HIGH (TempBuffer)
|
||
LD DE,0x0000
|
||
LD B,0x4E
|
||
LD C,IXH
|
||
LD A,COLORP.PANEL + COLORI.FILES
|
||
CALL JUMPS.PrnTxtLnNormC
|
||
OR A
|
||
RET
|
||
|
||
;[]==========================================================[]
|
||
PrnASCIIstring LD HL,TempBuffer
|
||
LD DE,LineBuffer
|
||
LD A,(IY+LenString)
|
||
OR A
|
||
JR Z,PrASCIIexit
|
||
LD B,A
|
||
LD C,0xF0
|
||
PrASCIIstr1 LD A,(DE)
|
||
INC E
|
||
CP 0x09
|
||
JR NZ,PrASCIIstr2
|
||
PutTabS LD (HL),0x20
|
||
INC L
|
||
LD A,L
|
||
CP C
|
||
JR Z,PrASCIIexit
|
||
AND 0x07
|
||
JR NZ,PutTabS
|
||
JR PrASCIIstr3
|
||
|
||
PrASCIIstr2 LD (HL),A
|
||
INC L
|
||
PrASCIIstr3 DJNZ PrASCIIstr1
|
||
PrASCIIexit LD A,(IY+CursAddX)
|
||
ADD A,0x4E
|
||
SUB L
|
||
JR Z,PrASCIIex1
|
||
JR C,PrASCIIex1
|
||
LD B,A
|
||
LD A,0x20
|
||
.L1 LD (HL),A
|
||
INC L
|
||
DJNZ .L1
|
||
PrASCIIex1 CALL FEResCursor
|
||
LD L,(IY+CursAddX)
|
||
LD H,HIGH (TempBuffer)
|
||
LD DE,0x0000
|
||
LD B,0x4E
|
||
LD A,(IY+CursorY)
|
||
ADD A,A
|
||
ADD A,A
|
||
ADD A,A
|
||
ADD A,0x1C
|
||
LD C,A
|
||
LD A,COLORP.PANEL + COLORI.FILES
|
||
CALL JUMPS.PrnTxtLnNormC
|
||
LD E,(IY+CursorX)
|
||
LD D,(IY+CursorY)
|
||
CALL FESetCursor
|
||
RET
|
||
|
||
;[]==========================================================[]
|
||
FESearchUp LD B,0xF0
|
||
LD A,H
|
||
OR A
|
||
JR NZ,.SearchUpBeg
|
||
OR L
|
||
SCF
|
||
RET Z
|
||
LD B,L
|
||
.SearchUpBeg PUSH HL
|
||
GETPORT WINSP.CPU1
|
||
PUSH AF
|
||
LD A,H ;‚뤥«ï¥¬ ®¬¥à áâà ¨æë
|
||
AND 0xC0
|
||
RLCA
|
||
RLCA
|
||
LD E,A
|
||
LD D,HIGH (PagesList)
|
||
LD A,(DE) ;’¥ª.áâà ¨æ
|
||
SETPORT WINSP.CPU1,,0
|
||
RES 7,H
|
||
SET 6,H
|
||
LD C,0x00
|
||
LD IXL,C
|
||
INC C
|
||
DEC B
|
||
DEC HL
|
||
BIT 6,H
|
||
JR NZ,.SrchUp0
|
||
DEC E
|
||
LD A,(DE)
|
||
SETPORT WINSP.CPU1,,0
|
||
SET 6,H
|
||
.SrchUp0 LD A,(HL)
|
||
CP 0x0A
|
||
JR NZ,FESrchUp1+1
|
||
LD A,B
|
||
OR A
|
||
JR Z,FESrchUpEx
|
||
INC C
|
||
DEC B
|
||
DEC HL
|
||
BIT 6,H
|
||
JR NZ,FESrchUp1
|
||
DEC E
|
||
LD A,(DE)
|
||
SETPORT WINSP.CPU1,,0
|
||
SET 6,H
|
||
FESrchUp1 LD A,(HL)
|
||
CP 0x0D
|
||
JR Z,FESearchUpLp
|
||
DEC C
|
||
INC B
|
||
INC HL
|
||
BIT 7,H
|
||
JR Z,FESearchUpLp1
|
||
INC E
|
||
LD A,(DE)
|
||
SETPORT WINSP.CPU1,,0
|
||
RES 7,H
|
||
SET 6,H
|
||
JR FESearchUpLp1
|
||
|
||
FESearchUpLp LD A,B
|
||
OR A
|
||
JR Z,FESrchUpEx
|
||
FESearchUpLp1 DEC HL
|
||
BIT 6,H
|
||
JR NZ,.SrchUp2
|
||
DEC E
|
||
LD A,(DE)
|
||
SETPORT WINSP.CPU1,,0
|
||
SET 6,H
|
||
.SrchUp2 LD A,(HL)
|
||
CP 0x0A
|
||
JR Z,FESrchUpEx
|
||
CP 0x0D
|
||
JR Z,FESrchUpEx
|
||
INC IXL
|
||
INC C
|
||
DJNZ FESearchUpLp1
|
||
FESrchUpEx POP AF
|
||
SETPORT WINSP.CPU1,,0
|
||
POP HL
|
||
LD B,0x00
|
||
OR A
|
||
SBC HL,BC
|
||
RET
|
||
|
||
;[]----------------------------------------------------------[]
|
||
FESearchDown LD B,0xF0
|
||
EX DE,HL
|
||
LD HL,(FEFileLenght)
|
||
OR A
|
||
SBC HL,DE
|
||
EX DE,HL
|
||
RET C
|
||
LD A,D
|
||
OR A
|
||
JR NZ,.SearchDnBeg
|
||
OR E
|
||
SCF
|
||
RET Z
|
||
LD B,E
|
||
.SearchDnBeg PUSH HL
|
||
GETPORT WINSP.CPU1
|
||
PUSH AF
|
||
LD A,H ;‚뤥«ï¥¬ ®¬¥à áâà ¨æë
|
||
AND 0xC0
|
||
RLCA
|
||
RLCA
|
||
LD E,A
|
||
LD D,HIGH (PagesList)
|
||
LD A,(DE) ;’¥ª.áâà ¨æ
|
||
SETPORT WINSP.CPU1,,0
|
||
RES 7,H
|
||
SET 6,H
|
||
LD C,0x00
|
||
DEC HL
|
||
FESearchDnLp INC C
|
||
INC HL
|
||
BIT 7,H
|
||
JR Z,.SrchDn0
|
||
INC E
|
||
LD A,(DE)
|
||
SETPORT WINSP.CPU1,,0
|
||
RES 7,H
|
||
SET 6,H
|
||
.SrchDn0 LD A,(HL)
|
||
CP 0x0D
|
||
JR NZ,.SrchE1
|
||
INC HL
|
||
BIT 7,H
|
||
JR Z,.SrchDn1
|
||
INC E
|
||
LD A,(DE)
|
||
SETPORT WINSP.CPU1,,0
|
||
RES 7,H
|
||
SET 6,H
|
||
.SrchDn1 LD A,(HL)
|
||
CP 0x0A
|
||
JR NZ,.SrchEEx
|
||
INC C
|
||
JR .SrchEEx
|
||
|
||
.SrchE1 CP 0x0A
|
||
JR Z,.SrchEEx
|
||
DJNZ FESearchDnLp
|
||
INC HL
|
||
BIT 7,H
|
||
JR Z,.SrchDnE
|
||
INC E
|
||
LD A,(DE)
|
||
SETPORT WINSP.CPU1,,0
|
||
RES 7,H
|
||
SET 6,H
|
||
.SrchDnE LD A,(HL)
|
||
CP 0x0D
|
||
JR NZ,.SrchEEx
|
||
INC C
|
||
INC HL
|
||
BIT 7,H
|
||
JR Z,.SrchDE1
|
||
INC E
|
||
LD A,(DE)
|
||
SETPORT WINSP.CPU1,,0
|
||
RES 7,H
|
||
SET 6,H
|
||
.SrchDE1 LD A,(HL)
|
||
CP 0x0A
|
||
JR NZ,.SrchEEx
|
||
INC C
|
||
.SrchEEx POP AF
|
||
SETPORT WINSP.CPU1,,0
|
||
POP HL
|
||
LD B,0x00
|
||
ADD HL,BC
|
||
RET
|
||
|
||
;[]==========================================================[]
|
||
GetString LD HL,(FEFileLenght)
|
||
LD DE,(LineShift)
|
||
OR A
|
||
SBC HL,DE
|
||
RET C
|
||
LD B,0xF0
|
||
LD C,B
|
||
LD A,H
|
||
OR A
|
||
JR NZ,GetLine
|
||
LD B,L
|
||
GetLine LD HL,LineBuffer
|
||
LD A,B
|
||
OR A
|
||
JR Z,GetLnE1
|
||
GETPORT WINSP.CPU1
|
||
PUSH AF
|
||
LD A,D ;‚뤥«ï¥¬ ®¬¥à áâà ¨æë
|
||
AND 0xC0
|
||
RLCA
|
||
RLCA
|
||
EXX
|
||
LD E,A ;DE - €¤à¥á áâà ¨æë ¢ ᯨ᪥
|
||
LD D,HIGH (PagesList)
|
||
LD A,(DE) ;’¥ª.áâà ¨æ
|
||
SETPORT WINSP.CPU1,,0
|
||
EXX
|
||
RES 7,D ;‚ª«.á 0x4000
|
||
SET 6,D
|
||
GetLnLoop BIT 7,D
|
||
JR Z,GetLn1
|
||
RES 7,D
|
||
SET 6,D
|
||
EXX
|
||
INC E ;DE - €¤à¥á áâà ¨æë ¢ ᯨ᪥
|
||
LD A,(DE) ;’¥ª.áâà ¨æ
|
||
SETPORT WINSP.CPU1,,0
|
||
EXX
|
||
GetLn1 LD A,(DE)
|
||
INC DE
|
||
CP 0x0D
|
||
JR Z,GetLnExit
|
||
CP 0x0A
|
||
JR Z,GetLnExit
|
||
LD (HL),A
|
||
INC L
|
||
DJNZ GetLnLoop
|
||
GetLnExit POP AF
|
||
SETPORT WINSP.CPU1,,0
|
||
GetLnE1 SUB A
|
||
LD (IY+ReadyStr),A
|
||
LD A,L
|
||
LD (IY+LenString),A
|
||
LD (IY+PrvLenStr),A
|
||
push af
|
||
neg
|
||
ld b,a
|
||
LD A,0x20
|
||
.L1 LD (HL),A
|
||
INC L
|
||
DJNZ .L1
|
||
pop af
|
||
SUB (IY+StringX)
|
||
RET NC
|
||
LD A,(IY+StringX)
|
||
LD (IY+LenString),A
|
||
RET
|
||
|
||
;[]----------------------------------------------------------[]
|
||
PutString LD A,(IY+ReadyStr)
|
||
OR A
|
||
RET Z
|
||
LD A,(IY+LenString)
|
||
OR A
|
||
JR Z,PutStr2
|
||
LD L,A
|
||
LD H,HIGH (LineBuffer)
|
||
PutStr1 DEC L
|
||
LD A,0x20
|
||
CP (HL)
|
||
JR NZ,PutStr2
|
||
DEC (IY+LenString)
|
||
LD A,L
|
||
OR A
|
||
JR NZ,PutStr1
|
||
PutStr2
|
||
SETPORT WINSP.Y_PORT,0xC0
|
||
LD A,(IY+PrvLenStr)
|
||
SUB (IY+LenString)
|
||
CALL NZ,CorrectFile
|
||
PutStrN SUB A
|
||
LD (IY+ReadyStr),A
|
||
LD HL,LineBuffer
|
||
LD A,(IY+LenString)
|
||
LD (IY+PrvLenStr),A
|
||
OR A
|
||
RET Z
|
||
LD B,A
|
||
GETPORT WINSP.CPU1
|
||
PUSH AF
|
||
LD DE,(LineShift)
|
||
LD A,D ;‚뤥«ï¥¬ ®¬¥à áâà ¨æë
|
||
AND 0xC0
|
||
RLCA
|
||
RLCA
|
||
EXX
|
||
LD E,A ;DE - €¤à¥á áâà ¨æë ¢ ᯨ᪥
|
||
LD D,HIGH (PagesList)
|
||
LD A,(DE) ;’¥ª.áâà ¨æ
|
||
SETPORT WINSP.CPU1,,0
|
||
EXX
|
||
RES 7,D ;‚ª«.á 0x4000
|
||
SET 6,D
|
||
PutStringLp BIT 7,D
|
||
JR Z,PutStr3
|
||
RES 7,D
|
||
SET 6,D
|
||
EXX
|
||
INC E ;DE - €¤à¥á áâà ¨æë ¢ ᯨ᪥
|
||
LD A,(DE) ;’¥ª.áâà ¨æ
|
||
SETPORT WINSP.CPU1,,0
|
||
EXX
|
||
PutStr3 LD A,(HL)
|
||
LD (DE),A
|
||
INC DE
|
||
INC L
|
||
DJNZ PutStringLp
|
||
POP AF
|
||
SETPORT WINSP.CPU1,,0
|
||
RET
|
||
|
||
CorrectFile JR NC,MinusBytes
|
||
PlusBytes NEG
|
||
LD C,A
|
||
LD B,0x00
|
||
LD HL,(FEFileLenght)
|
||
LD E,L
|
||
LD D,H
|
||
ADD HL,BC
|
||
LD A,H
|
||
CP 0xC0
|
||
JP NC,NoMemSpace
|
||
LD (FEFileLenght),HL
|
||
EX DE,HL
|
||
PUSH HL
|
||
LD BC,(LineShift)
|
||
OR A
|
||
SBC HL,BC
|
||
LD C,L
|
||
LD B,H
|
||
POP HL
|
||
DI
|
||
EXX
|
||
GETPORT WINSP.CPU0
|
||
LD L,A
|
||
GETPORT WINSP.CPU1
|
||
LD E,A
|
||
GETPORT WINSP.CPU2
|
||
LD C,A
|
||
EXX
|
||
LD A,(PagesList)
|
||
SETPORT WINSP.CPU0,,0
|
||
LD A,(PagesList+1)
|
||
SETPORT WINSP.CPU1,,0
|
||
LD A,(PagesList+2)
|
||
SETPORT WINSP.CPU2,,0
|
||
LD A,B
|
||
OR A
|
||
JR Z,.MovUp1
|
||
ACCEL ACCELCMD.SET_BUFFER
|
||
LD A,0x00
|
||
.MovUp0 DEC H
|
||
DEC D
|
||
ACCEL ACCELCMD.COPY
|
||
LD A,(HL)
|
||
LD (DE),A
|
||
ACCEL ACCELCMD.OFF
|
||
DEC B
|
||
JR NZ,.MovUp0
|
||
.MovUp1 LD A,C
|
||
OR A
|
||
JR Z,MoveUpE
|
||
LD (.LenUp),A
|
||
SBC HL,BC
|
||
EX DE,HL
|
||
SBC HL,BC
|
||
EX DE,HL
|
||
ACCEL ACCELCMD.SET_BUFFER
|
||
LD A,0x00
|
||
.LenUp EQU $-1
|
||
ACCEL ACCELCMD.COPY
|
||
LD A,(HL)
|
||
LD (DE),A
|
||
ACCEL ACCELCMD.OFF
|
||
MoveUpE EXX
|
||
LD A,C
|
||
SETPORT WINSP.CPU2,,0
|
||
LD A,E
|
||
SETPORT WINSP.CPU1,,0
|
||
LD A,L
|
||
SETPORT WINSP.CPU0,,0
|
||
EXX
|
||
EI
|
||
RET
|
||
|
||
MinusBytes LD C,A
|
||
LD B,0x00
|
||
LD HL,(LineShift)
|
||
PUSH HL
|
||
ADD HL,BC
|
||
PUSH HL
|
||
EX DE,HL
|
||
LD HL,(FEFileLenght)
|
||
OR A
|
||
SBC HL,BC
|
||
LD (FEFileLenght),HL
|
||
LD BC,(LineShift)
|
||
OR A
|
||
SBC HL,BC
|
||
LD C,L
|
||
LD B,H
|
||
POP HL
|
||
POP DE
|
||
DI
|
||
EXX
|
||
GETPORT WINSP.CPU0
|
||
LD L,A
|
||
GETPORT WINSP.CPU1
|
||
LD E,A
|
||
GETPORT WINSP.CPU2
|
||
LD C,A
|
||
EXX
|
||
LD A,(PagesList)
|
||
SETPORT WINSP.CPU0,,0
|
||
LD A,(PagesList+1)
|
||
SETPORT WINSP.CPU1,,0
|
||
LD A,(PagesList+2)
|
||
SETPORT WINSP.CPU2,,0
|
||
LD A,B
|
||
OR A
|
||
JR Z,MovFl1
|
||
ACCEL ACCELCMD.SET_BUFFER
|
||
LD A,0x00
|
||
MovFl0
|
||
ACCEL ACCELCMD.COPY
|
||
LD A,(HL)
|
||
LD (DE),A
|
||
ACCEL ACCELCMD.OFF
|
||
INC H
|
||
INC D
|
||
DEC B
|
||
JR NZ,MovFl0
|
||
MovFl1 LD A,C
|
||
OR A
|
||
JR Z,MoveFlE
|
||
LD (.LenFl),A
|
||
ACCEL ACCELCMD.SET_BUFFER
|
||
LD A,0x00
|
||
.LenFl EQU $-1
|
||
ACCEL ACCELCMD.COPY
|
||
LD A,(HL)
|
||
LD (DE),A
|
||
ACCEL ACCELCMD.OFF
|
||
MoveFlE EXX
|
||
LD A,C
|
||
SETPORT WINSP.CPU2,,0
|
||
LD A,E
|
||
SETPORT WINSP.CPU1,,0
|
||
LD A,L
|
||
SETPORT WINSP.CPU0,,0
|
||
EXX
|
||
EI
|
||
RET
|
||
|
||
NoMemSpace CALL GetString
|
||
CALL PrnASCIIstring
|
||
CALL PrnASCIIinfo
|
||
INC SP
|
||
INC SP
|
||
RET
|
||
|
||
;[]==========================================================[]
|
||
PrnASCIIinfo LD HL,LineT
|
||
LD DE,ColT
|
||
LD BC,FreeT
|
||
LD A,0x01
|
||
REPT 0x04
|
||
LD (HL),A
|
||
INC HL
|
||
LD (DE),A
|
||
INC DE
|
||
LD (BC),A
|
||
INC BC
|
||
ENDM
|
||
LD (HL),A
|
||
LD (DE),A
|
||
LD (BC),A
|
||
LD HL,(CurLine)
|
||
LD DE,LineT
|
||
INC HL
|
||
CALL JUMPS.ConvNumTxt16
|
||
LD DE,ColT
|
||
LD A,(IY+CursorX)
|
||
ADD A,(IY+CursAddX)
|
||
INC A
|
||
CALL JUMPS.ConvNumTxt8
|
||
LD HL,0xC000
|
||
LD DE,FreeT
|
||
LD BC,(FEFileLenght)
|
||
OR A
|
||
SBC HL,BC
|
||
CALL JUMPS.ConvNumTxt16
|
||
LD HL,ReadyNo
|
||
LD A,(IY+ReadyFile)
|
||
OR A
|
||
JR Z,.L1
|
||
LD HL,ReadyYes
|
||
.L1 LD DE,0x017E
|
||
LD BC,0x0011
|
||
LD A,0x80
|
||
CALL JUMPS.PrnTxtLnIFF
|
||
LD HL,LineT
|
||
LD DE,0x01AE
|
||
LD BC,0x0011
|
||
LD A,0x80
|
||
CALL JUMPS.PrnTxtLnIFF
|
||
LD HL,ColT
|
||
LD DE,0x01F8
|
||
LD BC,0x0011
|
||
LD A,0x80
|
||
CALL JUMPS.PrnTxtLnIFF
|
||
LD HL,FreeT
|
||
LD DE,0x0248
|
||
LD BC,0x0011
|
||
LD A,0x80
|
||
CALL JUMPS.PrnTxtLnIFF
|
||
LD IX,EditVBar
|
||
LD HL,(ELines)
|
||
LD DE,(EquipLines)
|
||
OR A
|
||
SBC HL,DE
|
||
JR Z,TstLine
|
||
LD (ELines),DE
|
||
CALL JUMPS.InitScrBar
|
||
LD HL,(CurLine)
|
||
LD (CLine),HL
|
||
CALL JUMPS.PrnVScrBar
|
||
JR TstAddX
|
||
|
||
TstLine LD HL,(CLine)
|
||
LD DE,(CurLine)
|
||
OR A
|
||
SBC HL,DE
|
||
JR Z,TstAddX
|
||
LD (CLine),DE
|
||
CALL JUMPS.PrnVScrBar
|
||
TstAddX LD A,(CAddX)
|
||
SUB (IY+CursorX)
|
||
CP (IY+CursAddX)
|
||
RET Z
|
||
LD A,(IY+CursorX)
|
||
ADD A,(IY+CursAddX)
|
||
LD (CAddX),A
|
||
LD IX,EditHBar
|
||
CALL JUMPS.PrnHScrBar
|
||
RET
|
||
|
||
ReadyNo DEFB 0x01,0
|
||
ReadyYes DEFB "*",0
|
||
LineT DUPL 6,0
|
||
ColT DUPL 6,0
|
||
FreeT DUPL 6,0
|
||
|
||
;[]==========================================================[]
|
||
TInsertSymbol CP 0x20
|
||
JR NC,InsSymbol
|
||
CP 0x08
|
||
JP Z,BackSpace
|
||
CP 0x0D
|
||
JP Z,Enter
|
||
CP 0x09
|
||
RET NZ
|
||
InsSymbol: push af
|
||
call Insert
|
||
call TCursorRight
|
||
pop bc
|
||
call AutoBracket
|
||
LD A,0x01
|
||
LD (IY+ReadyStr),A
|
||
LD (IY+ReadyFile),A
|
||
jp PrnASCIIstring
|
||
|
||
AutoBracket: ld a,1
|
||
AutoBrackets EQU $-1
|
||
and a
|
||
ret z
|
||
call CanInsertBrackets
|
||
ret c
|
||
ld a,b
|
||
call Subst
|
||
db 4
|
||
db "(){}[]<>"
|
||
cp b
|
||
jr nz,Insert
|
||
cp '\"' ; #22
|
||
ret nz
|
||
jp Insert
|
||
|
||
CanInsertBrackets:
|
||
LD A,(IY+LenString) ;InpytSymb
|
||
CP 240 ;Max len
|
||
RET Z
|
||
LD H,HIGH (LineBuffer)
|
||
LD L,(IY+StringX)
|
||
ld a,(hl)
|
||
and a
|
||
ret z
|
||
cp 32
|
||
ret z
|
||
cp 9
|
||
ret z
|
||
scf
|
||
ret
|
||
|
||
Insert EX AF,AF'
|
||
LD A,(IY+LenString) ;InpytSymb
|
||
CP 240 ;Max len
|
||
RET Z
|
||
SUB (IY+StringX)
|
||
JR C,.NotInsert
|
||
JR Z,.NotInsert
|
||
;‚¢®¤ ¢ á¥à¥¤¨ã ⥪áâ
|
||
LD C,A
|
||
LD B,0x00
|
||
LD L,(IY+LenString)
|
||
LD H,HIGH (LineBuffer)
|
||
LD E,L
|
||
LD D,H
|
||
DEC HL
|
||
LDDR
|
||
.NotInsert LD H,HIGH (LineBuffer)
|
||
LD L,(IY+StringX)
|
||
EX AF,AF'
|
||
LD (HL),A
|
||
ld a,(IY+LenString)
|
||
inc a
|
||
cp l
|
||
jr nc,.set
|
||
ld a,l
|
||
inc a
|
||
.set: ld (IY+LenString),a
|
||
ret
|
||
|
||
;[]----------------------------------------------------------[]
|
||
;<3B>®¤áâ ®¢ª a ¯® ᯨáªã § call.
|
||
;¯¥à¢ë© ¡ ©â ᯨ᪠ᮤ¥à¦¨â ç¨á«®
|
||
;á«¥¤ãîé¨å ¤ «¥¥ ¯ à ®¡à §¥æ-§ ¬¥¨â¥«ì.
|
||
;‚室: a. ‚ë室: a
|
||
; BXO„: A,List
|
||
; B›XO„: A
|
||
Subst: ex (sp),hl
|
||
push bc
|
||
ld b,(hl)
|
||
inc hl
|
||
ld c,a
|
||
Subst1: cp (hl)
|
||
inc hl
|
||
jr nz,Subst2
|
||
ld c,(hl)
|
||
Subst2: inc hl
|
||
djnz Subst1
|
||
ld a,c
|
||
pop bc
|
||
ex (sp),hl
|
||
ret
|
||
|
||
;[]----------------------------------------------------------[]
|
||
;DoubleString
|
||
TDoubleString: ld l,(iy+LenString)
|
||
ld a,l
|
||
and a
|
||
adc a,a ;¡ã¤¥â ¯à¥¢ëè¥ ¡ãä¥à ¢ 256 ᨬ¢®«®¢
|
||
ret c
|
||
adc a,2
|
||
ret c
|
||
ld h,0x00
|
||
push hl
|
||
push hl
|
||
pop bc
|
||
ld de,LineBuffer
|
||
add hl,de
|
||
ld (hl),0x0D
|
||
inc hl
|
||
ld (hl),0x0A
|
||
inc hl
|
||
ex hl,de
|
||
ld a,c
|
||
or a
|
||
jr z,.skip
|
||
ldir
|
||
.skip: pop hl
|
||
add hl,hl
|
||
inc hl
|
||
inc hl
|
||
ld (iy+LenString),l
|
||
ld a,0x01
|
||
ld (iy+ReadyStr),a
|
||
ld (iy+ReadyFile),a
|
||
call PutString
|
||
ld hl,(EquipLines)
|
||
inc hl
|
||
ld (EquipLines),hl
|
||
call FEPrnASCIIpage
|
||
jp TCursorDown
|
||
|
||
;[]----------------------------------------------------------[]
|
||
;Enter
|
||
Enter LD A,(IY+LenString)
|
||
SUB (IY+StringX)
|
||
jr nc,.less
|
||
xor a
|
||
.less: LD C,A
|
||
call CalcStartTabs
|
||
ld a,l
|
||
ld (.tabs),a
|
||
push af
|
||
inc a
|
||
LD L,(IY+LenString)
|
||
add a,l
|
||
ld e,a
|
||
ld d,h
|
||
xor a
|
||
cp c
|
||
jr z,.endLine
|
||
LD B,0x00
|
||
LD H,HIGH (LineBuffer)
|
||
dec l
|
||
LDDR
|
||
.endLine: pop af
|
||
and a
|
||
jr z,.skip
|
||
ld c,a
|
||
ld b,0x00
|
||
ld h,HIGH (LineBuffer)
|
||
ld l,a
|
||
dec l
|
||
lddr
|
||
.skip: ex hl,de
|
||
ld (hl),0x0A
|
||
dec hl
|
||
ld (hl),0x0D
|
||
add a,(IY+LenString)
|
||
add a,2
|
||
ld (IY+LenString),a
|
||
LD A,0x01
|
||
LD (IY+ReadyStr),A
|
||
LD (IY+ReadyFile),A
|
||
CALL PutString
|
||
LD HL,(EquipLines)
|
||
INC HL
|
||
LD (EquipLines),HL
|
||
CALL FEPrnASCIIpage
|
||
ld a,0
|
||
.tabs EQU $-1
|
||
LD (IY+StringX),A
|
||
and a
|
||
call nz,StringXToCursorX
|
||
LD (IY+CursorX),a
|
||
JP TCursorDown
|
||
|
||
StringXToCursorX:
|
||
ld b,a
|
||
ld c,0x00
|
||
ld hl,LineBuffer
|
||
.loop: ld A,(HL)
|
||
INC HL
|
||
CP 0x09
|
||
JR NZ,.skip
|
||
LD A,C
|
||
AND 0xF8
|
||
ADD A,0x08
|
||
LD C,A
|
||
DEC C
|
||
.skip: INC C
|
||
DJNZ .loop
|
||
ld a,c
|
||
ret
|
||
|
||
CalcStartTabs: ld hl,LineBuffer
|
||
ld a,1
|
||
.param EQU $-1
|
||
and a
|
||
ret z
|
||
ld b,(iy+StringX)
|
||
.loop: ld a,(hl)
|
||
cp 0x20
|
||
jr z,.next
|
||
cp 0x09
|
||
ret nz
|
||
.next: inc l
|
||
djnz .loop
|
||
ret
|
||
|
||
;[]----------------------------------------------------------[]
|
||
Undo: xor a
|
||
LD (IY+ReadyStr),A
|
||
LD (IY+ReadyFile),A
|
||
call GetString
|
||
CALL PrnASCIIstring
|
||
jp PrnASCIIinfo
|
||
|
||
;[]----------------------------------------------------------[]
|
||
;BackSpace
|
||
BackSpace LD A,(IY+StringX)
|
||
OR A
|
||
RET Z
|
||
LD L,A
|
||
LD H,HIGH (LineBuffer)
|
||
LD E,L
|
||
LD D,H
|
||
DEC DE
|
||
LD A,(IY+LenString)
|
||
SUB (IY+StringX)
|
||
JR Z,BackSp1
|
||
LD C,A
|
||
LD B,0x00
|
||
LDIR
|
||
SUB A
|
||
BackSp1 LD (DE),A
|
||
INC A
|
||
LD (IY+ReadyStr),A
|
||
LD (IY+ReadyFile),A
|
||
DEC (IY+LenString)
|
||
CALL PrnASCIIstring
|
||
JP TCursorLeft
|
||
|
||
;[]----------------------------------------------------------[]
|
||
TDeleteString: sub a
|
||
ld (IY+LenString),a
|
||
ld (IY+StringX),a
|
||
ld l,a
|
||
ld h,HIGH (LineBuffer)
|
||
ld (hl),a
|
||
inc a
|
||
ld (IY+ReadyStr),A
|
||
ld (IY+ReadyFile),A
|
||
call PutString
|
||
jr AddString
|
||
|
||
;[]----------------------------------------------------------[]
|
||
TDeleteSymbol LD A,(IY+LenString)
|
||
SUB (IY+StringX)
|
||
JR Z,AddString
|
||
LD C,A
|
||
LD B,0x00
|
||
LD L,(IY+StringX)
|
||
LD H,HIGH (LineBuffer)
|
||
INC HL
|
||
LD E,L
|
||
LD D,H
|
||
DEC DE
|
||
LDIR
|
||
SUB A
|
||
LD (DE),A
|
||
INC A
|
||
LD (IY+ReadyStr),A
|
||
LD (IY+ReadyFile),A
|
||
DEC (IY+LenString)
|
||
CALL PrnASCIIstring
|
||
CALL PrnASCIIinfo
|
||
RET
|
||
|
||
AddString CALL PutStr2
|
||
LD A,(IY+StringX)
|
||
CP 0xF0
|
||
RET Z
|
||
LD HL,(LineShift)
|
||
CALL FESearchDown
|
||
LD DE,(FEFileLenght)
|
||
OR A
|
||
SBC HL,DE
|
||
RET Z
|
||
ADD HL,DE
|
||
GETPORT WINSP.CPU1
|
||
PUSH AF
|
||
LD A,H ;‚뤥«ï¥¬ ®¬¥à áâà ¨æë
|
||
AND 0xC0
|
||
RLCA
|
||
RLCA
|
||
LD E,A
|
||
LD D,HIGH (PagesList)
|
||
LD A,(DE) ;’¥ª.áâà ¨æ
|
||
SETPORT WINSP.CPU1,,0
|
||
RES 7,H
|
||
SET 6,H
|
||
DEC HL
|
||
BIT 6,H
|
||
JR NZ,AddStr0
|
||
DEC E
|
||
LD A,(DE)
|
||
SETPORT WINSP.CPU1,,0
|
||
SET 6,H
|
||
AddStr0 LD A,(HL)
|
||
CP 0x0D
|
||
LD B,0x01
|
||
JR Z,AddStr2
|
||
CP 0x0A
|
||
LD B,0x00
|
||
JR NZ,AddStr2
|
||
DEC HL
|
||
BIT 6,H
|
||
JR NZ,AddStr1
|
||
DEC E
|
||
LD A,(DE)
|
||
SETPORT WINSP.CPU1,,0
|
||
SET 6,H
|
||
AddStr1 LD A,(HL)
|
||
CP 0x0D
|
||
LD B,0x01
|
||
JR NZ,AddStr2
|
||
LD B,0x02
|
||
AddStr2 POP AF
|
||
SETPORT WINSP.CPU1,,0
|
||
LD A,B
|
||
OR A
|
||
RET Z
|
||
CALL MinusBytes
|
||
CALL PutStrN
|
||
LD HL,(EquipLines)
|
||
DEC HL
|
||
LD (EquipLines),HL
|
||
CALL FEPrnASCIIpage
|
||
RET
|
||
|
||
;[]----------------------------------------------------------[]
|
||
;Delete word
|
||
TDeleteWord LD A,(IY+StringX)
|
||
OR A
|
||
RET Z
|
||
LD C,A
|
||
LD B,A
|
||
LD L,A
|
||
LD H,HIGH (LineBuffer)
|
||
LD A,(IY+LenString)
|
||
SUB C
|
||
LD E,A
|
||
PUSH HL
|
||
DEC L
|
||
DEC C
|
||
LD A,(HL)
|
||
CP 0x09
|
||
JR Z,.next
|
||
CP 0x20
|
||
JR Z,.next
|
||
CP ','
|
||
JR Z,.next
|
||
CP '.'
|
||
JR Z,.next
|
||
DEC B
|
||
JR Z,.skip
|
||
.DWord0 DEC L
|
||
DEC C
|
||
LD A,(HL)
|
||
CP 0x09
|
||
JR Z,.DWord2
|
||
CP 0x20
|
||
JR Z,.DWord2
|
||
CP ','
|
||
JR Z,.DWord2
|
||
CP '.'
|
||
JR Z,.DWord2
|
||
DJNZ .DWord0
|
||
JR .skip
|
||
|
||
.DWord1 LD A,(HL)
|
||
CP 0x09
|
||
JR Z,.next
|
||
CP 0x20
|
||
JR Z,.next
|
||
CP ','
|
||
JR Z,.next
|
||
CP '.'
|
||
JR NZ,.DWord2
|
||
.next DEC L
|
||
DEC C
|
||
DJNZ .DWord1
|
||
.DWord2 INC L
|
||
INC C
|
||
.skip LD A,(IY+StringX)
|
||
LD (IY+StringX),C
|
||
SUB C
|
||
LD C,A
|
||
EX AF,AF'
|
||
LD A,(IY+LenString)
|
||
SUB C
|
||
LD (IY+LenString),A
|
||
LD C,E
|
||
LD B,0x00
|
||
EX DE,HL
|
||
POP HL
|
||
LD A,C
|
||
OR A
|
||
JR Z,.L1
|
||
LDIR
|
||
.L1 EX DE,HL
|
||
EX AF,AF'
|
||
LD B,A
|
||
SUB A
|
||
.L2 LD (HL),A
|
||
INC L
|
||
DJNZ .L2
|
||
INC A
|
||
LD (IY+ReadyStr),A
|
||
LD (IY+ReadyFile),A
|
||
CALL PrnASCIIstring
|
||
INC (IY+StringX)
|
||
JP TCursorLeft
|
||
|
||
;[]----------------------------------------------------------[]
|
||
;Šãàá®à ¢«¥¢® ®¤® ¬¥áâ®
|
||
TCursorLeft LD A,(IY+StringX)
|
||
OR A
|
||
RET Z
|
||
DEC A
|
||
LD (IY+StringX),A
|
||
LD C,0x00
|
||
JR Z,CursLf3
|
||
LD HL,LineBuffer
|
||
LD B,A
|
||
CursLf1 LD A,(HL)
|
||
INC HL
|
||
CP 0x09
|
||
JR NZ,CursLf2
|
||
LD A,C
|
||
AND 0xF8
|
||
ADD A,0x08
|
||
LD C,A
|
||
DEC C
|
||
CursLf2 INC C
|
||
DJNZ CursLf1
|
||
CursLf3 LD B,(IY+CursAddX)
|
||
CursLf4 LD A,C
|
||
SUB (IY+CursAddX)
|
||
JR NC,CursLf5
|
||
LD A,(IY+CursAddX)
|
||
SUB Step
|
||
LD (IY+CursAddX),A
|
||
JR CursLf4
|
||
|
||
CursLf5 LD (IY+CursorX),A
|
||
LD A,B
|
||
CP (IY+CursAddX)
|
||
CALL NZ,RefrASCIIpage
|
||
CALL FEResCursor
|
||
LD E,(IY+CursorX)
|
||
LD D,(IY+CursorY)
|
||
CALL FESetCursor
|
||
CALL PrnASCIIinfo
|
||
LD A,(IY+LenString)
|
||
SUB (IY+StringX)
|
||
RET Z
|
||
LD B,A
|
||
LD L,(IY+LenString)
|
||
LD H,HIGH (LineBuffer)
|
||
LD D,0x00
|
||
LD A,0x20
|
||
CursLf6 DEC HL
|
||
CP (HL)
|
||
RET NZ
|
||
LD (HL),D
|
||
DEC (IY+LenString)
|
||
DJNZ CursLf6
|
||
RET
|
||
;[]----------------------------------------------------------[]
|
||
;Šãàá®à ¢¯à ¢® ®¤® ¬¥áâ®
|
||
TCursorRight LD A,(IY+CursorX)
|
||
ADD A,(IY+CursAddX)
|
||
CP 240
|
||
RET Z
|
||
LD A,(IY+StringX)
|
||
CP 240
|
||
RET Z
|
||
INC A
|
||
LD (IY+StringX),A
|
||
LD C,0x00
|
||
LD HL,LineBuffer
|
||
OR A
|
||
JR Z,.CursRg3
|
||
LD B,A
|
||
.CursRg1 LD A,(HL)
|
||
INC HL
|
||
CP 0x09
|
||
JR NZ,.CursRg2
|
||
LD A,C
|
||
AND 0xF8
|
||
ADD A,0x08
|
||
LD C,A
|
||
DEC C
|
||
.CursRg2 INC C
|
||
DJNZ .CursRg1
|
||
.CursRg3 LD B,(IY+CursAddX)
|
||
.CursRg4 LD A,C
|
||
SUB (IY+CursAddX)
|
||
CP 0x4E
|
||
JR C,CursRg5
|
||
LD A,(IY+CursAddX)
|
||
ADD A,Step
|
||
LD (IY+CursAddX),A
|
||
JR .CursRg4
|
||
|
||
CursRg5 LD (IY+CursorX),A
|
||
LD A,B
|
||
CP (IY+CursAddX)
|
||
CALL NZ,RefrASCIIpage
|
||
LD A,(IY+LenString)
|
||
SUB (IY+StringX)
|
||
JR NC,CursRg6
|
||
LD L,(IY+LenString)
|
||
LD H,HIGH (LineBuffer)
|
||
LD (HL),0x20
|
||
INC (IY+LenString)
|
||
CursRg6 CALL FEResCursor
|
||
LD E,(IY+CursorX)
|
||
LD D,(IY+CursorY)
|
||
CALL FESetCursor
|
||
CALL PrnASCIIinfo
|
||
RET
|
||
|
||
;[]----------------------------------------------------------[]
|
||
;Word left
|
||
TWordLeft LD A,(IY+StringX)
|
||
OR A
|
||
RET Z
|
||
LD C,A
|
||
LD B,A
|
||
LD L,A
|
||
LD H,HIGH (LineBuffer)
|
||
.WordLf0 DEC L
|
||
DEC C
|
||
LD A,(HL)
|
||
CP 0x09
|
||
JR Z,.next
|
||
CP 0x20
|
||
JR Z,.next
|
||
CP ','
|
||
JR Z,.next
|
||
CP '.'
|
||
JR Z,.next
|
||
DJNZ .WordLf0
|
||
JR .skip
|
||
|
||
.WordLf1 LD A,(HL)
|
||
CP 0x09
|
||
JR Z,.next
|
||
CP 0x20
|
||
JR Z,.next
|
||
CP ','
|
||
JR Z,.next
|
||
CP '.'
|
||
JR NZ,.WordLf2
|
||
.next DEC L
|
||
DEC C
|
||
DJNZ .WordLf1
|
||
.WordLf2 INC C
|
||
.skip LD (IY+StringX),C
|
||
INC (IY+StringX)
|
||
JP TCursorLeft
|
||
;[]----------------------------------------------------------[]
|
||
;Word right
|
||
TWordRight LD A,(IY+LenString)
|
||
SUB (IY+StringX)
|
||
RET Z
|
||
LD B,A
|
||
LD L,(IY+StringX)
|
||
LD H,HIGH (LineBuffer)
|
||
LD C,L
|
||
.WordRg0 LD A,(HL)
|
||
CP 0x09
|
||
JR Z,.next
|
||
CP 0x20
|
||
JR Z,.next
|
||
CP ','
|
||
JR Z,.next
|
||
CP '.'
|
||
JR Z,.next
|
||
INC L
|
||
INC C
|
||
DJNZ .WordRg0
|
||
JR .WordRg2
|
||
|
||
.WordRg1 LD A,(HL)
|
||
CP 0x09
|
||
JR Z,.next
|
||
CP 0x20
|
||
JR Z,.next
|
||
CP ','
|
||
JR Z,.next
|
||
CP '.'
|
||
JR NZ,.WordRg2
|
||
.next INC L
|
||
INC C
|
||
DJNZ .WordRg1
|
||
.WordRg2 LD (IY+StringX),C
|
||
LD A,C
|
||
OR A
|
||
JP Z,THomeString
|
||
DEC (IY+StringX)
|
||
JP TCursorRight
|
||
|
||
;[]----------------------------------------------------------[]
|
||
THomeString ld a,1
|
||
.param EQU $-1
|
||
and a
|
||
jr z,.toZero
|
||
LD A,(IY+StringX)
|
||
ld e,a
|
||
ld l,0
|
||
ld d,l
|
||
ld c,0x09
|
||
ld b,(iy+LenString)
|
||
ld h,HIGH (LineBuffer)
|
||
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||
.loop: ld a,(hl)
|
||
or a
|
||
jr z,.toFirst
|
||
cp 0x20
|
||
jr z,.next
|
||
cp c
|
||
jr nz,.firstSym
|
||
ld a,7
|
||
add a,d
|
||
ld d,a
|
||
.next: inc l
|
||
inc d
|
||
djnz .loop
|
||
jr .toZero
|
||
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||
|
||
.firstSym: ld a,l
|
||
cp e
|
||
jr c,.skipTabs
|
||
jr nz,.skipTabs
|
||
.toFirst: and a
|
||
jr z,.skipTabs
|
||
.toZero: sub a
|
||
ld l,a
|
||
ld d,a
|
||
.skipTabs: LD B,(IY+CursAddX)
|
||
ld a,l
|
||
LD (IY+StringX),A
|
||
LD (IY+CursorX),d
|
||
and a
|
||
jr nz,.notZero
|
||
LD (IY+CursAddX),A
|
||
jr .skip
|
||
|
||
.notZero: cp b
|
||
jr nc,.skip
|
||
SUB A
|
||
LD (IY+CursAddX),A
|
||
.skip: LD A,B
|
||
CP (IY+CursAddX)
|
||
CALL NZ,RefrASCIIpage
|
||
CALL FEResCursor
|
||
LD E,(IY+CursorX)
|
||
LD D,(IY+CursorY)
|
||
CALL FESetCursor
|
||
CALL PrnASCIIinfo
|
||
LD A,(IY+LenString)
|
||
SUB (IY+StringX)
|
||
RET Z
|
||
LD B,A
|
||
LD L,(IY+LenString)
|
||
LD H,HIGH (LineBuffer)
|
||
LD D,0x00
|
||
LD A,0x20
|
||
HomeStr DEC HL
|
||
CP (HL)
|
||
RET NZ
|
||
LD (HL),D
|
||
DEC (IY+LenString)
|
||
DJNZ HomeStr
|
||
RET
|
||
|
||
;[]----------------------------------------------------------[]
|
||
TEndString LD A,(IY+LenString)
|
||
OR A
|
||
RET Z
|
||
LD B,A
|
||
LD L,A
|
||
LD H,HIGH (LineBuffer)
|
||
LD D,0x00
|
||
LD A,0x20
|
||
EndStr1 LD (HL),D
|
||
DEC HL
|
||
CP (HL)
|
||
JR NZ,EndStr2
|
||
DJNZ EndStr1
|
||
EndStr2 LD (IY+LenString),B
|
||
LD A,B
|
||
CP (IY+StringX)
|
||
RET Z
|
||
OR A
|
||
JP Z,THomeString.toZero
|
||
DEC A
|
||
LD (IY+StringX),A
|
||
JP TCursorRight
|
||
|
||
;[]----------------------------------------------------------[]
|
||
TCursorUp CALL PutString
|
||
LD HL,(LineShift)
|
||
LD A,H
|
||
OR L
|
||
RET Z
|
||
LD A,(IY+CursorY)
|
||
OR A
|
||
JP Z,TScrollUp
|
||
CALL FESearchUp
|
||
LD (LineShift),HL
|
||
DEC (IY+CursorY)
|
||
LD HL,(CurLine)
|
||
DEC HL
|
||
LD (CurLine),HL
|
||
JP CursorExit
|
||
|
||
TCursorDown CALL PutString
|
||
LD HL,(LineShift)
|
||
LD DE,(FEFileLenght)
|
||
OR A
|
||
SBC HL,DE
|
||
RET Z
|
||
ADD HL,DE
|
||
CALL FESearchDown
|
||
LD A,(IY+CursorY)
|
||
CP 0x18
|
||
JP Z,TScrollDown
|
||
LD (LineShift),HL
|
||
INC (IY+CursorY)
|
||
LD HL,(CurLine)
|
||
INC HL
|
||
LD (CurLine),HL
|
||
JP CursorExit
|
||
|
||
TScrollUp CALL PutString
|
||
LD HL,(FEPageShift)
|
||
LD A,H
|
||
OR L
|
||
JP Z,TCursorUp
|
||
CALL FESearchUp
|
||
LD (FEPageShift),HL
|
||
LD (FETempShift),HL
|
||
LD HL,(LineShift)
|
||
CALL FESearchUp
|
||
LD (LineShift),HL
|
||
LD HL,(CurLine)
|
||
DEC HL
|
||
LD (CurLine),HL
|
||
CALL FEResCursor
|
||
CALL FEScrollSCRdown
|
||
LD B,0x1C
|
||
CALL PrnASCIIline
|
||
LD E,(IY+CursorX)
|
||
LD D,(IY+CursorY)
|
||
CALL FESetCursor
|
||
JP CursorExit
|
||
|
||
TScrollDown CALL PutString
|
||
LD HL,(FEPageShift)
|
||
LD B,0x19
|
||
.ScrlDn1 PUSH BC
|
||
CALL FESearchDown
|
||
POP BC
|
||
JP C,TCursorDown
|
||
DJNZ .ScrlDn1
|
||
LD (FETempShift),HL
|
||
LD HL,(FEPageShift)
|
||
CALL FESearchDown
|
||
LD (FEPageShift),HL
|
||
LD HL,(LineShift)
|
||
CALL FESearchDown
|
||
LD (LineShift),HL
|
||
LD HL,(CurLine)
|
||
INC HL
|
||
LD (CurLine),HL
|
||
CALL FEResCursor
|
||
CALL FEScrollSCRup
|
||
LD B,0xDC
|
||
CALL PrnASCIIline
|
||
LD E,(IY+CursorX)
|
||
LD D,(IY+CursorY)
|
||
CALL FESetCursor
|
||
CursorExit CALL GetString
|
||
LD HL,LineBuffer
|
||
LD C,0x00
|
||
LD A,(IY+CursorX)
|
||
add a,(iy+CursAddX)
|
||
OR A
|
||
JR Z,CursEx3
|
||
LD B,A
|
||
CursEx1 LD A,(HL)
|
||
INC HL
|
||
CP 0x09
|
||
JR NZ,CursEx2
|
||
LD A,C
|
||
AND 0xF8
|
||
ADD A,0x08
|
||
LD C,A
|
||
DEC C
|
||
CursEx2 INC C
|
||
LD a,c
|
||
cp b
|
||
jr nc,CursEx3
|
||
jr CursEx1
|
||
|
||
CursEx3: ld (iy+StringX),l
|
||
LD B,(IY+CursAddX)
|
||
LD (IY+CursAddX),0x00
|
||
CursEx4: LD A,C
|
||
SUB (IY+CursAddX)
|
||
CP 0x4E
|
||
JR C,CursEx5
|
||
LD A,(IY+CursAddX)
|
||
ADD A,Step
|
||
LD (IY+CursAddX),A
|
||
JR CursEx4
|
||
|
||
CursEx5 LD (IY+CursorX),A
|
||
LD A,B
|
||
CP (IY+CursAddX)
|
||
CALL NZ,RefrASCIIpage
|
||
CALL FEResCursor
|
||
LD E,(IY+CursorX)
|
||
LD D,(IY+CursorY)
|
||
CALL FESetCursor
|
||
CALL PrnASCIIinfo
|
||
RET
|
||
|
||
;[]----------------------------------------------------------[]
|
||
FETPageUp CALL PutString
|
||
LD HL,(FEPageShift)
|
||
LD A,H
|
||
OR L
|
||
JP Z,FETBegFile
|
||
LD DE,(CurLine)
|
||
LD B,0x19
|
||
PageUp1 PUSH DE
|
||
PUSH BC
|
||
CALL FESearchUp
|
||
POP BC
|
||
POP DE
|
||
JR C,.L1
|
||
DEC DE
|
||
DJNZ PageUp1
|
||
.L1 LD (FEPageShift),HL
|
||
LD (CurLine),DE
|
||
JR PageExit
|
||
|
||
TPageDown CALL PutString
|
||
LD HL,(FEPageShift)
|
||
LD DE,(CurLine)
|
||
LD B,0x19
|
||
PageDn1 PUSH DE
|
||
PUSH BC
|
||
CALL FESearchDown
|
||
POP BC
|
||
POP DE
|
||
JP C,FETEndFile
|
||
INC DE
|
||
DJNZ PageDn1
|
||
LD BC,(FEFileLenght)
|
||
OR A
|
||
SBC HL,BC
|
||
JP Z,FETEndFile
|
||
ADD HL,BC
|
||
LD (FEPageShift),HL
|
||
LD (CurLine),DE
|
||
PageExit LD A,(IY+CursorY)
|
||
OR A
|
||
JR Z,PageEx3
|
||
LD B,A
|
||
PageEx1 PUSH HL
|
||
PUSH BC
|
||
CALL FESearchDown
|
||
POP BC
|
||
POP DE
|
||
JR C,PageEx2
|
||
LD E,L
|
||
LD D,H
|
||
DJNZ PageEx1
|
||
DEC B
|
||
PageEx2 INC B
|
||
LD A,(IY+CursorY)
|
||
SUB B
|
||
LD (IY+CursorY),A
|
||
LD HL,(CurLine)
|
||
LD A,L
|
||
SUB B
|
||
LD L,A
|
||
LD A,H
|
||
SBC A,0x00
|
||
LD H,A
|
||
LD (CurLine),HL
|
||
EX DE,HL
|
||
PageEx3 LD (LineShift),HL
|
||
NewPage CALL GetString
|
||
LD HL,LineBuffer
|
||
LD C,0x00
|
||
LD A,(IY+StringX)
|
||
OR A
|
||
JR Z,PagePr3
|
||
LD B,A
|
||
PagePr1 LD A,(HL)
|
||
INC HL
|
||
CP 0x09
|
||
JR NZ,PagePr2
|
||
LD A,C
|
||
AND 0xF8
|
||
ADD A,0x08
|
||
LD C,A
|
||
DEC C
|
||
PagePr2 INC C
|
||
DJNZ PagePr1
|
||
PagePr3 LD (IY+CursAddX),0x00
|
||
PagePr4 LD A,C
|
||
SUB (IY+CursAddX)
|
||
CP 0x4E
|
||
JR C,PagePr5
|
||
LD A,(IY+CursAddX)
|
||
ADD A,Step
|
||
LD (IY+CursAddX),A
|
||
JR PagePr4
|
||
|
||
PagePr5 LD (IY+CursorX),A
|
||
CALL FEPrnASCIIpage
|
||
RET
|
||
;[]----------------------------------------------------------[]
|
||
FETBegFile CALL PutString
|
||
LD HL,(LineShift)
|
||
LD A,H
|
||
OR L
|
||
RET Z
|
||
LD HL,0x0000
|
||
LD (FEPageShift),HL
|
||
LD (LineShift),HL
|
||
LD (CurLine),HL
|
||
LD (IY+CursorY),L
|
||
JP NewPage
|
||
|
||
FETEndFile CALL PutString
|
||
LD HL,(FEPageShift)
|
||
LD B,0x19
|
||
EndFl1 PUSH BC
|
||
CALL FESearchDown
|
||
POP BC
|
||
JR C,EndFile1
|
||
DJNZ EndFl1
|
||
LD HL,(FEFileLenght)
|
||
LD B,0x19
|
||
EndFl2 PUSH BC
|
||
CALL FESearchUp
|
||
POP BC
|
||
DJNZ EndFl2
|
||
LD (FEPageShift),HL
|
||
LD (IY+CursorY),0x18
|
||
EndFlEx LD HL,(FEFileLenght)
|
||
CALL FESearchUp
|
||
LD (LineShift),HL
|
||
LD HL,(EquipLines)
|
||
DEC HL
|
||
LD (CurLine),HL
|
||
JP NewPage
|
||
|
||
EndFile1 LD A,0x18
|
||
SUB B
|
||
CP (IY+CursorY)
|
||
RET Z
|
||
LD (IY+CursorY),A
|
||
LD HL,(FEFileLenght)
|
||
CALL FESearchUp
|
||
LD (LineShift),HL
|
||
LD HL,(EquipLines)
|
||
DEC HL
|
||
LD (CurLine),HL
|
||
JP NewPage
|
||
|
||
;[]----------------------------------------------------------[]
|
||
TNewCrPos PUSH HL
|
||
PUSH DE
|
||
CALL PutString
|
||
POP DE
|
||
POP HL
|
||
SRL H
|
||
RR L
|
||
SRL H
|
||
RR L
|
||
SRL H
|
||
RR L
|
||
LD A,E
|
||
SUB 0x1C
|
||
SRL A
|
||
SRL A
|
||
SRL A
|
||
LD D,A
|
||
LD E,L
|
||
LD HL,(FEPageShift)
|
||
OR A
|
||
JR Z,NewPos2
|
||
LD B,A
|
||
NewPos1 PUSH DE
|
||
PUSH BC
|
||
CALL FESearchDown
|
||
POP BC
|
||
POP DE
|
||
JP C,FETEndFile
|
||
DJNZ NewPos1
|
||
NewPos2 LD (LineShift),HL
|
||
LD HL,(CurLine)
|
||
LD A,D
|
||
SUB (IY+CursorY)
|
||
LD (IY+CursorY),D
|
||
LD C,A
|
||
LD B,0x00
|
||
JR NC,.L1
|
||
DEC B
|
||
.L1 ADD HL,BC
|
||
LD (CurLine),HL
|
||
SUB A
|
||
LD (IY+StringX),A
|
||
PUSH DE
|
||
CALL GetString
|
||
POP DE
|
||
LD C,0x00
|
||
LD A,E
|
||
ADD A,(IY+CursAddX)
|
||
JR Z,NewPos6
|
||
LD E,A
|
||
LD A,(IY+LenString)
|
||
OR A
|
||
JR Z,NewPos6
|
||
LD B,A
|
||
LD HL,LineBuffer
|
||
NewPos3 LD A,(HL)
|
||
INC L
|
||
CP 0x09
|
||
JR NZ,NewPos4
|
||
LD A,C
|
||
AND 0xF8
|
||
ADD A,0x08
|
||
LD C,A
|
||
DEC C
|
||
NewPos4 INC C
|
||
LD A,C
|
||
CP E
|
||
JR NC,NewPos5
|
||
DJNZ NewPos3
|
||
NewPos5 LD (IY+StringX),L
|
||
LD A,(IY+LenString)
|
||
SUB L
|
||
JR NC,NewPos6
|
||
NEG
|
||
LD B,A
|
||
LD A,0x20
|
||
.L2 LD (HL),A
|
||
INC L
|
||
DJNZ .L2
|
||
LD (IY+LenString),L
|
||
NewPos6 LD A,C
|
||
SUB (IY+CursAddX)
|
||
LD (IY+CursorX),A
|
||
CALL FEResCursor
|
||
LD E,(IY+CursorX)
|
||
LD D,(IY+CursorY)
|
||
CALL FESetCursor
|
||
CALL PrnASCIIinfo
|
||
CALL JUMPS.ResFire
|
||
RET
|