ZX Format #05
11 декабря 1996

Программистам - описание и история создания MEM.

MEMHELP (TALES OF CREATION).

music by DNK            
(C) KAMIKADZE O.B.  FUCKSOFT
________________________________

           Гордый вратник Сатаны
           Пролил кровь на свет
           И Священный Меч Войны
           Разрубил Секрет ...
           (KORROZIA METALLA 92)

 Программка  "МЕМ" была написана
по нескольким причинам:

    Во-первых  : утомили всевоз-
можные    козлы,    которые    в
следствии  то ли собственной ог-
раниченности,   то  ли  убогости
своих  паталогов (а называть из-
делия,  которые не могут произо-
дить  полную  дешифрацию  адреса
порта, словом "КОМПЬЮТЕР" - язык
не  поворачивается),  упрямо вы-
пускают   на  белый  свет  некие
программные   продукты,   подчас
вроде  бы  и неплохие, да в силу
указания неполного адреса порта,
не  работающие на нормальных ма-
шинах  (PROFI,  SCORPION, etc.),
за  коими, как известно, будущее
синклер  -  совместимого  рынка.
Особенно удручают их "адаптации"
уже известных программ под такую
паталогическую  дешифрацию.  Ку-
пишь программку за денежки кров-
ные  - а она не пашет... Злость,
отнюдь  не спортивная охватывает
- так бы и дал в морду!!! Да где
она,  эта  морда??? Уж много лет
умные   люди  твердят:  указывай
ПОЛНЫЙ  адрес  порта!!! Да разве
можно убедить идиота?..
Посему,   идиотов  просим  обло-
миться  и  не читать далее - все
равно без толку. Лучше поиграйте
в "PREVIEW"...
    Во-вторых  : у вышеуказанных
почетнных компьютеров наблюдает-
ся  несовместимость  по портам и
методам   переключения  страниц,
когда  речь  заходит  о  памяти,
большей, чем 128к.
    В-третьих   :   не   у  всех
компьютеров   одинаковой  модели
равное  количество ОЗУ. У PROFI,
например,  бывают варианты 256к,
512к,  768к,  1М.  Ходят байки о
512к  SCORPIONе,  который  может
быть появится в ближайшем време-
ни...
    В-четвертых  :  страницы ОЗУ
