Kaj de Vos Posted August 22, 2022 Author Share Posted August 22, 2022 List-XEX automatically adapts between command-line environments and menu-driven environments such as Atari DOS. Here it analyses itself running directly on the Atari800 emulator, without a DOS: This is treated like a menu-driven environment, because the emulator also clears the program output after it runs. Because there are no command-line parameters, List-XEX asks for the file name interactively. The emulator's H: device is used here to read the file from the disk of the host system. After the program is done, it asks for a key press to preserve the output. Some more info: On Atari, List-XEX needs 32 KB of RAM. It could run on a stocked up 800 or upgraded 400 or 600XL. While reading the input file, it uses a buffer that can buffer a full track of a double density floppy disk, to speed up operation on floppy drives without a track buffer. The program loads at address $2600 to leave room for optional extra drivers. For example, this is enough to load the FujiNet N: handler above regular Atari DOS, so List-XEX can access files on the Internet and other networks. Quote Link to comment Share on other sites More sharing options...
Kaj de Vos Posted October 26, 2022 Author Share Posted October 26, 2022 Made a series of improvements to the web console: https://console.metaproject.frl Layouting of long error messages is improved. Several bugs in the Meta web backend were fixed. Thanks go to iArnold from the REBOL scene for testing. Quote Link to comment Share on other sites More sharing options...
Kaj de Vos Posted May 19, 2023 Author Share Posted May 19, 2023 Arnold van Hofwegen published a nice collection of documentation and example programs for Meta: https://language.metaproject.frl/documentation/ https://language.metaproject.frl/examples/ Quote Link to comment Share on other sites More sharing options...
Kaj de Vos Posted May 30 Author Share Posted May 30 Arnold documented a list of the 6502 assembly instructions that can be embedded in the Meta programming language: https://language.metaproject.frl/documentation/ Quote Link to comment Share on other sites More sharing options...
yetanothertroll Posted May 31 Share Posted May 31 This might be an interesting language for modern hardware, but for 8-bit? How much functionality could you really cram into a program for 8 bit and its runtimes and still have enough RAM left over to actually do anything? Maybe take the speed hit and go with the overlay approach like in MS-DOS? A new and exciting big banked cart architecture? It is going to end up like 8-bit Atari Logo did, mainly suitable for CS class? Quote Link to comment Share on other sites More sharing options...
Kaj de Vos Posted May 31 Author Share Posted May 31 It depends. There are examples on the site and in these threads. Meta can be as good as hand-written assembly on pure hardware programming. The rainbow demo it generates is 34 bytes and 29 bytes for SpartaDOS X, exactly the same as the assembly version. The Mortail Coil demo is less than twice as big as the original in assembly, so it could compete in a 256 bytes category instead of a 128 bytes category. But when you do something that pulls in parts of the runtime library, that often pulls in parts of the CC65 runtime, and that is quite costly. The typical program size that fits in a 48 KB machine, so without extended memory and without overlays, is around 1000 lines. But in 1000 lines of Meta, you can do quite a lot, not unlike Logo or BASIC. And it's way faster, often the fastest language on 8-bit. This can be optimised further quite a lot by not using C and CC65 as a backend, because that is not a good match for Meta and 8-bit machines. But it's a lot of work to write a native backend that is complete, so that is in the future. Meanwhile, the integrated 6502 assembler documented above can be used to optimise any part of a Meta program for size and speed. Quote Link to comment Share on other sites More sharing options...
yetanothertroll Posted Saturday at 08:17 PM Share Posted Saturday at 08:17 PM On 8/5/2022 at 5:59 AM, zbyti said: I try to invest my money wisely, you are too stubborn and you have specific meaning of "human friendly language". If you don't take "documentation advice" for free what I can expect for money? Keep going, I'm off... I dunno, I'm getting to where it might be wise to invest a bit of time and money into learning something unlike anything I'm already familiar with to keep the old noggin limber. However, it looks to me like Rebol is kind of a mashup of Logo and Common Lisp Object System. Maybe some relational algebra as well tossed into the Meta kitchen sink because why not 1 Quote Link to comment Share on other sites More sharing options...
ivop Posted Sunday at 02:50 PM Share Posted Sunday at 02:50 PM On 6/1/2024 at 12:56 AM, Kaj de Vos said: This can be optimised further quite a lot by not using C and CC65 as a backend, because that is not a good match for Meta and 8-bit machines. But it's a lot of work to write a native backend that is complete, so that is in the future. Hi Kaj, have you looked into llvm-mos? It does not have a fancy libc, but for plain C it generates code that's a quite a bit faster than CC65. We use it for CP/M-65. 1 1 Quote Link to comment Share on other sites More sharing options...
TGB1718 Posted Sunday at 03:40 PM Share Posted Sunday at 03:40 PM On 5/31/2024 at 11:56 PM, Kaj de Vos said: Meanwhile, the integrated 6502 assembler documented above can be used to optimise any part of a Meta program for size and speed. I see no examples of how to integrate assembly, all that's there is a strange set of 6502 mnemonics using some weird way of describing each instruction, once again no documentation on how to use this language with anything. 👎 1 Quote Link to comment Share on other sites More sharing options...
Kaj de Vos Posted Sunday at 10:56 PM Author Share Posted Sunday at 10:56 PM (edited) On 6/1/2024 at 10:17 PM, yetanothertroll said: I dunno, I'm getting to where it might be wise to invest a bit of time and money into learning something unlike anything I'm already familiar with to keep the old noggin limber. However, it looks to me like Rebol is kind of a mashup of Logo and Common Lisp Object System. Maybe some relational algebra as well tossed into the Meta kitchen sink because why not REBOL and Meta are indeed mostly inspired by Logo and Lisp, but they go farther, also using principles from Forth. Not so much from CLOS, because REBOL is only lightly object based, and Meta doesn't have them yet. Relational algebra is not part of the core functionality, but it can be done as an SQL binding, or even a native dialect, a language extension. That's overkill for 8-bit though. The standard data functionality will be much more useful, because REBOL is also a data language, and Meta will bring that to 8-bit. You're right that it's very useful to learn a different language to extend your insight. On the other hand, most of the principles will be familiar to you from Atari Logo. Edited Sunday at 10:58 PM by Kaj de Vos Typo 1 Quote Link to comment Share on other sites More sharing options...
Kaj de Vos Posted Monday at 09:13 AM Author Share Posted Monday at 09:13 AM 18 hours ago, ivop said: Hi Kaj, have you looked into llvm-mos? It does not have a fancy libc, but for plain C it generates code that's a quite a bit faster than CC65. We use it for CP/M-65. Hey Ivo, long time no see. I did look into LLVM-MOS. The code generation is nice, but the problem is indeed the missing standard C library. Both are needed for a Meta backend. The code generation is the least of the work, especially in this case, because I know 6502 well. You have to implement it only once for a CPU. But the C library contains most of the abstractions for the machine and the operating system. Meta supports many systems and is going to support all the other CC65 targets, so I would have to implement many runtimes on top of LLVM-MOS for systems I don't know. That is infeasible. It could be done in a fairly distant future by others when Meta is opened up more. But for now, I use parts that provide the most bang for the buck. Quote Link to comment Share on other sites More sharing options...
Kaj de Vos Posted Tuesday at 12:09 PM Author Share Posted Tuesday at 12:09 PM On 6/2/2024 at 5:40 PM, TGB1718 said: I see no examples of how to integrate assembly, all that's there is a strange set of 6502 mnemonics using some weird way of describing each instruction, once again no documentation on how to use this language with anything. 👎 Examples of pure assembly and assembly mixed with Meta code, compared to pure Meta code, are on the site under, well, "Examples": https://language.metaproject.frl/examples/#Atari8 Because the assembly instructions can be inlined with Meta method calls (like in PL65), they need to conform to the same format. Therefore, some addressing modes have a somewhat different notation than in other assemblers. If you can program in assembly, you should have no problem adapting to this. There is no standard syntax for assemblers. The syntax of all the major lines of assemblers is not completely compatible with each other. As in the post you're responding to, other documentation is under "Documentation": https://language.metaproject.frl/documentation/ If there is something you don't understand, you can get help on the forum: https://social.metaproject.frl/Meta/platforms/Atari/8-bit/ 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.