[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