KrNews #06
15 ноября 1998

AUTOCONF - AUTOCONFIG расширеной памяти нужен всем.

<b>AUTOCONF</b> - AUTOCONFIG расширеной памяти нужен всем.
┌──────────────────────────────────────┐
│AutoConfig нужен всем!│
└──────────────────────────────────────┘
   (C) 1998 Viper/Techno Laboratory

   Вы наверное уже заметили  AutoConfig,
когда загружали газету ;-)
   AutoConfig    -     это     небольшая
подпрограмма,    определяющая      какие
страницы  памяти  у  данного  компьютера
быстрые,   а    какие    медленные     и
распределяющая  страницы   в   связи   с
результатами тестирования.
   Предположим,     Ваша       программа
использует  N  страниц  128-ой   памяти.
Список страниц организован в таблицу:

           DEFB 16,17,19,20,0

 где   0 - маркер конца таблицы.

   Некоторые      страницы       требуют
повышенного  быстродействия, т. е.  надо
чтобы  они  были  быстрыми.  Как   этого
достичь?
   Нижеприведенная             программа
протестирует все страницы из  таблицы  и
выстроит  их  по  приоритету: в   начале
таблицы окажутся быстрые страницы, далее
медленные. В  вашей  программе  в  таком
случае  будет  спользоваться  логическая
адресация страниц - страницы будут иметь
не   физические   (16,  17,  19...),   а
логические  номера  (0, 1, 2, 3,  4...).
Понятно,  что   у   первых    логических
страниц  будет  скорость  выше,  чем   у
последних.
   Следовательно,   первые    логические
страницы (0, 1) необходимо  использовать
для времякритичных задач, таких как:
   1) скроллинг
   2) большое количество вычислений
   3) проигрывание музыки
   4) анимация
   Список    можно     продолжать     до
бесконечности.
   Необходимо отметить, что  тест  будет
правильно  работать  и  при   включенном
TURBO режиме.
 Q:  Для чего это нужно?
 A:  Эта программа необходима для  того,
чтобы Ваши программы работали  нормально
на большинстве используемых компьютеров,
а не только  на  Вашем!!! Иначе  большое
разнообразие Spectrum-совместимых машин,
методов расширения до 128кб  приведет  к
тому   что    Ваша    программа    будет
сбрасываться или работать  со  сбоями  -
пользоваться    такой   программой    на
некоторых  (многих)  компьютерах   будет
невозможно!  Например,  вот   результаты
некоторых исследований:

      с помощью данной программы:

           Pentagon (rulez!):
             Page: 0 - fast
             Page: 1 - fast
             Page: 3 - fast
             Page: 4 - fast
             Page: 6 - fast
             Page: 7 - fast

                 Profi:
             Page: 0 - fast
             Page: 1 - fast
             Page: 3 - fast
             Page: 4 - fast
             Page: 6 - fast
             Page: 7 - fast

               Краснодар:

             Page: 0 - fast
             Page: 1 - fast
             Page: 3 - fast
             Page: 4 - slow
             Page: 6 - slow
             Page: 7 - slow

                Импульс:
             Page: 0 - fast
             Page: 1 - slow
             Page: 3 - slow
             Page: 4 - fast
             Page: 6 - fast
             Page: 7 - slow

Из западных источников:

               48kb firm:
fast memory: #8000-#ffff

              128kb firm:
             Page: 0 - fast
             Page: 1 - slow
             Page: 3 - slow
             Page: 4 - fast
             Page: 6 - fast
             Page: 7 - slow

             Spectrum +2,+3
             Page: 0 - fast
             Page: 1 - fast
             Page: 3 - fast
             Page: 4 - slow
             Page: 6 - slow
             Page: 7 - slow

   Нетрудно заметить, что 0-ая  страница
является быстрой на любых компьютерах.
   Очевидно,  что   многие    программы,
прекрасно зарекомендовавшие себя у одних
пользователей, отказывались работать или
работали неправильно  у  других. Примеры
широко известны: ProTracker 2. 1, Черный
Ворон, UFO 1-2, MicroEditor.. ProTracker
3.31 работает на "Краснодарах", но ловит
глюки на "Импульсе" ...
   Также  следует   отметить,  что   для
достижения максимальной совместимости  с
различными  моделями необходимо,   чтобы
при   использовании    второго    режима
прерываний подпрограмма их  обслуживания
находилась     в     быстрой     памяти.
Присутствие 257-байтной  таблицы   также
необходимо.
   Для Timex'а необходимо установить все
регистры музыкального сопроцессора на 0.

 Q: Как использовать результаты теста?
 A: Очень просто. Допустим, Вам нужна 0-
