!!!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 ------------------------------
}}}