499 lines
		
	
	
		
			9.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			499 lines
		
	
	
		
			9.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
 | ||
| ; LAST UPDATE: 20.04.2025 savelij
 | ||
| 
 | ||
| ;[]----------------------------------------------------------[]
 | ||
| ResFire:	LD	A,(MouseFlag)
 | ||
| 		OR	A
 | ||
| 		RET	Z
 | ||
| RsFire1		CALL	TestCMOS
 | ||
| 	SPMOUSE MOUSEF.READ_STATE
 | ||
| 		OR	A
 | ||
| 		RET	Z
 | ||
| 		JR	RsFire1
 | ||
| 
 | ||
| ;[]----------------------------------------------------------[]
 | ||
| ; <20>஢¥àª  ª®®à¤¨ â ¬ëè¨ ¯® â ¡«¨æ¥
 | ||
| ; <20>  ¢å®¤:
 | ||
| ;	  IX - €¤à¥á â ¡«¨æë
 | ||
| TestCoords:	CALL	TestCMOS
 | ||
| 	SPMOUSE MOUSEF.READ_STATE
 | ||
| 		EX	AF,AF'
 | ||
| 		LD	BC,0x0000
 | ||
| .PrvTabl	EQU $-2
 | ||
| 		LD	A,IXL
 | ||
| 		CP	C
 | ||
| 		JR	NZ,.L2
 | ||
| 		LD	A,IXH
 | ||
| 		CP	B
 | ||
| 		JR	Z,.L3
 | ||
| .L2		LD	(.PrvTabl),IX
 | ||
| 		CALL	ResMInvert
 | ||
| 		LD	BC,ResFire
 | ||
| 		PUSH	BC
 | ||
| 		SUB	A
 | ||
| 		LD	(RunFlag),A
 | ||
| 		JR	.L4
 | ||
| 
 | ||
| .L3		LD	A,0x01
 | ||
| 		LD	(RunFlag),A
 | ||
| 		EX	AF,AF'
 | ||
| 		OR	A
 | ||
| 		JR	NZ,.L4
 | ||
| 		PUSH	HL
 | ||
| 		LD	BC,0x0000
 | ||
| .PrMousX	EQU $-2
 | ||
| 		OR	A
 | ||
| 		SBC	HL,BC
 | ||
| 		POP	HL
 | ||
| 		JR	NZ,.L4
 | ||
| 		EX	DE,HL
 | ||
| 		PUSH	HL
 | ||
| 		LD	BC,0x0000
 | ||
| .PrMousY	EQU $-2
 | ||
| 		OR	A
 | ||
| 		SBC	HL,BC
 | ||
| 		POP	HL
 | ||
| 		EX	DE,HL
 | ||
| 		RET	Z
 | ||
| .L4		LD	(.PrMousX),HL
 | ||
| 		LD	(.PrMousY),DE
 | ||
| CoordLp		LD	C,(IX+FORMTABL.XMINL)	; 00
 | ||
| 		LD	B,(IX+FORMTABL.XMINH)	; 01
 | ||
| 		OR	A
 | ||
| 		SBC	HL,BC
 | ||
| 		ADD	HL,BC
 | ||
| 		JP	C,NxtCrds
 | ||
| 		LD	C,(IX+FORMTABL.XMAXL)	; 02
 | ||
| 		LD	B,(IX+FORMTABL.XMAXH)	; 03
 | ||
| 		SBC	HL,BC
 | ||
| 		ADD	HL,BC
 | ||
| 		JP	NC,NxtCrds
 | ||
| 		LD	C,(IX+FORMTABL.YMINL)	; 04
 | ||
| 		LD	B,(IX+FORMTABL.YMINH)	; 05
 | ||
| 		OR	A
 | ||
| 		EX	DE,HL
 | ||
| 		SBC	HL,BC
 | ||
| 		ADD	HL,BC
 | ||
| 		EX	DE,HL
 | ||
| 		JP	C,NxtCrds
 | ||
| 		LD	C,(IX+FORMTABL.YMAXL)	; 06
 | ||
