Jump to content
IGNORED

Datasoft INTER-LISP/65


UNIXcoffee928

Recommended Posts

I just read somewhere in documentation about doubled semicolumns ...

Where please? As I am on the last fixes in the user guide for the coming V. 4.48 I'd like to know.

 

And if you need some special subdirectories you may set it up during boot.

But this implies you have read and understood how it works.

Link to comment
Share on other sites

I only want to say that SDX doesn't behave in the same convenient way as DR-DOS, PD-DOS, MS-DOS while reading PATH.

This is a question of convenience, SDX surely resembles MS-DOS and friends, but sometimes differs a bit, because it is not MS-DOS, it is SDX :)

 

Maybe it would help if you said what were you trying to accomplish. E.g. if you want to put the current directory before CAR:, then do:

 

SET PATH=:;CAR:

  • Like 1
Link to comment
Share on other sites

Hi Friends!

 

I never tried to CRASH any status of SDX

It's VERY HARD!

 

BUT I saw some programs behavior, when some of programs which are being
called from another programs LOST their paths replacing it with simplest D1:..

 

You always know that I can NOT show you my evidences.

 

Hi Drac030!

I'll try your way...

 

Hi GBXL... I read this matter more then week ago... I'll try to give you links...

Link to comment
Share on other sites

BUT I saw some programs behavior, when some of programs which are being

called from another programs LOST their paths replacing it with simplest D1:..

Yes, this is the presetting of the programmer and SDX cannot fix it. E.g. BASIC XE does it when calling DIR. Use "DIR D:*.*" instead and it calls the current directory on the current drive.

 

I read this matter more then week ago... I'll try to give you links...

It would be nice if you could provide hard facts as it is strange to me.

As Draco mentioned, when booting you may setup whatever directory structure you like to use for programming. And using the SDX Imager allows you to change the default config.sys. All described in the user guide. Maybe this is not understandable to everyone reading the user guide as it is unique in the A8 world.

Link to comment
Share on other sites

This is a CITE in SDX 4.47 manual:

 

For example OPEN #1,4+32,0,"D:CONFIG.DAT" will search the path defined by the
environment variable $PATH for the file. This will not work when opening a file for write
or update, since this could cause unexpected and possibly dangerous things to happen.
Because of these changes, it is a good idea to make the current directory the second
entry in the path. Changing the above example to do this would produce 'PATH
CAR:;;A:\DOS\;A:\TOOLKIT\;D9:>;A:>;:>' where the two semicolons after 'CAR:' signify
that current directory should be searched.

 

May be last phrase confused me? :-o

YES! I know that there are a lot of Atari programs with internally hardcoded path ...

Link to comment
Share on other sites

This is a CITE in SDX 4.47 manual:

 

For example OPEN #1,4+32,0,"D:CONFIG.DAT" will search the path defined by the

environment variable $PATH for the file. This will not work when opening a file for write

or update, since this could cause unexpected and possibly dangerous things to happen.

Because of these changes, it is a good idea to make the current directory the second

entry in the path. Changing the above example to do this would produce 'PATH

CAR:;;A:\DOS\;A:\TOOLKIT\;D9:>;A:>;:>' where the two semicolons after 'CAR:' signify

that current directory should be searched.

 

May be last phrase confused me? icon_surprised.gif

YES! I know that there are a lot of Atari programs with internally hardcoded path ...

 

Thank you for your help.

 

It is the section about the SEARCH PATH which is READ ONLY, as stated in that section.

 

We'll look into to see if it can be made easier to read and understand.

Link to comment
Share on other sites

I see and highly appreciate your work! :thumbsup:

 

I just search someway common Sparta(disk)-SDX environment for using it in programming.

 

As far as it's concerned LISP it's not a problem at all.

LISP knows nothing about search PATH (moreover it knows nothing about DIR! It's DIR command is a little joke I think.)

and absolutely workable in its own directory FE C:\LISP.

 

In other cases there are obvious problems.

FE for PL65 I slightly edited it's TEXT libraries to replace D1: to D: and work done.

 

But some C-linkers have hardcoded D1: path and cant be used in common way.

All problems begins when I want to use C:\ hard drive or H:\ Ramdisk FE.

 

EZ

Link to comment
Share on other sites

This cannot be done with $PATH, as most programs do not open files with $PATH searching: this mode has to be deliberately enabled when the application is doing an OPEN call, as in the example you have quoted above:

OPEN #1,4,0,"D:FOO.BAR" - open FOO.BAR located in current directory of the current drive

OPEN #1,4,0,"D1:FOO.BAR" - open FOO.BAR located in current directory of the specified drive

OPEN #1,4+32,0,"D:FOO.BAR" - search through $PATH for the FOO.BAR (this also includes the current drive/dir)

For programs which contain hardcoded references to D1: you can use the SWAP command to redirect (all, globally) the D1: references to another drive.

Edited by drac030
  • Like 1
Link to comment
Share on other sites

I even never heard about swap...

 

Absolute command - READ MANUALS! :)

 

But you know that there are 3 or more peoples that writes tones of mans and someone reading is the only one!

 

I must say that SDX manuals are VERY comfortable!

 

thus I'll be in reading... ;)

 

Showing of the way is the role of teachers!

 

EZ

Link to comment
Share on other sites

  • 2 years later...
Workaround to eliminate some quirks of InterLISP/65 in SDX.


At first, I must say that InterLISP/65 has an unqtue ability on atari-8 !!!

It's a pretty-printing !

No other lang has it! (IMHO)


BUT!

What we can do with 40 columns limit while LISP has no limit in it's logic line at all?!! (Only a RAM limitations.)


So, we need 80 columns!

- And it's a beginning of my investigations...


Good old Konrad (Drak030), said me a secret word to familiarize LISP with SDX. :)

POKE 02e4,$c0. And it works in COL 40 mode!


Also, never working with LISP he has never meet it's real problems.


Recently I've tried to run LISP in SDX in COL 80 and COL 64 (I prefere COL 64) environment with the purpose to get a real pretty-printing of some long-enough LISP program such as LISP's 'EDIT - structured-manner LISP-native EDITOR.


No chance.

May be 'Screen' or '80font' are destroyed while loading LISP, may be some other garbage come in to screen ...

I report this screenshot:

/Garbage

post-20208-0-49541100-1557125615_thumb.png

Thus we have some data/drivers in operative area while working.

So I decided to say 'Y' but 'N' while loading LISP 2.5 after the prompt:

Reserve mem for graphic modes 6,7,8

And a screenshot:

/Loaded

post-20208-0-73638100-1557125631_thumb.png

And it's pretty-printing screenshot.

/Success

post-20208-0-84391900-1557125652_thumb.png

P.S. I really can not understand which part of SDX is under the siege.

May be some relocation of standard SDX parts is a Panacea?

All your suggestions about relocation of SDX data are very highly appreciated.


Best wishes from Moscow

zen


  • Like 3
Link to comment
Share on other sites

  • 5 months later...

How do you create a program with interlisp? I can write some short expressions and evaluate them. But what do I do if I want to write something longer? In clisp for windows I can just write the program in a text editor and then run it with clisp filename.

 

I am mainly looking for a way to use only the interlisp atr file  running in an emulator for this if possible.

  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...

@Aces123

Each InterLISP/65 element consists of 4 bytes(0,1,2,3), numerated from left to right.

Left pare is "Head" (CAR), Right pare is "Tail" (CDR).

 

Being CAR or CDR every 16-bit word contains 3 service bits.

 

Leftmost - N (Is it Number?)
Rightmost - A (Is it Atom?)
First from the Left of A-bit is - G (Is it Garbage bit)

 

So we have only 13 bits for DATA REPRESENTATION !!!

 

Hello, The Nobless Atari Age World! - will be represented in InterLISP/65 memory as:
Hello, The No
..................bless Atari A
...................................ge World!

 

I'm not saying a word about some Gaps, representing InfoBits.

 

I say here that direct editing of LISP text can be available only after executing special LISP convertation program.

 

So it's much convenient to use EDIT.LSP program, describbed in InterLISP/65 documentation.


https://atariwiki.org/wiki/attach/Lisp/Inter-LISP.pdf

 

Don't hesitate to contact me in troubles.

zen

