Важная информация

User Tag List

Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 26

Тема: Старый-Новый Язык Noahsoft PL65

  1. #1
    Activist Аватар для ezswift
    Регистрация
    26.02.2011
    Адрес
    Москва
    Сообщений
    258
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    25
    Поблагодарили
    18 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Старый-Новый Язык Noahsoft PL65

    Здравствуйте друзья!

    В данной теме мне бы хотелось обсуждать давно забытый язык программирования Noahsoft PL65.
    Ноасофт в переводе Софт Ноя. (Это тот, кто с ковчегом намыкался.)

    Этот язык ничего общего не имеет ни с PL/1, ни PL/65. Просто - другой язык.
    В нём, как в Ноевом Ковчеге, сохранены все лучшие возможности таких языков как Алгол, Бейсик, Форт, Лисп, Допотопный Си (ешё до K&R C) и Ассемблер.

    Все библиотеки в нём текстовые, их много и они покрывают все потребности/особенности Атари.
    Программы компилируются с Диска на Диск, поэтому величина текстов не особенно существенна.
    Это полноценная программная среда включающая Редактор, Компилятор и Оболочку среды.

    Он пришёл к нам со времени, когда ещё никто не знал какими должны быть языки программирования.
    Тем не менее я люблю его, написал для него парочку библиотек и опубликовал парочку видео на ютьюбе.

    Вот ссылочки:
    https://www.youtube.com/watch?v=oeg5fF398nM&t=323s
    https://www.youtube.com/watch?v=4r8ibmREj04&t=38s

    Ваш ezswift
    MAC и PC - это всего лишь периферия для Атари...
    130XE|XC12|CA2001|XF551|IDEPlus2.0|SIO2SD|SIO2IDE| RAM576XE+Covoх|SIO2PC|MAXFLASH8|MAXFLASH1|The Ultimate Cartridge|

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

  3. #2
    Activist Аватар для ezswift
    Регистрация
    26.02.2011
    Адрес
    Москва
    Сообщений
    258
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    25
    Поблагодарили
    18 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Ещё о PL65

    Здравствуйте, друзья!

    Чтобы не быть голословным, предлагаю Вашему вниманию Сниппеты кода, где явно видно необычное применение PL65.

    1) В PL65 существуют Абсолютные как в ассемблере целые переменные
    Код:
    BYTE NMIEN=$D40E ! Определение Абсолютного целого
    ...
    NMIEN=$C0         ! Присваивание этому абсолютному адресу значения
    2) А вот, следующий код демонстрирует поведение PL65 очень похожее на стэковый язык Форт.
    Код:
    PROC POS(INT col=$55 BYTE row=$54)
    BEGIN END
    Я имею ввиду, что данные на стэке, полученные из формальных параметров,
    которые типизируются прямо в списке формальных параметров как абсолютные целые,
    как в форте сразу же из стэка поступают в необходимые ячейки памяти.
    Больше ничего делать программе не нужно.

    3) А вот этот код по поведению похож на форму Лиспа LAMBDA, где Лямбда это определение функции,
    которое может и существовать и вычисляться отдельно от объявления, даже без имени ...
    Код:
    PROC WRTSTR(INT addr,len) FORWARD ! Это объявление процедуры
    ...
    BODY WRTSTR                          ! А это её определение (что, собственно, она делает) ...
    BEGIN                                 ! Как видите, не заданы ранее описанные параметры
      PCHAR(0,addr,len)                 ! Вызов библиотечной процедуры
    END
    4) ... и даже быть аргументом другой функции ...
    Я имею ввиду здесь, что арументы из ранее описанной процедуры POS, при таком её вызове,
    не стягиваются со стэка, а напрямую передаются в процедуру PLOT, что экономит машинное время,
    затрачиваемое обычно на подготовку стэка для любой процедуры.
    Код:
    PROC PLOT(PROC POS) ! Earlier defined...
    BEGIN PUT(6,color) END
    5) А это ПРИМАТИВНАЯ(со звёздочкой), от слова Примат, то есть ПРЕДПОЧИТАЕМАЯ,
    процедура на встроенном ассемблере.
    Это означает, что PL65, убирает прочь свои руки от ассемблирования.
    Это просто библиотечная процедура CIO.
    Разница с ассемблером в том, что PL65 использует свой собственный программный стэк,
    в отличие от аппаратного стэка процессора, применяя свою собственную
    внутреннюю переменную STACK и что регистр процессора X используется в PL65 только
    для обслуживания программного стэка, а значит до его использования должен быть сохранён
    во встроенной переменной XSAVE и после его использования, восстановлен из этой переменной.
    Код:
    PROC CIO*(BYTE iocb BYTE com INT addr,len)
    BEGIN
     LDA STACK+6,X
     ASLA ASLA ASLA ASLA
     TAY 
     LDA STACK+4,X STA ICCOM,Y
     LDA STACK+2,X STA ICBAL,Y
     LDA STACK+3,X STA ICBAH,Y
     LDA STACK,X   STA ICBLL,Y
     LDA STACK+1,X STA ICBLH,Y
     TXA CLC
     ADC #8 STA XSAVE
     TYA TAX 
     LDA OCHAR
     JSR $E456 BMI ioerr
     LDX XSAVE RETURN
    :ioerr LDX XSAVE
     DEX DEX TYA
     STA STACK,X
     LDA #0 STA STACK+1,X
     ERROR*()
     WRTSTR("Error ")
     WRITE(ERRNUM)
    END
    6) Из Бейсика в PL65 сохранены операторы DATA, TRAP NOTRAP ON GOTO.
    Как Вы понимаете, я например могу использовать DATA задаваемые в Бейсике
    как инлайн код в PL65, задавая таким образом, например шрифт
    или сассемблированный код Бейсика, применив лишь незначительные изменения.
    заменяя лишь PLA на PULL и PHA на PUSH.

    Ну, что? Нравится ?..
    ez

    PS Я, кстати, добавил ещё видео
    https://www.youtube.com/watch?v=NlBwBybF9Us
    MAC и PC - это всего лишь периферия для Атари...
    130XE|XC12|CA2001|XF551|IDEPlus2.0|SIO2SD|SIO2IDE| RAM576XE+Covoх|SIO2PC|MAXFLASH8|MAXFLASH1|The Ultimate Cartridge|

  4. #3
    Master Аватар для s_kosorev
    Регистрация
    19.06.2014
    Адрес
    г. Харьков, Украина
    Сообщений
    731
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    15 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ezswift Посмотреть сообщение
    А вот этот код по поведению похож на форму Лиспа LAMBDA, где Лямбда это определение функции,
    которое может и существовать и вычисляться отдельно от объявления, даже без имени ...
    это обычное forward определение функции, лямба чуть другое

    var fn = (msg:string) => console.log(msg)
    или так
    arr.foreach(msg => confole.log(msg))
    или совсем так
    function getAdder (secondArg:number) { return (firstArg: number) => firstArg + secondArg };

    у них есть приколы с замыканием

  5. #4
    Activist Аватар для ezswift
    Регистрация
    26.02.2011
    Адрес
    Москва
    Сообщений
    258
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    25
    Поблагодарили
    18 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Привет друзьям с Украины!

    Я часто у Вас в области отдыхал на Слиянии Оскола и Северского Донца (ст. Букино)

    Места НЕЗАБЫВАЕМЫЕ! Правда сейчас там, в Изюме, как я полагаю танки...
    Однако, ВСЁ проходит!

    Соглашусь! ... Да! ...
    И ... Не чуть!

    Просто я программирую только любительски и исключительно для Атари-8.

    В Интерлиспе/65 я давно и сурово разочаровался.
    Он такой древний, что даже не понимает память 130XE, а большая память для Лиспа - это ВЕЩЬ!

    Я хотел спросить, то, что Вы пишете, это какая-то нотация, типа Бэкуса-Наура или реальный язык?
    Ну, типа Схема?

    И, если Вы теоретик программирования, может, изложите своё представление Лиспа для Атари-130 и далее... (с расширённой памятью)...

    Просто, я давно общаюсь с Карстеном Строттманом, который для современного Атари хотел написать Лисп, но упёрся в отсутствие теории.
    Ну, нету у него русскоязычных книг, описывающих теорию создания Лиспа с нуля.
    Я такие читал, но я, вовсе, не программист и не переводчик.

    А вот - определение Факториала на Атарьском Интерлиспе/65.
    Код:
    (DEFINEQ !
     (LAMBDA (N)
        (COND ((EQ N 0)
               1)
              (T (* N (! (SUB N 1)))))
    )
    ez
    Последний раз редактировалось ezswift; 20.08.2017 в 21:25.
    MAC и PC - это всего лишь периферия для Атари...
    130XE|XC12|CA2001|XF551|IDEPlus2.0|SIO2SD|SIO2IDE| RAM576XE+Covoх|SIO2PC|MAXFLASH8|MAXFLASH1|The Ultimate Cartridge|

  6. #5
    Master Аватар для s_kosorev
    Регистрация
    19.06.2014
    Адрес
    г. Харьков, Украина
    Сообщений
    731
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    15 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ezswift Посмотреть сообщение
    Я хотел спросить, то, что Вы пишете, это какая-то нотация, типа Бэкуса-Наура или реальный язык?
    Ну, типа Схема?
    синтаксис в C# и JavaScript практически один в один

  7. #6
    Activist Аватар для ezswift
    Регистрация
    26.02.2011
    Адрес
    Москва
    Сообщений
    258
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    25
    Поблагодарили
    18 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Спасибо за Информацию

    Сегодня хотел бы познакомить Вас с процедурами типа INTERRUPT.

    Это обычные процедуры, позволяющие обработку прерываний на языке высокого уровня.
    Отметим следующее:
    1. Так как программы прерываний не могут быть вызваны из обычной процедуры, то списка параметров вызова в INTERRUPT процедуре не существует!
    2. Сама INTERRUPT процедура, тем не менее может вызывать обычные процедуры или функции.
    3. INTERRUPT процедуры могут быть описаны как FORWARD процедуры.
    4. Так как механизм установки прерываний системозависим, (в разных случаях разный), то нет процедуры высокого уровня для этой цели, но обычно, нужно в правильный адрес занести адрес нашей процедуры, а потом установить флаг инициализации.
    5. Ни TRAP, ни ERROR процедуры не рекомендуется использовать в прерываниях, так как в этих случаях прерывается сама процедура прерывания.
    Код:
    ! DLI.PRG
    
    INTERRUPT dli()
      BYTE  COLPF2=$D018         ! Регистр фона экрана
    BEGIN COLPF2=30 END         ! Задаём другой цвет
    
    PROC setDli()
      CONST VDSLST=$0200       ! Системный вектор прерываний DLI
      INT   SDLSTL=$0230          ! Переменная адреса начала Дисплейного Листа
      BYTE   NMIEN=$D40E         ! Регистр НЕМАСКИРУЕМЫХ прерываний
      POINTER ptr                       ! Указатель общего назначения
        BYTE mod BASED ptr
        INT  vec BASED ptr
    BEGIN
      ptr=VDSLST    vec=.dli       ! Задание адреса нашей dli процедуры в векторе
      ptr=SDLSTL+16 mod=$82  ! Изменение команды в Дисплейном Листе на 16-й строке (DLI выполняется с 17-й!)
      NMIEN=$C0                       ! Активация прерывания
    END
    
    MAIN()
    BEGIN setDli() END
    А вот, что вышло...
    https://drive.google.com/open?id=0B3...1BPVXhiRTlYZXM
    Последний раз редактировалось ezswift; 23.08.2017 в 13:48.
    MAC и PC - это всего лишь периферия для Атари...
    130XE|XC12|CA2001|XF551|IDEPlus2.0|SIO2SD|SIO2IDE| RAM576XE+Covoх|SIO2PC|MAXFLASH8|MAXFLASH1|The Ultimate Cartridge|

  8. #7
    Activist Аватар для ezswift
    Регистрация
    26.02.2011
    Адрес
    Москва
    Сообщений
    258
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    25
    Поблагодарили
    18 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Сегодня - удивительный день.

    Сегодня (я это сегодня увидел...) моё программирование на языке PL65 было занесено на САМУЮ-САМУЮ базу данных Атарьки-8.
    На Вики Карстена Строттманна.

    Так как это было сделано не по моей просьбе, а по моим заслугам, я счастлив!
    zen
    MAC и PC - это всего лишь периферия для Атари...
    130XE|XC12|CA2001|XF551|IDEPlus2.0|SIO2SD|SIO2IDE| RAM576XE+Covoх|SIO2PC|MAXFLASH8|MAXFLASH1|The Ultimate Cartridge|

  9. #8
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,121
    Записей в дневнике
    36
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    10 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    кстати, а что за программа? я вики изучал только поверхностно.

  10. #9
    Activist Аватар для ezswift
    Регистрация
    26.02.2011
    Адрес
    Москва
    Сообщений
    258
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    25
    Поблагодарили
    18 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Шынни Посмотреть сообщение
    кстати, а что за программа? я вики изучал только поверхностно.
    Шынни, Здравствуйте.

    Дело в том, что PL65 имеет страшно длинную и занудную, зато подробную и исчерпывающую документацию.

    Так как во многом в языке подходы нестандартные, а разбираться сложно, (в то время, даже терминология не устоялась)
    то её, собственно никто кроме меня и не читал.
    Второй язык, про который только я и читаю - это СС8, а третий Интерлисп/65.
    В своё время Интерлисп меня здорово занимал, но его просто не доделали, так как эра Атарек прошла.
    Уже были не только 88/86, но уже и 286/386 машины.

    Ну, я и написал в форуме AtariAge парочку текстов для примера работы с этими необычностями.
    Библиотеку работы с 'Кучей' и библиотеку парсинга контрольных символов клавиатуры.
    (Кстати, сегодня покончил с библиотекой прямого доступа к экрану.)

    Ну, видать германским товарищам примеры понравились, вот и разместили в википедии.

    А меня самого порадовать забыли.
    Зато благодарят
    MAC и PC - это всего лишь периферия для Атари...
    130XE|XC12|CA2001|XF551|IDEPlus2.0|SIO2SD|SIO2IDE| RAM576XE+Covoх|SIO2PC|MAXFLASH8|MAXFLASH1|The Ultimate Cartridge|

  11. #10
    Activist Аватар для ezswift
    Регистрация
    26.02.2011
    Адрес
    Москва
    Сообщений
    258
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    25
    Поблагодарили
    18 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Добавил Видео https://www.youtube.com/watch?v=yIHH0KDo5-c по программированию на встроенном ассемблере PL65.
    Надеюсь пригодится.
    zen
    MAC и PC - это всего лишь периферия для Атари...
    130XE|XC12|CA2001|XF551|IDEPlus2.0|SIO2SD|SIO2IDE| RAM576XE+Covoх|SIO2PC|MAXFLASH8|MAXFLASH1|The Ultimate Cartridge|

Страница 1 из 3 123 ПоследняяПоследняя

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

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

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

Похожие темы

  1. ПК8000 - Софт: Старый и Новый
    от ivagor в разделе ПК8000
    Ответов: 331
    Последнее: 05.11.2023, 14:33
  2. Новый старый ZX-Next: сборка, тестирование, производство.
    от ZXFanat в разделе Несортированное железо
    Ответов: 51
    Последнее: 01.10.2011, 08:41
  3. про новый-старый спектрум
    от xailar в разделе ZX Концепции
    Ответов: 3
    Последнее: 06.12.2010, 10:42

Ваши права

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