| 		LD	B,(IX+FORMTABL.YMAXH)	; 07
 | ||
| 		EX	DE,HL
 | ||
| 		SBC	HL,BC
 | ||
| 		ADD	HL,BC
 | ||
| 		EX	DE,HL
 | ||
| 		JP	NC,NxtCrds
 | ||
| 		LD	C,A
 | ||
| 		LD	A,(MouseFlag)
 | ||
| 		OR	A
 | ||
| 		LD	A,C
 | ||
| 		JR	Z,CoordL1
 | ||
| 		BIT	FORMTABL.B_INV1,(IX+FORMTABL.FLAGL)	; 08
 | ||
| 		CALL	NZ,SetSelect1
 | ||
| CoordL1		BIT	FORMTABL.B_STATICINV,(IX+FORMTABL.FLAGL)	; 08
 | ||
| 		CALL	NZ,SetSelect2
 | ||
| 		LD	C,0x00
 | ||
| RunFlag		EQU $-1
 | ||
| 		DEC	C
 | ||
| 		JP	NZ,NxtCrds1
 | ||
| 		LD	C,A
 | ||
| 		LD	A,(MouseFlag)
 | ||
| 		OR	A
 | ||
| 		RET	Z
 | ||
| 		LD	A,C
 | ||
| 		OR	A			; ¥â ®£ï
 | ||
| 		JR	Z,Execute1
 | ||
| 		BIT	0,A
 | ||
| 		JR	Z,Execute2
 | ||
| 		BIT	FORMTABL.B_BUTTON,(IX+FORMTABL.FLAGL)	; 08
 | ||
| 		CALL	NZ,PushButton
 | ||
| 		CCF 
 | ||
| 		RET	NC
 | ||
| 		OR	A
 | ||
| 		BIT	FORMTABL.B_WORKBUTTON,(IX+FORMTABL.FLAGL)	; 08 ; à ¡®ç ï ª®¯ª 
 | ||
| 		RET	NZ
 | ||
| 		LD	C,(IX+FORMTABL.FIRELEFTL)	; 0C ; § ¯ã᪠¯® «¥¢®© ª®¯ª¥
 | ||
| 		LD	B,(IX+FORMTABL.FIRELEFTH)	; 0D
 | ||
| 		LD	A,B
 | ||
| 		OR	C
 | ||
| 		JP	Z,NxtCrds1
 | ||
| 		BIT	FORMTABL.B_EXECNORETLMB,(IX+FORMTABL.FLAGL)	; 08 ; § ¯ã᪠¡¥§ ¢®§¢à â 
 | ||
| 		JR	Z,.L1
 | ||
| 		POP	AF
 | ||
| .L1		PUSH	BC
 | ||
| 		BIT	FORMTABL.B_INV1,(IX+FORMTABL.FLAGL)	; 08
 | ||
| 		CALL	NZ,ResSelect1
 | ||
| 		CALL	ResSelect2
 | ||
| 		OR	A
 | ||
| 		BIT	FORMTABL.B_CLOSEWIN,(IX+FORMTABL.FLAGH)	; 09
 | ||
| 		RET	Z
 | ||
| 	WINDOWCLOSE
 | ||
| 		RET 
 | ||
| 
 | ||
| Execute1	LD	C,(IX+FORMTABL.FIRENOL)	; 0A ; § ¯ã᪠¡¥§ ®£ï
 | ||
| 		LD	B,(IX+FORMTABL.FIRENOH)	; 0B
 | ||
| 		LD	A,B
 | ||
| 		OR	C
 | ||
| 		JR	Z,NxtCrds1
 | ||
| 		BIT	FORMTABL.B_EXECONLY,(IX+FORMTABL.FLAGL)	; 08 ; § ¯ã᪠¡¥§ ¢®§¢à â 
 | ||
| 		JR	Z,.L1
 | ||
| 		POP	AF
 | ||
| .L1		PUSH	BC
 | ||
| 		BIT	FORMTABL.B_INV1,(IX+FORMTABL.FLAGL)	; 08
 | ||
| 		CALL	NZ,ResSelect1
 | ||
| 		CALL	ResSelect2
 | ||
| 		OR	A
 | ||
| 		BIT	FORMTABL.B_EXECNOPRESS,(IX+FORMTABL.FLAGL)	; 08
 | ||
| 		RET	Z
 | ||
| 	WINDOWCLOSE
 | ||
| 		RET 
 | ||
| 
 | ||
| Execute2	LD	C,(IX+FORMTABL.FIRERIGHTL)	; 0E ; § ¯ã᪠¯® ¯à ¢®© ª®¯ª¥
 | ||
| 		LD	B,(IX+FORMTABL.FIRERIGHTH)	; 0F
 | ||
| 		LD	A,B
 | ||
| 		OR	C
 | ||
| 		JR	Z,NxtCrds1
 | ||
| 		BIT	FORMTABL.B_EXECNORETRMB,(IX+FORMTABL.FLAGL)	; 08 ; § ¯ã᪠¡¥§ ¢®§¢à â 
 | ||
| 		JR	Z,.L1
 | ||
| 		POP	AF
 | ||
| .L1		PUSH	BC
 | ||
| 		BIT	FORMTABL.B_INV1,(IX+FORMTABL.FLAGL)	; 08
 | ||
| 		CALL	NZ,ResSelect1
 | ||
| 		CALL	ResSelect2
 | ||
| 		OR	A
 | ||
| 		BIT	FORMTABL.B_WORKBUTTON,(IX+FORMTABL.FLAGH)	; 09
 | ||
| 		RET	Z
 | ||
| 	WINDOWCLOSE
 | ||
| 		RET 
 | ||
| 
 | ||
| NxtCrds		LD	C,A
 | ||
| 		LD	A,(MouseFlag)
 | ||
| 		OR	A
 | ||
| 		LD	A,C
 | ||
| 		JR	Z,NxtCrds0
 | ||
| 		BIT	FORMTABL.B_INV1,(IX+FORMTABL.FLAGL)	; 08
 | ||
| 		CALL	NZ,ResSelect1
 | ||
| NxtCrds0	BIT	FORMTABL.B_STATICINV,(IX+FORMTABL.FLAGL)	; 08
 | ||
| 		CALL	NZ,SetSelect2
 | ||
| NxtCrds1	LD	BC,FORMTABL.SIZE;0x0010
 | ||
| 		ADD	IX,BC
 | ||
| 		BIT	FORMTABL.B_ENDTABL,(IX+FORMTABL.XMINH)	; ª®¥æ â ¡«¨æë?
 | ||
| 		JP	Z,CoordLp
 | ||
| 		OR	A
 | ||
| 		RET 
 | ||
| 
 | ||
| ResMInvert	PUSH	IX
 | ||
| 		PUSH	HL
 | ||
| 		PUSH	DE
 | ||
| 		PUSH	AF
 | ||
| 		LD	BC,FORMTABL.SIZE;0x0010
 | ||
| ResCrds		RES	FORMTABL.B_FIRENOINV,(IX+FORMTABL.FLAGH)	; 09
 | ||
| 		RES	6,(IX+FORMTABL.FLAGH)	; 09
 | ||
| 		ADD	IX,BC
 | ||
| 		BIT	FORMTABL.B_ENDTABL,(IX+FORMTABL.XMINH)
 | ||
| 		JR	Z,ResCrds
 | ||
| 		POP	AF
 | ||
| 		POP	DE
 | ||
| 		POP	HL
 | ||
| 		POP	IX
 | ||
| 		RET 
 | ||
| 
 | ||
| SetSelect1	BIT	FORMTABL.B_FIRENOINV,(IX+FORMTABL.FLAGH)	; 09
 | ||
| 		RET	NZ
 | ||
| 		SET	FORMTABL.B_FIRENOINV,(IX+FORMTABL.FLAGH)	; 09
 | ||
| 		PUSH	AF
 | ||
| 		PUSH	HL
 | ||
| 		PUSH	DE
 | ||
| 		PUSH	IX
 | ||
| 		LD	L,(IX+FORMTABL.XMINL)	; 00
 | ||
