[Coco] Re: Disk Basic and 512 byte block floppies.

Gene Heskett gene.heskett at verizon.net
Sun Jan 18 23:09:40 EST 2004


On Sunday 18 January 2004 20:59, Theodore (Alex) Evans wrote:
>On Jan 18, 2004, at 2:58 PM, John E. Malmberg wrote:
>> Robert Gault wrote:
>>> tim lindner wrote:
>>>> John E. Malmberg <wb8tyw at qsl.net> wrote:
>>>>> I formatted a 720K 3.5 inch floppy with 512 byte sectors
>>>>
>>>> Interesting experiement.
>>>>
>>>> The size of each sector is written to the disk. Disk BASIC
>>>> expects all
>>>> the sectors to be 256 bytes, it doesn't check. It create 256
>>>> byte blocks
>>>> of RAM to read to and from these sectors.
>>>>
>>>> If the sector is larger, then the RAM buffer will overflow. On a
>>>> read sector command you will overwrite whatever is past the
>>>> sector buffer in
>>>> RAM. The could be dangerous.
>>>>
>>>> On a write sector command you will write whatever data is after
>>>> the buffer to the larger sector.
>>>
>>> With Disk Basic, the buffer overflow will go into a second disk
>>> I/O buffer; buffer0 $600-$6FF, buffer1 $700-$7FF. You would
>>> corrupt data stored in the second buffer but in most cases you
>>> won't see any ill effects.
>>
>> According to the Disk-Basic-Unraveled series, the buffer at
>> $700-$7ff is used for the verify function, and for the DSKINI
>> function.
>>
>> So with verify off, there should be no danger of data corruption
>> by using the DSKI$ and DSKO$ functions.
>
>I wouldn't use DSKI$ and DSKO$, I would use a call to DSKCON.
>Something like:
>
>10 DC=PEEK(&HC004)*256+PEEK(&HC005) 'DSKCON
>20 DO=PEEK(&HC006)*256+PEEK(&HC007) 'DCOPC
>30 CLEAR &H6800
>40 INPUT "SOURCE DISK",SD
>43 INPUT "SECTOR SIZE",SS
>47 IF SS=256 THEN SS=1 ELSE IF SS=512 THEN SS=2 ELSE GOTO 43
>50 INPUT "DESTINATION DISK",DD
>53 INPUT "SECTOR SIZE",DS
>57 IF SS=256 THEN DS=1 ELSE IF DS=512 THEN DS=2 ELSE GOTO 45

Shouldn't the above be THEN DS=2 ELSE GOTO 53?  There is no line 45

>60 POKE DO+5,0 'LSB OF BUFFER POINTER
>60 FOR T=0 TO 34
>70 POKE DO,2 'OPERATION CODE READ
>80 POKE DO+1,SD 'DRIVE NUMBER SD
>90 POKE DO+2,T 'TRACK NUMBER T
>90 FOR S=1 TO 18 STEP SS
>100 POKE DO+3,S 'SECTOR NUMBER S
>110 POKE DO+4,S+103 'MSB OF BUFFER POINTER
>120 EXEC DC 'CALL DSKCON
>130 NEXT S
>140 POKE DO,3 'OPERATION CODE WRITE
>150 POKE DO+1,DD 'DRIVE NUMBER DD
>160 FOR S=1 TO 18 STEP DS
>170 POKE DO+3,S 'SECTOR S
>180 POKE DO+4,S+103 'MSB OF SECTOR BUFFER
>190 EXEC DC 'CALL DSKCON
>200 NEXT S
>210 NEXT T
>220 END

-- 
Cheers, Gene
"There are four boxes to be used in defense of liberty: soap,
ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author)
99.22% setiathome rank, not too shabby for a WV hillbilly
Yahoo.com attornies please note, additions to this message
by Gene Heskett are:
Copyright 2004 by Maurice Eugene Heskett, all rights reserved.




More information about the Coco mailing list