Skip to content

Instantly share code, notes, and snippets.

@tlindner
Last active November 30, 2020 05:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tlindner/bcbd9d3a7cb3a1b9b1b4765151c76807 to your computer and use it in GitHub Desktop.
Save tlindner/bcbd9d3a7cb3a1b9b1b4765151c76807 to your computer and use it in GitHub Desktop.
Disassembled joystick reading routine of Photon for the CoCo
SETDP $7F
65B7: 96 57 LDA $57
65B9: 26 51 BNE $660C Branch if Z = 0
65BB: 86 08 LDA #$08
65BD: 97 57 STA $57
65BF: 8E FF 00 LDX #$FF00
65C2: 10 8E FF 01 LDY #$FF01
65C6: CE FF 20 LDU #$FF20
65C9: CC 34 0C LDD #$340C
65CC: 1A 40 ORCC #$40 inhibit firq
65CE: A7 43 STA $3,U 2nd PIA, set CB2 low. Disable Sound.
65D0: A6 C4 LDA ,U Read DAC
65D2: 97 56 STA $56 store it.
65D4: E7 C4 STB ,U set DAC to 3
65D6: A6 84 LDA ,X get 1st PIA port A
65D8: 2A 33 BPL $660D Branch if N = 0. Branch if DAC is higher than JOY.
65DA: 86 F4 LDA #$F4
65DC: A7 C4 STA ,U set DAC to 61
65DE: 86 3C LDA #$3C
65E0: A7 A4 STA ,Y 1st PIA, set CA2 high. Vertical. Changes MUX in 140ns.
65E2: A6 84 LDA ,X get 1st PIA port A
65E4: 2B 36 BMI $661C Branch if N = 1. Branch if DAC is lower than JOY.
65E6: 86 20 LDA #$20
65E8: A7 C4 STA ,U Set DAC to 8
65EA: 12 NOP
65EB: 12 NOP
65EC: 12 NOP
65ED: 12 NOP
65EE: A6 84 LDA ,X
65F0: 2A 3D BPL $662F Branch if N = 0. Branch if DAC is higher than JOY.
65F2: 86 E0 LDA #$E0
65F4: A7 C4 STA ,U set DAC to 56
65F6: 86 34 LDA #$34
65F8: A7 A4 STA ,Y 1st PIA, set CA2 low. Horizontal. Changes MUX in 140ns.
65FA: A6 84 LDA ,X
65FC: 2B 42 BMI $6640 Branch if N = 1. Branch if DAC is lower than JOY.
65FE: 96 56 LDA $56 retrieve stored value
6600: A7 C4 STA ,U set DAC to ?
6602: 86 3C LDA #$3C
6604: A7 43 STA $3,U 2nd PIA, set CB2 high. Enable Sound. Changes MUX in 140ns.
6606: 1C BF ANDCC #$BF un-inhibit firq
6608: C6 FF LDB #$FF
660A: D7 56 STB $56 $FF = don't move
660C: 39 RTS
660D: 96 56 LDA $56 retrieve stored value
660F: A7 C4 STA ,U set DAC to ?
6611: 86 3C LDA #$3C
6613: A7 43 STA $3,U 2nd PIA, set CB2 high. Enable Sound. Changes MUX in 140ns.
6615: 1C BF ANDCC #$BF un-inhibit firq
6617: C6 06 LDB #$06
6619: D7 56 STB $56 6 = go left
661B: 39 RTS
661C: 86 34 LDA #$34
661E: A7 A4 STA ,Y 1st PIA, set CA2 low. Horizontal. Changes MUX in 140ns.
6620: 96 56 LDA $56 retrieve stored value
6622: A7 C4 STA ,U Set DAC to ?
6624: 86 3C LDA #$3C
6626: A7 43 STA $3,U 2nd PIA, set CA2 high. Changes MUX in 140ns.
6628: 1C BF ANDCC #$BF un-inhibit firq
662A: C6 02 LDB #$02
662C: D7 56 STB $56 2 = go right (change to 4)
662E: 39 RTS
662F: 86 34 LDA #$34
6631: A7 A4 STA ,Y 1st PIA, set CA2 low. Horizontal. Changes MUX in 140ns.
6633: 96 56 LDA $56 retrieve stored value
6635: A7 C4 STA ,U Set DAC to ?
6637: 86 3C LDA #$3C
6639: A7 43 STA $3,U 2nd PIA, set CA2 high. Changes MUX in 140ns.
663B: 1C BF ANDCC #$BF un-inhibit firq
663D: 0F 56 CLR $56 0 = go up (change to 2)
663F: 39 RTS
6640: 96 56 LDA $56 retrieve stored value
6642: A7 C4 STA ,U set DAC to ?
6644: 86 3C LDA #$3C
6646: A7 43 STA $3,U 2nd PIA, set CB2 high. Enable Sound.
6648: 1C BF ANDCC #$BF un-inhibit firq
664A: C6 04 LDB #$04 4 = go down (change to 0)
664C: D7 56 STB $56
664E: 39 RTS
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment