yes
so get your block of 8..eg
10000001
is chr$(129)
eg
128 64 32 16 8 4 2 1 dec
1 0 0 0 0 0 0 1 bin
for bit 5 (depending what end you count from..I use 128 end in this)
you add 8 so
128 64 32 16 8 4 2 1 dec
1 0 0 0 1 0 0 1 bin
thats chr$(137)
you can only add one bit once to each position, imagine you had a string of 4xchr$(0), that would be
00000000 00000000 00000000 00000000
so bit 19 would be
19/8=2 remainder 3
so the bit you want is in char 3, and its position 3 in the char so the char string is now
00000000 00000000 00100000 00000000
^
so char 3 is now chr$(32) or a space character, you can add binary in columns just like base 10, but to find the value of a byte you need to subtract any possible higher bits first and then check for the contents of the bit you want to test, if you tried to just subtract 32 from a byte of 128, you would succeed and think it was a bit that was set, you need to subtract 128 if possible, then 64 if possible, then check if you can subtract 32, if you can then 32 must be set eg
00100000 <<< minus 32=0 so 32 was set, only combination that works for this case
eg
00011111 = 16+8+4+2+1 = 31
31-32=-1, so the third bit wasn`t set, but you need to check for higher values, eg
10100000 = 128+32 = 160
so you need to subtract 128 first
10100000-128(10000000)= 00100000
if there was a bit in column 64 then you need to remove that first, to do that just go down the row to the position you are checking, and if subtracting 128, then 64 then 32 etc leaves you with more than or equal to 0 then you know that bit was set, otherwise the bit wasn`t set, for example, subtracting 128 from bin 10000000 works, you get zero, so the bit must have been set, but 128 from 01000000 is less than zero, so the bit wasn`t set, you then know it was 0, this works for any permutation, eg 01111111 is dec 127, so 127-128=-1, so you still know the bit in column 128 was not set, is that clear?, looks like I am rambling a bit
thats basicaly what you said, you have to work in chunks of 8 bits anyway, thats a limitation of the hardware, the reason ascii is crammed into 256 characters, thats what the PC works with internaly as the smallest data unit, so to find internal bits, even with logical operators, you have to specificaly test for and set each bit, for example the logical operation 128 && 32 (in decimal) is exactly the same as 128 + 32 AS LONG AS BIT COLUMN 32 IS NOT ALREADY SET, thats important, adding 32 again will set bit column 64(a carry in binary), you need to make sure of the bit value before you operate on it, you can only add 1,2,4,8,16,32,64,128 if those columns are not already set, all you need are two functions using the methods mentioned, one to check and add bits where required, and one to check what bits are set, write the latter first and the other is simple, use the checking routine before writing, the logical value returned is used as a boolean to enable or deny the write to the bit position.
if there is one thing I can NOT tolerate, it`s intolerant people.