Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.sys.acorn.apps > #2737 > unrolled thread

Fresh packaging ideas

Started byTheo Markettos <theom+news@chiark.greenend.org.uk>
First post2012-01-15 17:02 +0000
Last post2012-01-28 12:19 +0000
Articles 8 on this page of 68 — 24 participants

Back to article view | Back to comp.sys.acorn.apps


Contents

  Fresh packaging ideas Theo Markettos <theom+news@chiark.greenend.org.uk> - 2012-01-15 17:02 +0000
    Re: Fresh packaging ideas Jim Nagel <jimnewsm10d@abbeypress.co.uk> - 2012-01-16 11:39 +0000
    Re: Fresh packaging ideas wpb <w.blatchley@yahoo.com> - 2012-01-16 05:49 -0800
      Re: Fresh packaging ideas Steve Fryatt <news@stevefryatt.org.uk> - 2012-01-16 19:01 +0000
      Re: Fresh packaging ideas Chris Evans <chris@cjemicros.co.uk> - 2012-01-17 13:04 +0000
        Re: Fresh packaging ideas wpb <w.blatchley@yahoo.com> - 2012-01-17 23:01 -0800
          Re: Fresh packaging ideas Chris Evans <chris@cjemicros.co.uk> - 2012-01-18 15:16 +0000
      Re: Fresh packaging ideas Theo Markettos <theom+news@chiark.greenend.org.uk> - 2012-01-17 22:32 +0000
        Re: Fresh packaging ideas Matthew Phillips <spam2011m@yahoo.co.uk> - 2012-01-18 07:37 +0000
    Re: Fresh packaging ideas News Poster <workstuff@mail.com> - 2012-01-16 11:46 -0800
    Re: Fresh packaging ideas Alan <alan_baa@hotmail.com> - 2012-01-16 14:39 -0800
      Re: Fresh packaging ideas Theo Markettos <theom+news@chiark.greenend.org.uk> - 2012-01-17 22:23 +0000
        Re: Fresh packaging ideas Alan <alan_baa@hotmail.com> - 2012-01-18 05:04 -0800
          Re: Fresh packaging ideas Martin Bazley <martin.bazley@blueyonder.co.uk> - 2012-01-18 21:33 +0000
            Re: Fresh packaging ideas "David Holden" <SpamBin@apdl.co.uk> - 2012-01-19 08:03 +0000
              Re: Fresh packaging ideas Theo Markettos <theom+news@chiark.greenend.org.uk> - 2012-01-19 11:46 +0000
              Re: Fresh packaging ideas Alan <alan_baa@hotmail.com> - 2012-01-19 05:45 -0800
                Re: Fresh packaging ideas News poster <news@mistymornings.net> - 2012-01-19 19:35 +0100
            Re: Fresh packaging ideas Matthew Phillips <spam2011m@yahoo.co.uk> - 2012-01-19 08:09 +0000
              Re: Fresh packaging ideas Martin Bazley <martin.bazley@blueyonder.co.uk> - 2012-01-19 19:36 +0000
                Re: Fresh packaging ideas Theo Markettos <theom+news@chiark.greenend.org.uk> - 2012-01-19 20:27 +0000
                  Re: Fresh packaging ideas Martin Bazley <martin.bazley@blueyonder.co.uk> - 2012-01-19 21:18 +0000
                    Re: Fresh packaging ideas Matthew Phillips <spam2011m@yahoo.co.uk> - 2012-01-19 23:01 +0000
                      Re: Fresh packaging ideas Martin Bazley <martin.bazley@blueyonder.co.uk> - 2012-01-20 20:22 +0000
                    Re: Fresh packaging ideas Rick Murray <heyrickmail-usenet@yahoo.co.uk> - 2012-01-20 09:02 +0100
                    Re: Fresh packaging ideas Rick Murray <heyrickmail-usenet@yahoo.co.uk> - 2012-01-20 09:04 +0100
                  Re: Fresh packaging ideas Jess Hampshire <jesshampshire@googlemail.com> - 2012-01-23 19:43 +0000
                    Re: Fresh packaging ideas wpb <w.blatchley@yahoo.com> - 2012-01-23 21:30 -0800
                    Re: Fresh packaging ideas Theo Markettos <theom+news@chiark.greenend.org.uk> - 2012-01-25 16:18 +0000
                      Re: Fresh packaging ideas Rick Murray <heyrickmail-usenet@yahoo.co.uk> - 2012-01-25 18:15 +0100
                Re: Fresh packaging ideas Matthew Phillips <spam2011m@yahoo.co.uk> - 2012-01-19 21:55 +0000
                  Re: Fresh packaging ideas Theo Markettos <theom+news@chiark.greenend.org.uk> - 2012-01-19 23:02 +0000
                  Re: Fresh packaging ideas Martin Bazley <martin.bazley@blueyonder.co.uk> - 2012-01-20 19:48 +0000
                    Re: Fresh packaging ideas Matthew Phillips <spam2011m@yahoo.co.uk> - 2012-01-20 20:44 +0000
                    Re: Fresh packaging ideas Theo Markettos <theom+news@chiark.greenend.org.uk> - 2012-01-20 21:10 +0000
                      Re: Fresh packaging ideas Martin Bazley <martin.bazley@blueyonder.co.uk> - 2012-01-21 00:51 +0000
                        Re: Fresh packaging ideas Rick Murray <heyrickmail-usenet@yahoo.co.uk> - 2012-01-21 04:39 +0100
                        Re: Fresh packaging ideas Theo Markettos <theom+news@chiark.greenend.org.uk> - 2012-01-21 15:34 +0000
                      Re: Fresh packaging ideas Rick Murray <heyrickmail-usenet@yahoo.co.uk> - 2012-01-21 04:32 +0100
                      Re: Fresh packaging ideas Rick Murray <heyrickmail-usenet@yahoo.co.uk> - 2012-01-21 04:44 +0100
            Re: Fresh packaging ideas Theo Markettos <theom+news@chiark.greenend.org.uk> - 2012-01-19 13:53 +0000
              Re: Fresh packaging ideas Martin Bazley <martin.bazley@blueyonder.co.uk> - 2012-01-19 20:56 +0000
                Re: Fresh packaging ideas Chris Evans <chris@cjemicros.co.uk> - 2012-01-20 13:32 +0000
                  Re: Fresh packaging ideas Patric@invalid.com - 2012-01-20 16:16 +0100
                    Re: Fresh packaging ideas druck <news@druck.org.uk> - 2012-01-21 09:55 +0000
                      Re: Fresh packaging ideas Fred Bambrough <fred@[127.0.0.1]> - 2012-01-21 11:00 +0000
                      Re: Fresh packaging ideas Rick Murray <heyrickmail-usenet@yahoo.co.uk> - 2012-01-21 19:04 +0100
                        Re: Fresh packaging ideas Dave Symes <dave@triffid.co.uk> - 2012-01-21 19:09 +0000
                          Re: Fresh packaging ideas Ron Briscoe <ron.briscoe@blueyonder.co.uk> - 2012-01-21 20:18 +0000
                            Re: Fresh packaging ideas Patric@invalid.com - 2012-01-21 23:21 +0100
                          Re: Fresh packaging ideas Stuart <Spambin@argonet.co.uk> - 2012-01-21 23:28 +0000
                  Re: Fresh packaging ideas Rick Murray <heyrickmail-usenet@yahoo.co.uk> - 2012-01-21 04:18 +0100
                  Re: Fresh packaging ideas Alan <alan_baa@hotmail.com> - 2012-01-22 07:51 -0800
                    Re: Fresh packaging ideas Frank de Bruijn <zuiderduin@hotmail.com> - 2012-01-23 08:13 +0100
                Re: Fresh packaging ideas Alan <alan_baa@hotmail.com> - 2012-01-23 05:06 -0800
                  Re: Fresh packaging ideas Martin Bazley <martin.bazley@blueyonder.co.uk> - 2012-01-23 21:32 +0000
                    Re: Fresh packaging ideas Alan <alan_baa@hotmail.com> - 2012-01-24 05:05 -0800
                    Re: Fresh packaging ideas Theo Markettos <theom+news@chiark.greenend.org.uk> - 2012-01-25 22:41 +0000
                      Re: Fresh packaging ideas Rick Murray <heyrickmail-usenet@yahoo.co.uk> - 2012-01-26 15:33 +0100
    Re: Fresh packaging ideas Rick Murray <heyrickmail-usenet@yahoo.co.uk> - 2012-01-17 06:39 +0100
      Re: Fresh packaging ideas druck <news@druck.org.uk> - 2012-01-17 23:10 +0000
        Re: Fresh packaging ideas Rick Murray <heyrickmail-usenet@yahoo.co.uk> - 2012-01-18 09:26 +0100
      Re: Fresh packaging ideas Theo Markettos <theom+news@chiark.greenend.org.uk> - 2012-01-17 23:10 +0000
    Re: Fresh packaging ideas Stuart <Spambin@argonet.co.uk> - 2012-01-17 15:20 +0000
      Re: Fresh packaging ideas Gavin Wraith <gavin@wra1th.plus.com> - 2012-01-17 16:33 +0000
        Re: Fresh packaging ideas Chris Johnson <chrisjohnson+news@spamcop.net> - 2012-01-17 17:02 +0000
          Re: Fresh packaging ideas Tim Hill <tim@invalid.org.uk> - 2012-01-21 15:12 +0000
    Re: Fresh packaging ideas  <news@iank.org.uk> - 2012-01-28 12:19 +0000

Page 4 of 4 — ← Prev page 1 2 3 [4]


#2767

Fromdruck <news@druck.org.uk>
Date2012-01-17 23:10 +0000
Message-ID<jf4v4c$h8f$1@dont-email.me>
In reply to#2753
On 17/01/2012 05:39, Rick Murray wrote:
> My Firefox nags me to update. I will *when* *I* *am* *ready*.
>
> Ideally, this shouldn't be necessary. Instead, a file called
> "Changes" should list what is different compared to the previous
> release, and if security holes have been fixed - say so. THIS IS
> IMPORTANT. There are a couple of Android apps on my phone I've NOT
> updated as the app information gives no list of why this update is
> necessary. Why should I take time to update this? What's new? What's
> been fixed? These are things that should be described. [possibly for
> several past versions for a rapidly-changing project]

[Snip]

Basically Rick, as effortless over the internet automatic software 
updating distresses you so much, I recommend you unplug your computer 
from the interwebs, and only load the original software from cassette tape!

---druck

[toc] | [prev] | [next] | [standalone]


#2773

FromRick Murray <heyrickmail-usenet@yahoo.co.uk>
Date2012-01-18 09:26 +0100
Message-ID<almarsoft.7060427894511265278@news.orange.fr>
In reply to#2767
On Tue, 17 Jan 2012 23:10:05 +0000, druck <news@druck.org.uk> wrote:

> Basically Rick, as effortless over the internet automatic software 
> updating distresses you so much,

Are you intentionally missing the point?

These days it doesn't suffice to say "here's a new version". People 
might find it in themselves to live with a couple of typos, but a 
serious bug fix is a more compelling reason to upgrade. And I'm sure 
I've not been the only one on the planet to update something, think 
"my God, what have they done?" and revert minutes later... Is it 
really so hard to list improvements/changes? Are you one of those 
programmers that hates writing documentation? ;-) [*]

New does not always mean better. Maybe one day you'll come to 
understand that.


Best wishes,

Rick.

* - yanking your chain a little, for I know DiskKnight is well 
documented!

[toc] | [prev] | [next] | [standalone]


#2768

FromTheo Markettos <theom+news@chiark.greenend.org.uk>
Date2012-01-17 23:10 +0000
Message-ID<gUj*--xXt@news.chiark.greenend.org.uk>
In reply to#2753
In comp.sys.acorn.apps Rick Murray <heyrickmail-usenet@yahoo.co.uk> wrote:
> On 15/01/2012 18:02, Theo Markettos wrote:

Hi Rick,

Thanks for your interesting comments... I won't quote all of them to avoid
this getting too long - I've trimmed a few that generally sensible.

> > Package version
> 
> There might be a problem balancing between traditional RISC OS (and, I 
> dare say, logical) version numbering x.yy and that bloody horrible Unix 
> version numbering, and I quote here the version of NoScript: 2.2.6rc1 
> and I've seen worse, like 1.3.2.59381. What the hell?

RiscPkg defines a sort order (more-or-less numerical sort of each chunk that
does sensible things with letters).  It should cope with any kind of wierd
version numbering that the package includes.

(59381 is probably the SVN revision or the build number, in case you were
wondering)

> > Dependencies: Drop other package files it depends on, or enter manually
> 
> It might be nifty if it can scan through !Run looking for RMEnsure lines.

Nice idea.

> > Licence: Select from a list of known licence types, or enter your own
> > (non-ideal)
> 
> You need to be able to enter your own, not everybody is ready for a free 
> licence yet.

Some of the known types could be tickybox lists of things like 'no
commercial use', 'no modifying'.  I'm just trying to encourage people to use
clear licences not 'free for anything except what my cat wouldn't do'.  But
with sufficient discouragement an 'other' field would be available, and fill
in the copyright file with the actual terms.

> Plus a place for including tags to aid in selection. The thing I dislike 
> most about Ubuntu's system is that it offers a few thousand things, and 
> narrowing down the list is a rather clumsy process.

That's a good idea... doesn't help deciding the disc format, but might be
handy in searching.

> > !PackageInstaller.  Optionally it can also upload that Zip to an
> > author-defined place (eg their website).
> 
> SFTP support? ;-)

Perhaps there's some lib<thingy> out there that does every file transfer
protocol under the sun?

> > 8. Caveat: software must be capable of self-configuring.  For example, if it
> > needs something set up in Choices:, it must copy it into<Choices$Write>
> > itself on first run.
> 
> The package manager, or the software being installed?

The software.  The package manager is a system thing, Choices is a user
thing. [Sort of.  Installing packages in your personal file space and then
other users trying to install different versions in theirs is something that
makes it a bit complicated].

> To add some of my own thoughts:
> 
> 1. Pre- and Post-install execution. There should be an option to run a 
> short program before or after installation. This can permit a variety of 
> tidy-ups to be performed. I sometimes do this with my own applications 
> to autodetect the sort of system in use and provide suitable default 
> options, without cluttering up the main executable with such one-off code.

Perhaps... see my comments elsewhere on cross-installing that makes this
tricky.

> 3. Depending on how much interactivity you would like on the server, it 
> might be an idea to offer an option *after* installation where you can 
> flag "This package works on my computer" or "This package does not work 
> on my computer".

Hmm... perhaps.  Feel like coding it? ;-)

> 4. There *ABSOLUTELY* needs to be a way to permit the Package Manager to 
> take over pre-existing system resources.

Yes.

> Caveat: Must be able to cope with something ELSE (i.e. SysMerge) doing 
> likewise, and not get itself into a panic if the version present is not 
> the one it thinks ought to be there.

Yes.

> Caveat: Must be aware that while a resource can be *replaced*, it 
> doesn't mean it can *run*. I've had SharedULib with *no* ULib software 
> loaded complain about active clients, and thus refuse to do. Needed a 
> reboot. Gee, just like Windows. <stir><stir>

Modules should never be run or loaded by the package manager, only by
software that uses them.
 
> Perhaps it might be an idea to try to RMKill existent versions prior to 
> autorunning the applications, giving a suitable error if anything fails 
> to die? [of course, it *will* check to ensure the version isn't the same]

If you RMKill things, apps <will> die and you risk a machine lockup.  Many
modules don't have clients that register with them they just provide
services.  If a service-providing module disappears underneath an app...
RMEnsure should cope with this scenario just fine.

> 5. Just a throw-away idea, but some of my software has specific hardware 
> dependencies. It might be an idea to prompt for this? Alternatively, the 
> pre-install program could try to detect the requires stuff and fault if 
> it is not correct. [and thus abort the installation]

Not sure about that... you may want to install for a machine that isn't the
one you're currently running on.

> I don't know if/how I can help - it looks like I'm going to spend 
> _FOREVER_ on bloody night shift, and as such I think I slept most of 
> last weekend. :-/ I have the older Castle C compiler, and I hope by late 
> Spring (give or take) to have upgraded to the latest ROOL suite. I'm 
> okay with C and ARM code, plus BASIC. I like DeskLib, not so keen on the 
> Desk: version (too many mucked up names). Only briefly know OSLib, and 
> detest RISCOSLib with a real passion. ;-) My socket handling code is 
> fairly rudimentary but it works and multitasks nicely. I'm the idiot 
> that wrote a teletext program using ANSI characters, but given it 
> bit-bashed IIC on the parallel port (both RISC OS *and* DOS [plus x86 
> board using ARMEdit]!), I'm quite pleased with it. My current Acorn 
> machines are emulated, but I have real hardware around, I just don't use 
> it so much as the emulations are just so damn convenient.
> Either way, if I can be any use, get in touch!

