Здравствуйте Андрюс!
Ну, если у Вас есть Интерлисп, то - в любом.
Я, ведь просто код в пустом диске прислал ...
Полные диски с документацией Здесь!
Вложение 74252
А файлик с программкой у Вас уже есть :)
zen
Вид для печати
Здравствуйте Андрюс!
Ну, если у Вас есть Интерлисп, то - в любом.
Я, ведь просто код в пустом диске прислал ...
Полные диски с документацией Здесь!
Вложение 74252
А файлик с программкой у Вас уже есть :)
zen
LISP - Lost In Stupid Parentheses ;)
О, дорогой Chewbacca?
Лисп - это не школа!
Лисп - это ЖИЗНЬ!
Проблема в Японском в том, что сначала надо выучить японский!
Утверждаю, что моя дочка сказала, что ЛИСП проще, чем алголоподобные и далее Си-продукты.
Понять и простить НАДО!
А Скобки ... Ну что Скобки
Цитата: От него жена уходит, а он: " Так-так-так,.. Так-так-так, "...
Скобки - для Структуризации и более Ни-Ни!
zen
- - - Добавлено - - -
Вот список всех доступных функций (с ошибками) при загрузке Inter-LISP/65
Вот содержимое INIT.lsp:Код:(OBLIST)
(AND OR READC PAGE MEM GO PROG TERPRI OBLIST
NEW BREAK SETQ DEFINEQ PROGN NCONC SQRT SIN COS
ATAN LENGTH LAST MEMBER ASSOC PR# IN# SAVE DIR
LOAD OPEN CLOSE LIST @ LOG EXP > INT
/ * SUB + # ATOM %OBJ %ADR LITATOM
POKE PEEK TAB SOUND SETCOL DRAW COL GR PLOT
MOVE PACK UNPACK RPLACD RPLACA POINT NOTE XIO READA
CDAR CDDR CADR CAAR *CDR APPLY* BAKTRACE COND
READ STRIG STICK EQ DEFINE SET APPEND CONS PRIN2
PRIN1 PRINT CDR CAR GETD EVAL D:INIT.LSP MACRO
RETURN RESET NSUBR SUBR NLAMBDA LAMBDA QUOTE ' .
) ( T NIL)
Это Всё!Код:(MAPCAN MAPCAN-AUX MAPCAR MAPCAR-AUX DELETE DELETE-AUX DEFUN
GET REMPROP PUTPROP *PMEMBER)
Вот способ запустить программку:
Так как это печать в псевдопринтер, то сначала он устанавливается в эмуляторе.
В Atari800WinPlus - это Notepad.
1. Запустить Лисп без картриджей
2. На промпт о необходимости размещения графики в верхней памяти
а) если нужен 80кол режим то подключаю картридж SDX с драйвером CON 80 Режим памяти BANKED
- то есть вся расширенная память отдана SDX, кроме памяти 130XE, чтобы LISP не ругался.
б) если не нужен, то просто запускаю LISP без картриджей, oн сам подгрузит D:INIT.LSP. Bставляю в D2: pp.atr
Вот ещё полезнейшая вещь:
Печать на псевдо-принтер списка...
То есть, для нашего D2:UTSКод:(DEFUN PRINL (L)
(PROGN (OPEN 1 8 (QUOTE P:))
(PR# 1)
(PPRINT L)
(PR# 0)
(CLOSE 1)))
Распечатается список Properties (Директория файла)Код:1. (LOAD 'D2:UTS)
2. (PRINL D2:UTS)
- - - Добавлено - - -Код:(PP P PPRINT PPAUX MULTARGS PPARGS TABRET *FORMATS* LPAR BLANK RPAR LINE-WIDTH TABX LDUMP PRINL)
Я тут подумал и понял, что всё же как-то надо оптимизировать систему распечаток.
(TABX LDUMP PRINL) - Это всё же только принтерные утилиты...
На досуге сделаю так:
Оставлю PP библиотеку в EDIT в покое, а эти функции (ЖУТКО МЕДЛЕННЫЕ из-за добавления пробелов в начало строк),
к тому же редко употребляемые, переименую и вынесу в библиотечный файл D2:PRINT, который Вам пришлю. :)
zen
Ну, что же ...
Deal Done!
Вот файлик:
Вложение 74268
Это не zip файл. Удалите лишнее расширение.
В библиотеку входят функции:
Инструкция:Код:(TABX *FORMATS* TABRET PRLIST PRDUMP PRPROP PRFORM)
Сначала запускаем LISP
Подгружаем (LOAD 'D:EDIT)
При необходимости распечаток подгружаем (LOAD 'D2:PRN)
ПРИ ЗАГРУЗКЕ ПЕРЕПИСЫВАЮТСЯ ВСТРОЕННЫЕ !!! :Код:(DEFINEQ TABX
(LAMBDA (N)
(PROG (COUNT)
(SETQ COUNT N)
LOOP
(SETQ COUNT (SUB COUNT 1))
(COND ((> COUNT 0)
(PRIN1 (QUOTE " ")) (GO LOOP)))
(RETURN)))
)
(DEFINEQ *FORMATS*(NIL)
)
(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 PRLIST
(LAMBDA (L)
(PROGN (OPEN 7 8 (QUOTE P:))
(PR# 7)
(PRINT L)
(TERPRI)
(PR# 0)
(CLOSE 7)))
)
(DEFINEQ PRDUMP
(LAMBDA (PROPS)
(PROGN (OPEN 7 8 (QUOTE P:))
(PR# 7)
(MAPCAR PROPS
(LAMBDA (X)
(PROGN (TERPRI)
(PRIN1 (QUOTE "(DEFINEQ "))
(PRIN1 X)
(PPRINT (GETD X))
(PRINT RPAR))))
(PR# 0)
(CLOSE 7)))
)
(DEFINEQ PRPROP
(LAMBDA (FNAM)
(PROGN (OPEN 7 8 (QUOTE P:))
(PR# 7)
(PRINT FNAM)
(TERPRI)
(PR# 0)
(CLOSE 7)))
)
(DEFINEQ PRFORM
(LAMBDA (X)
(PROGN (OPEN 7 8 (QUOTE P:))
(PR# 7)
(PROGN (TERPRI)
(PRIN1 (QUOTE "(DEFINEQ "))
(PRIN1 X)
(PPRINT (GETD X))
(PRINT RPAR))
(PR# 0)
(CLOSE 7)))
)
Список *FORMATS*
Форма TABRET
Пользуемся так:
0. Для печати директории(PROPERTIES) файла (PRPROP D2:PRN)
1. Для печати Дампа файла (PRDUMP D2:PRN)
2. Для печати любого списка (PRLIST *FORMATS*)
3. Для печати любой формы (PRFORM 'PRLIST)
Примечание: К сожалению, название формы приходится квотировать, так как форма печати пользуется внутренними переменными Лиспа, а отследить несвязанные переменные можно лишь исследовав ВЕСЬ код EDIT.
С НОВЫМ ГОДОМ! ДОЛОЙ КОРОВАВИРУС!
zen
А вот и Новоггодние чудеса:
Вот этот файлик назывался PROLOG.LGO
Но в ЛОГО я - не кумекаю ...Код:TO . :TRUEORFALSE
IF LISTP :TRUEORFALSE [PRINT :TRUEORFALSE STOP]
IF :TRUEORFALSE = TRUE [PRINT "YES.] [PRINT "NO.]
END
TO DEFINIOWANA :OBIEKT :CECHA
IF ( FIRST BF BF THING :CECHA ) = "AND [OP AND IS :OBIEKT FIRST BF THING :CECHA IS :OBIEKT FIRST BF BF BF THING :CECHA]
IF ( FIRST BF BF THING :CECHA ) = "OR [OP OR IS :OBIEKT FIRST BF THING :CECHA IS :OBIEKT FIRST BF BF BF THING :CECHA]
IF ( FIRST BF THING :CECHA ) = "NOT [OP NOT IS :OBIEKT FIRST BF BF THING :CECHA]
END
TO DEF :CECHA :LISTA
MAKE :CECHA FPUT "@ :LISTA
END
TO ADD :OBIEKT :CECHA
IF NOT NAMEP :CECHA [MAKE :CECHA []]
IF NOT NAMEP "OBIEKTY [MAKE "OBIEKTY []]
IF NOT MEMBERP :OBIEKT :OBIEKTY [MAKE "OBIEKTY LPUT :OBIEKT :OBIEKTY]
IF MEMBERP :OBIEKT THING :CECHA [STOP]
IF NOT ( FIRST THING :CECHA ) = "@ [MAKE :CECHA LPUT :OBIEKT THING :CECHA]
END
TO DO :N :LISTA
IF :N > COUNT :LISTA [OP :LISTA]
IF :N = COUNT :LISTA [OP :LISTA]
OP DO :N BL :LISTA
END
TO OD :N :LISTA
IF :N > COUNT :LISTA [OP []]
IF :N = 1 [OP :LISTA]
OP OD :N - 1 BF :LISTA
END
TO ELEMENT :N :LISTA
IF :N > COUNT :LISTA [OP []]
IF :N = 1 [OP FIRST :LISTA]
OP ELEMENT :N - 1 BF :LISTA
END
TO WICH :CECHA
IF OR NOT NAMEP "OBIEKTY NOT NAMEP :CECHA [OP []]
OP W :CECHA :OBIEKTY
END
TO IS :OBIEKT :CECHA
IF NOT NAMEP :CECHA [OP FALSE]
IF ( FIRST THING :CECHA ) = "@ [OP DEFINIOWANA :OBIEKT :CECHA]
IF MEMBERP :OBIEKT THING :CECHA [OP TRUE] [OP FALSE]
END
TO W :CECHA :OB
IF EMPTYP :OB [OP []]
IF IS FIRST :OB :CECHA [OP FPUT FIRST :OB W :CECHA BF :OB] [OP W :CECHA BF :OB]
END
MAKE "BRZYTKI [@ NOT LADNY]
MAKE "LADNY [EWA MAGDA ANKA]
MAKE "MADRY [SOBIECH SZYMON KAMIL EWA KUCIAP TIBOR]
MAKE "BRZYDKI [@ NOT LADNY]
MAKE "GLUPI [@ NOT MADRY KOBZA KOBZA]
MAKE "GLUPIBRZYDKI [@ GLUPI AND BRZYDKI]
MAKE "NIEPRZYDATNY [@ GLUPIBRZYDKI OR SZALONY]
MAKE "PRZYDATNY [@ NOT NIEPRZYDATNY]
MAKE "OBIEKTY [SOBIECH SZYMON KAMIL EWA MAGDA ANKA KUCIAP KOBZA TIBOR]
zen
Сэр, Вы правы!
Не приблизило!
zen