Programming

Programming, or coding, involves combining commands from a computer programming language to create a program that instructs a computer system to perform a specific function. The person who does this work is called a programmer or coder.
Note: Programming can be difficult. The first steps, such as using a few BASIC commands from your computer manual can be easy, but for developing a complex program it's often necessary to understand much more of the underlying aspects of both hard- and software.
In the early days of digital computing, programs were developed and saved onto paper tape or punched cards. Since the 1970s, with ever-expanding memory (RAM) and storage such as floppy and hard disks, many tools have become available to assist the programmer, such as editors and compilers, etc.
The syntax of any given computer or programming languages is standardised (and generally easy learnable). There are many different programming languages, such as BASIC, Pascal, Comal, machine code or Assembler etc.
Attention: After writing a program into the computer's memory (which loses all data when the computer is switched off), it is essential to save the program to a data memory to ensure it is not lost.
Examples of programs[edit | edit source]
BASIC 2.0 Listing for C64[edit | edit source]
- For a C64 in BASIC 2.0
10 REM *** C64-WIKI STAR DEMO *** 15 REM * REM-lines aren't needed! * 20 PRINT CHR$(147); "!!! THE C64-WIKI STAR DEMO !!!" 25 REM * Setting up frame and background color (start with COL=0 ) 30 POKE 53280,COL : POKE 53281,PEEK(53280) 35 REM * Randomize value in variable COL 40 LET COL = INT( RND(1) *16) 45 REM * Randomize text color with COL 50 POKE 646, COL 55 REM * Randomize position of cursor 60 POKE 211, INT( RND(1) *40)): POKE 214, INT( RND(1) *24)): SYS 58640 65 REM * Print a star on monitor 70 PRINT "*"; 75 REM * 1/25 chance for changing border color 76 REM * back to line 30 80 IF RND(1) < 1/25 THEN GOTO 30 85 GOTO 40: REM back to line 40 90 REM *** STOP ONLY WITH RUN/STOP KEY !!! *** 95 END: REM * END isn't needed! *
Compressed Listing, bad programming style[edit | edit source]
- Shorted and memory saved program for a C64 (same program routine!):
1 PRINT"{clr}!!! THE C64-WIKI STAR DEMO !!!":GOTO4
2 C=INT(RND(1)*16):POKE 646,C:POKE211,INT(RND(2)*40):POKE214,INT(RND(3)*24)
3 SYS58640:PRINT"*";:IFRND(1)>=.04THEN2
4 POKE53280,F:POKE 53281,F:GOTO2
- Second variant - more faster and shorter:
1 print"{clr}!!! the c64-wiki star demo !!!":s=4^5:c=s*54:d=53280:e=d+1
2 f=rnd(1)*16:o=rnd(1)*1e3:pokec+o,f:pokes+o,42:ifrnd(1)>=.04then2
3 poked,f:pokee,f:goto2
Listing in C for cc65[edit | edit source]
#include <stdlib.h>
#include <conio.h>
void main(void)
{
unsigned char breite, hoehe;
unsigned char hintergrund_alt, rahmen_alt, text_alt;
unsigned char farbe = COLOR_BLACK;
_randomize();
screensize(&breite, &hoehe);
clrscr();
hintergrund_alt = bgcolor(farbe);
rahmen_alt = bordercolor(farbe);
text_alt = textcolor(COLOR_YELLOW);
cputs("!!! Das C64-Wiki Sterne Demo !!!");
while (! kbhit()) {
farbe = rand() % 16;
textcolor(farbe);
cputcxy(rand() % breite, rand() % hoehe, '*');
if (rand() % 100 <= 1) {
bgcolor(farbe);
bordercolor(farbe);
}
}
cgetc();
bgcolor(hintergrund_alt);
bordercolor(rahmen_alt);
textcolor(text_alt);
clrscr();
}
Example in Forth[edit | edit source]
\ Random Numbers \ The algorithm is ported from cc65. | create seed 5 allot : seed! ( n -- ) seed 5 erase seed 3+ ! ; : seed@ ( -- n ) seed 3+ @ ; : random ( -- n ) seed 1+ 2@ seed 2@ d+ $3.1415927 d+ seed 1+ 2! seed 2+ @ ; : randomize ( -- ) $d012 c@ 256 * $a0 c@ or seed! ; : randint ( max -- n ) random swap mod ; 1 seed!
\ Star Demo Main
-1 +load \ random
: random-color ( -- n ) 16 randint ;
: text-color! ( n -- ) 646 c! ;
: border-color! ( n -- ) 53280 c! ;
: background-color! ( n -- ) 53281 c! ;
: star demo ( -- )
randomize
page ." !!! C64-Wiki star demo !!!"
begin
random-color
dup text-color!
l/s randint c/l randint at
ascii * emit
100 randint 2 <
if
dup border-color!
background-color!
else drop then
stop? until
cold ;
Example in Assembler[edit | edit source]

- No text printing and changing background color:
; Program: Sternenhimmel
; Start: SYS 49152
; ACME: "acme.exe -o sterne.prg -f cbm sterne.asm"
; 64TASS: "64tass.exe -o sterne.prg sterne.asm"
*= $c000 ; Startadresse 49152 oder $c000
start lda #147 ; Bildschirm löschen
jsr $ffd2
lda #$00 ; Bildschirm schwarz
sta $d020
sta $d021
lda #$81 ; SID-Tongenerator - Stimme 3
sta $d412 ; Wellenform = Rauschen
lda $d012 ; aktuelle Rasterstrahlposition auslesen (SEED)
ora %10000000 ; MSB setzen, für hohe Frequenzen
sta $d40f ; oberes Frequenz-Byte setzen - Stimme 3
; Zufallszahl $0400...$07e7 bzw. $d800...$d8e7
endlos ldx $d41b ; Zufallswert holen (Oszillator3)
stx $fb ; Bildschirmposition Low-Byte
stx $fd ; Farb-Ram-Position Low-Byte
lda $d012 ; Zufallswert holen (Rasterstrahlposition)
and #%00000011 ; Wertebereich $00-$03
ora #%00000100 ; Wertebereich $04-$07
sta $fc ; Bildschirposition High-Byte $04-$07
and #%00000011 ; Wertebereich $00-$03
ora #%11011000 ; Wertebereich $d8-$db
sta $fe ; Farb-Ram-Position High-Byte $d8-$db
cmp #%11011011 ; wenn Wertebereich
bne weiter ; $dbe8...$dbff
cpx #$e8 ; bzw. $07e8...$07ff
bcs endlos ; dann wiederholen
weiter ldx #$00
lda #'*' ; Sternchen in
sta ($fb,x) ; Bildschirmspeicher schreiben
farbe lda $d41b ; Zufallswert holen (Oszillator3)
and #%00001111
beq farbe ; wenn schwarz, dann nochmal
sta ($fd,x) ; zufällige Farbe 1-15 ins Farbram schreiben
taste jsr $ffe4 ; Taste gedrückt?
beq endlos ; nein -> Sprung nach endlos
rts ; ja -> Rücksprung ins BASIC