{Dummy disk driver}

%externalroutinespec pdate

%routine bulk move (%integer bytes,from,to)
!Assume bytes is multiple of 4 and not more than 256k
  bytes = bytes>>1-1       {was bytes>>2-1}
  *move.l from,a0
  *move.l to,a1
  *move.l bytes,d0
loop: *move.w (a0)+,(a1)+  {was move.l}
      *dbra d0,loop
%end

%constinteger dwrite=1,dread=2,dverify=4

%externalroutine show disq status
  pdate; printstring("Disk status: irrelevant"); newline
%end

%externalintegermap transfer(%integer f,n,a,%integername m)
%owninteger started=0
%owninteger answer
  %if started=0 %start
    started = 1
    pdate; printstring("Dummy disk driver starting"); newline
  %finish
  answer = n
  %if f&dread#0 %start
    a = addr(m)
    m = 0
    bulkmove(n-2,a,a+2)
  %finish
  %result == answer
%end

%endoffile
