[Coco] Pyramid-2000 and Re: Cassette I/O Error Question
Robert Gault
robert.gault at worldnet.att.net
Mon Feb 18 20:43:20 EST 2008
George Ramsower wrote:
> I'm reminded of a question I had years ago about loading and saving
> machine language programs... At one time, I knew the peeks to find the
> start/end/execution addresses. Now I don't.
> How about the "auto execute programs"? How woud you copy those?
>
> If you cloadm a program... errors or not, how do you csavem that same
> program to make a backup copy? Better yet, how would you save it to disk?
>
> I think this is a critical issue at this point in time.
>
> George
>
> ps: I would love to play some of those old text adventure games again.
> My tapes have all been wasted due to time.
>
>
Start address: PRINT PEEK(487)*256+PEEK(488)
End address: PRINT PEEK(126)*256+PEEK(127)
EXEC address: PRINT PEEK(157)*256+PEEK(158)
So, CLOADM the program, find the above addresses, and see where the
program loads. If the program does not clobber the Disk system from
$600-$DFF, then you can just do the CLOADM with the disk controller
working and then SAVEM"Name",start,end,exec. However, the game may still
not run under a disk system as it may expect Extended Basic interrupt
vectors not Disk Basic vectors.
The process gets more involved if the game clobbers the disk system in
low RAM. Then you will need to relocate the game during the CLOADM
process and create an ml program to shift it into the required location
after a disk load. Let's take the specific game Pyramid-2000 as an example.
Pyramid-2000 loads at $600 and trashes the disk system. It also needs
the interrupt vectors altered. So here is how I have moved the game to a
disk system.
Boot into a Disk system, setup the tape, and enter the following.
10 WIDTH32
20 PCLEAR8
30 CLOADM"",&H800
40 SAVEM"PYRAMID",&HE00,&H4721,0
The above will free low RAM for the game, load it with an offset, and
save it to disk. You could also PCLEAR0 and load the game above Basic if
there is room.
Now to get the game to run you need the following ml program, RELOC.BIN.
org $7d00
start ldx #$e00
ldy #$600
a@ ldd ,x++
std ,y++
cmpx #$7421
blo a@
ldx #$894c
stx $10d
ldx #$a0f6
stx $110
jmp $600
end start
You LOADM"PYRAMID":LOADM"RELOC":EXEC
If the tape game is an auto-start type, an offset CLOADM will prevent
the auto-start from working. However, there could be memory corruption
depending on where the auto-start routine ends up. It's a crap shoot
where success will be trial and much error.
More information about the Coco
mailing list