ая  логическая  страница,  где   у   Вас
расположен скроллинг. Простейший способ:

       ...
       LD HL,PAGS;адрес таблицы страниц
       LD A,(HL)
       CALL K128
       ...

   Где K128 - подпрограмма  переключения
страниц.
   В общем-же случае можно  использовать
индексную пару (IX,IY):

       ...
       LD IX,PAGS
       LD A,(IX+N)
       CALL K128
       ...

   Где N - номер логической страницы.

   Вам      необходимо       расположить
загружаемые  логические   страницы    на
диске в  определенном  порядке, а  затем
действовать как указано выше.
   Кстати, если Вам нужно чтобы одна  из
страниц  не участвовала в  сортировке по
приоритетам скорости, то это также легко
сделать (указывая SIZE меньше на  1, чем
общее число страниц, причем эта страница
должна быть последней в таблице).
               WARNING!!!
   Если  данный   тест   на   каком-либо
компьютере работал  неправильно, просьба
сообщить об этом на адрес редакции.
   Надеюсь, что  данная  статья  поможет
Вам  создать  ВЫСОКОКЛАССНЫЕ  ПРОГРАММЫ,
работающие на ВСЕХ компьютерах.
   А  вообще  программа  гораздо  меньше
всего написанного выше ;).

   Хочу  выразить  благодарность  VTS'у,
который    и    подал    идею   данного
теста.

; AutoConfig 1.0
; (C) 1998 Viper/Techno Laboratory

ST      EQU #10;СМЕЩЕНИЕ ДЛЯ ТАБЛИЦЫ
               ;СКОРОСТИ ОТНОСИТЕЛЬНО
               ;ТАБЛИЦЫ СТРАНИЦ

SIZE    EQU 3  ;ЧИСЛО СТРАНИЦ ПОДВЕР-
;ГАЮЩИХСЯ СОРТИРОВКЕ ПО СКОРОСТИ

ORG #8000
ENT

LD IX,PAGS
LOI     LD A,(IX)
OR A
JR Z,ENY
CALL MET
LD A,D
OR A
JR Z,SLOW
SUB A
COP     LD (IX+ST),A
INC IX
JR LOI
SLOW    LD A,1
JR COP
ENY     CALL SORT
RET

MET     DI
CALL K128
LD HL,#C000
LD A,#C1
LD B,L
INN     LD (HL),A
INC L
DJNZ INN
INC H
LD (HL),A
DEC A
LD I,A
LD HL,INT
LD A,195;JP
LD (#C1C1),A
LD (#C1C2),HL
IM 2
LD DE,0
EI
HALT
LD HL,I2
LD (#C1C2),HL
M0      INC DE;243*255=>slow=61965
LD B,16
M1      DJNZ M1
LD A,R
INC HL
JR M0

I2      DI
POP HL
LD A,#3F
LD I,A
IM 1
INT     EI
RET

K128    PUSH BC
LD BC,#7FFD
OUT (C),A
POP BC
RET

SORT    LD B,SIZE-1
L0      LD C,SIZE-1
LD IX,PAGS+ST
L1      LD A,(IX)
LD D,(IX+1)
CP D
JR C,N1
JR Z,N1
LD (IX),D
LD (IX+1),A
LD A,(IX+ST)
LD D,(IX+ST+1)
LD (IX+ST+1),A
LD (IX+ST),D

N1      INC IX
DEC C
JR NZ,L1
DJNZ L0
RET

PAGS    DEFB 17,19,23,16
DEFB 0



Другие статьи номера:

SHELLING - Оболочка автоконфигурируется под ваш компьютер.

CHEAT - CHEAT к играм: A LAST HERO, FISHER, ЧЕРНЫЙ ВОРОН.

Игромания - Новелла-описание к игре "ZANNY-2".

Письма - Об атрибутном эффекте в 5 номере.

Ferrum! - Контроллер Kempston-mouse.

Ferrum! - Антиподслушка из диодов при положенной телефонной трубке.

Юмор - Сообщение о MicroSoft WINDOWS BS-EXTRA.

Юмор - Почему пиво лучше, чем женщины.

Авторы - Об авторах.

INCOMING - Презентация игр: A LAST HERO of the LIGHT FORCE ORCS LAIR & MONSTR LAND.

Система - Обзор нового системных программ: ALASM v4.1, STORM v1.1 , BEST VIEW v2.2.

AUTOCONF - AUTOCONFIG расширеной памяти нужен всем.

Net News - Новости с PROFI-BBS.

Реклама - Реклама и объявления ...


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Иной - dnewnik-ol.
Железо - Описание и программирование AY-3-8910(12).
Анекдоты - расслабуха.

В этот день...   20 января