| 		LD	H,(IX+FORMTABL.XMINH)	; 01
 | ||
| 		LD	C,(IX+FORMTABL.YMINL)	; 04
 | ||
| 		LD	B,(IX+FORMTABL.YMINH)	; 05
 | ||
| 		LD	A,(IX+FORMTABL.XMAXL)	; 02
 | ||
| 		SUB	(IX+FORMTABL.XMINL)	; 00
 | ||
| 		EX	AF,AF'
 | ||
| 		LD	A,(IX+FORMTABL.YMAXL)	; 06
 | ||
| 		SUB	(IX+FORMTABL.YMINL)	; 04
 | ||
| 		LD	IXH,A
 | ||
| 		EX	AF,AF'
 | ||
| 		SRL	A
 | ||
| 		LD	IXL,A
 | ||
| 		LD	DE,(COLORP.HIGHGRAY + COLORI.BLACK) << 8 | (COLORP.BLUE + COLORI.WHITE);0x804F
 | ||
| 		CALL	InvertRectan
 | ||
| 		POP	IX
 | ||
| 		PUSH	IX
 | ||
| NxCrds1		LD	BC,FORMTABL.SIZE;0x0010
 | ||
| 		ADD	IX,BC
 | ||
| 		BIT	FORMTABL.B_ENDTABL,(IX+FORMTABL.XMINH)	; 01 ; ¯à®¢¥àª  ª®æ  â ¡«¨æë?
 | ||
| 		JR	NZ,NxCrds2
 | ||
| 		BIT	FORMTABL.B_INV1,(IX+FORMTABL.FLAGL)	; 08
 | ||
| 		CALL	NZ,ResSelect1
 | ||
| 		JR	NxCrds1
 | ||
| 
 | ||
| NxCrds2		POP	IX
 | ||
| 		POP	DE
 | ||
| 		POP	HL
 | ||
| 		POP	AF
 | ||
| 		RET 
 | ||
| 
 | ||
| ResSelect1	BIT	FORMTABL.B_FIRENOINV,(IX+FORMTABL.FLAGH)	; 09
 | ||
| 		RET	Z
 | ||
| 		RES	FORMTABL.B_FIRENOINV,(IX+FORMTABL.FLAGH)	; 09
 | ||
| 		PUSH	IX
 | ||
| 		PUSH	HL
 | ||
| 		PUSH	DE
 | ||
| 		LD	L,(IX+FORMTABL.XMINL)	; 00
 | ||
| 		LD	H,(IX+FORMTABL.XMINH)	; 01
 | ||
| 		LD	C,(IX+FORMTABL.YMINL)	; 04
 | ||
| 		LD	B,(IX+FORMTABL.YMINH)	; 05
 | ||
| 		LD	A,(IX+FORMTABL.XMAXL)	; 02
 | ||
| 		SUB	(IX+FORMTABL.XMINL)	; 00
 | ||
| 		EX	AF,AF'
 | ||
| 		LD	A,(IX+FORMTABL.YMAXL)	; 06
 | ||
| 		SUB	(IX+FORMTABL.YMINL)	; 04
 | ||
| 		LD	IXH,A
 | ||
| 		EX	AF,AF'
 | ||
| 		SRL	A
 | ||
| 		LD	IXL,A
 | ||
| 		LD	DE,(COLORP.BLUE + COLORI.WHITE) << 8 | (COLORP.HIGHGRAY + COLORI.BLACK);0x4F80
 | ||
| 		CALL	InvertRectan
 | ||
| 		POP	DE
 | ||
| 		POP	HL
 | ||
| 		POP	IX
 | ||
| 		RET 
 | ||
| 
 | ||
| SetSelect2	BIT	6,(IX+FORMTABL.FLAGH)	; 09
 | ||
| 		RET	NZ
 | ||
| 		SET	6,(IX+FORMTABL.FLAGH)	; 09
 | ||
| 		PUSH	IX
 | ||
| 		PUSH	HL
 | ||
| 		PUSH	DE
 | ||
| 		PUSH	AF
 | ||
| 		LD	L,(IX+FORMTABL.XMINL)	; 00
 | ||