Having a read up on the RiscPkg policy manual, libpkg and (if Alan is happy)
PackMan's source and working out what, if anything, might need to be changed
in which places might be a good start.  Both libpkg and PackMan are in C++,
but don't let that scare you... for code reading purposes just read it like
C with occasional OO bits.  Both seem quite well written at first glance.

http://source.riscpkg.org/
probably best starting with the webSVN to feel your way around.

Theo

[toc] | [prev] | [next] | [standalone]


#2759

FromStuart <Spambin@argonet.co.uk>
Date2012-01-17 15:20 +0000
Message-ID<5253064b4fSpambin@argonet.co.uk>
In reply to#2737
In article <fUj*KgmXt@news.chiark.greenend.org.uk>,
   Theo Markettos <theom+news@chiark.greenend.org.uk> wrote:
> 4. The package manager allows you to select where the application may be
> installed by drag and drop.

I think that answers my principle gripe.

The only rider I would add is that with NetSurf, for example, I like to
keep development builds, and may have several different ones available at
any one time, separate from the official release versions

-- 
Stuart Winsor

Only plain text for emails
http://www.asciiribbon.org


[toc] | [prev] | [next] | [standalone]


#2760

FromGavin Wraith <gavin@wra1th.plus.com>
Date2012-01-17 16:33 +0000
Message-ID<d3040d5352.wra1th@wra1th.plus.com>
In reply to#2759
In message <5253064b4fSpambin@argonet.co.uk>
          Stuart <Spambin@argonet.co.uk> wrote:

> The only rider I would add is that with NetSurf, for example, I like to
> keep development builds, and may have several different ones available at
> any one time, separate from the official release versions

I suspect that lots of people do as I do, with most upgraded software,
which is have a sub directory called "old" in which to keep the previous 
version.
It is not as thoroughgoing as keeping all versions, but it is less
prodigal and often sufficient for rescue when a version is buggy.


-- 
Gavin Wraith (gavin@wra1th.plus.com)
Home page: http://www.wra1th.plus.com/

[toc] | [prev] | [next] | [standalone]


#2761

FromChris Johnson <chrisjohnson+news@spamcop.net>
Date2012-01-17 17:02 +0000
Message-ID<52530fa83fchrisjohnson+news@spamcop.net>
In reply to#2760
In article <d3040d5352.wra1th@wra1th.plus.com>,
   Gavin Wraith <gavin@wra1th.plus.com> wrote:
> which is have a sub directory called "old" in which to keep the
> previous version.
Amazing how we both have come up with exactly the same method 8)

-- 
Chris Johnson

[toc] | [prev] | [next] | [standalone]


#2843

FromTim Hill <tim@invalid.org.uk>
Date2012-01-21 15:12 +0000
Message-ID<525514fb9ctim@invalid.org.uk>
In reply to#2761
In article <52530fa83fchrisjohnson+news@spamcop.net>, Chris Johnson
<chrisjohnson+news@spamcop.net> wrote:
> In article <d3040d5352.wra1th@wra1th.plus.com>, Gavin Wraith
>    <gavin@wra1th.plus.com> wrote:
> > which is have a sub directory called "old" in which to keep the
> > previous version.
> Amazing how we both have come up with exactly the same method 8)

...and inside 'old' is 'older' ad nauseam!

OR

Your App !AppName in Apps is its latest versions and it lives alongside a
folder called AppName which contains subfolders with earlier versions
(AppName_1-01 or just 1-01).

A pity some developers cannot include a version number in a distro's zip
file name. (AppName_1-01/zip)  That would make manual installs easier,
and not help me to obliterate a working copy's zip unintentionally. ;-)

-- 
Tim Hill of timil.com . . .
* supports TFT & shares in cheaper ethical telecoms http://tjrh.eu/phone
* has a genuine & spam-proof address for Usenet http://www.invalid.org.uk/
* accepts incoming email: substitute postmaster@ for tim@

... "Adieu, and take thy praise with thee to heaven" Henry IV, Act v, Sc.4

[toc] | [prev] | [next] | [standalone]


#2973

