вівторок, 31 грудня 2013 р.

Завершуючи 2013-й

Лінь мені підсумки підводити. (Це я так маскую відсутність того, що підсумовувати. :-) Краще поділюся цитатами. Звідки -- самі вгадуйте. Перший "не-технічний" пост, до речі. 

- Буде хто допитуватися, застрели.
- Застрелити?
- Тільки ввічливо.

неділю, 22 грудня 2013 р.

Аналіз SYS.COM з PC-DOS 3.00 -- частина друга, printf

Наскільки я розумію, вся морока із перетворенням SYS.COM в SYS.EXE, а потім виготовлення із нього знову COM-файла, який на льоту сам себе перетворює в EXE, була заради того, щоб підключити printf-подібну функцію, яку можна буде викликати дальнім викликом -- таку, що знаходитиметься в окремому сегменті (при всій умовності сегментів у 8086/8088). Справді, перше, що ми бачимо в "SYS.EXE" -- код такого printf. Перед тим, як перейти до власне коду SYS, розглянемо його.

середу, 18 грудня 2013 р.

Нова інформація про прилади Chang'e-3

В моєму оригінальному пості про Chang'e-3 мало інформації про апаратуру --- китайці ті ще конспіратори. З того часу з'явилися деякі подробиці. Через недостачу сил та часу, вирішив винести їх в окремий пост, в старому давши лише посилання.

Інформацію взято на форумі nasaspaceflight: "LIVE: Chang'e-3 lunar probe and rover, CZ-3B - Xichang - December 1, 2013" та "LIVE: Chang'e-3 lunar probe and rover Lunar Landing December 14, 2013", з дрібними уточненнями, побаченими там і сям.

суботу, 14 грудня 2013 р.

Китайці таки на Місяці (updated 3)

Нога китайської автоматичної
станції на Місяці. (c) CNSA
Китайцям таки вдалося! 
Привітаємо їх! 

Майте на увазі, посадка -- найнебезпечніший етап для космічного апарата. Далі, зазвичай, простіше. 

Спершу я побачив, що Xinhua повідомляє ("China's lunar probe soft-lands on moon"), автоматичний розвідник успішно здійснив посадку 13:00 UTC (21:00 за пекінським часом). Там же була фотографія з "десантної" камери. Насправді, вони трішки обманули, запуск двигунів на гальмування відбувся 12:59:52 UTC, офіційний час посадки 13:11:18 UTC.

вівторок, 10 грудня 2013 р.

Chang'e 3 -- китайці на Місяці

Останнім часом подій багато. Говорячи про космос --- американський MAVEN та індійський Mars Orbiter Mission летять до Марсу. Китайський Chang'e-3 -- до Місяця. Марсіанським місіям ще летіти і летіти, а ось "китаєць" вже майже на місці. Буде перша спроба посадки за чотири десятиліття. Спроба, тому що в космосі безліч речей можуть піти не так. Попередні місії Chang'e-1 і Chang'e-2 пройшли чудово, але досвіду посадок на інші небесні тіла в Китаю немає, а задача ця помітно складніша від виведення апаратів на орбіту.

 В рамках боротьби із забобонністю, напишу про те, що нас чекає. Інформації не дуже багато --- Китай далеко не такий відкритий, як НАСА, але трішки назбиралося. Інформація, місцями, не перевірена. Повний список використаних джерел -- внизу.

UPDATE: деякі доповнення інформації про апаратуру тут.

понеділок, 28 жовтня 2013 р.

Аналіз SYS.COM з PC-DOS 3.00 -- частина перша

14 серпня 1984 року вийшла DOS 3.00. Вона, по великому рахунку, була останньою радикально переписаною версією DOS. Додано основу для підтримки мереж. Створено підтримку “Network redirector”, при чому, майже повну. Хоча підтримку мережі не встигли закінчити, в результаті чого ніхто ним не користувався, але було додано критичні для роботи мережі механізми: перенаправлення та блокування файлів. З'явилася можливість створювати "користувацькі" файлові системи (installable filesystems), за допомогою яких потім, зокрема, було реалізовано підтримку CD-дисків. Із більш приземлених речей, додано підтримку п'ятидюймових 1.2Мб дискет, FAT16 (правда, такі диски ставали несумісними із DOS 2.10, крім того, диски розміром більше 15Мб, форматовані з-під DOS2, стали несумісними із DOS3+), давно очікувану підтримку годинника реального часу, (тепер не було потреби вводити час і дату кожного запуску наново), додано утиліту ATTRIB.EXE для роботи із атрибутами файлів --- першу системну програму DOS, написану на С, покращено підтримку не-англомовних користувачів.

Детальніше можна почитати тут: "DOS 3.0, 3.1, and 3.2" і тут: "Timeline of DOS operating systems", а я повернуся до SYS.COM.

неділю, 13 жовтня 2013 р.

Земля з Далекого космосу

Фото  Аполон-8, з орбіти Місяця,
24 грудня 1968. (c) NASA
Колись я вже писав, як людство відкривало собі Землю "зі сторони", від перших фото із Фау-2, до Pale Blue Dot.

Як би не хотілося, розповідь про "Бліду блакитну цятку", фото Землі, зроблену Вояджером, фото нашої планети, зроблене із найдальшої (поки?) віддалі -- 6 мільярдів кілометрів (~40.5 астрономічних одиниць), не повторюватиму. Дивіться у згаданому пості. А зараз хочу розповісти про аналогічний недавній проект NASA/JPL та інших. Наші емісари є біля багатьох планет. Сатурн, Марс, Меркурій, Венера, відкритий космос --- полють за астероїдами та кометами, прямуючи до своїх далеких цілей, спостерігають за Сонцем та чужими зірками. Так ось, час від часу, деякі з них трішки відволікаються від своєї основної роботи --- дослідження відповідних небесних тіл, і фотографують Землю. Щоб ми могли побачити її такою,  як вона бачиться їм. І бачилася б (з обмовками) нам, якби ми могли бути там.

вівторок, 8 жовтня 2013 р.

Curiosity -- короткий огляд 2

Хмари. (c) JPL/NASA
Продовжую традицію поверхневого огляду публікацій про роботу марсохода. Попередній пост, який охоплював аж півроку, тут: "Curiosity, минув рік на Марсі --- дуже коротко". (На жаль, йому дісталася екстремально низька відвідуваність -- рекорд для цього блогу...)

четвер, 19 вересня 2013 р.

Книги по C++ -- деякі конкретні рекомендації

Класика.
В попередній частині ми говорили про те, як вибирати книги по С++. Тут пропоную конкретний список рекомендацій. Він ні в якому випадку не є повним чи вичерпним. Його призначення --- дати (самі знаєте, кому ;) рекомендації, які книги використовувати для навчання, із чого вибирати.

Книги для початківців


середу, 18 вересня 2013 р.

Книги по C++ -- загальні міркування

(с)  Chetan Gole
Останнім часом часто доводиться рекомендувати підручники по C++ людям, які тільки починають вивчення цієї, дуже мною любимої, але, все ж, складної, мови. 

Вирішив підсумувати свої міркування --- як вибирати та запропонувати список конкретних книг, щоб, замість повторювання --- просто скеровувати сюди. 

Зрозуміло, що в міркуваннях є доля суб'єктивності. Хоча, базуються вони на поглядах (і діагнозах) гуру С++ --- явно не сам придумав! Є дуже багато спрощень --- пост і так завеликим виходить.

Справа в тому, що проблема вибору книг для вивчення С++ складна. Чому? Тому що дуже багато зовсім-зовсім поганих --- відверто шкідливих; багато ніяких. І зовсім мало, у відносній частці, хороших.  C++ --- складна. Спільнота програмістів виробила правила, як ту складність використовувати на користь своїй роботі. Однак більшість авторів книг про це нічого не знають. Крім того, мові минуло 30 років, проягом яких вона активно розвивалася. Книги виходили та застарівали. Так ще й частина забули вийти з епохи 90-х. Відкриваєш книгу 2003-2005-2008 років: MS-DOS, десь на горизонті Windows, far i near вказівники... Бррр! Ще одна поширена хвороба --- забути, що крім Visual C++/Borland CBuilder/ще чогось, існують інші компілятори та середовища.

