User Tag List

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 27

Тема: Кое-что о Лиспе на Атари-8

  1. #11

    Регистрация
    16.08.2005
    Адрес
    Estonia,Tallinn
    Сообщений
    1,131
    Спасибо Благодарностей отдано 
    55
    Спасибо Благодарностей получено 
    257
    Поблагодарили
    195 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от andrews Посмотреть сообщение
    Есть какие-то хрени, гуглящиеся на Java2pas, но приблизят ли они топикастера к его цели неизвестно.
    Пролог предельно простая штука, если не пытаться сделать "самый быстрый" и "самый меньше всего жрущий ресурсов", поэтому он и для Спектрума был и даже для БКшки

  2. #12

    Регистрация
    20.04.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,876
    Спасибо Благодарностей отдано 
    523
    Спасибо Благодарностей получено 
    252
    Поблагодарили
    226 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну не у всех Прологов одни и те же возможности. Имея реализацию Lisp-а было бы естественно реализовать Пролог на Lisp-е.
    И такие реализации с ненулевой вероятностью существуют. На uLisp-е uProlog мне не попадался. Хотя для него-то по крайней мере с поддержкой графики( не говорю о распознавании графических образов) не надо париться.
    Насчет предельно простая штука не уверен( Не на всяком сделаешь базу знаний и обнаружение неполноты знаний. Там где аксиомы прописаны вместе с фактами и весь фокус-покус в логических выводах наверное да) Конечно какой-нибудь Турбо Пролог от Borland не слишком сложная штука, но так как стандартов на него не существует, тут уж кто во что горазд. Впрочем с Lisp-ом примерно та же ситуация.

    - - - Добавлено - - -

    Цитата Сообщение от Raydac Посмотреть сообщение
    поэтому он и для Спектрума был и даже для БКшки
    опять же как память тратить...понятно для двоичной логики битов достаточно, но только у этих процессоров побитово адресуемой памяти кажись не было, а сдвигами если, то экономия в одном и расточительство в другом. Поэтому и пытались и Lisp, и Prolog на уровне железа поддерживать в 80-е. Как себя нынешние ARM M0,M3, M4 себя с этим ведут пока не вникал.
    Последний раз редактировалось andrews; 15.12.2020 в 15:46.

  3. #13

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

    По умолчанию

    Ну, вообще говоря реализация Пролога для меня пока - просто туман и маниловщина.

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

    Беда в том, что современный Лисп и Пролог, просто обязаны использовать расширенную память, а это уже прямая зависимость от HW.
    Схем раздачи фреймов памяти - просто тыща. Эмуляторы отрабатывают с трудом и глючно.

    Сами схемы не всегда достаточно обоснованы, что ведёт к жуткой путанице в определении причин сбоев и пр.

    Ну, просто представьте, что в Интерлиспе/65 нет способа получить ATASCII код буквы.
    Что же для этого ассоциативный список, что ли строить? Нет интерфейса к Ассемблерным программам.

    Из-за того, что ввод данных с диска - поток атомов, где пробелы игнорируются как разделители, даже через XIO
    невозможно по человечески вывести директорию.
    Ничто не задокументировано, так как ремарок нет.
    Лисп компилятора тоже нет.

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

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

    Oleg N. Cher(17.12.2020)

  4. #14

    Регистрация
    20.04.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,876
    Спасибо Благодарностей отдано 
    523
    Спасибо Благодарностей получено 
    252
    Поблагодарили
    226 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Видимо авторы делали не удобный и полезный инструмент для себя, а для каких-то других целей. Или не успели довести до ума.

    uLisp распространяется без исходников, но для кучи платформ и есть интерфейс к ассемблерам. К сожалению для 6502 версии нет, так что остается или прикрутить его ассемблер самостоятельно или искать в исходниках, или конвертить из одних исходников в другие.

    Совсем экзотика найти или разработать Atari-8 на чипах(по сути эмулировать в железе), поддержанных uLisp, и с учетом имеющихся графических и иных библиотек. uLisp поддерживает SD card interface
    Ну а после этого Prolog, написанный на Lisp будет доступен в исходниках.
    Последний раз редактировалось andrews; 16.12.2020 в 10:56.

  5. #15

    Регистрация
    16.08.2005
    Адрес
    Estonia,Tallinn
    Сообщений
    1,131
    Спасибо Благодарностей отдано 
    55
    Спасибо Благодарностей получено 
    257
    Поблагодарили
    195 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    по прологу есть книга неплохая, называется "the implementation of Prolog"

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

    ezswift(20.12.2020)

  6. #16

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,927
    Спасибо Благодарностей отдано 
    106
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Сделать пролог на лиспе даётся как лабораторная работа
    Вот например: http://ds.knu.edu.ua/jspui/bitstream...1/labsbook.pdf (последняя лабораторка в самом конце документа)
    Он, конечно, совсем простой, факты и правила записываются списками на лиспе. Но, судя по всему, это должно работать.

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

  8. #17

    Регистрация
    20.04.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,876
    Спасибо Благодарностей отдано 
    523
    Спасибо Благодарностей получено 
    252
    Поблагодарили
    226 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Реализацию в студию пожалуйста!

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

    ezswift(03.01.2021)

  9. #18

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

    По умолчанию

    Ну, насчёт реализации -я пессимист.

    Всё правильно. Хотели сделать нормальный ЛИСП, но ...
    Просто забросили!!!

    В доказательство - код из библиотеки LDUMP:

    Код:
    ;; Распечатка Форм из "Директории файла" (Properties)
    (DEFUN LDUMP (PROPS)
      (PROGN (OPEN 1 8 (QUOTE P:)) ; Открыть 1 IOCB на вывод
             (PR# 1)               ; Перенаправить вывод с терминала на 1 IOCB
             (MAPCAR PROPS         ; Для каждой формы в директории ...
                     (LAMBDA (X)       ; X - это директория файла
                       (PROGN (TERPRI) ; Исполнять последовательно ...
                              (TERPRI) ; CR
                              (PRIN1 (QUOTE "**** ")) ; Звёздочки без CR
                              (PRINT X)               ; Имя формы + CR
                              (PPRINT (GETD X)))))    ; Печатать определение
             (PR# 0)               ; Вернуть вывод на Терминал
             (CLOSE 1)))           ; Закрыть 1 IOCB
    
    ;; Установка отступа в Печатуемой строке на N позицию пробелами!!!
    (DEFUN TABX (N)
      (PROG (COUNT)        ; Исполнять последовательно с циклом ...
            (SETQ COUNT N) ; Инициализировать обратный счётчик
            LOOP           ; Метка
            (SETQ COUNT (SUB COUNT 1))             ; Декрементировать
            (COND ((> COUNT 0)                     ; Пока не ноль
                   (PRIN1 (QUOTE " ")) (GO LOOP))) ; Печать пробела и на метку
            (RETURN)))     ; По исполнении выйти.
    Оба кода рабочие, но в LDUMP нигде не входит TABX.

    В результате, никакой PP печати. Хоть формы-то разделены.
    (EDIT при PP пользуется встроеной TAB, которая просто устанавливает позицию в строке терминала, следовательно нет пробелов.

    Кроме этого, LDUMP пользуется формой PPRINT в составе EDIT, а значит без загрузки D:EDIT бесполезна.

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

  10. #19

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

    По умолчанию

    Вообще-то сделал.
    Вот результат печати:
    Код:
    (DEFINEQ PP
    (LAMBDA NIL
      (PPRINT S-EXP 2))
    )
    
    (DEFINEQ P
    (LAMBDA NIL
      (PPRINT (CAR CURR) 2))
    )
    
    (DEFINEQ PPRINT
    (LAMBDA (X IND)
      (PROG (TFLG)
            (PPAUX X IND)
            (TERPRI)))
    )
    
    (DEFINEQ PPAUX
    (LAMBDA (X INDTN)
      (COND ((ATOM X)
             (PRIN2 X) (SETQ TFLG))
            ((ATOM (CAR X))
             ((LAMBDA (Y)
                 (COND (Y (MULTARGS X INDTN (CDR Y)))
                       ((PROGN (PRIN1 LPAR)
                               (PRIN2 (CAR X))
                               (PPARGS (CDR X) INDTN)
                               (PRIN1 RPAR)
                               (SETQ TFLG))
                       )))
              (ASSOC (CAR X) *FORMATS*)))
            (((LAMBDA (IND1)
                 (PROGN (PRIN1 LPAR)
                        (SETQ TFLG T)
                        (PPAUX (CAR X) IND1)
                        (TABRET INDTN)
                        (PPARGS (CDR X) IND1)
                        (PRIN1 RPAR)
                        (SETQ TFLG)))
              (+ INDTN 1))
            )))
    )
    
    (DEFINEQ MULTARGS
    (LAMBDA (X INDTN L)
      ((LAMBDA (INDTN2)
          (PROGN (TABRET INDTN)
                 (PRIN1 LPAR)
                 (PRIN2 (CAR X))
                 (PRIN1 BLANK)
                 (PPAUX (CAR (CDR X)) INDTN2)
                 (COND ((CDR (CDR X))
                        (MAPCAR (CDR (CDR X))
                                (QUOTE (LAMBDA (Y)
                                   (PROG NIL
                                         (TABRET INDTN2)
                                         (PPAUX Y INDTN2)))))))
                 (PRIN1 RPAR)
                 (SETQ TFLG)))
       (+ INDTN (CAR L))))
    )
    
    (DEFINEQ PPARGS
    (LAMBDA (X INDTN)
      (PROG NIL
            LOOP
            (COND ((EQ X)
                   (RETURN))
                  ((ATOM X)
                   (PRIN1 (QUOTE " . ")) (PRIN1 X) (RETURN)))
            (PRIN1 BLANK)
            (PPAUX (CAR X) INDTN)
            (SETQ X (CDR X))
            (GO LOOP)))
    )
    
    (DEFINEQ TABRET
    (LAMBDA (N)
      (PROG NIL
            (COND (TFLG (RETURN))
                  ((TERPRI)
                  ))
            (SETQ TFLG T)
            (COND ((> N LINE-WIDTH)
                   (TERPRI) (TABX (SUB N LINE-WIDTH)))
                  ((TABX N)
                  ))))
    )
    
    (DEFINEQ *FORMATS*(NIL)
    )
    
    (DEFINEQ LPAR(NIL)
    )
    
    (DEFINEQ BLANK(NIL)
    )
    
    (DEFINEQ RPAR(NIL)
    )
    
    (DEFINEQ LINE-WIDTH(NIL)
    )
    
    (DEFINEQ TABX
    (LAMBDA (N)
      (PROG (COUNT)
            (SETQ COUNT N)
            LOOP
            (SETQ COUNT (SUB COUNT 1))
            (COND ((> COUNT 0)
                   (PRIN1 (QUOTE " ")) (GO LOOP)))
            (RETURN)))
    )
    
    (DEFINEQ LDUMP
    (LAMBDA (PROPS)
      (PROGN (OPEN 1 8 (QUOTE P:))
             (PR# 1)
             (MAPCAR PROPS
                     (LAMBDA (X)
                        (PROGN (TERPRI)
                               (PRIN1 (QUOTE "(DEFINEQ "))
                               (PRIN1 X)
                               (PPRINT (GETD X))
                               (PRINT RPAR))))
             (PR# 0)
             (CLOSE 1)))
    )
    А вот файлик с программами. (нужно учесть что в текстовом редакторе формы не напечатать!)
    pp.atr.zip
    Это не zip, Надо убрать расширение.

    zen
    Последний раз редактировалось ezswift; 18.12.2020 в 13:32.
    MAC и PC - это всего лишь периферия для Атари...
    130XE|XC12|CA2001|XF551|IDEPlus2.0|SIO2SD|SIO2IDE| RAM576XE+Covoх|SIO2PC|MAXFLASH8|MAXFLASH1|The Ultimate Cartridge|

  11. #20

    Регистрация
    20.04.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,876
    Спасибо Благодарностей отдано 
    523
    Спасибо Благодарностей получено 
    252
    Поблагодарили
    226 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Поскольку нативного железа у меня нет, подскажите пожалуйста, в каком эмуляторе это можно запустить?

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

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

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

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

Похожие темы

  1. Ocean Software кое что...
    от research в разделе Музыка
    Ответов: 55
    Последнее: 01.08.2013, 22:07
  2. Кое-что о микосхемах!
    от Alex_NEMO в разделе Несортированное железо
    Ответов: 9
    Последнее: 13.04.2009, 23:29
  3. Кое-что задаром
    от F0lken в разделе Барахолка (архив)
    Ответов: 0
    Последнее: 15.03.2009, 20:07
  4. кое что из недоделанного..
    от Sayman в разделе Музыка
    Ответов: 2
    Последнее: 09.04.2008, 15:21

Ваши права

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