So I have a solid start on getting the 3/4 of the code I've transliterated moving towards proper C++.

I've got some questions that I would like input on to get an idea how to tackle the other 25% of the code.

In the setup phase, near the beginning is a section where the 6821 PIA and 6840 timer IC are initialized. The original code disables the interrupts before this section and re-enables them afterwards. I'm not sure how critical this part may be. The compiler complained about the noInterrupts() and interrupts() instructions I'd used after seeing mention of these calls somewhere on the interwebs...?

The second thing I'm wondering about is how to handle binary to BCD conversion - there are a number of times where the 6800-class DAA instruction is invoked.

There are also a number of occasions where two 8-bit numbers are assembled into a 16-bit number for a bitwise shift (by loading the upper byte into Accumulator A, the lower byte into Accumulator B, and then operating on both as the 16-bit Accumulator D). How do I do this in C++?

Another prickly one is the fact that there are a number of ROL and ROR instructions (these rotate the bits in one direction through the carry flag, THEN back into the accumulator or memory location).

One last thing I thought of that would be easy for you folks to answer is how to wait for a keypress or an external input to change state. I know this is a perfect case for using a while or do...while but I'm a bit fuzzy on the concept yet.
In other words, I'm looking for the C++ equivalent of this old Basic code:

10 GET A$: IF A$ = "" THEN 10