[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: ANN: New 6502 cross-compiler designed for the Apple II
On Dec 16, 2:16 am, jonnosan <jonno...@gmail.com> wrote:
> On Dec 16, 12:36 pm, rtk <oneelkr...@hotmail.com> wrote:
>
>
>
> > On Dec 15, 6:19 pm, jonnosan <jonno...@gmail.com> wrote:
>
> > > Ron,
>
> > > What's the best way to define new words in assembly? (e.g. if I wanted
> > > to create a DOS 3.3 library)?
>
> > Yes, please to create a new library! I hadn't thought of it before,
> > but it might be nice to make it easier to add new library words in
> > assembly.
>
> > Here's how to do it:
>
> > 1. Write your new word. Call "pop" to get the top stack item in A
> > and X (lo/hi). Call "push" to push A,X on the stack. Also useful is
> > "get_ta" and "get_tb" to put the top stack address into zero page
> > locations ta,ta+1 and tb,tb+1.
>
> > 2. In the spl.py source code you need to update the DEPENDENCIES and
> > LIBRARYMAP dictionaries. They are near the top of the file. Even if
> > you are new to Python, you'll see how the syntax goes from what's
> > already there.
>
> > 3. In DEPENDENCIES you need to put the names of all the routines that
> > your routine calls, like "pop" and "push", _if_ those routines exist
> > in a separate .s file. If you put all your routines in the same .s
> > file, then you can leave this entry set to an empty list ([]).
> > However, you are most likely going to call "pop" and "push", if
> > nothing else. The whole point of the dependencies dictionary is to
> > only copy the assembly code that is actually needed.
>
> > 4. In LIBRARYMAP you need to set up the mapping between what you call
> > your new word in SPL, the left-hand value, and what the base file name
> > is that holds your routine's code on the right-hand side. You'll see
> > what I mean when you look at the code.
>
> > If you do make new library words and feel like sending them to me I'll
> > update the source on the web page. That might be best to keep
> > everything in one place. However, I did put the code out there for
> > any use, so you don't have to send me anything if you don't want to.
>
> > If you make the DOS library in SPL itself you can put it in the
> > include directory, but that might be difficult for DOS 3.3. I started
> > with the ProDOS interface in SPL and it was taking up too much memory
> > so I switched to assembly.
>
> > And, of course, do let me know if you run into bugs. I'm sure there
> > are a few.
>
> > Ron
>
> Ron
>
> I don't mind sending things back to get included, but it seems like
> adding things in to the main spl.py file might become a maintenance
> chore. What about adding compiler directive say "asm" that passes the
> included source code straight through to as6502 (similar to the 'data'
> directive).
>
> e.g.
>
> asm cout
> JSR $FDED
> RTS
> end
Ok, I'm convinced. I already planned on doing this at one point but
put it off to get the first version out on the web. I'm about to
leave on a business trip, I might have time to hack on it in the
evenings, otherwise I'll get it in there when I get back later next
week or Christmas week.
Ron