Jump to content

Recommended Posts

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:

list-XEX-self-Atari-menu-40-columns.thumb.png.4a4297ed1c2493f402a2c11541747203.png

 

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.
Link to comment
Share on other sites

  • 2 months later...
  • 6 months later...
  • 1 year later...

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?

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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? :D

 

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

  • Like 1
Link to comment
Share on other sites

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.

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

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. 👎

  • Confused 1
Link to comment
Share on other sites

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 by Kaj de Vos
Typo
  • Like 1
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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/

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...