flex_nav/plugins/fnviewer/fvtext.a80

781 lines
12 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

; LAST UPDATE: 25.03.2025 savelij
;[]---------------------------------------------------------[]
PrnASCIIpage LD HL,PrintVProc
PUSH HL
LD HL,(FileShift)
LD (TempShift),HL
LD HL,(FileShift+2)
LD (TempShift+2),HL
LD B,0x1C
PrnASCIIlp PUSH BC
CALL PutASCIIline ;‚뢮¤¨¬ áâப㠢 ¡ãä ¨ ­  íªà ­
POP BC
JR C,FillASCIIdn ;CY-‡ ª®­ç¨«¨áì ¡ ©âë ¤«ï ¯¥ç â¨
LD A,B
ADD A,0x08
LD B,A
CP 0xE4
JR NZ,PrnASCIIlp
LD HL,(TempShift)
LD (FVNextShift),HL
LD HL,(TempShift+2)
LD (FVNextShift+2),HL
SUB A
LD (EmptyLines),A
RET
;<3B>à®æ¥¤ãà  ®âç¨á⪨ ­¨¦­¥© ®¡« á⨠íªà ­ 
FillASCIIdn LD A,0xE4
SUB B
LD (FLenASC),A
JR Z,FASCIIe ;Z-­¥â ®âç¨á⪨
LD A,B
LD (FPosASC),A
MAKEWINDOW WINSUBOBJ.WOBIND
W_FILL 0,0,640,0,COLORI.PANEL
W_END
FLenASC EQU $-4
FPosASC EQU $-8
FASCIIe LD HL,(TempShift)
LD (FVNextShift),HL
LD HL,(TempShift+2)
LD (FVNextShift+2),HL
LD A,(FLenASC)
SRL A
SRL A
SRL A
LD (EmptyLines),A
RET
;<3B>à®æ¥¤ãà  ¯¥ç â¨ ⥪.áâப¨ ¢ ¡ãä¥à ¨ ­  íªà ­
PutASCIIline LD IXH,B
LD A,(ASCIImode)
OR A
LD C,0x50
JR Z,.L1
LD C,0xF0
.L1 PUSH BC
LD HL,(FileLenght)
LD BC,(TempShift)
SBC HL,BC
EX DE,HL
LD HL,(FileLenght+2)
LD BC,(TempShift+2)
SBC HL,BC
POP BC
RET C
LD B,0xF0
JR NZ,PutLine
LD A,D
OR A
JR NZ,PutLine
OR E
SCF
RET Z
LD B,E
PutLine LD HL,LineBuffer
GETPORT WINSP.CPU1
PUSH AF
CALL InitFPages
PutLnLoop CALL TestFPages
LD A,(DE)
INC DE
CP 0x0D
JR NZ,PutLine1
CALL TestFPages
LD A,(DE)
CP 0x0A
JR NZ,PutLnExit
INC DE
JR PutLnExit
PutLine1 CP 0x0A
JR Z,PutLnExit
CP 0x09
JR NZ,PutLine2
PutTab LD (HL),0x20
INC L
LD A,L
CP C
JR Z,PutLineWrap;PutLine3
AND 0x07
JR NZ,PutTab
JR PutLine3
PutLine2 CALL DecodeSymbol ; § ¬¥­ï¥âáï ­  NOP, ¥á«¨ ­¥ ­ã¦­  ¯¥à¥ª®¤¨à®¢ª 
LD (HL),A
LD A,L
CP C
JR Z,PutLineWrap;PutLine3
INC L
PutLine3 DJNZ PutLnLoop
INC DE
PutLineWrap: dec de
CALL TestFPages
LD A,(DE)
CP 0x0D
JR NZ,PutLnExit
INC DE
CALL TestFPages
LD A,(DE)
CP 0x0A
JR NZ,PutLnExit
INC DE
PutLnExit POP AF
SETPORT WINSP.CPU1,,0
CALL GetFPages
LD A,(ASCIImode)
OR A
JR NZ,PutLineUWR
LD A,0x50
SUB L
JR Z,PutLine4
LD B,A
LD A,0x20
.L1 LD (HL),A
INC L
DJNZ .L1
PutLine4 LD HL,LineBuffer
LD DE,0x0000
LD B,0x50
LD C,IXH
LD A,COLORP.PANEL + COLORI.FILES
CALL JUMPS.PrnTxtLnNormC
OR A
RET
DecodeSymbol: CP 0x80
RET C
PUSH HL
SUB 0x80
LD HL,Table866
.table EQU $-2
ADD A,L
LD L,A
JR NC,.L1
INC H
.L1 LD A,(HL)
POP HL
RET
PutLineUWR LD C,IXH
LD A,L
LD (SaveUW),A
LD A,(ASCIIaddX)
ADD A,0x50
SUB L
JR Z,PutLnUW1
JR C,PutLnUW1
LD B,A
LD A,0x20
.L1 LD (HL),A
INC L
DJNZ .L1
PutLnUW1 LD E,0x00
LD B,0x50
LD H,HIGH (LineBuffer)
LD A,(ASCIIaddX)
LD L,A ;ᬥ饭¨¥ ®â ­ ç «  áâப¨
OR A
JR Z,PutLnUW2
PUSH HL
PUSH BC
LD HL,SpaceLeft
LD D,0x00
LD B,0x01
LD A,COLORP.PANEL + COLORI.YELLOW ;(Yellow)
CALL JUMPS.PrnTxtLnNormC
POP BC
POP HL
INC L
DEC B
LD A,(ASCIIaddX)
LD E,0x08
PutLnUW2 LD D,A
LD A,0x00
SaveUW EQU $-1
SUB D
JR C,PutLnUW3
CP 0x51
JR C,PutLnUW3
PUSH HL
PUSH DE
PUSH BC
LD HL,SpaceRight
LD DE,0x0278
LD B,0x01
LD A,COLORP.PANEL + COLORI.YELLOW ;(Yellow)
CALL JUMPS.PrnTxtLnNormC
POP BC
POP DE
POP HL
DEC B
PutLnUW3 LD D,0x00
LD A,COLORP.PANEL + COLORI.FILES ;(Yellow)
CALL JUMPS.PrnTxtLnNormC
OR A
RET
SpaceLeft DEFB 0x1B
SpaceRight DEFB 0x1A
;[]==========================================================[]
ChCodePage: LD HL,ViewerBegin
EX (SP),HL
LD A,(CodePage)
INC A
CP 3
JR C,.L1
XOR A
.L1 LD (CodePage), A
RET
;[]==========================================================[]
ChASCIImode LD HL,ViewerBegin
EX (SP),HL
LD A,(ASCIImode)
XOR 0x01
LD (ASCIImode),A
RET Z
SUB A
LD (ASCIIaddX),A
RET
;[]----------------------------------------------------------[]
ScrollLeft LD A,(ASCIImode)
OR A
RET Z
LD A,(ASCIIaddX)
OR A
RET Z
DEC A
LD (ASCIIaddX),A
CALL PrnASCIIpage
RET
;[]----------------------------------------------------------[]
ScrollRght LD A,(ASCIImode)
OR A
RET Z
LD A,(ASCIIaddX)
CP 0xA0
RET Z
INC A
LD (ASCIIaddX),A
CALL PrnASCIIpage
RET
;[]----------------------------------------------------------[]
THome LD A,(ASCIImode)
OR A
RET Z
LD A,(ASCIIaddX)
OR A
RET Z
SUB A
LD (ASCIIaddX),A
CALL PrnASCIIpage
RET
;[]----------------------------------------------------------[]
TEnd LD A,(ASCIImode)
OR A
RET Z
LD A,(ASCIIaddX)
CP 0xA0
RET Z
LD A,0xA0
LD (ASCIIaddX),A
CALL PrnASCIIpage
RET
;[]----------------------------------------------------------[]
TLineUpMs CALL TLineUp
RET C
LD B,0x0A
TUpMs1 PUSH BC
SPMOUSE MOUSEF.READ_STATE
POP BC
BIT 0,A
RET Z
HALT
DJNZ TUpMs1
TUpMs2 CALL TLineUp
RET C
SPMOUSE MOUSEF.READ_STATE
BIT 0,A
RET Z
JR TUpMs2
TLineUp LD HL,(FileShift)
LD DE,(FileShift+2)
LD A,H
OR L
OR D
OR E
SCF
RET Z
CALL SearchUp
LD (FileShift),HL
LD (FileShift+2),DE
LD (TempShift),HL
LD (TempShift+2),DE
LD HL,EmptyLines
LD A,(HL)
DEC (HL)
OR A
JR NZ,TLineU1
INC (HL)
LD HL,(FVNextShift)
LD DE,(FVNextShift+2)
CALL SearchUp
LD (FVNextShift),HL
LD (FVNextShift+2),DE
TLineU1 CALL ScrollSCRdown
LD B,0x1C
CALL PutASCIIline ;‘®§¤ ¥¬ ¨ ¯¥ç â ¥¬ áâபã
CALL PrintVProc
OR A
RET
;[]----------------------------------------------------------[]
TLineDwnMs CALL TLineDwn
RET C
LD B,0x0A
TDnMs1 PUSH BC
SPMOUSE MOUSEF.READ_STATE
POP BC
BIT 0,A
RET Z
HALT
DJNZ TDnMs1
TDnMs2 CALL TLineDwn
RET C
SPMOUSE MOUSEF.READ_STATE
BIT 0,A
RET Z
JR TDnMs2
TLineDwn LD HL,(FVNextShift)
LD DE,(FVNextShift+2)
LD BC,(FileLenght)
OR A
SBC HL,BC
LD BC,(FileLenght+2)
EX DE,HL
SBC HL,BC
CCF
RET C
LD HL,(FileShift)
LD DE,(FileShift+2)
CALL SearchDown
LD (FileShift),HL
LD (FileShift+2),DE
LD HL,(FVNextShift)
LD DE,(FVNextShift+2)
LD (TempShift),HL
LD (TempShift+2),DE
CALL ScrollSCRup
LD B,0xDC
CALL PutASCIIline ;‘®§¤ ¥¬ ¨ ¯¥ç â ¥¬ áâபã
LD HL,(TempShift)
LD DE,(TempShift+2)
LD (FVNextShift),HL
LD (FVNextShift+2),DE
CALL PrintVProc
OR A
RET
;[]----------------------------------------------------------[]
TPageUpMs CALL TPageUp
RET C
LD B,0x0A
TUpMs1p PUSH BC
SPMOUSE MOUSEF.READ_STATE
POP BC
BIT 0,A
RET Z
HALT
DJNZ TUpMs1p
TUpMs2p CALL TPageUp
RET C
SPMOUSE MOUSEF.READ_STATE
BIT 0,A
RET Z
JR TUpMs2p
TPageUp LD HL,(FileShift)
LD DE,(FileShift+2)
LD A,H
OR L
OR D
OR E
SCF
RET Z
LD B,0x19
TPageU1 PUSH BC
CALL SearchUp
POP BC
JR C,TPageU2
DJNZ TPageU1
TPageU2 LD (FileShift),HL
LD (FileShift+2),DE
CALL PrnASCIIpage
OR A
RET
;[]----------------------------------------------------------[]
TPageDwnMs CALL TPageDwn
RET C
LD B,0x0A
TDnMs1p PUSH BC
SPMOUSE MOUSEF.READ_STATE
POP BC
BIT 0,A
RET Z
HALT
DJNZ TDnMs1p
TDnMs2p CALL TPageDwn
RET C
SPMOUSE MOUSEF.READ_STATE
BIT 0,A
RET Z
JR TDnMs2p
TPageDwn LD HL,(FVNextShift)
LD DE,(FVNextShift+2)
LD BC,(FileLenght)
OR A
SBC HL,BC
LD BC,(FileLenght+2)
EX DE,HL
SBC HL,BC
CCF
RET C
LD HL,(FVNextShift)
LD (FileShift),HL
LD HL,(FVNextShift+2)
LD (FileShift+2),HL
CALL PrnASCIIpage
OR A
RET
;[]----------------------------------------------------------[]
TBegFile LD HL,JUMPS.ResFire
PUSH HL
LD HL,(FileShift)
LD DE,(FileShift+2)
LD A,H
OR D
OR L
OR E
RET Z
LD HL,0x0000
LD (FileShift),HL
LD (FileShift+2),HL
CALL PrnASCIIpage
RET
;[]----------------------------------------------------------[]
TEndFile LD HL,JUMPS.ResFire
PUSH HL
LD HL,(FVNextShift)
LD DE,(FVNextShift+2)
LD BC,(FileLenght)
OR A
SBC HL,BC
LD BC,(FileLenght+2)
EX DE,HL
SBC HL,BC
RET NC
LD HL,(FileLenght)
LD DE,(FileLenght+2)
LD B,0x19
TEndFl1 PUSH BC
CALL SearchUp
POP BC
RET C
DJNZ TEndFl1
LD (FileShift),HL
LD (FileShift+2),DE
CALL PrnASCIIpage
RET
;[]==========================================================[]
SearchUp LD B,0xF0
LD A,D
OR E
JR NZ,.SearchUpBeg
LD A,H
OR A
JR NZ,.SearchUpBeg
OR L
SCF
RET Z
LD B,L
.SearchUpBeg
GETPORT WINSP.CPU1
PUSH AF
PUSH HL
PUSH DE
LD A,H ;‚뤥«ï¥¬ ­®¬¥à áâà ­¨æë
RLA
RL E
RLA
RL E
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,.L3
LD A,B
OR A
JR Z,.SrchUpEx
INC C
DEC B
DEC HL
BIT 6,H
JR NZ,.SrchUp1
DEC E
LD A,(DE)
SETPORT WINSP.CPU1,,0
SET 6,H
.SrchUp1 LD A,(HL)
.L3 CP 0x0D
JR Z,.SearchUpLp
DEC C
INC B
INC HL
BIT 7,H
JR Z,.SearchUpLp1
INC E
LD A,(DE)
SETPORT WINSP.CPU1,,0
RES 7,H
SET 6,H
JR .SearchUpLp1
.SearchUpLp LD A,B
OR A
JR Z,.SrchUpEx
.SearchUpLp1 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,.SrchUpEx
CP 0x0D
JR Z,.SrchUpEx
CP 0x09
JR NZ,.L1
ld a,7
add a,c
ld c,a
ld a,7
add a,IXL
ld IXL,a
ld a,b
sub 7
jr z,.SrchUpEx
jr c,.SrchUpEx
.L1 INC IXL
INC C
DJNZ .SearchUpLp1
.SrchUpEx POP DE
POP HL
LD B,0x00
OR A
SBC HL,BC
LD C,B
EX DE,HL
SBC HL,BC
EX DE,HL
POP AF
SETPORT WINSP.CPU1,,0
LD A,(ASCIImode)
OR A
RET NZ
LD A,IXL
CP 0x51
CCF
RET NC
LD C,0x50
.SrchUpEx0 ADD HL,BC
JR NC,.L2
INC DE
.L2 SUB 0x50
CP 0x51
JR NC,.SrchUpEx0
OR A
RET
;[]----------------------------------------------------------[]
SearchDown LD (SrchHL),HL
LD (SrchDE),DE
LD A,(ASCIImode)
OR A
LD B,0x50
JR Z,.L1
LD B,0xF0
.L1 PUSH BC
LD C,L
LD B,H
LD HL,(FileLenght)
OR A
SBC HL,BC
LD C,E
LD B,D
EX DE,HL
LD HL,(FileLenght+2)
SBC HL,BC
POP BC
RET C
JR NZ,.SearchDnBeg
LD A,D
OR A
JR NZ,.SearchDnBeg
OR E
SCF
RET Z
LD B,E
.SearchDnBeg
LD HL,0x0000
SrchHL EQU $-2
LD DE,0x0000
SrchDE EQU $-2
GETPORT WINSP.CPU1
PUSH AF
PUSH HL
PUSH DE
LD A,H ;‚뤥«ï¥¬ ­®¬¥à áâà ­¨æë
RLA
RL E
RLA
RL E
LD D,HIGH (PagesList)
LD A,(DE) ;’¥ª.áâà ­¨æ 
SETPORT WINSP.CPU1,,0
RES 7,H
SET 6,H
LD C,0x00
DEC HL
SearchDnLp 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 SearchDnLp
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 DE
POP HL
LD B,0x00
ADD HL,BC
LD C,B
EX DE,HL
ADC HL,BC
EX DE,HL
POP AF
SETPORT WINSP.CPU1,,0
OR A
RET
Table866: db 0x3F,0x3F,0x27,0x3F,0x22,0x3A,0xC5,0xD8
db 0x3F,0x25,0x3F,0x3C,0x3F,0x3F,0x3F,0x3F
db 0x3F,0x27,0x27,0x22,0x22,0x07,0x2D,0x2D
db 0x3F,0x54,0x3F,0x3E,0x3F,0x3F,0x3F,0x3F
db 0xFF,0xF6,0xF7,0x3F,0xFD,0x3F,0xB3,0x15
db 0xF0,0x63,0xF2,0x3C,0xBF,0x2D,0x52,0xF4
db 0xF8,0x2B,0x49,0x69,0x3F,0xE7,0x14,0xFA
db 0xF1,0xFC,0xF3,0x3E,0x3F,0x3F,0x3F,0xF5
db 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87
db 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F
db 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97
db 0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F
db 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7
db 0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF
db 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7
db 0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF
; koi8-r
TableKoi: db 0xC4,0xB3,0xDA,0xBF,0xC0,0xD9,0xC3,0xB4
db 0xC2,0xC1,0xC5,0xDF,0xDC,0xDB,0xDD,0xDE
db 0xB0,0xB1,0xB2,0xF4,0xFE,0xF9,0xFB,0xF7
db 0xF3,0xF2,0xFF,0xF5,0xF8,0xFD,0xFA,0xF6
db 0xCD,0xBA,0xD5,0xF1,0xD6,0xC9,0xB8,0xB7
db 0xBB,0xD4,0xD3,0xC8,0xBE,0xBD,0xBC,0xC6
db 0xC7,0xCC,0xB5,0xF0,0xB6,0xB9,0xD1,0xD2
db 0xCB,0xCF,0xD0,0xCA,0xD8,0xD7,0xCE,0xFC
db 0xEE,0xA0,0xA1,0xE6,0xA4,0xA5,0xE4,0xA3
db 0xE5,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE
db 0xAF,0xEF,0xE0,0xE1,0xE2,0xE3,0xA6,0xA2
db 0xEC,0xEB,0xA7,0xE8,0xED,0xE9,0xE7,0xEA
db 0x9E,0x80,0x81,0x96,0x84,0x85,0x94,0x83
db 0x95,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E
db 0x8F,0x9F,0x90,0x91,0x92,0x93,0x86,0x82
db 0x9C,0x9B,0x87,0x98,0x9D,0x99,0x97,0x9A