Chase H.Q. | Routines |
Prev: 8008 | Up: Map | Next: 80B9 |
Used by the routine at main_loop.
|
||||
load_stage | 8014 | LD A,($8007) | Load wanted_stage_number | |
8017 | LD HL,$A13A | Point HL at current_stage_number | ||
801A | CP (HL) | Exit if they match | ||
801B | RET Z | |||
801C | LD (HL),A | current_stage_number = wanted_stage_number | ||
801D | LD ($A220),A | Set var_a220 to wanted level no. | ||
8020 | ADD A,$B0 | Update the level number in "SEARCHING FOR <N>" | ||
8022 | LD ($81AE),A | |||
load_stage_0 | 8025 | CALL clear_screen_set_attrs | Call clear_screen_set_attrs | |
8028 | CALL clear_game_attrs | Call clear_game_attrs | ||
802B | LD A,$F8 | Transition type? | ||
802D | CALL setup_transition | Call setup_transition | ||
8030 | LD B,$02 | |||
load_stage_1 | 8032 | CALL sub_8088 | Call TBD subroutine | |
load_stage_2 | 8035 | LD IX,$A19C | IX = &hazards[1] | |
8039 | LD DE,$0002 | |||
803C | CALL tape_load | Call tape_load subroutine | ||
803F | JR NC,load_stage_2 | loop while failed perhaps? | ||
8041 | LD HL,$A19C | HL = &hazards[1] | ||
8044 | LD A,(HL) | Load used flag [doesn't add up - this is a level number?] | ||
This entry point is used by the routine at entrypt_48k.
|
||||
load_stage_3 | 8045 | INC HL | ||
8046 | CP (HL) | equal to <distance related>? | ||
8047 | JR NZ,load_stage_2 | jump if not | ||
8049 | ADD A,$B0 | A += (48 + 128) (make it ASCII and terminate it) | ||
804B | LD ($81BA),A | Set x in "FOUND x" | ||
804E | LD B,$03 | |||
8050 | LD A,($8007) | A = wanted_stage_number | ||
8053 | CP (HL) | equal? | ||
8054 | JR NZ,load_stage_1 | not the wanted stage | ||
8056 | CALL sub_8088 | Call TBD subroutine | ||
8059 | CALL tape_load_5C00 | Call tape_load_5C00 | ||
805C | JR NC,load_stage_0 | |||
Success - must have loaded the correct level data.
|
||||
805E | XOR A | Set border to black | ||
805F | OUT ($FE),A | |||
8061 | CALL clear_screen_set_attrs | Call clear_screen_set_attrs | ||
8064 | CALL clear_game_attrs | Call clear_game_attrs | ||
8067 | LD HL,$81BB | HL -> "STOP THE TAPE" message structure | ||
806A | LD B,$02 | |||
806C | CALL sub_8098 | Call sub_8098 | ||
806F | PUSH HL | Preserve ? | ||
Wait for a keypress - debounce.
|
||||
load_stage_4 | 8070 | CALL keyscan | Call keyscan | |
8073 | AND $10 | Loop while key not pressed | ||
8075 | JR Z,load_stage_4 | |||
load_stage_5 | 8077 | CALL keyscan | Call keyscan | |
807A | AND $10 | Loop while key pressed | ||
807C | JR NZ,load_stage_5 | |||
807E | LD A,$08 | |||
8080 | CALL setup_transition | Call setup_transition | ||
8083 | POP HL | Restore ? | ||
8084 | LD B,$02 | B = 2 | ||
8086 | JR sub_8098 | Exit via sub_8098 | ||
sub_8088 | 8088 | LD HL,$818C | Point HL at "START TAPE" message structure | |
808B | LD A,($8007) | A = wanted_stage_number - 1 | ||
808E | DEC A | |||
808F | JR NZ,sub_8095 | Jump if > 0 | ||
This entry point is used by the routine at entrypt_48k.
|
||||
load_stage_6 | 8091 | INC B | ||
8092 | LD HL,$8169 | Point HL at tape_messsages | ||
sub_8095 | 8095 | CALL sub_8098 | why call adjacent instr? to exec this func twice? | |
sub_8098 | 8098 | PUSH BC | preserve counter | |
8099 | PUSH HL | preserve message pointer | ||
sub_809A | 809A | LD A,$05 | flags byte for print_message | |
809C | DEC HL | why dec here? | ||
This entry point is used by the routine at page_in_stage_128k.
|
||||
sub_809D | 809D | CALL print_message | Call print_message | |
80A0 | DJNZ sub_809A | printing a whole set by looping? | ||
80A2 | CALL transition | Call transition | ||
80A5 | CALL draw_screen | Call draw_screen | ||
80A8 | POP HL | restore message pointer | ||
80A9 | POP BC | restore counter | ||
This entry point is used by the routine at page_in_stage_128k.
|
||||
load_stage_7 | 80AA | LD A,($A231) | A = transition_control | |
80AD | AND A | Return if zero | ||
80AE | RET Z | |||
80AF | LD DE,$0A00 | Delay loop | ||
load_stage_8 | 80B2 | DEC DE | ||
80B3 | LD A,D | |||
80B4 | OR E | |||
80B5 | JR NZ,load_stage_8 | |||
80B7 | JR sub_8098 | Loop |
Prev: 8008 | Up: Map | Next: 80B9 |