802 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			802 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
 | ||
| ; LAST UPDATE: 20.03.2025 savelij
 | ||
| 
 | ||
| ;[]----------------------------------------------------------[]
 | ||
| InputLine	LD	(InpLnData),IX
 | ||
| 		LD	(.InpMous),HL
 | ||
| 		SET	7,(IX+0x01)
 | ||
| 		SUB	A
 | ||
| 		LD	(IX+0x02),A
 | ||
| 		LD	(IX+0x03),A
 | ||
| 		CALL	InsInpLnCol
 | ||
| 		PUSH	IX
 | ||
| 		POP	HL
 | ||
| 		LD	DE,LenInpData
 | ||
| 		ADD	HL,DE
 | ||
| 		PUSH	HL
 | ||
| 		LD	E,(IX+0x04)
 | ||
| 		ADD	HL,DE
 | ||
| 		LD	(HL),D
 | ||
| 		LD	(IX+0x02),E
 | ||
| 		POP	HL
 | ||
| 		LD	DE,WorkBuffer
 | ||
| 		LD	A,(IX+0x02)
 | ||
| 		LD	(DE),A
 | ||
| 		INC	DE
 | ||
| 		LD	A,(IX+0x03)
 | ||
| 		LD	(DE),A
 | ||
| 		INC	DE
 | ||
| 		LD	A,(IX+0x04)
 | ||
| 		LD	(DE),A
 | ||
| 		INC	DE
 | ||
| 		LD	C,A
 | ||
| 		LD	B,0x00
 | ||
| 		OR	B
 | ||
| 		JR	Z,.L1
 | ||
| 		LDIR 
 | ||
| .L1		CALL	PrintInpLn.L1
 | ||
| .InpLineLp	HALT 
 | ||
| 		CALL	ChCursor
 | ||
| 		LD	IX,0x0000
 | ||
| .InpMous	EQU $-2
 | ||
| 		CALL	TestCoords
 | ||
| 	SPDSS DSSF.TESTKEY
 | ||
| 		JR	Z,.InpLineLp
 | ||
| 		RES	7,D
 | ||
| 		BIT	KEYBSTAT.B_ALT,B
 | ||
| 		JR	NZ,.InpLineLp
 | ||
| 		LD	IX,InpTable2
 | ||
| 		BIT	KEYBSTAT.B_CTRL,B
 | ||
| 		JR	NZ,.NextInpKeys
 | ||
| 		LD	IX,InpTable1
 | ||
| .NextInpKeys	LD	L,(IX+0x00)
 | ||
| 		INC L
 | ||
| 		JR	Z,.InpLineLp1
 | ||
| 		INC	IX
 | ||
| 		DEC L
 | ||
| 		LD	H,(IX+0x00)
 | ||
| 		INC	IX
 | ||
| 		LD	C,(IX+0x00)
 | ||
| 		INC	IX
 | ||
| 		LD	B,(IX+0x00)
 | ||
| 		INC	IX
 | ||
| 		OR	A
 | ||
| 		SBC	HL,DE
 | ||
| 		JR	NZ,.NextInpKeys
 | ||
| 		LD	IX,(InpLnData)
 | ||
| 		LD	HL,.InpLineLp
 | ||
| 		PUSH	HL
 | ||
| 		PUSH	BC
 | ||
| 		PUSH	IX
 | ||
| 	SPDSS DSSF.SCANKEY
 | ||
| 		POP	IX
 | ||
| 		RET 
 | ||
| 
 | ||
| .InpLineLp1	LD	IX,(InpLnData)
 | ||
| 		LD	HL,.InpLineLp
 | ||
| 		PUSH	HL
 | ||
| 		PUSH	IX
 | ||
| 	SPDSS DSSF.SCANKEY
 | ||
| 		POP	IX
 | ||
| 		LD	A,E
 | ||
| 		JR	InsertSymbol
 | ||
| 
 | ||
| .InpLnExtN	POP	HL
 | ||
| 		LD	IX,(InpLnData)
 | ||
| 		CALL	ResCursor
 | ||
| 		XOR	A
 | ||
| 		RET 
 | ||
| 
 | ||
| .InpLnExtC	POP	HL
 | ||
| 		LD	IX,(InpLnData)
 | ||
| 		CALL	ResCursor
 | ||
| 		PUSH	IX
 | ||
| 		POP	HL
 | ||
| 		LD	DE,LenInpData
 | ||
| 		ADD	HL,DE
 | ||
| 		EX	DE,HL
 | ||
| 		LD	HL,WorkBuffer
 | ||
| 		LD	A,(HL)
 | ||
| 		INC	HL
 | ||
| 		LD	(IX+0x02),A
 | ||
