Idag finns en hel del produkter för att utveckla program till Commodore 64 eller 128 på en modern PC, vilket är betydligt enklare än att göra det direkt på målmaskinen. Följ dessa steg för att komma igång med Assembler i Commodore 128. 1. Ladda hem Vice. Vice emulerar de flesta Commodore-maskinerna, vilket förutom C64/C128 även innefattar Pet, Vic 20 och Commodore +4. 2. Ladda hem CBM .prg Studio. Detta är en fullfjädrad integrerad utvecklingsmiljö för valfri Commodore-maskin. 3. Starta CBM .prg Studio. Välj Tools -> Options. Klicka på fliken Emulator Control. Bocka för C128 och peka C128-emulatorn från Vice (filen x128.exe). 4. Välj File -> New Project. Kryssa i C128, klicka Next. Vid Project Location, klicka Browse och välj var[…]

Jag använder min Commodore 128 för detta exempel, eftersom jag vill komma åt den höga upplösningen i 80-kolumnsläget, men koden är körbar även på C64, Vic 20 och Pet, med reservation för radbryten och annat. Jag använder alltså en skärm som rymmer 80 tecken per rad, och kan representera talen 0 till och med 80 grafiskt med ett tecken. Denna kod kan representera talen 1 till 80 och här får 70 minustecken representera talet 70: När helst ett värde måste skalas om, kan linjär interpolering användas. Låt säga att du vill presentera värden mellan, säg 50 och 550 under förutsättningen att du bara får plats med 80 tecken på en rad. Här laddar jag tio tal mellan 50 och 550[…]

Part 1. Part 2. On the Commodore 128, the screen is divided into characters. Each character consists of eight eight-pixel lines (bytes), which make a total of 64 pixels per character. Each pixel pair represent one of four available colors in multicolor mode. This can be demonstrated using this simple code: 10 GRAPHIC 3, 1 : REM CREATE CLEAN MULTICOLOR DISPLAY 20 DRAW 1, 0, 0 : REM DRAW USING COLOR 1 30 DRAW 2, 0, 1 : REM DRAW USING COLOR 2 40 DRAW 3, 0, 2 : REM DRAW USING COLOR 3 Now, this pattern is shown: If you add a line of code to change to high resolution graphics without clearing, we can see that two turned[…]

Part 1. Part 2. When Commodore 128 vector graphics can’t provide the desired details, there is an option to do bitmap graphics. The 128 have a built in command for creating pixel perfect graphics called  SPRSAV. You can create a pattern using the built-in editor (SPRDEF)… …and transfer the data into a string variable, and then copy that data to the screen, like so: 10 COLOR 0, 13 20 COLOR 4, 13 30 COLOR 1, 1 40 COLOR 2, 8 50 COLOR 3, 12 60 GRAPHIC 3, 1 70 SPRSAV 1, A$ 80 GSHAPE A$, 10, 10, 2 : REM DRAW SPRITE AT 10, 10 90 GSHAPE A$, 20, 11, 2 100 GSHAPE A$, 30, 12, 2 This should be[…]

The Commodore 128 have a rich API for making colorful vector graphics. The low resolution (160×200) color mode allows you to make the classic “Forrest Gump” smiley using these five lines of code: 10 COLOR 0, 13 : REM GREY BACKGROUND 20 COLOR 4, 13 : REM GREY BORDER 30 COLOR 1, 1 : REM COLOR 1 IS BLACK 40 COLOR 2, 8 : REM COLOR 2 IS YELLOW 50 COLOR 3, 12 : REM COLOR 3 IS SHADOW (DARK GREY) 60 GRAPHIC 3, 1 : REM LOWRES MULTICOLOR MODE 70 CIRCLE 3, 80, 101, 49, 99 : REM SHADOW OUTLINE 80 PAINT 3, 80, 101 : REM SHADOW FILL 90 CIRCLE 2, 97, 99, 49, 99 : REM SMILEY[…]

Genom kommandot SCALE kan man skala vektorgrafiken, alltså den grafik som skapas med kommandon som DRAW, CIRCLE och BOX – inte sprite-grafik eller text. När man arbetar med högupplöst grafik utan skalning är skärmen 320 pixlar bred och 200 pixlar hög. Detta program skapar en stor ellips som tar upp nästan hela skärmen. 10 GRAPHIC 1, 1 : REM AKTIVERA HÖGUPPLÖST GRAFIK 20 CIRCLE 1, 159, 99, 130, 80 : REM RITA EN ELLIPS ÖVER NÄSTAN HELA 30 INPUT A$ : REM TRYCK PÅ ENTER FÖR ATT AVSLUTA 40 GRAPHIC 0 : REM ÅTERGÅ TILL TEXT-LÄGET Genom att infoga SCALE-kommandot efter GRAPHIC-kommandot påverkar man skalan på det som ritas efter anropet på SCALE. SCALE har ingen effekt om det anropas[…]

You can add pitch bending using the SOUND command. By itself, you cannot use envelopes, just flat sounds in any given pitch. The arguments are voice (1, 2 or 3), frequency (0 to 65535), duration (16 = one second), pitch bend direction (0 = up, 1 = down, 2 sine up and down), minimum frequency, pitch bend speed, waveform (0 = triangle, 1 = saw tooth, 2 = square, 3 = noise) and finally pulse width (if waveform is 2). This will make a straight beep, that will play for two seconds: SOUND 1, 4000, 32 And now for something completely different, a hysterical vibrato! SOUND 1, 5000, 32, 2, 3000, 800, 1 To add an envelope to the sound,[…]

Apart from PLAY, the commands that are available for making sounds and music are TEMPO, ENVELOPE, SOUND and FILTER. TEMPO lets you control playback speed. The slowest is 1 and the fastest is 255. ENVELOPE lets you modify the ten predefined instruments. You set the instruments using the T control character (0 to 9). The arguments are: – The instrument you want to overwrite (0 to 9) – Attack rate (0 to 15) – Decay rate (0 to 15) – Sustain level (0 to 15) – Release rate (0 to 15) – Waveform (0=triangle, 1=sawtooth, 2=square with adjustable pulse width, 3=noise, 4=ring modulation) – Pulse width (0 to 4095) – only relevant if waveform is set to 2. This program[…]