;
;*********************** runed1.asm ***********************
		extend
	include 	label
	include		label_3
	include		../join/work.def
;
	ext			PTANUM,PTANUM1
;--------------------------------------------------------
	glb			CG1_SET,MAPCHG_SET,FADEIN_SET
	glb			NUM_SET,BG1CLAR_SET,NOW_DSP4
	glb			BGSAVE_SET,BGLOAD_SET,AREA_DATACNT,SUM_CHECK1			
	glb			NUMCHG,SUQARE_SET,SPDLOD_SET,SUM_CHECK
	glb			TRAG_SET2,TRAG_SET4,TRAG_SET6,DSFN_SET
	glb			TRAG_SET8,SUQARE_CK,TRAG_CK2,TRAG_CK4,CG1_SET
	glb			PRASUQ_SET,PALL_CKA,PRASUQ_SETC,PALL_CKC
	glb			BG2LOAD_SET,MPLA_SET,LOAD2_SUQ,LOAD2_TRG
	glb			LOAD2_TRG1,LOAD2_PALL,LOAD2_PALL1,CODE_SET
	glb			CODE_SET1,CODE_SET2,DISP_SET,LDPLC_SET,KASOL_FLASH1
;
	ext			ADD_UP,TYPE_SUB,select_code,set_code
	ext			PTANUM2,PTANUM3,S.L_PLACE1,speed_color
	ext			disk_file1,Trigger_sound_1
;-------------------------------------------------------
editer      sect    rel
			mem8
			idx8
;
;==========================================================
;*********************************************************
;			INITIAL ROUTINE
;*********************************************************
;==========================================================
;
;*****************************************
;			COLOR TENSOU
;****************************************
CG1_SET		equ		$
			idx16		        ;8bit mode.
			mem8
			rep		#00010000b
;
			lda		#00000000b	;BG1 color data.
			sta		CGadd

; 
			ldx		#0
loop4		lda		>7e3a80h,x
			sta		CGdata
			inx
        	lda     >7e3a80h,x
			sta     CGdata
			inx
			cpx		#200h
			bne		loop4
			
			idx8		        ;8bit mode.
			mem8
			sep		#00010000b
;
			rts

;************************************************
;			FADE IN SET
;************************************************
FADEIN_SET	equ		$
			lda		fade_flg
			inc		a
			sta		fade_flg
			cmp		#02
			bne		owari_020

;
			stz		fade_flg
			lda		blankck
			cmp		#0fh
			beq		owari_505
;
			inc		a		
			sta		blankck
owari_020	rts				
;
owari_505	ldx		#02
			stx		fade_mode
			rts	
;**************************************
;			NOW SAVE display
;**************************************
NOW_DSP4	equ		$
			lda		#01					;NMI disenable.
			sta		NMItimen
;----------------------------------
			idx16						;display timer.
			rep		#00010000b	
			ldx		#0
loop_29		inx
			cpx		#0f000h
			bne		loop_29
			idx8
			mem8
			sep		#00110000b
;
			ldx		#06					;display erase set.
			lda		#40h
loop_28		sta		msbdat,x
			inx
			lda		#55h
			sta     msbdat,x
			inx
			lda		#05
			sta		msbdat,x
;------------------------------------
			lda		#81h				;NMI enable.
			sta		NMItimen
;
			lda		#02					;mode set.
			sta		fade_mode
owari_30	rts
;
;**********************************************
;			DISK FILE NAME SET
;*********************************************
DSFN_SET	equ		$
			ldy		#8ah
			lda		map_number
			asl		a
			asl		a
			asl		a
			tax
loop_218	lda		disk_file1,x
			sta		oamdat,y
			inx
			iny
			iny
			iny
			iny
			cpy		#0a6h
			bne		loop_218
			rts

;=======================================================
;*******************************************************
;			MAIN ROUTINE (start display inichal set)
;*******************************************************
;=======================================================
;
;
;*********************************************
;			MAP CHANGE SET
;*********************************************
MAPCHG_SET	equ		$
;=========================================
;(AUTO SWICH SET)
			lda		button+1		;tenkey check.
			and		#00001100b
			beq		zcnt10			;push key? :no-->zcnt.
;-------------------------------
			lda		trgcnt			;push counter.
			beq		add			;0 ? :yes-->add1.
			clc
			adc		#01h
			cmp		#11h
			beq		sub10			;12 ? :yes-->sub15.
			sta		trgcnt
			rts
;--------------------------------
setbtn10	lda		button+1
			cmp		#08h
			beq		mapsbc
;
			cmp		#04h
			beq		mapadc
			rts	
;--------------------------------
add			lda		trgcnt			;counter +1 set.
			clc
			adc		#01h
			sta		trgcnt
			jmp		setbtn10
;
sub10		lda		#08h			;counter 10 set.
			sta		trgcnt
			jmp		setbtn10
;
zcnt10		stz		trgcnt			;counter zero set.
			rts
;=========================================
mapadc		lda		mode				;map select set.
			clc							;to 0 from 32.
			adc		#01
			cmp		#20h
			beq		map_z
			sta		mode
			rts
;------------------------------
mapsbc		lda		mode
			sec
			sbc		#01
			cmp		#0ffh
			beq		map_end
			sta		mode					
owari_42	rts
;
map_z		stz		mode
			rts
;
map_end		lda		#1fh
			sta		mode
			rts
;
;===================================================
;***********************************************
;			SUB SUB  ROUTINE	(edit subroutine) 
;***********************************************
;===================================================
;(AREA SET MODE)
;******************************************
;			SUQAARE SET	(00)
;******************************************
;
SUQARE_SET	equ		$		
			mem16
			rep		#00100000b			;wit counter check.
			ldx		arodcnt
			lda		pos				;(pos) is panel place.
			dec		a
			cpx		poscnt_x1
			beq		lthset
;
			inx
			stx		arodcnt
			sta		pos
;
			lda		#0001h				;buffer initial address set.
			sta		place_set			;(7f0000h)
;
			mem8
			sep		#00100000b
			rts
;
witsbc		lda		poscnt_x1		;one line check.(tate)
			cmp		#0
			beq		owari_961
;
			lda		arodcnt
			inc		a
			sta		arodcnt
			jmp		end_code

;----------------------------
lthset		mem8
			sep		#00100000b
			stz		poscnt_x1+1
			stz		arodcnt
;
			lda		lthcnt
			inc		a
			cmp		poscnt_y1
			beq		witsbc
;
end_code	ldx		lthcnt
			cpx		poscnt_y1			;lth counter chgeck.
			beq		owari_961
;
			mem16
			rep		#00100000b
			lda		pos
			clc
			adc		poscnt_x1
			sec	
			sbc		#40h
			sta		pos	
			inx
			stx		lthcnt
;
			lda		#0001h				;buffer initial address set.
			sta		place_set			;(7f0000h)
;
			mem8
			sep		#00100000b
			rts
;
owari_961	lda		#01
			sta		owari_flg
			stz     lthcnt
			rts
;*****************************************
;			TRIANGLE SET	(02)
;*****************************************
TRAG_SET2	equ		$
			lda		flg
			cmp		#01
			beq		setpos
			lda		poscnt_y1
			sec
			sbc		lengcnt
			sta		arodcnt
			lda		#01
			sta		flg
;
setpos		mem16
			rep		#00100000b			;wit counter check.
			ldx		arodcnt
			lda		pos				;(pos) is panel place.
			dec		a
			cpx		poscnt_y1
			beq		lthset2
;
			inx
			stx		arodcnt
			sta		pos
;
			lda		#0001h				;buffer initial address set.
			sta		place_set			;(7f0000h)
;
			mem8
			sep		#00100000b
			rts
;
witsbc2		lda		arodcnt
			inc		a
			sta		arodcnt
			jmp		end_code2

;----------------------------
lthset2		mem8
			sep		#00100000b
			lda		lengcnt
			inc		a
			sta		lengcnt			
			lda		poscnt_y1
			sec
			sbc		lengcnt
			sta		arodcnt
;
			lda		lthcnt
			inc		a
			cmp		poscnt_y1
			beq		witsbc2
;
end_code2	ldx		lthcnt
			cpx		poscnt_y1			;lth counter chgeck.
			beq		owari_963
;
			mem16
			rep		#00100000b
			lda		pos
			clc
			adc		lengcnt
			sec	
			sbc		#40h
			sta		pos	
			inx
			stx		lthcnt
;
			lda		#0001h				;buffer initial address set.
			sta		place_set			;(7f0000h)
;
			mem8
			sep		#00100000b
			rts
;
owari_963	lda		#01
			sta		owari_flg
			stz     lthcnt
			stz		arodcnt
			stz		lengcnt
			stz		flg
			rts
;*****************************************
;			TRIANGLE SET	(04)
;*****************************************
TRAG_SET4	equ		$
			lda		flg
			cmp		#01
			beq		setpos4
			lda		poscnt_y1
			sec
			sbc		lengcnt
			sta		arodcnt
			lda		#01
			sta		flg
;
setpos4		mem16
			rep		#00100000b			;wit counter check.
			ldx		arodcnt
			lda		pos				;(pos) is panel place.
			inc		a
			cpx		poscnt_y1
			beq		lthset4
;
			inx
			stx		arodcnt
			sta		pos
;
			lda		#0001h				;buffer initial address set.
			sta		place_set			;(7f0000h)
;
			mem8
			sep		#00100000b
			rts
;
witsbc4		lda		arodcnt
			inc		a
			sta		arodcnt
			jmp		end_code4

;----------------------------
lthset4		mem8
			sep		#00100000b
			lda		lengcnt
			inc		a
			sta		lengcnt			
			lda		poscnt_y1
			sec
			sbc		lengcnt
			sta		arodcnt
;
			lda		lthcnt
			inc		a
			cmp		poscnt_y1
			beq		witsbc4
;
end_code4	ldx		lthcnt
			cpx		poscnt_y1			;lth counter chgeck.
			beq		owari_964
;
			mem16
			rep		#00100000b
			lda		pos
			sec
			sbc		lengcnt
			sec	
			sbc		#40h
			sta		pos	
			inx
			stx		lthcnt
;
			lda		#0001h				;buffer initial address set.
			sta		place_set			;(7f0000h)
;
			mem8
			sep		#00100000b
			rts
;
owari_964	lda		#01
			sta		owari_flg
			stz     lthcnt
			stz		arodcnt
			stz		lengcnt
			stz		flg
			rts
;*****************************************
;			TRIANGLE SET	(06)
;*****************************************
TRAG_SET6	equ		$
			lda		flg
			cmp		#01
			beq		setpos6
;
			lda		poscnt_y1
			eor		#0ffh
			inc		a
			sta		poscnt_y1
;
			lda		poscnt_y1
			sec
			sbc		lengcnt
			sta		arodcnt
;
			lda		#01
			sta		flg
;
setpos6		mem16
			rep		#00100000b			;wit counter check.
			ldx		arodcnt
			lda		pos				;(pos) is panel place.
			inc		a
			cpx		poscnt_y1
			beq		lthset6
;
			inx
			stx		arodcnt
			sta		pos
;
			lda		#0001h				;buffer initial address set.
			sta		place_set			;(7f0000h)
;
			mem8
			sep		#00100000b
			rts
;
witsbc6		lda		arodcnt
			inc		a
			sta		arodcnt
			jmp		end_code6

;----------------------------
lthset6		mem8
			sep		#00100000b
			lda		lengcnt
			inc		a
			sta		lengcnt			
			lda		poscnt_y1
			sec
			sbc		lengcnt
			sta		arodcnt
;
			lda		lthcnt
			inc		a
			cmp		poscnt_y1
			beq		witsbc6
;
end_code6	ldx		lthcnt
			cpx		poscnt_y1			;lth counter chgeck.
			beq		owari_966
;
			mem16
			rep		#00100000b
			lda		pos
			sec
			sbc		lengcnt
			clc	
			adc		#40h
			sta		pos	
			inx
			stx		lthcnt
;
			lda		#0001h				;buffer initial address set.
			sta		place_set			;(7f0000h)
;
			mem8
			sep		#00100000b
			rts
;
owari_966	lda		#01
			sta		owari_flg
			stz     lthcnt
			stz		arodcnt
			stz		lengcnt
			stz		flg
			rts
;*****************************************
;			TRIANGLE SET	(08)
;*****************************************
TRAG_SET8	equ		$
			lda		flg
			cmp		#01
			beq		setpos8
;
			lda		poscnt_y1
			eor		#0ffh
			inc		a
			sta		poscnt_y1
;
			lda		poscnt_y1
			sec
			sbc		lengcnt
			sta		arodcnt
;
			lda		#01
			sta		flg
;
setpos8		mem16
			rep		#00100000b			;wit counter check.
			ldx		arodcnt
			lda		pos				;(pos) is panel place.
			dec		a
			cpx		poscnt_y1
			beq		lthset8
;
			inx
			stx		arodcnt
			sta		pos
;
			lda		#0001h				;buffer initial address set.
			sta		place_set			;(7f0000h)
;
			mem8
			sep		#00100000b
			rts
;
witsbc8		lda		arodcnt
			inc		a
			sta		arodcnt
			jmp		end_code8

;----------------------------
lthset8		mem8
			sep		#00100000b
			lda		lengcnt
			inc		a
			sta		lengcnt			
			lda		poscnt_y1
			sec
			sbc		lengcnt
			sta		arodcnt
;
			lda		lthcnt
			inc		a
			cmp		poscnt_y1
			beq		witsbc8
;
end_code8	ldx		lthcnt
			cpx		poscnt_y1			;lth counter chgeck.
			beq		owari_968
;
			mem16
			rep		#00100000b
			lda		pos
			clc
			adc		lengcnt
			clc	
			adc		#40h
			sta		pos	
			inx
			stx		lthcnt
;
			lda		#0001h				;buffer initial address set.
			sta		place_set			;(7f0000h)
;
			mem8
			sep		#00100000b
			rts
;
owari_968	lda		#01
			sta		owari_flg
			stz     lthcnt
			stz		arodcnt
			stz		lengcnt
			stz		flg
			rts
;
;********************************************
;			PRALLEL	SQUARE SET	(0a)
;********************************************
PRASUQ_SET	equ		$
			lda		flg
			bne		setpos0a
;
			lda		#0
			sta		arodcnt
;
			lda		poscnt_x1
			eor		#0ffh
			inc		a
			sta		poscnt_x1
;
			lda		poscnt_y1
			sec
			sbc		poscnt_x1
			sta		poscnt_y1
;
			asl		a
			tax
			mem16
			rep		#00100000b
			lda		ADD_UP,x
			sta		blockcnt	
			mem8
			sep		#00100000b
;
			lda		#01
			sta		flg
;-------------------------------
setpos0a	mem16
			rep		#00100000b			;lth counter check.
			ldx		arodcnt
			lda		pos				;(pos) is panel place.
			sec
			sbc		#40h
			cpx		poscnt_y1
			beq		lthset0a
;
			inx
			stx		arodcnt
			sta		pos
;
			lda		#0001h				;buffer initial address set.
			sta		place_set			;(7f0000h)
;
			mem8
			sep		#00100000b
			rts
;
witsbca		lda		arodcnt
			inc		a
			sta		arodcnt
			jmp		end_codea
;----------------------------
lthset0a	mem8
			sep		#00100000b
			stz		arodcnt
;
			lda		lthcnt
			inc		a
			cmp		poscnt_x1
			beq		witsbca
;	
end_codea	ldx		lthcnt
			cpx		poscnt_x1					;wit counter chgeck.
			beq		owari_96a
;
			mem16
			rep		#00100000b
;
			lda		pos
			clc
			adc		blockcnt
			sec	
			sbc		#40h
			sta		pos
			inx
			stx		lthcnt
;
			lda		#0001h				;buffer initial address set.
			sta		place_set			;(7f0000h)
;
			mem8
			sep		#00100000b
			rts
;
owari_96a	lda		#01
			sta		owari_flg
			stz     lthcnt
			stz		arodcnt
			stz		lengcnt
			stz		flg
			rts
;********************************************
;			PRALLEL	SQUARE SET	(0c)
;********************************************
PRASUQ_SETC	equ		$
			lda		flg
			bne		setpos0c
;
			lda		#0
			sta		arodcnt
;
			lda		poscnt_y1
			sec
			sbc		poscnt_x1
			sta		poscnt_y1
;
			asl		a
			tax
			mem16
			rep		#00100000b
			lda		ADD_UP,x
			sta		blockcnt	
			mem8
			sep		#00100000b
;
			lda		#01
			sta		flg
;-------------------------------
setpos0c	mem16
			rep		#00100000b			;lth counter check.
			ldx		arodcnt
			lda		pos				;(pos) is panel place.
			sec
			sbc		#40h
			cpx		poscnt_y1
			beq		lthset0c
;
			inx
			stx		arodcnt
			sta		pos
;
			lda		#0001h				;buffer initial address set.
			sta		place_set			;(7f0000h)
;
			mem8
			sep		#00100000b
			rts
;
witsbcc		lda		arodcnt
			inc		a
			sta		arodcnt
			jmp		end_codec

;----------------------------
lthset0c	mem8
			sep		#00100000b
			stz		arodcnt	
			ldx		lthcnt
			cpx		poscnt_x1					;wit counter chgeck.
			beq		owari_96c
;
			lda		lthcnt
			inc		a
			cmp		poscnt_x1
			beq		witsbcc
;
end_codec	mem16
			rep		#00100000b
;
			lda		pos
			clc
			adc		blockcnt
			sec	
			sbc		#42h
			sta		pos
			inx
			stx		lthcnt
;
			lda		#0001h				;buffer initial address set.
			sta		place_set			;(7f0000h)
;
			mem8
			sep		#00100000b
			rts
;
owari_96c	lda		#01
			sta		owari_flg
			stz     lthcnt
			stz		arodcnt
			stz		lengcnt
			stz		flg
			rts
			
			


;********************************************
;			ERROR CHECK(suqare)	
;********************************************
SUQARE_CK	equ		$
			lda		poscnt_x1
			bmi		noset
			lda		poscnt_y1
			bmi		noset
			rts
;
noset		lda		#01
			sta		owari_flg
			rts
;
;*****************************************
;			ERROR CHECK(triangle 02)
;*****************************************
TRAG_CK2	equ		$
			lda		poscnt_x1
			bne		noset1
			lda		poscnt_y1
			bmi		noset1
			rts
;
noset1		lda		#01
			sta		owari_flg
			rts
;
;*****************************************
;			ERROR CHECK(triangle 04)
;*****************************************
TRAG_CK4	equ		$
			lda		poscnt_x1
			bne		noset2
			lda		poscnt_y1
			bpl		noset2
			rts
;
noset2		lda		#01
			sta		owari_flg
			rts
;
;*****************************************
;			ERROR CHECK(pallarel)
;*****************************************
PALL_CKA	equ		$
			lda		poscnt_y1
			beq		noseta
;
			lda		poscnt_y1
			bmi		noseta
			lda		poscnt_x1
			bpl		noseta
			rts
;
noseta		lda		#01
			sta		owari_flg
			rts
;*****************************************
;			ERROR CHECK(pallarel 0c)
;*****************************************
PALL_CKC	equ		$
			lda		poscnt_y1
			beq		nosetc
;
			lda		poscnt_y1
			bmi		nosetc
			lda		poscnt_x1
			bmi		nosetc
			rts
;
nosetc		lda		#01
			sta		owari_flg
			rts
;

