123456789101112131415161718192021222324252627282930313233343536373839404142 |
- .define .sts
- .sect .text
- .sect .rom
- .sect .data
- .sect .bss
- .sect .text
- ! use trp.z
- ! object size given by 2-byte integer on
- ! top of stack.
- ! parameters:
- ! on stack
- ! checks if #bytes is even or 1,
- ! else traps
- .sts:
- pop ix ! save return address
- pop de ! # bytes to transfer
- pop hl ! destination address
- srl d ! divide de by 2
- rr e
- jr nc,1f ! see if it was odd
- ld a,e ! yes, must be 1
- or d
- jr nz,.trp.z ! no, error
- pop de ! transfer 1 byte,
- ! padded with zeroes
- ld (hl),e
- jp (ix)
- 1:
- pop bc
- ld (hl), c
- inc hl
- ld (hl),b
- inc hl
- dec de
- ld a,e
- or d
- jr nz,1b
- jp (ix)
|