2 problems that i can see:

First, looks like ur clock is too fast. PS2 keyboards generate a clock between 10khz-16khz. I'd be changing the shift pause to:

DEFINE SHIFT_PAUSEUS 40

Second, The "mode 0" as you call it is the only one with any chance of working, but "%10101101010" corresponds to a scancode of $AD which as far as i can tell is not a valid scancode.

Try using these:

char = %10001110000 '$1C = 'a'
breakcode = %11000011110 '$F0

shiftout dataout,clkout,4,[char\11]
shiftout dataout,clkout,4,[breakcode\11]
shiftout dataout,clkout,4,[char\11]


Something else you may want to try is this:

shiftout dataout,clkout,4,[char\11]
pauseus 100
shiftout dataout,clkout,4,[breakcode\11]
pauseus 100
shiftout dataout,clkout,4,[char\11]
pauseus 100

*edit* Check out this page for all the scancodes: http://www.computer-engineering.org/...cancodes2.html