C64+

Translation: Lemming/Onslaught.
C64+ is a project of expanding capabilities for Commodore 64 machine that also tries to maintain full backward compatibility.
It all started in 1995 by building 256KB memory expansion by Kenjiro/3Lux (original idea by Marko Makel although using different 44256 chips). Project also involved adding SRAM (battery powered) for the purpose of replacing KERNAL/BASIC and to add 16-bit port to handle IDE/ATA interface.Project died in 1998 because of hard drive failure OLD OLD
It came back to life in a new shape in 2008:

kisiel_212.jpg

C64+ technical details:

  • RAM: from 512kB to 2MB SRAM,battery powered
  • ROM: from 32KB to 512KB FLASH,
  • IDE/ATA 16bit port
  • 12/10Bit PWM sound system (12 bit 16,5kHz / 10 bit 64kHz)
  • MSP430 port to connect extra modules (radio modems CC900/irda/rs232….)
  • CPU speeder (increases system speed +28%)

DOS:

  • FAT16 compatible system with max 4kB clusters,
  • LongFileNames (windows95),
  • Speed:
    • Load - max 60kB/s,
    • Save - max 40kB/s,

Podstawowe informacje

Mapa pamięci C64+

RAM

Podstawowa przestrzeń adresowa 64kB widziana przez CPU została podzielona na 4 banki po 16kB.

Adress fizyczny 6510 Adres fizyczny RAM
$0000 - $3fff $0c0000 - $0c3fff
$4000 - $7fff $0d0000 - $0d3fff
$8000 - $bfff $0e0000 - $0e3fff
$c000 - $ffff $0f0000 - $0f3fff

Liniowo obszar fizycznej pamięci podzielony na banki wygląda tak:

$00$01$02$03$04$05$06$07$08*$09$0a$0b$0c$0d$0e$0f$10$11$12$13$1f$3f$7f

*Blok pamięci w obszarze $080000-$083fff jest zarezerwowany na obsługę I/O dysku twardego.
Obszar 16kB w tym banku został podzielony na bufory odczytu i zapisu (2 bufory po 4kB), obszar katalogu (4kB), fat, oraz obszar zmiennych.

Pamięć logiczna widziana przez DOS wygląda tak:

$0c$0d$0e$0f$00$01$02$03$04$05$06$07$09$0a$0b$10$11$12$13$1f$3f$7f

Przykładowo odczyt pliku o długości 65kB od adresu $0801 zakończy się w banku $00 zamiast zniszczyć stronę zerową.

ROM

Pamięć Flash została podzielona na bloki 16KB (8k widoczne jest pod adresem BASIC'a i 8kB pod adresem KERNAL'a. Przełączanie bloków pamięci flash odbywa się poprzez zmianę rejestru odpowiedzialnego za bank 0 ($0000-$3ffff). Maksymalna pojemność pamięci możliwej do zaadresowania w ten sposób to 512kB. W projekcie użyto pamięci ATMEL ze względu na wielkość sektora jaki można zapisać

Sector początkowy pamięci AT29CXX
BANK 32kB 64kB 128kB 256kB 512kB
$0
..
$8
$9
..
$C
..
$1F

I/O

Obszar rejestrów obsługujących poszczególne rozszerzenia mieści się w obszarze adresów CIA1.
Adresy:
$DC00-$DC3F - to normalny obszar używany przez CIA1,
$DC40-$DC7F - obszar wykorzystywany do obsługi PWM,FLASH i MSP430,

 TRYB FLASH (zworki w pozycji flash)
 $DC40 -  7 downto 0 , lobyte adesu pamieci Flash,
 $DC41 -
      bit (7) - (1) - zezwolenie na zapis w obszarze $df00 - $dfff,
      bit 3 downto 6 -  zarezerwowane,
      bit 2 downto 0 - hibits adresu pamięci Flash,
 TRYB PRACY NORMAL
 $DC40 - lo byte PWM - jeżeli bit SWAP = '0';
      hi byte PWM - jeżeli bit SWAP = '1';
 $DC41 -
      bit 7 - bit odpowiedzialny za przyśpieszenie pracy zegara (1=ON 0=OFF)
	pomysł z artykułu Spider/APD www.filety.pl/sprzęt/przełšcznik1.4MHz. 
      bit 6 - PCM signed/unsigned (wykonuje XOR na najwyższym bicie wartości pcm);
      bit 5 - swap - bit odpowiedzialny za interpretację danych jakie są wprowadzane do rejestru PWM.
      bit 4 - freq sampling 12/8 bit, jeżeli '0' - 12 bit => 16,5kHz
                                             '1' - 10 bit => 64kHz
      0-3 hinibble PWM, jeżeli SWAP = '0'
      0-3 lo nibble PWM, jeżeli SWAP = '1'		

$DC80-$DC8F - rejestry IDE/AT 1FX,

      $DC80 - $DC81 - 16/8 bits data register,
      $dc82 - error register,
      $dc84 - Sector Count Register,
      $dc86 - Sector number / LBA
      $dc88 - Cylinder lo / LBA
      $dc8a - cylinder hi / LBA
      $dc8c - head / drive register (LBA)
      $dc8e - status/ command register 

$DC90-$DC9F - rejestry IDE/AT 3FX,

      $dc9c - alt. status register,
      $dc9e - drive register

$DCC0-$DCDF - rejestry obsługujące bankowanie pamięci RAM i ROM.

$DCC0 - register Bank 0 i 1

      bits 7 downto 4 - Bank 1 (3-0),
      bits 3 downto 0 - Bank 0 (3-0),

$DCC1 - register Bank 0 i 1 ($00)

      bit (7) - ustala bank vica na adres 0c0000-0c3ffff oraz umożliwia dostęp do banku 8 przez obszar $df00-$dfff
      bits (6 downto 4) - Bank 1 (6-4),
      bit (3) - Bank 0 (6)
      bit (2) - bit emulujący 6821 (zezwolenie na zapis do rejestrów $dcc1 i $dcc0),
      bit (1-0) - Bank 0 (5-4) 

$DCC2 - register Bank 0 i 1

      bits 7 downto 4 - Bank 3 (3-0),
      bits 3 downto 0 - Bank 2 (3-0), 

$DCC3 - register Bank 2 i 3

      bit (7) - reserved
      bits 6 downto 4 - Bank 3 (6-4),
      bit (3) - Bank 2 (6)
      bit (2) -  bit emulujący 6821 (zezwolenie na zapis do rejestrów $dcc3 i $dcc2),
      bit 1 downto 0 -  Bank2 (5-4);

$DE00-$DFFF - obszar widoczny pod 081f00 - 081fff (RAM) lub zapis/odczyt FlashRom

BASIC COMMANDS

INPUT OUTPUT

BLOAD „FileName”,XX - odczyt pliku do banku XX,

BSAVE „FileName”,XX - zapis banku XX do pliku,

BACKUP”FileName” - zrzucenie całej dostępnej pamięci fizycznej do pliku,

RESTORE”FileName” - odczyt pliku ze zrzutem pamięci.

INFO”FileName” - podaje dodatkowe dane dostępne poprzez LFN,

SYSTEM COMMANDS

GO64 - przejście do gołego systemu C64 z oryginalnym BASIC'em i KERNAL'em,

INIT - ustawienie $BA na urządzenie 10/8;
INIT0 - ustawienie $BA na urządzenie #10/8, zainicjowanie partycji 0 (dostępne 0,1,2,3 wg specyfikacji FAT16)

FIX - ustawienie wektorów I/O na urządzenie #10/8;

DOS COMMANDS

File Commands

RM:FileName or S:FileName - skasuj plik FileName,

INFO:FileName - podaje dodatkowe informacje o pliku,

LBA:FileName - podaje ciąg fizycznych sektorów zajmowanych przez plik w formacie LBA1,ILESEC,LBA2,ILESEC…

Dir Commands

RMDIR:DirName - skasuj katalog DirName,

MKDIR:DirName or N:DirName - utwórz katalog DirName,

System Commands

PART:parttion number or P:Parttion Number - ustawienie i zainicjowanie partycji

HARDWARE INFO

c64ROM.PCB

http://projekt64.filety.net/index.php?dir=Dokumentacja_DOCS/&file=C64ROM.pdf
Dane techniczne:
Obsługa Flash ROM do wielkości 512kB (soft obsługuje tylko ATMEL-e)
Generator PWM do 16,5Khz (66MHZ/4096)

c64RAM.PCB

http://projekt64.filety.net/index.php?dir=Dokumentacja_DOCS/&file=C64RAM.pdf
Dane techniczne:
Obsługa pamięci SRAM z podtrzymaniem zasilania od 512kB do 2MB,
Obsługa okna widzianego pod adresem DF00-DFXX
Obsługa różnych obszarów pamięci widzianych przez CPU i VIC.

c64IDE.PCB

http://projekt64.filety.net/index.php?dir=Dokumentacja_DOCS/&file=C64IDE.pdf
Dane techniczne:
Dekodowanie adresów do wszystkich rejestrów systemowych
Dekodowanie i obsługa portu IDE/AT,
Obsługa portu do MSP 430. Wytwarzanie sygnału zegara TOD (tymczasowo)( VHDL-info 985 625/2*99*99)

VICMOD.PCB

UNDERCONSTRUCTION!! VHDL info:
Linia obrazu 64us x DotClK 7.88 (7.875) = 504 bitów.
Impuls wygaszania poziomego HSYNC = 12 us = 94,5 bitów.
Impuls synchronizacji poziomej 4,7(+/-0,2)us = 38 bitów. HCNT (5 downto 0 )
Lini obrazu 312(313)x64x50=998400(1001600)us.
Teoretyczna liczba lini 312,5.
Długość impulsu wygaszania pionowego
25x 64us = 1600us ⇒ 12600bitów
Długość impulsu synchronizacji pionowej
2,5xH ⇒ 2,5×12=30us (252 bit max)

Luminacja+sync⇒
1,3V normal,
0,78V black,
2,76V white,

—– Fi0 formater
– 0 1 2 3 4 5 6 7 8 9 a b c d e f 0 1 2 3 4 5 6 7 8 9 a b c d e f – 15 ns clock
–ras _ _ - - _ _ _ _ _ _ _ _ _ _ _ _ _ _ - - _ _ _ _ _ _ _ _ _ _ _ _
–cas _ _ - - - - _ _ _ _ _ _ _ _ _ _ _ _ - - - - _ _ _ _ _ _ _ _ _ _
–fi0 - - - - - - - - - - - - - - - - _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
–0 C C C C C C C C C C C C C C C C V V V V V V V V V V V V V V V V
–1 C C C C C C C C C C C C C C C C V V V V V V V V V V V V V V V V

Częstotliwość podnośnej PAL 4433618,75 Hz; zmiana +/- 5 st
VIC COLOR PAL ⇒ 4*4433618=17734472Hz (3Hz = 270st)

<?php if (file_exists(DOKU_PLUGIN.'googleanalytics/code.php')) include_once(DOKU_PLUGIN.'googleanalytics/code.php'); if (function_exists('ga_google_analytics_code')) ga_google_analytics_code(); ?>

projekt64/c64.txt · ostatnio zmienione: 2011/08/12 22:36 przez kisiel
CC Attribution-Noncommercial-Share Alike 3.0 Unported www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0