Coder Social home page Coder Social logo

marko-555 / ugbasic Goto Github PK

View Code? Open in Web Editor NEW

This project forked from spotlessmind1975/ugbasic

0.0 0.0 0.0 8.88 MB

An isomorphic BASIC language compiler for retrocomputers

License: Apache License 2.0

C 85.40% PHP 0.03% Assembly 12.04% Awk 0.01% Makefile 0.36% Yacc 1.93% Lex 0.23%

ugbasic's Introduction

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.

ugbasic's People

Contributors

spotlessmind1975 avatar samuel-devulder avatar dinoflorenzi avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.