more work on RAMTAS routine based on Compute's Mapping the 64
This commit is contained in:
1 parent
313b945bac
commit
4718a33d5a
2 files changed
+46
-3
No files matched your search
+33
-1
@@ -1,7 +1,6 @@
|
||||
; Function defined on pp272-273 of C64 Programmers Reference Guide
|
||||
ramtas:
|
||||
; C64 Programmer's Reference guide p291:
|
||||
|
||||
; Clear $0000-$0101, $0200-$03ff
|
||||
; PGS: $0000, $0001 are CPU IO ports, so shouldn't get written to
|
||||
LDY #$02
|
||||
@@ -17,6 +16,11 @@ ramtas_l2:
|
||||
BNE ramtas_l2
|
||||
|
||||
; allocate cassette buffer
|
||||
;; "Mapping the C128", p61
|
||||
lda #<$033C
|
||||
STA cassette_buffer_ptr+0
|
||||
lda #>$033C
|
||||
STA cassette_buffer_ptr+1
|
||||
|
||||
; set screen address to $0400
|
||||
; https://www.c64-wiki.com/wiki/Screen_RAM
|
||||
@@ -34,5 +38,33 @@ ramtas_l2:
|
||||
LDA $DD00
|
||||
ORA #$03
|
||||
STA $DD00
|
||||
|
||||
;; Set screen address pointer ("Compute's Mapping the 64" p238)
|
||||
LDA #>$0400
|
||||
STA HIBASE
|
||||
|
||||
;; Work out RAM size and put in MEMSTR and MEMSIZ
|
||||
;; "Compute's Mapping the 64", p54
|
||||
lda #$00
|
||||
sta MEMSTR+0
|
||||
sta MEMSIZ+0
|
||||
;; Try to modify $8000, if it fails then RAM ends at $7FFF, else $9FFF
|
||||
lda $8000
|
||||
eor #$FF
|
||||
tax
|
||||
eor #$FF
|
||||
stx $8000
|
||||
cmp $8000
|
||||
bne ramtas_32K_RAM
|
||||
sta $8000
|
||||
lda #$A0
|
||||
sta MEMSIZ+1
|
||||
jmp ramtas_RAM_sized
|
||||
ramtas_32K_RAM:
|
||||
sta $8000 ; in case RAM is hiding beneath a ROM
|
||||
lda #$80
|
||||
sta MEMSIZ+1
|
||||
;; Fall through
|
||||
ramtas_RAM_sized:
|
||||
|
||||
rts
|
||||
Reference in new issue
Block a user