*******************************************************************************
* main.s 7.0.10
*******************************************************************************
* INFO	main lp:
*	 0. gets nxt part init adr
*	 1. if none goes to .7
*	 2. exes part init
*	 3. if retcode (ccr) = eq  goes to 6., else 4.
*	 4. exes part body
*	 5. rpts 4. until retcode (ccr) = eq
*	 6. exes part clnup and rpts from 0.
*	 7. end
* NOTE	- body adr can be fnd/chgd at (4,a5)
*	- RMB = pause part
*	- RMB+LMB = skp part
*******************************************************************************

	machine	68020

	include	INCLUDES:libraries/tcs.i
	include	INCLUDES:libraries/tcs_lib.i
	include	macros.i

	include	p0_defs.i
	include	p1_defs.i
	include	p2_defs.i
	include	p3_defs.i
	include	p4_defs.i
	include	p5_defs.i



*******************************************************************************

	code

	bsr	init	;gnrl inits
	beq.s	.exit	;if failed...
	lea.l	parts,a5

.PartInit	move.l	(a5),d0	;get part init code adr
	beq.s	.exit	;if demo over...
	clr.l	PartCtr	;clr calls #
	jsr	(d0.l)	;exe part init
	beq.s	.PartClnUp	;if err...

.PartBody	jsr	([4.w,a5])	;exe part body
	beq.s	.PartClnUp	;if over...
	addq.l	#1,PartCtr	;inc calls #
.pause	btst.b	#2,$dff016
	bne.s	.PartBody	;if ~RMB...
	btst.b	#6,$bfe001
	bne.s	.pause	;if ~(LMB&RMB)...

.PartClnUp	btst.b	#2,$dff016
	beq.s	.PartClnUp	;wt RMB rls
	jsr	([8.w,a5])	;exe part clnup
	adda.l	#12,a5
	bra.s	.PartInit	;nxt part

.exit	bsr	ClnUp
	rts



*******************************************************************************

	include	p0_cod.i
	include	p1_cod.i
	include	p2_cod.i
	include	p3_cod.i
	include	p4_cod.i
	include	p5_cod.i

	include	misc.i
	include	dat.i

	include	p0_dat.i
	include	p1_dat.i
	include	p2_dat.i
	include	p3_dat.i
	include	p4_dat.i
	include	p5_dat.i
