Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Niidae Wiki
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
VIC-20
(section)
Page
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Design == {{More citations needed|section|date=April 2023}} The VIC-20 was intended to be more economical than the PET computer. It was equipped with 5 [[kilobyte|KB]] of [[Static random-access memory|static RAM]] and used the same [[MOS Technology 6502|MOS 6502]] [[central processing unit|CPU]] as the PET. The VIC-20's video chip, the [[MOS Technology VIC]], was a general-purpose color video chip designed by Al Charpentier in 1977 and intended for use in inexpensive display [[Computer terminal|terminals]] and [[game consoles]], but Commodore could not find a market for the chip. While newer PETs had the upgraded BASIC 4.0, with disk commands and improved [[Garbage collection (computer science)|garbage collection]], the VIC-20 reverted to the 8 KB BASIC 2.0 used on earlier PETs as part of another of the design team's goals: 20 KB system ROMs. There are no dedicated sound or graphics features. The VIC-20 has a composite output, which provides a sharper, cleaner picture if a dedicated monitor is used. The TRS-80 Color Computer and [[Atari_8-bit_computers#400_and_800_release|Atari 400]] have only RF video output. An external RF modulator was necessary to use the computer with a TV set. The "20" in the computer's name was widely assumed to refer to the text width of the screen (although in fact, the VIC-20 has 22-column text, not 20) or that it referred to the combined size of the system ROMs (8 KB BASIC+8 KB [[KERNAL]]+4 KB character ROM).{{Citation needed|date=February 2019}} Bob Yannes claimed that "20" meant nothing in particular and said "We simply picked '20' because it seemed like a friendly number and the computer's marketing slogan was 'The Friendly Computer'. I felt it balanced things out a bit since 'Vic' sounded like the name of a truck driver." [[File:4860 - VIC-20 Mainboard.JPG|thumb|VIC-20 mainboard]] === Graphics === [[File:MOS 6561 VIC.jpg|thumb|right|The MOS Technology 6561 VIC chip]] The graphics capabilities of the [[MOS Technology VIC|VIC chip]] (6560/6561) are limited but flexible. At startup, the screen shows 176Γ184 pixels, with a fixed-color border to the edges of the screen. Since a [[PAL]] or [[NTSC]] screen has a [[Aspect_ratio_(image)#4:3|4:3]] width-to-height ratio, each VIC pixel is much wider than it is high. The screen normally shows 22 columns and 23 rows of 8-by-8-pixel characters; it is possible to increase these dimensions up to 27 columns, but the characters would soon [[overscan|run out the sides of the monitor]] at about 25 columns. Just as on the PET, two different 256-character sets are included, the uppercase/graphics character set and the upper/lowercase set, and reverse video versions of both. Normally, the VIC-20 operates in a high-resolution mode whereby each character is 8Γ8 pixels in size and uses one color. A lower-resolution multicolor mode can also be used with 4Γ8 characters and three colors each, but it is not used as often due to its extreme blockiness. [[File:Screen color test CommodoreVIC20 Multicolor.png|thumb|left|16-color capability]] The VIC chip does not support a true [[bitmap]] mode, but programmers can define their own custom character sets. It is possible to get a fully addressable screen, although slightly smaller than normal, by filling the screen with a sequence of different double-height characters, then turning on the pixels selectively inside the RAM-based character definitions. The [[Super Expander]] cartridge adds BASIC commands supporting such a graphics mode using a resolution of 160Γ160 pixels. It is also possible to fill a larger area of the screen with addressable graphics using a more dynamic allocation scheme if the contents are sparse or repetitive enough. This is used by the port of ''[[Omega Race]]''.{{Citation needed|date=February 2020}} The VIC chip has readable [[Scan line|scan-line]] counters but cannot generate [[interrupt]]s based on the scan position. The two VIA timer chips can serve this purpose through an elaborate programming technique, allowing graphics to be mixed with text above or below it, two different backgrounds and border colors, or more than 200 characters for the pseudo-high-resolution mode. The VIC chip can process a [[light pen]] signal via the joystick port, but few appeared on the market. The VIC chip outputs [[luma (video)|Luma]]+Sync and [[chrominance|Chroma]] video signals, which are combined to create the VIC-20's [[composite video]] output. Commodore did not include an [[RF modulator]] inside the computer's case because of [[FCC]] regulations. It can either be attached to a dedicated monitor or a TV set using the external modulator included with the computer. === Sound === The VIC chip has three [[pulse wave]] generators and a [[white noise]] generator with overall volume control and mono output. Each pulse wave generator has a range of three [[octave]]s located on the scale about an octave apart, giving a total range of about five octaves. === Memory === [[File:4849 - VIC-1211A Super Expander w 3k RAM.JPG|thumb|A {{val|3|u=KB}} RAM expansion cartridge with BASIC extension ROM]] [[File:4853 - VIC-1111 16K RAM For VIC-20 open.JPG|thumb|A {{val|16|u=KB}} RAM expansion cartridge with PCB view]] The VIC-20 shipped with {{nowrap|5 KB}} [[random-access memory|RAM]], but {{nowrap|1.5 KB}} of this is used for the video display and dynamic aspects of the [[read-only memory|ROM]]-resident [[Commodore BASIC]] and [[KERNAL]] (a low-level operating system). Only 3,583 [[byte]]s of BASIC program memory for code and [[Variable (computer science)|variables]] are actually available on an unexpanded machine. Unlike the PET, the VIC-20 does not include a [[Machine code monitor|machine language monitor]], but Commodore offered them on disk, tape, or cartridge, with several different [[executable]]s to load into various memory locations. The monitor programs were the same as the PET monitor but added a mini-[[Assembly language#Assembler|assembler]] instead of requiring the user to enter [[hexadecimal]] [[opcode]]s. The VIC-20's RAM is expandable through the cartridge port via a RAM cartridge. RAM cartridges were available from Commodore in several sizes: {{val|3|u=KB}} (with or without an included "Super Expander" BASIC extension ROM), {{val|8|u=KB}}, and {{val|16|u=KB}}. The internal [[memory map]] is reorganized if you plug in {{val|8|u=KB}} and {{val|16|u=KB}} cartridges, leading to a situation where some programs only work if the right amount of memory is present (the most significant divide being between a machine with no or {{val|3|u=KB}} extra memory on one hand, and a machine with more extra memory on the other).<ref>The main issue was that BASIC could only see one contiguous chunk of memory. That is, in order for your expansion memory to be visible and useful to BASIC, it needs to be added next to the existing BASIC program area. However, the video buffer memory was hardwired to a position rather close to the default location of the BASIC program area, so expansion cartridges offering more than {{val|3|u=KB}} had to move the location where BASIC looked for its program.</ref> Most expansion cartridges featured hardware [[DIP switch]]es, allowing the RAM to be enabled in user-selectable memory blocks. Since the VIC-20 was designed to use SRAM rather than [[Dynamic random-access memory|DRAM]], the system board has no provisions for DRAM refresh. RAM expansion cartridges ultimately allowed adding up to {{val|24|u=KB}} to the BASIC user memory; together with the {{val|3.5|u=KB}} built-in user memory, this gave a maximum of {{val|27.5|u=KB}} for BASIC programs and variables. Memory not visible to BASIC could still be used by machine code programs.{{citation needed|date=March 2023}} {| class="wikitable" |+ Memory map<ref name="zi_mm">{{cite web|title=VIC-20 memory map (long)|url=http://www.zimmers.net/cbmpics/cbm/vic/memorymap.txt|date=19 September 2005|access-date=2013-05-20|publisher=zimmers.net}}</ref> ! Address<br/>(hexadecimal) || Size<br/>[in KB] || Description || Cartridge<br>decoded<ref name="ca_pin">{{cite web|title=VIC 20 / Commodore 64 RS 232 |url=http://www.commodore.ca/manuals/pdfs/commodore_pet_vic-20_c64_port_pinouts.pdf|date=30 March 2011|access-date=2013-05-21|publisher=commodore.ca}}</ref> |- |align="right"| {{mono|0000}} <!--{{mono|03FF}}--> |align="right"| 1.0 || RAM with jump vectors etc. || |- |align="right"| {{mono|0400}} <!--{{mono|1000}}--> |align="right"| 3.0 || Expansion || * |- |align="right"| {{mono|1000}}<!--{{mono|1FFF}}--> |align="right"| 4.0 || RAM for BASIC and screen || |- |align="right"| {{mono|2000}}<!--{{mono|3FFF}}--> |align="right"| 8.0 || Expansion block 1 || * |- |align="right"| {{mono|4000}}<!--{{mono|5FFF}}--> |align="right"| 8.0 || Expansion block 2 || * |- |align="right"| {{mono|6000}}<!--{{mono|7FFF}}--> |align="right"| 8.0 || Expansion block 3 || * |- |align="right"| {{mono|8000}}<!--{{mono|8FFF}}--> |align="right"| 4.0 || ROM character bitmap || |- |align="right"| {{mono|9000}}<!--{{mono|93FF}}--> |align="right"| 1.0 || I/O for [[MOS Technology VIC|VIC]], [[MOS Technology 6522|6522]] VIA#1, 6522 VIA#2, block 0 || |- |align="right"| {{mono|9400}}<!--{{mono|95FF}}--> |align="right"| 0.5 || Used for color RAM when expansion RAM at block 1 || |- |align="right"| {{mono|9600}}<!--{{mono|97FF}}--> |align="right"| 0.5 || Color RAM (normally) || |- |align="right"| {{mono|9800}}<!--{{mono|9BFF}}--> |align="right"| 1.0 || I/O block 2 || * |- |align="right"| {{mono|9C00}}<!--{{mono|9FFF}}--> |align="right"| 1.0 || I/O block 3 || * |- |align="right"| {{mono|A000}}<!--{{mono|BFFF}}--> |align="right"| 8.0 || Decoded for expansion ROM || * |- |align="right"| {{mono|C000}}<!--{{mono|DFFF}}--> |align="right"| 8.0 || ROM [[Commodore BASIC|BASIC]] || |- |align="right"| {{mono|E000}}<!--{{mono|FFFF}}--> |align="right"| 8.0 || ROM [[KERNAL]] || |} === Peripherals and expansion === [[File:Commovc20side5580-01 (retuschiert).jpg|thumb|The side of the computer showing the joystick "control port"]] The VIC-20 has card [[edge connector]]s for program/expansion cartridges and a PET-standard [[Commodore Datasette|Datassette]] tape drive. The VIC-20 did not originally have a disk drive; the [[VIC-1540]] disk drive was released in 1981. There is one [[Atari joystick port]], compatible with the digital [[joystick]]s and [[paddle (game controller)|paddles]] used with [[Atari 2600|Atari VCS]] and [[Atari 8-bit computers]];<ref name="flynn198206">{{cite news | url=http://www.atarimagazines.com/compute/issue25/035_1_USING_ATARI_JOYSTICKS_WITH_YOUR_VIC.php | title=Using Atari Joysticks With Your VIC | work=Compute! | date=June 1982 | access-date=6 October 2013 | author=Flynn, Christopher J. | pages=79}}</ref> a serial [[Commodore bus|CBM-488]] bus (a serial version of the PET's [[IEEE-488]] bus) for [[daisy chain (electrical engineering)|daisy chain]]ing [[Commodore 1540|disk drives]] and printers; a [[transistor-transistor logic|TTL]]-level "user port" with both [[RS-232]] and [[Centronics]] signals (most frequently used as RS-232, for connecting a [[modem]]<ref>The Commodore VICModem and later models connected directly to the user port's edge connector. But in order to connect the VIC to industry-standard [[modem]]s and other [[RS-232]] devices, the user needed to purchase a separate [[transistor-transistor logic|TTL]]-to-RS232 [[volt]]age converter box (standard TTL voltages lie between 0 and 5 V, while RS-232 uses Β±12 V).</ref>). The VIC has a [[ROM cartridge]] port for games and other software as well as for adding memory to the machine. Port expander boxes from Commodore and other vendors allow more than one cartridge to be attached at a time. Cartridge size ranges from {{nowrap|4β16 KB}} in size, although the latter was uncommon due to its cost. The VIC-20 can be hooked into external electronic circuitry via the joystick port, the "user port," or the memory expansion cartridge port, which exposes various analog to digital, memory bus, and other internal [[input/output|I/O]] circuits to the experimenter. [[PEEK and POKE]] commands from BASIC can be used to perform [[data acquisition]] from temperature sensors, control robotic [[stepper motor]]s, etc. In 1981, Tomczyk contracted with an outside engineering group to develop a direct-connect modem-on-a-cartridge (the [[Commodore 64 peripherals#Serial communications|VICModem]]), which at US$99 became the first modem priced under US$100. The VICModem was also the first modem to sell over 1 million units. VICModem was packaged with US$197.50 worth of free telecomputing services from [[The Source (online service)|The Source]], [[CompuServe]], and [[Dow Jones & Company|Dow Jones]]. Tomczyk also created a [[Special interest group|SIG]] called the Commodore Information Network to enable users to exchange information and take some of the pressure off of Customer Support inquiries, which were straining Commodore's lean organization. In 1982, this network accounted for the largest traffic on CompuServe.{{Citation needed|date=March 2008}} Commodore's VIC-1010 Expansion allows the user to connect multiple devices to the VIC-20's cartridge port. It has its own power supply and six slots that can be used to connect memory extensions, game cartridges or other peripherals.<ref>{{ citation | url=https://northhertsmuseum.org/north-hertfordshire-museum/collections/object-details/330668/ | title=VIC-1010 Expansion Board | date=11 July 2014 | access-date=5 February 2024 }}</ref> [[File:VIC-1010-Expantion module.jpg|alt=Commodore VIC-1010 Expansion module|thumb|Commodore VIC-1010 Expansion module]]
Summary:
Please note that all contributions to Niidae Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Encyclopedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Search
Search
Editing
VIC-20
(section)
Add topic