Jump to content

Looking for instructions for Qmeg Roms v3 and onwards

Recommended Posts

I am looking for a website that has instructions for Qmeg v3 and onwards incl v4.2/3 etc and also Toms mod'd qmeg that i d/l'd for use with atari++ and atari800win+ emulators


any help is greatly appreciated


I am still looking for images of 'speedy o/s' i believe it was similar to qmeg

Link to comment
Share on other sites

  • 2 years later...

Hi Marius,


I found this on my hd:



By Frankenstein

Qmeg is another operating system (OS) for Atari XL/XE computers with at 
least 256K RAM memory. It's 99% compatible with the normal OS.

Compared to the normal OS, some things are removed. This is not a big 
problem because they are replaced by more useful things....


- routines for the parallel port access
- the 'self test'
- international character set


- nice ramdisk options
- supports happy, speedy, turbo etc.
- build in disassembler/monitor

With the normal OS we're used to boot with the OPTION key hold down (who's 
still using BASIC these days?). With Qmeg you should not use OPTION! If you 
do, BASIC will be installed.

If you just switch your computer on, it will first try to boot from drive 
D1: (just like the normal OS). If your drive supports ultra speed, it will 
always try to boot in ultra speed.

The Qmeg menu looks like this:

QMEG-OS V3 ©'87 S.Dorndorf
Prg $: Drive 1 2 3 4 8: A B Ram-
RAM -: Type - - A B A: M X Disk

There are several ways to enter the Qmeg menu. Here they are....

- when booting hold SELECT
- push RESET and hold SELECT
- from BASIC type 'BYE'
- from the Qmeg monitor enter 'Q'

When you use SELECT+RESET, it will never do a coldstart! (this means it 
won't wipe RAM).

Look at the menu again.
The active drive number is inverted. D3: is configured as ramdisk A, D4: as 
ramdisk B and D8: also revers to ramdisk A.
Ramdisks are configured as 'M X'....
Possible configurations are:

------ ----------- ----------
S S single 90K single 90K
M X medium 128K medium 64K
D - double 180K -nothing-

These configurations can be chosen from the menu by pressing 'S', 'M' or 
'D'. Using the spacebar you can 'walk' through the drive numbers. Pressing A 
or B will assign ramdisk A or B to the active drive.
'-' is used to 'undefine' a drive. Press 'N' for normal settings (default).

If you like to read a 'real' disk into ramdisk A, you should have D1: 
activated (1 inverted in the menu) and press 'R' (read).
The screen will turn green. Now you should press START to format the ramdisk 
and the disk in D1: is being transfered into ramdisk A!
The screen will display the current sector being read (hexadecimal).
If an error occures, there are three options:

- START : try again
- SELECT : skip sector
- OPTION : quit all

To write ramdisk A back to D1: again (yes, this will FORMAT D1:!!) press 'W' 
(write). Now the screen will turn red (danger!).
After pressing START it will format D1: and write the ramdisk.
If you press SELECT instead of START, it won't format but write the ramdisk 
directly to D1: instead.
With this in mind you can copy from D1: to D2: (for example) or you can copy 
the contents of ramdisk A to ramdisk B! (or B to A).

Press 'L' (load) at the Qmeg menu screen and the first eight names from the 
directory of the active drive will appear. Press 'L' again to see the next 
eight names.. and so on. SPACE to go back to the Qmeg menu.
With a protected ramdisk (more about it later) use SHIFT-L. In that case the 
contents of $7F00 - $7FFF will be destroyed.

You probably noticed the numbers in the directory. Here's an example....


This is simple, load PACMAN.COM by pressing '1', DEMO by pressing '2' and 
'3' will load TEST.OBJ.
Warning: DON'T use this on programs which have load or save options themself 
(like wordprocessors or assemblers). Such programs require DOS! However, 
it's ideal for loading games or demos (in ultra speed!).

START-Z switches BASIC on (READY appears).
START-C switches the cartridge on. If there's no cartridge it will switch to 
use START-X to switch both BASIC and cartridge off.
Watch the menu (beneath Prg). You'll see 'CAR' (cartridge), 'BAS' (BASIC) or 
'RAM' (normal RAM).

Here are the option keys:

'U' - Ultra speed
'H' - Happy warp speed
'-' - Normal speed

These characters (U,H,-) appear beneath the drive number in the Qmeg menu.

SHIFT-I - initialize drive
SHIFT-O - happy track buffer off

As you now know, drive 1 can actually be ramdisk A or B. Is it possible to 
boot from one of these ramdisks? Yes, you can press SHIFT-INVERSE to boot 
from 1. Ofcourse this is also used for a normal cold-boot from D1:.
For example, you can read Mega Magazine issue #1 into ramdisk A, configure 
drive 1 as ramdisk A, boot from ramdisk A and also load the articles from 
ramdisk A.

Sometimes it's nessesary to protect the location for ramdisk access. Some 
old programs don't accept an installed ramdisk.
Just press 'P'.. the screen will turn pink and the ramdisk access location 
($D301) will be protected. The Qmeg monitor won't work in this mode.

Qmeg sometimes uses colours for indications. You can also look at the 
character beneath "$" for these indications.
'-' - nothing special
'R' - ready to read
'W' - ready to write
'P' - ramdisk is protected

To leave the menu:

ESC : back to DOS (if available)
CTRL-CAPS : restart DOS from ramdisk C
RESET : back to DOS, BASIC or cartridge
SHIFT-INVERSE : specified cold-boot
RETURN : to the Qmeg monitor
START-RESET : normal cold-boot

SELECT+RESET : enter Qmeg menu
SPACE : move cursor
A : ramdisk A
B : ramdisk B
- : normal mode
U : ultra speed on
H : happy warp on
N : init. drive
S : single density
M : medium density
D : double density
R : read in ramdisk A
W : write from ramdisk A
L : directory
1 - 8 : load file from directory
SHIFT-I : reset drive
SHIFT-O : trackbuffer off (happy)
ESC : jump to DOS
CTRL-CAPS : start DOS from ramdisk C
SHIFT-INVERSE : specified cold-boot
START-C : cartridge on
RETURN : jump to Qmeg monitor
START-RESET: cold-boot

MLM is a simple machine language monitor. It's very useful when you're 
debugging your ML program. If you're an experienced user, you can create 
cheat versions from games using this monitor.

Almost all MLM commands start with a certain address (adr). If you don't 
start with an address, MLM will use the last address you've entered or 
address 0 when you didn't enter anything.

You may not change address $D303 (PBCTL). Interrupt routines in the memory 
range $5000 - $57FF may not be active when using MLM.

$ hexadecimal address expected
# decimal address expected
? command not recognized
>xxx error number xxx

N restart MLM
Q quit MLM (back to menu)
H activate hexadecimal mode
Z activate decimal mode

adr= show address hex. and dec.
adr+adr show sum
adr-adr show difference
= shows active address

adr; show contents of first 8 adr.
adr show contents also in ASCII
adr" show contents, ASCII only
adr' show contents, keyboard codes
adrL disassemble 20 lines

Instead of adr you can also use adr1.adr2 to show from adr1 to adr2.
* causes endless repeats of the last command. This can be paused by 
CONTROL-1 or aborted by pressing BREAK.

A '^' sign for a command will print the data instead of displaying it.
Example: ^6000.60FF"
This will print the contents of address 6000 to 60FF in ASCII form.

adr;byte byte byte (etc.)
Fill memory at 'adr' with the given bytes. You may also use 'words'
instead of 'bytes'. MLM will automaticly place words in the right
order in memory (first the lo-byte, then the hi-byte).

Place 'text' at address 'adr' in memory as ATASCII.

Place 'text' at address 'adr' in memory as keyboard codes!

adr1.adr2 M adr3
Copy memory block 'adr1'- 'adr2' to 'adr3'.

adr1.adr2 V adr3
Compare memory block 'adr1'-'adr2' with the contents of the block
starting at 'adr3'. Differences will be displayed.

adr1.adr2 M adr1+x
Fill memory block 'adr1'-'adr2' with bytes starting at 'adr1' and
ending at 'adr1+x'.

adr1.adr2;bytebyte etc.
Search memory from 'adr1'-'adr2' for bytebyte. When bytebyte is found,
the address will be shown.

Same as above, but now search for ATASCII text.

Also as above, but now search for keyboard codes.

Read 'amount' sectors beginning at 'sectornr' into 'adr'.

Write 'amount' sectors from 'adr' to 'sectornr'.

Note: the amount may not be more than 255 (0 means 256).
Reading and writing also works for double density.

MLM allows you to set the processor registers before executing
(or trying) a program. Just after the 'GO' command, MLM will
first change the 'real' registers before starting the program.

R show the 6502 registers
W=byte gives the accumulator (A) the value of 'byte'
X=byte gives the X-register the value of 'byte'
Y=byte gives the Y-register the value of 'byte'
P=byte gives the status register the value of 'byte'

This will start the program at 'adr'. For this MLM uses a JSR
instruction, so it will return to MLM after an RTS instruction.
However, if it encounters a BRK (break) instruction it will also
return to MLM plus showing the contents of the registers.

Please don't change the following addresses when using MLM:

Zero page: 4, 5, 6, 7, 21, 22, 112, 113, 114, 115, 116, 117, 118, 119, 120

OS-RAM: 583 to 619, 713 to 724

SHIFT-HELP function keys on/off
CTRL-HELP keyboard on/off
CTRL-4 Keyclick on/off
CTRL-5 Cursor blinking on/off
CTRL-6 Screen off (any other key to turn it on again)
CTRL-7 Set the key repeat speed to slow, normal or fast
CTRL-8 Activate self defined routine (set vector $238)
CTRL-9 Moves the cursor to the left margin. If it's
already there the left margin will be set to 0 or 2
CTRL-0 Moves the cursor to the bottom of the screen

RESET will always turn the function keys back on.

The following options were already mentioned at the Qmeg menu commands,
but can also be activated directly from the MLM.

SHIFT-CTRL-N : Set drive #1 to normal speed
SHIFT-CTRL-U : Set drive #1 to ultra speed (HAPPY/SPEEDY)
SHIFT-CTRL-H : Set drive #1 to warp speed (U.S. doubler)
SHIFT-CTRL-/ : Ramdisk A acts like drive #1
SHIFT-CTRL-INVERSE : Ramdisk B acts like drive #1

For the advanced user known disk interface (DSKINV at 58451) will
now work with double density on it's own. It supports the following

34 " format medium density
35 # format double density
63 ? switch to ultra speed and fast write
79 Q stop drive motor
72 H reserved for special HAPPY functions
(controlled by DAUX1 at 778 and DAUX2 at 779)
83 S status command. Is also set to the right sectorlength
(DSKSLN at 725)

The Qmeg OS has two SIO subroutines. USIO which works faster because
of the removed I/O interrupts, is used by all fast disk operations
(ultra speed etc.). SIO is not changed.
USIO can give four error messages:

128 BREAK key pressed
139 illegal command
140 wrong baudrate
144 legal command, but it doesn't work

Ramdisks can be accessed the same way as real drives. Also the PERCOM
command PUT and the STATUS command are legal. The following error
messages can occur:

139 sectornumber too low or too high
138 ramdisk B accessed while it's not possible because of the
double density state of ramdisk A

If you've got a memory expansion of type #1 and you're using the
ramdisk, you can't use the area from $4000 to $7FFF for screen data
or display lists. There will be errors on screen or the computer can
even lock up. When DLIEN (787) contains a value greater than 127,
then Qmeg will run a DLI after a ramdisk operation.

  • Thanks 1
Link to comment
Share on other sites

I am looking for a website that has instructions for Qmeg v3 and onwards incl v4.2/3 etc and also Toms mod'd qmeg that i d/l'd for use with atari++ and atari800win+ emulators


any help is greatly appreciated


I am still looking for images of 'speedy o/s' i believe it was similar to qmeg

A while back Hias sent me this impromptu English translation of a quick reference card


RESET keys:
Shift    coldstart
Option    Basic on (when booting)
Select    enter QMEG menu
Start    XL-mode (when booting)

QMEG menu:
ESC    exit
TAB    toggle warm/cold
A    basic/cartridge off
B    basic on
C    cartridge on
RETURN    enter monitor
SHIFT+Atari    coldstart with OPTION
START+B/C/ESC    basic/cartridge restart

CLEAR    default settings
DELETE    XL-mode

<-,->,1..8,SPACE    select drive

N    normal drive (disable speeder)
F    fast drive (enable speeder)
X    ramdisk X
Y    ramdisk Y

O    slow mode
SHIFT+O    absolute slow mode
I    disable slow mode (drive init)
SHIFT+I    reset drive
CTRL+I    disable drive cache

SHIFT+1..8    set boot drive

S    ramdisk X = single density
M    ramdisk X = medium density
D    ramdisk X = double density

K    function keys on/off
E    display list interrupt on/off
V    vertical blank sync on/off
G    generate DOS2.5 ramdisk on/off

L    list directory
;    list directory (with 1050 density test)

R    copy disk to ramdisk X
W    copy ramdisk X to disk
SHIFT+R    read frozen program from disk
SHIFT+W    write frozen program to disk

Function keys:
SHIFT+HELP    function keys on/off
CTRL+4    key click on/off
CTRL+5    cursor slow/fast
CTRL+6    display on/off
CTRL+7    cursor start of line
CTRL+8    cursor end of line
CTRL+9    cursor home
CTRL+0    cursor bottom
CTRL+SHIFT+N    D1: normal
CTRL+SHIFT+F    D1: fast
CTRL+SHIFT+/    D1: ramdisk X
CTRL+SHIFT+Atari    D1: ramdisk Y

Freezer keys:
CTRL+HELP    enter/exit freezer
SPACE    disable sound
CTRL+S    save snapshot to ramdisk X
CTRL+L    load snapshot from ramdisk X
CTRL+E    swap with ramdisk X
SHIFT+S    save snapshot to ramdisk Y
SHIFT+L    load snapshot from ramdisk Y
SHIFT+E    swap with ramdisk Y
HELP    exit freezer
6 hex numbers (4 digits address, 2 digits value) + return: change memory
DELETE    delete last hex digit
CLEAR    delete all hex digits

Machine language monitor:
N    restart
Q    quit
H    hex mode on
Z    decimal mode on

#number    decimal number
$number    hex number

ADR    hex/dec + ATASCII dump
ADR;    hex/dec + ATASCII dump
ADR"    ATASCII dump
ADR'    screen code dump
ADRL    disassembler

alternative addressing modes:
ADR1,ADR2    address range
ADR,    128 bytes address range
*ADR    address range ADR...$FFFF

^    print data (use as a prefix)

ADR=    hex+dec display of ADR
ADR1+ADR2, ADR1-ADR2    calculate sum/difference
=    show address counter

ADR;xxx    change memory (byte/word)
ADR"xxx    change memory (ATASCII)
ADR'xxx    change memory (screen code)

ADR1,ADR2 M ADR3    move ADR1..ADR2 to ADR3
ADR1,ADR2 V ADR3    compare memory
ADR1,ADR2=byte    fill memory

ADR1,ADR2;xxx    search bytes/words
ADR1,ADR2"xxx    search ATASCII
ADR1,ADR2'xxx    search screen code

ADR<SECNO,COUNT    read sectors from disk
ADR>SECNO,COUNT    write sectors to disk

R    show CPU registers
W=byte    change A
X=byte    change X
Y=byte    change Y
P=byte    change flag register
M=byte    change PORTB ($D301)
ADR GO    start program


The alternative addressing modes do not seem to work with the image of QMEG (4.04) I am using, except *ADR (continuous listing) does work and I think ^ADR (print output) does work but I can't verify. No printer connected to my 800XL at the moment.


- Steve

Link to comment
Share on other sites

Well... that is F A N T A S T I C!


This a great help indeed.


What a wonderful options in this Qmeg.


Is QMEG free these days or is there still a place or person to buy it from?




It's easy to find qmeg roms in the net, try qmeg32 in google.

But I think, it's not free. Copyrightholder (and inventor) of this os is Stefan Dorndorf. I meet him regularly in the abbuc chat during our abbuc bundesliga matches (he is multiple champion). His nick is 'dietrich' in the abbuc forum. You can try to send him a PM. Or join the abbuc bundesliga ;)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Create New...