[Coco] Basic09 6309 version

Bill Pierce ooogalapasooo at aol.com
Fri May 26 08:06:55 EDT 2017


James, just tried you build of VCC over one of my "regular" installations and right off the bat, the "becker.dll" does not load. It reports "Invalid Module".

Which branch did you build this from?

 

 

Bill Pierce
"Charlie stole the handle, and the train it won't stop going, no way to slow down!" - Ian Anderson - Jethro Tull

My Music from the Tandy/Radio Shack Color Computer 2 & 3
https://sites.google.com/site/dabarnstudio/
Co-Contributor, Co-Editor for CocoPedia
http://www.cocopedia.com/wiki/index.php/Main_Page

E-Mail: ooogalapasooo at aol.com

 

 

-----Original Message-----
From: James Ross <jrosslist at outlook.com>
To: CoCoList for Color Computer Enthusiasts <coco at maltedmedia.com>
Sent: Fri, May 26, 2017 5:24 am
Subject: Re: [Coco] Basic09 6309 version

I've been following this thread today (well, yesterday now I suppose) … I have not given up on making modifications and improvements to VCC … I still plan on getting around to “the list” on GitHub … just have not had time since the beginning of the month.  I’m hoping in the next couple or three weeks to find some time. Nonetheless – I added these two changes from Walter (thanks Walter … if they work anyway, that is, ha!  :)) – Walter, are you able to compile and test the code?  If not I’m providing it bellow … this is now on my fork of VCChttps://github.com/jross9/VCC   (contains all the current VCC 2.0.1b changes + what I have done + Walters code) I wasn’t going release executables until I got further along – but well, what the heck … this is unofficial, think of it as beta testing. This zip contains executables (VS6 release compile) which includes the changes I have done so far (the big one is the aspect ratio in Window mode works, which is nice – make sure the setting is set in config) there are others – you’d have to read my notes on my fork on GitHub http://jamesross.biz/VCC/VCC-JR_2017-05-26.zipDiff view of walters changeshttp://jamesross.biz/VCC/Untitled2.pngSo copy these file from the zip folder http://jamesross.biz/VCC/Untitled3.pngover a copy of and installed VCC like this http://jamesross.biz/VCC/Untitled4.pngIf anyone would like to try this and test Walters changes + I would appreciate feedback if they find any problems w/ it ...   James________________________________________From: Coco <coco-bounces at maltedmedia.com> on behalf of Walter Zambotti <zambotti at iinet.net.au>Sent: Friday, May 26, 2017 7:14 AMTo: 'CoCoList for Color Computer Enthusiasts'Subject: Re: [Coco] Basic09 6309 versionFurther my last. DIVQ div by zero uses 21 less and not 13 less (which is for DIVD)Anyway with that here are the two hopefully corrected instructions including correctedcycle times and div by zero trapping.                case DIVQ_E: //11BE Phase 5 6309 CHECK                        postword=MemRead16(IMMADDRESS(PC_REG));                        if(postword)    {                                temp32=Q_REG;                                W_REG=temp32/(postword);                                D_REG=temp32%(postword);                                cc[N] = NTEST16(W_REG);                                cc[Z] = ZTEST(W_REG);           cc[C] = W_REG&1;                                cc[V] =1;                      //NOT DONE                                PC_REG+=2;                           CycleCounter+=InsCycles[md[NATIVE6309]][M3726];                        }       else                        {                                CycleCounter+=InsCycles[md[NATIVE6309]][M3726]-21;                              DivByZero();                        }                        break;          case DIVQ_X: //11AE Phase 5 6309 CHECK                        postword=MemRead16(INDADDRESS(PC_REG++));                        if(postword)  {                                temp32=Q_REG;                                W_REG=temp32/(postword);                                D_REG=temp32%(postword);                                cc[N] = NTEST16(W_REG);                                cc[Z] = ZTEST(W_REG);           cc[C] = W_REG&1;                                cc[V] =1;                      //NOT DONE                                CycleCounter+=InsCycles[md[NATIVE6309]][M3635];                        {       else                        {                                CycleCounter+=InsCycles[md[NATIVE6309]][M3635]-21;                              DivByZero();                        }                        break;-----Original Message-----From: Coco [mailto:coco-bounces at maltedmedia.com] On Behalf Of Walter ZambottiSent: Friday, 26 May 2017 3:03 PMTo: 'CoCoList for Color Computer Enthusiasts' <coco at maltedmedia.com>Subject: Re: [Coco] Basic09 6309 versionI have had a look at hd6309.c and there are a number of 'concerns' relating to the 6309 emulation.If you look at the DIVD_M/E/D instructions for instance the:1. CycleCounter appears to be erroneously incremented twice in the E & D variants:2. The divide by zero cycle counter appears to be just plain wrong 25-13 should be 12 for instance.There is an implementation of DIVQ_E how ever it doesn't implement the correct cycle count for division by zero nor does it raise the div by zero interrupt.  I have added this to the X variant suggestion.But given that I have provided an X variant suggestion further below.Also the 6309 instruction set manual says this about the cycle counter for most of the DIV instructions:If a range overflow occurs, DIV? use 13 fewer cycles than what is shown in the table.Since determining an overflow still requires the full results to be produced there should no difference to the cycle counter.  I suggest the manual should have said if a div by zero occurs then ...It seems that incorrect cycle counters probably don't stop the emulator from working fully but may affect timing dependant code.                case DIVD_M: //118D 6309 NITRO                        *spostbyte=(signed char)MemRead8(PC_REG++);                        if (*spostbyte)                {                                *spostword=D_REG;                             stemp16= (signed short)D_REG / *spostbyte;                                A_REG = (signed short)D_REG % *spostbyte;                                B_REG=(unsigned char)stemp16;                                cc[Z] = ZTEST(B_REG);                                cc[N] = NTEST16(D_REG);           cc[C] = B_REG & 1;                                cc[V] =(stemp16 >127) | (stemp16 <-128);                                if ( (stemp16 > 255) | (stemp16 < -256) ) //Abort                                {                    D_REG=abs (*spostword);                                        cc[N] = NTEST16(D_REG);                                        cc[Z] = ZTEST(D_REG);   }                                CycleCounter+=25;                        }   else                        {                                CycleCounter+=17;                                DivbyZero();                  }                break;                case DIVD_E: //11BD 6309 02292008 Untested                        *spostbyte=(signed char)MemRead8(IMMADDRESS(PC_REG));                        if (*spostbyte)      {                                *spostword=D_REG;                             stemp16= (signed short)D_REG / *spostbyte;                                A_REG = (signed short)D_REG % *spostbyte;                                B_REG=(unsigned char)stemp16;                                cc[Z] = ZTEST(B_REG);                                cc[N] = NTEST16(D_REG);           cc[C] = B_REG & 1;                                cc[V] =(stemp16 >127) | (stemp16 <-128);                                if ( (stemp16 > 255) | (stemp16 < -256) ) //Abort                                {                    D_REG=abs (*spostword);                                        cc[N] = NTEST16(D_REG);                                        cc[Z] = ZTEST(D_REG);   }                                CycleCounter+=25; // So either this           }                        else                        {                        CycleCounter+=17; //and this                                DivbyZero();       }                        CycleCounter+=InsCycles[md[NATIVE6309]][M2827];//or this but not both                break;                case DIVD_D: //119D 6309 02292008                        *spostbyte=(signed char)MemRead8(DPADDRESS(PC_REG++));                        if (*spostbyte)     {                                *spostword=D_REG;                             stemp16= (signed short)D_REG / *spostbyte;                                A_REG = (signed short)D_REG % *spostbyte;                                B_REG=(unsigned char)stemp16;                                cc[Z] = ZTEST(B_REG);                                cc[N] = NTEST16(D_REG);           cc[C] = B_REG & 1;                                cc[V] =(stemp16 >127) | (stemp16 <-128);                                if ( (stemp16 > 255) | (stemp16 < -256) ) //Abort                                {                    D_REG=abs (*spostword);                                        cc[N] = NTEST16(D_REG);                                        cc[Z] = ZTEST(D_REG);   }                                CycleCounter+=27; // Increment here           }                        else                        {                        CycleCounter+=19; // and here 27 -13 should be 14                               DivbyZero();                        }                        CycleCounter+=InsCycles[md[NATIVE6309]][M2726]; // but NOT also here            break;                case DIVQ_E: //11BE Phase 5 6309 CHECK                  postword=MemRead16(IMMADDRESS(PC_REG));                        temp32=Q_REG;   W_REG=temp32/(postword);                        D_REG=temp32%(postword);       cc[N] = NTEST16(W_REG);                        cc[Z] = ZTEST(W_REG);           cc[C] = W_REG&1;                        cc[V] =1;                        //NOT DONE                        PC_REG+=2;                        CycleCounter+=InsCycles[md[NATIVE6309]][M3726];                break;Suggested DIVQ_X instruction (based on DIVQ_E)                case DIVQ_X: //11AE Phase 5 6309 CHECK                        postword=MemRead16(INDADDRESS(PC_REG++));                        if(postword)  {                                temp32=Q_REG;                                W_REG=temp32/(postword);                                D_REG=temp32%(postword);                                cc[N] = NTEST16(W_REG);                                cc[Z] = ZTEST(W_REG);           cc[C] = W_REG&1;                                cc[V] =1;                      //NOT DONE                                CycleCounter+=InsCycles[md[NATIVE6309]][M3635];                        {       else                        {                                CycleCounter+=InsCycles[md[NATIVE6309]][M3635]-13;                              DivByZero();                        }                        break;-----Original Message-----From: Coco [mailto:coco-bounces at maltedmedia.com] On Behalf Of David LaddSent: Friday, 26 May 2017 1:19 PMTo: CoCoList for Color Computer Enthusiasts <coco at maltedmedia.com>Subject: Re: [Coco] Basic09 6309 versionJames,Thank you for pointing that out.Actually I went through reviewing the hd6309.c file and found several 6309 OpCodes that aren't implemented yet.So we need to stay vigilant on making sure to test programs on real CoCo's with real 6309's first before blaming the code/programs.  As we are finding out that VCC has some CPU instructions related to the 6309 that aren't supported yet.Walter, good find and bringing this to the list.  I am personally surprised that we haven't had this happen more often.More stuff to add to the list of things to work on.+-----------------------------------------------------------------------+| David Ladd a.k.a. PacoOtaktay a.k.a. Drencor                          || YouTube: http://www.youtube.com/user/PacoOtaktay                      || YouTube Gaming Live: https://gaming.youtube.com/user/PacoOtaktay/live || Websites: http://dwladd.com     &     http://www.theterrorzone.com    || G+:  https://plus.google.com/113262444659438038657                    || G+:  https://plus.google.com/+DavidLaddPacoOtaktay                    ||             || Do you have your CoCo 3 yet?                                          |+-----------------------------------------------------------------------+On Thu, May 25, 2017 at 4:13 PM, James Jones <jejones3141 at gmail.com> wrote:> If https://github.com/VCCE/VCC is any indication, a number of the> DIVQ_* cases in hd6309.c sit unimplemented--or more accurately, it> looks like only DIVQ_E is implemented. The rest mostly emit a log> message and all count the number of cycles the instruction takes.>> On Thu, May 25, 2017 at 3:22 PM, Wayne Campbell <asa.rand at gmail.com>> wrote:>> > I was just covering the bases. In the julian day thread it was> > suggested> I> > try running the 6809 version in VCC and see what happens, so I did.> >> > On Thu, May 25, 2017 at 12:07 PM, Bill Pierce via Coco <> > coco at maltedmedia.com> > > wrote:> >> > > The 6809 version of basic09 would not have a "divq" instruction as> that's> > > exclusive to the 6309 processor, so it's only logical that if the> > > divq function of VCC is bugged, the 6809 software should run fine.> > > This only seems to be happening when that instruction is encountered.> > >> > >> > >> > >> > >> > > Bill Pierce> > > "Charlie stole the handle, and the train it won't stop going, no> > > way to slow down!" - Ian Anderson - Jethro Tull> > >> > > My Music from the Tandy/Radio Shack Color Computer 2 & 3> > > https://sites.google.com/site/dabarnstudio/> > > Co-Contributor, Co-Editor for CocoPedia> > > http://www.cocopedia.com/wiki/index.php/Main_Page> > >> > > E-Mail: ooogalapasooo at aol.com> > >> > >> > >> > >> > >> > > -----Original Message-----> > > From: Wayne Campbell <asa.rand at gmail.com>> > > To: CoCoList <coco at maltedmedia.com>> > > Sent: Thu, May 25, 2017 1:54 pm> > > Subject: Re: [Coco] Basic09 6309 version> > >> > > Oh, and I was still emulating the 6309 processor.On May 25, 2017> > > 10:53> > AM,> > > "Wayne Campbell" <asa.rand at gmail.com> wrote:> I put the 6809> > > version> of> > > B09 in the CMDS directory and ran a copy of the> JD procedure with> > > no> > > FLOAT() functions. It ran without errors and no> Hitting DIVQ_X> > > error> in> > > VCC.>>> On May 25, 2017 2:17 AM, "Bill Pierce via Coco" <> > > coco at maltedmedia.com>> wrote:>>> I did a search through the> > > nitros9 sources and only found 6 references to>> "divq". 2 were in> > > asm and> disasm> > > which were only references for the>> programs asm/disasm> > > functionality> > and> > > no actual running code, 2 were in 2>> of Boisy's test routines in> > > one> of> > > his folders (not used for anything), and>> the other 2 were in> > > basic09> > and> > > runb. So they are the only 2 nitros9>> modules that would rare> > > their> ugly> > > heads on this.>>>> I do remember some years ago when Joseph was> > developing> > > VCC that there>> was some mention of something being missing in> > > the> 6309> > > core. I've searched>> but couldn't find where I saw it (it was> > > loooong ago). I've even mentioned>> it in the issues on the VCC> > > repo issues> page.> > > We may have found what it was.>>>>>>>>>>>> Bill Pierce>> "Charlie> > > stole> > the> > > handle, and the train it won't stop going, no way to>> slow down!"> > > -> Ian> > > Anderson - Jethro Tull>>>> My Music from the Tandy/Radio Shack> > > Color Computer 2 & 3>>> > > https://sites.google.com/site/dabarnstudio/>>> > > Co-Contributor, Co-Editor for CocoPedia>>> http://www.cocopedia.com/wiki/> > > index.php/Main_Page>>>> E-Mail: ooogalapasooo at aol.com>>>>>>>>>>>>> > > -----Original Message----->> From: Walter Zambotti <> > zambotti at iinet.net.au>>>> > > To: 'CoCoList for Color Computer Enthusiasts'> > > <coco at maltedmedia.com>>>> > > Sent: Thu, May 25, 2017 3:31 am>> Subject: Re: [Coco] Basic09 6309> > > version>>>> >This could explain the Hitting DIVQ_X error that VCC> > > version>>>> >keeps> > > complaining>> about.This error could be isolated to either VCC or> > > BASIC09_6309.We can>> eliminate which one is the problem by> > > running the> > > BASIC09_6309 version on a>> real 6309 coco and not in VCC.  If the> > > same problem persists then the>> problem in in BASIC09_6309.  If> > > it does not persist then the problem is in>> VCC.I don't have a> > > 6309 in my CoCo so> I> > > can't volunteer to help.Any takers>> out there?Walter-----Original> > > Message-----From: Coco [mailto:>> coco-bounces at maltedmedia.com] On> > Behalf> > > Of Wayne CampbellSent: Thursday,>> 25 May 2017 12:11 PMTo:> > > CoCoList <> > > coco at maltedmedia.com>Subject: Re:>> [Coco] Basic09 6309> > > versionThis> > could> > > explain the Hitting DIVQ_X error that>> VCC keeps complaining> > > about.On> > May> > > 24, 2017 8:52 PM, "William Astle" <>> lost at l-w.ca> wrote:My guess> > > is> the> > > VCC isn't implementing DIVQ>> correctly, probably by not providing> > > the remainder unless regular integer>> division is also> > > failing.--Coco> > mailing> > > listCoco at maltedmedia.comhttps://>> pairlist5.pair.net/mailman/> > > listinfo/coco-- Coco mailing>> listCoco at maltedmedia.comhttps://> > > pairlist5.pair.net/mailman/listinfo/coco>>>> -->> Coco mailing> > > list>> Coco at maltedmedia.com>> https://pairlist5.pair.net/> mailman/listinfo/coco> > >>>--> > > Coco mailing listCoco at maltedmedia.comhttps://> pairlist5.pair.net/mailman/> > > listinfo/coco> > >> > > --> > > Coco mailing list> > > Coco at maltedmedia.com> > > https://pairlist5.pair.net/mailman/listinfo/coco> > >> >> >> >> > --> > Wayne> >> > The Structure of I-Code> > http://www.cocopedia.com/wiki/index.php/The_Structure_of_I-Code> >> > decode> > http://cococoding.com/wayne/> >> > --> > Coco mailing list> > Coco at maltedmedia.com> > https://pairlist5.pair.net/mailman/listinfo/coco> >>> --> Coco mailing list> Coco at maltedmedia.com> https://pairlist5.pair.net/mailman/listinfo/coco>--Coco mailing listCoco at maltedmedia.comhttps://pairlist5.pair.net/mailman/listinfo/coco--Coco mailing listCoco at maltedmedia.comhttps://pairlist5.pair.net/mailman/listinfo/coco--Coco mailing listCoco at maltedmedia.comhttps://pairlist5.pair.net/mailman/listinfo/coco-- Coco mailing listCoco at maltedmedia.comhttps://pairlist5.pair.net/mailman/listinfo/coco


More information about the Coco mailing list