Pantalk
Pantalk is an interpreted cross-platform programming language developed in the early 1980s by Cojyp (HyperPanel Lab) for use on Canal Plus' MediaHighway interactive tv platform and other embedded environments.
Pantalk was created to take much less development time compared to Java by avoiding the "Kid in a candyshop" effect that plenty of rich language and structures may have, but in practice the serious limitations prevent it being taken as a serious computer language outside of the limited Mediahighway digital TV platform which has been outpaced by the more ubiquitous javascript based liberate and C based OpenTV platforms.
Pantalk is a partially tokenised interpreted language in which structured code written as plain text (*.isb files) and then precompiled into *.isc files. These *.isc files can be compiled into bytecode (p-code, or *.isu files). It features a subset of the simpler control structures, operators, variable types and statements that you expect from any compiled or interpreted language, and it also has features of its own. For example, the variables declaration (all global across whole applications), the memory allocation, the management of the graphics and widgets. It misses some basics like data structures, subroutines and functions outside of loading a new tokenised file (apart from the system API) and feels like a very old style basic. All variables are global.
Pantalk manages single scalar variables up to multidimensional arrays. The available types are: Integer, Real, Alpha, Alphanu, Date, Time, Text, Memory. These variable are written in *.clb files and then precompiled into *.cla files. These *.cla files can be compiled into bytecode (p-code, or *.clu files).
It reads like a hybrid of 8-bit microcomputer BASIC and Pascal, and after working with it for some time developers will be frustrated by its lack of consistency and having many of the limitations of said 8-bit BASIC interpreters.
A Pantalk script does not have any header or script name and does not require the Return or End statement at the end of a procedure. Many statements must end with a semi colon, but depending on certain API areas, not always. There are two types of script, the panel script(also called dependent script) and the independent script.
Panel script: a panel is a group of graphical objects named widgets. Each graphical object is also called a widget because it can trigger one or several scripts. When a widget invokes a script, the script must be a panel script. A panel script can invoke any types of script, panel or independent. Such a script is named Panel script and is stored in a library of panel scripts only.
Independent script: an independent script can be invoked by any other scripts and by a module boot sequence. An independent script cannot invoke a panel script. When calling a script, the script path must be specified. The path specifies the script location ( which module and script library it pertains to).
/* set courier font for a target */ fontname := "helvetica"; /* 1 corresponds to Courier */ /* 10 is the size */ XSet_Font ( winId, 1,10 ); XGet_Font_Size ( winId, 100,150, fwidth, fheight, fbaseline ); XDraw_String ( winId, 60, 80, "Hello World" ); XSet_Show_String ( 4, 5, fontname, 10 ); /* display a string in the middle */ /* of the upper part of the screen */ XShow_String ( 200, 10, "Hello again world" );