; 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 ;!!!!!!!!!!!! Нет памяти 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 ;!!!!!!!!!!!! Нет памяти POP AF SCF JP NZ,FELoadExit SPDSS DSSF.GETMEM,3 PUSH AF CALL C,JUMPS.DOSError ;!!!!!!!!!!!! Нет памяти 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 ;!!!!!!!!!!!! Нет памяти 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