Category Archives: Commodore

Tu Micro Commodore Monthly issue 6

Faber to the rescue!

The so far only missing Tu Micro Commodore Mensual issue has been scanned by Faber, and after some cleaning and cropping is available here to download.

Cover TMC 6

Contents:

  • Review: Starship Andromeda
  • High Level: The 6526 CIA. The C-64’s great unknown (III)
  • Hardware: Motor control
  • Type-in Tu micropoly
  • BASIC course
  • Machine code: Lets get to work!
  • Hardware review: Mouse/ Trackball
  • Software: Relative files
  • Professional software: The Music Studio
  • Type-in: Caredit

Download: TMC_2nda_06.cbz (75MB)

Tu Micro Commodore Monthly #13

This is the issue # 13 of the Spanish magazine Tu Micro Commodore.

Many thanks to Faber for donating a complete example of this issue for scanning.

tmc13_cover

Contenido

  • Review: Dan Dare
  • Review: Superconta 64
  • Type-in: La brocha fantástica
  • Kernal Routines (II)
  • Hardware: Digi-View Amiga
  • Type-in: Scroll Maker
  • Type-in: Assembling the unassemblable
  • Infinite precision
  • Type-in: Astro-Duel: duelo en las estrellas

Download: TMC_2nda_13.cbz (91MB)

Tu Micro Commodore Montly #14

Just finished scanning the issue 14 of the Spanish magazine Tu Micro Commodore (monthly edition).

Contents:

  • Review: Nemesis, the final challenge
  • Review: Deluxe Paint
  • Hardware: Citizen 120-D Printer
  • Type-in: El robot hortelano
  • Floppy (I)
  • Type-in: Life: World’s oldest game
  • Kernal routines (III)
  • Can machines think?
  • Type-in: Turb Micro C-128 (II)

Download: TMC_2nda_14.cbz (80MB)

Flashback: Sprite BASIC

In Flashback I present selected posts recycled from the first iteration of SolidState blog.


Sprite BASIC is an expansion of 47 new commands for the C64 BASIC, written by Andreas Schulteiß and originally published as a type-in on the Spanish magazine Commodore World #33 of January 1987 (and possibly also in the RUN magazine in other places of Europe and the U.S.A.).
Sprite BASIC uses interrupts to handle sprites and their collisions, and also the sound, that way it’s posible to sprites moving on the screen and sound while the BASIC program continue execution.

Commands for customized sprites and characters

SHOW sprite number (1-8 ), multicolor flag (0-1), priority (0-1) Makes visible a sprite. Example:

SHOW1,1,0 shows sprite 1 in multicolor and without priority over the background

HIDE sprite number (1-8 ) Hides a sprite. Example:

HIDE 1 hides sprite 1.

SET sprite number (1-8 ), X position (0-511), Y position (0-255). Places a sprite in a determined position on the screen. Example:

SET3,160,130 places sprite 3 on the center of the screen

BLOCK sprite number (1-8 ), block number (0-63). Selects the data storage area for the sprite. Example:

BLOCK1,10 selects block 10 for sprite 1.

COLOR sprite number (1-8 ), color (0-15). Selects the color of the sprite. Example:

COLOR7,1 selects white color for sprite 1.

MULTI color1 (0-15), color2 (0-15). Defines the multi-colors for all sprites. Example:

MULTI6,2 selects the colors blue and red

SIZE sprite number (1-8 ), X expansion (0-1), Y expansion (0-1). Defines X and Y expansion of the sprite. Example:

SIZE4,1,0 sprite 4 expands in horizontal.

SPREDIT block number (0-63). Sets the block number or sprite data bank that is going to be edited with the PAT command(see below). Example:

SPREDIT12 selects block 12

CHREDIT character number (0-511). Sets the character that is going to be edited with PAT. Example:

CHREDIT1 the character "A" is going to be edited.
CHREDIT257 the "A" of the second character set is the one that is going to be edited.

PAT “definition string”. Used to define a sprite or character shape. If the string lenght is of 8 characters, a character is defined (see CHREDIT) and 8 definitions would be needed. If it is of 24, a sprite is created (see SPREDIT) and 24 definitions would be needed. A character “.” means pixel off, and any other character, pixel on. Example:

PAT "...***.."

MPAT “definition string” (12 characters). Used to define multicolor sprites: “.” is pixel off, “A” pixel in sprite’s color, “B” pixel in multicolor1 and “C” pixel in multicolor2. Example:

MPAT " AA...BB...CC "

OLD copies back the two character sets in the ROM of the C-64, thus the characters defined with CHREDIT and PAT are replaced by normal characters.
COPY bloque1 (0-63), bloque2 (0-63). Copies a block from one place to another. Example:

COPY1,2 copies block 1 over block 2.

Movement commands

MOVE sprite number (1-8 ), angle (0-360, counterclockwise according to the horizontal), steps size, speed (0-127, 1 the maximun), number of steps (0-65535, 0 is continuous movement), BASIC flag(0 continue program, 1 stop until sprite stops moving). Used to move sprites on the screen. Example:

MOVE1,90,1,1,10,1 sprite 1 moves upwards at maximum speed in 1 pixel steps. It takes ten steps in total and then the BASIC program continues.            

MOVE8,77,4,4,20,0,0 sprite 8 moves continuously in an angle of 77 degrees at speed 20, in 4 pixels steps. The BASIC program continues execution meanwhile.

NOMOVE sprite number (1-8 ). Stop the movement of a sprite. Example:

NOMOVE3 stops the movement of sprite 3.

TURN sprite number (1-8 ), angle (0-360), number of steps (0-65535), number of repetitions (0-255, being 0 uninterrupted). Indicates a sprite to change it’s direction of movement after a determined number of steps. Example:

TURN1,90,10,20 sprite 1 turns 90 degrees after taking 10 steps, repeating this 20 times.

NOTURN sprite number (1-8 ). Stops the change of direction of a sprite and it return to move normally. Example:

NOTURN2

ANIMATE sprite number (1-8 ), first block (0-63), number of blocks (0-63), number of steps. Sprite changes alternatively of shape. Example:

ANIMATE1,13,3,10 sprite 1 changes of shape (data bank) after each 10 steps, beginning in the block 13 and following in 14-15.

NOANIMATE sprite number (1-8 ). Stops the animation. Example:

NOANIMATE4 stops the animation of sprite 4

Collision handling commands

SPCOL sprite number (1-8 ), line number (0-63999). Make the program to branch to the specified line number when a sprite-sprite collision is detected. Example:

SPCOL1,1000 if sprite 1 collides with another sprite the program branchs to the line 1000.

NOSPCOL sprite number. Reverts the previous command. Example:

NOSPCOL1

CHCOL sprite number (1-8 ), line number (0-63999). As SPCOL but for character-sprite collisions.
NOCHCOL sprite number (1-8 ). Reverts CHCOL.
BACK After SPCOL or CHCOL, the program will jump back when finding this order, to the exact place from which it bracnh. The result is like GOSUB/RETURN.
POP Erases the direction for BACK. In this way it can return to any part of the program with GOTO instead of BACK.
CLFLAG The collision flag remains activated when CHCOL or SPCOL is executed, thus if another collision takes place it would not be detected, that’s why it’s recommendable to put this command at the end of the collision subroutine, or immediately after the collision condition has been solved.
(Note: The magazine recommends to place this command at the beginning of the subroutine, but that way, as the condition that produced the subroutine call has not been resolved yet, the result is that the subroutine is executed again and again, resulting in a stack overflow and the conclusion of the program.)

Sound commands

VOL volume (0-15). Sets the volume. Example:

VOL15

ADSR voice (1-3), attack (0-15), decay (0-15), sustain (0-15), release (0-15). Sets the sound envelope. Example:

ADSR1,1,9,0,0 produces piano sound.

WAVE voice (1-3), waveform (0-3). Sets the waveform. It can be: 0=triangle, 1=sawtooth, 2=square, 3=white noise. Example:

WAVE1,3 voice 1 produces noise

PULSE voice (1-3), pulse width (0-65535). Sets the pulse width for a square wave. Example:

PULSE2,2000 voice 2 has a relation of 1:2000.

PLAY voice (1-3), frequency in Hertz, duration in seconds, flag (0=the program continues. 1=the program stops until the sound finishes). Plays a note. Example:

PLAY1,400,1,0 Plays the A note for 1 second while the BASIC program is executed.

Other commands

CURSOR column (0-39), row (0-24). Sets the cursor on a defined screen position. Example:

CURSOR20,12 places the cursor on the center of the screen

PLOT column (0-39), row (0-24), code (0-255), color (0-15). Places a character on the screen including color. Example:

PLOT20,12,1,0 prints a black A on center of the screen.

BORDER color (0-15). Changes the screen border color.
PAPER color (0-15). Changes the screen background color.
INK color (0-15). Sets the character color for the following PRINT sentences.
NOBREAK Disables the STOP key
RENEW Recovers a BASIC program erased with NEW or reset.
KILL Disables Sprite BASIC.

Functions

SPX(S). Contain the X coordinate of sprite S. Example:

A=SPX(1)

SPY(S). Contains the Y coordinate of sprite S. Example:

PRINT SPY(7)

ANG(S) Indicates the angle the sprite S is moving.
SCOL(S) Indicates if sprite S has hit (1) or not (0) another sprite. Example:

IF SCOL(2) THEN PRINT"HIT"

CCOL(S) If sprite S has hit a character on the screen returns 1, if not, 0.
CHAR(X, Y) Returns the character that is on column X, row Y of the screen (in screen code).
FIRE(P) Returns the state of the fire button of the joystick in port P. Example:

X=FIRE(1)

JOY(N) This function allows the use of the joystick at any moment: N=1 “asks” joystick 2 in all directions. N=2 joystick 2 only in horizontal direction (180 and 360 degrees). N=3 only in vertical (90 and 270 degrees). N=4 horizontal and vertical without the diagonals. N=5 to 8 are the equivalents for port 1.

Download zipped D64 image: spritebasic

The image contians:

  • SBASICGEN: BASIC generator of Sprite BASIC, typed from the magazine.
  • SPRITE BASIC: The Sprite BASIC executable, load this to start using Sprite BASIC.
  • CARS: Small demo game written in Sprite BASIC, load this after initializing Sprite BASIC.

Dumping the HAL M-128 cartridge

HAL Sociedad Anonima was one of many Argentine Commodore 64 y 128 cartridge manufacturers during the ’80s.

The HAL M-128 is a dual mode cartridge: 128 and 64, selectables by means of a switch. It also includes a reset button.

Both modes share almost the same functions:

  • Disk turbo (600% faster)
  • Head Rattle disabler
  • Printed screen dumps.
  • 10 seconds disk format.
  • Numer base conversor: decimal, hexa and binary.
  • 4KB extra under BASIC.
  • etc.

I dont own a C128 therefore I’ll talk about the 64 mode.

This is the startup screen with the cartridge plugged and set to 64 mode:

There’s a help screen by typing <-M (Left arrow M):

Now a brief explanation of the way cartridges work on the Commodore 64.

Continue reading Dumping the HAL M-128 cartridge

Flashback: Tu Micro Commodore Semanal

In Flashback I present selected posts recycled from the first iteration of SolidState blog.

 

Tu Micro Commodore Semanal was a Spanish magazine devoted to Commodore computers, the weekly edition ran for 18 issues and then switched to monthly format.

 

Number 1

Contents:

  • Review: Booga-Boo
  • Review: Ganimedian Rescue
  • Hardware: The Commodore 128

Download (62.9MB)

 

Number 2

Contents:

  • Review: Baloncesto
  • Type-in: Memorizaje
  • Hardware: Koala Pad Touch Tablet
  • The Commodore 16’s colours

Download (63.9MB)

 

Number 3

Contents:

  • Review: Frankie goes to Hollywood
  • Type-in: Tiro
  • Sprites management in the 128
  • Hardware: Star SG-10

Download (60.7MB)

 

Number 4

Contents:

  • Review: Theatre Europe
  • Using Sprites in the 128
  • Type-in: Ensamblador
  • Hardware: The 1702 video monitor

Download (67.4MB)

 

Number 5

Contents:

  • Review: Ghostbusters
  • Type-in: Fronton
  • Hardware: The Commodore 1541 disk drive
  • Graphic creation in the C128

Download (65.3MB)

 

Number 6

Contents:

  • Review: Solo Flight
  • Type-in: Peso Ideal
  • Hardware: The GP-700-VC color printer
  • Graphics in the Commodore 128

Download (62.8MB)

 

Number 7

Contents:

  • Review: Archon
  • Type-in: Copión 64
  • Hardware: Joysticks
  • ¡Música Maestro!

Download (62.5MB)

 

Number 8

Contents:

  • Review: Impossible Mission
  • Type-in: Spritemon
  • Review: Winter Games

Download (57.7MB)

Continue reading Flashback: Tu Micro Commodore Semanal


Flashback: MOS6572 VIC-II Timings

In Flashback I present selected posts recycled from the first iteration of SolidState blog.

 

Argentina was the only place in the world where Commodore allowed it’s computers to be license built and co-branded with the local manufacturer, that manufacturer being Drean.

Commodore models assembled by Drean were the Commodore 16, the C64 and the C64C. They also sold the C128 but it was only a rebadged NTSC C128.

The other thing unique about the Drean Commodore computers was the use PAL-N as video standard.

The PAL-N standard uses almost the same audio carrier that the NTSC standard, this prevented the use of the PAL-B versions of the TED and VIC-II chips.

Therefore, Commodore manufactured special PAL-N versions of both TED and VIC-II chips, this article is about the later.

 

MOS6572

The PAL-N version of the VIC-II is denominated MOS6572 and to this day there’s only two revisions known of:

  • R0 – Ceramic package
  • R1 – Plastic package

As all the C64 clocks are derived from the same single crystal and generated mostly by the VIC-II, the different audio carrier frequency called not only for a new video chip, but also a new crystal.

As we will find later, the crystal used on the Drean C64 is of 14.328224 MHz.

 

Continue reading Flashback: MOS6572 VIC-II Timings