[Coco] Coco3 startup ASM help needed.

Pere Serrat psergm at gmail.com
Thu Mar 29 09:12:48 EDT 2018


Hello David,
thanks for that fast answer.
Maybe I should better explain what I am doing ...
The CoCo-Flash bank zero contains a machine detect code that
switches to the appropriate DOS bank for the detected computer:
- HDB-DOS for CoCo1-2
- HDB-DOS for CoCo3
- DosPlus5.0 Extended for Tano/Dragon
When Basic has ended initialization, it calls the DOS, this has been
intercepted so that instead of returning control to the Basic Interpreter,
it loads a few code lines to $e00 and then jumps there.
This small part simply switches to the bank where we have put the
FlashProgramManager (one for each machine) and starts it

On Dragon and CoCo1-2 this works flawlessly and starts the main menu.
But in the CoCo3, strangely, the code at $e00 is executed but the JMP $c000
fails and the screen shows the std Basic OK
If, at this point, I enter EXEC&HE00, the program works without issues!
So there is something in the CoCo3 configuration that prevents the ROM
from being called at that point or ...
The code at $e00 is this:
------------------------------------------------------------------------------
CopyCoC3
            orcc    #$50                            ; disable interrupts
            clr    $ffd8                            ; ensure normal speed
            clr    $ffd6                            ; ensure normal speed
            clr    $ffde                            ; ensure ROM access
            clr    FCNTRL                        ; do not autostart selected 
FLASH bank
            ldd    #FMBNK                        ; get first FLASH block 
number to be used for DFEM for this computer
            sta    HIGHADRS                        ; Set High byte
            stb    LOWADRS                        ; set Low byte
            mul                                    ; waste 11 cycles
            jmp    $c000                            ; start selected Bank 
*** jumps anyway to the Interpreter!
                                                    ; 
*** but with bank already switched!!
------------------------------------------------------------------------------
I know it has been executed because a PEEK(&HFF65) returns value $0a (10d)
that's the bank where CoCo3 Program is

Any hint/idea to avoid this behaviour will be greatly appreciated

Thanks in advance
pere


-----Mensaje original----- 
Message: 4
Date: Wed, 28 Mar 2018 23:47:35 -0500
From: David Ladd <davidwladd at gmail.com>
To: CoCoList for Color Computer Enthusiasts <coco at maltedmedia.com>
Subject: Re: [Coco] Coco3 startup ASM help needed.
Message-ID:
<CAHW2jkD6xmwkNhDuC5kLf2RZ288Str=Kas1792SOk1t3MOKNSA at mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"

Jim & Pere,

I ran into a issue myself when I was writing a routine that was to startup
like a Disk Basic ROM.  On the CoCo 3 it wouldn't startup like it would on
the CoCo 1 or CoCo 2.  I found a example of what I needed to do in:
https://sourceforge.net/p/toolshed/code/ci/default/tree/dwdos/dw3dos.asm

The section with:

         fcc   "DK"
         lbra  Entry
         fill  $FF,9*256 spaced out to prevent CoCo 3 BASIC ROM patches


Once I saw that section and saw the comment then I knew what I had to do in
my code.

Hopefully that helps.


---
Este correo electrónico ha sido comprobado en busca de virus por AVG.
http://www.avg.com



More information about the Coco mailing list