
    processor 16F84A
    #include <P16F84A.INC>
    __config _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC ; 0x3FF1

; RAM-Variable
LRAM_0x0C equ 0x0C
LRAM_0x0D equ 0x0D
LRAM_0x0E equ 0x0E
LRAM_0x0F equ 0x0F
LRAM_0x10 equ 0x10
LRAM_0x11 equ 0x11
LRAM_0x12 equ 0x12
LRAM_0x13 equ 0x13
LRAM_0x14 equ 0x14
LRAM_0x15 equ 0x15
LRAM_0x16 equ 0x16
LRAM_0x17 equ 0x17
LRAM_0x18 equ 0x18

; Program

    Org 0x0000

;   Reset-Vector
    GOTO LADR_0x00A7
LADR_0x0001
    MOVWF LRAM_0x10
    MOVWF LRAM_0x15
LADR_0x0003
    MOVLW 0xF9           ;   b'11111001'  d'249'
;   Interrupt-Vector
    MOVWF FSR
LADR_0x0005
    NOP
    DECFSZ FSR,F
    GOTO LADR_0x0005
    DECFSZ LRAM_0x15,F
    GOTO LADR_0x0003
LADR_0x000A
    CLRF LRAM_0x10
LADR_0x000B
    MOVLW 0x20           ;   b'00100000'  d'032'  " "
    SUBWF LRAM_0x10,W
    BTFSC STATUS,C
    GOTO LADR_0x0025
    BSF PORTA,0          ; !!Bank!! PORTA - TRISA
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    BCF PORTA,0          ; !!Bank!! PORTA - TRISA
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    INCF LRAM_0x10,F
    GOTO LADR_0x000B
LADR_0x0025
    CLRF LRAM_0x10
LADR_0x0026
    MOVLW 0x20           ;   b'00100000'  d'032'  " "
    SUBWF LRAM_0x10,W
    BTFSC STATUS,C
    GOTO LADR_0x0040
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    INCF LRAM_0x10,F
    GOTO LADR_0x0026
LADR_0x0040
    RETURN
LADR_0x0041
    CLRF LRAM_0x10
LADR_0x0042
    MOVLW 0x20           ;   b'00100000'  d'032'  " "
    SUBWF LRAM_0x10,W
    BTFSC STATUS,C
    GOTO LADR_0x005C
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    INCF LRAM_0x10,F
    GOTO LADR_0x0042
LADR_0x005C
    CLRF LRAM_0x10
LADR_0x005D
    MOVLW 0x20           ;   b'00100000'  d'032'  " "
    SUBWF LRAM_0x10,W
    BTFSC STATUS,C
    GOTO LADR_0x0077
    BSF PORTA,0          ; !!Bank!! PORTA - TRISA
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    BCF PORTA,0          ; !!Bank!! PORTA - TRISA
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    INCF LRAM_0x10,F
    GOTO LADR_0x005D
LADR_0x0077
    RETURN
LADR_0x0078
    CALL LADR_0x0041
    CALL LADR_0x0041
    MOVF LRAM_0x12,F
    BTFSS STATUS,Z
    GOTO LADR_0x007F
    CALL LADR_0x000A
    GOTO LADR_0x0080
LADR_0x007F
    CALL LADR_0x0041
LADR_0x0080
    MOVLW 0x10           ;   b'00010000'  d'016'
    MOVWF LRAM_0x0E
    CLRF LRAM_0x0F
LADR_0x0083
    MOVLW 0x05           ;   b'00000101'  d'005'
    SUBWF LRAM_0x0F,W
    BTFSC STATUS,C
    GOTO LADR_0x0092
    MOVF LRAM_0x0E,W
    ANDWF LRAM_0x14,W
    BTFSC STATUS,Z
    GOTO LADR_0x008D
    CALL LADR_0x0041
    GOTO LADR_0x008E
LADR_0x008D
    CALL LADR_0x000A
LADR_0x008E
    BCF STATUS,C
    RRF LRAM_0x0E,F
    INCF LRAM_0x0F,F
    GOTO LADR_0x0083
LADR_0x0092
    MOVLW 0x20           ;   b'00100000'  d'032'  " "
    MOVWF LRAM_0x0E
    CLRF LRAM_0x0F
LADR_0x0095
    MOVLW 0x06           ;   b'00000110'  d'006'
    SUBWF LRAM_0x0F,W
    BTFSC STATUS,C
    GOTO LADR_0x00A4
    MOVF LRAM_0x0E,W
    ANDWF LRAM_0x13,W
    BTFSC STATUS,Z
    GOTO LADR_0x009F
    CALL LADR_0x0041
    GOTO LADR_0x00A0
LADR_0x009F
    CALL LADR_0x000A
LADR_0x00A0
    BCF STATUS,C
    RRF LRAM_0x0E,F
    INCF LRAM_0x0F,F
    GOTO LADR_0x0095
LADR_0x00A4
    BCF PORTA,0          ; !!Bank!! PORTA - TRISA
    MOVLW 0x71           ;   b'01110001'  d'113'  "q"
    GOTO LADR_0x0001
LADR_0x00A7
    CLRWDT
    MOVLW 0x81           ;   b'10000001'  d'129'
    BSF STATUS,RP0       ; !!Bank Register-Bank(0/1)-Select
    MOVWF TMR0           ; !!Bank!! TMR0 - OPTION_REG
    MOVLW 0xFC           ;   b'11111100'  d'252'
    MOVWF PORTA          ; !!Bank!! PORTA - TRISA
    MOVLW 0xF0           ;   b'11110000'  d'240'
    MOVWF PORTB          ; !!Bank!! PORTB - TRISB
    BCF STATUS,RP0       ; !!Bank Register-Bank(0/1)-Select
    MOVWF PORTB          ; !!Bank!! PORTB - TRISB
    CLRF PORTA           ; !!Bank!! PORTA - TRISA
    MOVLW 0xC8           ;   b'11001000'  d'200'
    CALL LADR_0x0001
    MOVLW 0xC8           ;   b'11001000'  d'200'
    CALL LADR_0x0001
    MOVLW 0xC8           ;   b'11001000'  d'200'
    CALL LADR_0x0001
    MOVLW 0x02           ;   b'00000010'  d'002'
    MOVWF PORTA          ; !!Bank!! PORTA - TRISA
    MOVLW 0x1D           ;   b'00011101'  d'029'
    MOVWF LRAM_0x17
    MOVWF LRAM_0x14
    CLRF LRAM_0x0C
LADR_0x00BE
    MOVLW 0x08           ;   b'00001000'  d'008'
    SUBWF LRAM_0x0C,W
    BTFSC STATUS,C
    GOTO LADR_0x00C8
    MOVLW 0x19           ;   b'00011001'  d'025'
    ADDWF LRAM_0x0C,W
    MOVWF FSR
    CLRF INDF
    INCF LRAM_0x0C,F
    GOTO LADR_0x00BE
LADR_0x00C8
    CLRF LRAM_0x16
LADR_0x00C9
    MOVLW 0xF0           ;   b'11110000'  d'240'
    MOVWF PORTB          ; !!Bank!! PORTB - TRISB
    BSF INTCON,RBIE
    BCF INTCON,RBIF
    SLEEP
    NOP
    MOVLW 0x10           ;   b'00010000'  d'016'
    ANDWF PORTA,W        ; !!Bank!! PORTA - TRISA
    MOVWF LRAM_0x18
    MOVLW 0x80           ;   b'10000000'  d'128'
    MOVWF LRAM_0x13
    BCF INTCON,RBIE
    BCF INTCON,RBIF
    BTFSC PORTB,4        ; !!Bank!! PORTB - TRISB
    GOTO LADR_0x00DA
    CLRF LRAM_0x13
    CALL LADR_0x017B
LADR_0x00DA
    BTFSC PORTB,5        ; !!Bank!! PORTB - TRISB
    GOTO LADR_0x00DF
    MOVLW 0x04           ;   b'00000100'  d'004'
    MOVWF LRAM_0x13
    CALL LADR_0x017B
LADR_0x00DF
    BTFSC PORTB,6        ; !!Bank!! PORTB - TRISB
    GOTO LADR_0x00E4
    MOVLW 0x08           ;   b'00001000'  d'008'
    MOVWF LRAM_0x13
    CALL LADR_0x017B
LADR_0x00E4
    BTFSC PORTB,7        ; !!Bank!! PORTB - TRISB
    GOTO LADR_0x00E9
    MOVLW 0x0C           ;   b'00001100'  d'012'
    MOVWF LRAM_0x13
    CALL LADR_0x017B
LADR_0x00E9
    MOVF LRAM_0x13,W
    XORLW 0x80           ;   b'10000000'  d'128'
    BTFSC STATUS,Z
    GOTO LADR_0x015C
    MOVF LRAM_0x18,F
    BTFSS STATUS,Z
    GOTO LADR_0x010A
    MOVLW 0x10           ;   b'00010000'  d'016'
    SUBWF LRAM_0x13,W
    BTFSC STATUS,C
    GOTO LADR_0x0107
    MOVLW 0x0F           ;   b'00001111'  d'015'
    ANDWF LRAM_0x13,W
    IORLW 0x10           ;   b'00010000'  d'016'
    MOVWF LRAM_0x14
    MOVF LRAM_0x17,W
    XORWF LRAM_0x14,W
    BTFSC STATUS,Z
    GOTO LADR_0x0107
    CLRF LRAM_0x0C
LADR_0x00FD
    MOVLW 0x08           ;   b'00001000'  d'008'
    SUBWF LRAM_0x0C,W
    BTFSC STATUS,C
    GOTO LADR_0x0107
    MOVLW 0x19           ;   b'00011001'  d'025'
    ADDWF LRAM_0x0C,W
    MOVWF FSR
    CLRF INDF
    INCF LRAM_0x0C,F
    GOTO LADR_0x00FD
LADR_0x0107
    MOVLW 0x80           ;   b'10000000'  d'128'
    MOVWF LRAM_0x13
    GOTO LADR_0x015C
LADR_0x010A
    MOVF LRAM_0x13,W
    XORLW 0x4C           ;   b'01001100'  d'076'  "L"
    BTFSS STATUS,Z
    GOTO LADR_0x012C
    MOVLW 0x10           ;   b'00010000'  d'016'
    ADDWF LRAM_0x16,F
    MOVF LRAM_0x16,W
    XORLW 0x30           ;   b'00110000'  d'048'  "0"
    BTFSC STATUS,Z
    CLRF LRAM_0x16
    BCF PORTA,1          ; !!Bank!! PORTA - TRISA
    MOVLW 0x64           ;   b'01100100'  d'100'  "d"
    CALL LADR_0x0001
    BSF PORTA,1          ; !!Bank!! PORTA - TRISA
    MOVLW 0x64           ;   b'01100100'  d'100'  "d"
    CALL LADR_0x0001
    MOVLW 0x10           ;   b'00010000'  d'016'
    SUBWF LRAM_0x16,W
    BTFSC STATUS,C
    BCF PORTA,1          ; !!Bank!! PORTA - TRISA
    MOVLW 0x64           ;   b'01100100'  d'100'  "d"
    CALL LADR_0x0001
    BSF PORTA,1          ; !!Bank!! PORTA - TRISA
    MOVLW 0x64           ;   b'01100100'  d'100'  "d"
    CALL LADR_0x0001
    MOVLW 0x20           ;   b'00100000'  d'032'  " "
    SUBWF LRAM_0x16,W
    BTFSC STATUS,C
    BCF PORTA,1          ; !!Bank!! PORTA - TRISA
    MOVLW 0x64           ;   b'01100100'  d'100'  "d"
    CALL LADR_0x0001
    BSF PORTA,1          ; !!Bank!! PORTA - TRISA
    MOVLW 0x80           ;   b'10000000'  d'128'
    MOVWF LRAM_0x13
LADR_0x012C
    MOVLW 0x10           ;   b'00010000'  d'016'
    SUBWF LRAM_0x13,W
    BTFSC STATUS,C
    GOTO LADR_0x015C
    MOVLW 0x07           ;   b'00000111'  d'007'
    ANDWF LRAM_0x13,W
    MOVWF LRAM_0x0C
    MOVLW 0x01           ;   b'00000001'  d'001'
    MOVWF LRAM_0x0D
    MOVF LRAM_0x0C,W
    BTFSC STATUS,Z
    GOTO LADR_0x013D
    MOVWF LRAM_0x0E
LADR_0x0139
    BCF STATUS,C
    RLF LRAM_0x0D,F
    DECFSZ LRAM_0x0E,F
    GOTO LADR_0x0139
LADR_0x013D
    MOVLW 0x30           ;   b'00110000'  d'048'  "0"
    ANDWF LRAM_0x16,W
    IORWF LRAM_0x13,F
    BCF STATUS,C
    RRF LRAM_0x13,W
    MOVWF LRAM_0x0C
    BCF STATUS,C
    RRF LRAM_0x0C,F
    BCF STATUS,C
    RRF LRAM_0x0C,F
    MOVLW 0x19           ;   b'00011001'  d'025'
    ADDWF LRAM_0x0C,W
    MOVWF FSR
    MOVF LRAM_0x0D,W
    ANDWF INDF,W
    BTFSC STATUS,Z
    GOTO LADR_0x0155
    MOVLW 0x19           ;   b'00011001'  d'025'
    ADDWF LRAM_0x0C,W
    MOVWF FSR
    COMF LRAM_0x0D,W
    ANDWF INDF,F
    CLRF LRAM_0x12
    GOTO LADR_0x015C
LADR_0x0155
    MOVLW 0x19           ;   b'00011001'  d'025'
    ADDWF LRAM_0x0C,W
    MOVWF FSR
    MOVF LRAM_0x0D,W
    IORWF INDF,F
    MOVLW 0x01           ;   b'00000001'  d'001'
    MOVWF LRAM_0x12
LADR_0x015C
    MOVLW 0x40           ;   b'01000000'  d'064'  "@"
    SUBWF LRAM_0x13,W
    BTFSC STATUS,C
    GOTO LADR_0x00C9
    BCF PORTA,1          ; !!Bank!! PORTA - TRISA
    CALL LADR_0x0078
    BSF PORTA,1          ; !!Bank!! PORTA - TRISA
    CALL LADR_0x0078
    MOVLW 0x10           ;   b'00010000'  d'016'
    SUBWF LRAM_0x13,W
    BTFSC STATUS,C
    BCF PORTA,1          ; !!Bank!! PORTA - TRISA
    CALL LADR_0x0078
    BSF PORTA,1          ; !!Bank!! PORTA - TRISA
    CALL LADR_0x0078
    MOVLW 0x20           ;   b'00100000'  d'032'  " "
    SUBWF LRAM_0x13,W
    BTFSC STATUS,C
    BCF PORTA,1          ; !!Bank!! PORTA - TRISA
    CALL LADR_0x0078
    BSF PORTA,1          ; !!Bank!! PORTA - TRISA
LADR_0x0171
    MOVLW 0xF0           ;   b'11110000'  d'240'
    MOVWF PORTB          ; !!Bank!! PORTB - TRISB
    ANDWF PORTB,W        ; !!Bank!! PORTB - TRISB
    MOVWF LRAM_0x0D
    XORLW 0xF0           ;   b'11110000'  d'240'
    BTFSS STATUS,Z
    GOTO LADR_0x0171
    MOVLW 0x32           ;   b'00110010'  d'050'  "2"
    CALL LADR_0x0001
    GOTO LADR_0x00C9
LADR_0x017B
    MOVF LRAM_0x13,W
    MOVWF LRAM_0x11
    MOVLW 0x01           ;   b'00000001'  d'001'
    MOVWF LRAM_0x10
    CLRF LRAM_0x0E
LADR_0x0180
    MOVLW 0x04           ;   b'00000100'  d'004'
    SUBWF LRAM_0x0E,W
    BTFSC STATUS,C
    GOTO LADR_0x0194
    MOVF LRAM_0x10,W
    MOVWF PORTB          ; !!Bank!! PORTB - TRISB
    MOVLW 0xF0           ;   b'11110000'  d'240'
    ANDWF PORTB,W        ; !!Bank!! PORTB - TRISB
    MOVWF LRAM_0x0F
    MOVLW 0xF0           ;   b'11110000'  d'240'
    MOVWF PORTB          ; !!Bank!! PORTB - TRISB
    MOVF LRAM_0x0F,W
    XORLW 0xF0           ;   b'11110000'  d'240'
    BTFSC STATUS,Z
    RETURN
    INCF LRAM_0x13,F
    BCF STATUS,C
    RLF LRAM_0x10,F
    INCF LRAM_0x0E,F
    GOTO LADR_0x0180
LADR_0x0194
    MOVLW 0x40           ;   b'01000000'  d'064'  "@"
    IORWF LRAM_0x11,W
    MOVWF LRAM_0x13
    RETURN

    End
