• CommodoreServer.com Official Blog

  • by CommodoreServer.com

Articles and information on Internet-enabling your Commodore 64 Computer.

Jul
7

V-1541 Limitations

The V-1541 program is a perfect choice when you want to view your disks or download files, but it does have a few limitations. This article will describe those limitations and help you work around them.

What is V-1541 designed to do?

First, before we talk about what V-1541 cannot do, let's discuss briefly what it was designed to do. V-1541 is a simple program that replaces LOAD and SAVE.  It will still process these commands on standard disk device numbers in the same way.  The only difference is that if you signal to load via device # 2 (the RS-232 port), the LOAD or SAVE will operate on the Internet modem that you have plugged-into your user port.

RS-232 is device #2 by default, but the KERNAL does not allow LOAD and SAVE to work with it in the same way as it does for disks on devices 8-11.  It was then necessary to write a special program to intercept the LOAD and SAVE operations and convert the request to commands known to CommodoreServer.com (the commands are part of the CommodoreServer Internet Protocol, or CSIP - you can find details on CSIP in another blog entry).

Since the KERNAL does not natively support LOAD"FILE",2, V-1541 was born.  Like any memory-resident loader, there are some limitations on how it may operate.

Limitations of V-1541

Probably the biggest hurdle is getting V-1541 to load a program that also wishes to load additional data off of the "disk".  It's not that it couldn't load additional files.  The problem is that there are so many ways a program tries to load the additional files or data.

Some programs use the "current device #" - the device that was previously used by the operating system.  Other programs hard-code the device number - usually device 8 - to LOAD another file.  Still others use the OPEN command to open a data file and read the data one byte at a time.

Trying to cover all scenarios is a little tricky.  Some programs might offer the ability for the user to select the device to load a file from.  In this case, let's say that you loaded the file from CommodoreServer.com, using LOAD "FILE",2.  The program loads just fine and then gives the user the ability to load a particular data file.  Let's say that the user selected to load a file from disk and the program is hard-coded to use device #8 (which is very common).  Well, if V-1541 were to assume that all LOAD operations go through device #2, the user's request would fail.

There are many other scenarios where I could describe how LOAD will fail - there is no easy way to handle all of the scenarios.

Here are some other known issues with V-1541.  As items get fixed or updated, this list will be updated and hopefully items will be removed.

  • Only PRG/SEQ files are supported (REL files not included)
  • Does not support GEOS files - GEOS files use special conventions not supported by V-1541
  • Does not support error tracks
  • Cannot "flip a disk over"
  • A program that runs cannot subsequently load additional files (described above)
  • Cannot be used with JiffyDOS enabled
  • Since you send CSIP commands through a LOAD command (such as LOAD ">LOGIN A-REALLY-LONG-EMAIL-ADDRESS@A-REALLY-LONG-INTERNET-SERVICE-PROVIDER-DOMAIN-NAME.COM,1234"), you are limited to the 80 characters that the Commodore Operating System gives you - the whole command must fit within the two lines.
  • While you can load a machine language program, it is difficult to then save that file back to your own floppy disk because BASIC's SAVE command uses the BASIC pointers.  You would have to adjust the pointers to save the file.  The same goes for SAVEing an ML program to CommodoreServer.com because V-1541 uses the default BASIC pointers to determine the start and end address of the program.
  • VERIFY is not supported - only LOAD and SAVE
  • You cannot use commands for formatting disks, validating or any other type of command that requires an OPEN statement (like OPEN 15,2,15,"n0:...") - it will not work because only LOAD and SAVE are programmed to translate to actual CSIP commands (See the CommodoreServer Internet Protocol for more information). LOAD provides convenient access to the actual commands in the protocol.  OPEN will still open a file, according to the Commodore syntax, but it does not access the Internet using the same commands that are sent over the serial bus.  There may be other programs that interpret OPEN and translate them to commands in the protocol.  Search CommodoreServer's Public Disks for more information.
  • Once you start loading a file, you cannot stop the modem from delivering it to your Commodore.  This is because it has a built-in buffer and data is sent almost instantaneously to the modem. The modem then sends data only as fast as the Commodore can accept it, depending on the baud rate. This quirk will cause problems if data is still in the modem's buffer and you try to load a file or other command because the modem is still delivering data to the Commodore's receive buffer.  The best solution is to terminate the power by turning off the computer or resetting the modem.  This will force the modem to stop attempting to send data to the Commodore computer.
  • Fixed Only the LOAD "*",2 wildcard is supported.  LOAD "A*" will not load the first 'A' filename it encounters.  Also, the '?' wildcard is not supported at this time.
  • Fixed V-1541 does not work in VICE because of the way V-1541 clashes with the way Vice handles the RS-232 port.  A version of V-1541 will be released for VICE in the future.

We hope to pick off some of these limitations in the future and make V-1541 work as if you were using the KERNAL directly.

Leave a Comment

You must be signed-in to post comments.

Responses

iMatt73 10/17/2011

This is a great site, you had a very good idea!!!!!