flex_nav/fnwork.a80
savelij13 499aa7968d - исправлена проверка запускаемого файла по расширению.
- доки переведены на UTF8 кодировку.
- поправлена CorrBigChar.
2025-06-24 21:36:47 +03:00

2085 lines
33 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: 24.06.2025 savelij
;[]===========================================================[]
CursUp LD A,(IY + PANEL.EFL)
OR (IY + PANEL.EFH)
RET Z
LD L,(IY + PANEL.CFL)
LD H,(IY + PANEL.CFH)
LD A,H
OR L
JR NZ,CursUp1
LD A,(IY + PANEL.FFL)
OR (IY + PANEL.FFH)
RET Z
JR ScrlDn1
CursUp1 DEC HL
PUSH HL
CALL ResInvert
POP HL
LD (IY + PANEL.CFL),L
LD (IY + PANEL.CFH),H
CALL SetInvert
JP PrnFileInfo
ScrollDown: LD A,(IY + PANEL.EFL)
OR (IY + PANEL.EFH)
RET Z
LD A,(IY + PANEL.FFL)
OR (IY + PANEL.FFH)
RET Z
ScrlDn1 BIT VIEWFLAG.B_FULL,(IY + PANEL.VIEWFLAG)
JP NZ,ScrlDnP
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
JP NZ,ScrlDnT
GETPORT WINSP.CPU1
PUSH AF
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
LD A,(RAMPAGES.LEFTPANEL)
JR Z,.L1
LD A,(RAMPAGES.RIGHTPANEL)
.L1
SETPORT WINSP.CPU1,,0
LD L,(IY + PANEL.EFL)
LD H,(IY + PANEL.EFH)
ADD HL,HL ; *2
ADD HL,HL ; *4
ADD HL,HL ; *8
LD E,L
LD D,H
ADD HL,HL ; *10
ADD HL,DE ; *18
SET 6,H ; | 0x4000 -  ¤à¥á ­ ç «  áâà ­¨æë
PUSH HL
POP IX
LD L,(IY + PANEL.FFL)
LD H,(IY + PANEL.FFH)
DEC HL
ADD HL,HL ; *2
ADD HL,HL ; *4
ADD HL,HL ; *8
LD E,L
LD D,H
ADD HL,HL ; *10
ADD HL,DE ; *18
SET 6,H ; | 0x4000 -  ¤à¥á ­ ç «  áâà ­¨æë
LD DE,WorkBuffer
LD BC,FileHDR.Attr
PUSH HL
LDIR
POP HL
LD DE,0x18*0x11
ADD HL,DE
LD E,IXL
LD D,IXH
OR A
SBC HL,DE
ADD HL,DE
JR C,.L2
EX DE,HL
.L2 LD DE,WorkBuffer+0x10
LD C,0x0E
PUSH HL
LDIR
POP HL
LD DE,0x18*0x11
ADD HL,DE
LD E,IXL
LD D,IXH
OR A
SBC HL,DE
ADD HL,DE
JR C,.L3
EX DE,HL
.L3 LD DE,WorkBuffer+0x20
LD C,0x0E
LDIR
POP AF
SETPORT WINSP.CPU1,,0
LD B,COLORP.PANEL + COLORI.FILES
LD C,COLORP.PANEL + COLORI.SELECTFILES
CALL InsPrnColor
CALL ResInvert
PUSH IY
GETPORT WINSP.Y_PORT ; ‘®å࠭塞 Y ¯®àâ
LD C,A
GETPORT WINSP.CPU1
LD B,A
PUSH BC
SETPORT WINSP.CPU1,0x50
LD L,(IY + PANEL.XL)
LD H,(IY + PANEL.XH)
LD DE,6
ADD HL,DE
LD DE,63 << 8 | 71
LD BC,128 << 8 | 46
PUSH HL
CALL ScrollDIRDownUp
POP DE
LD HL,WorkBuffer+0x01
LD BC,12 << 8 | 63
LD A,(HL)
DEC HL
OR A
PUSH DE
CALL NZ,PrintName
POP HL
LD DE,104
ADD HL,DE
LD DE,63 << 8 | 71
LD BC,128 << 8 | 46
PUSH HL
CALL ScrollDIRDownUp
POP DE
LD HL,WorkBuffer+0x11
LD BC,12 << 8 | 63
LD A,(HL)
DEC HL
OR A
PUSH DE
CALL NZ,PrintName
POP HL
LD DE,0x0068
ADD HL,DE
LD DE,63 << 8 | 71
LD BC,128 << 8 | 46
PUSH HL
CALL ScrollDIRDownUp
POP DE
LD HL,WorkBuffer+0x21
LD BC,12 << 8 | 63
LD A,(HL)
DEC HL
OR A
CALL NZ,PrintName
POP BC
LD A,B
SETPORT WINSP.CPU1,,0
LD A,C
SETPORT WINSP.Y_PORT,,0
POP IY
LD L,(IY + PANEL.FFL)
LD H,(IY + PANEL.FFH)
DEC HL
LD (IY + PANEL.FFL),L
LD (IY + PANEL.FFH),H
CALL SetInvert
CALL PrnFileInfo
PUSH IY
POP IX
LD DE,PANEL.BARXL
ADD IX,DE
JP PrnHScrBar
ScrlDnP
GETPORT WINSP.CPU1
PUSH AF
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
LD A,(RAMPAGES.LEFTPANEL)
JR Z,.L1
LD A,(RAMPAGES.RIGHTPANEL)
.L1
SETPORT WINSP.CPU1,,0
LD L,(IY + PANEL.FFL)
LD H,(IY + PANEL.FFH)
DEC HL
ADD HL,HL ; *2
ADD HL,HL ; *4
ADD HL,HL ; *8
LD E,L
LD D,H
ADD HL,HL ; *10
ADD HL,DE ; *18
SET 6,H ; | 0x4000
LD DE,WorkBuffer
LD BC,FileHDR.SIZE
LDIR
POP AF
SETPORT WINSP.CPU1,,0
LD IX,WorkBuffer
LD HL,WorkBuffer
LD DE,WorkBuffer+0x200
LD BC,0x000D
LDIR
LD A,0x01
LD (DE),A
INC DE
BIT DIR.B_Dir,(IX + FileHDR.Attr)
CALL NZ,PutDIRTxt
CALL Z,GetFileLen
LD A,0x01
LD (DE),A
INC DE
CALL GetData
LD A,0x01
LD (DE),A
INC DE
CALL GetTime
LD B,COLORP.PANEL + COLORI.FILES
LD C,COLORP.PANEL + COLORI.SELECTFILES
CALL InsPrnColor
CALL ResInvert
PUSH IY
GETPORT WINSP.Y_PORT ; ‘®å࠭塞 Y ¯®àâ
LD C,A
GETPORT WINSP.CPU1
LD B,A
PUSH BC
SETPORT WINSP.CPU1,0x50
LD L,(IY+PANEL.XL)
LD H,(IY+PANEL.XH)
LD DE,4
ADD HL,DE
LD DE,63 << 8 | 71
LD BC,136 << 8 + 144
PUSH HL
CALL ScrollDIRDownUp
POP DE
LD HL,WorkBuffer+0x200
LD BC,38 << 8 + 63
CALL PrintName
POP BC
LD A,B
SETPORT WINSP.CPU1,,0
LD A,C
SETPORT WINSP.Y_PORT,,0
POP IY
LD L,(IY+PANEL.FFL)
LD H,(IY+PANEL.FFH)
DEC HL
LD (IY+PANEL.FFL),L
LD (IY+PANEL.FFH),H
CALL SetInvert
CALL PrnFileInfo
PUSH IY
POP IX
LD DE,PANEL.BARXL
ADD IX,DE
JP PrnVScrBar
ScrlDnT
GETPORT WINSP.CPU1
PUSH AF
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
LD A,(RAMPAGES.LEFTPANEL)
JR Z,.L1
LD A,(RAMPAGES.RIGHTPANEL)
.L1
SETPORT WINSP.CPU1,,0
LD HL,WorkBuffer
LD B,0x18
LD A,0x80
PUSH HL
.L2 LD (HL),A
INC L
DJNZ .L2
POP DE
LD HL,0x4000
LD C,(IY+PANEL.FFL)
LD B,(IY+PANEL.FFH)
DEC BC
LD A,B
OR C
JR Z,ScrDdn2
ScrDdn1 PUSH BC
LD A,(HL)
AND 0x7F
LD E,A
LD A,(HL)
LD (DE),A
LD BC,0x0010
ADD HL,BC
POP BC
DEC BC
LD A,B
OR C
JR NZ,ScrDdn1
ScrDdn2 LD DE,WorkBuffer+0x100
LD BC,0x0010
LDIR
POP AF
SETPORT WINSP.CPU1,,0
LD HL,WorkBuffer+0x100
LD DE,WorkBuffer+0x200
CALL MakeTreeLine
LD B,COLORP.PANEL + COLORI.FILES
LD C,COLORP.PANEL + COLORI.SELECTFILES
CALL InsPrnColor
CALL ResInvert
PUSH IY
GETPORT WINSP.Y_PORT ; ‘®å࠭塞 Y ¯®àâ
LD C,A
GETPORT WINSP.CPU1
LD B,A
PUSH BC
SETPORT WINSP.CPU1,0x50
LD L,(IY+PANEL.XL)
LD H,(IY+PANEL.XH)
LD DE,6
ADD HL,DE
LD DE,63 << 8 | 71
LD BC,136 << 8 | 144
PUSH HL
CALL ScrollDIRDownUp
POP DE
LD HL,WorkBuffer+0x200
LD BC,36 << 8 | 63
CALL PrintName
POP BC
LD A,B
SETPORT WINSP.CPU1,,0
LD A,C
SETPORT WINSP.Y_PORT,,0
POP IY
LD L,(IY+PANEL.FFL)
LD H,(IY+PANEL.FFH)
DEC HL
LD (IY+PANEL.FFL),L
LD (IY+PANEL.FFH),H
CALL SetInvert
CALL PrnFileInfo
PUSH IY
POP IX
LD DE,PANEL.BARXL
ADD IX,DE
JP PrnVScrBar
;[]===========================================================[]
CursDown LD C,(IY+PANEL.EFL)
LD B,(IY+PANEL.EFH)
LD A,B
OR C
RET Z
LD L,(IY+PANEL.CFL)
LD H,(IY+PANEL.CFH)
INC HL
PUSH HL
LD E,(IY+PANEL.FFL)
LD D,(IY+PANEL.FFH)
ADD HL,DE
OR A
SBC HL,BC
POP HL
RET NC
LD E,(IY+PANEL.FPL)
LD D,(IY+PANEL.FPH)
OR A
SBC HL,DE
JR NC,ScrlUp1
ADD HL,DE
PUSH HL
CALL ResInvert
POP HL
LD (IY+PANEL.CFL),L
LD (IY+PANEL.CFH),H
CALL SetInvert
JP PrnFileInfo
ScrollUp: LD A,(IY+PANEL.EFL)
OR (IY+PANEL.EFH)
RET Z
LD L,(IY+PANEL.FFL)
LD H,(IY+PANEL.FFH)
LD E,(IY+PANEL.FPL)
LD D,(IY+PANEL.FPH)
ADD HL,DE
LD E,(IY+PANEL.EFL)
LD D,(IY+PANEL.EFH)
OR A
SBC HL,DE
RET NC
ScrlUp1 BIT VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG)
JP NZ,ScrlUpP
BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
JP NZ,ScrlUpT
GETPORT WINSP.CPU1
PUSH AF
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
LD A,(RAMPAGES.LEFTPANEL)
JR Z,.L1
LD A,(RAMPAGES.RIGHTPANEL)
.L1
SETPORT WINSP.CPU1,,0
LD L,(IY+PANEL.FFL)
LD H,(IY+PANEL.FFH)
LD DE,0x0011
ADD HL,DE
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD E,L
LD D,H
ADD HL,HL
ADD HL,DE
SET 6,H
LD DE,WorkBuffer
LD BC,0x000E
PUSH HL
LDIR
POP HL
LD DE,0x18*0x11
ADD HL,DE
LD DE,WorkBuffer+0x10
LD C,0x0E
PUSH HL
LDIR
POP HL
LD DE,0x18*0x11
ADD HL,DE
LD DE,WorkBuffer+0x20
LD C,0x0E
LDIR
POP AF
SETPORT WINSP.CPU1,,0
LD B,COLORP.PANEL + COLORI.FILES
LD C,COLORP.PANEL + COLORI.SELECTFILES
CALL InsPrnColor
CALL ResInvert
PUSH IY
GETPORT WINSP.Y_PORT ; ‘®å࠭塞 Y ¯®àâ
LD C,A
GETPORT WINSP.CPU1
LD B,A
PUSH BC
SETPORT WINSP.CPU1,0x50
LD L,(IY+PANEL.XL)
LD H,(IY+PANEL.XH)
LD DE,6
ADD HL,DE
LD DE,71 << 8 | 63
LD BC,128 << 8 | 46
PUSH HL
CALL ScrollDIRDownUp
POP DE
LD HL,WorkBuffer+0x01
LD BC,12 << 8 | 191
LD A,(HL)
DEC HL
OR A
PUSH DE
CALL NZ,PrintName
POP HL
LD DE,0x0068
ADD HL,DE
LD D,0x3F+0x08
LD E,0x3F
LD BC,0x802E
PUSH HL
CALL ScrollDIRDownUp
POP DE
LD HL,WorkBuffer+0x11
LD BC,12 << 8 | 191
LD A,(HL)
DEC HL
OR A
PUSH DE
CALL NZ,PrintName
POP HL
LD DE,104
ADD HL,DE
LD DE,71 << 8 | 63
LD BC,128 << 8 | 46
PUSH HL
CALL ScrollDIRDownUp
POP DE
LD HL,WorkBuffer+0x21
LD BC,12 << 8 | 191
LD A,(HL)
DEC HL
OR A
CALL NZ,PrintName
POP BC
LD A,B
SETPORT WINSP.CPU1,,0
LD A,C
SETPORT WINSP.Y_PORT,,0
POP IY
LD L,(IY+PANEL.FFL)
LD H,(IY+PANEL.FFH)
INC HL
LD (IY+PANEL.FFL),L
LD (IY+PANEL.FFH),H
CALL SetInvert
CALL PrnFileInfo
PUSH IY
POP IX
LD DE,PANEL.BARXL
ADD IX,DE
JP PrnHScrBar
ScrlUpP
GETPORT WINSP.CPU1
PUSH AF
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
LD A,(RAMPAGES.LEFTPANEL)
JR Z,.L1
LD A,(RAMPAGES.RIGHTPANEL)
.L1
SETPORT WINSP.CPU1,,0
LD L,(IY+PANEL.FFL)
LD H,(IY+PANEL.FFH)
LD DE,0x0012
ADD HL,DE
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD E,L
LD D,H
ADD HL,HL
ADD HL,DE
SET 6,H
LD DE,WorkBuffer
LD BC,0x0018
LDIR
POP AF
SETPORT WINSP.CPU1,,0
LD IX,WorkBuffer
LD HL,WorkBuffer
LD DE,WorkBuffer+0x200
LD BC,0x000D
LDIR
LD A,0x01
LD (DE),A
INC DE
BIT DIR.B_Dir,(IX + FileHDR.Attr)
CALL NZ,PutDIRTxt
CALL Z,GetFileLen
LD A,0x01
LD (DE),A
INC DE
CALL GetData
LD A,0x01
LD (DE),A
INC DE
CALL GetTime
LD B,COLORP.PANEL + COLORI.FILES
LD C,COLORP.PANEL + COLORI.SELECTFILES
CALL InsPrnColor
CALL ResInvert
PUSH IY
GETPORT WINSP.Y_PORT ; ‘®å࠭塞 Y ¯®àâ
LD C,A
GETPORT WINSP.CPU1
LD B,A
PUSH BC
SETPORT WINSP.CPU1,0x50
LD L,(IY+PANEL.XL)
LD H,(IY+PANEL.XH)
LD DE,4
ADD HL,DE
LD DE,71 << 8 | 63
LD BC,136 << 8 | 144
PUSH HL
CALL ScrollDIRDownUp
POP DE
LD HL,WorkBuffer+0x200
LD BC,38 << 8 | 199
CALL PrintName
POP BC
LD A,B
SETPORT WINSP.CPU1,,0
LD A,C
SETPORT WINSP.Y_PORT,,0
POP IY
LD L,(IY+PANEL.FFL)
LD H,(IY+PANEL.FFH)
INC HL
LD (IY+PANEL.FFL),L
LD (IY+PANEL.FFH),H
CALL SetInvert
CALL PrnFileInfo
PUSH IY
POP IX
LD DE,PANEL.BARXL
ADD IX,DE
JP PrnVScrBar
ScrlUpT
GETPORT WINSP.CPU1
PUSH AF
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
LD A,(RAMPAGES.LEFTPANEL)
JR Z,.L1
LD A,(RAMPAGES.RIGHTPANEL)
.L1
SETPORT WINSP.CPU1,,0
LD HL,WorkBuffer
LD B,0x18
LD A,0x80
PUSH HL
.L2 LD (HL),A
INC L
DJNZ .L2
POP DE
LD L,(IY+PANEL.FFL)
LD H,(IY+PANEL.FFH)
LD BC,0x0012
ADD HL,BC
LD C,L
LD B,H
LD HL,0x4000
ScrDup1 PUSH BC
LD A,(HL)
AND 0x7F
LD E,A
LD A,(HL)
LD (DE),A
LD BC,0x0010
ADD HL,BC
POP BC
DEC BC
LD A,B
OR C
JR NZ,ScrDup1
LD DE,WorkBuffer+0x100
LD BC,0x0010
LDIR
POP AF
SETPORT WINSP.CPU1,,0
LD HL,WorkBuffer+0x100
LD DE,WorkBuffer+0x200
CALL MakeTreeLine
LD B,COLORP.PANEL + COLORI.FILES
LD C,COLORP.PANEL + COLORI.SELECTFILES
CALL InsPrnColor
CALL ResInvert
PUSH IY
GETPORT WINSP.Y_PORT ; ‘®å࠭塞 Y ¯®àâ
LD C,A
GETPORT WINSP.CPU1
LD B,A
PUSH BC
SETPORT WINSP.CPU1,0x50
LD L,(IY+PANEL.XL)
LD H,(IY+PANEL.XH)
LD DE,6
ADD HL,DE
LD DE,71 << 8 | 63
LD BC,136 << 8 | 144
PUSH HL
CALL ScrollDIRDownUp
POP DE
LD HL,WorkBuffer+0x200
LD BC,36 << 8 | 199
CALL PrintName
POP BC
LD A,B
SETPORT WINSP.CPU1,,0
LD A,C
SETPORT WINSP.Y_PORT,,0
POP IY
LD L,(IY+PANEL.FFL)
LD H,(IY+PANEL.FFH)
INC HL
LD (IY+PANEL.FFL),L
LD (IY+PANEL.FFH),H
CALL SetInvert
CALL PrnFileInfo
PUSH IY
POP IX
LD DE,PANEL.BARXL
ADD IX,DE
JP PrnVScrBar
; <20>  ¢å®¤:
; HL - X ¯®§¨æ¨ï
; D - Y ®âªã¤ 
; … - Y ªã¤ 
; B - ¢ëá®â 
; C - è¨à¨­ 
ScrollDIRDownUp:
SRL H
RR L
SET 6,H
LD A,B
LD (.ScrlLen),A
DI
LD B,C
ACCEL ACCELCMD.SET_BUFFER
LD A,0x00
.ScrlLen EQU $-1
ACCEL ACCELCMD.OFF
.ScRect1 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
DJNZ .ScRect1
EI
RET
;[]===========================================================[]
CursLeft BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
RET NZ
LD A,(IY+PANEL.EFL)
OR (IY+PANEL.EFH)
RET Z
LD L,(IY+PANEL.CFL)
LD H,(IY+PANEL.CFH)
LD A,H
OR L
JP Z,PageUp
LD DE,0x0011
SBC HL,DE
JR NC,CursLRex
LD HL,0x0000
JR CursLRex
CursRight BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
RET NZ
LD A,(IY+PANEL.EFL)
OR (IY+PANEL.EFH)
RET Z
LD L,(IY+PANEL.CFL)
LD H,(IY+PANEL.CFH)
LD E,(IY+PANEL.FPL)
LD D,(IY+PANEL.FPH)
DEC DE
OR A
PUSH HL
SBC HL,DE
POP HL
JP Z,PageDown
LD DE,0x0011
ADD HL,DE
BIT VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG)
JR NZ,.L1
LD DE,0x0032
.L1 EX DE,HL
SBC HL,DE
JR NC,CursRg1
LD E,(IY+PANEL.FPL)
LD D,(IY+PANEL.FPH)
DEC DE
CursRg1 EX DE,HL
PUSH HL
LD E,(IY+PANEL.FFL)
LD D,(IY+PANEL.FFH)
ADD HL,DE
LD C,(IY+PANEL.EFL)
LD B,(IY+PANEL.EFH)
OR A
SBC HL,BC
POP HL
JR C,CursLRex
LD L,C
LD H,B
OR A
SBC HL,DE
DEC HL
PUSH HL
LD E,(IY+PANEL.CFL)
LD D,(IY+PANEL.CFH)
OR A
SBC HL,DE
POP HL
RET Z
CursLRex PUSH HL
CALL ResInvert
POP HL
LD (IY+PANEL.CFL),L
LD (IY+PANEL.CFH),H
CALL SetInvert
JP PrnFileInfo
;[]===========================================================[]
PageUp LD A,(IY+PANEL.EFL)
OR (IY+PANEL.EFH)
RET Z
LD L,(IY+PANEL.FFL)
LD H,(IY+PANEL.FFH)
LD A,H
OR L
JP Z,Home
PUSH HL
CALL ResInvert
POP HL
LD E,(IY+PANEL.FPL)
LD D,(IY+PANEL.FPH)
OR A
SBC HL,DE
JR NC,.L1
LD HL,0x0000
.L1 LD (IY+PANEL.FFL),L
LD (IY+PANEL.FFH),H
JR PageUDex
PageDown LD C,(IY+PANEL.EFL)
LD B,(IY+PANEL.EFH)
LD A,B
OR C
RET Z
LD L,(IY+PANEL.FFL)
LD H,(IY+PANEL.FFH)
LD E,(IY+PANEL.FPL)
LD D,(IY+PANEL.FPH)
ADD HL,DE
OR A
SBC HL,BC
JP NC,End
PUSH HL
PUSH BC
CALL ResInvert
POP BC
POP HL
ADD HL,BC
LD (IY+PANEL.FFL),L
LD (IY+PANEL.FFH),H
LD E,(IY+PANEL.CFL)
LD D,(IY+PANEL.CFH)
ADD HL,DE
OR A
SBC HL,BC
JR C,PageUDex
LD L,C
LD H,B
LD E,(IY+PANEL.FFL)
LD D,(IY+PANEL.FFH)
OR A
SBC HL,DE
DEC HL
LD (IY+PANEL.CFL),L
LD (IY+PANEL.CFH),H
PageUDex CALL PrintDIR
CALL SetInvert
CALL PrnFileInfo
PUSH IY
POP IX
LD DE,PANEL.BARXL
ADD IX,DE
LD A,(IY+PANEL.VIEWFLAG)
AND VIEWFLAG.MASK
PUSH AF
CALL Z,PrnHScrBar
POP AF
CALL NZ,PrnVScrBar
LD B,0x07
PgUDext PUSH BC
SPMOUSE MOUSEF.READ_STATE
POP BC
BIT 0,A
RET Z
HALT
DJNZ PgUDext
RET
;[]===========================================================[]
Home LD A,(IY+PANEL.EFL)
OR (IY+PANEL.EFH)
RET Z
LD A,(IY+PANEL.FFL)
OR (IY+PANEL.FFH)
JR NZ,Home1
LD A,(IY+PANEL.CFL)
OR (IY+PANEL.CFH)
RET Z
CALL ResInvert
SUB A
LD (IY+PANEL.CFL),A
LD (IY+PANEL.CFH),A
CALL SetInvert
JP PrnFileInfo
Home1 CALL ResInvert
SUB A
LD (IY+PANEL.FFL),A
LD (IY+PANEL.FFH),A
LD (IY+PANEL.CFL),A
LD (IY+PANEL.CFH),A
JR PageUDex
End LD C,(IY+PANEL.EFL)
LD B,(IY+PANEL.EFH)
LD A,B
OR C
RET Z
LD L,(IY+PANEL.FFL)
LD H,(IY+PANEL.FFH)
LD E,(IY+PANEL.CFL)
LD D,(IY+PANEL.CFH)
ADD HL,DE
INC HL
OR A
SBC HL,BC
RET Z
PUSH BC
CALL ResInvert
POP BC
LD L,(IY+PANEL.FFL)
LD H,(IY+PANEL.FFH)
BIT VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG)
LD E,(IY+PANEL.FPL)
LD D,(IY+PANEL.FPH)
ADD HL,DE
INC HL
OR A
SBC HL,BC
JR Z,End1
JR C,End1
LD L,(IY+PANEL.EFL)
LD H,(IY+PANEL.EFH)
LD E,(IY+PANEL.FFL)
LD D,(IY+PANEL.FFH)
OR A
SBC HL,DE
DEC HL
LD (IY+PANEL.CFL),L
LD (IY+PANEL.CFH),H
CALL SetInvert
CALL PrnFileInfo
RET
End1 LD L,C
LD H,B
OR A
SBC HL,DE
LD (IY+PANEL.FFL),L
LD (IY+PANEL.FFH),H
BIT VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG)
LD L,(IY+PANEL.FPL)
LD H,(IY+PANEL.FPH)
DEC HL
LD (IY+PANEL.CFL),L
LD (IY+PANEL.CFH),H
JP PageUDex
;[]==========================================================[]
NewFile LD A,(IY+PANEL.EFL)
OR (IY+PANEL.EFH)
RET Z
LD A,(IY+PANEL.VIEWFLAG)
AND VIEWFLAG.MASK
LD A,0x00
JR NZ,NewFile1
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
LD BC,0x0068
JR Z,.L1
LD BC,0x01A8
.L1 OR A
SBC HL,BC
JR C,NewFile1
ADD HL,BC
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
LD BC,0x0070
JR Z,.L2
LD BC,0x01B0
.L2 SBC HL,BC
RET C
ADD HL,BC
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
LD BC,0x00D0
JR Z,.L3
LD BC,0x0210
.L3 SBC HL,BC
LD A,0x11
JR C,NewFile1
ADD HL,BC
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
LD BC,0x00D8
JR Z,.L4
LD BC,0x0218
.L4 SBC HL,BC
RET C
ADD HL,BC
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
LD BC,0x0138
JR Z,.L5
LD BC,0x0278
.L5 SBC HL,BC
RET NC
LD A,0x22
NewFile1 LD HL,0x003F
OR A
EX DE,HL
SBC HL,DE
SRL H
RR L
SRL H
RR L
SRL H
RR L
LD C,A
LD B,0x00
ADD HL,BC
LD C,(IY+PANEL.CFL)
LD B,(IY+PANEL.CFH)
OR A
SBC HL,BC
JP Z,OpenFile
ADD HL,BC
LD E,(IY+PANEL.FFL)
LD D,(IY+PANEL.FFH)
ADD HL,DE
LD C,(IY+PANEL.EFL)
LD B,(IY+PANEL.EFH)
OR A
SBC HL,BC
RET NC
ADD HL,BC
OR A
SBC HL,DE
PUSH HL
CALL ResInvert
POP HL
LD (IY+PANEL.CFL),L
LD (IY+PANEL.CFH),H
CALL SetInvert
CALL PrnFileInfo
JP ResFire
;[]==========================================================[]
OpenFile BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
IF TREE_REZID
JP NZ,RESIDENT.TestTreeBeg
ELSE
JP NZ,TestTreeR.TestTreeBeg
ENDIF
LD A,(IY+PANEL.EFL)
OR (IY+PANEL.EFH)
RET Z
GETPORT WINSP.CPU1
PUSH AF
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
LD A,(RAMPAGES.LEFTPANEL)
JR Z,.L1
LD A,(RAMPAGES.RIGHTPANEL)
.L1
SETPORT WINSP.CPU1,,0
LD L,(IY+PANEL.FFL)
LD H,(IY+PANEL.FFH)
LD E,(IY+PANEL.CFL)
LD D,(IY+PANEL.CFH)
ADD HL,DE
ADD HL,HL ; *2
ADD HL,HL ; *4
ADD HL,HL ; *8
LD E,L
LD D,H
ADD HL,HL ; *10
ADD HL,DE ; *18
SET 6,H ; | 0x4000
LD DE,WorkBuffer
LD BC,FileHDR.Attr
PUSH HL
ADD HL,BC
LDI
POP HL
INC HL
CALL MakeDOSname
POP AF
SETPORT WINSP.CPU1,,0
LD HL,WorkBuffer
BIT 4,(HL)
INC HL
JP Z,RunEXEfile
LD A,(HL)
CP '.'
JR NZ,OpenF2
PUSH HL
PUSH IY
POP HL
LD DE,PANEL.CURRPATH
ADD HL,DE
SUB A
.L2 INC HL
CP (HL)
JR NZ,.L2
LD A,0x5C
DEC HL
CP (HL)
JR Z,OpenF1
.L3 DEC HL
CP (HL)
JR NZ,.L3
INC HL
SUB A
LD DE,PrevDIR
.L4 LDI
CP (HL)
JR NZ,.L4
LD (DE),A
LD A,'.'
OpenF1 POP HL
OpenF2 PUSH AF
PUSH HL
CALL ResInvert
POP HL
CALL SetClock
PUSH IY
SPDSS DSSF.CHDIR
POP IY
CALL C,DOSError
CALL ReadDIR
PUSH IY
PUSH IY
SPDSS DSSF.CURDISK
POP HL
LD DE,PANEL.CURRPATH
ADD HL,DE
ADD A,'A'
LD (HL),A
INC HL
LD (HL),':'
INC HL
SPDSS DSSF.CURDIR
POP IY
CALL PrintPath
BIT PANELFLAG.B_PRNDOSPATH,(IY+PANEL.PANELFLAG)
CALL NZ,PrintDOSPath
POP AF
CP '.'
CALL Z,FindPrevDIR
CALL PrintDIR
CALL SetInvert
CALL PrnFileInfo
PUSH IY
POP IX
LD DE,PANEL.BARXL
ADD IX,DE
CALL InitScrollBar
LD A,(IY+PANEL.VIEWFLAG)
AND VIEWFLAG.MASK
PUSH AF
CALL Z,PrnHScrBar
POP AF
CALL NZ,PrnVScrBar
CALL SetMouse
LD A,(TreeFlag)
OR A
JP Z,ResFire
PUSH IY
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
LD IY,LeftPanel
LD HL,RightPanel
JR NZ,.L5
LD IY,RightPanel
LD HL,LeftPanel
.L5 LD DE,PANEL.CURRPATH
ADD HL,DE
INC HL
INC HL
IF TREE_REZID
CALL RESIDENT.FindTreeDIR
ELSE
CALL FindTreeDIRR
ENDIF
CALL PrintDIR
CALL PrnFileInfo
PUSH IY
POP IX
LD DE,PANEL.BARXL
ADD IX,DE
CALL PrnVScrBar
POP IY
RET
;[]==========================================================[]
ChPanel CALL ResInvert
LD A,(LeftPanel)
XOR 0x80
LD (LeftPanel),A
LD A,(RightPanel)
XOR 0x80
LD (RightPanel),A
CALL PrintPath
BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
JR Z,ChPan1
GETPORT WINSP.CPU1
PUSH AF
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
LD A,(RAMPAGES.LEFTPANEL)
JR Z,.L1
LD A,(RAMPAGES.RIGHTPANEL)
.L1
SETPORT WINSP.CPU1,,0
SETPORT WINSP.Y_PORT,0xC0
LD L,(IY+PANEL.FFL)
LD H,(IY+PANEL.FFH)
LD E,(IY+PANEL.CFL)
LD D,(IY+PANEL.CFH)
ADD HL,DE
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
SET 6,H
INC HL
SET 1,(HL)
POP AF
SETPORT WINSP.CPU1,,0
CALL PrintDIR
ChPan1 LD IY,LeftPanel
BIT PANELFLAG.B_PRNDOSPATH,(IY+PANEL.PANELFLAG)
JR NZ,.L1
LD IY,RightPanel
.L1 CALL PrintPath
CALL PrintDOSPath
BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
JR Z,ChPan2
GETPORT WINSP.CPU1
PUSH AF
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
LD A,(RAMPAGES.LEFTPANEL)
JR Z,.L2
LD A,(RAMPAGES.RIGHTPANEL)
.L2
SETPORT WINSP.CPU1,,0
SETPORT WINSP.Y_PORT,0xC0
LD L,(IY+PANEL.FFL)
LD H,(IY+PANEL.FFH)
LD E,(IY+PANEL.CFL)
LD D,(IY+PANEL.CFH)
ADD HL,DE
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
SET 6,H
INC HL
RES 1,(HL)
POP AF
SETPORT WINSP.CPU1,,0
CALL PrintDIR
ChPan2 CALL SetInvert
PUSH IY
POP HL
LD DE,PANEL.CURRPATH
ADD HL,DE
PUSH IY
SPDSS DSSF.CHDIR
POP IY
RET NC
CALL DOSError
JP BegDIRECTORY
;[]==========================================================[]
ChangeDriveL LD IX,LeftPanel
JR ChangeDrive
ChangeDriveR LD IX,RightPanel
ChangeDrive PUSH IY
PUSH IX
POP IY
LD C,(IY+PANEL.XL)
LD B,(IY+PANEL.XH)
INC BC
INC BC
OR A
SBC HL,BC
LD BC,0x001C
LD A,0xFF
.L1 INC A
SBC HL,BC
JR NC,.L1
ADD A,'A'
PUSH IY
POP HL
LD DE,PANEL.CURRPATH
ADD HL,DE
LD (HL),D
LD HL,NewDrive
LD (HL),A
CALL NewDIRECTORY
LD A,(AutoActivatePanel)
AND A
JR NZ,loc_C82E
BIT PANELFLAG.B_PRNDOSPATH,(IY+PANEL.PANELFLAG)
POP IY
JP Z,ChPanel ; RET NZ
RET
loc_C82E BIT PANELFLAG.B_PRNDOSPATH,(IY+PANEL.PANELFLAG)
POP IY
RET NZ
PUSH IY
POP HL
LD DE,PANEL.CURRPATH
ADD HL,DE
PUSH IY
SPDSS DSSF.CHDIR
POP IY
RET NC
CALL DOSError
JP BegDIRECTORY
NewDrive DZ " :\\"
;[]==========================================================[]
ReplacePanels LD IX,LeftPanel
SET PANELFLAG.B_SIDE,(IX+PANEL.PANELFLAG)
LD L,(IX+PANEL.XL)
LD H,(IX+PANEL.XH)
LD IX,RightPanel
RES PANELFLAG.B_SIDE,(IX+PANEL.PANELFLAG)
LD E,(IX+PANEL.XL)
LD D,(IX+PANEL.XH)
LD (IX+PANEL.XL),L
LD (IX+PANEL.XH),H
LD IX,LeftPanel
LD (IX+PANEL.XL),E
LD (IX+PANEL.XH),D
LD HL,RAMPAGES.LEFTPANEL
LD DE,RAMPAGES.RIGHTPANEL
LD A,(DE)
LDI
DEC HL
LD (HL),A
LD HL,LeftPanel
LD DE,RightPanel
LD BC,PANEL.CURRPATH + 0x100
ReplPan LD A,(DE)
LDI
DEC HL
LD (HL),A
INC HL
JP PE,ReplPan
LD A,0x01
JP InitPanels
;[]==========================================================[]
ShowDOSscreen CALL ResVideoMode
ShowDSlp
SPDSS DSSF.SCANKEY
JR NZ,ShowDSexit
SPMOUSE MOUSEF.READ_STATE
OR A
JR Z,ShowDSlp
ShowDSexit
SPDSS DSSF.SETVMOD,0,SETVMOD.GRF640X256
JP ResFire
;[]==========================================================[]
RunEXEfile: LD IX,fn_ext
LD DE,PrevFile
PUSH DE
SUB A
.L1 LDI
CP (HL)
JR NZ,.L1
LD (DE),A
POP DE
LD L,E
LD H,D
.L2 INC HL
LD A,(HL)
AND A
SCF
RET Z
CP '.'
JR NZ,.L2
INC HL
LD A,(HL)
INC HL
RES 5,A
cp 'B'
jp z,RunBATfile
CP 'F'
JP Z,RunFLXfile
CP 'E'
JP NZ,TestEXT
LD A,(HL)
INC HL
RES 5,A
CP 'X'
JP NZ,TestEXT
LD A,(HL)
RES 5,A
CP 'E'
JP NZ,TestEXT
RunFile: PUSH DE
CALL ResDrivers
SUB A
CALL ClearScreen
CALL ResVideoMode
POP HL
SPDSS DSSF.EXEC,0
PUSH AF
SETPORT BORDER,0
;!FIXIT ¯à®¢¥à¨âì ¤«ï íâ® ®­® ¨«¨ ­¥â SAFE_PORTY
SETPORT WINSP.Y_PORT,0xC0
CALL InitVideoMode
CALL InitDrivers
CALL InitScreen
CALL ClearDOSline
LD A,0x02
CALL InitPanels
POP AF
JP C,DOSError
RET
;[]----------------------------------------------------------[]
RunBATfile: LD A,(HL)
INC HL
RES 5,A
CP 'A'
JP NZ,TestEXT
LD A,(HL)
RES 5,A
CP 'T'
JP NZ,TestEXT
PUSH DE
ld hl,ShellFile
ld de,WorkBuffer
call CopyString
bit PANELFLAG.B_SIDE,(iy+PANEL.PANELFLAG)
ld hl,RightPanel + PANEL.CURRPATH
jr nz,.next
ld hl,LeftPanel + PANEL.CURRPATH
.next: call ConcatString
dec de
ex hl,de
ld a,'\\'
cp (hl)
jr z,.skipSlash
inc hl
ld (hl),a
.skipSlash: inc hl
ex hl,de
pop hl
call CopyString
ld de,WorkBuffer
jr RunFile
;[]----------------------------------------------------------[]
; § ¯ã᪠FLX ¯« £¨­  ¨§ ¯ ­¥«¨ ¯® ENTER
RunFLXfile LD A,(HL)
INC HL
RES 5,A
CP 'L'
JP NZ,TestEXT
LD A,(HL)
RES 5,A
CP 'X'
JP NZ,TestEXT
EX DE,HL
LD DE,WorkBuffer
SUB A
.L1 LDI
CP (HL)
JR NZ,.L1
LD (DE),A
CALL RunFLX
JP C,DOSError
RET
;[]-----------------------------------------------------------[]
TestEXT: PUSH IX
LD IXL,E
LD IXH,D
EX DE,HL
LD A,'.'
.L1 INC HL
CP (HL)
JR NZ,.L1
INC HL
EX DE,HL
POP HL
GETPORT WINSP.CPU1
PUSH AF
LD A,(RAMPAGES.FNHELP)
SETPORT WINSP.CPU1,,0
TestEXT1: LD C,(HL)
INC HL
LD B,(HL)
INC HL
LD A,B
OR C
JR Z,TestEND
PUSH DE
EX DE,HL
LD A,(DE)
INC DE
CP '?'
JR Z,.L1
CP (HL)
JR NZ,TestEXTn
.L1 INC HL
LD A,(DE)
INC DE
CP '?'
JR Z,.L2
CP (HL)
JR NZ,TestEXTn
.L2 INC HL
LD A,(DE)
INC DE
CP '?'
JR Z,TestEXTn
CP (HL)
TestEXTn: EX DE,HL
POP DE
JR Z,TestEXTok
LD L,C
LD H,B
JR TestEXT1
TestEND: POP AF
SETPORT WINSP.CPU1,,0
SCF
RET
TestEXTok: LD DE,WorkBuffer
LD C,0x00
TstEXT0: LD A,C
LDI
LD C,A
LD A,(HL)
OR A
JR Z,TstEXT2
CP ' '
JR Z,TstEXT1
CP '.'
JR NZ,TstEXT0
LD (DE),A
INC HL
INC DE
LD A,(HL)
LD (DE),A
INC HL
INC DE
CP ' '
JR Z,TstEXT1
RES 5,A
CP 'F'
JR NZ,.L1
SET 0,C
.L1 LD A,(HL)
LD (DE),A
INC HL
INC DE
CP ' '
JR Z,TstEXT1
RES 5,A
CP 'L'
JR NZ,.L2
SET 1,C
.L2 LD A,(HL)
LD (DE),A
INC HL
INC DE
CP ' '
JR Z,TstEXT1
RES 5,A
CP 'X'
JR NZ,TstEXT1
SET 2,C
TstEXT1: LD A,(HL)
CP '!'
JR NZ,TstEX11
INC HL
LD A,(HL)
CP '.'
JP Z,EName
CP ':'
JP Z,EDrive
CP '\\'
JP Z,EPath
DEC HL
TstEX11: LD (DE),A
INC HL
INC DE
OR A
JR NZ,TstEXT1
TstEXT2: LD (DE),A
POP AF
SETPORT WINSP.CPU1,,0
LD HL,WorkBuffer
LD A,C
CP 0x07
JP Z,RunFLX
LD DE,WorkBuffer+0x100
PUSH IY
SPDSS DSSF.F_FIRST,1,0x37
POP IY
JP C,RestoreDIR
CALL ResDrivers
SUB A
CALL ClearScreen
CALL ResVideoMode
LD HL,WorkBuffer
SPDSS DSSF.EXEC,0
PUSH AF
SETPORT BORDER,0
; !FIXIT ¯à®¢¥à¨âì ¤«ï íâ® ®­® ¨«¨ ­¥â SAFE_PORTY
SETPORT WINSP.Y_PORT,0xC0
CALL InitVideoMode
CALL InitDrivers
CALL InitScreen
CALL ClearDOSline
LD A,0x02
CALL InitPanels
POP AF
CALL C,DOSError
OR A
RET
RestoreDIR: PUSH AF
PUSH IY
POP HL
LD BC,PANEL.CURRPATH
ADD HL,BC
PUSH IY
SPDSS DSSF.CHDIR
POP IY
POP AF
RET
EName: INC HL
LD A,(HL)
DEC HL
CP '!'
JR NZ,TstEX11
INC HL
PUSH HL
PUSH BC
LD HL,PrevFile
SUB A
.L1 LDI
CP (HL)
JR NZ,.L1
POP BC
POP HL
INC HL
JP TstEXT1
EDrive: LD A,(IY+PANEL.CURRPATH)
LD (DE),A
INC DE
LD A,':'
LD (DE),A
INC DE
INC HL
JP TstEXT1
EPath: PUSH HL
PUSH BC
PUSH IY
POP HL
LD BC,PANEL.CURRPATH
ADD HL,BC
SUB A
.L1 LDI
CP (HL)
JR NZ,.L1
DEC HL
LD A,'\\'
CP (HL)
JR Z,.L2
LD (DE),A
INC DE
.L2 POP BC
POP HL
INC HL
JP TstEXT1
; § ¯ã᪠FLX ä ©« 
RunFLX: LD HL,RestoreDIR
PUSH HL
LD HL,WorkBuffer
LD A,0x21
.L1 INC HL
CP (HL)
JR C,.L1
SUB A
LD (HL),A
INC HL
PUSH HL
LD HL,WorkBuffer
PUSH IY
SPDSS DSSF.OPEN,,1
POP IY
POP HL
RET C
LD (.FLXHandle),A
PUSH HL
LD IX,0x0000
LD HL,0x0000
PUSH IY
SPDSS DSSF.MOVE_FP,2
POP IY
LD A,IXH
AND 0xC0
OR H
OR L
POP HL
SCF
LD A,0x1E
RET NZ
PUSH IY
PUSH HL
; !FIXIT ¯à®¢¥à¨âì ¤«ï í⮣® ®­® ¨«¨ ­¥â SAFE_PORTY
SETPORT WINSP.Y_PORT,0xC0
LD IX,0x0000
LD HL,0x0000
LD A,(.FLXHandle)
SPDSS DSSF.MOVE_FP,0
GETPORT WINSP.CPU1
PUSH AF
LD A,(RAMPAGES.FLX)
SETPORT WINSP.CPU1,,0
LD HL,WorkBuffer + 0x0100
LD DE,0x0010
LD A,(.FLXHandle)
PUSH HL
SPDSS DSSF.READ
POP HL
JR C,.L2
LD A,(HL)
INC HL
CP 'F'
SCF
LD A,0x10
JR NZ,.L2
LD A,(HL)
INC HL
CP 'L'
SCF
LD A,0x10
JR NZ,.L2
LD A,(HL)
INC HL
CP 'X'
SCF
LD A,0x10
JR NZ,.L2
LD L,0x08
LD E,(HL)
INC HL
LD D,(HL)
INC HL
LD C,(HL)
INC HL
LD B,(HL)
INC HL
LD (.FLXexec),BC
LD A,(HL)
INC HL
LD (.FLXmode),A
RES 7,D
SET 6,D
LD HL,0x8000
OR A
SBC HL,DE
EX DE,HL
LD A,(.FLXHandle)
SPDSS DSSF.READ
.L2: EX AF,AF'
POP AF
SETPORT WINSP.CPU1,,0
EX AF,AF'
PUSH AF
LD A,(.FLXHandle)
SPDSS DSSF.CLOSE
POP AF
POP HL
POP IY
RET C
LD DE,0x0000
.FLXexec EQU $-2
SET 7,D
SET 6,D
LD A,(RAMPAGES.FLX)
LD C,WINSP.CPU3
PUSH IY
CALL Resident
POP IY
CCF
RET NC
LD A,0x00
.FLXmode: EQU $-1
OR A
RET Z
INC SP
INC SP
SETPORT BORDER,0
; !FIXIT ¯à®¢¥à¨âì ¤«ï íâ® ®­® ¨«¨ ­¥â SAFE_PORTY
SETPORT WINSP.Y_PORT,0xC0
CALL InitScreen
CALL ClearDOSline
LD A,0x02
CALL InitPanels
OR A
RET
.FLXHandle: DEFB 0x00
;[]===========================================================[]
Help: LD DE,HelpR
LD A,(RAMPAGES.FNHELP)
LD C,WINSP.CPU1
JP Resident
;[]----------------------------------------------------------[]
ViewFileSH: BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
RET NZ
LD A,(IY+PANEL.EFL)
OR (IY+PANEL.EFH)
RET Z
CALL ResInvert
LD HL,SetInvert
PUSH HL
MAKEWINDOW WINSUBOBJ.STORE
W_MAIN 200,81,240,62
W_FILL 4,2,232,10,COLORI.BLACK
W_TEXT 108,3,COLORI.WHITE,"View"
W_BUTTON 40,42,72,14
W_TEXT 68,45,COLORP.HIGHGRAY,"Ok"
W_BUTTON 128,42,72,14
W_TEXT 148,45,COLORP.HIGHGRAY,"Cancel"
W_TEXT 12,25,COLORP.HIGHGRAY,"View the file:"
W_BORDER 86,22,134,12
W_FILL 88,23,130,10,COLORI.WHITE
W_END
LD IX,ViewStr
LD HL,ViewEditTab
CALL InputLine
WINDOWCLOSE
RET C
LD A,(ViewLen)
OR A
RET Z
LD HL,ViewName
LD DE,PrevFile
LD B,A
ViewSH1: LD A,(HL)
IF CORR_FILENAME
CALL CorrBigChar
ENDIF
LD (HL),A
LD (DE),A
INC HL
INC DE
DJNZ ViewSH1
SUB A
LD (DE),A
POP HL
CALL SetInvert
JP View
ViewStr: DEFB 0x0C,0x00,0x00,0x00
ViewLen: DEFB 0x00
DEFW 0x0122,0x006A
DEFW 0x0068
DEFB 0xF0
ViewName: DB 0x0D DUP 0x00
;-------------------------------------------
ViewFile: SUB A
JR StViewFile.L1
;-------------------------------------------
StViewFile: LD A,0x01
.L1 LD (VFlag+1),A
BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
RET NZ
LD A,(IY+PANEL.EFL)
OR (IY+PANEL.EFH)
RET Z
GETPORT WINSP.CPU1
PUSH AF
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
LD A,(RAMPAGES.LEFTPANEL)
JR Z,.L2 ;!FIXIT
LD A,(RAMPAGES.RIGHTPANEL)
.L2
SETPORT WINSP.CPU1,,0
LD L,(IY+PANEL.FFL)
LD H,(IY+PANEL.FFH)
LD E,(IY+PANEL.CFL)
LD D,(IY+PANEL.CFH)
ADD HL,DE
ADD HL,HL ; *2
ADD HL,HL ; *4
ADD HL,HL ; *8
LD E,L
LD D,H
ADD HL,HL ; *10
ADD HL,DE ; *18
SET 6,H ; | 0x4000
LD DE,WorkBuffer
LD BC,FileHDR.Attr
PUSH HL
ADD HL,BC
LDI
POP HL
INC HL
CALL MakeDOSname
POP AF
SETPORT WINSP.CPU1,,0
LD HL,WorkBuffer
BIT 4,(HL)
RET NZ
INC HL
LD DE,PrevFile
SUB A
.L3 LDI
CP (HL)
JR NZ,.L3
LD (DE),A
VFlag: LD A,0x00
OR A
JR NZ,View1
View: LD IX,fnview_ext
LD DE,PrevFile
CALL TestEXT
RET NC
View1: CALL ResInvert
LD HL,SetInvert
PUSH HL
PUSH IY
LD HL,PrevFile
LD DE,0xC000
LD A,(RAMPAGES.FNVIEW)
LD C,WINSP.CPU3
CALL Resident
POP IY
RET C
SETPORT BORDER,0
; !FIXIT ¯à®¢¥à¨âì ¤«ï íâ® ®­® ¨«¨ ­¥â SAFE_PORTY
SETPORT WINSP.Y_PORT,0xC0
CALL InitScreen
CALL ClearDOSline
LD A,0x02
CALL InitPanels
POP HL
RET
;[]----------------------------------------------------------[]
EditFileSH: BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
RET NZ
CALL ResInvert
LD HL,SetInvert
PUSH HL
MAKEWINDOW WINSUBOBJ.STORE
W_MAIN 200,81,240,62
W_FILL 4,2,232,10,COLORI.BLACK
W_TEXT 110,3,COLORI.WHITE,"Edit"
W_BUTTON 40,42,72,14
W_TEXT 68,45,COLORP.HIGHGRAY,"Ok"
W_BUTTON 128,42,72,14
W_TEXT 148,45,COLORP.HIGHGRAY,"Cancel"
W_TEXT 12,25,COLORP.HIGHGRAY,"Edit the file:"
W_BORDER 86,22,134,12
W_FILL 88,23,130,10,COLORI.WHITE
W_END
LD IX,EditStr
LD HL,ViewEditTab
CALL InputLine
WINDOWCLOSE
RET C
LD A,(EditLen)
OR A
RET Z
LD HL,EditName
LD DE,PrevFile
LD B,A
EditSH1: LD A,(HL)
IF CORR_FILENAME
CALL CorrBigChar
ENDIF
LD (HL),A
LD (DE),A
INC HL
INC DE
DJNZ EditSH1
SUB A
LD (DE),A
POP HL
CALL SetInvert
JP Edit
EditStr: DEFB 0x0C,0x00,0x00,0x00
EditLen: DEFB 0x00
DEFW 0x0122,0x006A
DEFW 0x0068
DEFB 0xF0
EditName: DB 0x0D DUP 0x00
;-------------------------------------------
EditFile: SUB A
JR StEditFile.L1
;-------------------------------------------
StEditFile: LD A,0x01
.L1 LD (EFlag),A
BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
RET NZ
LD A,(IY+PANEL.EFL)
OR (IY+PANEL.EFH)
RET Z
GETPORT WINSP.CPU1
PUSH AF
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
LD A,(RAMPAGES.LEFTPANEL)
JR Z,.L2 ;!FIXIT
LD A,(RAMPAGES.RIGHTPANEL)
.L2
SETPORT WINSP.CPU1,,0
LD L,(IY+PANEL.FFL)
LD H,(IY+PANEL.FFH)
LD E,(IY+PANEL.CFL)
LD D,(IY+PANEL.CFH)
ADD HL,DE
ADD HL,HL ; *2
ADD HL,HL ; *4
ADD HL,HL ; *8
LD E,L
LD D,H
ADD HL,HL ; *10
ADD HL,DE ; *18
SET 6,H ; | 0x4000
LD DE,WorkBuffer
LD BC,FileHDR.Attr
PUSH HL
ADD HL,BC
LDI
POP HL
INC HL
CALL MakeDOSname
POP AF
SETPORT WINSP.CPU1,,0
LD HL,WorkBuffer
BIT 4,(HL)
RET NZ
INC HL
LD DE,PrevFile
SUB A
.L3 LDI
CP (HL)
JR NZ,.L3
LD (DE),A
LD A,0x00
EFlag: EQU $-1
OR A
JR NZ,Edit1
Edit: LD IX,fnedit_ext
LD DE,PrevFile
CALL TestEXT
RET NC
Edit1: CALL ResInvert
LD HL,SetInvert
PUSH HL
PUSH IY
LD HL,PrevFile
LD DE,CPU3
LD A,(RAMPAGES.FNEDIT)
LD C,WINSP.CPU3
CALL Resident
POP IY
RET C
SETPORT BORDER,0
; !FIXIT ¯à®¢¥à¨âì ¤«ï íâ® ®­® ¨«¨ ­¥â SAFE_PORTY
SETPORT WINSP.Y_PORT,0xC0
CALL InitScreen
CALL ClearDOSline
LD A,0x02
CALL InitPanels
POP HL
RET