| 		LD	H,(IX+FORMTABL.XMINH)	; 01
 | ||
| 		LD	C,(IX+FORMTABL.YMINL)	; 04
 | ||
| 		LD	B,(IX+FORMTABL.YMINH)	; 05
 | ||
| 		LD	A,(IX+FORMTABL.XMAXL)	; 02
 | ||
| 		SUB	(IX+FORMTABL.XMINL)	; 00
 | ||
| 		EX	AF,AF'
 | ||
| 		LD	A,(IX+FORMTABL.YMAXL)	; 06
 | ||
| 		SUB	(IX+FORMTABL.YMINL)	; 04
 | ||
| 		LD	IXH,A
 | ||
| 		EX	AF,AF'
 | ||
| 		SRL	A
 | ||
| 		LD	IXL,A
 | ||
| 		LD	DE,(COLORP.HIGHGRAY + COLORI.BLACK) << 8 | (COLORP.BLUE + COLORI.WHITE);0x804F
 | ||
| 		CALL	InvertRectan
 | ||
| 		POP	AF
 | ||
| 		POP	DE
 | ||
| 		POP	HL
 | ||
| 		POP	IX
 | ||
| 		RET 
 | ||
| 
 | ||
| ResSelect2	PUSH	HL
 | ||
| 		PUSH	DE
 | ||
| 		PUSH	IX
 | ||
| 		LD	IX,(TestCoords.PrvTabl)
 | ||
| 		LD	BC,FORMTABL.SIZE;0x0010
 | ||
| NxCrds3		BIT	FORMTABL.B_STATICINV,(IX+FORMTABL.FLAGL)	; 08
 | ||
| 		JR	NZ,ResSel22
 | ||
| 		ADD	IX,BC
 | ||
| 		BIT	FORMTABL.B_ENDTABL,(IX+FORMTABL.XMINH)	; 01 ; ¯à®¢¥àª  ª®æ  â ¡«¨æë?
 | ||
| 		JR	NZ,ResSel2E
 | ||
| 		JR	NxCrds3
 | ||
| 
 | ||
| ResSel22	BIT	6,(IX+FORMTABL.FLAGH)	; 09
 | ||
| 		JR	Z,ResSel2E
 | ||
| 		RES	6,(IX+FORMTABL.FLAGH)	; 09
 | ||
| 		LD	L,(IX+FORMTABL.XMINL)	; 00
 | ||
| 		LD	H,(IX+FORMTABL.XMINH)	; 01
 | ||
| 		LD	C,(IX+FORMTABL.YMINL)	; 04
 | ||
| 		LD	B,(IX+FORMTABL.YMINH)	; 05
 | ||
| 		LD	A,(IX+FORMTABL.XMAXL)	; 02
 | ||
| 		SUB	(IX+FORMTABL.XMINL)	; 00
 | ||
| 		EX	AF,AF'
 | ||
| 		LD	A,(IX+FORMTABL.YMAXL)	; 06
 | ||
| 		SUB	(IX+FORMTABL.YMINL)	; 04
 | ||
| 		LD	IXH,A
 | ||
| 		EX	AF,AF'
 | ||
| 		SRL	A
 | ||
| 		LD	IXL,A
 | ||
| 		LD	DE,(COLORP.BLUE + COLORI.WHITE) << 8 | (COLORP.HIGHGRAY + COLORI.BLACK);0x4F80
 | ||
| 		CALL	InvertRectan
 | ||
| ResSel2E	POP	IX
 | ||
| 		POP	DE
 | ||
| 		POP	HL
 | ||
| 		RET 
 | ||
| 
 | ||
| PushButton	PUSH	HL
 | ||
| 		PUSH	DE
 | ||
| 		LD	L,(IX+FORMTABL.XMINL)	; 00
 | ||
| 		LD	H,(IX+FORMTABL.XMINH)	; 01
 | ||
| 		LD	E,(IX+FORMTABL.YMINL)	; 04
 | ||
| 		LD	D,(IX+FORMTABL.YMINH)	; 05
 | ||
