711 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			711 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
 | ||
| ; LAST UPDATE: 28.05.2025 savelij
 | ||
| 
 | ||
| ;[]==========================================================[]
 | ||
| DOSline		SUB	A
 | ||
| 		LD	(HistCurrent),A
 | ||
| 	SPDSS DSSF.TESTKEY
 | ||
| 		BIT	KEYBSTAT.B_ALT,B
 | ||
| 		JR	Z,DOSln0
 | ||
| 		LD	A,D
 | ||
| 		AND	0x7F
 | ||
| 		CP	SC.1			; 0x02
 | ||
| 		JR	C,DOSlnEx
 | ||
| 		CP	SC.BKSP			; 0x0E
 | ||
| 		JP	C,RESIDENT.QSearch
 | ||
| 		CP	SC.Q			; 0x10
 | ||
| 		JR	C,DOSlnEx
 | ||
| 		CP	SC.QSKOBKAL		; 0x1A
 | ||
| 		JP	C,RESIDENT.QSearch
 | ||
| 		CP	SC.A			; 0x1D
 | ||
| 		JR	C,DOSlnEx
 | ||
| 		CP	SC.DOTZAP		; 0x26
 | ||
| 		JP	C,RESIDENT.QSearch
 | ||
| 		CP	SC.Z			; 0x2A
 | ||
| 		JR	C,DOSlnEx
 | ||
| 		CP	SC.ZAP			; 0x31
 | ||
| 		JP	C,RESIDENT.QSearch
 | ||
| 		JR	DOSlnEx
 | ||
| 
 | ||
| DOSln0		LD	A,E
 | ||
| 		CP	0x0D
 | ||
| 		JP	Z,RunDOSline
 | ||
| 		CP	0x1B
 | ||
| 		JP	Z,ClrDOSln1
 | ||
| 		CP	'!'			; 0x21
 | ||
| 		JR	NC,DOSloop
 | ||
| 		CP	' '			; 0x20
 | ||
| 		JR	NZ,DOSln1
 | ||
| 		LD	A,(DOSstr.slen)
 | ||
| 		OR	A
 | ||
| 		JR	NZ,DOSloop
 | ||
| ; ¯®¬¥âª  ä ©«  ¯® SPACE
 | ||
| 	SPDSS DSSF.SCANKEY
 | ||
| 		JP	RESIDENT.MarkFile
 | ||
| 
 | ||
| DOSln1		LD	A,D
 | ||
| 		CP	SC.ENTER | SC.RUS	; 0xA8
 | ||
| 		JR	Z,DOSloop
 | ||
| 		CP	SC.QSKOBKAL | SC.RUS	; 0x9A
 | ||
| 		JR	Z,DOSloop
 | ||
| 		CP	SC.QSKOBKAR | SC.RUS	; 0x9B
 | ||
| 		JR	Z,DOSloop
 | ||
| 		CP	SC.E | SC.RUS		; 0x92
 | ||
| 		JR	Z,DOSloop
 | ||
| DOSlnEx
 | ||
| 	SPDSS DSSF.SCANKEY
 | ||
| 		RET 
 | ||
| 
 | ||
| DOSloop		SUB	A
 | ||
| 		LD	(HistCurrent),A
 | ||
| 		LD	IX,DOSstr
 | ||
| 		LD	HL,DOSTab
 | ||
| 		CALL	DOSInputLine
 | ||
| 		RET	C
 | ||
| 		JR	Z,RunDOSline
 | ||
| 	SPDSS DSSF.TESTKEY
 | ||
| 		LD	A,E
 | ||
| 		CP	0x1B
 | ||
| 		RET	NZ
 | ||
| 		LD	A,(DOSstr.slen)
 | ||
| 		OR	A
 | ||
| 		RET	Z
 | ||
| 		CALL	ClearDOSline
 | ||
| 	SPDSS DSSF.SCANKEY
 | ||
| 		JR	DOSloop
 | ||
| 
 | ||
| ;[]----------------------------------------------------------[]
 | ||
| ClrDOSln1
 | ||
| 	SPDSS DSSF.SCANKEY
 | ||
| 		LD	A,(DOSstr.slen)
 | ||
| 		OR	A
 | ||
| 		JP	Z,ShowDOSscreen
 | ||
| ClearDOSline	SUB	A
 | ||
| 		LD	(HistCurrent),A
 | ||
| 		LD	A,(DOSstr.slen)
 | ||
| 		OR	A
 | ||
| 		RET	Z
 | ||
| 		LD	HL,DOSinp
 | ||
| 		SUB	A
 | ||
| 		LD	B,0x80
 | ||
| .L1		LD	(HL),A
 | ||
| 		INC	HL
 | ||
| 		DJNZ	.L1
 | ||
| 		LD	(DOSstr.slen),A
 | ||
| 		LD	(DOSstr.posX),A
 | ||
| 		LD	(DOSstr.addX),A
 | ||
| 	MAKEWINDOW WINSUBOBJ.WOBIND
 | ||
| 	W_FILL 254,229,380,10,COLORI.PANEL
 | ||
| 	W_END
 | ||
| 		RET 
 | ||
| 
 | ||
| ;[]----------------------------------------------------------[]
 | ||
| RunDOSline
 | ||
| 	SPDSS DSSF.SCANKEY
 | ||
| 		LD	A,(DOSstr.slen)
 | ||
| 		OR	A
 | ||
| 		JP	Z,OpenFile
 | ||
| 		CALL	SaveDOSline
 | ||
| 		LD	HL,DOSinp
 | ||
| 		LD	A,(HL)
 | ||
| 		CP	0x20
 | ||
| 		JP	Z,ClearDOSline
 | ||
| 		LD	A,(DOSstr.slen)
 | ||
| 		LD	B,A
 | ||
| 		LD	C,0x00
 | ||
| 		LD	A,0x20
 | ||
| RunDLn0		CP	(HL)
 | ||
| 		JR	Z,RunDLine
 | ||
| 		INC	HL
 | ||
| 		INC	C
 | ||
| 		DJNZ	RunDLn0
 | ||
| RunDLine	DEC	HL
 | ||
| 		LD	A,'\\'
 | ||
| 		CP	(HL)
 | ||
| 		JP	NZ,RunDOSexe
 | ||
| 		LD	HL,DOSinp
 | ||
| 		LD	DE,WorkBuffer
 | ||
| 		PUSH	DE
 | ||
| 		LD	B,0x00
 | ||
| 		LDIR 
 | ||
| 		SUB	A
 | ||
| 		LD	(DE),A
 | ||
| 		CALL	ClearDOSline
 | ||
| 		POP	HL
 | ||
| 		LD	A,(DOSinp + 1)
 | ||
| 		CP	':'
 | ||
| 		JR	NZ,.L1
 | ||
| 		LD	(IY + PANEL.CURRPATH),0x00
 | ||
| .L1		CALL	NewDIRECTORY
 | ||
| 		LD	A,(TreeFlag)
 | ||
| 		OR	A
 | ||
| 		RET	Z
 | ||
| 		BIT	VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
 | ||
| 		RET	NZ
 | ||
| 		PUSH	IY
 | ||
| 		BIT	PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
 | ||
| 		LD	IY,LeftPanel
 | ||
| 		LD	HL,RightPanel
 | ||
| 		JR	NZ,.L2
 | ||
| 		LD	IY,RightPanel
 | ||
| 		LD	HL,LeftPanel
 | ||
| .L2		LD	DE,PANEL.CURRPATH
 | ||
| 		ADD	HL,DE
 | ||
| 		INC	HL
 | ||
| 		INC	HL
 | ||
| 	IF TREE_REZID
 | ||
| 		CALL	RESIDENT.FindTreeDIR
 | ||
| 	ELSE
 | ||
| 		CALL	FindTreeDIRR
 | ||
| 	ENDIF
 | ||
| 		CALL	PrintDIR
 | ||
| 		CALL	PrnFileInfo
 | ||
| 		PUSH	IY
 | ||
| 		POP	IX
 | ||
| 		LD	DE,PANEL.BARXL
 | ||
| 		ADD	IX,DE
 | ||
| 		CALL	PrnVScrBar
 | ||
| 		POP	IY
 | ||
| 		RET 
 | ||
| 
 | ||
| RunDOSexe	LD	HL,DOSinp - 1
 | ||
| RunDE1		INC	HL
 | ||
| 		LD	A,(HL)
 | ||
| 		CP	'!'
 | ||
| 		JR	C,RunDOSexe1
 | ||
| 		CP	'.'
 | ||
| 		JR	NZ,RunDE1
 | ||
| 		INC	HL
 | ||
| 		LD	A,(HL)
 | ||
| 		RES	5,A
 | ||
| 		CP	'F'
 | ||
| 		JR	NZ,RunDOSexe1
 | ||
| 		INC	HL
 | ||
| 		LD	A,(HL)
 | ||
| 		RES	5,A
 | ||
| 		CP	'L'
 | ||
| 		JR	NZ,RunDOSexe1
 | ||
| 		INC	HL
 | ||
| 		LD	A,(HL)
 | ||
| 		RES	5,A
 | ||
| 		CP	'X'
 | ||
| 		JR	NZ,RunDOSexe1
 | ||
| 		LD	HL,DOSinp
 | ||
| 		LD	DE,WorkBuffer
 | ||
| 		SUB	A
 | ||
| .L1		LDI 
 | ||
| 		CP	(HL)
 | ||
| 		JR	NZ,.L1
 | ||
| 		LD	(DE),A
 | ||
| 		CALL	ClearDOSline
 | ||
| 		CALL	RunFLX
 | ||
| 		JP	C,DOSError
 | ||
| 		RET 
 | ||
| 
 | ||
| RunDOSexe1	ld	hl,WorkBuffer
 | ||
| 		ld	de,WorkBuffer + 1
 | ||
| 		ld	bc,0x0100
 | ||
| 		ld	(hl),0
 | ||
| 		ldir
 | ||
| 		LD	DE,WorkBuffer
 | ||
| 		call	GetFileName
 | ||
| 		jp	c,.error
 | ||
| 		ld	hl,DOSinp
 | ||
| 		call	SkipWord
 | ||
| 		ld	a,(hl)
 | ||
| 		and	a
 | ||
| 		jr	z,.endOfLine
 | ||
| 		dec	hl
 | ||
| 		ld	de,WorkBuffer
 | ||
| 		call	ConcatString
 | ||
| .endOfLine:	ld	hl,WorkBuffer
 | ||
| 		ld	de,WorkBuffer + 0x0100
 | ||
| 	SPDSS DSSF.EX_PATH,4
 | ||
| 		jr	c,.error
 | ||
| 		and	2
 | ||
| 		jr	z,.unknown
 | ||
| 		ld	hl,(WorkBuffer + 0x0100)
 | ||
| 		ld	de,'XE'		;0x5845 - 'EX'
 | ||
| 		sbc	hl,de	
 | ||
| 		jr	nz,.noExe
 | ||
| 		ld	a,(WorkBuffer + 0x0102)
 | ||
| 		cp	'E'
 | ||
| 		jr	nz,.noExe
 | ||
| 		;!TODO	¬¥áâ® ¤«ï ᯥæ¨ä¨ç®£® § ¯ã᪠ exe?
 | ||
| 		; ... ... ... 
 | ||
| 		;
 | ||
| .unknown:	ld	hl,WorkBuffer
 | ||
| 		ld	de,WorkBuffer + 0x0100
 | ||
| 		ld	bc,0x0100
 | ||
| 		ldir
 | ||
| 		jr	.noBatch
 | ||
| 
 | ||
| .noExe:		ld	hl,ShellFile		;ª®¯¨à㥬 ¯ãâì ª 襫«ã
 | ||
| 		ld	de,WorkBuffer + 0x0100
 | ||
| 		call	CopyString
 | ||
| 		ld	hl,WorkBuffer
 | ||
| 		call	ConcatString
 | ||
| .noBatch:	CALL	ResDrivers
 | ||
| 		SUB	A
 | ||
| 		CALL	ClearScreen
 | ||
| 		CALL	ResVideoMode
 | ||
| 		LD	HL,ReStartPoint
 | ||
| 		EX	(SP),HL
 | ||
| 		LD	HL,WorkBuffer + 0x0100
 | ||
| 	SPDSS DSSF.EXEC,0
 | ||
| 		RET	NC
 | ||
| 		PUSH	AF
 | ||
| 	SETPORT BORDER,0
 | ||
| 		CALL	InitVideoMode
 | ||
| 		CALL	InitDrivers
 | ||
| 		CALL	InitScreen
 | ||
| 		CALL	ClearDOSline
 | ||
| 		SUB	A
 | ||
| 		CALL	InitPanels
 | ||
| 		POP	AF
 | ||
| .error:		CALL	DOSError
 | ||
| 		LD	HL,MainLoop
 | ||
| 		EX	(SP),HL
 | ||
| 		RET
 | ||
| 
 | ||
| ; ¢áâ ¢ª  ¨§ ¡ãä¥à  ¢¢®¤  ª®¬.áâப¨ ¨¬¥¨ ¨á¯®«ï¥¬®£® ä ©« 
 | ||
| ; ¥á«¨ 㪠§   ¡á®«îâë© ¯ãâì ª ä ©«ã á ¨¬¥¥¬ ¤¨áª , â® ® ª®¯¨àã¥âáï æ¥«¨ª®¬
 | ||
