[Coco] values other than 0 or 1 for byte 14 of decb dir entry

Robert Gault robert.gault at att.net
Mon Mar 26 16:14:18 EDT 2012


Arthur Flexser wrote:
> I seem to recall that the problem had to do with the weird way ROM
> segments move around in response to changing the MMU setting for them.
>   Which I think was a topic of discussion on the list a couple of years
> ago.
> I'll be interested if you can refresh my memory about what that CoCo
> Max 3 compatibility line inserted into the boot program does.
>
> Art
>

Right, the lines are
160 IFPEEK(&HFE80) THEN LOADM"FILE512" ELSE LOADM"FILE128"
165 IFPEEK(&HFE80) THEN POKE &H5DE9,&HA4:POKE&H5DA2,&H80
So logically the POKEs should change FILE### which I disassembled.
The effect of this line is to change some code that sets the MMU values and 
copies the DOS to a new location.

  STA $FFA6 controls $7C000-$7DFFF  regA content not known
  LDA #$3E
  STA $FFA3 controls $76000-$77FFF changed by POKE
  LDX #$C000
  LDY #$6000                       changed by POKE
A@ LDD ,Y++
  STD ,X++
  CMPX #$DD00
  BCS A@

The POKEs change this to STA $FFA4 and LDY #$8000.

Actually this does not make much sense. The code seems to read the DOS at 
"$C000-$DD00" and copy it to the same location but in an unknown MMU block. The 
change just moved the location used to access the DOS code.
The only point to this would be if the MMUs can't access the DOS (probably in 
ROM mode) with $FFA3 but can with $FFA4.

I'll see if the MESS debugger can trap the value sent to $FFA6.



More information about the Coco mailing list