wersja 1.0 Mapa pamięci C64+ (Memory expansion bassed on internal 256 kB memory expansion published in MikroBITTI, version called 1795 done by Kenjiro/3lux in 1995, see old prototype foto assebled with 2x44256!, optional software: http://www.zimmers.net/anonftp/pub/cbm/documents/projects/memory/c64/index.html) Rozszerzenie do 2MB. Bank0 $0000 - $3FFFF; Bank1 $4000 - $7FFFF; Bank3 $8000 - $BFFFF; Bank4 $C000 - $FFFFF; Po restarcie ustawienie banków wynosi CDEF; Przykładowo ustwiajając wartość na CCCC w adresach 0000-00ff, 4000-40ff, 8000-80ff, c000-c0ff jest strona zerowa. Możliwych kombinacji ustawień jednego banku jest 128 co przy wielkości banku 16KB daje przestrzeń adresową 2MB, widzianą przez vic i cpu. Wszystkie adresy rejestrów rozszerzenia w normalnej konfiguracji znajdują się w obszarze adresowym CIA1 czyli $DC00 - DCFF; W obszarze $DC00 - DC3F znajdują sie adresy 6526 (CIA1) DC80-DC9F - rejestry 1Fx IDE DCA0-DCBf - rejestry 3Fx IDE Odczyt 16BIT: LDA $DC80 * STA LOBYTE LDA $DC81 STA HIBYTE ZAPIS 16BIT LDA HIBYTE STA $DC81 LDA LOBYTE STA $DC80 * Rejestr $DC80 jest 16 bitowy (*-fizyczny odczyt/zapis wartości 16-bitowej) , pozostałe rejestry są 8-bitowe. ------------------------------------------------------------------- DCC0-DCE0 - rejestry rozszerzenia W celu zachowania zgodności z softem datowanym na 10-20 lat wstecz, adresy rozszerzenia emulują "troche" 6821. DCC0 - rejestr Bank 0 i 1 (ustawienie po resecie $DC) DCC1 - rejestr Bank 0 i 1 ($00) (BITY (0-1) Bank0 HI ($00); BIT 2- zezwolenie zapisu wartości $DCC0 (0-blokada);BIT (3) wystawienie $1000 pod DF00, używane do szybkiego getbyte, putbyte i do fixowania adresu VIC'a (uwaga na cartridge !); Bit4-bit6 Bank1 HI) Przestrzeń adresowa max Bank0 4+2x16kB=1MB Przestrzeń adresowa max Bank1 4+3x16kB=2MB DCC2 - rejestr Bank 2 i Bank3 LO ($FE) DCC3 -rejestr Bank 2 i 3 HI ($00) (BIT 0-1 Bank2; BIT2 -zezwolenie zapisu wartości $DCC2 (0-blokada),BIT 3 Bank2, BIT 4-6 Bank3) Pozostałe bity powinny być ustawiane na zero i traktowane jako zarezerwowane. Typowe ustawienie rejestrów: LDA #$04 STA $dcC1 Sta $dcC3 lda #$DC sta $DCC0 lda #$FE STA $DCC2 Zapis do BANK 0 (LO i HI) powoduje zmianę banku F-ROM (16KBx5bit=512KB max, po resecie: %01101) ------------------------------------------------------------------------------------------- Obszar $dc40 - $dc7F FLashROM: Adres $DC40- - DC41 TRYB FLASH (zworki w pozycji flash) DC40 - LO adres flash DC41 - BIT 0-2 Hi adres flash 3-6 nieużywane 7 - zezwolenie na zapis/odczyt z adresu $DF00-$DFFF DF00-DFFF - zawartość flesh'a po zezwoleniu zapis/odczyt. ------------------------------------------------------ TRYB PRACY NORMAL: DC40 - lo byte PWM - jeżeli SWAP = '0'; hi byte PWM - jeżeli SWAP = '1'; DC41 - 0-3 hi nibble PWM, jeżeli SWAP = '0' 0-3 lo nibble PWM, jeżeli SWAP = '1' BIT 7 - przyśpieszenie ca. +28,5% (1,266MHz) (1-ON po resecie 0) pomysł z artykułu Spider/APD www.filety.pl/sprzęt/przełącznik1.4MHz. BIT 6 - PCM signed/unsigned (wykonuje XOR MSB w zależności od wartości SWAP); BIT 5 - swap , zamiana bitów (DC40 HI byte, DC41 LO nibble), ---------------------------------- 16PCM lda pcm16lo lsr a lsr a lsr a lsr a ora #%01100000 ; SWAP=1, value signed. sta $dc41 lda pcm16hi sta $dc40 ----------------------------------- 12PCM - 2 value player lda pcm12lo1 sta $dc40 ; LSB lda pcm12hi and #$0f ; unsigned 12bit sta $dc41 ; hi nibble lda pcm12hi lsr a lsr a lsr a lsr a ora #%00100000 ; unsigned 12bit swap=1 sta $dc41 ; lo nibble lda pcm12hi2 sta $dc40 ; MSB ------------------------------------ 8PCM lda #%01100000 ; 0-3 możemy używać do dihteringu sta $dc41 ; ustawiamy tylko raz lda pcm8 ; MSB sta $dc40 --------------------------------------------------------------------------------- DC60 - DC7F - Obszar sterowania MSP430 (underconstruction) DC60 in/out register, DC81 output only register z handshake DC62 Status register B7 - handshake read only, B6 - kierunek in/out (0 - in) B0 - komenda/dane (0 - command) ------------------------------------------------------------------------------------------- 5.05.08 by Kisiel/ICON