| 		LD	A,(HL)
 | ||
| 		INC	HL
 | ||
| 		LD	(IX+0x03),A
 | ||
| 		LD	A,(HL)
 | ||
| 		INC	HL
 | ||
| 		LD	(IX+0x04),A
 | ||
| 		LD	C,A
 | ||
| 		LD	B,0x00
 | ||
| 		LD	A,B
 | ||
| 		OR	C
 | ||
| 		SCF 
 | ||
| 		RET	Z
 | ||
| 		LDIR 
 | ||
| 		RET 
 | ||
| 
 | ||
| InpLnData	DEFW	0x0000	; €¤à¥á ®¯¨á â¥«ï áâப¨
 | ||
| 				;  +00 Œ ªá¨¬ «ì ï ¤«¨  áâப¨
 | ||
| 				;  +01 ”« £ £®â®¢®áâ¨
 | ||
| 				;  +02 ⥪ãé ï X ¯®§¨æ¨ï ªãàá®à 
 | ||
| 				;  +03 ⥪ãé ï AddX
 | ||
| 				;  +04 ª®«¨ç¥á⢮ ¢¢¥¤¥ëå ᨬ¢®«®¢
 | ||
| 				;  +05 X ¯®§¨æ¨ï áâப¨	  íªà ¥
 | ||
| 				;  +07 Y ¯®§¨æ¨ï áâப¨	  íªà ¥
 | ||
| 				;  +09 X ¤«¨  áâப¨   íªà ¥
 | ||
| 				;  +0B –¢¥â áâப¨
 | ||
| 				;  +0C ...á ¬  áâப 
 | ||
| 
 | ||
| InpTable1	DW SC.ESC << 8 | 0x1B,		InputLine.InpLnExtC
 | ||
| 		DW SC.ENTER << 8 | 0x0D,	InputLine.InpLnExtN
 | ||
| 		DW SC.XENTER << 8 | 0x0D,	InputLine.InpLnExtN
 | ||
| 		DW SC.X4 << 8,			ILleft
 | ||
| 		DW SC.X6 << 8,			ILright
 | ||
| 		DW SC.BKSP << 8 | 0x08,		ILdelet
 | ||
| 		DW SC.XDEL << 8,		IL_del_
 | ||
| 		DW SC.X7 << 8,			ILhome
 | ||
| 		DW SC.X1 << 8,			ILend
 | ||
| 		DB 0xFF
 | ||
| 
 | ||
| InpTable2	DW SC.X4 << 8,			ILwordL
 | ||
| 		DW SC.X6 << 8,			ILwordR
 | ||
| 		DW SC.BKSP << 8,		ILdelWR
 | ||
| 		DB 0xFF
 | ||
| 
 | ||
| InsertSymbol	CP	' '
 | ||
| 		RET	C
 | ||
| 		EX	AF,AF'
 | ||
| 		BIT	7,(IX+0x01)	; ready
 | ||
| 		CALL	NZ,ClearInpLn
 | ||
| 		LD	A,(IX+0x04)	; InpytSymb
 | ||
| 		SUB	(IX+0x00)	; Max len
 | ||
| 		RET	NC
 | ||
| 		LD	A,(IX+0x04)
 | ||
| 		SUB	(IX+0x02)
 | ||
| 		JR	Z,NotInsert
 | ||
| ; ‚¢®¤ ¢ á¥à¥¤¨ã ⥪áâ 
 | ||
| 		LD	C,A
 | ||
| 		LD	B,0x00
 | ||
| 		PUSH	IX
 | ||
| 		POP	HL
 | ||
| 		LD	DE,LenInpData
 | ||
| 		ADD	HL,DE
 | ||
| 		LD	E,(IX+0x04)
 | ||
| 		ADD	HL,DE
 | ||
| 		LD	E,L
 | ||
| 		LD	D,H
 | ||
| 		DEC	HL
 | ||
| 		LDDR 
 | ||
| NotInsert	PUSH	IX
 | ||
| 		POP	HL
 | ||
| 		LD	DE,LenInpData
 | ||
| 		ADD	HL,DE
 | ||
| 		LD	E,(IX+0x02)
 | ||
| 		ADD	HL,DE
 | ||
| 		EX	AF,AF'
 | ||
| 		LD	(HL),A
 | ||
| 		INC	(IX+0x04)
 | ||
| 		INC	(IX+0x02)
 | ||
| 		JP	PrintInpLn
 | ||
| 
 | ||
| ; Clear Buffer
 | ||
| ClearInpLn	RES	7,(IX+0x01)
 | ||
| 		PUSH	IX
 | ||
| 		POP	HL
 | ||
| 		LD	DE,LenInpData
 | ||
| 		ADD	HL,DE
 | ||
| 		LD	B,(IX+0x00)
 | ||
| 		SUB	A
 | ||
| .L1		LD	(HL),A
 | ||
| 		INC	HL
 | ||
| 		DJNZ	.L1
 | ||
| 		LD	(IX+0x02),A
 | ||
| 		LD	(IX+0x03),A
 | ||
| 		LD	(IX+0x04),A
 | ||
| 		JP	PrintInpLn
 | ||
| 
 | ||
| ; Šãàá®à ¢«¥¢®   ®¤® ¬¥áâ®
 | ||
| ILleft		RES	7,(IX+0x01)
 | ||
| 		LD	A,(IX+0x02)
 | ||
| 		DEC	A
 | ||
| 		RET	M
 | ||
| 		LD	(IX+0x02),A
 | ||
| 		JP	PrintInpLn
 | ||
| 
 | ||
| ; Šãàá®à ¢¯à ¢®   ®¤® ¬¥áâ®
 | ||
| ILright		RES	7,(IX+0x01)
 | ||
| 		LD	A,(IX+0x02)
 | ||
| 		CP	(IX+0x04)
 | ||
| 		RET	Z
 | ||
| 		INC	(IX+0x02)
 | ||
| 		JP	PrintInpLn
 | ||
| 
 | ||
| ; delete
 | ||
| ILdelet		BIT	7,(IX+0x01)	; ready
 | ||
| 		CALL	NZ,ClearInpLn
 | ||
| 		LD	A,(IX+0x02)
 | ||
| 		OR	A
 | ||
| 		RET	Z
 | ||
| 		PUSH	IX
 | ||
| 		POP	HL
 | ||
| 		LD	DE,LenInpData
 | ||
| 		ADD	HL,DE
 | ||
| 		LD	E,(IX+0x02)
 | ||
| 		ADD	HL,DE
 | ||
| 		LD	E,L
 | ||
| 		LD	D,H
 | ||
| 		DEC	DE
 | ||
| 		LD	A,(IX+0x04)
 | ||
| 		SUB	(IX+0x02)
 | ||
| 		JR	Z,ILDel1
 | ||
| 		LD	C,A
 | ||
| 		LD	B,0x00
 | ||
| 		LDIR 
 | ||
| 		SUB	A
 | ||
| ILDel1		LD	(DE),A
 | ||
| 		DEC	(IX+0x02)
 | ||
| 		DEC	(IX+0x04)
 | ||
| 		JP	PrintInpLn
 | ||
| 
 | ||
| ; Delete Char in Current Position
 | ||
| IL_del_		BIT	7,(IX+0x01)	; ready
 | ||
| 		CALL	NZ,ClearInpLn
 | ||
| 		PUSH	IX
 | ||
| 		POP	HL
 | ||
| 		LD	DE,LenInpData
 | ||
| 		ADD	HL,DE
 | ||
| 		LD	E,(IX+0x02)
 | ||
| 		ADD	HL,DE
 | ||
| 		INC	HL
 | ||
| 		LD	E,L
 | ||
| 		LD	D,H
 | ||
| 		DEC	DE
 | ||
| 		LD	A,(IX+0x04)
 | ||
| 		SUB	(IX+0x02)
 | ||
| 		RET	Z
 | ||
| 		LD	C,A
 | ||
| 		LD	B,0x00
 | ||
| 		LDIR 
 | ||
| 		SUB	A
 | ||
| 		LD	(DE),A
 | ||
| 		DEC	(IX+0x04)
 | ||
| 		JP	PrintInpLn
 | ||
| 
 | ||
| ; Home
 | ||
| ILhome		RES	7,(IX+0x01)
 | ||
| 		LD	A,(IX+0x02)
 | ||
| 		OR	A
 | ||
| 		RET	Z
 | ||
| 		SUB	A
 | ||
| 		LD	(IX+0x02),A
 | ||
| 		JP	PrintInpLn
 | ||
| 
 | ||
| ; End string
 | ||
| ILend		RES	7,(IX+0x01)
 | ||
| 		LD	A,(IX+0x04)
 | ||
| 		CP	(IX+0x02)
 | ||
| 		RET	Z
 | ||
| 		LD	(IX+0x02),A
 | ||
| 		JP	PrintInpLn
 | ||
| 
 | ||
| ; Word right
 | ||
| ILwordR		RES	7,(IX+0x01)
 | ||
| 		LD	A,(IX+0x04)
 | ||
| 		SUB	(IX+0x02)
 | ||
| 		RET	Z
 | ||
| 		LD	B,A
 | ||
| 		PUSH	IX
 | ||
| 		POP	HL
 | ||
