6502.org Forum  Projects  Code  Documents  Tools  Forum
It is currently Sat Apr 27, 2024 2:34 am

All times are UTC




Post new topic Reply to topic  [ 24 posts ]  Go to page 1, 2  Next
Author Message
PostPosted: Sun Jun 15, 2014 1:43 pm 
Offline

Joined: Fri Jan 17, 2014 6:39 pm
Posts: 47
Location: Poland
Hi all.
This expansion was developed by me for the Commodore C64.. The expansion is full compatible to software c64 . With this expansion you will get a 16 virtual c64 for your task .
Features:
1.This expansion divides the 1 MB of memory to sixteen blocks of 64 kB .
2.VIC (Video RAM) and CPU operated in this same time in one , or two 64 kB BANK RAM
3.Refreshes of RAM without additional cycles.
4. 0.5 kB RAM in I/O ($D600 - $D7FF) for program MMU
5. The block switcher in I/O $d500 :
b7..b4 - BANK for VIC acces
b3...b0 - BANK for CPU acces
6.each "virtual task" has a zero page and stack, and 64kB RAM.
I/O , and ROM ist one for all task.
http://obrazki.elektroda.pl/4533333100_1389612160.jpg
http://obrazki.elektroda.pl/5885549400_1389612161.jpg
http://obrazki.elektroda.pl/8445626600_1389612163.jpg
And in work :
https://www.youtube.com/watch?v=NKrjpoJ ... e=youtu.be


Top
 Profile  
Reply with quote  
PostPosted: Sun Jun 15, 2014 5:49 pm 
Offline
User avatar

Joined: Thu May 28, 2009 9:46 pm
Posts: 8144
Location: Midwestern USA
This seems suspiciously like the scheme developed by Paul Bosaki and described in the August 1989 issue of Transactor magazine.

_________________
x86?  We ain't got no x86.  We don't NEED no stinking x86!


Top
 Profile  
Reply with quote  
PostPosted: Sun Jun 15, 2014 8:00 pm 
Offline
User avatar

Joined: Fri Dec 11, 2009 3:50 pm
Posts: 3346
Location: Ontario, Canada
Welcome, grzeg, and congratulations on your project. :)

BigDumbDinosaur, it took me less than a minute to notice some clear differences between Bosaki's project and this one. The differences may be a variation in implementation -- or they may indicate a substantially different design. In either case I'll be glad to learn more, and make our new member feel at home here.

-- Jeff
Edit: add image


Attachments:
pin counts.gif
pin counts.gif [ 54.75 KiB | Viewed 1970 times ]

_________________
In 1988 my 65C02 got six new registers and 44 new full-speed instructions!
https://laughtonelectronics.com/Arcana/ ... mmary.html


Last edited by Dr Jefyll on Mon Jun 16, 2014 9:25 pm, edited 1 time in total.
Top
 Profile  
Reply with quote  
PostPosted: Sun Jun 15, 2014 8:23 pm 
Offline
User avatar

Joined: Thu Dec 11, 2008 1:28 pm
Posts: 10793
Location: England
Hi Grzeg, welcome! Nice project - would like to know more!
Cheers
Ed


Top
 Profile  
Reply with quote  
PostPosted: Sun Jun 15, 2014 8:50 pm 
Offline

Joined: Fri Jan 17, 2014 6:39 pm
Posts: 47
Location: Poland
I did not know Bosak also solutions. I see some similarities, but many differences.
For me, switching is the entire RAM addresses $ 0000 - FFFF, not just above $ 0400.
Therefore, each bank can initiate a full system.To allows, for example to run programs not written for this system in multitasking, and or different versions of the KERNEL.
VIC and the CPU can independently use different RAM banks.
In addition, I use the RAM is not limited to 1 bit 256 kB
(7 bit refreshing)
I attach a diagram without refreshing logic:

http://gsmhome.elektroda.eu/schematfree.pdf


