Sunday, 10 December 2017

Digital C

Digital C is a version of small C that was sold by Digital Precision up to and including the closing sale of the QL Collection back in the early to mid 1990s if memory serves QL Heaven correctly.
The collection comprised 10 disks containing zipped copies of a digital precision programs and their manuals. Digital C is now freeware and can be downloaded from Dilwyn Jones site. The sources are also available.

Digital C was QLHeaven's easy introduction to C programming. Digital C although complex was easier for the tyro to get in to that the more powerful C68 package. QL Heaven is a 14 day C programmer. A book was bought titled teach yourself C programming in 21 days. QLHeaven got to day 14, skipped the rest and got down to programming.

Some screen savers and a program to display some graphic file formats were the results. Yesterday checking through the QL sites bookmarked in QLHeaven's browser to remove those that had been taken down, a post on Tim Swenson's site caught the eye. A smsqe-zine  from earlier this year where Tim Swenson had been playing around with Digital C and found that Digital C could only use the standard QL colours. This is not actually the case as Digital C contains functions to access QL Traps including trap#3. So here is a Digital C program running on a Q60 with grey and brown for its paper, ink and border colours. Why these colours were chosen is now beyond the ken of QLHeaven. Anyway here are some pics.





Thursday, 30 November 2017

SMSQ/E modules again

Here below is a further development of the SBASIC program written by Tony Tebby to explain the modular structure of smsqe. This time the program not only lists the modules in a version of smsq/e it also allows the extraction of a given module and/or its header element. Why - simply to see how it works.

The first image below shows how a module is selected, then when selected the second image shows the extraction menu.

The bottom window in the image shows how the screen shots were captured as gifs using a program called engif. This is an amazing little program. It only understands mode 4 and mode 8 colours but it can cope with display sizes more that 512x256. It comes in a package with ungif which can show a gif on a mode4 or mode 8 QL display.

Finally below is the listing.





