В. Сулханов
"ЭЛЕКТРОНИКА БК-0010" и УКНЦ
Многие владельцы БК, желая работать на профессиональной машине под стандартной ОС, приобрели УКНЦ (МС-0511). Продавать БК не хочется, уже накоплено несколько тысяч программ, да и детишки (внуки, племянники, гости) с удовольствием на ней играют. А не создать ли многопроцессорный комплекс? Технически это сделать совсем несложно, — достаточно соединить параллельные порты машин.
Теперь, если написать соответствующее программное обеспечение на обе машины, появятся следующие возможности:
Ниже приводится текст программы на ассемблере для БК, которая проверяет состояние порта УКНЦ (3-я и 5-я строки программы), и при получении от УКНЦ соответствующей команды либо читает файл из УКНЦ, либо читает первый встреченный файл с магнитофона и направляет его в УКНЦ. Программу разумнее всего "зашить" в ППЗУ типа 573РФЗ. Можно использовать ОЗУ на микросхеме 537РУ11А с 3-х вольтовым аккумулятором или миниатюрной батарейкой. Данная микросхема имеет объем 512 байт и потребляет в режиме хранения доли микроампера. Эти микросхемы имеют встроенный интерфейс МПИ и непосредственно устанавливаются в свободное место в блоке МСТД. Мы рекомендуем программировать микросхему на начальный адрес 120 000 и отключить ФОКАЛ. Адрес 120 000 удобен тем, что после включения машины программа сразу начинает работать и не требуется никаких действий на БК. Если это вас не устраивает, то лучше использовать для ОЗУ микросхему 537РУ11А, начальный адрес которой легко изменять, записывая в ячейку 177 760 значение необходимого вам начального адреса.
;программа на стороне БК..............
ВК: MOV #177714,R1
MOV (R1),R0 ;ЧИТАЕМ ПОРТ
CMP #333,R0B
EQ BKU
СААР #111,R0
BEQ UKB
BR ВК
;.......................ЧИТАЕМ ИЗ УКНЦ
UKB: MOV #177714,R1
JSR РС,СН
RTS PC
HALT
;.......................ПИШЕМ В УКНЦ
BKU: JSR PC,ZAP ;ЧИТАЕМ ПЕРВЫЙ ВСТРЕЧНЫЙ
TSTB @#301 ;ЕСЛИ ПЛОХО ПРОПИТАЛОСЬ
BEQ МВ3
MOV #40,R1
MOV #7,R0
MB2: EMT 16 ;TO ГУДИМ 40 РАЗ
SOB R1,MB2
BR BK ;И СНОВА ЧИТАЕМ
МВЗ: MOV #12,R3 ;КОЛ-ВО СЛОВ В ИМЕНИ...
MOV #346,R2 ;НАЧАЛО ИМЕНИ
MOV #1000,R0 ;НАЧАЛЬНЫЙ АДРЕС ПРОГРАММЫ
MOV R0,R4 ;ЗАПОМНИЛИ ДЛЯ П/П ПЕРЕПИСИ НА ДИСК
МВ4: MOV (R2)+,(R0)+ ;ДАЛЕЕ ИМЯ,
SOB R3,MB4
MOV @#266,R5 ;ДЛИНА МАССИВА
ADD #24,R5 ;ПОЛНАЯ ДЛИНА МАССИВА В БАЙТАХ.
MOV #222,(R1) ;СООБЩАЕМ О ЗАВЕРШЕНИИ ЧТЕНИЯ С МЛ
MB5: CMP #123,(R1)
ВNЕ MB5
JSR PC,PER ;ПЕРЕДАЕМ НА ДИСК И...
JMP ВК ;ВСЕ С НАЧАЛА...
;П/П ПЕРЕДАЧИ НА ДИСК ЧЕРЕЗ ПАРАЛЛЕЛЬНЫЙ ПОРТ
PER: MOV #177714,R1
РЕ2: BIT (R1),#400 ;ПРОВЕРЯЕМ ГОТОВНОСТЬ УКНЦ
BEQ PE2
MOVB (R4)+,R0 ;БЕРЕМ ОЧЕРЕДНОЙ БАЙТ
BIS #400,RO ДОБАВЛЯЕМ СТРОБ
MOV R0,(R1) ;И ПЕРЕДАЕМ В ПОРТ.
Р2: BIT (R1),#400 ;ПРОВЕРЯЕМ СНЯТИЕ ГОТОВНОСТИ УКНЦ
BNE Р2
CLR (R1) ;ОЧИЩАЕМ ПОРТ
SOB R5,PER ;И ВСЕ ПОВТОРЯЕМ, ПОКА НЕ КОНЧИТСЯ ФАЙЛ.
RTS PC ;И ВСЕ....
;П/П ЧТЕНИЯ ПЕРВОГО ФАЙЛА
ZAP: JSR R4,@#110346 ;ЗАПОМИНАНИЕ R0-R4
MOV #320,R1 ;АДРЕС БЛОКА ПАРАМЕТРОВ
MOV R1,@#306
MOV #177716,R3 ;АДРЕС ПОРТА
CLR @#300 ;ЗДЕСЬ ТИП ЗАПИСИ И ОТВЕТ
CLR @#302 ;ПОДСЧИТЫВАТЬ КС
MOV @#4,-(SP)
MOV #116214,@#4 ;НОВЫЙ ВЕКТОР ПО СТОЛ
MOV SP,@#310 ;УКАЗАТЕЛЬ SP ПРИ ВХОДЕ
MOV #20,(R3) ;ПУСК ДВИГАТЕЛЯ
MOV #1024,@#264 ; В ОЗУ
MOV #20040,@#326 ;ИМЯ НАЧИНАЕТСЯ С ПРОБЕЛА
MOV #1,@#З04 ;ШАГ ПО ОЗУ
MOV #40,R5
JSR PC,@#116712 ;ПОИСК НАЧАЛА ФАЙЛА
MOV @#306,R1
ADD #26,R1
MOV #24,R2
JSR PC,@#117260
MOV #10,R2
M1: MOV -(R1),177754(R1)
SOB R2,M1
MOV -(R1),@#266
JSR PC,@#117154 ;СОБСТВЕННО ЧТЕНИЕ ФАЙЛА
MOV #220,(R3) ;ОСТАНАВЛИВАЕМ МОТОР И
JMP @#116212 ;УХОД, ТАМ ЕСТЬ RTS PC
;П/П ЧТЕНИЯ ИЗ УКНЦ
СН: MOV #346,R2
MOV #24,R3
МС1: JSR PC,CB
MOVB R0,(R2)+
SOB R3,MC1 ;РАСПИСАЛИ ПО БЛОКУ ПАРАМЕТРОВ
MOV @#346,R2
MOV R2,@#264
MOV @#350,R3
MOV R3,@#266 ;ЗДЕСЬ ДЛИНА В БАЙТАХ
МС2: JSR PC,CS
MOVB R0,(R2)+
SOB R3,MC2
RTS PC
;П/П ЧТЕНИЯ ОДНОГО БАЙТА
CB: MOV #200,(R1) ;ШЛЕМ ГОТОВНОСТЬ
CS1: BIT (R1),#400 ;ЕСТЬ СОПРОВОЖДЕНИЕ!
BEQ CS1
MOV (R1),R0 ;ЗАБИРАЕМ КОД
CLR (R1) ; И СНИМАЕМ ГОТОВНОСТЬ
CS2: BIT (R1),#400
BNE CS2 ;СНЯЛИ СОПРОВОЖДЕНИЕ!
BIC #177400,R0 ;ЗАПОМИНАЕМ БАЙТ
RTS PC ; И ВСЕ...
.END BK
Вся программа занимает менее 310 байт.
На стороне УКНЦ создана программа (BUB.SAV), высвечивающая директорию рабочего диска. Одно из имен подсвечено. Перемещая подсветку, вы выбираете нужную программу для исполнения на БК.
Работа с системой исключительно проста. Включаются обе машины. Дисплей подключается к УКНЦ. Если БК используется для игр, то ее можно подключить к цветному телевизору. Предполагаем, что на рабочей дискете предварительно записаны программы БК. Загружаем систему на УКНЦ и вызываем программу BUB.SAV. Перемещаясь по директорию, находим нужную игру и нажимаем <ВВОД>. УКНЦ переписывает программу с дискеты в БК и сообщает вам об этом. Если загруженная программа с автозапуском, она немедленно начинает исполняться. Никаких специальных действий на БК производить не нужно, т.к. БК после включения или сброса автоматически переходит на выполнение программы BK.SAV.
Если вы еще не создали дискету с программами БК, то следует подключить к БК магнитофон, установить кассету с программами, которые необходимо переписать на дискету, и включить систему. Запускается программа BUB.SAV, в директории выбирается последняя пустая строка и нажимается <ВВОД>. Все остальное сделает УКНЦ. БК начнет читать с кассеты, и после каждого прочитанного файла на дисплее УКНЦ будет появляться имя прочитанного файла. Вам остается принять решение, записывать ли прочитанную программу на диски УКНЦ и не следует ли изменить имя программы. Все необходимые подсказки появляются на экране. Корректировать имена приходится потому, что УКНЦ хранит файлы с именами размером не более 6 букв, и только латинских. Впрочем, уникальное имя программы БК не теряется и при переписывании с диска УКНЦ на БК оно, как и положено, занимает свое место начиная с адреса 352.
Если вы решили соединить свои УКНЦ и БК и у вас возникли проблемы, вам помогут в клуба УКНЦ, информация о котором была опубликована в "ИНФО" N6 за 1992 г.
Распознавание и преобразование в гипертекст: Владислав М. Антонов
2004 г