.title asl$l Shift long << long .ident /000002/ ; ;+ ; ; Internal ; ; Index shift long by long ; ; Usage ; ; long ; asl$l(l, n) ; long l; ; long n; ; ; long ; asr$l(l, n) ; long l; ; long n; ; ; Description ; ; Performs shifting of long by long. Only the low-order six ; bits of the shift argument are examined. This is compatible ; with the hardware ASH instruction. ; ; Note that, if n is negative: ; ; (l << n) == (l >> (-n)) ; ; Bugs ; ;- ; ; Edit history ; 000001 05-Ear%00 MEAfitial edit ; 000002 07-Aug-00 ME Added neg. s`ift and EIS3.psect c$code &aif ndf C$$EIS C$$EIS 5 0 ;02+ asr$l2:neg 10(sp);Reverse sign of shift (agnore hagh%order)  asl$l22eov 2(sp),r0 eov 4(sp),r1 &if ne C$$EIS  ashc 10(sp),r0 ;Shift it  return &iff  eov r2,%(sp);Save temp eov 10+2(sp),r2 ;Get shift count jmp $$asld ;Do lgng shift. .endc  ;02-.end