БК-0010 С ДИСКОВОДОМ

ДОРАБОТКА БК-0010

Опытного пользователя БК-0010, очевидно, не устраивают длительный процесс загрузки программ с магнитофона, отсутствие прямого доступа к нужной программе, небольшой объём памяти ОЗУ (16 Кбайт). Эти факторы и желание работать с большими базами данных, особенно со словарями, побудили пользователей к поискам решений этих проблем. Один из предложенных вариантов - подключение дисковода Электроника 6022 с контроллером накопителя от БК-0011. Этот дисковод работает с двусторонними дискетами диаметром 5,25 дюйма с двойной плотностью записи информации (40 дорожек, маркировка дискеты DS/DD). Для работы с БК-0010 контроллер подключается к системному порту компьютера МПИ. Программа работы с дисководом размещена в ПЗУ контроллера дисковода (ПЗУ сконструировано на микросхеме типа 1801РЕ2-253). Начальный адрес этой программы 160000(8). В БК-0010 этот адрес уже занят и работать без отключения соответствующих микросхем невозможно.

Идея доработки БК-0010 состоит в том, чтобы на время работы с дисководом отключить мешающие микросхемы.

В ПЗУ БК-0010 имеются три микросхемы типа 1801РЕ2: с прошивками 017, 018, 019. Микросхема 017 - пусковой монитор, адрес запуска 100000(8). Эта микросхема впаяна в плату и её отключать не нужно. Микросхема 018 - интерпретатор языка Фокал, адрес запуска 120000(8). Эту микросхему придётся отключить. Микросхема 019 - монитор системы тестовой диагностики, адрес запуска 160000(8). Эту микросхему также нужно отключить.

В ПЗУ БК-0010-01 имеются четыре микросхемы того же типа: с прошивкой 017 [драйвер монитора, адрес запуска 100000(8)], которая не отключается; с прошивками 106, 107, 108 (микросхемы интерпретатора языка Бейсик-MSX), которые надо отключить.

Отключаются микросхемы 1801РЕ2 подачей напряжения +5 В на вывод 23, а включаются в работу подачей 0 В на этот вывод.

Доработку можно осуществить так.

Для БК-0010. В компьютерах первого выпуска вынуть микросхемы 018 и 019 из панелей, аккуратно отогнуть выводы 23 у каждой, снова вставить микросхемы в панели. В модифицированных моделях (в них микросхемы припаяны к плате) перерезать на плате дорожку к выводу 23 микросхемы. Затем вывод 23 каждой микросхемы соединить через резистор сопротивлением 1,8 - 2,2 кОм с шиной питания +5 В. Слева на задней стороне пластмассового корпуса БК просверлить отверстие и установить в нем переключатель на два положения. Центральный контакт переключателя соединить с общим проводом источника питания +5 В. Один из его свободных контактов подключить к выводам 23 микросхем 018 и 019, другой - к выводу В18 системного порта МПИ.

В контроллере дисковода перерезать проводник, соединяющий вывод 23 микросхемы 1801РЕ2-253 с общим проводом, и подключить этот вывод к контакту В18 разъёма, через который контроллер подсоединяется к системному порту компьютера.

Для БК-0010-01. Выполняются все те же операции, что и при доработке БК-0010, но с микросхемами 106, 107, 108.

Для работы с дисководом нужна небольшая программа, написанная в машинных кодах, - драйвер. Такая программа есть. Её условное название BY10. Программа перемещаемая, т.е. её можно загрузить в ОЗУ с любого нужного адреса. Объем программы 410 байт. При работе с небольшими программами, верхний адрес которых не более 37300, драйвер загружается с адреса 37366. При работе с большими программами загрузку производят в режиме "РП" (расширенная память). Стек драйвера располагается перед адресом загрузки и занимает до 10 ячеек памяти, что позволяет записывать информацию в ОЗУ с нулевого адреса. После сеанса работы с дисководом указатель стека восстанавливается и размещается с адреса 1000 (8)

РАБОТА С ДИСКОВОДОМ

Итак, вы подключили дисковод к порту МПИ, отключили мешающие микросхемы ПЗУ, оставив только микросхему 017, загрузили с магнитофона драйвер BY10. Загрузите теперь с магнитофона программу, которую хотите записать на диск. Всё готово? Тогда запустите драйвер командой S37366 (ВК).