четвер, 12 вересня 2013 р.

LADEE в дорозі

(c) NASA
На днях вирушила до Місяця чергова експедиція --- LADEE. LADEE означає Lunar Atmosphere and Dust Environment Explorer. Тобто, вивчатиметься атмосфера Місяця та ситуація із пилом в його околицях. Місяць? Атмосфера? Так. Певна атмосфера, чи, швидше --- екзосфера, у нього є. Правда, тиск біля поверхні всього 10 наноПаскаль, одна десяти-трильйонна  від тиску Земної. Або порядку \(10^5\) частинок на кубічний сантиметр днем, \(10^4\) --- вночі, проти \(2.7\cdot 10^{19}\) для Землі. Склад -- водень, гелій, неон та аргон, йони натрію та калію. Практично для будь яких цілей це -- ідеальний вакуум. Див. також вікі, англійську чи російську.) Однак, з наукової точки зору розуміти процеси у ній важливо. Зокрема -- її походження та динаміку. Ефекти, які керують такими екзосферами, можуть бути важливими для розуміння виникнення та еволюції інших атмосфер (які "зверху" такі ж розріджені --- МКС літає в схожих умовах), зокрема і нашої власної.


четвер, 5 вересня 2013 р.

Curiosity, минув рік на Марсі --- дуже коротко

(с) JPL
На жаль, з одного боку -- із часом дуже зле, з іншого особливо цікавого поки нічого не відбувається (або поки не публікується), а доступних джерел інформації в Інтернеті багато. Тому дуже коротко, лише їх огляд.

Список джерел


Коротко про

пʼятницю, 23 серпня 2013 р.

"Extending DOS" by Ray Duncan et. al

Про свою боротьбу із DOS-ом я вже писав: "DOS FCB". Ключова тема -- доступної інформації було мало, критично мало. Ну, тобто, в когось може і були всі потрібні книжки, але в мене -- ні...  Одним із важливих питань було, (вживаючи правильний термін, якого тоді не знав) -- розширення DOSу. Сам DOS -- більш ніж скромна система, навіть на свій час. З чого все почалося теж писав: "MS/PC DOS 1.0". Наступник, DOS 2.0 стала значно просунутішою системою, але все рівно, до середини 80-х років 640Кб було явно мало навіть для персоналок. Однак, вимоги зворотної сумісності не давали просто "почати все з початку", доводилося викручуватися. Розширена (extended) і доповнена (expandex) пам'ять, HMA, захищений режим, VCPI, розширювачі DOS, DPMI, DOS/4GW і т.д. і т.п. -- купа всіляких загадкових слів та абревіатур. З захищеним режимом я сяк-так розібрався. Дорвавшись до каталогу переривань Ральфа Брауна, пробував розібратися і з int 15h/VCPI/DPMI. Але, з одного боку, довідник --- не підручник, з іншого, з приходом Windows-9x, Windows NT та Linux, вся тематика зробилася неактуальною. Активно колупатися -- воно б не вартувало затрачених зусиль. Проте, певна ностальгія, (про неї я вже згадував, пишучи про FCB), залишалася.

середу, 21 серпня 2013 р.

Аналіз CHKDSK.COM з PC-DOS 1.00

CHKDSK. Скільки в цьому слові! ;-) (Для тих, хто ще застав відповідну епоху). Скільки надій на неї покладали, скільки розчарувань, чи навпаки -- несподіваних порятунків. Програма перевірки та виправлення помилок на дисках.

суботу, 27 липня 2013 р.

Аналіз SYS.COM з попередника, 86-DOS

Для повноти повернемося ще на крок назад. "Дистрибутив" 86-DOS 1.0 від 28 квітня 1981 року теж доступний в Інтернет. Він містить джерельні тексти власне операційної системи,  SYS.COM присутній лише в двійковому коді. Тому довелося знову взятися за дизасемблер. :-)

четвер, 13 червня 2013 р.

Аналіз SYS.COM версії 1.81 з Compaq-DOS 2.12

Як вже згадувалося раніше, знайти SYS.COM з оригінальної MS-DOS 2.11 не вдалося. Однак, у файлі "Microsoft DOS 2.12 [Compaq OEM] (5.25).7z" трапився SYS.COM, з стрічкою "Vers 1.81" --- попередньою до тієї, що у оригінальному SYS.COM з PC-DOS 2.10 (стрічка "Vers 1.82"). Подумав, що вона може бути цікавою, як для аналізу розвитку конкретної програм так і способів програмування від Microsoft взагалі. Сподівання виправдалися. :-)

Детально її розбирати не буду --- вона дуже схожа на версію 1.82. Взагалі, природно було б починати саме з цієї, 1.81, потім переходити до новішої. Однак, з одного боку, побачив я її значно пізніше, з іншого, вона явно містить модифікації від Compaq, тобто є менш "автентичною", чи що. Тому зупинюся лише на важливих відмінностях.

середу, 12 червня 2013 р.

Спроба аналізу SYS.COM з DOS 2.11

Версія 2.11 була гібридом IBM-івської 2.10 (2.1) та Мікрософтівської 2.01, з її підтримкою інтернаціоналізації та всілякими багфіксами. Випущена вона Microsoft і призначалася для OEM, відмінних від IBM. Тому присутня в дуже багатьох варіантах. 

Скачав я "Microsoft DOS 2.11 (5.25).7z", дістав SYS.COM, почав колупатися. І дуже здивувався --- код навіть не схожий на попередні варіанти. Нічим. Ні стилем, ні підходом, ні будовою.  Перевірка показала, що цей архів, насправді, лише копія іншого, "Microsoft DOS 2.11 [AT&T OEM] (5.25).7z". Точніше, бінарно і архіви і образи в них --- різні. Але файли у них -- однакові. Тобто, якщо я чогось жорстоко не плутаю, "vanilla" MS-DOS 2.11 мені знайти не вдалося.Якщо хтось має -- діліться!

вівторок, 11 червня 2013 р.

Аналіз SYS.COM з PC-DOS 2.10




В листопаді того ж, 1983 року, IBM випустила DOS 2.10. Нічого особливо нового в ній не було --- поточний апдейт, але подивимося детальніше до нутрощів (хоч і на тривіальному прикладі). 

понеділок, 10 червня 2013 р.

Аналіз SYS.COM з PC-DOS 2.00

Після 1.10, в березні 1983, "наступила" версія 2.00. Фактично, нова операційна система. З'явилася підтримка директорій, засоби роботи з файлами у стилі UNIX (завдяки чому зразу застаріли FCB), підтримка жорстких дисків та нових форматів дискет. З'явилася можливість завантажувати драйвери пристроїв, резидентні програми, купа нових внутрішніх і декілька --- зовнішніх, команд. Крім набору засобів роботи з файлами та резидентами, з'явилися системні виклики для керування динамічною пам'яттю.

Подивимося як це все вплинуло на нашу жертву.

четвер, 9 травня 2013 р.

Аналіз SYS.COM з PC-DOS 1.10

Рухаємося далі. Наступив черговий, 1982 рік. В травні вийшла наступна версія PC-DOS, 1.10. Революційною вона не була. Виправлено помилки, додано підтримку двосторонніх дискет (320кб). Для файлів почав зберігатися і час зміни, не тільки дата. З'явився ще один системний виклик, "set/reset verify switch", AH=2Eh/INT 21h (не траплялося мені в документації згадок, що він тільки з 1.10, але в коді їх IBMDOS.COM це видно однозначно). TIME i DATE стали внутрішніми командами, тепер їх виконанням займався COMMAND.COM. Всілякі дрібні зміни там і сям. В Microsoft ця версія мала номер 1.24 (наступна, 1.25, постачалася іншим ОЕМ). (Детальніше про номери версій див. тут, шукайте за стрічкою "1.24").

Подивимося, що змінилося в SYS.COM з виходом цієї версії. Повторюватися не буду, загальну інформацію див. попередній пост ("Аналіз SYS.COM з PC-DOS 1.00") і посилання там.

пʼятницю, 3 травня 2013 р.

Аналіз SYS.COM з PC/MS-DOS --- вступ

Хто багато працював із DOS, повинен пам'ятати одну корисну програмку, SYS.COM. Вона -- наступна жертва, (після DATE.COM і TIME.COM). Програмка невелика, була доволі корисна, при тому присутня у всіх версіях, від 1.0 до 6.22, і навіть 7.00. 

неділю, 28 квітня 2013 р.

C/C++, стандарти, компілятори, оптимізація...

Довелося недавно розповідати про представлення цілих знакових, зокрема -- від'ємних, чисел у C/C++ (signed int і сімейство). Так як часу було мало, і всі відомі мені архітектури (x86, AVR, ARM) використовують доповняльний код, (two's complement),  розповідав лише про нього. Зокрема, продемонстрував, що буде, якщо до максимального додатного значення, яке влазить у певний тип, додати 1, або від максимального за модулем від'ємного, відняти 1. (Див. додаток 1, або рисунок праворуч.)

#include <iostream>
#include <climits>

using namespace std;

int main()
{
 int m=-INT_MAX;
 cout << m << endl;
 --m;
 cout << m << endl;
 --m;
 cout << m << endl; 
 ++m;
 cout << m << endl;  
 }

Подивився на то мій колега, Орест Гера, і зауважив, що, здається, в стандарті такого не пише. Навів приклад, де компілятор відхиляється від цього правила.

середу, 17 квітня 2013 р.

Аналіз TIME.COM з PC-DOS 1.00

Написавши про DATE.COM, задумався, яка частина описаних "нюансів" коду була характерна для нього, а яка для коду Microsoft взагалі. Для контролю дизасемблював ще одну дуже схожу крихітну утиліту, яка теж не пережила виходу наступної версії: TIME.COM.

Загальні твердження та посилання в попередньому пості, "Аналіз DATE.COM з PC-DOS 1.00 ", тут -- тільки про TIME.COM, який теж є звичайною COM програмою.  Нагадаю хіба, що такі програми побайтово вантажаться у пам'ять, починаючи із зміщення 100h від початку сегменту (вище неї, в цих 0FFh байт, знаходиться PSP). Коли програмі передається керування, гарантується, що:
  • CS=DS=ES=SS, всі вказують на той же сегмент,
  • SP=0FFFEh -- стек у кінці сегмента, росте вниз,
  • IP=0100h -- починаємо зразу після PSP.
  • AL = 00h, якщо перший FCB в PSP має правильну літеру диску, 0FFh, якщо ні.
  • AH -- аналогічно для другого FCB з PSP.
Код, сумісний з NASM:

пʼятницю, 12 квітня 2013 р.

Місяць - американці теж мацають

Програвши гонку за першу успішну посадку на інше небесне тіло, американці все ж змогли повторити це досягнення всього лиш через 4 місяці. І тут виявилося, що американський апарат незрівнянно досконаліший від "Луна-9". Ні, остання теж була доволі елегантною і творчою місією. Але дивіться самі.

Стосовно традиції починати із переліку невдалих запусків. Як не смішно, перша ж спроба виявилася вдалою. В це навіть самі автори не особливо вірили (офіційна оцінка ймовірності успіху -- 60%). "Surveyor-I, the spacecraft described here, was the first engineering test model to be flown" [Surveyor-I - A preliminary report - June 1 - 1966]. (Нагадую, "Луна-9" була 12-тим запуском в рамках програми м'якої посадки.)

вівторок, 9 квітня 2013 р.

Аналіз DATE.COM з PC-DOS 1.00

Колупався я недавно в антикваріаті ("MS/PC DOS 1.0", "MS/PC DOS 1.XX в емуляторах", "MS/PC DOS 1.XX "Ось ти який, північний олень!"", "DOS FCB"). Взагалі, цікаве заняття. :-) В процесі натрапив на людину, яка дизасемблювала та прокоментувала вихідні тексти IBMBIO.COM з PC DOS 1.00: "Reverse-Engineering DOS 1.0 – Part 2: IBMBIO.COM" (як і його бутлоадер: "Reverse-Engineering DOS 1.0 – Part 1: The Boot Sector"). Крім того, дизасемблювання  бутсекторів виявилося потужним засобом, щоб розібратися, чому в емуляторах не вантажаться різні версії ранніх DOS -- довелося і самому трішки спробувати.

Завершивши той цикл постів, на якийсь час заспокоїв свій археологічний свербіж. Виявилося -- не на довго. Повернення відбулося, коли, чистячи відкриті тематичні вклади, майже випадково натрапив на сайт якогось пана (пані?, але жінки, зазвичай, такими дурницями не страждають), що викладав образи своїх старих дискет: "Data Pack Rat". Дуже багато безцінного історичного матеріалу -- старовинні компілятори, оболонки, утиліти і т.д. Толком ще не розгрібав, натраплю на ще що цікаве -- розповім. Але знайомство почалося із майже чуда! У нього знайшлося кілька дискет, 1987-го року, на яких якийсь псих (в хорошому розумінні цього слова!) розповсюджував дизасембльований DOS 1.10 та DOS 2.10. Підписані вони так: 

Don Jindra
Information Modes
P.O. Drawer F.
Denton, Texas  76202
817-387-3339

суботу, 6 квітня 2013 р.

Помилка в ARM CMSIS

(c) valessiobrito, "Open clipart"
Недавно я вже писав про труднощі, які зустрічаються на дорозі безбашенних програмерів, котрі насмілюються використовувати оптимізацію, програмуючи мікроконтролери (хоча, де ж вона може бути більш потрібною, ніж на цих малопотужних пристроях? ;-)

Ввімкнувши її у простому проектику для STM32 (в CoIDE),  теж зіткнувся з проблемами. Компілятор видав наступне:

       [cc] C:\Users\indrekis\AppData\Local\Temp\ccaX3kx8.s:1162: Error: registers may not be the same -- `strexb r0,r0,[r1]'
       [cc] C:\Users\indrekis\AppData\Local\Temp\ccaX3kx8.s:1187: Error: registers may not be the same -- `strexh r0,r0,[r1]'


CoIDE 1.7.1

З часу попередньої статті китайці випустили декілька оновлень свого славного CoIDE. Сказати, стала оболонка кращою чи гіршою, мені складно -- там такий мікс дрібних приємностей і дрібних косяків... :-) Але трішки по іншому стало точно. 

Спробую розповісти, як робота із CoIDE виглядає зараз. Версія, яку розглядав раніше -- 1.5.1, поточна -- 1.7.1. Багато відсилатимуся до попередньої статті -- щоб не повторюватися, хоча дрібні шматки просто цитуватиму. Розглядатимемо на прикладі плати STM32VLDiscovey. Тут, власне, сидить головне розчарування від останніх релізів. Ні підтримки STM32F3 (включаючи STM32F3Discovery), ні підтримки Stellaris (включаючи Stellaris Launchpad), поки так і не з'явилося. В принципі, принаймні STM32F3, можна пробувати додати самому -- див. діалог на форумі, "STM32F3Discovery - Demo Project for CoIDE", але я поки не пробував. Декілька слів буде і про прикручування C++.

[Update від листопаду 2015 року. Частина, присвячена С (Newlib) та С++ runtime містить багато неточностей та помилок. Існує більш детальний та точний варіант: "Стандартна бібліотека C та SemiHosting (на прикладі STM32 і CoIDE)" і "C++ із ARM GCC + STM32 (+ CoIDE)", відповідно. Крім того, див. пост про нову версію CoIDE, 2.0.3 beta: "CoIDE 2".

пʼятницю, 29 березня 2013 р.

Помилка оптимізації GCC-AVR

Зображення взято тут: "The AVR and the Arduino"
Поширеною поміж програмістів, які працюють з контролерами, є думка, що користуватися засобами оптимізації компіляторів небажано -- може призводити до проблем. Не знаю, наскільки ця думка правильна в загальному, але проблеми справді трапляються. Зокрема, тому багато бібліотек для контролерів так і пишуть: "використовувати без оптимізації", або "за ввімкненої оптимізації можливі проблеми". Але й зворотній процес теж існує -- "ми знаємо, що від оптимізації проблеми, значить навіть не пробуватимемо"

вівторок, 5 березня 2013 р.

Curiosity, свердлимо Марс

"First penetration" :-)
Перші отвори, зроблені Curiosity.
(с) NASA/JPL-Caltech/MSSS
Коли ми залишили марсохід попереднього разу, (сол 130+), він готувався до першого випробування "бурової установки", The Powder Acquisition Drill System (PADS, див. тут, і посилання там). З того часу систему випробували, зразки добули і представили бортовим лабораторіям -- SAM i CheMin. Результати можуть бути справді цікавими -- на відміну від відкритого всім агресивним факторам поверхні Марса піску, який аналізували попереднього разу, всередині каменів могли зберегтися сліди більш давніх епох. Включаючи, але не обмежуючись, органіку. В очікуванні цих результатів "доженемо" і нашу історію до поточного моменту. Так як популярність попередніх постів була зовсім незначна, а в Інтернеті є багато інших оперативних джерел інформації, то писатиму (відносно) лаконічно, чисто як пам'ятку собі.

четвер, 28 лютого 2013 р.

DOS FCB

Видалення файла
засобами FCB...
Колись давно-давно, коли я був у десятому класі (але згадати рік не видається можливим, 1995 або 1996, швидше все ж 95), активно цікавився комп'ютерами і дуже хотів розібратися, що ж то за мова така -- асемблер, вдалося мені купити тематичну книжку. Питер Абель, "Ассемблер и программирование для IBM PC", 1992 року російськомовного видання, вона ж, якщо я правильно вгадав, "I. B. M. Personal Computer Assembly Language and Programming" by Peter Abel, 1987.  Що схоже на правду, бо про 4.0 DOS там точно згадується, про новіші -- ні. (1)

Раніше я б назвав цю книжку дуже хорошою. Зараз, маючи можливість порівняти, але не маючи можливості позбутися впливу першого знайомства, стикаюся з певними труднощами у вираженні, що я про неї думаю. Книжка не дуже сильна. Багато що не пояснено або пояснено занадто вузько. Приклади містять багато помилок. Переклад, місцями, жахливий (2). З іншого боку -- вона була першою, дістати аналогічну літературу для мене було практично (3) неможливим, і таки змогла навчити початкам асемблеру, даючи можливість розвиватися далі. Так що я їй вдячний, як би там не було (4).

Здавалося б, до чого тут DOS 1.xx (пост раз, пост два, пост три)? Все просто. Читаючи її, натрапив на розповідь, про те, що ось є такий метод роботи з файлами, за допомогою FCB (File Control Blocks), який крутий, бо є в базовій версії DOS, а значить буде працювати всюди, а є інший, за допомогою "хендлів" (handles, номери файлів), який, відповідно, працюватиме не всюди, лише для DOS 2.0+. Проблема "раз" була в тому, що мені-тодішньому, не особливо досвідченому в асемблері, FCB-метод видався багато складнішим, ніж той другий, з використанням номерів файлів. Тому працював я виключно з останнім, але довго потім мене мучило, що я халявщик -- пішов легкою дорогою. Тут випливає проблема "два" -- не маючи в 15 років особливого досвіду, не маючи доступу до літератури, чи, тим більше, Інтернету (який в Україні вже потроху був, як не дивно, та ще й в моєму теперішньому інституті (5)), навіть не знаючи дати виходу оригінального видання -- 1987, я не зміг усвідомити, що в 1995-96 "базовий" DOS 1.00, як і всі його безпосередні обмеження дааавно неактуальні (6).

Недавно був у мене особливо поганий настрій, вирішив я спробувати ті FCB на смак. Вийшло як завжди -- чотири об'ємних поста...

понеділок, 25 лютого 2013 р.

MS/PC DOS 1.XX "Ось ти який, північний олень!"

