PL/M-86 COMPILER    VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE                                            PAGE   1


ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE VCMODE
OBJECT MODULE PLACED IN VCMODE.OBJ
COMPILER INVOKED BY:  :F0: VCMODE.PLM XREF OPTIMIZE(3) DEBUG



              $title('VCMODE.CMD - Set Virtual Console Background Mode')
              $compact
   1          vcmode:
              do;

              $include (:f2:copyrt.lit)
          =
          =   /*
          =     Copyright (C) 1983
          =     Digital Research
          =     P.O. Box 579
          =     Pacific Grove, CA 93950
          =   */
          =
              $include (:f2:vaxcmd.lit)
          =
          =   /**** VAX commands for generation - read the name of this program 
          =           for PROGNAME below.
          =
          =       $ util := PROGNAME
          =       $ ccpmsetup             ! set up environment
          =       $ assign 'f$directory()' f1:        ! use local dir for temp files
          =       $ plm86 'util'.plm xref 'p1' optimize(3) debug
          =       $ link86 f2:scd.obj, 'util'.obj  to 'util'.lnk
          =       $ loc86 'util'.lnk od(sm(code,dats,data,stack,const)) -
          =             ad(sm(code(0),dats(10000h))) ss(stack(+32)) to 'util'.
          =       $ h86 'util'
          =
          =   ***** Then, on a micro:
          =       A>vax progname.h86 $fans
          =       A>gencmd progname data[b1000]
          =
          =   ***** Notes: Stack is increased for interrupts.  Const(ants) are last
          =           to force hex generation.
          =   ****/
              $include (:f2:comlit.lit)
          =
   2   1  =   declare
          =           lit                literally          'literally',
          =           dcl                lit                'declare',
          =           true               lit                '0ffh',
          =           false              lit                '0',
          =           no                 lit                'not',    
          =           boolean            lit                'byte',
          =           forever            lit                'while true',
          =           cr                 lit                '13',
          =           lf                 lit                '10',
          =           tab                lit                '9',
          =           ctrlc              lit                '3',
          =           ff                 lit                '12',
          =           page$len$offset    lit                '1ch',
PL/M-86 COMPILER    VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE                                            PAGE   2


          =           nopage$mode$offset lit                '2Ch',
          =           sectorlen          lit                '128';
              $include (:f2:mfunc.lit)
          =
          =   /* Concurrent CP/M function numbers */
          =
   3   1  =   dcl           m$prtbuf              lit       '9',
          =                 m$select              lit       '14',
          =                 m$openf               lit       '15',
          =                 m$closef              lit       '16',
          =                 m$deletef             lit       '19',
          =                 m$readf               lit       '20',
          =                 m$writef              lit       '21',
          =                 m$makef               lit       '22',
          =                 m$getlogin            lit       '24',
          =                 m$curdsk              lit       '25',
          =                 m$setdma              lit       '26',
          =                 m$setatt              lit       '30',
          =                 m$setusr              lit       '32',
          =                 m$readrf              lit       '33',
          =                 m$writerf             lit       '34',
          =                 m$resetdrv            lit       '37',
          =                 m$errmode             lit       '45',
          =                 m$dirbios             lit       '50',
          =                 m$makeq               lit       '134',
          =                 m$openq               lit       '135',
          =                 m$deleteq             lit       '136',
          =                 m$readq               lit       '137',
          =                 m$creadq              lit       '138',
          =                 m$writeq              lit       '139',
          =                 m$cwriteq             lit       '140',
          =                 m$delay               lit       '141',
          =                 m$dispatch            lit       '142',
          =                 m$setprior            lit       '145',
          =                 m$attach              lit       '146',
          =                 m$detach              lit       '147',
          =                 m$setcns              lit       '148',
          =                 m$parse               lit       '152',
          =                 m$getcns              lit       '153',
          =                 m$sysdat              lit       '154',
          =                 m$getpd               lit       '156',
          =                 m$abort               lit       '157';
          =
          =   /* Internal calls */
          =
   4   1  =   dcl           mi$sleep              lit       '0212H',
          =                 mi$wakeup             lit       '0213H';
          =                 
              $include (:f2:fcb.lit)
          =
   5   1  =   declare
          =       f$drvusr          lit '0',        /* drive/user byte               */
          =       f$name            lit '1',        /* file name                     */
          =       f$namelen         lit '8',        /* file name length              */
          =       f$type            lit '9',        /* file type field               */
          =       f$typelen         lit '3',        /* type length                   */
          =       f$rw              lit '9',        /* high bit is R/W attribute     */
PL/M-86 COMPILER    VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE                                            PAGE   3


          =       f$dirsys          lit '10',       /* high bit is dir/sys attribute */
          =       f$arc             lit '11',       /* high bit is archive attribute */
          =       f$ex              lit '12',       /* extent                        */
          =       f$s1              lit '13',       /* module byte                   */
          =       f$rc              lit '15',       /* record count                  */
          =       f$diskmap         lit '16',       /* file disk map                 */
          =       diskmaplen        lit '16',       /* disk map length               */
          =       f$drvusr2         lit '16',       /* fcb2                          */
          =       f$name2           lit '17',
          =       f$type2           lit '25',
          =       f$cr              lit '32',       /* current record                */
          =       f$rrec            lit '33',       /* random record                 */
          =       f$rreco           lit '35';       /*   "      "    overflow        */
          =

   6   1      dcl fcb (1) byte external;
   7   1      dcl buff (1) byte external;

              $include (:f2:sd.lit)
          =
          =   /* System Data Page */
          =
   8   1  =     dcl sysdat$pointer pointer;
   9   1  =     dcl sysdat$ptr structure(
          =       offset word,
          =       segment word) at (@sysdat$pointer);
  10   1  =     declare sd based sysdat$pointer structure (
          =         supmod (4) word,
          =     /*  rtmmod (4) word,
          =         memmod (4) word,
          =         ciomod (4) word,
          =         bdosmod (4) word,
          =         xiosmod (4) word,
          =         netmod (4) word,
          =         reservd (4) word */
          =         space(28) word,
          =         mpmseg word,
          =         rspseg word,
          =         endseg word,
          =         module$map byte,
          =         ncns byte,
          =         nlst byte,
          =         nccb byte,
          =         nflags byte,
          =         srchdisk byte,
          =         mmp word,
          =         nslaves byte,
          =         dayfile byte, 
          =         tempdisk byte,
          =         tickspersec byte, 
          =         lul word, 
          =         ccb word,
          =         flags word,
          =         mdul word,
          =         mfl word,
          =         pul word,
          =         qul word,
PL/M-86 COMPILER    VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE                                            PAGE   4


          =         qmau (4) word,
          =         rlr word,
          =         dlr word,
          =         drl word,
          =         plr word,
          =         slr word,
          =         thrdrt word,
          =         qlr word,
          =         mal word,      
          =         version word,
          =         vernum word,
          =         mpmvernum word,
          =         tod (2) word,
          =         tod_sec byte,
          =         ncondev byte,
          =         nlstdev byte,
          =         nciodev byte,
          =         lcb (2) word,
          =         lckmax byte,
          =         opmax byte,
          =         sysltot (2) word,
          =         cmod byte );
          =         
          =         
  11   1  =   declare sd$byte based sysdat$pointer (1) byte;
          =

  12   1      dcl ccb$pointer pointer;
  13   1      dcl ccb$ptr structure ( offset address, segment address) at
                (@ccb$pointer);
              $include (:f2:vccb.lit)
          =       /* Concurrent CP/M Character Control Block Structure */
          =
          =   /*              +---------+---------+---------+---------+
          =          00       |      attach       |       queue       |
          =                   +---------+---------+---------+---------+
          =          04       |  flag   | startcol| column  |  nchar  |
          =                   +---------+---------+---------+---------+
          =          08       |  mimic  | msource |   pc    |    vc   |
          =                   +---------+---------+---------+---------+
          =          0C       |  btmp   | resrvd  |       state       |
          =                   +---------+---------+---------+---------+
          =          10       |     maxbufsiz     |       vinq        |
          =                   +---------+---------+---------+---------+
          =          14       |       voutq       |       vcmxq       |     
          =                   +---------+---------+---------+---------+
          =          18       | qpbflgs | qpbfill |      qpbqaddr     |
          =                   +---------+---------+---------+---------+
          =          1C       |      qpbnmsgs     |     qpbbuffptr    |
          =                   +---------+---------+---------+---------+
          =          20       |       qbuff       |      cosleep      |
          =                   +---------+---------+---------+---------+
          =          24       |      usleep       |       vsleep      |
          =                   +---------+---------+---------+---------+
          =          28       |            ... reserved ...           |
          =                   +---------+---------+---------+---------+
          =
PL/M-86 COMPILER    VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE                                            PAGE   5


          =
          =
          =
          =   */   
          =
  14   1  =   dcl ccb$structure lit 'structure (attach address, queue address,
          =    flag byte, startcol byte, column byte, nchar byte, mimic byte, msource byte,
          =    ccb$tail1';
  15   1  =   dcl ccb$tail1 lit
          =    'pc byte, vc byte, btmp byte, reservd byte, state word, maxbufsiz word,
          =     ccb$tail2';
  16   1  =   dcl ccb$tail2 lit
          =    'vinq address, voutq address, vcmxq address,
          =     qpbflags byte, qpbresrvd byte, qpbqaddr address,
          =     qpbnmsgs address, qpbbuffptr address, qbuff address, cosleep word,
          =     usleep word, vsleep word, r1 word, r2 word)';
          =
  17   1  =     declare                                 /* flag values                    */
          =       cf$listcp         lit        '001h',  /* control P toggle               */
          =       cf$compc          lit        '002h',  /* suppress output                */
          =       cf$switchs        lit        '004h',  /* XIOS supports switch screening */
          =       cf$conout         lit        '008h',  /* XIOS console output ownership  */
          =       cf$vout           lit        '010h',  /* process writing to VOUTQ       */
          =       cf$bufp           lit        '020h';  /* toggle to control printer echo */
          =                                             /* on control P when background   */
          =                                             /* and buffered                   */
          =   /* values of state byte */
          =                                               /* conout goes to XIOS  */
          =
          =   /* state word flags */
          =
  18   1  =   dcl
          =   csm$buffered          lit       '0001h',
          =   csm$background        lit       '0002h',
          =   csm$purging           lit       '0004h',
          =   csm$noswitch          lit       '0008h',
          =   csm$suspend           lit       '0010h',
          =   csm$abort             lit       '0020h',
          =   csm$filefull          lit       '0040h',
          =   csm$ctrlS             lit       '0080h',
          =   csm$ctrlO             lit       '0100h',
          =   csm$ctrlP             lit       '0200h';
          =
  19   1  =   dcl x$init$offset lit '0Ch',
          =       x$init$pointer pointer,
          =       x$init$ptr structure (offset word, segment word) at (@x$init$pointer),
          =       x$init based x$init$pointer structure
          =         (tick byte, ticks$sec byte, door byte, resrvd1 (2) byte,
          =         nvcns byte, nccb byte, nlst byte, ccb word, lcb word);
          =
          =
  20   1  =   dcl lcb$structure lit 'structure (attach address, queue address,
          =    flag byte, startcol byte, column byte, nchar byte,
          =    mimic byte, msource byte)';
          =
  21   1      dcl ccb based ccb$pointer ccb$structure;