На экране появится "БК 10 #Б".

Надо ввести номер блока на диске, с которого будет начинаться программа, в восьмеричной системе счисления и нажать клавишу ВК. Каждый блок имеет ёмкость 1000 байт [это 400(8) слов]. Если при вводе номера блока вы ошиблись, придётся нажать клавишу СТОП и снова запустить драйвер. Вызывать блоки необходимо, начиная с первого. После нажатия клавиши ВК на экране появится буква L - это приглашение к вводу длины массива, задаваемой числом слов (длина слова 2 байта). Ввели длину массива? Снова нажмите клавишу ВК. Теперь на экране буква А - значит нужно ввести адрес, с которого вы запишете массив на диск.

На экране приглашение BY. Если обращаетесь к верхнему дисководу, следует ввести "0" (ВК), если к нижнему - 'Т' (ВК).

И последнее - выбор вида работы дисковода (считывание с диска или запись на диск). На экране подсказка: "ОЗУ=0, диск=1". Поэтому введите "0" (ВК) при считывании с диска и 'Т' (ВК) при записи массива на диск.

Дисковод начинает работать и через секунду операция закончена!

Виктор Малахов

Помощь и консультацию можно получить по адресу: 113162, г. Москва, а/я 1, Московский клуб БК

Адрес

Команда ассемблера

Машин-
ный код

Комментарии

37350

MOV

R7,R1

010701

;ПЕРЕДАТЬ   В R1 АДРЕС СЧЕТЧИКА ЯЧЕЕК.

37352

SUB

#4,R1

162701   000004

;В   R1 НОМЕР ЯЧЕЙКИ, ПРЕДШЕСТВУЮЩЕЙ НАЧАЛУ ПРОГРАММЫ

37356

MOV

R1,R6

010106

;ЭТО   НАЧАЛО СТЕКА.

37360

ADD

#354,R1

062701
000354

 

37364

MOV

#30010,R2

012702
030010

 

37370

EMT

20

104020

;ВЫВОД   НА ЭКРАН "BK10"."B#".

37372

JSR

R7,@#100472

004737
100472

;ПРИЕМ   С КЛАВИАТУРЫ ЧИСЛА В R5.

37376

MOV

R5,37572

010567
000170

;ЗАГРУЗКА   ИЗ R5 ЯЧЕЙКИ, ХРАНЯЩЕЙ НОМЕР БЛОКА.

37402

MOV

R7,R1

010701

 

37404

ADD

#327,R1

062701
000327

 

37410

MOV

#30001,R2

012702
030001

 

37414

EMT

20

104020

;ВЫВОД   НА ЭКРАН "L" (ДЛИНА МАССИВА).

37416

JSR

R7,@#100472

004737
100472

 

37422

MOV

R5,37574

010567
000146

 

37426

MOV

R7,R1

010701

 

37430

ADD

#305,R1

062701
000305

 

37434

MOV

#30001,R2

012702   030001

 

37440

EMT

20

104020

;ВЫВОД   НА ЭКРАН "А" (АДРЕС МАССИВА).

37442

JSR

R7,@#100472

004737
100472

 

37446

MOV

R5,37576

010567
000124

 

37452

MOV

R7,R1

010701

 

37454

ADD

#263,R1

062701
000263

 

37460

MOV

#30002,R2

012702
030002

 

37464

EMT

20

104020

;ВЫВОД   НА ЭКРАН "BY" (НОМЕР

37466

JSR

R7,@#100472

004737
100472

;ДИСКОВОДА).

37472

MOV

R5,37600

010567
000102

 

37476

MOV

R7,R1

010701

 

37500

ADD

#242,R1

062701
000242

 

37504

MOV

#30015,R2

012702
030015

 

37510

EMT

20

104020

;ВЫВОД   РОДА РАБОТЫ "ОЗУ=0, ДИСК=1".

37512

EMT

6

104006

;ПРИЕМ С КЛАВИАТУРЫ   "0" ИЛИ "1".

37514

CMPB

#60,R0

122700
000060

;АНАЛИЗ   R0 на 0.

37520

BEQ

37526

001402

