Login

Subversion Repositories NedoOS

Rev

Rev 1346 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

    MODULE Uart

init:
;╨╕╨╜╨╕╤Ж╨╕╨░╨╗╨╕╨╖╨╕╤А╤Г╨╡╨╝ ╨┐╨╛╤А╤В
                di
                ld      bc,#55FE        ;55FEh
                in      a,(c)           ;╨Я╨╡╤А╨╡╤Е╨╛╨┤ ╨▓ ╤А╨╡╨╢╨╕╨╝ ╨║╨╛╨╝╨░╨╜╨┤╤Л
                ld      b,#C3           ;╨║╨╛╨╝╨░╨╜╨┤╨░ - ╤Г╤Б╤В╨░╨╜╨╛╨▓╨╕╤В╤М ╤Б╨║╨╛╤А╨╛╤Б╤В╤М ╨┐╨╛╤А╤В╨░
                in      a,(c)
                ld      b,3                     ;╨┐╨░╤А╨░╨╝╨╡╤В╤А - ╤Г╤Б╤В╨░╨╜╨╛╨▓╨╕╤В╤М ╤Б╨║╨╛╤А╨╛╤Б╤В╤М ╨┐╨╛╤А╤В╨░ 19200(6) 38400(3) 115200(1) 57600(2) 9600(12) 14400(8)
                in      a,(c)
                ei
                ret
read:
                di
read2:
                ld      bc,#55FE        ;55FEh
                in      a,(c)           ;╨Я╨╡╤А╨╡╤Е╨╛╨┤ ╨▓ ╤А╨╡╨╢╨╕╨╝ ╨║╨╛╨╝╨░╨╜╨┤╤Л
                ld      b,#C2           ;╨║╨╛╨╝╨░╨╜╨┤╨░ - ╤З╤В╨╡╨╜╨╕╨╡ ╤Б╤З╨╡╤В╤З╨╕╨║╨░ ╨▒╤Г╤Д╨╡╤А╨░ ╨┐╤А╨╕╨╡╨╝╨░
                in      a,(c)           ;╨Я╨╛╨╗╤Г╤З╨╕╨╗╨╕ ╤З╨╕╤Б╨╗╨╛ ╨▒╨░╨╣╤В ╨▓ ╨▒╤Г╤Д╨╡╤А╨╡

                or a
                jp nz,togetb    ; ╨Т ╨▒╤Г╤Д╨╡╤А╨╡ ╨╡╤Б╤В╤М ╨▒╨░╨╣╤В
                call startrts2  ; ╨▓ ╨▒╤Г╤Д╨╡╤А╨╡ ╨╜╨╡╤В ╨▒╨░╨╣╤В╨░, ╨┐╤А╨╕╨┐╨╛╨┤╨╜╨╕╨╝╨╡╨╝ ╨╜╨░ ╤Б╨╡╨║╤Г╨╜╨┤╨╛╤З╨║╤Г RTS
                jp read2                ; ╨Р ╤В╨╡╨┐╨╡╤А╤М ╨╡╤Б╤В╤М?

togetb:        
                ld      bc,#55FE        ;╨┐╨╛╨┤╨░╤В╤М ╨║╨╛╨╝╨╜╨░╨┤╤Г ╨║╨╛╨╜╤В╤А╨╛╨╗╨╗╨╡╤А╤Г ╨║╨╗╨░╨▓╨╕╨░╤В╤Г╤А╤Л
                in      a,(c)           ;╨Я╨╡╤А╨╡╤Е╨╛╨┤ ╨▓ ╤А╨╡╨╢╨╕╨╝ ╨║╨╛╨╝╨░╨╜╨┤╤Л
                ld      b,#02           ;╨║╨╛╨╝╨░╨╜╨┤╨░ - ╤З╤В╨╡╨╜╨╕╨╡
                in      a,(c)           ;╨Я╨╛╨╗╤Г╤З╨░╨╡╨╝ ╨▒╨░╨╣╤В ╨▓ ╨Р
                ei
                ret    

write:
                di
                push bc
                push de        

                ld  d, a                ;╨Т ╨Р ╨┐╨╛╨╗╤Г╤З╨░╨╡╨╝ ╨▒╨░╨╣╤В, ╤Б╨╛╤А╨░╨╜╤П╨╡╨╝ ╨╡╨│╨╛ ╨▓ D
readytx:
                ld      bc,#55FE        ;55FEh
                in      a,(c)           ;╨Я╨╡╤А╨╡╤Е╨╛╨┤ ╨▓ ╤А╨╡╨╢╨╕╨╝ ╨║╨╛╨╝╨░╨╜╨┤╤Л
                ld      b,#42           ;╨║╨╛╨╝╨░╨╜╨┤╨░ - ╨┐╤А╨╛╤З╨╡╤Б╤В╤М ╤Б╤В╨░╤В╤Г╤Б
                in      a,(c)
                bit      6,a            ;╨Я╨░╤А╨░╨╝╨╡╤В╤А╤Л - TX
                jp z,readytx    ; ╨▓╨╡╤А╨╜╤Г╤В╤М╤Б╤П ╨╡╤Б╨╗╨╕ ╨▒╨░╨╣╤В╨░ ╨╜╨╡╤В

                ld      bc,#55FE        ;55FEh
                in      a,(c)           ;╨Я╨╡╤А╨╡╤Е╨╛╨┤ ╨▓ ╤А╨╡╨╢╨╕╨╝ ╨║╨╛╨╝╨░╨╜╨┤╤Л
                ld      b,#03           ;╨╖╨░╨┐╨╕╤Б╤М
                in      a,(c)
                ld      b,d                     ;╨С╨Р╨Щ╨в ╨┤╨╗╤П ╨┐╨╡╤А╨╡╤Б╤Л╨╗╨║╨╕
                in      a,(c)           ; ->
                pop de
                pop bc
                ei             
                ret

startrts2
                ld      bc,#55FE        ;55FEh
                in      a,(c)           ;╨Я╨╡╤А╨╡╤Е╨╛╨┤ ╨▓ ╤А╨╡╨╢╨╕╨╝ ╨║╨╛╨╝╨░╨╜╨┤╤Л
                ld      b,#43           ;╨║╨╛╨╝╨░╨╜╨┤╨░ - ╤Г╤Б╤В╨░╨╜╨╛╨▓╨╕╤В╤М ╤Б╤В╨░╤В╤Г╤Б
                IN      a,(c)
                ld      b,#03           ;╨Я╨░╤А╨░╨╝╨╡╤В╤А╤Л - ╤Г╨▒╤А╨░╤В╤М RTS (START)
                in      a, (c)
               
;               EX (SP),HL
;               EX (SP),HL
                push de
                pop  de
               
                ld      bc,#55FE        ;55FEh
                in      a,(c)           ;╨Я╨╡╤А╨╡╤Е╨╛╨┤ ╨▓ ╤А╨╡╨╢╨╕╨╝ ╨║╨╛╨╝╨░╨╜╨┤╤Л
                ld      b,#43           ;╨║╨╛╨╝╨░╨╜╨┤╨░ - ╤Г╤Б╤В╨░╨╜╨╛╨▓╨╕╤В╤М ╤Б╤В╨░╤В╤Г╤Б
                in      a,(c)
                ld      b,0                     ;╨Я╨░╤А╨░╨╝╨╡╤В╤А╤Л - ╤Г╤Б╤В╨░╨╜╨╛╨▓╨╕╤В╤М RTS (STOP)
                in      a,(c)
                ret

    ENDMODULE