tested cursor homing, started work on PNT recalculation
This commit is contained in:
1 parent
0df88248a3
commit
ca3b678578
8 files changed
+88
-74
No files matched your search
@@ -236,7 +236,8 @@ Not all of them - only these we want to have implemented.
|
|||||||
| `$E51B` | init screen keyboard, no VIC | DONE | |
|
| `$E51B` | init screen keyboard, no VIC | DONE | |
|
||||||
| `$E544` | clear screen | DONE | |
|
| `$E544` | clear screen | DONE | |
|
||||||
| `$E50C` | set cursor position | PARTIAL | |
|
| `$E50C` | set cursor position | PARTIAL | |
|
||||||
| `$E566` | home cursor | NOT DONE | |
|
| `$E566` | home cursor | DONE | |
|
||||||
|
| `$E56C` | set PNTR value | | |
|
||||||
| `$E5A0` | setup VIC II & I/O | DONE | |
|
| `$E5A0` | setup VIC II & I/O | DONE | |
|
||||||
| `$E6B6` | advance cursor | NOT DONE | |
|
| `$E6B6` | advance cursor | NOT DONE | |
|
||||||
| `$E701` | previous line | NOT DONE | |
|
| `$E701` | previous line | NOT DONE | |
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
|
|
||||||
// XXX provide documentation and implementation
|
|
||||||
|
|
||||||
STUB_IMPLEMENTATION()
|
|
||||||
@@ -1,6 +1,9 @@
|
|||||||
|
|
||||||
// Clear screen and initialise line link table
|
//
|
||||||
// (Compute's Mapping the 64 p215-216)
|
// Clear screen and initialise line link table, described in:
|
||||||
|
//
|
||||||
|
// - [CM64] Computes Mapping the Commodore 64 - pages 215-216
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
clear_screen:
|
clear_screen:
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
|
||||||
|
//
|
||||||
|
// Home the cursor, described in:
|
||||||
|
//
|
||||||
|
// - [CM64] Computes Mapping the Commodore 64 - page 216
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
cursor_home:
|
||||||
|
|
||||||
|
lda #$00
|
||||||
|
sta PNTR // current column
|
||||||
|
sta TBLX // current row
|
||||||
|
|
||||||
|
// FALLTROUGH to the next routine
|
||||||
File renamed without changes.
@@ -0,0 +1,4 @@
|
|||||||
|
|
||||||
|
This is a well-known address, probably used by lots of software. See for example here:
|
||||||
|
|
||||||
|
- https://www.lemon64.com/forum/viewtopic.php?t=69526&sid=836d087e9759db667ba3bb1732eea266
|
||||||
@@ -1,7 +1,16 @@
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Home the cursor (Compute's Mapping the 64 p216)
|
// Set pointer (PNT) to current screen line , described in:
|
||||||
//
|
//
|
||||||
|
// - [CM64] Computes Mapping the Commodore 64 - page 216
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
screen_calculate_PNT:
|
||||||
|
|
||||||
|
// YYY implement this!
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
// Variables: (http://sta.c64.org/cbm64mem.html)
|
// Variables: (http://sta.c64.org/cbm64mem.html)
|
||||||
// - $C7 - RVS - reverse mode switch
|
// - $C7 - RVS - reverse mode switch
|
||||||
@@ -25,16 +34,59 @@
|
|||||||
// - $02A5 - TLNIDX - number of line currently being scrolled during scrolling the screen
|
// - $02A5 - TLNIDX - number of line currently being scrolled during scrolling the screen
|
||||||
|
|
||||||
|
|
||||||
cursor_home:
|
|
||||||
jmp cursor_home
|
|
||||||
|
|
||||||
|
|
||||||
/* YYY disabled for rework
|
/* YYY disabled for rework
|
||||||
cursor_home:
|
|
||||||
|
|
||||||
lda #$00
|
screen_calculate_line_pointer:
|
||||||
sta PNTR // x position
|
jsr screen_normalize_xy
|
||||||
sta TBLX // y position
|
|
||||||
|
// Reset pointer to start of screen
|
||||||
|
lda HIBASE
|
||||||
|
sta PNT+1
|
||||||
|
lda #0
|
||||||
|
sta PNT+0
|
||||||
|
|
||||||
jmp screen_calculate_line_pointer
|
// Add 40 for every line, or 80 if the lines are linked
|
||||||
|
ldx TBLX
|
||||||
|
|
||||||
|
!:
|
||||||
|
// Stop if we have counted enough lines
|
||||||
|
beq !+
|
||||||
|
|
||||||
|
// Add 40 or 80 based on whether the line is linked
|
||||||
|
// or not.
|
||||||
|
ldy #40
|
||||||
|
// -1 offset is because we count down from N to 1, not
|
||||||
|
// N-1 to 0.
|
||||||
|
lda LDTBL-1,x
|
||||||
|
bpl sclp_l1
|
||||||
|
ldy #80
|
||||||
|
sclp_l1:
|
||||||
|
// Add computed line length to pointer value
|
||||||
|
tya
|
||||||
|
clc
|
||||||
|
adc PNT+0
|
||||||
|
sta PNT+0
|
||||||
|
lda PNT+1
|
||||||
|
adc #0
|
||||||
|
sta PNT+1
|
||||||
|
|
||||||
|
// Loop back to next line
|
||||||
|
dex
|
||||||
|
jmp !-
|
||||||
|
!:
|
||||||
|
|
||||||
|
// FALLTHROUGH
|
||||||
|
|
||||||
|
update_colour_line_pointer:
|
||||||
|
// Now setup pointer to colour RAM
|
||||||
|
lda PNT+0
|
||||||
|
sta USER+0
|
||||||
|
lda PNT+1
|
||||||
|
sec
|
||||||
|
sbc HIBASE
|
||||||
|
clc
|
||||||
|
adc #>$d800
|
||||||
|
sta USER+1
|
||||||
|
|
||||||
|
rts
|
||||||
*/
|
*/
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
|
|
||||||
/* YYY disabled for rework
|
|
||||||
|
|
||||||
screen_calculate_line_pointer:
|
|
||||||
jsr screen_normalize_xy
|
|
||||||
|
|
||||||
// Reset pointer to start of screen
|
|
||||||
lda HIBASE
|
|
||||||
sta PNT+1
|
|
||||||
lda #0
|
|
||||||
sta PNT+0
|
|
||||||
|
|
||||||
// Add 40 for every line, or 80 if the lines are linked
|
|
||||||
ldx TBLX
|
|
||||||
|
|
||||||
!:
|
|
||||||
// Stop if we have counted enough lines
|
|
||||||
beq !+
|
|
||||||
|
|
||||||
// Add 40 or 80 based on whether the line is linked
|
|
||||||
// or not.
|
|
||||||
ldy #40
|
|
||||||
// -1 offset is because we count down from N to 1, not
|
|
||||||
// N-1 to 0.
|
|
||||||
lda LDTBL-1,x
|
|
||||||
bpl sclp_l1
|
|
||||||
ldy #80
|
|
||||||
sclp_l1:
|
|
||||||
// Add computed line length to pointer value
|
|
||||||
tya
|
|
||||||
clc
|
|
||||||
adc PNT+0
|
|
||||||
sta PNT+0
|
|
||||||
lda PNT+1
|
|
||||||
adc #0
|
|
||||||
sta PNT+1
|
|
||||||
|
|
||||||
// Loop back to next line
|
|
||||||
dex
|
|
||||||
jmp !-
|
|
||||||
!:
|
|
||||||
|
|
||||||
// FALLTHROUGH
|
|
||||||
|
|
||||||
update_colour_line_pointer:
|
|
||||||
// Now setup pointer to colour RAM
|
|
||||||
lda PNT+0
|
|
||||||
sta USER+0
|
|
||||||
lda PNT+1
|
|
||||||
sec
|
|
||||||
sbc HIBASE
|
|
||||||
clc
|
|
||||||
adc #>$d800
|
|
||||||
sta USER+1
|
|
||||||
|
|
||||||
rts
|
|
||||||
*/
|
|
||||||
Reference in new issue
Block a user