Tag Archives: SMSQmulator

SMSQmulator 2.24

Version 2.24 of the Java-based emulator called SMSQmulator is now available from Wolfgang Lenerz’s website. Includes some bug fixes and now allows the CTRL+mouse wheel movements to produce left and right scroll keycodes.

Download from http://www.wlenerz.com/smsqmulator/

SMSQmulator 2.20

Version 2.20 of SMSQmulator, the Java based emulator of an SMSQ/E based system, has been released by Wolfgang Lenerz. Download it from http://www.wlenerz.com/smsqmulator/

Wolfgang says: “This contains several bugfixes (stipples in mode 32, Beep, CMP instructions, file open on xFA devices), configuration of SSSS sample frequency and the possibility to copy the original QL screen to the extended display.

SMSQmulator v1.27

Wolfgang Lenerz has announced that version 1.27 of the Java-based emulator is available to download free from his website at http://www.wlenerz.com/SMSQmulator/

It now is possible to configure it so that it doesn’t use much CPU time when the machine is idle. Changes to this only take effect after the next reset. Please read the manual section in this respect.

Other recent updates to the emulator include:

  • Also now has Aurora compatible screen mode.
  • SHIFT ESC now makes a copyright symbol.
  • MEM device for using QXL.WIN from RAM when SMSQmulator is run as an embedded applet from a website.
  • Millisecond timer using Java keywords JTMRSET and JTMRGET.
  • Sound device added in v1.23, meaning you can now use _ub (unsigned byte) sound files merely by COPYing them to the SOUND device, e.g. COPY test_ub TO SOUND. The SOUND device is largely compatible with Simon Goodwin’s SOUND driver for other systems.
Screen shot of the software supplied with SMSQmulator

The Software Supplied With SMSQmulator

SMSQmulator Update

Wolfgang Lenerz has announced that version 1.27 of the Java-based emulator is available to download free from his website at http://www.wlenerz.com/SMSQmulator/

It now is possible to configure it so that it doesn’t use much CPU time when the machine is idle. Changes to this only take effect after the next reset. Please read the manual section in this respect.

Other recent updates to the emulator include:

Also now has Aurora compatible screen mode.

  • SHIFT ESC now makes a copyright symbol.
  • MEM device for using QXL.WIN from RAM when SMSQmulator is run as an embedded applet from a website.
  • Millisecond timer using Java keywords JTMRSET and JTMRGET.
  • Sound device added in v1.23, meaning you can now use _ub (unsigned byte) sound files merely by COPYing them to the SOUND device, e.g. COPY test_ub TO SOUND. The SOUND device is largely compatible with Simon Goodwin’s SOUND driver for other systems.

SMSQmuLator and SMSQ/E News

v. 1.23 of SMSQmulator can be downloaded from www.wlenerz.com/SMSQmulator

This uses SMSQE 3.18.

Wolfgang Lenerz says you might want to upgrade, there was bug in the directory creation routine for WIN drives.

SMSQE 3.18 is out www.wlenerz.com/smsqe

This allows programs that are devised for it to have a CSIZE for application subwindows other than 0,0. You can find a demo program for that at www.lenerz.com/QLStuff

Application subwindow text objects may now have character sizes other than 0,0. Of course, this only applies to programs specially written to take advantage of these sizes.

The values for the csizes are stored in the working definition at previously unused locations ($26 and $27). The values are the same as those for the CSIZE command i.e. 0 to 3 for the x csize and 0 or 1 for the y csize. Behaviour if other values are given is undefined.

Note that the csizes are, of course, the same for all objects of a menu application sub-window (but different appsubwindows may have different csizes).

Wolfgang has given examples of how to use these:

1 – For the machine code programmer :

The values are stored at offsets

wwa_xcsz equ    $26 wwa_ycsz equ    $27

in the working definition, as byte-sized values. The key files have been amended to suit. You may also set these sizes in a menu application sub definition which will be converted to a working definition by the standard setup vector. In that case set the values BELOW the start of the normal defintion : at -4 of the start, set a flag, i.e. a long word ‘XTND’ and at -6 set a word with the x (-6) and y (-5) csizes values as bytes. Do not forget to adjust the sizes of your objects’ hitsize and spacing if you use bigger characters.

2 – For the basic programmer.

Two procedures have been created for the two common toolkits, qptr and easyptr.

For qptr :

def proc set_csizes_QPTR (appsub_list,num%,x_csize%,y_csize%)
rem set the csizes for menu appsub windows
rem params:
rem   appsub_list
rem     the appsub list as returned by the RD_AWTA basic function  and/or
rem     the MK_AWL extension
rem   num%
rem     the appsub number, starting at 1 for the first appsub wdw
rem   x_csize%
rem      the x csize (0 … 3), same as for the CSIZE command
rem   y_csize%
rem      the y csize (0 or 1), same as for the CSIZE command
rem
rem   If there is any error in the parameters, this just gives up silently
rem   without generating an error
rem
local appsub_nbr%,appsub
appsub_nbr%=peek_w(appsub_list)               : rem nbr of appsub wdws
if appsub_nbr% < num% or num% < 1: return     : rem wrong appsub number
appsub=peek_l(appsub_list+2+4*(num%-1))       : rem get poiner to
appsub wdw
if x_csize% > -1 and x_csize% < 4
poke appsub+38,x_csize%                   : rem set size
endif
if y_csize% > -1 and y_csize% < 2
poke appsub+39,y_csize%                   : rem set size
endif
end def set_csizes_QPTR

Call this procedure once you have created the appsub list.

For easyptr:

def proc set_csizes_EASYPTR (channel%,num%,x_csize%,y_csize%)
rem set the csizes for menu appsub windows
rem params:
rem   channel%
rem     the channel number, which must be the same one as used for MAWDRAW
rem     or MAWSETUP. THIS DOES NOT DEFAULT TO ANYTHING, you MUST
rem     supply this parameter correctly.
rem   num%
rem     the appsub number, starting at 1 for the first appsub wdw
rem   x_csize%
rem      the x csize (0 … 3), same as for the CSIZE command
rem   y_csize%
rem      the y csize (0 or 1), same as for the CSIZE command
rem
rem   If there is any error in the parameters, this just gives up silently
rem   without generating an error
rem
local appsub_nbr%,appsub
appsub= MWDEF(#channel%)                      : rem the working definition
appsub_nbr%=peek_w(appsub+110)                : rem nbr of appsub wdws
if appsub_nbr% < num% or num% < 1: return     : rem wrong appsub number
appsub=peek_l(appsub+112)                     : rem point to appsub list
appsub=peek_l(appsub+4*(num%-1))              : rem get poiner to appsub wdw
if x_csize% > -1 and x_csize% < 4
poke appsub+38,x_csize%                   : rem set size
endif
if y_csize% > -1 and y_csize% < 2
poke appsub+39,y_csize%                   : rem set size
endif
end def set_csizes_EASYPTR
:

For this to work, create your menu with the MAWSETUP command and call this procedure afterwords.

You will find both procedures in a common file : dev8_extras_source_setcsizes_bas.

Do not forget to adjust the sizes of your objects’ hitsize and spacing if you use bigger characters.