БК-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 |
|
37364 |
MOV |
#30010,R2 |
012702 |
|
37370 |
EMT |
20 |
104020 |
;ВЫВОД НА ЭКРАН "BK10"."B#". |
37372 |
JSR |
R7,@#100472 |
004737 |
;ПРИЕМ С КЛАВИАТУРЫ ЧИСЛА В R5. |
37376 |
MOV |
R5,37572 |
010567 |
;ЗАГРУЗКА ИЗ R5 ЯЧЕЙКИ, ХРАНЯЩЕЙ НОМЕР БЛОКА. |
37402 |
MOV |
R7,R1 |
010701 |
|
37404 |
ADD |
#327,R1 |
062701 |
|
37410 |
MOV |
#30001,R2 |
012702 |
|
37414 |
EMT |
20 |
104020 |
;ВЫВОД НА ЭКРАН "L" (ДЛИНА МАССИВА). |
37416 |
JSR |
R7,@#100472 |
004737 |
|
37422 |
MOV |
R5,37574 |
010567 |
|
37426 |
MOV |
R7,R1 |
010701 |
|
37430 |
ADD |
#305,R1 |
062701 |
|
37434 |
MOV |
#30001,R2 |
012702 030001 |
|
37440 |
EMT |
20 |
104020 |
;ВЫВОД НА ЭКРАН "А" (АДРЕС МАССИВА). |
37442 |
JSR |
R7,@#100472 |
004737 |
|
37446 |
MOV |
R5,37576 |
010567 |
|
37452 |
MOV |
R7,R1 |
010701 |
|
37454 |
ADD |
#263,R1 |
062701 |
|
37460 |
MOV |
#30002,R2 |
012702 |
|
37464 |
EMT |
20 |
104020 |
;ВЫВОД НА ЭКРАН "BY" (НОМЕР |
37466 |
JSR |
R7,@#100472 |
004737 |
;ДИСКОВОДА). |
37472 |
MOV |
R5,37600 |
010567 |
|
37476 |
MOV |
R7,R1 |
010701 |
|
37500 |
ADD |
#242,R1 |
062701 |
|
37504 |
MOV |
#30015,R2 |
012702 |
|
37510 |
EMT |
20 |
104020 |
;ВЫВОД РОДА РАБОТЫ "ОЗУ=0, ДИСК=1". |
37512 |
EMT |
6 |
104006 |
;ПРИЕМ С КЛАВИАТУРЫ "0" ИЛИ "1". |
37514 |
CMPB |
#60,R0 |
122700 |
;АНАЛИЗ R0 на 0. |
37520 |
BEQ |
37526 |
001402 |
;ЕСЛИ "0",ПЕРЕХОД НА 37526; ЕСЛИ "1", |
37522 |
NEG |
37574 |
005467 |
;ПРЕОБРАЗОВАНИЕ В ОТРИЦАТЕЛЬНОЕ |
37526 |
JSR |
R7,37602 |
004767 |
;ОБРАЩЕНИЕ К ДРАЙВЕРУ ДИСКОВОДА. |
37532 |
TSTB |
@#52 |
105737 |
;АНАЛИЗ ОШИБКИ (ЯЧЕЙКА 52). |
37536 |
BEQ |
37554 |
001406 |
;ЕСЛИ 0, ПЕРЕХОД НА ОЧИСТКУ ЯЧЕЙКИ 52. |
37540 |
MOV |
#357,R0 |
012700 |
|
37544 |
EMT |
16 |
104016 |
|
37546 |
MOV |
#373,R0 |
012700 |
|
37552 |
EMT |
16 |
104016 |
|
37554 |
CLR |
@#52 |
005037 |
;АНАЛИЗ ОШИБКИ (ЯЧЕЙКА 52). |
37560 |
CLR |
@#177130 |
005037 |
;ОСТАНОВИТЬ ДИСКОВОД. |
37564 |
MOV |
#1000,R6 |
012706 |
;ВОССТАНОВИТЬ СТЕК. |
37570 |
HALT |
|
000000 |
;ВЫХОД В ПУСКОВОЙ МОНИТОР. |
37572 |
HALT |
|
000000 |
;НОМЕР БЛОКА НА ДИСКЕ. : ЯЧЕЙКИ |
37574 |
HALT |
|
000000 |
;ДЛИНА МАССИВА В СЛОВАХ. : ХРАНЕНИЯ |
37576 |
HALT |
|
000000 |
;АДРЕС ЗАГРУЗКИ МАССИВА. : ДАННЫХ |
37600 |
HALT |
|
000000 |
;НОМЕР ДИСКОВОДА. : ДЛЯ ДРАЙВЕРА. |
37602 |
MOV |
37572,R0 |
016700 |
; |
37606 |
MOV |
37574,R1 |
016701 |
; |
37612 |
MOV |
37576,R2 |
016702 |
; ДРАЙВЕР ДИСКОВОДА. |
37616 |
MOV |
R7,R3 |
010703 |
; |
37620 |
ADD |
#20,R3 |
062703 |
; |
37624 |
MOVB |
37600,37674 |
116767 |
; |
37632 |
JSR |
R7,@#160004 |
004737 |
;ОБРАЩЕНИЕ К ДИСКОВОДУ. |
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 |
|
37736 |
BIC |
@R0,30131(R0) |
041060 |
|
37742 |
|
|
175357 |
|
37744 |
BIT |
66327,164744(R5) |
036765 |
|
37752 |
SUB |
@-(R7),30475(R3) |
165763 |
|
37756 |
CLR |
-(R0) |
005040 |
|
37760 |
HALT |
|
000000 |
;КОНЕЦ. |