Jump to content
IGNORED

Developing a new language - ACUSOL


Pab

Recommended Posts

I've never programmed in Action! as I couldn't afford the cartridge years ago. I think that it was £30+ (perhaps) and I was spending £2 or £3 at a time.

 

However, I admire what you are doing here as I've considered how a powerful but slightly higher level language than Assembly could be put together. You're actually doing the project that I wish that I had time to do, and you are doing it well.

 

When you're finished, I'd love to see people sharing their libraries. Is that too much to ask for? I appreciate that every project is different, but some good MWP scrolling, sprite handling, mathematics or memory management libraries would be great.

  • Like 1
Link to comment
Share on other sites

I've never programmed in Action! as I couldn't afford the cartridge years ago. I think that it was £30+ (perhaps) and I was spending £2 or £3 at a time.

 

It was pretty much the same case with me. When I had enough to buy the cart I was disturbed to discover that it was just as much to buy the Runtime Library. or else I would never be able to distribute my stuff. Then I discovered the PD Action Runtime Library and was finally able to put stuff out in the world.

 

However, I admire what you are doing here as I've considered how a powerful but slightly higher level language than Assembly could be put together. You're actually doing the project that I wish that I had time to do, and you are doing it well.

Thank you. I had the idea years ago and it's only now that I can work on it. Emulation was still very crude in 2006 and I didn't really have the tools needed to properly debug the output from a compiler. Now thanks to Altirra I can see the resulting code, single-step through it, and then figure out where I screwed up in my code to create such a monstrosity.

 

When you're finished, I'd love to see people sharing their libraries. Is that too much to ask for?

Not at all! It's what I'm hoping for, really. I'm going to open a GitHub repository for the Runtime Library and hope to have others join in the effort. Especially when it comes to fixing the bugs I know I'm not catching.

 

I appreciate that every project is different, but some good MWP scrolling, sprite handling, mathematics or memory management libraries would be great.

 

I've started down that road. The compiler now has 32 bit math built in (although I need to do some rewrites to support signed division) and long integer variables. I've abandoned native floating point but I imagine a class could be written to support it for those that need it. The beginnings of memory management can be found in the MEMORY.ACC unit and I would welcome people who could expand on that.

 

One of my inspirations for this project has been the SpartaDOS X project: a bunch of people taking an existing product and moving it to the next level as a collaboration. I would love to see other people get on board both on the Atari side and eventually on the PC side debugging and improving the cross-compiler. Although I haven't given up on my dream of a native compiler that would run on an XE, it's just that I'd need a team of volunteers for that.

Link to comment
Share on other sites

Great work, Pab! I really like your enthusiasm and progress on this project. Keep it up!

 

Thank you. It's been a chore, but a labor of love at the same time. It's nice to know it's appreciated, and that it might be useful to some folks.

Link to comment
Share on other sites

Update:

 

If there is a build this week, it's going to be a maintenance one instead of adding anything big. I've been struggling with two major bugs that presented themselves.

 

First is one that keeps WHILE loops from ever executing. They would immediately bomb out to the code after the loop. I've already got this one fixed.

 

Second is a glitch that is causing local variables to also be defined as global variables with the same name. I actually discovered this while trying to debug a program I wrote to test my joystick routines. The local "x,y" variables I was trying to use were being confused with the x,y arguments in one of the functions in the GRAPHICS unit, and since those weren't allocated but just placeholder names, boom crash. This is a serious enough bug to shut down everything else I was working on to sort out, and as soon as I have it working properly I will rush out the build to fix it.

Link to comment
Share on other sites

  • 1 month later...

Pab, I heard your Antic podcast and I am sorry for causing you to change the name of the product when I joked that it sounded like Anusol. It was only meant as humour and wouldn't like to think that you felt derided by it.

 

I must say that it sounds fantastic. On another note, if I produce a program which uses no banking, will there be a lot of code in the compiled output which is there because of the possibility of using banking? Or is it something you explicitly switch on?

Link to comment
Share on other sites

At this development stage, the banking code is in every compiled program, but that will change. Once I have things stable and just about everything implemented the last big step will be implementing two-pass compilation. That means that any code (routines INCLUDEd or USEd in libraries, micro-runtime, and banking code) that isn't used by the actual program will not be compiled.

Link to comment
Share on other sites

At this development stage, the banking code is in every compiled program, but that will change. Once I have things stable and just about everything implemented the last big step will be implementing two-pass compilation. That means that any code (routines INCLUDEd or USEd in libraries, micro-runtime, and banking code) that isn't used by the actual program will not be compiled.

 

That is super. I appreciate that everything can't be done in the 1st version.

 

