PORTA   EQU     $0000
PORTB   EQU     $0001
PORTPP  EQU     $0056
PORTT   EQU     $00AE
DDRA    EQU     $0002
DDRB    EQU     $0003
DDRP    EQU     $0057
DDRT    EQU     $00AF

        ORG  $0810

;0801 - ALL 1s
;0802 - ALL 0s
;0803 - MAIN LETTER
;0804 - SECONDARY LETTER
;0805 - FIRST SET
;0806 - SECOND SET
;0807 - THIRD SET
;0808 - COUNTER FROM 0 TO 7

MAIN
        JSR  SETUP
	JSR  CRLF
	LDAA $0802
	STAA PORTB
        JSR  BA
	LDAA $0802
	STAA PORTB
        JSR  BP
	LDAA $0802
	STAA PORTB
        JSR  BT
        JMP  FINALCHECK

SETUP
        LDAA #%11111111
        STAA DDRB
        STAA $0801
        LDAA #%00000000
        STAA DDRA
        STAA DDRP
        STAA DDRT
        STAA $0802
	STAA $0805
	STAA $0806
	STAA $0807
        RTS

BA
        LDAA #%01000010
        STAA $0803
        LDAA #%01000001
        STAA $0804
        LDAA $0801
        STAA PORTB
        LDAB PORTA
        STAB $0805
        JSR  EXECUTION
        LDAA $0805
        JMP  CHECK

BP
        LDAA #%01010000
        STAA $0804
        LDAA $0801
        STAA PORTB
        LDAB PORTPP
        STAB $0806
        JSR  EXECUTION
        LDAA $0806
        JMP  CHECK

BT
        LDAA #%01010100
        STAA $0804
        LDAA $0801
        STAA PORTB
        LDAB PORTT
        STAB $0807
        JSR  EXECUTION
        LDAA $0807
        JMP  CHECK

CHECK
        CMPA $0801
        BEQ  ALLONES
        JSR  ERROR
        JSR  CRLF
        RTS

ALLONES
        JSR OK
        JSR CRLF
        RTS

EXECUTION
        JSR  PORT
        LDAA $0803
        JSR  TRANSMIT
        JSR  TO
        LDAA $0804
        JSR  TRANSMIT
        JSR  EQUAL
        RTS

CRLF
        LDAA #%00001101
        JSR  TRANSMIT
        LDAA #%00001010
        JSR  TRANSMIT
        RTS

TRANSMIT
        LDAB $00C4
        LDAB $00C4
        STAA $00C7
COMPLETE
        LDAA $00C4
        ANDA #$40
        BEQ  COMPLETE
        RTS

EQUAL
        JSR  SPACE
        LDAA #%00111101
        JSR  TRANSMIT
        JSR  SPACE
        RTS

OK
        LDAA #%01001111
        JSR  TRANSMIT
        LDAA #%01001011
        JSR  TRANSMIT
        RTS

ERROR
        LDAA #%01000010
        JSR  TRANSMIT
        LDAA #%01000001
        JSR  TRANSMIT
        LDAA #%01000100
        JSR  TRANSMIT
        RTS

PORT
        LDAA #%01010000
        JSR  TRANSMIT
        LDAA #%01101111
        JSR  TRANSMIT
        LDAA #%01110010
        JSR  TRANSMIT
        LDAA #%01110100
        JSR  TRANSMIT
        JSR  SPACE
        RTS

SPACE
        LDAA #%00100000
        JSR  TRANSMIT
        RTS

TO
        JSR  SPACE
        LDAA #%01110100
        JSR  TRANSMIT
        LDAA #%01101111
        JSR  TRANSMIT
        JSR  SPACE
        RTS

BIT
        LDAA #%01000010
        JSR  TRANSMIT
        LDAA #%01101001
        JSR  TRANSMIT
        LDAA #%01110100
        JSR  TRANSMIT
        JSR  SPACE
        RTS

FINALCHECK
        LDAA $0805
        ORAA $0806
        ORAA $0807
        STAA $0807
        CMPA $0801
        BEQ  EQUALONE
        LDAA #%00110000
        STAA $0808
        JSR  CRLF
CONTINUECHECK
        JSR  BIT
        LDAA $0808
        JSR  TRANSMIT
        JSR  EQUAL
        LDAA $0808
        INCA
        STAA $0808
        LDAB $0807
        ANDB #%00000001
        BNE  PRINTOK
        JSR  ERROR
        JSR  SPACE
CONTINUE
        LDAA $0808
        LDAB $0807
        RORB
        STAB $0807
        CMPA #%00111000
        BEQ  DONE
        CMPA #%00110100
        BEQ  NEWLINE
        JMP  CONTINUECHECK

PRINTOK
        JSR  OK
        JSR  SPACE
        JSR  SPACE
        JMP  CONTINUE

NEWLINE
        JSR CRLF
        JMP CONTINUECHECK

EQUALONE
        JSR  CRLF
        JSR  PORT
        LDAA #%01000010 ;"B"
        JSR  TRANSMIT
        JSR  EQUAL
        JSR  OK
        JSR  CRLF
        JSR  CRLF
        JMP  DONE

DONE
        JMP  DONE