1000 REMark - scan bootloader file
1010 DIM version$(4): version$(0)=4 :
1020 OPEN #0,CON_512x420a20x16: CLS#0: BORDER#0,1,4
1030 height = 52 : DIM d$(height,84) : pg=1
1040 INPUT#0,'SMSQ file>';f$ : IF f$="":QUIT
1050 OPEN_IN #3,f$
1060 fln = FLEN(#3) : PRINT#0,CHR$(10)&HEX$(fln,32)&" length of file"&CHR$(10)
1070 LGET #3\fln-$18+$4,mod_ptr : REMark - get length of host module
1080 PRINT#0,HEX$(mod_ptr,32)&" length of host module"&CHR$(10)
1090 LGET #3\fln-$18+$14,bln    : REMark - length of bootloader file
1100 PRINT#0,HEX$(bln,32)&" length of bootloader file"&CHR$(10)
1110 IF bln: mod_ptr = mod_ptr + fln - bln
1120 FOR i=1 TO 9999
1130   LGET #3\(mod_ptr),mbase,mlength
1140   IF NOT mbase: modules=i-1:EXIT              : REMark - end of file
1150   IF NOT i MOD height: Inc : pg=pg+1 : INPUT a$;  : REMark - pause at screen full
1160   WGET#3\(mod_ptr+$16),name_rel: REMark - relative pointer to name
1170   GET#3\(mod_ptr+$16+name_rel),name$  : REMark - fetch module name
1180   IF LEN (name$)&&1: BGET#3,a : REMark - odd length name is padded
1190   BGET #3,version$(1 TO 4)    : REMark - get version, if any
1200   PRINT#0,HEX$(mod_ptr,32) !!!! HEX$(mbase,24) !! HEX$(mlength,24) !! version$ ! name$
1210   d$(i)=HEX$(mod_ptr,32)&"    "&HEX$(mbase,24)&"  "&HEX$(mlength,24)&"  "&version$&" "&name$
1220   mod_ptr = mod_ptr + mbase + mlength
1230 END FOR i
1240 CLOSE #3 : PRINT#0,CHR$(10)&HEX$(mod_ptr,32)&" end of file"
1250 PRINT#0,\"Save data as text file (S/s), Extract a module (X/x), Header Info (I/i)"
1256 PRINT#0,\"                   or ESC to Quit program"
1260 REPeat Main
1264   in=INKEY$(#0,-1) INSTR 'SsQqxXIi'&CHR$(27): REMark wait to close program
1270   SELect ON in
1280     =1,2
1284            OPEN#1,"con_":OUTLN#1,320,210,96,130 : BORDER#1,1,4 : CLS#1
1286            AT#1,1,1:INPUT#1,'save file name>';sf$ : IF sf$="":QUIT
1288            WREST#1
1290     =5,6 : SelectModule
1300     =7,8 : SelectModule
1310     =9   : QUIT
1320   END SELect
1324   IF sf$<>""
1330     OPEN_NEW#3,sf$ : PRINT#3,f$\\HEX$(fln,32)&" length of file"&CHR$(10)
1340     FOR i=1 TO height : IF d$(i)<>"": PRINT#3,d$(i) : END FOR i
1350     PRINT#3,\\HEX$(mod_ptr,32)&" end of file"
1360     CLOSE#3 :sf$=""
1366   END IF
1378 END REPeat main
1370 :
1380 DEFine PROCedure Inc
1390   LOCal z$(height*pg),j
1400   FOR j=1 TO height*pg : z$(j)=d$(j)
1410   DIM d$(height*pg)
1420   FOR j=1 TO height*pg :d$(j)=z$(j)
1430 END DEFine
1440 :
1450 DEFine PROCedure SelectModule
1460 wndoline=8 : txtline=1 : up=208 : dn=216
1470 REPeat choose
1480   key=CODE(INKEY$(#0))
1490   SELect ON key
1500     = 27 : EXIT choose
1510     = up
1520       AT#0,wndoline,0 : INK#0,4:PRINT#0,d$(txtline)
1530       wndoline=wndoline-1 : IF wndoline<8 : wndoline=modules+7
1540       txtline=txtline-1 : IF txtline<1 : txtline=modules
1550     = dn
1560       AT#0,wndoline,0 : INK#0,4:PRINT#0,d$(txtline)
1570       wndoline=wndoline+1 : IF wndoline>modules+7 : wndoline=8
1580       txtline=txtline+1 : IF txtline>modules : txtline=1
1590     =10,32
1600       SELect ON in
1610         = 5,6 : DoExtraction
1620         = 7,8 : ShowHeaderInfo
1630       END SELect
1634       AT#0,wndoline,0 : INK#0,4:PRINT#0,d$(txtline)
1636       RETurn
1640   END SELect
1650   AT#0,wndoline,0 : INK#0,7: PRINT#0,d$(txtline)
1660 END REPeat choose
1670 END DEFine eXtractModule
1680 :
1690 DEFine PROCedure DoExtraction
1700 ptr=HEX(d$(txtline,1 TO 8)):hdr=HEX(d$(txtline,13 TO 18)):sze=HEX(d$(txtline,21 TO 26))
1710 strngmax=32000 : Xmod$=GetName
1720 OPEN#1,"con_":OUTLN#1,320,210,96,130 : BORDER#1,1,4 : CLS#1
1730 AT#1,1,2: INK#1,7: PRINT#1,"Module:- ";Xmod$
1740 AT#1,3,5: PRINT#1,"a: Extract header and module"
1750 AT#1,5,5: PRINT#1,"h: Extract header only"
1760 AT#1,7,5: PRINT#1,"m: Extract module only"
1770 AT#1,9,5: PRINT#1,"Q: Back to list without extraction"
1780 ky=INKEY$(#1,-1) INSTR 'AaHhMmQq'&CHR$(27)
1790   SELect ON ky
1800     =1,2 : all=hdr+sze
1810     =3,4 : all=hdr
1820     =5,6 : all=sze : ptr=ptr+hdr : REMark move pointer to module
1830   END SELect
1840   IF ky>0 AND ky <7 :AT#1,12,2 : INPUT#1,'save file name>';mf$ : IF mf$="": WREST#1 : RETurn
1850 WREST#1
1854 IF ky < 7
1858   OPEN_IN#3,f$ : OPEN_OVER#4,mf$
1860   IF all <= strngmax
1870     DIM mod$(all) : BGET#3\ptr,mod$(1 TO all) : PRINT#4,mod$(1 TO all);
1880   ELSE
1890     DIM mod$(strngmax)
1900       REPeat getbits
1910        BGET#3\ptr,mod$(1 TO strngmax) : PRINT#4,mod$(1 TO strngmax); : IF all=0 : EXIT getbits
1920        all=all-strngmax : IF all <strngmax : strngmax=all :all=0
1930      END REPeat
1940   END IF
1950   CLOSE#3 : CLOSE#4
1956 END IF
1960 END DEFine DoExtraction
1970 :
1980 DEFine FuNction GetName
1990 LOCal first,last,j,t$,md$
2000 m$=d$(txtline,29 TO ) : j=1
2010 REPeat first
2020   IF m$(j)<>" " : m$=m$(j TO) : EXIT first
2030   j=j+1
2040 END REPeat first
2050 j=LEN(m$)
2060 REPeat last
2070   IF m$(j)<>" " : m$=m$(1 TO j) : EXIT last
2080   j=j-1
2090 END REPeat last
2100 RETurn m$
2110 END DEFine GetName
2120 :
2130 DEFine PROCedure ShowHeaderInfo
2140 Xmod$=GetName : DIM mod$(24)
2150 ptr=HEX(d$(txtline,1 TO 8))
2160 OPEN_IN#3,f$ : rem BGET#3\ptr,mod$(1 to 24)
2162 LGET#3\ptr,hl,ml,rl,ck,sl
2166 BGET#3\(ptr),lvl : WGET#3\(ptr+2),nme
2170 OPEN#1,"con_":OUTLN#1,320,210,96,130 : BORDER#1,1,4 : CLS#1
2180 AT#1,1,2: INK#1,7: PRINT#1,"Header Info:- ";Xmod$
2190 AT#1,3,5: PRINT#1,"Header Length",HEX$(hl,32),hl
2200 AT#1,5,5: PRINT#1,"Module Length",HEX$(ml,32),ml
2210 AT#1,7,5: PRINT#1,"Relocate Length",HEX$(rl,32),rl
2220 AT#1,9,5: PRINT#1,"Checksum     ",HEX$(ck,32),ck
2230 AT#1,11,5: PRINT#1,"Select Code Offset",HEX$(sl,32),sl
2240 AT#1,13,5: PRINT#1,"Module Level",HEX$(lvl,8),,lvl
2250 AT#1,15,5: PRINT#1,"Offset to Name",HEX$(nme,16),,nme
2256 AT#1,19,5: PRINT#1,,"To return ESC or eXit"
2260 rt=INKEY$(#1,-1) INSTR "xX"&CHR$(27)
2270 WREST#1
2280 END DEFine


Friday, 24 November 2017

Q60 and QTOP Index

QLheaven is exceedingly pleased that some of this blog's posts have come to the attention of the QL Forum and have even stirred up some discussion.

The Q60 QTOP-index measurement of 108.88 mentioned in a previous post RPi and QL emulator speeds that was considered to be wrong. This post was actually about the speeds of QL emulation on a Raspberry Pi using either uqxl or smsqmulator. This post showed that these 2 emulators on the modest RPi could perform better than many of the old QL type hardware systems.

Figures for the Q60 and QPC2 were thrown in for context and perhaps some more information regarding the set up of the Q60 could have been given as this was given for the surprisingly very high QPC2 speed which was largely down the PC hardware.

QLHeaven was itself surprised by the relatively low figure of 108.88 that QTOP had produced for the the Q60. But many factors can affect the production of benchmark figures. In the case of the Q60 the setting for the 68060 processors caches will markedly affect this as will the screen size and graphics mode in use. Other software running at the same time as the bench marking software tends to have a significantly lesser effect on the benchmark level produced.Although the slightly better performace of the Q60 with write through caches and 16 bit colour at 1024x512 is thought to be due to improvements in smsq/e over the 18 months or so since the last tests.

QLHeaven will freely confess to routinely using the write through cache setting instead of the faster copyback setting as copyback often screws up compiled SBASIC, such as QLiberated programs making copyback difficult to live with. Secondly the Q60 is almost always used in 16bit colour 1024x512 screen resolution, so it seemed fair to use a QTOP index with these settings. And here is the evidence of the effect of screen resolution,size and cache settings.

                 
                   Q60 80mHz QTOP speed test results

 
Screen Size
Screen Mode
Cache
QTOP Index

1024x512
16 bit
Writethrough
110.635
1024x512
16 bit
Copyback
122.523
1024x512
16bit
Copyback*
138.096
512x256
16 bit
Writethrough
110.006
512x256
16 bit
Copyback
137.756
512x256
mode 4
Writethrough*
148.326
512x256
mode 4
Copyback*
194.845
 
* Only software running - TINDEX

As can be seen the key influences on the TINDEX result are the cache mode, screen resolution and colour mode.


































Sunday, 19 November 2017

Eye Candy for the Q60

For the Qx0 - Qcdeze's colour scheme has got updated. See Dilwyn Jones website.






Friday, 17 November 2017

QL World File Finder Update - Wild Search

 Some time ago it was suggested here in QLHeaven that the File Finder program from QL World in 1989 was worthy of an update. At the moment there are several file finder programs on Dilwyn Jones website. QLHeaven has had a look at most of them. Many have drawbacks, some are complex and none are as simple as the original file finder program. So QLHeaven was pleased to discover that it had been updated.

The update is still a SBASIC listing that can be launched with EX. It needs SMSQE, and uses the WMAN colours. It also uses one QPTR keyword. As QPTR is now freeware and downloadable from Dilwyn Jones site this should not be an issue. The program is also FI2 capable. The advantage of it being a SBASIC listing is that it could be tweaked if need be. For example if for some reason a search pulled up more files that the arrays used in the program are designed for then they could be expanded. Although a search that pulls up more than 2k items surely cannot be a discriminating or useful search. The lists of files found may be saved as text documents for future reference if needed, and file names can be placed in the stuffer buffer.  Files can be exed or read/edited via FI2 if required.

Below are some screen shots of the program running on an Aurora system, a Q60 system and QPC2.





Thursday, 9 November 2017

Quanta version of Jan Jones Superbasic Handbook

While working on a small SBASIC program QLHeaven had a need to consult on the usage of a superbasic keyword in a copy of Jan Jones Superbasic handbook that had been bought from Quanta. Pages 171 and 172 which contained the crucial information were missing. No evidence that they had ever existed in the book. This was not a big deal as there was also a copy of RWAP's SBASIC Reference manual to hand. But QLHeaven wonders if any other copies of Quanta's version of Jan Jones book were missing pages or if indeed this was a rare copy of the book that could be worth a fortune in years to come!

Tuesday, 19 September 2017

Some Small Things

Firstly the price of the new Q68 QL clone is :



Q68 board, 4Gb SDHC Card, SMSQ/E: £150.00 Black Case: £20 Belkin Black PS/2 spliter: £2.00

General Release date: 09/10/2017. Derek Stewart is making a register of interested buyers.

Secondly, non destructive pop up windows in programs. There have been many ways of doing this. There was and is a DIY toolkit set of keywords that will let Superbasic, QDOS programmers make and store and replace windows, W_STORE, W_CRUNCH, W_SHOW etc. The Turbo toolkit came with some Superbasic demos that could help do the same. Then there are the QPTR and Easypointer toolkits. Each way of making non destructive windows seems quite complex. Yet in SBASIC, the keyword OUTLN does the  job.

10 OPEN#1,"con_":OUTLN#1,xsize,ysize,xpos,ypos: CLS#1 does the job. The question is how to restore the previous screen contents. Again this is simple. The QPTR keyword WREST does the job.
20 WREST#1 restores the content overwritten by OUTLN.

Both keywords originally appeared in the QPTR toolkit. This puzzle is why only OUTLN became a standard SBASIC keyword.

Tuesday, 5 September 2017

Q68 QL replacement due October 2017

The QL Forum and users list has been busy with the exciting announcement of the imminent launch of the latest hardware project from Peter Graf  along with the help of many QL enthusiasts: the Q68.

In his own words : -


"I hope to be able to write more about the Q68 at a later time, right now let me say thanks to...

... Laurence Reeves and Tony Firshman for releasing Minerva as free QL operating system, motivating me to develop the Q68 at all
... Richard Zidlicky for bringing Minerva plus PS/2 driver to the Q68 and his great help debugging CPU cores
... Mark Swift for QDOS Classic, structured so nicely that even I could port it to the Q68 in a single day
... Tobias Gubener for the CPU core the Q68 finally uses
... Adrian Ives for the QL-SD driver, initially used for Q68 mass storage
... Tony Tebby for relasing SMSQ/E as free software after all
... Wolfgang Lenerz for his outstanding achievement of porting SMSQ/E to the Q68
... Wolfgang Lenerz again for very helpful tools, extra drivers and docs
... Derek Stewart for his courage and lots of work manufacturing the Q68 hardware and making it available for the public"

The specification or this wondrous new bit of hardware is :
 
- Operating System: SMSQ/E
- CPU: 68000 compatible
- Speed: 40Mhz
- RAM: 32 MB
- SDHC: Two fullsize slots, hot plugging
- QXL.WIN style storage container format
- Keyboard and mouse: Combined PS/2 Connection, scrollwheel support
- VGA: 1024x768 VESA for flatscreen, CRT or HDMI converter
- Graphic modes:
- 256x256 QL Mode 8
- 512x256 QL Mode 4
- 512x256 Q60 65536 colour
- 1024x512 Q60 65536 colour
- 1024x768 QL Mode 4
- 512x384 Q60 65536 colour
- Serial port
- Stereo sampled sound, 3.5 mm output socket
- Buffered real time clock
- I2C interface
- Ethernet, no software support yet
- QL style LED colours
- PCB Size: 8x10 cm
- Recommended power supply: 5V @ 1A
- Silent operation, no fans or heat
- Case: Optional

And here are some pictures :

 
 


 


The price is apparently still to be decided. The launch is pencilled in for October this year. while this is a great new venture that should expand the base of QL users with up to date hardware one nagging concern QL Heaven has for this system is the graphics VGA signal as only the mode 4 1024x768 resolution will work with a flat screen monitor, the other resolutions will require an CRT monitor unless there is something that QL Heaven does not know. Why not include a "PC standard" resolution with high colour as well as the older QL compatible resolutions? None the less QL Heaven will need to get one.

Tuesday, 15 August 2017

Mouse Woes

It was time to replace the trusty QL mouse. As you know the QL can use an number of interfaces to connect to a mouse. There are the built in interfaces in the Qx0 series, there is the QIMI mouse interface which can be connected to the original QL mother board and which is built in to the Aurora mother board replacement, there is the mouse connection on the SuperHermes board, and there is SNG's DIY mouse software. What they all have in common is that they use a serial mouse connected to a serial port.

But serial mice are no longer manufactured other than USB mice. My QL mouse has a PS2 connection which is connected via a PS2 to serial adapter.












So it seemed all that was needed really was a PS2 mouse. After ordering and returning 3 PS2 mice that did not function at all with the Aurora the truth was finally discovered. My PS2 mouse was a combo PS2/Serial mouse. The adapter merely transferred the connecting wires from the PS2 socket in to the correct locations for the serial port.  The mouse itself could run in both PS2 and serial mode and could detect which protocol was being used.There is no way of knowing looking at the mouse that it is a combo mouse and these serial/PS2 mice also seem to have disappeared. The PS2/"serial" mouse now is a PS2/USB mouse.

Is there a supply of older mice out there somewhere or these obsolete mice. Are there adapters that themselves can convert PS2/USB protocols to serial allowing the use of modern mice on older computers? 

It would be nice to use a wireless optical mouse with the QL.

Monday, 7 August 2017

SMSQE modules

Which modules are in which versions of smsq/e? How many versions of smsq/e are there?
The answers are below.

1.


DOS2_QL Stuff_SMSQ_smsq331_GoldCard.bin

000392C0 length of file

0000005C    000154       SMSQ System Loader
000001E4    0001B2       Gold Card Initialisation for SMSQ
00000700    003010  3.31 SMSQ
00003742    000000       SMSQ Cache Handling Code
00003974    0094F4       SBASIC
0000CE8E    000278       SMSQ Initialisation - GC
0000D150    0002CA       SMSQ Initialisation - SGC
0000D464    001538       SMSQ Messages
0000E9CA    00067A       SMSQ GOLD Keyboard Tables
0000F08E    00026C       SMSQ GOLD ABC Keyboard Tables
0000F348    001C4A       SBASIC Messages
00010FC2    000330       SMSQ GOLD ABC Keyboard
00011338    0050AC       SMSQ GOLD Drivers
00016416    009890       SMSQ GOLD CON Driver
0001FCDA    00012C       SMSQ QIMI Driver
0001FE44    004D70  2.07 SMSQ Window Manager
00024BE8    005AD8  3.08 SMSQ GOLD DV3 Drivers
0002A6F6    001060       SMSQ Net Driver - GC
0002B79C    001084       SMSQ Net Driver - SGC
0002C866    0030C8  2.31 HOTKEY System 2
0002F95E    000D8C       SMSQ System sprites
0003071E    006A8A       SBASIC Procedures
000371DA    000B8E  1.02 SMSQE HOME Thing
00037D98    0014E4  1.00 Recent thing



000392A8 end of file
 
2.
 
Win1_STARTUP_Aurora_bin

000412CC length of file

0000005C    000154       SMSQ System Loader
000001E4    0001B2       Gold Card Initialisation for SMSQ
00000700    003010  3.31 SMSQ
00003742    000000       SMSQ Cache Handling Code
00003974    0094F4       SBASIC
0000CE8E    000278       SMSQ Initialisation - GC
0000D150    0002CA       SMSQ Initialisation - SGC
0000D464    001538       SMSQ Messages
0000E9CA    00067A       SMSQ GOLD Keyboard Tables
0000F08E    00026C       SMSQ GOLD ABC Keyboard Tables
0000F348    001C4A       SBASIC Messages
00010FC2    000330       SMSQ GOLD ABC Keyboard
00011338    0050AC       SMSQ GOLD Drivers
00016416    009890       SMSQ GOLD CON Driver
0001FCDA    007EF2       SMSQ GOLD 8 bit CON Driver
00027C06    00012C       SMSQ QIMI Driver
00027D70    004D70  2.07 SMSQ Window Manager
0002CB14    000D8C       SMSQ System sprites
0002D8D4    005AD8  3.08 SMSQ GOLD DV3 Drivers
000333E2    001060       SMSQ Net Driver - GC
00034488    001084       SMSQ Net Driver - SGC
00035552    0030C8  2.31 HOTKEY System 2
0003864A    0000AE       Initialise QL ROMs
0003872A    000B8E  1.02 SMSQE HOME Thing
000392E8    006A8A       SBASIC Procedures
0003FDA4    0014E4  1.00 Recent thing


000412B4 end of file

 
3.



DOS2_QL Stuff_SMSQ_smsq331_SMSQE.PRG

00044C9C length of file

00000042    000154       SMSQ System Loader
000001CA    00056A       Atari Hardware Initialisation for SMSQ
00000B5E    003006  3.31 SMSQ Fast RAM
00003BA4    003010  3.31 SMSQ
00006BE6    000000       SMSQ Cache Handling Code
00006E18    0094F4       SBASIC
00010332    00061E       SMSQ Atari Initialisation
0001098A    001538       SMSQ Messages
00011EF0    0010B0       SMSQ Atari Keyboard Tables
00012FDA    001C4A       SBASIC Messages
00014C54    006A8A       SBASIC Procedures
0001B710    007276  3.08 SMSQ Atari DV3
000229B4    0057B6       SMSQ Atari Serial Drivers
000281A4    008270       SMSQ Atari Mono Driver
00030456    009AC2       SMSQ Atari QL Driver
00039F5A    004D70  2.07 SMSQ Window Manager
0003ECFE    0030C8  2.31 HOTKEY System 2
00041DF6    000D8C       SMSQ System sprites
00042BB6    000B8E  1.02 SMSQE HOME Thing
00043774    0014E4  1.00 Recent thing


00044C84 end of file

4.
DOS2_QL Stuff_SMSQ_smsq331_SMSQEQXL.EXE

00047F2E length of file

00003638    000154       SMSQ System Loader
000037C0    000122       QXL Hardware Initialisation for SMSQ
00003C18    003010  3.31 SMSQ
00006C5A    000000       SMSQ Cache Handling Code
00006E8C    0094F4       SBASIC
000103A6    0013F0       SMSQ QXL Initialisation
000117CE    001538       SMSQ Messages
00012D34    000F0C       SMSQ QXL Keyboard Tables
00013C78    001C4A       SBASIC Messages
000158F2    006CF0       SBASIC Procedures
0001C614    0051AE       SMSQ QXL Drivers
000217F2    009888       SMSQ QXL QL CON Driver
0002B0B0    007D68       SMSQ QXL 16 bit CON Driver
00032E52    004D70  2.07 SMSQ Window Manager
00037BF6    0010B8       SMSQ QXL Net Driver
00038CE2    006256  3.08 SMSQ QXL DV3
0003EF64    0030C8  2.31 HOTKEY System 2
0004205C    003D70       SMSQ System sprites
00045E00    000B8E  1.02 SMSQE HOME Thing
000469BE    0014E4  1.00 Recent thing
00047ECE    000010       SMSQ QXL Enable Caches 


00047F16 end of file

5.

DOS2_QL Stuff_SMSQ_smsq331_SMSQE.bin

0004EE26 length of file

00000048    000154       SMSQ System Loader
000001D0    0000AA       QPC Hardware Initialisation for SMSQ
00002164    002ECA  3.31 SMSQ
00005060    000000       SMSQ Cache Handling Code
00005292    0094F4       SBASIC
0000E7AC    000AB8       SMSQ QPC Initialisation
0000F29C    001538       SMSQ Messages
00010802    000F0C       SMSQ QPC Keyboard Tables
00011746    001C4A       SBASIC Messages
000133C0    006A8A       SBASIC Procedures
00019E7C    004E46       SMSQ QPC Drivers
0001ECF2    009772       SMSQ QPC QL CON Driver
0002849A    007A30       SMSQ QPC 16 bit CON Driver
0002FF04    007C04       SMSQ QPC 8 bit CON Driver
00037B42    004D70  2.07 SMSQ Window Manager
0003C8E6    003D70       SMSQ System sprites
0004068A    00640E  3.08 SMSQ QPC DV3
00046AC4    0030C8  2.31 HOTKEY System 2
00049BBC    000EC6       QPC SBASIC Procedures
0004AAB8    000DF6       CD-Audio driver
0004B8DE    0011F0       DOS device driver
0004CB00    00020E       IP devices driver
0004CD40    000B8E  1.02 SMSQE HOME Thing
0004D8FE    0014E4  1.00 Recent thing


0004EE0E end of file
  
6.

DOS2_QL Stuff_SMSQ_smsq331_Q40.rom

00043614 length of file

00000096    000154       SMSQ System Loader
0000021E    0002EC       Q40 Hardware Initialisation for SMSQ
0000079E    002FCA  3.31 SMSQ
0000379A    0000F6  2.01 SMSQ Copyback Cache Handling Code
000038D2    000022       SMSQ Q40 copyback cache tidy
00003930    0094F4       SBASIC
0000CE4A    001538       SMSQ Messages
0000E3B0    000F0C       SMSQ Q40 Keyboard Tables
0000F2F4    001C4A       SBASIC Messages
00010F6E    006A8A       SBASIC Procedures
00017A2A    0066D2  3.08 SMSQ Q40 DV3
0001E128    005C2C       SMSQ Q40 Serial Drivers
00023D8C    0097F4       SMSQ Q40 QL CON Driver
0002D5B6    007B7E       SMSQ Q40 16 bit Console Driver
00035172    004D70  2.07 SMSQ Window Manager
00039F16    003D70       SMSQ System sprites
0003DCBA    0030C8  2.31 HOTKEY System 2
00040DB2    000B8E  1.02 SMSQE HOME Thing
00041970    0014E4  1.00 Recent thing
00042E80    000526       SMSQ Q40 Initialisation
000433DE    000164  1.01 Initialise Q40/Q60 Cache modes


000435FC end of file
 
7.

DOS2_QL Stuff_SMSQ_smsq331_SMSQE

0004B632 length of file

00000018    000154       SMSQ System Loader
000001A0    00005C       Java Emul Initialisation for SMSQ
000003F6    002F18  3.31 SMSQ
00003348    002ED2  3.31 SMSQ
0000624C    000000       SMSQ Cache Handling Code
0000647E    0094F4       SBASIC
0000F998    001538       SMSQ Messages
00010EFE    00067A       SMSQ GOLD Keyboard Tables
000115C2    001C4A       SBASIC Messages
0001323C    006A8A       SBASIC Procedures
00019CF8    005AD2       SMSQ JAVA Drivers
0001F7F8    00965A       SMSQ GOLD CON Driver
00028E86    007C2A       SMSQ JAVA 8 bit CON Driver
00030AEA    0079D2       SMSQ JAVA 16 bit CON Driver
000384F8    004D70  2.07 SMSQ Window Manager
0003D29C    0051C4  3.08 JAVA DV3
00042488    0030C8  2.31 HOTKEY System 2
00045580    003D70       SMSQ System sprites
00049324    000B8E  1.02 SMSQE HOME Thing
00049EE2    0001F6       IP devices driver
0004A10A    0014E4  1.00 Recent thing


0004B61A end of file
 
That is an impressive 7 variants of smsqe for the curators to update, certainly more than Microsoft countenances in windows.