1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- .define .sli4
- .sect .text
- .sect .rom
- .sect .data
- .sect .bss
- .sect .text
- ! Shift 32 bits integer left
- ! Expects on stack: number of shifts
- ! number to be shifted
- ! Yields on stack: result
- .sli4:
- pop h
- shld .retadr
- mov h,b
- mov l,c
- shld .bcreg
- pop b !number of shifts
- pop d !low-order bytes of number to be shifted
- pop h !high-order bytes
- mov a,b !if bc>=32 return 0
- ora a
- jnz 2f
- mov a,c
- cpi 32
- jnc 2f
- 1: dcr c
- jm 3f
- dad h
- xchg
- dad h
- xchg
- jnc 1b
- inx h
- jmp 1b
- 2: lxi h,0
- lxi d,0
- 3: push h
- push d
- lhld .bcreg
- mov b,h
- mov c,l
- lhld .retadr
- pchl
|