?login_element?

Subversion Repositories NedoOS

Rev

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

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