495 lines
7.6 KiB
Plaintext
495 lines
7.6 KiB
Plaintext
|
||
; 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
|