Rocksolid Light

Welcome to Rocksolid Light

mail  files  register  newsreader  groups  login

Message-ID:  

Adding manpower to a late software project makes it later. -- F. Brooks, "The Mythical Man-Month"


devel / comp.os.cpm / Re: New T3X version

SubjectAuthor
* New T3X versionNils M Holm
`- New T3X versionHector Peraza

1
New T3X version

<jpt6giF2d9sU1@mid.individual.net>

  copy mid

https://news.novabbs.org/devel/article-flat.php?id=4712&group=comp.os.cpm#4712

  copy link   Newsgroups: comp.os.cpm
Path: i2pn2.org!i2pn.org!news.swapon.de!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail
From: nmh@ananda.local (Nils M Holm)
Newsgroups: comp.os.cpm
Subject: New T3X version
Date: 2 Oct 2022 10:12:34 GMT
Organization: TARFU
Lines: 42
Message-ID: <jpt6giF2d9sU1@mid.individual.net>
X-Trace: individual.net kam+MgT7YDavqa09OYeNagrnTXgkHolFPefwHOnlIPxISYR8ET
X-Orig-Path: not-for-mail
Cancel-Lock: sha1:9tEZ6IKnKWQprZyqMyDpJzQMZ/s=
User-Agent: tin/2.2.1-20140504 ("Tober an Righ") (UNIX) (FreeBSD/10.1-RELEASE (amd64))
 by: Nils M Holm - Sun, 2 Oct 2022 10:12 UTC

Some time ago I have announced the T3X/Z compiler here, a T3X compiler
that runs on CP/M on the Z80 and generates code for CP/M on the Z80.

In the past months I have created a new version of T3X that runs not
only on CP/M, but also on the virtual Tcode machine (TCVM), DOS (8086),
and 386-based Unix systems. Programs can be cross-compiled in many
different ways, like DOS->CP/M, CP/M->DOS, Unix->CP/M. TCVM->DOS,
TCVM->Unix, etc... There is a total of 14 cross compilers that can be
built from the code.

Here is a link to the sources: http://t3x.org/t3x/index.html#0

CP/M and DOS binaries of the compiler are included in the archive.

The T3X language accepted by the new compiler is (almost) a superset
of T3X/Z (the intrinsic T3X class has been replaced by modules, so two
lines of boiler-plate have to change at the beginning of each program).

The new language has separate namespaces via modules, loadable modules
in separate file, unsigned operators (0xfffe .< 0xffff is true), and
lots of predefined functions in a library. For example, here is
"Hello, World!" using a simple I/O library:

use t3x;
use string;
use io;

do
io.writeln("Hello, World!");
end

The compiler still self-compiles on CP/M, but needs 48K bytes of TPA
now (T3X/Z uses 44K bytes). It self-compiles in 10 minutes on a 4MHz
Z80 emulator. It also requires (at least) two files now: the compiler
binary itself and the T3X core module, which was intrinsic before.

Anyway, I hope some of you may enjoy programming CP/M using a
high-level language of the 1990s!

--
Nils M Holm < n m h @ t 3 x . o r g > http://t3x.org

Re: New T3X version

<de0ab328-e9b6-4c6d-a945-bce42afbafedn@googlegroups.com>

  copy mid

https://news.novabbs.org/devel/article-flat.php?id=4744&group=comp.os.cpm#4744

  copy link   Newsgroups: comp.os.cpm
X-Received: by 2002:a37:a996:0:b0:6ec:59da:a72 with SMTP id s144-20020a37a996000000b006ec59da0a72mr13382960qke.676.1665606460392;
Wed, 12 Oct 2022 13:27:40 -0700 (PDT)
X-Received: by 2002:a05:6870:591:b0:132:6c20:84f8 with SMTP id
m17-20020a056870059100b001326c2084f8mr3470081oap.214.1665606460106; Wed, 12
Oct 2022 13:27:40 -0700 (PDT)
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!feed1.usenet.blueworldhosting.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.os.cpm
Date: Wed, 12 Oct 2022 13:27:39 -0700 (PDT)
In-Reply-To: <jpt6giF2d9sU1@mid.individual.net>
Injection-Info: google-groups.googlegroups.com; posting-host=81.82.53.10; posting-account=7UAaIQoAAACUm4-IP9G1k1Kzjsn_2m2B
NNTP-Posting-Host: 81.82.53.10
References: <jpt6giF2d9sU1@mid.individual.net>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <de0ab328-e9b6-4c6d-a945-bce42afbafedn@googlegroups.com>
Subject: Re: New T3X version
From: hperaza65@gmail.com (Hector Peraza)
Injection-Date: Wed, 12 Oct 2022 20:27:40 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Received-Bytes: 4764
 by: Hector Peraza - Wed, 12 Oct 2022 20:27 UTC

On Sunday, October 2, 2022 at 12:12:36 PM UTC+2, Nils M Holm wrote:
> Some time ago I have announced the T3X/Z compiler here, a T3X compiler
> that runs on CP/M on the Z80 and generates code for CP/M on the Z80.
>
> In the past months I have created a new version of T3X that runs not
> only on CP/M, but also on the virtual Tcode machine (TCVM), DOS (8086),
> and 386-based Unix systems. Programs can be cross-compiled in many
> different ways, like DOS->CP/M, CP/M->DOS, Unix->CP/M. TCVM->DOS,
> TCVM->Unix, etc... There is a total of 14 cross compilers that can be
> built from the code.
>
> Here is a link to the sources: http://t3x.org/t3x/index.html#0" rel="nofollow" target="_blank">http://t3x.org/t3x/index.html#0
>
> CP/M and DOS binaries of the compiler are included in the archive.
>
> The T3X language accepted by the new compiler is (almost) a superset
> of T3X/Z (the intrinsic T3X class has been replaced by modules, so two
> lines of boiler-plate have to change at the beginning of each program).
>
> The new language has separate namespaces via modules, loadable modules
> in separate file, unsigned operators (0xfffe .< 0xffff is true), and
> lots of predefined functions in a library. For example, here is
> "Hello, World!" using a simple I/O library:
>
> use t3x;
> use string;
> use io;
>
> do
> io.writeln("Hello, World!");
> end
>
> The compiler still self-compiles on CP/M, but needs 48K bytes of TPA
> now (T3X/Z uses 44K bytes). It self-compiles in 10 minutes on a 4MHz
> Z80 emulator. It also requires (at least) two files now: the compiler
> binary itself and the T3X core module, which was intrinsic before.
>
> Anyway, I hope some of you may enjoy programming CP/M using a
> high-level language of the 1990s!
>
> --
> Nils M Holm < n m h @ t 3 x . o r g > http://t3x.org

A while ago I made a version that produces relocatable REL object files:

https://github.com/hperaza/T3XZ-RSX180/tree/master/rel-output

The main advantage is that the output module can now be linked to external assembler routines, and that the run-time library is not longer embedded into the compiler code, making the compiler size smaller. Different OSes can be supported via different libraries, requiring minimal, or no compiler/application changes. Also, since REL files support separate code and data segments, the compiler no longer needs to generate jump instructions to get around static data, also reducing the generated code size.

The disadvantages being the extra linking step required, and the 6..8-character symbol name length limitation of the REL specification. The last made it necessary to implement name aliases to the T-object functions in the compiler, as e.g. T.MEMCOMP and T.MEMCOPY names will clash if the library is compiled with the "standard" 6-char symbol name length (the supplied Makefile forces 8-char symbol names anyway.)

The port was made mostly for the RSX180 and RSX280 OSes, but a CP/M version of both the compiler and the library is generated too.

Note that RSX180/280 have different end-line conventions than CP/M, and in a way that complicates matters for the T.NEWLINE method. Specifically, lines are output as LF,<text>,CR whereas in CP/M the convention is <text>,CR,LF.. The result is that a program written for RSX180/280 will output an extra empty line after the CCP prompt when compiled for CP/M; while a CP/M program would overwrite the MCR prompt when compiled for RSX180/280. A T.WRITELN method would be more appropriate.

Hector.

1
server_pubkey.txt

rocksolid light 0.9.81
clearnet tor