| ; ¥á«¨ ¯à®áâ® ¨¬ï ä ©« , â® ¯à®¨§¢®¤¨âáï ¯®¯ë⪠ ¯®¨áª  ä ©«  ¢
 | ||
| ; ª â «®£¥ ⥪ã饩 ¯ ¥«¨ ¨ ¯®¤áâ ¢«ï¥âáï ¥£®  ¡á®«îâë© ¯ãâì, ¥á«¨ ¥â, â® ¯à®áâ® ¨¬ï ä ©« 
 | ||
| ; DE - ¡ãä¥à ¤«ï ¨¬¥¨ ä ©« 
 | ||
| GetFileName:	LD	A,(DOSinp + 1)		; ¢ ª®¬.áâப¥ 㪠§   ¡á®«îâë© ¯ãâì ª ä ©«ã (á ¤¨áª®¬)
 | ||
| 		CP	':'
 | ||
| 		JR	nz,.panelSearch
 | ||
| .notFound:	ld	hl,DOSinp		;ª®¯¨à㥬 ¡ãä¥à ª®¬.áâப¨ ¢ ¡ãä¥à
 | ||
| 		jp	CopyWord
 | ||
| 
 | ||
| .panelSearch:	ex	hl,de
 | ||
| 		ld	(.str),hl
 | ||
| 		bit	PANELFLAG.B_SIDE,(iy + PANEL.PANELFLAG)
 | ||
| 		ld	hl,RightPanel + PANEL.CURRPATH
 | ||
| 		jr	nz,.next
 | ||
| 		ld	hl,LeftPanel + PANEL.CURRPATH
 | ||
| .next:		ld	de,WorkBuffer + 0x0100
 | ||
| 		call	CopyString
 | ||
| 		ld	a,'\\' 
 | ||
| 		ld	(de),a
 | ||
| 		inc	de
 | ||
| ; ‚뤥«¨âì ¨¬ï ä ©«  ¨§ áâப¨
 | ||
| 		ld	hl,DOSinp		; ®âªã¤ 
 | ||
| 	SPDSS DSSF.EX_PATH,3
 | ||
| 		ret	c			; ¨¬ï ä ©«  ¥  ©¤¥®
 | ||
| 		bit	1,a
 | ||
| 		jr	z,.noExt		; ¨¬ï ¨á¯®«ï¥¬®£® ä ©«  㪠§ ® á à áè¨à¥¨¥¬, ¨áª âì ¥ 㦮
 | ||
| 		ld	hl,EndOfString
 | ||
| 		jr	.found1
 | ||
| 
 | ||
| .noExt:		ld	hl,BATExtension
 | ||
| 		call	PrepareFilename
 | ||
| 		call	SearchFilename
 | ||
| 		jr	nc,.found
 | ||
| 		ld	hl,EXEExtension
 | ||
| .found1:	call	PrepareFilename
 | ||
| 		call	SearchFilename
 | ||
| .found:		ld	de,0
 | ||
| .str		EQU $-2
 | ||
| 		jr	c,.notFound
 | ||
| 		ld	hl,WorkBuffer + 0200h
 | ||
| 		jp	CopyString
 | ||
| 
 | ||
| ;<3B>®¤£®â®¢ª  ¨¬¥¨ ä ©«  ¤«ï ¯®¨áª 
 | ||
| PrepareFilename:
 | ||
| 		ld	de,WorkBuffer + 0200h
 | ||
| 		push	hl
 | ||
| 		ld	hl,WorkBuffer + 0x0100
 | ||
| 		call	CopyString
 | ||
| 		pop	hl
 | ||
| 		jp	ConcatString
 | ||
| 
 | ||
| ;¯®¨áª ä ©« 
 | ||
| SearchFilename:	ld	hl,WorkBuffer + 0200h	;¯®¨áª ä ©«  ¢ ª â «®£¥ ⥪ã饩 ¯ ¥«¨
 | ||
| 		ld	de,WorkBuffer + 0300h	
 | ||
| 	SPDSS DSSF.F_FIRST,1,DIR.M_Archive + DIR.M_ReadOnly
 | ||
| 		ret
 | ||
| 
 | ||
| ;[]----------------------------------------------------------[]
 | ||
| SaveDOSline
 | ||
| 	GETPORT WINSP.CPU1
 | ||
| 		PUSH	AF
 | ||
| 		LD	A,(RAMPAGES.FNHELP)
 | ||
| 	SETPORT WINSP.CPU1,,0
 | ||
| 	SETPORT WINSP.Y_PORT,0xC0
 | ||
| 		LD	IX,DOSstr
 | ||
