The GeoRAM is a banked memory system. It uses the registers at $dffe and $dfff to determine what part of the GeoRAM memory should be mapped to $de00-$deff. The register at $dfff selects which 16k block to map, and $dffe selects a 256-byte page in that block. Since there are only 64 256-byte pages inside of 16k, the value in $dffe ranges from 0 to 63. The number of 16k blocks that is available depends on the size of the GeoRAM/BBGRam: 512k = 0- 31, $00-$1f 1024k = 0- 63, $00-$3f 2048k = 0-127, $00-$7f The two registers are write-only. Attempting to read them will only return random values. If you need to know the current values of the registers, you need to write a copy in normal RAM when you set them. To convert a basic 24-bit offset into the GeoRAM block/page format, you need to shift the two upper bits from the middle byte into the high byte: .byte temp .byte banklo,bankmd,bankhi lda bankmd sta temp and #%00111111 sta $dffe lda bankhi asl temp rol asl temp rol sta $dfff ldx banklo lda $de00,x -- White Flame (aka David Holz) http://fly.to/theflame .. .