 f428f0b18b
			
		
	
	
		f428f0b18b
		
	
	
	
	
		
			
			- устранено перепутанные кнопки для нажатий мышью для F7 и F9. FileViewer.flx 1.06 - добавлено переключение кодировки в режиме HEX просмотра. FlexNavigaror 1.16.01 - исправлен вылет при создании нового файла по Shift+F4 или просмотр с вводом имени по Shift+F3, плагин был не загружен.
		
			
				
	
	
		
			1087 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			1087 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
 | ||
| ; LAST UPDATE: 28.07.2025 savelij
 | ||
| 
 | ||
| LineBuffer := WorkBuffer+0x300
 | ||
| 
 | ||
| ;[]==========================================================[]
 | ||
| 		CALL	LoadFile
 | ||
| 		RET	C
 | ||
| 		LD	IX,ViewingFile
 | ||
| 		SUB	A
 | ||
| 		LD	(ViewMode),A
 | ||
| 		LD	(ASCIIaddX),A
 | ||
| 		LD H,A
 | ||
| 		LD L,A
 | ||
| 		LD	(FileShift),HL
 | ||
| 		LD	(FileShift+2),HL
 | ||
| 		LD	L,(IX+28)
 | ||
| 		LD	H,(IX+29)
 | ||
| 		LD	(FileLenght),HL
 | ||
| 		LD	L,(IX+30)
 | ||
| 		LD	H,(IX+31)
 | ||
| 		LD	(FileLenght+2),HL
 | ||
| 		CALL	InitViewScr
 | ||
| ViewerBegin	CALL	InitStatusLine
 | ||
| 		CALL	InitVProc
 | ||
| 		CALL	PrintVPage
 | ||
| ViewerLoop	LD	A,(ViewMode)		; ०¨¬ ¯à®á¬®âà ?
 | ||
| 		OR	A
 | ||
| 		JR	NZ,HViewLoop
 | ||
| ; ०¨¬ ¯à®á¬®âà  â¥ªáâ
 | ||
| TViewLoop	LD	IX,ASCIItab
 | ||
| 		CALL	JUMPS.TestCoords
 | ||
| 	SPDSS DSSF.SCANKEY			; ަ¨¤ ¥¬  ¦ â¨ï ª« ¢¨è
 | ||
| 		JR	Z,TViewLoop
 | ||
| 		LD	A,E			; …-ASCII ª®¤
 | ||
| 		CP	0x1B			; Esc
 | ||
| 		JP	Z,ViewerExit
 | ||
| 		OR	A
 | ||
| 		JR	NZ,TViewLoop		; †¤¥¬ äãªæ¨®.ª« ¢¨è¨
 | ||
| 		LD	A,D
 | ||
| 		CP	SC.F10;0x44
 | ||
| 		JP	Z,ViewerExit
 | ||
| 		LD	HL,TViewLoop
 | ||
| 		PUSH	HL
 | ||
| 		CP	SC.F1;0x3B
 | ||
| 		JP	Z,About
 | ||
| 		CP	SC.F2;0x3C
 | ||
| 		JP	Z,ChASCIImode
 | ||
| 		CP	SC.F4;0x3E
 | ||
| 		JP	Z,ChViewer		; <20>à®á¬®âà ¢ HEX
 | ||
| 		CP	SC.F8;0x42
 | ||
| 		JP	Z,ChCodePage		; ‘¬¥  ª®¤®¢®© áâà ¨æë WIN/DOS/KOI
 | ||
| 		CP	SC.F7;0x41
 | ||
| 		JP	Z,FVPrintFile
 | ||
| 		CP	SC.X4;0x54
 | ||
| 		JP	Z,ScrollLeft
 | ||
| 		CP	SC.X6;0x56
 | ||
| 		JP	Z,ScrollRght
 | ||
| 		CP	SC.X7;87			; Home
 | ||
| 		JP	Z,THome
 | ||
| 		CP	SC.X1;81			; End
 | ||
| 		JP	Z,TEnd
 | ||
| 		CP	SC.X8;88			; ‘â५ª  ¢¢¥àå
 | ||
| 		JP	Z,TLineUp
 | ||
| 		CP	SC.X2;82			; ‘â५ª  ¢¨§
 | ||
| 		JP	Z,TLineDwn
 | ||
| 		CP	SC.X9;89			; PageUp
 | ||
| 		JP	Z,TPageUp
 | ||
| 		CP	SC.X3;83			; PageDown
 | ||
| 		JP	Z,TPageDwn
 | ||
| 		LD	A,B
 | ||
| 		AND	KEYBSTAT.M_ALT + KEYBSTAT.M_CTRL;0x30
 | ||
| 		CP	KEYBSTAT.M_ALT + KEYBSTAT.M_CTRL;0x30
 | ||
| 		RET	Z
 | ||
| 		BIT	KEYBSTAT.B_CTRL,B;5,B
 | ||
| 		RET	Z
 | ||
| 		LD	A,D
 | ||
| 		AND	%01111111;0x7F
 | ||
| 		CP	SC.X7;0x57			; Ctrl+PageUp
 | ||
| 		JP	Z,TBegFile		; ¢  ç «® ä ©« 
 | ||
| 		CP	SC.X1;0x51			; Ctrl+PageDown
 | ||
| 		JP	Z,TEndFile		; ¢ ª®¥æ ä ©« 
 | ||
| 		CP	SC.P;0x19			; Ctrl+P
 | ||
| 		JP	Z,FVPrintFile
 | ||
| 		RET 
 | ||
| 
 | ||
| ;--------------------------------------------------------------
 | ||
| ; ०¨¬ ¯à®á¬®âà  HEX
 | ||
| HViewLoop	LD	IX,HEXtab
 | ||
| 		CALL	JUMPS.TestCoords
 | ||
| 	SPDSS DSSF.SCANKEY			; ަ¨¤ ¥¬  ¦ â¨ï ª« ¢¨è
 | ||
| 		JR	Z,HViewLoop
 | ||
| 		LD	A,E			; …-ASCII ª®¤
 | ||
| 		CP	0x1B			; Esc
 | ||
| 		JP	Z,ViewerExit
 | ||
| 		OR	A
 | ||
| 		JR	NZ,HViewLoop		; †¤¥¬ äãªæ¨®.ª« ¢¨è¨
 | ||
| 		LD	A,D
 | ||
| 		CP	SC.F10;0x44			; F10
 | ||
| 		JP	Z,ViewerExit
 | ||
| 		LD	HL,HViewLoop
 | ||
| 		PUSH	HL
 | ||
| 		CP	SC.F1;0x3B
 | ||
| 		JP	Z,About
 | ||
| 		CP	SC.F4;0x3E			; F4
 | ||
| 		JP	Z,ChViewer		; <20>à®á¬®âà ¢ ⥪áâ¥
 | ||
| 		CP	SC.F8;0x42
 | ||
| 		JP	Z,ChCodePage    	; ‘¬¥  ª®¤®¢®© áâà ¨æë WIN/DOS/KOI
 | ||
| 		CP	SC.F5;0x3F			; F5
 | ||
| 		JP	Z,HGoTo			; <20>¥à¥å®¤    ¤à¥á ¯®«ì§®¢ â¥«ï
 | ||
| 		CP	SC.F7;0x41
 | ||
| 		JP	Z,FVPrintFile
 | ||
| 		CP	SC.X8;88			; ‘â५ª  ¢¢¥àå
 | ||
| 		JP	Z,FVHLineUp
 | ||
| 		CP	SC.X2;82			; ‘â५ª  ¢¨§
 | ||
| 		JP	Z,HLineDwn
 | ||
| 		CP	SC.X9;89			; PageUp
 | ||
| 		JP	Z,FVHPageUp
 | ||
| 		CP	SC.X3;83			; PageDown
 | ||
| 		JP	Z,HPageDwn
 | ||
| 		LD	A,B
 | ||
| 		AND	KEYBSTAT.M_ALT + KEYBSTAT.M_CTRL;0x30
 | ||
| 		CP	KEYBSTAT.M_ALT + KEYBSTAT.M_CTRL;0x30
 | ||
| 		RET	Z
 | ||
| 		BIT	KEYBSTAT.B_CTRL,B;5,B
 | ||
| 		RET	Z
 | ||
| 		LD	A,D
 | ||
| 		AND	%01111111;0x7F
 | ||
| 		CP	SC.X7;0x57			; Ctrl+PageUp
 | ||
| 		JP	Z,HBegFile		; ¢  ç «® ä ©« 
 | ||
| 		CP	SC.X1;0x51			; Ctrl+PageDown
 | ||
| 		JP	Z,HEndFile		; ¢ ª®¥æ ä ©« 
 | ||
| 		CP	SC.P;0x19			; Ctrl+P
 | ||
| 		JP	Z,FVPrintFile
 | ||
| 		RET 
 | ||
| 
 | ||
| ;[]----------------------------------------------------------[]
 | ||
| ChViewer	LD	HL,ViewerBegin
 | ||
| 		EX	(SP),HL
 | ||
| 		SUB	A
 | ||
| 		LD	(ASCIIaddX),A
 | ||
| 		LD	A,(ViewMode)
 | ||
| 		XOR	0x01
 | ||
| 		LD	(ViewMode),A
 | ||
| 		RET	NZ
 | ||
| 		LD	HL,(FileShift)
 | ||
| 		LD	DE,(FileShift+2)
 | ||
| 		INC	HL
 | ||
| 		LD	A,H
 | ||
| 		OR	L
 | ||
| 		JR	NZ,.L1
 | ||
| 		INC	DE
 | ||
| .L1		CALL	SearchUp
 | ||
| 		LD	(FileShift),HL
 | ||
| 		LD	(FileShift+2),DE
 | ||
| 		RET 
 | ||
| 
 | ||
| ;[]==========================================================[]
 | ||
| PrintVPage	LD	A,(ViewMode)
 | ||
| 		OR	A
 | ||
| 		JP	NZ,PrnHEXpage
 | ||
| 		JP	PrnASCIIpage
 | ||
| 
 | ||
| ;[]==========================================================[]
 | ||
| ViewerExit	LD	A,(FVMemIndef)
 | ||
| 	SPDSS DSSF.FREEMEM
 | ||
| 		OR	A
 | ||
| 		RET 
 | ||
| 
 | ||
| ;[]==========================================================[]
 | ||
| LoadFile	CALL	JUMPS.SetClock
 | ||
| 		LD	DE,ViewingFile
 | ||
| 	SPDSS DSSF.F_FIRST,1,	DIR.M_Archive + \
 | ||
| 				DIR.M_Dir + \
 | ||
| 				DIR.M_System + \
 | ||
| 				DIR.M_Hidden + \
 | ||
| 				DIR.M_ReadOnly
 | ||
| 		PUSH	AF
 | ||
| 		CALL	C,JUMPS.DOSError
 | ||
| 		POP	AF
 | ||
| 		JP	C,LoadExit
 | ||
| ;		LD	HL,ViewingFile+33
 | ||
| ;		LD	A,(HL)
 | ||
| ;LoadFl0		CALL	FVCorrBigChar
 | ||
| ;		LD	(HL),A
 | ||
| ;		INC	HL
 | ||
| ;		LD	A,(HL)
 | ||
| ;		OR	A
 | ||
| ;		JR	NZ,LoadFl0
 | ||
| 		LD	IX,ViewingFile
 | ||
| 		LD	H,(IX+28)
 | ||
| 		LD	A,(IX+29)
 | ||
| 		LD	E,(IX+30)
 | ||
| 		LD	D,(IX+31)
 | ||
| 		LD	L,0x00
 | ||
| 		SLA	A
 | ||
| 		RL	E
 | ||
| 		RL	D
 | ||
| 		RL	L
 | ||
| 		SLA	A
 | ||
| 		RL	E
 | ||
| 		RL	D
 | ||
| 		RL	L
 | ||
| 		OR	H
 | ||
| 		LD	H,0x00
 | ||
| 		EX	DE,HL
 | ||
| 		JR	Z,.L1
 | ||
| 		INC	HL
 | ||
| .L1		LD	A,H
 | ||
| 		OR	L
 | ||
| 		JR	NZ,LoadFl1
 | ||
| 		INC	HL
 | ||
| LoadFl1		LD	A,D
 | ||
| 		OR	E
 | ||
| 		LD	A,ERR_DSS.NOT_ENOUGH_MEMORY
 | ||
| 		PUSH	AF
 | ||
| 		CALL	NZ,JUMPS.DOSError	;!!!!!!!!!!!! <20>¥â ¯ ¬ïâ¨
 | ||
| 		POP	AF
 | ||
| 		SCF 
 | ||
| 		JP	NZ,LoadExit
 | ||
| 		PUSH	HL
 | ||
| 	SPDSS DSSF.INFOMEM
 | ||
| 		POP	DE
 | ||
| 		LD	L,C
 | ||
| 		LD	H,B
 | ||
| 		OR	A
 | ||
| 		SBC	HL,DE
 | ||
| 		LD	A,ERR_DSS.NOT_ENOUGH_MEMORY
 | ||
| 		PUSH	DE
 | ||
| 		PUSH	AF
 | ||
| 		CALL	C,JUMPS.DOSError	;!!!!!!!!!!!! <20>¥â ¯ ¬ïâ¨
 | ||
| 		POP	AF
 | ||
| 		POP	DE
 | ||
| 		JP	C,LoadExit
 | ||
| 		LD	IX,ProcessView
 | ||
| 		LD	(IX+PROC.MAX_PAGES),E
 | ||
| 		LD	(IX+PROC.MAX_PAGES + 1),D
 | ||
| 		SUB	A
 | ||
| 		LD	(IX+PROC.MAX_PAGES + 2),A
 | ||
| 		LD	(IX+PROC.MAX_PAGES + 3),A
 | ||
| 		PUSH	DE
 | ||
| 		CALL	JUMPS.InitProcess
 | ||
| 		POP	DE
 | ||
| 		LD	B,E
 | ||
| 	SPDSS DSSF.GETMEM
 | ||
| 		LD	(FVMemIndef),A
 | ||
| 		LD	HL,PagesList
 | ||
| 	SPBIOS BIOSF.GETMEMBLKPAGES
 | ||
| 	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 Viewer v\{FLEX_VERS.VIEWER}"
 | ||
| 	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
 | ||
| .L2		INC	HL
 | ||
| 		CP	(HL)
 | ||
| 		JR	NZ,.L2
 | ||
| 		DEC	HL
 | ||
| 		LD	A,'\\'
 | ||
| 		CP	(HL)
 | ||
| 		INC	HL
 | ||
| 		JR	Z,.L3
 | ||
| 		LD	(HL),A
 | ||
| 		INC	HL
 | ||
| .L3		EX	DE,HL
 | ||
| 		LD	HL,ViewingFile+33
 | ||
| 		SUB	A
 | ||
| .L4		LDI 
 | ||
| 		CP	(HL)
 | ||
| 		JR	NZ,.L4
 | ||
| 		LD	(DE),A
 | ||
| 		LD	IX,0x0100
 | ||
| 		LD	HL,WorkBuffer
 | ||
| 		LD	DE,0x00D8
 | ||
| 		LD	BC,0x0068
 | ||
| 		LD	A,0x80
 | ||
| 		CALL	JUMPS.PrnRangPathL
 | ||
| 		LD	HL,ViewingFile+33
 | ||
| 	SPDSS DSSF.OPEN,,1
 | ||
| 		PUSH	AF
 | ||
| 		CALL	C,JUMPS.DOSError
 | ||
| 		POP	AF
 | ||
| 		JP	C,NoRead
 | ||
| 		LD	(FHandle),A
 | ||
| 		LD	IX,ViewingFile
 | ||
| 		LD	L,(IX+28)
 | ||
| 		LD	H,(IX+29)
 | ||
| 		LD	(FVReadLen),HL
 | ||
| 		LD	L,(IX+30)
 | ||
| 		LD	H,(IX+31)
 | ||
| 		LD	(FVReadLen+2),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,ReadAbort
 | ||
| 		LD	HL,(FVReadLen)
 | ||
| 		LD	DE,(FVReadLen+2)
 | ||
| 		LD	BC,0x4000
 | ||
| 		OR	A
 | ||
| 		SBC	HL,BC
 | ||
| 		LD	B,0x00
 | ||
| 		EX	DE,HL
 | ||
| 		SBC	HL,BC
 | ||
| 		EX	DE,HL
 | ||
| 		JR	C,.ReadEnd
 | ||
| 		LD	(FVReadLen),HL
 | ||
| 		LD	(FVReadLen+2),DE
 | ||
| 		LD	HL,0x4000
 | ||
| 		LD	DE,0x4000
 | ||
| 		LD	A,(FHandle)
 | ||
| 	SPDSS DSSF.READ
 | ||
| 		CALL	FVNextProcess
 | ||
| 		POP	HL
 | ||
| 		LD	A,(HL)
 | ||
| 		CP	0xFF
 | ||
| 		JR	NZ,.ReadLp1
 | ||
| 		POP	AF
 | ||
| 	SETPORT WINSP.CPU1,,0
 | ||
| 		JR	ReadExit
 | ||
| 
 | ||
| .ReadEnd	LD	HL,0x4000
 | ||
| 		LD	DE,(FVReadLen)
 | ||
| 		LD	A,D
 | ||
| 		OR	E
 | ||
| 		JR	Z,ReadEn1
 | ||
| 		LD	A,(FHandle)
 | ||
| 	SPDSS DSSF.READ
 | ||
| 		CALL	FVNextProcess
 | ||
| ReadEn1		POP	HL
 | ||
| 		POP	AF
 | ||
| 	SETPORT WINSP.CPU1,,0
 | ||
| ReadExit	LD	A,(FHandle)
 | ||
| 	SPDSS DSSF.CLOSE
 | ||
| 		OR	A
 | ||
| LoadExit	HALT 
 | ||
| 		HALT 
 | ||
| 	WINDOWCLOSE
 | ||
| 		PUSH	AF
 | ||
| 		CALL	JUMPS.SetMouse
 | ||
| 		POP	AF
 | ||
| 		RET 
 | ||
| 
 | ||
| ReadAbort	POP	HL
 | ||
| 		POP	AF
 | ||
| 	SETPORT WINSP.CPU1,,0
 | ||
| NoRead		LD	A,(FVMemIndef)
 | ||
| 	SPDSS DSSF.FREEMEM
 | ||
| 		SCF 
 | ||
| 		JR	LoadExit
 | ||
| 
 | ||
| FVNextProcess	LD	IX,ProcessView
 | ||
| 		LD	L,(IX+PROC.CURR_PAGE)
 | ||
| 		LD	H,(IX+PROC.CURR_PAGE + 1)
 | ||
| 		INC	HL
 | ||
| 		LD	(IX+PROC.CURR_PAGE),L
 | ||
| 		LD	(IX+PROC.CURR_PAGE + 1),H
 | ||
| 		LD	A,H
 | ||
| 		OR	L
 | ||
| 		JR	NZ,.NextPr1
 | ||
| 		LD	L,(IX+PROC.CURR_PAGE + 2)
 | ||
| 		LD	H,(IX+PROC.CURR_PAGE + 3)
 | ||
| 		INC	HL
 | ||
| 		LD	(IX+PROC.CURR_PAGE + 2),L
 | ||
| 		LD	(IX+PROC.CURR_PAGE + 3),H
 | ||
| .NextPr1	JP	JUMPS.PrnProcess
 | ||
| 
 | ||
| ;[]----------------------------------------------------------[]
 | ||
| ProcessView	DW 178
 | ||
| 		DW 117
 | ||
