![]() |
Startup routines |
| Prev: DB00 | Up: Map |
|
Used by the routine at F0BE.
|
||||||||||||||||
| DD00 | NOP | |||||||||||||||
| DD01 | NOP | |||||||||||||||
| DD02 | NOP | |||||||||||||||
| DD03 | LD H,$50 | Clear the bottom 4 lines (32 pixel rows) of the display file | ||||||||||||||
| DD05 | LD L,$80 | |||||||||||||||
| DD07 | XOR A | |||||||||||||||
| DD08 | LD (HL),A | |||||||||||||||
| DD09 | INC L | |||||||||||||||
| DD0A | JR NZ,$DD08 | |||||||||||||||
| DD0C | INC H | |||||||||||||||
| DD0D | BIT 3,H | |||||||||||||||
| DD0F | JR Z,$DD05 | |||||||||||||||
|
Now the first 24 character squares on each of the bottom 3 lines (24 pixel rows) of the screen are filled with graphic data. The 576 bytes of graphic data are copied to the screen from the following 5 segments:
|
||||||||||||||||
| DD11 | LD HL,$D700 | Point HL at the first byte to be copied to the screen | ||||||||||||||
| DD14 | LD DE,$50A0 | Point DE at the first display file location to be written | ||||||||||||||
| DD17 | LD C,$18 | There are 24 bytes per row of pixels | ||||||||||||||
| DD19 | PUSH DE | Save the display file pointer | ||||||||||||||
| DD1A | LD B,$18 | There are 24 rows of pixels to be drawn | ||||||||||||||
| DD1C | LD A,(HL) | Pick up a byte to copy | ||||||||||||||
| DD1D | LD (DE),A | Copy the byte to the screen | ||||||||||||||
| DD1E | INC L | Move HL along to the next byte to copy | ||||||||||||||
| DD1F | LD A,L | Have we reached the end of a segment? | ||||||||||||||
| DD20 | SUB $7E | |||||||||||||||
| DD22 | JR NZ,$DD26 | Jump if not | ||||||||||||||
| DD24 | LD L,A | Point HL at the first byte in the next segment | ||||||||||||||
| DD25 | INC H | |||||||||||||||
| DD26 | INC D | Point DE at the next pixel row down on the screen | ||||||||||||||
| DD27 | BIT 3,D | Have we just copied a byte to the 8th or 16th row of pixels? | ||||||||||||||
| DD29 | JR Z,$DD31 | Jump if not | ||||||||||||||
| DD2B | LD D,$50 | Otherwise point DE at the 9th or 17th row of pixels | ||||||||||||||
| DD2D | LD A,E | |||||||||||||||
| DD2E | ADD A,$20 | |||||||||||||||
| DD30 | LD E,A | |||||||||||||||
| DD31 | DJNZ $DD1C | Jump back until a column of 24 bytes has been copied | ||||||||||||||
| DD33 | POP DE | Restore the display file pointer | ||||||||||||||
| DD34 | INC E | Point DE at the top byte in the next column along | ||||||||||||||
| DD35 | DEC C | Have we finished all 24 columns? | ||||||||||||||
| DD36 | JR NZ,$DD19 | Jump back if not | ||||||||||||||
|
Now that the bottom 4 lines of the display file are ready, it's time to prepare the bottom 4 lines of the attribute file.
|
||||||||||||||||
| DD38 | LD HL,$5A80 | Point HL at the first attribute byte of the line where on-screen messages will be displayed | ||||||||||||||
| DD3B | LD B,$20 | There are 32 attribute bytes in this line | ||||||||||||||
| DD3D | LD (HL),$0F | Set each attribute byte to 0x0F (INK 7: PAPER 1) | ||||||||||||||
| DD3F | INC L | |||||||||||||||
| DD40 | DJNZ $DD3D | |||||||||||||||
| DD42 | LD C,$03 | There are 3 lines at the bottom of the screen that still need their attribute bytes set | ||||||||||||||
| DD44 | LD B,$08 | The first 8 bytes in each line correspond to the Contact Sam Cruise logo | ||||||||||||||
| DD46 | LD (HL),$17 | Set these attribute bytes to 0x17 (INK 7: PAPER 2) | ||||||||||||||
| DD48 | INC L | |||||||||||||||
| DD49 | DJNZ $DD46 | |||||||||||||||
| DD4B | LD B,$0C | The next 12 bytes in each line correspond to the icon panel | ||||||||||||||
| DD4D | LD (HL),$36 | Set these attribute bytes to 0x36 (INK 6: PAPER 6) | ||||||||||||||
| DD4F | INC L | |||||||||||||||
| DD50 | DJNZ $DD4D | |||||||||||||||
| DD52 | LD B,$09 | The next 9 bytes in each line correspond to the score box | ||||||||||||||
| DD54 | LD (HL),$20 | Set these attribute bytes to 0x20 (INK 0: PAPER 4) | ||||||||||||||
| DD56 | INC L | |||||||||||||||
| DD57 | DJNZ $DD54 | |||||||||||||||
| DD59 | LD B,$03 | The last 3 bytes in each line correspond to the disguise box | ||||||||||||||
| DD5B | LD (HL),$17 | Set these attribute bytes to 0x17 (INK 7: PAPER 2) | ||||||||||||||
| DD5D | INC L | |||||||||||||||
| DD5E | DJNZ $DD5B | |||||||||||||||
| DD60 | DEC C | Have we done all 3 lines at the bottom of the screen? | ||||||||||||||
| DD61 | JR NZ,$DD44 | Jump back to do the next line if not | ||||||||||||||
| DD63 | RET | |||||||||||||||
| Prev: DB00 | Up: Map |