gtBASIC
Forum rules
Be nice. No drama.
Be nice. No drama.
Re: gtBASIC
After more economising I get this:
Memory::printFreeRamList() : 130 : 0xee00 1
Memory::printFreeRamList() : Expected 28467 : Found 28467
*******************************************************
* Assembling file : 'pirateadventure64k.gasm'
*******************************************************
Loader::saveGt1File() : total segment size:49 > 256 in segment 8
Couldn't compile ./pirateadventure64k.gt1 from pirateadventure64k.gbas : contains Native code or file system error
Memory::printFreeRamList() : 130 : 0xee00 1
Memory::printFreeRamList() : Expected 28467 : Found 28467
*******************************************************
* Assembling file : 'pirateadventure64k.gasm'
*******************************************************
Loader::saveGt1File() : total segment size:49 > 256 in segment 8
Couldn't compile ./pirateadventure64k.gt1 from pirateadventure64k.gbas : contains Native code or file system error
Re: gtBASIC
Try replacing the code in loader.cpp at line 238:
With this:
P.S. I just edited the replacement code, so if you grabbed it earlier than this edit, then grab it again!
Code: Select all
bool lastSegFractured = false;
Gt1Segment segment = {false, hiAddr, segmentsIn[0]._loAddress, uint8_t(segmentsIn[0]._dataBytes.size()), segmentsIn[0]._dataBytes};
for(int i=0; i<int(segmentsIn.size()); i++)
{
if(segment._dataBytes.size() == 0)
{
lastSegFractured = false;
segment._loAddress = segmentsIn[i]._loAddress;
segment._dataBytes = segmentsIn[i]._dataBytes;
segment._segmentSize = uint8_t(segmentsIn[i]._dataBytes.size());
}
if(i<int(segmentsIn.size()-1) && segmentsIn[i]._loAddress + segmentsIn[i]._dataBytes.size() == segmentsIn[i + 1]._loAddress)
{
segment._dataBytes.insert(segment._dataBytes.end(), segmentsIn[i + 1]._dataBytes.begin(), segmentsIn[i + 1]._dataBytes.end());
uint16_t segmentSize = segment._segmentSize + segmentsIn[i + 1]._segmentSize;
if(segmentSize > SEGMENT_SIZE)
{
fprintf(stderr, "Loader::saveGt1File() : total segment size:%d > %d in segment %d\n", segment._segmentSize, SEGMENT_SIZE, i);
return false;
}
segment._segmentSize += segmentsIn[i + 1]._segmentSize;
if(segmentSize == SEGMENT_SIZE) segment._segmentSize = 0;
}
else
{
lastSegFractured = true;
segmentsOut.push_back(segment);
segment._dataBytes.clear();
}
}
if(!lastSegFractured) segmentsOut.push_back(segment);
Code: Select all
Gt1Segment segment = {false, hiAddr, segmentsIn[0]._loAddress, uint8_t(segmentsIn[0]._dataBytes.size()), segmentsIn[0]._dataBytes};
for(int i=0; i<int(segmentsIn.size()); i++)
{
if(segment._dataBytes.size() == 0)
{
segment._loAddress = segmentsIn[i]._loAddress;
segment._dataBytes = segmentsIn[i]._dataBytes;
segment._segmentSize = uint8_t(segmentsIn[i]._dataBytes.size());
}
if(i < int(segmentsIn.size()-1))
{
uint16_t currEnd = segmentsIn[i]._loAddress + uint16_t(segmentsIn[i]._dataBytes.size());
uint16_t nextStart = segmentsIn[i + 1]._loAddress;
uint16_t newSize = segment._segmentSize + segmentsIn[i + 1]._segmentSize;
if(currEnd == nextStart && newSize <= SEGMENT_SIZE)
{
segment._dataBytes.insert(segment._dataBytes.end(), segmentsIn[i + 1]._dataBytes.begin(), segmentsIn[i + 1]._dataBytes.end());
segment._segmentSize += segmentsIn[i + 1]._segmentSize;
}
else
{
segmentsOut.push_back(segment);
segment._dataBytes.clear();
}
}
else
{
segmentsOut.push_back(segment);
segment._dataBytes.clear();
}
}
Re: gtBASIC
got this now
Memory::printFreeRamList() : Expected 28467 : Found 28467
*******************************************************
* Assembling file : 'pirateadventure64k.gasm'
*******************************************************
Loader::printGt1Stats() : Page overflow : segment 86 : address 0xf031 : segmentSize 208
That adds to 257. 1 too many
Memory::printFreeRamList() : Expected 28467 : Found 28467
*******************************************************
* Assembling file : 'pirateadventure64k.gasm'
*******************************************************
Loader::printGt1Stats() : Page overflow : segment 86 : address 0xf031 : segmentSize 208
That adds to 257. 1 too many
Re: gtBASIC
Can you email me the code, it's pretty hard to debug this way.
Re: gtBASIC
Try replacing the same section of code with this:
Code: Select all
Gt1Segment segment = {false, hiAddr, segmentsIn[0]._loAddress, uint8_t(segmentsIn[0]._dataBytes.size()), segmentsIn[0]._dataBytes};
for(int i=0; i<int(segmentsIn.size()); i++)
{
if(segment._dataBytes.size() == 0)
{
segment._loAddress = segmentsIn[i]._loAddress;
segment._dataBytes = segmentsIn[i]._dataBytes;
segment._segmentSize = uint8_t(segmentsIn[i]._dataBytes.size());
}
if(i < int(segmentsIn.size()-1))
{
uint16_t page = MAKE_ADDR(hiAddr, 0x00);
uint16_t currEnd = segmentsIn[i]._loAddress + uint16_t(segmentsIn[i]._dataBytes.size());
uint16_t nextStart = segmentsIn[i + 1]._loAddress;
uint16_t newSize = segment._segmentSize + segmentsIn[i + 1]._segmentSize - 1;
//fprintf(stderr, "0x%04x 0x%04x 0x%04x 0x%04x %d 0x%02x 0x%02x\n", page, currEnd, nextStart, newSize, newSize, HI_BYTE(page + newSize), HI_BYTE(page));
if(currEnd == nextStart && HI_BYTE(page + newSize) == HI_BYTE(page))
{
segment._dataBytes.insert(segment._dataBytes.end(), segmentsIn[i + 1]._dataBytes.begin(), segmentsIn[i + 1]._dataBytes.end());
segment._segmentSize += segmentsIn[i + 1]._segmentSize;
}
else
{
segmentsOut.push_back(segment);
segment._dataBytes.clear();
}
}
else
{
segmentsOut.push_back(segment);
segment._dataBytes.clear();
}
}
Last edited by at67 on 03 Nov 2021, 22:04, edited 1 time in total.
Re: gtBASIC
same result
Loader::printGt1Stats() : Page overflow : segment 86 : address 0xf031 : segmentSize 208
C:\RetroComputors\Gigatron\Programming\Pirates>
Loader::printGt1Stats() : Page overflow : segment 86 : address 0xf031 : segmentSize 208
C:\RetroComputors\Gigatron\Programming\Pirates>
Re: gtBASIC
Your code compiles fine on my end with the above new changes to loader.cpp.
If you can't get past this error, then you can disable the merging of sub segments within pages by changing loader.cpp:217 from:
To:
I didn't have to do this though.
P.S. Disabling the merge of sub segments makes the build process slightly slower and the resultant .gt1 file slightly bigger, (so no big deal for now).
If you can't get past this error, then you can disable the merging of sub segments within pages by changing loader.cpp:217 from:
Code: Select all
#if 1
Code: Select all
#if 0
P.S. Disabling the merge of sub segments makes the build process slightly slower and the resultant .gt1 file slightly bigger, (so no big deal for now).
Re: gtBASIC
I am getting the same error after the change above. something weird here. I verified I am using the updated executable.
There is something I am doing wrong
Can you send me a current copy of loader.cpp ?
There is something I am doing wrong
Can you send me a current copy of loader.cpp ?
Re: gtBASIC
My loader is substantially different to yours, as the entire codebase has changed significantly over the last year; for you to be able to even compile it you would need all of the rest of the source and I am not yet ready to release it, (there's just too many potential bugs, unknowns and unfinished features that would probably make your life and mine miserable), sorry.
I've triple checked the loader code I posted in both ROMv5a and ROMvX0 and your code compiles fine and exactly the same for both ROM's, (in terms of functionality).
I'll do my best to release the full source code over the next few weeks, but I have so much on my plate I can't make any promises.
I've triple checked the loader code I posted in both ROMv5a and ROMvX0 and your code compiles fine and exactly the same for both ROM's, (in terms of functionality).
I'll do my best to release the full source code over the next few weeks, but I have so much on my plate I can't make any promises.
Re: gtBASIC
don't worry about it. i can continue to code without debugging anyway