; fast mouse driver by ; Laokoon/NG ; 22 iii mcmxcviii Org $9000 baze EQU $d407 col0 EQU $02c0 siz0 EQU $d008 poz0 EQU $d000 gtcs EQU $026f dmas EQU $022f pmct EQU $d01d stvb EQU $e45c tmc2 EQU $021a ptln EQU $c642 dzoy EQU $d300 pm EQU $a000-$400 start: JSR clr JSR opm LDA #0 STA 82 LDX txt1 JSR ptln LDX txt2 JSR ptln LDX txt3 JSR ptln LDY put LDA #9 JSR stvb LDA del STA tmc2 LDA #$ff STA 764 LDA #100 STA my loop: JSR mous ;Main loop LDA 764 CMP #$ff BEQ loop LDX #0 ;Exit STX tmc2 DEX STX 764 JMP cpm ; Main procedure of driver mous: LDA dzoy AND #$f0 TAY EOR pms BNE *+3 RTS TAX STY pms hor: BPL n7 TYA BPL l0 AND #%00100000 BEQ l1 LDA rsx ADC cix STA rsx BCC l1-3 INC mx JMP ver l1: LDA rsx SBC cix STA rsx BCS l1-3 DEC mx JMP ver l0: AND #%00100000 BEQ l2 LDA rsx SBC cix STA rsx BCS ver DEC mx JMP ver l2: LDA rsx ADC cix STA rsx BCC ver INC mx JMP ver n7: AND #%00100000 BEQ ver TYA AND #%00100000 BEQ l3 TYA BPL l4 LDA rsx SBC cix STA rsx BCS ver DEC mx JMP ver l4: LDA rsx ADC cix STA rsx BCC ver INC mx JMP ver l3: TYA BPL l5 LDA rsx ADC cix STA rsx BCC ver INC mx JMP ver l5: LDA rsx SBC cix STA rsx BCS ver DEC mx ver: TXA AND #%01000000 BEQ n6 TYA AND #%01000000 BEQ l6 TYA AND #%00010000 BEQ l7 LDA rsy ADC ciy STA rsy BCC l7-3 INC my JMP kon l7: LDA rsy SBC ciy STA rsy BCS l7-3 DEC my JMP kon l6: TYA AND #%00010000 BEQ l8 LDA rsy SBC ciy STA rsy BCS kon DEC my JMP kon l8: LDA rsy ADC ciy STA rsy BCC kon INC my JMP kon n6: TXA AND #%00010000 BEQ kon TYA AND #%00010000 BEQ l9 TYA AND #%01000000 BEQ l10 LDA rsy SBC ciy STA rsy BCS kon DEC my JMP kon l10: LDA rsy ADC ciy STA rsy BCC kon INC my JMP kon l9: TYA AND #%01000000 BEQ l11 LDA rsy ADC ciy STA rsy BCC kon INC my JMP kon l11: LDA rsy SBC ciy STA rsy BCS kon DEC my kon: RTS ; Drawing cursor procedure ; Placed on TIMER 2 put: LDA oy STA _0+1 LDX #7 LDA #0 _0: STA pm,X DEX BPL _0 LDA my STA _1+1 LDX #7 c0: LDA kt,X _1: STA pm,X DEX BPL c0 LDA my STA oy LDA mx STA poz0 LDA del STA tmc2 RTS ; Initialization P/MG opm: LDA >pm STA baze LDA #$f STA col0 LDA #0 STA siz0 LDA #1 STA gtcs LDA #%00111010 STA dmas LDA #2 STA pmct RTS ; Turn off P/MG cpm: LDA #0 STA poz0 STA pmct LDA #%00100010 STA dmas RTS ; Clear all memory for sprite clr: LDX #0 TXA cl0: STA pm,X DEX BNE cl0 RTS ;parameters mx DB B(100) ;horizontal position my DB B(100) ;vertical position del DB B(1) ;How many frames is the cursor drawn ? cix DB B($ff) ;x scale ciy DB B($ff) ;y scale ; working variables pms DB B(0) ;secondary mouse pointer oy DB B(0) ;old horisontal position rsx DB B(0) ;x residual rsy DB B(0) ;y residual txt1 DB C'Fast Mouse Driver by Laokoon/NG',B(155) txt2 DB C'Connect an AMIGA mouse to second port...',B(155) txt3 DB C'Press key to leave...',B(155) ; Datas for sprite kt DB B(%10000000) DB B(%01100000) DB B(%01111000) DB B(%00111110) DB B(%00111100) DB B(%00011100) DB B(%00010010) DB B(%00000001) End start