Retrocomputing | Комп'ютерна інженерія |
---|
Чергове збочене використання С++
Прикол
Люблю С++, використовую її цілу вічність, викладаю тривалий час. Звичайно, усвідомлюю недоліки – як то кажуть, “ти змушуєш мою голову битися частіше”, періодами за це ненавиджу. Але, все ж, значна частина складнощів – не через саму мову. Свій вклад дає давня історія, багаж зворотної сумісності і безлічі застарілих практик1. Однак, підозрюю, вагому роль відіграє також щось схоже на переляк – внаслідок заплутаності через складність мови і безлічі правил.
Наштовхнув мене на цю думку код, який трапився в дипломній роботі мого студента – дуже потужного.
-
Останніх особливо важко позбутися – через безліч згадок в Інтернеті, відсутність потреби оновлювати свої знання в багатьох досвідчених розробників, та й через згадану зворотну сумісність. ↩
Комп’ютерна інженерія
Вітаю у розділі узагальнено кажучи, комп’ютерної інженерії. Створюється, в основному, за матеріалами мого викладання на Факультеті прикладних наук УКУ та роботи із кластером ІФКС.
- C++
- Основи – “Принципи організації комп’ютера”
- Високопродуктивні обчислення та “Архітектура комп’ютерних систем”
- Операційні системи
- Embedded
- Інше
C++
Методичні матеріали
- Книги по C++ – загальні міркування, 2013
- Деякі “загрози” вже потроху відходять в минуле, але текст все ще актуальний.
- Книги по C++ – список літератури, 2018 – найновіший, на цей час, але потребує оновлення. Нижче – стара версія цього списку.
- Онлайн інструменти для С++, 2020
- Навіщо розуміти комп’ютер, якщо сучасні мови та їх бібліотеки такі потужні? – все почалося із максимально збоченого способу перевірити значення біта, яке побачив в коді студентів. Приклад використання онлайн-інструментів С++.
Статті
- C/C++, стандарти, компілятори, оптимізація…, 2013 – дещо наївний текст про те, що знакове переповнення – невизначена поведінка.
- Містить опис різних кодувань від’ємних чисел.
- Мікро-оптимізація, 2015 – есей про оптимізації обчислювальної програми, доволі наївний. Треба буде перевірити, але маю надію, що зараз компілятори краще справляються.
- Чергове збочене використання С++, 2023.
Бібліотеки
Основи – “Принципи організації комп’ютера”
- Література до принципів організації комп’ютера – книги, 2017
- Огляд floating point – комп’ютерних чисел з рухомою крапкою
Високопродуктивні обчислення та “Архітектура комп’ютерних систем”
Методичні матеріали
- Вимірювання часу роботи коду, 2017
- Уроки захищеного режиму x86. Весь цикл разом
- Планую перенести код на git, а текст сюди, додати як 64-бітний захищений режим, так і 16-бітний, можливо – засоби підтримки віртуалізації.
Застарілі тексти
Операційні системи
Файлові системи
Дещо застаріла серія статей про Lustre (2011)
- Огляд Lustre, кластерної файлової системи
- Інсталяція Lustre 2.0
- Іграшкова Lustre
- Перевірка ФС Lustre на цілісність
- Квоти в Lustre
- Зміна NID серверів Lustre
- Не такі часті питання з приводу Lustre
- Міграція OSS в Lustre
Embedded
Методичні матеріали
- GPIO мікроконтролерів STM32F303 з використанням HAL, 2016 – методичні рекомендації до виконання лабораторних.
- Планую переписати на цьому хостингу, модульно – для спрощення використання та оновлення.
- Зовсім просто про semihosting, 2017
- SemiHosting без дебаггера, 2017
- Досьє на плати сімейства STM32 Discovery, 2017
- STM Studio – монітор змінних STM32
- Зовсім просто про Virtual COM Port поверх USB плати STM32F3Discovery – методичні рекомендації до використання USB під час лабораторних.
- Дисплей Nokia 5110 на контролері PCD8544 - огляд – дуже простий дисплей, який використовуємо із студентами.
- Дисплей Nokia 5110 на контролері PCD8544 - бібліотека для STM32 – бібліотека вульгарна та дуже проста, давно планую оновити…
- Гігрометри DHT11 і DHT22
Далекомір HC-SR04
- Далекомір HC-SR04 – зміст
- Далекомір HC-SR04 – огляд.
- Далекомір HC-SR04 – використовуючи GPIO/CMSIS
- Далекомір HC-SR04 – використовуючи GPIO/SPL
- Далекомір HC-SR04 – використовуючи GPIO/CoX
- Далекомір HC-SR04 – використовуючи GPIO/HAL/STM32CubeMX
- Далекомір HC-SR04 – GPIO/C++
- Далекомір HC-SR04 – GPIO/висновки
- Далекомір HC-SR04 – два таймери/CMSIS
- Далекомір HC-SR04 – два таймери/HAL
- Далекомір HC-SR04 – один таймер/CMSIS
- Далекомір HC-SR04 – один таймер/HAL
- Далекомір HC-SR04 – зовнішні переривання EXTI/CMSIS
- Далекомір HC-SR04 – зовнішні переривання EXTI/HAL
- ”Зовсім просто про далекомір HC-SR04 із GPIO/HAL”
Таймери STM32
-2. Відлік часу без таймерів -1. Мікросекундні затримки та відлік мікросекунд для STM32
- Таймер SysTick
- Таймери STM32 – огляд
- Таймери STM32 – відлік часу/CMSIS
- Таймери STM32 – відлік часу/HAL
- Таймери STM32 – ШІМ/CMSIS
Розповідається, що таке ШІМ, і як попросити таймер генерувати його на одному із своїх каналів. Розгляд відбувається на класичному прикладі керування яскравістю світлодіода. - Таймери STM32 – ШІМ/HAL
- Таймери STM32 – зовнішнє тактування/CMSIS
- Таймери STM32 – зовнішнє тактування/HAL
- Таймери STM32 – внутрішні тригери/CMSIS
- Таймери STM32 – внутрішні тригери/HAL
Те ж, засобами HAL. Розглянуто, як HAL керує налаштуванням генерацією TRGO (функція HAL_TIMEx_MasterConfigSynchronization()) та внутрішнім тактуванням (HAL_TIM_SlaveConfigSynchronization()) - Таймери STM32 – автоматична зупинка/CMSIS
- Таймери STM32 – автоматична зупинка/HAL
- Таймери STM32 – захоплення вводу/CMSIS
- Таймери STM32 – захоплення вводу/HAL
- Таймери STM32 – захоплення ШІМ/CMSIS
- Таймери STM32 – захоплення ШІМ/HAL
- Таймери STM32 – одноімпульсний режим/CMSIS
- Таймери STM32 – одноімпульсний режим/HAL
- Таймери STM32 – remapping/CMSIS
- Таймери STM32 – порівняння розмірів коду для CMSIS i HAL
Статті
- Помилка оптимізації GCC-AVR, 29 березня 2013 р.
- Надіюся, зараз такого менше.
- Стандартна бібліотека C та SemiHosting (на прикладі STM32 і CoIDE), 2015,
- C++ із ARM GCC + STM32 (+ CoIDE),2015
- Планую повторити таке дослідження стану справ для сучасних компіляторів та пакетів програм, але в цілому – ситуація із підтримкою С++ якісно покращилася, більшість таких “костилів” більше не потрібні. Однак, стаття може бути корисною, щоб краще зрозуміти затрати на різні засоби С++.
- libcxxrt в ролі libsupc++ – бібліотеки підтримки мовних засобів часу виконання, 2015 – доповнення до попередньої статті, спроба економніше обробляти виключення. Тоді я так і не розібрався, зараз шанси більші, але поки не варту необхідних витрат часу і сил.
- Мікро-реалізація стандартної бібліотеки C++ – uClibc++, 2015 – доволі дискусійна бібліотека, та й суттєво краще з 2015 до 2022 року не стало, а останній комміт – 2020-06-04.
- Огляд STM32 (ARM Cortex-M від STMicroelectronics), 15 жовтня 2012 р. – трохи застарілий і трохи наївний текст.
- Помилка в ARM CMSIS, 6 квітня 2013 р.
I2C EEPROM – 24CXX
Перша моя серія статей про Embedded – виконувалося із дуже обмеженим доступом до обладнання і взагалі без попередніх знань. Можливо, колись оновлю.
- Робота з EEPROM пам’яттю 24CXX – огляд – зокрема, огляд I2C.
- Робота з EEPROM пам’яттю 24CXX – Arduino Wire
- Робота з EEPROM пам’яттю 24CXX – Software, Arduino
- Робота з EEPROM пам’яттю 24CXX – Soft, AVR8
Застарілі тексти
Залишаю їх для колекції та для довідки:
- Arduino – огляд посилань, 6 квітня 2012 р.
- CooCox CoIDE, 2012 – непогане IDE було на свій час.
Інше
Продовження...Сучасні плати для IBM PC/XT
Виявилося,нові плати оновлення та інше обладнання для ретрокомп’ютерів, розробляють та продають досі. При тому, IBM PC, певне, навіть не найпопулярніша платформа.
Коротко розповім про деякі плати, які або вже використовую, або хотів би мати – не намагаючись досягнути повноти. Власне, це було б важко – список лише на Tindie справляє враження.
Продовження...AST Rampage
Огляд
Один із моїх улюблених костилів епохи IBM PC – EMS. Причому, її емуляція на 286+ – не так цікаво, хочеться для справжнього 8086/88-комп’ютера – IBM-XT-подібного. Плат із такою пам’яттю було помітно більше, ніж “Дивних плат оновлення”, тому придбати їх на ebay реально, хоча й вимагало певної терплячості, поки з’являється лоти із прийнятними цінами.
![]() |
---|
Моя AST Rampage. На фото – 256 Кб RAM. На жаль, роз’єм для Daughter board не розпаяний. |
Дивні плати оновлення із 1980-х
“DOS: Beyond 640K”
Останні роки, замість художньої літератури, часто читаю старі комп’ютерні книжки. Про деякі вже писав, про інші ще планую. Поміж них трапилася “DOS: Beyond 640K” by James S. Forney, 2nd ed., 1992 року. Читати її було жахливо. Автор знову і знову повторював одне і те ж, трішки різними словами, а коли дістало так, що написав комусь поскаржитися, на наступній сторінці автор буквально сказав: “Повторю ще раз” і скопіював попередній абзац. Навіщо ж я її читав? Це хороший спосіб зануритися в атмосферу тодішніх “персоналок” – часто дуже відмінну від сучасного світу.
Поміж іншого, там були описані плати оновлення (upgrade) для тогочасних комп’ютерів. І карти ті були настільки, для наших часів, незвичні, що я вирішив про них написати.
Продовження...COBOL під CP/M на Osborne Executive
- Огляд
- Microsoft COBOL
- Micro Focus COBOL
- Nevada COBOL
- Підсумок
- Додаток – образи дисків, використані в цьому пості
- Виноски
Огляд
COBOL – мова дуже давня, але асоціюється з великими машинами, тому для мене було великим сюрпризом зустріти її для CP/M і комп’ютерів класу Osborne.
Продовження...Дебагери для CP/M та Osborne Executive
Короткий огляд дебагерів, з якими зіткнувся, поки експериментував із асемблерами – не прагнучи до повноти.
Продовження...Інструменти програмування на асемблері для CP/M та Osborne Executive
- Огляд
- CP/M Macro Assembler
- CP/M Assembler
- CP/M Relocatable Macro Assembler
- Microsoft M80
- SLR Systems Z80ASM
- 2500 A.D. SOFTWARE ASM
- MITEK Relocating Macro Assembler
- ZSM / Z80ASMUK
- Підсумок
- Додаток – образи дисків, використані в цьому пості
- Додаток – порівняння мнемонік Z80 та i8080
- Виноски
Огляд
CP/M існує для кількох сімейств процесорів. Поміж восьмибітових це Z80, i8080 та i8085. Для випробувань асемблерів використовую два варіанти – чисто для i8080 і з мнемоніками Z80. Різниця між їх системами команд та мнемоніками описана, наприклад, в: “8080A/Z80 compatibility”.
Приклад, на якому буду випробовувати – тривіальний ‘‘Hello, world’’, який виводить текст за допомогою славнозвісний1 системний виклик 9 – ‘‘Output string’’, код якого передається регістром C, адреса стрічки в DE, а стрічка має закінчуватися символом ‘$’.
-
'’Ask Bill [Gates] why the string in [MS-DOS] function 9 is terminated by a dollar sign. Ask him, because he can’t answer. Only I know that.’’, цитуючи за “Bill Gates: Of Mind and Money”, “Seattle Post-Intelligencer” Newspaper, May 8, 1991. Цей системний виклик з 1970-х, відтворений DOS 1.00 в 1981, все ще вивчали в деяких провідних ВИШах не пізніше 2020-го… ↩
Текстовий редактор te
- te
- Портування te під Osborne Executive
- Портування te під Osborne 1
- Компілювання te
- Особливості te
- Виноски
te
Важливий інструмент для ‘‘реконструкторських’’ експериментів – текстовий редактор. Працювати з ED.COM я поки не готовий. Хоча редагувати файли із кодом можна в WordStar – кажуть, у свій час його для того і використовували, мені не дуже сподобалося – він громіздкий. Пошуки виявили сучасну альтернативу – текстовий редактор te для CP/M, від MiguelVis – великого ентузіаста CP/M.
Продовження...Посилання стосовно CP/M
Поки менш-більш хаотично – оскільки не раз доводилося їх знову і знову шукати, але колись може впорядкую.
Продовження...