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/C128 combo program compilation
2024-08-15 22:47
Jammer

Registered: Nov 2002
Posts: 1336
C64/C128 combo program compilation

Question might turn out plainly stupid so bear with me but I'm total noob on C128.

Can C64 program be compiled to run both on C64 and C128 in its native 128k mode if it has appropriate branches in code? Or it's always two separate tailored builds?

I've already learnt that C128 program startup is either $1C01 or $4001 but if C128 startup was embedded at the right spot, would it still launch?
 
... 35 posts hidden. Click here to view all posts....
 
2024-08-16 12:00
oziphantom

Registered: Oct 2014
Posts: 490
Oh you are using a GTK version, yeah "attach/load" just attaches the image for me. But that is on 3.7.1 might be different on a newer version.
2024-08-16 12:57
Jammer

Registered: Nov 2002
Posts: 1336
Quoting JackAsser
As GP said. Just flip the bit in the border regardless if it's a C128 or C64. It doesn't matter for the C64, and a C128 user will get the boost. No problems.

I understood you here that I need to keep constant track of switching $d030 for border and visible area but from what I test the thing, it works fine just after switching $d030 to 1 for good and machine keeps track on its own. Anyway, it works, yay! :D
2024-08-16 13:13
tlr

Registered: Sep 2003
Posts: 1791
Quote: Quoting JackAsser
As GP said. Just flip the bit in the border regardless if it's a C128 or C64. It doesn't matter for the C64, and a C128 user will get the boost. No problems.

I understood you here that I need to keep constant track of switching $d030 for border and visible area but from what I test the thing, it works fine just after switching $d030 to 1 for good and machine keeps track on its own. Anyway, it works, yay! :D


Uhm, are you sure about that? It screws big time with VIC-II output on the c128s I’ve tested. What machine are you running on?
2024-08-16 13:20
Jammer

Registered: Nov 2002
Posts: 1336
Quoting tlr
Uhm, are you sure about that? It screws big time with VIC-II output on the c128s I’ve tested. What machine are you running on?

x128, C64 compatible mode in GTK Vice 3.8 r44982. No access to real machine.
2024-08-16 13:28
chatGPZ

Registered: Dec 2001
Posts: 11391
beware, x128 does not emulate the ViCIIe garbage that you see when switching to 2MHz - try z64k (and certainly the real thing)
2024-08-16 13:34
Jammer

Registered: Nov 2002
Posts: 1336
Thanks, guys, for the heads up! <3 Is it also same problem with SuperCPU and other accelerators?
2024-08-16 13:51
chatGPZ

Registered: Dec 2001
Posts: 11391
No, the others don't result in that kind of garbage display. SCPU is an entirely different beast though :)
2024-08-16 19:05
zzarko

Registered: Feb 2003
Posts: 77
3rd place at Revision 2024 Wild category:

https://www.pouet.net/prod.php?which=96567

The same binary (although with some caveats) works on C64, MSDOS, Linux, SNES, NDS, Gameboy, Gamecube, can be unpacked as a ZIP file (then it contains its complete source) and can be openbed as PDF. For any of these, just change the extension.

So I would guess there is definitely a way to make one binary that runs on C64 and C128 without modifications (I am not saying that I can make one!).
2024-08-18 15:04
Martin Piper

Registered: Nov 2007
Posts: 726
Quote: 3rd place at Revision 2024 Wild category:

https://www.pouet.net/prod.php?which=96567

The same binary (although with some caveats) works on C64, MSDOS, Linux, SNES, NDS, Gameboy, Gamecube, can be unpacked as a ZIP file (then it contains its complete source) and can be openbed as PDF. For any of these, just change the extension.

So I would guess there is definitely a way to make one binary that runs on C64 and C128 without modifications (I am not saying that I can make one!).


This is nice. As long as the prg is loaded with ,8 and not ,8,1 then it would be relatively easy to make a prg that detects if it is running in C64 or C128.
2024-08-18 18:00
oziphantom

Registered: Oct 2014
Posts: 490
I guess you could use BASIC to detect which machine you are on, or maybe which version of BASIC you are running?
Set the BASIC error vector to something custom and then try and run a BASIC 7.0 command, if it fails you know you are BASIC 2, if it passes you know you are BASIC 7 and hence then know were the asm code starts. Both the 64 and 128 have the BASIC error vector at $300/1.

However you then still have the issue that your code has to handle being in two different memory locations, but I guess at that point you could jump to a known address at the end of code on a 128 that then copies the main code down to 0801 or wherever you want to start, then apply your patches and then jump to it.
Previous - 1 | 2 | 3 | 4 | 5 - 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
encore
REBEL 1/HF
Toggle/Padua
Matt
HCL/Booze Design
tlr
Xiny6581/Pretzel Log..
celticdesign/G★P/M..
Flex/Artline Designs
Guests online: 110
Top Demos
1 Next Level  (9.7)
2 13:37  (9.7)
3 Coma Light 13  (9.6)
4 Edge of Disgrace  (9.6)
5 Mojo  (9.6)
6 Uncensored  (9.6)
7 The Demo Coder  (9.6)
8 Comaland 100%  (9.6)
9 What Is The Matrix 2  (9.6)
10 Wonderland XIV  (9.6)
Top onefile Demos
1 Layers  (9.7)
2 Cubic Dream  (9.6)
3 Party Elk 2  (9.6)
4 Copper Booze  (9.6)
5 Rainbow Connection  (9.5)
6 Morph  (9.5)
7 Dawnfall V1.1  (9.5)
8 Libertongo  (9.5)
9 Katzen-Video.mp4  (9.5)
10 Onscreen 5k  (9.5)
Top Groups
1 Booze Design  (9.3)
2 Oxyron  (9.3)
3 Performers  (9.3)
4 Triad  (9.3)
5 Censor Design  (9.3)
Top Diskmag Editors
1 Magic  (10)
2 Jazzcat  (9.5)
3 hedning  (9.5)
4 Elwix  (9.1)
5 Remix  (9.1)

Home - Disclaimer
Copyright © No Name 2001-2025
Page generated in: 0.046 sec.