$PAGE "GLOBAL DECLARATIONS: GENERAL"                                    00010000
define                                                                  00012000
       abs               = absolute # << for addressing      >>         00014000
      ,asmb              = assemble # << for statements      >>         00016000
                                                                        00018000
                                                                        00020000
        << for CASE [*] expression OF compound statement     >>         00022000
      ,case'begin        = BEGIN <<of case>> #                          00024000
      ,case'end          = END <<of case>> #                            00026000
                                                                        00028000
      ,cc                = (6:2) # << condition code         >>         00030000
                                   << extraction of the      >>         00032000
                                   << status register        >>         00034000
                                                                        00036000
      ,dup'              = asmb(dup) #                                  00038000
      ,ddup'             = asmb(ddup) #                                 00040000
                                                                        00042000
                                                                        00044000
        << for interrupt disabling/enabling                  >>         00046000
      ,disable           = assemble(sed 0) #                            00048000
      ,enable            = assemble(sed 1) #                            00050000
                                                                        00052000
                                                                        00054000
        << for psuedo (process launching) disabling/enabling >>         00056000
      ,pdisable          = assemble(psdb) #                             00058000
      ,penable           = assemble(pseb) #                             00060000
                                                                        00062000
                                                                        00064000
        << for setting condition codes for procedure returns >>         00066000
      ,set'cc            = push(status);                                00068000
                           status'.cc := tos.cc #                       00070000
      ,set'ccg           = status'.cc := ccg #                          00072000
      ,set'ccl           = status'.cc := ccl #                          00074000
      ,set'cce           = status'.cc := cce #                          00076000
      ,set'ccne          = status'.cc := ccne #                         00078000
                                                                        00080000
                                                                        00082000
        << for SCAN source WHILE/UNTIL testword [,sdec]      >>         00084000
      ,terminal'char     = carry #                                      00086000
      ,test'char         = nocarry #                                    00088000
                                                                        00090000
                                                                        00092000
        << for count and address transformations             >>         00094000
      ,to'byte           = &lsl(1) #<< convert from a word   >>         00096000
                                    << count/address to a    >>         00098000
                                    << byte count/address    >>         00100000
      ,to'word           = &lsr(1) #<< convert from a byte   >>         00102000
                                    << count/addres to a     >>         00104000
                                    << word count/address    >>         00106000
                                                                        00108000
      ,from'word'to'byte = &lsl(1) #<< convert from a word   >>         00110000
                                    << count/address to a    >>         00112000
                                    << byte count/address    >>         00114000
      ,from'byte'to'word = &lsr(1) #<< convert from a byte   >>         00116000
                                    << count/address to a    >>         00118000
                                    << word count/address    >>         00120000
                                                                        00122000
      ,from'word'to'sector = &lsr(7) #<< convert from a word >>         00124000
                             << quantity to a sector quantity>>         00126000
                             << without rounding             >>         00128000
      ,from'sector'to'word = &lsl(7) #<< convert from a      >>         00130000
                             << sector quantity to a word    >>         00132000
                             << quantity without rounding    >>         00134000
                                                                        00136000
        << for trap arming and disarming                     >>         00138000
      ,turnofftraps      = push(status);                                00140000
                           tos.(2:1) := 0; << set false >>              00142000
                           set(status) #                                00144000
      ,turnontraps       = push(status);                                00146000
                           tos.(2:1) := 1; << set true >>               00148000
                           set(status) #                                00150000
                                                                        00152000
        << for logical expressions >>                                   00154000
      ,is                = = #                                          00156000
      ,is'nil            = = nil #                                      00158000
      ,is'one            = = 1 #                                        00160000
      ,is'zero           = = 0 #                                        00162000
                                                                        00164000
      ,is'not            = <> #                                         00166000
      ,is'not'nil        = <> nil #                                     00168000
      ,is'not'one        = <> 1 #                                       00170000
      ,is'not'zero       = <> 0 #                                       00172000
                                                                        00174000
;                                                                       00176000
                                                                        00178000
equate                                                                  00180000
        << for numeric quantiy evaluation >>                            00182000
       cce               = 2 << equal >>                                00184000
      ,ccg               = 0 << greater than >>                         00186000
      ,ccl               = 1 << less than >>                            00188000
      ,ccne              = 3 << undefined >>                            00190000
                                                                        00192000
        << for character type evaluation >>                             00194000
      ,cc'special        = ccl << = 1 >>                                00196000
      ,cc'alpha          = cce << = 2 >>                                00198000
      ,cc'numeric        = ccg << = 0 >>                                00200000
                                                                        00202000
      ,nil               = 0                                            00204000
      ,none              = 0                                            00206000
      ,null              = 0                                            00208000
                                                                        00210000
        << ascii character equivalents >>                               00212000
      ,apostrophe        = "'"  << = %54, = #44 >>                      00214000
      ,bel               = %7   << = #7, bell >>                        00216000
      ,blank             = " "  << = %40, = #32 >>                      00218000
      ,blanks            = "  " << = %020040, = #8224 >>                00220000
      ,cr                = %15  << = #13, carriage return >>            00222000
      ,esc               = %33  << = #27 >>                             00224000
      ,escape            = esc  << = %33, = #27 >>                      00226000
      ,lf                = %12  << = #10, line feed >>                  00228000
      ,nul               = %0   << = #0 >>                              00230000
      ,quote             = """" << = %42, = #34 >>                      00232000
      ,si                = %17  << = #15, shift in >>                   00234000
      ,so                = %16  << = #14, shift out >>                  00236000
      ,space             = " "  << = %40, = #32 >>                      00238000
      ,spaces            = "  " << = %020040, = #8224 >>                00240000
                                                                        00242000
        << value equivalents >>                                         00244000
      ,one               = 1                                            00246000
      ,zero              = 0                                            00248000
;                                                                       00250000
                                                                        00252000
integer                                                                 00254000
        x                 = x                                           00256000
       ,delta'Q           = Q-0 << delta-Q of stack marker   >>         00258000
       ,status'           = Q-1 << caller's status register  >>         00260000
       ,rel'P             = Q-2 << return address            >>         00262000
       ,index'            = Q-3 << caller's index register   >>         00264000
                                                                        00266000
       ,info'str'adr      = Q-5 << for outer block           >>         00268000
       ,info'str'len      = Q-6 << for outer block           >>         00270000
;                                                                       00272000
                                                                        00274000
logical                                                                 00276000
        parm'mask         = Q-4 << for outer block and       >>         00278000
                                << procedures                >>         00280000
       ,parm'mask1        = Q-4 << for # parms <= 16         >>         00282000
       ,parm'mask2        = Q-5 << for # parms > 16          >>         00284000
                                                                        00286000
       ,msw               = s-1 << of a double word on TOS   >>         00288000
       ,lsw               = s-0 << of a double word on TOS   >>         00290000
;                                                                       00292000
                                                                        00294000
$PAGE "GLOBAL DECLARATIONS: STACK RELATED VARIABLES & POINTERS"         00296000
byte pointer                                                            00298000
             bp'db0          = DB+0                                     00300000
            ,bp'db1          = DB+1                                     00302000
            ,bp'db2          = DB+2                                     00304000
            ,bp'db3          = DB+3                                     00306000
            ,bp'db4          = DB+4                                     00308000
                                                                        00310000
            ,bp's0           = S-0                                      00312000
            ,bp's1           = S-1                                      00314000
            ,bp's2           = S-2                                      00316000
            ,bp's3           = S-3                                      00318000
            ,bp's4           = S-4                                      00320000
;                                                                       00322000
                                                                        00324000
double                                                                  00326000
       d's0              = s-1                                          00328000
;                                                                       00330000
                                                                        00332000
integer                                                                 00334000
        i'db0               = DB+0                                      00336000
       ,i'db1               = DB+1                                      00338000
       ,i'db2               = DB+2                                      00340000
       ,i'db3               = DB+3                                      00342000
       ,i'db4               = DB+4                                      00344000
                                                                        00346000
       ,i's0                = S-0                                       00348000
       ,i's1                = S-1                                       00350000
       ,i's2                = S-2                                       00352000
       ,i's3                = S-3                                       00354000
       ,i's4                = S-4                                       00356000
;                                                                       00358000
                                                                        00360000
logical                                                                 00362000
        db0               = DB+0                                        00364000
       ,db1               = DB+1                                        00366000
       ,db2               = DB+2                                        00368000
       ,db3               = DB+3                                        00370000
       ,db4               = DB+4                                        00372000
                                                                        00374000
       ,s0                = S-0                                         00376000
       ,s1                = S-1                                         00378000
       ,s2                = S-2                                         00380000
       ,s3                = S-3                                         00382000
       ,s4                = S-4                                         00384000
;                                                                       00386000
                                                                        00388000
logical pointer                                                         00390000
                p'db0           = DB+0                                  00392000
               ,p'db1           = DB+1                                  00394000
               ,p'db2           = DB+2                                  00396000
               ,p'db3           = DB+3                                  00398000
               ,p'db4           = DB+4                                  00400000
                                                                        00402000
               ,p's0            = S-0                                   00404000
               ,p's1            = S-1                                   00406000
               ,p's2            = S-2                                   00408000
               ,p's3            = S-3                                   00410000
               ,p's4            = S-4                                   00412000
;                                                                       00414000
                                                                        00416000
$PAGE "GLOBAL DECLARARIONS: UTILITY SUBROUTINES: MFDS, MTDS"            00418000
define                                                                  00420000
                                                                        00422000
                                                                        00424000
       declare'move'from'data'segment =                                 00426000
                                                                        00428000
Subroutine mfds(target, source'dseg'num, source'offset, word'cnt);      00430000
value           target, source'dseg'num, source'offset, word'cnt ;      00432000
logical pointer target                                           ;      00434000
logical                 source'dseg'num, source'offset, word'cnt ;      00436000
begin                                                                   00438000
                                                                        00440000
  assemble(stax; mfds 0; ldxa);                                         00442000
                                                                        00444000
end <<mfds>> #                                                          00446000
                                                                        00448000
                                                                        00450000
       ,declare'move'to'data'segment =                                  00452000
                                                                        00454000
Subroutine mtds(target'dseg'num, target'offset, source, word'cnt);      00456000
value           target'dseg'num, target'offset, source, word'cnt ;      00458000
logical         target'dseg'num, target'offset,         word'cnt ;      00460000
logical pointer                                 source           ;      00462000
begin                                                                   00464000
                                                                        00466000
  assemble(stax; mtds 0; ldxa);                                         00468000
                                                                        00470000
end <<mtds>> #                                                          00472000
                                                                        00474000
;                                                                       00476000