| 		DW 284
 | ||
| 		DW 0
 | ||
| 		DW 0
 | ||
| 		DW 0
 | ||
| 		DW 0
 | ||
| 		DW 0
 | ||
| 		DW 0
 | ||
| 		DB COLORP.BLUE + COLORI.WHITE
 | ||
| 
 | ||
| ;FVCorrBigChar	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 
 | ||
| 
 | ||
| ;[]==========================================================[]
 | ||
| InitViewScr	LD	HL,FVFLen
 | ||
| 		LD	B,0x10
 | ||
| 		LD	A,0x20
 | ||
| .L1		LD	(HL),A
 | ||
| 		INC	HL
 | ||
| 		DJNZ	.L1
 | ||
| 		LD	HL,FVFClast
 | ||
| 		LD	B,0x05
 | ||
| .L2		LD	(HL),A
 | ||
| 		INC	HL
 | ||
| 		DJNZ	.L2
 | ||
| 		LD	DE,FVFLen
 | ||
| 		LD	IX,ViewingFile
 | ||
| 		LD	L,(IX+28)
 | ||
| 		LD	H,(IX+29)
 | ||
| 		LD	C,(IX+30)
 | ||
| 		LD	B,(IX+31)
 | ||
| 		CALL	JUMPS.ConvNumTxt32
 | ||
| 		LD	A,0x20
 | ||
| 		LD	(DE),A
 | ||
| 		INC	DE
 | ||
| 		LD	HL,FVBytes
 | ||
| 		LD	BC,0x0005
 | ||
| 		LDIR 
 | ||
| 		LD	DE,FVFData
 | ||
| 		CALL	FVGetData
 | ||
| 		LD	DE,FVFTime
 | ||
| 		CALL	FVGetTime
 | ||
| 		LD	L,(IX+26)
 | ||
| 		LD	H,(IX+27)
 | ||
| 		LD	DE,FVFClast
 | ||
| 		CALL	JUMPS.ConvNumTxt16
 | ||
| 		LD	HL,FVFAtributs
 | ||
| 		LD	DE,FVFAttrib
 | ||
| 		LD	C,(IX+32)
 | ||
| 		LD	B,0x08
 | ||
| InitVS0		RL	C
 | ||
| 		LD	A,'-'
 | ||
| 		JR	NC,.L3
 | ||
| 		LD	A,(HL)
 | ||
| .L3		LD	(DE),A
 | ||
| 		INC	HL
 | ||
| 		INC	DE
 | ||
| 		DJNZ	InitVS0
 | ||
| 	MAKEWINDOW WINSUBOBJ.NOSTORE
 | ||
| 	W_MAIN 0,0,640,256
 | ||
| 	W_FILL 4,2,632,10,COLORI.BLACK
 | ||
| 	W_TEXT 8,3,COLORI.WHITE,"  FN File Viewer v\{FLEX_VERS.VIEWER}"
 | ||
| 	W_HORIZLINE 0,13,640
 | ||
| 	W_TEXT 8,17,COLORP.HIGHGRAY,"Viewing:"
 | ||
| 	W_VERTICLINE 574,16,10
 | ||
| 	W_HORIZLINE 0,27,640
 | ||
| 	W_HORIZLINE 0,227,640
 | ||
| 	W_FILL 0,28,640,200,COLORI.PANEL
 | ||
| 	W_TEXT 8,231,COLORP.HIGHGRAY,"Len:                  "
 | ||
| FVFLen		EQU $ - STRLEN("                ") - 1
 | ||
| 	W_VERTICLINE 160,230,10
 | ||
| 	W_TEXT 172,231,COLORP.HIGHGRAY,"Create data:                 "
 | ||
| FVFData		EQU $ - STRLEN("               ") - 1
 | ||
| FVFTime		EQU $ - STRLEN("     ") - 1
 | ||
| 	W_VERTICLINE 336,230,10
 | ||
| 	W_TEXT 348,231,COLORP.HIGHGRAY,"First cluster:       "
 | ||
| FVFClast	EQU $ - STRLEN("     ") - 1
 | ||
| 	W_VERTICLINE 480,230,10
 | ||
| 	W_TEXT 492,231,COLORP.HIGHGRAY,"File attribute:         "
 | ||
| FVFAttrib	EQU $ - STRLEN("        ") - 1
 | ||
| 	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
 | ||
| .L4		INC	HL
 | ||
| 		CP	(HL)
 | ||
| 		JR	NZ,.L4
 | ||
| 		DEC	HL
 | ||
| 		LD	A,'\\'
 | ||
| 		CP	(HL)
 | ||
| 		INC	HL
 | ||
| 		JR	Z,.L5
 | ||
| 		LD	(HL),A
 | ||
| 		INC	HL
 | ||
| .L5		EX	DE,HL
 | ||
| 		LD	HL,ViewingFile+33
 | ||
| 		SUB	A
 | ||
| .L6		LDI 
 | ||
| 		CP	(HL)
 | ||
| 		JR	NZ,.L6
 | ||
| 		LD	(DE),A
 | ||
| 		LD	IX,0x0200
 | ||
| 		LD	HL,WorkBuffer
 | ||
| 		LD	DE,0x0034
 | ||
| 		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
 | ||
| 
 | ||
| FVFAtributs	DEFB	"--ad-shr"
 | ||
| 
 | ||
| ; „ â 
 | ||
| FVGetData	EX	DE,HL
 | ||
| 		LD	A,(IX+24)
 | ||
| 		AND	0x1F
 | ||
| 		CALL	FVGet8Bit
 | ||
| 		LD	(HL),"."
 | ||
| 		INC	HL
 | ||
| 		LD	A,(IX+24)
 | ||
| 		LD	C,(IX+25)
 | ||
| 		LD	B,5
 | ||
| .L1		SRL	C
 | ||
| 		RRA 
 | ||
| 		DJNZ	.L1
 | ||
| 		AND	0x0F
 | ||
| 		CALL	FVGet8Bit
 | ||
| 		LD	(HL),"."
 | ||
| 		INC	HL
 | ||
| 		LD	A,(IX+25)		; ƒ®¤
 | ||
| 		SRL	A
 | ||
| 		ADD	A,80
 | ||
| .L2		SUB	100
 | ||
| 		JR	NC,.L2
 | ||
| 		ADD	A,100			; ƒ®¤
 | ||
| 		CALL	FVGet8Bit
 | ||
| 		EX	DE,HL
 | ||
| 		RET 
 | ||
| 
 | ||
| ; ∴•
 | ||
| FVGetTime	EX	DE,HL
 | ||
| 		LD	A,(IX+23)		; — áë
 | ||