| 		LD	HL,(HistSpace)
 | ||
| 		LD	C,(IX + DOSstr.slen - DOSstr)
 | ||
| 		LD	B,0x00
 | ||
| .L4		OR	A
 | ||
| 		SBC	HL,BC
 | ||
| 		JR	C,.L1
 | ||
| 		JR	NZ,.L3
 | ||
| .L1		LD	A,(HistCount)
 | ||
| 		DEC	A
 | ||
| 		LD	(HistCount),A
 | ||
| 		PUSH	BC
 | ||
| 		CALL	FindHistory
 | ||
| 		POP	BC
 | ||
| 		LD	DE,DOShistory + DOShistory_Size
 | ||
| 		OR	A
 | ||
| 		EX	DE,HL
 | ||
| 		SBC	HL,DE
 | ||
| 		JR	.L4
 | ||
| 
 | ||
| .L3		DEC	HL
 | ||
| 		LD	(HistSpace),HL
 | ||
| 		PUSH	BC
 | ||
| 		LD	A,(HistCount)
 | ||
| 		CALL	FindHistory
 | ||
| 		LD	E,L
 | ||
| 		LD	D,H
 | ||
| 		ADD	HL,BC
 | ||
| 		INC	HL
 | ||
| 		EX	DE,HL
 | ||
| 		PUSH	HL
 | ||
| 		LD	BC,DOShistory
 | ||
| 		OR	A
 | ||
| 		SBC	HL,BC
 | ||
| 		LD	C,L
 | ||
| 		LD	B,H
 | ||
| 		POP	HL
 | ||
| 		LD	A,B
 | ||
| 		OR	C
 | ||
| 		JR	Z,.L2
 | ||
| 		DEC	HL
 | ||
| 		DEC	DE
 | ||
| 		LDDR 
 | ||
| .L2		POP	BC
 | ||
| 		LD	HL,DOSinp
 | ||
| 		LD	DE,DOShistory
 | ||
| 		LD	A,C
 | ||
| 		INC	A
 | ||
| 		LD	(DE),A
 | ||
| 		INC	DE
 | ||
| 		LDIR 
 | ||
| 		SUB	A
 | ||
| 		LD	(HistCurrent),A
 | ||
| 		POP	AF
 | ||
| 	SETPORT WINSP.CPU1,,0
 | ||
| 		LD	HL,HistCount
 | ||
| 		INC	(HL)
 | ||
| 		RET 
 | ||
| 
 | ||
| GetDOShistory	LD	IX,DOSstr
 | ||
| 		LD	HL,HistCount
 | ||
| 		LD	A,(HistCurrent)
 | ||
| 		INC	(HL)
 | ||
| 		DEC	(HL)
 | ||
| 		JP	Z,ClearDOSline
 | ||
| 		CP	(HL)
 | ||
| 		RET	Z
 | ||
| 		EX	AF,AF'
 | ||
| 	GETPORT WINSP.CPU1
 | ||
| 		PUSH	AF
 | ||
| 		LD	A,(RAMPAGES.FNHELP)
 | ||
| 	SETPORT WINSP.CPU1,,0
 | ||
| 		EX	AF,AF'
 | ||
| 		PUSH	AF
 | ||
| 		CALL	FindHistory
 | ||
| 		LD	DE,DOSinp
 | ||
| 		LD	A,(HL)
 | ||
| 		INC	HL
 | ||
| 		DEC	A
 | ||
| 		LD	(IX + DOSstr.slen - DOSstr),A
 | ||
| 		LD	(IX + DOSstr.posX - DOSstr),A
 | ||
| 		LD	C,A
 | ||
| 		LD	B,0x00
 | ||
| 		LDIR 
 | ||
| 		SUB	A
 | ||
| 		LD	(IX + DOSstr.addX - DOSstr),A
 | ||
| 		POP	AF
 | ||
| 		INC	A
 | ||
| 		LD	(HistCurrent),A
 | ||
| 		POP	AF
 | ||
| 	SETPORT WINSP.CPU1,,0
 | ||
| 		RET 
 | ||
| 
 | ||
| FindHistory	LD	HL,DOShistory
 | ||
| 		OR	A
 | ||
| 		RET	Z
 | ||
| 		LD	B,A
 | ||
| 		LD	D,0x00
 | ||
| .L1		LD	E,(HL)
 | ||
| 		ADD	HL,DE
 | ||
| 		DJNZ	.L1
 | ||
| 		RET
 | ||
| 
 | ||
| ;[]----------------------------------------------------------[]
 | ||
