; G = Give P=Pick up U=use M=walk ; O = Open L=Look at H=push ; C = Close T=Talk to N=pull ;============================== ; Handle Keypress ;============================== handle_keypress: ; first handle joystick lda JOYSTICK_ENABLED beq actually_handle_keypress ; only check joystick every-other frame lda FRAMEL and #$1 beq actually_handle_keypress check_button: lda PADDLE_BUTTON0 bpl button_clear lda JS_BUTTON_STATE bne js_check lda #1 sta JS_BUTTON_STATE lda #' ' jmp check_sound button_clear: lda #0 sta JS_BUTTON_STATE js_check: jsr handle_joystick js_check_left: lda value0 cmp #$20 bcs js_check_right ; if less than 32, left lda #'A' bne check_sound js_check_right: cmp #$40 bcc js_check_up lda #'D' bne check_sound js_check_up: lda value1 cmp #$20 bcs js_check_down lda #'W' bne check_sound js_check_down: cmp #$40 bcc done_joystick lda #'S' bne check_sound done_joystick: actually_handle_keypress: lda KEYPRESS bmi keypress jmp no_keypress keypress: and #$7f ; clear high bit cmp #' ' beq check_sound ; make sure not to lose space and #$df ; convert uppercase to lower case check_sound: cmp #$14 ; control-T bne check_joystick lda SOUND_STATUS eor #SOUND_DISABLED sta SOUND_STATUS jmp done_keypress ; can't be ^J as that's the same as down check_joystick: cmp #'J' ; J bne check_give lda JOYSTICK_ENABLED eor #1 sta JOYSTICK_ENABLED jmp done_keypress check_give: cmp #'G' bne check_open lda #VERB_GIVE sta CURRENT_VERB jmp done_keypress check_open: cmp #'O' bne check_close lda #VERB_OPEN sta CURRENT_VERB jmp done_keypress check_close: cmp #'C' bne check_pick_up lda #VERB_CLOSE sta CURRENT_VERB jmp done_keypress check_pick_up: cmp #'P' bne check_look_at lda #VERB_PICK_UP sta CURRENT_VERB jmp done_keypress check_look_at: cmp #'L' bne check_talk_to lda #VERB_LOOK_AT sta CURRENT_VERB jmp done_keypress check_talk_to: cmp #'T' bne check_use lda #VERB_TALK_TO sta CURRENT_VERB jmp done_keypress check_use: cmp #'U' bne check_push lda #VERB_USE sta CURRENT_VERB jmp done_keypress check_push: cmp #'H' bne check_pull lda #VERB_PUSH sta CURRENT_VERB jmp done_keypress check_pull: cmp #'N' bne check_walk lda #VERB_PULL sta CURRENT_VERB jmp done_keypress check_walk: cmp #'M' bne check_left lda #VERB_WALK sta CURRENT_VERB jmp done_keypress ;check_load: ; cmp #$C ; control-L ; bne check_save ; jsr load_game ; jmp done_keypress ;check_save: ; cmp #$13 ; control-S ; bne check_left ; jsr save_game ; jmp done_keypress check_left: cmp #'A' beq left_pressed cmp #8 ; left key bne check_right left_pressed: lda CURSOR_X ; if 41