;
;===============================================
;**********************************************
;			MODE B SET ROUTINE		(select flag = #01h)
;**********************************************
;===============================================
;(CODE SET)
;***********************************
;			NUMBER DISPLAY SET
;***********************************
NUM_SET		equ		$
;---------------------------------
			lda		modeflg
			cmp		#01
			beq     owari_914
;------------------------------------
;			lda		slectflg		;modeB?:yes-->owari_14
;			cmp		#0
;			beq		owari_914
;=========================================
;(AUTO SWICH SET)
;
			lda		button+1		;tenkey check.
			and		#11000000b
			beq		zcnt1			;push key? :no-->zcnt.
;--------------------------------
			lda		trgcnt2			;push counter.
			beq		add2			;0 ? :yes-->add1.
			clc
			adc		#01h
			cmp		#16h
			beq		sub2			;12 ? :yes-->sub15.
			sta		trgcnt2
owari_914	rts
;--------------------------------
setbtn2		mem16
			rep		#00100000b
			lda		#2eh
			JSL		>Trigger_sound_1
			mem8
			sep		#00100000b
;		
			lda		button+1
			cmp		#40h
			beq		sbcnum
;
			cmp		#80h
			beq		adcnum
			rts
;-------------------------------
add2		lda		trgcnt2			;counter +1 set.
			clc
			adc		#01h
			sta		trgcnt2
			jmp		setbtn2
;
sub2		lda		#10h			;counter 10 set.
			sta		trgcnt2
			jmp		setbtn2
;
zcnt1		stz		trgcnt2		;counter zero set.
;			stz		sclcnt
			rts
;==============================================
adcnum		lda		numset			;code number set.
			inc		a
			inc		a
			cmp		#0eh
			beq		line_set
			cmp		#01h
			beq		setff
			sta		numset
			jmp		numdsp
;-----------------------------------
setff		lda		#0
			sta		numset
			jmp		numdsp
;
set7f		lda		#0ch
			sta		numset
			jmp		numdsp
;---------------------------------
line_set	lda		#0ffh
			sta		numset
			jmp     numdsp
;
;-----------------------------------
sbcnum		lda		numset
			dec		a
			dec		a
			cmp		#0feh
			beq		line_set
			cmp		#0fdh
			beq		set7f
			sta		numset
;------------------------------------------------
numdsp		mem16
			rep		#00100000b
			lda		#0001h				;buffer initial address set.
			sta		place_set			;(7f0000h)
;-----------------------------
			lda		poscnt_y			;2chr*2chr place set.
			asl		a
			asl		a
			asl		a
			asl		a
			asl		a
			asl		a
			sta     pos
;
			lda		poscnt_x
			eor		pos
			sta		pos
			mem8
			sep		#00100000b
;----------------------------
NUMCHG		idx16
			rep		#00010000b
			ldx		#0					;buffer address to set.
loop_518	ldy		#0					;(7f0000h)
loop_318	cpx		pos
			beq		owari_316
			inx
;
			mem16
			rep		#00100000b
			lda		place_set
			clc
			adc		#02
			sta		place_set
			mem8
			sep		#00100000b
;
			iny
			cpy		#40h
			beq		adc400
			jmp		loop_318
;
adc400		mem16
			rep		#00100000b
			lda		place_set
			clc
			adc		#80h
			sta		place_set
			mem8
			sep		#00100000b
			jmp		loop_518
;
;--------------------------------------
setcode		dex
			dex
			dex
			jmp		setcode1
;---------------------------------------
owari_316	mem8
			idx8
			sep		#00110000b
;----------------------------------
			idx16					;(same address check &
			rep		#00010000b		;flag set)
			ldx		#02
loop_212	lda		1400h,x
			inx
			cmp		poscnt_x
			bne		adcx1			
;
			lda		1400h,x
			cmp		poscnt_y
			beq		setcode	
;
adcx1		inx
			inx
			inx
			cpx		#202h
			bne		loop_212
			idx8
			sep		#00010000b
;----------------------------------------
			lda		codecnt		;END check.
			cmp		#80h
			beq		owari_323
;----------------------------------------
			idx16					;7e8000h data set.
			rep		#00010000b
			ldx		#0				;7e8000h flag set.
loop_435	lda		1400h,x
			inx
			inx
			inx
			inx
;			
			cpx		#204h
			beq		owari_930
			cmp		#0
			bne		loop_435
;------------------------------------------
;
			lda		codecnt		;(codecnt) is
			inc		a				;code kosuu.
			sta		codecnt

			dex
			dex
			dex
			dex
;
setcode1	lda		#01
			sta		1400h,x
			inx
;
			lda		numset
			cmp		#0ffh
			beq		set_ff1
;
			sta		1400h,x		;code set.
			inx
;
			lda		poscnt_x		;X,Y set.
			sta		1400h,x
			inx
			lda		poscnt_y
			sta		1400h,x
;
set_cnt		idx8
			mem8
			sep		#00110000b
;------------------------------------
nocode_set	lda		numset			;code number display set.
			and		#00001111b
			tax
			lda     PTANUM,x
;
			idx16
			rep		#00010000b
			ldx		place_set
			sta		>7f0000h,x
			idx8
			sep		#00010000b
;
			lda		numset
			and		#11110000b
			lsr		a
			lsr		a
			lsr		a
			lsr		a
			tax
			lda     PTANUM1,x		
;
			idx16
			rep		#00010000b
			ldx		place_set
			dex
			sta		>7f0000h,x
			idx8
			sep		#00010000b

owari_323	rts
;-------------------------------------
set_ff1		idx16
			ldy		#0
			lda		#0
			dex
loop_987	sta		1400h,x
			inx
			iny
			cpy		#04
			bne		loop_987			
			idx8
			sep		#00010000b
;
			lda		codecnt		;codecnt dec.
			dec		a
			sta		codecnt
			jmp		nocode_set
;
owari_930	idx8
			mem8
			sep		#00110000b
			rts
;***********************************************
;			BG1,2 SAVE LOAD SET(mode flag=#01h)
;***********************************************
;===============================================
;		 
;***************************************
;			BG1 SAVE SET
;***************************************
BGSAVE_SET	equ		$
			lda		s.l_set
			asl		a
			tay
			idx16				
			mem16
			rep		#00110000b
;
			lda		S.L_PLACE1,y
			sta		s.l_bup
			clc
			adc		#280h
			tay
;
;--------------------------------
			mem8				  ;#ffh set to 70bank.
			sep		#00100000b
			tay
			ldx		#0
			lda		#0ffh
loop_129	sta		[addr],y
			inx
			iny
			cpx		#180h
			bne		loop_129
;---------------------------------
			mem16
			rep		#00110000b
;
			lda		s.l_bup			
			clc
			adc		#280h
			tay
;
			ldx		#0				;from 7e8600h to 70bank 
loop_850	lda		1a00h,x
			sta		[addr],y
			iny
			iny
			iny
			inx
			inx
			cpx		#100h
			bne		loop_850		
;
			lda		s.l_bup			
			clc
			adc		#280h
			tay
			iny
			iny
;
			mem8
			sep		#00100000b
;
			ldx		#0
loop_080	lda		1b00h,x
			sta		[addr],y
			inx
			iny
			iny
			iny
			cpx		#80h
			bne		loop_080
;
			idx8
			mem8
			sep		#00110000b
			rts
;
;****************************************
;			BG1 LOAD SET
;****************************************
BGLOAD_SET	equ		$
			idx16					;(7f0000h initial set)
			mem8
			rep		#00010000b
			ldx		#0
loop_101	lda		>7f8000h,x
			sta		>7f4000h,x
			inx
			cpx		#4000h
			bne		loop_101
			idx8
			sep		#00010000b
			
;------------------------------------			
			lda		s.l_set
			sec
			sbc		#02
			asl		a
			tay
;
;			idx16				;(from 70BANK to 7E8600)
			mem16
			rep		#00100000b
			lda		S.L_PLACE1,y
			sta		s.l_bup
			clc
			adc		#280h
			idx16
			rep		#00010000b
			tay
;
			ldx		#0
loop_750	lda		[<addr],y
			cmp		#0ffffh
			beq		setvram
;
			sta		1a00h,x
			iny
			iny
			iny
			inx
			inx
			lda		setcnt
			inc		a
			sta		setcnt
			cpx		#100h
			bne		loop_750		
			idx8
			mem8
			sep		#00110000b
;-----------------------------------
;-------------------------------------
setvram		stz		chgcnt			;(from 70BANK to7f4000h)
			mem16
			idx16
			rep		#00110000b

			lda		s.l_bup
			clc
			adc		#280h
			tay
;
			mem8
			sep		#00100000b

;-----------------------------------------
back		idx16				;speed BG & color set.
			mem8
			lda		[<addr],y
			cmp		#0ffh
			beq		owari_99
			sta		vraddr
			iny
			lda		[<addr],y
			sta		vradd+1
			iny
			iny
			phy
;
			mem16
			rep		#00100000b
			lda		vradd
			lsr		a
			eor		vraddr
			mem8
			sep		#00100000b
			tax
;
			ldy		s.l_bup
			lda		1b00h,y		;;speed color set.
			iny
			sty		s.l_bup
			pha
			lda		#0
			xba
			lda		s.l_bup
			pla
			tay
			lda     speed_color,y
			sta		>7f4000h,x
;
			ply
			lda		chgcnt
			inc		a
			cmp		#80h
			beq		owari_99
			sta		chgcnt
			jmp		back			
;
owari_99	idx8		       		 ;8bit mode.
			mem8
			sep		#00110000b
			stz		s.l_bup
;------------------------------------
			lda		chgcnt		;tergetdata*3bytes
			sta		4202h
			lda		#03
			sta		4203h
			nop
			nop
			nop
			nop
;------------------------------------
			ldx		#0cah
			lda		4217h			;terget buffer datacount set.
			sta		oamdat,x
;
			ldx		#0ceh
			lda		4216h
			dec		a
			and		#0f0h
			lsr		a
			lsr		a
			lsr		a
			lsr		a
			sta		oamdat,x
;
			ldx		#0d2h
			lda		4216h
			dec		a
			and		#0fh
			sta		oamdat,x
			stz		chgcnt
;         
;----------------------------------------------------
owari_535	idx8
			sep		#00010000b
			rts
;
;*********************************************
;			SPEED LOAD SET
;*********************************************
;								(From 70bank to 7e8800h)
SPDLOD_SET	equ		$
			mem16
			rep		#00100000b
			lda		s.l_bup
			clc
			adc		#280h
			mem8
			sep		#00100000b
;
			idx16
			rep		#00010000b
;
			tay
;
			iny
			iny
			ldx		#0
loop_070	lda		[<addr],y
			sta		1b00h,x
			iny
			iny
			iny
			inx
			cpx		#80h
			bne		loop_070
			idx8
			sep		#00010000b
			rts
;**********************************************
;			BG2 LOAD SET
;**********************************************
BG2LOAD_SET	equ		$
			idx16					;(70bank data read)
			mem16
			rep		#00110000b
			stz		pointcnt
			lda		pointcnt		
			clc
			adc		s.l_bup
			sta		pointcnt
			mem8
			sep		#00100000b
			stz		codecnt
;
anumset3	idx16					;code number check & set.
			rep		#00010000b
			ldy     pointcnt
			lda		[<addr],y
;
			cmp		#0ffh
			beq		owari_535
;
			sta		subnum
			iny
			iny
			iny		
;----------------------------------
;			idx8					;(select [suqare plaller triangle]
;			sep		#00010000b		; subroutine)
			mem16
			rep		#00100000b
			and		#00ffh
			tax
			mem8
			sep		#00100000b
			JSR		(!select_code,x)
;
;----------------------------------
anumset4	JSR		MPLA_SET		;7f0000h address set.
			JSR		DISP_SET		;display set.
;----------------------------------
			ldx		subnum			;subroutine set.
			JSR		(!TYPE_SUB,x)
			lda		owari_flg
			cmp		#01
			beq		owari_969
			jmp		anumset4	
;------------------------------	
owari_969	mem8					;(BUFFER SET TO 7e8200)
			sep		#00100000b
			lda		subnum			;code set routine.
			tax
			JSR		(!set_code,x)
;
			lda		areacnt1		;code number set.
			pha
			lda		subnum
			sta		areacnt1
;
			JSR		MPLA_SET
			JSR		DISP_SET
;
			stz		owari_flg
			lda		areacnt1		;area number set.
			pla
			inc		a
			sta		areacnt1
			sta		areacnt
;
			lda		codecnt
			inc		a
			cmp		#80h
			beq		owari_111
			sta		codecnt
			jmp		anumset3
;
owari_111	idx8
			mem8
			sep		#00110000b
			rts
;*******************************************
;			AREA&TERGET  DATA BUFFER COUNT
;*******************************************
AREA_DATACNT	equ		$
			ldx		#0bah
			lda		pointcnt+1			;area buffer datacount set.
			sta		oamdat,x
;
			ldx		#0beh
			lda		pointcnt
			dec		a
			and		#0f0h
			lsr		a
			lsr		a
			lsr		a
			lsr		a
			sta		oamdat,x
;
			ldx		#0c2h
			lda		pointcnt
			dec		a
			and		#0fh
			sta		oamdat,x
;------------------------------------
;			lda		chgcnt		;tergetdata*3bytes
;			sta		4202h
;			lda		#03
;			sta		4203h
;			nop
;			nop
;			nop
;			nop
;------------------------------------
;			ldx		#0cah
;			lda		4217h			;terget buffer datacount set.
;			sta		oamdat,x
;
;			ldx		#0ceh
;			lda		4216h
;			dec		a
;			and		#0f0h
;			lsr		a
;			lsr		a
;			lsr		a
;			lsr		a
;			sta		oamdat,x
;
;			ldx		#0d2h
;			lda		4216h
;			dec		a
;			and		#0fh
;			sta		oamdat,x

			rts
;**********************************************
;			CLARE SET		(BG1)
;**********************************************
BG1CLAR_SET	equ		$
			ldx		#0				;7e8600h initial set (ff)
			lda		#0ffh
loop_h26	sta		1a00h,x
			inx
			cpx		#0
			bne		loop_h26
;
			ldx		#0				;1a00h initial set (00)
			lda		#03
loop_H18	sta		1b00h,x
			inx
			cpx		#0
			bne		loop_H18

;-------------------------------
			idx16					;(7f0000h initial set)
			mem8
			rep		#00010000b
			ldx		#0
loop_121	lda		>7f8000h,x
			sta		>7f4000h,x
			inx
			cpx		#4000h
			bne		loop_121
;------------------------------------			
			rts
;
;==================================================
;*********************************************
;			S.L SUB SUB ROUTINE.
;*********************************************
;==================================================

;****************************************
;			BG2 LOAD SUB
;****************************************
;(sub routine)
;
MPLA_SET	equ		$
			lda		pos			;(buffer address to set)
			sta		Wrmpya			;(7f0000h)
			lda		#02
			sta		Wrmpyb
;
			nop
			nop
			nop
			nop
;
			lda		_Rdmpyl
			sta		place_set
			lda		_Rdmpyh
			sta		place_set+1
;
			mem16					;+80h
			rep		#00100000b
			lda		pos
			and		#00c0h
			asl		a
			clc
			adc		place_set
			inc		a
			sta		place_set
;
			lda		pos			;+100h
			and		#0f00h
			asl		a
			asl		a
			clc
			adc		place_set
			sta		place_set
;
			mem8
			sep		#00100000b
			rts
;
;*************************************
;		BG2 LOAD SUB(display)
;*************************************
DISP_SET	equ		$
			mem8
			idx8
			sep		#00110000b
;
			lda		areacnt1			;area number display set.
			and		#00001111b			;(areacnt) is 
			tax							;area number.
			lda     PTANUM2,x
;
			idx16
			rep		#00010000b
			ldx		place_set
			sta		>7f0000h,x
			idx8
			sep		#00010000b
;
			lda		areacnt1
			and		#11110000b
			lsr		a
			lsr		a
			lsr		a
			lsr		a
			tax
			lda     PTANUM3,x		
;
			idx16
			rep		#00010000b
			ldx		place_set
			dex
			sta		>7f0000h,x
			idx8
			sep		#00010000b

			rts
;************************************
;			BG2 LOAD SUQARE
;************************************
LOAD2_SUQ	equ		$
			idx16
			rep		#00010000b
			lda		[addr],y
			dec		a
			sta		poscnt_x1
			iny
;
			lda		[addr],y
			dec		a
			sta		poscnt_y1
			iny
			sty		pointcnt
;
			dey
			dey
			dey
			dey	
			lda		[addr],y
			clc
			adc		poscnt_x1
			sta		poscnt_x2
			iny
			lda		[addr],y
			clc
			adc		poscnt_y1
			sta		poscnt_y2
;-------------------------------
LDPLC_SET	mem16
			rep		#00100000b
			lda		#0001h				;buffer initial address set.
			sta		place_set			;(7f0000h)
;
			lda		poscnt_y2			;2chr*2chr place set.
			asl		a
			asl		a
			asl		a
			asl		a
			asl		a
			asl		a
			sta     pos
;
			lda		poscnt_x2
			eor		pos
			sta		pos
			mem8
			sep		#00100000b
			rts
;************************************
;			BG2 LOAD TRIANGLE(02,04)
;************************************
LOAD2_TRG	equ		$
			idx16					;positionset.
			rep		#00010000b
			stz		poscnt_x1
;
			lda		[addr],y
			dec		a
			sta		poscnt_y1
			iny
			sty		pointcnt
;
			dey
			dey
			dey	
			lda		[addr],y
			clc
			adc		poscnt_x1
			sta		poscnt_x2
			iny
			lda		[addr],y
			clc
			adc		poscnt_y1
			sta		poscnt_y2
;-------------------------------
			JSR		LDPLC_SET
			rts
;************************************
;			BG2 LOAD TRIANGLE(06,08)
;************************************
LOAD2_TRG1	equ		$				;positionset.
			idx16
			rep		#00010000b
			stz		poscnt_x1
;
			lda		[addr],y
			dec		a
			sta		poscnt_y1
			iny
			sty		pointcnt
;
			dey
			dey
			dey	
			lda		[addr],y
			clc
			adc		poscnt_x1
			sta		poscnt_x2
			iny
			lda		[addr],y
			sec
			sbc		poscnt_y1
			sta		poscnt_y2
;
			lda		poscnt_y1
			eor		#0ffh
			inc		a
			sta		poscnt_y1
;-------------------------------
			JSR		LDPLC_SET
			rts
;************************************
;			BG2 LOAD PALALLER(0a)
;************************************
LOAD2_PALL	equ		$			;positionset.
			idx16
			rep		#00010000b
			lda		[addr],y
			dec		a
			sta		poscnt_x1
			iny
;
			lda		[addr],y
			dec		a
			sta		poscnt_y2
			iny
			sty		pointcnt
;
			dey
			dey
			dey
;
			lda		[addr],y
			sta		poscnt_y1
			dey
;
			lda     [addr],y
			sec
			sbc		poscnt_x1
			sta		poscnt_x2
			iny
;
			lda		[addr],y
			clc
			adc		poscnt_y2
			clc
			adc		poscnt_x1
			sta		poscnt_y2
;
			sec
			sbc		poscnt_y1
			sta     poscnt_y1
;		
			lda		poscnt_x1
			eor		#0ffh
			inc		a
			sta		poscnt_x1
;-------------------------------
			JSR		LDPLC_SET
			rts
;************************************
;			BG2 LOAD PALALLER(0c)
;************************************	
LOAD2_PALL1	equ		$				;positionset.
			idx16
			rep		#00010000b
			lda		[addr],y
			dec		a
			sta		poscnt_x1
			iny
;
			lda		[addr],y
			dec		a
			sta		poscnt_y2
			iny
			sty		pointcnt
;
			dey
			dey
			dey

			lda		[addr],y
			sta		poscnt_y1
			dey
;
			lda     [addr],y
			clc
			adc		poscnt_x1
			sta		poscnt_x2
			iny

;
			lda		[addr],y
			clc
			adc		poscnt_y2
			clc
			adc		poscnt_x1
			sta		poscnt_y2
;
			sec
			sbc		poscnt_y1
			sta		poscnt_y1
;-------------------------------
			JSR		LDPLC_SET
			rts
;
;***********************************
;			CODE SET POSITION
;***********************************
CODE_SET	equ		$				;code set position.
			mem16
			rep		#00100000b
			lda		pos
			dec		a
			sta		pos
			mem8
			sep		#00100000b		
			rts
;***********************************
;			CODE SET POSITION
;***********************************
CODE_SET1	equ		$				;code set position.
			mem16
			rep		#00100000b
			lda		pos
			inc		a
			sta		pos
			mem8
			sep		#00100000b		
			rts
;***********************************
;			CODE SET POSITION
;***********************************
CODE_SET2	equ		$				;code set position.
			mem16
			rep		#00100000b
			lda		pos
			sec
			sbc		#40h
			sta		pos
			mem8
			sep		#00100000b		
			rts
;=================================================
;*************************************************
;			SUM CHECK ROUTINE
;*************************************************
;=================================================
SUM_CHECK	equ		$			;(WHEN SAVE SUMCHECK)
			mem16
			idx16
			rep		#00110000b
;-----------------------------------------
;(BG SUM CHECK)
			lda		#0
			sta		>700ffeh
			ldx		#0
loop_968	lda		>701000h,x
			inx
			inx
			cmp		#0ffffh
			beq		offset_set		
;
			clc		
			adc		>700ffeh
			sta		>700ffeh
offset_set	cpx		#1000h
			bne		loop_968
;
;-----------------------------------------
;(RUN SUM CHECK)
			ldx		#0
loop_928	lda		>702000h,x
			inx
			inx
			cmp		#0ffffh
			beq		offset_set1		
;
			clc		
			adc		>700ffeh
			sta		>700ffeh
offset_set1	cpx		#6000h
			bne		loop_928
;-----------------------------------------
			mem8
			idx8
			sep		#00110000b
			rts
;********************************************************
SUM_CHECK1	equ		$			;(WHEN INICTIAL SUMCHECK[RUNEDITER])
			mem16
			idx16
			rep		#00110000b
;-----------------------------------------
;(BG SUM CHECK)
			stz		sum_data
			ldx		#0
loop_9681	lda		>701000h,x
			inx
			inx
			cmp		#0ffffh
			beq		offset_set2		
;
			clc		
			adc		sum_data
			sta		sum_data		
offset_set2	cpx		#1000h
			bne		loop_9681
;
;-----------------------------------------
;(RUN SUM CHECK)
			ldx		#0
loop_9281	lda		>702000h,x
			inx
			inx
			cmp		#0ffffh
			beq		offset_set3		
;
			clc		
			adc		sum_data
			sta		sum_data		
offset_set3	cpx		#6000h
			bne		loop_9281
;
			lda		sum_data
			cmp		>700ffeh
			bne		set_mess
;-----------------------------------------
			mem8
			idx8
			sep		#00110000b
			ldx		#0dh
			lda     #54h
			sta		msbdat,x
			lda     #55h
			inx
			sta     msbdat,x
			inx
			sta		msbdat,x
			rts
;
set_mess	equ		$				;ram erooer display set.
			mem8
			idx8
			sep		#00110000b
;
			ldx		#0dh
			stz		msbdat,x
			inx
			stz     msbdat,x
			lda		#54h
			inx
			sta		msbdat,x
			rts
;
;***************************************
;			KASOL FLASH
;***************************************
KASOL_FLASH1	equ		$
			lda		flash_flg1
			cmp		#08h
			beq		flash_on
;
			inc		a
			sta		flash_flg1
;
			ldx		#0d7h			;on
			lda		#2ah
loop_930	sta		oamdat,x
			inx
			inx
			inx
			inx
			cpx		#0f7h
			bne		loop_930
;
			idx16
			rep		#00010000b
			ldx		#0fbh			;on
			lda		#2ah
loop_934	sta		oamdat,x
			inx
			inx
			inx
			inx
			cpx		#011bh
			bne		loop_934
			idx8
			sep		#00010000b
;
			rts
;---------------------------------------
flash_on	stz		flash_flg1	 	;off
;
			ldx		#0d7h
			lda		#24h
loop_M5		sta		oamdat,x
			inx
			inx
			inx
			inx
			cpx		#0f7h
			bne		loop_M5
;
			idx16
			rep		#00010000b
			ldx		#0fbh			;on
			lda		#24h
loop_935	sta		oamdat,x
			inx
			inx
			inx
			inx
			cpx		#011bh
			bne		loop_935
			idx8
			sep		#00010000b
;

			rts








			END