PL/M-86 COMPILER    VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE                                            PAGE   6


  22   1      dcl ccpmproduct lit '14h';
  23   1      dcl bdosversion lit '31h';

  24   1      mon1: procedure (func,info) external;
  25   2        declare func byte;
  26   2        declare info address;
  27   2      end mon1;

  28   1      mon2: procedure (func,info) byte external;
  29   2        declare func byte;
  30   2        declare info address;
  31   2      end mon2;

  32   1      mon3: procedure (func,info) address external;
  33   2        dcl func byte, info address;
  34   2      end mon3;

  35   1      mon4: procedure (func,info) pointer external;
  36   2        dcl func byte, info address;
  37   2      end mon4;



                /**************************************
                 *                                    *
                 *       B D O S   Externals          *
                 *                                    *
                 **************************************/

  38   1      print$char: procedure(char);
  39   2        declare char byte;
  40   2        call mon1(2,char);
  41   2      end print$char;

  42   1      print$console$buffer: procedure (buffer$address);
  43   2        declare buffer$address address;
  44   2        call mon1 (9,buffer$address);
  45   2      end print$console$buffer;

  46   1      version: procedure address;
  47   2        return mon3(12,0);
  48   2      end version;

                /**************************************
                 *                                    *
                 *       X D O S   Externals          *
                 *                                    *
                 **************************************/

  49   1      terminate: procedure;
  50   2        call mon1 (143,0);
  51   2      end terminate;

  52   1      get$console$number: procedure byte;
  53   2        return mon2 (153,0);
  54   2      end get$console$number;

PL/M-86 COMPILER    VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE                                            PAGE   7


  55   1      printb: procedure public;
  56   2        call print$char(' ');
  57   2      end printb;

  58   1      pdecimal: procedure(v,prec,zerosup) public;
                                       /* print value v, field size = (log10 prec) + 1  */
                                       /* with leading zero suppression if zerosup = true */
  59   2        declare v address,     /* value to print           */
                     prec address,     /* precision                */
                  zerosup boolean,     /* zero suppression flag    */
                        d byte;        /* current decimal digit    */

  60   2        do while prec <> 0;
  61   3          d = v / prec;                           /* get next digit           */
  62   3          v = v mod prec;                         /* get remainder back to v  */
  63   3          prec = prec / 10;                       /* ready for next digit     */
  64   3          if prec <> 0 and zerosup and d = 0 then
  65   3            call printb;
                  else
  66   3          do;
  67   4            zerosup = false;
  68   4            call printchar('0'+d);
  69   4          end;
  70   3        end;
  71   2      end pdecimal;

              /*lbracket: procedure byte;  /* find left bracket in command tail return */
              /*  dcl i byte;              /* its index. if not found ret 0            */
              /*  i = 1;
                do while i <= buff(0) and (buff(i) = ' ' or buff(i) = tab);
                  i = i + 1;
                end;
                if buff(i) = '[' then
                  return(i);
                return(0);
              end lbracket;
              */

  72   1      help: procedure;
  73   2          call mon1(m$prt$buf, .(cr, lf, tab, tab, tab ,'VCMODE EXAMPLES$'));
  74   2          call mon1(m$prt$buf, .(cr, lf, lf, 'vcmode', tab, tab, tab, tab, tab,
                    '(show background mode)$'));
  75   2          call mon1(m$prt$buf, .(cr, lf, 'vcmode dynamic', tab, tab, tab, tab,
                    '(sets background mode)$'));
  76   2          call mon1(m$prt$buf, .(cr, lf, 'vcmode buffered', tab, tab, tab, tab,
                    tab, '"$'));
              /*    call mon1(m$prt$buf, .(cr, lf, 'vcmode suspend', tab, tab, tab, tab,
                    tab, '"$'));*/
  77   2          call mon1(m$prt$buf, .(cr, lf, 'vcmode size = 5', tab, tab, tab, tab,
                    '(sets buffered mode max file size in)$'));
  78   2          call mon1(m$prt$buf, .(cr, lf, tab, tab, tab, tab, tab,
                    '(kilobytes, legal range is 1 to 8191)$'));
  79   2          call mon1(m$prt$buf, .(cr, lf, tab, tab, tab, tab, tab,
                    '(also sets background mode to buffered)$'));
              /*    call mon1(m$prt$buf, .(cr, lf, 'vcmode size = 100H', tab, tab, tab,
                    '(legal range in HEX is 1H to 1FFFFH)$'));*/
  80   2          call mon1(m$prt$buf, .(cr, lf, 'vcmode help', tab, tab, tab, tab,
PL/M-86 COMPILER    VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE                                            PAGE   8


                    '(prints this message)$'));
  81   2          call mon1(m$prt$buf, .(cr, lf, '$'));
  82   2          call terminate;
  83   2      end help;

  84   1      showstate: procedure (verb);
  85   2        dcl (verb,state) address;
  86   2          call mon1(m$prt$buf, .(cr,lf,'Background Mode For Virtual Console$'));
  87   2          call pdecimal (console, 100, true);
  88   2          call printb;
  89   2          call mon1(m$prt$buf, verb);
  90   2          state = ccb.state and csm$buffered;
  91   2          if state = 0 then
  92   2            call mon1(m$prt$buf, .(' Dynamic$'));
                  else
  93   2          do;
  94   3            call mon1(m$prt$buf, .(' Buffered', cr, lf, 'Maximum file size = $'));
  95   3            call pdecimal(ccb.maxbufsiz, 10000, true);
  96   3            call mon1(m$prt$buf, .('K$'));
  97   3          end;
  98   2          call mon1(m$prt$buf, .(cr, lf, '$'));
                  
  99   2      end show$state;

              $include (:f2:qd.lit)
          =
          =   /* Queue Descriptor */
          =
 100   1  =   dcl qnamsiz lit '8';
          =
 101   1  =   dcl qd$structure lit 'structure(
          =     link  word,
          =     net byte,
          =     org byte,
          =     flags word,
          =     name(qnamsiz) byte,
          =     msglen word,
          =     nmsgs word,
          =     dq word,
          =     nq word,
          =     msgcnt word,
          =     msgout word,
          =     buffer word)';
          =
          =   /* queue flag values */
          =
 102   1  =   dcl qf$mx       lit '001h'; /* Mutual Exclusion */
 103   1  =   dcl qf$keep     lit '002h'; /* NO DELETE        */
 104   1  =   dcl qf$hide     lit '004h'; /* Not User writable    */
 105   1  =   dcl qf$rsp      lit '008h'; /* rsp queue        */
 106   1  =   dcl qf$table    lit '010h'; /* from qd table    */
 107   1  =   dcl qf$rpl      lit '020h'; /* rpl queue        */
 108   1  =   dcl qf$dev      lit '040h'; /* device queue     */
          =
          =   /* Queue Parameter Block */
          =
 109   1  =   dcl qpb$structure lit 'structure(
PL/M-86 COMPILER    VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE                                            PAGE   9


          =     flgs    byte,
          =     net     byte,
          =     qaddr   word,
          =     nmsgs   word,
          =     buffptr word,
          =     name (qnamsiz) byte )';
          =

 110   1      dcl qpb qpb$structure;

 111   1      read$change$mxq: procedure;
 112   2        qpb.qaddr = ccb.vcmxq;
 113   2        call mon1 (m$readq, .qpb);
 114   2      end read$change$mxq;

 115   1      write$change$mxq: procedure;
 116   2        qpb.qaddr = ccb.vcmxq;
 117   2        call mon1 (m$writeq, .qpb);
 118   2      end write$change$mxq;

 119   1      atohb: procedure (char) byte public;    /* convert ascii hex to nibble value */
 120   2        declare char byte;
 121   2        if char >= '0' and char <= '9' then
 122   2          char = char - '0';
 123   2        else if char >= 'A' and char <= 'F' then
 124   2         char = char - 'A' + 10;
                else
 125   2          char = 255; 
 126   2        return(char);
 127   2      end atohb;

 128   1      atodb: procedure (char) byte public;/* convert ascii decimal to nibble value */
 129   2        declare char byte;
 130   2        if char >= '0' and char <= '9' then
 131   2          char = char - '0';
                else
 132   2          char = 255; 
 133   2        return(char);
 134   2      end atodb;

 135   1      atoi: procedure(str) word;    /* convert ascii to 16 bit unsigned value */
 136   2        dcl str pointer;
 137   2        dcl (accum, temp) word;
 138   2        dcl (val, i, len) byte;
 139   2        dcl string based str (1) byte;
 140   2        i, accum = 0;
 141   2        if (len := findb(str, 'H', 5)) <> 0ffffh then        /* hex conversion */
 142   2        do while (val := atohb(string(i))) <> 0ffh and i < len;
 143   3          accum = shl(accum, 4) + val;
 144   3          i = i + 1;
 145   3        end;
                else                       /* decimal is default base */
 146   2        do while (val := atodb(string(i))) <> 0ffh and i < 5;
 147   3          accum = 10 * accum + val;
 148   3          if i = 4 then
 149   3            temp = accum;
 150   3          i = i + 1;
PL/M-86 COMPILER    VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE                                            PAGE  10


 151   3        end;
 152   2        if temp > accum then                 /* overflow */
 153   2          accum = 0ffffh;
 154   2        return(accum);
 155   2      end atoi;

 156   1      compare: procedure(ustr, ostr, minlen, maxlen) boolean;
 157   2        dcl (ustr, ostr) pointer;            /* user string, option string */
 158   2        dcl user$string based ustr (1) byte;
 159   2        dcl (minlen, maxlen) byte;
 160   2        dcl cmplen word;
 161   2        cmplen = cmpb(ustr, ostr, maxlen);
 162   2        if cmplen = 0ffffh or (user$string(cmplen) = ' ' and cmplen >= minlen) then
 163   2          return(true);
 164   2        if user$string(cmplen) = ' ' then
 165   2        do;
 166   3           call mon1(m$prt$buf, .(cr,lf,'Invalid Command Option.', cr ,lf, '$'));
 167   3           call help;
 168   3        end;
 169   2        return(false);
 170   2      end compare;

 171   1      dcl vers address initial (0);
 172   1      dcl no$state lit '0ffh';
 173   1      dcl console byte;

                /*
                  Main Program
                */

 174   1      plmstart: procedure public;
 175   2        dcl option$ptr byte;
 176   2        dcl num word;
 177   2        vers = version;
 178   2        if (high(vers) <> ccpmproduct) then
 179   2        do;
 180   3          call print$console$buffer(.(cr,lf,'Requires Concurrent CP/M-86', cr, lf,
                    '$'));
 181   3          call mon1(0,0);
 182   3        end;

 183   2        sysdat$pointer, ccb$pointer = mon4(m$sysdat, 0);  /* system data segment */
 184   2        ccb$ptr.offset = sd.ccb + (console := mon2(m$getcns, 0)) * size(ccb);

 185   2        call read$change$mxq;         /* MXQ is written in kernel terminate code */
 186   2        if (ccb.state and csm$background) <> 0 then
 187   2          call mon1(m$prt$buf, .(cr,lf,'Virtual Console not in foreground', cr, lf,
                    '$'));
 188   2        else if buff(0) = 0 then
 189   2          call show$state(.('is$'));  /* show current state */
                else                          /* try to set state or show help message */
 190   2        do;
 191   3          fcb(f$type) = ' ';
 192   3          if      compare(@fcb(f$name), @('BUFFERED'), 1, 8) then
 193   3            ccb.state = ccb.state or csm$buffered;
 194   3          else if compare(@fcb(f$name), @('DYNAMIC'), 1, 7) then
 195   3            ccb.state = ccb.state and not double(csm$buffered);
PL/M-86 COMPILER    VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE                                            PAGE  11


 196   3          else if compare(@fcb(f$name), @('HELP'), 1, 4) then
 197   3            call help;
 198   3          else if compare(@fcb(f$name), @('SIZE'), 1, 4) then  /* change to 2,4    */
 199   3          do;                                    /* when suspend is put back in    */
 200   4            num = atoi(@fcb(f$name2));
 201   4            if num > 0 and num < 2000H then
 202   4              ccb.maxbufsiz = num;     /* limit size to 16 bit record count */
                    else
 203   4            do;
 204   5              call mon1(m$prt$buf, .(cr,lf,'File size out of range', cr ,lf, '$'));
 205   5              call help;
 206   5            end;
 207   4            ccb.state = ccb.state or csm$buffered;
                                              /* automatically sets to buffered */
 208   4          end;
                  else
 209   3          do;
 210   4            call mon1(m$prt$buf, .(cr,lf,'Invalid Command Option.', cr ,lf, '$'));
 211   4            call help;
 212   4          end;
 213   3          call show$state(.('set to$'));
 214   3        end;
 215   2        call terminate;
                  
 216   2      end plmstart;
 217   1      end vcmode;
