/ cylon - rotates lights in AC back and forth 0540 7200 CLA / clear AC 0541 1353 TAD LIGHT / bit pattern 0542 7004 LOOPL, RAL / push left 0543 4354 JMS DELAY 0544 7420 SNL / skip to RAR if off end 0545 5342 JMP LOOPL 0546 7010 LOOPR, RAR / push right 0547 4354 JMS DELAY 0550 7420 SNL / skip and restart if off end 0551 5346 JMP LOOPR 0552 5342 JMP LOOPL 0553 0007 LIGHT, 0007 / 3 bits long 0554 0000 DELAY, 0000 / for return address 0555 7000 NOP 0556 7000 NOP 0567 7000 NOP 0560 2363 ISZ DELCNT / delay 4096 inner 0561 5355 JMP DELAY+1 0562 5754 JMP I DELAY / return to caller 0563 0000 DELCNT, 0000 / inside loop count / zoom - single bit at each end of AC move together then apart 0600 7200 CLA / set up AC 0601 1217 TAD LEFT / get bit that moves left 0602 1220 TAD RIGHT / include bit that moves right 0603 7000 or 4221 JMS DELAY / wait a while 0604 0217 AND LEFT / ignore right-moving bit 0605 7004 RAL / move left-moving bit along 0606 7430 SZL / if not lost it, nothing extra to do 0607 7004 RAL / otherwise move it to other end of AC 0610 3217 DCA LEFT / save that bit 0611 1220 TAD RIGHT / get the right-moving bit 0612 7010 RAR / like above, but moving right 0613 7430 SZL 0614 7010 RAR 0615 3220 DCA RIGHT 0616 5200 JMP LOOP / and repeat 0617 0001 LEFT, 0001 0620 4000 RIGHT, 4000 0621 0000 DELAY, 0000 / for return address 0622 7000 or 0217 NOP / slower is to AND left then ... 0623 7000 or 1220 NOP / ... TAD right 0624 7000 NOP 0625 2230 ISZ DELCNT / delay 4096 inner 0626 5222 JMP DELAY+1 0627 5621 JMP I DELAY / return to caller 0630 0000 DELCNT, 0000 / inside loop count / zoom2 - single bit at each end of AC move together then apart, "slowly" 0600 7200 CLA / set up AC 0601 1217 TAD LEFT / get bit that moves left 0602 1220 TAD RIGHT / include bit that moves right 0603 7000 or 4221 JMS DELAY / wait a while 0604 0217 AND LEFT / ignore right-moving bit 0605 7004 RAL / move left-moving bit along 0606 7430 SZL / if not lost it, nothing extra to do 0607 7004 RAL / otherwise move it to other end of AC 0610 3217 DCA LEFT / save that bit 0611 1220 TAD RIGHT / get the right-moving bit 0612 7010 RAR / like above, but moving right 0613 7430 SZL 0614 7010 RAR 0615 3220 DCA RIGHT 0616 5200 JMP LOOP / and repeat 0617 0001 LEFT, 0001 0620 4000 RIGHT, 4000 0621 0000 DELAY, 0000 / for return address 0622 7000 or 0217 NOP / slower is to AND left then ... 0623 7000 or 1220 NOP / ... TAD right 0624 7000 NOP 0625 7000 NOP 0626 7000 NOP 0627 7000 NOP 0630 7000 NOP 0631 2234 ISZ DELCNT / delay 4096 inner 0632 5222 JMP DELAY+1 0633 5621 JMP I DELAY / return to caller 0634 0000 DELCNT, 0000 / inside loop count / zoom3 - exactly like zoom but the bits actually disappear at the ends / - except for the bug :-) 0600 7200 CLA / set up AC 0601 1220 TAD RIGHT / include bit that moves right 0602 1217 TAD LEFT / get bit that moves left 0603 7000 or 4221 JMS DELAY / wait a while 0604 0217 AND LEFT / ignore right-moving bit 0605 7450 SNA / if we have a bit, no extra action 0606 7120 STL / else set the link to make one 0607 7004 RAL / and move a bit along 0610 3217 DCA LEFT / save for later 0611 1220 TAD RIGHT / and do likewise for the right 0612 7450 SNA 0613 7120 STL 0614 7010 RAR 0615 3220 DCA RIGHT 0616 5200 JMP LOOP / and repeat 0617 0000 LEFT, 0000 0620 0000 RIGHT, 0000 0621 0000 DELAY, 0000 / for return address 0622 7000 or 0217 NOP / slower is to AND left then ... 0623 7000 or 1220 NOP / ... TAD right 0624 7000 NOP 0625 7000 NOP 0626 7000 NOP 0627 7000 NOP 0630 7000 NOP 0631 2234 ISZ DELCNT / delay 4096 inner 0632 5222 JMP DELAY+1 0633 5621 JMP I DELAY / return to caller 0634 0000 DELCNT, 0000 / inside loop count