more startup initialization fixes
This commit is contained in:
1 parent
bb9450b221
commit
455ca2ee56
12 files changed
+22
-22
No files matched your search
@@ -98,10 +98,10 @@ NOTE: Even the 'DONE' routines won't support features described as missing in on
|
|||||||
|
|
||||||
| Address | Unofficial | Name | Status | Remarks |
|
| Address | Unofficial | Name | Status | Remarks |
|
||||||
| :-------: | :--------: | :---------- | :------: | :--------------------------------------------------: |
|
| :-------: | :--------: | :---------- | :------: | :--------------------------------------------------: |
|
||||||
| `($028F)` | | `KEYLOG` | DONE | works differently on purpose, to improve kb scanning |
|
| `($028F)` | | `KEYLOG` | DONE | |
|
||||||
| `$FF81` | `$FF5B` | `CINT` | DONE | |
|
| `$FF81` | `$FF5B` | `CINT` | PARTIAL | probably incomplete, to be checked |
|
||||||
| `$FF84` | `$FDA3` | `IOINIT` | PARTIAL | CIA initialization incomplete |
|
| `$FF84` | `$FDA3` | `IOINIT` | PARTIAL | CIA initialization incomplete |
|
||||||
| `$FF87` | `$FD50` | `RAMTAS` | DONE | |
|
| `$FF87` | `$FD50` | `RAMTAS` | PARTIAL | probably shouldn't touch VIC and CIA's |
|
||||||
| `$FF8A` | `$FD15` | `RESTOR` | DONE | |
|
| `$FF8A` | `$FD15` | `RESTOR` | DONE | |
|
||||||
| `$FF8D` | `$FD1A` | `VECTOR` | DONE | |
|
| `$FF8D` | `$FD1A` | `VECTOR` | DONE | |
|
||||||
| `$FF90` | | `SETMSG` | DONE | |
|
| `$FF90` | | `SETMSG` | DONE | |
|
||||||
@@ -156,7 +156,7 @@ Not all of them - only these we want to have implemented.
|
|||||||
| :-------: | :------------------ | :------: | :------------------------------------------------: |
|
| :-------: | :------------------ | :------: | :------------------------------------------------: |
|
||||||
| `$E544` | clear screen | DONE | |
|
| `$E544` | clear screen | DONE | |
|
||||||
| `$E50C` | set cursor position | PARTIAL | |
|
| `$E50C` | set cursor position | PARTIAL | |
|
||||||
| `$E5A0` | setup VIC II & IO | PARTIAL | |
|
| `$E5A0` | setup VIC II & IO | DONE | |
|
||||||
| `$EA31` | default IRQ | PARTIAL | |
|
| `$EA31` | default IRQ | PARTIAL | |
|
||||||
| `$EA7E` | ack CIA1 + below | DONE | |
|
| `$EA7E` | ack CIA1 + below | DONE | |
|
||||||
| `$EA81` | ret from IRQ/NMI | DONE | |
|
| `$EA81` | ret from IRQ/NMI | DONE | |
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -130,7 +130,6 @@
|
|||||||
#if CONFIG_CPU_WDC_65C02 || CONFIG_CPU_CSG_65CE02 || CONFIG_CPU_WDC_65816
|
#if CONFIG_CPU_WDC_65C02 || CONFIG_CPU_CSG_65CE02 || CONFIG_CPU_WDC_65816
|
||||||
|
|
||||||
#define HAS_BCD_SAFE_INTERRUPTS
|
#define HAS_BCD_SAFE_INTERRUPTS
|
||||||
#define HAS_BCD_SAFE_RESET
|
|
||||||
|
|
||||||
.pseudocommand phx { .byte $DA }
|
.pseudocommand phx { .byte $DA }
|
||||||
.pseudocommand phy { .byte $5A }
|
.pseudocommand phy { .byte $5A }
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ clrchn_real:
|
|||||||
// Handle IEC output device
|
// Handle IEC output device
|
||||||
jsr UNLSN
|
jsr UNLSN
|
||||||
!:
|
!:
|
||||||
clrchn_reset: // entry needed by CHRIN
|
clrchn_reset: // entry needed by setup_vicii
|
||||||
// Set input device number to keyboard
|
// Set input device number to keyboard
|
||||||
lda #$00
|
lda #$00
|
||||||
sta DFLTN
|
sta DFLTN
|
||||||
|
|||||||
@@ -115,8 +115,5 @@ cint_brk: // entry for BRK and STOP+RESTORE - XXX, where should it start?
|
|||||||
ldx #$00
|
ldx #$00
|
||||||
stx MODE
|
stx MODE
|
||||||
|
|
||||||
// Set default I/O devices (see SCINIT description at http://sta.c64.org/cbm64krnfunc.html)
|
|
||||||
jsr clrchn_reset
|
|
||||||
|
|
||||||
// Fallthrough/jump to screen clear routine (Compute's Mapping the 64 p215)
|
// Fallthrough/jump to screen clear routine (Compute's Mapping the 64 p215)
|
||||||
jmp clear_screen
|
jmp clear_screen
|
||||||
@@ -1,4 +1,11 @@
|
|||||||
|
|
||||||
|
//
|
||||||
|
// Well-known Kernal routine, described in:
|
||||||
|
//
|
||||||
|
// - [CM64] Compute's Mapping the Commodore 64 - page 215
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
setup_vicii:
|
setup_vicii:
|
||||||
|
|
||||||
// XXX it should also set default devices
|
// XXX it should also set default devices
|
||||||
@@ -21,12 +28,12 @@ setup_vicii:
|
|||||||
|
|
||||||
stx VIC_CLKRATE
|
stx VIC_CLKRATE
|
||||||
|
|
||||||
// Set up default IO values - Compute's Mapping the 64
|
// Set up default IO values
|
||||||
// - page 129 - VIC_SCROLY
|
// - [CM64] page 129 - VIC_SCROLY
|
||||||
// - pages 140-144 - VIC_SCROLX
|
// - [CM64] pages 140-144 - VIC_SCROLX
|
||||||
// - pages 145-146 - VIC_YMCSB
|
// - [CM64] pages 145-146 - VIC_YMCSB
|
||||||
|
|
||||||
lda #$9B
|
lda #$1B // according to [CM64] page 137 some software assumes oldest bit is 0
|
||||||
sta VIC_SCROLY
|
sta VIC_SCROLY
|
||||||
lda #$C8
|
lda #$C8
|
||||||
sta VIC_SCROLX // 40 column etc
|
sta VIC_SCROLX // 40 column etc
|
||||||
@@ -35,14 +42,12 @@ setup_vicii:
|
|||||||
lda #$0F
|
lda #$0F
|
||||||
sta VIC_IRQ // clear all interrupts
|
sta VIC_IRQ // clear all interrupts
|
||||||
|
|
||||||
|
|
||||||
// XXX initialize $D012 (VIC_RASTER) - which values to use?
|
|
||||||
|
|
||||||
|
|
||||||
// We use a different colour scheme of white text on all blue
|
// We use a different colour scheme of white text on all blue
|
||||||
|
|
||||||
lda #$06
|
lda #$06
|
||||||
sta VIC_EXTCOL
|
sta VIC_EXTCOL
|
||||||
sta VIC_BGCOL0
|
sta VIC_BGCOL0
|
||||||
|
|
||||||
rts
|
// Setup default I/O devices
|
||||||
|
|
||||||
|
jmp clrchn_reset
|
||||||
@@ -6,9 +6,8 @@ hw_entry_reset:
|
|||||||
|
|
||||||
// The GPL program at https://github.com/Klaus2m5/6502_65C02_functional_tests/blob/master/6502_functional_test.a65
|
// The GPL program at https://github.com/Klaus2m5/6502_65C02_functional_tests/blob/master/6502_functional_test.a65
|
||||||
// uses the following initial reset sequence, affirmed by c64 PRG p269
|
// uses the following initial reset sequence, affirmed by c64 PRG p269
|
||||||
#if !HAS_BCD_SAFE_RESET
|
|
||||||
cld // for CPUs having undefined D flag after reset
|
cld // for CPUs might clear D flag - but it is possible this is called manually
|
||||||
#endif
|
|
||||||
ldx #$FF
|
ldx #$FF
|
||||||
txs
|
txs
|
||||||
sei
|
sei
|
||||||
|
|||||||
Reference in new issue
Block a user