LANGUAGE ONE

is best learnt in the way it has been written. A module at a time. Specific tasks have beenapproached in each version. ie, V0.01 laid the ground work, V0.02 introduced File Handling etc. As these new version are published, bugs in previous versions are being corrected and included in the newest version. That is, if you download V0.02 you will find a V0.01.ONE that will represent corrections to the original version. I would suggest that you work thru the 'oldest' '.ONE' file in the download, become familiar with the ideas and concepts and then progress through each newer '.ONE' file. You will need to be agile though, as the language is under development and is changing and growing every day.


languageONE V2.06 A version to test "cooked" indexed elements. No bugs were found. Presented with an unfinished (and very flaky Backgammon game)

languageONE V2.05 Introduced StringToRecord and RecordToString routines. V2.05 has a more advances example of a multiuser application

languageONE V2.04 Introduces (I)nter (P)rocess (C)ommunications provided by WWW.LIB using sockets. Processes can communicate on a machine and on a network, including the internet

languageONE V2.03 Enhancements to FILES.LIB to include record/file locking. V2.03.ONE demonstrates a full blown multiuser application using a browser as the front end

languageONE V2.02 Enhancements to WWW.LIB expand application support. V2.02.ONE demonstrates a full blown application using a browser as the front end


DISCONTINUED : I am discontinuing the Apple OSX port. There is practically no assembler information available and the proprietory nature of the system is making the port next to impossible.


languageONE V2.01 Implemented 'dot' Ifs and Whens and added an exitRepeat command


languageONE V2.00 unites the Linux and Windows versions into a single code base


languageONE V1.25 Windows port of Linux V1.25

languageONE V1.24 Windows port of Linux V1.24

languageONE V1.23 Windows port of Linux V1.23

languageONE V1.22 Windows port of Linux V1.22

languageONE V1.21 Windows port of Linux V1.21

languageONE V1.20 Windows port of Linux V1.20

languageONE V1.19 Windows port of Linux V1.19

languageONE V1.18 Windows port of Linux V1.18

languageONE V1.17 Windows port of Linux V1.17

languageONE V1.16 Windows port of Linux V1.16

languageONE V1.15 Windows port of Linux V1.15

languageONE V1.14 Windows port of Linux V1.14

languageONE V1.13 Windows port of Linux V1.13

languageONE V1.12 Windows port of Linux V1.12

languageONE V1.11 Windows port of Linux V1.11

languageONE V1.10 Windows port of Linux V1.10

languageONE V1.00 Windows port of Linux V1.00

languageONE V0.06 Windows port of Linux V0.06

languageONE V0.05 Windows port of Linux V0.05

languageONE V0.04 Windows port of Linux V0.04

languageONE V0.03 Windows port of Linux V0.03

languageONE V0.02 Windows port of Linux V0.02

languageONE V0.01 is the 1st port to Windows. The porting process will run exactly as the Linux development ran, that is version by version. Each version represents a slice of work that encompasses a particular function or set of functions


languageONE V1.25 brings no specific features but contains some important internal improvements. It also sets things up for the next version, which will encompass porting to Microsoft Windows. Porting will be done in the same way as previous development has been done, that is, one version at a time.

In this release, I have also brought the manual up to date and improved the formatting. Hopefully, it is a better read now.


languageONE V1.24 combines the idea of precedence (using square brackets) with the systems ability to infer data, to allow table/array elements to be coded in the more traditional manner. The command primarily says:"Get the Eelement 1st, before proceding".The following may now be coded


languageONE V1.23 builds on Version 1.21 by expanding Integer Precedence to Fixed Point numbers. (Refer V1.21 description below). The following code examples demonstrate where Fixed Point Numbers may be given precedence.


languageONE V1.22 introduces field level access to tables. The TABLES and XTABLES modules have been modified to support field level access as opposed to record level in previous versions. The existing macros have been renamed from (x)Tables.put to (x)Tables.rput and (x)Tables.get to (x)Tables.rget to represent record level access and the new macros (x)Tables.fput and (x)Tables.fget have been added.


languageONE V1.21 introduces Integer precedence, or in simple terms, bracketing. Until this release integer and number calculations worked from 1st to last, that is A = B + 2 * 3 / 4 would set A = B, add 2 to A, multiply A by 3 and divide A by 4. With this release you may bracket (using the square open and close bracket symbols) integers to obtain the required result. ie A = B + [2 * 3] / 4. They may be used in most places where integers are used.


languageONE V1.20 is a special type of "putting it all together" release. As I wanted to automate the process of building the TinyCore release, V1.20 is a program that will copy/alter the standard architecture to the TinyCore architecture. As such, the FILES.o module has gained the FILES.COPY function and the WORDS.o module has gained the WORDS.LENGTH function. Object libraries are now delivered as an archive - languageONE.a making linking easier between both TinyCore and Standard versions. I have also discovered the INSIGHT debugger https://sourceware.org/insight and have amended langaugeONE to be a little more insync with it. I would highly recommend its use and have replaced the DDD debugger with it.


languageONE V1.19 expands the FILES.o module to include the reading of directories. Directories are treated just as though they are files. They can be Opened,Read from and Closed. They cannot however be written to, as at this release. In addition, with this implementation, there is the facility to dynamically assign external names to files along with two new keywords files.chdir (change the current directory) and files.getcwd (get the current work directory).

As is opportune at this time, the Version 1.19 program demonstrates recursion. There has always been the ability to code recursive routines (indeed how would you stop it) but with the introduction of the directory keywords, the "Hello World" of recursion presents itself


languageONE V1.18 brings better fixed point number handling. Pictures are no longer necessary with Fixed Point literals. I have developed the ".CALC" keyword for both Integers and Fixed Point numbers. These work by combining system calls into a single macro such that you are now able to code something like "integers.calc A = A + 1 - 3 * 4 / 6". Better still the reWriter has been modified to infer the ".calc" keyword which allows you to simply code A = A + 1 - 3 * 4 / 6. Words can also be inferred. words.copy "Hello World",w_message can simply be codded w_message = "Hello World". In addition, although it has always been available, V1.18 demonstrates how to use NASM macros in languageONE


languageONE V1.17 Introduces the idea of SYNONYMS. That is the ability to rename KEYWORDS (Macros) at a program level. There are new BEGIN.SYNONYMS and END.SYNONYMS directives (as comments) and the languageONE reWriter will respond to the values coded within.


very pleased to announce that languageONE is now packaged and available after installing TinyCore linux, or more precisely, the CorePure64 distribution (langaugeONE only supports 64bit architecture). After installing TinyCore just open the app browser and look for languageONE.tcz or alternately you can download the extension here (refer download page). I am more than pleased to be associated with TinyCore as I believe we share a common view in regard to efficiency.

What does this mean for languageONE

So..we have repackaged the system, firstly to fit in with TinyCores requirements but mainly because the system is growing and it just needed to be done. Although the extension for TinyCore differs in a couple of ways, it and the base system are ultimately very similar. languageONE is now more unix friendly and places elements of the system in sub-direcectories such as src,lib,include,doc etc The dowloaded archive will now reflect that layout

I have also now decided to drop the idea of suffixing each demonstration program with a letter. It makes it easier to manage in most ways. Each version will still come with updated versions of previous demonstration programs, it will just be up to you to keep them separately. To that effect, I have moved from Version 16a to Version 16. Not so intuitive I guess but hopefully it wont happen again


languageONE V1.16a Builds on V1.15a by demonstrating how to build a GUI program. V1.16a has been replicated and is now the languageONE graphical make program (GUI.makeONE.ONE run by GUImakeONE.sh). Refer to the V1.15a text below to get a better idea of a languageONE GUI program. Additionally in this release are two new keywords:- being RUN (Run a program from a program) and WAIT (wait for the recently run program to terminate).


languageONE V1.15a Introduces GUI programming. Programs can now be written that provide a graphical interface for your users. To provide for machine/operating system independecy, GUI provisioning in languageONE makes use of WWW/HTML technology. Infact a languageONE program that provides a GUI interface is in fact a HTML server. Interfaces are designed using existing HTML technology while backend CGI is provided by languageONE


languageONE V1.14a this is a "putting it all together" release. It provides a 1,000 line dataentry program to demonstrate how a languageONE program can be coded. It has introduced full screen terminal capabilities as well as terminal graphics characters. It's not quite ncursers but will do the trick for "lighter" applications. It has also given me an opportunity to discover and correct any bugs.


languageONE V1.13a Introduces XTABLES, a module to manage very large, dynamically allocated tables. In addition to normal table functioning, XTABLES has been designed to allow ISAM type file access. Along with a new file type, INDEXED, and an optimised sort, a binary search brings the identifying of record keys in a 1,000,000 record file down to less than 1 second.


languageONE V1.12a Once more an important "kilometer stone" for languageONE. In this release the languageONE reWriter has been modified to produce code that enables the GUI debugger 'ddd' to manage a graphical debug session It also expands the FILES.o module with the introduction withe start and next functions. On a personal note, I have switched to using the JEDIT editor and so have included the .xml files required for languageONE syntax highlighting, and the commando files for 'making' a languageONE program


languageONE V1.11a Yet another very important "kilometer stone" for languageONE. This release introduces a "MANUAL". languageONE.odt is now provided and will document the progress of languageONE as well as being the "languageONE Bible" Additionally, FUNCTIONS have been introduced, date routines have now been coded and an expansion in the use of the _IN parameter has been completed


languageONE V1.10a This is another very important "kilometer stone" for languageONE. This release introduces a pre-processor that enables code to be written in a more familiar type of syntax. It will evolve over time to enable languageONE to be coded in a way that the NASM assembler will not except. Initially it acts on brackets and commas as well as checking "begin-end" constructs. It is in fact written in languageONE and can be modified my any one to alter the way their code may be presented.


languageONE V1.00a Obviously a very important "kilometer stone" for languageONE. This release brings the development of Fixed Point Numbers and with it some significant changes to the syntax. FP Numbers was all pervading and involved modifications to most parts of languageONE including internal structures. As the entire system needed to be altered it also proved to be opportune in positioning the code so that porting will be better achieved.


languageONE V0.06a represents the sixth release. The version No is 0.06a and is a development of the sort routine for the TABLES.o module. V0.06a.ASM demonstrates 3 different sorts written in languageONE and then an internal sort used by the TABLES module.


languageONE V0.05a represents the fifth release. The version No is 0.05a and is a development of the TEST macros. This is an quick and easy one as these type of case statement are just a tidier IF statement. ELSE is the same as the ELSE in an IF statement as is the use of the simple @OR/@AND

languageONE TEST statement


languageONE V0.04a represents the forth release. The version No is 0.04a and is a development of the TABLES.o module. The following lists the features that are covered in V0.04a.


languageONE V0.03a breaks the above rule in that this version only includes an application written in languageONE to demonstrate its use and to detect bugs in the 2 previous versions. There are however, I few bits of additional functionality.


languageONE V0.02a represents the second release. The version No is 0.02a and is a development of the FILES.o module. The following lists the features that are covered in V0.02a.


languageONE V0.01a is in it's initial release. The version No is 0.01a and it is this that would indicate the number of steps to make before reaching Version 1.0. The following lists the features that are covered in V0.01a.