- плагин доделан, описание/history в cdplayer.txt рядом с плагином. FE 1.09 - исправлено: при выходе из редактора с несохраненным файлом и запросе на сохранение клавиша Enter теперь работает как подтверждение сохранения. FN 1.16 - встроенный editor переехал в плагин откуда и запускается по F4, из FN удален. - встроенный viewer переехал в плагин откуда и запускается по F3, из FN удален. - встроенный help переехал в плагин откуда и запускается при нажатии F1, из FN удален. - загрузка плагина отделена от запуска, теперь можно запускать плагины не только из панели FN. - добавлен макрос формирования заголовка для плагинов. - добавлена поддержка работы плагинов в адреса 0x4000-0x7FFF (окно 1) в дополнение к старым 0xC000-0xBFFF (окно 3), пока используется в плагине cdplayer. - в окнах с ошибкой переделан на 2 типа окон вместо многих под каждую ошибку. - исправлена потеря цвета при печати текста по указанному адресу. - текстовым файлам вернул кодировку CP866, readme.md оставлен в кодировке UTF8.
314 lines
5.2 KiB
Plaintext
314 lines
5.2 KiB
Plaintext
|
|
; LAST UPDATE: 27.04.2025 savelij
|
|
|
|
;[]----------------------------------------------------------[]
|
|
BegDIRECTORY LD HL,BegDIR
|
|
NewDIRECTORY PUSH HL
|
|
CALL ResInvert
|
|
POP HL
|
|
CALL SetClock
|
|
PUSH IY
|
|
SPDSS DSSF.CHDIR
|
|
POP IY
|
|
CALL C,DOSError
|
|
PUSH IY
|
|
SPDSS DSSF.CURDISK
|
|
POP IY
|
|
PUSH IY
|
|
POP HL
|
|
LD DE,PANEL.CURR_PATH
|
|
ADD HL,DE
|
|
ADD A,'A'
|
|
CP (HL)
|
|
PUSH AF
|
|
LD (HL),A
|
|
INC HL
|
|
LD (HL),':'
|
|
INC HL
|
|
PUSH IY
|
|
SPDSS DSSF.CURDIR
|
|
POP IY
|
|
POP AF
|
|
JR Z,NewDIRECT1
|
|
LD A,(TreeFlag)
|
|
OR A
|
|
JP Z,InitPanel
|
|
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
|
JP NZ,InitPanel
|
|
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
|
LD HL,LeftPanel + PANEL.CURR_PATH
|
|
LD DE,RightPanel + PANEL.CURR_PATH
|
|
JR Z,NewDIR0
|
|
LD HL,RightPanel + PANEL.CURR_PATH
|
|
LD DE,LeftPanel + PANEL.CURR_PATH
|
|
NewDIR0 SUB A
|
|
.L1 LDI
|
|
CP (HL)
|
|
JR NZ,.L1
|
|
LD (DE),A
|
|
JP InitPanels
|
|
|
|
NewDIRECT1 BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
|
PUSH AF
|
|
CALL NZ,NewDIRTree
|
|
POP AF
|
|
CALL Z,ReadDIR
|
|
CALL PrintPath
|
|
BIT PANELFLAG.B_PRNDOSPATH,(IY + PANEL.PANELFLAG)
|
|
CALL NZ,PrintDOSPath
|
|
CALL PrintDIR
|
|
CALL SetInvert
|
|
CALL PrnFileInfo
|
|
PUSH IY
|
|
POP IX
|
|
LD DE,PANEL.BAR_X
|
|
ADD IX,DE
|
|
CALL InitScrollBar
|
|
LD A,(IY + PANEL.VIEWFLAG)
|
|
AND VIEWFLAG.MASK
|
|
PUSH AF
|
|
CALL Z,PrnHScrBar
|
|
POP AF
|
|
CALL NZ,PrnVScrBar
|
|
JP SetMouse
|
|
|
|
NewDIRTree PUSH IY
|
|
POP HL
|
|
LD DE,PANEL.CURR_PATH
|
|
ADD HL,DE
|
|
INC HL
|
|
INC HL
|
|
IF TREE_REZID
|
|
CALL RESIDENT.FindTreeDIR
|
|
CALL RESIDENT.MakeTreePath
|
|
ELSE
|
|
CALL FindTreeDIRR
|
|
CALL MakeTreePathR
|
|
ENDIF
|
|
PUSH IY
|
|
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
|
LD IY,RightPanel
|
|
JR Z,.L1
|
|
LD IY,LeftPanel
|
|
.L1 CALL NewDIRECTORY
|
|
POP IY
|
|
RET
|
|
|
|
;[]----------------------------------------------------------[]
|
|
RefreshDIR BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
|
JR NZ,RfDIRn1
|
|
CALL ReadDIR
|
|
CALL PrintDIR
|
|
CALL PrnFileInfo
|
|
PUSH IY
|
|
POP IX
|
|
LD DE,PANEL.BAR_X
|
|
ADD IX,DE
|
|
CALL InitScrollBar
|
|
LD A,(IY + PANEL.VIEWFLAG)
|
|
AND VIEWFLAG.MASK
|
|
PUSH AF
|
|
CALL Z,PrnHScrBar
|
|
POP AF
|
|
CALL NZ,PrnVScrBar
|
|
RfDIRn1 LD HL,LeftPanel + PANEL.CURR_PATH
|
|
LD DE,RightPanel + PANEL.CURR_PATH
|
|
RefrDIR LD A,(DE)
|
|
CP (HL)
|
|
RET NZ
|
|
INC HL
|
|
INC DE
|
|
LD A,(HL)
|
|
OR A
|
|
JR NZ,RefrDIR
|
|
LD A,(DE)
|
|
OR A
|
|
RET NZ
|
|
PUSH IY
|
|
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
|
LD IY,RightPanel
|
|
JR Z,.L1
|
|
LD IY,LeftPanel
|
|
.L1 BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
|
JR NZ,RefrDex
|
|
CALL ReadDIR
|
|
CALL PrintDIR
|
|
CALL PrnFileInfo
|
|
PUSH IY
|
|
POP IX
|
|
LD DE,PANEL.BAR_X
|
|
ADD IX,DE
|
|
CALL InitScrollBar
|
|
LD A,(IY + PANEL.VIEWFLAG)
|
|
AND VIEWFLAG.MASK
|
|
PUSH AF
|
|
CALL Z,PrnHScrBar
|
|
POP AF
|
|
CALL NZ,PrnVScrBar
|
|
RefrDex POP IY
|
|
RET
|
|
|
|
;[]----------------------------------------------------------[]
|
|
FindPrevFile LD A,(IY + PANEL.FILES_ALL)
|
|
OR (IY + PANEL.FILES_ALL + 1)
|
|
RET Z
|
|
BIT PANELFLAG.B_PRNDOSPATH,(IY + PANEL.PANELFLAG)
|
|
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 IX,0x4000
|
|
LD HL,0x4001
|
|
LD BC,0x0000
|
|
FndPrFile0 PUSH HL
|
|
BIT DIR.B_Dir,(IX + FileHDR.Attr)
|
|
JR NZ,FndPrFileNxt
|
|
LD DE,WorkBuffer
|
|
PUSH DE
|
|
PUSH BC
|
|
CALL MakeDOSname
|
|
POP BC
|
|
POP HL
|
|
LD DE,PrevFile
|
|
FndPrFile1 LD A,(DE)
|
|
OR A
|
|
JR Z,FndPrFileE
|
|
CP (HL)
|
|
JR NZ,FndPrFileNxt
|
|
INC HL
|
|
INC DE
|
|
JR FndPrFile1
|
|
|
|
FndPrFileNxt POP HL
|
|
LD DE,FileHDR.SIZE
|
|
ADD HL,DE
|
|
ADD IX,DE
|
|
INC BC
|
|
LD A,(HL)
|
|
OR A
|
|
JR NZ,FndPrFile0
|
|
JP FndTreeExt
|
|
|
|
FndPrFileE LD A,(HL)
|
|
OR A
|
|
JR NZ,FndPrFileNxt
|
|
JR FndTree
|
|
|
|
PrevFile DB 13 DUP 0
|
|
|
|
;[]----------------------------------------------------------[]
|
|
FindPrevDIR LD A,(IY + PANEL.FILES_ALL)
|
|
OR (IY + PANEL.FILES_ALL + 1)
|
|
RET Z
|
|
BIT PANELFLAG.B_PRNDOSPATH,(IY + PANEL.PANELFLAG)
|
|
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 IX,0x4000
|
|
LD HL,0x4001
|
|
LD BC,0x0000
|
|
FndPrDIR0 PUSH HL
|
|
BIT DIR.B_Dir,(IX + FileHDR.Attr)
|
|
JR Z,FndPrDIRnxt
|
|
LD DE,WorkBuffer
|
|
PUSH DE
|
|
PUSH BC
|
|
CALL MakeDOSname
|
|
POP BC
|
|
POP HL
|
|
LD DE,PrevDIR
|
|
FndPrDIR1 LD A,(DE)
|
|
OR A
|
|
JR Z,FndPrDIRe
|
|
CP (HL)
|
|
JR NZ,FndPrDIRnxt
|
|
INC HL
|
|
INC DE
|
|
JR FndPrDIR1
|
|
|
|
FndPrDIRnxt POP HL
|
|
LD DE,FileHDR.SIZE
|
|
ADD HL,DE
|
|
ADD IX,DE
|
|
INC BC
|
|
LD A,(HL)
|
|
OR A
|
|
JR NZ,FndPrDIR0
|
|
JR FndTreeExt
|
|
|
|
FndPrDIRe LD A,(HL)
|
|
OR A
|
|
JR NZ,FndPrDIRnxt
|
|
FndTree INC SP
|
|
INC SP
|
|
LD L,C
|
|
LD H,B
|
|
LD C,(IY + PANEL.FILES_PAGE)
|
|
LD B,(IY + PANEL.FILES_PAGE + 1)
|
|
LD DE,0x0000
|
|
EX DE,HL
|
|
OR A
|
|
SBC HL,BC
|
|
EX DE,HL
|
|
.L1 EX DE,HL
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
OR A
|
|
SBC HL,BC
|
|
JR NC,.L1
|
|
ADD HL,BC
|
|
LD (IY + PANEL.CURR_FILE),L
|
|
LD (IY + PANEL.CURR_FILE + 1),H
|
|
LD (IY + PANEL.FIRST_FILE),E
|
|
LD (IY + PANEL.FIRST_FILE + 1),D
|
|
FndTreeExt POP AF
|
|
SETPORT WINSP.CPU1,,0
|
|
RET
|
|
|
|
PrevDIR DB 13 DUP 0
|
|
|
|
;[]----------------------------------------------------------[]
|
|
MakeDOSname LD BC,0x0820
|
|
.L1 LD A,(HL)
|
|
CP C
|
|
JR Z,.L2
|
|
INC HL
|
|
LD (DE),A
|
|
INC DE
|
|
DJNZ .L1
|
|
JR .L5
|
|
|
|
.L2
|
|
; LD A,B
|
|
; OR A
|
|
; JR Z,.L5
|
|
INC HL
|
|
DJNZ .L2
|
|
.L5 LD B,0x03
|
|
INC HL
|
|
LD A,(HL)
|
|
CP C
|
|
JR Z,.L4
|
|
LD A,'.'
|
|
LD (DE),A
|
|
INC DE
|
|
.L3 LD A,(HL)
|
|
INC HL
|
|
LD (DE),A
|
|
INC DE
|
|
DJNZ .L3
|
|
.L4 SUB A
|
|
LD (DE),A
|
|
RET
|