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 > c64 garbage collection, NEED HELP!!!
2013-07-27 22:18
stiggity
Account closed

Registered: Jul 2013
Posts: 5
c64 garbage collection, NEED HELP!!!

I came across a real nice "aftermarket" c64 garbage collection routine. I spent 2 hours on the source, and got it able to
compile in my assembler (64tass). but, all comments are in
German. Im writing a BBS program for the 64, and it runs and
works, but it will pause for 10/12/15 seconds here and there. And anyone not knowing its collecting garbage, may
drop carrier. I would like to intermingle this code, into my own project, but believe its a little above my skills level. If anyone is into c64 telecom, and thinks they could help me out, be my guest. I can describe, and explain how my memory is laid-out, with the BBS. So if you think your good, and believe this code _can_ be intermingled, I can fully credit you in docs, manual, website, and email support. Thanks. Id rather go back and forth via E-mail, rather than posting the source here. I'm safe! :)

-Thanks,
--Steve

stiggity99(@)Comcast.net
 
... 20 posts hidden. Click here to view all posts....
 
2014-02-05 12:30
Tao

Registered: Aug 2002
Posts: 115
Quote: And I thought Tao modded C*Base is the best there is anyhow nowadays? :)

It is :P But I don't use a custom GC routine. I expect most BBS programs do the same thing as C*Base -- call the standard garbage collector from the wait screen.
2014-02-05 12:41
chatGPZ

Registered: Dec 2001
Posts: 11386
i actually remember driving to moses for hacking a fast garbage collection into c*base so it wouldnt be vulnerable to the good old wait-at-prompt-for-minutes problem :)
2014-02-05 12:51
JackAsser

Registered: Jun 2002
Posts: 2014
Found this floating around: http://www.atarimagazines.com/compute/issue49/422_1_Garbage_Col..
2014-02-05 19:35
soci

Registered: Sep 2003
Posts: 480
As the article says this is a solved problem in later basic versions.

The solution was to put a "back" pointer right after the allocated string which points to the string length and pointer of the original variable/array element.

Deleted strings reuse this pointer for noting down the size of the deleted string by using a special pointer of $ffxx.

With this it's trivial to garbage collect in O(n) time.

Just start from the end of string area. Either there's a normal back pointer, this can be used to find out how big the string is and where to adjust it's pointer after the move.

Or it could be a special pointer ($ffxx) then it's a hole, skip it over, the length is the xx part.

Then continue compaction until the beginning of string area is reached.

This costs 2 extra bytes per string of course. And the amount of extra code which fixes/replaces the original string handling...
Previous - 1 | 2 | 3 - 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
cba
Microshark/Damage(HUN)
Manex/Anubis
zscs
E$G/HF ⭐ 7
Moderators/CSDb Staff
Guests online: 135
Top Demos
1 Next Level  (9.7)
2 13:37  (9.7)
3 Mojo  (9.7)
4 Coma Light 13  (9.6)
5 Edge of Disgrace  (9.6)
6 What Is The Matrix 2  (9.6)
7 The Demo Coder  (9.6)
8 Uncensored  (9.6)
9 Comaland 100%  (9.6)
10 Wonderland XIV  (9.6)
Top onefile Demos
1 No Listen  (9.6)
2 Layers  (9.6)
3 Cubic Dream  (9.6)
4 Party Elk 2  (9.6)
5 Copper Booze  (9.6)
6 Dawnfall V1.1  (9.5)
7 Rainbow Connection  (9.5)
8 Onscreen 5k  (9.5)
9 Morph  (9.5)
10 Libertongo  (9.5)
Top Groups
1 Performers  (9.3)
2 Booze Design  (9.3)
3 Oxyron  (9.3)
4 Triad  (9.3)
5 Censor Design  (9.3)
Top Fullscreen Graphicians
1 Joe  (9.7)
2 Sulevi  (9.6)
3 The Sarge  (9.6)
4 Veto  (9.6)
5 Facet  (9.6)

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