acme/ACME_Lib/cbm/c64/georam.a

34 lines
1.5 KiB
Plaintext

;ACME 0.94.4
!ifdef lib_cbm_c64_georam_a !eof
lib_cbm_c64_georam_a = 1
; This file contains definitions for accessing the "GeoRAM" RAM expansion and
; its clones (BBG, BBU, NeoRAM, ...)
; These units allow access to a single page of memory (256 bytes) visible at
; address $de00 in i/o space. Writing to registers allows to change which
; memory page is visible at that location.
; memory page
georam_page = $de00
; control registers (write-only, these registers can not be read)
georam_track = $dffe ; 0..63, i.e. the lower six bits are significant
georam_sector = $dfff ; 0..31, i.e. the lower five bits are significant
; these are the official addresses - actually the registers are accessible
; *everywhere* at $dfxx, but using these locations does not clash with the
; registers of a Commodore REU.
; Upgraded units and clones may have more memory, in those cases the registers
; will have more significant bits.
; I could have called the registers "row" and "column" instead of track and
; sector, but the fact that this device was designed with one six-bit register
; and one five-bit register (instead of one eight-bit register and one
; three-bit register) tells me that this was meant as an easily programmable
; RAM disk: A 1541 disk has 35 tracks with (at most) 21 sectors. Numbers in
; these ranges can be written to the GeoRAM registers without the need to
; shift bits around.
; Knowing this is a handy way of remembering the number of significant bits of
; GeoRAM registers.