From: MagerValp (MagerValp_at_cling.gu.se)
Date: 2005-11-08 10:33:41
>>>>> "s" == silverdr  <silverdr@inet.com.pl> writes:
s> Do you mean you were able to split the GCR nybbles in RT? What do
s> you mean by "partially" though? Could you elaborate a bit on the
s> method and results, please?
No, there aren't enough cycles to decode to nybbles in realtime, thus
only partially decoded. I don't have my notes here, but it was
something like this:
  read 1st gcr byte		; 5 + 3 bits
  store in buf[0]		; 00000xxx
  store in buf[1]		; xxxxx111
  read 2nd gcr byte		; 2 + 5 + 1 bits
  lsr, lsb to carry
  store in buf[2]		; x1122222
  read 3rd gcr byte		; 4 + 4 bits
  store to buf[4]		; xxxx4444
  ror, msb from carry
  store to buf[3]		; 33333xxx
  read 4th gcr byte		; 1 + 5 + 2 bits
  asl, msb to carry
  rol buf[4]			; xxx44444
  store to buf[5]		; 5555566x
  read 5th gcr byte		; 3 + 5 bits
  store to buf[7]		; 66677777
  add 8 to bufptr, loop
so after 5 gcr bytes have been read, the nybble buffer contains:
 buf	data		steps to decode
  0:	00000xxx	-> lsr lsr lsr
  1:	xxxxx111	-> asl asl, merge with buf[2]
  2:	x1122222	-> and #$1f
  3:	33333xxx	-> lsr lsr lsr
  4:	xxx44444	-> and #$1f
  5:	5555566x	-> lsr lsr lsr
  6:	xxxxxxxx	-> merge from buf[5] and buf[7]
  7:	66677777	-> and #$1f
3 nybbles just require ANDing, 3 just shifting, and only 2 nybbles
require several operators. I implemented the full decode as a 2nd pass
that merges the nybbles into bytes, but for the next version I'll see
if I can merge the decoding with the transfer loop.
HTH,
-- 
    ___          .     .  .         .       . +  .         .      o   
  _|___|_   +   .  +     .     +         .  Per Olofsson, arkadspelare
    o-o    .      .     .   o         +          MagerValp@cling.gu.se
     -       +            +    .     http://www.cling.gu.se/~cl3polof/
       Message was sent through the cbm-hackers mailing list
Archive generated by hypermail pre-2.1.8.