New release of EightyOne available

Emulator and emulator development specific topics
Fruitcake
Posts: 147
Joined: Wed Sep 01, 2010 10:53 pm
Contact:

Re: New release of EightyOne available

Post by Fruitcake » Mon Feb 18, 2019 11:47 pm

Crayon21 wrote:
Mon Feb 18, 2019 2:40 am
how would it be able to be fixed? C? Python?
The emulator code is written in a mix of C and C++ using the Borland Builder 5 development environment, which runs best under Windows XP (although I did get it working under Windows 7). The source is available on SourceForge alongside the executable distribution. If someone fancies having a go at getting the QL emulation working and succeeds then I'm happy to help merge the changes into the master source code. If, as I suspect, the QL emulation has never worked then this might be down to a few bugs in the CPU or platform emulation or might be because whole blocks of functionality are missing. I've never investigated the QL code so don't have a feel for which of these scenarios it is.

dessony
Posts: 228
Joined: Tue Oct 29, 2013 2:26 pm
Location: Indiana, USA

Re: New release of EightyOne available

Post by dessony » Sat Mar 02, 2019 2:16 am

Does the EightyOne have its own assembler section or program?

Cheers,
DesSony

Slor
Posts: 2
Joined: Mon Jun 10, 2019 8:06 pm

Re: New release of EightyOne available

Post by Slor » Mon Jun 10, 2019 8:23 pm

I grabbed the updated EightyOne after having used 1.0a for a little while, and I think I have a bug to report. Having recently acquired a TS1500, that's been my primary emulation target for development, and I found that none of the releases after 1.0a seem to be able to load tape files. After some code digging, I _think_ I know why. In InitPatches, we have this code:

Code: Select all

if (machineType == MACHINEZX80)
{
        patches[0x01ba3e] = ZX80SaveDelayStartSaving;
        patches[0x02223e] = ZX80GetByteStartLoading;
        patches[0x01cb11] = ZX80OutByteSaveByte;
        patches[0x0203c3] = ZX80ZX81LambdaStopTape;
}
else if (machineType == MACHINEZX81)
{
        patches[0x02ffcd] = ZX81SaveDelayStartSaving;
        patches[0x03561f] = ZX81LambdaGetByteStartLoading;
        patches[0x031e5e] = ZX81LambdaOutByteSaveByte;
        patches[0x020721] = ZX80ZX81LambdaStopTape;
}
else if (machineType == MACHINELAMBDA)
{
        patches[0x0d0d16] = LambdaSaveDelayStartSaving;
        patches[0x19b307] = ZX81LambdaGetByteStartLoading;
        patches[0x17Ed37] = ZX81LambdaOutByteSaveByte;
        patches[0x0203c9] = ZX80ZX81LambdaStopTape;
}
There are no patches being set for MACHINETS1500. TS1000 works, but TS1000 becomes MACHINEZX81, and I can run fine as a ZX81 as but with ts1500.rom set as its rom, which leads me to believe that what's missing are the patches above being set when TS1500 is the selected machine type. Then again, I'm very new to the EightyOne codebase and know little of the tape management, so I could be way off. :)

Slor
Posts: 2
Joined: Mon Jun 10, 2019 8:06 pm

Re: New release of EightyOne available

Post by Slor » Tue Jun 11, 2019 7:10 am

I managed to get the build environment set up on a machine here (fantastic build instructions, BTW), and I tested a fix for the issue I noted. While I'm in it, I'd like to try to get AutoLoad working when in NTSC mode. How do you guys like to receive patches for potential merging? I didn't see a source code collaboration repo noted anywhere (though I may have missed it).

Thanks!

Fruitcake
Posts: 147
Joined: Wed Sep 01, 2010 10:53 pm
Contact:

Re: New release of EightyOne available

Post by Fruitcake » Thu Jun 13, 2019 1:12 am

Thanks for reporting the bug. I've forwarded details on to you about how to submit fixes.

Post Reply