Link to comment
Share on other sites

I used Datasoft interlisp for programming projects at college, IIRC I used edit.lsp as suggested.   The biggest of the projects was fairly small- as I recall the problem was to define a 2d playfield divided into a matrix, with "items" dispersed across it.   The program was to implement methods that a robot arm might use to pick up items and stack them; eg move to x,y, drop arm, grab object (or drop object) and so on.

 

Compared to a modern Lisp its very limited but the essentials are there.   I use Lisp whenever I need a high-level language- its very good at handling complex data of varied types- and the numeric types are fantastic.   Its hard to beat C++ as far as work done per clock cycle but if thats not a major concern I find Lisp a lot more effective for algorithms and data processing than Python or Java.   Its also a LOT faster than Python, which is a big help- and the cross-platform compatibility is surprisingly good.

 

As far as working with clisp (or sbcl for reasonable levels of compiled performance), the usual procedure is to edit the .lisp file in your editor of choice, then '(load "project.lisp")', and invoke some top-level form to start the program.  For production runs, the interpreter (or sbcl) is invoked from a shell script which runs the top-level form there.   I use Lispworks which has a fancy compiler and binary generation system, as well as the usual GUI tools.   Some folks have IDE's for clisp under emacs etc- but I prefer TTY methods even in gui environments writing graphical apps.

 

  • Like 2
Link to comment
Share on other sites

For external editing of LISP SOURCE FILE you need to know LISP FILE STRUCTURE.

 

The structure of LISP source file is: (NO EMPTY LINES BETWEEN S-EXPRESSIONS!!!)

 

Sample file: LDUMP.LSP


(LDUMP TABX)<CR> - It is a LIST of used ATOMS!

(DEFINEQ LDUMP '(LAMBDA (PROPS) (PROGN (OPEN 1 8 (QUOTE P:)) (PR# 1) (MAPCAR PROPS (LAMBDA (X) (PROGN (TERPRI) (TERPRI) (PRIN1 (QUOTE "**** ")) (PRINT X) (PPRINT (GETD X))))) (PR# 0) (CLOSE 1)))
)
<CR>
(DEFINEQ TABX '(LAMBDA (N) (PROG (COUNT) (SETQ COUNT N) LOOP (SETQ COUNT (SUB COUNT 1)) (COND ((> COUNT 0) (PRIN1 (QUOTE " ")) (GO LOOP))) (RETURN)))
)
<CR> - Here are the set of definitions used by InterLISP/65  for all  S-Expressions. The order of definitions is esserntial!

NIL - It,s EOF signature (CURSOR must stay on the same line as NIL!)

 

The main prolem is that LISP line has NO size limit. In contrary, edited phisical line has limit ~130characters. Thus if LISP stanza is long enough it will be truncated (Sic!).
It means that LISP stops read file with ERROR. So use short lines. :)

zen

Link to comment
Share on other sites

  • 1 year later...

Hello, friends!

 

At first I'd like to congratulate you with (not so distant) Holydays!
My Season Greatings and wish you Happy new Year!
 

To claryfy previous post I MUST say that I'm WRONG!

Really every text lisp line DO NOT ends with CR! but with C-like ZERO!

Thus lisp can not read normally edited text!

 

And now...

As far as it's concerned Inter-LISP/65 I'd like to present you
Real Pretty-printing library.

It's for printing to PRINTER (Or Notepad in emulators)

 

It uses EDIT file and must be loaded AFTER!

i.e.

LISP

(LOAD 'D:EDIT)

(LOAD 'D2:PRN)

 

It's the pretty-printed code of Library itself:

(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)
) ; Because there is NO SUCH FUNCTION!

(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)))
)

 

They all are very slow but works!
As it rewrites some lists as *FORMATS* and forms as TABRET you are NOT recomended to use it normally but just for hard-copy printing.

There are 4 forms for pretty-printing:
1. PRLIST - (PRLIST *FORMATS*)
2. PRFORM - (PRFORM 'TABRET)
3. PRPROP - (PRPROP D2:PRN)
4. PRDUMP - (PRDUMP D2:PRN)

 

Best wishes from Moscow!
zen

 

PRINT.atr

Edited by 576XE
  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...