| 		LD	A,(IX+FORMTABL.XMAXL)	; 02
 | ||
| 		SUB	(IX+FORMTABL.XMINL)	; 00
 | ||
| 		LD	C,A
 | ||
| 		LD	A,(IX+FORMTABL.YMAXL)	; 06
 | ||
| 		SUB	(IX+FORMTABL.YMINL)	; 04
 | ||
| 		LD	B,A
 | ||
| 		PUSH	HL
 | ||
| 		PUSH	DE
 | ||
| 		PUSH	BC
 | ||
| 		CALL	PutPushBut
 | ||
| 		LD	A,0x0A
 | ||
| 		LD	(PausePh+1),A
 | ||
| PushLp		PUSH	IX
 | ||
| 		CALL	TestRun
 | ||
| 		POP	IX
 | ||
| PushLp1
 | ||
| 	SPMOUSE MOUSEF.READ_STATE
 | ||
| 		OR	A
 | ||
| 		JR	Z,PushButtEx
 | ||
| 		BIT	0,A
 | ||
| 		JR	Z,PushButtEx
 | ||
| 		LD	C,(IX+FORMTABL.XMINL)	; 00
 | ||
| 		LD	B,(IX+FORMTABL.XMINH)	; 01
 | ||
| 		OR	A
 | ||
| 		SBC	HL,BC
 | ||
| 		ADD	HL,BC
 | ||
| 		JR	C,PushButtEx
 | ||
| 		LD	C,(IX+FORMTABL.XMAXL)	; 02
 | ||
| 		LD	B,(IX+FORMTABL.XMAXH)	; 03
 | ||
| 		SBC	HL,BC
 | ||
| 		ADD	HL,BC
 | ||
| 		CCF 
 | ||
| 		JR	C,PushButtEx
 | ||
| 		EX	DE,HL
 | ||
| 		LD	C,(IX+FORMTABL.YMINL)	; 04
 | ||
| 		LD	B,(IX+FORMTABL.YMINH)	; 05
 | ||
| 		OR	A
 | ||
| 		SBC	HL,BC
 | ||
| 		ADD	HL,BC
 | ||
| 		JR	C,PushButtEx
 | ||
| 		LD	C,(IX+FORMTABL.YMAXL)	; 06
 | ||
| 		LD	B,(IX+FORMTABL.YMAXH)	; 07
 | ||
| 		SBC	HL,BC
 | ||
| 		CCF 
 | ||
| 		JR	C,PushButtEx
 | ||
| PausePh		LD	A,0x00
 | ||
| 		OR	A
 | ||
| 		JR	Z,PushLp
 | ||
| 		DEC	A
 | ||
| 		LD	(PausePh+1),A
 | ||
| 		HALT 
 | ||
| 		JR	PushLp1
 | ||
| 
 | ||
| PushButtEx	POP	BC
 | ||
| 		POP	DE
 | ||
| 		POP	HL
 | ||
| 		PUSH	AF
 | ||
| 		CALL	PutPopBut
 | ||
| 		POP	AF
 | ||
| 		POP	DE
 | ||
| 		POP	HL
 | ||
| 		RET 
 | ||
| 
 | ||
| TestRun		BIT	FORMTABL.B_WORKBUTTON,(IX+FORMTABL.FLAGL)	; 08
 | ||
| 		RET	Z
 | ||
| 		LD	C,(IX+FORMTABL.FIRELEFTL)	; 0C
 | ||
| 		LD	B,(IX+FORMTABL.FIRELEFTH)	; 0D
 | ||
| 		PUSH	BC
 | ||
| 		RET 
 | ||
| 
 | ||
| PutPushBut	LD	A,COLORP.WHITE | COLORI.BLACKGRAY;0xF7
 | ||
| 		JR	PutButt
 | ||
| 
 | ||
| PutPopBut	LD	A,COLORP.BLACKGRAY | COLORI.WHITE;0x7F
 | ||
| PutButt		PUSH	IY
 | ||
| 		EX	AF,AF'
 | ||
| 	GETPORT WINSP.CPU1
 | ||
