Prev: DD53 Up: Map Next: DF05
DD54: Keypress handlers for the title screen menu
This routine handles the Define keys option menu
DD54 CALL $DB96 Hidden the enemy windows of the title screen (if any)
DD57 LD HL,$0000 Reset the keys for Rex movement defined at DD4E
DD5A LD ($DD4E),HL
DD5D LD ($DD50),HL
DD60 LD ($DD52),HL
DD63 LD IY,$DD4E Set IY to the base address of the keys defined for Rex movement
DD67 LD IX,$DF9F Set IX to address of the text definition data for DEFINE KEYS
DD6B LD B,$06 Set B to the number of rows of the windows
DD6D PUSH IY Save IY
DD6F CALL $A13E Draws the windows DEFINE KEYS
DD72 POP IY Restore IY
DD74 LD BC,$F7FE Read keys 1-2-3-4-5 into A
DD77 IN A,(C)
DD79 BIT 0,A Is key 1 pressed?
DD7B JP Z,$DD74 Jump back until key 1 is not pressed
DD7E LD IX,$DFDA Set IX to the address of the windows defintion for the highlighted options of the menu
DD82 LD B,$01 Set B to the number of files
DD84 PUSH IY Save IY
DD86 CALL $A2DF Draw the line of highlighted text UP
DD89 POP IY Restore IY
Handles the DEFINE UP key
DD8B CALL $DBAE Check for UP key pressed in the DEFINE keys windows
DD8E LD (IY+$00),A Save the keycode of the key pressed at the UP address of the Rex movement table at DD4E
DD91 CALL $DEF0 Point DE to the address graphics data of the key pressed
DD94 LD HL,$488F Point HL to the address of the diplay file to print the character
DD97 CALL $DEFC Draw the grahics data of character into display file
DD9A CALL $A4B5 Configure check UP key pressed routine
DD9D LD IX,$DFE2 Set IX to the address of the text definition data for higlighted UP text
DDA1 LD B,$01 Set B to the number of lines
DDA3 PUSH IY Save IY
DDA5 CALL $A2DF Draws the line of higlighted text UP
DDA8 POP IY Restore IY
Handles the DEFINE DOWN key
DDAA CALL $DBAE Check for DOWN key pressed in the DEFINE keys windows
DDAD LD (IY+$01),A Save the keycode of the key pressed at the DOWN address of the Rex movement table at DD4E
DDB0 CALL $DEF0 Point DE to the address graphics data of the key pressed
DDB3 LD HL,$48AF Point HL to the address of the diplay file to print the character
DDB6 CALL $DEFC Draw the grahics data of character into display file
DDB9 CALL $A4CE Configure check DOWN key pressed routine
DDBC LD IX,$DFEC Set IX to the address of the text definition data for higlighted LEFT text
DDC0 LD B,$01 Set B to the number of lines
DDC2 PUSH IY Save IY
DDC4 CALL $A2DF Draws the line of higlighted text LEFT
DDC7 POP IY Restore IY
Handles the DEFINE LEFT key
DDC9 CALL $DBAE Check for LEFT key pressed in the DEFINE keys windows
DDCC LD (IY+$02),A Save the keycode of the key pressed at the LEFT address of the Rex movement table at DD4E
DDCF CALL $DEF0 Point DE to the address graphics data of the key pressed
DDD2 LD HL,$48CF Point HL to the address of the diplay file to print the character
DDD5 CALL $DEFC Draw the grahics data of character into display file
DDD8 CALL $A483 Configure check LEFT key pressed routine
DDDB LD IX,$DFF6 Set IX to the address of the text definition data for higlighted RIGHT text
DDDF LD B,$01 Set B to the number of lines
DDE1 PUSH IY Save IY
DDE3 CALL $A2DF Draws the line of higlighted text RIGHT
DDE6 POP IY Restore IY
Handles the DEFINE RIGHT key
DDE8 CALL $DBAE Check for RIGHT key pressed in the DEFINE keys windows
DDEB LD (IY+$03),A Save the keycode of the key pressed at the RIGHT address of the Rex movement table at DD4E
DDEE CALL $DEF0 Point DE to the address graphics data of the key pressed
DDF1 LD HL,$48EF Point HL to the address of the diplay file to print the character
DDF4 CALL $DEFC Draw the grahics data of character into display file
DDF7 CALL $A49C Configure check RIGHT key pressed routine
DDFA LD IX,$E001 Set IX to the address of the text definition data for higlighted FIRE text
DDFE LD B,$01 Set B to the number of lines
DE00 PUSH IY Save IY
DE02 CALL $A2DF Draws the line of higlighted text FIRE
DE05 POP IY Restore IY
Handles the FIRE key
DE07 CALL $DBAE Check for FIRE key pressed in the DEFINE keys windows
DE0A LD (IY+$04),A Save the keycode of the key pressed at the FIRE address of the Rex movement table at DD4E
DE0D CALL $DEF0 Point DE to the address graphics data of the key pressed
DE10 LD HL,$500F Point HL to the address of the diplay file to print the character
DE13 CALL $DEFC Draw the grahics data of character into display file
DE16 CALL $A46A Configure check FIRE key pressed routine
DE19 LD IX,$DF8B Points IX to the text definition data for CONFIRM KEYS windows
DE1D JP $DE92 Jump to show confirmation windows and handles Y/N key presses
This routine handles the Kempston option
DE20 CALL $DB96 Hide the current visible enemy animation windows
DE23 LD HL,$001F Set A0AB to the port to read the inputs from Kempston joystick
DE26 LD ($A0AB),HL
DE29 LD A,$67 Set A0AD to the BIT opcode corresponent to the FIRE button
DE2B LD ($A0AD),A
DE2E CALL $A46A Configure check FIRE button pressed routine
DE31 LD A,$5F Set A0AD to the BIT opcode corresponent to the joystick UP
DE33 LD ($A0AD),A
DE36 CALL $A4B5 Configure check joystick UP routine
DE39 LD A,$57 Set A0AD to the BIT opcode corresponent to the joystick DOWN
DE3B LD ($A0AD),A
DE3E CALL $A4CE Configure check joystick DOWN routine
DE41 LD A,$47 Set A0AD to the BIT opcode corresponent to the joystick RIGHT
DE43 LD ($A0AD),A
DE46 CALL $A49C Configure check joystick RIGHT routine
DE49 LD A,$4F Set A0AD to the BIT opcode corresponent to the joystick LEFT
DE4B LD ($A0AD),A
DE4E CALL $A483 Configure check joystick LEFT routine
DE51 LD A,$FF Set Kempston as input device type at A0AE
DE53 LD ($A0AE),A
DE56 LD IX,$DF73 Points IX to the text definition data for CONFIRM KEMPSTON windows
DE5A JP $DED2 Jump to show confirmation windows and handles Y/N key presses
This routine handles the Sinclair option
DE5D CALL $DB96 Hide the current visible enemy animation windows
DE60 LD HL,$EFFE Set A0AB to the port to read the inputs from Sinclair joystick
DE63 LD ($A0AB),HL
DE66 LD A,$47 Set A0AD to the BIT opcode corresponent to the FIRE button
DE68 LD ($A0AD),A
DE6B CALL $A46A Configure check FIRE button pressed routine
DE6E LD A,$4F Set A0AD to the BIT opcode corresponent to the joystick UP
DE70 LD ($A0AD),A
DE73 CALL $A4B5 Configure check joystick UP routine
DE76 LD A,$57 Set A0AD to the BIT opcode corresponent to the joystick DOWN
DE78 LD ($A0AD),A
DE7B CALL $A4CE Configure check joystick DOWN routine
DE7E LD A,$5F Set A0AD to the BIT opcode corresponent to the joystick RIGHT
DE80 LD ($A0AD),A
DE83 CALL $A49C Configure check joystick RIGHT routine
DE86 LD A,$67 Set A0AD to the BIT opcode corresponent to the joystick LEFT
DE88 LD ($A0AD),A
DE8B CALL $A483 Configure check joystick LEFT routine
DE8E LD IX,$DF45 Points IX to the text definition data for CONFIRM SINCLAIR windows
Reset input device type
DE92 XOR A Reset input device type at A0AE
DE93 LD ($A0AE),A
DE96 JP $DED2 Jump to show confirmation windows and handles Y/N key presses
This routine handles the Cursor option
DE99 CALL $DB96 Hide the current visible enemy animation windows
DE9C LD HL,$EFFE Set A0AB to the port to read the inputs FIRE, UP, DOWN and RIGHT from Sinclair joystick
DE9F LD ($A0AB),HL
DEA2 LD A,$47 Set A0AD to the BIT opcode corresponent to the FIRE button
DEA4 LD ($A0AD),A
DEA7 CALL $A46A Configure check FIRE button pressed routine
DEAA LD A,$57 Set A0AD to the BIT opcode corresponent to the joystick RIGHT
DEAC LD ($A0AD),A
DEAF CALL $A49C Configure check joystick RIGHT routine
DEB2 LD A,$5F Set A0AD to the BIT opcode corresponent to the joystick UP
DEB4 LD ($A0AD),A
DEB7 CALL $A4B5 Configure check joystick UP routine
DEBA LD A,$67 Set A0AD to the BIT opcode corresponent to the joystick DOWN
DEBC LD ($A0AD),A
DEBF CALL $A4CE Configure check joystick DOWN routine
DEC2 LD HL,$F7FE Set A0AB to the port to read the input LEFT from Sinclair joystick
DEC5 LD ($A0AB),HL
DEC8 CALL $A483 Configure check joystick LEFT routine
DECB LD IX,$DF5D Points IX to the text definition data for CONFIRM CURSOR windows
DECF JP $DE92 Jump to show confirmation windows and handles Y/N key presses
Show confirmation windows for input device and handles Y/N key press
DED2 LD B,$01 Set B to the number of lines
DED4 CALL $A13E Draw input device confirmation windows
DED7 LD BC,$DFFE Set BC to port $DFFE for read keys P-O-I-U-Y
DEDA IN A,(C) Check if key Y is pressed
DEDC BIT 4,A
DEDE RET Z Return if pressed. Jump to the start routine to init the game
DEDF LD BC,$7FFE Set BC to port $7FFE for read keys SPACE-SYM-M-N-B
DEE2 IN A,(C) Check if key N is pressed
DEE4 BIT 3,A
DEE6 JP Z,$DEEC Jump forward if pressed
DEE9 JP $DED7 Jump backs and continue to read for keys if not
DEEC JP $DAEE Jump back to the main loop routine for the title screen
DEEF RET
Point DE to the address graphics data of the key pressed
DEF0 LD L,A Point HL to the address graphic data of the key pressed from the charset table at 60E0
DEF1 LD H,$00
DEF3 ADD HL,HL
DEF4 ADD HL,HL
DEF5 ADD HL,HL
DEF6 LD DE,$5FE0
DEF9 ADD HL,DE
DEFA EX DE,HL Exchange DE and HL
DEFB RET
Draw the grahics data of character into display file
DEFC LD B,$08 Set B to the number of bytes to copy
DEFE LD A,(DE) Copy a byte from the graphics data to the display file
DEFF LD (HL),A
DF00 INC DE Point DE to the next byte of the graphics data
DF01 INC H Point HL to the addres of the next row of pixels
DF02 DJNZ $DEFE Jump back until all the bytes are copied
DF04 RET
Prev: DD53 Up: Map Next: DF05