[Coco] Pyramid-2000 and Re: Cassette I/O Error Question

Bob Devries devries.bob at gmail.com
Mon Feb 18 21:15:57 EST 2008

Correction to the END ADDRESS.
It should read: PRINT PEEK(126)*256+PEEK(127)-1

The location in question is actually:
CBUFAD Temporary Variable cassette load buffer pointer.
It always points to the *next* location at which to save incoming data from 
the cassette buffer. At EOF, it points one byte past the end of the file.

Regards, Bob Devries, Dalby, Queensland, Australia

Isaiah 50:4 The sovereign Lord has given me
the capacity to be his spokesman,
so that I know how to help the weary.

website: http://www.home.gil.com.au/~bdevasl
my blog: http://bdevries.invigorated.org/

----- Original Message ----- 
From: "Robert Gault" <robert.gault at worldnet.att.net>
To: "CoCoList for Color Computer Enthusiasts" <coco at maltedmedia.com>
Sent: Tuesday, February 19, 2008 11:43 AM
Subject: [Coco] Pyramid-2000 and Re: Cassette I/O Error Question

> 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
> 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.
> --
> Coco mailing list
> Coco at maltedmedia.com
> http://five.pairlist.net/mailman/listinfo/coco 

More information about the Coco mailing list