| |
Slammer
Registered: Feb 2004 Posts: 416 |
Kick Assembler Thread 2
The previous thread took a little long to load, so this is a new fresh one.. |
|
... 592 posts hidden. Click here to view all posts.... |
| |
Cruzer
Registered: Dec 2001 Posts: 1048 |
@H Macaroni: Seems like a cool feature, but no, you can't do that in KickAss. What I usually do is simply to print out the address of the point I wanna inspect in the monitor like this:
.print "here: " + toHexString(*)
|
| |
Slammer
Registered: Feb 2004 Posts: 416 |
If i where you, I would export a vice symbol file (option -vicesymbols) and see your code in the vice monitor (including your labels).
There actually is a secret option a bit like the one you want, but with a much higher detail level so I won't recommend it for debugging programs in general (I use it for debugging the assembler). However, It might be interesting for people who wants a sneak peak of whats going on while assembling. The option is -parsetree which shows the state between each pass. The output looks like this: rasterbar.asm 45:4 : #NAsmCmd(ldy, EAsmArg(EVarRef(rasterColor)))
rasterbar.asm 46:4 : #NAsmCmd(cpy, EAsmArg(EConst(!255.0)))
rasterbar.asm 47:4 : #NAsmCmd(beq, EAsmArg(EVarRef(o1)))
rasterbar.asm 48:4 : #NAsmCmd(lda, EAsmArg(EConst(!53266.0)))
rasterbar.asm 49:4 : #NAsmCmd(cmp, EAsmArg(EConst(!53266.0)))
rasterbar.asm 50:4 : #NAsmCmd(beq, EAsmArg(EObjFuncCall(-,EPcRef(),EConst(!3.0))))
rasterbar.asm 51:4 : #NAsmCmd(sty, EAsmArg(EConst(!53280.0)))
rasterbar.asm 52:4 : #NAsmCmd(inx, EAsmArg())
rasterbar.asm 53:4 : #NAsmCmd(jmp, EAsmArg(EVarRef(l1)))
Beware, It easily gets complicated and is not supported in any way (Originally only intended for me to read). However, if you are really interested whats going on in line 50, you might be able to tell.
|
| |
Norrland
Registered: Aug 2011 Posts: 14 |
Thanks for the answers, I'll try them. |
| |
Mace
Registered: May 2002 Posts: 1799 |
Why do I get an error (Uknown function) on the - in [max-min] in de code below?
Using KickAss v3.25.
.pseudocommand sinData min;max;freq {
.var amp = 0
.eval amp = [max-min]/2
.fill 256, amp + amp * sin(toRadians(i*[360*freq]/256))
}
.pc = $1000
:sinData 0;255;1
|
| |
Killsquad Account closed
Registered: Jun 2005 Posts: 17 |
To get the numeric value of the params use max.getValue(), min.getValue() and freq.getValue().
|
| |
Killsquad Account closed
Registered: Jun 2005 Posts: 17 |
Would it be possible for enums to continue from the next number after an explicit value?
Example:
.enum { var1 = $10, var2, var3 }
should give var2=$11, var3=$12
As it is now var1=$10, var2=$00 and var3=$01
Thanks for the massive effort by the way. Excellent assembler! |
| |
Cruzer
Registered: Dec 2001 Posts: 1048 |
Mace: Seems more like a job for a macro. Then you don't have to use getValue() |
| |
Mace
Registered: May 2002 Posts: 1799 |
Thanks Killsquad.
@Cruzer: yeah, probably... was just foolin' around 'n stuff ;-) |
| |
Slammer
Registered: Feb 2004 Posts: 416 |
Mace: What Killsquad and Cruzer said. Pseudocommands is macros that takes assembler instruction arguments. So you can write :myCmd #$20 or :myCmd $20 and the command will know that the first one is an immediate argument and the second one is an absolute argument although they both have the value $20.
Killsquad: Thanks! Good Point. I actually considered that solution when I made the enum directive and it could just as well have been that solution. However, I'm rather sensitive to things that destroys backwards compatibility so I'm not planning on changing it. |
| |
ruk
Registered: Jan 2012 Posts: 43 |
Hi,
This does not compile:
.var hashtable = Hashtable()
.const booleanOption = hashtable.containsKey("booleanOption") && hashtable.get("booleanOption")
The error is "Error: Can't get a boolean representation from a value of type Null", so I guess there is some issues with lazy evaluation?
As a workaround I have defined the following function:
.function getValue(hashtable, key, defaultValue) {
.if (hashtable.containsKey(key))
.return hashtable.get(key)
else
.return defaultValue
}
So that I can do e.g.
.const underTest = getValue(cmdLineVars, "testing", false)
|
Previous - 1 | ... | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | ... | 61 - Next |