| |
Slammer
Registered: Feb 2004 Posts: 416 |
Kick Assembler
I recently did a new 6510 assembler and I hereby make it open to the public so you can use it too.
Kick Assembler is the combination of an assembler for doing 6510 machine code and a high level script language. With the assembler functionalities, you can write your assembler programs, and with the script language, you can write programs that generate data to use in the assembler programs. This could be data such as sine waves, coordinates for a vector object, or graphic converters. In addition, you can combine assembler commands and scripting commands which is a powerful combination. A little example: Where other assemblers can do simple unrolling of loops, Kick Assembler can base the unrolling of a loop on a list generated by the script language and select the content of the loop body based on the content of the list. This makes it more flexible when generating speed code.
The script language can handle values such as Numbers, Booleans, Strings, Lists, Vectors, Hashtables, Matrixes and you can define your own structures if the build in doesnt meet your needs. The assembler contains a replica of the java math library + a special 3d library for doing vector math (Rotation, move and projection matrixes). You can also define your own functions.
Finally, I want to mention that the assembler contains some special objects that makes it easy to import graphics (and convert it into you own spooky format which fits into the part you are working on) and music. Since finding the correct play address for a tune has recently been an issue in the *stupid* ASM Sid Player Example- thread I will here show how its done in kick Assembler. You simply load you PSID file into a variable in the script language and then read the things you need to know from the variable.
// Load the music into an object in the script language
.var music = LoadSid("C:/C64Music/Tel_Jeroen/Closing_In.sid")
// init the music
lda #music.startSong-1
jsr music.init
// play the music
jsr music.play
(The full example is listed in the manual)
Feel free to check out the assembler at http://www.theweb.dk/KickAssembler.htm
|
|
... 251 posts hidden. Click here to view all posts.... |
| |
Mix256 Account closed
Registered: Dec 2008 Posts: 26 |
Cool! Seems a bit faster.
But the virtual-stars on the mem-map has disappeared.
|
| |
LOGAN Account closed
Registered: Aug 2003 Posts: 71 |
Hey Slammer, thanks for working on KickAss, it kicks ass. Things like supporting some formats like images and PC formatted SID files is great, innovative and useful as is the import c64 binaries addition. Also macros are useful to create your own libraries. Memory maps generation are also nice.
I switched for compiling MOTAS to KickAss and while it has it's own quirks (ie // as remarks, only lower case opcodes/addressing, specific syntax it's an assembler with advanced options. I hope more and more people will switch to KickAss.
Keep up the good work! |
| |
Slammer
Registered: Feb 2004 Posts: 416 |
Mix256: Good observation. I Just upped version 3.2 which takes care of the problem.
Logan: Thanks. |
| |
Mix256 Account closed
Registered: Dec 2008 Posts: 26 |
Great, but their length are now -1... :)
-----
v2.25
-----
$62ac-$6bb5 Object Routines - Common
*$6e00-$7966 Object Routines - World 1
*$6e00-$779e Object Routines - World 2
-----
v3.20
-----
$62ac-$6bb5 Object Routines - Common
*$6e00-$6dff Object Routines - World 1
*$6e00-$6dff Object Routines - World 2
|
| |
Slammer
Registered: Feb 2004 Posts: 416 |
I upped a new one.. Try again :-) |
| |
Mix256 Account closed
Registered: Dec 2008 Posts: 26 |
Works like a charm, thanks!
KNG wouldn't (become to) exist if it wasn't for this excellent asm. Great work!
|
| |
assiduous Account closed
Registered: Jun 2007 Posts: 343 |
Quote: Cavey: I got the files, and they assembled ok. Jammer told me the problem comes when you place the files in a cetain way, but I havn't been able to reconstruct it.
i get "parsing,null" using plain kickass.jar prog.asm -log textfile.txt if an exclamation mark is used somewhere in the dir path. |
| |
Slammer
Registered: Feb 2004 Posts: 416 |
Could you be a little more specific of how you get this error?
I just tried -log test!test/a!b.txt and it works ok.
Then i tried and an exclamation mark in the Kick!Assembler dir, which works fine too:
C:\Download\Kick!Assembler\Examples\MusicIrq>java -jar ..\..\KickAss.jar MusicIr
q.asm
//------------------------------------------------------
//------------------------------------------------------
// Kick Assembler v3.4 - (C)2006-2009 Mads Nielsen
//------------------------------------------------------
//------------------------------------------------------
parsing
flex pass 1
flex pass 2
Output pass
Writing file: MusicIrq.prg
|
| |
assiduous Account closed
Registered: Jun 2007 Posts: 343 |
test.asm:
.pc= $1000
rts
along with the latest version of KickAss.jar located in D:\kickasstest!\
command prompt:
D:\kickasstest!\KickAss.jar test.asm -log textfile.txt
the content of textfile.txt:
parsing
null
then "!" is removed from the dir name and the following prompt is run:
D:\kickasstest\KickAss.jar test.asm -log textfile.txt
the content of textfile.txt:
parsing
flex pass 1
Output pass
Writing file: test.prg |
| |
Slammer
Registered: Feb 2004 Posts: 416 |
Ok, now I reconstructed it. You found a bug in Java!! It handles resources wrong in jar-files when the the dir-path ends with an !. So C:\KickAssTest! is bad and but C:\KickAssTest!x is ok. Just place the jarfile in a dir that doesnt end with !.
The funny thing is that if you unpack the jar file to KickAss!, set the CLASSPATH and run KickAssembler without the jarfile, then it works ok. So if you want dirs ending with '!' you can have it, but its a bit easier just to rename you dir.
.. unzip to KickAss!, then
C:\KickAssTest!>set CLASSPATH=c:\KickAssTest!\KickAss!
C:\KickAssTest!>java cml.kickass.KickAssembler test.asm
parsing
flex pass 1
Output pass
Writing file: test.prg
C:\KickAssTest!>
|
Previous - 1 | ... | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 - Next |