atype.equate 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. % ATYPE EQUATE
  2. %
  3. % CLUMAC assembler: type-related equates
  4. _typlo = 0400;
  5. _refbit = 0400000;
  6. _relbit = 0200000;
  7. _repbit = 0200000;
  8. _gcbit = 0100000;
  9. _typmsk = 07777;
  10. % offsets for blocks used in the CLU support system.
  11. % arep,array_rep
  12. _ar_cod = 0; % tarep+low_bound
  13. _ar_rel = 1; % [rsb,,rel] -size,,rel to usable stuff in vector
  14. _ar_vec = 2; % [rsb,,ref] predict,,ref to real vector
  15. % crep,call_block_rep
  16. _pc_cod = 0; % tcrep+size (in words)
  17. _pc_set = 1; % [rsb] the setup for the procedure (_pc_set=_en_set !)
  18. _pc_num = 2; % [rsb] the number of arguments given in the call
  19. _pc_str = 3; % [ref] the external name (or operation name)
  20. _pc_typ = 4; % [ref] the cluster type (if an operation)
  21. _pc_par = 5; % [ref] parms given for the procedure
  22. _pc_dat = 6; % any more words are refs
  23. % drep,descriptor_rep
  24. _td_cod = 0; % [rsb] code for type desc & length
  25. _td_fix = 1; % [ref] the fixed up value for the descriptor (init 0)
  26. _td_opt = 2; % [rsb] the variety of type desc
  27. _td_nam = 3; % [ref] string ref for external name (or 0)
  28. _td_arg = 4; % [ref] to parms or arguments (td,sd,pt,it,ed,zd)
  29. % [ref] to cluster desc (rt,xr)
  30. % [0,,rsb] position of parm (pa)
  31. _td_rtn = 5; % [ref] to return types (for pt,it)
  32. % [ref] to proc parms (rt,xr)
  33. _td_sig = 6; % [ref] to signal types (for pt,it)
  34. % option codes in _td_opt (must be single bits)
  35. _tdc_td = 1; % simple type desc
  36. _tdc_sd = 2; % selected type desc
  37. _tdc_pa = 4; % cluster/proc parm
  38. _tdc_rt = 010; % return type desc
  39. _tdc_pt = 020; % proc type desc
  40. _tdc_it = 040; % iterator type desc
  41. _tdc_ed = 0100; % exception desc
  42. _tdc_xr = 0200; % external proc desc
  43. _tdc_pp = 0400; % proc parm dependent
  44. _tdc_cp = 01000; % cluster parm dependent
  45. _tdc_zd = 02000; % zdesc (for records/oneofs)
  46. % erep,entry_rep
  47. _en_cod = 0; % terep+size (in words)
  48. _en_set = 1; % [rsb,,rel] the setup inst to XCT (_en_set=_pc_set !)
  49. _en_lpr = 2; % [ref,,ref] the (lr,,pr) pair
  50. _en_vi = 3; % [ref+1,,rsb] the variable init pair (ref+1,,len)
  51. _en_par = 4; % [ref,,ref] the (proc parm,,cluster parm) pair
  52. _en_tr = 5; % [rsb,,ref] the trace info (if any)
  53. _en_typ = 6; % [ref] the type (or type desc) for this entry
  54. _en_nxt = 7; % [ref] the chain of entry blocks (for parameters)
  55. _en_dat = 010; % any more words are refs
  56. _en_odv = 010; % [ref] optional vector to own data
  57. % prep,pure_part_rep
  58. _pr_cod = 0; % tprep+size (in words)
  59. _pr_err = 1; % [rsb,,rsb] LH is prc codes, RH is disp to error info
  60. _pr_cut = 2; % [rsb] stack cutback on exit
  61. _pr_nam = 3; % [rsb] disp to names in pr block
  62. _pr_go = 4; % [rsb] first word of code here
  63. % further words are [rsb], except that
  64. % [ref]'s start where pr_err is an offset to
  65. % prc codes
  66. _prc_ni = 1; % no interrupts while this proc is current
  67. _prc_cp = 2; % this proc is dependent on cluster parms
  68. _prc_na = 4; % no array chopping while in this procedure
  69. _prc_pp = 010; % this proc is dependent on proc parms
  70. _prc_it = 020; % this proc is really an iterator
  71. _prc_ma = 040; % this proc is multi-argument (top one gives #)
  72. % orep,oneof_rep
  73. _on_cod = 0; % torep+tag
  74. _on_ref = 1; % [ref] info part
  75. % srep,string_rep
  76. _st_cod = 0; % tsrep+number_of_chars
  77. _st_dat = 1; % [rsb] characters immediately follow
  78. % vec,vector
  79. _ve_cod = 0; % tvec+size (in words)
  80. _ve_dat = 1; % [ref] references follow
  81. % wvec,word_vector
  82. _wv_cod = 0; % twvec+size (in words)
  83. _wv_dat = 1; % [rsb] words of raw seething bits follow
  84. % xvec,ref_vector
  85. _xv_cod = 0; % txvec+size (in words)
  86. _xv_dat = 1; % [rsb,,ref] words in remainder
  87. _fb_cod = 0;
  88. _fb_dev = 1;
  89. _fb_nm1 = 2;
  90. _fb_nm2 = 3;
  91. _fb_usr = 4;
  92. _fb_ = 5;
  93. _typlen = 0100;
  94. _typesd = _typlo-2;
  95. % The most basic type codes to occur as LH of references
  96. _tref = _typlo+_refbit;
  97. _txref = _tref+1;
  98. _trel = _txref+1+_relbit;
  99. _txrel = _trel+1;
  100. % The most basic type codes to appear as LH of 1st words
  101. _tarep = _txrel+1-_refbit-_relbit+_repbit;
  102. _tcrep = _tarep+1;
  103. _tdrep = _tcrep+1;
  104. _terep = _tdrep+1;
  105. _tprep = _terep+1;
  106. _torep = _tprep+1;
  107. _tsrep = _torep+1;
  108. _tvec = _tsrep+1;
  109. _twvec = _tvec+1;
  110. _txrep = _twvec+1;
  111. _tint = _txrep+1-_repbit;
  112. _tbool = _tint+1;
  113. _tchar = _tbool+1;
  114. _ttype = _tchar+1;
  115. _tmrtn = _ttype+1;
  116. _tchan = _tmrtn+1;
  117. _tstr = _tchan+1;
  118. _str = _tstr+_refbit;
  119. _treal = _tstr+1;
  120. _tpcb = _treal+1+_refbit; % procedure call block
  121. _ttd = _tpcb+1; % normal-type descriptor
  122. _tppd = _ttd+1; % proc parm desc
  123. _tcpd = _tppd+1; % cluster parm desc
  124. _tnull = _tcpd+1-_refbit;
  125. _tnone = _tnull+1; % null return
  126. _tany = _tnone+1; % type any
  127. % User-defined types from here on