!!!Atari ST Mouse Driver for ACTION!

General Information

Author: Carsten Strotmann \\
Assembler: Bibo Assembler \\
Published: 07/24/91 \\

High Level ACTION Module
{{{
;********************************
;**			       **
;** Phoenix SoftCrew ACTION!   **
;** Programme und Tips f. 8Bit **
;**                            **
;** Carsten Strotmann	       **
;**			       **
;********************************

; Programname:MOUSE-MODUL
; done by:Carsten Strotmann
; Filename:MOUSE.ACT
; first Version:30.03.90
; last change:20.07.91
; Mouse Routine
; Comment:
; needs MOUSE.COM
;

;INCLUDE "D:DIVERS.ACT"


PROC Mouse=$0600 (BYTE color,x,y)
;PROC Mouse=$A000 (BYTE color,x,y)

PROC M_Put (BYTE chr)

 BYTE xm=$3FD,ym=$3FE,x,y

 x=xm/4
 y=ym/8

 Position (x,y)
 Put (chr)

RETURN

BYTE FUNC M_Get ()

 BYTE xm=$3FD,ym=$3FE,chr,x,y

 x=xm/4
 y=ym/8

 chr=Scan (x,y)

RETURN (chr)

BYTE FUNC M_TRIGGER ()

  BYTE paddl0=$270,
		 stick0=$278, res

  res=0

  IF stick0=0 THEN
	res=1
  FI

  IF paddl0 < 10 THEN
	res=2
  FI

RETURN (res)
}}}


here is the Assembler Code part
{{{
00010			 .LI OFF
00020 ******************************
00030 *				   *
00040 * PROGRAMM:MOUSE ROUTINE	   *
00050 * AUTOR	:CARSTEN STROTMANN *
00060 * DATUM	:24.07.91	   *
00070 * VERSION :04.03		   *
00080 * FUER	 :ACTION!	   *
00090 *				   *
00100 ******************************
00110 ;
00120 ; SYSTEM REGISTER
00130 ;
00140 XM		 =	$03FD
00150 YM		 =	$03FE
00160 MT		 =	$03FF
00170 SETVBV	=	$E45C
00180 SYSVBV	=	$E45F
00190 XITVBV	=	$E462
00200 SDMCTL	=	$022F
00210 PMBASE	=	$D407
00220 VCOUNT	=	$D40B
00230 GRACTL	=	$D01D
00240 PORTA	 =	$D300
00250 PADDL2	=	$0272
00260 STICK0	=	$0278
00270 STRIG0	=	$0284
00280 STRIG1	=	$0285
00290 HPOS0	 =	$D000
00300 PCOL0	 =	$02C0
00310 GPRIOR	=	$026F
00320 ;
00330 ;
00340			 .OR $0600
00350			 .OF D:MOUSE3.COM"
00360 ;
00370 ;
00380 ACTION
00390			 STX XM
00400			 STY YM
00410			 STA PCOL0
00420 X		  LDA #$78
00430			 STA PMBASE
00440			 LDA #$3A
00450			 STA SDMCTL
00460			 LDA #2
00470			 STA GRACTL
00480			 STA GPRIOR
00490			 LDX /PLAYVBI
00500			 LDY #PLAYVBI
00510			 LDA #7
00520			 JSR SETVBV
00530 LOOP	  JMP RUN
00540 ------------------------------
00550 PLAYVBI
00560			 LDA XM
00570			 CLC
00580			 ADC #49
00590			 STA HPOS0
00600			 LDX #0
00610			 TXA
00620 .1		 STA $7C00,X
00630			 INX
00640			 BNE .1
00650			 LDX YM
00660			 LDY #0
00670 .2		 LDA PLAYTAB,Y
00680			 STA $7C20,X
00690			 INX
00700			 INY
00710			 CPY #11
00720			 BNE .2
00730			 JMP XITVBV
00740 ------------------------------
00780 PLAYTAB
00790			 .HX 0080C0E0F0E0E0B0
00800			 .HX 101000
00810 XT		 .HX 0020301000
00820 YT		 .HX 80C0400080
00830 REG		.HX 00
00840 REG2	  .HX 00
00850 XX		 .HX 00
00860 YY		 .HX 00
00870 ------------------------------
00880 STICK
00890			 LDA STICK0
00900			 TAY
00910			 CMP #15
00920			 BEQ .5
00930			 TYA
00940			 AND #2
00950			 BEQ .1
00960			 LDA YM
00970			 BEQ .1
00980			 DEC YM
00990 .1
01000			 TYA
01010			 AND #1
01020			 BEQ .2
01030			 LDA YM
01040			 CMP #191
01050			 BEQ .2
01060			 INC YM
01070 .2
01080			 TYA
01090			 AND #8
01100			 BEQ .3
01110			 LDA XM
01120			 BEQ .3
01130			 DEC XM
01140 .3
01150			 TYA
01160			 AND #4
01170			 BEQ .4
01180			 LDA XM
01190			 CMP #159
01200			 BEQ .4
01210			 INC XM
01220 .4
01230			 LDA VCOUNT
01240			 BNE .4
01250 .5
01260			 RTS
01270 ------------------------------
01280			 .OR $0400
01290 RUN
01300			 JSR STRIG
01310			 LDA PORTA
01320			 AND #$30
01330			 STA REG
01340			 JSR XFRAG
01350			 JSR XALG
01360			 LDA PORTA
01370			 AND #$C0
01380			 STA REG2
01390			 JSR YFRAG
01400			 JSR YALG
01410			 JMP RUN
01420 XALG
01430			 JSR STICK
01440			 JSR STRIG
01450			 LDA PORTA
01460			 AND #$30
01470			 CMP REG
01480			 BEQ YALG
01490			 LDX XX
01500			 INX
01510			 CMP XT,X
01520			 BNE .1
01530			 LDA XM
01540			 CMP #159
01550			 BEQ .2
01560			 INC XM
01570			 JMP .2
01580 .1		 LDX XX
01590			 DEX
01600			 CMP XT,X
01610			 BNE .2
01620			 LDA XM
01630			 BEQ .2
01640			 DEC XM
01650 .2		 RTS
01660 YALG
01670			 JSR STICK
01680			 JSR STRIG
01690			 LDA PORTA
01700			 AND #$C0
01710			 CMP REG2
01720			 BEQ XALG
01730			 LDX YY
01740			 INX
01750			 CMP YT,X
01760			 BNE .1
01770			 LDA YM
01780			 CMP #191
01790			 BEQ .2
01800			 INC YM
01810			 JMP .2
01820 .1		 LDX YY
01830			 DEX
01840			 CMP YT,X
01850			 BNE .2
01860			 LDA YM
01870			 BEQ .2
01880			 DEC YM
01890 .2		 RTS
01900 ------------------------------
01910 XFRAG
01920			 LDX #4
01930 .1		 LDA XT,X
01940			 CMP REG
01950			 BEQ .2
01960			 DEX
01970			 BNE .1
01980 .2		 STX XX
01990			 RTS
02000 ------------------------------
02010 YFRAG
02020			 LDX #4
02030 .1		 LDA YT,X
02040			 CMP REG2
02050			 BEQ .2
02060			 DEX
02070			 BNE .1
02080 .2		 STX YY
02090			 RTS
02100 ------------------------------
02110 STRIG
02120			 LDA STRIG0
02130			 BNE .1
02140			 LDA #1
02150			 STA MT
02160			 PLA
02170			 PLA
02180			 RTS
02190 .1		 LDA STRIG1
02200			 BNE .2
02210			 LDA #1
02220			 STA MT
02230			 PLA
02240			 PLA
02250			 RTS
02260 .2		 LDA PADDL2
02270			 CMP #10
02280			 BMI .3
02290			 LDA #2
02300			 STA MT
02310			 PLA
02320			 PLA
02330			 RTS
02340 .3		 RTS
02350 ------------------------------
}}}