| 		LD	DE,LenInpData
 | ||
| 		ADD	HL,DE
 | ||
| 		LD	E,(IX+0x02)
 | ||
| 		ADD	HL,DE
 | ||
| 		LD	C,E
 | ||
| .L2		LD	A,(HL)
 | ||
| 		CP	' '
 | ||
| 		JR	Z,.L3
 | ||
| 		CP	','
 | ||
| 		JR	Z,.L3
 | ||
| 		CP	'.'
 | ||
| 		JR	Z,.L3
 | ||
| 		CP	'\\'
 | ||
| 		JR	Z,.L3
 | ||
| 		INC	HL
 | ||
| 		INC	C
 | ||
| 		DJNZ	.L2
 | ||
| 		JR	.L4
 | ||
| 
 | ||
| .L3		LD	A,(HL)
 | ||
| 		CP	' '
 | ||
| 		JR	Z,.L1
 | ||
| 		CP	','
 | ||
| 		JR	Z,.L1
 | ||
| 		CP	'.'
 | ||
| 		JR	Z,.L1
 | ||
| 		CP	'\\'
 | ||
| 		JR	NZ,.L4
 | ||
| .L1		INC	HL
 | ||
| 		INC	C
 | ||
| 		DJNZ	.L3
 | ||
| .L4		LD	(IX+0x02),C
 | ||
| 		JP	PrintInpLn
 | ||
| 
 | ||
| ; Word left
 | ||
| ILwordL		RES	7,(IX+0x01)
 | ||
| 		LD	A,(IX+0x02)
 | ||
| 		OR	A
 | ||
| 		RET	Z
 | ||
| 		LD	B,A
 | ||
| 		LD	C,B
 | ||
| 		PUSH	IX
 | ||
| 		POP	HL
 | ||
| 		LD	DE,LenInpData
 | ||
| 		ADD	HL,DE
 | ||
| 		LD	E,C
 | ||
| 		ADD	HL,DE
 | ||
| .L3		DEC	HL
 | ||
| 		DEC	C
 | ||
| 		LD	A,(HL)
 | ||
| 		CP	' '
 | ||
| 		JR	Z,.L2
 | ||
| 		CP	','
 | ||
| 		JR	Z,.L2
 | ||
| 		CP	'.'
 | ||
| 		JR	Z,.L2
 | ||
| 		CP	0x5C
 | ||
| 		JR	Z,.L2
 | ||
| 		DJNZ	.L3
 | ||
| 		JR	.L5
 | ||
| 
 | ||
| .L2		LD	A,(HL)
 | ||
| 		CP	' '
 | ||
| 		JR	Z,.L1
 | ||
| 		CP	','
 | ||
| 		JR	Z,.L1
 | ||
| 		CP	'.'
 | ||
| 		JR	Z,.L1
 | ||
| 		CP	'\\'
 | ||
| 		JR	NZ,.L4
 | ||
| .L1		DEC	HL
 | ||
| 		DEC	C
 | ||
| 		DJNZ	.L2
 | ||
| .L4		INC	C
 | ||
| .L5		LD	(IX+0x02),C
 | ||
| 		JP	PrintInpLn
 | ||
| 
 | ||
| ; Delete word
 | ||
| ILdelWR		RES	7,(IX+0x01)
 | ||
| 		LD	A,(IX+0x02)
 | ||
| 		OR	A
 | ||
| 		RET	Z
 | ||
| 		LD	B,A
 | ||
| 		LD	C,B
 | ||
| 		PUSH	IX
 | ||
| 		POP	HL
 | ||
| 		LD	DE,LenInpData
 | ||
| 		ADD	HL,DE
 | ||
| 		LD	E,C
 | ||
| 		ADD	HL,DE
 | ||
| 		LD	A,(IX+0x04)
 | ||
| 		SUB	B
 | ||
| 		LD	E,A
 | ||
| 		PUSH	HL
 | ||
| 		DEC	HL
 | ||
| 		DEC	C
 | ||
| 		LD	A,(HL)
 | ||
| 		CP	' '
 | ||
| 		JR	Z,.L4
 | ||
| 		CP	','
 | ||
| 		JR	Z,.L4
 | ||
| 		CP	'.'
 | ||
| 		JR	Z,.L4
 | ||
| 		CP	'\\'
 | ||
| 		JR	Z,.L4
 | ||
| 		DEC	B
 | ||
| 		JR	Z,.L6
 | ||
| .L3		DEC	HL
 | ||
| 		DEC	C
 | ||
| 		LD	A,(HL)
 | ||
| 		CP	' '
 | ||
| 		JR	Z,.L2
 | ||
| 		CP	','
 | ||
| 		JR	Z,.L2
 | ||
| 		CP	'.'
 | ||
| 		JR	Z,.L2
 | ||
| 		CP	'\\'
 | ||
| 		JR	Z,.L2
 | ||
| 		DJNZ	.L3
 | ||
| 		JR	.L6
 | ||
| 
 | ||
| .L4		LD	A,(HL)
 | ||
| 		CP	' '
 | ||
| 		JR	Z,.L1
 | ||
| 		CP	','
 | ||
| 		JR	Z,.L1
 | ||
| 		CP	'.'
 | ||
| 		JR	Z,.L1
 | ||
| 		CP	'\\'
 | ||
| 		JR	NZ,.L2
 | ||
| .L1		DEC	HL
 | ||
| 		DEC	C
 | ||
| 		DJNZ	.L4
 | ||
| .L2		INC	HL
 | ||
| 		INC	C
 | ||
| .L6		LD	A,(IX+0x02)
 | ||
| 		LD	(IX+0x02),C
 | ||
| 		SUB	C
 | ||
| 		LD	C,A
 | ||
| 		EX	AF,AF'
 | ||
| 		LD	A,(IX+0x04)
 | ||
| 		SUB	C
 | ||
| 		LD	(IX+0x04),A
 | ||
| 		LD	C,E
 | ||
| 		LD	B,0x00
 | ||
| 		EX	DE,HL
 | ||
| 		POP	HL
 | ||
| 		LD	A,C
 | ||
| 		OR	A
 | ||
| 		JR	Z,.L7
 | ||
| 		LDIR 
 | ||
| .L7		EX	DE,HL
 | ||
| 		EX	AF,AF'
 | ||
| 		LD	B,A
 | ||
| 		SUB	A
 | ||
| .L5		LD	(HL),A
 | ||
| 		INC	HL
 | ||
| 		DJNZ	.L5
 | ||
| 		JP	PrintInpLn
 | ||
| 
 | ||
| ;[]----------------------------------------------------------[]
 | ||
| InsInpLnCol	LD	L,(IX+0x07)
 | ||
| 		LD	H,(IX+0x08)
 | ||
| 		LD	(FillILy),HL
 | ||
| 		LD	A,(IX+0x0B)
 | ||
| 		AND	0x0F		; INK
 | ||
| 		LD	C,A
 | ||
| 		RLCA 
 | ||
| 		RLCA 
 | ||
| 		RLCA 
 | ||
| 		RLCA 
 | ||
| 		OR	C
 | ||
| 		LD	HL,PrnINKl	; INK ¡ãä¥à
 | ||
| 		LD	B,0x08
 | ||
| 		CPL 
 | ||
| .L1		LD	(HL),A
 | ||
| 		INC	HL
 | ||
| 		DJNZ	.L1
 | ||
| 		LD	B,A
 | ||
| 		LD	A,(IX+0x0B)
 | ||
| 		AND	0xF0		; PAPER
 | ||
| 		LD	C,A
 | ||
| 		RRCA 
 | ||
| 		RRCA 
 | ||
| 		RRCA 
 | ||
| 		RRCA 
 | ||
| 		LD	(FillILc),A
 | ||
| 		OR	C
 | ||
| 		XOR	B
 | ||
| 		LD	HL,PrnPAPl	; PAPER ¡ãä¥à
 | ||
| 		LD	B,0x08
 | ||
| .L2		LD	(HL),A
 | ||
| 		INC	HL
 | ||
| 		DJNZ	.L2
 | ||
| 		RET 
 | ||
| 
 | ||
| PrintInpLn	CALL	ResCursor
 | ||
| .L1		LD	A,(IX+0x02)
 | ||
| 		SUB	(IX+0x03)
 | ||
| 		JR	NC,PrnInpLn1
 | ||
| 		LD	A,(IX+0x03)
 | ||
| 		SUB	Step
 | ||
| 		LD	(IX+0x03),A
 | ||
| 		JR	PrintInpLn.L1
 | ||
| 
 | ||
| PrnInpLn1	PUSH	IX
 | ||
| 		POP	HL
 | ||
| 		LD	DE,LenInpData
 | ||
| 		ADD	HL,DE
 | ||
| 		LD	E,(IX+0x03)
 | ||
| 		ADD	HL,DE
 | ||
| 		OR	A
 | ||
| 		CALL	NZ,TstInpLnLen	; <20>  ¢å®¤: HL- ç «® ¢ë¢®¤ 
 | ||
| 					;	   € -ª®«.ᨬ¢.¤® ªãàá®à 
 | ||
| 		PUSH	IY
 | ||
| 		PUSH	IX
 | ||
| 		LD	A,(IX+0x07)
 | ||
