Targets supported by ugBASIC

Amstrad CPC 664 (cpc)

The cpc target has been supported by ugBASIC since version 1.12. The compiler can produce disk image in "dsk" format.



How to start

You can use the SANDBOX to try the ugBASIC compiler, without download anything. This tool has been designed to quickly test whether the code you are writing compiles correctly and determines the desired results.

Since the source is compiled thanks to dedicated servers, separate from the browser you are using, some commands are not available: for example, you cannot load external files or resources by using the LOAD command.

If you need to develop a program with a complete tool, we recommend installing the command line executables (see below) or UGBASIC-IDE.

To write the source code you can use a simply text editor. You can save the program in a text file and then to call the compiler, in order to convert it into an form that your Amstrad CPC 664 will be able to execute.


Otherwise you can download and use command line compilers. Here are the direct links to the compilers for the various operating systems. Select the most suitable one for your configuration:

In addition to compiling with the IDE, if you are using Linux or the command line version for Microsoft Windows, you can compile the BASIC source "source.bas" into an executable file using the following command:

ugbc.cpc -o disk.dsk -O dsk source.bas

It is therefore possible to run everything with an emulator, such as Caprice32 Caprice Forever AceDL , or to create a phisical storage, as well.

A good starting point to learn ugBASIC for the cpc platform is the examples page. The examples provide insight into the syntax and usage of many of the commands and statements available for the language.

Since ugBASIC is an isomorphic language, which does not provide abstractions, it is possible that not all examples work on all targets: those labeled cpc can be compiled to generate executable files.

If you need help and support, the best place is the official forum, where you can find answers to your questions and receive help.

Games written for Amstrad CPC 664 (more...)



FALLING BALLS (10 liner)

This game is a multitasking arcade game for one player. The player must drop balls into the baskets at the bottom of the screen, in the shortest possible path. The longer the ball travels across the screen, the fewer points he/she accumulates This game joins the "BASIC10Liner" competition 2024


PICK THE STAR (10 liner)

This game is a multitasking arcade game for one player. The player must pick mostly the stars that descend from the top of the screen, because they give to the player the higher score. This game joins the "BASIC10Liner" competition 2023


TIC-TAC-TOE (10 liner)

This game is a traditional paper-and-pencil game for two players who take turns marking the spaces in a three-by-three grid with X or O. This game joins the "BASIC10Liner" competition 2023


4GRAVITY!

This game is a "Connect Four" clone. The objective of the game is to be the first to form a horizontal, vertical, or diagonal line of four of one's own tokens.

Examples for Amstrad CPC 664 (more...)














Plotting and graphic modes


The ugBASIC language provides access to all documented graphics modes of the Amstrad CPC chipset, that can be selected using the SCREEN # command, and used with graphics primitives. This is the value of the various constants in the various versions:

MODEDESCRIPTIONWIDTHxHEIGHTxCOLORS
0Graphic Mode 0160x200x16
1Graphic Mode 1320x200x4
2Graphic Mode 2640x200x2
3Graphic Mode 3160x200x4

Blitting images


Blitting operations are supported.

Calling and inlining assembly code

With the cpc target you can include assembly code for the Zilog Z80 processor. The code will be placed within the code bank.

Supported video standard

The ugBASIC compiler supports only PAL version (working frequency: 50 Hz). It automatically detects the working frequency to calibrate the delays. In particular, it defines two constants with the same name, and initializes the constant TICKS PER SECOND.

This is the value of the various constants in the various versions:

VERSIONNTSCPALTICKS PER SECOND
Amstrad CPC 664 (PAL)0 (FALSE)-1 (TRUE)50

Audio support

The cpc target supports audio commands, as described on the documentation page.

Table of notes and frequencies

C C# D D# E F F# G G# A A# B
0 181818181818181818181818
1181818181818181818192122
2232426293133343739414346
35255586165697377829298103
4110116123130138146164174184195207219
5232246260292309328347369391414439465
65215535846196586947357818289269841042
7110611681238131613891471164517611866195320832193
823582500260429763125328934723676390641674464

Joystick and keyboard support

The ugBASIC language supports up to 2 joysticks, using the JOY(n) statement, and the keyboard. The left joystick is in port 0, while right joystick in port 1.