POSE: эмулятор Palm
Страница 1 2
3 4 5 6
1998 год
Февраль
В версии CoPilot 2.0d1 (внутренняя версия, никогда не была опубликована)
разработчики Palm Computing реализовали базовые средства для работы
Palm OS 3.0 возможность работать с заголовком блока памяти
в стиле PalmOS 3.0, добавлена обработка некоторых регистров ЦП DragonBall,
реализована работа с динамической памятью, емкостью до 128 Кбайт,
возможность отображения градаций серого. Исходные тексты разных
версий CoPilot (для Windows и Macintosh) были объединены, переработана
подсистема ЦП (обновлена на базе свежих исходных текстов UAE). Реализована
возможность загрузки файлов, размером более 64 Кбайт. Palm Computing
удалила отладчик CoPilot, была изменена подсистема эмуляции подсветки
(полноценная эмуляция работы кнопки включения), появилась функция
копирования экрана, «Гремлины» (генераторы псевдослучайных
событий, крайне мощное средство для отладки, впервые появившееся
в Pilot Simulator; их можно было «натравить» и на «всю»
ОС и на конкретную программу, эмулятор создавал журнал работы «Гремлина»).
Эмулятор автоматически настраивал дату в Palm OS при запуске и калибровал
экран (окна настройки дигитайзера при запуске теперь не возникало),
ускорены подсистема обработки прерываний и некоторые наиболее часто
используемые функции (10--15%), сделано несколько общих исправлений
в меню и диалогах эмулятора. Версия для Macintosh была переделана
в так называемый «толстый дистрибутив» (версии исполнимых
файлов программы для ЦП Motorola и PowerPC, которые использовались
тогда в Macintosh).
20 февраля
Паньютат Тиджейсин (Panutat Tejasen, более известный пользователям
Windows CE как Jimmy, создатель программы Landscape и многих игр)
опубликовал бета-версию CoPilot для Windows CE PilotCE beta
1.0 (ныне программа не развивается). Работал PilotCE исключительно
медленно («чтобы работать с той же скоростью, что и реальная
машина, вам потребуется в десять раз более мощный HPC, нежели сейчас
существуют»), для запуска требовался HPC с Windows CE 2.0,
8 Мбайт ОЗУ (и файл с ПЗУ PalmOS). Программа распространялась свободно,
можно найти до сих пор в Интернет.
28 апреля
Опубликован X-Copilot 0.5. В основном мелкие косметические изменения
например, по умолчанию, файлы записывались и считывались
в ~/.xcopilot (пути можно было задавать в переменных окружения).
4 марта
Очередная внутренняя версия CoPilot 2.0d2. Решены проблемы
с переключением в «увеличенный» режим при работе на
Macintosh, сбоями при загрузке программ, версия для Macintosh была
ускорена (на 20%), как и эмулятор в целом (в редакции для Windows
прироста скорости был более скромным). Кроме того, появились зачатки
средств для подключения отладчика и улучшена подсистема «Гремлинов»
(и для Macintosh и для Windows).
30 марта
В CoPilot 2.0d3 произошло весьма много изменений, как косметических
(изменение системы наименований функций и переменных, оформления
заголовков файлов, удаления терминов, связанных с маркой Pilot и
добавления строк с указанием на авторские права Palm Computing)
до системных. Появились средства контроля доступа к памяти и занесения
в журнал информацию о ошибках доступа (при надобности, запись в
журнал можно было отключить), были реализованы функции, которые
позволяли эмулятору работать с всей памятью PalmOS, что позволило,
например, задавать точки прерывания в ПЗУ, не нарушая работоспособности
PalmOS и программы (функции были доступны только эмулятору). Исходные
тексты были «причесаны», некоторые функции ускорены.
Была переработана метода перехвата функций PalmOS (вместо подмены
прерывания подменяется адрес возврата из функции), оптимизирована
работа с некоторыми функциям (например, SysSleep), снова «приглажены»
исходные тексты (платформно-зависимые компоненты перенесены в отдельные
файлы, переработаны шаблоны Си++), появились внутренние функции
для записи информации в журнал, ускорены подсистемы эмуляции ОЗУ
и ЦП, изменена схема работы с ОЗУ на платформах x86.
Исправлены некоторые ошибки при работе с отладчиком (подсистема
отладки реализована на базе сокетов, подобных тому, как работал
SerialLinkMgr, некорректное позиционирование счетчика команд при
отладке, реализована возможность подключения внешнего отладчика
в среде Windows). Решена проблема в подсистеме эмуляции ОЗУ (ОС
пыталась выделить большой кусок памяти и использовать его без проверки
на успешность операции проявлялось как бесконечный цикл при
работе в версии для Macintosh, когда пользователь работал с 4-Мбайт
ОЗУ).
Была переработана программа ROM Transfer (позволяла загружать ПЗУ
Palm III), в версии для Macintosh была переработана функция загрузки,
а в версии POSE для Windows она появилась. Если при запуске POSE
для Windows файл с ПЗУ не был найден, от выдавался ныне известный
каждому пользователю POSE запрос «найти или скопировать ПЗУ»,
если при запуске была нажата клавиша CapsLock, выдавался запрос
на поиск файла с ПЗУ.
Пункты Backlight и «Enter debugger on startup» исчезли
из версии для Windows, была решена проблема с обработкой кликов
мыши (иногда не работали как касания пера при использовании PalmOS
1.0, как таковая, ошибка не была найдена, однако удалось ее обойти),
ОЗУ теперь сохранялось в файл, с именем, совпадающим с именем файла
ПЗУ, но с цифрами емкости ОЗУ и расширением .ram ([имя файла ПЗУ].[емкость
ОЗУ].ram) практически так же, как и в CoPilot (эта особенность
была удалена при работе над объединением исходных текстов), переработан
формат файла ОЗУ. В редакции для Macintosh, функция работала так
же как и в CoPilot, однако, формат файла был тем же, что и в POSE
для Windows.
Появился новый «корпус» (картинка, обрамляющая экран
виртуального Palm). CoPilot опубликован под названием PalmOS Emulator
(POSE).
9 апреля
POSE 2.0d4 исправлена проблема с обработкой таймера при отладке,
снова был изменен метод перехвата функций PalmOS (предыдущий метод
с перехватом адресов возврата был прост и эффективен, однако, некоторым
функциям был необходим адрес в стеке, посему пришлось использовать
менее изящный, но более надежный метод). Появились зачатки профилировщика
(пока неработоспособные ;-), корректно обрабатывается ситуация с
появлением в очереди ввода событий при отключенном процессоре (например,
когда эмулятор находится в состоянии отладки) и вообще, улучшена
работа с отладчиками, решены некоторые проблемы, связанные с обработкой
исключительных ситуаций, синхронизацией процессов и «Гремлинов»,
переработан низкоуровневый механизм подключения отладчика и продолжения
работы при исключительных ситуациях. Появилась возможность работать
с отладочным ПЗУ Palm OS 2.0.2 (некоторые изменения для работы с
ЦП 68681 и изменение расположения некоторых переменных), решена
небольшая проблема с загрузкой файлов ROM *.* (эмулятор пытался
загрузить программу ROM Transfer.prc, если не находил других файлов),
сохранением файлов ОЗУ и ПЗУ, переработан механизм работы «Гремлинов»,
реализована возможность отслеживать попытки программ записывать
что-либо в область системной памяти PalmOS, системные глобальные
переменные, видеопамять и регистры ЦП.
17 апреля
В POSE 2.0d5 были реализованы средства для проверки корректности
ПЗУ (контрольная сумма) и настройки эмулятора для разных версий
PalmOS, переработана последовательного порта, разработан метод,
который позволял программам обращаться из среды PalmOS к функциями
эмулятора, реализовано несколько незначительных изменений (например,
появилась возможность использовать маску файлов *.* и решена проблема
компиляции в среде Macintosh при использовании пакета CWP R2 с CW4POS
R4), отключен расчет контрольной суммы для ПЗУ с Palm OS 1.x и 2.x.
22 апреля
POSE 2.0d6 представлял собой сравнительно небольшое обновление.
Появилась возможность подключать библиотеки отладки из пакета CodeWarrior,
переработана подсистема HotSync в среде Macintosh, решены проблемы
с копированием ПЗУ с Palm OS 3.0 с помощью утилиты ROM Transfer.prc
и управлением памятью (в редакции для Macintosh).
27 апреля
В POSE 2.0d7 переработана подсистема «Гремлинов»: корректнее
работают с окнами без «прикладных» объектов (вместо
передачи событий элементам управления, «Гремлины»
примерно 10% времени работы генерируют псевдослучайные клики по
экрану), отключаются в случае перезагрузки или аварийного завершения
программы. Ограничен размер файла журнала, появилась кнопка «Отладка»
в диалоге предупреждения о неправильном обращении к памяти (при
нажатии, пользователь мог переключиться в отладчик), решена проблема
с появлением диалога о попытке работы с глобальными переменными,
когда пользователь загружал программу с помощью отладчика MWDebug.
30 апреля
Версия X-CoPilot 0.5.1 возможность задавать имя файла с ОЗУ
из командной строки.
2 мая
X-CoPilot 0.5.2, мелкие исправления в файле make.
5 мая
В исходных текстах X-CoPilot 0.6 появились средства, которые упрощали
перенос программы в разные версии UNIX (включая 64-разрядные) при
использовании «родных» компиляторов Digital Unix, Irix
и Solaris.
6 мая
X-CoPilot 0.6.1. Версия оказалась весьма основательным обновлением.
В ней были исправлены многие ошибки (например, некорректное отображение
видеорежимов 2 бита/пикс., когда эмулятор был «увеличен»
и сервер X-Window работал в режиме 16 тыс. цветов, несколько проблем,
связанных с компиляцией для разных платформ), поскольку видеоподсистема
была вообще основательно переработана и оптимизирована например,
можно было задавать разные размеры коэффициенты «увеличения».
13 мая
В POSE 2.0d9 переработка функций DbgBreak, возможность работать
с эмулятором после не фатальной ошибки, поправлена подсистема расчета
контрольной суммы для PalmOS 3.0 (в предыдущей версии ее случайно
деактивировали), исправлена проблема с диалогом Download/Browse/Quit,
команда Gremlin/New... при работающем «Гремлине» позволяла
переключиться на другого и несколько косметических изменений.
22 мая
POSE 2.0b1. Реализованы функции работы предупреждениями, режим «бессонной»
работы эмулятора (режим «засыпания», активированный
в панели управления работал до первой перезагрузки POSE), решено
несколько проблем, связанных с отладчиком MWDebug, возможность «перезаписывать»,
программу, уже существующие в ПЗУ, занося их в ОЗУ. Версия не было
опубликована, оставалась внутренним релизом.
«POSE 2.0d5 был выпущен 4/17/1998 (в _OldNews.txt, это введено
как 4/??/98). Также, версия 2.0b1 появилась между 5/20/98 и 5/25/98,
но она никогда не была опубликована. Я бы предположил, что она появилась
5/22/98, поскольку новые версии POSE выпускались тогда раз в неделю,
по пятницам. Кстати, на Web POSE начал публиковаться регулярно,
начиная с версии 2.0d4 (4/9/98)». Кейт Роллин.
25 мая
POSE 2.0b2. Исправлены ошибки с работой панели управления, доступом
к памяти, отладкой исключений и взаимодействием с отладчиком (только
Windows), извлечением номеров версий программ.
27 мая
POSE 2.0d8 были изъяты средства, которые обеспечивали совместимость
с отладочным ПЗУ Palm OS 2.0 (ибо надобности в них не было), «Гремлины»
научились работать с программами, которые реагировали на ввод в
разных регистрах и проч., в диалогах SysFatalAlert и ErrDisplayFileLineMsg
эмулятора появились кнопки Debug и Reset (эмулятор предполагал,
что отладчик подключен к последовательному порту), диалоги, связанные
с ошибками при работе «Гремлинов» стали более информативны
(например, «SubHunt 2.0 аварийно завершилась при тестировании
с помощью Гремлина на 20,000 событии, SubHunt.c:
Line 100: Score too good»). Применялся новый метод для
создания списка программ в диалоге запуска «Гремлинов»,
уменьшено количество случайных клавиатурных касаний «Гремлинов»
(вероятность появления такого события была сведена с 10% до 2%).
Была изменена метода преобразования номера системной функции в индекс
в таблице функций и работы с системными функциями ПЗУ, решено несколько
проблем при связи отладчика и эмулятора (в Windows), отслеживалось
несколько нетривиальных возможностей записи в «ПЗУ»
эмулятора, появилась диагностика при загрузке программ в ПЗУ.
2 июня
POSE 2.0b3. В диалоге «О программе» (About) появились
ссылки на Web-узлы разработчиков CoPilot и POSE, переработаны подпрограммы
работы с последовательным портом на базе исходных текстов Грега
Хьюджилла, решены небольшие проблемы с некорректной информации их
стека при работе «Гремлина», совместимости с PalmOS
2.0 (эмулятор пытался вызвать функцию, которая появилась только
в PalmOS 2.0), реализована команда atb отладчика PalmDebugger, увеличено
количество «недавно загруженных» программ в диалоге
загрузки программ POSE для Windows.
26 июня
X-CoPilot 0.6.2 реализованы средства работы с PalmOS 3.0
и изменена подсистема работы с палитрой.
22 июня
POSE 2.1d1. Переработана подсистема эмуляции ЦП на базе обновленных
исходных текстов UAE, переработаны исходные тексты для совместимости
с CodeWarrior Pro, из редакции для Macintosh были POSE для ЦП серии
68K (дистрибутивный пакет стал «тонком»), отныне POSE
работает только на PowerMacintosh. Переработана структура меню,
введено понятие файла-образа ПЗУ или ОЗУ как «документа»,
а не как «ПЗУ» или «ОЗУ», множество внутренних
изменений (небольшие оптимизации, перемещение строк в отдельные
файлы, выборка названий системных функций, которые ранее были размещены
в файле StringData.cpp из ПЗУ). POSE стал совместим с ЦП Dragonball-EZ,
обновлены меню Preferences/Properties, диалоги параметров отладки
и проч., переработан диалог запуска POSE для Windows, исправлено
несколько ошибок, в редакцию для Macintosh была добавлена возможность
задавать белый фон экрана.
26 июня
X-CoPilot 0.6.3 позволял полноценно работать с PalmOS 3.0
отлаживать программы (с помощью gdb), загружать программы, реализована
возможность работать в 2-Мбайт ОЗУ. Кроме того, появился параметр
memversion командной строки, который позволяла настроить эмулятор
на особенности работы с памятью в разных версиях PalmOS (1
для PalmOS 1.x и 2.x, 2 для 3.x).
2 июля
POSE 2.1d2, переработана процедура загрузки файлов ПЗУ и ОЗУ при
запуске эмулятора, исчезли файлы с расширением .ram и эмулятор больше
не позволял работать с файлами ОЗУ от предыдущих редакций
в них не было некоторой информации, которая была необходима POSE
(имя файла ПЗУ, тип устройства и проч.). Исчезли они, чтобы избежать
коллизий с файлами RealAudio, при этом расширение для файлов POSE
изменилось на .psf, Palm Session File) и несколько косметических
изменений.
7 июля
POSE 2.1d3 индикатор прогресса при загрузке файлов .prc и
.pdb, «перетаскивание», диалог закрытия предыдущего
сеанса, перед началом нового, переработан механизм «фильтрации
файлов» в диалогах Macintosh. В таблицу контрольных сумм добавлена
контрольная сумма ПЗУ для ЦП серии EZ, решены проблемы с расчетом
контрольной суммы, использованием отладчика для работы с областью
памяти ПЗУ, исправлена проблема искажения текущего файла ПЗУ при
переключении с одного на другой (существовала давно, проявлялась
только на Macintosh), размер памяти по умолчанию задан в 1 Мбайт,
переработана подсистема распределения памяти (при работе на Macintosh).
19 июля
X-CoPilot 0.6.4. Несколько косметических изменений и исправлено
несколько малозаметных проблем.
20 июля
POSE 2.1d4. Изменена структура меню и некоторые подсистемы, несколько
косметических правок в редакции POSE для Macintosh, решены некоторые
проблемы с сохранением и загрузкой файлов POSE. Функции работы с
файлами перенесены в классы FileReference (ссылка на неоткрытый
файл) и FileHandle (ссылка на открытый файл), для улучшения переносимости,
переработана подсистема обработки исключений, функция загрузки ПЗУ
(в ПЗУ PalmOS всегда есть BigROM и SmallROM, файл с ПЗУ всегда содержит
первое и не всегда второе, предыдущая версия программы загрузки
ПЗУ загружала весь файл и только тогда определяла наличие SmallROM,
новая считывала из файла информацию о наличии SmallROM и
загружала файл полностью только если это было необходимо). Кроме
того, в файлы перенесены практически все текстовые строки. Появились
средства для перехвата функций ввода-вывода.
21 июля
Версия POSE 2.1d5. В редакции для Macintosh появилась возможность
«профилирования» программ, исправлены (на обеих платформах)
проблемы предыдущей версии при загрузке ПЗУ полностью (и SmallROM
и BigROM), решена проблема загрузки БД, у которых в блоке информации
о файле нет записей (но имеется этот блок).
23 июля
POSE 2.1d6. Переработан механизм эмуляции функций общения с ОС на
ПК, где работает POSE (вместо использования прерывания инструкции
Trap $E применяется прерывание «системного Гремлина»),
увеличено количество функций общения с «материнской»
ОС, заданы некоторые поля заголовка «банка памяти»,
с тем, чтобы ОС понимала, что эмулируется не флэш-память, а ОЗУ,
переработан профилировщик и отладчик, решены несколько проблем при
работе с Macintosh.
27 июля
POSE 2.1d7. Решены проблемы с обработкой событий пера мыши в режиме
отладке на Macintosh, с некорректной обработкой статусного регистра
(она была известна еще со времен CoPilot 1.3 для Macintosh), функция
EmuHostGetVersion передавала теперь правильное значение, извлекаемое
из информации о программе, а не заранее предопределенную цифру (как
это было в «заглушке»), реализована функция EmuHostIsSelectorImplemented,
нажатие клавиши Ctrl при перезагрузке POSE позволяло остановить
процесс работы эмулятора на контрольной точке в начале BigROM. В
версии для Macintosh сохранялось расположение окна программы на
рабочем столе.
29 июля
POSE 2.1d8. Функция EmuGrmIsRunning (и SysGremlins) начала передавать
правильное значение, вместо выдачи «истины» все время.
Реализованы функции EmuDmLoadFile и EmuDmSaveFile, функция EmuDmSaveFile
может воспринимать номер банка памяти как параметр, у всех функций
семейства EmuXXX реализована проверка возвращаемого значения. Решены
проблемы задания текущего времени при запуске, проблема аварийного
завершения программы при работе с ПЗУ Palm V, извлечения информации
о количестве памяти с ПЗУ Palm V. В POSE для Windows исправлена
ошибка с нажатием кнопки OK в диалоге параметров, которая вызывала
аварийное завершение работы POSE в среде Windows 95 и иногда, даже
ОС. В редакции для Macintosh решена проблема с некорректным именем
для последовательного порта.
4 августа
POSE 2.1d9. В редакции POSE для Macintosh решены проблемы, связанные
с обработкой файлами ПЗУ/ОЗУ. Реализованы средства предотвращения
считывания информации из «нижней» памяти, если только
POSE не в состоянии «сна», загрузки ОС или работы обработчиков
прерываний. Переработаны функции управления памятью, появились предупреждения
при некорректном попытки доступе к памяти за пределами стека, общего
контроля стека, решена проблема с использованием контрольных точек
на инструкциях, которые запускали системные функции, предварительно
уже перехваченные POSE.
18 августа
В POSE 2.1d10 заменено сообщение об ошибке доступа за пределами
стека (до этого использовался диалог ошибки о доступе к видеопамяти).
В исходных текстах и меню несколько косметических исправлений,
в списке программ, с которыми могут работать «Гремлины»
появилась панель управления, переработана подсистема DbgMessage.
Было сделано несколько системных изменений в подсистеме перехвата
функций PalmOS, переделана подсистема трансляции номеров ошибок
в текстовые строки, обрабатывается комбинации клавиш ПК (например,
удерживая «кнопку» питания и Ctrl-R можно сделать «жесткую
перезагрузку»), в подпрограммах работы с памятью и профилировщика.
Реализованы средства предупреждения о попытке обращения к динамической
памяти за пределами выделенных блоков. Решена проблема (в редакции
для Windows) с попытками запуска POSE когда последовательный порт
был занят (выдавалось предупреждение).
20 августа
Редакция X-CoPilot 0.6.5 стала первой версией, где была предпринята
попытка модернизировать подсистему эмуляции ЦП на базе переработанных
исходных текстов UAE и превращения X-Copilot в многопоточную программу.
Затем решено несколько малозначительных проблем, удалена процедура
проверки точки входа в ПЗУ (это позволяло загружать в эмулятор другие
ПЗУ, не только ПЗУ с PalmOS) и переработана подсистема анализа аргументов
командной строки (исчезли переменные с префиксом XCOPILOT, они были
заменены на одну XCOPILOTARGS, в которой содержались аргументы командной
строки).
25 августа
X-CoPilot 0.6.6 косметические изменения (решение проблемы
с именами каталогов, содержащими тильду). Эта редакция стала последней
версией CoPilot, затем появилась только незначительно модернизированная
версия, которая была скорее «заплаткой».
31 августа
POSE 2.1d11. Обеспечивается эмуляция флэш-ППЗУ AMD, решены несколько
проблем в версии для Windows (взаимодействие с отладчиком, обработка
исключений, инициализация регистров) и для Macintosh, работы с подсистемой
IntlMgr, сообщениями об ошибках, регистрами ЦП, перехвата попыток
доступа к нереализованным прерываниям, переработана подсистема контроля
ошибок и функция PrvGetBatteryPercent. Полностью переработана подсистема
контроля доступа к памяти. Кроме попыток доступа к области памяти
ПЗУ, видеопамяти и регистрам перехватываются некорректная работа
с динамической памятью, появилась возможность обнаружить доступ
к неинициализированной памяти.
2 сентября
POSE 2.1d12. Подпрограммы EmuTraps переименованы в подсистему HostControl,
появилась функция HostGetEnv, реализована возможность поиска утечек
памяти.
15 сентября
POSE 2.1d13. Решены проблемы с динамической памятью, реализованы
средства работы с периферией в ЦП серии EZ, функция HwrIdentifyFeatures
для 68328, флэш-ППЗУ (появилось в Palm V и Palm IIIx), работой «Гремлинов»,
некоторыми функциями, при работе с PalmOS до3.0. Программа была
ускорена (например, замена возвращаемых значений несколькими функциями
на тип int вместо bool позволила увеличить скорость на 7% в каноническом
тесте «Гремлин» ╧0, 10000 событий в MemoPad;
правда, выигрыш был только при компиляции с MSVC++, пакет CodeWarrior
работал быстрее с bool), прием, разработанный в CoPilot для Macintosh
(корректировать только те строки пикселов, которые изменились с
момента последнего обновления изображения) дало увеличение скорости
на 27%. Решено несколько проблемы в библиотеке HostControl и подсистеме
TextMgr.
1 октября
POSE 2.1d14. Добавлены средства для работы с японскими версиями
PalmOS, в меню выбора последовательного порта был добавлен пункт
None (в POSE для Macintosh). Реализована поддержка для регистров
lcdPageWidth и lcdPanningOffset, проверка корректности содержимого
динамической памяти, решена проблема с выключением (функция HwrSleep
не могла изменять содержимое области адресов системных функций,
что ей было необходимо). Версия для Macintosh корректно компилировалась
с пакетом CodeWarrior Pro 4. Переработана метода отображения сообщений
об ошибках, проверка переполнения стека, содержимое ОЗУ инициализируется
значением 0xFF (имитируя работу флэш-ППЗУ), исправлены сообщения
об ошибках при загрузке ПЗУ, реализована проверка работы менеджера
памяти, исправлено несколько ошибок при работе с меню и диалогами
POSE, средства работы с буфером обмена и контроля некорректного
доступа к памяти из внешнего отладчика.
10 октября
POSE 2.1d15. Решено несколько проблем с работой подсистемы TxtMgr,
памятью, загрузкой файла параметров, отладкой, в редакции для Macintosh
информация об ошибках выводится в немодальный диалог, созданы функции
работы с журналом (HostLogFile, HostSetLogFileSize), фильтрации
событий, записываемых в журнал.
22 октября
POSE 2.1d16. Решены некоторые проблемы с открытием файлов .rom,
.psf, .prc, .pdb, и .pqa, изменены функции TextMgr, сохранения экрана
в файл, реализована возможность автоматический загрузки файлов ПЗУ
и ОЗУ, переработана подсистема «пробуждения» Palm, созданы
средства эмуляции Palm VII, Palm V и Palm IIIx.
28 октября
POSE 2.1d17. Решена в подсистеме «Гремлинов» (при слишком
большом количестве событий, переполнялся внутренний счетчик), загрузки
несуществующего файла памяти (в редакции для Windows), эмуляции
Palm с 256-Кбайт памятью, работы с последовательным портом (в режиме,
когда пользователь отключал порт в эмуляторе), с попыткой использовать
пустые строки. Эмулятор удалял некорректные записи в реестре (в
POSE для Windows). Переработан диалог настройки параметров отладки,
подсистема отображения информации об ошибках, сохранения параметров
POSE.
29 октября
POSE 2.1d18. Отключены пункты меню Profiling и Transfer ROM, в меню
выбора модели появился Dragonball EZ, в версии для Windows была
решена проблема с отображен ем экрана и функций MC68EZ328Bank::GetLCDDepth,
которая передавала 2 при работе с полутонами, вместо 4. В редакции
для Macintosh решена проблема обновления параметров.
30 октября
POSE 2.1d19. Исправлена проблема с загрузкой файла ОЗУ, управлением
динамической памятью в PalmOS 2.0.
10 ноября
«Если я правильно помню, работа над POSE для UNIX началась
в ноябре 1998 г. Ее начал мой коллега, который работал над ПЗУ и
хотел протестировать новую версию ПЗУ с PalmOS в среде POSE. Однако,
он любил UNIX и хотел работать с эмулятором в среде UNIX. Поэтому
он начал работать над переносом POSE. Я не вмешивался в этот процесс
и в общем даже не знаю, почему он использовал в качестве основы
POSE, а не X-Copilot. Могу только предположить, что POSE к тому
времени настолько далеко ушел от CoPilot, что он решил, что проще
перенести POSE, нежели начинать с чистого листа». Кейт
Роллин.
POSE 2.1d20. Реализована поддержка отладчика PalmDebugger, решены
проблемы с обработкой кнопок в ПЗУ для ЦП EZ, был ускорен процесс
загрузки ПЗУ из устройства, ускорена подсистема эмуляции последовательного
порта (заодно решено несколько проблем с его эмуляцией), стеком
(сбивался, после того, как была запущена функция SysAppExit), ошибками
в сетевых библиотеках, некоторых функциях, решена проблема с PrvGetBatteryPercent,
несколько косметических изменений. Функции MemCmp, MemMove и MemSet
более не могли работать со всей памятью, только с допустимыми областями,
функция ScrInit напротив, могла работать с нераспределенной памятью
(ей необходимо обновлять содержимое экрана). Исправлены FindSaveFindStr,
FntDefineFont. Восстановлена подпрограмма, которая позволяла решить
проблему с BackspaceChar, но только при работе с ПЗУ PalmOS 3.0.
Переработана подсистема обработки ошибок PalmOS и обработка семафоров,
связанных с управлением памятью.
12 ноября
POSE 2.1d21. Мелкие проблемы обработка ошибки с попыткой
доступа к FldDelete, в версии для Windows изменена схема запуска,
восстановлены несколько строк, случайно удаленный в версии POSE
2.1d20.
7 декабря
POSE 2.1d22. Снова решена проблема работы с памятью (когда менеджер
памяти не освобождал семафор в течение минуты). Полная переработка
подсистемы эмуляции последовательного порта. Решена проблема с обработкой
стека при вызове функций SysAppExit, SysTaskDelete, доступа к памяти
для функции PrvCompressedInnerBitBlt, в POSE для Windows решена
проблема с нажатием Esc при загрузке ПЗУ и запуском эмулятора (как
в Windows, так и в Macintosh), отладчиком при работе с Macintosh.
Переработан протокол работы с отладчиком (для PalmDebugger, MWDebug
и gdb). Отладчик мог взаимодействовать с POSE с помощью сокетов
отладки или консоли, для подключения к сокету консоли, необходимо
было ввести shortcut.2, сокет отладки активировался при возникновении
какой-либо аварийной ситуации (некорректный доступ к памяти, деление
на ноль и проч., функция DbgBreak и проч.) или ввода shortcut.1,
в результате ПЗУ запускало цикл работы с отладчиком. Поскольку POSE
мог обрабатывать запросы отладчика без промежуточных подсистем,
была реализована возможность отлаживать программы «на лету».
Функции работы с сокетами оставлены для совместимости (правда, при
работе нужно соблюдать несколько условий). Реализована возможность
передавать программам для Palm информацию о том, работают ли они
в среде эмулятора или на реальном устройстве и используется ли внешний
отладчик. Более не проверяется минимальная версия Windows при работе
с отладчиком (это вызывало проблемы при работе с Windows 95).
16 декабря
POSE 2.1d23. Решена проблема с обработкой порядка следования байт
при работе с отладчиком в Windows, «приглажены» исходные
тексты, реализована возможность перехватывать работу с библиотеками
PalmOS. Началась работа по переработке подсистемы NetLib (но пока
были только внутренние изменения). Решена небольшая проблема с эмуляцией
последовательного порта, в профилировщик выдает результат в текстовый
файл, а не только файл в формате Metrowerks Profile Tool, в POSE
для Windows реализован диалог настройки профилировщика.
25 декабря
2.1d24. Массированные изменения. Решена проблема с журналом при
работе «Гремлинов», оптимизирована трассировка. Появилась
возможность перенаправления вызовов библиотеки NetLib (пусть пока
работала не до конца и только в Windows), соответственно, перехватывались
все функции NetLib. Это было весьма заметное изменение, радикально
упрощавшее разработку сетевых программ. Причем можно было даже использовать
PAQ из предварительной версии ПЗУ Palm VII.
Решены проблемы с семафорами, порядком следования байтов при попытке
задания контрольной точки (в отладчике gdb, Windows), сохранении
файлов в среде Macintosh, работы с PalmOS 1.0, файлы .prc/.pdb проверяются
перед загрузкой, задается имя пользователя HotSync при запуске эмулятора,
реализованы проверка доступа к библиотечным функциям. Переработаны
некоторые функции, временно удалены средства, которые обеспечивали
совместимость с подсистемой Palm VII Web Clipping, решена проблема
работы с отладчиком Metrowerks в среде Windows (терялось пакеты,
передаваемые отладчику, некорректный доступ к некоторым функциям),
проблемы с диалогом запуска «Гремлинов» (весьма экзотическая
ситуация, связанная с сортировкой), запуском программ, работой с
растровыми изображениями, структурами данных профилировщика, с профилировщиком
(например, при одновременном доступе к памяти PalmOS со стороны
POSE и профилируемой программы искажались результаты),
1999 год
16 февраля
POSE 2.1d25. Изменен метод проверки доступа к библиотечным функциям,
механизм обработки прерываний (для эмуляции ПЗУ Palm VII), несколько
изменений в редакции для Macintosh, реализована возможность автозапуска
программ (просто Autorun, AutorunAndQuit, Autoload). Отцентрирован
ЖК-дисплей (в Windows), переработана функции ведения журнала (увеличено
количество параметров, которые могут быть записываться, правда,
пока не все они были реализованы), функции SecurityLib предоставлена
возможность работать с нижней памятью, реализована функция HostSetLogFileSize
(емкость журнала по умолчанию увеличена до 1 Мбайт), реализованы
неблокирующие сокеты при перенаправлении NetLib и возможность использования
Network HotSync (в Macintosh эти функции работали некорректно).
Решены некоторые проблемы при обновлении экрана (иногда, при прокрутке
вниз изображение не обновлялось), решена проблема с порядком следования
байтов в адресах, которые передавала функция NetLibGetHostByName.
Текстовый файл с результатами работы профилировщика был переименован
(теперь название создавалось на базе имени файла с двоичными данными
профилировщика), введены проверки на корректность размеров объектов
формы и расположения при автоматизированном тестировании, в редакции
для Windows были сделаны клавиатурные сокращения, решены проблемы
с отображением «аппаратных» кнопок на «корпусе»
POSE, реализованы средства контроля записи в динамическую память
при работе функции NetLibDmReceive, проверка доступа к области памяти
0x00018000 0x00020000, поддержка эмуляции японских моделей
Palm.
26 февраля
POSE 2.1d26. Исправлены проблемы с сохранением файлов .psf на Macintosh
(информация о модели записывалась дважды) и на Windows (не сохранялся
код страны), улучшена работа с журналом, ускорен и переработан отладчик
(например, реализована функция контроля доступа к отдельным блокам
памяти, условные контрольные точки (в редакции для Windows)), переработаны
средства для работы с ПЗУ Palm IIIx и Palm V, исправлена проблема
с копированием ПЗУ из моделей с процессором EZ, разрешена работа
с экранными объектами, размеры которых составляли ноль пикселов
(прием был популярен для скрытия объектов), исправлена ошибка с
автозапуском программ в режиме AutoRunAndQuit, функцией NetLibDmReceive.
29 апреля
X-CoPilot. Последняя версия X-CoPilot отличалась только тем, что
была адаптирована для работы со Slackware Linux.
29 апреля
Компания Conduits Teckhologies выпустила свою версию PilotCE для
Palm-Size PC. Программа требовала 5 Мбайт ОЗУ для работы, файл с
ПЗУ PalmOS. Работала на ЦП SH3 и MIPS, позднее была перенесена на
ARM, но с iPAQ была несовместима. Работала только с PalmOS 2.0.
7 мая
POSE 2.1d27. Между версиями 2.1d26 и 2.1d27 было 10 промежуточных
подверсий. POSE научился предупреждать о попытках доступа к памяти
по нулевому указателю и к регистру A5? переработана подсистема трассировки,
в очередной раз решены проблемы с загрузкой файлов PalmOS и .psf,
переработана функция SysUIAppSwitch, исправлена ошибка с обработкой
клавиши Esc (работает как кнопка питания) в POSE для Windows, в
редакции для Macintosh реализованы клавиши Esc, F1--F4, PageUp/PageDow,
POSE научился реагировать на «нажатие» работа с кнопки
«контрастности» при работе с ПЗУ Palm V. Проверяется
доступ к математическим функциям, решены проблемы с условными контрольными
точками, функцией NetLibSocketAddr, профилировщиком (запись в журнал
имен библиотечных функций и работа с глубоко вложенными функциями),
контролируется доступ к функции FindSaveFindStr, выключена проверка
переполнения стека, сохранением информации о проверяемых блоках
памяти при перезагрузке, переработан метод перехвата функций и задания
контрольных точек. POSE был ускорен (незначительно), появилась возможность
игнорировать некоторые контрольные точки, заданные в PalmDebugger,
исправлена ошибка c подключением к сокету отладчика, если сеанс
работы был прерван, с диалогом загрузки файлов POSE (Windows). Реализован
режим множественного выбора файлов в диалоге загрузки файлов .prc,
попытка загрузки некорректного ПЗУ теперь выдает не фатальную ошибку,
а предупреждение, POSE корректно работает с базами данных, у которых
последняя запись имеет длину 0 байт.
Исходные тексты были заметно переработаны для всех подсистем
были реализованы интерфейсы создания новых сеансов, перезагрузки
сеансов, загрузки новых и закрытия ненужных, работы с пространствами
имен (их заменили классы со статическими функциями, поскольку ни
CodeWarrior, ни VC++ не могли достаточно хорошо с ними работать).
В результате, файлы .psf были заметно сжаты (были примеры превращения
1-Мбайт файла в 15-Кбайт), правда, на сжатие требовалось время (от
1 до 15 с), реализована возможность полного повторения того состояния
POSE, которое было перед выходом из программы (пользователю не нужно
было загружать повторно дожидаться процесса загрузки PalmOS и программ
в POSE). Добавлено несколько функций в подсистему тестирования,
реализованы средства для эмуляции контакта «батареи разряжены»
в порту D на устройствах с ЦП EZ, поддержка для режима с 4 бит на
пиксел контроллера дисплея моделей с ЦП EZ, исправлена ошибка с
обновлением экрана при изменении регистра lcdPageWidth, корректно
обрабатывается ситуация с передачей событий, когда эмулятор работает
с отладчиком или главное окно неактивно, при перезагрузке эмулятора
корректно освобождался последовательный порт ПК, назначенный POSE.
Переработана процедура поиска файлов ПЗУ, на которые были ссылки
в файлах .psf, в диалоге информации о разрушении динамической памяти
появился адрес заголовка блока памяти, переработана подсистема тестирования
(появилась возможность записывать память эмулятора в файл после
заданного количества событий, исправлены отдельные функции), исправлена
ошибка при работе с последовательным портом на устройстве с ЦП EZ,
отключена проверка размеров объектов формы при работе с ПЗУ PalmOS
1.0 (некоторые программы PalmOS 1.0 не следовали правилам работы
с объектами), переработана подсистема условных контрольных точек.
Решена проблема при работе на двухпроцессорных ПК (Windows), переработана
документация. Исходные тексты адаптированы для компиляции с помощью
Microsoft VC++ 6.0.
Появилась версия POSE для Unix.
21 мая
POSE 2.1d28. В POSE для Windows появились аргументы командной строки
(-psf <имя файла>, -rom <имя файла>, -ram <размер,
128--8192>, -device <тип> и проч.).
«Помните, я говорил про проблемы с сохранением файла .psf
в течение 15 с и более? Я говорил, что не знаю почему? Проблема
была в том, что я идиот. При определенных обстоятельствах POSE сохранял
сеанс несколько раз подряд. Обычно, сохранение файла занимает 0,5
с, если это проделать 30 раз, то и будет 15 с"».
Исправлены ошибки при синхронизации на двухпроцессорных ПК, файлы
журнала (Log####.txt) теперь размещаются в каталоге POSE, а не в
текущем каталоге.
8 июля
POSE 2.1d29. Между версиями 2.1d28 и 2.1d29 было 10 версий. В результате
исправлены проблемы с разбором командной строки, запуском
(в Macintosh в случае, когда последовательный порт был уже
занят, в Windows когда не находился файл с ПЗУ), ошибки,
связанные с многопоточностью, несколько общесистемных проблем (с
компиляцией программы в UNIX, работой на машинах с Windows, но без
IE 4.x), исправления в файле make, записью в журнал, эмуляцией клавиш
при тестировании, подсистемой ЦП и работы с сетью. При работе с
сокетами (отладчика и коммуникаций) корректно обрабатывается результат
«0», означавший закрытие сеанса связи.
Изменена картинка «корпуса» (в Windows и Macintosh),
предусматривается возможность изменения изображений (и сразу же
была исправлена ошибка с загрузкой их в редакции для UNIX).
4 ноября
POSE 3.0a1 (после 2.1d29 было 10 подверсий). Переработан профилировщик
(множество переделок, от переписывания многих функций до отмены
ограничений на их имена), исходные тексты корректно компилируются
в среде CodeWarrior Pro 5 (Macintosh), информация на параметрах
эмулятора сохраняется в текстовом файле (%windir%\Palm OS Emulator.ini),
реализована функция InterceptSysFatalAlert (если параметр задан
как «истина», POSE перехватывает ошибки, иначе
отображает системные сообщения PalmOS), переработана подсистема
тестирования, инсталлятор, загрузке файлов .prc, проблема, связанная
с порядком следования байтов при записи файлов .psf (некорректно
считывался файл .psf, подготовленный на Palm). Решена проблема утечки
памяти при закрытии сеанса (не удалялся буфер с информацией о ПЗУ
и состоянии порта). Реализован Palm OS Emulator Binding Tool, средства
для создания исполнимого файла POSE с «привязанным»
к нему ПЗУ и файлом сеанса (работает только в Windows NT), функция
настройки порта сокета, к которому может подключаться отладчик,
несколько функций в библиотеке HostControl (HostErr HostProfileDetailFn,
HostErr HostGremlinNew, HostGetPreference и проч.).
Реализован сокет, который позволяет любой внешней программе работать
с функциями PalmOS, исправлена ошибка записи событий.
В версии для UNIX реализована эмуляция последовательного порта,
компиляции, клавиши курсора, исправлена проблема с утечкой памяти.
Переработана подсистема отображения «корпуса» POSE (в
диалоге настройки можно также выбрать масштабный коэффициент и цвет
фона ЖК-дисплея), работа с памятью, перезагрузкой .psf файлов, проблема
с белой границей при увеличенном экране, цветами, функцией HwrDisplayWake,
сохранении параметров при работе на Macintosh, экраном, «Гремлинами»
(можно задавать последовательную работу нескольких), новые параметры
командной строки (в POSE для Windows), обработку клавиш «закрыть
программу», профилированием функций (даже при работе с диспетчером
прерываний), POSE для Windows и UNIX мог останавливать ЦП практически
в любой момент, связанный с работой подсистемы UI, программа ROM
Transfer работала с CodeWarrior for Palm OS Release 5.2, в версии
для UNIX появилась возможность использовать графику JPEG, в версии
для Windows системное меню, в Macintosh корректное
взаимодействие с подсистемой управления питанием. Переработана подсистема
эмуляции ПЗУ, поведение POSE при создании окон, функции контроля
размеров и положения объектов в диалоге прикладных программ PalmOS,
реализованы функции «перетаскивания». Решены проблемы
с отображением текстовых строк в японских версиях MacOS, исправлена
ошибка в NetLibGetHostByAddr, FntDefineFon, активирована проверка
записи в область памяти, назначенную ПЗУ, появилась возможность
извлечь произвольную БД из POSE, решена проблема с выдачей сообщений
об ошибке при перезагрузке POSE (функция SysReset работала с нижней
памятью это было нормально, но POSE выдавал ошибку), в редакции
для Macintosh функции для ввода специальных символов PalmOS
(menuChr, lowBatteryChr, commandChr, confirmChr и проч.).
5 ноября
POSE 3.0a2. Переработана подсистема эмуляции ЦП на базе обновленных
исходных текстов UAE (0.8.10, до этого использовалась 0.8.3)
при этом, решено несколько проблем, связанных с компиляцией POSE
для UNIX gcc (выдавалось около 2 тыс. предупреждений «неиспользуемая
метка»). В версии POSE для Windows исправлена ошибка при создании
сеанса, реализованы средства для работы с трассировщиком, разработанным
компанией Palm Europe.
13 ноября
POSE 3.0a3. Переработана подсистема эмуляции ЦП (проверка работы
с регистрами, проблемы при работе некоторых инструкций и стека),
исправлены проблемы с компиляцией в UNIX, в Macintosh исправлены
ошибки работы с файлами (при наличии в имени файла или каталога
не-ASCII символов), «засыпания» при активизации «Гремлинов»,
обработкой границ окна (при работе с ПЗУ PalmOS 3.5), ускорения
(в Windows), изменено оформление журнала работы. Реализована возможность
записывать в журнал события PalmOS 3.5, переработаны функций HostFPrintF,
добавлен «корпус» от Symbol 1700/1740 (не поддержка
этих моделей, а только «корпус»), переделана подсистема
калибровки пера.
2000 год
28 января
POSE 3.0a4. Опять несколько подверсий. Переработана подсистема инсталляции
файлов .prc (проверка корректности, более подробная информация об
ошибках), реализована поддержка для Palm IIIe и Palm Vx (появились
в меню моделей, сохраняются в параметрах, можно задавать в аргументах
командной строки, реализован «корпус» для каждой из
моделей, внутренний ID, регистрация в подсистеме создания «автономного
эмулятора» и проч.). В POSE для Macintosh переработана сетевая
подсистема (на базе OpenTransport вместо MacTCP), решены проблемы
при компиляции программы ROM Transfer с помощью CodeWarrior for
PalmOS R6. Исправлены проблемы с динамической памятью, обработкой
кнопок Palm при работе «Гремлинов». В редакции для UNIX
исправлена проблема с изменением картинки корпуса, документирована
поддержка отладчика gdb (и более не нужно использовать дополнительные
библиотеки для работы с POSE). Расширена документация. Информация
о моделях была перенесена в класс EmDevice, снова активирована проверка
переполнения стека (выключена в POSE 2.1d27), исправлена ошибка
«засыпания» при наличии «Гремлинов», перезагрузки
файла .psf (в Windows при работе с «Гремлинами»), загрузкой
файла ПЗУ, который был вместе с файлом .psf перемещен в другой каталог.
Несколько изменений при работе POSE в среде FreeBSD, решены проблемы
с обработкой параметров X-Window (-display, -geometry). Переработана
подсистема эмуляции регистров таймера ЦП Dragonball (однако, все
еще оставалась возможность некорректной регистрации результатов
запуск программы с «Гремлином» в 3:00pm мог дать
результаты, не совпадающие с такой же попыткой в 5:00pm).
Некоторые изменения в журнале (замена символов xxxChr на vchrXXX,
запись имени формы, которая была активна в момент выхода из программы),
в версиях для Macintosh и Windows реализована поддержка внешних
утили т трассировки (Tracer, Reporter).
Исходные тексты переработаны для улучшения переносимости (платформно-зависимые
подсистемы вынесены в отдельные классы), в результате функция ROM
Transfer была реализована в UNIX, использованы соглашения, принятые
в PalmOS (изменения в системе типов UInt32, Int16 и проч.
вместо DWord, Long, Int, Byte и проч.).
Переработана функция сохранения изображения в формате JPEG (корпус
и проч.), на место вернули «корпус» от CoPilot, ROM
Transfer загружал ПЗУ полностью, а не только область BigROM, POSE
научился корректно работать с Visor, в версии для Windows появилась
поддержка TRGpro (работа с подсистемой CompactFlash, в меню моделей
TRGpro не было, но можно было создать аналог, запустив подсистему
FFS), POSE перенаправлял вызовы функций FFS на файловую систему
ПК (корневой каталог задавался в строке FfsHome в файле параметров
POSE), поддержка для Visor (без USB, POSE не мог сохранять ПЗУ по
USB, синхронизироваться и проч.).
Исправлена проблема в профилировщике (слишком маленький буфер для
названий функций), из названий функций удален абсолютный адрес (мешал
работе CodeWarrior Profiler). В редакции для Windows в «автономных
версиях» POSE отключили пункта Close в системном меню (эта
возможность есть в меню POSE) и реализована команда Save Screen,
решены некоторые проблемы с меню в POSE для UNIX. Реализована эмуляция
звуковой подсистемы, решены некоторые проблемы в подсистеме перенаправления
NetLib (с accept() и select()), с определением скорости передачи
при работе UART (в результате которой не работала связь на 20-МГц
Palm Vx).
6 марта
POSE 3.0a5 (опять несколько подверсий). Переработана подсистема
обработки «ЦП», метод эмуляции Dragonball разных серий,
вместо использования условных операторов создана иерархия классов
эмуляции ЦП EmRegs (базовый), EmRegs328 (эмуляция общих компонентов
для Dragonball 68328), EmRegs328Pilot, EmRegs328PalmPilot и проч.
(эмуляция ЦП заданных моделей), EmRegsEZ (абстрактный класс для
эмуляции общих компонентов Dragonball EZ), EmRegsEZPalmIIIx, EmRegsPalmV
и проч. (эмуляция заданных моделей с ЦП Dragonball EZ).
Реализованы некоторые средства эмуляции модели Symbol 1700, но
аппаратные средства (например, интегрированный сканер штрих-кода)
не имитировались. Переделана подсистема эмуляции последовательного
порта (решены проблемы с работой в UNIX при использовании псевдоустройств,
работой на Palm VII), исправлена ошибка «Гремлинов»
(при загрузке параметров, после перезапуска сеанса, обработкой клавиш,
синхронизацией часов). Исправлены некоторые «аппаратные»
проблемы, решены проблемы с настройкой параметров записи в журнал
при работе в UNIX. Реализована проверка регистра счетчика команд
и указателя вершины стека при обработки инструкции TRAP $F. Переработана
документация (появился файл UsingPOSE.pdf, описание использования
Network HotSyncing с POSE, инсталляции подсистемы работы с FAT TRGpro).
Переработана подсистема перехвата событий пера (кроем функции SysEventGet,
перехватывается и функция EvtSysEventAvail), некоторые системные
исправления, в среде Windows появилась возможность минимизировать
окно POSE нажатием клавиши и поменялись местами пункты меню About
и Exit. Упрощены диалоги Skins и Gremlins. Реализован «корпус»
для Palm IIIc (в Color Device было переименовано в Palm IIIc), в
версии для UNIX появился пункт меню File/Save, решена проблема при
загрузке файла .psf (два раза инициализировался последовательный
порт). В редакции для Windows исправлена проблема с палитрой при
отображении «корпуса», изменена работа функции SndInit.
Появилась возможность компилировать POSE в среде Solaris 2.6 (с
gcc), в редакции для UNIX при переключении изображения «корпуса»
меняется и размер окна. Несколько переработан диалог экспорта.
19 апреля
POSE 3.0a6. Реализована возможность задавать каталог POSE в переменной
POSER_DIR (UNIX). Файлы с изображения корпуса перенесены в отдельные
файлы, переработка этой подсистемы потребовала создания независимой
от платформы подсистемы работы с файлами. Исправлена функция SndDoCmd.
Программа Binder перенесена в POSE (пункт Save Binding Emulator),
исправлена сетевая подсистема, переработана подсистема эмуляции
ОЗУ (POSE некорректно работал на Macintosh с 256-Мбайт ОЗУ) и документация.
Реализована проверка работы с разделяемыми библиотеками.
В редакции для UNIX в редакции для UNIX реализована обработка каталогов
AutoLoad, AutoRun и AutoRunAndQuit, решена проблема с аварийным
завершением POSE при загрузке файлов .prc в среде Sparc, обработкой
кликов на неактивных элементах окна (на «корпусе» за
пределами экрана и не на одной из виртуальных кнопок), отображением
последовательности диалогов. Функция загрузки ПЗУ научилась работать
с ПЗУ PalmOS 3.5, переработана сетевая подсистема (решена проблема
с Network HotSync), средства поддержки BSD 4.1, решены проблемы,
связанные с диалогом переключении «корпуса», файловыми
диалогами, загрузке файлов .psf. Отключена проверка доступа к памяти
для функции PalmOS OS 3.3 (PrvConvertDepth1To2BW, к системным переменным
для TsmGlueGetFepMode и TsmGlueSetFepMode, переработана подпрограмма
проверки состояния регистра команд (ранее мог указывать на любую
область адресного пространства, включая регистры ЦП, теперь
ОЗУ/ПЗУ), появилась функция HostFFlush, которая позволяла «сбросить»
на диск журнал работы, переработаны исходные тексты подсистемы «Гремлинов»
(в основном, на предмет переносимости). В POSE для Windows исправлена
ошибка при создании нового сеанса при работе в командной строке,
загрузкой параметров из файла. Функция ROM Transfer переработана
с тем, чтобы использовать ее с ПЗУ от PalmOS 3.5 и решена проблема
работа с ПЗУ PalmOS 1.0, с загрузкой ПЗУ из Palm V с PalmOS 3.3.
Переработана подсистема работы с структурами данных PalmOS, сетью.
7 августа
POSE 3.0a7. Поддержка Palm m100 и Palm VIIx. Реализованы новые и
переработаны существующие функции HostControl, переделана система
именно, подсистема сеансов переработана с учетом функций HostControl
(при перезагрузке корректно закрываются файлы, открытые HostControl,
освобождается память, удаляются ссылки на каталоги, строковые переменные
и проч.). Реализован диалог Card Options, исправлена ошибка при
работе с MemHandleNew/MemHandleFree, функции TsmGlueGetFepGlobals
предоставлена возможность безнаказанно работать с нижней памятью
;-), решены проблемы в сетевой подсистеме (с NetLibSocketOptionGet,
NetLibSendPB).
Переработана внутренняя архитектура (появились классы EmPoint,
EmRect, EmRegion, EmRefCounted, EmRefCounter и EmPixMap), на базе
этих классов была переработана подсистема эмуляции дисплея (для
увеличения уровня абстракции от реализации видеопамяти, упрощения
переноса на другие платформы, ускорения и проч.). реализованы классы
EmDlg::DoGetFile, DoGetFileList, DoPutFile и DoGetDirectory и они
же использованы в POSE. Исправлена проблема, связанная с компиляцией
POSE в gcc (некоторые операторы gcc воспринимал не как 0, а как
объявление динамического массива, соответственно, пропускал потенциальные
ошибки при компиляции; в итоге, проблемы были исправлены так, что
по словам автора, «на такое объявление ругается даже gcc»
;-), в результате истреблено достаточно много ошибок).
В редакции для UNIX при компиляции активирован параметр -fexceptions,
реализована функциональность пункта меню Save Screen (картинка сохраняется
в файлы .ppm), использован элемент управления Easy Software FileChooser,
переработан файл EmulatorTypes.h (UNIX), компилируется с параметром
gcc -fpermissive. Реализована обработка некоторых команд в сценарии
настройки POSE, проблемы с копированием ПЗУ, реализованы средства
динамической проверки параметра socklen_t.
Исправлена функция TblHandleEvent (для обхода ошибки в PalmOS 3.5),
выключен контроль доступа к памяти для функции NetLibBitMove. Переработана
подсистема управления системной памятью PalmOS и доступа к глобальным
переменным (основан на классе EmPalmStructs), индикатор прогресса
(изменился вид, заработала кнопка отмены, реализован в UNIX).
Реализована запись в журнал действий Exchange Manager. Диалог запуска
переделан на базе классов, которые одинаково работают на любой платформе.
Решена проблема в отсутствием перерисовки экрана при выключении/включении
POSE при работе с ПЗУ Palm IIIc. При вводе с клавиатуры ПК, учитывается
состояние клавиш регистра. Переработан диалог New Session, подсистема
обработки событий от пера, подсистема эмуляции ЦП и регистров аппаратных
средств, реализованных в конкретной модели (регистры, связанны с
контроллером USB в Visor, в Palm VII с коммуникационной подсистемой,
в Symbol с ASIC этой модели, отдельными регистрами ЦП EZ).
«Пойман» целый класс проблем, когда POSE не обнаруживал
порчу содержимого счетчика команд, исправлены проблемы создания
двоичного файла профилировщика (файл, созданный в Windows не обрабатывался
на Macintosh). Подавляется некорректное сообщение об ошибке, которые
выдает Field Manager в PalmOS 1.0-3.2. В версии для Macintosh исправлена
ошибка создания файлов функцией HostFOpen, обновлены файлы проектов
для Macintosh CodeWarrior 5.3 (IDE 4.0.4), исправлена проблема при
попытке послать электронную почту по ссылке из диалога About. Исправлены
ссылки (теперь указывают на www.palmos.com).
17 ноября
3.0a8. Реализована поддержка ЦП Dragonball VZ, цифро-аналогового
преобразователя (ADS7843), еще раз исправлена проблема с неперерисовкой
дисплея Palm IIIc. Корректно работают клавиши-модификаторы (разработчики
позабыли перенести функцию из версии для Windows в POSE для Macintosh
и UNIX).
В POSE для UNIX исправлена ошибка сохранения экрана (можно было
сохранить картинку только в существующий файл), реализована функция
загрузки нескольких файлов .prc, обработки меню «Гремлинов»
в процессе из работы, работы с диалогами загрузки файлов.
Исправлена ошибка работы с последовательным портом при загрузке
ПЗУ от Palm VII и Palm VIIx (EZ), реализована поддержка бита RTS_CONT
в регистре UART Dragonball и несколько переработана подсистема эмуляции
последовательного порта. Решена проблема с переполнением стека в
PalmOS 3.3, «переназначением» клавиш на специальные
сочетания росчерков Graffiti.
Исправлена проблема с индикатором прогресса, «засыпания»
POSE при работе с PalmOS 1.0, запуском POSE (в Windows), ошибки
в подсистеме контроля доступа к памяти, обработкой защищенных соединений
с Интернет. Исправлены ошибки в отладчике Palm Debugger (fb, fw,
fl и ft, удалением контрольных точек, переработаны функции HostFSetPos
и HostFGetPos. В POSE перенесены средства поддержки TRGpro.
Переработана подсистема эмуляции ЦП и управлениями сеансами, вместо
одной глобальной подсистемы, которая обеспечивала создание, загрузку,
сохранение, перезагрузку и удаление сеансов, эмуляцию систему команд
Dragonball, средства контроля доступа к памяти и структурам данным
PalmOS (при этом, интерфейс работы с этой подсистемой разнился для
платформ, поддерживающих многопоточность и не поддерживающих) реализовано
несколько блоков создание сеансов и эмуляция ядра ЦП (EmSession),
эмуляции конкретных ЦП (класс EmCPU и подклассы EmCPU68K), работы
со памятью и системными данными PalmOS (EmPalmOS). Появилась возможность
упростить перенос POSE и даже эмуляции других ЦП (например, ARM)
или ОС (Linux, будущие редакции PalmOS).
В редакции POSE для UNIX исправлены проблемы с отрисовкой дисплея
при отключении устройства, отображением сообщений об ошибках.
Решены проблемы с сохранением предпочтений сетевой подсистемы,
загрузкой ПЗУ из Palm VIIx (подпрограмма идентификации ПЗУ ошибалась
и загружала ПЗУ не полностью). В POSE для Windows исправлена ошибка
с работой диалога параметров журнала. Отключена проверка доступа
к памяти для функции dns_decode_name (она могла считывать информацию
вне буфера), переработана подсистема «автозапуска» (при
использовании режима AutoRunAndQuit POSE определял факт завершения
программы, отслеживая функции SysUIAppSwitch, SysAppLaunch, SysAppStartup
и SysAppExit, теперь он просто контролировать cardNo и dbID программы
в SysAppExit). Исправлены проблемы при работе с журналом с японским
ПЗУ (не обрабатывался порядок следования байтов, программа пыталась
найти результат по неправильному адресу), исправлены ошибки при
вызове функций PalmOS (POSE мог аварийно завершаться при обработке
вызова RPC, например, hd 3 в PalmDebugger и запуске функции PalmOS
в обработчике перехваченной функции; все еще не обрабатывается ситуация
с запуском функции PalmOS из потока работы с UI, например, при создании
списка программ для «Гремлинов»).
Переработан алгоритм обработки аппаратных исключений, реализованы
две функции HostControl (HostProfileGetCycles и HostSaveScreen,
на Macintosh), исправлена ошибки в подсистема контроля памяти (POSE
иногда некорректно выдавал диалог об ошибке работы с памятью), ошибка
доступа к памяти по адресу 0xFFFFFFFF (POSE аварийно завершался),
проблема с загрузкой файлов .pdb, когда некорректно обрабатывалась
ситуация отсутствия записей в заголовке (appInfo).
2001 год
16 марта
POSE 3.1. Реализована поддержка Visor Prism и Platimun. Изменены
правила поиска картинок «корпуса», при отсутствии
файла с картинками выдается предложение либо найти этот каталог
либо скопировать изображения с Web-узла POSE. Реализована возможность
задания контрольной точки в «системных функциях» PalmOS
(в «прологе» функции). Редакция POSE для Macintosh компилируется
в CodeWarrior Pro 6, адаптирована для GUSI 2.13 (нужно для CWP6),
решены некоторые проблемы с диалогами POSE.
Изменен «тактовый генератор» POSE (для корректной работы
на быстрых ПК), переработана подсистема отображения найденных POSE
ошибок в программе PalmOS, для каждого диалога, связанного с программными
сбоями, реализованы кнопки Continue, Debug и Reset, исправлены некоторые
проблемы в профилировщике, подсистема эмуляции графического интерфейса,
«Гремлинами». Реализована обработка тайм-аутов в функциях
NetLibReceive и NetLibSend, решена проблема, которая иногда проявлялась
при запуске отладчика (в адресном регистре было некорректное значение,
при этом, удалось ускорить работу эмулятора на 6%).
«Вы поверите ли, что изменения цикла в подсистеме эмуляции
ядра ЦП с:
uint16 opcode;
opcode= get_iword (0);
fCycleCount += (cpufunctbl[opcode]) (opcode);
на:
uint32 opcode;
opcode = get_iword (0);
fCycleCount += (cpufunctbl[opcode]) (opcode);
позволила ускорить работу на 4%»?
Переработаны исходные тексты с тем, чтобы избавиться от типов данных
(uae_u8, uae_u16, и проч.) и функций (get_byte, get_word, put_byte
и проч.), унаследованных из UAE с целью упростить в будущем адаптацию
POSE для работы с другими ЦП, а не только DragonBall, например,
ARM. Переработана подсистема эмуляции контроллера экрана или видеоОЗУ
(предотвращается попытка записи в регистры контроллера при выключенном
дисплее), реализована поддержка прерываний и перепрограммирования
контроллера прерываний, связанных с периферийными устройствами в
DragonBall VZ (UART2, TMR2, PWM2 и проч.), реализована функция «разделения
буфера обмена» между POSE и Windows, решена проблема связанная
с переполнением стека. Полностью переработана подсистема обработки
ошибок, перехватываются и выдаются все возможные ошибки, как аппаратные,
так и те, которые обнаруживает POSE (запись в системную память,
в нераспределенные буферы, переполнение стека), переработаны тексты
диалогов. Корректно обрабатываются ошибки, связанные с функцией
DrawWindow (для PalmOS 3.5), попыткой записи в область памяти БД,
переработан алгоритм отображения диалогов об аппаратных исключений
(для всех ошибок, исключая TRAP 0 и TRAP, 8POSE сначала выдает диалог
об ошибке, а оптом пытается запустить отладчик).
Реализована возможность «отобразить ошибки только при первом
запуске» (для упрощения отладки программ, скажем, напрямую
работающих с видеопамятью), исправлена ошибка, связанная с обработкой
регистров ЦП при прерывании программы, продолжением сессии «Гремлина»,
обработкой функций, в которых имеются контрольные точки, когда эти
функции вызывает POSE для своих целей. Переработан список названий
функций и кодов ошибок (внесены информация для PalmOS 4.0).
В редакции для Windows исправлены ошибки, при сохранении файла
предлагается расширение по умолчанию, реализована функция сохранения
экрана в режиме 65 тыс. цветов (для Visor Prism). Новые параметры
командной строки -horde_quit_when_done и -horde_apps позволяют
исключить некоторые программы из работы «орды Гремлинов»,
решена проблема с функцией Step Spy отладчика PalmDebugger. В POSE
для Macintosh исправлена проблема при отображении диалога «Орды
Гремлинов» при работе с японским ПЗУ на японских версиях MacOS,
текст сообщений об ошибках записывается в виде символьных констант,
символы верхней половины кодовой таблицы ASCII корректно передаются
в буфер обмена между PalmOS и Macintosh, решены некоторые проблемы
с преобразованием спецсимволов.
В диалогах исправлены грамматические ошибки («наконец-то
я нашел время пройтись по ним программой проверки орфографии»),
в редакции для UNIX и Macintosh косметические доработки в
диалогах POSE и меню. Реализована проверка доступа к формам, объектам
формы и структурам данных окна из прикладных программ (общем случае,
запрещены любое операции, исключая некоторые специальные случаи),
к неиспользованной области стековой памяти.
В окне настройки параметров добавлено несколько флагов и удалены
неиспользуемые, решена проблема с функцией DbgMessage (при отсутствии
отладчика, могло произойти аварийное завершение работы POSE). Появилась
возможность скопировать текст сообщения об ошибке (при работе в
UNIX необходимо было также сделать окно активным). Переработан диалог
настройки контрольных точек, Preferences/Properties и Tracer Opting
реализованы как кросс-платформные (реализованы как кросс-платформные
и перенесены на Macintosh и в UNIX) и экспорта БД, интерфейс работы
с контрольными точками, подсистема контроля доступа к стеку (адрес
стека проверяется с помощью SysTaskCreate).
Изменен алгоритм загрузки файла .psf (имя пользователя для HotSync
сохраняется не в файле .psf, а в файле параметров POSE), исправлена
проблема, связанная с тем, что при загрузке файла .psf не восстанавливалась
дата, которая была задана при его создании. Переработана подсистема
эмуляции кнопок (реализован более корректный прием обработки прерывания
для «пробуждения» POSE). Реализована возможность перенаправления
последовательного порта на конкретный сокет TCP (скажем, localhost:7777).
Реализована функция HostSessionSave, изменена функция HostTraceOutputB.
Переработана подсистема «Гремлинов» (реализована
возможность включения и выключения, подсистема генерации псевдослучайных
событий с вероятностью 1% выключает эмулируемый Palm). Реализован
механизм для работы с «псевдонимами» Macintosh, «связями»
UNIX и «ярлыками» Windows (кроме того, в Windows была
переработан диалог создания «автономного эмулятора»).
В профилировщике реализована возможность отслеживания инструкций
BSR, изменены принципы запуска и обработки команд пользователя,
взаимодействие с ПК. Поддерживаются «расширения» ОС,
которые размещаются в ОЗУ (предоставлены те же права на работу с
системной памятью, что и функциям в ПЗУ).
Исправлены строки об авторских правах (проставлен 2001 г.), сообщения
об ошибках в ROM Transfer. Кроме того, ROM Transfer переработана
с тем, чтобы использовать не Serial Driver Library, в Serial Manager
(при работе с PalmOS 3.5) и задействовать использовать функцию SrmExtOpen
(при работе с PalmOS 4.0, кроме того, при высоких скоростях соединения
ПЗУ корректно копируется из Palm (до этого могли быть искажения),
решена проблема с загрузкой файла ПЗУ (при попытке определить тип
устройства, POSE мог пытаться считывать информацию за концом файла),
в версии ROM Transfer для UNIX по умолчанию задан порт /dev/ttyS0.
Корректно переключаются активные/неактивные пунктов меню Gremlins.
В редакции для Windows переработана функция HostSaveScreen, реализованы
средства работы с несколькими мониторами, для UNIX исправлены
некоторые проблемы при работе с X-Window, изменены параметры файла
управления компиляцией.
При проверке корректности БД Palm перед инсталляцией, проверяется
дата и время создания БД (POSE их не использует, но некоторые версии
HotSync выдавали сообщения об ошибках, если дата создания была в
будущем относительно системной даты или была задана в 0). Переработана
подсистема перенаправления сети (в 3.0a8 был задан новый адрес прокси-сервера
Palm, Inc., к которому обращается POSE, в 3.1 адрес изменился на
content-dev.palm.net/content-dev2.palm.net).
Исправлены проблемы работы сетевой подсистемы, ошибка при работе
с PalmOS 3.5 и 4.0 (в отрисовке элементов управления), взаимодействия
с PalmOS при отладке.
5 июня
POSE 3.2. В редакции для UNIX появились многие аргументы командной
строки, которые до этого работали только в POSE для Windows (-psf,
-ram, -rom, -device, -load_apps, -run_app). Переработана подсистема
эмуляции ЖК-дисплея, она стала кросс-платформной (видимый эффект
наблюдался только на UNIX белая рамка вокруг дисплея и ускорение
работы), реализовано несколько функций семейства EmDevice, реализована
возможность настройки объекта CPU и емкости памяти, подсистема отображения
меню (тоже стала идентична для всех платформ). Ускорена подсистема
проверки доступа к структурами данных GUI PalmOS, отключена эта
же проверка для полей ControlType, ListType и FormLabelType, к некоторым
объектам (считывание/запись в поле attr структуры FormBitmapType
при работе с Palm OS 3.2 и ниже и проч.).
Исправлена подпрограмма отображения рамки окна, запрещена запись
в поля структуры данных WindowType (displayWidthV20, displayHeightV20,
, displayAddrV20, bitmapP), FieldType, корректно обрабатывается
вложенные структуры, исправлены проблемы с кэшированием таблицы
адресов функций PalmOS, обработкой ошибок функции DbgMessage, несколько
потенциальных системных проблем. Добавлено еще 4 «слота»
(в CardOptions), реализованы средства поддержки библиотеки HostFS,
предотвращается попытка задать слишком длинное имя пользователя
с параметрах HotSync.
Редакция для Macintosh была переработана для совместимости с подсистемой
Carbon. В редакции для UNIX переработаны файловые диалоги, реализована
возможность обмениваться информацией в буфере обмена, сообщения
об ошибках можно скопировать в буфер обмена, несколько косметических
доработок (отцентрированы диалоги). В диалоге Gremlins названия
программ отображаются, даже если задан параметр dmHdrAttrHidden,
исправлены проблемы с обработкой системных функций в профилировщике
(при определенных событиях возникала ошибка переполнения стека),
реализована возможность трассировки инструкций, вызывающих ошибки
доступа к памяти, инструкция командной строки -horde_save_dir и
решены проблемы с продолжением работы «Гремлинов»
при перезагрузке и создании сеансов. Переработаны функции HostControl
(стали более устойчивы), реализованы режимы перезагрузки (Soft,
Hard, Debug и No Extension).
20 июля
Разработчик по имени Джордж Андре объявил о разработке эмулятора
PalmOS для PocketPC (первая версия была недоступна пользователям).
По утверждению создателя, обеспечивалась работа не только с PalmOS
OS 2.0, но и более поздними редакциями.
27 июля
Стало известно, что компания Conduit Technologoes (она ранее перенесла
CoPilot на Palm-Size PC) работает над переносом POSE на Windows
CE.
Страница 1
2 3 4 5
6
|