Jump to content
IGNORED

MA65 Macro Assembler for SpartaDOS with XEDIT


flashjazzcat

Recommended Posts

Finally got the manual for the MA65 Assembler written up so here's a disk image with the Assembler, source code and text editor:

 

MA65.zip

 

And this is the manual for the assembler:

 

MA65_Macro_Assembler.pdf

 

There are a couple of things I'd like to add to the assembler but the source code is there for others who want to have a look. Ideas for imporovement, bug reports, etc, welcome as usual.

 

Enjoy! :)

  • Like 2
Link to comment
Share on other sites

Excellent toolset!! Really nice in combination with the batch-abilities of SDX and your great Xedit.

 

One more question: what's the right way to binary-include a file like a font or a picture? In MADS our often use .incbin ...

 

---------

And a little bug report:

% ma65 test /m O: /l A:

 

does not generate two files but just one (always the listing). Both parameters allow a different path but on a "PRN" file is generated.

 

---------

 

with MA65 I can now code small SDX tools with parameter support just directly on the Atari within SDX. really cool!!

 

grtx,

\twh

Link to comment
Share on other sites

Hi,

 

I have this MADS sample from KMK. How would that translate into MA65 ? Especially the MADS specialities like "smb, blk, reloc" and so on probably don't work in MA65.

 

PRINTF	smb 'PRINTF'

blk reloc main

start	jsr PRINTF
.byte $9b,'Hello world!',$9b,0

jsr PRINTF
.byte $9b,'My numbers:',$9b
.byte '%b, %d, %x',$9b
.byte '%e, %l',$9b,0
.word bdec,wdec,whex,tdec,ldec
rts

bdec	.byte $FF
wdec	.word $FFFF
whex	.word $FFFF
tdec	.long $FFFFFF
ldec	.word $FFFF,$FFFF

 

Or the other way around, do you have a little MA65 source code sample for some command line driven tool which I could use to start with?

 

grtx,

\twh

Link to comment
Share on other sites

Excellent toolset!! Really nice in combination with the batch-abilities of SDX and your great Xedit.

 

--------

 

with MA65 I can now code small SDX tools with parameter support just directly on the Atari within SDX. really cool!!

 

grtx,

\twh

 

Thanks! Really glad you like the tools, and it's GREAT to hear they're being used after all these years gathering dust in a disk box. :)

 

And a little bug report:

% ma65 test /m O: /l A:

 

does not generate two files but just one (always the listing). Both parameters allow a different path but on a "PRN" file is generated.

 

In hindsight the manual is probably not very clear on this, but it's intentional that only one listing file is produced even if both a symbol map and source listing are specified. I guess (can't remember) that the filename specified after the "/L" command takes precedence. If I remember rightly, the only time the filename for the "/M" option is used is if you just wanted a symbol map WITHOUT a listing. Otherwise the symbol map is always appended to the main listing file.

 

One more question: what's the right way to binary-include a file like a font or a picture? In MADS our often use .incbin ...

 

MA65 does not have a "literal" include command, but I can immediately see what a useful feature it would be. It's something I could easily add to the program, along with a couple of other things:

 

- An internal "Pass" variable

- The ability to output non-segmented object files (removing the need for the UNSEG.COM utility)

 

Also, if you study the MA65 executable, there are some date and time variable names hard-coded into the program at the very end but I can't remember how to use them! :ponder: Hopefully when I get time I'll figure them out using the source code.

 

It sounds like your programming environment is much the same as mine used to be on the Atari ten years ago. I used to churn out Sparta utilities quite quickly using a library of standard routines in INCLUDE files... needless to say I'll release them when I write up the documentation. I'll also include the source code for some of the Sparta utilities as examples.

 

Writing SpartaDOS utilties was by far my favourite programming activity, and it would be great to gather together commonly used assembly routines for a common programming library for the latest versions of SDX.

Edited by flashjazzcat
Link to comment
Share on other sites

Hi,

 

I have this MADS sample from KMK. How would that translate into MA65 ? Especially the MADS specialities like "smb, blk, reloc" and so on probably don't work in MA65.

 

PRINTF	smb 'PRINTF'

blk reloc main

start	jsr PRINTF
.byte $9b,'Hello world!',$9b,0

jsr PRINTF
.byte $9b,'My numbers:',$9b
.byte '%b, %d, %x',$9b
.byte '%e, %l',$9b,0
.word bdec,wdec,whex,tdec,ldec
rts

bdec	.byte $FF
wdec	.word $FFFF
whex	.word $FFFF
tdec	.long $FFFFFF
ldec	.word $FFFF,$FFFF

 

Or the other way around, do you have a little MA65 source code sample for some command line driven tool which I could use to start with?

 

grtx,

\twh

 

Here's the INCLUDE library I used to use, along with the source to the UNSEG.COM program:

 

UTILSRC.zip

 

I hope it's of some help: I won't have time to provide something more tailored until tomorrow. I've just been studying a piece of code similar to the one you've given, and I was wondering about the structure (I haven't yet read up on the MADS "specialities" yet!). Is this program structured as a relocatable SDX utility?

 

------------------

 

Addendum: The print statement at the start of UNSEG.A65 uses the internal MA65 Date and Time variables I mentioned in the previous post! The variables proper appear at the very end of the source code. I included them so that programs could be auto-stamped with the date and time of assembly.

 

I'd like to interface the SpartaDOS library I wrote with the internal routines in the latest SDX cart. It's something I'll have a go at when I get time...

Edited by flashjazzcat
  • Like 1
Link to comment
Share on other sites

I think that symbols (printf smb 'PRINTF') are one of greatest features of spartados x.

They make programming for sdx very fast and easy.

 

If I had a breakdown of the SDX relocatable file structure, it would be fairly easy to add support for symbols to MA65. Then we could have an SDX programming environment right on the Atari hardware.

  • Like 1
Link to comment
Share on other sites

SDX programming enviroment exists on XE/XL, Fast Assembler on XE/XL support pseudo command SMB

 

flashjazzcat have you Fast Assembler (FA) on XE/XL ?

 

parhaps FA is all what You want

 

Hello Tebe,

 

is there a page where Fast Assembler can be found? I Google search for "Fast Assembler MMMG" did only find an entry if the A8 FAQ, but no weg page with information/download.

 

Is the FA still in use by someone? Or do most developers use a cross assembler for SDX assembly work?

 

Carsten

Link to comment
Share on other sites

http://atariki.krap.pl/index.php/Fast_Assembler

 

hmm, FA is not freeware "Razem z pełną (płatną) wersją asemblera autor dostarczał dokumentację dotyczącą programowania dla SDX."

 

FA demo version from SYZYGY #8 (DISK3) http://madteam.atari8.info/scena/syzygy8.zip

 

Excellent. For those of us thinking of buying the Fast Assembler - can we expect English documentation? In the meantime, I'd still like to understand the SpartaDOS X relocatable file format and incorporate the means to create same in the freeware MA65 assembler.

  • Like 1
Link to comment
Share on other sites

  • 1 month later...

What a great assembler & text editor combo!

 

I have been fiddling around with this all weekend. I have used both MAC/65 and AMAC in the past, and MA65 seems to combine some good featurs of both. I even tried modding it to assemble stock standard MAC/65 code (.BYTE instead of BYTE etc) - no problems. I have been assembling all weekend.

 

It did raise an issue, though. Does anyone have or know of a good debugger that works well under Spartados? I haven't been able to get Extended DDT to work, and I'd like to put MA65, XEDIT and a debugger on a floppy to transfer over and use as a package on my real hardware.

 

If anyone has a Spartados ATR or something with a good debugger, or any other suggestions, I'd really appreciate it!

Link to comment
Share on other sites

What a great assembler & text editor combo!

 

I have been fiddling around with this all weekend. I have used both MAC/65 and AMAC in the past, and MA65 seems to combine some good featurs of both. I even tried modding it to assemble stock standard MAC/65 code (.BYTE instead of BYTE etc) - no problems. I have been assembling all weekend.

Glad you like it. I was always in two minds about the non-standard pseudo ops. Maybe it's not too difficult to convert MAC/65 code to compile with MA65, but the last time I tried to convert the source code for LW (some 160K in length) to work with MAC/65 compatible cross-assembler, I ended up in all kinds of knots.

 

Have you not discovered the BYTE bug in MA65 yet? I only found it the other week. The following won't comple correctly:

 

		  BYTE <POINTER
	  BYTE >POINTER

You have to write:

 

		  BYTE POINTER MOD 256
	  BYTE POINTER / 256

 

I'll fix this as soon as I get time. :)

Link to comment
Share on other sites

Didn't strike that bug. I originally moved to MAC/65 from other assemblers (and I coded on the c64 before that). I got used to POINTER&255 and POINTER/256 and never changed to anything more assembler specific.

 

When modding MA65, all I did was change BYTE to .BYTE etc in OPCODES.MAC, assembled a new version, and then tried it on some MAC/65 code (around 120k long). Worked a treat. I can assemble the same code using the ATASM cross assembler.

Link to comment
Share on other sites

  • 3 weeks later...
Didn't strike that bug. I originally moved to MAC/65 from other assemblers (and I coded on the c64 before that). I got used to POINTER&255 and POINTER/256 and never changed to anything more assembler specific.

 

When modding MA65, all I did was change BYTE to .BYTE etc in OPCODES.MAC, assembled a new version, and then tried it on some MAC/65 code (around 120k long). Worked a treat. I can assemble the same code using the ATASM cross assembler.

In an effort to make MA65 as MAC/65 compatible as possible, I've done something similar to that with version 1.7a, which will be released soon, but I've kept both kinds of directives in the table: with and without leading periods (for compatibility with my own source code). I have a few new directives in the pipeline, too, and the new version will produce unsegmented OBJ files. Compatibility with the new SDX 4.42 will also be tightened up.

Link to comment
Share on other sites

  • 7 years later...

I'm trying to use MA65 with SDX 4.48 an using LW33RC7 as the editor. I'm running SDX on an Atarimax 8mb cart. I've been having problems with MA65 crashing. What's weird, is it will only crash if I've used Last Word before running MA65. So if I boot SDX then assemble with MA65 it will work fine. But if I use Last Word to edit a file, then exit LW and run MA65, it locks. Any idea's what could be causing this?

Link to comment
Share on other sites

Probably uninitialised RAM in the assembler or something... it's rather old. I still have the source code somewhere, though, so if the reason for the crash becomes clear, I can probably get it fixed.

Is there another alternative that will work with SDX? I've tried AMAC and it seems to run, but the output files it creates are always empty.

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