;ЕСЛИ   "0",ПЕРЕХОД НА 37526; ЕСЛИ "1",

37522

NEG

37574

005467
000046

;ПРЕОБРАЗОВАНИЕ   В ОТРИЦАТЕЛЬНОЕ
;ЧИСЛО   ДЛЯ ЗАПИСИ НА ДИСК.

37526

JSR

R7,37602

004767
000050

;ОБРАЩЕНИЕ К ДРАЙВЕРУ   ДИСКОВОДА.

37532

TSTB

@#52

105737
000052

;АНАЛИЗ ОШИБКИ (ЯЧЕЙКА 52).

37536

BEQ

37554

001406

;ЕСЛИ   0, ПЕРЕХОД НА ОЧИСТКУ ЯЧЕЙКИ 52.

37540

MOV

#357,R0

012700
000357

 

37544

EMT

16

104016

 

37546

MOV

#373,R0

012700
000373

 

37552

EMT

16

104016

 

37554

CLR

@#52

005037
000052

;АНАЛИЗ   ОШИБКИ (ЯЧЕЙКА 52).

37560

CLR

@#177130

005037
177130

;ОСТАНОВИТЬ ДИСКОВОД.

37564

MOV

#1000,R6

012706
001000

;ВОССТАНОВИТЬ СТЕК.

37570

HALT

 

000000

;ВЫХОД В ПУСКОВОЙ МОНИТОР.

37572

HALT

 

000000

;НОМЕР   БЛОКА НА ДИСКЕ.     : ЯЧЕЙКИ

37574

HALT

 

000000

;ДЛИНА   МАССИВА В СЛОВАХ.   : ХРАНЕНИЯ

37576

HALT

 

000000

;АДРЕС   ЗАГРУЗКИ МАССИВА.   : ДАННЫХ

37600

HALT

 

000000

;НОМЕР   ДИСКОВОДА.          : ДЛЯ ДРАЙВЕРА.

37602

MOV

37572,R0

016700
177764

;
;

37606

MOV

37574,R1

016701
177762

;
;

37612

MOV

37576,R2

016702
177760

; ДРАЙВЕР   ДИСКОВОДА.
;

37616

MOV

R7,R3

010703

;

37620

ADD

#20,R3

062703
000020

;
;

37624

MOVB

37600,37674

116767
177750
000042

;
;
;

37632

JSR

R7,@#160004

004737
160004

;ОБРАЩЕНИЕ К ДИСКОВОДУ.

37636

RTS

R7

000207

 

37640

HALT

 

000000

;НАЧАЛО   БЛОКА ПАРАМ. ДИСКОВОДА.

37642

HALT

 

000000

 

37644

 

 

177777

 

37646

 

 

177777

 

37650

CMP

R0,R0

020000

 

37652

CMP

R0,R0

020000

 

37654

MOV

-(R0),@(R6)+

014036

 

37656

BIC

R0,R0

040000

 

37660

HALT

 

000000

 

37662

HALT

 

000000

 

37664

HALT

 

000000

 

37666

HALT

 

000000

 

37670

HALT

 

000000

 

37672

HALT

 

000000

 

37674

HALT

 

000000

 

37676

HALT

 

000000

 

37700

HALT

 

000000

 

37702

HALT

 

000000

 

37704

HALT

 

000000

 

37706

HALT

 

000000

 

37710

HALT

 

000000

 

37712

HALT

 

000000

 

37714

HALT

 

000000

 

37716

HALT

 

000000

 

37720

HALT

 

000000

 

37722

SUB

@R0,@R4

161014

;НАЧАЛО   ТЕКСТА, ВЫВОДИМОГО

37724

BIT

R7,@-(R3)

030753

;НА   ЭКРАН.

37726

DEC

@-(R7)

005357

 

37730

CMP

@R7,-(R2)

021742

 

37732

ROR

40460(R0)

046060
040460

 

37736

BIC

@R0,30131(R0)

041060
030131

 

37742

 

 

175357

 

37744

BIT

66327,164744(R5)

036765
026357
164744

 

37752

SUB

@-(R7),30475(R3)

165763
030475

 

37756

CLR

-(R0)

005040

 

37760

HALT

 

000000

;КОНЕЦ.

 

Performed by © gid, 2012-2022.