dave_m
Veteran Member
Some user notes on cbmlink
Some user notes on cbmlink
OK, with the windows version of cbmlink, I got it to communicate successfully with my PET using the pc64 cable between the PET User Port and the parallel port of the PC. The instructions were a bit incomplete but one can fill in the gaps easily enough. The author is Finnish so it is understandable that writing a ‘bullet proof’ technical instruction in English might be fairly difficult. But his code is great.
Here are my notes on using cbmlink on a PC running Windows 98 and a PET 8032. Perhaps this will be useful as a supplement to the author’s instructions. See link below for authors' instructions.
cbmlink release notes for parallel cables
There is a neat way provided to transfer the server software into the PET. One types-in a short loader in BASIC. When run, it waits patiently for a load command on the user port. On the PC, in a DOS window, one changes to the subdirectory where the cbmlink program (cmblink.exe) and the files to be transferred are located, and enters the command line:
cbmlink –c pc64 0x378 –l plain.prg
This is for the pc64 cable protocol, and the LPT1 port and the proper server program to be loaded for your computer/configuration from the cbmlink-cbmprg.zip file. The instructions say that you can use port numbers like 0,1,2 or 3 but this did not work for me. The instruction also had an example of 0x3bc for LPT1 but that may be a typo. Perhaps they are for Windows XP.
Every once in a while I can get an error after executing a command that says something like no such protocol as pc45 even though I entered pc64. No matter. Just repeat the command.
This first server program is fixed to run at memory location $7C00. It is started with a sys 31744. Then one can transfer the re-locatable version if wanted from the cbmlink-cbmbasic.zip file. I needed that version as I will be transferring machine language code that will reside in the $7000 block of RAM, so I transferred the re-locatable one next. It then says to perform a SAVE of the transferred file. But it will not save correctly in BASIC. I had to go to the Machine Language Monitor (sys 1024) and determine the size of the ML program and perform the save there:
.s ”name”, 01,0401,0930 to save the re-locatable server on cassette.
.s “name1”,01,7C00,7D9F to save the fixed address server on casstte.
Another issue with the re-locatable version was that after you load it but before you run it, you are to change the second line of the BASIC portion of the program to point to the desired starting address. But the instructions are somewhat vague about telling you to delete the default second line that is there. If you do not, when run, the program hits a 00H ‘break instruction’ and lands in the monitor program.
A few times when it was run, the server software would immediately hang the PET. But it always seems to work the next time after a hard reset or power cycle. Nothing’s perfect in life.
One other thing that is important to remember is that just before or after the server is installed, say at $7C00, one must reset the top of BASIC so that the server code will not be stepped on later on if other programs are to be run. This is done in BASIC 4 with:
POKE 53, 124 : POKE 52,0 : new : REM sets top of BASIC to $7C00
The last thing to remember is that the addresses used in cbmlink default to decimal. So to SAVE a ML program located at $7000 to $7FFF in the PET, one uses the command:
cbmlink –c pc64 0x378 –s,28672,32768 name.prg
Or you can explicitly reference hex:
cbmlink –c pc64 0x378 –s,0x7000,0x8000 name.prg
I transferred several 4K test files with test patterns to see if the data arrived correctly and it seems fine. Overall, it looks like a very good way to transfer files between the PET and a PC.
Some user notes on cbmlink
OK, with the windows version of cbmlink, I got it to communicate successfully with my PET using the pc64 cable between the PET User Port and the parallel port of the PC. The instructions were a bit incomplete but one can fill in the gaps easily enough. The author is Finnish so it is understandable that writing a ‘bullet proof’ technical instruction in English might be fairly difficult. But his code is great.
Here are my notes on using cbmlink on a PC running Windows 98 and a PET 8032. Perhaps this will be useful as a supplement to the author’s instructions. See link below for authors' instructions.
cbmlink release notes for parallel cables
There is a neat way provided to transfer the server software into the PET. One types-in a short loader in BASIC. When run, it waits patiently for a load command on the user port. On the PC, in a DOS window, one changes to the subdirectory where the cbmlink program (cmblink.exe) and the files to be transferred are located, and enters the command line:
cbmlink –c pc64 0x378 –l plain.prg
This is for the pc64 cable protocol, and the LPT1 port and the proper server program to be loaded for your computer/configuration from the cbmlink-cbmprg.zip file. The instructions say that you can use port numbers like 0,1,2 or 3 but this did not work for me. The instruction also had an example of 0x3bc for LPT1 but that may be a typo. Perhaps they are for Windows XP.
Every once in a while I can get an error after executing a command that says something like no such protocol as pc45 even though I entered pc64. No matter. Just repeat the command.
This first server program is fixed to run at memory location $7C00. It is started with a sys 31744. Then one can transfer the re-locatable version if wanted from the cbmlink-cbmbasic.zip file. I needed that version as I will be transferring machine language code that will reside in the $7000 block of RAM, so I transferred the re-locatable one next. It then says to perform a SAVE of the transferred file. But it will not save correctly in BASIC. I had to go to the Machine Language Monitor (sys 1024) and determine the size of the ML program and perform the save there:
.s ”name”, 01,0401,0930 to save the re-locatable server on cassette.
.s “name1”,01,7C00,7D9F to save the fixed address server on casstte.
Another issue with the re-locatable version was that after you load it but before you run it, you are to change the second line of the BASIC portion of the program to point to the desired starting address. But the instructions are somewhat vague about telling you to delete the default second line that is there. If you do not, when run, the program hits a 00H ‘break instruction’ and lands in the monitor program.
A few times when it was run, the server software would immediately hang the PET. But it always seems to work the next time after a hard reset or power cycle. Nothing’s perfect in life.
One other thing that is important to remember is that just before or after the server is installed, say at $7C00, one must reset the top of BASIC so that the server code will not be stepped on later on if other programs are to be run. This is done in BASIC 4 with:
POKE 53, 124 : POKE 52,0 : new : REM sets top of BASIC to $7C00
The last thing to remember is that the addresses used in cbmlink default to decimal. So to SAVE a ML program located at $7000 to $7FFF in the PET, one uses the command:
cbmlink –c pc64 0x378 –s,28672,32768 name.prg
Or you can explicitly reference hex:
cbmlink –c pc64 0x378 –s,0x7000,0x8000 name.prg
I transferred several 4K test files with test patterns to see if the data arrived correctly and it seems fine. Overall, it looks like a very good way to transfer files between the PET and a PC.
Last edited: