Posted 7 years ago
The title says it all.
It is interesting to know why certain developers use certain dev-tools to create certain software.
I am using tniASM v1.0(beta) and am at the moment playing around with the macro functionality in it to make some vdp stuff somewhat shorter and easier to overlook and thus creating a macro library.
Together with another user (on MRC Syn, dunno if he is on this forum) we are creating the foundation for a SHMUP game, it is at the moment also a learning experience, so lots of test applications and broading my code library this way as well.
Overall I am happy with how tniASM works. For those who don't know this assembler, it is a cross assembler, so you can use it in you console in windows. For more questions about it you can ask パトリク he is the guy behind TNI ;)
I recently made the sound effect driver for MSX using ccz80.
It is a language similar to C language. But it has no main function. ML and C language can be written together. I think it is very difficult to write with ML alone. So, I think that ccz80 is easy to use.
The following is an excerpt from the source of the driver.
//nisfxdrv include "nisfxfnc.ccz80"; include "standard.ccz80"; byte a,a2,wa,mo,xx,v,lp,s0,s1,s7,s72,ply; word pos,pos2,aa; asm{ "org #2800", "bgflag: equ #4300 + 15", // 0123456789012345678901234567890123456789 "DEFM \x22NISFXDRV 1.0 / 2017 N.I \x22", "DEFB #1A,#04", "DEFS 6", "jp _seplay", "jp _seint" } //---------- start to play seplay: asm{"or a","jp z,_sestop","dec a","add a,a","ld c,a","ld b,0","add hl,bc","ld (_pos2),hl","LD HL,BGFLAG","RES 1,(HL)"} if(ply==1){ply=2;while(ply==2);}//wait seint a=*(pos2);a2=*(pos2+1);aa=a2; pos=pos2+aa*256+a; sound(1,0);sound(0,0);//sound(8,0); if((*(pos++)&1)==1){s7=54;s72=128;} //54:110110 10000000 else{s7=62;s72=128+8;} //62:111110 10001000 wa=0;mo=0;v=15;lp=0;s0=0;s1=0;//dbg=#d000; //*(dbg++)=pos/256; //*(dbg++)=pos&255; // interrupt on gosub seint;//if(ply==0)return; asm{ "LD HL,BGFLAG","SET 1,(HL)" } return;
@Ramones:
Btw: Javi, I touch -1 on your reply. Was an error (I apologise). I can't return to 0. :S
Oh, don't worry about it. :-)
And I agree: I like Egor's AS.COM a lot too. It doesn't support as many pseudoinstructions as M80, but I never used those funcionalities in M80 anyway. A pity Egor isn't with us anymore.
@らとく: That doesn't sound like anything special. tniASM has had R800 support ever since its first version 17 years ago, as well as unlimited include statements. Macros came with tniASM v1.0 (15 years ago) and I'm pretty sure its macro capabilities are uniquely powerful.
What tniASM v1.0 allows you to do is use your own style. Do everything how you prefer it, instead of how the assembler author prefers it.
As for assemblers on MSX itself, I like to use WB-ASS2 for quick tests, and although I have used GEN80 and Compass back when I was learning assembly, I've never assembed whole programs on MSX. For those I used cross-assemblers, and their limitations were the only reason I learned C and wrote tniASM.
Since its release there have been several other cross-assemblers that have copied tniASM's unique feature set. I consider it a compliment, but it would've been nice if some actual credit was given.
Most popular threads:
#186 by 鄧永志
Posted on 30/Jun/2017 10:38:35
MRC/IRC user syn here ;)
I started with tniASM 0.45 and later moved to 1.0. Im not sure what the differences are between tniASM and other assemblers but I don't see a reason to change. The fact that I can get in touch with its developer pretty easily/fast through #msxdev is a big plus (live support chat lol), so if I have questions I get a reply relatively fast.