Dos fn 54h дать переключатель верификации dos


Содержание

Рабочий стол

коды грея, лень курить html

Добрел до подготовки к программированию — сквозь чудесное празднование с Солнцем, дебри домашних мантушек, «Ликвидацию» и поиски картридера, — таки шо я имею вам сказать. Коды Грея самокопирующие, точнее, зеркалящие. Дядя Зина нам в лекции предлагает строить с помощью дополнительного массива Y длинной 2 в степени n, в котором хранятся номера элементов, которые нужно поменять. А Солнце делал все через string и приписывал в первой половине к началу 0, а во второй — 1. Несколько минут назад, я, помучившись, вывел жу-у-уткую зависимость между номерами шагов (для удобства, от нуля) и номерами меняемых элементов. Причем, считаем справа налево, от нуля и воспользуемся свойством Кодов Грея — честно, мне стыдно и лень спрашивать, какую он там бахнул черную магию, поэтому будем-с изобретать велосипед, — самокопированием.

0 — 0000 — 0 4 — 0110 — 0 8 — 1100 — 0 12 — 1010 — 0
1 — 0001 — 1 5 — 0111 — 1 9 — 1101 — 1 13 — 1011 — 1
2 — 0011 — 0 6 — 0101 — 0 10 — 1111 — 0 14 — 1001 — 0
3 — 0010 — 2 7 — 0100 — 3 11 — 1110 — 2 15 — 1000 — 4

На каждый четный номер шага меняем нулевой элемент. Дефолтно начало первых трех во вспомогательном массиве — это <0, 1, 0>. После них меняем элемент под номером номер максимального элемента, увеличенный на единичку. А далее копируем все, что меняли до этого. Закончили копировать, снова меняем, уже третий элемент, и копируем. и так, пока не надоест. Все, я пошел. Изначально думал привязывать к степеням двойки, но там такая дичь, что я решил не выеживаться

ЗЫ., Все оказалось куда как изящнее. Связь кода Грея с двоичным: старшие разряды совпадают, а следующие являются результатом сложения настоящего и следующего разряда по модулю два.

@музыка: Depeche Mode — And Then.

@настроение: жрать хочу, а низя

когда не хочешь писать в дневник

@музыка: Adriano Celentano — Napoleone Il Cow Boy E Lo Zar

тщетная попытка

Так, время утекает сквозь пальцы с невероятно большой скоростью. Небольшой предновогодний список дел в тщетной попыытке провести время с пользой:

1 — написать Михаилу Харитонову, чтобы он помог с Гауссом;
2 — распределить функции по генетическому коду;
3 — закончить вычитку рассказа;
4 — нарисовать карту и найти компас (квест «Реквизит») ;
5 — проверить шпоры по матанализу (производная параметрической функции, разложение в ряд Тейлора, доказать то, что могу доказать) ;
6 — нарисовать работы на конкурс и отправить их;
7 — написать Христиания/Ладония (. );

@музыка: the Silent Comedy — God Neon

@настроение: не тупить

производные

Открыл Демидовича. Боже мой, какие там вку-у-у-усности!
В принципе, мы сейчас производные берем, поэтому пока вкусно. А как начнутся интегра-а-алы
Что я ною, просто надо вечерком засесть и прорешать. Поеду к бабуле утром в субботу.

ЗЫ., без двадцати восемь
Я вот тут подумал, что в принципе мог бы на ЗФБ или ЛФБ, но как я все это буду делать. Опять бартерить? Да ну, а скилл писанины не достаточно прокачан, команда Хеты — я думаю — в основном левые люди, к такому не готов. Дарк Соулс — не знаю, играет ли он. Боль.

@музыка: Adam Skorupa – Believe

по Лагранжу за Гранью

Брал на паре производную функции arctg ((1 + x)/(1 — x)), получилось, что она равна 1/(1 + х^2). Прямо как (arctg(x))’ — увы, я только помню обозначение производной по Лагранжу, а их там (обозначений), как минимум четыре или четыре их и есть. — преподавателя это восхитило. «Я не знаю, стоит ли вам запоминать это свойство или нет, но советую запомнить. Обычно функции с такими любопытнейшими свойствами где-нибудь, да обязательно вам пригодятся. В следующей жизни, в параллельной вселенной. » — да, я так и вижу, как у меня не сворачивается трехэтажная дробь, мешает эта производная от арктангенса дроби, и тут я вспоминаю: «Ба, да это же равно производной от арктангенса икс!» Озарение! Доблестно провожу замену, и вся дробь схлопывается, как пространственно-временной континуум. Я не уверен, может ли чёрная дыра схлопываться, но если да — то это, должно быть, потрясающее зрелище.

Тут же мне вспоминается дискретка с её мутью про двойственные функции, код Хемминга, какие-то многочлены — буллева алгебра, чёрт её дери — которая нам вряд ли вообще пригодится в этой жизни. Бабуля сказала, чтобы я не порол горячку и впитывал знания губкой: в жизни случится всякое. Например, она вообще-то астрофизик, а таки пришлось читать лекции по матанализу. Вообще, если жизнь меня и заставит читать лекции по дискретке — то, надеюсь, это случится в Орхусском университете на факультете с уклоном в математику. Это прекрасная мечта, почему бы и не поставить её себе на заметку? Я даже не принимаюсь мечтать, а мне уже говорят спуститься с небес на землю. Мои мечты слишком претензциозны?

Видели видео про старика, который раскритиковал в пух и прах детский фетиш? Оно старое, по моим меркам, в четырнадцатом году двадцать первого века выложено, но мне запомнился его совет, мол, детям надо выделять три часа на то, чтобы попялиться в облака и помечтать — это помогает; да и взрослым такая мера тоже не помешала бы.

@музыка: Carmina Burana —In Taberna

хотелки

Кажется, я начал понимать прелести вишлиста. Он нужен, чтобы банально не потерять себя в своих хотелках.

Так вот, поскольку Октябрь в детстве долбанулся головушкой, то мне сейчас не помешают ботинки на двухсантиметровой подошве — они стоят пять тысяч, Himmelherrgott . И куртка потеплей. И шапка. И шарф. Последнее у меня есть, поэтому шарф из списка вылетает. Заходил сегодня в книжный. Листал очередное руководство для тренировки креативности и положил обратно. Знаете, что сегодня небо было в пушистую голубо-серо-белую полоску? Знаете, что на фоне черного неба оранжевые фонари отдают стимпанком? Знаете, что утекающая лента машин в даль похожа на потоки рубинов и лунных бликов? Знайте, что люди под мигающим зеленым светом заставят ваше сердце биться чаще, а их трупоподобный вид вызовет панические мурашки.

А у меня на носу матан и алгебра. Подремать что ли. Выпало мне тут на кубике «халява приди», что-то боязно. Скоро мозги из ушей вытекут, а это не айс. Чаю мне с шоколадом!

ЗЫ., полчаса до полуночи.
Алгебра отменяется, но вместо нее долбаный инглиш.

@музыка: Aventura – Obsession

мифы, университет, город

Мне тут ныли, что никто не знает Эпиметея, человека, крепкого задним умом, а ведь без него, цитирую, «не было бы и Пандоры». В греческих мифах Эпиметей брат Прометея, Атланта и Менетия — все они сыновья титана Яппета и океаниды Клемены. Эпиметею Зевсом была дарована Пандора в отомщение Прометею. Пандора, как известно, принесла на землю все несчастья. Пролистал статью к фразеологизму «ящик пандоры», так в ней ни слова об Эпиметее, но это же детская статья. А нытьём мне доказывали, что такое вопиющие незнание «гхероев» в лицо есть признак дискриминации женщинами в отношение мужчин. Ох. Возведем очи горе и похороним логику. Впрочем, есть куда более приятные вещи, чем рассуждение над «absolutny brak logiki», например, я нашел собрание мифов Древней Греции в собрании Роберта Грейвса в переводе Лукьяненко, издательства «Прогресс», и Эпиметей там есть. Мне стоит повторять, что это хорошо?

Если же. Ай, к псам! В будущую Alma-Mater я летел на крыльях счастья, как будто ног у меня вообще нет и природа их не предусмотрела. Расписка, конверт с фотографиями и разваливающийся от старости сборник Набокова, который старше меня чуть ли не в два с половиной раза. Мог бы описать все то чувство ностальгии от возвращения в Кировский, пусть и такого короткого, наслаиваемое на восхищение от внешнего вида здания университета — я и внутри побегать успел — но, боюсь, у меня просто не хватит слов. Всё на позитиве, ощущения такие, как от слога Владимира Набокова и мертвой петли одновременно, но только в пятьсот раз острее. Понимаю, что за пять лет мне до безумия и печенок надоест вид здания в стиле конструктивизма, морды одухотворенные лики деятелей науки и культуры по пять метров в высоту, живописный внутренний дворик, степи кругом и атмосферы незыблемости и торжественности, но сейчас. Сейчас я счастлив, господа. Просто счастлив. В пни зарубежные Питер, все таки Волгоград я люблю особой любовью, и это у меня не отнять.

Я счастлив, счастлив, счастлив, господа! Такого ничем не замутненного счастья я не чувствовал давно, но семнадцать лет жизни ради такого мгновения, определённо, стоят.

@музыка: De Eneste To – Østjylland Dreaming

@настроение: бег по потолку

критика, организм, музыка

Мое сумасшедствие под дождичком организм просто так не оставил. Он вообще мне много чего не прощает, но отыгрывается раз в месяц, проверено. Колкие маленькие капли жалили, а крупные — смачно ударялись о кожу и одежду, в результате мои волосы и рубашка в два счета превратились в некоторое подобие второй кожи. Так как я в помещении умудрился довести до такого состояния, что меня можно было выжимать и на плетень вешать сохнуть, а на улице я чуть ли не рондат с колесами прыгал — ага, с больной ногой — логично, что через несколько минут я почувствовал, как предательский холодок охватывает все мое тело. Это к тому, что теперь ни одно малейшее движение не обходится без натужного скрипа мышц.

Так меня волнует одна проблема. Грувшарк сыграл в ящик окончательно и бесповоротно — от прощального сообщения на их странице я даже прослезился — и ссылки на музыку не работают. Самое противное, я даже не помню, какие именно композиции публиковал в те или иные дни. Группы — да, но и те не все. Это печально, потому что мне очень хочется знать, чем я ещё средневековым заслушивался помимо Estampie и Mediaeval Baebies. Также мне интересно, что сейчас модно слушать — металл, хард-рок, дабстеп, м-м-м? — ибо до сих пор под впечатлением, как одного пользователя распекали за гламур-р-рность и рок. Точнее, претензии были такие: ты слушаешь только одну рок-группу и кричишь, что обожаешь рок, хотя ни одной более не назовешь. По себе заметил, что очень тяжело «пересаживаться» на другие музыкальные группы. Их надо найти, потом скачать, расслушать — всё это нанимает время. Плюс, я вообще не разбираюсь в жанрах. Касательно проблемы, придется ползать по дневнику и удалять все неработающие коды, что в принципе не страшно, так как половина музыки хранится на ноуте. А вот Potentia Animi я точно сюда загоню, как и ost’ы Bloodborn.

Без перехода. Недавеча разбирал шмотье в шкафах. Не помню уже, что разбирал или не разбирал вовсе, а искал, но без разницы. Факт в том, что тряпье из шкафов вываливал и перебирал. На кой это все хранить? Вещи, которые порваны, растянуты, малы, застираны — потому что их уже никто не наденет в трезвом уме. Ах, да, конечно, малая дорастет и будет всю эту шваль носить. Ну-ну, я посмотрю на это с удовольствием, как её заставлять будут, эту модницу. Руки чесались повыбрасывать половину, но не позволено-с. Теперь шмотье опять сложено в шкафы. Смысл? Порядок продержится только первые два дня, на большее меня не хватит.

@музыка: Nephew — Klokken 25

куда только не попадали

Во-первых, эту прелесть вытащу из комментариев и перетащу в пост, где ей, собственно, и место.

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

Матери соврал, что видел плохой сон. Ей-ей, мне и так разбираться с этим человеком, так еще не хватало матушкиных, определенно ценных, замечаний по поводу всей этой кутерьмы. Раз я сам заварил кашу, то буду расхлебывать. Один плюс Интернета: ты не видишь лица, поэтому, мне понадобилось лишь один раз клюнуть носом в трамвае, чтобы мигом все решить одним махом. Почти все. Но я чувствую себя живым, а не равнодушным. Это, официально заявляю, супер. Если учесть еще факт, что два первых урока слетели, и я отсыпался на диване, причем учитель младших классов меня не согнала, а даже выключила свет, то день прекрасен. Сие так меня потрясло, что я вспомнил пожелания Татьяны Георгиевны: «учителям — человечности» — и я верю, что так оно и случилось. За эти два урока я выспался. Скол!

Марк, мой одноклассник, постригся, и я боролся с сильным желанием взъерошить ему волосы. Не взъерошил, с чем себя и поздравляю. Видел Марту в мини-юбке и в кроссовках с гетрами. А дружок, с которым я столкнулся на первом этаже, мне зачем-то сказал, что товарищ Дитрих на третьем этаже, сказал и ладно. Я на третий этаж не сорвался. Мне выступать с цирковым номером, а я волнуюсь. Слегка, правда, но волнуюсь. Хорошо, у меня есть два дня до выступления: схудну и обрету двойную человечность.

Кстати, не в тему, но пусть будет, можно так «талантливо» почесать глаз, что заразишься гонореей. Уроки ОБЖ доставляют. Я же очень впечатлительный! И фантазия у меня будь здоров.

нормальности и мордашки

Мне надо было написать сочинения, а я искал Доктора Кто с русскими субтитрами, параллельно слушал Girugamesh и залипал вот на это.

Впору задуматься о моей нормальности, ибо я знаю, что лучше добить эти сочинения сейчас, а не растягивать сие удовольствие до вечера. Да, каникулы закончились. Сегодня последний день, когда я могу спокойно и превесело всячески курить бамбук.

Потом как оказалось, Girugamesh не зашел, но я по этому поводу не печалился, ибо. Наткнулся, как всегда это происходит при серфинге Интернета в рассеянном состоянии, на Krauka. Фолк, так еще и датский, во всей красе. Приплюснутые голоса и аутентичные музыкальные инструменты, все как я люблю. Ловлю чистейший дзен от прослушивания студийных альбомов этой группы и даже их скачал. Безуспешно боролся с желанием забить на все и заняться дурью, но сочинения дописал. Почти. Одно буду дописывать на неделе, аргументики набросал-с. Мазохист девяностого левела, да.

Теперь мне кажется, что вокруг тлен, безысходность, мрак и ужас, и даже Nephew меня не вытаскивают из этого паршивого состояния. Однако, это не значит, что я должен бросить разбор видов избирательных систем, из-за которых я чуть не схлопотал моральный пендель от Ольги Анатольевной и основ экономики. Мне наконец-таки надоело участвовать в еженедельном садо-мазо, вот что значит терять тетради, и я решил немножечко о себе позаботиться. Короче, мне еще конспектировать половину учебника, ибо в экономике я ноль без палочки. До сих пор удивляюсь, как я выезжаю на чистом везении и умении вовремя подсуетиться, а? У меня есть еще пять недель, чтобы убрать четверочные хвосты, ибо достало. Я могу иметь по этим предметам пять, но видимо эта перспектива меня настолько расслабляет, что я позволяю себе гонять болты и катать на саночках.

Самое скверное в этой ситуации, что я нормально разозлиться не могу. Даже тема феминисток меня не затронула так, чтобы я не сдержался и не разорался капсом, а феминисток, скажем так, недолюбливаю. Вообще во многих вопросах придерживаюсь «традиционных» позиций. Мне только «Домостроя» не хватает для полноты картины.
__________________
ЗЫ., виды избирательных систем

мысль смешная, но вдруг поможет

Казалось бы простой рецепт хорошего дня: отрубить к черту весь Интернет и заняться вплотную одним очень полезным делом, — но такой сложный! Первое испытание — это быстрая проверка дневника. Черт его знает зачем я на него зашел, но факт есть факт, я зашел. Предупредил все и вся, чисто для успокоения волнующихся личностей (без сарказма) и себя, что вот я такой-сякой не ответил на письма. После этого, когда у меня мозг вынесен физикой, относительно, конечно, но два часа непонятного ковыряния в законах Ома и теории электрического тока, даром мне не прошли, я закрыл ноутбук. Чертов я гуманитарий! Мало того, что он внезапно засомневался в своих знаниях истории, так еще и непрофильные предметы отпустить никак не может и не хочет. Кстати, надо прочитать химию, я её опять всю позабыл, а сообщение на полухалявную оценку не даютъ-с.

Второе испытание — это. окружающие меня люди. Только улягусь с тетрадью, охапкой ручек и телефоном с шестью томами Лермонтова, как надо вставать и что-то делать или же старательно изображать деятельность. Ладно, тут я больше кипятился, но, опять же, факт есть факт. Но зато-о-о, когда нашел идеальную позицию для увлекательнейшего занятия, а именно заполнения читательского дневника, подпихнул под себя подушек, так как локти мои устали, я наконец-таки сделал то, что не мог никак сделать всю неделю! Запастись аргументами из творчества великого и прочая, прочая писателя Михаила Юрьевича Лермонтова. Так и хочется в эти слова вложить столько яда, чтобы перегорело к собачьим лапам всё. Благо, что техника еще не настолько совершенна, чтобы передавать буквально все оттенки чувств на расстоянии. О, я представляю, сколько бы людей умерло от ядовитых памфлетов, едва взглянув на них. Где-то у меня завалялась эта волшебная книжечка в печатно-бумажном (!) виде.

В голове носились мысли о, собственно, рецепте прекрасного дня, зарисовке по паре Норвегия х Дания, о мягких тенях, укутывающих мою комнату, об острых пятнах солнечного света, о запахе белого кофе, — Как же я его обожаю! — о шутливой памятке, как совершенствоваться в умении излагать свои мысли на бумагу, но эти мысли мне абсолютно не мешали. Они текли рядом и успокаивали, создавая тихое ощущение уюта. Как же я всё-таки люблю места, где ты дорываешься до компьютера поздно вечером, но с чувством выполненного долга, ибо перебираешь в голове полный список твоих проделок и серьезных дел. Я несколько раз уже с любопытством поглядываю в сторону сообщества «Голландская Рулетка», но пока не чувствую в себе сил, чтобы достойно отыграть там хотя бы месяц. Не исключено, что это говорит моя форменная лень. Давить этого гада надо, давить, давить, давить.

И-и-и. да, мне свойственна зависть. Другой причины, почему я открестился от одного новичка я пока не вижу. Нет, причина-то есть: он забивал ленту дискуссий, — но она мне кажется дюже читерской и придуманной наспех, потому что этот человек меня очень сильно зацепил. Однако, первой моей мыслью было, что, да, я ему завидую. Хотя кого это волнует, и должно ли это волновать меня? Непонятно.

Я уже не помню имя этого человека, который нашел нижеперечисленные задания для тренировки навыка, но я ему премного благодарен. Честно-честно.

Как использовать функции DOS?

23.12.2010, 14:21

Как создать корректную статическую (lib) библиотеку под MS-DOS (16 bit) из Windos (32-64 bit) или из MS-DOS?
Привет всем! Кто подскажет, как корректно создавать статические библиотеки для 16-битного режима.

Как задекларировать функции DOS? [Delphi + Asm]
Здравствуйте, как задикларировать функции DOS в DELPHI, заранее благодарю. unit Assembler; .

Как в fasm использовать сишные функции?
format PE console include ‘include\win32axp.inc’ .data cwriten dd ? hello db.

Видеоадаптер — как можно получить текущий режим дисплея, чтобы использовать его в функции очистки
Такой вопрос: нам необходимо очистить экран.. ест куча способов — сдвиг строк, заполнение пробелами.

