1082 lines
19 KiB
Plaintext
1082 lines
19 KiB
Plaintext
|
||
; LAST UPDATE: 31.05.2025 savelij
|
||
|
||
LineBuffer := WorkBuffer+0x300
|
||
|
||
;[]==========================================================[]
|
||
JP FileViewer
|
||
|
||
DZ FLEX_VERS.VIEWER
|
||
|
||
FileViewer CALL LoadFile
|
||
RET C
|
||
LD IX,ViewingFile
|
||
SUB A
|
||
LD (ViewMode),A
|
||
LD (ASCIIaddX),A
|
||
LD HL,0x0000
|
||
LD (FileShift),HL
|
||
LD (FileShift+2),HL
|
||
LD L,(IX+28)
|
||
LD H,(IX+29)
|
||
LD (FileLenght),HL
|
||
LD L,(IX+30)
|
||
LD H,(IX+31)
|
||
LD (FileLenght+2),HL
|
||
CALL InitViewScr
|
||
ViewerBegin CALL InitStatusLine
|
||
CALL InitVProc
|
||
CALL PrintVPage
|
||
ViewerLoop LD A,(ViewMode)
|
||
OR A
|
||
JR NZ,HViewLoop
|
||
TViewLoop LD IX,ASCIItab
|
||
CALL JUMPS.TestCoords
|
||
SPDSS DSSF.SCANKEY ;ަ¨¤ ¥¬ ¦ â¨ï ª« ¢¨è
|
||
JR Z,TViewLoop
|
||
LD A,E ;…-ASCII ª®¤
|
||
CP 0x1B ;Esc
|
||
JP Z,ViewerExit
|
||
OR A
|
||
JR NZ,TViewLoop ;†¤¥¬ äãªæ¨®.ª« ¢¨è¨
|
||
LD A,D
|
||
CP 0x44
|
||
JP Z,ViewerExit
|
||
LD HL,TViewLoop
|
||
PUSH HL
|
||
CP 0x3B
|
||
JP Z,About
|
||
CP 0x3C
|
||
JP Z,ChASCIImode
|
||
CP 0x3E
|
||
JP Z,ChViewer ;<3B>à®á¬®âà ¢ HEX
|
||
CP 0x42
|
||
JP Z,ChCodePage ;‘¬¥ ª®¤®¢®© áâà ¨æë WIN/DOS/KOI
|
||
CP 0x41
|
||
JP Z,FVPrintFile
|
||
CP 0x54
|
||
JP Z,ScrollLeft
|
||
CP 0x56
|
||
JP Z,ScrollRght
|
||
CP 87 ;Home
|
||
JP Z,THome
|
||
CP 81 ;End
|
||
JP Z,TEnd
|
||
CP 88 ;‘â५ª ¢¢¥àå
|
||
JP Z,TLineUp
|
||
CP 82 ;‘â५ª ¢¨§
|
||
JP Z,TLineDwn
|
||
CP 89 ;PageUp
|
||
JP Z,TPageUp
|
||
CP 83 ;PageDown
|
||
JP Z,TPageDwn
|
||
LD A,B
|
||
AND 0x30
|
||
CP 0x30
|
||
RET Z
|
||
BIT 5,B
|
||
RET Z
|
||
LD A,D
|
||
AND 0x7F
|
||
CP 0x57 ;Ctrl+PageUp
|
||
JP Z,TBegFile ;¢ ç «® ä ©«
|
||
CP 0x51 ;Ctrl+PageDown
|
||
JP Z,TEndFile ;¢ ª®¥æ ä ©«
|
||
CP 0x19 ;Ctrl+P
|
||
JP Z,FVPrintFile
|
||
RET
|
||
|
||
;--------------------------------------------------------------
|
||
HViewLoop LD IX,HEXtab
|
||
CALL JUMPS.TestCoords
|
||
SPDSS DSSF.SCANKEY ;ަ¨¤ ¥¬ ¦ â¨ï ª« ¢¨è
|
||
JR Z,HViewLoop
|
||
LD A,E ;…-ASCII ª®¤
|
||
CP 0x1B ;Esc
|
||
JP Z,ViewerExit
|
||
OR A
|
||
JR NZ,HViewLoop ;†¤¥¬ äãªæ¨®.ª« ¢¨è¨
|
||
LD A,D ;
|
||
CP 0x44 ;F10
|
||
JP Z,ViewerExit
|
||
LD HL,HViewLoop
|
||
PUSH HL
|
||
CP 0x3B
|
||
JP Z,About
|
||
CP 0x3E ;F4
|
||
JP Z,ChViewer ;<3B>à®á¬®âà ¢ ⥪áâ¥
|
||
CP 0x3F ;F5
|
||
JP Z,HGoTo ;<3B>¥à¥å®¤ ¤à¥á ¯®«ì§®¢ ⥫ï
|
||
CP 0x41
|
||
JP Z,FVPrintFile
|
||
CP 88 ;‘â५ª ¢¢¥àå
|
||
JP Z,FVHLineUp
|
||
CP 82 ;‘â५ª ¢¨§
|
||
JP Z,HLineDwn
|
||
CP 89 ;PageUp
|
||
JP Z,FVHPageUp
|
||
CP 83 ;PageDown
|
||
JP Z,HPageDwn
|
||
LD A,B
|
||
AND 0x30
|
||
CP 0x30
|
||
RET Z
|
||
BIT 5,B
|
||
RET Z
|
||
LD A,D
|
||
AND 0x7F
|
||
CP 0x57 ;Ctrl+PageUp
|
||
JP Z,HBegFile ;¢ ç «® ä ©«
|
||
CP 0x51 ;Ctrl+PageDown
|
||
JP Z,HEndFile ;¢ ª®¥æ ä ©«
|
||
CP 0x19 ;Ctrl+P
|
||
JP Z,FVPrintFile
|
||
RET
|
||
|
||
;[]----------------------------------------------------------[]
|
||
ChViewer LD HL,ViewerBegin
|
||
EX (SP),HL
|
||
SUB A
|
||
LD (ASCIIaddX),A
|
||
LD A,(ViewMode)
|
||
XOR 0x01
|
||
LD (ViewMode),A
|
||
RET NZ
|
||
LD HL,(FileShift)
|
||
LD DE,(FileShift+2)
|
||
INC HL
|
||
LD A,H
|
||
OR L
|
||
JR NZ,.L1
|
||
INC DE
|
||
.L1 CALL SearchUp
|
||
LD (FileShift),HL
|
||
LD (FileShift+2),DE
|
||
RET
|
||
|
||
;[]==========================================================[]
|
||
PrintVPage LD A,(ViewMode)
|
||
OR A
|
||
JP NZ,PrnHEXpage
|
||
JP PrnASCIIpage
|
||
|
||
;[]==========================================================[]
|
||
ViewingFile DUPL 0x30,0
|
||
ViewMode DEFB 0x00
|
||
ASCIImode DEFB 0x01
|
||
ASCIIaddX DEFB 0x00
|
||
EmptyLines DEFB 0x00
|
||
FileLenght DUPL 4,0 ; „«¨ ä ©« (32¡¨â)
|
||
FileShift DUPL 4,0 ; ‘¬¥é¥¨¥ ®â ç « ä ©« (32¡¨â)
|
||
TempShift DUPL 4,0 ; ‚६¥ ï ï祩ª ᬥ饨ï (32¡¨â)
|
||
FVNextShift DUPL 4,0 ; ‘«¥¤ãîé ï áâà ¨æ ¤«ï ASCII (32¡¨â)
|
||
FVMemIndef DEFB 0x00
|
||
FHandle DEFB 0x00
|
||
FVReadLen DUPL 4,0
|
||
|
||
;[]==========================================================[]
|
||
ViewerExit LD A,(FVMemIndef)
|
||
SPDSS DSSF.FREEMEM
|
||
OR A
|
||
RET
|
||
|
||
;[]==========================================================[]
|
||
LoadFile CALL JUMPS.SetClock
|
||
LD DE,ViewingFile
|
||
; SPDSS DSSF.F_FIRST,1,0x37
|
||
SPDSS DSSF.F_FIRST,1, DIR.M_Archive + \
|
||
DIR.M_Dir + \
|
||
DIR.M_System + \
|
||
DIR.M_Hidden + \
|
||
DIR.M_ReadOnly
|
||
PUSH AF
|
||
CALL C,JUMPS.DOSError
|
||
POP AF
|
||
JP C,LoadExit
|
||
; LD HL,ViewingFile+33
|
||
; LD A,(HL)
|
||
;LoadFl0 CALL FVCorrBigChar
|
||
; LD (HL),A
|
||
; INC HL
|
||
; LD A,(HL)
|
||
; OR A
|
||
; JR NZ,LoadFl0
|
||
LD IX,ViewingFile
|
||
LD H,(IX+28)
|
||
LD A,(IX+29)
|
||
LD E,(IX+30)
|
||
LD D,(IX+31)
|
||
LD L,0x00
|
||
SLA A
|
||
RL E
|
||
RL D
|
||
RL L
|
||
SLA A
|
||
RL E
|
||
RL D
|
||
RL L
|
||
OR H
|
||
LD H,0x00
|
||
EX DE,HL
|
||
JR Z,.L1
|
||
INC HL
|
||
.L1 LD A,H
|
||
OR L
|
||
JR NZ,LoadFl1
|
||
INC HL
|
||
LoadFl1 LD A,D
|
||
OR E
|
||
LD A,0x1E
|
||
PUSH AF
|
||
CALL NZ,JUMPS.DOSError ;!!!!!!!!!!!! <20>¥â ¯ ¬ïâ¨
|
||
POP AF
|
||
SCF
|
||
JP NZ,LoadExit
|
||
PUSH HL
|
||
SPDSS DSSF.INFOMEM
|
||
POP DE
|
||
LD L,C
|
||
LD H,B
|
||
OR A
|
||
SBC HL,DE
|
||
LD A,0x1E
|
||
PUSH DE
|
||
PUSH AF
|
||
CALL C,JUMPS.DOSError ;!!!!!!!!!!!! <20>¥â ¯ ¬ïâ¨
|
||
POP AF
|
||
POP DE
|
||
JP C,LoadExit
|
||
LD IX,ProcessView
|
||
LD (IX+PROC.MAXL1),E
|
||
LD (IX+PROC.MAXH1),D
|
||
SUB A
|
||
LD (IX+PROC.MAXL2),A
|
||
LD (IX+PROC.MAXH2),A
|
||
PUSH DE
|
||
CALL JUMPS.InitProcess
|
||
POP DE
|
||
LD B,E
|
||
SPDSS DSSF.GETMEM
|
||
LD (FVMemIndef),A
|
||
LD HL,PagesList
|
||
SPBIOS BIOSF.GETMEMBLKPAGES
|
||
MAKEWINDOW WINSUBOBJ.STORE
|
||
W_MAIN 160,88,320,48
|
||
W_FILL 4,2,312,10,COLORI.BLACK
|
||
W_TEXT 112,3,COLORI.WHITE,"FN File Viewer v\{FLEX_VERS.VIEWER}"
|
||
W_TEXT 8,16,COLORP.HIGHGRAY,"Reading:"
|
||
W_BORDER 16,28,288,12
|
||
W_FILL 18,29,284,10,COLORI.WHITE
|
||
W_END
|
||
SPDSS DSSF.CURDISK
|
||
LD HL,WorkBuffer
|
||
ADD A,"A"
|
||
LD (HL),A
|
||
INC HL
|
||
LD (HL),":"
|
||
INC HL
|
||
PUSH HL
|
||
SPDSS DSSF.CURDIR
|
||
POP HL
|
||
SUB A
|
||
.L2 INC HL
|
||
CP (HL)
|
||
JR NZ,.L2
|
||
DEC HL
|
||
LD A,0x5C
|
||
CP (HL)
|
||
INC HL
|
||
JR Z,.L3
|
||
LD (HL),A
|
||
INC HL
|
||
.L3 EX DE,HL
|
||
LD HL,ViewingFile+33
|
||
SUB A
|
||
.L4 LDI
|
||
CP (HL)
|
||
JR NZ,.L4
|
||
LD (DE),A
|
||
LD IX,0x0100
|
||
LD HL,WorkBuffer
|
||
LD DE,0x00D8
|
||
LD BC,0x0068
|
||
LD A,0x80
|
||
CALL JUMPS.PrnRangPathL
|
||
LD HL,ViewingFile+33
|
||
SPDSS DSSF.OPEN,,1
|
||
PUSH AF
|
||
CALL C,JUMPS.DOSError
|
||
POP AF
|
||
JP C,NoRead
|
||
LD (FHandle),A
|
||
LD IX,ViewingFile
|
||
LD L,(IX+28)
|
||
LD H,(IX+29)
|
||
LD (FVReadLen),HL
|
||
LD L,(IX+30)
|
||
LD H,(IX+31)
|
||
LD (FVReadLen+2),HL
|
||
SETPORT WINSP.Y_PORT,0xC0
|
||
GETPORT WINSP.CPU1
|
||
PUSH AF
|
||
LD HL,PagesList
|
||
LD A,(HL)
|
||
.ReadLp1 INC HL
|
||
PUSH HL
|
||
SETPORT WINSP.CPU1,,0
|
||
SPDSS DSSF.SCANKEY
|
||
LD HL,0x011B
|
||
OR A
|
||
SBC HL,DE
|
||
JP Z,ReadAbort
|
||
LD HL,(FVReadLen)
|
||
LD DE,(FVReadLen+2)
|
||
LD BC,0x4000
|
||
OR A
|
||
SBC HL,BC
|
||
LD B,0x00
|
||
EX DE,HL
|
||
SBC HL,BC
|
||
EX DE,HL
|
||
JR C,.ReadEnd
|
||
LD (FVReadLen),HL
|
||
LD (FVReadLen+2),DE
|
||
LD HL,0x4000
|
||
LD DE,0x4000
|
||
LD A,(FHandle)
|
||
SPDSS DSSF.READ
|
||
CALL FVNextProcess
|
||
POP HL
|
||
LD A,(HL)
|
||
CP 0xFF
|
||
JR NZ,.ReadLp1
|
||
POP AF
|
||
SETPORT WINSP.CPU1,,0
|
||
JR ReadExit
|
||
|
||
.ReadEnd LD HL,0x4000
|
||
LD DE,(FVReadLen)
|
||
LD A,D
|
||
OR E
|
||
JR Z,ReadEn1
|
||
LD A,(FHandle)
|
||
SPDSS DSSF.READ
|
||
CALL FVNextProcess
|
||
ReadEn1 POP HL
|
||
POP AF
|
||
SETPORT WINSP.CPU1,,0
|
||
ReadExit LD A,(FHandle)
|
||
SPDSS DSSF.CLOSE
|
||
OR A
|
||
LoadExit HALT
|
||
HALT
|
||
WINDOWCLOSE
|
||
PUSH AF
|
||
CALL JUMPS.SetMouse
|
||
POP AF
|
||
RET
|
||
|
||
ReadAbort POP HL
|
||
POP AF
|
||
SETPORT WINSP.CPU1,,0
|
||
NoRead LD A,(FVMemIndef)
|
||
SPDSS DSSF.FREEMEM
|
||
SCF
|
||
JR LoadExit
|
||
|
||
FVNextProcess LD IX,ProcessView
|
||
LD L,(IX+PROC.CURL1)
|
||
LD H,(IX+PROC.CURH1)
|
||
INC HL
|
||
LD (IX+PROC.CURL1),L
|
||
LD (IX+PROC.CURH1),H
|
||
LD A,H
|
||
OR L
|
||
JR NZ,.NextPr1
|
||
LD L,(IX+PROC.CURL2)
|
||
LD H,(IX+PROC.CURH2)
|
||
INC HL
|
||
LD (IX+PROC.CURL2),L
|
||
LD (IX+PROC.CURH2),H
|
||
.NextPr1 CALL JUMPS.PrnProcess
|
||
RET
|
||
|
||
;[]----------------------------------------------------------[]
|
||
ProcessView DEFW 0x00B2
|
||
DEFW 0x0075
|
||
DEFW 0x011C
|
||
DEFW 0x0000
|
||
DEFW 0x0000
|
||
DEFW 0x0000
|
||
DEFW 0x0000
|
||
DEFW 0x0000
|
||
DEFW 0x0000
|
||
DEFB 0x4F
|
||
|
||
;FVCorrBigChar CP 0x41
|
||
; RET C
|
||
; CP 0x5B
|
||
; JR NC,.CorrCh1
|
||
; SET 5,A
|
||
; RET
|
||
|
||
;.CorrCh1 CP 0x80
|
||
; RET C
|
||
; CP 0xA0
|
||
; RET NC
|
||
; SET 5,A
|
||
; CP 0x90
|
||
; RET C
|
||
; SET 6,A
|
||
; RES 4,A
|
||
; RET
|
||
|
||
;[]==========================================================[]
|
||
InitViewScr LD HL,FVFLen
|
||
LD B,0x10
|
||
LD A,0x20
|
||
.L1 LD (HL),A
|
||
INC HL
|
||
DJNZ .L1
|
||
LD HL,FVFClast
|
||
LD B,0x05
|
||
.L2 LD (HL),A
|
||
INC HL
|
||
DJNZ .L2
|
||
LD DE,FVFLen
|
||
LD IX,ViewingFile
|
||
LD L,(IX+28)
|
||
LD H,(IX+29)
|
||
LD C,(IX+30)
|
||
LD B,(IX+31)
|
||
CALL JUMPS.ConvNumTxt32
|
||
LD A,0x20
|
||
LD (DE),A
|
||
INC DE
|
||
LD HL,FVBytes
|
||
LD BC,0x0005
|
||
LDIR
|
||
LD DE,FVFData
|
||
CALL FVGetData
|
||
LD DE,FVFTime
|
||
CALL FVGetTime
|
||
LD L,(IX+26)
|
||
LD H,(IX+27)
|
||
LD DE,FVFClast
|
||
CALL JUMPS.ConvNumTxt16
|
||
LD HL,FVFAtributs
|
||
LD DE,FVFAttrib
|
||
LD C,(IX+32)
|
||
LD B,0x08
|
||
InitVS0 RL C
|
||
LD A,"-"
|
||
JR NC,.L3
|
||
LD A,(HL)
|
||
.L3 LD (DE),A
|
||
INC HL
|
||
INC DE
|
||
DJNZ InitVS0
|
||
MAKEWINDOW WINSUBOBJ.NOSTORE
|
||
W_MAIN 0,0,640,256
|
||
W_FILL 4,2,632,10,COLORI.BLACK
|
||
W_TEXT 8,3,COLORI.WHITE," FN File Viewer v\{FLEX_VERS.VIEWER}"
|
||
W_HORIZLINE 0,13,640
|
||
W_TEXT 8,17,COLORP.HIGHGRAY,"Viewing:"
|
||
W_VERTICLINE 574,16,10
|
||
W_HORIZLINE 0,27,640
|
||
W_HORIZLINE 0,227,640
|
||
W_FILL 0,28,640,200,COLORI.PANEL
|
||
W_TEXT 8,231,COLORP.HIGHGRAY,"Len: "
|
||
FVFLen EQU $ - STRLEN(" ") - 1
|
||
W_VERTICLINE 160,230,10
|
||
W_TEXT 172,231,COLORP.HIGHGRAY,"Create data: "
|
||
FVFData EQU $ - STRLEN(" ") - 1
|
||
FVFTime EQU $ - STRLEN(" ") - 1
|
||
W_VERTICLINE 336,230,10
|
||
W_TEXT 348,231,COLORP.HIGHGRAY,"First cluster: "
|
||
FVFClast EQU $ - STRLEN(" ") - 1
|
||
W_VERTICLINE 480,230,10
|
||
W_TEXT 492,231,COLORP.HIGHGRAY,"File attribute: "
|
||
FVFAttrib EQU $ - STRLEN(" ") - 1
|
||
W_END
|
||
SPDSS DSSF.CURDISK
|
||
LD HL,WorkBuffer
|
||
ADD A,"A"
|
||
LD (HL),A
|
||
INC HL
|
||
LD (HL),":"
|
||
INC HL
|
||
PUSH HL
|
||
SPDSS DSSF.CURDIR
|
||
POP HL
|
||
SUB A
|
||
.L4 INC HL
|
||
CP (HL)
|
||
JR NZ,.L4
|
||
DEC HL
|
||
LD A,0x5C
|
||
CP (HL)
|
||
INC HL
|
||
JR Z,.L5
|
||
LD (HL),A
|
||
INC HL
|
||
.L5 EX DE,HL
|
||
LD HL,ViewingFile+33
|
||
SUB A
|
||
.L6 LDI
|
||
CP (HL)
|
||
JR NZ,.L6
|
||
LD (DE),A
|
||
LD IX,0x0200
|
||
LD HL,WorkBuffer
|
||
LD DE,0x0034
|
||
LD BC,0x0011
|
||
LD A,0x80
|
||
CALL JUMPS.PrnRangPathL
|
||
LD HL,0x01FC
|
||
LD DE,0x0003
|
||
LD B,0x08
|
||
EXX
|
||
LD HL,0x022E
|
||
LD DE,0x0003
|
||
LD B,0x08
|
||
EXX
|
||
LD A,0x02
|
||
CALL JUMPS.SetCMOSPrint
|
||
RET
|
||
|
||
FVFAtributs DEFB "--ad-shr"
|
||
|
||
;„ â
|
||
FVGetData EX DE,HL
|
||
LD A,(IX+24)
|
||
AND 0x1F
|
||
CALL FVGet8Bit
|
||
LD (HL),"."
|
||
INC HL
|
||
LD A,(IX+24)
|
||
LD C,(IX+25)
|
||
LD B,5
|
||
.L1 SRL C
|
||
RRA
|
||
DJNZ .L1
|
||
AND 0x0F
|
||
CALL FVGet8Bit
|
||
LD (HL),"."
|
||
INC HL
|
||
LD A,(IX+25) ;ƒ®¤
|
||
SRL A
|
||
ADD A,80
|
||
.L2 SUB 100
|
||
JR NC,.L2
|
||
ADD A,100 ;ƒ®¤
|
||
CALL FVGet8Bit
|
||
EX DE,HL
|
||
RET
|
||
|
||
;∴•
|
||
FVGetTime EX DE,HL
|
||
LD A,(IX+23) ;— áë
|
||
AND 0xF8
|
||
RRA
|
||
RRA
|
||
RRA
|
||
CALL FVGet8Bit
|
||
LD (HL),":"
|
||
INC HL
|
||
LD A,(IX+22)
|
||
LD C,(IX+23)
|
||
LD B,5
|
||
.L1 SRL C
|
||
RRA
|
||
DJNZ .L1
|
||
AND 0x3F
|
||
CALL FVGet8Bit
|
||
EX DE,HL
|
||
RET
|
||
|
||
FVGet8Bit LD B,0x2F
|
||
.L1 INC B
|
||
SUB 10
|
||
JR NC,.L1
|
||
ADD A,10
|
||
LD (HL),B
|
||
INC HL
|
||
ADD A,"0"
|
||
LD (HL),A
|
||
INC HL
|
||
RET
|
||
|
||
FVBytes DEFB "bytes"
|
||
|
||
;[]==========================================================[]
|
||
InitStatusLine LD A,(ViewMode)
|
||
OR A
|
||
JP NZ,HEXstatus
|
||
ASCIIstatus LD HL,UnWrapT
|
||
LD DE,0x005E
|
||
LD A,(ASCIImode)
|
||
OR A
|
||
JR Z,.L1
|
||
LD HL,WrapT
|
||
LD DE,0x0064
|
||
.L1 LD (ASCIIx),DE
|
||
LD DE,ASCIIm
|
||
LD BC,0x0009
|
||
LDIR
|
||
CALL InitCodePage
|
||
MAKEWINDOW WINSUBOBJ.WOBIND
|
||
W_HORIZLINE 0,241,640
|
||
W_FILL 2,243,636,12,COLORI.HIGHGRAY
|
||
W_HORIZLINE 2,255,638
|
||
W_BUTTON 0,242,80,14
|
||
W_TEXT 18,245,COLORP.HIGHGRAY,"F1 About"
|
||
W_BUTTON 80,242,80,14
|
||
W_TEXT 94,245,COLORP.HIGHGRAY,"F2 UnWrap"
|
||
ASCIIx: EQU $ - STRLEN("F2 UnWrap") - 6
|
||
ASCIIm: EQU $ - STRLEN("F2 UnWrap") - 1
|
||
W_BUTTON 160,242,80,14
|
||
W_TEXT 184,245,COLORP.HIGHGRAY,"F4 Hex"
|
||
W_BUTTON 400,242,80,14
|
||
W_TEXT 422,245,COLORP.HIGHGRAY,"F7 Print"
|
||
W_BUTTON 480,242,80,14
|
||
W_TEXT 504,245,COLORP.HIGHGRAY,"F8 DOS"
|
||
ASCIIenc: EQU $ - STRLEN("DOS") - 1
|
||
W_BUTTON 560,242,80,14
|
||
W_TEXT 580,245,COLORP.HIGHGRAY,"F10 Quit"
|
||
W_END
|
||
RET
|
||
|
||
UnWrapT DEFB "F2 UnWrap"
|
||
WrapT DEFB "F2 Wrap "
|
||
EncDos: DEFB "DOS"
|
||
EncWin: DEFB "WIN"
|
||
EncKoi: DEFB "KOI"
|
||
|
||
HEXstatus
|
||
MAKEWINDOW WINSUBOBJ.WOBIND
|
||
W_HORIZLINE 0,241,640
|
||
W_FILL 2,243,636,12,COLORI.HIGHGRAY
|
||
W_HORIZLINE 2,255,638
|
||
W_BUTTON 0,242,80,14
|
||
W_TEXT 18,245,COLORP.HIGHGRAY,"F1 About"
|
||
W_BUTTON 160,242,80,14
|
||
W_TEXT 182,245,COLORP.HIGHGRAY,"F4 ASCII"
|
||
W_BUTTON 240,242,80,14
|
||
W_TEXT 258,245,COLORP.HIGHGRAY,"F5 Go to"
|
||
W_BUTTON 400,242,80,14
|
||
W_TEXT 422,245,COLORP.HIGHGRAY,"F7 Print"
|
||
W_BUTTON 560,242,80,14
|
||
W_TEXT 580,245,COLORP.HIGHGRAY,"F10 Quit"
|
||
W_END
|
||
RET
|
||
|
||
;[]==========================================================[]
|
||
About
|
||
MAKEWINDOW WINSUBOBJ.STORE
|
||
W_MAIN 160,72,320,85
|
||
W_FILL 4,2,312,10,COLORP.BLACK
|
||
W_TEXT 144,3,COLORI.WHITE,"About"
|
||
W_TEXT 96,18,COLORP.HIGHGRAY,"Flex Navigator File Viewer"
|
||
W_TEXT 144,28,COLORP.HIGHGRAY,"v\{FLEX_VERS.VIEWER}"
|
||
W_TEXT 18,40,COLORP.HIGHGRAY,"Programming: (C)2000 Enin Anton"
|
||
W_TEXT 92,50,COLORP.HIGHGRAY,"(C)2021 Mikhaltchenkov Dmitry"
|
||
W_BUTTON 124,66,72,14
|
||
W_TEXT 154,69,COLORP.HIGHGRAY,"Ok"
|
||
W_END
|
||
AboutLoop LD IX,FVAboutTab
|
||
CALL JUMPS.TestCoords
|
||
SPDSS DSSF.SCANKEY
|
||
JR Z,AboutLoop
|
||
LD A,B
|
||
OR A
|
||
JR NZ,AboutLoop
|
||
LD A,E
|
||
CP 0x1B
|
||
JR Z,AboutExt
|
||
CP 0x0D
|
||
JR Z,AboutExt
|
||
RES 5,A
|
||
CP "O"
|
||
JR NZ,AboutLoop
|
||
AboutExt
|
||
WINDOWCLOSE
|
||
RET
|
||
|
||
;[]==========================================================[]
|
||
ScrollSCRup LD DE,0x241C
|
||
JR ScrlSCRDnUp
|
||
|
||
ScrollSCRdown LD DE,0x1C24
|
||
;<3B> ¢å®¤:
|
||
; D - Y ®âªã¤
|
||
; … - Y ªã¤
|
||
ScrlSCRDnUp DI
|
||
PUSH DE
|
||
SPMOUSE MOUSEF.REFRESH
|
||
POP DE
|
||
GETPORT WINSP.CPU1
|
||
PUSH AF
|
||
SETPORT WINSP.CPU1,0x50
|
||
LD HL,0x4000
|
||
LD BC,320
|
||
ACCEL ACCELCMD.SET_BUFFER
|
||
LD A,0xC0
|
||
ACCEL ACCELCMD.OFF
|
||
ScSCRN1 LD A,D
|
||
SETPORT WINSP.Y_PORT,,0
|
||
ACCEL ACCELCMD.COPY_VERT
|
||
LD A,(HL)
|
||
ACCEL ACCELCMD.OFF
|
||
LD A,E
|
||
SETPORT WINSP.Y_PORT,,0
|
||
ACCEL ACCELCMD.COPY_VERT
|
||
LD (HL),A
|
||
ACCEL ACCELCMD.OFF
|
||
INC HL
|
||
DEC BC
|
||
LD A,B
|
||
OR C
|
||
JR NZ,ScSCRN1
|
||
POP AF
|
||
SETPORT WINSP.CPU1,,0
|
||
EI
|
||
RET
|
||
|
||
;[]==========================================================[]
|
||
InitFPages PUSH HL
|
||
LD DE,(TempShift)
|
||
LD HL,(TempShift+2)
|
||
LD A,D ;‚뤥«ï¥¬ ®¬¥à áâà ¨æë
|
||
RLA
|
||
RL L
|
||
RLA
|
||
RL L
|
||
LD A,L
|
||
EXX
|
||
LD E,A ;DE - €¤à¥á áâà ¨æë ¢ ᯨ᪥
|
||
LD D,HIGH (PagesList)
|
||
LD A,(DE) ;’¥ª.áâà ¨æ
|
||
SETPORT WINSP.CPU1,,0
|
||
EXX
|
||
RES 7,D ;‚ª«.á 0x4000
|
||
SET 6,D
|
||
POP HL
|
||
RET
|
||
|
||
TestFPages BIT 7,D
|
||
RET Z
|
||
RES 7,D
|
||
SET 6,D
|
||
EXX
|
||
INC E ;DE - €¤à¥á áâà ¨æë ¢ ᯨ᪥
|
||
LD A,(DE) ;’¥ª.áâà ¨æ
|
||
SETPORT WINSP.CPU1,,0
|
||
EXX
|
||
RET
|
||
|
||
GetFPages PUSH HL
|
||
RES 6,D
|
||
EXX
|
||
LD A,E
|
||
EXX
|
||
BIT 7,D
|
||
RES 7,D
|
||
JR Z,.L1
|
||
INC A
|
||
.L1 LD L,A
|
||
SUB A
|
||
LD H,A
|
||
SRL L
|
||
RRA
|
||
SRL L
|
||
RRA
|
||
OR D
|
||
LD D,A
|
||
LD (TempShift),DE
|
||
LD (TempShift+2),HL
|
||
POP HL
|
||
RET
|
||
|
||
;[]==========================================================[]
|
||
;<3B>à®æ¥¤ãà ¨¨æ¨ «¨§ æ¨ï â ¡«¨æë ¯à®æ¥â®¢
|
||
InitVProc LD A,0x01
|
||
LD (ProcFlag),A ;”« £ ¢ë¢®¤ ¯à®æ¥â®¢
|
||
LD A,(ViewMode)
|
||
OR A
|
||
JR NZ,InProcHex
|
||
;<3B>à®æ¥âë ¤«ï TextWrap
|
||
InProcASCII LD HL,(FileLenght)
|
||
LD DE,(FileLenght+2)
|
||
LD B,0x19
|
||
InProcA PUSH BC
|
||
CALL SearchUp
|
||
POP BC
|
||
RET C
|
||
DJNZ InProcA
|
||
JR InitProc
|
||
|
||
;<3B>à®æ¥âë ¤«ï Hex
|
||
InProcHex LD HL,(FileLenght)
|
||
LD DE,(FileLenght+2)
|
||
LD BC,0x0190
|
||
OR A
|
||
SBC HL,BC
|
||
LD BC,0x0000
|
||
EX DE,HL
|
||
SBC HL,BC
|
||
EX DE,HL
|
||
RET C
|
||
LD A,H
|
||
OR L
|
||
OR D
|
||
OR E
|
||
RET Z
|
||
;<3B>à®æ¥¤ãà ¨¨æ¨ «¨§ 樨 â ¡«¨æë ¯à®æ¥â®¢
|
||
;<3B> ¢å®¤:
|
||
; DE+HL - „«¨ ä ©« -1áâà ¨æ
|
||
InitProc PUSH HL
|
||
PUSH DE
|
||
EX DE,HL
|
||
LD BC,100 ;„«¨ ä ©« /100 (%)
|
||
CALL JUMPS.Divis32
|
||
LD (Coeff1+1),DE ;<3B>®«ãç ¥¬ ª®«-¢® ¡ ©â
|
||
LD (Coeff2+1),HL ;®¤¨ ¯à®æ¥â
|
||
LD IX,ProcentTab
|
||
LD HL,0x0000
|
||
LD E,L
|
||
LD D,H
|
||
LD BC,0x6300 ;ƒ¥¥à¨¬ â ¡«¨æã
|
||
LD (IX+0x00),L
|
||
INC IX
|
||
LD (IX+0x00),H
|
||
INC IX
|
||
LD (IX+0x00),E
|
||
INC IX
|
||
LD (IX+0x00),D
|
||
INC IX
|
||
LD (IX+0x00),C
|
||
INC IX
|
||
INC C
|
||
;¤«ï ª ¦¤®£® ¯à®æ¥â
|
||
CoeffLoop PUSH BC
|
||
Coeff1 LD BC,0x0000
|
||
ADD HL,BC
|
||
LD (IX+0x00),L
|
||
INC IX
|
||
LD (IX+0x00),H
|
||
INC IX
|
||
EX DE,HL
|
||
Coeff2 LD BC,0x0000
|
||
ADC HL,BC
|
||
EX DE,HL
|
||
POP BC
|
||
LD (IX+0x00),E
|
||
INC IX
|
||
LD (IX+0x00),D
|
||
INC IX
|
||
LD (IX+0x00),C
|
||
INC IX
|
||
INC C
|
||
DJNZ CoeffLoop
|
||
POP DE
|
||
POP HL
|
||
LD (IX+0x00),L ;Œ ªá.¯à®æ¥â
|
||
INC IX
|
||
LD (IX+0x00),H
|
||
INC IX
|
||
LD (IX+0x00),E
|
||
INC IX
|
||
LD (IX+0x00),D
|
||
INC IX
|
||
LD (IX+0x00),C
|
||
SUB A
|
||
LD (ProcFlag),A
|
||
RET
|
||
|
||
;[]----------------------------------------------------------[]
|
||
;<3B>à®æ¥¤ãà ¯à®áç¥â ¨ ¯¥ç ⨠¯à®æ¥â®
|
||
PrintVProc LD HL,PutProcent
|
||
PUSH HL ;‚ë室¨¬ ¯¥ç âì
|
||
LD A,(ProcFlag)
|
||
OR A
|
||
LD A,100
|
||
RET NZ ;“¦¥ ¢á¥ 100%
|
||
LD IX,ProcentTab+250 ;‘¥à¨¤¨ â ¡«¨æë ¯à®æ.50%
|
||
LD HL,(FileShift) ;’¥ªã饥 ᬥ饨¥
|
||
LD DE,(FileShift+2)
|
||
CALL TestProcent ;‚ ª ª®© ¯®«®¢¨¥ 室.?
|
||
JR C,LowTest ;<50%
|
||
LD A,(IX+0x04)
|
||
RET Z ;=50%
|
||
LD IX,ProcentTab+375 ;’ ¡«¨æ á 75%
|
||
CALL TestProcent ;‚ ª ª®© ¯®«®¢¨¥ 室.?
|
||
JR C,Test2 ;50%<X<75%
|
||
;<3B>à®æ¥¤ãà ¯®¨áª ¯à®æ¥â ¢¢¥àå ¯® â ¡«¨æ¥
|
||
Test1 LD A,(IX+0x04) ;’¥ªã騩 ¯à®æ¥â
|
||
RET Z ;X=%
|
||
RET C ;X<%
|
||
CP 100 ;Š®¥çë© ¯à®æ¥â
|
||
RET Z
|
||
LD BC,0x0005 ;ˆé¥¬ ¢¢¥àå ¯® â ¡«¨æ¥
|
||
ADD IX,BC ;<3B>ã¦ë© ¯à®æ¥â
|
||
CALL TestProcent
|
||
JR Test1
|
||
|
||
;<3B>à®æ¥¤ãà ¯®¨áª ¯à®æ¥â ¢¨§ ¯® â ¡«¨æ¥
|
||
Test2 LD A,(IX+0x04) ;’¥ªã騩 ¯à®æ¥â
|
||
RET Z ;X=%
|
||
RET NC ;X>%
|
||
OR A
|
||
RET Z
|
||
LD BC,-0x0005 ;ˆé¥¬ ¢¨§ ¯® â ¡«¨æ¥
|
||
ADD IX,BC ;<3B>ã¦ë© ¯à®æ¥â
|
||
CALL TestProcent
|
||
JR Test2
|
||
|
||
;X<50%
|
||
LowTest LD IX,ProcentTab+125 ;’ ¡«¨æ á 25%
|
||
CALL TestProcent ;‚ ª ª®© ¯®«®¢¨¥ 室.?
|
||
JR C,Test2 ;01%<X<25%
|
||
JR Test1 ;25%<X<50%
|
||
|
||
;<3B>à®æ¥¤ãà â¥áâ¨à®¢ ¨ï ⥪ã饣® ᬥ饨ï
|
||
;<3B> ¢å®¤:
|
||
; DE+HL - ’¥ªã饥 ᬥ饨¥
|
||
;<3B> ¢ë室:
|
||
; Z - ’¥ª.ᬥé=¯à®æ¥â
|
||
; C - ’¥ª.ᬥé<¯à®æ¥â
|
||
; NC - ’¥ª.ᬥé>¯à®æ¥â
|
||
TestProcent PUSH HL
|
||
PUSH DE
|
||
PUSH BC
|
||
LD C,(IX+0x00)
|
||
LD B,(IX+0x01)
|
||
OR A
|
||
SBC HL,BC
|
||
EX DE,HL
|
||
LD C,(IX+0x02)
|
||
LD B,(IX+0x03)
|
||
SBC HL,BC
|
||
JR NZ,.L1
|
||
LD A,D
|
||
OR E
|
||
.L1 POP BC
|
||
POP DE
|
||
POP HL
|
||
RET
|
||
|
||
;<3B>à®æ¥¤ãà ¢ë¢®¤ ¯à®æ¥â®¢
|
||
PutProcent LD HL,ProcText
|
||
PUSH HL
|
||
LD BC,0x2F00
|
||
.L1 INC B
|
||
SUB 100
|
||
JR NC,.L1
|
||
ADD A,100
|
||
EX AF,AF'
|
||
LD A,B
|
||
CP "0"
|
||
JR Z,.L2
|
||
SET 0,C
|
||
.L2 BIT 0,C
|
||
JR NZ,.L3
|
||
LD A,0x20
|
||
.L3 LD (HL),A
|
||
INC HL
|
||
EX AF,AF'
|
||
LD B,0x2F
|
||
.L4 INC B
|
||
SUB 10
|
||
JR NC,.L4
|
||
ADD A,10
|
||
EX AF,AF'
|
||
LD A,B
|
||
CP "0"
|
||
JR Z,.L5
|
||
SET 0,C
|
||
.L5 BIT 0,C
|
||
JR NZ,.L6
|
||
LD A,0x20
|
||
.L6 LD (HL),A
|
||
INC HL
|
||
EX AF,AF'
|
||
ADD A,"0"
|
||
LD (HL),A
|
||
POP HL
|
||
LD DE,0x0250
|
||
LD BC,0x0011
|
||
LD A,0x80
|
||
CALL JUMPS.PrnTxtLnNorm
|
||
RET
|
||
|
||
InitCodePage: LD A,0
|
||
CodePage EQU $-1
|
||
LD L,A
|
||
LD H,0
|
||
ADD HL,HL
|
||
ADD A,L
|
||
LD L,A
|
||
LD DE,EncDos
|
||
ADD HL,DE
|
||
LD DE,ASCIIenc
|
||
LD BC,3
|
||
LDIR
|
||
LD A, (CodePage)
|
||
AND A
|
||
JR NZ,.next
|
||
LD HL,0
|
||
.call: LD (PutLine2),A
|
||
LD (PutLine2 + 1),HL
|
||
RET
|
||
|
||
.next: DEC A
|
||
LD HL,Table866
|
||
JR Z,.next1
|
||
LD HL,TableKoi
|
||
.next1: LD (DecodeSymbol.table),HL
|
||
LD HL,DecodeSymbol
|
||
LD A, 0xCD
|
||
JR .call
|
||
|
||
ProcText DEFB " %",0
|
||
ProcFlag DEFB 0x00
|
||
ProcentTab DUPL 505,0
|
||
|
||
;[]==========================================================[]
|
||
include fvtext.a80
|
||
include fvhex.a80
|
||
include fvprn.a80
|
||
|
||
;[]==========================================================[]
|
||
ASCIItab: DEFW 0x0050,0x0230,0x001C,0x007F,0x00,0x0000,TLineUpMs,TBegFile
|
||
DEFW 0x0050,0x0230,0x0080,0x00E4,0x00,0x0000,TLineDwnMs,TEndFile
|
||
DEFW 0x0000,0x0050,0x001C,0x00E4,0x00,0x0000,TPageUpMs,ScrollLeft
|
||
DEFW 0x0230,0x0280,0x001C,0x00E4,0x00,0x0000,TPageDwnMs,ScrollRght
|
||
DEFW 0x0000,0x0050,0x00F2,0x0100,0x01,0x0000,About,0x0000
|
||
DEFW 0x0050,0x00A0,0x00F2,0x0100,0x01,0x0000,ChASCIImode,0x0000
|
||
DEFW 0x00A0,0x00F0,0x00F2,0x0100,0x01,0x0000,ChViewer,0x0000
|
||
DEFW 0x0190,0x01E0,0x00F2,0x0100,0x01,0x0000,ChCodePage,0x0000
|
||
DEFW 0x01E0,0x0230,0x00F2,0x0100,0x01,0x0000,FVPrintFile,0x0000
|
||
DEFW 0x0230,0x0280,0x00F2,0x0100,0x21,0x0000,ViewerExit,0x0000
|
||
DEFW 0x8000
|
||
|
||
HEXtab: DEFW 0x0050,0x0230,0x001C,0x007F,0x00,0x0000,HLineUpMs,HBegFile
|
||
DEFW 0x0050,0x0230,0x0080,0x00E4,0x00,0x0000,HLineDwnMs,HEndFile
|
||
DEFW 0x0000,0x0050,0x001C,0x00E4,0x00,0x0000,HPageUpMs,0x0000
|
||
DEFW 0x0230,0x0280,0x001C,0x00E4,0x00,0x0000,HPageDwnMs,0x0000
|
||
DEFW 0x0000,0x0050,0x00F2,0x0100,0x01,0x0000,About,0x0000
|
||
DEFW 0x00A0,0x00F0,0x00F2,0x0100,0x01,0x0000,ChViewer,0x0000
|
||
DEFW 0x00F0,0x0140,0x00F2,0x0100,0x01,0x0000,HGoTo,0x0000
|
||
DEFW 0x01E0,0x0230,0x00F2,0x0100,0x01,0x0000,FVPrintFile,0x0000
|
||
DEFW 0x0230,0x0280,0x00F2,0x0100,0x21,0x0000,ViewerExit,0x0000
|
||
DEFW 0x8000
|
||
|
||
FVAboutTab: DEFW 0x011C,0x0164,0x008A,0x0098,0x21,0x0000,AboutExt,0x0000
|
||
DEFW 0x0000,0x00A0,0x0000,0x0100,0x20,0x0000,AboutExt,0x0000
|
||
DEFW 0x01E0,0x0280,0x0000,0x0100,0x20,0x0000,AboutExt,0x0000
|
||
DEFW 0x0000,0x0280,0x0000,0x0048,0x20,0x0000,AboutExt,0x0000
|
||
DEFW 0x0000,0x0280,0x009D,0x0100,0x20,0x0000,AboutExt,0x0000
|
||
DEFW 0x8000
|
||
;[]==========================================================[]
|