| 		AND	0xF8
 | ||
| 		RRA 
 | ||
| 		RRA 
 | ||
| 		RRA 
 | ||
| 		CALL	FVGet8Bit
 | ||
| 		LD	(HL),":"
 | ||
| 		INC	HL
 | ||
| 		LD	A,(IX+22)
 | ||
| 		LD	C,(IX+23)
 | ||
| 		LD	B,5
 | ||
| .L1		SRL	C
 | ||
| 		RRA 
 | ||
| 		DJNZ	.L1
 | ||
| 		AND	0x3F
 | ||
| 		CALL	FVGet8Bit
 | ||
| 		EX	DE,HL
 | ||
| 		RET 
 | ||
| 
 | ||
| FVGet8Bit	LD	B,0x2F
 | ||
| .L1		INC	B
 | ||
| 		SUB	10
 | ||
| 		JR	NC,.L1
 | ||
| 		ADD	A,10
 | ||
| 		LD	(HL),B
 | ||
| 		INC	HL
 | ||
| 		ADD	A,"0"
 | ||
| 		LD	(HL),A
 | ||
| 		INC	HL
 | ||
| 		RET 
 | ||
| 
 | ||
| FVBytes		DEFB	"bytes"
 | ||
| 
 | ||
| ;[]==========================================================[]
 | ||
| InitStatusLine	CALL    InitCodePage
 | ||
| 		LD	A,(ViewMode)
 | ||
| 		OR	A
 | ||
| 		JP	NZ,HEXstatus
 | ||
| ASCIIstatus	LD	HL,UnWrapT
 | ||
| 		LD	DE,94
 | ||
| 		LD	A,(ASCIImode)
 | ||
| 		OR	A
 | ||
| 		JR	Z,.L1
 | ||
| 		LD	HL,WrapT
 | ||
| 		LD	DE,100
 | ||
| .L1		LD	(ASCIIx),DE		; ¯®§¨æ¨ï ¯¥ç â¨ ¯® X
 | ||
| 		LD (ASCIIm),HL			;  ¤à¥á ⥪áâ  ª®â®àë© ¯¥ç â âì
 | ||
| 	MAKEWINDOW WINSUBOBJ.WOBIND
 | ||
| 	W_HORIZLINE 0,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_ADRTEXT 94,245,COLORP.HIGHGRAY,0
 | ||
| ASCIIx:		EQU $ - 7
 | ||
| ASCIIm:		EQU $ - 2
 | ||
| 	W_BUTTON 160,242,80,14
 | ||
| 	W_TEXT 184,245,COLORP.HIGHGRAY,"F4 Hex"
 | ||
| 	W_BUTTON 400,242,80,14
 | ||
| 	W_TEXT 422,245,COLORP.HIGHGRAY,"F7 Print"
 | ||
| 	W_BUTTON 480,242,80,14
 | ||
| 	W_ADRTEXT 504,245,COLORP.HIGHGRAY,0
 | ||
| ASCIIenc1:	EQU $ - 2
 | ||
| 	W_BUTTON 560,242,80,14
 | ||
| 	W_TEXT 580,245,COLORP.HIGHGRAY,"F10 Quit"
 | ||
| 	W_END
 | ||
| 		RET 
 | ||
| 
 | ||
| UnWrapT		DZ "F2 UnWrap"
 | ||
| WrapT		DZ "F2 Wrap  "
 | ||
| 
 | ||
| HEXstatus
 | ||
| 	MAKEWINDOW WINSUBOBJ.WOBIND
 | ||
| 	W_HORIZLINE 0,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 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"
 | ||
| 	W_BUTTON 400,242,80,14
 | ||
| 	W_TEXT 422,245,COLORP.HIGHGRAY,"F7 Print"
 | ||
| 	W_BUTTON 480,242,80,14
 | ||
| 	W_ADRTEXT 504,245,COLORP.HIGHGRAY,0
 | ||
| ASCIIenc2:	EQU $ - 2
 | ||
| 	W_BUTTON 560,242,80,14
 | ||
| 	W_TEXT 580,245,COLORP.HIGHGRAY,"F10 Quit"
 | ||
| 	W_END
 | ||
| 		RET 
 | ||
| 
 | ||
| ;[]==========================================================[]
 | ||
| About
 | ||
| 	MAKEWINDOW WINSUBOBJ.STORE
 | ||
| 	W_MAIN 160,72,320,85
 | ||
| 	W_FILL 4,2,312,10,COLORP.BLACK
 | ||
| 	W_TEXT 144,3,COLORI.WHITE,"About"
 | ||
| 	W_TEXT 96,18,COLORP.HIGHGRAY,"Flex Navigator File Viewer"
 | ||
| 	W_TEXT 96,28,COLORP.HIGHGRAY,"v\{FLEX_VERS.VIEWER} 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
 | ||
| AboutLoop	LD	IX,FVAboutTab
 | ||
| 		CALL	JUMPS.TestCoords
 | ||
| 	SPDSS DSSF.SCANKEY
 | ||
| 		JR	Z,AboutLoop
 | ||
| 		LD	A,B
 | ||
| 		OR	A
 | ||
| 		JR	NZ,AboutLoop
 | ||
| 		LD	A,E
 | ||
| 		CP	0x1B
 | ||
| 		JR	Z,AboutExt
 | ||
| 		CP	0x0D
 | ||
| 		JR	Z,AboutExt
 | ||
| 		RES	5,A
 | ||
| 		CP	'O'
 | ||
| 		JR	NZ,AboutLoop
 | ||
| AboutExt
 | ||
| 	WINDOWCLOSE
 | ||
| 		RET 
 | ||
| 
 | ||
| ;[]==========================================================[]
 | ||
| ScrollSCRup	LD	DE,0x241C
 | ||
| 		JR	ScrlSCRDnUp
 | ||
| 
 | ||
| ScrollSCRdown	LD	DE,0x1C24
 | ||
| ; <20>  ¢å®¤:
 | ||
| ;	 D  - Y	®âªã¤ 
 | ||
| ;	 …  - Y	ªã¤ 
 | ||
| ScrlSCRDnUp	DI 
 | ||
| 		PUSH	DE
 | ||
| 	SPMOUSE MOUSEF.REFRESH
 | ||
| 		POP	DE
 | ||
| 	GETPORT WINSP.CPU1
 | ||
| 		PUSH	AF
 | ||
| 	SETPORT WINSP.CPU1,0x50
 | ||
| 		LD	HL,0x4000
 | ||
| 		LD	BC,320
 | ||
| 	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
 | ||
| 		INC	HL
 | ||
| 		DEC	BC
 | ||
| 		LD	A,B
 | ||
| 		OR	C
 | ||
| 		JR	NZ,ScSCRN1
 | ||
| 		POP	AF
 | ||
| 	SETPORT WINSP.CPU1,,0
 | ||
| 		EI 
 | ||
| 		RET 
 | ||
| 
 | ||
| ;[]==========================================================[]
 | ||
| InitFPages	PUSH	HL
 | ||
| 		LD	DE,(TempShift)
 | ||
| 		LD	HL,(TempShift+2)
 | ||
| 		LD	A,D			; ‚뤥«ï¥¬ ®¬¥à áâà ¨æë
 | ||
| 		RLA 
 | ||
| 		RL	L
 | ||
| 		RLA 
 | ||
| 		RL	L
 | ||
| 		LD	A,L
 | ||
| 		EXX 
 | ||
| 		LD	E,A			; DE - €¤à¥á áâà ¨æë ¢ ᯨ᪥
 | ||
| 		LD	D,HIGH (PagesList)
 | ||
| 		LD	A,(DE)			; ’¥ª.áâà ¨æ 
 | ||
| 	SETPORT WINSP.CPU1,,0
 | ||
| 		EXX 
 | ||
| 		RES	7,D			; ‚ª«.á 0x4000
 | ||
| 		SET	6,D
 | ||
| 		POP	HL
 | ||
| 		RET 
 | ||
| 
 | ||
| TestFPages	BIT	7,D
 | ||
| 		RET	Z
 | ||
| 		RES	7,D
 | ||
| 		SET	6,D
 | ||
| 		EXX 
 | ||
| 		INC	E			; DE - €¤à¥á áâà ¨æë ¢ ᯨ᪥
 | ||
| 		LD	A,(DE)			; ’¥ª.áâà ¨æ 
 | ||
| 	SETPORT WINSP.CPU1,,0
 | ||
| 		EXX 
 | ||
| 		RET 
 | ||
| 
 | ||
| GetFPages	PUSH	HL
 | ||
| 		RES	6,D
 | ||
| 		EXX 
 | ||
| 		LD	A,E
 | ||
| 		EXX 
 | ||
| 		BIT	7,D
 | ||
| 		RES	7,D
 | ||
| 		JR	Z,.L1
 | ||
| 		INC	A
 | ||
| .L1		LD	L,A
 | ||
| 		SUB	A
 | ||
| 		LD	H,A
 | ||
| 		SRL	L
 | ||
| 		RRA 
 | ||
| 		SRL	L
 | ||
| 		RRA 
 | ||
| 		OR	D
 | ||
| 		LD	D,A
 | ||
| 		LD	(TempShift),DE
 | ||
| 		LD	(TempShift+2),HL
 | ||
| 		POP	HL
 | ||
| 		RET 
 | ||
| 
 | ||
| ;[]==========================================================[]
 | ||
| ; <20>à®æ¥¤ãà  ¨¨æ¨ «¨§ æ¨ï â ¡«¨æë ¯à®æ¥â®¢
 | ||
| InitVProc	LD	A,0x01
 | ||
| 		LD	(ProcFlag),A		; ”« £ ¢ë¢®¤  ¯à®æ¥â®¢
 | ||
| 		LD	A,(ViewMode)
 | ||
| 		OR	A
 | ||
| 		JR	NZ,InProcHex
 | ||
| ; <20>à®æ¥âë ¤«ï TextWrap
 | ||
| InProcASCII	LD	HL,(FileLenght)
 | ||
| 		LD	DE,(FileLenght+2)
 | ||
| 		LD	B,0x19
 | ||
| InProcA		PUSH	BC
 | ||
| 		CALL	SearchUp
 | ||
| 		POP	BC
 | ||
| 		RET	C
 | ||
| 		DJNZ	InProcA
 | ||
| 		JR	InitProc
 | ||
| 
 | ||
| ; <20>à®æ¥âë ¤«ï Hex
 | ||
| InProcHex	LD	HL,(FileLenght)
 | ||
| 		LD	DE,(FileLenght+2)
 | ||
| 		LD	BC,0x0190
 | ||
| 		OR	A
 | ||
| 		SBC	HL,BC
 | ||
| 		LD	BC,0x0000
 | ||
| 		EX	DE,HL
 | ||
| 		SBC	HL,BC
 | ||
| 		EX	DE,HL
 | ||
| 		RET	C
 | ||
| 		LD	A,H
 | ||
| 		OR	L
 | ||
| 		OR	D
 | ||
| 		OR	E
 | ||
| 		RET	Z
 | ||
| ; <20>à®æ¥¤ãà  ¨¨æ¨ «¨§ æ¨¨ â ¡«¨æë ¯à®æ¥â®¢
 | ||
| ; <20>  ¢å®¤:
 | ||
| ;	  DEHL	- „«¨ 	ä ©«  - 1 áâà ¨æ 
 | ||
| InitProc	PUSH	HL
 | ||
| 		PUSH	DE
 | ||
| 		EX	DE,HL
 | ||
| 		LD	BC,100			; „«¨  ä ©« /100 (%)
 | ||
| 		CALL	JUMPS.Divis32
 | ||
| 		LD	(Coeff1+1),DE		; <20>®«ãç ¥¬ ª®«-¢® ¡ ©â  
 | ||
| 		LD	(Coeff2+1),HL		; ®¤¨ ¯à®æ¥â
 | ||
| 		LD	IX,ProcentTab
 | ||
| 		LD	HL,0x0000
 | ||
| 		LD	E,L
 | ||
| 		LD	D,H
 | ||
| 		LD	BC,0x6300		; ƒ¥¥à¨¬ â ¡«¨æã
 | ||
| 		LD	(IX+0x00),L
 | ||
| 		INC	IX
 | ||
| 		LD	(IX+0x00),H
 | ||
| 		INC	IX
 | ||
| 		LD	(IX+0x00),E
 | ||
| 		INC	IX
 | ||
| 		LD	(IX+0x00),D
 | ||
| 		INC	IX
 | ||
| 		LD	(IX+0x00),C
 | ||
| 		INC	IX
 | ||
| 		INC	C
 | ||
| ; ¤«ï ª ¦¤®£® ¯à®æ¥â 
 | ||
| CoeffLoop	PUSH	BC
 | ||
| Coeff1		LD	BC,0x0000
 | ||
| 		ADD	HL,BC
 | ||
| 		LD	(IX+0x00),L
 | ||
| 		INC	IX
 | ||
| 		LD	(IX+0x00),H
 | ||
| 		INC	IX
 | ||
| 		EX	DE,HL
 | ||
| Coeff2		LD	BC,0x0000
 | ||