PL/M-86 COMPILER    VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE                                            PAGE  12


CROSS-REFERENCE LISTING
-----------------------


   DEFN  ADDR   SIZE  NAME, ATTRIBUTES, AND REFERENCES
  ----- ------ -----  --------------------------------


    137  001EH     2  ACCUM. . . . . . .     WORD       140  143  147  149  152  153  154 
    128  01F2H    32  ATODB. . . . . . .     PROCEDURE BYTE PUBLIC STACK=0004H        146 
    119  01BEH    52  ATOHB. . . . . . .     PROCEDURE BYTE PUBLIC STACK=0004H        142 
    135  0212H   215  ATOI . . . . . . .     PROCEDURE WORD STACK=000CH          200 
     21  0000H     2  ATTACH . . . . . .     WORD MEMBER(CCB)
     23               BDOSVERSION. . . .     LITERALLY
      2               BOOLEAN. . . . . .     LITERALLY        59  156 
     21  000CH     1  BTMP . . . . . . .     BYTE MEMBER(CCB)
      7  0000H     1  BUFF . . . . . . .     BYTE ARRAY(1) EXTERNAL(1)      188 
     42  0004H     2  BUFFERADDRESS. . .     WORD PARAMETER AUTOMATIC        43   44 
    110  0006H     2  BUFFPTR. . . . . .     WORD MEMBER(QPB)
     10  0054H     2  CCB. . . . . . . .     WORD MEMBER(SD)      184 
     21  0000H    44  CCB. . . . . . . .     STRUCTURE BASED(CCBPOINTER)          90   95  112  116  184  186  193
                                              195  202  207 
     19  0008H     2  CCB. . . . . . . .     WORD MEMBER(XINIT)
     12  0004H     4  CCBPOINTER . . . .     POINTER          13   21   90   95  112  116  183  186  193  195  202
                                              207 
     13  0004H     4  CCBPTR . . . . . .     STRUCTURE AT         184 
     14               CCBSTRUCTURE . . .     LITERALLY        21 
     15               CCBTAIL1 . . . . .     LITERALLY        21 
     16               CCBTAIL2 . . . . .     LITERALLY        21 
     22               CCPMPRODUCT. . . .     LITERALLY       178 
     17               CFBUFP . . . . . .     LITERALLY
     17               CFCOMPC. . . . . .     LITERALLY
     17               CFCONOUT . . . . .     LITERALLY
     17               CFLISTCP . . . . .     LITERALLY
     17               CFSWITCHS. . . . .     LITERALLY
     17               CFVOUT . . . . . .     LITERALLY
    119  0004H     1  CHAR . . . . . . .     BYTE PARAMETER AUTOMATIC       120  121  122  123  124  125  126 
     38  0004H     1  CHAR . . . . . . .     BYTE PARAMETER AUTOMATIC        39   40 
    128  0004H     1  CHAR . . . . . . .     BYTE PARAMETER AUTOMATIC       129  130  131  132  133 
     10  0090H     1  CMOD . . . . . . .     BYTE MEMBER(SD)
                      CMPB . . . . . . .     BUILTIN         161 
    160  0022H     2  CMPLEN . . . . . .     WORD       161  162  164 
     21  0006H     1  COLUMN . . . . . .     BYTE MEMBER(CCB)
    156  02E9H   111  COMPARE. . . . . .     PROCEDURE BYTE STACK=001CH          192  194  196  198 
    173  002CH     1  CONSOLE. . . . . .     BYTE        87  184 
     21  0022H     2  COSLEEP. . . . . .     WORD MEMBER(CCB)
      2               CR . . . . . . . .     LITERALLY        73   74   75   76   77   78   79   80   81   86   94
                                               98  166  180  187  204  210 
     18               CSMABORT . . . . .     LITERALLY
     18               CSMBACKGROUND. . .     LITERALLY       186 
     18               CSMBUFFERED. . . .     LITERALLY        90  193  195  207 
     18               CSMCTRLO . . . . .     LITERALLY
     18               CSMCTRLP . . . . .     LITERALLY
     18               CSMCTRLS . . . . .     LITERALLY
     18               CSMFILEFULL. . . .     LITERALLY
     18               CSMNOSWITCH. . . .     LITERALLY
     18               CSMPURGING . . . .     LITERALLY
PL/M-86 COMPILER    VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE                                            PAGE  13


     18               CSMSUSPEND . . . .     LITERALLY
      2               CTRLC. . . . . . .     LITERALLY
     59  0028H     1  D. . . . . . . . .     BYTE        61   64   68 
     10  004FH     1  DAYFILE. . . . . .     BYTE MEMBER(SD)
      2               DCL. . . . . . . .     LITERALLY
      5               DISKMAPLEN . . . .     LITERALLY
     10  006AH     2  DLR. . . . . . . .     WORD MEMBER(SD)
     19  0002H     1  DOOR . . . . . . .     BYTE MEMBER(XINIT)
                      DOUBLE . . . . . .     BUILTIN         195 
     10  006CH     2  DRL. . . . . . . .     WORD MEMBER(SD)
     10  0044H     2  ENDSEG . . . . . .     WORD MEMBER(SD)
      2               FALSE. . . . . . .     LITERALLY        67  169 
      5               FARC . . . . . . .     LITERALLY
      6  0000H     1  FCB. . . . . . . .     BYTE ARRAY(1) EXTERNAL(0)      191  192  194  196  198  200 
      5               FCR. . . . . . . .     LITERALLY
      5               FDIRSYS. . . . . .     LITERALLY
      5               FDISKMAP . . . . .     LITERALLY
      5               FDRVUSR. . . . . .     LITERALLY
      5               FDRVUSR2 . . . . .     LITERALLY
      5               FEX. . . . . . . .     LITERALLY
      2               FF . . . . . . . .     LITERALLY
                      FINDB. . . . . . .     BUILTIN         141 
     21  0004H     1  FLAG . . . . . . .     BYTE MEMBER(CCB)
     10  0056H     2  FLAGS. . . . . . .     WORD MEMBER(SD)
    110  0000H     1  FLGS . . . . . . .     BYTE MEMBER(QPB)
      5               FNAME. . . . . . .     LITERALLY       192  194  196  198 
      5               FNAME2 . . . . . .     LITERALLY       200 
      5               FNAMELEN . . . . .     LITERALLY
      2               FOREVER. . . . . .     LITERALLY
      5               FRC. . . . . . . .     LITERALLY
      5               FRREC. . . . . . .     LITERALLY
      5               FRRECO . . . . . .     LITERALLY
      5               FRW. . . . . . . .     LITERALLY
      5               FS1. . . . . . . .     LITERALLY
      5               FTYPE. . . . . . .     LITERALLY       191 
      5               FTYPE2 . . . . . .     LITERALLY
      5               FTYPELEN . . . . .     LITERALLY
     32  0000H     1  FUNC . . . . . . .     BYTE PARAMETER        33 
     35  0000H     1  FUNC . . . . . . .     BYTE PARAMETER        36 
     28  0000H     1  FUNC . . . . . . .     BYTE PARAMETER        29 
     24  0000H     1  FUNC . . . . . . .     BYTE PARAMETER        25 
     52  0043H    15  GETCONSOLENUMBER .     PROCEDURE BYTE STACK=0008H
     72  00B3H    98  HELP . . . . . . .     PROCEDURE STACK=000CH          167  197  205  211 
                      HIGH . . . . . . .     BUILTIN         178 
    138  002AH     1  I. . . . . . . . .     BYTE       140  142  144  146  148  150 
     35  0000H     2  INFO . . . . . . .     WORD PARAMETER        36 
     32  0000H     2  INFO . . . . . . .     WORD PARAMETER        33 
     28  0000H     2  INFO . . . . . . .     WORD PARAMETER        30 
     24  0000H     2  INFO . . . . . . .     WORD PARAMETER        26 
     19  000AH     2  LCB. . . . . . . .     WORD MEMBER(XINIT)
     10  0086H     4  LCB. . . . . . . .     WORD ARRAY(2) MEMBER(SD)
     20               LCBSTRUCTURE . . .     LITERALLY
     10  008AH     1  LCKMAX . . . . . .     BYTE MEMBER(SD)
    138  002BH     1  LEN. . . . . . . .     BYTE       141  142 
      2               LF . . . . . . . .     LITERALLY        73   74   75   76   77   78   79   80   81   86   94
                                               98  166  180  187  204  210 
      2               LIT. . . . . . . .     LITERALLY         2    3    4    5   14   15   16   17   18   19   20
PL/M-86 COMPILER    VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE                                            PAGE  14


                                               22   23  100  101  102  103  104  105  106  107  108  109  172 
     10  0052H     2  LUL. . . . . . . .     WORD MEMBER(SD)
      3               MABORT . . . . . .     LITERALLY
     10  0076H     2  MAL. . . . . . . .     WORD MEMBER(SD)
      3               MATTACH. . . . . .     LITERALLY
     21  0010H     2  MAXBUFSIZ. . . . .     WORD MEMBER(CCB)           95  202 
    156  0004H     1  MAXLEN . . . . . .     BYTE PARAMETER AUTOMATIC       159  161 
      3               MCLOSEF. . . . . .     LITERALLY
      3               MCREADQ. . . . . .     LITERALLY
      3               MCURDSK. . . . . .     LITERALLY
      3               MCWRITEQ . . . . .     LITERALLY
      3               MDELAY . . . . . .     LITERALLY
      3               MDELETEF . . . . .     LITERALLY
      3               MDELETEQ . . . . .     LITERALLY
      3               MDETACH. . . . . .     LITERALLY
      3               MDIRBIOS . . . . .     LITERALLY
      3               MDISPATCH. . . . .     LITERALLY
     10  0058H     2  MDUL . . . . . . .     WORD MEMBER(SD)
      3               MERRMODE . . . . .     LITERALLY
     10  005AH     2  MFL. . . . . . . .     WORD MEMBER(SD)
      3               MGETCNS. . . . . .     LITERALLY       184 
      3               MGETLOGIN. . . . .     LITERALLY
      3               MGETPD . . . . . .     LITERALLY
     21  0008H     1  MIMIC. . . . . . .     BYTE MEMBER(CCB)
    156  0006H     1  MINLEN . . . . . .     BYTE PARAMETER AUTOMATIC       159  162 
      4               MISLEEP. . . . . .     LITERALLY
      4               MIWAKEUP . . . . .     LITERALLY
      3               MMAKEF . . . . . .     LITERALLY
      3               MMAKEQ . . . . . .     LITERALLY
     10  004CH     2  MMP. . . . . . . .     WORD MEMBER(SD)
     10  0046H     1  MODULEMAP. . . . .     BYTE MEMBER(SD)
     24  0000H        MON1 . . . . . . .     PROCEDURE EXTERNAL(2) STACK=0000H         40   44   50   73   74   75
                                               76   77   78   79   80   81   86   89   92   94   96   98  113  117
                                              166  181  187  204  210 
     28  0000H        MON2 . . . . . . .     PROCEDURE BYTE EXTERNAL(3) STACK=0000H         53  184 
     32  0000H        MON3 . . . . . . .     PROCEDURE WORD EXTERNAL(4) STACK=0000H         47 
     35  0000H        MON4 . . . . . . .     PROCEDURE POINTER EXTERNAL(5) STACK=0000H          183 
      3               MOPENF . . . . . .     LITERALLY
      3               MOPENQ . . . . . .     LITERALLY
      3               MPARSE . . . . . .     LITERALLY
     10  0040H     2  MPMSEG . . . . . .     WORD MEMBER(SD)
     10  007CH     2  MPMVERNUM. . . . .     WORD MEMBER(SD)
      3               MPRTBUF. . . . . .     LITERALLY        73   74   75   76   77   78   79   80   81   86   89
                                               92   94   96   98  166  187  204  210 
      3               MREADF . . . . . .     LITERALLY
      3               MREADQ . . . . . .     LITERALLY       113 
      3               MREADRF. . . . . .     LITERALLY
      3               MRESETDRV. . . . .     LITERALLY
      3               MSELECT. . . . . .     LITERALLY
      3               MSETATT. . . . . .     LITERALLY
      3               MSETCNS. . . . . .     LITERALLY
      3               MSETDMA. . . . . .     LITERALLY
      3               MSETPRIOR. . . . .     LITERALLY
      3               MSETUSR. . . . . .     LITERALLY
     21  0009H     1  MSOURCE. . . . . .     BYTE MEMBER(CCB)
      3               MSYSDAT. . . . . .     LITERALLY       183 
      3               MWRITEF. . . . . .     LITERALLY
PL/M-86 COMPILER    VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE                                            PAGE  15


      3               MWRITEQ. . . . . .     LITERALLY       117 
      3               MWRITERF . . . . .     LITERALLY
    110  0008H     8  NAME . . . . . . .     BYTE ARRAY(8) MEMBER(QPB)
     10  0049H     1  NCCB . . . . . . .     BYTE MEMBER(SD)
     19  0006H     1  NCCB . . . . . . .     BYTE MEMBER(XINIT)
     21  0007H     1  NCHAR. . . . . . .     BYTE MEMBER(CCB)
     10  0085H     1  NCIODEV. . . . . .     BYTE MEMBER(SD)
     10  0047H     1  NCNS . . . . . . .     BYTE MEMBER(SD)
     10  0083H     1  NCONDEV. . . . . .     BYTE MEMBER(SD)
    110  0001H     1  NET. . . . . . . .     BYTE MEMBER(QPB)
     10  004AH     1  NFLAGS . . . . . .     BYTE MEMBER(SD)
     19  0007H     1  NLST . . . . . . .     BYTE MEMBER(XINIT)
     10  0048H     1  NLST . . . . . . .     BYTE MEMBER(SD)
     10  0084H     1  NLSTDEV. . . . . .     BYTE MEMBER(SD)
    110  0004H     2  NMSGS. . . . . . .     WORD MEMBER(QPB)
      2               NO . . . . . . . .     LITERALLY
      2               NOPAGEMODEOFFSET .     LITERALLY
    172               NOSTATE. . . . . .     LITERALLY
     10  004EH     1  NSLAVES. . . . . .     BYTE MEMBER(SD)
    176  0026H     2  NUM. . . . . . . .     WORD       200  201  202 
     19  0005H     1  NVCNS. . . . . . .     BYTE MEMBER(XINIT)
      9  0000H     2  OFFSET . . . . . .     WORD MEMBER(SYSDATPTR)
     19  0000H     2  OFFSET . . . . . .     WORD MEMBER(XINITPTR)
     13  0000H     2  OFFSET . . . . . .     WORD MEMBER(CCBPTR)       184 
     10  008BH     1  OPMAX. . . . . . .     BYTE MEMBER(SD)
    175  002DH     1  OPTIONPTR. . . . .     BYTE
    156  0008H     4  OSTR . . . . . . .     POINTER PARAMETER AUTOMATIC         157  161 
      2               PAGELENOFFSET. . .     LITERALLY
     21  000AH     1  PC . . . . . . . .     BYTE MEMBER(CCB)
     58  005DH    86  PDECIMAL . . . . .     PROCEDURE PUBLIC STACK=0018H         87   95 
    174  0358H   336  PLMSTART . . . . .     PROCEDURE PUBLIC STACK=0022H
     10  006EH     2  PLR. . . . . . . .     WORD MEMBER(SD)
     58  0006H     2  PREC . . . . . . .     WORD PARAMETER AUTOMATIC        59   60   61   62   63   64 
     55  0052H    11  PRINTB . . . . . .     PROCEDURE PUBLIC STACK=000EH         65   88 
     38  0002H    19  PRINTCHAR. . . . .     PROCEDURE STACK=000AH           56   68 
     42  0015H    16  PRINTCONSOLEBUFFER     PROCEDURE STACK=000AH          180 
     10  005CH     2  PUL. . . . . . . .     WORD MEMBER(SD)
    110  0002H     2  QADDR. . . . . . .     WORD MEMBER(QPB)          112  116 
     21  0020H     2  QBUFF. . . . . . .     WORD MEMBER(CCB)
    101               QDSTRUCTURE. . . .     LITERALLY
    108               QFDEV. . . . . . .     LITERALLY
    104               QFHIDE . . . . . .     LITERALLY
    103               QFKEEP . . . . . .     LITERALLY
    102               QFMX . . . . . . .     LITERALLY
    107               QFRPL. . . . . . .     LITERALLY
    105               QFRSP. . . . . . .     LITERALLY
    106               QFTABLE. . . . . .     LITERALLY
     10  0074H     2  QLR. . . . . . . .     WORD MEMBER(SD)
     10  0060H     8  QMAU . . . . . . .     WORD ARRAY(4) MEMBER(SD)
    100               QNAMSIZ. . . . . .     LITERALLY       110 
    110  000EH    16  QPB. . . . . . . .     STRUCTURE       112  113  116  117 
     21  001EH     2  QPBBUFFPTR . . . .     WORD MEMBER(CCB)
     21  0018H     1  QPBFLAGS . . . . .     BYTE MEMBER(CCB)
     21  001CH     2  QPBNMSGS . . . . .     WORD MEMBER(CCB)
     21  001AH     2  QPBQADDR . . . . .     WORD MEMBER(CCB)
     21  0019H     1  QPBRESRVD. . . . .     BYTE MEMBER(CCB)
    109               QPBSTRUCTURE . . .     LITERALLY       110 
PL/M-86 COMPILER    VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE                                            PAGE  16


     21  0002H     2  QUEUE. . . . . . .     WORD MEMBER(CCB)
     10  005EH     2  QUL. . . . . . . .     WORD MEMBER(SD)
     21  0028H     2  R1 . . . . . . . .     WORD MEMBER(CCB)
     21  002AH     2  R2 . . . . . . . .     WORD MEMBER(CCB)
    111  018AH    26  READCHANGEMXQ. . .     PROCEDURE STACK=0008H          185 
     21  000DH     1  RESERVD. . . . . .     BYTE MEMBER(CCB)
     19  0003H     2  RESRVD1. . . . . .     BYTE ARRAY(2) MEMBER(XINIT)
     10  0068H     2  RLR. . . . . . . .     WORD MEMBER(SD)
     10  0042H     2  RSPSEG . . . . . .     WORD MEMBER(SD)
     10  0000H   145  SD . . . . . . . .     STRUCTURE BASED(SYSDATPOINTER)      184 
     11  0000H     1  SDBYTE . . . . . .     BYTE BASED(SYSDATPOINTER) ARRAY(1)
      2               SECTORLEN. . . . .     LITERALLY
     19  0002H     2  SEGMENT. . . . . .     WORD MEMBER(XINITPTR)
     13  0002H     2  SEGMENT. . . . . .     WORD MEMBER(CCBPTR)
      9  0002H     2  SEGMENT. . . . . .     WORD MEMBER(SYSDATPTR)
                      SHL. . . . . . . .     BUILTIN         143 
     84  0115H   117  SHOWSTATE. . . . .     PROCEDURE STACK=001EH          189  213 
                      SIZE . . . . . . .     BUILTIN         184 
     10  0070H     2  SLR. . . . . . . .     WORD MEMBER(SD)
     10  0008H    56  SPACE. . . . . . .     WORD ARRAY(28) MEMBER(SD)
     10  004BH     1  SRCHDISK . . . . .     BYTE MEMBER(SD)
     21  0005H     1  STARTCOL . . . . .     BYTE MEMBER(CCB)
     21  000EH     2  STATE. . . . . . .     WORD MEMBER(CCB)           90  186  193  195  207 
     85  000CH     2  STATE. . . . . . .     WORD        90   91 
    135  0004H     4  STR. . . . . . . .     POINTER PARAMETER AUTOMATIC         136  139  141  142  146 
    139  0000H     1  STRING . . . . . .     BYTE BASED(STR) ARRAY(1)       142  146 
     10  0000H     8  SUPMOD . . . . . .     WORD ARRAY(4) MEMBER(SD)
      8  0000H     4  SYSDATPOINTER. . .     POINTER           9   10   11  183  184 
      9  0000H     4  SYSDATPTR. . . . .     STRUCTURE AT
     10  008CH     4  SYSLTOT. . . . . .     WORD ARRAY(2) MEMBER(SD)
      2               TAB. . . . . . . .     LITERALLY        73   74   75   76   77   78   79   80 
    137  0020H     2  TEMP . . . . . . .     WORD       149  152 
     10  0050H     1  TEMPDISK . . . . .     BYTE MEMBER(SD)
     49  0034H    15  TERMINATE. . . . .     PROCEDURE STACK=0008H           82  215 
     10  0072H     2  THRDRT . . . . . .     WORD MEMBER(SD)
     19  0000H     1  TICK . . . . . . .     BYTE MEMBER(XINIT)
     10  0051H     1  TICKSPERSEC. . . .     BYTE MEMBER(SD)
     19  0001H     1  TICKSSEC . . . . .     BYTE MEMBER(XINIT)
     10  007EH     4  TOD. . . . . . . .     WORD ARRAY(2) MEMBER(SD)
     10  0082H     1  TOD_SEC. . . . . .     BYTE MEMBER(SD)
      2               TRUE . . . . . . .     LITERALLY        87   95  163 
    158  0000H     1  USERSTRING . . . .     BYTE BASED(USTR) ARRAY(1)      162  164 
     21  0024H     2  USLEEP . . . . . .     WORD MEMBER(CCB)
    156  000CH     4  USTR . . . . . . .     POINTER PARAMETER AUTOMATIC         157  158  161  162  164 
     58  0008H     2  V. . . . . . . . .     WORD PARAMETER AUTOMATIC        59   61   62 
    138  0029H     1  VAL. . . . . . . .     BYTE       142  143  146  147 
     21  000BH     1  VC . . . . . . . .     BYTE MEMBER(CCB)
      1  0002H        VCMODE . . . . . .     PROCEDURE STACK=0000H
     21  0016H     2  VCMXQ. . . . . . .     WORD MEMBER(CCB)          112  116 
     84  0004H     2  VERB . . . . . . .     WORD PARAMETER AUTOMATIC        85   89 
     10  007AH     2  VERNUM . . . . . .     WORD MEMBER(SD)
    171  0024H     2  VERS . . . . . . .     WORD INITIAL         177  178 
     10  0078H     2  VERSION. . . . . .     WORD MEMBER(SD)
     46  0025H    15  VERSION. . . . . .     PROCEDURE WORD STACK=0008H          177 
     21  0012H     2  VINQ . . . . . . .     WORD MEMBER(CCB)
     21  0014H     2  VOUTQ. . . . . . .     WORD MEMBER(CCB)
     21  0026H     2  VSLEEP . . . . . .     WORD MEMBER(CCB)
PL/M-86 COMPILER    VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE                                            PAGE  17


    115  01A4H    26  WRITECHANGEMXQ . .     PROCEDURE STACK=0008H
     19  0000H    12  XINIT. . . . . . .     STRUCTURE BASED(XINITPOINTER)
     19               XINITOFFSET. . . .     LITERALLY
     19  0008H     4  XINITPOINTER . . .     POINTER          19 
     19  0008H     4  XINITPTR . . . . .     STRUCTURE AT
     58  0004H     1  ZEROSUP. . . . . .     BYTE PARAMETER AUTOMATIC        59   64   67 



MODULE INFORMATION:

     CODE AREA SIZE     = 04A8H   1192D
     CONSTANT AREA SIZE = 024CH    588D
     VARIABLE AREA SIZE = 002EH     46D
     MAXIMUM STACK SIZE = 0022H     34D
     590 LINES READ
     0 PROGRAM ERROR(S)

END OF PL/M-86 COMPILATION