могут располагаться и не подряд:
например у того же PROFI в базо-
вой  модели при 512к наблюдается
такая  странная картина физичес-
кого  расположения  ОЗУ:  сперва
256к ОЗУ (#0-#0F), затем дырка в
512к  (#10-#2F),  и, наконец еще
256к  ОЗУ (#30-#3F), хотя бывает
и подряд...
    В-пятых : на некоторых маши-
нах,  рассчитаных на большое ко-
личество  страниц, при подключе-
нии  НЕ ВСЕГО ОЗУ (например 512к
вместо  1М) вылезает на свет та-
кая  паталогия,  как пересечение
страниц:  обращаешься к одной, а
подключается  другая  (или  нес-
колько  других), либо одну стра-
ницу можно вызвать по разным но-
мерам,  либо...  Упаришься пере-
числять.  Хорошо это или плохо -
вопрос спорный, но в плане безо-
шибочного листания страниц - бе-
зусловно  отвратительно.  Прихо-
дится  составлять карты ОЗУ, на-
зывать физические страницы логи-
ческими номерами, обращаться че-
рез   специальный  (программный)
диспетчер памяти... МРАК !!!
    В-шестых : в последнее время
стали частенько появляться прог-
раммы,  ориентированные  лишь на
определенную   машину:   TASM256
(SCORPION),    HONEY   COMMANDER
(ATM),  MEGACOPY (PROFI), и мно-
гие  другие. То же и с игрухами.
На   этих  компьютерах  они  ис-
пользуют  все их достоинства, но
на других они не идут, или идут,
но  ущербно. А ведь все различие
заключается  в  99% случаев не в
использовании     дополнительных
уникальных аппаратных особеннос-
тей,  а  в  прозаическом  методе
листания  страниц, либо в их ко-
личестве.  Тем самым авторы этих
программ  (подчас весьма хороших
и,   что   самое  обидное,  уни-
кальных)  теряют  огромную часть
своей потенциальной аудитории, и
в  следствии, авторитет и финан-
совую выгоду.
#    В-седьмых  :  наблюдается  и
обратная  картина, не менее иди-
отскя  : авторы, желая "чтоб ра-
ботала  на  всем", преднамеренно
понижают  уровень  программ, ис-
пользуя  самый  мизер и прижимая
SCORPION  или  PROFI  до  уровня
128, а то и 48к. Понятно, что не
всегда  эти навороты нужны, но в
противном случае чувствуешь себя
оставленным в дураках: обладаешь
мегабайтом  памяти, а копируешь,
используя  128к, т.е. вставляешь
и  вытаскиваешь диски (путаясь и
яростно  матерясь)  6  раз. Или,
при  имеющемся  256к  SCORPIONе,
жирная,  графически навороченная
игруха каждые 1-2 минуты начина-
ет  ерзать по диску, считывая по
16к  файлы (а их может оказаться
и  16 штук по 1к) на каждый уро-
вень,  а  уровней,  например 14.
Трагикомедия...
    В-восьмых,  в-девятых, в-де-
сятых...  Можно состариться, пе-
речисляя,  но не охватить и про-
цента причин, а ведь разумеется,
я  все  равно не смогу вспомнить
их  все. У тебя, небось, тоже не
раз   возникали   дополнения   к
скорбному списку паталогий, пока
ты читал сий пасквиль.
    Мораль  сей  басни  такова :
грамотно   написанная  программа
обязана  использовать по возмож-
ности  ВСЮ  имеющуюся  в наличии
память компьютера, ежели это мо-
жет    повысить   ее   качество,
удобство,  быстродействие, объем
данных. В некоторых случаях это,
конечно вовсе не обязательно, но
когда  речь заходит, например, о
копировщиках,    базах   данных,
электронных  дисках, оконных ин-
тефейсах  с сохранением, многоб-
лочных  игрухах и прочих прибам-
басах, то максимальное использо-
вание  ВСЕЙ памяти - бесспорно и
необходимо!!! И кроме того рабо-
тать  на  других компьютерах, не
гнушаясь ничего, даже 48к.
    Задачи  на первый взгляд не-
совместимые, но только на первый
взгляд.  Программа  ДОЛЖНА  САМА
ОПРЕДЕЛЯТЬ, какой компьютер, вы-
яснять  количество реально имею-
щихся  страниц  ОЗУ  их реальные
адреса и метод их листания. Ведь
согласитесь,  вводить эти данные
с  клавиатуры каждый раз при за-
пуске, либо инсталлировать с за-
писью  SETUPов на дистрибутивный
диск (явно защищенный) с угрозой
того,  что при записи он загнет-
ся, не хотелось бы никому, в том
числе  и потенциальным покупате-
лям ваших программ.

     Как  раз, именно этим и за-
нимается  моя программка с неза-
тейливым   названием   МЕМ.  Ис-
пользуя  ее  в своих программах,
вы  можете  добиться всего того,
что я пожелал грамотным програм-
мистам,  знающим толк в удобстве
работы  с большими массивами па-
мяти. Отдавая ее "на халяву" лю-
бому пожелавшему, я надеюсь, что
она   принесет  ему  удобство  и
пользу,   а  юзеpам  -  неплохой
SOFTWARE,  за  который  не жалко
будет заплатить кровные...

   Сама  программка  написана  в
виде набора подпрограмм в форма-
те GENS4+ ( увы, увы - ради сок-
ращения  объема  ее пришлось пе-
регнать   в   TASM.  прим.ред.).
Опознает     PROFI,    SCORPION,
SINCLAR  128, SINCLAIR 48. К со-
жалению,  не имея никаких данных
по АТМ, я не смог включить его в
этот  список.  Она была обкатана
на  таких  машинах,  как  PROFI,
SCORPION, PENTAGON, ZONA, 128к и
48к,  а посему признана работос-
пособной.

    Имеются несколько точек вхо-
да,   каждую  из  которых  нужно
рассмотреть в отдельности :

     CONF   :  производит  опрос
конфигурации компьютера. Возвра-
щет в регистре А тип машины "s"-
SINCLAIR  48,  "S"SINCLAIR  128,
"C"-SCORPION  256,  "P"-PROFI  и
дублируя ее в переменной (CONF);
в переменной (DELA) - количество
страниц  и  таблицу их реального
расположения,   начинающуюся   с
TABL  и  заканчивающуюся  байтом
#FF.  Если ты не собираешься вы-
черкивать  страницы либо перехо-
дить  в  смешаный  или  48 режим
(см.  ниже),  то после выхода из
этой  процедуры  все, что дальше
этого байта #FF, более не приго-
дится,  а посему можно загружать
туда все, что угодно и использо-
вать эту область памяти по свое-
му  усмотрению.  Если  ты все же
собираешься  повычеркивать и(ли)
посмешивать, то эта область ста-
нет ненужной только после вычер-
кивания  и(или) смешивания. Сох-
раняет все регистры кроме AF, но
в  своей  работе использует по 1
байту  из каждой страницы, с но-
мером,  указанном в метке POINT.
Устанавливает после себя текущей
страницу  7.  Уничтожает  себя в
процессе  работы,  изменяя  свое
тело  на  переменные  и  таблицу
страниц,  посему  второй  раз не
может  быть вызвана (да это и не
нужно). Также производит некото-
рые  изменения  в теле процедуры
LISTER,  указывая на установлен-
ный в процессе опознавания порт.
Желательно  запустить  ее еще на
стадии  загрузки, чтоб ничего не
повредила в страницах.

    ERASER  : вычеркивание стра-
ницы с физическим номером, поме-
щенным  в  регистр  А, из списка
страниц  ОЗУ  и  соответствующее
уменьшение числа страниц в пере-
менной (DELA). Имеет смысл в том
случае, когда какие-либо страни-
цы  не собираешься листать, нап-
ример  2 и 5. Тем самым они уда-
ляются  из  таблицы  и  более не
участвуют в процессе листания по
логическим  номерам  (см. ниже).
По  окончанию  вычеркивания всех
ненужных страниц, сама становит-
ся ненужной и может быть репрес-
сирована  в порядке, указанном в
предыдущем абзаце. Сохраняет все
регистры  кроме AF. Можно запус-
кать   только   после  процедуры
CONF.

    LISTER : производит листание
по установленному порту в проце-
дуре  CONF  и логическому номеру
страницы,  помещенному в регистр
А. (Логический номер имеет смысл
в том случае, когда не все в по-
рядке с номером физическим, нап-
ример  когда  некоторые страницы
вычеркнуты  или же при такой пи-
кантной  ситуации  :  обнаружены
номера     страниц    #01...#0F,
#30...#3F,  и  программисту куда
удобнее  называть их по порядку,
т.е.  #00...#1F,  а  не морочить
себе  голову замысловатой карти-
ной  физических номеров. В таком
случае  удобно указывать тот но-
мер, который страница занимает в
таблице  страниц.)  Возвращает в
регистре   А   физический  номер
страницы  и дублирует ее в пере-
менной (MARK). Сохраняет все ре-
гистры, кроме AF, игнорирует но-
мера  страниц, большие, чем было
установленно. Эту процедуру мож-
но  запускать только после того,
как конфигурация была установле-
на процедурой CONF, иначе капут.
    (Имеет  смысл напомнить, что
во  всех машинах, о которых идет
речь,  окромя  PROFI  с памятью,
меньшей  1М,  при  невычеркнутых
страницах  логический и физичес-
кий номера совпадают).

PROFI : листает физические стра-
ницы  PROFI  по  порту #DFFD, по
номеру, помещенному в регистр А.
Сохраняет  все регистры. SCORP :
то  же  самое для SCORPIONа порт
#1FFD.  S_128  : то же самое для
SINCLAIR 128 порт #7FFD.

UN128 : Переводит паталог из 128
в смешаный режим, т.е. с 48 ПЗУ,
но  с открытым #7FFD-портом. Это
бывает полезно, когда 128-я ПЗУ-
ха совсем не в тему (а это почти
всегда),  но  все же надо полис-
тать.  Старается  сохранять  все
регистры,  но  включает  1 режим
прерываний и разрешает их. После
ее  выполнения, если вернешься в
BASIC,  то  увидишь не 128, а 48
редактор. В случае, если запуще-
на из смешаного или 48 режимов -
ничего  не произойдет. После вы-
полнения  становится  ненужной и
может быть репрессирована.

UN48  :  Переводит  паталог в 48
режим,  т.е.  закрывает  защелку
#7FFD  порта.  Листание  обычным
способом, естественно, становит-
ся невозможным. (Я не имею в ви-
ду  особые  способы,  возможные,
например  на  PROFI или SCORPIO-
Nе).  Сохраняет все регистры, но
сама  запускает  UN128  со всеми
вытекающими последствиями. После
ее  выполнения  ВСЕ подпрограммы
МЕМ становятся ненужными и зани-
маемая   ими  память  может  ис-
пользоваться  по своему усмотре-
нию.

ПОДОБЬЕМ БАБКИ :

(далее  значок  * означает адрес
загрузки МЕМ)

1 - Процедуры :
*+61 CONF : определение конфигу-
рации и установка порта.
*+337   ERASER   :  вычеркивание
страницы из таблицы.
*+38  LISTER : листание логичес-
ких  страниц  по  установленному
порту.
*     PROFI \ листание физичес-
*+12  SCORP -  ких страниц по со-
*+24  S_128 /  ответствующему
              порту.

*+367 UN128 : перевод паталога в
смешаный режим.
*+429  UN48 : перевод паталога в
48 режим.

2 - Переменные :
*+61 CONF : установленная конфи-
гурация :
"s" - SINCLAIR 48
"S" - SINCLAIR 128
"C" - SCORPION 256
"P" - PROFI
*+62 DELA : количество опознаных
страниц.
*+63 TABL : начало таблицы стра-
ниц.

MARK  : копия физического номера
текущей  страницы.  По умолчанию
#5B5C,  что  соответствует пере-
менной 128к BASIC BANKM.
POINT  :  адрес  байта опознания
страницы (его содержимое погиба-
ет).  По  умолчанию  #FFFF, т.е.
последний.

    Совет тем, кто недопонял: на
стадии  загрузки нужно загрузить
МЕМ,  смешать (желательно) с по-
мощью UN128, запустить CONF, за-
тем вычеркнуть ненужные страницы
с помощью ERASER, после чего не-
обходимым останется лишь кусок с
длиной  в  64 байта + количество
страниц. (Максимальная длина - в
случае PROFI 1M с невычеркнутыми
страницами  = 128 байт). Для пе-
ревода  в  48  режим  достаточно
просто   запустить  UN48.  Потом
можно  грузить,  запускать, лис-
тать (если не защелкнул) и т.д.

    Переменные MARK и POINT мож-
но   установить   любые,   какие
больше  по душе придутся, но ос-
мелюсь   напомнить,   что  POINT
должна    быть    в    интервале
#C000...#FFFF,  а MARK - как раз
наоборот, не должна.

    Также,  не  сочтите  за  ос-
корбление   просьбу  располагать
сию  программку  не  в листаемых
страницах  и  по  возможности не
листать  2 и 5 страницы, а также
помнить,  что  нумерация страниц
(как  физических, так и логичес-
ких)  начинается  с 0, т.е пере-
листнуть можно только страницу с
номером  меньшим, чем в перемен-
ной (DELA) и уж тем паче не лис-
тать страниц на 48к машине (т.к.
порт листания на ней не устанав-
ливается,   таблица  страниц  не
составляется  и паталог сбросит-
ся).  Кстати,  сия программка не
отличит  KAY  256  от SCORPIONа,
т.к.  у нее только одна задача -
память.  А  у  SCORPIONa полезно
вычеркнуть 8 страницу во избежа-
ние обломов с RST8.


    И ежели все это будет соблю-
дено,  то можете смело варганить
программку,  включая  в  нее МЕМ
кусок, и листать страницы любого
компьютера,  не  заботясь  ни  о
чем, и программки ваши будут зе-
ло красотою лепы, и радовать бу-
дут мое жестокое сердце...

   ЧАО...

(KAMIKADZE O.B.)

= FORWARD TO FULL DARKNESS !!! =

 ZF> сама прога лежит в приложе-
нии, в формате TASM4 (XLD).
 ZF>  Сразу хочу заявить, что за
последствия    работы   вышепри-
ведённой  програмки  ответа надо
требовать  с её автора. А у меня
сия   штучка  всё  ещё  вызывает
странные сомнения... :(.
Для заинтересовавшихся же данной
темой  в  Обмене опытом найдётся
ещё  одна  программка  на данную
тему,  кстати, понимающая больше
типов компов...



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

Авторы журнала - ZX-Format No.5

От авторов - о пятом номере журнала.

Игрушки - 48 утюгов (част 4).

Игрушки - по пополочкам: Castle Master #1

Игрушки - новелла по игре Robin Of Sherlock.

Программистам - Basic для чайников - часть 5.

Программистам - искусственный интеллект в компьютерных играх.

Программистам - TR-DOS для программистов.

Программистам - описание и история создания MEM.

Программистам - обмен опытом: Об эффектах на бордюре и кое о чём ещё.

Программистам - обмен опытом: "Подсчет мозгов" - AUTOconfig v5.03.

Программистам - adventure: разумный подход к прохождению.

IS-DOS - пользователям: справочник по основным командам и утилитам базового комплекта IS-DOS.

IS-DOS - программистам: краткий курс программирования в среде IS-DOS.

IS-DOS - IS-NEWS - "Новости в мире IS-DOS".

IS-DOS - програмно-аппаратный комплекс поддержки IDE HDD для ZX Spectrum.

Железо - KAY: ZX Spectrum Ttransformer.

Железо - Технология это война.

Железо - General Sound.

Железо - XTR Modem.

Железо - Схемa KEMPSTON MOUSE.

Железо - Что делать, если мыша не правильного типа.

Железо - LPT COVOX и не только...

Премьера - описание программы Catalogue Master.

Премьера - описание программы Micro-editor. (MED)

Премьера - Text designer.

Интервью - интервью с разработчиком клона HOBBIT (2-я часть).

Отдохнём - словарь рекламы (С юмором, но не без здравого смысла!).

Отдохнём - Воспоминания о будущем.

Почта - Письма читателей.

Почта - реклама и обьявления.

Почта - уголок ламера (Детям до 16 лет читать категорически воспрещается).

Разное - перспективы: новая игра от Медноногова "Чёрный Ворон".

Разное - перспективы: Pink Floyd - новая операционная система для Спектрума.

Разное - перспективы: игра Экспансия.

Разное - Здесь был ТЫ.

Разное - Рецензия на игру Kings bounty II.

Разное - Конкурс на лучший уровень к игру Laser Squad продолжается. Новый конкурс на микро-демо.

Разное - анкета для читателей журнала.

Amiga - Крик души: Windows 95 и еще кое о чем.

Amiga - Amiga-клуб, вопросы и ответы.

Amiga - Проект PowerUp - следующее поколение Aмиг.


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

Похожие статьи:
Вопрос-Ответ - Итерактивность...
Железо - Производители: KAY - Турбирование Spectrum - машин
Улыбнись - Вода.

В этот день...   14 июля

Релизов не было :(