Skip to content

An isomorphic BASIC language compiler for retrocomputers

License

Notifications You must be signed in to change notification settings

ricolaoz/ugbasic

 
 

Repository files navigation

ugBASIC

An isomorphic BASIC language compiler for retrocomputers by Marco Spedaletti ([email protected])

ABOUT THIS SOFTWARE

A cross compiler of BASIC dialect specialized in programs that are very efficient "by design" on various 8-bit platforms (based on MOS 6502/6510, Motorola 6809 and Zilog Z80), without the need for "fine tuning" them and without compromises of other dev-kits.

WHY SHOULD I USE "ugBASIC"?

  • Modern programming - all the most modern BASIC constructs are available, like dynamic strings, procedures, constants, functions, inclusion of libraries, ....
  • Multitasking - procedures can be called on a parallel way.
  • Fast execution - BASIC source code, graphical and audio resources are compiled directly in assembly, and optimized for the specific CPU, and all calculations are done on integer numbers, moreover it does not use any stack.
  • No ROM dependency - the executable take care of all the hardware, with no dependency from installed ROM that will be swapped out, if possible.
  • RAM optimizations - all RAM is available for code and data, and it is available a fast compression / decompression routine "out of the box".
  • Cross development - use your modern Linux or Windows PC to compile for about 20 different retro computers, from Commodore 64 to Amstrad CPC 664.
  • Modern IDE available - you can also use a modern IDE to develop.

For more information please look here.

SUPPORTED HARDWARE

This is a short list of supported hardware and output file formats:

  • Atari 400/800 (atari)
  • Atari 1200XL (atarixl)
  • Atari 600XL/800XL (atarixl)
  • Atari XE Video Game System (atarixl)
  • Commodore 128 (c128)
  • Commodore 64 (c64)
  • Commodore PLUS/4 (plus4)
  • Commodore VIC-20 (vic20)
  • Dragon 32 (d32)
  • Dragon 64 (d64)
  • Dragon 200-E (d64)
  • Olivetti PC128 Prodest (pc128op)
  • Thomson (mo5)
  • Amstrad CPC (cpc)
  • ColecoVision (coleco)
  • MSX (msx1)
  • SEGA SC-3000 (sc3000)
  • SEGA SG-1000 (sg1000)
  • ZX Spectrum 48K (zx)

The complete list of targets can be found here.

WHAT DOES "ug" MEAN?

It is an acronym.

  • The letter u stands for "micro" because it is a "minimal" language, which is translated as linearly as possible into assembly without abstractions. Note that the nature of isomorphism is like that it may not be "minimal" in terms of syntax. There may be redundancies, but the concept remains.
  • The letter g stands for "game", because the language was designed to write video games, even advanced ones. It has a number of primitives that hook directly to hardware characteristics. For example, there are instructions to synchronize the execution to the vertical blank, to manage animations, background music and so on.

LICENSE

Copyright 2021-2022 Marco Spedaletti

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

This program contains algorithms and software written by third parts. Please refer to the conditions present in that page also, if you wish to reproduce or reuse this software.

About

An isomorphic BASIC language compiler for retrocomputers

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 85.0%
  • Assembly 12.6%
  • Yacc 1.9%
  • Makefile 0.3%
  • Lex 0.2%
  • PHP 0.0%