; 读取手柄1 ; JOY_NOW:当前值, JOY_LAST:前一次的值 ; 一些常数, 某些可以按位或组合 ; Right:$01, Left:$02, Down:$04, Up:$08 ; Start:$10, Select:$20, B:$40, A:$80 JOY_NOW = $00 JOY_LAST = $01 read_joy: lda JOY_NOW ; 保存上一次的值 pha lda #$01 ; 硬件初始化 sta $4016 lsr sta $4016 ldx #$08 ; 循环读取8次 sta JOY_NOW ; 初始化 sta JOY_LAST joy_loop: lda $4016 ; 循环读取 and #$01 ; 仅取的效位 sta JOY_LAST ; 借用上一次的地址 lda JOY_NOW asl ora JOY_LAST sta JOY_NOW dex bne joy_loop pla ; 保存上一次的按键值 sta JOY_LAST rts