| DOSInputLine	LD	(InpLnData),IX
 | ||
| 		LD	(InputLine.InpMous),HL
 | ||
| 		RES	7,(IX + 0x01)
 | ||
| 		SET	6,(IX + 0x01)
 | ||
| 	SPDSS DSSF.TESTKEY
 | ||
| 		JR	NZ,.L1
 | ||
| 		RES	6,(IX + 0x01)
 | ||
| .L1		CALL	InsInpLnCol
 | ||
| 		PUSH	IX
 | ||
| 		POP	HL
 | ||
| 		LD	DE,LenInpData
 | ||
| 		ADD	HL,DE
 | ||
| 		LD	E,(IX + 0x04)
 | ||
| 		ADD	HL,DE
 | ||
| 		LD	(HL),D
 | ||
| 		CALL	PrintInpLn + 3
 | ||
| DOSLineLp	HALT 
 | ||
| 		CALL	ChCursor
 | ||
| 		LD	IX,(InputLine.InpMous)
 | ||
| 		CALL	TestCoords
 | ||
| 	SPDSS DSSF.TESTKEY
 | ||
| 		JR	Z,DOSLineLp
 | ||
| 		RES	7,D
 | ||
| 		BIT	KEYBSTAT.B_ALT,B
 | ||
| 		JR	NZ,DOSLineLp1;DOSLineLp	; ¢ë室, §¤¥áì ¥â ª®¬¡¨ æ¨© á ALT
 | ||
| 		LD	IX,DOSTable2		; ª®¬¡¨ æ¨ï á CTRL
 | ||
| 		BIT	KEYBSTAT.B_CTRL,B
 | ||
| 		JR	NZ,DOSKeys
 | ||
| 		LD	IX,DOSTable1		; ¢¢®¤ ¡¥§ ¬®¤¨ä¨ª â®à®¢
 | ||
| DOSKeys		LD	L,(IX + 0x00)		; ASCII code
 | ||
| 		INC	IX
 | ||
| 		INC L
 | ||
| 		JR	Z,DOSLineLp1
 | ||
| 		DEC L
 | ||
| 		LD	H,(IX + 0x00)		; position code
 | ||
| 		INC	IX
 | ||
| 		LD	C,(IX + 0x00)		; adr LOW
 | ||
| 		INC	IX
 | ||
| 		LD	B,(IX + 0x00)		; adr HIGH
 | ||
| 		INC	IX
 | ||
| 		OR	A
 | ||
| 		SBC	HL,DE
 | ||
| 		JR	NZ,DOSKeys
 | ||
| 		LD	IX,(InpLnData)
 | ||
| 		RES	6,(IX + 0x01)
 | ||
| 		LD	A,E
 | ||
| 		CP	0x1B
 | ||
| 		JR	NZ,DOSLnNx
 | ||
| 		CALL	ResCursor
 | ||
| 		LD	A,0x01
 | ||
| 		OR	A
 | ||
| 		RET
 | ||
| 
 | ||
| DOSLnNx		LD	HL,DOSLineLp
 | ||
| 		PUSH	HL
 | ||
| 		PUSH	BC
 | ||
| 		PUSH	IX
 | ||
| 	SPDSS DSSF.SCANKEY
 | ||
| 		POP	IX
 | ||
| 		RET
 | ||
| 
 | ||
| DOSLineLp1	LD	IX,(InpLnData)
 | ||
| 		LD	A,E
 | ||
| 		CP	0x20
 | ||
| 		JR	NC,DOSLineLp2
 | ||
| 		BIT	6,(IX + 0x01)
 | ||
| 		JR	Z,DOSLnE0
 | ||
| 		PUSH	IX
 | ||
| 	SPDSS DSSF.SCANKEY
 | ||
| 		POP	IX
 | ||
| DOSLnE0		CALL	ResCursor
 | ||
| 		LD	A,0x01
 | ||
| 		OR	A
 | ||
| 		RET
 | ||
| 
 | ||
| DOSLineLp2	RES	6,(IX + 0x01)
 | ||
| 		LD	HL,DOSLineLp
 | ||
| 		PUSH	HL
 | ||
| 		PUSH	IX
 | ||
| 	SPDSS DSSF.SCANKEY
 | ||
| 		POP	IX
 | ||
| 		LD	A,E
 | ||
| 		JP	InsertSymbol
 | ||
| 
 | ||
| DOSLnExtN	POP	HL
 | ||
| 		LD	IX,(InpLnData)
 | ||
| 		CALL	ResCursor
 | ||
| 		XOR	A
 | ||
| 		RET 
 | ||
| 
 | ||
| DOSLnExtC	POP	HL
 | ||
| 		LD	IX,(InpLnData)
 | ||
| 		CALL	ResCursor
 | ||
| 		SCF 
 | ||
| 		RET 
 | ||
| 
 | ||
| DOSTable1	DW SC.ESC << 8 | 0x1B,	InputLine.InpLnExtC	; 0x011B,InpLnExtC
 | ||
| 		DW SC.ENTER << 8 | 0x0D,InputLine.InpLnExtN	; 0x280D,InpLnExtN
 | ||
| 		DW SC.X4 << 8,		ILleft			; 0x5400,ILleft
 | ||
| 		DW SC.X6 << 8,		ILright			; 0x5600,ILright
 | ||
| 		DW SC.BKSP << 8 | 8,	ILdelet			; 0x0E08,ILdelet
 | ||
| 		DW SC.XDEL << 8,	IL_del_			; 0x4F00,IL_del_
 | ||
| 		DW SC.X7 << 8,		ILhome			; 0x5700,ILhome
 | ||
| 		DW SC.X1 << 8,		ILend			; 0x5100,ILend
 | ||
| 		DB 0xFF
 | ||
| 
 | ||
| DOSTable2	DW SC.X4 << 8,		ILwordL			; 0x5400,ILwordL
 | ||
| 		DW SC.X6 << 8,		ILwordR			; 0x5600,ILwordR
 | ||
| 		DW SC.BKSP << 8,	ILdelWR			; 0x0E00,ILdelWR
 | ||
| 		DW SC.ENTER << 8,	InsFileName		; 0x2800,InsFileName
 | ||
| 		DW SC.QSKOBKAL << 8,	InsLeftPath		; 0x1A00,InsLeftPath
 | ||
| 		DW SC.QSKOBKAR << 8,	InsRightPath		; 0x1B00,InsRightPath
 | ||
| 		DW SC.E << 8,		InsHistory		; 0x1200,InsHistory
 | ||
| 		DB 0xFF
 | ||
| 
 | ||
| InsFileName
 | ||
| 	GETPORT WINSP.CPU1
 | ||
| 		PUSH	AF
 | ||
| 		BIT	PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
 | ||
| 		LD	A,(RAMPAGES.LEFTPANEL)
 | ||
| 		JR	Z,.L1
 | ||
| 		LD	A,(RAMPAGES.RIGHTPANEL)
 | ||
| .L1
 | ||
| 	SETPORT WINSP.CPU1,,0
 | ||
| 		LD	L,(IY + PANEL.FFL)
 | ||
| 		LD	H,(IY + PANEL.FFH)
 | ||
| 		LD	E,(IY + PANEL.CFL)
 | ||
| 		LD	D,(IY + PANEL.CFH)
 | ||
| 		ADD	HL,DE
 | ||
| 		BIT	VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
 | ||
| 		JR	Z,InsFN1
 | ||
| 		ADD	HL,HL
 | ||
| 		ADD	HL,HL
 | ||
| 		ADD	HL,HL
 | ||
| 		ADD	HL,HL
 | ||
| 		SET	6,H
 | ||
| 		INC	HL
 | ||
| 		INC	HL
 | ||
| 		LD	DE,TempName
 | ||
| 		LD	BC,0x000D
 | ||
| 		LDIR 
 | ||
| 		JR	InsFN2
 | ||
| 
 | ||
| InsFN1		ADD	HL,HL
 | ||
| 		ADD	HL,HL
 | ||
| 		ADD	HL,HL
 | ||
| 		LD	E,L
 | ||
| 		LD	D,H
 | ||
| 		ADD	HL,HL
 | ||
| 		ADD	HL,DE
 | ||
| 		SET	6,H
 | ||
| 		INC	HL
 | ||
| 		LD	DE,TempName
 | ||
| 		CALL	MakeDOSname
 | ||
| InsFN2		POP	AF
 | ||
| 	SETPORT WINSP.CPU1,,0
 | ||
| 		LD	HL,TempName
 | ||
| 		LD	A,(HL)
 | ||
| 		CP	'.'
 | ||
| 		RET	Z
 | ||
| 		CP	'\\'
 | ||
| 		RET	Z
 | ||
| 		PUSH	HL
 | ||
| 		SUB	A
 | ||
| 		LD	C,A
 | ||
| .L1		INC	C
 | ||
| 		INC	HL
 | ||
| 		CP	(HL)
 | ||
| 		JR	NZ,.L1
 | ||
| 		LD	(HL),0x20
 | ||
