* * * Linus Torvalds 40th birthday surprise page! * * *

Home | Repository | Chronology (1981 until today) | 30th anniversary 2014 | "QL & Mac are 25" - the show 2009 | 25th anniversary 2009 | 18th anniversary 2002 (QL/E launch) | Machine build standards | Preservation Project (SQPP) | Picture Gallery (SQPG) | QL versus JAGUAR | QLvsJAGUAR Video Channel on YouTube | Blog (QLvsJAGUAR Community Tab) | About Urs König

About Linus Torvalds the Sinclair QL

In 2009 we celebrated the 25th anniversary of the Sinclair QL. Even only around 150’000 QL’s were made and sold, one user became very important to the industry. Linus Torvalds used and programmed a Sinclair QL before he created what became Linux. While hacking on the QL, Linus wrote quite a few programs for it. For many years none of them seemed to have survived. After a huge research I'm very proud to present at least one piece of QL software written by Linus Torvalds. As Linus had his 40th birthday two days ago (I know I'm 2 days late) my birthday surprise is this page and the YouTube video showing GMOVE a software blitter for the Sinclair QL.


Click on the video thumbnail picture above to watch videos of Linus Torvalds' early software (dated 1986) performing on an original Sinclair QL and see Linus reminding his QL days...(offsite-link).


Way back in the 80s Linus Torvalds made his first conceptional and system programming experiences on the Sinclair QL with its preemptive multitasking operating system QDOS.

In 1986 he wrote a software blitter "GMOVE" as an extension to the SuperBASIC language of the QL. It was published as a printed listing in the Finnish computer magazine MIKRO BITTI in November 1986.

This vid shows how GMOVE performs on an unmodified standard QL system (MC68008 CPU, 128KB RAM).

Linus explored the QL deeply before choosing to buy a 80386 CPU based PC. Read a NewsGroup message thread of Linus dated 1992...

In the "QL is 25" bash Linus blogged about his QL experience in retrospective (13-01-2009 12:30)... (warning: page will take a while to load due to *roboted* comments)

Listings, Manual and Downloads

Hexloader as published in BITTI Nov '86

10 REMark ***************************
20 REMark * *
30 REMark * GMOVE *
40 REMark * a BASIC extension *
50 REMark * made by *
60 REMark * Linus B Torvalds *
70 REMark * (C) 1986 LBT-soft *
80 REMark * *
90 REMark ***************************
100 A=RESPR(704):R$="123456789ABCDEF"
110 RESTORE 1000:FOR T=0 TO 21
120 READ H$:TOT=H$(65 TO):H$=H$(1 TO 64):S=0:FOR Y=0 TO 31
130 H=H$(Y*2+1) INSTR R$*16+H$(Y*2+2) INSTR R$
140 POKE A+T*32+Y,H:S=S+H
150 END FOR Y: IF TOT<>S THEN PRINT "error in line"!T*10+1000:STOP
160 PRINT 1000+10*T:END FOR T
169 REMark 20091228 KU: Bug by Linus, his statement only saves 702 bytes instead of 704 bytes so 2 bytes of code would be missing on media
1000 DATA "43FA0008347801104ED20001027C05474D4F5645000000000000000070FA4E751873"
1010 DATA "41FA005620BC0001000170004E75BACB67EE08360007B80167E62F0D4BEB00082625"
1020 DATA "347801124E922A5F508B4A8066CE3036980054892D490058C0FC0028206E00302636"
1030 DATA "D1C0B1EE00346CB4203688006DAE41FA0008208070004E7500000000000000002451"
1040 DATA "000000002F09207AFFF076FF700945FA00084E43225F4E7543FAFFE222E800183083"
1050 DATA "22E8001C70004E7548E703007400140602020007E44E02860000007E028700001765"
1060 DATA "00FFEF8FDE8606870002000020474CDF00C04E750000000000000000000000001925"
1070 DATA "70F14E7570FC4E75347801124E924A8066EE0C43000666E845FAFFDA740534F63694"
1080 DATA "9800548951CAFFF82D49005845FAFFC616390002803408030003670C76FEC7523180"
1090 DATA "C76A0004C76A000874054A5A6BB651CAFFFA45FAFFA03C123E2A0002DC6A00043232"
1100 DATA "DE6A000641FAFF3ABC506298BE68000262923C2A00083E2A000ADC6A0004DE6A2902"
1110 DATA "0006BC506200FF7EBE6800026200FF7670004E750000000000000000287AFFF62490"
1120 DATA "41FAFF523C183E183618381853446100FF1843FAFFE4228843FAFFDE205106913535"
1130 DATA "000000801218E14912280001E569E04918C11218E14912280001E569E04918C12622"
1140 DATA "51436AE043FAFF0E3629000451CCFFCA4E7541FAFF0638183C183E18534461003174"
1150 DATA "FEC843FAFF942288287AFF8A43FAFF8A2051069100000080363AFEDE7C080C433800"
1160 DATA "000762023C03121C610E121C610A51436AEA51CCFFD84E75E149303CFF002E3C2686"
1170 DATA "00FF0000ECAFC047C247E469E4680A40FFFFC0280002800111400002E048E0493482"
1180 DATA "C010800110C04E7543FAFE8E32190281000001FFE489548134110282000000FF2949"
1190 DATA "5482C2C274FF70184E414A80661843FAFF0422886100FF066100FF58207AFEF63778"
1200 DATA "70194E414E754E756100FDA44A8066F66100FDF24A8066EE6100FE4E4A8066E63831"
1210 DATA "43FAFDDA45FAFE2E3C113E290002DD52DF6A0002DD6A0008DF6A000A608A08383195"

Loader as published in BITTI Nov '86

1 REMark (C) LBT-software
10 A=RESPR(704)


GMOVE is a software blitter for the Sinclair QL, implemented as a BASIC extension, programmed by Linus B Torvalds, (C) 1986 LBT-soft.

GMOVE(#chnl),xsrc%,ysrc%,xobj%,yobj% TO xdst%,ydst%

chnl = Channel number of window
xsrc% = X source position within window
ysrc% = Y source position within window
xobj% = X block size to be moved
yobj% = Y block size to be moved
xdst% = X destination position within window
ydst% = Y destination position within window

GMOVE#2,xsrc%,ysrc%,xobj%,yobj% TO xdst%,ydst%


  • GMOVE package including Demo application

    More details (source code, another demo) coming soon.

    Update 2016-05-04: Back in 2009 I wrote "soon". ;-) BTW: GMOVE is part of QL IS 30 2014 - THE DISTRIBUTION, so if you already have that one then you don't need to download it separately.

    Happy birthday Linus and QL forever!

    Urs König

    (replace -at- with @)

    Site produced (p) and copyright (c): 2009-2017, Urs König

    Created: December 2009 | Published: December 30th 2009 | Last Updated: June 4th 2017

    Return to top of this page | Return to home page