Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
You are not logged in - nap
CSDb User Forums


Forums > C64 Coding > Kick Assembler Thread 2
2009-07-21 17:20
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....
 
2011-12-01 11:48
Shadow
Account closed

Registered: Apr 2002
Posts: 355
I apologize in advance for discussing non-C64 related stuff on CSDB, but since this is the defacto thread for everything KickAssembler related, I'll take my chances here.
I'm using kickass for my Atari 2600 coding, and I have some minor issues when doing bankswitching stuff.
For example, say I have two 4k banks, each should be assembled with $1000-$1fff addressing. Then I can do like this:
// Bank 1
.pc=$1000 

lda foo
sta bar
..


.pc=$1400 "Some routine"
lda this
sta that
...

// Bank 2
.pc=$2000 

.pseudopc $1000   
{
	lda foo
	sta bar
	..
}




And it works fine. However, say I want to place a routine at $1400 in the second bank. Then I have to break the pseudpc block, set the pc to $2400, and then start a new pseudopc block, like this:

// Bank 2
.pc=$2000 
.pseudopc $1000   
{
	lda foo
	sta bar
	..
}

.pc=$2400 
.pseudopc $1400   
{
	lda foo
	sta bar
	..
}


While it works, it gets a bit cumbersome to keep track of all the pc's and pseudopc blocks when you get more than a few.
Anyone have a good idea on how to work around this?
2011-12-02 09:23
andym00

Registered: Jun 2009
Posts: 44
In a really tenuous connection to Shadow's question above, but I figure now's the time to ask :) Is there ever likely to be support of the .pc directive for addresses >64K ?

It would make life assembling cartridge based stuff that's destined for >64K cartridge images a lot easier without a link stage to bolt all the banks together afterwards, and that's the simple case where there isn't code spanning these other banks and you want to share symbols etc..

I don't imagine it's a small change though, but had too ask :)
2011-12-04 13:57
Slammer

Registered: Feb 2004
Posts: 416
Shadow: I don't know Atari coding so you will have to be a little more specific of what solution you had in mind.

Are you looking for something like this:
// Bank 2
.pc=$2000 
.pseudopc $1000   
{
	lda foo
	sta bar
	..

.align $400
	lda foo
	sta bar
	..
}

Or perhaps some kind of macro that makes it easier to set up the blocks?
2011-12-04 14:08
Slammer

Registered: Feb 2004
Posts: 416
Andym: I guess making support for files larger than 64k is not that big a problem. But since I'm not doing cartridge development i'll need someone to test it and see that the concept i really useful (eg. is this a good way to do it and what else would you need to do cartridge development).




2011-12-04 15:58
Shadow
Account closed

Registered: Apr 2002
Posts: 355
Slammer: What I'm trying to accomplish I guess is setting the PC without having to break the pseudopc block.
Ideally I'd want something like this:

.pc=$2000
.pseudopc $1000
{
   lda blabla
   ...

.pc=$1400
   bla (code that ends up on $2400 here)
   
.pc=$1f3c
  blabla (code that ends up on $2f3c here)
   
}


But maybe the solution you posted will solve that!
Would replacing the
.pc=$1f3c
with
.align $0f3c
in my example work?
Eh, I guess I can just test that myself! :D
2011-12-04 22:56
Slammer

Registered: Feb 2004
Posts: 416
I don't think .align $0f3c is what you are looking for. The align directive is made so you can easily can align source code to page boundaries, så typically you would do:

.align $100
table: .byte 1,2,3,4,5,..

The align command reads the current memory position and inserts zeros until the next boundary is reached. Eg the pc=$107f and you write .align $100, then $81 zeros is inserted so the pc is now $1100.

In your first example it seemed like you wanted $400 block alignment :-)

Currently you cant set the pc freely inside an pseudocommand statement. You can make somekind of macro that advances the pc (and pseudope). Something like :

.macro setPos(pos) {
.var length = pos-*
.fill length, 0
}

but this will not work if pos is less that the current pc.
2011-12-08 20:37
Slammer

Registered: Feb 2004
Posts: 416
Hi, I got a mail from Alex who made a Kick Assembler plugin for Kate editor.

http://redlumf.blogspot.com/2011/12/kickass-plugin-for-kate.html

He would post it himself but had troubles signing up on CSDb.
2011-12-11 02:18
Conjuror

Registered: Aug 2004
Posts: 168
Slammer,

I have a couple suggestions for features:

1. Allow the ability to access variables from user-defined structures by index.
That way we can pass in a List or HashTable containing UDS's to a function and apply an action based on the variable's index rather than the name, which could be different for each UDS.
Great for library building.

2. Call an external JAVA program, passing in Strings, Floats, Integers, Lists & HashTables with UDS's and return the same back into KickAssembler variables.
I could get the functionality by having my JAVA code generate KickAssembler script but this could get quite large for Collections.
Would be nice to have this inline.

Steve
2011-12-11 17:37
Slammer

Registered: Feb 2004
Posts: 416
Quote: Slammer,

I have a couple suggestions for features:

1. Allow the ability to access variables from user-defined structures by index.
That way we can pass in a List or HashTable containing UDS's to a function and apply an action based on the variable's index rather than the name, which could be different for each UDS.
Great for library building.

2. Call an external JAVA program, passing in Strings, Floats, Integers, Lists & HashTables with UDS's and return the same back into KickAssembler variables.
I could get the functionality by having my JAVA code generate KickAssembler script but this could get quite large for Collections.
Would be nice to have this inline.

Steve


1. Yep, I guess it's easily done. Im not sure i understand how to benefit from this in libraries. (Looking forward too see en example of use!)

2. Yep, can be done. Is in fact on the todo list, but it's will take a bit of work so i have postphoned it a bit. One of the reasons for restructuring the assemble mekanism so it could handle a flexible number of passes and to cache script results, was to be able to call external programs - Both with script parameters and assembled code (if you want to do crunching or encrypting etc.)
2011-12-12 00:05
Conjuror

Registered: Aug 2004
Posts: 168
Say I had a multi-field sorting routine this time for point{x,y} I could pass in a List of points.
Another time the names could be different or sort by even more fields.

I recently did a 2 field sort with a Hashtable and Lists. The Keys been the Y values which I called sort on, then called sort on Lists (Hashtable values).
That got me the result I wanted but I'd rather have a more generic solution.

But if suggestion #2 comes soon this will be irrelevant as I will just use full blown JAVA Collections and its interfaces (hmm still indexed fields would still be useful there saves
calling invoke on named methods).

And great to hear that it is on your list. That will make any other 'missing' functionality just go away. Cant wait!
Previous - 1 | ... | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | ... | 61 - Next
RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Advanced
Users Online
JLD/Finnish Gold
Alakran_64
Airwolf/F4CG
Peiselulli/tRSi
acrouzet/G★P
Mike
AnonymousMOS
Guests online: 70
Top Demos
1 Next Level  (9.7)
2 13:37  (9.7)
3 Mojo  (9.7)
4 Coma Light 13  (9.7)
5 Edge of Disgrace  (9.7)
6 Uncensored  (9.6)
7 Comaland 100%  (9.6)
8 No Bounds  (9.6)
9 Aliens in Wonderland  (9.6)
10 Wonderland XIV  (9.6)
Top onefile Demos
1 Layers  (9.6)
2 Cubic Dream  (9.6)
3 Party Elk 2  (9.6)
4 Copper Booze  (9.6)
5 Rainbow Connection  (9.5)
6 It's More Fun to Com..  (9.5)
7 Dawnfall V1.1  (9.5)
8 Birth of a Flower  (9.5)
9 Morph  (9.5)
10 Quadrants  (9.5)
Top Groups
1 Nostalgia  (9.4)
2 Oxyron  (9.3)
3 Booze Design  (9.3)
4 Censor Design  (9.3)
5 Offence  (9.3)
Top Fullscreen Graphicians
1 Joe  (9.7)
2 Veto  (9.6)
3 Facet  (9.6)
4 The Sarge  (9.6)
5 Carrion  (9.5)

Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.139 sec.