QDOS Internals

Anything you never knew you wanted to know about the Sinclair QL.

User Tools

Site Tools


Table of Contents


This trap finds the preferred language module.

Call ParametersReturn Parameters
D1.LLanguage code/0D1.LPreserved.
D2.LCar registration/0D2.LPreserved.
D3.LModule codeA0.LPreserved.
A1.L A1.LPointer to the module.


No errors are returned by this trap.


  • All registers not shown above are not used on entry and are preserved on exit.
  • The country is determined from the contents of D1 and D2. If D0 is non zero it is taken as the country's dialling code. For example 33 is the code for France. If D1 is zero and D2 is not, the contents of D2 are taken as the country's car registration. For example "Dsss", where "s" represents space, is taken as the code for Germany. If both D1 and D2 are zero, the country is taken as the current country.
  • The module code in D3 consists of the module type in the LSW and the group number in the MSW. The group numbers are all multiples of 4, the lowest one being 0.
  • The types of module are:
    • 0 = preference table.
    • 1 = keyboard table.
    • 2 = printer translate table.
    • 3 = message table.
  • If the module is found its address is set in A1.L otherwise A1.L is zero.


The example below shows the use of this trap call to obtain the address of the fourth group of messages for the UK.

        moveq   #$35,d0         ; SMS_FPRM
        moveq   #0,d1           ; Use car egistration
        move.l  #'GB  ',d2      ; UK
        moveq   #12,d3          ; 4th group . .
        swap    d3              ; . . in MSW of D3
        addq.w  #3,d3           ; message table
        trap    #1              ; Get the pointer in A1.L
qdosmsq/traps/trap_1/fprm.txt · Last modified: 2010/11/05 14:14 by george.gwilt