10 ;RADIO BUTTON DEMO - DEMONSTRATES 20 ;USING ICONS TO CREATE A SERIES OF 30 ; BUTTONS WHERE ONLY ONE BUTTON CAN 40 ; BE ON/ACTIVE/PUSHED-IN. 50 ; 60 ;KEVIN PACKARD 3/2023 70 ; 80 ; 90 ; 0100 .OPT NO LIST 0110 *= $2000 0120 .INCLUDE #D1:DMACRO01.M65 0130 .INCLUDE #D1:SYSPRT.MAS 0140 ; 0150 BUTOF1 .BYTE 0,60,102,66,66,102,60,0 0160 BUTON1 .BYTE 0,60,126,126,126,126,60,0 0170 BUTOF2 .BYTE 0,60,102,66,66,102,60,0 0180 BUTON2 .BYTE 0,60,126,126,126,126,60,0 0190 BUTOF3 .BYTE 0,60,102,66,66,102,60,0 0200 BUTON3 .BYTE 0,60,126,126,126,126,60,0 0220 BUTOFADRLO .BYTE 0, BUTOF1, >BUTOF2, >BUTOF3 0240 BUTONADRLO .BYTE 0, BUTON1, >BUTON2, >BUTON3 0260 ACTIVEICON .BYTE 1 0270 QICON .BYTE 0,60,102,102,102,108,54,0 0280 ;SYSPRT FORMAT X,Y,FONT,"TXT",255 0290 ASTR .BYTE 10,10,0,"A A",255 0300 BSTR .BYTE 10,20,0,"B B",255 0310 CSTR .BYTE 10,30,0,"C C",255 0320 ; 0330 START 0340 INIT 0 0350 SYSPRT ASTR 0360 SYSPRT BSTR 0370 SYSPRT CSTR 0380 INSTALLICON 0,10,70,1,8,QICON 0390 INSTALLICON 1,10,10,1,8,BUTOF1 0400 INSTALLICON 2,10,20,1,8,BUTOF2 0410 INSTALLICON 3,10,30,1,8,BUTOF3 0420 LDX ACTIVEICON ;TURN ON INIT BUTTON 0430 STX B0 0440 JSR INITON 0450 ; 0460 LOOP EVENT 0470 LDA EVENTTYPE 0480 BEQ LOOP ;NO EVENT 0490 CMP #1 0500 BNE LOOP ;EVENT NOT ICON 0510 LDA EVENTTYPE+1 0520 BEQ ENDIT ;IF ICON 0 END 0530 CMP #4 0540 BCS LOOP ;IF < NOT IN RANGE 0550 JSR CHANGEICON ;CHANGE BUTON 0560 JMP LOOP 0570 ENDIT EXIT 0580 EXECDESKTOP 0600 ; 0610 CHANGEICON 0620 LDA ACTIVEICON ;ICON TO CHANGE 0630 STA B0 0640 TAX ;ACTIVEICON OFFSET 0650 LDA BUTOFADRLO,X 0660 STA W0 0670 LDA BUTOFADRHI,X 0680 STA W0+1 0690 LDA #7 ;SHAPEICON 0700 JSR DIAMOND 0710 LDA EVENTTYPE+1 ;GET ICON # 0720 STA ACTIVEICON ;MAKE ACTIVE 0730 STA B0 ;OFF SET TO ADDRESS TABLE 0740 TAX 0750 INITON LDA BUTONADRLO,X 0760 STA W0 0770 LDA BUTONADRHI,X 0780 STA W0+1 0790 LDA #7 0800 JSR DIAMOND 0810 RTS 0820 ; 0830 *= $02E0 0840 .WORD START