;***USER EQUATES*** LED1 EQU 01 LED2 EQU 02 LED3 EQU 03 LED4 EQU 04 LED5 EQU 05 LED6 EQU 06 ; ; Base Page of r/w memory (DATA) at 00 DATA EQU 00 ; Base of where IO devices (IO) begin IO EQU 04 CODE EQU 810 START EQU FF0 ; ; ORG FF0 ; ; Jump from reset point to where user code belongs LDI M, 08 LDI X, 10 JMP X ; ORG 810 ; ; Load FF into A and store at LED1's address LDI A, FF LDI M, IO LDI X, LED1 STRL [M,X], A ; Setup registers for exchanges LDI A, 25 LDI B, 13 LDI M, 42 LDI X, 07 ; Test exchanges XCHG A, B XCHG A, M XCHG B, X ; Test arithmetic (no carries) LDI A, 01 LDI B, 02 ADC A, B ADC A, A SBC A, B ; Test arithmetic w/ carry and test branch on carry LDI A, F0 ADC A, A LDI A, F0 LDI B, 23 ADC A, B BC #CARRY ; If no carry then return RET ; If carry then continue #CARRY ; Test for borrow LDI A, 02 LDI B, F3 SBC A, B ; Test for zero flag on arithmetic instructions LDI A, 00 LDI B, 00 ADC A, B ADC A, A SBC A, B LDI X, FF INC X LDI B, 01 DEC B ; Test brach on zero BZ #ZERO ; If not zero RET ; If zero then continue #ZERO ; Test clear and NOP instructions CLR X CLR B CLR A NOP ; Test remaining branch instructions BRA #CONTINUE RET #CONTINUE ADC A, B BNC #NOCARRY RET #NOCARRY LDI A, 01 ADC A, B BNZ #NOTZERO RET #NOTZERO ; Test logical operations CMP A, B AND A, B OR A, B XOR A, B ; Test long load ORG C00 LDI A, 45 LDI M, 05 LDI X, 00 STRL [M,X], A ; Finish RET