Розробка цього пристрою була викликана бажанням читати книги в електронному вигляді не тільки вдома, за допомогою настільного комп’ютера, але і в інших місцях – там же, де можна прочитати і звичайну паперову книгу.
Пристрій призначений для прочитання текстової інформації, записаної по COM-порту під flash-пам’ять AT49F040, на алфавітно-цифровому індикаторі з контролером HD44780 фірми Hitachi і русифікованим знакогенератора. Розмір пам’яті 1 Мбайт, всього можливо записати 8 книг, з можливістю залишити закладку на кожну книгу. Також передбачена можливість “гортання” книги – на випадок, якщо закладка не була покладена, а живлення пристрою було відключено. Вибір функцій та читання відбувається по натисненню трьох клавіш: вибір, вгору і вниз. Розмір дисплея 40х2 строчки, що, як показала практика, цілком достатньо для сприйняття сенсу написаного.
Схема пристрою наведена на малюнку. Клацніть на ньому мишею для того, щоб подивитися схему в повному розмірі. “Серцем” пристрою є мікроконтроллер AT90S8515, керуючий шинами адреси-даних, приймає команди від комп’ютера і виводить на індикатор. Для замикання молодших 8 біт адреси служить регістр КР1533ІР33 (аналог 74ALS573). Для перетворення рівнів RS-232C служить також добре відома мікросхема ADM202 фірми Analog Devices.
Незв’язане з комп’ютером пристрій може тільки зчитувати записану в нього книгу. Для стирання пам’яті або запису в неї треба вибрати пункт меню: “Зв’язок з ЕОМ”, безпосередньо потім послати або число 0x5e, або 0xe5. У першому випадку устройсвах перейде в командний режим, у другому – в налагоджувальний, коли приймається від комп’ютера символ буде просто відображатися на екрані.
Команди, що подаються на пристрій, такі:
10 – стерти першу МС пам’яті,
20 – стерти друге МС пам’яті,
30 – записати в пам’ять дані,
40 – вважати з пам’яті починаючи з поточного адреси,
50 – виставити поточний адресу.
Останні дві команди є також налагоджувальної і не використовуються в звичайному нормальному функціонуванні пристрою. Перші дві не вимагають ніяких подальших дій крім очікування повідомлення на екрані пристрої, що пам’ять стерта. Команда запису в пам’ять зажадає спочатку ввести заголовок даної книги (тобто автора і назву, це потрібно для подальшої ідентифікації тексту при використанні пристрою), завершивши його посилкою символу 0x07, а потім передати масив тексту. Після закінчення циклу запису символу в пам’ять пристрій підтверджує прийом, посилаючи цей же символ в комп’ютер, що дозволяє контролювати швидкість передачі даних, і не втратити дані при записі. Передача тексту також фінішує посилкою коду 0x07. Цей код був обраний тому, що є керуючим і позначає дзвінок, писк на динаміці комп’ютера (bell), тобто принципово не може зустрітися в текстових файлах.
Тут знаходиться файл resource.zip, в якому знаходяться наступні файли:
reader.asm
rus.inc
reader.hex
reader.cpp
reader.exe
reader.ini
Перший файл, reader.asm, містить власне код для AT90S8515, наступний файл містить еквіваленти російських букв (AVR Studio традиційно некоректно працює з неанглійський символами, причому проблема ця чудово відома програмістам Atmel), reader.hex – відкомпільований код, прошивка того, що вийшло. Далі міститься приклад програми для комп’ютера, написаної на мові Сі під DOS, що дозволяє записувати текстові файли – reader.cpp. reader.exe – це відповідно відкомпільований reader.cpp, а reader.ini – файл налаштувань для програми. Налаштувань, власне, дві: це на який порт підключено пристрій (у прикладі підтримуються тільки COM1 і COM2, втім, легко додати в исходник програми і інші порти) та кодування записуваного тексту (WIN або DOS). Сам пристрій відображає текст, який записаний в нього тільки в кодуванні WIN, але оскільки дуже багато текстів в Інтернеті, що дісталися в спадок ще від FIDO, мають кодування DOS, то програма дозволяє перекодувати при записі, на льоту, звільняючи користувача від цієї попередньої процедури. Також програма відфільтровує “зайві” прогалини, що вийшли при форматуванні тексту, прибирає переноси, залишаючи нетонутимі дефіси і тире перед фразами мови. Для програми при запуску існують два возожних параметра – або “reader.exe e”, що означає стирання пам’яті, або “reader.exe w <