Над этим я размышлял ещё в далёкие 90-е, задумываясь над кодом позиционирования курсора ВГ75:
Код:
mvi a,80h ; Установка позиции курсора
sta 0c001h ; Подготавливаем ВГ75
mov a,e
sta 0c000h ; Позиция X
mov a,d
sta 0c000h ; Позиция Y
Допустим, если все УВВ в адресации сместить на один бит влево - чтобы чётный/нечётный адрес ссылался на один порт:
- 8000/8001 - ВВ55 порт A
- 8002/8003 - ВВ55 порт B
- 8004/8005 - ВВ55 порт C
- 8006/8007 - ВВ55 режим
- A000/A001 - ВВ55/ВИ53 порт A / канал 0
- A002/A003 - ВВ55/ВИ53 порт B / канал 1
- A004/A005 - ВВ55/ВИ53 порт C / канал 2
- A006/A007 - ВВ55/ВИ53 режим
- C000/C001 - ВГ75 данные
- C002/C003 - ВГ75 режим/статус
- E008/E009 - ВТ57 канал 2 адрес
- E00A/E00B - ВТ57 канал 2 счётчик
- E010/E011 - ВТ57 режим
Управление курсором стало бы компактнее:
Код:
mvi a,80h ; Установка позиции курсора
sta 0c002h ; Подготавливаем ВГ75
xchg
shld 0c000h ; X и Y одной командой
И программирование ВТ57:
Код:
shld 0e008h ; вместо mvi m,0d0h + mvi m,76h
xchg
shld 0e00ah ; вместо mvi m,23h + mvi m,49h
Что упростило бы и с каналами ВИ53.
Практически все Микро-ЭВМ строились на базе из академических справочников, однако на уровне сигналов нет совершенно никакой разницы, куда какие сигналы идут. Но "точечно" - код мог бы получить выигрышную оптимизацию по числу инструкций и тактов.