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> Сразу хочу заявить, что за
последствия работы вышепри-
ведённой програмки ответа надо
требовать с её автора. А у меня
сия штучка всё ещё вызывает
странные сомнения... :(.
Для заинтересовавшихся же данной
темой в Обмене опытом найдётся
ещё одна программка на данную
тему, кстати, понимающая больше
типов компов...