QDOS+ MEMORY MAP


QDOS+ MEMORY MAP


Hardware map


$FFFFF   +--------------------------+
         | Add-on ROM (up to 128kb) |
$E0000   +--------------------------+
         | 8x16kb device slots      |
$C0000   +--------------------------+
         | Up to 512kb add-on RAM   |  } See     } Top actual
$40000   +--------------------------+  } next    } address goes
         | 96kb on-board user RAM   |  } diagram } in SV_RAMT
$28000   +--------------------------+
         | 32KB screen RAM          |
$20000   +--------------------------+
         | On-board IO (partially   | $1806?3 = master chip status reg: bit 0=1 blanks display:
         |              decoded)    | bit 0=0 enables display. ALSO??!! POKE 98403,2 to blank
$10000   +--------------------------+ screen, POKE..,2 to restore monitor mode.
         | 16kb plug-in ROM         |
$0C000   +--------------------------+
         | 48kb on-board ROM        |
$00000   +--------------------------+

Ram map


SV_RAMT  +----------------+
SV_RESPR | Resident proc- |      When not jobs present, QDOS can allocate &
         | edure area     |      totally-deallocate space: no other QDOS ops.
         +vvvvvvvvvvvvvvvv+
SV_TRNSP | Transient      |      Code/data/stack area per relocatable job.
         | program area   |      Not normally re-entrant, but can be made so.
         +vvvvvvvvvvvvvvvv+
SV_BASIC | SuperBASIC     |      Basic program, variables, its IO channels.
         | area           |      See BV_ definitions: all pointers A6-relative.
         +vvvvvvvvvvvvvvvv+      [Top regions grow down.]
SV_FREE  | Free memory    |      Used by the filing
         | area           |      system for slave blocks.
         +^^^^^^^^^^^^^^^^+      [Common heap grows up]
SV_HEAP  | Common heap    |      Channel definitions, workstore for IO & programs.
         | area           |      MT_ALCHP & _RECHP. Auto RECHP at end of job.
         +----------------+
         | System manage- |      Various. Info for joblist, etc. Also the
         | ment tables    |      Supervisor Stack.
         +----------------+
         | System         |
         | variables  SV_ |
$28000*  +----------------+      Base of system variables. $28000 or MT_INF: see below
         | Display RAM    |
$20000   +----------------+      Base of RAM

* System variables start at $28000 in ROMs up to JS: in Minerva (up to 1.92 at least) running in two-screen mode they start at $30000 because of the second screen's-worth of display ram. IN ANY ROM it is prudent to use MT_INF to locate the base of the SVs.

NB: $28000 = 163840
    $20000 = 196608

Allocation and release

AllocateRelease
Res. procedure areaMT_ALRESMT_RERES[total release only]
Trans. program area~MT_CJOB~MT_FRJOB
--------"--------MM_ALLOCMM_LINKFR[for heap allocation within the jobs own data area.]
SuperBASIC areaMT_ALBASMT_REBAS[for interpreter only]
------"------BV_CHRIXautomatic[space in RI stack]
------"------[see "BASIC interpreter"][in other SuperBASIC areas]
Free memory area[not directly used by normal jobs]
Common heap areaMT_ALCHPMT_RECHP - also released when owner job is deleted
------"------MM_ALCHPMM_RECHP[from dev.drivers] - also released when owner job is deleted

Last updated 4th January 1999.

Back to my QL home page
Disclaimer