// Clear screen and initialise line link table // (Compute's Mapping the 64 p215-216) clear_screen: // Clear line link table // (Compute's Mapping the 64 p215) lda #$00 ldy #24 clearscreen_l1: sta screen_line_link_table,y dey bpl clearscreen_l1 // Y now = #$FF // Clear screen RAM. // We should do this at HIBASE, which annoyingly // is no ZP, so we need to make a vector // (Compute's Mapping the 64 p216) // Get pointer to the screen into current_screen_line_ptr // as it is the first appropriate place for it found when // searching through the ZP allocations listed in // Compute's Mapping the 64 sta current_screen_line_ptr+0 lda HIBASE sta current_screen_line_ptr+1 ldx #$03 // countdown for pages to update iny // Y now = #$00 lda #$20 // space character clearscreen_l2: sta (current_screen_line_ptr),y iny bne clearscreen_l2 // To draw only 1000 bytes, add 250 to address each time lda current_screen_line_ptr clc adc #<250 sta current_screen_line_ptr lda current_screen_line_ptr+1 adc #>250 sta current_screen_line_ptr+1 lda #$20 // get space character again dex bpl clearscreen_l2 // Clear colour RAM // (Compute's Mapping the 64 p216) lda text_colour clearscreen_l3: sta $d800,y sta $d900,y sta $da00,y sta $db00-24,y // so we only erase 1000 bytes iny bne clearscreen_l3 // (Compute's Mapping the 64 p216) jmp home_cursor