![]() |
Routines |
| Prev: 80A1 | Up: Map | Next: 80FD |
|
Used by the routine at 80A1.
|
||||||||
|
The player has picked a valid controls option on menu 1 (8039). Store the choice number (1-4), play a high pitched sound and highlight their choice on screen.
|
||||||||
| 80C1 | INC HL | Advance to the second byte of the pair (to give the number) | ||||||
| 80C2 | LD A,(HL) | Identify key pressed (1-4) | ||||||
| 80C3 | LD ($8BAA),A | ...and store it | ||||||
|
Play a high pitched sound (and also set the border to black)
|
||||||||
| 80C6 | LD C,$FF | C register contains the outer loop counter for the sound duration | ||||||
| 80C8 | LD HL,$3333 | H = 51, L = 51 - but also used as a token address pointer somewhere in ROM | ||||||
|
Outer loop start - toggle speaker on and pause briefly
|
||||||||
| 80CB | LD B,$10 | Pause duration | ||||||
| 80CD | LD A,$10 | Set bit 4 - speaker bit | ||||||
| 80CF | OUT ($FE),A | Output it (speaker toggle = on) | ||||||
| 80D1 | DJNZ $80D1 | Short pause | ||||||
|
The following instructions make a few changes to the value held in the A register, which is then used in the next short pause loop at 80E0.
|
||||||||
| 80D3 | LD H,(HL) | |||||||
| 80D4 | ADD A,H | |||||||
| 80D5 | ADD A,L | |||||||
| 80D6 | AND $0F | |||||||
| 80D8 | ADD A,$60 | |||||||
| 80DA | ADD A,B | |||||||
|
Toggle speaker off and pause briefly
|
||||||||
| 80DB | LD B,A | Transfer to the B register to be used as a pause timer | ||||||
| 80DC | LD A,$00 | Reset the A register (reset speaker bit) | ||||||
| 80DE | OUT ($FE),A | Output it (speaker toggle = off) | ||||||
| 80E0 | DJNZ $80E0 | Another short pause | ||||||
| 80E2 | DEC C | Decrement the outer loop counter | ||||||
| 80E3 | JR NZ,$80CB | ...and repeat until zero. | ||||||
|
Highlight/flash the menu option selected
|
||||||||
| 80E5 | LD A,($8BAA) | Get the menu option selected (1-4) | ||||||
| 80E8 | LD HL,$58A1 | Screen attribute display position for first option (Kempston) | ||||||
| 80EB | LD DE,$0040 | 64 characters = 2 lines to jump down to next option | ||||||
| 80EE | LD B,$04 | Four menu options to check (1-4) | ||||||
| 80F0 | LD C,$01 | Start with 1 | ||||||
| 80F2 | LD (HL),$0F | Reset colour/attribute for this option (INK 7, PAPER 1) | ||||||
| 80F4 | CP C | Is it this option that's selected? | ||||||
| 80F5 | JR NZ,$80F9 | |||||||
| 80F7 | LD (HL),$CF | ...If so, set attribute to FLASH 1, BRIGHT 1 | ||||||
| 80F9 | ADD HL,DE | Move attribute screen address down two lines to next option | ||||||
| 80FA | INC C | Increment... | ||||||
| 80FB | DJNZ $80F2 | ...and check for 2, 3 and then 4 in the same way | ||||||
| Prev: 80A1 | Up: Map | Next: 80FD |