EXTERN  DelayCycles
        EXTERN  Delay256N
        EXTERN  Delay4
        EXTERN  Delay5
        EXTERN  Delay6
        EXTERN  Delay7
        EXTERN  Delay8
        EXTERN  Delay9


;------------------------------------------------------------------------
; DELAY macro
;
; The purpose of this macro is to delay exactly "delay" number of instruction
; cycles, where:	
;
;
;        0 < delay < 65547
;
DELAY	macro	delay
  
   if delay == 1
	NOP
   else
    if delay == 2
        BRA	$+2
    else
     if delay == 3
	NOP
        BRA	$+2
     else
      if delay<10
	RCALL	Delay#v(delay)
      else
       if delay < 265
	 MOVLW	delay-10
	 RCALL	DelayCycles
       else
        if delay < 274
          RCALL Delay9
	  MOVLW delay-10-9
          RCALL DelayCycles
        else

	  MOVLW (delay-11) & 0xff
	  RCALL DelayCycles
	  MOVLW (delay-11)>>8
	  RCALL Delay256N
        endif
       endif
      endif
     endif
    endif
   endif

  endm



syntax highlighted by Code2HTML, v. 0.9.1