| 		INC	HL
 | ||
| 		LD	(HL),A
 | ||
| 		INC	C
 | ||
| 		POP	HL
 | ||
| 		JP	InsertWord
 | ||
| 
 | ||
| TempName	DB	14 DUP 0
 | ||
| 
 | ||
| InsLeftPath	LD	HL,LeftPanel + PANEL.CURRPATH
 | ||
| 		JR	InsPath
 | ||
| 
 | ||
| InsRightPath	LD	HL,RightPanel + PANEL.CURRPATH
 | ||
| InsPath		LD	DE,WorkBuffer + 0x100
 | ||
| 		PUSH	DE
 | ||
| 		SUB	A
 | ||
| 		LD	C,A
 | ||
| .L1		LDI 
 | ||
| 		CP	(HL)
 | ||
| 		JR	NZ,.L1
 | ||
| 		DEC	HL
 | ||
| 		LD	A,'\\'
 | ||
| 		CP	(HL)
 | ||
| 		JR	Z,.L2
 | ||
| 		LD	(DE),A
 | ||
| 		INC	DE
 | ||
| 		DEC	C
 | ||
| .L2		SUB	A
 | ||
| 		SUB	C
 | ||
| 		LD	C,A
 | ||
| 		POP	HL
 | ||
| 		JP	InsertWord
 | ||
| 
 | ||
| InsertWord	LD	A,(IX + 0x04)	;InpytSymb
 | ||
| 		ADD	A,C
 | ||
| 		RET	C
 | ||
| 		SUB	(IX + 0x00)	;Max len
 | ||
| 		RET	NC
 | ||
| 		PUSH	HL
 | ||
| 		LD	A,(IX + 0x04)
 | ||
| 		SUB	(IX + 0x02)
 | ||
| 		JR	Z,NotInsWord
 | ||
| ; ‚¢®¤ ¢ á¥à¥¤¨ã ⥪áâ 
 | ||
| 		PUSH	IX
 | ||
| 		POP	HL
 | ||
| 		LD	DE,LenInpData
 | ||
| 		ADD	HL,DE
 | ||
| 		LD	E,(IX + 0x04)
 | ||
| 		ADD	HL,DE
 | ||
| 		LD	E,L
 | ||
| 		LD	D,H
 | ||
| 		LD	B,0x00
 | ||
| 		ADD	HL,BC
 | ||
| 		EX	DE,HL
 | ||
| 		DEC	HL
 | ||
| 		DEC	DE
 | ||
| 		PUSH	BC
 | ||
| 		LD	C,A
 | ||
| 		LDDR 
 | ||
| 		POP	BC
 | ||
| NotInsWord	PUSH	IX
 | ||
| 		POP	HL
 | ||
| 		LD	DE,LenInpData
 | ||
| 		ADD	HL,DE
 | ||
| 		LD	E,(IX + 0x02)
 | ||
| 		ADD	HL,DE
 | ||
| 		EX	DE,HL
 | ||
| 		POP	HL
 | ||
| 		PUSH	BC
 | ||
| 		LD	B,0x00
 | ||
| 		LDIR 
 | ||
| 		POP	BC
 | ||
| 		LD	A,(IX + 0x04)
 | ||
| 		ADD	A,C
 | ||
| 		LD	(IX + 0x04),A
 | ||
| 		LD	A,(IX + 0x02)
 | ||
| 		ADD	A,C
 | ||
| 		LD	(IX + 0x02),A
 | ||
| 		JP	PrintInpLn
 | ||
| 
 | ||
| InsHistory	CALL	GetDOShistory
 | ||
| 		JP	PrintInpLn
 | ||
| 
 | ||
| ;[]----------------------------------------------------------[]
 | ||
| ShellFile:	db	"X:\\SYSTEM.EXE /C ",0	; 襫«
 | ||
| BATExtension:	db	".BAT",0
 | ||
| EXEExtension:	db	".EXE"
 | ||
| EndOfString:	db	0
 | ||
| DOSstr		DB 0x80,0x00
 | ||
| .posX		DB 0x00
 | ||
| .addX		DB 0x00
 | ||
| .slen		DB 0x00
 | ||
| 		DW 256,231,376
 | ||
| 		DB COLORP.PANEL + COLORI.FILES
 | ||
| 
 | ||
| DOSinp		DB	0x81 DUP 0
 | ||
| 
 | ||
| HistSpace	DEFW	0x200
 | ||
| HistCount	DEFB	0x00
 | ||
| HistCurrent	DEFB	0x00
 | ||
| ;[]----------------------------------------------------------[]
 |