- устранено перепутанные кнопки для нажатий мышью для F7 и F9. FileViewer.flx 1.06 - добавлено переключение кодировки в режиме HEX просмотра. FlexNavigaror 1.16.01 - исправлен вылет при создании нового файла по Shift+F4 или просмотр с вводом имени по Shift+F3, плагин был не загружен.
925 lines
20 KiB
Plaintext
925 lines
20 KiB
Plaintext
|
||
; LAST UPDATE: 29.07.2025 savelij
|
||
|
||
ENABLE_CODEPAGE EQU 0
|
||
|
||
INIT_VAR
|
||
SETVAR CursorX
|
||
SETVAR StringX
|
||
SETVAR CursAddX
|
||
SETVAR CursorY
|
||
SETVAR LenString
|
||
SETVAR PrvLenStr
|
||
SETVAR ReadyStr
|
||
SETVAR ReadyFile
|
||
|
||
LineBuffer := WorkBuffer+0x200
|
||
TempBuffer := WorkBuffer+0x300
|
||
|
||
;[]==========================================================[]
|
||
CALL FELoadFile
|
||
RET C
|
||
call ReadEditorIni
|
||
LD IY,EditData
|
||
SUB A
|
||
LD (EditMode),A
|
||
LD (HEXmode),A
|
||
LD (IY + EDBUF_.CursorX),A
|
||
LD (IY + EDBUF_.StringX),A
|
||
LD (IY + EDBUF_.CursAddX),A
|
||
LD (IY + EDBUF_.CursorY),A
|
||
LD (IY + EDBUF_.ReadyStr),A
|
||
LD (IY + EDBUF_.ReadyFile),A
|
||
INC A
|
||
LD (FECrTimer),A
|
||
LD HL,0x0000
|
||
LD (CurLine),HL
|
||
LD (LineShift),HL
|
||
LD (FEPageShift),HL
|
||
CALL FEInitScreen
|
||
EditorBegin CALL InitStatus
|
||
CALL InitFile
|
||
CALL PrintPage
|
||
EditorLoop CALL FEChCursor
|
||
LD A,(EditMode) ; ०¨¬ । ªâ¨à®¢ ¨ï
|
||
OR A
|
||
JP NZ,HEditLoop
|
||
; ०¨¬ । ªâ¨à®¢ ¨ï ⥪áâ
|
||
TEditLoop LD IX,FEASCIItab
|
||
CALL JUMPS.TestCoords
|
||
SPDSS DSSF.SCANKEY ; ަ¨¤ ¥¬ ¦ â¨ï ª« ¢¨è
|
||
JR Z,EditorLoop
|
||
LD A,D
|
||
CP SC.F10
|
||
JP Z,EditorExit
|
||
LD A,E ; …-ASCII ª®¤
|
||
CP 0x1B ; Esc
|
||
JP Z,EditorExit
|
||
LD HL,EditorLoop
|
||
PUSH HL
|
||
OR A
|
||
JP NZ,TInsertSymbol ; ª ª®© â® ¯¥ç âë© á¨¬¢®«?
|
||
LD A,D
|
||
CP SC.F1
|
||
JP Z,FEAbout
|
||
CP SC.F2
|
||
JP Z,SaveFile
|
||
CP SC.F4
|
||
JP Z,ChEditor ; <20>à®á¬®âà ¢ HEX
|
||
CP SC.F7
|
||
JP Z,FEPrintFile
|
||
IF ENABLE_CODEPAGE
|
||
CP SC.F8
|
||
JP Z,ChCodePage
|
||
ENDIF
|
||
CP SC.F9
|
||
JP Z,EditorSetup
|
||
CP SC.XDEL
|
||
JP Z,TDeleteSymbol
|
||
CP SC.X4
|
||
JP Z,TCursorLeft
|
||
CP SC.X6
|
||
JP Z,TCursorRight
|
||
CP SC.X8
|
||
JP Z,TCursorUp
|
||
CP SC.X2
|
||
JP Z,TCursorDown
|
||
CP SC.X7 ; Home
|
||
JP Z,THomeString
|
||
CP SC.X1 ; End
|
||
JP Z,TEndString
|
||
CP SC.X9 ; PageUp
|
||
JP Z,FETPageUp
|
||
CP SC.X3 ; PageDown
|
||
JP Z,TPageDown
|
||
LD A,B
|
||
AND KEYBSTAT.M_ALT + KEYBSTAT.M_CTRL
|
||
CP KEYBSTAT.M_ALT + KEYBSTAT.M_CTRL
|
||
RET Z
|
||
bit KEYBSTAT.B_ALT,B ; <20>ਠ¦ ⮬ Alt
|
||
jr z,.ctrl
|
||
ld a,d
|
||
and %01111111
|
||
CP SC.X4 ; Alt+<
|
||
JP Z,THomeString
|
||
CP SC.X6 ; Alt+>
|
||
JP Z,TEndString
|
||
ret
|
||
|
||
.ctrl: BIT KEYBSTAT.B_CTRL,B ; <20>ਠ¦ ⮬ Ctrl
|
||
RET Z
|
||
LD A,D
|
||
AND %01111111
|
||
CP SC.BKSP
|
||
JP Z,TDeleteWord
|
||
CP SC.Y ; Ctrl+Y - Delete String
|
||
JP Z,TDeleteString
|
||
CP SC.S ; Ctrl+S
|
||
JP Z,SaveFile
|
||
CP SC.D ; Ctrl+D
|
||
JP Z,TDoubleString
|
||
CP SC.P ; Ctrl+P
|
||
JP Z,FEPrintFile
|
||
cp SC.Z ; Ctrl+Z
|
||
jp z,Undo
|
||
CP SC.X4
|
||
JP Z,TWordLeft
|
||
CP SC.X6
|
||
JP Z,TWordRight
|
||
CP SC.X8
|
||
JP Z,TScrollUp
|
||
CP SC.X2
|
||
JP Z,TScrollDown
|
||
CP SC.X7 ; Ctrl+Home
|
||
JP Z,FETBegFile ; ¢ ç «® ä ©«
|
||
CP SC.X1 ; Ctrl+PageEnd
|
||
JP Z,FETEndFile ; ¢ ª®¥æ ä ©«
|
||
RET
|
||
|
||
; ०¨¬ । ªâ¨à®¢ ¨ï HEX
|
||
HEditLoop LD IX,FEHEXtab
|
||
CALL JUMPS.TestCoords
|
||
SPDSS DSSF.SCANKEY ; ަ¨¤ ¥¬ ¦ â¨ï ª« ¢¨è
|
||
JP Z,EditorLoop
|
||
LD A,D
|
||
CP SC.F10 ; F10
|
||
JP Z,EditorExit
|
||
LD A,E ; …-ASCII ª®¤
|
||
CP 0x1B ; Esc
|
||
JP Z,EditorExit
|
||
LD HL,EditorLoop
|
||
PUSH HL
|
||
OR A
|
||
JP NZ,HPutSymbol
|
||
LD A,D
|
||
CP SC.F1
|
||
JP Z,FEAbout
|
||
CP SC.F2
|
||
JP Z,SaveFile
|
||
CP SC.S + 0x80 ; Ctrl+S
|
||
JP Z,SaveFile
|
||
CP SC.F4 ; F4
|
||
JP Z,ChEditor ; <20>à®á¬®âà ¢ ⥪áâ¥
|
||
CP SC.F5 ; F5
|
||
JP Z,FEHGoTo ; <20>¥à¥å®¤ ¤à¥á ¯®«ì§®¢ ⥫ï
|
||
CP SC.F7
|
||
JP Z,FEPrintFile
|
||
CP SC.F9
|
||
JP Z,EditorSetup
|
||
CP SC.X4
|
||
JP Z,HCursorLeft
|
||
CP SC.X6
|
||
JP Z,HCursorRight
|
||
CP SC.X7 ; Home
|
||
JP Z,HHomeString
|
||
CP SC.X1 ; End
|
||
JP Z,HEndString
|
||
CP SC.X8 ; ‘â५ª ¢¢¥àå
|
||
JP Z,HCursorUp
|
||
CP SC.X2 ; ‘â५ª ¢¨§
|
||
JP Z,HCursorDown
|
||
CP SC.X9 ; PageUp
|
||
JP Z,FEHPageUp
|
||
CP SC.X3 ; PageDown
|
||
JP Z,FEHPageDown
|
||
LD A,B
|
||
AND KEYBSTAT.M_ALT + KEYBSTAT.M_CTRL
|
||
CP KEYBSTAT.M_ALT + KEYBSTAT.M_CTRL
|
||
RET Z
|
||
BIT KEYBSTAT.B_CTRL,B
|
||
RET Z
|
||
LD A,D
|
||
AND %01111111
|
||
CP SC.X8
|
||
JP Z,HScrollUp
|
||
CP SC.X2
|
||
JP Z,HScrollDown
|
||
CP SC.X7 ; Ctrl+PageUp
|
||
JP Z,FEHBegFile ; ¢ ç «® ä ©«
|
||
CP SC.X1 ; Ctrl+PageDown
|
||
JP Z,FEHEndFile ; ¢ ª®¥æ ä ©«
|
||
CP SC.P ; Ctrl+P
|
||
JP Z,FEPrintFile
|
||
RET
|
||
|
||
;[]==========================================================[]
|
||
ChEditor LD HL,EditorBegin
|
||
EX (SP),HL
|
||
LD A,(EditMode)
|
||
XOR 0x01
|
||
LD (EditMode),A
|
||
JR NZ,HEXEdit
|
||
ASCIIEdit LD HL,(LineShift)
|
||
LD E,(IY + EDBUF_.CursorX)
|
||
SRL E
|
||
LD D,0x00
|
||
ADD HL,DE
|
||
PUSH HL
|
||
INC HL
|
||
CALL FESearchUp
|
||
LD (LineShift),HL
|
||
LD (FEPageShift),HL
|
||
SUB A
|
||
LD (IY + EDBUF_.StringX),A
|
||
LD (IY + EDBUF_.CursorY),A
|
||
PUSH HL
|
||
CALL GetString
|
||
POP DE
|
||
POP HL
|
||
OR A
|
||
SBC HL,DE
|
||
LD A,L
|
||
CP (IY + EDBUF_.LenString)
|
||
JR C,.L1
|
||
LD A,(IY + EDBUF_.LenString)
|
||
.L1 DEC A
|
||
LD (IY + EDBUF_.StringX),A
|
||
JP TCursorRight
|
||
|
||
HEXEdit CALL PutString
|
||
LD HL,(LineShift)
|
||
LD A,(IY + EDBUF_.StringX)
|
||
CP (IY + EDBUF_.LenString)
|
||
JR C,.L1
|
||
LD A,(IY + EDBUF_.LenString)
|
||
.L1 LD E,A
|
||
LD D,0x00
|
||
ADD HL,DE
|
||
LD A,L
|
||
AND 0x0F
|
||
ADD A,A
|
||
LD (IY + EDBUF_.CursorX),A
|
||
LD A,L
|
||
AND 0xF0
|
||
LD L,A
|
||
LD (LineShift),HL
|
||
LD (FEPageShift),HL
|
||
SUB A
|
||
LD (IY + EDBUF_.CursorY),A
|
||
RET
|
||
|
||
;[]==========================================================[]
|
||
EditorExit CALL PutString
|
||
CALL FEResCursor
|
||
LD A,(IY + EDBUF_.ReadyFile)
|
||
OR A
|
||
JP Z,QuitAsk;EditorE
|
||
MAKEWINDOW WINSUBOBJ.STORE
|
||
W_MAIN 208,80,224,60
|
||
W_FILL 4,2,216,10,COLORI.BLACK
|
||
W_TEXT 88,3,COLORI.WHITE,"Information"
|
||
W_TEXT 64,19,COLORP.HIGHGRAY,"File has been modified."
|
||
W_TEXT 96,29,COLORP.HIGHGRAY,"Save ?"
|
||
W_BUTTON 32,42,72,14
|
||
W_TEXT 58,45,COLORP.HIGHGRAY,"Yes"
|
||
W_BUTTON 120,42,72,14
|
||
W_TEXT 150,45,COLORP.HIGHGRAY,"No"
|
||
W_END
|
||
SureLoop LD IX,SureTab
|
||
CALL JUMPS.TestCoords
|
||
SPDSS DSSF.SCANKEY
|
||
JR Z,SureLoop
|
||
LD A,B
|
||
OR A
|
||
JR NZ,SureLoop
|
||
LD A,E
|
||
CP 0x1B
|
||
SCF
|
||
JR Z,SureExit
|
||
CP 0x0D
|
||
JR Z,SureOkey
|
||
RES 5,A
|
||
CP 'N'
|
||
JR Z,SureExit
|
||
CP 'Y'
|
||
JR NZ,SureLoop
|
||
SureOkey CALL SaveFile
|
||
OR A
|
||
SureExit
|
||
WINDOWCLOSE
|
||
JP C,EditorLoop
|
||
EditorE LD A,(FEMemIndef)
|
||
SPDSS DSSF.FREEMEM
|
||
OR A
|
||
RET
|
||
|
||
;[]==========================================================[]
|
||
QuitAsk: ld a,0
|
||
.param EQU $-1
|
||
and a
|
||
jr z,EditorE
|
||
MAKEWINDOW WINSUBOBJ.STORE
|
||
W_MAIN 208,88,224,50
|
||
W_FILL 4,2,216,10,COLORI.BLACK
|
||
W_TEXT 104,3,COLORI.WHITE,"Quit"
|
||
W_TEXT 28,19,COLORP.HIGHGRAY,"Do you want to close the editor?"
|
||
W_BUTTON 32,32,72,14
|
||
W_TEXT 58,35,COLORP.HIGHGRAY,"Yes"
|
||
W_BUTTON 120,32,72,14
|
||
W_TEXT 150,35,COLORP.HIGHGRAY,"No"
|
||
W_END
|
||
FEQuitLoop: LD IX,FEQuitTab
|
||
CALL JUMPS.TestCoords
|
||
SPDSS DSSF.SCANKEY
|
||
JR Z,FEQuitLoop
|
||
LD A,B
|
||
OR A
|
||
JR NZ,FEQuitLoop
|
||
LD A,E
|
||
CP 0x1B
|
||
scf
|
||
JP Z,SureExit
|
||
CP 0x0D
|
||
JP Z,SureExit
|
||
RES 5,A
|
||
CP 'Y'
|
||
JP Z,SureExit
|
||
CP 'N'
|
||
JR NZ,FEQuitLoop
|
||
FEQuitAbort: SCF
|
||
JP SureExit
|
||
|
||
;[]==========================================================[]
|
||
FEInitScreen
|
||
MAKEWINDOW WINSUBOBJ.NOSTORE
|
||
W_MAIN 0,0,640,256
|
||
W_FILL 4,2,632,10,COLORI.BLACK
|
||
W_TEXT 16,3,COLORI.WHITE,"FN File Editor v\{FLEX_VERS.EDITOR}"
|
||
W_HORIZLINE 0,13,640
|
||
W_TEXT 8,17,COLORP.HIGHGRAY,"Editing:"
|
||
W_VERTICLINE 366,16,10
|
||
W_TEXT 400,17,COLORP.HIGHGRAY,"Line:"
|
||
W_TEXT 480,17,COLORP.HIGHGRAY,"Col:"
|
||
W_TEXT 552,17,COLORP.HIGHGRAY,"Free:"
|
||
W_HORIZLINE 0,27,640
|
||
W_HORIZLINE 0,227,640
|
||
W_ICONUPARROW 624,28
|
||
W_FILL 624,36,16,184,COLORI.HIGHGRAY
|
||
W_ICONDOWNARROW 624,220
|
||
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
|
||
.L1 INC HL
|
||
CP (HL)
|
||
JR NZ,.L1
|
||
DEC HL
|
||
LD A,'\\'
|
||
CP (HL)
|
||
INC HL
|
||
JR Z,.L2
|
||
LD (HL),A
|
||
INC HL
|
||
.L2 EX DE,HL
|
||
LD HL,EditingFile+33
|
||
SUB A
|
||
.L3 LDI
|
||
CP (HL)
|
||
JR NZ,.L3
|
||
LD (DE),A
|
||
LD IX,0x0130
|
||
LD HL,WorkBuffer
|
||
LD DE,0x0030
|
||
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
|
||
JP JUMPS.SetCMOSPrint
|
||
|
||
;[]==========================================================[]
|
||
InitStatus
|
||
IF ENABLE_CODEPAGE
|
||
CALL InitCodePage
|
||
ENDIF
|
||
LD A,(EditMode)
|
||
OR A
|
||
JP NZ,InitHEXStatus
|
||
MAKEWINDOW WINSUBOBJ.WOBIND
|
||
W_HORIZLINE 0,235,626
|
||
W_VERTICLINE 622,228,8
|
||
W_ICONLEFTARROW 0,228
|
||
W_FILL 16,228,592,8,COLORI.HIGHGRAY
|
||
W_ICONRIGHTARROW 608,228
|
||
W_HORIZLINE 0,241,640
|
||
W_FILL 2,243,636,12,COLORI.HIGHGRAY
|
||
W_HORIZLINE 2,255,637
|
||
W_BUTTON 0,242,80,14
|
||
W_TEXT 18,245,COLORP.HIGHGRAY,"F1 About"
|
||
W_BUTTON 80,242,80,14
|
||
W_TEXT 100,245,COLORP.HIGHGRAY,"F2 Save"
|
||
W_BUTTON 160,242,80,14
|
||
W_TEXT 184,245,COLORP.HIGHGRAY,"F4 Hex"
|
||
IF ENABLE_CODEPAGE
|
||
W_BUTTON 340,242,80,14
|
||
W_TEXT 362,245,COLORP.HIGHGRAY,"F7 Print"
|
||
W_BUTTON 420,242,60,14
|
||
W_ADRTEXT 432,245,COLORP.HIGHGRAY,0
|
||
ASCIIenc1 EQU $ - 2
|
||
ELSE
|
||
W_BUTTON 400,242,80,14
|
||
W_TEXT 422,245,COLORP.HIGHGRAY,"F7 Print"
|
||
ENDIF
|
||
W_BUTTON 480,242,80,14
|
||
W_TEXT 492,245,COLORP.HIGHGRAY,"F9 Settings"
|
||
W_BUTTON 560,242,80,14
|
||
W_TEXT 580,245,COLORP.HIGHGRAY,"F10 Quit"
|
||
W_END
|
||
RET
|
||
|
||
InitHEXStatus
|
||
MAKEWINDOW WINSUBOBJ.WOBIND
|
||
W_HORIZLINE 0,227,640
|
||
W_FILL 2,229,636,10,COLORI.HIGHGRAY
|
||
W_HORIZLINE 2,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 100,245,COLORP.HIGHGRAY,"F2 Save"
|
||
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"
|
||
IF ENABLE_CODEPAGE
|
||
W_BUTTON 340,242,80,14
|
||
W_TEXT 362,245,COLORP.HIGHGRAY,"F7 Print"
|
||
W_BUTTON 420,242,60,14
|
||
W_ADRTEXT 432,245,COLORP.HIGHGRAY,0
|
||
ASCIIenc2 EQU $ - 2
|
||
ELSE
|
||
W_BUTTON 400,242,80,14
|
||
W_TEXT 422,245,COLORP.HIGHGRAY,"F7 Print"
|
||
ENDIF
|
||
W_BUTTON 480,242,80,14
|
||
W_TEXT 492,245,COLORP.HIGHGRAY,"F9 Settings"
|
||
W_BUTTON 560,242,80,14
|
||
W_TEXT 580,245,COLORP.HIGHGRAY,"F10 Quit"
|
||
W_END
|
||
RET
|
||
|
||
;[]==========================================================[]
|
||
InitFile LD A,(EditMode)
|
||
OR A
|
||
JR NZ,InitFileHex
|
||
CALL JUMPS.SetClock
|
||
LD HL,0x0000
|
||
LD E,L
|
||
LD D,H
|
||
InitAlp PUSH HL
|
||
LD BC,(LineShift)
|
||
OR A
|
||
SBC HL,BC
|
||
POP HL
|
||
JR NZ,.L1
|
||
LD (CurLine),DE
|
||
.L1 PUSH DE
|
||
CALL FESearchDown
|
||
POP DE
|
||
INC DE
|
||
JR NC,InitAlp
|
||
DEC DE
|
||
LD (EquipLines),DE
|
||
LD (ELines),DE
|
||
LD HL,TBarU
|
||
LD (BarPgU),HL
|
||
LD HL,TBarD
|
||
LD (BarPgD),HL
|
||
LD IX,EditVBar
|
||
CALL JUMPS.InitScrollBar
|
||
LD HL,0x00F0
|
||
LD (CScrnX),HL
|
||
LD IX,EditHBar
|
||
CALL JUMPS.InitScrollBar
|
||
LD HL,0xFFFF
|
||
LD (CLine),HL
|
||
LD H,0x00
|
||
LD (CAddX),HL
|
||
JP JUMPS.SetMouse
|
||
|
||
InitFileHex LD HL,(FEFileLenght)
|
||
LD A,L
|
||
SRL H
|
||
RR L
|
||
SRL H
|
||
RR L
|
||
SRL H
|
||
RR L
|
||
SRL H
|
||
RR L
|
||
AND 0x0F
|
||
JR Z,.L1
|
||
INC HL
|
||
.L1 LD (EquipLines),HL
|
||
LD (ELines),HL
|
||
LD HL,(LineShift)
|
||
SRL H
|
||
RR L
|
||
SRL H
|
||
RR L
|
||
SRL H
|
||
RR L
|
||
SRL H
|
||
RR L
|
||
LD (CurLine),HL
|
||
LD HL,HBarU
|
||
LD (BarPgU),HL
|
||
LD HL,HBarD
|
||
LD (BarPgD),HL
|
||
LD IX,EditVBar
|
||
CALL JUMPS.InitScrollBar
|
||
LD HL,0xFFFF
|
||
LD (CLine),HL
|
||
RET
|
||
|
||
EditVBar DW 624 ; X ¯®§¨æ¨ï áªà®«¡ à
|
||
DW 36 ; Y ¯®§¨æ¨ï áªà®«¡ à
|
||
DW 184 ; Max ¤«¨ áªà®«¡ à
|
||
DW 0 ; ⥪.¤«¨ áªà®«¡ à
|
||
BarPgU DW 0 ; €¤à¥á ï祩ª¨ BarLeft
|
||
BarPgD DW 0 ; €¤à¥á ï祩ª¨ BarRight
|
||
DW 25 ; Š®«-¢® áâப áâà ¨æ¥
|
||
ELines DW 0 ; ޡ饥 ª®«-¢® áâப
|
||
CLine DW 0 ; <20>¥à¢ ï áâப áâà ¨æ¥
|
||
EditHBar DW 16 ; X ¯®§¨æ¨ï áªà®«¡ à
|
||
DW 228 ; Y ¯®§¨æ¨ï áªà®«¡ à
|
||
DW 592 ; Max ¤«¨ áªà®«¡ à
|
||
DW 0 ; ⥪.¤«¨ áªà®«¡ à
|
||
DW TBarL ; €¤à¥á ï祩ª¨ BarLeft
|
||
DW TBarR ; €¤à¥á ï祩ª¨ BarRight
|
||
DW 78 ; Š®«-¢® áâப áâà ¨æ¥
|
||
CScrnX DW 0 ; ޡ饥 ª®«-¢® áâப
|
||
CAddX DW 0 ; <20>¥à¢ ï áâப áâà ¨æ¥
|
||
|
||
;[]==========================================================[]
|
||
PrintPage LD A,(EditMode)
|
||
OR A
|
||
JP Z,FEPrnASCIIpage
|
||
JP FEPrnHEXpage
|
||
|
||
PrnEDITinfo LD A,(EditMode)
|
||
OR A
|
||
JP Z,PrnASCIIinfo
|
||
JP PrnHEXinfo
|
||
|
||
;[]==========================================================[]
|
||
FEChCursor HALT
|
||
LD HL,FECrTimer
|
||
DEC (HL)
|
||
RET NZ
|
||
LD (HL),CursTimer
|
||
LD A,(FECurCursor)
|
||
XOR 0x01
|
||
LD (FECurCursor),A
|
||
JR Z,ResCurs
|
||
JR SetCurs
|
||
|
||
FESetCursor LD (CursorPos),DE
|
||
LD A,0x01
|
||
LD (FECurCursor),A
|
||
LD A,CursTimer
|
||
LD (FECrTimer),A
|
||
SetCurs
|
||
GETPORT WINSP.CPU1
|
||
PUSH AF
|
||
GETPORT WINSP.Y_PORT
|
||
PUSH AF
|
||
SETPORT WINSP.CPU1,0x50
|
||
LD DE,(CursorPos)
|
||
LD L,E
|
||
LD H,0x00
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
SET 6,H
|
||
LD A,D
|
||
ADD A,A
|
||
ADD A,A
|
||
ADD A,A
|
||
ADD A,0x22
|
||
LD C,A
|
||
LD B,COLORP.FILES + COLORI.FILES
|
||
DI
|
||
LD DE,FECursBuffer
|
||
LD A,C
|
||
SETPORT WINSP.Y_PORT,,0
|
||
ACCEL ACCELCMD.SET_BUFFER
|
||
LD A,0x04
|
||
ACCEL ACCELCMD.COPY
|
||
LD A,(HL)
|
||
LD (DE),A
|
||
ACCEL ACCELCMD.FILL
|
||
LD (HL),B
|
||
ACCEL ACCELCMD.OFF
|
||
INC C
|
||
LD DE,FECursBuffer+4
|
||
LD A,C
|
||
SETPORT WINSP.Y_PORT,,0
|
||
ACCEL ACCELCMD.COPY
|
||
LD A,(HL)
|
||
LD (DE),A
|
||
ACCEL ACCELCMD.FILL
|
||
LD (HL),B
|
||
ACCEL ACCELCMD.OFF
|
||
EI
|
||
POP AF
|
||
SETPORT WINSP.Y_PORT,,0
|
||
POP AF
|
||
SETPORT WINSP.CPU1,,0
|
||
RET
|
||
|
||
FEResCursor SUB A
|
||
LD (FECurCursor),A
|
||
INC A
|
||
LD (FECrTimer),A
|
||
ResCurs
|
||
GETPORT WINSP.CPU1
|
||
PUSH AF
|
||
GETPORT WINSP.Y_PORT
|
||
PUSH AF
|
||
SETPORT WINSP.CPU1,0x50
|
||
LD DE,(CursorPos)
|
||
LD L,E
|
||
LD H,0x00
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
SET 6,H
|
||
LD A,D
|
||
ADD A,A
|
||
ADD A,A
|
||
ADD A,A
|
||
ADD A,0x22
|
||
LD C,A
|
||
DI
|
||
LD DE,FECursBuffer
|
||
LD A,C
|
||
SETPORT WINSP.Y_PORT,,0
|
||
ACCEL ACCELCMD.SET_BUFFER
|
||
LD A,0x04
|
||
ACCEL ACCELCMD.COPY
|
||
LD A,(DE)
|
||
LD (HL),A
|
||
ACCEL ACCELCMD.OFF
|
||
INC C
|
||
LD DE,FECursBuffer+4
|
||
LD A,C
|
||
SETPORT WINSP.Y_PORT,,0
|
||
ACCEL ACCELCMD.COPY
|
||
LD A,(DE)
|
||
LD (HL),A
|
||
ACCEL ACCELCMD.OFF
|
||
EI
|
||
POP AF
|
||
SETPORT WINSP.Y_PORT,,0
|
||
POP AF
|
||
SETPORT WINSP.CPU1,,0
|
||
RET
|
||
|
||
;[]==========================================================[]
|
||
FEAbout CALL FEResCursor
|
||
MAKEWINDOW WINSUBOBJ.STORE
|
||
W_MAIN 160,72,320,85
|
||
W_FILL 4,2,312,10,COLORI.BLACK
|
||
W_TEXT 144,3,COLORI.WHITE,"About"
|
||
W_TEXT 96,18,COLORP.HIGHGRAY,"Flex Navigator File Editor"
|
||
W_TEXT 96,28,COLORP.HIGHGRAY,"v\{FLEX_VERS.EDITOR} build \{BUILDDATE}"
|
||
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
|
||
FEAboutLoop LD IX,FEAboutTab
|
||
CALL JUMPS.TestCoords
|
||
SPDSS DSSF.SCANKEY
|
||
JR Z,FEAboutLoop
|
||
LD A,B
|
||
OR A
|
||
JR NZ,FEAboutLoop
|
||
LD A,E
|
||
CP 0x1B
|
||
JR Z,FEAboutExt
|
||
CP 0x0D
|
||
JR Z,FEAboutExt
|
||
RES 5,A
|
||
CP 'O'
|
||
JR NZ,FEAboutLoop
|
||
FEAboutExt
|
||
WINDOWCLOSE
|
||
RET
|
||
|
||
;[]==========================================================[]
|
||
FEScrollSCRup LD DE,0x241C
|
||
JR FEScrlSCRDnUp
|
||
|
||
FEScrollSCRdown LD DE,0x1C24
|
||
;<3B> ¢å®¤:
|
||
; D - Y ®âªã¤
|
||
; … - Y ªã¤
|
||
FEScrlSCRDnUp DI
|
||
PUSH DE
|
||
SPMOUSE MOUSEF.REFRESH
|
||
POP DE
|
||
GETPORT WINSP.CPU1
|
||
PUSH AF
|
||
SETPORT WINSP.CPU1,0x50
|
||
LD HL,0x4000
|
||
LD BC,312
|
||
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
|
||
CPI
|
||
JP PE,.ScSCRN1
|
||
POP AF
|
||
SETPORT WINSP.CPU1,,0
|
||
EI
|
||
RET
|
||
|
||
IF ENABLE_CODEPAGE
|
||
InitCodePage: LD A,0
|
||
CodePage EQU $-1
|
||
LD L,A
|
||
ADD A,A ; *2
|
||
ADD A,L ; *3
|
||
ADD A,A ; *6
|
||
ADD A,L ; *7
|
||
LD HL,EncDos
|
||
ADD A,L
|
||
LD L,A
|
||
ADC A,H
|
||
SUB L
|
||
LD H,A
|
||
LD (ASCIIenc1),HL
|
||
LD (ASCIIenc2),HL
|
||
LD A, (CodePage)
|
||
AND A
|
||
JR NZ,.next
|
||
LD HL,0
|
||
.call: LD (PutLineA2),A
|
||
LD (PutLineA2 + 1),HL
|
||
LD (InsSymbol),A
|
||
LD (InsSymbol + 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
|
||
|
||
EncDos: DZ "F8 DOS"
|
||
EncWin: DZ "F8 WIN"
|
||
EncKoi: DZ "F8 KOI"
|
||
ENDIF
|
||
|
||
;[]==========================================================[]
|
||
include fedos.a80
|
||
include fetext.a80
|
||
include fehex.a80
|
||
include feprn.a80
|
||
include fesetup.a80
|
||
|
||
;[]==========================================================[]
|
||
FEASCIItab: DW 0,624, 28,228,%0000000000000000,%0000000000000000,TNewCrPos,0
|
||
DW 0, 80,242,256,%0000000000000001,%0000000000000000,FEAbout,0 ; F1
|
||
DW 80,160,242,256,%0000000000000001,%0000000000000000,SaveFile,0 ; F2
|
||
DW 160,240,242,256,%0000000000000001,%0000000000000000,ChEditor,0 ; F4
|
||
IF ENABLE_CODEPAGE
|
||
DW 340,420,242,256,%0000000000000001,%0000000000000000,FEPrintFile,0 ; F7
|
||
DW 420,480,242,256,%0000000000000001,%0000000000000000,ChCodePage,0 ; F8
|
||
ELSE
|
||
DW 400,480,242,256,%0000000000000001,%0000000000000000,FEPrintFile,0
|
||
ENDIF
|
||
DW 480,560,242,256,%0000000000000001,%0000000000000000,EditorSetup,0 ; F9
|
||
DW 560,640,242,256,%0000000000100001,%0000000000000000,EditorExit,0 ; F10
|
||
DW 624,640, 28, 36,%0000000000000011,%0000000000000000,TCursorUp,0
|
||
DW 624,640,220,228,%0000000000000011,%0000000000000000,TCursorDown,0
|
||
TBarU EQU $+6
|
||
DW 624,640, 28, 0,%0000000000000000,%0000000000000000,FETPageUp,0
|
||
TBarD EQU $+4
|
||
DW 624,640, 0,228,%0000000000000000,%0000000000000000,TPageDown,0
|
||
DW 0, 16,228,236,%0000000000000011,%0000000000000000,TCursorLeft,0
|
||
DW 608,624,228,236,%0000000000000011,%0000000000000000,TCursorRight,0
|
||
TBarL EQU $+2
|
||
DW 16, 0,228,236,%0000000000000000,%0000000000000000,TCursorLeft,0
|
||
TBarR: DW 0,608,228,236,%0000000000000000,%0000000000000000,TCursorRight,0
|
||
DW 0x8000
|
||
|
||
FEHEXtab: DW 0, 80,242,256,%0000000000000001,%0000000000000000,FEAbout,0 ; F1
|
||
DW 80,160,242,256,%0000000000000001,%0000000000000000,SaveFile,0 ; F2
|
||
DW 160,240,242,256,%0000000000000001,%0000000000000000,ChEditor,0 ; F4
|
||
DW 240,320,242,256,%0000000000000001,%0000000000000000,FEHGoTo,0 ; F5
|
||
IF ENABLE_CODEPAGE
|
||
DW 340,420,242,256,%0000000000000001,%0000000000000000,FEPrintFile,0 ; F7
|
||
DW 420,480,242,256,%0000000000000001,%0000000000000000,ChCodePage,0 ; F8
|
||
ELSE
|
||
DW 400,480,242,256,%0000000000000001,%0000000000000000,FEPrintFile,0
|
||
ENDIF
|
||
DW 480,560,242,256,%0000000000000001,%0000000000000000,EditorSetup,0 ; F9
|
||
DW 560,640,242,256,%0000000000100001,%0000000000000000,EditorExit,0 ; F10
|
||
|
||
DW 624,640, 28, 36,%0000000000000011,%0000000000000000,HCursorUp,0
|
||
DW 624,640,220,228,%0000000000000011,%0000000000000000,HCursorDown,0
|
||
DW 72,472, 28,228,%0000000000000000,%0000000000000000,HNewHEXPos,0
|
||
DW 488,616, 28,228,%0000000000000000,%0000000000000000,HNewASCPos,0
|
||
HBarU EQU $+6
|
||
DW 624,640, 28, 0,%0000000000000000,%0000000000000000,FEHPageUp,0
|
||
HBarD EQU $+4
|
||
DW 624,640, 0,228,%0000000000000000,%0000000000000000,FEHPageDown,0
|
||
DW 0x8000
|
||
|
||
FEAboutTab: DW 284,356,138,152,%0000000000100001,%0000000000000000,FEAboutExt,0
|
||
DW 0,160, 0,256,%0000000000100000,%0000000000000000,FEAboutExt,0
|
||
DW 480,640, 0,256,%0000000000100000,%0000000000000000,FEAboutExt,0
|
||
DW 0,640, 0, 72,%0000000000100000,%0000000000000000,FEAboutExt,0
|
||
DW 0,640,157,256,%0000000000100000,%0000000000000000,FEAboutExt,0
|
||
DW 0x8000
|
||
|
||
SureTab: DW 240,312,122,136,%0000000000100001,%0000000000000000,SureOkey,0
|
||
DW 328,400,122,136,%0000000000100001,%0000000000000000,SureExit,0
|
||
DW 0,208, 0,256,%0000000100100000,%0000000000000000,EditorLoop,0
|
||
DW 432,640, 0,256,%0000000100100000,%0000000000000000,EditorLoop,0
|
||
DW 0,640, 0, 80,%0000000100100000,%0000000000000000,EditorLoop,0
|
||
DW 0,640,140,256,%0000000100100000,%0000000000000000,EditorLoop,0
|
||
DW 0x8000
|
||
|
||
NewFileTab: DW 240,312,130,144,%0000000000100001,%0000000000000000,NewFExitO,0
|
||
DW 328,400,130,144,%0000000000100001,%0000000000000000,NewFExitC,0
|
||
DW 0,192, 0,256,%0000000000100000,%0000000000000000,NewFExitC,0
|
||
DW 448,640, 0,256,%0000000000100000,%0000000000000000,NewFExitC,0
|
||
DW 0,640, 0, 88,%0000000000100000,%0000000000000000,NewFExitC,0
|
||
DW 0,640,148,256,%0000000000100000,%0000000000000000,NewFExitC,0
|
||
DW 0x8000
|
||
|
||
FEQuitTab: DW 240,312,120,134,%0000000000100001,%0000000000000000,SureExit,0
|
||
DW 328,400,120,134,%0000000000100001,%0000000000000000,FEQuitAbort,0
|
||
DW 0,208, 0,256,%0000000000100000,%0000000000000000,FEQuitAbort,0
|
||
DW 432,640, 0,256,%0000000000100000,%0000000000000000,FEQuitAbort,0
|
||
DW 0,640, 0, 88,%0000000000100000,%0000000000000000,FEQuitAbort,0
|
||
DW 0,640,138,256,%0000000000100000,%0000000000000000,FEQuitAbort,0
|
||
DW 0x8000
|
||
|
||
SettingsFileName:
|
||
DZ FILENAME.FNEDIT_INI
|
||
|
||
;[]==========================================================[]
|
||
FECrTimer DB 1
|
||
|
||
EDBUF STRUCT
|
||
.CursorX DB ? ; Cursor X
|
||
.StringX DB ? ; String X
|
||
.CursAddX DB ? ; Cursor add X
|
||
.CursorY DB ? ; Cursor Y
|
||
.LenString DB ? ; Len String
|
||
.PrevLenString DB ? ; Previos Len String
|
||
.ReadyStr DB ? ; Ready String
|
||
.ReadyFile DB ? ; Ready File
|
||
EDBUF ENDSTRUCT
|
||
|
||
EditData EDBUF
|
||
INIT_VAR $
|
||
SETVAR CurLine, WORD
|
||
SETVAR EquipLines, WORD
|
||
SETVAR LineShift, WORD
|
||
SETVAR FEPageShift, WORD
|
||
SETVAR FETempShift, WORD
|
||
SETVAR FEFileLenght, WORD ; „«¨ ä ©« (16¡¨â)
|
||
SETVAR FEEmptyLines, BYTE
|
||
SETVAR FEMemIndef, BYTE
|
||
SETVAR FEFHandle, BYTE
|
||
SETVAR FEReadLen, 0
|
||
SETVAR SaveLen, WORD
|
||
SETVAR EditMode, BYTE
|
||
SETVAR HEXmode, BYTE
|
||
SETVAR FECurCursor, BYTE
|
||
SETVAR CursorPos, WORD
|
||
SETVAR FECursBuffer, 8
|
||
SETVAR EditingFile, 0x30
|