User Tag List

Страница 4 из 7 ПерваяПервая 1234567 ПоследняяПоследняя
Показано с 31 по 40 из 61

Тема: Sinclair BASIC (неформальный опрос)

  1. #31

    Регистрация
    03.03.2008
    Адрес
    Петербург
    Сообщений
    279
    Спасибо Благодарностей отдано 
    69
    Спасибо Благодарностей получено 
    22
    Поблагодарили
    16 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от newart Посмотреть сообщение
    в какой-то момент удалось даже заинтересовать 8 летнию младшую сестру, рисовали вместе рисунки с помощью встроеных комманд line и circle и музыку на beep
    newart, ваши совместные занятия помогли сестре на уроках информатики? Сказались на выборе ее профессии?


    Цитата Сообщение от newart Посмотреть сообщение
    Когда перешел на KAY 256
    Извиняюсь, что не в тему. Почему KAY, а не, допустим, Scorpion? Scorpion ИМХО интереснее по возможностям.

  2. #31
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #32

    Регистрация
    23.11.2007
    Адрес
    Ростов-на-Дону
    Сообщений
    193
    Спасибо Благодарностей отдано 
    42
    Спасибо Благодарностей получено 
    125
    Поблагодарили
    68 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    BASIC был первым языком который я изучил (хотя неполностью; я не знал DEF FN, FN и DIM, как минимум). Изучал в основном исследуя чужие системные программы написанные на нём. Немного помогли книги, но хороших книг у меня не было. Написал на нём даже коммандер. На нём я научился программировать, если это так можно назвать, примерно за 3-4 месяца в возрасте 12 лет. После этого интерес к нему пропал из-за его низкой скорости и ограниченных возможностей. На нём нельзя было сделать то что я хотел, и я понимал что это не из-за моей неспособности, а именно из-за ограничений языка. Например я не мог сделать плавную бегущую строку на бейсике (можно было сделать сдвигающуюся на одно знакоместо; я потом сделал и сдвигающуюся на 1 бит, но для этого пришлось выдрать чужой машинный код который делает этот сдвиг и вызывать его из бейсика в цикле, подставляя символы уже бейсиком). Ну и многие другие эффекты которые я видел на Спектруме и хотел сделать что-то своё аналогичное, но на бейсике это было невозможно. Помню сколько мучений стоило научиться запрещать прерывание программы по BREAK (мне хотелось достичь недоступности исходного кода для пользователя, как это у программ на асме). Короче, бейсик по сравнению с ассемблером был шлаком. Спектрум я тогда бросил практически на год, возможно и потому что изучить ассемблер тогда не удалось - не было хороших книг у меня по нему, а интерес к бейсику пропал из-за исчерпания его возможностей. Ассемблер нельзя изучить просто экспериментами, без литературы, по крайней мере мне не удалось. Бейсик был хорош тем что его легко видеть в чужих программах и его я смог изучить практически не имея литературы, потому что исходный код доступен и легко читаем, в отличие от асма. Сами чужие програмы на бейсике и есть литература по программированию. Спустя год я стал общаться с Diavol (он потом через год станет участником OHG), который меня очень быстро научил ассемблеру (а вот как он его изучил я не знаю). Тогда я помню еще по-началу какое-то время писал алгоритмы на бейсике и потом переводил на асм, потому что это было проще чем писать сразу на асме, но это длилось не долго и потом я научился писать на асме непосредственно. После этого я к бейсику не возвращался никогда и воспоминания у меня о нём, сформированные еще в 12 лет, негативные из-за его скорости и ограниченности. Хотя сейчас понимаю что некоторые его недостатки, такие как доступность исходного кода всем, помогли мне легко освоить программирование практически не имея литературы.

    Эти 2 пользователя(ей) поблагодарили CPLx за это полезное сообщение:

    Conan(23.03.2023), Копейкин(22.03.2023)

  4. #33

    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,691
    Спасибо Благодарностей отдано 
    302
    Спасибо Благодарностей получено 
    223
    Поблагодарили
    159 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CPLx Посмотреть сообщение
    сделать плавную бегущую строку на бейсике (можно было сделать сдвигающуюся на одно знакоместо
    Можно сделать 8 версий шрифта, сдвинутых на 1 пиксель, и печатать этим. Конечно, неудобно печатать каждую букву двумя кусками через over, но зато чистый бейсик.
    Heavy on the disasm
    Eric and the disasm
    Mask 3: Venom strikes disasm
    Bard's disasm

  5. #34

    Регистрация
    23.11.2007
    Адрес
    Ростов-на-Дону
    Сообщений
    193
    Спасибо Благодарностей отдано 
    42
    Спасибо Благодарностей получено 
    125
    Поблагодарили
    68 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Bedazzle Посмотреть сообщение
    Можно сделать 8 версий шрифта, сдвинутых на 1 пиксель, и печатать этим. Конечно, неудобно печатать каждую букву двумя кусками через over, но зато чистый бейсик.
    Да, вроде можно сделать так. По-моему даже можно сразу строкой напечатать. Надо будет напечатать две строки поверх друг друга. Но я тогда не догадался так сделать. А если печатать посимвольно, то думаю что скорость может оказаться очень низкой.

  6. #35

    Регистрация
    22.01.2005
    Адрес
    Moscow
    Сообщений
    2,250
    Спасибо Благодарностей отдано 
    42
    Спасибо Благодарностей получено 
    282
    Поблагодарили
    109 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CPLx Посмотреть сообщение
    Помню сколько мучений стоило научиться запрещать прерывание программы по BREAK (мне хотелось достичь недоступности исходного кода для пользователя, как это у программ на асме). Короче, бейсик по сравнению с ассемблером был шлаком.
    В 1989 (или 90?) году Леонид Ермаков (автор кода для NEXT ROM VIDEO) переделывал для некоторых игр кассетные загрузчики на дисковые. Одна из игрушек (?) стартовала очень интересно: после загрузки блока кода она делала несколько POKE и PEEK в область Бейсика и "сама-собой" запускалась. На мой вопрос, а разве нельзя понять, что же она делает, он грустно ответил: как работает интерпретатор Бейсика никто толком не знает... (полного дизассемблера в тот момент еще удалось найти).

    Этот пользователь поблагодарил Conan за это полезное сообщение:

    Barmaley_m(29.03.2023)

  7. #36

    Регистрация
    23.11.2007
    Адрес
    Ростов-на-Дону
    Сообщений
    193
    Спасибо Благодарностей отдано 
    42
    Спасибо Благодарностей получено 
    125
    Поблагодарили
    68 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Conan Посмотреть сообщение
    Одна из игрушек (?) стартовала очень интересно: после загрузки блока кода она делала несколько POKE и PEEK в область Бейсика и "сама-собой" запускалась. На мой вопрос, а разве нельзя понять, что же она делает, он грустно ответил: как работает интерпретатор Бейсика никто толком не знает... (полного дизассемблера в тот момент еще удалось найти).
    По-моему в переменных бейсика где-то есть адрес следующей бейсик-инструкции. Может он его и поменял, передав управление на скрытый бейсик (или налету написанный, раз в область кода писалось там), который уже вызвал код через USR. Ну это как бы я попытался сделать если бы мне заказали такое.
    Вообще, такого рода вещи были самыми интересными для меня тогда. Интересны потому что загадочны, и эта загадочность манила. Это уже защита по существу. Но конкретно такой я не встречал.

  8. #37

    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    14,292
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    203
    Спасибо Благодарностей получено 
    1,456
    Поблагодарили
    946 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Conan Посмотреть сообщение
    после загрузки блока кода она делала несколько POKE и PEEK в область Бейсика и "сама-собой" запускалась.
    там надо было всего лишь знать что содержится в системных переменных которые меняются.
    подменялся адрес обработки ошибки и когда она встречалась происходил переход на тот адрес что подставил пользователь.
    ....
    примерно так работают и все расширения бейсика (beta/mega/laser и.т.д.) собственный обработчик ошибок позволяет добавлять новые команды.

    Эти 2 пользователя(ей) поблагодарили goodboy за это полезное сообщение:

    Barmaley_m(29.03.2023), CPLx(24.03.2023)

  9. #38

    Регистрация
    22.01.2005
    Адрес
    Moscow
    Сообщений
    2,250
    Спасибо Благодарностей отдано 
    42
    Спасибо Благодарностей получено 
    282
    Поблагодарили
    109 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от goodboy Посмотреть сообщение
    примерно так работают и все расширения бейсика (beta/mega/laser и.т.д.) собственный обработчик ошибок позволяет добавлять новые команды.
    Совершенно справедливо сказано: после того как Леонид Ермаков вместе со мной собрал свой "Пентагон 48", большим продвижением в изучении Бейсика и TR-DOS стало короткое (буквально одна страничка) описание системных переменных, которое удалось найти через знакомых на радиорынке. Описание (полное) Бейсика и дизассемблер ПЗУ появилось в доступе позднее.

  10. #39

    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,089
    Спасибо Благодарностей отдано 
    281
    Спасибо Благодарностей получено 
    70
    Поблагодарили
    49 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Conan Посмотреть сообщение
    Одна из игрушек (?) стартовала очень интересно: после загрузки блока кода она делала несколько POKE и PEEK в область Бейсика и "сама-собой" запускалась. На мой вопрос, а разве нельзя понять, что же она делает, он грустно ответил: как работает интерпретатор Бейсика никто толком не знает... (полного дизассемблера в тот момент еще удалось найти).
    Вероятно, речь идет о защите Bill Gilbert, которая встречалась во многих играх. Там бейсик-загрузчик состоит из двух бейсик-блоков, один короче, второй длиннее. Второй обычно назывался "* Loader *". Там было несколько "невидимых" нулевых строк, состоящих из команд POKE и PEEK, и больше ничего. Понять, как запускается машинный код, для начинающего непросто, но при наличии таблицы системных переменных (у меня она поставлялась в инструкции к компьютеру "Орель БК-08") было возможно.

    Команды POKE и PEEK содержали "ложные" адреса - там в тексте стояли одни числа, но бейсик воспринимал другие. После восстановления истинных адресов становится понятно, что из переменной ERR-SP (23613) считывался адрес, где подменялся адрес обработчика ошибок на точку запуска машинного кода. Когда бейсик заканчивал исполнение программы "ошибкой" 0 OK, 0:1, то машинный код и запускался. Ведь с этой точки зрения OK ничем не отличается от прочих ошибок.

    Сам машинный код в бейсик-части виден не был, он размещался в области бейсик-переменных.

    Но этот трюк был лишь первой ступенью весьма непростой защиты, применявшейся в том загрузчике. Где-то мелькала информация, что эта защита была пародией или развитием знаменитой Speedlock Protection, но я точно не знаю, оригинальный Speedlock никогда не ломал. А по сложности взлома эта защита была для меня самой трудной. Даже загрузчики от Nicolas Rodionov были проще.

    Машинный код в этом "* Loader *" содержал сначала несколько сот команд запутанного ассемблера, а потом там была ксорка с регистром R, реализованная примерно так:
    LD A,R
    XOR (HL)
    LD (HL),A
    LDI
    RET PO
    DEC SP
    DEC SP
    RET PE

    Сам цикл крутился по команде RET PE - адрес "возврата" указывал на первую команду цикла. Чисто технически, когда ломал это, я не имел в распоряжении монитора, корректно работающего с регистром R, а инициализировался этот регистр в самом начале "мусорного" кода, расположенного перед циклом. Поэтому было трудно вернуться в бейсик после расксорки.

    После первой расксорки была вторая примерно такая же, но попроще, за ней третья. И только после третьей был уже "голый" машинный код собственно загрузчика.

    В конце концов в конце 1992г мне удалось практически полностью понять эту защиту, немного усилить ее и сделать на ее базе свой загрузчик для одной из игр.

    Отдельного внимания заслуживает первый, более короткий бейсик-блок, который идет на кассете перед "* Loader *". Если просто задать команду LOAD "" и загрузить только "* Loader *" - то он не запустится, а произойдет сбой. Что делает первая бейсик-программа, после которой запускается "* Loader *"? Это очень трудный вопрос. В первой бейсик-программе тоже содержится машинный код. Он запускается явно, но разобраться в нем мне так в те годы и не удалось. Помог случай - попалась более ранняя версия защиты, у которой первый бейсик-блок машинного кода не содержал, но там была команда CLEAR 65535. Как выяснилось, исполнение этой команды позволяет после сброса запускать "* Loader *" непосредственно. Очевидно, машинный код, содержащийся в первом блоке, фактически делал то же самое, что CLEAR 65535, но каким-то странным образом. Как именно - я в те годы так и не разобрался.

    Эти 9 пользователя(ей) поблагодарили Barmaley_m за это полезное сообщение:

    AndTorp(06.04.2023), Conan(30.03.2023), CPLx(29.03.2023), creator(29.03.2023), Denn(08.04.2023), newart(30.03.2023), Shofer(29.03.2023), SoftLight(29.03.2023), Копейкин(29.03.2023)

  11. #40

    Регистрация
    01.04.2020
    Адрес
    г. Екатеринбург
    Сообщений
    573
    Спасибо Благодарностей отдано 
    214
    Спасибо Благодарностей получено 
    156
    Поблагодарили
    109 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В 91-м году добрался я до Спектрума. И да, бейсик - это было интересно. Естественно, PRINT - первый оператор. Потом захотелось сделать титры из Терминатора-1, когда титры печатаются неким курсором, а потом мерцающий фейдаут. Потом подключали гирлянды к порту бордера и управляли из бейсика

Страница 4 из 7 ПерваяПервая 1234567 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 0
    Последнее: 18.07.2016, 16:23
  2. CharAde graphics engine for Sinclair BASIC
    от baxter в разделе Игры
    Ответов: 0
    Последнее: 28.10.2015, 22:36
  3. Новодел от Sir Clive Sinclair - Sinclair ZX Spectrum Vega
    от Anubis_OD в разделе Новости
    Ответов: 73
    Последнее: 05.12.2014, 23:26
  4. Ответов: 16
    Последнее: 07.05.2012, 17:43
  5. Ответов: 4
    Последнее: 08.12.2010, 17:23

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •