Yabasic
   HOME

TheInfoList



OR:

Yabasic (Yet Another BASIC) is a free, open-source BASIC interpreter for
Windows Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for ser ...
and
Unix Unix (; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, an ...
platforms. Yabasic was originally developed by Marc-Oliver Ihm, who released the last stable version 2.77.3 in 2016. From version 2.77.1, the project has adopted the
MIT License The MIT License is a permissive free software license originating at the Massachusetts Institute of Technology (MIT) in the late 1980s. As a permissive license, it puts only very limited restriction on reuse and has, therefore, high license comp ...
as well as the source code being moved to
GitHub GitHub, Inc. () is an Internet hosting service for software development and version control using Git. It provides the distributed version control of Git plus access control, bug tracking, software feature requests, task management, continu ...
to encourage others to participate in its development.


Features

* No line numbers * Line graphics in color * Structured programming—various block structures, named
subroutines In computer programming, a function or subroutine is a sequence of program instructions that performs a specific task, packaged as a unit. This unit can then be used in programs wherever that particular task should be performed. Functions may ...
with local variables and return values * Code modules/
libraries A library is a collection of Document, materials, books or media that are accessible for use and not just for display purposes. A library provides physical (hard copies) or electronic media, digital access (soft copies) materials, and may be a ...
with separate
namespaces In computing, a namespace is a set of signs (''names'') that are used to identify and refer to objects of various kinds. A namespace ensures that all of a given set of objects have unique names so that they can be easily identified. Namespaces ...
(On the other hand, composite data structures are missing) * Option to use a
graphical user interface The GUI ( "UI" by itself is still usually pronounced . or ), graphical user interface, is a form of user interface that allows users to interact with electronic devices through graphical icons and audio indicator such as primary notation, inst ...
based on the
GTK GTK (formerly GIMP ToolKit and GTK+) is a free and open-source cross-platform widget toolkit for creating graphical user interfaces (GUIs). It is licensed under the terms of the GNU Lesser General Public License, allowing both free and propriet ...
library *
Self-modifying code In computer science, self-modifying code (SMC) is code that alters its own instructions while it is executing – usually to reduce the instruction path length and improve performance or simply to reduce otherwise repetitively similar code, ...
* "Binding" a Yabasic program to the interpreter, creating a standalone executable in a single file


Other versions


Flyab

A port of Yabasic to the Fltk toolkit called "Flyab" was under development. It would have been source-compatible with programs written in yab, a variant of Yabasic that enables graphical programs to be written using the BeOS
API An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how ...
. After BeOS and its successor
ZETA Zeta (, ; uppercase Ζ, lowercase ζ; grc, ζῆτα, el, ζήτα, label= Demotic Greek, classical or ''zē̂ta''; ''zíta'') is the sixth letter of the Greek alphabet. In the system of Greek numerals, it has a value of 7. It was derived f ...
finally were gone, the team members around yab for BeOS decided to move to Linux and therefore chose FLTK to implement the UI parts. Ports for
Windows Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for ser ...
,
Mac OS X macOS (; previously OS X and originally Mac OS X) is a Unix operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac computers. Within the market of desktop and la ...
, and
Linux Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, w ...
would have been possible. Flyab added the ability to Yabasic to create native graphical user interfaces on all supported platforms. Main difficulty was to fully implement the layout commands to FLTK, as used from the BeOS version. As of November 2008, the project appears to be halted.


PlayStation 2

Sony also packaged a version of Yabasic for the PlayStation 2 on the demo discArchived a
Ghostarchive
and th
Wayback Machine
shipped with PS2 consoles in PAL territories so it could be considered a home computer, not just a games machine, thus bypassing European import taxes.


Yabasic 3.0 (Unofficial)

As a continuation of the project prior to new changes by the original author, version 3 was being developed by a team centered on Pedro Sá and Thomas Larsen, but development has halted and the project now appears to be abandoned.


Yabasic example

#!/usr/bin/yabasic REM Program Name: cbm-mtudemo.yab REM Author: mtu REM REM Purpose: demonstration for their CBM-PET graphics card 320x200 open window 320, 200 20 P=160: Q=100 30 XP=144: XR=1.5*3.1415927 40 YP=56: YR=1: ZP=64 50 XF=XR/XP: YF=YP/YR: ZF=XR/ZP 60 FOR ZI=-Q TO Q-l 70 IF ZI<-ZP OR ZI>ZP GOTO 150 80 ZT=ZI*XP/ZP: ZZ=ZI 90 XL=INT(0.5+SQRT(XP*XP-ZT*ZT)) 100 FOR XI=-XL TO XL 110 XT=SQRT(XI*XI+ZT*ZT)*XF: XX=XI 120 YY=(SIN(XT)+0.4*SIN(3.0*XT))*YF 130 GOSUB 170 140 NEXT XI 150 NEXT ZI 160 PAUSE 10 END 170 X1=XX+ZZ+P 180 Y1=YY-ZZ+Q:Y1=199-Y1 190 LINE X1,Y1,X1,Y1-1 200 IF Y1=0 GOTO 220 210 CLEAR LINE X1,Y1+1,X1,199 220 RETURN


References


External links

* — Downloads and documentation for Yabasic 2.90.2
Yabasic GitHub
— Source code for Yabasic on GitHub. {{BASIC Articles with example BASIC code BASIC interpreters BASIC programming language family Software using the MIT license Free compilers and interpreters Procedural programming languages Linux programming tools Programming tools for Windows Programming languages created in 1995