949 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			949 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
 | ||
| ; LAST UPDATE: 08.03.2025 savelij
 | ||
| 
 | ||
| ;[]-----------------------------------------------------------[]
 | ||
| ;<3B>à®æ¥¤ãà  ã¬®¦¥¨ï (8*8bit)
 | ||
| ;<3B>  ¢å®¤: E*C
 | ||
| ;<3B>  ¢ë室:HL-१ã«ìâ â
 | ||
| Mult8		SUB	A
 | ||
| 		LD	L,A
 | ||
| 		LD	H,A
 | ||
| 		LD	D,A
 | ||
| 		CP	C
 | ||
| 		RET	Z
 | ||
| 		CP	E
 | ||
| 		RET	Z
 | ||
| 		LD	H,C
 | ||
| 		LD	B,0x08
 | ||
| .L1		ADD	HL,HL
 | ||
| 		JR	NC,.L2
 | ||
| 		ADD	HL,DE
 | ||
| .L2		DJNZ	.L1
 | ||
| 		RET 
 | ||
| 
 | ||
| ;<3B>à®æ¥¤ãà  ã¬®¦¥¨ï (16*8bit)
 | ||
| ;<3B>  ¢å®¤: DE*C
 | ||
| ;<3B>  ¢ë室:A+HL-१ã«ìâ â
 | ||
| Mult16X8	SUB	A
 | ||
| 		LD	L,A
 | ||
| 		LD	H,A
 | ||
| 		CP	C
 | ||
| 		RET	Z
 | ||
| 		OR	D
 | ||
| 		OR	E
 | ||
| 		RET	Z
 | ||
| 		LD	A,C
 | ||
| 		LD	BC,8 << 8
 | ||
| .L1		ADD	HL,HL
 | ||
| 		RLA 
 | ||
| 		JR	NC,.L2
 | ||
| 		ADD	HL,DE
 | ||
| 		ADC	A,C
 | ||
| .L2		DJNZ	.L1
 | ||
| 		RET 
 | ||
| 
 | ||
| ;<3B>à®æ¥¤ãà  ã¬®¦¥¨ï (16*16bit)
 | ||
| ;<3B>  ¢å®¤: DE*BC
 | ||
| ;<3B>  ¢ë室:HL-१ã«ìâ â
 | ||
| Mult16		LD	HL,0x0000
 | ||
| 		LD	A,0x10
 | ||
| .L1		RR	B
 | ||
| 		RR	C
 | ||
| 		JR	NC,.L2
 | ||
| 		ADD	HL,DE
 | ||
| .L2		RL	E
 | ||
| 		RL	D
 | ||
| 		DEC	A
 | ||
| 		JR	NZ,.L1
 | ||
| 		RET 
 | ||
| 
 | ||
| ;<3B>à®æ¥¤ãà  ã¬®¦¥¨ï (32bit)
 | ||
| ;<3B>  ¢å®¤: DE*BC
 | ||
| ;<3B>  ¢ë室:HL+DE-१ã«ìâ â
 | ||
| Mult16X16	PUSH	IX
 | ||
| 		EX	DE,HL
 | ||
| 		LD	E,0x00
 | ||
| 		LD	D,E
 | ||
| 		LD	IXL,E
 | ||
| 		LD	IXH,D
 | ||
| 		LD	A,0x20
 | ||
| .L1		ADD	IX,IX
 | ||
| 		ADC	HL,HL
 | ||
| 		RL	E
 | ||
| 		RL	D
 | ||
| 		JR	NC,.L2
 | ||
| 		ADD	IX,BC
 | ||
| 		JR	NC,.L2
 | ||
| 		INC	HL
 | ||
| .L2		DEC	A
 | ||
| 		JR	NZ,.L1
 | ||
| 		LD	E,IXL
 | ||
| 		LD	D,IXH
 | ||
| 		POP	IX
 | ||
| 		RET 
 | ||
| 
 | ||
| ;<3B>à®æ¥¤ãà  ã¬®¦¥¨ï (32bit)
 | ||
| ;<3B>  ¢å®¤: HL+DE*BC
 | ||
| ;<3B>  ¢ë室:HL+DE-१ã«ìâ â
 | ||
| Mult32		PUSH	IX
 | ||
| 		LD	IX,0x0000
 | ||
| 		LD	A,0x20
 | ||
| 		EX	DE,HL
 | ||
| .L1		ADD	IX,IX
 | ||
| 		ADC	HL,HL
 | ||
| 		RL	E
 | ||
| 		RL	D
 | ||
| 		JR	NC,.L2
 | ||
| 		ADD	IX,BC
 | ||
| 		JR	NC,.L2
 | ||
| 		INC	HL
 | ||
| .L2		DEC	A
 | ||
| 		JR	NZ,.L1
 | ||
| 		LD	E,IXL
 | ||
| 		LD	D,IXH
 | ||
| 		POP	IX
 | ||
| 		RET 
 | ||
| 
 | ||
| ;<3B>à®æ¥¤ãà  ¤¥«¥¨ï (16bit)
 | ||
| ;<3B>  ¢å®¤: BC/DE
 | ||
| ;<3B>  ¢ë室:BC-१ã«ìâ â
 | ||
| ;	  HL-®áâ â®ª
 | ||
| Divis16X16	LD	A,D
 | ||
| 		OR	E
 | ||
| 		RET	Z
 | ||
| 		LD	HL,0x0000
 | ||
| 		LD	A,B
 | ||
| 		LD	B,0x10
 | ||
| .L1		RL	C
 | ||
| 		RLA 
 | ||
| 		ADC	HL,HL
 | ||
| 		SBC	HL,DE
 | ||
| 		CCF 
 | ||
| 		JR	NC,.L4
 | ||
| .L2		DJNZ	.L1
 | ||
| 		RL	C
 | ||
| 		RLA 
 | ||
| 		LD	B,A
 | ||
| 		RET 
 | ||
| .L3		RL	C
 | ||
| 		RLA 
 | ||
| 		ADC	HL,HL
 | ||
| 		ADD	HL,DE
 | ||
| 		JR	C,.L2
 | ||
| .L4		DJNZ	.L3
 | ||
| 		RL	C
 | ||
| 		RLA 
 | ||
| 		ADD	HL,DE
 | ||
| 		LD	B,A
 | ||
| 		RET 
 | ||
| 
 | ||
| ;<3B>à®æ¥¤ãà  ¤¥«¥¨ï (24x16bit)
 | ||
| ;<3B>  ¢å®¤: H+L+C/DE
 | ||
| ;<3B>  ¢ë室:A -१ã«ìâ â
 | ||
| ;	  HL-®áâ â®ª
 | ||
| Divis24X16	LD	A,D
 | ||
| 		CPL 
 | ||
| 		LD	D,A
 | ||
| 		LD	A,E
 | ||
| 		CPL 
 | ||
| 		LD	E,A
 | ||
| 		INC	DE
 | ||
| 		LD	A,C
 | ||
| 		LD	B,0x08
 | ||
| .L1		ADD	HL,HL
 | ||
| 		JR	C,.L2
 | ||
| 		ADD	A,A
 | ||
| 		JR	NC,.L4
 | ||
| 		INC	HL
 | ||
| .L4		PUSH	HL
 | ||
| 		ADD	HL,DE
 | ||
| 		JR	NC,.L5
 | ||
| 		EX	(SP),HL
 | ||
| 		INC	A
 | ||
| .L5		POP	HL
 | ||
| 		DJNZ	.L1
 | ||
| 		RET 
 | ||
| .L2		ADC	A,A
 | ||
| 		JR	NC,.L3
 | ||
| 		INC	HL
 | ||
| .L3		ADD	HL,DE
 | ||
| 		DJNZ	.L1
 | ||
| 		RET 
 | ||
| 
 | ||
| ;<3B>à®æ¥¤ãà  ¤¥«¥¨ï 32/16bit=16bit
 | ||
| ;<3B>  ¢å®¤: HL+DE/BC
 | ||
| ;<3B>  ¢ë室:DE-१ã«ìâ â
 | ||
| ;	  HL-®áâ â®ª
 | ||
| Divis32X16	LD	A,0x10
 | ||
| .L2		EX	DE,HL
 | ||
| 		ADD	HL,HL
 | ||
| 		EX	DE,HL
 | ||
| 		ADC	HL,HL
 | ||
| 		SBC	HL,BC
 | ||
| 		JR	NC,.L1
 | ||
| 		ADD	HL,BC
 | ||
| 		DEC	A
 | ||
| 		JR	NZ,.L2
 | ||
| 		RET 
 | ||
| .L1		INC	DE
 | ||
| 		DEC	A
 | ||
| 		JR	NZ,.L2
 | ||
| 		RET 
 | ||
| 
 | ||
| ;<3B>à®æ¥¤ãà  ¤¥«¥¨ï 32/16bit=32bit
 | ||
| ;<3B>  ¢å®¤: HL+DE/BC
 | ||
| ;<3B>  ¢ë室:HL+DE-१ã«ìâ â
 | ||
| ;	  BC-®áâ â®ª
 | ||
| Divis32		PUSH	IX
 | ||
| 		LD	IXL,E
 | ||
| 		LD	IXH,D
 | ||
| 		EX	DE,HL
 | ||
| 		LD	HL,0x0000
 | ||
| 		LD	A,0x20
 | ||
| .L1		ADD	IX,IX
 | ||
| 		RL	E
 | ||
| 		RL	D
 | ||
| 		ADC	HL,HL
 | ||
| 		SBC	HL,BC
 | ||
| 		JR	NC,.L2
 | ||
| 		DEC	IX
 | ||
| 		ADD	HL,BC
 | ||
| .L2		INC	IX
 | ||
| 		DEC	A
 | ||
| 		JR	NZ,.L1
 | ||
| 		LD	C,L
 | ||
| 		LD	B,H
 | ||
| 		EX	DE,HL
 | ||
| 		LD	E,IXL
 | ||
| 		LD	D,IXH
 | ||
| 		POP	IX
 | ||
| 		RET 
 | ||
| 
 | ||
| ;[]===================================================================[]
 | ||
| ;<3B>  ¢å®¤:
 | ||
| ;	A:BC:HL - ç¨á«® 40 ¡¨â
 | ||
| ;	   DE -	¡ãä¥à
 | ||
| ConvNumTxt40:	PUSH	IX
 | ||
| 		LD	IX,ConvertFlg
 | ||
| 		RES	7,(IX+0x00)
 | ||
| 		PUSH	BC
 | ||
| 		EXX
 | ||
| 		LD	HL,ConNumbExit
 | ||
| 		LD	(ChooseStringFormat.address),HL
 | ||
| 		POP	HL
 | ||
| 		LD	E,0x17
 | ||
| 		LD	BC,0x4876
 | ||
| 		EXX 
 | ||
| 		ld	bc,0xE800
 | ||
| 		; E':BC':BC = 100,000,000,000
 | ||
| 		call	ConNumb40
 | ||
| 		exx
 | ||
| 		ld	e,0x02
 | ||
| 		ld	bc,0x540B
 | ||
| 		exx
 | ||
| 		ld	bc,0xE400
 | ||
| 		; E':BC':BC = 10,000,000,000
 | ||
| 		CALL	ConNumb40
 | ||
| 		exx
 | ||
| 		ld	e,0x00
 | ||
| 		ld	bc,0x3B9A
 | ||
| 		exx
 | ||
| 		ld	bc,0xCA00
 | ||
| 		; E':BC':BC = 1,000,000,000
 | ||
| 		CALL	ConNumb40
 | ||
| 		; E':BC':BC = 100,000,000
 | ||
| 		CALL	ConvNumTxt32_Shared.skip_1
 | ||
| 		POP	IX
 | ||
| 		RET
 | ||
| 
 | ||
| ;[]-----------------------------------------------------------[]
 | ||
| ;Š®¢¥àâ¥à ç¨á«  32¡¨â ¢ ⥪áâ
 | ||
| ;<3B>  ¢å®¤:
 | ||
| ;	BC+HL -	ç¨á«® 32 ¡¨â
 | ||
| ;	   DE -	¡ãä¥à
 | ||
| ConvNumTxt32	PUSH	IX
 | ||
| 		LD	IX,ConvertFlg
 | ||
| 		RES	7,(IX+0x00)
 | ||
| 		PUSH	BC
 | ||
| 		EXX 
 | ||
| 		LD	HL,ConNumbExit
 | ||
| 		LD	(ChooseStringFormat.address),HL
 | ||
| 		POP	HL
 | ||
| 		EXX 
 | ||
| 		call ConvNumTxt32_Shared
 | ||
| 		POP	IX
 | ||
| 		RET 
 | ||
| 
 | ||
| ConvNumTxt32_Shared:
 | ||
| 		LD	BC,0xCA00
 | ||
| 		EXX 
 | ||
| 		LD	BC,0x3B9A	;1'000'000'000
 | ||
| 		EXX 
 | ||
| 		CALL	ConNumb32
 | ||
| .skip_1:	LD	BC,0xE100
 | ||
| 		EXX 
 | ||
| 		LD	BC,0x05F5	;100'000'000
 | ||
| 		EXX 
 | ||
| 		CALL	ConNumb32
 | ||
| 		LD	BC,0x9680
 | ||
| 		EXX 
 | ||
| 		LD	BC,0x0098	;10'000'000
 | ||
| 		EXX 
 | ||
| 		CALL	ConNumb32
 | ||
| 		LD	BC,0x4240
 | ||
| 		EXX 
 | ||
| 		LD	BC,0x000F	;1'000'000
 | ||
| 		EXX 
 | ||
| 		CALL	ConNumb32
 | ||
| 		LD	BC,0x86A0
 | ||
| 		EXX 
 | ||
| 		LD	BC,0x0001	;100'000
 | ||
| 		EXX 
 | ||
| 		CALL	ConNumb32
 | ||
| 		LD	BC,10000	;10'000
 | ||
| 		EXX 
 | ||
| 		LD	BC,0x0000
 | ||
| 		EXX 
 | ||
| 		CALL	ConNumb32
 | ||
| 		LD	BC,1000		;1'000
 | ||
| 		CALL	ConNumb16
 | ||
| 		LD	BC,100		;100
 | ||
| 		CALL	ConNumb16
 | ||
| 		LD	BC,10		;10
 | ||
| 		CALL	ConNumb16
 | ||
| 		LD	A,L
 | ||
| 		ADD	A,'0'
 | ||
| 		LD	(DE),A
 | ||
| 		INC	DE
 | ||
| 		RET
 | ||
| 
 | ||
| ;Š®¢¥àâ¥à ç¨á«  16¡¨â ¢ ⥪áâ
 | ||
| ;<3B>  ¢å®¤:
 | ||
| ;	HL - ç¨á«® 16 ¡¨â
 | ||
| ;	DE - ¡ãä¥à
 | ||
| ConvNumTxt16	PUSH	IX
 | ||
| 		PUSH	BC
 | ||
| 		LD IX,ConNumbExit
 | ||
| 		ld (ChooseStringFormat.address),IX
 | ||
| 		LD	IX,ConvertFlg
 | ||
| 		RES	7,(IX+0x00)
 | ||
| 		LD	BC,10000	;10'000
 | ||
| 		CALL	ConNumb16
 | ||
| 		LD	BC,1000		;1'000
 | ||
| 		CALL	ConNumb16
 | ||
| 		LD	BC,100		;100
 | ||
| 		CALL	ConNumb16
 | ||
| 		LD	BC,10		;10
 | ||
| 		CALL	ConNumb16
 | ||
| 		LD	A,L
 | ||
| 		ADD	A,'0'
 | ||
| 		LD	(DE),A
 | ||
| 		INC	DE
 | ||
| 		POP	BC
 | ||
| 		POP	IX
 | ||
| 		RET 
 | ||
| 
 | ||
| ;Š®¢¥àâ¥à ç¨á«  8¡¨â ¢	⥪áâ
 | ||
| ;<3B>  ¢å®¤:
 | ||
| ;	A - ç¨á«® 8 ¡¨â
 | ||
| ;	DE - ¡ãä¥à
 | ||
| ConvNumTxt8	PUSH	IX
 | ||
| 		PUSH	BC
 | ||
| 		LD IX,ConNumbExit
 | ||
| 		ld (ChooseStringFormat.address),IX
 | ||
