?login_element?

Subversion Repositories NedoOS

Rev

Rev 2099 | Blame | Compare with Previous | Last modification | View Log | Download

  1.     MODULE Uart
  2. init:
  3. ;инициализируем порт
  4.                 di
  5.                 ld      bc,#55FE        ;55FEh
  6.                 in      a,(c)           ;Переход в режим команды
  7.                 ld      b,0xc3          ;команда - установить скорость порта
  8.                 in      a,(c)
  9.                 ld      b,3                     ;параметр - установить скорость порта 19200(6) 38400(3) 115200(1) 57600(2) 9600(12) 14400(8)
  10.                 in      a,(c)
  11.                 ei
  12.                 ret
  13. read:
  14.                 di
  15. read2:
  16.                 ld      bc,#55FE        ;55FEh
  17.                 in      a,(c)           ;Переход в режим команды
  18.                 ld      b,0xc2          ;команда - чтение счетчика буфера приема
  19.                 in      a,(c)           ;Получили число байт в буфере
  20.                 or a
  21.                 jp nz,togetb    ; В буфере есть байт
  22.                 call startrts2  ; в буфере нет байта, приподнимем на секундочку RTS
  23.                 jp read2                ; А теперь есть?
  24.  
  25. togetb:        
  26.                 ld      bc,#55FE        ;подать комнаду контроллеру клавиатуры
  27.                 in      a,(c)           ;Переход в режим команды
  28.                 ld      b,#02           ;команда - чтение
  29.                 in      a,(c)           ;Получаем байт в А
  30.                 ei
  31.                 ret    
  32.  
  33. write:
  34.                 di
  35.                 push bc
  36.                 push de        
  37.  
  38.                 ld  d, a                ;В А получаем байт, сораняем его в D
  39. readytx:
  40.                 ld      bc,#55FE        ;55FEh
  41.                 in      a,(c)           ;Переход в режим команды
  42.                 ld      b,#42           ;команда - прочесть статус
  43.                 in      a,(c)
  44.                 bit      6,a            ;Параметры - TX
  45.                 jp z,readytx    ; вернуться если байта нет
  46.  
  47.                 ld      bc,#55FE        ;55FEh
  48.                 in      a,(c)           ;Переход в режим команды
  49.                 ld      b,#03           ;запись
  50.                 in      a,(c)
  51.                 ld      b,d                     ;БАЙТ для пересылки
  52.                 in      a,(c)           ; ->
  53.                 pop de
  54.                 pop bc
  55.                 ei             
  56.                 ret
  57.  
  58. startrts2
  59.                 ld      bc,#55FE        ;55FEh
  60.                 in      a,(c)           ;Переход в режим команды
  61.                 ld      b,#43           ;команда - установить статус
  62.                 IN      a,(c)
  63.                 ld      b,#03           ;Параметры - убрать RTS (START)
  64.                 in      a,(c)
  65.                 ld  b,10
  66. loop
  67.                 djnz loop
  68.                 ld      bc,#55FE        ;55FEh
  69.                 in      a,(c)           ;Переход в режим команды
  70.                 ld      b,#43           ;команда - установить статус
  71.                 in      a,(c)
  72.                 ld      b,0                     ;Параметры - установить RTS (STOP)
  73.                 in      a,(c)
  74.                 ret
  75.  
  76.     ENDMODULE
  77.