Вызываем функции из clib (библиотека Си) в DOS
Вобщем, сбылась мечта идиота. Теперь, нежели писать свой ввод/вывод(осoбенно всегда напрягал.

23.12.2010, 14:28 2

DOS Fn 1bH: дать информацию FAT (текущий диск)
Вход
AH = 1bH
Выход
DS:BX = адрес байта FAT ID (отражающего тип диска)
DX = всего кластеров (единиц распределения) на диске
AL = секторов на кластер
CX = байт на сектор
Описание:

возвращает информацию о размере и типе умалчиваемого диска. размер диска в байтах = (DX * AL * CX). Ищите свободную память функциями 36h Disk Free или 32h Disk Info.

Предупреждение:
Эта функция изменяет содержимое регистра DS.

DOS Fn 1cH: дать информацию FAT (любой диск)

Вход
AH = 1cH
DL = номер диска (0=текущий, 1=A, и т.д.)
Выход
DS:BX = адрес байта FAT ID (отражающего тип диска)
DX = всего кластеров (единиц распределения) на диске
AL = секторов на кластер
CX = байт на сектор
Описание:
Аналогична функции 1bH Get FAT Cur, с той разницей, что регистр DL указывает диск, для которого вы хотите получить информацию.

Dos fn 54h: дать переключатель верификации dos

DOS INT 21h — DOS Function Codes

The follow abridged list of DOS interrupts has been extracted from a large list compiled by Ralf Brown. These are available on any Simtel mirror (e.g. sunsite.anu.edu.au) under the directory ms-dos/info/interNNp.zip

AH Description AH Description
01 Read character from STDIN 02 Write character to STDOUT
05 Write character to printer 06 Console Input/Output
07 Direct char read (STDIN), no echo 08 Char read from STDIN, no echo
09 Write string to STDOUT 0A Buffered input
0B Get STDIN status 0C Flush buffer for STDIN
0D Disk reset 0E Select default drive
19 Get current default drive 25 Set interrupt vector
2A Get system date 2B Set system date
2C Get system time 2D Set system time
2E Set verify flag 30 Get DOS version
35 Get Interrupt vector
36 Get free disk space 39 Create subdirectory
3A Remove subdirectory 3B Set working directory
3C Create file 3D Open file
3E Close file 3F Read file
40 Write file 41 Delete file
42 Seek file 43 Get/Set file attributes
47 Get current directory 4C Exit program
4D Get return code 54 Get verify flag
56 Rename file 57 Get/Set file date
Илон Маск рекомендует:  Что такое код udm_cat_list

AH = 01h — READ CHARACTER FROM STANDARD INPUT, WITH ECHO

Return: AL = character read

  • ^C/^Break are checked
  • ^P toggles the DOS-internal echo-to-printer flag
  • ^Z is not interpreted, thus not causing an EOF if input is redirected character is echoed to standard output

AH = 02h -WRITE CHARACTER TO STANDARD OUTPUT

Entry: DL = character to write

Return: AL = last character output

  • ^C/^Break are checked
  • the last character output will be the character in DL unless DL=09h on entry, in which case AL=20h as tabs are expanded to blanks
  • if standard output is redirected to a file, no error checks (write- protected, full media, etc.) are performed

AH = 05h — WRITE CHARACTER TO PRINTER

Entry: DL = character to print

  • keyboard checked for ^C/^Break
  • STDPRN is usually the first parallel port, but may be redirected under DOS 2+
  • if the printer is busy, this function will wait

SeeAlso: INT 17/AH=00h

AH = 06h — DIRECT CONSOLE OUTPUT

Entry: DL = character (except FFh)

Return: AL = character output

Notes: does not check ^C/^Break

AH = 06h — DIRECT CONSOLE INPUT

Entry: AH = 06h DL = FFh

  • ZF set if no character available and AL = 00h
  • ZF clear if character available AL = character read

  • ^C/^Break are NOT checked
  • if the returned character is 00h, the user pressed a key with an extended keycode, which will be returned by the next call of this function
  • although the return of AL=00h when no characters are available is not documented, some programs rely on this behavior

AH=07h — DIRECT CHARACTER INPUT, WITHOUT ECHO

Return: AL = character read from standard input

Notes: does not check ^C/^Break

AH = 08h — CHARACTER INPUT WITHOUT ECHO

Return: AL = character read from standard input

Notes: ^C/^Break are checked

AH = 09h — WRITE STRING TO STANDARD OUTPUT

Entry: DS:DX -> ‘$’-terminated string

Notes: ^C/^Break are checked

AH = 0Ah — BUFFERED INPUT

Return: buffer filled with user input

  • ^C/^Break are checked
  • reads from standard input

Format of DOS input buffer:

Offset Size Description
00 1 maximum characters buffer can hold
01 1 number of chars from last input which may be recalled OR number of characters actually read, excluding CR
02 n actual characters read, including the final carriage return

AH=0Bh — GET STDIN STATUS

  • AL = 00h if no character available
  • AL = FFh if character is available

Notes: ^C/^Break are checked

AH = 0Ch — FLUSH BUFFER AND READ STANDARD INPUT

  • AL = STDIN input function to execute after flushing buffer
  • other registers as appropriate for the input function

Return: as appropriate for the specified input function

Note: if AL is not one of 01h,06h,07h,08h, or 0Ah, the buffer is flushed but no input is attempted

AH = 0Dh — DISK RESET

Notes: This function writes all modified disk buffers to disk, but does not update the directory information

AH = 0Eh — SELECT DEFAULT DRIVE

Entry: DL = new default drive (0=A:, 1=B:, etc)

Return: AL = number of potentially valid drive letters

Notes: the return value is the highest drive present

AH = 19h — GET CURRENT DEFAULT DRIVE

Return: AL = drive (0=A:, 1=B:, etc)

AH = 25h — SET INTERRUPT VECTOR

  • AL = interrupt number
  • DS:DX -> new interrupt handler

Notes: this function is preferred over direct modification of the interrupt vector table

AH = 2Ah — GET SYSTEM DATE

Return: CX = year (1980-2099) DH = month DL = day AL = day of week (00h=Sunday)

AH = 2Bh — SET SYSTEM DATE

Entry: CX = year (1980-2099) DH = month DL = day

  • AL = 00 successful
  • FFh invalid date, system date unchanged

Note: DOS 3.3+ also sets CMOS clock

AH = 2Ch — GET SYSTEM TIME

Return: CH = hour CL = minute DH = second DL = 1/100 seconds

Note: on most systems, the resolution of the system clock is about 5/100sec, so returned times generally do not increment by 1 on some systems, DL may always return 00h

AH = 2Dh — SET SYSTEM TIME

Entry: CH = hour CL = minute DH = second DL = 1/100 seconds

  • AL = 00h successful
  • FFh if invalid time, system time unchanged

Note: DOS 3.3+ also sets CMOS clock

AH = 2Eh — SET VERIFY FLAG

Entry: AL = new state of verify flag (00 off, 01h o)

  • default state at system boot is OFF
  • when ON, all disk writes are verified provided the device driver supports read-after-write verification

AH=30h — GET DOS VERSION

Entry: AL = what to return in BH (00h OEM number, 01h version flag)

Entry: AL = interrupt number

Return: ES:BX -> current interrupt handler

AH = 36h — GET FREE DISK SPACE

Entry: DL = drive number (0=default, 1=A:, etc)


    AX = FFFFh if inval >Notes:

  • free space on drive in bytes is AX * BX * CX
  • total space on drive in bytes is AX * CX * DX
  • «lost clusters» are cons instead

AH = 39h — «MKDIR» — CREATE SUBDIRECTORY

Entry: DS:DX -> ASCIZ pathname

  • CF clear if successful AX destroyed
  • CF set on error AX = error code (03h,05h)

  • all directories in the given path except the last must exist
  • fails if the parent directory is the root and is full
  • DOS 2.x-3.3 allow the creation of a directory sufficiently deep that it is not possible to make that directory the current directory because the path would exceed 64 characters

AH = 3Ah — «RMDIR» — REMOVE SUBDIRECTORY

Entry: DS:DX -> ASCIZ pathname of directory to be removed

  • CF clear if successful, AX destroyed
  • CF set on error AX = error code (03h,05h,06h,10h)

Notes: directory must be empty (contain only ‘.’ and ‘..’ entries)

AH = 3Bh — «CHDIR» — SET CURRENT DIRECTORY

Entry: DS:DX -> ASCIZ pathname to become current directory (max 64 bytes)

  • CF clear if successful, AX destroyed
  • CF set on error AX = error code (03h)

Notes: if new directory name includes a drive letter, the default drive is not changed, only the current directory on that drive

SeeAlso: AH=47h,AH=71h,INT 2F/AX=1105h

AH = 3Ch — «CREAT» — CREATE OR TRUNCATE FILE

  • CF clear if successful, AX = file handle
  • CF set on error AX = error code (03h,04h,05h)

Notes: if a file with the given name exists, it is truncated to zero length

AH = 3Dh — «OPEN» — OPEN EXISTING FILE

  • AL = access and sharing modes
  • DS:DX -> ASCIZ filename

  • CF clear if successful, AX = file handle
  • CF set on error AX = error code (01h,02h,03h,04h,05h,0Ch,56h)

  • file pointer is set to start of file
  • file handles which are inherited from a parent also inherit sharing and access restrictions
  • files may be opened even if given the hidden or system attributes

AH = 3Eh — «CLOSE» — CLOSE FILE

Entry: BX = file handle

  • CF clear if successful, AX destroyed
  • CF set on error, AX = error code (06h)

Note: if the file was written to, any pending disk writes are performed, the time and date stamps are set to the current time, and the directory entry is updated

AH = 3Fh — «READ» — READ FROM FILE OR DEVICE

  • BX = file handle
  • CX = number of bytes to read
  • DS:DX -> buffer for data

  • CF clear if successful — AX = number of bytes actually read (0 if at EOF before call)
  • CF set on error AX = error code (05h,06h)

  • data is read beginning at current file position, and the file position is updated after a successful read
  • the returned AX may be smaller than the request in CX if a partial read occurred
  • if reading from CON, read stops at first CR

AH=40h — «WRITE» — WRITE TO FILE OR DEVICE

  • BX = file handle
  • CX = number of bytes to write
  • DS:DX -> data to write

  • CF clear if successful -AX = number of bytes actually written
  • CF set on error — AX = error code (05h,06h)

  • DS:DX -> ASCIZ filename (no wildcards, but see notes)
  • CL = attribute mask for deletion (server call only, see notes)

  • CF clear if successful, AX destroyed (DOS 3.3) AL seems to be drive of deleted file
  • CF set on error AX = error code (02h,03h,05h)

  • (DOS 3.1+) wildcards are allowed if invoked via AX=5D00h, in which case the filespec must be canonical (as returned by AH=60h), and only files matching the attribute mask in CL are deleted
  • DOS does not erase the file’s data; it merely becomes inaccessible because the FAT chain for the file is cleared
  • deleting a file which is currently open may lead to filesystem corruption.

AH=42h — «LSEEK» — SET CURRENT FILE POSITION

  • AL = origin of move 00h start of file 01h current file position 02h end of file
  • BX = file handle
  • CX:DX = offset from origin of new file position

  • CF clear if successful, DX:AX = new file position in bytes from start of file
  • CF set on error, AX = error code (01h,06h)

  • for origins 01h and 02h, the pointer may be positioned before the start of the file; no error is returned in that case, but subsequent attempts at I/O will produce errors
  • if the new position is beyond the current end of file, the file will be extended by the next write (see AH=40h)

AH=43 — GET FILE ATTRIBUTES

  • CF clear if successful CX = file attributes
  • CF set on error, AX = error code (01h,02h,03h,05h)

BUG: Windows for Workgroups returns error code 05h (access denied) instead of error code 02h (file not found) when attempting to get the attributes of a nonexistent file.

AH=43 — «CHMOD» — SET FILE ATTRIBUTES

  • CF clear if successful, AX destroyed
  • CF set on error, AX = error code (01h,02h,03h,05h)

  • will not change volume label or directory attribute bits, but will change the other attribute bits of a directory
  • MS-DOS 4.01 reportedly closes the file if it is currently open

SeeAlso: AX=4300h,AX=4311h,AX=7143h,INT 2F/AX=110Eh

Bitfields for file attributes:

Bits 7 6 5 4 3 2 1
Description shareable archive directory vol. label system hidden read-only

AH = 47h — «CWD» — GET CURRENT DIRECTORY

  • DL = drive number (00h = default, 01h = A:, etc)
  • DS:SI -> 64-byte buffer for ASCIZ pathname

  • CF clear if successful
  • CF set on error, AX = error code (0Fh)

  • the returned path does not include a drive or the initial backslash
  • many Microsoft products for Windows rely on AX being 0100h on success

AH = 4Ch — «EXIT» — TERMINATE WITH RETURN CODE

Entry: AL = return code

Return: never returns

Notes: unless the process is its own parent, all open files are closed and all memory belonging to the process is freed

AH = 4Dh — GET RETURN CODE (ERRORLEVEL)


    AH = termination type (00=normal, 01h control-C abort, 02h=critical error abort, 03h terminate and stay res >Notes:

  • the word in which DOS stores the return code is cleared after being read by this function, so the return code can only be retrieved once
  • COMMAND.COM stores the return code of the last external command it executed as ERRORLEVEL

AH = 54h — GET VERIFY FLAG

Return: AL = verify flag (00h=off, 01h=on, i.e. all disk writes verified after writing)

AH = 56h — «RENAME» — RENAME FILE

  • DS:DX -> ASCIZ filename of existing file (no wildcards, but see below)
  • ES:DI -> ASCIZ new filename (no wildcards)
  • CL = attribute mask (server call only, see below)

  • CF clear if successful
  • CF set on error, AX= error code (02h,03h,05h,11h)

  • allows move between directories on same logical volume
  • this function does not set the archive attribute
  • open files should not be renamed
  • (DOS 3.0+) allows renaming of directories

AH = 57h — GET FILE’S LAST-WRITTEN DATE AND TIME

  • AL = 00h (Get attribute)
  • BX = file handle

  • CF clear if successful, CX = file’s time DX = file’s date
  • CF set on error, AX = error code (01h,06h)

Bitfields for file time:

Bits 15-11 10-5 4-0
Description hours minutes seconds

Bitfields for file date:

Bits 15-9 8-5 4-0
Description year (1980-) month day

AH = 57h — SET FILE’S LAST-WRITTEN DATE AND TIME

  • CF clear if successful
  • CF set on error AX = error code (01h,06h)

Системное программное обеспечение: Учебное пособие

Для того, чтобы оценить ресурс, необходимо авторизоваться.

Настоящее учебное пособие предназначено для подготовки студентов различных вычислительных специальностей, изучающих работу в среде MS-DOS. Для специальности 2201 эта работа может использоваться в курсах «Системное программное обеспечение», «Проектирование микропроцессорных систем», «Организация ввода-вывода». В пособии описано семейство микропроцессоров х86 с точки зрения программиста, рассмотрены регистры процессора, способы адресации и формирования исполнительного адреса. Даны основы программирования на ассемблере, приведены примеры программ, использующих ресурсы MS-DOS. Рассмотрены способы написания резидентных программ и драйверов. Рассмотрены соответствующие примеры.

Функция 0ah: Ввод строки с клавиатуры в буфер

DS:DX = адрес входного буфера (смотри ниже)

Выход Буфер содержит ввод, заканчивающийся символом CR (ASCII 0dh)

Описание: При обращении буфер по адресу DS:DX должен содержать значение максимально допустимой длины ввода. На выходе функции в следующем байте содержится действительная длина ввода, затем введенный текст, завершающийся символом возврата каретки (0dh). Символы считываются с устройства стандартного ввода вплоть до CR (ASCII 0dh) или до достижения длины MAX-1. Если достигнут MAX-1, включается консольный звонок для каждого очередного символа, пока не будет введен возврат каретки CR (нажатие Enter). Второй байт буфера заполняется действительной длиной введенной строки, не считая завершающего CR. Последний символ в буфере — всегда CR (не засчитан в байте длины). Символы в буфере (включая LEN) в момент вызова используются как «шаблон». В процессе ввода действительны обычные клавиши редактирования: Esc выдает «\» и начинает с начала, F3 выдает буфер до конца шаблона, F5 выдает «@» и сохраняет текущую строку как шаблон, и т. д. Большинство расширенных кодов ASCII игнорируются. При распознавании Ctrl-Break выполняется прерывание int 23h (буфер остается неизменным).

Завершение программы

Функция 4ch: Завершить программу (EXIT)

Вход AH = 4ch

AL = код возврата

Описание: Возвращает управление от порожденного процесса его родителю, устанавливая код возврата, который можно опросить функцией 4dh WAIT. Управление передается по адресу завершения в PSP завершаемой программы. В векторах Ctrl-Break и Critical Error восстанавливаются старые значения, сохраненные в родительском PSP.

Замечание: Значение ERRORLEVEL (используемое в пакетных файлах DOS) можно использовать для проверки кода возврата самой последней программы.

Функция 4dh: Дать код возврата программы (WAIT)

Вход AH = 4dh

Выход AL = код возврата последнего завершившегося процесса

AH = 0 — нормальное завершение

АН = 1 — завершение через Ctrl-Break int 23h

АН = 2 — завершение по критической ошибке устройства int 24h

АН = 3 — завершение через функцию 31h KEEP

Описание: Возвращает код возврата последнего из завершившихся процессов. Эта функция возвращает правильную информацию только однажды для каждого завершившегося процесса.

Функция 4dh: Дать код возврата программы (WAIT)

Вход AH = 4dh

Выход AL = код возврата последнего завершившегося процесса

AH = 0 — нормальное завершение

АН = 1 — завершение через Ctrl-Break int 23h

АН = 2 — завершение по критической ошибке устройства int 24h

АН = 3 — завершение через функцию 31h KEEP

Описание: Возвращает код возврата последнего из завершившихся процессов. Эта функция возвращает правильную информацию только однажды для каждого завершившегося процесса.

Работа с файлами

Функция 3ch: Создать файл через дескриптор

Вход AH = 3ch

DS:DX = адрес строки ASCIIZ с именем файла

CX = атрибут файла

Выход AX = код ошибки, если CF установлен

АХ = дескриптор файла, если ошибки нет

Описание: DS:DX указывает на строку ASCIIZ в формате: «d:\путь\имяфайла»,0. Если диск и/или путь опущены, они принимаются по умолчанию. файл создается в указанном (или текущем) каталоге файл открывается в режиме доступа чтение/запись вы должны сохранить дескриптор (handle) для последующих операций, если файл уже существует:

· при открытии файл усекается до нулевой длины

· если атрибут файла — только чтение, открытие отвергается (атрибут можно изменить функцией 43h Изменить Атрибут)

CONFIG.SYS определяет число доступных дескрипторов в системе

Используйте функцию 5bh Создать Новый Файл, если вы не хотите

испортить существующий файл.

Функция 5bh: Создать новый файл

Вход AH = 5bh DOS 3.0+

DS:DX = адрес строки ASCIIZ с именем файла

CX = атрибут файла

Выход AX = код ошибки, если CF установлен

АХ = дескриптор файла, если ошибок нет

Описание: DS:DX указывает на строку ASCIIZ в форме: «d:\путь\имя_файла»,0. Если диск и/или путь опущены, они принимаются по умолчанию. Этот вызов идентичен функции DOS 3ch CREATE, с тем исключением, что он вернет ошибку, если файл с заданным именем уже существует. Файл открывается для чтения/записи в совместимом Режиме Доступа.

Текст книги «Создаем вирус и антивирус»

Автор книги: Игорь Гульев

Программирование

Текущая страница: 13 (всего у книги 15 страниц) [доступный отрывок для чтения: 4 страниц]

Версии: DOS 2.00 и выше.

DOS, функция 32h
Получить информацию DOS о диске
(Официально не документирована)

DL – номер диска (0 – текущий, 1 – A и так далее)

AL=00h, если в DL был задан корректный диск

DS:BX – адрес блока информации о диске для запрошенного устройства (Таблица Б-6)

AL=FFh, если в DL был задан некорректный диск

Возвращает блок информации, представляющей интерес для приложений и утилит, которые выполняют доступ к дискам, поддерживаемым драйверами устройств, на уровне секторов.

Некоторые дисководы (особенно незагружаемые) функционируют только через свои драйвера устройств. Такие диски могут содержать неверную информацию в корневой записи и таблице разделов, что делает очень трудным определение, например, размера корневого оглавления, числа таблиц FAT и прочего. Блок информации диска содержит такие данные в хорошо форматированной структуре.

Версии: DOS 2.00 и выше.

Таблица Б-6. Формат блока информации о диске
DOS, функция 33h
Установить/опросить статус Ctrl-Break

AL=00h – опросить текущий статус контроля Ctrl-Break

AL=01h – установить статус контроля Ctrl-Break

DL – требуемый статус (0 – выключен, 1 – включен)

DL – текущий статус (0 – выключен, 1 – включен)

Если AL=00h, в DL возвращается текущий статус контроля Ctrl-Break.

Если AL=01h, в DL возвращается новый текущий статус.

Когда статус «включен», DOS при выполнении большинства функций (исключая 06h и 07h) проверяет, нажаты ли клавиши Ctrl-Break. Если это обнаружено, выполняется прерывание INT 23h (если оно не перехватывается, то процесс снимается).

При статусе «выключен» DOS проверяет на нажатие Ctrl-Break лишь при выполнении операций стандартного ввода/вывода, стандартной печати и стандартного AUX.

Версии: DOS 2.00 и выше.

DOS, функция 34h
Получить адрес флага активности DOS
(Официально не документирована)

ES:BX – адрес флага активности DOS

Функция возвращает флаг активности DOS, который показывает, можно ли на данный момент вызывать функции DOS. Эту функцию использует, например, функция фоновой печати PRINT.

Если ES: [BX] не нулевой, фоновая программа (TSR либо popup) не должна использовать никаких функций DOS.

Версии: DOS 2.00 и выше.

DOS, функция 35h
Получить вектор прерывания

AL – номер прерывания (00h до FFh)

ES:BX – адрес обработчика прерывания

Возвращает значение вектора прерывания для INT (AL), то есть загружает в BX 0000:[AL*4], а в ES – 0000:[(AL*4)+2].

Эта функция изменяет сегментный регистр ES.

Версии: DOS 2.00 и выше.

DOS, функция 36h
Получить свободную память диска

DL – номер диска (0 – текущий, 1 – A и так далее)

AX=FFFFh, если AL содержал неверный номер диска

Если функция выполнена успешно:

AX – число секторов на кластер

BX – число доступных кластеров

CX – байт на сектор

DX – всего кластеров на диске

Возвращает данные, полезные для подсчета общей и доступной дисковой памяти. Если в AX возвращено FFFFh, значит задан неверный диск. Иначе свободная память (в байтах) составляет (AX*BX*CX), всего памяти (AX*CX*DX) байт.

Версии: DOS 2.00 и выше.

DOS, функция 37h
Установить/опросить символ-переключатель
(Официально не документирована)

AL=00h – опросить текущий переключатель

AL=01h – установить символ-переключатель

AL=00h, если функция выполнена успешно

DL – текущий символ-переключатель DOS (если при вызове AL=00h)

AL=FFh, если использована неподдерживаемая подфункция

Устанавливает или опрашивает «Глобальный переключатель» DOS. Переключатель (SWITCHAR) – это символ, используемый в командной строке как признак опции. По умолчанию принимается «/» (например, DIR /w/p), но его можно изменить на «-» (DIR – w-p), если нужно, чтобы система была больше похожа на UNIX. Общепринято опрашивать значение SWITCHAR перед разбором области неформатированных параметров в PSP для выделения опций команды.

Эта недокументированная команда может измениться в будущих версиях DOS. Не рекомендуется изменять SWITCHAR.

Версии: DOS 2.00 и выше.

DOS, функция 38h


Получить/установить информацию о стране

AL=00h – получить данные для текущей страны

DS:DX – адрес локального буфера для чтения блока данных страны (Таблица Б-7)

AL=01h-FEh – установить данные для указанной страны 255

BX – 16-битный код страны (Таблица Б-8)

CF=0, если функция выполнена успешно

CF=1, если при выполнении функции возникли ошибки

Приложение Б Функции DOS (INT 21h)

Приложение Б Функции DOS (INT 21h)

DOS, функция 00h

CS – сегмент PSP завершающегося процесса

Описание. Передает управление на вектор завершения в PSP (выходит в родительский процесс). Идентична функции INT 20h (Terminate). Регистр CS должен указывать на PSP. Восстанавливает векторы прерываний DOS 22h-24h (Завершение, Ctrl-Break и Критическая ошибка), устанавливая значения, сохраненные в родительском PSP. Выполняет сброс файловых буферов. Файлы должны быть предварительно закрыты, если их длина изменилась.

Данная функция не рекомендуется к использованию. Для выхода из программы лучше использовать функцию DOS 4Ch.

DOS, функция 01h Считать со стандартного устройства ввода

Выход: AL – символ, полученный из стандартного ввода

Описание. Считывает (ожидает) символ со стандартного входного устройства. Отображает этот символ на стандартное выходное устройство (эхо). При обнаружении Ctrl-Break выполняется INT 23h.

Ввод расширенных клавиш ASCII (F1-F12, PgUp, курсор и другие) требует двух обращений к этой функции. Первый вызов возвращает AL=0. Второй вызов возвращает в AL расширенный код ASCII.

DOS, функция 02h Записать в стандартное устройство вывода

DL – символ, выводимый в стандартный вывод

Посылает символ из DL в стандартное устройство вывода. Обрабатывает символ Backspace (ASCII 8), перемещая курсор влево на одну позицию и оставляя его в новой позиции. При обнаружении Ctrl-Break выполняется INT 23h.

DOS, функция 03h Считать символа со стандартного вспомогательного устройства

Выход: AL – символ, введенный со стандартного вспомогательного устройства

Описание. Считывает (ожидает) символ со стандартного вспомогательного устройства, COM1 или AUX и возвращает этот символ в AL.

Ввод не буферизуется и должен опрашиваться (не управляется прерываниями). При запуске DOS порт AUX (COM1) инициализируется так: 2400 бод, без проверки на четность, 1 стоп-бит, 8-битные слова. Команда DOS MODE используется для установки иных характеристик.

DOS, функция 04h Записать символ в стандартное вспомогательное устройство

DL – символ, выводимый в стандартное вспомогательное устройство

Посылает символ, находящийся в регистре DL, на стандартное вспомогательное устройство, COM1 или AUX.

DOS, функция 05h Вывести на принтер

DL – символ, записываемый на стандартный принтер

Посылает символ в DL на стандартное устройство печати, обычно LPT1.

DOS, функция 06h Консольный ввод-вывод

DL=00h-FEh – символ, посылаемый на стандартный вывод

DL=FFh – запрос ввода со стандартного ввода

ZF=0, если осуществлялся ввод символа и символ готов при запросе ввода

AL – считанный символ

ZF=1, если осуществлялся ввод символа и символа в консоли нет

При DL=0FFh выполняет ввод с консоли «Без ожидания», возвращая включенный флаг нуля ZF, если на консоли нет готового символа. Если символ готов, сбрасывает флаг ZF и возвращает считанный символ в AL. Если DL не равен 0FFh, то DL направляется на стандартный вывод.

DOS, функция 07h Нефильтрующий консольный ввод без эха

Выход: AL – символ, полученный через стандартный ввод

Описание. Считывает (ожидает) символ со стандартного входного устройства и возвращает этот символ в AL. Не проверяет на Ctrl-Break, BackSpace и другие.

Для ввода расширенного символа ASCII должна быть вызвана дважды. Для проверки статуса используется функция DOS 0Bh (чтобы не ожидать нажатия клавиши).

DOS, функция 08h Консольный ввод без эха

Выход: AL – символ, полученный через стандартный ввод

Описание. Считывает (ожидает) символ со стандартного входного устройства и возвращает этот символ в AL. При обнаружении Ctrl-Break выполняется прерывание INT 23h.

Для ввода расширенного символа ASCII должна быть вызвана дважды.

DOS, функция 09h Запись строки на стандартный вывод

DS:DX – адрес строки, заканчивающейся символом «$» (ASCII 24h)

Строка, исключая завершающий ее символ «$», посылается на стандартный вывод. Символы Backspace обрабатываются как в функции 02h (вывод на дисплей). Чтобы перейти на новую строку, обычно включают в текст пару CR/LF (ASCII 0Dh и ASCII 0Ah). Строки, содержащие «$», можно передать на стандартное устройство вывода с помощью функции 40h (BX=0).

DOS, функция 0Ah Ввод строки в буфер

DS:DX – адрес входного буфера (Таблица Б-1)

Таблица Б-1. Формат входного буфера

Буфер содержит введенные данные, в конце – символ CR (ASCII 0Dh)

DOS, функция 0Bh Проверка статуса ввода

Выход: AL=FFh, если символ доступен со стандартного ввода AL=00h, если нет доступного символа

Описание. Проверяет состояние стандартного ввода. При распознавании Ctrl-Break выполняется INT 23h.

Используется перед функциями 01h, 07h и 08h, чтобы избежать ожидания нажатия клавиши.

Эта функция дает простой неразрушающий способ проверки Ctrl-Break в процессе длинных вычислений или другой обработки, обычно не требующей ввода. Это позволяет снимать счет по нажатию Ctrl-Break.

DOS, функция 0Ch Ввод с очисткой

AL – номер функции ввода DOS:

AL=01h – ввод с клавиатуры

AL=06h – ввод с консоли

AL=07h – нефильтрующий без эха

AL=08h – ввод без эха

AL=0Ah – буферизованный ввод

Очищает буфер опережающего ввода стандартного ввода, а затем вызывает функцию ввода, указанную в AL. Это заставляет систему ожидать ввод очередного символа.

DOS, функция 0Dh Сброс диска

Сбрасывает диск (записывает на диск все файловые буферы). Файл, размер которого изменился, должен быть предварительно закрыт (при помощи функций 10h или 3Eh).

DOS, функция 0Eh Установить текущий диск DOS

DL – номер диска (0 – A, 1 – B и так далее), который становится текущим

Выход: AL – общее число дисководов в системе

Описание. Диск, указанный в DL, становится текущим. Проверка: используется функция 19h (дать текущий диск). В регистре AL возвращается число дисководов всех типов, включая жесткие диски и «логические» диски (как диск B: системе с одним гибким диском).

AL имеет то же значение, что и LASTDRIVE, указанное в файле CONFIG.SYS, и по умолчанию равно 5.

DOS, функция 0Fh Открыть файл через FCB

DS:DX – адрес неоткрытого FCB (Таблица Б-2)

Таблица Б-2. Формат FCB

AL=00h, если функция выполнена успешно (FCB заполнен)

AL=FFh, если файл не найден или доступ к файлу не разрешен

Файл, описываемый неоткрытым FCB, должен существовать в текущем оглавлении на диске, специфицированном в FCB (0 – текущий, 1 – A, 2 – B и так далее). Если файл не существует, возвращается AL=0FFh. Файл открывается в режиме совместимости. Если поле «Номер диска» в FCB равно нулю в момент вызова, то оно заполняется номером текущего дисковода (1 – A, 2 – B и так далее). Поле FCB «Номер текущего блока» устанавливается в ноль. Поле FCB «Размер логической записи» устанавливается в 80h. Поля даты и размера файла в FCB устанавливаются из оглавления.

DOS, функция 10h Закрыть файл через FCB

DS:DX – адрес открытого FCB (Таблица Б-2)

AL=00h, если функция выполнена успешно

AL=FFh, если файл не найден там, где он находился при открытии с помощью функции 0Fh

Закрывает файл, открытый функцией 0Fh. Файл должен находиться на своем первоначальном месте в текущем оглавлении диска, на котором он был открыт. Если файл найден, оглавление обновляется, файловые буфера сбрасываются и возвращается AL=00h. Если файл не найден, оглавление не обновляется и возвращается AL=FFh.

DOS, функция 11h Найти первый совпадающий файл через FCB

DS:DX – адрес неоткрытого FCB (Таблица Б-2)

AL=00h, если подходящее имя найдено

AL=FFh, если подходящего имени нет

В текущем оглавлении DOS происходит поиск файлов с именем, соответствующим заданному шаблону. При неудаче возвращается AL=0FFh. Если имя найдено, AL очищается, в первый байт DTA помещается номер дисковода (A – 1, B – 2 и так далее), а в следующие 32 байта помещается элемент оглавления для найденного файла.

Можно использовать при вызове расширенный FCB, чтобы выбирать файлы с указанными атрибутами. В этом случае в DTA помещаются: байт FFh, 7 байт нулей, номер диска и элемент оглавления.

DOS, функция 12h Найти следующий совпадающий файл через FCB

DS:DX – адрес неоткрытого FCB (Таблица Б-2)

AL=00h, если подходящее имя найдено

DTA заполнен AL=FFh, если подходящего имени нет

Используется после вызова функции 11h (Найти первый совпадающий файл через FCB) с обобщенным именем файла. Каждый последующий вызов заполняет DTA очередным подходящим элементом оглавления и возвращает AL=00h. Если подходящих имен больше нет, возвращается AL=FFh.

Резервируемая область в FCB сохраняет информацию, необходимую для продолжения поиска. Поэтому не стоит открывать и изменять FCB между вызовами.

DOS, функция 13h Удалить файл через FCB

DS:DX – адрес неоткрытого FCB (Таблица Б-2)

AL=00h, если функция выполнена успешно

AL=FFh, если файл не найден или доступ к файлу не разрешен

Эта функция удаляет все подходящие файлы в текущем оглавлении указанного диска согласно спецификации в FCB. Если подходящие файлы не найдены или если доступ отвергнут (как при попытке удалить файл с атрибутом Read-Only), функция возвращает в регистре AL значение FFh.

DOS, функция 14h Последовательное чтение из файла через FCB

DS:DX – адрес открытого FCB (Таблица Б-2)

AL=00h, если чтение было успешным и DTA содержит данные

AL=01h, если достигнут конец файла (EOF) и данные не считаны

AL=02h, если произошел выход за сегмент (чтения не было)

AL=03h, если EOF и считана усеченная запись (дополнена нулями)

Функция читает файл, специфицированный в FCB. Затем соответственно увеличивает значения полей в FCB.

Перед началом последовательной обработки файла нужно сбрасывать CurRec в ноль, так как функция 0Fh не инициализирует это поле.

DOS, функция 15h Последовательная запись в файл через FCB

DS:DX – адрес открытого FCB (Таблица Б-2)

AL=00h, если запись была успешной

AL=01h, если ошибка переполнения диска (данные не записаны)

AL=02h, если произошел выход за сегмент (записи не было)

Функция записывает файл, специфицированный в FCB. Затем соответственно увеличивает значения полей в FCB.

Перед началом последовательной обработки файла нужно сбрасывать «Номер текщей записи» в ноль, так как функция 0Fh не инициализирует это поле.

DOS буферизует данные, записывая полный сектор за один раз.

DOS, функция 16h Создание файла через FCB

DS:DX – адрес неоткрытого FCB (Таблица Б-2)

AL=00h, если функция выполнена успешно FCB заполнен

AL=FFh, если при выполнении функции возникли ошибки

Описание. Файл, специфицированный неоткрытым FCB, создается на диске, указанном в FCB (0 – текущий, 1 – A и так далее). Он открывается в текущем оглавлении этого диска. FCB заполняется аналогично функции 0Fh. Если файл существует в момент вызова, его элемент оглавления перекрывается новым файлом, а длина файла сбрасывается в ноль.

Handle-ориентированные функции DOS 2.0+ гораздо удобнее в работе.

DOS, функция 17h Переименовать файл через FCB

DS:DX – адрес измененного FCB (Таблица Б-2)

AL=00h, если функция выполнена успешно

AL=FFh, если при выполнении функции возникли ошибки

Переименовывает файл в текущем оглавлении.

DOS, функция 19h Получить текущий диск DOS

Выход: AL – номер текущего диска (0 – A, 1 – B, и так далее)

Возвращает номер дисковода текущего диска DOS.

DOS, функция 1Ah Установить адрес DTA

DS:DX – адрес DTA

Устанавливает адрес DTA. Все FCB-ориентированные операции работают с DTA. DOS не позволяет операциям ввода/вывода пересекать границу сегмента. Функции поиска 11h, 12h, 4Eh и 4Fh помещают данные в DTA. DTA глобальна, поэтому надо проявлять осторожность при назначении ее в рекурсивной процедуре. При запуске программы ее DTA устанавливается по смещению 80h относительно PSP.

DOS, функция 1Bh Получить информацию FAT для текущего диска

DS:BX – адрес байта FAT ID, отражающего тип диска (Таблица Б-3)

DX – всего кластеров (единиц распределения) на диске

AL – секторов на кластер

CX – байт на сектор

Таблица Б-3. Значения >

Возвращает информацию о размере и типе текущего диска. Размер диска (в байтах) равен DX*AL*CX. Свободную память можно найти функциями 36h или 32h.

Версии: DOS 1.x держит FAT в памяти и возвращает DS:BX => FAT. DOS 2.0+ может держать в памяти лишь часть всей FAT.

Эта функция изменяет содержимое регистра DS.

DOS, функция 1Ch Получить информацию FAT для указанного диска

DL – номер диска (0 – текущий, 1 – A и так далее)

DS:BX – адрес байта FAT ID, отражающего тип диска (приведен в описании функции 1Bh)

DX – всего кластеров (единиц распределения)

AL – секторов на кластер

CX – байт на сектор

Аналогична функции 1Bh с той разницей, что регистр DL указывает диск, для которого нужно получить информацию.

DOS, функция 21h Считать произвольную запись файла

DS:DX – адрес открытого FCB (Таблица Б-2)

AL=00h, если чтение было успешным и DTA заполнена данными

AL=01h, если достигнут конец файла (EOF) и чтения не было

AL=02h, если произошел выход за сегмент (чтения нет)

AL=03h, если встречен EOF и усеченная запись дополнена нулями

Данная функция читает из файла с текущей позиции как с указанной в полях FCB «Запись с текущей позиции» и «Номер записи при непосредственном доступе к файлу».

DOS, функция 22h Писать произвольную запись файла

DS:DX – адрес открытого FCB (Таблица Б-2)

AL=00h, если запись была успешной

AL=01h, при переполнении диска

AL=02h, если DTA+FCB выходит за сегмент (нет записи)

Данная функция записывает в файл с текущей позиции как с указанной в полях FCB «Запись с текущей позиции» и «Номер записи при непосредственном доступе к файлу».

DOS, функция 23h Получить размер файла через FCB

DS:DX – адрес неоткрытого FCB (Таблица Б-2)

AL=00h, если функция выполнена успешно

AL=FFh, если при выполнении функции возникли ошибки

Проще определить размер файла при помощи функции 3Dh с последующим выполнением 42h (при AL=2).

DOS, функция 24h Установить адрес произвольной записи в файле

DS:DX – адрес открытого FCB (Таблица Б-2)

Устанавливает поле «Номер записи при непосредственном доступе к файлу» в FCB на файловый адрес, соответствующий значениям полей «Текущий блок» и «Запись с текущей позиции».

DOS, функция 25h Установить вектор прерывания

AL – номер прерывания

DS:DX – вектор прерывания – адрес программы обработки прерывания

Описание. Устанавливает значение элемента таблицы векторов прерываний для прерывания с номером AL, равным DS:DX. Это равносильно записи 4-байтового адреса в 0000:(AL*4), но, в отличие от прямой записи, DOS знает, что происходит, и гарантирует, что в момент записи прерывания будут заблокированы.

Восстановить DS (если необходимо) после этого вызова.

DOS, функция 26h Создать новый PSP

DX – адрес сегмента (параграфа) для нового PSP

CS – сегмент PSP, используемый как шаблон для нового PSP (Таблица Б-4)

Описание. Устанавливает PSP для порождаемого процесса по адресу DX:0000. Текущий PSP (100h байт, начиная с CS:0) копируется в DX:0000h, поле MemTop соответственно корректируется, векторы Terminate, Ctrl-Break и Critical Error копируются в PSP из векторов прерываний INT 22h, INT 23h и INT 24h. После этого можно загрузить программу с диска и передать ей управление посредством FAR JMP.

Если перехватывается INT 21h, нужно позаботиться о помещении в стек корректного CS: IP. Еще лучше использовать функцию 4Ch.

Таблица Б-4. Формат PSP

DOS, функция 27h Читать произвольный блок файла

DS:DX – адрес открытого FCB (Таблица Б-2)

CX – число считываемых записей

Выход: AL=00h, если чтение успешно и DTA заполнена данными AL=01h если достигнут конец файла (EOF) и данные не считаны AL=02h, если при чтении произошел выход за границу сегмента AL=03h, если EOF и считана усеченная порция (дополнена нулями) CX – действительное число считанных записей

Читает несколько записей из файла, начиная с файлового адреса, указанного полем «Номер записи при непосредственном доступе к файлу» в FCB. Помещает данные в память, начиная с адреса DTA. Соответствующие поля FCB корректируются, чтобы указывать на следующую запись (первую за прочитанными).

DOS, функция 28h Писать произвольный блок файла

DS:DX – адрес открытого FCB (Таблица Б-2)

CX – число записываемых блоков (если CX равен нулю, то размер файла усекается до указанного в поле FCB «Номер записи при непосредственном доступе к файлу»)

AL=00h, если запись успешна

AL=01h, при переполнении диска

AL=02h, если при записи произошел выход за границу сегмента

CX – действительное число сделанных записей

Описание. Записывает несколько блоков в файл, начиная с файлового адреса, указанного полем «Номер записи при непосредственном доступе к файлу» в FCB. Читает данные из памяти, начиная с адреса DTA. Соответствующие поля FCB корректируются, чтобы указывать на следующую запись (первую за прочитанными).

DOS, функция 29h Разобрать имя файла

DS:SI – адрес исходной текстовой строки для разбора

ES:DI – адрес буфера для результирующего неоткрытого FCB (Таблица Б-2)

AL – битовые флаги, указывающие опции разбора (Таблица Б-5).

AL=00h, если результирующий FCB не содержит обобщенных символов

AL=01h, если результирующий FCB содержит обобщенные символы

AL=FFh, если неверно обозначение диска в имени файла

DS:SI – изменен – указывает на символ сразу вслед за именем файла

ES:DI – не изменен – указывает на неоткрытый FCB

Создает неоткрытый FCB из строки текста или параметра команды. Текст, начиная с DS:SI, анализируется как имя файла в формате D: FILENAME.EXT, и буфер по адресу ES:DI заполняется как соответственно форматированный FCB.

Таблица Б-5. Битовые флаги

DOS, функция 2Ah Получить системную дату

AL – день недели (0 – воскресенье, 1 – понедельник, … 6 – суббота), DOS 3.0+

CX – год (от 1980 до 2099)

DH – месяц (1 до 12)

DL – день (1 до 31)

Описание. Возвращает текущую дату, которая известна системе.

DOS 2.x не гарантирует возврата в AL значения дня.

DOS 1.0+ возвращает правильный день недели.

Версии до 2.1 имеют проблемы с переходом через дату.

DOS, функция 2Bh Установить системную дату

CX – год (от 1980 до 2099)

DH – месяц (от 1 до 12)

DL – день (от 1 до 31)

AL=00h, если дата корректна

AL=FFh, если дата некорректна и не изменена

Устанавливает системную дату DOS.

DOS, функция 2Ch Получить время DOS

CH – часы (от 0 до 23)

CL – минуты (от 0 до 59)

DH – секунды (от 0 до 59)

DL – сотые доли секунды (от 0 до 99)

Описание. Возвращает текущее время, которое известно системе.

Поскольку системные часы имеют частоту 18.2 Гц (интервал 55мс), DL имеет точность примерно 0.04 сек.

DOS, функция 2Dh Установить время DOS

CH – часы (от 0 до 23)

CL – минуты (от 0 до 59)

DH – секунды (от 0 до 59)

DL – сотые доли секунды (от 0 до 99)

AL=00h, если время корректно

AL=FFh, если время некорректно и не изменено

Устанавливает системное время DOS.

DOS, функция 2Eh Установить/сбросить переключатель верификации

AL=00h – отключить верификацию

AL=01h – включить верификацию

Описание. Задает, должна ли DOS верифицировать (считывать обратно) каждый сектор, записываемый на диск. Это замедляет операции записи на диск, но гарантирует максимальную надежность записи.

DOS, функция 2Fh Получить адрес текущей DTA

Выход: ES:BX – адрес начала текущей DTA

Описание. Возвращает адрес начала области ввода-вывода (DTA). Поскольку DTA глобальна для всех процессов, в рекурсивной процедуре (например, при проходе по дереву оглавления) может потребоваться сохранить адрес DTA, а впоследствии восстановить его посредством функции 1Ah.

Примечание. Эта функция изменяет сегментный регистр ES.

Версии: DOS 2.00 и выше DOS, функция 30h Получить номер версии DOS

AL – старший номер версии

AH – младший номер версии

BL:CX – 24-битный серийный номер (большинство версий не поддерживают этот параметр)

Описание. Возвращает в AX значение текущего номера версии DOS. Например, для DOS 3.20 в AL возвращается 03h, в AH – 14h.

Примечание. Если в AL возвращается 00h, можно предполагать, что работает DOS более ранней версии, чем DOS 2.0.

Версии: DOS 2.00 и выше. DOS, функция 31h Завершиться и остаться резидентным

DX – объем памяти, оставляемой резидентной (в параграфах)

Описание. Выходит в родительский процесс, сохраняя код выхода в AL. Код выхода можно получить через функцию 4Dh. DOS устанавливает начальное распределение памяти, как специфицировано в DX, и возвращает управление родительскому процессу, оставляя указанную память резидентной (число байт равно DX*16). Эта функция перекрывает функцию INT 27h, которая не возвращает код выхода и не способна установить резидентную программу, размер которой превышает 64 Кбайт.

DOS Fn 35H: дать вектор прерывания

Выход

Вход

DOS Fn 34H: адрес статуса реентерабельности DOS

Выход

Вход

  • AH = 33H
  • AL = 0 чтобы опросить текущий статус контроля Ctrl-Break
  • AL = 1 чтобы установить статус контроля Ctrl-Break
  • DL = требуемый статус (0=OFF, 1=ON) (только при AL=1)
  • DL = текущий статус (0=OFF, 1=ON)

Описание:

если AL=0, в DL возвращается текущий статус контроля Ctrl-Break. если AL=1, в DL возвращается новый текущий статус. когда статус ON, DOS проверяет на Ctrl-Break с консоли для большинства функций (исключая 06H и 07H). при обнаружении, выполняется INT 23H (если оно не перехватывется, то это снимает процесс). когда статус OFF, DOS проверяет на Ctrl-Break лишь при операциях стандартного в/в, стандартной печати и стандартных операциях AUX.

  • AH = 34H НЕТ В ДОКУМЕНТАЦИИ
  • ES:BX = адрес флага активности DOS

Описание:

Эту недокументированную функцию использует PRINT (фоновый процессор печатного спулинга) в момент его установки, так что он может позднее определить, можно ли использовать файловые функции DOS.

При возврате из этой функции ES:BX содержит адрес внутреннего флага DOS, указывающего, выполняется ли в данный момент какая-либо функция DOS. когда спулеру PRINT требуется открыть файл (или использовать какую-либо функцию DOS), он проверяет этот флаг. если ES:[BX] содержит не 0, фоновая программа (TSR, либо popup) НЕ ДОЛЖНА использовать никаких функций DOS.

Резидентные popup-программы часто активизируются по прерыванию от таймера или клавиатуры. так как это может произойти в любой момент, не исключено, что в этот момент будет выполняться какая-либо функция DOS. если теперь popup вызовет функцию DOS, это разрушит стек DOS и, вероятно, приведет к катастрофической ошибке. Путем проверки этого флага popup может определить, возможны ли вызовы функций DOS.

Это, однако, осложняется тем фактом, что COMMAND.COM и некоторые другие программы проводят большую часть времени, запросив ввод с клавиатуры через функцию 0aH (дать строку). таким образом, флаг почти всегда взведен, и на службу DOS наложено табу.

Вы можете выйти из положения, перехватывая INT 21H и отслеживая вызовы функции 0aH. когда приходит такой запрос, не выполняйте его немедленно. Вместо этого организуйте цикл, в котором с некоторой задержкой вызывайте функцию 0bH (дать статус ввода). Циклите, пока не заметите, что нажата клавиша. после этого можно выйти из цикла и вызвать функцию 0aH. Понятно, что при таком способе всегда существует окно времени, в котором проснувшийся popup может без боязни использовать функции DOS. можно также перехватывать INT 28H, если вы любите рисковать.

Предупреждение:

Эта функция не документирована, и опираться на нее рискованно. большинство popup-программ перехватывают INT 21H и отслеживают статус DOS индивидуально (ибо им и так приходится отслеживать 0aH).

Функция 0ah: Ввод строки с клавиатуры в буфер

DS:DX = адрес входного буфера (смотри ниже)

Выход Буфер содержит ввод, заканчивающийся символом CR (ASCII 0dh)

Описание: При обращении буфер по адресу DS:DX должен содержать значение максимально допустимой длины ввода. На выходе функции в следующем байте содержится действительная длина ввода, затем введенный текст, завершающийся символом возврата каретки (0dh). Символы считываются с устройства стандартного ввода вплоть до CR (ASCII 0dh) или до достижения длины MAX-1. Если достигнут MAX-1, включается консольный звонок для каждого очередного символа, пока не будет введен возврат каретки CR (нажатие Enter). Второй байт буфера заполняется действительной длиной введенной строки, не считая завершающего CR. Последний символ в буфере — всегда CR (не засчитан в байте длины). Символы в буфере (включая LEN) в момент вызова используются как «шаблон». В процессе ввода действительны обычные клавиши редактирования: Esc выдает «\» и начинает с начала, F3 выдает буфер до конца шаблона, F5 выдает «@» и сохраняет текущую строку как шаблон, и т. д. Большинство расширенных кодов ASCII игнорируются. При распознавании Ctrl-Break выполняется прерывание int 23h (буфер остается неизменным).

Завершение программы

Функция 4ch: Завершить программу (EXIT)

Вход AH = 4ch

AL = код возврата

Описание: Возвращает управление от порожденного процесса его родителю, устанавливая код возврата, который можно опросить функцией 4dh WAIT. Управление передается по адресу завершения в PSP завершаемой программы. В векторах Ctrl-Break и Critical Error восстанавливаются старые значения, сохраненные в родительском PSP.

Замечание: Значение ERRORLEVEL (используемое в пакетных файлах DOS) можно использовать для проверки кода возврата самой последней программы.

Функция 4dh: Дать код возврата программы (WAIT)

Вход AH = 4dh

Выход AL = код возврата последнего завершившегося процесса

AH = 0 — нормальное завершение

АН = 1 — завершение через Ctrl-Break int 23h

АН = 2 — завершение по критической ошибке устройства int 24h

АН = 3 — завершение через функцию 31h KEEP

Описание: Возвращает код возврата последнего из завершившихся процессов. Эта функция возвращает правильную информацию только однажды для каждого завершившегося процесса.

Функция 4dh: Дать код возврата программы (WAIT)

Вход AH = 4dh

Выход AL = код возврата последнего завершившегося процесса

AH = 0 — нормальное завершение

АН = 1 — завершение через Ctrl-Break int 23h

АН = 2 — завершение по критической ошибке устройства int 24h

АН = 3 — завершение через функцию 31h KEEP

Описание: Возвращает код возврата последнего из завершившихся процессов. Эта функция возвращает правильную информацию только однажды для каждого завершившегося процесса.

Работа с файлами

Функция 3ch: Создать файл через дескриптор

Вход AH = 3ch

DS:DX = адрес строки ASCIIZ с именем файла

CX = атрибут файла

Выход AX = код ошибки, если CF установлен

АХ = дескриптор файла, если ошибки нет

Описание: DS:DX указывает на строку ASCIIZ в формате: «d:\путь\имяфайла»,0. Если диск и/или путь опущены, они принимаются по умолчанию. файл создается в указанном (или текущем) каталоге файл открывается в режиме доступа чтение/запись вы должны сохранить дескриптор (handle) для последующих операций, если файл уже существует:

· при открытии файл усекается до нулевой длины

· если атрибут файла — только чтение, открытие отвергается (атрибут можно изменить функцией 43h Изменить Атрибут)

CONFIG.SYS определяет число доступных дескрипторов в системе

Используйте функцию 5bh Создать Новый Файл, если вы не хотите

испортить существующий файл.

Функция 5bh: Создать новый файл

Вход AH = 5bh DOS 3.0+

DS:DX = адрес строки ASCIIZ с именем файла

CX = атрибут файла

Выход AX = код ошибки, если CF установлен

АХ = дескриптор файла, если ошибок нет

Описание: DS:DX указывает на строку ASCIIZ в форме: «d:\путь\имя_файла»,0. Если диск и/или путь опущены, они принимаются по умолчанию. Этот вызов идентичен функции DOS 3ch CREATE, с тем исключением, что он вернет ошибку, если файл с заданным именем уже существует. Файл открывается для чтения/записи в совместимом Режиме Доступа.

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ — конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой.

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим.

Папиллярные узоры пальцев рук — маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни.

Рабочий стол

коды грея, лень курить html

Добрел до подготовки к программированию — сквозь чудесное празднование с Солнцем, дебри домашних мантушек, «Ликвидацию» и поиски картридера, — таки шо я имею вам сказать. Коды Грея самокопирующие, точнее, зеркалящие. Дядя Зина нам в лекции предлагает строить с помощью дополнительного массива Y длинной 2 в степени n, в котором хранятся номера элементов, которые нужно поменять. А Солнце делал все через string и приписывал в первой половине к началу 0, а во второй — 1. Несколько минут назад, я, помучившись, вывел жу-у-уткую зависимость между номерами шагов (для удобства, от нуля) и номерами меняемых элементов. Причем, считаем справа налево, от нуля и воспользуемся свойством Кодов Грея — честно, мне стыдно и лень спрашивать, какую он там бахнул черную магию, поэтому будем-с изобретать велосипед, — самокопированием.

0 — 0000 — 0 4 — 0110 — 0 8 — 1100 — 0 12 — 1010 — 0
1 — 0001 — 1 5 — 0111 — 1 9 — 1101 — 1 13 — 1011 — 1
2 — 0011 — 0 6 — 0101 — 0 10 — 1111 — 0 14 — 1001 — 0
3 — 0010 — 2 7 — 0100 — 3 11 — 1110 — 2 15 — 1000 — 4

На каждый четный номер шага меняем нулевой элемент. Дефолтно начало первых трех во вспомогательном массиве — это <0, 1, 0>. После них меняем элемент под номером номер максимального элемента, увеличенный на единичку. А далее копируем все, что меняли до этого. Закончили копировать, снова меняем, уже третий элемент, и копируем. и так, пока не надоест. Все, я пошел. Изначально думал привязывать к степеням двойки, но там такая дичь, что я решил не выеживаться

ЗЫ., Все оказалось куда как изящнее. Связь кода Грея с двоичным: старшие разряды совпадают, а следующие являются результатом сложения настоящего и следующего разряда по модулю два.

@музыка: Depeche Mode — And Then.

@настроение: жрать хочу, а низя

когда не хочешь писать в дневник

@музыка: Adriano Celentano — Napoleone Il Cow Boy E Lo Zar

тщетная попытка

Так, время утекает сквозь пальцы с невероятно большой скоростью. Небольшой предновогодний список дел в тщетной попыытке провести время с пользой:

1 — написать Михаилу Харитонову, чтобы он помог с Гауссом;
2 — распределить функции по генетическому коду;
3 — закончить вычитку рассказа;
4 — нарисовать карту и найти компас (квест «Реквизит») ;
5 — проверить шпоры по матанализу (производная параметрической функции, разложение в ряд Тейлора, доказать то, что могу доказать) ;
6 — нарисовать работы на конкурс и отправить их;
7 — написать Христиания/Ладония (. );

@музыка: the Silent Comedy — God Neon

@настроение: не тупить

производные

Открыл Демидовича. Боже мой, какие там вку-у-у-усности!
В принципе, мы сейчас производные берем, поэтому пока вкусно. А как начнутся интегра-а-алы
Что я ною, просто надо вечерком засесть и прорешать. Поеду к бабуле утром в субботу.

ЗЫ., без двадцати восемь
Я вот тут подумал, что в принципе мог бы на ЗФБ или ЛФБ, но как я все это буду делать. Опять бартерить? Да ну, а скилл писанины не достаточно прокачан, команда Хеты — я думаю — в основном левые люди, к такому не готов. Дарк Соулс — не знаю, играет ли он. Боль.

@музыка: Adam Skorupa – Believe

по Лагранжу за Гранью

Брал на паре производную функции arctg ((1 + x)/(1 — x)), получилось, что она равна 1/(1 + х^2). Прямо как (arctg(x))’ — увы, я только помню обозначение производной по Лагранжу, а их там (обозначений), как минимум четыре или четыре их и есть. — преподавателя это восхитило. «Я не знаю, стоит ли вам запоминать это свойство или нет, но советую запомнить. Обычно функции с такими любопытнейшими свойствами где-нибудь, да обязательно вам пригодятся. В следующей жизни, в параллельной вселенной. » — да, я так и вижу, как у меня не сворачивается трехэтажная дробь, мешает эта производная от арктангенса дроби, и тут я вспоминаю: «Ба, да это же равно производной от арктангенса икс!» Озарение! Доблестно провожу замену, и вся дробь схлопывается, как пространственно-временной континуум. Я не уверен, может ли чёрная дыра схлопываться, но если да — то это, должно быть, потрясающее зрелище.

Тут же мне вспоминается дискретка с её мутью про двойственные функции, код Хемминга, какие-то многочлены — буллева алгебра, чёрт её дери — которая нам вряд ли вообще пригодится в этой жизни. Бабуля сказала, чтобы я не порол горячку и впитывал знания губкой: в жизни случится всякое. Например, она вообще-то астрофизик, а таки пришлось читать лекции по матанализу. Вообще, если жизнь меня и заставит читать лекции по дискретке — то, надеюсь, это случится в Орхусском университете на факультете с уклоном в математику. Это прекрасная мечта, почему бы и не поставить её себе на заметку? Я даже не принимаюсь мечтать, а мне уже говорят спуститься с небес на землю. Мои мечты слишком претензциозны?

Видели видео про старика, который раскритиковал в пух и прах детский фетиш? Оно старое, по моим меркам, в четырнадцатом году двадцать первого века выложено, но мне запомнился его совет, мол, детям надо выделять три часа на то, чтобы попялиться в облака и помечтать — это помогает; да и взрослым такая мера тоже не помешала бы.

@музыка: Carmina Burana —In Taberna

хотелки

Кажется, я начал понимать прелести вишлиста. Он нужен, чтобы банально не потерять себя в своих хотелках.

Так вот, поскольку Октябрь в детстве долбанулся головушкой, то мне сейчас не помешают ботинки на двухсантиметровой подошве — они стоят пять тысяч, Himmelherrgott . И куртка потеплей. И шапка. И шарф. Последнее у меня есть, поэтому шарф из списка вылетает. Заходил сегодня в книжный. Листал очередное руководство для тренировки креативности и положил обратно. Знаете, что сегодня небо было в пушистую голубо-серо-белую полоску? Знаете, что на фоне черного неба оранжевые фонари отдают стимпанком? Знаете, что утекающая лента машин в даль похожа на потоки рубинов и лунных бликов? Знайте, что люди под мигающим зеленым светом заставят ваше сердце биться чаще, а их трупоподобный вид вызовет панические мурашки.

А у меня на носу матан и алгебра. Подремать что ли. Выпало мне тут на кубике «халява приди», что-то боязно. Скоро мозги из ушей вытекут, а это не айс. Чаю мне с шоколадом!

ЗЫ., полчаса до полуночи.
Алгебра отменяется, но вместо нее долбаный инглиш.

@музыка: Aventura – Obsession

мифы, университет, город

Мне тут ныли, что никто не знает Эпиметея, человека, крепкого задним умом, а ведь без него, цитирую, «не было бы и Пандоры». В греческих мифах Эпиметей брат Прометея, Атланта и Менетия — все они сыновья титана Яппета и океаниды Клемены. Эпиметею Зевсом была дарована Пандора в отомщение Прометею. Пандора, как известно, принесла на землю все несчастья. Пролистал статью к фразеологизму «ящик пандоры», так в ней ни слова об Эпиметее, но это же детская статья. А нытьём мне доказывали, что такое вопиющие незнание «гхероев» в лицо есть признак дискриминации женщинами в отношение мужчин. Ох. Возведем очи горе и похороним логику. Впрочем, есть куда более приятные вещи, чем рассуждение над «absolutny brak logiki», например, я нашел собрание мифов Древней Греции в собрании Роберта Грейвса в переводе Лукьяненко, издательства «Прогресс», и Эпиметей там есть. Мне стоит повторять, что это хорошо?

Если же. Ай, к псам! В будущую Alma-Mater я летел на крыльях счастья, как будто ног у меня вообще нет и природа их не предусмотрела. Расписка, конверт с фотографиями и разваливающийся от старости сборник Набокова, который старше меня чуть ли не в два с половиной раза. Мог бы описать все то чувство ностальгии от возвращения в Кировский, пусть и такого короткого, наслаиваемое на восхищение от внешнего вида здания университета — я и внутри побегать успел — но, боюсь, у меня просто не хватит слов. Всё на позитиве, ощущения такие, как от слога Владимира Набокова и мертвой петли одновременно, но только в пятьсот раз острее. Понимаю, что за пять лет мне до безумия и печенок надоест вид здания в стиле конструктивизма, морды одухотворенные лики деятелей науки и культуры по пять метров в высоту, живописный внутренний дворик, степи кругом и атмосферы незыблемости и торжественности, но сейчас. Сейчас я счастлив, господа. Просто счастлив. В пни зарубежные Питер, все таки Волгоград я люблю особой любовью, и это у меня не отнять.

Я счастлив, счастлив, счастлив, господа! Такого ничем не замутненного счастья я не чувствовал давно, но семнадцать лет жизни ради такого мгновения, определённо, стоят.

@музыка: De Eneste To – Østjylland Dreaming

@настроение: бег по потолку

критика, организм, музыка

Мое сумасшедствие под дождичком организм просто так не оставил. Он вообще мне много чего не прощает, но отыгрывается раз в месяц, проверено. Колкие маленькие капли жалили, а крупные — смачно ударялись о кожу и одежду, в результате мои волосы и рубашка в два счета превратились в некоторое подобие второй кожи. Так как я в помещении умудрился довести до такого состояния, что меня можно было выжимать и на плетень вешать сохнуть, а на улице я чуть ли не рондат с колесами прыгал — ага, с больной ногой — логично, что через несколько минут я почувствовал, как предательский холодок охватывает все мое тело. Это к тому, что теперь ни одно малейшее движение не обходится без натужного скрипа мышц.

Так меня волнует одна проблема. Грувшарк сыграл в ящик окончательно и бесповоротно — от прощального сообщения на их странице я даже прослезился — и ссылки на музыку не работают. Самое противное, я даже не помню, какие именно композиции публиковал в те или иные дни. Группы — да, но и те не все. Это печально, потому что мне очень хочется знать, чем я ещё средневековым заслушивался помимо Estampie и Mediaeval Baebies. Также мне интересно, что сейчас модно слушать — металл, хард-рок, дабстеп, м-м-м? — ибо до сих пор под впечатлением, как одного пользователя распекали за гламур-р-рность и рок. Точнее, претензии были такие: ты слушаешь только одну рок-группу и кричишь, что обожаешь рок, хотя ни одной более не назовешь. По себе заметил, что очень тяжело «пересаживаться» на другие музыкальные группы. Их надо найти, потом скачать, расслушать — всё это нанимает время. Плюс, я вообще не разбираюсь в жанрах. Касательно проблемы, придется ползать по дневнику и удалять все неработающие коды, что в принципе не страшно, так как половина музыки хранится на ноуте. А вот Potentia Animi я точно сюда загоню, как и ost’ы Bloodborn.

Без перехода. Недавеча разбирал шмотье в шкафах. Не помню уже, что разбирал или не разбирал вовсе, а искал, но без разницы. Факт в том, что тряпье из шкафов вываливал и перебирал. На кой это все хранить? Вещи, которые порваны, растянуты, малы, застираны — потому что их уже никто не наденет в трезвом уме. Ах, да, конечно, малая дорастет и будет всю эту шваль носить. Ну-ну, я посмотрю на это с удовольствием, как её заставлять будут, эту модницу. Руки чесались повыбрасывать половину, но не позволено-с. Теперь шмотье опять сложено в шкафы. Смысл? Порядок продержится только первые два дня, на большее меня не хватит.

@музыка: Nephew — Klokken 25

куда только не попадали

Во-первых, эту прелесть вытащу из комментариев и перетащу в пост, где ей, собственно, и место.

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

Матери соврал, что видел плохой сон. Ей-ей, мне и так разбираться с этим человеком, так еще не хватало матушкиных, определенно ценных, замечаний по поводу всей этой кутерьмы. Раз я сам заварил кашу, то буду расхлебывать. Один плюс Интернета: ты не видишь лица, поэтому, мне понадобилось лишь один раз клюнуть носом в трамвае, чтобы мигом все решить одним махом. Почти все. Но я чувствую себя живым, а не равнодушным. Это, официально заявляю, супер. Если учесть еще факт, что два первых урока слетели, и я отсыпался на диване, причем учитель младших классов меня не согнала, а даже выключила свет, то день прекрасен. Сие так меня потрясло, что я вспомнил пожелания Татьяны Георгиевны: «учителям — человечности» — и я верю, что так оно и случилось. За эти два урока я выспался. Скол!

Марк, мой одноклассник, постригся, и я боролся с сильным желанием взъерошить ему волосы. Не взъерошил, с чем себя и поздравляю. Видел Марту в мини-юбке и в кроссовках с гетрами. А дружок, с которым я столкнулся на первом этаже, мне зачем-то сказал, что товарищ Дитрих на третьем этаже, сказал и ладно. Я на третий этаж не сорвался. Мне выступать с цирковым номером, а я волнуюсь. Слегка, правда, но волнуюсь. Хорошо, у меня есть два дня до выступления: схудну и обрету двойную человечность.

Кстати, не в тему, но пусть будет, можно так «талантливо» почесать глаз, что заразишься гонореей. Уроки ОБЖ доставляют. Я же очень впечатлительный! И фантазия у меня будь здоров.

нормальности и мордашки

Мне надо было написать сочинения, а я искал Доктора Кто с русскими субтитрами, параллельно слушал Girugamesh и залипал вот на это.

Впору задуматься о моей нормальности, ибо я знаю, что лучше добить эти сочинения сейчас, а не растягивать сие удовольствие до вечера. Да, каникулы закончились. Сегодня последний день, когда я могу спокойно и превесело всячески курить бамбук.

Потом как оказалось, Girugamesh не зашел, но я по этому поводу не печалился, ибо. Наткнулся, как всегда это происходит при серфинге Интернета в рассеянном состоянии, на Krauka. Фолк, так еще и датский, во всей красе. Приплюснутые голоса и аутентичные музыкальные инструменты, все как я люблю. Ловлю чистейший дзен от прослушивания студийных альбомов этой группы и даже их скачал. Безуспешно боролся с желанием забить на все и заняться дурью, но сочинения дописал. Почти. Одно буду дописывать на неделе, аргументики набросал-с. Мазохист девяностого левела, да.

Теперь мне кажется, что вокруг тлен, безысходность, мрак и ужас, и даже Nephew меня не вытаскивают из этого паршивого состояния. Однако, это не значит, что я должен бросить разбор видов избирательных систем, из-за которых я чуть не схлопотал моральный пендель от Ольги Анатольевной и основ экономики. Мне наконец-таки надоело участвовать в еженедельном садо-мазо, вот что значит терять тетради, и я решил немножечко о себе позаботиться. Короче, мне еще конспектировать половину учебника, ибо в экономике я ноль без палочки. До сих пор удивляюсь, как я выезжаю на чистом везении и умении вовремя подсуетиться, а? У меня есть еще пять недель, чтобы убрать четверочные хвосты, ибо достало. Я могу иметь по этим предметам пять, но видимо эта перспектива меня настолько расслабляет, что я позволяю себе гонять болты и катать на саночках.

Самое скверное в этой ситуации, что я нормально разозлиться не могу. Даже тема феминисток меня не затронула так, чтобы я не сдержался и не разорался капсом, а феминисток, скажем так, недолюбливаю. Вообще во многих вопросах придерживаюсь «традиционных» позиций. Мне только «Домостроя» не хватает для полноты картины.
__________________
ЗЫ., виды избирательных систем

мысль смешная, но вдруг поможет

Казалось бы простой рецепт хорошего дня: отрубить к черту весь Интернет и заняться вплотную одним очень полезным делом, — но такой сложный! Первое испытание — это быстрая проверка дневника. Черт его знает зачем я на него зашел, но факт есть факт, я зашел. Предупредил все и вся, чисто для успокоения волнующихся личностей (без сарказма) и себя, что вот я такой-сякой не ответил на письма. После этого, когда у меня мозг вынесен физикой, относительно, конечно, но два часа непонятного ковыряния в законах Ома и теории электрического тока, даром мне не прошли, я закрыл ноутбук. Чертов я гуманитарий! Мало того, что он внезапно засомневался в своих знаниях истории, так еще и непрофильные предметы отпустить никак не может и не хочет. Кстати, надо прочитать химию, я её опять всю позабыл, а сообщение на полухалявную оценку не даютъ-с.

Второе испытание — это. окружающие меня люди. Только улягусь с тетрадью, охапкой ручек и телефоном с шестью томами Лермонтова, как надо вставать и что-то делать или же старательно изображать деятельность. Ладно, тут я больше кипятился, но, опять же, факт есть факт. Но зато-о-о, когда нашел идеальную позицию для увлекательнейшего занятия, а именно заполнения читательского дневника, подпихнул под себя подушек, так как локти мои устали, я наконец-таки сделал то, что не мог никак сделать всю неделю! Запастись аргументами из творчества великого и прочая, прочая писателя Михаила Юрьевича Лермонтова. Так и хочется в эти слова вложить столько яда, чтобы перегорело к собачьим лапам всё. Благо, что техника еще не настолько совершенна, чтобы передавать буквально все оттенки чувств на расстоянии. О, я представляю, сколько бы людей умерло от ядовитых памфлетов, едва взглянув на них. Где-то у меня завалялась эта волшебная книжечка в печатно-бумажном (!) виде.

В голове носились мысли о, собственно, рецепте прекрасного дня, зарисовке по паре Норвегия х Дания, о мягких тенях, укутывающих мою комнату, об острых пятнах солнечного света, о запахе белого кофе, — Как же я его обожаю! — о шутливой памятке, как совершенствоваться в умении излагать свои мысли на бумагу, но эти мысли мне абсолютно не мешали. Они текли рядом и успокаивали, создавая тихое ощущение уюта. Как же я всё-таки люблю места, где ты дорываешься до компьютера поздно вечером, но с чувством выполненного долга, ибо перебираешь в голове полный список твоих проделок и серьезных дел. Я несколько раз уже с любопытством поглядываю в сторону сообщества «Голландская Рулетка», но пока не чувствую в себе сил, чтобы достойно отыграть там хотя бы месяц. Не исключено, что это говорит моя форменная лень. Давить этого гада надо, давить, давить, давить.

И-и-и. да, мне свойственна зависть. Другой причины, почему я открестился от одного новичка я пока не вижу. Нет, причина-то есть: он забивал ленту дискуссий, — но она мне кажется дюже читерской и придуманной наспех, потому что этот человек меня очень сильно зацепил. Однако, первой моей мыслью было, что, да, я ему завидую. Хотя кого это волнует, и должно ли это волновать меня? Непонятно.

Я уже не помню имя этого человека, который нашел нижеперечисленные задания для тренировки навыка, но я ему премного благодарен. Честно-честно.

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL