⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ctk-mouse-1351.s

📁 伟大的Contiki工程, 短小精悍 的操作系统, 学习编程不可不看
💻 S
字号:
;---------------------------------------------------------------------	;; The 1351 mouse code was taken from the CC65 libraries,	;; written by Ullrich von Bassewitz ;---------------------------------------------------------------------	        .macpack        generic	.import		_ctk_mouse_joyx, _ctk_mouse_joyy	.import		_ctk_mouse_firebutton		.export		_ctk_mouse_1351;---------------------------------------------------------------------.bssOldValue:       .res    1               ; Temp for MoveCheck routineNewValue:       .res    1               ; Temp for MoveCheck routineYCorr:          .res    1               ; Correction for Y coordinate	OldPotX:        .res    1               ; Old hw counter valuesOldPotY:        .res    1 SID_ADConv1     = $D419SID_ADConv2     = $D41ACIA1_PRA        = $DC00	CIA1_PRB        = $DC01	CIA1_DDRB       = $DC03	;---------------------------------------------------------------------.dataXMin:           .word    0               ; X1 value of bounding boxYMin:           .word    0               ; Y1 value of bounding boxXMax:           .word    319             ; X2 value of bounding boxYMax:           .word    199             ; Y2 value of bounding box	;---------------------------------------------------------------------.code;---------------------------------------------------------------------;---------------------------------------------------------------------	;; Most of the mouse code is taken from the CC65 libraries written by	;; Ullrich von BassewitzMoveCheck:        sty     OldValue        sta     NewValue        ldx     #$00         sub     OldValue                ; a = mod64 (new - old)        and     #%01111111        cmp     #%01000000              ; if (a > 0)        bcs     @L1                     ;        lsr     a                       ;   a /= 2;        beq     @L2                     ;   if (a != 0)        ldy     NewValue                ;     y = NewValue        rts                             ;   return @L1:    ora     #%11000000              ; else or in high order bits        cmp     #$FF                    ; if (a != -1)        beq     @L2        sec        ror     a                       ;   a /= 2        dex                             ;   high byte = -1 (X = $FF)        ldy     NewValue        rts                                                                               @L2:    txa                             ; A = $00        rts                                                                               ;---------------------------------------------------------------------	_ctk_mouse_1351:        lda     SID_ADConv1             ; Get mouse X movement        ldy     OldPotX        jsr     MoveCheck               ; Calculate movement vector        sty     OldPotX ; Calculate the new X coordinate (--> a/y)         add     _ctk_mouse_joyx        tay                             ; Remember low byte        txa        adc     _ctk_mouse_joyx+1        tax ; Limit the X coordinate to the bounding box         cpy     XMin        sbc     XMin+1        bpl     @L1        ldy     XMin        ldx     XMin+1        jmp     @L2@L1:    txa         cpy     XMax        sbc     XMax+1        bmi     @L2        ldy     XMax        ldx     XMax+1@L2:    sty     _ctk_mouse_joyx        stx     _ctk_mouse_joyx+1; Calculate the Y movement vector         lda     SID_ADConv2             ; Get mouse Y movement        ldy     OldPotY        jsr     MoveCheck               ; Calculate movement        sty     OldPotY ; Calculate the new Y coordinate (--> a/y)         sta     OldValue        lda     _ctk_mouse_joyy        sub     OldValue        tay        stx     OldValue        lda     _ctk_mouse_joyy+1        sbc     OldValue        tax         cpy     YMin        sbc     YMin+1        bpl     @L3        ldy     YMin        ldx     YMin+1        jmp     @L4@L3:    txa                                                                                       cpy     YMax        sbc     YMax+1        bmi     @L4        ldy     YMax        ldx     YMax+1@L4:    sty     _ctk_mouse_joyy        stx     _ctk_mouse_joyy+1	;; Get mouse button        lda     #$7F        sta     CIA1_PRA        lda     CIA1_PRB                ; Read joystick #0        ldx     #0        and     #$1F        eor     #$1F		ora     _ctk_mouse_firebutton	sta	_ctk_mouse_firebutton		lda	#0	sta	CIA1_PRA	sta	CIA1_DDRB		rts	;---------------------------------------------------------------------			

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -