Deja Vu
#04
31 марта 1998 |
|
Капля припоя - ZX-SPECTRUM NAVIGATOR v1.00beta.
SoundTrack: (C)97 AndrEw FER "1998 coMing" __________________________________________ Copyright (c) 1997 RomanRoms Software Co. Россия. Нижний Новгород. ────────────────────────────────────────── * * * ZX Spectrum Navigator v.1.00 BETA Hу что мне cказать, даже и не знаю... навигатоp как навигатоp, pаботает c обpа- зами TR-DOS диcков вcеми нами любимого ZX Spectrum'а. Cpазу cкажу, c TRD фоpматом. FDI делать не cобиpаюcь, потому что cчитаю что TRD наиболее близок к оpигиналу, да и к тому же лучшие эмулятоpы pаботают в большинcтве cвоем именно c этим фоpматом. Пpавда еcли будут наcтойчивые pекомендации по поддеpжке FDI, я подумаю. Ко вcему пpочему я не мог упуcтить из виду опять же вcеми нами любимые, а кому-- то жутко доcтавшие Хобетные файлы. Вообщем вот два фоpмата, c какими может пpоизво- дитьcя какая либо pабота, то бишь копиpо- вание (pc2pc, pc2zx, zx2pc, zx2zx), удале- ние и некотоpых cоздание. Я поcтаpалcя cделать интеpфейc cмахи- вающий на пpивычный петин ноpтон или вcем извеcтный Доc Hавигатоp. Различия я так понимаю в подcветке файлов и пpочей еpун- ды. Я cделал что то вpоде пеpключателя, еcть подcветка - нет подcтветки аля Доc Hавигатоp - петин ноpтон. Кому не нpавитcя палитpа (я увеpен, такие найдутьcя) мне чеcно говоpя как то по баpабану. Cобиpалcя cделать cовмеcтимоcть c Доc Hавигатоpcкой палитpой, увы.. Выход - [Alt+S] или в кон- фиге выключить Color. Также еcть pежим 30 cтpок, как обычно - [Alt+F10]. Итак, Вы на панели (хм... что-то мне эта фpаза напоминает :) PC: ------------------------------------------ Реализовано: копиpование файлов, уда- ление оных, как вcех cpазу, так и по одно- му, cоздание каталога, удаление пуcтого каталога. Я умышленно огpаничилcя этим cкудным набоpом cpедcтв, хотя в пpинципе удаление каталога(не пуcтого), его копиpо- вание cделал, но заREMил. Cчитаю что на пеpвых поpах это не нужно, не в этом cуть. Тепеpь о панели ZX: ------------------- Конечно - копиpование, удаление, ну куда без этого, пpавда? :) Удаленные файлы cпециально оcтавил видимыми, дабы вcегда можно было объективно оценить, что c этим диcком делать. Уплотнение, cамое пожалуй cложное что в TR-DOS еcть. Вcе пpавила pа- боты в TR-DOS я взял из книжки А.Лаpченко и H.Родионова "ZX Spectrum и TR-DOS для пользователей и пpогpамиcтов" (cм. пpило- жение). Да, кcтати, когда копиpуете откуда-- либо в PC, не пpовеpяетcя наличие файла c таким же именем, пpоcто cущеcтвующий тупо заменяетcя на новый. Пpи копиpовании из ZX в PC я поcтаpалcя избежать копиpования та- ких файлов как com1, lpt2, con, nul и т.д. Вcе недопуcтимые cимволы (">","","." и т.д.) заменяютcя cимволом "-", пpобелы - "_". Так что будте оcтоpожны, пpеcтупник вооpужен... ;) О cкоpоcти. ----------- Hекотоpые, да навеpное большинcтво cкажут мол медленно, а без кеша винта луч- ше бы и не запуcкал. Вcе дело в том что вcе опpеpации пpоводятcя c блоком данных pазмеpом 256 байт, т.е. в 1 cинклеpовcкий cектоp. Hу и так c cамого начала повелоcь и пеpеделывать мне уже лень. Иcключение cоcтавляет в копиpовании pc2pc. Об огpаничениях --------------- Они cоcтоят лишь в том что в памяти можно умеcтить только 700 файлов и диpек- тоpий, пpичем c инфоpмацией только о длин- не. Вpемя и дату не включил за ненадоб- ноcтью и из-за жуткой нехватки памяти(вcе в маccивы, никакого динамичеcкого pаcпpе- деления). В cледующих веpcиях думаю пеpе- делаю. Cм readme.!!! однако. Очень много памяти жpет запоминание заднего фона и фигуpка in-yan. Hе cтал я делать cоpтиpовку файлов. Это имеет пpин- ципиальное значение, я так понимаю. Да к тому же память, память, память... О вечном... о глюках :) ----------------------- Вообщем я выловил паpу глюков; пpи cлишком большом количеcтве файлов (около 680-700) начинают пpоиcходить интеpеcные вещи: Вам не дадут войти в подкаталог, или еще веcелее - диcк C не будет найден или еще чего-нибудь. Коpоче cмотpите, у меня в каталоге WINDOWS - под 250 файлов, в WINDOWSSYSTEM под 650. Вы когда-нибудь заходили в эти каталоги? Вы cвои *.trd файлы деpжите в таких каталогах? Вот и я тоже на это надеюcь... Иногда пpи pаботе в панели ZX че-то где-то подвиcает, и еcли поcтучать по кла- вишам - напечатаютcя. Вообщем введите там ему Ctrl+Z. Hо по-моему я это пофикcил. Об обpаботке ошибок ------------------- Я не cтал делать пугающие messages типа "Пpогpамма выполнила недопуcтимую опеpацию..." и вываливатьcя в ДОC c пошлой надпиcью "ERROR..." или того хуже - "Run-time error", пpоcто навигатоp гоpдо пpомолчит, cделает вид что ничего не пpои- зошло. Даже еcли вдpуг cлучитьcя что-то что я еще не вcтpечал, появитьcя культуp- ненькое кpаcное окошечко c cоответcвующей моpдой и вежливо попpоcит нажать <педаль ENTER> для выхода в ДОC. Для cебя я ввел такое понятие как "мультазадачные глюки". Это такие глюки... ну, напpимеp, в одной задаче pаботает на- вигатоp, а в дpугой кокой-нить идиот уда- ляет каталог, пеpеходит в навигатоp и cмотpит, что ему будет за попытку войти в неcущеcтвующий каталог. Поэтому технология cледующая: еcли вдpуг не будет найден pа- бочий файл, ищем pабочую(текущую) диpекто- pию. Еcли она не найдена - лезем в коpень диcка на котоpом она была. Еcли же и его нет, лезем в коpень диcка C: Hу а дальше только кpаcное окошечко... Думаю именно их(м.глюков) будет больше вcего. Конфиг ------ Файл sn.ini должен быть, вpоде... Hи- какого cетапа, вcе pуками. Добавлю еще что еcть еще одна опция CmdLine=1/0 - включа- ет/выключает "вид" командной cтpочки. Я не знаю зачем она Вам, может для оpиентиpов- ки... Это недоделанное "выполнение COMов, EXEшников и BATов". Региcтp pазличаетcя! Hу и так, до кучи... -------------------- Я конечно не пpетендую тагятьcя c та- кими величайшими пpоизведениями как ZCOP, HOBETA, а так же с многофункциональными ZX Comander'ами, и тем более c такими монcтpами как ZXTools. Вcе больше и больше вcтавала ДЛЯ МЕHЯ пpоблема пеpеноcа *.$* в *.trd и наобоpот, проблема сервиса, вот и pодилcя навигатоp. А pаз уж заикнулcя в эхе как-то, вот cобcно, как еcть. Может это изменит Ваше пpедcтавление о пpоцеccе пеpеноcа *.$* в *.trd и наобоpот. Благодаpноcти ------------- Mark Sverdlikov 2:5020/1072.27 - за фигуpку in-yan. Можно я ее для логотипчика к навигатоpу возьму? Андpею Лаpченко 2:5030/25.1 и Hиколаю Родионову 2:5015/25 - за книженцию. Вcегда хотел лично пожать pуку. Вcегда Ваш, RomanRom2. ужасна. v0.04b [!] Наконец-то сделан подсчет тактов ко- манд и замедление до уровня ориги- нального спектрума. [!] Добавлена эмуляция Kempston Mouse. [+] Опять немного оптимизирован код, уве- личена скорость. [-] Найден и исправлен баг с командой CPI который возник из-за совпадения имен макросов. [!] Добавлены абсолютно все недостающие команды процессора Z80. [-] Слегка исправлена эмуляция Kempston Mouse. v0.03b [-] Исправлена частота строк и кадров на 15.62KHz и 48.83Hz,так как предыдущие частоты были неправильно расчитаны. Теперь экран спектрума составляет 448x320 пикселов, что является полным частотным аналогом Pentagon'а 128. [-] Исправлено положение строчного сигна- ла гашения, вызывашего потемнение эк- рана на некоторых мониторах. [+] Добавлено несколько недокументирован- ных команд Z80. [!] Добавлена эмуляция Kemston Joystick'а на клавишах Home,End,Del,PgDn,Ctrl. [+] Опять немного оптимизирован код, уве- личена скорость. [+] Теперь во время работы запрещены пре- рывания таймера, а показания часов после выхода восстанавливаются по ча- сам реального времени. v0.02b [-] Исправлена команда Halt(не сбрасывал- ся Halt флаг при Reset'e). [-] Дешифрация адресов портов FE и 7FFD стала более 'грубой': теперь выборка порта FE происходит при сброшенном бите 0, а порта 7FFD при сброшенных битах 15 и 1. [+] Добавлена эмуляция регистров музы- кального сопроцессора. [+] Добавлено несколько недокументирован- ных команд Z80. [+] Значительно оптимизирован код, что дало существенное увеличение скорости работы. [+] Из порта 1F (Kempston Joystick)считы- вается 0. v0.01b [!] Первая бета-версия обладающая своим номером, умеет _только_ читать образы TR-DOS дисков (файл disk.trd),поддер- живает частоту кадров 50.6Hz и часто- ту строк 14.6KHz (что, как потом вы- яснилось, было ошибкой см. v0.03b). [*] Мерцание экрана, предельные чатоты работы монитора. Сведения об авторе Владимир Юдин aka Lion17, 2:5061/7.27, г.Ростов-на-Дону. Благодарности Медноногову Славе (2:5030/362.4) за информацию о Z80 и Kempston Mouse, Левандину Дмитрию (2:5061/2.71) за бета-тестирование, Михайлову Андрею (2:5050/16.16) за информацию о тактах процессора, Пяткову Андрею (2:5000/93.21) за рекомендации и софт с Enlight'a 96, Петрову Роману (2:5052/7.37) за информацию о музыкальном процессоре, Фрунзе Владимиру (2:469/32.7) за предложения и информацию об AY-Mouse, Alex Rybinsky за информацию об эмуляции AY. а также всем остальным любителям SPECCY поддержавшим меня. елый) ? (SS+C) / (серый) / (SS+V) * (серый) * (SS+B) + (серый) + (SS+K) Backspace Delete (CS+0) Page Up True Video (CS+3) Page Down Inv Video (CS+4) Серые стрелки лево (CS+5), право (CS+8), вниз (CS+6) и вверх (CS+7) 1-9 расшир. Kempston джойстик ESC Выход F1 Помощь по клавиатуре F2 Reset 48k F3 Reset 128k F4 Reset TR-DOS F5 Выбор диска для TR-DOS и установка/снятие защиты записи Джойстик. При включении соответствующих опций (панель диалога "Управление") аналоговый джойстик может работать в программах ZX- -Spectrum как Kempston (Kempston Interface I и II) и (или) как Sinclair(Interface II, клавиши "6"-"0") джойстики. Проверка нали- чия и калибровка джойстика происходит ав- томатически при запуске эмулятора. В этот момент ручка джойстика должна находиться в центральном положении. Эмулятор также имеет поддержку Kemps- ton джойстика на клавиатуре(клавиши"1"-"9" расширенной клавиатуры). Мышь. В эмуляторе поддерживается мышь. Ин- терфейс выбирается в панели диалога "Уп- равление" с помощью переключателя "Тип мы- ши". Также существует возможность установ- ки скорости перемещения и смены левой и правой кнопок мыши. Скорость. Программа имеет несколько возможных установок скорости работы: - Нормальная - скорость близкая к скорости оригинального Spectrum'ма (автоматическая настройка на быстродействие компьютера); - Максимальная - максимальная скорость, какая только возможна на данном компьюте- ре; - Ускоренная - скорость на 1/8 быстрее нормальной; - Замедленная - скорость на 1/8 медленнее нормальной; - Выборочная - скорость с использованием значений параметров, установленных пользо- вателем. В большинстве случаев можно устанавли- вать максимальную скорость: обычно, чем быстрее работает программа, тем лучше. При этом программы, синхронизированные с кад- ровыми прерываниями, будут работать как на оригинальном ZX-Spectrum (если установлена частота кадровых прерываний как на ориги- нале: 50 Hz). Но в некоторых случаях все-- таки необходима установка скорости, как в оригинале. При выборе нормальной скорости пра- вильная установка скоростных параметров будет произведена не на всех компьютерах. Если скорость отличается от оригинала нез- начительно, то можно выбрать ускоренную или замедленную скорости. Если же скорость отличается значительно или нужна более точная установка, то лучше воспользоваться выборочной скоростью. При установке выбо- рочной скорости Вам нужно ввести три пара- метра, от которых будет зависеть скорость работы - основной параметр скорости и два параметра скорости видеопамяти. Для установки основного параметра на образе диска "SPECTRUM.TRD" присутствует программа "SpdMain", с помощью которой можно измерить быстродействие. Результат работы этой программы на оригинальном Spectrum равен: 410 при запуске из режима 128k и 592 при запуске из режима 48k (зна- чения могут меняться при включении разных версий ROM, данная проверка производилась при стандартных ROM: 48k 1982 г. и 128k 1986 г.). Основной параметр скорости нужно установить так, чтобы результаты работы программы находились как можно ближе к этим значениям. Если при нулевом значении основного параметра результаты этой прог- раммы ниже, чем на оригинальном ZX-Spect- rum, то быстродействия Вашего компьютера недостаточно для работы эмулятора в реаль- ном времени. Для установки параметров скорости ви- деопамяти можно использовать программу "SpdScr" с этого же диска. На оригинальном ZX-Spectrum результаты этой программы оди- наковы: 44852. Устанавливать основной па- раметр скорости по результатам этой прог- раммы не рекомендуется, так как для изме- рения быстродействия она использует малый набор команд, а время выполнения команд на оригинальном Spectrum и на эмуляторе не всегда пропорциональны, поэтому установ- ленная скорость может отличаться от сред- ней. В данном случае параметры скорости видеопамяти нужно установить так, чтобы в результате программа выдавала как можно более близкие результаты. Некоторые программы могут работать не- корректно, сбрасываться или зависать при большом отличии скорости от оригинала (особенно,если эмулятор работает медленнее оригинала). Как правило, независимо от установки скорости в эмуляторе, желательно, чтобы скорость работы в TR-DOS была максимальна (даже если для работы программы требуется определенная скорость, во время работы с диском требования к скорости отсутствуют). Для этого включите опцию "Максимальная скорость в TR-DOS". Открытая архитектура. Модули. Эмулятор имеет возможность подключения дополнительных модулей. Это файлы, содер- жащие подпрограммы, которые будут работать в составе эмулятора. Модули могут выпол- нять разнообразные функции (например: под- держка дополнительных устройств, поддержка других форматов файлов, отладчики, измене- ние работы процессора и устройств в эмуля- торе, дополнительные возможности...). Для их подключения используйте панель диалога "Модули". После подключения модуля Вы можете установить его конфигурацию (Кнопка "Конфигурация" или двойной щелчок мыши). Все необходимое для создания модулей находится в директории ADDITION. В стан- дарной поставке эмулятора присутствуют пять дополнительных модулей: TIMES - подсчет тактов процессора и по достижении заданного числа тактов переклю- чение в режим ожидания. Если установлена опция "Пропуск прерываний", то отмена пре- рывания, если не достигнуто заданное коли- чество тактов. LOG - логический протокол работы (расши- ренный аналог того, который был в версиях 1.XX данного эмулятора). MEMPROFI - поддержка расширенной памяти Profi. MAGIC - поддержка кнопки Magic (NMI TR-DOS). REFRESH - обновление экрана. В некоторых мультизадачных системах на некоторых виде- окартах происходит некорректное восстанов- ление нестандартного видеорежима эмулято- ра. Данный модуль - поддержка горячей кла- виши обновления экрана. Экран. Кадровые прерывания. Видеоадаптер работает в нестандартном режиме 256x192 с большим бордюром, который по пропорциям экрана близок к экрану ори- гинального ZX-Spectrum. ZX-Spectrum имеет прерывание, которое синхронизировано с кадрами (кадровое пре- рывание). В эмуляторе предусмотрено три режима "генерации" кадрового прерывания (которые можно выбрать, установив соот- ветствующее значение параметра "Источник прерываний"): - Прерывания генерируются таймером. В этом режиме прерывания не синхронизированы с кадрами. Изображения на бордюре выглядят не так, как на оригинальном ZX-Spectrum, а также возможно моргание изображения и по- теря плавности движения объектов на экране (например: спрайтов в играх, букв в бегу- щей строке) в программах, синхронизирован- ных с прерываниями. При выборе этого режи- ма Вы можете установить частоту кадровых прерываний в Hz с помощью параметра "Час- тота прерываний" (может принимать значения от 20 Hz до 100 Hz, по умолчанию - 50 Hz, как у реального ZX-Spectrum). - Прерывания генерируются кадровым преры- ванием видеоадаптера. В этом режиме преры- вания синхронизированы с кадрами. Если Вы установили этот режим, то Вам надо устано- вить номер прерывания видеоадаптера (опция "IRQ VGA"). Частота прерываний зависит от частоты кадров. Примечание: не все видеоа- даптеры поддерживают кадровое прерывание, а также прерывание может быть заблокирова- но в установках BIOS Вашего компьютера. - Прерывания генерируются при обратном ходе луча по кадру. Этот режим отличается от предыдущего тем, что в нем программно отслеживается обратный ход луча по кадру. В этом режиме эмулятор работает медленнее, чем в остальных (из-за отслеживания обрат- ного хода луча), а также неправильно про- исходит настройка на быстродействие. Этот режим введен как альтернативный для тех, чей видеоадаптер не поддерживает кадровое прерывание. В нем возможен пропуск преры- вания (во время обратного хода луча эмуля- тор может, например, обрабатывать какое-- либо обращение к порту программы ZX-Spectrum, тем самым пропустить момент генерации прерывания). В программе предусмотрены видеорежимы с частотой кадров 50, 55, 60 и 75 Hz. - 50 Hz. Этот видеорежим близок по часто- те к ZX-Spectrum. Данный видеорежим имеет частоты, которые выходят за диапазон до- пустимых частот некоторых мониторов VGA и SVGA. Такие мониторы не будут "держать" этот видеорежим. Из-за низкой частоты ре- жима на высокочастотных мониторах изобра- жение сильно "мерцает". - 55 Hz. Промежуточный режим между 50 и 60 Hz. - 60 Hz. Видеорежим имеет стандартные для IBM частоты (видеорежим по частотам раз- верток эквивалентен режиму 320x240). Дан- ный видеорежим поддерживается на любом мо- ниторе VGA. - 75 Hz. Видеорежим имеет повышенные час- тоты. Примечание. От установки частоты прерываний может зависеть скорость выпол- нения программ, синхронизированных с пре- рываниями: скорость в целом, скорость ре- акции на клавиши, музыка на музыкальном синтезаторе, таймер... Дополнительные параметры. Особенности работы. - Параметр "Длительность прерывания" оп- ределяет количество команд процессора, в течение которых активен импульс прерывания (может принимать значения от 1 до 100, по умолчанию - 1). Опция введена для совмес- тимости с оригиналом (некоторые программы могут проверять значение этого параметра). - "Длина данных форматирования" - коли- чество байт данных, которые принимает ВГ93 при команде "Запись дорожки" (может прини- мать значения от 1 до 16384, по умолчанию - 1). Опция введена для совместимости с оригиналом (некоторые программы могут про- верять значение этого параметра). Чем меньше значение этого параметра, тем быст- рее работает форматирование диска в эму- ляторе. - Переключатель "Режим рестарта" влияет на режим, в котором окажется эмулятор пос- ле запуска кнопкой "Старт" основного меню. - Если флажок "Постоянная готовность дис- ка" включен, то никакие задержки при эму- ляции контроллера дисковода не осуществля- ются. При следующем обращении после пере- дачи вспомогательной команды контроллера, эта команда уже выполнена, а на следующее обращение после передачи любой другой ко- манды, контроллер готов к передаче или приему данных. Виртуальные дисководы всег- да "вращаются". В этом режиме эмулятор ра- ботает быстрее, но совместимость с ориги- налом ниже. Опция введена для совместимос- ти с оригиналом (некоторые программы могут проверять значение этого параметра). - Флажок "Чтение номера дорожки" влияет на первый байт данных (номер дорожки), ко- торый будет считан из ВГ при команде "Чте- ние адреса". Если флажок не установлен, то номер дорожки всегда 1. При таком значении флажка не работают некоторые программы. Если флажок установлен, то при команде "Чтение адреса" читается номер дорожки, на которой позиционирована головка дисковода. При этом TR-DOS форматирует диски как од- носторонние. - При включении опции "Автосохранение конфигурации" эмулятор автоматически сох- раняет текущую конфигурацию. - Некоторые стандартно форматированные дискеты не поддаются копированию в файл. Ошибка при этом возникает на первом секто- ре каждой дорожки и связана с недостаточ- ным для IBM AT расстоянием от начала до- рожки до начала первого сектора. Программа нормально работает с дисками, отформатиро- ванными на IBM специальными форматировщи- ками для TR-DOS (например, записанные этим же эмулятором), а также с дисками, отфор- матированными более корректными формати- ровщиками на Spectrum. Проблему можно устранить и сменой на другую модель диско- вода с контроллером (в основном это отно- сится к контроллеру дисковода). Может по- мочь метод частичной заклейки отверстия синхронизации на дискете: заклейте чем-ни- будь непрозрачным приблизительно половину отверстия, которое находится рядом с центральным отверстием на дискете так, чтобы луч, который через него светит, пре- рывался чуть раньше. Этого хватит для чте- ния некоторых ранее нечитаемых дискет. Благодарности. Особая благодарность: Алексею Емелья- нову (AvE), Андрею Замесову, Сергею Юрину, Александру Микляеву, а также всем, кто вы- разил свои пожелания и замечания.
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября