Routines |
Prev: 57888 | Up: Map | Next: 57990 |
57947 | LD A,14 | Playing area is 14 character rows high | ||
57949 | LD (60103),A | |||
57952 | LD DE,16450 | Screen display address for top left of playing area | ||
Clear a character row (8 pixels) of the playing area:
|
||||
57955 | LD C,8 | 8 pixel rows | ||
57957 | LD H,D | Copy screen display address from DE to HL | ||
57958 | LD L,E | |||
57959 | LD B,28 | 28 character rows to clear | ||
57961 | LD (HL),0 | Clear pixel byte | ||
57963 | INC L | Move on character square right | ||
57964 | DJNZ 57961 | Repeat for 28 character rows | ||
57966 | INC H | Move down 1 pixel | ||
57967 | DEC C | |||
57968 | JR NZ,57958 | Repeat for 8 pixel rows | ||
Move down to next (character) row:
|
||||
57970 | LD A,E | Get starting left hand position | ||
57971 | ADD A,32 | Move down to next character square | ||
57973 | LD E,A | Are we crossing a third-of-screen boundary? | ||
57974 | JR NC,57980 | |||
57976 | LD A,D | If so, recalculate screen display high-byte accordingly | ||
57977 | ADD A,8 | |||
57979 | LD D,A | Store corrected screen address high byte back in D register | ||
Check if all character rows have been cleared:
|
||||
57980 | LD A,(60103) | Get character row counter | ||
57983 | DEC A | ...and decrement | ||
57984 | LD (60103),A | |||
57987 | JR NZ,57955 | Repeat for all 14 character squares of playing area | ||
57989 | RET |
Prev: 57888 | Up: Map | Next: 57990 |