flex_nav/rez2_fnsearch.a80
savelij13 881739653b CDplayer.flx 1.1:
- плагин доделан, описание/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.
2025-07-25 16:01:19 +03:00

387 lines
5.9 KiB
Plaintext

; LAST UPDATE: 24.07.2025 savelij
;[]==========================================================[]
QSearchR LD A,(IY+PANEL.FILES_ALL)
OR (IY+PANEL.FILES_ALL + 1)
RET Z
SETPORT WINSP.Y_PORT,0xC0
LD HL,SearchN
LD B,0x0C
SUB A
.L1 LD (HL),A
INC HL
DJNZ .L1
LD (SrchLen),A
LD L,(IY+PANEL.X)
LD H,(IY+PANEL.X + 1)
LD DE,0x000A
ADD HL,DE
LD (.SrchX1),HL
LD DE,0x0034
ADD HL,DE
LD (SrchX2),HL
LD HL,0x00E0
BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
JR Z,.L2
LD HL,0x00D0
.L2 LD (.SrchY1),HL
LD DE,0x0007
ADD HL,DE
LD (SrchY2),HL
MAKEWINDOW WINSUBOBJ.STORE
W_MAIN 0,0,166,20
.SrchX1 EQU $ - 8
.SrchY1 EQU $ -6
W_TEXT 8,7,COLORP.HIGHGRAY,"Search:"
W_BORDER 48,4,108,12
W_FILL 50,5,104,10,COLORI.WHITE
W_END
LD IX,SearchStr
LD (InpLnData),IX
SUB A
LD (IX+0x02),A
LD (IX+0x03),A
LD (IX+0x04),A
CALL InsInpLnCol
CALL PrintInpLn+3
.SearchInpLp HALT
CALL ChCursor
CALL TestCMOS
SPMOUSE MOUSEF.READ_STATE
OR A
JP NZ,SearchExit
SPDSS DSSF.SCANKEY
JR Z,.SearchInpLp
RES 7,D
BIT KEYBSTAT.B_CTRL,B ;Ctrl
JR NZ,.SearchInpLp
LD IX,SearchTab
BIT KEYBSTAT.B_ALT,B ;Alt
JR Z,.Search1
LD A,D
OR A
JR Z,.SearchInpLp
CP SC.LCTRL
JR NC,.SearchInpLp
LD HL,AltTable
DEC A
ADD A,L
LD L,A
JR NC,.L3
INC H
.L3 LD A,(HL)
IF CORR_FILENAME
BIT 0,C
CALL NZ,CorrSmallChar
ENDIF
LD E,A
.Search1 LD A,(IX+0x00)
INC IX
CP 0xFF
JR Z,.SearchInpLp1
LD L,A
LD H,(IX+0x00)
INC IX
LD C,(IX+0x00)
INC IX
LD B,(IX+0x00)
INC IX
OR A
SBC HL,DE
JR NZ,.Search1
LD IX,(InpLnData)
LD HL,.SearchInpLp
PUSH HL
PUSH BC
RET
.SearchInpLp1 LD IX,(InpLnData)
LD HL,.SearchInpLp
PUSH HL
LD A,E
JR InsSymbolSrch
SearchTab DW SC.ESC << 8 | 0x1B, SrchExit
DW SC.ENTER << 8 | 0x0D, SrchExit
DW SC.BKSP << 8 | 0x08, QSdelet
DB 0xFF
InsSymbolSrch CP 0x20
RET C
EX AF,AF'
LD A,(IX+0x04) ;InpytSymb
SUB (IX+0x00) ;Max len
RET NC
LD A,(IX+0x04)
SUB (IX+0x02)
JR Z,NotInsSrch
LD C,A
LD B,0x00
PUSH IX
POP HL
LD DE,LenInpData
ADD HL,DE
LD E,(IX+0x04)
ADD HL,DE
LD E,L
LD D,H
DEC HL
LDDR
NotInsSrch PUSH IX
POP HL
LD DE,LenInpData
ADD HL,DE
LD E,(IX+0x02)
ADD HL,DE
EX AF,AF'
LD (HL),A
INC (IX+0x04)
INC (IX+0x02)
CALL SearchFile
JP C,ILdelet
FoundSFile PUSH HL
CALL PrintInpLn
POP HL
EX DE,HL
LD L,(IY+PANEL.CURR_FILE)
LD H,(IY+PANEL.CURR_FILE + 1)
LD C,(IY+PANEL.FIRST_FILE)
LD B,(IY+PANEL.FIRST_FILE + 1)
ADD HL,BC
SBC HL,DE
EX DE,HL
RET Z
PUSH HL
CALL ResInvert
POP HL
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 C,(IY+PANEL.FIRST_FILE)
LD B,(IY+PANEL.FIRST_FILE + 1)
LD (IY+PANEL.FIRST_FILE),E
LD (IY+PANEL.FIRST_FILE + 1),D
EX DE,HL
OR A
SBC HL,BC
CALL NZ,PrintDIR
CALL SetInvert
CALL PrnFileInfo
PUSH IY
POP IX
LD DE,PANEL.BAR_X
ADD IX,DE
LD A,(IY+PANEL.VIEWFLAG)
AND VIEWFLAG.MASK
PUSH AF
CALL Z,PrnHScrBar
POP AF
JP NZ,PrnVScrBar
RET
QSdelet LD A,(IX+0x02)
OR A
RET Z
PUSH IX
POP HL
LD DE,LenInpData
ADD HL,DE
LD E,(IX+0x02)
ADD HL,DE
LD E,L
LD D,H
DEC DE
LD A,(IX+0x04)
SUB (IX+0x02)
JR Z,QSDel1
LD C,A
LD B,0x00
LDIR
SUB A
QSDel1 LD (DE),A
DEC (IX+0x02)
DEC (IX+0x04)
CALL SearchFile
JP NC,FoundSFile
JP PrintInpLn
SearchStr DEFB 0x0C,0x00,0x00,0x00
SrchLen DEFB 0x03
SrchX2 DEFW 0x0000
SrchY2 DEFW 0x0000
DEFW 0x0064
DEFB 0xF0
SearchN DUPL 13,0
AltTable DEFB 0x1B,"1234567890-=",0x08,0x09,"qwertyuiop[]"
DEFB 0x00,"asdfghjkl;'",0x0D,0x00,"zxcvbnm,./",0x00,0x5C
SearchFile BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
JP NZ,SearchFileT ;Tree
PUSH IX
GETPORT WINSP.CPU3
PUSH AF
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
LD A,(RAMPAGES.LEFTPANEL)
JR Z,.L1
LD A,(RAMPAGES.RIGHTPANEL)
.L1
SETPORT WINSP.CPU3,,0
LD IX,0x0000
LD HL,0xC001
LD BC,0x0018
.SearchFlp LD DE,SearchN
LD A,(DE)
IF CORR_FILENAME
CALL CorrBigChar
ENDIF
CP (HL)
JR Z,.SrchF1
IF CORR_FILENAME
CALL CorrSmallChar
ENDIF
CP (HL)
JR NZ,.SearchFnxt
.SrchF1 PUSH HL
PUSH DE
LD DE,WorkBuffer
PUSH DE
CALL MakeDOSname
POP HL
POP DE
.SrchF2 INC DE
LD A,(DE)
OR A
JR Z,.SearchFexit
INC HL
LD A,(HL)
OR A
JR Z,.SearchFnx0
LD A,(DE)
IF CORR_FILENAME
CALL CorrBigChar
ENDIF
CP (HL)
JR Z,.SrchF2
IF CORR_FILENAME
CALL CorrSmallChar
ENDIF
CP (HL)
JR Z,.SrchF2
.SearchFnx0 POP HL
LD BC,0x0018
.SearchFnxt ADD HL,BC
INC IX
LD A,(HL)
OR A
JR NZ,.SearchFlp
POP AF
SETPORT WINSP.CPU3,,0
POP IX
SCF
RET
.SearchFexit INC SP
INC SP
POP AF
SETPORT WINSP.CPU3,,0
PUSH IX
POP HL
POP IX
OR A
RET
SearchFileT PUSH IX
GETPORT WINSP.CPU3
PUSH AF
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
LD A,(RAMPAGES.LEFTPANEL)
JR Z,.L1
LD A,(RAMPAGES.RIGHTPANEL)
.L1
SETPORT WINSP.CPU3,,0
LD IX,0x0000
LD HL,0xC002
LD BC,0x000D
.SearchTlp LD DE,SearchN
LD A,(DE)
IF CORR_FILENAME
CALL CorrBigChar
ENDIF
CP (HL)
JR Z,.SrchT1
IF CORR_FILENAME
CALL CorrSmallChar
ENDIF
CP (HL)
JR NZ,.SearchTnxt
.SrchT1 PUSH HL
.SrchT2 INC DE
LD A,(DE)
OR A
JR Z,.SearchTexit
INC HL
LD A,(HL)
OR A
JR Z,.SearchTnx0
LD A,(DE)
IF CORR_FILENAME
CALL CorrBigChar
ENDIF
CP (HL)
JR Z,.SrchT2
IF CORR_FILENAME
CALL CorrSmallChar
ENDIF
CP (HL)
JR Z,.SrchT2
.SearchTnx0 POP HL
.SearchTnxt ADD HL,BC
INC IX
LD A,(HL)
INC HL
INC HL
INC HL
INC A
JR NZ,.SearchTlp
POP AF
SETPORT WINSP.CPU3,,0
POP IX
SCF
RET
.SearchTexit INC SP
INC SP
POP AF
SETPORT WINSP.CPU3,,0
PUSH IX
POP HL
POP IX
OR A
RET
SrchExit POP HL
SearchExit
WINDOWCLOSE
BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
IF TREE_REZID
CALL NZ,TestTreeR.TestTreeBeg
ELSE
CALL NZ,TestTreeR.TestTreeBeg
ENDIF
RET