День 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
- трейс рабочего приложения и настройка логики работы с портом.
В общем-то пока всё.
Комментарии
Трекбэков
Всего трекбэков 0
Ссылка трекбэка: