#include <p18f4550.inc>

    CONFIG WDT=OFF
    CONFIG MCLRE = ON
    CONFIG DEBUG = OFF ;Ennek nem tudom van-e igazából jelentősége, először ezzel a beállítással tudtam programozni :)
    CONFIG LVP = OFF
    CONFIG FOSC = INTOSCIO_EC

    UDATA 0

Delay1 res 1
Delay2 res 1

    CODE 0

Start:
    CLRF PORTD
    CLRF TRISD

    CLRF Delay1
    CLRF Delay2

    BSF TRISC,7
    BSF TRISC,6
    
    ;A tblrd-vel a program memóriát akarjuk olvasni:
    BSF EECON1, EEPGD
    BCF EECON1, CFGS
    
    ;async rs232 9600BAUD (pdf255):
    ;Fosc=1MHz
    CLRF SPBRGH

    MOVLW 25
    MOVWF SPBRG

    BSF TXSTA,BRGH
    BSF BAUDCON,BRG16
    
    BSF RCSTA,SPEN

    BSF TXSTA,TXEN

Rewind:
    MOVLW UPPER str
    MOVWF TBLPTRU
    
    MOVLW HIGH str
    MOVWF TBLPTRH
    
    MOVLW LOW str
    MOVWF TBLPTRL

MainLoop:
    BTG PORTD,RD1
    ;minden egyes rewind után kiküldődik úgy egy byte,
    ;hogy a led nem negálódik, ebből tudom,
    ;hogy a rewind-re valóban sor kerül

    tblrd*+
    MOVF TABLAT, W
    BZ Rewind
    
    ;W-t kell kiküldeni RS232-re
    MOVWF TXREG

Delay:
    DECFSZ    Delay1,1
    GOTO Delay
    DECFSZ    Delay2,1
    GOTO Delay

    GOTO MainLoop
    
str:
    DB "Hello RS-232!\r\n", 0

    end
