╔────────────────────╗ │ ─═─ ПРОЕКТ ─═─ │ ╚────────────────────╝ Борис Курицын ───────────── 257010 Украина, г.Черкассы, а/я 1529 Как мы будем программировать на Speccy в ближайшем будущем. Умерев в Англии и на Западе в целом, как это не парадоксально, в странах СНГ ZX Spectrum-совместимые компьютеры переживают бум. Появление поистине проффесионально написанных программ, в первую очередь, игр, показывает, что это семейство компью- теров еще имеет некоторый потенциал. Постепенно формируется рынок прог- раммного обеспечения ZX Spectrum-совмести- мых компьютеров. Тут есть все: игры, прик- ладные программы, программы различного сервисного назначения. Некоторые из них написаны хорошо, множество -- плохо, еди- ницы -- отлично. На чем же их пишут? Что же из инструментального обеспечения испрользуют наши программисты? В 99% слу- чаев это ассемблер -- от старого доброго Hisoft GENS Assembler 4.1 до новыйших TASM, EDAS и т.п. К ассемблеру привыкли. Каждая попытка написать что нибудь серъезное на Hisoft С Compiler, Hisoft Pascal и т.п. заканчива- лась провалом -- "качество" этих компиля- торов поражает. Кроме того, языки высокого уровня типа Си или Паскаля дают слишком объемный код, чтобы наши программисты, воспитанные на ассемблере, могли с ним согласиться. Но программирование на ассемблере -- это ненормально! Ни на одной модели, ни в одном классе компьютеров центральным инструментальным средством не является ас- семблер! Его место -программирование кри- тичных ресурсоемких или времяемких участков программ, драйверов и т.п. Даже если Ваша программа действительно критична в этом смысле, то (как показывает статис- тика) эту критичность вызывают 10% кода: их нужно писать на ассемблере. Но ос- тальные 90% кода можно писать на достаточ- но высокоуровневом языке! Учитывая все вышесказанное, у автора дозрела наконец-то давно вынашиваемая идея создать эффективный, низкоуровневый, но машинно-независимый язык программирования общего назначения и реализовать его компи- лятор на ZX-Spectrum. Предполагается, что язык будет нас- только низкоуровневым, что по качеству ко- да будет близок к ассемблеру, но достаточ- но абстрактен и машинно-независим, чтобы подготовленный (и не очень) пользователь смог сократить время написания своих прог- рамм с использованием этого языка в 5-10 раз по сравнению с ассемблером. Язык проектируется как Си-подобный, но еще более лаконичный и оптимальный для 8-разрядных микрокомпьютеров. Его уровень где-то посредине между "С" и "С--". Кто не знает, "С--" это Си-подобный низкоуровне- вый слабомашинно-зависимый язык программи- рования для IBM-совместимых машин. Язык обязательно будет содержать про- межуточный объектный уровень кода -- уро- вень компилированого нерелоцированного ко- да с таблицей внешних ссылок и опублико- ванных символов. Ни одна "нормальная" сис- тема программирования не обходится без об- ъектного уровня. Одно из его преимуществ заключаются в том, что программист может создать библиотеку программ определенного назначения и продавать ее в виде объектно- го файла и файла внешних деклараций. Такую библиотеку можно купить, использовать при программировании, не нельзя изменить, пе- рерыть, перекопать и т.д., как очень любят делать наши хаккеры. А все потому, что об- ъектный формат не будет разглашаться, как это обычно и делается. Кроме того, при на- личии объектного уровня и разделении большой программы на несколько файлов тре- буется перекомпиляция только изменившегося файла, что кардинально сокращает время компиляции. На первом этапе будет разработан ком- пилятор и компоновщик (текст программы должен будет готовиться в каком-нибудь ре- дакторе). На втором этапе будет создана интегрированная среда. Возможно, на трет- ьем -- интеллектуальный высокоуровневый отладчик на уровне исходного текста(!). Язык будет содержать набор библиотек, при помощи которых можно реализовать что угодно: от включения в программу музыки для АУ до организации оконного интерфейса в программе. Кроме того, на уровне языка будут поддержаны исключения с многоуровне- вым перехватом (как в С++). Предполагается, что язык будет рас- постраняться без какой-либо защиты по принципу Shareware. T.е., откуда бы Вы не получили копию, Вы можете ее зарегистриро- вать за небольшую плату, написав авторам или дистрибуторам. Тогда Вы получаете пос- леднюю версию программы, печатное руко- водство программиста и пользователя и но- вейшие библиотеки, утилиты. Сечас идет важный этап -- проработка внутренних соглашений языка, разработка формата объектного файла и объектной биб- лиотеки, продумывание алгоритма компоновки объектных файлов, алгоритма компиляции, синтаксиса языка. Проводятся другие пред- варительные исследования. Пока что команда инициаторов состоит из автора (Б.Курицын), К. Tetepuha (KSoft) и К.Вышемирского (Tired Wanderer). Все это автор написал с целью вынести разрабатываемый проект на всеобщее обсуж- дение. Нам очень важно знать, нужен ли та- кой язык, каким бы вы хотели его видеть, какими возможностями он должен обладать. Пожалуйста, пишите нам (адрес в заголовке статьи). Присылайте свои идеи и пожелания. Кстати, Вы тоже можете стать одним из раз- работчиков. Если Вы заинтересованы в ка- ком-либо из аспектов (может, просто, как будущий пользователь языка), также напиши- те нам. Все, кто нам напишет, бесплатно (за стоимость лишь дискет) получат Бета-- версию компилятора для тестирования, а при покупке коммерческой версии будут иметь существенные льготы. И еще: язык пока не имеет названия. Придумавший лучшее название получит полную коммерческую версию компилятора бесплатно. "S": Вот такое вот письмо пришло из горо- да Черкассы, что на Украине, от Бориса Ку- рицына. Как мне кажется это уже назревало давно, всем уже порядком поднадоели все эти TASM'ы. Конечно, писать на ассемблере для нас пока привычнее всего, но как верно подметил автор статьи, на ассемблере никто ничего не пишет, на тех-же IBM и AMIGA. И если скорость работы такого компилятора будет не очень отличаться от ассемблера, то почему-бы и не сделать его? Итак, мы объявляем всесоюзное (?) рассмотрение этого вопроса. Отклики и предложения направляйте непосредственно авторам в Черкассы, но можете отправить и нам - мы их опубликуем, а также перешлем авторам. А благодаря фирме 'MAGIC SOFT' из Москвы, наш журнал читают уже не только по России - Москва, Питер, Уфа, Челябинск, но и за ее пределами - Украина (Харьков, Чер- кассы), Белоруссия (Минск), так что по по- воду читаемости мы, как мне кажется, приб- лижаемся к SPECTROFON'у, который в послед- нем номере совсем с ума спятил. Вот на такой оптимистичной ноте мы и за- кончим этот раздел, если будут отклики вскоре после выхода этого номера, то все их мы включим в шестой номер. Описание работы сканирующего устройства. * СКАНЕР V-1 * 1. Вводная часть. Если ваш компьютер 'SPECtRUM' оснащен принтером и кемпстон джойстиком (принтер желательно струйный типа MC-6312, СПРИНтЕР и др.), a также при желании иметь еще у себя и сканирующее устройство - то считайте, что данное устройство у вас уже есть. C его помощью вы сможете ска- нировать рисунки, заставки, фо- тогрaфии, схемы с журналов, га- зет и книг для использования их при оформлении ваших программ. Режимы сканирования задаются программой поддержки. Пользуясь приведенными ниже схемами и рекомендациями, вы сможете самостоятельно изгото- вить его аппаратную часть. 2. Принцип работы сканирующего устройства. Блок-схема сканирующего уст- ройствa показана на рис.1, из кото- рой видны основные функциональные сх- емы компьютера, п- puhtepa, блока со- глaсовaния (БС) и сканирующей голов- ки. Переменным ре- зистором (R1) за- дается чувствите- льность сканирующего устройства. Принцип сканирования изображе- ния показан на рис.2. Луч света от мини-лампочки Л1, отражаясь от светлых участков ckahupyemoro изоб- ражения (процент отрaжeнного света зависит от то- нaльности участка) попадает через от- bepctue 'Д' диа- метром 0.3-0.8 мм на фототрaнзистор Фт с высоким коэф- фициeнтом усиления или дорaптопaры АОт 116, АОт 120 в фототрaнзистор и вырaбaтыжaeт сигнал на выходе фототр-ра, ко- торый через каскад усиления бло- ка согласования направляется на разъем кемпстон джойстика (к-т 'вниз'). Сканируемое изображение (1) ус- тaнaвливaeтся на валу (4) прин- тера (3) вместо бумаги и зaжимaeтся прижимны- ми роликами (5) см. рис.3. Взамен печатаю- щей струйной головки на каретку (6) уста- нaвливaeтся считывaю- щая головка (2). 3atem загрузить программу под- держки сканера. После выбора нужного формата скaнирожaния, принтер переходит в режим 'ус- ловной печати строки' при кото- ром ГС передает считывaeмую ин- формацию на экран монитора. 3. Считывающая головка. Cчитывaющую головку (ГС) можно изготовить из отрaботaвшeй струйной печатающей го- ловки. Порядок ee изго- товлeния показан на рис.4 - рис.8. Для это- го, удалив из печатаю- щей головки нaполнитeль для чернил, сделайте на лицевой поверхности 'В' окно размером 10*16 мм, в которое за- тем вклeим фотоблок считывающей головки, согласно рис.5. Конст- рукция фотоблокa ГС по- казана на рис.6. Его корпус лучше изготовить из виниплaстa или эбо- нита размером 10*10*16 мм. На верхней поверхности закрепляется лампочка Л1 с отрaжaющим экраном (3). 3atem необходимо установить в просвeрлeнноe от- bepctue (под углом 30-40 градусов) колпачок (4) с ко- либровaнным от- bepctuem 'Д' и фо- тотрaнзистор (5). Лампочку и фотот- рaнзистор ФТ соеди- нить с БС гибкими проводами во фто- роплaстовой изоля- ции длиной 40-50 см. На рис.7 пока- зан вид головки до модернизации, a на рис.8 показана ГС после установки фо- тоблокa. 4. Блок согласования. Электрическая схема блока указа- на на рис.9 и представляет собой обычный транзисторный ключ с логикой (триггер шмидта), прeднaз- нaчeнный для соз- дания на выходе блока 'K' сигнала в виде прямоуголь- ного импульса. При достаточной чувст- витeльности испо- льзуeмого фото- транзистора можно обойтись одним каскадом усиления. Применение фоторe- зисторов вместо фототрaнзисторов нежелательно по причине их низкого быстро- действия. Сопротивление R2+ под- бирaeтся в процессе настройки блока. Выход 'K' БС соединить с контактом 'вниз' гнезда кемпстон джойстика, так как в программе поддержки заложен опрос состоя- ния именно этого контакта. 5. Программа поддержки. Представленная программа сос- тоит из двух частей: бейсик и кодовый блок. Бейсик - определя- ет задание формата, позволяет отрегулировать задержки при ска- hupobahuu изображения, в случае их необходимости при согласова- нии с принтером, a так же произ- вести сброс полученного изобра- жения на дискету. Кодовый блок предназначен для иницилизaции и перевода принтера в режим 'условной печати листа', опроса порта кемпстон джойстика на состояние контакта 'вниз', обработки информации со сканиру- ющей головки и вывода ckahupye- мого изображения на экран мони- тора. По окончании работы кодо- вого блока управление передается бейсик программе. В кодовом блоке использована процедура вывода байта на прин- тер (драйвер печати) из системы iS-DOS, что дает возможность от- казаться от использования коман- ды LPRINt. В программе поддержки предло- жен выбор работы с одним из принтеров: 1.Принтер 'MC-6312' 2.Принтер 'CПРИНт' Изменяя задержки в бейсик программе, вы сможете настроить изготовленное вами сканирующее устройство под свой принтер. Адреса задержек. Ниже приведены в таблице адре- са задержек и их расшифровка: 1. Регулировка гори- зонтaльного расстояния между скaнируeмыми точками. 2. Размер шага скани- рования по вертикали (Н*1/288 дюйма). 3. Компенсация уста- новки точки на экран. 4. Количество задер- жек принтера после сканирования строки. 5. Величина задержки принтера после пробега строки (от 30000 до 60000). Одновременная рeгули- ровка 4 и 5 задержки позволяет установить начало сканирования изображения. 6. Величина задержки принтера после его инициализации и otpa- ботки холостого хода. Примечание: 1/288 дюйма - это максимальная разрешающая способ- ность струйного принтера и сле- дожaтeльно данного скaнируювeго устройства. 6. Заключение. Право на распространение данной версии программы принадлежит журналу SPECtROPHOBY. Автор: Юдин Виктор Викторович. 347340, Ростовская обл. г.Волгодонск-22, пр.Строителей, дом 16, кв.87. В подготовке и оформлении прог- раммы принимали участие: Иванищев Д.M. *DIMiK SOFt* 347340, Ростовская обл., г.Волгодонск-11, пр.Строителей, дом 4/6, кв.24. Дрeмов A.П. 347340, Ростовская обл., г.Волгодонск, ул.Ленинградская, дом 1, кв.100. По всем вопросам возникшим у вас в ходе изготовления сканиру- ющего устройства, можно обра- титься к автору, по выше указан- ному адресу. При запросе вложить чистый конверт для ответа. В настоящее время автором раз- рaботaны схемы и ведется опроби- рование сканирующих устройств с двумя и тремя градациями контрасности. От редакции журнала. Нам было порууено сообщить Вам, уто работа над третьей вер- сией программы практиуески за- вершена, и в доказательство это- му, в приложении есть ДЕМО рабо- ты СКАНЕРа этой третьей версии. А также, я надеюсь, продолжа- ются попытки переделать СКАНЕР под игольуатый принтер (ROBOTRON, СМбЗ37).