Alikberov
11.01.2026, 17:00
Над этим я размышлял ещё в далёкие 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.
Практически все Микро-ЭВМ строились на базе из академических справочников, однако на уровне сигналов нет совершенно никакой разницы, куда какие сигналы идут. Но "точечно" - код мог бы получить выигрышную оптимизацию по числу инструкций и тактов.
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.
Практически все Микро-ЭВМ строились на базе из академических справочников, однако на уровне сигналов нет совершенно никакой разницы, куда какие сигналы идут. Но "точечно" - код мог бы получить выигрышную оптимизацию по числу инструкций и тактов.