USB интерфейс на базе FT245R, который можно воткнуть вместо ВВ55.
Со стороны хоста (PC) это выглядит как виртуальный последовательный порт (/dev/tty.usbserial-XXXXXXXX или COMx), а со стороны РК - как два порта, один двунаправленный для данных, второй, только на чтение, содержит два бита статуса очередей чтения/записи. Если воткнуть плату в РК вместо D14, то порт данных будет находиться по всем четным адресам 0xAxxx, а порт статуса - по всем нечетным. Их можно читать/писать даже из Монитора, директивами D или L и M или F, соответственно.
К сожалению, в схеме допущена ошибка - вывод 5 U4 подключен к A0, а должен бы к /A0. Из-за этого данных порт на запись/передачу расположен не по четному адресу, а по нечетному, по которому на чтение выдаются биты состояния FIFO. Исправлю в следующей редакции.
Пример использования из ассемблера:
;===========================================================================
; FT245R use example
; Created by @alexcp on 18 Dec 2018
;
;
FT245R equ 0A000h ; base address of FT245R FIFO
DATA equ 0 ; Data register
STAT equ 1 ; Status register
;
; Define FIFO port
FIFO_DATA equ FT245R+DATA
FIFO_STATUS equ FT245R+STAT
RXEMPTY equ 1 ; MASK FOR RX BUFFER EMPTY
TXFULL equ 2 ; MASK FOR TX BUFFER FULL
;
;===========================================================================
; Get a character to A
;
; Return A=char, CY=0 if data received
; CY=1 if timeout
;
; Uses 4 bytes of stack including return address
;
GETCHAR:
PUSH D
LXI D,8000h ;long timeout
gc10: DCX D
MOV A,D
ORA E
JZ gc90 ;exit if timeout
LDA FIFO_STATUS ;read device status
ANI RXEMPTY
JNZ gc10 ;not ready yet.
;
; Data received: return CY=0. data in A
XRA A ;cy=0
LDA FIFO_DATA ;read data
POP D
RET
;
; Timeout: return CY=1
gc90: STC ;cy=1
POP D
RET
;
;===========================================================================
; Output character in A
;
; Uses 4 bytes of stack including return address
;
PUTCHAR:
PUSH PSW ;save byte to output
pc10: LDA FIFO_STATUS ;read device status
ANI TXFULL ;tx full ?
JNZ pc10
POP PSW
STA FIFO_DATA ;transmit char
RET
USB интерфейс позволяет связать РК с настольным компьютером и, например, запустить на нем отладчик, в моем случае NoICE. Это, конечно, не Eclipse с OpenOCD, но сильно лучше, чем никакого отладчика. Для его работы нужен небольшой монитор, который я по-быстрому передрал из готового примера для 8085 и разместил в ПЗУ, начиная с адреса F000, да простят меня поклонники ДОС 2.9. Исходник и скомпилированный .bin прилагаются.
Одна из функций отладчика - загрузка программ в память РК. Прощай, кассетный магнитофон!
Comments (0)
You don't have permission to comment on this page.