Saturday, February 20, 2016

Driving the pf stepper motor in ap2000

I like to skip around when I get stuck... so I happened upon some code that looks like where it drives the pf (paper feed) stepper motor. It's actually a pretty simple fragment.

Fragments like this are so simple and elegant.



It checks the high bit of $9801 and sets the base address of the stepper table in HL.

So one table at $3289 for one direction, and another at $3293 for the other direction. To save a couple of bytes, they overlapped the tables a little bit.



Then we get the current phase at $C007, and look up the next phase with LDAX (HL+A).

We save a copy in B, write the new phase to $C007.

The we look up another phase, wait a couple of cycles and write that phase and return.



so if we're at phase 1, the next will be 5


if we are at 5 the next will be 4



Starting at 1, this will generate the sequence 1 5 4 6 2 A 8 9 1... and backwards for the other direction which matches the sequence for NOT_A_REEL in steppers.cpp.




No comments:

Post a Comment