In the market

A place to discuss general QL issues.
AndrewLambert
ROM Dongle
Posts: 14
Joined: Wed Jan 17, 2024 2:01 pm

In the market

Post by AndrewLambert »

Hi,
I'm interested in getting some idea of the market for buying QLs, and any help would be very appreciated.
I am returning to QL (see my intro in Welcome forum) and in the market to buy. I have enlisted for the next Q68 batch (hopefully this year) but I would like a QL also as I would like to run Quill.

I've been browsing the web after QLs and found various options of working / not working / unknown. Also some very promising looking repair services.

So the question would be, what is a reasonable price to pay for a QL where it has been tested and maybe had the keyboard membrane done?

Also, looking at photos of the mainboard, I notice that there are axial type electrolytics so I would assume that these need swapping out? Question kind of self answers I think.


User avatar
NormanDunbar
Forum Moderator
Posts: 2278
Joined: Tue Dec 14, 2010 9:04 am
Location: Leeds, West Yorkshire, UK
Contact:

Re: In the market

Post by NormanDunbar »

Hi Andrew.

I can't help with actual QLs, but if you want to run Quill, then any of the emulators available will be happy to do that for you.

I use Marcel's excellent QPC2 https://www.kilgus.net/qpc/ which is written for Windows, but I run it on Linux under Wine and it's fine, other than not being able to access floppy drives natively, but ok for floppy images, which is currently, all I have.

Good hunting, and I hope you get a Q68 soon.


Cheers,
Norm.


Why do they put lightning conductors on churches?
Author of Arduino Software Internals
Author of Arduino Interrupts

No longer on Twitter, find me on https://mastodon.scot/@NormanDunbar.
User avatar
Pr0f
QL Wafer Drive
Posts: 1308
Joined: Thu Oct 12, 2017 9:54 am

Re: In the market

Post by Pr0f »

For most of the older QL's I've seen - the caps are usually in quite good order - the only ones you may want / need to look at are around the supply circuitry behind the Microdrives and under that heatsink.

Membranes can still be had new for about £15 or so and not too difficult to replace, it's usually a pain to get the 6 wires back in their little push socket for power and MDV leds.

Microdrives can be an issue. Video can be an issue - the ZX8301 chip that produces the video display is fragile if you plug/unplug the monitor during use.

Power supply - original ones are quite hard to find and expensive - there are alternatives, but they too are not cheap - the QL has some unusual voltage requirements - 9V at about 2A, and 15VAC at no more than 100ma


AndrewLambert
ROM Dongle
Posts: 14
Joined: Wed Jan 17, 2024 2:01 pm

Re: In the market

Post by AndrewLambert »

Thanks Norman, I have QPC 2 running and it truly is excellent, though a sentimental side of me still wants the old QL :D . I haven't quite figured out how to install software sourced from Dilwyn (thank you Dilwyn). Is there a resource you can point me to that would instruct?

Pr0f, thanks for the info I am closely watching the market to see how things measure before I part with the cash.

Update: got Quill working now.


User avatar
NormanDunbar
Forum Moderator
Posts: 2278
Joined: Tue Dec 14, 2010 9:04 am
Location: Leeds, West Yorkshire, UK
Contact:

Re: In the market

Post by NormanDunbar »

Hi Andrew,
AndrewLambert wrote: Wed Feb 07, 2024 11:40 am I haven't quite figured out how to install software sourced from Dilwyn (thank you Dilwyn). Is there a resource you can point me to that would instruct?
In my case, I download the file to my laptop. I have my win1_ drive pointing to a QL style hard drive image and also, my QPC dos1_ drive pointing at a directory on my laptop where I keep everything for QPC, it's /home/norman/QPCStuff. So a "dir dos1_" will show me the contents of that location. I usually copy the download from my downloads directory to a "zipfiles" directory within the above, QPCStuff location. (QPCStuff/zipfiles).

In QPC, I open run the ACP utility (Archivers' Control Panel) and use that to extract the contents to Ram1_ for testing. Using ACP on QPC preserves the QL's headers for executable files. The source of many a problem when unzipped on Windows or Linux!

Once tested, I create a new directory on my "hard" drive, win1_, and copy from Ram1_ to the new directory. If necessary, I would then open the boot file in a text editor, or load it -- if it has line numbers -- into S*BASIC and edit any device names to make the new location, remove loading tool-kits that my boot file loads and such like.

Oh, yes, as Linux is case sensitive, accessing dos1_ has also to be case sensitive. I assume that on Windows it doesn't matter. That caught me out a couple of times!

In summary:

* Create a folder on your host computer and call it QPCStuff.
* Create a folder named QPCStuff/ZipFiles too.
* In the QPC startup dialogue, configure dos1_ to point at the QPCStuff folder.
* Save all your downloaded zipfiles with QL code to this location, QPCStuff/ZipFiles.
* Install ACP, https://dilwyn.qlforum.co.uk/arch/acp4e01.zip, which requires an updated version of the Liberator runtimes, on your QPC win1_ drive. (This needs special handling!!!)
* Now, every time you get a file from Dilwyn's immense web site, probably the best website in the entire universe, you save it in QPCStuff/ZipFiles, run ACP, point it at dos1_ and ram1_ and extract all. Test, reconfigure and copy to win1_.

Getting ACP onto your system is tricky, and there are pointers on Dilwyn's site on extracting files from zipfiles. He also has a utility, the name of which escapes me, (EDIT: Job2Bas https://dilwyn.qlforum.co.uk/arch/job2bas.zip) which converts a zipfile/executables into a plain text file that can be loaded and run to recreate the original, complete with the QL required headers.

HTH

Cheers,
Norm.


Why do they put lightning conductors on churches?
Author of Arduino Software Internals
Author of Arduino Interrupts

No longer on Twitter, find me on https://mastodon.scot/@NormanDunbar.
AndrewLambert
ROM Dongle
Posts: 14
Joined: Wed Jan 17, 2024 2:01 pm

Re: In the market

Post by AndrewLambert »

Thanks Norman, very kind of you to take the time to help.


Derek_Stewart
Font of All Knowledge
Posts: 3975
Joined: Mon Dec 20, 2010 11:40 am
Location: Sunny Runcorn, Cheshire, UK

Re: In the market

Post by Derek_Stewart »

Hi,

Some of the best QL software is freely available, on Dilwyn's Web site, see the link at the top of this Web page, in the Quick Links.

I like Fileinfo2 that associates files with executables, so to run a Quill files NO need to open Quill and load the file, just execute the the _doc file and Fileinfo2 executes Quill and opens the doc file. Or any other data file associated with the QL executable.

ACP allows easy use of compressed files in any format, and and expand or compress files.

There are many other programmes that can make the QL so much better than the basic system.

Most of these programmes need configuring, which needs reading of the documentation on the QL Homepage.


Regards,

Derek
User avatar
bwinkel67
QL Wafer Drive
Posts: 1202
Joined: Thu Oct 03, 2019 2:09 am

Re: In the market

Post by bwinkel67 »

AndrewLambert wrote: Wed Feb 07, 2024 11:40 am I haven't quite figured out how to install software sourced from Dilwyn (thank you Dilwyn). Is there a resource you can point me to that would instruct?
There's a bit of a chicken-and-egg issue there. For all the zip files on the site you need the QL unzip utility, which is an executable -- well, you can unzip them under Windows or Mac, but any executable in those zip archives will lose information, making it non-runable in QDOS. To get the unzip executable then to work on an emulator (or QL with sufficient memory), you use the BASIC program that Dilwyn has on the Archivers site:

https://dilwyn.qlforum.co.uk/arch/unzip096.bas

It's a BASIC program that creates the unzip executable. From there you can then just unzip anything you need. Dilwyn also provides the BASIC program (that he wrote) that creates these self-extracting BASIC programs:

https://dilwyn.qlforum.co.uk/arch/job2bas.zip

...it's just a nifty BASIC program:

Code: Select all

100 REMark JOB2BAS_bas - convert an executable job to a BASIC program
110 REMark by Dilwyn Jones, September 2011
120 :
130 REMark configuration options
140 line_no%        = 1 : REMark first line number of the outputted S*BASIC program.
150 line_inc%       = 1 : REMark line number increment steps of S*BASIC program
160 datas_per_line% = 4 : REMark number of DATA values per line
170 :
180 CLS : CLS #0
190 :
200 INPUT #0,'Enter name of program to convert to BASIC data > ';ip$
210 IF ip$ = '' THEN STOP
220 :
230 INPUT #0,'Filename of BASIC program to save > ';op$
240 IF op$ = '' THEN STOP
250 :
260 OPEN_IN #3,ip$
270 IF FTYP (#3) <= 0 THEN
280   REMark no need to convert data files or S*BASIC programs
290   CLOSE #3
300   PRINT #0,'No need to convert this file type.'
310   STOP
320 END IF
330 :
340 file_len   = FLEN(#3) : REMark length of original program
350 data_space = FDAT(#3) : REMark dataspace of original program
360 :
370 IF file_len <= 0 OR data_space <= 0 THEN
380   CLOSE #3
390   PRINT #0,'Unsuitable program file.'
400   STOP
410 END IF
420 :
430 REMark how many long words and any extra (1-3 bytes) in Job file?
440 no_of_words     = INT(file_len/2)
450 oddbytes        = file_len-(2*no_of_words)
460 :
470 base = ALCHP(file_len) : REMark use RESPR instead if your system has no ALCHP extension
480 IF base <= 0 THEN
490   CLOSE #3
500   PRINT #0,'Unable to allocate memory to hold the original job.'
510   STOP
520 END IF
530 :
540 PRINT #0,'Loading'!ip$!'...'
550 LBYTES ip$,base
560 PRINT #0,'Building output S*BASIC program...'
570 :
580 OPEN_NEW #4,op$
590 :
600 REMark comment start of the S*BASIC equivalent...
610 PRINT #4,line_no%&' REMark '&ip$&' as an S*BASIC program.'
620 line_no% = line_no% + line_inc%
630 :
640 REMark comment how to recreate the Job program file
650 PRINT #4,line_no%&' REMark just RUN this program to recreate the original Job file'
660 line_no% = line_no% + line_inc%
670 :
680 REMark add code to output BASIC program to recreate original Job
690 PRINT #4,line_no%&' :'                                                             : line_no% = line_no%+line_inc%
700 PRINT #4,line_no%&' CLS : CLS #0 : RESTORE'                                        : line_no% = line_no%+line_inc%
710 PRINT #4,line_no%&' READ words,oddbytes'                                           : line_no% = line_no%+line_inc%
720 PRINT #4,line_no%&' READ orig_name$,orig_dspace'                                   : line_no% = line_no%+line_inc%
730 PRINT #4,line_no%&' base = ALCHP((2*words)+oddbytes) : REM or use RESPR()'         : line_no% = line_no%+line_inc%
740 PRINT #4,line_no%&' FOR a = 0 TO words-1'                                          : line_no% = line_no%+line_inc%
750 PRINT #4,line_no%&'   READ value : POKE_W base+(2*a),value'                        : line_no% = line_no%+line_inc%
760 PRINT #4,line_no%&' END FOR a'                                                     : line_no% = line_no%+line_inc%
770 PRINT #4,line_no%&' IF oddbytes > 0 THEN'                                          : line_no% = line_no%+line_inc%
780 PRINT #4,line_no%&'   READ value : POKE base+(2*words),value'                      : line_no% = line_no%+line_inc%
790 PRINT #4,line_no%&' END IF'                                                        : line_no% = line_no%+line_inc%
800 PRINT #4,line_no%&' PRINT #0,"Original filename was ";orig_name$'                  : line_no% = line_no%+line_inc%
810 PRINT #4,line_no%&' INPUT #0,"Save as filename > ";op$'                            : line_no% = line_no%+line_inc%
820 PRINT #4,line_no%&' IF op$ = "" THEN STOP'                                         : line_no% = line_no%+line_inc%
830 PRINT #4,line_no%&' PRINT #0,"Saving ";op$'                                        : line_no% = line_no%+line_inc%
840 PRINT #4,line_no%&' SEXEC op$,base,2*words+oddbytes,orig_dspace'                   : line_no% = line_no%+line_inc%
850 PRINT #4,line_no%&' RECHP base : REMark remove if using RESPR() above'             : line_no% = line_no%+line_inc%
860 PRINT #4,line_no%&' PRINT #0,"Program finished"'                                   : line_no% = line_no%+line_inc%
870 PRINT #4,line_no%&' STOP'                                                          : line_no% = line_no%+line_inc%
880 PRINT #4,line_no%&' :'                                                             : line_no% = line_no%+line_inc%
890 :
900 REMark how many long words and any extra bytes...
910 PRINT #4,line_no%&' DATA '&no_of_words&','&oddbytes&' : REMark number of LONG WORDS and ODD BYTES at end'
920 line_no% = line_no% + line_inc%
930 :
940 REMark what was the original filename?
950 PRINT #4,line_no%&" DATA '"&ip$&"' : REMark original Job program's filename."
960 line_no% = line_no% + line_inc%
970 :
980 REMark what was the original dataspace?
990 PRINT #4,line_no%&' DATA '&data_space&' : REMark original dataspace'
1000 line_no% = line_no% + line_inc%
1010 PRINT #4,line_no%&' :' : REMark just a spacer line
1020 line_no% = line_no% + line_inc%
1030 :
1040 REMark start to assemble the program data
1050 dpl% = 0 : REMark how many DATA items on current line so far?
1060 lne$ = line_no%&' DATA '
1070 :
1080 FOR a = base TO base+file_len-1 STEP 2
1090   word = PEEK_W(a) : REMark get a word
1100   IF dpl% >= datas_per_line% THEN
1110     PRINT #4,lne$ : REMark output the line
1120     line_no% = line_no% + line_inc%
1130     lne$ = line_no% & ' DATA '&word
1140     dpl% = 1
1150   ELSE
1160     REMark still room on this line
1170     REMark add a comma before value (unless this is the first item after DATA)
1180     IF dpl% > 0 THEN lne$ = lne$&','
1190     lne$ = lne$ & word : REMark add to DATA list
1200     dpl% = dpl% + 1
1210   END IF
1220 NEXT a
1230   IF dpl% > 0 THEN PRINT #4,lne$ : REMark part line to output
1240 END FOR a
1250 :
1260 IF oddbytes THEN
1270   REMark any odd bytes (1 to 3) to add?
1280   line_no% = line_no%+line_inc%
1290   lne$ = line_no%&' DATA '
1300   FOR a = 1 TO oddbytes
1310     IF a > 1 THEN lne$ = lne$&','
1320     lne$=lne$&PEEK(base+file_len-oddbytes)
1330   END FOR a
1340   PRINT #4,lne$
1350 END IF
1360 :
1370 REMark finished, so tidy up
1380 CLOSE #3 : REMark input JOB file
1390 CLOSE #4 : REMark output BASIC file
1400 RECHP base : REMark REM out this line if no RECHP command on your system
1410 :
1420 REMark tell user we have finished
1430 PRINT #0,'Program finished.'
1440 PRINT 'Transfer'!op$!'to'!'the'!'required'!'system,'!'then'!'just'!'RUN'!'it'!'to'!'recreate'!'the'!'Job'!'program'!'file!'
1450 STOP
1460 :
1470 :
1480 REMark utility routines
1490 :
1500 DEFine PROCedure XTV
1510   OUTLN #0,FLIM_W(#0),FLIM_H(#0),0,0
1520   WINDOW FLIM_W(#0),FLIM_H(#0)-52,0,0 : WINDOW #2,FLIM_W(#0),FLIM_H(#0)-52,0,0 : WINDOW #0,FLIM_W(#0),52,0,FLIM_H(#0)-52
1530   BORDER #1,1,255 : BORDER #2,1,255 : BORDER #0,1,255
1540   CLS : CLS #2 : CLS #0
1550 END DEFine XTV
1560 :
1570 DEFine PROCedure Sa
1580   SAVE win1_basic_JOB2BAS_bas
1590   QSAVE win1_basic_JOB2BAS
1600 END DEFine Sa
When I took my QL (bare bones 128K version) out of mothballs right before the pandemic, before I purchased a vDrive, I only had a serial connection to my laptop and I used Dilwyn's program to get me started. Back in the 90's I used Ralf Biederman's arc_exe, which I found on Dilwyn's site under RBArc. It's only 3K in size so the output of JOB2BAS isn't that big and works well with limited memory (and slow serial link connection). So I converted arc_exe to a self-extracting BASIC program (maybe only 8K in size), sent it over my serial connection to the QL, ran the BASIC program to generated arc_exe on my QL, and then just used arc_exe on the emulator to compress any executable I wanted and transferred it (via serial) over to the QL to uncompress it. Worked really well and got me started until I found better solutions to getting software on my QL.


User avatar
dilwyn
Mr QL
Posts: 2761
Joined: Wed Dec 01, 2010 10:39 pm

Re: In the market

Post by dilwyn »

Seems a bit counter-intuitive doesn't it to make something into a BASIC program just to get it from one computer to another?

A few years ago I had a light-bulb moment when it occurred to me that what I thought at the time to be a silly idea, converting executable programs to BASIC programs, could help shield us from this issue of lost executable file headers. And importantly, it got us around the catch-22 (chicken or egg) situation where you sent a zipped copy of UNZIP to a QL to unzip your zipped programs, but you needed a copy of UNZIP to UNZIP the zipped UNZIP...

It actually worked better than I thought at the time.


User avatar
QLvsJAGUAR
Gold Card
Posts: 464
Joined: Tue Feb 15, 2011 8:42 am
Location: Lucerne, Switzerland
Contact:

Re: In the market

Post by QLvsJAGUAR »

Hi Andrew and others,

when talking about using QPC2 and loading/installing QL software from ZIP files, there's two ways:

1. The hard way, where one seeks ands gets all bits and pieces from several places in the internet and then tries to setup a working system. A QL system (as other systems like Linux are a bit difficult to newbies, a single letter mistake and things just do not work).

2. Get the QL/E distribution where a LOT (including Unzip, ACP, "DOS devices" namend HFS) is already well prepared and ready to use.

Speaking of unZIPing - even without ACP - a (downloaded QL software) ZIP file with QL/E is very easy, a quick 1-2-3:

1. On PC side, place the ZIP file of choice in the folder e within the folder THE_DISTRIBUTION; this folder is accessible as HFS6_ (short for Host File System, a better suited name than DOS) under QL/E.

2. On PC side, start QPC2.bat in the folder qle within the folder THE_DISTRIBUTION; this starts the QPC2 virtual QL machine with the QL/E environment (a 80MB WIN filesystem with a whle lot of software (~2900 files).

3. In QL/E, go into any SBASIC (either System/SuperBASIC or any other SBASIC) instance and type

Code: Select all

ex unzip;hfs6_[yourzipfile]
followed by the <ENTER> key; this unZIPs the files of the ZIP-file to the DATA Device (RAM1_ by default; a

Code: Select all

DATA_USE [deviceandfolder]
beforehand and the files arrive in the desired location).

Reading the QLE_manual*txt may be worth.

QL forever!
Urs


QL forever!
https://www.sinclairql.net/ - Go and get THE DISTRIBUTION & QL/E!
https://www.youtube.com/QLvsJAGUAR/community - Blog
https://www.youtube.com/QLvsJAGUAR - Dedicated QL videos
Sinclair, QL, ATARI, JAGUAR, NUON, APPLE, NeXT, MiST & much more...
Videos, pictures & information
Post Reply