| 		PUSH	AF
 | ||
| 	SETPORT WINSP.CPU1,0x50
 | ||
| 	GETPORT WINSP.Y_PORT
 | ||
| 		PUSH	AF
 | ||
| 		SRL	H
 | ||
| 		RR	L
 | ||
| 		SET	6,H
 | ||
| 		LD	IYL,E
 | ||
| 		SRL	C
 | ||
| 		DEC	C
 | ||
| 		DEC	C
 | ||
| 		LD	A,C
 | ||
| 		LD	(ButLen3),A
 | ||
| 		LD	A,B
 | ||
| 		SUB	0x02
 | ||
| 		LD	(ButLen1),A
 | ||
| 		LD	(ButLen2),A
 | ||
| 		ADD	A,IYL
 | ||
| 		INC	A
 | ||
| 		LD	IYH,A
 | ||
| 		EX	AF,AF'
 | ||
| 		PUSH	AF
 | ||
| 		AND	0xF0
 | ||
| 		LD	E,A
 | ||
| 		RRCA 
 | ||
| 		RRCA 
 | ||
| 		RRCA 
 | ||
| 		RRCA 
 | ||
| 		OR	E
 | ||
| 		LD	D,A
 | ||
| 		POP	AF
 | ||
| 		AND	0x0F
 | ||
| 		LD	E,A
 | ||
| 		RLCA 
 | ||
| 		RLCA 
 | ||
| 		RLCA 
 | ||
| 		RLCA 
 | ||
| 		OR	E
 | ||
| 		LD	E,A
 | ||
| 		DI 
 | ||
| 		LD	A,IYL
 | ||
| 	SETPORT WINSP.Y_PORT,,0
 | ||
| 		LD	(HL),E
 | ||
| 		INC	A
 | ||
| 	SETPORT WINSP.Y_PORT,,0
 | ||
| 	ACCEL ACCELCMD.SET_BUFFER
 | ||
| 		LD	A,0x00
 | ||
| ButLen1		EQU $-1
 | ||
| 	ACCEL ACCELCMD.FILL_VERT
 | ||
| 		LD	(HL),E
 | ||
| 	ACCEL ACCELCMD.OFF
 | ||
| 		LD	(HL),E
 | ||
| 		INC	HL
 | ||
| 	ACCEL ACCELCMD.SET_BUFFER
 | ||
| 		LD	A,0x00
 | ||
| ButLen3		EQU $-1
 | ||
| 	ACCEL ACCELCMD.OFF
 | ||
| 		LD	A,IYL
 | ||
| 	SETPORT WINSP.Y_PORT,,0
 | ||
| 	ACCEL ACCELCMD.FILL
 | ||
| 		LD	(HL),E
 | ||
| 	ACCEL ACCELCMD.OFF
 | ||
| 		LD	A,IYH
 | ||
| 	SETPORT WINSP.Y_PORT,,0
 | ||
| 	ACCEL ACCELCMD.FILL
 | ||
| 		LD	(HL),D
 | ||
| 	ACCEL ACCELCMD.OFF
 | ||
| 		LD	B,0x00
 | ||
| 		ADD	HL,BC
 | ||
| 		LD	A,IYL
 | ||
| 	SETPORT WINSP.Y_PORT,,0
 | ||
| 		LD	(HL),D
 | ||
| 		INC	A
 | ||
| 	SETPORT WINSP.Y_PORT,,0
 | ||
| 	ACCEL ACCELCMD.SET_BUFFER
 | ||
| 		LD	A,0x00
 | ||
| ButLen2		EQU $-1
 | ||
| 	ACCEL ACCELCMD.FILL_VERT
 | ||
| 		LD	(HL),D
 | ||
| 	ACCEL ACCELCMD.OFF
 | ||
| 		LD	(HL),D
 | ||
| 		EI 
 | ||
| 		POP	AF
 | ||
| 	SETPORT WINSP.Y_PORT,,0
 | ||
| 		POP	AF
 | ||
| 	SETPORT WINSP.CPU1,,0
 | ||
| 		POP	IY
 | ||
| 		RET 
 |