GoodByteXL Posted July 20, 2016 Share Posted July 20, 2016 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. Quote Link to comment Share on other sites More sharing options...
drac030 Posted July 20, 2016 Share Posted July 20, 2016 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: 1 Quote Link to comment Share on other sites More sharing options...
576XE Posted July 20, 2016 Share Posted July 20, 2016 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 beingcalled 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... Quote Link to comment Share on other sites More sharing options...
GoodByteXL Posted July 20, 2016 Share Posted July 20, 2016 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. Quote Link to comment Share on other sites More sharing options...
576XE Posted July 21, 2016 Share Posted July 21, 2016 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 theenvironment variable $PATH for the file. This will not work when opening a file for writeor 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 secondentry in the path. Changing the above example to do this would produce 'PATHCAR:;;A:\DOS\;A:\TOOLKIT\;D9:>;A:>;:>' where the two semicolons after 'CAR:' signifythat current directory should be searched. May be last phrase confused me? YES! I know that there are a lot of Atari programs with internally hardcoded path ... Quote Link to comment Share on other sites More sharing options...
GoodByteXL Posted July 21, 2016 Share Posted July 21, 2016 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? 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. Quote Link to comment Share on other sites More sharing options...
576XE Posted July 21, 2016 Share Posted July 21, 2016 I see and highly appreciate your work! 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 Quote Link to comment Share on other sites More sharing options...
drac030 Posted July 21, 2016 Share Posted July 21, 2016 (edited) 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 driveOPEN #1,4,0,"D1:FOO.BAR" - open FOO.BAR located in current directory of the specified driveOPEN #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 July 21, 2016 by drac030 1 Quote Link to comment Share on other sites More sharing options...
576XE Posted July 21, 2016 Share Posted July 21, 2016 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 Quote Link to comment Share on other sites More sharing options...
576XE Posted May 6, 2019 Share Posted May 6, 2019 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 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 And it's pretty-printing screenshot. /Success 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 3 Quote Link to comment Share on other sites More sharing options...
Aces123 Posted October 19, 2019 Share Posted October 19, 2019 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. 1 Quote Link to comment Share on other sites More sharing options...
576XE Posted November 9, 2019 Share Posted November 9, 2019 @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 Quote Link to comment Share on other sites More sharing options...
gpounce Posted November 9, 2019 Share Posted November 9, 2019 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. 2 Quote Link to comment Share on other sites More sharing options...
576XE Posted November 10, 2019 Share Posted November 10, 2019 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 Quote Link to comment Share on other sites More sharing options...
576XE Posted December 22, 2020 Share Posted December 22, 2020 (edited) 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 December 22, 2020 by 576XE 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.