Routines |
Prev: 77DB | Up: Map | Next: 7917 |
Used by the routine at TitleScreen.
|
|||||
|
|||||
DisplayTitleScreen | 784B | LD A,$02 | A=02. | ||
784D | CALL $1601 | Call CHAN_OPEN. | |||
7850 | LD A,$04 | Set the border to GREEN using BORDER. | |||
7852 | CALL $229B | ||||
7855 | SET 3,(IY+$01) | Set bit 3 of *FLAGS which sets keyboard mode "L". | |||
7859 | SET 3,(IY+$30) | Set bit 3 of *FLAGS2 which sets CAPS LOCK "on". | |||
Set the UDG graphics pointer.
|
|||||
785D | LD HL,$F3C9 | Write F3C9 (CustomFont) to *CHARS. | |||
7860 | LD ($5C36),HL | ||||
7863 | LD A,$27 | Write INK: WHITE, PAPER: GREEN to *ATTR_P. | |||
7865 | LD ($5C8D),A | ||||
7868 | LD A,$20 | Write INK: BLACK, PAPER: GREEN to *BORDCR. | |||
786A | LD ($5C48),A | ||||
786D | CALL $0DAF | Call CL_ALL. | |||
Draw three sections which are white on the left, and black on the right:
Set the point in the attribute buffer where the black sections will begin.
|
|||||
7870 | LD HL,$5821 | HL=5821 (attribute buffer location). | |||
7873 | LD B,$03 | Set a counter for the three sections to paint. | |||
TitleScreen_SectionLoop | 7875 | PUSH BC | Stash the section counter on the stack. | ||
7876 | LD C,$06 | In each section there are six rows, so set another counter for this. | |||
TitleScreen_RowLoop | 7878 | LD B,$1E | The entire length of each row is 1E character blocks. | ||
TitleScreen_Row | 787A | LD A,B | Is the current position 17 ... This is the split for white/ black. | ||
787B | CP $17 | ||||
787D | LD A,$78 | A=INK: BLACK, PAPER: WHITE (BRIGHT) . | |||
787F | JR NC,TitleScreen_Paint | Jump to TitleScreen_Paint if the current position was 17 on line TitleScreen_Row. | |||
7881 | LD A,$07 | A=INK: WHITE, PAPER: BLACK . | |||
TitleScreen_Paint | 7883 | LD (HL),A | Write the attribute byte to the pointer held in HL. | ||
7884 | INC HL | Increment the attribute buffer pointer by one. | |||
7885 | DJNZ TitleScreen_Row | Decrease the length counter by one and loop back to TitleScreen_Row until the counter is zero. | |||
7887 | INC HL | Increment the attribute buffer pointer by two, this moves to the start of the next row. | |||
7888 | INC HL | ||||
7889 | DEC C | Decrease the row counter by one and jump back to TitleScreen_RowLoop until all rows have been painted. | |||
788A | JR NZ,TitleScreen_RowLoop | ||||
This section is now completely painted so move onto the next one.
|
|||||
788C | LD DE,$0020 | Move to the next section. | |||
788F | ADD HL,DE | ||||
7890 | POP BC | Restore the section counter from the stack. | |||
7891 | DJNZ TitleScreen_SectionLoop | Decrease the section counter by one and loop back to TitleScreen_SectionLoop until all three sections have been painted. | |||
Now print the icons in each box:
|
|||||
7893 | LD DE,$7A4D | Set a pointer in DE where the icon graphics begin: Graphics_KeyboardIcon. | |||
Set up printing the keyboard icon.
|
|||||
7896 | LD HL,$4021 | HL=4021 (screen buffer location). | |||
7899 | LD BC,$0830 | BC=0830 (width/ length). | |||
789C | PUSH BC | Stash the width/ length on the stack. | |||
789D | CALL PrintGraphic | Call PrintGraphic. | |||
78A0 | POP BC | Restore the width/ length from the stack. | |||
78A1 | LD HL,$5821 | HL=5821 (attribute buffer location). | |||
78A4 | CALL WriteAttributeData | Call WriteAttributeData. | |||
Set up printing the joystick icon.
|
|||||
78A7 | LD HL,$4801 | HL=4801 (screen buffer location). | |||
78AA | LD BC,$0828 | BC=0828 (width/ length). | |||
78AD | CALL PrintGraphic | Call PrintGraphic. | |||
Set up printing the information icon.
|
|||||
78B0 | LD HL,$48E4 | HL=48E4 (screen buffer location). | |||
78B3 | LD BC,$0228 | BC=0228 (width/ length). | |||
78B6 | PUSH BC | Stash the width/ length on the stack. | |||
78B7 | CALL PrintGraphic | Call PrintGraphic. | |||
78BA | POP BC | Restore the width/ length from the stack. | |||
78BB | LD HL,$59E4 | HL=59E4 (attribute buffer location). | |||
78BE | CALL WriteAttributeData | Call WriteAttributeData. | |||
Now handle printing the text.
|
|||||
78C1 | LD DE,$7931 | DE=Messaging_TitleScreen. | |||
78C4 | LD BC,$00C7 | BC=00C7. | |||
78C7 | CALL $203C | Call PR_STRING. | |||
78CA | LD A,$01 | A=01. | |||
78CC | CALL $1601 | Call CHAN_OPEN. | |||
78CF | LD HL,$79F8 | HL=Messaging_FooterCopyright. | |||
78D2 | CALL $187D | Call OUT_LINE2. | |||
78D5 | LD A,$02 | A=02. | |||
78D7 | CALL $1601 | Call CHAN_OPEN. | |||
Lastly, print the current user-defined keys.
|
|||||
78DA | LD HL,$6F6D | HL=KeyboardKeymap. | |||
78DD | LD BC,$170B | BC=170B. | |||
PrintKeys_Loop | 78E0 | PUSH BC | Stash BC and HL on the stack. | ||
78E1 | PUSH HL | ||||
78E2 | CALL $0DE2 | Call 0DE2 (CL_SET). | |||
78E5 | LD A,$10 | Set INK: WHITE. | |||
78E7 | RST $10 | ||||
78E8 | LD A,$07 | ||||
78EA | RST $10 | ||||
78EB | LD A,$11 | Set PAPER: BLACK. | |||
78ED | RST $10 | ||||
78EE | XOR A | ||||
78EF | RST $10 | ||||
78F0 | POP HL | Restore HL from the stack. | |||
78F1 | PUSH HL | Stash HL on the stack. | |||
78F2 | LD A,(HL) | A=*HL. | |||
78F3 | CP $0D | Jump to PrintEnter if the key is "enter". | |||
78F5 | JR Z,PrintEnter | ||||
78F7 | CP $20 | Jump to PrintSpace if the key is an ASCII "space". | |||
78F9 | JR Z,PrintSpace | ||||
78FB | RST $10 | Print the key to the screen. | |||
PrintKeys_Next | 78FC | POP HL | Restore HL from the stack. | ||
78FD | INC HL | Increment HL by two. | |||
78FE | INC HL | ||||
78FF | POP BC | Restore BC from the stack. | |||
7900 | DEC B | Decrease B by one. | |||
7901 | LD A,B | Jump back to PrintKeys_Loop until B is equal to 12. | |||
7902 | CP $12 | ||||
7904 | JR NZ,PrintKeys_Loop | ||||
7906 | RET | Return. | |||
Prints the word "ENTER".
|
|||||
PrintEnter | 7907 | LD HL,$7A47 | HL=Messaging_Enter. | ||
790A | CALL $187D | Call OUT_LINE2. | |||
790D | JR PrintKeys_Next | Jump to PrintKeys_Next. | |||
Prints the word "SPACE".
|
|||||
PrintSpace | 790F | LD HL,$7A41 | HL=Messaging_Space. | ||
7912 | CALL $187D | Call OUT_LINE2. | |||
7915 | JR PrintKeys_Next | Jump to PrintKeys_Next. |
Prev: 77DB | Up: Map | Next: 7917 |