
;************************************************************************/
;*									*/
;*		Macro to waste a defined count of cycles		*/
;*                                                                      */
;*              Author: Peter Dannegger                                 */
;*                      danni@specs.de                                  */
;*									*/
;************************************************************************/

;macro parameters
;1.parameter:	count of cycles (1 ... 65535)
;2.parameter:	1. used register: default R7
;3.parameter:	2. used register (on delay > 515): default R6

mdelay	macro value, rx, ry	;cycle, used register(s)
	  local m____1
	  if( value < 5 )
	    rept value
	      nop
	    endm
	  elseif( value < 515 )
	    if nul &rx
	      mov r7, #low((value-1)/2)
	      djnz r7, $
	    else
	      mov rx, #low((value-1)/2)
	      djnz rx, $
	    endif
	    if((value and 1) = 0)
	      nop
	    endif
	  else
	    if nul &rx
	      mov r7, #high(value/2+253)
	      mov r6, #low(value/2-2)
m____1:	      djnz r6, m____1
	      djnz r7, m____1
	    else
	      mov rx, #high(value/2+253)
	      mov ry, #low(value/2-2)
m____1:	      djnz ry, m____1
	      djnz rx, m____1
	    endif
	    if(value and 1)
              nop
            endif
	  endif
	endm
