| Routines

21664: Set the input method, change the characters' names, and start the game

Continues from 21425.
21664 | CALL 29154 | Wait for a keypress, and collect its ASCII code in A
21667 | JR Z,21664
21669 | OR 32 | Convert the keypress to lower case
21671 | CP 99 | Was 'c' (Cursor) pressed?
21673 | JR Z,21705 | Jump if so
21675 | CP 110 | Was 'n' (None) pressed?
21677 | JR Z,21705 | Jump if so
21679 | CP 107 | Was 'k' (Kempston) pressed?
21681 | JR NZ,21690 | Jump if not
21683 | LD A,1 | Set 32748 to 1: using Kempston
21685 | LD (32748),A
21688 | JR 21705 |
21690 | CP 105 | Was 'i' (Int2) pressed?
21692 | JR NZ,21664 | Jump back to wait for another keypress if not
21694 | LD HL,21494 | Copy the 10-byte table at 21494 into the keypress offset table at 58624 if Int2 is being used
21697 | LD DE,58624
21700 | LD BC,10
21703 | LDIR
The input method has been established. Now prepare the screen for the cast of characters.
21705 | LD HL,46849 | Draw a line (the catwalk) across the screen, and set byte 1 of each character's buffer (which holds the character's x-coordinate) to a number between 1 and 32 (so that they are off-screen: the column of the play area at the far left of the screen, stored at 32767, was set to 128 earlier on)
21708 | LD DE,18560
21711 | LD B,32
21713 | LD A,255
21715 | LD (HL),B
21716 | LD (DE),A
21717 | INC H
21718 | INC E
21719 | DJNZ 21715
21721 | LD HL,53762 | Set byte 2 of ERIC's character buffer (which holds his y-coordinate) to 8; this will be the y-coordinate of the characters as they proceed along the catwalk
21724 | LD (HL),8
21726 | LD A,248 | Message 248: 'THE CHARACTERS'
21728 | LD HL,16448 | Print this message
21731 | CALL 20668
21734 | CALL 21152 | Display the main characters and let the user change their names
This entry point is used by the routine at 21920.
21737 | LD HL,20650 | Do the POKEs specified by the table at 20650
21740 | CALL 21408
21743 | JP 63189 | Start the game