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 
 |