[net.micro.cbm] 1571 ROM bug fixes

prindle@nadc (09/12/86)

From: prindle@NADC

If you've been following this discussion for the past several months, it should
be obvious that the new (bugs fixed) ROM upgrade for the 1571 is in very few
if any 1571s you can now buy in a store; the ROM upgrade was just released
for production a few weeks ago.  Therefore, any 1571 purchased before that
definitely had the bugs, and I doubt the manufacturing/distribution cycle gets
newly made equipment into the stores in less than a month.  So far, Commodore
hasn't even let it's service facilities know about the upgrade.  I guess we
are lucky to know about it via this list.  As I have said before, to use the
second side of a (non CP/M) 1571 diskette for anything other than direct mode
LOAD or SAVE is to invite eventual disaster!  Commodore, we need those ROMs -
please let us know how to get them.
Sincerely,
Frank Prindle
Prindle@NADC.arpa

mcewan@uiucdcs.CS.UIUC.EDU (09/17/86)

> Hi, I am using the C-Power compiler for my Commodore 64 and I need some help.
> I am interested in sending a string to my disk drive without opening a file.
> ie I am trying to create a program which changes disk drive numbers. Easy as
> pie with basic but I cant quite figure it out for C-Power.

It is? The only way I know to do this from basic is by opening the disk command
channel. The procedure is the same in C-Power. E.g., to change device 8 to
device 9:
	open(15,8,15,"");
	fprintf(15,"M-W%c%c%c%c%c",119,0,2,9+32,9+64);

> Also I am interested in utilyzing one of the kernal routines from C. I know 
> that a SYS utility exists but the sys that I am used to uses a lot of parameters
> eg sys XXXXX,"filename":poke XXX,YY:poke XXX,YY:sys XXXXX
> (sorry I dont have the addresses here in front of me) The actual routine
> will save a block of memory to the specified filename if you specify the begin
> and end locations (hence the pokes).

Poking in C is trivial. "poke x,y" can be translated as "*(char *)x = y". You
can #define this as a macro ("#define poke(x,y) *(char *)(x) = y"). If you
prefer, you can declare "char *mem = (char *)0;" and use "mem[x] = y".

		Scott McEwan
		{ihnp4,pur-ee}!uiucdcs!mcewan

"Stop by the castle later. I'll bash your teeth in."
"It's a date."