flex_nav/plugins/fneditor/fedos.a80

495 lines
7.6 KiB
Plaintext
Raw Permalink Blame History

; LAST UPDATE: 27.05.2025 savelij
;[]==========================================================[]
FELoadFile CALL JUMPS.SetClock
LD DE,EditingFile
PUSH HL
SPDSS DSSF.F_FIRST,1,0x37
POP HL
JP C,FENewFile
; LD HL,EditingFile+33
; LD A,(HL)
;.LoadFl0 CALL FECorrBigChar
; LD (HL),A
; INC HL
; LD A,(HL)
; OR A
; JR NZ,.LoadFl0
LD IX,EditingFile
LD L,(IX+28)
LD H,(IX+29)
LD A,H
AND 0xC0
CP 0xC0
LD A,0x1E
PUSH AF
CALL Z,JUMPS.DOSError ;!!!!!!!!!!!! <20>¥â ¯ ¬ïâ¨
POP AF
SCF
JP Z,FELoadExit
LD (FEFileLenght),HL
LD A,(IX+30)
OR (IX+31)
LD A,0x1E
PUSH AF
CALL NZ,JUMPS.DOSError ;!!!!!!!!!!!! <20>¥â ¯ ¬ïâ¨
POP AF
SCF
JP NZ,FELoadExit
SPDSS DSSF.GETMEM,3
PUSH AF
CALL C,JUMPS.DOSError ;!!!!!!!!!!!! <20>¥â ¯ ¬ïâ¨
POP AF
JP C,FELoadExit
LD (FEMemIndef),A
LD HL,PagesList
SPBIOS BIOSF.GETMEMBLKPAGES
LD IX,ProcessEdit
LD HL,(FEFileLenght)
LD A,H
AND 0xC0
RLCA
RLCA
LD (IX+PROC.MAXL1),A
SUB A
LD (IX+PROC.MAXH1),A
LD (IX+PROC.MAXL2),A
LD (IX+PROC.MAXH2),A
CALL JUMPS.InitProcess
MAKEWINDOW WINSUBOBJ.STORE
W_MAIN 160,88,320,48
W_FILL 4,2,312,10,COLORI.BLACK
W_TEXT 112,3,COLORI.WHITE,"FN File Editor v\{FLEX_VERS.EDITOR}"
W_TEXT 8,16,COLORP.HIGHGRAY,"Reading:"
W_BORDER 16,28,288,12
W_FILL 18,29,284,10,COLORI.WHITE
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,0x5C
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,0x0100
LD HL,WorkBuffer
LD DE,0x00D8
LD BC,0x0068
LD A,0x80
CALL JUMPS.PrnRangPathL
LD HL,EditingFile+33
SPDSS DSSF.OPEN,,1
PUSH AF
CALL C,JUMPS.DOSError
POP AF
JP C,FENoRead
LD (FEFHandle),A
LD IX,EditingFile
LD L,(IX+28)
LD H,(IX+29)
LD (FEReadLen),HL
SETPORT WINSP.Y_PORT,0xC0
GETPORT WINSP.CPU1
PUSH AF
LD HL,PagesList
LD A,(HL)
.ReadLp1 INC HL
PUSH HL
SETPORT WINSP.CPU1,,0
SPDSS DSSF.SCANKEY
LD HL,0x011B
OR A
SBC HL,DE
JP Z,FEReadAbort
LD HL,(FEReadLen)
LD BC,0x4000
OR A
SBC HL,BC
JR C,.ReadEnd
LD (FEReadLen),HL
LD HL,0x4000
LD DE,0x4000
LD A,(FEFHandle)
SPDSS DSSF.READ
JP C,FEReadAbort
CALL FENextProcess
POP HL
LD A,(HL)
CP 0xFF
JR NZ,.ReadLp1
POP AF
SETPORT WINSP.CPU1,,0
JR .ReadExit
.ReadEnd LD HL,0x4000
LD DE,(FEReadLen)
LD A,D
OR E
JR Z,.ReadEn1
LD A,(FEFHandle)
SPDSS DSSF.READ
JP C,FEReadAbort
CALL FENextProcess
.ReadEn1 POP HL
POP AF
SETPORT WINSP.CPU1,,0
.ReadExit LD A,(FEFHandle)
SPDSS DSSF.CLOSE
OR A
FELoadExit HALT
HALT
WINDOWCLOSE
PUSH AF
CALL JUMPS.SetMouse
POP AF
RET
FEReadAbort POP HL
POP AF
SETPORT WINSP.CPU1,,0
FENoRead LD A,(FEMemIndef)
SPDSS DSSF.FREEMEM
SCF
JR FELoadExit
;[]==========================================================[]
FENewFile PUSH AF
CALL JUMPS.SetMouse
POP AF
CP 0x03
JR Z,.NewFile1
CP 0x06
JP NZ,EError
.NewFile1
MAKEWINDOW WINSUBOBJ.STORE
W_MAIN 192,88,256,60
W_FILL 4,2,248,10,COLORI.BLACK
W_TEXT 118,3,COLORI.WHITE,"Edit"
W_TEXT 84,18,COLORP.HIGHGRAY,"Can`t find the file:"
W_BUTTON 48,42,72,14
W_TEXT 64,45,COLORP.HIGHGRAY,"New file"
W_BUTTON 136,42,72,14
W_TEXT 154,45,COLORP.HIGHGRAY,"Cancel"
W_END
PUSH HL
LD DE,WorkBuffer
SUB A
.L1 LDI
CP (HL)
JR NZ,.L1
LD (DE),A
LD IX,0x00E0
LD HL,WorkBuffer
LD DE,0x0140
LD BC,0x0076
LD A,0x80
CALL JUMPS.PrnRangPathC
NewFLoop LD IX,NewFileTab
CALL JUMPS.TestCoords
SPDSS DSSF.SCANKEY
JR Z,NewFLoop
LD A,B
OR A
JR NZ,NewFLoop
LD A,E
CP 0x1B
JR Z,NewFExitC
CP 0x0D
JR Z,NewFExitO
RES 5,A
CP 'N'
JR Z,NewFExitO
CP 'C'
JR NZ,NewFLoop
NewFExitC SCF
NewFExitO
WINDOWCLOSE
POP HL
RET C
LD E,L
LD D,H
LD C,0x00
LD A,0x21
DEC HL
DEC C
.L1 INC HL
INC C
CP (HL)
JR C,.L1
LD A,C
OR A
LD A,0x10
JP Z,EError
LD B,C
LD A,0x5C
.L2 DEC HL
CP (HL)
JR Z,ChangeDIR
DJNZ .L2
EX DE,HL
JR NewFileE
ChangeDIR INC HL
PUSH HL
EX DE,HL
LD DE,WorkBuffer
LD C,B
LD B,0x00
LDIR
SUB A
LD (DE),A
LD HL,WorkBuffer
SPDSS DSSF.CHDIR
POP DE
JP C,EError
NewFileE LD HL,EditingFile+33
EX DE,HL
LD A,0x20
LD C,0x00
NewFE0 CP (HL)
JR NC,NewFE1
LDI
JR NewFE0
NewFE1 SUB A
LD (DE),A
LD A,C
OR A
LD A,0x10
JP Z,EError
LD IX,EditingFile
SUB A
LD (IX+28),A
LD (IX+29),A
LD (IX+30),A
LD (IX+31),A
LD (IX+32),A
LD HL,0x0000
LD (FEFileLenght),HL
SPDSS DSSF.GETMEM,3
PUSH AF
CALL C,JUMPS.DOSError ;!!!!!!!!!!!! <20>¥â ¯ ¬ïâ¨
POP AF
JP C,FELoadExit
LD (FEMemIndef),A
LD HL,PagesList
SPBIOS BIOSF.GETMEMBLKPAGES
OR A
RET
EError PUSH AF
CALL JUMPS.DOSError
POP AF
SCF
RET
;[]==========================================================[]
SaveFile CALL PutString
CALL JUMPS.SetClock
LD IX,ProcessEdit
LD HL,(FEFileLenght)
LD A,H
AND 0xC0
RLCA
RLCA
LD B,A
LD A,H
AND 0x3F
OR L
JR Z,.L1
INC B
.L1 LD (IX+PROC.MAXL1),B
SUB A
LD (IX+PROC.MAXH1),A
LD (IX+PROC.MAXL2),A
LD (IX+PROC.MAXH2),A
CALL JUMPS.InitProcess
MAKEWINDOW WINSUBOBJ.STORE
W_MAIN 160,88,320,48
W_FILL 4,2,312,10,COLORI.BLACK
W_TEXT 112,3,COLORI.WHITE,"FN File Editor v\{FLEX_VERS.EDITOR}"
W_TEXT 8,16,COLORP.HIGHGRAY,"Saving:"
W_BORDER 16,28,288,12
W_FILL 18,29,284,10,COLORI.WHITE
W_END
PUSH IY
SPDSS DSSF.CURDISK
POP IY
LD HL,WorkBuffer
ADD A,'A'
LD (HL),A
INC HL
LD (HL),':'
INC HL
PUSH IY
PUSH HL
SPDSS DSSF.CURDIR
POP HL
POP IY
SUB A
.L2 INC HL
CP (HL)
JR NZ,.L2
DEC HL
LD A,0x5C
CP (HL)
INC HL
JR Z,.L3
LD (HL),A
INC HL
.L3 EX DE,HL
LD HL,EditingFile+33
SUB A
.L4 LDI
CP (HL)
JR NZ,.L4
LD (DE),A
LD IX,0x0100
LD HL,WorkBuffer
LD DE,0x00D0
LD BC,0x0068
LD A,0x80
CALL JUMPS.PrnRangPathL
LD HL,EditingFile+33
LD A,(EditingFile+32)
PUSH IY
SPDSS DSSF.CREATE
POP IY
PUSH AF
CALL C,JUMPS.DOSError
POP AF
JP C,SaveExit1
LD (FEFHandle),A
LD HL,(FEFileLenght)
LD (SaveLen),HL
SETPORT WINSP.Y_PORT,0xC0
GETPORT WINSP.CPU1
PUSH AF
LD HL,PagesList
LD A,(HL)
SaveLp1 INC HL
PUSH HL
SETPORT WINSP.CPU1,,0
LD HL,(SaveLen)
LD BC,0x4000
OR A
SBC HL,BC
JR C,SaveEnd
LD (SaveLen),HL
LD HL,0x4000
LD DE,0x4000
LD A,(FEFHandle)
PUSH IY
SPDSS DSSF.WRITE
POP IY
JP C,SaveAbort
CALL FENextProcess
POP HL
LD A,(HL)
CP 0xFF
JR NZ,SaveLp1
POP AF
SETPORT WINSP.CPU1,,0
JP SaveExit
SaveEnd LD HL,0x4000
LD DE,(SaveLen)
LD A,D
OR E
JR Z,SaveEn1
LD A,(FEFHandle)
PUSH IY
SPDSS DSSF.WRITE
POP IY
JP C,SaveAbort
CALL FENextProcess
SaveEn1 POP HL
POP AF
SETPORT WINSP.CPU1,,0
SaveExit SUB A
LD (IY+ReadyFile),A
CALL PrnEDITinfo
LD A,(FEFHandle)
PUSH IY
SPDSS DSSF.CLOSE
POP IY
SaveExit1 HALT
HALT
WINDOWCLOSE
CALL JUMPS.SetMouse
RET
SaveAbort POP HL
POP AF
SETPORT WINSP.CPU1,,0
JR SaveExit1
;[]----------------------------------------------------------[]
FENextProcess LD IX,ProcessEdit
LD L,(IX+PROC.CURL1)
LD H,(IX+PROC.CURH1)
INC HL
LD (IX+PROC.CURL1),L
LD (IX+PROC.CURH1),H
LD A,H
OR L
JR NZ,.NextPr1
LD L,(IX+PROC.CURL2)
LD H,(IX+PROC.CURH2)
INC HL
LD (IX+PROC.CURL2),L
LD (IX+PROC.CURH2),H
.NextPr1 CALL JUMPS.PrnProcess
RET
ProcessEdit DEFW 0x00B2
DEFW 0x0075
DEFW 0x011C
DEFW 0x0000
DEFW 0x0000
DEFW 0x0000
DEFW 0x0000
DEFW 0x0000
DEFW 0x0000
DEFB 0x4F
;FECorrBigChar CP 0x41
; RET C
; CP 0x5B
; JR NC,.CorrCh1
; SET 5,A
; RET
;.CorrCh1 CP 0x80
; RET C
; CP 0xA0
; RET NC
; SET 5,A
; CP 0x90
; RET C
; SET 6,A
; RES 4,A
; RET