ugBASIC

An isomorphic language
for retrocomputers



What's News Get Started IDE SANDBOX Games

WHAT IS ugBASIC?

ugBASIC is an isomorphic and open source language, fully documented and designed to develop portable programs, without sacrificing efficiency. With a single source it is therefore possible to create games for numerous 8 bit platforms.

Download the compiler

You can download the official ugBASIC compiler (ugbc), which directly converts a program written in ugBASIC into the assembly equivalent for the given CPU / computer. The compiler is free, open source and licensed under the Apache 2.0 license. You can download or recompile the latest version from the GitHub repository.

* = available only for Microsoft Windows 7/8/10/11

Some features and examples (more...)

An integrated IDE*

* = available only for Microsoft Windows 7/8/10/11

Documentation and manuals

At the moment there are two manuals available: the user manual, with which you can start developing using this language, and the reference manual, useful for those wishing to modify and/or to extend the language.

What's news?

 


 

The current version adds support for the TRS-80 Color Computer 3 (coco3) and is able to generate disk images for ATARI, MSX and Commodore VIC-20. Further optimizations have been introduced in the generated code, in particular for CPU Z80. Several commands have been added, and there is also better compatibility with 1980s BASIC syntax. Moreover, it can load and save data to mass storage.

Use IDE Installation

 

 

The current version adds preliminary support for inline assembly, software for map tiling, system calls, the floating point data type, for the Commodore 128 target with the Zilog Z80 processor and for graphics blitting operations. Further optimizations have been introduced in the generated code, in particular for the Olivetti Prodest PC128 home computers, which is now able to handle banking at the single frame level instead of the whole image, and for the COCO TRS-80 computer, which can now make use of almost all available memory, including that under the ROM banks.

Use IDE Installation

 

Happy birthday ugBASIC! Today (24/04) we celebrate two years since the first commit, and with this milestone in mind let's take a look at some of the results obtained by the development team.

From a qualitative point of view, the system supports as many as 26 heterogeneous systems, ranging from ATARI to Olivetti Prodest, passing through MSX, TRS-80 and, obviously, Commodore computers. A dedicated page takes into account the actual list of supported targets.

From a quantitative point of view, ugBASIC is composed of over 156,000 lines of C code and about 43,000 lines of assembly code (MOS 6502, Zilog Z80 and Motorola 6809), where the lexer and the parser occupy 7,559 lines!

For published data: generated using David A. Wheeler's 'SLOCCount'

Use IDE Download executables Targets

 

 

The current version (1.13.1) introduces support for Radio Shack TRS-80 Color Computer.

Use IDE Installation

 

 

The version (1.12.1) introduces support for Amstrad CPC 664 target.

Use IDE Installation

 

 

The version 1.11.2 introduces support for audio and the Commodore 128 target.

Use IDE Installation Usage

 

Happy birthday ugBASIC! Today (25/04) we celebrate one year since the first commit, and with this milestone in mind let's take a look at some of the results obtained by the development team.

From a qualitative point of view, the system supports as many as 14 heterogeneous systems, ranging from ATARI to Olivetti Prodest, passing through MSX and, obviously, Commodore computers.

From a quantitative point of view, ugBASIC is composed of over 137,000 lines of C code and over 36,000 lines of assembly code (MOS 6502, Zilog Z80 and Motorola 6809), where the lexer and the parser occupy 6,408 lines!

Following the sizing indicated by the "COCOMO model", to redevelop ugBASIC from scratch it would take 55 man-months or, if you like, two and a half years of development. Alternatively, having 22 developers, it would be done in a year.

For published data: generated using David A. Wheeler's 'SLOCCount'

Use IDE Installation Usage

 

 

The version 1.10.3 introduces support for SEGA SC-3000 home computer and SG-1000 console.

Use IDE Installation Usage

 

 

The version 1.9.1 introduces support for ColecoVision console architecture.

Use IDE Installation Usage

 

 

An interesting competition is held at the beginning of each year: the BASIC 10Liner Contest, and it is possible to use ugBASIC to join in the next competition with your preferred home computer.

How to join Use IDE executables

 

 

The version 1.8.2 introduces support for MSX home computer architecture.

Use IDE Installation Usage

 

 

The version 1.7.2 introduces various improvements and bug fixes.

Use IDE Installation Usage

 

 

A brand new IDE has been released for ugBASIC: ugBASIC IDE makes it easier to download and install the various software required for one or more retrocomputers, all just one "click away". It offers syntactic highlighting, multiple windows, file history, online help and an integration for error diagnostics. With just one click you can see your program running directly on one of the supported emulators.

Download executables

 

 

The current version (1.6) introduces various improvements and bug fixes.

Installation Usage

 

 

The version 1.5 introduces support for Commodore VIC-20, film strip animations and multitasking.

Complete list of targets How to use multitasking Installation Usage

 

 

The version 1.4 introduces support for Olivetti PC128 Prodest and Thomson MO5 computer.

Complete list of targets Installation Usage

 

 

The version 1.3.2-beta introduces various improvements and bug fixes.

Installation Usage

 

 

The version 1.3.1-beta introduces various improvements and bug fixes.

Installation Usage

 

 

The version 1.3-beta introduces support for Dragon 32 computer.

Complete list of targets Installation Usage

 

 

The version (1.2-beta) introduces various improvements and bug fixes.

Installation Usage

 

 

The version 1.1-beta introduces support for the Atari 8-bit family of computers, such as Atari 400/800, Atari 600XL / 800XL / 1200XL and XEGS.

Complete list of targets Installation Usage




Media coverage

Basic et ugBasic : recherches de chaines et autres fonctionnalités

Recherche de chaine en basic standard, explication sur recherche dichotomique, conclusion sur efficacité en fonction du volume de données, comparaison des performances obtenues sur ugBasic (compilé), mesure du temps avec les vecteurs system, instruction FILL avec un vecteur system, instruction DRAW string en ugBasic

ugBasic, assembleur et basic classique

Nouveautés d'ugBasic: Data, DECLARE SYSTEM PROC, Intégration de l'assembleur dans ugBasic, Instruction PAINT / FILL, DRAW STRING (fail effet démo ;) )

ugBasic, aperçu de nouveautés et essais des autres plateformes

Démonstration d'un programme ciblé sur VIC 20 (tilemap, midi et multithread). Démonstration de deux programmes en multiplateformes lisant des données et affichant des graphismes. Démonstration d'un programme combinant en multiplateforme, gestion d'une tilemap et déplacement d'un sprite.

Scorched Earth ugBasic : La reprise des streams

Présentation des évolutions du programme Scorched Earth en ugBasic (avec rappel des anciennes évolutions). Démonstration du jeu en l'état. Conclusion et raid.

Programming in basic (compiled) on many computers with ugBASIC by Marco Spedaletti

This compiler write the code so a program works whatever the features of the targeted computer, a feature who doesnt exist in hardware will be managed by software.

ugBasic a maintenant son forum

ugBasic est un langage isomorphe et open source, entièrement documenté et conçu pour développer des programmes portables, sans sacrifier l’efficacité. Avec une seule source, il est donc possible de créer des jeux pour de nombreuses plateformes 8 bits.

The CoCo Nation Show Episode 322

Learn more about everything old and new for the Color Computer by tuning in to: The CoCo Nation Show (TCN) - a weekly live and interactive discussion about the Color Computers, Dragons, MC-10, clones, and cousins!

The CoCo Nation Show Episode 321

Learn more about everything old and new for the Color Computer by tuning in to: The CoCo Nation Show (TCN) - a weekly live and interactive discussion about the Color Computers, Dragons, MC-10, clones, and cousins!

ugBASIC v1.14: A New Era for Commodore 64 Programming

The Commodore 64 is one of the most popular home computers of all time, and it is still enjoyed by many people today. However, the original BASIC interpreter that came with the C64 was not very powerful or versatile. This is where ugBASIC comes in.

ugBASIC

ugBASIC is a modern, open-source, active (as of March 2023) BASIC cross-compiler able to generate machine code for multiple computers built around the Motorola 6809, Zilog Z80 and MOS 6502 8-bit processors which were popular both in the USA and European markets in the 1980s and 1990s.

ugBASIC

If there's one language that just can't be killed, it's BASIC. Not that there aren't others, but BASIC has a very special status.

ugBASIC:一個跨平台的 8 位元編程語言

ugBASIC通過使用單一的源代碼,可以讓開發者快速開發跨多個8位元家用遊戲機和電腦的遊戲。目前支持的CPU有NMOS 6502、Zilog Z80和Motorola 6809。開源編譯器ugBC可以將ugBASIC編寫的程式轉換為目標CPU/計算機的組合語言等效程式。該編譯器是免費的,遵循Apache 2.0許可證

ugBasic Compiler Testing - Day 149

A BASIC compiler for compiling to various retro computers and consoles.

7 x Atari 8-Bit 10 Liner Contest Entries

ZeroPage Homebrew: Your BEST source for the NEWEST Atari games! Twitch Livestream: 20230328 with Pick The Star and Tic-Tac-Toe

Les dernières avancées dans scorched Earth en ugBasic

Présentation du problème de gestion des couleurs dans Gimp, Présentation du contournement du problème de la fonction Point avec Peek, Présentation des évolutions (placement tank aléatoire, gestion des tirs pour les 2 tanks), Présentation du bug de saturation de la RAM.

Rettangoli colorati con ugBASIC

Da tempo desideravo provare ugBASIC, linguaggio isomorfo compilato, che permette di produrre programmi per una moltitudine di piattaforme (computer e console) a 8 bit a partire da un unico codice sorgente.

ugBasic – A BASIC compiler for Commodore, ... and Atari, ... and CoCo, ... and ...

Recently I learned about an exciting project that started a couple of years ago: ugBasic. ugBasic is a cross compiler of BASIC dialect specialized in programs that are very efficient by design on various 8-bit platforms built on top of 6502, Z80 and 6809.

ugBasic retour sur le projet scorched earth

Rappel sur la gestion des variables d'ugBasic, Variables globales / locales, Typage dynamique, Affichage d'un paysage généré, Problème de gestion de couleurs, Problème de calculs en nombres entiers au lieu de flottants. Conclusion

Faisons des rasters avec ugBasic !

Rappel sur l'exemple précédent, Démonstration de la proposition de l'auteur, Approfondissement et expérimentation pour déterminer le timing de l'instruction COLOR. Conclusion

Dernières nouveautés d'ugBasic

Présentation des nouvelles fonctionnalités, instruction relative, ORIGIN, RESOLUTION, FONT LOAD, Proof Of Concept : Scorched Earth gestion de trajectoire de tir, Instruction OUT : 2 exemples, Ondulation d'écran, Caméleon en mode 2, 27 couleurs en Basic !!!! Conclusion

ugBasic : gestion des planches de sprites et essais de calculs de trajectoire

Introduction sur les problématiques du calcul sous ugBasic, Introduction sur la fonte standard d'ugBasic, Illustration de la fonction LOAD IMAGES et son utilisation pour afficher les fontes identiques à l'amstrad CPC, Test en direct d'un correctif innatendu de dernière minute d'ugBasic !, Démonstrations de 4 méthodes différentes pour calculer des trajectoires paraboliques avec seulement des entiers en ugBasic, Illustration des difficultés rencontrées, Conclusion.

ugBasic : Gestion de scroll et du joystick

Introduction, Présentation d'une première instruction de scroll, Démonstration des avantages par rapport au scroll texte standard, Explication des limites (consommation de temps), Démonstration d'un Scroll horizontal surface d'eau avec vague + robot célèbre ;), Démonstration d'un Scroll Vertical d'un fond marin avec modif 48 lignes * 64 pixels, Démonstration de ce même scroll avec robot célèbre, Démonstration de ce même scroll avec robot célèbre et incrustations de soucoupes ennemies, Démonstration Instruction EVERY, Discussion sur le langage Basic, Conclusion

ugBasic : Détection des touches, gestion de la palette des couleurs, gestion des images

Introduction, Détection des touches et du joystick (avec accident félin sans gravité ;) ), Gestion de la palette de couleurs, Instructions GET IMAGE et PUT IMAGE, Petits bugs rigolos sur instruction Ellipse, Conclusion

Soko64 con ugBASIC

Soko64 è la dimostrazione che a un redattore di Zzap! non si dovrebbero mai dare del tempo libero e uno strumento di sviluppo come ugBasic. Potrebbe uscirne fuori qualcosa di diabolico.

ugBasic : continuons la découverte

Introduction, Draw et polyline, Cercle plein, explication sur le typage dynamique des variables, les contraintes du mode 0 et de l'absence de nombres réels, Tracé du paysage précédent avec Draw corrigé, Démonstration de l'affichage d'image, Démonstration de l'affichage d'images avec gestion de la transparence, Nouvelle approche avec paysage dessiné dans une image pour fixer la palette, Conclusion

ugBasic : continuons la découverte

Explication gestion mode, Gestion des couleurs, Instructions graphiques, Procédures, Chargement images, Conclusion

ugBasic : continuons la découverte

Présentation ugBasic (logiciel, fonctionnalités, exemples, portabilité, syntaxe)

Games written with ugBASIC (more...)



Creepy Carrots

This is a clone of Manic Miner where you have to collect all the carrots and reach the exit of the level. The game shows the capabilities of ugBASIC: graphics in 160x200x16, switching video pages, managing 3 banks of RAM in addition to the main memory, reading multiple keyboard keys at the same time, and inline ASM.


ACME, inc. (10 liner)

This game is a multitasking arcade game for one player. The aim of the game is to make the coyote run for as long as possible, avoiding the barrels that roll towards him. The more barrels you avoid, the higher the score. It is a self-competiting game, and it is designed for one player. This game joins the "BASIC10Liner" competition 2024


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


soko64

Sokoban is a famous puzzle game designed in 1981 by Hiroyuki Imabayashi, and first published in December 1982. This C64 version includes 64 8x8 tricky levels by David Skinner.