| 		ADC	HL,BC
 | ||
| 		EX	DE,HL
 | ||
| 		POP	BC
 | ||
| 		LD	(IX+0x00),E
 | ||
| 		INC	IX
 | ||
| 		LD	(IX+0x00),D
 | ||
| 		INC	IX
 | ||
| 		LD	(IX+0x00),C
 | ||
| 		INC	IX
 | ||
| 		INC	C
 | ||
| 		DJNZ	CoeffLoop
 | ||
| 		POP	DE
 | ||
| 		POP	HL
 | ||
| 		LD	(IX+0x00),L		; Œ ªá.¯à®æ¥â
 | ||
| 		INC	IX
 | ||
| 		LD	(IX+0x00),H
 | ||
| 		INC	IX
 | ||
| 		LD	(IX+0x00),E
 | ||
| 		INC	IX
 | ||
| 		LD	(IX+0x00),D
 | ||
| 		INC	IX
 | ||
| 		LD	(IX+0x00),C
 | ||
| 		SUB	A
 | ||
| 		LD	(ProcFlag),A
 | ||
| 		RET 
 | ||
| 
 | ||
| ;[]----------------------------------------------------------[]
 | ||
| ; <20>à®æ¥¤ãà  ¯à®áç¥â  ¨ ¯¥ç â¨ ¯à®æ¥â®
 | ||
| PrintVProc	LD	HL,PutProcent
 | ||
| 		PUSH	HL			; ‚ë室¨¬   ¯¥ç âì
 | ||
| 		LD	A,(ProcFlag)
 | ||
| 		OR	A
 | ||
| 		LD	A,100
 | ||
| 		RET	NZ			; “¦¥ ¢á¥ 100%
 | ||
| 		LD	IX,ProcentTab+250	; ‘¥à¨¤¨  â ¡«¨æë ¯à®æ.50%
 | ||
| 		LD	HL,(FileShift)		; ’¥ªã饥 ᬥ饨¥
 | ||
| 		LD	DE,(FileShift+2)
 | ||
| 		CALL	TestProcent		; ‚ ª ª®© ¯®«®¢¨¥  å®¤.?
 | ||
| 		JR	C,LowTest		; <50%
 | ||
| 		LD	A,(IX+0x04)
 | ||
| 		RET	Z			; =50%
 | ||
| 		LD	IX,ProcentTab+375	; ’ ¡«¨æ  á 75%
 | ||
| 		CALL	TestProcent		; ‚ ª ª®© ¯®«®¢¨¥  å®¤.?
 | ||
| 		JR	C,Test2			; 50%<X<75%
 | ||
| ; <20>à®æ¥¤ãà  ¯®¨áª  ¯à®æ¥â  ¢¢¥àå ¯® â ¡«¨æ¥
 | ||
| Test1		LD	A,(IX+0x04)		; ’¥ªã騩 ¯à®æ¥â
 | ||
| 		RET	Z			; X=%
 | ||
| 		RET	C			; X<%
 | ||
| 		CP	100			; Š®¥çë© ¯à®æ¥â
 | ||
| 		RET	Z
 | ||
| 		LD	BC,0x0005		; ˆé¥¬ ¢¢¥àå ¯® â ¡«¨æ¥
 | ||
| 		ADD	IX,BC			; <20>ã¦ë© ¯à®æ¥â
 | ||
| 		CALL	TestProcent
 | ||
| 		JR	Test1
 | ||
| 
 | ||
| ; <20>à®æ¥¤ãà  ¯®¨áª  ¯à®æ¥â  ¢¨§	¯® â ¡«¨æ¥
 | ||
| Test2		LD	A,(IX+0x04)		; ’¥ªã騩 ¯à®æ¥â
 | ||
| 		RET	Z			; X=%
 | ||
| 		RET	NC			; X>%
 | ||
| 		OR	A
 | ||
| 		RET	Z
 | ||
| 		LD	BC,-0x0005		; ˆé¥¬ ¢¨§ ¯® â ¡«¨æ¥
 | ||
| 		ADD	IX,BC			; <20>ã¦ë© ¯à®æ¥â
 | ||
| 		CALL	TestProcent
 | ||
| 		JR	Test2
 | ||
| 
 | ||
| ; X<50%
 | ||
| LowTest		LD	IX,ProcentTab+125	; ’ ¡«¨æ  á 25%
 | ||
| 		CALL	TestProcent		; ‚ ª ª®© ¯®«®¢¨¥  å®¤.?
 | ||
| 		JR	C,Test2			; 01%<X<25%
 | ||
| 		JR	Test1			; 25%<X<50%
 | ||
| 
 | ||
| ; <20>à®æ¥¤ãà  â¥áâ¨à®¢ ¨ï ⥪ã饣® ᬥ饨ï
 | ||
| ; <20>  ¢å®¤:
 | ||
| ;	  DEHL	- ’¥ªã饥 ᬥ饨¥
 | ||
| ; <20>  ¢ë室:
 | ||
| ;	  Z - ’¥ª.ᬥé=¯à®æ¥â
 | ||
| ;	  C - ’¥ª.ᬥé<¯à®æ¥â
 | ||
| ;	 NC - ’¥ª.ᬥé>¯à®æ¥â
 | ||
| TestProcent	PUSH	HL
 | ||
| 		PUSH	DE
 | ||
| 		PUSH	BC
 | ||
| 		LD	C,(IX+0x00)
 | ||
| 		LD	B,(IX+0x01)
 | ||
| 		OR	A
 | ||
| 		SBC	HL,BC
 | ||
| 		EX	DE,HL
 | ||
| 		LD	C,(IX+0x02)
 | ||
| 		LD	B,(IX+0x03)
 | ||
| 		SBC	HL,BC
 | ||
| 		JR	NZ,.L1
 | ||
| 		LD	A,D
 | ||
| 		OR	E
 | ||
| .L1		POP	BC
 | ||
| 		POP	DE
 | ||
| 		POP	HL
 | ||
| 		RET 
 | ||
| 
 | ||
| ; <20>à®æ¥¤ãà  ¢ë¢®¤  ¯à®æ¥â®¢
 | ||
| PutProcent	LD	HL,ProcText
 | ||
| 		PUSH	HL
 | ||
| 		LD	BC,0x2F00
 | ||
| .L1		INC	B
 | ||
| 		SUB	100
 | ||
| 		JR	NC,.L1
 | ||
| 		ADD	A,100
 | ||
| 		EX	AF,AF'
 | ||
| 		LD	A,B
 | ||
| 		CP	'0'
 | ||
| 		JR	Z,.L2
 | ||
| 		SET	0,C
 | ||
| .L2		BIT	0,C
 | ||