Top
 Profile  
Reply with quote  
PostPosted: Tue Jun 17, 2014 9:09 am 
Offline
User avatar

Joined: Fri Dec 11, 2009 3:50 pm
Posts: 3346
Location: Ontario, Canada
Hi grzeg,

I am not a Commodore 64 expert, and some of your description I didn't understand. But the schematic answered most of my questions, and I decided to post an excerpt here:
Attachment:
1MB C64.gif
1MB C64.gif [ 16.01 KiB | Viewed 1965 times ]

On the right I see you have a SIMM memory module, with most of the connections attaching via jumper wires from where the original DRAM chips used to be. But, with 16 times as much memory, the SIMM has two extra (multiplexed) address inputs.

Looking upstream, I expected to see four non-multiplexed address lines (which multiplex as 2 bits of Row address and 2 bits of Column address). Okay, but that 'LS153 mux has eight inputs, not four! -- and all eight lines come from the '273 output port. Time to look more closely. When AEC from the VIC chip is high, the upper 4 bits of the '273 output port will select which of 16 memory banks will be active. When AEC is low, the lower 4 bits of the port will select which bank will be active. Either way, the output port always remains in control.

grzeg wrote:
0.5 kB RAM in I/O ($D600 - $D7FF) for program MMU
I guess this is where you store the subroutine that alters the output port and selects a new DRAM bank. (A 32K by 8 static RAM chip is visible elsewhere in the schematic, attached so only 512 bytes are used.) If you tried to store that subroutine in the DRAM instead, you'd "pull the rug out from under your own feet" when the bank change took effect! Very interesting -- thanks for sharing this.

-- Jeff

_________________
In 1988 my 65C02 got six new registers and 44 new full-speed instructions!
https://laughtonelectronics.com/Arcana/ ... mmary.html


Top
 Profile  
Reply with quote  
PostPosted: Tue Jun 17, 2014 3:56 pm 
Offline

Joined: Fri Jan 17, 2014 6:39 pm
Posts: 47
Location: Poland
Hi Dr Jefyll , exactly :D
Example code ( ;this code must be $d600 - $D7FF) for task switch.
NMI must OFF or in $d600 $d7ff
Code:
D700
   php ; go here if you want to use "jsr "
IrqNmiBrk:
   pha ; or here if use IRQ,NMI, BRK code
   txa
   pha
   tya
   pha
   tsx
   stx $03 , for example a store stack pointer in zero page $03
....
   sei ; switch to another BANK -0x , or xx with VIC (Video RAM)
   lda #$0x
   sta d500
   ldx $03 ; stack pointer for task X from another $03 in all BANKs
   txs
   pla
   tay
   pla
   tax
   pla
   rti

And copy one page :
Code:
   sei
   ldy #00
   ldx #kd ;d destination
loop:    lda #kx ;x - BANK source
   sta D500 ; BANK source
   lda source,y
   stx D500 ; BANK d
   sta dest ,y
   iny
   bne loop
   lda #kk ; k current BANK
   sta d500
   plp
   rts


Top
 Profile  
Reply with quote  
PostPosted: Tue Jun 17, 2014 7:25 pm 
Offline
User avatar

Joined: Sat Jun 08, 2013 4:02 pm
Posts: 46
This is much simpler than Bosaki's design, which provides different amounts of "common memory" similar to that of the C-128. However, the 1/2K would be inaccessible if the C64 was in a configuration with I/O banked out.

I see that the SIMM has A10 grounded, which means half of it is unused, and you'd have to use a 2MB SIMM to get 1MB. But aren't SIMMs of any size getting hard to find?

Nice work, grzeg. Can you explain the refreshing a little more? Thanks.

_________________
"I am endeavoring, ma'am, to create a mnemonic memory circuit... using stone knives and bearskins." -- Spock to Edith Keeler


Top
 Profile  
Reply with quote  
PostPosted: Tue Jun 17, 2014 9:41 pm 
Offline

