В. Сулханов


"ЭЛЕКТРОНИКА БК-0010" и УКНЦ


Многие владельцы БК, желая работать на профессиональной машине под стандартной ОС, приобрели УКНЦ (МС-0511). Продавать БК не хочется, уже накоплено несколько тысяч программ, да и детишки (внуки, племянники, гости) с удовольствием на ней играют. А не создать ли многопроцессорный комплекс? Технически это сделать совсем несложно, — достаточно соединить параллельные порты машин.

017-1.jpg

Теперь, если написать соответствующее программное обеспечение на обе машины, появятся следующие возможности:

Ниже приводится текст программы на ассемблере для БК, которая проверяет состояние порта УКНЦ (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 г