Пятница, 19.04.2024, 15:43

..



Главная Регистрация Вход
Приветствую Вас, Гость · Браузер: « v»
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Всё об «Электроника БК0010(-01), БК0011(М)»! » Газеты | Документации | Статьи | Журналы » Газеты на «БК001x» » «Times» » «Times N6» [17.06.92] (Автор: MKT corp. [Королёв М.])
«Times N6» [17.06.92]
-=RUS=-Дата: Воскресенье, 24.08.2014, 05:25 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 352
Репутация: 1
Статус: Offline
©
        © MKT corp.      Times N6        17-Jun-92
┌═════════════════════════════════════════════════════════════┐
║                                                             ║
║    /▓▓▓▓▓▓▓▓▓▓   /▓▓                                        ║
║     ▓  /▓▓  /▓   / /                                        ║
║    //   ▓▓  //  /▓▓▓   /▓▓ /▓▓     /▓▓▓▓▓    /▓▓▓▓▓▓▓       ║
║         ▓▓      //▓▓    ▓▓▓▓▓▓▓  /▓▓▓  /▓▓▓   ▓▓    /       ║
║         ▓▓        ▓▓    ▓▓▓▓▓▓▓   ▓▓▓▓▓▓▓▓▓  //▓▓▓▓▓        ║
║         ▓▓        ▓▓    ▓▓ ▓ ▓▓   ▓▓      /   /   /▓▓       ║
║       /▓▓▓▓     /▓▓▓▓   ▓▓// ▓▓  //▓▓▓▓▓▓    /▓▓▓▓▓▓/       ║
║       /   /     /   /  / /  / /   /     /    /     /        ║
║                                                             ║
║       Рекламно-информационный бюллетень БК-"Times" N6       ║
└═════════════════════════════════════════════════════════════┘
                          Июнь 1992г.

                "Бюллетень БК Times" Королев Михаил.
                        телефон 499-41-06
             Также встретится со мной можно в клубе БК.

                          От редакции.
                          ¯¯¯¯¯¯¯¯¯¯¯¯
  Данный  номер  бюллетеня  вышел в укороченном  виде в связи с
Подготовкой  и  защитой  дипломного проекта в техникуме главным
редактором.

        Номер к выпуску подготовил Юдин Илья (UI corp.)

                         НЕМНОГО СЛУХОВ
                         ¯¯¯¯¯¯¯¯¯¯¯¯¯¯
        А.Надежин   выпустил   ANDOS  v2.30$,  отличающуюся  от
предидущих  совместимостью   с   Micro DOS  (Norton-БК),  целым
букетом  полезных  мелочей, чем  то  еще,  а  также  комплектом
поставки - в него вошел  дисковый  пакет  фирмы ALTec: EDALT3A,
PRINTSCR, PRINTEX и мн. др.

        А.Бреккер наконец закончил NORTON-БК v2.0,  которая  по
выглядит это действительно очень круто, но пока, лишь на БК-11м

        По следам Times5:  в этой газете  был  приведен внешний
вид  копировщика  CF  v5.0,  так вот, на сегодня  он  несколько
изменился и имеет дату 16.06.92г.

                Юдин Илья, Приложение к газете "Times".
                ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
                  Драйвер магнитофона, что к чему...
                  ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
        (из разработок UI corp. совместно с MKT corp.)

  НЕМНОГО ИСТОРИИ:

    Самым   первым   программистом,   написавшим   подпрограмму
ускоренной  записи  для   БК-0010   считается   Ярошенко.   Его
копировщик читал  файлы  в  экран,  а  затем  записывал  их  на
магнитную ленту.  Наиболее  известные  его  названия:  KOPIR  и
COPY2. Нельзя не упомянуть, что многие не доверяли качеству его
записи и пользовались другими копировщиками.  (например  COPY0M
или COPY v1.x). Сейчас людей с  такими  убеждениями,  наверное,
уже не осталось.
    Сегодня в номере будет рассказано о том, как  записать  или