Розібравшись, в попередніх постах ("MS/PC DOS 1.0", "MS/PC DOS 1.XX в емуляторах"), із історією народження PC/MS-DOS та навчившись запускати такі старі версії DOS, подивимося нарешті, що ж він собою являв.

Ми вже переконались раніше, що DOS 1.00, а тому, швидше за все, і всі DOS 1.XX для справді IBM PC-сумісних машин, нормально працюють на сучасних машинах (за винятком перевірки сигнатури бут-сектора). Тому, для автентичності, надалі працюватимемо, емулюючи IBM PC 5150, з оригінальним BIOS (включаючи ROM BASIC). Лише, щоб довго не чекати, іноді будемо збільшувати робочу частоту. Використовуватимемо, в основному, SPC/XT (деталі див. попередній пост).

IBM PC-DOS 1.0

неділю, 24 лютого 2013 р.

MS/PC DOS 1.XX в емуляторах

Теж емуляція ;-)
На завершення попереднього поста я згадував, що побачити DOS 1.xx в емуляторах не так просто. Щоб зрозуміти, чому, розглянемо як відбувається завантаження операційної системи (ОС) в IBM PC-сумісних комп'ютерах. 

суботу, 23 лютого 2013 р.

MS/PC DOS 1.0


IBM PC з PC-DOS 1.1.
Той самий, модель 5150.
(c) www.vintage-computer.com
Натрапив я недавно ще на одну штуку зі свого дитинства. Вирішив написати про неї, в процесі стало зрозуміло, що контекст буде незрозумілим.  Довелося почати з історичної довідки.

Забігаючи наперед, мушу попередити: цей пост не претендує на повноту, він не є повноцінним історичним дослідженням -- матеріалу по темі багато, значна частина відповідних історичних персон ще жива, а то й активна, колупатися є в чому. Це просто розповідь про давні-давні часи. (Хоча я і намагався перевіряти наведені факти.) При чому, розповідь із безліччю виносок -- не так просто із тісної, щільної, павутини, висмикнути кілька ниток так, щоб без хвостиків. Взагалі, ті виноски теж варто читати. :-)

Історія


Отож. Йшов 1980 рік. Я ще тільки збирався народитися, а компанія IBM готувала свій черговий (на той момент - таємний!)  проект -- новий персональний комп'ютер. (Див. додаток 1!). В його ROM було прошито BASIC від Microsoft -- IBM, очевидно, вже мала певний досвід співпраці з цією фірмою. BASIC міг служити в ролі примітивної операційної системи, зокрема, вмів завантажувати програми з касет. Однак, цього було мало -- потрібна була справжня операційна система (ОС). Планувалося залучити CP/M-86, версію популярної тоді 8-бітної ОС, CP/M, для 16-бітного 8088/8086 процесора. Однак, розробник та власник CP/M, Gary Kildall, щось кумизився (1), а час підтискав, тому, після переговорів, Мікрософт взялася надати і ОС.

суботу, 26 січня 2013 р.

Guest post - геоморфологічна казочка

Ще одна казочка, від іншої дівчини, на цей раз -- студентки. Відповідно, рівень та складність викладу -- вищі, казочка -- далеко не для всіх. Але повчальна!

середу, 23 січня 2013 р.

Прощання з 2012-м

Дивився перед Новим роком я на свій RSS (через який читаю блоги), і вкотре зауважую традицію підводити підсумки року -- хто по життю, хто по блогу. :-) Вирішив і собі спробувати. На жаль, чисельні технічні проблеми відклали написання не тільки після НР, але й після Старого НР, але зовсім викинути все ж шкода. :-)

четвер, 10 січня 2013 р.

Казочка про гідру -- Guest post

На жаль, під Новий Рік вся моя техніка почала на мене ображатися. Добре, що хоч не вся одночасно, даючи можливість частково компенсувати. Однак поповнення затримуються. Навіть прощання з минулим роком застрягло. :-)

В той же час, один мій товариш, дівчинка, яка зараз готується до ЗНО, зокрема -- вивчаючи біологію, за мотивами безсонної ночі, написала невеличку казочку. Вирішив поділитися нею: