[Coco] Coco3 startup ASM help needed.
Arthur Flexser
flexser at fiu.edu
Thu Mar 29 13:44:42 EDT 2018
A couple of thoughts:
1. Could it be that in going to ROM mode, you've switched out some in-RAM
patch overlaid on the ROM code that is inserted by the CoCo 3's patcher
routine, and the lack of that patch is what's causing the problem?
2 It seems like you're getting a warm start instead of a cold one.
Perhaps inserting a CLR $71 into your code at $E00 would fix things by
indicating to Basic that a software reset should produce a cold, not a warm
start.
Art
On Thu, Mar 29, 2018 at 9:12 AM, Pere Serrat <psergm at gmail.com> wrote:
> 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
>
>
> --
> Coco mailing list
> Coco at maltedmedia.com
> https://pairlist5.pair.net/mailman/listinfo/coco
>
More information about the Coco
mailing list