Saturday 5 November 2011

Simple Minds

In trying to start a QL project, especially being out of the QL loop (so to speak), it is easy to get distracted by all the developments past and present relating to the QL. It is new information after all. 

One such project is the re-coding of a past programme I no longer have the original code for. Although the programme does exist, it does not work on modern hardware or emulation very well. This is mainly due to speed and the associated issues involved around the QL speed.

The decision then is to start from scratch, however with multiple QL systems, screen sizes, colour ranges etc. the first is to design for either one system only or all systems (if it is feasible possible).

Practically very difficult, you have to start somewhere  so the first 'pre-project' is to see if it is possible to create an all encompassing 'boot' program that will run on 'all' systems.

What does it need to have to take into account in order for the one BOOT file to run on the original QL, Qemulator, QPC2, uQLx, Aurora, Gold Card, SuperGold Card?

(this is first attempt)

  • Does the Boot need to know its ROM?
  • Will Boot need a minimum in excess of 128K Memory?
  • Will Boot need to know the screen size
  • The drive it is loaded from?
  • The mode it is in, hence the colours available for use

Once these questions are answered then the next stage would be to cover specific needs for display. This would include things such as text size and style, house style for any windowing, logo maybe.

More next time... 


  1. "Does the Boot need to know its ROM?"

    - only if the boot is going to need functionality not in a QDOS JM rom - and probably it will.
    -if a JM rom is catered for it will need to know the drive it is loaded from or at least where to find boot2.

    "Will Boot need to know the screen size"
    - not unless it is going to open a window bigger than 512x256. It is easy to find the screen size, mode etc by peeking the console driver for channel #0 through the system variables.

  2. If getting the same speed on all systems is important, a classic way of doing this on the QL is having your interrupt 2 handler to keep a timer (increment a counter), and your program periodically waits for the tick. This would work at least on HW systems (excluding maybe US QLs, they use a different interrupt 2 frequency) and on Q-emuLator, probably on other emulators as well if they provide accurate 50Hz interrupt timing. A related method is to use the STOP assembly instruction to wait for the next interrupt.