Joined: Fri Jan 17, 2014 6:39 pm
Posts: 47
Location: Poland
richardc64
Standard sizes SIMM 30-pin : 256 KB, 1 MB, 4 MB, 16 MB,.
A9 is N/C on 256kB.
A10 is N/C on 256kB and 1MB.
A11 is N/C on 256kB, 1MB and 4MB sticks
A10 & A11 is grounded for 4 MB SIMM - without grounded to not work properly.
First of all I wanted to build a system for parallel operation.
Small VMWare for the C64 ;)
So I'm 16 * 64kB RAM, 16 * Stack and 16 *the zero page.

Refreshing uses "Hidden Refreh"
I will try to soon make available all software and source
I just need to update your website;)


Top
 Profile  
Reply with quote  
PostPosted: Tue Jun 17, 2014 10:02 pm 
Offline

Joined: Fri Jan 17, 2014 6:39 pm
Posts: 47
Location: Poland
richardc64 wrote:
However, the 1/2K would be inaccessible if the C64 was in a configuration with I/O banked out.

A total of few programs use the mode in which no I / O
C128 was not even fully compatible and retained c64 mode ;)


Top
 Profile  
Reply with quote  
PostPosted: Thu Jul 03, 2014 5:33 pm 
Offline

Joined: Fri Jan 17, 2014 6:39 pm
Posts: 47
Location: Poland
Video with system.
https://www.youtube.com/watch?v=5WjE42YjBy4&feature=youtu.be
Disk image
http://gsmhome.elektroda.eu/SYSTEM.zip


Top
 Profile  
Reply with quote  
PostPosted: Wed Jul 23, 2014 11:52 am 
Offline

Joined: Fri Jan 17, 2014 6:39 pm
Posts: 47
Location: Poland
Code:
; on X goto / on X gosub
; in Acc = xx    - x bank  0x only CPU , x0 only VIC , xx CPU VIC
     goto



Top
 Profile  
Reply with quote  
PostPosted: Wed Jul 23, 2014 12:18 pm 
Offline

Joined: Fri Jan 17, 2014 6:39 pm
Posts: 47
Location: Poland
How to switch BANK without i/O ?
This code can be anywhere in the RAM
grzeg wrote:
Code:
; on X goto / on X gosub
; in Acc = xx    - swich to bank  X 0x only CPU , x0 only VIC , xx CPU+VIC to BANK X
                 
                  lda #$55    ; BANK5
                  jsr goto

     goto
                  sei
                  ldx $01           ;safe conf i/o ROM / RAM for bank 0       this code execute in BANK 0
                  stx tmp01
                  ldx #$34         ; only RAM
                  stx $01
                  sta D500         ; swich BANK
;-----------------------------------------------
                                                                                             and this code ececute BANK x
                  jmp (main)    ; or jsr 
endtask       
                  lda #$37
                  sta $01
                  lda #00
                 sta D500
;----------------------------------------------
                 lda tmp01           ;and this again in BANK 0
                 sta $01
                 cli
                 rts
;------------------------------------------------
main ............
       ....
       jmp endtask   ;or RTS



Top
 Profile  
Reply with quote  
PostPosted: Sun Aug 17, 2014 10:24 pm 
Offline

Joined: Fri Jan 17, 2014 6:39 pm
Posts: 47
Location: Poland
Apple II running on this c64

https://www.youtube.com/watch?v=-u2BwI29ZQ4&feature=youtu.be


Top
 Profile  
Reply with quote  
PostPosted: Mon Aug 18, 2014 12:47 am 
Offline
User avatar

Joined: Thu Dec 11, 2008 1:28 pm
Posts: 10793
Location: England
Wow! So, how does the Apple II code for keyboard and screen interact with the C64 hardware?


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 24 posts ]  Go to page 1, 2  Next

All times are UTC


Who is online

Users browsing this forum: No registered users and 24 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to: