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 > Wanted: Source codes (for badass)
2020-10-17 08:22
Sasq

Registered: Apr 2004
Posts: 155
Wanted: Source codes (for badass)

In order to improve my assembler it would be great to try it on existing projects.

So if you have sources for demos/intros/games that you don't mind sharing it would be kind if you could send them my way, and I'll try to get them working in bass.

They need to be buildable the normal way (Kickass, Acme or whatever) so I can compare the output binaries...

(this also means that if your type of demos requires special tools there is a greater chance I will include such functionality in bass).

-- sasq64@gmail.com
 
... 65 posts hidden. Click here to view all posts....
 
2020-11-05 14:00
Sasq

Registered: Apr 2004
Posts: 155
There is not really an "automatic optimization". It's just that when it is time to assemble the opcode, we don't know which opcode to pick, and it makes most sense to pick the zp opcode if the argument is below $100.

I think the ideal would be something like;

* We support 3 numeric types, 8-bit, 16-bit and automatic.
* A literal matching $xxxx becomes 16-bit, $xx -> 8-bit, all others automatic.
* The type is kept during expression evaluation. If an operation causes an 8-bit value to overflow, then that is an _error_.
* An automatic type is converted to 8 or 16-bit depending on size when it is time to assemble the opcode.
2020-11-05 14:14
Sasq

Registered: Apr 2004
Posts: 155
There are special cases though. Let's say you have some weird routine that matches zero page addresses to the lower byte of some 16-bit address. Which opcode would you expect here ?

data = $c000
sta data & $ff
2020-11-05 14:55
tlr

Registered: Sep 2003
Posts: 1714
Quote: There are special cases though. Let's say you have some weird routine that matches zero page addresses to the lower byte of some 16-bit address. Which opcode would you expect here ?

data = $c000
sta data & $ff


I think it would be reasonable if an '&' masked the size of the other operand, resulting in size 8 in this case.
2020-11-05 15:20
Sasq

Registered: Apr 2004
Posts: 155
So what is the rule ? How do we know what the code actually means ?

We can't demote to 8-bit just because the value becomes < 256, that defeats the whole point. So it must be "if it looks like he REALLY means it", ie explicitly anding with constant $ff.

But what about
sta data & mask
sta data & (size-1)
sta data & (... complex expression)


madness lies here. For cases like this the programmer needs to rely on something like

sta.b data & $ff
2020-11-05 15:29
tlr

Registered: Sep 2003
Posts: 1714
Quoting Sasq
So what is the rule ? How do we know what the code actually means ?

You could demote to 8-bit because one of the operands of '&' is 8-bit. Same for '%' as they are essentially wrapping operations. Not sure if there will be other bad consequences because of this though.
2020-11-05 15:32
chatGPZ

Registered: Dec 2001
Posts: 11116
Quote:
How do we know what the code actually means ?

you write it, explicitly :)
2020-11-05 16:27
Sasq

Registered: Apr 2004
Posts: 155
This would mean that

table:
    !fill 256
end:

size = table-end

sta data & (size-1)
sta data & $ff


would generate different opcodes, because size is not 8-bit

All this would require a complicated type and promotion system, and you could only get it to do _almost_ what you want.

I think

sta     ; addressing mode depends on operand
sta.b   ; zp
sta.w   ; 16-bit


is probably the simplest/best way to do it.
2020-11-05 16:35
Raistlin

Registered: Mar 2007
Posts: 559
Or just use sta.zp and sta.abs in the same way as KickAss?
2020-11-05 16:43
Sasq

Registered: Apr 2004
Posts: 155
Sure, what you call the suffix is no too important :)

Probably .8 .b .zp .z should all be synonyms
And .w .16 .abs
2020-11-05 16:47
chatGPZ

Registered: Dec 2001
Posts: 11116
.whatimean
Previous - 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 - 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
csabanw
dlee
Sentinel/Excess/TREX
The MeatBall
Knight Rider/TREX
goto80/HT
Guests online: 185
Top Demos
1 Next Level  (9.8)
2 Mojo  (9.7)
3 Coma Light 13  (9.7)
4 Edge of Disgrace  (9.6)
5 Comaland 100%  (9.6)
6 No Bounds  (9.6)
7 Uncensored  (9.6)
8 Wonderland XIV  (9.6)
9 Memento Mori  (9.6)
10 Bromance  (9.5)
Top onefile Demos
1 It's More Fun to Com..  (9.7)
2 Party Elk 2  (9.7)
3 Cubic Dream  (9.6)
4 Copper Booze  (9.5)
5 TRSAC, Gabber & Pebe..  (9.5)
6 Rainbow Connection  (9.5)
7 Wafer Demo  (9.5)
8 Dawnfall V1.1  (9.5)
9 Quadrants  (9.5)
10 Daah, Those Acid Pil..  (9.5)
Top Groups
1 Nostalgia  (9.3)
2 Oxyron  (9.3)
3 Booze Design  (9.3)
4 Censor Design  (9.3)
5 Crest  (9.3)
Top Logo Graphicians
1 Sander  (10)
2 Facet  (9.7)
3 Mermaid  (9.4)
4 Pal  (9.4)
5 Shine  (9.3)

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