1
0
mirror of https://github.com/RevCurtisP/C02.git synced 2024-11-28 10:51:14 +00:00
C02/doc/include/bitlib.txt
2021-12-18 19:37:31 -05:00

71 lines
3.0 KiB
Plaintext

Bit Manipulation Functions for C02 Programs
This module contains functions to shift and rotate the bits in a byte,
and to extract, combine, swap and duplicate nybbles in a byte.
At the beginning of the program use the directives
#include <stddef.h02>
#include <bitlib.h02>
The following functions are defined:
r = shiftl(b,n) Shifts byte b by n bits to the left and returns
the result in r. If n is 0, the byte is not
shifted, and if n greater than 8, the returned
value will be 0.
r = shiftr(b,n) Shifts byte b by n bits to the right and returns
the result in r. If n is 0, the byte is not
shifted, and if n greater than 8, the returned
value will be 0.
r = rotl(b,n) Rotate byte b by n bits to the left and returns
the result in r, with the high bit rotated into
the low bit on each rotation. If n is 0, the
byte is not rotated, and any value of n greater
than 8, will return the same result as n modulo 8.
r = rotr(b,n) Rotate byte b by n bits to the right and returns
the result in r, with the high bit rotated into
the low bit on each rotation. If n is 0, the
byte is not rotated, and any value of n greater
than 8, will return the same result as n modulo 8.
b = pack(l,r); Packs the low nybbles of bytes l and r into a
single byte, with l becoming the left (or high)
nybble and r becoming the right (or low) nybble.
and returns the packed byte in b.
l,r = unpack(b); Unpacks byte b, returning the left (or high)
nybble in l, and the right (or low) nybble in r.
d = dupl(b); Duplicates the low nybble of byte b into the
high nybble and returns the new byte in d.
Note: Executes function pack() with b as both
arguments.
d = swap(b); Swaps the left (or high) and right (or low)
nybbles of byte b and returns the new byte in d.
Note: Executes function rotl() with the arguments
b and 4.
c,d,e = func(a,&d); Stores the input value a and the address of d
in memory.
Returns three bytes read from memory.
Note: Writes argument a to variable arg0,
the address of d to variables adr0 and adr1,
and returns the values of variables var0,
var1, and var2.
Note: This library expects the following external variables to be defined:
temp0: Temporary Variable