Subtle problems with 6809L2 v3.2.8

Developers
2008-10-24
2013-05-16
  • Robert Gault
    Robert Gault
    2008-10-24

    I am seeing very subtle problems with 6809 Level2 v3.2.8 that are causing a system crash. I can't find what is going on so would like to see this confirmed by someone else before spending any more time.

    For example, I can easily start many sty=2 windows with 24 rows but the system crashes when I try to create one with 25 rows. This works perfectly with the 6309 version.

    I have a driver and descriptor set that reads the Basic virtual drives on a .vhd image. No 6309 code is used. Attempts to access these drives under 6809 Level2 v3.2.8 causes a system crash but works perfectly with the 6309 version.

    Attempts with a MESS trace show a return from an interrupt RTI to non-existent code either at or shortly after the system crash.

    Would someone test windows creation and report if they also have problems?

     
    • Robert Gault
      Robert Gault
      2008-10-25

      It is not just 6809 Level2 v3.2.8. The problem with 25 row windows goes back at least to v3.2.6.

       
      • Gene Heskett
        Gene Heskett
        2008-10-25

        Robert, I don't recall ever having a 25 line window work,  and the only screen I ever had that ran that way was on my wp-rs, back when its drivers were merged to be part of the then current co80 module.  This was a variation of the Dennis Skala version of 3 modules, one of which I recall was wecho, which I merged into the driver I was using since the merge saved a system page of ram & was never widely published or made a part of nitros9 at the time.  But that driver, working through a customized co80 init routine, would not be related to this at all, and its working is useless trivia because it doesn't involve the GIME chip.  Maybe my GIME can't do 25 lines at all?

        Sorry I can't offer more help,

        --
        Cheers, Gene

         
        • Robert Gault
          Robert Gault
          2008-10-25

          Gene,
          The way to test this is boot either the 6809L2 or 6309L2 NitrOS-9 and run the following. Forgetting abut whether this works on a real Coco (it does on my system 6809 or 6309) but just use the emulator of your choice.

          xmode /w1 sty=2 pag=19 row=19 col=50 bgc=0 bdc=7
          shell i=/w1&

          You don't need to change any colors. What is critical is the window size/type and the above will set up an 80x25 text window.

          The process will start and you should be able to continue using /term in the normal manner. Switch to the new window and try to enter anything. The system will crash with the 6809 version but be normal with the 6309 version.

           
    • Robert Gault
      Robert Gault
      2008-10-26

      I have pinned this down but don't as yet know the cause.
      1) It is not restricted to the 6809L2 but happens in the 6309L2 as well.
      2) The crash depends on the values in /term. If /term is has 25 rows, then there won't be a crash if new windows with 25 rows are opened. If /term is a normal 24 row window, then there will be a crash if a 25 row window is opened.
      3) This effect has been confirmed on a system where the only difference is /term because the CRCs of the os9boot modules and CMDS commands were compared. Only difference was /term where pag and row were changed.

      My guess is that there is a bug in the scf system where memory is reserved based on /term and some maximum value is set. New windows using more than this amount of memory crash the system. Perhaps 18 rows is used incorrectly as a default, even though the GIME can do more. When /term requires 19 rows, the memory default is overwritten and the larger value used.

      I'd love to get some comments on this and tests by other developers. Just use xmode to change /term and cobbler the system.