********** * Program LOGIC_4 (6811) * * Simulates Ring Counter * * * * * * * * * * * Ring Counter seeded with switches. Goes into continuous loop * outputting each succesive pattern. * * P. H. Anderson, MSU, 11 Oct 90; 15 Jan 93 ********** PSCT EQU $C000 DSCT EQU $D000 IDSCT EQU $D300 STACKTP EQU $0045 REG_BASE EQU $1000 PORTB EQU $04 * output PORTC EQU $03 * input DDRC EQU $07 ORG PSCT LDS #STACKTP LDY #REG_BASE CLR DDRC,Y * port c configured as 8-bit input LDAA PORTC,Y * get seed STAA PATT * save in PATT AGN LDAA PATT * display PATT STAA PORTB,Y BSR GEN_NEW * generate new pattern BSR TIME * delay BRA AGN * continue GEN_NEW * takes PATT and generates new pattern and saves in PATT PSHA * save A LDAA PATT STAA TEMP_1 * Q7 in ms bit STAA TEMP_2 STAA TEMP_3 ASL TEMP_2 * Q6 in ms bit ASL TEMP_3 ASL TEMP_3 ASL TEMP_3 * Q4 in ms bit LDAA PATT ANDA TEMP_2 ANDA TEMP_3 * Q7 * Q6 * Q4 now in ms bit of A COMA * /(Q7 * Q6 * Q4) in ms bit ASLA * now in CY ROL PATT * shift PATT, CY to ls bit PULA * restore A RTS TIME * subroutine time provides a nominal 0.25 sec delay PSHX * save X on stack LDX #50000 DECR DEX BNE DECR PULX * restore X RTS ORG DSCT PATT RMB 1 TEMP_1 RMB 1 TEMP_2 RMB 1 TEMP_3 RMB 1