Press 1, then Return. The count advances once. Leave the machine alone and the world waits for you. That is enough to give an adventure its rhythm: look around, make a choice, then let the world respond.
Here the world is just a counter. Replace that update with a room change, a board move or an opponent’s response. Input, persistent state and presentation still have different jobs.

Put it in your project
Enter this source on a Dragon 32 PAL with its normal BASIC ROM, then type RUN. It uses the real interpreter’s input and display routines.
A complete untimed caller
10 N=0
20 CLS:PRINT "TURN";N
30 INPUT A
40 IF A=1 THEN N=N+1
50 GOTO 20N is persistent rule state; A is the submitted numeric command. Keep N=0 outside the loop. Reuse the conditional update where your own program decides whether an action spends a turn, and put your room/board change there. The jump goes to line 20 so the next command sees the previous result.
INPUT waits for Return. 1 advances, 0 does not; other malformed numeric input follows Dragon BASIC’s own handling. This is not a parser. BASIC owns variables, keyboard scanning, interrupts and CLS/PRINT. Renumber the lines and reserve names consistently when combining the listing with another program. Its ordinary BASIC number is not an unlimited integer or an enforced 8-bit counter.
The caller clears the whole text screen after each submission. Move that presentation into a status panel if other UI must survive; the update itself does not need a clear.
Customise the update
This alternative adds three units for each accepted action: 0 → 3 → 6. It is still one action, rather than running the entire game three times.
Three progress units per action
10 N=0
20 CLS:PRINT "TURN";N
30 INPUT A
40 IF A=1 THEN N=N+3
50 GOTO 20
Common mistake: erasing the previous turn
This listing is deliberately broken. Its jump goes back through the initialiser at line 10. Each redraw shows zero again, even after an accepted action.
Broken: initialisation inside the iteration
10 N=0
20 CLS:PRINT "TURN";N
30 INPUT A
40 IF A=1 THEN N=N+1
50 GOTO 10
Restore the original loop target to repair it. The repaired source is executed separately, as is a nonzero initial count; an absent initialiser must not pass simply because zero happens to be there already.
Add presentation deliberately
The companion probe keeps the input policy and adds an original text-cell box and a blocking SOUND call:
Input, text-cell drawing and sound
10 N=0
20 CLS:PRINT "TURN";N
21 GOSUB 1000
30 INPUT A
40 IF A=1 THEN N=N+1:GOSUB 2000
50 GOTO 20
1000 PRINT "XXX"
1010 PRINT "X X"
1020 PRINT "XXX"
1030 RETURN
2000 SOUND 100,2
2010 RETURNThese are separate jobs. The retained run omits sound to check that its audio guard rejects silence. The drawing call is also omitted in a separate cold run. Text cells are not a bitmap drawing primitive. A blocking tone delays the next input sample; a background sound service would need a different loop.
Decide when time matters
This loop spends CPU waiting, but does not spend a game turn. A timed decision needs a separate clock, an input policy that checks it and a rule for a command arriving with the deadline. Continuing display or firmware interrupts do not imply that the world should advance on every tick.
Compare the loop choices and the assembly version. These are different resource and input agreements, not a compulsory ladder from one language to another.
Source and verification
Native-emulator executed: Emu198x 0.44.1, the named machine and firmware configuration above. Actual keyboard input drives the program; host writes do not supply the count. The images are native framebuffer captures.
The maintained source includes the working variation and deliberate fault. The retained record identifies sources and observations. Five cold starts check normal use, step three, the reset mistake and repair, and a nonzero start. The refreshed baseline also checks idle and ignored input. An independent checker decodes screen RAM and rejects altered counts, missing stages, changed sources and changed captures.
This qualifies the small workload and named configuration. It is not an original-hardware, pitch, cassette-transfer or whole-emulator claim.
Primary references
Inside the Dragon (Addison-Wesley, 1983), pp. 103–104 and Appendix 3, pp. 348–349 (ROM input/output contracts), pp. 212–213 (single-bit sound). The direct keyboard entry is $8006; $800C is screen output.