home *** CD-ROM | disk | FTP | other *** search
RISC OS BBC BASIC V Source | 1990-03-27 | 3.0 KB | 152 lines |
- >SwitchCode Machine code to drive switches
- must return &FF in R0 if active OR 0 if not
- Press_shift:=
- pressed_key(&FF)
- Press_ctrl:=
- pressed_key(&FE)
- pressed_key(key)
- pass= 0
- P%=code
- [OPT pass
- .test_button
- STMFD 13!,{14}
- MOV R0,#129
- MOV R1,#key
- MOV R2,#&FF
- SWI "OS_Byte"
- LDRB R0,test_button_flag
- CMP R0,R1
- BEQ test_button_not_changed
- STRB R1,test_button_flag
- CMP R1,#&FF
- BNE test_button_not_changed
- MOV R0,#&FF
- LDMFD 13!,{PC}^
- .test_button_not_changed
- MOV R0,#0
- LDMFD 13!,{15}^
- .test_button_flag EQUB 0
- Release_shift:=
- released_key(&FF)
- Release_ctrl:=
- released_key(&FE)
- released_key(key)
- pass= 0
- P%=code
- [OPT pass
- .test_button
- STMFD 13!,{14}
- MOV R0,#129
- MOV R1,#key
- MOV R2,#&FF
- SWI "OS_Byte"
- LDRB R0,test_button_flag
- CMP R0,R1
- BEQ test_button_not_changed
- STRB R1,test_button_flag
- CMP R1,#0
- BNE test_button_not_changed
- MOV R0,#&FF
- LDMFD 13!,{PC}^
- .test_button_not_changed
- MOV R0,#0
- LDMFD 13!,{15}^
- .test_button_flag EQUB 0
- Change_shift:=
- changed_key(&FF)
- Change_ctrl:=
- changed_key(&FE)
- changed_key(key)
- pass= 0
- P%=code
- [OPT pass
- .test_button
- STMFD 13!,{14}
- MOV R0,#129
- MOV R1,#key
- MOV R2,#&FF
- SWI "OS_Byte"
- LDRB R0,test_button_flag
- CMP R0,R1
- BEQ test_button_not_changed
- STRB R1,test_button_flag
- MOV R0,#&FF
- LDMFD 13!,{PC}^
- .test_button_not_changed
- MOV R0,#0
- LDMFD 13!,{15}^
- .test_button_flag EQUB 0
- Change_UserPort(n)
- pass= 0
- P%=code
- [OPT pass
- .test_button
- STMFD 13!,{14}
- MOV R0,#150
- MOV R1,#&60
- MOV R2,#&FF
- SWI "XOS_Byte"
- TST R2,#1<<n
- MOVNE R1,#0
- Q R1,#&FF
- LDRB R0,test_button_flag
- CMP R0,R1
- BEQ test_button_not_changed
- STRB R1,test_button_flag
- MOV R0,#&FF
- LDMFD 13!,{PC}^
- .test_button_not_changed
- MOV R0,#0
- LDMFD 13!,{15}^
- .test_button_flag EQUB 0
- Release_UserPort(n)
- pass= 0
- P%=code
- [OPT pass
- .test_button
- STMFD 13!,{14}
- MOV R0,#150
- MOV R1,#&60
- MOV R2,#&FF
- SWI "XOS_Byte"
- TST R2,#1<<n
- MOVNE R1,#0
- Q R1,#&FF
- LDRB R0,test_button_flag
- CMP R0,R1
- BEQ test_button_not_changed
- STRB R1,test_button_flag
- CMP R1,#0
- BNE test_button_not_changed
- MOV R0,#&FF
- LDMFD 13!,{PC}^
- .test_button_not_changed
- MOV R0,#0
- LDMFD 13!,{15}^
- .test_button_flag EQUB 0
- Press_UserPort(n)
- pass= 0
- P%=code
- [OPT pass
- .test_button
- STMFD 13!,{14}
- MOV R0,#150
- MOV R1,#&60
- MOV R2,#&FF
- SWI "XOS_Byte"
- TST R2,#1<<n
- MOVNE R1,#0
- Q R1,#&FF
- LDRB R0,test_button_flag
- CMP R0,R1
- BEQ test_button_not_changed
- STRB R1,test_button_flag
- CMP R1,#&FF
- BNE test_button_not_changed
- MOV R0,#&FF
- LDMFD 13!,{PC}^
- .test_button_not_changed
- MOV R0,#0
- LDMFD 13!,{15}^
- .test_button_flag EQUB 0
-