Human Resource Machine/Year 34

Strategy
Before you get started, you will notice that all of the vowels have been laid out for you on the floor. In order to complete these stage, you will grab each letter off the INBOX, and check it against all of the vowels to make sure it isn't one, before putting it in the OUTBOX. If it happens to be a vowel, you'll ignore it and move on to the next letter.

To perform the comparisons, you will need to start at box 0 and move down the line through box 4. Box 5 contains a 0, and that will server two purposes. That 0 will signify that we're done checking vowels, and if we've reached that box, we're safe to send the letter to the OUTBOX. It will also be your initializer for a counter that will keep track of what box you're going to check next. You will reference that value indirectly, and then bump the number up every time you don't have a match.

The resulting code should look like this:

JUMP    b   -- next search a:       COPYFROM 6   -- get char which is valid by this point OUTBOX      -- output b: c:    -- init next search INBOX       -- copy next search char COPYTO  6   -- needle COPYFROM 5  -- zero COPYTO  7   -- idx d:   -- search loop COPYFROM [7] -- get vowel at idx JUMPZ   a   -- if 0, end of vowels SUB     6   -- compare with needle JUMPZ   c   -- if eq, char is vowel, skip it    BUMPUP   7   -- inc idx JUMP    d   -- check next vowel -- size 13/13 -- speed 323/316

Optimizing
The above code meets the size requirements and exceeds the speed requirements, but you might reorder the vowel list, placing most common occurrences first, at the cost of larger size.