	;Bcon508A.asm
        ;Project: "Rotating Beacon" - for a 508A 
	;List P = 12C508A, F = INHX8M 
	;#include <p12C508A.inc> 
	; __CONFIG 09h  _MCLRE_OFF & _CP_OFF & _WDT_OFF & _IntRC_OSC


	ORG 0		;Start of memory for the program
SetUp	MOVLW 08	;Load W with 0000 1000
	TRIS 06		;Make RB3, (GP3) input	
	OPTION 0DFh  	;Make GP2 an output & disable weak pullups		
	MOVLW 17h 	;Make GP0, GP1, GP2, GP4, GP5  HIGH 
	MOVWF 06	
	GOTO Main

Main	BSF 06,5	;Turn on LHS sinking transistor
	NOP
	NOP
	BCF 06,0
	MOVLW 42h	;Create 50mS delay
	MOVWF 1B
Del1	DECFSZ 1A,1	
	GOTO Del1
	MOVLW 01h
	XORWF 06,1	
	DECFSZ 1B,1
	GOTO Del1
	BSF 06,0	
	BCF 06,1
	MOVLW 42h	;Create 50mS delay
	MOVWF 1B
Del2	DECFSZ 1A,1	
	GOTO Del2
	MOVLW 02h
	XORWF 06,1	
	DECFSZ 1B,1
	GOTO Del2
	BSF 06,1
	BCF 06,2
	MOVLW 42h	;Create 50mS delay
	MOVWF 1B
Del3	DECFSZ 1A,1	
	GOTO Del3
	MOVLW 04h
	XORWF 06,1	
	DECFSZ 1B,1
	GOTO Del3
	BSF 06,2
	BCF 06,4
	MOVLW 42h	;Create 50mS delay
	MOVWF 1B
Del4	DECFSZ 1A,1	
	GOTO Del4
	MOVLW 10h
	XORWF 06,1	
	DECFSZ 1B,1
	GOTO Del4
	BSF 06,4	
	BCF 06,5	;Turn on RHS sinking transistor	
	BCF 06,0
	MOVLW 42h	;Create 50mS delay
	MOVWF 1B
Del5	DECFSZ 1A,1	
	GOTO Del5
	MOVLW 01h
	XORWF 06,1	
	DECFSZ 1B,1
	GOTO Del5
	BSF 06,0	
	BCF 06,1
	MOVLW 42h	;Create 50mS delay
	MOVWF 1B
Del6	DECFSZ 1A,1	
	GOTO Del6
	MOVLW 02h
	XORWF 06,1	
	DECFSZ 1B,1
	GOTO Del6
	BSF 06,1
	BCF 06,2
	MOVLW 42h	;Create 50mS delay
	MOVWF 1B
Del7	DECFSZ 1A,1	
	GOTO Del7
	MOVLW 04h
	XORWF 06,1	
	DECFSZ 1B,1
	GOTO Del7
	BSF 06,2
	BCF 06,4
	MOVLW 42h	;Create 50mS delay
	MOVWF 1B
Del8	DECFSZ 1A,1	
	GOTO Del8
	MOVLW 10h
	XORWF 06,1	
	DECFSZ 1B,1
	GOTO Del8
	BSF 06,4
Loop	BTFSC 06,3			
	GOTO Main
	NOP
	GOTO Loop

	END		;Tells assembler end of program


