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




More information about the Coco mailing list