If you could have changed one thing about the VIC...?

Discuss anything related to the VIC
carlsson
Class of '6502
Posts: 5516
Joined: Wed Mar 10, 2004 1:41 am

Post by carlsson »

Jeff-20 wrote:For me, lack of good branching statements (if, then, else) is covered by the ON GOTO command combo... It's actually very efficient in a way.
But ON GOTO is even more powerful on e.g. Sinclair Basic. If I remember correctly, it lets you use formulas instead of individual variables:

ON B/(A-20) GOTO 10,21,23,72,44

I'm not sure, but I believe in one or another dialect, you may even be able to do something like this:

ON A GOTO B,C,D,F (where those are variables)

The ultimate would be if you could use formulas as line number targets:

ON B/(A-20) GOTO C/10,(B+C)*5,INT(SQR(D))

One might question what kind of spaghetti code the program consists of if you need those complicated formulas. I can't recall right now, but does Commodore Basic even accept GOTO A (a variable) ?
Anders Carlsson

Image Image Image Image Image
User avatar
Mike
Herr VC
Posts: 4839
Joined: Wed Dec 01, 2004 1:57 pm
Location: Munich, Germany
Occupation: electrical engineer

Post by Mike »

carlsson wrote:But ON GOTO is even more powerful on e.g. Sinclair Basic. If I remember correctly, it lets you use formulas instead of individual variables:

Code: Select all

ON B/(A-20) GOTO 10,21,23,72,44

This also works on the VIC.
One might question what kind of spaghetti code the program consists of if you need those complicated formulas.
*bg*
I can't recall right now, but does Commodore Basic even accept GOTO A (a variable) ?
Not directly, but ... a few bytes will do the trick:

Code: Select all

0 POKE1,18:POKE2,16:REMZZZZZZ 
1 S=4096:FORI=0TO5:READA:POKES+18+I,A:NEXT 
2 DATA32,247,215,76,163,200 

(for +8K RAM ex., or more, write POKE2,18 and S=4608 instead) 

RUN the program. After this, you can delete the lines 1 and 2. Never edit line 0.
and then use: X=USR(A) to perform GOTO A. (quoted from 'Calculated GOTO' thread. :) )

Besides, how about using Waterloo BASIC? Here neither GOSUB nor GOTO are even necessary anymore!

Greetings,

Michael
User avatar
pitcalco
just pitcalco
Posts: 1272
Joined: Wed Dec 28, 2005 4:13 pm
Location: Berlin

Post by pitcalco »

For me, I too would like to have a 40-column display for the screen.

Tradeoff: the Basic Interpreter. I think that the VIC 20 should have been a Machine Language only computer with the Basic language available as a separate cartridge, perhaps also with the extra memory needed built into the catridge as well.
There are only three kinds of people in the world: those who can count and those who can't.

Paul Lambert
Berlin
Federal Republic of Germany
carlsson
Class of '6502
Posts: 5516
Joined: Wed Mar 10, 2004 1:41 am

Post by carlsson »

Nah. Without a built-in Basic, the VIC-20 would not have been anything more than a glorified video game. Something like the Philips G7000 (Odyssey2), but with a real keyboard. All the marketing that VIC-20 was a real computer which could do other things than play games would not have been possible. Look at the UltiMAX (VIC-10), which basically is what you're looking for: a 40 column computer with cartridge Basic, little or no RAM. It became an uncommon item, not only due to the Commodore 64 was compatible and superior.
Anders Carlsson

Image Image Image Image Image
User avatar
pitcalco
just pitcalco
Posts: 1272
Joined: Wed Dec 28, 2005 4:13 pm
Location: Berlin

Post by pitcalco »

I agree with you Carlsson, from that point of view. I was only speaking of my own preference. Naturally, having the built-in Basic was a good selling point.

Perhaps instead of asking what we would have changed about the VIC 20, we should appreciate just how well thought out the concept was for its time.
There are only three kinds of people in the world: those who can count and those who can't.

Paul Lambert
Berlin
Federal Republic of Germany
carlsson
Class of '6502
Posts: 5516
Joined: Wed Mar 10, 2004 1:41 am

Post by carlsson »

For an advanced user, you can remove the Basic and Kernel ROMs and install your own operating system of choice, as long as the Kernel vectors at the very end are set up accordingly. I suppose you can even use most of the low 1K freely (exceptions for the zeropage and stack). Neither of that will give you a native 40 column mode unless you get your hands on a 6562/63 chip or have an external expander.

By the way, has anyone seen a full replacement operating system for the VIC-20? I'm not sure what it would be like. A few years ago I struggled with Contiki but got stuck due to memory limitations. If it would be possible to compile a 16K core part of the operating system as ROM (or EPROM more likely), suddenly it would fit lovely into fully expanded memory. The somewhat ill-fated 6502 RAM/ROM board could be handy for such development, as you can load it with alternative ROM sets if I remember correctly.
Anders Carlsson

Image Image Image Image Image
Bacon
for breakfast
Posts: 578
Joined: Mon Apr 19, 2004 8:07 am

Post by Bacon »

carlsson wrote:The somewhat ill-fated 6502 RAM/ROM board could be handy for such development, as you can load it with alternative ROM sets if I remember correctly.
What's ill-fated about it? Doesn't Nicolas sell it anymore?

And yes, you can have up to four alternative KERNALs, four blocks of $A000-$BFFF ROM, and 32K RAM in any combination by the flick of a switch. It's one of the best devices I have ever bought for any of my C= computers. The only small problem for some cartridge images is that you can't have ROM at $6000 or RAM at $A000, so games like e.g. AE can only run if you place one half in ROM at $A000 and load the other half into RAM at $6000.
Bacon
-------------------------------------------------------
Das rubbernecken Sichtseeren keepen das cotton-pickenen Hands in die Pockets muss; relaxen und watschen die Blinkenlichten.
carlsson
Class of '6502
Posts: 5516
Joined: Wed Mar 10, 2004 1:41 am

Post by carlsson »

Maybe I used the wrong word. What I wanted to point out that e.g. on this forum there recently has been a bit of criticism regarding the technical implementation. I can't determine how much of the criticism is accurate and how much is jealousy.
Anders Carlsson

Image Image Image Image Image
User avatar
eslapion
ultimate expander
Posts: 5458
Joined: Fri Jun 23, 2006 7:50 pm
Location: Canada
Occupation: 8bit addict

Post by eslapion »

As I indicated in the past, the main thing I would have changed about the VIC is to have all communications registers located in BLK4, including the IO2 and IO3 ranges put into BLK5 and use BLK4 as another potential 8k expansion.

In other words, everything that's in BLK4 put into BLK5 and BLK5's expansion area becoming BLK4.

This way, it would have been possible to have up to 32k contiguous BASIC RAM expansion.
User avatar
Ghislain
Realms of Quest
Posts: 1279
Joined: Sun Aug 08, 2004 12:54 am

Post by Ghislain »

This is the thing I would have changed about the VIC-20:

the 5K of ram be located between 0-5120

Screen characters memory between 1024-1535

Rest of Basic RAM: 1536-5120

Any expansion RAM will be added after 5120 and will not change memory locations for screen POKE locations.
"A slave is one who waits for someone to come and free him." -- Ezra Pound
User avatar
Jeff-20
Denial Founder
Posts: 5759
Joined: Wed Dec 31, 1969 6:00 pm

Post by Jeff-20 »

Ghislain wrote: Any expansion RAM will be added after 5120 and will not change memory locations for screen POKE locations.
Yes! I agree. One of the reasons I don't use memory expansion is because I can't really figure out where to place custom characters. Even with 3k expanded games, the nature of 36869 forces me to take 64 characters or 192 characters (I can't do 128). That's a full 1.5k, almost negating the extra programming space memory expansion gives. And it's almost always more custom characters than I need. So for programs like mine, I need to go up to 8k.
High Scores, Links, and Jeff's Basic Games page.
User avatar
Jeff-20
Denial Founder
Posts: 5759
Joined: Wed Dec 31, 1969 6:00 pm

Post by Jeff-20 »

A few more things, now that I am thinking of it.

I really wish the port/cable locations were different. There's really a lot of room in that breadbox. I would have liked the power cord to be in back to keep all of the cables on one side and neat.

The joystick port could also be moved to the front of the system for more efficient desk space. The power switch moved to the rear of the console.

As a kid, I wanted the cartridge port to be on the top of the machine. Centered like Atari XL computers. But the multislot units and accessories make the rear position more advantageous. So, I'd leave that the same.
High Scores, Links, and Jeff's Basic Games page.
carlsson
Class of '6502
Posts: 5516
Joined: Wed Mar 10, 2004 1:41 am

Post by carlsson »

I wonder if the I/O blocks could be rearranged more tightly:

* Are the VIC and VIA registers technically required to be located on different 256 byte pages?

* Could external (cartridge) expansions allocate address space within the same 1K block?

Apart from a few expansions which use I/O blocks 2 and 3 as ROM areas (i.e. the Rabbit Tape Turbo and Eslapion's Ultimate Expander), I don't know any other expansions that take advantage of the full 2K address space. Most VIC users never owned any such hardware, so to them it was a waste of space.

If it was technically possible to put all VIC-I, VIA and external I/O registers into the same 1K, the memory map could've looked something like this:

$0000-$03FF : 1K Low RAM as usual
$0400-$040F : 16 (256) bytes VIC-I registers (1024-1039)
$0510-$052F : 32 (256) bytes VIA registers (1296-1327)
$0630-$07FF : 464 (512) bytes external I/O (1584-2047)
$0800-$0BFF : 1K Colour memory nibbles (2048-3071)
$0C00-$0FFF : 1K Screen matrix RAM (3072-4095)
$1000-$1FFF : 4K Built-in RAM
$2000-$3FFF : 8K Expansion RAM (Block 1)
$4000-$5FFF : 8K Expansion RAM (Block 2)
$6000-$7FFF : 8K Expansion RAM/ROM (Block 3)
$8000-$9FFF : 8K Expansion RAM/ROM (Block 4)
$A000-$AFFF : 4K Expansion RAM/ROM (Block 5)
$B000-$BFFF : 4K Character ROM (45056)
$C000-$DFFF : 8K Basic ROM (49152)
$E000-$FFFF : 8K Kernal ROM (57344)

That setup contains 1K more RAM than a VIC-20 really has, so probably the computer would've become a bit more expensive. The benefits would be:

* At least 4096 bytes to the user, maximum 40K of continuous RAM
* Start of Basic always consistent at address 4096
* Screen matrix always consistent at address 3072
* 512 bytes in the second half of the screen matrix could be used for 64 custom characters or a short ML routine

I suppose the VIC-I chip would still be able to "see" the first 8K of RAM, so with memory expansion and a bit of rearrangement one could have a 184x176 fully bitmapped screen without messing with the lowest 1K. Or the screen matrix could be used for oversized text displays, double buffering or similar.
Anders Carlsson

Image Image Image Image Image
Mac
Vic 20 Newbie
Posts: 4
Joined: Thu Mar 22, 2007 6:32 pm

Re: If you could have changed one thing about the VIC...?

Post by Mac »

Victragic wrote:Imagine you were involved in the design of the VIC20, and had ONE change to the final design that Jack himself would have approved of.. what would it have been?
Basically (no pun intended), I could suggest no changes. It was perfect.

I did, however, purchase an expander for the port so that I could plug in multiple cartridges. It allowed me to expand memory, play games, keep a library of machine-language routines, etc. But if it came with all that stuff, it wouldn't have been so much fun.

Mac
PaulQ
undead vic
Posts: 1967
Joined: Sun Jan 14, 2007 2:57 pm

Post by PaulQ »

One thing I'd definitely change about the Vic is the general public perception of it as being useful only as spare parts for a C64. I mean, this computer gets absolutely no respect whatsoever. I think that it might've been different had the Commodore 64 been marketed as the VIC-40; at least then the Vic might have been recognized as the computer that paved the way to great gaming and hobby computing for many.
Post Reply