Give an accepted action a sound. The same caller changes its picture and triggers this effect; a second version performs the action with the trigger removed. Listen to both.
Working effect
Trigger omitted
Take the effect
The reusable effect
2000 POKE 59467,16:POKE 59466,15:POKE 59464,51
2010 FOR J=1 TO 200:NEXT J
2020 POKE 59467,0
2030 RETURNThe routine programs VIA ACR, shift register and Timer 2 low byte at 59467, 59466 and 59464, waits in a BASIC loop, then clears ACR. It requires an audible CB2 sound connection or the selected emulator output; an early PET without a speaker connection is not magically given a speaker.
Copy the 2000-range subroutine and call GOSUB 2000 when the game accepts an action. Keep its global scratch variables and any DATA/setup lines with it. A sound call is a consequence of an action, not a substitute for input validation.
Change it and recognise a mistake
Change the Timer 2 operand to alter the output. This takes over VIA shift-register/timer configuration; it does not preserve another driver or restore a previous ACR value.
The omitted-trigger control still accepts the action but fails the same audio guard as the working caller. Keyboard clicks or other machine output are not enough: the BASIC checks compare against a separate rejected-command recording.
Deliberately omitted sound trigger
10 N=0
20 PRINT CHR$(147);"TURN";N
21 GOSUB 1000
30 GOSUB 3000
40 IF A$="GO" THEN N=N+1
50 GOTO20
1000 PRINT "XXX"
1010 PRINT "X X"
1020 PRINT "XXX"
1030 RETURN
2000 POKE 59467,16:POKE 59466,15:POKE 59464,51
2010 FOR J=1 TO 200:NEXT J
2020 POKE 59467,0
2030 RETURN
3000 INPUT A$
3010 RETURNThe working implementation above repairs that omission. If an effect instead drones on, check the mute/service path and that its state is initialised. Servicing twice makes a counted effect shorter; servicing only after input can leave it running while the player waits. Those are lifecycle decisions to test when adapting it.
Run the caller
Enter the complete demo.bas in Commodore PET BASIC and RUN. Submit GO, then Return. One accepted command advances the displayed turn; another gives two.

Where setup, trigger and service belong
10 N=0
20 PRINT CHR$(147);"TURN";N
21 GOSUB 1000
30 GOSUB 3000
40 IF A$="GO" THEN N=N+1:GOSUB 2000
50 GOTO20
1000 PRINT "XXX"
1010 PRINT "X X"
1020 PRINT "XXX"
1030 RETURN
2000 POKE 59467,16:POKE 59466,15:POKE 59464,51
2010 FOR J=1 TO 200:NEXT J
2020 POKE 59467,0
2030 RETURN
3000 INPUT A$
3010 RETURNCompare blocking, serviced and queued sound when choosing the next step.
Verification and sources
Target: 40-column PET firmware configuration with emulated VIA/CB2 sound output. These callers were executed with released Emu198x 0.44.1; assembly uses Asm198x 0.0.71. The sample folder contains reproduction instructions and retained observations. The independent checker binds source, native captures and actual output; its rejection tests exercise wrong state, missing files and false audio claims.
This qualifies the named emulator/firmware path. Pitch accuracy, original hardware and other peripherals require their own observations.
Commodore, PET/CBM documentation: BASIC INPUT and GOSUB/RETURN; MOS Technology 6522 VIA data sheet: ACR, shift-register modes and Timer 2; PET sound requires the appropriate CB2 connection.