Важная информация
RSS лента

asve79

День 9. RS-232

Оценить эту запись
Не знал как резюмировать прошедшие сутки.

По-факту переделал код, разложив его боле-менее по-феншую.
Разобрался с конфигурацией эмуля, чтобы заработала ts-conf и другие профили.
Попробовал свой набросок в эмуляции ts-conf, удивился что клаву не читает.

Добавил в эмуль вкладку настроек порта.
Пока не подключал.

Считываю я е так:
==
Код:
getkey
       ld hl,23560         ; LAST K system variable.
       ld a,(hl)           ; new value of LAST K.
       ret                 ; key was pressed.
==

На 48к успевает читать, на тс-ке почему-то нет.

Но главное, пока лазал по проекту Zifi наткнулся на недостающее описание портов!
Лежит оно себе спокойно в подпапочке-подпапочке-подпапочке )

Содержимое напишу сюда, мало ли кому еще понадобится, да и мне проще. )

Код:
= ~/ZiFi/_esp/upd1$ cat README\!\!__eRS232.txt =
--------------------------------------------------------------------------------

Address         Mode Name Description
0x00EF..0xBFEF  R    DR   Data register (ZIFI or RS232).
                          Get byte from input FIFO.
                          Input FIFO must not be empty (xx_IFR > 0).
0x00EF..0xBFEF  W    DR   Data register (ZIFI or RS232).
                          Put byte into output FIFO.
                          Output FIFO must not be full (xx_OFR > 0).

Address Mode Name   Description
0xC0EF  R    ZF_IFR ZIFI Input FIFO Used Register. Switch DR to ZIFI FIFO.
                    0 - input FIFO is empty, 191 - input FIFO contain 191 or more bytes.
0xC1EF  R    ZF_OFR ZIFI Output FIFO Free Register. Switch DR to ZIFI FIFO.
                    0 - output FIFO is full, 191 - output FIFO free 191 or more bytes.
0xC2EF  R    RS_IFR RS232 Input FIFO Used Register. Switch DR to RS232 FIFO.
                    0 - input FIFO is empty, 191 - input FIFO contain 191 or more bytes.
0xC3EF  R    RS_OFR RS232 Output FIFO Free Register. Switch DR to RS232 FIFO.
                    0 - output FIFO is full, 191 - output FIFO free 191 or more bytes.

Address Mode Name   Description
0xC7EF  W    CR     Command register. Command set depends on API mode selected.

  All mode commands:
    Code     Command      Description
    000000oi Clear ZIFI FIFOs
             i: 1 - clear input ZIFI FIFO,
             o: 1 - clear output ZIFI FIFO.
    000001oi Clear RS232 FIFOs
             i: 1 - clear input RS232 FIFO,
             o: 1 - clear output RS232 FIFO.
    11110mmm Set API mode or disable API:
              0     API disabled.
              1     transparent: all data is sent/received to/from external UART directly.
              2..7  reserved.
    11111111 Get Version  Returns highest supported API version. ER=0xFF - no API available.

Address Mode Name Description
0xC7EF  R    ER   Error register - command execution result code. Depends on command issued.

  All mode responses:
    Code Description
    0x00 OK - no error.
    0xFF REJ - command rejected.

--------------------------------------------------------------------------------
==

Плюс описание в uart-е, и картинка начинает более-менее складываться. )
==
Код:
BASEREG	EQU #F8EF


;DLAB=0
THR	EQU BASEREG+#000	;(W)Transmit Holding Register
RBR	EQU BASEREG+#000	;(R)Receive Buffer Register
IER	EQU BASEREG+#100	;(RW)Interrupt Enable Register

EDSSI	EQU %1000	;Enable Modem Status Interrupt
ELSI	EQU %0100	;Enable Receiver Line Status Interrupt
ETBEI	EQU %0010	;Enable Transmitter Holding Register Empty Interrupt 
ERBFI	EQU %0001	;Enable Received Data Available Interrupt

FCR	EQU BASEREG+#200	;(W)FIFO Control Register
IIR	EQU BASEREG+#200	;(R)Interrupt Identification Register

LCR	EQU BASEREG+#300	;(RW)Line Control Register

DLAB	EQU %10000000	;Divisor Latch Access Bit
SETBRK	EQU %01000000	;Set Break
STKPAR	EQU %00100000	;Stick Parity
EPS	EQU %00010000	;Even Parity Select
PEN	EQU %00001000	;Parity Enable
STB	EQU %00000100	;Number of Stop Bits
WLSB1	EQU %00000010	;Word Length Select #1
WLSB0	EQU %00000001	;Word Length Select #0

MCR	EQU BASEREG+#400	;(RW)Modem Control Register

RTS	EQU %10		;Request to Send
DTR	EQU %01		;Data Terminal Ready

LSR	EQU BASEREG+#500	;(RW)Line Status Register

FIFOE	EQU %10000000	;Error in Receiver FIFO
TEMT	EQU %01000000	;Transmitter Empty
THRE	EQU %00100000	;Transmitter Holding Register Empty
BI	EQU %00010000	;Break Interrupt (BI)
FE	EQU %00001000	;Framing Error (FE)
PE	EQU %00000100	;Parity Error (PE)
OE	EQU %00000010	;Overrun Error (OE)
DR	EQU %00000001	;Data Ready (DR)


MSR	EQU BASEREG+#600	;(RW)Modem Status Register

DCD	EQU %10000000	;Data Carrier Detect
RI	EQU %01000000	;Ring Indicator
DSR	EQU %00100000	;Data Set Ready
CTS	EQU %00010000	;Clear To Send
DDCD	EQU %00001000	;Delta Data Carrier Detect
TERI	EQU %00000100	;Trailing Edge Ring Indicator
DDSR	EQU %00000010	;Delta Data Set Ready
DCTS	EQU %00000001	;Delta Clear To Send

SCR	EQU BASEREG+#700	;(RW)Scratch Register

;DLAB=1
DLL	EQU BASEREG+#000	;(RW)Divisor Latch LSB
DLH	EQU BASEREG+#100	;(RW)Divisor Latch MSB


;eRS232 for ZX-Evo
ERS_DR	EQU #00EF
ERS_SR	EQU #C2EF
ERS_ST	EQU #C3EF
ERS_CR	EQU #C7EF
И так, что в планах:
- трейс рабочего приложения и настройка логики работы с портом.

В общем-то пока всё.

Обновлено 11.12.2018 в 08:55 asve79

Метки: Нет Добавить / редактировать метки
Категории
Без категории

Комментарии

Трекбэков