![]() |
![]() |
|||||||||||||||||||
| HOME | WEB DESIGN | COMPUTING | GRAPHICS/PHOTOS | MUSIC | ||||||||||||||||||||
|
Early UK Computer Mags
Commodore 500/600/700
Introduction
Discoveries Part 1
Discoveries Part 2
6509 and 6525 chips
500 Video Memory
500 Hi-Res Graphics
Basic 4+ RAM Chart
Basic 4+ ROM Chart
Basic 4+ Source Code
Notes
CBM BASIC Program Lister
Commodore PET Brochure
Spam Safe Email Address?
DLX Simulator
Gnome's Computers
Java Applets
Magazine Indexer
Fixing Firefox Extensions
|
![]() |
500 Hi-Res GraphicsThe Commodore 500, 600 and 700 ComputersI spent some time investigating the 500's video possibilities initially through BASIC. After that I developed two machine code programs, SPRITE 0400 and SPRITE D000, which provided a simpler interface to the 500's hi-res screen and sprites from BASIC through the use of a SYS call plus some easier to remember 2-character commands. These files, along with programs to use them (plus some original CBM demo files) are available for download in two formats: either as separate programs or as a disk image for use in the Vice emulator. The programs are:
To use the image in Vice start up the emulator with: xcbm2 -model 510 (The xcbm2 executable will, by default, start up as a 6/700 unless the model parameter is sent). As the 500 was quite a slow beast it is worth setting the emulator to 200% speed. Next select Device settings from the Settings menu and attach the unzipped image to device 8. Select Drive settings from Settings and select the 8250 drive. Now you should be able to do a DIRECTORY on the default drive and load the files as normal. If you examine any of the programs that use the SPRITE 0400/D000 files you will see that they always start off with something like: 10 BANK 15 : IF PEEK (1024) <> 32 THEN BLOAD "SPRITE 0400",B15,P1024 20 BANK 0 : IF PEEK (55296) <> 76 THEN BLOAD "SPRITE D000",B0,P55296 30 Q=1024 : SYSQ,GS Lines 10 and 20 load the two machine code routines and 30 sets Q to the entry point for all the SYS commands before setting up the new screen areas in Bank 0. Once this is done then the text screen no longer uses the Bank 15 memory at $D000 which is now taken over by the second part of the M/C routines. All of the new commands are called by a single SYS command (SYS1024 or, as above, SYSQ) and the two characters following on determine the actual command. Here is the list of the commands provided:
The machine code sets up the video as follows:
$C000 - $CFFF Character set
$D000 - $D3E7 Text screen
$D3F8 - $D3FF Sprite mem ptrs (1)
$D400 - $D7E7 M-Col colour area
$D7F8 - $D7FF Sprite mem ptrs (2)
$D800 - $DBFF Reserved for M/C
$DC00 - $DDFF Sprite definition area for up to
8 sprites
Each sprite needs a 64-byte area for its definition. There are 256 possible areas in the 16k available to the VIC chip ($C000 - $FFFF). Those at $DC00 to $DDFF are numbered 112 to 119 internally though the SYSQ sprite commands above translate these to 1 to 8. Both sets of memory pointers point to these 8 areas. Set 1 is used when in text mode and the other is for when hi-res is turned on. |
||||||||||||||||||
| Copyright ©2003-2010 davidviner.com Terms and Conditions | ||||||||||||||||||||
![]() | ||||||||||||||||||||