Написал комментарий к произведению Ретро бит [5]
Тут Макаронный монстр правит балом!
Заходил
Тут Макаронный монстр правит балом!
Есть другая ветка с ПЛиО - https://author.today/work/series/4294
Солдат Рон, тоже один из лучших на мой взгляд.
Потому что я вначале подумал что вычисление остатка происходит в цикле. Сейчас увидел что это однократная операция.
> Потом я переключусь на что-то другое
В смысле переключишься? Давай, автор, хайпуй!
Ну вот смотри, меняем count%4, на count and 0x3 и всё равно будем циклически получать 0..3, при любом count даже при отрицательном. Кроме того что мешает всё таки объявить его беззнаковым, если по условиям задачи он не может быть меньше нуля.
Если что, я про оптимизацию switch (count % 4), а не про деление.
Так нам не нужен общий случай, конкретно тут количество байт для копирования, не может быть отрицательным.
upd. Хотя так же будет работать только остаток получается инвертированным, но для кода выше это не важно.
Мне кажется можно n AND 0x3 применить, это должно дать результат остатка от деления на 4. Не знаю делает ли эту оптимизацию компилятор тех лет.
> Чуть меньше узко-специализированных подробностей.
Борис, ты не прав.
Судя по тегам, автор обустраивается на новом месте.
В номере 52 журнала Downgrade (стр 28) есть ссылка на doom для 8088
Doom8088 is a port for PCs with a 16-bit processor like an 8088 or a 286, and with MDA, CGA, EGA, VGA or MCGA graphics.It uses 64 kB of EMS memory, if available, as an upper memory block to store data.And 1507 kB of XMS memory, if available, as a RAM drive.
На old-dos.ru нашел интересную статью: язык Аугуста - свой Паскаль для БК-0010, уместившийся в 8 Кб (стр 66-73)
Сам практически не писал под дос, да и забыл уже всё. Отрывок ниже из MS-DOS. Руководство разработчика. Глава 4
Повторная активизация TSR
Когда TSR получает запрос повторной активации, она должна
убедиться в безопасности дальнейшего выполнения. Эту задачу уп-
рощают действия, выполняемые программой инициализации. TSR должна
проверить флажки критической ошибки и критической секции, и убе-
диться в том, что не выполняются непрерываемые операции. Если
дальнейшее продолжение выполнения безопасно, TSR должна сохранить
текущие значения регистров, переключиться на свой собственный
стек, установить свои собственные подпрограммы критической ошибки
и break, записать информацию, сохраненную в различных глобальных
переменных DOS и, наконец, установить свою собственную среду,
включающую адреса текущих PSP и DTA. Заметим, что очень важен по-
рядок выполнения этих операций!
Кроме этих, могут потребоваться и другие операции. Так, если
необходимо использовать изображения, TSR должна сохранять в памя-
ти содержимое экрана. Программа PRINT.COM проверяет сводный ре-
гистр прерывания в контроллере 8259. Если активны какие-либо пре-
рывания, отличные от прерываний ISR, которые пробуждают ее, она
игнорирует запрос повторной активации. Вероятно, PRINT.COM делает
эту проверку, чтобы избежать потери символов последовательного
порта и других устройств отображения.
После завершения своей работы, TSR должна произвести откат
выполненных шагов и быстро перейти в фоновый раздел, ожидая снова
получения запроса повторной активации. TSR должна восстановить
значения регистров PSP, DTA, стека и других регистров прерванной
программы. После того, как TSR завершит эти шаги, она может безо-
пасно восстановить драйверы обработки критической ошибки и break
и осуществить возврат в прерванную программу.
Определение безопасности повторной активации
Невозможно предсказать, когда произойдет запрос на повторную
активацию TSR. Секции DOS не являются повторно входимыми, поэтому
и TSR не всегда может повторно активироваться при выдаче запроса
повторной активации. Детально эта проблема обсуждается в разделе
"Архитектура DOS". Необходимо с уважением относиться к этим огра-
ничениям, иначе Ваша программа, несомненно, разрушит систему и,
даже, возможно, разрушит диск.
Минимальный объем проверок, который должна выполнять Ваша
TSR, приведен в листинге 4-27. Эта программа предназначена для
выполнения с запрещением прерываний. Когда процессор отвечает на
прерывание, он запрещает прерывания. До тех пор, пока программа
обслуживания прерывания не разрешит прерывания перед вызовом
DOSSafeCheck, Вы не должны неявным образом манипулировать флажком
прерывания.
Эта программа начинается с увеличения значения того же самого
флажка BusyFlag (флажок "занято"), используемого новой подпрог-
раммой дискового в/в (листинг 4-23 "Типовое замещение программ
ISR дискового в/в"). Этот флажок имеет начальное значение -1. Ес-
ли инструкция INC в DOSSafeCheck имеет нулевой результат, то про-
должение выполнения безопасно. Ненулевой результат означает, что
выполняется одна или более дисковых операций (в конечном счете,
прерывание int 13h выполняется как результат прерываний int 25h и
int 26h), или незавершен предыдущий вызов TSR. Так как переключе-
ние стека выполняется программой повторной активации, то TSR не
является повторно входимой. (Позднее последовательность повторной
активации будет описана более подробно).
Затем эта программа проверяет флажки критической секции и
критического прерывания. Заметим, что необходимо проверять оба
флажка. Перед началом обработки критической ошибки драйвер крити-
ческой ошибки DOS уменьшает значение флажка критической секции и
увеличивает значение флажка критической ошибки. Побочным эффектом
вызова этой подпрограммы является то, что она предохраняет TSR от
повторного входа. Перед тем, как TSR переключится в фоновый раз-
дел, она должна уменьшить значение флажка "занято" (BusyFlag).
Переключение стека и сохранение регистров
Стек является важной составной частью среды программы. Так
как повторная активация происходит в результате прерывания, то
способ определения используемого стека или доступного пространс-
тва стека отсутствует. Стеки, используемые диспетчером прерывания
int 21h, достаточно большие, чтобы разместить значения всех ре-
гистров процессора. Любая прерванная программа также должна иметь
возможность использовать оставшуюся память стека, иначе она не
сможет выполнять запросы BIOS. Диспетчер BIOS сохраняет все ре-
гистры в текущем стеке.
Перед повторной активацией TSR, программа ISR должна сохра-
нить все регистры и переключиться на личный стек TSR. Разумно
сохранять регистры в том стеке, который использовался в момент
возникновения прерывания. Оба значения стека и регистров являются
частью одного и того же контекста программы, и стек должен иметь
необходимое пространство для этих значений.
Не совсем, насколько я понял сейчас опыт даётся за увеличение шансов сообщества/КДшника выжить. Просто рождение ребёнка этот шанс не увеличивает, а вот когда, например, этот ребёнок достигнет уровня пятидесятого, это меняет дело. Или когда он своё потомство заведёт.
> Прикладная программа вызывает функцию DOS/BIOS, в момент ее исполнения TSR активизируется
Для этого запрет прерываний есть, а в остальном согласен.
Либо опыт дают не по факту рождения, а когда новый КДшник достигает какого-либо этапа своей жизни.
В досе резиденты ;)
Наверное можно было создать «юникс для бедных» — однопользовательский, однозадачный (?), но совместимый на уровне системных вызовов с большими машинами. Не ясна правда его нужность при таких вводных. Всё-таки изначально юникс не предназначен для работы в реальном режиме, все большие ЭВМ имели какой-либо вариант защищённого режима.
В юниксе демоны и зомби, в виндоус иконы и службы)
Так никто и не заставляет её писать вот прямо сейчас. Подучится, заматереет в обоих направлениях и лет через 4-5 что-нибудь выдаст при правильной мотивации.
И такой (почти) специалист у него есть.
> а крики «отжались все, даже привидения!» уже стали притчей во языцех.
А через час начался самый необычный во всемирной истории экспресс-курс неволшебных наук.
– Ну что, сынки, – говорил Мистер Клинч, прохаживаясь перед строем учеников небрежным строевым шагом. – Родина и лично ректор потребовали от нас напряжения всех наших сил в овладевании всякими мудловскими науками. На все про все у нас три недели. Сдюжим?
Первокурсники угрюмо молчали.
– Не понял. Вы чего-то не поняли? Два круга по стадиону!
Мергиона и Порри старались держаться поближе к Сену, но все равно прозевали момент финишного спурта, который тот устроил прямо на старте. Бежал Аесли быстро, но недолго. Последние полтора круга его пришлось нести. «Первертс своих не бросает, да и мимо чужого не проходит», – на бегу придумал принцип майор Клинч.
После марш-броска студенты стали понятливее и на клинчевское «Сдюжим, сынки?» ответили нестройным «Постараемся, а то что ж…»
– Орлы! – обрадовался преподаватель. – Соколы вы мои пернатые! Только соколы летать должны, а вы еле ползаете. Что я увидел? Увидел я четыре группы научной подготовленности. Первая группа – Пейджер и Дуб. Этих хоть сейчас под ружье… то есть на экзамен. Вторая – Гаттер, Форест и Пулен. Третья – все остальные. Четвертая – Аесли. Так вот, группа должна быть одна, первая! Всем ясно? Первый урок – физика.
– А почему на стадионе? – поинтересовалась Амели.
– Вопрос хороший, – сказал Клинч, – но и ответ будет не хуже. Я эту физику всю прочитал, сколько смог. И что там самое главное? Форест, положи Аесли в тенек, авось отойдет. А главное – это, братцы, сила. Так и написано: ежели силу не приложишь, то ничего и не сдвинется.
– Второй закон Ньютона, – подал голос образованный Порри.
– Закон у нас один, – сказал майор, разглядывая Гаттера. – Сила есть, ума достанем. Упор лежа при-и-и-нять! Двадцать отжиманий. Пейджер! Придержи Аесли, загубит себя, болезный.
Но Сен уже успел сделать три с половиной энергичных отжимания с прихлопываниями, прижался к земле и простонал:
– Мерги! Добей меня! Что ж так мучаться!
– Сам справишься, – ответила добрая Мергиона, добросовестно изучая физику в упоре лежа.
На следующее утро стонущих первокурсников снова собрали на стадионе.
– Что, сынки, – первым делом спросил Клинч, – болят руки-ноги?
– А-а-а-у-у-у-а-а! – простонали сынки.
– А все потому, что химии не знаете! Руки-ноги у вас болят оттого, что в них образовалась зловредная молочная кислота. Как ее формула, не знаю, врать не буду, а буду обучать вас способам лечения этой химической заразы. Два круга… Аесли, куда? Два круга за Сеном Аесли!
На сей раз Сен убежал немного дальше, правда, в противоположную сторону.
– Да что ж такое! – чуть не плакал он, сидя на закорках у Дубль Дуба. – Я же не хотел! Они сами побежали!
К концу недели студенты уже знали основы:
– биологии («Движение – это жизнь, так что, сынки, держитесь, сейчас я вам дам жизни!»);
– географии («Вот попадете вы на Северный полюс, как греться будете? Правильно! Три круга по стадиону!»);
– истории («Чему нас учит история? История нас учит, что хилые завсегда вляпываются в какие-нибудь истории. Так что четыре круга по стадиону»);
– и анатомии («Посмотрев на строение тела человека, делаем вывод "В здоровом теле – здоровые внутренности!" Вывод ясен? Побежали»).
Изучение новых предметов чередовалось с повторением пройденного – вернее, пробеганного.
Сен заметил две странности. Во-первых, после очередного физического упражнения ему всегда становилось легче. Видимо, хочуга тоже не железная. Во-вторых, прыжки, пробежки и прочие телодвижения постепенно начинали как-то удаваться. На «анатомии» он даже сам добрался до финиша, и Клинч торжественно перевел его в третью группу.
– Наверное, – предположил Порри, – ты эту хочугу в энергию перерабатываешь. Глядишь, всю и переработаешь.
В следующий понедельник никто уже не стонал, а на вопрос Клинча «Как самочувствие себя?» – строй бодро отрапортовал:
– Все болит, может, сегодня отдохнем?
– Как скажете, – согласился майор. – А лучший отдых – это смена занятия. К турникам бегом марш!
У турников Клинч сообщил, что сегодня астрономия, и продемонстрировал «солнышко» с эффектным соскоком.
– Солнце вы уже посмотрели, сейчас полюбуетесь на другие астрономические объекты. Ну-ка, все повисли на турниках, подтягиваемся, кто сколько может.
Сен подтянулся один раз. Что оказалось даже больше, чем он мог. И к концу этого раза звездочки действительно залетали у него перед глазами.
«Все, нужно спрыгивать», – решил мальчик… и резким рывком подтянулся еще раз.
В начале третьей недели Аесли перешел во вторую группу. Точнее, перебежал: неистребимая хочуга, пользуясь окрепшим организмом Сена, вынуждала его уже не просто выполнять задания Клинча, а перевыполнять их. Дошло до того, что когда майор начал объяснять базовые понятия геометрии, Аесли пришлось привязать к гимнастическому козлу.
– Угол должен быть прямым. Вот смотрите: я выжимаюсь на брусьях, поднимаю ноги, и они образуют с туловищем прямой угол.
И тут Сен, в котором снова зашевелилась решительность, закряхтел, напрягся – и рывком поднял козла в воздух.
– Вот еще один пример правильной геометрии, – сказал Клинч, когда обессилевшего от такой натуги Сена привели в чувство. – Если долго гнуть свою линию, получается полный параллелепипед.
После занятий друзья отвели Аесли к ректору, который осмотрел мальчика и сообщил, что хочуга и в самом деле стала меньше. А мускулы на руках и ногах Сена не то чтобы стали больше, но появились.
– Может, и правда, – почесал затылок Лужж, – хочуга превращается в физическую силу. А где ты так накачался?
– На географии с астрономией, – ответил Аесли.
> LLM
> летать
Думаю вряд ли.
Знали бы вы как я удивился, когда увидел что страница моего nextcloud грузит 50 Мб скриптов до первого показа страницы. Пришлось его заменить на другое решение.
Что характерно, страница грузится мгновенно. Где-то мы не туда свернули в развитии веба.
> Называли “Симулятор жизни”, “Симулятор студента”, “Симулятор бомжа” и так далее.
Я что-то такое делал, совсем простенькое на delphi
, лет двадцать назад.
Знание законов/заполняемых форм вам тоже визикальк сделает? Вообще через пару лет нужно под руководством Бренды выделять подразделение занимающееся платформой 1S ;). Желательно опенсорсной, с платной поддержкой, по подобию красношапки.
Вот это маня-мирок.
Дедушке можно заказать усовершенствование технологии и сосватать своих помощников/учеников.
Эти bbs работают через ssh/telnet т.е. доступны через обычный интернет. А для факсов в sip есть стандарт T.38
Специальные раскладки клавиатуры с типографскими символами грустно смотрят на тебя.
Может вы и правы, я не настолько специалист.
> чем можно заменить недостающие для «самодельных» оранжерейных контейнеров лампы фиолетового света…
> Перекрестки миров
Это просто перепевка цикла Врата Сергея Кима, который в свою очередь вдохновлялся аниме «Врата, там бьются наши войны»
Ну и 10% для игр это просто дофига.
Старый, добрый производственный роман, всё как я люблю. Спасибо!
Длинные имена и комменты без проблем, с функциями да есть загвоздка. Учитывая затраты на вызов функций, их нужно избегать в критических по времени исполнения участках. Либо как предложили ниже писать компилятор или препроцессор который будет инлайнить функции.
Предтеча табуляторов была создана еще в 1832 году. Но как всегда изобретение тогда было никому не интересно.
Самая последня стадия развития с/х это огромные предприятия биопрома где с/х культуры выращиваются как клеточные культуры, после чего из биомасы формируется мука для зерновых и что-то вроде плодов для остальных. То же самое с мясом.
В ГП уже Таргус Веридиан поураганил. Пожалейте эту вселенную.
Статья про «Танки» (Battle city), его предшественников и преемниках.
Написал комментарий к произведению Ретро бит [5]
Очередная статья про Elite на Хабре, из интересного: