VGER-20... A Multi-Media Expansion Cartridge.

Modding and Technical Issues

Moderator: Moderators

User avatar
TLovskog
Vic 20 Enthusiast
Posts: 194
Joined: Fri Mar 25, 2011 3:16 pm
Location: Kävlinge, Sweden

Re: VGER-20... A Multi-Media Expansion Cartridge.

Post by TLovskog »

Hi,

I am flabbergasted. Being from the 60's and poked around a bit on the old Arcade machines (having a few original schematics) I like the back to basics. Have actually toyed around with the idea of making a motherboard for Pengo, Scramble, Pack Man, etc but with the tiniest and modern 74's packages.

Nice work. Nice work indeed.
BR
Thomas Lövskog
User avatar
RobertBe
Vic 20 Elite
Posts: 2304
Joined: Sat Jul 14, 2007 2:48 pm

Re: VGER-20... A Multi-Media Expansion Cartridge.

Post by RobertBe »

Radical Brad wrote:Anyone want to complain about the cold??? Yeah... it's been like this almost all week long now.
Yesterday it was 72 degrees F. (22 degrees C.) here in central California. Today it went down to 65 degrees F. (18 degrees C.). Brrr.... ;)

Happy New Year!
Robert Bernardo
Fresno Commodore User Group
http://www.dickestel.com/fcug.htm
Southern California Commodore & Amiga Network
http://www.portcommodore.com/sccan
User avatar
Radical Brad
Vic 20 Devotee
Posts: 256
Joined: Sat Jun 24, 2017 8:18 pm
Website: http://www.AtomicZombie.com
Location: Kakabeka Falls, ONT
Occupation: hACKER

Re: VGER-20... A Multi-Media Expansion Cartridge.

Post by Radical Brad »

Thanks again for all the feedback.

I have not had a lot of board time, but did manage to get a few things done...

-The expansion SRAM (32K) is now working in Blocks 1,2,3, and 5.
-The AVR can load the ram, and reset the VIC so it boots.
-The VIC now runs my machine language programs, so Basic is going on vacation.
- Added "Native mode", which boots the VIC with either unexpanded 3K or the full 32K of expansion memory in Basic.

VGER-20 can also load cartridge game ROMs, and I have added a neat feature that displays a 400x300 image on the VGA monitor while the original game runs on the VIC screen. The VGA image shows the original cartridge cover, date of release, and some info on the game running.

VGER-20 does this automatically as part of its file system. I save the cartridge as a .CRB file (Cartridge Binary), so when loaded, VGER knows to look for a matching .CRI file (Cartridge Information).

This will be easier to demonstrate than try to explain, but it basically works like this...

In the VGEROS Console Screen, I type "Load Omega Race.CRB", and then VGER-20 fills block 5 with the cartridge binary, and resets the VIC to get the game running. At the same time, it looks for the matching "Omega Race.CRI" file, and then displays the information on the secondary VGA screen. It's kind of like a built-in VIC-20 games museum.

Assembly programs run at several thousand times the speed of the basic test programs, but that was expected.
That psychedelic color thingy I did takes 3 seconds in assembly, and it took 34 minutes in Basic!
I will show some Sprites moving around as soon as I have a bit more time.

Keep on rockin' it old school!
Radical Brad
User avatar
Radical Brad
Vic 20 Devotee
Posts: 256
Joined: Sat Jun 24, 2017 8:18 pm
Website: http://www.AtomicZombie.com
Location: Kakabeka Falls, ONT
Occupation: hACKER

Re: VGER-20... A Multi-Media Expansion Cartridge.

Post by Radical Brad »

My VIC just got something interesting... ROM Shadowed Kickstart Kernal.

Sounds odd, but is just part of the many subsystems that make VGER-20 operate.
This is what it is, and how it works...

1) Power on of the VIC-20, which in turn powers up the VGER-20 hardware.

2) The AVR support Chip in VGER holds the VIC in reset as well as the FPGA GPU.

3) During this reset phase, the AVR takes over the external bus and loads a 3K Kernal file into the Block-5 segment of expanded memory. This small Kernal file also includes the cartridge auto run sequence.

4) The AVR then goes invisible and unresets both the VIC-20 and the VGER-20 FPGA GPU.

5) VIC now thinks it has a cartridge ROM in the expansion port and starts executing the Kernal code.

6) The Kernal code now copies itself to the VIC-20 Basic User Memory area and jumps there for execution.

7) The Kernal now asks the AVR to load the main operating System (VGEROS) into the expanded 32K of external memory. Because the Kernal is safely living in the VIC internal memory, it cannot be overwritten, and there is no problem when the AVR once again steals away the expansion port bus to stuff the SRAM with the VGEROS code.

8) The AVR signals the VIC-20 Kernal that the load is complete, and then the Kernal jumps to location 8192 to execute VGEROS in the expanded memory.

9) The user is now presented with the VGEOS user console on the VIC-20 screen, and can begin coding, assembling, and running demos that will display on the VGA monitor controlled by the GPU.

This loading system also works the same way when a user requests the VIC-20 to load one of the other components of the Operating System such as the Music Tracker, Sprite Editor, or Machine Language Monitor. The Kernal just jumps to the internal VIC memory, and then tells the AVR to load up the next 32K application in the expanded memory.

This is also how I will run massive 6502 assembly programs that go well beyond 64K. The VIC can instantly request another 32K "page" from the 4GB external storage device, and simply keep on executing code.

I can't imagine I will need much more than a few hundred K of 6502 assembly to do what I want, but VGER-20 will be completely capable of serving up a 4GB (yes, Gigabyte) 6502 program to the VIC 20.

That's 131,072 pages of 32K!

I still have a lot of testing to do, but everything mentioned above is now functioning from what I can tell.
When I have time, I will create some intensive demos to really work the GPU commands, Kernal, and all of the SRAM.
Once I have proven that all timing will hold up, I will clean up all the wiring and finalize the schematic.

VIC is so glad to be out of that box and learning new tricks!

Later,
Radical Brad
User avatar
Radical Brad
Vic 20 Devotee
Posts: 256
Joined: Sat Jun 24, 2017 8:18 pm
Website: http://www.AtomicZombie.com
Location: Kakabeka Falls, ONT
Occupation: hACKER

Re: VGER-20... A Multi-Media Expansion Cartridge.

Post by Radical Brad »

Ok, I finally get a day off tomorrow to work on VGER-20!
I had to use my "Man Cave" for another experiment over the last week.

Since I was working with 250,000 volts, I moved my VIC away from the danger!
Yeah, a quarter million volts in my basement lab.
I really like building dangerous machines as much as I like retro computers.

Here is the beast that was living next to my VIC Lab, spewing loud and angry lightning bolts...

Image
This is my prototype 250 kilovolt rock disaggregator.

I call this beast "Gator", because it is a Rock Disaggregator.
Also, because one wrong move, and it will eat you like an angry gator.

There are five 50 kilovolt pulse capacitors arranged in a series configuration.
I made the spark gaps by welding bolts to some old ball bearings.
The inductor coils are hand wound on PVC tubing.

Image
Inductor coils and spark gaps

In this round of tests, I was breaking up locally mined amythest.
Here is the rock sample after only a single "hit"...

Image
Amethyst samples after the first blast of lightning

The machine can take a part precious gems and minerals from rock without damage.
3 shots in the machine can outperform a talented rock cutter with a tiny hammer

The separation of material is very complete...

Image
Crystals are only broken at their boundaries.

Here is a demo video I made for a client...

https://www.youtube.com/watch?v=IH5B-VDYeks&t=1s

Ok, so that was my tangent of the week. I now have my VIC-20 hacking lab back again.
I hope to get some real progress in on VGER-20 tomorrow afternoon.

No doubt, there will be less chance of electrocuting myself now as well!

Cheers,
Radical Brad
User avatar
Radical Brad
Vic 20 Devotee
Posts: 256
Joined: Sat Jun 24, 2017 8:18 pm
Website: http://www.AtomicZombie.com
Location: Kakabeka Falls, ONT
Occupation: hACKER

Re: VGER-20... A Multi-Media Expansion Cartridge.

Post by Radical Brad »

Had a decent day in the VIC-20 lab this afternoon.
Once I moved the 250,000 volt prototype out of the basement, I ran the wood-stove for a few hours, and then had my lab back.
Blasting rocks down here was not a good idea, since I cracked one of my windows from the intense sonic boom!
From now on, retro computing is all I shall do down here.

The VGER-20 prototype now seems to be hardware complete. I don't think I will add anything else.
The wiring is a disaster, I have no schematic, but all of my testing today was promising.