считать файл нестандартным образом.

    Начнем с общего для записи и чтения блока:

  BIS   #100,@#177660   ;Закрыть клавиатуру
                        ;(Любителям оптимизации можно
                        ;посоветовать прочитать Times-4)

  JSR   R4,@#110346     ;Сохранить регистры R0-R4 и включить
                        ;дистанционное управление МГ
                        ;(магнитофоном)

  MOV   R1,@#306        ;Сохранить адрес блока параметров
  MOV   #177716,R3
  CLR   @#300           ;Очистить служебную ячейку
  CLR   @#302           ;То же самое
  MOV   @#4,-(SP)       ;Сохранить вектор перехода
                        ;по клавише "Стоп".

  MOV   PC,@#4          ;По адресу 4 заносится адрес,
                        ;предшествующий команде ADD #22,@#4
                        ;т.к. команда MOV PC,@#4 двухсловная

  ADD   #22,@#4         ;При нажатии клавиши "Стоп" во
                        ;время обмена управление передается на
                        ;следующий за оператором BR 0 оператор

  MOV   SP,@#310        ;Сохранить адрес текущей вершины стека

  CALL  READ            ;Перейти на подпрограмму чтения
                        ;или записи (CALL  SAVE)

  BR    0               ;Файл прочитан (записан)

  MOV   @#310,SP        ;Восстановить стек после
                        ;прерывания по 4 вектору

  MOVB  #4,@#301        ;Установить признак "Ошибка по
                        ;прерыванию оператора"

0: MOV   #220,(R3)      ;Выключить дистанционное управление

  MOVB  @#301,@#321     ;Признак ошибки в байт ответа

  MOV   (SP)+,@#4       ;Восстановить прежний адрес
                        ;прерывания по клавише "Стоп"

  JSR   R4,@#110362     ;Восстановить регистры R0-R4

  BIC   #100,@#177660   ;Открыть клавиатуру
  RET

Теперь немного рекомендаций:

  1)  Если  Вы  не  хотите менять значение вектора СТОПа, то не
забудьте  о том, что иногда стандартный драйвер МГ после чтения
заголовка  "вылетает"  именно  по  этому  вектору,  после  чего
клавиатура может оказаться заблокированной.
  2)  Если  Вы захотели закрывать клавиатуру командой RESET, то
не  забудьте,  что  эта  команда  также сбрасывает бит признака
поступления   нового   кода  с  клавиатуры,  и  тогда  возможна
ситуация,  когда  пользователь  не успел отпустить клавишу и ее
код  снова поступил в драйвер клавиатуры. (Вот откуда возникает
кажущийся дребезг клавиатуры).
  3)  Если  Вы вообще не хотите закрывать клавиатуру, тогда Вам
просто необходимо упомянуть в  программе  или  сопроводительной
документации к ней о том, чтобы  во  время  чтения  или  записи
никто не нажимал на клавиши во  избежание  сбоев  и  различного
рода помех.

Блок чтения файла:

READ:
  MOV   #40,R5          ;Бит 5 - Бит чтения сигнала с МГ.
  MOV   #20,(R3)        ;Включить дистанционное управление.
  MOV   #1,@#304        ;Установить шаг записи каждого
                        ;считанного байта в память.
  CLR   @#300
  CALL  @#116712        ;Поиск настроечной последовательности.
* MOV   @#306,R1
* ADD   #26,R1          ;В R1 - адрес для чтения заголовка
* MOV   #24,R2          ;Адрес, длина и имя файла (24 байта)
* CALL  @#117260        ;Считать массив (адрес для его загрузки
                        ;в R1, а длина в R2).
* MOV   @#346,@#264     ;Взять адрес для чтения из заголовка.
* MOV   @#350,@#266     ;Взять длину файла из заголовка.
  CALL  @#117154        ;Считать файл с проверкой КС
                        ;(контрольной суммы).
1: RET

Примечания:
 1) Данный блок чтения позволяет считать первый найденый
 файл.
 2) Чтобы прочитать файл по имени нужно заменить строки,
 помеченные звездочками на следующие строки:

  CALL  @#117070
  TSTB  @#301
  BNE   1       ;Не ноль, если имя не совпало.

    Подпрограмма,   расположенная   по   адресу  117070  читает
заголовок  и сравнивает имя файла с заданным на чтение и при их
различии файл не читается. Возникает ошибка "несовпадение имен"
а затем управление передается основной программе.
    Подпрограмма Монитора по  адресу  116712  ищет  настроечную
последовательность, по которой  и  определяет  скорость  чтения
файла. По адресу 116712 расположена  команда,  которая  заносит
4000 в R2. Это число - длина настроечной последовательности для
считывания. Вы можете заносить в R2 - меньшее  число  (как  это
делает UNIC), тогда можно будет считывать файлы  с  укороченной
настроечной последовательностью.
    Немного  забегая  вперед  скажу,  что  стандартный  драйвер
записывает настроечную последовательность длиной 10000.

Теперь о том как записать файл:

SAVE:
  MOV   #20,(R3)        ;Включить дистанционное управление
  MOV   26(R1),R5       ;Адрес расположения файла в памяти
  MOV   4(R1),R4        ;Длина файла
  CALL  @#116622        ;Подсчитать КС файла и
  MOV   R0,@#312        ;Поместить ее по адресу 312
  MOV   #10000,R0       ;Длина настроечной последовательности
  CALL  @#166404        ;Выдача настроечной последовательности
  TST   (R1)+           ;В R1 получаем адрес начала заголовка
  MOV   #24,R2          ;Длина заголовка
  CALL  @#116474        ;Запись заголовка
  MOV   @#306,R1        ;восстановить адрес блока параметров
  MOV   4(R1),R2        ;В R2 - длину файла
  MOV   26(R1),R1       ;В R1 - фактический адрес файла
  CALL  @#116342        ;Запись файла и КС
  RET

    Это была подпрограмма записи файла в общем виде. Не  трудно
заметить, что можно указать в заголовке адрес  и  длину  такие,
что файл просто не будет загружаться, а затем записать  файл  и
считывать  его  так  как  Вам  захочется.  При   записи   файла
рекомендуется настроечную последовательность  делать  побольше,
для того, чтобы имя надежнее  захватывалось  и  найти  файл  на
кассете было легче.
    В качестве примера можно привести игру RETURN OF THE  JEDI,
в которой заставка загружается по квадратикам (тем, кто  ее  не
видел  советую  обязательно  посмотреть),  причем  файл   можно
копировать любым нормальным копировщиком. Для тех  кто  еще  не
понял как это  сделано  объясняю:  файл  состоит  из  кусочков,
которые можно условно назвать  блоками.  Каждый  блок  содержит
адрес загрузки, за которым следует несколько слов,  выводящихся
по вертикали.
    Вообще,  стандартно  файл  читается  по  байтам,  но  можно
сделать так, чтобы этот файл читался по словам  или,  если  Вам
хочется всех удивить - по  битам.  Но  не  забывайте,  что  чем
красивее Вы хотите сделать загрузку, тем  больше  Вам  придется
переписывать подпрограмм из Монитора.
    Подпрограмма, приведенная выше, позволяет записать файл  из
памяти так, чтобы он читался не с того адреса,  с  которого  он
был записан.
    Теперь перейдем к вопросу о том,

             КАК ЗАПИСАТЬ ФАЙЛ НА ДРУГОЙ СКОРОСТИ.
             ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
    При записи файла на другой скорости  не  следует  забывать,
что  в  настроечной  последовательности  указывается   скорость
загрузки файла. Поэтому ее  также  нужно  записывать  с  другой
скоростью, как, впрочем, и контрольную сумму файла. Так что  не
переоптимизируйте.
    Важна  не  столько  скорость  записи,  сколько   надежность
считывания. И не стоит об этом забывать.
    При записи далеко не последнюю роль играют задержки и  если
они правильно подобраны, то файл  будет  хорошо  считываться  с
хорошей кассеты  на  хорошем  магнитофоне  даже  при  удвоенной
плотности  записи.  В  частности,  в   одной   из   модификаций
копировщика UNIC были плохо подобраны константы,  в  результате
чего скорость записи самого  файла  была  несколько  выше,  чем
скорость записи настроечной  последовательности,  в  результате
чего иногда  биты  просто  "проглатывались"  штатным  драйвером
магнитофона.
    В связи с ограниченностью объема газеты здесь не приводится
подпрограмма ускоренной записи. Заинтересовавшиеся могут  найти
ее почти в самом конце копировщика UNIC. Она использует область
ключей, в которые заносит константы для ускоренной записи, либо
в подпрограмме к  копировщику  CF  носящей  название  SPEED8.CF
(Если у Вас есть только подпрограмма SPEED3.CF, тогда  не  имея
соответствующей квалификации Вам  не  просто  будет  вынуть  ее
оттуда,  и  поэтому  лучшим  вариантом  будет  для  Вас   найти
где-нибудь UNIC или SPEED8.CF).
    Кстати:  в  копировщике  CF  v5.0 в верхней части экрана во
время записи файла уменьшается полоска. В тот момент, когда она
уменьшается   на  1  деление  возникает  небольшая  пауза,  что
заметно  на  слух  при записи массива одной константы (например
массива  нулей).При  этом  возникает  впечатление, будто запись
поизводится  по  блокам, что, впрочем, небезосновательно... Эта
пауза  компенсирует  то  самое  "глотание битов", о котором уже
говорилось.  Драйвер  во  время  паузы подстраивается. Качество
записи  при  этом  выше,  чем  при  использовании  стандартного
драйвера.  Это  уже  проверено.  Кроме этого копировщик отлично
работает    со    всеми    известными    дисковыми   системами,
перехватывающими  EMT  36. Так что если Вы подключили дисковод,
то без этого копировщика Вам просто не обойтись.
    Здесь  приводится  таблица  констант  для  записи.  Если Вы
используете подпрограмму UNICa, тогда Вы заносите их в  область
ключей с адреса, с которого начинает их брать UNIC.

Таблица:
                                Скорость к основной (Пост.чт.):
        27 27  151 144  30 27 63        0.88    (42)
        25 25  136 132  26 25 56        0.97    (37)
        23 23  125 123  24 23 52        1.00    (36)
        21 21  115 113  22 21 46        1.11    (33)
        17 17  105 103  20 17 42        1.25    (30)
        15 15   73  72  16 15 36        1.36    (26)
        13 13   63  62  14 13 31        1.76    (23)
        11 11   55  54  12 11 26        1.88    (20)
         7  7   44  44  10  7 22        2.00    (17)

При желании можете вычислить средние величины. Например:

        10 10   50  50  11 10 24        1.94

 Или оптимизировать (1,2 и 6 колонки таблицы совпадают).
Постоянная  чтения  заносится  по  адресу   314   после  чтения
настроечной последовательности.
 А  теперь  самое  интересное:  как  получить  новые константы?
Методом  анализа  была  выявлена  следующая  закономерность  по
колонкам:

        А  А  C+X1 C-X2 A+1 A  B
Где:
  B = A*2+4
  C = B*2
  X -   Отклонение  величины  задержки  от  средней.  Чем  выше
     скорость, тем меньше должно быть отклонение.

  X1-X2=0  или  X1-X2=1.

 При  расчетах  не  забудьте, что все  константы были приведены
восьмеричной системе счисления.

                            ДО ВСТРЕЧИ !!!


 
Всё об «Электроника БК0010(-01), БК0011(М)»! » Газеты | Документации | Статьи | Журналы » Газеты на «БК001x» » «Times» » «Times N6» [17.06.92] (Автор: MKT corp. [Королёв М.])
  • Страница 1 из 1
  • 1
Поиск:

-=RUS=-
ICQ: 320867225
asr-corp@yandex.ru
bk001x@yandex.ru