| 		LD	IX,ConvertFlg
 | ||
| 		RES	7,(IX+0x00)
 | ||
| 		LD	C,100
 | ||
| 		CALL	ConNumb8
 | ||
| 		LD	C,10
 | ||
| 		CALL	ConNumb8
 | ||
| 		ADD	A,'0'
 | ||
| 		LD	(DE),A
 | ||
| 		INC	DE
 | ||
| 		POP	BC
 | ||
| 		POP	IX
 | ||
| 		RET 
 | ||
| 
 | ||
| ;----------------------------------------------------------------------;
 | ||
| ConNumb40:	exx
 | ||
| 		ld	d,'0'-1
 | ||
| 		exx
 | ||
| 		and	a
 | ||
| .loop:		sbc	hl,bc
 | ||
| 		exx
 | ||
| 		sbc	hl,bc
 | ||
| 		sbc	a,e
 | ||
| 		inc	d
 | ||
| 		exx
 | ||
| 		jp	nc,.loop
 | ||
| 		add	hl,bc
 | ||
| 		exx
 | ||
| 		adc	hl,bc
 | ||
| 		adc	a,e
 | ||
| 		ex	af,af'
 | ||
| 		ld	a,d
 | ||
| 		exx
 | ||
| 		JR	ConNumb8.exit
 | ||
| 
 | ||
| ConNumb32:	LD	A,'0' - 1
 | ||
| 		OR	A
 | ||
| .loop:		INC	A
 | ||
| 		SBC	HL,BC
 | ||
| 		EXX 
 | ||
| 		SBC	HL,BC
 | ||
| 		EXX 
 | ||
| 		JR	NC,.loop
 | ||
| 		ADD	HL,BC
 | ||
| 		EXX 
 | ||
| 		ADC	HL,BC
 | ||
| 		EXX 
 | ||
| 		JR	ChooseStringFormat
 | ||
| 
 | ||
| ConNumb16:	LD	A,'0' - 1
 | ||
| 		OR	A
 | ||
| .loop:		INC	A
 | ||
| 		SBC	HL,BC
 | ||
| 		JR	NC,.loop
 | ||
| 		ADD	HL,BC
 | ||
| 		JR	ChooseStringFormat
 | ||
| 
 | ||
| ConNumb8:	LD	B,'0' - 1
 | ||
| .loop:		INC	B
 | ||
| 		SUB	C
 | ||
| 		JR	NC,.loop
 | ||
| 		ADD	A,C
 | ||
| 		EX	AF,AF'
 | ||
| 		LD	A,B
 | ||
| .exit:		CALL	ChooseStringFormat
 | ||
| 		EX	AF,AF'
 | ||
| 		RET 
 | ||
| 
 | ||
| ConvertFlg	DEFB	0x00
 | ||
| 
 | ||
| ChooseStringFormat:
 | ||
| 		JP	0x0000
 | ||
| .address:	equ $-2
 | ||
| 
 | ||
| ConNumbExit:	CP	"0"
 | ||
| 		JR	Z,.skip
 | ||
| 		SET	7,(IX+0x00)
 | ||
| .skip:		BIT	7,(IX+0x00)
 | ||
| 		RET	Z
 | ||
| 		LD	(DE),A
 | ||
| 		INC	DE
 | ||
| 		RET
 | ||
| 
 | ||
| ;[]-----------------------------------------------------------[]
 | ||
| ;Š®¢¥àâ¥à ⥪áâ  ¢ ç¨á«® 32 ¡¨â
 | ||
| ;<3B>  ¢å®¤:
 | ||
| ;	   DE -	⥪áâ
 | ||
| ;<3B>  ¢ë室:
 | ||
| ;	HL+IX -	ç¨á«®
 | ||
| ;	   CY -	®è¨¡ª 
 | ||
| ConvTxtNum32	LD	IX,0x0000
 | ||
| 		LD	HL,0x0000
 | ||
| ConvTN1		LD	A,(DE)
 | ||
| 		CP	0x21
 | ||
| 		CCF 
 | ||
| 		RET	NC
 | ||
| 		SUB	0x30
 | ||
| 		RET	C
 | ||
| 		CP	0x0A
 | ||
| 		CCF 
 | ||
| 		RET	C
 | ||
| 		INC	DE
 | ||
| 		ADD	IX,IX
 | ||
| 		ADC	HL,HL
 | ||
| 		RET	C
 | ||
| 		PUSH	HL
 | ||
| 		PUSH	IX
 | ||
| 		ADD	IX,IX
 | ||
| 		ADC	HL,HL
 | ||
| 		RET	C
 | ||
| 		ADD	IX,IX
 | ||
| 		ADC	HL,HL
 | ||
| 		RET	C
 | ||
| 		POP	BC
 | ||
| 		ADD	IX,BC
 | ||
| 		POP	BC
 | ||
| 		ADC	HL,BC
 | ||
| 		RET	C
 | ||
| 		LD	C,A
 | ||
| 		LD	B,0x00
 | ||
| 		ADD	IX,BC
 | ||
| 		LD	C,B
 | ||
| 		ADC	HL,BC
 | ||
| 		RET	C
 | ||
| 		JR	ConvTN1
 | ||
| 
 | ||
| ;Š®¢¥àâ¥à ⥪áâ  ¢ ç¨á«® 16 ¡¨â
 | ||
| ;<3B>  ¢å®¤:
 | ||
| ;	   DE -	⥪áâ
 | ||
| ;<3B>  ¢ë室:
 | ||
| ;	   HL -	ç¨á«®
 | ||
| ;	   CY -	®è¨¡ª 
 | ||
| ConvTxtNum16	LD	HL,0x0000
 | ||
| ConvTN2		LD	A,(DE)
 | ||
| 		CP	0x21
 | ||
| 		CCF 
 | ||
| 		RET	NC
 | ||
| 		SUB	0x30
 | ||
| 		RET	C
 | ||
| 		CP	0x0A
 | ||
| 		CCF 
 | ||
| 		RET	C
 | ||
| 		INC	DE
 | ||
| 		ADD	HL,HL
 | ||
| 		RET	C
 | ||
| 		PUSH	HL
 | ||
| 		ADD	HL,HL
 | ||
| 		RET	C
 | ||
| 		ADD	HL,HL
 | ||
| 		RET	C
 | ||
| 		POP	BC
 | ||
| 		ADD	HL,BC
 | ||
| 		RET	C
 | ||
| 		LD	C,A
 | ||
| 		LD	B,0x00
 | ||
| 		ADD	HL,BC
 | ||
| 		RET	C
 | ||
| 		JR	ConvTN2
 | ||
| 
 | ||
| ;[]-----------------------------------------------------------[]
 | ||
| MoveBytes	LD	A,B
 | ||
| 		OR	A
 | ||
| 		JR	Z,MvByte1
 | ||
| 		DI 
 | ||
| 	ACCEL ACCELCMD.SET_BUFFER
 | ||
| 		LD	A,0x00
 | ||
| MvByte0
 | ||
| 	ACCEL ACCELCMD.COPY
 | ||
| 		LD	A,(HL)
 | ||
| 		LD	(DE),A
 | ||
| 	ACCEL ACCELCMD.OFF
 | ||
| 		INC	H
 | ||
| 		INC	D
 | ||
| 		DEC	B
 | ||
| 		JR	NZ,MvByte0
 | ||
| 		EI 
 | ||
| MvByte1		LD	A,C
 | ||
| 		OR	A
 | ||
| 		RET	Z
 | ||
| 		LD	(Mvlen1),A
 | ||
| 		DI 
 | ||
| 	ACCEL ACCELCMD.SET_BUFFER
 | ||
| 		LD	A,0x00
 | ||
| Mvlen1		EQU $-1
 | ||
| 	ACCEL ACCELCMD.COPY
 | ||
| 		LD	A,(HL)
 | ||
| 		LD	(DE),A
 | ||
| 	ACCEL ACCELCMD.OFF
 | ||
| 		EI 
 | ||
| 		LD	A,C
 | ||
| 		ADD	A,E
 | ||
| 		LD	E,A
 | ||
| 		JR	NC,.L1
 | ||
| 		INC	D
 | ||
| .L1		LD	A,C
 | ||
| 		ADD	A,L
 | ||
| 		LD	L,A
 | ||
| 		RET	NC
 | ||
| 		INC	H
 | ||
| 		RET 
 | ||
| 
 | ||
| MoveBytesUp	LD	A,B
 | ||
| 		OR	A
 | ||
| 		JR	Z,MovUp1
 | ||
| 		DI 
 | ||
| 	ACCEL ACCELCMD.SET_BUFFER
 | ||
| 		LD	A,0x00
 | ||
| MovUp0		DEC	H
 | ||
| 		DEC	D
 | ||
| 	ACCEL ACCELCMD.COPY
 | ||
| 		LD	A,(HL)
 | ||
| 		LD	(DE),A
 | ||
| 	ACCEL ACCELCMD.OFF
 | ||
| 		DEC	B
 | ||
| 		JR	NZ,MovUp0
 | ||
| 		EI 
 | ||
| MovUp1		LD	A,C
 | ||
| 		OR	A
 | ||
| 		RET	Z
 | ||
| 		LD	(LenUp+1),A
 | ||
| 		SBC	HL,BC
 | ||
| 		EX	DE,HL
 | ||
| 		SBC	HL,BC
 | ||
| 		EX	DE,HL
 | ||
| 		DI 
 | ||
| 	ACCEL ACCELCMD.SET_BUFFER
 | ||
| LenUp		LD	A,0x00
 | ||
| 	ACCEL ACCELCMD.COPY
 | ||
| 		LD	A,(HL)
 | ||
| 		LD	(DE),A
 | ||
| 	ACCEL ACCELCMD.OFF
 | ||
| 		EI 
 | ||
| 		RET 
 | ||
| 
 | ||
| ;[]----------------------------------------------------------[]
 | ||
| Resident	LD	(ResCall),DE
 | ||
| 		IN	B,(C)
 | ||
| 		PUSH	BC
 | ||
| 		OUT	(C),A
 | ||
| 		CALL	0x0000
 | ||
| ResCall		EQU $-2
 | ||
| 		POP	BC
 | ||
| 		OUT	(C),B
 | ||
| 		RET 
 | ||
| 
 | ||
| ;[]----------------------------------------------------------[]
 | ||
| ; Š®ª â¥ æ¨ï áâப¨. „®¡ ¢«ï¥âáï áâப  ¨§ hl ¢ ª®¥æ áâப¨ ¢ de. <20>ã«ì ª®¯¨àã¥âáï ⮦¥.
 | ||
| ; (hl) -> (de)
 | ||
| ConcatString:	ex	hl,de
 | ||
| .loop:		ld	a,(hl)
 | ||
| 		or	a
 | ||
| 		jr	z,.end
 | ||
| 		inc	hl
 | ||
| 		jr	.loop
 | ||
| 
 | ||
| .end:		ex	hl,de			;‚¨¬ ¨¥!!! ®¦¨¤ ¥âáï, çâ® ¤ «ìè¥ 
 | ||
| ; ¨¤¥â CopyString, ¯®í⮬㠥᫨ ¬¥¦¤ã í⨬¨ ¯/¯ ¤®¡ ¢¨«¨ çâ®-â® - ¤®¡ ¢ì ¢ë§®¢ CopyString!
 | ||
| ;[]----------------------------------------------------------[]
 | ||
| ; Š®¯¨à®¢ ¨¥ áâப¨ ¤® ã«ï. <20>ã«ì ª®¯¨àã¥âáï ⮦¥.
 | ||
| ; (hl) -> (de)
 | ||
| CopyString:	ld	a,(hl)
 | ||
| 		ldi
 | ||
| 		or	a
 | ||
| 		jr	nz,CopyString
 | ||
| 		dec	de
 | ||
| 		ret
 | ||
| 
 | ||
| ;[]----------------------------------------------------------[]
 | ||
| ; Š®¯¨à®¢ ¨¥ áâப¨ ¤® ã«ï ¨«¨ ¯à®¡¥« . ‚ ª®¥æ ¤®¡ ¢«ï¥âáï ã«ì.
 | ||
| ; (hl) -> (de)
 | ||
| ;!FIXIT ¥á«¨ ¥ ¡ã¤¥â 0 ¨ ¯à®¡¥«  - ¬®¦¥â ¬®£® § ¯®à®âì
 | ||
| CopyWord:	ld	bc, 0x20FF
 | ||
| .loop:		ld	a,(hl)
 | ||
| 		ldi
 | ||
| 		or	a
 | ||
| 		ret	z
 | ||
| 		cp	b
 | ||
| 		jr	nz,.loop
 | ||
| 		dec	de
 | ||
| 		xor	a
 | ||
| 		ld	(de),a
 | ||
| 		ret
 | ||
| 
 | ||
| ;[]----------------------------------------------------------[]
 | ||
| ; ‘à ¢¥¨¥ áâப¨ á ãç¥â®¬ ॣ¨áâà .
 | ||
| ; (®¡à §¥æ ¤®«¦¥ § ª ç¨¢ âìáï ã«¥¬)
 | ||
| ; ¢å®¤: de - string1
 | ||
| ;       hl - string2 (®¡à §¥æ)
 | ||
| ; ¢ë室: "z" - string1 = string2
 | ||
| ;        "c" - string1 < string2
 | ||
| ;        ¨ ç¥ - string1 > string2
 | ||
| ;[]----------------------------------------------------------[]
 | ||
| CompareStrings:	ld	a,(de)
 | ||
| 		cp	(hl)
 | ||
| 		ret	nz
 | ||
| 		inc	hl
 | ||
| 		inc	de
 | ||
| 		ld	a,(hl)
 | ||
| 		or	a
 | ||
| 		jr	nz,CompareStrings			; ®¡à §¥æ ¥ § ª®ç¥
 | ||
| 		ld	a,(de)
 | ||
| 		cp	(hl)
 | ||
| 		ret
 | ||
| 
 | ||
| ;<3B>®¨áª ª®æ  á«®¢  ¨«¨ áâப¨
 | ||
| ;> hl - áâப 
 | ||
| ;< hl - ª®¥æ áâப¨ ¨«¨ 
 | ||
| SkipWord:	ld	b,0x20
 | ||
| .loop:		ld	a,(hl)
 | ||
| 		inc	hl
 | ||
| 		cp	b
 | ||
| 		jr	z,.skipSpace
 | ||
| 		and	a
 | ||
| 		jr	nz,.loop
 | ||
| .end:		dec	hl
 | ||
| 		ret
 | ||
| 
 | ||
| .skipSpace:	ld	a,(hl)
 | ||
| 		cp	b
 | ||
| 		ret	nz
 | ||
| 		inc	hl
 | ||
| 		jr	.skipSpace
 | ||
| 
 | ||
| ;[]----------------------------------------------------------[]
 | ||
| SetCMOSPrint:	EX	AF,AF'
 | ||
| 		LD	(CMOSposXT),HL
 | ||
| 		LD	(CMOSposYT),DE
 | ||
| 		LD	A,B
 | ||
| 		LD	(CMOSColorT),A
 | ||
| 		SUB	A
 | ||
| 		LD	L,A
 | ||
| 		LD	H,A
 | ||
| 		LD	(CMOSPrint),A
 | ||
| 		LD	(CMOSTime),HL
 | ||
| 		LD	(CMOSTime+2),A
 | ||
| 		LD	(CMOSData),HL
 | ||
| 		LD	(CMOSData+2),A
 | ||
| 		LD	HL,CMOSTimeT
 | ||
| 		LD	DE,CMOSDataT
 | ||
| 		LD	A,'0'
 | ||
| 		LD	B,0x03
 | ||
| .L1		LD	(HL),A
 | ||
| 		INC	HL
 | ||
| 		LD	(HL),A
 | ||
| 		INC	HL
 | ||
| 		INC	HL
 | ||
| 		LD	(DE),A
 | ||
| 		INC	DE
 | ||
| 		LD	(DE),A
 | ||
| 		INC	DE
 | ||
| 		INC	DE
 | ||
| 		DJNZ	.L1
 | ||
| 		EX	AF,AF'
 | ||
| 		LD	(CMOSOut),A
 | ||
| 		OR	A
 | ||
| 		JR	Z,TestCMOS
 | ||
| 		EXX 
 | ||
| 		LD	(CMOSposXD),HL
 | ||
| 		LD	(CMOSposYD),DE
 | ||
| 		LD	A,B
 | ||
| 		LD	(CMOSColorD),A
 | ||
| 		EXX 
 | ||
| 		JR	TestCMOS
 | ||
| 
 | ||
| ResCMOSPrint:	LD	A,0x01
 | ||
| 		LD	(CMOSPrint),A
 | ||
| 		RET 
 | ||
| 
 | ||
| TestCMOS:	LD	A,(CMOSFlag)
 | ||
| 		OR	A
 | ||
| 		RET	Z
 | ||
| 		LD	A,(CMOSPrint)
 | ||
| 		OR	A
 | ||
| 		RET	NZ
 | ||
| 		PUSH	IX
 | ||
| 		HALT 
 | ||
| 		;!TEST
 | ||
| 		;DI
 | ||
| 	SPDSS DSSF.GETTIME
 | ||
| 		;!TEST
 | ||
| 		;EI 
 | ||
| 		PUSH	DE
 | ||
| 		PUSH	IX
 | ||
| 		EX	DE,HL
 | ||
| 		LD	HL,(CMOSTime)
 | ||
| 		OR	A
 | ||
| 		SBC	HL,DE
 | ||
| 		JR	NZ,PrnCMOSTime
 | ||
| 		LD	A,(CMOSTime+2)
 | ||
| 		CP	B
 | ||
| 		JR	Z,TCMOS1
 | ||
| PrnCMOSTime:	EX	DE,HL
 | ||
| 		LD	(CMOSTime),HL
 | ||
| 		LD	A,B
 | ||
| 		LD	(CMOSTime+2),A
 | ||
| 		LD	DE,CMOSTimeT
 | ||
| 		LD	A,H
 | ||
| 		CALL	GetCMOS
 | ||
| 		INC	DE
 | ||
| 		LD	A,L
 | ||
| 		CALL	GetCMOS
 | ||
| 		INC	DE
 | ||
| 		LD	A,(CMOSTime+2)
 | ||
| 		CALL	GetCMOS
 | ||
| 		LD	HL,CMOSTimeT
 | ||
| 		LD	DE,(CMOSposXT)
 | ||
| 		LD	BC,(CMOSposYT)
 | ||
| 		LD	A,(CMOSColorT)
 | ||
| 		CALL	PrnTxtLnIFF
 | ||
| TCMOS1		POP	IX
 | ||
| 		POP	DE
 | ||
| 		LD	A,(CMOSOut)
 | ||
| 		OR	A
 | ||
| 		JP	Z,TCMOSex
 | ||
| 		PUSH	IX
 | ||
| 		POP	HL
 | ||
| 		LD	BC,1900
 | ||
| 		OR	A
 | ||
| 		SBC	HL,BC
 | ||
| 		LD	B,L
 | ||
| 		LD	HL,(CMOSData)
 | ||
| 		OR	A
 | ||
| 		SBC	HL,DE
 | ||
| 		JR	NZ,PrnCMOSData
 | ||
| 		LD	A,(CMOSData+2)
 | ||
| 		CP	B
 | ||
| 		JP	Z,TCMOSex
 | ||
| PrnCMOSData	EX	DE,HL
 | ||
| 		LD	(CMOSData),HL
 | ||
| 		LD	A,B
 | ||
| 		LD	(CMOSData+2),A
 | ||
| 		LD	DE,CMOSDataT
 | ||
| 		LD	A,H
 | ||
| 		CALL	GetCMOS
 | ||
| 		INC	DE
 | ||
| 		LD	A,L
 | ||
| 		CALL	GetCMOS
 | ||
| 		INC	DE
 | ||
| 		LD	A,(CMOSData+2)
 | ||
| 		CALL	GetCMOS
 | ||
| 		LD	A,(CMOSOut)
 | ||
| 		DEC	A
 | ||
| 		JR	NZ,TCMOS2
 | ||
| 		LD	HL,CMOSDataT
 | ||
| 		LD	DE,(CMOSposXD)
 | ||
| 		LD	BC,(CMOSposYD)
 | ||
| 		LD	A,(CMOSColorD)
 | ||
| 		CALL	PrnTxtLnIFF
 | ||
| 		JR	TCMOSex
 | ||
| 
 | ||
| TCMOS2		LD	DE,CMOSDataT1
 | ||
| 		LD	A,H
 | ||
| 		CALL	ConvNumTxt8
 | ||
| 		LD	A,' '
 | ||
| 		LD	(DE),A
 | ||
| 		INC	DE
 | ||
| 		LD	A,L
 | ||
| 		DEC	A
 | ||
| 		ADD	A,A
 | ||
| 		LD	L,A
 | ||
| 		ADD	A,A
 | ||
| 		ADD	A,L
 | ||
| 		LD	HL,Month
 | ||
| 		ADD	A,L
 | ||
| 		LD	L,A
 | ||
| 		JR	NC,.L1
 | ||
| 		INC	H
 | ||
| .L1		LD	A,' '
 | ||
| .L2		LDI 
 | ||
| 		CP	(HL)
 | ||
| 		JR	NZ,.L2
 | ||
| 		LD	(DE),A
 | ||
| 		INC	DE
 | ||
| 		PUSH	IX
 | ||
| 		POP	HL
 | ||
| 		CALL	ConvNumTxt16
 | ||
| 		SUB	A
 | ||
| 		LD	(DE),A
 | ||
| 		LD	HL,(CMOSposXD)
 | ||
| 		LD	(CMOSclX),HL
 | ||
| 		LD	HL,(CMOSposYD)
 | ||
| 		LD	(CMOSclY),HL
 | ||
| 		LD	A,(CMOSColorD)
 | ||
| 		AND	0xF0
 | ||
| 		RRCA 
 | ||
| 		RRCA 
 | ||
| 		RRCA 
 | ||
| 		RRCA 
 | ||
| 		LD	(CMOScol),A
 | ||
| 	MAKEWINDOW WINSUBOBJ.WOBIND
 | ||
| 	W_FILL 0,0,76,8,COLORI.BLACK
 | ||
| 	W_END
 | ||
| CMOSclX		EQU $ - 10
 | ||
| CMOSclY		EQU $ - 8
 | ||
| CMOScol		EQU $ - 2
 | ||
| 		LD	HL,CMOSDataT1
 | ||
| 		LD	DE,(CMOSposXD)
 | ||
| 		LD	BC,(CMOSposYD)
 | ||
| 		LD	A,(CMOSColorD)
 | ||
| 		CALL	PrnTxtLnIFF
 | ||
| TCMOSex		POP	IX
 | ||
| 		RET 
 | ||
| 
 | ||
| ;CMOSPrint:	DB	0x01
 | ||
| CMOSOut:	DB	0
 | ||
| CMOSposXT:	DW	0
 | ||
| CMOSposYT:	DW	0
 | ||
| CMOSColorT:	DB	0
 | ||
| CMOSTime:	DB 3 DUP 0
 | ||
| CMOSTimeT:	DB	"00:00:00",0
 | ||
| CMOSposXD:	DW	0
 | ||
| CMOSposYD:	DW	0
 | ||
| CMOSColorD:	DB	0
 | ||
| CMOSData:	DB 3 DUP 0
 | ||
| CMOSDataT:	DB	"00/00/00",0
 | ||
| CMOSDataT1:	DB 14 DUP ' '
 | ||
| 
 | ||
| GetCMOS:	EX	DE,HL
 | ||
| 		LD	BC,(('0' - 1) << 8) | 10;0x2F0A
 | ||
| .L1		INC	B
 | ||
| 		SUB	C
 | ||
| 		JR	NC,.L1
 | ||
| 		ADD	A,C
 | ||
| 		LD	(HL),B
 | ||
| 		INC	HL
 | ||
| 		ADD	A,'0'
 | ||
| 		LD	(HL),A
 | ||
| 		INC	HL
 | ||
| 		EX	DE,HL
 | ||
| 		RET 
 | ||
| 
 | ||
| Month:		DB	"Jan   "
 | ||
| 		DB	"Febr  "
 | ||
| 		DB	"March "
 | ||
| 		DB	"Apr   "
 | ||
| 		DB	"May   "
 | ||
| 		DB	"June  "
 | ||
| 		DB	"July  "
 | ||
| 		DB	"Aug   "
 | ||
| 		DB	"Sept  "
 | ||
| 		DB	"Oct   "
 | ||
| 		DB	"Nov   "
 | ||
| 		DB	"Dec   "
 | ||
| 
 | ||
| ;[]----------------------------------------------------------[]
 | ||
| SetClock:	LD	A,(MouseFlag)
 | ||
| 		OR	A
 | ||
| 		RET	Z
 | ||
| 		PUSH	IY
 | ||
| 		PUSH	IX
 | ||
| 		PUSH	HL
 | ||
| 		PUSH	DE
 | ||
| 		PUSH	BC
 | ||
| 	GETPORT WINSP.CPU3
 | ||
| 		PUSH AF
 | ||
| 		LD A,(RAMPAGES.FNFONT)
 | ||
| 	SETPORT WINSP.CPU3,,0
 | ||
| 		LD	IX,CLOCK_BMP;ClockBMP
 | ||
| 		LD	HL,14 << 8 + 9
 | ||
| 		LD	DE,7 << 8 | 4
 | ||
| 	SPMOUSE MOUSEF.LOAD_IMAGE
 | ||
| 		POP AF
 | ||
| 	SETPORT WINSP.CPU3,,0
 | ||
| 		POP	BC
 | ||
| 		POP	DE
 | ||
| 		POP	HL
 | ||
| 		POP	IX
 | ||
| 		POP	IY
 | ||
| 		HALT 
 | ||
| 		RET 
 | ||
| 
 | ||
| SetMouse	LD	A,(MouseFlag)
 | ||
| 		OR	A
 | ||
| 		RET	Z
 | ||
| 		PUSH	IY
 | ||
| 		PUSH	IX
 | ||
| 		PUSH	HL
 | ||
| 		PUSH	DE
 | ||
| 		PUSH	BC
 | ||
| 	GETPORT WINSP.CPU3
 | ||
| 		PUSH AF
 | ||
| 		LD A,(RAMPAGES.FNFONT)
 | ||
| 	SETPORT WINSP.CPU3,,0
 | ||
| 		LD	IX,MOUSE_BMP;MouseBMP
 | ||
| 		LD	HL,13 << 8 + 9
 | ||
| 		LD	DE,0
 | ||
| 	SPMOUSE MOUSEF.LOAD_IMAGE
 | ||
| 		POP AF
 | ||
| 	SETPORT WINSP.CPU3,,0
 | ||
| 		POP	BC
 | ||
| 		POP	DE
 | ||
| 		POP	HL
 | ||
| 		POP	IX
 | ||
| 		POP	IY
 | ||
| 		HALT 
 | ||
| 		RET 
 |