* *``````````````````````````````* * GPBX :: GET PADDLE BUTTON X * * * * GETS STATE OF PADDLE BUTTON * * SPECIFIED AND RET 0, 1 IN A * *- -* * CLOBBERS: * * * * FLAGS: ???----- REG: A-YM * *- -* * CYCLES: ??? * * SIZE: * *- -* * USAGE: * * LDA #>(ADDRESS) * * PHA * * LDA #<(ADDRESS) * * PHA * * JSR GPBX * * * * --- WHERE: * * * * BUTTON 0 = $C061 (PB0) * * BUTTON 1 = $CO62 (PB1) * * BUTTON 2 - $C063 (PB2) * * BUTTON 3 = $C060 (PB3) * *- -* * ENTRY * * * * TOP OF STACK * * * * LOW BYTE OF RETURN ADDRESS * * HI BYTE OF RETURN ADDRESS * * LOW BYTE OF PDL BTN ADDRESS * * HI BYTE OF PDL BTN ADDRESS * *- -* * EXIT * * * * TOP OF STACK * * * * LOW BYTE OF RETURN ADDRESS * * HI BYTE OF RETURN ADDRESS * * * * A = 1 IF PRESSED, 0 IF NOT * * X = UNCHANGED * * Y = GARBAGE * *,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* * * CHANGE THIS LATER TO ACCEPT ALL BUTTONS, 0-4 * GPBX * ** SAVE RETURN ADDRESS * PLA STA RETADR PLA STA RETADR+1 * ** GET PARAMETER * PLA STA ADDR1 ; ZERO PAGE PLA STA ADDR1+1 * * ******************************** * ** ERROR CONTROL * ******************************** * LDA ERRCTRL CMP #1 BEQ :CHKERR JMP :ERREND :CHKERR LDA ADDR1+1 CMP #$C0 ; MAX COL + 1 BNE :BADHI LDA ADDR1 CMP #$64 BCS :BADLO LDA ADDR1 CMP #$60 BCC :BADLO JMP :ERREND :BADHI _ERR #:E_SID;#:E_BHI;#:E_DMP1;#RETURN;#10 JMP :ERREND :BADLO _ERR #:E_SID;#:E_BLO;#:E_DMP1;#RETURN;#10 * ******************************** * :ERREND * ******************************** * * LDY #$00 LDA (ADDR1),Y ; IF BTN = PUSHED BMI :1 JMP :0 :1 LDY #$01 ; BTN PUSHED;A=1 JMP :EXIT :0 LDY #$00 ; BTN NOT PUSHED;A=0 * :EXIT * ** RESTORE RETURN ADDRESS * LDA RETADR+1 PHA LDA RETADR PHA * TYA ; BTN FLAG MOVE TO A RTS * ** DATA * :E_SID ASC "GPBX (PBX MACRO)",00 :E_DMP1 ASC "DUMPING RETURN BLOCK...",00 :E_BHI ASC "BAD HIGH BYTE--NOT A PADDLE BUTTON!.",00 :E_BLO ASC "BAD LOW BYTE--NOT A PADDLE BUTTON",00 *