flex_nav/plugins/fneditor/feditor.a80
savelij13 f428f0b18b FileEditor.flx 1.10
- устранено перепутанные кнопки для нажатий мышью для F7 и F9.
FileViewer.flx 1.06
- добавлено переключение кодировки в режиме HEX просмотра.
FlexNavigaror 1.16.01
- исправлен вылет при создании нового файла по Shift+F4 или просмотр с
  вводом имени по Shift+F3, плагин был не загружен.
2025-07-29 21:58:48 +03:00

925 lines
20 KiB
Plaintext
Raw 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: 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