Git Product home page Git Product logo

ultitools's Introduction

Vic Flash Plugin

The Vic Flash Plugin is an "all-in-one" cartridge for the Commodore
Vic-20 that consists of 4 megabytes in-system programmable Flash ROM
and 32 kilobytes of RAM, enough for storing and running almost all
Vic-20 software ever produced.

You can try the Vic Flash Plugin in VICE, starting with release 2.2.5,
as follows.

	xvic -cartfp menu-s.bin

This is a sample menu image generated by makecart according to
prg.txt.  You can generate a more useful menu image from filelist.txt.
It expects to find a collection of Vic-20 software in the "vic20"
subdirectory.  Invoke it as follows:

	make menu4m.bin
	xvic -cartfp menu4m.bin

or (on real hardware)

	make flash4file.prg flash4m.bin

Copy the files flash4file.prg and flash4m.bin to a medium that is
accessible from a Vic-20 that is equipped with the Flash Plugin
cartridge.  Start the Vic-20 and invoke the loader, editing the file
name if necessary.

	POKE38913,32:SYS64802
	LOAD"FLASH4FILE.PRG",8
	LIST
	2011 SYS4127"FLASH.BIN":::::::
	2011 SYS4127"FLASH4M.BIN":::::
	RUN

Features

The RAM expansion type can be selected programmatically.

The BLK5 memory block can be write-protected for running
ROM-protected cartridge images.

For maximum compatibility, the configuration registers can be hidden
until hardware reset.

Software

All software is licensed under the GNU General Public License, either
version 2 (or at your option) any later version of the license. Some
parts are derived from PuCrunch by Pasi 'Albert' Ojala. All other
parts were written by Marko Makela.

The machine language software has been translated with the XA (xa65)
cross-assembler by Andre Fachat and others.

makecart
	Cartridge image generator software. Contains code from the
	PuCrunch compressor by Pasi 'Albert' Ojala.
	Sample source files are in prg.txt and filelist.txt.
flash4file
	Generates a flash programming image file for flash4.s and flash4file.s
	out of a 4M image generated by makecart.
ramtest.s
	32K RAM test. Starts in the unexpanded configuration.
flash4.s
	Copies data from 24k expanded RAM (POKE38913,56:SYS64802) to Flash ROM.
	Replace the last zero byte with operation codes and payload.
	See the source code for details.
	For "production" use, integration with the cbmlink suite is planned.
flash4file.s
	Copies data from a file (default "flash.bin") to Flash ROM.
	The file is to be generated like this:
	"flash4file menu-s.bin flash.bin".
	You may change the file name on the SYS line, provided that you do
	not change the length of the line. The program can be rerun.
flash4-s.prg
	A stand-alone program that copies the sample image menu-s.bin
	to the flash memory. This can be used for testing the hardware.
	Requires a 24K memory configuration (POKE38913,56:SYS64802).
readme.s
	Quick reference for using the menu software.
menu.s
	The menu software. Contains code from the PuCrunch decompressor
	by Pasi 'Albert' Ojala.

The menu software automatically selects the correct RAM expansion type
for program images. The selection can be overridden at image creation
time (with a '3' or '8' immediately after the closing quote; see
makecart.c, and see filelist.txt for examples).

By holding a key during hardware reset or pressing a key in the menu,
you can enter the Commodore BASIC interpreter in different memory
configurations:

key 	memory configuration
STOP 	unexpanded (3583 bytes free)
3 	3 KiB memory expansion (6655 bytes free)
8 	24 KiB memory expansion (28159 bytes free)
	(compatible with 8 KiB and 16 KiB)

Because the menu software skips the slow memory test, it will exit to
BASIC instantaneously. You can also hold one of these keys during the
reset sequence in order to avoid entering the menu altogether.

If you additionally hold the SHIFT key, you can hide the configuration
registers until hardware reset, for maximum compatibility with
programs that write to normally unmapped address space.

The menu software is accessed by the keyboard as follows.

key	 	memory configuration
a-z 		jump to the next item starting with the letter
A-Z 		jump to the previous item starting with the letter
CRSR UP		line up
CRSR DOWN	line down
CRSR LEFT	page up
CRSR RIGHT	page down
HOME 		first item
SHIFT+HOME	last item
RETURN 		activate the selected item
SHIFT+RETURN 	activate the selected item, hiding the configuration registers

Acknowledgements

I would like to express my thanks to the following people:

Juha Kouri for

* the idea
* implementing the bank switching logic in VHDL
* sourcing the parts and manufacturing the circuit boards for the prototypes

Pasi 'Albert' Ojala for

* writing and releasing PuCrunch under a reasonable license
* correspondence over the years

The VICE team for

* perfecting VICE so that it runs the menu software without glitches
* "reference implementations" of bank-switched memory expansions

Hannu Nuotio for

* applying my initial patch to VICE
* implementing Am29F032B programming emulation

my sons for

* showing interest to retro computing
* motivating me to complete this project

my wife Heli for

* bearing said sons
* bearing with me while I worked on this project

http://www.iki.fi/~msmakela/8bit/vfp/

ultitools's People

Contributors

svenmichaelklose avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.