
		BRA		Start
		
Version:	DC.B	"$VER: COLOUR 1.0",0

		EVEN


	;Store Parameter Info
Start:	Move.l	D0,Parm_Len
		Move.l	A0,Parm_Ptr

	;Open dos.library
		Move.l	4.w,A6
		Lea	DosName,A1
		Jsr	-408(A6)
		Move.l	D0,DosBase

	;Get standard Output
		Move.l	D0,A6
		Jsr	-60(A6)
		Move.l	D0,OutHand

	;Check for No Parameters
		Subq.l	#1,Parm_Len
		Beq	Syntax

	;Check for Trailing Spaces
		Move.l	Parm_Ptr,A0
		Move.l	Parm_Len,D0
		Subq.l	#1,D0
Check_Again:	Cmpi.b	#' ',(A0,D0)
		Bne	No_Space
		Subq.l	#1,D0
		Bra.s	Check_Again
No_Space:
		Addq.l	#1,D0
		Move.l	D0,Parm_Len

	;Check Parameters
		Move.l	Parm_Len,D0
		Subq.l	#1,D0
		Beq	Check_one
		Subq.l	#2,D0
		Beq	Check_Three
		Bra	Syntax

Check_Three:
	;Check that first character is '0','1','2','3','4','5','6' or '7'
		Cmpi.b	#'8',(A0)
		Bcc	Syntax
		Cmpi.b	#'0',(A0)
		Bcs	Syntax

	;Check that middle character is a comma
	    Cmpi.b	#',',1(A0)
		Bne	Syntax

	;Check that Third character is '0','1','2','3','4','5','6' or '7'
		Cmpi.b	#'8',2(A0)
		Bcc	Syntax
		Cmpi.b	#'0',2(A0)
		Bcs	Syntax

	;Store the colours
		Move.b	2(A0),Paper3
		Move.b	(A0),Ink3

	;Write the characters to change the colors
		Move.l	#Both,D2
		Move.l	#BothLen,D3
		Bra	Finish

Check_one:

	;Check that first character is '0','1','2','3','4','5','6' or '7'
		Cmpi.b	#'8',(A0)
		Bcc	Syntax
		Cmpi.b	#'0',(A0)
		Bcs	Syntax

	;Store the colour
		Move.b	(A0),Ink1

	;Write the characters to change the colors
		Move.l	#Ink,D2
		Move.l	#InkLen,D3
		Bra	Finish

Syntax:
	;Write Syntax info
		Move.l	#SyntaxPtr,D2
		Moveq.l	#SyntaxLen,D3

Finish:		Move.l	OutHand,D1
		Jsr	-48(A6)

		Moveq.l	#0,D0
		Rts

	SECTION	data,DATA

Parm_Len:	dc.l	0
Parm_Ptr:	dc.l	0
DosName: 
DosBase:	dc.b	"dos."
OutHand:	dc.b	"libr"
		dc.b	"ary",0

Ink:		dc.b	$9b,"3"
Ink1:		dc.b	0,"m"
InkLen:		EQU	*-Ink

Both:		dc.b	$9b,"3"
Ink3:		dc.b	0,";4"
Paper3:		dc.b	0,"m"
BothLen:	EQU	*-Both	

SyntaxPtr:	dc.b	$9B,"33;40mCOLOUR",$9B,"31m    ©1999 Mike Archer"
		dc.b	10,10,"Syntax: COLOUR ink[,paper]",10
SyntaxLen:	EQU	*-SyntaxPtr