| 		JR	NZ,.L3
 | ||
| 		LD	A,0x20
 | ||
| .L3		LD	(HL),A
 | ||
| 		INC	HL
 | ||
| 		EX	AF,AF'
 | ||
| 		LD	B,0x2F
 | ||
| .L4		INC	B
 | ||
| 		SUB	10
 | ||
| 		JR	NC,.L4
 | ||
| 		ADD	A,10
 | ||
| 		EX	AF,AF'
 | ||
| 		LD	A,B
 | ||
| 		CP	'0'
 | ||
| 		JR	Z,.L5
 | ||
| 		SET	0,C
 | ||
| .L5		BIT	0,C
 | ||
| 		JR	NZ,.L6
 | ||
| 		LD	A,0x20
 | ||
| .L6		LD	(HL),A
 | ||
| 		INC	HL
 | ||
| 		EX	AF,AF'
 | ||
| 		ADD	A,'0'
 | ||
| 		LD	(HL),A
 | ||
| 		POP	HL
 | ||
| 		LD	DE,0x0250
 | ||
| 		LD	BC,0x0011
 | ||
| 		LD	A,0x80
 | ||
| 		JP	JUMPS.PrnTxtLnNorm
 | ||
| 
 | ||
| InitCodePage:	LD	A,0
 | ||
| CodePage	EQU $-1
 | ||
| 		LD      L,A
 | ||
| 		ADD A,A
 | ||
| 		ADD A,L
 | ||
| 		ADD A,A
 | ||
| 		ADD A,L
 | ||
| 		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	(PutLine2),A
 | ||
| 		LD	(PutLine2 + 1),HL	; ¤«ï ०¨¬  ¯à®á¬®âà  TEXT
 | ||
| 		LD (DECODE4HEX),A
 | ||
| 		LD (DECODE4HEX + 1),HL		; ¤«ï ०¨¬  ¯à®á¬®âà  HEX
 | ||
| 		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"
 | ||
| 
 | ||
| ProcText	DZ "   %"
 | ||
| ProcFlag	DB 0
 | ||
| ASCIImode	DB 1				; ¯à¨ § ¯ã᪥ ०¨¬ TEXT
 | ||
| 
 | ||
| ;[]==========================================================[]
 | ||
| 		include fvtext.a80
 | ||
| 		include fvhex.a80
 | ||
| 		include fvprn.a80
 | ||
| 
 | ||
| ;[]==========================================================[]
 | ||
| ASCIItab:	DW  80,560, 28,127,%0000000000000000,%0000000000000000,TLineUpMs,TBegFile
 | ||
| 		DW  80,560,128,228,%0000000000000000,%0000000000000000,TLineDwnMs,TEndFile
 | ||
| 		DW   0, 80, 28,228,%0000000000000000,%0000000000000000,TPageUpMs,ScrollLeft
 | ||
| 		DW 560,640, 28,228,%0000000000000000,%0000000000000000,TPageDwnMs,ScrollRght
 | ||
| 		DW   0, 80,242,256,%0000000000000001,%0000000000000000,About,0
 | ||
| 		DW  80,160,242,256,%0000000000000001,%0000000000000000,ChASCIImode,0
 | ||
| 		DW 160,240,242,256,%0000000000000001,%0000000000000000,ChViewer,0
 | ||
| 		DW 400,480,242,256,%0000000000000001,%0000000000000000,FVPrintFile,0
 | ||
| 		DW 480,560,242,256,%0000000000000001,%0000000000000000,ChCodePage,0
 | ||
| 		DW 560,640,242,256,%0000000000100001,%0000000000000000,ViewerExit,0
 | ||
| 		DW 0x8000
 | ||
| 
 | ||
| HEXtab:		DW  80,560, 28,127,%0000000000000000,%0000000000000000,HLineUpMs,HBegFile
 | ||
| 		DW  80,560,128,228,%0000000000000000,%0000000000000000,HLineDwnMs,HEndFile
 | ||
| 		DW   0, 80, 28,228,%0000000000000000,%0000000000000000,HPageUpMs,0
 | ||
| 		DW 560,640, 28,228,%0000000000000000,%0000000000000000,HPageDwnMs,0
 | ||
| 		DW   0, 80,242,256,%0000000000000001,%0000000000000000,About,0
 | ||
| 		DW 160,240,242,256,%0000000000000001,%0000000000000000,ChViewer,0
 | ||
| 		DW 240,320,242,256,%0000000000000001,%0000000000000000,HGoTo,0
 | ||
| 		DW 400,480,242,256,%0000000000000001,%0000000000000000,FVPrintFile,0
 | ||
| 		DW 480,560,242,256,%0000000000000001,%0000000000000000,ChCodePage,0
 | ||
| 		DW 560,640,242,256,%0000000000100001,%0000000000000000,ViewerExit,0
 | ||
| 		DW 0x8000
 | ||
| 
 | ||
| FVAboutTab:	DW 284,356,138,152,%0000000000100001,%0000000000000000,AboutExt,0
 | ||
| 		DW   0,160,  0,256,%0000000000100000,%0000000000000000,AboutExt,0
 | ||
| 		DW 480,640,  0,256,%0000000000100000,%0000000000000000,AboutExt,0
 | ||
| 		DW   0,640,  0, 72,%0000000000100000,%0000000000000000,AboutExt,0
 | ||
| 		DW   0,640,157,256,%0000000000100000,%0000000000000000,AboutExt,0
 | ||
| 		DW 0x8000
 | ||
| ;[]==========================================================[]
 | ||
| 
 | ||
|  INIT_VAR $
 | ||
|  SETVAR ViewingFile,		0x30
 | ||
|  SETVAR ViewMode,		BYTE
 | ||
|  SETVAR ASCIIaddX,		BYTE
 | ||
|  SETVAR EmptyLines,		BYTE
 | ||
|  SETVAR FileLenght,		DWORD		; „«¨  ä ©«  (32¡¨â)
 | ||
|  SETVAR FileShift,		DWORD		; ‘¬¥é¥¨¥ ®â  ç «  ä ©«  (32¡¨â)
 | ||
|  SETVAR TempShift,		DWORD		; ‚६¥ ï ï祩ª  ᬥ饨ï (32¡¨â)
 | ||
|  SETVAR FVNextShift,		DWORD		; ‘«¥¤ãîé ï áâà ¨æ  ¤«ï ASCII (32¡¨â)
 | ||
|  SETVAR FVMemIndef,		BYTE
 | ||
|  SETVAR FHandle,		BYTE
 | ||
|  SETVAR FVReadLen,		DWORD
 | ||
|  SETVAR ProcentTab,		505
 |