About C64 OS Services


C64 OS is an operating system for the Commodore 64 and 128 computers. You can read all about C64 OS here. Most modern operating systems make transparent use of Cloud Services to augment the user experience and provide many valuable features.

The abundance of WiFi modems and ethernet solutions available to C64/128 users, at very reasonable prices, means there is very little excuse for us all not to have internet access on our favorite 8-Bit computers. One reason not to have internet access, though, is a lack of usefulness.

C64 OS itself aims to change the problem of usefulness, by baking network services into many parts of the OS. And the Cloud Services that C64 OS access is a suite of endpoints specifically designed to make the internet more easily digestible and discoverable by Commodore 8-Bit computers. The services are hosted services.c64os.com. If our usage begins to outstrip its bandwidth and computational resources, it would be very useful if others in the community would donate their bandwidth and computation and mirror the services. We could even have a service, whose sole purpose is list available mirrors which could be selected from either manually or at random, to distribute the load.

Every attempt will be made to keep the services backwards compatible, as new features get added. If a service ever requires a complete rewrite, it will be given a new endpoint. New services will be added as time goes on. And ideas, for new services and additional features, are always welcome.

—Greg Naçu (Contact Me)

All Services

http://services.c64os.com/

All services listed below have an endpoint. The endpoint is a resource which is available at the Base URL. Mirrors of C64 OS Services will provide a different Base URL. Information about each service is, therefore, presented independently of the server that is hosting the Services.

If a service lists its endpoint merely as image, then the full URL will be: http://services.c64os.com/image

All parameters are sent as URL encoded GET variables. Some but not all parameters may be combined together in the same request. Each parameter will specify what it can be combined with.

If a service lists parameters: u for input URL, and g for gamma value between 1 and 10, then they would be used in the full URL like this: http://services.c64os.com/image?u=http://some.url.com/someimage.png&g=2

Image Conversion

image

Takes a source URL to an image file. Downloads the image, scales it, reduces its colors to the C64 palette, and outputs to the specified output format. The default is Koala.

Allows a C64 program, which has the URL to an image file, to request the image file via the image proxy, and directly download a preconverted version of the file ready to be displayed or saved for later.

Parameters

URL to source image. Supports http and https.

[jpg|gif|png] Input format of source image. The input format is detected automatically by the extension on the file in the source URL. However, if the file is misnamed or is not specified explicitly, this parameter can override that.

[koala|jpg|gif|png] (default: koala) Output image format. Defaults to koala. If the output format is Koala, an addtional header is sent, for content-disposition: attachment, with a filename. This will cause normal browser to download and save the file. Other output formats will be rendered in the browser as any regular image.

Parameters for Koala Output Only

[1 ... 100] (default: 100) Simple Dithering. Not the same as Floyd Steinberg Dithering. Should not be combined with FS dithering. Maybe used to give finer grain control over the amount of dithering which can be useful for improving the clarity of certain types of images.

[0 ... 20] (default: 7) Luminance

[-255 ... 255] (default: 0) Brightness

[-100 ... 100] (default: 0) Contrast

[1|0] (default: 1) Color Mapping is combined with Floyd Steinberg dithering. If Floyd Steinberg dithering is turned on, Color Mapping must be turned on. Color Mapping may be used without FS dithering.

[1|0] (default: 0) Floyd Steinberg dithering. FS dithering must be combined with Color Mapping, and cannot be combined with Simple Dither, Luminance, Brightness or Contrast.

Parameters for JPG, GIF, PNG Output Only

[0.5 ... 5] (default: 1) Scale Factor. Scales in multiples of 320x200. This is for output to JPG, GIF, and PNG only. Can be useful for seeing a graphic blown up, in a browser.

Example Usage

http://services.c64os.com/image?u=http://www.ibeta.eu/blog/wp-content/uploads/2012/02/darthvader-design.jpg&fs=1&of=jpg&sf=2.5

SID (Relocated) Search

sid

A combination of an HVSC SID search API, and repository from which SID tunes can be directly downloaded.

The service is intended to be used by the C64 itself. Other services exist to help PCs browse the complete HVSC. More technically, this API is to find and download SIDs that have been relocated (using sidreloc) to make them compatible with C64 OS. The SIDs have been divided into two size categories. Less than 4K and less than 8K. The division is important, because the C64 OS sid player has to specifically allocate memory to allow the SID to co-exist with other arbitrary applications. If the sid player allocates 8K, then that's 8K that other apps can't use. Therefore, the user may opt to only allocate 4K, and then limit the search API to only those tunes that fit within that space. All SIDs are relocated to start at $8000. If the original was page aligned, sidreloc doesn't make it page aligned, so it may actually start anywhere within page $80. The original PSID header is still attached, and has to be parsed to determine the exact location where the SID data needs to be put, within page $80, as well as the exact addresses of its init and play routines. All ZeroPage address have been relocated to fall between $2b and $42.

Search Parameters

Search parameters that can be combined together are ANDed, making the results progressively more narrow. Some limitations on parameter combinations exist and are specified with each parameter.

C stands for "chance." One SID tune will be selected at random. This cannot be used with any other search parameters.

Specify an exact release year. Cannot be combined with u or l.

Specify upper bound for year. eg. u=1990 will find tunes only released in 1990 or earlier. Cannot be combined with y.

Specify lower bound for year. eg. l=1987 will find tunes only released in 1987 or later. Cannot be combined with y.

Case insensitive match on partial name. eg. n=dance finds "Dance Trial", "Air Dance 4 (remixed)", "Rhythm is a dancer", "Nuclear Dance", etc.

Case insensitive match on partial author. eg. a=tim finds "Tim Gibson", "The ultimate", etc.

Case insensitive match on partial released. eg. r=x finds "1989 Exact", "1988 sphinx", etc.

[0|1] Returns matches on size category. Currently supported categories are 0 for 4K and 1 for 8K. To select both size categories omit this parameter altogether.

[1 ... N] (default: 10) Limits the number of matching results. eg. t=15 will limit the search to 15 results.

[1|0] (default: 0) Optionally use an HTML separator. This will change the results separator from \n to <br>. This is useful if you are making requests in a webbrowser, the results are made easier to read, but harder for a C64 to parse. See "Search Results Format" below.

Search Results Format

Every search result consists of a set of 7 fields separated by \n (0x10) newline characters. The fields are listed in the following order:

Sets of search results are separated by a newline character. The final field of a search result is terminated by a newline like all the other fields, therefore two newlines appear side-by-side between results.

Download Parameters

[1 ... MAXTUNEID] (default: 100) Selects a specific tune by its Tune ID, the first field from the search results. Make two requests, one request with search parameters to find the Tune ID. And a second request to download the tune by its ID.

Retrieve a tune's details, rather than downloading it. This can only be used together with i. It allows you to browse the catalog manually by ID.

Example Usage

Search Example:

http://services.c64os.com/sid?l=1980&u=1995&t=2&s=1

Result:

		
742
<?>
Zoran Jager (Kruger)
1991 Transcom
Kruger_02.sid
8K
demos

749
Trash It (tune 6)
Technical Beat Master
1991 Star Cracks International
Trash_It_tune_6.sid
8K
demos

Download Example:

http://services.c64os.com/sid?i=749

The download example link downloads Trash It (tune 6), according to the search results.