Instead of going for the graphics bling, I spent some time and tried a basic File System Load and Run test.
I made a 4gb binary image on my PC that contained a simple User Console as well as a few Cartridge ROMS.
That image was then written in RAW format to an SD card using a hex editor.

I programmed the AVR to allow the VIC-20 to call up files from the SD card.
The File System is extremely crude at this point, but it does prove that everything works.

The sequence of events after power up is also a bit bizarre, but no more than the VIC-20 memory map!
Here is what happens in the Video I made...

1) VGER-20 System is powered up (VIC-20, FPGA, and AVR).
2) The FPGA shoves a small "KickStart" program into Block5 of the 32 Expansion memory.
3) The VIC-20 boots, and executes the KickStart as if it was a standard Cartridge ROM.
4) KickStart copies itself back to location 4096 in the VIC-20 internal Memory (Basic Memory).
5) Kickstart then requests VGEROS from the AVR.
6) The AVR loads VGEROS into Block5 of the Expansion Memory.
7) The AVR signals that the load is complete, and then the VIC-20 jumps there and runs the OS.

The OS in this case, is just a very basic User Console that allows me to list the SD files and load them.
Loading a file works like this...

1) VIC User mounts an SD card and then displays a list of files.
2) User does "LOAD FILE", and then VIC asks the FPGA to load the File.
3) The VIC now jumps to the Kernal (internal Block-0) to avoid a memory conflict.
4) The FPGA now steals the BUS and loads the file data to the 4MB Data Memory.
5) The Kernal is then signaled, and it copies the binary from Data Memory back to Block-5.
6) Once copied, the Kernal asks for a VIC-20 reset, and the program starts up.

Communication between AVR and FPGA is a dedicated bit banged serial bus.
I also redid the GPU to be multitasking. It now has 3 separate function pipelines.
It seems complex, but allows for easy bank switching and program chaining.

Here is a photo of the complete mess I made of the wiring as all hardware is now added...

Image
VGER-20 Hardware is now completed.

It's a good thing I am done with the hardware, since I have no more board space!
The completed unit will fit a cartridge case eventually, but the breadboard is much larger.

I had some fun loosing at some of my favorite games as well today...

Image
A simple Cart Loader that also shows a companion image

The companion image on the VGA screen is just a simple way to test the File System.
Anytime I load a .CRT file (Cartridge ROM), a matching bitmap is displayed if it exists.
Maybe I will extend this to show a slideshow with game history, rules, author info, release date, etc.

Here is a video of VGER-20 loading and running some Cart ROMS from an SD Card...

https://youtu.be/GJAZmfzgHEg

The next step will probably take some time... creating a true VGER-20 Kernal.
I need a decent Kernal in the VIC-20 internal memory to get access to all GPU functions.
Wiring cleanup is also on the ToDo list, as I can't stand looking at this mess!

So far so good... only a few more years before my project is complete!
... is anything ever complete??

Cheers!
Radical Brad
cobracon
Vic 20 Dabbler
Posts: 74
Joined: Thu Nov 11, 2010 5:46 pm

Re: VGER-20... A Multi-Media Expansion Cartridge.

Post by cobracon »

You really have come along way on this in such lil time. Have you tested larger game cart images yet?
User avatar
Radical Brad
Vic 20 Devotee
Posts: 256
Joined: Sat Jun 24, 2017 8:18 pm
Website: http://www.AtomicZombie.com
Location: Kakabeka Falls, ONT
Occupation: hACKER

Re: VGER-20... A Multi-Media Expansion Cartridge.

Post by Radical Brad »

cobracon wrote:You really have come along way on this in such lil time. Have you tested larger game cart images yet?
Thanks.
I wish I had more than a few hours per week to put into this project.
But alas, it isn't paying the bills!

It seems like the real work is ahead of me now... making VGEROS.
Yes, I can load any cartridge image as long as I place it in the blocks properly.
Some are fussy about the memory being RAM instead of ROM though.
To work around that, I just make any .CRT file set the memory to ROM.

Brad
Last edited by Radical Brad on Sun Jan 14, 2018 9:50 pm, edited 1 time in total.
User avatar
Radical Brad
Vic 20 Devotee
Posts: 256
Joined: Sat Jun 24, 2017 8:18 pm
Website: http://www.AtomicZombie.com
Location: Kakabeka Falls, ONT
Occupation: hACKER

Re: VGER-20... A Multi-Media Expansion Cartridge.

Post by Radical Brad »

I almost forgot to show my Basic vs Assembly test.
Here is the same basic Ball Bouncer Demo now done in assembly...

https://youtu.be/4BOKJl4wUik

The assembly version could easily move 50 sprites, but I was too lazy to index all the variables!
I bet the VIC-20 is only using 5% of the cycles available in a 60 frames per second loop here.

Image

Here is the code that does the Ball Demo.
It was done in a hurry, with little regard for optimization, and doesn't even use Zero Page...

Code: Select all


; ////////////////////////////////////////////////////////////////////////////////////////////
; ////////// VGER-20 GFX TEST 1 - JAN 14 2018
; ////////////////////////////////////////////////////////////////////////////////////////////
; ////////// SAVE AS "Binary Code.65b" @ A000
; ////////////////////////////////////////////////////////////////////////////////////////////

IO_COMMAND = 38912 ; BLOCK 2 EXPANSION PORT ADDRESS

RCOM_COMREG =		IO_COMMAND + 001
RCOM_COMSYNC =		IO_COMMAND + 002
RCOM_MATHR1 =		IO_COMMAND + 003
RCOM_MATHR2 =		IO_COMMAND + 004
RCOM_MATHR3 =		IO_COMMAND + 005
RCOM_MATHR4 =		IO_COMMAND + 006
RCOM_RANDOM =		IO_COMMAND + 007

WCOM_DRAWX1LO =		IO_COMMAND + 100
WCOM_DRAWX1HI =		IO_COMMAND + 101
WCOM_DRAWX2LO =		IO_COMMAND + 102
WCOM_DRAWX2HI =		IO_COMMAND + 103
WCOM_DRAWY1LO =		IO_COMMAND + 104
WCOM_DRAWY1HI =		IO_COMMAND + 105
WCOM_DRAWY2LO =		IO_COMMAND + 106
WCOM_DRAWY2HI =		IO_COMMAND + 107

WCOM_PALIDX =		IO_COMMAND + 108
WCOM_PALRED =		IO_COMMAND + 109
WCOM_PALGRN =		IO_COMMAND + 110
WCOM_PALBLU =		IO_COMMAND + 111
WCOM_ALTPAL =		IO_COMMAND + 112

WCOM_MATHALO =		IO_COMMAND + 113
WCOM_MATHAHI =		IO_COMMAND + 114
WCOM_MATHBLO =		IO_COMMAND + 115
WCOM_MATHBHI =		IO_COMMAND + 116
WCOM_MATHADD =		IO_COMMAND + 117
WCOM_MATHSUB =		IO_COMMAND + 118
WCOM_MATHMUL =		IO_COMMAND + 119
WCOM_MATHDIV =		IO_COMMAND + 120
WCOM_MATHSIN =		IO_COMMAND + 121

WCOM_VOXIDX =		IO_COMMAND + 122
WCOM_VOXVOLUME =	IO_COMMAND + 123
WCOM_VOXFREQLO =	IO_COMMAND + 124
WCOM_VOXFREQHI =	IO_COMMAND + 125
WCOM_VOXADRLO =		IO_COMMAND + 126
WCOM_VOXADRMD =		IO_COMMAND + 127
WCOM_VOXADRHI =		IO_COMMAND + 128
WCOM_VOXLENLO =		IO_COMMAND + 129
WCOM_VOXLENMD =		IO_COMMAND + 130
WCOM_VOXLENHI =		IO_COMMAND + 131
WCOM_VOXLOOP =		IO_COMMAND + 132
WCOM_VOXPLAY =		IO_COMMAND + 133

WCOM_DATADLO =		IO_COMMAND + 134
WCOM_DATADMD =		IO_COMMAND + 135
WCOM_DATADHI =		IO_COMMAND + 136

WCOM_SPRITEXLO =	IO_COMMAND + 137
WCOM_SPRITEXHI =	IO_COMMAND + 138
WCOM_SPRITEYLO =	IO_COMMAND + 139
WCOM_SPRITEYHI =	IO_COMMAND + 140
WCOM_STRIDELO =		IO_COMMAND + 141
WCOM_STRIDEMD =		IO_COMMAND + 142
WCOM_STRIDEHI =		IO_COMMAND + 143
WCOM_ALPHA =		IO_COMMAND + 144
WCOM_PALSHIFT =		IO_COMMAND + 145

WCOM_CLEAR =		IO_COMMAND + 200
WCOM_FLIP =		IO_COMMAND + 201
WCOM_PXLREAD =		IO_COMMAND + 202
WCOM_PXLWRITE =		IO_COMMAND + 203
WCOM_SPRITE =		IO_COMMAND + 204
WCOM_LINE =		IO_COMMAND + 205
WCOM_CHAR =		IO_COMMAND + 206

WCOM_DATAREAD =		IO_COMMAND + 207
WCOM_DATAWRITE =	IO_COMMAND + 208

; ////////////////////////////////////////////////////////////////////////////////////////////
; ////////// BLOCK 5 START SEQUENCE
; ////////////////////////////////////////////////////////////////////////////////////////////

; START ADDRESS = 40969 @ 40960 TO 40961
 .ORG 40960
 .BYTE <40969,>40969
 
; RESET ADDRESS = 40969 @ 40962 TO 40963
 .ORG 40962
 .BYTE <40969,>40969
 
; BOOT CODE = a0CBM @ 40964 TO 40968
 .ORG 40964
 .BYTE 65,48,195,194,205
  
; PROGRAM START @ 40969 TO 49151
 .ORG 40969

; ////////////////////////////////////////////////////////////////////////////////////////////
; ////////// VIC-20 INTERNAL HARDWARE INITIALIZATION
; ////////////////////////////////////////////////////////////////////////////////////////////

; INITIALIZE INTERNAL RAM
 JSR 64909
 
; INITIALIZE IO VECTORS 
 JSR 64850
 
; INITIALIZE IO REGISTERS 
 JSR 65017
 
; INITIALIZE VIC HARDWARE 
 JSR 58648

; CLEAR INTERRUPTS
 CLI

; DISABLE RUN/STOP KEY
 LDA #127
 STA 37165
 STA 37166
 STA 37150
  
 ; DEFINE BALL VARS
ballx = 4200
 LDA #0
 STA ballx
 STA ballx+1

bally = 4202
 STA bally
 STA bally+1
 
balldx = 4204
 STA balldx

balldy = 4205
 STA balldy

ballvx = 4206
 LDA #3
 STA ballvx
 
ballvy = 4207
 LDA #3
 STA ballvy

ballclr = 4208
 LDA #0
 STA ballclr
 

; SET SPRITE SOURCE ADDRESS
 LDA #0   
 STA WCOM_SPRITEXLO
 STA WCOM_SPRITEXHI
 STA WCOM_SPRITEYLO
 STA WCOM_SPRITEYHI

; SET SPRITE STRIDE
 LDA# 62
 STA WCOM_STRIDELO
 LDA #0
 STA WCOM_STRIDEMD
 STA WCOM_STRIDEHI  
 
 
; SET SPRITE SIZE
 LDA #62
 STA WCOM_DRAWX2LO
 STA WCOM_DRAWY2LO
 LDA #0
 STA WCOM_DRAWX2HI
 STA WCOM_DRAWY2HI
 
; SET SPRITE ALPHA
 LDA #0
 STA WCOM_ALPHA
   
BOING:
   
; clear screen
 JSR SUB_COMREADY
 LDA #123
 STA WCOM_CLEAR
 JSR SUB_COMREADY
 
  ; MOVE SPRITE RIGHT
 LDA #0
 CMP balldx
 BNE SHR
 CLC
 LDA ballx
 ADC ballvx
 STA ballx
 BCC MSR
 INC ballx+1
MSR:

 ; SPRITE HIT WALL RIGHT
 LDA #1
 CMP ballx+1
 BNE SHR
 LDA #81 ; (400-256-62)
 CMP ballx
 BCS SHR
 LDA #1
 STA balldx
SHR:

 ; MOVE SPRITE LEFT
 lda #1
 CMP balldx
 BNE SHL
 SEC
 LDA ballx
 SBC ballvx
 STA ballx
 BCS MSL
 DEC ballx+1
MSL:

 ; SPRITE HIT WALL LEFT
 LDA #0
 CMP ballx+1
 BNE SHL
 CMP ballx
 BCC SHL
 STA balldx
SHL:

; BOUNCE SIMULATION
 LDA bally
 LSR
 LSR
 LSR 
 STA ballvy
 INC ballvy
  
 ; MOVE SPRITE DOWN
 LDA #0
 CMP balldy
 BNE SHD
 CLC
 LDA bally
 ADC ballvy
 STA bally
 BCC MSD
 INC bally+1
MSD:

 ; SPRITE HIT WALL DOWN
 LDA #0
 CMP bally+1
 BNE SHD
 LDA #238 ; (300-62)
 CMP bally
 BCS SHD
 LDA #1
 STA balldy

; SPRITE CHANGE COLOR
 LDA ballclr
 ADC #32
 STA ballclr
 STA WCOM_PALSHIFT
SHD:

 ; MOVE SPRITE UP
 lda #1
 CMP balldy
 BNE SHU
 SEC
 LDA bally
 SBC ballvy
 STA bally
 BCS MSU
 DEC bally+1
MSU:

 ; SPRITE HIT WALL UP
 LDA #0
 CMP bally+1
 BNE SHU
 CMP bally
 BCC SHU
 STA balldy
SHU:

 ; DRAW SPRITE
 LDA ballx
 STA WCOM_DRAWX1LO
 LDA ballx+1
 STA WCOM_DRAWX1HI
 LDA bally
 STA WCOM_DRAWY1LO
 LDA bally+1
 lda #0
 STA WCOM_DRAWY1HI
 JSR SUB_COMREADY
 LDA #0
 STA WCOM_SPRITE

; FLIP SCREEN
 JSR SUB_COMREADY
 LDA #0
 STA WCOM_FLIP
  
; LOOP
 JMP BOING
 
; ////////////////////////////////////////////////////////////////////////////////////////////
; ////////// SUB : WAIT FOR FPGA COMMAND READY
; ////////////////////////////////////////////////////////////////////////////////////////////
SUB_COMREADY:

; CHECK COMMAND REGISTER 
 LDA RCOM_COMREG

; WAIT WHILE COMMAND NOT ZERO
 CMP #0
 BNE SUB_COMREADY
 
; RETURN 
 RTS

It's nice to see all of the subsystems working together like this.
I still have many commands to fully test, but I know the hardware prototype is solid now.

My VIC-20 is one step closer to becoming my main computer!

Cheers,
Radical Brad
User avatar
Radical Brad
Vic 20 Devotee
Posts: 256
Joined: Sat Jun 24, 2017 8:18 pm
Website: http://www.AtomicZombie.com
Location: Kakabeka Falls, ONT
Occupation: hACKER

Re: VGER-20... A Multi-Media Expansion Cartridge.

Post by Radical Brad »

Optimize, optimize, and more optimize!

After tightening up the FPGA code, I freed up enough internal Block RAM to actually put the entire VIC-20 expansion memory into the FPGA. This means that I no longer need an external 32K IC on my board, or some other method to boot load the OS.

This is a huge bug deal in terms of simplifying the design.

I may even have enough Block ROM resources available to put the VGEROS User Console code right in the FPGA as well, and have it boot load it to BLK5 directly. A lot of new design options just opened up.

I may also be able to loose the external AVR as well by putting the RAW SD card SPI functions in the FPGA.
That would force the VIC-20 to deal fully with the File System, but that just makes the project more fun.
If this proposed design change works out, then the only IC in VGER-20 other than the port buffers will be the FPGA!

This project has really been great for allowing my to keep "in the game" while away form my VIC-20 Lab.
Coding and Synthesizing Verilog can be done from any laptop, and 15 minutes of time actually counts for something.

I am so looking forward to completing this project so I can start coding 6502 / VIC-20 games and demos.
Using a computer hasn't been fun for me since the late 80's, but that will soon change.
.... thanks VIC!

Radical Brad
User avatar
Radical Brad
Vic 20 Devotee
Posts: 256
Joined: Sat Jun 24, 2017 8:18 pm
Website: http://www.AtomicZombie.com
Location: Kakabeka Falls, ONT
Occupation: hACKER

Re: VGER-20... A Multi-Media Expansion Cartridge.

Post by Radical Brad »

Now that I have my work space back, I think it's time to steer some effort back into the original 7400 Logic based version of this project.
I don't want to spoil the fun working with FPGA's too much... they make this hobby a bit too easy for my liking!
A lot has been accomplished on this sub project, and a lot has been learned about VIC timing and memory access.
I can now apply what I have learned to the original project...

http://sleepingelephant.com/ipw-web/bul ... &start=120

With the 74LVC245 buffers working flawlessly, I can continue where I left off on the project.
My efforts will now go to the thread in the link above until I loose my VIC-20 Lab again for some reason.

Later!
Radical Brad
Post Reply