; original File = C:\tmp\Downloads\uChip\DisAsm\4 csöves nixie program 16F84.hex

	ifdef __16F84A
   		processor 16F84A
		#include <P16F84A.INC>
		__config _CP_OFF & _PWRTE_OFF & _WDT_OFF & _XT_OSC ; 0x3FF9
	endif

	ifdef __16F628
		processor 16F628
		#include <P16F628.INC>
		__config _CP_OFF & _PWRTE_OFF & _WDT_OFF & _XT_OSC & _LVP_OFF & _BODEN_OFF ; 0x3FF9
	endif
	ifdef __16F628A
		processor 16F628A
		#include <P16F628A.INC>
		__config _CP_OFF & _PWRTE_OFF & _WDT_OFF & _XT_OSC & _LVP_OFF & _BODEN_OFF ; 0x3FF9
	endif

;   __idlocs 0xF0, 0xF0, 0xF0, 0xF0

;   EEPROM-Data
    Org 0x2100
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF   ;  ........
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF   ;  ........
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF   ;  ........
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF   ;  ........
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF   ;  ........
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF   ;  ........
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF   ;  ........
    DE 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF   ;  ........

; RAM-Variable
	cblock 0x20
LRAM_0x0C
LRAM_0x0D
LRAM_0x0E
LRAM_0x0F
LRAM_0x10
LRAM_0x11
LRAM_0x13
LRAM_0x14
LRAM_0x15
LRAM_0x16
LRAM_0x17
	endc

; Program

    Org 0x0000

;   Reset-Vector
    GOTO LADR_0x006E
    ADDLW 0xFF           ;   b'11111111'  d'255'
    ADDLW 0xFF           ;   b'11111111'  d'255'
    ADDLW 0xFF           ;   b'11111111'  d'255'
;   Interrupt-Vector
    MOVWF LRAM_0x16
    SWAPF STATUS,W
    MOVWF LRAM_0x17
    DECFSZ LRAM_0x11,F
    GOTO LADR_0x0011
    MOVLW 0x01           ;   b'00000001'  d'001'
    MOVWF LRAM_0x11
    CALL LADR_0x0033
    BCF LRAM_0x13,3
    MOVLW 0x07           ;   b'00000111'  d'007'
    ANDWF PORTB,W        ; !!Bank!! PORTB - TRISB
    BTFSS STATUS,Z
    BSF LRAM_0x13,3
LADR_0x0011
    DECFSZ LRAM_0x14,F
    GOTO LADR_0x001B
    MOVLW 0xC8           ;   b'11001000'  d'200'
    MOVWF LRAM_0x14
    BSF LRAM_0x13,1
    DECFSZ LRAM_0x15,F
    GOTO LADR_0x001B
    MOVLW 0x3C           ;   b'00111100'  d'060'  "<"
    MOVWF LRAM_0x15
    BSF LRAM_0x13,2
LADR_0x001B
    SWAPF LRAM_0x17,W
    MOVWF STATUS
    SWAPF LRAM_0x16,F
    SWAPF LRAM_0x16,W
    BCF INTCON,T0IF
    RETFIE
LADR_0x0021
    ADDWF PCL,F          ; !!Program-Counter-Modification
    RETLW 0x00           ;   b'00000000'  d'000'
    RETLW 0x01           ;   b'00000001'  d'001'
    RETLW 0x02           ;   b'00000010'  d'002'
    RETLW 0x04           ;   b'00000100'  d'004'
    RETLW 0x08           ;   b'00001000'  d'008'
LADR_0x0027
    ADDWF PCL,F          ; !!Program-Counter-Modification
    RETLW 0x30           ;   b'00110000'  d'048'  "0"
    RETLW 0x20           ;   b'00100000'  d'032'  " "
    RETLW 0x00           ;   b'00000000'  d'000'
    RETLW 0x10           ;   b'00010000'  d'016'
    RETLW 0x40           ;   b'01000000'  d'064'  "@"
    RETLW 0xD0           ;   b'11010000'  d'208'
    RETLW 0x90           ;   b'10010000'  d'144'
    RETLW 0x80           ;   b'10000000'  d'128'
    RETLW 0x50           ;   b'01010000'  d'080'  "P"
    RETLW 0xC0           ;   b'11000000'  d'192'
    RETLW 0xF0           ;   b'11110000'  d'240'
LADR_0x0033
    MOVF LRAM_0x10,W
    CALL LADR_0x0021
    MOVWF PORTA          ; !!Bank!! PORTA - TRISA
    MOVLW 0x0B           ;   b'00001011'  d'011'
    MOVWF FSR
    MOVF LRAM_0x10,W
    ADDWF FSR,F
    MOVF INDF,W
    CALL LADR_0x0027
    MOVWF PORTB          ; !!Bank!! PORTB - TRISB
    DECFSZ LRAM_0x10,F
    GOTO LADR_0x0041
    MOVLW 0x04           ;   b'00000100'  d'004'
    MOVWF LRAM_0x10
LADR_0x0041
    RETURN
LADR_0x0042
    INCF LRAM_0x0F,F
    MOVLW 0x0A           ;   b'00001010'  d'010'
    SUBWF LRAM_0x0F,W
    BTFSS STATUS,Z
    GOTO LADR_0x0061
    CLRF LRAM_0x0F
    INCF LRAM_0x0E,F
    MOVLW 0x06           ;   b'00000110'  d'006'
    SUBWF LRAM_0x0E,W
    BTFSS STATUS,Z
    GOTO LADR_0x0061
    CLRF LRAM_0x0E
LADR_0x004E
    INCF LRAM_0x0D,F
    MOVLW 0x0A           ;   b'00001010'  d'010'
    SUBWF LRAM_0x0D,W
    BTFSS STATUS,Z
    GOTO LADR_0x0055
    CLRF LRAM_0x0D
    INCF LRAM_0x0C,F
LADR_0x0055
    MOVLW 0x02           ;   b'00000010'  d'002'
    SUBWF LRAM_0x0C,W
    BTFSS STATUS,Z
    GOTO LADR_0x0061
    MOVLW 0x04           ;   b'00000100'  d'004'
    SUBWF LRAM_0x0D,W
    BTFSS STATUS,Z
    GOTO LADR_0x0061
    CLRF LRAM_0x0C
    CLRF LRAM_0x0D
    MOVLW 0x0A           ;   b'00001010'  d'010'
    ADDWF LRAM_0x15,W
LADR_0x0061
    BCF LRAM_0x13,2
    RETURN
LADR_0x0063
    MOVLW 0x02           ;   b'00000010'  d'002'
    ANDWF PORTB,W        ; !!Bank!! PORTB - TRISB
    BTFSC STATUS,Z
    CALL LADR_0x004E
    MOVLW 0x01           ;   b'00000001'  d'001'
    ANDWF PORTB,W        ; !!Bank!! PORTB - TRISB
    BTFSC STATUS,Z
    CALL LADR_0x0042
LADR_0x006B
    BTFSC LRAM_0x13,3
    GOTO LADR_0x006B
    RETURN
LADR_0x006E
	ifdef	CMCON
		movlw	0x07
		movwf	CMCON
	endif
    CLRF PORTA           ; !!Bank!! PORTA - TRISA
    CLRF PORTB           ; !!Bank!! PORTB - TRISB
    BSF STATUS,RP0       ; !!Bank Register-Bank(0/1)-Select
    MOVLW 0x10           ;   b'00010000'  d'016'
    MOVWF PORTA          ; !!Bank!! PORTA - TRISA
    MOVLW 0x03           ;   b'00000011'  d'003'
    MOVWF PORTB          ; !!Bank!! PORTB - TRISB
    BCF STATUS,RP0       ; !!Bank Register-Bank(0/1)-Select
    CLRF TMR0            ; !!Bank!! TMR0 - OPTION_REG
    BCF INTCON,T0IF
    BSF INTCON,GIE
    BSF INTCON,T0IE
    BSF STATUS,RP0       ; !!Bank Register-Bank(0/1)-Select
    MOVLW 0xD3           ;   b'11010011'  d'211'
    MOVWF TMR0           ; !!Bank!! TMR0 - OPTION_REG
    BCF STATUS,RP0       ; !!Bank Register-Bank(0/1)-Select
    CLRF TMR0            ; !!Bank!! TMR0 - OPTION_REG
    CLRF LRAM_0x0C
    CLRF LRAM_0x0D
    CLRF LRAM_0x0E
    CLRF LRAM_0x0F
    CLRF LRAM_0x13
    MOVLW 0x04           ;   b'00000100'  d'004'
    MOVWF LRAM_0x10
    MOVLW 0xC8           ;   b'11001000'  d'200'
    MOVWF LRAM_0x14
    MOVLW 0x3C           ;   b'00111100'  d'060'  "<"
    MOVWF LRAM_0x15
LADR_0x008A
    BTFSC LRAM_0x13,2
    CALL LADR_0x0042
    BTFSC LRAM_0x13,3
    CALL LADR_0x0063
    GOTO LADR_0x008A

    End
