
*
*   AskMouse v 1.0 (10.18) Public Domain 1995
*
*
*
*



Begin:
	bra Start

	dc.b	'$VER: AskMouse v1.0 (10.18) by Tadek Knapik (31.05.95)',0,0

Start:
	move.l	a0,d0		;brak linii z argumentami
	tst.l	d0		;nic nie robimy
	beq	Quit		;
	cmpi.b	#10,(a0)	;linia pusta
	beq	Quit		;jak wyûej
	clr.l	d6		;znacznik - tylko dany argument
	clr.l	d7		;znacznik - negacja argumentu

;na poczâtku sprawdzanie negacji

CheckLoop:
	cmpi.b	#'~',(a0)	;not?
	bne	CheckButtons	;not!
	adda.l	#1,a0		;nastëpny znak
	moveq	#1,d7		;status

;sprawdzanie warunków

CheckButtons:
	cmpi.b	#'L',(a0)	;tylko lewy?
	beq	CheckLeftOnly
	cmpi.b	#'l',(a0)	;lewy?
	beq	CheckLeft
	cmpi.b	#'R',(a0)	;tylko prawy?
	beq	CheckRightOnly
	cmpi.b	#'r',(a0)	;prawy?
	beq	CheckRight
	cmpi.b	#'B',(a0)	;tylko obydwa?  <- Prawy i Lewy!
	beq	CheckBothOnly
	cmpi.b	#'b',(a0)	;obydwa?
	beq	CheckBoth
	cmpi.b	#'M',(a0)	;tylko ôrodkowy?  <- pin 5 port 0!
	beq	CheckMiddleOnly
	cmpi.b	#'m',(a0)	;ôrodkowy
	beq	CheckMiddle
	cmpi.b	#'A',(a0)	;tylko wszystkie? <- Prawy, lewy i ôrodkowy!
	beq	CheckAllOnly
	cmpi.b	#'a',(a0)	;wszystkie?
	beq	CheckAll
	cmpi.b	#'N',(a0)	;ûaden?  <-   N==n !!!
	beq	CheckNone
	cmpi.b	#'n',(a0)	;ûaden?
	beq	CheckNone
	cmpi.b	#'J',(a0)	;tylko fire w joyu?
	beq	CheckJoyOnly
	cmpi.b	#'j',(a0)	;fire w joyu?
	beq	CheckJoy

;jeôli któryô argument byî niewîaôciwy -> RC==0

Quit:
	clr.l	d0		;return code
	rts

;sprawdzanie ewentualnego nastëpnego


Pressed:
	tst.b	d7		;negacja?
	bne	CheckNext	;
	bra	ActionOK	;

NotPressed:
	tst.b	d7		;negacja?
	beq	CheckNext	;

ActionOK:
	moveq	#5,d0		;return code
	rts			;koniec programu



CheckNext:
	clr.l	d6		;work
	clr.l	d7		;registers
	adda.l	#1,a0		;na nastëpny znak
	cmpi.b	#10,(a0)	;koniec linii argumentów
	beq	Quit		;tak..

	cmpi.b	#'|',(a0)	;or?
	bne	Quit
	adda.l	#1,a0		;nastëpny
	bra	CheckLoop	;


CheckLeftOnly:
	moveq	#1,d6		;znacznik ONLY

CheckLeft:
	btst	#6,$bfe001	;lewy wciôniëty
	bne	NotPressed	;
	tst.b	d6		;wyîâcznoôê
	beq	Pressed
	btst	#2,$dff016	;prawy
	beq	NotPressed	;
	btst	#7,$bfe001	;joy
	beq	NotPressed	;
	btst	#8,$dff016	;ôrodkowy
	beq	NotPressed
	bra	Pressed		;

CheckRightOnly:
	moveq	#1,d6

CheckRight:
	btst	#2,$dff016	;prawy
	bne	NotPressed	;
	tst.b	d6		;wyîâcznoê?
	beq	Pressed
	btst	#6,$bfe001	;lewy
	beq	NotPressed
	btst	#7,$bfe001	;fire w joyu? (pîonâce blaszki ?!)
	beq	NotPressed
	btst	#8,$dff016	;ôrodkowy
	beq	NotPressed
	bra	Pressed

CheckMiddleOnly:
	moveq	#1,d6

CheckMiddle:
	btst	#8,$dff016	;ôrodkowy
	bne	NotPressed
	tst.b	d6
	beq	Pressed
	btst	#6,$bfe001	;lewy
	beq	NotPressed
	btst	#2,$dff016	;prawy
	beq	NotPressed
	btst	#7,$bfe001	;joy
	beq	NotPressed
	bra	Pressed

CheckJoyOnly:
	moveq	#1,d6

CheckJoy:
	btst	#7,$bfe001	;joy
	bne	NotPressed
	tst.b	d6
	beq	Pressed
	btst	#6,$bfe001	;lewy
	beq	NotPressed
	btst	#2,$dff016	;prawy
	beq	NotPressed
	btst	#8,$dff016	;ôrodkowy
	beq	NotPressed
	bra	Pressed

CheckBothOnly:
	moveq	#1,d6

CheckBoth:
	btst	#6,$bfe001	;lewy
	bne	NotPressed
	btst	#2,$dff016	;prawy
	bne	NotPressed
	tst.b	d6
	beq	Pressed
	btst	#7,$bfe001	;joy
	beq	NotPressed
	btst	#8,$dff016	;ôrodkowy
	beq	NotPressed
	bra	Pressed


CheckAllOnly:
	moveq	#1,d6

CheckAll:
	btst	#6,$bfe001	;lewy
	bne	NotPressed
	btst	#2,$dff016	;prawy
	bne	NotPressed
	btst	#8,$dff016	;ôrodkowy
	bne	NotPressed
	tst.b	d6
	beq	Pressed
	btst	#7,$bfe001	;joy
	beq	NotPressed
	bra	Pressed

CheckNone:
	btst	#6,$bfe001	;lewy
	beq	NotPressed
	btst	#2,$dff016	;prawy
	beq	NotPressed
	btst	#8,$dff016	;ôrodkowy
	beq	NotPressed
	btst	#7,$bfe001	;joy
	beq	NotPressed
	bra	Pressed