With respect to it being object oriented, I guess that with us being 8-bit users, you've put all the load on the compiler rather than a runtime handling all the object oriented features?

 

I am so impressed by your project, I wanted to work on something like this (though knew that I didn't have enough time to do so) and had thought out a lot, but you're actually doing it so I give you a lot of respect with this.

 

As for 32 bit mathematics, I think you're doing it right by leaving that till last. It's one of those things that only needs doing if needs be for a specific project. Once you've worked out how to not include unused functionality, this'll be perfect for such routines which get used occasionally.

Link to comment
Share on other sites

Yeah. Very little is handled at run-time. About the only time the CPU has to figure out what memory it should be working with is within object methods themselves. Otherwise, it's all on the compiler.

 

One feature of OOP I'm not sure I will be able to pull off, and might not even try, is abstraction. Allowing the overriding of methods or creation of virtual methods would require the CPU to figure out what routines to call at runtime. That is theoretically possible, but would require memory (three bytes for every method in every instance of a class) and time (looking up the addresses to call for a particular instance) so it might not be worth implementing, At least not yet.

 

32 bit math, by the way, is basically done and working in the last build I released, along with LONG 32-bit integers. The only part of math (both 16 and 32 bit) that isn't working right now is signed division because I'm too lazy to write those routines. At least right now. The interview was recorded in February, so I've made a lot of progress since then. :)

Link to comment
Share on other sites

32 bit math, by the way, is basically done and working in the last build I released, along with LONG 32-bit integers. The only part of math (both 16 and 32 bit) that isn't working right now is signed division because I'm too lazy to write those routines.

 

No need to be diligent. You can find all these routines in the cc65 source. E.g. https://github.com/cc65/cc65/blob/master/libsrc/runtime/idiv32by16r16.s

  • Like 1
Link to comment
Share on other sites

Pab, I heard your Antic podcast and I am sorry for causing you to change the name of the product when I joked that it sounded like Anusol. It was only meant as humour and wouldn't like to think that you felt derided by it.

Are we talking about post #99?

 

http://atariage.com/forums/topic/223277-developing-a-new-language-acusol/page-4?do=findComment&comment=2956346

 

What about post #4?

 

http://atariage.com/forums/topic/223277-developing-a-new-language-acusol/page-1?do=findComment&comment=2949990

 

I feel personally wounded. :D

Link to comment
Share on other sites

 

Woops! Me and FJC have spoken on Facebook, I now realise that I wasn't the first one, I just joined the conversation later in the day and didn't see FJC's comment previously.

Link to comment
Share on other sites

Yeah. Very little is handled at run-time. About the only time the CPU has to figure out what memory it should be working with is within object methods themselves. Otherwise, it's all on the compiler.

 

I think that is a good thing. While it would be nice to have all the OOP features, maybe on 8-bit computers with limited RAM, we're better off having just the easier to convert features. And we need the compiler to do the work, the main machine doesn't have 16/32/64 bit "grunt" to handle the overheads.

 

Now what I would like to see, though it is outside of the realms of your project, I believe that the whole programming world is missing a more "social" development scene. Yes, we have Github which is the best thing that we currently have socially, but wouldn't it be great if we could *simply* share our libraries created in an OOP language and offer our code to others. Don't get me wrong, there *are* ways of sharing code, but none of them are particularly well developed. I think that over the next 10 years that we'll see better ways of doing this coming to the fore. Imagine a Facebook for code. I'd love to be able to say, "I'll have a bit of your code, a bit of his over there, a bit from that person and add a little myself" for really rapid development. Code can be peer assessed for quality.

 

The reason that I mention that in your thread is that I think that it will be a great language for sharing code/libraries with.

Link to comment
Share on other sites

I will say that the problem is obviously in the code that parses a mathematical expression. Nowhere near my home machine at the moment, but I will bet that if you replaced the assignment with "x=78+5" or "x==+5" (which compiles differently) it would work.

 

This portion (in the source program it's the procedures EvaluateMathExpression and CompileMathExpression) has plagued me since day one. I'm tempted to rip it out and replace it with something else. Help would be appreciated.

Link to comment
Share on other sites

I really don't care what it's called, I like the prospects! Along these lines, I ran across something that seems very similar to this project. It's called the Effectus project, I wonder if there would be ebenefit from combining the projects or maybe best to leave them separate.

 

http://gury.atari8.info/effectus/main.php

Edited by fujidude
Link to comment
Share on other sites

I looked at Effectus a while back. I didn't think it was still being worked on. However, it looks like he and I are both using the same language to develop (Free Pascal is the core of Lazarus, which I'm writing in), so maybe we could benefit with cross-pollination.

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