From <news@iank.org.uk>
Date2012-01-28 12:19 +0000
Message-ID<525a5761bdnews@iank.org.uk>
In reply to#2737
Hello All
Back in 2004 I started work on creating a package manager myself. For
various reasons this project ground to a halt after a few months, things
moved on and I never finished it. I thought now might be a good time to
summarise my plans here. I do still have the Basic code and may be
persuaded to do bring it out of moth balls and continue with it if people
feel this would be of use.

I wanted to create a package manager that would encourage use by making it
as easy to use as possible and fit in with the general ethos and style of
RISC OS. Very little in the way of lists are kept on the machine and
update checks are at the discretion of the individual application although
an OS !Boot update check would be a viable addition as I see it. It can
also easily be split up into smaller projects for easier maintenance. Also
be easily added to for general or specific tasks.
I have tidied up some of my initial notes a bit and included below:-

Downloading
Each piece of software would be accompanied by the repository datafile
containing details of the name, physical location of the software on the
internet, description, version information. When software is updated an
updated repository data file would be uploaded to the repository website.
This would allow the software to be either downloaded via the repository
or direct from the developers website.

Repository website
This will provide a list of all software registered to it containing name
description version etc derived from the repository datafile's. People can
select programmes for download as with a normal website. The website would
also contain a catalogue file to be used with dedicated Installation
Download software and a directory or directories containing copies of all
the repository datafiles for dependency reference.

Installation Downloader
Could provide downloading using a Linux style interface or just be a
facility for downloading an Internet package and it's dependencies to
cover for the possibility of there not being one installed. This reads the
catalogue file from the repository to compile a list of applications
available and where to download them from.

Installer core
This reads the installation file which is contained inside an Application
or with a file. It can be triggered by the Installation Downloader by a
modified zip file application, by the application it is contained with in
or just double clicking on it. The core also generates a simple to
configure wimp structure to guide the user through the process which can
be used by addition functions as well as the installer core.
When an in installation file is double clicked on, run from a zip or the
Installation downloader it will run the Installation file checking if
dependencies are available or not. If they are not available It will read
the repository data file from the Repository website then go and fetch it.
If the installer is called from the application using 'Install' it will
first check if the app is not being run from a zip file. If it is being
run from a zip
file it will go through the normal install procedure. Otherwise it will
first check with the repository website that a later version is not
available if it is it will prompt the user to decide if they want to
update it. If not it will go through it's dependencies to check if there
are updates available for them then quit.

Installation file
This is a file based on the Obey file format. You can also use anything
you would in an Obey file in it. It also includes the facility to send
substantial amounts of data to the installer eg Copyright statement,
Application name, versions of the OS that it can be used with, using a
modification of the 'Set' command.
It can also easily have commands added to it using standard Library files,
ether by putting the library in the application or in a dedicated library
directory in !Boot. A range of commands will also be available for
installing and removing files, asking questions to the user etc. It will
also support full Basic style multi line IF THEN ELSE commands. 
It will also include details of when it can and cannot be deleted.

Application install
This should be flexible and foolproof as possible. No control should be
placed on where or how many copies of an application can be installed. It
is the responsibility of each application to trigger it's own updates.
This does mean apps that aren't used aren't updated.
The installation check can be called when the Application is Run, Quit,
delayed to when the machine shuts down or whenever an Application wants.
This can be done using the 'Install' command either in the !Run file or in
the Application it's self this will then force a check (See Installer
core). 
The installation check process can also be started from the !Run file if a
dependency is not found. This will mean if a application gets moved to a
different machine or the !Boot directory gets corrupted an application
should in theory always be able to get it's self back to a working state
as it carries it's install file with it. There will need to be a small
programme included in every app that uses this to cover for the lack of in
installer being installed.

The uninstall process will largely be an automatic reversal of the install
procedure. With the exception of the dependencies that specify they should
be left. There is no way that I can see for checking to see if
dependencies are needed, as you can never be certain if a programme that
doesn't use the installer is using them.

Module/Library install 
These functions will be covered by separate 'Library' functions along the
same lines using the same install file layout but their install files are
in a dedicated directory in there section of the !boot.


Regards
Ian K

[toc] | [prev] | [standalone]


Page 4 of 4 — ← Prev page 1 2 3 [4]

Back to top | Article view | comp.sys.acorn.apps


csiph-web