| 		LD	IYL,A		; Y ª®®à¤¨ â 
 | ||
| 		LD	A,(IX+0x04)
 | ||
| 		LD	IYH,A
 | ||
| 	GETPORT WINSP.Y_PORT		; ‘®åà ï¥¬ Y ¯®àâ
 | ||
| 		PUSH	AF
 | ||
| 		EXX 
 | ||
| 		LD	HL,PrnPAPl
 | ||
| 		LD	DE,PrnINKl
 | ||
| 		LD	C,(IX+0x05)
 | ||
| 		LD	B,(IX+0x06)
 | ||
| 		SRL	B
 | ||
| 		RR	C
 | ||
| 		SET	6,B
 | ||
| 		EXX 
 | ||
| 		LD	C,(IX+0x09)
 | ||
| 		LD	B,(IX+0x0A)
 | ||
| 		SRL	B
 | ||
| 		RR	C
 | ||
| 		LD	IXL,C
 | ||
| 		LD	C,L		; €¤à¥á áâப¨
 | ||
| 		LD	B,H
 | ||
| 	GETPORT WINSP.CPU1
 | ||
| 		LD	IXH,A
 | ||
| 		DI 
 | ||
| 	GETPORT WINSP.CPU0
 | ||
| 		PUSH	AF
 | ||
| 		LD	A,(RAMPAGES.FNFONT)
 | ||
| 	SETPORT WINSP.CPU0,,0
 | ||
| 	ACCEL ACCELCMD.SET_BUFFER
 | ||
| 		LD	A,0x08
 | ||
| 	ACCEL ACCELCMD.OFF
 | ||
| 		LD	A,IYH
 | ||
| 		OR	A
 | ||
| 		JR	Z,PrnInpE
 | ||
| 		LD	A,(BC)
 | ||
| 		INC	BC
 | ||
| PInpLnP		LD	L,A
 | ||
| 		LD	H,HIGH (FONT_RAW)-0xC0
 | ||
| 		PUSH	BC
 | ||
| 		LD	B,(HL)		; ¤«¨  ᨬ¢®« 
 | ||
| 		INC	H
 | ||
| 		LD	E,(HL)
 | ||
| 		INC	H
 | ||
| 		LD	D,(HL)
 | ||
| 		LD	HL,0x0008
 | ||
| 		EX	DE,HL
 | ||
| 	SETPORT WINSP.CPU1,0x50
 | ||
| PrnLoopInp
 | ||
| 	ACCEL ACCELCMD.COPY
 | ||
| 		LD	A,(HL)
 | ||
| 	ACCEL ACCELCMD.OFF
 | ||
| 		EXX 
 | ||
| 		LD	A,IYL
 | ||
| 	SETPORT WINSP.Y_PORT,,0
 | ||
| 	ACCEL ACCELCMD.COPY
 | ||
| 		OR	(HL)
 | ||
| 		EX	DE,HL
 | ||
| 		XOR	(HL)
 | ||
| 	ACCEL ACCELCMD.COPY_VERT
 | ||
| 		LD	(BC),A
 | ||
| 	ACCEL ACCELCMD.OFF
 | ||
| 		EX	DE,HL
 | ||
| 		INC	BC
 | ||
| 		EXX 
 | ||
| 		ADD	HL,DE
 | ||
| 		DEC	IXL
 | ||
| 		JR	Z,.L1
 | ||
| 		DJNZ	PrnLoopInp
 | ||
| .L1		POP	BC
 | ||
| 		LD	A,IXH
 | ||
| 	SETPORT WINSP.CPU1,,0
 | ||
| 		LD	A,IXL
 | ||
| 		OR	A
 | ||
| 		JR	Z,PrnInpE
 | ||
| 		DEC	IYH
 | ||
| 		JR	Z,PrnInpE
 | ||
| 		LD	A,(BC)
 | ||
| 		INC	BC
 | ||
| 		OR	A
 | ||
| 		JR	NZ,PInpLnP
 | ||
| PrnInpE		POP	AF
 | ||
| 	SETPORT WINSP.CPU0,,0
 | ||
| 		EI 
 | ||
| 		POP	AF
 | ||
| 	SETPORT WINSP.Y_PORT,,0
 | ||
| 		LD	A,IXL
 | ||
| 		OR	A
 | ||
| 		JR	Z,PrnInE1
 | ||
| 		LD	L,A
 | ||
| 		LD	H,0x00
 | ||
| 		ADD	HL,HL
 | ||
| 		LD	(FillILl),HL
 | ||
| 		EXX 
 | ||
| 		PUSH	BC
 | ||
| 		EXX 
 | ||
| 		POP	HL
 | ||
| 		RES	6,H
 | ||
| 		ADD	HL,HL
 | ||
| 		LD	(FillILx),HL
 | ||
| 	MAKEWINDOW WINSUBOBJ.WOBIND
 | ||
| 	W_FILL 0x0000,0x0000,0x0000,8,0x00
 | ||
| 	W_END
 | ||
| FillILx		EQU $-10
 | ||
| FillILy		EQU $-8
 | ||
| FillILl		EQU $-6
 | ||
| FillILc		EQU $-2
 | ||
| 
 | ||
| PrnInE1		POP	IX
 | ||
| 		POP	IY
 | ||
| 		JP	SetCursor
 | ||
| 
 | ||
| PrnINKl		DB	8 DUP 0
 | ||
| PrnPAPl		DB	8 DUP 0
 | ||
| 
 | ||
| TstInpLnLen	PUSH	IY
 | ||
| 		LD	IYL,A
 | ||
| 		LD	IYH,A
 | ||
| 		DI 
 | ||
| 	GETPORT WINSP.CPU0
 | ||
| 		PUSH	AF
 | ||
| 		LD	A,(RAMPAGES.FNFONT)
 | ||
| 	SETPORT WINSP.CPU0,,0
 | ||
| 		LD	D,HIGH (FONT_RAW)-0xC0
 | ||
| TstInpLn	PUSH	HL
 | ||
| 		LD	BC,0x0000
 | ||
| TstInpL		LD	E,(HL)
 | ||
| 		INC	HL
 | ||
| 		LD	A,(DE)
 | ||
| 		ADD	A,A
 | ||
| 		ADD	A,C
 | ||
| 		LD	C,A
 | ||
| 		LD	A,B
 | ||
| 		ADC	A,0x00
 | ||
| 		LD	B,A
 | ||
| 		DEC	IYL
 | ||
| 		JR	NZ,TstInpL
 | ||
| 		LD	L,(IX+0x09)
 | ||
| 		LD	H,(IX+0x0A)
 | ||
| 		OR	A
 | ||
| 		SBC	HL,BC
 | ||
| 		JR	NC,TstInpE
 | ||
| 		POP	HL
 | ||
| 		LD	BC,Step
 | ||
| 		ADD	HL,BC
 | ||
| 		LD	A,(IX+0x03)
 | ||
| 		ADD	A,C
 | ||
| 		LD	(IX+0x03),A
 | ||
| 		LD	A,IYH
 | ||
| 		SUB	C
 | ||
| 		LD	IYH,A
 | ||
| 		LD	IYL,A
 | ||
| 		JR	TstInpLn
 | ||
| 
 | ||
| TstInpE		POP	HL
 | ||
| 		POP	AF
 | ||
| 	SETPORT WINSP.CPU0,,0
 | ||
| 		EI 
 | ||
| 		POP	IY
 | ||
| 		RET 
 | ||
| 
 | ||
| SetCursor	PUSH	IX
 | ||
| 		POP	HL
 | ||
| 		LD	DE,LenInpData
 | ||
| 		ADD	HL,DE
 | ||
| 		LD	E,(IX+0x03)
 | ||
| 		ADD	HL,DE
 | ||
| 		LD	BC,0x0000
 | ||
| 		LD	A,(IX+0x02)
 | ||
| 		SUB	E
 | ||
| 		JR	Z,StCurs1
 | ||
| 		EX	AF,AF'
 | ||
| 		DI 
 | ||
| 	GETPORT WINSP.CPU0
 | ||
| 		PUSH	AF
 | ||
| 		LD	A,(RAMPAGES.FNFONT)
 | ||
| 	SETPORT WINSP.CPU0,,0
 | ||
| 		LD	D,HIGH (FONT_RAW)-0xC0
 | ||
| 		EX	AF,AF'
 | ||
| StCurs0		EX	AF,AF'
 | ||
| 		LD	E,(HL)
 | ||
| 		INC	HL
 | ||
| 		LD	A,(DE)
 | ||
| 		ADD	A,A
 | ||
| 		ADD	A,C
 | ||
| 		LD	C,A
 | ||
| 		LD	A,B
 | ||
| 		ADC	A,0x00
 | ||
| 		LD	B,A
 | ||
| 		EX	AF,AF'
 | ||
| 		DEC	A
 | ||
| 		JR	NZ,StCurs0
 | ||
| 		POP	AF
 | ||
| 	SETPORT WINSP.CPU0,,0
 | ||
| 		EI 
 | ||
| StCurs1		LD	(CurShiftX),BC
 | ||
| 		LD	A,0x01
 | ||
| 		LD	(CurCursor),A
 | ||
| 		LD	A,CursTimer
 | ||
| 		LD	(CrTimer),A
 | ||
| SetCr		LD	L,(IX+0x05)
 | ||
| 		LD	H,(IX+0x06)
 | ||
| 		LD	BC,(CurShiftX)
 | ||
| 		ADD	HL,BC
 | ||
| 		SRL	H
 | ||
| 		RR	L
 | ||
| 		SET	6,H
 | ||
| 	GETPORT WINSP.CPU1
 | ||
| 		LD	C,A
 | ||
| 	GETPORT WINSP.Y_PORT
 | ||
| 		LD	B,A
 | ||
| 		PUSH	BC
 | ||
| 		LD	DE,CursBuffer
 | ||
| 		LD	C,(IX+0x07)
 | ||
| 		DEC	C
 | ||
| 		LD	A,(IX+0x0B)
 | ||
| 		AND	0x0F
 | ||
| 		LD	B,A
 | ||
| 		RLCA 
 | ||
| 		RLCA 
 | ||
| 		RLCA 
 | ||
| 		RLCA 
 | ||
| 		OR	B
 | ||
| 		LD	B,A
 | ||
| 	SETPORT WINSP.CPU1,0x50
 | ||
| 		DI 
 | ||
| 		LD	A,C
 | ||
| 	SETPORT WINSP.Y_PORT,,0
 | ||
| 	ACCEL ACCELCMD.SET_BUFFER
 | ||
| 		LD	A,0x09
 | ||
| 	ACCEL ACCELCMD.COPY_VERT
 | ||
| 		LD	A,(HL)
 | ||
| 	ACCEL ACCELCMD.COPY
 | ||
| 		LD	(DE),A
 | ||
| 	ACCEL ACCELCMD.OFF
 | ||
| 		LD	A,C
 | ||
| 	SETPORT WINSP.Y_PORT,,0
 | ||
| 	ACCEL ACCELCMD.FILL_VERT
 | ||
| 		LD	(HL),B
 | ||
| 	ACCEL ACCELCMD.OFF
 | ||
| 		EI 
 | ||
| 		POP	BC
 | ||
| 		LD	A,B
 | ||
| 	SETPORT WINSP.Y_PORT,,0
 | ||
| 		LD	A,C
 | ||
| 	SETPORT WINSP.CPU1,,0
 | ||
| 		RET 
 | ||
| 
 | ||
| ResCursor	LD	L,(IX+0x05)
 | ||
| 		LD	H,(IX+0x06)
 | ||
| 		LD	BC,(CurShiftX)
 | ||
| 		ADD	HL,BC
 | ||
| 		SRL	H
 | ||
| 		RR	L
 | ||
| 		SET	6,H
 | ||
| 	GETPORT WINSP.CPU1
 | ||
| 		LD	C,A
 | ||
| 	GETPORT WINSP.Y_PORT
 | ||
| 		LD	B,A
 | ||
| 		PUSH	BC
 | ||
| 		LD	DE,CursBuffer
 | ||
| 		LD	B,(IX+0x07)
 | ||
| 		DEC	B
 | ||
| 		LD	C,WINSP.Y_PORT
 | ||
| 	SETPORT WINSP.CPU1,0x50
 | ||
| 		DI 
 | ||
| 	ACCEL ACCELCMD.SET_BUFFER
 | ||
| 		LD	A,0x09
 | ||
| 	ACCEL ACCELCMD.COPY
 | ||
| 		LD	A,(DE)
 | ||
| 		OUT	(C),B
 | ||
| 	ACCEL ACCELCMD.COPY_VERT
 | ||
| 		LD	(HL),A
 | ||
| 	ACCEL ACCELCMD.OFF
 | ||
| 		EI 
 | ||
| 		POP	BC
 | ||
| 		LD	A,B
 | ||
| 	SETPORT WINSP.Y_PORT,,0
 | ||
| 		LD	A,C
 | ||
| 	SETPORT WINSP.CPU1,,0
 | ||
| 		RET 
 | ||
| 
 | ||
| ChCursor	LD	HL,CrTimer
 | ||
| 		DEC	(HL)
 | ||
| 		RET	NZ
 | ||
| 		LD	(HL),CursTimer
 | ||
| 		LD	IX,(InpLnData)
 | ||
| 		LD	A,(CurCursor)
 | ||
| 		XOR	0x01
 | ||
| 		LD	(CurCursor),A
 | ||
| 		JR	Z,ResCursor
 | ||
| 		JP	SetCr
 | ||
| 
 | ||
| CurShiftX	DEFW	0x00
 | ||
| CrTimer		DEFB	0x00
 | ||
| CurCursor	DEFB	0x00
 | ||
| CursBuffer	DB	9 DUP 0
 |