Re: LOAD command (Was: Disk drive questions)

From: Marko Mäkelä (marko.makela_at_hut.fi)
Date: 2002-11-18 13:08:07

On Mon, Nov 18, 2002 at 12:01:33PM +0100, Nicolas Welte wrote:
> BTW, there are several questions I have about cbmlink, and I fear the 
> answer is no to all, I had a very quick look at the program sources:

I just translated the sources from DASM to xa format and found some possible
places for improvement.  For now, I ensured that the output files were
identical with those generated with DASM.

> - on the PET, the server sits at the end of the BASIC memory. After the 
> server is started, is the BASIC end adjusted to protect the server?

No.  The same bug is in the plus/4 version and in the non-cartridge VIC-20
version.

> - would it be possible to run the server from ROM?

It shouldn't be that hard.  Maybe the self-modifying parts could be copied to
the cassette buffer.  Also, I noticed that the C2N232 routines can be rolled
to a loop quite efficiently, which makes it easier to find space for the
routines.  One problem, though, is how the server is enabled and disabled.
Maybe it could be enabled at RESET by default, and there could be SYS
commands for explicitly enabling or disabling it.  The old IRQ vector need
not be remembered, as it's likely to be in the same ROM chip.

> I don't see much of a problem for the latter case, if you don't want to 
> make it all automatically.

It can't be made automatically on the PET side, unless I make the program
longer than 192+2 bytes.  If the IBSOUT vector points to cassette buffer #1
while the header is located in cassette buffer #2, the loader won't be
started.  But I could patch the header on the Unix/Amiga/Win32 side: I already
set the loading address, the JMP address (default $ffd2 for loading BASIC
programs) and the length of the data.  There aren't absolute jumps within
the code: by arranging the code appropriately, I can reach all of the 171
payload bytes with relative jumps.  However, there are four INC instructions
that modify the code and data in the tape header.  But they are at fixed
offsets.

	Marko

       Message was sent through the cbm-hackers mailing list

Archive generated by hypermail 2.1.4.