The UQLX Sinclair QL Emulator for Linux
by Richard Zidlicky, re http://www.geocities.com/SiliconValley/Bay/2602
UQLX-RPM-Packages
The Redhat Package Manager is a very handy means to keeping track of different program versions and the many files a particular program collection might consist of. It also makes the orderly programs de-/installation an easy task.
Therefore I'd assemble the binaries and sources RPM packages for the UQLX. - Which are far from perfect, as this is my first attempt to producing such a (relocatible) package for public use. Thus:
I've tested the UQLX packages compiling, installing and the programs
running in my systems (Suse/Caldera and Debian, kernel 2.2.10, i586 pc) and
everything appears to working quite well. Nevertheless, if it produces buggy
code or faulty structures anywhere else, pse give me a notice, such that I might find out what went
wrong and produce another version - just a short notice about what when and
why, I usually won`t need an elaborate "bug report".
Further, someone else contributing the spec-file
data for other systems would be very welcome.
This is not another UQLX-version, the one and only authentic source of which is its author. The program can be found at his web-site:
http://www.geocities.com/SiliconValley/Bay/2602.
I'd use RPM 2.5.5 which, for compiling,
in turn requires a version of patch-2.5,
or later.
Conflicts may arise when using older rpm versions as I found, for instance,
version dependent differences in the doc-dir naming.
Current (Oct.1999) release based on the 99-10-01 version of UQLX.
It includes a few patches, which seem to be required for proper compilation due to to my own particular system configuration. Those patches can be left off and the program be re-compiled, after installation, then replacing the supplied binaries.
Some add-on's include:
(The latest versions of M89 and T6 can be found at the appropriate pages)
Separately:
Pre-compiled binaries and a minimal set of QL programs to start with.
UQLX compiled using egcc 2.91, with glibc 2.0 (debian 2.1), linux 2.2.10,
i586 and the uqlx preferences selected to primarily achieve best executional
speed of the emulator.
Successfully run with the X window managers "fvwm" and most efficiently, with
"WindowMaker" where it executes at up to about half the QXL timing and many
operations even faster, under certain conditions, e.g. data transfer at host
speed. - Mouse & P.I.F. interaction was very bad.
TCP/IP was dispensed with - I'd consider it, despite being not much of use in a Linux system, too much a security risk because of the "root" access rights which depending on it's mode of operation the UQLX would (or, seems to) require. Further, leaving it off was speeding up the UQLX. And, there is always the alternative of the user himself compiling a version to suit...
This package will install in the directory /usr/local/uqlx, where the installation prefix "/usr/local" can be overridden with the "--prefix" RPM install/upgrade option; for instance, installing to /opt/local/uqlx:
rpm -U --prefix /opt/local uqlx.1386.rpm
RPM installation in a Debian system might fail: "/bin/sh" was not found, due to whatever reason, when I tried the setup. If that is all what RPM regards "missing", the option "--nodeps" will help.
The files and directories are made accessible for the user root and the group users, only.
The documents, vi and emacs tagfiles, UQLX configuration defaults and the
X-defaults go to the RPM configured documents destination directory,
subdirectory "uqlx-{version-date}". The
X-defaults (Xql, Xqlaw) will be copied to "/usr/X11/lib/X11/app-defaults", if that directory is present
and those files are not in there, already - and left untouched when
un-installing the program.
A few S.Basic extensions and program files go to the progs/mdv and progs/win
directories or, will remain with the docs
if other equally named files are already present.
If no "~/.uqlxrc" is found in the HOME directory the defaults will be copied there from the doc-dir, which also applies to the compiling configuration defaults, "~/.uqlx_cprefs".
The auxilary file ".uqlxdirs" should be left unchanged since it will be used by the UQLX package un-installing procedure (rpm -e uqlx, etc).
This is how I use to install and (re-)compile the sources:
rpm -U uqlx.src.rpm
unpacking to the RPM sources directory, and, in the corresponding SPECS directory
rpm -ba uqlx-990303-1.spec
to recompiling and installing the programs, and producing the packages.
RPM invoked as
rpm --checksig
uqlx.i386.rpm
rpm --checksig uqlx.src.rpm
if the files are not corrupted, somehow, tells:
{rpm-file}: size pgp md5 OK
# SYSROM = minerva_rom # other names will not be recognized ROMDIR = /ql/romdir # can be linked to where the ql files really are RAMTOP=17000 # maximum of useable RAM := 16256K SER1=/dev/ttyS0 SER2=/dev/ttyI1 # does not work: # SER3=/dev/ttyI2 # SER4=/dev/ttyS1 PRINT=lpr -Praw # depending on which printer filter used <ff> might be not be possible to
# supress. if so, un-commenting the next line would reveal an alternative: ###SER1=/dev/lp0 # which could send some error messages to the calling xterm but, works! and, # further, does circumvent possible character translation problems (TRA, etc) CPU_HOG=0 FAST_START=1 REAL_WHITE=0 STRICT_LOCK=1 SIZE_1=640x400 SIZE_2=800x600 SIZE_3=1024x768 DEVICE = MDV1,~/.qm/prog/mdv1/ DEVICE = MDV2,~/.qm/prog/mdv2/ DEVICE = MDV3,~/.qm/prog/win1/ DEVICE = MDV4,~/.qm/prog/win2/ DEVICE = MDV5,~/.qm/prog/win3/ DEVICE = MDV8,~/.qm/prog/win4/ DEVICE = MDV6,~/.qm/prog/win5/ DEVICE = MDV7,~/.qm/prog/win6/ # DEVICE = MDV8,~/.qm/prog/ DEVICE = FLP1,~/.qm/prog/flp1/ DEVICE = FLP2,~/.qm/prog/flp2/ DEVICE = FLP3,~/.qm/prog/flp3/ DEVICE = FLP4,/flp1,qdos-fs DEVICE = FLP5,/flp1 DEVICE = FLP6,~/.qm/prog/qxw/d,qdos-fs DEVICE = FLP7,/cdrom DEVICE = FLP8,~/ # qxl win drives DEVICE = WIN1,/hda1-c/qxl.win,qdos-fs DEVICE = WIN2,/hda2-f/qxl.win,qdos-fs DEVICE = WIN3,/hda3-g/qxl.win,qdos-fs DEVICE = WIN4,/hda1-c/q4/qxl.win,qdos-fs DEVICE = WIN5,/hda1-c/q5/qxl.win,qdos-fs DEVICE = WIN6,/hda1-c/q6/qxl.win,qdos-fs DEVICE = WIN7,/hda1-c/q7/qxl.win,qdos-fs DEVICE = WIN8,/hda1-c/q8/qxl.win,qdos-fs DEVICE = RAM1,/tmp/.ram1-%x,clean DEVICE = RAM2,/tmp/.ram2-%x,clean # and, wasting much of valuable QL memory, but not a problem when in the UQLX,
# for those who'll never seem to learn how to use the zip compressing program:
DEVICE = RAM8,/tmp/.ram8-%x,clean
## .uqlx_cprefs ## USE_XAW=no LOCAL_OPTFLAGS=-O3 \ -DCPU=586 \ -finline-functions \
-malign-loops=4 \
-malign-functions=4 \
-malign-jumps=4 \ -fexpensive-optimizations
# the "-malign"-s did result to a speed-up of up to about 25%! # mit BUILDFLAGS zusammengefuehrt BUILD_SPECIALFLAGS=-D__i586__ \ -DU_NODDOT \ -DNEWSERIAL \ -DNEWPTY \ -DUSE_IPC \ -DDO_GRAB \ -DSH_MEM \ -UIPDEV \ -DHPR_STYLE # "hpr_style" for capital letters of the additonal S.Basic words of UQLX
# "hpr_style" weil ich die manieristische groß/kleinschreiberei nicht mag LOCAL_DEFINES= # mit BUILD_SPEIALFLAGS zusammengefuehrt LOCAL_INCLUDES= # LOCAL_LIBPATH= # LOCAL_LINKFLAGS= # als LINKFLAGS uebernommen # UQLXDIR=/opt/uqlx