home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #18 / NN_1992_18.iso / spool / comp / sys / apple2 / 19055 < prev    next >
Encoding:
Internet Message Format  |  1992-08-14  |  2.1 KB

  1. Path: sparky!uunet!munnari.oz.au!deakin.OZ.AU!cs.uow.edu.au!david
  2. From: david@cs.uow.edu.au (David E A Wilson)
  3. Newsgroups: comp.sys.apple2
  4. Subject: Re: How many files in a ProDOS directory ?
  5. Message-ID: <1992Aug15.025209.14064@cs.uow.edu.au>
  6. Date: 15 Aug 92 02:52:09 GMT
  7. References: <1992Aug8.140049.17236@unlv.edu> <56394@mentor.cc.purdue.edu> <1992Aug10.060546.2276@blkbox> <71207@apple.Apple.COM>
  8. Organization: Dept of Computer Science, Wollongong University, Australia
  9. Lines: 41
  10.  
  11. dlyons@Apple.COM (David A Lyons) writes:
  12. >Yes, you're correct.  You can never do anything useful with block $FFFF on
  13. >a ProDOS disk, because there's no way in the 16-bit value in block 2 to say
  14. >that there are $10000 blocks available.
  15.  
  16. This could be a problem for ProDOS 8 v2.0.1. If I have a smartport device
  17. exactly 65536 blocks in size and it is drive 3 on the smartport chain (and
  18. I am assuming not in slot 5 [otherwise it would have to be drive 5 or more])
  19. then ProDOS 8 v2.0.1 will use the Smartport status routine which can return
  20. $010000 as the number of blocks. ProDOS will ignore the top byte and say that
  21. the drive is a 0 block device.
  22.  
  23. If this same device was instead 48 MB, ProDOS 8 v2.0.1 would say it was 16 MB.
  24.  
  25. The code in question is:
  26.  
  27. fd47    jsr     $0000
  28. fd4a    dcb     $00
  29. fd4b    dcw     $fd8d
  30. fd4d    bcs     $fd6e
  31. fd4f    ldx     $fd4a        ; get command just performed
  32. fd52    bne     $fd6e        ; not status so done
  33. fd54    ldx     $d6ed        ; get low byte of volume size
  34. fd57    ldy     $d6ee        ; get middle byte of volume size
  35. fd5a    lda     $d6ec        ; get status
  36. fd5d    bit     #$10        ; online?
  37. fd5f    bne     $fd65        ; yes - check write prot
  38. fd61    lda     #$2f        ; OFFLINE
  39. fd63    bra     $fd6d
  40. fd65    and     #$44        ; get device & media write protect
  41. fd67    eor     #$40
  42. fd69    beq     $fd6e
  43. fd6b    lda     #$2b        ; WRITE PROTECTED
  44. fd6d    sec
  45. fd6e    rts
  46.  
  47. The top byte of the volume size ($d6ef) is never checked. In my opinion,
  48. if the top byte is non zero the status call should return $ffff as the size.
  49. -- 
  50. David Wilson                (042) 21 3802 voice, (042) 21 3262 fax
  51. Dept Comp Sci, Uni of Wollongong    david@cs.uow.edu.au
  52.