summaryrefslogtreecommitdiff
path: root/macros/text1
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/text1
Initial commit
Diffstat (limited to 'macros/text1')
-rw-r--r--macros/text1/blocks/appendix.texblock16
-rw-r--r--macros/text1/blocks/asism.texblock5
-rw-r--r--macros/text1/blocks/asisp.texblock5
-rw-r--r--macros/text1/blocks/bibliog.texblock10
-rw-r--r--macros/text1/blocks/bquotem.texblock7
-rw-r--r--macros/text1/blocks/bquotep.texblock7
-rw-r--r--macros/text1/blocks/chapter.texblock13
-rw-r--r--macros/text1/blocks/contents.texblock35
-rw-r--r--macros/text1/blocks/enotem.texblock11
-rw-r--r--macros/text1/blocks/enotep.texblock11
-rw-r--r--macros/text1/blocks/figurem.texblock8
-rw-r--r--macros/text1/blocks/figurep.texblock8
-rw-r--r--macros/text1/blocks/fnotem.texblock14
-rw-r--r--macros/text1/blocks/fnotep.texblock14
-rw-r--r--macros/text1/blocks/fontm.texblock6
-rw-r--r--macros/text1/blocks/fontp.texblock6
-rw-r--r--macros/text1/blocks/index.texblock8
-rw-r--r--macros/text1/blocks/label.texblock6
-rw-r--r--macros/text1/blocks/lists.texblock13
-rw-r--r--macros/text1/blocks/maillbls.texblock17
-rw-r--r--macros/text1/blocks/marnote.texblock6
-rw-r--r--macros/text1/blocks/multicol.texblock10
-rw-r--r--macros/text1/blocks/pagem.texblock11
-rw-r--r--macros/text1/blocks/pagep.texblock11
-rw-r--r--macros/text1/blocks/parm.texblock6
-rw-r--r--macros/text1/blocks/parp.texblock11
-rw-r--r--macros/text1/blocks/part.texblock20
-rw-r--r--macros/text1/blocks/preface.texblock12
-rw-r--r--macros/text1/blocks/runfoot.texblock6
-rw-r--r--macros/text1/blocks/runhead.texblock6
-rw-r--r--macros/text1/blocks/subheada.texblock11
-rw-r--r--macros/text1/blocks/subheadb.texblock10
-rw-r--r--macros/text1/blocks/subheadc.texblock9
-rw-r--r--macros/text1/blocks/subheadd.texblock7
-rw-r--r--macros/text1/blocks/tablem.texblock8
-rw-r--r--macros/text1/blocks/tablep.texblock9
-rw-r--r--macros/text1/blocks/talaris.texblock6
-rw-r--r--macros/text1/blocks/titlepg.texblock4
-rw-r--r--macros/text1/changes.aug9113
-rw-r--r--macros/text1/changes.aug9210
-rw-r--r--macros/text1/changes.aug9311
-rw-r--r--macros/text1/changes.dec9311
-rw-r--r--macros/text1/changes.feb918
-rw-r--r--macros/text1/changes.jan9211
-rw-r--r--macros/text1/changes.jun9111
-rw-r--r--macros/text1/changes.jun9614
-rw-r--r--macros/text1/changes.mar9110
-rw-r--r--macros/text1/changes.mar9216
-rw-r--r--macros/text1/changes.may9228
-rw-r--r--macros/text1/changes.nov9017
-rw-r--r--macros/text1/changes.nov929
-rw-r--r--macros/text1/changes.nov9416
-rw-r--r--macros/text1/changes.sep9112
-rw-r--r--macros/text1/cms_help_files/1--footn.help4--f20
-rw-r--r--macros/text1/cms_help_files/1--verti.helpvert21
-rw-r--r--macros/text1/cms_help_files/10noter.helpfoot14
-rw-r--r--macros/text1/cms_help_files/11noter.helpfoot23
-rw-r--r--macros/text1/cms_help_files/12noter.helpfoot16
-rw-r--r--macros/text1/cms_help_files/1block.helpbloc19
-rw-r--r--macros/text1/cms_help_files/1every.helpfoot21
-rw-r--r--macros/text1/cms_help_files/1everye.helpendn21
-rw-r--r--macros/text1/cms_help_files/1everyf.helpfoot21
-rw-r--r--macros/text1/cms_help_files/1numbe.helpsubh13
-rw-r--r--macros/text1/cms_help_files/1number.helpsubh13
-rw-r--r--macros/text1/cms_help_files/2--footn.help4--f15
-rw-r--r--macros/text1/cms_help_files/2--verti.helpvert15
-rw-r--r--macros/text1/cms_help_files/2block.helpbloc16
-rw-r--r--macros/text1/cms_help_files/2footn.helpfoot21
-rw-r--r--macros/text1/cms_help_files/2footno.helpfoot21
-rw-r--r--macros/text1/cms_help_files/2skipbe.helpendn21
-rw-r--r--macros/text1/cms_help_files/2title.helpsubh20
-rw-r--r--macros/text1/cms_help_files/3befor.helpfoot21
-rw-r--r--macros/text1/cms_help_files/3block.helpmenu14
-rw-r--r--macros/text1/cms_help_files/3every.helpbloc21
-rw-r--r--macros/text1/cms_help_files/3incon.helpsubh15
-rw-r--r--macros/text1/cms_help_files/3incont.helpsubh15
-rw-r--r--macros/text1/cms_help_files/3skipb.helpfoot22
-rw-r--r--macros/text1/cms_help_files/3skipbe.helpfoot22
-rw-r--r--macros/text1/cms_help_files/3textre.helpendn17
-rw-r--r--macros/text1/cms_help_files/4footn.helpmenu18
-rw-r--r--macros/text1/cms_help_files/4refer.helpfoot16
-rw-r--r--macros/text1/cms_help_files/4skipaf.helpfoot22
-rw-r--r--macros/text1/cms_help_files/4skipb.helpbloc17
-rw-r--r--macros/text1/cms_help_files/4textre.helpendn14
-rw-r--r--macros/text1/cms_help_files/5refer.helpfoot16
-rw-r--r--macros/text1/cms_help_files/5skipa.helpbloc18
-rw-r--r--macros/text1/cms_help_files/5textre.helpendn23
-rw-r--r--macros/text1/cms_help_files/5textre.helpfoot17
-rw-r--r--macros/text1/cms_help_files/6notere.helpendn17
-rw-r--r--macros/text1/cms_help_files/6refer.helpfoot14
-rw-r--r--macros/text1/cms_help_files/6textre.helpfoot17
-rw-r--r--macros/text1/cms_help_files/7notere.helpendn14
-rw-r--r--macros/text1/cms_help_files/7refer.helpfoot21
-rw-r--r--macros/text1/cms_help_files/7textre.helpfoot14
-rw-r--r--macros/text1/cms_help_files/8notere.helpendn23
-rw-r--r--macros/text1/cms_help_files/8textre.helpfoot23
-rw-r--r--macros/text1/cms_help_files/9notere.helpendn16
-rw-r--r--macros/text1/cms_help_files/9notere.helpfoot17
-rw-r--r--macros/text1/cms_help_files/aen.helpmark72
-rw-r--r--macros/text1/cms_help_files/afn.helpmark58
-rw-r--r--macros/text1/cms_help_files/aib.helpmark84
-rw-r--r--macros/text1/cms_help_files/aie.helpmark37
-rw-r--r--macros/text1/cms_help_files/aif.helpmark76
-rw-r--r--macros/text1/cms_help_files/anumbe.helpsubh13
-rw-r--r--macros/text1/cms_help_files/anumber.helpsubh13
-rw-r--r--macros/text1/cms_help_files/apf.helpmark93
-rw-r--r--macros/text1/cms_help_files/app.helpmark30
-rw-r--r--macros/text1/cms_help_files/appendix.helpbloc7
-rw-r--r--macros/text1/cms_help_files/appendix.helpmenu103
-rw-r--r--macros/text1/cms_help_files/asism.helpbloc7
-rw-r--r--macros/text1/cms_help_files/asisp.helpbloc7
-rw-r--r--macros/text1/cms_help_files/bd.helpmark48
-rw-r--r--macros/text1/cms_help_files/bi.helpmark36
-rw-r--r--macros/text1/cms_help_files/bib.helpmark43
-rw-r--r--macros/text1/cms_help_files/bibentry.helpmark57
-rw-r--r--macros/text1/cms_help_files/bibliog.helpbloc7
-rw-r--r--macros/text1/cms_help_files/bibliogr.helpmark54
-rw-r--r--macros/text1/cms_help_files/bie.helpmark51
-rw-r--r--macros/text1/cms_help_files/bif.helpmark248
-rw-r--r--macros/text1/cms_help_files/bothpage.helpmenu12
-rw-r--r--macros/text1/cms_help_files/bottomma.helppage21
-rw-r--r--macros/text1/cms_help_files/bottomti.helpboth28
-rw-r--r--macros/text1/cms_help_files/bottomti.helpeven28
-rw-r--r--macros/text1/cms_help_files/bottomti.helpoddp28
-rw-r--r--macros/text1/cms_help_files/bqb.helpmark61
-rw-r--r--macros/text1/cms_help_files/bqe.helpmark47
-rw-r--r--macros/text1/cms_help_files/bqf.helpmark76
-rw-r--r--macros/text1/cms_help_files/bquotem.helpbloc7
-rw-r--r--macros/text1/cms_help_files/bquotep.helpbloc7
-rw-r--r--macros/text1/cms_help_files/break.helpmark36
-rw-r--r--macros/text1/cms_help_files/btitle.helpsubh20
-rw-r--r--macros/text1/cms_help_files/btitlef.helpsubh18
-rw-r--r--macros/text1/cms_help_files/bul.helpmark44
-rw-r--r--macros/text1/cms_help_files/cc.helpmark33
-rw-r--r--macros/text1/cms_help_files/cents.helpmark23
-rw-r--r--macros/text1/cms_help_files/chap.helpmark48
-rw-r--r--macros/text1/cms_help_files/chapter.helpbloc7
-rw-r--r--macros/text1/cms_help_files/chf.helpmark98
-rw-r--r--macros/text1/cms_help_files/chrono.changes3
-rw-r--r--macros/text1/cms_help_files/cincon.helpsubh15
-rw-r--r--macros/text1/cms_help_files/cincont.helpsubh15
-rw-r--r--macros/text1/cms_help_files/cl.helpmark38
-rw-r--r--macros/text1/cms_help_files/clb.helpmark68
-rw-r--r--macros/text1/cms_help_files/cle.helpmark38
-rw-r--r--macros/text1/cms_help_files/contents.helpbloc7
-rw-r--r--macros/text1/cms_help_files/coul.helpmark21
-rw-r--r--macros/text1/cms_help_files/db.helpmark45
-rw-r--r--macros/text1/cms_help_files/dbm.helpmark26
-rw-r--r--macros/text1/cms_help_files/dbrs.helpmark27
-rw-r--r--macros/text1/cms_help_files/die.helpmark32
-rw-r--r--macros/text1/cms_help_files/dsp.helpmark41
-rw-r--r--macros/text1/cms_help_files/el.helpmark44
-rw-r--r--macros/text1/cms_help_files/enf.helpmark129
-rw-r--r--macros/text1/cms_help_files/enotem.helpbloc7
-rw-r--r--macros/text1/cms_help_files/enotep.helpbloc7
-rw-r--r--macros/text1/cms_help_files/ep.helpmark38
-rw-r--r--macros/text1/cms_help_files/epm.helpmark24
-rw-r--r--macros/text1/cms_help_files/ex.helpmark26
-rw-r--r--macros/text1/cms_help_files/fif.helpmark86
-rw-r--r--macros/text1/cms_help_files/fig.helpmark110
-rw-r--r--macros/text1/cms_help_files/figurem.helpbloc7
-rw-r--r--macros/text1/cms_help_files/figurep.helpbloc7
-rw-r--r--macros/text1/cms_help_files/fixf.helpmark34
-rw-r--r--macros/text1/cms_help_files/fnf.helpmark139
-rw-r--r--macros/text1/cms_help_files/fnotem.helpbloc8
-rw-r--r--macros/text1/cms_help_files/fnotep.helpbloc8
-rw-r--r--macros/text1/cms_help_files/font.helpmark51
-rw-r--r--macros/text1/cms_help_files/fontm.helpbloc7
-rw-r--r--macros/text1/cms_help_files/fontp.helpbloc8
-rw-r--r--macros/text1/cms_help_files/footnote.helpmark63
-rw-r--r--macros/text1/cms_help_files/frac.helpmark52
-rw-r--r--macros/text1/cms_help_files/frenchsp.helpmark53
-rw-r--r--macros/text1/cms_help_files/goodbrea.helpmark33
-rw-r--r--macros/text1/cms_help_files/halign.helpmark177
-rw-r--r--macros/text1/cms_help_files/hbox.helpmark36
-rw-r--r--macros/text1/cms_help_files/hin.helpmark48
-rw-r--r--macros/text1/cms_help_files/hof.helpmark54
-rw-r--r--macros/text1/cms_help_files/hon.helpmark54
-rw-r--r--macros/text1/cms_help_files/hp.helpmark48
-rw-r--r--macros/text1/cms_help_files/hrule.helpmark44
-rw-r--r--macros/text1/cms_help_files/hs.helpmark47
-rw-r--r--macros/text1/cms_help_files/hsize.helpmark49
-rw-r--r--macros/text1/cms_help_files/incl.helpmark89
-rw-r--r--macros/text1/cms_help_files/indent.helpmark41
-rw-r--r--macros/text1/cms_help_files/index.helpbloc7
-rw-r--r--macros/text1/cms_help_files/input.helpmark46
-rw-r--r--macros/text1/cms_help_files/isk.helpmark46
-rw-r--r--macros/text1/cms_help_files/it.helpmark41
-rw-r--r--macros/text1/cms_help_files/italicfa.helpmark21
-rw-r--r--macros/text1/cms_help_files/item.helpmark45
-rw-r--r--macros/text1/cms_help_files/ix.helpmark311
-rw-r--r--macros/text1/cms_help_files/ixf.helpmark260
-rw-r--r--macros/text1/cms_help_files/ju.helpmark42
-rw-r--r--macros/text1/cms_help_files/la.helpmark44
-rw-r--r--macros/text1/cms_help_files/label.helpbloc7
-rw-r--r--macros/text1/cms_help_files/laf.helpmark120
-rw-r--r--macros/text1/cms_help_files/lbr.helpmark45
-rw-r--r--macros/text1/cms_help_files/leader.helpmark47
-rw-r--r--macros/text1/cms_help_files/letter.helpmode7
-rw-r--r--macros/text1/cms_help_files/lib.helpmark50
-rw-r--r--macros/text1/cms_help_files/lie.helpmark39
-rw-r--r--macros/text1/cms_help_files/lif.helpmark128
-rw-r--r--macros/text1/cms_help_files/lil.helpmark43
-rw-r--r--macros/text1/cms_help_files/lin.helpmark69
-rw-r--r--macros/text1/cms_help_files/line.helpmark56
-rw-r--r--macros/text1/cms_help_files/lint.helpmark25
-rw-r--r--macros/text1/cms_help_files/lir.helpmark46
-rw-r--r--macros/text1/cms_help_files/lists.helpbloc7
-rw-r--r--macros/text1/cms_help_files/lnf.helpmark24
-rw-r--r--macros/text1/cms_help_files/lr.helpmark44
-rw-r--r--macros/text1/cms_help_files/markup.helpmenu176
-rw-r--r--macros/text1/cms_help_files/marnote.helpbloc7
-rw-r--r--macros/text1/cms_help_files/mathdefa.helpmark24
-rw-r--r--macros/text1/cms_help_files/mcf.helpmark260
-rw-r--r--macros/text1/cms_help_files/memo.helpmode7
-rw-r--r--macros/text1/cms_help_files/mi.helpmark31
-rw-r--r--macros/text1/cms_help_files/mn.helpmark30
-rw-r--r--macros/text1/cms_help_files/mnf.helpmark53
-rw-r--r--macros/text1/cms_help_files/msp.helpmark91
-rw-r--r--macros/text1/cms_help_files/multicol.helpbloc7
-rw-r--r--macros/text1/cms_help_files/nc.helpmark49
-rw-r--r--macros/text1/cms_help_files/nin.helpmark46
-rw-r--r--macros/text1/cms_help_files/nobreak.helpmark39
-rw-r--r--macros/text1/cms_help_files/nonfrenc.helpmark45
-rw-r--r--macros/text1/cms_help_files/np.helpmark36
-rw-r--r--macros/text1/cms_help_files/ntp.helpmark47
-rw-r--r--macros/text1/cms_help_files/numl.helpmark20
-rw-r--r--macros/text1/cms_help_files/oc.helpmark52
-rw-r--r--macros/text1/cms_help_files/opm.helpmark24
-rw-r--r--macros/text1/cms_help_files/paf.helpmark67
-rw-r--r--macros/text1/cms_help_files/pagem.helpbloc7
-rw-r--r--macros/text1/cms_help_files/pagep.helpbloc7
-rw-r--r--macros/text1/cms_help_files/paper.helpmode7
-rw-r--r--macros/text1/cms_help_files/par.helpmark81
-rw-r--r--macros/text1/cms_help_files/parm.helpbloc8
-rw-r--r--macros/text1/cms_help_files/parp.helpbloc8
-rw-r--r--macros/text1/cms_help_files/part.helpbloc7
-rw-r--r--macros/text1/cms_help_files/part.helpmark32
-rw-r--r--macros/text1/cms_help_files/pb.helpmark47
-rw-r--r--macros/text1/cms_help_files/pen.helpmark42
-rw-r--r--macros/text1/cms_help_files/pf.helpmark83
-rw-r--r--macros/text1/cms_help_files/pic.helpmark97
-rw-r--r--macros/text1/cms_help_files/pin.helpmark46
-rw-r--r--macros/text1/cms_help_files/plaintex.helpmark28
-rw-r--r--macros/text1/cms_help_files/pn.helpmark40
-rw-r--r--macros/text1/cms_help_files/ppl.helpmark21
-rw-r--r--macros/text1/cms_help_files/pre.helpmark31
-rw-r--r--macros/text1/cms_help_files/preface.helpbloc7
-rw-r--r--macros/text1/cms_help_files/prf.helpmark42
-rw-r--r--macros/text1/cms_help_files/prin.helpmark20
-rw-r--r--macros/text1/cms_help_files/printend.helpmark10
-rw-r--r--macros/text1/cms_help_files/printind.helpmark58
-rw-r--r--macros/text1/cms_help_files/psk.helpmark62
-rw-r--r--macros/text1/cms_help_files/qquad.helpmark39
-rw-r--r--macros/text1/cms_help_files/quad.helpmark40
-rw-r--r--macros/text1/cms_help_files/raggedbo.helpmark16
-rw-r--r--macros/text1/cms_help_files/resume.helpmode7
-rw-r--r--macros/text1/cms_help_files/rff.helpmark129
-rw-r--r--macros/text1/cms_help_files/rhf.helpmark115
-rw-r--r--macros/text1/cms_help_files/rin.helpmark79
-rw-r--r--macros/text1/cms_help_files/rl.helpmark29
-rw-r--r--macros/text1/cms_help_files/rlb.helpmark35
-rw-r--r--macros/text1/cms_help_files/rle.helpmark28
-rw-r--r--macros/text1/cms_help_files/rm.helpmark41
-rw-r--r--macros/text1/cms_help_files/rr.helpmark47
-rw-r--r--macros/text1/cms_help_files/rule.helpmark48
-rw-r--r--macros/text1/cms_help_files/runfoot.helpbloc8
-rw-r--r--macros/text1/cms_help_files/runhead.helpbloc8
-rw-r--r--macros/text1/cms_help_files/san.helpmark25
-rw-r--r--macros/text1/cms_help_files/sau.helpmark44
-rw-r--r--macros/text1/cms_help_files/scn.helpmark25
-rw-r--r--macros/text1/cms_help_files/senn.helpmark37
-rw-r--r--macros/text1/cms_help_files/settabs.helpmark151
-rw-r--r--macros/text1/cms_help_files/sfn.helpmark37
-rw-r--r--macros/text1/cms_help_files/sfnn.helpmark39
-rw-r--r--macros/text1/cms_help_files/sfs.helpmark79
-rw-r--r--macros/text1/cms_help_files/sha.helpmark40
-rw-r--r--macros/text1/cms_help_files/shaf.helpmark85
-rw-r--r--macros/text1/cms_help_files/shb.helpmark40
-rw-r--r--macros/text1/cms_help_files/shbf.helpmark86
-rw-r--r--macros/text1/cms_help_files/shc.helpmark39
-rw-r--r--macros/text1/cms_help_files/shcf.helpmark81
-rw-r--r--macros/text1/cms_help_files/shd.helpmark33
-rw-r--r--macros/text1/cms_help_files/shdf.helpmark77
-rw-r--r--macros/text1/cms_help_files/sms.helpmark50
-rw-r--r--macros/text1/cms_help_files/special.helpmark24
-rw-r--r--macros/text1/cms_help_files/spn.helpmark46
-rw-r--r--macros/text1/cms_help_files/sptn.helpmark23
-rw-r--r--macros/text1/cms_help_files/ssan.helpmark25
-rw-r--r--macros/text1/cms_help_files/ssbn.helpmark25
-rw-r--r--macros/text1/cms_help_files/sscn.helpmark25
-rw-r--r--macros/text1/cms_help_files/ssdn.helpmark25
-rw-r--r--macros/text1/cms_help_files/ssf.helpmark50
-rw-r--r--macros/text1/cms_help_files/ssp.helpmark43
-rw-r--r--macros/text1/cms_help_files/stn.helpmark37
-rw-r--r--macros/text1/cms_help_files/strut.helpmark82
-rw-r--r--macros/text1/cms_help_files/subheada.helpbloc7
-rw-r--r--macros/text1/cms_help_files/subheadb.helpbloc7
-rw-r--r--macros/text1/cms_help_files/subheadc.helpbloc7
-rw-r--r--macros/text1/cms_help_files/subheadd.helpbloc7
-rw-r--r--macros/text1/cms_help_files/sy.helpmark26
-rw-r--r--macros/text1/cms_help_files/tablem.helpbloc7
-rw-r--r--macros/text1/cms_help_files/tablep.helpbloc7
-rw-r--r--macros/text1/cms_help_files/taf.helpmark56
-rw-r--r--macros/text1/cms_help_files/talaris.helpbloc7
-rw-r--r--macros/text1/cms_help_files/tat.helpmark59
-rw-r--r--macros/text1/cms_help_files/tenpt.helpmark42
-rw-r--r--macros/text1/cms_help_files/text1.helpmark44
-rw-r--r--macros/text1/cms_help_files/thc.helpmark75
-rw-r--r--macros/text1/cms_help_files/thesis.helpmode8
-rw-r--r--macros/text1/cms_help_files/titlepg.helpbloc7
-rw-r--r--macros/text1/cms_help_files/toc.helpmark39
-rw-r--r--macros/text1/cms_help_files/tocf.helpmark478
-rw-r--r--macros/text1/cms_help_files/toclbr.helpmark43
-rw-r--r--macros/text1/cms_help_files/today.helpmark30
-rw-r--r--macros/text1/cms_help_files/topline1.helpeven31
-rw-r--r--macros/text1/cms_help_files/topline1.helpoddp31
-rw-r--r--macros/text1/cms_help_files/topmargi.helppage21
-rw-r--r--macros/text1/cms_help_files/tp.helpmark44
-rw-r--r--macros/text1/cms_help_files/tpf.helpmark50
-rw-r--r--macros/text1/cms_help_files/tt.helpmark50
-rw-r--r--macros/text1/cms_help_files/twc.helpmark75
-rw-r--r--macros/text1/cms_help_files/twelvept.helpmark44
-rw-r--r--macros/text1/cms_help_files/us.helpmark34
-rw-r--r--macros/text1/cms_help_files/vbox.helpmark32
-rw-r--r--macros/text1/cms_help_files/vertical.helpvert21
-rw-r--r--macros/text1/cms_help_files/vrule.helpmark19
-rw-r--r--macros/text1/cms_help_files/vs.helpmark53
-rw-r--r--macros/text1/cms_help_files/vsk.helpmark45
-rw-r--r--macros/text1/cms_help_files/width.helppage13
-rw-r--r--macros/text1/compugraphics_8600/et10.textext37
-rw-r--r--macros/text1/compugraphics_8600/et11.textext37
-rw-r--r--macros/text1/compugraphics_8600/et12.textext37
-rw-r--r--macros/text1/compugraphics_8600/et14.textext37
-rw-r--r--macros/text1/compugraphics_8600/et18.textext37
-rw-r--r--macros/text1/compugraphics_8600/et8.textext37
-rw-r--r--macros/text1/compugraphics_8600/et9.textext37
-rw-r--r--macros/text1/compugraphics_8600/etb.fontinfo236
-rw-r--r--macros/text1/compugraphics_8600/etbi.fontinfo233
-rw-r--r--macros/text1/compugraphics_8600/eti.fontinfo233
-rw-r--r--macros/text1/compugraphics_8600/etr.fontinfo236
-rw-r--r--macros/text1/compugraphics_8600/etsc.fontinfo253
-rw-r--r--macros/text1/compugraphics_8600/fonttex.cmschan5
-rw-r--r--macros/text1/compugraphics_8600/fonttex.exec23
-rw-r--r--macros/text1/compugraphics_8600/fonttex.outchan324
-rw-r--r--macros/text1/compugraphics_8600/fonttex.web1936
-rw-r--r--macros/text1/compugraphics_8600/reblock.pascal34
-rw-r--r--macros/text1/compugraphics_8600/tex8600.cmschan1
-rw-r--r--macros/text1/compugraphics_8600/tex8600.outchan580
-rw-r--r--macros/text1/compugraphics_8600/tex8600.web3034
-rw-r--r--macros/text1/docs/readme.tex209
-rw-r--r--macros/text1/docs/refman.ps.gzbin0 -> 744715 bytes
-rw-r--r--macros/text1/fonts/cmr36.dump902
-rw-r--r--macros/text1/fonts/dt.240pkbin0 -> 1536 bytes
-rw-r--r--macros/text1/fonts/dt.300pkbin0 -> 1536 bytes
-rw-r--r--macros/text1/fonts/dt.mf17
-rw-r--r--macros/text1/fonts/dt.readme8
-rw-r--r--macros/text1/fonts/dt.tfmbin0 -> 512 bytes
-rw-r--r--macros/text1/fonts/dt240.mf12
-rw-r--r--macros/text1/fonts/dt300.mf12
-rw-r--r--macros/text1/macintosh/texix.macinfo4
-rw-r--r--macros/text1/macintosh/texix.turbomac591
-rw-r--r--macros/text1/macintosh/texix_macintosh.readme7
-rw-r--r--macros/text1/macintosh/text1_index_sort.binbin0 -> 30976 bytes
-rw-r--r--macros/text1/macros/cgfonts.lclist124
-rw-r--r--macros/text1/macros/cm10.textext34
-rw-r--r--macros/text1/macros/cm108m.texmath10
-rw-r--r--macros/text1/macros/cm109m.texmath10
-rw-r--r--macros/text1/macros/cm11.textext40
-rw-r--r--macros/text1/macros/cm1110m.texmath10
-rw-r--r--macros/text1/macros/cm119m.texmath13
-rw-r--r--macros/text1/macros/cm12.textext37
-rw-r--r--macros/text1/macros/cm1210m.texmath10
-rw-r--r--macros/text1/macros/cm1211m.texmath13
-rw-r--r--macros/text1/macros/cm14.textext37
-rw-r--r--macros/text1/macros/cm1412m.texmath13
-rw-r--r--macros/text1/macros/cm18.textext37
-rw-r--r--macros/text1/macros/cm1814m.texmath13
-rw-r--r--macros/text1/macros/cm24.textext37
-rw-r--r--macros/text1/macros/cm2418m.texmath13
-rw-r--r--macros/text1/macros/cm36.textext37
-rw-r--r--macros/text1/macros/cm5.textext51
-rw-r--r--macros/text1/macros/cm6.textext49
-rw-r--r--macros/text1/macros/cm65m.texmath10
-rw-r--r--macros/text1/macros/cm7.textext45
-rw-r--r--macros/text1/macros/cm75m.texmath7
-rw-r--r--macros/text1/macros/cm76m.texmath10
-rw-r--r--macros/text1/macros/cm8.textext40
-rw-r--r--macros/text1/macros/cm86m.texmath13
-rw-r--r--macros/text1/macros/cm87m.texmath10
-rw-r--r--macros/text1/macros/cm9.textext40
-rw-r--r--macros/text1/macros/cm97m.texmath10
-rw-r--r--macros/text1/macros/cm98m.texmath13
-rw-r--r--macros/text1/macros/cmsan10.textext46
-rw-r--r--macros/text1/macros/cmsan11.textext46
-rw-r--r--macros/text1/macros/cmsan12.textext46
-rw-r--r--macros/text1/macros/cmsan14.textext46
-rw-r--r--macros/text1/macros/cmsan18.textext46
-rw-r--r--macros/text1/macros/cmsan24.textext46
-rw-r--r--macros/text1/macros/cmsan36.textext46
-rw-r--r--macros/text1/macros/cmsan8.textext49
-rw-r--r--macros/text1/macros/cmsan9.textext46
-rw-r--r--macros/text1/macros/fixcol.tex155
-rw-r--r--macros/text1/macros/flexcol.tex329
-rw-r--r--macros/text1/macros/text1.tex3
-rw-r--r--macros/text1/macros/txt1v409.tex3536
-rw-r--r--macros/text1/models/letter.texinput51
-rw-r--r--macros/text1/models/letter.texmodel45
-rw-r--r--macros/text1/models/memo.texinput48
-rw-r--r--macros/text1/models/memo.texmodel21
-rw-r--r--macros/text1/models/mergelet.texmodel77
-rw-r--r--macros/text1/models/mergelst.texmodel17
-rw-r--r--macros/text1/models/mergetxt.texinput184
-rw-r--r--macros/text1/models/mergetxt.texmodel96
-rw-r--r--macros/text1/models/paper.texinput10
-rw-r--r--macros/text1/models/paper.texmodel28
-rw-r--r--macros/text1/models/resume.texinput62
-rw-r--r--macros/text1/models/resume.texmodel69
-rw-r--r--macros/text1/models/thesis.texinput159
-rw-r--r--macros/text1/models/thesis.texmodel139
-rw-r--r--macros/text1/pc/blocks/appendix.blk16
-rw-r--r--macros/text1/pc/blocks/asism.blk5
-rw-r--r--macros/text1/pc/blocks/asisp.blk5
-rw-r--r--macros/text1/pc/blocks/bibliog.blk10
-rw-r--r--macros/text1/pc/blocks/bquotem.blk7
-rw-r--r--macros/text1/pc/blocks/bquotep.blk7
-rw-r--r--macros/text1/pc/blocks/chapter.blk13
-rw-r--r--macros/text1/pc/blocks/contents.blk35
-rw-r--r--macros/text1/pc/blocks/enotem.blk11
-rw-r--r--macros/text1/pc/blocks/enotep.blk11
-rw-r--r--macros/text1/pc/blocks/figurem.blk8
-rw-r--r--macros/text1/pc/blocks/figurep.blk8
-rw-r--r--macros/text1/pc/blocks/fnotem.blk14
-rw-r--r--macros/text1/pc/blocks/fnotep.blk14
-rw-r--r--macros/text1/pc/blocks/fontm.blk6
-rw-r--r--macros/text1/pc/blocks/fontp.blk6
-rw-r--r--macros/text1/pc/blocks/index.blk8
-rw-r--r--macros/text1/pc/blocks/label.blk6
-rw-r--r--macros/text1/pc/blocks/lists.blk13
-rw-r--r--macros/text1/pc/blocks/maillbls.blk17
-rw-r--r--macros/text1/pc/blocks/marnote.blk6
-rw-r--r--macros/text1/pc/blocks/multicol.blk10
-rw-r--r--macros/text1/pc/blocks/pagem.blk11
-rw-r--r--macros/text1/pc/blocks/pagep.blk11
-rw-r--r--macros/text1/pc/blocks/parm.blk6
-rw-r--r--macros/text1/pc/blocks/parp.blk11
-rw-r--r--macros/text1/pc/blocks/part.blk20
-rw-r--r--macros/text1/pc/blocks/preface.blk12
-rw-r--r--macros/text1/pc/blocks/runfoot.blk6
-rw-r--r--macros/text1/pc/blocks/runhead.blk6
-rw-r--r--macros/text1/pc/blocks/subheada.blk11
-rw-r--r--macros/text1/pc/blocks/subheadb.blk10
-rw-r--r--macros/text1/pc/blocks/subheadc.blk9
-rw-r--r--macros/text1/pc/blocks/subheadd.blk7
-rw-r--r--macros/text1/pc/blocks/tablem.blk8
-rw-r--r--macros/text1/pc/blocks/tablep.blk9
-rw-r--r--macros/text1/pc/blocks/talaris.blk6
-rw-r--r--macros/text1/pc/blocks/titlepg.blk4
-rw-r--r--macros/text1/pc/fonts/dt.pkbin0 -> 1536 bytes
-rw-r--r--macros/text1/pc/misc/cm10.txt34
-rw-r--r--macros/text1/pc/misc/cm108m.mth10
-rw-r--r--macros/text1/pc/misc/cm109m.mth10
-rw-r--r--macros/text1/pc/misc/cm11.txt40
-rw-r--r--macros/text1/pc/misc/cm1110m.mth10
-rw-r--r--macros/text1/pc/misc/cm119m.mth13
-rw-r--r--macros/text1/pc/misc/cm12.txt37
-rw-r--r--macros/text1/pc/misc/cm1210m.mth10
-rw-r--r--macros/text1/pc/misc/cm1211m.mth13
-rw-r--r--macros/text1/pc/misc/cm14.txt37
-rw-r--r--macros/text1/pc/misc/cm1412m.mth13
-rw-r--r--macros/text1/pc/misc/cm18.txt37
-rw-r--r--macros/text1/pc/misc/cm1814m.mth13
-rw-r--r--macros/text1/pc/misc/cm24.txt37
-rw-r--r--macros/text1/pc/misc/cm2418m.mth13
-rw-r--r--macros/text1/pc/misc/cm36.txt37
-rw-r--r--macros/text1/pc/misc/cm5.txt51
-rw-r--r--macros/text1/pc/misc/cm6.txt49
-rw-r--r--macros/text1/pc/misc/cm65m.mth10
-rw-r--r--macros/text1/pc/misc/cm7.txt45
-rw-r--r--macros/text1/pc/misc/cm75m.mth7
-rw-r--r--macros/text1/pc/misc/cm76m.mth10
-rw-r--r--macros/text1/pc/misc/cm8.txt40
-rw-r--r--macros/text1/pc/misc/cm86m.mth13
-rw-r--r--macros/text1/pc/misc/cm87m.mth10
-rw-r--r--macros/text1/pc/misc/cm9.txt40
-rw-r--r--macros/text1/pc/misc/cm97m.mth10
-rw-r--r--macros/text1/pc/misc/cm98m.mth13
-rw-r--r--macros/text1/pc/misc/cmsan10.txt46
-rw-r--r--macros/text1/pc/misc/cmsan11.txt46
-rw-r--r--macros/text1/pc/misc/cmsan12.txt46
-rw-r--r--macros/text1/pc/misc/cmsan14.txt46
-rw-r--r--macros/text1/pc/misc/cmsan18.txt46
-rw-r--r--macros/text1/pc/misc/cmsan24.txt46
-rw-r--r--macros/text1/pc/misc/cmsan36.txt46
-rw-r--r--macros/text1/pc/misc/cmsan8.txt49
-rw-r--r--macros/text1/pc/misc/cmsan9.txt46
-rw-r--r--macros/text1/pc/models/letter.inp51
-rw-r--r--macros/text1/pc/models/letter.mdl45
-rw-r--r--macros/text1/pc/models/memo.inp48
-rw-r--r--macros/text1/pc/models/memo.mdl21
-rw-r--r--macros/text1/pc/models/mergelet.mdl77
-rw-r--r--macros/text1/pc/models/mergelst.mdl17
-rw-r--r--macros/text1/pc/models/mergetxt.inp184
-rw-r--r--macros/text1/pc/models/mergetxt.mdl96
-rw-r--r--macros/text1/pc/models/paper.inp10
-rw-r--r--macros/text1/pc/models/paper.mdl28
-rw-r--r--macros/text1/pc/models/resume.inp62
-rw-r--r--macros/text1/pc/models/resume.mdl69
-rw-r--r--macros/text1/pc/models/thesis.inp159
-rw-r--r--macros/text1/pc/models/thesis.mdl139
-rw-r--r--macros/text1/pc/readme.tex38
-rw-r--r--macros/text1/texix/plsort.pliopt9
-rw-r--r--macros/text1/texix/texix.cmschan3
-rw-r--r--macros/text1/texix/texix.cmsinfo5
-rw-r--r--macros/text1/texix/texix.readme4
-rw-r--r--macros/text1/texix/texix.web1577
-rw-r--r--macros/text1/texix/txt1v293.cmschan2000
-rw-r--r--macros/text1/vax_vms/compile_texix.com10
-rw-r--r--macros/text1/vax_vms/sortcall.penbin0 -> 1536 bytes
-rw-r--r--macros/text1/vax_vms/texix.ch509
-rw-r--r--macros/text1/vax_vms/texix_vms.readme12
-rw-r--r--macros/text1/vax_vms/vmssort.pas78
522 files changed, 34362 insertions, 0 deletions
diff --git a/macros/text1/blocks/appendix.texblock b/macros/text1/blocks/appendix.texblock
new file mode 100644
index 0000000000..0000bd5a39
--- /dev/null
+++ b/macros/text1/blocks/appendix.texblock
@@ -0,0 +1,16 @@
+% Default values for the \appendix markup
+\appendixformat{\numberingstyle{A}
+ \titleformat{\dumpinsertseject
+ \centerline{\twelvept\bold Appendix \appendixnumber}
+ \centerline{\twelvept\bold\appendixtitle}
+ \vs{1\bl}
+ \setchapternumber{0}
+ \setsubheadanumber{0}
+ \setsubheadbnumber{0}
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}
+ \setfigurenumber{0}
+ \settablenumber{0}
+ }% end titleformat
+ \incontents{yes}
+}% end appendix format
diff --git a/macros/text1/blocks/asism.texblock b/macros/text1/blocks/asism.texblock
new file mode 100644
index 0000000000..c5ea6006c4
--- /dev/null
+++ b/macros/text1/blocks/asism.texblock
@@ -0,0 +1,5 @@
+% Default values for \asisbegin in \monospace
+\asisformat{\skipbefore{1\bl}
+ \everyasis{\leftindent{0pt}}
+ \skipafter{1\bl}
+}% end as is format
diff --git a/macros/text1/blocks/asisp.texblock b/macros/text1/blocks/asisp.texblock
new file mode 100644
index 0000000000..c9a65c3860
--- /dev/null
+++ b/macros/text1/blocks/asisp.texblock
@@ -0,0 +1,5 @@
+% Default values for the \asisbegin markup
+\asisformat{\skipbefore{6pt}
+ \everyasis{\leftindent{0pt}}
+ \skipafter{6pt}
+}% end as is format
diff --git a/macros/text1/blocks/bibliog.texblock b/macros/text1/blocks/bibliog.texblock
new file mode 100644
index 0000000000..691cee2263
--- /dev/null
+++ b/macros/text1/blocks/bibliog.texblock
@@ -0,0 +1,10 @@
+% Default values for the \bibliography markup
+\bibliographyformat{%
+ \titleformat{\dumpinsertseject
+ \centerline{\twelvept\bd\bibtitle}
+ \vs{\bl}
+ }% end titleformat
+ \everybibentry{\vs{1\bl}\goodbreak\hp\nin}
+ \sameauthorrulesize{width 3em height .6ex depth -.5ex}
+ \incontents{yes}
+}% end bibliographyformat markup
diff --git a/macros/text1/blocks/bquotem.texblock b/macros/text1/blocks/bquotem.texblock
new file mode 100644
index 0000000000..87d2605a8a
--- /dev/null
+++ b/macros/text1/blocks/bquotem.texblock
@@ -0,0 +1,7 @@
+% Defaults for \blockquotebegin in \monospace
+\blockquoteformat{\skipbefore{1\bl}
+ \everyblockquote{\rm\leftindent{36pt} % 36pt = .5in
+ \rightindent{36pt}
+ }
+ \skipafter{1\bl}
+}% end monospace block quote begin format
diff --git a/macros/text1/blocks/bquotep.texblock b/macros/text1/blocks/bquotep.texblock
new file mode 100644
index 0000000000..4fdf50b4c9
--- /dev/null
+++ b/macros/text1/blocks/bquotep.texblock
@@ -0,0 +1,7 @@
+% Defaults for the \blockquotebegin markup
+\blockquoteformat{\skipbefore{6pt}
+ \everyblockquote{\tenpt\leftindent{24pt} % 24pt = .3in
+ \rightindent{24pt}
+ }
+ \skipafter{6pt}
+}% end block quote begin format
diff --git a/macros/text1/blocks/chapter.texblock b/macros/text1/blocks/chapter.texblock
new file mode 100644
index 0000000000..9796e18beb
--- /dev/null
+++ b/macros/text1/blocks/chapter.texblock
@@ -0,0 +1,13 @@
+% Default values for the \chapter markup
+\chapterformat{\numberingstyle{1}
+ \titleformat{\dumpinsertseject
+ \centerline{\twelvept\bd Chapter \chapternumber}
+ \centerline{\twelvept\bd\chaptertitle}
+ \vs{1\bl}
+ \setsubheadanumber{0}
+ \setsubheadbnumber{0}
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}
+ }% end titleformat
+ \incontents{yes}
+}% end chapter format
diff --git a/macros/text1/blocks/contents.texblock b/macros/text1/blocks/contents.texblock
new file mode 100644
index 0000000000..45fa4e571d
--- /dev/null
+++ b/macros/text1/blocks/contents.texblock
@@ -0,0 +1,35 @@
+% Defaults when using the \tableofcontents markup
+\tableofcontentsformat{%
+ \toctitle{\centerline{\bd Table of Contents}
+ \vs{1\bl}}
+ \prefacetocformat{\nin\prefacetitle\leader\pagenumber}
+ \parttocformat{\vs{1\bl}
+ \centerline{Part \partnumber}
+ \centerline{\parttitle}
+ \vs{1\bl}
+ \nin Part \partnumber \leader \pagenumber}
+ \continuechapter{no}
+ \chaptertocformat{\hangingchapternumber \chaptertitle \leader \pagenumber}
+ \hangingchapterindent{.25in}
+ \appendixtocformat{\hangingappendixnumber \appendixtitle \leader \pn}
+ \hangingappendixindent{.25in}
+ \subheadatocformat{\leftindent{.5in}\nin
+ \subheadatitle \leader \pagenumber}
+ \subheadbtocformat{\leftindent{1in}\nin
+ \subheadbtitle \leader \pagenumber}
+ \subheadctocformat{\leftindent{1.5in}\nin
+ \subheadctitle \leader \pagenumber}
+ \subheaddtocformat{\leftindent{2in}\nin
+ \subheaddtitle \leader \pagenumber}
+ \bibliographytocformat{\nin\bibtitle \leader \pagenumber}
+ \figuretoctitle{\newpage
+ \centerline{\bd List of Figures}
+ \line{Figure \rt{Page}}}
+ \figuretocformat{\hangingnumber{\figurenumber.}\figuretitle\leader\pagenumber}
+ \hangingfigureindent{.25in}
+ \tabletoctitle{\newpage
+ \centerline{\bd List of Tables}
+ \line{Table \rt{Page}}}
+ \tabletocformat{\hangingnumber{\tablenumber.}\tabletitle\leader\pagenumber}
+ \hangingtableindent{.25in}
+}
diff --git a/macros/text1/blocks/enotem.texblock b/macros/text1/blocks/enotem.texblock
new file mode 100644
index 0000000000..2716defe7a
--- /dev/null
+++ b/macros/text1/blocks/enotem.texblock
@@ -0,0 +1,11 @@
+% Defaults for \autoendnote with \monospace
+\endnoteformat{\skipbefore{0\bl}
+ \textreferenceposition{down}
+ \textreferencefont{\rm}
+ \textreferencestyle{[1]}
+ \notereferenceposition{down}
+ \notereferencefont{\rm}
+ \notereferencestyle{1.}
+ \notereferencegutter{1em} % 1em = 12pt in a 12pt font
+ \everyendnote{\rm\pin{0pt}\lin{1.2em}}
+}
diff --git a/macros/text1/blocks/enotep.texblock b/macros/text1/blocks/enotep.texblock
new file mode 100644
index 0000000000..4f2b55d4e1
--- /dev/null
+++ b/macros/text1/blocks/enotep.texblock
@@ -0,0 +1,11 @@
+% Default values for the \autoendnote markup
+\endnoteformat{\skipbefore{4pt}
+ \textreferenceposition{down}
+ \textreferencefont{\tenpt}
+ \textreferencestyle{[1]}
+ \notereferenceposition{down}
+ \notereferencefont{\tenpt}
+ \notereferencestyle{1.}
+ \notereferencegutter{1em} % 1em = 12pt in a 12pt font
+ \everyendnote{\tenpt\pin{0pt}\lin{1.2em}}
+}% end endnoteformat markup
diff --git a/macros/text1/blocks/figurem.texblock b/macros/text1/blocks/figurem.texblock
new file mode 100644
index 0000000000..9d7263c218
--- /dev/null
+++ b/macros/text1/blocks/figurem.texblock
@@ -0,0 +1,8 @@
+% Defaults for \figure with \monospace
+\figureformat{\skipbefore{1\bl}
+ \position{\float}
+ \titleformat{\bqb\hp
+ \bd Figure \figurenumber. \rm\figuretitle\bqe}
+ \incontents{yes}
+ \skipafter{1\bl}
+}% End figure format markup
diff --git a/macros/text1/blocks/figurep.texblock b/macros/text1/blocks/figurep.texblock
new file mode 100644
index 0000000000..e2131696ef
--- /dev/null
+++ b/macros/text1/blocks/figurep.texblock
@@ -0,0 +1,8 @@
+% Defaults for the \figure markup
+\figureformat{\skipbefore{1\bl}
+ \position{\float}
+ \titleformat{\bqb\hp\tenpt
+ \bd Figure \figurenumber. \rm\figuretitle\bqe}
+ \incontents{yes}
+ \skipafter{1\bl}
+}% End figure format markup
diff --git a/macros/text1/blocks/fnotem.texblock b/macros/text1/blocks/fnotem.texblock
new file mode 100644
index 0000000000..a3d5840598
--- /dev/null
+++ b/macros/text1/blocks/fnotem.texblock
@@ -0,0 +1,14 @@
+% Defaults for \autofootnote with \monospace
+\footnoteformat{\skipbeforedivider{12pt}
+ \skipafterdivider{2.6pt}
+ \footnotedivider{144pt} % 144pt = 2in
+ \textreferenceposition{down}
+ \textreferenceplacement{after}
+ \textreferencefont{\rm}
+ \textreferencestyle{(1)}
+ \notereferenceposition{down}
+ \notereferencefont{\rm}
+ \notereferencestyle{1.}
+ \notereferencegutter{1em}
+ \everyfootnote{\rm\pin{.5in}\psk{.5in}\lin{0pt}\rin{0pt}}
+}
diff --git a/macros/text1/blocks/fnotep.texblock b/macros/text1/blocks/fnotep.texblock
new file mode 100644
index 0000000000..97fb1ddf0c
--- /dev/null
+++ b/macros/text1/blocks/fnotep.texblock
@@ -0,0 +1,14 @@
+% Defaults for the \autofootnote markup
+\footnoteformat{\skipbeforedivider{12pt}
+ \skipafterdivider{2.6pt}
+ \footnotedivider{144pt} % 144pt = 2in
+ \textreferenceposition{up}
+ \textreferenceplacement{after}
+ \textreferencefont{\tenpt}
+ \textreferencestyle{1}
+ \notereferenceposition{down}
+ \notereferencefont{\tenpt}
+ \notereferencestyle{1.}
+ \notereferencegutter{1em}
+ \everyfootnote{\tenpt\pin{20pt}\lin{0pt}}
+}
diff --git a/macros/text1/blocks/fontm.texblock b/macros/text1/blocks/fontm.texblock
new file mode 100644
index 0000000000..5f8455a998
--- /dev/null
+++ b/macros/text1/blocks/fontm.texblock
@@ -0,0 +1,6 @@
+% Default values for the \monospace markup
+\monospace
+ % You may change the default monspace fonts by removing the % symbol
+ % from the \selectfontset and \defaultmono\rm markups below.
+% \selectfontset{monofont}{defaultmono}{default} %
+% \defaultmono\rm
diff --git a/macros/text1/blocks/fontp.texblock b/macros/text1/blocks/fontp.texblock
new file mode 100644
index 0000000000..5393d563eb
--- /dev/null
+++ b/macros/text1/blocks/fontp.texblock
@@ -0,0 +1,6 @@
+% Default values for the proportional space fonts
+\selectfontset{cm12}{twelvept}{default} % default twelve point set
+\selectfontset{cm10}{tenpt}{default} % alternate ten point set
+\twelvept % default font specification
+\selectmathset{cm97m}{mathdefault} % default math font set
+\mathdefault % default math specification
diff --git a/macros/text1/blocks/index.texblock b/macros/text1/blocks/index.texblock
new file mode 100644
index 0000000000..684c4407d1
--- /dev/null
+++ b/macros/text1/blocks/index.texblock
@@ -0,0 +1,8 @@
+\indexformat1{\respectcase{no}
+ \style{indent}
+ \leadering{no}
+ \everyletterbreak{\vs{1\bl}}
+ \indentsubentry1{1em}
+ \indentsubentry2{2em}
+ \everyhang{1.5em}
+ \everyindex{\tenpt}}
diff --git a/macros/text1/blocks/label.texblock b/macros/text1/blocks/label.texblock
new file mode 100644
index 0000000000..d4da9e3063
--- /dev/null
+++ b/macros/text1/blocks/label.texblock
@@ -0,0 +1,6 @@
+% Defaults for the \label markup
+\labelformat{\skipbefore{1\bl}
+ \labelwidth{72pt}
+ \gutter{1em}
+ \everylabel{\rm}
+ }
diff --git a/macros/text1/blocks/lists.texblock b/macros/text1/blocks/lists.texblock
new file mode 100644
index 0000000000..874be36899
--- /dev/null
+++ b/macros/text1/blocks/lists.texblock
@@ -0,0 +1,13 @@
+% Defaults for \listbegin, \listlevel, and \bullet
+\listformat{\skipbefore{0\bl}
+ \liststyle{1.,a.,i.,1),a),i),(1)}
+ \everylistlevel1{\rm\lin{36pt}\gutter{1em}} % 36pt = .5in
+ \everylistlevel2{\rm\lin{58pt}\gutter{1em}} % 58pt = .8in
+ \everylistlevel3{\rm\lin{79pt}\gutter{1em}} % 79pt = 1.1in
+ \everylistlevel4{\rm\lin{101pt}\gutter{1em}} % 101pt = 1.4in
+ \everylistlevel5{\rm\lin{122pt}\gutter{1em}} % 122pt = 1.7in
+ \everylistlevel6{\rm\lin{144pt}\gutter{1em}} % 144pt = 2.0in
+ \everylistlevel7{\rm\lin{166pt}\gutter{1em}} % 166pt = 2.3in
+ \everybullet{\rm\lin{+36pt}\gutter{1em}} % 36pt = .5in
+ \skipafter{0\bl}
+}
diff --git a/macros/text1/blocks/maillbls.texblock b/macros/text1/blocks/maillbls.texblock
new file mode 100644
index 0000000000..145fd0667f
--- /dev/null
+++ b/macros/text1/blocks/maillbls.texblock
@@ -0,0 +1,17 @@
+% Set format for mail labels with the MERGE LETTER MODEL
+
+% Maillabelformat sets the page and label information for mailing labels
+\maillabelformat{\labelsetup{% Sets page and margin settings
+ \newpage % start labels on a new page
+ \notitlepage % labels not started on a title page
+ \runningheadformat{\bothpages{\line{}}} % no page #s
+ \pageformat{\topmargin{1in} % new page dimensions
+ \bottommargin{0pt}
+ \leftmargin{0pt}
+ \rightmargin{0pt}}% end page format
+ }% end labelsetup
+ \numberoflabelsperline{3} % three labels per line max
+ \labelheight{1in} % each label 1 inch high
+ \labelwidth{2.75in} % each label 2.75 inches wide
+ \labelmat{.25in} % margin to text is .25 inches
+}% end mail label format
diff --git a/macros/text1/blocks/marnote.texblock b/macros/text1/blocks/marnote.texblock
new file mode 100644
index 0000000000..ded8cac18a
--- /dev/null
+++ b/macros/text1/blocks/marnote.texblock
@@ -0,0 +1,6 @@
+% Default values for the \marginnote markup
+\marginnoteformat{\position{left}
+ \notewidth{54pt}
+ \notegutter{6pt}
+ \everymarginnote{\tenpt\rr}
+}% end margin note format
diff --git a/macros/text1/blocks/multicol.texblock b/macros/text1/blocks/multicol.texblock
new file mode 100644
index 0000000000..81b2522cdb
--- /dev/null
+++ b/macros/text1/blocks/multicol.texblock
@@ -0,0 +1,10 @@
+% Default multiple column formats
+\multicolumnformat{
+ \twocolumnwidth{.48\galleywidth} % approximately 3 inches
+ \threecolumnwidth{.31\galleywidth} % approximately 2 inches
+ \twocolumngutter{.04\galleywidth} % approximately .2 inches
+ \threecolumngutter{.035\galleywidth}
+ \columnrulewidth{0.0pt}
+ \skipbefore{6pt plus3pt minus2pt} % flexible format only
+ \skipafter{6pt plus3pt minus2pt} % flexible format only
+ }
diff --git a/macros/text1/blocks/pagem.texblock b/macros/text1/blocks/pagem.texblock
new file mode 100644
index 0000000000..99694f4721
--- /dev/null
+++ b/macros/text1/blocks/pagem.texblock
@@ -0,0 +1,11 @@
+% Default page dimensions and margins
+\pageformat{\pagelength{11in} % 792pt = 11in
+ \pagewidth{8.5in} % 612pt = 8.5in
+ \topmargin{1in} % 72pt = 1in
+ \bottommargin{1in}
+ \leftmargin{1.2in} % 86pt = 1.2in
+ \rightmargin{1in}
+ \bindingadjust{0in} % none
+}% end page format
+\raggedbottom % allows the bottom line to fluctuate up
+ % and down a couple lines
diff --git a/macros/text1/blocks/pagep.texblock b/macros/text1/blocks/pagep.texblock
new file mode 100644
index 0000000000..1c521e133d
--- /dev/null
+++ b/macros/text1/blocks/pagep.texblock
@@ -0,0 +1,11 @@
+% Default page dimensions and margins
+\pageformat{\pagelength{11in} % 792pt = 11in
+ \pagewidth{8.5in} % 612pt = 8.5in
+ \topmargin{1in} % 72pt = 1in
+ \bottommargin{1in}
+ \leftmargin{1.2in} % 86pt = 1.2in
+ \rightmargin{1in}
+ \bindingadjust{0in}
+}% end pageformat
+\normalbottom % text height will be the same for each
+ % page. Bottom lines will be even.
diff --git a/macros/text1/blocks/parm.texblock b/macros/text1/blocks/parm.texblock
new file mode 100644
index 0000000000..2d9c676951
--- /dev/null
+++ b/macros/text1/blocks/parm.texblock
@@ -0,0 +1,6 @@
+% Default paragraph specifications for monospace fonts
+\paragraphindent{36pt} % indent for the first line of a paragraph
+\paragraphskip{0pt} % distance between paragraphs
+\justify
+\hyphenon % hyphenation either on (\hyphenon)
+ % or off (\hyphenoff)
diff --git a/macros/text1/blocks/parp.texblock b/macros/text1/blocks/parp.texblock
new file mode 100644
index 0000000000..b31df93253
--- /dev/null
+++ b/macros/text1/blocks/parp.texblock
@@ -0,0 +1,11 @@
+% Default paragraph specifications for proportional fonts
+\paragraphindent{24pt} % indent for first line of text
+\paragraphskip{0pt plus 3pt minus 0pt} % Distance skipped between
+ % paragraphs. Plus and minus refer to space
+ % that may be added or subtracted from the
+ % initial setting (0pt) to make the lines
+ % even at the bottom of the page.
+
+\justify % all text will be justified
+\hyphenon % hyphenation either on (\hyphenon)
+ % or off (\hyphenoff)
diff --git a/macros/text1/blocks/part.texblock b/macros/text1/blocks/part.texblock
new file mode 100644
index 0000000000..68545f85ba
--- /dev/null
+++ b/macros/text1/blocks/part.texblock
@@ -0,0 +1,20 @@
+% Default values for the \part markup
+\partformat{\numberingstyle{1}
+ \titleformat{\dumpinsertseject\titlepage
+ \hrule height 0pt depth 0pt
+ \vfil % Produces a half title page
+ \centerline{\twelvept\bold Part \partnumber}
+ \centerline{\twelvept\bold \parttitle}
+ \newpage
+ \setchapternumber{0}
+ \setsubheadanumber{0}
+ \setsubheadbnumber{0}
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}
+ \setfootnotenumber{0}
+ \setendnotenumber{0}
+ \setfigurenumber{0}
+ \settablenumber{0}
+ }% end titleformat
+ \incontents{yes}
+}% end part format
diff --git a/macros/text1/blocks/preface.texblock b/macros/text1/blocks/preface.texblock
new file mode 100644
index 0000000000..3c44e37a02
--- /dev/null
+++ b/macros/text1/blocks/preface.texblock
@@ -0,0 +1,12 @@
+% Default values for the \preface markup
+\prefaceformat{%
+ \titleformat{\dumpinsertseject
+ \centerline{\twelvept\bd\prefacetitle}
+ \vs{1\bl}
+ \setsubheadanumber{0}
+ \setsubheadbnumber{0}
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}
+ }% end titleformat
+ \incontents{yes}
+}% end preface format
diff --git a/macros/text1/blocks/runfoot.texblock b/macros/text1/blocks/runfoot.texblock
new file mode 100644
index 0000000000..8aecd0311a
--- /dev/null
+++ b/macros/text1/blocks/runfoot.texblock
@@ -0,0 +1,6 @@
+% Default values for the running foot title
+\runningfootformat{%
+ \bothpages{\vs{1\bl}
+ \line{\twelvept\lft{}\ctr{}\rt{}}
+ }% end bothpages
+}% end runningfootformat markup
diff --git a/macros/text1/blocks/runhead.texblock b/macros/text1/blocks/runhead.texblock
new file mode 100644
index 0000000000..c88e8758cb
--- /dev/null
+++ b/macros/text1/blocks/runhead.texblock
@@ -0,0 +1,6 @@
+% Default values for the running head title
+\runningheadformat{%
+ \bothpages{\line{\twelvept\lft{}\ctr{}\rt{\pagenumber}}
+ \vs{1\bl}
+ }% end bothpages
+}% end runningheadformat markup
diff --git a/macros/text1/blocks/subheada.texblock b/macros/text1/blocks/subheada.texblock
new file mode 100644
index 0000000000..ce0c4ab5fd
--- /dev/null
+++ b/macros/text1/blocks/subheada.texblock
@@ -0,0 +1,11 @@
+% Default values for the \subheada markup
+\subheadaformat{\numberingstyle{1}
+ \titleformat{\removelastskip\goodbreak\vs{2\bl}
+ \twelvept\bd\nin\subheadatitle\par\nobreak
+ \vs{1\bl}\nobreak
+ \setsubheadbnumber{0}
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}
+ }% end titleformat
+ \incontents{yes}
+}% end subheadaformat markup
diff --git a/macros/text1/blocks/subheadb.texblock b/macros/text1/blocks/subheadb.texblock
new file mode 100644
index 0000000000..e3089ad1c4
--- /dev/null
+++ b/macros/text1/blocks/subheadb.texblock
@@ -0,0 +1,10 @@
+% Default values for the \subheadb markup
+\subheadbformat{\numberingstyle{1}
+ \titleformat{\removelastskip\goodbreak\vs{2\bl}
+ \twelvept\it\nin\subheadbtitle\par\nobreak
+ \vs{1\bl}\nobreak
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}
+ }% end titleformat
+ \incontents{yes}
+}% end subheadbformat markup
diff --git a/macros/text1/blocks/subheadc.texblock b/macros/text1/blocks/subheadc.texblock
new file mode 100644
index 0000000000..be70a69692
--- /dev/null
+++ b/macros/text1/blocks/subheadc.texblock
@@ -0,0 +1,9 @@
+% Default values for the \subheadc markup
+\subheadcformat{\numberingstyle{1}
+ \titleformat{\removelastskip\goodbreak\vs{2\bl}
+ \twelvept\nin\subheadctitle\par\nobreak
+ \vs{1\bl}\nobreak
+ \setsubheaddnumber{0}
+ }% end titleformat
+ \incontents{no}
+}% end subheadcformat markup
diff --git a/macros/text1/blocks/subheadd.texblock b/macros/text1/blocks/subheadd.texblock
new file mode 100644
index 0000000000..8b1cd8b6f3
--- /dev/null
+++ b/macros/text1/blocks/subheadd.texblock
@@ -0,0 +1,7 @@
+% Default values for the \subheadd markup
+\subheaddformat{\numberingstyle{1}
+ \titleformat{\goodbreak
+ {\twelvept\it \subheaddtitle.}
+ }% end titleformat
+ \incontents{no}
+}% end subheadd markup
diff --git a/macros/text1/blocks/tablem.texblock b/macros/text1/blocks/tablem.texblock
new file mode 100644
index 0000000000..3ab57a8d73
--- /dev/null
+++ b/macros/text1/blocks/tablem.texblock
@@ -0,0 +1,8 @@
+% Default \tabletitle when using \monospace
+\tableformat{\titleformat{\vs{\bl}
+ \cl{\bd Table \tablenumber}
+ \cl{\rm\tabletitle}
+ \vs{\bl}
+ }
+ \incontents{yes}
+}
diff --git a/macros/text1/blocks/tablep.texblock b/macros/text1/blocks/tablep.texblock
new file mode 100644
index 0000000000..1b1f0c4162
--- /dev/null
+++ b/macros/text1/blocks/tablep.texblock
@@ -0,0 +1,9 @@
+% Default values for the \tabletitle markup
+\tableformat{%
+ \titleformat{\vs{\bl}
+ \cl{\twelvept\bd Table \tablenumber}
+ \cl{\twelvept\tabletitle}
+ \vs{\bl}
+ }% end titleformat
+ \incontents{yes}
+}% end tableformat markup
diff --git a/macros/text1/blocks/talaris.texblock b/macros/text1/blocks/talaris.texblock
new file mode 100644
index 0000000000..0d908cc87f
--- /dev/null
+++ b/macros/text1/blocks/talaris.texblock
@@ -0,0 +1,6 @@
+% Default values for the Talaris fonts
+\selectfontset{amrom12}{twelvept}{default} % default twelve point set
+\selectfontset{amrom10}{tenpt}{default} % alternate ten point set
+\twelvept % default font specification
+\selectmathset{am97m}{mathdefault} % default math font set
+\mathdefault % default math specification
diff --git a/macros/text1/blocks/titlepg.texblock b/macros/text1/blocks/titlepg.texblock
new file mode 100644
index 0000000000..e53cfb4bdb
--- /dev/null
+++ b/macros/text1/blocks/titlepg.texblock
@@ -0,0 +1,4 @@
+% Default for the title (first) page
+\titlepageformat{\titleleadskip{1in}
+ \titlefootline{}
+}% end titlepage markup
diff --git a/macros/text1/changes.aug91 b/macros/text1/changes.aug91
new file mode 100644
index 0000000000..fbdd14b91a
--- /dev/null
+++ b/macros/text1/changes.aug91
@@ -0,0 +1,13 @@
+This is a list of changes to the basic TeXT1 sources made in August 1991.
+
+There are 5 new files:
+ [.vax_vms]compile_texix.com
+ [.vax_vms]sortcall.pen
+ [.vax_vms]texix.ch
+ [.vax_vms]texix.exe
+ [.vax_vms]vmssort.pas
+
+0 files were removed:
+
+The following files have been changed:
+ [.vax_vms]texix.vmsinfo
diff --git a/macros/text1/changes.aug92 b/macros/text1/changes.aug92
new file mode 100644
index 0000000000..465a805866
--- /dev/null
+++ b/macros/text1/changes.aug92
@@ -0,0 +1,10 @@
+This is a list of changes to the basic TeXT1 sources made in August 1992.
+
+There is 1 new file:
+ [.macros]txt1v407.tex
+
+1 file was removed:
+ [.macros]txt1v406.tex
+
+0 files were changed:
+
diff --git a/macros/text1/changes.aug93 b/macros/text1/changes.aug93
new file mode 100644
index 0000000000..44dfbab4e4
--- /dev/null
+++ b/macros/text1/changes.aug93
@@ -0,0 +1,11 @@
+This is a list of changes to the basic TeXT1 sources made in August 1993.
+
+There were no new files:
+
+no files removed:
+
+4 files were changed:
+ [.vax_vms]compile_texix.com
+ [.vax_vms]sortcall.pen
+ [.vax_vms]texix.ch
+ [.vax_vms]texix.exe
diff --git a/macros/text1/changes.dec93 b/macros/text1/changes.dec93
new file mode 100644
index 0000000000..e871c7cb91
--- /dev/null
+++ b/macros/text1/changes.dec93
@@ -0,0 +1,11 @@
+This is a list of changes to the basic TeXT1 sources made in December 1993.
+
+There is 1 new files in the WSUIPA directory:
+ [.wsuipa]compilefonts.
+
+0 files removed:
+
+2 files were changed:
+ [.wsuipa]lipaman.dvi
+ [.wsuipa]lipaman.tex
+
diff --git a/macros/text1/changes.feb91 b/macros/text1/changes.feb91
new file mode 100644
index 0000000000..0c3ec088ee
--- /dev/null
+++ b/macros/text1/changes.feb91
@@ -0,0 +1,8 @@
+This is a list of changes to the basic TeXT1 sources made in February 1991.
+
+There are 0 new files:
+
+0 files were removed:
+
+The following files have been changed:
+ [.fonts]cm*.tfm % most were corrupted, so I copied them all again
diff --git a/macros/text1/changes.jan92 b/macros/text1/changes.jan92
new file mode 100644
index 0000000000..64652b91a1
--- /dev/null
+++ b/macros/text1/changes.jan92
@@ -0,0 +1,11 @@
+This is a list of changes to the basic TeXT1 sources made in January 1992.
+
+There is 1 new files:
+ [.macros]txt1v404.tex
+
+2 files were removed:
+ [.macros]txt1v403.tex
+ [.macros]txt1m403.tex ! this was merged into txt1v404
+
+1 file was changed:
+ [.macros]text1.tex
diff --git a/macros/text1/changes.jun91 b/macros/text1/changes.jun91
new file mode 100644
index 0000000000..d3cd18e4ec
--- /dev/null
+++ b/macros/text1/changes.jun91
@@ -0,0 +1,11 @@
+This is a list of changes to the basic TeXT1 sources made in June 1991.
+
+There are 0 new files:
+
+0 files were removed:
+
+The following files have been changed:
+ [.wsuipa]ipaman.tex % minor correction
+ [.wsuipa]lipaman.tex % minor correction
+ [.models]thesis.texinput % conforms to new WSU standards
+ [.models]thesis.texmodel % conforms to new WSU standards
diff --git a/macros/text1/changes.jun96 b/macros/text1/changes.jun96
new file mode 100644
index 0000000000..79cecb817c
--- /dev/null
+++ b/macros/text1/changes.jun96
@@ -0,0 +1,14 @@
+This is a list of changes to the basic TeXT1 sources made in June 1996.
+
+There are 2 new files in the TEXT1 directory:
+ [.macros]txt1v409.tex
+ [.docs]refman.ps.gz
+
+1 file removed:
+ [.macros]txt1v408.tex
+
+1 file was changed:
+ [.macros]text1.tex
+
+file []readme.tex was moved to [.docs]readme.tex
+
diff --git a/macros/text1/changes.mar91 b/macros/text1/changes.mar91
new file mode 100644
index 0000000000..fa9e21936d
--- /dev/null
+++ b/macros/text1/changes.mar91
@@ -0,0 +1,10 @@
+This is a list of changes to the basic TeXT1 sources made in March 1991.
+
+There is 1 new file:
+ [.wsuipa]lipaman.tex % LaTeX version of the manual
+
+0 files were removed:
+
+The following files have been changed:
+ [.fonts]cm*.300pk % most were corrupted, so I FTPd them all again
+ [.wsuipa]*.300pk % ditto
diff --git a/macros/text1/changes.mar92 b/macros/text1/changes.mar92
new file mode 100644
index 0000000000..e00b9afcec
--- /dev/null
+++ b/macros/text1/changes.mar92
@@ -0,0 +1,16 @@
+This is a list of changes to the basic TeXT1 sources made in March 1992.
+
+There are 7 new files:
+ [.macros]txt1v405.tex
+ [.fonts]dt.300pk
+ [.fonts]dt300.mf
+ [.fonts]dt.mf
+ [.fonts]dt.tfm
+ [.fonts]dt.readme
+ [.texix]texix.readme
+
+1 file was removed:
+ [.macros]txt1v404.tex
+
+1 file was changed:
+ [.macros]text1.tex
diff --git a/macros/text1/changes.may92 b/macros/text1/changes.may92
new file mode 100644
index 0000000000..02ef23463c
--- /dev/null
+++ b/macros/text1/changes.may92
@@ -0,0 +1,28 @@
+This is a list of changes to the basic TeXT1 sources made in May 1992.
+
+There are 5 new files:
+ [.macros]txt1v406.tex
+ [.wsuipa]lipaman.dvi
+ [.wsuipa]readme.wsuipa
+ [.wsuipa]ipalman.tex
+ [.wsuipa]ipalmacs.sty
+
+1 file was removed:
+ [.macros]txt1v405.tex
+
+14 files were changed:
+ [.macros]text1.tex
+ [.wsuipa]iromanu.mf
+ [.wsuipa]wslipa8.tfm
+ [.wsuipa]wslipa9.tfm
+ [.wsuipa]wslipa10.tfm
+ [.wsuipa]wslipa11.tfm
+ [.wsuipa]wslipa12.tfm
+ [.wsuipa]wslipa17.tfm
+ [.wsuipa]wslipa8.300pk
+ [.wsuipa]wslipa9.300pk
+ [.wsuipa]wslipa10.300pk
+ [.wsuipa]wslipa11.300pk
+ [.wsuipa]wslipa12.300pk
+ [.wsuipa]wslipa17.300pk
+
diff --git a/macros/text1/changes.nov90 b/macros/text1/changes.nov90
new file mode 100644
index 0000000000..cc5a9bff2a
--- /dev/null
+++ b/macros/text1/changes.nov90
@@ -0,0 +1,17 @@
+This is a list of changes to the basic TeXT1 sources made in November 1990.
+
+There are 2 new files:
+ [.macros]txt1v402.tex
+ [.macros]txt1m402.tex
+
+2 files were removed:
+ [.macros]txt1v401.tex
+ [.macros]txt1m401.tex
+
+The following files have been changed:
+ [.fonts]cmbxti14.300pk
+ [.fonts]cmbxti14.mf
+ [.fonts]cmbxti14.tfm
+ [.wsuipa]ipaman.tex
+ [.macros]flexcol.tex
+ [.models]thesis.texinput
diff --git a/macros/text1/changes.nov92 b/macros/text1/changes.nov92
new file mode 100644
index 0000000000..6f5d905e0f
--- /dev/null
+++ b/macros/text1/changes.nov92
@@ -0,0 +1,9 @@
+This is a list of changes to the basic TeXT1 sources made in November 1992.
+
+There are over 160 new files in a new PC directory:
+ [.pc]
+
+0 files removed:
+
+0 files were changed:
+
diff --git a/macros/text1/changes.nov94 b/macros/text1/changes.nov94
new file mode 100644
index 0000000000..c5bed494cb
--- /dev/null
+++ b/macros/text1/changes.nov94
@@ -0,0 +1,16 @@
+This is a list of changes to the basic TeXT1 sources made in November 1994.
+
+There are 4 new files in the TEXT1 directory:
+ [.macintosh]TEXT1_INDEX_SORT.BIN
+ [.macintosh]texix_macintosh.readme
+ [.vax_vms]texix_vms.readme
+ [.macros]txt1v408.tex
+
+3 files removed:
+ [.macros]txt1v407.tex
+ [.macintosh]texix.macinfo
+ [.vax_vms]texix.vmsinfo
+
+1 file was changed:
+ [.macros]text1.tex
+
diff --git a/macros/text1/changes.sep91 b/macros/text1/changes.sep91
new file mode 100644
index 0000000000..9376fb3fb6
--- /dev/null
+++ b/macros/text1/changes.sep91
@@ -0,0 +1,12 @@
+This is a list of changes to the basic TeXT1 sources made in September 1991.
+
+There are 2 new files:
+ [.macros]txt1v403.tex
+ [.macros]txt1m403.tex
+
+2 files were removed:
+ [.macros]txt1v402.tex
+ [.macros]txt1m402.tex
+
+1 file was changed:
+ [.macros]text1.tex
diff --git a/macros/text1/cms_help_files/1--footn.help4--f b/macros/text1/cms_help_files/1--footn.help4--f
new file mode 100644
index 0000000000..fc45137071
--- /dev/null
+++ b/macros/text1/cms_help_files/1--footn.help4--f
@@ -0,0 +1,20 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \footnotestyle COMMAND |
++-----------------------------------------------------------------------------+
+
+The \footnotestyle command is always used in conjunction with the
+\footnoteformat (\fnf) command, and will set the numbering style for the
+footnotes. The format for the \footnotestyle command is:
+
+ \footnoteformat{
+ \footnotestyle{xx}
+ }
+
+Where "xx" is one of four possible values:
+
+ 1 which gives numbered footnotes 1, 2, 3, etc.
+ (1) which gives numbered footnotes included in parentheses (1), (2)
+ a which gives lettered footnotes a, b, c, etc.
+ (a) which gives lettered footnotes enclosed in parentheses (a), (b)
+
+The \footnotestyle default is \footnotestyle{(1)}
diff --git a/macros/text1/cms_help_files/1--verti.helpvert b/macros/text1/cms_help_files/1--verti.helpvert
new file mode 100644
index 0000000000..872fadaa4f
--- /dev/null
+++ b/macros/text1/cms_help_files/1--verti.helpvert
@@ -0,0 +1,21 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \verticalspace (\vs) COMMAND |
++-----------------------------------------------------------------------------+
+
+The \verticalspace (\vs) command will leave the specified amount of space or
+the specified number of blank lines in the text. This command will also force
+the following text into a new paragraph. The format for the \verticalspace
+(\vs) command is:
+
+ \verticalspace{x}
+
+Where "x" is the number of blank lines or space you wish to leave. For
+example,
+
+ \verticalspace{4\bl}
+
+will leave four blank lines, and
+
+ \verticalspace{2in}
+
+will leave two inches of blank space.
diff --git a/macros/text1/cms_help_files/10noter.helpfoot b/macros/text1/cms_help_files/10noter.helpfoot
new file mode 100644
index 0000000000..a67f3982ae
--- /dev/null
+++ b/macros/text1/cms_help_files/10noter.helpfoot
@@ -0,0 +1,14 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \notereferencefont COMMAND |
++-----------------------------------------------------------------------------+
+
+The \notereferencefont command is always used in conjunction with the
+\footnoteformat (\fnf) command, and will determine the font in which the
+footnote reference numbers in the text of the notes are printed. The format
+for the \notereferencefont command is:
+
+ \footnoteformat{
+ \notereferencefont{xx}
+ }
+
+Where "xx" is some font designations such as \bf, \it, \littlefont, etc.
diff --git a/macros/text1/cms_help_files/11noter.helpfoot b/macros/text1/cms_help_files/11noter.helpfoot
new file mode 100644
index 0000000000..8b39bf09ae
--- /dev/null
+++ b/macros/text1/cms_help_files/11noter.helpfoot
@@ -0,0 +1,23 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \notereferencestyle COMMAND |
++-----------------------------------------------------------------------------+
+
+The \notereferencestyle command is always used in conjunction with the
+\footnoteformat (\fnf) command, and will determine the style in which the
+footnote reference numbers within the notes are printed. There are six
+possible note numbering styles:
+ \notereferencestyle{1} for numbered footnotes "1, 2, 3, ..."
+ \notereferencestyle{1.} for numbered footnotes "1., 2., 3., ..."
+ \notereferencestyle{(1)} for numbered footnotes "(1), (2), (3), ..."
+ \notereferencestyle{a} for lettered footnotes "a, b, c, ..."
+ \notereferencestyle{a.} for lettered footnotes "a., b., c., ..."
+ \notereferencestyle{(a)} for lettered footnotes "(a), (b), (c), ..."
+
+The format for the \notereferencestyle command is:
+
+ \footnoteformat{
+ \notereferencestyle{xx}
+ }
+
+Where "xx" is one of the six valid style designations given above. The default
+is \notereferencestyle{1}.
diff --git a/macros/text1/cms_help_files/12noter.helpfoot b/macros/text1/cms_help_files/12noter.helpfoot
new file mode 100644
index 0000000000..c74fb65186
--- /dev/null
+++ b/macros/text1/cms_help_files/12noter.helpfoot
@@ -0,0 +1,16 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \notereferencegutter COMMAND |
++-----------------------------------------------------------------------------+
+
+The \notereferencegutter command is always used in conjunction with the
+\footnoteformat (\fnf) command, and will determine the amount of space between
+the footnote reference number and the text of the footnotes. The format for
+the \notereferencegutter command is:
+
+ \footnoteformat{
+ \notereferencegutter{xx}
+ }
+
+Where "xx" is any number and valid TeX measurement (in, pc, pts, etc.).
+\notereferencegutter{1em} is the default and will give one emspace between the
+footnote reference numbers and the text of the notes.
diff --git a/macros/text1/cms_help_files/1block.helpbloc b/macros/text1/cms_help_files/1block.helpbloc
new file mode 100644
index 0000000000..e0c19a24b8
--- /dev/null
+++ b/macros/text1/cms_help_files/1block.helpbloc
@@ -0,0 +1,19 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \blockquotebegin (\bqb) COMMAND |
++-----------------------------------------------------------------------------+
+
+The \blockquotebegin (\bqb) command will begin a new paragraph and indent the
+following text the amount of the current paragraph indentation on both the left
+and right margins. If the current paragraph indentation value is zero, the
+indentation for the block quote will be one-half inch. The format for the
+\blockquotebegin (\bqb) command is:
+
+ \blockquotebegin
+ tttttt
+ tttttt
+ tttttt
+ \blockquoteend
+
+Where the "tttttt" designates the text included as the block quote. The
+\blockquotebegin (\bqb) command is always used in conjunction with the
+\blockquoteend (\bqe) command.
diff --git a/macros/text1/cms_help_files/1every.helpfoot b/macros/text1/cms_help_files/1every.helpfoot
new file mode 100644
index 0000000000..af55b6bbd7
--- /dev/null
+++ b/macros/text1/cms_help_files/1every.helpfoot
@@ -0,0 +1,21 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \everyfootnote COMMAND |
++-----------------------------------------------------------------------------+
+
+The \everyfootnote command is always used in conjunction with the
+\footnoteformat (\fnf) command, and will set options for the paragraph format
+within the footnote. The format for the \fortmatfootnote command is:
+
+ \footnoteformat{
+ \everyfootnote{options
+ }}
+
+Where "options" is one or more of the following.
+
+ \paragraphindent \paragraphskip \leftindent
+ \rightindent \rightragged \interlineskip
+ \singlespace \doublespace font changes
+ \justify
+
+For more information on any of these options see the help screen under the
+markup menu for that particular command.
diff --git a/macros/text1/cms_help_files/1everye.helpendn b/macros/text1/cms_help_files/1everye.helpendn
new file mode 100644
index 0000000000..de87d7cf5d
--- /dev/null
+++ b/macros/text1/cms_help_files/1everye.helpendn
@@ -0,0 +1,21 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \everyendnote COMMAND |
++-----------------------------------------------------------------------------+
+
+The \everyendnote command is always used in conjunction with the \endnoteformat
+(\enf) command, and will set options for the paragraph format within the
+endnote. The format for the \everyendnote command is:
+
+ \endnoteformat{
+ \everyendnote{options
+ }}
+
+Where "options" is one or more of the following.
+
+ \paragraphindent \paragraphskip \leftindent
+ \rightindent \rightragged \interlineskip
+ \singlespace \doublespace font changes
+ \justify
+
+For more information on any of these options see the help screen under the
+markup menu for that particular command.
diff --git a/macros/text1/cms_help_files/1everyf.helpfoot b/macros/text1/cms_help_files/1everyf.helpfoot
new file mode 100644
index 0000000000..ecd02acc90
--- /dev/null
+++ b/macros/text1/cms_help_files/1everyf.helpfoot
@@ -0,0 +1,21 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \everyfootnote COMMAND |
++-----------------------------------------------------------------------------+
+
+The \everyfootnote command is always used in conjunction with the
+\footnoteformat (\fnf) command, and will set options for the paragraph format
+within the footnote. The format for the \everyfootnote command is:
+
+ \footnoteformat{
+ \everyfootnote{options
+ }}
+
+Where "options" is one or more of the following.
+
+ \paragraphindent \paragraphskip \leftindent
+ \rightindent \rightragged \interlineskip
+ \singlespace \doublespace font changes
+ \justify
+
+For more information on any of these options see the help screen under the
+markup menu for that particular command.
diff --git a/macros/text1/cms_help_files/1numbe.helpsubh b/macros/text1/cms_help_files/1numbe.helpsubh
new file mode 100644
index 0000000000..9ba197b3e8
--- /dev/null
+++ b/macros/text1/cms_help_files/1numbe.helpsubh
@@ -0,0 +1,13 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \numberingstyle COMMAND |
++-----------------------------------------------------------------------------+
+
+The \numberingstyle command is always used in conjunction with the
+\subheadbformat command and will set the style of numbering for the subheadb
+titles. The format for the \numberingstyle command is:
+
+ \subheadbformat{\numberingstyle{xxx}
+ }
+
+where "xxx" is A, 1, or I. The default \numberingstyle for subheadb is
+\numberingstyle{1}.
diff --git a/macros/text1/cms_help_files/1number.helpsubh b/macros/text1/cms_help_files/1number.helpsubh
new file mode 100644
index 0000000000..9f2fe89806
--- /dev/null
+++ b/macros/text1/cms_help_files/1number.helpsubh
@@ -0,0 +1,13 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \numberingstyle COMMAND |
++-----------------------------------------------------------------------------+
+
+The \numberingstyle command is always used in conjunction with the
+\subheadaformat command and will set the style of numbering for the subheada
+titles. The format for the \numberingstyle command is:
+
+ \subheadaformat{\numberingstyle{xxx}
+ }
+
+where "xxx" is A, 1, or I. The default \numberingstyle for subheada is
+\numberingstyle{1}.
diff --git a/macros/text1/cms_help_files/2--footn.help4--f b/macros/text1/cms_help_files/2--footn.help4--f
new file mode 100644
index 0000000000..24d6dbb6ca
--- /dev/null
+++ b/macros/text1/cms_help_files/2--footn.help4--f
@@ -0,0 +1,15 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \footnotereferencefont COMMAND |
++-----------------------------------------------------------------------------+
+
+The \footnotereferencefont command is always used in conjunction with the
+\footnotereferenceformat command, and establishes what font will be used to set
+the footnote reference numbers. The format for the \footnotereferencefont
+command is:
+
+ \footnotereferenceformat{
+ \footnotereferencefont{xx}
+ }
+
+Where "xx" is a valid font style (\sf, \bf, \it, etc.). The default footnote
+reference font is the standardface font.
diff --git a/macros/text1/cms_help_files/2--verti.helpvert b/macros/text1/cms_help_files/2--verti.helpvert
new file mode 100644
index 0000000000..7b10e91285
--- /dev/null
+++ b/macros/text1/cms_help_files/2--verti.helpvert
@@ -0,0 +1,15 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \verticalspacekeep (\vsk) COMMAND |
++-----------------------------------------------------------------------------+
+
+The \verticalspacekeep (\vsk) command will leave vertical space at the
+beginning of a page or for a figure, plate, table, or any other reason when you
+need to have the entire space specified kept intact. If the specified space
+will not fit on the current page, it will be printed at the top of the
+following page and the remaining current page will remain blank, causing you to
+receive an underfull vbox warning. The \verticalspacekeep (\vsk) format is:
+
+ \verticalspacekeep{xx}
+
+Where "xx" is the amount of vertical space expressed in any valid TeX
+measurement (pt, pc, in, etc.) or in number of lines to be left for the figure.
diff --git a/macros/text1/cms_help_files/2block.helpbloc b/macros/text1/cms_help_files/2block.helpbloc
new file mode 100644
index 0000000000..2e72dd23cf
--- /dev/null
+++ b/macros/text1/cms_help_files/2block.helpbloc
@@ -0,0 +1,16 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \blockquoteend (\bqe) COMMAND |
++-----------------------------------------------------------------------------+
+
+The \blockquoteend (\bqe) command ends a block quote and starts a new
+paragraph. The format for the \blockquoteend (\bqe) command is:
+
+ \blockquotebegin
+ tttttt
+ tttttt
+ tttttt
+ \blockquoteend
+
+Where the "tttttt" designates the text included as the block quote. The
+\blockquoteend (\bqe) command is always used in conjunction with the
+\blockquotebegin (\bqb) command.
diff --git a/macros/text1/cms_help_files/2footn.helpfoot b/macros/text1/cms_help_files/2footn.helpfoot
new file mode 100644
index 0000000000..f20d126e79
--- /dev/null
+++ b/macros/text1/cms_help_files/2footn.helpfoot
@@ -0,0 +1,21 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \footnotedivider COMMAND |
++-----------------------------------------------------------------------------+
+
+The \footnotedivider command is always used in conjunction with the
+\footnoteformat (\fnf) command, and will set the length for the line that
+divides the page text from the beginning of the footnote text. The format for
+the \footnotedivider command is:
+
+ \footnoteformat{
+ \footnotedivider{xx}
+ }
+
+Where "xx" is any valid TeX measurement (pt, pc, in, etc.). For example,
+
+ \footnoteformat{
+ \footnotedivider{1.5in}
+ }
+
+would make the horizontal rule before the footnote text to be one and one-half
+inches long.
diff --git a/macros/text1/cms_help_files/2footno.helpfoot b/macros/text1/cms_help_files/2footno.helpfoot
new file mode 100644
index 0000000000..f20d126e79
--- /dev/null
+++ b/macros/text1/cms_help_files/2footno.helpfoot
@@ -0,0 +1,21 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \footnotedivider COMMAND |
++-----------------------------------------------------------------------------+
+
+The \footnotedivider command is always used in conjunction with the
+\footnoteformat (\fnf) command, and will set the length for the line that
+divides the page text from the beginning of the footnote text. The format for
+the \footnotedivider command is:
+
+ \footnoteformat{
+ \footnotedivider{xx}
+ }
+
+Where "xx" is any valid TeX measurement (pt, pc, in, etc.). For example,
+
+ \footnoteformat{
+ \footnotedivider{1.5in}
+ }
+
+would make the horizontal rule before the footnote text to be one and one-half
+inches long.
diff --git a/macros/text1/cms_help_files/2skipbe.helpendn b/macros/text1/cms_help_files/2skipbe.helpendn
new file mode 100644
index 0000000000..2f7d5f5372
--- /dev/null
+++ b/macros/text1/cms_help_files/2skipbe.helpendn
@@ -0,0 +1,21 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \skipbefore COMMAND |
++-----------------------------------------------------------------------------+
+
+The \skipbefore command is always used in conjunction with the \endnoteformat
+(\enf) command, and will set the amount of vertical space before the endnotes
+are printed. The format for the \skipbefore command is:
+
+ \endnoteformat{
+ \skipbefore{xx}
+ }
+
+Where "xx" is expressed in \baselines or any valid TeX measurement (pt, pc, in,
+etc.). For example,
+
+ \endnoteformat{
+ \skipbefore{1.5in}
+ }
+
+would put one and one-half inches of vertical space before the beginning of the
+endnote text.
diff --git a/macros/text1/cms_help_files/2title.helpsubh b/macros/text1/cms_help_files/2title.helpsubh
new file mode 100644
index 0000000000..98cab4d1b5
--- /dev/null
+++ b/macros/text1/cms_help_files/2title.helpsubh
@@ -0,0 +1,20 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \titleformat COMMAND |
++-----------------------------------------------------------------------------+
+
+The \titleformat command is always used in conjunction with the \subheadbformat
+command and will set options for the subheadb titles. The format for the
+\titleformat command is:
+
+ \subheadbformat{\titleformat{
+ \vsk{24pt}
+ {\it \subheadbtitle}
+ \vs{12pt}}
+ }
+
+This is the default for \titleformat. Each \subheadb command will space down 24
+points, print the \subheadbtitle in italics and space down 12 points to resume
+with the text.
+
+For more information on the \subheadbtitle command, see the help screen under
+the markup menu for that particular command.
diff --git a/macros/text1/cms_help_files/3befor.helpfoot b/macros/text1/cms_help_files/3befor.helpfoot
new file mode 100644
index 0000000000..98eb00954f
--- /dev/null
+++ b/macros/text1/cms_help_files/3befor.helpfoot
@@ -0,0 +1,21 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \beforefootnoteskip COMMAND |
++-----------------------------------------------------------------------------+
+
+The \beforefootnoteskip command is always used in conjunction with the
+\footnoteformat (\fnf) command, and will set the amount of vertical space
+between the page text and the footnote divider. The format for the
+\beforefootnoteskip command is:
+
+ \footnoteformat{
+ \beforefootnoteskip{xx}
+ }
+
+Where "xx" is any valid TeX measurement (pt, pc, in, etc.). For example,
+
+ \footnoteformat{
+ \beforefootnoteskip{1.5in}
+ }
+
+would put one and one-half inches of vertical space between the page text and
+the footnote dividing rule.
diff --git a/macros/text1/cms_help_files/3block.helpmenu b/macros/text1/cms_help_files/3block.helpmenu
new file mode 100644
index 0000000000..b8517f05b6
--- /dev/null
+++ b/macros/text1/cms_help_files/3block.helpmenu
@@ -0,0 +1,14 @@
+ Menu for BLOCKQUOTEFORMAT -- TEXT1
+
+A file may be selected for viewing by placing the cursor under any character
+of the file wanted and pressing the PF 1 key. A MENU file is indicated when
+a name is preceded by an asterisk (*). If you are using a terminal that
+doesn't have a CURSOR or PF KEYS then you MUST TYPE in the COMPLETE HELP
+COMMAND with operands and options. For a description of the operands and
+options type HELP HELP.
+
+
+skipafter (space after block quotes)
+skipbefore (space before block quotes)
+blockquoteparagraphformat (establishing paragraph options
+ within block quotes)
diff --git a/macros/text1/cms_help_files/3every.helpbloc b/macros/text1/cms_help_files/3every.helpbloc
new file mode 100644
index 0000000000..7a2445ec78
--- /dev/null
+++ b/macros/text1/cms_help_files/3every.helpbloc
@@ -0,0 +1,21 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \everyblockquote COMMAND |
++-----------------------------------------------------------------------------+
+
+The \everyblockquote command is always used in conjunction with the
+\blockquoteformat (\bqf) command, and will set options for the paragraph format
+within the blockquote. The format for the \everyblockquote command is:
+
+ \blockquoteformat{
+ \everyblockquote{options
+ }}
+
+Where "options" is one or more of the following.
+
+ \paragraphindent \paragraphskip \interlineskip
+ \justify \rightragged font changes
+ \singlespace \doublespace \leftindent
+ \rightindent
+
+For more information on any of these options see the help screen under the
+markup menu for that particular command.
diff --git a/macros/text1/cms_help_files/3incon.helpsubh b/macros/text1/cms_help_files/3incon.helpsubh
new file mode 100644
index 0000000000..e58c80f034
--- /dev/null
+++ b/macros/text1/cms_help_files/3incon.helpsubh
@@ -0,0 +1,15 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \incontents COMMAND |
++-----------------------------------------------------------------------------+
+
+The \incontents command is always used in conjunction with the \subheadbformat
+command and will determine whether subheadb titles are included in the Table of
+Contents. The format for the \incontents command is:
+
+ \subheadbformat{
+ \incontents{yes}
+ }
+
+By default, the subheadb titles will not be included in the Table of Contents.
+If you want the subheadb titles included in the Table of Contents, enter
+\incontents{yes} within the \subheadbformat command.
diff --git a/macros/text1/cms_help_files/3incont.helpsubh b/macros/text1/cms_help_files/3incont.helpsubh
new file mode 100644
index 0000000000..b5f4b3d717
--- /dev/null
+++ b/macros/text1/cms_help_files/3incont.helpsubh
@@ -0,0 +1,15 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \incontents COMMAND |
++-----------------------------------------------------------------------------+
+
+The \incontents command is always used in conjunction with the \subheadaformat
+command and will determine whether subheada titles are included in the Table of
+Contents. The format for the \incontents command is:
+
+ \subheadaformat{
+ \incontents{yes}
+ }
+
+By default, the subheada titles will be included in the Table of Contents. If
+you do not want the subheada titles included in the Table of Contents, enter
+\incontents{no} within the \subheadaformat command.
diff --git a/macros/text1/cms_help_files/3skipb.helpfoot b/macros/text1/cms_help_files/3skipb.helpfoot
new file mode 100644
index 0000000000..bc6ebaf65d
--- /dev/null
+++ b/macros/text1/cms_help_files/3skipb.helpfoot
@@ -0,0 +1,22 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \skipbeforedivider COMMAND |
++-----------------------------------------------------------------------------+
+
+The \skipbeforedivider command is always used in conjunction with the
+\footnoteformat (\fnf) command, and will set the amount of vertical space
+between the page text and the footnote divider. The format for the
+\skipbeforedivider command is:
+
+ \footnoteformat{
+ \skipbeforedivider{xx}
+ }
+
+Where "xx" is expressed in \baselines or any valid TeX measurement (pt, pc, in,
+etc.). For example,
+
+ \footnoteformat{
+ \skipbeforedivider{1.5in}
+ }
+
+would put one and one-half inches of vertical space between the page text and
+the footnote dividing rule.
diff --git a/macros/text1/cms_help_files/3skipbe.helpfoot b/macros/text1/cms_help_files/3skipbe.helpfoot
new file mode 100644
index 0000000000..bc6ebaf65d
--- /dev/null
+++ b/macros/text1/cms_help_files/3skipbe.helpfoot
@@ -0,0 +1,22 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \skipbeforedivider COMMAND |
++-----------------------------------------------------------------------------+
+
+The \skipbeforedivider command is always used in conjunction with the
+\footnoteformat (\fnf) command, and will set the amount of vertical space
+between the page text and the footnote divider. The format for the
+\skipbeforedivider command is:
+
+ \footnoteformat{
+ \skipbeforedivider{xx}
+ }
+
+Where "xx" is expressed in \baselines or any valid TeX measurement (pt, pc, in,
+etc.). For example,
+
+ \footnoteformat{
+ \skipbeforedivider{1.5in}
+ }
+
+would put one and one-half inches of vertical space between the page text and
+the footnote dividing rule.
diff --git a/macros/text1/cms_help_files/3textre.helpendn b/macros/text1/cms_help_files/3textre.helpendn
new file mode 100644
index 0000000000..2649fb0153
--- /dev/null
+++ b/macros/text1/cms_help_files/3textre.helpendn
@@ -0,0 +1,17 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \textreferenceposition COMMAND |
++-----------------------------------------------------------------------------+
+
+The \textreferenceposition command is always used in conjunction with the
+\endnoteformat (\enf) command, and will determine whether the endnote reference
+number within the text is a superscript number or not. The format for the
+\textreferenceposition command is:
+
+ \endnoteformat{
+ \textreferenceposition{xx}
+ }
+
+Where "xx" is either "up" or "down". \textreferenceposition{up} will give
+superscript numbers for the endnote reference numbers within the text.
+\textreferenceposition{down} will give print the endnote reference numbers
+within the text on the baseline.
diff --git a/macros/text1/cms_help_files/4footn.helpmenu b/macros/text1/cms_help_files/4footn.helpmenu
new file mode 100644
index 0000000000..e0ab64ea02
--- /dev/null
+++ b/macros/text1/cms_help_files/4footn.helpmenu
@@ -0,0 +1,18 @@
+ Menu for FOOTNOTEREFERENCEFORMAT Commands -- TEXT1
+
+A file may be selected for viewing by placing the cursor under any character
+of the file wanted and pressing the PF 1 key. A MENU file is indicated when
+a name is preceded by an asterisk (*). If you are using a terminal that
+doesn't have a CURSOR or PF KEYS then you MUST TYPE in the COMPLETE HELP
+COMMAND with operands and options. For a description of the operands and
+options type HELP HELP.
+
+
+1--footnotestyle (the numbering style of the footnotes)
+2--footnotereferencefont (the font used to set footnote
+ reference numbers)
+3--precede (positioning of the footnote reference number before word)
+4--follow (positioning the footnote reference number after the word)
+5--superscript (superscript footnote reference numbers)
+6--notsuperscript (footnote reference numbers not superscript)
+
diff --git a/macros/text1/cms_help_files/4refer.helpfoot b/macros/text1/cms_help_files/4refer.helpfoot
new file mode 100644
index 0000000000..08e7cd3e11
--- /dev/null
+++ b/macros/text1/cms_help_files/4refer.helpfoot
@@ -0,0 +1,16 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \referenceposition COMMAND |
++-----------------------------------------------------------------------------+
+
+The \referenceposition command is always used in conjunction with the
+\footnoteformat (\fnf) command, and will determine whether the footnote
+reference number is a superscript number or not. The format for the
+\referenceposition command is:
+
+ \footnoteformat{
+ \referenceposition{xx}
+ }
+
+Where "xx" is either "up" or "down". \referenceposition{up} will give
+superscript numbers for the footnote reference numbers.
+\referenceposition{down} will give regular-sized footnote reference numbers.
diff --git a/macros/text1/cms_help_files/4skipaf.helpfoot b/macros/text1/cms_help_files/4skipaf.helpfoot
new file mode 100644
index 0000000000..ba168c90f2
--- /dev/null
+++ b/macros/text1/cms_help_files/4skipaf.helpfoot
@@ -0,0 +1,22 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \skipafterdivider COMMAND |
++-----------------------------------------------------------------------------+
+
+The \skipafterdivider command is always used in conjunction with the
+\footnoteformat (\fnf) command, and will set the amount of vertical space
+between the footnote divider and the beginning of the text of the first
+footnote. The format for the \skipafterdivider command is:
+
+ \footnoteformat{
+ \skipafterdivider{xx}
+ }
+
+Where "xx" is expressed in \baselines or any valid TeX measurement (pt, pc, in,
+etc.). For example,
+
+ \footnoteformat{
+ \skipafterdivider{5pt}
+ }
+
+would put five points of vertical space between the the footnote dividing rule
+and the text of the first footnote.
diff --git a/macros/text1/cms_help_files/4skipb.helpbloc b/macros/text1/cms_help_files/4skipb.helpbloc
new file mode 100644
index 0000000000..c1430e9b33
--- /dev/null
+++ b/macros/text1/cms_help_files/4skipb.helpbloc
@@ -0,0 +1,17 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \skipbefore COMMAND |
++-----------------------------------------------------------------------------+
+
+The \skipbefore command is always used in conjunction with the
+\blockquoteformat (\bqf) command, and will set the amount of vertical space
+that is to be skipped before the blockquote begins. The format for the
+\skipbefore command is:
+
+ \blockquoteformat{
+ \skipbefore{xx}
+ }
+
+Where "xx" is the amount of space desired, expressed in number of lines or any
+legal TeX measurement (pt, pc, in, etc.). The amount of space indicated in the
+\skipbefore command will be added to the current paragraph skip before
+beginning the first paragraph of the blockquote.
diff --git a/macros/text1/cms_help_files/4textre.helpendn b/macros/text1/cms_help_files/4textre.helpendn
new file mode 100644
index 0000000000..f80277833c
--- /dev/null
+++ b/macros/text1/cms_help_files/4textre.helpendn
@@ -0,0 +1,14 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \textreferencefont COMMAND |
++-----------------------------------------------------------------------------+
+
+The \textreferencefont command is always used in conjunction with the
+\endnoteformat (\enf) command, and will determine the font in which the endnote
+reference numbers in the text are printed. The format for the
+\textreferencefont command is:
+
+ \endnoteformat{
+ \textreferencefont{xx}
+ }
+
+Where "xx" is some font designations such as \bf, \it, \littlefont, etc.
diff --git a/macros/text1/cms_help_files/5refer.helpfoot b/macros/text1/cms_help_files/5refer.helpfoot
new file mode 100644
index 0000000000..5f70c16e4e
--- /dev/null
+++ b/macros/text1/cms_help_files/5refer.helpfoot
@@ -0,0 +1,16 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \referenceplacement COMMAND |
++-----------------------------------------------------------------------------+
+
+The \referenceplacement command is always used in conjunction with the
+\footnoteformat (\fnf) command, and will determine whether the footnote
+reference number is placed before or after the footnote reference word. The
+format for the \referenceplacement command is:
+
+ \footnoteformat{
+ \referenceplacement{xx}
+ }
+
+Where "xx" is either "before" or "after". \referenceplacement{after} will
+place the footnote reference number after the word. \referenceplacement{before}
+will place the footnote reference number before the word referenced.
diff --git a/macros/text1/cms_help_files/5skipa.helpbloc b/macros/text1/cms_help_files/5skipa.helpbloc
new file mode 100644
index 0000000000..3a4794e3a1
--- /dev/null
+++ b/macros/text1/cms_help_files/5skipa.helpbloc
@@ -0,0 +1,18 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \skipafter COMMAND |
++-----------------------------------------------------------------------------+
+
+The \skipafter command is always used in conjunction with the \blockquoteformat
+(\bqf) command, and will set the amount of vertical space that is to be skipped
+after the last paragraph of the blockquote ends. The format for the \skipafter
+command is:
+
+ \blockquoteformat{
+ \skipafter{xx}
+ }
+
+Where "xx" is the amount of space desired, expressed in number of lines or any
+legal TeX measurement (pt, pc, in, etc.). The amount of space indicated in the
+\skipafter command will be added to the current paragraph skip after ending the
+last paragraph of the blockquote and before beginning the next paragraph of the
+regular text.
diff --git a/macros/text1/cms_help_files/5textre.helpendn b/macros/text1/cms_help_files/5textre.helpendn
new file mode 100644
index 0000000000..96e3aab143
--- /dev/null
+++ b/macros/text1/cms_help_files/5textre.helpendn
@@ -0,0 +1,23 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \textreferencestyle COMMAND |
++-----------------------------------------------------------------------------+
+
+The \textreferencestyle command is always used in conjunction with the
+\endnoteformat (\enf) command, and will determine the style in which the
+endnote reference numbers within the text are printed. There are six possible
+text numbering styles:
+ \textreferencestyle{1} for numbered endnotes "1, 2, 3, ..."
+ \textreferencestyle{[1]} for numbered endnotes "[1], [2], ..."
+ \textreferencestyle{(1)} for numbered endnotes "(1), (2), (3), ..."
+ \textreferencestyle{a} for lettered endnotes "a, b, c, ..."
+ \textreferencestyle{[a]} for lettered endnotes "[a], [b] ..."
+ \textreferencestyle{(a)} for lettered endnotes "(a), (b), (c), ..."
+
+The format for the \textreferencestyle command is:
+
+ \endnoteformat{
+ \textreferencestyle{xx}
+ }
+
+Where "xx" is one of the six valid style designations given above. The default
+is \textreferencestyle{[1]}.
diff --git a/macros/text1/cms_help_files/5textre.helpfoot b/macros/text1/cms_help_files/5textre.helpfoot
new file mode 100644
index 0000000000..518c8f518d
--- /dev/null
+++ b/macros/text1/cms_help_files/5textre.helpfoot
@@ -0,0 +1,17 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \textreferenceposition COMMAND |
++-----------------------------------------------------------------------------+
+
+The \textreferenceposition command is always used in conjunction with the
+\footnoteformat (\fnf) command, and will determine whether the footnote
+reference number within the text is a superscript number or not. The format
+for the \textreferenceposition command is:
+
+ \footnoteformat{
+ \textreferenceposition{xx}
+ }
+
+Where "xx" is either "up" or "down". \textreferenceposition{up} will give
+superscript numbers for the footnote reference numbers within the text.
+\textreferenceposition{down} will give print the footnote reference numbers
+within the text on the baseline.
diff --git a/macros/text1/cms_help_files/6notere.helpendn b/macros/text1/cms_help_files/6notere.helpendn
new file mode 100644
index 0000000000..1c6002625d
--- /dev/null
+++ b/macros/text1/cms_help_files/6notere.helpendn
@@ -0,0 +1,17 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \notereferenceposition COMMAND |
++-----------------------------------------------------------------------------+
+
+The \notereferenceposition command is always used in conjunction with the
+\endnoteformat (\enf) command, and will determine whether the endnote reference
+number within the text of the endnotes is a superscript number or not. The
+format for the \notereferenceposition command is:
+
+ \endnoteformat{
+ \notereferenceposition{xx}
+ }
+
+Where "xx" is either "up" or "down". \notereferenceposition{up} will give
+superscript numbers for the endnote reference numbers in the notes.
+\notereferenceposition{down} will give print the endnote reference numbers in
+the notes on the baseline.
diff --git a/macros/text1/cms_help_files/6refer.helpfoot b/macros/text1/cms_help_files/6refer.helpfoot
new file mode 100644
index 0000000000..55dda0ef13
--- /dev/null
+++ b/macros/text1/cms_help_files/6refer.helpfoot
@@ -0,0 +1,14 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \referencefont COMMAND |
++-----------------------------------------------------------------------------+
+
+The \referencefont command is always used in conjunction with the
+\footnoteformat (\fnf) command, and will determine the font in which the
+footnote reference numbers are printed. The format for the \referencefont
+command is:
+
+ \footnoteformat{
+ \referencefont{xx}
+ }
+
+Where "xx" is some font designations such as \bf, \it, \littlefont, etc.
diff --git a/macros/text1/cms_help_files/6textre.helpfoot b/macros/text1/cms_help_files/6textre.helpfoot
new file mode 100644
index 0000000000..79eb463bae
--- /dev/null
+++ b/macros/text1/cms_help_files/6textre.helpfoot
@@ -0,0 +1,17 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \textreferenceplacement COMMAND |
++-----------------------------------------------------------------------------+
+
+The \textreferenceplacement command is always used in conjunction with the
+\footnoteformat (\fnf) command, and will determine whether the footnote
+reference number within the text is placed before or after the footnote
+reference word. The format for the \textreferenceplacement command is:
+
+ \footnoteformat{
+ \textreferenceplacement{xx}
+ }
+
+Where "xx" is either "before" or "after". \textreferenceplacement{after} will
+place the footnote reference number after the word in the text.
+\textreferenceplacement{before} will place the footnote reference number before
+the referenced word in the text.
diff --git a/macros/text1/cms_help_files/7notere.helpendn b/macros/text1/cms_help_files/7notere.helpendn
new file mode 100644
index 0000000000..8b29d46327
--- /dev/null
+++ b/macros/text1/cms_help_files/7notere.helpendn
@@ -0,0 +1,14 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \notereferencefont COMMAND |
++-----------------------------------------------------------------------------+
+
+The \notereferencefont command is always used in conjunction with the
+\endnoteformat (\enf) command, and will determine the font in which the endnote
+reference numbers in the text of the notes are printed. The format for the
+\notereferencefont command is:
+
+ \endnoteformat{
+ \notereferencefont{xx}
+ }
+
+Where "xx" is some font designations such as \bf, \it, \littlefont, etc.
diff --git a/macros/text1/cms_help_files/7refer.helpfoot b/macros/text1/cms_help_files/7refer.helpfoot
new file mode 100644
index 0000000000..a3d8622991
--- /dev/null
+++ b/macros/text1/cms_help_files/7refer.helpfoot
@@ -0,0 +1,21 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \referencestyle COMMAND |
++-----------------------------------------------------------------------------+
+
+The \referencestyle command is always used in conjunction with the
+\footnoteformat (\fnf) command, and will determine the style in which the
+footnote reference numbers are printed. There are four possible numbering
+styles:
+ \referencestyle{1} for numbered footnotes "1, 2, 3, ..."
+ \referencestyle{(1)} for numbered footnotes "(1), (2), (3), ..."
+ \referencestyle{a} for lettered footnotes "a, b, c, ..."
+ \referencestyle{(a)} for lettered footnotes "(a), (b), (c), ..."
+
+The format for the \referencestyle command is:
+
+ \footnoteformat{
+ \referencestyle{xx}
+ }
+
+Where "xx" is one of the four valid style designations given above. The
+default is \referencestyle{(1)}.
diff --git a/macros/text1/cms_help_files/7textre.helpfoot b/macros/text1/cms_help_files/7textre.helpfoot
new file mode 100644
index 0000000000..b827caaa77
--- /dev/null
+++ b/macros/text1/cms_help_files/7textre.helpfoot
@@ -0,0 +1,14 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \textreferencefont COMMAND |
++-----------------------------------------------------------------------------+
+
+The \textreferencefont command is always used in conjunction with the
+\footnoteformat (\fnf) command, and will determine the font in which the
+footnote reference numbers in the text are printed. The format for the
+\textreferencefont command is:
+
+ \footnoteformat{
+ \textreferencefont{xx}
+ }
+
+Where "xx" is some font designations such as \bf, \it, \littlefont, etc.
diff --git a/macros/text1/cms_help_files/8notere.helpendn b/macros/text1/cms_help_files/8notere.helpendn
new file mode 100644
index 0000000000..0728adcc36
--- /dev/null
+++ b/macros/text1/cms_help_files/8notere.helpendn
@@ -0,0 +1,23 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \notereferencestyle COMMAND |
++-----------------------------------------------------------------------------+
+
+The \notereferencestyle command is always used in conjunction with the
+\endnoteformat (\enf) command, and will determine the style in which the
+endnote reference numbers within the notes are printed. There are six possible
+note numbering styles:
+ \notereferencestyle{1} for numbered endnotes "1, 2, 3, ..."
+ \notereferencestyle{[1]} for numbered endnotes "[1], [2] ..."
+ \notereferencestyle{(1)} for numbered endnotes "(1), (2), (3), ..."
+ \notereferencestyle{a} for lettered endnotes "a, b, c, ..."
+ \notereferencestyle{[a]} for lettered endnotes "[a], [b] ..."
+ \notereferencestyle{(a)} for lettered endnotes "(a), (b), (c), ..."
+
+The format for the \notereferencestyle command is:
+
+ \endnoteformat{
+ \notereferencestyle{xx}
+ }
+
+Where "xx" is one of the six valid style designations given above. The default
+is \notereferencestyle{1}.
diff --git a/macros/text1/cms_help_files/8textre.helpfoot b/macros/text1/cms_help_files/8textre.helpfoot
new file mode 100644
index 0000000000..5cef5c7d45
--- /dev/null
+++ b/macros/text1/cms_help_files/8textre.helpfoot
@@ -0,0 +1,23 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \textreferencestyle COMMAND |
++-----------------------------------------------------------------------------+
+
+The \textreferencestyle command is always used in conjunction with the
+\footnoteformat (\fnf) command, and will determine the style in which the
+footnote reference numbers within the text are printed. There are six possible
+text numbering styles:
+ \textreferencestyle{1} for numbered footnotes "1, 2, 3, ..."
+ \textreferencestyle{1.} for numbered footnotes "1., 2., 3., ..."
+ \textreferencestyle{(1)} for numbered footnotes "(1), (2), (3), ..."
+ \textreferencestyle{a} for lettered footnotes "a, b, c, ..."
+ \textreferencestyle{a.} for lettered footnotes "a., b., c., ..."
+ \textreferencestyle{(a)} for lettered footnotes "(a), (b), (c), ..."
+
+The format for the \textreferencestyle command is:
+
+ \footnoteformat{
+ \textreferencestyle{xx}
+ }
+
+Where "xx" is one of the six valid style designations given above. The default
+is \textreferencestyle{1}.
diff --git a/macros/text1/cms_help_files/9notere.helpendn b/macros/text1/cms_help_files/9notere.helpendn
new file mode 100644
index 0000000000..1c9007ef54
--- /dev/null
+++ b/macros/text1/cms_help_files/9notere.helpendn
@@ -0,0 +1,16 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \notereferencegutter COMMAND |
++-----------------------------------------------------------------------------+
+
+The \notereferencegutter command is always used in conjunction with the
+\endnoteformat (\enf) command, and will determine the amount of space between
+the endnote reference number and the text of the endnotes. The format for the
+\notereferencegutter command is:
+
+ \endnoteformat{
+ \notereferencegutter{xx}
+ }
+
+Where "xx" is any number and valid TeX measurement (in, pc, pts, etc.).
+\notereferencegutter{1em} is the default and will give one emspace between the
+endnote reference numbers and the text of the notes.
diff --git a/macros/text1/cms_help_files/9notere.helpfoot b/macros/text1/cms_help_files/9notere.helpfoot
new file mode 100644
index 0000000000..beddf74b27
--- /dev/null
+++ b/macros/text1/cms_help_files/9notere.helpfoot
@@ -0,0 +1,17 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \notereferenceposition COMMAND |
++-----------------------------------------------------------------------------+
+
+The \notereferenceposition command is always used in conjunction with the
+\footnoteformat (\fnf) command, and will determine whether the footnote
+reference number within the text of the footnotes is a superscript number or
+not. The format for the \notereferenceposition command is:
+
+ \footnoteformat{
+ \notereferenceposition{xx}
+ }
+
+Where "xx" is either "up" or "down". \notereferenceposition{up} will give
+superscript numbers for the footnote reference numbers in the notes.
+\notereferenceposition{down} will give print the footnote reference numbers in
+the notes on the baseline.
diff --git a/macros/text1/cms_help_files/aen.helpmark b/macros/text1/cms_help_files/aen.helpmark
new file mode 100644
index 0000000000..00b597ddac
--- /dev/null
+++ b/macros/text1/cms_help_files/aen.helpmark
@@ -0,0 +1,72 @@
+ HELPMARK D1
++-----------------------------------------------------------------------------+
+| autoendnote |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\aenã%
+
+Parameters: ã|textã%
+
+ ã|Description:ã%
+The \autoendnote markup adds notes to the end of a document or the end
+of a chapter. It has one parameter, the text of the endnote, which it
+places in working storage to be printed when called by \printendnotes. An
+endnote reference number is placed in the text where the markup occurred.
+By default this reference number is surrounded by square brackets. The
+endnote number will be automatically incremented by one for each use of
+\autoendnote.
+
+ ã|Example:ã%
+There is a well-marked division of
+labor.\autoendnote{Such as it is. Things could be
+different in the geological world, but they are not.}
+Details of organization have evolved by an
+optimization . . .
+
++-----------------------------------------------------------------------------+
+| |
+| There is a well-marked division of labor.[1] Details of organization |
+| have evolved by an optimization . . . |
+| |
++-----------------------------------------------------------------------------+
+
+The endnote printed following the next \printendnotes markup would look
+like:
+
++-----------------------------------------------------------------------------+
+| |
+| 1. Such as it is. Things could be different in the geological world, but |
+| they are not. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+You cannot use \autoendnote within \settabs, \vbox, \hbox, \asisbegin,
+\drawbox, \paragraphbox, \label, \part, \chapter, \centerline, \halign,
+\rightlinesbegin, or \centerlinesbegin.
+ The endnote number is reset to 1 at the beginning of each part. To
+reset the endnote number outside of a \part, use the \setendnotenumber
+markup.
+ Use the \endnoteformat markup to change the \autoendnote style.
+ There are occasions when you need to include a very long endnote. If
+the endnote exceeds 2,048 characters in length, you will need to split the
+note into two parts as follows. First, at the beginning of your document
+you will need to include a special definition for a new markup. You may
+give it any name you choose. For this example, we'll define a markup called
+\continue. Enter these three lines at the top of the document:
+
+\catcode'*=11
+\let\continue=\en*w
+\catcode'*=12
+
+Next, break the endnote into paragraphs of not more than 2,048 characters
+each. In the source below, the sentence beginning "First paragraph" is
+the first paragraph with not more than 2,048 characters, and the second
+paragraph beginning "Second paragraph" is the last paragraph of the endnote.
+
+line containt the note.\autoendnote{First paragraph
+of a very long endnote . . . }
+\continue{Second paragraph of the long endnote,
+which will print in the \printendnotes after
+the first paragraph}
+Sentence following the word "note."
diff --git a/macros/text1/cms_help_files/afn.helpmark b/macros/text1/cms_help_files/afn.helpmark
new file mode 100644
index 0000000000..0e764aa0b7
--- /dev/null
+++ b/macros/text1/cms_help_files/afn.helpmark
@@ -0,0 +1,58 @@
++-----------------------------------------------------------------------------+
+| autofootnote |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\afnã%
+
+Parameters: ã|textã%
+
+ ã|Description:ã%
+The \autofootnote markup adds footnotes to a page. The footnote can be
+placed anywhere within text, without interrupting formatting. When the
+document is formatted, the place of the footnote is marked with a number.
+The text of the note is put at the bottom of the page. The footnote number
+will be automatically incremented by one for each use of \autofootnote.
+
+ ã|Example:ã%
+communicate most important things --- hunger, alarm,
+rank, and sexual desire --- among themselves by
+means of nonsyntactical signals.\autofootnote{such
+as crashing together} Individuals are aware of
+members and nonmembers of their group.
+
++-----------------------------------------------------------------------------+
+| |
+| communicate most important things --- hunger, alarm, rank, and sexual |
+| desire --- among themselves by means of nonsyntactical signals.(1) |
+| Individuals are aware of members and nonmembers of their group. |
+| |
++-----------------------------------------------------------------------------+
+
+The footnote would print as follows at the bottom of the page:
+
++-----------------------------------------------------------------------------+
+| 1. such as crashing together |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+The text of the note must be enclosed with curly braces, otherwise following
+text will be taken as footnote text, until all available space for footnotes
+is exhausted.
+ You cannot use \autofootnote within \settabs, \vbox, \hbox,
+\drawbox, \paragraphbox, \label, \part, \chapter, \centerline, \halign,
+\rightlinesbegin, or \centerlinesbegin.
+ The footnote number is reset to 1 at the beginning of each part. To
+reset the footnote number outside of a \part, use the \setfootnotenumber
+markup.
+ To change the footnote style, use the \footnoteformat markup.
+ When using \monospace, the footnote in the text of the document is
+surrounded by parenthesis, instead of superscripted. The previous \auto-
+footnote sample output would print as:
+
++-----------------------------------------------------------------------------+
+| |
+| communicate most important things --- hunger, alarm, rank, and sexual |
+| desire --- among themselves by means of nonsyntactical signals.(1) |
+| Individuals are aware of members and nonmembers of their group. |
+| |
++-----------------------------------------------------------------------------+
diff --git a/macros/text1/cms_help_files/aib.helpmark b/macros/text1/cms_help_files/aib.helpmark
new file mode 100644
index 0000000000..dc70ed9c37
--- /dev/null
+++ b/macros/text1/cms_help_files/aib.helpmark
@@ -0,0 +1,84 @@
++-----------------------------------------------------------------------------+
+| asisbegin |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\aibã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \asisbegin markup forces the following text into an unformatted block.
+Each line is printed as it was entered. Line breaks and interword spacing
+are honored. TEXT1 markup within an "as is" sequence is limited to
+\verticalspace, \verticalspacekeep, \autofootnote, and font changes.
+
+ ã|Example:ã%
+
+\monospace
+
+\centerline{Elements of the Spheres}
+
+\vs{12pt}
+\asisbegin
+Element Anthrosphere Lithosphere
+Oxygen 62.10 60.60
+Hydrogen 01.10 00.10
+Sodium 00.001 00.400
+\asisend
++-----------------------------------------------------------------------------+
+| |
+| Elements of the Spheres |
+| |
+| |
+| |
+| Element Anthrosphere Lithosphere |
+| Oxygen 62.10 60.60 |
+| Hydrogen 01.10 00.10 |
+| Sodium 00.001 00.400 |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+The columns will only line up if you are using \monospace or \typewriter.
+
+ ã|Example:ã%
+If you use accents while in \asisbegin, you must surround the accented
+letter with curly braces.
+
+lowest common denominator.
+\vs{12pt}
+\centerline{\bd Outline}
+\aib
+\vs{6pt}
+The Morality of Rock in the Fossil Record
+ Elementary Concepts: Toasting the \c{C}rust
+ Principles of Population Geology
+\aie
++-----------------------------------------------------------------------------+
+
+| lowest common denominator. |
+| |
+| |
+| Outline |
+| |
+| The Morality of Rock in the Fossil Record |
+| Elementary Concepts: Toasting the Crust |
+| Principles of Population Geology |
+| |
++-----------------------------------------------------------------------------+
+
+
+ ã|Notes:ã%
+With the monospaced font you can use the "as is" sequence to have TEXT1
+obey precisely your text placement, including space between words. With
+proportionally spaced fonts only the lead blanks would line up; blanks
+"inside" the text would be different widths (depending on the width of
+previous characters).
+
+ Font changes within an \asisbegin may change the horizontal spacing.
+ Every \asisbegin must have a matching \asisend.
+ You cannot use \asisbegin within any of the following markup: \appen-
+dix, \autofootnote, \bibliography, \centerline, \chapter, \drawbox, \figure,
+\footnote, \item, \label, \marginnote, \paragraphbox, \part, \preface,
+\rightline, \runningheadformat, \runningfootformat, \subheada, \subheadb,
+\subheadc, \subheadd, or \tabletitle.
diff --git a/macros/text1/cms_help_files/aie.helpmark b/macros/text1/cms_help_files/aie.helpmark
new file mode 100644
index 0000000000..3fd9d98509
--- /dev/null
+++ b/macros/text1/cms_help_files/aie.helpmark
@@ -0,0 +1,37 @@
++-----------------------------------------------------------------------------+
+| asisend |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\aieã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \asisend markup ends an "as is" series.
+
+ ã|Example:ã%
+
+\aib
+ This fortress built by Nature for herself
+ Against infection and the hand of war,
+ (Richard II)
+\aie
++-----------------------------------------------------------------------------+
+| |
+| This fortress built by Nature for herself |
+| Against infection and the hand of war, |
+| (Richard II) |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+Each \asisend must have a matching \asisbegin. Omitting the ending \asisend
+will produce the following error message:
+
+(\end occurred inside a group at level 2)
+Output written on TEXT1$$.dvi (1 page, 436 bytes).
+Transcript written on TEXT1$$.texlog.
+
+See \asisformat to modify the defaults for \asisbegin and
+\asisbegin.
+
diff --git a/macros/text1/cms_help_files/aif.helpmark b/macros/text1/cms_help_files/aif.helpmark
new file mode 100644
index 0000000000..17657f596f
--- /dev/null
+++ b/macros/text1/cms_help_files/aif.helpmark
@@ -0,0 +1,76 @@
++-----------------------------------------------------------------------------+
+| asisformat |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\aifã%
+
+Parameters: ã|submarkupã%
+
+Submarkup: ã|\skipbefore, \everyasis, \skipafterã%
+
+ ã|Description:ã%
+The \asisformat markup allows you to modify the "as is" block. The "as is"
+markup skips 1 blank line (a baseline) before and after the series. There
+is no indentation from the left.
+
+\skipbefore indicates how much space is to be skipped before printing a
+block. This amount is in addition to any paragraph skips. The default skip
+is 6pt. If you are using \monospace, the default skip is 1\bl.
+
+\everyasis{Nested Markup} determines how the 'as is' text is printed. This
+submarkup is only valid within the asisformat markup. Spacing and font
+changes are allowed, but not justification, right indentation, or other
+paragraph information.
+
+\skipafter indicates how much space is to be skipped after printing a
+block. This amount is in addition to any paragraph skips. The default skip
+is 6pt. If you are using \monospace, the default skip is 1\bl.
+
+ ã|Example:ã%
+In this example, the "as is" text is to be indented 7 picas from the left
+margin, the text is to be printed in ten point typewriter, and 4 points
+skipped before and after.
+
+\asisformat{\skipbefore{4pt}
+ \everyasis{\leftindent{7pc}\tenpt\tt}
+ \skipafter{4pt}}
+
+Consider my favorite breakfast recipe:
+\cl{\bd Muckles}
+\asisbegin
+3 eggs beaten
+1 cp cream
+1 cp flour
+1/4t baking powder
+1 T sugar
+pinch of salt
+
+bacon (optional)
+\aie
+Heat butter or bacon in frying pan.
+Pour all of
+the batter into the pan. Cook approximately
+10 minutes at 375 degrees. Cut into pieces
+and serve hot with plenty of syrup.
++-----------------------------------------------------------------------------+
+| |
+| Consider my favorite breakfast recipe: |
+| Muckles |
+| |
+| 3 eggs beaten |
+| 1 cp cream |
+| 1 cp flour |
+| 1/4t baking powder |
+| 1 T sugar |
+| pinch of salt |
+| bacon (optional) |
+| |
+| Heat butter or bacon in frying pan. Pour all of the batter into the |
+| pan. Cook approximately 10 minutes at 375 degrees. Cut into pieces and |
+| serve hot with plenty of syrup. |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+
+The \asisformat markup must come after the \monospace markup, if both are
+used.
diff --git a/macros/text1/cms_help_files/anumbe.helpsubh b/macros/text1/cms_help_files/anumbe.helpsubh
new file mode 100644
index 0000000000..7acf33349e
--- /dev/null
+++ b/macros/text1/cms_help_files/anumbe.helpsubh
@@ -0,0 +1,13 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \numberingstyle COMMAND |
++-----------------------------------------------------------------------------+
+
+The \numberingstyle command is always used in conjunction with the
+\subheadcformat command and will set the style of numbering for the subheadc
+titles. The format for the \numberingstyle command is:
+
+ \subheadcformat{\numberingstyle{xxx}
+ }
+
+where "xxx" is A, 1, or I. The default \numberingstyle for subheadc is
+\numberingstyle{1}.
diff --git a/macros/text1/cms_help_files/anumber.helpsubh b/macros/text1/cms_help_files/anumber.helpsubh
new file mode 100644
index 0000000000..d1e541a8c8
--- /dev/null
+++ b/macros/text1/cms_help_files/anumber.helpsubh
@@ -0,0 +1,13 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \numberingstyle COMMAND |
++-----------------------------------------------------------------------------+
+
+The \numberingstyle command is always used in conjunction with the
+\subheaddformat command and will set the style of numbering for the subheadd
+titles. The format for the \numberingstyle command is:
+
+ \subheaddformat{\numberingstyle{xxx}
+ }
+
+where "xxx" is A, 1, or I. The default \numberingstyle for subheadd is
+\numberingstyle{1}.
diff --git a/macros/text1/cms_help_files/apf.helpmark b/macros/text1/cms_help_files/apf.helpmark
new file mode 100644
index 0000000000..cad86ce1cc
--- /dev/null
+++ b/macros/text1/cms_help_files/apf.helpmark
@@ -0,0 +1,93 @@
++-----------------------------------------------------------------------------+
+| appendixformat |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\apfã%
+
+Parameters: ã|submarkupã%
+
+Submarkup: ã|\numberingstyle, \titleformat, \incontentsã%
+
+ ã|Description:ã%
+The \appendixformat markup allows you to modify the default markup that
+controls the appearance of the appendix title. The submarkup is described.
+
+\numberingstyle allows you to change the style from capital letters, the
+default, to Arabic numerals (1) or roman numerals (I).
+
+ ã|Example:ã%
+
+\appendixformat{\numberingstyle{I}}
+
+\appendix{Glossary}
+
+If this were the fourth appendix, it would print as:
+
++-----------------------------------------------------------------------------+
+| |
+| Appendix IV |
+| Glossary |
+| |
++-----------------------------------------------------------------------------+
+
+\titleformat{Nested Markup} controls the appearance of the appendix title
+banner. You may use markup such as \newpage, \verticalspace, and \center-
+line within \titleformat as Nested Markup. Other markup you may use within
+or outside of \appendixformat:
+
+ * \appendixnumberprints the most recent appendix number.
+
+ * \appendixtitleprints the most recent appendix title.
+
+\incontents determines whether the appendix title is to be included in the
+contents. The default can be changed to no to inhibit the appendix title
+from being included in the contents. See the second example below.
+
+ ã|Example:ã%
+In this example, the appendix starts a new page, the number and title are
+centered in bold, and one line is skipped afterwards.
+
+\appendixformat{\numberingstyle{1}
+ \titleformat{\dumpinsertseject
+
+ \cl{\bd \appendixnumber. \appendixtitle}
+ \vs{1\bl}
+ }
+ \incontents{yes}
+ }
+
+\app{Glossary}
+
+This would print the fourth appendix as:
+
++-----------------------------------------------------------------------------+
+| |
+| 4. Glossary |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+In this example, the appendix starts a new page (instead of using
+\dumpinsertseject, skips down the page 2 inches, centers the title in
+italics, and skips one line. The title is not put in contents.
+
+\appendixformat{
+ \titleformat{\newpage
+ \vsk{2in}
+ \cl{\it \appendixtitle}
+ \vs{1\bl}}
+ \incontents{no} }
+
+\app{Glossary}
+
+This would print the fourth appendix as:
+
++-----------------------------------------------------------------------------+
+| |
+| Glossary |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+The \appendixformat markup must come after the \monospace markup, if both
+are used.
diff --git a/macros/text1/cms_help_files/app.helpmark b/macros/text1/cms_help_files/app.helpmark
new file mode 100644
index 0000000000..a190f27416
--- /dev/null
+++ b/macros/text1/cms_help_files/app.helpmark
@@ -0,0 +1,30 @@
++-----------------------------------------------------------------------------+
+| appendix |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\appã%
+
+Parameters: ã|titleã%
+
+ ã|Description:ã%
+The \appendix markup starts a new page, centers the title in bold and
+adds the title text to the table of contents. Appendices are lettered
+consecutively. This markup can be used as often as necessary.
+
+ ã|Example:ã%
+
+Instead, let humanity strive to make good places,
+"eutopias," on earth, peacefully and in good spirit.
+\par
+\appendix{Calculations from "Nuclear Winter"}
+
++-----------------------------------------------------------------------------+
+| |
+| Appendix A |
+| Calculations from "Nuclear Winter" |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+Refer to the \appendixformat markup if you need to change the appendix
+style.
diff --git a/macros/text1/cms_help_files/appendix.helpbloc b/macros/text1/cms_help_files/appendix.helpbloc
new file mode 100644
index 0000000000..a72ac7f09e
--- /dev/null
+++ b/macros/text1/cms_help_files/appendix.helpbloc
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|APPENDIXã%block is to be selected if you want to modify the
+\appendixformat.
diff --git a/macros/text1/cms_help_files/appendix.helpmenu b/macros/text1/cms_help_files/appendix.helpmenu
new file mode 100644
index 0000000000..4e5ea240db
--- /dev/null
+++ b/macros/text1/cms_help_files/appendix.helpmenu
@@ -0,0 +1,103 @@
++-----------------------------------------------------------------------------+
+| appendixformat |
++-----------------------------------------------------------------------------+
+
+\appendixformatÅ\numberingstyleÅAÌ
+ \titleformatÅ\dumpinsertseject
+ \centerlineÅ\twelvept\bold
+ Appendix \appendixnumberÌ
+ \centerlineÅ\twelvept\bold\appendixtitleÌ
+ \vsÅ 1\blÌ
+ \setchapternumberÅ 0Ì
+ \setsubheadanumberÅ 0Ì
+ \setsubheadbnumberÅ 0Ì
+ \setsubheadcnumberÅ 0Ì
+ \setsubheaddnumberÅ 0Ì
+ \setfigurenumberÅ 0Ì
+ \settablenumberÅ 0Ì
+ Ì
+ \incontentsÅ yesÌ
+
+Abbreviation: ã|\apfã%
+
+Parameters: ã|submarkupã%
+
+Submarkup: ã|\numberingstyle, \titleformat, \incontentsã%
+
+ ã|Description:ã%
+The \appendixformat markup allows you to modify the default markup that
+controls the appearance of the appendix title. The submarkup is described.
+
+\numberingstyle allows you to change the style from capital letters, the
+default, to Arabic numerals (1) or roman numerals (I).
+
+ ã|Example:ã%
+
+\appendixformatÅ \numberingstyleÅ IÌÌ
+\appendixÅ GlossaryÌ
+
+If this were the fourth appendix, it would print as:
++-----------------------------------------------------------------------------+
+| |
+| Appendix IV |
+| Glossary |
+| |
++-----------------------------------------------------------------------------+
+
+\titleformatÅNested MarkupÌ controls the appearance of the appendix title
+banner. You may use markup such as \newpage, \verticalspace, and \center-
+line within \titleformat as Nested Markup. Other markup you may use within
+or outside of \appendixformat:
+
+ * \appendixnumberprints the most recent appendix number.
+
+ * \appendixtitleprints the most recent appendix title.
+
+\incontents determines whether the appendix title is to be included in the
+contents. The default can be changed to no to inhibit the appendix title
+from being included in the contents. See the second example below.
+
+ ã|Example:ã%
+In this example, the appendix starts a new page, the number and title are
+centered in bold, and one line is skipped afterwards.
+
+\appendixformatÅ \numberingstyleÅ 1Ì
+ \titleformatÅ \dumpinsertseject
+ \clÅ \bd \appendixnumber. \appendixtitleÌ
+ \vsÅ 1\blÌ
+ Ì
+ \incontentsÅ yesÌ
+ Ì
+\appÅ GlossaryÌ
+
+This would print the fourth appendix as:
++-----------------------------------------------------------------------------+
+| |
+| 4. Glossary |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+In this example, the appendix starts a new page (instead of using
+\dumpinsertseject, skips down the page 2 inches, centers the title in
+italics, and skips one line. The title is not put in contents.
+
+\appendixformatÅ
+ \titleformatÅ \newpage
+ \vskÅ 2inÌ
+ \clÅ \it \appendixtitleÌ
+ \vsÅ 1\blÌÌ
+ \incontentsÅ noÌ Ì
+\appÅ GlossaryÌ
+
+This would print the fourth appendix as:
+
++-----------------------------------------------------------------------------+
+| |
+| Glossary |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+The \appendixformat markup must come after the \monospace markup, if both
+are used.
diff --git a/macros/text1/cms_help_files/asism.helpbloc b/macros/text1/cms_help_files/asism.helpbloc
new file mode 100644
index 0000000000..cf6437cf5f
--- /dev/null
+++ b/macros/text1/cms_help_files/asism.helpbloc
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|ASIS-Mã%block is to be selected if you want to modify the \asisformat
+and if you are using \monospace.
diff --git a/macros/text1/cms_help_files/asisp.helpbloc b/macros/text1/cms_help_files/asisp.helpbloc
new file mode 100644
index 0000000000..6c3aeeea9b
--- /dev/null
+++ b/macros/text1/cms_help_files/asisp.helpbloc
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|ASIS-Pã%block is to be selected if you want to modify the \asisformat
+and if you areã|notã%using \monospace.
diff --git a/macros/text1/cms_help_files/bd.helpmark b/macros/text1/cms_help_files/bd.helpmark
new file mode 100644
index 0000000000..2522f00c01
--- /dev/null
+++ b/macros/text1/cms_help_files/bd.helpmark
@@ -0,0 +1,48 @@
++-----------------------------------------------------------------------------+
+| bold |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\bdã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \bold markup sets the typeface to wide strokes, giving a heavy
+impression.
+
+ ã|Example:ã%
+This example changes "Parallels" bold. It is changed back with the \roman
+markup.
+
+lowest common denominator.
+\par
+\bold\nin Parallels. \roman Consider for a
+moment rocks and deer . . .
+
++-----------------------------------------------------------------------------+
+| |
+| lowest common denominator. |
+| Parallels. Consider for a moment rocks and deer . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+The effects of the \bold markup can also be limited by curly braces.
+
+lowest common denominator.
+\par
+\nin{\bd Parallels}. Consider for a
+moment rocks and deer . . .
+
++-----------------------------------------------------------------------------+
+| |
+| lowest common denominator. |
+| Parallels. Consider for a moment rocks and deer . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+Note in the last example the period follows the right curly brace (}.).
+This is necessary to enable the extra spacing which normally follows
+punctuation.
+ Bold is often used for display titles or special emphasis.
diff --git a/macros/text1/cms_help_files/bi.helpmark b/macros/text1/cms_help_files/bi.helpmark
new file mode 100644
index 0000000000..277feefcba
--- /dev/null
+++ b/macros/text1/cms_help_files/bi.helpmark
@@ -0,0 +1,36 @@
++-----------------------------------------------------------------------------+
+| bolditalic |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\biã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \bolditalic markup sets the typeface to wide strokes and an italic
+slant, giving a heavy impression.
+
+ ã|Example:ã%
+This example changes "Parallels" to bold italic. It is changed back with
+the \roman markup.
+
+lowest common denominator.
+\par
+\bolditalic\nin Parallels. \roman Consider for a
+moment rocks and deer . . .
+
++-----------------------------------------------------------------------------+
+| |
+| lowest common denominator. |
+| Parallels. Consider for a moment rocks and deer . . . |
+| --------- |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+All font sets have \bolditalic defined as a valid type face. Not all font
+sets, however, have bolditalic available. Those font sets that do not
+have bolditalic will give the following warning message when you try to use
+\bolditalic or \bi:
+
+<TEXT1> Warning. No bold italic font in CM12. Will print italic font .)
diff --git a/macros/text1/cms_help_files/bib.helpmark b/macros/text1/cms_help_files/bib.helpmark
new file mode 100644
index 0000000000..c827c2717e
--- /dev/null
+++ b/macros/text1/cms_help_files/bib.helpmark
@@ -0,0 +1,43 @@
++-----------------------------------------------------------------------------+
+| bibliography |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\bibã%
+
+Parameters: ã|titleã%
+
+ ã|Description:ã%
+The \bibliography markup starts the bibliography on a new page, centers and
+prints the title in bold face, and enters the title in contents.
+
+ ã|Example:ã%
+
+\bibliography{References}
+\frenchspacing
+\bibentry
+Grabens, Gruss M. 1970. {\it Mechanical Processes
+in the Human Geomechanism}. Winston: Geomedical
+Publications, International.
+
+\bibentry
+Illite, Ivan. 1911. "Picking the Philosopher's
+Stone." {\it Mining Truth}. 11:455--601.
+\par
+
++-----------------------------------------------------------------------------+
+| |
+| References |
+| |
+| Grabens, Gruss M. 1970. Mechanical Processes in the Human Geomechanism. |
+| Winston: Geomedical Publications, International. |
+| |
+| Illite, Ivan. 1911. "Picking the Philosopher's Stone." Mining Truth. |
+| 11:455--601. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+
+If you need to print your bibliography with a format different than the
+one illustrated above, refer to the discussion of the \bibliographyformat
+markup.
diff --git a/macros/text1/cms_help_files/bibentry.helpmark b/macros/text1/cms_help_files/bibentry.helpmark
new file mode 100644
index 0000000000..a7106a2db9
--- /dev/null
+++ b/macros/text1/cms_help_files/bibentry.helpmark
@@ -0,0 +1,57 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \bibentry Markup |
++-----------------------------------------------------------------------------+
+
+Abbreviation:ã|\bieã%
+
+Parameters:ã|noneã%
+
+Description: The \bibentry markup is used to separate each entry in a
+bibliography with a vertical skip; an entry is in the form of a hanging
+paragraph.
+
+Example:
+
+ \bibliography{Bibliography}
+ ã|\bibentryã%
+ Illite, Ivan. 1911. ''Pickingthe Philosopher's
+ Stone.'' {\it Mining Truth}.11:455--601.
+ ã|\bibentryã%
+ \sameauthor
+ 1978. ''Pet rocks astherapy tools.''
+ {\it Geopsychology Today}. 10:71--78.
+ ã|\bibentryã%
+ Salt, Jean-Paul. 1958. {\itGravel and Nothingness:
+ An Existential Theory}. Dayton:Gabbro Press.
+ \par
+
+
++-----------------------------------------------------------------------------+
+| |
+| Bibliography |
+| |
+| Illite, Ivan. 1911. "Picking the Philosopher's Stone." Mining |
+| Truth. 11:455--601. |
+| 1978. "Pet rocks as therapy tools." Geopsychology Today. |
+| 10:71--78. |
+| |
+| Salt, Jean-Paul. 1958. Gravel and Nothingness: An Existential |
+| Theory. Dayton: Gabbro Press. |
+| |
++-----------------------------------------------------------------------------+
+
+
+ã|Notes:ã%The series is ended with a \par markup. Without the \par an
+ error results.
+
+ You may use the \sameauthor markup to indicate that the author of one
+ quotation is the same as the previous author.
+
+ To disable the double spacing which normally follows punctuation, use
+ the \frenchspacing markup. The example illustrated for the
+ \bibliography markup was done using \frenchspacing.
+
+ If you need to print yourbibliography with a format different than
+ the one illustrated above, refer to the discussion of the
+ \bibliographyformat markup.
+
diff --git a/macros/text1/cms_help_files/bibliog.helpbloc b/macros/text1/cms_help_files/bibliog.helpbloc
new file mode 100644
index 0000000000..d8d0303319
--- /dev/null
+++ b/macros/text1/cms_help_files/bibliog.helpbloc
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|BIBLIOGã%block is to be selected if you want to modify the
+\bibliographyformat.
diff --git a/macros/text1/cms_help_files/bibliogr.helpmark b/macros/text1/cms_help_files/bibliogr.helpmark
new file mode 100644
index 0000000000..40eff62e82
--- /dev/null
+++ b/macros/text1/cms_help_files/bibliogr.helpmark
@@ -0,0 +1,54 @@
++-----------------------------------------------------------------------------+
+| \bibliography{title} |
++-----------------------------------------------------------------------------+
+
+Abbreviation:ã|\bibã%
+
+Parameters:ã|titleã%
+
+Description: The \bibliography markup starts the bibliography on a new
+page, centers and prints the title in bold face, and enters the title
+in the table of contents.
+
+ Example:
+ ã|\bibliography{ã%Referencesã|}ã%
+ \frenchspacing
+ \bibentry
+ Grabens, Gruss M. 1970.{\it Mechanical Processes
+ in the Human Geomechanism}.Winston: Geomedical
+ Publications, International.
+ \bibentry
+ Illite, Ivan. 1911. ''Pickingthe Philosopher's
+ Stone.'' {\it Mining Truth}.11:455--601.
+ \par
+
++-----------------------------------------------------------------------------+
+| References |
+| |
+| Grabens, Gruss M. 1970. Mechanical Processes in the Human |
+| Geomechanism. Winston: Geomedical Publications, International. |
+| |
+| Illite, Ivan. 1911. "Picking the Philosopher's Stone." Mining |
++-----------------------------------------------------------------------------+
+
+ã|Notes:ã%If you need to print your bibliography with a format different than
+ the one illustrated above, refer to the discussion of the
+ \bibliographyformat markup.
+
++-----------------------------------------------------------------------------+
+| |
+| \bibliographyformat{\incontents{yes} |
+| \titleformat{\dumpinsertseject |
+| \cl{\twelvept\bd \bibtitle} |
+| \vs{\bl}} |
+| \everybibentry{\vs \bl}\goodbreak\hp\nin} |
+| \sameauthorrulesize{width3em height.6ex |
+| depth-.5ex}} |
++-----------------------------------------------------------------------------|
+
+Abbreviation:ã|\bifã%
+
+Parameters: submarkup
+
+Submarkup: \incontents, \titleformat, \everybibentry, \sameauthorrulesize
+
diff --git a/macros/text1/cms_help_files/bie.helpmark b/macros/text1/cms_help_files/bie.helpmark
new file mode 100644
index 0000000000..cda2435221
--- /dev/null
+++ b/macros/text1/cms_help_files/bie.helpmark
@@ -0,0 +1,51 @@
++-----------------------------------------------------------------------------+
+| bibentry |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\bieã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \bibentry markup is used to separate each entry in a bibliography with a
+vertical skip; an entry is in the form of a hanging paragraph.
+
+ ã|Example:ã%
+
+\bibliography{Bibliography}
+\bibentry
+Illite, Ivan. 1911. "Picking the Philosopher's
+Stone." {\it Mining Truth}. 11:455--601.
+\bibentry
+\sameauthor
+
+1978. "Pet rocks as therapy tools."
+{\it Geopsychology Today}. 10:71--78.
+\bibentry
+Salt, Jean-Paul. 1958. {\it Gravel and Nothingness:
+An Existential Theory}. Dayton: Gabbro Press.
+\par
++-----------------------------------------------------------------------------+
+| |
+| Bibliography |
+| |
+| Illite, Ivan. 1911. "Picking the Philosopher's Stone." Mining Truth. |
+| 11:455--601. |
+| |
+| ....1978. "Pet rocks as therapy tools." Geopsychology Today. 10:71--78. |
+| |
+| Salt, Jean-Paul. 1958. Gravel and Nothingness: An Existential Theory. |
+| Dayton: Gabbro Press. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+The series is ended with a \par markup. Without the \par an error results.
+ You may use the \sameauthor markup to indicate that the author of one
+citation is the same as the previous author.
+ To disable the double spacing which normally follows punctuation, use
+the \frenchspacing markup. The example illustrated for the \bibliography
+markup was done using \frenchspacing.
+ If you need to print your bibliography with a format different than the
+one illustrated above, refer to the discussion of the \bibliographyformat
+markup.
diff --git a/macros/text1/cms_help_files/bif.helpmark b/macros/text1/cms_help_files/bif.helpmark
new file mode 100644
index 0000000000..2cbb983d68
--- /dev/null
+++ b/macros/text1/cms_help_files/bif.helpmark
@@ -0,0 +1,248 @@
++-----------------------------------------------------------------------------+
+| bibliographyformat |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\bifã%
+
+Parameters: ã|submarkupã%
+
+Submarkup: ã|\incontents, \titleformat, \everybibentry,
+\sameauthorrulesizeã%
+
+ ã|Description:ã%
+The \bibliographyformat markup controls the style of the entire
+bibliography. The following submarkup is only valid within \bif.
+
+\incontents by default adds the title text to the contents. The default is
+yes; to keep the title from appearing enter "no":
+
+\bibliographyformat{\incontents{no}}
+
+\titleformat{Nested Markup} controls the format of the bibliography title.
+The default skips to a new page, centers the title in bold, and skips one
+line. You may use markup such as \newpage, \verticalspace, and \centerline
+within \titleformat as Nested Markup. Other markup you may use within or
+outside of \bibliographyformat:
+
+ * \bibtitleprints the title entered with the \bibliography markup.
+
+\everybibentry{Nested Markup} controls the format of each bibliographic
+entry. The default permits breaking between entries and creates a hanging
+paragraph for the entry. You may use markup such as \verticalspace,
+\hangingparagraph, \item, \goodbreak, \noindent, \label, \leftindent within
+\everybibentry as Nested Markup. Other markup you may use within or outside
+of \bibliographyformat:
+
+ * \bibnumberprints the current \bibentry number.
+
+\sameauthorrulesize sets the height, width, and depth of a horizontal line
+used to indicate a repeat of an author's name.
+
+ ã|Example:ã%
+The following markup produces entries similar to the default but numbered.
+A period and a tie (tilde, for a connecting space) join the number to the
+text.
+
+\bibliographyformat{\incontents{yes}
+ \titleformat{\np
+ \cl{\bd \bibtitle}
+
+ \vs{\bl}
+ }
+ \everybibentry{\goodbreak\hp\nin\bibnumber.~}
+ \sameauthorrulesize{width3em height.6ex depth-.5ex}
+}
+
+Then when you use \bibentry, you would get:
++-----------------------------------------------------------------------------+
+| |
+| 1. Grabens, Gruss M. 1970. Mechanical Processes in the Human |
+| Geomechanism. Winston: Geomedical Publications, International. |
+| 2. Illite, Ivan. 1911. "Picking the Philosopher's Stone." Mining Truth. |
+| 11:455--601. |
+| 3. Moraine, Esker. 1978. "Pet rocks as therapy tools." Geopsychology |
+| Today. 10:71--78. |
+| 4. Salt, Jean-Paul. 1958. Gravel and Nothingness: An Existential |
+| Theory. Dayton: Gabbro Press. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+This example also numbers entries, but it uses labels instead of hanging
+paragraphs. The \labelformat is changed under \titleformat to accommodate
+numbers. This layout is useful for bibliographies that use identifiers in
+place of numbers.
+
+\bibliographyformat{\incontents{yes}
+ \titleformat{\np\vsk{1in}
+ \cl{\bd \bibtitle}
+ \vs{\bl}
+ \labelformat{\labelwidth{22pt}}}
+ \everybibentry{\goodbreak\label{\bibnumber}}
+ \sameauthorrulesize{width3em height.6ex depth-.5ex}}
+
+Then when you use \bibliography, you would get:
++-----------------------------------------------------------------------------+
+| |
+| References |
+| |
+| 1. Grabens, Gruss M. 1970. Mechanical Processes in the Human |
+| Geomechanism. Winston: Geomedical Publications, International. |
+| |
+| 2. Salt, Jean-Paul. 1958. Gravel and Nothingness: An Existential |
+| Theory. Dayton: Gabbro Press. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+You can specify in the \everybibentry markup that the bibentry number is to
+be surrounded by parenthesis or square brackets.
+ \everybibentry{\goodbreak\label{(\bibnumber)}}
++-----------------------------------------------------------------------------+
+| |
+| References |
+| |
+| (1) Grabens, Gruss M. 1970. Mechanical Processes in the Human |
+| Geomechanism. Winston: Geomedical Publications, International. |
+| |
+| (2) Salt, Jean-Paul. 1958. Gravel and Nothingness: An Existential |
+| Theory. Dayton: Gabbro Press. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+You could also use \label to indicate citations that carry an alphanumeric
+label by omitting the parameter to \label in the \everybibentry markup.
+
+\bibliographyformat{\titleformat{\np\cl{\bd \bibtitle}
+ \vs{\bl}
+ \labelformat{\labelwidth{50pt}}}
+ \everybibentry{\goodbreak\label}
+ \sameauthorrulesize{width3em height.6ex depth-.5ex}}
+
+Then use the \bibentry markup as though it had a parameter:
+
+\bibliography{Citations}\frenchspacing
+\bibentry {Grabe70}
+Grabens, Gruss M. 1970. {\it Mechanical Processes
+in the Human Geomechanism}. Winston: Geomedical
+Publications, International.
+\bibentry{Illit11}
+Illite, Ivan. 1911. "Picking the Philosopher's
+
+Stone." {\it Mining Truth}. 11:455--601.
+\bibentry{Morai78}
+Moraine, Esker. 1978. "Pet rocks as therapy tools."
+{\it Geopsychology Today}. 10:71--78.
+
+and the citations will look like:
++-----------------------------------------------------------------------------+
+| |
+| Citations |
+| |
+| Grabe70 Grabens, Gruss M. 1970. Mechanical Processes in the Human |
+| Geomechanism. Winston: Geomedical Publications, International. |
+| |
+| Illit11 Illite, Ivan. 1911. "Picking the Philosopher's Stone." Mining |
+| Truth. 11:455--601. |
+| |
+| Morai78 Moraine, Esker. 1978. "Pet rocks as therapy tools." |
+| Geopsychology Today. 10:71--78. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+Another popular style groups all of an author's citations together. This
+can be accomplished in a similar manner as previously defined. The
+difference being that the \rt markup is used.
+
+\bibliographyformat{\titleformat{\np\vsk{1in}
+ \cl{\bd \bibtitle}
+ \vs{\bl}
+ \labelformat{\labelwidth{50pt}}}
+ \everybibentry{\goodbreak\label}
+ \sameauthorrulesize{width3em height.6ex depth-.5ex}}
+\bibliography{Citations}\frenchspacing
+\vs{.5\bl}
+\nin OSBORNE, J.S.
+\bie{\rt{1971.}}
+{\it Introduction to Aesthetic Anthropology}. Boston, Ma:
+Addison-Wesley Pub. Co.
+\bie{\rt{1978.}}
+A survey of tribal masks used by Brazilian tribes.
+
+Pages 160--169 in {\it Cultural Anthropology}.
+M. Zateh and F. Grange, eds. New York: Harper and Row.
+\vs{.5\bl}
+\nin OTTEN, C.M.
+\bibentry{\rt{1971.}}
+{\it Anthropology and Art: Readings in Cross Cultural
+Aesthetics}. Garden City, N.Y.:
+The Natural History Press.
+
+and the citations will look like:
++-----------------------------------------------------------------------------+
+| |
+| Citations |
+| |
+| OSBORNE, J.S. |
+| |
+| 1971. Introduction to Aesthetic Anthropology. Boston, Ma: Addison-Wesley |
+| Pub. Co. |
+| |
+| 1978. A survey of tribal masks used by Brazilian tribes. Pages 160--169 |
+| in Cultural Anthropology. M. Zateh and F. Grange, eds. New York: |
+| Harper and Row. |
+| OTTEN, C.M. |
+| |
+| 1971. Anthropology and Art: Readings in Cross Cultural Aesthetics. |
+| Garden City, N.Y.: The Natural History Press. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+This final style makes use of an \everybibentry similar to the default. In
+this example, the paragraph and hanging indents are set to different values
+(by default they are equal). The other difference is that \noindent is
+omitted.
+
+\bibliographyformat{\titleformat{\np\cl{\bd \bibtitle}
+ \vs{\bl}
+ \psk{\bl}\pin{10pt}\hin{20pt}}
+ \everybibentry{\par\goodbreak\hp\indent}
+ \sameauthorrulesize{width3em height.6ex depth-.5ex}}
+\bibliography{Bibliography}\frenchspacing
+\vs{\bl} \nin Asher67
+\bie
+Asherson, G. L., and S. H. Stone. 1967.\linebreak
+Dessensitization {\it in vitro}. {\it Immunology}.
+13:469. {\it Cultural Anthropology}. M. Zateh and
+F. Grange, eds. New York: Harper and Row.
+\vs{\bl}
+\nin Cinad68
+
+\bie
+Cinader, B., editor. 1968.\lbr
+Regulation of the Antibody Response. Charles C. Thomas,
+Publisher, Springfield, Ill.
+
+and the citations will look like:
++-----------------------------------------------------------------------------+
+| |
+| Bibliography |
+| |
+| Asher67 |
+| Asherson, G. L., and S. H. Stone. 1967. |
+| Dessensitization in vitro. Immunology. 13:469. Cultural Anthropology. |
+| M. Zateh and F. Grange, eds. New York: Harper and Row. |
+| |
+| Cinad68 |
+| Cinader, B., editor. 1968. |
+| Regulation of the Antibody Response. Charles C. Thomas, Publisher, |
+| Springfield, Ill. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+The \bibliographyformat markup must come after the \monospace markup, if
+both are used.
diff --git a/macros/text1/cms_help_files/bothpage.helpmenu b/macros/text1/cms_help_files/bothpage.helpmenu
new file mode 100644
index 0000000000..d635af3511
--- /dev/null
+++ b/macros/text1/cms_help_files/bothpage.helpmenu
@@ -0,0 +1,12 @@
+ Menu for BOTHPAGES Commands -- TEXT1
+
+A file may be selected for viewing by placing the cursor under any character
+of the file wanted and pressing the PF 1 key. A MENU file is indicated when
+a name is preceded by an asterisk (*). If you are using a terminal that
+doesn't have a CURSOR or PF KEYS then you MUST TYPE in the COMPLETE HELP
+COMMAND with operands and options. For a description of the operands and
+options type HELP HELP.
+
+
+runningheadformat (running top title options)
+runningfootformat (running bottom title options)
diff --git a/macros/text1/cms_help_files/bottomma.helppage b/macros/text1/cms_help_files/bottomma.helppage
new file mode 100644
index 0000000000..d9ee022c0d
--- /dev/null
+++ b/macros/text1/cms_help_files/bottomma.helppage
@@ -0,0 +1,21 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \bottommargin (\bma) COMMAND |
++-----------------------------------------------------------------------------+
+
+The \bottommargin (\bma) command will set the distance from the bottom of the
+page to the last line of the text. This command has the format:
+
+ \bottommargin{uu}
+
+where "uu" is any unit of TeX measurement (pt, pc, in, etc.) or number of
+lines. The default bottom margin is one inch, or \bottommargin{1IN}. This
+command may only appear at the beginning of the TeX input file before any
+actual text is entered.
+
+In order to change the bottom margin from the default of one inch to one-half
+inch, you would enter:
+
+ \bma{.5in}
+
+Which would give you one-half inch between the last line of text on the page
+and the bottom of the page.
diff --git a/macros/text1/cms_help_files/bottomti.helpboth b/macros/text1/cms_help_files/bottomti.helpboth
new file mode 100644
index 0000000000..ae217363f6
--- /dev/null
+++ b/macros/text1/cms_help_files/bottomti.helpboth
@@ -0,0 +1,28 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \bottomtitle COMMAND |
++-----------------------------------------------------------------------------+
+
+The \bottomtitle command sets what will appear at the bottom of each page after
+the title page. The \bottomtitle command is always used in conjunction with the
+\runningtitleformat and \bothpages (\bp), \evenpages (\ep), or \oddpages (\op)
+commands. This command has the format:
+
+ \bothpages{
+ \bottomtitle{\line{\lft{llll}\ctr{cccc}\rt{rrrr}}
+ }}
+
+where "llll" is the information to be printed to the far left of the
+bottomtitle line; "cccc" is the information to be printed in the center; and
+"rrrr" is the information to be printed to the far right of the bottomtitle
+line. For example:
+
+ \runningtitleformat{\bothpages{
+ \bottomtitle\line{\lft{Joe Smith}\ctr{June 3, 1984}\rt{\pagenumber}}
+ }}
+
+will space down to leave the amount specified on the \bottommargin command and
+put "Joe Smith" at the bottom far left, with "June 3, 1984" centered and the
+current page number on the bottom far right of the first line of the
+bottomtitle. The running bottomtitle of page 5 would look like this:
+
+Joe Smith June 3, 1984 5
diff --git a/macros/text1/cms_help_files/bottomti.helpeven b/macros/text1/cms_help_files/bottomti.helpeven
new file mode 100644
index 0000000000..a8c4432f10
--- /dev/null
+++ b/macros/text1/cms_help_files/bottomti.helpeven
@@ -0,0 +1,28 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \bottomtitle COMMAND |
++-----------------------------------------------------------------------------+
+
+The \bottomtitle command sets what will appear at the bottom of each page after
+the title page. The \bottomtitle command is always used in conjunction with the
+\runningtitleformat and \bothpages (\bp), \evenpages (\ep), or \oddpages (\op)
+commands. This command has the format:
+
+ \evenpages{
+ \bottomtitle{\line{\lft{llll}\ctr{cccc}\rt{rrrr}}
+ }}
+
+where "llll" is the information to be printed to the far left of the
+bottomtitle line; "cccc" is the information to be printed in the center; and
+"rrrr" is the information to be printed to the far right of the bottomtitle
+line on all even pages. For example:
+
+ \runningtitleformat{\evenpages{
+ \bottomtitle\line{\lft{Joe Smith}\ctr{June 3, 1984}\rt{\pagenumber}}
+ }}
+
+will space down to leave the amount specified on the \bottommargin command and
+put "Joe Smith" at the bottom far left, with "June 3, 1984" centered and the
+current page number on the bottom far right of the first line of the
+bottomtitle. The running bottomtitle of page 4 would look like this:
+
+Joe Smith June 3, 1984 4
diff --git a/macros/text1/cms_help_files/bottomti.helpoddp b/macros/text1/cms_help_files/bottomti.helpoddp
new file mode 100644
index 0000000000..949dd41432
--- /dev/null
+++ b/macros/text1/cms_help_files/bottomti.helpoddp
@@ -0,0 +1,28 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \bottomtitle COMMAND |
++-----------------------------------------------------------------------------+
+
+The \bottomtitle command sets what will appear at the bottom of each page after
+the title page. The \bottomtitle command is always used in conjunction with the
+\runningtitleformat and \bothpages (\bp), \evenpages (\ep), or \oddpages (\op)
+commands. This command has the format:
+
+ \oddpages{
+ \bottomtitle{\line{\lft{llll}\ctr{cccc}\rt{rrrr}}
+ }}
+
+where "llll" is the information to be printed to the far left of the
+bottomtitle line; "cccc" is the information to be printed in the center; and
+"rrrr" is the information to be printed to the far right of the bottomtitle
+line on all odd pages. For example:
+
+ \runningtitleformat{\oddpages{
+ \bottomtitle\line{\lft{Joe Smith}\ctr{June 3, 1984}\rt{\pagenumber}}
+ }}
+
+will space down to leave the amount specified on the \bottommargin command and
+put "Joe Smith" at the bottom far left, with "June 3, 1984" centered and the
+current page number on the bottom far right of the first line of the
+bottomtitle. The running bottomtitle of page 5 would look like this:
+
+Joe Smith June 3, 1984 5
diff --git a/macros/text1/cms_help_files/bqb.helpmark b/macros/text1/cms_help_files/bqb.helpmark
new file mode 100644
index 0000000000..afd01a8162
--- /dev/null
+++ b/macros/text1/cms_help_files/bqb.helpmark
@@ -0,0 +1,61 @@
++-----------------------------------------------------------------------------+
+| blockquotebegin |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\bqbã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \blockquotebegin markup ends a paragraph and forces the following text
+into a quote format, indicated by a change in the size of type to 10pt, 6
+points of spacing before and after the quote, and margin indentations of 24
+points.
+
+ ã|Example:ã%
+
+Salt (1958) names the process:
+\blockquotebegin
+This loss of fluids and cooling is known as aging.
+Most metamorphosis occurs in ocean trenches, but it
+
+can also occur in forms in trenchcoats.
+\paragraph
+The lithosphere---dermosphere in humans---wrinkles
+over time.
+The process is one-way, as rehydration will not
+unwrinkle the surface.
+\blockquoteend
+As far as general surface alteration, only the
+time scale differs between the human . . .
++-----------------------------------------------------------------------------+
+| |
+| Salt (1958) names the process: |
+| |
+| This loss of fluids and cooling is known as aging. Most |
+| metamorphosis occurs in ocean trenches, but it can also occur in |
+| forms in trenchcoats. |
+| The lithosphere---dermosphere in humans---wrinkles over |
+| time. The process is one-way, as rehydration will not unwrinkle |
+| the surface. |
+| |
+| As far as general surface alteration, only the time scale differs |
+| between the human . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+Every \blockquotebegin must have a matching \blockquoteend. If the quote is
+not ended with \blockquoteend, all following text is formatted as a block
+quote, and a warning message appears at the end of formatting which says:
+
+(\end occurred inside a group at level 1)
+Output written on TEXT1$$.dvi (1 page, 436 bytes).
+Transcript written on TEXT1$$.texlog.
+
+ The defaults for \blockquotebegin differ when you are using \monospace.
+With \monospace, there is no font change, one line is skipped before and
+after the block quote, and the left and right indentations are both 1 2
+inch.
+ Refer to the \blockquoteformat for instructions on how to change the
+block quote style.
diff --git a/macros/text1/cms_help_files/bqe.helpmark b/macros/text1/cms_help_files/bqe.helpmark
new file mode 100644
index 0000000000..c10fddc23b
--- /dev/null
+++ b/macros/text1/cms_help_files/bqe.helpmark
@@ -0,0 +1,47 @@
++-----------------------------------------------------------------------------+
+| blockquoteend |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\bqeã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \blockquoteend markup ends the quote and returns text to the normal
+margins and sizes. Text following is formatted as a new paragraph.
+
+ ã|Example:ã%
+
+Salt (1958) names the process:
+\blockquotebegin
+\rightragged
+This loss of fluids and cooling is known as aging.
+Most metamorphosis occurs in ocean trenches, but it
+can also occur in forms in trenchcoats.
+
+\paragraph
+The lithosphere --- dermosphere in humans ---
+wrinkles over time.
+The process is one-way, as rehydration will not
+unwrinkle the surface.
+\blockquoteend
+As far as general surface alteration, only the
+time scale differs between the human . . .
++-----------------------------------------------------------------------------+
+| |
+| Salt (1958) names the process: |
+| |
+| This loss of fluids and cooling is known as aging. Most |
+| metamorphosis occurs in ocean trenches, but it can also occur in |
+| forms in trenchcoats. |
+| The lithosphere --- dermosphere in humans --- wrinkles over |
+| time. The process is one-way, as rehydration will not unwrinkle |
+| the surface. |
+| |
+| As far as general surface alteration, only the time scale differs |
+| between the human . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+none.
diff --git a/macros/text1/cms_help_files/bqf.helpmark b/macros/text1/cms_help_files/bqf.helpmark
new file mode 100644
index 0000000000..fdae8155cc
--- /dev/null
+++ b/macros/text1/cms_help_files/bqf.helpmark
@@ -0,0 +1,76 @@
++-----------------------------------------------------------------------------+
+| blockquoteformat |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\bqfã%
+
+Parameters: ã|submarkupã%
+
+Submarkup: ã|\skipbefore, \everyblockquote, \skipafterã%
+
+ ã|Description:ã%
+The \blockquoteformat markup controls the formatting of block quotes. The
+following submarkup are effective only within block quotes.
+
+\skipbefore indicates how much space is to be skipped before printing a
+block. This amount is in addition to any paragraph skips.
+
+\everyblockquote{Nested Markup} determines how the text of the quote is
+formatted. You can specify justification or raggedness, single or double
+spacing, left or right indentation, paragraph spacing and indentation, and
+any font change needed within block quotes. You may use any markup such as
+\tenpt, \interlineskip, \leftindent or \rightindent within \everyblockquote.
+
+\skipafter indicates how much space is to be skipped after printing a
+block. This amount is in addition to any paragraph skips.
+
+ ã|Example:ã%
+The indentation has been changed in this sample. The text for the block
+quote is to be printed right ragged in 9 point Computer Modern. Paragraphs
+within the block quote, and only within, have a 1 pica paragraph indent and
+zero paragraph skip. The skips before and after the quotation have been set
+to zero.
+
+\blockquoteformat{\skipbefore{0pt}
+ \everyblockquote{\pin{1pc}\psk{0pt}\ninepoint
+ \leftindent{1pc}\rightindent{1pc}\rr}
+ \skipafter{0pt}}
+
+The example illustrated for \blockquotebegin would then begin:
++-----------------------------------------------------------------------------+
+| |
+| Salt (1958) names the process: |
+| |
+| This loss of fluids and cooling is known as aging. Most metamorphosis |
+| occurs in ocean trenches, but it can also occur in forms in |
+| trenchcoats. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+This sample is printed with a small interlineskip, normal paragraph values
+and zero indentation. The text is in 9 point italics with an interlineskip
+of 9.5 points.
+
+\blockquoteformat{\skipbefore{0pt}
+ \everyblockquote{\ssp\ninept\it\isk{9.5pt}
+ \leftindent{0pt}\rightindent{0pt}}
+ \skipafter{0pt}}
+
++-----------------------------------------------------------------------------+
+| |
+| Salt (1958) names the process: |
+| |
+| This loss of fluids and cooling is known as aging. Most metamorphosis |
+| occurs in ocean trenches, but it can also occur in forms in trenchcoats. |
+| |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+The \blockquoteformat markup must come after the \monospace markup, if both
+are used.
+ The defaults for \blockquoteformat when using \monospace are different.
+The space before and after is one blank line (1\bl), the left and right
+indents are 36 points ( 1 2 inch), and the text is in the roman font since
+you cannot print \tenpt with \monospace.
diff --git a/macros/text1/cms_help_files/bquotem.helpbloc b/macros/text1/cms_help_files/bquotem.helpbloc
new file mode 100644
index 0000000000..605bacc116
--- /dev/null
+++ b/macros/text1/cms_help_files/bquotem.helpbloc
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|BQUOTE-Mã%block is to be selected if you want to modify the
+\blockquoteformat and if you are using \monospace.
diff --git a/macros/text1/cms_help_files/bquotep.helpbloc b/macros/text1/cms_help_files/bquotep.helpbloc
new file mode 100644
index 0000000000..879bbe76b8
--- /dev/null
+++ b/macros/text1/cms_help_files/bquotep.helpbloc
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|BQUOTE-Pã%block is to be selected if you want to modify the
+\blockquoteformat and if you areã|notã%using \monospace.
diff --git a/macros/text1/cms_help_files/break.helpmark b/macros/text1/cms_help_files/break.helpmark
new file mode 100644
index 0000000000..96925e779d
--- /dev/null
+++ b/macros/text1/cms_help_files/break.helpmark
@@ -0,0 +1,36 @@
++-----------------------------------------------------------------------------+
+| break |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+If you want to force TEXT1 to break between lines at a certain point in the
+middle of a paragraph use the markup \break.
+
+ ã|Example:ã%
+
+To everything there is a season, and a time
+to every purpose under the
+heaven: A time to be born, and a time to
+pluck up {\it that which is}\break
+planted; A time to kill, and a time to heal;
+a time to break down, and
+a time to build up; A time to weep,
+and a time to laugh;
+
++-----------------------------------------------------------------------------+
+| |
+| To everything there is a season, and a time to every purpose under |
+| the heaven: A time to be born, and a time to pluck up that which is |
+| planted; A time to kill, and a time to heal; a time to break down, and a |
+| time to build up; A time to weep, and a time to laugh; |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+To avoid having the white space between the words as is illustrated in the
+third line in the above example, use the \linebreak markup.
+ For more on the \break markup, refer to The TEXbook.
diff --git a/macros/text1/cms_help_files/btitle.helpsubh b/macros/text1/cms_help_files/btitle.helpsubh
new file mode 100644
index 0000000000..b4b0c741fd
--- /dev/null
+++ b/macros/text1/cms_help_files/btitle.helpsubh
@@ -0,0 +1,20 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \titleformat COMMAND |
++-----------------------------------------------------------------------------+
+
+The \titleformat command is always used in conjunction with the \subheadcformat
+command and will set options for the subheadc titles. The format for the
+\titleformat command is:
+
+ \subheadcformat{\titleformat{
+ \vsk{24pt}
+ {\subheadctitle}
+ \vs{12pt}}
+ }
+
+This is the default for \titleformat. Each \subheadc command will space down 24
+points, print the \subheadctitle and space down 12 points to resume with the
+text.
+
+For more information on the \subheadctitle command, see the help screen under
+the markup menu for that particular command.
diff --git a/macros/text1/cms_help_files/btitlef.helpsubh b/macros/text1/cms_help_files/btitlef.helpsubh
new file mode 100644
index 0000000000..f51b183132
--- /dev/null
+++ b/macros/text1/cms_help_files/btitlef.helpsubh
@@ -0,0 +1,18 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \titleformat COMMAND |
++-----------------------------------------------------------------------------+
+
+The \titleformat command is always used in conjunction with the \subheaddformat
+command and will set options for the subheadd titles. The format for the
+\titleformat command is:
+
+ \subheaddformat{\titleformat{
+ {\it \subheaddtitle:}
+ }
+
+This is the default for \titleformat. Each \subheadd command will start a new
+paragraph, print the \subheaddtitle in italics followed by a colon and then
+resume with the text.
+
+For more information on the \subheaddtitle command, see the help screen under
+the markup menu for that particular command.
diff --git a/macros/text1/cms_help_files/bul.helpmark b/macros/text1/cms_help_files/bul.helpmark
new file mode 100644
index 0000000000..03d57913d3
--- /dev/null
+++ b/macros/text1/cms_help_files/bul.helpmark
@@ -0,0 +1,44 @@
++-----------------------------------------------------------------------------+
+| bullet |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\bulã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \bullet markup produces a raised centered dot as an identifier for an
+item in a list.
+
+ ã|Example:ã%
+
+the following necessary trace elements:
+\listbegin
+\bul Copper
+\bul Manganese
+\bul Selenium
+\bul Zinc
+\listend
+
+\nin The mineral content of the body . . .
+
++-----------------------------------------------------------------------------+
+| |
+| the following necessary trace elements: |
+| * Copper |
+| * Manganese |
+| * Selenium |
+| * Zinc |
+| The mineral content of the body . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+A list of bullets must be placed within the \listbegin and \listend markup.
+The bullets are indented 5 characters, like the first level of an ordered
+list. Bullets may also be used in outline lists where they are indented
+5 characters from the previous level by default. Refer to the \listformat
+markup to change the amount of indentation.
+
+ When in math mode, the \bullet markup is used in the same fashion as
+described in The TEXbook.
diff --git a/macros/text1/cms_help_files/cc.helpmark b/macros/text1/cms_help_files/cc.helpmark
new file mode 100644
index 0000000000..29255b1074
--- /dev/null
+++ b/macros/text1/cms_help_files/cc.helpmark
@@ -0,0 +1,33 @@
++-----------------------------------------------------------------------------+
+| caps |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\ccã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \caps markup sets the typeface to "caps/small caps".
+
+ ã|Example:ã%
+This example changes "Parallels" to caps/small caps. It is changed back
+with the \roman markup.
+
+lowest common denominator.
+\par
+\nin\caps Parallels. \roman Consider for a
+moment rocks and deer . . .
++-----------------------------------------------------------------------------+
+| |
+| lowest common denominator. |
+| Parallels. Consider for a moment rocks and deer . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+Caps/small caps are often used for display titles or special emphasis. It
+should not be used for the body of text. Not all font sets have small
+caps available. Those font sets that do not have small caps will give the
+following warning message when you try to use \caps or \cc:
+
+<TEXT1> Warning. No small caps font in CMSAN8. Will print roman font .)
diff --git a/macros/text1/cms_help_files/cents.helpmark b/macros/text1/cms_help_files/cents.helpmark
new file mode 100644
index 0000000000..ac5118d383
--- /dev/null
+++ b/macros/text1/cms_help_files/cents.helpmark
@@ -0,0 +1,23 @@
++-----------------------------------------------------------------------------+
+| cents |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+This markup is used to print a cent sign.
+
+ ã|Example:ã%
+This machine takes 35\cents\ instead of 25\cents.
+
++-----------------------------------------------------------------------------+
+| |
+| This machine takes 35c instead of 25c. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+The \cents markup must be followed either by a backslash-space, or by a
+tilde (~).
diff --git a/macros/text1/cms_help_files/chap.helpmark b/macros/text1/cms_help_files/chap.helpmark
new file mode 100644
index 0000000000..51aba6b4c6
--- /dev/null
+++ b/macros/text1/cms_help_files/chap.helpmark
@@ -0,0 +1,48 @@
++-----------------------------------------------------------------------------+
+| chapter |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\chapã%
+
+Parameters: ã|titleã%
+
+ ã|Description:ã%
+The \chapter markup starts a new page, centers the title in bold face,
+and enters it in the table of contents. The text of a title is the only
+parameter.
+
+ ã|Example:ã%
+
+Anything less is more realistic.
+\par
+\chapter{Nationalism}
+Nationalism is directly related to war.
+Lord Acton observed that nationalism aims solely . . .
++-----------------------------------------------------------------------------+
+| |
+| Chapter 1 |
+| Nationalism |
+| Nationalism is directly related to war. Lord Acton observed that |
+| nationalism aims solely . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+If you want to force TEXT1 to split a long chapter title at a place of your
+choosing, use \linebreak.
+
+\chapter{Subject Index\linebreak
+and\lbr
+Concordance}
++-----------------------------------------------------------------------------+
+| |
+| Chapter 1 |
+| Subject Index |
+| and |
+| Concordance |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+Refer to \chapterformat on the next page to change the chapter style.
+ Each time you use \chapter it resets the subhead numbers to zero.
diff --git a/macros/text1/cms_help_files/chapter.helpbloc b/macros/text1/cms_help_files/chapter.helpbloc
new file mode 100644
index 0000000000..e801d05132
--- /dev/null
+++ b/macros/text1/cms_help_files/chapter.helpbloc
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|CHAPTERã%block is to be selected if you want to modify the
+\chapterformat.
diff --git a/macros/text1/cms_help_files/chf.helpmark b/macros/text1/cms_help_files/chf.helpmark
new file mode 100644
index 0000000000..c20cd7f815
--- /dev/null
+++ b/macros/text1/cms_help_files/chf.helpmark
@@ -0,0 +1,98 @@
++-----------------------------------------------------------------------------+
+| chapterformat |
++-----------------------------------------------------------------------------+
+
+\chapterformat{\numberingstyle{1}
+ \titleformat{\dumpinsertseject
+ \cl{\twelvept\bd Chapter \chapternumber}
+ \cl{\twelvept\bd \chaptertitle}
+ \vs{1\bl}
+ \setsubheadanumber{0}
+ \setsubheadbnumber{0}
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}}
+ \incontents{yes}}
+
+Abbreviation: ã|\chfã%
+
+Parameters: ã|submarkupã%
+
+Submarkup: ã|\numberingstyle, \titleformat, \incontentsã%
+
+ ã|Description:ã%
+The \chapterformat markup allows you to modify the defaults that controls
+the appearance of the chapter title. The submarkup is described.
+
+\numberingstyle allows you to change the style from Arabic numerals, the
+default, to letters {A} or roman numerals {I}.
+
+\chapterformat{\numberingstyle{A}}
+
+\titleformat{Nested Markup} controls the appearance of the chapter title
+banner. You may use markup such as \newpage, \verticalspace, and \center-
+line within \titleformat as Nested Markup. Other markup you may use within
+or outside of \chapterformat:
+
+ * \chapternumberprints the most recent chapter number.
+
+ * \chaptertitleprints the most recent chapter title.
+
+\incontents places the chapter title in contents (if one is printed).
+Printing can be suppressed by changing to "no."
+
+\chapterformat{\incontents{no}}
+
+ ã|Example:ã%
+When you enter,
+
+\chapter{Introduction}
+
+you get the default chapter style which looks like:
+
++-----------------------------------------------------------------------------+
+| |
+| Chapter 1 |
+| Introduction |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+In the following example this default style has been modified such that each
+chapter starts on a new page, the title is centered in bold (no chapter
+number printed), and one line is skipped after the chapter title.
+
+\chapterformat{\numberingstyle{1}
+
+ \titleformat{\newpage
+ \cl{\bd \chaptertitle}
+ \vs{1\bl}}
+ \incontents{yes}}
+
+Then each time you specify \chapter you will get:
+
++-----------------------------------------------------------------------------+
+| |
+| Introduction |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+In this sample, each chapter title is prefaced by the chapter number. As
+before, the title is centered in bold, and one line is skipped before text.
+
+\chapterformat{\numberingstyle{1}
+ \titleformat{\newpage
+ \cl{\bd\chapternumber.~\chaptertitle}
+
+ \vs{1\bl}}
+ \incontents{yes}}
+
++-----------------------------------------------------------------------------+
+| |
+| 1. Introduction |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+The \chapterformat markup must come after the \monospace markup, if both are
+used.
diff --git a/macros/text1/cms_help_files/chrono.changes b/macros/text1/cms_help_files/chrono.changes
new file mode 100644
index 0000000000..55451d7c10
--- /dev/null
+++ b/macros/text1/cms_help_files/chrono.changes
@@ -0,0 +1,3 @@
+6/22/90:
+
+1) removed filemana.helpmark
diff --git a/macros/text1/cms_help_files/cincon.helpsubh b/macros/text1/cms_help_files/cincon.helpsubh
new file mode 100644
index 0000000000..1f487912fe
--- /dev/null
+++ b/macros/text1/cms_help_files/cincon.helpsubh
@@ -0,0 +1,15 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \incontents COMMAND |
++-----------------------------------------------------------------------------+
+
+The \incontents command is always used in conjunction with the \subheadcformat
+command and will determine whether subheadc titles are included in the Table of
+Contents. The format for the \incontents command is:
+
+ \subheadcformat{
+ \incontents{yes}
+ }
+
+By default, the subheadc titles will not be included in the Table of Contents.
+If you want the subheadc titles included in the Table of Contents, enter
+\incontents{yes} within the \subheadcformat command.
diff --git a/macros/text1/cms_help_files/cincont.helpsubh b/macros/text1/cms_help_files/cincont.helpsubh
new file mode 100644
index 0000000000..b6061267cc
--- /dev/null
+++ b/macros/text1/cms_help_files/cincont.helpsubh
@@ -0,0 +1,15 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \incontents COMMAND |
++-----------------------------------------------------------------------------+
+
+The \incontents command is always used in conjunction with the \subheaddformat
+command and will determine whether subheadd titles are included in the Table of
+Contents. The format for the \incontents command is:
+
+ \subheaddformat{
+ \incontents{no}
+ }
+
+By default, the subheadd titles will not be included in the Table of Contents.
+If you want the subheadd titles included in the Table of Contents, enter
+\incontents{yes} within the \subheaddformat command.
diff --git a/macros/text1/cms_help_files/cl.helpmark b/macros/text1/cms_help_files/cl.helpmark
new file mode 100644
index 0000000000..67836f2dfe
--- /dev/null
+++ b/macros/text1/cms_help_files/cl.helpmark
@@ -0,0 +1,38 @@
++-----------------------------------------------------------------------------+
+| centerline |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\clã%
+
+Parameters: ã|textã%
+
+ ã|Description:ã%
+The \centerline markup ends the previous paragraph and places equal blank
+spaces on both sides of a word or phrase on a single line. This markup is
+useful for titles and emphasis. The only parameter for this markup is the
+text to be centered.
+
+ ã|Example:ã%
+
+\centerline{SOCIOGEOLOGY\lbr
+Minerals and Human Behavior}
+\vs{12pt}
+\centerline{by Achilles Chert}
+\vs{24pt}
+
+"Does the Absurd dictate death?" asks Albert . . .
+
++-----------------------------------------------------------------------------+
+| |
+| SOCIOGEOLOGY |
+| Minerals and Human Behavior |
+| |
+| by Achilles Chert |
+| |
+| |
+| "Does the Absurd dictate death?" asks Albert . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+You may use \linebreak within \centerline.
diff --git a/macros/text1/cms_help_files/clb.helpmark b/macros/text1/cms_help_files/clb.helpmark
new file mode 100644
index 0000000000..e4216ca42c
--- /dev/null
+++ b/macros/text1/cms_help_files/clb.helpmark
@@ -0,0 +1,68 @@
++-----------------------------------------------------------------------------+
+| centerlinesbegin |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\clbã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \centerlinesbegin markup ends the previous paragraph and starts a series
+of centered lines. This markup is useful for titles and emphasis. There
+are no parameters.
+
+ ã|Example:ã%
+
+\centerlinesbegin
+SOCIOGEOLOGY
+Minerals and Human Behavior
+\vs{18pt}
+Achilles Chert
+
+\centerlinesend
+\vs{24pt}
+"Does the Absurd dictate death?" asks Albert . . .
+
++-----------------------------------------------------------------------------+
+| |
+| SOCIOGEOLOGY |
+| Minerals and Human Behavior |
+| |
+| |
+| Achilles Chert |
+| |
+| |
+| "Does the Absurd dictate death?" asks Albert . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+Each \centerlinesbegin must be followed by a matching \centerlinesend.
+
+ You can also use \centerlinesbegin before a \drawbox or \paragraphbox,
+but not within either markup.
+ You cannot use \centerlinesbegin within any of the following markup:
+\appendix, \autofootnote, \bibliography, \centerline, \chapter, \drawbox,
+\figure, \footnote, \item, \label, \marginnote, \paragraphbox, \part,
+\preface, \rightline, \runningheadformat, \runningfootformat, \subheada,
+\subheadb, \subheadc, \subheadd, or \tabletitle.
+
+ ã|Example:ã%
+
+\centerlinesbegin
+\paragraphbox{John H. Whalley
+{\it publishing vice president}
+\vs{\bl}
+John B. Dykeman
+{\it associate publisher}}
+\centerlinesend
+
++-----------------------------------------------------------------------------+
+| |
+| John H. Whalley |
+| publishing vice president |
+| |
+| John B. Dykeman |
+| associate publisher |
+| |
++-----------------------------------------------------------------------------+
diff --git a/macros/text1/cms_help_files/cle.helpmark b/macros/text1/cms_help_files/cle.helpmark
new file mode 100644
index 0000000000..bd7f8b0633
--- /dev/null
+++ b/macros/text1/cms_help_files/cle.helpmark
@@ -0,0 +1,38 @@
++-----------------------------------------------------------------------------+
+| centerlinesend |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\cleã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \centerlinesend markup ends a series of centered lines and returns to a
+paragraph mode. There are no parameters.
+
+ ã|Example:ã%
+
+The prerequisites to operate this hardware are:
+\vs{2\bl}
+\clb
+6085 Professional Computer System
+ViewPoint Software
+VP Document Editor Software
+Signed Software License Agreement
+
+\cle
+
++-----------------------------------------------------------------------------+
+| |
+| The prerequisites to operate this hardware are: |
+| |
+| |
+| 6085 Professional Computer System |
+| ViewPoint Software |
+| VP Document Editor Software |
+| Signed Software License Agreement |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+none.
diff --git a/macros/text1/cms_help_files/contents.helpbloc b/macros/text1/cms_help_files/contents.helpbloc
new file mode 100644
index 0000000000..0c9c11c617
--- /dev/null
+++ b/macros/text1/cms_help_files/contents.helpbloc
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|CONTENTSã%block is to be selected if you want to modify the
+\tableofcontentsformat.
diff --git a/macros/text1/cms_help_files/coul.helpmark b/macros/text1/cms_help_files/coul.helpmark
new file mode 100644
index 0000000000..0dc940202f
--- /dev/null
+++ b/macros/text1/cms_help_files/coul.helpmark
@@ -0,0 +1,21 @@
++-----------------------------------------------------------------------------+
+| countinglines |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\coulã%
+
+Parameters: ã|statusã%
+
+ ã|Description:ã%
+This markup is used to start counting lines for line numbering in the margin
+of a document. Status is true or false.
+
+ ã|Example:ã%
+To start line numbering you enter
+
+\countinglines{true}
+
+ ã|Notes:ã%
+
+Line numbering is only available on the phototypesetter. This markup is
+ignored for all other printers.
diff --git a/macros/text1/cms_help_files/db.helpmark b/macros/text1/cms_help_files/db.helpmark
new file mode 100644
index 0000000000..3cd7e700ae
--- /dev/null
+++ b/macros/text1/cms_help_files/db.helpmark
@@ -0,0 +1,45 @@
++-----------------------------------------------------------------------------+
+| drawbox |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\dbã%
+
+Parameters: ã|textã%
+
+ ã|Description:ã%
+A box is a grouping of rules into a square or rectangle. You can draw a box
+with the \drawbox markup. The parameter for this markup is the material to
+be put inside the box. Any grouping less than a paragraph can be boxed,
+including letters, sentences, figures, or tables.
+
+ ã|Example:ã%
+To draw a box around an "a", you would enter:
+
+Draw a box around \drawbox{a}
++-----------------------------------------------------------------------------+
+| |
+| ..... |
+| Draw a box around . . |
+| ..... |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+If you want to draw an empty 1 inch square (plus the box "rule size" and
+"mat size") you could enter,
+
+\db{\vrule width 0pt height 1in
+\vrule width 1in height 0pt depth 0pt}
+ ..............
+ . .
+ . .
+ . .
+ . .
+ . .
+ . .
+which prints: ..............
+
+ ã|Notes:ã%
+Do not use this markup with \monospace or around \settabs or \halign.
+ Paragraphs cannot be boxed with \drawbox unless each one is put in a
+vertical box (see \vbox). Use the \paragraphbox markup instead.
diff --git a/macros/text1/cms_help_files/dbm.helpmark b/macros/text1/cms_help_files/dbm.helpmark
new file mode 100644
index 0000000000..46df8d2cf9
--- /dev/null
+++ b/macros/text1/cms_help_files/dbm.helpmark
@@ -0,0 +1,26 @@
++-----------------------------------------------------------------------------+
+| drawboxmat |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\dbmã%
+
+Parameters: ã|unit of measureã%
+
+ ã|Description:ã%
+The \drawboxmat markup determines the amount of space between the rule and
+the text. This is the area that has been shaded in the illustration at the
+bottom of the page. This space is used with the \drawbox and \paragraphbox
+markup. The default is 3 points.
+
+ ã|Example:ã%
+\drawboxmat{20pt}
+Draw a box around \drawbox{a}
+
++-----------------------------------------------------------------------------+
+| |
+| ......... |
+| . . |
+| . a . |
+| . . |
+| Draw a box around ......... |
++-----------------------------------------------------------------------------+
diff --git a/macros/text1/cms_help_files/dbrs.helpmark b/macros/text1/cms_help_files/dbrs.helpmark
new file mode 100644
index 0000000000..88a1713cba
--- /dev/null
+++ b/macros/text1/cms_help_files/dbrs.helpmark
@@ -0,0 +1,27 @@
++-----------------------------------------------------------------------------+
+| drawboxrulesize |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\dbrsã%
+
+Parameters: ã|unit of measureã%
+
+ ã|Description:ã%
+The \drawboxrulesize markup determines the thickness of the rule that makes
+up the box itself. The default is .4 point. This rule thickness is used by
+both \drawbox and \paragraphbox.
+
+ ã|Example:ã%
+\drawboxrulesize{2pt}
+Draw a box around \drawbox{a}
+
++-----------------------------------------------------------------------------+
+| |
+| ..... |
+| . a . |
+| Draw a box around ..... |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+none.
diff --git a/macros/text1/cms_help_files/die.helpmark b/macros/text1/cms_help_files/die.helpmark
new file mode 100644
index 0000000000..9278cca2bd
--- /dev/null
+++ b/macros/text1/cms_help_files/die.helpmark
@@ -0,0 +1,32 @@
++-----------------------------------------------------------------------------+
+| dumpinsertseject |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\dieã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+This markup is used to dump (print) all accumulated figures and tables
+(inserts) entered with \figure, \topinsert or \midinsert. After printing
+the figures and other inserts, a new page is started. If no inserts had
+been accumulated, a new page is still started. This markup appears in many
+of the format markup, such as \chapterformat.
+
+ ã|Example:ã%
+
+\chapterformat{\numberingstyle{1}
+ \titleformat{\dumpinsertseject
+ \cl{\twelvept\bd Chapter \chapternumber}
+ \cl{\twelvept\bd \chaptertitle}
+ \vs{1\bl}
+ \setsubheadanumber{0}
+ \setsubheadbnumber{0}
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}
+ }
+ \incontents{yes}
+ }
+
+ ã|Notes:ã%
+The \topinsert and \midinsert markup are discussed in The TEXbook.
diff --git a/macros/text1/cms_help_files/dsp.helpmark b/macros/text1/cms_help_files/dsp.helpmark
new file mode 100644
index 0000000000..f9f2cbc586
--- /dev/null
+++ b/macros/text1/cms_help_files/dsp.helpmark
@@ -0,0 +1,41 @@
++-----------------------------------------------------------------------------+
+| doublespace |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\dspã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The doublespace markup leaves alternate line spaces blank. This markup
+causes a break in text. There are no parameters. Double spacing will be in
+effect until changed with a \singlespace markup.
+
+ ã|Example:ã%
+\singlespace
+All things considered, Camus has derived
+a solid conglomerate of grail theories
+for us.
+\doublespace
+
+Let me close with another penetrating insight from
+Camus: The rock should be left at the bottom,
+because of the inevitability of entropic direction.
+
++-----------------------------------------------------------------------------+
+| |
+| |
+| All things considered, Camus has derived a solid conglomerate of grail |
+| theories for us. |
+| |
+| Let me close with another penetrating insight from Camus: The rock |
+| |
+| should be left at the bottom, because of the inevitability of entropic |
+| |
+| direction. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+none.
+
diff --git a/macros/text1/cms_help_files/el.helpmark b/macros/text1/cms_help_files/el.helpmark
new file mode 100644
index 0000000000..349690ca9b
--- /dev/null
+++ b/macros/text1/cms_help_files/el.helpmark
@@ -0,0 +1,44 @@
++-----------------------------------------------------------------------------+
+| ellipsis |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\elã%
+
+Parameters: ã|nã%
+
+ ã|Description:ã%
+Ellipsis points indicate any omission of a word, line, or paragraph from
+a quoted passage. Three points are used when the omission occurs with a
+sentence or fragment. Four points are used when the omission is a whole
+sentence or more, including whole paragraphs.
+ In using the \ellipsis markup, n may be "3" or "4". The \ellipsis3
+markup inserts three points, surrounded by appropriate spacing. ( . . .
+) The \ellipsis4 markup inserts four points, immediately after a sentence,
+with space after the last point. ( . . . . )
+
+ ã|Example:ã%
+The following quote has been shortened with ellipses.
+
+names the process:
+\blockquotebegin
+This loss of fluids is known as aging\ellipsis4
+The lithosphere\ellipsis3 wrinkles over time.
+The process is one-way, as rehydration will not
+unwrinkle the surface.
+\blockquoteend
+As far as general surface alteration, only the . . .
++-----------------------------------------------------------------------------+
+| |
+| names the process: |
+| |
+| This loss of fluids is known as aging . . . . The |
+| lithosphere . . . wrinkles over time. The process is |
+| one-way, as rehydration will not unwrinkle the surface. |
+| |
+| As far as general surface alteration, only the . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+No additional space is required around the ellipsis markup, since space is
+included.
diff --git a/macros/text1/cms_help_files/enf.helpmark b/macros/text1/cms_help_files/enf.helpmark
new file mode 100644
index 0000000000..4faefbc558
--- /dev/null
+++ b/macros/text1/cms_help_files/enf.helpmark
@@ -0,0 +1,129 @@
++-----------------------------------------------------------------------------+
+| endnoteformat |
++-----------------------------------------------------------------------------+
+
+\endnoteformat{\skipbefore{4pt}
+ \textreferenceposition{down}
+ \textreferencefont{\rm}
+ \textreferencestyle{[1]}
+ \notereferenceposition{down}
+ \notereferencefont{\tenpt}
+ \notereferencestyle{1.}
+ \notereferencegutter{1em}
+ \everyendnote{\tenpt\pin{0pt}\lin{1.2em}}}
+
+Abbreviation: ã|\enfã%
+
+Parameters: ã|submarkupã%
+
+Submarkup: ã|\skipbefore, \textreferenceposition,
+\textreferencefont, \textreferencestyle, \notereferenceposition, \noterefer-
+encefont, \notereferencestyle, \notereferencegutter, \everyendnoteã%
+
+ ã|Description:ã%
+The \endnoteformat markup allows you to modify the shape and presentation of
+endnotes generated with \autoendnote.
+
+\skipbefore indicates how much space is to be skipped before printing a
+block. This amount is in addition to any paragraph skips.
+
+\textreferenceposition determines if the endnote reference number is
+superscripted or not. By default, the reference is not superscripted. If
+you want the endnote reference number to be superscripted, then change the
+parameter to "up".
+
+\textreferencefont lets you change the face or size. By default the
+endnote reference number is always printed in the standard font.
+
+\textreferencestyle determines the numbering style at the end of a chapter
+or the end of the document (wherever the \printendnotes appears). There are
+five possible values:
+ 1. "1" for numbered endnotes
+ 2. "(1)" for numbered endnotes with parentheses
+ 3. "[1]" for numbered endnotes with square brackets
+ 4. "a" for lettered endnotes
+ 5. "(a)" for lettered endnotes with parentheses
+The default is Arabic numerals in square brackets.
+
+\notereferenceposition determines if the endnote reference number is
+superscripted or not when it is printed at the end of a chapter or the end
+of a document. By default, the reference is not superscripted. If you want
+the endnote reference number to be superscripted, then change the parameter
+to "up".
+
+\notereferencefont lets you change the face or size. By default the
+endnote reference number printed at the end of a chapter (or end of a
+document, wherever \printendnotes occurs) is always printed in the standard
+font.
+
+\notereferencestyle determines the numbering style. There are five
+possible values:
+ 1. "1." for numbered endnotes
+ 2. "(1)" for numbered endnotes with parentheses
+ 3. "[1]" for numbered endnotes with square brackets
+ 4. "a" for lettered endnotes
+ 5. "(a)" for lettered endnotes with parentheses
+The default is numbered endnotes.
+
+\notereferencegutter specifies the amount of space between the endnote
+number and the endnote text. The gutter is illustrated here as the shaded
+portion between "1." and "The first step":
++-----------------------------------------------------------------------------+
+| |
+| ... |
+| 1....The first step . . . |
+| |
++-----------------------------------------------------------------------------+
+
+\everyendnote lets you modify the shape of the notes. You can change the
+type face, the paragraph parameters, and the right and left indentation.
+
+ ã|Example:ã%
+This example shows an endnote style with a superscripted endnote number; the
+body of the endnote in a 9 point Computer Modern set; the endnote at the end
+of the document (or chapter) indented half an inch from the left and half an
+inch from the right of the rest of the body of the text; the endnote body
+right ragged; and the text of the document right justified and in 10 point
+
+Computer Modern. The endnote "text" reference at the end of the chapter
+will retain the default style ("1." not superscripted).
+ Note that 9 point was specified within both the "notereferencefont" and
+"everyendnote" markups. The "notereferencefont" determines the font that
+the endnote reference number is to be printed in. The "everyendnote" markup
+determines the font that the endnote text is to print in at the end of the
+document or end of chapter, wherever the next \printendnotes markup appears.
+
+\endnoteformat{\skipbefore{12pt}
+ \textreferenceposition{up}
+ \textreferencefont{\ninepoint\rm}
+ \textreferencestyle{1}
+ \notereferenceposition{down}
+ \notereferencefont{\ninepoint\rm}
+ \notereferencestyle{1.}
+ \everyendnote{\rightragged
+ \pin{0pt}\psk{12pt}\ninepoint
+ \leftindent{.5in}\rightindent{.5in}}
+ }
+
+
+| . . automatically sets an interline skip 2 points greater |
+than the font size.\autoendnote{This extra space is
+referred to as leading.} The default font size is . . .
+
+The endnote in the document would look like:
++-----------------------------------------------------------------------------+
+| |
+| . . . automatically sets an interline skip 2 points greater than the |
+| font size. The default font size is . . . |
+| |
++-----------------------------------------------------------------------------+
+The endnote printed after the \printendnotes markup would look like:
++-----------------------------------------------------------------------------+
+| |
+| 1. This extra space is referred to as leading. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+The \endnoteformat markup must come after the \monospace markup, if both are
+used.
diff --git a/macros/text1/cms_help_files/enotem.helpbloc b/macros/text1/cms_help_files/enotem.helpbloc
new file mode 100644
index 0000000000..8afb34d2bf
--- /dev/null
+++ b/macros/text1/cms_help_files/enotem.helpbloc
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|ENOTE-Mã%block is to be selected if you want to modify the
+\endnoteformat and if you are using \monospace.
diff --git a/macros/text1/cms_help_files/enotep.helpbloc b/macros/text1/cms_help_files/enotep.helpbloc
new file mode 100644
index 0000000000..2c37af8a98
--- /dev/null
+++ b/macros/text1/cms_help_files/enotep.helpbloc
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|ENOTE-Pã%block is to be selected if you want to modify the
+\endnoteformat and if you areã|noteã%using \monospace.
diff --git a/macros/text1/cms_help_files/ep.helpmark b/macros/text1/cms_help_files/ep.helpmark
new file mode 100644
index 0000000000..4dae99a110
--- /dev/null
+++ b/macros/text1/cms_help_files/ep.helpmark
@@ -0,0 +1,38 @@
++-----------------------------------------------------------------------------+
+| emptypage |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\epã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \emptypage markup advances the page count, leaving an "empty" page,
+which can be placed with custom figures or diagrams. There is no break in
+text. There are no parameters for this markup.
+
+ ã|Example:ã%
+To float an empty page, enter the sequence:
+same proportions (Figure 2, on the following page).
+\par
+\emptypage
+This suggests parallels in evolution.
+
+Generally speaking, there are three
+possible solutions . . .
+
+ ã|Example:ã%
+To have an empty page print immediately between the sentence ending "page)."
+and the one beginning "This suggests . . . " you would enter follow the
+\emptypage with a \newpage:
+same proportions (Figure 2, on the following page).
+\par
+\emptypage
+\newpage
+This suggests parallels in evolution.
+Generally speaking, there are three
+possible solutions . . .
+
+ ã|Notes:ã%
+Unlike \newpage, if you enter two \emptypage markup in a row, you will get
+two empty pages when the page is ejected.
diff --git a/macros/text1/cms_help_files/epm.helpmark b/macros/text1/cms_help_files/epm.helpmark
new file mode 100644
index 0000000000..3e9165e6a9
--- /dev/null
+++ b/macros/text1/cms_help_files/epm.helpmark
@@ -0,0 +1,24 @@
++-----------------------------------------------------------------------------+
+| evenpagemargin |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\epmã%
+
+Parameters: ã|measurementã%
+
+ ã|Description:ã%
+This markup is used to indicate where a document's line numbering is to be
+printed on even pages. The default is 50.8 points from the left edge on
+even pages.
+
+ ã|Example:ã%
+To indicate that you want line numbering to start at 1 inch from the left
+edge you would enter at the beginning of your document:
+
+\evenpagemargin{1in}
+
+ ã|Notes:ã%
+Line numbering is only available on the phototypesetter. This markup is
+ignored for all other printers.
+ Valid values for \evenpagemargin are 0 to 2 to the 32d power points,
+practical values are 5-860 points.
diff --git a/macros/text1/cms_help_files/ex.helpmark b/macros/text1/cms_help_files/ex.helpmark
new file mode 100644
index 0000000000..e56dd2f3e7
--- /dev/null
+++ b/macros/text1/cms_help_files/ex.helpmark
@@ -0,0 +1,26 @@
++-----------------------------------------------------------------------------+
+| extension |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\exã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \extension markup sets the face to the Computer Modern Math Extension
+face. Refer to The TEXbook, Appendix F, for a complete list of the
+characters available in the Extension face.
+
+ ã|Example:ã%
+This example uses \extension to print an "O dot":
+
+Put a {\extension\char'113} next to . . .
++-----------------------------------------------------------------------------+
+| |
+| Put a K next to . . . |
+| |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+For more on the use of the \char markup, refer to The TEXbook.
diff --git a/macros/text1/cms_help_files/fif.helpmark b/macros/text1/cms_help_files/fif.helpmark
new file mode 100644
index 0000000000..049452e975
--- /dev/null
+++ b/macros/text1/cms_help_files/fif.helpmark
@@ -0,0 +1,86 @@
++-----------------------------------------------------------------------------+
+| figureformat |
++-----------------------------------------------------------------------------+
+
+\figureformat{\skipbefore{1\bl}
+ \position{\float}
+ \titleformat{\bqb\hp\tenpt
+ \bd Figure \figurenumber.
+ \rm\figuretitle \bqe}
+ \incontents{yes}
+ \skipafter{1\bl}
+ }
+
+Abbreviation: ã|\fifã%
+
+Parameters: ã|submarkupã%
+
+Submarkup: ã|\skipbefore, \position, \titleformat,
+\incontents, \skipafterã%
+
+ ã|Description:ã%
+The \figureformat markup allows you to modify the defaults that control the
+appearance of the figure. The submarkup is described.
+
+ã|\skipbeforeã% indicates how much space is to be skipped before printing a
+figure block. This amount is in addition to any paragraph skips.
+
+ã|\positionã% By default, text is floated around a figure and the figure
+printed at the top of the next page if not enough room remains on the
+current page to print the figure. If you do not want text to float around
+the figure, and you want the figure to print exactly where you place it, use
+\position{\nofloat}.
+
+\figureformat{\position{\nofloat}}
+
+ã|\titleformat{Nested Markup}ã% controls the appearance of the figure title.
+You may use markup such as \blockquotebegin, \hangingparagraph, \vertical-
+space, and \centerline within \titleformat as Nested Markup. Other markup
+you may use within or outside of \figureformat:
+
+ * \figurenumberprints the most recent figure number.
+
+ * \figuretitleprints the most recent figure title.
+
+ã|\skipafterã% indicates how much space is to be skipped after printing the
+figure title. This amount is in addition to any paragraph skips.
+
+ã|\incontentsã% places the figure title in contents (if one is printed).
+Printing can be suppressed by changing to "no."
+
+ ã|Example:ã%
+The amount of space skipped before and after has been reduced to 6 points
+(half a line with 12 point interline space), the figure number is placed in
+\label and the figure title is printed in italics.
+
+\figureformat{\skipbefore{6pt}
+ \titleformat{\label{\bd Figure \figurenumber.}
+ \it\figuretitle}
+ \skipafter{6pt}
+ \incontents{yes}
+ }
+
+\figure{\halign{\ctr{#}&&\hs{1em}\ctr{#}\cr
+July 23&July 27&July 31&August 5&August 9\cr
+32&67&44&47&18\cr}{Size data of a Yellow
+
+Transparent fruit during the period of July 23 to August 9,
+1977. (fruit No. IV@_b@)}
+
++-----------------------------------------------------------------------------+
+| |
+| |
+| July 23 July 27 July 31 August 5 August 9 |
+| 32 67 44 47 18 |
+| |
+| Figure 1. Size data of a Yellow Transparent fruit during the period of |
+| July 23 to August 9, 1977. (fruit No. IV[b]) |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+The \figureformat markup must come after the \monospace markup, if both are
+used. If you are using \monospace, the only difference in defaults is
+
+that the figure title is printed in the roman \monospace font instead of
+\tenpt.
diff --git a/macros/text1/cms_help_files/fig.helpmark b/macros/text1/cms_help_files/fig.helpmark
new file mode 100644
index 0000000000..be6fe909ea
--- /dev/null
+++ b/macros/text1/cms_help_files/fig.helpmark
@@ -0,0 +1,110 @@
++-----------------------------------------------------------------------------+
+| figure |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\figã%
+
+Parameters: ã|first parameter = markup
+ second parameter = the figure titleã%
+
+ ã|Description:ã%
+A figure is a representation or illustration. The \figure markup can leave
+space for a figure, number it, print the figure title, and ensure that the
+title gets placed in the contents. The figure markup has two parameters:
+markup and the title of the figure.
+ The "markup" can be a \verticalspace markup, \fullpage, \halfpage, or
+text such as a table, etc. The "title" is the title of the figure which
+will print at the bottom of the figure and in the table of contents.
+ If you want a figure on an entire page, enter \fullpage as the first
+parameter. If you want a figure to fill half of the page, enter \halfpage
+as the first parameter.
+
+ ã|Example:ã%
+If you want to use \asisbegin, it must go outside of the figure and the
+title cannot be more than one line long.
+
+\aib
+\figure{\tt
+ clay
+ Human
+ pressure
+ parent rock
+ temperature
+}{Origin of the Stone Species}
+\aie
+
++-----------------------------------------------------------------------------+
+| |
+| |
+| |
+| |
+| |
+| clay |
+| Human |
+| pressure |
+| parent rock |
+| temperature |
+| |
+| |
+| |
+| |
+| Figure 1. Origin of the Stone Species |
+| |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+This figure leaves half an inch of space above the title, "Size data of a
+| . . ". |
+
+the same proportions.
+\db{\figure{\vs{.5in}}{Size data of a Yellow
+Transparent fruit during the period of July 23 to August 9,
+1977. (fruit No. IV@_b@)}
+This suggests parallels . . . }
+
++-----------------------------------------------------------------------------+
+| |
+| |
+| |
+| |
+| |
+| |
+| |
+| Figure 2. Size data of a Yellow Transparent fruit during the |
+| period of July 23 to August 9, 1977. (fruit No. IV[b]) |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+This figure leaves an entire empty page for the figure. The title would
+print at the bottom of the figure.
+
+the same proportions.
+\figure{\fullpage}{Origins of the Human Species}
+This suggests parallels . . .
+
+ ã|Example:ã%
+This figure leaves a half page empth for the figure. The title would print
+at the bottom of the figure.
+
+the same proportions.
+\figure{\halfpage}{Origins of the Human Species}
+This suggests parallels . . .
+
+ ã|Notes:ã%
+
+By default, text "floated" is text that is moved in front of a figure. The
+figure is moved to the top of the current page if there is room left. If
+not enough room remains, then the figure is printed at the top of the next
+page. To disable this floating process, refer to the \figureformat markup.
+ For both \halfpage and \fullpage, the figure title is included in
+determining how much space to leave.
+ By default, each new \part will start numbering figures over again at 1.
+Use \setfigurenumber to reset the figurenumber outside of parts.
+ When figures are using the default "float" method of placing figures,
+you cannot use \twocolumns or \threecolumns in parameter 1. If you
+are using the \nofloat option specified in \figureformat you may use the
+multiple column specifications.
+ Use the \figureformat markup to modify the figure style.
+ You can not use \settabs within \figure.
diff --git a/macros/text1/cms_help_files/figurem.helpbloc b/macros/text1/cms_help_files/figurem.helpbloc
new file mode 100644
index 0000000000..c9c8c14c17
--- /dev/null
+++ b/macros/text1/cms_help_files/figurem.helpbloc
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|FIGURE-Mã%block is to be selected if you want to modify the
+\figureformat and if you are using \monospace.
diff --git a/macros/text1/cms_help_files/figurep.helpbloc b/macros/text1/cms_help_files/figurep.helpbloc
new file mode 100644
index 0000000000..b8785b18b1
--- /dev/null
+++ b/macros/text1/cms_help_files/figurep.helpbloc
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|FIGURE-Pã%block is to be selected if you want to modify the
+\figureformat and if you areã|notã%using \monospace.
diff --git a/macros/text1/cms_help_files/fixf.helpmark b/macros/text1/cms_help_files/fixf.helpmark
new file mode 100644
index 0000000000..15063d06b6
--- /dev/null
+++ b/macros/text1/cms_help_files/fixf.helpmark
@@ -0,0 +1,34 @@
++-----------------------------------------------------------------------------+
+| fixedformat |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\fixfã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+TEXT1 offers two multiple column formats that have different text handling
+capabilities. The normal (default) style is called "flexibleformat". This
+is described with \twocolumns and \threecolumns markup. There is an
+optional style you can use called "fixedformat." The flexible format can be
+changed to the fixed format by inserting the markup \fixedformat before the
+first two or three column markup appears.
+ The Fixed format makes each column act as if it were a single page.
+Inserts and footnotes will appear in each column just as they would in the
+single column format. Only the running head and running foot will print
+across the full width of the page.
+
+ ã|Notes:ã%
+
+Since each column is handled like a normal single column page, the columns
+may not be balanced. A short right hand column will remain short when
+formatting is completed.
+ The Fixed format cannot be used to format combinations of single,
+double, and triple columns on the same page. The two column and three
+column markup can be used in conjunction with one another, but not on the
+same page. If both format markup appear on the same page, TEXT1 will fill
+the bottom of the current column on the current page with white space and
+change to the new format on the following page.
+ Once the fixed format has been specified, it will remain in force for
+the remainder of the document. The Fixed format cannot be changed to the
+Flexible format again within the same document.
diff --git a/macros/text1/cms_help_files/fnf.helpmark b/macros/text1/cms_help_files/fnf.helpmark
new file mode 100644
index 0000000000..a1d3bd0491
--- /dev/null
+++ b/macros/text1/cms_help_files/fnf.helpmark
@@ -0,0 +1,139 @@
++-----------------------------------------------------------------------------+
+| footnoteformat |
++-----------------------------------------------------------------------------+
+
+\footnoteformat{\skipbeforedivider{12pt}
+ \skipafterdivider{2.6pt}
+ \footnotedivider{144pt}
+ \textreferenceposition{up}
+ \textreferenceplacement{after}
+ \textreferencefont{\tenpt}
+ \textreferencestyle{1}
+ \notereferenceposition{down}
+ \notereferencefont{\tenpt}
+ \notereferencestyle{1.}
+ \notereferencegutter{1em}
+ \everyfootnote{\tenpt\pin{20pt}
+ \lin{0pt}}
+ }
+
+Abbreviation: ã|\fnfã%
+
+Parameters: ã|submarkupã%
+
+Submarkup: ã|\skipbeforedivider, \skipafterdivider,
+\footnotedivider, \textreferenceposition,
+\textreferenceplacement, \textreferencefont,
+\textreferencestyle, \textreferencegutter,
+\everyfootnote, \notereferenceposition,
+\notereferencefont, \notereferencestyle,
+\notereferencegutterã%
+
+ ã|Description:ã%
+To change the footnote style and any of the other footnote formatting
+options of the \autofootnote markup, use the \footnoteformat markup. The
+default footnote format is:
+
+ã|\skipbeforedividerã% determines the distance between the last line of text
+on a page and the footnote divider rule which is printed just before the
+footnotes. The default for this markup is 12 points.
+
+ã|\skipafterdividerã% determines the distance between the footnote divider rule
+and the first footnote. The default for this markup is 2.5 points.
+
+ã|\footnotedividerã% determines the length of a short rule that separates the
+footnotes from text. The default value is 144 points (2 inches).
+
+ã|\textreferencepositionã% determines if the footnote reference number is a
+superscript or not. By default, the reference is superscripted (up). If
+you want the footnote reference number to be on the baseline, change the
+parameter to "down". The default for \monospace is "down". Do not change
+it to "up" for \monospace.
+
+\textreferenceplacement determines if the footnote reference number
+precedes or follows the word being noted. By default, the reference
+will follow the noted word. If you want the footnote reference number to be
+placed before the word being noted, then change the parameter to "before".
+
+ã|\textreferencefontã% lets you determine how to print the footnote number.
+The default is the roman face at 10 point. For \monospace, the default is
+the roman typewriter printer face.
+
+ã|\textreferencestyleã% determines the numbering style. There are four
+possible values:
+ 1. "1" for numbered superscripted footnotes
+ 2. "(1)" for numbered footnotes surrounded with parentheses
+ 3. "a" for lettered footnotes
+ 4. "(a)" for lettered footnotes surrounded with parentheses
+The default is \textreferencestyle{1} for composing printers. Typewriter
+printers using \monospace have a default of \textreferencestyle{(1)}.
+
+ã|\notereferencepositionã% determines whether the footnote reference number in
+the note is a superscript or not. By default, the reference is on the
+baseline. If you want the footnote reference number to be superscripted,
+change the parameter to "up". Do note specify "up" for typewriter printers
+using \monospace.
+
+ã|\notereferencefontã% lets you determine what font to print the footnote
+number in. The default is standard face at 10 point. For \monospace, the
+default is the roman typewriter printer face.
+
+ã|\notereferencestyleã% determines the numbering style for the notes. There
+are four possible values:
+ 1. "1" for numbered superscripted footnotes
+ 2. "(1)" for numbered footnotes surrounded with parentheses
+ 3. "a" for lettered footnotes
+ 4. "(a)" for lettered footnotes surrounded with parentheses
+The default is \textreferencestyle{1.}.
+
+\notereferencegutter sets the distance between the footnote number and the
+first word of text of the note. The gutter is illustrated here as the
+shaded portion between "1." and "The first step":
+
++-----------------------------------------------------------------------------+
+| |
+| .... |
+| 1....The first step . . . |
+| .... |
+| |
++-----------------------------------------------------------------------------+
+
+The default is one em space, \notereferencegutter{1em}.
+
+\everyfootnote{Nested Markup} sets the style for everyfootnote. You can
+change the type face, the paragraph parameters, and the right and left
+indentation. The default text size is 10 point; each note is in paragraph
+format, with an indent of 20 points. Typewriter printers which must use
+\monospace may not change to another font set.
+
+ ã|Example:ã%
+The following example uses a footnote style that prints a superscripted
+footnote number in the text and the note, the body of the footnote in
+nine-point Computer Modern set, the footnote at the bottom of the page
+indented 36 points from the left and 36 points from the right of the rest of
+the body of the text of the document, the footnote body right ragged, and
+the text of the document right justified and in 10 point Computer Modern.
+The \footnoteformat block is modified thus:
+
+\footnoteformat{\skipbeforedivider{18pt}
+ \footnotedivider{144pt}
+ \textreferencefont{\ninepoint\rm}
+ \notereferenceposition{up}
+ \notereferencefont{\ninepoint\rm}
+ \everyfootnote{\rightragged\pin{0pt}
+ \psk{12pt}\ninepoint
+ \leftindent{36pt}\rightindent{36pt}}}
+
+Note that \ninepoint was specified within both the \textreferencefont and
+\everyfootnote markups. The \textreferencefont determines the font that the
+
+footnote reference number is to be printed in. The \everyfootnote markup
+determines the font that the footnote text is to print in at the bottom
+of the page. Most often the fonts specified in \textreferencefont and
+\everyfootnote are the same font.
+
+ ã|Notes:ã%
+This markup modifies the style of the \autofootnote markup, not the
+\footnote markup.
+ The \footnoteformat markup must come after the \monospace markup, if
+both are used.
diff --git a/macros/text1/cms_help_files/fnotem.helpbloc b/macros/text1/cms_help_files/fnotem.helpbloc
new file mode 100644
index 0000000000..caeff296f7
--- /dev/null
+++ b/macros/text1/cms_help_files/fnotem.helpbloc
@@ -0,0 +1,8 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|FNOTE-Mã%block is to be selected if you want to modify the
+\footnoteformat and if you are using \monospace. This affects
+how \autofootnote prints, not how \footnote prints.
diff --git a/macros/text1/cms_help_files/fnotep.helpbloc b/macros/text1/cms_help_files/fnotep.helpbloc
new file mode 100644
index 0000000000..c0997c3c8f
--- /dev/null
+++ b/macros/text1/cms_help_files/fnotep.helpbloc
@@ -0,0 +1,8 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|FNOTE-Pã%block is to be selected if you want to modify the
+\footnoteformat and if you areã|notã%using \monospace. This affects
+how \autofootnote prints, not how \footnote prints.
diff --git a/macros/text1/cms_help_files/font.helpmark b/macros/text1/cms_help_files/font.helpmark
new file mode 100644
index 0000000000..3d6b584379
--- /dev/null
+++ b/macros/text1/cms_help_files/font.helpmark
@@ -0,0 +1,51 @@
++-----------------------------------------------------------------------------+
+| font |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|user markup name and font nameã%
+
+ ã|Description:ã%
+The \font markup can be used to allow you to make use of a specific font
+available on your printer. You should always consult the font catalog for
+the fonts available on your printer. The name given in the font catalog
+goes where font name is with the \font markup. The user markup name you
+must provide. It should be a unique name.
+
+ ã|Example:ã%
+To use the fourteen point Sonoran Roman, you can assign it to the markup
+name \bigfont by entering,
+
+\font \bigfont = sonr14
+
+\bigfont Palouse Region:
+
+and you will get:
+
++-----------------------------------------------------------------------------+
+| |
+| Palouse Region: |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+To use the ten point Computer Modern Sanserif Demibold Condensed you can
+assign it to a markup name \demifont by entering,
+
+\font \demifont = cmssdc10
+
+\demifont Palouse Region:
+
+you will get:
+
++-----------------------------------------------------------------------------+
+| |
+| Palouse Region: |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+The \font markup does not change the interline skip. A font established
+with \selectspecificfont does.
+ This markup is described further in The TEXbook.
diff --git a/macros/text1/cms_help_files/fontm.helpbloc b/macros/text1/cms_help_files/fontm.helpbloc
new file mode 100644
index 0000000000..16ef399cb3
--- /dev/null
+++ b/macros/text1/cms_help_files/fontm.helpbloc
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|FONT-Mã%block is to be selected if you want to change the default
+\monospace font. You usually shoudn't have to do this.
diff --git a/macros/text1/cms_help_files/fontp.helpbloc b/macros/text1/cms_help_files/fontp.helpbloc
new file mode 100644
index 0000000000..c39de10783
--- /dev/null
+++ b/macros/text1/cms_help_files/fontp.helpbloc
@@ -0,0 +1,8 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|FONT-Pã%block is to be selected if you want to change the default
+proportional space font. You might want to do this if you want to have
+a FONT-P TEXBLOCK on your own disk to be included for each job.
diff --git a/macros/text1/cms_help_files/footnote.helpmark b/macros/text1/cms_help_files/footnote.helpmark
new file mode 100644
index 0000000000..b9135f7c0b
--- /dev/null
+++ b/macros/text1/cms_help_files/footnote.helpmark
@@ -0,0 +1,63 @@
++-----------------------------------------------------------------------------+
+| footnote |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|first parameter = reference mark
+ second parameter = footnote textã%
+
+ ã|Description:ã%
+The \footnote markup can be used to create marked footnotes. There are two
+parameters; the first is the reference mark, and the second is the text of
+the note itself. Each parameter is surrounded with curly braces ({}). If
+more than one reference mark is used on the same page, they should appear in
+the prescribed order:
+ * asterisk (*)
+ * dagger (\dagger)
+ * double dagger (\ddagger)
+ * section sign (\S)
+Refer to the example in the TEXT1 Users' Guide or Reference Manual for
+real sample output. These characters are not available at your terminal.
+
+ ã|Example:ã%
+Using the above prescribed order, the second footnote on a page would be
+entered with \footnote as:
+
+by Achilles Chert\footnote{\dagger}{pH.d., Litmus Sci.
+The author is with the School of Pyroclastic
+Philosophy at the University of Piedmont.}.
+\par
+\nin "Does the Absurd dictate death?" asks Albert
+Camus, a novelist who lionized the labors of
+Sisyphus in moving the igneous concretion up the
+declivitous landmass.
+
+In the document, the text would print as:
+
++-----------------------------------------------------------------------------+
+| |
+| by Achilles Chert . |
+| "Does the Absurd dictate death?" asks Albert Camus, a novelist who |
+| lionized the labors of Sisyphus in moving the igneous concretion up the |
+| declivitous landmass. |
+| |
++-----------------------------------------------------------------------------+
+
+At the bottom of the page the footnote would print as:
+
++-----------------------------------------------------------------------------+
+| |
+| pH.d., Litmus Sci. The author is with the School of Pyroclastic |
+| Philosophy at the University of Piedmont. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+The \footnoteformat has no effect on \footnote. \footnoteformat is used to
+change the style of the \autofootnote markup.
+
+ You cannot use \footnote within \settabs, \vbox, \hbox,
+\drawbox, \paragraphbox, \label, \part, \chapter, \centerline, \halign,
+\rightlinesbegin, or \centerlinesbegin.
+ Refer to the The TEXbook for more on the \footnote markup.
diff --git a/macros/text1/cms_help_files/frac.helpmark b/macros/text1/cms_help_files/frac.helpmark
new file mode 100644
index 0000000000..e46eaba641
--- /dev/null
+++ b/macros/text1/cms_help_files/frac.helpmark
@@ -0,0 +1,52 @@
++-----------------------------------------------------------------------------+
+| fraction |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\fracã%
+
+Parameters: ã|numerator/denominatorã%
+
+ ã|Description:ã%
+The \fraction markup is another method of specifying a fraction. If you
+enter "@1\over2@" you get " 1 2 ". Entering "1/2" will give you "1/2". To
+get "1/" you specify "\fraction1/2 ~".
+
+ ã|Example:ã%
+Consider my favorite breakfast recipe:
+
+\tabskip 3em plus 2em minus 2em
+\halign{\lft{#}&\lft{#}\cr
+\multispan2\ctr{\bd Muckles}\cr
+3 eggs&beaten\cr
+1 cp&cream\cr
+1 cp&flour\cr
+
+\fraction1/4 t&baking powder\cr
+1 T&sugar\cr
+\multispan2\lft{pinch of salt}\cr
+\multispan2\lft{bacon (optional)}\cr}
+Heat butter or bacon in frying pan.
+Pour all of
+the batter into the pan. Cook @ approximately @
+10 minutes at 375@^\circ@. Cut into pieces
+and serve hot with plenty of syrup.
+
++-----------------------------------------------------------------------------+
+| |
+| Muckles |
+| 3 eggs beaten |
+| 1 cp cream |
+| 1 cp flour |
+| 14 t baking powder |
+| 1 T sugar |
+| pinch of salt |
+| bacon (optional) |
+| Heat butter or bacon in frying pan. Pour all of the batter into the |
+| pan. Cook approximately 10 minutes at 375 degrees. Cut into pieces and |
+| serve hot with plenty of syrup. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+There must be a space following the fraction as you enter it. In the above
+example there had to be a space before the "t&baking powder\cr".
diff --git a/macros/text1/cms_help_files/frenchsp.helpmark b/macros/text1/cms_help_files/frenchsp.helpmark
new file mode 100644
index 0000000000..fe55209b7e
--- /dev/null
+++ b/macros/text1/cms_help_files/frenchsp.helpmark
@@ -0,0 +1,53 @@
++-----------------------------------------------------------------------------+
+| frenchspacing |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+By default, TEXT1 will double space after hard punctuation, unless the
+letter prior to the punctuation is a capital letter. To make all
+interword spacing the same, regardless of punctuation, you can enter
+the \frenchspacing markup. This will turn off the extra spacing
+following punctuation for the rest of a document or until TEXT1 sees a
+\nonfrenchspacing markup.
+
+ ã|Example:ã%
+Consider this bibliographic entry:
+
+\bibentry
+
+Grabens, Gruss M. 1970. {\it Mechanical Processes
+in the Human Geomechanism}. Winston: Geomedical
+Publications, International.
+
+Without \frenchspacing it might print as:
+
++-----------------------------------------------------------------------------+
+| |
+| Grabens, Gruss M. 1970. Mechanical Processes in the Human Geomechanism. |
+| Winston: Geomedical Publications, International. |
+| |
++-----------------------------------------------------------------------------+
+
+If you had specified \frenchspacing,
+
+\frenchspacing
+\bibentry
+Grabens, Gruss M. 1970. {\it Mechanical Processes
+in the Human Geomechanism}. Winston: Geomedical
+Publications, International.
+
+it would print as:
+
++-----------------------------------------------------------------------------+
+| |
+| Grabens, Gruss M. 1970. Mechanical Processes in the Human Geomechanism. |
+| Winston: Geomedical Publications, International. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+none.
diff --git a/macros/text1/cms_help_files/goodbrea.helpmark b/macros/text1/cms_help_files/goodbrea.helpmark
new file mode 100644
index 0000000000..d5c020dfa7
--- /dev/null
+++ b/macros/text1/cms_help_files/goodbrea.helpmark
@@ -0,0 +1,33 @@
++-----------------------------------------------------------------------------+
+| goodbreak |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \goodbreak markup indicates a good place for page or line breaks. TEXT1
+will then break there only if necessary. This markup must be preceded by a
+\par or vertical skip for a page break.
+
+ ã|Example:ã%
+This example will break the page before the last paragraph beginning "The
+comparison may seem", if it comes close to the bottom of the page.
+
+\par
+\nin{\bd Parallels.}
+\par
+
+Consider for a moment rocks and deer.
+Both form cooperative groups that furnish the
+landscape . . .
+The fruits of cooperation depend on conditions of
+the environment.
+\par
+\goodbreak
+The comparison may seem facile, but from deliberate
+oversimplification . . .
+
+ ã|Notes:ã%
+Refer to The TEXbook for more on this markup.
diff --git a/macros/text1/cms_help_files/halign.helpmark b/macros/text1/cms_help_files/halign.helpmark
new file mode 100644
index 0000000000..f3f45f42ea
--- /dev/null
+++ b/macros/text1/cms_help_files/halign.helpmark
@@ -0,0 +1,177 @@
++-----------------------------------------------------------------------------+
+| halign |
++-----------------------------------------------------------------------------+
+
+\halign{ preamble\cr
+ tabular text\cr}
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|preamble, tabular text, submarkupã%
+
+Submarkup: ã|\lft, \ctr, \rt, \cr, \noalign, \tabskip,
+\omit, \multispan, \phantom, && (column repeat)ã%
+
+ ã|Description:ã%
+The \halign markup is a way of making tables without tabbing. A preamble,
+or sample line, is included immediately after \halign to act as a template
+for the text in each column. Each successive column in a row begins with an
+ampersand (&). Column descriptions may contain horizontal spaces, indents,
+quads, and horizontal fills. Each column description must have a pound
+
+sign (hash mark, #) which acts as a reference variable, so that text can be
+substituted.
+ The halign is read in its entirety. Every column is treated as a box
+whose width is equal to the largest entry.
+ Besides horizontal mode markup such as \indent, you can use the
+following submarkup in the \halign.
+
+\lft in the preamble will left justify each entry in a column.
+
+\ctr in the preamble will center each entry in a column.
+
+\rt in the preamble will right justify each entry in a column.
+
+\cr marks the end of the preamble, and the end of each row.
+
+\noalign is used outside of the preamble. It allows you to enter vertical
+mode text into a table. You must not end a \noalign with a \cr. For
+example, if you wanted to skip a blank line between two row entries, you
+would use \noalign{\vs{\bl}}:
+
+
+1000&32\cr
+\noalign{\vs{\bl}}
+2000&43\cr
+
+\tabskip puts an equal amount of space (glue) between columns. A
+specification of
+
+\tabskip 20pt plus 15pt minus 10pt
+
+indicates that the each column is set 20 points apart. If after the initial
+try it is determined that the table is still narrower than the width of the
+page, up to an additional 15 points of space is put between columns to try
+and get the table to spread across the entire page. If after the initial
+try of 20 points between each column it is determined that the table is
+too wide to fit on the page, up to 10 points is subtracted from the space
+between each column to try and get the table to fit on the page.
+
+\omit can be used to disable to preamble specification for that column
+and row. \omit only works for one column of one row. For example, if a
+preamble
+
+\halign{\lft{#}&\rt{#}\cr
+
+was specified, then to center a header over a column, you could enter
+
+\omit\ctr{Header 1}&\omit\ctr{Header 2}\cr
+1000&2000\cr
+
+\multispan is used to permit spanning of several columns. For example, if
+you had a preamble of
+
+\halign{\rt{#}&\rt{#}&\rt{#}\cr
+
+and you wanted to center a title over the second and third columns, you
+would enter:
+
+first column&\multispan2\ctr{Spanned title}\cr
+
+\phantom is used in decimal alignment. For example,
+
+00.1234&12.231\cr
+72.8\phantom{000}&1.2\phantom{00}\cr
+
+would print the partial table:
++-----------------------------------------------------------------------------+
+| |
+| 00.1234 12.231 |
+| 72.8 1.2 |
+| |
++-----------------------------------------------------------------------------+
+&& is used to indicate that the following column preamble is to be repeated
+for each of the remaining of columns. For example, if you wanted the first
+column centered, the second column left justified, and the next five columns
+right justified, you could enter
+
+\halign{\ctr{#}&\lft{#}&\rt{#}&\rt{#}&
+ \rt{#}&\rt{#}&\rt{#}\cr
+
+Using the column repeat indicator (&&) you can simplify this to
+
+\halign{\ctr{#}&\lft{#}&&\rt{#}\cr
+
+This specification then says that columns 3, 4, etc. all use the same
+preamble, "\rt{#}".
+
+ ã|Example:ã%
+This example illustrates \omit, \qquad and \tabskip.
+
+\tabskip .5in plus .4in minus .3in
+\halign{\rt{#}&\qquad\lft{#}\cr
+\omit\ctr{Case}&\omit\qquad\ctr{Blast}\cr
+\noalign{\vs{2pt}\hrule\vs{2pt}}
+5000 MT&500\cr
+10000 MT&845--1050\cr }
+
++-----------------------------------------------------------------------------+
+| |
+| |
+| ..........5000.MT.......500............ |
+| 10000 MT 845--1050 |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+
+This example makes use of \multispan, \indent,
+\horizontalspace, \noalign and column repeat (&&).
+
+\tabletitle{Surface Land Temperature (degrees C)\lbr
+Changes after Exchanges}
+\vs{10pt}
+\halign{\indent\lft{#}&\hs{2em}\rt{#}
+ &&\hs{1em}\rt{#}\cr
+Case&\multispan4\ctr{Post Detonations (Days)}\cr
+Megatonnage&20&100&200&300\cr
+\noalign{\vs{10pt}}
+1000&-22&8&7&13\cr
+3000&9&6&8&10\cr
+5000&-7&-26&-20&-11\cr
+10000&-24&-45&-26&-9\cr}
+
++-----------------------------------------------------------------------------+
+| |
+| Table 1 |
+| Surface Land Temperature (degrees C) |
+| Changes after Exchanges |
+| |
+| |
+| Case Post Detonations (Days) |
+| Megatonnage 20 100 200 300 |
+| |
+| 1000 -22 8 7 13 |
+| 3000 9 6 8 10 |
+| 5000 -7 -26 -20 -11 |
+| 10000 -24 -45 -26 -9 |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+\halign takes less computer time than \settabs because it is a basic
+TEX command. The advantages to \halign over \settabs are:
+
+ * maximum column widths are calculated automatically; you must measure
+ the longest entry with \settabs.
+ * templates are more versatile than \settabs; repeatable information can
+ be included in the preamble.
+ * greater flexibility.
+ Refer to The TEXbook for more about \halign, \cr, \noalign, \tabskip,
+\phantom, \omit, \multispan, or && (column repeat).
+ You can use \autofootnote, \autoendnote, and \footnote inside of an
+\halign, so long as they are not also inside an \hbox or \vbox.
+ Refer to the description of \leader for an example of using \halign with
+dot leadering.
+ See \strut for row alignment.
+ Do not put a \cr on the same line as \noalign.
diff --git a/macros/text1/cms_help_files/hbox.helpmark b/macros/text1/cms_help_files/hbox.helpmark
new file mode 100644
index 0000000000..552ad9c2b4
--- /dev/null
+++ b/macros/text1/cms_help_files/hbox.helpmark
@@ -0,0 +1,36 @@
++-----------------------------------------------------------------------------+
+| hbox |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|horizontal mode textã%
+
+ ã|Description:ã%
+The \hbox is a TEX markup which, among several uses, can be used to keep a
+word together, preventing hyphenations. For example,
+
+\hbox{low-cut}
+
+would prohibit hyphenation of "low-cut". It can also be used in math mode
+to switch to the roman font. For example,
+
+@x^{34}+\hbox{lower order terms}@
+
+prints as:
+
++-----------------------------------------------------------------------------+
+| |
+| x[34]+lower order terms |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+You cannot use \autoendnote, \autofootnote, or \footnote within an \hbox.
+ You can also specify an \hbox to take up a certain size. For example,
+
+\hbox to 1in{}
+
+would create a box one inch wide. Refer to the discussion of \leader for
+more on this option of \hbox.
+ For more on this markup refer to The TEXbook.
diff --git a/macros/text1/cms_help_files/hin.helpmark b/macros/text1/cms_help_files/hin.helpmark
new file mode 100644
index 0000000000..227b7b8040
--- /dev/null
+++ b/macros/text1/cms_help_files/hin.helpmark
@@ -0,0 +1,48 @@
++-----------------------------------------------------------------------------+
+| hangingindent |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\hinã%
+
+Parameters: ã|units of measureã%
+
+ ã|Description:ã%
+The \hangingindent markup sets the amount of space each line in a hanging
+paragraph is indented after the first. The parameter must be a numerical
+value with valid units of measure.
+
+ ã|Example:ã%
+The first and second hanging paragraph use a hanging indent of 18 points.
+The third paragraph uses a hanging indent of 38 points.
+
+\psk{12pt}
+\hangingindent{18pt}
+\hangingparagraph
+
+BASE. Can mean 'bedrock' in geological terms;
+or 'gross' as a description of human behavior.
+\hangingparagraph
+CLEAVAGE. Refers to the tendency to split along faults;
+or to the position of the female bosom in a low-cut
+dress.
+\hangingindent{38pt}
+\hangingparagraph
+DOMEHEAD. Is material pushing through a formation;
+or an informal epithet for hairless academics.
+\par
++-----------------------------------------------------------------------------+
+| |
+| BASE. Can mean 'bedrock' in geological terms; or 'gross' as a description |
+| of human behavior. |
+| |
+| CLEAVAGE. Refers to the tendency to split along faults; or to the position |
+| of the female bosom in a low-cut dress. |
+| |
+| DOMEHEAD. Is material pushing through a formation; or an informal epithet |
+| for hairless academics. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+The hanging indent will remain in effect until changed with another
+\hangingindent markup.
diff --git a/macros/text1/cms_help_files/hof.helpmark b/macros/text1/cms_help_files/hof.helpmark
new file mode 100644
index 0000000000..54d1467d37
--- /dev/null
+++ b/macros/text1/cms_help_files/hof.helpmark
@@ -0,0 +1,54 @@
++-----------------------------------------------------------------------------+
+| hyphenoff |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\hofã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+By default, TEXT1 will do hyphenation if necessary to achieve nice line
+breaks. The \hyphenoff markup can be used to disable hyphenation. It will
+remain this way until a \hyphenon is encountered.
+
+ ã|Example:ã%
+By default, hyphenation begins this example,
+
+Direct Access Storage Device (DASD) is a term for long
+term file and program storage devices. A more common
+term for the same thing is {\it disk}, since the
+actual storage components look like platters or disks.
+
+\par
+\hyphenoff
+The CP Directory entry for each user indicates what
+virtual disks his machine will include. Each disk
+is known by its {\it virtual address}. In general,
+users will have one 191 virtual disk.
+\par
+\hyphenon
+
+will print as:
+
++-----------------------------------------------------------------------------+
+| |
+| Direct Access Storage De- |
+| vice (DASD) is a term for long |
+| term file and program storage |
+| devices. A more common term |
+| for the same thing is disk, |
+| since the actual storage com- |
+| ponents look like platters or |
+| disks. |
+| The CP Directory entry |
+| for each user indicates what |
+| virtual disks his machine will |
+| include. Each disk is known |
+| by its virtual address. In |
+| general, users will have one |
+| 191 virtual disk. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+Compare this output to that of the \hyphenon markup on the next page.
diff --git a/macros/text1/cms_help_files/hon.helpmark b/macros/text1/cms_help_files/hon.helpmark
new file mode 100644
index 0000000000..b2513733f8
--- /dev/null
+++ b/macros/text1/cms_help_files/hon.helpmark
@@ -0,0 +1,54 @@
++-----------------------------------------------------------------------------+
+| hyphenon |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\honã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+By default, TEXT1 will do hyphenation if necessary to achieve nice line
+breaks. The \hyphenoff markup can be used to disable hyphenation. It will
+remain this way until a \hyphenon is encountered.
+
+ ã|Example:ã%
+First print a paragraph without hyphenation and then turn hyphenation on.
+
+\hyphenoff
+Direct Access Storage Device (DASD) is a term for long
+term file and program storage devices. A more common
+term for the same thing is {\it disk}, since the
+
+actual storage components look like platters or disks.
+\par
+\hyphenon
+The CP Directory entry for each user indicates what
+virtual disks his machine will include. Each disk
+is known by its {\it virtual address}. In general,
+users will have one 191 virtual disk.
+
+will print as:
+
++-----------------------------------------------------------------------------+
+| |
+| Direct Access Storage |
+| Device (DASD) is a term for |
+| long term file and program |
+| storage devices. A more |
+| common term for the same thing |
+| is disk, since the actual |
+| storage components look like |
+| platters or disks. |
+| The CP Directory entry for |
+| each user indicates what vir- |
+| tual disks his machine will |
+| include. Each disk is known |
+| by its virtual address. In |
+| general, users will have one |
+| 191 virtual disk. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+
+Compare this output with the example for \hyphenoff on the previous page.
diff --git a/macros/text1/cms_help_files/hp.helpmark b/macros/text1/cms_help_files/hp.helpmark
new file mode 100644
index 0000000000..b4137ea344
--- /dev/null
+++ b/macros/text1/cms_help_files/hp.helpmark
@@ -0,0 +1,48 @@
++-----------------------------------------------------------------------------+
+| hangingparagraph |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\hpã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \hangingparagraph markup creates hanging paragraphs, which are the
+reverse of normal paragraphs. In a normal paragraph, the first line is
+indented but following lines are full measure wide; in a hanging paragraph
+the first line is a full measure and the runover lines are indented.
+Hanging paragraphs are used for lists, glossaries, and bibliographies. The
+\hangingparagraph markup is placed before each item in the text; a \par
+finishes the series.
+
+ ã|Example:ã%
+
+\psk{5pt}
+
+\hangingparagraph
+BASE. Can mean 'bedrock' in geological terms;
+or 'gross' as a description of human behavior.
+\hangingparagraph
+CLEAVAGE. Refers to the tendency to split along faults;
+or to the position of the female bosom in a low-cut
+dress.
+\hangingparagraph
+DOMEHEAD. Is material pushing through a formation;
+or an informal epithet for hairless academics.
+\par
+
++-----------------------------------------------------------------------------+
+| |
+| BASE. Can mean 'bedrock' in geological terms; or 'gross' as a description |
+| of human behavior. |
+| CLEAVAGE. Refers to the tendency to split along faults; or to the position |
+| of the female bosom in a low-cut dress. |
+| |
+| DOMEHEAD. Is material pushing through a formation; or an informal epithet |
+| for hairless academics. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+The default indentation for \hangingparagraph is 24 points. Use the
+\hangingindent markup to change this indentation.
diff --git a/macros/text1/cms_help_files/hrule.helpmark b/macros/text1/cms_help_files/hrule.helpmark
new file mode 100644
index 0000000000..3ba7e489ed
--- /dev/null
+++ b/macros/text1/cms_help_files/hrule.helpmark
@@ -0,0 +1,44 @@
++-----------------------------------------------------------------------------+
+| hrule |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|dimensionã%
+
+ ã|Description:ã%
+The \hrule markup draws a horizontal rule across the width of the page. It
+is a native TEX markup, and the usage is different in that the parameter is
+not surrounded with curly braces. If you do not supply a dimension, TEXT1
+will print the rule across the entire width of the text. By default, the
+rule drawn has a thickness (height) of .4pt.
+
+ ã|Example:ã%
+If you wanted to draw a three inch rule across the page, followed later with
+a rule across the entire width of the page and ending with a thicker rule
+across the width of the page you could specify:
+
+\nin Basic Techniques
+
+\hrule width 3in
+Editing a File
+\hrule
+The Column Pointer
+\vs{2pt}
+\hrule height 2pt
+
+You would get:
+
++-----------------------------------------------------------------------------+
+| |
+| |
+| ........................................................................... |
+| ........................................................................... |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+Refer to The TEXbook for more on \hrule and how to use the "depth" parameter
+with the "height" and "width" parameters.
+ Use \rule instead of \hrule if you are using \monospace.
+
diff --git a/macros/text1/cms_help_files/hs.helpmark b/macros/text1/cms_help_files/hs.helpmark
new file mode 100644
index 0000000000..4e75ab6b32
--- /dev/null
+++ b/macros/text1/cms_help_files/hs.helpmark
@@ -0,0 +1,47 @@
++-----------------------------------------------------------------------------+
+| horizontalspace |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\hsã%
+
+Parameters: ã|units of measureã%
+
+ ã|Description:ã%
+The amount of blank space in a line can be varied by the \horizontalspace
+markup. This markup works only within the current line; no space will be
+carried over if too little remains at the end of the line.
+
+ ã|Example:ã%
+
+Our barbecues are brick. Our poetry is concrete:
+\bqb\nin
+\horizontalspace{84pt}pillow tectonics
+\hs{48pt}during sleep
+\hs{18pt}pillows come together
+
+\hs{24pt}and move apart
+\hs{18pt}like continental plates
+\hs{36pt}mountain ranges
+\hs{18pt}rise and fall
+\hs{24pt}oceans
+\hs{18pt}rise and fall
+\bqe
+\nin Like Gypsum Lee Ooze, art mimics geology.
+\par
+
++-----------------------------------------------------------------------------+
+| |
+| Our barbecues are brick. Our poetry is concrete: |
+| |
+| pillow tectonics during sleep pillows come |
+| together and move apart like continental plates |
+| mountain ranges rise and fall oceans rise and fall |
+| |
+| Like Gypsum Lee Ooze, art mimics geology. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+\horizontalspace can be used in \settabs and \halign.
+ If you are using \monospace, then the units of measure should be
+specified in tenths of an inch or in em's.
diff --git a/macros/text1/cms_help_files/hsize.helpmark b/macros/text1/cms_help_files/hsize.helpmark
new file mode 100644
index 0000000000..9eaca127ef
--- /dev/null
+++ b/macros/text1/cms_help_files/hsize.helpmark
@@ -0,0 +1,49 @@
++-----------------------------------------------------------------------------+
+| hsize |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|dimensionã%
+
+ ã|Description:ã%
+The \hsize markup is a native TEX markup that can be used to change the
+width of the text on the printed page. This markup does not use delimeters.
+
+ ã|Example:ã%
+If you were entering text in a \vbox and you wanted it printed in a 3 inch
+column instead of the default column width you could specify "\hsize=3in".
+For example,
+
+Forms for reader's comments are provided at the back
+of this publication. You can help us continue to improve
+the quality of our documentation, and we welcome all
+comments and suggestions.
+
+\vs{\bl}
+\vbox{\hsize=3in
+Forms for reader's comments are provided at the back
+of this publication. You can help us continue to improve
+the quality of our documentation, and we welcome all
+comments and suggestions.}
+
+will print as:
+
++-----------------------------------------------------------------------------+
+| |
+| Forms for reader's comments are provided at the back of this |
+| publication. You can help us continue to improve the quality of |
+| our documentation, and we welcome all comments and suggestions. |
+| |
+| Forms for reader's |
+| comments are provided at the |
+| back of this publication. |
+| You can help us continue to |
+| improve the quality of our |
+| documentation, and we welcome |
+| all comments and suggestions. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+Refer to The TEXbook for more on this markup.
diff --git a/macros/text1/cms_help_files/incl.helpmark b/macros/text1/cms_help_files/incl.helpmark
new file mode 100644
index 0000000000..3b2f58acbf
--- /dev/null
+++ b/macros/text1/cms_help_files/incl.helpmark
@@ -0,0 +1,89 @@
++-----------------------------------------------------------------------------+
+| include |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\inclã%
+
+Parameters: ã|page segment nameã%
+
+ ã|Description:ã%
+The \include markup will include external page segment files, into a TEXT1
+document. Page segments come from graphics generating programs such as
+those produced by GDDM, SAS and MEGACALC. Refer to the GDDM Page Segment
+Generation for the IBM 3820 User Note, U-419, for details on how to create a
+page segment.
+
+ The format for the \include markup is:
+
+\include{fn}
+
+ Where fn is the filename of the file to be included into the text
+document. It must have a filetype of "PSEG3820". You must leave space
+after the page segment to prevent the image from overprinting the following
+text of the document.
+
+ ã|Example:ã%
+A file called "GRAPH1 PSEG3820 A" contains a SAS/GRAPH image. It is 2 1 2
+inches high, so you would enter:
+
+. . . in the graph illustrated below:
+\par
+\include{graph1}
+\vs{3.5in}
+\noindent
+Notice the values on the Y axis, they . . .
+
+In the document you would get:
+
++-----------------------------------------------------------------------------+
+| |
+| . . . in the graph illustrated below: |
+| |
+| |
+| WWW W WWW SSSSSS UUU UUU |
+| WWW WWW WWW SSSSS UUU UUU |
+| WWWWWWW SSSSSS UUU UUU |
+| WWWWW SSSSSSSS UUUUUUUUUU |
+| |
+| |
+| Notice the values on the Y axis, they . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+Sometimes you may want to center the graph on the page. To do this you
+would subtract the width of the graph from the galleywidth(1) and divide the
+difference by 2; then you would do a horizontal skip of that amount (after
+entering \null. For the above graph, the galleywidth is 25 picas, the width
+of the "graph1" is 19 picas, so the indent is to be 3 picas ( 25pc-19pc
+2=3pc ):
+
+| . . in the graph illustrated below: |
+\par
+\noindent\hs{3pc}
+\include{graph1}
+\vs{3.5in}
+\noindent
+Notice the values on the Y axis, they . . .
++-----------------------------------------------------------------------------+
+ 1. galleywidth=page width - left margin - right margin
+
+In the document you would get the same graph as above, centered on the page.
+Refer to the example below:
+
++-----------------------------------------------------------------------------+
+| |
+| . . . in the graph illustrated below: |
+| |
+| WWW W WWW SSSSSS UUU UUU |
+| WWW WWW WWW SSSSS UUU UUU |
+| WWWWWWW SSSSSS UUU UUU |
+| WWWWW SSSSSSSS UUUUUUUUUU |
+| |
+| |
+| Notice the values on the Y axis, they . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+none.
diff --git a/macros/text1/cms_help_files/indent.helpmark b/macros/text1/cms_help_files/indent.helpmark
new file mode 100644
index 0000000000..42c0fbb071
--- /dev/null
+++ b/macros/text1/cms_help_files/indent.helpmark
@@ -0,0 +1,41 @@
++-----------------------------------------------------------------------------+
+| indent |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \indent markup creates an empty box of horizontal space whose width is
+the current value of \paragraphindent. This markup is useful in tabular
+work.
+
+ ã|Example:ã%
+\tabletitle{Flea Deaths (in millions)}
+\halign{\indent\rt{#}&\qquad\lft{#}\cr
+Case&Blast\cr
+5000 MT&500\cr
+10000 MT&845--1050\cr }
+\rule
+
+\vs{\bl}
+These statistics are fairly conclusive. Note,
+however, that inconsistencies occurred at . . .
+
++-----------------------------------------------------------------------------+
+| |
+| Table 1 |
+| Flea Deaths (in millions) |
+| |
+| Case Blast |
+| 5000 MT 500 |
+| 10000 MT 845--1050 |
+| ........................................................................... |
+| These statistics are fairly conclusive. Note, however, that |
+| inconsistencies occurred at . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+Refer to The TEXbook for more on this markup.
diff --git a/macros/text1/cms_help_files/index.helpbloc b/macros/text1/cms_help_files/index.helpbloc
new file mode 100644
index 0000000000..6d262cedb2
--- /dev/null
+++ b/macros/text1/cms_help_files/index.helpbloc
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|INDEXã%block is to be selected if you want to modify the
+\indexformat.
diff --git a/macros/text1/cms_help_files/input.helpmark b/macros/text1/cms_help_files/input.helpmark
new file mode 100644
index 0000000000..4ab3365aa4
--- /dev/null
+++ b/macros/text1/cms_help_files/input.helpmark
@@ -0,0 +1,46 @@
++-----------------------------------------------------------------------------+
+| input |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|filenameã%
+
+ ã|Description:ã%
+The \input markup indicates a file to be included in the source. The
+parameter, a CMS file name with a filetype of TEX, follows \input and a
+separator space; no curly braces are used.
+ Usually the \input markup is used in a "driver" file, which calls parts,
+chapters, etc. to create (or drive) the entire document, such as a thesis.
+At the top of such a driver file is where you would put modifications to
+default format blocks, additional font specifications, and your own markup
+definitions.
+
+ ã|Example:ã%
+In this example, the file is to have a filename of "DRIVER". It calls all of
+the various parts of a 2 chapter document. When formatting, specify DRIVER
+as the filename.
+
+\chapterformat{\numberingstyle{1}
+ \titleformat{\newpage
+ \cl{\bd \chaptertitle}
+ \vs{1\bl}}
+ \incontents{yes}}
+\selectfontset{cm9}{ninepoint}{default}
+\input preface
+\input abstract
+\input chapter1
+\input chapter2
+\input bibliog
+\input append-a
+\input append-b
+\input index
+
+ ã|Notes:ã%
+If you want to input a file with a filetype other than TEX, you can do so by
+adding the filetype after the filename and placing a period between the two.
+For example, to input a filename of DATA and a filetype of LISTING, enter
+
+\input data.listing
+
+ Refer to The TEXbook for more on this markup.
diff --git a/macros/text1/cms_help_files/isk.helpmark b/macros/text1/cms_help_files/isk.helpmark
new file mode 100644
index 0000000000..56ed4190d9
--- /dev/null
+++ b/macros/text1/cms_help_files/isk.helpmark
@@ -0,0 +1,46 @@
++-----------------------------------------------------------------------------+
+| interlineskip |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\iskã%
+
+Parameters: ã|unit of measureã%
+
+ ã|Description:ã%
+The spacing between lines (from one baseline to the next, not "single" or
+"double spacing") can be changed using the \interlineskip markup. TEXT1
+automatically sets an interline skip usually 2 points greater than the font
+size when you use \selectfontset.(1) The default font size is 12 points and
+the default interline skip is 14 points. This may be particularly helpful
+when using some of the smaller fonts. In general, the shorter the line or
+smaller the type, less interline skip is needed.
+
+ ã|Example:ã%
+ 1. Extra space is referred to as leading, pronounced leding (from the
+days when lead was used).
+
+\interlineskip{11pt}
+The definition of Sociogeology is the study of the
+geological basis of all social behavior.
+It explains human behavior by empirical description
+of the attributes of mineral composition.
+\par
+\interlineskip{13pt}
+It is most successful when it provides detailed
+description of particulate phenomena and first-order
+correlations with features . . .
+
++-----------------------------------------------------------------------------+
+| |
+| The definition of Sociogeology is the study of the geological basis of |
+| all social behavior. It explains human behavior by empirical description |
+| of the attributes of mineral composition. |
+| It is most successful when it provides detailed description of |
+| particulate phenomena and first-order correlations with features . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+\singlespace and \doublespace are dependent on the current setting of
+\interlineskip. For example, the \doublespace leading when \interline-
+skip{12pt} is 24pt.
diff --git a/macros/text1/cms_help_files/it.helpmark b/macros/text1/cms_help_files/it.helpmark
new file mode 100644
index 0000000000..4055cb1bbc
--- /dev/null
+++ b/macros/text1/cms_help_files/it.helpmark
@@ -0,0 +1,41 @@
++-----------------------------------------------------------------------------+
+| italic |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\itã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \italic markup sets an Italianate typeface, used for showing emphasis,
+conveying a message, attracting attention, or even creating a mood. Italic
+type is also good for contrast, and it is also hard to read over large
+areas. For printers that do not have italics, underscoring will be used
+instead.
+
+ ã|Example:ã%
+earlier;
+\italic Japan \roman in Southeast Asia (previously in
+China, now in the Philippines,
+
++-----------------------------------------------------------------------------+
+| |
+| earlier; Japan in Southeast Asia (previously in China, now in the |
+| ----- |
+| Philippines, |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+members communicate important things---{\it
+hunger, alarm, rank, and sexual desire}---among
+themselves by means of nonsyntactical signals.
+
++-----------------------------------------------------------------------------+
+| |
+| members communicate important things---hunger, alarm, rank, and sexual |
+| ------ ----- ---- --- ------ |
+| desire---among themselves by means of nonsyntactical signals. |
+| ------ |
+| |
++-----------------------------------------------------------------------------+
diff --git a/macros/text1/cms_help_files/italicfa.helpmark b/macros/text1/cms_help_files/italicfa.helpmark
new file mode 100644
index 0000000000..4c0ecd3117
--- /dev/null
+++ b/macros/text1/cms_help_files/italicfa.helpmark
@@ -0,0 +1,21 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \italicface (\it) MARKUP |
++-----------------------------------------------------------------------------+
+
+The \italicface (\it) markup will switch to the italic face text font and print
+the text following the markup in italics. If the printer does not have an
+italic font, a warning will issued and an underscore font will be substituted.
+
+The format for the \italicface markup is:
+
+ \italicface ttttt
+
+Everything from the \italicface markup to the next font change will be printed
+in italics. If only a word or two are to be printed in italics enclose the
+italic face markup and the text that is to be printed in italics within a set
+of braces.
+
+ {\italicface ttttt}
+
+After printing the specified text in italics, TEXT1 will automatically switch
+back to the standard face, or Roman font.
diff --git a/macros/text1/cms_help_files/item.helpmark b/macros/text1/cms_help_files/item.helpmark
new file mode 100644
index 0000000000..abd96b000b
--- /dev/null
+++ b/macros/text1/cms_help_files/item.helpmark
@@ -0,0 +1,45 @@
++-----------------------------------------------------------------------------+
+| item |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|identifierã%
+
+ ã|Description:ã%
+The \item markup creates unique indented items. The parameters for this
+markup is an identifier, such as an Arabic number or letter, supplied by
+you. This offers more flexibility.
+
+ ã|Example:ã%
+militarily for thousands of years.
+Reasons for this continued behavior include:
+\item{*} the rapaciousness of society
+(as shown by the accumulation of wealth and the
+indifference to the poor and nonaggressive)
+\item{**} the acceptance of war
+\item{***} the economic advantages of large-scale
+operations (as shown in industrial applications)
+\par
+\noindent
+The cultures of industrial nations are based on
+unethical . . .
+
++-----------------------------------------------------------------------------+
+| |
+| militarily for thousands of years. Reasons for this continued behavior |
+| include: |
+| * the rapaciousness of society (as shown by the accumulation of wealth |
+| and the indifference to the poor and nonaggressive) |
+| ** the acceptance of war |
+| *** the economic advantages of large-scale operations (as shown in |
+| industrial applications) |
+| The cultures of industrial nations are based on unethical . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+The indentation for \item is determined by the current setting of paragraph
+indent. Each \item forms a hanging paragraph after the identifier. There
+is no extra space between items.
+ Refer to The TEXbook for more on this markup.
diff --git a/macros/text1/cms_help_files/ix.helpmark b/macros/text1/cms_help_files/ix.helpmark
new file mode 100644
index 0000000000..cb92f5efea
--- /dev/null
+++ b/macros/text1/cms_help_files/ix.helpmark
@@ -0,0 +1,311 @@
++-----------------------------------------------------------------------------+
+| index |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\ixã%
+
+Parameters: ã|title textã%
+
+Submarkup: ã|\subentry, \blindentry, \uspn, \bdpn, \itpnã%
+
+ ã|Description:ã%
+The \index markup builds index entries which can be sorted and printed at
+the end of a document. The \index markup has the format
+
+\indexn{entry}
+
+where "n" is the index number (1, 2, or 3), and "entry" is the index
+entry. The page number you are on when the \index markup is inserted will
+be printed with the "entry". You must use the \printindex markup to sort
+and print the index. It comes at the end of the document. Refer to the
+documentation of \printindex for details on this markup.
+
+ ã|Example:ã%
+Consider this index example:
+
+The files you create and change have a filemode of A.
+This means that they are all kept in a collection of
+files called your A-disk. The FILELIST command
+displays a list of all
+\index1{A-disk}
+the files on your A-disk.
+
+In the document, the following would print where the index markup occurred,
+
++-----------------------------------------------------------------------------+
+| |
+| The files you create and change have a filemode of A. This means |
+| that they are all kept in a collection of files called your A-disk. The |
+| FILELIST command displays a list of all the files on your A-disk. |
++-----------------------------------------------------------------------------+
+
+If this occurred on page 32, the entry in the index printed with
+\printindex1 would print as illustrated on the next page.
+
++-----------------------------------------------------------------------------+
+| A-disk, 32 |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+You cannot use \index within a \settabs or \halign.
+
+ã|Lower Level or Sub entriesã%
+
+ If you want to record a subentry to a main index entry you use the
+\subentry markup within the \index markup.
+
+ ã|Notes:ã%
+The \subentry markup is only valid when used within \index.
+
+ ã|Example:ã%
+If you had a main entry called "reader list" and you wanted sub entries for
+"receiving a file" and "replacing a file" you could enter the \index markup
+as illustrated here:
+
+\sha{Receiving a File}
+To receive a file, move the cursor to the line that
+describes the file you want to receive.
+\index1{reader list \subentry1{receiving a file}}
+Then press PF9. A notice will appear on that line
+telling you that the file has been received, . . .
+\sha{Replacing or Renaming a File}
+What happens if the file in your reader has the same file
+label as one you already have on your disk?
+There are two ways to handle this.
+\lib\lil1
+If you want the file in your reader to replace the file
+\index1{reader list \subentry1{replacing a file}}
+on your disk, type the command "receive / (replace".
+\lil1
+
+If you want to keep the file on your disk, then rename
+the file in your reader with the command "receive / newname
+\index1{reader list\subentry1{renaming a file}}
+newtype" where "newname" is the new file name and
+"newtype" is the new filetype.
+\lie
+
+This would produce the following paragraph in a document:
+
++-----------------------------------------------------------------------------+
+| |
+| Receiving a File |
+| To receive a file, move the cursor to the line that describes the file |
+| you want to receive. Then press PF9. A notice will appear on that line |
+| telling you that the file has been received, ... |
+| |
+| Replacing or Renaming a File |
+| What happens if the file in your reader has the same file label as one |
+| you already have on your disk? There are two ways to handle this. |
+| 1. If you want the file in your reader to replace the file on your disk, |
+| type the command "receive / (replace". |
+| 2. If you want to keep the file on your disk, then rename the file |
+| in your reader with the command "receive / newname newtype" where |
+| "newname" is the new file name and "newtype" is the new filetype. |
+| |
++-----------------------------------------------------------------------------+
+
+If list level #2 printed at the top of page 33, the index entries would look
+like:
+
++-----------------------------------------------------------------------------+
+| |
+| reader list |
+| receiving a file, 32 |
+| renaming a file, 33 |
+| replacing a file, 32 |
+| |
++-----------------------------------------------------------------------------+
+
+ã|Excluding Text from the Sortã%
+ There are occasions when you will want text to print in an indexed item,
+but you do not want that text to be a part of the sorting process. For
+example, you may want to index the title "Consumer Guides" including the
+quotes, but you want it sorted with the C's and not sorted with the double
+quote marks. Also, you probably would want to sort \par with the p's, and
+not with the backslashes. Both can be accomplished using the \sortasmarkup
+which can only be used within the \index markup.
+
+ ã|Example:ã%
+Using the input,
+
+Please get a copy of the article "Consumer Guides" and
+\index1{"Consumer Guides"\sortas{Consumer Guides}}
+refer to the illustration on page 5.
+\par
+Be sure to index the paragraph command "\\par"
+\index1{\\par\sortas{par}}
+somewhere in the document.
+
+you would get the following two paragraphs in your document.
+
++-----------------------------------------------------------------------------+
+| |
+| Please get a copy of the article "Consumer Guide References" and refer |
+| to the illustration on page 5. |
+| |
+| Be sure to index the paragraph command "\par" somewhere in the |
+| document. |
+| |
++-----------------------------------------------------------------------------+
+
+The index entries would print like:
+
++-----------------------------------------------------------------------------+
+| |
+| "Consumer Guides", 45 |
+| contour Maps, 23 |
+| |
+| \par, 45 |
+| Paragraphs, long, 16 |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+Prepositions in a subentry may not be part of the sort, but are to be
+printed in the index. For example, to get the index to look like,
+
++-----------------------------------------------------------------------------+
+| |
+| vacations |
+| on boats, 32 |
+| at the Olympian, 21 |
+| |
++-----------------------------------------------------------------------------+
+
+you would use the \index, \subentry, and \sortas commands illustrated on the
+next page.
+
+Some people spend their vacations at older
+hotels like the Olympian.
+\index1{vacations \subentry1{at the
+Olympian\sortas{Olympian}}}
+
+Another popular vacation is travelling the
+Pacific in a boat.
+\ix1{vacations\subentry1{on
+ boats\sortas{boats}}}
+
+ ã|Example:ã%
+As another example, "10 Downing Street" is typically sorted with the T's
+and not prior to the 2's. This can also be accomplished using the \sortas
+markup. For example, the Prime Minister's address mentioned earlier would
+be entered as:
+
+Taxi, please take me to 10 Downing Street.
+
+\index1{10 Downing Street\sortas{ten Downing Street}}
+
+ã|Highlighted Page Numbersã%
+ For those applications which require some of the page numbers to be
+printed in bold, some in italics, and others underscored, there are three
+markup available to do this. They are \boldpagenumber, \italicpagenumber,
+and \underscorepagenumber. They are all used within the \index markup, and
+indicate to TEXT1 that a page number other than the standard page number is
+to be used.
+ We recommend that important references be noted in bold (\boldpage-
+number). Fleeting references be printed with italics (\italicpagenumber).
+And primary references be indicated by being underscored (\underscorepage-
+number). Of course, you are free to use these three markup as you see
+fit.
+ The bold page number will always come prior to a standard face reference
+to the same page.
+
+ ã|Example:ã%
+If you had an \boldpagenumber on page 43 and \index's on pages 42--44 for
+"peace."
+
+\index1{peace} % Located on page 42
+
+\index1{peace} % Located on page 43
+\index1{peace\bdpn} % Located on page 43
+
+\index1{peace} % Located on page 44
+
+the index printed with \printindex would look like:
+
++-----------------------------------------------------------------------------+
+| peace 43, 42--44 |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+If you have an underscored page number and it falls in the same range as a
+standard face entry, the underscored entry would follow the standard face
+entry. For example, if you had a \underscorepagenumber on page 66 and
+\index's on pages 66--72 for "nationalism",
+
+\index1{nationalism\uspn} % On page 66
+\index1{nationalism} % On page 66
+\index1{nationalism} % On page 67
+\index1{nationalism} % On page 72
+
+the index sequence would print like:
+
++-----------------------------------------------------------------------------+
+| Quick Programming Language 66--72, 66 |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+If you have an index reference in italics and it falls in the same range as
+a standard face entry, the italics entry will not be printed. For example,
+if you had an italics entry using \italicpagenumber on pages 45 and 56, and
+you had standard face entries on pages 54--60 for "In Search of Excellence",
+the printed index would look like:
+
++-----------------------------------------------------------------------------+
+| |
+| In Search of Excellence 45, 54--60 |
+| |
++-----------------------------------------------------------------------------+
+
+ã|Cross Referencesã%
+ Often it is desirable to have a cross reference to another index entry.
+You can do this using the \blindentry markup within the \index markup. You
+cannot use both \blindentry and \subentry within the same \index markup.
+The \blindentry markup has the format,
+
+\blindentry{blind entry}
+
+where "blind entry" is the text you want associated with that index entry.
+
+ ã|Example:ã%
+For example, to get an index entry to print like
+
++-----------------------------------------------------------------------------+
+| |
+| |
+| Flow of control, see Control Structures |
++-----------------------------------------------------------------------------+
+
+you would enter
+
+\index1{Flow of control\blindentry{see Control
+Structures}}
+
+ ã|Example:ã%
+It is also possible to have a blind entry printed with an index entry, and
+still have it indexed with page numbers. For example, if you were to enter
+
+\index1{Label\uspn}
+\index1{Label\blindentry{({\it see also} Case Label)}}
+
+on page 78 you would get an index entry printed as:
+
++-----------------------------------------------------------------------------+
+| Label, 78, (see also Case Label) |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+If you have page numbers and a blind entry, then the blind entry will follow
+the last page number as illustrated here.
+
+ã|Multiple Indexesã%
+ You can have multiple indexes by changing the "1" in \index1 to "2" or
+"3". For example,
+
+\index1{entry in first index}
+\index2{entry in second index}
+\index3{entry in third index}
+
+will generate one entry in each of three indexes. See \printindex for
+instructions on how to print out each of the three indexes.
diff --git a/macros/text1/cms_help_files/ixf.helpmark b/macros/text1/cms_help_files/ixf.helpmark
new file mode 100644
index 0000000000..a57b8f352b
--- /dev/null
+++ b/macros/text1/cms_help_files/ixf.helpmark
@@ -0,0 +1,260 @@
++-----------------------------------------------------------------------------+
+| indexformat |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\ixfã%
+
+Parameters: ã|submarkupã%
+
+Submarkup: ã|\respectcase, \style, \leadering, \everyhang,
+\everyletterbreak, \indentsubentry, \everyindexã%
+
+ ã|Description:ã%
+The defaults listed above for each markup applies initially to each of
+the three indexes. One or more indexes' defaults can all be changed
+by modifying the \indexformat markup. The complete description of the
+\indexformat markup and its related submarkup is:
+
+\indexformatn{format}
+
+where n is the index (1, 2, or 3) and format is the submarkup.
+
+ã|respectcaseã% ignores the case of an index entry. This markup can only be
+used within the \indexformat markup. If you wanted case respected and have
+the lower case letters sorted before the upper case entries (i.e., "boat"
+sorted before "Bed") then enter
+
+\respectcase{yes}
+
+ ã|Notes:ã%
+Respecting case applies to all letters. If \respectcase{yes} has been
+specified, then "boat" and "cat" will both be sorted before "Bed". The
+default value is \respectcase{no} for each of the 3 indexes.
+
+ã|styleã% regulates the general index format. \style{indent}, the default,
+indents each index entry. This style looks like:
+
++-----------------------------------------------------------------------------+
+| |
+| Constantinople, 12, See also Istanbul |
+| alien rule of, 20 |
+| Arab invasion of, 19, 31 |
+| Crusades and, 22, 57 |
+| Ottoman conquest of, 29--31 |
+| |
++-----------------------------------------------------------------------------+
+
+ There are two other styles to choose from: "paragraph" and "dash". The
+style "paragraph" is a run-on hanging paragraph. You get it by specifying:
+
+\indexformat1{\style{paragraph}}
+
+With this style, the above index would look like:
+
++-----------------------------------------------------------------------------+
+| |
+| Constantinople, 12, alien rule |
+| of, 20, Arab invasion of, 19, |
+| 31, Crusades and, 22, 57, |
+| Ottoman conquest of, 29--31, See |
+| also Istanbul |
+| |
++-----------------------------------------------------------------------------+
+
+Note that with this style, the blind entry from the \blindentry submarkup
+comes after the subentry, instead of after the main entry as was done for
+the "indent" style.
+ The third style is "dash", an em-dash style. You get it by specifying
+
+\indexformat1{\style{dash}}
+
+It is very similar to the default "indent" style, except subentries are
+prefaced with an em dash following the initial indent of space.
+
++-----------------------------------------------------------------------------+
+| |
+| Constantinople, 12, See also Istanbul |
+| ---alien rule of, 20 |
+| ---Arab invasion of, 19, 31 |
+| ---Crusades and, 22, 57 |
+| ---Ottoman conquest of, 29--31 |
+| |
++-----------------------------------------------------------------------------+
+
+ã|leaderingã% turns on/off dot leadering. The default is "off". You
+can change this default only within the \indexformat markup. To have dot
+leadering, enter:
+
+\ixf1{\leadering{yes}}
+
+If you are using \style{indent} and \leadering{yes} you get:
+
++-----------------------------------------------------------------------------+
+| |
+| Constantinople, See also |
+| Istanbul ... . ... ... . ....12 |
+| alien rule of ... . ... 20 |
+| Arab invasion of . . .19, 31 |
+| Crusades and .... . .22, 57 |
+| Ottoman conquest of .29--31 |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+Do not use dot leadering with \style{paragraph}.
+
+ã|everyletterbreakã% is what will be printed between each letter break,
+(i.e. between "A" and "B"). By default, one blank line is skipped when
+starting a new letter (at each letter break). The \everyletterbreak markup
+can only appear within the \indexformat markup.
+
+ ã|Example:ã%
+You could modify the default to place a rule and skip between breaks:
+
+\ixf1{\everyletterbreak{\vs{\bl}
+ \hrule width 2in
+ \vs{\bl}}}
+
+ This would look something like:
+
++-----------------------------------------------------------------------------+
+| |
+| ..................... |
+| alpha, 62 |
+| America, 38 |
+| Austria, 55 |
+| ..................... |
+| |
+| Bach, 98 |
+| Bethlehem, 87 |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+Something else you can do with indexes is to make use of the "\nextletter"
+submarkup, which gives you the next uppercase character about to be listed
+in the sorted index list. For example, between "apple" and "boat" the
+value of "\nextletter" would be "B". One application would be to print the
+"\nextletter" in a large type. This could be accomplished by changing the
+default for "\everyletterbreak" to:
+
+\indexformat{\everyletterbreak{\vs{\bl}
+ \noindent{\twelvepoint\bd\nextletter}\par}}
+
+The resulting index would look like:
+
++-----------------------------------------------------------------------------+
+| |
+| |
+| A |
+| alpha, 62 |
+| America, 38 |
+| Austria, 55 |
+| |
+| B |
+| Bach, 98 |
+| Bethlehem, 87 |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+Another variation of the above would be to draw a box around the next
+letter. You could do this by adding \drawbox to \everyletterbreak:
+
+\ixf1{\everyletterbreak{\vs{\bl}
+ \drawbox{\bd\nextletter}\par}}
+
+and you will get an index that prints as illustrated on the next page.
+
++-----------------------------------------------------------------------------+
+| |
+| ..... |
+| ..... |
+| alpha, 62 |
+| America, 38 |
+| Austria, 55 |
+| |
+| ..... |
+| ..... |
+| Bach, 98 |
+| Bethlehem, 87 |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+The "\nextletter" is always an uppercase letter.
+ Only letters, not numbers or special characters such as the backslash
+(\) are used as \nextletter.
+
+ã|indentsubentryã% There are two levels of subentries available. The amount
+of distance they are indented when you are using the "indent" or "dash"
+styles is controlled by the \indentsubentry submarkup. If you are using
+the "paragraph" style for the index, the \indentsubentry is ignored. The
+definition of this markup is,
+
+\ixf1{\indentsubentryn{amt}}
+
+where n is the subentry level, 1 or 2, and amt is the amount to be indented.
+The default indent for these two subentry levels is:
+
+\ixf1{\indentsubentry1{1em}
+ \indentsubentry2{2em}}
+
+ If, for example, you were using the "indented" style and wanted each
+subentry level indented two em's from the previous level, you would enter,
+
+\ixf1{\indentsubentry1{2em}
+ \indentsubentry2{4em}}
+
+which would print the index illustrated earlier as:
++-----------------------------------------------------------------------------+
+| |
+| Constantinople, 12, See also Istanbul |
+| alien rule of, 20 |
+| Arab invasion of, 19, 31 |
+| Crusades and, 22, 57 |
+| Ottoman conquest of, 29--31 |
+| |
++-----------------------------------------------------------------------------+
+
+ã|everyhangã% controls the hanging indent for the primary index level and
+each of the two subentry levels. If you had an index entry with many page
+numbers,
+
++-----------------------------------------------------------------------------+
+| |
+| Write state- |
+| ment, 26, |
+| 34--38, 70, |
+| 86, |
+| 103, 191, |
+| 202, 203-- |
+| 204, 281 |
+| |
++-----------------------------------------------------------------------------+
+
+The hangingindent would be 1.5em by default.
+
+ ã|Example:ã%
+If you wanted to increase that value to 3em, you would enter,
+
+\ixf1{\everyhang{3em}}
+
+and you would get:
+
++-----------------------------------------------------------------------------+
+| |
+| Write state- |
+| ment, 26, |
+| 34--38, |
+| 70, 86, |
+| 103, 191, |
+| 202, 203-- |
+| 204, 281 |
+| |
++-----------------------------------------------------------------------------+
+
+ã|everyindexã% is a list of one or more commands to be executed before
+printing the sorted index. By default, \tenpt is the value of \everyindex.
+
+ ã|Notes:ã%
+The default type style used with \monospace is \roman instead of \tenpt.
diff --git a/macros/text1/cms_help_files/ju.helpmark b/macros/text1/cms_help_files/ju.helpmark
new file mode 100644
index 0000000000..48b4541b3d
--- /dev/null
+++ b/macros/text1/cms_help_files/ju.helpmark
@@ -0,0 +1,42 @@
++-----------------------------------------------------------------------------+
+| justify |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\juã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \justify markup makes each line exactly the same length and aligns
+both left and right margins vertically. TEXT1 automatically sets pages
+with full justification by default. The \justify markup is used to reset
+justification after using \rightragged or \leftragged.
+
+ ã|Example:ã%
+\rightragged
+Setting: Continuation of the narrative of Nehemiah
+(c. 420 {\caps b.c.}).
+Supplies information on an important epoch in ancient
+
+Jewish history---the return to Judea after seventy
+years of captivity in Babylon.
+\justify
+Consists of two parts separated by several years:
+Chapters 1 to 6, the return of the first caravan under
+leadership of Zerubbabel; chapters 7 to 10, an
+expedition, sixty years later, conducted by Ezra.
+
++-----------------------------------------------------------------------------+
+| |
+| Setting: Continuation of the narrative of Nehemiah (c. 420 b.c.). |
+| Supplies information on an important epoch in ancient Jewish history---the |
+| return to Judea after seventy years of captivity in Babylon. |
+| Consists of two parts separated by several years: Chapters 1 to 6, |
+| the return of the first caravan under leadership of Zerubbabel; chapters 7 |
+| to 10, an expedition, sixty years later, conducted by Ezra. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+When you specify \justify, text will be justified until TEXT1 sees a
+\rightragged or \leftragged.
diff --git a/macros/text1/cms_help_files/la.helpmark b/macros/text1/cms_help_files/la.helpmark
new file mode 100644
index 0000000000..fce94d1349
--- /dev/null
+++ b/macros/text1/cms_help_files/la.helpmark
@@ -0,0 +1,44 @@
++-----------------------------------------------------------------------------+
+| label |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\laã%
+
+Parameters: ã|textã%
+
+ ã|Description:ã%
+The \label markup creates labelled paragraphs. Labels will appear to the
+left of the paragraph described, in a 72 point (one inch) zone. A label is
+similar to a hanging paragraph, except that the first line is aligned with
+the indented portion and the label is separated by a gutter of 1 em space.
+The skip between labels is one blank line. To begin a new paragraph at the
+same indentation as the previous label, enter "\label{}" with no entry in
+the parameter field of the \label.
+
+ ã|Example:ã%
+origin of rock provides clues.
+\label{Sedimentary} rock is recemented from
+
+particles of older rock that has been broken down
+by physical and chemical weathering.
+\label{Metamorphic}
+rock is igneous or sedimentary that has been
+altered by temperature and pressure.
+\la{}
+Human cells act in a manner like sedimentary rock.
+
++-----------------------------------------------------------------------------+
+| |
+| origin of rock provides clues. |
+| Sedimentaryrock is recemented from particles of older rock that has been |
+| broken down by physical and chemical weathering. |
+| |
+| Metamorphicrock is igneous or sedimentary that has been altered by |
+| temperature and pressure. |
+| Human cells act in a manner like sedimentary rock. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+The label indent and the gutter width can be modified with the \labelformat
+markup
diff --git a/macros/text1/cms_help_files/label.helpbloc b/macros/text1/cms_help_files/label.helpbloc
new file mode 100644
index 0000000000..362b463298
--- /dev/null
+++ b/macros/text1/cms_help_files/label.helpbloc
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|LABELã%block is to be selected if you want to modify the
+\labelformat.
diff --git a/macros/text1/cms_help_files/laf.helpmark b/macros/text1/cms_help_files/laf.helpmark
new file mode 100644
index 0000000000..748b10c7c7
--- /dev/null
+++ b/macros/text1/cms_help_files/laf.helpmark
@@ -0,0 +1,120 @@
++-----------------------------------------------------------------------------+
+| labelformat |
++-----------------------------------------------------------------------------+
+
+\labelformat{\skipbefore{1\bl}
+ \labelwidth{72pt}
+ \gutter{1em}
+ \everylabel{\rm}
+ }
+
+Abbreviation: ã|\lafã%
+
+Parameters: ã|submarkupã%
+
+Submarkup: ã|\skipbefore, \labelwidth, \gutter,
+\everylabelã%
+
+ ã|Description:ã%
+The \labelformat markup controls the appearance of labelled paragraphs.
+
+\skipbefore indicates how much space is to be skipped before printing a
+block. This amount is in addition to any paragraph skips.
+
+\labelwidth sets the amount of space to contain the label to the left of
+the paragraph. The shaded portion illustrated here is the "label width"
+area:
+
++-----------------------------------------------------------------------------+
+| |
+| SCALE, |
+| nmin, nmax fornhalfwordxdata.)nteSince pixeledifferences5can(rangeabetween |
+| -255 and +255 (-511 and . . . |
+| |
++-----------------------------------------------------------------------------+
+
+The default label width is 72 points (one inch). To change to a label width
+of 1 2 inch you would enter,
+
+\labelformat{\labelwidth{.5in}}
+
+\gutter keeps a small amount of space between the label and the paragraph.
+The shaded portion illustrated on the next page is the "label gutter" area.
+
++-----------------------------------------------------------------------------+
+| |
+| SCALE, |
+| nmin, nmax fornhalfwordxdata.)nteSince pixeledifferences5can(rangeabetween |
+| -255 and +255 (-511 and . . . |
+| |
++-----------------------------------------------------------------------------+
+
+The default amount is 1 em space. To change to a label gutter of 5 points
+you would enter,
+
+\labelformat{\gutter{5pt}}
+
+\everylabel determines the type face and size of the label itself. The
+default is roman face and right ragged.
+
+ ã|Example:ã%
+The sample markup reduces the skipbefore amount, increases the labelwidth
+(to suit a larger format), and changes the font for labels to 9 point bold.
+Note the use of displayed math mode.
+
+\selectfontset{cm9}{ninepoint}{default}
+\labelformat{\skipbefore{6pt}
+ \labelwidth{108pt}
+ \gutter{1em}
+ \everylabel{\ninepoint\bd}}
+\label{HALF}
+specifies that both input datasets are halfword
+(maximum 511 DN) (default is byte data).
+\la{ADD} specifies that the sum of the two input
+datasets is to be computed (default is the
+computation of the difference image).
+
+\la{SCALE, nmin, nmax}
+nmin and nmax are integers between -255 and 510
+(-511 and 1022 for halfword data.) Since . . .
+\la{}
+If N(I,J) is less than nmin, the OUTPUT=0.\lbr
+If N(I,J) is greater than nmax, the OUTPUT=K.\lbr
+If N(I,J) is between or equal to nmin and nmax then
+@@OUTPUT = K*{N(I,J)-nmin\over nmax-nmin}@@
+where N(I,J) = IN1(I,J) - IN2(I,J) or if "ADD" has
+been specified, N(I,J) = IN1(I,J) + IN2(I,J)
+and K = 255 (511 for halfword data).
+\la{TRANS\lbr sl1, ss1, sl2, ss2}sl1 and ss1 are
+line and sample
+coordinates for a point in IN1, and sl2 and ss2 are the
+corresponding coordinates for the point in IN2. If HALF
+has been specified, ss1 and ss2 refer to {\it bytes}
+(not sample) in IN1 and In2, respectively.
+
++-----------------------------------------------------------------------------+
+| |
+| HALF specifies that both input datasets are halfword (maximum |
+| 511 DN) (default is byte data). |
+| ADD specifies that the sum of the two input datasets is to |
+| be computed (default is the computation of the difference |
+| image). |
+| |
+| SCALE, nmin, |
+| nmax 1022 for halfword data.)rsSincewe.n.-.55 and 510 (-511 and |
+| If N(I,J) is less than nmin, the OUTPUT=0. |
+| If N(I,J) is greater than nmax, the OUTPUT=K. |
+| If N(I,J) is between or equal to nmin and nmax then |
+| OUTPUT = K*N(I,J)-nmin nmax-nmin where N(I,J) = IN1(I,J) - |
+| IN2(I,J) or if "ADD" has been specified, N(I,J) = IN1(I,J) |
+| + IN2(I,J) and K = 255 (511 for halfword data). |
+| |
+| TRANS |
+| sl1, ss1, sl2,IN1, and sl2 and ss2 are the corresponding coordinates for |
+| ss2 the pointsinaIN2.inIfaHALFahasebeenrspecified,rss1pandtss2 |
+| refer to bytes (not sample) in IN1 and In2, respectively. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+none.
diff --git a/macros/text1/cms_help_files/lbr.helpmark b/macros/text1/cms_help_files/lbr.helpmark
new file mode 100644
index 0000000000..4982e67f9c
--- /dev/null
+++ b/macros/text1/cms_help_files/lbr.helpmark
@@ -0,0 +1,45 @@
++-----------------------------------------------------------------------------+
+| linebreak |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\lbrã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \linebreak markup causes a line to finish without interrupting a
+paragraph. Occasionally it is necessary to break a line in a precise place
+within a paragraph, as opposed to letting TEXT1 decide where to break the
+line. This markup does not end a paragraph, it simply starts the following
+text of the paragraph on a new line instead of concatenating it to the end
+of the previous line.
+
+ ã|Example:ã%
+This article is an outline of the codification of
+Sociogeology into a branch of evolutionary geology.
+The subject has an aggregate of self-sufficient
+
+concepts that with such disciplines as cosmetology
+and astrology. Figure 1 shows a
+schema borrowed from my previous book,\linebreak
+{\it The Intact Societies: Vestals and Volcanoes},\lbr
+which suggests how the amalgam can be achieved.
+Geologists have always been intrigued by comparisons
+between societies of rocks and those of vertebrates,
+between two kingdoms.
+
++-----------------------------------------------------------------------------+
+| |
+| This article is an outline of the codification of Sociogeology into |
+| a branch of evolutionary geology. The subject has an aggregate of |
+| self-sufficient concepts that with such disciplines as cosmetology and |
+| astrology. Figure 1 shows a schema borrowed from my previous book, |
+| The Intact Societies: Vestals and Volcanoes, |
+| which suggests how the amalgam can be achieved. Geologists have always |
+| been intrigued by comparisons between societies of rocks and those of |
+| vertebrates, between two kingdoms. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+See \break for the difference between these two markup.
diff --git a/macros/text1/cms_help_files/leader.helpmark b/macros/text1/cms_help_files/leader.helpmark
new file mode 100644
index 0000000000..e34179520b
--- /dev/null
+++ b/macros/text1/cms_help_files/leader.helpmark
@@ -0,0 +1,47 @@
++-----------------------------------------------------------------------------+
+| leader |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \leader markup is most often used in the \tableofcontentsformat in
+conjunction with a page number. It produces dot leadering. You can also
+use \leader in an \halign.
+
+ ã|Example:ã%
+This example using leaders also illustrates the use of \indent in \halign.
+
+The average annual costs of owning buildings in terms of
+{\it taxes, insurance, maintenance,} and
+{\it depreciation} are:
+\halign{\indent\indent\hbox to 13pc {#\leader}&
+ \rt{#}\ \%\cr
+
+Taxes&1.00\cr
+Insurance&.75\cr
+Maintenance repairs&2.00\cr
+Depreciation&4.00\cr
+Miscellaneous&.25\cr
+\indent\bd Total&8.00\cr}
+
+Will print:
+
++-----------------------------------------------------------------------------+
+| |
+| The average annual costs of owning buildings in terms of taxes, |
+| insurance, maintenance, and depreciation are: |
+| Taxes . .... .. .....1.00 % |
+| Insurance ... . ... ..75 % |
+| Maintenance repairs . 2.00 % |
+| Depreciation. . . ... 4.00 % |
+| Miscellaneous. . .... .25 % |
+| Total ... . ... 8.00 % |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+Notice in the last line the the ampersand (&) acted as a font delimiter for
+the \bd which printed "Total".
diff --git a/macros/text1/cms_help_files/letter.helpmode b/macros/text1/cms_help_files/letter.helpmode
new file mode 100644
index 0000000000..754e174b0c
--- /dev/null
+++ b/macros/text1/cms_help_files/letter.helpmode
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Models |
++-----------------------------------------------------------------------------+
+
+Theã|LETTERã%model is a general letter model. It is a template. You may modify
+it, but it is recommended you check with the Information Center first.
diff --git a/macros/text1/cms_help_files/lib.helpmark b/macros/text1/cms_help_files/lib.helpmark
new file mode 100644
index 0000000000..251f2203c3
--- /dev/null
+++ b/macros/text1/cms_help_files/lib.helpmark
@@ -0,0 +1,50 @@
++-----------------------------------------------------------------------------+
+| listbegin |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\libã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \listbegin markup starts a series of items set off with numbers,
+letters, or bullets (raised dots). The \listbegin markup ends the previous
+paragraph.
+
+ ã|Example:ã%
+
+Some nations have historically dominated others.
+\par
+\listbegin
+\bul United States in Latin America (and the Pacific)
+\bul Europe in Africa (especially England, France,
+
+Germany, the Netherlands---perhaps Portugal and Spain)
+\bul Japan in Southeast Asia (earlier in China, now
+in the Philippines, Borneo, and others)
+\bul Russia in Eastern Europe (and attempts in South
+America and the Caribbean)
+\bul China in Tibet (and most lately in Southeast
+Asia---Campuchea, and Vietnam)
+\listend
+\noindent
+Countries have tried to dominate each other . . .
+
++-----------------------------------------------------------------------------+
+| |
+| Some nations have historically dominated others. |
+| * United States in Latin America (and the Pacific) |
+| * Europe in Africa (especially England, France, Germany, the |
+| Netherlands---perhaps Portugal and Spain) |
+| * Japan in Southeast Asia (earlier in China, now in the Philippines, |
+| Borneo, and others) |
+| * Russia in Eastern Europe (and attempts in South America and the |
+| Caribbean) |
+| * China in Tibet (and most lately in Southeast Asia---Campuchea, and |
+| Vietnam) |
+| Countries have tried to dominate each other . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+none.
diff --git a/macros/text1/cms_help_files/lie.helpmark b/macros/text1/cms_help_files/lie.helpmark
new file mode 100644
index 0000000000..3bc295573f
--- /dev/null
+++ b/macros/text1/cms_help_files/lie.helpmark
@@ -0,0 +1,39 @@
++-----------------------------------------------------------------------------+
+| listend |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\lieã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \listend markup finishes a series of items set off with numbers,
+letters, or bullets (raised dots). The \listend returns text to paragraph
+mode.
+
+ ã|Example:ã%
+Reasons for this continued behavior include:
+\par
+\listbegin
+\lil1 armaments (in the form of tanks, bombers, weapons
+and troop carriers, and personnel vehicles)
+\lil1 military forces (the troops and support personnel
+
+necessary to impose policy by force)
+\listend
+\noindent
+The cultures of industrial nations are based on . . .
+
++-----------------------------------------------------------------------------+
+| |
+| Reasons for this continued behavior include: |
+| 1. armaments (in the form of tanks, bombers, weapons and troop carriers, |
+| and personnel vehicles) |
+| 2. military forces (the troops and support personnel necessary to impose |
+| policy by force) |
+| The cultures of industrial nations are based on . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+none.
diff --git a/macros/text1/cms_help_files/lif.helpmark b/macros/text1/cms_help_files/lif.helpmark
new file mode 100644
index 0000000000..ed5b99e21a
--- /dev/null
+++ b/macros/text1/cms_help_files/lif.helpmark
@@ -0,0 +1,128 @@
++-----------------------------------------------------------------------------+
+| listformat |
++-----------------------------------------------------------------------------+
+
+\listformat{\skipbefore{0\bl}
+ \liststyle{1.,a.,i.,1),a),i),(1)}
+ \everylistlevel1{\rm\lin{36pt}\gutter{1em}}
+ \everylistlevel2{\rm\lin{58pt}\gutter{1em}}
+ \everylistlevel3{\rm\lin{79pt}\gutter{1em}}
+ \everylistlevel4{\rm\lin{101pt}\gutter{1em}}
+ \everylistlevel5{\rm\lin{122pt}\gutter{1em}}
+ \everylistlevel6{\rm\lin{144pt}\gutter{1em}}
+ \everylistlevel7{\rm\lin{166pt}\gutter{1em}}
+ \everybullet{\rm\lin{+36pt}\gutter{1em}}
+ \skipafter{0\bl}}
+
+Abbreviation: ã|\lifã%
+
+Parameters: ã|submarkupã%
+
+Submarkup: ã|\skipbefore, \everylistleveln, \everybullet,
+\skipafter, \liststyleã%
+
+ ã|Description:ã%
+The \listformat markup permits changes to the TEXT1 ordered list style, list
+indentation, or other formatting of an outline list.
+
+ã|\skipbeforeã% indicates how much space is to be skipped before printing a
+list. This amount is in addition to any paragraph skips.
+
+ã|\liststyleã% sets the order of identifiers for the seven levels of a list.
+Up to seven list styles may be entered in the \liststyle markup, each
+separated by commas. The complete collection of possible list level styles
+is:
+
+ "1.", "a.", "A.", "i.", "I.", "1)", "a)", "A)", "i)", "I)",
+ "(1)", "(a)", "(A)", "(i)", "(I)", "1]", "a]", "A]", "i]", "I]",
+ "[1]", "[a]", "[A]", "[i]", "[I]"
+
+ ã|Example:ã%
+Note that every listlevel does not have to be changed or entered.
+
+\listformat{\skipbefore{0pt}
+ \liststyle{1.,a),(1)}}
+
+If your terminal does not have square brackets, you can use the \leftsquare-
+bracket and \rightsquarebracket markup within the \liststyle markup. For
+example:
+
+ \liststyle{\lsb1.\rsb, a.}
+
+ã|\everylistleveln{Nested Markup}ã% The "n" indicates the list level number,
+from 1 to 7. Each of the seven list levels has its own \everylistlevel
+markup. The default indentation increases for each level down. You may use
+Nested Markup such as font changes, \leftindent, \rightindent, and \gutter.
+
+ * \leftindent is the distance from the left margin to the start of the
+text of the item. The left indent is the shaded portion illustrated below:
++-----------------------------------------------------------------------------+
+| |
+| a. The "computer on a chip" has made it possible to extend automation |
+| to the office place. |
+| |
++-----------------------------------------------------------------------------+
+
+ * \gutter is the distance between the list level indicator and the text of
+the item. The gutter is the shaded portion illustrated below:
+
++-----------------------------------------------------------------------------+
+| |
+| a. The "computer on a chip" has made it possible to extend automation |
+| to the office place. |
+| |
++-----------------------------------------------------------------------------+
+
+ã|\everybullet{Nested Markup}ã% Bullets can be used by themselves in a list
+or after any level. If you wanted to change this default to have a right
+ragged bullet with 36-point left and right indents, you would specify:
+
+\listformat{\skipbefore{0pt}
+ \everybullet{\rightragged\lin{36pt}\rin{36pt}}
+ \skipafter{0pt}}
+
+ã|\skipafterã% indicates how much space is to be skipped after printing a list.
+This amount is in addition to any paragraph skips.
+
+ ã|Example:ã%
+Assuming you wanted the text to be right justified and double spaced in a 10
+point Computer Modern font and the list levels to be right ragged and single
+spaced in a 9 point Computer Modern font, the \listformat could be entered
+as illustrated on the next page.
+
+\sfs{cm9}{ninept}{default}
+
+\listformat{\skipbefore{0pt}
+ \liststyle{1.,a.,i.,1),a),i),(1)}
+ \everylistlevel1{\rr\ninept\pin{.5in}\lin{24pt}}
+ \everylistlevel2{\rr\ninept\pin{.5in}\lin{.8in}}
+ \everylistlevel3{\rr\ninept\pin{.5in}\lin{1.1in}}
+ \everylistlevel4{\rr\ninept\pin{.5in}\lin{1.4in}}
+ \everylistlevel5{\rr\ninept\pin{.5in}\lin{1.7in}}
+ \everylistlevel6{\rr\ninept\pin{.5in}\lin{2.0in}}
+ \everylistlevel7{\rr\ninept\pin{.5in}\lin{2.3in}}
+ \skipafter{0pt}}
+
+. . . bridge specifications: |
+\lib\lil1 Falsework under all spans shall be completely
+released before forms are constructed and concrete is
+placed in rail bases and traffic and pedestrian barriers.
+\lil1 In order to determine the condition of column concrete,
+forms shall always be removed from columns before releasing
+supports from beneath beams and girders.
+\lie
+
++-----------------------------------------------------------------------------+
+| |
+| . . . bridge specifications: |
+| 1. Falsework under all spans shall be completely released before forms |
+| are constructed and concrete is placed in rail bases and traffic and |
+| pedestrian barriers. |
+| 2. In order to determine the condition of column concrete, forms shall |
+| always be removed from columns before releasing supports from beneath |
+| beams and girders. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+none.
diff --git a/macros/text1/cms_help_files/lil.helpmark b/macros/text1/cms_help_files/lil.helpmark
new file mode 100644
index 0000000000..101297f484
--- /dev/null
+++ b/macros/text1/cms_help_files/lil.helpmark
@@ -0,0 +1,43 @@
++-----------------------------------------------------------------------------+
+| listlevel |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\lilnã%
+
+Parameters: ã|n, 1 to 7ã%
+
+ ã|Description:ã%
+TEXT1 provides seven levels of list enumeration. The levels in a list are
+each designated with a \listlevel markup; each level is differentiated with
+a list level number n, 1 to 7. To specify an outline list, start with the
+\listbegin markup followed by \listlevel, and ending with a \listend. Each
+\listlevel will indent an absolute amount from the left margin. The default
+indentation for level 1 is 36 points ( 1/2 inch); level 2 is 58 points; and
+each level increases.
+
+ ã|Example:ã%
+\lib
+\lil1 Humans vs. rocks.
+
+\lil2 Rocks are food source for humans.
+\lil3 Igneous
+\lil3 Metamorphic
+\lil2 Humans are food source for rocks.
+\lil1 Rocks vs. humans.
+\lie
+\nin Only more research can dig up facts for solving . . .
+
++-----------------------------------------------------------------------------+
+| |
+| 1. Humans vs. rocks. |
+| a. Rocks are food source for humans. |
+| i. Igneous |
+| ii. Metamorphic |
+| b. Humans are food source for rocks. |
+| 2. Rocks vs. humans. |
+| Only more research can dig up facts for solving . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+Each \listlevel must have a beginning \listbegin and an ending \listend.
diff --git a/macros/text1/cms_help_files/lin.helpmark b/macros/text1/cms_help_files/lin.helpmark
new file mode 100644
index 0000000000..df27e80960
--- /dev/null
+++ b/macros/text1/cms_help_files/lin.helpmark
@@ -0,0 +1,69 @@
++-----------------------------------------------------------------------------+
+| leftindent |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\linã%
+
+Parameters: ã|unit of measureã%
+
+ ã|Description:ã%
+The \lin markup indents text from the left margin. The value may be
+relative, e.g., {+.5in}, which adds (or subtracts) the amount from the
+current left margin or current indent (if one is in effect). The default
+for left indent is zero. The indentation remains until another \leftindent
+overrides it. This markup causes a break in text.
+
+ ã|Example:ã%
+from Camus: The rock should be left at the bottom,
+because of the inevitability of entropic direction.
+\vs{9pt}
+\leftindent{+1in}
+
+What I have read doesn't make any sense. How can
+minerals influence human social behavior, any more
+than gravity? This theory is 'on the rocks.'
+\par
+\leftindent{-1in}
+\rightline{Clay Gneiss}
+
++-----------------------------------------------------------------------------+
+| |
+| |
+| from Camus: The rock should be left at the bottom, because of the |
+| inevitability of entropic direction. |
+| What I have read doesn't make any sense. How can minerals |
+| influence human social behavior, any more than gravity? This |
+| theory is 'on the rocks.' |
+| Clay Gneiss |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+
+You can also use grouping to limit the effects of the \leftindent. If you
+do, be sure that the last paragraph to be indented is followed by a \par.
+The above illustration could also have been accomplished with grouping as
+illustrated on the next page.
+
+from Camus: The rock should be left at the bottom,
+because of the inevitability of entropic direction.
+\vs{9pt}
+{\leftindent{+1in}
+What I have read doesn't make any sense. How can
+minerals influence human social behavior, any more
+than gravity? This theory is 'on the rocks.'
+\par
+}
+\rightline{Clay Gneiss}
+
++-----------------------------------------------------------------------------+
+| |
+| from Camus: The rock should be left at the bottom, because of the |
+| inevitability of entropic direction. |
+| |
+| What I have read doesn't make any sense. How can minerals |
+| influence human social behavior, any more than gravity? This |
+| theory is 'on the rocks.' |
+| Clay Gneiss |
+| |
++-----------------------------------------------------------------------------+
diff --git a/macros/text1/cms_help_files/line.helpmark b/macros/text1/cms_help_files/line.helpmark
new file mode 100644
index 0000000000..e10d568d60
--- /dev/null
+++ b/macros/text1/cms_help_files/line.helpmark
@@ -0,0 +1,56 @@
++-----------------------------------------------------------------------------+
+| line |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \line markup is used most often in the \runningheadformat and \running-
+footformat running title markup.
+
+ ã|Example:ã%
+If you wanted to left justify "Chapter 1" and right justify "page 2" (where
+"2" is actually the page number, \pagenumber), enter:
+
+\rhf{\bothpages{
+ \line{\lft{Chapter 1}\rt{page \pagenumber}}}}
+
++-----------------------------------------------------------------------------+
+| |
+| Chapter 1 page 1 |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+A construct such as,
+
+\rhf{\bothpages{
+ \line{\lft{page \pn}\ctr{\today}
+ \rt{PNW Waterfalls}}}}
+
+will not print the date centered on the page:
+
++-----------------------------------------------------------------------------+
+| |
+| page 2 January 13, 1987 PNW Waterfalls |
+| |
++-----------------------------------------------------------------------------+
+
+To accomplish this, you should print the left and right justified text with
+\line, then space backwards one line (\verticalspace{-\bl}), then center the
+date:
+
+\rhf{\bothpages{\line{\lft{page \pn}
+ \rt{PNW Waterfalls}}}
+ \vs{-\bl}
+ \line{\ctr{\today}}
+
++-----------------------------------------------------------------------------+
+| |
+| page 3 January 13, 1987 PNW Waterfalls |
+| |
++-----------------------------------------------------------------------------+
+
+ Refer to The TEXbook for more on this markup.
diff --git a/macros/text1/cms_help_files/lint.helpmark b/macros/text1/cms_help_files/lint.helpmark
new file mode 100644
index 0000000000..1394439251
--- /dev/null
+++ b/macros/text1/cms_help_files/lint.helpmark
@@ -0,0 +1,25 @@
++-----------------------------------------------------------------------------+
+| lineinterval |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\lintã%
+
+Parameters: ã|intervalã%
+
+ ã|Description:ã%
+When \printingnumbers{yes} and \countinglines{yes} have both been specified,
+this markup is used to specify when a line number is to be printed for line
+numbering in the margin of a document. It need only be specified once at
+the top of a document. The default is every fifth line counted will be
+numbered.
+
+ ã|Example:ã%
+If you wanted every tenth line counted to be numbered, you would specify:
+
+\lineinterval{10}
+
+ ã|Notes:ã%
+Line numbering is only available on the phototypesetter. This markup is
+ignored for all other printers.
+ You may specify an interval from 0-255. Practically speaking, you
+should specify an interval from 1-150.
diff --git a/macros/text1/cms_help_files/lir.helpmark b/macros/text1/cms_help_files/lir.helpmark
new file mode 100644
index 0000000000..a872714bb7
--- /dev/null
+++ b/macros/text1/cms_help_files/lir.helpmark
@@ -0,0 +1,46 @@
++-----------------------------------------------------------------------------+
+| listresume |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\lirã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+\listresume is used to end a lower listlevel and return to the next higher
+listlevel without starting a new point.
+
+ ã|Example:ã%
+\lib
+\lil1 All fixed time controllers shall be equipped with
+indicating switches and wiring to provide local control
+of the following functions:
+\lil2 Transfer from automatic to manual operation,
+\lil2 Transfer from normal operation to flashing,
+\listresume
+
+Combined master and intersection controllers shall have
+indicating switches for functions (b) and (c), above,
+for interconnected system.
+\par
+Combined master and intersection controllers shall also
+have provisions for time switch control.
+\lil1 All fixed-time controllers shall be . . .
+\listend
+
++-----------------------------------------------------------------------------+
+| |
+| 1. All fixed time controllers shall be equipped with indicating switches |
+| and wiring to provide local control of the following functions: |
+| a. Transfer from automatic to manual operation, |
+| b. Transfer from normal operation to flashing, |
+| Combined master and intersection controllers shall have indicating |
+| switches for functions (b) and (c), above, for interconnected system. |
+| Combined master and intersection controllers shall also have |
+| provisions for time switch control. |
+| 2. All fixed-time controllers shall be . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+none.
diff --git a/macros/text1/cms_help_files/lists.helpbloc b/macros/text1/cms_help_files/lists.helpbloc
new file mode 100644
index 0000000000..9c6016c1d8
--- /dev/null
+++ b/macros/text1/cms_help_files/lists.helpbloc
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|LISTSã%block is to be selected if you want to modify the
+\listformat.
diff --git a/macros/text1/cms_help_files/lnf.helpmark b/macros/text1/cms_help_files/lnf.helpmark
new file mode 100644
index 0000000000..26007a09dd
--- /dev/null
+++ b/macros/text1/cms_help_files/lnf.helpmark
@@ -0,0 +1,24 @@
++-----------------------------------------------------------------------------+
+| linenumberfont |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\lnfã%
+
+Parameters: ã|fontã%
+
+ ã|Description:ã%
+When \printingnumbers{yes} and \countinglines{yes} have both been specified,
+this markup is used to specify what font the line number is to be printed in
+the margin of a document. It need only be specified once at the top of a
+document. The default is font "etsc 8", which is English Times Small Caps
+at 8 point.
+
+ ã|Example:ã%
+If you wanted to use Plantin Roman, you would specify:
+
+\linenumberfont{plr 10}
+
+ ã|Notes:ã%
+Line numbering is only available on the phototypesetter. This markup is
+ignored for all other printers.
+ See the Font Catalog to determine what fonts to use.
diff --git a/macros/text1/cms_help_files/lr.helpmark b/macros/text1/cms_help_files/lr.helpmark
new file mode 100644
index 0000000000..bab03a2243
--- /dev/null
+++ b/macros/text1/cms_help_files/lr.helpmark
@@ -0,0 +1,44 @@
++-----------------------------------------------------------------------------+
+| leftragged |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\lrã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \leftragged markup leaves the left margin uneven after formatting. This
+markup is used only with unusual text, for instance, introductory quotes for
+chapters.
+
+ ã|Example:ã%
+\leftragged
+The comparison may seem facile, but from deliberate
+oversimplification comes complex obfuscation and general
+theoretification.
+Behavioral research will lead in this direction, as the
+
+general theory of Sociogeology predicts the features of
+social organization from knowledge of population
+parameters and behavioral constraints imposed by
+the mineral constitution of the species.
+\par
+Humans exhibit metamorphic behavior over time or at high
+temperatures, fever, for instance.
+Metamorphic crystallization involves low temperatures;
+\justify
+
++-----------------------------------------------------------------------------+
+| |
+| Thecomparison mayseemfacile, butfrom deliberateoversimplificationcomes |
+| complex obfuscationandgeneral theoretification.Behavioral researchwilllead |
+| inthis direction,asthe generaltheoryof Sociogeologypredicts thefeaturesof |
+| social organizationfromknowledge ofpopulation parametersandbehavioral |
+| constraints imposedbythe mineralconstitution ofthespecies. |
+| Humansexhibit metamorphicbehaviorover timeor athightemperatures, |
+| fever,forinstance. Metamorphiccrystallization involveslowtemperatures; |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+Use \justify to turn the justification back on again.
diff --git a/macros/text1/cms_help_files/markup.helpmenu b/macros/text1/cms_help_files/markup.helpmenu
new file mode 100644
index 0000000000..29c37a2849
--- /dev/null
+++ b/macros/text1/cms_help_files/markup.helpmenu
@@ -0,0 +1,176 @@
++-----------------------------------------------------------------------------+
+| Summary of TEXT1 Markup |
++-----------------------------------------------------------------------------+
+
+ Help may be selected for the following markup by placing the cursor
+under any of the first eight characters of the desired markup abbreviation
+followed bypressing the PF1 key.
+
+Abbreviation Markup Name Function
+
+app \appendix{} designate appendix
+apf \appendixformat{} modify appendix style
+aib \asisbegin start 'as is' text
+aie \asisend end 'as is' text
+aif \asisformat{} modify 'as is' style
+aen \autoendnote{} save endnote
+afn \autofootnote{} add footnote
+bie \bibentry start entry
+bib \bibliography{} designate bibliography
+bif \bibliographyformat{} modify bibliography style
+bqb \blockquotebegin start block quote
+bqe \blockquoteend end block quote
+bqf \blockquoteformat{} modify block quote style
+bd \bold call bold font
+bi \bolditalic call bolditalic font
+break \break force line and page breaks
+bul \bullet start bullet
+cc \caps call caps/small caps font
+cl \centerline{} center one line
+clb \centerlinesbegin begin centering, 'as is'
+cle \centerlinesend end centering
+cents \cents cent sign
+chap \chapter{} designate chapter
+chf \chapterformat{} modify chapter style
+coul \countinglines{} start counting lines
+dsp \doublespace start alternate blank lines
+db \drawbox{} draw a box around text
+dbrs \drawboxrulesize{} thickness of a box's rule
+dbm \drawboxmat{} white space around a box
+die \dumpinsertseject dump and print inserts
+el \ellipsis{} 3 or 4 dot ellipsis
+ep \emptypage print an empty page
+enf \endnoteformat{} modify endnote style
+epm \evenpagemargin used in line numbering
+ex \extension call the extension font
+fig \figure{}{} create a figure
+fif \figureformat{} modify figures
+fixf \fixedformat multiple column format style
+font \font font definition
+footnote \footnote{}{} add footnote
+fnf \footnoteformat{} modify footnote style
+frac \fraction print a fraction
+frenchspacing \frenchspacing spacing for bibliographies
+goodbreak \goodbreak indicate likely page break
+halign \halign table building
+hin \hangingindent set hanging paragraph indent
+hp \hangingparagraph start hanging paragraph
+hbox \hbox TEX horizontal box
+hs \horizontalspace{} add horizontal space
+hrule \hrule draw a horizontal rule
+hsize \hsize set the galleywidth
+hof \hyphenoff turn off hyphenation
+hon \hyphenon turn on hyphenation
+incl \include add an external graphic
+indent \indent add horizontal space
+ix \index add item to index
+ixf \indexformat specify the index format
+input \input input another file
+isk \interlineskip{} set interline skip
+it \italic specify italic font
+item \item unordered lists
+ju \justify align margins
+la \label start a label
+laf \labelformat modify label style
+leader \leader dot leadering
+lin \leftindent{} indent left margin
+lr \leftragged unaligned left margin
+line \line left justify a line
+lbr \linebreak cause unfilled line break
+lint \lineinterval line numbering
+lnf \linenumberfont line numbering
+lib \listbegin start list
+lie \listend end list
+lif \listformat{} modify list style
+lil \listlevel{} start new list level (1-7)
+lir \listresume resume at previous list level
+mn \marginnote print a note in the margin
+mnf \marginnoteformat modify margin note style
+mathdefault \mathdefault establish math fonts
+mi \mathitalic call math italic font
+msp \monospace typewriter printer setup
+mcf \multicolumnformat modify multiple column defaults
+nc \newcolumn start a new column
+np \newpage start a new page
+nobreak \nobreak discourage page break
+nin \noindent suppress paragraph indent
+nonfrenchspacing \nonfrenchspacing turn off french spacing
+ntp \notitlepage suppress title page
+numl \numberinglines line numbering
+opm \oddpagemargin line numbering
+oc \onecolumn one column formatting
+pf \pageformat page size and margins
+pn \pagenumber print page number
+par \paragraph end paragraph
+pb \paragraphbox box a paragraph
+pin \paragraphindent{} set paragraph indentation
+printind \printindex print the document index
+psk \paragraphskip{} set space between paragraphs
+part \part{} designate major heading
+paf \partformat{} modify part style
+plaintexmathon \plaintexmathon use PLAIN.TEX's $
+ppl \poplevel line numbering
+pre \preface{} designate preliminary pages
+prf \prefaceformat{} modify preface style
+pen \printendnotes print accumulated endnotes
+prin \printingnumbers{} line numbering
+pic \putincontents1{} add to the table of contents
+quad \quad add an 'em' of space
+qquad \qquad add two 'em's of space
+raggedbottom \raggedbottom don't align page bottoms
+rin \rightindent{} indent right margin
+rl \rightline{} right justify line
+rlb \rightlinesbegin begin right alignment, 'as is'
+rle \rightlinesend end right alignment, 'as is'
+rr \rightragged unaligned right margin
+rm \roman specify roman font
+rule \rule create horizontal line
+rff \runningfootformat{} specify running foot format
+rhf \runningheadformat{} specify running head format
+sau \sameauthor previous author, bibliography
+sfs \selectfontset{}{}{} specify font set
+sms \selectmathset{}{} specify math set
+ssf \selectspecificfont{}{}{} specify specific font
+san \setappendixnumber{} reset appendix number
+scn \setchapternumber{} reset chapter number
+senn \setendnotenumber{} reset endnote number
+sfn \setfigurenumber{} reset figure number
+sffn \setfootnotenumber{} reset footnote number
+spn \setpagenumber{} reset page number
+sptn \setpartnumber{} reset part number
+ssan \setsubheadanumber{} reset subheada number
+ssbn \setsubheadbnumber{} reset subheadb number
+sscn \setsubheadcnumber{} reset subheadc number
+ssdn \setsubheaddnumber{} reset subheadd number
+stn \settablenumber{} reset table number
+settabs \settabs tables
+ssp \singlespace start single spacing
+strut \strut tables
+sha \subheada{} designate first subheading
+shaf \subheadaformat{} modify first subheading style
+shb \subheadb{} designate second subheading
+shbf \subheadbformat{} modify second subheading style
+shc \subheadc{} designate third subheading
+shcf \subheadcformat{} modify third subheading style
+shd \subheadd{} designate fourth subheading
+shdf \subheaddformat{} modify fourth subheading style
+sy \symbol call the symbol font
+taf \tableformat{} modify table title style
+toc \tableofcontents{} print table of contents
+tocf \tableofcontentsformat{} modify table of contents style
+tat \tabletitle{} print a table title
+tenpt \tenpt call 10pt font set
+text1 \text1 print "TEXT1"
+thc \threecolumns print text in 3 columns
+tp \titlepage designate title page
+tpf \titlepageformat{} modify title page style
+toclbr \toclinebreak cause a line break in the contents
+today \today print current date
+twelvept \twelvept call 12pt font set
+twc \twocolumns print text in 2 columns
+tt \typewriter call typewriter font
+us \underscore{} underline word(s)
+vbox \vbox TEX vertical box
+vs \verticalspace{} leave vertical space
+vsk \verticalspacekeep{} leave vertical space
+vrule \vrule draw a vertical rule
diff --git a/macros/text1/cms_help_files/marnote.helpbloc b/macros/text1/cms_help_files/marnote.helpbloc
new file mode 100644
index 0000000000..13e28e3ece
--- /dev/null
+++ b/macros/text1/cms_help_files/marnote.helpbloc
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|MARNOTEã%block is to be selected if you want to modify the
+\marginnoteformat.
diff --git a/macros/text1/cms_help_files/mathdefa.helpmark b/macros/text1/cms_help_files/mathdefa.helpmark
new file mode 100644
index 0000000000..9fe869f6a3
--- /dev/null
+++ b/macros/text1/cms_help_files/mathdefa.helpmark
@@ -0,0 +1,24 @@
++-----------------------------------------------------------------------------+
+| mathdefault |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+By default, TEXT1 establishes a 9 point font for math mode superscripts,
+and a 7 point font for math mode supersuperscripts. This is the value of
+\mathdefault. You can establish other math mode font combinations than 9/7
+by using the \selectmathset markup.
+
+ ã|Example:ã%
+You can establish a larger math set called \bigmath which can be used for
+display math and you can switch back to \mathdefault for the text math.
+
+\selectmathset{cm1412m}{bigmath}
+\twelvept
+\mathdefault
+
+ ã|Notes:ã%
+none.
diff --git a/macros/text1/cms_help_files/mcf.helpmark b/macros/text1/cms_help_files/mcf.helpmark
new file mode 100644
index 0000000000..f24f22ac48
--- /dev/null
+++ b/macros/text1/cms_help_files/mcf.helpmark
@@ -0,0 +1,260 @@
++-----------------------------------------------------------------------------+
+| multicolumnformat |
++-----------------------------------------------------------------------------+
+
+\multicolumnformat{
+ \twocolumnwidth{.48\galleywidth}
+ \threecolumnwidth{.31\galleywidth}
+ \twocolumngutter{.04\galleywidth}
+ \threecolumngutter{.035\galleywidth}
+ \columnrulewidth{0.0pt}
+ \skipbefore{6pt plus3pt minus2pt}
+ \skipafter{6pt plus3pt minus2pt}
+ }
+
+Abbreviation: ã|\mcfã%
+
+Parameters: ã|submarkupã%
+
+Submarkup: ã|\twocolumnwidth, \threecolumnwidth,
+\twocolumngutter, \threecolumngutter, \columnrulewidth,
+\skipbefore, \skipafterã%
+
+ ã|Description:ã%
+The column and gutter widths can be changed by modifying the
+\multicolumnformat markup. Column widths are specified in a percentage
+of the \galleywidth, the width of the text area on the page as specified
+in the \pageformat markup. If the default "flexibleformat" is being used
+a skip before and a skip after the multiple column format may also be
+specified. These skips are ignored if you are using \fixedformat.
+
+ã|\twocolumnwidthã% is the width of each column when you specify \twocolumns.
+Each column will be exactly the same width. This width is the shaded area
+illustrated below:
++-----------------------------------------------------------------------------+
+| |
+| Greek man- from the fourth |
+| uscripts of the to the ninth |
+| Bible fall into centuries, be- |
+| 3 groups (1) Pa- ginning with the |
+| pyri, covering Codex Vaticanus |
+| the period from and the Codex |
+| the third cen- Sinaiticus; (3) |
+| tury b.c. to Vellum minis- |
+| the fourth cen- cules, from the |
+| tury a.d. (2) ninth century |
+| Vellum uncials-- to the inven- |
+| -a form of ma- tion of print- |
+| juscule (large ing, there are |
+| letter)--- well over 4,000 |
+| of various dates manuscripts. |
+| |
++-----------------------------------------------------------------------------+
+
+ã|\threecolumnwidthã% is the width of each column when you specify
+\threecolumns. Each column will be exactly the same width. This
+width is the shaded area illustrated below:
+
++-----------------------------------------------------------------------------+
+| |
+| Greek manu- (2) Vellum icanus and |
+| scripts of uncials- the Codex |
+| the Bible --a form Sinaiticus; |
+| fall into of majus- (3) Vel- |
+| 3 groups: cule (large lum minis- |
+| (1) Papyri, letter)-- cules, from |
+| covering -of various the ninth |
+| the period dates from century to |
+| from the the fourth the inven- |
+| third cen- to the tion |
+| tury b.c. ninth cen- of print- |
+| to the turies, be- ing, there |
+| fourth cen- ginning are over |
+| tury a.d. with the 4,000 manu- |
+| Codex Vat- scripts. |
+| |
++-----------------------------------------------------------------------------+
+
+ã|\twocolumngutterã% is the distance between each column when you specify
+\twocolumns. The gutter is the shaded area illustrated below:
++-----------------------------------------------------------------------------+
+| |
+| Greek man- from the fourth |
+| uscripts of the to the ninth |
+| Bible fall into centuries, be- |
+| 3 groups (1) Pa- ginning with the |
+| pyri, covering Codex Vaticanus |
+| the period from and the Codex |
+| the third cen- Sinaiticus; (3) |
+| tury b.c. to Vellum minis- |
+| the fourth cen- cules, from the |
+| tury a.d. (2) ninth century |
+| Vellum uncials-- to the inven- |
+| -a form of ma- tion of print- |
+| juscule (large ing, there are |
+| letter)--- well over 4,000 |
+| of various dates manuscripts. |
+| |
++-----------------------------------------------------------------------------+
+
+ã|\threecolumngutterã% is the distance between each column when you specify
+\threecolumns. Each gutter will be exactly the same width. The gutter is
+the shaded area illustrated on the next page:
++-----------------------------------------------------------------------------+
+| |
+| Greek manu- (2) Vellum icanus and |
+| scripts of uncials- the Codex |
+| the Bible --a form Sinaiticus; |
+| fall into of majus- (3) Vel- |
+| 3 groups: cule (large lum minis- |
+| (1) Papyri, letter)-- cules, from |
+| covering -of various the ninth |
+| the period dates from century to |
+| from the the fourth the inven- |
+| third cen- to the tion |
+| tury b.c. ninth cen- of print- |
+| to the turies, be- ing, there |
+| fourth cen- ginning are over |
+| tury a.d. with the 4,000 manu- |
+| Codex Vat- scripts. |
+| |
++-----------------------------------------------------------------------------+
+
+ã|\columnrulewidthã% when set to a non zero value will print a rule between
+each column.
+
+ã|\skipbeforeã% is the distance between the one column text and the multiple
+column text when you are using the flexible method of setting multiple
+columns. The skip is ignored if you are using \fixedformat.
+
+ã|\skipafterã% is the distance between the multiple column text and the one
+column text when you are using the flexible method of setting multiple
+columns. The skip is ignored if you are using \fixedformat.
+
+ ã|Example:ã%
+You can also specify the column widths in units of measure, instead of a
+percentage of the \galleywidth.
+
+ \multicolumnformat{
+ \twocolumnwidth{10pc}
+ \twocolumngutter{3pc}
+ \columnrulewidth{.25pt}
+
+ \skipbefore{6pt plus3pt minus2pt}
+ \skipafter{6pt plus3pt minus2pt}}
+
+ \twocolumns
+ Greek manuscripts of the Bible fall into 3 groups
+ (1) {\it Papyri}, covering the period from the third century
+ {\caps b.c} to the fourth century {\caps a.d}.
+ (2) {\it Vellum uncials}---a form of majuscule (large
+ letter)---of various dates from the fourth to the ninth
+ centuries, beginning with the {\it Codex Vaticanus} and
+ the {\it Codex Sinaiticus};
+ (3) {\it Vellum miniscules}, from the ninth century to
+ the invention of printing, there are well over
+ 4,000 manuscripts.
+ \onecolumn
+
++-----------------------------------------------------------------------------+
+| |
+| Greek manu- . from the fourth |
+| scripts of the . to the ninth |
+| Bible fall into . centuries, be- |
+| 3 groups (1) Pa- . ginning with the |
+| pyri, covering . Codex Vaticanus |
+| the period from . and the Codex |
+| the third cen- . Sinaiticus; (3) |
+| tury b.c. to . Vellum minis- |
+| the fourth cen- . cules, from the |
+| tury a.d. (2) . ninth century |
+| Vellum uncials-- . to the inven- |
+| -a form of ma- . tion of print- |
+| juscule (large . ing, there are |
+| letter)--- . well over 4,000 |
+| of various dates . manuscripts. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+
+The rule between the columns will not print as long as the column rule width
+is zero.
+ The skip before and skip after are ignored in the optional fixed column
+method. The fixed column format (\fixedformat) always fills the remainder
+of the current page with white space and changes to the new format on the
+following page. Columns may not be balanced in \fixedformat.
+ The \newcolumn markup while in the flexible format estimates the
+remaining space on the page at the time it is entered. If a footnote
+or other insert is placed on the same page after the newcolumn markup the
+length of the blank column cannot be estimated properly. In this case,
+TEXT1 will issue a warning,
+
+overfull \vbox 12pt while \output active
+
+You can compensate for the footnote or insert by subtracting twice the
+amount of the overfull box in two columns or three times this amount in
+triple columns immediately before the newcolumn markup. For example, if the
+box is overfull by 12 points and you are in two columns, enter,
+
+\advance\vsize by-24pt
+\newcolumn
+text
+
+or in three columns before a \newcolumn enter,
+
+\advance\vsize by-36pt
+\newcolumn
+text
+
+This reduces the height of the current page enough to allow space for the
+insert. The height of each column must be reduced by the amount of the
+overfull box warning, or twice the amount for two columns and three times
+the amount for three columns. See The TEXbook for more on \advance.
+ If the newcolumn markup appears on the final page of the document it
+may cause the balance columns routine to fail because one column is the
+full height of the page. Do not change to \fixedformat after entering
+\newcolumn.
+
+ Certain line breaking penalties have been altered in the multiple column
+formats. These penalties, in combination or separately, may cause a short
+column if there are not a sufficient number of places specified to add extra
+space, "glue."
+
+ Single Column Penalties
+\brokenpenalty=100 \clubpenalty=150
+\exhyphenpenalty=50 \hyphenpenalty=50
+\widowpenalty=150 \hbadness=1000
+\tolerance=200
+ Two Columns Penalties
+\brokenpenalty=0 \clubpenalty=0
+\exhyphenpenalty=0 \hyphenpenalty=0
+\widowpenalty=0 \hbadness=6400
+\tolerance=6400
+ Three Columns Penalties
+\brokenpenalty=0 \clubpenalty=0
+\exhyphenpenalty=0 \hyphenpenalty=0
+\widowpenalty=0 \hbadness=9600
+\tolerance=9600
+
+The penalties may be reinstated in the multiple column formats by entering
+each markup with a new value in the text stream immediately after the first
+call for the double or triple column markup. Refer to The TEXbook for a
+discussion of the above penalties.
+ When formatting multiple column text and other large formatting tasks,
+the user may run into trouble by calling for so many format changes that
+the available memory space is overrun. If this happens reduce the number
+of markup used on the page that fails to format. The numbers enclosed in
+angle brackets < 1 > < 2 > < 3 > show how many pages have been completed and
+are printed on the terminal screen as each page is completed. If the macro
+memory was exceeded when < 3 > was the last number in the sequence you would
+know that the memory was exceeded while formatting page four. Your file
+will not print with this error condition.
+ To find the point in your document that exceeded the memory use the
+markup \bye at different places in your file. This markup stops text
+processing. At the point \bye doesn't prevent the error condition you know
+that you have passed page 4 where the error occurred. You may then examine
+the markup before the \bye for possible elimination or find other markup
+that will format properly without overrunning the memory. See The TEXbook
+for more on \bye.
+
diff --git a/macros/text1/cms_help_files/memo.helpmode b/macros/text1/cms_help_files/memo.helpmode
new file mode 100644
index 0000000000..e6362b8139
--- /dev/null
+++ b/macros/text1/cms_help_files/memo.helpmode
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Models |
++-----------------------------------------------------------------------------+
+
+Theã|MEMOã%model is a general memo model. It is a template. You may modify it,
+but it is recommended you check with the Information Center first.
diff --git a/macros/text1/cms_help_files/mi.helpmark b/macros/text1/cms_help_files/mi.helpmark
new file mode 100644
index 0000000000..4e38e59993
--- /dev/null
+++ b/macros/text1/cms_help_files/mi.helpmark
@@ -0,0 +1,31 @@
++-----------------------------------------------------------------------------+
+| mathitalic |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\miã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \mathitalic markup is a font change much the same as \roman or
+\italic. The behavior of the math italic font is quite different from the
+italic. For example, the sequence "This lengthy succession" will print
+as "This lengthy succession" with \italic and "This lengthy succession with
+\mathitalic. This markup is usually used in math mode.
+
+ ã|Example:ã%
+
+Control sequences with {\it several
+arguments} require even more {\mi precautions
+than control sequences with one argument.}
+
++-----------------------------------------------------------------------------+
+| |
+| Control sequences with several arguments require even more precautions |
+| than control sequences with one argument. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+\mathitalic does not honor interword spacing (the space between words) in a
+sentence.
diff --git a/macros/text1/cms_help_files/mn.helpmark b/macros/text1/cms_help_files/mn.helpmark
new file mode 100644
index 0000000000..238c713a5d
--- /dev/null
+++ b/macros/text1/cms_help_files/mn.helpmark
@@ -0,0 +1,30 @@
++-----------------------------------------------------------------------------+
+| marginnote |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\mnã%
+
+Parameters: ã|note textã%
+
+ ã|Description:ã%
+Margin notes can be added to either the left or right side of a page with
+the \marginnote markup. As the name indicates, margin notes are outside the
+defined margin. They are produced, by default, right ragged in a 10 point
+Computer Modern font in the left margin with a width of 60 points and a
+gutter of 12 points.
+
+ ã|Example:ã%
+. . . a General Systems Theory of geological change. |
+\marginnote{IV.7.4}
+No theory, however, has unified diverse sciences of . . .
++-----------------------------------------------------------------------------+
+| |
+| . . . a General Systems Theory of geological change. No theory, |
+| however, has unified diverse sciences of . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+Avoid using \marginnote with \monospace.
+ Refer to the description of the \marginnoteformat markup to find out how
+to change the \marginnote defaults.
diff --git a/macros/text1/cms_help_files/mnf.helpmark b/macros/text1/cms_help_files/mnf.helpmark
new file mode 100644
index 0000000000..c6bc4061c5
--- /dev/null
+++ b/macros/text1/cms_help_files/mnf.helpmark
@@ -0,0 +1,53 @@
++-----------------------------------------------------------------------------+
+| marginnoteformat |
++-----------------------------------------------------------------------------+
+
+\marginnoteformat{\position{left}
+ \notewidth{54pt}}
+ \notegutter{6pt}
+ \everymarginnote{\tenpt\rr}}
+
+Abbreviation: ã|\mnfã%
+
+Parameters: ã|submarkupã%
+
+Submarkup: ã|\position, \notewidth, \notegutter,
+\everymarginnoteã%
+
+ ã|Description:ã%
+The defaults for the \marginnote markup can be modified with
+\marginnoteformat.
+
+ã|\positionã% by default places the margin note in the margin. You can have it
+placed in the right margin by specifying:
+
+\marginnoteformat{right}
+
+ã|\notewidthã% is the width of the area in the margin used for printing the
+margin note.
+
+ã|\notegutterã% is the width of the area between the margin note and the left
+margin of the text.
+
+ã|\everymarginnote{Nested Markup}ã% can be vertical mode markup such as \right-
+ragged, \leftragged, \justify, and font changes.
+
+ ã|Example:ã%
+Change the margin notes so they print in the right margin in a 7 point font
+with a margin note width of 46 points.
+
+\sfs{cm7}{sevenpt}{default}
+\marginnoteformat{\position{right}
+ \notewidth{46pt}}
+ \notegutter{1em}
+ \everymarginnote{\sevenpt\rm} }
+
+This chapter explains the fundamental steps in preparing
+a file containing ordinary English text. Numerous
+exercises have been interspersed throughout the
+\marginnote{Well, there {\it will} be lots of exercises
+eventually.} text, to clarify certain points,
+or just to provide practice.
+
+ ã|Notes:ã%
+none.
diff --git a/macros/text1/cms_help_files/msp.helpmark b/macros/text1/cms_help_files/msp.helpmark
new file mode 100644
index 0000000000..854d444579
--- /dev/null
+++ b/macros/text1/cms_help_files/msp.helpmark
@@ -0,0 +1,91 @@
++-----------------------------------------------------------------------------+
+| monospace |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\mspã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+Typestyles may be monospaced, where all letters are the same width, or
+proportionally spaced, where letters are different widths. Typewriter
+printers have only monospaced typestyles; Composing printers have both
+styles available. The default typestyle for TEXT1 is Computer Modern, a
+proportionally spaced typestyle for composing printers. It is not available
+on typewriter printers.
+ The \monospace markup calls the monospaced font and adjusts many TEXT1
+block defaults to fit within the limitations of monospace. For example,
+the amount of space before and after a block quote is increased to whole
+baseline skips, instead of half (monospace only deals with whole lines).
+References for footnotes are placed on the baseline instead of superscripted
+(which is not available in monospace).
+
+ If you specify \italic and you are using \monospace, you will get
+underscores instead of italics, since most typewriter printers do not have
+italics.
+
+ ã|Example:ã%
+
+\monospace
+As long as human institutions were large and brittle,
+war was an effective way of disassembling them.
+The intellectual rationalization for the continual
+preparation for war is the old Roman adage:
+{\it If you want peace, prepare for war.}
+
++-----------------------------------------------------------------------------+
+| |
+| As long as human institutions were large and brittle, war was an |
+| effective way of disassembling them. The intellectual rationalization for |
+| the continual preparation for war is the old Roman adage: If you want |
+| peace, prepare for war. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+Specify the \monospace markup only once. It should be the first markup in
+your file.
+ The markup the \monospace modifies, and their new defaults are as
+follows:
+
+ * The font for the table of contents will print with \roman.
+
+ * \raggedbottom is "on" instead of \normalbottom.
+
+ * \paragraphskip is set to "0pt".
+
+ * \paragraphindent is set to "36pt".
+
+ * The \skipbefore and \skipafter for \asisformat is set to "1\bl" instead
+ of 6 points.
+
+ * The \skipbefore and \skipafter for \blockquoteformat is set to "1\bl"
+ instead of 6 points; the text is indented 36 points instead of 24
+ points; the text is printed in monospace roman instead of 10 point
+ Computer Modern roman.
+
+ * Figure titles are printed monospace bold instead of 10 point Computer
+ Modern bold.
+
+ * Table titles are printed in monospace bold instead of Computer Modern
+ 12 point bold.
+
+ * Endnotes are printed with no extra space, except paragraph skip,
+ between notes instead of 4 points as is the non \monospace default; The
+ note is printed in monospace roman instead of Computer Modern 10 point;
+ The text of the note is not indented, instead of the default 1.2em
+ indentation.
+
+ * Autofootnotes are printed down instead of superscripted; Their style is
+ "(1)" instead of "1" in monospace roman instead of Computer Modern 10
+ point; At the bottom of the page the note carries a paragraph indent of
+ 20 points instead of .5in.
+
+ * Heading markup, such as \part, \chapter, \subheada, etc. are printed
+ in monospace instead of Computer Modern 12 point.
+
+ * The running head is defined to use monospace instead of Computer Modern
+ 12 point.
+
+If you want to change any of the defaults for the above mentioned markup,
+they must come after the \monospace markup.
diff --git a/macros/text1/cms_help_files/multicol.helpbloc b/macros/text1/cms_help_files/multicol.helpbloc
new file mode 100644
index 0000000000..88473bcd09
--- /dev/null
+++ b/macros/text1/cms_help_files/multicol.helpbloc
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|MULTICOLã%block is to be selected if you want to modify the
+\multicolumnformat for 2 or 3 columns.
diff --git a/macros/text1/cms_help_files/nc.helpmark b/macros/text1/cms_help_files/nc.helpmark
new file mode 100644
index 0000000000..c8463b8ade
--- /dev/null
+++ b/macros/text1/cms_help_files/nc.helpmark
@@ -0,0 +1,49 @@
++-----------------------------------------------------------------------------+
+| newcolumn |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\ncã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+When using \twocolumns or \threecolumns, there may be times when an author
+wants to force TEXT1 to break a column at a point other than at the bottom
+of a page. This can be done by entering the \newcolumn markup. Any
+column in the double or triple column formats can be broken by inserting the
+\newcolumn (\nc) markup.
+
+ ã|Example:ã%
+This was accomplished by entering the \newcolumn markup between the desired
+list entries while in \twocolumns
+
+\twocolumns
+\hangingparagraph
+
+Ehrlich, P. et al. 1984. {\it Cold and the Dark}.
+New York: W.~Norton.
+\hangingparagraph
+Osborn, E. 1962. (personal message).
+\newcolumn
+\hangingparagraph
+Roszak, T. 1972. {\it Where the Wasteland Ends}.
+New York: Harper & Row.
++-----------------------------------------------------------------------------+
+| |
+| Ehrlich, P. et Roszak, T. 1972. |
+| al. 1984. Where |
+| Cold and the the Wasteland |
+| Dark. New Ends. New |
+| York: York: Harper |
+| W. Norton. & Row. |
+| Osborn, E. 1962. |
+| (personal |
+| message). |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+This markup has the same effect as \newpage if you are in a printing in one
+column instead of multiple columns.
+ If you are in multiple columns and you want to go to the next page, use
+\newpage instead of \newcolumn.
diff --git a/macros/text1/cms_help_files/nin.helpmark b/macros/text1/cms_help_files/nin.helpmark
new file mode 100644
index 0000000000..52e0ac3f16
--- /dev/null
+++ b/macros/text1/cms_help_files/nin.helpmark
@@ -0,0 +1,46 @@
++-----------------------------------------------------------------------------+
+| noindent |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\ninã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+Paragraph indentation can be suspended for the following paragraph by
+placing a \noindent markup at the beginning of the first line. A paragraph
+following a block quote or following a title is often not indented.
+
+ ã|Example:ã%
+
+\lib
+\lil1 the economic advantages of large-scale operations
+(as shown in industrial applications)
+\listlevel2 armaments (in the form of tanks, bombers,
+weapons and troop carriers, and personnel vehicles)
+\listlevel2 military forces (the troops and support
+
+personnel necessary to impose policy by force)
+\listend
+\noindent
+The cultures of industrial nations are based on
+accumulations of materials.
+\par
+Questions about defining . . .
+
++-----------------------------------------------------------------------------+
+| |
+| 1. the economic advantages of large-scale operations (as shown in |
+| industrial applications) |
+| a. armaments (in the form of tanks, bombers, weapons and troop |
+| carriers, and personnel vehicles) |
+| b. military forces (the troops and support personnel necessary to |
+| impose policy by force) |
+| The cultures of industrial nations are based on accumulations of |
+| materials. |
+| Questions about defining . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+Refer to The TEXbook for more on this markup.
diff --git a/macros/text1/cms_help_files/nobreak.helpmark b/macros/text1/cms_help_files/nobreak.helpmark
new file mode 100644
index 0000000000..078a6418fc
--- /dev/null
+++ b/macros/text1/cms_help_files/nobreak.helpmark
@@ -0,0 +1,39 @@
++-----------------------------------------------------------------------------+
+| nobreak |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+You can discourage TEXT1 from breaking a page at a certain point by using
+\nobreak. It should be preceded either by a \verticalspace or a \paragraph.
+
+ ã|Example:ã%
+This example tells TEXT1 to keep the title "Leached Samples" on the same
+page as "Table 6 gives . . . ".
+
+\cl{\bd Leached Samples}
+\vs{\bl}
+\nobreak
+Table 6 gives the compositions of the leached
+samples as reported by x-ray fluorescence analysis
+
+(XRF). Using silica content as an internal standard,
+the relative amounts of each element removed can be
+calculated. These too are shown in Table 6.
+
++-----------------------------------------------------------------------------+
+| |
+| Leached Sample |
+| |
+| Table 6 gives the compositions of the leached samples as reported by |
+| x-ray fluorescence analysis (XRF). Using silica content as an internal |
+| standard, the relative amounts of each element removed can be calculated. |
+| These too are shown in Table 6. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+Refer to The TEXbook for more on this markup.
diff --git a/macros/text1/cms_help_files/nonfrenc.helpmark b/macros/text1/cms_help_files/nonfrenc.helpmark
new file mode 100644
index 0000000000..73157c7f9f
--- /dev/null
+++ b/macros/text1/cms_help_files/nonfrenc.helpmark
@@ -0,0 +1,45 @@
++-----------------------------------------------------------------------------+
+| nonfrenchspacing |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+By default, TEXT1 will double space after punctuation, unless the letter
+prior to the punctuation is a capital letter. To make all interword spacing
+the same, regardless of punctuation, you can enter the \frenchspacing
+markup. This will turn off the extra spacing following punctuation for the
+rest of a document or until TEXT1 sees a \nonfrenchspacing markup.
+
+ ã|Example:ã%
+If you had specified \nonfrenchspacing to turn off french spacing,
+
+\nonfrenchspacing
+\bibentry
+
+Grabens, Gruss M. 1970. {\it Mechanical Processes
+in the Human Geomechanism}. Winston: Geomedical
+Publications, International.
+
+it might print as:
+
++-----------------------------------------------------------------------------+
+| |
+| Grabens, Gruss M. 1970. Mechanical Processes in the Human Geomechanism. |
+| Winston: Geomedical Publications, International. |
+| |
++-----------------------------------------------------------------------------+
+
+Compare this to the same bibliography entry printed with \frenchspacing:
+
++-----------------------------------------------------------------------------+
+| |
+| Grabens, Gruss M. 1970. Mechanical Processes in the Human Geomechanism. |
+| Winston: Geomedical Publications, International. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+none.
diff --git a/macros/text1/cms_help_files/np.helpmark b/macros/text1/cms_help_files/np.helpmark
new file mode 100644
index 0000000000..ee4040fd74
--- /dev/null
+++ b/macros/text1/cms_help_files/np.helpmark
@@ -0,0 +1,36 @@
++-----------------------------------------------------------------------------+
+| newpage |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\npã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \newpage markup stops formatting the current page, leaving the remainder
+blank (footnotes or bottom titles will print as expected), and starts a new
+page with the text following the markup.
+
+ ã|Example:ã%
+The following example would print "Bibliography" at the top of the next
+page.
+
+The rock should be left at the bottom, because of
+the inevitability of entropic direction.
+\par
+
+\newpage
+\centerline{\bd Bibliography}
+\hp
+Grabens, G. 1970. {\it Mechanical Processes in
+the Human Geomechanism}. Winston: Geomedical
+Publications International.
+\hp
+Illite, I. 1911. "Picking the Philosopher's
+Stone." {\it Mining Truth}. 11:455--601.
+
+ ã|Notes:ã%
+If you are in \twocolumns and you specify \newpage while in the first
+column, the second column will be left blank. If you are in \threecolumns
+and you specify \newpage while in the first column, the second and third
+columns will be left blank.
diff --git a/macros/text1/cms_help_files/ntp.helpmark b/macros/text1/cms_help_files/ntp.helpmark
new file mode 100644
index 0000000000..7a6c62959f
--- /dev/null
+++ b/macros/text1/cms_help_files/ntp.helpmark
@@ -0,0 +1,47 @@
++-----------------------------------------------------------------------------+
+| notitlepage |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\ntpã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+By default, you always get a title page as the first page of your document.
+If you want running titles on the first page, put the \notitlepage markup at
+the top of the source. Then the first line of the \runningheadformat will
+be the first line to appear at the top of the first and subsequent pages.
+
+ ã|Example:ã%
+
+\rhf{\bothpages{\line{\ctr{\today}}}}
+\notitlepage
+\rightlinesbegin
+J.R. Bays
+
+P.O. Box 2021 CS
+Pullman, WA 99163
+\rightlinesend
+\vs{2\bl}
+\centerline{\bd Nuclear Utopia}
+\vs{2\bl}
+Nuclear war is unthinkable.
+Limited disarmament is unworkable.
+Environmental degradation is unconscionable.
+
++-----------------------------------------------------------------------------+
+| |
+| January 13, 1987 |
+| |
+| J.R. Bays |
+| P.O. Box 2021 CS |
+| Pullman, WA 99163 |
+| |
+| |
+| Nuclear Utopia |
+| |
+| |
+| Nuclear war is unthinkable. Limited disarmament is unworkable. |
+| Environmental degradation is unconscionable. |
+| |
++-----------------------------------------------------------------------------+
diff --git a/macros/text1/cms_help_files/numl.helpmark b/macros/text1/cms_help_files/numl.helpmark
new file mode 100644
index 0000000000..a71e31704a
--- /dev/null
+++ b/macros/text1/cms_help_files/numl.helpmark
@@ -0,0 +1,20 @@
++-----------------------------------------------------------------------------+
+| numberinglines |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\numlã%
+
+Parameters: ã|statusã%
+
+ ã|Description:ã%
+This markup is used to start numbering lines for line numbering in the
+margin of a document. Status is true or false.
+
+ ã|Example:ã%
+To start line numbering you enter
+
+\numberinglines{true}
+
+ ã|Notes:ã%
+Line numbering is only available on the phototypesetter. This markup is
+ignored for all other printers.
diff --git a/macros/text1/cms_help_files/oc.helpmark b/macros/text1/cms_help_files/oc.helpmark
new file mode 100644
index 0000000000..0b3e8cdf0b
--- /dev/null
+++ b/macros/text1/cms_help_files/oc.helpmark
@@ -0,0 +1,52 @@
++-----------------------------------------------------------------------------+
+| onecolumn |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\ocã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+If you have specified \twocolumns or \threecolumns, single column text can
+be formatted again by entering the \onecolumn markup. For example, if an
+author wants to change from a single column to two columns he enters the
+\twocolumns markup where the two column text begins and \onecolumn or \oc
+markup where the single column text begins again.
+
+ ã|Example:ã%
+The \twocolumns markup places the bullets in two columns. And \onecolumn
+returns text to a single column.
+
+\twocolumns\listbegin
+\bul {\it Russia} in Eastern Europe (and in
+
+South America and the Caribbean)
+\nc
+\bul {\it China} in Tibet (and most lately in Southeast
+Asia---Campuchea, and Vietnam)
+\listend
+\onecolumn
+\noindent
+Countries have tried to dominate each other
+economically and militarily for thousands of years.
+Reasons for this continued behavior include . . .
+
++-----------------------------------------------------------------------------+
+| |
+| * Russia in * China in Ti- |
+| Eastern Eu- bet (and |
+| rope (and in most lately |
+| South Amer- in South- |
+| ica and the east Asia--- |
+| Caribbean) Campuchea, |
+| and Vietnam) |
+| |
+| Countries have tried to dominate each other economically and militarily |
+| for thousands of years. Reasons for this continued behavior include |
+| . . . |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+\onecolumn has no effect if you are already in one column.
+ If you are in \fixedformat, \onecolumn will do a \newpage before
+starting one column formatting.
diff --git a/macros/text1/cms_help_files/opm.helpmark b/macros/text1/cms_help_files/opm.helpmark
new file mode 100644
index 0000000000..657fa0e915
--- /dev/null
+++ b/macros/text1/cms_help_files/opm.helpmark
@@ -0,0 +1,24 @@
++-----------------------------------------------------------------------------+
+| oddpagemargin |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\opmã%
+
+Parameters: ã|measurementã%
+
+ ã|Description:ã%
+This markup is used to indicate where a document's line numbering is to be
+printed on odd numbered pages. The default is 407.7 points from the left
+edge of the paper on odd pages.
+
+ ã|Example:ã%
+To indicate that you want line numbering to start at 1 inch from the left
+edge, you would enter at the beginning of your document:
+
+\oddpagemargin{1in}
+
+ ã|Notes:ã%
+Line numbering is only available on the phototypesetter. This markup is
+ignored for all other printers.
+ Valid values for \oddpagemargin are 0 to 2 to the power of 32 points,
+practical values are 5 to 860 points.
diff --git a/macros/text1/cms_help_files/paf.helpmark b/macros/text1/cms_help_files/paf.helpmark
new file mode 100644
index 0000000000..851a5e290e
--- /dev/null
+++ b/macros/text1/cms_help_files/paf.helpmark
@@ -0,0 +1,67 @@
++-----------------------------------------------------------------------------+
+| partformat |
++-----------------------------------------------------------------------------+
+
+\partformat{\numberingstyle{1}
+ \titleformat{\dumpinsertseject\titlepage
+ \hrule height 0pt depth 0pt
+ \vfil
+ \centerline{\twelvept\bd
+ Part \partnumber}
+ \centerline{\twelvept\bd \parttitle}
+ \setchapternumber{0}
+ \setsubheadanumber{0}
+ \setsubheadbnumber{0}
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}
+ \setfootnotenumber{0}
+ \setendnotenumber{0}
+ \setfigurenumber{0}
+ \settablenumber{0}
+ }
+
+ \incontents{yes}
+ }
+
+Abbreviation: ã|\pafã%
+
+Parameters: ã|submarkupã%
+
+Submarkup: ã|\numberingstyle, \titleformat, \incontentsã%
+
+ ã|Description:ã%
+The \partformat markup allows you to modify the defaults that control the
+appearance of the part title. Following are the submarkup descriptions.
+
+ã|numberingstyleã% allows you to change the style from Arabic numerals, the
+default (1), to capital letters (A) or roman numerals (I). If you wanted
+your parts in roman numerals, you would specify:
+
+\partformat{\numberingstyle{I}}
+
+ã|titleformatã% controls the appearance of the part title banner. You may
+use markup such as \newpage, \dumpinsertseject \verticalspace, and \center-
+line within \titleformat as Nested Markup. Other markup you may use within
+or outside of \partformat:
+ ã|partnumber.ã% prints the most recent part number.
+ ã|parttitle.ã% prints the most recent part title.
+ ã|hrule height 0pt depth 0pt.ã% is used to create a half title page
+along with \vfil.
+
+ã|incontentsã% places the part title in contents (if one is printed).
+Printing can be suppressed by changing to "no."
+
+ ã|Example:ã%
+This example does not create a half title page. Instead the part starts a
+new page, centers the title bold, and one line is skipped afterwards before
+printing the text of the part.
+
+\partformat{\titleformat{\newpage
+ \cl{\bd \parttitle}
+
+ \vs{1\bl}
+ }}
+
+ ã|Notes:ã%
+The \partformat markup must come after the \monospace markup, if both are
+used. See The TEXbook for more on \vfil.
diff --git a/macros/text1/cms_help_files/pagem.helpbloc b/macros/text1/cms_help_files/pagem.helpbloc
new file mode 100644
index 0000000000..9e08994304
--- /dev/null
+++ b/macros/text1/cms_help_files/pagem.helpbloc
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|PAGE-Mã%block is to be selected if you want to modify the
+\pageformat, page dimensions and margins for this \monospace job.
diff --git a/macros/text1/cms_help_files/pagep.helpbloc b/macros/text1/cms_help_files/pagep.helpbloc
new file mode 100644
index 0000000000..7b17e6276d
--- /dev/null
+++ b/macros/text1/cms_help_files/pagep.helpbloc
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|PAGE-Pã%block is to be selected if you want to modify the
+\pageformat, page dimensions and margins for thisã|nonã%\monospace job.
diff --git a/macros/text1/cms_help_files/paper.helpmode b/macros/text1/cms_help_files/paper.helpmode
new file mode 100644
index 0000000000..51c7b221ef
--- /dev/null
+++ b/macros/text1/cms_help_files/paper.helpmode
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Models |
++-----------------------------------------------------------------------------+
+
+Theã|PAPERã%model is a general paper model. It is a template. You may modify
+it, but it is recommended you check with the Information Center first.
diff --git a/macros/text1/cms_help_files/par.helpmark b/macros/text1/cms_help_files/par.helpmark
new file mode 100644
index 0000000000..1a4a9c500f
--- /dev/null
+++ b/macros/text1/cms_help_files/par.helpmark
@@ -0,0 +1,81 @@
++-----------------------------------------------------------------------------+
+| paragraph |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\parã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+A paragraph is a composition consisting of a group of sentences dealing with
+a single topic. A paragraph is commonly indicated by beginning on a new
+line and indenting the first line.
+ The TEXT1 program is paragraph-oriented, that is, it reads an entire
+paragraph before breaking it into lines. Because TEXT1 reads by paragraphs,
+the \paragraph markup comes at the end of a paragraph, instead of the
+beginning. Thus, to end a paragraph, enter the \paragraph markup (or a
+blank line) on the last line of text or on a line by itself, which makes it
+easier to spot paragraphs in the source.
+
+ ã|Example:ã%
+This sample shows the relation of text to markup.
+
+\psk{5pt}\pin{10pt}
+I raised it in order to characterize the
+essence of Sociogeology. Will Durant recognized that
+civilization existed by consent of geology---subject
+to change without notice.
+\paragraph
+The definition of Sociogeology is the study of the
+geological basis of all social behavior.
+It explains human behavior by empirical description
+of the attributes of mineral composition.
+It is most successful when it provides detailed
+description of particulate phenomena and first-order
+correlations with features of the physical
+environment.
+
+One of its primary functions is to reformulate the
+shaky foundations of social sciences in a way that
+draws them into a modern synthesis with the hard
+sciences.
+
+\par
+This article is an outline of the codification of
+Sociogeology into a branch of evolutionary geology.
+The subject has an aggregate of self-sufficient . . .
++-----------------------------------------------------------------------------+
+
+| |
+| I raised it in order to characterize the essence of Sociogeology. Will |
+| Durant recognized that civilization existed by consent of geology--- |
+| subject to change without notice. |
+| The definition of Sociogeology is the study of the geological basis of |
+| all social behavior. It explains human behavior by empirical description |
+| of the attributes of mineral composition. It is most successful when |
+| it provides detailed description of particulate phenomena and first-order |
+| correlations with features of the physical environment. |
+| |
+| One of its primary functions is to reformulate the shaky foundations of |
+| social sciences in a way that draws them into a modern synthesis with the |
+| hard sciences. |
+| This article is an outline of the codification of Sociogeology into |
+| a branch of evolutionary geology. The subject has an aggregate of |
+| self-sufficient . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+A blank line also ends a paragraph. For this reason, blank lines may be
+used in place of \paragraph markup.
+ Paragraphs are not permitted in math mode; they cause errors. Blank
+lines will also cause errors in math mode.
+ The distance between paragraphs is determined by the \par-
+agraphskip markup. The default value for \paragraphskip is
+"0 points plus 3 points minus 0 points". The "plus/minus" specification
+allows up to 3 additional points to be added between paragraphs to get the
+bottom of each page to line up properly is you are using \normalbottom.
+ The indent at the beginning of each paragraph is determined by the
+\paragraphindent markup. The default value for indentation is 24 points.
+ For a complete discussion of how paragraphs are read in and formatted,
+refer to The TEXbook.
diff --git a/macros/text1/cms_help_files/parm.helpbloc b/macros/text1/cms_help_files/parm.helpbloc
new file mode 100644
index 0000000000..4164a4a16a
--- /dev/null
+++ b/macros/text1/cms_help_files/parm.helpbloc
@@ -0,0 +1,8 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|PAR-Mã%block is to be selected if you want to modify
+\paragraphindent, \paragraphskip, \justify, or \hypenon.
+The defaults given are for \monospace jobs.
diff --git a/macros/text1/cms_help_files/parp.helpbloc b/macros/text1/cms_help_files/parp.helpbloc
new file mode 100644
index 0000000000..d3d2f1de79
--- /dev/null
+++ b/macros/text1/cms_help_files/parp.helpbloc
@@ -0,0 +1,8 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|PAR-Pã%block is to be selected if you want to modify
+\paragraphindent, \paragraphskip, \justify, or \hypenon.
+The defaults given areã|notã%for \monospace jobs.
diff --git a/macros/text1/cms_help_files/part.helpbloc b/macros/text1/cms_help_files/part.helpbloc
new file mode 100644
index 0000000000..771ae0c672
--- /dev/null
+++ b/macros/text1/cms_help_files/part.helpbloc
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|PARTã%block is to be selected if you want to modify the
+\partformat.
diff --git a/macros/text1/cms_help_files/part.helpmark b/macros/text1/cms_help_files/part.helpmark
new file mode 100644
index 0000000000..eee751234e
--- /dev/null
+++ b/macros/text1/cms_help_files/part.helpmark
@@ -0,0 +1,32 @@
++-----------------------------------------------------------------------------+
+| part |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|titleã%
+
+ ã|Description:ã%
+The \part markup starts a new page, centers the title in 12 point Computer
+Modern bold, and enters the title in the table of contents. Furthermore,
+the \part markup places the part title in the center of a blank page (called
+a half-title page). Parts are numbered. Each heading markup can be used as
+often as necessary.
+
+ ã|Example:ã%
+This example would print the title "Human Sciences" on a half title page,
+then skip to a new page where it begins the paragraph "Humanity is still
+ . . ."
+
+in order.
+
+\part{Human Sciences}
+\newpage
+Humanity is still the measure of . . .
+
+ ã|Notes:ã%
+To change how a part looks, use the \partformat markup.
+ If you are using \monospace, the part title is printed in monospace bold
+instead of Computer Modern 12 point bold.
+ Each time you enter \part, the chapter number and subhead numbers are
+reset to zero.
diff --git a/macros/text1/cms_help_files/pb.helpmark b/macros/text1/cms_help_files/pb.helpmark
new file mode 100644
index 0000000000..629dae4e29
--- /dev/null
+++ b/macros/text1/cms_help_files/pb.helpmark
@@ -0,0 +1,47 @@
++-----------------------------------------------------------------------------+
+| paragraphbox |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\pbã%
+
+Parameters: ã|textã%
+
+ ã|Description:ã%
+Whole paragraphs can be put into a \drawbox if you use \vbox with the
+\drawbox. The resulting box will extend into the left and right margins by
+the sum of the \drawboxmat and \drawboxrulesize. If you use \paragraphbox{
+| . . } instead of \drawbox{\vbox{ . . . }}, the paragraph size is reduced |
+such that the box will fit within the current margins.
+
+ ã|Example:ã%
+This illustrates the difference between a paragraph boxed with \paragraphbox
+and \drawbox.
+
+ \paragraphbox{{\it The Journal of Nonrepeating
+ Results} is published by the Center for Unpleasant
+
+ Phenomena, at Palouse, Washington. The copyrights for
+ articles are assigned to and held by the authors.}
+ \drawbox{\vbox{The Center for Unpleasant Phenomena
+ is the research arm of Giga Geologicals, Inc. No apologies
+ are tendered for the nonverifiability of experiments.
+ The opinions of the authors do not reflect company policy.}}
+
++-----------------------------------------------------------------------------+
+| |.
+| ........................................................................... |.
+| . The Journal of Nonrepeating Results is published by the Center |.
+| . for Unpleasant Phenomena, at Palouse, Washington. The copyrights for |.
+| . articles are assigned to and held by the authors. |.
+| ........................................................................... |.
+| . The Center for Unpleasant Phenomena is the research arm of Gig |.
+| . Geologicals, Inc. No apologies are tendered for the nonverifiability o |.
+| . experiments. The opinions of the authors do not reflect company policy. |.
+| ........................................................................... |.
+| |.
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+Do not use this markup if you are using \monospace.
+ Do not use \paragraphbox around more than one page of formatted
+material.
diff --git a/macros/text1/cms_help_files/pen.helpmark b/macros/text1/cms_help_files/pen.helpmark
new file mode 100644
index 0000000000..7c2523f3cd
--- /dev/null
+++ b/macros/text1/cms_help_files/pen.helpmark
@@ -0,0 +1,42 @@
++-----------------------------------------------------------------------------+
+| printendnotes |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\penã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+To print the endnotes accumulated with the \autoendnote markup, use the
+\printendnotes markup.
+
+ ã|Example:ã%
+To start a new page, center a title (such as "Notes"), and dump the
+endnotes, enter:
+
+There is a well-marked division of
+labor.\autoendnote{Such as it is. Things could be
+different in the geological world, but they are not.}
+Details of organization have evolved by an
+optimization process. . . .
+\newpage
+\titlepage
+\cl{\bd Notes}
+\vs{\bl}
+\printendnotes
+
++-----------------------------------------------------------------------------+
+| |
+| Notes |
+| |
+| 1. Such as it is. Things could be different in the geological world, but |
+| they are not. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+The \printendnotes markup does not print the title "Note". It may be used
+more than once in a paper; for example, you may want to print all endnotes
+within a chapter at the end of the chapter rather than at the end of the
+entire paper. The \printendnotes markup prints all endnotes accumulated up
+to that point.
diff --git a/macros/text1/cms_help_files/pf.helpmark b/macros/text1/cms_help_files/pf.helpmark
new file mode 100644
index 0000000000..a49a225f25
--- /dev/null
+++ b/macros/text1/cms_help_files/pf.helpmark
@@ -0,0 +1,83 @@
++-----------------------------------------------------------------------------+
+| pageformat |
++-----------------------------------------------------------------------------+
+
+\pageformat{\pagelength{11in}
+ \pagewidth{8.5in}
+ \topmargin{1in}
+ \bottommargin{1in}
+ \leftmargin{1.2in}
+ \rightmargin{1in}
+ \bindingadjust{0pt}
+ }
+
+Abbreviation: ã|\pfã%
+
+Parameters: ã|submarkupã%
+
+Submarkup: ã|\pagelength, \pagewidth, \topmargin,
+\bottommargin, \leftmargin, \rightmargin, \bindingadjust,
+\galleywidthã%
+
+ ã|Description:ã%
+The \pageformat markup specifies the page size and margins. The dimensions
+and margins for the pages of a document are set with page formatting markup.
+These submarkup are valid only within the \pageformat markup. Its seven
+submarkup are described below.
+
+ã|pagelengthã% specifies the length of the page to be used. The default
+page length, 11 inches is maximum for most printers.
+
+ã|pagewidthã% specifies the width of the page to be used. The default
+page width, 8.5 inches, is maximum for most printers. The \pagewidth
+and \rightmargin submarkup may optionally be replaced with the \galleywidth
+submarkup.
+
+ã|topmarginã% sets the distance from the top of the paper to the first line
+of text, excluding the top title(s). The default value is 1 inch.
+
+ã|bottommarginã% sets the distance from the bottom of the paper to the last
+line of the text, excluding the bottom title(s). The default value is 1
+inch.
+
+ã|leftmarginã% sets the distance from the left edge of the page to the left
+edge of the text. The default value is 1.2 inches.
+
+ã|rightmarginã% sets the distance from the right edge of the page to the
+right edge of the text. The default value is 1 inch. The \pagewidth
+and \rightmargin submarkup may optionally be replaced with the \galleywidth
+submarkup.
+
+ã|bindingadjustã% is used to offset left and right margins, which is useful
+for duplex printing (on both sides). The value given the \bindingadjust
+submarkup will increase the left margin on odd pages and decrease the left
+margin on even pages. The page text width is not shortened, only the
+margin. The default value is {0pt}.
+
+ã|galleywidthã% may be substituted for \pagewidth and \rightmargin to
+determine the width of the text. The \galleywidth has the same dimension
+as \hsize. You cannot use \galleywidth in the same fashion, however, as
+\hsize.
+
+ ã|Example:ã%
+This custom source has 90 point (1 1/4inch) left and right margins.
+
+\pageformat{\leftmargin{90pt}
+ \rightmargin{90pt}}
+
+ ã|Example:ã%
+This custom source sets up a 9 inch by 6 inch page size. The margins have
+been decreased accordingly. A binding adjust value has been added.
+
+\pageformat{\pagelength{9in}
+ \topmargin{.5in}
+ \bottommargin{.5in}
+
+ \leftmargin{.6in}
+ \galleywidth{4.9in}
+ \bindingadjust{.2in}
+ }
+
+ ã|Notes:ã%
+Do note include \pagewidth and \rightmargin in the \pageformat markup if you
+use the \galleywidth submarkup.
diff --git a/macros/text1/cms_help_files/pic.helpmark b/macros/text1/cms_help_files/pic.helpmark
new file mode 100644
index 0000000000..c387a6fc35
--- /dev/null
+++ b/macros/text1/cms_help_files/pic.helpmark
@@ -0,0 +1,97 @@
++-----------------------------------------------------------------------------+
+| putincontents |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\picnã%
+
+Parameters: ã|text and markupã%
+
+ ã|Description:ã%
+Major headings and the first two levels of subheadings are automatically
+placed in a table of contents (if one is called). Any heading, text, or
+markup can be put in the table of contents using the \putincontents markup
+(abbreviated \pic).
+ This markup has one parameter, but that parameter can be either markup
+to manipulate the table of contents itself or the text, usually a heading,
+to be put in the contents. Note that in the example the page number and dot
+leadering to separate it from the text were both included.
+ There are three levels of contents: the first (\pic1) puts text and/or
+markup into the primary table of contents; \pic2 puts text and/or markup
+into the list of figures; \pic3 puts text and/or markup into the list of
+tables.
+
+ Refer to the example on the next page.
+
+ ã|Example:ã%
+To create an Abstract that conforms to the Washington State University
+graduate school's thesis requirements and print the abstract title in the
+table of contents, enter:
+
+\newpage
+\putincontents1{ABSTRACT\leader\pagenumber\par}
+\doublespace
+\vsk{6\bl}
+\centerlinesbegin
+\bd EFFECTIVENESS OF PRISM TRAINING
+ON THE IMPROVEMENT OF READING
+AT THE FIFTH GRADE LEVEL
+ABSTRACT
+\singlespace
+\vs{2\bl}
+\rm by Ray Elmer Brown, Ph.D.
+Washington State University, 1979
+\vs{1\bl}
+
+\centerlinesend
+\nin Chairman: Lloyd B. Johnson
+\vs{1\bl}
+The text of the abstract follows at this point . . .
+
+\pic2{LIST OF FIGURES\leader vi}
+\pic3{LIST OF TABLES\leader viii}
+\setpagenumber{0}
+\chapter{Introduction}
+
+(Note, single spacing will return to double spacing after the
+\centerlinesend markup, since it acts as a delimiter with
+\centerlinesbegin.)
+
+The abstract would print as:
+
++-----------------------------------------------------------------------------+
+| |
+| iv |
+| |
+| |
+| EFFECTIVENESS OF PRISM TRAINING |
+| ON THE IMPROVEMENT OF READING |
+| AT THE FIFTH GRADE LEVEL |
+| ABSTRACT |
+| |
+| |
+| by Ray Elmer Brown, Ph.D. |
+| Washington State University, 1979 |
+| |
+| Chairman: Lloyd B. Johnson |
+| |
+| The text of the abstract follows at this point . . . |
+| |
++-----------------------------------------------------------------------------+
+
+The table of contents generated would contain:
+
++-----------------------------------------------------------------------------+
+| |
+| ACKNOWLEDGEMENTS... . ... ... . ...... . ... ... . ...... . ... iii |
+| ABSTRACT. . . .... . . ...... . . .... . . ...... . . .... . . .....iv |
+| List of Figures ... . ... ... . ...... . ... ... . ...... . ... .vi |
+| List of Tables .... . .. .. .. . ...... . .. .. .. . ...... . .. . viii |
+| Introduction .. ... . ...... . ... ... . ...... . ... ... . ..... 1 |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+Notice in the sample source file illustrated on the previous page that the
+List of Figure's and List of Table's page numbers were manually put into the
+\putincontents markup. This is the only way to have these placed into the
+table of contents.
diff --git a/macros/text1/cms_help_files/pin.helpmark b/macros/text1/cms_help_files/pin.helpmark
new file mode 100644
index 0000000000..cb2aca4f66
--- /dev/null
+++ b/macros/text1/cms_help_files/pin.helpmark
@@ -0,0 +1,46 @@
++-----------------------------------------------------------------------------+
+| paragraphindent |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\pinã%
+
+Parameters: ã|indentã%
+
+ ã|Description:ã%
+Throughout an entire document, paragraphs have 24 points indentation on the
+first line of each paragraph. This value may be changed by modifying the
+default with \paragraphindent. All following paragraphs will then exhibit
+the new indent.
+
+ ã|Example:ã%
+The first paragraph indent has been set to 14 points for comparison with the
+second paragraph which has a \paragraphindent of 24 points.
+
+\paragraphindent{14pt}
+{\it The Journal of Nonrepeating
+
+Results} is published by the Center for Unpleasant
+Phenomena, at Palouse, Washington. The copyrights for
+articles are assigned to and held by the authors.
+\par
+\pin{24pt}
+The Center for Unpleasant Phenomena is the research arm
+of Giga Geologicals, Inc.
+No apologies are tendered for the nonverifiability of
+experiments. The opinions of the authors do not reflect
+company policy.
+
++-----------------------------------------------------------------------------+
+| |
+| The Journal of Nonrepeating Results is published by the Center for |
+| Unpleasant Phenomena, at Palouse, Washington. The copyrights for articles |
+| are assigned to and held by the authors. |
+| The Center for Unpleasant Phenomena is the research arm of Giga |
+| Geologicals, Inc. No apologies are tendered for the nonverifiability of |
+| experiments. The opinions of the authors do not reflect company policy. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+If you are using \monospace, it is best to define the indent in tenths of an
+inch or in em's.
diff --git a/macros/text1/cms_help_files/plaintex.helpmark b/macros/text1/cms_help_files/plaintex.helpmark
new file mode 100644
index 0000000000..9115410ad1
--- /dev/null
+++ b/macros/text1/cms_help_files/plaintex.helpmark
@@ -0,0 +1,28 @@
++-----------------------------------------------------------------------------+
+| plaintexmathon |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+This markup can be used to make the dollar sign ($) the valid math mode
+indicator as is used in PLAIN TEX instead of the TEXT1 math mode indicator,
+the at sign (@).
+
+ ã|Example:ã%
+
+\plaintexmathon
+$x+y=100$
+
+ ã|Notes:ã%
+
+Do not use this markup with \monospace.
+ If used, it should be specified at the top of your document. You will
+need to use the TEX \catcode markup to change back to using the at sign as
+the math mode indicator:
+
+\catcode'44=12
+
+For more on the \catcode markup, refer to The TEXbook.
diff --git a/macros/text1/cms_help_files/pn.helpmark b/macros/text1/cms_help_files/pn.helpmark
new file mode 100644
index 0000000000..9cba3d9d1e
--- /dev/null
+++ b/macros/text1/cms_help_files/pn.helpmark
@@ -0,0 +1,40 @@
++-----------------------------------------------------------------------------+
+| pagenumber |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\pnã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \pagenumber markup merely places the current page number wherever the
+markup appears.
+
+ ã|Example:ã%
+In running heads, \pagenumber numbers the pages.
+
+\runningheadformat{\bothpages{\line{\rm
+ \lft{Southern Bays}\rt{page \pagenumber}}
+ \vs{2pt}
+ \hrule
+ \vs{1\bl}
+ }
+ }
+
+The running head would look like:
+
++-----------------------------------------------------------------------------+
+| |
+| Southern Bays 1 |
+| ........................................................................... |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+If you want no page numbers, then enter the following:
+
+\runningheadformat{\bothpage{}}
+
+ ã|Notes:ã%
+none.
+
diff --git a/macros/text1/cms_help_files/ppl.helpmark b/macros/text1/cms_help_files/ppl.helpmark
new file mode 100644
index 0000000000..8260c9d69e
--- /dev/null
+++ b/macros/text1/cms_help_files/ppl.helpmark
@@ -0,0 +1,21 @@
++-----------------------------------------------------------------------------+
+| poplevel |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\pplã%
+
+Parameters: ã|levelã%
+
+ ã|Description:ã%
+This markup is used in counting lines for line numbering in the margin of a
+document. The level number is TEX's stacking level number. The default is
+pop level 7.
+
+ ã|Example:ã%
+If you must change to a different pop level, 9 for example, enter:
+
+\poplevel{9}
+
+ ã|Notes:ã%
+Line numbering is only available on the phototypesetter. This markup is
+ignored for all other printers.
diff --git a/macros/text1/cms_help_files/pre.helpmark b/macros/text1/cms_help_files/pre.helpmark
new file mode 100644
index 0000000000..7e44bb2dbd
--- /dev/null
+++ b/macros/text1/cms_help_files/pre.helpmark
@@ -0,0 +1,31 @@
++-----------------------------------------------------------------------------+
+| preface |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\preã%
+
+Parameters: ã|titleã%
+
+ ã|Description:ã%
+Each preface starts a new page, centers the title in bold, and enters it in
+the table of contents (if one is printed). The preface is not numbered.
+Each heading markup can be used as often as necessary.
+
+ ã|Example:ã%
+\today
+\preface{Acknowledgments}
+I am grateful for the assistance and financial support
+of the Grand Foundation for . . .
+
++-----------------------------------------------------------------------------+
+| |
+| Acknowledgments |
+| |
+| I am grateful for the assistance and financial support of the Grand |
+| Foundation for . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+You can modify the default style for a preface with the \prefaceformat
+markup.
diff --git a/macros/text1/cms_help_files/preface.helpbloc b/macros/text1/cms_help_files/preface.helpbloc
new file mode 100644
index 0000000000..8fd4f9faf6
--- /dev/null
+++ b/macros/text1/cms_help_files/preface.helpbloc
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|PREFACEã%block is to be selected if you want to modify the
+\prefaceformat.
diff --git a/macros/text1/cms_help_files/prf.helpmark b/macros/text1/cms_help_files/prf.helpmark
new file mode 100644
index 0000000000..c0f4cde759
--- /dev/null
+++ b/macros/text1/cms_help_files/prf.helpmark
@@ -0,0 +1,42 @@
++-----------------------------------------------------------------------------+
+| prefaceformat |
++-----------------------------------------------------------------------------+
+
+\prefaceformat{\titleformat{\dumpinsertseject
+ \cl{\twelvept\bd \prefacetitle}
+ \vs{1\bl}}
+ \incontents{yes}
+ }
+
+Abbreviation: ã|\prfã%
+
+Parameters: ã|submarkupã%
+
+Submarkup: ã|\titleformat, \incontentsã%
+
+ ã|Description:ã%
+The \prefaceformat markup allows you to modify the defaults that control the
+appearance of the preface title. There are two submarkup:
+
+ã|titleformatã% controls the appearance of the part title banner. You
+may use markup such as \newpage, \verticalspace, and \centerline within
+\titleformat as Nested Markup. You may also use:
+ ã|prefacetitle.ã% prints the most recent preface title.
+
+ã|incontentsã% places the preface title in contents (if one is printed).
+Printing can be suppressed by changing to "no."
+
+ ã|Example:ã%
+In this example, the preface starts a new page, the title is centered in
+bold, and one line is skipped afterwards. No preface is put in contents.
+
+\prefaceformat{\titleformat{\newpage
+ \cl{\bd \prefacetitle}
+ \vs{1\bl}
+ }
+ \incontents{no}
+ }
+
+ ã|Notes:ã%
+The \prefaceformat markup must come after the \monospace markup, if both are
+used.
diff --git a/macros/text1/cms_help_files/prin.helpmark b/macros/text1/cms_help_files/prin.helpmark
new file mode 100644
index 0000000000..50b159f13f
--- /dev/null
+++ b/macros/text1/cms_help_files/prin.helpmark
@@ -0,0 +1,20 @@
++-----------------------------------------------------------------------------+
+| printingnumbers |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\prinã%
+
+Parameters: ã|statusã%
+
+ ã|Description:ã%
+This markup is used to start the printing of line numbering in the margin of
+a document. Status is true or false.
+
+ ã|Example:ã%
+To enable line numbers to be printed, enter:
+
+\printingnumbers{true}
+
+ ã|Notes:ã%
+Line numbering is only available on the phototypesetter. This markup is
+ignored for all other printers.
diff --git a/macros/text1/cms_help_files/printend.helpmark b/macros/text1/cms_help_files/printend.helpmark
new file mode 100644
index 0000000000..f149a6007e
--- /dev/null
+++ b/macros/text1/cms_help_files/printend.helpmark
@@ -0,0 +1,10 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \printendnotes (\pen) COMMAND |
++-----------------------------------------------------------------------------+
+
+The \printendnotes (\pen) command will space down the amount specified in the
+\endnoteformat{\skipbefore}} and print all accumulated endnotes. The
+\printendnotes (\pen) format is:
+
+ \printendnotes
+
diff --git a/macros/text1/cms_help_files/printind.helpmark b/macros/text1/cms_help_files/printind.helpmark
new file mode 100644
index 0000000000..3f796827af
--- /dev/null
+++ b/macros/text1/cms_help_files/printind.helpmark
@@ -0,0 +1,58 @@
++-----------------------------------------------------------------------------+
+| printindex |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|index numberã%
+
+ ã|Description:ã%
+The \printindex markup sorts and prints the index entries generated with the
+\index markup. The \printindex markup would usually come at the end of a
+document before the table of contents. This markup has the format
+
+\printindexN
+
+where N is the index number: 1, 2 or 3. By default, the index is
+printed using the indent style of index in ten point Computer Modern. It
+is recommended that you print the index in two columns (\twocolumns). For
+a complete list of the defaults and how to modify them, refer to the
+\indexformat markup.
+
+ ã|Example:ã%
+The following illustrates how to place an index at the end of a document,
+after the last appendix, and before the table of contents. Assume the table
+of contents is to begin on page "iv".
+
+\appendix{Sample Data}
+
+\preface{Index}
+\twocolumns
+\printindex1
+\onecolumns
+\tableofcontents{-4}
+
+Using the \preface markup will start a new page with the title
+"Index" at the top of the page. Then \twocolumns will begin two column
+formatting (typical for indexes). Next \printindex1 will sort index "1" and
+print the sorted index according to the defaults set by the \indexformat
+markup. After printing the last of the index, \onecolumn will switch back
+to single column mode before printing the table of contents.
+
+ ã|Example:ã%
+Sometimes multiple indexes are required. If you had used \index1 and
+\index2, then you would use \printindex1 and \printindex2 to print them out:
+
+\index1item in first index
+\index2item in second index
+\preface{Index One}
+\twocolumns
+\printindex1
+\onecolumns
+\preface{Index Two}
+\twocolumns
+\printindex2
+\onecolumns
+
+ ã|Notes:ã%
+none.
diff --git a/macros/text1/cms_help_files/psk.helpmark b/macros/text1/cms_help_files/psk.helpmark
new file mode 100644
index 0000000000..5a665edd5e
--- /dev/null
+++ b/macros/text1/cms_help_files/psk.helpmark
@@ -0,0 +1,62 @@
++-----------------------------------------------------------------------------+
+| paragraphskip |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\pskã%
+
+Parameters: ã|units of measureã%
+
+ ã|Description:ã%
+This markup causes all following paragraphs to be separated by the new
+distance. The \paragraphskip is expressed using valid units of measurement
+in TEXT1. The default value is 0 points.
+
+ ã|Example:ã%
+The first two paragraphs used a paragraph skip of 10 points. The third one
+used a skip of 20 points.
+
+\paragraphskip{10pt}
+{\it The Journal of Nonrepeating
+Results} is published by the Center for Unpleasant
+
+Phenomena, at Palouse, Washington. The copyrights for
+articles are assigned to and held by the authors.
+\par
+The Center for Unpleasant Phenomena is the research arm
+of Giga Geologicals, Inc.
+
+\psk{20pt}
+No apologies are tendered for the nonverifiability of
+experiments. The opinions of the authors do not reflect
+company policy.
+
++-----------------------------------------------------------------------------+
+| |
+| The Journal of Nonrepeating Results is published by the Center for |
+| Unpleasant Phenomena, at Palouse, Washington. The copyrights for articles |
+| are assigned to and held by the authors. |
+| |
+| The Center for Unpleasant Phenomena is the research arm of Giga |
+| Geologicals, Inc. |
+| |
+| |
+| No apologies are tendered for the nonverifiability of experiments. |
+| The opinions of the authors do not reflect company policy. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+The "plus3pt" after the setting of "0pt" means that up to 3 points
+additional space may be added before each paragraph, if this space is needed
+to fill out a page when using \normalbottom. If the \paragraphskip is set
+to "minus1pt", it implies that up to 1 point may be subtracted before each
+
+paragraphs if needed to fill out a page when using \normalbottom. Since the
+leading is usually only 2 points more than the size of the type, the "minus"
+value should not be more than 1 point.
+ If you are using \monospace, it is best to specify the units in blank
+lines. For example,
+
+\paragraphskip{1\bl}
+
+There are 6 \bl in an inch with \monospace.
diff --git a/macros/text1/cms_help_files/qquad.helpmark b/macros/text1/cms_help_files/qquad.helpmark
new file mode 100644
index 0000000000..31d6772c21
--- /dev/null
+++ b/macros/text1/cms_help_files/qquad.helpmark
@@ -0,0 +1,39 @@
++-----------------------------------------------------------------------------+
+| qquad |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \qquad markup leaves two quads of space. It is two em spaces in the
+current type size. It can be used in text, "as is," or math mode.
+
+ ã|Example:ã%
+\tat{Surface Land Temperature (degrees C)\lbr
+Changes after Nuclear Exchanges}
+\vs{6pt}
+\settabs\+\qquad&number\qquad&number\qquad
+\+&number\qquad&number\qquad&10,000&\cr
+\+&1000&-22&8&7&13\cr
+
+\+&3000&9&6&8&10\cr
+
++-----------------------------------------------------------------------------+
+| |
+| Table 1 |
+| Surface Land Temperature (degrees C) |
+| Changes after Nuclear Exchanges |
+| |
+| |
+| 1000 -22 8 7 13 |
+| 3000 9 6 8 10 |
+| |
++-----------------------------------------------------------------------------+
+
+
+ ã|Notes:ã%
+
+\qquad=\horizontalspace{2em}=\quad\quad. In \twelvept, \qquad approximately
+24 points; in \tenpt, \qquad approximately 20 points.
diff --git a/macros/text1/cms_help_files/quad.helpmark b/macros/text1/cms_help_files/quad.helpmark
new file mode 100644
index 0000000000..ffd0b320b0
--- /dev/null
+++ b/macros/text1/cms_help_files/quad.helpmark
@@ -0,0 +1,40 @@
++-----------------------------------------------------------------------------+
+| quad |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+A printer's quad of space used to be a blank square of type, 1 em high and
+1 em wide, equivalent in size to a capital "M." A TEXT1 quad is a unit of
+horizontal space. It is one em space in the current type size. The \quad
+markup can be used in text, "as is," and math mode.
+
+ ã|Example:ã%
+Consider the input for this table:
+
+\tat{Surface Land Temperature (degrees C)\lbr
+Changes after Nuclear Exchanges}
+\vs{6pt}
+
+\settabs\+\quad&number\quad&number\quad
+\+&number\quad&number\quad&number&\cr
+\+&1000&-22&8&7&13\cr
+\+&3000&9&6&8&10\cr
+
++-----------------------------------------------------------------------------+
+| |
+| Table 1 |
+| Surface Land Temperature (degrees C) |
+| Changes after Nuclear Exchanges |
+| |
+| 1000 -22 8 7 13 |
+| 3000 9 6 8 10 |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+\quad=\horizontalspace{1em}. In \twelvept, \quad approximately 12 points;
+in \tenpt, \quad approximately 10 points.
diff --git a/macros/text1/cms_help_files/raggedbo.helpmark b/macros/text1/cms_help_files/raggedbo.helpmark
new file mode 100644
index 0000000000..ab947ecb1e
--- /dev/null
+++ b/macros/text1/cms_help_files/raggedbo.helpmark
@@ -0,0 +1,16 @@
++-----------------------------------------------------------------------------+
+| raggedbottom |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+By default, TEXT1 tries to make the top and bottom of each page of text line
+up. If you are not concerned with having the bottom of each page line up,
+you can enter \raggedbottom. If you have specified \raggedbottom and you
+want to go back to the default, enter \normalbottom.
+
+ ã|Notes:ã%
+Refer to The TEXbook for more on this markup.
diff --git a/macros/text1/cms_help_files/resume.helpmode b/macros/text1/cms_help_files/resume.helpmode
new file mode 100644
index 0000000000..4ffcb945d8
--- /dev/null
+++ b/macros/text1/cms_help_files/resume.helpmode
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Models |
++-----------------------------------------------------------------------------+
+
+Theã|RESUMEã%model is a general resume model. It is a template. You may modify
+it, but it is recommended you check with the Information Center first.
diff --git a/macros/text1/cms_help_files/rff.helpmark b/macros/text1/cms_help_files/rff.helpmark
new file mode 100644
index 0000000000..22999b573a
--- /dev/null
+++ b/macros/text1/cms_help_files/rff.helpmark
@@ -0,0 +1,129 @@
++-----------------------------------------------------------------------------+
+| runningheadformat |
++-----------------------------------------------------------------------------+
+
+\runningfootformat{
+ \bothpages{\vs{1\bl}
+ \line{\twelvept\rm\lft{}
+ \ctr{}\rt{}}}
+ }
+
+Abbreviation: ã|\rffã%
+
+Parameters: ã|submarkupã%
+
+Submarkup: ã|\bothpages, \evenpages, \oddpagesã%
+
+ ã|Description:ã%
+The \runningfootformat markup provides running titles at the bottom of all
+pages except the title page. The default running bottom title for TEXT1 is
+blank.
+
+\bothpages is used to place the same running foot at the bottom of both the
+even and odd pages. The \line markup defines a single title line. Within
+it, you may center, left align, or right align text, using the submarkup
+\ctr, \lft, or \rt. Besides \line, you may also use markup such as \hrule
+and \verticalspace.
+
+\evenpages is used to place the same running foot at the bottom of each
+even page. The \line markup defines a single title line. Within it,
+you may center, left align, or right align text, using the submarkup \ctr,
+\lft, or \rt. Besides \line, you may also use markup such as \hrule and
+\verticalspace.
+
+\oddpages is used to place the same running foot at the bottom of each
+odd page. The \line markup defines a single title line. Within it, you
+may center, left align, or right align text, using the submarkup \ctr,
+\lft, or \rt. Besides \line, you may also use markup such as \hrule and
+\verticalspace.
+
+ ã|Example:ã%
+This example prints the date and author's initials at the bottom of each
+page.
+
+\runningfootformat{
+ \bothpages{\vs{18pt}
+ \line{\rm\lft{\today}\ctr{}\rt{JNP}}
+ }
+ }
+
+which produces a running foot as illustrated on the next page.
+
++-----------------------------------------------------------------------------+
+| |
+| January 13, 1987 JNP |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+This example illustrates the use of odd and even page layout with two lines.
+The page number alternates sides so that it appears on the outside of the
+page. The title appears above the subtitle on even pages. The author's
+name appears above the journal name on odd pages.
+
+\runningfootformat{
+ \evenpages{\line{\lft{\pagenumber}
+ \rt{Sociogeology}}
+ \vs{2pt}}
+ \line{\rt{A New Science}}
+ \vs{\bl}}
+ \oddpages{\line{\lft{A. Chert}
+ \rt{\pagenumber}}
+
+ \vs{2pt}}
+ \line{\lft{SPP---UP}}
+ \vs{\bl}}
+ }
+
+which produces on even page numbers a running foot that looks like:
+
++-----------------------------------------------------------------------------+
+| |
+| 22 Sociogeology |
+| A New Science |
+| |
++-----------------------------------------------------------------------------+
+
+and produces on odd page numbers a running foot that looks like:
+
++-----------------------------------------------------------------------------+
+| |
+| A. Chert 11 |
+| SPP---UP |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+An empty \lft, \ctr, or \rt may be omitted as was done in the above example.
+ A construct such as,
+
+\rff{\bothpages{
+ \line{\lft{page \pn}\ctr{\today}
+ \rt{PNW Waterfalls}}}}
+
+will not print the date centered on the page:
+
++-----------------------------------------------------------------------------+
+| |
+| page 7 January 13, 1987 PNW Waterfalls |
+| |
++-----------------------------------------------------------------------------+
+
+To accomplish this, you should print the left and right justified text with
+\line, then space backwards one line (\verticalspace{-\bl}), then center the
+date:
+
+\rff{\bothpages{\line{\lft{page \pn}
+
+ \rt{PNW Waterfalls}}}
+ \vs{-\bl}
+ \line{\ctr{\today}}}
+
++-----------------------------------------------------------------------------+
+| |
+| page 8 January 13, 1987 PNW Waterfalls |
+| |
++-----------------------------------------------------------------------------+
+
+ The \runningfootformat markup must come after the \monospace markup, if
+both are used.
diff --git a/macros/text1/cms_help_files/rhf.helpmark b/macros/text1/cms_help_files/rhf.helpmark
new file mode 100644
index 0000000000..28f4ce697f
--- /dev/null
+++ b/macros/text1/cms_help_files/rhf.helpmark
@@ -0,0 +1,115 @@
++-----------------------------------------------------------------------------+
+| runningheadformat |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\rhfã%
+
+Parameters: ã|submarkupã%
+
+Submarkup: ã|\bothpages, \evenpages, \oddpagesã%
+
+ ã|Description:ã%
+The \runningheadformat markup provides running titles at the top of all
+pages except the title page. The default running top title for TEXT1 is a
+right justified page number.
+
+ã|bothpagesã% is used to place the same running head at the top of both the
+even and odd pages. The \line markup defines a single title line. Within
+it, you may center, left align, or right align text, using the submarkup
+\ctr, \lft, or \rt. Besides \line, you may also use markup such as \hrule
+and \verticalspace.
+
+ã|evenpagesã% is used to place the same running head at the top of each
+even page. The \line markup defines a single title line. Within it,
+you may center, left align, or right align text, using the submarkup \ctr,
+\lft, or \rt. Besides \line, you may also use markup such as \hrule and
+\verticalspace.
+
+ã|oddpagesã% is used to place the same running head at the top of each
+odd page. The \line markup defines a single title line. Within it, you
+may center, left align, or right align text, using the submarkup \ctr,
+\lft, or \rt. Besides \line, you may also use markup such as \hrule and
+\verticalspace.
+
+ ã|Example:ã%
+To customize running titles, you modify the \runningheadformat for the top
+titles and the \runningfootformat for bottom titles. In this example,
+"Sociogeology" and a page number are placed at the top of every page.
+
+\runningheadformat{\bothpages{\it
+ \line{\lft{Sociogeology}\ctr{}\rt{\pn}}
+ \vs{2pt}
+ \hrule
+ \verticalspace{18pt}
+ }
+}
+
++-----------------------------------------------------------------------------+
+| |
+| Sociogeology 1 |
+| ........................................................................... |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+This example alternates the author's name and page number at the top of even
+and odd pages. It complements the last example on the previous page.
+
+\rhf{\evenpages{\vs{\bl}
+ \line{\lft{Chert}}}
+ \oddpages{\vs{\bl}
+ \line{\rt{\pagenumber}}}
+ }
+
+Even pages will look like:
+
++-----------------------------------------------------------------------------+
+| |
+| Chert |
+| |
++-----------------------------------------------------------------------------+
+
+Odd pages will look like:
+
++-----------------------------------------------------------------------------+
+| |
+| 4 |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+An empty \lft, \ctr, or \rt may be omitted as was done in the above example.
+ A construct such as,
+
+\rhf{\bothpages{
+ \line{\lft{page \pn}\ctr{\today}
+ \rt{PNW Waterfalls}}}}
+
+will not print the date centered on the page:
+
++-----------------------------------------------------------------------------+
+| |
+| page 6 February 5, 1987 PNW Waterfalls |
+| |
++-----------------------------------------------------------------------------+
+
+To accomplish this, you should print the left and right justified text with
+\line, then space backwards one line (\verticalspace{-\bl}), then center the
+date:
+
+\rhf{\bothpages{\line{\lft{page \pn}
+
+ \rt{PNW Waterfalls}}}
+ \vs{-\bl}
+ \line{\ctr{\today}}}
+
++-----------------------------------------------------------------------------+
+| |
+| page 7 February 5, 1987 PNW Waterfalls |
+| |
++-----------------------------------------------------------------------------+
+
+ The \runningheadformat markup must come after the \monospace markup, if
+both are used.
+ If you want no page numbers, then enter the following:
+
+\runningheadformat{\bothpages{}}
diff --git a/macros/text1/cms_help_files/rin.helpmark b/macros/text1/cms_help_files/rin.helpmark
new file mode 100644
index 0000000000..bed41f21f2
--- /dev/null
+++ b/macros/text1/cms_help_files/rin.helpmark
@@ -0,0 +1,79 @@
++-----------------------------------------------------------------------------+
+| rightindent |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\rinã%
+
+Parameters: ã|units of measurementã%
+
+ ã|Description:ã%
+The \rightindent markup adds (or subtracts) the amount from the current
+right margin (default is zero). The indentation remains until another
+\rightindent overrides it. This markup causes a break in text.
+
+ ã|Example:ã%
+
+Humans also require trace amounts of manganese,
+zinc, selenium, and copper, appearing in suitable
+proportions.
+\vs{50pt}
+\lin{1in}
+
+\rightindent{1.5in}
+{\bd Figure 2}.
+Physiognomic similarities between the earth and
+human beings.
+\rightindent{-1.5in}
+\lin{0in}
+\vs{10pt}
+Most elemental abundances are the same in the
+lithosphere and the anthrosphere.
+
++-----------------------------------------------------------------------------+
+| |
+| Humans also require trace amounts of manganese, zinc, selenium, and |
+| copper, appearing in suitable proportions. |
+| |
+| Figure 2. Physiognomic similarities between |
+| the earth and human beings. |
+| |
+| Most elemental abundances are the same in the lithosphere and the |
+| anthrosphere. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+The previous example could have used grouping as illustrated below and the
+same output would have been generated. If you do grouping, be sure there is
+a \paragraph markup before the closing right curly brace of the group.
+
+Humans also require trace amounts of manganese,
+zinc, selenium, and copper, appearing in suitable
+proportions.
+\vs{50pt}
+{\lin{1in}
+\rightindent{1.5in}
+{\bd Figure 2}.
+Physiognomic similarities between the earth and
+human beings.
+\par
+}
+\vs{10pt}
+Most elemental abundances are the same in the
+lithosphere and the anthrosphere.
+
++-----------------------------------------------------------------------------+
+| |
+| Humans also require trace amounts of manganese, zinc, selenium, and |
+| copper, appearing in suitable proportions. |
+| |
+| Figure 2. Physiognomic similarities between |
+| the earth and human beings. |
+| |
+| Most elemental abundances are the same in the lithosphere and the |
+| anthrosphere. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+none.
diff --git a/macros/text1/cms_help_files/rl.helpmark b/macros/text1/cms_help_files/rl.helpmark
new file mode 100644
index 0000000000..92e51079b0
--- /dev/null
+++ b/macros/text1/cms_help_files/rl.helpmark
@@ -0,0 +1,29 @@
++-----------------------------------------------------------------------------+
+| rightline |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\rlã%
+
+Parameters: ã|text to be right justifiedã%
+
+ ã|Description:ã%
+The \rightline markup right justifies individual lines. This markup ends
+the previous paragraph. The only parameter for this markup is text.
+
+ ã|Example:ã%
+yet some of the reviews of "Sociogeology" have
+been mixed, especially from academics.
+\rightline{This theory is 'on the rocks.'}
+\rl{\it Clay Gneiss}
+
++-----------------------------------------------------------------------------+
+| |
+| yet some of the reviews of "Sociogeology" have been mixed, especially from |
+| academics. |
+| This theory is 'on the rocks.' |
+| Clay Gneiss |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+none.
diff --git a/macros/text1/cms_help_files/rlb.helpmark b/macros/text1/cms_help_files/rlb.helpmark
new file mode 100644
index 0000000000..4d714ff65a
--- /dev/null
+++ b/macros/text1/cms_help_files/rlb.helpmark
@@ -0,0 +1,35 @@
++-----------------------------------------------------------------------------+
+| rightlinesbegin |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\rlbã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \rightlinesbegin markup begins right justifying all following lines.
+Vertical spacing and font changes are the only markup permitted after it.
+There are no parameters or markup options. End a \rightlinesbegin with a
+matching \rightlinesend.
+
+ ã|Example:ã%
+
+\rightlinesbegin
+This theory is 'on the rocks.'
+{\it Clay Gneiss}
+\rightlinesend
+
++-----------------------------------------------------------------------------+
+| |
+| This theory is 'on the rocks.' |
+| Clay Gneiss |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+Each \rightlinesbegin must be followed by a matching \rightlinesend.
+ You cannot use \rightlinesbegin within any of the following markup:
+\appendim, \autofootnote, \bibliography, \centerline, \chapter, \drawbox,
+\figure, \footnote, \item, \label, \marginnote, \paragraphbox, \part,
+\preface, \rightline, \runningheadformat, \runningfootformat, \subheada,
+\subheadb, \subheadc, \subheadd, or \tabletitle.
diff --git a/macros/text1/cms_help_files/rle.helpmark b/macros/text1/cms_help_files/rle.helpmark
new file mode 100644
index 0000000000..4c4ec76858
--- /dev/null
+++ b/macros/text1/cms_help_files/rle.helpmark
@@ -0,0 +1,28 @@
++-----------------------------------------------------------------------------+
+| rightlinesend |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\rleã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \rightlinesend markup ends lines that are being right justified with
+\rightlinesbegin. This markup causes a paragraph break.
+
+ ã|Example:ã%
+
+\rightlinesbegin
+This theory is 'on the rocks.'
+{\it Clay Gneiss}
+\rightlinesend
+
++-----------------------------------------------------------------------------+
+| |
+| This theory is 'on the rocks.' |
+| Clay Gneiss |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+Each \rightlinesbegin must be followed by a matching \rightlinesend.
diff --git a/macros/text1/cms_help_files/rm.helpmark b/macros/text1/cms_help_files/rm.helpmark
new file mode 100644
index 0000000000..de8ed390f8
--- /dev/null
+++ b/macros/text1/cms_help_files/rm.helpmark
@@ -0,0 +1,41 @@
++-----------------------------------------------------------------------------+
+| roman |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\rmã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+Roman is a medium-weight type good for reading. It is the default face for
+TEXT1. It is usually specified as the default font at the beginning of a
+paper, so that it will be in effect for most of the paper. Roman can also
+be used to terminate the use of a special typeface, such as italic or bold.
+
+ ã|Example:ã%
+
+\twelvept
+\italic now! \roman It is important to realize
+\it the facts!
++-----------------------------------------------------------------------------+
+| |
+| now! It is important to realize the facts! |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+This example is the same as the one above, except that grouping was used to
+change from the roman font back to italics.
+
+\tenpt
+\italic now! {\roman It is important to realize}
+the facts!
+
++-----------------------------------------------------------------------------+
+| |
+| now! It is important to realize the facts! |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+none.
diff --git a/macros/text1/cms_help_files/rr.helpmark b/macros/text1/cms_help_files/rr.helpmark
new file mode 100644
index 0000000000..af80dc37cf
--- /dev/null
+++ b/macros/text1/cms_help_files/rr.helpmark
@@ -0,0 +1,47 @@
++-----------------------------------------------------------------------------+
+| rightragged |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\rrã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \rightragged markup turns off right justification. If you only want
+to right justify a certain section of the document, then you would use a
+combination of the \justify and \rightragged markup.
+
+ ã|Example:ã%
+
+\rightragged
+The comparison may seem facile, but from deliberate
+oversimplification comes complex obfuscation and
+general theoretification.
+Behavioral research will lead in this direction, as
+
+the general theory of Sociogeology predicts the . . .
+\justify
+Humans exhibit metamorphic behavior over time or at high
+temperatures, fever, for instance.
+Metamorphic crystallization involves low . . .
+
++-----------------------------------------------------------------------------+
+| |
+| The comparison may seem facile, but from deliberate oversimplification |
+| comes complex obfuscation and general theoretification. Behavioral |
+| research will lead in this direction, as the general theory of |
+| Sociogeology predicts the . . . |
+| Humans exhibit metamorphic behavior over time or at high temperatures, |
+| fever, for instance. Metamorphic crystallization involves low . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+
+The default values for space skips is listed below. When you are using
+\monospace you get the values in the right column.
+
+ Composing Printers Typewriter Printers
+ \rightskip plus 1fil plus 10em
+ \spaceskip .35em 1em
+ \xspaceskip .55em 1em
diff --git a/macros/text1/cms_help_files/rule.helpmark b/macros/text1/cms_help_files/rule.helpmark
new file mode 100644
index 0000000000..71a72ad0a7
--- /dev/null
+++ b/macros/text1/cms_help_files/rule.helpmark
@@ -0,0 +1,48 @@
++-----------------------------------------------------------------------------+
+| rule |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \rule markup skips a blank line and draws a horizontal line (rule).
+Rules are used to separate material, such as tables or sections. No extra
+vertical space is skipped after the rule, so you may need to add some with
+\vs.
+
+ ã|Example:ã%
+
+\tabletitle{Elements of the Spheres}
+\rule
+\vs{6pt}
+\tabskip 3em plus 3em minus 1em
+\halign{\lft{#}&&\rt{#}\hs{20pt}\cr
+
+Element&\omit\ctr{Anthrosphere}&\omit\ctr{Lithosphere}\cr
+Oxygen&62.1\phantom{0}&60.6\phantom{0}\cr
+Hydrogen&1.1\phantom{0}&0.1\phantom{0}\cr
+Aluminum&0.22&11.54\cr}
+\rule
+\vs{6pt}
+\nin Most elemental abundances are the same in the . . .
++-----------------------------------------------------------------------------+
+| |
+| |
+| Table 1 |
+| Elements of the Spheres |
+| |
+| ........................................................................... |
+| |
+| Element Anthrosphere Lithosphere |
+| Oxygen 62.1 60.6 |
+| Hydrogen 1.1 0.1 |
+| Aluminum 0.22 11.54 |
+| ........................................................................... |
+| Most elemental abundances are the same in the . . . |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+If you want a rule of a different height, depth, or width than illustrated
+with \rule and if you are not using \monospace, then use \hrule.
diff --git a/macros/text1/cms_help_files/runfoot.helpbloc b/macros/text1/cms_help_files/runfoot.helpbloc
new file mode 100644
index 0000000000..259d368dcb
--- /dev/null
+++ b/macros/text1/cms_help_files/runfoot.helpbloc
@@ -0,0 +1,8 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|RUNFOOTã%block is to be selected if you want to modify the
+\runningfootformat which is carried at the bottom of every page
+except the title page.
diff --git a/macros/text1/cms_help_files/runhead.helpbloc b/macros/text1/cms_help_files/runhead.helpbloc
new file mode 100644
index 0000000000..0dd2248ba3
--- /dev/null
+++ b/macros/text1/cms_help_files/runhead.helpbloc
@@ -0,0 +1,8 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|RUNHEADã%block is to be selected if you want to modify the
+\runningheadformat which is carried at the top of every page
+except the title page.
diff --git a/macros/text1/cms_help_files/san.helpmark b/macros/text1/cms_help_files/san.helpmark
new file mode 100644
index 0000000000..05b9299a2c
--- /dev/null
+++ b/macros/text1/cms_help_files/san.helpmark
@@ -0,0 +1,25 @@
++-----------------------------------------------------------------------------+
+| setappendixnumber |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\sanã%
+
+Parameters: ã|previous appendix numberã%
+
+ ã|Description:ã%
+The appendix number will be automatically incremented by one for each
+use of \appendix. The appendix number can be reset by inserting the
+\setappendixnumber markup before the next occurrence of \appendix.
+
+ ã|Example:ã%
+By default, the first appendix is number 1. If you want to start with
+appendix 5, you would enter:
+
+\setappendixnumber{4}
+\appendix{Title of the fifth appendix}
+
+
+
+ ã|Notes:ã%
+The number specified in the \setappendixnumber parameter is the previous
+appendix number, not the next appendix number.
diff --git a/macros/text1/cms_help_files/sau.helpmark b/macros/text1/cms_help_files/sau.helpmark
new file mode 100644
index 0000000000..24ce71ea8b
--- /dev/null
+++ b/macros/text1/cms_help_files/sau.helpmark
@@ -0,0 +1,44 @@
++-----------------------------------------------------------------------------+
+| sameauthor |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\sauã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \sameauthor markup allows you to substitute a standard rule for an
+author's name for multiple references in a bibliography. The default rule
+is 3 em spaces wide; the default width may be changed in \bibliographyformat
+markup.
+
+ ã|Example:ã%
+\bibliography{References Cited}
+\frenchspacing
+\bibentry
+Roszak, T. 1972. {\it Where the Wasteland Ends}.
+New York: Harper \& Row.
+
+\bie
+Weldon, S. 1971. {\it Waging Peace}.
+Wilmington: M. \&\ R. Wolfe, Limited.
+\bie
+\sameauthor 1983. {\it The Metaindustry: War and
+Economic Development}.
+Los Angeles: Thompson Books.
+
++-----------------------------------------------------------------------------+
+| |
+| References Cited |
+| |
+| Roszak, T. 1972. Where the Wasteland Ends. New York: Harper & Row. |
+| |
+| Weldon, S. 1971. Waging Peace. Wilmington: M. & R. Wolfe, Limited. |
+| |
+| ....1983. The Metaindustry: War and Economic Development. Los Angeles: |
+| Thompson Books. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+none.
diff --git a/macros/text1/cms_help_files/scn.helpmark b/macros/text1/cms_help_files/scn.helpmark
new file mode 100644
index 0000000000..08b572cb2d
--- /dev/null
+++ b/macros/text1/cms_help_files/scn.helpmark
@@ -0,0 +1,25 @@
++-----------------------------------------------------------------------------+
+| setchapternumber |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\scnã%
+
+Parameters: ã|previous chapter numberã%
+
+ ã|Description:ã%
+The chapter number will be automatically incremented by one for each use of
+\chapter. The chapter number can be reset by inserting the \setchapternum-
+ber markup before the next occurrence of \chapter.
+
+ ã|Example:ã%
+By default, the first chapter is number 1. If you want to start with
+chapter 5, you would enter:
+
+\setchapternumber{4}
+\chapter{Title of the fifth chapter}
+
+
+
+ ã|Notes:ã%
+The number specified in the \setchapternumber parameter is the previous
+chapter number, not the next chapter number.
diff --git a/macros/text1/cms_help_files/senn.helpmark b/macros/text1/cms_help_files/senn.helpmark
new file mode 100644
index 0000000000..b032b8a8d9
--- /dev/null
+++ b/macros/text1/cms_help_files/senn.helpmark
@@ -0,0 +1,37 @@
++-----------------------------------------------------------------------------+
+| setendnotenumber |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\sennã%
+
+Parameters: ã|previous endnote numberã%
+
+ ã|Description:ã%
+The endnote number will be automatically incremented by one for each
+use of \autoendnote. The endnote number can be reset by adding the
+\setendnotenumber markup before the next occurrence of an \autoendnote.
+
+ ã|Example:ã%
+By default, endnote numbers are reset in parts. If you also want them reset
+in chapters, you could modify the \chapterformat by adding \setendnotenumber
+to the \titleformat:
+
+\chapterformat{\numberingstyle{1}
+ \titleformat{\dumpinsertseject
+ \cl{\twelvept\bd Chapter \chapternumber}
+
+ \cl{\twelvept\bd \chaptertitle}
+ \vs{1\bl}
+ \setendnotenumber{0}
+ \setsubheadanumber{0}
+ \setsubheadbnumber{0}
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}}
+ \incontents{yes}}
+
+ ã|Notes:ã%
+The number specified in the \setendnotenumber parameter is the previous
+endnote number, not the next endnote number. If you want the next
+\autoendnote to be endnote 90, then specify
+
+\setendnotenumber{89}
diff --git a/macros/text1/cms_help_files/settabs.helpmark b/macros/text1/cms_help_files/settabs.helpmark
new file mode 100644
index 0000000000..53b535a5e6
--- /dev/null
+++ b/macros/text1/cms_help_files/settabs.helpmark
@@ -0,0 +1,151 @@
++-----------------------------------------------------------------------------+
+| settabs |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|number of columnsã%
+
+ ã|Description:ã%
+The body of the table is created with the \settabs n \columns markup, which
+establishes a number (n) of equal-size tabular columns (\columns).
+ Each new column after the first is indicated with the TEXT1 tab
+character (&). Each row is started with the \+ markup and ended with the
+\cr markup (which is an abbreviation for carriage return on typewriters).
+ The ampersand (&) is like the TAB key on many typewriters; it tells
+TEXT1 to advance to the next tab position, where there is a tab at the right
+edge of each column. But & is not exactly like a mechanical typewriter
+TAB, because it first backs up to the beginning of the current column
+before advancing to the next. In this way you can always tell what column
+you are tabbing to, by counting the number of &s; that is handy, because
+
+variable-width type otherwise makes it difficult to know whether you have
+passed a tab position.
+ The ampersands are different from tabs in another way, too: TEXT1
+ignores spaces after &, hence you can conveniently finish a column by typing
+& at the end of a line in your input file, without worrying that an extra
+blank space will be introduced there. Incidentally, TEXT1 also ignores
+spaces after \+, so that the first column is treated like the others.
+ You can say \cr before you have specified a complete set of columns, if
+the remaining columns are blank. The last \cr ends the settabs. No other
+ending is necessary; normal text may follow.
+
+ ã|Example:ã%
+
+can be seen, the pool of common words is prodigious.
+\par
+\tabletitle{Etymological Clues}
+\settabs 3 \columns
+\+\it Term&\it Geological&\it Social Reference\cr
+\+boss&small rock&supervisor\cr
+\+domehead&pushing through&intellectual\cr
+\+fossil&turned to stone&age\cr
+\+creep&move slowly&person\cr
+\+streak&move quickly&naked\cr
+\+ejecta&very quickly&mating\cr
+\+sublimate&change to gas&dream\cr
+\+trench&sediments&mouth\cr
+
++-----------------------------------------------------------------------------+
+| |
+| can be seen, the pool of common words is prodigious. |
+| |
+| Table 1 |
+| Etymological Clues |
+| |
+| Term Geological Social Reference |
+| boss small rock supervisor |
+| domehead pushing through intellectual |
+| fossil turned to stone age |
+| creep move slowly person |
+| streak move quickly naked |
+| ejecta very quickly mating |
+| sublimate change to gas dream |
+| trench sediments mouth |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+You may not want all of the columns to be the same size, so there is another
+way to set them, by typing "\+sample line\cr" immediately after \settabs.
+In this case tabs are placed at the positions of the &s in the sample line,
+but the sample line itself does not appear in the output. Look through
+the table and determine the biggest entry in each column; the sample line
+is then constructed by typing the widest entry in the first column, then
+the widest in each subsequent column, omitting the last column. Be sure to
+include some extra space (\horizontalspace{}) between columns in the sample
+line, so that the columns won't touch each other.
+
+can be seen, the pool of common words is prodigious.
+\par
+\tabletitle{Etymological Clues}
+\settabs\+\hs{4pt}&domeheads\hs{4pt}
+ &material pushing through
+ \hs{10pt}&Intellectual\cr
+\+&\it Term&\it Geological&\it Social Reference\cr
+\+&trench&subducted sediments&mouth\cr
+
+\+&dike&material holding back&female\cr
+\+&domehead&material pushing through&intellectual\cr
+\+&fossil&life turned to stone&age\cr
+\+&cleavage&the tendency to split&bosom\cr
+
++-----------------------------------------------------------------------------+
+| |
+| can be seen, the pool of common words is prodigious. |
+| |
+| Table 2 |
+| Etymological Clues |
+| |
+| Term Geological Social Reference |
+| trench subducted sediments mouth |
+| dike material holding back female |
+| domehead material pushing through intellectual |
+| fossil life turned to stone age |
+| cleavage the tendency to split bosom |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+If you want to put something right justified (flush right) in its column,
+just type \rt{text} where text is the text to be right justified; Be sure
+to type & after it, so that TEX will be sure to move the information all
+the way until it touches the next tab. Similarly, if you want to center
+something in its column, type \ctr{text} where text is the text to be
+centered. Notice also the use of \phantom in decimal alignment.
+
+ \centerline{\bd Table 1}
+ \centerline{Etymological Clues}
+ \settabs \+\hs{20pts}&Aluminum\quad&Anthrosphere&
+ \hs{20pt}&Lithosphere\quad\cr
+ \+&\lft{Element}&\rt{Anthrosphere}&
+ &\rt{Lithosphere}&\cr
+ \+&Sodium&\rt{0.001\phantom{0}}&&\rt{0.4\phantom{000}}\cr
+ \+&Silicon&\rt{.0001}&&\rt{20.2\phantom{000}}\cr
+ \+&Aluminum&\rt{0.22\phantom{00}}&&
+ \rt{11.54\phantom{00}}\cr
+ \+&Carbon&\rt{19.1001}&&\rt{0.0202}\cr
+
+ \+&Nitrogen&\rt{3.2205}&&\rt{.0208}\cr
+
++-----------------------------------------------------------------------------+
+| |
+| Table 1 |
+| Etymological Clues |
+| Element Anthrosphere Lithosphere |
+| Sodium 0.001 0.4 |
+| Silicon .0001 20.2 |
+| Aluminum 0.22 11.54 |
+| Carbon 19.1001 0.0202 |
+| Nitrogen 3.2205 .0208 |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+
+Tab positions are remembered, until they are reset with another \settabs,
+regardless of text and other markup following.
+ The operation of tabs addresses one line at a time; this allows multiple
+page tables.
+ You cannot use \figure, \drawbox or \paragraphbox around a \settabs.
+ Refer to The TEXbook for more on \phantom.
diff --git a/macros/text1/cms_help_files/sfn.helpmark b/macros/text1/cms_help_files/sfn.helpmark
new file mode 100644
index 0000000000..0c3ef81afc
--- /dev/null
+++ b/macros/text1/cms_help_files/sfn.helpmark
@@ -0,0 +1,37 @@
++-----------------------------------------------------------------------------+
+| setfigurenumber |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\sfnã%
+
+Parameters: ã|previous figure numberã%
+
+ ã|Description:ã%
+The figure number will be automatically incremented by one for each use of
+\figure. The figure number can be reset by adding the \setfigurenumber
+markup before the next occurrence of \figure.
+
+ ã|Example:ã%
+By default, figure numbers are reset in parts. If you also want them reset
+in chapters, you could modify the \chapterformat by adding \setfigurenumber
+to the \titleformat:
+
+\chapterformat{\numberingstyle{1}
+ \titleformat{\dumpinsertseject
+ \cl{\twelvept\bd Chapter \chapternumber}
+
+ \cl{\twelvept\bd \chaptertitle}
+ \vs{1\bl}
+ \setfigurenumber{0}
+ \setsubheadanumber{0}
+ \setsubheadbnumber{0}
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}}
+ \incontents{yes}}
+
+ ã|Notes:ã%
+The number specified in the \setfigurenumber parameter is the previous
+figure number, not the next figure number. If you want the next \figure to
+be Figure 90, then specify
+
+\setfigurenumber{89}
diff --git a/macros/text1/cms_help_files/sfnn.helpmark b/macros/text1/cms_help_files/sfnn.helpmark
new file mode 100644
index 0000000000..369f764e65
--- /dev/null
+++ b/macros/text1/cms_help_files/sfnn.helpmark
@@ -0,0 +1,39 @@
++-----------------------------------------------------------------------------+
+| setfootnotenumber |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\sfnnã%
+
+Parameters: ã|previous footnote numberã%
+
+ ã|Description:ã%
+The footnote number will be automatically incremented by one for each
+use of \autofootnote. The footnote number can be reset by adding the
+\setfootnotenumber markup before the next occurrence of an autofootnote.
+
+ ã|Example:ã%
+By default, footnote numbers are reset in parts. If you also want
+them reset in chapters, you could modify the \chapterformat by adding
+\setfootnotenumber to the \titleformat:
+
+\chapterformat{\numberingstyle{1}
+ \titleformat{\dumpinsertseject
+ \cl{\twelvept\bd Chapter \chapternumber}
+
+ \cl{\twelvept\bd \chaptertitle}
+ \vs{1\bl}
+ \setfootnotenumber{0}
+ \setsubheadanumber{0}
+ \setsubheadbnumber{0}
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}}
+ \incontents{yes}}
+
+ ã|Notes:ã%
+The number specified in the \setfootnotenumber parameter is the previous
+footnote number, not the next footnote number. If you want the next
+\autofootnote to be footnote 90, then specify
+
+\setfootnotenumber{89}
+
+ The \setfootnotenumber markup has no effect on the \footnote markup.
diff --git a/macros/text1/cms_help_files/sfs.helpmark b/macros/text1/cms_help_files/sfs.helpmark
new file mode 100644
index 0000000000..241c41268b
--- /dev/null
+++ b/macros/text1/cms_help_files/sfs.helpmark
@@ -0,0 +1,79 @@
++-----------------------------------------------------------------------------+
+| selectfontset |
++-----------------------------------------------------------------------------+
+
+\selectfontset{cm12}{twelvept}{14pt}
+\selectfontset{cm10}{tenpt}{12pt}
+\twelvept
+
+Abbreviation: ã|\sfsã%
+
+Parameters: ã|catalog name, user's reference, leadingã%
+
+ ã|Description:ã%
+For a typical document, you will need both a font set and a math set.
+The default font set selections consist of two sets for composing printers:
+\twelvept for the 12 point size Computer Modern serif typestyle; and \tenpt
+for the 10 point Computer Modern serif typestyle. Typically, the \select-
+fontset markup is placed in the front of your document. The format of this
+markup is
+
+\selectfontset{catalog name}{user's reference name}{leading between lines}
+
+where catalog name is the system name for that font set. (Complete lists
+of the catalog names can be found by going to the TEXT1 help menu, or by
+looking in the Font Catalogs.) The user's reference is a name of your own
+devising. This name, when prefaced with a backslash will give you access to
+that font set. The leading is the interlineskip specification.
+ Users of typewriter printers use different \selectfontset markup, which
+offers "standard", "underscore" (for italic), and "bold" monospaced faces.
+These are the only fonts available to such printers.
+ Each font set includes the following nine faces, each of which is called
+by adding a backslash in front of the name, or using the abbreviation:
+\roman (\rm), \bold (\bd), \italic (\it), \typewriter (\tt), \caps (\cc),
+\mathitalic (\mi), \symbol (\sy), \extension (\ex), and \bolditalic (\bi).
+Not all font sets have all nine faces available. If a particular face is
+not available, a warning message will be printed.
+
+ ã|Example:ã%
+After entering the \selectfontset,
+
+\selectfontset{cm11}{eleven}{default}
+\eleven
+
+each time \eleven is specified, you would be using the Computer Modern font
+set at a 11 point size (cm11). The third parameter ("default") indicates
+that TEXT1 will use the default value for \interlineskip, in this case 13
+points. Then, whenever you switch to bold (\bd) you would get Computer
+Modern bold at a 11 point size. If you were to specify \it you would get
+Computer Modern italic at 11 points.
+
+ ã|Example:ã%
+Consider this example for switching from 9 point to a 8 point size.
+The \eightpoint is set with \interlineskip{9pt} instead of the default
+\interlineskip{10pt}, leaving less space between lines.
+
+\selectfontset{cm9}{ninepoint}{default}
+\selectfontset{cm8}{eightpoint}{9pt}
+\eightpoint
+
+\centerline{\ninepoint\bd Sociogeology}
+\vs{12pt}
+\centerline{\it by Achilles Chert}
+\vs{12pt}
+"Does the absurd dictate death?" asks Albert Camus,
+
++-----------------------------------------------------------------------------+
+| |
+| Sociogeology |
+| |
+| by Achilles Chert |
+| |
+| "Does the absurd dictate death?" asks Albert Camus, |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+Again, not all font sets have all nine faces available. If a particular
+face is not available, a warning message will be printed.
+
diff --git a/macros/text1/cms_help_files/sha.helpmark b/macros/text1/cms_help_files/sha.helpmark
new file mode 100644
index 0000000000..4c5bb98f47
--- /dev/null
+++ b/macros/text1/cms_help_files/sha.helpmark
@@ -0,0 +1,40 @@
++-----------------------------------------------------------------------------+
+| subheada |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\shaã%
+
+Parameters: ã|titleã%
+
+ ã|Description:ã%
+The \subheada markup creates a first level subheading, which skips two
+baselines, prints the title in bold type, then skips one more baseline. It
+does not begin a new page. Its title is placed in the table of contents
+automatically.
+
+ ã|Example:ã%
+more realistic.
+\subheada{Nationalism and War}
+Nationalism is directly related to war.
+Lord Acton observed that . . .
+
+which prints:
+
++-----------------------------------------------------------------------------+
+| |
+| |
+| more realistic. |
+| |
+| |
+| Nationalism and War |
+| |
+| Nationalism is directly related to war. Lord Acton observed that |
+| . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+Use \subheadaformat to change any of the above mentioned defaults.
+ TEXT1 will encourage page breaking before a \subheada. It discourages
+page breaking between the \subheada and the first line of the following
+paragraph.
diff --git a/macros/text1/cms_help_files/shaf.helpmark b/macros/text1/cms_help_files/shaf.helpmark
new file mode 100644
index 0000000000..3cf2d51cd9
--- /dev/null
+++ b/macros/text1/cms_help_files/shaf.helpmark
@@ -0,0 +1,85 @@
++-----------------------------------------------------------------------------+
+| subheadaformat |
++-----------------------------------------------------------------------------+
+
+\subheadaformat{\numberingstyle{1}
+ \titleformat{\removelastskip
+ \goodbreak\vs{2\bl}
+ \twelvept
+ \bd\nin\subheadatitle
+ \par\nobreak
+ \vs{1\bl}\nobreak
+ \setsubheadbnumber{0}
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}}
+ \incontents{yes}
+ }
+
+Abbreviation: ã|\shafã%
+
+Parameters: ã|submarkupã%
+
+Submarkup: ã|\numberingstyle, \titleformat, \incontentsã%
+
+ ã|Description:ã%
+The \subheadaformat markup lets you change the appearance of the subheading
+title. There are three submarkup that control how the \subheada is to
+appear.
+
+ã|\numberingstyleã% by default is 1 which will print the subhead number in
+Arabic numbers. Other possibilities are "A" and "I". By default, subhead
+numbers are not printed, even though the \subheadanumber is incremented.
+
+ã|\titleformat{Nested Markup}ã% is used to describe how the subhead title is
+to be printed. You may use markup such as \newpage, \removelastskip,
+\goodbreak, \nobreak, \verticalspace, and \centerline within \titleformat
+as Nested Markup. Other markup you may use within or outside of
+\subheadaformat:
+
+ * \subheadanumberprints the most recent subheada number.
+
+ * \subheadatitleprints the most recent subheada title.
+
+ã|\incontentsã% places the subheada title by default in the contents (if one is
+printed). Printing in the table of contents can be suppressed by changing
+to "no":
+
+\shaf{\incontents{no}}
+
+ ã|Example:ã%
+Some applications require the subheads to be numbered. For \subheada to
+include a number like "pp.cc-aa" where "pp" is the part number, "cc" is
+the chapter number, and "aa" is the subheada number, you would modify the
+\subheadaformat:
+
+\subheadaformat{\numberingstyle{1}
+ \titleformat{\removelastskip\goodbreak\vs{2\bl}
+ \bd\partnumber.\chapternumber-\subheadanumber
+ \quad\subheadatitle\par
+ \nobreak\vs{1\bl}\nobreak}
+ \incontents{yes}
+}
+
+more realistic.
+\par
+\subheada{Nationalism and War}
+Nationalism is directly related to war.
+Lord Acton observed that . . .
+
+The second subheada in the third chapter of the first part would print as:
+
++-----------------------------------------------------------------------------+
+| |
+| more realistic. |
+| |
+| |
+| 1.3-2 Nationalism and War |
+| |
+| Nationalism is directly related to war. Lord Acton observed that |
+| . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+The \subheadaformat markup must come after the \monospace markup, if both
+are used.
diff --git a/macros/text1/cms_help_files/shb.helpmark b/macros/text1/cms_help_files/shb.helpmark
new file mode 100644
index 0000000000..6c4e302561
--- /dev/null
+++ b/macros/text1/cms_help_files/shb.helpmark
@@ -0,0 +1,40 @@
++-----------------------------------------------------------------------------+
+| subheadb |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\shbã%
+
+Parameters: ã|titleã%
+
+ ã|Description:ã%
+The \subheadb markup creates a second level subheading, which skips two
+baselines, prints the title in italics, then skips one more baseline. It
+does not begin a new page. Its title is placed in the table of contents
+automatically.
+
+ ã|Example:ã%
+more realistic.
+\par
+\subheadb{Nationalism and War}
+Nationalism is directly related to war.
+Lord Acton observed that . . .
+
+which prints:
+
++-----------------------------------------------------------------------------+
+| |
+| more realistic. |
+| |
+| |
+| Nationalism and War |
+| |
+| Nationalism is directly related to war. Lord Acton observed that |
+| . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+Use \subheadbformat to change any of the above mentioned defaults.
+ TEXT1 will encourage page breaking before a \subheadb. It discourages
+page breaking between the \subheadb and the first line of the following
+paragraph.
diff --git a/macros/text1/cms_help_files/shbf.helpmark b/macros/text1/cms_help_files/shbf.helpmark
new file mode 100644
index 0000000000..7c0e27505b
--- /dev/null
+++ b/macros/text1/cms_help_files/shbf.helpmark
@@ -0,0 +1,86 @@
++-----------------------------------------------------------------------------+
+| subheadbformat |
++-----------------------------------------------------------------------------+
+
+\subheadbformat{\numberingstyle{1}
+ \titleformat{\removelastskip
+ \goodbreak\vs{2\bl}
+ \twelvept
+ \it\nin\subheadbtitle
+ \par\nobreak
+ \vs{1\bl}\nobreak
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}}
+ \incontents{yes}
+ }
+
+Abbreviation: ã|\shbfã%
+
+Parameters: ã|submarkupã%
+
+Submarkup: ã|\numberingstyle, \titleformat, \incontentsã%
+
+ ã|Description:ã%
+The \subheadbformat markup lets you change the appearance of the subheading
+title. There are three submarkup that control how the \subheadb is to
+appear.
+
+ã|\numberingstyleã% by default is 1 which will print the subhead number in
+Arabic numbers. Other possibilities are "A" and "I". By default, subhead
+numbers are not printed, even though the \subheadbnumber is incremented.
+
+ã|\titleformat{Nested Markup}ã is used to describe how the subhead title is
+to be printed. You may use markup such as \newpage, \removelastskip,
+\goodbreak, \nobreak, \verticalspace, and \centerline within \titleformat
+as Nested Markup. Other markup you may use within or outside of
+\subheadbformat:
+
+ * \subheadbnumberprints the most recent subheadb number.
+
+ * \subheadbtitleprints the most recent subheadb title.
+
+ã|\incontentsã% places the subheadb title by default in the contents (if one is
+printed). Printing in the table of contents can be suppressed by changing
+to "no":
+
+\shbf{\incontents{no}}
+
+ ã|Example:ã%
+Some applications require the subheads to be numbered. If you wanted
+\subheadb to include a number like "pp.cc.aa.bb" where "pp" is the part
+number, "cc" is the chapter number, "aa" is the subheada number, and "bb" is
+the subheadb number, you would modify the \subheadbformat:
+
+ \subheadbformat{\numberingstyle{1}
+ \titleformat{\removelastskip\goodbreak\vs{2\bl}
+ \italic
+ \partnumber.\chapternumber.\subheadanumber.\subheadbnumber
+ \quad\subheadbtitle\par
+ \nobreak\vs{1\bl}\nobreak}
+ \incontents{yes}
+ }
+
+ more realistic.
+ \subheadb{Nationalism and War}
+ Nationalism is directly related to war.
+
+ Lord Acton observed that . . .
+
+The first subheadb in the second subheada of the third chapter of the first
+part would print as:
++-----------------------------------------------------------------------------+
+| |
+| more realistic. |
+| |
+| |
+| 1.3.2.1 Nationalism and War |
+| |
+| Nationalism is directly related to war. Lord Acton observed that |
+| . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+The \subheadbformat markup must come after the \monospace markup, if both
+are used.
+
diff --git a/macros/text1/cms_help_files/shc.helpmark b/macros/text1/cms_help_files/shc.helpmark
new file mode 100644
index 0000000000..19133b8456
--- /dev/null
+++ b/macros/text1/cms_help_files/shc.helpmark
@@ -0,0 +1,39 @@
++-----------------------------------------------------------------------------+
+| subheadc |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\shcã%
+
+Parameters: ã|titleã%
+
+ ã|Description:ã%
+The \subheadc markup creates a third level subheading, which skips two
+baselines, prints the title in roman type, then skips one more baseline. It
+does not begin a new page. Its title is not placed in the table of contents
+automatically.
+
+ ã|Example:ã%
+more realistic.
+\subheadc{Nationalism and War}
+Nationalism is directly related to war.
+Lord Acton observed that . . .
+
+which prints:
+
++-----------------------------------------------------------------------------+
+| |
+| more realistic. |
+| |
+| |
+| Nationalism and War |
+| |
+| Nationalism is directly related to war. Lord Acton observed that |
+| . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+Use \subheadcformat to change any of the above mentioned defaults.
+ TEXT1 will encourage page breaking before a \subheadc. It discourages
+page breaking between the \subheadc and the first line of the following
+paragraph.
diff --git a/macros/text1/cms_help_files/shcf.helpmark b/macros/text1/cms_help_files/shcf.helpmark
new file mode 100644
index 0000000000..bb7cbe0822
--- /dev/null
+++ b/macros/text1/cms_help_files/shcf.helpmark
@@ -0,0 +1,81 @@
++-----------------------------------------------------------------------------+
+| subheadcformat |
++-----------------------------------------------------------------------------+
+
+\subheadcformat{\numberingstyle{1}
+ \titleformat{\removelastskip
+ \goodbreak\vs{2\bl}
+ \twelvept
+ \rm\nin\subheadctitle
+ \par\nobreak
+ \vs{1\bl}\nobreak
+ \setsubheaddnumber{0}}
+ \incontents{no}
+ }
+
+Abbreviation: ã|\shcfã%
+
+Parameters: ã|submarkupã%
+
+Submarkup: ã|\numberingstyle, \titleformat, \incontentsã%
+
+ ã|Description:ã%
+The \subheadcformat markup lets you change the appearance of the subheading
+title. There are three submarkup that control how the \subheadc is to
+appear.
+
+ã|\numberingstyleã% by default is 1 which will print the subhead number in
+Arabic numbers. Other possibilities are "A" and "I". By default, subhead
+numbers are not printed, even though the \subheadcnumber is incremented.
+
+ã|\titleformat{Nested Markup}ã% is used to describe how the \subheadc title
+is to be printed. You may use markup such as \newpage, \removelastskip,
+\goodbreak, \nobreak, \verticalspace, and \centerline within \titleformat
+as Nested Markup. Other markup you may use within or outside of
+\subheadcformat:
+
+ * \subheadcnumberprints the most recent subheadc number.
+
+ * \subheadctitleprints the most recent subheadc title.
+
+ã|\incontentsã% places the subheadc title in the contents (if one is printed).
+By default, the title is not placed in the contents. Printing in the table
+of contents can be included by changing to "yes":
+
+\shcf{\incontents{yes}}
+
+ ã|Example:ã%
+Some applications require the subheads to be numbered. If you wanted
+\subheadc to include a number like "Section cc:" where "cc" is a bold
+subheadc number, you could modify the \subheadcformat:
+
+\subheadcformat{\numberingstyle{1}
+ \titleformat{\removelastskip\goodbreak\vs{2\bl}
+ \nin\bd Section \subheadcnumber:
+ \quad\subheadctitle\par
+ \nobreak\vs{1\bl}\nobreak}
+ \incontents{no}
+}
+
+more realistic.
+\subheadc{Nationalism and War}
+Nationalism is directly related to war.
+Lord Acton observed that . . .
+
+The third subheadc would print as:
+
++-----------------------------------------------------------------------------+
+| |
+| more realistic. |
+| |
+| |
+| Section 3: Nationalism and War |
+| |
+| Nationalism is directly related to war. Lord Acton observed that |
+| . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+The \subheadcformat markup must come after the \monospace markup, if both
+are used.
diff --git a/macros/text1/cms_help_files/shd.helpmark b/macros/text1/cms_help_files/shd.helpmark
new file mode 100644
index 0000000000..fa6cb2feaa
--- /dev/null
+++ b/macros/text1/cms_help_files/shd.helpmark
@@ -0,0 +1,33 @@
++-----------------------------------------------------------------------------+
+| subheadd |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\shdã%
+
+Parameters: ã|titleã%
+
+ ã|Description:ã%
+The \subheadd markup creates a fourth level subheading, which skips to a new
+paragraph, prints the title in italics followed by a period, then continues
+the paragraph. It does not begin a new page. Its title is not placed in
+the table of contents automatically.
+
+ ã|Example:ã%
+more realistic.
+\subheadd{Nationalism and War}
+Nationalism is directly related to war.
+Lord Acton observed that . . .
+
+which prints:
+
++-----------------------------------------------------------------------------+
+| |
+| more realistic. |
+| Nationalism and War. Nationalism is directly related to war. Lord |
+| Acton observed that . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+Use \subheaddformat to change any of the above mentioned defaults.
+ TEXT1 will encourage page breaking before a \subheadd.
diff --git a/macros/text1/cms_help_files/shdf.helpmark b/macros/text1/cms_help_files/shdf.helpmark
new file mode 100644
index 0000000000..39b552a430
--- /dev/null
+++ b/macros/text1/cms_help_files/shdf.helpmark
@@ -0,0 +1,77 @@
++-----------------------------------------------------------------------------+
+| subheaddformat |
++-----------------------------------------------------------------------------+
+
+\subheaddformat{\numberingstyle{1}
+ \titleformat{\goodbreak
+ {\twelvept
+ \it\subheaddtitle.}
+ \incontents{no}
+ }
+
+Abbreviation: ã|\shdfã%
+
+Parameters: ã|submarkupã%
+
+Submarkup: ã|\numberingstyle, \titleformat, \incontentsã%
+
+ ã|Description:ã%
+The \subheaddformat markup lets you change the appearance of the subheading
+title. There are three submarkup that control how the \subheadd is to
+appear.
+
+ã|\numberingstyleã% by default is 1 which will print the subhead number in
+Arabic numbers. Other possibilities are "A" and "I". By default, subhead
+numbers are not printed, even though the \subheaddnumber is incremented.
+
+ã|\titleformat{Nested Markup}ã% is used to describe how the subhead title is
+to be printed. You may use markup such as \newpage, \removelastskip,
+\goodbreak, \nobreak, \verticalspace, and \centerline within \titleformat
+as Nested Markup. Other markup you may use within or outside of
+\subheaddformat:
+
+ * \subheaddnumberprints the most recent subheadd number.
+
+ * \subheaddtitleprints the most recent subheadd title.
+
+ã|\incontentsã% places the subheadd title in the contents (if one is printed).
+By default, the title is not placed in the contents. Printing in the table
+of contents can be included by changing to "yes":
+
+\shdf{\incontents{yes}}
+
+ ã|Example:ã%
+If you wanted a subhead to place the title in a lable, you would modify the
+\subheaddformat:
+
+\subheaddformat{\numberingstyle{1}
+ \titleformat{\removelastskip\goodbreak\vs{2\bl}
+ \label{\subheaddtitle}
+ }
+ \incontents{no}
+}
+
+more realistic.
+\subheadd{Nationalism and War}
+Nationalism is directly related to war.
+Lord Acton observed that the increase in nationalism
+significantly increases a country's ability to
+protect itself . . .
+
+The fourth subheadd would print as:
+
++-----------------------------------------------------------------------------+
+| |
+| more realistic. |
+| |
+| |
+| |
+| Nationalism |
+| and War thatonthesmincreaseeinlynationalism significantlyctincreasesea |
+| country's ability to protect itself . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+The \subheaddformat markup must come after the \monospace markup, if both
+are used.
diff --git a/macros/text1/cms_help_files/sms.helpmark b/macros/text1/cms_help_files/sms.helpmark
new file mode 100644
index 0000000000..63213a1656
--- /dev/null
+++ b/macros/text1/cms_help_files/sms.helpmark
@@ -0,0 +1,50 @@
++-----------------------------------------------------------------------------+
+| selectmathset |
++-----------------------------------------------------------------------------+
+
+\selectmathset{cm97m}{mathdefault}
+\mathdefault
+
+Abbreviation: ã|\smsã%
+
+Parameters: ã|catalog name, user's referenceã%
+
+ ã|Description:ã%
+The \selectmathset markup loads type for use by math mode. Superscripted
+footnotes, and mathematical equations, require the TEXT1 math mode. For
+composing printers, the default for the primary (script) math set that is
+used to set super or subscripts is a 9 point Computer Modern, the secondary
+(script-script) math set which is used to set super-super or sub-subscripts
+is 7 point Computer Modern. TEXT1 typewriter printers do not support math
+mode. The format of this markup is
+
+\selectmathset{catalog name}{user's reference name}
+
+where catalog name is the system name for that math set. (Complete lists
+of the catalog names can be found by going to the TEXT1 help menu, or by
+looking in the Font Catalogs.) The design of this name is such that the
+first digit(s) is the primary (script) size, the second digit(s) is the
+secondary (script-script) size. The user's reference is a name of your own
+devising. This name, when prefaced with a backslash will give you access to
+that math set.
+ Typically, the \selectmathset markup is placed in the front of your
+document with your \selectfontset markup.
+
+ ã|Example:ã%
+This math mode example uses a primary 14 point math font, instead of the
+default, and a secondary math font of 12 point.
+
+\selectmathset{cm1412m}{bigmath}
+\selectfontset{cm18}{bigfont}{default}
+\bigfont
+\bigmath
+Human intelligence became possible when
+@@C_{14}\to C_{1.4 \bullet 10^6}@@
+
+ ã|Notes:ã%
+Typically, the \selectmathset markup is placed in the front of your document
+with your \selectfontset markup.
+ TEXT1 typewriter printers do not support math mode.
+ Only the super and subscripts are affected by the math mode fonts
+selected with the \selectmathset markup.
+ See The TEXbook for more on math mode.
diff --git a/macros/text1/cms_help_files/special.helpmark b/macros/text1/cms_help_files/special.helpmark
new file mode 100644
index 0000000000..48597c9326
--- /dev/null
+++ b/macros/text1/cms_help_files/special.helpmark
@@ -0,0 +1,24 @@
++-----------------------------------------------------------------------------+
+| TEXT1 Special Characters |
++-----------------------------------------------------------------------------+
+
+In TeX there are 10 keyboard characters which have special meaning. They are:
+
+ \ (backslash) } (right curly brace) { (left curly brace)
+ @ (at sign) # (pound sign) _ (underscore)
+ & (ampersand) % (percent sign) ~ (tilde) | (vertical bar)
+
+If you need any of these characters as part of your text you must precede all
+but the tilde and vertical bar with a \ (backslash) or TeX will interpret them
+as a TeX command. To print a tilde you must enter \tilde and for a vertical bar
+enter \vbar.
+
+For example, the following input:
+
+ Mom sent Tommy to the store and told him to buy 5\# potatoes, a
+ half gallon of 2\% milk and two packages of M\&Ms.
+
+would result in:
+
+Mom sent Tommy to the store and told him to buy 5# potatoes, a half gallon of
+2% milk and two packages of M&Ms.
diff --git a/macros/text1/cms_help_files/spn.helpmark b/macros/text1/cms_help_files/spn.helpmark
new file mode 100644
index 0000000000..8377cd9a4a
--- /dev/null
+++ b/macros/text1/cms_help_files/spn.helpmark
@@ -0,0 +1,46 @@
++-----------------------------------------------------------------------------+
+| setpagenumber |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\spnã%
+
+Parameters: ã|previous page numberã%
+
+ ã|Description:ã%
+The \setpagenumber markup resets the page number of a paper. The first page
+of a document, commonly referred to as the title page, is treated as page
+number "1". You can begin the document with a page number other than 1, or
+renumber sections of the document.
+ The \setpagenumber markup can be specified anywhere in your document.
+It changes the number of the current page. This can be particularly useful
+if you are printing your document one part or chapter at a time.
+ To get pages in lower case roman numerals, for lead pages, enter a
+negative number, for instance \setpagenumber{-1}.
+
+ ã|Example:ã%
+To set the page number so that the sentence beginning "Furthermore . . . "
+is on page 11, enter
+
+as shown in this series of figures.
+% insert four full-page figures
+\setpagenumber{10}
+\newpage
+Furthermore, there are too many physical
+similarities between human forms and earth forms
+to dismiss. Indeed, they are made of the same . . .
+
+ You could also have placed the \setpagenumber markup after the \newpage
+and changed the number from 10 to 11:
+
+as shown in this series of figures.
+% insert four full-page figures
+\newpage
+\setpagenumber{11}
+Furthermore, there are too many physical
+
+similarities between human forms and earth forms
+to dismiss. Indeed, they are made of the same . . .
+
+ ã|Notes:ã%
+To get pages in lower case roman numerals, for lead pages, enter a negative
+number, for instance \setpagenumber{-1}.
diff --git a/macros/text1/cms_help_files/sptn.helpmark b/macros/text1/cms_help_files/sptn.helpmark
new file mode 100644
index 0000000000..fb40c3ae20
--- /dev/null
+++ b/macros/text1/cms_help_files/sptn.helpmark
@@ -0,0 +1,23 @@
++-----------------------------------------------------------------------------+
+| setpartnumber |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\sptnã%
+
+Parameters: ã|previous part numberã%
+
+ ã|Description:ã%
+The part number will be automatically incremented by one for each use of
+\part. The part number can be reset by inserting the \setpartnumber markup
+before the next occurrence of \part.
+
+ ã|Example:ã%
+By default, the first part is number 1. If you want to start with part 5,
+you would enter:
+
+\setpartnumber{4}
+\part{Title of the fifth part}
+
+ ã|Notes:ã%
+The number specified in the \setpartnumber parameter is the previous part
+number, not the next part number.
diff --git a/macros/text1/cms_help_files/ssan.helpmark b/macros/text1/cms_help_files/ssan.helpmark
new file mode 100644
index 0000000000..6b4085cc82
--- /dev/null
+++ b/macros/text1/cms_help_files/ssan.helpmark
@@ -0,0 +1,25 @@
++-----------------------------------------------------------------------------+
+| setsubheadanumber |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\ssanã%
+
+Parameters: ã|previous subheada numberã%
+
+ ã|Description:ã%
+The subheada number will be automatically incremented by one for each
+use of \subheada. The subheada number can be reset by inserting the
+\setsubheadanumber markup before the next occurrence of \subheada.
+
+ ã|Example:ã%
+By default, the first subheada is number 1. If you want to start with
+number 5, you would enter:
+
+\setsubheadanumber{4}
+\subheada{Title of the fifth subheada}
+
+ ã|Notes:ã%
+The number specified in the \setsubheadanumber parameter is the previous
+subheada number, not the next subheada number.
+ The subheada number is reset to zero when you enter \part, \chapter or
+\appendix.
diff --git a/macros/text1/cms_help_files/ssbn.helpmark b/macros/text1/cms_help_files/ssbn.helpmark
new file mode 100644
index 0000000000..df728a0689
--- /dev/null
+++ b/macros/text1/cms_help_files/ssbn.helpmark
@@ -0,0 +1,25 @@
++-----------------------------------------------------------------------------+
+| setsubheadbnumber |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\ssbnã%
+
+Parameters: ã|previous subheadb numberã%
+
+ ã|Description:ã%
+The subheadb number will be automatically incremented by one for each
+use of \subheadb. The subheadb number can be reset by inserting the
+\setsubheadbnumber markup before the next occurrence of \subheadb.
+
+ ã|Example:ã%
+By default, the first subheadb is number 1. If you want to start with
+number 5, you would enter:
+
+\setsubheadbnumber{4}
+\subheadb{Title of the fifth subheadb}
+
+ ã|Notes:ã%
+The number specified in the \setsubheadbnumber parameter is the previous
+subheadb number, not the next subheadb number.
+ The subheadb number is reset to zero when you enter \part, \chapter,
+\subheada, or \appendix.
diff --git a/macros/text1/cms_help_files/sscn.helpmark b/macros/text1/cms_help_files/sscn.helpmark
new file mode 100644
index 0000000000..c6db33d4e0
--- /dev/null
+++ b/macros/text1/cms_help_files/sscn.helpmark
@@ -0,0 +1,25 @@
++-----------------------------------------------------------------------------+
+| setsubheadcnumber |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\sscnã%
+
+Parameters: ã|previous subheadc numberã%
+
+ ã|Description:ã%
+The subheadc number will be automatically incremented by one for each
+use of \subheadc. The subheadc number can be reset by inserting the
+\setsubheadcnumber markup before the next occurrence of \subheadc.
+
+ ã|Example:ã%
+By default, the first subheadc is number 1. If you want to start with
+number 5, you would enter:
+
+\setsubheadcnumber{4}
+\subheadc{Title of the fifth subheadc}
+
+ ã|Notes:ã%
+The number specified in the \setsubheadcnumber parameter is the previous
+subheadc number, not the next subheadc number.
+ The subheadc number is reset to zero when you enter \part, \chapter,
+\subheada, \subheadb, or \appendix.
diff --git a/macros/text1/cms_help_files/ssdn.helpmark b/macros/text1/cms_help_files/ssdn.helpmark
new file mode 100644
index 0000000000..b93175860c
--- /dev/null
+++ b/macros/text1/cms_help_files/ssdn.helpmark
@@ -0,0 +1,25 @@
++-----------------------------------------------------------------------------+
+| setsubheaddnumber |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\ssdnã%
+
+Parameters: ã|previous subheadd numberã%
+
+ ã|Description:ã%
+The subheadd number will be automatically incremented by one for each
+use of \subheadd. The subheadd number can be reset by inserting the
+\setsubheaddnumber markup before the next occurrence of \subheadd.
+
+ ã|Example:ã%
+By default, the first subheadd is number 1. If you want to start with
+number 5, you would enter:
+
+\setsubheaddnumber{4}
+\subheadd{Title of the fifth subheadd}
+
+ ã|Notes:ã%
+The number specified in the \setsubheaddnumber parameter is the previous
+subheadd number, not the next subheadd number.
+ The subheadd number is reset to zero when you enter \part, \chapter,
+\subheada, \subheadb, \subheadc, or \appendix.
diff --git a/macros/text1/cms_help_files/ssf.helpmark b/macros/text1/cms_help_files/ssf.helpmark
new file mode 100644
index 0000000000..1d7173e845
--- /dev/null
+++ b/macros/text1/cms_help_files/ssf.helpmark
@@ -0,0 +1,50 @@
++-----------------------------------------------------------------------------+
+| selectspecificfont |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\ssfã%
+
+Parameters: ã|catalog name, font size, leadingã%
+
+ ã|Description:ã%
+The \selectspecificfont markup permits you to include fonts that are not
+members of sets or families, and have an \interlineskip associated with it.
+The format of this markup is,
+
+\selectspecificfont{catalog name}{font size}{leading}
+
+where catalog name is the system name for that font without the font size
+specification. (Complete lists of the catalog names can be found by going
+to the TEXT1 help menu, or by looking in the Font Catalogs.) The font
+size is the size in points of that face. The leading is the interlineskip
+
+specification. You cannot use "default" for the leading as you can with
+\selectfontset.
+ To access a specific font made available with \selectspecificfont, you
+enter a backslash, followed by the catalog name, followed by the font size,
+and ending with a semicolon.
+
+ ã|Example:ã%
+This example makes the Computer Modern Slanted font at 12 points available
+for use. After specifying,
+
+\selectspecificfont{cmsl}{12}{14pt}
+
+you would then enter "\cmsl12;" to use this font. For example,
+
+\selectspecificfont{cmsl}{12}{14pt}
+\twelvept
+\cl{\cmsl12; Nuclear Utopia}
+Nuclear war is unthinkable.
+
++-----------------------------------------------------------------------------+
+| |
+| Nuclear Utopia |
+| Nuclear war is unthinkable. |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+Each font specified with \selectspecificfont must be followed by a
+semicolon.
+ You cannot use "default" for the leading as you can with \selectfontset.
diff --git a/macros/text1/cms_help_files/ssp.helpmark b/macros/text1/cms_help_files/ssp.helpmark
new file mode 100644
index 0000000000..bb69c58d75
--- /dev/null
+++ b/macros/text1/cms_help_files/ssp.helpmark
@@ -0,0 +1,43 @@
++-----------------------------------------------------------------------------+
+| singlespace |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\sspã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+Single spacing is the default for TEXT1. The \singlespace markup can
+be used to return to single spacing if the spacing has been changed
+double spacing with \doublespace. The markup \singlespace markup has no
+parameters, and causes an end-of-paragraph, forcing the following text into
+a new paragraph.
+
+ ã|Example:ã%
+\doublespace
+The cultures of industrial nations are based on
+unethical accumulations of materials.
+This inequality is maintained by power, not
+persuasion.
+\singlespace
+Power politics makes problems that cannot be solved
+except by war.
+Questions about defining the best nation or the best
+religion lead to organized . . .
+
++-----------------------------------------------------------------------------+
+| |
+| The cultures of industrial nations are based on unethical |
+| |
+| accumulations of materials. This inequality is maintained by power, |
+| |
+| not persuasion. |
+| Power politics makes problems that cannot be solved except by war. |
+| Questions about defining the best nation or the best religion lead to |
+| organized . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+The interline skip value used with \singlespace and \doublespace is set with
+the \interlineskip markup.
diff --git a/macros/text1/cms_help_files/stn.helpmark b/macros/text1/cms_help_files/stn.helpmark
new file mode 100644
index 0000000000..94fe79e895
--- /dev/null
+++ b/macros/text1/cms_help_files/stn.helpmark
@@ -0,0 +1,37 @@
++-----------------------------------------------------------------------------+
+| settablenumber |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\stnã%
+
+Parameters: ã|previous table numberã%
+
+ ã|Description:ã%
+The table number will be automatically incremented by one for each use of
+\tabletitle. The table number can be reset by adding the \settablenumber
+markup before the next occurrence of \tabletitle.
+
+ ã|Example:ã%
+By default, table numbers are reset in parts. If you also want them reset
+in chapters, you could modify the \chapterformat by adding \settablenumber
+to the \titleformat:
+
+\chapterformat{\numberingstyle{1}
+ \titleformat{\dumpinsertseject
+ \cl{\twelvept\bd Chapter \chapternumber}
+
+ \cl{\twelvept\bd \chaptertitle}
+ \vs{1\bl}
+ \settablenumber{0}
+ \setsubheadanumber{0}
+ \setsubheadbnumber{0}
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}}
+ \incontents{yes} }
+
+ ã|Notes:ã%
+The number specified in the \settablenumber parameter is the previous table
+number, not the next table number. If you want the next \tabletitle to be
+Table 90, then specify
+
+\settablenumber{89}
diff --git a/macros/text1/cms_help_files/strut.helpmark b/macros/text1/cms_help_files/strut.helpmark
new file mode 100644
index 0000000000..582344ae8a
--- /dev/null
+++ b/macros/text1/cms_help_files/strut.helpmark
@@ -0,0 +1,82 @@
++-----------------------------------------------------------------------------+
+| strut |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+There are times when it is necessary to have the baselineskip between two
+lines be the same, especially if you are building a table that uses rules
+between columns. The \strut markup can be used in an \halign to maintain
+consistent distance between lines of a table. The \strut markup has no
+parameters. Its height is 1.8 times the height of an "x" in the current
+point size. Its depth is .6 times the height of an "x" in the current point
+size.
+
+ ã|Example:ã%
+Consider this table created without the use of \strut,
+
+\sfs{cm8}{eightpt}{default}
+
+\twelvept
+
+
+\tabletitle{Comparison of the composition of goat's
+milk and that of two common breeds of dairy cows}
+{\offinterlineskip\eightpt
+\halign{\vrule\hs{3pt}\lft{#}\hs{3pt}\vrule&&
+ \hs{3pt}\ctr{#}\hs{3pt}\vrule\cr
+\noalign{\hrule}
+&&\bd Total&&&\cr
+\bd Source of milk&\bd Water&\bd Solids&
+ \bd Fat&\bd Protein&\bd Lactose\cr
+\noalign{\hrule height 1pt}
+Goats&82.02\%&11.98\%&3.50\%&3.13\%&4.55\%\cr
+\noalign{\hrule}
+Holstein-Friesian&87.50\%&12.50\%&3.55\%&3.42\%&4.86\%\cr
+\noalign{\hrule}
+Jersey&85.31\%&14.69\%&5.18\%&3.86\%&4.94\%\cr
+\noalign{\hrule}
+
+}}
+\twelvept
+
+which prints as:
++-----------------------------------------------------------------------------+
+| |
+| Table 1 |
+| Comparison of the composition of goat's milk and that of two common breeds |
+| of dairy cows |
+| ...................................................... |
+| ....................................................... |
+| ....................................................... |
+| .Jersey...........85.31%..14.69%5.18%..3.86%...4.94%... |
+| ...................................................... |
++-----------------------------------------------------------------------------+
+
+Now add \strut to the \halign preamble,
+
+\halign{\strut\vrule\hs{3pt}\lft{#}\hs{3pt}\vrule&&
+ \hs{3pt}\ctr{#}\hs{3pt}\vrule\cr
+
+and notice the uniform distance between lines:
++-----------------------------------------------------------------------------+
+| |
+| Table 2 |
+| Comparison of the composition of goat's milk and that of two common breeds |
+| of dairy cows |
+| ...................................................... |
+| . . Total . . . . |
+| ....................................................... |
+| Goats 82.02%11.98% 3.50% 3.13% 4.55% |
+| ..Holstein-Friesia87.50%..12.50%3.55%..3.42%...4.86%.. |
+| ....................................................... |
+| ....................................................... |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+The size of the strut changes as the interline skip changes. \twelvept will
+have a longer \strut than will \tenpt.
+ See The TEXbook for more on \offinterlineskip.
diff --git a/macros/text1/cms_help_files/subheada.helpbloc b/macros/text1/cms_help_files/subheada.helpbloc
new file mode 100644
index 0000000000..e7e95f9a4d
--- /dev/null
+++ b/macros/text1/cms_help_files/subheada.helpbloc
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|SUBHEADAã%block is to be selected if you want to modify the
+\subheadaformat.
diff --git a/macros/text1/cms_help_files/subheadb.helpbloc b/macros/text1/cms_help_files/subheadb.helpbloc
new file mode 100644
index 0000000000..9504d6e77b
--- /dev/null
+++ b/macros/text1/cms_help_files/subheadb.helpbloc
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|SUBHEADBã%block is to be selected if you want to modify the
+\subheadbformat.
diff --git a/macros/text1/cms_help_files/subheadc.helpbloc b/macros/text1/cms_help_files/subheadc.helpbloc
new file mode 100644
index 0000000000..9d092ec196
--- /dev/null
+++ b/macros/text1/cms_help_files/subheadc.helpbloc
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|SUBHEADCã%block is to be selected if you want to modify the
+\subheadcformat.
diff --git a/macros/text1/cms_help_files/subheadd.helpbloc b/macros/text1/cms_help_files/subheadd.helpbloc
new file mode 100644
index 0000000000..92786990ed
--- /dev/null
+++ b/macros/text1/cms_help_files/subheadd.helpbloc
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|SUBHEADDã%block is to be selected if you want to modify the
+\subheadDformat.
diff --git a/macros/text1/cms_help_files/sy.helpmark b/macros/text1/cms_help_files/sy.helpmark
new file mode 100644
index 0000000000..1cd81220f6
--- /dev/null
+++ b/macros/text1/cms_help_files/sy.helpmark
@@ -0,0 +1,26 @@
++-----------------------------------------------------------------------------+
+| symbol |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\syã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \symbol markup sets the face to the Computer Modern Math Symbol face.
+Refer to The TEXbook, Appendix F, for a complete list of the characters
+available in the Symbol face.
+
+ ã|Example:ã%
+This example uses \symbol to print a diagonal arrow:
+
+Put a {\symbol\char'45} next to . . .
+
++-----------------------------------------------------------------------------+
+| |
+| Put a \ next to . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+For more on the use of the \char markup, refer to The TEXbook.
diff --git a/macros/text1/cms_help_files/tablem.helpbloc b/macros/text1/cms_help_files/tablem.helpbloc
new file mode 100644
index 0000000000..81d335148d
--- /dev/null
+++ b/macros/text1/cms_help_files/tablem.helpbloc
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|TABLE-Mã%block is to be selected if you want to modify the
+\tableformat. This is to be used when you are using \monospace.
diff --git a/macros/text1/cms_help_files/tablep.helpbloc b/macros/text1/cms_help_files/tablep.helpbloc
new file mode 100644
index 0000000000..292d726559
--- /dev/null
+++ b/macros/text1/cms_help_files/tablep.helpbloc
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|TABLE-Pã%block is to be selected if you want to modify the
+\tableformat. This is to be used when you areã|notã%using \monospace.
diff --git a/macros/text1/cms_help_files/taf.helpmark b/macros/text1/cms_help_files/taf.helpmark
new file mode 100644
index 0000000000..afa15b556b
--- /dev/null
+++ b/macros/text1/cms_help_files/taf.helpmark
@@ -0,0 +1,56 @@
++-----------------------------------------------------------------------------+
+| tableformat |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\tafã%
+
+Parameters: ã|submarkupã%
+
+Submarkup: ã|\titleformat, \incontentsã%
+
+ ã|Description:ã%
+The \tableformat markup allows you to modify the defaults that control the
+appearance of the table title.
+
+ã|titleformat{Nested Markup}ã% controls the appearance of the table title.
+You may use markup such as \blockquotebegin, \hangingparagraph, \vertical-
+space, and \centerline within \titleformat as Nested Markup. Other markup
+you may use within or outside of \tableformat:
+ ã|tablenumber.ã% prints the most recent table number.
+ ã|tabletitle.ã% prints the most recent table title.
+
+ã|incontentsã% places the table title in contents (if one is printed).
+Printing can be suppressed by changing to "no."
+
+ ã|Example:ã%
+If you wanted a table title to print in a hanging paragraph style, and you
+didn't want the table title put in the table of contents, enter:
+
+\tableformat{%
+ \titleformat{\bqb\hp\bd Table \tablenumber.
+ \rm\tabletitle\bqe}
+ \incontents{yes}
+ }
+
+\tabletitle{Size data of a Yellow
+Transparent fruit during the period of July 23 to August 9,
+1977. (fruit No. IV@_b@)}
+\halign{\qquad\ctr{#}&&\hs{1em}\ctr{#}\cr
+July 23&July 27&July 31&August 5&August 9\cr
+32&67&44&47&18\cr}
+
++-----------------------------------------------------------------------------+
+| |
+| |
+| Table 1. Size data of a Yellow Transparent fruit during the |
+| period of July 23 to August 9, 1977. (fruit No. IV[b]) |
+| |
+| July 23 July 27 July 31 August 5 August 9 |
+| 32 67 44 47 18 |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+The \tableformat markup must come after the \monospace markup, if both are
+used. If you are using \monospace, the only difference in defaults is that
+the table title is printed in the \monospace font instead of \twelvept.
diff --git a/macros/text1/cms_help_files/talaris.helpbloc b/macros/text1/cms_help_files/talaris.helpbloc
new file mode 100644
index 0000000000..b6d310e084
--- /dev/null
+++ b/macros/text1/cms_help_files/talaris.helpbloc
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|TALARISã%block is to be selected if you want to change the default
+proportional space fonts and you are using a Talaris.
diff --git a/macros/text1/cms_help_files/tat.helpmark b/macros/text1/cms_help_files/tat.helpmark
new file mode 100644
index 0000000000..d5f13ab97a
--- /dev/null
+++ b/macros/text1/cms_help_files/tat.helpmark
@@ -0,0 +1,59 @@
++-----------------------------------------------------------------------------+
+| tabletitle |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\tatã%
+
+Parameters: ã|title textã%
+
+ ã|Description:ã%
+A table is a presentation of information in columns. The \tabletitle markup
+centers the title and puts that title in the table of contents. The
+\tabletitle markup does not print the actual table, you must use \halign or
+\settabs to accomplish that.
+
+ ã|Example:ã%
+\tabletitle{Monthly Salaries in Public Libraries\lbr
+for 1981}
+\tenpt
+\halign{\quad\lft{#}&&\quad\ctr{#}\cr
+\noalign{\hrule\vs{3pt}}
+
+&&\ctr{\bd Library Aide}&\ctr{\bd Page}\cr
+\omit\ctr{\bd City/Town}&\ctr{\bd Librarian}&
+ \ctr{\bd and Clerical}&\ctr{\bd and}\cr
+\omit\ctr{\bd Libraries}&\ctr{\bd (a)(b)}&
+ \ctr{\bd Assistant}&\ctr{\bd Bookbinder}\cr
+Brewster&190&---&---\cr
+Burlington&1158&5.89 hr&3.35/3.50 hr\cr
+Castle Rock&300&3.35 hr&---\cr
+Cathlamet&225&---&---\cr
+Chewelah&290&---&---\cr
+Cle Elum&3.50 hr&---&---\cr
+Colville&5.68 hr&5.00 hr&---\cr
+}
+
+which prints the table illustrated on the following page.
+
++-----------------------------------------------------------------------------+
+| |
+| Table 1 |
+| Monthly Salaries in Public Libraries |
+| for 1981 |
+|.............................................................................|
+| Library Aide Page |
+| City/Town Librarian and Clerical and |
+| Libraries (a)(b) Assistant Bookbinder |
+| Brewster 190 --- --- |
+| Burlington 1158 5.89 hr 3.35/3.50 hr |
+| Castle Rock 300 3.35 hr --- |
+| Cathlamet 225 --- --- |
+| Chewelah 290 --- --- |
+| Cle Elum 3.50 hr --- --- |
+| Colville 5.68 hr 5.00 hr --- |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+\tabletitle only prints the table title in the text and places the title
+in the table of contents. Use \halign or \settabs to construct the table
+itself.
diff --git a/macros/text1/cms_help_files/tenpt.helpmark b/macros/text1/cms_help_files/tenpt.helpmark
new file mode 100644
index 0000000000..0ee2d7e6b9
--- /dev/null
+++ b/macros/text1/cms_help_files/tenpt.helpmark
@@ -0,0 +1,42 @@
++-----------------------------------------------------------------------------+
+| tenpt |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+There are two default \selectfontsets established when you format a TEXT1
+file: \twelvept for the 12 point size Computer Modern serif typestyle; and
+\tenpt for the 10 point Computer Modern serif typestyle.
+ The font set includes the following nine faces, each of which is called
+by adding a backslash in front of the name, or using the abbreviation:
+\roman (\rm), \bold (\bd), \italic (\it), \typewriter (\tt), \caps (\cc),
+\mathitalic (\mi), \symbol (\sy), \extension (\ex), and \bolditalic (\bi).
+
+ ã|Example:ã%
+Consider this example for switching from 12 point to a 10 point size.
+
+\tenpt
+\centerline{\twelvept\bd Sociogeology}
+\centerline{\it by Achilles Chert}
+"Does the absurd dictate death?" asks Albert Camus,
+
++-----------------------------------------------------------------------------+
+| |
+| Sociogeology |
+| by Achilles Chert |
+| "Does the absurd dictate death?" asks Albert Camus, |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+There are some markup, such as \figure, \blockquotebegin, \autoendnote, and
+\autofootnote which use \tenpt in formatting. If you decide you want to use
+another 10 point font set (like Plantin) instead of Computer Modern as the
+default, you must give that set the same name, "tenpt":
+
+\selectfontset{pl10}{tenpt}{default}
+\selectfontset{pl12}{twelvept}{default}
+\selectmathset{cg97m}{mathdefault}
+\tenpt
diff --git a/macros/text1/cms_help_files/text1.helpmark b/macros/text1/cms_help_files/text1.helpmark
new file mode 100644
index 0000000000..cfb0983202
--- /dev/null
+++ b/macros/text1/cms_help_files/text1.helpmark
@@ -0,0 +1,44 @@
++-----------------------------------------------------------------------------+
+| text1 |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+You can print the name of the TEXT1 system by entering the markup \text1.
+
+ ã|Example:ã%
+\appendix{\text1\ Markup}
+Following is the list of markup for \text1.
+\twc
+\aib
+appendix
+asisbegin
+asisend
+\aie
+\oc
+
+will print an appendix that looks like:
+
++-----------------------------------------------------------------------------+
+| |
+| 2 |
+| |
+| Appendix A |
+| TEXT1 Markup |
+| Following is the list of markup for TEXT1. |
+| |
+| appendix |
+| asisbegin |
+| asisend |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+You must follow \text1 with a required space (either a tilde ~ or with
+a backslash-space, if you want a space following \text1 as indicated in
+the example above in the \appendix markup. If you do not need a space
+following, such as at the end of the sentence illustrated in the second line
+of the example above beginning "Following is . . . ", then omit the space.
diff --git a/macros/text1/cms_help_files/thc.helpmark b/macros/text1/cms_help_files/thc.helpmark
new file mode 100644
index 0000000000..dc34bb186e
--- /dev/null
+++ b/macros/text1/cms_help_files/thc.helpmark
@@ -0,0 +1,75 @@
++-----------------------------------------------------------------------------+
+| threecolumns |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\thcã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \threecolumns markup formats text in three identical width columns.
+Column widths, gutters and margins are calculated automatically. The
+default column width is 31% of the galleywidth (hsize). The default gutter
+between each column is 3.5% of the galleywidth.
+ The Flexible format (the default) allows the user to use single column,
+two column, and three column text interchangeably on the current page by
+entering one of the markup choices at the desired point in the text. The
+flexible format will balance the text columns whenever the number of columns
+changes.
+ For example, if the author changes the multiple column format by
+typing a different markup TEXT1 will automatically balance the columns it
+is currently processing and change to a new number of columns. These
+instructions can be inserted at any point on the page.
+ The author may want to handle tables and other large blocks of text by
+returning to a single column for the table by typing \onecolumn immediately
+before the table and returning to two or three column formatting immediately
+after the table.
+ All running head, running foot, and inserts are printed across the
+full single column width that prints across the top of the current page.
+Footnotes will be printed across the full width at the bottom of the page.
+
+ ã|Example:ã%
+\threecolumns
+\nin Hebrew is called a Semitic language because it has
+its roots in Shem, one of the sons of Noah.
+Viewing Jerusalem as its center, it is related to the
+northern, rougher Aramaic, and to the southern, more
+polished Arabic. It has a freshness, simplicity and
+power that few modern languages possess. Bounds of the
+ancient Semitic tongue were approximately the
+Mediterranean Sea on the west, the Euphrates and Tigris
+Rivers on the easy, the mountains
+of Armenia on the north,
+and the coast of Arabia on the south. Consider the first
+character, N . . .
+
++-----------------------------------------------------------------------------+
+| |
+| Hebrew is rougher approximately. |
+| called Aramaic, the Mediter- |
+| a Semitic and to the ranean Sea |
+| language southern, on the west, |
+| because more pol- the Euphrates. |
+| it has its ished Ara- and Tigris |
+| roots in bic. It Rivers on |
+| Shem, one has a the easy, |
+| of the sons freshness, sim- the mountains. |
+| of Noah. plicity and of Armenia |
+| Viewing power that on the north,. |
+| Jerusalem few modern and the coast. |
+| as its cen- languages pos Arabia on |
+| ter, it is sess. Bounds the south. |
+| related to of the an- Consider the |
+| the north- cient Semitic first char- |
+| ern, tongue were acter, N |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+To change the column width or the gutter width, use the \multicolumnformat
+markup.
+ You cannot specify \threecolumns inside of \vbox, \drawbox,
+\paragraphbox, or a floating \figure (non floating figures, \nofloat,
+are ok).
+ If you want footnotes and figures to print in one column instead of
+across both columns, use the \fixedformat markup.
diff --git a/macros/text1/cms_help_files/thesis.helpmode b/macros/text1/cms_help_files/thesis.helpmode
new file mode 100644
index 0000000000..5d43b13234
--- /dev/null
+++ b/macros/text1/cms_help_files/thesis.helpmode
@@ -0,0 +1,8 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Models |
++-----------------------------------------------------------------------------+
+
+Theã|THESISã%model is a thesis model set up to abide by all of the WSU
+graduate school's rules. It is a template. You may modify it, but
+it is recommended you check with the Information Center first.
diff --git a/macros/text1/cms_help_files/titlepg.helpbloc b/macros/text1/cms_help_files/titlepg.helpbloc
new file mode 100644
index 0000000000..dd15e332b0
--- /dev/null
+++ b/macros/text1/cms_help_files/titlepg.helpbloc
@@ -0,0 +1,7 @@
+
++-----------------------------------------------------------------------------+
+| TEXT1 Select Formatting Blocks |
++-----------------------------------------------------------------------------+
+
+Theã|TITLEPGã%block is to be selected if you want to modify the
+\titlepageformat for changing the way a title page is printed.
diff --git a/macros/text1/cms_help_files/toc.helpmark b/macros/text1/cms_help_files/toc.helpmark
new file mode 100644
index 0000000000..dd9d895ec7
--- /dev/null
+++ b/macros/text1/cms_help_files/toc.helpmark
@@ -0,0 +1,39 @@
++-----------------------------------------------------------------------------+
+| tableofcontents |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\tocã%
+
+Parameters: ã|page numberã%
+
+ ã|Description:ã%
+The \tableofcontents markup prints the table of contents, beginning with
+the designated page. A roman numeral page number is specified by entering
+a negative page number. This markup must always appear at the end of a
+document.
+ By default, parts, chapters, appendices and subheading levels "A" and
+"B" are included in the table of contents. The order of printing in the
+table of contents is always
+ 1. table of contents
+ 2. list of figures
+ 3. list of tables
+ The list of figures will print only if a \figure markup was used. The
+list of tables will print only if a \tabletitle markup was used.
+
+ ã|Example:ã%
+To print the table of contents beginning on page 32 enter:
+of utmost importance.
+\tableofcontents{32}
+
+ ã|Example:ã%
+If you wanted the table of contents to begin on roman numeral page three
+("iii"), you would enter a minus three.
+
+New York: Halstead Press.
+\tableofcontents{-3}
+
+ ã|Notes:ã%
+This markup must always appear at the end of a document.
+ Multiple line titles may be broken in the table of contents by using
+\toclinebreak.
+
diff --git a/macros/text1/cms_help_files/tocf.helpmark b/macros/text1/cms_help_files/tocf.helpmark
new file mode 100644
index 0000000000..f178e50e3c
--- /dev/null
+++ b/macros/text1/cms_help_files/tocf.helpmark
@@ -0,0 +1,478 @@
++-----------------------------------------------------------------------------+
+| tableofcontentsformat |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\tocfã%
+
+Parameters: ã|submarkupã%
+
+Submarkup: ã| \toctitle, \prefacetocformat, \parttocformat,
+\continuechapter, \chaptertocformat,
+\hangingchapterindent, \appendixtocformat,
+\hangingappendixindent, \subheadatocformat,
+\subheadbtocformat, \subheadctocformat,
+\subheaddtocformat, \bibliographytocformat,
+\figuretoctitle, \figuretocformat,
+\hangingfigureindent, \tabletoctitle,
+\tabletocformat, \hangingtableindentã%
+
+ ã|Description:ã%
+The table of contents prints with the titles "Table of Contents", "List of
+Figures", and "List of Tables" centered in bold letters and each beginning
+
+on a new page. If you want to change these defaults you use the \table-
+ofcontentsformat markup. This markup also changes the way part, chapter,
+subhead, appendix, bibliography, preface, figure and table titles print in
+table of contents.
+
+ã|toctitleã% regulates how the table of contents title is to be printed. By
+default it is a centered bold title "Table of Contents". Use \toctitle to
+change this default.
+
+ ã|Example:ã%
+If you wanted the title of the table of contents to print "Contents" you
+would enter:
+
+\tableofcontentsformat{
+ \toctitle{\cl{\it Contents}}}
+
+ã|prefacetocformatã% determines how titles entered on the \preface markup
+are to print in the table of contents. By default, they are simply printed
+with a \noindent.
+
++-----------------------------------------------------------------------------+
+| |
+| Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+If you wanted the preface title to print in italics as illustrated on the
+next page, you would enter:
+
+\tocf{\prefacetocformat{\nin\it
+ \prefacetitle\leader\pn}}
+
++-----------------------------------------------------------------------------+
+| |
+| Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 |
+| |
++-----------------------------------------------------------------------------+
+
+ã|parttocformatã% determines how titles entered on the \part markup are to
+print in the table of contents. By default, part titles skip one line,
+center the part number, center the part title, skip another line, then print
+"Part" followed by the part number again, followed by leader and the page
+number:
+
++-----------------------------------------------------------------------------+
+| |
+| Part 1 |
+| Mechanics |
+| |
+| Part 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+
+If you wanted parts to print in a hanging paragraph style, enter:
+
+\tocf{\parttocformat{\hp\parttitle\leader\pn}}
+
++-----------------------------------------------------------------------------+
+| |
+| Videodiscs in today's modern office --- Timely |
+| TV Tutors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 |
++-----------------------------------------------------------------------------+
+
+ã|continuechapterã% if specified as "yes" will print "Chapter" at the top of
+each page under the header. The default is "no".
+
+ã|chaptertocformat{Nested Markup}ã% determines how a chapter title is to be
+printed in the table of contents. By default, the chapter number and title
+are printed in a hanging number style. For example, if you entered,
+
+\chapter{The Nineteenth Century and after\lbr
+best-sellers\toclbr and steady-sellers}
+
+you would get in the table of contents:
+
++-----------------------------------------------------------------------------+
+| |
+| 1. The Nineteenth Century and after best-sellers |
+| and steady-sellers . . . . . . . . . . . . . . . . . . . . . . . . . 6 |
++-----------------------------------------------------------------------------+
+
+Note that the line break from \lbr only occurs in the text, not in the
+table of contents. Use \toclbr to create a line break which is to occur
+in the table of contents. To change the amount of indent, use the
+\hangingchapterindent. You may use markup such as \newpage, \chaptertitle,
+\chapternumber, \verticalspace, and \centerline within \chaptertocformat as
+Nested Markup. You may also use \hangingchapternumber, which prints the
+chapter number in a similar fashion as \item.
+
+ ã|Example:ã%
+If you wanted chapter titles to print in a hanging paragraph style, without
+an associated chapter number, you would enter:
+
+\tocf{\chaptertocformat{\hp\chaptertitle\leader\pn}}
+
++-----------------------------------------------------------------------------+
+| |
+| The Nineteenth Century and after best-sellers |
+| and steady-sellers . . . . . . . . . . . . . . . . . . . . . . . . . 7 |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+If you want the title "Chapter" to appear left justified in the table of
+contents above the first chapter number, prior to the first chapter you
+would enter the following \putincontents markup:
+
+\putincontents1{\nin Chapter}
+\chapter{First Chapter}
+Text of the first chapter . . .
+
+which prints in the table of contents as:
+
++-----------------------------------------------------------------------------+
+| |
+| Chapter |
+| 1. First Chapter . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 |
++-----------------------------------------------------------------------------+
+
+ã|hangingchapterindentã% controls the amount of indent before printing the
+chapter title when you print using \hangingchapternumber.
+
+ã|appendixtocformat{Nested Markup}ã% determines how an appendix title is to
+be printed in the table of contents. By default, the appendix number and
+title are printed in a hanging number style. For example, if you entered,
+
+\appendix{The Nineteenth Century and after\lbr
+best-sellers\toclbr and steady-sellers}
+
+you would get in the table of contents:
+
++-----------------------------------------------------------------------------+
+| |
+| A. The Nineteenth Century and after best-sellers |
+| and steady-sellers . . . . . . . . . . . . . . . . . . . . . . . . . 9 |
++-----------------------------------------------------------------------------+
+
+Note that the line break from \lbr only occurs in the text, not in
+the table of contents. Use \toclbr to create a line break which
+is to occur in the table of contents. To change the amount of
+indent, use the \hangingappendixindent. You may use markup such as
+\newpage, \appendixtitle, \appendixnumber, \verticalspace, and \center-
+line within \appendixtocformat as Nested Markup. You may also use
+\hangingappendixnumber, which prints the chapter number in a similar fashion
+as \item.
+
+ ã|Example:ã%
+If you wanted appendix titles to print in a hanging paragraph style, without
+an associated appendix number, you would enter:
+
+\tocf{\appendixtocformat{\hp\appendixtitle\leader\pn}}
+
++-----------------------------------------------------------------------------+
+| |
+| The Nineteenth Century and after best-sellers |
+| and steady-sellers . . . . . . . . . . . . . . . . . . . . . . . . . 10 |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+If you want the title "Appendix" to appear left justified in the table of
+contents above the first appendix number, prior to the first appendix you
+would enter the following \putincontents markup:
+
+\putincontents1{\nin Appendix}
+\appendix{First Appendix}
+Text of the first appendix . . .
+
++-----------------------------------------------------------------------------+
+| |
+| Appendix |
+| A. First Appendix . . . . . . . . . . . . . . . . . . . . . . . . . . 11 |
++-----------------------------------------------------------------------------+
+
+ã|hangingappendixindentã% controls the amount of indent before printing the
+appendix title when you print using \hangingappendixnumber.
+
+ã|subheadatocformatã% by default prints all titles entered with \subheada to
+be block indented 1/2 inch from the left margin. Use \subheadatocformat to
+change this default.
+
++-----------------------------------------------------------------------------+
+| |
+| Chapter |
+| 1. Document Exchange . . . . . . . . . . . . . . . . . . . . . . . . . 12 |
+| Micro-to-Mainframe Links: They don't quite |
+| make it yet . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+To have subheada titles indented 1/4inch and printed with a hangingindent,
+enter:
+
+\tocf{\subheadatocformat{\leftindent{.25in}
+ \hp\subheadatitle \leader \pagenumber}}
+
++-----------------------------------------------------------------------------+
+| |
+| Chapter |
+| 1. Document Exchange . . . . . . . . . . . . . . . . . . . . . . . . . 12 |
+| Micro-to-Mainframe Links: They don't quite make |
+| it yet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 |
+| |
++-----------------------------------------------------------------------------+
+
+ã|subheadbtocformatã% by default prints all titles entered with \subheadb to
+be block indented 1 inch from the left margin. Use \subheadbtocformat to
+change the default illustrated here:
+
++-----------------------------------------------------------------------------+
+| |
+| Chapter |
+| 1. Document Exchange . . . . . . . . . . . . . . . . . . . . . . . . . 14 |
+| Micro-to-Mainframe Links: They don't |
+| quite make it yet . . . . . . . . . . . . . . . . . . . . . . 14 |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+To have subheadb titles indented /4 inch and printed with a hangingindent
+prefaced with "cc.aa.bb" where cc is the chapter number, aa is the subheada
+number and bb is the subheadb number, enter:
+
+ \tocf{\subheadbtocformat{\leftindent{.25in}
+ \hp\chapternumber.\subheadanumber.\subheadbnumber
+ \quad\subheadbtitle \leader \pagenumber}}
+
+ The first \subheadb in the second \subheada of the first chapter would
+print in the table of contents as:
+
++-----------------------------------------------------------------------------+
+| |
+| Chapter |
+| 1. Document Exchange . . . . . . . . . . . . . . . . . . . . . . . . . 15 |
+| 1.2.1 Micro-to-Mainframe Links: They |
+| don't quite make it yet . . . . . . . . . . . . . . . . . 15 |
++-----------------------------------------------------------------------------+
+
+ã|subheadctocformatã% by default prints all titles entered with \subheadc to
+be block indented 11/2inch from the left margin. Use \subheadctocformat to
+change this default.
+
++-----------------------------------------------------------------------------+
+| |
+| |
+| Chapter |
+| 1. Document Exchange .. . ...... . .. .. .. . ...... . .. .. .. . .....15 |
+| Micro-to-Mainframe Links: They |
+| don't quite make it yet .... . . ..... . . ..... . . ....15 |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+To have subheadc titles indented 3/4inch and printed in italics, enter:
+
+\tocf{\subheadctocformat{\leftindent{.75in}
+ \nin\italic
+ \subheadctitle \leader \pagenumber}}
+
++-----------------------------------------------------------------------------+
+| |
+| Chapter |
+| 1. Document Exchange . . . . . . . . . . . . . . . . . . . . . . . . . 17 |
+| Micro-to-Mainframe Links: They don't |
+| quite make it yet . . . . . . . . . . . . . . . . . . . . . . . 17 |
++-----------------------------------------------------------------------------+
+
+ã|subheaddtocformatã% by default prints all titles entered with \subheadd to
+be block indented 2 inches from the left margin. Use \subheaddtocformat to
+change this default.
+
++-----------------------------------------------------------------------------+
+| |
+| Chapter |
+| 1. Document Exchange . . . . . . . . . . . . . . . . . . . . . . . . . 17 |
+| Micro-to-Mainframe Links: |
+| They don't quite make |
+| it yet . . . . . . . . . . . . . . . . . . . . . . 17 |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+To have subheadd titles indented 2 inches, printed with a hangingindent in a
+10 point Computer Modern italic font, and no page number, enter:
+
+\tocf{\subheadatocformat{\leftindent{2in}
+ \hp\tenpt\italic
+ \subheaddtitle}}
+
++-----------------------------------------------------------------------------+
+| |
+| Chapter |
+| 1. Document Exchange . . . . . . . . . . . . . . . . . . . . . . . . . 19 |
+| Micro-to-Mainframe Links: |
+| They don't quite make it yet |
++-----------------------------------------------------------------------------+
+
+ã|bibliographytocformatã% determines how titles entered on the \bibliography
+markup are to print in the table of contents. By default, they are simply
+printed with a \noindent like prefaces. Use \bibliographytocformat to
+change this default.
+
++-----------------------------------------------------------------------------+
+| |
+| Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+If you wanted the preface title to print in bold, you would enter:
+
+\tocf{\bibliographytocformat{\nin\bold
+ \bibtitle\leader\pn}}
+
++-----------------------------------------------------------------------------+
+| |
+| ã|Bibliographyã%. . . . . . . . . . . . . . . . . . . . . . . . . . 20 |
+| |
++-----------------------------------------------------------------------------+
+
+ã|figuretoctitleã% determines how the list of figures is to print. By
+default, it will start a new page, center the title "List of Figures", and
+then print a header above the first figure, which in the example below had
+the title "Hot times . . . " and printed on page 43:
++-----------------------------------------------------------------------------+
+| |
+| 21 |
+| List of Figures |
+| Figure Page |
+| 1. Hot times in the land of the midnight sun . . . . . . . . . . . 43 |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+If you wanted the list of figures to print the title "Illustrations" instead
+of "List of Figures" after skipping to a new page, enter
+
+\tocf{\figuretoctitle{\newpage
+ \cl{\bd Illustrations}
+ \line{Figure\rt{Page}}}}
+
++-----------------------------------------------------------------------------+
+| |
+| Illustrations |
+| Figure Page |
+| 1. Hot times in the land of the midnight sun ... . ... ... . .....43 |
++-----------------------------------------------------------------------------+
+
+ã|figuretocformat{Nested Markup}ã% determines how a figure title is to be
+printed in the table of contents. By default, the figure number and title
+are printed in a hanging number style. For example, if you entered:
+
+\figure{\halfpage}{The Nineteenth Century
+and after best-sellers\toclbr and steady-sellers}
+the figure title would print in the contents as:
+
++-----------------------------------------------------------------------------+
+| |
+| 1. The Nineteenth Century and after best-sellers |
+| and steady-sellers . . . . . . . . . . . . . . . . . . . . . . . . 22 |
+| |
++-----------------------------------------------------------------------------+
+
+ To change the amount of indent, use the \hangingfigureindent. You may
+use markup such as \figuretitle and \figurenumber, within \figuretocformat
+as Nested Markup. You may also use \hangingnumber{\figurenumber} which
+prints the figure number in a similar fashion as \item.
+
+ ã|Example:ã%
+If you wanted figure titles to print in a hanging paragraph style prefaced
+with the figure number, you would enter:
+
+\tocf{\figuretocformat{\hp
+ \figurenumber\quad\figuretitle\leader\pn}}
+
++-----------------------------------------------------------------------------+
+| |
+| 1 The Nineteenth Century and after best-sellers |
+| and steady-sellers . . . . . . . . . . . . . . . . . . . . . . . . . . 23 |
++-----------------------------------------------------------------------------+
+
+ã|hangingfigureindentã% controls the amount of indent before printing the
+figure title when you print using:
+
+\hangingnumber{\figurenumber}
+
+ã|tabletoctitleã% determines how the list of tables is to print. By
+default, it will start a new page, center the title "List of Tables ", and
+then print a header above the first table, which in the example below had
+the title "Hot times . . . " and printed on page 55:
+
++-----------------------------------------------------------------------------+
+| |
+| List of Tables |
+| Table Page |
+| 1. Hot times in the land of the midnight sun . . . . . . . . . . . 55 |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Example:ã%
+If you wanted the list of tables to print the title "Tables" after skipping
+to a new page, enter
+
+\tocf{\tabletoctitle{\newpage
+ \cl{\bd Tables}
+ \line{Table\rt{Page}}}}
+
++-----------------------------------------------------------------------------+
+| |
+| Tables |
+| Table Page |
+| 1. Hot times in the land of the midnight sun . . . . . . . . . . . 55 |
+| |
++-----------------------------------------------------------------------------+
+
+ã|tabletocformat{Nested Markup}ã% determines how a table title is to be
+printed in the table of contents. By default, the table number and title
+are printed in a hanging number style. For example, if you entered:
+
+\tabletitle{The Nineteenth Century
+and after best-sellers\toclbr and steady-sellers}
+the table title would print as:
+
++-----------------------------------------------------------------------------+
+| |
+| 1. The Nineteenth Century and after best-sellers |
+| and steady-sellers . . . . . . . . . . . . . . . . . . . . . . . . 26 |
+| |
++-----------------------------------------------------------------------------+
+
+ To change the amount of indent, use the \hangingtableindent. You may
+use markup such as \tabletitle and \tablenumber, within \tabletocformat as
+Nested Markup. You may also use \hangingnumber{\tablenumber}, which prints
+the table number in a similar fashion as \item.
+
+ ã|Example:ã%
+If you wanted table titles to print in a hanging paragraph style prefaced
+with "cc.tt" where cc is the chapter number and tt is the table number, you
+would enter,
+
+\tocf{\tabletocformat{\hp\chapternumber.\tablenumber
+ \quad\tabletitle\leader\pn}}
+
+and the first table of the second chapter would print in the contents as:
+
++-----------------------------------------------------------------------------+
+| |
+| 2.1 The Nineteenth Century and after best-sellers |
+| and steady-sellers . . . . . . . . . . . . . . . . . . . . . . . . . 27 |
++-----------------------------------------------------------------------------+
+
+ã|hangingtableindentã% controls the amount of indent before printing the
+table title when you print using:
+
+\hangingnumber{\tablenumber}
+
+ ã|Notes:ã%
+The \tableofcontentsformat markup should always appear at the top of a
+document, but after \monospace, if both are used.
diff --git a/macros/text1/cms_help_files/toclbr.helpmark b/macros/text1/cms_help_files/toclbr.helpmark
new file mode 100644
index 0000000000..b7503bd102
--- /dev/null
+++ b/macros/text1/cms_help_files/toclbr.helpmark
@@ -0,0 +1,43 @@
++-----------------------------------------------------------------------------+
+| toclinebreak |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\toclbrã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \toclinebreak markup causes a line to finish without interrupting a
+paragraph in the table of contents. Occasionally it is necessary to break
+a line in a precise place within a paragraph, as opposed to letting TEXT1
+decide where to break the line. This markup does not end a paragraph, it
+simply starts the following text of the paragraph on a new line in the table
+of contents instead of concatenating it to the end of the previous line.
+
+ ã|Example:ã%
+\chapter{More facts about Datapoint
+information\toclbr processing\linebreak
+ and office
+automation products,\lbr\toclbr
+systems, and software}
+
+will print the chapter title on three lines in the text of the document:
+
++-----------------------------------------------------------------------------+
+| |
+| More facts about Datapoint information processing |
+| and office automation products, |
+| systems, and software |
++-----------------------------------------------------------------------------+
+
+and on three lines in the table of contents:
+
++-----------------------------------------------------------------------------+
+| |
+| 1. More facts about Datapoint information |
+| processing and office automation products, |
+| systems, and software . . . .... . . ...... . . .... . . ...... . . 32 |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+none.
diff --git a/macros/text1/cms_help_files/today.helpmark b/macros/text1/cms_help_files/today.helpmark
new file mode 100644
index 0000000000..3d9a1bd87c
--- /dev/null
+++ b/macros/text1/cms_help_files/today.helpmark
@@ -0,0 +1,30 @@
++-----------------------------------------------------------------------------+
+| today |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \today markup prints the current date in a standard format, "month day,
+year".
+
+ ã|Example:ã%
+\rightlinesbegin
+John R. Bays
+Philosophy 484
+\today
+\rightlinesend
+
++-----------------------------------------------------------------------------+
+| |
+| John R. Bays |
+| Philosophy 484 |
+| January 15, 1987 |
+| |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+none.
diff --git a/macros/text1/cms_help_files/topline1.helpeven b/macros/text1/cms_help_files/topline1.helpeven
new file mode 100644
index 0000000000..a839ce01d1
--- /dev/null
+++ b/macros/text1/cms_help_files/topline1.helpeven
@@ -0,0 +1,31 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \topline1-5 COMMANDS |
++-----------------------------------------------------------------------------+
+
+The \topline1-5 commands set what will appear at the top of each page after the
+title page. The \topline1-5 command is always used in conjunction with the
+\bothpages (\bp), \evenpages (\ep), or \oddpages (\op) command. This command
+has the format:
+
+ \evenpages{
+ \toplineX{llll}{cccc}{rrrr}
+ }
+
+where "X" may be 1-5 and refers to the toptitle line number; "llll" is the
+information to be printed left justified; "cccc" is the information to be
+printed centered; and "rrrr" is the information to be printed right justified.
+For example:
+
+ \evenpages{
+ \topline1{Joe Smith}{June 3, 1984}{\pagenumber}
+ \topline2{\rule}{}{}
+ }
+
+will space down the amount specified on the \topmargin command and put "Joe
+Smith" at the top far left, with "June 3, 1984" centered and the current page
+number on the top far right of the first line of each even page. On the second
+line of each even page will be a horizontal line across the width of the text.
+The running toptitle of page 4 would look like this:
+
+Joe Smith June 3, 1984 4
+_______________________________________________________________________________
diff --git a/macros/text1/cms_help_files/topline1.helpoddp b/macros/text1/cms_help_files/topline1.helpoddp
new file mode 100644
index 0000000000..592dd44217
--- /dev/null
+++ b/macros/text1/cms_help_files/topline1.helpoddp
@@ -0,0 +1,31 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \topline1-5 COMMANDS |
++-----------------------------------------------------------------------------+
+
+The \topline1-5 commands set what will appear at the top of each page after the
+title page. The \topline1-5 command is always used in conjunction with the
+\bothpages (\bp), \evenpages (\ep), or \oddpages (\op) command. This command
+has the format:
+
+ \oddpages{
+ \toplineX{llll}{cccc}{rrrr}
+ }
+
+where "X" may be 1-5 and refers to the toptitle line number; "llll" is the
+information to be printed left justified; "cccc" is the information to be
+printed centered; and "rrrr" is the information to be printed right justified.
+For example:
+
+ \oddpages{
+ \topline1{Joe Smith}{June 3, 1984}{\pagenumber}
+ \topline2{\rule}{}{}
+ }
+
+will space down the amount specified on the \topmargin command and put "Joe
+Smith" at the top far left, with "June 3, 1984" centered and the current page
+number on the top far right of the first line of each odd page. On the second
+line of each odd page will be a horizontal line across the width of the text.
+The running toptitle of page 5 would look like this:
+
+Joe Smith June 3, 1984 5
+_______________________________________________________________________________
diff --git a/macros/text1/cms_help_files/topmargi.helppage b/macros/text1/cms_help_files/topmargi.helppage
new file mode 100644
index 0000000000..407c650c62
--- /dev/null
+++ b/macros/text1/cms_help_files/topmargi.helppage
@@ -0,0 +1,21 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \topmargin (\tma) COMMAND |
++-----------------------------------------------------------------------------+
+
+The \topmargin (\tma) command will set the distance from the top of the page to
+the top of the running top title text. This command has the format:
+
+ \topmargin{uu}
+
+where "uu" is the unit of measurement in number of lines or in any valid TeX
+measurement (pt, pc, in, etc.). The default top margin is one inch, or
+\topmargin{1IN}. This command may only appear at the beginning of the TeX input
+file before any actual text is entered.
+
+In order to change the top margin from the default of one inch to one-half
+inch, you would enter:
+
+ \tma{.5in}
+
+Which would give you one-half inch between the top of the page to the top of
+the running top title.
diff --git a/macros/text1/cms_help_files/tp.helpmark b/macros/text1/cms_help_files/tp.helpmark
new file mode 100644
index 0000000000..b0e3f5dc3d
--- /dev/null
+++ b/macros/text1/cms_help_files/tp.helpmark
@@ -0,0 +1,44 @@
++-----------------------------------------------------------------------------+
+| titlepage |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\tpã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+By convention, a title page is a display page, differing from body pages.
+It usually has sinkage (extra vertical space before the title), a centered
+title (in bold or larger type), and a blind folio (where the page is
+numbered but the number is not printed). It may also have special text in
+the footing.
+ By default, the first page of any paper is a title page in TEXT1,
+although it can be suppressed by \notitlepage. Furthermore, title pages can
+be added anywhere in a paper using \titlepage. Since the title page usually
+receives different treatment from body pages, there is separate markup for
+it. By default, the title page adds 1 inch to the top margin and does not
+print a running foot line at the bottom of the page.
+ The next page after a title page in TEXT1 is always assumed to be a
+\notitlepage.
+
+ ã|Example:ã%
+Some applications have more than one page in the document which are not
+to carry a running top title. For example, if you want a chapter to
+always print without a running top title, you could add \titlepage to the
+\chapterformat markup:
+
+\chapterformat{\numberingstyle{1}
+ \titleformat{\dumpinsertseject
+ \titlepage
+ \cl{\twelvept\bd Chapter \chapternumber}
+ \cl{\twelvept\bd \chaptertitle}
+ \vs{1\bl}
+ \setsubheadanumber{0}
+ \setsubheadbnumber{0}
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}}
+
+ \incontents{yes}}
+
+ ã|Notes:ã%
+Use the \titlepageformat to change the defaults on the title page.
diff --git a/macros/text1/cms_help_files/tpf.helpmark b/macros/text1/cms_help_files/tpf.helpmark
new file mode 100644
index 0000000000..61299a89b1
--- /dev/null
+++ b/macros/text1/cms_help_files/tpf.helpmark
@@ -0,0 +1,50 @@
++-----------------------------------------------------------------------------+
+| titlepageformat |
++-----------------------------------------------------------------------------+
+
+\titlepageformat{\titleleadskip{1in}
+ \titlefootline{}
+ }
+
+Abbreviation: ã|\tpfã%
+
+Parameters: ã|submarkupã%
+
+Submarkup: ã|\titleleadskip, \titlefootlineã%
+
+ ã|Description:ã%
+By convention, a title page is a display page, differing from body pages.
+It usually has sinkage (extra vertical space before the title), a centered
+title (in bold or larger type), and a blind folio (where the page is
+numbered but the number is not printed). It may also have special text in
+the footing. The \titlepageformat markup changes the heading and footing of
+a titlepage.
+
+ã|titleleadskipã% is the amount of space to be left at the top of title
+pages, in addition to the top margin. By default, there is a 1 inch lead
+skip and a 1 inch top margin, making for a 2 inch white space at the top of
+each title page.
+
+ã|titlefootlineã% is the footing at the bottom of a title page. Similar
+in function to the running foot, its difference is that you do not specify
+\bothpage, \evenpage, or \oddpage with \titlefootline.
+
+ ã|Example:ã%
+If you want to add 3 inches to the top margin, and print "Bays" at the
+bottom of the page with the page number, enter:
+
+\titlepageformat{\titleleadskip{3in}
+ \titlefootline{\line{\lft{Bays}\rt{\pn}}}
+ }
+
+which prints a footing at the bottom of the page like:
+
++-----------------------------------------------------------------------------+
+
+| |
+| Bays 3 |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+none.
diff --git a/macros/text1/cms_help_files/tt.helpmark b/macros/text1/cms_help_files/tt.helpmark
new file mode 100644
index 0000000000..25af085df6
--- /dev/null
+++ b/macros/text1/cms_help_files/tt.helpmark
@@ -0,0 +1,50 @@
++-----------------------------------------------------------------------------+
+| typewriter |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\ttã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+Typewriter is a medium-weight uniformly spaced type face. You get this face
+when you enter \typewriter. Each character has the same width. It is handy
+in \asisbegin blocks.
+
+ ã|Example:ã%
+Using the typewriter font,
+
+\asisbegin
+And yet not cloy thy lips 1
+ with loath'd satiety, 2
+But rather famish them 3
+
+ amid their plenty, 4
+\asisend
+
+you get the line number on the right to line up:
+
++-----------------------------------------------------------------------------+
+
+| |
+| And yet not cloy thy lips 1 |
+| with loath'd satiety, 2 |
+| But rather famish them 3 |
+| amid their plenty, 4 |
+| |
++-----------------------------------------------------------------------------+
+
+Without \typewriter you get:
+
++-----------------------------------------------------------------------------+
+| |
+| And yet not cloy thy lips 1 |
+| with loath'd satiety, 2 |
+| But rather famish them 3 |
+| amid their plenty, 4 |
+| |
++-----------------------------------------------------------------------------+
+
+
+ ã|Notes:ã%
+none.
diff --git a/macros/text1/cms_help_files/twc.helpmark b/macros/text1/cms_help_files/twc.helpmark
new file mode 100644
index 0000000000..eac46c836c
--- /dev/null
+++ b/macros/text1/cms_help_files/twc.helpmark
@@ -0,0 +1,75 @@
++-----------------------------------------------------------------------------+
+| twocolumns |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\twcã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+The \twocolumns markup formats text in two columns with identical width.
+The column widths and gutter are calculated automatically within the
+specified margins. The default width of both columns is 48% of the
+galleywidth. The default gutter width is 4% of the galleywidth.
+ The Flexible format allows the user to use single column, two column,
+and three column text interchangeably on the current page by entering one of
+the markup choices at the desired point in the text. The flexible format
+will balance the text columns whenever the number of columns changes.
+ For example, if the author changes the multiple column format by
+typing a different markup TEXT1 will automatically balance the columns it
+is currently processing and change to a new number of columns. These
+instructions can be inserted at any point on the page.
+ The author may want to handle tables and other large blocks of text by
+returning to a single column for the table by typing \onecolumn immediately
+before the table and returning to two or three column formatting immediately
+after the table.
+ All running head, running foot, and inserts are printed across the
+full single column width that prints across the top of the current page.
+Footnotes will be printed across the full width at the bottom of the page.
+
+ ã|Example:ã%
+\twocolumns
+\nin Hebrew is called a Semitic language because it has
+its roots in Shem, one of the sons of Noah.
+Viewing Jerusalem as its center, it is related to the
+northern, rougher Aramaic, and to the southern, more
+polished Arabic. It has a freshness, simplicity and
+power that few modern languages possess. Bounds of the
+ancient Semitic tongue were approximately the
+Mediterranean Sea on the west, the Euphrates and Tigris
+Rivers on the easy,
+the mountains of Armenia on the north,
+and the coast of Arabia on the south. Consider the first
+character, N . . .
+
++-----------------------------------------------------------------------------+
+| |
+| Hebrew is called languages pos- |
+| a Semitic lan- sess. Bounds |
+| guage because it of the ancient |
+| has its roots Semitic tongue |
+| in Shem, one were approxi- |
+| of the sons of mately the Medi- |
+| Noah. View- terranean Sea on |
+| ing Jerusalem as the west, the |
+| its center, it Euphrates and |
+| is related to Tigris Rivers on |
+| the northern, the easy, the |
+| rougher Aramaic, mountains of Ar- |
+| and to the menia on the |
+| southern, more north, and the |
+| polished Arabic. coast of Ara- |
+| It has a fresh- bia on the |
+| ness, simplic- south. Consider |
+| ity and power the first char- |
+| that few modern acter, N . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+To change the column width or the gutter width, use the \multicolumnformat
+markup.
+ You cannot specify \twocolumns inside of \vbox, \drawbox, \paragraphbox,
+or a floating \figure (non floating figures, \nofloat, are ok).
+ If you want footnotes and figures to print in one column instead of
+across both columns, use the \fixedformat markup.
diff --git a/macros/text1/cms_help_files/twelvept.helpmark b/macros/text1/cms_help_files/twelvept.helpmark
new file mode 100644
index 0000000000..3a4cfcfd53
--- /dev/null
+++ b/macros/text1/cms_help_files/twelvept.helpmark
@@ -0,0 +1,44 @@
++-----------------------------------------------------------------------------+
+| twelvept |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|noneã%
+
+ ã|Description:ã%
+There are two default \selectfontsets established when you format a TEXT1
+file: \twelvept for the 12 point size Computer Modern serif typestyle; and
+\tenpt for the 10 point Computer Modern serif typestyle.
+ The font set includes the following nine faces, each of which is called
+by adding a backslash in front of the name, or using the abbreviation:
+\roman (\rm), \bold (\bd), \italic (\it), \typewriter (\tt), \caps (\cc),
+\mathitalic (\mi), \symbol (\sy), \extension (\ex), and \bolditalic (\bi).
+
+ ã|Example:ã%
+Consider this example for switching from 12 point to a 10 point size.
+
+\tenpt
+\centerline{\twelvept\bd Sociogeology}
+\centerline{\it by Achilles Chert}
+"Does the absurd dictate death?" asks Albert Camus,
+
++-----------------------------------------------------------------------------+
+| |
+| Sociogeology |
+| by Achilles Chert |
+| "Does the absurd dictate death?" asks Albert Camus, |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+There are some markup, such as \tableformat, \runningheadformat, \run-
+ningfootformat, \chapterformat, \partformat and the other heading markup.
+If you want to use another 12 point font set (like Plantin) as the
+default instead of Computer Modern, you must give that set the same name,
+"twelvept":
+
+\selectfontset{pl10}{tenpt}{default}
+\selectfontset{pl12}{twelvept}{default}
+\selectmathset{cg97m}{mathdefault}
+\twelvept
diff --git a/macros/text1/cms_help_files/us.helpmark b/macros/text1/cms_help_files/us.helpmark
new file mode 100644
index 0000000000..29e63f08f1
--- /dev/null
+++ b/macros/text1/cms_help_files/us.helpmark
@@ -0,0 +1,34 @@
++-----------------------------------------------------------------------------+
+| underscore |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\usã%
+
+Parameters: ã|textã%
+
+ ã|Description:ã%
+Underscoring, drawing a line under words or sentences, is also used for
+emphasis and to indicate book titles.
+
+ ã|Example:ã%
+
+Figure 1 shows a schema borrowed from my previous
+book, \us{The} \us{Intact} \us{Societies:}
+\us{Vestals} \us{and} \us{Volcanos}
+\us{in} \us{the} \us{South Pacific}, which suggests . . .
+ff
++-----------------------------------------------------------------------------+
+| |
+| Figure 1 shows a schema borrowed from my previous book, The Intact |
+| Societies: Vestals and Volcanos in the South Pacific, which suggests |
+| . . . |
+| |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+In proportional spacing, the \underscore markup has the occasional
+disadvantage of preventing hyphenation and line breaking, which can result
+in awkward or impossible interword spacing and line breaks. To remedy this,
+put each word to be underscored inside of its own \underscore markup as
+illustrated above.
+ Do not use \underscore in math mode; use \underline instead.
diff --git a/macros/text1/cms_help_files/vbox.helpmark b/macros/text1/cms_help_files/vbox.helpmark
new file mode 100644
index 0000000000..981ddf97ae
--- /dev/null
+++ b/macros/text1/cms_help_files/vbox.helpmark
@@ -0,0 +1,32 @@
++-----------------------------------------------------------------------------+
+| vbox |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|box materialã%
+
+ ã|Description:ã%
+The \vbox markup has many uses. One use is to be able to put multiple lines
+into a \drawbox markup.
+
+ ã|Example:ã%
+\drawbox{\vbox{The Center for Unpleasant Phenomena
+is the research arm of Giga Geologicals,
+Inc. No apologies
+are tendered for the nonverifiability of experiments.
+The opinions of the authors do not reflect
+company policy.}}
+
++-----------------------------------------------------------------------------+
+| |
+| ........................................................................... |
+| . The Center for Unpleasant Phenomena is the research arm of Gig . |
+| . Geologicals, Inc. No apologies are tendered for the nonverifiability of . |
+| . experiments. The opinions of the authors do not reflect company policy. . |
+| ........................................................................... |
+| |
++-----------------------------------------------------------------------------+.
+
+ ã|Notes:ã%
+Refer to The TEXbook for more on this markup.
diff --git a/macros/text1/cms_help_files/vertical.helpvert b/macros/text1/cms_help_files/vertical.helpvert
new file mode 100644
index 0000000000..872fadaa4f
--- /dev/null
+++ b/macros/text1/cms_help_files/vertical.helpvert
@@ -0,0 +1,21 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \verticalspace (\vs) COMMAND |
++-----------------------------------------------------------------------------+
+
+The \verticalspace (\vs) command will leave the specified amount of space or
+the specified number of blank lines in the text. This command will also force
+the following text into a new paragraph. The format for the \verticalspace
+(\vs) command is:
+
+ \verticalspace{x}
+
+Where "x" is the number of blank lines or space you wish to leave. For
+example,
+
+ \verticalspace{4\bl}
+
+will leave four blank lines, and
+
+ \verticalspace{2in}
+
+will leave two inches of blank space.
diff --git a/macros/text1/cms_help_files/vrule.helpmark b/macros/text1/cms_help_files/vrule.helpmark
new file mode 100644
index 0000000000..60e469f102
--- /dev/null
+++ b/macros/text1/cms_help_files/vrule.helpmark
@@ -0,0 +1,19 @@
++-----------------------------------------------------------------------------+
+| vrule |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|noneã%
+
+Parameters: ã|dimensionã%
+
+ ã|Description:ã%
+The \vrule markup draws a vertical rule. It is a native TEX markup, and
+the usage is different in that the parameter is not surrounded with curly
+braces. If you do not supply a dimension, TEXT1 will print the rule with
+a height of the highest character in that line and the depth of the deepest
+character in that line. By default, the rule drawn has a thickness (width)
+of .4pt.
+
+ ã|Notes:ã%
+Refer to The TEXbook for more on \vrule and how to use the "depth" parameter
+with the "height" and "width" parameters.
diff --git a/macros/text1/cms_help_files/vs.helpmark b/macros/text1/cms_help_files/vs.helpmark
new file mode 100644
index 0000000000..fb1a1cc8f6
--- /dev/null
+++ b/macros/text1/cms_help_files/vs.helpmark
@@ -0,0 +1,53 @@
++-----------------------------------------------------------------------------+
+| verticalspace |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\vsã%
+
+Parameters: ã|units of measureã%
+
+ ã|Description:ã%
+The \verticalspace markup creates blank lines (or space) on a page. This
+markup causes a break in text and leaves a specified amount of space within
+a page. Any following text starts a new paragraph. The total amount of
+white space left is the units of measure (dimension) in the \verticalspace,
+plus the current paragraph skip value. This markup is followed by a
+parameter, which can be entered in whole blank lines, inches, points, or
+other valid units of measure.
+
+ ã|Example:ã%
+\verticalspace{24pt}
+
+{\bd Minerals and Human Behavior}
+\verticalspace{1\bl}
+"Does the Absurd dictate death?" asks Albert
+Camus, a novelist who lionized the labors of . . .
+
++-----------------------------------------------------------------------------+
+| |
+| |
+| |
+| |
+| Minerals and Human Behavior |
+| |
+| "Does the Absurd dictate death?" asks Albert Camus, a novelist who |
+| lionized the labors of . . . |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+You can tell TEXT1 you want a variable amount of white space between lines
+by entering something line:
+
+\verticalspace{10pt plus 2pt minus 1pt}
+
+which tells TEXT1 you want 10 points of white space in addition to the
+paragraph skip. If TEXT1 cannot balance text to the bottom of the page
+when \normalbottom is in effect (which is the default), then the above
+specification allows TEXT1 to add up to 2 points of white space or subtract
+up to 1 point of white space from the 10 points of white space.
+ If you enter a \verticalspace markup at the top of a page it will be
+ignored. Putting a \verticalspace at the bottom of a page is risky, also,
+if the amount of space left on the page is less than the amount asked for.
+The difference will not be carried over to the following page; it will be
+lost. Both difficulties can be resolved by using a required space markup,
+\verticalspacekeep.
diff --git a/macros/text1/cms_help_files/vsk.helpmark b/macros/text1/cms_help_files/vsk.helpmark
new file mode 100644
index 0000000000..12befa9880
--- /dev/null
+++ b/macros/text1/cms_help_files/vsk.helpmark
@@ -0,0 +1,45 @@
++-----------------------------------------------------------------------------+
+| verticalspacekeep |
++-----------------------------------------------------------------------------+
+
+Abbreviation: ã|\vskã%
+
+Parameters: ã|units of measureã%
+
+ ã|Description:ã%
+The \verticalspacekeep markup leaves a required amount of space, for a
+figure, plate, or table. The space will always be kept together on
+the current page or printed at the top of the next page if not enough
+space remains on the current page. Text that follows a \verticalspacekeep
+will not be used to fill in the current page if the required space is
+moved to the following page. The amount of white space left is the
+\verticalspacekeep dimension plus the current paragraph skip value.
+
+ ã|Example:ã%
+\verticalspacekeep{2in}
+
+{\bd Sociogeology}
+{\it Minerals and Human Behavior}
+
++-----------------------------------------------------------------------------+
+| |
+| |
+| |
+| |
+| |
+| |
+| |
+| |
+| |
+| |
+| |
+| |
+| |
+| |
+| Sociogeology Minerals and Human Behavior |
++-----------------------------------------------------------------------------+
+
+ ã|Notes:ã%
+
+\verticalspacekeep is the best way to have white space left at the top of a
+page. \verticalspace will not leave white space at the top of a page.
diff --git a/macros/text1/cms_help_files/width.helppage b/macros/text1/cms_help_files/width.helppage
new file mode 100644
index 0000000000..ec89a93efc
--- /dev/null
+++ b/macros/text1/cms_help_files/width.helppage
@@ -0,0 +1,13 @@
++-----------------------------------------------------------------------------+
+| TEXT1 \width COMMAND |
++-----------------------------------------------------------------------------+
+
+The \width command specifies the width of the page that will be used for
+printing the file. The format is:
+
+ \width{uu}
+
+where "uu" is the unit of measurement in any valid TeX measurement (pt, pc, in,
+etc.) or number of 10-pitch characters. The default page width is 8.5 inches,
+or \width{8.5IN}. This command may only appear at the beginning of the TeX
+input file before any actual text is entered.
diff --git a/macros/text1/compugraphics_8600/et10.textext b/macros/text1/compugraphics_8600/et10.textext
new file mode 100644
index 0000000000..5b2e237237
--- /dev/null
+++ b/macros/text1/compugraphics_8600/et10.textext
@@ -0,0 +1,37 @@
+\font\cgetXrm=etr at 10pt\font\cgetXit=eti at 10pt
+\font\cgetXbd=etb at 10pt \font\cgetXmi=mthit at 10pt
+\font\cgetXsy=symbola at 10pt \font\cgetXex=ext at 10pt
+\font\cgetXbi=etbi at 10pt \font\cgetXtt=elite at 10pt
+\font\cgetXcc=etsc at 10pt\font\cgetXmrm=mthrm at 10pt
+\expandafter\newdimen\csname\the\naMEtok ilsxet\endcsname
+\global\csname\the\naMEtok ilsxet\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxet\endcsname=0pt
+\csname\the\naMEtok ilsxet\endcsname=12pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+ \def\noexpand\rm{\fam0\cgetXrm}%
+ \def\noexpand\mi{\fam1\cgetXmi}%
+ \def\noexpand\sy{\fam2\cgetXsy}%
+ \def\noexpand\ex{\fam3\cgetXex}%
+ \textfont0=\cgetXmrm \textfont1=\cgetXmi
+ \textfont2=\cgetXsy \textfont3=\cgetXex
+ \textfont\itfam=\cgetXit\textfont\bifam=\cgetXbi
+ \textfont\ttfam=\cgetXtt \textfont\bffam=\cgetXbd
+ \textfont\ccfam=\cgetXcc
+ \def\noexpand\bd{\fam\bffam\cgetXbd}%
+ \def\noexpand\it{\fam\itfam\cgetXit}%
+ \def\noexpand\bi{\fam\bifam\cgetXbi}%
+ \def\noexpand\tt{\fam\ttfam\cgetXtt}%
+ \def\noexpand\cc{\fam\ccfam\cgetXcc}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it
+\noexpand\let\noexpand\bold=\noexpand\bd
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\caps=\noexpand\cc
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxet\noexpand\endcsname}}%
diff --git a/macros/text1/compugraphics_8600/et11.textext b/macros/text1/compugraphics_8600/et11.textext
new file mode 100644
index 0000000000..2cc84b4c7b
--- /dev/null
+++ b/macros/text1/compugraphics_8600/et11.textext
@@ -0,0 +1,37 @@
+\font\cgetXIrm=etr at 11pt\font\cgetXIit=eti at 11pt
+\font\cgetXIbd=etb at 11pt \font\cgetXImi=mthit at 11pt
+\font\cgetXIsy=symbola at 11pt \font\cgetXIex=ext at 11pt
+\font\cgetXIbi=etbi at 11pt \font\cgetXItt=elite at 11pt
+\font\cgetXIcc=etsc at 11pt\font\cgetXImrm=mthrm at 11pt
+\expandafter\newdimen\csname\the\naMEtok ilsxiet\endcsname
+\global\csname\the\naMEtok ilsxiet\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxiet\endcsname=0pt
+\csname\the\naMEtok ilsxiet\endcsname=13pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+ \def\noexpand\rm{\fam0\cgetXIrm}%
+ \def\noexpand\mi{\fam1\cgetXImi}%
+ \def\noexpand\sy{\fam2\cgetXIsy}%
+ \def\noexpand\ex{\fam3\cgetXIex}%
+ \textfont0=\cgetXImrm \textfont1=\cgetXImi
+ \textfont2=\cgetXIsy \textfont3=\cgetXIex
+ \textfont\itfam=\cgetXIit\textfont\bifam=\cgetXIbi
+ \textfont\ttfam=\cgetXItt \textfont\bffam=\cgetXIbd
+ \textfont\ccfam=\cgetXIcc
+ \def\noexpand\bd{\fam\bffam\cgetXIbd}%
+ \def\noexpand\it{\fam\itfam\cgetXIit}%
+ \def\noexpand\bi{\fam\bifam\cgetXIbi}%
+ \def\noexpand\tt{\fam\ttfam\cgetXItt}%
+ \def\noexpand\cc{\fam\ccfam\cgetXIcc}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it
+\noexpand\let\noexpand\bold=\noexpand\bd
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\caps=\noexpand\cc
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxiet\noexpand\endcsname}}%
diff --git a/macros/text1/compugraphics_8600/et12.textext b/macros/text1/compugraphics_8600/et12.textext
new file mode 100644
index 0000000000..85c9acc6f7
--- /dev/null
+++ b/macros/text1/compugraphics_8600/et12.textext
@@ -0,0 +1,37 @@
+\font\cgetXIIrm=etr at 12pt\font\cgetXIIit=eti at 12pt
+\font\cgetXIIbd=etb at 12pt \font\cgetXIImi=mthit at 12pt
+\font\cgetXIIsy=symbola at 12pt \font\cgetXIIex=ext at 12pt
+\font\cgetXIIbi=etbi at 12pt \font\cgetXIItt=elite at 12pt
+\font\cgetXIIcc=etsc at 12pt\font\cgetXIImrm=mthrm at 12pt
+\expandafter\newdimen\csname\the\naMEtok ilsxiiet\endcsname
+\global\csname\the\naMEtok ilsxiiet\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxiiet\endcsname=0pt
+\csname\the\naMEtok ilsxiiet\endcsname=14pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+ \def\noexpand\rm{\fam0\cgetXIIrm}%
+ \def\noexpand\mi{\fam1\cgetXIImi}%
+ \def\noexpand\sy{\fam2\cgetXIIsy}%
+ \def\noexpand\ex{\fam3\cgetXIIex}%
+ \textfont0=\cgetXIImrm \textfont1=\cgetXIImi
+ \textfont2=\cgetXIIsy \textfont3=\cgetXIIex
+ \textfont\itfam=\cgetXIIit\textfont\bifam=\cgetXIIbi
+ \textfont\ttfam=\cgetXIItt \textfont\bffam=\cgetXIIbd
+ \textfont\ccfam=\cgetXIIcc
+ \def\noexpand\bd{\fam\bffam\cgetXIIbd}%
+ \def\noexpand\it{\fam\itfam\cgetXIIit}%
+ \def\noexpand\bi{\fam\bifam\cgetXIIbi}%
+ \def\noexpand\tt{\fam\ttfam\cgetXIItt}%
+ \def\noexpand\cc{\fam\ccfam\cgetXIIcc}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it
+\noexpand\let\noexpand\bold=\noexpand\bd
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\caps=\noexpand\cc
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxiiet\noexpand\endcsname}}%
diff --git a/macros/text1/compugraphics_8600/et14.textext b/macros/text1/compugraphics_8600/et14.textext
new file mode 100644
index 0000000000..01a5295803
--- /dev/null
+++ b/macros/text1/compugraphics_8600/et14.textext
@@ -0,0 +1,37 @@
+\font\cgetXIVrm=etr at 14pt\font\cgetXIVit=eti at 14pt
+\font\cgetXIVbd=etb at 14pt \font\cgetXIVmi=mthit at 14pt
+\font\cgetXIVsy=symbola at 14pt \font\cgetXIVex=ext at 14pt
+\font\cgetXIVbi=etbi at 14pt \font\cgetXIVtt=elite at 14pt
+\font\cgetXIVcc=etsc at 14pt\font\cgetXIVmrm=mthrm at 14pt
+\expandafter\newdimen\csname\the\naMEtok ilsxivet\endcsname
+\global\csname\the\naMEtok ilsxivet\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxivet\endcsname=0pt
+\csname\the\naMEtok ilsxivet\endcsname=16pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+ \def\noexpand\rm{\fam0\cgetXIVrm}%
+ \def\noexpand\mi{\fam1\cgetXIVmi}%
+ \def\noexpand\sy{\fam2\cgetXIVsy}%
+ \def\noexpand\ex{\fam3\cgetXIVex}%
+ \textfont0=\cgetXIVmrm \textfont1=\cgetXIVmi
+ \textfont2=\cgetXIVsy \textfont3=\cgetXIVex
+ \textfont\itfam=\cgetXIVit\textfont\bifam=\cgetXIVbi
+ \textfont\ttfam=\cgetXIVtt \textfont\bffam=\cgetXIVbd
+ \textfont\ccfam=\cgetXIVcc
+ \def\noexpand\bd{\fam\bffam\cgetXIVbd}%
+ \def\noexpand\it{\fam\itfam\cgetXIVit}%
+ \def\noexpand\bi{\fam\bifam\cgetXIVbi}%
+ \def\noexpand\tt{\fam\ttfam\cgetXIVtt}%
+ \def\noexpand\cc{\fam\ccfam\cgetXIVcc}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it
+\noexpand\let\noexpand\bold=\noexpand\bd
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\caps=\noexpand\cc
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxivet\noexpand\endcsname}}%
diff --git a/macros/text1/compugraphics_8600/et18.textext b/macros/text1/compugraphics_8600/et18.textext
new file mode 100644
index 0000000000..e59a1bc47e
--- /dev/null
+++ b/macros/text1/compugraphics_8600/et18.textext
@@ -0,0 +1,37 @@
+\font\cgetXVIIIrm=etr at 18pt\font\cgetXVIIIit=eti at 18pt
+\font\cgetXVIIIbd=etb at 18pt \font\cgetXVIIImi=mthit at 18pt
+\font\cgetXVIIIsy=symbola at 18pt \font\cgetXVIIIex=ext at 18pt
+\font\cgetXVIIIbi=etbi at 18pt \font\cgetXVIIItt=elite at 18pt
+\font\cgetXVIIIcc=etsc at 18pt\font\cgetXVIIImrm=mthrm at 18pt
+\expandafter\newdimen\csname\the\naMEtok ilsxviiiet\endcsname
+\global\csname\the\naMEtok ilsxviiiet\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxviiiet\endcsname=0pt
+\csname\the\naMEtok ilsxviiiet\endcsname=20pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+ \def\noexpand\rm{\fam0\cgetXVIIIrm}%
+ \def\noexpand\mi{\fam1\cgetXVIIImi}%
+ \def\noexpand\sy{\fam2\cgetXVIIIsy}%
+ \def\noexpand\ex{\fam3\cgetXVIIIex}%
+ \textfont0=\cgetXVIIImrm \textfont1=\cgetXVIIImi
+ \textfont2=\cgetXVIIIsy \textfont3=\cgetXVIIIex
+ \textfont\itfam=\cgetXVIIIit\textfont\bifam=\cgetXVIIIbi
+ \textfont\ttfam=\cgetXVIIItt \textfont\bffam=\cgetXVIIIbd
+ \textfont\ccfam=\cgetXVIIIcc
+ \def\noexpand\bd{\fam\bffam\cgetXVIIIbd}%
+ \def\noexpand\it{\fam\itfam\cgetXVIIIit}%
+ \def\noexpand\bi{\fam\bifam\cgetXVIIIbi}%
+ \def\noexpand\tt{\fam\ttfam\cgetXVIIItt}%
+ \def\noexpand\cc{\fam\ccfam\cgetXVIIIcc}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it
+\noexpand\let\noexpand\bold=\noexpand\bd
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\caps=\noexpand\cc
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxviiiet\noexpand\endcsname}}%
diff --git a/macros/text1/compugraphics_8600/et8.textext b/macros/text1/compugraphics_8600/et8.textext
new file mode 100644
index 0000000000..ad30284fa6
--- /dev/null
+++ b/macros/text1/compugraphics_8600/et8.textext
@@ -0,0 +1,37 @@
+\font\cgetVIIIrm=etr at 8pt\font\cgetVIIIit=eti at 8pt
+\font\cgetVIIIbd=etb at 8pt \font\cgetVIIImi=mthit at 8pt
+\font\cgetVIIIsy=symbola at 8pt \font\cgetVIIIex=ext at 8pt
+\font\cgetVIIIbi=etbi at 8pt \font\cgetVIIItt=elite at 8pt
+\font\cgetVIIIcc=etsc at 8pt\font\cgetVIIImrm=mthrm at 8pt
+\expandafter\newdimen\csname\the\naMEtok ilsviiiet\endcsname
+\global\csname\the\naMEtok ilsviiiet\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsviiiet\endcsname=0pt
+\csname\the\naMEtok ilsviiiet\endcsname=10pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+ \def\noexpand\rm{\fam0\cgetVIIIrm}%
+ \def\noexpand\mi{\fam1\cgetVIIImi}%
+ \def\noexpand\sy{\fam2\cgetVIIIsy}%
+ \def\noexpand\ex{\fam3\cgetVIIIex}%
+ \textfont0=\cgetVIIImrm \textfont1=\cgetVIIImi
+ \textfont2=\cgetVIIIsy \textfont3=\cgetVIIIex
+ \textfont\itfam=\cgetVIIIit\textfont\bifam=\cgetVIIIbi
+ \textfont\ttfam=\cgetVIIItt \textfont\bffam=\cgetVIIIbd
+ \textfont\ccfam=\cgetVIIIcc
+ \def\noexpand\bd{\fam\bffam\cgetVIIIbd}%
+ \def\noexpand\it{\fam\itfam\cgetVIIIit}%
+ \def\noexpand\bi{\fam\bifam\cgetVIIIbi}%
+ \def\noexpand\tt{\fam\ttfam\cgetVIIItt}%
+ \def\noexpand\cc{\fam\ccfam\cgetVIIIcc}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it
+\noexpand\let\noexpand\bold=\noexpand\bd
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\caps=\noexpand\cc
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsviiiet\noexpand\endcsname}}%
diff --git a/macros/text1/compugraphics_8600/et9.textext b/macros/text1/compugraphics_8600/et9.textext
new file mode 100644
index 0000000000..ed560d4d5b
--- /dev/null
+++ b/macros/text1/compugraphics_8600/et9.textext
@@ -0,0 +1,37 @@
+\font\cgetIXrm=etr at 9pt\font\cgetIXit=eti at 9pt
+\font\cgetIXbd=etb at 9pt \font\cgetIXmi=mthit at 9pt
+\font\cgetIXsy=symbola at 9pt \font\cgetIXex=ext at 9pt
+\font\cgetIXbi=etbi at 9pt \font\cgetIXtt=elite at 9pt
+\font\cgetIXcc=etsc at 9pt\font\cgetIXmrm=mthrm at 9pt
+\expandafter\newdimen\csname\the\naMEtok ilsixet\endcsname
+\global\csname\the\naMEtok ilsixet\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsixet\endcsname=0pt
+\csname\the\naMEtok ilsixet\endcsname=11pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+ \def\noexpand\rm{\fam0\cgetIXrm}%
+ \def\noexpand\mi{\fam1\cgetIXmi}%
+ \def\noexpand\sy{\fam2\cgetIXsy}%
+ \def\noexpand\ex{\fam3\cgetIXex}%
+ \textfont0=\cgetIXmrm \textfont1=\cgetIXmi
+ \textfont2=\cgetIXsy \textfont3=\cgetIXex
+ \textfont\itfam=\cgetIXit\textfont\bifam=\cgetIXbi
+ \textfont\ttfam=\cgetIXtt \textfont\bffam=\cgetIXbd
+ \textfont\ccfam=\cgetIXcc
+ \def\noexpand\bd{\fam\bffam\cgetIXbd}%
+ \def\noexpand\it{\fam\itfam\cgetIXit}%
+ \def\noexpand\bi{\fam\bifam\cgetIXbi}%
+ \def\noexpand\tt{\fam\ttfam\cgetIXtt}%
+ \def\noexpand\cc{\fam\ccfam\cgetIXcc}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it
+\noexpand\let\noexpand\bold=\noexpand\bd
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\caps=\noexpand\cc
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsixet\noexpand\endcsname}}%
diff --git a/macros/text1/compugraphics_8600/etb.fontinfo b/macros/text1/compugraphics_8600/etb.fontinfo
new file mode 100644
index 0000000000..3a9571f163
--- /dev/null
+++ b/macros/text1/compugraphics_8600/etb.fontinfo
@@ -0,0 +1,236 @@
+* TEX font info -- commerical font format -- English Times Bold 4/25/85
+* CG 5039 Layout, and 1614 Complement, typeface 707
+*
+HUNITS 1/54
+VUNITS 1/64
+DEFFONT 032
+DEFWIDTH 1
+SLANT 0
+SPACE 15/54
+SPSTRETCH 12/54
+SPSHRINK 5/54
+XHEIGHT 30/64
+QUAD 1
+EXTRASPACE 1/10
+FONTNAME ETB
+*
+* WIDTH HEIGHT DEPTH 8600 Decimal
+$
+1/2 54 45 0 au,97
+1/4 54 45 0 au,98
+3/4 54 45 0 au,99
+1/3 54 45 3 au,104
+2/3 54 45 0 au,105
+enbul 27 40 0 au,40
+cent 27 40 0 au,36
+openbox 54 45 0 au,37
+1/8 54 45 0 au,100
+3/8 54 45 0 au,101
+5/8 54 45 0 au,102
+ff LIGATURE f+f 33 45 0 au,120
+fi LIGATURE f+i 30 45 0 au,118
+fl LIGATURE f+l 30 45 0 au,119
+ffi LIGATURE ff+i 45 45 0 au,121
+ffl LIGATURE ff+l 45 45 0 au,122
+dotless-i 15 35 0 au,127
+undef 27 0 0 30
+grave 13 45 0 au,82
+acute 13 45 0 au,81
+invertcircum 14 45 0 f195,37
+breve 13 45 0 f195,26
+macron 14 45 0 f195,au,90
+circleaccent 14 45 0 f195,42
+cedila 13 5 10 au,93
+germanSS 30 45 0 au,30
+ae 42 35 0 f35,au,111
+oe 45 35 0 f35,11
+scano 30 35 5 f30,06
+AE 54 45 0 f35,64
+OE 54 45 0 f35,09
+ScanO 42 45 5 f30,au,07
+PolishSl 18 35 0 vmf3,45,vmr3
+! 21 45 0 40
+right" LIGATURE '+' 20 45 0 39,hml2,39
+# 27 45 0 au,114
+dollar 27 45 5 au,35
+% 54 45 0 au,49
+& 39 45 0 91
+' 12 45 0 39
+( 18 45 5 58
+) 18 45 5 59
+* 27 45 0 92
++ 36 45 0 F186,Au,46
+, 18 10 10 44
+hyphen 18 20 0 45
+. 18 10 0 46
+/ 27 45 0 au,33
+0 27 45 0 48
+1 27 45 0 49
+2 27 45 0 50
+3 27 45 0 51
+4 27 45 0 52
+5 27 45 0 53
+6 27 45 0 54
+7 27 45 0 55
+8 27 45 0 56
+9 27 45 0 57
+: 18 35 0 35
+; 18 35 10 32
+invert! 21 45 5 41
+= 36 45 0 F186,Au,43
+invert? 24 45 5 37
+? 27 45 0 36
+@ 54 45 0 f38,93
+A 42 45 0 65
+B 36 45 0 66
+C 39 45 0 67
+D 42 45 0 68
+E 36 45 0 69
+F 33 45 0 70
+G 42 45 0 71
+H 45 45 0 72
+I 21 45 0 73
+J 27 45 0 74
+K 39 45 0 75
+L 36 45 0 76
+M 51 45 0 77
+N 42 45 0 78
+O 42 45 0 79
+P 36 45 0 80
+Q 42 45 15 81
+R 39 45 0 82
+S 30 45 0 83
+T 36 45 0 84
+U 42 45 0 85
+V 39 45 0 86
+W 54 45 0 87
+X 42 45 0 88
+Y 39 45 0 89
+Z 36 45 0 90
+[ 18 45 10 94
+left" LIGATURE l×+l× 20 45 0 38,hml2,38
+] 18 45 10 95
+circumflex 13 45 0 au,83
+raiseddot 14 45 0 f195,41
+l× 12 45 0 38
+a 27 35 0 97
+b 30 45 0 98
+c 24 35 0 99
+d 30 45 0 100
+e 24 35 0 101
+f 21 45 0 102
+g 27 35 10 103
+h 30 45 0 104
+i 15 45 0 105
+j 18 45 10 106
+k 30 45 0 107
+l 15 45 0 108
+m 45 35 0 109
+n 30 35 0 110
+o 30 35 0 111
+p 30 35 10 112
+q 30 35 10 113
+r 21 35 0 114
+s 21 35 0 115
+t 18 45 0 116
+u 30 35 0 117
+v 27 35 0 118
+w 39 35 0 119
+x 27 35 0 120
+y 27 35 10 121
+z 24 35 0 122
+endash LIGATURE hyphen+hyphen 31 25 0 45,hml5,45,hmr5
+emdash LIGATURE endash+hyphen 54 25 0 47
+Hungarian 15 50 0 f189,au,116
+tilde 13 45 0 au,86
+umlaut 13 45 0 au,84
+kern a+v -54/36
+kern a+w -54/36
+kern a+y -54/36
+kern h+t -54/36
+kern h+u -54/36
+kern h+y -54/36
+kern k+e -54/36
+kern m+b -54/36
+kern m+u -54/36
+kern m+y -54/36
+kern n+t -54/36
+kern n+u -54/36
+kern n+v -54/36
+kern n+w -54/36
+kern n+y -54/36
+kern o+o 54/51
+kern o+v -54/36
+kern o+w -54/36
+kern o+x -54/36
+kern o+y -54/36
+kern t+w -54/36
+kern t+y -54/36
+kern v+e -54/36
+kern v+o -54/36
+kern w+a -54/36
+kern w+e -54/36
+kern w+o -54/36
+kern y+a -54/36
+kern y+e -54/36
+kern y+o -54/36
+kern A+T -54/14
+kern A+Y -54/10
+kern A+V -54/6
+kern A+v -54/28
+kern D+A -54/14
+kern D+V -54/14
+kern D+W -54/14
+kern D+Y -54/12
+kern F+a -54/18
+kern F+e -54/32
+kern F+o -54/18
+kern F+r -54/22
+kern F+u -54/18
+kern F+A -54/14
+kern F+O -54/18
+kern K+O -54/14
+kern L+O -54/14
+kern L+U -54/17
+kern L+Y -54/12
+kern O+A -54/14
+kern O+V -54/12
+kern O+W -54/14
+kern O+X -54/12
+kern O+Y -54/12
+kern P+A -54/16
+kern P+r -54/34
+kern R+O -54/14
+kern R+T -54/16
+kern R+U -54/18
+kern R+V -54/16
+kern R+Y -54/14
+kern T+a -54/14
+kern T+e -54/16
+kern T+o -54/14
+kern T+r -54/14
+kern T+u -54/14
+kern T+w -54/16
+kern T+A -54/16
+kern T+O -54/22
+kern V+a -54/16
+kern V+e -54/16
+kern V+o -54/16
+kern V+r -54/16
+kern V+u -54/16
+kern V+A -54/6
+kern V+O -54/18
+kern W+a -54/14
+kern W+e -54/14
+kern W+o -54/14
+kern W+r -54/15
+kern W+u -54/15
+kern W+A -54/10
+kern W+O -54/14
+kern X+O -54/12
+kern Y+a -54/12
+kern Y+e -54/12
+kern Y+o -54/12
+kern Y+r -54/14
+kern Y+u -54/12
+kern Y+A -54/14
diff --git a/macros/text1/compugraphics_8600/etbi.fontinfo b/macros/text1/compugraphics_8600/etbi.fontinfo
new file mode 100644
index 0000000000..f2b7ae9d4f
--- /dev/null
+++ b/macros/text1/compugraphics_8600/etbi.fontinfo
@@ -0,0 +1,233 @@
+* TEX font info--commerical font format--English Times Bold Italic 4/25/85
+*
+HUNITS 1/54
+VUNITS 1/64
+DEFFONT 033
+DEFWIDTH 1
+SLANT 0
+SPACE 22/54
+SPSTRETCH 15/54
+SPSHRINK 13/54
+XHEIGHT 30/64
+QUAD 1
+EXTRASPACE 2/10
+fontname ETBI
+* WIDTH HEIGHT DEPTH 8600 Decimal
+$
+undef 27 0 0 30
+undef 27 0 0 30
+undef 27 0 0 30
+undef 27 0 0 30
+undef 27 0 0 30
+enbul 27 30 0 au,110
+dagger 27 45 5 au,31
+undef 27 0 0 30
+undef 27 0 0 30
+undef 27 0 0 30
+section 27 45 5 60
+ff LIGATURE f+f 33 45 15 au,120
+fi LIGATURE f+i 30 45 15 au,118
+fl LIGATURE f+l 30 45 15 au,119
+ffi LIGATURE ff+i 45 45 15 au,121
+ffl LIGATURE ff+l 45 45 15 au,122
+iota 15 35 0 f193,105
+undef 0 0 0 30
+grave 15 45 0 au,82
+acute 15 45 0 au,81
+invertcircum 15 45 0 f195,37
+breve 15 45 0 f195,26
+macron 15 45 0 f195,au,90
+circleaccent 15 45 0 f195,42
+cedila 15 10 15 au,93
+Germanss 30 45 10 au,30
+ae 50 35 0 97,hml10,101,hmr10
+oe 52 35 0 111,hml11,101,hmr11
+pound 27 45 0 96
+AE 72 45 0 65,hml17,69,hmr17
+OE 75 45 0 79,hml16,69,hmr16
+SCANO 42 45 5 f30,au,07
+PolishSl 18 20 0 vmr2,hml1,45,hmr1,vmf1
+! 21 45 0 40
+right" LIGATURE '+' 24 45 0 39,hml2,39,hmr2
+litre 27 45 0 F188,au,111
+dollar 27 45 5 au,35
+% 54 45 0 au,49
+& 39 45 0 91
+' 12 45 0 39
+( 18 45 10 58
+) 18 45 10 59
+* 27 45 0 92
+plus 54 35 0 au,46
+, 18 10 10 44
+hyphen 18 15 15 45
+. 18 10 0 46
+/ 27 45 0 au,33
+0 27 45 0 48
+1 27 45 0 49
+2 27 45 0 50
+3 27 45 0 51
+4 27 45 0 52
+5 27 45 0 53
+6 27 45 0 54
+7 27 45 0 55
+8 27 45 0 56
+9 27 45 0 57
+: 18 30 0 35
+; 18 30 10 32
+invert! 21 35 15 41
+= 54 25 0 Au,43
+invert? 27 35 15 37
+? 27 45 0 36
+undef 27 0 0 30
+A 42 45 0 65
+B 36 45 0 66
+C 39 45 5 67
+D 42 45 0 68
+E 36 45 0 69
+F 33 45 0 70
+G 42 45 0 71
+H 45 45 0 72
+I 21 45 0 73
+J 27 45 0 74
+K 39 45 0 75
+L 36 45 0 76
+M 51 45 0 77
+N 42 45 0 78
+O 42 45 0 79
+P 36 45 0 80
+Q 42 45 15 81
+R 39 45 0 82
+S 30 45 0 83
+T 36 45 0 84
+U 42 45 0 85
+V 39 45 20 86
+W 54 45 0 87
+X 42 45 0 88
+Y 39 45 0 89
+Z 36 45 0 90
+[ 18 45 10 94
+left" LIGATURE l×+l× 21 45 0 38,hml2,38,hmr2
+] 18 45 10 95
+circumflex 15 45 0 au,83
+raiseddot 15 45 0 f195,41
+l× 12 45 0 38
+a 27 30 0 97
+b 30 45 0 98
+c 24 30 0 99
+d 30 45 0 100
+e 24 30 0 101
+f 21 45 15 102
+g 27 30 10 103
+h 30 45 0 104
+i 15 45 0 105
+j 18 45 15 106
+k 30 45 0 107
+l 15 45 0 108
+m 45 30 0 109
+n 30 30 0 110
+o 30 30 0 111
+p 30 30 15 112
+q 30 30 15 113
+r 21 30 0 114
+s 21 30 0 115
+t 18 40 0 116
+u 30 30 0 117
+v 27 30 0 118
+w 39 30 0 119
+x 27 30 0 120
+y 27 30 10 121
+z 24 30 5 122
+endash LIGATURE hyphen+hyphen 27 20 0 Au,106
+emdash LIGATURE endash+hyphen 54 20 0 47
+Hungarian 18 50 0 f189,au,116
+tilde 15 45 0 au,86
+umlaut 15 45 0 au,84
+kern a+v -54/36
+kern a+v -54/36
+kern a+w -54/36
+kern a+y -54/36
+kern h+t -54/36
+kern h+u -54/36
+kern h+y -54/36
+kern k+e -54/36
+kern m+b -54/36
+kern m+u -54/36
+kern m+y -54/36
+kern n+t -54/36
+kern n+u -54/36
+kern n+v -54/36
+kern n+w -54/36
+kern n+y -54/36
+kern o+o 54/60
+kern o+v -54/36
+kern o+w -54/36
+kern o+x -54/36
+kern o+y -54/36
+kern t+w -54/36
+kern t+y -54/36
+kern v+e -54/36
+kern v+o -54/36
+kern w+a -54/36
+kern w+e -54/36
+kern w+o -54/36
+kern y+a -54/36
+kern y+e -54/36
+kern y+o -54/36
+kern A+T -54/16
+kern A+U -54/18
+kern A+Y -54/16
+kern A+V -54/12
+kern D+A -54/16
+kern D+V -54/14
+kern D+W -54/16
+kern D+Y -54/16
+kern F+a -54/20
+kern F+e -54/24
+kern F+o -54/18
+kern F+r -54/22
+kern F+u -54/20
+kern F+A -54/18
+kern F+O -54/18
+kern K+O -54/14
+kern L+O -54/18
+kern L+U -54/18
+kern L+Y -54/16
+kern O+A -54/18
+kern O+V -54/16
+kern O+W -54/16
+kern O+X -54/16
+kern O+Y -54/14
+kern P+A -54/18
+kern R+O -54/16
+kern R+T -54/18
+kern R+U -54/18
+kern R+V -54/16
+kern R+Y -54/16
+kern T+a -54/22
+kern T+e -54/22
+kern T+o -54/20
+kern T+r -54/18
+kern T+u -54/22
+kern T+A -54/16
+kern T+O -54/28
+kern V+a -54/18
+kern V+e -54/18
+kern V+o -54/18
+kern V+r -54/22
+kern V+u -54/20
+kern V+A -54/12
+kern V+O -54/16
+kern W+a -54/16
+kern W+e -54/18
+kern W+o -54/18
+kern W+r -54/20
+kern W+u -54/20
+kern W+A -54/10
+kern W+O -54/14
+kern X+O -54/14
+kern Y+a -54/18
+kern Y+e -54/18
+kern Y+o -54/18
+kern Y+r -54/22
+kern Y+u -54/20
+kern Y+A -54/14
diff --git a/macros/text1/compugraphics_8600/eti.fontinfo b/macros/text1/compugraphics_8600/eti.fontinfo
new file mode 100644
index 0000000000..a5085be50d
--- /dev/null
+++ b/macros/text1/compugraphics_8600/eti.fontinfo
@@ -0,0 +1,233 @@
+* TEX font info -- commerical font format -- English Times Italic 4/25/84
+*
+HUNITS 1/54
+VUNITS 1/64
+DEFFONT 031
+DEFWIDTH 1
+SLANT 1/4
+SPACE 22/54
+SPSTRETCH 15/54
+SPSHRINK 13/54
+XHEIGHT 30/64
+QUAD 1
+EXTRASPACE 2/10
+fontname ETI
+* WIDTH HEIGHT DEPTH 8600 Decimal
+$
+undef 27 0 0 30
+undef 27 0 0 30
+undef 27 0 0 30
+undef 27 0 0 30
+undef 27 0 0 30
+enbul 27 30 0 au,110
+dagger 27 45 5 au,31
+undef 27 0 0 30
+undef 27 0 0 30
+undef 27 0 0 30
+section 27 45 5 60
+ff LIGATURE f+f 33 45 15 au,120
+fi LIGATURE f+i 30 45 15 au,118
+fl LIGATURE f+l 30 45 15 au,119
+ffi LIGATURE ff+i 45 45 15 au,121
+ffl LIGATURE ff+l 45 45 15 au,122
+iota 15 35 0 f193,105
+undef 27 0 0 30
+grave 16 45 0 au,82
+acute 17 45 0 au,81
+invertcircum 13 45 0 f195,37
+breve 13 45 0 f195,26
+macron 13 45 0 f195,au,90
+circleaccent 15 45 0 f195,42
+cedila 14 10 15 au,93
+Germanss 30 45 10 au,30
+ae 42 35 0 f35,au,113
+oe 45 35 0 f35,10
+pound 27 45 0 96
+AE 54 45 0 f35,au,79
+OE 54 45 0 f35,08
+SCANO 42 45 5 f30,au,07
+PolishSl 15 20 0 vmr2,hml1,45,hmr1,vmf1
+! 21 45 0 40
+right" LIGATURE '+' 24 45 0 39,hml2,39,hmr2
+litre 27 45 0 F188,au,111
+dollar 27 45 5 au,35
+% 54 45 0 au,49
+& 39 45 0 91
+' 12 45 0 39
+( 18 45 10 58
+) 18 45 10 59
+* 27 45 0 92
+plus 54 35 0 au,46
+, 18 10 10 44
+hyphen 18 15 15 45
+. 18 10 0 46
+/ 27 45 0 au,33
+0 27 45 0 48
+1 27 45 0 49
+2 27 45 0 50
+3 27 45 0 51
+4 27 45 0 52
+5 27 45 0 53
+6 27 45 0 54
+7 27 45 0 55
+8 27 45 0 56
+9 27 45 0 57
+: 18 30 0 35
+; 18 30 10 32
+invert! 21 35 15 41
+= 54 25 0 Au,43
+invert? 27 35 15 37
+? 27 45 0 36
+undef 27 0 0 30
+A 42 45 0 65
+B 36 45 0 66
+C 39 45 5 67
+D 42 45 0 68
+E 36 45 0 69
+F 33 45 0 70
+G 42 45 0 71
+H 45 45 0 72
+I 21 45 0 73
+J 27 45 0 74
+K 39 45 0 75
+L 36 45 0 76
+M 51 45 0 77
+N 42 45 0 78
+O 42 45 0 79
+P 36 45 0 80
+Q 42 45 15 81
+R 39 45 0 82
+S 30 45 0 83
+T 36 45 0 84
+U 42 45 0 85
+V 39 45 20 86
+W 54 45 0 87
+X 42 45 0 88
+Y 39 45 0 89
+Z 36 45 0 90
+[ 18 45 10 94
+left" LIGATURE l×+l× 21 45 0 38,hml2,38,hmr2
+] 18 45 10 95
+circumflex 17 45 0 au,83
+raiseddot 13 45 0 f195,41
+l× 12 45 0 38
+a 27 30 0 97
+b 30 45 0 98
+c 24 30 0 99
+d 30 45 0 100
+e 24 30 0 101
+f 21 45 15 102
+g 27 30 10 103
+h 30 45 0 104
+i 15 45 0 105
+j 18 45 15 106
+k 30 45 0 107
+l 15 45 0 108
+m 45 30 0 109
+n 30 30 0 110
+o 30 30 0 111
+p 30 30 15 112
+q 30 30 15 113
+r 21 30 0 114
+s 21 30 0 115
+t 18 40 0 116
+u 30 30 0 117
+v 27 30 0 118
+w 39 30 0 119
+x 27 30 0 120
+y 27 30 10 121
+z 24 30 5 122
+endash LIGATURE hyphen+hyphen 27 20 0 Au,106
+emdash LIGATURE endash+hyphen 54 20 0 47
+Hungarian 14 50 0 f189,au,116
+tilde 17 45 0 au,86
+umlaut 17 45 0 au,84
+kern a+v -54/36
+kern a+v -54/36
+kern a+w -54/36
+kern a+y -54/36
+kern h+t -54/36
+kern h+u -54/36
+kern h+y -54/36
+kern k+e -54/36
+kern m+b -54/36
+kern m+u -54/36
+kern m+y -54/36
+kern n+t -54/36
+kern n+u -54/36
+kern n+v -54/36
+kern n+w -54/36
+kern n+y -54/36
+kern o+o 54/60
+kern o+v -54/36
+kern o+w -54/36
+kern o+x -54/36
+kern o+y -54/36
+kern t+w -54/36
+kern t+y -54/36
+kern v+e -54/36
+kern v+o -54/36
+kern w+a -54/36
+kern w+e -54/36
+kern w+o -54/36
+kern y+a -54/36
+kern y+e -54/36
+kern y+o -54/36
+kern A+T -54/16
+kern A+U -54/18
+kern A+Y -54/16
+kern A+V -54/12
+kern D+A -54/16
+kern D+V -54/14
+kern D+W -54/16
+kern D+Y -54/16
+kern F+a -54/20
+kern F+e -54/24
+kern F+o -54/18
+kern F+r -54/22
+kern F+u -54/20
+kern F+A -54/18
+kern F+O -54/18
+kern K+O -54/14
+kern L+O -54/18
+kern L+U -54/18
+kern L+Y -54/16
+kern O+A -54/18
+kern O+V -54/16
+kern O+W -54/16
+kern O+X -54/16
+kern O+Y -54/14
+kern P+A -54/18
+kern R+O -54/16
+kern R+T -54/18
+kern R+U -54/18
+kern R+V -54/16
+kern R+Y -54/16
+kern T+a -54/22
+kern T+e -54/22
+kern T+o -54/20
+kern T+r -54/18
+kern T+u -54/22
+kern T+A -54/16
+kern T+O -54/28
+kern V+a -54/18
+kern V+e -54/18
+kern V+o -54/18
+kern V+r -54/22
+kern V+u -54/20
+kern V+A -54/12
+kern V+O -54/16
+kern W+a -54/16
+kern W+e -54/18
+kern W+o -54/18
+kern W+r -54/20
+kern W+u -54/20
+kern W+A -54/10
+kern W+O -54/14
+kern X+O -54/14
+kern Y+a -54/18
+kern Y+e -54/18
+kern Y+o -54/18
+kern Y+r -54/22
+kern Y+u -54/20
+kern Y+A -54/14
diff --git a/macros/text1/compugraphics_8600/etr.fontinfo b/macros/text1/compugraphics_8600/etr.fontinfo
new file mode 100644
index 0000000000..e926b6626a
--- /dev/null
+++ b/macros/text1/compugraphics_8600/etr.fontinfo
@@ -0,0 +1,236 @@
+* TEX font info -- commerical font format -- English Times Roman 4/25/85
+* CG 5039 Layout, and 1614 Compliment, typeface 705
+*
+HUNITS 1/54
+VUNITS 1/64
+DEFFONT 030
+DEFWIDTH 1
+SLANT 0
+SPACE 15/54
+SPSTRETCH 12/54
+SPSHRINK 5/54
+XHEIGHT 30/64
+QUAD 1
+EXTRASPACE 1/10
+FONTNAME ETR
+*
+* WIDTH HEIGHT DEPTH 8600 Decimal
+$
+1/2 54 45 0 au,97
+1/4 54 45 0 au,98
+3/4 54 45 0 au,99
+1/3 54 45 3 au,104
+2/3 54 45 0 au,105
+enbul 27 40 0 au,40
+cent 27 40 0 au,36
+openbox 54 45 0 au,37
+1/8 54 45 0 au,100
+3/8 54 45 0 au,101
+5/8 54 45 0 au,102
+ff LIGATURE f+f 33 45 0 au,120
+fi LIGATURE f+i 30 45 0 au,118
+fl LIGATURE f+l 30 45 0 au,119
+ffi LIGATURE ff+i 45 45 0 au,121
+ffl LIGATURE ff+l 45 45 0 au,122
+dotless-i 15 35 0 au,127
+undef 27 0 0 30
+grave 13 45 0 au,82
+acute 13 45 0 au,81
+invertcircum 13 45 0 f195,37
+breve 13 45 0 f195,26
+macron 13 45 0 f195,au,90
+circleaccent 13 45 0 f195,42
+cedila 13 5 10 au,93
+germanSS 30 45 0 au,30
+ae 42 35 0 f35,au,107
+oe 45 35 0 f35,au,116
+scano 30 35 5 06
+AE 54 45 0 f35,63
+OE 54 45 0 f35,au,80
+ScanO 42 45 5 au,07
+PolishSl 15 35 0 vmf3,hml8,45,hmr8,vmr3
+! 21 45 0 40
+right" LIGATURE '+' 20 45 0 39,hml2,39
+# 27 45 0 au,114
+dollar 27 45 5 au,35
+% 54 45 0 au,49
+& 39 45 0 91
+' 12 45 0 39
+( 18 45 5 58
+) 18 45 5 59
+* 27 45 0 92
++ 36 45 0 F186,Au,46
+, 18 10 10 44
+hyphen 18 20 0 45
+. 18 10 0 46
+/ 27 45 0 au,33
+0 27 45 0 48
+1 27 45 0 49
+2 27 45 0 50
+3 27 45 0 51
+4 27 45 0 52
+5 27 45 0 53
+6 27 45 0 54
+7 27 45 0 55
+8 27 45 0 56
+9 27 45 0 57
+: 18 35 0 35
+; 18 35 10 32
+invert! 24 45 5 41
+= 36 45 0 F186,Au,43
+invert? 24 45 5 37
+? 27 45 0 36
+@ 54 45 0 f38,93
+A 42 45 0 65
+B 36 45 0 66
+C 39 45 0 67
+D 42 45 0 68
+E 36 45 0 69
+F 33 45 0 70
+G 42 45 0 71
+H 45 45 0 72
+I 21 45 0 73
+J 27 45 0 74
+K 39 45 0 75
+L 36 45 0 76
+M 51 45 0 77
+N 42 45 0 78
+O 42 45 0 79
+P 36 45 0 80
+Q 42 45 15 81
+R 39 45 0 82
+S 30 45 0 83
+T 36 45 0 84
+U 42 45 0 85
+V 39 45 0 86
+W 54 45 0 87
+X 42 45 0 88
+Y 39 45 0 89
+Z 36 45 0 90
+[ 18 45 10 94
+left" LIGATURE l×+l× 20 45 0 38,hml2,38
+] 18 45 10 95
+circumflex 13 45 0 au,83
+raiseddot 15 45 0 f195,41
+l× 12 45 0 38
+a 27 35 0 97
+b 30 45 0 98
+c 24 35 0 99
+d 30 45 0 100
+e 24 35 0 101
+f 21 45 0 102
+g 27 35 10 103
+h 30 45 0 104
+i 15 45 0 105
+j 18 45 10 106
+k 30 45 0 107
+l 15 45 0 108
+m 45 35 0 109
+n 30 35 0 110
+o 30 35 0 111
+p 30 35 10 112
+q 30 35 10 113
+r 21 35 0 114
+s 21 35 0 115
+t 18 45 0 116
+u 30 35 0 117
+v 27 35 0 118
+w 39 35 0 119
+x 27 35 0 120
+y 27 35 10 121
+z 24 35 0 122
+endash LIGATURE hyphen+hyphen 31 25 0 45,hml5,45,hmr5
+emdash LIGATURE endash+hyphen 54 25 0 47
+Hungarian 15 50 0 f189,au,116
+tilde 13 45 0 au,86
+umlaut 13 45 0 au,84
+kern a+v -54/36
+kern a+w -54/36
+kern a+y -54/36
+kern h+t -54/36
+kern h+u -54/36
+kern h+y -54/36
+kern k+e -54/36
+kern m+b -54/36
+kern m+u -54/36
+kern m+y -54/36
+kern n+t -54/36
+kern n+u -54/36
+kern n+v -54/36
+kern n+w -54/36
+kern n+y -54/36
+kern o+o 54/51
+kern o+v -54/36
+kern o+w -54/36
+kern o+x -54/36
+kern o+y -54/36
+kern t+w -54/36
+kern t+y -54/36
+kern v+e -54/36
+kern v+o -54/36
+kern w+a -54/36
+kern w+e -54/36
+kern w+o -54/36
+kern y+a -54/36
+kern y+e -54/36
+kern y+o -54/36
+kern A+T -54/14
+kern A+Y -54/10
+kern A+V -54/6
+kern A+v -54/28
+kern D+A -54/14
+kern D+V -54/14
+kern D+W -54/14
+kern D+Y -54/12
+kern F+a -54/18
+kern F+e -54/32
+kern F+o -54/18
+kern F+r -54/22
+kern F+u -54/18
+kern F+A -54/14
+kern F+O -54/18
+kern K+O -54/14
+kern L+O -54/14
+kern L+U -54/17
+kern L+Y -54/12
+kern O+A -54/14
+kern O+V -54/12
+kern O+W -54/14
+kern O+X -54/12
+kern O+Y -54/12
+kern P+A -54/16
+kern P+r -54/34
+kern R+O -54/14
+kern R+T -54/16
+kern R+U -54/18
+kern R+V -54/16
+kern R+Y -54/14
+kern T+a -54/14
+kern T+e -54/16
+kern T+o -54/14
+kern T+r -54/14
+kern T+u -54/14
+kern T+w -54/16
+kern T+A -54/16
+kern T+O -54/22
+kern V+a -54/16
+kern V+e -54/16
+kern V+o -54/16
+kern V+r -54/16
+kern V+u -54/16
+kern V+A -54/6
+kern V+O -54/18
+kern W+a -54/14
+kern W+e -54/14
+kern W+o -54/14
+kern W+r -54/15
+kern W+u -54/15
+kern W+A -54/10
+kern W+O -54/14
+kern X+O -54/12
+kern Y+a -54/12
+kern Y+e -54/12
+kern Y+o -54/12
+kern Y+r -54/14
+kern Y+u -54/12
+kern Y+A -54/14
diff --git a/macros/text1/compugraphics_8600/etsc.fontinfo b/macros/text1/compugraphics_8600/etsc.fontinfo
new file mode 100644
index 0000000000..a3c70a1297
--- /dev/null
+++ b/macros/text1/compugraphics_8600/etsc.fontinfo
@@ -0,0 +1,253 @@
+* TEX font info--commerical font format--English Times Small Caps 4/25/85
+* CG 5003 Compliment, typeface 705
+*
+HUNITS 1/54
+VUNITS 1/64
+DEFFONT 038
+DEFWIDTH 1
+SLANT 0
+SPACE 22/54
+SPSTRETCH 15/54
+SPSHRINK 13/54
+XHEIGHT 30/64
+QUAD 1
+EXTRASPACE 2/10
+FONTNAME ETSC
+* WIDTH HEIGHT DEPTH 8600 Decimal
+$
+1/2 54 45 0 au,97
+1/4 54 45 0 au,98
+3/4 54 45 0 au,99
+1/3 54 45 3 au,104
+2/3 54 45 0 au,105
+undef 27 0 0 30
+undef 27 0 0 30
+dbldagger 27 45 0 au,32
+1/8 54 45 0 au,100
+3/8 54 45 0 au,101
+5/8 54 45 0 au,102
+7/8 54 45 0 au,103
+undef 27 0 0 30
+undef 27 0 0 30
+para 27 50 10 au,113
+trademark 33 50 0 au,54
+undef 27 0 0 30
+undef 27 0 0 30
+undef 27 0 0 30
+undef 27 0 0 30
+undef 27 0 0 30
+undef 27 0 0 30
+undef 27 0 0 30
+undef 27 0 0 30
+undef 27 0 0 30
+undef 27 0 0 30
+undef 27 0 0 30
+undef 27 0 0 30
+undef 27 0 0 30
+undef 27 0 0 30
+undef 27 0 0 30
+undef 27 0 0 30
+undef 27 0 0 30
+! 21 45 0 40
+right" LIGATURE '+' 20 40 0 39,hml2,39,hmr2
+undef 27 0 0 30
+dollar 27 35 5 au,35
+undef 27 00 0 30
+& 30 30 0 91
+' 12 45 0 39
+( 18 45 15 58
+) 18 45 15 59
+* 27 45 0 92
+plus/minus 54 40 10 au,48
+, 18 10 10 44
+hyphen 18 20 0 45
+. 18 10 0 46
+fracbar/ 06 45 5 au,42
+0 27 30 0 48
+1 27 30 0 49
+2 27 30 0 50
+3 27 30 15 51
+4 27 30 15 52
+5 27 40 15 53
+6 27 45 0 54
+7 27 30 15 55
+8 27 45 0 56
+9 27 30 15 57
+: 18 30 0 35
+; 18 30 10 32
+undef 27 0 0 f195,30
+undef 27 0 0 f195,30
+undef 27 0 0 f195,30
+? 27 45 0 36
+atsign 54 45 5 93
+A 42 45 0 65
+B 36 45 0 66
+C 39 45 0 67
+D 42 45 0 68
+E 36 45 0 69
+F 33 45 0 70
+G 42 45 0 71
+H 45 45 0 72
+I 21 45 0 73
+J 27 45 0 74
+K 39 45 0 75
+L 36 45 0 76
+M 51 45 0 77
+N 42 45 0 78
+O 42 45 0 79
+P 36 45 0 80
+Q 42 45 15 81
+R 39 45 0 82
+S 30 45 0 83
+T 36 45 0 84
+U 42 45 0 85
+V 39 45 0 86
+W 54 45 0 87
+X 42 45 0 88
+Y 39 45 0 89
+Z 36 45 0 90
+undef 27 0 0 30
+left" LIGATURE ×+× 20 40 0 38,hml2,38,hmr2
+undef 27 0 0 30
+undef 27 0 0 30
+undef 27 0 0 30
+× 12 45 0 38
+a 30 35 0 97
+b 27 35 0 98
+c 30 35 0 99
+d 33 35 0 100
+e 27 35 0 101
+f 24 35 0 102
+g 30 35 3 103
+h 33 35 0 104
+i 15 35 0 105
+j 18 35 0 106
+k 33 35 0 107
+l 24 35 0 108
+m 36 35 0 109
+n 33 35 0 110
+o 30 35 0 111
+p 27 35 0 112
+q 30 35 10 113
+r 30 45 0 114
+s 21 35 0 115
+t 27 35 0 116
+u 33 35 0 117
+v 30 35 0 118
+w 45 35 0 119
+x 30 35 0 120
+y 30 35 0 121
+z 27 35 0 122
+endash LIGATURE hyphen+hyphen 33 20 0 45,hml5,45,hmr5
+emdash LIGATURE endash+hyphen 54 20 0 47
+undef 27 0 0 30
+undef 27 0 0 30
+undef 27 0 0 30
+kern a+v -54/16
+kern a+t -54/28
+kern a+w -54/12
+kern a+y -54/12
+kern c+a -54/28
+kern h+b -54/24
+kern k+a -54/44
+kern k+c -54/24
+kern k+o -54/34
+kern m+b -54/48
+kern m+t -54/44
+kern m+v -54/26
+kern m+w -54/26
+kern m+y -54/36
+kern n+b -54/38
+kern o+o 54/44
+kern o+v -54/26
+kern o+w -54/26
+kern o+x -54/26
+kern o+y -54/22
+kern t+a -54/28
+kern t+w -54/36
+kern t+y -54/32
+kern v+c -54/36
+kern v+o -54/26
+kern w+a -54/8
+kern w+c -54/36
+kern y+a -54/16
+kern y+c -54/26
+kern y+e -54/44
+kern y+o -54/26
+kern A+U -54/18
+kern A+T -54/22
+kern A+V -54/8
+kern A+Y -54/10
+kern D+A -54/28
+kern D+V -54/28
+kern D+W -54/28
+kern D+X -54/28
+kern D+Y -54/28
+kern F+a -54/28
+kern F+r -54/28
+kern F+A -54/28
+kern F+C -54/28
+kern F+G -54/28
+kern F+O -54/28
+kern F+Q -54/28
+kern K+C -54/28
+kern K+G -54/28
+kern K+O -54/28
+kern K+Q -54/28
+kern L+C -54/28
+kern L+G -54/28
+kern L+O -54/28
+kern L+Q -54/28
+kern L+T -54/28
+kern L+U -54/28
+kern L+V -54/28
+kern L+W -54/28
+kern L+Y -54/18
+kern O+A -54/28
+kern O+F -54/32
+kern O+U -54/32
+kern O+V -54/28
+kern O+W -54/28
+kern O+X -54/28
+kern O+Y -54/28
+kern P+A -54/28
+kern R+C -54/28
+kern R+G -54/28
+kern R+O -54/28
+kern R+Q -54/28
+kern R+T -54/28
+kern R+U -54/28
+kern R+V -54/28
+kern R+W -54/28
+kern R+Y -54/28
+kern T+a -54/28
+kern T+o -54/28
+kern T+r -54/28
+kern T+u -54/28
+kern T+A -54/14
+kern T+O -54/28
+kern V+a -54/16
+kern V+e -54/28
+kern V+o -54/20
+kern V+A -54/14
+kern V+C -54/28
+kern V+G -54/28
+kern V+O -54/28
+kern V+Q -54/28
+kern W+a -54/8
+kern W+e -54/28
+kern W+o -54/28
+kern W+u -54/28
+kern W+A -54/8
+kern W+C -54/28
+kern W+G -54/28
+kern W+O -54/28
+kern W+Q -54/28
+kern X+C -54/28
+kern X+G -54/28
+kern X+O -54/28
+kern X+Q -54/28
+kern Y+a -54/16
+kern Y+e -54/28
+kern Y+o -54/28
+kern Y+A -54/20
diff --git a/macros/text1/compugraphics_8600/fonttex.cmschan b/macros/text1/compugraphics_8600/fonttex.cmschan
new file mode 100644
index 0000000000..d863ceb0fc
--- /dev/null
+++ b/macros/text1/compugraphics_8600/fonttex.cmschan
@@ -0,0 +1,5 @@
+@x
+%test version
+@y
+%test version 1
+@z
diff --git a/macros/text1/compugraphics_8600/fonttex.exec b/macros/text1/compugraphics_8600/fonttex.exec
new file mode 100644
index 0000000000..5bc405cefa
--- /dev/null
+++ b/macros/text1/compugraphics_8600/fonttex.exec
@@ -0,0 +1,23 @@
+/* FONTTEX EXEC
+ Note: This REXX exec is used to run the FontTeX driver program.
+ This exec will prompt the user for a filename if none was entered with
+ the call to the exec.
+*/
+
+Address 'COMMAND';
+Trace value 'n'
+Parse Upper Arg inFn;
+if inFn=' '
+then do
+ say 'Please enter filename of fontinfo file.'
+ pull inFn .
+end
+state inFn 'FONTINFO *'
+ if RC<>0 then do
+ say inFn 'FONTINFO file not found.'
+ exit
+ end
+'FONTTEX' inFn
+'REBLOCK' inFn 'TFM';
+'ERASE' inFn 'PRTFM';
+exit
diff --git a/macros/text1/compugraphics_8600/fonttex.outchan b/macros/text1/compugraphics_8600/fonttex.outchan
new file mode 100644
index 0000000000..8098645143
--- /dev/null
+++ b/macros/text1/compugraphics_8600/fonttex.outchan
@@ -0,0 +1,324 @@
+@x
+%test version
+@y
+%out version 1
+@z
+
+@x
+\font\twelvept=cmbx12
+\font\tentex=cmr10
+@y
+\font\twelvept=cmbx12
+@z
+
+@x
+ @<Global Variables@>@/
+static@/
+ @^system dependencies@>
+ com_table :packed array[0..18] of string(7);@/
+value@/
+ com_table[0] := 'HDR'; {Header Record}@/
+ com_table[1] := 'CHWIDTH';{Character Width}@/
+ com_table[2] := 'RT'; {Reverse Type}@/
+ com_table[3] := 'PS'; {Point Size}@/
+ com_table[4] := 'SS'; {Set Size}@/
+ com_table[5] := 'VMF'; {Vertical Move Forward}@/
+ com_table[6] := 'VMR'; {Vertical Move Reverse}@/
+ com_table[7] := 'RW'; {Rule Width}@/
+ com_table[8] := 'RD'; {Rule Depth}@/
+ com_table[9] := 'IR'; {Insert Rule}@/
+ com_table[10] := 'SL'; {Slant Mode}@/
+ com_table[11] := 'RTWT'; {Reverse Type Window Top}@/
+ com_table[12] := 'RTWB'; {Reverse Type Window Bottom}@/
+ com_table[13] := 'AU'; {Auxiliary Character Set}@/
+ com_table[14] := 'F'; {Change Fonts}@/
+ com_table[15] := 'HMR'; {Horizontal Move Right}@/
+ com_table[16] := 'HML'; {Horizontal Move Left}@/
+ com_table[17] := 'TTS'; {8600 character, in decimal}@/
+ com_table[18] := 'MAXCMD';@/
+%include pasclib(asciicvt)@/
+@y
+@<Global Variables@>@/
+static@/
+@!com_table :packed array[0..18] of string(7);@/
+@!ordx : packed array['00'xc..'FF'xc] of '00'x..'7f'x;@/
+@!chrx : packed array['00'x..'7F'x] of '00'xc..'FF'xc;@/
+value@/
+ com_table[0] := 'HDR'; {Header Record}@/
+ com_table[1] := 'CHWIDTH';{Character Width}@/
+ com_table[2] := 'RT'; {Reverse Type}@/
+ com_table[3] := 'PS'; {Point Size}@/
+ com_table[4] := 'SS'; {Set Size}@/
+ com_table[5] := 'VMF'; {Vertical Move Forward}@/
+ com_table[6] := 'VMR'; {Vertical Move Reverse}@/
+ com_table[7] := 'RW'; {Rule Width}@/
+ com_table[8] := 'RD'; {Rule Depth}@/
+ com_table[9] := 'IR'; {Insert Rule}@/
+ com_table[10] := 'SL'; {Slant Mode}@/
+ com_table[11] := 'RTWT'; {Reverse Type Window Top}@/
+ com_table[12] := 'RTWB'; {Reverse Type Window Bottom}@/
+ com_table[13] := 'AU'; {Auxiliary Character Set}@/
+ com_table[14] := 'F'; {Change Fonts}@/
+ com_table[15] := 'HMR'; {Horizontal Move Right}@/
+ com_table[16] := 'HML'; {Horizontal Move Left}@/
+ com_table[17] := 'TTS'; {8600 character, in decimal}@/
+ com_table[18] := 'MAXCMD';@/
+{ EBCDIC to ASCII INTEGER and ASCII INTEGER to EBCDIC conversion }
+{ EBCDIC char to ASCII integer } { ASCII INTEGER to EBCDIC char }
+ordx['00'xc]:='00'x; { NUL NUL } chrx['00'x]:='00'xc; { NUL NUL }
+ordx['01'xc]:='01'x; { SOH SOH } chrx['01'x]:='01'xc; { SOH SOH }
+ordx['02'xc]:='02'x; { STX STX } chrx['02'x]:='02'xc; { STX STX }
+ordx['03'xc]:='03'x; { ETX ETX } chrx['03'x]:='03'xc; { ETX ETX }
+ordx['04'xc]:='00'x; { ... NUL } chrx['04'x]:='37'xc; { EOT EOT }
+ordx['05'xc]:='09'x; { HT HT } chrx['05'x]:='2D'xc; { ENQ ENQ }
+ordx['06'xc]:='00'x; { ... NUL } chrx['06'x]:='2E'xc; { ACK ACK }
+ordx['07'xc]:='7F'x; { DEL DEL } chrx['07'x]:='2F'xc; { BEL BEL }
+ordx['08'xc]:='00'x; { ... NUL } chrx['08'x]:='16'xc; { BS BS }
+ordx['09'xc]:='00'x; { ... NUL } chrx['09'x]:='05'xc; { HT HT }
+ordx['0A'xc]:='00'x; { ... NUL } chrx['0A'x]:='25'xc; { LF LF }
+ordx['0B'xc]:='0B'x; { VT VT } chrx['0B'x]:='0B'xc; { VT VT }
+ordx['0C'xc]:='0C'x; { FF FF } chrx['0C'x]:='0C'xc; { FF FF }
+ordx['0D'xc]:='0D'x; { CR CR } chrx['0D'x]:='0D'xc; { CR CR }
+ordx['0E'xc]:='0E'x; { SO SO } chrx['0E'x]:='0E'xc; { SO SO }
+ordx['0F'xc]:='0F'x; { SI SI } chrx['0F'x]:='0F'xc; { SI SI }
+ordx['10'xc]:='10'x; { DLE DLE } chrx['10'x]:='10'xc; { DLE DLE }
+ordx['11'xc]:='11'x; { DC1 DC1 } chrx['11'x]:='11'xc; { DC1 DC1 }
+ordx['12'xc]:='12'x; { DC2 DC2 } chrx['12'x]:='12'xc; { DC2 DC2 }
+ordx['13'xc]:='13'x; { TM DC3 } chrx['13'x]:='13'xc; { DC3 TM }
+ordx['14'xc]:='00'x; { ... NUL } chrx['14'x]:='3C'xc; { DC4 DC4 }
+ordx['15'xc]:='00'x; { ... NUL } chrx['15'x]:='3D'xc; { NAK NAK }
+ordx['16'xc]:='08'x; { BS BS } chrx['16'x]:='32'xc; { SYN SYN }
+ordx['17'xc]:='00'x; { ... NUL } chrx['17'x]:='26'xc; { ETB ETB }
+ordx['18'xc]:='18'x; { CAN CAN } chrx['18'x]:='18'xc; { CAN CAN }
+ordx['19'xc]:='19'x; { EM EM } chrx['19'x]:='19'xc; { EM EM }
+ordx['1A'xc]:='00'x; { ... NUL } chrx['1A'x]:='3F'xc; { SUB SUB }
+ordx['1B'xc]:='00'x; { ... NUL } chrx['1B'x]:='27'xc; { ESC ESC }
+ordx['1C'xc]:='1C'x; { IFS FS } chrx['1C'x]:='1C'xc; { FS IFS }
+ordx['1D'xc]:='1D'x; { IGS GS } chrx['1D'x]:='1D'xc; { GS IGS }
+ordx['1E'xc]:='1E'x; { IRS RS } chrx['1E'x]:='1E'xc; { RS IRS }
+ordx['1F'xc]:='1F'x; { IUS US } chrx['1F'x]:='1F'xc; { US IUS }
+ordx['20'xc]:='00'x; { ... NUL } chrx['20'x]:='40'xc; { SP SP }
+ordx['21'xc]:='00'x; { ... NUL } chrx['21'x]:='5A'xc; { ! ! }
+ordx['22'xc]:='00'x; { ... NUL } chrx['22'x]:='7F'xc; { " " }
+ordx['23'xc]:='00'x; { ... NUL } chrx['23'x]:='7B'xc; { # # }
+ordx['24'xc]:='00'x; { ... NUL } chrx['24'x]:='5B'xc; { $ $ }
+ordx['25'xc]:='0A'x; { LF LF } chrx['25'x]:='6C'xc; { % % }
+ordx['26'xc]:='17'x; { ETB ETB } chrx['26'x]:='50'xc; { & & }
+ordx['27'xc]:='1B'x; { ESC ESC } chrx['27'x]:='7D'xc; { ' ' }
+ordx['28'xc]:='00'x; { ... NUL } chrx['28'x]:='4D'xc; { ( ( }
+ordx['29'xc]:='00'x; { ... NUL } chrx['29'x]:='5D'xc; { ) ) }
+ordx['2A'xc]:='00'x; { ... NUL } chrx['2A'x]:='5C'xc; { * * }
+ordx['2B'xc]:='00'x; { ... NUL } chrx['2B'x]:='4E'xc; { + + }
+ordx['2C'xc]:='00'x; { ... NUL } chrx['2C'x]:='6B'xc; { , , }
+ordx['2D'xc]:='05'x; { ENQ ENQ } chrx['2D'x]:='60'xc; { - - }
+ordx['2E'xc]:='06'x; { ACK ACK } chrx['2E'x]:='4B'xc; { . . }
+ordx['2F'xc]:='07'x; { BEL BEL } chrx['2F'x]:='61'xc; { / / }
+ordx['30'xc]:='00'x; { ... NUL } chrx['30'x]:='F0'xc; { 0 0 }
+ordx['31'xc]:='00'x; { ... NUL } chrx['31'x]:='F1'xc; { 1 1 }
+ordx['32'xc]:='16'x; { SYN SYN } chrx['32'x]:='F2'xc; { 2 2 }
+ordx['33'xc]:='00'x; { ... NUL } chrx['33'x]:='F3'xc; { 3 3 }
+ordx['34'xc]:='00'x; { ... NUL } chrx['34'x]:='F4'xc; { 4 4 }
+ordx['35'xc]:='00'x; { ... NUL } chrx['35'x]:='F5'xc; { 5 5 }
+ordx['36'xc]:='00'x; { ... NUL } chrx['36'x]:='F6'xc; { 6 6 }
+ordx['37'xc]:='04'x; { EOT EOT } chrx['37'x]:='F7'xc; { 7 7 }
+ordx['38'xc]:='00'x; { ... NUL } chrx['38'x]:='F8'xc; { 8 8 }
+ordx['39'xc]:='00'x; { ... NUL } chrx['39'x]:='F9'xc; { 9 9 }
+ordx['3A'xc]:='00'x; { ... NUL } chrx['3A'x]:='7A'xc; { : : }
+ordx['3B'xc]:='00'x; { ... NUL } chrx['3B'x]:='5E'xc; { ; ; }
+ordx['3C'xc]:='14'x; { DC4 DC4 } chrx['3C'x]:='4C'xc; { < < }
+ordx['3D'xc]:='15'x; { NAK NAK } chrx['3D'x]:='7E'xc; { = = }
+ordx['3E'xc]:='00'x; { ... NUL } chrx['3E'x]:='6E'xc; { > > }
+ordx['3F'xc]:='1A'x; { SUB SUB } chrx['3F'x]:='6F'xc; { ? ? }
+ordx['40'xc]:='20'x; { SP SP } chrx['40'x]:='7C'xc; { @@ @@ }
+ordx['41'xc]:='00'x; { ... NUL } chrx['41'x]:='C1'xc; { A A }
+ordx['42'xc]:='00'x; { ... NUL } chrx['42'x]:='C2'xc; { B B }
+ordx['43'xc]:='00'x; { ... NUL } chrx['43'x]:='C3'xc; { C C }
+ordx['44'xc]:='00'x; { ... NUL } chrx['44'x]:='C4'xc; { D D }
+ordx['45'xc]:='00'x; { ... NUL } chrx['45'x]:='C5'xc; { E E }
+ordx['46'xc]:='00'x; { ... NUL } chrx['46'x]:='C6'xc; { F F }
+ordx['47'xc]:='00'x; { ... NUL } chrx['47'x]:='C7'xc; { G G }
+ordx['48'xc]:='00'x; { ... NUL } chrx['48'x]:='C8'xc; { H H }
+ordx['49'xc]:='00'x; { ... NUL } chrx['49'x]:='C9'xc; { I I }
+ordx['4A'xc]:='5E'x; { ã ã } chrx['4A'x]:='D1'xc; { J J }
+ordx['4B'xc]:='2E'x; { . . } chrx['4B'x]:='D2'xc; { K K }
+ordx['4C'xc]:='3C'x; { < < } chrx['4C'x]:='D3'xc; { L L }
+ordx['4D'xc]:='28'x; { ( ( } chrx['4D'x]:='D4'xc; { M M }
+ordx['4E'xc]:='2B'x; { + + } chrx['4E'x]:='D5'xc; { N N }
+ordx['4F'xc]:='7C'x; { | | } chrx['4F'x]:='D6'xc; { O O }
+ordx['50'xc]:='26'x; { & & } chrx['50'x]:='D7'xc; { P P }
+ordx['51'xc]:='00'x; { ... NUL } chrx['51'x]:='D8'xc; { Q Q }
+ordx['52'xc]:='00'x; { ... NUL } chrx['52'x]:='D9'xc; { R R }
+ordx['53'xc]:='00'x; { ... NUL } chrx['53'x]:='E2'xc; { S S }
+ordx['54'xc]:='00'x; { ... NUL } chrx['54'x]:='E3'xc; { T T }
+ordx['55'xc]:='00'x; { ... NUL } chrx['55'x]:='E4'xc; { U U }
+ordx['56'xc]:='00'x; { ... NUL } chrx['56'x]:='E5'xc; { V V }
+ordx['57'xc]:='00'x; { ... NUL } chrx['57'x]:='E6'xc; { W W }
+ordx['58'xc]:='00'x; { ... NUL } chrx['58'x]:='E7'xc; { X X }
+ordx['59'xc]:='00'x; { ... NUL } chrx['59'x]:='E8'xc; { Y Y }
+ordx['5A'xc]:='21'x; { ! ! } chrx['5A'x]:='E9'xc; { Z Z }
+ordx['5B'xc]:='24'x; { $ $ } chrx['5B'x]:='AD'xc; { [ [ }
+ordx['5C'xc]:='2A'x; { * * } chrx['5C'x]:='E0'xc; { \ \ }
+ordx['5D'xc]:='29'x; { ) ) } chrx['5D'x]:='BD'xc; { ] ] }
+ordx['5E'xc]:='3B'x; { ; ; } chrx['5E'x]:='4A'xc; { ã ã }
+ordx['5F'xc]:='7E'x; { ^ ^ } chrx['5F'x]:='6D'xc; { _ _ }
+ordx['60'xc]:='2D'x; { - - } chrx['60'x]:='79'xc; { ` ` }
+ordx['61'xc]:='2F'x; { / / } chrx['61'x]:='81'xc; { a a }
+ordx['62'xc]:='00'x; { ... NUL } chrx['62'x]:='82'xc; { b b }
+ordx['63'xc]:='00'x; { ... NUL } chrx['63'x]:='83'xc; { c c }
+ordx['64'xc]:='00'x; { ... NUL } chrx['64'x]:='84'xc; { d d }
+ordx['65'xc]:='00'x; { ... NUL } chrx['65'x]:='85'xc; { e e }
+ordx['66'xc]:='00'x; { ... NUL } chrx['66'x]:='86'xc; { f f }
+ordx['67'xc]:='00'x; { ... NUL } chrx['67'x]:='87'xc; { g g }
+ordx['68'xc]:='00'x; { ... NUL } chrx['68'x]:='88'xc; { h h }
+ordx['69'xc]:='00'x; { ... NUL } chrx['69'x]:='89'xc; { i i }
+ordx['6A'xc]:='00'x; { ... NUL } chrx['6A'x]:='91'xc; { j j }
+ordx['6B'xc]:='2C'x; { , , } chrx['6B'x]:='92'xc; { k k }
+ordx['6C'xc]:='25'x; { % % } chrx['6C'x]:='93'xc; { l l }
+ordx['6D'xc]:='5F'x; { _ _ } chrx['6D'x]:='94'xc; { m m }
+ordx['6E'xc]:='3E'x; { > > } chrx['6E'x]:='95'xc; { n n }
+ordx['6F'xc]:='3F'x; { ? ? } chrx['6F'x]:='96'xc; { o o }
+ordx['70'xc]:='00'x; { ... NUL } chrx['70'x]:='97'xc; { p p }
+ordx['71'xc]:='00'x; { ... NUL } chrx['71'x]:='98'xc; { q q }
+ordx['72'xc]:='00'x; { ... NUL } chrx['72'x]:='99'xc; { r r }
+ordx['73'xc]:='00'x; { ... NUL } chrx['73'x]:='A2'xc; { s s }
+ordx['74'xc]:='00'x; { ... NUL } chrx['74'x]:='A3'xc; { t t }
+ordx['75'xc]:='00'x; { ... NUL } chrx['75'x]:='A4'xc; { u u }
+ordx['76'xc]:='00'x; { ... NUL } chrx['76'x]:='A5'xc; { v v }
+ordx['77'xc]:='00'x; { ... NUL } chrx['77'x]:='A6'xc; { w w }
+ordx['78'xc]:='00'x; { ... NUL } chrx['78'x]:='A7'xc; { x x }
+ordx['79'xc]:='60'x; { ` ` } chrx['79'x]:='A8'xc; { y y }
+ordx['7A'xc]:='3A'x; { : : } chrx['7A'x]:='A9'xc; { z z }
+ordx['7B'xc]:='23'x; { # # } chrx['7B'x]:='C0'xc; { lcurly }
+ordx['7C'xc]:='40'x; { @@ @@ } chrx['7C'x]:='4F'xc; { | | }
+ordx['7D'xc]:='27'x; { ' ' } chrx['7D'x]:='D0'xc; { rcurly }
+ordx['7E'xc]:='3D'x; { = = } chrx['7E'x]:='9C'xc; { tilde }
+ordx['7F'xc]:='22'x; { " " } chrx['7F'x]:='07'xc; { DEL DEL }
+ordx['80'xc]:='00'x; { ... NUL }
+ordx['81'xc]:='61'x; { a a }
+ordx['82'xc]:='62'x; { b b }
+ordx['83'xc]:='63'x; { c c }
+ordx['84'xc]:='64'x; { d d }
+ordx['85'xc]:='65'x; { e e }
+ordx['86'xc]:='66'x; { f f }
+ordx['87'xc]:='67'x; { g g }
+ordx['88'xc]:='68'x; { h h }
+ordx['89'xc]:='69'x; { i i }
+ordx['8A'xc]:='00'x; { ... NUL }
+ordx['8B'xc]:='00'x; { ... NUL }
+ordx['8C'xc]:='00'x; { ... NUL }
+ordx['8D'xc]:='00'x; { ... NUL }
+ordx['8E'xc]:='00'x; { ... NUL }
+ordx['8F'xc]:='00'x; { ... NUL }
+ordx['90'xc]:='00'x; { ... NUL }
+ordx['91'xc]:='6A'x; { j j }
+ordx['92'xc]:='6B'x; { k k }
+ordx['93'xc]:='6C'x; { l l }
+ordx['94'xc]:='6D'x; { m m }
+ordx['95'xc]:='6E'x; { n n }
+ordx['96'xc]:='6F'x; { o o }
+ordx['97'xc]:='70'x; { p p }
+ordx['98'xc]:='71'x; { q q }
+ordx['99'xc]:='72'x; { r r }
+ordx['9A'xc]:='00'x; { ... NUL }
+ordx['9B'xc]:='00'x; { ... NUL }
+ordx['9C'xc]:='7E'x; { tilde }
+ordx['9D'xc]:='00'x; { ... NUL }
+ordx['9E'xc]:='00'x; { ... NUL }
+ordx['9F'xc]:='00'x; { ... NUL }
+ordx['A0'xc]:='00'x; { ... NUL }
+ordx['A1'xc]:='1A'x; { ... SUB }
+ordx['A2'xc]:='73'x; { s s }
+ordx['A3'xc]:='74'x; { t t }
+ordx['A4'xc]:='75'x; { u u }
+ordx['A5'xc]:='76'x; { v v }
+ordx['A6'xc]:='77'x; { w w }
+ordx['A7'xc]:='78'x; { x x }
+ordx['A8'xc]:='79'x; { y y }
+ordx['A9'xc]:='7A'x; { z z }
+ordx['AA'xc]:='00'x; { ... NUL }
+ordx['AB'xc]:='00'x; { ... NUL }
+ordx['AC'xc]:='00'x; { ... NUL }
+ordx['AD'xc]:='5B'x; { [ [ }
+ordx['AE'xc]:='00'x; { ... NUL }
+ordx['AF'xc]:='00'x; { ... NUL }
+ordx['B0'xc]:='00'x; { ... NUL }
+ordx['B1'xc]:='00'x; { ... NUL }
+ordx['B2'xc]:='00'x; { ... NUL }
+ordx['B3'xc]:='00'x; { ... NUL }
+ordx['B4'xc]:='00'x; { ... NUL }
+ordx['B5'xc]:='00'x; { ... NUL }
+ordx['B6'xc]:='00'x; { ... NUL }
+ordx['B7'xc]:='00'x; { ... NUL }
+ordx['B8'xc]:='00'x; { ... NUL }
+ordx['B9'xc]:='00'x; { ... NUL }
+ordx['BA'xc]:='00'x; { ... NUL }
+ordx['BB'xc]:='00'x; { ... NUL }
+ordx['BC'xc]:='00'x; { ... NUL }
+ordx['BD'xc]:='5D'x; { ] ] }
+ordx['BE'xc]:='00'x; { ... NUL }
+ordx['BF'xc]:='00'x; { ... NUL }
+ordx['C0'xc]:='7B'x; { lcurly }
+ordx['C1'xc]:='41'x; { A A }
+ordx['C2'xc]:='42'x; { B B }
+ordx['C3'xc]:='43'x; { C C }
+ordx['C4'xc]:='44'x; { D D }
+ordx['C5'xc]:='45'x; { E E }
+ordx['C6'xc]:='46'x; { F F }
+ordx['C7'xc]:='47'x; { G G }
+ordx['C8'xc]:='48'x; { H H }
+ordx['C9'xc]:='49'x; { I I }
+ordx['CA'xc]:='00'x; { ... NUL }
+ordx['CB'xc]:='00'x; { ... NUL }
+ordx['CC'xc]:='00'x; { ... NUL }
+ordx['CD'xc]:='00'x; { ... NUL }
+ordx['CE'xc]:='00'x; { ... NUL }
+ordx['CF'xc]:='00'x; { ... NUL }
+ordx['D0'xc]:='7D'x; { rcurly }
+ordx['D1'xc]:='4A'x; { J J }
+ordx['D2'xc]:='4B'x; { K K }
+ordx['D3'xc]:='4C'x; { L L }
+ordx['D4'xc]:='4D'x; { M M }
+ordx['D5'xc]:='4E'x; { N N }
+ordx['D6'xc]:='4F'x; { O O }
+ordx['D7'xc]:='50'x; { P P }
+ordx['D8'xc]:='51'x; { Q Q }
+ordx['D9'xc]:='52'x; { R R }
+ordx['DA'xc]:='00'x; { ... NUL }
+ordx['DB'xc]:='00'x; { ... NUL }
+ordx['DC'xc]:='00'x; { ... NUL }
+ordx['DD'xc]:='00'x; { ... NUL }
+ordx['DE'xc]:='00'x; { ... NUL }
+ordx['DF'xc]:='00'x; { ... NUL }
+ordx['E0'xc]:='5C'x; { \ \ }
+ordx['E1'xc]:='00'x; { ... NUL }
+ordx['E2'xc]:='53'x; { S S }
+ordx['E3'xc]:='54'x; { T T }
+ordx['E4'xc]:='55'x; { U U }
+ordx['E5'xc]:='56'x; { V V }
+ordx['E6'xc]:='57'x; { W W }
+ordx['E7'xc]:='58'x; { X X }
+ordx['E8'xc]:='59'x; { Y Y }
+ordx['E9'xc]:='5A'x; { Z Z }
+ordx['EA'xc]:='00'x; { ... NUL }
+ordx['EB'xc]:='00'x; { ... NUL }
+ordx['EC'xc]:='00'x; { ... NUL }
+ordx['ED'xc]:='00'x; { ... NUL }
+ordx['EE'xc]:='00'x; { ... NUL }
+ordx['EF'xc]:='00'x; { ... NUL }
+ordx['F0'xc]:='30'x; { 0 0 }
+ordx['F1'xc]:='31'x; { 1 1 }
+ordx['F2'xc]:='32'x; { 2 2 }
+ordx['F3'xc]:='33'x; { 3 3 }
+ordx['F4'xc]:='34'x; { 4 4 }
+ordx['F5'xc]:='35'x; { 5 5 }
+ordx['F6'xc]:='36'x; { 6 6 }
+ordx['F7'xc]:='37'x; { 7 7 }
+ordx['F8'xc]:='38'x; { 8 8 }
+ordx['F9'xc]:='39'x; { 9 9 }
+ordx['FA'xc]:='00'x; { ... NUL }
+ordx['FB'xc]:='00'x; { ... NUL }
+ordx['FC'xc]:='00'x; { ... NUL }
+ordx['FD'xc]:='00'x; { ... NUL }
+ordx['FE'xc]:='00'x; { ... NUL }
+ordx['FF'xc]:='00'x; { ... NUL }
+@z
diff --git a/macros/text1/compugraphics_8600/fonttex.web b/macros/text1/compugraphics_8600/fonttex.web
new file mode 100644
index 0000000000..6f2ce2858e
--- /dev/null
+++ b/macros/text1/compugraphics_8600/fonttex.web
@@ -0,0 +1,1936 @@
+%test version
+\font\twelvept=cmbx12
+\font\tentex=cmr10
+\def\topofcontents{\null
+ \def\titlepage{T}
+ \centerline{{\twelvept The FONTTEX Program}}
+ \vskip15pt
+ \centerline{Version 2, July 1986}
+ \hbox{\vbox{\hsize\the\hsize This work is
+ protected as an unpublished work under U.S. copyright laws.
+ Copyright $\copyright$ 1986 by WSUCSC. All rights Reserved.}}
+ \vskip18pt
+ \hbox{\vbox{\hsize\the\hsize This software is furnished under a
+ license for
+ use only on a single computer system and may be copied only
+ with the inclusion of the above copyright notice.
+ This software, or any other copies
+ thereof, may not be provided or otherwise made available to any
+ other person except for use on such system and to one who agrees to
+ these license terms. Title to and ownership of the software shall
+ at all times remain in WSUCSC.}}
+ \vfill}
+
+@* Introduction.
+ This version of fonttex writes font and driver information
+ into elements. Infile, a data file, must be assigned prior
+ the font data.
+
+ Fonttex reads a font description source element, and creates
+ a \TeX\ font file (TFM) and an 8600 driver element.
+
+ The font description source is divided into three sections.
+ The first section includes comments and parameters for the
+ entire font, the second describes the individual characters,
+ and the third provides information about ligatures, kerns,
+ linked math characters, and limit conventions on math
+ operators. Numeric information is given as integers,
+ or fractions depending on the context in which it
+ occurs. All sizes given will be scaled by the point size by
+ \TeX\ and so should reflect the sizes for 1-point
+ type.
+
+ The first section can include comments, which begin with a
+ "*" in column one of the line. It also includes definitions
+ of numeric parameters for the \TeX\ and driver font files.
+ The parameter definitions consist of an alphabetic name
+ beginning in column 1 and ending with one or more blanks;
+ and a numeric value. Comments and parameters can be
+ interspersed. This section is ended by a line containing a
+ dollar sign in column 1. Although the order the parameters
+ are given in is not significant, we will discuss them in a
+ conventional order. The first two parameters are the
+ scaling factors for the heights, widths, and depths of the
+ characters given in section 2. These scaling factors are
+ called |HUNITS| and |VUNITS|. Both have real values. All
+ character widths are implicitly multiplied by |HUNITS|, and
+ all heights and depths by |VUNITS|. For the Compugraphic 8600
+ we use |HUNITS|=1/54 and |VUNITS|=1/64, because of the internal
+ units used on the machine. The next several parameters give
+ information about the font needed by the 8600 driver.
+ |DEFFONT| specifies a font number on the typesetter. Unless
+ otherwise defined, all characters in this file come from
+ this font. |DEFWIDTH| gives the width multiplier. All
+ character widths are also multiplied by |DEFWIDTH|. Typically
+ |DEFWIDTH| is 1, but it could be less for condensed type and
+ more for expanded type. The remaining parameters are for
+ the \TeX\ font file. They all take real values.
+
+ There should be 128 character entries in section two.
+ Information about character is given in free format columns,
+ which are separated by one or more blanks. Beginning in
+ column 1 is the character mnemonic. Most fonts use standard
+ ascii codes, so that character 65 is A, etc. For this
+ reason, any single character name will be checked to see
+ that it corresponds to the appropriate ascii value. If not a
+ warning is issued.
+ Following this may be the keyword
+ LIGATURE or BUILD describing ligatures and built-up math
+ delimiters. This is omitted for ordinary characters. The
+ ligature keyword indicates that this character should be
+ substituted for a combination of two other characters.
+ Following the keyword should be the names of the two
+ characters separated by a plus sign. For example, fi
+ LIGATURE f+i and: ff LIGATURE f+f ffl LIGATURE ff+l.
+ For the
+ BUILD keyword, the character will be made from pieces.
+ There can be a top, bottom, middle, and extension character.
+ All are optional except the extension character. This is
+ specified as BUILD keyword=charname,keyword=charname,...
+ For instance, bigparen BUILD
+ TOP=parentop,MID=parenmid,BOT=parenmid.
+ The third field of
+ information is the character width, the fourth the height,
+ and the fifth the depth. Widths are given relative to the
+ point size and are implicitly multiplied by the |HUNITS|
+ parameter. Likewise height and depth are relative and are
+ multiplied by |VUNITS|. For example, the typical value of
+ |HUNITS| is 1/54. Then a character width given as 27 means
+ that the character is 0.5 times the point size in width. The
+ point size will be determined when the file is referred to
+ in \TeX , and the character sizes will be multiplied by it as
+ the file is read into \TeX . The sixth column gives 8600
+ commands and character codes. The commands have integer or
+ real parameters. Most characters will have a single character
+ code, and will be selected from the default font. An
+ alternate font can be specified by the F command. 8600 code
+ can also include point size commands, psuedo-italic
+ commands, etc. Refer to the module discussing ``Reading the
+ 8600 Codes.''
+
+ The final section specifies kerns, linked math characters,
+ and math operator conventions. A kern is an amount of
+ horizontal space to be subtracted between two characters.
+ It is specified as KERN A+W 5/100 for instance, to shave
+ 5/100 of the point size between occurences of A and W.
+ Linking occurs in math extension fonts where various sizes
+ of parentheses, brackets, and so forth occur. To link one
+ character to the next larger size of the same symbol,
+ specify LINK charname1 charname2 Finally, a character is
+ specified to be a mathop by the MATHOP keyword. (Common
+ mathops are sum and integral signs.) Following the keyword
+ is the character name and a real number. If the real number
+ is zero, limits for the operator will be centered above and
+ below it in display style. If non-zero, limits are set to
+ the right of the symbol, and the lower limit is moved left
+ by this amount.
+
+ Some further detail on the methods and data structures used
+ by Fonttex. Widths, heights, depths, and italic corrections
+ are stored in arrays of reals (type realarray). Entry -1
+ gives the highest numbered entry used so far. When a height,
+ depth, etc is read from the input file, procedure |AddToList|
+ is called to add the value to the array and return the index
+ of the entry in the array. If two or more characters have
+ the same dimension, the value is stored only once and the
+ characters have identical indices pointing to it. In the TFM
+ format font files, each character has an index into the
+ width, height, depth, italic correction arrays, and the
+ arrays of values are given separately. (See TUGboat volume
+ 2, no 1; or the comments in Sysdep at |ReadFontInfo| for more
+ details on the font file format.)
+
+ Ligatures are specified by giving the name of the two
+ "component" characters of the ligature. These are saved in
+ an array of records, "lig" until the entire pre-file has
+ been read. Then a pass is made through these records to look
+ up all the names of the component characters, and a another
+ pass is made through the lig records to group them by the
+ first character of the ligature and add a pointer in the
+ outstuff array for that character pointing to the
+ ligature/kern program. The same is done with kern
+ specifications and the final pass over both is done
+ simultaneously.
+
+ Extendible characters made from top, bottom, middle, and
+ extension pieces are marked at the character entry, and the
+ names of the pieces are saved in array ext until the file
+ has been read. The tag value and pointer into the ext array
+ are set in outstuff when the line is read in |ReadBuildStuff|,
+ but the character numbers for the ext array itself are not
+ found until after the entire file has been read.
+
+ When records are written to the driver and font files they
+ can be displayed by compiling Fonttex with "drvdump" and
+ "dump" respectively set to true.
+
+@ Following are a few macros and definitions used throughout program:
+
+@d incr(#) == # := # + 1
+@d decr(#) == # := # - 1
+@d do_nothing == begin; end
+@d ccat==@=||@>
+@f static == var
+@f value == var
+
+@ The beginning of the program.
+
+@p program fonttex(terminal,sysprint,fontpkt,drvpkt,infile);
+const
+ @<Global Constants@>@/
+type
+ @<Global Types@>@/
+var
+ @<Global Variables@>@/
+static@/
+ @^system dependencies@>
+ com_table :packed array[0..18] of string(7);@/
+value@/
+ com_table[0] := 'HDR'; {Header Record}@/
+ com_table[1] := 'CHWIDTH';{Character Width}@/
+ com_table[2] := 'RT'; {Reverse Type}@/
+ com_table[3] := 'PS'; {Point Size}@/
+ com_table[4] := 'SS'; {Set Size}@/
+ com_table[5] := 'VMF'; {Vertical Move Forward}@/
+ com_table[6] := 'VMR'; {Vertical Move Reverse}@/
+ com_table[7] := 'RW'; {Rule Width}@/
+ com_table[8] := 'RD'; {Rule Depth}@/
+ com_table[9] := 'IR'; {Insert Rule}@/
+ com_table[10] := 'SL'; {Slant Mode}@/
+ com_table[11] := 'RTWT'; {Reverse Type Window Top}@/
+ com_table[12] := 'RTWB'; {Reverse Type Window Bottom}@/
+ com_table[13] := 'AU'; {Auxiliary Character Set}@/
+ com_table[14] := 'F'; {Change Fonts}@/
+ com_table[15] := 'HMR'; {Horizontal Move Right}@/
+ com_table[16] := 'HML'; {Horizontal Move Left}@/
+ com_table[17] := 'TTS'; {8600 character, in decimal}@/
+ com_table[18] := 'MAXCMD';@/
+%include pasclib(asciicvt)@/
+
+@* Beginning section.
+This section includes some basic functions for reading the DVI file
+as well as a couple of procedures, like error and allcaps. Nothing
+tricky or noteworthy in these.
+
+@<Global Constants@>=
+ maxkerns = 255;
+ num_entries = 128; {maximum number of characters entered}
+
+@
+@<Global Types@>=
+ oneoftwo = packed 1..2;
+ oneoffour = packed 1..4;
+ bytes4 = packed record
+ byte0 :packed 0..255;
+ byte1 :packed 0..255;
+ case oneoftwo of
+ 1 :(rhword :packed 0..65535);
+ 2 :(byte2 :packed 0..255;
+ byte3 :packed 0..255)
+ end;
+ charindex = 0..127;@\
+ comm = (HDR,CHWIDTH,RT,PS,SS,VMF,VMR,RW,RD,IR,SL,
+ RTWT,RTWB,AU,F,HMR,HML,TTS,MAXCMD);@\
+ driverrec = record
+ cmd :integer;
+ case oneoftwo of
+ 1 :(param :shortreal);
+ 2 :(code :integer);
+ end;
+ extrec = record
+ sourceline:integer;
+ topname,botname,extname,midname :string(40);
+ top,bot,mid,ext :charindex;
+ end;
+ fonttypes = (standard,mathex,mathsy);
+ halves2 = packed record
+ lhword :packed 0..65535;
+ case oneoftwo of
+ 1 :(rhword :packed 0..65535);
+ 2 :(byte2 :packed 0..255;
+ byte3 :packed 0..255)
+ end;
+ kernrec = record
+ frstchar :charindex;
+ scndchar :charindex;
+ kernslot :integer;
+ end;
+ ligrec = record
+ sourceline :integer;
+ firstname :string(40);
+ scndname :string(40);
+ frstchar :charindex;
+ scndchar :charindex;
+ ligcode :charindex;
+ end;
+ memoryword = packed record case oneoffour of
+ 1 :(pts :shortreal);
+ 2 :(int :integer);
+ 3 :(twohalves :halves2);
+ 4 :(fourbytes :bytes4)
+ end;
+ outarray = array[charindex] of memoryword;
+ parameter = (slant,spacee,spstretch,spshrink,
+ xheight,quad,extraspace,
+ raisen1,raisen2,raisen3,
+ denom1,denom2,sup1,sup2,
+ sup3,sub1,sub2,supdrop,subdrop,
+ dlims1,dlims2,axisheight,
+ defthickness,bgopsp1,
+ bgopsp2,bgopsp3,
+ bgopsp4,bgopsp5);
+ realarray = array[-1..num_entries] of real;
+
+@ This function will convert whatever is passed to it into
+all capital letters. It translates lower case letters into upper case
+letters. All other characters outside of the range
+a$<$=character$<$=z are returned as their original value.
+
+@^system dependencies@>
+@p function allcaps(instring :string(40)) :string(40);
+var
+ i :integer;
+ character :char;
+ buildit :string(40);
+static
+ chtable :packed array['81'xc..'e9'xc] of char;
+value
+ chtable['81'xc] := 'A';
+ chtable['82'xc] := 'B';
+ chtable['83'xc] := 'C';
+ chtable['84'xc] := 'D';
+ chtable['85'xc] := 'E';
+ chtable['86'xc] := 'F';
+ chtable['87'xc] := 'G';
+ chtable['88'xc] := 'H';
+ chtable['89'xc] := 'I';
+ chtable['91'xc] := 'J';
+ chtable['92'xc] := 'K';
+ chtable['93'xc] := 'L';
+ chtable['94'xc] := 'M';
+ chtable['95'xc] := 'N';
+ chtable['96'xc] := 'O';
+ chtable['97'xc] := 'P';
+ chtable['98'xc] := 'Q';
+ chtable['99'xc] := 'R';
+ chtable['a2'xc] := 'S';
+ chtable['a3'xc] := 'T';
+ chtable['a4'xc] := 'U';
+ chtable['a5'xc] := 'V';
+ chtable['a6'xc] := 'W';
+ chtable['a7'xc] := 'X';
+ chtable['a8'xc] := 'Y';
+ chtable['a9'xc] := 'Z';
+begin
+ buildit := '';
+ for i := 1 to length(instring) do begin
+ readstr(substr(instring,i,1),character);
+ if character in ['a'..'z']
+ then buildit := buildit || str(chtable[character])
+ else buildit := buildit || str(character);
+ end;
+ allcaps := buildit;
+ end;
+
+@ This function receives an integer value and converts it to its
+hex value and returns that value as a string.
+
+@^system dependencies@>
+@p function hex(int :integer) :string(8);
+var
+ i :integer;
+ j :integer;
+ k16 :integer;
+ stri :string(8);
+static
+ hexarray :array[0..15] of string(1);
+value
+ hexarray[0] := '0';
+ hexarray[1] := '1';
+ hexarray[2] := '2';
+ hexarray[3] := '3';
+ hexarray[4] := '4';
+ hexarray[5] := '5';
+ hexarray[6] := '6';
+ hexarray[7] := '7';
+ hexarray[8] := '8';
+ hexarray[9] := '9';
+ hexarray[10] := 'A';
+ hexarray[11] := 'B';
+ hexarray[12] := 'C';
+ hexarray[13] := 'D';
+ hexarray[14] := 'E';
+ hexarray[15] := 'F';
+begin
+ stri := '';
+ i := int;
+ if i < 0 then begin
+ stri := 'FF';
+ i := 'FFFFFF'x + i + 1;
+ end;
+ k16 := 1048576;
+ repeat
+ if i >= k16
+ then begin
+ j := i div k16;
+ stri := stri || hexarray[j];
+ i := i - (j * k16);
+ end
+ else if length(stri) > 0
+ then stri := stri || '0';
+ k16 := k16 div 16;
+ until k16 = 1;
+ stri := stri || hexarray[i];
+ i := length(stri);
+ if (i = 1) or (i = 3) or (i = 5)
+ then stri := '0' || stri;
+ hex := stri;
+ end;
+
+@
+@<Global Types@>=
+ oneofsix = 1..6;
+
+@
+@<Global Variables@>=
+ dump :boolean;
+ fontpkt :file of memoryword;
+ inx :integer;
+ name :array[0..127] of string(40);
+ outcount :integer;
+ outrec :memoryword;
+
+@
+@p procedure writeout(outrec :memoryword;
+ outtype :oneofsix);
+var
+ length :integer;
+begin
+ if dump then begin
+ write(outcount:6,': ');
+ case outtype of
+ 1 :writeln('Pts=',outrec.pts);
+ 2 :begin
+ writeln('Fix=',outrec.int);
+ end;
+ 3 :with outrec.twohalves do
+ writeln('lhword=',lhword,',rhword=',rhword);
+ 4 :with outrec.fourbytes do
+ writeln(' Byte0=',byte0:3,'=>"',hex(byte0),'"',
+ ',Byte1=',byte1:3,'=>"',hex(byte1),'"',
+ ',Byte2=',byte2:3,'=>"',hex(byte2),'"',
+ ',Byte3=',byte3:3,'=>"',hex(byte3),'"');
+ 5 :with outrec.fourbytes do
+ writeln(' Width inx =',byte0:3,
+ ',Height inx= ',byte1 div 16:2,
+ ',Depth inx =',byte1 mod 16:2,
+ ',ItCor inx= ',byte2 div 4:2,
+ ',Tag =',byte2 mod 4:1,
+ ',Rem =',byte3:2,
+ ',chr="',name[inx],'"');
+ 6 :writeln(outrec.int:1);
+ end;{case}
+ end;{if}
+ outcount := outcount + 1; {count it}
+ fontpkt@@ := outrec;
+ put(fontpkt);
+ end; {writeout}
+
+@
+@<Global Types@>=
+@!error_severity = (fatal,notreallyfatal,overlookable);
+
+@
+@<Global Variables@>=
+@!currchar :charindex;
+@!errlin :integer;
+@!errlstr :string(10);
+@!errmax :integer;
+@!errmin :integer;
+@!errnum :integer;
+@!errstr :string(133);
+@!infile :text;
+@!lenfile :integer;
+@!lineno :integer;
+@!sysprint :text;
+
+@ The error procedure. When a byte is read that does not jive with
+what the program was expecting, it goes to this procedure with a
+return code of some kind and an appropriate message is printed to user.
+
+@p procedure error(err :integer;
+ howbad :error_severity);
+begin
+ if errlin = 0 then errlin := lineno;
+ {The caller can override the current line by setting errlin}
+ case err of
+ 0 :writeln('Empty input file');
+ 1 :writeln('Unrecognized keyword :',errstr);
+ 2 :begin
+ write('Number of entries must be specified');
+ writeln(' before the entries appear');
+ end;
+ 4 :begin
+ write('Integer expected but not found: next char=');
+ if eoln(infile)
+ then writeln('end of line')
+ else writeln(infile@@);
+ end;
+ 5 :writeln('Too many unique widths, depths, or heights');
+ 6 :begin
+ writeln('Entries in font file are out of sequence:');
+ writeln('The entry labelled ',errstr[1],
+ ' has a sequence ', 'of ',currchar:3,
+ ', not its Ascii value ',ordx[errstr[1]]:3);
+ end;
+ 7 :writeln('Ran out of entries in font file prematurely');
+ 8 :writeln('Real value given for parameter ',errstr,
+ ', but integer required');
+ 9 :writeln('The character names in a ligature or kern ',
+ 'have to be separated by a "+"');
+ 10 :writeln('Knave! No space should follow thine plus sign');
+ 11 :writeln('We expected to see a keyword here, not ',
+ errstr,'. Perhaps you have too many ',
+ 'character entries, or (gasp!) a typo');
+ 12 :writeln('You never specified "',errstr,
+ '" as a character name');
+ 13 :writeln('Keyword should be TOP,BOT,MID,EXT, not "',
+ errstr:3,'"');
+ 14 :writeln('You''ve specified parameters for both ',
+ 'mathex and mathsy fonts');
+ 15 :writeln('Expected to write ',lenfile:3,' records, ',
+ 'but actually wrote ',outcount:3);
+ 16 :writeln('After character name should be BUILD, ',
+ 'LIGATURE, or integer, not ',errstr);
+ 17 :writeln('Invalid value for parameter ',errlstr,', ',
+ errnum,' is <',errmin,' or >',errmax);
+ 18 :writeln('TTS codes must be within 0 to 127');
+ 19 :writeln(errlstr,' is not a valid 8600 command');
+ 20 :writeln('There is no 8600 code given for character ',
+ errstr:1);
+ 21 :writeln('Bad character for 8600 code :',infile@@);
+ 24 :writeln('Major font number should be between 1 and ',
+ maxfont:3);
+ 27 :writeln('Fontname too long, truncated to 8 characters');
+ 28 :writeln('Invalid input values for tracing, ',
+ 'record "',errlstr,'" skipped');
+ otherwise writeln('Unspecified error number ',err:3);
+ end; {case}
+ if howbad = fatal
+ then begin
+ writeln('Fatal error ends program at input line',
+ errlin:4);
+ trace(sysprint);
+ halt;
+ end
+ else writeln('Error at input line',errlin:4);
+ if (not eof(infile)) and (howbad = overlookable)
+ then begin
+ readln(infile);
+ writeln('rest of this string has been overlooked');
+ end;
+ errlin := 0; {reset default line to lineno}
+ end; {Error}
+
+@
+@p procedure skipblanks;
+begin
+ while (infile@@=' ') and not eoln(infile) do
+ get(infile); {advance one character}
+ end;
+
+@
+@<Global Types@>=
+@!chrset = set of char;
+
+@ This procedure reads a string from infile to be delimited by
+a character in the set delimiters.
+
+@p procedure readmnemonic(var mn :string(40);
+ delimiters :chrset);
+var
+ str :string(1);
+begin
+ mn := '';
+ while (length(mn) <= 40) and not (infile@@ in delimiters) do begin
+ read(infile,str);
+{writeln('character="',str);}
+ mn := mn || str;
+ end;
+ errstr := mn; {save globally for error messages}
+ end; {readmnemonic}
+
+@
+@<Global Constants@>=
+ exspacekey = 'EXTRASPACE';
+ quadkey = 'QUAD';
+ slantkey = 'SLANT';
+ spaceekey = 'SPACE';
+ spshrkey = 'SPSHRINK';
+ spstrkey = 'SPSTRETCH';
+ xhtkey = 'XHEIGHT';
+
+@
+@p procedure printparam(p :parameter);
+begin
+ case p of
+ slant :write(slantkey:5);
+ spacee :write(spaceekey:6);
+ spstretch :write(spstrkey:9);
+ spshrink :write(spshrkey:8);
+ xheight :write(xhtkey:7);
+ quad :write(quadkey:4);
+ extraspace:write(exspacekey:10);
+ otherwise write(' next math parm');
+ end; {case}
+ end; {printparam}
+
+@ This converts the byte to an integer, for further evaluation by
+the program.
+
+@p procedure readinteger(var int :integer);
+var
+ minusint :integer;
+begin
+ skipblanks;
+ if not (infile@@ in ['0'..'9','-']) then error(4,fatal);
+ if infile@@ = '-'
+ then begin
+ get(infile);
+ readinteger(minusint);
+ int := 0 - minusint;
+ end
+ else read(infile,int);
+ end; {readinteger}
+
+@ Reads series of integers separated by * and /. Returns
+ value in fractional form: multiplier/divisor is the real value
+
+@p procedure readexpr(var multiplier :integer;
+ var divisor :integer);
+var
+ op :char;
+ int :integer;
+begin
+ skipblanks;
+ if infile@@ = ' ' then error(4,fatal);
+ op := '*';
+ multiplier := 1;
+ divisor := 1;
+ while not (infile@@ in [' ',',']) do begin
+ readinteger(int);
+ if op = '*'
+ then multiplier := multiplier * int
+ else divisor := divisor * int;
+ if (infile@@ = '*') or (infile@@ = '/')
+ then read(infile,op);
+ end; {while}
+ end; {readexpr}
+
+@
+@p procedure readreal(var r :real);
+var
+ mult :integer;
+ divs :integer;
+begin
+ readexpr(mult,divs);
+ r := (1.0 * mult)/(1.0 * divs);
+ end;
+
+@
+@<Global Constants@>=@/
+ axishtkey = 'AXISHEIGHT';
+ bosp1key = 'BIGOPSPACE1';
+ bosp2key = 'BIGOPSPACE2';
+ bosp3key = 'BIGOPSPACE3';
+ bosp4key = 'BIGOPSPACE4';
+ bosp5key = 'BIGOPSPACE5';
+ codingschemekey = 'CODINGSCHEME';
+ deffontkey = 'DEFFONT';
+ dethicknesskey = 'DEFTHICKNESS';
+ dewidthkey = 'DEFWIDTH';
+ dlims1key = 'DELIMSIZE1';
+ dlims2key = 'DELIMSIZE2';
+ denom1key = 'DENOMLOWER1';
+ denom2key = 'DENOMLOWER2';
+ fntnamekey = 'FONTNAME';
+ hunitskey = 'HUNITS';
+ raizen1key = 'NUMRAISE1';
+ raizen2key = 'NUMRAISE2';
+ raizen3key = 'NUMRAISE3';
+ ptsizekey = 'POINTSIZE';
+ subdrpkey = 'SUBDROP';
+ sub1key = 'SUB1';
+ sub2key = 'SUB2';
+ supdrpkey = 'SUPDROP';
+ sup1key = 'SUP1';
+ sup2key = 'SUP2';
+ sup3key = 'SUP3';
+ vunitskey = 'VUNITS';
+ maxfont = 255;
+ uninitialized = -5000.0;
+
+@
+@<Global Variables@>=
+ codescheme :string(40);
+ def_ft_stuff :driverrec;
+ def_width_stuff :driverrec;
+ fontname :string(40);
+ fontype :fonttypes;
+ hunits :real;
+ params :array[parameter] of real;
+ paramset :array[fonttypes] of set of parameter;
+ pointsize :integer;
+ uniquecode :integer;
+ vunits :real;
+
+@
+@p procedure read_the_parameters;
+label 0;
+var
+ mn :string(40);
+ int :integer;
+ realval :real;
+ mult :integer;
+ divs :integer;
+ isint :boolean;
+ pp :parameter;
+ parmerror :boolean;
+begin
+ while infile@@ in ['A'..'Z','a'..'z','*'] do
+ if (infile@@ = '*')
+ then begin
+ readln(infile);
+ errlin := errlin + 1;
+ end
+ else begin
+ @<read vunits or hunits or parameter@>
+ {You can end the parameters with a '\$' line -- check it}
+ if infile@@ = '$'
+ then begin
+ readln(infile); {Skip end params marker}
+ errlin := errlin + 1;
+ end;
+ {now check that all parameters are given}
+0: parmerror := false;
+ for pp := slant to bgopsp5 do
+ if (params[pp] = uninitialized) and
+ (pp in paramset[fontype]+paramset[standard])
+ then begin
+ write('Parameter ');
+ printparam(pp);
+ writeln(' was not specified');
+ parmerror := true;
+ end;
+ if parmerror then error(7,fatal);
+ end; {|read_the_parameters|}
+
+@
+@<read vunits or hunits or parameter@>=
+ readmnemonic(mn,[' ']);
+ if dump then write('Parameter ',mn);
+ mn := allcaps(mn);
+ if mn = 'ENDPARAMS'
+ @<endparams@>
+ if (mn <> fntnamekey) and (mn <> codingschemekey)
+ then readexpr(mult,divs);
+ if divs = 0
+ then realval := 1.0 * mult
+ else realval := (1.0 * mult)/(1.0 * divs);
+ int := mult;
+ if divs = 1
+ then isint := true
+ else isint := false; {only reals have divisor}
+ if mn = hunitskey
+ @<hunits@>
+ else if mn = vunitskey
+ @<vunits@>
+ else if mn = fntnamekey
+ @<fontname@>
+ else if mn = codingschemekey
+ @<codingscheme@>
+ else if mn = deffontkey
+ @<deffont@>
+ else if mn = dewidthkey
+ @<defwidth@>
+ else if mn = ptsizekey
+ @<pointsize@>
+ else begin
+ @<TEX standard parameter@>
+ readln(infile);
+ errlin := errlin + 1;
+ end; {else..begin}
+
+@
+ @<endparams@>=
+ then begin
+ readln(infile);
+ errlin := errlin + 1;
+ goto 0; {marks end of parameters}
+ end;
+
+@
+ @<hunits@>=
+ then begin
+ hunits := realval;
+ if dump then writeln(' = ',realval);
+ end
+
+@
+ @<vunits@>=
+ then begin
+ vunits := realval;
+ if dump then writeln(' = ',realval);
+ end
+
+@
+ @<fontname@>=
+ then begin
+ skipblanks;
+ readmnemonic(fontname,[' ','.']);
+ fontname := allcaps(fontname);
+ if dump then writeln(' = ',fontname);
+ end
+
+@
+ @<codingscheme@>=
+ then begin
+ skipblanks;
+ readmnemonic(codescheme,[' ','.']);
+ codescheme := allcaps(codescheme);
+ if dump then writeln(' = ',codescheme);
+ end
+
+@
+ @<deffont@>=
+ then {set up |def_ft_stuff| record}
+ with def_ft_stuff do begin
+ cmd := ord(F); {8600 font command}
+ if int > maxfont
+ then error(24,notreallyfatal);
+ code := int * 10;
+ uniquecode := int;
+ if dump then writeln(' = ',int);
+ end
+
+@
+ @<defwidth@>=
+ then {set up |def_width_stuff| record}
+ with def_width_stuff do begin
+ {ratio of set width to point size}
+ cmd := ord(CHWIDTH);
+ param := realval;
+ if dump then writeln(' = ',realval);
+ end
+
+@
+ @<pointsize@>=
+ then begin
+ pointsize := int;
+ if dump then writeln(' = ',int);
+ end
+
+@
+ @<TEX standard parameter@>=
+ if mn = slantkey
+ then pp := slant
+ else if mn = spaceekey
+ then pp := spacee
+ else if mn = spstrkey
+ then pp := spstretch
+ else if mn = spshrkey
+ then pp := spshrink
+ else if mn = xhtkey
+ then pp := xheight
+ else if mn = quadkey
+ then pp := quad
+ else if mn = exspacekey
+ then pp := extraspace
+ @<TEX mathsy parameter@>
+ @<TEX mathex parameter@>
+ else error(1,fatal);
+ params[pp] := realval; {save value of it}
+ if dump then writeln(' = ',realval);
+ if pp in paramset[mathex]
+ then begin
+ if fontype = standard
+ then fontype := mathex
+ else if fontype <> mathex
+ then error(14,fatal);
+ end
+ else if pp in paramset[mathsy]
+ then begin
+ if fontype = standard
+ {change assumption}
+ then fontype := mathsy
+ else if fontype <> mathsy
+ then error(14,fatal);
+ end; {then..begin}
+ end; {else..begin TEX}
+
+@
+ @<TEX mathsy parameter@>=
+ else if mn = raizen1key
+ then pp := raisen1
+ else if mn = raizen2key
+ then pp := raisen2
+ else if mn = raizen3key
+ then pp := raisen3
+ else if mn = denom1key
+ then pp := denom1
+ else if mn = denom2key
+ then pp := denom2
+ else if mn = sup1key
+ then pp := sup1
+ else if mn = sup2key
+ then pp := sup2
+ else if mn = sup3key
+ then pp := sup3
+ else if mn = sub1key
+ then pp := sub1
+ else if mn = sub2key
+ then pp := sub2
+ else if mn = supdrpkey
+ then pp := supdrop
+ else if mn = subdrpkey
+ then pp := subdrop
+ else if mn = dlims1key
+ then pp := dlims1
+ else if mn = dlims2key
+ then pp := dlims2
+ else if mn = axishtkey
+ then pp := axisheight
+
+@
+ @<TEX mathex parameter@>=
+ else if mn = dethicknesskey
+ then pp := defthickness
+ else if mn = bosp1key
+ then pp := bgopsp1
+ else if mn = bosp2key
+ then pp := bgopsp2
+ else if mn = bosp3key
+ then pp := bgopsp3
+ else if mn = bosp4key
+ then pp := bgopsp4
+ else if mn = bosp5key
+ then pp := bgopsp5
+
+@ finds entry in array list if present and returns its index
+ as slot. otherwise it adds it at the end of list (specified
+ by list[-1]) and returns that index as slot.
+
+@p procedure add_to_list(var list :realarray;
+ entry :real;
+ lmax :integer;
+ var slot :integer);
+var
+ linx :integer;
+begin
+ if entry = 0 then begin
+ slot := 0;
+ return;
+ end;
+ for linx := 1 to trunc(list[-1]) do
+ if entry = list[linx]
+ then begin
+ slot := linx;
+ return;
+ end;
+ {not found}
+ if trunc(list[-1]) = lmax then error(5,fatal);
+ list[-1] := list[-1] + 1.0;
+ list[trunc(list[-1])] := entry;
+ slot := trunc(list[-1]);
+ end; {|add_to_list|}
+
+@
+@<Global Variables@>=
+ max :array[comm] of integer;
+ min :array[comm] of integer;
+
+@ Sets up info needed to read driver file info from the input
+ file, and write it in proper format into the driver output file
+
+@p procedure init8600commands;
+var
+ cmd :comm;
+begin
+ for cmd := HDR to MAXCMD do begin {initialize 8600 commands}
+ if cmd in [PS,SS] then begin
+ min[cmd] := 0;
+ max[cmd] := 1275;
+ end
+ else if cmd in [VMF, VMR, RD] then begin
+ min[cmd] := 1;
+ max[cmd] := 1736;
+ end
+ else if cmd in [RW, HML, HMR] then begin
+ min[cmd] := 1;
+ max[cmd] := 14688;
+ end
+ else if cmd in [SL] then begin
+ min[cmd] := 0;
+ max[cmd] := 48;
+ end
+ else if cmd in [RTWT, RTWB] then begin
+ min[cmd] := 0;
+ max[cmd] := 1440;
+ end
+ else if cmd in [F] then begin
+ min[cmd] := 1;
+ max[cmd] := 255;
+ end
+ else begin {catch any others}
+ min[cmd] := 0;
+ max[cmd] := 65535; {largest 2 byte integer}
+ end;
+ end; {FOR..begin}
+ end; {init8600commands}
+
+@
+@<Global Variables@>=
+ depth :realarray;
+ drvdump :boolean;
+ drvpkt :file of driverrec;
+ drvoutcount :integer;
+ dumpval :boolean;
+ height :realarray;
+ inrec :string(30);
+ itcorr :realarray;
+ kernout :realarray;
+ numext :integer;
+ numkerns :integer;
+ numligs :integer;
+ numparams :array[fonttypes] of integer;
+ outstuff :outarray;
+ str1 :string(30);
+ str2 :string(30);
+ terminal :text;
+ width :realarray;
+
+@
+@p procedure initialize;
+var
+ pp :parameter;
+ outinx :integer;
+begin
+ fontname := trim(parms);
+ termout(terminal);
+ termout(output);
+ rewrite(fontpkt,'NAME='||fontname||'.PRTFM.A');
+ rewrite(drvpkt,'NAME='||fontname||'.CGINFO.A');
+ reset(infile,'NAME='||fontname||'.FONTINFO.*');
+ dump := false;
+ drvdump := false;
+{
+ while not eof(terminal) do begin
+ readln(terminal,inrec);
+ inx := index(inrec,'=');
+ if inx < 1
+ then begin
+ errstr := inrec;
+ error(28,notreallyfatal);
+ end
+ else begin
+ str1 := substr(inrec,1,inx-1);
+ str2 := substr(inrec,inx+1,length(inrec)-inx);
+ str1 := allcaps(ltrim(trim(str1)));
+ str2 := allcaps(ltrim(trim(str2)));
+ if str2 = 'false'
+ then dumpval := false
+ else if str2 = 'true'
+ then dumpval := true;
+ if ((str2 <> 'false') and (str2 <> 'true')) or
+ ((str1 <> 'DUMP') and (str1 <> 'DRVDUMP'))
+ then begin
+ errstr := inrec;
+ error(28,notreallyfatal);
+ end
+ else if str1 = 'DUMP'
+ then dump := dumpval
+ else drvdump := dumpval;
+ end;
+ end;
+}
+ hunits := 1.0 / 54.0;
+ vunits := 1.0 / 8.0;
+ lineno := 1;
+ width[-1] := 0;
+ width[0] := 0.0; {for non-existent chars}
+ height[-1] := 0;
+ height[0] := 0.0; {for non-existent chars}
+ depth[-1] := 0;
+ depth[0] := 0.0; {for non-existent chars}
+ itcorr[-1] := 0;
+ itcorr[0] := 0.0; {for non-existent chars}
+ kernout[-1] := 0.0;
+ kernout[0] := 0.0;
+ {Set all tag values to 0 = vanilla}
+ for outinx := 0 to 127 do outstuff[outinx].fourbytes.byte2 := 0;
+ numkerns := -1;
+ numligs := -1;
+ numext := -1;
+ fontname := ' ';
+ codescheme := 'PARC TEXT';
+ fontype := standard;
+ paramset[standard] := [slant..quad,extraspace];
+ paramset[mathsy] := [raisen1..axisheight];
+ paramset[mathex] := [defthickness..bgopsp5];
+ pointsize := 1;
+ numparams[standard] := 7;
+ numparams[mathex] := 13;
+ numparams[mathsy] := 22;
+ for pp := slant to extraspace do params[pp] := uninitialized;
+ drvoutcount := 0; {no records to driver file yet}
+ init8600commands;
+ with def_ft_stuff do begin
+ cmd := ord(F);
+ code := 10; {font 1, fontlet 0 = def}
+ end;
+ with def_width_stuff do begin
+ cmd := ord(CHWIDTH);
+ param := 1.0; {normal width type is def}
+ end;
+ end;{initialize}
+
+@
+@p procedure readentry(var list :realarray;
+ lmax :integer;
+ var slot :integer;
+ units :real);
+var
+ entry :real;
+ multiplier :integer;
+ divisor :integer; {save value in expression}
+begin
+ readexpr(multiplier,divisor);
+ entry := (1.0 * multiplier) / (1.0 * divisor) * units;
+ if dump then writeln('entry read is ',multiplier:4,'/',
+ divisor:4,' * ',units:4:2, '=',entry);
+ add_to_list(list,entry,lmax,slot);
+ end; {readentry}
+
+@
+@<Global Variables@>=
+ lig :array[0..255] of ligrec;
+
+@ The keyword LIGATURE has just been scanned in the input for one of
+characters 0 to 127. Now we expect to find blank separators followed
+by the names of the two characters the ligature replaces. These will
+be separated by a '+' sign. Since the characters in question may
+not have been specified yet, the names will be saved for now, and
+looked up after all 128 character entries have been read.
+
+@
+@p procedure read_ligature_stuff;
+begin
+ skipblanks;
+ numligs := numligs+1;
+ with lig[numligs] do begin
+ sourceline := lineno; {save line for later error messages}
+ readmnemonic(firstname,[' ','+']);
+ if dump then writeln('first char of ligature is ',firstname);
+ if infile@@ <> '+'
+ then error(9,notreallyfatal)
+ else begin
+ get(infile); {skip plus sign}
+ if infile@@ = ' ' then error(10,overlookable);
+ skipblanks; {overlook}
+ readmnemonic(scndname,[' ']); {read second name}
+ if dump then writeln('second character of ligature',
+ ' is ',scndname);
+ end; {else..begin}
+ ligcode := currchar;
+ end; {with..begin}
+ end; {|read_ligature_stuff|}
+
+@
+ @<Global Variables@>=@/
+ charno :charindex;
+
+@ look up this name in the name array and tell where and if it was
+
+@p procedure lookup(lookee :string(40);
+ var charno :charindex; {where if found}
+ var found :boolean); {was it found}
+var
+ inx :integer;
+begin
+ found := false;
+ inx := 0;
+ while not found and (inx<128) do
+ if name[inx] = lookee
+ then found := true {found}
+ else inx := inx + 1; {check next}
+ if found
+ then charno := inx
+ else charno := 127; {not found, avoid out of range err}
+ if not found
+ then begin
+ errstr := lookee; {string for message}
+ error(12,notreallyfatal);
+ end; {then..begin}
+ end; {lookup}
+
+@ Set Tag value in lower 2 bits of byte 2 of outstuff record
+
+@p procedure set_tag_val(chinx :charindex;
+ tagval :integer);
+begin
+ with outstuff[chinx].fourbytes do begin
+ if (byte2 mod 4) <> 0
+ then writeln('Tag for char ',chinx:1,
+ ' already set to ',byte2 mod 4);
+ if tagval > 3 then error(25,fatal);
+ byte2 := (byte2 div 4 * 4) + tagval;
+ end; {with..begin}
+ end; {|set_tag_val|}
+
+@ Convert a real to a "FIX" which is a 32-bit number stored in the
+leftmost 32 bits of a word. The first 12 bits are the integer part, and
+the last 20 are the fraction. The left most bit is the sign
+
+@p function scaleout(r :real) :integer;
+var
+ stri :string(8);
+ int :integer;
+begin
+ int := round(r*'100000'x);
+ if dump then begin
+ stri := hex(int);
+ if length(stri) < 8
+ then stri := substr('00000000',1,8-length(stri)) || stri;
+ writeln('FIX of ',r,' is ',int,', hex value="',stri,'"');
+ end;
+ scaleout := int;
+ end; {scaleout}
+
+@
+@<Global Variables@>=
+ found :boolean;
+ kern :array[0..maxkerns] of kernrec;
+ mnem :string(40);
+
+@ The keyword KERN has been read: process the rest of the line
+
+@p procedure read_kern_stuff;
+begin
+ numkerns := numkerns + 1;
+ skipblanks;
+ with kern[numkerns] do begin
+ readmnemonic(mnem,[' ','+']);
+ lookup(mnem,charno,found);
+ if found
+ then frstchar := charno
+ else begin
+ frstchar := 127;
+ error(12,notreallyfatal);
+ end; {else..begin}
+ if infile@@ = ' '
+ then begin
+ error(9,notreallyfatal);
+ scndchar := 127; {put any old value there}
+ end
+ else begin
+ get(infile); {skip plus sign}
+ if infile@@ = ' '
+ then error(10,overlookable);
+ skipblanks;{overlook it!}
+ readmnemonic(mnem,[' ','-']);
+ lookup(mnem,charno,found);
+ if found
+ then scndchar := charno
+ else scndchar := 127;
+ end; {else..begin}
+ readentry(kernout,maxkerns,kernslot,hunits);
+ end; {with}
+ readln(infile);
+ errlin := errlin + 1;
+ end; {|read_kern_stuff|}
+
+@
+@<Global Constants@>=
+ linktag = 2;
+
+@
+@p procedure read_link_stuff;
+var
+ mn1 :string(40);
+ mn2 :string(40);
+ char1 :charindex;
+ char2 :charindex;
+ found :boolean;
+begin
+ skipblanks;
+ readmnemonic(mn1,[' ']);
+ lookup(mn1,char1,found);
+ skipblanks;
+ readmnemonic(mn2,[' ']);
+ lookup(mn2,char2,found);
+ set_tag_val(char1,linktag); {set tag type for special info}
+ outstuff[char1].fourbytes.byte3 := char2; {next bigger char}
+ readln(infile);
+ errlin := errlin + 1;
+ end;
+
+@
+@<Global Constants@>=
+ maxitcorr = 63;
+
+@
+@p procedure read_mathop_stuff;
+var
+ mn :string(40);
+ charno :charindex;
+ realval :real;
+ found :boolean;
+ slot :integer; {index into itcorr array for kerns}
+ tag :integer; {saves "tag" value from outstuff array}
+begin
+ skipblanks;
+ readmnemonic(mn,[' ']);
+ lookup(mn,charno,found);
+ readreal(realval);
+ add_to_list(itcorr,realval,maxitcorr,slot); {add value to list}
+ with outstuff[charno].fourbytes do begin
+ tag := byte2 mod 4; {tag is lower 2 bits}
+ byte2 := slot * 4 + tag; {and ic index is upper 6 bits}
+ end;{with..begin}
+ readln(infile);
+ errlin := errlin + 1;
+ end; {|read_mathop_stuff|}
+
+@
+@<Global Constants@>=
+ botkey = 'BOT';
+ extkey = 'EXT';
+ midkey = 'MID';
+ topkey = 'TOP';
+ exttag = 3;
+
+@
+@<Global Variables@>=
+ ext :array[0..127] of extrec;
+
+@ Name and keyword BUILD already read. Now expect keyword=value,
+keyword=value, ... Keywords are TOP, MID, BOT, EXT, and values are
+char names. Add a miscellaneous entry and point to it from this
+character record. initialize the four names in the ext record
+and set the four character values to zero. Later we will look up the
+names to determine the actual character numbers of the components.
+
+@p procedure read_build_stuff;
+var
+ key :string(40);
+ charname :string(40);
+begin
+ numext := numext + 1;
+ with ext[numext] do begin
+ sourceline := lineno; {save line for later error messages}
+ top := 0;
+ mid := 0;
+ bot := 0;
+ ext := 0;
+ topname := '';
+ midname := '';
+ botname := '';
+ extname := '';
+ end;
+ set_tag_val(currchar,exttag);
+ outstuff[currchar].fourbytes.byte3 := numext; {ptr into EXT array}
+ skipblanks;
+ repeat
+ if infile@@ = ',' then get(infile); {skip separator}
+ readmnemonic(key,['=']);
+ key := allcaps(key);
+ get(infile); {skip equal sign delimiter}
+ readmnemonic(charname,[',',' ']);
+ if key = topkey then ext[numext].topname := charname
+ else if key = midkey then ext[numext].midname := charname
+ else if key = botkey then ext[numext].botname := charname
+ else if key = extkey then ext[numext].extname := charname
+ else error(13,fatal);
+ until infile@@ <> ',';
+ end; {|read_build_stuff|}
+
+@
+@<Global Variables@>=
+ drvrec :driverrec;
+
+@ Print out the record about to be written to the driver file. This can
+ be turned on or off by setting constant 'drvdump' to true or false.
+
+@p procedure dump_driver_rec(cmdord :integer);
+begin
+ with drvrec do begin
+ if drvoutcount = 0
+ then writeln('*** Driver File Output ***');
+ write(drvoutcount:3,': ');
+ drvoutcount := drvoutcount + 1;
+ write('Command=',com_table[cmdord],', Parameter=');
+ if (cmdord = ord(CHWIDTH)) or
+ ((cmdord >= ord(VMF)) and (cmdord <= ord(IR))) or
+ (cmdord = ord(RTWT)) or
+ (cmdord = ord(RTWB)) or
+ (cmdord = ord(HMR)) or
+ (cmdord = ord(HML))
+ then writeln(param)
+ else writeln(code);
+ end; {with..begin}
+ end; {|dump_driver_rec|}
+
+@
+@<Global Variables@>=
+ stk :array [0..20] of driverrec;
+
+@ Push a record with an integer character code
+
+@p procedure pushcode(var stktop :integer);
+var
+ icode :integer;
+begin
+ readinteger(icode);
+ if icode > 127 then error(18,notreallyfatal);
+ stktop := stktop + 1;
+ with stk[stktop] do begin
+ cmd := ord(TTS);
+ code := icode;
+ end; {with..begin}
+ end; {pushcode}
+
+@ Reads a command or letter from the input file -- i.e., reads the
+ 1 to 4 char mnemonic and looks it up in array cmdname to find
+ the enumeration value of type "command" corresponding to it.
+ A letter is distinguished from a command because a letter has no
+ parameter whereas all one-character commands do.
+
+@p procedure readcmd(var cmd :comm);
+label 99;
+var
+ name :string(9);
+ ch :string(1);
+ cmdind :comm;
+begin
+ name := '';
+ while infile@@ in ['a'..'z','A'..'Z'] do begin
+ read(infile,ch);
+ name := name || ch;
+ end;
+ name := allcaps(name);
+ errlstr := name; {save name for error message (if needed)}
+ {cmd will be the command or MAXCMD if not found}
+ for cmdind := HDR to MAXCMD do
+ if name = com_table[ord(cmdind)] then goto 99;
+99: cmd := cmdind;
+ if cmdind = MAXCMD then error(19,notreallyfatal); {bad command}
+ end; {readcmd}
+
+@ Read the command "cmnd" -- see if it has any parameters, and
+if so read them. Push a record on the local stack for this command
+
+@p procedure readparams(var stktop :integer);
+var
+ cmnd :comm;
+begin
+ readcmd(cmnd);
+ stktop := stktop + 1; {push}
+ with stk[stktop] do begin
+ cmd := ord(cmnd);
+ if cmnd in [AU] {this one has no parameters}
+ then code := 0
+ else begin {read integer parm, stuff it into record}
+ if cmnd in [IR,VMF,VMR,RW,RD,RTWT,RTWB,HMR,HML]
+ then begin
+ readreal(param);
+ if (round(param) < min[cmnd]) or
+ (round(param) > max[cmnd]) then begin
+ errlstr := com_table[ord(cmnd)];
+ errnum := round(param);
+ errmax := max[cmnd];
+ errmin := min[cmnd];
+ error(17,notreallyfatal);
+ param := min[cmnd];
+ end; {then..begin}
+ if cmnd in [VMF,VMR,RD]
+ then param := param * vunits
+ else param := param * hunits;
+ end {then..end}
+ else begin
+ readinteger(code);
+ if (code < min[cmnd]) or
+ (code > max[cmnd]) then begin
+ errlstr := com_table[ord(cmnd)];
+ errnum := code;
+ errmax := max[cmnd];
+ errmin := min[cmnd];
+ error(17,notreallyfatal);
+ code := min[cmnd];
+ end; {then..begin}
+ end; {else..begin}
+ end; {else..begin}
+ end; {with..begin}
+ end; {readparams}
+
+@* Read 8600 Codes.
+The 8600 code info corresponding to this character will consist of 1
+or more entries separated by commas and containing no blanks. An entry
+can be a decimal character code or an 8600 command in which case it
+begins with a letter. The command name will be up to 4 letters long and
+may be followed by a parameter. Some commands take integer parameters
+and others take reals which will be given in the same format as widths,
+etc: i.e., as products and quotients of integer values.
+Following are listed the possible codes.
+\settabs\+\indent&RTWB = &Reverse Type Window Bottom\quad&value=0--1440
+in 10ths of a point\cr
+\+&PS\hfill =&Point Size\hfill&value=0--1275 in 10ths of a point.\cr
+\+&SS\hfill =&Set Size\hfill&value=0--1275 in 10ths of a point.\cr
+\+&VMF\hfill =&Vertical Move Forward\hfill&value=1--1736 in 8ths of a
+point\cr
+\+&VMR\hfill =&Vertical Move Reverse\hfill&value=1--1736 in 8ths of a
+point\cr
+\+&RD\hfill =&Rule Depth\hfill&value=1--1736 in 8ths of a point\cr
+\+&RW\hfill =&Rule Width\hfill&value=1--1736 in 8ths of a point\cr
+\+&HML\hfill =&Horizontal Move Left\hfill&value=1--14688 in 18ths of a
+point\cr
+\+&HMR\hfill =&Horizontal Move Right\hfill&value=1--14688 in 18ths of a
+point\cr
+\+&SL\hfill =&Slant\hfill&value=0 or 48\cr
+\+&IR\hfill =&Insert Rule\cr
+\+&AU\hfill =&Auxiliary Font\cr
+\+&F\hfill =&Font\hfill&value=1--255\cr
+\+&RTWT\hfill =&Reverse Type Window Top\hfill&value=0--1440 in 16ths of
+a point\cr
+\+&RTWB =&Reverse Type Window Bottom&value=0--1440 in 16ths of a point\cr
+
+@p procedure read8600codes;
+var
+ more_to_come :boolean;
+ stktop :integer; {gives index of last used (initially 0)}
+ inx :integer;
+begin
+ skipblanks;
+ stktop := -1; {no code yet}
+ if eoln(infile)
+ then error(20,notreallyfatal) {no code given}
+ else begin
+ {Repeat until next is no longer a comma, in which case it
+ had better be a blank!}
+ repeat
+ if infile@@ in ['0'..'9']
+ then pushcode(stktop) {decimal character code}
+ else if infile@@ in ['A'..'Z','a'..'z']
+ {read command and optional parms}
+ then readparams(stktop)
+ else error(21,notreallyfatal);
+ if infile@@ = ','
+ then begin
+ more_to_come := true;
+ get(infile);
+ end {then..begin}
+ else more_to_come := false;
+ until not more_to_come;
+ end; {else..begin}
+ {put header record out}
+ drvrec.cmd := ord(HDR);
+ drvrec.code := stktop; {how many codes for this character}
+ if drvdump then dump_driver_rec(drvrec.cmd);
+ drvpkt@@ := drvrec;
+ put(drvpkt);
+ {write out character width record}
+ drvrec.cmd := ord(CHWIDTH);
+ drvrec.param := width[outstuff[currchar].fourbytes.byte0];
+ {nw for the current character indexes its width in points}
+ if drvdump then dump_driver_rec(drvrec.cmd);
+ drvpkt@@ := drvrec;
+ put(drvpkt);
+ {Put out rec for each code or command}
+ for inx := 0 to stktop do begin
+ drvrec := stk[inx];
+ if drvdump then dump_driver_rec(drvrec.cmd);
+ drvpkt@@ := drvrec;
+ put(drvpkt);
+ end; {FOR..begin}
+ end; {read8600codes}
+
+@* MAIN PROGRAM.
+
+@<Global Constants@>=
+ buildkey = 'BUILD';
+ kernkey = 'KERN';
+ ligaturekey = 'LIGATURE';
+ linkkey = 'LINK';
+ mathopkey = 'MATHOP';
+ maxdp = 15;
+ maxht = 15;
+ maxwd = 255;
+ ligkerntag = 1;
+
+@
+@<Global Variables@>=
+ chnum :0..127;
+ chrt :char;
+ first :boolean;
+ heightslot :integer;
+ iny :integer;
+ itc :real;
+ ligcnt :integer;
+ ligout :array[0..255] of memoryword;
+ pp :parameter;
+ slot :integer;
+ tag :integer;
+
+@
+@p begin
+ {--------------- initialize -----------------------}
+ initialize;
+ {---------------- read input -------------------------}
+ read_the_parameters;
+ {Write first three entries to driver file}
+ drvrec.cmd := ord(HDR);
+ drvrec.code := ord(MAXCMD);
+ if drvdump then dump_driver_rec(drvrec.cmd);
+ drvpkt@@ := drvrec;
+ put(drvpkt);
+ drvrec := def_ft_stuff;
+ if drvdump then dump_driver_rec(drvrec.cmd);
+ drvpkt@@ := drvrec;
+ put(drvpkt);
+ drvrec := def_width_stuff;
+ if drvdump then dump_driver_rec(drvrec.cmd);
+ drvpkt@@ := drvrec;
+ put(drvpkt);
+ drvrec.cmd := ord(SL);
+ if params[slant] = uninitialized
+ then drvrec.code := 0
+ else drvrec.code := trunc(params[slant]);
+ if drvdump then dump_driver_rec(drvrec.cmd);
+ drvpkt@@ := drvrec;
+ put(drvpkt);
+ {Now read entries...}
+ for currchar := 0 to num_entries-1 do begin
+ if eof(infile) then error(7,fatal);
+ with outstuff[currchar].fourbytes do
+ byte3 := 0; {set remainder to 0}
+ readmnemonic(mnem,[' ']); {if any}
+ if dump then writeln('** Processing font info for "',mnem,'"');
+ name[currchar] := mnem; {save for later use!}
+ {one non-blank character -- check sequencing}
+ readstr(mnem,chrt);
+ if (length(mnem) = 1) and (ordx[chrt] <> currchar)
+ then error(6,notreallyfatal);
+ skipblanks; {look at next non-blank}
+ if infile@@ in ['A'..'Z','a'..'z']
+ then begin
+ readmnemonic(mnem,[' ']);
+ mnem := allcaps(mnem);
+ if mnem = ligaturekey
+ then read_ligature_stuff
+ else if mnem = buildkey
+ then read_build_stuff
+ else error(16,fatal);
+ end; {then..begin}
+ readentry(width,maxwd,slot,hunits); {read width}
+ outstuff[currchar].fourbytes.byte0 := slot; {save wid index}
+ readentry(height,maxht,slot,vunits); {read height}
+ heightslot := slot; {remember ht slot until depth read}
+ itc := height[slot] * params[slant]; {it corr = ht * slant}
+ add_to_list(itcorr,itc,maxitcorr,slot);
+ with outstuff[currchar].fourbytes do begin
+ tag := byte2 mod 4; {save tag value}
+ byte2 := slot * 4 + tag; {put itcorr in 6 bits, tag in 2}
+ end;
+ readentry(depth,maxdp,slot,vunits); {read depth}
+ outstuff[currchar].fourbytes.byte1 := heightslot * 16 + slot;
+ {now read 8600 information...}
+ read8600codes;
+ if not eoln(infile)
+ then begin
+ readln(infile);
+ errlin := errlin + 1;
+ end;
+ end; {FOR..begin}
+ {character entries have all been read...remaining entries
+ must begin with a keyword: KERN, Link, MATHOP These supply
+ additional information about certain characters}
+ while not eof(infile) do begin
+ readmnemonic(mnem,[' ']);
+ mnem := allcaps(mnem);
+ if mnem = kernkey
+ then read_kern_stuff
+ else if mnem = linkkey
+ then read_link_stuff
+ else if mnem = mathopkey
+ then read_mathop_stuff
+ else error(11,fatal);
+ end; {while..begin}
+@<look up lignames@>@/
+@<set up ligature info@>@/
+@<write font file@>@/
+end.
+
+@
+@<look up lignames@>=
+ for inx:= 0 to numligs do
+ with lig[inx] do begin
+ errlin := sourceline;
+ lookup(firstname,frstchar,found);
+ if not found
+ then begin
+ errlin := sourceline;
+ error(12,notreallyfatal);
+ frstchar := 127;
+ end; {then..begin}
+ lookup(scndname,scndchar,found);
+ if not found
+ then begin
+ errlin := sourceline;
+ error(12,notreallyfatal);
+ scndchar := 127;
+ end; {then..begin}
+ end; {with..begin}
+ for inx := 0 to numext do
+ with ext[inx] do begin
+ errlin := sourceline;
+ if topname <> '' then lookup(topname,top,found);
+ if midname <> '' then lookup(midname,mid,found);
+ if botname <> '' then lookup(botname,bot,found);
+ if extname <> '' then lookup(extname,ext,found);
+ end; {with..begin}
+
+@
+@<set up ligature info@>=
+ ligcnt := 0;
+ for chnum := 0 to 127 do begin
+ first := true;
+ for inx := 0 to numligs do
+ if lig[inx].frstchar = chnum
+ then begin
+ if first then begin
+ {ptr to first ligature}
+ outstuff[chnum].fourbytes.byte3 := ligcnt;
+ set_tag_val(chnum,ligkerntag);
+ first := false;
+ end; {then..begin}
+ with ligout[ligcnt].fourbytes, lig[inx] do
+ begin {transfer info into output records}
+ {byte0=1 if last ligature
+ byte1=next chararacter of ligature
+ byte2=0 for a ligature
+ byte3=code of ligature character}
+ byte0 := '00000000'B;
+ byte1 := scndchar;
+ byte2 := '00000000'B;
+ byte3 := ligcode;
+ end; {with..begin}
+ ligcnt := ligcnt+1; {ready for next one}
+ end; {then..begin}
+ {Now do same with kerns}
+ for inx := 0 to numkerns do
+ if kern[inx].frstchar = chnum
+ then begin
+ if first then begin
+ {link to ligature record}
+ outstuff[chnum].fourbytes.byte3 := ligcnt;
+ set_tag_val(chnum,ligkerntag);
+ first := false; {not anymore}
+ end; {then..begin}
+ with ligout[ligcnt].fourbytes, kern[inx] do
+ begin {transfer info into output records}
+ {byte0=1 if last kern
+ byte1=next chararacter of kern
+ byte2=1 for a kern
+ byte3=index of kern character}
+ byte0 := '00000000'B;
+ byte1 := scndchar;
+ byte2 := '10000000'B;
+ byte3 := kernslot;
+ end; {with..begin}
+ ligcnt := ligcnt + 1;
+ end; {FOR,then..begin}
+ if not first
+ then ligout[ligcnt-1].fourbytes.byte0 := '10000000'B;
+ {there was at least one record, so flag the last of 'em}
+ end; {FOR..begin} {that's all the characters}
+
+@ Now write out in TEX format. TUGboat vol 2, no 1 article
+ TEX FONT METRIC fileS says the first 12 half-words of the
+ file are lengths, and obey the following equation:
+ lenfile=6 + lh + (ec-be+1) + nw + nh + nd + ni + nk + nl + ne + np
+ lh=length of header=18 words ec=end character=127,
+ bc=beginning char=0, hence:
+ lenfile = 6 + 18 + 128 + nw + nh + nd + ni + nk + nl + ne + np
+ Calculate its value:
+
+@<write font file@>=
+ if not eof(infile) then error(7,fatal);
+ lenfile := 6 + 18 + 128 + trunc(width[-1]) + trunc(height[-1])@/
+ + trunc(depth[-1]) + trunc(itcorr[-1])@/
+ + numkerns + numligs + numext + trunc(kernout[-1])@/
+ + numparams[fontype] {num parameters}@/
+ + 8; {off by one on nw,nh,nd,ni,nk,nl,ne and kernout}@/
+ if dump then writeln('Writing info to TEX-readable file');
+ outcount := 0; {start counting}
+ writeln('Number of records is ',lenfile:4);
+ if dump then write('* lf, lh:');
+ outrec.twohalves.lhword := lenfile; {len of file}
+ outrec.fourbytes.rhword := 18; {len of header}
+ writeout(outrec,3);
+ if dump then write('* bc, ec:');
+ outrec.twohalves.lhword := 0; {first char code}
+ outrec.twohalves.rhword := 127; {last char code}
+ writeout(outrec,3);
+ if dump then write('* nw, nh:');
+ outrec.twohalves.lhword := trunc(width[-1]+1);
+ outrec.twohalves.rhword := trunc(height[-1]+1);
+ writeout(outrec,3);
+ if dump then write('* nd, ni:');
+ outrec.twohalves.lhword := trunc(depth[-1]+1);
+ outrec.twohalves.rhword := trunc(itcorr[-1]+1);
+ writeout(outrec,3);
+ if dump then write('* nl, nk:');
+ outrec.twohalves.lhword := numligs + numkerns + 2;
+ outrec.twohalves.rhword := trunc(kernout[-1]+1);
+ writeout(outrec,3);
+ if dump then write('* ne, np:');
+ outrec.twohalves.lhword := numext+1;
+ outrec.twohalves.rhword := numparams[fontype];
+ writeout(outrec,3);
+
+ if dump then writeln('*** Header info');
+ outrec.int := uniquecode;
+ writeout(outrec,6);
+ outrec.int := scaleout(float(pointsize)); {def = 1 point}
+ writeout(outrec,2);
+ writeln('*** Coding Scheme = ',codescheme);
+ outrec.fourbytes.byte0 := length(codescheme);
+ for inx := 2 to 40 do begin
+ iny := inx mod 4;
+ if iny = 0 then iny := 4;
+ iny := iny - 1;
+ if inx-1 <= length(codescheme)
+ then readstr(substr(codescheme,inx-1,1),chrt)
+ else chrt := chrx['00'X];
+ with outrec.fourbytes do case iny of
+ 0 :byte0 := ordx[chrt];
+ 1 :byte1 := ordx[chrt];
+ 2 :byte2 := ordx[chrt];
+ 3 :begin
+ byte3 := ordx[chrt];
+ writeout(outrec,4);
+ end;
+ otherwise error(99,fatal);
+ end;
+ end;
+ if length(fontname) > 8
+ then begin
+ error(27,notreallyfatal);
+ fontname := substr(fontname,1,8);
+ end;
+ writeln('*** Font Name = ',fontname);
+ outrec.fourbytes.byte0 := length(fontname);
+ for inx := 2 to 20 do begin
+ iny := inx mod 4;
+ if iny = 0 then iny := 4;
+ iny := iny - 1;
+ if inx-1 <= length(fontname)
+ then readstr(substr(fontname,inx-1,1),chrt)
+ else chrt := chrx['00'X];
+ with outrec.fourbytes do case iny of
+ 0 :byte0 := ordx[chrt];
+ 1 :byte1 := ordx[chrt];
+ 2 :byte2 := ordx[chrt];
+ 3 :begin
+ byte3 := ordx[chrt];
+ writeout(outrec,4);
+ end;
+ otherwise error(99,fatal);
+ end;
+ end;
+ outrec.int := 0;
+ writeout(outrec,6); {no Parc face byte now}
+ @<Write out FINFO part of font file@>
+ @<write out widths@>
+ @<write out heights@>
+ @<write out depths@>
+ @<write out itcorrs@>
+ @<write out ligature/kern programs@>
+ @<write out extension chars@>
+ @<write params@>
+ writeln('End of font file preprocessor');
+
+@
+ @<Write out FINFO part of font file@>=
+ for inx := 0 to num_entries-1 do writeout(outstuff[inx],5);
+
+@
+ @<write out widths@>=
+ if dump then writeln('*** Widths');
+ for inx := 0 to trunc(width[-1]) do begin
+ outrec.int := scaleout(width[inx]);
+ writeout(outrec,2);
+ end;
+
+@
+ @<write out heights@>=
+ if dump then writeln('*** Heights');
+ for inx := 0 to trunc(height[-1]) do begin
+ outrec.int := scaleout(height[inx]);
+ writeout(outrec,2);
+ end;
+
+@
+ @<write out depths@>=
+ if dump then writeln('*** Depths');
+ for inx := 0 to trunc(depth[-1]) do begin
+ outrec.int := scaleout(depth[inx]);
+ writeout(outrec,2);
+ end;
+
+@
+ @<write out itcorrs@>=
+ if dump then writeln('*** itcorrs');
+ for inx := 0 to trunc(itcorr[-1]) do begin
+ outrec.int := scaleout(itcorr[inx]);
+ writeout(outrec,2);
+ end;
+
+@
+ @<write out ligature/kern programs@>=
+ if dump then writeln('*** Lig/Kern programs');
+ for inx := 0 to numligs + numkerns + 1 do
+ writeout(ligout[inx],4);
+ {write out kern values as fixes}
+ if dump then writeln('*** Kern values');
+ for inx := 0 to trunc(kernout[-1]) do begin
+ outrec.int := scaleout(kernout[inx]);
+ writeout(outrec,2);
+ end;
+
+@
+ @<write out extension chars@>=
+ if dump then writeln('*** Extension chars');
+ for inx := 0 to numext do
+ with ext[inx], outrec.fourbytes do begin
+ byte0 := top;
+ byte1 := mid;
+ byte2 := bot;
+ byte3 := ext;
+ writeout(outrec,4);
+ end; {with..begin}
+
+@
+ @<write params@>=
+ if dump then writeln('*** Params');
+ for pp := slant to bgopsp5 do
+ if pp in paramset[standard]+paramset[fontype]
+ then begin
+ if dump then begin
+ printparam(pp);
+ write(': ');
+ end;
+ outrec.int := scaleout(params[pp]);
+ writeout(outrec,2);
+ end; {then..begin}
+
+@* INDEX.
diff --git a/macros/text1/compugraphics_8600/reblock.pascal b/macros/text1/compugraphics_8600/reblock.pascal
new file mode 100644
index 0000000000..28c7dd6e8f
--- /dev/null
+++ b/macros/text1/compugraphics_8600/reblock.pascal
@@ -0,0 +1,34 @@
+ PROGRAM reblock(input,output);
+ VAR
+ outstring :STRING(1024);
+ instring :STRING(8);
+ fontname :STRING(8);
+ filetype :STRING(8);
+ parmstring :STRING(20);
+ i, fill :integer;
+ BEGIN
+ parmstring := TRIM(parms);
+ i := index(parmstring,' ');
+ fontname := SUBSTR(parmstring,1,i-1);
+ filetype := SUBSTR(parmstring,i+1);
+ RESET(input,'NAME='||fontname||'.PR'||filetype||'.A');
+ REWRITE(output,'NAME='||fontname||'.'||filetype||
+ '.A,LRECL=1024,RECFM=F');
+ outstring := '';
+ READLN(input,instring);
+ WHILE NOT EOF(input) DO BEGIN;
+ outstring := outstring || instring;
+ IF LENGTH(outstring) >= 1024 THEN BEGIN
+ WRITELN(output,outstring);
+ outstring := '';
+ END;
+ READLN(input,instring);
+ END;
+ IF LENGTH(outstring) > 0 THEN BEGIN
+ IF LENGTH(outstring) < 1024 THEN
+ REPEAT
+ outstring := outstring || '00'xc;
+ UNTIL LENGTH(outstring) >= 1024;
+ WRITELN(output,outstring);
+ END;
+ END.
diff --git a/macros/text1/compugraphics_8600/tex8600.cmschan b/macros/text1/compugraphics_8600/tex8600.cmschan
new file mode 100644
index 0000000000..cd3acaba08
--- /dev/null
+++ b/macros/text1/compugraphics_8600/tex8600.cmschan
@@ -0,0 +1 @@
+% No change file needed generally
diff --git a/macros/text1/compugraphics_8600/tex8600.outchan b/macros/text1/compugraphics_8600/tex8600.outchan
new file mode 100644
index 0000000000..b2182cc794
--- /dev/null
+++ b/macros/text1/compugraphics_8600/tex8600.outchan
@@ -0,0 +1,580 @@
+@x
+%test version
+@y
+%out version 1
+@z
+
+@x
+\font\twelvept=cmbx12
+\font\tentex=cmr10
+@y
+\font\twelvept=cmbx12
+@z
+
+@x
+@p program tex8600(sysprint,addrline,setfile,cgfonts,infofile);
+@y
+@p program tex8600(sysprint,addrline,setfile,cgfonts);
+@z
+
+@x
+@<Global Variables@>@/
+static@/
+@!com_table :packed array[0..18] of string(7);@/
+value@/
+ com_table[0] := 'HDR'; {Header Record}@/
+ com_table[1] := 'CHWIDTH';{Character Width}@/
+ com_table[2] := 'RT'; {Reverse Type}@/
+ com_table[3] := 'PS'; {Point Size}@/
+ com_table[4] := 'SS'; {Set Size}@/
+ com_table[5] := 'VMF'; {Vertical Move Forward}@/
+ com_table[6] := 'VMR'; {Vertical Move Reverse}@/
+ com_table[7] := 'RW'; {Rule Width}@/
+ com_table[8] := 'RD'; {Rule Depth}@/
+ com_table[9] := 'IR'; {Insert Rule}@/
+ com_table[10] := 'SL'; {Slant Mode}@/
+ com_table[11] := 'RTWT'; {Reverse Type Window Top}@/
+ com_table[12] := 'RTWB'; {Reverse Type Window Bottom}@/
+ com_table[13] := 'AU'; {Auxiliary Character Set}@/
+ com_table[14] := 'F'; {Change Fonts}@/
+ com_table[15] := 'HMR'; {Horizontal Move Right}@/
+ com_table[16] := 'HML'; {Horizontal Move Left}@/
+ com_table[17] := 'TTS'; {8600 character, in decimal}@/
+ com_table[18] := 'MAXCMD';@/
+%include pasclib(asciicvt)@/
+@y
+@<Global Variables@>@/
+static@/
+@!com_table :packed array[0..18] of string(7);@/
+@!ordx : packed array['00'xc..'FF'xc] of '00'x..'7f'x;@/
+@!chrx : packed array['00'x..'7F'x] of '00'xc..'FF'xc;@/
+value@/
+ com_table[0] := 'HDR'; {Header Record}@/
+ com_table[1] := 'CHWIDTH';{Character Width}@/
+ com_table[2] := 'RT'; {Reverse Type}@/
+ com_table[3] := 'PS'; {Point Size}@/
+ com_table[4] := 'SS'; {Set Size}@/
+ com_table[5] := 'VMF'; {Vertical Move Forward}@/
+ com_table[6] := 'VMR'; {Vertical Move Reverse}@/
+ com_table[7] := 'RW'; {Rule Width}@/
+ com_table[8] := 'RD'; {Rule Depth}@/
+ com_table[9] := 'IR'; {Insert Rule}@/
+ com_table[10] := 'SL'; {Slant Mode}@/
+ com_table[11] := 'RTWT'; {Reverse Type Window Top}@/
+ com_table[12] := 'RTWB'; {Reverse Type Window Bottom}@/
+ com_table[13] := 'AU'; {Auxiliary Character Set}@/
+ com_table[14] := 'F'; {Change Fonts}@/
+ com_table[15] := 'HMR'; {Horizontal Move Right}@/
+ com_table[16] := 'HML'; {Horizontal Move Left}@/
+ com_table[17] := 'TTS'; {8600 character, in decimal}@/
+ com_table[18] := 'MAXCMD';@/
+{ EBCDIC to ASCII INTEGER and ASCII INTEGER to EBCDIC conversion }
+{ EBCDIC char to ASCII integer } { ASCII INTEGER to EBCDIC char }
+ordx['00'xc]:='00'x; { NUL NUL } chrx['00'x]:='00'xc; { NUL NUL }
+ordx['01'xc]:='01'x; { SOH SOH } chrx['01'x]:='01'xc; { SOH SOH }
+ordx['02'xc]:='02'x; { STX STX } chrx['02'x]:='02'xc; { STX STX }
+ordx['03'xc]:='03'x; { ETX ETX } chrx['03'x]:='03'xc; { ETX ETX }
+ordx['04'xc]:='00'x; { ... NUL } chrx['04'x]:='37'xc; { EOT EOT }
+ordx['05'xc]:='09'x; { HT HT } chrx['05'x]:='2D'xc; { ENQ ENQ }
+ordx['06'xc]:='00'x; { ... NUL } chrx['06'x]:='2E'xc; { ACK ACK }
+ordx['07'xc]:='7F'x; { DEL DEL } chrx['07'x]:='2F'xc; { BEL BEL }
+ordx['08'xc]:='00'x; { ... NUL } chrx['08'x]:='16'xc; { BS BS }
+ordx['09'xc]:='00'x; { ... NUL } chrx['09'x]:='05'xc; { HT HT }
+ordx['0A'xc]:='00'x; { ... NUL } chrx['0A'x]:='25'xc; { LF LF }
+ordx['0B'xc]:='0B'x; { VT VT } chrx['0B'x]:='0B'xc; { VT VT }
+ordx['0C'xc]:='0C'x; { FF FF } chrx['0C'x]:='0C'xc; { FF FF }
+ordx['0D'xc]:='0D'x; { CR CR } chrx['0D'x]:='0D'xc; { CR CR }
+ordx['0E'xc]:='0E'x; { SO SO } chrx['0E'x]:='0E'xc; { SO SO }
+ordx['0F'xc]:='0F'x; { SI SI } chrx['0F'x]:='0F'xc; { SI SI }
+ordx['10'xc]:='10'x; { DLE DLE } chrx['10'x]:='10'xc; { DLE DLE }
+ordx['11'xc]:='11'x; { DC1 DC1 } chrx['11'x]:='11'xc; { DC1 DC1 }
+ordx['12'xc]:='12'x; { DC2 DC2 } chrx['12'x]:='12'xc; { DC2 DC2 }
+ordx['13'xc]:='13'x; { TM DC3 } chrx['13'x]:='13'xc; { DC3 TM }
+ordx['14'xc]:='00'x; { ... NUL } chrx['14'x]:='3C'xc; { DC4 DC4 }
+ordx['15'xc]:='00'x; { ... NUL } chrx['15'x]:='3D'xc; { NAK NAK }
+ordx['16'xc]:='08'x; { BS BS } chrx['16'x]:='32'xc; { SYN SYN }
+ordx['17'xc]:='00'x; { ... NUL } chrx['17'x]:='26'xc; { ETB ETB }
+ordx['18'xc]:='18'x; { CAN CAN } chrx['18'x]:='18'xc; { CAN CAN }
+ordx['19'xc]:='19'x; { EM EM } chrx['19'x]:='19'xc; { EM EM }
+ordx['1A'xc]:='00'x; { ... NUL } chrx['1A'x]:='3F'xc; { SUB SUB }
+ordx['1B'xc]:='00'x; { ... NUL } chrx['1B'x]:='27'xc; { ESC ESC }
+ordx['1C'xc]:='1C'x; { IFS FS } chrx['1C'x]:='1C'xc; { FS IFS }
+ordx['1D'xc]:='1D'x; { IGS GS } chrx['1D'x]:='1D'xc; { GS IGS }
+ordx['1E'xc]:='1E'x; { IRS RS } chrx['1E'x]:='1E'xc; { RS IRS }
+ordx['1F'xc]:='1F'x; { IUS US } chrx['1F'x]:='1F'xc; { US IUS }
+ordx['20'xc]:='00'x; { ... NUL } chrx['20'x]:='40'xc; { SP SP }
+ordx['21'xc]:='00'x; { ... NUL } chrx['21'x]:='5A'xc; { ! ! }
+ordx['22'xc]:='00'x; { ... NUL } chrx['22'x]:='7F'xc; { " " }
+ordx['23'xc]:='00'x; { ... NUL } chrx['23'x]:='7B'xc; { # # }
+ordx['24'xc]:='00'x; { ... NUL } chrx['24'x]:='5B'xc; { $ $ }
+ordx['25'xc]:='0A'x; { LF LF } chrx['25'x]:='6C'xc; { % % }
+ordx['26'xc]:='17'x; { ETB ETB } chrx['26'x]:='50'xc; { & & }
+ordx['27'xc]:='1B'x; { ESC ESC } chrx['27'x]:='7D'xc; { ' ' }
+ordx['28'xc]:='00'x; { ... NUL } chrx['28'x]:='4D'xc; { ( ( }
+ordx['29'xc]:='00'x; { ... NUL } chrx['29'x]:='5D'xc; { ) ) }
+ordx['2A'xc]:='00'x; { ... NUL } chrx['2A'x]:='5C'xc; { * * }
+ordx['2B'xc]:='00'x; { ... NUL } chrx['2B'x]:='4E'xc; { + + }
+ordx['2C'xc]:='00'x; { ... NUL } chrx['2C'x]:='6B'xc; { , , }
+ordx['2D'xc]:='05'x; { ENQ ENQ } chrx['2D'x]:='60'xc; { - - }
+ordx['2E'xc]:='06'x; { ACK ACK } chrx['2E'x]:='4B'xc; { . . }
+ordx['2F'xc]:='07'x; { BEL BEL } chrx['2F'x]:='61'xc; { / / }
+ordx['30'xc]:='00'x; { ... NUL } chrx['30'x]:='F0'xc; { 0 0 }
+ordx['31'xc]:='00'x; { ... NUL } chrx['31'x]:='F1'xc; { 1 1 }
+ordx['32'xc]:='16'x; { SYN SYN } chrx['32'x]:='F2'xc; { 2 2 }
+ordx['33'xc]:='00'x; { ... NUL } chrx['33'x]:='F3'xc; { 3 3 }
+ordx['34'xc]:='00'x; { ... NUL } chrx['34'x]:='F4'xc; { 4 4 }
+ordx['35'xc]:='00'x; { ... NUL } chrx['35'x]:='F5'xc; { 5 5 }
+ordx['36'xc]:='00'x; { ... NUL } chrx['36'x]:='F6'xc; { 6 6 }
+ordx['37'xc]:='04'x; { EOT EOT } chrx['37'x]:='F7'xc; { 7 7 }
+ordx['38'xc]:='00'x; { ... NUL } chrx['38'x]:='F8'xc; { 8 8 }
+ordx['39'xc]:='00'x; { ... NUL } chrx['39'x]:='F9'xc; { 9 9 }
+ordx['3A'xc]:='00'x; { ... NUL } chrx['3A'x]:='7A'xc; { : : }
+ordx['3B'xc]:='00'x; { ... NUL } chrx['3B'x]:='5E'xc; { ; ; }
+ordx['3C'xc]:='14'x; { DC4 DC4 } chrx['3C'x]:='4C'xc; { < < }
+ordx['3D'xc]:='15'x; { NAK NAK } chrx['3D'x]:='7E'xc; { = = }
+ordx['3E'xc]:='00'x; { ... NUL } chrx['3E'x]:='6E'xc; { > > }
+ordx['3F'xc]:='1A'x; { SUB SUB } chrx['3F'x]:='6F'xc; { ? ? }
+ordx['40'xc]:='20'x; { SP SP } chrx['40'x]:='7C'xc; { @@ @@ }
+ordx['41'xc]:='00'x; { ... NUL } chrx['41'x]:='C1'xc; { A A }
+ordx['42'xc]:='00'x; { ... NUL } chrx['42'x]:='C2'xc; { B B }
+ordx['43'xc]:='00'x; { ... NUL } chrx['43'x]:='C3'xc; { C C }
+ordx['44'xc]:='00'x; { ... NUL } chrx['44'x]:='C4'xc; { D D }
+ordx['45'xc]:='00'x; { ... NUL } chrx['45'x]:='C5'xc; { E E }
+ordx['46'xc]:='00'x; { ... NUL } chrx['46'x]:='C6'xc; { F F }
+ordx['47'xc]:='00'x; { ... NUL } chrx['47'x]:='C7'xc; { G G }
+ordx['48'xc]:='00'x; { ... NUL } chrx['48'x]:='C8'xc; { H H }
+ordx['49'xc]:='00'x; { ... NUL } chrx['49'x]:='C9'xc; { I I }
+ordx['4A'xc]:='5E'x; { ã ã } chrx['4A'x]:='D1'xc; { J J }
+ordx['4B'xc]:='2E'x; { . . } chrx['4B'x]:='D2'xc; { K K }
+ordx['4C'xc]:='3C'x; { < < } chrx['4C'x]:='D3'xc; { L L }
+ordx['4D'xc]:='28'x; { ( ( } chrx['4D'x]:='D4'xc; { M M }
+ordx['4E'xc]:='2B'x; { + + } chrx['4E'x]:='D5'xc; { N N }
+ordx['4F'xc]:='7C'x; { | | } chrx['4F'x]:='D6'xc; { O O }
+ordx['50'xc]:='26'x; { & & } chrx['50'x]:='D7'xc; { P P }
+ordx['51'xc]:='00'x; { ... NUL } chrx['51'x]:='D8'xc; { Q Q }
+ordx['52'xc]:='00'x; { ... NUL } chrx['52'x]:='D9'xc; { R R }
+ordx['53'xc]:='00'x; { ... NUL } chrx['53'x]:='E2'xc; { S S }
+ordx['54'xc]:='00'x; { ... NUL } chrx['54'x]:='E3'xc; { T T }
+ordx['55'xc]:='00'x; { ... NUL } chrx['55'x]:='E4'xc; { U U }
+ordx['56'xc]:='00'x; { ... NUL } chrx['56'x]:='E5'xc; { V V }
+ordx['57'xc]:='00'x; { ... NUL } chrx['57'x]:='E6'xc; { W W }
+ordx['58'xc]:='00'x; { ... NUL } chrx['58'x]:='E7'xc; { X X }
+ordx['59'xc]:='00'x; { ... NUL } chrx['59'x]:='E8'xc; { Y Y }
+ordx['5A'xc]:='21'x; { ! ! } chrx['5A'x]:='E9'xc; { Z Z }
+ordx['5B'xc]:='24'x; { $ $ } chrx['5B'x]:='AD'xc; { [ [ }
+ordx['5C'xc]:='2A'x; { * * } chrx['5C'x]:='E0'xc; { \ \ }
+ordx['5D'xc]:='29'x; { ) ) } chrx['5D'x]:='BD'xc; { ] ] }
+ordx['5E'xc]:='3B'x; { ; ; } chrx['5E'x]:='4A'xc; { ã ã }
+ordx['5F'xc]:='7E'x; { ^ ^ } chrx['5F'x]:='6D'xc; { _ _ }
+ordx['60'xc]:='2D'x; { - - } chrx['60'x]:='79'xc; { ` ` }
+ordx['61'xc]:='2F'x; { / / } chrx['61'x]:='81'xc; { a a }
+ordx['62'xc]:='00'x; { ... NUL } chrx['62'x]:='82'xc; { b b }
+ordx['63'xc]:='00'x; { ... NUL } chrx['63'x]:='83'xc; { c c }
+ordx['64'xc]:='00'x; { ... NUL } chrx['64'x]:='84'xc; { d d }
+ordx['65'xc]:='00'x; { ... NUL } chrx['65'x]:='85'xc; { e e }
+ordx['66'xc]:='00'x; { ... NUL } chrx['66'x]:='86'xc; { f f }
+ordx['67'xc]:='00'x; { ... NUL } chrx['67'x]:='87'xc; { g g }
+ordx['68'xc]:='00'x; { ... NUL } chrx['68'x]:='88'xc; { h h }
+ordx['69'xc]:='00'x; { ... NUL } chrx['69'x]:='89'xc; { i i }
+ordx['6A'xc]:='00'x; { ... NUL } chrx['6A'x]:='91'xc; { j j }
+ordx['6B'xc]:='2C'x; { , , } chrx['6B'x]:='92'xc; { k k }
+ordx['6C'xc]:='25'x; { % % } chrx['6C'x]:='93'xc; { l l }
+ordx['6D'xc]:='5F'x; { _ _ } chrx['6D'x]:='94'xc; { m m }
+ordx['6E'xc]:='3E'x; { > > } chrx['6E'x]:='95'xc; { n n }
+ordx['6F'xc]:='3F'x; { ? ? } chrx['6F'x]:='96'xc; { o o }
+ordx['70'xc]:='00'x; { ... NUL } chrx['70'x]:='97'xc; { p p }
+ordx['71'xc]:='00'x; { ... NUL } chrx['71'x]:='98'xc; { q q }
+ordx['72'xc]:='00'x; { ... NUL } chrx['72'x]:='99'xc; { r r }
+ordx['73'xc]:='00'x; { ... NUL } chrx['73'x]:='A2'xc; { s s }
+ordx['74'xc]:='00'x; { ... NUL } chrx['74'x]:='A3'xc; { t t }
+ordx['75'xc]:='00'x; { ... NUL } chrx['75'x]:='A4'xc; { u u }
+ordx['76'xc]:='00'x; { ... NUL } chrx['76'x]:='A5'xc; { v v }
+ordx['77'xc]:='00'x; { ... NUL } chrx['77'x]:='A6'xc; { w w }
+ordx['78'xc]:='00'x; { ... NUL } chrx['78'x]:='A7'xc; { x x }
+ordx['79'xc]:='60'x; { ` ` } chrx['79'x]:='A8'xc; { y y }
+ordx['7A'xc]:='3A'x; { : : } chrx['7A'x]:='A9'xc; { z z }
+ordx['7B'xc]:='23'x; { # # } chrx['7B'x]:='C0'xc; { lcurly }
+ordx['7C'xc]:='40'x; { @@ @@ } chrx['7C'x]:='4F'xc; { | | }
+ordx['7D'xc]:='27'x; { ' ' } chrx['7D'x]:='D0'xc; { rcurly }
+ordx['7E'xc]:='3D'x; { = = } chrx['7E'x]:='9C'xc; { tilde }
+ordx['7F'xc]:='22'x; { " " } chrx['7F'x]:='07'xc; { DEL DEL }
+ordx['80'xc]:='00'x; { ... NUL }
+ordx['81'xc]:='61'x; { a a }
+ordx['82'xc]:='62'x; { b b }
+ordx['83'xc]:='63'x; { c c }
+ordx['84'xc]:='64'x; { d d }
+ordx['85'xc]:='65'x; { e e }
+ordx['86'xc]:='66'x; { f f }
+ordx['87'xc]:='67'x; { g g }
+ordx['88'xc]:='68'x; { h h }
+ordx['89'xc]:='69'x; { i i }
+ordx['8A'xc]:='00'x; { ... NUL }
+ordx['8B'xc]:='00'x; { ... NUL }
+ordx['8C'xc]:='00'x; { ... NUL }
+ordx['8D'xc]:='00'x; { ... NUL }
+ordx['8E'xc]:='00'x; { ... NUL }
+ordx['8F'xc]:='00'x; { ... NUL }
+ordx['90'xc]:='00'x; { ... NUL }
+ordx['91'xc]:='6A'x; { j j }
+ordx['92'xc]:='6B'x; { k k }
+ordx['93'xc]:='6C'x; { l l }
+ordx['94'xc]:='6D'x; { m m }
+ordx['95'xc]:='6E'x; { n n }
+ordx['96'xc]:='6F'x; { o o }
+ordx['97'xc]:='70'x; { p p }
+ordx['98'xc]:='71'x; { q q }
+ordx['99'xc]:='72'x; { r r }
+ordx['9A'xc]:='00'x; { ... NUL }
+ordx['9B'xc]:='00'x; { ... NUL }
+ordx['9C'xc]:='7E'x; { tilde }
+ordx['9D'xc]:='00'x; { ... NUL }
+ordx['9E'xc]:='00'x; { ... NUL }
+ordx['9F'xc]:='00'x; { ... NUL }
+ordx['A0'xc]:='00'x; { ... NUL }
+ordx['A1'xc]:='1A'x; { ... SUB }
+ordx['A2'xc]:='73'x; { s s }
+ordx['A3'xc]:='74'x; { t t }
+ordx['A4'xc]:='75'x; { u u }
+ordx['A5'xc]:='76'x; { v v }
+ordx['A6'xc]:='77'x; { w w }
+ordx['A7'xc]:='78'x; { x x }
+ordx['A8'xc]:='79'x; { y y }
+ordx['A9'xc]:='7A'x; { z z }
+ordx['AA'xc]:='00'x; { ... NUL }
+ordx['AB'xc]:='00'x; { ... NUL }
+ordx['AC'xc]:='00'x; { ... NUL }
+ordx['AD'xc]:='5B'x; { [ [ }
+ordx['AE'xc]:='00'x; { ... NUL }
+ordx['AF'xc]:='00'x; { ... NUL }
+ordx['B0'xc]:='00'x; { ... NUL }
+ordx['B1'xc]:='00'x; { ... NUL }
+ordx['B2'xc]:='00'x; { ... NUL }
+ordx['B3'xc]:='00'x; { ... NUL }
+ordx['B4'xc]:='00'x; { ... NUL }
+ordx['B5'xc]:='00'x; { ... NUL }
+ordx['B6'xc]:='00'x; { ... NUL }
+ordx['B7'xc]:='00'x; { ... NUL }
+ordx['B8'xc]:='00'x; { ... NUL }
+ordx['B9'xc]:='00'x; { ... NUL }
+ordx['BA'xc]:='00'x; { ... NUL }
+ordx['BB'xc]:='00'x; { ... NUL }
+ordx['BC'xc]:='00'x; { ... NUL }
+ordx['BD'xc]:='5D'x; { ] ] }
+ordx['BE'xc]:='00'x; { ... NUL }
+ordx['BF'xc]:='00'x; { ... NUL }
+ordx['C0'xc]:='7B'x; { lcurly }
+ordx['C1'xc]:='41'x; { A A }
+ordx['C2'xc]:='42'x; { B B }
+ordx['C3'xc]:='43'x; { C C }
+ordx['C4'xc]:='44'x; { D D }
+ordx['C5'xc]:='45'x; { E E }
+ordx['C6'xc]:='46'x; { F F }
+ordx['C7'xc]:='47'x; { G G }
+ordx['C8'xc]:='48'x; { H H }
+ordx['C9'xc]:='49'x; { I I }
+ordx['CA'xc]:='00'x; { ... NUL }
+ordx['CB'xc]:='00'x; { ... NUL }
+ordx['CC'xc]:='00'x; { ... NUL }
+ordx['CD'xc]:='00'x; { ... NUL }
+ordx['CE'xc]:='00'x; { ... NUL }
+ordx['CF'xc]:='00'x; { ... NUL }
+ordx['D0'xc]:='7D'x; { rcurly }
+ordx['D1'xc]:='4A'x; { J J }
+ordx['D2'xc]:='4B'x; { K K }
+ordx['D3'xc]:='4C'x; { L L }
+ordx['D4'xc]:='4D'x; { M M }
+ordx['D5'xc]:='4E'x; { N N }
+ordx['D6'xc]:='4F'x; { O O }
+ordx['D7'xc]:='50'x; { P P }
+ordx['D8'xc]:='51'x; { Q Q }
+ordx['D9'xc]:='52'x; { R R }
+ordx['DA'xc]:='00'x; { ... NUL }
+ordx['DB'xc]:='00'x; { ... NUL }
+ordx['DC'xc]:='00'x; { ... NUL }
+ordx['DD'xc]:='00'x; { ... NUL }
+ordx['DE'xc]:='00'x; { ... NUL }
+ordx['DF'xc]:='00'x; { ... NUL }
+ordx['E0'xc]:='5C'x; { \ \ }
+ordx['E1'xc]:='00'x; { ... NUL }
+ordx['E2'xc]:='53'x; { S S }
+ordx['E3'xc]:='54'x; { T T }
+ordx['E4'xc]:='55'x; { U U }
+ordx['E5'xc]:='56'x; { V V }
+ordx['E6'xc]:='57'x; { W W }
+ordx['E7'xc]:='58'x; { X X }
+ordx['E8'xc]:='59'x; { Y Y }
+ordx['E9'xc]:='5A'x; { Z Z }
+ordx['EA'xc]:='00'x; { ... NUL }
+ordx['EB'xc]:='00'x; { ... NUL }
+ordx['EC'xc]:='00'x; { ... NUL }
+ordx['ED'xc]:='00'x; { ... NUL }
+ordx['EE'xc]:='00'x; { ... NUL }
+ordx['EF'xc]:='00'x; { ... NUL }
+ordx['F0'xc]:='30'x; { 0 0 }
+ordx['F1'xc]:='31'x; { 1 1 }
+ordx['F2'xc]:='32'x; { 2 2 }
+ordx['F3'xc]:='33'x; { 3 3 }
+ordx['F4'xc]:='34'x; { 4 4 }
+ordx['F5'xc]:='35'x; { 5 5 }
+ordx['F6'xc]:='36'x; { 6 6 }
+ordx['F7'xc]:='37'x; { 7 7 }
+ordx['F8'xc]:='38'x; { 8 8 }
+ordx['F9'xc]:='39'x; { 9 9 }
+ordx['FA'xc]:='00'x; { ... NUL }
+ordx['FB'xc]:='00'x; { ... NUL }
+ordx['FC'xc]:='00'x; { ... NUL }
+ordx['FD'xc]:='00'x; { ... NUL }
+ordx['FE'xc]:='00'x; { ... NUL }
+ordx['FF'xc]:='00'x; { ... NUL }
+@z
+
+@x
+@! maxbuffer = 1029;@/
+@y
+@! maxbuffer = 1024;@/
+@z
+
+@x
+@p procedure writeheader; {only needed when using Datum 5095}
+var
+ hdrec :string(5);
+begin
+ if doingpages = true
+ then begin
+ hdrec := strconv(headernum);
+ write(setfile,hdrec);
+ bufferlen := 5;
+ end; {then..begin}
+ end; {writeheader}
+@y
+@p procedure writeheader; {only needed when using Datum 5095}
+begin
+ if doingpages = true
+ then
+ bufferlen := 0;
+ end; {writeheader}
+@z
+
+@x
+@<write number of...@>=
+ writecommand(11,155*SPsPerPt); {155pt indent}
+ writecommand(25,320); {Bold}
+ write8600rec('50616765731e'xc); {'Pages '}
+ write8600rec('536574231e1e'xc); {'Set: '}
+ writecommand(25,330); {Bold Italic}
+ pages_conv := strconv(pages_set);
+ for inx := 1 to 5
+ do write8600rec(str(chr(ordx
+ [pages_conv[inx]])));
+ writecommand(11,265*SPsPerPt); {get ready for Tape \#}
+
+@
+@<write tape numb...@>=
+ writecommand(25,320); {Bold}
+ write8600rec('546170651e'xc); {'Tape '}
+ writecommand(20,2); {aux. char. set}
+ write8600rec('72'xc); {'\#'}
+ writecommand(20,1); {pri. char. set}
+ write8600rec('231e1e1e1e'xc); {': '}
+ postam_found := true;
+ writecommand(25,330); {bold italic}
+@y
+@<write number of...@>=
+ writecommand(11,155*SPsPerPt); {155pt indent}
+ writecommand(25,320); {Bold}
+ write8600rec('50616765731e'xc); {'Pages '}
+ write8600rec('536574231e1e'xc); {'Set: '}
+ writecommand(25,330); {Bold Italic}
+ pages_conv := strconv(pages_set);
+ for inx := 1 to 5
+ do write8600rec(str(chr(ordx
+ [pages_conv[inx]])));
+
+@
+@<write tape numb...@>=
+ postam_found := true;
+@z
+
+@x
+|setaccountbox| procedure. It also writes the information to another file
+called the |infofile|.
+
+@<Global Constants@>=
+@! notfatal = false;@/
+
+@
+@<Global Variables@>=
+@!addrline : text;
+@!infofile : text;
+@^system dependencies@>
+@y
+|setaccountbox| procedure.
+
+@<Global Constants@>=
+@! notfatal = false;@/
+
+@
+@<Global Variables@>=
+@!addrline : text;
+@^system dependencies@>
+@z
+
+@x
+@<parse info...@>=
+ rewrite(infofile,'NAME=' ccat filename ccat '.INFOFILE.*');
+ while length(resource_info) > 0 do begin
+ inx := index(resource_info,':');
+ if inx < 1
+ then begin
+ errstr := resource_info;
+ error(28,notfatal,0);
+ end
+ else begin
+ str1 := substr(resource_info,1,inx-1);
+ resource_info := ltrim(substr(resource_info,inx+1));
+ inx := index(resource_info,':');
+ if inx = 0
+ then begin
+ str2 := resource_info;
+ resource_info := '';
+ end
+ else begin
+ int := inx - 1; {no sense starting at a colon:}
+ tempbool := false;
+ repeat
+ if substr(resource_info,int,1) = ' '
+ then tempbool := true
+ else int := int - 1;
+ until tempbool; {which means we found a blank}
+ str2 := trim(substr(resource_info,1,int-1));
+ resource_info := substr(resource_info,int+1);
+ end;
+ str1 := allcaps(ltrim(trim(str1)));
+ str2 := allcaps(ltrim(trim(str2)));
+ if str1 = 'NAME' then
+ infoname := str2
+ else if str1 = 'PHONE' then
+ infophone := str2
+ else if str1 = 'PROCEDURE_NUMBER'
+ then infoprocedure := str2
+ else if str1 = 'BUDGET_PROJECT'
+ then infobudget := str2
+ else if str1 = 'PICKUP' then
+ infodelivery := str2
+ else if str1 = 'CAMPUS_ZIP' then
+ infozip := str2
+ else if str1 = 'BIN' then
+ infobin := str2
+ else if str1 = 'ID' then
+ infoid := str2
+ else begin
+ errstr := resource_info;
+ error(28,notfatal,0);
+ end
+ end;
+ end;
+
+@
+@<send info...@>=
+ setaccountbox(infoname,infophone,infodelivery,infozip,
+ infobin,infoid);
+ writeln(infofile,infoname);
+ writeln(infofile,infophone);
+ writeln(infofile,infoprocedure);
+ writeln(infofile,infobudget);
+ writeln(infofile,infodelivery);
+ writeln(infofile,infozip);
+ writeln(infofile,infoid);
+ writeln(infofile,infobin);
+ writeln(infofile,job_length);
+ writeln(infofile,pages_set);
+ writeln(infofile,minimum_width);
+ writeln(infofile,real_filename);
+@y
+@<parse info...@>=
+ while length(resource_info) > 0 do begin
+ inx := index(resource_info,':');
+ if inx < 1
+ then begin
+ errstr := resource_info;
+ error(28,notfatal,0);
+ end
+ else begin
+ str1 := substr(resource_info,1,inx-1);
+ resource_info := ltrim(substr(resource_info,inx+1));
+ inx := index(resource_info,':');
+ if inx = 0
+ then begin
+ str2 := resource_info;
+ resource_info := '';
+ end
+ else begin
+ int := inx - 1; {no sense starting at a colon:}
+ tempbool := false;
+ repeat
+ if substr(resource_info,int,1) = ' '
+ then tempbool := true
+ else int := int - 1;
+ until tempbool; {which means we found a blank}
+ str2 := trim(substr(resource_info,1,int-1));
+ resource_info := substr(resource_info,int+1);
+ end;
+ str1 := allcaps(ltrim(trim(str1)));
+ str2 := allcaps(ltrim(trim(str2)));
+ if str1 = 'NAME' then
+ infoname := str2
+ else if str1 = 'PHONE' then
+ infophone := str2
+ else if str1 = 'PROCEDURE_NUMBER'
+ then infoprocedure := str2
+ else if str1 = 'BUDGET_PROJECT'
+ then infobudget := str2
+ else if str1 = 'PICKUP' then
+ infodelivery := str2
+ else if str1 = 'CAMPUS_ZIP' then
+ infozip := str2
+ else if str1 = 'BIN' then
+ infobin := str2
+ else if str1 = 'ID' then
+ infoid := str2
+ else begin
+ errstr := resource_info;
+ error(28,notfatal,0);
+ end
+ end;
+ end;
+
+@
+@<send info...@>=
+ setaccountbox(infoname,infophone,infodelivery,infozip,
+ infobin,infoid);
+@z
+
+@x
+@<set final...@>=
+ job_length := round(galley_length/72.0);
+ pages_set := num_of_pages;
+ job_type := 'TeX';
+@y
+@<set final...@>=
+ job_length := round(galley_length/72.0);
+ pages_set := num_of_pages;
+ job_type := 'TeX';
+ writecommand(11,0); {quad left}
+ writecommand(9,100*SPsPerPt); {VMF past box}
+ writecommand(1,0.0); {End of take}
+@z
+
+@x
+ reset(input,'NAME=' ccat filename ccat '.' ccat filetype ccat '.*');
+ writeln('******* tex8600 Version ',version:2,' Level ',
+ level:3,' *******');
+ rewrite(setfile,'LRECL=1029,RECFM=F,NAME=' ccat filename ccat
+'.TAPEFILE.*');
+@y
+ reset(input,'NAME=' ccat filename ccat '.' ccat filetype ccat '.*');
+ writeln('******* tex8600 Version ',version:2,' Level ',
+ level:3,' *******');
+ rewrite(setfile,'LRECL=1024,RECFM=F,NAME=' ccat filename ccat
+'.TAPEFILE.*');
+@z
diff --git a/macros/text1/compugraphics_8600/tex8600.web b/macros/text1/compugraphics_8600/tex8600.web
new file mode 100644
index 0000000000..8b99589a5a
--- /dev/null
+++ b/macros/text1/compugraphics_8600/tex8600.web
@@ -0,0 +1,3034 @@
+\font\twelvept=cmbx12
+\font\tentex=cmr10
+\def\topofcontents{\null\vfill\eject
+ \def\titlepage{T}
+ \centerline{{\twelvept The \TeX 8600 Driver}}
+ \vskip15pt
+ \centerline{Version 2.2, June 1988}
+ \hbox{\vbox{\hsize\the\hsize This work is
+ protected as an unpublished work under U.S. copyright laws.
+ Copyright $\copyright$ 1986 by WSUCSC. All rights Reserved.}}
+ \vskip18pt
+ \hbox{\vbox{\hsize\the\hsize This software is furnished under a
+ license for
+ use only on a single computer system and may be copied only
+ with the inclusion of the above copyright notice.
+ This software, or any other copies
+ thereof, may not be provided or otherwise made available to any
+ other person except for use on such system and to one who agrees to
+ these license terms. Title to and ownership of the software shall
+ at all times remain in WSUCSC.}}
+ \vfill}
+
+@* Introduction.
+This program takes a \TeX\ DVI file and converts it into CG 8600
+Universal Slave Mode commands. Five bytes have been added to each
+record. These five bytes are stripped off by the Datum 5095 tape
+drive as it passes the file onto the 8600.
+
+The \TeX 8600 program is written in WEB. You will need the TANGLE
+and WEAVE programs to make changes. The WEB code was written
+originally for IBM Pascal/VS on VM/CMS.
+
+If you have a CG font that is not one of the ones on the \TeX 8600
+distribution tape, you need to modify the SAMPLE.FONTINFO file for
+that font and process it through FONTTEX.
+
+@ Following are a few macros and definitions used throughout program:
+
+@d incr(#) == # := # + 1
+@d decr(#) == # := # - 1
+@d do_nothing == begin; end
+@d ccat==@=||@>
+@f static == var
+@f value == var
+
+@ The beginning of the program.
+
+@p program tex8600(dumpout,sysprint,addrline,setfile,cgfonts,infofile);
+const
+@<Global Constants@>@/
+type
+@<Global Types@>@/
+var
+@<Global Variables@>@/
+static@/
+@!com_table :packed array[0..18] of string(7);@/
+value@/
+ com_table[0] := 'HDR'; {Header Record}@/
+ com_table[1] := 'CHWIDTH';{Character Width}@/
+ com_table[2] := 'RT'; {Reverse Type}@/
+ com_table[3] := 'PS'; {Point Size}@/
+ com_table[4] := 'SS'; {Set Size}@/
+ com_table[5] := 'VMF'; {Vertical Move Forward}@/
+ com_table[6] := 'VMR'; {Vertical Move Reverse}@/
+ com_table[7] := 'RW'; {Rule Width}@/
+ com_table[8] := 'RD'; {Rule Depth}@/
+ com_table[9] := 'IR'; {Insert Rule}@/
+ com_table[10] := 'SL'; {Slant Mode}@/
+ com_table[11] := 'RTWT'; {Reverse Type Window Top}@/
+ com_table[12] := 'RTWB'; {Reverse Type Window Bottom}@/
+ com_table[13] := 'AU'; {Auxiliary Character Set}@/
+ com_table[14] := 'F'; {Change Fonts}@/
+ com_table[15] := 'HMR'; {Horizontal Move Right}@/
+ com_table[16] := 'HML'; {Horizontal Move Left}@/
+ com_table[17] := 'TTS'; {8600 character, in decimal}@/
+ com_table[18] := 'MAXCMD';@/
+@<CMS Includes@>
+
+@ This is a collection of arrays for converting ASCII to EBCDIC.
+
+@<CMS Includes@>=
+@{This is a very long comment. It is designed to force a break@}
+%include pasclib(asciicvt);
+
+@ This is a collection of arrays for converting ASCII to EBCDIC.
+
+@<CMS Includes@>=
+@{This is a very long comment. It is designed to force a break@}
+%include cms;
+@{This is a very long comment. It is designed to force a break@}
+
+@* Beginning section.
+This section includes some basic functions for reading the DVI file
+as well as a couple of procedures, like error and allcaps. Nothing
+tricky or noteworthy in these.
+
+@<Global Variables@>=
+@!count : integer;
+@!fileend :boolean;
+
+@ The function for reading a byte of information from the DVI file.
+
+@p function getbyte:integer;
+var c :integer;
+ byte :char;
+begin
+ read(byte);
+ getbyte := ord(byte);
+ c := count mod pv_dvi_lrecl;
+ if (c=(pv_dvi_lrecl-1)) and not (eof(input))
+ then get(input)
+ else if (c=(pv_dvi_lrecl-1)) and eof(input)
+ then fileend:=true;
+ end;
+
+@ This is necessary because tangle doesn't let us get away with
+using RETCODE by itself in more than one spot.
+
+@p procedure setretcode(rc:integer);
+begin retcode(rc); end;
+
+@ This converts the byte to an integer, for further evaluation by
+the program.
+
+@p function readinteger(length :integer):integer;
+var
+ inx :integer;
+ int :integer;
+begin
+ if (length<1) or (length>4)
+ then begin;
+ trace(output);
+ halt;
+ end;
+ int:=0;
+ for inx := 1 to length do begin
+ int := int * 256 + getbyte;
+ {check for cvt to negative...}
+ if (inx = 1) and (length > 1) and (int >= 128)
+ then int := int - 256;
+ incr(count);
+ end;
+ readinteger := int;
+ end; {readinteger}
+
+@ This function receives an integer value and converts it to its
+hex value and returns that value as a string.
+
+@^system dependencies@>
+@p function hex(int :integer) :string(2);
+var
+ i :integer;
+ j :integer;
+ stri :string(2);
+static
+ hexarray :array[0..15] of string(1);
+value
+ hexarray[0] := '0';
+ hexarray[1] := '1';
+ hexarray[2] := '2';@/
+ hexarray[3] := '3';
+ hexarray[4] := '4';
+ hexarray[5] := '5';@/
+ hexarray[6] := '6';
+ hexarray[7] := '7';
+ hexarray[8] := '8';@/
+ hexarray[9] := '9';
+ hexarray[10] := 'A';
+ hexarray[11] := 'B';@/
+ hexarray[12] := 'C';
+ hexarray[13] := 'D';
+ hexarray[14] := 'E';
+ hexarray[15] := 'F';
+begin
+ stri := '';
+ i := int;
+ if i >= 16
+ then begin
+ j := i div 16;
+ stri := hexarray[j];
+ i := i - (j * 16);
+ end
+ else stri := '0';
+ stri := stri ccat hexarray[i];@/
+ hex := stri;
+ end;
+
+@
+@<Global Variables@>=
+@! savecount :integer;
+@^system dependencies@>
+@! filename :string(8);
+@^system dependencies@>
+@! errstr :string(256);
+
+@ The error procedure. When a byte is read that does not jive with
+what the program was expecting, it goes to this procedure with a
+return code of some kind and an appropriate message is printed to user.
+
+@p procedure error(number :integer;
+ critical:boolean;
+ intval :integer);
+begin
+ case number of
+ 1 :writeln('Error in file ',filename,', no header record');
+ 2 :writeln('Error in file ',filename,', the highest 8600 ',
+ 'command has a value of ',ord(MAXCMD):3,' but ',
+ intval,' was read instead');
+ 3 :writeln('Expected a font command and got "',
+ com_table[intval],'" instead');
+ 4 :writeln('Expected a character width definition and got "',
+ com_table[intval],'" instead in file ',filename);
+ 5 :writeln('File ',filename,' is out of order for character ',
+ intval:3,' (',chrx[intval],')');
+ 6 :writeln('Error in file ',filename,', the value of byte ',
+ intval,' is >= 218 and <= 255 at byte ',savecount);
+ 7 :writeln('Expected a Slantmode command and got ',
+ com_table[intval],' instead');
+ 10 :writeln('No address information given');
+ 28 :writeln('Unidentified input option "',errstr,'"');
+ otherwise writeln('Unidentified error ',number);
+ end; {case}
+ if critical then begin
+ writeln('TeX8600 run aborted; See your consultant');
+ trace(output);
+ halt;
+ end;
+ writeln('Tape will not be sent to operator');
+ setretcode(32);
+ end; {error}
+
+@ Finally, a function that will convert whatever is passed to it into
+all capital letters. It translates lower case letters into upper case
+letters. All other characters outside of the range
+a$<$=character$<$=z are returned as their original value.
+
+@^system dependencies@>
+@p function allcaps(instring :string(40)) :string(40);
+var
+ i :integer;
+ character :char;
+ buildit :string(40);
+static@/
+ chtable :packed array['81'xc..'e9'xc] of char;@/
+value@/
+ chtable['81'xc] := 'A';
+ chtable['82'xc] := 'B';
+ chtable['83'xc] := 'C';
+ chtable['84'xc] := 'D';@/
+ chtable['85'xc] := 'E';
+ chtable['86'xc] := 'F';
+ chtable['87'xc] := 'G';
+ chtable['88'xc] := 'H';@/
+ chtable['89'xc] := 'I';
+ chtable['91'xc] := 'J';
+ chtable['92'xc] := 'K';
+ chtable['93'xc] := 'L';@/
+ chtable['94'xc] := 'M';
+ chtable['95'xc] := 'N';
+ chtable['96'xc] := 'O';
+ chtable['97'xc] := 'P';@/
+ chtable['98'xc] := 'Q';
+ chtable['99'xc] := 'R';
+ chtable['a2'xc] := 'S';
+ chtable['a3'xc] := 'T';@/
+ chtable['a4'xc] := 'U';
+ chtable['a5'xc] := 'V';
+ chtable['a6'xc] := 'W';@/
+ chtable['a7'xc] := 'X';
+ chtable['a8'xc] := 'Y';
+ chtable['a9'xc] := 'Z';
+begin
+ buildit := '';
+ for i := 1 to length(instring) do begin
+ readstr(substr(instring,i,1),character);
+ if character in ['a'..'z']
+ then buildit := buildit ccat str(chtable[character])
+ else buildit := buildit ccat str(character);
+ end;
+ allcaps := buildit;
+ end;
+
+@* Font Related Procedures.
+This first font procedure reads the font matrix information for the
+current font from an outside file called cginfo defined as cgfonts.
+
+@<Global Constants@>=
+@! maxfunctions = 15;@/
+@! maxChar=127;@/
+@! fatal = true;@/
+@! fontsperrun = 76;@/
+@! maxFont=256;@/
+
+@
+@<Global Types@>=
+@! oneoftwo = packed 1..2;
+ command = (HDR,CHWIDTH,RT,PS,SS,VMF,VMR,RW,RD,IR,SL,
+ RTWT,RTWB,AU,F,HMR,HML,TTS,MAXCMD);@/
+@! storerec = packed record
+ comcode :packed -128..127;
+ case oneoftwo of
+ 1 :(argument :integer);
+ 2 :(real_argument :shortreal);
+ end;
+@! charrec = packed record
+ num :-1..maxfunctions;
+ charwidth :shortreal;
+ comarray :packed array[0..maxfunctions] of storerec;
+ end;
+@! driverrec = record
+ cmd :integer;
+ case oneoftwo of
+ 1 :(param :shortreal);
+ 2 :(code :integer);
+ end;
+@! font_def = packed record
+ pointsize : 0..255;
+ designsize : 0..255;
+ fontindex : 0..255;
+ end;
+@^system dependencies@>
+@! fontrec = record
+ fontno8600 : 0..2550;
+ name : string(8);
+ a8600chars : packed array[0..maxChar] of charrec;
+ end;
+
+@
+@<Global Variables@>=
+@!currfont : -1..maxFont;
+@!a8600fontrec : packed array[1..fontsperrun] of fontrec;
+@!fontcode : driverrec;
+@^system dependencies@>
+@!fontname : string(8);
+@!dumpin : boolean;
+@!fontenviron : packed array[-1..maxFont] of font_def;
+
+@ A new font is being used so it must have its font metrics read; this
+procedure does just that.
+
+@p procedure readfontinfo(fontnum,a8600index:integer);
+var
+ auxiliary :boolean;
+ cgfonts :file of driverrec;
+ changefont :boolean;
+ charmult :shortreal;
+ i,j,rc,
+ numcommands :integer;
+begin
+ @<open cginfo file@>
+ @<read beginning info@>
+ @<read character info@>
+ @<close cginfo file@>
+end;
+
+@ First open the cginfo file
+
+ @<open cginfo file@>=
+ fontenviron[fontnum].fontindex := a8600index;
+ a8600fontrec[a8600index].name:= fontname;
+ cms('ESTATE 'ccat fontname ccat ' CGINFO *',rc);
+ if rc = 0
+ then reset(cgfonts,'NAME=' ccat fontname ccat '.CGINFO.*')
+ else begin
+ reset(cgfonts,'NAME=ETR.CGINFO.*');
+ writeln('Error!! Font ',fontname,' is not on the 8600');
+ writeln('You will not be able to continue');
+ setretcode(8);
+ end;
+
+@ Now read the first few records that give overall font info.
+
+ @<read beginning info@>=
+ fontcode := cgfonts@@;{Read the first record of the file}
+ get(cgfonts);@/
+ with fontcode do begin
+ if cmd <> ord(HDR) then error(1,fatal,0);
+ if code <> ord(MAXCMD) then error(2,fatal,code);
+ end; {with..begin}
+ fontcode := cgfonts@@; {read the second record of the file}
+ get(cgfonts);@/
+ with fontcode do begin
+ if cmd <> ord(F) then error(3,fatal,cmd); {Must be font cmnd}
+ a8600fontrec[a8600index].fontno8600 := code;
+ end; {with..begin}
+ fontcode := cgfonts@@;
+ get(cgfonts);
+ with fontcode do begin
+ if cmd <> ord(CHWIDTH) then error(4,fatal,cmd); {charac mult}
+ charmult := param;
+ end; {with..begin}
+ {Each character (maxChar) has one header record (HDR)
+ and one character width record. The number of records
+ for each character that follows the width record is
+ contained as "code" in the header record. Each
+ character will have at least one record.}
+ fontcode := cgfonts@@; {slantmode option no longer used}
+ get(cgfonts);
+ with fontcode do begin
+ if cmd <> ord(SL) then error(7,fatal,cmd);
+ end;
+ if dumpin
+ then with a8600fontrec[fontenviron[fontnum].fontindex]
+ do begin
+ writeln(dumpout,
+ ' The character width multiplier for ',
+ filename,' is ',charmult:5:2);
+ writeln(dumpout,
+ ' The 8600 font number is ',fontno8600:3);
+ end;
+
+@ The individual character heights, depths, widths and positions
+come next.
+
+ @<read character info@>=
+ for i := 0 to maxChar do begin
+ with a8600fontrec[a8600index].a8600chars[i]
+do begin
+ fontcode := cgfonts@@;
+ get(cgfonts);
+ with fontcode do begin
+ if cmd <> ord(HDR) then error(5,fatal,i);
+ numcommands := code; {number for this character}
+ end; {with..begin}
+ num := -1;
+ @<read character width@>
+ auxiliary := false;
+ changefont := false;
+ for j := 0 to numcommands do begin
+ @<read next command@>
+ end;
+ if auxiliary then begin
+ @<Auxiliary change@>
+ end;
+ if changefont then begin
+ @<Font change@>
+ end;
+ end;
+ end;
+
+@ Font is all read and safely tucked into appropriate places to
+be used later, so close the door and shut off the lights on the
+way out.
+
+ @<close cginfo file@>=
+ close(cgfonts);
+
+@
+ @<read character width@>=
+ fontcode := cgfonts@@; {read the character width}
+ get(cgfonts);
+ with fontcode do begin
+ if cmd <> ord(CHWIDTH) then error(5,fatal,i);
+ charwidth := param * charmult;
+ end; {with..begin}
+
+@
+ @<read next command@>=
+ fontcode := cgfonts@@;
+ get(cgfonts);
+ num := num + 1; {increment number of commands}
+ with fontcode, comarray[num] do begin
+ if ((cmd >= 5) and (cmd <= 8)) or
+ (cmd = 11) or (cmd = 12) or (cmd = 16)
+ then real_argument := param
+ else argument := code;
+ case cmd of
+ 2 :comcode := 3; {reverse type}
+ 3 :comcode := 7; {Point Size Change}
+ 4 :comcode := 8; {Set Size Change}
+ 5 :comcode := 9; {Vertical Move Forward}
+ 6 :comcode := 10; {Vertical Move Reverse}
+ 7 :comcode := 12; {Rule Width}
+ 8 :comcode := 13; {Rule Depth}
+ 9 :comcode := 14; {Insert Rule}
+ 10 :comcode := 15; {Slant Mode}
+ 11 :comcode := 16; {Reverse Window Top}
+ 12 :comcode := 17; {Reverse Window Bot}
+ 13 :begin
+ @<Change to Auxiliary Characters@>
+ end;
+ 14 :begin
+ @<Change Font@>
+ end;
+ 15 :comcode := 27; {Horiz. Move Right}
+ 16 :comcode := 28; {Horiz. Move Left}
+ 17 :comcode := -1; {Decimal Char Code}
+ otherwise begin
+ @<Invalid Command Number@>
+ end;
+ end;
+ end;
+
+@
+ @<Auxiliary change@>=
+ num := num + 1;
+ with comarray[num] do begin
+ comcode := 20;
+ argument := 1;
+ end;
+
+@
+ @<Font change@>=
+ num := num + 1;
+ with comarray[num] do begin
+ comcode := 25;
+ argument := -1; {for quick ID in font changes}
+ end;
+
+@
+ @<Change to Auxiliary Characters@>=
+ comcode := 20;
+ if auxiliary
+ then begin
+ argument := 1;
+ auxiliary := false;
+ end
+ else begin
+ argument := 2;
+ auxiliary := true;
+ end;
+
+@
+ @<Change Font@>=
+ comcode := 25;
+ if code <> fontnum
+ then changefont := true;
+ argument := code * 10;
+
+@
+ @<Invalid Command Number@>=
+ writeln('Invalid 8600 Command Number ', cmd);
+ error(5,fatal,cmd);
+
+@ This procedure checks to see if the current font has been
+ previously defined. If it has, it returns to the main program,
+ if it hasn't, |readfontinfo| is called.
+
+@p procedure checkfont;
+var
+ i :integer;
+static
+ in_count :integer;
+value
+ in_count := 0;
+begin
+@<check fonts@>
+readfontinfo(currfont,in_count);
+ end;
+
+@ Each time a font is encountered in the DVI file, one is added to
+the |in_count|. The following section checks to see if the |curr_font|
+has ever been used before in this file. If it has, nothing is done and
+it returns to main program. If it is a new file, it continues on in
+procedure to read the new font metrics.
+
+@<check fonts@>=
+ incr(in_count);
+ for i := 1 to in_count do begin
+ if a8600fontrec[i].name = fontname
+ then begin
+ fontenviron[currfont].fontindex := i;
+ return;
+ end;
+ end;
+
+@ This procedure reads the DVI file to get all pertinent information
+for the |MAIN| program.
+
+@<Global Constants@>=
+@! SPsPerPt = 65536;@/
+@! pc_dvi_lrecl=1024;
+
+@
+@<Global Variables@>=
+@!checksumtest : integer;
+@!pv_dvi_lrecl :integer;
+
+@
+@p procedure fontinfo;
+var
+ fnlength : integer;
+ temp : integer;
+ temp2 : integer;
+ inx : integer;
+begin
+ with fontenviron[currfont] do begin
+ checksumtest := readinteger(4);{check sum}
+ temp := readinteger(4);{scale}
+ temp2:= readinteger(4);{design size}
+ pointsize := temp2 * (temp div temp2) div SPsPerPt;
+ designsize := temp2 div SPsPerPt;
+ end; {WITH..begin}
+ temp := readinteger(1);{font name area}
+ fnlength := readinteger(1);{file length}
+ fnlength := fnlength + temp;
+ fontname := '';
+ for inx := 1 to fnlength do begin
+ temp := readinteger(1);
+ fontname := fontname ccat allcaps(str(chrx[temp]));
+ end;
+ checkfont;
+end;
+
+@* Tape-writing functions and procedures.
+These next few functions and procedures prepare or write information
+to a tape file
+
+@ This function converts an integer to a string or something like that
+
+@^system dependencies@>
+@p function strconv(intnum : integer): string(5);
+var
+ hdrec :string(5);
+ j :integer;
+ k10 :integer;
+ temphdr :integer;
+begin
+ hdrec := '';
+ k10 := 10000;
+ temphdr := intnum;
+ repeat
+ if temphdr >= k10 then begin
+ j := temphdr div k10;
+ hdrec := hdrec ccat str(chr(j + ord('0')));
+ temphdr := temphdr - (j * k10);
+ end;
+ k10 := k10 div 10;
+ until k10 = 1;
+ hdrec := hdrec ccat str(chr(temphdr + ord('0')));
+ if length(hdrec) < 5
+ then hdrec := substr('00000',1,5-length(hdrec)) ccat hdrec;
+ strconv := hdrec;
+ end;
+
+@ This procedure is to add the 5 bytes at the beginning
+ of each record that will be read by the 5095 tape
+ drive. It should be noted that these 5 bytes are
+ discarded by the 5095 before it sends the rest of the record to the 8600.
+
+@<Global Constants@>=
+@! maxbuffer = 1029;@/
+
+@
+@<Global Variables@>=
+@!doingpages : boolean;
+@!setfile : text;
+@!dumpout : text;
+@!bufferlen : 0..maxbuffer;
+@!headernum : integer;
+
+@
+@p procedure writeheader; {only needed when using Datum 5095}
+var
+ hdrec :string(5);
+begin
+ if doingpages = true
+ then begin
+ hdrec := strconv(headernum);
+ write(setfile,hdrec);
+ bufferlen := 5;
+ end; {then..begin}
+ end; {writeheader}
+
+@
+@<Global Constants@>=
+@! allzeros = '00'xc;@/
+
+@
+@<Global Variables@>=
+@!postam_found : boolean;
+
+@ This procedure is used to write the tape file for the 5095
+drive on the 8600
+
+@p @^system dependencies@>
+procedure write8600rec(codes :string(17));
+var
+ i :integer;
+ codesize :integer;
+begin
+ codesize := length(codes);
+ if doingpages=true
+ then begin
+ if bufferlen + codesize < maxbuffer
+ then begin
+ @<record length less than maximum@>
+ end {then..begin}
+ else if bufferlen + codesize = maxbuffer
+ then begin
+ @<record length equal to maximum@>
+ end {then..begin}
+ else begin
+ @<record length greater than maximum@>
+ end; {else..begin}
+ end; {then..begin}
+ end; {write8600rec}
+
+@
+ @<record length less than maximum@>=
+ write(setfile,codes);
+ bufferlen := bufferlen + codesize;
+ if postam_found then begin
+ while bufferlen < maxbuffer do begin
+ write(setfile,allzeros);
+ codesize := length(allzeros);
+ bufferlen := bufferlen + codesize;
+ end; {while..begin}
+ end; {then..begin}
+
+@
+ @<record length equal to maximum@>=
+ writeln(setfile,codes);
+ if not postam_found then writeheader;
+
+@
+ @<record length greater than maximum@>=
+ i := maxbuffer - bufferlen;
+ writeln(setfile,substr(codes,1,i));
+ writeheader;
+ write(setfile,substr(codes,i+1,codesize-i));
+ bufferlen := bufferlen + codesize - i;
+ if postam_found then begin
+ while bufferlen < maxbuffer do begin
+ write(setfile,allzeros);
+ codesize := length(allzeros);
+ bufferlen := bufferlen + codesize;
+ end; {while..begin}
+ end; {then..begin}
+
+@
+@<Global Variables@>=
+@!print_hmove : boolean;
+
+@ This function,
+given amount in scale points, converts it to floating-point
+points and print it.
+
+@p function getpts(amt :integer) :real;
+var
+ temp :real;
+begin
+ temp := float(amt) / SPsPerPt;
+ if dumpin and print_hmove then write(dumpout,temp:4:1,' pts.');
+ getpts := temp;
+ end;
+
+@* Main tape-writing procedures.
+These next few procedures are the main ones for writing information
+to the tape file.
+
+@
+@<Global Constants@>=
+@! high1 = '8000'@&x;@/
+@! SPsPer8th = 8192;@/
+@! SPsPer18th = 3640.8888;@/
+
+@
+@<Global Type...@>=
+@! valrec = packed record case oneoftwo of
+ 1 :(hexcode :char;
+ argument :packed -32768..32767);
+ 2 :(byte1 :packed 0..255;
+ byte2 :packed 0..255;
+ byte3 :packed 0..255)
+ end;
+@! stackrec = packed record
+ H :integer;
+ V :integer;
+ W :integer;
+ X :integer;
+ Y :integer;
+ Z :integer;
+ end;
+
+@
+@<Global Variables@>=
+@!stack : packed array[1..50] of stackrec;
+@!stacktop : integer;
+@!outrec : valrec;
+@!in_reverse_type : boolean;
+@!in_slant_mode : boolean;
+
+@ This procedure is called to format the output record
+ in a 1 or 3 byte word to be added to the 8600 output
+ record buffer. Each command used by the slave mode
+ is represented here by their appropriate code number
+ assigned by Compugraphics. The code "-1" was not
+ assigned by them. It was assigned to denote the use
+ of a character in the current font.
+
+@p @^system dependencies@>
+procedure writecommand(codenum :integer;
+ inargument :real);
+var
+ temp :string(3);
+ realtemp :real;
+begin
+ with outrec do begin
+ case codenum of
+ -2 :@<long character form@>@/
+ -1 :@<individual character code@>@/
+ 0 :@<start of take@>@/
+ 1 :@<end of take@>@/
+ 2 :@<change reverse type@>@/
+ 7 :@<change point size@>@/
+ 8 :@<change set size@>@/
+ 9 :@<forward vertical move@>@/
+ 10 :@<reverse vertical move@>@/
+ 11 :@<absolute horizontal positioning@>@/
+ 12 :@<rule width@>@/
+ 13 :@<rule depth@>@/
+ 14 :@<insert rule@>@/
+ 15 :@<slant mode@>@/
+ 16 :@<reverse type window top@>@/
+ 17 :@<reverse type window bottom@>@/
+ 20 :@<change auxiliary character set@>@/
+ 25 :@<change fonts@>@/
+ 27 :@<right horizontal move@>@/
+ 28 :@<left horizontal move@>@/
+ otherwise @<all other cases@>
+ end; {case}
+ byte2 := byte2 + '10000000'B;
+ temp := str(chr(byte1)) ccat
+ str(chr(byte2)) ccat str(chr(byte3));
+ write8600rec(temp);
+ end; {with..begin}
+ end; {writecommand}
+
+@
+@<long character...@>=
+ begin
+ hexcode := chr(trunc(inargument)+high1);
+ argument := round(getpts(stack[stacktop].H) * 18);
+ temp := str(chr(byte1)) ccat str(chr(byte2));
+ temp := temp ccat str(chr(byte3));
+ write8600rec(temp);
+ return;
+ end;
+
+@
+@<individual character code@>=
+ begin
+ {change inargument into a one character
+ string (hex) value}
+ argument := trunc(inargument);
+ write8600rec(str(chr(byte3)));
+ return;
+ end;
+@
+@<start of take@>=
+ begin
+ hexcode := '80'xc;
+ argument := trunc(inargument);
+ end;
+
+@
+@<end of take@>=
+ begin
+ hexcode := '81'xc;
+ argument := trunc(inargument);
+ end;
+
+@
+@<change reverse type@>=
+ begin
+ if not in_reverse_type and (inargument = 0)
+ then return; {8600 warning if you try to
+ turn it off when its already off}
+ if inargument = 0
+ then in_reverse_type := false
+ else in_reverse_type := true;
+ if in_reverse_type then begin
+ realtemp := {76\% of the current leading}
+ (fontenviron[currfont].pointsize + 2)*0.76;
+ writecommand(16,realtemp); {window top}
+ realtemp := {30\% of the current leading}
+ (fontenviron[currfont].pointsize + 2)*0.30;
+ writecommand(17,realtemp); {window bottom}
+ end; {then..begin}
+ hexcode := '83'xc;
+ argument := trunc(inargument);
+ end;
+
+@
+@<change point size@>=
+ begin
+ hexcode := '87'xc;
+ argument := round(inargument*2) * 4; {in eighths}
+ end;
+
+@
+@<change set size@>=
+ begin
+ hexcode := '88'xc;
+ argument := round((fontenviron[currfont].pointsize*
+ (inargument/100.0)) * 2) * 4; {in eighths}
+ end;
+
+@
+@<forward vertical move@>=
+ begin
+ if inargument = 0 then return; {0 invalid on 8600}
+ hexcode := '89'xc;
+ {in sixteenths}
+ argument := round(inargument / SPsPer8th) * 2;
+ end;
+
+@
+@<reverse vertical move@>=
+ begin
+ if inargument = 0 then return; {0 invalid on 8600}
+ hexcode := '8a'xc;
+ {in sixteenths}
+ argument := round(inargument / SPsPer8th) * 2;
+ end;
+
+@
+@<absolute horizontal positioning@>=
+ begin
+ hexcode := '8b'xc;
+ {eighteenths}
+ if inargument < -72.27 then begin
+ if dumpin then writeln(dumpout,
+ ' HP less than zero');
+ inargument := 0;
+ end;
+ argument := round(inargument / SPsPer18th);
+ end;
+
+@
+@<rule width@>=
+ begin
+ if inargument = 0 then return; {0 invalid on 8600}
+ hexcode := '8c'xc;
+ argument := round(inargument * 18);
+ end;
+
+@
+@<rule depth@>=
+ begin
+ if inargument = 0 then return; {0 invalid on 8600}
+ hexcode := '8d'xc;
+ argument := round(inargument * 8) * 2;
+ end;
+
+@
+@<insert rule@>=
+ begin
+ hexcode := '8e'xc;
+ if inargument < 0 then begin
+ if dumpin then writeln(dumpout,
+ ' IR less than zero');
+ inargument := 0;
+ end;
+ argument := round(inargument / SPsPer18th);
+ end;
+
+@
+@<slant mode@>=
+ begin
+ hexcode := '8f'xc;
+ argument := trunc(inargument);
+ if argument = 0
+ then in_slant_mode := false
+ else in_slant_mode := true;
+ end;
+
+@
+@<reverse type window top@>=
+ begin
+ hexcode := '90'xc;
+ argument := round(inargument*8) * 2; {in sixteenths}
+ end;
+
+@
+@<reverse type window bottom@>=
+ begin
+ hexcode := '91'xc;
+ argument := round(inargument*8) * 2; {in sixteenths}
+ end;
+
+@
+@<change auxiliary character set@>=
+ begin
+ hexcode := '94'xc;
+ argument := trunc(inargument);
+ end;
+
+@
+@<change fonts@>=
+ begin
+ hexcode := '99'xc;
+ argument := trunc(inargument);
+ end;
+
+@
+@<right horizontal move@>=
+ begin
+ if inargument = 0 then return; {if no move}
+ hexcode := '9b'xc;
+ {eighteenths}
+ argument := round(inargument / SPsPer18th);
+ end;
+
+@
+@<left horizontal move@>=
+ begin
+ if inargument = 0 then return; {if no move}
+ hexcode := '9c'xc;
+ {eighteenths}
+ argument := round(inargument / SPsPer18th);
+ end;
+
+@
+@<all other cases@>=
+ begin
+ writeln('Invalid 8600 command code = ',codenum);
+ error(5,fatal,codenum);
+ end; {otherwise}
+
+@* Billing and identification information procedures.
+
+@ The first procedure is the one that writes out all the resource-type
+information. It first checks to see if the character it is about to
+write out is one of several special characters, if it is the hex code
+is changed.
+
+@^system dependencies@>
+@p procedure writeinfo(info:string(30));
+ var
+ inx : integer;
+ begin
+ for inx := 1 to length(info)
+ do begin
+ if info[inx] = ' '
+ then write8600rec('1F'xc)
+ else if info[inx] = '('
+ then write8600rec('3A'xc)
+ else if info[inx] = ')'
+ then write8600rec('3B'xc)
+ else if info[inx] = '*'
+ then write8600rec('5C'xc)
+ else if info[inx] = '_'
+ then begin
+ writecommand(20,2); {aux. char. set}
+ write8600rec('50'xc);
+ writecommand(20,1); {back to primary}
+ end {then..begin}
+ else write8600rec(str(chr(ordx[info[inx]])));
+ end; {do..begin}
+ end; {writeinfo}
+
+@
+@<Global Variables@>=
+@^system dependencies@>
+@!job_len_conv : string(5);
+@!job_length : integer;
+@^system dependencies@>
+@!parmvalue : string(80);
+@^system dependencies@>
+@!pages_conv : string(5);
+@!pages_set : integer;
+@!galley_length : real;
+@^system dependencies@>
+@!real_filename : string(8);
+
+@ The following procedure writes the information within the accounting
+box at the end of each job.
+
+@p @^system dependencies@>
+ procedure setaccountbox (infoname :string(30);
+ infophone :string(14);
+ infodelivery :string(8);
+ infozip :string(10);
+ infobin :string(8);
+ infoid :string(22));
+ var
+ inx :integer;
+ begin
+ @<set constant values@>@/
+ @<draw accounting box@>@/
+ @<write name in box@>@/
+ @<write phone number in box@>@/
+ @<write delivery method in box@>@/
+ @<write zipcode in box@>@/
+ @<write center bin in box@>@/
+ @<write user id in box@>@/
+ @<write job length in box@>@/
+ @<write file name in box@>@/
+ @<write number of pages set, in box@>@/
+ @<write tape number in box@>@/
+ galley_length := galley_length + 140;
+ end; {setaccountbox}
+
+@
+@<set constant...@>=
+ different_setsize := false;
+ in_slant_mode := false;
+ in_reverse_type := false;
+
+@
+@<draw account...@>=
+ writecommand(12,410); {rule width in points}
+ writecommand(13,8); {rule depth in points}
+ writecommand(14,0); {set top rule}
+ writecommand(12,8); {rule width in points}
+ writecommand(13,84); {rule depth in points}
+ writecommand(14,402*SPsPerPt); {set left rule}
+ writecommand(14,0); {set right rule}
+ writecommand(9,83.8*SPsPerPt); {VMF to bottom in pts}
+ writecommand(12,410); {rule width in points}
+ writecommand(13,8); {rule depth in points}
+ writecommand(14,0); {set bottom rule}
+ writecommand(11,32*SPsPerPt); {32pt indent}
+ writecommand(10,56*SPsPerPt); {Move back up}
+ writecommand(25,320); {define bold font}
+ writecommand(7,11); {11pt size}
+
+@
+@<write name...@>=
+ write8600rec('4e616d65231e'xc); {'Name: '}
+ writecommand(25,330); {change to Bold Ital}
+ writeinfo(infoname);
+ writecommand(11,265*SPsPerPt); {265pt Indent}
+ writecommand(25,320); {Bold}
+
+@
+@<write phone...@>=
+ write8600rec('50686f6e65231e'xc); {'Phone: '}
+ writecommand(25,330); {Bold Italic}
+ writeinfo(infophone);
+
+@
+@<write delivery meth...@>=
+ writecommand(11,50*SPsPerPt); {50pt indent}
+ writecommand(9,16*SPsPerPt); {VMF 16pt}
+ writecommand(25,320); {Bold}
+ write8600rec('44656c6976657279231e'xc); {'Delivery: '}
+ writecommand(25,330); {Bold Italic}
+ writeinfo(infodelivery);
+
+@
+@<write zipcode...@>=
+ if infozip <> 'NA'
+ then begin
+ writecommand(11,190*SPsPerPt); {190pt indent}
+ writecommand(25,320); {Bold}
+ write8600rec('5a6970636f6465231e'xc); {'Zipcode: '}
+ writecommand(25,330); {Bold Italic}
+ writeinfo(infozip);
+ end;
+
+@
+@<write center...@>=
+ if infobin <> 'NA'
+ then begin
+ writecommand(11,284*SPsPerPt); {284pt indent}
+ writecommand(25,320); {Bold}
+ write8600rec('42696e231e'xc); {'Bin: '}
+ writecommand(25,330); {Bold Italic}
+ writeinfo(infobin);
+ end; {then..begin}
+
+@
+@<write user id...@>=
+ writecommand(9,14*SPsPerPt); {VMF 14pt}
+ if infoid <> 'NA'
+ then begin
+ writecommand(11,30*SPsPerPt); {30pt indent}
+ writecommand(25,320); {Bold}
+ write8600rec('4944231e'xc); {'ID: '}
+ writecommand(25,330); {Bold Italic}
+ writeinfo(infoid);
+ end; {then..begin}
+@
+@<write job length...@>=
+ writecommand(11,250*SPsPerPt); {indent for job length}
+ writecommand(25,320); {BOLD}
+ write8600rec('4a6f621e'xc); {'Job '}
+ write8600rec('4c656e677468231e'xc); {'Length: '}
+ writecommand(25,330); {Bold Italic}
+ job_len_conv := strconv(job_length);
+ for inx := 1 to 5
+ do write8600rec(str(chr
+ (ordx[job_len_conv[inx]])));
+ write8600rec('1e696e63686573'xc); {' inches'}
+ writecommand(11,20*SPsPerPt); {get ready for DSN}
+
+@
+@<write file name...@>=
+ writecommand(9,16*SPsPerPt); {VMF 16pt}
+ writecommand(25,320); {Bold}
+ write8600rec('46696c656e616d65231f'xc); {'Filename: '}
+ writecommand(25,330); {Bold Italic}
+ parmvalue := real_filename;
+ writeinfo(parmvalue);
+
+@
+@<write number of...@>=
+ writecommand(11,155*SPsPerPt); {155pt indent}
+ writecommand(25,320); {Bold}
+ write8600rec('50616765731e'xc); {'Pages '}
+ write8600rec('536574231e1e'xc); {'Set: '}
+ writecommand(25,330); {Bold Italic}
+ pages_conv := strconv(pages_set);
+ for inx := 1 to 5
+ do write8600rec(str(chr(ordx
+ [pages_conv[inx]])));
+ writecommand(11,265*SPsPerPt); {get ready for Tape \#}
+
+@
+@<write tape numb...@>=
+ writecommand(25,320); {Bold}
+ write8600rec('546170651e'xc); {'Tape '}
+ writecommand(20,2); {aux. char. set}
+ write8600rec('72'xc); {'\#'}
+ writecommand(20,1); {pri. char. set}
+ write8600rec('231e1e1e1e'xc); {': '}
+ postam_found := true;
+ writecommand(25,330); {bold italic}
+
+
+@ The information procedure reads the billing information from an outside
+file called the |addrfile|, and sends that information to the
+|setaccountbox| procedure. It also writes the information to another file
+called the |infofile|.
+
+@<Global Constants@>=
+@! notfatal = false;@/
+
+@
+@<Global Variables@>=
+@!addrline : text;
+@!infofile : text;
+@^system dependencies@>
+@!resource_info : string(256);
+@^system dependencies@>
+@!str1 : string(256);
+@^system dependencies@>
+@!str2 : string(256);
+@!minimum_width : integer;@/
+
+@
+@p @^system dependencies@>
+procedure information;
+ var
+ int :integer;
+ inx :integer;
+ infoname :string(30);
+ infophone :string(14);
+ infodelivery :string(10);
+ infozip :string(10);
+ infobin :string(8);
+ infoid :string(22);
+ infoprocedure :string(4);
+ infobudget :string(20);
+ tempbool :boolean;
+ begin
+ @<set initial values for strings@>
+ @<open address file and read and close@>@/
+ @<parse info from address file@>
+ @<send info to accounting procedure and write infofile@>
+ end; {information}
+
+@
+@<set initial values...@>=
+ infozip := 'NA';
+ infoid := 'NA';
+ infobin := 'NA';
+ infoprocedure := 'NA';
+ infobudget := 'NA';
+
+@
+@<open address...@>=
+ termin(addrline);
+ readln(addrline,resource_info);
+ close(addrline);
+
+@
+@<parse info...@>=
+ rewrite(infofile,'NAME=' ccat filename ccat '.INFOFILE.*');
+ while length(resource_info) > 0 do begin
+ inx := index(resource_info,':');
+ if inx < 1
+ then begin
+ errstr := resource_info;
+ error(28,notfatal,0);
+ end
+ else begin
+ str1 := substr(resource_info,1,inx-1);
+ resource_info := ltrim(substr(resource_info,inx+1));
+ inx := index(resource_info,':');
+ if inx = 0
+ then begin
+ str2 := resource_info;
+ resource_info := '';
+ end
+ else begin
+ int := inx - 1; {no sense starting at a colon:}
+ tempbool := false;
+ repeat
+ if substr(resource_info,int,1) = ' '
+ then tempbool := true
+ else int := int - 1;
+ until tempbool; {which means we found a blank}
+ str2 := trim(substr(resource_info,1,int-1));
+ resource_info := substr(resource_info,int+1);
+ end;
+ str1 := allcaps(ltrim(trim(str1)));
+ str2 := allcaps(ltrim(trim(str2)));
+ if str1 = 'NAME' then
+ infoname := str2
+ else if str1 = 'PHONE' then
+ infophone := str2
+ else if str1 = 'PROCEDURE_NUMBER'
+ then infoprocedure := str2
+ else if str1 = 'BUDGET_PROJECT'
+ then infobudget := str2
+ else if str1 = 'PICKUP' then
+ infodelivery := str2
+ else if str1 = 'CAMPUS_ZIP' then
+ infozip := str2
+ else if str1 = 'BIN' then
+ infobin := str2
+ else if str1 = 'ID' then
+ infoid := str2
+ else begin
+ errstr := resource_info;
+ error(28,notfatal,0);
+ end
+ end;
+ end;
+
+@
+@<send info...@>=
+ setaccountbox(infoname,infophone,infodelivery,infozip,
+ infobin,infoid);
+ writeln(infofile,infoname);
+ writeln(infofile,infophone);
+ writeln(infofile,infoprocedure);
+ writeln(infofile,infobudget);
+ writeln(infofile,infodelivery);
+ writeln(infofile,infozip);
+ writeln(infofile,infoid);
+ writeln(infofile,infobin);
+ writeln(infofile,job_length);
+ writeln(infofile,pages_set);
+ writeln(infofile,minimum_width);
+ writeln(infofile,real_filename);
+
+@* End of File procedures.
+At the end of the \TeX DVI file is a postamble command, when that
+command is encountered |readpostamble| and |post_amble| are called.
+
+@ The second procedure called but first listed is the |post_amble|
+procedure, it calls the |information| procedure and writes the job
+length and number of pages to the terminal.
+
+@<Global Variables@>=
+@!num_of_pages : integer;
+@^system dependencies@>
+@!job_type : string(6);
+
+@
+@p procedure post_amble;
+ begin
+ @<prepare and write information info@>
+ @<give job length to user on terminal@>@/
+ @<set final values for galleylength, etc.@>
+ end; {Postamble}
+
+@
+@<prepare and write...@>=
+ if dumpin then writeln(dumpout,
+ 'PST -- post-amble: End of Run');
+ doingpages := true;
+ writecommand(11,0); {Move to left col.}
+ writecommand(9,30.0*SPsPerPt); {VMF 30 pts}
+ information;
+
+@
+@<give job length...@>=
+ writeln;
+ writeln('Total length of run = ',
+ galley_length:9:1,' pts.');
+ writeln(' = ',
+ galley_length/72.0:9:1,' inches.');
+ writeln(' = ',
+ num_of_pages:9,' pages.');
+
+@
+@<set final...@>=
+ job_length := round(galley_length/72.0);
+ pages_set := num_of_pages;
+ job_type := 'TeX';
+
+@ This second procedure is called first and reads the final job
+information for the file. Things like job length, widest page,
+tallest page are set and the information sent to |post_amble|.
+
+@<Global Variables@>=
+@!byte : integer;@/
+@!width : real;@/
+@!even_page_margin : real;@/
+@!odd_page_margin : real;@/
+@!totalpg : integer;@/
+
+@
+@p procedure readpostamble;
+var
+ int :integer;@/
+ inx :integer;@/
+begin
+ job_length := round(galley_length / 72.0);@/
+ pages_set := num_of_pages;@/
+ for inx := 1 to 3 do byte := readinteger(4);
+ byte := readinteger(4); {Get magnification}@/
+ if dumpin
+ then writeln(dumpout,
+ '** Font magnification = ',byte/1000.0:3:1);
+ writeln;
+ writeln('Tallest page is ',readinteger(4)/SPsPerPt/72.0:2:1,
+ ' inches.');
+ width := readinteger(4) / SPsPerPt / 72.27;
+ width := max(width,put_width,even_page_margin/72.27,
+ odd_page_margin/72.27);
+ writeln('Widest page is ',width:2:1,' inches.');@/
+ width := width + 0.31; {5/16" on the left that cannot be used.}
+ if width < 8.0 then int := 8
+ else int := 12;
+ minimum_width := int;
+ writeln('The smallest paper you can use is ',int:2,'"');
+ totalpg := 9999;
+ post_amble;
+ if galley_length = 0 then begin
+ writeln('Error!! No pages set. ');
+ setretcode(12);
+ end;
+ end; {readpostamble}
+
+@* Conversion Functions.
+The following two functions will convert strings to integers
+(|whole_value|) or to real numbers (|decimal_value|).
+
+@^system dependencies@>
+@p function whole_value(str1 :string(10)) :integer;
+var
+ inx, inz : integer;@/
+ divisor : real;@/
+ number : real;@/
+begin
+ number := 0;
+ inx := index(str1,'-');
+ if inx > 0
+ then begin
+ divisor := (-1 * 0.1);
+ str1 := substr(str1,2);
+ end {then..begin}
+ else divisor := 0.1;
+ for inz := 0 to (length(str1)-1) do begin
+ divisor := divisor * 10.0;
+ number := number + ((ordx[str1[length(str1) - inz]] -
+ ordx['0']) * divisor);
+ end;
+ whole_value := round(number);
+end; {|whole_value|}
+
+@
+@^system dependencies@>
+@p function decimal_value(str2 :string(40)): real;
+var
+ inx, inz : integer;
+ divisor : real;
+ str3 : string(30);
+ number : real;
+begin
+ number := 0.0;
+ inx := index(str2, '.');@/
+ @<value with decimal, but nothing to right@>
+ @<value with decimal, and something to right@>@/
+ @<value without decimal@>
+ decimal_value := number;
+ end; {|decimal_value|}
+
+@
+@<value with decimal, but...@>=
+ if inx = length(str2) then begin {read left side of decimal}
+ str2 := substr(str2,1,inx-1);
+ end
+@
+@<value with decimal, and...@>=
+ else begin
+ if inx > 0 then begin
+ str3 := substr(str2,inx+1);
+ divisor := 1.0;
+ for inz := inx+1 to length(str3) do begin
+ divisor := divisor * 0.1;
+ number := number +
+ (ordx[str3[inz]] - ordx['0'] * divisor);
+ end;
+ if inx = 1 then return;
+ str2 := substr(str2,1,inx-1);
+ end;
+ end;
+
+@
+@<value without...@>=
+ divisor := 0.1;
+ for inz := 0 to (length(str2)-1) do begin
+ divisor := divisor * 10.0;
+ number := number + ((ordx[str2[length(str2) - inz]] -
+ ordx['0']) * divisor);
+ end;
+@* Parm-reading procedure.
+This procedure reads and parses the parameters entered with the
+call to this program; it is expecting the following form of some
+sort:
+
+\centerline{\tt tex8600 fn ft (1stpg \#ofpgs) realfn lrecl}
+
+@<Global Variables@>=
+@^system dependencies@>
+@!filetype : string(8);
+@!firstpg : integer;
+
+@
+@p @^system dependencies@>
+procedure readparms;
+var
+ namepage : string(256);
+ temp : integer;
+ temp2 : integer;
+ temp3 : integer;
+ str1 : string(10);
+ lrecl : string(8);
+
+begin
+ namepage := ltrim(trim(parms));
+ @<file name and real filename@>
+ @<file type not supplied@>
+ @<file type supplied@>
+ end; {readparms}
+
+@
+ @<file name and real filename@>=
+ temp := index(namepage,' ');
+ temp2 := index(namepage,')');
+ if temp2 > 0
+ then @<parse real name and lrecl@>
+ else error(10,fatal,0);
+ filename := substr(namepage,1,temp-1);
+
+@
+ @<parse real name and lrecl@>=
+ begin
+ temp3 := index(substr(namepage,temp2+2),' ');
+ if temp3 = 0
+ then begin
+ real_filename := substr(namepage,temp2 + 2);
+ lrecl := '';
+ end
+ else begin
+ real_filename := substr(namepage,temp2 + 2,temp3-1);
+ lrecl := substr(namepage,temp2+2+temp3);
+ end;
+ if lrecl = ''
+ then pv_dvi_lrecl := pc_dvi_lrecl
+ else readstr(lrecl,pv_dvi_lrecl);
+ end
+
+@
+ @<file type not...@>=
+ namepage := substr(namepage,temp+1,(temp2-temp));
+ temp := index(namepage,'(');
+ if temp = 1
+ then begin
+ filetype := 'DVI';
+ if length(namepage) > 1
+ then begin
+ namepage := substr(namepage,temp+2);
+ temp := index(namepage,' ');
+ if temp > 0
+ then begin
+ str1 := substr(namepage,1,temp-1);
+ firstpg := whole_value(str1);
+ str1 := substr(namepage,temp+1);
+ if length(str1) > 0 then
+ totalpg := whole_value(str1);
+ end {then..begin}
+ else begin
+ str1 := substr(namepage,1);
+ firstpg := whole_value(str1);
+ end {ELSE..begin}
+ end {then..begin}
+ end {then..begin}
+
+@
+ @<file type supplied...@>=
+ else begin
+ filetype := substr(namepage,1,temp-2);
+ namepage := ltrim(substr(namepage,temp+1));
+ temp := index(namepage,')');
+ if temp > 1
+ then begin
+ temp2 := index(namepage,' ');
+ str1 := substr(namepage,1,temp2-1);
+ if str1='*'
+ then firstpg := -99999
+ else firstpg := whole_value(str1);
+ str1 := substr(namepage,temp2+1,(temp-temp2)-2);
+ if str1='*'
+ then totalpg := 99999
+ else totalpg := whole_value(str1);
+ end; {then..begin}
+ end; {ELSE..begin}
+
+@* Print Position Procedures.
+The next three procedures are called whenever there is to be a
+vertical or horizontal move of any kind.
+
+@
+@<Global Type...@>=
+@!movetype = (horiz,vert);
+
+@ This procedure will print the horizontal or vertical
+ distance that the 8600 is to move the paper.
+
+@p procedure figuredir(typ :movetype;
+ amt :integer);
+var
+ temp :real;
+begin
+ if dumpin and print_hmove then begin
+ writeln(dumpout);
+ write(dumpout,' *** move ');
+ end;
+ @<horizontal move@>
+ @<move right@>
+ @<move left@>
+ @<vertical move@>
+ @<move down@>
+ @<move up@>
+ if dumpin and print_hmove
+ then temp := getpts(abs(amt));
+ end; {FigureDir}
+
+@
+@<horizontal move@>=
+ if typ = horiz
+ then if amt >= 0
+
+@
+@<move right@>=
+ then begin
+ if dumpin and print_hmove then write(dumpout,'right ');
+ writecommand(11,stack[stacktop].H);
+ end
+
+@
+@<move left@>=
+ else begin
+ if dumpin and print_hmove then write(dumpout,'left ');
+ writecommand(11,stack[stacktop].H);
+ end
+
+@
+ @<vertical move@>=
+ else if amt >= 0
+
+@
+ @<move down@>=
+ then begin
+ if dumpin then write(dumpout,'down ');
+ writecommand(9,amt);
+ end
+
+@
+ @<move up@>=
+ else begin
+ if dumpin then write(dumpout,'up ');
+ writecommand(10,abs(amt));
+ end;
+
+@
+@<Global Variables@>=
+@!hmove_pending : boolean;
+@!hmove_amt : integer;
+@!vmove_pending : boolean;
+@!vmove_amt : integer;
+@!length_of_take : real;
+
+@ This procedure is invoked in the main program each
+ time something is actually to be set (such as a
+ character). If there is a vertical or horizontal
+ move pending, they will be set here, before continuing
+ on to the next set command (such as set character).
+
+@p procedure checkmoves;
+var
+ tempbool :boolean;
+begin
+ if hmove_pending then begin
+ figuredir(horiz,hmove_amt);
+ hmove_amt := 0;
+ hmove_pending := false;
+ print_hmove := true;
+ end; {then..begin}
+ if vmove_pending then begin
+ figuredir(vert,vmove_amt);
+ tempbool := dumpin;
+ dumpin := false;
+ if doingpages=true
+ then begin
+ galley_length := galley_length + getpts(vmove_amt);
+ length_of_take := length_of_take + getpts(vmove_amt);
+ end;
+ dumpin := tempbool;
+ vmove_amt := 0;
+ vmove_pending := false;
+ end; {then..begin}
+ end; {checkmoves}
+
+@
+@<Global Variables@>=
+@!font8600 : 0..2550;
+@!ptsize : 0..255;
+@!different_setsize : boolean;
+@!setsize : 0..255;
+
+@ This procedure sets the page environment to be that of ``font"
+
+@p procedure establish_font_parameters(font :integer);
+begin
+ @<new font name@>
+ @<new font size@>
+ @<new set size@>
+end; {|establish_font_parameters|}
+
+@
+@<new font name@>=
+ with a8600fontrec[fontenviron[font].fontindex]
+ do begin
+ if (fontno8600 <> font8600) and (fontno8600 <> 0)
+ then begin
+ writecommand(25,float(fontno8600));
+ font8600 := fontno8600;
+ end; {then..begin}
+ end; {WITH..begin}
+
+@
+@<new font size@>=
+ if fontenviron[font].pointsize <> ptsize
+ then begin
+ ptsize := fontenviron[font].pointsize;
+ writecommand(7,float(ptsize));
+ end; {then..begin}
+
+@
+@<new set size@>=
+ if different_setsize
+ then writecommand(8,float(setsize));
+
+
+@* ``Special'' Procedures.
+The next few procedures enable the 8600 to do ``special'' things
+like setting line footnotes, or slant type, or expanded type, etc.
+
+@
+@<Global Constants@>=
+@! maxNote = 100;@/
+
+@ This procedure establishes the line number reference in
+|footnote_line_array| with the line number in which a line note was
+called.
+
+@<Global Variables@>=
+@!foot_area_ref : 0..255;
+@!footnote_line_array : packed array[0..maxNote] of 0..255;
+@!foot_line_ref : 0..255;
+@!line_note_pending : boolean;
+@!line_ref_pend_seq : 0..255;
+@!counting_lines : boolean;
+@!number_of_lines : integer;
+
+@
+@p procedure line_footnote_reference;
+begin
+ if not counting_lines then begin
+ incr(foot_area_ref);
+ line_note_pending := true;
+ line_ref_pend_seq := 1;
+ end
+ else begin
+ incr(foot_line_ref);
+ footnote_line_array[foot_line_ref] := number_of_lines + 1;
+ end;
+ end; {|line_footnote_reference|}
+
+@
+@<Global Constants@>=
+@! linefont = 256;@/
+@! linenumfont = 76;@/
+
+@
+@<Global Variables@>=
+@^system dependencies@>
+@!special : string(40);
+@!line_interval : 0..255;
+@!margin_note : boolean;
+@!numbering_lines : boolean;
+@!printing_numbers : boolean;
+@!pop_level : integer;
+
+@ This procedure reads and interprets all the \\special commands
+entered in the \TeX\ file. Its primary purpose is for reading the
+the instructions pertaining to linenotes.
+
+@p @^system dependencies@>
+procedure readspecials;
+var
+ int : integer;
+ inx : integer;
+ temp : string(40);
+ temp2 : string(40);
+ temp3 : string(40);
+ temp4 : string(40);
+
+begin
+ @<read special command@>
+ if temp = 'EVEN_PAGE_MARGIN'
+ then begin
+ temp := (substr(temp2, 1, length(temp2)-2));
+ even_page_margin := decimal_value(temp);
+ end
+ else if temp = 'ODD_PAGE_MARGIN'
+ then begin
+ temp := (substr(temp2, 1, length(temp2)-2));
+ odd_page_margin := decimal_value(temp);
+ end
+ else if temp = 'LINE_NUMBER_FONT'
+ @<linenumber font@>
+ else if temp = 'POP_LEVEL'
+ then pop_level := whole_value(temp2)
+ else if temp = 'LINE_INTERVAL'
+ then line_interval := whole_value(temp2)
+ else if temp = 'NUMBERING_LINES'
+ then begin
+ @<boolean value@>
+ then numbering_lines := true
+ else numbering_lines := false;
+ end {then..begin}
+ else if temp = 'COUNTING_LINES'
+ then begin
+ @<boolean value@>
+ then counting_lines := true
+ else counting_lines := false;
+ end {then..begin}
+ else if (temp = 'MARGINNOTE')
+ then margin_note := true
+ else if temp = 'PRINTING_NUMBERS'
+ then begin
+ @<boolean value@>
+ then printing_numbers := true
+ else printing_numbers := false;
+ end {then..begin}
+ else if temp = 'LINE_FOOTNOTE_REFERENCE'
+ then line_footnote_reference;
+ end; {then..begin}
+ end; {ReadSpecials}
+
+@ This gives default values for even and odd page margins that
+will be reset if the user specified them in his file. It also reads
+the special command.
+
+@<read special command@>=
+ int := index(special, '=');
+ if int > 0
+ then begin
+ temp := trim(ltrim(substr(special, 1, int-1)));
+ temp2 := substr(special, int+1);
+
+@ If the special command is a Line Number Font, the command must
+be further broken down to find the point size, as well as the name.
+
+ @<linenumber font@>=
+ then begin
+ int := index(temp2, ' ');
+ if int > 0
+ then begin
+ @<point size given@>
+ end
+ else begin
+ @<no point size given@>
+ end;
+ fontname := allcaps(temp3);
+ readfontinfo(linefont,linenumfont);
+ end
+
+@ A point size is given and that size must be sent along with the
+name to the |readfontinfo| procedure.
+
+@<point size given...@>=
+ temp3 := trim(ltrim(substr(temp2, 1, int-1)));
+ temp4 := substr(temp2, int+1);
+ with fontenviron[linefont] do begin
+ inx := whole_value(temp4);
+ pointsize := inx;
+ designsize := inx;
+ end;
+
+@ No point size is given, so the default point size will be used
+(ten-point).
+
+@<no point size...@>=
+ temp3 := trim(ltrim(substr(temp2, 1, int-1)));
+ inx := 10;
+ with fontenviron[linefont] do begin
+ pointsize := inx;
+ designsize := inx;
+ end;
+
+@ The boolean value module is used when the response to the
+special command is true or false.
+
+@<boolean value@>=
+ temp2 := allcaps(ltrim(trim(temp2)));
+ if temp2 = 'TRUE'
+
+@ This procedure is used in conjunction with the 0 font and
+ handles the special functions codes like slant,
+ reverse type, set size, etc.
+
+@p procedure call_specials_routine(funcname :integer);
+var
+ inx :integer;
+ num :integer;
+begin
+ if dumpin then writeln(dumpout,'Function [',funcname:3,'] ');
+ if funcname = 10
+ then counting_lines := true
+ else if funcname = 11
+ then counting_lines := false
+ else if funcname = 12
+ then printing_numbers := true
+ else if funcname = 13
+ then printing_numbers := false
+ else if funcname = 14
+ then line_footnote_reference;
+ if (funcname=14) or (funcname=13) or (funcname=12) or
+ (funcname=11) or (funcname=10) then return;
+ with stack[stacktop],
+ a8600fontrec[fontenviron[currfont].fontindex],
+ fontenviron[currfont] do begin
+ with a8600chars[funcname] do begin
+ for inx := 0 to num
+ do with comarray[inx]
+ do writecommand(comcode,float(argument));
+ end; {DO..begin}
+ end; {DO..begin}
+ end; {|call_specials_routine|}
+
+@* Set the characters procedures.
+The first procedure is called from the second one if a line
+number is to be printed.
+The second procedure actually sets an individual character.
+First it checks
+to make sure the character is a real one and not from the zero or
+specials' font, then
+it checks to see if a move needs to be made before the character is
+printed. It makes the move and then
+checks to see if a line number is to be printed; if it does, it prints
+the line number, if it doesn't it sets the character.
+
+@<Global Variables@>=
+@!points : real;
+@!we_add_the_character_width : boolean;
+
+@ When \TeX\ formats the footnotes entered with a linenote reference
+command, it simply inserts two zeros for the linenumber. This procedure
+replaces those two zeros with the line number in which the linenote
+reference was called.
+
+@p procedure setline_footnote_ref(font :integer);
+var
+ temp :integer;
+ inx :integer;
+ tempreal :real;
+ return_ps :boolean;
+ return_ss :boolean;
+begin
+@<determine correct line number@>
+@<print line number@>
+@<reset line number values@>
+end; {|setline_footnote_ref|}
+
+@
+@<determine correct line number@>=
+ if line_ref_pend_seq = 1
+ then temp := footnote_line_array[foot_area_ref] div 10
+ else temp := footnote_line_array[foot_area_ref] mod 10;
+ with fontenviron[font], stack[stacktop] do
+ H := H + round(pointsize *
+ a8600fontrec[fontindex].a8600chars[48].charwidth
+ * SPsPerPt);
+ if (line_ref_pend_seq = 1) and (temp = 0) then begin
+ hmove_pending := true;
+ line_ref_pend_seq := 2;
+ return;
+ end;
+
+@
+@<print line number@>=
+ with stack[stacktop], a8600fontrec[fontenviron[font].fontindex],
+ fontenviron[font] do begin
+ with a8600chars[48 + temp] do begin
+ @<set character commands@>
+ end; {WITH..begin}
+ end; {WITH..begin}
+
+@
+@<reset line number values@>=
+ if line_ref_pend_seq = 1 then begin
+ line_ref_pend_seq := 2;
+ return; end
+ else begin
+ line_ref_pend_seq := 0;
+ line_note_pending := false;
+ return; end;
+ if line_note_pending
+ then begin
+ line_note_pending := false;
+ return;
+ end;
+
+@ The |setcharacter| procedure is the main procedure for setting
+any and all characters, except the |line_footnote| references.
+
+@p procedure setcharacter(character :integer;
+ font :integer);
+var
+ inx :integer;
+ tempreal :real;
+ temppt :integer;
+ tempbool :boolean;
+ return_ps :boolean;
+ return_ss :boolean;
+begin
+ @<specials font or dumpin@>
+ checkmoves;
+ @<linenote-footnote@>
+ @<debug info@>
+ @<begin character@>
+ end; {setcharacter}
+
+@
+@<specials font or dumpin@>=
+if font8600 = 0 then begin
+ call_specials_routine(character);
+ return;
+ end; {then..begin}
+if dumpin and (hmove_pending or vmove_pending)
+ then tempbool := true
+ else tempbool := false;
+
+@
+@<linenote-footnote@>=
+ if line_note_pending and (character = 48)
+ then begin
+ setline_footnote_ref(font);
+ return;
+ end;
+
+@
+@<debug info@>=
+ if dumpin and tempbool then writeln(dumpout);
+ if dumpin
+ then if (character >= 32) and (character < 127)
+ then write(dumpout,chrx[character])
+ else write(dumpout,'?<',character:3,'>');
+
+@
+@<begin character@>=
+ return_ps := false;
+ return_ss := false;
+ with stack[stacktop], a8600fontrec[fontenviron[font].fontindex],
+ fontenviron[font] do begin
+ with a8600chars[character] do begin
+ if different_setsize
+ then temppt := trunc(float(setsize) /
+ 100.0 * pointsize)
+ else temppt := pointsize;
+ if we_add_the_character_width
+ then H := H + round(temppt * charwidth * SPsPerPt);
+ @<set character commands@>
+ end; {WITH..begin}
+ end; {WITH..begin}
+
+@
+@<set character commands@>=
+for inx := 0 to num do
+ with comarray[inx] do
+ if (comcode = 25) and (argument = -1)
+ then writecommand(25,fontno8600)
+ {Some commands need to be scaled by
+ the set size factor}
+ else if (comcode=9) or (comcode=10) or
+ (comcode = 27) or (comcode = 28)
+ then begin
+ points := float(pointsize) *
+ SPsPerPt * real_argument;
+ writecommand(comcode,points);
+ end {then..begin}
+ else if (comcode = 12) or (comcode = 13)
+ then begin
+ points :=float(pointsize) * real_argument;
+ writecommand(comcode,points);
+ end {then..begin}
+ else if comcode = 14
+ then begin
+ tempreal := SPsPerPt * (getpts(H) +
+ (real_argument * pointsize));
+ if we_add_the_character_width
+ then tempreal := tempreal -
+ round(pointsize*charwidth*SPsPerPt);
+ writecommand(14,tempreal);
+ end
+ else if comcode = 7
+ then begin
+ writecommand(7,pointsize+float(argument));
+ return_ps := true;
+ end
+ else if comcode = 8
+ then begin
+ writecommand(8,designsize+float(argument));
+ return_ss := true;
+ end
+ else writecommand(comcode,float(argument));
+ if return_ss then writecommand(8,designsize);
+ if return_ps then writecommand(7,pointsize);
+
+@
+@<Global Variables@>=
+@!size : integer;
+
+@ This next procedure sets the line number if that option is used.
+It will print the line number according to
+|odd_page_margin| or |even_page_margin|. The number will
+ be set in the |line_number_font|. The line numbers
+ will print every five lines by default or according to
+|line_interval|, and begin at 1 on each page.
+
+@p procedure print_line_number;
+var
+ j :integer;
+begin
+ incr(number_of_lines);
+ if not printing_numbers then return;
+ if (number_of_lines <> ((number_of_lines div
+ line_interval) * line_interval))
+ then return; {If this is not a line number divisible by
+ |line_interval|}
+ size := headernum div 2;
+ size := size * 2;
+ if even_page_margin = 0 then
+ even_page_margin := 50.8;
+ if odd_page_margin = 0 then
+ odd_page_margin := 407.7;
+ if size = headernum
+ then writecommand(11,even_page_margin*SPsPerPt) {H position}
+ else writecommand(11,odd_page_margin*SPsPerPt); {H position}
+ establish_font_parameters(linefont);
+ size := number_of_lines;
+ if dumpin then begin
+ writeln;
+ write(dumpout,'*** set line number ');
+ end;
+ we_add_the_character_width := false;
+ if size >= 10
+ then begin
+ j := size div 10;
+ setcharacter(j+48,linefont); {set 1st digit}
+ size := size -(j * 10);
+ end
+ else with
+a8600fontrec[fontenviron[linefont].fontindex].a8600chars[48]
+ do {set nothing, but move the width of a "0"}
+ writecommand(27, fontenviron[linefont].pointsize *
+ charwidth * SPsPerPt);
+ setcharacter(size+48,linefont); {+48 for ASCII code}
+ we_add_the_character_width := true;
+ if dumpin then writeln(dumpout);
+ establish_font_parameters(currfont); {return to active font}
+ end; {|print_line_number|}
+
+@* Initialization procedures.
+These next few procedures, get the whole thing started by assigning
+values to all necessary items.
+
+@<Global Constants@>=
+@! version = 2;@/
+@! level = 7;@/
+
+@
+@<Global Variables@>=
+@!takenum : integer;
+@!currpage : integer;
+@!prevpage : integer;
+
+@
+@p @^system dependencies@>
+procedure initialize8600;
+begin
+ @<page-setting values@>
+ @<setting output/input values@>
+ @<line-numbering font values@>@/
+ @<page and font values@>
+ @<line numbering values@>
+ @<miscellaneous values@>
+ end; {initialize8600}
+
+@
+ @<page-setting values@>=
+ firstpg := -99999;
+ totalpg := 99999;
+ doingpages := false;
+
+@
+ @<setting output/input values@>=
+ termout(output);
+ readparms;
+ reset(input,'NAME=' ccat filename ccat '.' ccat filetype ccat '.*');
+ writeln('******* tex8600 Version ',version:2,' Level ',
+ level:3,' *******');
+ rewrite(setfile,'LRECL=1029,RECFM=F,NAME=' ccat filename ccat
+'.TAPEFILE.*');
+
+@
+ @<line-numbering font values@>=
+ with fontenviron[-1] do begin
+ pointsize := 10;
+ designsize := 1;
+ fontindex := 0;
+ end; {WITH..begin}
+
+@
+@<page and font values@>=
+ currfont := -1;
+ currpage := 0;
+ prevpage := -99999;
+ ptsize := 0;
+ setsize := 100;
+
+@
+@<line numbering values@>=
+ counting_lines := false;
+ margin_note := false;
+ numbering_lines := false;
+ printing_numbers := false;
+ line_note_pending := false;
+ line_ref_pend_seq := 0;
+ even_page_margin := 0.0;
+ odd_page_margin := 0.0;
+ line_interval := 5;
+ pop_level := 3;
+ bufferlen := 0;
+
+@
+@<miscellaneous values@>=
+ takenum := -1;
+ num_of_pages := 0;
+ length_of_take := 0;
+ dumpin := false;
+
+@ This procedure initializes values that pertain to the overall run.
+
+@<Global Variables@>=
+@!last_command : 0..255;
+@!outputpending : boolean;
+@!page_counter : integer;
+@!second_to_last_cmnd : 0..255;
+
+@
+@p procedure init_run;
+begin
+ initialize8600;
+ @<debugging statements@>
+ count := 0;
+ fileend := false;
+ galley_length := 0;
+ hmove_amt := 0;
+ hmove_pending := false;
+ last_command := 0;
+ outputpending := false;
+ page_counter := 0;
+ postam_found := false;
+ put_width := 0.0;
+ print_hmove := true;
+ second_to_last_cmnd := 0;
+ stacktop := 1; {initialize stack}
+ vmove_amt := 0;
+ vmove_pending := false;
+ we_add_the_character_width := true;
+ @<initialize job's main record--stack@>
+ end; {|init_run|}
+
+@
+ @<debugging statements@>=
+ if dumpin then begin
+ writeln(dumpout);
+ writeln(dumpout);
+ writeln(dumpout,'********************************************');
+ writeln(dumpout,'byte:code meaning');
+ writeln(dumpout);
+ end;
+
+@
+@<initialize job's main record--stack@>=
+ with stack[stacktop] do begin
+ H := 0;
+ V := 0;
+ W := 0;
+ X := 0;
+ Y := 0;
+ Z := 0;
+ end; {WITH loop}
+
+@* Rule-setting Procedures.
+The |setrule| procedure is called when the horizontal position
+is to be advanced. |putrule| is called when the horizontal position
+is not to be advanced.
+
+@ This procedure sets a rule.
+
+@<Global Variables@>=
+@!ruleht : integer;
+@!rulewidth : integer;
+@!height : real;
+@!fudge : real;
+
+@
+@p procedure drawrule;
+begin
+ checkmoves;
+ points := getpts(ruleht);
+ height := points * SPsPerPt;
+ if points <> 0 then begin
+ writecommand(13,points);
+ points := getpts(rulewidth);
+ writecommand(12,points);
+ if points <> 0 then begin
+ writecommand(10,height); {Move back the rule height}
+ writecommand(14,stack[stacktop].H); {set it}
+ writecommand(9,height); {move down after setting}
+ writecommand(11,stack[stacktop].H); {set it}
+ end; {then...begin}
+ end;{then..begin}
+end;
+
+@ Rule and increase the value of H (horizontal position).
+
+@p procedure setrule;
+begin
+ drawrule;
+ hmove_amt := rulewidth;
+ hmove_pending := true;
+ stack[stacktop].H := stack[stacktop].H + rulewidth;
+end; {setrule}
+
+@ Rule and do not increase the value of H (horizontal position).
+
+@p procedure putrule;
+begin
+ drawrule;
+end; {putrule}
+
+@* Page procedures.
+The |doendofpage| procedure is called at the end of each page and the
+|dobeginningofpage| procedure at the beginning of each page.
+
+@ This procedure is entirely for the user's information. It prints
+out to the terminal the number of pages set in the job. If there are
+are more than 8 page numbers a carriage return is thrown.
+
+@p procedure doendofpage;
+begin
+ incr(page_counter);
+ if page_counter >= 8 then begin
+ writeln;
+ page_counter := 0;
+ end;
+ if doingpages=true
+ then begin
+ decr(totalpg);
+ if totalpg = 0
+ then begin
+ writeln('<',currpage:1,'> ');
+ return;
+ end {then..begin}
+ else write('<',currpage:1,'> ');
+ end;
+ end;
+
+@ This procedure does all of the 8600 initialization
+ for the start of each new page.
+
+@<Global Constants@>=
+@! indent=' ';@/
+@! nullstring = '00000000000000000000'xc;@/
+
+@
+@<Global Variables@>=
+@!int : integer;
+@!newtake : boolean;
+
+@
+@p procedure dobeginningofpage;
+var
+inx :integer;
+begin
+ @<general initializations@>
+ @<read first page number@>
+ @<determine if current page is to be set@>
+ @<read counters@>
+ if doingpages=true
+ then begin
+ if (currpage = firstpg) or (int = -1)
+ or (length_of_take >= 5184)
+ then begin
+ @<first page or 6 feet in film canister@>
+ end {then..begin}
+ else begin
+ @<any other page@>
+ end; {ELSE..begin}
+ with fontenviron[currfont] do begin
+ if int = -1 then begin
+ @<first page font environment@>
+ end
+ else begin
+ @<all other pages font environment@>
+ @<print end of page rule@>
+ end; {ELSE..begin}
+ end;{WITH..begin}
+ incr(num_of_pages);
+ end; {then..begin}
+end; {DoBeginningOfPage}
+
+@
+@<general initializations@>=
+ foot_line_ref := 0;
+ foot_area_ref := 0;
+ number_of_lines := 0;
+ newtake := false;
+ with stack[stacktop] do begin
+ H := 4718592;
+ V := 0; {start 1" over and 1" down}
+vmove_amt := 4718592;
+vmove_pending := true;
+hmove_pending := true;
+ end; {WITH ... do begin}
+
+@
+@<read first page number@>=
+ int := readinteger(4);
+ if dumpin then writeln(dumpout,'BOP -- Beginning Of Page ',int);
+ headernum := int;
+ prevpage := currpage;
+ currpage := int;
+
+@
+@<determine if current...@>=
+if (firstpg = -99999)
+ then
+ doingpages := true;
+if not doingpages
+then
+ if ((firstpg >= 0) and (firstpg <= currpage))
+ or ((firstpg < 0) and (firstpg >= currpage))
+ then
+ doingpages := true;
+if (totalpg < 1)
+ then
+ doingpages := false;
+
+@
+@<read counters@>=
+ for inx := 1 to 9 do begin
+ int := readinteger(4);
+ if dumpin then writeln(dumpout,'Counter ',inx:1,' = ',int);
+ end; {FOR ... do begin}
+ int := readinteger(4);
+ if dumpin
+ then writeln(dumpout,indent,'previous page pointer = ',int);
+
+@
+@<first page or 6 feet in film canister@>=
+ incr(takenum);
+ length_of_take := 0;
+ if (int = -1) or (currpage = firstpg) {On first page}
+ then writeheader
+ else begin
+ inx := headernum;
+ headernum := 88888;
+ repeat {pad end of record with hex FF}
+ write8600rec(allzeros);
+ until bufferlen <= 5;
+ headernum := inx;
+ writecommand(1,0.0); {End of Take}
+ repeat {pad record with '00'xc}
+ write8600rec(allzeros);
+ until bufferlen <= 5;
+ end;
+ write8600rec(nullstring); {10 hex zeros}
+ writecommand(0,takenum); {Start of Take}
+ newtake := true;
+
+@
+@<any other page@>=
+ repeat {pad end of record with hex FF}
+ write8600rec(allzeros);
+ until bufferlen <= 5;
+
+@
+@<first page font environment@>=
+ different_setsize := false;
+ in_slant_mode := false;
+ in_reverse_type := false;
+
+@
+@<all other pages font environment@>=
+ writecommand(25,font8600);
+ writecommand(7,pointsize);
+ if different_setsize
+ then writecommand(8,float(setsize));
+ if in_slant_mode
+ then writecommand(15,48);
+ if in_reverse_type
+ then writecommand(3,1);
+
+@
+@<print end of page rule@>=
+ writecommand(11,0); {Move to left col.}
+ writecommand(9,12.0*SPsPerPt); {VMF 12 pts}
+ writecommand(12,30.0); {set width of rule}
+ writecommand(13,1.5); {set depth of rule}
+ writecommand(14,0); {page separator}
+ writecommand(11,0); {quad left}
+ writecommand(9,12.0*SPsPerPt); {VMF 12 pts}
+ galley_length := galley_length + 24;
+
+@* MAIN PROGRAM.
+
+@<Global Variables@>=
+@!tempstack : stackrec;
+@!inx : integer;
+@!temp : integer;
+@!temp2 : integer;
+@!put_width : real;
+@!realtemp : real;
+
+@
+@p begin {MAIN}
+ {=== Initialize ===}
+ init_run;
+ while not postam_found do begin
+ savecount := count; {don't change it in readinteger}
+ byte := readinteger(1); {1-byte code}
+ if printing_numbers
+ then if ((byte > 128) and (byte < 218)) then begin
+ second_to_last_cmnd := last_command;
+ last_command := byte;
+ end; {then..begin}
+ if byte < 128 then begin {This is a character}
+ outputpending := true;
+ setcharacter(byte,currfont);
+ end {then..begin}
+ else if (byte>=250) and (byte<=255)
+ then error(6,fatal,byte)
+ else case byte of
+ 128: @<set horizontal character1@>@/
+ 129: @<set horizontal character2@>@/
+ 130: @<set horizontal character3@>@/
+ 131: @<set horizontal character4@>@/
+ 132: @<set a rule@>@/
+ 133: @<put horizontal character1@>@/
+ 134: @<put horizontal character2@>@/
+ 135: @<put horizontal character3@>@/
+ 136: @<put horizontal character4@>@/
+ 137: @<put a rule@>@/
+ 138: do_nothing; {NOP}
+ 139: dobeginningofpage;{BOP}
+ 140: doendofpage; {EOP}
+ 141: @<push@>@/
+ 142: @<pop@>@/
+ 143: @<right1 move@>@/
+ 144: @<right2 move@>@/
+ 145: @<right3 move@>@/
+ 146: @<right4 move@>@/
+ 147: @<``W'' horizontal move@>@/
+ 148..151: @<``W''1-4 horizontal move@>@/
+ 152: @<``X'' horizontal move@>@/
+ 153..156: @<``X''1-4 horizontal move@>@/
+ 157..160: @<down1@>@/
+ 161: @<``Y'' vertical move@>@/
+ 162..165:@<``Y''1-4 vertical move@>@/
+ 166: @<``Z'' vertical move@>@/
+ 167..170: @<``Z''1-4 vertical move@>@/
+ 171..234: @<set font@>@/
+ 235: @<font1 set@>@/
+ 236: @<font2 set@>@/
+ 237: @<font3 set@>@/
+ 238: @<font4 set@>@/
+ 239: @<nop1@>@/
+ 240: @<nop2@>@/
+ 241: @<nop3@>@/
+ 242: @<nop4@>@/
+ 243: @<font1 def $0<k<64$@>@/
+ 244: @<font2 def $0<k<65536$@>@/
+ 245: @<font3 def $0<k<2^{24}$@>@/
+ 246: @<font4 def $-2^{31}<k<2{30}$@>@/
+ 247: @<preamble@>@/
+ 248: readpostamble; {Post-amble}@/
+ 249: do_nothing; {Post-post-amble}
+ otherwise writeln('oops...forgot about ',byte:12);
+ end;{CASE}
+ end;{while}
+end.
+
+@
+@<set horizontal character1@>=
+ begin
+ int := readinteger(1);
+ we_add_the_character_width := true;
+ hmove_pending := true;
+ setcharacter(int,currfont);
+ end;
+
+@
+@<set horizontal character2@>=
+begin
+ int := readinteger(2);
+ we_add_the_character_width := true;
+ hmove_pending := true;
+ setcharacter(int,currfont);
+ end;
+
+@
+ @<set horizontal character3@>=
+ begin
+ int := readinteger(3);
+ we_add_the_character_width := true;
+ hmove_pending := true;
+ setcharacter(int,currfont);
+ end;
+
+@
+@<set horizontal character4@>=
+begin
+ int := readinteger(4);
+ we_add_the_character_width := true;
+ hmove_pending := true;
+ setcharacter(int,currfont);
+ end;
+
+@
+@<set a rule@>=
+begin
+ ruleht := readinteger(4);
+ rulewidth := readinteger(4);
+ setrule;
+ end;
+
+@
+@<put horizontal character1@>=
+begin
+ int := readinteger(1);
+ we_add_the_character_width := false;
+ hmove_pending := true;
+ setcharacter(int,currfont);
+ we_add_the_character_width := true;
+ end;
+
+@
+@<put horizontal character2@>=
+begin
+ int := readinteger(2);
+ we_add_the_character_width := false;
+ hmove_pending := true;
+ setcharacter(int,currfont);
+ we_add_the_character_width := true;
+ end;
+
+@
+@<put horizontal character3@>=
+begin
+ int := readinteger(3);
+ we_add_the_character_width := false;
+ hmove_pending := true;
+ setcharacter(int,currfont);
+ we_add_the_character_width := true;
+ end;
+
+@
+@<put horizontal character4@>=
+begin {Put Horizontal Character}
+ int := readinteger(4);
+ we_add_the_character_width := false;
+ hmove_pending := true;
+ setcharacter(int,currfont);
+ we_add_the_character_width := true;
+ end;
+
+@
+@<put a rule@>=
+begin
+ ruleht := readinteger(4);
+ rulewidth := readinteger(4);
+ realtemp := rulewidth / SPsPerPt / 72.27;
+ putrule;
+ end;
+
+@
+@<push@>=
+begin
+ tempstack := stack[stacktop];
+ stacktop := stacktop + 1;
+ stack[stacktop] := tempstack;
+ with stack[stacktop] do begin
+ end; {WITH..begin}
+ end;
+
+@
+@<pop@>=
+begin
+ tempstack := stack[stacktop];
+ inx := stacktop;
+ stacktop := stacktop - 1;
+ with stack[stacktop] do begin
+ hmove_pending := false;
+ hmove_amt := 0;
+ print_hmove := true;
+ vmove_amt := vmove_amt + V - tempstack.V;
+ vmove_pending := true;
+ if margin_note and counting_lines
+ then margin_note := false
+ else if numbering_lines and counting_lines
+ and (inx = pop_level)
+ then print_line_number;
+ writecommand(11,H); {HPOS to left margin}
+ end; {WITH .. do begin}
+with tempstack do begin
+if put_width = 12.0 then
+ else if H / SPsPerPt > 554 then
+ put_width := 12.0;
+ end;
+ end; {POP}
+
+@
+@<right1 move@>=
+begin
+ int := readinteger(1);
+ with stack[stacktop] do begin
+ hmove_amt := hmove_amt + int;
+ hmove_pending := true;
+ h := h + int;
+ end; {DO..begin}
+ end;
+
+@
+@<right2 move@>=
+begin
+ int := readinteger(2);
+ with stack[stacktop] do begin
+ hmove_amt := hmove_amt + int;
+ hmove_pending := true;
+ h := h + int;
+ end; {DO..begin}
+ end;
+
+@
+@<right3 move@>=
+begin
+ int := readinteger(3);
+ with stack[stacktop] do begin
+ hmove_amt := hmove_amt + int;
+ hmove_pending := true;
+ h := h + int;
+ end; {DO..begin}
+ end;
+
+@
+@<right4 move@>=
+begin
+ int := readinteger(4);
+ with stack[stacktop] do begin
+ hmove_amt := hmove_amt + int;
+ hmove_pending := true;
+ h := h + int;
+ end; {DO..begin}
+ end;
+
+@
+@<``W'' horizontal move@>=
+begin
+ with stack[stacktop] do begin
+ hmove_amt := hmove_amt + W;
+ hmove_pending := true;
+ H := H + W;
+ end; {WITH..begin}
+ end; {"W" amount change}
+
+@
+@<``W''1-4 horizontal move@>=
+ begin
+ size := 4 + (byte - 151);
+ int := readinteger(size);
+ points := getpts(int);
+ hmove_amt := hmove_amt + int;
+ hmove_pending := true;
+ with stack[stacktop] do begin
+ W := int; {int is in scalepts}
+ H := H + W;
+ end; {WITH..begin}
+ end; {"W" change}
+
+@
+@<``X'' horizontal move@>=
+begin
+ with stack[stacktop] do begin
+ hmove_amt := hmove_amt + X;
+ hmove_pending := true;
+ H := H + X;
+ end; {WITH..begin}
+ end; {"X" amount move}
+
+@
+@<``X''1-4 horizontal move@>=
+ begin
+ size := 4 + (byte - 156);
+ int := readinteger(size);
+ points := getpts(int);
+ hmove_amt := hmove_amt + int;
+ hmove_pending := true;
+ with stack[stacktop] do begin
+ X := int; ; {saveamt.}
+ H := H + X; {record the move}
+ end; {WITH..begin}
+ end; {"X" amount change}
+
+@
+@<down1@>=
+begin
+ size := 4 + (byte - 160);
+ int := readinteger(size);
+ points := getpts(int);
+ with stack[stacktop] do begin
+ vmove_amt := vmove_amt + int;
+ vmove_pending := true;
+ V := V + int;
+ end; {WITH..begin}
+ end; {"Down" amount move}
+
+@
+@<``Y'' vertical move@>=
+begin
+ with stack[stacktop] do begin
+ vmove_amt := vmove_amt + Y;
+ vmove_pending := true;
+ V := V + Y;
+ end; {WITH..begin}
+ end; {"Y" amount move}
+
+@
+@<``Y''1-4 vertical move@>=
+ begin
+ size := 4 + (byte - 165);
+ int := readinteger(size);
+ points := getpts(int);
+ vmove_amt := vmove_amt + int;
+ vmove_pending := true;
+ with stack[stacktop] do begin
+ Y := int; {save amt.}
+ V := V + Y;
+ end; {WITH..DO begin}
+ end; {"Y" amount move}
+
+@
+@<``Z'' vertical move@>=
+begin
+ with stack[stacktop] do begin
+ vmove_amt := vmove_amt + Z;
+ vmove_pending := true;
+ V := V + Z;
+ end; {WITH..begin}
+ end; {"Z" amount move}
+
+@
+@<``Z''1-4 vertical move@>=
+ begin
+ size := 4 + (byte - 170);
+ int := readinteger(size);
+ points := getpts(int);
+ vmove_amt := vmove_amt + int;
+ vmove_pending := true;
+ with stack[stacktop] do begin
+ Z := int; {save amt.}
+ V := V + Z;
+ end; {WITH..begin}
+ end; {"Z" amount move}
+
+@
+@<set font@>=
+ begin
+ currfont := byte - 171;
+ establish_font_parameters(currfont);
+ end;
+
+@
+@<font1 set@>=
+begin
+ currfont := readinteger(1);
+ establish_font_parameters(currfont);
+ end;
+
+@
+@<font2 set@>=
+begin
+ currfont := readinteger(2);
+ establish_font_parameters(currfont);
+ end;
+
+@
+@<font3 set@>=
+begin
+ currfont := readinteger(3);
+{ |establish_font_parameters(currfont);|}
+ end;
+
+@
+@<font4 set@>=
+begin
+ currfont := readinteger(4);
+ { |establish_font_parameters(currfont);|}
+ end;
+
+@
+@<nop1@>=
+begin
+ int := readinteger(1);
+ special := '';
+ for inx := 1 to int do begin
+ temp := readinteger(1);
+ special := special ccat allcaps(str(chrx[temp]));
+ end; {DO..begin}
+ readspecials;
+ end;
+
+@
+@<nop2@>=
+begin
+ int := readinteger(2);
+ special := '';
+ for inx := 1 to int do begin
+ temp := readinteger(1);
+ special := special ccat allcaps(str(chrx[temp]));
+ end; {DO..begin}
+ readspecials;
+ end;
+
+@
+@<nop3@>=
+begin
+ int := readinteger(3);
+ special := '';
+ for inx := 1 to int do begin
+ temp := readinteger(1);
+ special := special ccat allcaps(str(chrx[temp]));
+ end; {DO..begin}
+ readspecials;
+ end;
+
+@
+@<nop4@>=
+begin
+ int := readinteger(4);
+ special := '';
+ for inx := 1 to int do begin
+ temp := readinteger(1);
+ special := special ccat allcaps(str(chrx[temp]));
+ end; {DO..begin}
+ readspecials;
+ end;
+
+@
+@<font1 def...@>=
+begin
+ currfont := readinteger(1);
+ fontinfo;
+ end;
+
+@
+@<font2 def...@>=
+begin
+ currfont := readinteger(2);
+ fontinfo;
+ end;
+
+@
+@<font3 def...@>=
+begin
+ currfont := readinteger(3);
+ fontinfo;
+end;
+
+@
+@<font4 def...@>=
+begin
+ currfont := readinteger(4);
+ fontinfo;
+ end;
+
+@
+@<preamble@>=
+begin
+ int := readinteger(1);
+ int := readinteger(4);
+ temp := readinteger(4);
+ temp2 := readinteger(4);
+ temp := readinteger(1);
+ for int := 1 to temp do
+ inx := readinteger(1);
+ end;
+
+@* INDEX.
diff --git a/macros/text1/docs/readme.tex b/macros/text1/docs/readme.tex
new file mode 100644
index 0000000000..90677f14b9
--- /dev/null
+++ b/macros/text1/docs/readme.tex
@@ -0,0 +1,209 @@
+% tb27textone.tex
+\input tugboat.sty
+
+\font\bi=cmbxti10
+
+\begingroup
+\def\text#1{{\it\TeX T1}}
+
+
+\title * {\bi\TeX T1} Goes Public Domain *
+\author * Dean Guenther *
+\address * Computer Service Center \\
+ Washington State University \\
+ Computer Science Building \\
+ Pullman, WA 99164 *
+\netaddress[\network{Bitnet}] *GUENTHER@WSUVM1*
+
+\article
+
+\text1 is a macro package for use with \plain{} and has been
+available for purchase for several years. Beginning in January 1990,
+\text1\ went into the \TeX\ public domain collection of macros.
+
+In 1983, a decision was made at Washington State University
+to put time into creating a set of macros to be used with \TeX.
+This macro set was to provide many of the functions found in \LaTeX:
+multiple columns, table of contents, indexing\footnote{$^*$}{The
+three different index styles illustrated in Appendix A in
+\TUB~{\bf1}(1) can all be achieved with \text1's index.}, chapters, lists,
+boxes, margin notes, etc. Yet there were to be two important differences:
+\list[\numbered]
+\item The {\tt PLAIN.TEX} commands would be able to be used in
+\text1.
+\item Modifying the \text1\ formats would be considerably easier than
+modifying \LaTeX\ styles.
+\endlist
+
+The resulting set of macros met the above criteria. One important
+exception was that no attempt was made to give \text1\ a picture
+environment such as was in \LaTeX. The documentation you may
+purchase for \text1\
+consists of a 300 page Reference Manual and a 100 page Users Guide.
+
+\head * Changing the Formats *
+
+As an example of how easy it is to modify the \text1\ formats, if the
+user wants to increase the bottom margin from 6 to 7 picas, they
+can simply specify:
+||\pageformat{\bottommargin{7pc}}||
+Or if you wanted your running head to contain the chapter title
+left-justified and the page number right-justified on odd pages, and
+the chapter title right-justified and the page number left-justified
+on even pages, you could say:
+\verbatim
+\runningheadformat{
+ \oddpages{\line{\lft{\chaptertitle}
+ \rt{\pagenumber}}}
+ \evenpages{\line{\lft{\pagenumber}
+ \rt{\chaptertitle}}}
+ }
+\endverbatim
+
+For one last example, it is often desirable to change the text embedded
+within macros. For example, by default if you say:
+||\chapter{Introduction}||
+you would get ``Chapter 1'' at the top of the next page in bold, with
+``Introduction'' centered below that. If you were using \text1\ in
+Germany, you would probably prefer ``Kapitel'' instead of
+``Chapter'', so you could change the chapter's format to say:
+\verbatim
+\chapterformat{
+ \titleformat{\newpage
+ \centerline{%
+ \bf Kapitel \chapternumber}
+ \centerline{\bf\chaptertitle}
+ \vs{1\bl}
+ }
+ \incontents{yes}}
+\endverbatim
+Then in your text you would specify the introduction (first
+chapter) as:
+||\chapter{Einleitung}||
+
+\head * Additional Products *
+
+Other products that came out of this pro\-ject and are now going into
+the public domain are a typesetter driver for the Compugraphics 8600
+and additional fonts.
+
+\subhead * Typesetter Driver *
+
+The Compugraphics driver is written in \WEB. It has the ability to
+add line numbering to the DVI output as it is printed on the 8600.
+The program does include some Pascal statements unique to IBM's
+Pascal/VS, so a change file would be necessary for any operating
+system other than IBM's VM/CMS.
+
+\subhead * Additional Fonts *
+
+Extra fonts were created from the base Computer Modern. These were
+Computer Modern at 11, 12, 14, 18, 24 and 36 point sizes. I do not
+know yet if I can call these Computer Modern, but I have asked
+Professor Knuth for permission to do so.
+
+In addition to the larger Computer Modern fonts, we also created an
+International Phonetic Alphabet in 9, 10, 11 and 12 point sizes. The
+IPA font is illustrated at the end of this article.
+
+\head * How to get {\bi\text1} *
+
+You can get any of the above \text1\ products on diskette or by
+anonymous FTP. Also, I will be distributing \text1\ to the various
+site coordinators who can determine whether to place it on their
+distribution.
+
+To obtain \text1\ on diskette from Jon Radel, send a note to
+\address[\display]
+Jon Radel \\
+P.O. Box 2276 \\
+Reston, VA \\
+22090-0276
+\endaddress
+and ask for \text1 (4 disks). To cover postage and other expenses,
+if you are in North America, please enclose \$1.50/disk if you send
+blank disks or \$5.00/disk if you don't; if you are anywhere else in
+the world, enclose \$2.00/disk if you send blank disks or \$6.00/disk
+if you don't. $\mu$\TeX\ and \PCTeX\ use different directories, so
+specify which of these two you are using. If you are using neither of
+these, then just specify \PCTeX. You should also specify whether you
+want |pk| (3 disks) or |gf| (5 disks) font files for the additional fonts
+(these do not include the IPA fonts).
+
+You may also request \text1\ for a Macintosh from Jon (1 disk).
+It is set up to run with \TeXtures.
+
+To order the IPA fonts from Jon, request the WSU IPA font. This
+consists of two diskettes: 1)~the IPA source files and Users Guide,
+and 2)~|pk| or |gf| files.
+
+To get \text1\ by anonymous FTP, you can connect to
+ftp.wsu.edu.
+Log on as
+|anonymous|, and change to the
+|/pub/tex/text1| directory. You will see ten subdirectories which you can GET
+files from:
+\list[\numbered]
+\item |BLOCKS|: this directory contains all of the default formats (or
+building ``blocks'' such as the |chapterformat|, |runningheadformat|, etc.)
+
+\item |CMS_HELP_FILES|: these are some of the help files used on the
+CMS system at WSU. Some sites have taken these files and used them in creating
+help files on a PC or on a \VAX.
+
+\item |COMPUGRAPHICS_8600|: this is the Compugraphics 8600 phototypesetter
+driver program, and its various utilities. Not very much documentation here,
+so venture further on your own.
+
+\item |FONTS|: This is the source for the additional Computer Modern
+fonts generated, such as 11, 14, 18, 24 and 36pt sizes.
+
+\item |MACINTOSH|: this contains the index sorting facility used with
+\text1. It is written for Turbo Pascal. (The executable binary can
+be obtained from Jon Radel if you do not have Turbo Pascal yourself.)
+
+\item |MACROS|: this contains the \text1 macros. The file |TEXT1.TEX| is used
+with Ini\TeX{} to create a new |fmt|.
+
+\item |MODELS|: contains various simple models such as letter, resume,
+etc. It also contains a model (|MERGETXT|) which can be used as a
+model for merge letters. For example, you could tell Dbase III to
+create an address list, merge it with a standard letter, and using
+the model print a
+copy for each person.
+
+\item |TEXIX|: the sorted index program used with \text1. Presently
+the only systems this is running on is CMS and Macintosh. |TEXIX| for
+\VAX{} and PC systems is in the works.
+
+\item |VAX_VMS|: when ready, this will have the sorted index for VMS
+users.
+
+\item |WSUIPA|: This contains the source for the International
+Phonetic Alphabet, as well as the |tfm| and |300pk| files.
+
+\endlist
+
+\head * {\bi\text1} Documentation *
+
+The documentation for \text1\ is not free. Pre\-sent\-ly, the
+documentation must be ordered through:
+\address[\display]
+\text1\ Distribution\\
+Computing Service Center \\
+Washington State University \\
+Pullman, WA. 99164-1220
+\endaddress
+The cost is \$35 for the Reference Manual and \$25 for the Users
+Guide. (Add \$5 postage if outside of the U.S.) The manuals are not
+yet available through the \TeX\ Users Group, but I hope to have them
+there as soon as I find a publisher.
+
+If you have any questions, feel free to send me an email note on Bitnet
+at {\tt GUENTHER@WSUVM1} or to {\tt GUENTHER@WSUVM1.WSU.EDU} on
+Internet.
+
+\makesignature
+
+\endgroup
+\endarticle
diff --git a/macros/text1/docs/refman.ps.gz b/macros/text1/docs/refman.ps.gz
new file mode 100644
index 0000000000..2631c303b9
--- /dev/null
+++ b/macros/text1/docs/refman.ps.gz
Binary files differ
diff --git a/macros/text1/fonts/cmr36.dump b/macros/text1/fonts/cmr36.dump
new file mode 100644
index 0000000000..502e15375f
--- /dev/null
+++ b/macros/text1/fonts/cmr36.dump
@@ -0,0 +1,902 @@
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 1 (00000001), 512 (0200) bytes
+
+ 04008BDE E5990000 40027475 7074756F 20322E31 204B506F 74464711 59F70200 ..÷Y.GFtoPK 1.2 output.@...åÞ... 000000
+ D494E2D6 92E2D890 E2DA27CE 5DE2B267 FC685B64 86AD0A41 F680AE26 0400AE26 &®..&®.öA.­.d[hüg²â]Î'Úâ.Øâ.Öâ.Ô 000020
+ 48CA9347 BF4C69C4 3C59F4CD 9444CE93 43FF4C29 F44C1905 3D19148D F9D296E2 â.Òù...=..Lô)L.C.ÎD.ÍôY<ÄiL¿G.ÊH 000040
+ 49C39495 344C4959 C4939454 4C3949C5 9492653C 29497F4C 0959C893 90F4C994 .Éô..ÈY.L.I)<e..ÅI9LT..ÄYIL4..ÃI 000060
+ C43BC949 DF4BB949 BE939AF4 BF9499F4 4B8959C0 9398144C 7949C194 96253C69 i<%..ÁIyL...ÀY.Kô..¿ô..¾I¹KßIÉ;Ä 000080
+ 94A4453B 494A5F4B 295AB693 A2F4B794 A1843B09 4A9F4BF9 49BA939E F4BB949D ..»ô..ºIùK.J.;.¡.·ô¢.¶Z)K_JI;E¤. 0000A0
+ BF4AD94A AC93ACF4 AD94ABD4 4AA95AAE 93AAF44A 994AAF94 A8058B2B 2E6BFBB3 ³ûk.+..¨.¯J.Jôª.®Z©JÔ«.­ô¬.¬JÙJ¿ 0000C0
+ 94B5344A 495BA493 B4F4A594 B2653A29 4B7F4A19 4BA893B0 F4A994AF A43AE94A Jé:¤¯.©ô°.¨K.J.K):e².¥ô´.¤[IJ4µ. 0000E0
+ C9ABA3A2 E4909BAE 999796B3 949B94B5 919E93B6 F849696B A094B625 3A694BA3 £Ki:%¶..kiIø¶...µ...³...®..䢣«É 000100
+ C0DED010 00ED1DDD 3DED3D03 D532700D 03DA2DE0 9D0265FB 66515E4B 160A420D .B..K^Qfûe..à-Ú..p2Õ.=í=Ý.í..ÐÞÀ 000120
+ D018C0D7 8C017C0D 7D018CCD 17C0D96C 01ACCD15 C0DAD014 C0DBD013 C0DCD012 .ÐÜÀ.ÐÛÀ.ÐÚÀ.ͬ.lÙÀ.Í..}.|..×À.Ð 000140
+ 8D016CCD 19C0D5D0 19C05FCD 1AC0D4D0 1AC0E8D5 AC01FCD5 D019C06F CD19C0D6 ÖÀ.ÍoÀ.ÐÕü.¬ÕèÀ.ÐÔÀ.Í_À.ÐÕÀ.Íl.. 000160
+ DFFCCD10 C0DE2B01 CCCD13C0 DB4C01AC CD15C0D9 6C01FCD8 7C017CCD 18C06F0D .oÀ.Í|.|Øü.lÙÀ.ͬ.LÛÀ.ÍÌ.+ÞÀ.Íüß 000180
+ 6B01CCAD 15C0DD3B 01FCBD11 C01100DD CD143002 18F00115 20021200 CDCD11B0 °.ÍÍ... ..ð..0.ÍÝ..À.½ü.;ÝÀ.­Ì.k 0001A0
+ C02FCD1D C03FCD1C C04FCD1B C05FCD1A C0D69C01 7CBD19C0 D88B019C BD17C0DA ÚÀ.½...ØÀ.½|..ÖÀ.Í_À.ÍOÀ.Í?À.Í/À 0001C0
+ 1AC03F0D BD012C0D CD012C1E 0DDD012C 1ECD1EC0 D0D01EC0 E8D1EC01 FCD1D01D .ÐÑü.ìÑèÀ.ÐÐÀ.Í.,.Ý..,.Í.,.½.?À. 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 2 (00000002), 512 (0200) bytes
+
+ 3D1D01D0 D8D213C0 D8D115C0 D7D116C0 D6D117C0 D6D018C0 D5D019C0 0200D4D0 ÐÔ..À.ÐÕÀ.ÐÖÀ.ÑÖÀ.Ñ×À.ÑØÀ.ÒØÐ..= 000000
+ 2BB1A2BE 66F96851 60A7490A 43FE90B0 CD02D730 403D03D2 35007D03 4CDD3D7D }=ÝL.}.5Ò.=@0×.Í°.þC.I§`Qhùf¾¢±+ 000020
+ 57B2A3AB 96E63ADA 6AA0975A EA5AA309 8A0A4BA5 B8B2744A 4B3BAAB0 B6C3BA9A .ºÃ¶°ª;KJt²¸¥K...£ZêZ..jÚ:æ.«£²W 000040
+ 3A2A3A0C 4A3A1A1C 4A4AFA1B 5A9A51BC A2A629A5 2B7A8A54 B7A2A967 552BAA7A zª+Ug©¢·T.z+¥)¦¢¼Q.Z.úJJ..:J.:*: 000060
+ F5F71C6A E71C7A8F CCA1F8A9 1C9AA90C 0A0A8A1C 0A0A7A1C 1A1A5A1C 2A2A4A0C .J**.Z...z.......©..©ø¡Ì.z.çj.÷õ 000080
+ EADAA2AF 3D1A4FD5 A341D5A2 224ED4A3 52D3A223 5ED2A264 D1A264D1 A165D0A2 ¢Ðe¡Ñd¢Ñd¢Ò^#¢ÓR£ÔN"¢ÕA£ÕO.=¯¢Úê 0000A0
+ D1A26F24 1D6A242D 4A342D4A 442D3AE2 443D2A54 2DFADBA2 DBA3E2DB A2BF3D5A Z=¿¢Ûâ£Û¢Ûú-T*=Dâ:-DJ-4J-$j.$o¢Ñ 0000C0
+ 541C8A5A C6A1A784 1C5A4ACA A1A4B40C 3A4ACCA1 A2D41CFA A0F41CFA 49D0A147 G¡ÐIú.ô.ú.Ô¢¡ÌJ:.´¤¡ÊJZ..§¡ÆZ..T 0000E0
+ 6BAEA4BA 263B7A5B B6A2B585 2B3A5BBB A2B0E42B EA5ABFA2 AC251CBA 4AC4A0AA ª.ÄJº.%¬¢¿Zê+ä°¢»[:+.µ¢¶[z;&º¤®k 000100
+ 16900265 FB665966 E2E00A44 FAC8302B 7ABDFA1C AB5C6B9C 3B9CA1A8 BF985ACA ÊZ.¿¨¡.;.k\«.ú½z+0ÈúD.àâfYfûe... 000120
+ 6C012C01 D014C014 002D015C 01D11000 6D01D3DB D3154003 DD32F00D 0312D002 .Ð...ð2Ý.@.ÓÛÓ.m..Ñ.\.-..À.Ð.,.l 000140
+ 1FC0DAEB 01BCAD1E C0DCDA01 CCBD1CC0 DDBB01EC BD1AC0DF 9B010C01 7C011C01 ...|....ßÀ.½ì.»ÝÀ.½Ì.ÚÜÀ.­¼.ëÚÀ. 000160
+ C04FCD23 C0D53B02 FCD62B02 FCD72A02 7CBD21C0 D81A028C BD20C0D9 0A02ACAD ­¬..ÙÀ ½...ØÀ!½|.*×ü.+Öü.;ÕÀ#ÍOÀ 000180
+ 6C020C4D 0E6D022C EDD16C02 4C1E0D5D 022CCD25 C0E3D35B 023CCD24 C04FBD24 $½OÀ$Í<.[ÓãÀ%Í,.]..L.lÑí,.m.M..l 0001A0
+ BD22C05F BD23C04F CD23C0D4 4B02FCD3 4C023CBD 25C02FCD 25C0E2D1 D025C0D1 ÑÀ%ÐÑâÀ%Í/À%½<.LÓü.KÔÀ#ÍOÀ#½_À"½ 0001C0
+ BD1BC0DC CB01BCBD 1DC0DAEB 01ACAD1F C0D9FB01 8CBD20C0 7FBD21C0 D72A026C l.*×À!½.À ½..ûÙÀ.­¬.ëÚÀ.½¼.ËÜÀ.½ 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 3 (00000003), 512 (0200) bytes
+
+ D312100D 01D01200 3D012C01 5C011C01 6C010C01 8B01FCBD 19C00200 DEAB01DC Ü.«Þ..À.½ü.....l...\.,.=..Ð....Ó 000000
+ 03D703E3 65FB6651 5B00B109 45CAC860 01292001 2DF00D03 DD32B04D 03D9D4DB ÛÔÙ.M°2Ý..ð-. ).`ÈÊE.±.[Qfûeã.×. 000020
+ 7D1FC0D6 E701FCD6 D8016C9D 1CC0D6AB 016C0D8D 016C2D6D 01D0D5D7 10303DED í=0.×ÕÐ.m-l...l.«ÖÀ..l.ØÖü.çÖÀ.} 000040
+ D3744DDC 3C4E4DD6 C4CDD434 024C4E5D 22C0E2D5 2402FCD5 1502FCD5 06022C5E ^,..Õü..Õü.$ÕâÀ"]NL.4ÔÍÄÖMN<ÜMtÓ 000060
+ CD1BC0D4 BC011C40 BE014CCD 1B90D7BC 0188CD1B 60DAFC1B 50DB2CBE 01C4CDE3 ãÍÄ.¾,ÛP.üÚ`.Í..¼×..ÍL.¾@..¼ÔÀ.Í 000080
+ 26C0E4D1 944DDC0C 4DDAC4CD E31B40DC 3CBE01B5 CDE21B60 DAFC1B80 D8BC0179 y.¼Ø..üÚ`.â͵.¾<Ü@.ãÍÄÚM.ÜM.ÑäÀ& 0000A0
+ 013C8D20 C03F7D21 C0D32602 FCD33502 2C2E5D24 C0E3D254 022C1E5D 25C01F4D M.À%].,.TÒãÀ$].,.5Óü.&ÓÀ!}?À .<. 0000C0
+ 8B98F503 E3040494 0D01D3D1 D416003D 1D9D014C CD1BC0D4 CB014C9D 1EC0D4F8 øÔÀ..L.ËÔÀ.ÍL...=..ÔÑÓ.....ã.õ.. 0000E0
+ C92B6A1A AA2B6A2A 9A2B6A5A 6A3B5A9A 1A6B3AEA 4DDDE365 FB664B57 B44B0946 F.K´WKfûeãÝMê:k..Z;jZj+.*j+ª.j+É 000100
+ A4252C2A 5E4AC2A2 5F5AC1A2 E2A5062C FAA5F72B 6A6ABFA2 A6E72B6A 8ABDA2A6 ¦¢½.j+禢¿jj+÷¥ú,.¥â¢ÁZ_¢ÂJ^*,%¤ 000120
+ 2A9A7BAB A2B9C62A FAB9D52A 2A9E4BAE A2A3E584 4AAEA2A3 E2442C4A 4AC3A2E5 å¢ÃJJ,D⣢®J.壢®K.**Õ¹ú*ƹ¢«{.* 000140
+ E42A8A9E 5BADA2E2 B9C62AFA B9B72A9A 9BA9A2B9 A2A6A2B9 BEE4B9A2 A6A2B999 .¹¢¦¢¹ä¾¹¢¦¢¹¢©..*·¹ú*ƹ⢭[..*ä 000160
+ CDDDA38C 0C01F2BC DC66F968 5968352D 0B471DB1 80FB4B5E 8C1A4D4A 2DEAEAB9 ¹êê-JM..^Kû.±.G.-5hYhùfܼò...£ÝÍ 000180
+ CF67250D 1C7D57CF C1D296B6 2C3C6D7A C6C3D505 9C6B6C4D C3D6D854 2CAD3DC8 È=­,TØÖÃMlk..ÕÃÆzm<,¶.ÒÁÏW}..%gÏ 0001A0
+ B0C83B01 9ABC12B0 C9C010B0 CAC1DEBB 2CCCBDCC 19B4BDCD 29840DEC 8C44D6C0 ÀÖD.ì..)ͽ´.̽Ì,»ÞÁÊ°.ÀÉ°.¼..;È° 0001C0
+ E601FBC2 D601C0C2 C7013B7C 1B003C7C 1BB0C498 01FBC579 01FBC65A 017BAC14 .¬{.ZÆû.yÅû..Ä°.|<..|;.ÇÂÀ.ÖÂû.æ 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 4 (00000004), 512 (0200) bytes
+
+ 103CEC30 00FC3010 FC4A2210 AC2402C0 E35B2000 2C0E5C20 0200B0C1 F501C0C1 ÁÀ.õÁ°.. \.,. [ãÀ.$¬."Jü.0ü.0ì<. 000000
+ C1C019B0 C1C01900 FC2B8C01 C05A6C01 C1A29D0D 2CE2DAD9 C10F03C1 3100FC31 1ü.1Á..ÁÙÚâ,..¢Á.lZÀ..+ü..ÀÁ°.ÀÁ 000020
+ B06F0C5C 01FBC5C0 16B0C4C0 16003C0C 7C013B0C 7C01C0C2 C018B02F 0C8C01C0 À.../°.ÀÂÀ.|.;.|.<..ÀÄ°.ÀÅû.\.o° 000040
+ D8C0CEC2 DAC0CDC1 DDCB1CEC BDCBC1DF AB0C1C01 FBC9C012 B0C8C013 B0C7C014 .ÀÇ°.ÀÈ°.ÀÉû...«ßÁ˽ì.ËÝÁÍÀÚÂÎÀØ 000060
+ DA148C8D 5D9B7B6C 6D88C7C3 D567C72C 3C8D64D0 C1D22936 0D1C9D42 D7C0CFC3 ÃÏÀ×B...6)ÒÁÐd.<,ÇgÕÃÇ.ml{.]...Ú 000080
+ 5C6DACDA C1DAE465 FB665964 86AD0A48 2FB8900D 5C01B19C 0C0172FC DC3DC4D4 ÔÄ=Üür...±.\..¸/H.­.dYfûeäÚÁÚ¬m\ 0000A0
+ A01DAC4D AEC6D5C6 CAC2D9C2 CDC0DBC0 DFEE3C02 E4CEC0DB C0DADE2C 9C2DAC6C l¬-.,ÞÚÀÛÀÎä.<îßÀÛÀÍÂÙÂÊÆÕÆ®M¬.. 0000C0
+ 3C51074A 56C0B00B 5BBD1DED CD4AE0DE D1DBD5BB 0B65FC66 28306723 054917C8 È.I.#g0(füe.»ÕÛÑÞàJÍí.½[.°ÀVJ.Q< 0000E0
+ D5D1E2CA D6BC7CAD CCD808CD D916CD39 E01C10AD 01D410A0 01E4D265 FA673644 D6gúeÒä...Ô.­..à9Í.ÙÍ.ØÌ­|¼ÖÊâÑÕ 000100
+ D87A4DD6 8B4DD59A 5DD3BA4D D27B9DD1 6BADD06B BDD05B0D BD4C1DFD BBD5D1CA ÊÑÕ»ý.L½.[нkЭkÑ.{ÒMºÓ].ÕM.ÖMzØ 000120
+ CBE465FB 665C67D1 120B4B62 A90001BA 01D41680 2D017AF8 9D6CDC2A 5DDA4A5D ]JÚ]*Ül.øz.-..Ô.º..©bK..Ñg\fûeäË 000140
+ 5CCEB1C6 F51C5B6C CFB1C3F8 1C2B9CCF B1C0B0CF B1BEB3CD B3B9B9C9 B7B1C1BD ½Á±·É¹¹³Í³¾±Ï°À±Ï.+.øñÏl[.õƱÎ\ 000160
+ 5DC5B1CF 651CEB5C C7B1CD85 1CCB5CC9 B1CBA51C AB5CCBB1 C9C51CFB C8D51C7B {.ÕÈû.ÅɱË\«.¥Ë±É\Ë..ͱÇ\ë.eϱÅ] 000180
+ 5DBCB1D8 D51B7B5D BEB1D6F5 1B5B5DC0 B1D4151C 3B5DC2B1 D2351CFB D1451C0B ..EÑû.5Ò±Â];..Ô±À][.õÖ±¾]{.Õر¼] 0001A0
+ B0B3B1DD 491BDB8D B5B1DE66 1BEB5DB7 B1DD851B CB5DB9B1 DBA51BAB 5DBBB19F .±»]«.¥Û±¹]Ë..ݱ·]ë.fÞ±µ.Û.Iݱ³° 0001C0
+ 54178B2D 3B85B1D9 B251199B 7DABB1DA B5B0B1DA B4B1B1DB B2B2B1DC B1B2B1DC ܱ²±Ü±²²Û±±´Ú±°µÚ±«}..Q²Ù±.;-..T 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 5 (00000005), 512 (0200) bytes
+
+ D4B2B225 B1D5B2B0 35B1D5B2 5A146B2D 8B46B1D6 B3570200 157B2D6B 65B1D7B3 ³×±ek-{...W³Ö±F.-k.Z²Õ±5°²Õ±%²²Ô 000000
+ B3BDB1D0 B2BCB2D1 B2BBB2D1 B2BAB3D2 B2B8B4D2 B3B6B5D3 B2B5B6D3 B3B315B1 ±.³³Ó¶µ²Óµ¶³Ò´¸²Ò³º²Ñ²»²Ñ²¼²Ð±½³ 000020
+ B2C2B1CB B3C1B1CC B2C1B1CC B3C0B1CD B2C0B1CE B2BFB1CE B3BEB1CF B2BEB1CF ϱ¾²Ï±¾³Î±¿²Î±À²Í±À³Ì±Á²Ì±Á³Ë±Â² 000040
+ C8B1C6B2 C7B17F2C 6B1C7B3C 5B1C8B2C 5B1C8B3C 4B1C9B2C 4B1CAB2C 3B1CFBCB Ëû.;,«.K,..K<..[,..[<{.k,.±Ç²Æ±È 000060
+ 1C0B3CCB 1C1B2CCB 1C2B2CBB 1CFBC3B2 CAB1C3B3 C9B1C4B2 C9B1C4B3 C8B1C5B2 ²Å±È³Ä±É²Ä±É³Ã±Ê²Ãû.»,+.Ë,..Ë<.. 000080
+ 69E6084C 5998C7B9 CBE4C77B 7C9B7BBB 3CCB5BDB 1CEB4BDB 1CFB3BDB 1C0B2CDB Û,..Û;û.ÛKë.Û[Ë<»{.|{Çä˹Ç.YL.æi 0000A0
+ 4ABEA2A4 E52B2A4E 4ABFA2A3 E6042C4A 1E2DDAEC D0A4CDA8 BEBFE465 FB664753 SGfûe俾¨Í¤ÐìÚ-.J,.棢¿JN*+夢¾J 0000C0
+ A6A1B6A2 A6A0B7A2 A6892B6A 8AB9A2A6 A72B5A7A BBA25F6A BCA2E2A5 D52B2A5E ^*+ե⢼j_¢»zZ+§¦¢¹.j+.¦¢·.¦¢¶¡¦ 0000E0
+ FB666F7A 4A0D0D4D 00C9944D 3EABABA6 A3A8AFA3 A5A5B2A2 A6A3B4A2 A6A2B5A2 ¢µ¢¦¢´£¦¢²¥¥£¯¨£¦««>M.É.M..Jzofû 000100
+ 24C042E2 DD1C6402 1C24CE4D 8D02D4D9 D62860AD 1080022C A002E22A C002DE65 eÞ.À*â..,...­`(ÖÙÔ..MÎ$..d.ÝâBÀ$ 000120
+ 017C24DE CD461CC0 46E2DD5C E4015C24 DECD4420 C044E2DD 3C24023C 24DECD42 BÍÞ$<.$<ÝâDÀ DÍÞ$\.ä\ÝâFÀ.FÍÞ$|. 000140
+ C04CE2DD BC2401BC 24DECD4A 14C04AE2 DD9C6401 9C24DECD 4818C048 E2DD7CA4 ¤|ÝâHÀ.HÍÞ$..d.ÝâJÀ.JÍÞ$¼.$¼ÝâLÀ 000160
+ DECDD384 CDD324DE CDD2A4CD D224DECD D1C4CDD1 24DECDD0 E4CDD024 DECD4C10 .LÍÞ$ÐÍäÐÍÞ$ÑÍÄÑÍÞ$ÒͤÒÍÞ$ÓÍ.ÓÍÞ 000180
+ D8B48C4D DFCDD704 CDD724DE CDD624CD D624DECD D544CDD5 24DECDD4 64CDD424 $ÔÍdÔÍÞ$ÕÍDÕÍÞ$ÖÍ$ÖÍÞ$×Í.×ÍßM.´Ø 0001A0
+ 4DC1DD24 DECDDC34 CC4DE2DD BC4DC5DB 24DECDDA 74AC4DE2 DD9C4DC9 D924DECD ÍÞ$ÙÉM.ÝâM¬tÚÍÞ$ÛÅM¼ÝâMÌ4ÜÍÞ$ÝÁM 0001C0
+ E9ADDA1C 01F98DDB 0C01FB6D DC0C010B 01F4DDFC 0DFD4DE2 DDEC2DED 4DE2DDDC ÜÝâMí-ìÝâMý.üÝô....Ümû..Û.ù..Ú­é 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 6 (00000006), 512 (0200) bytes
+
+ AD0A4E90 A99001D6 652D7E03 D5571D01 AFD5DFB7 02005D5D 1D0D01D9 CDD91C01 ..ÙÍÙ...]]..·ßÕ¯..WÕ.~-eÖ..©.N.­ 000000
+ C82C1BC4 ABCCB6BB B1CBB6B8 B7C9B5B2 C3C31040 FCDFC5DE C6BF65FB 66596486 .dYfûe¿ÆÞÅßü@.ÃòµÉ·¸¶Ë±»¶Ì«Ä.,È 000020
+ 4BCAB245 BFA43C4B F44BCBB2 44BFC42C 3BF44BCC B342BFD4 2C2BE46B CCB341BD ½A³Ìkä+,Ô¿B³ÌKô;,Ä¿D²ËKôK<¤¿E²ÊK 000040
+ 4BC5B349 BF642C9B F44BC6B3 48BF742C 8BF44BC8 B247FF4B C9B246BF 943C5BF4 ô[<.¿F²ÉK.G²ÈKô.,t¿H³ÆKô.,d¿I³ÅK 000060
+ B3F4BF24 2C2B4BBF 243C1B4B BF342C1B 4BBF343C 0B4BBF44 2C0B4BBF 542CABF4 ô«,T¿K.,D¿K.<4¿K.,4¿K.<$¿K+,$¿ô³ 000080
+ BDB2B7F4 4BBEB2B6 F44BBEB3 B5F44BBF B2B5F44B BFB3B4F4 4BC0B2B4 F44BC1B2 ²ÁKô´²ÀKô´³¿Kôµ²¿Kôµ³¾Kô¶²¾Kô·²½ 0000A0
+ BF942BBB 4BBFA42B AB4BFF4B BBB2B9F4 4BBBB3B8 F44BBCB2 B8F44BBC B3B7F44B Kô·³¼Kô¸²¼Kô¸³»Kô¹²»K.K«+¤¿K»+.¿ 0000C0
+ FB4BBF54 3BEB4BBF 642BEB4B BF742BDB 4BBF743B CB4BBF84 2BCB4BBF 843BBB4B K»;.¿KË+.¿KË;t¿KÛ+t¿Kë+d¿Kë;T¿Kû 0000E0
+ B1B2C3F4 4BB1B3C2 F44BB2B2 C2F44BB3 B2C1F4BF 442B0B4C BF443BFB 4BBF542B +T¿Kû;D¿L.+D¿ôÁ²³Kô²²Kô³±Kôò± 000100
+ B2C7F44B 386B4CBF 94B2C6F4 4B395B4C BFA4B2C5 F44BB0B2 C4F44BB0 B3C3F44B Kôó°KôIJ°KôŲ¤¿L[9KôƲ.¿Lk8KôDz 000120
+ B2CCF44B 24BB4CBF 44B3CAF4 4B25AB4C BF54B3C9 F44B269B 4CBF74B2 C8F4BF84 .¿ôȲt¿L.&KôɳT¿L«%KôʳD¿L»$Kô̲ 000140
+ BFB4D1F4 BFB5D0F4 BFB6CFF4 BF14B2CE F44B31DB 4CBF24B2 CDF44B32 CB4CBF34 4¿LË2KôͲ$¿LÛ1Kôβ.¿ô϶¿ôе¿ôÑ´¿ 000160
+ B7B8481D BB8BD5CA 9BD5D89B D6E6ABD6 F4BFB0D5 F41B4B4D FF2B3B4D FF3B2B4D M+;.M;+.MK.ôÕ°¿ôÖ«æÖ.ØÕ.ÊÕ.».H¸· 000180
+ BF1690DB 01B1CB66 F9685867 3D140B4F EDA0B2F4 3C2C5BCE C32F6BCD C32F7BD2 Ò{/ÃÍk/ÃÎ[,<ô².íO..=gXhùf˱.Û..¿ 0001A0
+ C2D99CC4 B99CC798 8CCA599C CC399CCE 199CD1D9 9BD49AAB D75AABDB B00A0B01 ...°Û«Z׫.Ô.ÙÑ..Î.9Ì.YÊ..Ç.¹Ä.Ù 0001C0
+ 0B9B0D4B ABD95A0B 7B0D6BAB D78AABD5 FABA3AAD BC399DBE 199DC0F9 9CC1DAAC ¬ÚÁ.ùÀ..¾.9¼­:ºúÕ«.׫k.{.ZÙ«K... 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 7 (00000007), 512 (0200) bytes
+
+ 051B01B0 16FB1DFB 07FB0DFB 18DB1D9B B0DD0200 B00FABDD 1A0BBB0D 2BABDB3A :Û«+.»..Ý«.°..Ý°..Û.û.û.û.û.°... 000000
+ 1B01B13F B211204B 2EB11310 1BB21320 4BEB113B 01B1E322 1B01B213 1B01B1E3 ã±...².."ã±.;.ëK .²...±.K .²?±.. 000020
+ 0DFBB4B0 D9B02F0B BB0DFBB0 B1DBB10A DB0D9BB1 DDB1E217 FB1D2B5E B2DFB214 .²ß²^+.û.â±Ý±..Û.±Û±°û.»./°Ù°´û. 000040
+ C69AACC4 BAACC2DA ACC0FAAC EFABD1CA ABD3AA0B 3B0D9BAB D58A0B5B 0D6B0B7B {.k.[..Õ«..;.ªÓ«ÊÑ«ï¬úÀ¬Ú¬ºÄ¬.Æ 000060
+ CBB11D90 6B01BF10 00ABB0DB 5AABD79A ABD4D99B D1FAABCE 399CCC59 9CC97AAC ¬zÉ.YÌ.9ΫúÑ.ÙÔ«.׫ZÛ°«..¿.k..±Ë 000080
+ BC1DFD0D CD3DAD3D BD3D03D3 3150FD02 D82CC08D 0265FB66 4E5B00B1 09509BC8 È.P.±.[Nfûe..À,Ø.ýP1Ó.=½=­=Í.ý.¼ 0000A0
+ 3CCD19C0 D49B015C BD18C0D5 7C016CBD 17C0D76B 018CBD15 C0D93C01 AC0D1D01 ...¬.<ÙÀ.½..k×À.½l.|ÕÀ.½\..ÔÀ.Í< 0000C0
+ 9C012CCD 1AC0E2D1 BC010C2D 0EBD019C 1ECD1BC0 E2D1D01A C0D2AC01 FCD3AB01 .«Óü.¬ÒÀ.ÐÑâÀ.Í...½.-..¼ÑâÀ.Í,.. 0000E0
+ D0DFBCCD 11C0DA3B 019CBD14 C0D86A01 7CAD17C0 D67B015C BD18C0D4 9B01FCD3 Óü..ÔÀ.½\.{ÖÀ.­|.jØÀ.½..;ÚÀ.ͼßÐ 000100
+ 57C1B001 19405E02 D531104D 03AC019E 011B5001 1F200122 000124E0 2DBDCDDC Üͽ-à$..". ..P....¬.M.1Õ.^@..°ÁW 000120
+ 9D2090DB 39027AAD 26A0D3AA 02ABFB02 DD3570CD 039C0166 F9845967 3D140B51 Q..=gY.ùf...Íp5Ý.û«.ªÓ.&­z.9Û. . 000140
+ 1F90DFD9 010901BA 011A019A 013A017A 016A0159 01990139 01B90119 01D901F9 ù.Ù...¹.9...Y.j.z.:.....º...Ùß.. 000160
+ 02FBD17B 02FBD37A 024ABD25 B0D55A02 7AAD23A0 D81B029B AD21A0DB FA01DA9D .Ú.úÛ.!­...Ø.#­z.ZÕ°%½J.zÓû.{Ñû. 000180
+ 31002DED C231C03F D02F002D 4EFC023C 6EDC022C 8EDB029B BC02FCBA 2BB0CF9B .Ï°+ºü.¼..Û.,.Ün<.üN-./Ð?À1Âí-.1 0001A0
+ D19B02FB BC2BB0AF BC02FCB9 2DB0C82D C0E2C62F C0E204FD 02D0E3C3 31C02FD0 Ð/À1ÃãÐ.ý.âÀ/ÆâÀ-È°-¹ü.¼¯°+¼û..Ñ 0001C0
+ D113ADD9 2A3D4BD2 8AADD275 35ADD75A 1D5DADD5 6BBDD74B ADD9A7AD D37B02FB û.{Ó­§Ù­K×½kÕ­].Z×­5uÒ­.ÒK=*Ù­.Ñ 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 8 (00000008), 512 (0200) bytes
+
+ A713A026 D6831A01 7A623DA9 DF9A523D 0200AADE A9423D9C DDBA323D ACDB0A2D -.Û¬=2ºÝ.=B©Þª..=R.ß©=bz...Ö&..§ 000000
+ 3DA12390 D6230902 7A3D941D 9011D843 B9012972 3D9518A0 23D7635A 015A713D =qZ.Zc×#...=r).¹CØ....=z..#Ö.#¡= 000020
+ 4D2DF0D1 4D2D10DE D3021FDE 839C01F1 2D742D03 12DD2FB0 08AD020A 0D6D023A :.m...­.°/Ý..-t-ñ...Þ..ÓÞ.-MÑð-M 000040
+ 790B03C7 0903268D 2F50D4F7 02646D2F 30D7F602 925D2E30 D9E502B2 4D2EF0C2 Âð.M².åÙ0.]..ö×0/md.÷ÔP/.&..Ç..y 000060
+ 967B0A52 0DB97C43 C03E20CD 03D43A60 8D03D837 905D03DA 34C02D2E 03DE1F03 ..Þ..-À4Ú.].7Ø..`:Ô.Í >ÀC|¹.R.{. 000080
+ D1C0DDC0 CFC0DEC1 CDC1DEC4 C8C4DE20 60ED01D9 1BC08D01 11300165 FB675C62 b\gûe.0...À.Ù.í` ÞÄÈÄÞÁÍÁÞÀÏÀÝÀÑ 0000A0
+ 5FBDD8C0 D5C0D7C0 D67B0D7C BDD6C0D7 C0D5C0D8 5B0D9CBD D4C0DAC0 D2C0DBC0 ÀÛÀÒÀÚÀÔ½..[ØÀÕÀ×ÀÖ½|.{ÖÀ×ÀÕÀؽ_ 0000C0
+ 0D5CBDD8 C0D4C0D8 C03F0D9C 0D2C2E1D 9C0D8C3E 0D9C0DFC D3C1D8C0 D4C0D8C0 ÀØÀÔÀØÁÓü...>.....,...?ÀØÀÔÀؽ\. 0000E0
+ 0CDCADD1 C0DC2A0D BCADD3C0 D94B0D8C BDD5C0D7 6B0D7CAD D7C0D67B 0D5C0D7C |.\.{ÖÀ×­|.k×ÀÕ½..KÙÀÓ­¼.*ÜÀÑ­Ü. 000100
+ CDC012A0 CCC013B0 CAC015B0 C8C017D0 8D01DC15 F03D01C1 C8C011B0 CCC0DFFA úßÀÌ°.ÀÈÁ.=ð.Ü..Ð.ÀÈ°.ÀÊ°.ÀÌ..ÀÍ 000120
+ 9F0D3C0D ACBDD3C0 BFBDD2C0 CFBDD1C0 DD1A0DDC BDD0C0DE FB0CFCAD CFC011A0 ..ÀÏ­ü.ûÞÀнÜ..ÝÀѽÏÀÒ½¿ÀÓ½¬.<.. 000140
+ C0C1540C 6C0D1C4C C5C1D5C0 C1E2641C 4C0D7C1D 4C0D9C8E 0D4C0D9C 9EBDD4C0 ÀÔ½...L....L.|.L.dâÁÀÕÁÅL..l.TÁÀ 000160
+ 65C0CFDA 43BACEDA 42C0DBAC 2D14BCD6 C64BC2C0 D7C2C134 0C7C0D2C 4CC3C1D6 ÖÁÃL,.|.4ÁÂ×ÀÂKÆÖ¼.-¬ÛÀBÚκCÚÏÀe 000180
+ 3BB3BCB8 727BAB2B BAB0BA66 F9683B4A E3E90753 EBA0804A 03C4D4DA 851CAD4D M­..ÚÔÄ.J..ëS.éãJ;hùfº°º+«{r¸¼³; 0001A0
+ B1C398B2 C1A817E7 9B6A73BC 096B84B9 195B96B5 2A5B179B B1B3A4C2 B5040B6C l..µÂ¤³±..[*µ.[.¹.k.¼sj.ç.¨Á².ñ 0001C0
+ 4FD5AC54 CE294ED6 9CE264CD 58C78C5F A89C85CA 68998C96 C8787A8C 075B8C8F ..[..zxÈ...hÊ..¨_.ÇXÍdâ.ÖN)ÎT¬ÕO 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 9 (00000009), 512 (0200) bytes
+
+ C1C7BFCA BCCDB8D0 B6D1B4D3 B3D30200 B2D4B2D4 B1D5B045 CCB045CD B04FE4AC ¬äO°ÍE°ÌE°Õ±Ô²Ô²..ӳӴѶиͼʿÇÁ 000000
+ B4D2B5D0 B8CEBBCA BEC8C1C5 C3C3C6C0 C7BFC8BE C9BDC9BE C8BFC8BF C7C1C4C5 ÅÄÁǿȿȾɽɾȿÇÀÆÃÃÅÁȾʻθеҴ 000020
+ 7C1F186D E281D2B3 D2E2B3D3 E2B3D2E3 B4D66A0D FBD5B1D5 B0D5B1D4 B2D4B2D3 Ó²Ô²Ô±Õ°Õ±Õû.jÖ´ãÒ³âÓ³âÒ³Ò.âm..| 000040
+ 99BA5986 E88B6487 C1276748 3C5B682C 5B781C4B 980C4BA8 AC83CCF9 82CE28F8 ø(Î.ùÌ.¬¨K..K.x[,h[<Hg'Á.d.è.Yº. 000060
+ A7490A54 6090A00B EB2BB7B8 B952DB5B 3BB3C1B2 145B0C4B B0B03A8B A579AB57 W«y¥.:°°K.[.²Á³;[ÛR¹¸·+ë...`T.I§ 000080
+ 1A8B94AF A2AFA014 DA2AEA1A 4AA3ABA2 ACA3656A 4A7A6A6A 15403E65 FB665560 `Ufûe>@.jjzJje£¬¢«£J.ê*Ú..¯¢¯... 0000A0
+ 5BE343B4 A2B44535 2B4A5B4F 352B3A6B 64B2A2B3 46262B2A 7B74B1A2 B247082B +.G²¢±t{*+&F³¢²dk:+5O[J+5E´¢´Cã[ 0000C0
+ 5577A8A8 C6E4C9AA DAA4DEA2 BBD24EB6 A2B7E459 2B6A5B41 B5A2B664 2E452B5A Z+E.d¶¢µA[j+Yä·¢¶NÒ»¢Þ¤ÚªÉäƨ¨wU 0000E0
+ E0BE361D DB8BD2B1 BC1A1DBB 1BFB3C7B 7BAB7CAB C3BACBE4 65FB6759 6486AD0A .­.dYgûeä˺ë|«{{<û.»..¼±Ò.Û.6¾à 000100
+ 4CCF6A4C CFB0C414 ADC4140D FBC2240D 2B4CD2B1 C1340DFB C1430D0B 4CD4B114 .±ÔL..CÁû.4Á±ÒL+.$Âû..Ä­.Ä°ÏLjÏL 000120
+ BD4A6DC1 395DC319 5DC5F95C C7D95CC8 CA4CCAAA 4CCBAA4C CC8A4CCD 8A4CCE6A jÎL.ÍL.ÌLªËLªÊLÊÈ\ÙÇ\ùÅ].Ã]9ÁmJ½ 000140
+ 675F6486 AD0A5623 89B0AC20 70AB01BC 15001C01 C4DEAAB2 DC581B8B 7DBB6A7D }j»}..XܲªÞÄ....¼.«p ¬°.#V.­.d_g 000160
+ A53B295A BA94A0B6 3BF989BA 949D91B9 949B94B7 969799B3 9A90A2A8 AAE465FE þe䪨¢..³...·...¹...º.ù;¶..ºZ);¥ 000180
+ 344B994A B493A845 4B794AB5 94A7643B 694AB794 A5843BF9 A4944B39 4ABA93A2 ¢.ºJ9K.¤ù;.¥.·Ji;d§.µJyKE¨.´J.K4 0001A0
+ 4AAD94AF E43AE95A AE94ADF4 4AD94AB0 93AC054B B94AB194 AB243BA9 5AB294A9 ©.²Z©;$«.±J¹K.¬.°JÙJô­.®Zé:ä¯.­J 0001C0
+ 4BA693B6 654A594B A794B584 3A494BA9 94B3A43A F9B2B44A 194BAC93 B0C54AF9 ùJÅ°.¬K.J´²ù:¤³.©KI:.µ.§KYJe¶.¦K 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 10 (0000000A), 512 (0200) bytes
+
+ 3AC95BA0 94BB144A B94BA293 0200BA25 4A994BA3 94B9443A 895BA494 B7544A79 yJT·.¤[.:D¹.£K.J%º...¢K¹J.»..[É: 000000
+ 49394C9A 932F4C9B 94C1C439 095C9C94 BFD449F9 4B9E93BE E549D94B 9F94BD04 .½..KÙIå¾..KùIÔ¿..\.9ÄÁ..L/..L9I 000020
+ 9294C934 49994C94 93C84549 794C9594 C7643969 5C9694C5 7449594C 9893C494 .Ä..LYItÅ..\i9dÇ..LyIEÈ..L.I4É.. 000040
+ 94D15493 0F4D46F9 4C37E95C 47D94C48 D94C9093 CC0549B9 4C9194CB 2439A95C \©9$Ë..L¹I.Ì..LÙHLÙG\é7LùFM..TÑ. 000060
+ 89B4250E 01F7DE90 E2DC92E2 DA94E2D8 96E2D698 5F4D3149 4D42394D 33F9D244 DÒù3M9BMI1M_.Öâ.Øâ.Úâ.Üâ.Þ÷..%´. 000080
+ 4AC94A99 49C96AA9 6A699969 BA69AA89 A29CA997 A9E465FE 67848977 A20E57B7 ·W.¢w..gþeä©.©.¢.ªiºi.ij©jÉI.JÉJ 0000A0
+ 3A194AAF 93AD930F 5AAF94AC 949F053B D93AE969 B093AD93 9DF84AC9 4AB919E9 é.¹JÉJø..­.°ié:Ù;...¬.¯Z..­.¯J.: 0000C0
+ 4AAA96AA 94A5B45A B93AF9A4 C45AB94A 394AAD93 AD932F5A AD94AC94 A1E44AD9 ÙJä¡.¬.­Z/.­.­J9J¹ZĤù:¹Z´¥.ª.ªJ 0000E0
+ 94A9644A 29644A99 4AA79342 A7938F4A A899A794 A7947A99 3AF9A695 7A994A59 YJ.z.¦ù:.z.§.§.¨J..§B.§J.Jd)Jd©. 000100
+ AD343A69 343AF9AC 354A4935 4AB94AA4 9444A593 AB543A49 543AA95A A59344A5 ¥D.¥Z©:TI:T«.¥D.¤J¹J5IJ5¬ù:4i:4­ 000120
+ 3919499F 930F5B9F 94589F94 AF044A89 143AF94A A19348A1 93EF4AA2 9446A294 .¢F.¢Jï.¡H.¡Jù:..J.¯..X..[...I.9 000140
+ 934F5B9B 9395B449 394B9C94 93C44939 4B9D9393 D439F9B2 E4491959 9D94B1F4 ô±..Y.Iä²ù9Ô...K9IÄ...K9I´...[O. 000160
+ 93997449 794B9894 97844979 4B999397 9439F9B6 A4495959 9994B5B4 3959499B .IY9´µ..YYI¤¶ù9....KyI....KyIt.. 000180
+ 94BB5439 B9499593 AF4B9694 99554999 4B969499 7439994B 97939974 39895B97 .[.9t...K.9t...K.IU...K¯..I¹9T». 0001A0
+ 49D95991 94BD2449 D9499393 BD3439D9 499393BC 3539D949 9394BB44 49B94994 .I¹ID»..IÙ95¼..IÙ94½..IÙI$½..YÙI 0001C0
+ A16594C1 7494A174 94C18493 A184930F 4C90949F 0449F94B 91939F14 39F9BE15 .¾ù9....KùI....L...¡..Á.t¡.tÁ.e¡ 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 11 (0000000B), 512 (0200) bytes
+
+ 2494C534 94A53494 C5440200 93A54493 4F4C4539 5A44394C 36394A36 F9C26594 .eÂù6J96L9DZ9ELO.D¥...DÅ.4¥.4Å.$ 000000
+ 95E2CA96 AB96C997 A997E2C8 1494A799 C71494A7 2493C724 93A72493 C62593A7 §.%Æ.$§.$Ç.$§..Ç.§..Èâ.©.É.«.Êâ. 000020
+ AD0A5831 81AE544B D4555BD3 366BE2D2 188BE2D0 91AF91E3 CE93AD93 E2CC95AB «.Ìâ.­.Îã.¯.Ðâ..Òâk6Ó[UÔKT®.1X.­ 000040
+ 94AFA75A D90AA95A A92AA95A 797A698A 29DA29DA 9969BAB9 4A2E65FE 665F6486 .d_fþe.J¹ºi.Ú)Ú).izyZ©*©Z©.ÙZ§¯. 000060
+ 59A95BA1 95B9344A 895BA395 B6554A69 4BA695B4 755A394B A994B295 5A096BAA ªk.Z.².©K9Zu´.¦KiJU¶.£[.J4¹.¡[©Y 000080
+ 956F5C95 95C57449 495C9795 C29559F9 C0B559F9 4B9D94BE D559C95B 9F94BCF5 õ¼..[ÉYÕ¾..KùYµÀùY.Â..\IItÅ..\o. 0000A0
+ 9D395D41 295D5219 4D44095D 54F94C56 D95C47C9 5C58B94C 9194CA15 59895C93 .\.Y.Ê..L¹X\ÉG\ÙVLùT].DM.R])A]9. 0000C0
+ D19551D3 99D598D5 97D796D7 95D995D9 94D995D9 94D995D9 95D994D8 966F8D59 Y.o.Ø.Ù.Ù.Ù.Ù.Ù.Ù.Ù.×.×.Õ.Õ.ÓQ.Ñ 0000E0
+ C6949475 5C3949C9 9492955C 1949CB95 58CC9457 CD9546CF 9455CF95 53D19552 R.ÑS.ÏU.ÏF.ÍW.ÌX.ËI.\...ÉI9\u..Æ 000100
+ B55BF949 BD949ED5 5BD949BF 959B054C A959C195 99344C89 59C39597 545C5959 YY\T..ÃY.L4..ÁY©L...¿IÙ[Õ..½Iù[µ 000120
+ 5AB095A9 155B994A B395A745 4B695AB5 95A5655B 395AB795 A3945B19 5ABA94A0 ..ºZ.[.£.·Z9[e¥.µZiKE§.³J.[.©.°Z 000140
+ 93A394B2 90A595B1 784A296B A895B1A5 5AF95AAC 94AFD45A D95AAE94 ACF55AB9 ¹Zõ¬.®ZÙZÔ¯.¬ZùZ¥±.¨k)Jx±.¥.².£. 000160
+ 9B91A2A9 ABE465FF 66616486 AD0A59CD 88ABA3A6 E4919DAA 9C9B98AE 96A095B1 ±...®...ª..䦣«.ÍY.­.daf.eä«©¢.. 000180
+ A8554B89 4AB695A6 755B496A B894A387 5B198AB9 94A091B8 959D94B6 979899B3 ³...¶...¸...¹..[.£.¸jI[u¦.¶J.KU¨ 0001A0
+ 295BAB94 B2C45A09 5BAD95AF F44AE95A AF95AC15 4BC95AB1 95AA354B A94AB495 .´J©K5ª.±ZÉK.¬.¯ZéJô¯.­[.ZIJ.«[) 0001C0
+ 95BC154A C94BA295 BA355A89 5BA594B8 645A695B A794B684 5A495BA9 94B4A45A Z¤´.©[IZ.¶.§[iZd¸.¥[.Z5º.¢KÉJ.¼. 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 12 (0000000C), 512 (0200) bytes
+
+ 5C9794C5 8559494C 02009A95 C2B54929 4C9C95C0 D549094C 9E95BEF5 49E94BA0 .KéIõ¾..L.IÕÀ..L)IµÂ....LIY.Å..\ 000000
+ 95D07494 CF7595CE 0459C95C 9194CC24 59A95C93 94CA4459 895C9594 C7655969 iYeÇ..\.YDÊ..\©Y$Ì..\ÉY.Î.uÏ.tÐ. 000020
+ ADE4CC99 D895DB93 A9BE5DF9 D997D898 D699D515 95D42594 D33595D2 5494D155 UÑ.TÒ.5Ó.%Ô..Õ.Ö.Ø.Ùù]¾©.Û.Ø.Ìä­ 000040
+ 6BB1C8B2 256B4C5B B1C4B724 FBCB4B13 3014303E 65F96642 5179B408 5A1FA1A4 ¤¡.Z.´yQBfùe>0.0.KËû$·Ä±[Lk%²È±k 000060
+ C9A6B2CA A6B2C997 B2CAA6B1 CA97B2CA 97B1CA88 B2C989B1 C97AB2C8 B0268B1C ..&°È²zɱ.ɲ.ʱ.ʲ.ʱ¦Ê².ɲ¦Ê²¦É 000080
+ 6B4CB5B1 C7442B7B 4CB3B2C7 351B8B5C B2B2C825 1B9B5CB1 B2C9151B 9B6CB0B2 ²°l...ɲ±\..%Ȳ²\..5Dz³L{+DDZµLk 0000A0
+ B1DAB2DA B1DAB2DA B1DAB2D9 B2DAB1C4 742B4B4C B7B1C564 2B5B4CB6 B1C6542B +TƱ¶L[+dű·LK+tıڲٲڱڲڱڲڱ 0000C0
+ B1DAB2DA B1DAB2DA B1DAB2D9 B2DAB1DA B2DAB1DA B2DAB1DA B2DAB1DA B2D9B2DA Ú²Ù²Ú±Ú²Ú±Ú²Ú±Ú²Ú±Ú²Ù²Ú±Ú²Ú±Ú²Ú± 0000E0
+ B6542C6B 4BC4B2B7 441C8B4B C3B2B834 1C9B4BC2 B2DAB1DA B2D9B2DA B1DAB2DA Ú²Ú±Ú²Ù²Ú±Ú²ÂK..4¸²ÃK..D·²ÄKk,T¶ 000100
+ 2B4BC9B2 B2842C3B 4BC8B1B4 742C4B4B C7B1B465 2C4B5BC6 B1B5642C 5B4BC6B1 ±ÆK[,dµ±Æ[K,e´±ÇKK,t´±ÈK;,.²²ÉK+ 000120
+ 87CBB277 CCB178CB B268CBB2 9FA62CAB B51C0B5B CAB2B0A5 1C1B5BC9 B2B1A41C .¤±²É[..¥°²Ê[..µ«,¦.²Ëh²Ëx±Ìw²Ë. 000140
+ 4201C30B 2C3BB7C5 B1546B2C 4BB3C8B1 159B2C4B B1C9B2A5 CBB196CB B296CBB1 ±Ë.²Ë.±Ë¥²É±K,..±È³K,kT±Å·;,.Ã.B 000160
+ F59DD315 01096D14 90881690 BD01D421 90D641FA 433B434C 1F0761B3 C05201E3 ã.RÀ³a..LC;CúAÖ.!Ô.½.....m...Ó.õ 000180
+ AD4FADD8 FCD47ACD 5F9DD75C 9DD86B9D D8799DD9 889DDBA4 9DD9B58D D9D48DD6 Ö.ÔÙ.µÙ.¤Û..Ù.yØ.kØ.\×._ÍzÔüØ­O­ 0001A0
+ BDD82ABD DACAD0DB 9AD1DD4A D310E03D 01DA1740 DD015A4E 02CA4DD7 AA8DD59A .Õ.ª×MÊ.NZ.Ý@.Ú.=à.ÓJÝÑ.ÛÐÊÚ½*ؽ 0001C0
+ DC1BE284 CAADD1BA BDD1BAAD D2AABDD2 9ABDD39A ADD48AAD D57AADD6 5ABDD74A J×½ZÖ­zÕ­.Ô­.Ó½.Ò½ªÒ­ºÑ½ºÑ­Ê.â.Ü 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 13 (0000000D), 512 (0200) bytes
+
+ 44A633D6 4A830200 2973BD42 089DBDF1 84BCAD41 C8DBD2B8 DCE2D2A8 DDE2D2A8 ¨ÒâݨÒâܸÒÛÈA­¼.ñ½..B½s)...JÖ3¦D 000000
+ E90762A8 B070969D D73B3D2D 0D0D7DCD D26AB759 A248AC48 A436D25B 645943BD ½CYd[Ò6¤H¬H¢Y·jÒÍ}..-=;×..p°¨b.é 000020
+ 1A5DAC4A ADC2CA01 0AED1CB0 1B00AC01 C218804C 2E01C317 50C367FD 69424AE3 ãJBiýgÃP.Ã..L..Â.¬..°.í..Ê­J¬]. 000040
+ 9CD0C0C6 F81C7C8C CDC2C8B8 4CA1C998 4CA2CA59 5CA3CC28 6CA4CD8A 67FA9C8C ..úg.ͤl(Ì£\YÊ¢L.É¡L¸ÈÂÍ.|.øÆÀÐ. 000060
+ AAE37BAD EBABD74A 0EACD62A 1E9CD6FA C259AD3F 8CD53A9C D44A8CD3 5B8CD25B [Ò.[Ó.JÔ.:Õ.?­YÂúÖ..*Ö¬.J׫ë­{㪠000080
+ D0C0C528 BDC429BD C448ADC3 49ADC259 AD1FACD5 1A9CD6FA C06AADBF 6BADABD7 ׫­k¿­jÀúÖ..Õ¬.­Y­IíHĽ)Ľ(ÅÀÐ 0000A0
+ 9D0C5CCE 8AA7C59C C285B68C C674A68C C854978C CB43878C CD23788C CE14688C .h.Î.x#Í..CË..TÈ.¦tÆ.¶.Â.ŧ.Î\.. 0000C0
+ C6658CC8 268CCC88 E9AC3C5D 8CADCC41 FC43323B B5540663 7BB0CC99 01C5C304 .ÃÅ..Ì°{c.Tµ;2CüAÌ­.]<¬é.Ì.&È.eÆ 0000E0
+ 59DAAC04 CC9C5FC0 CBF906BC 8CB7CB98 B99C89CC B8E48CC0 C58CC2A5 8CC4858C ..Ä.¥Â.ÅÀ.ä¸Ì..¹.Ë·.¼.ùËÀ_.Ì.¬ÚY 000100
+ 79349D46 D34A4FD5 FADCDAAD CFBDE2DC FADCBBBE ADE3DBBB AD47D15A F8ACA4CE Τ¬øZÑG­»Ûã­¾»ÜúÜâ½Ï­ÚÜúÕOJÓF.4y 000120
+ 9D0C5DB8 CC15ACC9 549CC774 9CC5A48C C3C48CC2 C49CC0E4 9C3BD099 04AD48D1 ÑH­..Ð;.äÀ.ÄÂ.ÄÃ.¤Å.tÇ.Tɬ.̸].. 000140
+ CE01BB01 C01A208C 01C8E412 307C0175 0167FC69 424AE3E9 0764AAB0 C5995D3C <].Å°ªd.éãJBiüg.u.|0.äÈ.. .À.».Î 000160
+ CD882CBC 8CC91A94 8CCA2A65 8CCB4A25 9CCC5A87 EAAC970C AD592CAD C169ADD0 ЭiÁ­,Y­..¬ê.ZÌ.%JË.e*Ê...É.¼,.Í 000180
+ FAC06A9D 1FACD51A ACD5F9C2 4A9DC34A 8DC43A9D C42B8DC5 C0D0680C FC8CC7C1 ÁÇ.ü.hÐÀÅ.+Ä.:Ä.JÃ.JÂùÕ¬.Õ¬..jÀú 0001A0
+ ACD439AC D538ACD5 F9C26A9D 1FACD62A 0EACD74A BE7ABDEB AAD73ABE 6ABDABD6 Ö«½j¾:תë½z¾J׬.*Ö¬..jÂùÕ¬8Õ¬9Ô¬ 0001C0
+ 8CC2C853 C5692C2C 948CC7C0 41CB783C DC8CC7C1 CF680C0C 9DC5C0D1 58BCD348 HÓ¼XÑÀÅ...hÏÁÇ.Ü<xËAÀÇ..,,iÅSÈÂ. 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 14 (0000000E), 512 (0200) bytes
+
+ ADCA41FC 02004332 3BB55406 6578B0AA C2B98CAC C5C7C898 5C8C6C87 3A8C5C25 %\.:.l.\.ÈÇŬ.¹Âª°xe.Tµ;2C..üAÊ­ 000000
+ C99CA8CB A8A98C0F 9CC8288C C8379CC6 579CC477 9CC2A78C 7BCD7908 8D4C4D9C .ML..yÍ{.§Â.wÄ.WÆ.7È.(È...©¨Ë¨.É 000020
+ ADDDD9AD E2DCCBAD E2DCE98F 10AD31BE D02AFAAC E2A3CFF9 95CE69DA 9CA6CD88 .ͦ.ÚiÎ.ùÏ£â¬ú*о1­..éÜâ­ËÜâ­ÙÝ­ 000040
+ C8838CC6 A38CC4B4 8CC2D48C C0F48C4B CF99149D 48D27834 9D6F449D 44D54954 TIÕD.Do.4xÒH...ÏK.ôÀ.ÔÂ.´Ä.£Æ..È 000060
+ D85C0C2D 4C8DD168 FD692C29 3D5A0466 41B0C5A9 4D4C8D0C 6DB7CD14 9CCB449C .DË..Í·m..LM©Å°Af.Z=),iýhÑ.L-.\Ø 000080
+ ADC226AC C1189CC1 0A9CC0C0 9AC10F9C 29FCC098 C39B58AC 88C68988 6C79CB66 fËyl..Æ.¬X.Ã.Àü)..Á.ÀÀ..Á..Á¬&­ 0000A0
+ 87ABB940 FC603C43 4C1F0767 C9A05B4D 9E3C3C0D 5CAD17E0 C7D7E4CC AAECD669 iÖìªÌä×Çà.­\.<<.M[.Ég..LC<`ü@¹«. 0000C0
+ 148BB798 068BB788 985A8B89 183B8B8A 56838AB1 38576939 4B9BB9B6 B1B2B5BA ºµ²±¶¹.K9iW8±..V..;...Z..·...·.. 0000E0
+ BA9AABB9 B99BB8BA ABE2B6B0 BBB0E8B6 BAABE2B8 B99BB99A ABBA999B CF8BB998 .¹.Ï..º«.¹.¹¸â«º¶è°»°¶â«º¸.¹¹«.º 000100
+ 3DC9AA64 5C7B449C 5B339C96 32C3A8B1 C1389BC1 588BC078 8BEF8BB9 C89BB9F9 ù¹.ȹ.ï.xÀ.XÁ.8Á±¨Ã2..3[.D{\dªÉ= 000120
+ 7CB1B5BC 382B5DFB 8CEB9CEB ACDBBCBB EC9B2C5C 8C9DDAB7 7DDBC65D E2DD44DE ÞDÝâ]ÆÛ}·Ú..\,.컼۬ë.ë.û]+8¼µ±| 000140
+ 77D77C5F F77C3F17 7DE682D0 27F87C74 CF47E86C 95CC67B8 7CA7C996 7A6C2A2B +*lz.ɧ|¸gÌ.lèGÏt|ø'Ð.æ}.?|÷_|×w 000160
+ 62A0BDB3 CFBBC8C1 C2B0B1B0 BD999BBA D88BB718 8CB4577C B2777CB0 977C79CB Ëy|.°|w²|W´..·.غ..½°±°ÂÁȻϳ½.b 000180
+ C3B5B06A ACB3EAAD C1EE0DDB 1DCB3DAB 9D4B4E4D 9B5DB467 FD68434A E3E90768 h.éãJChýg´].MNK.«=Ë.Û.îÁ­ê³¬j°µÃ 0001A0
+ A1BBA93B A2BB9A3B A2BC893B A3BC6A3B A4BD494B A5BE1A4B A6BFB057 A8C1B9A9 ©¹Á¨W°¿¦K.¾¥KI½¤;j¼£;.¼¢;.»¢;©»¡ 0001C0
+ 8EB3BCB3 B6B1BEB1 B80AACCA 9EABBFB0 E3B9EA1B 2BAE9BBD B2BACA2B A1BABA3B ;ºº¡+ʺ²½.®+.ê¹ã°¿«.ʬ.¸±¾±¶³¼³. 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 15 (0000000F), 512 (0200) bytes
+
+ 02600200 D978ADD5 3C1D5D3E CDD57A8D D9A663FD 641D25F1 F403692C C0C3374C L7ÃÀ,i.ôñ%.dýc¦Ù.zÕÍ>].<Õ­xÙ..`. 000000
+ DB630782 22293D5A 046A48C0 8470D1D3 5CAD22E0 D65BCDD4 D1D2D7E4 291D5D70 p].)ä×ÒÑÔÍ[Öà"­\ÓÑp.ÀHj.Z=)"..cÛ 000020
+ 6DA3DB37 E0ABCDD9 D1D7D8D0 E4D3D5E5 2D00E68D DCAACDD8 D1E5D8AC ADDCE86D mèÜ­¬ØåÑØͪÜ.æ.-åÕÓäÐØ×ÑÙÍ«à7Û£m 000040
+ B0309DD9 D1D5D5D1 77C7B796 B787B769 B75AA83C A93CB82C B9FCA1AC 92D13829 )8Ñ.¬¡ü¹,¸<©<¨Z·i·.·.·ÇwÑÕÕÑÙ.0° 000060
+ C34AAE01 1AED1AB0 19008C01 C216804C 0E01C315 50C367FD 68404698 84076BC8 Èk...F@hýgÃP.Ã..L..Â....°.í..®JÃ 000080
+ 45ACD455 ACD365AC D275ACD0 77ACCF87 ACCE88AC CC7BACC9 C2C76A6C 6CACC1CE ÎÁ¬lljÇÂɬ{̬.ά.ϬwЬuÒ¬eÓ¬UÔ¬E 0000A0
+ 4CAABDA5 DB69CA7D A7DC86CA 5DA9DBA5 AA5DABD9 05ACD815 ACD725AC D635ACD5 Õ¬5Ö¬%׬.ج.Ù«]ª¥Û©]Ê.ܧ}ÊiÛ¥½ªL 0000C0
+ 4ABDABD5 9B5B0D7C C0D66BC1 D6C0247C BD338CBD 418C5D1C 9A3D2C9A 2D3CAA0D .ª<-.,=..].A½.3½|$ÀÖÁkÖÀ|.[.Õ«½J 0000E0
+ EA0C4CAC CF4BACCF C0C30ABD C30A0D2C ACD12BAC D21BACD2 C0C03ABD C03A0DBC ¼.:À½:ÀÀÒ¬.Ò¬+Ѭ,..ý.ÃÀϬKϬL.ê 000100
+ 0C6C2C9C ACC8C1C9 9A0C9CAC CAC0C8FA CBC0C7CA BCC7CA0C 6CACCD6B ACCDC0C5 ÅÀͬkͬl.ÊǼÊÇÀËúÈÀʬ...ÉÁȬ.,l. 000120
+ 6BCDD5D1 D3D7E42A 2D5DD267 FD681E25 F1F4036C 1CC0006D D2E4765C 2C4C3C8C .<L,\väÒm.À.l.ôñ%.hýgÒ]-*ä×ÓÑÕÍk 000140
+ D7D7D3D8 D32BFDAD DE1A5DD2 40FD4168 6FD4DE0B 6D7CC089 80D1D46C AD49E0D7 ×àI­lÔÑ..À|m.ÞÔohAý@Ò].Þ­ý+ÓØÓ×× 000160
+ D1D64A3D A7D443D7 D1294D99 D254D7D2 CAB4CA64 D7D37B15 BD57785D 7D4D7D9D .}M}]xW½.{Ó×dÊ´ÊÒ×TÒ.M)Ñ×CÔ§=JÖÑ 000180
+ D8AA2DA2 DA128AAD D9239A3D A1D9893D 94D8238B ADD7437A 3DC2D869 3D96D633 3Ö.=iØÂ=zC×­.#Ø.=.Ù¡=.#Ù­..Ú¢-ªØ 0001A0
+ DAD1DAD1 D4CCCDDC 6CADDEEA AD18E0D7 DABDDD3B 7EADDCCC CDE2D8B9 3D91DBD0 ÐÛ.=¹ØâÍÌÜ­~;ݽÚ×à.­êÞ­lÜÍÌÔÑÚÑÚ 0001C0
+ 85D7D5D7 797D3DBD D2DF1A5D D240FD41 434AE3E9 076E54C0 11701170 11408ED1 Ñ.@.p.p.ÀTn.éãJCAý@Ò].ßÒ½=}y×Õ×. 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 16 (00000010), 512 (0200) bytes
+
+ 0200D913 9A9DD823 8BADD723 8C9DD633 D1D64A3D 741D9DD2 54D7D2CA 64D7D37B {Ó×dÊÒ×TÒ..t=JÖÑ3Ö..#×­.#Ø...Ù.. 000000
+ 7011408E D1DAD1D4 CCCDD6EA AD18E0D7 DABDE3D7 CACDE2D8 B90D8DAD DA128AAD ­..Ú­..¹ØâÍÊ×ã½Ú×à.­êÖÍÌÔÑÚÑ.@.p 000020
+ CAB77CC8 D78CC408 7DC2379D 98D6CADB C411A0CC 41FC433A 434C1F07 6F81B011 .°.o..LC:CüAÌ..ÄÛÊÖ..7Â}.Ä.×È|·Ê 000040
+ D6FA95D6 F987D688 499D89D4 F88BD218 7CD2278C D0388CCE 587CCE77 7CCC977C |.Ì|wÎ|XÎ.8Ð.'Ò|.Ò.øÔ..I.Ö.ùÖ.úÖ 000060
+ D2B8299D 99D4F9A7 D46A699D A5D62A3E 6BBDA2D8 1AE38BBD EBA1D84A 3E899DA4 ¤..>JØ¡ë½.ã.Ø¢½k>*Ö¥.ijÔ§ùÔ..)¸Ò 000080
+ CAD68929 9DC0F98C C4D87CC8 B77CCA97 7CCC777C CE578CCE 388CD018 9CD0098C ..Ð..Ð.8Î.WÎ|wÌ|.Ê|·È|ØÄ.ùÀ.).ÖÊ 0000A0
+ C8C38A67 C8C5C988 7C5CACC3 CF2A5CC3 40FD5E42 4AE3E907 70ABB0CC 0A01C6DA ÚÆ..Ì°«p.éãJB^ý@Ã\*Ïì\|.ÉÅÈg.ÃÈ 0000C0
+ D15B9CD1 5BACCFC0 C6DA1C7C 9CCCC3C7 A94C116C 9CC824C8 C04A5C83 2C9CC146 FÁ.,.\JÀÈ$È.l.L©ÇÃÌ.|.ÚÆÀϬ[Ñ.[Ñ 0000E0
+ 3ABE7AAD BAD7BABE 7AADBBD6 3A0EACD6 0ABCD5FA C15AAD2F ACD4FAC3 3AAD4FAC ¬O­:ÃúÔ¬/­ZÁúÕ¼.Ö¬.:Ö»­z¾º×º­z¾: 000100
+ ACD04BAC D14BACD2 3AACD32A BCD32AAC D41ABCD4 1AACD5FA C05BADC0 6AADBBD6 Ö»­jÀ­[ÀúÕ¬.Ô¼.Ô¬*Ó¼*Ó¬:Ò¬KѬKЬ 000120
+ 7CEABC77 A5CC1A5C A4CB594C A3CA794C A2C9A93C A1C8C91C 7C9CCDC1 C6F90C5C \.ùÆÁÍ.|.ÉÈ¡<©É¢LyÊ£LYˤ\.Ì¥w¼ê| 000140
+ 9CCC40FC 5E424697 840771AB B0D8D2E4 10209C01 C01BA0C8 6E9DC12A 5D9C0A9D ...]*Á.nÈ..À.. .äÒØ°«q...FB^ü@Ì. 000160
+ 7C34CB89 7C35C999 6C37C7A9 6C48C4B9 6C49C1D9 5C6BB7CE 158C0C5D C3C4D274 tÒÄÃ]...ηk\ÙÁIl¹ÄHl©Ç7l.É5|.Ë4| 000180
+ C05AAD1F ACD41BAC D42ABCD2 2BBCD23A 0C0CAD4F 8C41CE5A 8C32CE69 8C42CC79 yÌB.iÎ2.ZÎA.O­..:Ò¼+Ò¼*Ô¬.Ô¬.­ZÀ 0001A0
+ C25AAD1F ACD5FBC0 6AADC06A BDE3ABD7 BA7ABDEB AAD7BA6A BDE2ABD6 FAC05ABD ½ZÀúÖ«â½jº×ªë½zº×«ã½jÀ­jÀûÕ¬.­Z 0001C0
+ 3A749CC9 2A949CC8 1AB49CC7 C2CC6A1C ECACC5C0 D0590C0C ADC42BAD 3FACD4FA úÔ¬?­+Ä­..YÐÀŬì.jÌÂÇ.´.È..*É.t: 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 17 (00000011), 512 (0200) bytes
+
+ 4D0E01C2 1900BC01 8AEC1CA0 C259AD4B 1CAD98FC AC67A8CD 5A159CCC 4A44ACCA ʬDJÌ..Zͨg¬ü.­.K­YÂ..ì..¼..Â..M 000000
+ 47741D78 54D76256 763DD277 4D9CD27C 5BD240FD 412D341F 8A057245 C0200200 .. ÀEr...4-Aý@Ò[|Ò.MwÒ=vVb×Tx.tG 000020
+ 5E014B4E 012C1E3D D3CC070D BDC9D0BA 3AA1BA3A B1B939C2 B848126D 7B34D791 .×4{m.H¸Â9¹±:º¡:ºÐɽ..ÌÓ=.,.NK.^ 000040
+ 084CA41C 3C574C2C BBC341FC 432B3461 9E057397 B0C01440 9E2D3D01 5C016A01 .j.\.=-.@.À°.s..a4+CüAû,LW<.¤L. 000060
+ F844D047 F57C4FF5 6C5FE66C 65CD66C7 6C76CC75 A86C97C8 866A6CB9 C3A72597 .%§Ã¹lj.È.l¨uÌvlÇfÍelæ_lõO|õGÐDø 000080
+ CEC5D0C4 D1C4D0C4 D0C4D0C5 CFC7CDCA CACEC5D2 C2D3C0D5 5AD4AC44 CEF944CF ÏDùÎD¬ÔZÕÀÓÂÒÅÎÊÊÍÇÏÅÐÄÐÄÐÄÑÄÐÅÎ 0000A0
+ 1816FDC2 D2E2C1D3 1F2CFDC2 D1C2D2C2 D1140A4D B1D4C0D4 C1D2C5CF C8CCCCC8 ÈÌÌÈÏÅÒÁÔÀÔ±M..ÑÂÒÂÑÂý,.ÓÁâÒÂý.. 0000C0
+ BCA3C939 98794677 C2466566 5C6265C8 1546A6BC 63CC3AE5 9C62CE29 F68C61D0 Ða.ö)Îb.å:Ìc¼¦F.Èeb\feFÂwFy.9É£¼ 0000E0
+ ADD4F9D5 F8D6277E 6DE2D855 9E4DE7C5 5BFE5D2A 341F8A05 744DB040 ACC3025C \.ì@°Mt...4*]þ[ÅçM.UØâm~'ÖøÕùÔ­ 000100
+ C3339CC2 34AC1F4C C4193CC5 094CC51A ECD43AED C2DBE273 7DD5CFC1 D1C0D23B ;ÒÀÑÁÏÕ}sâÛÂí:Ôì.ÅL.Å<.ÄL.¬4Â.3Ã 000120
+ 40FD4243 4AE3E907 755DC08A D4C1D0C4 CD54AA3C 99C8B369 4CABC513 9CC414AC ¬.Ä..Å«Li³È.<ªTÍÄÐÁÔ.À]u.éãJCBý@ 000140
+ D7DBADE3 D7EAAD17 E0D7DBBD D6CCCDD5 D1DAD1D3 D7D4D7E4 2A9D2D2D 5D1350D2 ÒP.]--.*ä×Ô×ÓÑÚÑÕÍÌÖ½Û×à.­ê×ã­Û× 000160
+ D4781D3D 639DD83C 738DD92B 839DD91A 939DD91A B29DD8D0 DB89CDDC 89CDDCFA úÜÍ.ÜÍ.ÛÐØ.².Ù...Ù..+Ù.s<Ø.c=.xÔ 000180
+ 3FFE4141 46988407 768CB8AA D0BA7DAD D4D7D788 5D7D7D85 3B7D5D14 9DD2D744 D×Ò..]};.}}].××Ô­}ºÐª¸.v...FAAþ? 0001A0
+ BCCED4AC CDD5BCCC F4ACBF5C CF9B6CD0 FAC7F9BC C5DB1C1C 4CAC3C8C CAC2D1E4 äÑÂÊ.<¬L..ÛżùÇúÐl.Ï\¿¬ô̼ÕͬÔμ 0001C0
+ 44BCD654 AC5F4DC6 4B4DC7FA D384BCD2 94ACD195 BCD0A4BC D0B4ACCF B5BCCEC4 ÄμµÏ¬´Ð¼¤Ð¼.Ѭ.Ò¼.ÓúÇMKÆM_¬TÖ¼D 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 18 (00000012), 512 (0200) bytes
+
+ 0B0174FA 5DB7DE84 EB4DA9DD 95CB4DBA DCB4BA5D BBDA14AC 9F5DC18B 4DC3FAD7 ×úÃM.Á].¬.Ú»]º´ÜºMË.Ý©Më.Þ·]út.. 000000
+ 90E21BB0 E219102C 7E01C316 40A15F01 244B0134 FA1340B4 1240A51F 02000164 d....¥@.´@.ú4.K$._¡@.Ã.~,..â°.â. 000020
+ 0C7C0C1C 4C5C3C5C 3C7CCBF9 5CCFE43F FE415B60 A7490A77 0EB9D225 FE01F71D .÷.þ%Ò¹.w.I§`[Aþ?äÏ\ùË|<\<\L..|. 000040
+ ACC9AB4C CBAAACCA C4ACC99A 5CCC9ABC C8C5ACCA 7A7CCC9A ACC6B9AC C93B0C9C ..;ɬ¹Æ¬.Ì|zʬÅȼ.Ì\.ɬÄʬªËL«É¬ 000060
+ 6CACCF74 1C6CBCCE 741C7CAC CE84BCC8 DA5CC88B BCCC94BC C9CA4CCA 9AACCBA5 ¥Ë¬.ÊLÊɼ.̼.È\Úȼ.ά|.tμl.tϬl 000080
+ 24BCD234 AC43C22B 4DC41A35 ACD244AC 41C41A4D C51A44BC D0642C5C ACD0641C .dЬ\,dмD.ÅM.ÄA¬DÒ¬5.ÄM+ÂC¬4Ò¼$ 0000A0
+ 7AA46B4D AB47ABD6 04AC55AB D505AC45 C04B4DC1 5A14ACD4 24AC53C1 3A5DC23A :Â]:ÁS¬$Ô¬.ZÁMKÀE¬.Õ«U¬.Ö«G«Mk¤z 0000C0
+ A64BA6DB 74BA64AB 4DA74BA7 DA849A84 9A5DA849 B8D8949A 948A4DAA 47AAD7A5 ¥×ªGªM....ظI¨]....Ú§K§M«dºtÛ¦K¦ 0000E0
+ A1DF253A 4CB2DE34 3A4CB2DE 441A5CA3 DE441A4C A4DD541A 4CB4DC64 BA55CA4D MÊUºdÜ´L.TݤL.DÞ£\.DÞ²L:4Þ²L:%ß¡ 000100
+ 019BBC4F 01C0C7C0 13107C1C FC12205C 2C1C01C3 C5C31040 A1C5140A 01243A5C \:$...Å¡@.ÃÅÃ..,\ .ü.|..ÀÇÀ.O¼.. 000120
+ 40454698 840778B3 B0CFF55C AF01D66C 9F01D77C 1880CBF8 1790CBF9 16A0C95A ZÉ..ùË..øË..|×..lÖ.¯\õÏ°³x...FE@ 000140
+ BCD865BC D6660C4C 7DC73B8D C80BADC8 C0CDC1C6 C2C8C6C3 C6C1CD1B 4D1E3F00 .?.M.ÍÁÆÃÆÈÂÆÁÍÀÈ­.È.;Ç}L.fÖ¼eؼ 000160
+ 50B31550 043C0165 3B01751B 0185C0DF A5FB4D0B DC5DC0CB 5DC2BB4D C3C0D945 EÙÀÃM»Â]ËÀ]Ü.Mû¥ßÀ...u.;e.<.P.³P 000180
+ 1A20CC01 C11C00EC 01FB01EB 01C01EB0 1FB01D10 BC01C21B 309C01C5 1750B217 .²P.Å..0.Â.¼..°.°.À.ë.û.ì..Á.Ì . 0001A0
+ BDC1D5BD 5BDEC05A DF9B1501 7B2501C0 5613B055 15B05316 002C8401 1B9501C3 Ã.....,..S°.U°.VÀ.%{...ßZÀÞ[½ÕÁ½ 0001C0
+ C0CADA0C AC8CD0AB 7CD29B6C D3C0C855 BDC775BD C6750D4C 5CD93B5C DAC0C2B5 µÂÀÚ\;Ù\L.uƽuǽUÈÀÓl.Ò|«Ð.¬.ÚÊÀ 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 19 (00000013), 512 (0200) bytes
+
+ 4C9C4C8C CAC2D1E4 3FFE5E41 46988407 79D2B820 1DEC4C9E C6C6C6C5 C2C9C1CB ËÁÉÂÅÆÆÆ.Lì. ¸Òy...FA^þ?äÑÂÊ.L.L 000000
+ CBEB4CCC EB4CCDDA 5CCDCB4C CECB4CCF BA5CCF9B 6CD0FAC8 F8BC0200 C5DB1C1C ..ÛÅ..¼øÈúÐl.Ï\ºÏLËÎLËÍ\ÚÍLëÌLëË 000020
+ 4DC37A5D C36B4DC4 6B4DC55A 5DC54B4D C7FAD375 BCD294AC 1F4DCA0B 4DCBFA5C \úËM.ÊM.¬.Ò¼uÓúÇMKÅ]ZÅMkÄMkÃ]zÃM 000040
+ 01550B01 640B0174 FA5DB7DE 94FADDA4 CB4DABBF 4DC0AB4D C19A5DC1 8B4DC28B .ÂM.Á].ÁM«ÀM¿«MˤÝú.Þ·]út..d..U. 000060
+ E21D90E2 1BB0E219 102C7E01 C31640A1 5F01244B 01343A01 352B0144 2B01541A .T.+D.+5.:4.K$._¡@.Ã.~,..â°.â..â 000080
+ C1A94DC2 A94DC3A7 4D0F0205 02F42050 20400F02 0502F420 5020400F 02F51F70 p.õ..@ P ô....@ P ô....M§ÃM©ÂM©Á 0000A0
+ C018304C 01662601 A50501B5 F55D8ADE A4D94DBA DBA5BB4D BBDAB5AB 4DC09B5D ].ÀM«µÚ»M»¥ÛºMÙ¤Þ.]õµ..¥.&f.L0.À 0000C0
+ 66DB6CB6 CC57BB9C A5CA4B7B 2C3C1120 3E3FFC40 303BB554 067A93B0 5001B701 .·.P°.z.Tµ;0@ü?> .<,{KÊ¥.»W̶lÛf 0000E0
+ BCC714BC C8F4C09B 4CC0AA4C BBC9A5AB 5C9FBB5C A9CC85CB 4CB8CC85 DA5CB7CC Ì·\Ú.̸LË.Ì©\».\«¥É»LªÀL.Àôȼ.Ǽ 000100
+ 74BCC274 ACC364BC D8FBD89B ADD98BBD D99ABDD8 FBD89BAD D98BBDC6 34ACC724 $Ǭ4ƽ.Ù­.Øûؽ.Ù½.Ù­.Øûؼdìt¼t 000120
+ 57CD8AC5 BC58CB9B C4BC49CB ABB4AC4B CABB94BC 5BC9BB94 BCC094AC C184BCC1 Á¼.Á¬.À¼.»É[¼.»ÊK¬´«ËI¼Ä.ËX¼Å.ÍW 000140
+ 69E60800 52982201 E2327CBC B3CB4AC9 BC84CC4B D8BC74CD 5BE6AC66 CD6BD5BC ¼ÕkÍf¬æ[Ít¼ØKÌ.¼ÉJ˳¼|2â.".R..æi 000160
+ 8AB9A2A6 892B6A0A 7A2B6A2A 5A2B6A4A 3A3B5A9A DA6A3AAA 4DD9E365 FB664753 SGfûeãÙMª:jÚ.Z;:Jj+Z*j+z.j+.¦¢¹. 000180
+ A4F42B6A 4E5ABEA2 5F4ABEA2 5F5ABDA2 E2A5C62B FAA5B72B 6A6ABBA2 A6A72B6A j+§¦¢»jj+·¥ú+ƥ⢽Z_¢¾J_¢¾ZNj+ô¤ 0001A0
+ 803F6D5F 4DA767FA 68626FD4 DE0B0121 71B4BFE4 C1A8CDA4 D0A2A3D2 4EC0A2E3 ã¢ÀNÒ£¢Ð¤Í¨Áä¿´q!..ÞÔobhúg§M_m?. 0001C0
+ 2F6C5835 5C58446C 38555C38 645C2875 5C1884AC 988CF8CB 86E2CD84 FF2CF8D1 Ñø,..Íâ.Ëø..¬..\u(\d8\U8lDX\5Xl/ 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 20 (00000014), 512 (0200) bytes
+
+ 58B98587 A46B5858 BB8585C4 5B4858BD 8583E45B 2858BF85 81045C08 58C18547 G.ÁX.\...¿X([ä..½XH[Ä..»XXk¤..¹X 000000
+ 868F155B F848B285 8E355BD8 48B4858C 555BB848 B6858A75 02005B98 488F6B78 xk.H.[..u..¶H¸[U..´HØ[5..²Hø[... 000020
+ 8599845A 8859A985 97A45A68 59AB8595 C45A4859 AD8593F4 AE8691F5 5A1849B0 °I.Zõ..®ô..­YHZÄ..«YhZ¤..©Y.Z... 000040
+ 85A2F559 184AA085 A0155AF8 49A2859E 355AD849 4F6AB859 A5859B64 6A9859A7 §Y.jd..¥Y¸jOIØZ5..¢IøZ....J.Yõ¢. 000060
+ 85AB6459 A85A9785 A9845988 5A9985A7 F49A86A5 B559584A 9C86A3D5 59384A9E .J8YÕ£..JXYµ¥..ô§..Z.Y.©..Z¨Yd«. 000080
+ 85B4D558 384B8E85 B2F55818 4B0F69F8 5A9185AF 2469D85A 9385AD44 59C85A95 .ZÈYD­..ZØi$¯..Zøi.K.Xõ²..K8XÕ´. 0000A0
+ 85BD4458 C85B8585 BBF48686 B9755898 4B8886B7 9558784B 8A85B6B5 58584B8C .KXXµ¶..KxX.·..K.Xu¹..ô»..[ÈXD½. 0000C0
+ 66F96858 673D140B 02F4A06C 10D83FD6 E245FD27 0D58085C 8185BF24 58E85B83 .[èX$¿..\.X.'ýEâÖ?Ø.l.ô...=gXhùf 0000E0
+ 799CCA59 9CCC399C CE199CD1 D99BD49A ABD75AAB DBB00A0B 01BF1690 DB01B1CB ˱.Û..¿...°Û«Z׫.Ô.ÙÑ..Î.9Ì.YÊ.y 000100
+ B67AADB8 5AADB9B0 D3B0BA3A ADBC1AAD BE199DC0 F99CC1DA ACC2BAAC C49AACC7 Ǭ.ĬºÂ¬ÚÁ.ùÀ..¾­.¼­:º°Ó°¹­Z¸­z¶ 000120
+ 15FB1D2B 7EB0DFB0 18DB1DFB 09DB0DFB B0B0DBB0 2F0B9B0D FBB49AAD B5B0D7B0 °×°µ­.´û.../°Û°°û.Û.û.Û.°ß°~+.û. 000140
+ F1B248CB 84E2BF38 8DE9BF48 CB84B2E2 118BB44C 18FB221B 01B2E213 1B01B1E3 ã±...â².."û.L´..â².ËH¿é.8¿â.ËH²ñ 000160
+ B0B0DDB0 9FB1DDB1 8FB0DFB0 17FB1D2B 5EB11110 2B3EB211 203B2EB1 48CB84B1 ±.ËH±.; .²>+..±^+.û.°ß°.±Ý±.°Ý°° 000180
+ FA9BD1E9 ABD1CAAB D3AAABD5 FAB87AAD B6B0D7B0 B59AADB4 B0D9B02F 0BBB0DFB û.»./°Ù°´­.µ°×°¶­z¸úÕ«ªÓ«ÊÑ«éÑ.ú 0001A0
+ ADB57AAD B94A9DBD 199DC1E9 9CC3C99C C599ACC7 6AACC94A ACCB2AAC CD0AACCF Ϭ.ͬ*ˬJɬjǬ.Å.ÉÃ.éÁ..½.J¹­zµ­ 0001C0
+ 9DE31170 E21350E2 BD67FC68 535CEFE2 0903F690 B01CDB01 B916F00B 01B00ABB ».°..ð.¹.Û.°.ö..âï\Shüg½âP.âp.ã. 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 21 (00000015), 512 (0200) bytes
+
+ 55D3A245 D4A3445F 2D3AF4D6 A342D6A3 51D7A241 D8A79F5D 2ABE3D3A DE1D2AFE þ*.Þ:=¾*].§ØA¢×Q£ÖB£Öô:-_D£ÔE¢ÓU 000000
+ A2C43C1A 5ACDA2A1 E43C0A4A CEA359CF A2490F3D 8A140200 2D7AF4D2 A346D2A3 £ÒF£Òôz-....=.I¢ÏY£ÎJ.<ä¡¢ÍZ.<Ä¢ 000020
+ C5A2A9F4 C6A3A874 2C7A4A8F 3C6A4AC8 A3A5952C 5A4AAF3C 4A4ACBA2 A3F4CCA3 £Ìô£¢ËJJ<¯JZ,.¥£ÈJj<.Jz,t¨£Æô©¢Å 000040
+ A3B0E43B FA5ABFA2 AFF4C0A3 AE142CDA 4A2F3CCA 4AC2A3AB 352CBA4A C4A3AAF4 ôª£ÄJº,5«£ÂJÊ</JÚ,.®£Àô¯¢¿Zú;ä°£ 000060
+ B7F4B8A3 B6843B5A 5BB9A2B5 A43B4A4B BF2B3A4B CF3B2A4B BCA3B1D5 2B1A4BBE ¾K.+Õ±£¼K*;ÏK:+¿KJ;¤µ¢¹[Z;.¶£¸ô· 000080
+ F4B1A2BD F4B2A3BC 243BBA5B B3A2BB44 3BAA4BB4 A3B9552B 9A4B6F3B 8A4BB7A2 ¢·K.;oK.+U¹£´Kª;D»¢³[º;$¼£²ô½¢±ô 0000A0
+ 5A5ACA3B 8A3AFA9B AAA3BFC8 2A0A6CAD A2C0E53A 0A4CAEA3 BFF52AFA 4BB0A3BE ¾£°Kú*õ¿£®L.:åÀ¢­l.*È¿£ª.ú:.;ÊZZ 0000C0
+ A46D9ED8 351E844D 62D42610 801E65FA 664C5910 7F090436 90B8ADB0 E4988A7B {..ä°­¸.6....YLfúe...&ÔbM..5Ø.m¤ 0000E0
+ 1010802E 277D52D6 25844D51 D8E3A94D E7760540 C254EEAA 8CEE4AC2 542E4900 .I.TÂJî.ªîTÂ@.vçM©ãØQM.%ÖR}'.... 000100
+ CAC2D9C2 CDC0DBC0 3BE0CDC1 DBC1CAC3 DBC31A1A 0065FB66 596486AD 0A0525B8 ¸%..­.dYfûe...ÃÛÃÊÁÛÁÍà;ÀÛÀÍÂÙÂÊ 000120
+ B6959549 5B499FAE 95544DD4 E365F966 5160A749 0A06F288 A01DAC4D AEC6D5C6 ÆÕÆ®M¬...ò..I§`QfùeãÔMT.®.I[I..¶ 000140
+ A65BF991 A75B0979 BB9588BA 9590A85B 8990BA95 17995B79 92B99546 894B6996 .iK.F.¹.y[...º..[¨..º..»y.[§.ù[¦ 000160
+ 9598545B 8949B695 97745BF9 96845BF9 95855B49 59B9954F 59B99593 A55BF992 .ù[¥..¹YO.¹YI[..ù[..ù[t..¶I.[T.. 000180
+ 95BF5CB9 5CF9CB95 CB95BF5C F9CB95CB 95BF5CB9 5CA9F944 5B99F954 5B8949B6 ¶I.[Tù.[Dù©\¹\¿.Ë.Ëù\¿.Ë.Ëù\¹\¿. 0001A0
+ B6054AB5 354DD325 5DD2354D D3255DD2 354DD325 6DD1080D E91CD93C B95CF9CB Ëù\¹<Ù.é..Ñm%ÓM5Ò]%ÓM5Ò]%ÓM5µJ.¶ 0001C0
+ 9459BC95 59BBA549 BBB549BA C549BAD4 49B9D549 B8E549B7 E549B8F4 49B7F549 Iõ·Iô¸Iå·Iå¸IÕ¹IÔºIźIµ»I¥»Y.¼Y. 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 22 (00000016), 512 (0200) bytes
+
+ E95B9290 BE3589BF 4479BF45 79BE5569 BE6569BE 7459BE75 59BD8559 BC8559BD ½Y.¼Y.½Yu¾Yt¾ie¾iU¾yE¿yD¿.5¾..[é 000000
+ A0444DD3 25FD256D D1F7494B 98995B68 B95B9094 0200BC15 29E94B92 91BE2509 .%¾..Ké).¼....[¹h[..KI÷Ñm%ý%ÓMD. 000020
+ BDC0B0BD C1BDB2BB C3BBB5B7 C7B7B9B3 CBB3BD19 9DB266F9 6758673D 140B0786 ....=gXgùf²..½³Ë³¹·Ç·µ»Ã»²½Á½°À½ 000040
+ B0B3B0B6 38481B3B 1B4B8BA4 3A5B3BAB 5AC5B7C5 469C4B7C C3B9C319 BC1BACC0 À¬.¼.ùÃ|K.FÅ·ÅZ«;[:¤.K.;.H8¶°³° 000060
+ FC188C88 C19FBF89 F9ABBEA9 E95B51BD A9D95B52 BC199BBC 25A6ABB1 AA6B82B6 ¶.kª±«¦%¼..¼R[Ù©½Q[驾«ù.¿.Á...ü 000080
+ 2010CBED 20306BEE 01B5DF01 2727CE01 28F81B70 741A8084 9F016777 4CC26828 (hÂLwg.....tp.ø(.Î''.ßµ.îk0 íË. 0000A0
+ 36C0EC37 104D03D5 25F001E4 D665F966 5160A749 0A08D2C0 B01B4DEE 7DDB01B3 ³.Û}îM.°ÀÒ..I§`QfùeÖä.ð%Õ.M.7ìÀ6 0000C0
+ ADDBC90C 9DDEAABC 1A0199AC 49017A8C 7A014B5C CB01DBC1 21400127 C00D03D2 Ò..À'.@!ÁÛ.Ë\K.z.z.I¬...¼ªÞ..ÉÛ­ 0000E0
+ 7CBDB9D5 6CBDBF4B CDD50BAD D45CADD2 3ACDD44A ADD23CAD D61ACDD2 8AADD01C .Э.ÒÍ.Ö­<Ò­JÔÍ:Ò­\Ô­.ÕÍK¿½lÕ¹½| 000100
+ 2D8CCDD9 1C0F8DCD D9D0E9C1 D89CCD2F D0D78C0D 3D7CCDD8 2C5E6CCD D7FCB7D6 Ö·ü×Íl^,ØÍ|=..×Ð/Í.ØÁéÐÙÍ...ÙÍ.- 000120
+ 2AADD45C ADD04BCD D5BB5BCD D6FBB9D6 7CBDC7D6 7CCD5F7C CDD82C3E D0D78C0D ..×Ð>,ØÍ|_Í|Öǽ|Ö¹ûÖÍ[»ÕÍKЭ\Ô­* 000140
+ 7A8C4A01 99AC1901 AABCEA9D CCD0B9AD D01CADD8 1ACDD26A ADD23CAD D43ACDD4 ÔÍ:Ô­<Ò­jÒÍ.Ø­.Э¹ÐÌ.꼪..¬..J.z 000160
+ 09B6C050 FD01E425 504D03D1 37C0EC37 200D03DC 27400121 B01DCC01 4B5C7B01 .{\K.Ì.°!.@'Ü.. 7ìÀ7Ñ.MP%ä.ýPÀ¶. 000180
+ CDD81490 CDD911B0 CDDBD119 C0EC3E10 BD03D52C F001E4D9 65F96658 673D140B ..=gXfùeÙä.ð,Õ.½.>ìÀ.ÑÛÍ°.ÙÍ..ØÍ 0001A0
+ 4C0DFDD3 5CCDD5FC D2D0D55C 0DFDD0D0 D66C0DFD 1B6DCDD6 D1287DCD D7D2438D .CÒ×Í}(ÑÖÍm.ý.lÖÐÐý.\ÕÐÒüÕÍ\Óý.L 0001C0
+ 2CBDAFCD D22CCD9F BDD33CBD 8FCDD33C CDE3D74B CDD4FBD6 4CCDD42C EDD4D0D4 ÔÐÔí,ÔÍLÖûÔÍK×ãÍ<ÓÍ.½<Ó½.Í,Òͯ½, 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 23 (00000017), 512 (0200) bytes
+
+ BABC4A01 BBBC3B01 CACC2A01 CBCC0B01 0BCDD0FB DE1BCDD1 FBDC1CCD D1BCBDD2 Ò½¼ÑÍ.ÜûÑÍ.ÞûÐÍ...ÌË.*ÌÊ.;¼».J¼º 000000
+ 5B023B3C 2B025A5C 0A026A6C EA01898C C9010200 999CA901 9A9C8A01 AAAC6A01 .j¬ª.....©.....É...êlj..\Z.+<;.[ 000020
+ 5360A749 0A0A03A1 90FD01E4 2C50BD03 D13EC0D0 AE03D932 F0DD0213 90021B1C ......Ýð2Ù.®ÐÀ>Ñ.½P,ä.ý.¡...I§`S 000040
+ C82AACC6 5AACC28A ACC0BAAC BCFA0C6B 0B3B1D0B 1B7B4DDC CD6B01B2 C866FA67 gúfȲ.kÍÜM{...;.k.ú¼¬ºÀ¬.¬ZƬ*È 000060
+ D6B1B0B0 D6B0B2B0 D4B04F0B 2B0D6B0B 0B0D8BAB D0AAABCE CAABCCEA ABCA0AAC ¬.Ê«êÌ«ÊΫªÐ«....k.+.O°Ô°²°Ö°°±Ö 000080
+ B2E214CB 1DFB23CB 2DAB3EB1 DCB14FB2 DAB25FB1 DAB1E217 8B1DFB09 8B0DABB1 ±«...û...â±Ú±_²Ú²O±Ü±>«-Ë#û.Ë.â² 0000A0
+ FAB4B0D4 B02F0B6B 0DFBB0B1 D6B10A8B 0D9BB1D8 B1E2278B 2D6BB1DA B15FB2DA Ú²_±Ú±k-.'â±Ø±....±Ö±°û.k./°Ô°´ú 0000C0
+ F7C4C77C 2F8CCC08 8CCEF8BE E99CBD08 8DBC099D BA0AADB9 299DB82A AD6FABD4 Ô«o­*¸.)¹­.º..¼..½.é¾øÎ..Ì./|ÇÄ÷ 0000E0
+ 24545BC4 554BF164 5BC4658B B5655CB5 F4B8666C CA866C8F 7CC8776C CA667CCA Ê|fÊlwÈ|.l.Êlf¸ôµ\eµ.eÄ[dñKUÄ[T$ 000100
+ B7044CB7 F444B624 4CB63465 4BC2645B 42B7244C B724645B C2654B42 B6444CB6 ¶LD¶BKeÂ[d$·L$·B[dÂKe4¶L$¶Dô·L.· 000120
+ 85B0E4EB EB2B7EBF BEBFE4E6 0BEC5B57 3BC0537B 54B7033C B745654B C0645B44 D[dÀKeE·<.·T{SÀ;W[ì.æ俾¿~+ëëä°. 000140
+ A77CC987 7CCB677C CD477CCF 088CD288 58AD9C4D FCADCB60 FB623843 4C1F0730 0..LC8bû`Ë­üM.­X.Ò..Ï|GÍ|gË|.É|§ 000160
+ 494AADE2 95D4397E 488D98D2 99288DE2 8BD0F8C1 077DC3E7 7CC4C88C C5C77CC7 Ç|ÇÅ.ÈÄ|çÃ}.ÁøÐ.â.(.Ò..H~9Ô.â­JI 000180
+ F89BD0A9 288D9F29 9D7F499D E3A5D43A 3E4BBDA2 D61AE56B BDCE1E6A ADE793D6 Ö.ç­j.νkå.Ö¢½K>:Ô¥ã.I..)..(©Ð.ø 0001A0
+ D569298D C0F87CC4 D77CC6B7 7CC8977C CA778CCA 588CCC48 7CCE378C CE188CD0 Ð..Î.7Î|HÌ.XÊ.wÊ|.È|·Æ|×Ä|øÀ.)iÕ 0001C0
+ 6CFC2C3C BDD6897D DAB64DDD E32DCE60 F4612D43 4C1F0731 2EB0B0AC DFC4D9CA ÊÙÄ߬°°.1..LC-aô`Î-ãÝM¶Ú}.Ö½<,ül 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 24 (00000018), 512 (0200) bytes
+
+ 6134434C 1F0732BE A0500CC2 C5D2C1D5 EB026EBD C253BCA7 C53BC2C5 D05FDC8C .Ü_ÐÅÂ;ŧ¼S½n.ëÕÁÒÅÂ.P.¾2..LC4a 000000
+ B0B1BD24 2BAB4BB4 B2B7563B 4B6BB7B5 020079BB C2BDC0C0 BCC5B7CB B0B860F9 ù`¸°Ë·Å¼ÀÀ½Â»y..µ·kK;V·²´K«+$½±° 000020
+ 1F0B4CEE 1BFCBDC2 B0014B8C 127B4CE2 135B4C5F B1C3F417 1B4C19FB 5B19FB4B Kû.[û.L..ôñ_L[.âL{..K.°Â½ü.îL.. 000040
+ ACCEFACE EA0CEBAC CEB0DF0C FBCDB1CD B0CDB1DF 0CEB0C4B 5C142B9C 121B0C1B .....+.\K.ë.߱ͰͱÍû.߰άë.êÎúά 000060
+ D3355DD3 356DD226 6DD2266D D2177DD1 177DD108 8DD0089D CFF99CCF FA9CCFF9 ùÏ.úÏ.ùÏ..Ð..Ñ}.Ñ}.Òm&Òm&Òm5Ó]5Ó 000080
+ 653CB064 4CB0544C B1444CB2 344CB324 5CB3145C B3145CB4 045CB5F4 5BD3266D m&Ó[ôµ\.´\.³\.³\$³L4²LD±LT°Ld°<e 0000A0
+ 4C1F0733 CCB040D5 E263FD53 4DD45FD3 266DD277 C783854C 58C79474 4C4AC6A4 ¤ÆJLt.ÇXL..ÇwÒm&Ó_ÔMSýcâÕ@°Ì3..L 0000C0
+ CF05BCCD 25BCCA46 BCC767BC C4881C9C AB3CDDFC 1CBD5C7D BCBDC960 FA623643 C6bú`ɽ¼}\½.üÝ<«...ļgǼFʼ%ͼ.Ï 0000E0
+ E2DEEB0D FC5C0ADC 9C08CCBC 7FC0CBC1 E4B7CCC0 07BCBC08 CCACB9CE A80B4DBB »M.¨Î¹¬Ì.¼¼.ÀÌ·äÁËÀ.¼Ì..Ü.\ü.ëÞâ 000100
+ 1480AC4D FCD7C1DB F99D1090 10801190 DF0A0109 01FAADDF EBBDEF0D ECBDDEC0 ÀÞ½ì.ï½ëß­ú....ß.......ùÛÁ×üM¬.. 000120
+ 152CEE0D 2CFE0DFC DFFB10B0 10A010B0 10A011A0 11901290 13801380 14801480 ................°...°.ûßü.þ,.î,. 000140
+ 35C0D239 C0D03BC0 CFC111FC 1C1CC0CF E2CFCFE2 CFD0C011 1CAD122C 8D134C4D ML..,.­..ÀÐÏâÏÏâÏÀ..ü.ÁÏÀ;ÐÀ9ÒÀ5 000160
+ AD1C9CC0 C7C0C359 BCC738BC CA17BCCD B6FB6C09 0C6DB8D2 754B5DB6 D554C0D5 ÕÀTÕ¶]KuÒ¸m..lû¶Í¼.ʼ8ǼYÃÀÇÀ..­ 000180
+ 15801670 7F01F618 501940DD 61FC623A 434C1F07 3492B0CB CA6D5CCD 0C0DDD2C ,Ý..Í\mÊË°.4..LC:büaÝ@.P.ö..p... 0001A0
+ 9FBD45AF BD44DB3B F4DC2BF4 DD1BE43D FCDFC210 10FC1100 FC12B013 A04F01F9 ù.O..°.ü..ü..Âßü=ä.Ýô+Üô;ÛD½¯E½. 0001C0
+ FFBCC304 BDC2F4D1 1B4C2FBD C034BD4B 4FBD4AD5 AB63BD49 D68BF4D7 7B84BD46 F½.{×ô.ÖI½c«ÕJ½OK½4À½/L.Ñô½.ü. 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 25 (00000019), 512 (0200) bytes
+
+ DB4C6FBC CCF4C7BB 4CC8AB4C 9FBCC9F4 CA8B4CCB 7B4CCFBC C6D4BCC5 F4CE4B4C LKÎôżÔƼÏL{ËL.Êôɼ.L«ÈL»Çô̼oLÛ 000000
+ D9E4D3C5 DFC112B0 D6C66E10 00C10200 2B4DC11B 4DC20B4D 3FBCCFF4 C4EB4CC5 ÅLëÄôϼ?M.ÂM.ÁM+..Á..nÆÖ°.ÁßÅÓäÙ 000020
+ 4D8C3D9C 2D0C1C1C 1C8CCA09 6CD0064C D5031CDA 7160F962 34434C1F 0735B2B0 °²5..LC4bù`qÚ..ÕL.Ðl.Ê.....-.=.M 000040
+ C88947A4 9C5CC44C 8CF4AC4B 1440C92E 3D3CF4DC DCFCBC1C 9D3C7D5C 6D6C5D7C |]lm\}<..¼üÜÜô<=.É@.K¬ô.LÄ\.¤G.È 000060
+ DEFADFF9 1090DF09 3DC1F84C C2E84CC3 C85CC4B7 6CC5878C C6674C41 C7186C42 Bl.ÇALgÆ..Ål·Ä\ÈÃLèÂLøÁ=.ß..ùßúÞ 000080
+ 1BBDB1D0 C01FFBDC FCFCCDD0 CCD01BC0 D129C0D2 37C0D552 C0E4DD3B EEADEFBD ½ï­î;ÝäÀRÕÀ7ÒÀ)ÑÀ.ÐÌÐÍüüÜû.Àб½. 0000A0
+ 26ACCB06 ACCDB6F9 5C9AD185 2A4DA7D3 654A4DB5 D4456A4D B3D6342B 8DB3D11A .ѳ.+4Ö³MjEÔµMJeÓ§M*.Ñ.\ù¶Í¬.ˬ& 0000C0
+ 60FA6236 434C1F07 36D9B0CC B95D5C9D 1CCDEC0C BD0C8C8A BCC268AC C647ACC9 ɬGƬh¼...½.ìÍ..\]¹Ì°Ù6..LC6bú` 0000E0
+ 8CC4998C C4A78CC5 B58CC785 9CC8669C CA36ACCC 98FBEC1C BD4C8D8C 4DDC9DD2 Ò.ÜM..L½.ìû.̬6Ê.fÈ..Ç.µÅ.§Ä..Ä. 000100
+ 0109010A 01290E4C D0B9E89C AACCB9CA 8C0BBC8C 0BAC8C0F 0C9C8CC1 9B8CC28B .Â..Á.....¬..¼..ʹ̪.è¹ÐL.)..... 000120
+ C643C07B C453C0C0 084CB6C2 89754B7C 8C6B3CAC 9B9CC1FB BDDFFABD E2DF2A0E .*ßâ½úß½ûÁ..¬<k.|Ku.¶L.ÀÀSÄ{ÀCÆ 000140
+ 2CFC94CF C294CEC3 85CEC386 CD12C086 CC13C087 CA23C078 CA23C079 C833C07A zÀ3ÈyÀ#ÊxÀ#Ê.À.Ì.À.Í.ÃÎ.ÃÎ.ÂÏ.ü, 000160
+ 5F1BAD33 0E1CBD02 2CAD220E 2CBD610E 2C0D2C1E 2B0D1C1B 1D2C2E1A 1D2C3EFA ú>,...,....+.,.,.a½,."­,.½..3­._ 000180
+ 9CC8788C C6988CC4 A88CC3B9 8CC2D88C C0D98C9B CFF8A9CF 890A8DB7 D0691A9D ..iз...Ï©øÏ..ÙÀ.ØÂ.¹Ã.¨Ä..Æ.xÈ. 0001A0
+ D8964D5F 64F96639 434C1F07 377CA0CA D95D7C9D 3CCD1CFD ECBCB7CC 199CCA48 HÊ..Ì·¼ìý.Í<.|]ÙÊ.|7..LC9fùd_M.Ø 0001C0
+ CC94D44C 49CC85D4 4C8FD45C 47CE75C4 7C865DD8 5FD9A43D BF3DAF2D 3E0D7B7D }{.>-¯=¿=¤Ù_Ø].|ÄuÎG\Ô.LÔ.ÌILÔ.Ì 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 26 (0000001A), 512 (0200) bytes
+
+ 4DD9954D D9F4D994 4D9F4DD9 A44DC824 4BC9144B CA144BC9 144BCA04 4BCBF44A JôËK.ÊK.ÉK.ÊK.ÉK$ÈM¤ÙM.M.ÙôÙM.ÙM 000000
+ 4E9DE2D5 285E8DE2 D6276E7D 02007F6D 8F5DD8F6 D8856DD8 F5D8954D D9954D9F .M.ÙM.ØõØm.ØöØ].m...}n'Öâ.^(Õâ.N 000020
+ DCADCA60 FA623643 4C1F0738 F2B0504C D858AD3F 1D0BEBD2 B0E6D34A 4E9DD43A :Ô.NJÓæ°Òë..?­XØLP°ò8..LC6bú`Ê­Ü 000040
+ 6D8AD106 7CD1068C CF268CCD 468CCA67 9CC787AC C3A80C9C CA1CFDDC 3CAD6C5D ]l­<Üý.Ê..¨Ã¬.Ç.gÊ.FÍ.&Ï..Ñ|.Ñ.m 000060
+ C179CF9B 16AD78D2 7A379D76 D469578D 6F677DE3 76D6F678 D586477D 78D4A637 7¦Ôx}G.ÕxöÖvã}go.WiÔv.7zÒx­..ÏyÁ 000080
+ DC6C75BC 6C779C5C 6B6C6CC1 C6C4275C 4C6CC5C4 C2764C0C 6CC9C37B CBC16BCD ÍkÁË{ÃÉl.LvÂÄÅlL\'ÄÆÁllk\.wl¼ulÜ 0000A0
+ C0667CAC 867C8CA6 8C5CD58C 2CF6DC3C AD5C8D7C 9D7C8D7C 8D6CAD2C DD0C5D82 .].Ý,­l.|.|.|.\­<Üö,.Õ\.¦.|.¬|fÀ 0000C0
+ 5B7D034C 6D052C7D 250C6D27 EC7C47CC 6C49AC6C 5A8C6CC0 C6C5266C 3C6CC4C7 ÇÄl<l&ÅÆÀl.Zl¬IlÌG|ì'm.%},.mL.}[ 0000E0
+ D847967D 64DA27A7 7D62DB27 C6FDC2DC E4C3DB4F AC4D9C7D A1D82789 7DA2D736 6×¢}.'Ø¡}.M¬OÛÃäÜÂýÆ'Ûb}§'Úd}.GØ 000100
+ CFCDD2CB ABC0C849 ACC6889C C4C78CC2 F68CC016 8D6AD388 567D68D6 67768D65 e.vgÖh}V.Ój..À.öÂ.ÇÄ..ƬIÈÀ«ËÒÍÏ 000120
+ ADB8DDDE DFDB1370 7D01D31C A0D960FA 6236434C 1F0739D9 C0A0ACDC C6D6CBD1 ÑËÖÆܬ.ÀÙ9..LC6bú`Ù..Ó.}p.ÛßÞݸ­ 000140
+ AD98DE9A E89D8ADD BAC89D8C DC188DDA 288DD939 8DD8588D D6788DD3 999DD0B9 ¹Ð..Ó.xÖ.XØ.9Ù.(Ú..Ü..ȺÝ..è.Þ.­ 000160
+ 011BE21C 011B1C01 2C1E1B01 6C2E1A01 3C2E0B01 4B0A012B 5E09016A F9BD7FF8 ø.½ùj..^+..K...<...l...,.....â.. 000180
+ 32D9872C 938DC731 DB681CC2 8D26DD8D 25DD9D14 ED9D14ED ADF3D010 A0220E0D .."..Ðó­í..í..Ý%.Ý&.Â.hÛ1Ç..,.Ù2 0001A0
+ 01FA1EB0 1EB0D089 BD2A5DBD 683DBD57 98D16BC4 C85C337D CB34D5A7 3C737DC9 É}s<§Õ4Ë}3\ÈÄkÑ.W½=h½]*½.а.°.ú. 0001C0
+ D098BDD0 97CD8CD9 BCA8CDAF C8ADAFD9 8D8B1040 9CFF01FA 01F91FA0 E21EB0EF ï°.â..ù.ú...@...Ù¯­È¯Í¨¼Ù.Í.н.Ð 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 27 (0000001B), 512 (0200) bytes
+
+ 306D01D8 13B0FDED DDBD99DB 297DD869 6DD6895D D5B85DD4 A77DD388 9DD288BD ½.Ò..Ó}§Ô]¸Õ].ÖmiØ})Û.½Ýíý°.Ø.m0 000000
+ 3B259B2C CDEC0CBD 3C6D0200 ACBD1050 E6CC6FF9 7834434C 1F072438 B1F0AD1C .­ð±8$..LC4xùoÌæP.½¬..m<½.ìÍ,.%; 000020
+ C267355C C276355C C187255C C097165C 7B6BC0A5 177C5A79 C3977558 9C5695C7 Ç.V.Xu.ÃyZ|.¥Àk{\..À\%.Á\5vÂ\5g 000040
+ C516295C C526645C C526645C C427645C C436555C C446545C C347545C C356455C \EVÃ\TGÃ\TFÄ\U6Ä\d'Ä\d&Å\d&Å\).Å 000060
+ DA5CC1CA 5CC2F9CC 359C44C3 359C82C1 458CA1C0 45FCC85B C5E4C6C0 555C1C5C \.\UÀÆäÅ[ÈüEÀ¡.EÁ..5ÃD.5ÌùÂ\ÊÁ\Ú 000080
+ CBD2CCD1 CDD0CFCE D1CBD1CC D025C6CF 55C3CF75 C2CE95C0 CEA5C0CD B5DB5CC0 À\ÛµÍÀ¥ÎÀ.ÎÂuÏÃUÏÆ%ÐÌÑËÑÎÏÐÍÑÌÒË 0000A0
+ ABF5BC59 CFC058D0 C156D0C2 55D1C452 D1CBD2CA D3CDD0CF CDD1CCD2 CCD1CCD2 ÒÌÑÌÒÌÑÍÏÐÍÓÊÒËÑRÄÑUÂÐVÁÐXÀÏY¼õ« 0000C0
+ C11A385C C11A385C C228385C C444295C CD285CDF 9CC1D5AC C0E59CC0 E5AC5BCE Î[¬åÀ.åÀ¬ÕÁ.ß\(Í\)DÄ\8(Â\8.Á\8.Á 0000E0
+ 655C63C3 754C72C3 754C2F46 5CC71546 5CC3C4C4 255C4C5C C1C6C405 4C7E4C5C \L~L.ÄÆÁ\L\%ÄÄÃ\F.Ç\F/LuÃrLuÃc\e 000100
+ 5AC1B6B6 256C69C0 355C78C0 455C67C1 455C76C1 555C65C2 654C74C2 654C64C3 ÃdLeÂtLeÂe\UÁv\EÁg\EÀx\5Àil%¶¶ÁZ 000120
+ CB651E01 AB5D5CAD 0CEDDC0C ADBC51B3 C8497559 8C5689C3 87B5267C 59C0067C |.ÀY|&µ.Ã.V.YuIȳQ¼­.Üí.­\]«..eË 000140
+ 6C2730C0 8602A497 0284B702 64E602C2 30B03470 D168FA6A 59673D14 0B2689B1 ±.&..=gYjúhÑp4°0Â.æd.·...¤..À0'l 000160
+ 01549CE3 1F40C538 0E02547C 2230C527 02348C22 40C33702 346C2530 C2570214 ..WÂ0%l4.7Ã@".4.'Å0"|T..8Å@.ã.T. 000180
+ 02B35902 B4590203 AC2340C0 2A02249C 1F02349C 1F02439C 2040C4F9 2030C5F9 ùÅ0 ùÄ@ .C...4...$.*À@#¬..Y´.Y³. 0001A0
+ 2C6C2CED 4CA2C5D2 CD34CA02 43BA0263 A902648A 02748A02 837A0294 6902A469 i¤.i..z...t..d.©c.ºC.Ê4ÍÒÅ¢Lí,l, 0001C0
+ DAFBD7B5 ADD6B6AD D5A8BDD2 ABADD0C2 D9DA8C5C 0D6C2C1D 0D6C2C0D 1D6C2CFD ý,l..,l..,l.\.ÚÙÂЭ«Ò½¨Õ­¶Ö­µ×ûÚ 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 28 (0000001C), 512 (0200) bytes
+
+ 0D8C534D D27B634D D26B544D D44B644D D43B644D D61B744D D61B734D D8C17F4D M.ÁØMs.ÖMt.ÖMd;ÔMdKÔMTkÒMc{ÒMS.. 000000
+ 6CD3A4BC C3354DCB 0200C0C2 444DCC1B 5CD3E4BC C0444DCE C04AD404 BD49D504 .ÕI½.ÔJÀÎMDÀ¼äÓ\.ÌMDÂÀ..ËM5ü¤Ól 000020
+ 140C9C9C D1340C8C 8CD244BC C7284DC5 C0C6284D C6C0C527 4DC85B6C D2940C3C <..Òl[ÈM'ÅÀÆM(ÆÀÅM(ǼDÒ...4Ñ.... 000040
+ D454EBBC D364C0CD 3B4D07CC BCD294C0 CB2A4D0A BCACD2B4 C0CA1A4D C1AB9CD2 Ò.«ÁM.ÊÀ´Ò¬¼.M*ËÀ.Ò¼Ì.M;ÍÀdÓ¼ëTÔ 000060
+ C041D41B 0D1C440D 1C4D3C2D 0C0D7C3D FC0C6C4D B1CFC0D5 24C0CF4B 5D03ECBC ¼ì.]KÏÀ$ÕÀϱMl.ü=|..-<M..D...ÔAÀ 000080
+ 2CC60C6C B55CFC0C 5CD43C0C 0D4CE51C 2C0D3C04 0D2C0D3C 140D2C0D 1C34BDD2 Ò½4..,..<.,..<.,.åL..<Ô\.ü\µl.Æ, 0000A0
+ CFC6CFC4 D2C379C2 C09AC2C1 071CAC28 1CBC460C 7C770C9C 760C4CA6 0C8C950C ....¦L.v..w|.F¼.(¬..ÁÂ.ÀÂyÃÒÄÏÆÏ 0000C0
+ CACCCEC8 D5C0C568 F969303F 01BA063F 81B0C389 ADD3C4D0 C6CDC9CA CBC9CDC6 ÆÍÉËÊÉÍÆÐÄÓ­.ð.?.º.?0iùhÅÀÕÈÎÌÊ 0000E0
+ 8DA2D226 4A4D93D3 442A4D95 D164095D 97CE95D8 5C8BCB15 9CC7369C C467BC89 .¼gÄ.6Ç..Ë.\Ø.Î.].dÑ.M*DÓ.MJ&Ò¢. 000100
+ 8DDAA9AD D99AADD9 9ABDD99A BDD99ABD 9FADD036 FB8CB2CE 1ADB4CBE ECBC1F0A ..¼ì¾LÛ.β.û6Э.½.Ù½.Ù½.Ù­.Ù­©Ú. 000120
+ 40C1FE5D DF34FE5D FF4DDFF5 DEF5DEE6 5DDEF6DD F6DDD67D DCC78DDC C77DDCB8 ¸Ü}ÇÜ.ÇÜ}ÖÝöÝöÞ]æÞõÞõßM.]þ4ß]þÁ@ 000140
+ D86DC74A F969303F 01BA063E 7CB0CBD6 8DDB9A0D 7C2D5C7E 0D9CADDB D86DAF02 .¯mØÛ­..~\-|..Û.ÖË°|>.º.?0iùJÇmØ 000160
+ EF5DDEE6 5DE2DFF4 5DFF4DE3 DFF54DC2 FE2A00D6 8DDB9A0D 7C2D5C7E 0D9CADDB Û­..~\-|..Û.Ö.*þÂMõßãM.]ôßâ]æÞ]ï 000180
+ CF3B06AD DA9ABD9F AD9FAD9F ADD9AA9D DAB98DDB C87DDCF7 DCD76DDD D76DDF6D mßm×Ým×Ü÷Ü}ÈÛ.¹Ú.ªÙ­.­.­.½.Ú­.;Ï 0001A0
+ B8D58C59 CE79049D 56D05A24 9D44D32A 35AD62D2 2A08ADEC FCCBCD4B 1EEABC82 .¼ê.KÍËüì­.*Òb­5*ÓD.$ZÐV..yÎY.Õ¸ 0001C0
+ 291D5DD2 40FD411D 25F1F403 101CC0C8 C0D4C8CD CDC99A6A 7CC4386C C8185CCB Ë\.Èl8Ä|j.ÉÍÍÈÔÀÈÀ...ôñ%.Aý@Ò].) 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 29 (0000001D), 512 (0200) bytes
+
+ E4D3D505 0140075F 22293D5A 041138C0 8470D1D3 5CAD22E0 D65BCDD4 D1D2D7E4 ä×ÒÑÔÍ[Öà"­\ÓÑp.À8..Z=)"_.@..ÕÓä 000000
+ B769B75A A83C0200 A93CB82C B9FCA1AC 92D13829 6DA3DB37 E0ABCDD9 D1D7D8D0 ÐØ×ÑÙÍ«à7Û£m)8Ñ.¬¡ü¹,¸<©..<¨Z·i· 000020
+ 1690BD01 D420A0DF 68FD6A3B 434C1F07 19E7C030 9DD9D1D5 D5D177C7 B796B787 .·.·ÇwÑÕÕÑÙ.0Àç...LC;jýhß. Ô.½.. 000040
+ DA3AADDA F9D5A98D D68A9DD7 898DD969 8DDB588D DD487DDF 188D1190 8B149097 ........ß}HÝ.XÛ.iÙ..×..Ö.©ÕùÚ­:Ú 000060
+ 6A9DD85A 9DD94A9D DA3AADDA FAD2BAAD 1FBDDB1A ADDCFAD0 CBADE7D1 CA9D2FBD ½/.ÊÑç­ËÐúÜ­.Û½.­ºÒúÚ­:Ú.JÙ.ZØ.j 000080
+ 187D6D9D 7B7DCD77 8DBD776D 0D7DD7D3 CBCA9DD2 AA9DD49A 9DD58A8D D76AADD7 ×­j×..Õ..Ô.ªÒ.ÊËÓ×}.mw½.wÍ}{.m}. 0000A0
+ FAD4A9AD D5A8ADD5 99ADD698 ADD788AD D878ADD9 68ADDA58 ADDB48AD DC38ADDE Þ­8Ü­HÛ­XÚ­hÙ­xØ­.×­.Ö­.Õ­¨Õ­©Ôú 0000C0
+ FAAD2ABE DFBABEFA ADE2BBDE FAACDE3A 0EADDDFA D1D9ADD1 CAADD2C9 AD3F9DDB Û.?­ÉÒ­ÊÑ­ÙÑúÝ­.:Þ¬úÞ»â­ú¾ºß¾*­ú 0000E0
+ D2A8592B 8D9BA5D2 B9592A8D 9CA5D1C9 590AADD0 670A9DD2 75CAEAAD E2BBDEBA ºÞ»â­êÊuÒ..gЭ.YÉÑ¥..*Y¹Ò¥..+Y¨Ò 000100
+ 435560A7 490A1AFD B0508D23 10ADD7D0 D479CD58 86D78A59 779DA866 D7887AC6 Æz.×f¨.wY.×.XÍyÔÐ×­.#.P°ý..I§`UC 000120
+ 785CC418 7C8AC565 8C7BC019 6CC86938 AC88CBC8 C6CACFC4 CBC5D429 ADC741FA úAÇ­)ÔÅËÄÏÊÆÈË.¬8iÈl.À{.eÅ.|.Ä\x 000140
+ B92C9CBC 88CAC4C9 99994CAC 8C8AC827 C94C9BC6 47A95CC0 686C86CA 248CC486 .Ä.$Ê.lhÀ\©GÆ.LÉ'È..¬L..ÉÄÊ.¼.,¹ 000160
+ BCCB78EA BCCAFAA6 CE9B0C6C D90C9C0C 6CD91C8C 0C6CCA1C 8C0C7CB9 2C8C0C7C |..,¹|...Êl...Ùl...Ùl..Φúʼêx˼ 000180
+ C015A0C0 C017A019 9C014AC4 1BF08C1C 02CC1A30 4D01D90A ADE4DAF9 BCCD94F9 ù.ͼùÚä­.Ù.M0.Ì...ð.ÄJ.....ÀÀ..À 0001A0
+ DBDABCDB DAACDDC9 BCDDB9BC DE9ABCDF 9AAC10A0 C71B016A BC12A0C4 C013A0C2 Â..ÀÄ..¼j..Ç..¬.ß¼.Þ¼¹Ý¼ÉݬÚÛ¼ÚÛ 0001C0
+ CF18D7AC 43D0C2CE FB41D2C0 CFFB31D4 FB3C4CBD CFC3D40A BDD9F9BC E2DAF9AC ¬ùÚâ¼ùÙ½.ÔÃϽL<ûÔ1ûÏÀÒAûÎÂÐC¬×.Ï 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 30 (0000001E), 512 (0200) bytes
+
+ C1448CC1 46BC4AC6 B866BC48 C98886AC 38CB6896 BC46CC57 B6BC44CD 38C6BC34 4¼Æ8ÍD¼¶WÌF¼.hË8¬..ÉH¼f¸ÆJ¼FÁ.DÁ 000000
+ 673D140B 02001BE7 B0409CD7 0A3D0C6D AC8CACBC 7C5CA7C7 78C0C305 9CC317AC ¬.Ã..ÃÀxǧ\|¼¬.¬m.=.×.@°ç.....=g 000020
+ 8CC1377C C4A78C7B C5178CCC 69988C97 D0C8CBC9 D4C4D0C4 D979ADCB 41FC435E ^CüAË­yÙÄÐÄÔÉËÈÐ...iÌ..Å{.§Ä|7Á. 000040
+ CA38F78C 9BC957E7 7CC1887C 67CD279C C687B77C C4686C7A C9678CC4 166CC787 .Çl.Ä.gÉzlhÄ|·.Æ.'Íg|.Á|çWÉ..÷8Ê 000060
+ D5FAA3CE C0D5F9A4 CEC1D459 D92C3C9D 6FCA3C2C 8D98CB18 178D99CB 27088D8A ...'Ë....Ë..,<Êo.<,ÙYÔÁΤùÕÀΣúÕ 000080
+ 5CADE2DB C0D6AABD D7BAADD7 FADB7A9D FE01D7E2 C9D07AAD 31AED06B 9D93CFC0 ÀÏ..kЮ1­zÐÉâ×.þ.zÛú×­º×½ªÖÀÛâ­\ 0000A0
+ 048D72D1 78244D1C 9D46D2C3 D359432D 3C9D44D4 C2D33A44 1D5C9DDC C0D5C90D .ÉÕÀÜ.\.D:ÓÂÔD.<-CYÓÃÒF..M$xÑr.. 0000C0
+ 4CC9A897 7CC4B38C 78CB274C CC87C77C C0D48C76 CDB8F38C 74CF9804 8D82CF89 .Ï....Ït.ó¸Ív.ÔÀ|Ç.ÌL'Ëx.³Ä|.¨ÉL 0000E0
+ 8A3D2C4D 3C8DCC9C 0C5DA7CA 78C95CC0 697CC198 4CC4487C C4774CC6 286CC757 WÇl(ÆLwÄ|HÄL.Á|iÀ\Éxʧ]..Ì.<M,=. 000100
+ 7A3CDBB4 3DDBB43D DBB43DDB F3DBF3DB F3D84EFC 5E3A434C 1F071C03 A1409CD8 Ø.@¡....LC:^üNØóÛóÛóÛ=´Û=´Û=´Û<z 000120
+ B0BD679B BD878BBC A77BBBC7 7BB9E78B B5E8ABB3 073C9198 C034BBC2 73B5C4A4 ¤Äµs»4À..<.³«èµ.ç¹{Ç»{§¼..½.g½° 000140
+ BD6879C4 9B8737BD 8868D48B 8935BDA8 48D48BB0 47E37BB2 27D47BB3 18D38BB4 ´.Ó.³{Ô'²{ãG°.ÔH¨½5..Ôh.½7..Äyh½ 000160
+ 393BBA29 294BBA29 293BBB29 194BBB29 0A3BBB3A A9B49B94 3ABC4999 C49B8539 9..Ä.I¼:..´©:»;.)»K.)»;))ºK))º;9 000180
+ BA249B92 BA339BA1 B943FBB9 B853FBB9 B763FBB9 B673FBB9 B583FBB9 B493AB1F .«.´¹û.µ¹ûs¶¹ûc·¹ûS¸¹ûC¹¡.3º..$º 0001A0
+ 7378C94B 9786BD93 58C94B99 94BCA349 B94B9AA3 BB03AB92 BB149B92 BB239B92 ..#»...».«.»£.K¹I£¼..KÉX.½..KÉxs 0001C0
+ A77BBC88 7BBC6A7B BD13477B BD24278B BD33187B BD44078B BD5398D8 4B8688BD ½..KØ.S½..D½{.3½.'$½{G.½{j¼{.¼{§ 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 31 (0000001F), 512 (0200) bytes
+
+ DBB34DDB B34DDBB3 4DC7AA43 7C5B24BC 3B139C28 FB8BB3F9 7BB7E77B B9C77BBB »{ǹ{ç·{ù³.û(..;¼$[|CªÇM³ÛM³ÛM³Û 000000
+ 4C3C0200 24012EA0 DD02E3D3 65FC666F 785ADB0C 1D61B1D8 F3DBF3DB F3DBB34D M³ÛóÛóÛóرa..ÛZxofüeÓã.Ý...$..<L 000020
+ 040187BD 581080D7 8B140169 BD4811A0 D57B1501 C0D37B24 01C2D1C0 461270BC ¼p.FÀÑÂ.${ÓÀ..{Õ..H½i...×..X½... 000040
+ BDC0F4DC C4BD4BDF 5DDBBBD4 5DDBABF4 DEA6BD4A DEA6BD59 DE97BD49 1060D99B .Ù`.I½.ÞY½¦ÞJ½¦Þô«Û]Ô»Û]ßK½ÄÜôÀ½ 000060
+ 4CE2D7E4 BDC2854D DD2B4C9F 4DDD1B5C D9D4BDC1 F4DAD4BD C0A54DDD 0B4CDBC5 ÅÛL.ÝM¥À½ÔÚôÁ½ÔÙ\.ÝM.L+ÝM.½ä×âL 000080
+ 1450CB7B 4C5F01B5 BCC65501 C4BCC624 6E01C4BC C5247E01 C4BCC424 6E4DDE3B ;ÞMn$ļÄ.~$żÄ.n$ƼÄ.UƼµ._L{ËP. 0000A0
+ 5002E212 40023F01 C0C49B4C 1390C78B 5C1370C9 8B4C1460 CA8B4C14 60CA7B5C \{Ê`.L.Ê`.L.Ép.\.Ç..L.ÄÀ.?.@.â.P 0000C0
+ 5CDFB5BC CC0401A6 BCCC0401 A6BCCB05 0197BCCB 140179BC CB1401C0 C4BB4C11 .L»ÄÀ..˼y..˼...˼¦..̼¦..̼µß\ 0000E0
+ 4CCCEB4C C94FC5C4 BCCE944C C5C4BCCD 954CC5C4 BCCDA44C C5B5BCCD F45DCBCB ËË]ôͼµÅL¤Í¼ÄÅL.ͼÄÅL.μÄÅOÉLëÌL 000100
+ BDD1754C DF1B4D8F 4CDF0B5D C7F5BDD0 F4C8444C CC0B4DC8 444CCCFB 4CE2C944 DÉâLûÌLDÈM.ÌLDÈôнõÇ].ßL.M.ßLuѽ 000120
+ 4DC5B7BD D5546CDC 4B4DE2C6 D5BDD365 5CDD3B4D 6F5CDE2B 5DC6E5BD D2F4C7F4 ôÇôÒ½åÆ]+Þ\oM;Ý\eÓ½ÕÆâMKÜlTÕ½·ÅM 000140
+ 491C0D1C 1D0C1C4C BDD32ABC D64B8DC3 7ABDD546 9CD85B5D C598BDD5 548CDA5B [Ú.TÕ½.Å][Ø.FÕ½zÃ.KÖ¼*Ó½L......I 000160
+ CB25A003 B5CB66F7 68798788 700E1EAD A1502520 FC3C4E26 20FC4CC8 CCC2CEC6 ÆÎÂÌÈLü &N<ü %P¡­..p..yh÷f˵..%Ë 000180
+ 9CBEB1C7 B2BFFA4B 4B2CEBAB C0B8BFB4 BC292C01 B94A3C01 B56A6C01 198B8C02 .....ljµ.<J¹.,)¼´¿¸À«ë,KKú¿²Ç±¾. 0001A0
+ 0C8BACB7 D70C7BAC B9D60C6B ACBAC70C 6BACBAB8 1C4B9CBC A91C3B9C BD9A1C2B +..½.;.©¼.K.¸º¬k.Ǻ¬k.Ö¹¬{.×·¬.. 0001C0
+ 4BD0DA0C 2B4BD0CA 0C3B5BCF CAACB4F5 0CAB0C4B 5BCFB0C9 B0B5E60C 9BACB6E6 涬..æµ°É°Ï[K.«.õ´¬ÊÏ[;.ÊÐK+.ÚÐK 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 32 (00000020), 512 (0200) bytes
+
+ D10A0D9B 14ADCFB1 49D1FA0C AB14ADCE B14AD1EA 0C0B5BD0 EA0C0B5B D0DA0C2B +.ÚÐ[..êÐ[..êÑJ±Î­.«.úÑI±Ï­....Ñ 000000
+ 02004BC2 2A1D2B5E 144BC21A 1D2B6E14 4BC21A0D 8B044BC2 0A1D8B14 ADD0B148 H±Ð­....ÂK....ÂK.n+..ÂK.^+.*ÂK.. 000020
+ B2B8E8AB D3B2B8F7 ABD3B1B9 06ACD3B1 B915ACD3 B1B915AC D2B29F5B C12A1DAB «.*Á[.²Ò¬.¹±Ó¬.¹±Ó¬.¹±Ó«÷¸²Ó«è¸² 000040
+ D3B2B8E8 ABD3B2B8 D9ABD3B2 B8B2B93A 2D8B0B3D 2D4B8E2B 9BABD3B2 B8D9ABD3 Ó«Ù¸²Ó«.+.K-=..-:¹²¸²Ó«Ù¸²Ó«è¸²Ó 000060
+ D2B29F4B C22A2D2B 9E5BC12A 2D9B5BC1 2A3D8B5B C13A2DFB B806ACD3 B2B8F7AB «÷¸²Ó¬.¸û-:Á[.=*Á[.-*Á[.+-*ÂK.²Ò 000080
+ B245D40A 1DFB45D4 0A2DFB44 D41A1D4B 344BC21A 2D2B444B C21A2D2B 4FB424AC ¬$´O+-.ÂKD+-.ÂK4K..ÔDû-.ÔEû..ÔE² 0000A0
+ 15ADCBB1 B025ADCC B1AF25AD CDB19F34 ADCEB18F 34ADCFB1 56D3FA1C 6B35ADCF Ï­5k.úÓV±Ï­4.±Î­4.±Í­%¯±Ì­%°±Ë­. 0000C0
+ F70C7BAC B6F70C7B 0C5B6BD0 B0C8B0B4 060D9B0C 3B5BD1B0 C9B1B215 ADCBB0B2 ²°Ë­.²±É°Ñ[;....´°È°Ðk[.{.÷¶¬{.÷ 0000E0
+ 7B2CFBAB BDB1C9B1 C1CAABCB B1C2BA9B CCB1C3B0 B9D80C5B 0C7B8BCE B0C6B0B6 ¶°Æ°Î.{.[.ع°Ã±Ì.ºÂ±Ë«ÊÁ±É±½«û,{ 000100
+ 500B7D02 CC2A908C 01196B5C 01B4B0C3 14800B1B ACFB4BBB ABC0B5C5 B2BEEA3B ;꾲ŵÀ«»Kû¬....ð´.\k....*Ì.}.P 000120
+ 738C1C01 B40C5C01 83038303 84038303 84031303 6CF97458 673D140B 1FB2B118 .±²...=gXtùl.............\.´...s 000140
+ 7DD76A8D D7C0D478 4D82D288 3D85CE98 4D96CAA9 3D99C6B9 3DC0ABCB 4DC3CEDF ßÎÃMË«À=¹Æ.=©Ê.M.Î.=.Ò.MxÔÀ×.j×} 000160
+ 0301889C 43DF999C 41DFB98C 311080CD FB8DCFF9 8DD0E99D D1E88DD3 C88DD5A8 ¨Õ.ÈÓ.èÑ.éÐ.ùÏ.ûÍ..1.¹ßA..ßC.... 000180
+ DEBA093C DF09AC4A DE1A9C3A DF29AC48 DE3A9C47 DF499C37 1090C559 F49DC758 XÇ.ôYÅ..7.IßG.:ÞH¬)ß:..ÞJ¬.ß<.ºÞ 0001A0
+ DB5B7A3C DC6A5B4C DB6B4B4C DC7B4A3C DD8A3A4C DD8A3A3C DE9A1A4C DDAA0A4C L.ªÝL..Þ<:.ÝL:.Ý<J{ÜLKkÛL[jÜ<z[Û 0001C0
+ DB3CD82B CB3CD92B C0CA840D 2CC0CA93 0D3C9B4C D94B8B4C DA4B8B3C DB4B7B4C L{KÛ<.KÚL.KÙL.<..ÊÀ,..ÊÀ+Ù<Ë+Ø<Û 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 33 (00000021), 512 (0200) bytes
+
+ 3DD3CCD1 34CD1C3D D4CCD044 CD0C3DD5 CCCF63CD EC4CD6CC CE730D1C DB4CD72B +×LÛ..sÎÌÖLìÍcÏÌÕ=.ÍDÐÌÔ=.Í4ÑÌÓ= 000000
+ D4BC017C 3DCECCD6 E4CC6C3D CFCCD503 CD4C4DD0 CCD413CD 3C4DD1CC D323CD2C ,Í#ÓÌÑM<Í.ÔÌÐMLÍ.ÕÌÏ=lÌäÖÌÎ=|.¼Ô 000020
+ 83BCB4DA 84BC039C 4DC9C002 9C3DCAC0 B2D9B4BC B2D9C3BC B2D8D3BC B2D70200 ..ײ¼Óز¼ÃÙ²¼´Ù²ÀÊ=..ÀÉM..¼.Ú´¼. 000040
+ 14ACA9DE 33ACA8DD 34ACA8DD 43ACB7DC 44BCB6DB 54BCA6DC 73ACB5DB 74BCB4DB Û´¼tÛµ¬sܦ¼TÛ¶¼DÜ·¬Cݨ¬4ݨ¬3Þ©¬. 000060
+ 95C50901 73499CDF 74399CDF 94299CDF A319ACDE A40A9CDF 039CABDE 04ACAADD ݪ¬.Þ«..ß..¤Þ¬.£ß.).ß.9tß.Is..Å. 000080
+ D3E88DD1 E99DCFF9 ADCEF8BD CD080113 B89CDF14 999CDF34 898C1030 85C7F94D MùÇ.0...4ß...ß.¸...ͽøέùÏ.éÑ.èÓ 0000A0
+ BDBAC0B3 9DC699A3 9DCA6994 8DCE5883 8DD22874 8DD4C0D7 68ADD6A8 8DD5C88D .ÈÕ.¨Ö­h×ÀÔ.t(Ò..XÎ..iÊ.£.Æ.³Àº½ 0000C0
+ 0E25F1F4 032124D0 31303840 38303840 38303830 1500BC4C 11807C3C DFCEC3C4 ÄÃÎß<|..L¼..0808@808@801Ð$!.ôñ%. 0000E0
+ D0407658 3A1C5610 3C5A78F6 0C649ED6 7ED85EDA 3E1CED8E 103C5A78 4668F569 iõhFxZ<..í.>Ú^Ø~Ö.d.öxZ<.V.:Xv@Ð 000100
+ 10DC3EDA 5ED87ED6 9E64FE0C 76583A1C 56103C5A 78464AF5 690E25F1 F4033C24 $<.ôñ%.iõJFxZ<.V.:Xv.þd.Ö~Ø^Ú>Ü. 000120
+ B32559E3 B31669B3 2559E2B5 4339A667 F985606F D4DE0B23 D9704076 583A1C8E ..:Xv@pÙ#.ÞÔo`.ùg¦9CµâY%³i.³ãY%³ 000140
+ E3B31669 B32559E2 B31669B3 2559E3B3 1669B325 59E2B316 69B32559 E2B31669 i.³âY%³i.³âY%³i.³ãY%³i.³âY%³i.³ã 000160
+ 69B32559 E2B31669 B32559E2 B31669B3 2559E3B3 1669B325 59E2B316 69B32559 Y%³i.³âY%³i.³ãY%³i.³âY%³i.³âY%³i 000180
+ 59B31669 B32559E4 B31669B3 25599728 0120D495 2559E2B3 1669B325 59E3B316 .³ãY%³i.³âY%.Ô .(.Y%³i.³äY%³i.³Y 0001A0
+ B32559E2 B31669B3 2559E2B3 1669B325 59E3B316 69B32559 E295D482 12009725 %....Ô.âY%³i.³ãY%³i.³âY%³i.³âY%³ 0001C0
+ E3B31669 B32559E2 B31669B3 2559E3B3 1669B325 59E2B316 69B32559 E3B31669 i.³ãY%³i.³âY%³i.³ãY%³i.³âY%³i.³ã 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 34 (00000022), 512 (0200) bytes
+
+ 39B52559 E2B31669 B32559E3 B31669B3 2559E2B3 1669B325 59E2B316 69B32559 Y%³i.³âY%³i.³âY%³i.³ãY%³i.³âY%µ9 000000
+ BA665D59 BA866D65 BBA54DCB 5BDCB0BF F37DB56F F978606F D4DE0B25 F7A1A643 C¦¡÷%.ÞÔo`xùoµ}ó¿°Ü[ËM¥»em.ºY]fº 000020
+ C5797BB8 997CB796 8BCC567B B8E85CB5 966BD135 6BB9365D B2957BD4 0200145B [...Ô{.²]6¹k5Ñk.µ\è¸{VÌ..·|.¸{yÅ 000040
+ A86BD57B A48BB936 B0A845BA 986B81B7 28A47BB9 16D66B42 B9970B1B ACB897AB «.¸¬...¹BkÖ.¹{¤(·.k.ºE¨°6¹.¤{Õk¨ 000060
+ D49BCF6B C3D49BBC 553CBDC8 6BC5C48B BB664CBC F8BA266B B4C48BBA 85B73ABB »:·.º.Ä´k&ºø¼Lf».ÄÅkȽ<U¼.ÔÃkÏ.Ô 000080
+ D49BC2E5 4BBD196C BED49BC0 F64BBDF9 BF064CBD F95BC1D4 9BBE164C BDD96BC2 ÂkÙ½L.¾.ÔÁ[ù½L.¿ù½KöÀ.Ô¾l.½KåÂ.Ô 0000A0
+ BB986CB9 C48BC7A6 4BBCF8C6 B64BBC68 5CBCD38B C5B64BBD 396CBCD4 9B2F6CBD ½l/.Ô¼l9½K¶Å.Ó¼\h¼K¶Æø¼K¦Ç.Ĺl.» 0000C0
+ 746BD086 4BB7F75C B8847BCE 864BB9C7 6CB8A47B CC864BBA A86CB9A4 8BCAA53B ;¥Ê.¤¹l¨ºK.Ì{¤¸lǹK.Î{.¸\÷·K.Ðkt 0000E0
+ 866B65DA 865B59D9 764BB175 6DB8245B D6854BB3 466DB754 6BD2864B B5176DB7 ·m.µK.ÒkT·mF³K.Ö[$¸mu±KvÙY[.Úek. 000100
+ 956BD795 A56BD856 A66BDAB4 BBD50DCB 6BDFD76B 2F60BB17 01A60BFB 5DB9B4DC Ü´¹]û.¦..»`/k×ßkË.Õ»´Úk¦VØk¥.×k. 000120
+ 7BB9F54C B7876BCF 746BB816 4DB5876B D1546BB8 364DB396 5BD5245B B9564DB1 ±MV¹[$Õ[.³M6¸kTÑk.µM.¸ktÏk.·Lõ¹{ 000140
+ 8BBAF6C7 C48BB996 3CBBA85B CAA48BB9 A64CBA88 6BCBA47B B9C64CB9 876BCD84 .Ík.¹Lƹ{¤Ëk.ºL¦¹.¤Ê[¨»<.¹.ÄÇöº. 000160
+ 9BBE164C BDE95BC2 D49BBD26 4CBDC96B C34FBDB9 6BC5D38B BC654CBC B86BC6C4 ÄÆk¸¼Le¼.ÓÅk¹½OÃkɽL&½.ÔÂ[é½L.¾. 000180
+ 585CBCD4 9BC3C64B BD296CBD 4FBD196C BED49BC1 F54BBD09 6CBFD49B BF06FCD4 Ôü.¿.Ô¿l.½KõÁ.Ô¾l.½O½l)½KÆÃ.Ô¼\X 0001A0
+ B76CB9A4 8BCA964B BA986CBA B38BC9A5 4BBC786C BAC48BC6 F6BBC48B C5C63BBD ½;ÆÅ.Ä»öÆ.ĺlx¼K¥É.³ºl.ºK.Ê.¤¹l· 0001C0
+ 6BD4854B B5266DB8 547BD086 4BB7066D B8747BCE 864BB8E7 5CB9947B CC864BBA ºK.Ì{.¹\ç¸K.Î{t¸m.·K.Ð{T¸m&µK.Ôk 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 35 (00000023), 512 (0200) bytes
+
+ 30C0307B 1130BDB0 DEA54BCB 5DB956A6 6DB89585 6DB8145B D7864BB2 556DB834 4¸mU²K.×[.¸m..¸m¦V¹]ËK¥Þ°½0.{0À0 000000
+ C4C3E303 6D3E6334 8233A122 1DD3212D 2ED13F5C 7A984667 F52B1025 F1F40327 '.ôñ%.+õgF.z\?Ñ.-!Ó."¡3.4c>m.ãÃÄ 000020
+ 3CD06FF3 951F341F 8A05288A B01BD202 3D3C4C4B 3C3C4C3C 3CCF0200 F34C3CCF Ï<Ló..Ï<<L<<KL<=.Ò.°.(...4..óoÐ< 000040
+ F6CCF6CD D56CCDD5 6CCDD55C CDD65CCD E54CCED5 5CCEE44C CEE44CCF F33CCFF3 óÏ<óÏLäÎLäÎ\ÕÎLåÍ\ÖÍ\ÕÍlÕÍlÕÍöÌö 000060
+ CCAE8CE7 CA58BE7C CB38BE7C BF8CCB27 BE8CCB27 BE7CCF6C CCF7CCC6 7CCCF6CC ÌöÌ|ÆÌ÷ÌlÏ|¾'Ë.¾'Ë.¿|¾8Ë|¾XÊç.®Ì 000080
+ F6CEF6CD D76CCDF7 CDD67CDF 7CE2CCC8 7CE2CCC8 7CCF8CE3 CCC78CE5 CC78BE9C .¾xÌå.ÇÌã.Ï|ÈÌâ|ÈÌâ|ß|ÖÍ÷Íl×ÍöÎö 0000A0
+ 133DD113 3DD0044D D0044DCF F55CCFF4 5CCFE56C CEF55CCE E65CCEE6 5CCEF6CE ÎöÎ\æÎ\æÎ\õÎlåÏ\ôÏ\õÏM.ÐM.Ð=.Ñ=. 0000C0
+ CEE65CCF F54CCFF5 5CCF044D D0044DD0 133DD113 3D6FF995 1F341F8A 05298AB8 ¸.)...4..ùo=.Ñ=.ÐM.ÐM.Ï\õÏLõÏ\æÎ 0000E0
+ CF8CCC27 CE8CCC27 DE7CDF6C CDF7CDD6 7CCDF6CE F6CEF6CE E56CCEE5 6CCEF55C \õÎlåÎlåÎöÎöÎöÍ|ÖÍ÷Ílß|Þ'Ì.Î'Ì.Ï 000100
+ 7CE2CBB8 7CE2CBB8 7CBF8CE3 CBB78CE5 CAA87C9E CCBE8CE7 CC58CE7C CC38CE7C |Î8Ì|ÎXÌç.¾Ì.|¨Êå.·Ëã.¿|¸Ëâ|¸Ëâ| 000120
+ D55CCEE4 5CCDD56C CDD55CCD D65CCDD6 5CCDF6CC F6CCF6CC C76CCCF7 CCC67CBF ¿|ÆÌ÷ÌlÇÌöÌöÌöÍ\ÖÍ\ÖÍ\ÕÍlÕÍ\äÎ\Õ 000140
+ 1E80E71E 602040DA 6FF84032 434C1F07 2A8BC0D0 F33CCFF3 3CCFE44C CEE44CCE ÎLäÎLäÏ<óÏ<óÐÀ.*..LC2@øoÚ@ `.ç.. 000160
+ 7C746CD0 48083D9C 961CACA6 DA6B8BCD C61A086D D028266D D246336D D3C36DE3 ãmÃÓm3FÒm&(Ðm..ÆÍ.kÚ¦¬...=.HÐlt| 000180
+ 13307D01 BC01F81B C017303D 01D7DF19 14B9AD42 A2D84944 59AD45A5 D16B64AB «dkÑ¥E­YDIØ¢B­¹..ß×.=0.À.ø.¼.}0. 0001A0
+ DA6ACAC1 69C9038D 84D0C647 C7BA46B6 D15A545A 9D4494D8 2A24BA9D 4191DFD7 ×ß.A.º$*Ø.D.ZTZѶFºÇGÆÐ...ÉiÁÊjÚ 0001C0
+ 140B2B18 80DA0402 E60178EE 0136CE3D D3363D64 D2266D82 D0068DA1 6C8CBDB6 ¶½.l¡..Ð.m&Òd=6Ó=Î6.îx.æ..Ú..+.. 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 36 (00000024), 512 (0200) bytes
+
+ F52B0F25 F1F4032C 2DC0103B DBF5EAB2 DDF10BD1 1D5BAFBE 3DB251F9 5958673D =gXYùQ²=¾¯[.Ñ.ñݲêõÛ;.À-,.ôñ%.+õ 000000
+ B3B3B4B3 B4B3B4F3 3BE23B4B 3E6C3E62 3481032D D1211DD1 E3022D4C 6A98450D .E.jL-.ãÑ.!Ñ-..4b>l>K;â;ó´³´³´³³ 000020
+ B5A04076 583A1C56 103C5A78 460DF50E 0E25F1F4 032E13D0 02001AD1 C2B3A4B4 ´¤³ÂÑ...Ð...ôñ%..õ.FxZ<.V.:Xv@.µ 000040
+ 365D3F6D D3F5D336 5D3F6DD3 F5D3365D D36FD325 5E3DD56F F9953443 4C1F072F /..LC4.ùoÕ=^%ÓoÓ]6ÓõÓm?]6ÓõÓm?]6 000060
+ 6DD3F5D3 365D3F6D D3F5D336 5D3F6DD3 F5D3365D 3F6DD3F5 D3365D3F 6DD3F5D3 ÓõÓm?]6ÓõÓm?]6ÓõÓm?]6ÓõÓm?]6ÓõÓm 000080
+ 6DD3F5D3 365D3F6D D3F5D336 5D3F6DD3 F5D3365D 3F6DD3F5 D3365DE2 D3365D3F ?]6Óâ]6ÓõÓm?]6ÓõÓm?]6ÓõÓm?]6ÓõÓm 0000A0
+ 6DD3F5D3 365DE2D3 365D3F6D D3F5D336 5D3F6DD3 F5D3365D 3F6DD3F5 D3365D3F ?]6ÓõÓm?]6ÓõÓm?]6ÓõÓm?]6Óâ]6ÓõÓm 0000C0
+ D3365D3F 6DD3F5D3 365D3F6D D3F5D336 5D3F6DD3 F5D3365D 3F6DD3F5 D3365D3F ?]6ÓõÓm?]6ÓõÓm?]6ÓõÓm?]6ÓõÓm?]6Ó 0000E0
+ F5400E25 F1F4033A 1FD0503D D5253E6D D3F5D336 5D3F6DD3 F5D3365D 3F6DD3F5 õÓm?]6ÓõÓm?]6ÓõÓm>%Õ=PÐ.:.ôñ%.@õ 000100
+ 0E25F1F4 033B35D0 4076583A 1C56103C 5A782620 0076583A 1C56103C 5A78463F ?FxZ<.V.:Xv. &xZ<.V.:Xv@Ð5;.ôñ%. 000120
+ E3A4B3E6 13463B2C 1D2C102D 2E3B5A88 25200076 583A1C56 103C5A78 463FF55D ]õ?FxZ<.V.:Xv. %.Z;.-.,.,;F.泤ã 000140
+ 02900FD2 2B2EF913 58673D14 0B3D1260 192D3B4A 3A3AAFA3 A4F33AAF A423AEA3 £®#¤¯:󤣯::J;-.`.=..=gX.ù.+Ò... 000160
+ BF868DB9 B8ADB10A 01BF1690 DB01B1CB 68F96A58 673D140B 4087A120 BD920FB1 ±..½ ¡.@..=gXjùh˱.Û..¿..±­¸¹..¿ 000180
+ E54BDB04 4CD9244C D7444CD5 645CD185 5CCFA55C CDC56CC9 F65CC725 6DC3566D mVÃm%Ç\öÉlÅÍ\¥Ï\.Ñ\dÕLD×L$ÙL.ÛKå 0001A0
+ A94BB3C5 8BBB5BB4 E44BDB4B B6048CC0 744B1340 B81401A4 4BDFB45B DDC55BDB Û[ÅÝ[´ßK¤..¸@.KtÀ..¶KÛKä´[».ųK© 0001C0
+ 49B9948B B7A4945B B8784B5A B9658BB7 054BBA45 7BB9144B BB068BBA 244BBC76 v¼K$º..»K.¹{EºK.·.e¹ZKx¸[.¤·..¹I 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 37 (00000025), 512 (0200) bytes
+
+ B0C1594B 45B0B0C0 594B46B8 F49BB564 844BBE69 4B47B8D4 8BB68494 4BBB784B Kx»K..¶.Ô¸GKi¾K.dµ.ô¸FKYÀ°°EKYÁ° 000000
+ 1424ABC4 3A4BE242 B24A9CB4 2424ABC3 4A4B3F14 ABC3494B 4F14ABC2 594B44B1 ±DKY«.OKIë.?KJë$$´.J²BâK:Ä«$. 000020
+ B34AACB3 14E234AB C44A8BB3 5A9CB438 ABC53A0B EB380200 ABC5498B B34AACB4 ´¬J³.IÅ«..8ë.:Å«8´.Z³.JÄ«4â.³¬J³ 000040
+ 2A9CB534 24ABC349 4B33B33A 9CB43433 ABC34A4B 41B33AAC B41434AB C4494B41 AKIÄ«4.´¬:³AKJë34´.:³3KIë$4µ.* 000060
+ 46B1B2BD 684B36B2 B1BE694B 35B2B1BF 594B44B2 B0C0594B 44B2B0C1 594B43B2 ²CKYÁ°²DKYÀ°²DKY¿±²5Ki¾±²6Kh½²±F 000080
+ 4B4A9955 B4974B3A AA53B678 5B48B029 858BB784 139B42B9 784B47B1 B3BB784B Kx»³±GKx¹B...·..)°H[x¶Sª:K.´U.JK 0000A0
+ 402A402A 40B9B78B C0642B5B 4BDB4BB4 B5B1B8BB 255B946A 97BA144B 9767B0A8 ¨°g.K.º.j.[%»¸±µ´KÛK[+dÀ.·¹@*@*@ 0000C0
+ 860CBB6C C4195DC0 4A6DBC99 5DB9C95D B7F85D2A 402A402A 402A4029 50295029 )P)P)@*@*@*@*]ø·]ɹ].¼mJÀ].Äl».. 0000E0
+ 9A55EDAF 6FF19513 25F1F403 5B0D4870 5C6B01C0 DEC7D7B5 B41A2DEB 8BCCB0C6 Æ°Ì.ë-.´µ×ÇÞÀ.k\pH.[.ôñ%..ño¯íU. 000100
+ 032DD2B1 67F72B10 25F1F403 6030C0F0 9A55EDAA 6FFE9513 25F1F403 5D0D48A0 .H.].ôñ%..þoªíU.ðÀ0`.ôñ%.+÷g±Ò-. 000120
+ 132D2F1D E2D3212D 1A332843 36033DE6 3CE34C3C CFC4F33C CFC3C4C3 C3B4C4C3 ÃÄ´ÃÃÄÃÏ<óÄÏ<Lã<æ=.6C(3.-!Óâ./-. 000140
+ D11CCDD1 1BCDD11B CDD13A9D D3586DD8 5268F21D 19434C1F 071234C0 6489A7C5 ŧ.dÀ4...LC..òhRØmXÓ.:ÑÍ.ÑÍ.ÑÍ.Ñ 000160
+ 1F071334 C030914D D7766DD6 677DD657 8DD5588D D4499DD3 3AADD32A BDD22BBD ½+Ò½*Ó­:Ó.IÔ.XÕ.WÖ}gÖmv×M.0À4... 000180
+ D21AADD1 1ABDD00B BDD0CC0C BDD00CBD D01CADD2 498DD586 2DD568E5 1D19434C LC..åhÕ-.Õ.IÒ­.н.н.Ìн.н.Ñ­.Ò 0001A0
+ 32DD135E F0112243 4C1F0714 2DC0D8A1 4DD7566D D5477DD4 478DD338 8DD3299D .)Ó.8Ó.GÔ}GÕmV×M¡ØÀ-...LC".ð^.Ý2 0001C0
+ 1160DEC8 ADDA8C1D 6D3D4D7D 74D168B8 8898C777 177D75D3 37577D61 D916B44D M´.Ùa}W7Óu}.wÇ..¸hÑt}M=m..Ú­ÈÞ`. 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 38 (00000026), 512 (0200) bytes
+
+ 4C47CEF4 45D0F434 D233244D 32D413E3 633DE567 F31C2843 4C1F0715 36B8302D -0¸6...LC(.ógå=cã.Ô2M$3Ò4ôÐEôÎGL 000000
+ 1F071609 18C4182D CC6C9C8C 7CAC5C8C 88C3077C C1466C6B C6A6855C 59CA85C4 Ä.ÊY\.¦ÆklFÁ|.Ã..\¬|..lÌ-.Ä..... 000020
+ 45D064B5 7576A6D2 D0D0D4A7 68DC1B1B 6486AD0A 02001733 C0DE54F7 0430434C LC0.÷TÞÀ3....­.d..Üh§ÔÐÐÒ¦vuµdÐE 000040
+ C07AD4D0 D0D26A67 575B46D0 54244D43 D4F432D6 13644DE6 31D62344 4D3F244D M$?MD#Ö1æMd.Ö2ôÔCM$TÐF[WgjÒÐÐÔzÀ 000060
+ 7BBDD88A BDD83AAE ADAFADD9 9BCDD99C 1D7DCDD9 4ABEFEEF 1B203BB5 54061829 )..Tµ; .ïþ¾JÙÍ}..ÙÍ.Ù­¯­®:ؽ.ؽ{ 000080
+ C2C3C2C6 9B9CCCF5 3CD039FE 102025F1 F4032025 B01210D0 D6A96DDC 154DCDD6 ÖÍM.Üm©ÖÐ..°% .ôñ% .þ9Ð<õÌ..ÆÂÃÂ 0000A0
+ 20D366F0 1623434C 1F075E38 C0D1F25C CDA7BCC6 C2C4C2C3 C2C3C2C4 C2C3C2C4 ÄÂÃÂÄÂÃÂÃÂÄÂƼ§Í\òÑÀ8^..LC#.ðfÓ 0000C0
+ 6D56D585 355D5AD1 B5C6C6A6 166D68D3 66566D64 D72696CD BFADDDF8 6D114013 .@.møÝ­¿Í.&×dmVfÓhm.¦ÆƵÑZ]5.ÕVm 0000E0
+ 1C56103C 5A784663 F50E0E25 F1F4035F 13D013DF 41D33D52 DB15966D 62D74656 VF×bm..ÛR=ÓAß.Ð._.ôñ%..õcFxZ<.V. 000100
+ ACF5BB5B CA6AE209 9D88D198 366D2CD7 A268EF1C 26434C1F 077D41C0 4076583A :Xv@ÀA}..LC&.ïh¢×,m6.Ñ...âjÊ[»õ¬ 000120
+ 6AD3A645 5D6AD3F6 69D39627 7D8F188D 78D28718 8D97D079 188D97D0 F9A6ACA5 ¥¬¦ùÐ...yÐ....Òx...}'.ÓiöÓj]E¦Ój 000140
+ 5D7D442D 8D630D8D 849D1CDB C562F50E 2C434C1F 077E31C0 3CD6034D D5B4455D ]E´ÕM.Ö<À1~..LC,.õbÅÛ.....c.-D}] 000160
+ 077F27C0 C0B51D9C D884D0D6 83D2D474 D5D075D7 5B87028D 8585D082 577B7D05 .}{W.Ð.....[×uÐÕtÔÒ.ÖÐ.Ø..µÀÀ'.. 000180
+ 1BBDC3D1 2CD00C1D D11C3D1E D00C2D1C CDB3D15B 588D58D7 5563F30E 28434C1F .LC(.ócU×X.X[ѳÍ.-.Ð.=.Ñ..Ð,Ñý. 0001A0
+ 6668981A 5D9CCCD4 C2C1C7D9 88BCD768 FD69514E 2E4F080B 75B05075 5D88D558 XÕ.]uP°u..O.NQiýh×¼.ÙÇÁÂÔÌ.]..hf 0001C0
+ 9C9CC3C0 299C9CC4 C0388C9C C59BC2C8 79AC189C 8CC98918 759CCB96 37379CCE Î.77.Ë.u..É...¬yÈÂ.Å..8ÀÄ..)ÀÃ.. 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 39 (00000027), 512 (0200) bytes
+
+ ACD6EBAC C2260CDC 9CC2181C BCACC10A 1CBC9CC1 C02AACAC C1C02AAC 9CC2C039 9ÀÂ.¬*ÀÁ¬¬*ÀÁ.¼..Á¬¼..Â.Ü.&¬ëÖ¬ 000000
+ 67A05B7D D2E4C9C3 CBC2D3C0 CDC0D5FA AC17E0C7 2C40CEAC CF9AECD6 FA9CD7F9 ù×.úÖì.ϬÎ@,Çà.¬úÕÀÍÀÓÂËÃÉäÒ}[.g 000020
+ 4CBD494C BB686CB7 896CB4B9 8CA9CFBC D2B80200 D8B0C868 FD69434A E3E9070C ..éãJCiýhÈ°Ø..¸Ò¼Ï©.¹´l.·lh»LI½L 000040
+ BEAA1BDB ABBAB1BD B91BCBAB BBB1BCC9 1BBBABBC B0BCE9AB BBF99BBB 097CBC29 )¼|.».ù»«é¼°¼«».ɼ±»«Ë.¹½±º«Û.ª¾ 000060
+ B1B80AAC D59E0BFB ABB9B1BE 9A3BCBAB B9DEE4AA C0EAADB8 CE6BC1BA 8BC0B9AB «¹À.ºÁkθ­êÀªäÞ¹«Ë;.¾±¹«û..Õ¬.¸± 000080
+ AA161001 1830745D 026C0168 FD69434A E3E9070D 58C0C337 4C8EB3BC B3B6B1BE ¾±¶³¼³.L7ÃÀX..éãJCiýh.l.]t0....ª 0000A0
+ BB9DDA9C ADDA9C9D DB8C9DDC 7C9DDD6C 9DDE5C9D DF5B8D11 A0D42901 2A9D14C0 À..*.)Ô...[ß.\Þ.lÝ.|Ü..Û..Ú­.Ú.» 0000C0
+ D1DAD1D4 CCCDD6EA AD26E0D7 2C40AEEA ADD87EAD DE89ADDD FAD8DA9D D9CAADD9 Ù­ÊÙ.ÚØúÝ­.Þ­~Ø­ê®@,×à&­êÖÍÌÔÑÚÑ 0000E0
+ 8AA91DA0 1DAD0D02 D6D6D526 B0DD6B01 68FD6968 6FD4DE0B 0E9FC011 7011408E .@.p.À...ÞÔohiýh.kÝ°&ÕÖÖ..­...©. 000100
+ E97DDAD1 DA0901B4 1DAD9D12 40D93894 8D1460D5 49569D16 60D27917 9D1980A9 ©....yÒ`..VIÕ`...8Ù@..­.´..ÚÑÚ}é 000120
+ D0DB99CD DAD1DA9A CDDAD1DA A9CDD9D2 D9AABDDA D2D9C9AD D9D2D9D9 9DD9D2D9 ÙÒÙ.ÙÙÒÙ­ÉÙÒÚ½ªÙÒÙÍ©ÚÑÚÍ.ÚÑÚÍ.ÛÐ 000140
+ 05E4AADE EAAD2CA0 DE6AEDDA F6ADDE9A 8DDEEA9D D9CACDDC 8ACDDBD0 DB8ACDDB ÛÍ.ÛÐÛÍ.ÜÍÊÙ.êÞ..Þ­öÚíjÞ.,­êÞªä. 000160
+ 18AD1DAD 1D4DCDDC CCCDD6EA ADDE3A02 7EBDDDEA ADD7CCAD DE7A1DAD ADDE7A1D .zÞ­­.zÞ­Ì×­êݽ~.:Þ­êÖÍÌÜÍM.­.­. 000180
+ 1100BD8D 0143D7D5 D625C0DD 6B0168FD 69686FD4 DE0B0F88 C0100117 011701E4 ä......À...ÞÔohiýh.kÝÀ%ÖÕ×C..½.. 0001A0
+ 4D7D9DDE 5C4D7D9D DF5B8D62 D818014A 9D54D629 012A9D67 D24901AC AA986A01 .j.ª¬.IÒg.*.)ÖT.J..Øb.[ß.}M\Þ.}M 0001C0
+ D9CA1DAD ADD9BB1D AD9DDA9C 2D9DADDA 9C2D9D9D DB8C3D8D 9DDC7C4D 7D9DDD6C lÝ.}M|Ü..=.Û..-.Ú­.-.Ú.­.»Ù­­.ÊÙ 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 40 (00000028), 512 (0200) bytes
+
+ DEEAAD26 E0D75140 AEEAADDE 8AEDD7EA 9DDF89AD DDEAADD8 DABDDD8A ADDDCC9D .ÌÝ­.ݽÚØ­êÝ­.ß.ê×í.Þ­ê®@Q×à&­êÞ 000000
+ 69D74667 FC2B2A43 4C1F0722 5DC01170 11701140 8ED1DAD1 DAD1D4CC CDDC6CAD ­lÜÍÌÔÑÚÑÚÑ.@.p.p.À]"..LC*+ügF×i 000020
+ 4623083D 8233A13C A122BDD2 31ADD321 0200BDD2 E212CDD1 3F1CCDA5 D37A588D .XzÓ¥Í.?ÑÍ.âÒ½..!Ó­1Ò½"¡<¡3.=.#F 000040
+ DAC3944D 3CDAC3A3 3DCFA33D CF944D3C DAF34CD9 C4A33D3C 3EDA036D 3E63D133 3Ñc>m.Ú><=£ÄÙLóÚ<M.Ï=£Ï=£ÃÚ<M.ÃÚ 000060
+ 0F23FF08 232C88BF 042D0AB8 B0C11DD2 B22DD0A3 3D3CDAC3 944D4BD9 C4A33D3C <=£ÄÙKM.ÃÚ<=£Ð-²Ò.Á°¸.-.¿.,#..#. 000080
+ 3D3CDAC3 944D4BD9 C4A33D3C DA032DDB 221DDCB1 67EC2B2A 434C1F07 5C5DC0C0 ÀÀ]\..LC*+ìg±Ü."Û-.Ú<=£ÄÙKM.ÃÚ<= 0000A0
+ 36136D33 D0A33DE6 3CDA33CE 944D3CDA F34CD9C4 A33DCFA3 3DCFA33D 4CD9C4A3 £ÄÙL=£Ï=£Ï=£ÄÙLóÚ<M.Î3Ú<æ=£Ð3m.6 0000C0
+ 766D89D5 783AADC5 D13CD11C 2D2FBDD2 213EADD3 21BDD2A2 31AC3183 32D02843 C(Ð2.1¬1¢Ò½!Ó­>!Ò½/-.Ñ<ÑÅ­:xÕ.mv 0000E0
+ 6E656469 0EF0800F 28000384 85983E0E 7C0A38D5 28000342 434C1F07 7B090840 @..{..LCB..(Õ8.|.>.....(..ð.iden 000100
+ 78657420 58655420 656D6568 6373676E 69646F63 15F0524D 43207265 69666974 tifier CMRð.codingscheme TeX tex 000120
+ F6F6F6F6 F6F6F6F6 F6F6F6F5 0000B600 F4657479 62656361 66746E6F 660CF074 tð.fontfacebyteô.¶..õööööööööööö 000140
+ F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 öööööööööööööööööööööööööööööööö 000160
+ F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 öööööööööööööööööööööööööööööööö 000180
+ F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 öööööööööööööööööööööööööööööööö 0001A0
+ F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 öööööööööööööööööööööööööööööööö 0001C0
+ F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 öööööööööööööööööööööööööööööööö 0001E0
+
+Dump of file DISK11:[ANONYMOUS.TEXT1.FONTS]CMR36.300PK;1 on 27-MAR-1991 10:21:13.78
+File ID (473,1,0) End of file block 41 / Allocated 42
+
+Virtual block number 41 (00000029), 512 (0200) bytes
+
+ F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 öööööööööööööööööööööööööööööööö 000000
+ F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 öööööööööööööööööööööööööööööööö 000020
+ 00000000 00000000 00000000 0000FFFF F6F6F6F6 F6F6F6F6 F6F6F6F6 F6F6F6F6 öööööööööööööööö................ 000040
+ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................ 000060
+ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................ 000080
+ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................ 0000A0
+ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................ 0000C0
+ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................ 0000E0
+ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................ 000100
+ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................ 000120
+ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................ 000140
+ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................ 000160
+ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................ 000180
+ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................ 0001A0
+ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................ 0001C0
+ 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................ 0001E0
diff --git a/macros/text1/fonts/dt.240pk b/macros/text1/fonts/dt.240pk
new file mode 100644
index 0000000000..9bafe234a0
--- /dev/null
+++ b/macros/text1/fonts/dt.240pk
Binary files differ
diff --git a/macros/text1/fonts/dt.300pk b/macros/text1/fonts/dt.300pk
new file mode 100644
index 0000000000..137d069175
--- /dev/null
+++ b/macros/text1/fonts/dt.300pk
Binary files differ
diff --git a/macros/text1/fonts/dt.mf b/macros/text1/fonts/dt.mf
new file mode 100644
index 0000000000..54722d595d
--- /dev/null
+++ b/macros/text1/fonts/dt.mf
@@ -0,0 +1,17 @@
+% halftone font with 65 levels of gray, characters "0" (white) to "p" (black)
+
+pair p[]; % the pixels in order (first p0 becomes black, then p1, etc.)
+pair d[]; d[0]=(0,0); d[1]=(1,1); d[2]=(0,1); d[3]=(1,0); % dither control
+def wrap(expr z)=(xpart z mod 8,ypart z mod 8) enddef;
+for i=0 upto 3: for j=0 upto 3: for k=0 upto 3:
+ p[16i+4j+k]=wrap(4d[k]+2d[j]+d[i]+(2,2)); endfor endfor endfor
+
+w#:=8/pt; % that's 8 pixels
+font_quad:=w#; designsize:=8w#;
+
+picture prevchar; prevchar=nullpicture; % pixels blackened so far
+for i=0 upto 64:
+ beginchar(i+ASCII"0",w#,w#,0); currentpicture:=prevchar;
+ if i>0: addto currentpicture also unitpixel shifted p[i-1]; fi
+ prevchar:=currentpicture; endchar;
+endfor
diff --git a/macros/text1/fonts/dt.readme b/macros/text1/fonts/dt.readme
new file mode 100644
index 0000000000..ef9efd8f5d
--- /dev/null
+++ b/macros/text1/fonts/dt.readme
@@ -0,0 +1,8 @@
+DT is a font suggested by Don Knuth and illustrated in TUGboat V8N2. It contains
+65 levels of gray from white to black.
+
+To create a new version of font dt, you must run MF on the file dt300.mf. If,
+for example, you want a different resolution than 300dpi, you could copy
+dt300.mf to dt240.mf, modify the pixels_per_inch to reflect 240dpi, and then
+run MF on dt240. When done, rename the 240gf and tfm files to be dt instead of
+dt240 (or waits).
diff --git a/macros/text1/fonts/dt.tfm b/macros/text1/fonts/dt.tfm
new file mode 100644
index 0000000000..4179f63cc2
--- /dev/null
+++ b/macros/text1/fonts/dt.tfm
Binary files differ
diff --git a/macros/text1/fonts/dt240.mf b/macros/text1/fonts/dt240.mf
new file mode 100644
index 0000000000..27521240d1
--- /dev/null
+++ b/macros/text1/fonts/dt240.mf
@@ -0,0 +1,12 @@
+% halftone font dithered
+mode_setup;
+font_coding_scheme:="TEX TEXT";
+if (pixels_per_inch<>240) or (mag<>1):
+ errmessage "Sorry, this font is only for resolution 240";
+ errmessage "Abort the run now or you'll clobber the TFM file";
+ forever: endfor
+else: input dt fi
+if fontmaking>0: font_family font_identifier_;
+ coding_scheme font_coding_scheme_; fi
+end.
+
diff --git a/macros/text1/fonts/dt300.mf b/macros/text1/fonts/dt300.mf
new file mode 100644
index 0000000000..ed44f467b0
--- /dev/null
+++ b/macros/text1/fonts/dt300.mf
@@ -0,0 +1,12 @@
+% halftone font dithered
+mode_setup;
+font_coding_scheme:="TEX TEXT";
+if (pixels_per_inch<>300) or (mag<>1):
+ errmessage "Sorry, this font is only for resolution 300";
+ errmessage "Abort the run now or you'll clobber the TFM file";
+ forever: endfor
+else: input dt fi
+if fontmaking>0: font_family font_identifier_;
+ coding_scheme font_coding_scheme_; fi
+end.
+
diff --git a/macros/text1/macintosh/texix.macinfo b/macros/text1/macintosh/texix.macinfo
new file mode 100644
index 0000000000..2de62e24e6
--- /dev/null
+++ b/macros/text1/macintosh/texix.macinfo
@@ -0,0 +1,4 @@
+To create a new application on the Macintosh for the TEXT1 sorted index, you
+must TANGLE the TEXIX.WEB file (found in the directory TEXIX) with the
+TEXIX.TURBOMAC changes file. Then compile the program with Turbo Pascal on your
+Macintosh. It requires Turbo Pascal and Turbo Toolbox to compile.
diff --git a/macros/text1/macintosh/texix.turbomac b/macros/text1/macintosh/texix.turbomac
new file mode 100644
index 0000000000..8e6ecaaa49
--- /dev/null
+++ b/macros/text1/macintosh/texix.turbomac
@@ -0,0 +1,591 @@
+% Version 1.0; Dean Guenther; 4/1/86
+% Version 1.1; Dean Guenther; 12/87
+% Version 1.2; Dean Guenther; 6/28/88
+These are the changes necessary to use TEXIX with Turbo mac pascal.
+
+@x line 6
+ \centerline{{\twelvept For IBM VM/CMS Pascal/VS}}
+@y
+ \centerline{{\twelvept For Macintosh Turbo Pascal}}
+@z
+
+@x line 68
+\def\PASCAL{{\sc PASCAL/VS}}
+@y
+\def\PASCAL{{\sc Macintosh Turbo Pascal}}
+@z
+
+@x line 87
+@ The @^TEXIX@>
+program is written entirely in WEB, except for an external
+procedure, {\it plsort}, which is written in @^PL/1@> PL/1.
+This was necessary since
+\PASCAL\ cannot call
+@:plsort@>
+Syncsort @^SYNCSORT@>
+to do an internal sort, and PL/1 can.
+@y
+@ The @^TEXIX@>
+program is written entirely in WEB, except for an internal
+sort which uses the TURBO Pascal DataBase Toolbox sort.
+This was necessary since
+\PASCAL\ cannot itself do a sort.
+@z
+
+@x line 107
+segment texix;
+procedure texix(ix:char); external;
+procedure texix;
+@y
+program texix;
+@{$U Sort@}
+uses sane, MemTypes, QuickDraw, OSIntf, Sort, toolintf; @/
+@{It is required to convert all @@ into a shift-6 \^ {} before
+compiling this with turbo pascal@} @{ There is one exception,
+the line at the bottom that calls the Sort routine should retain
+the at signs.@}
+
+@z
+
+@x line 119
+@<Global Var...@>=
+sysprint:text;
+@!ix_file :text;
+@y
+@<Global Var...@>=
+sysprint:text;
+@!ix_file :text;
+@!curslist:CursorList;
+@!total_recs:integer;
+@!clock_time:integer;
+@z
+
+@x line 123
+@ The {\it sort\_file} is used for the internal sort only. The \text1\ user
+never has access to it.
+
+@<Global Var...@>=
+@!sort_file :file of sort_type;
+@y
+@ The {\it sort\_file} used with Pascal/VS is not needed in \PASCAL.
+@z
+
+@x line 136
+@d dosubstr == substr
+@d doindex == index
+@y
+@d dosubstr == copy
+@d doindex == getindex
+@z
+
+@x line 142
+@d getout == return
+@d messages == sysprint
+@y
+@d getout == exit
+@d messages == output
+@z
+
+@x line 147
+@d max_field = 300
+@d max_levels = 3
+@d max_lrecl = 2048
+@y
+@d max_field = 255
+@d max_levels = 3
+@d max_lrecl = 255
+@z
+
+@x line 147
+in_record := dosubstr(in_record,1 + #)
+@y
+in_record := dosubstr(in_record,1 + #,length(in_record))
+@z
+
+@x line 160
+@d string_type(#) == string(#)
+@y
+@d string_type(#) == string[#]
+@z
+
+@x line 206
+@ This is arbitrary, but
+there should never be more than 8 indicies.
+
+@d s_file_number == '9'
+@y
+@ The variable {\it s\_file\_number} is not used in \PASCAL\ and
+is omitted here.
+@z
+
+@x line 253
+ ccat := x ccat_temp y;
+@y
+ ccat := concat(x,y);
+@z
+
+@x line 277
+@p procedure reset_file(file_number:char);
+begin
+if file_number = '9' then reset(sort_file,
+'NAME=TEXT1$$.OUTSORT.A,LRECL=1857,RECFM=V')
+else reset(ix_file,
+ccat(ccat('NAME=TEXT1$$.IX',str(file_number)),'.A'));
+end;
+@y
+@p procedure reset_file(file_number:char);
+begin
+@{$I-@}
+reset(ix_file,
+ccat('TEXT1$$.IX',file_number));
+@{$I+@}
+if ioresult <> 0 then
+begin
+writeln(messages,^G,
+' -- Cannot find file ',ccat('TEXT1$$.IX',file_number));
+halt;
+end;
+end;
+
+function getindex(x:string_pass;y:string_pass):integer;
+begin
+ getindex := pos(y,x);
+ end;
+
+function trim(object:string_pass):string_pass;
+var i:integer;
+new_string:string_pass;
+begin
+i:=length(object)+1;
+repeat
+ decr(i);
+ until (object[i] <> ' ') or (i=1);
+if (object[i] = ' ') and (i=1)
+then new_string:=''
+else new_string:=copy(object,1,i);
+trim:=new_string;
+end;
+@z
+
+@x line 292
+@p procedure file_rewrite(file_number:char);
+begin
+if file_number = '9'
+then
+rewrite(sort_file,'NAME=TEXT1$$.INSORT.A,LRECL=1857,RECFM=V')
+else
+rewrite(ix_file,
+ccat(ccat('NAME=TEXT1$$.IX',str(file_number)),
+'.A,LRECL=2048,RECFM=V'));
+end;
+@y
+@p procedure file_rewrite(file_number:char);
+begin
+rewrite(ix_file,
+ccat('TEXT1$$.IX',file_number));
+end;
+@z
+
+@x line 343
+@ @<Global Types@>=
+@!string_pass=string_type(max_lrecl);
+@y
+@ @<Global Types@>=
+@!CursorList = array[iBeamCursor..watchCursor] of CursHandle;
+@!string_pass=string_type(max_lrecl);
+@z
+
+@x line 444
+@ The {\it get\_numeric}
+function will take a packed array of length max\_pn\_alpha and convert
+that array (which is really the page number) into an integer.
+
+@p function get_numeric(x_string:string_type(max_pn_alpha)):integer;
+var @!i:integer;
+begin
+readstr(x_string,i);
+get_numeric:=i;
+end;
+@y
+@ This function is needed to put the string to be converted by
+get\_numeric into the upper right portion of the string to be
+converted.
+
+@p function shift_right(in_string:string_pass):decstr;
+var i,j:integer; temp:pn_alpha_type;
+begin
+ j:=0;
+ repeat incr(j); {find the first blank}
+ until (in_string[j] = ' ') or (in_string[j] = '') or
+ (j >= length(in_string));
+ for i:= 1 to sizeof(temp)-1 do temp[i]:=' ';
+ for i:=1 to j do temp[sizeof(temp)-j+i]:=in_string[i];
+ shift_right:=temp;
+ end;
+
+@ The {\it get\_numeric}
+function will take a packed array of length max\_pn\_alpha and convert
+that array (which is really the page number) into an integer.
+
+@p function get_numeric(x_string:string_pass):integer;
+var @!i:integer;
+begin
+get_numeric:=num2integer(str2num(shift_right(x_string)));
+end;
+@z
+
+@x line 459
+@p procedure strvalue(x:integer; var results:pass_pn_alpha);
+var
+temp:string_type(max_pn_alpha);
+begin
+writestr(temp,x);
+results:=ltrim(temp);
+end;
+@y
+@p procedure strvalue(X:integer; var results:pass_pn_alpha);
+var temp:decstr;
+ y:extended;
+ f:decform;
+ i,qq:integer;
+begin
+ f.style := fixeddecimal;
+ f.digits:=0;
+ y:=num2extended(x);
+ for i := 1 to decstrlen do temp[i] := ' ';
+ num2str(f,y,temp);
+ i:=1;
+ results:=temp;
+ end;
+@z
+
+@x line 470
+@p function strconv(x:pn_alpha_type):string_type(max_pn_alpha);
+var i:integer;
+temp:string_type(max_pn_alpha);
+begin
+temp:='';i := 1;
+with sort_record do begin
+repeat
+if x[i] <> ' ' then
+temp := ccat(temp,str(x[i]));
+incr(i);
+until (i > max_pn_alpha) or (x[i] = ' ');
+end;
+strconv:=temp;
+end;
+@y
+@p function strconv(x:pn_alpha_type):pass_pn_alpha;
+var i:integer;
+temp:string_type(max_pn_alpha);
+begin
+temp:='';i := 1;
+with sort_record do begin
+repeat
+if x[i] <> ' ' then
+temp := ccat(temp,x[i]);
+incr(i);
+until (i > max_pn_alpha) or (x[i] = ' ');
+end;
+strconv:=temp;
+end;
+@z
+
+@x line 626
+@ The {\it plsort} procedure is written in PL/1 to call the CMS sort program
+Syncsort. This was necessary since you cannot call Syncsort from PASCAL/VS.
+The fields to be sorted are defined internally in the {\it plsort}
+program. This should be the same as the three sort fields in {\it sort\_type}.
+@:sort_type@>
+@:plsort@> @^PL/1@>
+@^Syncsort@>
+
+@p procedure plsort(var sort_rc:integer); fortran;
+@y
+@ The {\it LessRec} function is used by Turbo Pascal Database Toolbox's
+Sort routine. It returns true if record ``x'' is less than record ``y''.
+The record {\it sort\_type} is used for comparison.
+@:sort_type@>
+
+@p function LessRec(var x,y :sort_type):boolean;
+var Lower :boolean;
+begin Lower := (x.sort_part[1].field_level < y.sort_part[1].field_level);
+if not Lower then begin {x $\ge$ y}
+Lower := (x.sort_part[1].field_level = y.sort_part[1].field_level);
+if Lower then begin {x = y}
+Lower := (x.sort_part[2].field_level < y.sort_part[2].field_level);
+if not Lower then begin {x $\ge$ y}
+Lower := (x.sort_part[2].field_level = y.sort_part[2].field_level);
+if Lower then begin {x = y}
+Lower := (x.sort_part[3].field_level < y.sort_part[3].field_level);
+if not Lower then begin {x $\ge$ y}
+Lower := (x.sort_part[3].field_level = y.sort_part[3].field_level);
+if Lower then begin {x = y}
+Lower := (x.abs_page_number < y.abs_page_number);
+if not Lower then begin {x $\ge$ y}
+Lower := (x.abs_page_number = y.abs_page_number);
+if Lower then begin {x = y}
+Lower := (x.page_number < y.page_number);
+if not Lower then begin {x $\ge$ y}
+Lower := (x.page_number = y.page_number);
+if Lower then {x = y}
+Lower := (x.record_type < y.record_type);
+end; end; end; end; end; end; end; end; end;
+LessRec := Lower;
+end;
+@z
+
+@x line 643
+@ This function converts to all uppercase.
+Notice that this is an EBCIDIC conversion, not an ASCII conversion
+to uppercase.
+
+@p function upper_case(x:char):char;
+var temp:char;
+begin
+ if (ord(x)>=129)and(ord(x)<=169) then
+ temp:=chr(ord(x)+64)
+ else temp:=x;
+upper_case:=temp;
+end;
+@y
+@ This function converts to all uppercase.
+Notice that this is an ASCII conversion, not an EBCDIC conversion
+to uppercase.
+
+@p function upper_case(x:char):char;
+var temp:char;
+begin
+ if ord(x) >= "a" then
+ temp:=chr(ord(x)-@'40)
+ else temp:=x;
+upper_case:=temp;
+end;
+@z
+
+@x line 719
+@<Get Default Index Values@>
+@y
+writeln(messages);
+writeln(messages,'Reading in the input now...');
+total_recs := 0;
+@<Get Default Index Values@>
+@z
+
+@x line 722
+@<Read Next Record@>@/
+@y
+@<Read Next Record@>@/
+incr(total_recs);write(total_recs:6);gotoxy(1,6);
+@z
+
+@x line 728
+end;end;
+@y
+end;
+close(ix_file);
+writeln(messages);
+writeln(messages,'done reading the records. Starting to sort......');
+clock_time := tickcount;
+end;
+@z
+
+@x line 738
+if dosubstr(in_record,doindex(in_record,'=')+1) = 'no'
+@y
+if dosubstr(in_record,doindex(in_record,'=')+1,length(in_record))
+ = 'no'
+@z
+
+@x line 744
+if dosubstr(in_record,doindex(in_record,'=')+1) = 'no'
+@y
+if dosubstr(in_record,doindex(in_record,'=')+1,length(in_record))
+ = 'no'
+@z
+
+@x line 867
+@ Ok, the record has been processed, so write it to the output file.
+
+@<Write Sort Record@>=
+sort_file@@:=sort_record;
+put(sort_file);
+@y
+@ Ok, the record has been processed, so write it to the output file
+using the procedure defined to Turbo Pascal's Database Toolbox.
+
+@<Write Sort Record@>=
+SortRelease(sort_record);
+@z
+
+@x line 890
+The page number for a blind entry will always be 999999999.
+
+@<Do Blind Entry@>=
+begin remove_characters(6);{Throw away the `\$\{\$\}be'}@/
+i := doindex(in_record,'{$}');
+curr_level:=2;
+write_print_chars(i-1);
+curr_level:=0;
+remove_characters(3);{Throw away the `\{\$\}'}
+sort_record.page_number := 999999999;
+@y
+The page number for a blind entry will always be 9999.
+
+@<Do Blind Entry@>=
+begin remove_characters(6);{Throw away the `\$\{\$\}be'}@/
+i := doindex(in_record,'{$}');
+curr_level:=2;
+write_print_chars(i-1);
+curr_level:=0;
+remove_characters(3);{Throw away the `\{\$\}'}
+sort_record.page_number := 9999;
+@z
+
+@x line 976
+str_blind_entry := ccat(str_blind_entry,str(field_level[i]));
+@y
+str_blind_entry := ccat(str_blind_entry,field_level[i]);
+@z
+
+@x line 996
+@ If the {\it page\_string[1]} is less than zero, its alphabetic and
+roman numeral processing is necessary.
+
+@<Do Sorted Non Blind Entry@>=
+with sort_record do begin
+if ord(page_string[1]) < ord('0')
+@y
+@ If the {\it page\_string[1]} is greater
+ than nine, its alphabetic and
+roman numeral processing is necessary.
+
+@<Do Sorted Non Blind Entry@>=
+with sort_record do begin
+if ord(page_string[1]) > ord('9')
+@z
+
+@x line 1103
+then curr_str_page:=dosubstr(curr_str_page,2)
+@y
+then curr_str_page:=dosubstr(curr_str_page,2,length(curr_str_page))
+@z
+
+@x line 1182
+str_build := dosubstr(str_build,i+1);
+end;
+@<Get the Current Print Type of this Page Number@>;@/
+if ord(curr_str_page[1]) < ord('0') {Then its alphabetic}
+@y
+str_build := dosubstr(str_build,i+1,length(str_build));
+end;
+@<Get the Current Print Type of this Page Number@>;@/
+if ord(curr_str_page[1]) > ord('9') {Then its alphabetic}
+@z
+
+@x line 1195
+str_build := dosubstr(str_build,i+1);
+@y
+str_build := dosubstr(str_build,i+1,length(str_build));
+@z
+
+@x line 1311
+while not eof(sort_file) do begin
+sort_record:=sort_file@@;
+get(sort_file);
+@y
+file_rewrite(ix);
+clock_time := tickcount - clock_time;write(^G);
+writeln(messages,'It took ',clock_time/60.0:1:4,' seconds to sort ',
+total_recs:6,' records.');
+writeln(messages,'Now building the file to be formated with TEXT1...');
+while not SortEOS do begin
+SortReturn(sort_record);
+@z
+
+@x line 1524
+@* Main Program.
+Ok, here is the main program. First we initialize (all\_blanks); then
+set the ix\_file for input and the sort\_file for output; read all of the
+entries, processing each one; close the files; sort; read the sorted file
+in and build the entries, writing them back to the ix\_file to be read in
+by the index markup. WHEW!!
+
+@p
+begin @<Initialize Main@>@/
+termout(messages);
+reset_file(ix);@/
+file_rewrite(s_file_number); {Should always be file 9}@/
+read_all_entries;@/
+close(ix_file);@/
+close(sort_file);@/
+@<Sort the Index@>@/
+reset_file(s_file_number);@/
+file_rewrite(ix);@/
+build_sorted_index;@/
+end;
+@y
+@* Main Program.
+Ok, here is the main program. First we initialize (all\_blanks); then
+prompt to determine which index to use (1, 2, or 3).
+Next call Turbo Pascal's sort routine. And thats it.
+ WHEW!!
+
+@p
+begin @<Initialize Main@>@/
+write('Which index are you processing (1, 2, or 3)? ');@/
+readln(ix);@/
+if (ix <> '1') and (ix <> '2') and (ix <> '3') then begin
+writeln(messages,
+'You can only process indexes 1, 2, or 3. Start again.');
+halt; end;
+clearscreen;writeln('');
+writeln(messages,'Loading the sort routine....');
+writeln(messages);
+reset_file(ix);@/
+for m := iBeamCursor to watchCursor do begin
+curslist[m] := getcursor(m);
+hlock(handle(curslist[m]));end;setcursor(curslist[watchCursor]^^);
+showcursor;
+@<Sort the Index@>@/
+hidecursor;
+close(ix_file); {ix_file now has the index to be run through \TeX}
+write(messages,'Press any key to continue ');readln;
+end.
+@z
+
+
+@x line 1548
+@ As mentioned earlier, {\it plsort} is an external PL/1 subroutine
+@^PL/1@>
+@^Syncsort@>
+which is used to call Syncsort to sort the file.
+The sort fields are as follows:
+@y
+@ As mentioned earlier, {\it TurboSort} is a Turbo Toolbox Database
+ subroutine
+which is used to sort the index file.
+The sort fields are as follows:
+@z
+
+@x line 1562
+sort_rc:integer;
+@y
+sort_rc:integer;
+@!ix:char;
+@z
+
+@x line 1564
+@ @<Sort the Index@>=
+plsort(sort_rc);
+if sort_rc = 0
+ then writeln(messages,'Index Successfully Completed')
+ else writeln(messages,'Index Failed');
+@y
+@ @<Sort the Index@>=
+sort_rc := TurboSort(sizeof(sort_type),@@read_all_entries,
+@@LessRec, @@build_sorted_index);
+if sort_rc = 0
+ then writeln(messages,'Index Successfully Completed')
+ else writeln(messages,'Index Failed');
+@z
diff --git a/macros/text1/macintosh/texix_macintosh.readme b/macros/text1/macintosh/texix_macintosh.readme
new file mode 100644
index 0000000000..255c6f6d19
--- /dev/null
+++ b/macros/text1/macintosh/texix_macintosh.readme
@@ -0,0 +1,7 @@
+You may unbinhex the file TEXT1_INDEX_SORT.BIN and run that application on a
+Macintosh (at least up to system 7).
+
+To create a new application on the Macintosh for the TEXT1 sorted index, you
+must TANGLE the TEXIX.WEB file (found in the directory TEXIX) with the
+TEXIX.TURBOMAC changes file. Then compile the program with Turbo Pascal on your
+Macintosh. It requires Turbo Pascal and Turbo Toolbox to compile.
diff --git a/macros/text1/macintosh/text1_index_sort.bin b/macros/text1/macintosh/text1_index_sort.bin
new file mode 100644
index 0000000000..f15a1e7624
--- /dev/null
+++ b/macros/text1/macintosh/text1_index_sort.bin
Binary files differ
diff --git a/macros/text1/macros/cgfonts.lclist b/macros/text1/macros/cgfonts.lclist
new file mode 100644
index 0000000000..6558013c77
--- /dev/null
+++ b/macros/text1/macros/cgfonts.lclist
@@ -0,0 +1,124 @@
+agb
+agbk
+agd
+agxl
+belb
+bell
+belli
+belr
+bemb
+bemi
+bemr
+bemsc
+bkd
+bkdi
+bkl
+bkli
+bodb
+bodbi
+bodbk
+bodbki
+bodi
+bodr
+bodsc
+bodxb
+bordera
+borderb
+brush
+cenb
+ceni
+cenr
+censc
+courier
+ctb
+cti
+ctr
+ding
+elite
+etb
+etbi
+eti
+etr
+etsc
+etsi
+ext
+garab
+garabi
+garai
+garar
+garasc
+garb
+garbi
+garbk
+garbki
+garl
+garli
+garu
+garui
+gkh
+gkhi
+gkt
+gktb
+gkti
+heb
+hebi
+hei
+her
+hesc
+ipa
+korb
+korbi
+kori
+korout
+korr
+korxb
+korxbi
+modern
+mthit
+mthitss
+mthrm
+mthrmss
+ocrb
+olde
+omb
+ombi
+omi
+omr
+omsc
+park
+plb
+plbi
+pli
+plr
+plsc
+quil
+spchar
+specials
+svd
+svdi
+svl
+svli
+svsc
+symbola
+symbolb
+symlogo
+tifd
+tifh
+tifl
+tifr
+trib
+tribc
+tribi
+tribl
+triblb
+tric
+trii
+tril
+trili
+trir
+trisc
+unib
+unibi
+unii
+unil
+unir
diff --git a/macros/text1/macros/cm10.textext b/macros/text1/macros/cm10.textext
new file mode 100644
index 0000000000..aa431de13e
--- /dev/null
+++ b/macros/text1/macros/cm10.textext
@@ -0,0 +1,34 @@
+\font\cmXbi=cmbxti10
+\font\cmXcc=cmcsc10
+\expandafter\newdimen\csname\the\naMEtok ilsx\endcsname
+\global\csname\the\naMEtok ilsx\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsx\endcsname=0pt
+\csname\the\naMEtok ilsx\endcsname=12pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\tenrm}%
+\def\noexpand\mi{\fam1\teni}%
+\def\noexpand\sy{\fam2\tensy}%
+\def\noexpand\ex{\fam3\tenex}%
+ \textfont0=\tenrm \textfont1=\teni
+ \textfont2=\tensy \textfont3=\tenex
+ \textfont\itfam=\tenit
+ \textfont\ttfam=\tentt \textfont\bffam=\tenbf
+ \textfont\ccfam=\cmXcc
+\def\noexpand\bd{\fam\bffam\tenbf}%
+\def\noexpand\it{\fam\itfam\tenit}%
+\def\noexpand\tt{\fam\ttfam\tentt}%
+\def\noexpand\cc{\fam\ccfam\cmXcc}%
+\def\noexpand\bi{\fam\bifam\cmXbi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsx\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cm108m.texmath b/macros/text1/macros/cm108m.texmath
new file mode 100644
index 0000000000..2410c5b3d7
--- /dev/null
+++ b/macros/text1/macros/cm108m.texmath
@@ -0,0 +1,10 @@
+\font\cmVIIIrm=cmr8 \font\cmVIIImi=cmmi8
+\font\cmVIIIsy=cmsy8 \font\cmVIIIex=cmex10
+\font\cmVIIIbd=cmbx8
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\tenrm \scriptfont1=\teni
+ \scriptfont2=\tensy \scriptfont3=\tenex
+ \scriptfont\bffam=\tenbf
+ \scriptscriptfont0=\cmVIIIrm \scriptscriptfont1=\cmVIIImi
+ \scriptscriptfont2=\cmVIIIsy \scriptscriptfont3=\cmVIIIex
+ \scriptscriptfont\bffam=\cmVIIIbd}%
diff --git a/macros/text1/macros/cm109m.texmath b/macros/text1/macros/cm109m.texmath
new file mode 100644
index 0000000000..7b5104aaf7
--- /dev/null
+++ b/macros/text1/macros/cm109m.texmath
@@ -0,0 +1,10 @@
+\font\cmIXrm=cmr9 \font\cmIXmi=cmmi9
+\font\cmIXsy=cmsy9 \font\cmIXex=cmex10
+\font\cmIXbd=cmbx9
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\tenrm \scriptfont1=\teni
+ \scriptfont2=\tensy \scriptfont3=\tenex
+ \scriptfont\bffam=\tenbf
+ \scriptscriptfont0=\cmIXrm \scriptscriptfont1=\cmIXmi
+ \scriptscriptfont2=\cmIXsy \scriptscriptfont3=\cmIXex
+ \scriptscriptfont\bffam=\cmIXbd}%
diff --git a/macros/text1/macros/cm11.textext b/macros/text1/macros/cm11.textext
new file mode 100644
index 0000000000..aa9300ae37
--- /dev/null
+++ b/macros/text1/macros/cm11.textext
@@ -0,0 +1,40 @@
+\global\newif\ifcmXIbierr
+\font\cmXIcc=cmcsc11
+\font\cmXIrm=cmr11 \font\cmXIit=cmti11
+\font\cmXIbd=cmbx11 \font\cmXImi=cmmi11
+\font\cmXItt=cmtt11\font\cmXIsy=cmsy11
+\expandafter\newdimen\csname\the\naMEtok ilsxi\endcsname
+\global\csname\the\naMEtok ilsxi\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxi\endcsname=0pt
+\csname\the\naMEtok ilsxi\endcsname=13pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXIrm}%
+\def\noexpand\mi{\fam1\cmXImi}%
+\def\noexpand\sy{\fam2\cmXIsy}%
+\def\noexpand\ex{\fam3\tenex}%
+ \textfont0=\cmXIrm \textfont1=\cmXImi
+ \textfont2=\cmXIsy\textfont3=\tenex
+ \textfont\itfam=\cmXIit
+ \textfont\ttfam=\cmXItt \textfont\bffam=\cmXIbd
+ \textfont\ccfam=\cmXIcc
+\def\noexpand\bd{\fam\bffam\cmXIbd}%
+\def\noexpand\it{\fam\itfam\cmXIit}%
+\def\noexpand\tt{\fam\ttfam\cmXItt}%
+\def\noexpand\cc{\fam\ccfam\cmXIcc}%
+\def\noexpand\bi{\noexpand\ifcmXIbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CM11. Will print italic font .}%
+\noexpand\global\noexpand\cmXIbierrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxi\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cm1110m.texmath b/macros/text1/macros/cm1110m.texmath
new file mode 100644
index 0000000000..09cc8fb54e
--- /dev/null
+++ b/macros/text1/macros/cm1110m.texmath
@@ -0,0 +1,10 @@
+\font\cmXImi=cmmi11
+\font\cmXIsy=cmsy11 \font\cmXIex=cmex11
+\font\cmXIbd=cmbx11\font\cmXIrm=cmr11
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmXIrm \scriptfont1=\cmXImi
+ \scriptfont2=\cmXIsy \scriptfont3=\cmXIex
+ \scriptfont\bffam=\cmXIbd
+ \scriptscriptfont0=\tenrm \scriptscriptfont1=\teni
+ \scriptscriptfont2=\tensy \scriptscriptfont3=\tenex
+ \scriptscriptfont\bffam=\tenbf}%
diff --git a/macros/text1/macros/cm119m.texmath b/macros/text1/macros/cm119m.texmath
new file mode 100644
index 0000000000..13eca0aebf
--- /dev/null
+++ b/macros/text1/macros/cm119m.texmath
@@ -0,0 +1,13 @@
+\font\cmXImi=cmmi11
+\font\cmXIsy=cmsy11 \font\cmXIex=cmex11
+\font\cmXIbd=cmbx11 \font\cmXIrm=cmr11
+\font\cmIXrm=cmr9 \font\cmIXmi=cmmi9
+\font\cmIXsy=cmsy9 \font\cmIXex=cmex10
+\font\cmIXbd=cmbx9
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmXIrm \scriptfont1=\cmXImi
+ \scriptfont2=\cmXIsy \scriptfont3=\cmXIex
+ \scriptfont\bffam=\cmXIbd
+ \scriptscriptfont0=\cmIXrm \scriptscriptfont1=\cmIXmi
+ \scriptscriptfont2=\cmIXsy \scriptscriptfont3=\cmIXex
+ \scriptscriptfont\bffam=\cmIXbd}%
diff --git a/macros/text1/macros/cm12.textext b/macros/text1/macros/cm12.textext
new file mode 100644
index 0000000000..a505abed9c
--- /dev/null
+++ b/macros/text1/macros/cm12.textext
@@ -0,0 +1,37 @@
+\font\cmXIIbi=cmbxti12
+\font\cmXIIcc=cmcsc12 \font\cmXIIex=cmex12
+\font\cmXIIrm=cmr12 \font\cmXIIit=cmti12
+\font\cmXIIbd=cmbx12 \font\cmXIImi=cmmi12
+\font\cmXIItt=cmtt12 \font\cmXIIsy=cmsy12
+\expandafter\newdimen\csname\the\naMEtok ilsxii\endcsname
+\global\csname\the\naMEtok ilsxii\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxii\endcsname=0pt
+\csname\the\naMEtok ilsxii\endcsname=14pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXIIrm}%
+\def\noexpand\mi{\fam1\cmXIImi}%
+\def\noexpand\sy{\fam2\cmXIIsy}%
+\def\noexpand\ex{\fam3\cmXIIex}%
+ \textfont0=\cmXIIrm \textfont1=\cmXIImi
+ \textfont2=\cmXIIsy \textfont3=\cmXIIex
+ \textfont\itfam=\cmXIIit
+ \textfont\ttfam=\cmXIItt \textfont\bffam=\cmXIIbd
+ \textfont\ccfam=\cmXIIcc
+\def\noexpand\bd{\fam\bffam\cmXIIbd}%
+\def\noexpand\it{\fam\itfam\cmXIIit}%
+\def\noexpand\tt{\fam\ttfam\cmXIItt}%
+\def\noexpand\cc{\fam\ccfam\cmXIIcc}%
+\def\noexpand\bi{\fam\bifam\cmXIIbi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxii\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cm1210m.texmath b/macros/text1/macros/cm1210m.texmath
new file mode 100644
index 0000000000..e1ccb4c7fc
--- /dev/null
+++ b/macros/text1/macros/cm1210m.texmath
@@ -0,0 +1,10 @@
+\font\cmXIImi=cmmi12
+\font\cmXIIsy=cmsy12 \font\cmXIIex=cmex12
+\font\cmXIIbd=cmbx12\font\cmXIIrm=cmr12
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmXIIrm \scriptfont1=\cmXIImi
+ \scriptfont2=\cmXIIsy \scriptfont3=\cmXIIex
+ \scriptfont\bffam=\cmXIIbd
+ \scriptscriptfont0=\tenrm \scriptscriptfont1=\teni
+ \scriptscriptfont2=\tensy \scriptscriptfont3=\tenex
+ \scriptscriptfont\bffam=\tenbf}%
diff --git a/macros/text1/macros/cm1211m.texmath b/macros/text1/macros/cm1211m.texmath
new file mode 100644
index 0000000000..d9c4e13c45
--- /dev/null
+++ b/macros/text1/macros/cm1211m.texmath
@@ -0,0 +1,13 @@
+\font\cmXIImi=cmmi12
+\font\cmXIIsy=cmsy12 \font\cmXIIex=cmex12
+\font\cmXIIbd=cmbx12\font\cmXIIrm=cmr12
+\font\cmXIrm=cmr11 \font\cmXImi=cmmi11
+\font\cmXIsy=cmsy11 \font\cmXIex=cmex11
+\font\cmXIbd=cmbx11
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmXIIrm \scriptfont1=\cmXIImi
+ \scriptfont2=\cmXIIsy \scriptfont3=\cmXIIex
+ \scriptfont\bffam=\cmXIIbd
+ \scriptscriptfont0=\cmXIrm \scriptscriptfont1=\cmXImi
+ \scriptscriptfont2=\cmXIsy \scriptscriptfont3=\cmXIex
+ \scriptscriptfont\bffam=\cmXIbd}%
diff --git a/macros/text1/macros/cm14.textext b/macros/text1/macros/cm14.textext
new file mode 100644
index 0000000000..f302bf6a12
--- /dev/null
+++ b/macros/text1/macros/cm14.textext
@@ -0,0 +1,37 @@
+\font\cmXIVbi=cmbxti14
+\font\cmXIVcc=cmcsc14 \font\cmXIVex=cmex14
+\font\cmXIVrm=cmr14 \font\cmXIVit=cmti14
+\font\cmXIVbd=cmbx14 \font\cmXIVmi=cmmi14
+\font\cmXIVtt=cmtt14 \font\cmXIVsy=cmsy14
+\expandafter\newdimen\csname\the\naMEtok ilsxiv\endcsname
+\global\csname\the\naMEtok ilsxiv\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxiv\endcsname=0pt
+\csname\the\naMEtok ilsxiv\endcsname=16pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXIVrm}%
+\def\noexpand\mi{\fam1\cmXIVmi}%
+\def\noexpand\sy{\fam2\cmXIVsy}%
+\def\noexpand\ex{\fam3\cmXIVex}%
+ \textfont0=\cmXIVrm \textfont1=\cmXIVmi
+ \textfont2=\cmXIVsy \textfont3=\cmXIVex
+ \textfont\itfam=\cmXIVit
+ \textfont\ttfam=\cmXIVtt \textfont\bffam=\cmXIVbd
+ \textfont\ccfam=\cmXIVcc
+\def\noexpand\bd{\fam\bffam\cmXIVbd}%
+\def\noexpand\it{\fam\itfam\cmXIVit}%
+\def\noexpand\tt{\fam\ttfam\cmXIVtt}%
+\def\noexpand\cc{\fam\ccfam\cmXIVcc}%
+\def\noexpand\bi{\fam\bifam\cmXIVbi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxiv\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cm1412m.texmath b/macros/text1/macros/cm1412m.texmath
new file mode 100644
index 0000000000..fc933ca00f
--- /dev/null
+++ b/macros/text1/macros/cm1412m.texmath
@@ -0,0 +1,13 @@
+\font\cmXIVmi=cmmi14
+\font\cmXIVsy=cmsy14 \font\cmXIVex=cmex14
+\font\cmXIVbd=cmbx14\font\cmXIVrm=cmr14
+\font\cmXIIrm=cmr12 \font\cmXIImi=cmmi12
+\font\cmXIIsy=cmsy12 \font\cmXIIex=cmex12
+\font\cmXIIbd=cmbx12
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmXIVrm \scriptfont1=\cmXIVmi
+ \scriptfont2=\cmXIVsy \scriptfont3=\cmXIVex
+ \scriptfont\bffam=\cmXIVbd
+ \scriptscriptfont0=\cmXIIrm \scriptscriptfont1=\cmXIImi
+ \scriptscriptfont2=\cmXIIsy \scriptscriptfont3=\cmXIIex
+ \scriptscriptfont\bffam=\cmXIIbd}%
diff --git a/macros/text1/macros/cm18.textext b/macros/text1/macros/cm18.textext
new file mode 100644
index 0000000000..c4c9f52d87
--- /dev/null
+++ b/macros/text1/macros/cm18.textext
@@ -0,0 +1,37 @@
+\font\cmXVIIIbi=cmbxti18
+\font\cmXVIIIcc=cmcsc18 \font\cmXVIIIex=cmex18
+\font\cmXVIIIrm=cmr18 \font\cmXVIIIit=cmti18
+\font\cmXVIIIbd=cmbx18 \font\cmXVIIImi=cmmi18
+\font\cmXVIIItt=cmtt18 \font\cmXVIIIsy=cmsy18
+\expandafter\newdimen\csname\the\naMEtok ilsxviii\endcsname
+\global\csname\the\naMEtok ilsxviii\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxviii\endcsname=0pt
+\csname\the\naMEtok ilsxviii\endcsname=20pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXVIIIrm}%
+\def\noexpand\mi{\fam1\cmXVIIImi}%
+\def\noexpand\sy{\fam2\cmXVIIIsy}%
+\def\noexpand\ex{\fam3\cmXVIIIex}%
+ \textfont0=\cmXVIIIrm \textfont1=\cmXVIIImi
+ \textfont2=\cmXVIIIsy \textfont3=\cmXVIIIex
+ \textfont\itfam=\cmXVIIIit
+ \textfont\ttfam=\cmXVIIItt \textfont\bffam=\cmXVIIIbd
+ \textfont\ccfam=\cmXVIIIcc
+\def\noexpand\bd{\fam\bffam\cmXVIIIbd}%
+\def\noexpand\it{\fam\itfam\cmXVIIIit}%
+\def\noexpand\tt{\fam\ttfam\cmXVIIItt}%
+\def\noexpand\cc{\fam\ccfam\cmXVIIIcc}%
+\def\noexpand\bi{\fam\bifam\cmXVIIIbi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxviii\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cm1814m.texmath b/macros/text1/macros/cm1814m.texmath
new file mode 100644
index 0000000000..c3c34b0f02
--- /dev/null
+++ b/macros/text1/macros/cm1814m.texmath
@@ -0,0 +1,13 @@
+\font\cmXVIIImi=cmmi18
+\font\cmXVIIIsy=cmsy18 \font\cmXVIIIex=cmex18
+\font\cmXVIIIbd=cmbx18\font\cmXVIIIrm=cmr18
+\font\cmXIVrm=cmr14 \font\cmXIVmi=cmmi14
+\font\cmXIVsy=cmsy14 \font\cmXIVex=cmex14
+\font\cmXIVbd=cmbx14
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmXVIIIrm \scriptfont1=\cmXVIIImi
+ \scriptfont2=\cmXVIIIsy \scriptfont3=\cmXVIIIex
+ \scriptfont\bffam=\cmXVIIIbd
+ \scriptscriptfont0=\cmXIVrm \scriptscriptfont1=\cmXIVmi
+ \scriptscriptfont2=\cmXIVsy \scriptscriptfont3=\cmXIVex
+ \scriptscriptfont\bffam=\cmXIVbd}%
diff --git a/macros/text1/macros/cm24.textext b/macros/text1/macros/cm24.textext
new file mode 100644
index 0000000000..83dc4387be
--- /dev/null
+++ b/macros/text1/macros/cm24.textext
@@ -0,0 +1,37 @@
+\font\cmXXIVbi=cmbxti24
+\font\cmXXIVcc=cmcsc24 \font\cmXXIVex=cmex24
+\font\cmXXIVrm=cmr24 \font\cmXXIVit=cmti24
+\font\cmXXIVbd=cmbx24 \font\cmXXIVmi=cmmi24
+\font\cmXXIVtt=cmtt24\font\cmXXIVsy=cmsy24
+\expandafter\newdimen\csname\the\naMEtok ilsxxiv\endcsname
+\global\csname\the\naMEtok ilsxxiv\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxxiv\endcsname=0pt
+\csname\the\naMEtok ilsxxiv\endcsname=26pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXXIVrm}%
+\def\noexpand\mi{\fam1\cmXXIVmi}%
+\def\noexpand\sy{\fam2\cmXXIVsy}%
+\def\noexpand\ex{\fam3\cmXXIVex}%
+ \textfont0=\cmXXIVrm \textfont1=\cmXXIVmi
+ \textfont2=\cmXXIVsy \textfont3=\cmXXIVex
+ \textfont\itfam=\cmXXIVit
+ \textfont\ttfam=\cmXXIVtt \textfont\bffam=\cmXXIVbd
+ \textfont\ccfam=\cmXXIVcc
+\def\noexpand\bd{\fam\bffam\cmXXIVbd}%
+\def\noexpand\it{\fam\itfam\cmXXIVit}%
+\def\noexpand\tt{\fam\ttfam\cmXXIVtt}%
+\def\noexpand\cc{\fam\ccfam\cmXXIVcc}%
+\def\noexpand\bi{\fam\bifam\cmXXIVbi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxxiv\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cm2418m.texmath b/macros/text1/macros/cm2418m.texmath
new file mode 100644
index 0000000000..41222e47d0
--- /dev/null
+++ b/macros/text1/macros/cm2418m.texmath
@@ -0,0 +1,13 @@
+\font\cmXXIVmi=cmmi24
+\font\cmXXIVsy=cmsy24 \font\cmXXIVex=cmex24
+\font\cmXXIVbd=cmbx24\font\cmXXIVrm=cmr24
+\font\cmXVIIIrm=cmr18 \font\cmXVIIImi=cmmi18
+\font\cmXVIIIsy=cmsy18 \font\cmXVIIIex=cmex18
+\font\cmXVIIIbd=cmbx18
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmXXIVrm \scriptfont1=\cmXXIVmi
+ \scriptfont2=\cmXXIVsy \scriptfont3=\cmXXIVex
+ \scriptfont\bffam=\cmXXIVbd
+ \scriptscriptfont0=\cmXVIIIrm \scriptscriptfont1=\cmXVIIImi
+ \scriptscriptfont2=\cmXVIIIsy \scriptscriptfont3=\cmXVIIIex
+ \scriptscriptfont\bffam=\cmXVIIIbd}%
diff --git a/macros/text1/macros/cm36.textext b/macros/text1/macros/cm36.textext
new file mode 100644
index 0000000000..9a6f9ce578
--- /dev/null
+++ b/macros/text1/macros/cm36.textext
@@ -0,0 +1,37 @@
+\font\cmXXXVIbi=cmbxti36
+\font\cmXXXVIcc=cmcsc36\font\cmXXXVIex=cmex36
+\font\cmXXXVIrm=cmr36 \font\cmXXXVIit=cmti36
+\font\cmXXXVIbd=cmbx36 \font\cmXXXVImi=cmmi36
+\font\cmXXXVItt=cmtt36 \font\cmXXXVIsy=cmsy36
+\expandafter\newdimen\csname\the\naMEtok ilsxxxvi\endcsname
+\global\csname\the\naMEtok ilsxxxvi\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxxxvi\endcsname=0pt
+\csname\the\naMEtok ilsxxxvi\endcsname=38pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXXXVIrm}%
+\def\noexpand\mi{\fam1\cmXXXVImi}%
+\def\noexpand\sy{\fam2\cmXXXVIsy}%
+\def\noexpand\ex{\fam3\cmXXXVIex}%
+ \textfont0=\cmXXXVIrm \textfont1=\cmXXXVImi
+ \textfont2=\cmXXXVIsy \textfont3=\cmXXXVIex
+ \textfont\itfam=\cmXXXVIit
+ \textfont\ttfam=\cmXXXVItt \textfont\bffam=\cmXXXVIbd
+ \textfont\ccfam=\cmXXXVIcc
+\def\noexpand\bd{\fam\bffam\cmXXXVIbd}%
+\def\noexpand\it{\fam\itfam\cmXXXVIit}%
+\def\noexpand\tt{\fam\ttfam\cmXXXVItt}%
+\def\noexpand\cc{\fam\ccfam\cmXXXVIcc}%
+\def\noexpand\bi{\fam\bifam\cmXXXVIbi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxxxvi\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cm5.textext b/macros/text1/macros/cm5.textext
new file mode 100644
index 0000000000..3cdb0205e3
--- /dev/null
+++ b/macros/text1/macros/cm5.textext
@@ -0,0 +1,51 @@
+\global\newif\ifVbierr
+\global\newif\ifVccerr
+\global\newif\ifVtterr
+\global\newif\ifViterr
+\global\newif\ifVbderr
+\expandafter\newdimen\csname\the\naMEtok ilsv\endcsname
+\global\csname\the\naMEtok ilsv\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsv\endcsname=0pt
+\csname\the\naMEtok ilsv\endcsname=8pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\fiverm}%
+\def\noexpand\mi{\fam1\fivei}%
+\def\noexpand\sy{\fam2\fivesy}%
+\def\noexpand\ex{\fam3\tenex}%
+ \textfont0=\fiverm\textfont1=\fivei
+ \textfont2=\fivesy\textfont3=\tenex
+ \textfont\bffam=\fivebf
+\def\noexpand\bd{\noexpand\ifVbderr\noexpand\fam\bffam\fivebf%
+\noexpand\else\noexpand\fam\bffam\fivebf%
+\noexpand\message{<TEXT1> Warning. %
+No bold font in CM5. Will print bold extended font .}%
+\noexpand\global\noexpand\Vbderrtrue \noexpand\fi}%
+\def\noexpand\it{\noexpand\ifViterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No italic font in CM5. Will print roman font .}%
+\noexpand\global\noexpand\Viterrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifVtterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CM5. Will print roman font .}%
+\noexpand\global\noexpand\Vtterrtrue \noexpand\fi}%
+\def\noexpand\bi{\noexpand\ifVbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CM5. Will print italic font .}%
+\noexpand\global\noexpand\Vbierrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifVccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CM5. Will print roman font .}%
+\noexpand\global\noexpand\Vccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsv\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cm6.textext b/macros/text1/macros/cm6.textext
new file mode 100644
index 0000000000..5a3a735d8c
--- /dev/null
+++ b/macros/text1/macros/cm6.textext
@@ -0,0 +1,49 @@
+\global\newif\ifcmVIbierr
+\global\newif\ifcmVIccerr
+\global\newif\ifcmVIiterr
+\global\newif\ifcmVItterr
+\font\cmVIrm=cmr6
+\font\cmVIbd=cmbx6 \font\cmVImi=cmmi6
+\font\sixsy=cmsy6
+\expandafter\newdimen\csname\the\naMEtok ilsvi\endcsname
+\global\csname\the\naMEtok ilsvi\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsvi\endcsname=0pt
+\csname\the\naMEtok ilsvi\endcsname=8pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmVIrm}%
+\def\noexpand\mi{\fam1\cmVImi}%
+\def\noexpand\sy{\fam2\sixsy}%
+\def\noexpand\ex{\fam3\tenex}%
+ \textfont0=\cmVIrm \textfont1=\cmVImi
+ \textfont2=\tensy \textfont3=\tenex
+ \textfont\bffam=\cmVIbd
+\def\noexpand\bd{\fam\bffam\cmVIbd}%
+\def\noexpand\it{\noexpand\ifcmVIiterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No italic font in CM6. Will print roman font.}%
+\noexpand\global\noexpand\cmVIiterrtrue \noexpand\fi}%
+\def\noexpand\bi{\noexpand\ifcmVIbierr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CM6. Will print roman font.}%
+\noexpand\global\noexpand\cmVIbierrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifcmVIccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CM6. Will print roman font.}%
+\noexpand\global\noexpand\cmVIccerrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifcmVItterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CM6. Will print roman font.}%
+\noexpand\global\noexpand\cmVItterrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsvi\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cm65m.texmath b/macros/text1/macros/cm65m.texmath
new file mode 100644
index 0000000000..d1c44223de
--- /dev/null
+++ b/macros/text1/macros/cm65m.texmath
@@ -0,0 +1,10 @@
+\font\cmVImi=cmmi6
+\font\cmVIsy=cmsy6 \font\cmVIex=cmex10
+\font\cmVIbd=cmbx6\font\cmVIrm=cmr6
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmVIrm \scriptfont1=\cmVImi
+ \scriptfont2=\cmVIsy \scriptfont3=\cmVIex
+ \scriptfont\bffam=\cmVIbd
+ \scriptscriptfont0=\fiverm \scriptscriptfont1=\fivei
+ \scriptscriptfont2=\fivesy \scriptscriptfont3=\tenex
+ \scriptscriptfont\bffam=\fivebf}%
diff --git a/macros/text1/macros/cm7.textext b/macros/text1/macros/cm7.textext
new file mode 100644
index 0000000000..894bff8b2c
--- /dev/null
+++ b/macros/text1/macros/cm7.textext
@@ -0,0 +1,45 @@
+\global\newif\ifVIIbierr
+\global\newif\ifVIIbderr
+\global\newif\ifVIItterr
+\global\newif\ifVIIccerr
+\font\cmVIIit=cmti7
+\expandafter\newdimen\csname\the\naMEtok ilsvii\endcsname
+\global\csname\the\naMEtok ilsvii\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsvii\endcsname=0pt
+\csname\the\naMEtok ilsvii\endcsname=9pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\sevenrm}%
+\def\noexpand\mi{\fam1\seveni}%
+\def\noexpand\sy{\fam2\sevensy}%
+\def\noexpand\ex{\fam3\tenex}%
+ \textfont0=\sevenrm \textfont1=\seveni
+ \textfont2=\sevensy \textfont3=\tenex
+ \textfont\itfam=\cmVIIit
+ \textfont\bffam=\sevenbf
+\def\noexpand\it{\fam\itfam\cmVIIit}%
+\def\noexpand\bd{\fam\bffam\sevenbf}%
+\def\noexpand\tt{\noexpand\ifVIItterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CM7. Will print roman font .}%
+\noexpand\global\noexpand\VIItterrtrue \noexpand\fi}%
+\def\noexpand\bi{\noexpand\ifVIIbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CM7. Will print italic font .}%
+\noexpand\global\noexpand\VIIbierrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifVIIccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CM7. Will print roman font .}%
+\noexpand\global\noexpand\VIIccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsvii\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cm75m.texmath b/macros/text1/macros/cm75m.texmath
new file mode 100644
index 0000000000..2acd4dc1f4
--- /dev/null
+++ b/macros/text1/macros/cm75m.texmath
@@ -0,0 +1,7 @@
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\sevenrm \scriptfont1=\seveni
+ \scriptfont2=\sevensy \scriptfont3=\tenex
+ \scriptfont\bffam=\sevenbf
+ \scriptscriptfont0=\fiverm \scriptscriptfont1=\fivei
+ \scriptscriptfont2=\fivesy \scriptscriptfont3=\tenex
+ \scriptscriptfont\bffam=\fivebf}%
diff --git a/macros/text1/macros/cm76m.texmath b/macros/text1/macros/cm76m.texmath
new file mode 100644
index 0000000000..796813490d
--- /dev/null
+++ b/macros/text1/macros/cm76m.texmath
@@ -0,0 +1,10 @@
+\font\cmVIrm=cmr6 \font\cmVImi=cmmi6
+\font\cmVIsy=cmsy6 \font\cmVIex=cmex10
+\font\cmVIbd=cmbx6
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\sevenrm \scriptfont1=\seveni
+ \scriptfont2=\sevensy \scriptfont3=\tenex
+ \scriptfont\bffam=\sevenbf
+ \scriptscriptfont0=\cmVIrm \scriptscriptfont1=\cmVImi
+ \scriptscriptfont2=\cmVIsy \scriptscriptfont3=\cmVIex
+ \scriptscriptfont\bffam=\cmVIbd}%
diff --git a/macros/text1/macros/cm8.textext b/macros/text1/macros/cm8.textext
new file mode 100644
index 0000000000..ea69af7705
--- /dev/null
+++ b/macros/text1/macros/cm8.textext
@@ -0,0 +1,40 @@
+\global\newif\ifcmVIIIbierr
+\font\cmVIIIcc=cmcsc8
+\font\cmVIIIrm=cmr8 \font\cmVIIIit=cmti8
+\font\cmVIIIbd=cmbx8 \font\cmVIIImi=cmmi8
+\font\cmVIIItt=cmtt8
+\expandafter\newdimen\csname\the\naMEtok ilsviii\endcsname
+\global\csname\the\naMEtok ilsviii\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsviii\endcsname=0pt
+\csname\the\naMEtok ilsviii\endcsname=10pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmVIIIrm}%
+\def\noexpand\mi{\fam1\cmVIIImi}%
+\def\noexpand\sy{\fam2\tensy}%
+\def\noexpand\ex{\fam3\tenex}%
+ \textfont0=\cmVIIIrm \textfont1=\cmVIIImi
+ \textfont2=\tensy \textfont3=\tenex
+ \textfont\itfam=\cmVIIIit
+ \textfont\ttfam=\cmVIIItt \textfont\bffam=\cmVIIIbd
+ \textfont\ccfam=\cmVIIIcc
+\def\noexpand\bd{\fam\bffam\cmVIIIbd}%
+\def\noexpand\it{\fam\itfam\cmVIIIit}%
+\def\noexpand\tt{\fam\ttfam\cmVIIItt}%
+\def\noexpand\cc{\fam\ccfam\cmVIIIcc}%
+\def\noexpand\bi{\noexpand\ifcmVIIIbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CM8. Will print italic font .}%
+\noexpand\global\noexpand\cmVIIIbierrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsviii\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cm86m.texmath b/macros/text1/macros/cm86m.texmath
new file mode 100644
index 0000000000..9acea1b047
--- /dev/null
+++ b/macros/text1/macros/cm86m.texmath
@@ -0,0 +1,13 @@
+\font\cmVIIIrm=cmr8 \font\cmVIIImi=cmmi8
+\font\cmVIIIsy=cmsy8 \font\cmVIIIex=cmex10
+\font\cmVIIIbd=cmbx8
+\font\cmVIrm=cmr6 \font\cmVImi=cmmi6
+\font\cmVIsy=cmsy6 \font\cmVIex=cmex10
+\font\cmVIbd=cmbx6
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmVIIIrm \scriptfont1=\cmVIIImi
+ \scriptfont2=\cmVIIIsy \scriptfont3=\cmVIIIex
+ \scriptfont\bffam=\cmVIIIbd
+ \scriptscriptfont0=\cmVIrm \scriptscriptfont1=\cmVImi
+ \scriptscriptfont2=\cmVIsy \scriptscriptfont3=\cmVIex
+ \scriptscriptfont\bffam=\cmVIbd}%
diff --git a/macros/text1/macros/cm87m.texmath b/macros/text1/macros/cm87m.texmath
new file mode 100644
index 0000000000..5bc523025d
--- /dev/null
+++ b/macros/text1/macros/cm87m.texmath
@@ -0,0 +1,10 @@
+\font\cmVIIImi=cmmi8
+\font\cmVIIIsy=cmsy8 \font\cmVIIIex=cmex10
+\font\cmVIIIbd=cmbx8\font\cmVIIIrm=cmr8
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmVIIIrm \scriptfont1=\cmVIIImi
+ \scriptfont2=\cmVIIIsy \scriptfont3=\cmVIIIex
+ \scriptfont\bffam=\cmVIIIbd
+ \scriptscriptfont0=\sevenrm \scriptscriptfont1=\seveni
+ \scriptscriptfont2=\sevensy \scriptscriptfont3=\tenex
+ \scriptscriptfont\bffam=\sevenbf}%
diff --git a/macros/text1/macros/cm9.textext b/macros/text1/macros/cm9.textext
new file mode 100644
index 0000000000..8602cb2d64
--- /dev/null
+++ b/macros/text1/macros/cm9.textext
@@ -0,0 +1,40 @@
+\global\newif\ifcmIXbierr
+\font\cmIXcc=cmcsc9
+\font\cmIXrm=cmr9 \font\cmIXit=cmti9
+\font\cmIXbd=cmbx9 \font\cmIXmi=cmmi9
+\font\cmIXtt=cmtt9
+\expandafter\newdimen\csname\the\naMEtok ilsix\endcsname
+\global\csname\the\naMEtok ilsix\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsix\endcsname=0pt
+\csname\the\naMEtok ilsix\endcsname=11pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmIXrm}%
+\def\noexpand\mi{\fam1\cmIXmi}%
+\def\noexpand\sy{\fam2\tensy}%
+\def\noexpand\ex{\fam3\tenex}%
+ \textfont0=\cmIXrm \textfont1=\cmIXmi
+ \textfont2=\tensy \textfont3=\tenex
+ \textfont\itfam=\cmIXit
+ \textfont\ttfam=\cmIXtt \textfont\bffam=\cmIXbd
+ \textfont\ccfam=\cmIXcc
+\def\noexpand\bd{\fam\bffam\cmIXbd}%
+\def\noexpand\it{\fam\itfam\cmIXit}%
+\def\noexpand\tt{\fam\ttfam\cmIXtt}%
+\def\noexpand\cc{\fam\ccfam\cmIXcc}%
+\def\noexpand\bi{\noexpand\ifcmIXbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CM9. Will print italic font .}%
+\noexpand\global\noexpand\cmIXbierrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsix\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cm97m.texmath b/macros/text1/macros/cm97m.texmath
new file mode 100644
index 0000000000..612ddf3587
--- /dev/null
+++ b/macros/text1/macros/cm97m.texmath
@@ -0,0 +1,10 @@
+\font\cmIXmi=cmmi9
+\font\cmIXsy=cmsy9 \font\cmIXex=cmex10
+\font\cmIXbd=cmbx9\font\cmIXrm=cmr9
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmIXrm \scriptfont1=\cmIXmi
+ \scriptfont2=\cmIXsy \scriptfont3=\cmIXex
+ \scriptfont\bffam=\cmIXbd
+ \scriptscriptfont0=\sevenrm \scriptscriptfont1=\seveni
+ \scriptscriptfont2=\sevensy \scriptscriptfont3=\tenex
+ \scriptscriptfont\bffam=\sevenbf}%
diff --git a/macros/text1/macros/cm98m.texmath b/macros/text1/macros/cm98m.texmath
new file mode 100644
index 0000000000..78e30ed089
--- /dev/null
+++ b/macros/text1/macros/cm98m.texmath
@@ -0,0 +1,13 @@
+\font\cmIXmi=cmmi9
+\font\cmIXsy=cmsy9 \font\cmIXex=cmex10
+\font\cmIXbd=cmbx9\font\cmIXrm=cmr9
+\font\cmVIIIrm=cmr8 \font\cmVIIImi=cmmi8
+\font\cmVIIIsy=cmsy8 \font\cmVIIIex=cmex10
+\font\cmVIIIbd=cmbx8
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmIXrm \scriptfont1=\cmIXmi
+ \scriptfont2=\cmIXsy \scriptfont3=\cmIXex
+ \scriptfont\bffam=\cmIXbd
+ \scriptscriptfont0=\cmVIIIrm \scriptscriptfont1=\cmVIIImi
+ \scriptscriptfont2=\cmVIIIsy \scriptscriptfont3=\cmVIIIex
+ \scriptscriptfont\bffam=\cmVIIIbd}%
diff --git a/macros/text1/macros/cmsan10.textext b/macros/text1/macros/cmsan10.textext
new file mode 100644
index 0000000000..cedf00fe5e
--- /dev/null
+++ b/macros/text1/macros/cmsan10.textext
@@ -0,0 +1,46 @@
+\global\newif\ifXssbierr
+\global\newif\ifXssccerr
+\global\newif\ifXsstterr
+\font\cmXssrm=cmss10 \font\cmXssit=cmssi10
+\font\cmXssbd=cmssbx10 \font\cmXssmi=cmmi10
+\font\cmXsssy=cmsy10 \font\cmXssex=cmex10
+\expandafter\newdimen\csname\the\naMEtok ilsxss\endcsname
+\global\csname\the\naMEtok ilsxss\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxss\endcsname=0pt
+\csname\the\naMEtok ilsxss\endcsname=12pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXssrm}%
+\def\noexpand\mi{\fam1\cmXssmi}%
+\def\noexpand\sy{\fam2\cmXsssy}%
+\def\noexpand\ex{\fam3\cmXssex}%
+ \textfont0=\cmXssrm \textfont1=\cmXssmi
+ \textfont2=\cmXsssy \textfont3=\cmXssex
+ \textfont\itfam=\cmXssit
+ \textfont\bffam=\cmXssbd
+\def\noexpand\bd{\fam\bffam\cmXssbd}%
+\def\noexpand\it{\fam\itfam\cmXssit}%
+\def\noexpand\bi{\noexpand\ifXssbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CMSAN10. Will print italic font .}%
+\noexpand\global\noexpand\Xssbierrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifXsstterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CMSAN10. Will print roman font .}%
+\noexpand\global\noexpand\Xsstterrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifXssccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CMSAN10. Will print roman font .}%
+\noexpand\global\noexpand\Xssccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxss\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cmsan11.textext b/macros/text1/macros/cmsan11.textext
new file mode 100644
index 0000000000..e5da60857e
--- /dev/null
+++ b/macros/text1/macros/cmsan11.textext
@@ -0,0 +1,46 @@
+\global\newif\ifXIssbierr
+\global\newif\ifXIssccerr
+\global\newif\ifXIsstterr
+\font\cmXIssrm=cmss11 \font\cmXIssit=cmssi11
+\font\cmXIssbd=cmssbx11 \font\cmXIssmi=cmmi11
+\font\cmXIsssy=cmsy11 \font\cmXIssex=cmex11
+\expandafter\newdimen\csname\the\naMEtok ilsxiss\endcsname
+\global\csname\the\naMEtok ilsxiss\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxiss\endcsname=0pt
+\csname\the\naMEtok ilsxiss\endcsname=13pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXIssrm}%
+\def\noexpand\mi{\fam1\cmXIssmi}%
+\def\noexpand\sy{\fam2\cmXIsssy}%
+\def\noexpand\ex{\fam3\cmXIssex}%
+ \textfont0=\cmXIssrm \textfont1=\cmXIssmi
+ \textfont2=\cmXIsssy \textfont3=\cmXIssex
+ \textfont\itfam=\cmXIssit
+ \textfont\bffam=\cmXIssbd
+\def\noexpand\bd{\fam\bffam\cmXIssbd}%
+\def\noexpand\it{\fam\itfam\cmXIssit}%
+\def\noexpand\bi{\noexpand\ifXIssbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CMSAN11. Will print italic font .}%
+\noexpand\global\noexpand\XIssbierrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifXIsstterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CMSAN11. Will print roman font .}%
+\noexpand\global\noexpand\XIsstterrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifXIssccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CMSAN11. Will print roman font .}%
+\noexpand\global\noexpand\XIssccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxiss\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cmsan12.textext b/macros/text1/macros/cmsan12.textext
new file mode 100644
index 0000000000..234dd3cbba
--- /dev/null
+++ b/macros/text1/macros/cmsan12.textext
@@ -0,0 +1,46 @@
+\global\newif\ifXIIssbierr
+\global\newif\ifXIIssccerr
+\global\newif\ifXIIsstterr
+\font\cmXIIssrm=cmss12 \font\cmXIIssit=cmssi12
+\font\cmXIIssbd=cmssbx12 \font\cmXIIssmi=cmmi12
+\font\cmXIIsssy=cmsy12 \font\cmXIIssex=cmex12
+\expandafter\newdimen\csname\the\naMEtok ilsxiiss\endcsname
+\global\csname\the\naMEtok ilsxiiss\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxiiss\endcsname=0pt
+\csname\the\naMEtok ilsxiiss\endcsname=14pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXIIssrm}%
+\def\noexpand\mi{\fam1\cmXIIssmi}%
+\def\noexpand\sy{\fam2\cmXIIsssy}%
+\def\noexpand\ex{\fam3\cmXIIssex}%
+ \textfont0=\cmXIIssrm \textfont1=\cmXIIssmi
+ \textfont2=\cmXIIsssy \textfont3=\cmXIIssex
+ \textfont\itfam=\cmXIIssit
+ \textfont\bffam=\cmXIIssbd
+\def\noexpand\bd{\fam\bffam\cmXIIssbd}%
+\def\noexpand\it{\fam\itfam\cmXIIssit}%
+\def\noexpand\bi{\noexpand\ifXIIssbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CMSAN12. Will print italic font .}%
+\noexpand\global\noexpand\XIIssbierrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifXIIsstterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CMSAN12. Will print roman font .}%
+\noexpand\global\noexpand\XIIsstterrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifXIIssccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CMSAN12. Will print roman font .}%
+\noexpand\global\noexpand\XIIssccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxiiss\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cmsan14.textext b/macros/text1/macros/cmsan14.textext
new file mode 100644
index 0000000000..23d2eb54a5
--- /dev/null
+++ b/macros/text1/macros/cmsan14.textext
@@ -0,0 +1,46 @@
+\global\newif\ifXIVssbierr
+\global\newif\ifXIVssccerr
+\global\newif\ifXIVsstterr
+\font\cmXIVssrm=cmss14 \font\cmXIVssit=cmssi14
+\font\cmXIVssbd=cmssbx14 \font\cmXIVssmi=cmmi14
+\font\cmXIVsssy=cmsy14 \font\cmXIVssex=cmex14
+\expandafter\newdimen\csname\the\naMEtok ilsxivss\endcsname
+\global\csname\the\naMEtok ilsxivss\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxivss\endcsname=0pt
+\csname\the\naMEtok ilsxivss\endcsname=16pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXIVssrm}%
+\def\noexpand\mi{\fam1\cmXIVssmi}%
+\def\noexpand\sy{\fam2\cmXIVsssy}%
+\def\noexpand\ex{\fam3\cmXIVssex}%
+ \textfont0=\cmXIVssrm \textfont1=\cmXIVssmi
+ \textfont2=\cmXIVsssy \textfont3=\cmXIVssex
+ \textfont\itfam=\cmXIVssit
+ \textfont\bffam=\cmXIVssbd
+\def\noexpand\bd{\fam\bffam\cmXIVssbd}%
+\def\noexpand\it{\fam\itfam\cmXIVssit}%
+\def\noexpand\bi{\noexpand\ifXIVssbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CMSAN14. Will print italic font .}%
+\noexpand\global\noexpand\XIVssbierrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifXIVsstterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CMSAN14. Will print roman font .}%
+\noexpand\global\noexpand\XIVsstterrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifXIVssccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CMSAN14. Will print roman font .}%
+\noexpand\global\noexpand\XIVssccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxivss\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cmsan18.textext b/macros/text1/macros/cmsan18.textext
new file mode 100644
index 0000000000..a1a581291e
--- /dev/null
+++ b/macros/text1/macros/cmsan18.textext
@@ -0,0 +1,46 @@
+\global\newif\ifXVIIIssbierr
+\global\newif\ifXVIIIssccerr
+\global\newif\ifXVIIIsstterr
+\font\cmXVIIIssrm=cmss18 \font\cmXVIIIssit=cmssi18
+\font\cmXVIIIssbd=cmssbx18 \font\cmXVIIIssmi=cmmi18
+\font\cmXVIIIsssy=cmsy18 \font\cmXVIIIssex=cmex18
+\expandafter\newdimen\csname\the\naMEtok ilsxviiiss\endcsname
+\global\csname\the\naMEtok ilsxviiiss\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxviiiss\endcsname=0pt
+\csname\the\naMEtok ilsxviiiss\endcsname=20pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXVIIIssrm}%
+\def\noexpand\mi{\fam1\cmXVIIIssmi}%
+\def\noexpand\sy{\fam2\cmXVIIIsssy}%
+\def\noexpand\ex{\fam3\cmXVIIIssex}%
+ \textfont0=\cmXVIIIssrm \textfont1=\cmXVIIIssmi
+ \textfont2=\cmXVIIIsssy \textfont3=\cmXVIIIssex
+ \textfont\itfam=\cmXVIIIssit
+ \textfont\bffam=\cmXVIIIssbd
+\def\noexpand\bd{\fam\bffam\cmXVIIIssbd}%
+\def\noexpand\it{\fam\itfam\cmXVIIIssit}%
+\def\noexpand\bi{\noexpand\ifXVIIIssbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CMSAN18. Will print italic font .}%
+\noexpand\global\noexpand\XVIIIssbierrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifXVIIIsstterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CMSAN18. Will print roman font .}%
+\noexpand\global\noexpand\XVIIIsstterrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifXVIIIssccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CMSAN18. Will print roman font .}%
+\noexpand\global\noexpand\XVIIIssccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxviiiss\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cmsan24.textext b/macros/text1/macros/cmsan24.textext
new file mode 100644
index 0000000000..d035cc6ecd
--- /dev/null
+++ b/macros/text1/macros/cmsan24.textext
@@ -0,0 +1,46 @@
+\global\newif\ifXXIVssbierr
+\global\newif\ifXXIVssccerr
+\global\newif\ifXXIVsstterr
+\font\cmXXIVssrm=cmss24 \font\cmXXIVssit=cmssi24
+\font\cmXXIVssbd=cmssbx24 \font\cmXXIVssmi=cmmi24
+\font\cmXXIVsssy=cmsy24 \font\cmXXIVssex=cmex24
+\expandafter\newdimen\csname\the\naMEtok ilsxxivss\endcsname
+\global\csname\the\naMEtok ilsxxivss\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxxivss\endcsname=0pt
+\csname\the\naMEtok ilsxxivss\endcsname=26pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXXIVssrm}%
+\def\noexpand\mi{\fam1\cmXXIVssmi}%
+\def\noexpand\sy{\fam2\cmXXIVsssy}%
+\def\noexpand\ex{\fam3\cmXXIVssex}%
+ \textfont0=\cmXXIVssrm \textfont1=\cmXXIVssmi
+ \textfont2=\cmXXIVsssy \textfont3=\cmXXIVssex
+ \textfont\itfam=\cmXXIVssit
+ \textfont\bffam=\cmXXIVssbd
+\def\noexpand\bd{\fam\bffam\cmXXIVssbd}%
+\def\noexpand\it{\fam\itfam\cmXXIVssit}%
+\def\noexpand\bi{\noexpand\ifXXIVssbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CMSAN24. Will print italic font .}%
+\noexpand\global\noexpand\XXIVssbierrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifXXIVsstterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CMSAN24. Will print roman font .}%
+\noexpand\global\noexpand\XXIVsstterrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifXXIVssccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CMSAN24. Will print roman font .}%
+\noexpand\global\noexpand\XXIVssccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxxivss\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cmsan36.textext b/macros/text1/macros/cmsan36.textext
new file mode 100644
index 0000000000..3a64c94a76
--- /dev/null
+++ b/macros/text1/macros/cmsan36.textext
@@ -0,0 +1,46 @@
+\global\newif\ifXXXVIssbierr
+\global\newif\ifXXXVIssccerr
+\global\newif\ifXXXVIsstterr
+\font\cmXXXVIssrm=cmss36 \font\cmXXXVIssit=cmssi36
+\font\cmXXXVIssbd=cmssbx36 \font\cmXXXVIssmi=cmmi36
+\font\cmXXXVIsssy=cmsy36 \font\cmXXXVIssex=cmex24
+\expandafter\newdimen\csname\the\naMEtok ilsxxivss\endcsname
+\global\csname\the\naMEtok ilsxxivss\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxxivss\endcsname=0pt
+\csname\the\naMEtok ilsxxivss\endcsname=38pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXXXVIssrm}%
+\def\noexpand\mi{\fam1\cmXXXVIssmi}%
+\def\noexpand\sy{\fam2\cmXXXVIsssy}%
+\def\noexpand\ex{\fam3\cmXXXVIssex}%
+ \textfont0=\cmXXXVIssrm \textfont1=\cmXXXVIssmi
+ \textfont2=\cmXXXVIsssy \textfont3=\cmXXXVIssex
+ \textfont\itfam=\cmXXXVIssit
+ \textfont\bffam=\cmXXXVIssbd
+\def\noexpand\bd{\fam\bffam\cmXXXVIssbd}%
+\def\noexpand\it{\fam\itfam\cmXXXVIssit}%
+\def\noexpand\bi{\noexpand\ifXXXVIssbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CMSAN36. Will print italic font .}%
+\noexpand\global\noexpand\XXXVIssbierrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifXXXVIsstterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CMSAN36. Will print roman font .}%
+\noexpand\global\noexpand\XXXVIsstterrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifXXXVIssccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CMSAN36. Will print roman font .}%
+\noexpand\global\noexpand\XXXVIssccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxxivss\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cmsan8.textext b/macros/text1/macros/cmsan8.textext
new file mode 100644
index 0000000000..710177059f
--- /dev/null
+++ b/macros/text1/macros/cmsan8.textext
@@ -0,0 +1,49 @@
+\global\newif\ifcmVIIIssbierr
+\global\newif\ifcmVIIIssccerr
+\global\newif\ifcmVIIIsstterr
+\global\newif\ifcmVIIIssbderr
+\font\cmVIIIssit=cmssi8
+\font\cmVIIIssrm=cmss8 \font\cmVIIIssmi=cmmi8
+\font\cmVIIIsssy=cmsy8 \font\cmVIIIssex=cmex10
+\expandafter\newdimen\csname\the\naMEtok ilsviiiss\endcsname
+\global\csname\the\naMEtok ilsviiiss\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsviiiss\endcsname=0pt
+\csname\the\naMEtok ilsviiiss\endcsname=10pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmVIIIssrm}%
+\def\noexpand\mi{\fam1\cmVIIIssmi}%
+\def\noexpand\sy{\fam2\cmVIIIsssy}%
+\def\noexpand\ex{\fam3\cmVIIIssex}%
+ \textfont0=\cmVIIIssrm \textfont1=\cmVIIIssmi
+ \textfont2=\cmVIIIsssy \textfont3=\cmVIIIssex
+ \textfont\itfam=\cmVIIIssit
+\def\noexpand\it{\fam\itfam\cmVIIIssit}%
+\def\noexpand\bd{\noexpand\ifcmVIIIssbderr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No bold font in CMSAN8. Will print roman font .}%
+\noexpand\global\noexpand\cmVIIIssbderrtrue \noexpand\fi}%
+\def\noexpand\bi{\noexpand\ifcmVIIIssbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CMSAN8. Will print italic font .}%
+\noexpand\global\noexpand\cmVIIIssbierrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifcmVIIIsstterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CMSAN8. Will print roman font .}%
+\noexpand\global\noexpand\cmVIIIsstterrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifcmVIIIssccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CMSAN8. Will print roman font .}%
+\noexpand\global\noexpand\cmVIIIssccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsviiiss\noexpand\endcsname}}%
diff --git a/macros/text1/macros/cmsan9.textext b/macros/text1/macros/cmsan9.textext
new file mode 100644
index 0000000000..7309c82d45
--- /dev/null
+++ b/macros/text1/macros/cmsan9.textext
@@ -0,0 +1,46 @@
+\global\newif\ifIXssbierr
+\global\newif\ifIXssccerr
+\global\newif\ifIXsstterr
+\font\cmIXssrm=cmss9 \font\cmIXssit=cmssi9
+\font\cmIXssbd=cmssbx9 \font\cmIXssmi=cmmi9
+\font\cmIXsssy=cmsy9 \font\cmIXssex=cmex10
+\expandafter\newdimen\csname\the\naMEtok ilsixss\endcsname
+\global\csname\the\naMEtok ilsixss\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsixss\endcsname=0pt
+\csname\the\naMEtok ilsixss\endcsname=11pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmIXssrm}%
+\def\noexpand\mi{\fam1\cmIXssmi}%
+\def\noexpand\sy{\fam2\cmIXsssy}%
+\def\noexpand\ex{\fam3\cmIXssex}%
+ \textfont0=\cmIXssrm \textfont1=\cmIXssmi
+ \textfont2=\cmIXsssy \textfont3=\cmIXssex
+ \textfont\itfam=\cmIXssit
+ \textfont\bffam=\cmIXssbd
+\def\noexpand\bd{\fam\bffam\cmIXssbd}%
+\def\noexpand\it{\fam\itfam\cmIXssit}%
+\def\noexpand\bi{\noexpand\ifIXssbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CMSAN9. Will print italic font .}%
+\noexpand\global\noexpand\IXssbierrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifIXsstterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CMSAN9. Will print roman font .}%
+\noexpand\global\noexpand\IXsstterrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifIXssccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CMSAN9. Will print roman font .}%
+\noexpand\global\noexpand\IXssccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsixss\noexpand\endcsname}}%
diff --git a/macros/text1/macros/fixcol.tex b/macros/text1/macros/fixcol.tex
new file mode 100644
index 0000000000..02f3402583
--- /dev/null
+++ b/macros/text1/macros/fixcol.tex
@@ -0,0 +1,155 @@
+% FILE HAS BEEN CONVERTED TO 2.03
+%
+% MULTIPLE COLUMN FORMATS FIXED MODE, two and three column
+% Harvey 1/29/86
+%
+\catcode`*=11 \catcode`@=11
+%
+\global\let\newcolumn=\np % new column in fixed mode is the
+\global\let\nc=\np % same as newpage in single column
+%
+\gdef\pagebody{\vbox to\vsize{\boxmaxdepth=\maxdepth
+ \pagecontents\vfill}}% redefine from plain.tex to add vfil
+ % prevents underfull vbox in last column
+%
+\gdef\flexibleformat{\write16{<TEXT1> Warning! You can't change to%
+ flexible format while in fixed format. }}%
+
+%
+\gdef\full*pgw{\hbox to \the\*txtw}% Output box to full pagewidth
+%
+\gdef\*colbox{\leftline{\pagebody}}% TeXbook definition
+%
+\gdef\*page{% MAKEPAGE, *mkpg, ships out the complete page body
+ \*badj % check for binding offset
+ \if*title\shipout % titlepage, no headline
+ \vbox{\*pgmat % page template
+ \makefootline}
+ \notitlepage
+ \else\shipout\vbox{ % normal page with head and footlines
+ \makeheadline %
+ \*pgmat % page template
+ \makefootline}
+ \fi
+ \ifnum\*pcount>0 \*blkpg\fi % call for empty page, BLANK PAGE MACRO
+ \advancepageno}% END, makepage routine
+%
+\gdef\*fixtwc{% BEGIN TWO COLUMNS FIXED FORMAT---set-up
+ \if*plain \par\vfill\eject \fi % new page prevents mixed formats
+ \if*dbl\e*fixtwc\fi % end any active double columns
+ \if*tpl \par\vfill\eject \fi % new page prevents mixed multicolumn format
+ % vfil eject prevents mixing formats
+ \def\*fixout{% TWO COLUMN OUTPUT, Fixed method
+ \if L\lr % if column indicator is left
+ \global\setbox\*lftcol=\*colbox % first column page
+ \global\let\lr=R % switch to second column
+ \else % print page and reset column indicator
+ \*page % format actual double column page
+ \global\let\lr=L % switch to first column
+ \fi
+ \ifnum\outputpenalty>-20000 % do nothing if no insert material
+ \else\dosupereject\fi % flush any held over material
+ }% End, normal fixed mode two column output routine
+%
+ \def\*pgmat{% PAGEMAT, formats columns and rules
+ \D=\the\*twcgut \D=.5\D % split gutter width in half
+ \full*pgw{\box\*lftcol % print left column
+ \hskip\D\vrule width\the\*clrw\hskip\D % gutter and rule
+ \*colbox\hfil} % print right column and fill
+ }% END, pagemat
+%
+ \def\newpage{\par\supereject % fills remainder of page with white
+ \if R\lr \null\vfill\eject\fi}% space and goes to next page
+ \let\np=\newpage
+%
+ \begingroup % BEGIN DOUBLE COLUMNS, fixed method
+ \tolerance=6400 % line breaking tolerance
+ \hbadness=6400 % message tolerance
+ \brokenpenalty=0 % setting these penalties to zero prevents
+ \clubpenalty=0 % strange page breaks that might otherwise
+ \widowpenalty=0
+ \hyphenpenalty=0
+ \exhyphenpenalty=0
+ \hsize=\the\*twcw % set column width
+ \let\lr=L % set switch to left (L) % begin with left
+ \output={\*multout} % fixed format output rou tine
+ \global\*plainfalse % plainoutput indicator false
+ \global\*dbltrue}% END FIXED TWO COLUMN FORMAT---set-up
+\global\let\twc=\*fixtwc
+%
+\gdef\e*fixtwc{\par\supereject % END FIXED TWO COLUMN FORMAT, called
+ \if R\lr \null\vfill\eject\fi % from onecolumn
+ \endgroup % two column fixed formatting ends
+ \global\*dblfalse % fixed double column indicator false
+ \global\*plaintrue}% plainoutput indicator true
+%
+\gdef\*fixthc{% BEGIN THREE COLUMNS FIXED FORMAT---set-up
+ \if*plain \par\vfill\eject\fi % new page prevents mixed formats
+ \if*tpl\e*fixthc\fi % end any active triple columns
+ \if*dbl \par\vfill\eject\fi % new page prevents mixed multicolumn formatting
+%
+ \def\*fixout{% THREE COLUMN OUTPUT, Fixed method
+ \if L\lr % if column indicator is left
+ \global\setbox\*lftcol=\*colbox
+ \global\let\lr=M % switch to middle column
+ \else\if M\lr % if middle column indicator is true
+ \global\setbox\*midcol=\*colbox
+ \global\let\lr=R % switch column indicator to right
+ \else
+ \*page % make the page
+ \global\let\lr=L % reset column indicator to left
+ \fi\fi %
+ \ifnum\outputpenalty>-20000 % no held over material
+ \else\dosupereject\fi}% eject held over insertions
+%
+ \def\*pgmat{% PAGEMAT, *pgmat, the page template routine
+ \D=\the\*thcgut \D=.5\D % half gutter width on each side of rule
+ \full*pgw{\box\*lftcol % print leftcolumn
+ \hskip\D\vrule width\the\*clrw\hskip\D % rule and gut.
+ \box\*midcol % print middle column
+ \if*norule \hskip2\D % supress rule on empty page call
+ \else % else set rules normally
+ \hskip\D\vrule width\the\*clrw\hskip\D\fi % rule and gut.
+ \*colbox\hfil} % print right column and fil
+ \global\*norulefalse
+ }% END, Pagemat
+%
+ \def\newpage{\par\supereject
+ \if M\lr \null\vfill\eject
+ \null\vfill\eject\global\*noruletrue\fi % supress column rules
+ \if R\lr \null\vfill\eject\global\*noruletrue\fi}
+ \let\np=\newpage
+%
+ \begingroup % BEGIN THREE COLUMNS, fixed method
+ \widowpenalty=0
+ \clubpenalty=0
+ \brokenpenalty=0
+ \hyphenpenalty=0
+ \exhyphenpenalty=0
+ \tolerance=9400
+ \hbadness=9400
+ \hsize=\the\*thcw % column width = three column width tokens
+ \let\lr=L % set column switch to left column
+ \output={\*multout} % fixed format output routine
+ \global\*plainfalse % plainoutput indicator false
+ \global\*tpltrue} % end 3 col fixed format
+\global\let\thc=\*fixthc % reset abbreviation for (thc)
+%
+\gdef\e*fixthc{\par\supereject % end 3 columns fixed mode
+ \if M\lr \null\vfill\eject \null\vfill\eject\fi % called from
+ \if R\lr \null\vfill\eject\fi % onecolumn
+ \endgroup % three column fixed formatting indicator f
+ \global\*tplfalse % end triple column indicator
+ \global\*plaintrue}% plainoutput indicator true
+%
+\gdef\*multout{\*badj
+ \*fixout
+ }% end fixed format output routine
+
+\gdef\onecolumn{\if*dbl\e*fixtwc\fi % end double column formatting
+ \if*tpl\e*fixthc\fi % end triple column formatting
+ \global\output={\*mkpg} % set single column output
+ }% end multiple column formatting
+\global\let\oc=\onecolumn
+%
+\catcode`*=12 \catcode`@=3
diff --git a/macros/text1/macros/flexcol.tex b/macros/text1/macros/flexcol.tex
new file mode 100644
index 0000000000..441066c681
--- /dev/null
+++ b/macros/text1/macros/flexcol.tex
@@ -0,0 +1,329 @@
+% This work is protected as an unpublished work under
+% U.S. copyright laws.
+% Copyright 1987, by Washington State University.
+% All rights reserved.
+%
+% Last updated on 7/1/89
+%
+% MULTIPLE COLUMN FORMATS FLEXIBLE MODE, two and three column
+%
+\catcode`*=11\catcode`@=11
+\global\output{\flex*ut{\unvbox255}} % FLEXCOL normal output routine
+\gdef\flex*ut#1{% FLEXIBLE OUTPUT, flex*ut
+ \boxmaxdepth=\maxdepth
+ \shipout\vbox{
+ \offinterlineskip % butt boxes together
+ \if*title % Do nothing if this is a title page
+ \else\makeheadline\fi % makeheadline redefined in TEXT1
+ \vbox to\*txth{ % page height equals single column text height
+ \ifvoid\topins % no top insert present
+ \else\unvbox\topins\fi % place top insert before main text
+ #1 % insert the main information
+ \vfil % PREVENTS UNDERFULL BOX WHEN ONLY A FEW POINTS OFF
+ \ifvoid\footins % no foot insert present
+ \else\vskip\skip\footins % skip to footnote position
+ \footnoterule % print footnote rule
+ \unvbox\footins\fi % place foot insert after main text and rule
+ \makefootline} % end vbox to *txth
+ } % end vbox with running heads, if any
+ \if*title\notitlepage\fi % reset vsize for a normal page
+ \if\*pcount>0\*blkpg\fi % call for empty page macro, TEXT1
+ \*ncfalse
+ \advancepageno} % End flex*ut, flexible output macro
+%
+\gdef\*adjp#1{% ADJUST PAGE MACRO, height of inserts lost during output call, this macro
+ \global\advance#1 by-\topskip % restores these values to the output routines
+ \ifvoid\topins % compensate for topskip
+ \else % if no insert present do nothing else
+ \global\advance#1 by-\ht\topins % routine restores those values
+ \global\advance#1 by-\dp\topins % to the new output routines.
+ \global\advance#1 by-\skip\topins
+ \global\advance#1 by\dp\strutbox % fine tune split
+ \fi
+ \ifvoid\footins % do nothing if no footinsert present
+ \else % else compensate for skips when footins present
+ \global\advance#1 by-\ht\footins %
+ \global\advance#1 by-\dp\footins %
+ \global\advance#1 by-\skip\footins %
+ \global\advance#1 by\dp\strutbox % fine tune split
+ \fi}% END *adjp, adjust page macro
+%
+% \*balctest is called whenever leaving 2 or 3 column formatting
+%
+\gdef\*balctest{% TEST REMAINING TEXT DEPTH text for more than one page of remaining text
+ \setbox0=\vbox{\unvbox255} % height box255 always=vsize
+ \dimen9=\ht0 % find height of material in box255
+ \advance\dimen9 by\topskip % account for top of page topskip
+ \if*dbl \advance\dimen9 by\splittopskip % second column splittopskip
+ \else\advance\dimen9 by2\splittopskip % second and third columns
+ \fi % end accounting for topskips for splitting routines
+ \setbox255=\vbox{\unvbox0}
+ \ifdim\dimen9>\vsize % too much material for one page
+ \if*dbl\expandafter\global\output={\*balc}\*twcout %
+ \else\expandafter\global\output={\*balc}\*thcout %
+ \fi % use normal output before using balance columns routine
+ \else % less than one full page of text remaining
+ \*balc % use balance columns routine
+ \fi}% END, *balctest, test for output routine to balance columns
+%
+\gdef\*flextwc{\par% BEGIN FLEX METHOD OF TWO COLUMNS
+ \goodbreak
+ \if*dbl\e*flextwc\fi % end any active two column format
+ \if*tpl\e*flexthc\else % if previous material in threecolumns call
+ \vskip\the\*mskb\fi % end threecolumns, else skipbefore.
+%
+ \def\*balc{% BALANCECOLUMNS, TWO COLUMNS---beginning
+ \*badj % check for binding adjust
+ \splittopskip=\topskip % splittopskip equals topskip
+ \setbox0=\vbox{\unvbox255} % release unbalanced page material
+ \dimen0=\ht0 % prepare to find equal height dimension
+ \divide\dimen0 by2 % split dimension for two columns
+ \advance\dimen0 by-\baselineskip % back up one line
+ \ifdim\dimen0<\baselineskip % check split depth
+ \dimen0=\topskip % account for the topskip
+ \advance\dimen0 by\baselineskip % account for one line
+ \fi
+ {\vbadness=10000 % prevents underfull box message during loop
+ \loop \global\setbox3=\copy0 % routine.
+ \global\setbox1=\vsplit3 to\dimen0 %
+ \ifdim\ht3>\dimen0 % if column longer...
+ \global\advance\dimen0 by1pt %
+ \repeat} % end balancing loop
+ \setbox0=\vbox to\dimen0{\unvbox1} %
+ \setbox2=\vbox to\dimen0{\dimen2=\dp3 %
+ \unvbox3 \kern-\dimen2 \vfill} %
+ \ifvoid2 \setbox2=\vbox to\dimen0{\null\vfill}\fi %
+ \*pgsofar % format text accummulated so far
+ \global\output={\*dbl-error} % error message if balance fails
+ \dimen@=\*txth % return vsize to single page size
+ \*adjp\dimen@ % adjust vsize for any remaining inserts
+ \global\vsize=\dimen@ % adjusted vsize
+ }% END, *balc, balancecolumns macro, twocolumns
+%
+ \def\*pgsofar{% PAGESOFAR, format for two columns
+ \unvbox\*ppage % boxes two column material
+ \D=\the\*twcgut \D=.5\D % half gutter skip on either side of rule
+ \wd0=\hsize \wd2=\hsize % set text box width securely
+ \hbox to\*txtw{\box0\hskip\D\vrule width\the\*clrw
+ \hskip\D\box2\hfil} % set boxes and rules
+ }% END, *pgsofar, pagesofar output macro
+%
+ \def\*twcout{% TWO COLUMN OUTPUT, normal output routine
+ \splittopskip=\topskip
+ \splitmaxdepth=\maxdepth
+ \*badj % check for binding adjust
+ \dimen@=\vsize % total text depth for two column out routine
+ \divide\dimen@ by2 % set splitting dimension
+ \*adjp\dimen@ % adjust page size for inserts
+ \setbox0=\vsplit255 to\dimen@ % split boxes to proper height
+ \setbox2=\vsplit255 to\dimen@
+ \flex*ut\*pgsofar % output current page
+ \unvbox255 % release extra text material gathered
+ \*bigch=2\*txth % allow vsize changes from cpt*vsize
+ \global\vsize=\*bigch % reset vsize to two column format
+ \penalty\outputpenalty}% END *twcout, two columns output routine
+%
+% TWOCOLUMNS, NEW COLUMN ROUTINE
+% Harvey 12/06/85
+% This method will fail if a topinsert or footinsert is added to
+% the page after the new column call. The box and glue are set
+% at the newcolumn call accounting for inserts active then only
+%
+ \def\newcolumn{\par % NEWCOLUMN, Flexible method, two columns
+ \D=.5\vsize % depth of one column
+ \ifdim\pagetotal>\D % determine which column is current
+ \D=\pagegoal % second column, depth > .5\vsize
+ \advance\D by-\pagetotal
+ \advance\D by-\topskip % account for topskip of 1st column
+ \advance\D by-\splittopskip % splittopskip of 2d column
+ \advance\D by-\dp\strutbox % account for character depth
+ \else % first column, depth equals half the vsize
+ \advance\D by-\pagetotal % subtract current page depth
+ \advance\D by-\topskip % subtract topskip form page depth
+ \advance\D by-\dp\strutbox % account for character depth
+ \fi
+ \vbox to\D{\vfill} % blank box to fill column
+ \*nctrue
+ \goodbreak}% END, newcolumn macro for two columns
+ \let\nc=\newcolumn % set two column definition of newcolumn
+%
+ \begingroup % BEGIN TWOCOLUMNS---set-up
+ \global\*dbltrue % double columns active
+ \brokenpenalty=0 % If these penalties are set to zero the text
+ \clubpenalty=0 % will be formatted properly. If the are in force
+ \widowpenalty=0 % uneven columns may result. The penalties will be
+ \hyphenpenalty=0 % honored in either page or vsplit modes.
+ \exhyphenpenalty=0
+ \tolerance=6400 % raise tolerance for short column material
+ \hbadness=6400 % warning message given at 6400
+ \*bigch=2\*txth % initialize two column page height
+ \dimen@=\*txth % set dimen@ to current page height
+ \advance\dimen@ by-\pagetotal % subtract current page depth
+ \*adjp\dimen@ % adjust page depth for inserts
+ \vsize=2\dimen@ % set vsize equal to twice the remaining depth
+ \output={\global\setbox\*ppage=\vbox{\unvbox255}}\eject
+ \output={\*twcout} % output partial page and set output
+ \hsize=\the\*twcw % to twocolumnout, set new hsize for column
+ \topskip=12pt plus4pt % glue for vsplitting mechanism
+ }% END, *flextwc, flexible two column---set-up
+%
+\gdef\e*flextwc{% TERMINATION MACRO FOR TWO COLUMNS FLEX METHOD
+ \if*nc \vfill\eject\fi % When we've done a \nc dump the page before balancing
+ \output={\*balctest}\eject % test for too much text for balancing
+ \global\output={\flex*ut{\unvbox255}} % output page
+ \global\*dblfalse % change two column indicator to false
+ \endgroup % END DOUBLE COLUMN FORMAT
+ \global\vsize=\*txth % reset page size to single column height
+ \global\hsize=\*txtw % reset page width to single column width
+ \dimen@=\vsize % prepare to include current inserts
+ \*adjp\dimen@ % adjust for topskip and inserts
+ \global\pagegoal=\dimen@ % adjust pagegoal for current inserts
+ \penalty-500
+ \vskip\the\*mska
+ }% END e*flextwc, TWO COLUMNS termination routine
+%
+%
+\gdef\*flexthc{\par% BEGIN FLEX METHOD OF THREE COLUMNS
+ \goodbreak
+ \if*tpl\e*flexthc\fi % end any active triple columns
+ \if*dbl\e*flextwc\else % if previous material is in twocolumns, end
+ \vskip\the\*mskb\fi % twocolumns, else skipbefore
+%
+ \def\*balc{% BALANCECOLUMNS, THREECOLUMNS---beginning
+ \*badj % check for binding adjust
+ \splittopskip=\topskip % split dimension for 3col
+ \setbox0=\vbox{\unvbox255}
+ \dimen0=\ht0 % prepare to find equal height dimension
+ \divide\dimen0 by3 % split dimension for each column
+ \advance\dimen0 by-\baselineskip % back-up one baselineskip
+ \ifdim\dimen0<\baselineskip % check split depth
+ \dimen0=\topskip % account for the topskip
+ \advance\dimen0 by\baselineskip % account for one line
+ \fi
+ {\vbadness=10000
+ \loop \global\setbox5=\copy0 % begin vsplit loop for balancing
+ \global\setbox3=\vsplit5 to\dimen0
+ \global\setbox4=\vsplit5 to\dimen0
+ \ifdim\ht5>\dimen0 \global\advance\dimen0 by1pt
+ \repeat} % end balancing loop
+ \setbox0=\vbox to\dimen0{\unvbox3} % first column
+ \setbox1=\vbox to\dimen0{\unvbox4} % second column
+ \ifvoid1 \setbox1=\vbox to\dimen0{\line{\hfil}\vfill}\fi
+ \setbox2=\vbox to\dimen0{\dimen2=\dp5\unvbox5\kern-\dimen2 \vfill}
+ \ifvoid2 \setbox2=\vbox to\dimen0{\line{\hfil}\vfill}\fi
+ \*pgsofar
+ \global\output={\*tpl-error} % error message if loop fails
+ \vsize=\*txth % reset page size to single column
+ \dimen@=\vsize % return vsize to single page vsize
+ \*adjp\dimen@ % adjust for topskip and inserts
+ \global\vsize=\dimen@ % new vsize accounts for current inserts
+ }% END, *balc, balance columns, threecolumns
+%
+ \def\*pgsofar{\unvbox\*ppage % boxes three column material
+ \D=\the\*thcgut \D=.5\D % half gutter for each side of rule
+ \wd0=\hsize \wd1=\hsize \wd2=\hsize % set text box width securely
+ \hbox to\*txtw{\box0\hskip\D\vrule width\the\*clrw
+ \hskip\D\box1\hskip\D\vrule width\the\*clrw
+ \hskip\D\box2\hfil} % set boxes and rules
+ }% End *pgsofar, page-so-far macro
+%
+ \def\*thcout{% THREE COLUMNS OUT, normal output routine for threecolumns
+ \splittopskip=\topskip
+ \splitmaxdepth=\maxdepth
+ \*badj % check for binding adjust
+ \dimen@=\vsize % total text depth for three column out routine
+ \divide\dimen@ by3 % set splitting dimension
+ \*adjp\dimen@ % adjust for topskip and inserts
+ \setbox0=\vsplit255 to\dimen@ % split boxes to proper height
+ \setbox1=\vsplit255 to\dimen@ %
+ \setbox2=\vsplit255 to\dimen@ %
+ \flex*ut\*pgsofar % send material to output routine
+ \unvbox255 % release any extra material gathered
+ \*bigch=3\*txth % allow vsize changes from cpt*vsize
+ \global\vsize=\*bigch % reset vsize for three column format
+ \penalty\outputpenalty}% END *thcout, normal output penalty set
+%
+% THREECOLUMNS, NEW COLUMN ROUTINE
+% Harvey 12/19/85
+% This routine has no way to compensate for inserts following the
+% new column call and will produce an overfull vbox message while
+% output active. It may also produce and underfull vbox message
+% if there is no stretchable glue in the column.
+ \def\newcolumn{\par % new column, three columns
+ \ifdim\pagetotal>.66666\vsize % you are in the third column
+ \D=\pagegoal % work from pagegoal for third column
+ \advance\D by-\topskip % account for topskip in 1st column
+ \advance\D by-2\splittopskip % splittopskip in columns 2 and 3
+ \advance\D by-\pagetotal % subtract current pagetotal
+ \advance\D by-\dp\strutbox % account for character depth
+ \else\ifdim\pagetotal>.3\vsize % you are in the second column
+ \D=.66666\vsize % column goal is 2/3 vsize
+ \advance\D by-\topskip % account topskip in 1st column
+ \advance\D by-\splittopskip % splittopskip in column 2
+ \advance\D by-\pagetotal % compensate for text
+ \advance\D by-\dp\strutbox % account for character depth
+ \else % you are in the first column
+ \D=.33333\vsize % goal is 1/3 vsize in first column
+ \advance\D by-\topskip % account for splittopskip
+ \advance\D by-\pagetotal % compensate for text
+ \advance\D by-\dp\strutbox % account for character depth
+ \fi\fi % end column determination and fil
+ \vbox to\D{\vfill}
+ \*nctrue
+ \goodbreak}% END, newcolumn for three columns
+%
+ \let\nc=\newcolumn % set new column definition to three columns
+%
+ \begingroup % BEGIN GROUP, THREE COLUMNS
+ \global\*tpltrue % set three column indicator on
+ \brokenpenalty=0 % These penalties should be zero in multicolumn
+ \clubpenalty=0 % modes that use the vsplit method of paging,
+ \widowpenalty=0 % the paging methods would honor the penalties.
+ \hyphenpenalty=0 % is erratic columns.
+ \exhyphenpenalty=0 %
+ \tolerance=9600 % raise tolerance for short columns
+ \hbadness=9600 % warnings issued at badness of 9600
+ \*bigch=3\*txth % initialize three column height
+ \dimen@=\*txth % set dimen@ to current page height
+ \advance\dimen@ by-\pagetotal % subtract current page depth
+ \*adjp\dimen@ % adjust page for topskip and inserts
+ \vsize=3\dimen@ % set vsize to 3 times remaining single column depth
+ \output={\global\setbox\*ppage=\vbox{\unvbox255}}\eject
+ \output={\*thcout} % output partial page and set output
+ \hsize=\the\*thcw % to threecolumnout, set new hsize for column
+ \topskip=12pt plus4pt % glue for the vsplitting mechanism
+ }% END *flexthc, three columns set-up
+%
+\gdef\e*flexthc{% TERMINATION THREE COLUMNS FLEX METHOD
+ \if*nc \vfill\eject\fi % When we've done a \nc dump the page before balancing
+ \output={\*balctest}\eject % balance remaining three column material
+ \global\output={\flex*ut{\unvbox255}} % shipout page
+ \global\*tplfalse % end three column indicator
+ \endgroup % END GROUP THREE COLUMNS
+ \global\vsize=\*txth % reset vsize to single column height
+ \global\hsize=\*txtw % reset hsize to single column width
+ \dimen@=\vsize % prepare to include current inserts
+ \*adjp\dimen@ % adjust for topskip and inserts
+ \global\pagegoal=\dimen@ % reset pagegoal to include inserts
+ \penalty-500
+ \vskip\the\*mska}% END E*flexthc, three columns termination macro
+%
+%
+\gdef\onecolumn{\if*dbl\e*flextwc\fi % end double column formatting
+ \if*tpl\e*flexthc\fi
+ \global\output={\*mkpg}
+ }% end triple column formatting
+\global\let\oc=\onecolumn
+%
+\gdef\*dbl-error{\errhelp=\balerrhelp
+ \errmessage{ Double columns can't be balanced on page \the\pageno . %
+ Please type h for help. }%
+ \flex*ut{\unvbox255}}
+\gdef\*tpl-error{\errhelp=\balerrhelp
+ \errmessage{ Triple columns can't be balanced on page \the\pageno . %
+ Please type h for help. }%
+ \flex*ut{\unvbox255}}%
+%
+\catcode`*=12\catcode`@=3
+
+
diff --git a/macros/text1/macros/text1.tex b/macros/text1/macros/text1.tex
new file mode 100644
index 0000000000..dd2fc1bdbb
--- /dev/null
+++ b/macros/text1/macros/text1.tex
@@ -0,0 +1,3 @@
+\input plain.tex
+\input txt1v409.tex
+\dump
diff --git a/macros/text1/macros/txt1v409.tex b/macros/text1/macros/txt1v409.tex
new file mode 100644
index 0000000000..afc9acb6c2
--- /dev/null
+++ b/macros/text1/macros/txt1v409.tex
@@ -0,0 +1,3536 @@
+% MACROS FOR TEXT1
+%
+% This work is protected as an unpublished work under
+% U.S. copyright laws.
+% Copyright 1987, by Washington State University.
+% All rights reserved.
+%
+% Last updated on 7/24/95 (drg)
+%
+\everyjob{\immediate\write16{TEXT1 Version 4.09}
+ \titlepage\spn{1}
+}
+%
+% The following variables are used for allowing conditional compilation
+% of special code depending on which version of TeX you are using.
+% See these special notes in the next paragarph
+\catcode`* = 11
+\catcode`@ = 11
+%
+\newif\if*MAC \*MACfalse % This is not a Macintosh
+\newif\if*CMS \*CMSfalse % This is not on CMS
+\newif\if*PC \*PCfalse % This is not a PC
+\newif\if*CG \*CGfalse % This is not a Compugraphics 8600 typesetter
+%
+% Note that non CMS versions must be modified. Here are the changes
+% necessary for the IBM PC/DOS version of TEXT1, Macintosh version,
+% and other non-CMS versions.
+%
+% 1. The filetype (extension) can only be 3 characters at the most
+% for the PC/DOS version.
+% This requires the following changes:
+% toc1 => tc1
+% toc2 => tc2
+% toc3 => tc3
+% endnotes => end
+% textext => txt
+% texmath => mth
+% texmodel => mdl
+%
+% 2. The Compugraphics dependent stuff in \selectspecificfont must
+% be omitted for all but CMS versions.
+%
+% 3. The routines \nonIBM and \IBM should be set to null for all but CMS
+% versions
+%
+% 4. The Macintosh/Textures version uses a special \include
+%
+
+
+% Some temporary variables to be used throughout
+%
+\newbox\A
+\newtoks\B
+\newskip\C
+\newdimen\D
+\newdimen\*D
+\newcount\E
+\newcount\F
+\newcount\G
+\newcount\N
+\newcount\Q
+\newcount\R
+% \T \U \V \W are used throughout TEXT1 as temp definitions
+% \I \J \K \M \X \Y \Z are temporary too, be careful if you use these
+%
+% ragged rightindent on bq troublesome.
+% titleleadskip works only with titlepage command in text.
+% for doublecolumns, change hsize and line--refer to ccndbl
+% for multiple right and centerline--refer to aztex
+%
+% IBM/NONIBM character definitions, added by Dean 7/11/86
+%
+% Use this macro when not printing with IBM standard distribution fonts
+
+
+\newif\if*IBM \*IBMfalse
+
+\if*CMS
+\def\nonIBM{\if*IBM \*IBMfalse%
+ \def\aa{\accent23a}%
+ \def\AA{\leavevmode\setbox0\hbox{h}\dimen@\ht0\advance\dimen@-1ex%
+ \rlap{\raise.67\dimen@\hbox{\char'27}}A}%
+ \def\c##1{\setbox\z@\hbox{##1}\ifdim\ht\z@=1ex\accent24 ##1%
+ \else{\ooalign{\hidewidth\char24\hidewidth\crcr\unhbox\z@}}\fi}%
+ \def\`##1{{\accent18 ##1}}%
+ \def\'##1{{\accent19 ##1}}%
+ \def\^##1{{\accent94 ##1}}\let\^^D=\|%
+ \def\~##1{{\accent"7E ##1}}%
+ \def\"##1{{\accent"7F ##1}}%
+ \chardef\i="10 % dummy dotless lowercase i
+ \def\dag{\mathhexbox279}%
+ \def\ddag{\mathhexbox27A}%
+ \def\S{\mathhexbox278}%
+ \def\P{\mathhexbox27B}%
+ \let\}=\rbrace%
+ \let\{=\lbrace%
+ \def\cents{\hbox{\rm\rlap/c}}\fi}% end non-IBM
+%
+% Use this macro when printing with the IBM standard distribution fonts
+\def\IBM{\*IBMtrue
+ \chardef\aa="8A % a overcircle
+ \chardef\AA="8B % A overcircle
+ \chardef\c="18 % cedilla
+ \chardef\`="12 % grave
+ \chardef\'="13 % acute
+ \chardef\^="5E % circumflex
+ \chardef\~="7E % tilde
+ \chardef\"="7F % umlaut
+ \chardef\i="69 % dummy dotless lowercase i
+ \chardef\S="DC % section number sign
+ \chardef\P="DD % paragraph sign or pilcrow
+ \chardef\dag="DE % dagger or obelisk
+ \chardef\ddag="DF % double dagger or diesis
+ \chardef\{="AE % left brace
+ \chardef\}="AF % right brace
+ \chardef\cents="CD}% end IBM
+\else
+\def\nonIBM{}
+\def\IBM{}
+\fi
+%
+% Redefined from PLAIN.TEX to omit the at sign "@"
+% @ symbol will be read as begin and end math mode otherwise
+\message{redefining some plain commands, }
+\newdimen\zZ \zZ=0pt % can be used both for 0pt and 0
+\mathchardef\zmz=1000
+\mathchardef\zMz=10000
+\mathchardef\zMMz=20000
+\def~{\penalty\zMz\ } % tie
+\def\break{\penalty-\zMz}
+\def\nobreak{\penalty \zMz}
+\def\allowbreak{\penalty \zZ}
+\def\supereject{\par\penalty-\zMMz}
+\def\nopagenumbers{\rhf{\bothpages{}}\rff{\bothpages{}}}
+%
+% Redefined from PLAIN.TEX to \unskip last skip if in h mode
+%
+\message{redefining some plain commands, }
+\def\removelastskip{\ifvmode\ifdim\lastskip=\z@\else\vskip-\lastskip\fi
+ \else\unskip\unskip\unskip\unskip\fi}
+\let\rlsk=\removelastskip
+%
+% Redefined from PLAIN.TEX to 12 point topskip
+\def\raggedbottom{\topskip 12\p@ plus60\p@ \r@ggedbottomtrue}%
+\def\normalbottom{\topskip 12\p@ \r@ggedbottomfalse}%
+%
+% Redefined from PLAIN.TEX to omit extraneous skips and such surprises.
+\def\endinsert{\egroup % finish the \vbox
+ \if@mid \dimen@\ht\z@ \advance\dimen@\dp\z@
+ \advance\dimen@12\p@ \advance\dimen@\pagetotal
+ \ifdim\dimen@>\pagegoal\@midfalse\p@gefalse\fi\fi
+ \if@mid \box\z@\goodbreak
+ \else\insert\topins{\penalty100 % floating insertion
+ \splittopskip\z@skip
+ \splitmaxdepth\maxdimen \floatingpenalty\z@
+ \ifp@ge \dimen@\dp\z@
+ \vbox to\vsize{\unvbox\z@\kern-\dimen@}% depth is zero
+ \else \box\z@\nobreak\fi}\fi\endgroup}
+%
+% Redefined from PLAIN.TEX to take mode into account
+\mathchardef\*dda="227A
+\mathchardef\*dag="2279
+\mathchardef\*neg="023A
+\def\ddagger{\relax\ifmmode\*dda\else$\*dda$\fi}%
+\def\dagger{\relax\ifmmode\*dag\else$\*dag$\fi}%
+\def\neg{\relax\ifmmode\*neg\else$\*neg$\fi}
+%
+% Redefined from PLAIN.TEX to take present font size into account
+%
+\def\strut{\relax
+ \setbox\strutbox=\hbox{\vrule height 1.8ex depth .6ex width 0pt}%
+ \ifmmode\copy\strutbox\else\unhcopy\strutbox\fi}%
+%
+%
+% Starting TEXT1 Definitions
+%
+% Use this one for Textures
+%
+\if*MAC
+ \def\include#1{\special {picture #1}}%
+ \else
+ \def\include#1{\special {IPS #1}}% added by gap 1/27/87
+\fi
+\let\incl=\include
+%
+\def\text#1{{\it\TeX T1}}% added by drg 9/26/86
+\def\bf{\bd}% added by jkw 6/30/86
+\def\cents{\hbox{\rm\rlap/c}}% added by jkw 6/30/86
+\def\fraction#1/#2 {% added by jkw 7/8/86
+ \leavevmode\kern.1em \raise.6ex\hbox{\the\scriptfont0 #1}\kern-.1em
+ /\kern-.15em\lower.25ex\hbox{\the\scriptfont0 #2}}
+\let\frac=\fraction
+\message{bibliography, }
+% Bibliography
+%
+\newtoks\bi*f \bi*f={\goodbreak\vs{1\bl}\hp\nin} % init bibentry
+\newtoks\bi*t \bi*t={\dumpinsertseject\cl{\bd\bibtitle}
+ \vs{1\bl}}% init bibliography title format
+\newtoks\bi*r \bi*r={width 3em height .6ex depth -.5ex}
+\newcount\bi*n \bi*n=0 % counter for numbered bibliography
+\newif\if*TC*bib \*TC*bibtrue
+%
+\long\def\bibliographyformat#1{{% definition of bibliographic format
+ \def\incontents##1{\global\*TC*bibtrue
+ \edef\T{##1}%
+ \edef\U{yes}%
+ \edef\V{no}%
+ \ifx \T\U % Already true
+ \else \ifx \T\V \global\*TC*bibfalse
+ \else \message{<TEXT1> Warning, argument to
+ incontents in bibliographyformat is not "yes" or "no".
+ "yes" will be assumed}
+ \fi\fi}%
+ \long\def\everybibentry##1{\global\bi*f={##1}}%
+% Remove this some day
+ \let\bibentryformat=\everybibentry%
+ \long\def\titleformat##1{\global\bi*t={##1}}% replacement format for bibliography title
+ \def\sameauthorrulesize##1{\global\bi*r={##1}}%
+ #1}}%
+\let\bif=\bibliographyformat
+%
+\def\bibtitle{}
+\def\bibliography#1{% calls bibtitle format and passes title
+ \global\bi*n=0 % set bib counter to zero each call
+ \global\def\bibtitle{#1} % collect title tokens
+ \par
+ \bgroup
+ \let\toclinebreak=\space
+ \let\toclbr=\space
+ \the\bi*t
+ \egroup
+ \D=\lastskip
+ \removelastskip
+ \if*TC*bib \putincontents1{\the\*btf}\fi % call bib title format
+ \ignorespaces
+ \vs{\D}
+}% end bibliography markup
+\let\bib=\bibliography
+%
+\def\bibnumber{\the\bi*n}%
+\def\bibentry{\par\global\advance\bi*n by1\the\bi*f}%
+\let\bie=\bibentry % abbreviation for \bibentry
+%
+\def\sameauthor{\vrule\the\bi*r}%
+\let\sau=\sameauthor
+%
+\message{misc, }
+\def\underscore#1{$\underline{\smash{\hbox{#1}}}$}%
+\let\us=\underscore
+\def\leader{\leaders\hbox to 8pt{\hss.\hss}\hfill}%
+%
+\def\hyphenoff{\pretolerance=10000\hbadness=10000}%
+\let\hof=\hyphenoff
+\def\hyphenon{\pretolerance=100\hbadness=1000}%
+\let\hon=\hyphenon
+%
+\def\today{\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space\number\day,\space\number\year}%
+%
+%
+\def\tilde{\relax\ifmmode\mathaccent"707E % relax added to trigger math
+ \else{\sy\char'030}\fi}% mode in tabs 1/27/87
+%
+\def\_{\leavevmode \kern.06em \vbox{\hrule width.3em}}%
+%
+\def\}{\relax\ifmmode \rbrace % relax added to trigger math mode in tabs
+ \else $\rbrace$\fi}%
+%
+\def\{{\relax\ifmmode \lbrace % relax added to trigger math mode in tabs
+ \else $\lbrace$\fi}%
+%
+\def\\{\relax\ifmmode \delimiter"26E30F % relax added to trigger math
+ \else $\delimiter"26E30F$\fi}% mode in tabs
+%
+\let\leftsquarebracket=[
+\let\rightsquarebracket=]
+\let\lsb=[
+\let\rsb=]
+\def\~#1{{\relax\ifmmode\mathaccent"707E % relax added to trigger math
+ \else \accent"7E #1\fi}}% mode in tabs
+%
+% baselineskip = interlineskip
+%
+\newskip\*isk
+\newskip\baseline
+\let\bl=\baseline
+\def\interlineskip#1{\baselineskip=#1%
+ \baseline=#1%
+ \*isk=#1\relax}%
+\let\isk=\interlineskip
+%
+\message{selectfontset, }
+\newfam\bifam \newfam\ccfam
+%
+% The \selectfontset macros are by JKW
+%
+\newtoks\naMEtok
+\newtoks\maTHtok
+\newskip\bAseSkip
+\newtoks\*sfslbl
+\if*PC
+ \*sfslbl={.txt}
+ \else
+ \*sfslbl={.textext}
+\fi
+
+\def\selectfontset#1#2#3{\naMEtok={#2}
+ \edef\T{default}%
+ \edef\U{#3}%
+ \ifx\U\T \bAseSkip=0pt
+ \else \bAseSkip=#3\fi
+ \input #1\the\*sfslbl }%
+\let\sfs=\selectfontset
+\sfs{cm12}{twelvept}{default}
+\sfs{cm10}{tenpt}{default}
+\twelvept
+%
+\newtoks\*smslbl
+\if*PC
+ \*smslbl={.mth}
+ \else
+ \*smslbl={.texmath}
+\fi
+
+\def\selectmathset#1#2{\maTHtok={#2}\input #1\the\*smslbl}%
+\let\sms=\selectmathset
+\selectmathset{cm97m}{mathdefault} %
+\mathdefault
+%
+% SELECT SPECIFIC FONT, jkw 8/26/86
+\newread\ckfnt
+\newif\ifnotcfend
+\newtoks\nUMtok
+\newtoks\nmtok
+
+\if*CMS
+\def\selectspecificfont#1#2#3{\naMEtok={#1}\nUMtok={#3}
+ \nmtok={#1\romannumeral #2}
+ \def\T{\uppercase{#1 }}%
+ \expandafter\xdef\csname I\the\nmtok\endcsname{\isk{\the\nUMtok}}
+ \openin\ckfnt=cgfonts.lclist
+ \loop\read\ckfnt to \W
+ \edef\U{\uppercase{\W}}%
+ \ifx\U\T
+ \expandafter\font\csname F\the\nmtok%
+ \endcsname=#1 at #2 pt \notcfendfalse
+ \else\ifeof\ckfnt
+ \expandafter\font\csname F\the\nmtok%
+ \endcsname=#1#2 \notcfendfalse
+ \else\notcfendtrue\fi\fi
+ \ifnotcfend \repeat
+ \closein\ckfnt
+ \expandafter\xdef\csname\the\naMEtok\endcsname ##1;{%
+ \noexpand\csname F\the\naMEtok
+ \noexpand\romannumeral\noexpand ##1\noexpand\endcsname
+ \noexpand\csname I\the\naMEtok
+ \noexpand\romannumeral\noexpand ##1\noexpand\endcsname}}%
+\else
+\def\selectspecificfont#1#2#3{\naMEtok={#1}\nUMtok={#3}
+ \nmtok={#1\romannumeral #2}
+ \def\T{\uppercase{#1 }}%
+ \expandafter\xdef\csname I\the\nmtok\endcsname{\isk{\the\nUMtok}}
+ \expandafter\xdef\csname\the\naMEtok\endcsname ##1;{%
+ \noexpand\csname F\the\naMEtok
+ \noexpand\romannumeral\noexpand ##1\noexpand\endcsname
+ \noexpand\csname I\the\naMEtok
+ \noexpand\romannumeral\noexpand ##1\noexpand\endcsname}}%
+\fi
+
+\let\ssf=\selectspecificfont
+%
+\skewchar\teni='177 \skewchar\seveni='177 \skewchar\fivei='177
+\skewchar\tensy='60 \skewchar\sevensy='60 \skewchar\fivesy='60
+%
+\setbox0=\hbox{\tenex B} \p@renwd=\wd0 % width of the big left (
+%
+%
+\message{monospace, }
+\newif\if*msp \*mspfalse
+\if*CMS
+\def\monospace{%
+ \global\*msptrue % changed to global 6/27/86 bth
+ \sfs{monofont}{defaultmono}{default}
+ \defaultmono
+ \gdef\underscore##1{{\italicfont ##1}}%
+ \global\let\us=\underscore
+ \special{fonts=10cpi}
+ \raggedbottom
+ \global\paragraphskip{0pt}
+ \global\paragraphindent{36pt}
+ \gdef\tilde{\ifmmode\mathaccent"707E%
+ \else \char'176{}\fi}%
+ \gdef\_{\char'137{}}%
+ \gdef\}{\ifmmode \rbrace
+ \else \char'175{}\fi}%
+ \gdef\{{\ifmmode \lbrace
+ \else\char'173{}\fi}%
+ \gdef\\{\ifmmode \delimiter"26E30F%
+ \else\char'134{}\fi}%
+ \gdef\neg{\char'136{}}%
+ \gdef\ellipsis##1{{\def\U{\message{<TEXT1> Error! Only 3 or 4 are valid for ellipsis. Command ignored.}}
+ \ifcase ##1\U\or\U\or\U%
+ \or .~.~.
+ \or .~.~.~.
+ \else\U\fi}}%
+
+ \tableofcontentsformat{% added 1/26/87 Guenther
+ \toctitle{\centerline{\bd Table of Contents}
+ \vs{1\bl}}
+ \figuretoctitle{\newpage
+ \centerline{\bd List of Figures}
+ \line{Figure \rt{Page}}}
+ \tabletoctitle{\newpage
+ \centerline{\bd List of Tables}
+ \line{Table \rt{Page}}}
+ }% end table of contents format
+
+ \global\let\el=\ellipsis
+ \asisformat{\skipbefore{1\bl}\everyasis{\leftindent{0pt}}\skipafter{1\bl}}
+ \blockquoteformat{\skipbefore{1\bl}\everyblockquote{\rm\leftindent{36pt}\rightindent{36pt}}\skipafter{1\bl}}
+ \figureformat{\titleformat{\bqb\bd\hp Figure \figurenumber. \figuretitle \bqe}}
+ \tableformat{\titleformat{\vs{\bl}\cl{\bd Table \tablenumber}
+ \cl{\rm\tabletitle}\vs{\bl}}}
+ \endnoteformat{\skipbefore{0\bl}\notereferencefont{\rm}\everyendnote{\rm\lin{0pt}}}
+ \footnoteformat{\textreferenceposition{down}\textreferencefont{\rm}\textreferencestyle{(1)}
+ \notereferencefont{\rm}\everyfootnote{\rm\pin{.5in}\psk{.5in}\lin{0pt}\rin{0pt}}}
+
+ \partformat{\titleformat{\dumpinsertseject\titlepage
+ \hrule height0pt depth0pt \vfil
+ \cl{\bd Part \partnumber}\cl{\bd\parttitle}\np
+ \scn{0}\ssan{0}\ssbn{0}\sscn{0}\ssdn{0}
+ \sfn{0}\stn{0}\sfnn{0}\senn{0}}}% end part format
+ \indexformat1{\everyindex{\rm}}
+ \indexformat2{\everyindex{\rm}}
+ \indexformat3{\everyindex{\rm}}
+ \chapterformat{\titleformat{\dumpinsertseject\cl{\bd Chapter \chapternumber}\cl{\bd\chaptertitle}\vs{1\bl}
+ \ssan{0}\ssbn{0}\sscn{0}\ssdn{0}}}% end chapter format
+ \prefaceformat{\titleformat{\dumpinsertseject\cl{\bd\prefacetitle}
+ \vs{1\bl}\ssan{0}\ssbn{0}\sscn{0}\ssdn{0}}}% end preface format
+ \appendixformat{\titleformat{\dumpinsertseject
+ \cl{\bd Appendix \appendixnumber}\cl{\bd\appendixtitle}\vs{1\bl}
+ \scn{0}\ssan{0}\ssbn{0}\sscn{0}\ssdn{0}\sfn{0}\stn{0}}}% end appendix format
+ \subheadaformat{\titleformat{\removelastskip\goodbreak\vs{2\bl}
+ \bd\nin\subheadatitle\par\nobreak\vs{1\bl}\nobreak
+ \ssbn{0}\sscn{0}\ssdn{0}}}% end subheadaformat markup
+ \subheadbformat{\titleformat{\removelastskip\goodbreak\vs{2\bl}
+ \it\nin\subheadbtitle\par\nobreak\vs{1\bl}\nobreak
+ \sscn{0}\ssdn{0}}}% end subheadbformat markup
+ \subheadcformat{\titleformat{\removelastskip\goodbreak\vs{2\bl}
+ \nin\subheadctitle\par\nobreak\vs{1\bl}\nobreak\ssdn{0}}}% end subheadc format markup
+ \subheaddformat{\titleformat{\goodbreak{\it \subheaddtitle.}}}% end subheadd markup
+ \runningheadformat{\bothpages{\line{\rm\lft{}\ctr{}\rt{\pagenumber}}
+ \vs{1\bl}}}% end runningheadformat markup
+}% END monospace markup definition
+\else
+ \def\monospace{\message{<TEXT1> monospace fonts are not available. Use
+ typewritter fonts instead.}}
+\fi
+\let\msp=\monospace
+%
+\def\sl{\message{<TEXT1> Warning! The slanted font is not in font sets. Only tensl is used.}\tensl}%
+\message{more misc, }
+%
+% Ellipsis command 10/22/85
+%
+\def\ellipsis#1{{\def\U{\message{<TEXT1> Error! Only 3 or 4 are valid for ellipsis. Command ignored.}}
+ \ifcase #1\U\or\U\or\U%
+ \or \ifmmode\mathinner{\ldotp\ldotp\ldotp}
+ \else$\mathinner{\ldotp\ldotp\ldotp}$\fi
+ \or \ifmmode\mathinner{\ldotp\ldotp\ldotp\ldotp}
+ \else\removelastskip$\ldotp\ldotp\ldotp\ldotp$\fi
+ \else\U\fi}}%
+\let\el=\ellipsis
+%
+% dumpinsertseject is plain.tex \dosupereject with and \else added
+%
+\def\dumpinsertseject{\ifnum\insertpenalties>\z@ % something is being held over
+ \line{}\kern-\topskip\nobreak\vfill\supereject
+ \else \newpage
+ \fi}% END dumpinsertseject markup definition
+\let\die=\dumpinsertseject
+\message{page format, }
+%
+\newif\if*tempif
+%
+% Pageformat command
+%
+\newdimen\pg*l \pg*l=11in % page length
+\newdimen\pg*t \pg*t=0in % top margin set for 1in origin
+\newdimen\pg*b \pg*b=2in % bottom margin set for 1in origin
+\newdimen\pg*w \pg*w=8.5in % page width
+\newdimen\pg*r \pg*r=2in % right margin set for 1in,
+\newdimen\*lmar \*lmar=0.2in % left margin set for 1in
+% Note: TEX origin at 1in,1in
+\newif\if*cropmarks \*cropmarksfalse
+\newdimen\pg*a \pg*a=0in
+\hsize=6.3in \hoffset=0.2in
+\vsize=9in \voffset=0in
+%
+\def\pageformat#1{{\par
+ \def\pagelength##1{\global\pg*l=##1
+ \cpt*vs}%
+ \def\topmargin##1{\global\pg*t=##1
+ \global\advance\pg*t by- 1in % set margin 1in,1in
+ \cpt*vs}%
+ \def\bottommargin##1{\global\pg*b=##1
+ \global\advance\pg*b by 1in % set margin 1in,1in
+ \cpt*vs}%
+ \def\pagewidth##1{\global\pg*w=##1\cpt*hs}%
+ \def\rightmargin##1{\global\pg*r=##1
+ \global\advance\pg*r by 1in % set margin 1in,1in
+ \cpt*hs}%
+ \def\leftmargin##1{\global\*lmar=##1
+ \global\advance\*lmar by -1in % set margin 1in,1in
+ \cpt*hs}%
+ \def\bindingadjust##1{\global\pg*a=##1\cpt*hs}%
+ \def\galleywidth##1{\global\pg*w=##1
+ \global\advance\pg*w by\*lmar
+ \global\advance\pg*w by\pg*r \cpt*hs}%
+ \def\cropmarks##1{\global\*cropmarksfalse
+ \edef\T{##1}%
+ \edef\U{yes}%
+ \edef\V{no}%
+ \ifx \T\U \global\*cropmarkstrue
+ \else \ifx \T\V \global\*cropmarksfalse
+ \else \message{<TEXT1> Warning, argument to cropmarks in
+ pageformat is not "yes" or "no". "no" will be assumed}
+ \*cropmarksfalse
+ \fi\fi}%
+ #1}}% End pageformat markup definition
+\let\pf=\pageformat
+%
+% set page text size, compute hsize
+%
+\def\cpt*hs{% COMPUTE HORIZONTAL SIZE
+ \global\hoffset=\*lmar
+ \global\hsize=\pg*w % added global 11/11/86 bth
+ \global\advance\hsize by-\pg*r % ""
+ \global\advance\hsize by-\*lmar % ""
+ \global\*txtw=\hsize}% added for multi column routines
+%
+% set page text size, vsize
+%
+\def\cpt*vs{% COMPUTE VERTICAL SIZE
+ \global\voffset=\pg*t
+ \global\vsize=\pg*l
+ \global\advance\vsize by-\pg*t
+ \global\advance\vsize by-\pg*b
+ \if*title \global\advance \voffset by \tp*sk % lines from titlepage
+ \global\advance \vsize by -\tp*sk % from titlepage
+ \fi
+ \global\*txth=\vsize}% added for multi column routines
+%
+% left center right
+%
+\def\lft#1{#1\hfill}
+\def\ctr#1{\hfill #1\hfill}
+\def\rt#1{\hfill #1}
+%
+\message{running heads, }
+%
+% Page numbers
+%
+\def\setpagenumber#1{\global\pageno=#1}%
+\let\spn=\setpagenumber
+\def\pagenumber{\ifnum \pageno<0 \romannumeral-\pageno
+ \else \number\pageno\fi}%
+\let\pn=\pagenumber
+%
+\def\rule{\vskip 1\baselineskip\hrule}%
+%
+% Running heads
+%
+\newif\if*title
+%
+\newtoks\rh*r \rh*r={\line{\twelvept\rt{\pagenumber}}\vs{\bl}}
+\newtoks\rh*l \rh*l={\line{\twelvept\rt{\pagenumber}}\vs{\bl}}
+\newtoks\rf*r \rf*r={}
+\newtoks\rf*l \rf*l={}
+%
+\def\runningheadformat#1{{%
+ \def\*ttitle##1{\setbox\A=\vbox{##1}%
+ \D=\ht\A
+ \advance\D by -1in
+ \ifdim \D>\pg*t
+ \global\pg*t=\D
+ \global\advance\pg*t by 12pt
+ \advance\D by 1in
+ \message{<TEXT1> Warning, the top margin you
+ have specified is less than the
+ running top title. The top margin will
+ be changed to \the\D}
+ \cpt*vs
+ \fi
+ \if*tempif \global\rh*l={\hrule width\hsize
+ height0pt depth0pt ##1}
+ \else \global\rh*r={\hrule width\hsize
+ height0pt depth0pt ##1}\fi
+ }% end *ttitle definition
+ \def\evenpages##1{\*tempiftrue\*ttitle{##1}}%
+ \def\oddpages##1{\*tempiffalse\*ttitle{##1}}%
+ \def\bothpages##1{\*tempiftrue\*ttitle{##1}
+ \*tempiffalse\*ttitle{##1}}%
+ \relax
+ #1
+ }}% END runningheadformat markup definition
+\let \rhf = \runningheadformat
+%
+\def\runningfootformat#1{{%
+ \def\*btitle##1{\setbox\A=\vbox{##1}%
+ \D=\ht\A
+ \advance\D by 1in
+ \ifdim \D>\pg*b
+ \global\pg*b=\D
+ \global\advance\pg*b by 12pt
+ \advance\D by -1in
+ \message{<TEXT1> Warning, the bottom margin
+ you have specified is less than height of the
+ running bottom title.
+ The bottom margin will be
+ changed to \the\D}
+ \cpt*vs
+ \fi
+ \if*tempif \global\rf*l={##1}
+ \else \global\rf*r={##1}\fi
+ }% end of bottomline
+ \def\evenpages##1{\*tempiftrue\*btitle{##1}}%
+ \def\oddpages##1{\*tempiffalse\*btitle{##1}}%
+ \def\bothpages##1{\*tempiftrue\*btitle{##1}
+ \*tempiffalse\*btitle{##1}}%
+ \relax
+ #1}}% END runningfootformat markup definition
+\let \rff = \runningfootformat
+%
+\newdimen\tp*sk \tp*sk=1in
+\newtoks\tp*fl \tp*fl={}
+\def\titlepageformat#1{{%
+ \def\titleleadskip##1{\global\tp*sk=##1}%
+ \def\titlefootline##1{\global\tp*fl={##1}}%
+ \relax
+ #1
+ \titlepage}} %end of titlepageformat
+\let \tpf = \titlepageformat
+%
+\def\titlepage{\global\*titletrue
+ \cpt*vs}%
+\let\tp=\titlepage
+\def\notitlepage{\global\*titlefalse
+ \cpt*vs}%
+\let\ntp=\notitlepage
+%
+\message{output, }
+%
+% Output changed to permit binding adjust
+%
+\output={\*mkpg}
+%
+\def\*mkpg{\*badj
+ \plainoutput
+ \if*title \notitlepage\fi
+ \ifnum\*pcount>0 \*blkpg\fi}% insert blank page
+%
+\def\plainoutput{\shipout\vbox{\*setcrops{\vbox{%
+ \makeheadline
+ \pagebody
+ \makefootline}}}
+ \advancepageno
+ \ifnum\outputpenalty>-\@MM
+ \else\dosupereject\fi}
+%
+\def\*setcrops#1{\setbox\A=\vbox{#1}
+ \if*cropmarks
+ \D=\wd\A
+ \advance\D by 15pt
+ \vbox{\hsize=\the\D
+ \offinterlineskip\psk{0pt}\pin{0pt}
+ \hbox to \D{\vrule width 5pt height .1pt depth 0pt
+ \hfill
+ \vrule width 5pt height .1pt depth 0pt}
+ \hbox to \D{\vrule height 5pt width .1pt depth 0pt
+ \hfill
+ \vrule height 5pt width .1pt depth 0pt}
+ \vs{\the\pg*t}
+ \vs{3pt}
+ \hbox to \D{\hfill\box\A\hfill}
+ \vs{3pt}
+ \hbox to \D{\vrule width .1pt height 5pt depth 0pt
+ \hfill
+ \vrule width .1pt height 5pt depth 0pt}
+ \hbox to \D{\vrule width 5pt height .1pt depth 0pt
+ \hfill
+ \vrule width 5pt height .1pt depth 0pt}}
+ \else \box\A\fi}
+%
+\def\makeheadline{% headline set for multiple and single column modes
+ \if*title% Do nothing if its a title page
+ \else \setbox\A=\vbox{\hsize=\the\*txtw % hsize added to allow
+ \ifodd\pageno\the\rh*r % headline to print the
+ \else\the\rh*l\fi} % full width in multi
+ \vbox to 0pt{\vskip-\ht\A\box\A\vss} % column mode
+ \fi} % This could replace the TEXT1@@ definition
+%
+\def\makefootline{\if*title
+ \if*cropmarks \vbox{\hsize=\the\*txtw\the\tp*fl\vss}
+ \else\vbox to 0pt{\hsize=\the\*txtw\the\tp*fl\vss}\fi
+ \else\if*cropmarks \vbox{\hsize=\the\*txtw\ifodd\pageno\the\rf*r
+ \else\the\rf*l\fi\vss}
+ \else\vbox to 0pt{\hsize=\the\*txtw\ifodd\pageno\the\rf*r
+ \else\the\rf*l\fi\vss}\fi % hsize added for multi column mode
+ \fi} % This could replace the TEXT1@@ definition
+%
+\def\*badj{\ifdim\pg*a=\z@ % do nothing if binding adjust absent
+ \else
+ \ifodd\pageno % Binding adjust markup (revised 2/03/87
+ \global\hoffset=\*lmar % offset equals left margin value
+ \global\advance\hoffset by\pg*a % plus binding adjust
+ \else
+ \global\hoffset=\*lmar % offset equals left margin value
+ \global\advance\hoffset by-\pg*a % plus binding adjust
+ \fi\fi}% end binding adjust markup
+\message{more misc, }
+%
+% linebreak
+%
+\def\linebreak{\null\hfil\break}
+\let\lbr=\linebreak
+\let\toclinebreak=\linebreak
+\let\toclbr=\linebreak
+%
+% Horizontal skip
+%
+\def\horizontalspace#1{\null\hskip#1\relax}%
+\let\hs=\horizontalspace
+%
+% skip down
+%
+\def\verticalspace#1{\vskip #1\relax}%
+\let\vs=\verticalspace
+%
+\def\verticalspacekeep#1{\par
+ \hbox{\vbox{\vskip #1\relax}}}%
+\let\vsk=\verticalspacekeep
+%
+% raggedright (as TeX basic)
+%
+\newdimen\r*sk \r*sk=0pt % dimension to save right skip
+\def\rightragged{\par \r*sk=\rightskip \*rrtrue
+ \if*msp \rightskip=\r*sk plus10em
+ \spaceskip=1em \xspaceskip=1em
+ \else \rightskip=\r*sk plus2em\relax
+ \spaceskip=.3333em \xspaceskip=.5em
+ \fi}
+\let\rr=\rightragged
+%
+% leftragged
+%
+\newdimen\l*sk \l*sk=0pt % dimension to save left skip
+\def\leftragged{\par %
+ \l*sk=\leftskip
+ \spaceskip=.35em
+ \xspaceskip=.55em
+ \parfillskip=0pt
+ \leftskip=\l*sk plus2em\relax}
+\let\lr=\leftragged
+%
+\newif\if*rr \*rrfalse
+\def\justify{\par
+ \rightskip=\r*sk
+ \*rrfalse
+ \leftskip=\l*sk
+ \spaceskip=0pt \xspaceskip=0pt
+ \parfillskip=0pt plus1fil\relax}
+\let\ju=\justify
+%
+% spacing
+%
+\def\singlespace{\par\baselineskip=\*isk}
+\let\ssp=\singlespace
+\def\doublespace{\par\baselineskip=2\*isk}
+\let\dsp=\doublespace
+%
+% paragraph
+%
+\let\paragraph=\par
+\def\paragraphindent#1{\parindent=#1}
+\let\pin=\paragraphindent
+\def\paragraphskip#1{\parskip=#1}
+\let\psk=\paragraphskip
+%
+% noindent
+%
+\let\nin=\noindent
+%
+% hanging paragraph macro
+%
+\newdimen\*hin \*hin=24pt
+\def\hangingindent#1{\*hin=#1}
+\let\hin=\hangingindent
+%
+\def\hangingparagraph{\par
+ \hangindent=\*hin
+ \hangafter=1
+ \noindent}
+\let\hp=\hangingparagraph
+\newif\if*mnr \*mnrfalse % left/right margin note indicator
+\newtoks\e*mn \e*mn={\tenpt\rr} % every margin note tokens
+\newtoks\*mnw \*mnw={54pt} % margin note width tokens
+\newtoks\*mngut \*mngut={6pt} % margin note gutter tokens
+\message{margin note, }
+%
+% Margin Note markup
+%
+\def\marginnoteformat#1{% MARGINAL NOTE FORMAT
+ \def\position##1{% "left" or "right" margin note check
+ \edef\T{##1}%
+ \edef\U{left}%
+ \edef\V{right}%
+ \ifx \T\U \global\*mnrfalse % left margin notes true
+ \else\ifx \T\V \global\*mnrtrue % right margin notes true
+ \else\global\*mnrfalse % default, improper entry
+ \write16{<TEXT1> You must specify "left" or "right" in %
+ the marginnoteformat markup. Left is the default.}%
+ \fi\fi}% end margin note check
+ \def\notewidth##1{\global\*mnw={##1}}% note width variable
+ \def\notegutter##1{\global\*mngut={##1}}% gutter width variable
+ \def\everymarginnote##1{\global\e*mn={##1}}% token variable
+ #1}% insert arguments, END marginnoteformat
+\let\mnf=\marginnoteformat % set marginnoteformat abbreviation
+%
+\long\def\marginnote#1{% BEGIN MARGIN NOTE MACRO
+ \if*CG
+ \special{MARGINNOTE=true} % added 6/30/87 jkw for 8600 line numbering
+ \fi
+ \ifvmode\leavevmode\fi % can't use vadjust in vertical mode
+ \bgroup % begin margin note routine
+ \def\rightragged{\r*sk=\rightskip \*rrtrue
+ \if*msp \rightskip=\r*sk plus10em %
+ \spaceskip=1em \xspaceskip=1em %
+ \else \advance\rightskip by 0pt plus1fil\relax %
+ \spaceskip=.35em \xspaceskip=.55em %
+ \fi}% par removed from TEXT1 version %
+ \let\rr=\rightragged %
+%
+ \tolerance=6000 % increase line-breaking tolerance
+ \hbadness=6000 % increase warning tolerance
+ \strut % sets line depth for vadjust
+ \D=\dp\strutbox % capture depth of current line
+ \the\e*mn % every margin note tokens
+ \strut % sets strut to margin note font
+ \parskip=0pt % cancel any paragraph skip
+ \if*mnr % right margin notes true
+ \vadjust{ % make whats'it in text
+ \rlap{\smash{ % rightlap, make note depth zero
+ \hskip\hsize % skip to right margin
+ \hskip\the\*mngut % make gutter
+ \vtop{\hsize=\the\*mnw % set reference point, new hsize
+ \kern-\D % kern depth of current text line
+ \kern-\ht\strutbox % kern height of margin note text
+ \nin#1}}}}% % input margin note text
+ \else % left margin notes true
+ \vadjust{ % make whats'it in text
+ \llap{\smash{ % leftlap, make note depth zero
+ \vtop{\hsize=\the\*mnw % gather vertical material with
+ \kern-\D % kern depth of current text line
+ \kern-\ht\strutbox % kern height of margin note text
+ \nin#1}% reference point at the top
+ \hskip\the\*mngut}}}% make margin note gutter
+ \fi %
+ \egroup % end margin notes routine
+ \ignorespaces}% END margin note macro
+\let\mn=\marginnote
+%
+\message{labels, }
+%
+% labeled definition macro
+%
+\newdimen\la*w \la*w=1in % Label width
+\newtoks\la*g \la*g={1em} % Label gutter
+\newtoks\la*s \la*s={1\bl} % Skip before label
+\newtoks\la*f \la*f={\rm} % Label font
+%
+\long\def\label#1{\par\vskip\the\la*s
+ \setbox\A=\vtop{\hsize=\la*w
+ \leftskip=0pt
+ \rightskip=0pt plus2em
+ \tolerance=1600
+ \noindent
+ \the\la*f
+ #1}%
+ \hangindent=\la*w
+ \advance \hangindent by \the\la*g
+ \hangafter=1
+ \noindent
+ \setbox0=\hbox{\rlap{\box\A}}\ht0=0pt\dp0=0pt\box0%
+ \hskip\la*w
+ \hskip\the\la*g
+ \ignorespaces}
+\let\la=\label
+%
+\def\labelformat#1{{\def\skipbefore##1{\global\la*s={##1}}%
+ \def\labelwidth##1{\global\la*w=##1}%
+ \def\gutter##1{\global\la*g={##1}}%
+ \def\everylabel##1{\global\la*f={##1}}%
+ #1}}% End labelformat
+\let\laf=\labelformat
+%
+\message{indents, }
+%
+% leftindent
+%
+\newif\if*ok
+\newif\if*zero
+\def\leftindent#1{\par
+ \*zerofalse
+ \*okfalse
+ \e*p#1\end%
+ \if*zero \leftskip 0pt \fi
+ \advance \leftskip by #1
+ \l*sk=\leftskip % l*sk used in justify reset
+ }%
+\let\lin=\leftindent
+%
+\def\rightindent#1{\par
+ \*zerofalse \*okfalse
+ \e*p#1\end%
+ \if*zero \rightskip 0pt \fi
+ \advance \rightskip by #1
+ \if*rr\rr\fi
+ \r*sk=\rightskip}% r*sk used in justify reset
+\let\rin=\rightindent
+%
+% \e*p will determine if the parm value passed to \leftindent
+% or \rightindent is to be relative to the previous indent, which means a
+% "+" or "-" will appear in front of the indent value. If no "+" or "-",
+% then the indent is to be absolute from the original left margin.
+%
+\def\e*p#1{\ifx #1\end \let \next = \relax% e*p => Evaluate Parameter
+ \else \if*ok \let \next = \e*p
+ \else \global\*oktrue
+ \ifx #1+ \let \next = \e*p
+ \else \ifx #1- \let \next = \e*p
+ \else \*zerotrue
+ \let \next = \e*p
+ \fi\fi\fi\fi \next}
+%
+\message{block quotes, }
+%
+% Blockquote
+%
+\newskip\bq*sb \bq*sb = 6pt % Default skip before
+\newskip\bq*sa \bq*sa = 6pt % Default skip after
+\newtoks\bq*f \bq*f={\tenpt\leftindent{24pt}\rightindent{24pt}}
+%
+\def\blockquoteformat#1{{%
+ \def\everyblockquote##1{\global\bq*f={##1}}%
+ \def\skipbefore##1{\global\bq*sb=##1\relax}%
+ \def\skipafter##1{\global\bq*sa=##1\relax}%
+ #1}} %end of blockquoteformat
+\let\bqf=\blockquoteformat
+%
+\def\blockquotebegin{\par\vskip\bq*sb\relax\begingroup
+ \the\bq*f }
+\let\bqb=\blockquotebegin
+\def\blockquoteend{\par\endgroup\vskip\bq*sa\relax}
+\let\bqe=\blockquoteend
+%
+\message{footnotes, }
+%
+%
+%
+% Footnote
+%
+% The "tfn" prefixed values are for the reference in the text of
+% the document.
+%
+\newif\if*tfn*dnum \*tfn*dnumfalse %"1." style
+\newif\if*tfn*unum \*tfn*unumtrue %"1" style
+\newif\if*tfn*pnum \*tfn*pnumfalse %"(1)" style
+\newif\if*tfn*dlet \*tfn*dletfalse % "a." style
+\newif\if*tfn*ulet \*tfn*uletfalse % "a" style
+\newif\if*tfn*plet \*tfn*pletfalse % "(a)" style
+\newif\if*tfn*rbe \*tfn*rbefalse % reference after word
+\newif\if*tfnupchar \*tfnupchartrue %
+\newtoks\*tfn*rfont \*tfn*rfont={\tenpt\rm}
+%
+% The "nfn" prefixed values are for the reference as it is formatted
+% at the bottom of the page.
+%
+\newif\if*nfn*dnum \*nfn*dnumtrue %"1." style
+\newif\if*nfn*unum \*nfn*unumfalse %"1" style
+\newif\if*nfn*pnum \*nfn*pnumfalse %"(1)" style
+\newif\if*nfn*dlet \*nfn*dletfalse % "a." style
+\newif\if*nfn*ulet \*nfn*uletfalse % "a" style
+\newif\if*nfn*plet \*nfn*pletfalse % "(1)" style
+\newif\if*nfnupchar \*nfnupcharfalse % reference is not superscript
+\newtoks\*nfn*rfont \*nfn*rfont={\tenpt\rm}
+\newtoks\*nfng \*nfng={1em}
+%
+\newif\if*fn*llap \*fn*llaptrue
+\newtoks\fn*f
+\newcount\fn*num
+\newdimen\fn*div \fn*div=2in
+\newskip\fn*sadiv \fn*sadiv=2.6pt %default skip after divider
+\newskip\fn*sbdiv \fn*sbdiv=6pt %default skip before divider
+%
+\def\footnotenumber{{\if*tfn*dnum \the\fn*num % "1." style
+ \else\if*tfn*unum \the\fn*num % "1" style
+ \else\if*tfn*pnum \the\fn*num % "(1)" style
+ \else\l*alphatrue \a*c{\fn*num} % "a.", "a", and "(a)"
+ \fi\fi\fi
+ \removelastskip}}
+%
+\def\setfootnotenumber#1{\fn*num=#1}
+\let\sfnn=\setfootnotenumber
+%
+\skip\footins=15pt plus 3pt minus 2pt
+\fn*f={\tenpt\pin{20pt}\lin{0in}}
+%
+\def\footnoteformat#1{{%
+ \def\everyfootnote##1{\global\fn*f{##1}}%
+ \def\textreferencestyle##1{%
+ \global\*tfn*dnumfalse
+ \global\*tfn*unumfalse
+ \global\*tfn*pnumfalse
+ \global\*tfn*dletfalse
+ \global\*tfn*uletfalse
+ \global\*tfn*pletfalse
+ \edef\T{##1}%
+ \edef\U{(1)}%
+ \edef\V{1}%
+ \edef\Y{1.}%
+ \edef\W{(a)}%
+ \edef\X{a}%
+ \edef\Z{a.}%
+ \ifx\T\U \global\*tfn*pnumtrue
+ \else\ifx\T\V \global\*tfn*unumtrue
+ \else\ifx\T\Y \global\*tfn*dnumtrue
+ \else\ifx\T\W \global\*tfn*plettrue
+ \else\ifx\T\X \global\*tfn*ulettrue
+ \else\ifx\T\Z \global\*tfn*dlettrue
+ \else \message{<TEXT1> Error! textreferencestyle ##1
+ is not a valid style. Statement ignored.}
+ \fi\fi\fi\fi\fi\fi}% end reference style
+ \def\textreferencefont##1{\global\*tfn*rfont{##1}}%
+ \def\textreferenceplacement##1{\global\*tfn*rbefalse
+ \edef\T{##1}%
+ \edef\U{before}%
+ \edef\V{after}%
+ \ifx\T\U \global\*tfn*rbetrue
+ \else\ifx\T\V \global\*tfn*rbefalse
+ \else \message{<TEXT1> Error! textreferenceplacement ##1
+ is invalid. Statement ignored.}
+ \fi\fi}
+ \def\textreferenceposition##1{\global\*tfnupcharfalse
+ \edef\T{##1}%
+ \edef\U{up}%
+ \edef\V{down}%
+ \ifx\T\U \global\*tfnupchartrue
+ \else\ifx\T\V \global\*tfnupcharfalse
+ \else \message{<TEXT1> Error! textreferenceposition ##1
+ has an invalid parameter. Statement ignored.}
+ \fi\fi}
+ \def\notereferencestyle##1{
+ \global\*nfn*dnumfalse
+ \global\*nfn*unumfalse
+ \global\*nfn*pnumfalse
+ \global\*nfn*dletfalse
+ \global\*nfn*uletfalse
+ \global\*nfn*pletfalse
+ \edef\T{##1}%
+ \edef\U{(1)}%
+ \edef\V{1}%
+ \edef\Y{1.}%
+ \edef\W{(a)}%
+ \edef\X{a}%
+ \edef\Z{a.}%
+ \ifx\T\Y \global\*nfn*dnumtrue
+ \else\ifx\T\U \global\*nfn*pnumtrue
+ \else\ifx\T\V \global\*nfn*unumtrue
+ \else\ifx\T\W \global\*nfn*plettrue
+ \else\ifx\T\X \global\*nfn*ulettrue
+ \else\ifx\T\Z \global\*nfn*dlettrue
+ \else \message{<TEXT1> Error! notereferencestyle ##1
+ is not a valid style. Statement ignored.}
+ \fi\fi\fi\fi\fi\fi}% end reference style
+ \def\notereferencefont##1{\global\*nfn*rfont{##1}}%
+ \def\notereferenceposition##1{\global\*nfnupcharfalse
+ \edef\T{##1}%
+ \edef\U{up}%
+ \edef\V{down}%
+ \ifx\T\U \global\*nfnupchartrue
+ \else\ifx\T\V \global\*nfnupcharfalse
+ \else \message{<TEXT1> Error! notereferenceposition ##1
+ has an invalid parameter. Statement ignored.}
+ \fi\fi}%
+ \def\skipbeforedivider##1{\global\fn*sbdiv=##1\relax}%
+ \def\footnotedivider##1{\global\fn*div=##1\relax}%
+ \def\notereferencegutter##1{\global\*nfng={##1}}%
+ \def\skipafterdivider##1{\global\fn*sadiv=##1\relax}%
+ #1
+ \relax
+ \skip\footins=0pt plus 3pt minus 2pt
+ \global\advance\skip\footins by \fn*sbdiv\relax%
+ \global\advance\skip\footins by \fn*sadiv\relax%
+}} % end of footnoteformat
+\let\fnf=\footnoteformat
+%
+\def\autofootnote{\global\advance\fn*num by 1
+ \l*alphatrue
+ \xdef\I{%
+ \if*tfn*unum \the\fn*num%
+ \else \if*tfn*ulet \a*c{\the\fn*num}%
+ \else \if*tfn*plet (\a*c{\the\fn*num})%
+ \else \if*tfn*pnum (\the\fn*num)%
+ \else \if*tfn*dlet \a*c{\the\fn*num}.%
+ \else \if*tfn*dnum \the\fn*num.%
+ \fi\fi\fi\fi\fi\fi}%
+ \def\K{%
+ \if*nfn*unum \the\fn*num%
+ \else \if*nfn*ulet \a*c{\the\fn*num}%
+ \else \if*nfn*plet (\a*c{\the\fn*num})%
+ \else \if*nfn*pnum (\the\fn*num)%
+ \else \if*nfn*dlet \a*c{\the\fn*num}.%
+ \else \if*nfn*dnum \the\fn*num.%
+ \fi\fi\fi\fi\fi\fi}%
+%
+ \let\@sf=\empty
+ \ifhmode\edef\@sf{\spacefactor=\the\spacefactor}\fi
+ \def\J{{\the\*tfn*rfont
+ \if*tfnupchar \raise.7ex\hbox{\the\*tfn*rfont\I}%
+ \else {\I}\fi}}%
+ \if*tfn*rbe \@sf\J\ignorespaces%
+ \else\unskip\unskip\unskip\unskip\J\@sf\fi
+ \def\M{{\the\*nfn*rfont
+ \if*nfnupchar \raise.7ex\hbox{\K}%
+ \else {\K}\fi}}%
+ \vfootnote{\M}}
+\let\afn=\autofootnote
+%
+% vfootnote redefined to include fn*f features
+% The addition of hsize=txtw in vfootnote for flexibleformat allows the
+%
+% footnote to print across the full text width at the page bottom.
+%
+% Footstrut redefined to baselineskip for consistent spacing in footnote
+%
+%
+\def\footnoterule{\vskip-\fn*sadiv\hrule width\fn*div\vskip\fn*sadiv\relax}
+%
+% redefined from PLAIN TEX to baselineskip. PLAIN TEX
+% used the height of a ten point strutbox
+%
+\def\vfootnote#1{% Vfootnote revised 11/6/86
+ \insert\footins\bgroup
+ \if*fix % if fixed mode do nothing to footnote
+ \else\hsize=\*txtw\fi % else print footnote across full width of page
+ \interlinepenalty\interfootnotelinepenalty
+ \setbox\strutbox=\hbox{\vrule height 1.8ex depth .6ex width 0pt}%
+ \splittopskip\ht\strutbox % top baseline for broken footnotes
+ \splitmaxdepth\dp\strutbox
+ \floatingpenalty\@MM
+ \leftskip\z@skip
+ \rightskip\z@skip
+ \spaceskip\z@skip
+ \xspaceskip\z@skip
+ \the\fn*f
+ \def\T{\parindent}% For some odd and unknown reason this def is needed
+ \ifdim\the\parindent>0pt \global\*fn*llaptrue
+ \else \ifdim\the\leftskip>0pt \global\*fn*llaptrue
+ \else \global\*fn*llapfalse\fi\fi
+ \leavevmode
+ \if*fn*llap \hbox to 0pt{\hss{#1\hskip\the\*nfng}}%
+ \else \hbox{#1\hskip\the\*nfng}\fi%
+ \ignorespaces
+ \footstrut\futurelet\next\fo@t}% END vfootnote markup definition
+%
+\def\footstrut{\vbox to\baselineskip{}}
+%
+\message{endnotes, }
+%
+% Endnote
+%
+% The "ten" prefixed values are for the reference in the text of
+% the document.
+%
+\newif\if*ten*num \*ten*numtrue % "[1]", "1" and "(1)" styles
+\newif\if*ten*let \*ten*letfalse % "a" and "(a)" styles
+\newif\if*ten*paren \*ten*parenfalse % "(1)" and "(a)" styles
+\newif\if*ten*sb \*ten*sbtrue % "[1]" style
+\newif\if*tenupchar \*tenupcharfalse % reference is not superscripted by
+\newtoks\*tenrfont \*tenrfont={\tenpt\rm}
+%
+% The "nen" prefixed values are for the reference as it is formatted
+% at the end of a chapter or the end of the document.
+%
+\newif\if*nen*num \*nen*numtrue % "[1]", "1", "1." and "(1)" styles
+\newif\if*nen*let \*nen*letfalse % "a" and "(a)" styles
+\newif\if*nenll*per \*nenll*pertrue % "1." style
+\newif\if*nen*paren \*nen*parenfalse % "(1)" and "(a)" styles
+\newif\if*nen*sb \*nen*sbfalse % "[1]" style
+\newif\if*nenupchar \*nenupcharfalse % reference isn't superscripted
+\newtoks\*nenrfont \*nenrfont={\tenpt\rm}
+\newdimen\*neng \*neng=1em
+%
+\newtoks\*enpar
+\newcount\en*n
+\newskip\en*s \en*s=4pt
+%
+%
+\def\endnotenumber{{\if*ten*num \the\en*n % all numeric styles
+ \else\l*alphatrue \a*c{\en*n} % all alpha styles
+ \fi
+ \removelastskip}}
+%
+\def\setendnotenumber#1{\en*n=#1}
+\let\senn=\setendnotenumber
+%
+\*enpar={\tenpt\pin{0in}\lin{1.2em}}
+%
+\def\endnoteformat#1{%
+ {\def\everyendnote##1{\global\*enpar{##1}}%
+ \def\textreferencestyle##1{%
+ \global\*ten*numfalse
+ \global\*ten*letfalse
+ \global\*ten*parenfalse
+ \global\*ten*sbfalse
+ \edef\T{##1}%
+ \edef\U{[1]}%
+ \edef\V{(1)}%
+ \edef\W{1}%
+ \edef\X{(a)}%
+ \edef\Y{a}%
+ \ifx\T\U \global\*ten*numtrue \global\*ten*sbtrue % st
+ \else\ifx\T\V \global\*ten*numtrue \global\*ten*parentrue % st
+ \else\ifx\T\W \global\*ten*numtrue % st
+ \else\ifx\T\X \global\*ten*lettrue \global\*ten*parentrue % st
+ \else\ifx\T\Y \global\*ten*lettrue % st
+ \else \message{<TEXT1> Error! textreferencestyle ##1
+ is not a valid style. Statement ignored.}
+ \fi\fi\fi\fi\fi}% end reference style
+ \def\textreferencefont##1{\global\*tenrfont{##1}}%
+ \def\textreferenceposition##1{\global\*tenupcharfalse
+ \edef\T{##1}%
+ \edef\U{up}%
+ \edef\V{down}%
+ \ifx\T\U \global\*tenupchartrue
+ \else\ifx\T\V \global\*tenupcharfalse
+ \else \message{<TEXT1> Error! textreferenceposition ##1
+ has an invalid parameter. Statement ignored.}
+ \fi\fi}
+ \def\notereferencestyle##1{
+ \global\*nen*numfalse
+ \global\*nen*letfalse
+ \global\*nen*parenfalse
+ \global\*nenll*perfalse
+ \global\*nen*sbfalse
+ \edef\T{##1}%
+ \edef\U{[1]}%
+ \edef\V{(1)}%
+ \edef\W{1}%
+ \edef\X{(a)}%
+ \edef\Y{a}%
+ \edef\Z{1.}%
+ \ifx\T\Z \global\*nen*numtrue \global\*nenll*pertrue % style
+ \else\ifx\T\U \global\*nen*numtrue \global\*nen*sbtrue % st
+ \else\ifx\T\V \global\*nen*numtrue \global\*nen*parentrue % st
+ \else\ifx\T\W \global\*nen*numtrue % st
+ \else\ifx\T\X \global\*nen*lettrue \global\*nen*parentrue % st
+ \else\ifx\T\Y \global\*nen*lettrue % st
+ \else \message{<TEXT1> Error! notereferencestyle ##1
+ is not a valid style. Statement ignored.}
+ \fi\fi\fi\fi\fi\fi}% end reference style
+ \def\notereferencefont##1{\global\*nenrfont{##1}}%
+ \def\notereferenceposition##1{\global\*nenupcharfalse
+ \edef\T{##1}%
+ \edef\U{up}%
+ \edef\V{down}%
+ \ifx\T\U \global\*nenupchartrue
+ \else\ifx\T\V \global\*nenupcharfalse
+ \else \message{<TEXT1> Error! notereferenceposition ##1
+ has an invalid parameter. Statement ignored.}
+ \fi\fi}%
+ \def\notereferencegutter##1{\global\*neng=##1}%
+ \def\skipbefore##1{\global\en*s=##1}%
+ \relax
+ #1}} % end of footnoteformat
+\let\enf=\endnoteformat
+%
+\newlinechar=`\^^J
+\newhelp\aenhelp{relax
+ You may continue if you wish, but I'd be surprised
+ if your job^^J
+ finished without any errors when you print the endnotes. }
+%
+\def\err@#1{\errmessage{TEXT1 error: #1}}
+\def\*aenerr{\errhelp=\aenhelp
+ \catcode`@=11
+ \errmessage{Results are unpredictable
+ when you use autoendnote with asisbegin.
+ Type h for more help}}%
+\def\autoendnote{\global\advance\en*n by 1
+ \if*aib \*aenerr \fi
+ \l*alphatrue
+ \edef\I{%
+ \if*ten*paren (\unskip\fi
+ \if*ten*sb [\unskip\fi
+ \if*ten*num \the\en*n\fi
+ \if*ten*let \a*c{\the\en*n}\fi
+ \if*ten*paren \unskip)\fi
+ \if*ten*sb \unskip]\fi}%
+ \let\@sf=\empty
+ \ifhmode \edef\@sf{\spacefactor=\the\spacefactor}%
+ \else \let\@sf=\empty\fi
+ \unskip\unskip
+ \if*tenupchar \raise.7ex\hbox{\the\*tenrfont\I}\@sf%
+ \else {\the\*tenrfont\I}\@sf\fi%
+ \edef\J{%
+ \if*nen*paren (\unskip\fi
+ \if*nen*sb [\unskip\fi
+ \if*nen*num \the\en*n\fi
+ \if*nen*let \a*c{\the\en*n}\fi
+ \if*nenll*per \unskip.\fi
+ \if*nen*paren \unskip)\fi
+ \if*nen*sb \unskip]\fi}%
+ \en*o
+ \immediate\write\en*f{\par%
+ \the\*enpar%
+ \noexpand\ENP{\the\*nenrfont\J}}%
+ \en*w}
+\let\aen=\autoendnote
+%
+%
+\def\ENP#1{\indent\en*i{%
+ \if*nenupchar \raise.7ex\hbox{\the\*nenrfont#1}%
+ \else {\the\*nenrfont#1}\fi}}%
+%
+\def\en*i#1{\hbox to 0pt{\hss{#1}\hskip\*neng}\ignorespaces}
+%
+\newwrite\en*f
+\newtoks\*endlbl
+\if*PC
+ \*endlbl={text1xx.end}
+ \else
+ \*endlbl={text1xx.endnotes}
+\fi
+
+\def\en*o{\immediate\openout\en*f=\the\*endlbl
+ \immediate\write\en*f{\the\*enpar}%
+ \edef\T{\par\vskip\the\en*s\relax}%
+ \immediate\write\en*f{\T}%
+ \global\def\en*o{}%
+ }
+%
+\long\def\en*w#1{{\def\rm{\noexpand\rm}\def\it{\noexpand\it}%
+ \def\underscore{\noexpand\us}\let\us=\underscore%
+ \def\bd{\noexpand\bd}\def\cc{\noexpand\cc}\def\tt{\noexpand\tt}%
+ \def\c{\noexpand\c}\def\L{\noexpand\L}\def\AA{\noexpand\AA}%
+ \def\d{\noexpand\d}\def\O{\noexpand\O}\def\t{\noexpand\t}%
+ \def\b{\noexpand\b}%
+ \immediate\write\en*f{#1}}%
+}% end definition of en*w
+%
+\def\printendnotes{\immediate\closeout\en*f%
+ \begingroup%
+ \input text1xx.endnotes%
+ \par%
+ \endgroup%
+ \global\def\en*o{\immediate\openout\en*f=text1xx.endnotes%
+ \immediate\write\en*f{\the\*enpar}%
+ \edef\T{\par\vskip\the\en*s\relax}%
+ \immediate\write\en*f{\T}%
+ \global\def\en*o{}}%
+ \setendnotenumber{0}}%
+\let \pen=\printendnotes
+%
+\message{set command, }
+%
+%
+\def\set#1#2{\l*alphafalse
+\ifx#2\appendixnumber
+ \edef\T{\the\*ap*num}%
+ \E=\*ap*st%
+ \else\ifx#2\chapternumber
+ \edef\T{\the\*ch*num}%
+ \E=\*ch*st%
+ \else\ifx#2\endnotenumber
+ \edef\T{\the\en*n}%
+ \if*ten*num \E=1% % all numeric styles
+ \else\l*alphatrue \E=2% % all alpha styles
+ \fi%
+ \else\ifx#2\figurenumber
+ \edef\T{\the\fi*n}%
+ \E=1%
+ \else\ifx#2\footnotenumber
+ \edef\T{\the\fn*num}%
+ \if*tfn*dnum \E=1% % "1." style
+ \else\if*tfn*unum \E=1% % "1" style
+ \else\if*tfn*pnum \E=1% % "(1)" style
+ \else\l*alphatrue \E=2% % "a.", "a", and "(a)"
+ \fi\fi\fi%
+ \else\ifx#2\partnumber
+ \edef\T{\the\*pt*num}%
+ \E=\*pt*st%
+ \else\ifx#2\pagenumber
+ \ifnum \pageno<0 \edef\T{\romannumeral-\pageno}%
+ \else \edef\T{\number\pageno}\fi%
+ \E=1%
+ \else\ifx#2\subheadanumber
+ \edef\T{\the\*sa*num}%
+ \E=\sa*st%
+ \else\ifx#2\subheadbnumber
+ \edef\T{\the\*sb*num}%
+ \E=\sb*st%
+ \else\ifx#2\subheadcnumber
+ \edef\T{\the\*sc*num}%
+ \E=\sc*st%
+ \else\ifx#2\subheaddnumber
+ \edef\T{\the\*sd*num}%
+ \E=\sd*st%
+ \else\ifx#2\tablenumber
+ \edef\T{\the\ta*n}%
+ \E=1%
+ \else\message{<TEXT1> Error! You've entered a number I know nothing
+ about. I'm going to ignore it and try to proceed.}%
+ \E=0%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+\null % So, why is this needed??
+\ifcase\E % NOP
+ \or % set to a digit or lower case roman
+ \expandafter\xdef\csname#1\endcsname{\T}%
+ \or % set to a letter (upper or lower)
+ \expandafter\xdef\csname#1\endcsname{{\a*c{\T}}}%
+ \or % set to an uppercase roman numeral
+ \expandafter\xdef\csname#1\endcsname{%
+ \uppercase\expandafter{\romannumeral\T}}%
+ \fi}%
+%
+\message{centering, }
+%
+% CENTERLINE Rev. 9/6/88 drg
+%
+% Centerline with single and multiple line capabilities
+\newif\if*afn*cl
+\def\centerline#1{\par % Begin centerline markup
+ \*afn*clfalse
+ \B={}
+ \N=0
+ \bgroup
+ \parindent=\z@ \relax % zero indent
+ \parfillskip=0pt plus1fil \relax % infinite stretch
+ \everypar{\null\hskip0pt plus1fil\relax} % add infinite glue
+ \def\linebreak{\hskip0pt plus1fil\relax\break
+ \null\hskip0pt plus1fil\relax}%
+ \let\lbr=\linebreak
+ \let\toclinebreak=\space
+ \let\toclbr=\space
+ \justify
+ \let\*vfn=\vfootnote
+ \let\*afn=\autofootnote
+ \def\vfootnote##1##2{\edef\T{\the\B\noexpand\vfootnote{##1}{##2}}
+ \global\B=\expandafter{\T}}
+ \def\autofootnote{\global\*afn*cltrue
+ \global\advance\N by 1 % count the notes done
+ \*afn}
+ \let\afn=\autofootnote
+ \let\*fn=\footnote
+ \def\footnote##1{\global\*afn*cltrue \*fn{##1}}
+ \setbox\A=\vbox{#1\par % added to make skip with multiple lines
+ \global\C=\baselineskip
+ \setbox0=\hbox{(}
+ \global\advance\C by-\ht0}% end vbox
+ \global\advance\fn*num by -\N %subtract the number of notes done
+ \let\autofootnote=\*afn \let\afn=\autofootnote
+ \let\footnote=\*fn
+ \let\vfootnote=\*vfn
+ \ifdim\ht\A>\baselineskip \else \C=\z@ \fi
+ \line{\hss\vbox{\vskip\C#1\par}\hss}% print centered lines
+ \egroup
+ \if*afn*cl % then there were footnotes in the \cl
+ \the\B
+ \fi
+ }% End centerline markup
+\let\cl=\centerline
+%
+% CENTER MULTIPLE LINES
+%
+\newif\if*ctrl % centerline indicator
+\*ctrlfalse
+\def\centerlinesbegin{\par\global\*ctrltrue
+ \begingroup\pin{0pt}\psk{0pt}\leftskip=0pt plus1fil
+ \parfillskip=0pt \rightskip=0pt plus1fil\obeylines\ignorespaces}%
+\let\clb=\centerlinesbegin
+\def\centerlinesend{\endgroup\par}
+\let\cle=\centerlinesend
+%
+% rightline par added to PLAIN TEX macro
+%
+\long\def\rightline#1{\par\line{\hss#1}}
+\let\rl=\rightline
+%
+% right align multiple lines
+%
+\def\rightlinesbegin{\par\begingroup\parskip=0pt\parfillskip=0pt
+ \leftskip=0pt plus1fil\obeylines}%
+\let\rlb=\rightlinesbegin
+\def\rightlinesend{\endgroup\par}%
+\let\rle=\rightlinesend
+%
+\message{asis, }
+%
+% As is or format off
+%
+\newskip\*aisb \*aisb = 6pt % Default skip before
+\newskip\*aisa \*aisa = 6pt % Default skip after
+\newtoks\*aif \*aif={\leftindent{0in}}
+\newif\if*aib \*aibfalse % centerline indicator
+%
+\def\asisformat#1{{%
+ \def\everyasis##1{\global\*aif{##1}}%
+ \def\skipbefore##1{\global\*aisb=##1\relax}%
+ \def\skipafter##1{\global\*aisa=##1\relax}%
+ \relax
+ #1}} % end of asisformat
+\let\aif=\asisformat
+%
+% As is or format off
+\def\asisbegin{\par\*aibtrue\vskip\*aisb\relax\nointerlineskip
+ \begingroup
+ \let\*afn=\autofootnote % save definition of autofootnote
+ \def\leftindent##1{%
+ \*zerofalse \*okfalse
+ \e*p##1\end%
+ \if*zero \leftskip 0pt \fi
+ \advance \leftskip by ##1}%
+ \let\lin=\leftindent
+%
+ \def\autofootnote{\endgroup % end asis format
+ \futurelet\next\ck*chr}% pick next character, then check the pick
+ \let\afn=\autofootnote % reset abbreviation for autofootnote
+ \def\ck*chr{\ifcat\bgroup % if left brace
+ \noexpand\next % do nothing
+ \let\next\gather % next equals gather
+ \else % no brace present
+ \let\next\re*group\fi % stop if no brace encountered
+ \next}%
+ \def\gather{\*afn % call normal autofootnote
+ \bgroup % furnish left brace, read group
+ \aftergroup\re*group % reset asis format
+ \let\next}% eat curly brace in text
+ % group ends at text right curly brace
+ \def\re*group{\*asisb}% restore asis group
+%
+ \def\*asisb{\begingroup
+ \def\singlespace{\baselineskip=\*isk}%
+ \let\ssp=\singlespace
+ \def\doublespace{\baselineskip=2\*isk}%
+ \let\dsp=\doublespace
+ \def\par{\leavevmode\endgraf}%
+ \parskip0pt\parindent0pt
+ \the\*aif
+ \setupverbatim}\*asisb}
+ {\obeyspaces\gdef {\ }}
+\def\obeyspaces{\@vobeyspaces}
+{\catcode`\ =\active\gdef\@vobeyspaces{\catcode`\ \active\let \@xobeysp}}
+\def\@xobeysp{\leavevmode\penalty10000\ }
+\def\setupverbatim{\obeylines
+ \obeyspaces }
+\let\aib=\asisbegin
+\def\asisend{\endgroup\endgroup\vskip\*aisa\relax\*aibfalse}
+\let\aie=\asisend
+%
+\message{box macros, }
+%
+% Start of boxes
+%
+\font\dtscr=dt
+%
+% Draw boxes
+%
+\newdimen\db*m \db*m=3pt % drawbox mat size
+\newdimen\db*s \db*s=.4pt % drawbox rule size
+\newdimen\db*sh \db*sh=0pt % drawbox shadow size
+\newdimen\db*om \db*om=0pt % drawbox outer mat size
+\newdimen\db*os \db*os=0pt % drawbox outer rule size
+\newcount\db*ps \db*ps=0 % drawbox percent of screen
+%
+\long\def\drawbox#1{\*box{\db*m}{\db*s}{\db*sh}{\db*om}{\db*os}{\db*ps}{#1}}
+\let\db=\drawbox
+%
+\def\drawboxformat#1{{%
+ \def\boxmat##1{\global\db*m=##1\relax}%
+ \def\boxrule##1{\global\db*s=##1\relax}%
+ \def\boxshadow##1{\global\db*sh=##1\relax}%
+ \def\outerboxmat##1{\global\db*om=##1\relax}%
+ \def\outerboxrule##1{\global\db*os=##1\relax}%
+ \def\screen##1{\ifnum##1>64
+ \message{<TEXT1> Error. Screen can only be 0 through 64}
+ \global\db*ps=0
+ \else\ifnum##1<0
+ \message{<TEXT1> Error. Screen can only be 0 through 64}
+ \global\db*ps=0
+ \else \global\db*ps=##1\relax\fi\fi}%
+ #1}} % end of drawboxformat
+\let\dbf=\drawboxformat
+%
+\def\drawboxrulesize#1{\dbf{\boxrule{#1}}
+ \message{<TEXT1> Warning: Use drawboxformat instead of drawboxrulesize}}
+\let\dbrs=\drawboxrulesize
+\def\drawboxmat#1{\dbf{\boxmat{#1}}
+ \message{<TEXT1> Warning: Use drawboxformat instead of drawboxmat}}
+\let\dbm=\drawboxmat
+%
+% Paragraph boxes
+%
+\newdimen\pb*m \pb*m=3pt % paragraphbox mat size
+\newdimen\pb*s \pb*s=.4pt % paragraphbox rule size
+\newdimen\pb*sh \pb*sh=0pt % paragraphbox shadow size
+\newdimen\pb*om \pb*om=0pt % paragraphbox outer mat size
+\newdimen\pb*os \pb*os=0pt % paragraphbox outer rule size
+\newcount\pb*ps \pb*ps=0 % paragraphbox percent of screen
+%
+\long\def\paragraphbox#1{\par\hbox{%
+ \*box{\pb*m}{\pb*s}{\pb*sh}{\pb*om}{\pb*os}{\pb*ps}{\vbox{%
+ \advance \hsize by -2\pb*m%
+ \advance \hsize by -2\pb*s%
+ \advance \hsize by -2\pb*om%
+ \advance \hsize by -2\pb*os%
+ \hrule width \hsize height 0pt depth 0pt%
+ #1}}}}
+\let\pb=\paragraphbox
+%
+\def\paragraphboxformat#1{{%
+ \def\boxmat##1{\global\pb*m=##1\relax}%
+ \def\boxrule##1{\global\pb*s=##1\relax}%
+ \def\boxshadow##1{\global\pb*sh=##1\relax}%
+ \def\outerboxmat##1{\global\pb*om=##1\relax}%
+ \def\outerboxrule##1{\global\pb*os=##1\relax}%
+ \def\screen##1{\ifnum##1>64
+ \message{<TEXT1> Error. Screen can only be 0 through 64}
+ \global\pb*ps=0
+ \else\ifnum##1<0
+ \message{<TEXT1> Error. Screen can only be 0 through 64}
+ \global\pb*ps=0
+ \else \global\pb*ps=##1\relax\fi\fi}%
+ #1}} % end of paragraphboxformat
+\let\pbf=\paragraphboxformat
+
+% parameter list for *box:
+% #1 = boxmat size #5 = outer boxrule
+% #2 = boxrule size #6 = screen percent
+% #3 = box shadow size #7 = value to be boxed
+% #4 = outer boxmat
+%
+% Uncoment these 2 lines if using the boxes outside of TEXT1
+% \newbox\A
+% \newdimen\D
+% \newcount\E
+%
+\long\def\*box#1#2#3#4#5#6#7{%
+\ifdim #5>0pt % only if doing a "framed" box
+ \setbox\A=\vbox{\*box{#1}{#2}{#3}{0pt}{0pt}{#6}{#7}}%
+ \*box{#4}{#5}{#3}{0pt}{0pt}{#6}{\box\A}%
+ \else%
+ \setbox\A=\vbox{\hrule height#2 % draw left side
+ \hbox{\vrule width#2\hskip#1 % draw the top
+ \vbox{\vskip#1
+ \hbox{#7}
+ \vskip#1}\hskip#1\vrule width#2} % draw the bottom
+ \hrule height#2} % draw the right side
+ \ifdim #3=0pt \*scr{#6}{\box\A} % print if not a shadow
+ \else \D=\ht\A
+ \advance \D by -#3
+ \vbox{\hbox{\vrule width #3 height \D depth 0pt
+ \*scr{#6}{\copy\A}}
+ \hrule width \wd\A height #3 depth 0pt}
+ \fi
+ \fi}
+
+% #1 = Screen percent
+% #2 = box to be printed
+
+\def\*scr#1#2{\ifnum#1=0 #2
+ \else \setbox\A=\vbox{#2}
+ \D=\ht\A
+ \advance \D by \dp\A
+ \E=#1%
+ \advance \E by 48%
+ \hbox{\vbox{\vbox to \D{\leaders
+ \hbox to \wd\A{\leaders\hbox{\dtscr\char\E}\hfill}
+ \vfill}
+ \vskip -\D
+ \box\A}}
+ \fi
+}
+%
+% End of boxes
+%
+\message{more misc, }
+%
+% page skip
+%
+\def\newpage{\vfil\break}% changed from vfill to vfil 11/4/86 bth
+\let\np=\newpage
+%
+% emptypage
+%
+\def\emptypage{\global\advance\*pcount by1}% produces empty pages
+\let\ep=\emptypage
+%
+\def\*blkpg{ % BLANK PAGE MACRO, produces the empty page
+ \loop % checks the number of empty pages
+ \*badj % check for binding adjust
+ \shipout\vbox{\*setcrops{\vbox{
+ \makeheadline % shipout page with headline
+ \vbox to\*txth{\vfil} % and fooline only
+ \makefootline}}}
+ \global\advance\*pcount by\m@ne % decrement empty page counter
+ \advancepageno % advance the page number
+ \ifnum\*pcount>0 % check for empty pages
+ \repeat}% END, empty page macro
+%
+\message{enumeration macros, }
+%
+% List Level Macros
+%
+\newcount\ll*n % Current list level number
+\newcount\*toklimit
+\newcount\*countlimit
+\newcount\ll*stb % list style start
+\newcount\ll*cs % list*enum*value*start
+\newcount\ll*cmps % list compare start
+\newcount\ll*cmpe
+\newcount\ll*lc % Last level called
+\*toklimit = 188 % Positions 224-253 are used for the 30 table column justification
+ % Positions 199-223 are used for the 25 different list level styles
+ % Tokens below 199 are available for \newtoks use.
+ % Token 190 is the build token
+ % 191-197 is the list level formats, level 1-7
+ % 198 is the bullet format
+%
+\*countlimit = 236 % Counters 244-250 are the styles for the 7 list levels
+ % Counters 237-243 are the enum counters for the 7 list levels
+ % Counters below 237 are available for \newcount use.
+%
+\ll*stb = 244 % Counters 244-250 correspond to the 7 list level styles,
+ % value is index into tokens 199-223
+\ll*cs = 237 % Counters 237-243 correspond to the 7 list level enum values.
+\ll*cmps = 199 % Where to start in the \toks values for the 25 different list level styles
+\ll*cmpe = 223 % Where to stop in the \toks values for the 25 different list level styles
+%
+\count244 = 1 % style "1."
+\count245 = 4 % style "a."
+\count246 = 7 % style "i."
+\count247 = 2 % style "1)"
+\count248 = 5 % style "a)"
+\count249 = 8 % style "i)"
+\count250 = 3 % style "(1)"
+%
+\newskip\ll*sb \ll*sb = 0pt % Default is no \vskip
+\newskip\ll*sa \ll*sa = 0pt % Default is no \vskip
+%
+\toks191={\rm\leftindent{.5in}\gutter{1em}} % level 1 indent is 5 characters initially
+\toks192={\rm\leftindent{.8in}\gutter{1em}} % level 2 indent
+\toks193={\rm\leftindent{1.1in}\gutter{1em}} % level 3 indent
+\toks194={\rm\leftindent{1.4in}\gutter{1em}} % level 4 indent
+\toks195={\rm\leftindent{1.7in}\gutter{1em}} % level 5 indent
+\toks196={\rm\leftindent{2in}\gutter{1em}} % level 6 indent
+\toks197={\rm\leftindent{2.3in}\gutter{1em}} % level 7 indent
+\toks198={\rm\leftindent{+.5in}\gutter{1em}} % bullets
+%
+ % The 25 different List level styles:
+\toks199 = {1.} % Style 1
+\toks200 = {1)} % 2
+\toks201 = {(1)} % 3
+\toks202 = {a.} % 4
+\toks203 = {a)} % 5
+\toks204 = {(a)} % 6
+\toks205 = {i.} % 7
+\toks206 = {i)} % 8
+\toks207 = {(i)} % 9
+\toks208 = {I.} % 10
+\toks209 = {I)} % 11
+\toks210 = {(I)} % 12
+\toks211 = {A.} % 13
+\toks212 = {A)} % 14
+\toks213 = {(A)} % 15
+\toks214 = {1]} % 16
+\toks215 = {[1]} % 17
+\toks216 = {a]} % 18
+\toks217 = {[a]} % 19
+\toks218 = {i]} % 20
+\toks219 = {[i]} % 21
+\toks220 = {I]} % 22
+\toks221 = {[I]} % 23
+\toks222 = {A]} % 24
+\toks223 = {[A]} % 25
+%
+\newif\if*check % True unless done parsing \listformat
+\newif\ifll*lp
+\newif\ifll*rp
+\newif\if*lsqb
+\newif\if*rsqb
+\newif\ifll*per
+\newif\ifll*dig
+\newif\ifl*alpha
+\newif\if*u*alpha
+\newif\if*l*roman
+\newif\if*u*roman
+\newif\ifll*nil
+%
+\ll*niltrue
+%
+\outer\def\newtoks{\alloc@5\toks\toksdef\*toklimit}
+\outer\def\newcount{\alloc@0\count\countdef\*countlimit}
+%
+%
+% Macros for producing enumerated list levels.
+%
+%
+\def\listformat#1{{\begingroup%
+ \def\liststyle##1{\par\N = 1
+ \toks190 = {}
+ \Z##1\end}%
+ \def\Z##1{\ifx ##1\end \Y
+ \let \next = \relax
+ \else \ifnum \N > 7
+ \message{<TEXT1> Error! Too many list levels specified, 7 is max.
+ Statement ignored.}
+ \let \next = \Z
+ \else \ifx ##1, \Y
+ \advance \N by 1
+ \toks190 = {}
+ \let \next = \Z
+ \else \toks190 = \expandafter{\the\toks190 ##1}
+ \let \next = \Z
+ \fi\fi\fi\next}%
+ \def\Y{\*tempiffalse
+ \*checktrue
+ \E = \ll*cmps
+ \loop \ifnum \E > \ll*cmpe
+ \*checkfalse
+ \*tempiftrue
+ \else \edef\T{\the\toks190}%
+ \edef\U{\the\toks\E}%
+ \ifx\T\U
+ \*checkfalse
+ \F = \ll*stb
+ \advance \F by -1
+ \advance \F by \N
+ \count\F = \E
+ \advance \count\F by -\ll*cmps
+ \global\advance \count\F by 1
+ \fi\fi
+ \if*check% Then
+ \advance \E by 1
+ \repeat
+ \if*tempif \message{<TEXT1> Error! \the\toks190 is an invalid list
+ level style. It will be ignored}
+ \fi}%
+ \def\skipbefore##1{\global\ll*sb = ##1\relax}%
+ \def\skipafter##1{\global\ll*sa = ##1\relax}%
+ \def\everylistlevel##1##2{\ifcase ##1
+ \or \global\toks191 = {##2}
+ \or \global\toks192 = {##2}
+ \or \global\toks193 = {##2}
+ \or \global\toks194 = {##2}
+ \or \global\toks195 = {##2}
+ \or \global\toks196 = {##2}
+ \or \global\toks197 = {##2}
+ \fi}%
+ \def\everybullet##1{\global\toks198 = {##1}}%
+ \relax
+ #1
+ \endgroup}}
+%
+\let \lif = \listformat
+%
+\def\listbegin{\vskip\ll*sb\relax
+ \ll*nilfalse
+ \begingroup
+ \global\ll*lc = 0
+ \ll*ini1
+ }
+\let\lib=\listbegin
+%
+\def\listend{\vskip\ll*sa\relax
+ \endgroup
+ \ll*niltrue
+}
+\let\lie=\listend
+%
+\def\listlevel#1{\par
+ \ifll*nil \message{<TEXT1> Warning, listbegin was not
+ specified. The left margin indent will be set to zero.}
+ \else \if*dbl \else \if*tpl
+ % If in multiple columns, don't end the group. Do so otherwise
+ \else \endgroup
+ \begingroup
+ \fi\fi
+ \fi
+ \*tempiftrue % Usually not quite so pessimistic
+ \ifcat 1#1 \ifnum #1 < 8 \*tempiffalse % OK if \listlevel1-\listlevel7
+ \fi\fi
+ \if*tempif \message{<TEXT1> Warning, invalid list level "#1",
+ listlevel1 will be used instead.}
+ \listlevel1
+ \else \E = #1
+ \global\ll*n = \E
+ \advance \E by 1
+ \ll*ini\E
+ \par
+ \ll*fmt
+ \noindent
+ \txt*in{\ll*p{#1}}
+ \fi
+}
+\let \lil = \listlevel
+%
+\def\txt*in#1{\hbox to 0pt{\hss{#1}\hskip\*gut}\ignorespaces}
+%
+\def\ll*fmt{\*gut=1em
+ \ifcase \the\ll*n
+ \or \the\toks191
+ \or \the\toks192
+ \or \the\toks193
+ \or \the\toks194
+ \or \the\toks195
+ \or \the\toks196
+ \or \the\toks197
+ \fi}
+%
+\def\listresume{% rev. 7/6/87
+ \if*start*bul\global\advance\ll*n by 1\global\*start*bulfalse\fi
+ % account for bulleted list ffems
+ \ifnum \ll*n < 2 \lin{0pt}
+ \global\ll*n = 1
+ \else \global\advance \ll*n by -1
+ \ll*fmt
+ \fi
+ \noindent\ignorespaces}
+%
+\let\lir=\listresume
+% Evaluate Style
+\def\e*s{%
+ \global\ll*lpfalse
+ \global\ll*rpfalse
+ \global\*lsqbfalse
+ \global\*rsqbfalse
+ \global\ll*perfalse
+ \global\ll*digfalse
+ \global\l*alphafalse
+ \global\*u*alphafalse
+ \global\*l*romanfalse
+ \global\*u*romanfalse
+ \ifcase \count\F
+ \or \global\ll*digtrue \global\ll*pertrue % Style 1
+ \or \global\ll*digtrue \global\ll*rptrue % 2
+ \or \global\ll*digtrue \global\ll*rptrue \global\ll*lptrue % 3
+ \or \global\l*alphatrue \global\ll*pertrue % 4
+ \or \global\l*alphatrue \global\ll*rptrue % 5
+ \or \global\l*alphatrue \global\ll*rptrue \global\ll*lptrue % 6
+ \or \global\*l*romantrue \global\ll*pertrue % 7
+ \or \global\*l*romantrue \global\ll*rptrue % 8
+ \or \global\*l*romantrue \global\ll*rptrue \global\ll*lptrue % 9
+ \or \global\*u*romantrue \global\ll*pertrue % 10
+ \or \global\*u*romantrue \global\ll*rptrue % 11
+ \or \global\*u*romantrue \global\ll*rptrue \global\ll*lptrue % 12
+ \or \global\*u*alphatrue \global\ll*pertrue % 13
+ \or \global\*u*alphatrue \global\ll*rptrue % 14
+ \or \global\*u*alphatrue \global\ll*rptrue \global\ll*lptrue % 15
+ \or \global\ll*digtrue \global\*rsqbtrue % 16
+ \or \global\ll*digtrue \global\*rsqbtrue \global\*lsqbtrue % 17
+ \or \global\l*alphatrue \global\*rsqbtrue % 18
+ \or \global\l*alphatrue \global\*rsqbtrue \global\*lsqbtrue % 19
+ \or \global\*l*romantrue \global\*rsqbtrue % 20
+ \or \global\*l*romantrue \global\*rsqbtrue \global\*lsqbtrue % 21
+ \or \global\*u*romantrue \global\*rsqbtrue % 22
+ \or \global\*u*romantrue \global\*rsqbtrue \global\*lsqbtrue % 23
+ \or \global\*u*alphatrue \global\*rsqbtrue % 24
+ \or \global\*u*alphatrue \global\*rsqbtrue \global\*lsqbtrue % 25
+ \fi}
+
+%
+\def\ll*ini#1{\*start*bulfalse
+ \ifnum #1 < 7 \N = #1
+ \advance \N by -1
+ \loop \ifnum \N < 7 % Loop max of 7 times
+ \E = \N
+ \advance \E by \ll*cs
+ \global\count\E = 0
+ \advance \N by 1
+ \repeat
+ \fi} % else don't initialize when \lil7
+%
+\def\ll*p#1{%
+ \E = #1
+ \advance \E by \ll*cs
+ \advance \E by -1 % \E is the listlevel value counter
+ \F = \E
+ \advance \F by 7
+ \global\advance \count\E by 1 % Increment the list level counter
+ %
+ % If this level is same as previous level, no need to re-evaluate
+ % the style to be used.
+ %
+ \ifnum \ll*lc = #1
+ \else \e*s
+ \global\ll*lc = #1
+ \fi
+ %
+ % Print the prefix punctuation
+ %
+ \ifll*lp (\unskip % Styles 3, 6, 9, 12, 15
+ \else \if*lsqb [\unskip % Styles 17, 19, 21, 23, 25
+ \fi\fi
+ %
+ % Print the listlevel value, i.e. "1", "a", "A", "I", or "i".
+ %
+ \ifll*dig % Then its a style using digits
+ \number\count\E % Print the number
+ \unskip % To get rid of any following extra spaces
+ \else \ifl*alpha % Then its a style with lower case letters
+ \a*c{\count\E} % Print the lower case letters
+ \unskip % To get rid of any following extra spaces
+ \else \if*u*alpha % Then its a style with upper case letters
+ \a*c{\count\E} % Print uppercase alpha
+ \unskip % To get rid of any following extra spaces
+ \else \if*l*roman % Then its a style with lower case roman numerals
+ \romannumeral\count\E % Print the lower case roman numeral
+ \unskip % To get rid of any following extra spaces
+ \else \if*u*roman % Print upper case roman numeral
+ \uppercase\expandafter{\romannumeral\count\E}
+ \unskip % To get rid of any following extra spaces
+ \else \message{<TEXT1> Error! Something is awry in the listlevel style. Call a consultant.}
+ \fi\fi\fi\fi\fi
+ %
+ % Print the suffix punctuation
+ %
+ \ifll*per .\unskip % Styles 1, 4, 7, 10, 13
+ \else \ifll*rp )\unskip % Styles 2, 3, 5, 6, 8, 9, 11, 12, 14, 15
+ \else \if*rsqb ]\unskip % Styles 16, 17, 18, 19, 20, 21, 22, 23, 24, 25
+ \fi\fi\fi
+}
+ %
+ % This macro will convert an integer into a letter. In Appendix F of the
+ % TeXbook you will see that octal character '141 is the small letter "a".
+ % Octal 141=Decimal 97, Therefore, add 96 to value of listlevel counter.
+ % For example, 1="a", 2="b", etc. The macro will also change 27="aa", 28="ab", etc.
+ %
+\def\a*c#1{%
+ \ifnum #1 < 27 \G = #1% % Then its a single letter a-z
+ \advance \G by 96% % See the font table in App. F
+ \ifl*alpha% % Then its a lower case style
+ \char\G% % Print the character a-z
+ \else \advance \G by -32%
+ \char\G% % Print the character A-Z
+ \fi%
+ \else \G = #1% % else its "AA" or greater
+ \divide \G by 26% % This holds the first character
+ \Q = #1% % Get ready to compute second letter
+ \R = #1%
+ \divide \R by 26%
+ \multiply \R by 26%
+ \ifnum #1 = \R%
+ \advance \G by -1%
+ \Q = 26%
+ \else \advance \Q by -\R%
+ \fi%
+ \a*c{\G}% % Get the first character a-z
+ \unskip%
+ \a*c{\Q}% % Get the second letter
+ \fi} % End of \a*c
+%
+% for setting the list level number other than sequential
+%
+\def\slln#1#2{{\E=#1
+ \advance \E by -1
+ \advance \E by \ll*cs
+ \global\count\E = #2}}
+\let\setlistlevelnumber=\slln
+%
+% Bullets
+%
+\newif\if*start*bul
+\newdimen\*bul*dim
+\mathchardef\*bullet="220F
+\def\bullet{% bullet defined for both math and text modes, rev. 6/25/87
+ \ifmmode \*bullet % math mode bullet
+ \else % text or list bullet
+ \ifll*nil % no list in progress, text bullet
+ \leftskip = 0pt
+ {\if*msp{*}\else\sy\char"0F\fi}
+ \else % list in progress, list bullet
+ \the\toks198
+ \if*start*bul \lin{\*bul*dim}
+ \else \*bul*dim = \leftskip
+ \*start*bultrue \fi % end starting bullet
+ \par\noindent
+ \txt*in{{\if*msp{*}\else\sy\char"0F\fi}}
+ \fi % end list in progress check
+ \fi % end math mode bullet check
+}% end bullet
+\let \bul=\bullet
+%
+%
+% The \gutter macro is actually used for several macros, \bul, \lil, etc.
+%
+\newdimen\*gut
+\def\gutter#1{\*gut=#1}
+\message{end of enumeration macros, }
+\message{TOC, }
+%
+% Macros for doing Table of Contents, Heads, Subheads, Tables, and Figures
+%
+\newtoks\*TCt \*TCt={\cl{\twelvept\bd Table of Contents}\vs{1\bl}}
+\newtoks\*ptf \*ptf={\vs{1\bl}\cl{Part \partnumber}\cl{\parttitle}%
+ \vs{1\bl}\nin Part \partnumber \leader \pagenumber}
+\newtoks\*ctf \*ctf={\hangingchapternumber \chaptertitle \leader \pagenumber}
+\newtoks\*atf \*atf={\hangingappendixnumber \appendixtitle \leader \pagenumber}
+\newtoks\*prtf \*prtf={\nin \prefacetitle \leader \pagenumber}
+\newtoks\*satf \*satf={\leftindent{.5in}\nin \subheadatitle \leader \pagenumber}
+\newtoks\*sbtf \*sbtf={\leftindent{1in}\nin \subheadbtitle \leader \pagenumber}
+\newtoks\*sctf \*sctf={\leftindent{1.5in}\nin \subheadctitle \leader \pagenumber}
+\newtoks\*sdtf \*sdtf={\leftindent{2in}\nin \subheaddtitle \leader \pagenumber}
+\newtoks\*btf \*btf={\nin\bibtitle \leader \pagenumber}
+\newtoks\*ftf \*ftf={\hangingnumber{\figurenumber.} \figuretitle \leader \pagenumber}
+\newtoks\*ftt \*ftt={\newpage\cl{\twelvept\bd List of Figures}\line{Figure\hfill Page}}
+\newtoks\*ttf \*ttf={\hangingnumber{\tablenumber.} \tabletitle\leader \pagenumber}
+\newtoks\*ttt \*ttt={\newpage\cl{\twelvept\bd List of Tables}\line{Table\hfill Page}}
+\newtoks\*figt \*figt={\bqb\tenpt\bd\hp Figure \figurenumber. \rm\figuretitle \bqe}
+\newtoks\*tabt \*tabt={\vs{\bl}\cl{\twelvept\bd Table \tablenumber}%
+ \cl{\twelvept\tabletitle}\vs{\bl}}
+\newtoks\*partt \*partt={\dumpinsertseject\titlepage
+ \hrule height 0pt depth 0pt\vfil
+ \cl{\twelvept\bd Part \partnumber}
+ \cl{\twelvept\bd\parttitle}
+ \vs{.5\tp*sk}
+ \np
+ \scn{0}\ssan{0}\ssbn{0}\sscn{0}\ssdn{0}
+ \sfn{0}\stn{0}\sfnn{0}\senn{0}
+ }%
+\newtoks\*chapt \*chapt={\dumpinsertseject
+ \cl{\twelvept\bd Chapter \chapternumber}%
+ \cl{\twelvept\bd\chaptertitle}
+ \vs{1\bl}
+ \ssan{0}\ssbn{0}\sscn{0}\ssdn{0}
+ }
+\newtoks\*appt \*appt={\dumpinsertseject %
+ \cl{\twelvept\bd Appendix \appendixnumber}
+ \cl{\twelvept\bd\appendixtitle}
+ \vs{1\bl}
+ \scn{0}\ssan{0}\ssbn{0}\sscn{0}
+ \ssdn{0}\sfn{0}\stn{0}
+ }
+\newtoks\*pret \*pret={\dumpinsertseject %
+ \cl{\twelvept\bd\prefacetitle}
+ \vs{1\bl}
+ \ssan{0}\ssbn{0}\sscn{0}\ssdn{0}
+ }%
+\newtoks\*subat \*subat={\removelastskip\goodbreak
+ \vs{2\bl}
+ \nin\twelvept\bd\subheadatitle\par\nobreak
+ \vs{1\bl}\nobreak
+ \ssbn{0}\sscn{0}\ssdn{0}
+ }
+\newtoks\*subbt \*subbt={\removelastskip\goodbreak
+ \vs{2\bl}
+ \nin\twelvept\it\subheadbtitle\par\nobreak
+ \vs{1\bl}\nobreak
+ \sscn{0}\ssdn{0}
+ }
+\newtoks\*subct \*subct={\removelastskip\goodbreak
+ \vs{2\bl}
+ \nin\twelvept\subheadctitle\par\nobreak
+ \vs{1\bl}\nobreak
+ \ssdn{0}
+ }
+\newtoks\*subdt \*subdt={\goodbreak\twelvept\it\subheaddtitle.}
+%
+\newif\if*cont*chap \*cont*chapfalse
+\newif\if*TC*fig \*TC*figtrue
+\newif\if*TC*tab \*TC*tabtrue
+\newif\if*TC*prt \*TC*prttrue
+\newif\if*TC*chp \*TC*chptrue
+\newif\if*TC*app \*TC*apptrue
+\newif\if*TC*pre \*TC*pretrue
+\newif\if*TC*sha \*TC*shatrue
+\newif\if*TC*shb \*TC*shbtrue
+\newif\if*TC*shc \*TC*shcfalse
+\newif\if*TC*shd \*TC*shdfalse
+\newif\if*TCaopen \*TCaopenfalse
+\newif\if*TCbopen \*TCbopenfalse
+\newif\if*TCcopen \*TCcopenfalse
+%
+\newdimen\*ch*hi \*ch*hi=.25in
+\newdimen\*ap*hi \*ap*hi=.25in
+\newdimen\fi*hi \fi*hi=.25in
+\newdimen\ta*hi \ta*hi=.25in
+%
+\newcount\fi*n \fi*n=0
+\newcount\ta*n \ta*n=0
+\newcount\*pt*num \*pt*num=0
+\newcount\*pt*st \*pt*st=1
+\newcount\*ch*num \*ch*num=0
+\newcount\*ch*st \*ch*st=1
+\newcount\*ap*num \*ap*num=0
+\newcount\*ap*st \*ap*st=2
+\newcount\*sa*num \*sa*num=0
+\newcount\sa*st \sa*st=1
+\newcount\*sb*num \*sb*num=0
+\newcount\sb*st \sb*st=1
+\newcount\*sc*num \*sc*num=0
+\newcount\sc*st \sc*st=1
+\newcount\*sd*num \*sd*num=0
+\newcount\sd*st \sd*st=1
+%
+\newwrite\TC*fa
+\newwrite\TC*fb
+\newwrite\TC*fc
+% putincontents last modified 12/6/91
+\def\notintoc#1{#1}
+\newtoks\*toclbla
+\newtoks\*toclblb
+\newtoks\*toclblc
+\if*PC
+ \*toclbla={text1xx.tc1}
+ \*toclblb={text1xx.tc2}
+ \*toclblc={text1xx.tc3}
+\else
+ \*toclbla={text1xx.toc1}
+ \*toclblb={text1xx.toc2}
+ \*toclblc={text1xx.toc3}
+\fi
+
+\long\def\putincontents#1#2{\begingroup\ifcase #1 % Putincontents markup
+ \message{<TEXT1> Warning, request for Contents entry other than
+ 1, 2, or 3. Contents 1 will be assumed.}
+ \putincontents1{#2}
+ \or \if*TCaopen % Do nothing if open, else open it
+ \else \immediate\openout\TC*fa=\the\*toclbla
+ \immediate\write\TC*fa{\the\*TCt}%
+ \global\*TCaopentrue
+ \fi
+ \*defnoexpands
+ \edef\T{\leftskip=0pt #2}%
+ \edef\next{\write\TC*fa{\T\par}}%
+ \next\relax
+ \or \if*TCbopen % Do nothing if open, else open it
+ \else \immediate\openout\TC*fb=\the\*toclblb
+ \immediate\write\TC*fb{\the\*ftt}%
+ \global\*TCbopentrue\fi
+ \*defnoexpands
+ \edef\T{#2}%
+ \edef\next{\write\TC*fb{\T\par}}%
+ \next\relax
+ \or \if*TCcopen % Do nothing if open, else open it
+ \else \immediate\openout\TC*fc=\the\*toclblc
+ \immediate\write\TC*fc{\the\*ttt}%
+ \global\*TCcopentrue\fi
+ \*defnoexpands
+ \edef\T{#2}%
+ \edef\next{\write\TC*fc{\T\par}}%
+ \next\relax
+ \else \message{<TEXT1> Warning, request for Contents entry other than
+ 1, 2, or 3. Contents 1 will be assumed.}
+ \putincontents1{#2}
+ \fi\endgroup}% End putincontents markup
+\let\pic=\putincontents
+
+\def\*defnoexpands{%
+ \def\AA{\noexpand\noexpand\noexpand\noexpand\noexpand%
+ \noexpand\noexpand\AA}%
+ \def\aa{\noexpand\noexpand\noexpand\noexpand\noexpand%
+ \noexpand\noexpand\aa}%
+ \def\appendixnumber{\noexpand\noexpand\noexpand\san{\the\*ap*num}%
+ \noexpand\noexpand\noexpand\appendixnumber}%
+ \def\autoendnote##1{}%
+ \let\aen=\autoendnote%
+ \def\autofootnote##1{}%
+ \let\afn=\autofootnote%
+ \def\bullet{\noexpand\noexpand\noexpand\bullet}%
+ \let\bul=\bullet%
+ \def\centerline##1{\noexpand\noexpand\noexpand\noexpand\noexpand%
+ \noexpand\noexpand\centerline{##1}}%
+ \let\cl=\centerline%
+ \def\chapternumber{\noexpand\noexpand\noexpand\scn{\the\*ch*num}%
+ \noexpand\noexpand\noexpand\chapternumber}%
+ \def\dag{\noexpand\noexpand\noexpand\noexpand\noexpand%
+ \noexpand\noexpand\dag}%
+ \def\ddag{\noexpand\noexpand\noexpand\noexpand\noexpand%
+ \noexpand\noexpand\ddag}%
+ \def\eightteenpt{\noexpand\noexpand\noexpand\eightteenpt}%
+ \def\fourteenpt{\noexpand\noexpand\noexpand\fourteenpt}%
+ \def\hangingappendixnumber{\noexpand\noexpand\noexpand%
+ \hangingappendixnumber{\the\*ap*num}}%
+ \def\hangingchapternumber{\noexpand\noexpand\noexpand%
+ \hangingchapternumber{\the\*ch*num}}%
+ \def\hangingindent##1{\noexpand\noexpand\noexpand%
+ \hangingindent{##1}}%
+ \let\hin=\hangingparagraph%
+ \def\hangingnumber##1{\noexpand\noexpand\noexpand\HFN{##1}}%
+ \def\hangingparagraph{\noexpand\noexpand\noexpand\hangingparagraph}%
+ \let\hp=\hangingparagraph%
+ \def\justify{\noexpand\noexpand\noexpand\noexpand\noexpand\justify}%
+ \let\ju=\justify%
+ \def\leavevmode{\noexpand\noexpand\noexpand\leavevmode}%
+ \def\leftindent##1{\leftskip=##1}%
+ \let\lin=\leftindent%
+ \let\linebreak=\space%
+ \let\lbr=\space%
+ \def\neg{\noexpand\noexpand\noexpand\noexpand\noexpand\neg}%
+ \def\notintoc##1{}%
+ \def\pagenumber{\noexpand\pagenumber}%
+ \def\pn{\noexpand\pagenumber}%
+ \def\par{\endgraf}%
+ \def\paragraph{\endgraf}%
+ \def\partnumber{\noexpand\noexpand\noexpand\sptn{\the\*pt*num}%
+ \noexpand\noexpand\noexpand\partnumber}%
+ \def\subheadanumber{\noexpand\noexpand\noexpand\ssan{\the\*sa*num}%
+ \noexpand\noexpand\noexpand\subheadanumber}%
+ \def\subheadbnumber{\noexpand\noexpand\noexpand\ssbn{\the\*sb*num}%
+ \noexpand\noexpand\noexpand\subheadbnumber}%
+ \def\subheadcnumber{\noexpand\noexpand\noexpand\sscn{\the\*sc*num}%
+ \noexpand\noexpand\noexpand\subheadcnumber}%
+ \def\subheaddnumber{\noexpand\noexpand\noexpand\ssdn{\the\*sd*num}%
+ \noexpand\noexpand\noexpand\subheaddnumber}%
+ \def\tenpt{\noexpand\noexpand\noexpand\tenpt}%
+ \def\tilde{\noexpand\noexpand\noexpand\noexpand\noexpand\tilde}%
+ \def\toclinebreak{\noexpand\noexpand\noexpand\toclinebreak}%
+ \def\toclbr{\noexpand\noexpand\noexpand\toclinebreak}%
+ \def\twelvept{\noexpand\noexpand\noexpand\twelvept}%
+ \def\underscore##1{\noexpand\noexpand\noexpand\noexpand\noexpand%
+ \noexpand\noexpand\underscore{##1}}%
+ \let\us=\underscore%
+ \def\\{\noexpand\noexpand\noexpand\noexpand\noexpand%
+ \noexpand\noexpand\\}%
+ \def\{{\noexpand\noexpand\noexpand\noexpand\noexpand%
+ \noexpand\noexpand\{}%
+ \def\}{\noexpand\noexpand\noexpand\noexpand\noexpand%
+ \noexpand\noexpand\}}%
+ \def\_{\noexpand\noexpand\noexpand\noexpand\noexpand%
+ \noexpand\noexpand\_}%
+}
+%
+\def\tableofcontentsformat#1{{%
+ \def\continuechapter##1{\global\*cont*chapfalse
+ \edef\T{##1}%
+ \edef\U{yes}%
+ \edef\V{no}%
+ \ifx \T\U \global\*cont*chaptrue
+ \else \ifx \T\V % Not continue chapter
+ \else \message{<TEXT1> Warning, argument to
+ continuechapter is not "yes" or "no".
+ "no" will be assumed}
+ \fi\fi}%
+ \def\toctitle##1{\global\*TCt={##1}}%
+ \def\parttocformat##1{\global\*ptf={##1}}%
+ \def\chaptertocformat##1{\global\*ctf={##1}}%
+ \def\hangingchapterindent##1{\global\*ch*hi=##1}%
+ \def\appendixtocformat##1{\global\*atf={##1}}%
+ \def\hangingappendixindent##1{\global\*ap*hi=##1}%
+ \def\prefacetocformat##1{\global\*prtf={##1}}%
+ \def\subheadatocformat##1{\global\*satf={##1}}%
+ \def\subheadbtocformat##1{\global\*sbtf={##1}}%
+ \def\subheadctocformat##1{\global\*sctf={##1}}%
+ \def\subheaddtocformat##1{\global\*sdtf={##1}}%
+ \def\bibliographytocformat##1{\global\*btf={##1}}%
+ \def\figuretoctitle##1{\global\*ftt={##1}}%
+ \def\figuretocformat##1{\global\*ftf={##1}}%
+ \def\hangingfigureindent##1{\global\fi*hi=##1}%
+ \def\tabletoctitle##1{\global\*ttt={##1}}%
+ \def\tabletocformat##1{\global\*ttf={##1}}%
+ \def\hangingtableindent##1{\global\ta*hi=##1}%
+ #1}}
+\let\tocf=\tableofcontentsformat
+% tableofcontents last modified on 12/6/91
+\def\tableofcontents#1{%
+ \edef\T{}\edef\U{#1}\ifx\T\U\E=-3\else\E=#1\fi
+ \dumpinsertseject
+ \setpagenumber{\E}
+ \immediate\closeout\TC*fa
+ \begingroup
+ \def\noexpand{}
+ \def\centerline##1{\par % Begin centerline markup
+ \bgroup
+ \parindent=0pt \relax % zero indent
+ \parfillskip=0pt plus1fil \relax
+ \everypar{\null\hskip0pt plus1fil\relax} % add infinite glue
+ \def\linebreak{\hskip0pt plus1fil\relax\break
+ \null\hskip0pt plus1fil\relax}%
+ \let\toclinebreak=\linebreak % linebreak is a space in text1xx.
+ \let\toclbr=\linebreak % toc1, toclbr available in toc
+ \justify
+ \setbox\A=\vbox{##1\par % figure skip for multiple centerline
+ \global\C=\baselineskip
+ \setbox0=\hbox{(}
+ \global\advance\C by-\ht0}% end vbox
+ \line{\hss\vbox{\vskip\C##1\par}\hss} %
+ \egroup
+ }% End centerline markup
+ \let\cl=\centerline
+ \justify
+ \parfillskip=0pt
+ \rightskip=0pt plus 5em
+ \input \the\*toclbla
+ \endgraf
+ \leftskip=0pt
+ \if*TCbopen % True only if figures were used.
+ \immediate\closeout\TC*fb
+ \input \the\*toclblb
+ \fi
+ \if*TCcopen % True only if tables were used.
+ \immediate\closeout\TC*fc
+ \input \the\*toclblc
+ \fi
+ \endgroup}
+\let\toc=\tableofcontents
+%
+\message{part, }
+%
+\long\def\partformat#1{{%
+ \def\numberingstyle##1{\global\*pt*st=1
+ \edef\T{##1}%
+ \edef\U{1}%
+ \edef\V{A}%
+ \edef\W{I}%
+ \ifx \T\U % then style=1, the default
+ \else \ifx \T\V \global\*pt*st=2
+ \else \ifx \T\W \global\*pt*st=3
+ \else \message{<TEXT1> Warning, numbering style
+ in the partformat command is
+ invalid. Style 1 will be assumed.}
+ \fi\fi\fi}%
+ \long\def\titleformat##1{\global\*partt={##1}}%
+ \def\incontents##1{\global\*TC*prttrue
+ \edef\T{##1}%
+ \edef\U{yes}%
+ \edef\V{no}%
+ \ifx \T\U % Already true
+ \else \ifx \T\V \global\*TC*prtfalse
+ \else \message{<TEXT1> Warning, argument to
+ incontents in partformat is not "yes" or "no".
+ "yes" will be assumed.}
+ \fi\fi}%
+ #1}}
+\let\paf=\partformat
+%
+\def\parttitle{}
+\def\part#1{\par % Part revised 11/5/86
+ \global\def\parttitle{#1}%
+ \global\advance \*pt*num by 1
+ \bgroup
+ \let\toclinebreak=\space % prevent linebreak in title
+ \let\toclbr=\space % break in contents only
+ \the\*partt % This prints the title in the text
+ \egroup
+ \par
+ \D=\lastskip
+ \removelastskip
+ \if*TC*prt \putincontents1{\the\*ptf}\fi
+ \ignorespaces
+ \vs{\D}
+}% END
+%
+\def\partnumber{{\ifcase \*pt*st
+ \or \the\*pt*num
+ \or \l*alphafalse
+ \a*c{\*pt*num}
+ \or \uppercase\expandafter{\romannumeral\the\*pt*num}
+ \fi}}
+%
+\def\setpartnumber#1{\global\*pt*num=#1}%
+% \spn is setpagenumber
+\let\sptn=\setpartnumber
+%
+\message{chapter, }
+%
+\long\def\chapterformat#1{{%
+ \def\numberingstyle##1{\global\*ch*st=1
+ \edef\T{##1}%
+ \edef\U{1}%
+ \edef\V{A}%
+ \edef\W{I}%
+ \ifx \T\U % then style=1, the default
+ \else \ifx \T\V \global\*ch*st=2
+ \else \ifx \T\W \global\*ch*st=3
+ \else \message{<TEXT1> Warning, numbering style
+ in the chapterformat command is
+ invalid. Style 1 will be assumed.}
+ \fi\fi\fi}%
+ \long\def\titleformat##1{\global\*chapt={##1}}%
+ \def\incontents##1{\global\*TC*chptrue%
+ \edef\T{##1}%
+ \edef\U{yes}%
+ \edef\V{no}%
+ \ifx \T\U % Already true
+ \else \ifx \T\V \global\*TC*chpfalse
+ \else \message{<TEXT1> Warning, argument to
+ incontents in chapterformat is not "yes" or "no".
+ "yes" will be assumed.}
+ \fi\fi}%
+ #1}}
+\let\chf=\chapterformat
+%
+\def\chaptertitle{}
+\def\chapter#1{\par
+ \global\def\chaptertitle{#1}%
+ \global\advance \*ch*num by 1
+ \bgroup
+ \let\toclinebreak=\space
+ \let\toclbr=\space
+ \the\*chapt % prints the title in the text
+ \egroup
+ \D=\lastskip
+ \removelastskip
+ \if*TC*chp \putincontents1{\the\*ctf}\fi
+ \ignorespaces
+ \vs{\D}
+}% END chapter markup definition
+%
+\def\chapternumber{{\ifcase \*ch*st
+ \or \the\*ch*num
+ \or \l*alphafalse
+ \a*c{\*ch*num}
+ \or \uppercase\expandafter{\romannumeral\the\*ch*num}
+ \fi
+ \removelastskip}}
+\let\chap=\chapter
+%
+\def\hangingchapternumber#1{\*ch*num=#1\laf{\labelwidth{\*ch*hi}}
+ \label{\hskip\*ch*hi\llap{\chapternumber.}}}
+%
+\def\setchapternumber#1{\global\*ch*num=#1}%
+\let\scn=\setchapternumber
+%
+\message{appendix,}
+%
+\long\def\appendixformat#1{{%
+ \def\numberingstyle##1{\global\*ap*st=2
+ \edef\T{##1}%
+ \edef\U{1}%
+ \edef\V{A}%
+ \edef\W{I}%
+ \ifx \T\U \global\*ap*st=1
+ \else \ifx \T\V \global\*ap*st=2
+ \else \ifx \T\W \global\*ap*st=3
+ \else \message{<TEXT1> Warning, numbering style
+ in the appendixformat command is
+ invalid. Style 2 will be assumed.}
+ \fi\fi\fi}%
+ \long\def\titleformat##1{\global\*appt={##1}}%
+ \def\incontents##1{\global\*TC*apptrue
+ \edef\T{##1}%
+ \edef\U{yes}%
+ \edef\V{no}%
+ \ifx \T\U % Already true
+ \else \ifx \T\V \global\*TC*appfalse
+ \else \message{<TEXT1> Warning, argument to
+ incontents in appendixformat is not "yes" or "no".
+ "yes" will be assumed.}
+ \fi\fi}%
+ #1}}
+\let\apf=\appendixformat
+%
+\def\appendixtitle{}
+\def\appendix#1{% Appendix revised 11/3/86 (added toclinebreak)
+ \global\def\appendixtitle{#1}%
+ \global\advance \*ap*num by 1
+ \par
+ \bgroup
+ \let\toclinebreak=\space
+ \let\toclbr=\space
+ \the\*appt % prints the appendix title
+ \egroup
+ \D=\lastskip
+ \removelastskip
+ \if*TC*app \putincontents1{\the\*atf}\fi
+ \ignorespaces
+ \vs{\D}
+}% END appendix markup definition
+%
+\def\appendixnumber{{\ifcase \*ap*st
+ \or \the\*ap*num
+ \or \l*alphafalse
+ \a*c{\*ap*num}
+ \or \uppercase\expandafter{\romannumeral\the\*ap*num}
+ \fi
+ \removelastskip}}
+\let\app=\appendix
+%
+\def\hangingappendixnumber#1{\*ap*num=#1\laf{\labelwidth{\*ap*hi}}
+ \label{\hskip\*ap*hi\llap{\appendixnumber.}}}
+%
+\def\setappendixnumber#1{\global\*ap*num=#1}%
+\let\san=\setappendixnumber
+%
+\message{preface,}
+%
+\long\def\prefaceformat#1{{%
+ \long\def\titleformat##1{\global\*pret={##1}}%
+ \def\incontents##1{\global\*TC*pretrue
+ \edef\T{##1}%
+ \edef\U{yes}%
+ \edef\V{no}%
+ \ifx \T\U % Already true
+ \else \ifx \T\V \global\*TC*prefalse
+ \else \message{<TEXT1> Warning, argument to
+ incontents in prefaceformat is not "yes" or "no".
+ "yes" will be assumed.}
+ \fi\fi}%
+ #1}}
+\let\prf=\prefaceformat
+%
+\def\prefacetitle{}
+\def\preface#1{% Preface revised 11/3/86 (added toclinebreak)
+ \global\def\prefacetitle{#1}%
+ \par
+ \bgroup
+ \let\toclinebreak=\space
+ \let\toclbr=\space
+ \the\*pret % prints the title in the text
+ \egroup
+ \D=\lastskip
+ \removelastskip
+ \if*TC*pre \putincontents1{\the\*prtf}\fi
+ \ignorespaces
+ \vs{\D}
+}% END preface markup definition
+\let\pre=\preface
+%
+\message{subheads,}
+%
+\long\def\subheadaformat#1{{%
+ \def\numberingstyle##1{\global\sa*st=1
+ \edef\T{##1}%
+ \edef\U{1}%
+ \edef\V{A}%
+ \edef\W{I}%
+ \ifx \T\U % then style=1, the default
+ \else \ifx \T\V \global\sa*st=2
+ \else \ifx \T\W \global\sa*st=3
+ \else \message{<TEXT1> Warning, numbering style
+ in the subheadaformat command is
+ invalid. Style 1 will be assumed.}
+ \fi\fi\fi}%
+ \long\def\titleformat##1{\global\*subat={##1}}%
+ \def\incontents##1{\global\*TC*shatrue
+ \edef\T{##1}%
+ \edef\U{yes}%
+ \edef\V{no}%
+ \ifx \T\U % Already true
+ \else \ifx \T\V \global\*TC*shafalse
+ \else \message{<TEXT1> Warning, argument to
+ incontents in subheadaformat is not "yes" or "no".
+ "yes" will be assumed.}
+ \fi\fi}%
+ #1}}
+\let\shaf=\subheadaformat
+%
+\def\subheadatitle{}
+\def\subheada#1{%
+ \global\def\subheadatitle{#1}%
+ \global\advance \*sa*num by 1
+ \par
+ \bgroup
+ \let\toclinebreak=\space
+ \let\toclbr=\space
+ \the\*subat % prints the title in the text
+ \egroup
+ \ifvmode \D=\lastskip \removelastskip
+ \else \D=0pt\fi
+ \if*TC*sha \putincontents1{\the\*satf}\fi
+ \ifdim\D>0pt\vs{\D}\else\ignorespaces\fi%
+}% END subheada markup definition
+%
+\def\subheadanumber{{\ifcase \sa*st
+ \or \the\*sa*num
+ \or \l*alphafalse
+ \a*c{\*sa*num}
+ \or \uppercase\expandafter{\romannumeral\the\*sa*num}
+ \fi
+ \removelastskip}}
+\let\sha=\subheada
+%
+\def\setsubheadanumber#1{\global\*sa*num=#1}%
+\let\ssan=\setsubheadanumber
+%
+\long\def\subheadbformat#1{{%
+ \def\numberingstyle##1{\global\sb*st=1
+ \edef\T{##1}%
+ \edef\U{1}%
+ \edef\V{A}%
+ \edef\W{I}%
+ \ifx \T\U % then style=1, the default
+ \else \ifx \T\V \global\sb*st=2
+ \else \ifx \T\W \global\sb*st=3
+ \else \message{<TEXT1> Warning, numbering style
+ in the subheadbformat command is
+ invalid. Style 1 will be assumed.}
+ \fi\fi\fi}%
+ \long\def\titleformat##1{\global\*subbt={##1}}%
+ \def\incontents##1{\global\*TC*shbtrue
+ \edef\T{##1}%
+ \edef\U{yes}%
+ \edef\V{no}%
+ \ifx \T\U % Already true
+ \else \ifx \T\V \global\*TC*shbfalse
+ \else \message{<TEXT1> Warning, argument to
+ incontents in subheadbformat is not "yes" or "no".
+ "yes" will be assumed.}
+ \fi\fi}%
+ #1}}
+\let\shbf=\subheadbformat
+%
+\def\subheadbtitle{}
+\def\subheadb#1{%
+ \global\def\subheadbtitle{#1}%
+ \global\advance \*sb*num by 1
+ \par
+ \bgroup
+ \let\toclinebreak=\space
+ \let\toclbr=\space
+ \the\*subbt % This prints the title in the text
+ \egroup
+ \ifvmode \D=\lastskip \removelastskip
+ \else \D=0pt\fi
+ \if*TC*shb \putincontents1{\the\*sbtf}\fi
+ \ignorespaces
+ \ifdim\D>0pt\vs{\D}\else\ignorespaces\fi
+}% END subheadb markup definition
+%
+\def\subheadbnumber{{\ifcase \sb*st
+ \or \the\*sb*num
+ \or \l*alphafalse
+ \a*c{\*sb*num}
+ \or \uppercase\expandafter{\romannumeral\the\*sb*num}
+ \fi
+ \removelastskip}}
+\let\shb=\subheadb
+%
+\def\setsubheadbnumber#1{\global\*sb*num=#1}%
+\let\ssbn=\setsubheadbnumber
+%
+\long\def\subheadcformat#1{{%
+ \def\numberingstyle##1{\global\sc*st=1
+ \edef\T{##1}%
+ \edef\U{1}%
+ \edef\V{A}%
+ \edef\W{I}%
+ \ifx \T\U % then style=1, the default
+ \else \ifx \T\V \global\sc*st=2
+ \else \ifx \T\W \global\sc*st=3
+ \else \message{<TEXT1> Warning, numbering style
+ in the subheadcformat command is
+ invalid. Style 1 will be assumed.}
+ \fi\fi\fi}%
+ \long\def\titleformat##1{\global\*subct={##1}}
+ \def\incontents##1{\global\*TC*shcfalse
+ \edef\T{##1}%
+ \edef\U{yes}%
+ \edef\V{no}%
+ \ifx \T\U \global\*TC*shctrue
+ \else \ifx \T\V \global\*TC*shcfalse
+ \else \message{<TEXT1> Warning, argument to
+ incontents in subheadcformat is not "yes" or "no".
+ "no" will be assumed.}
+ \fi\fi}%
+ #1}}
+\let\shcf=\subheadcformat
+%
+\def\subheadctitle{}
+\def\subheadc#1{%
+ \global\def\subheadctitle{#1}%
+ \global\advance \*sc*num by 1
+ \par
+ \bgroup
+ \let\toclinebreak=\space
+ \let\toclbr=\space
+ \the\*subct % prints the title in the text
+ \egroup
+ \ifvmode \D=\lastskip \removelastskip
+ \else \D=0pt\fi
+ \if*TC*shc \putincontents1{\the\*sctf}\fi
+ \ignorespaces
+ \ifdim\D>0pt\vs{\D}\else\ignorespaces\fi
+}% END subheadc markup
+%
+\def\subheadcnumber{{\ifcase \sc*st
+ \or \the\*sc*num
+ \or \l*alphafalse
+ \a*c{\*sc*num}
+ \or \uppercase\expandafter{\romannumeral\the\*sc*num}
+ \fi
+ \removelastskip}}
+\let\shc=\subheadc
+%
+\def\setsubheadcnumber#1{\global\*sc*num=#1}%
+\let\sscn=\setsubheadcnumber
+%
+\long\def\subheaddformat#1{{%
+ \def\numberingstyle##1{\global\sd*st=1
+ \edef\T{##1}%
+ \edef\U{1}%
+ \edef\V{A}%
+ \edef\W{I}%
+ \ifx \T\U % then style=1, the default
+ \else \ifx \T\V \global\sd*st=2
+ \else \ifx \T\W \global\sd*st=3
+ \else \message{<TEXT1> Warning, numbering style
+ in the subheaddformat command is
+ invalid. Style 1 will be assumed.}
+ \fi\fi\fi}%
+ \long\def\titleformat##1{\global\*subdt={##1}}%
+ \def\incontents##1{\global\*TC*shdfalse
+ \edef\T{##1}%
+ \edef\U{yes}%
+ \edef\V{no}%
+ \ifx \T\U \global\*TC*shdtrue
+ \else \ifx \T\V \global\*TC*shdfalse
+ \else \message{<TEXT1> Warning, argument to
+ incontents in subheaddformat is not "yes" or "no".
+ "no" will be assumed.}
+ \fi\fi}%
+ #1}}
+\let\shdf=\subheaddformat
+%
+\def\subheaddtitle{}
+\def\subheadd#1{%
+ \global\def\subheaddtitle{#1}%
+ \global\advance \*sd*num by 1
+ \par
+ \bgroup
+ \let\toclinebreak=\space
+ \let\toclbr=\space
+ \the\*subdt % This prints the title in the text
+ \egroup
+ \ifvmode \D=\lastskip \removelastskip
+ \else \D=0pt\fi
+ \if*TC*shd \putincontents1{\the\*sdtf}\fi
+ \ignorespaces
+ \ifdim\D>0pt\vs{\D}\else\ignorespaces\fi
+}% END subheadd markup definition
+%
+\def\subheaddnumber{{\ifcase \sd*st
+ \or \the\*sd*num
+ \or \l*alphafalse
+ \a*c{\*sd*num}
+ \or \uppercase\expandafter{\romannumeral\the\*sd*num}
+ \fi
+ \removelastskip}}
+\let\shd=\subheadd
+%
+\def\setsubheaddnumber#1{\global\*sd*num=#1}%
+\let\ssdn=\setsubheaddnumber
+%
+\message{figures,}
+%
+% FIGURE MARKUP, bth 8/25/86
+% Figure altered to allow alignments and other text markups within the
+% arguments of figure and allow the immediate print feature (nofloat).
+% Footnoting and multiple columns allowed in nofloat format only.
+% Floating figures use top insert which uses a vbox that cancels any
+% footnoting or multiple column setting. When \fullpage or \halfpage
+% are used they must be the only argument in position one.
+%
+%
+% Figureformat revised on 4/5/88, drg
+%
+\catcode`* = 11
+\catcode`@ = 11
+\newif\if*fp \*fpfalse % fullpage, used in figure
+\newif\if*hp \*hpfalse % halfpage, " "
+\newcount\fi*pos \fi*pos=1 % 1=\float,2=\nofloat,3=\midfloat,4=\keep
+\newtoks\fi*sb \fi*sb={1\bl}
+\newtoks\fi*sa \fi*sa={1\bl}
+\def\figureformat#1{{%
+ \def\skipbefore##1{\global\fi*sb={##1}}%
+ \def\position{% printing position of figure, floating or nonfloating
+ \def\nofloat{\global\fi*pos=2} % prints immediate
+ \def\keep{\global\fi*pos=4} % prints immediate, but on same pg
+ \def\midfloat{\global\fi*pos=3}% uses midinsert
+ \def\float{\global\fi*pos=1}} % uses topinsert, the default
+ \long\def\titleformat##1{\global\*figt={##1}}%
+ \def\incontents##1{\global\*TC*figtrue
+ \edef\T{##1}%
+ \edef\U{yes}%
+ \edef\V{no}%
+ \ifx \T\U % Already true
+ \else \ifx \T\V \global\*TC*figfalse
+ \else \message{<TEXT1> Warning, argument to
+ incontents in figureformat is not "yes" or "no".
+ "yes" will be assumed.}
+ \fi\fi}%
+ \def\skipafter##1{\global\fi*sa={##1}}%
+ #1}}% End figure format markup
+\let\fif=\figureformat
+%
+\newif\if*tpreset % titlepage reset for figure markup
+\*tpresetfalse % no reset necessary
+%
+% Figure revised on 10/4/89, drg
+%
+\def\figuretitle{}
+\def\figure{\futurelet\next\*fga}
+\def\*fga{\ifcat\bgroup\noexpand\next \let\next\*fgb
+ \else\let\next\*fgc\fi \next}
+\def\*fgb{\global\setbox\A=\vbox\bgroup\aftergroup\*fgd\let\next}
+\def\*fgc#1{\*fge{#1}}
+\def\*fgd{\*fge{\box\A}}
+\long\def\*fge#1#2{\par % Begin figure markup definition
+ \gdef\figuretitle{#2}%
+ \global\advance \fi*n by 1 % figure number
+ \begingroup % trap null setting for lets
+ \let\fullpage=\null % make fullpage non-printable
+ \let\halfpage=\null % make halfpage non-printable
+ \let\toclinebreak=\space % prevent break in title
+ \let\toclbr=\space % prevent break in title
+% for value of \fi*pos: 1=\float,2=\nofloat,3=\midfloat,4=\keep
+ \ifcase\fi*pos
+ \or % BEGIN TOPINSERT FIGURES
+ \if*fp % full page topinsert figure
+ \if*title\*tpresettrue\notitlepage\fi % account for titlepage
+ \topinsert % floating figures are topinserts
+ \if*TC*fig \putincontents2{\the\*ftf}\fi
+ \vbox to\vsize{\vrule width0pt\relax
+ \vfil#1\the\*figt}
+ \endinsert
+ \if*tpreset\titlepage\*tpresetfalse\fi % reset titlepage
+ \else\if*hp % half page topinsert figure
+ \topinsert
+ \if*TC*fig \putincontents2{\the\*ftf}\fi
+ \vbox to.5\vsize{\vrule width0pt \relax
+ \vskip\the\fi*sb\relax
+ \vfil#1\the\*figt
+ \vskip\the\fi*sa\relax}
+ \endinsert
+ \else % variable size floating figure
+ \topinsert
+ \if*TC*fig \putincontents2{\the\*ftf}\fi
+ \vskip\the\fi*sb\relax
+ #1\the\*figt
+ \vskip\the\fi*sa\relax
+ \endinsert
+ \fi\fi % end float full and half page check
+ \or % BEGIN IMMEDIATE FIGURES
+ \if*fp % FULL PAGE IMMEDIATE FIGURE
+ \np % figure won't fit on current page
+ \if*TC*fig \putincontents2{\the\*ftf}\fi % send to contents
+ \vrule width0pt \relax % prevent fil from going away
+ \vfill\the\*figt % fill to figure title
+ \break % insures break at end of insert
+ \else
+ \if*hp % HALF PAGE IMMEDIATE FIGURE
+ \dimen\D=.5\vsize % depth check for half page figure
+ \advance\dimen\D by\topskip % add topskip to .5 vsize
+ \ifdim\pagetotal>\dimen\D\np\fi % won't fit on current page
+ \vbox to.49\vsize{\vrule width0pt % keep skip
+ \vfil\relax % skip all but title height to
+ #1\the\*figt % print figure title
+ \vskip\the\fi*sa\relax} % print half page figure title
+ \if*TC*fig \putincontents2{\the\*ftf}\fi
+ \else % VARIABLE SIZE IMMEDIATE FIGURE
+ \vrule width0pt \relax % prevent skip from going away
+ \vskip\the\fi*sb\relax
+ #1\the\*figt
+ \vskip\the\fi*sa\relax
+ \if*TC*fig \putincontents2{\the\*ftf}\fi
+ \fi% End of check at half page
+ \fi % End of check at full page
+ \or % BEGIN MIDINSERT FIGURES
+ \if*fp % full page midinsert figure
+ \if*title\*tpresettrue\notitlepage\fi % account for titlepage
+ \topinsert % use topinsert for full page only
+ \if*TC*fig \putincontents2{\the\*ftf}\fi
+ \vbox to\vsize{\vrule width0pt\relax
+ \vfil#1\the\*figt}
+ \endinsert
+ \if*tpreset\titlepage\*tpresetfalse\fi % reset titlepage
+ \else\if*hp % half page midinsert figure
+ \midinsert
+ \if*TC*fig \putincontents2{\the\*ftf}\fi
+ \vbox to.5\vsize{\vrule width0pt \relax
+ \vskip\the\fi*sb\relax
+ \vfil#1\the\*figt
+ \vskip\the\fi*sa\relax}
+ \endinsert
+ \else % variable size floating figure
+ \midinsert
+ \if*TC*fig \putincontents2{\the\*ftf}\fi
+ \vskip\the\fi*sb\relax
+ #1\the\*figt
+ \vskip\the\fi*sa\relax
+ \endinsert
+ \fi\fi % end float full and half page check
+ \or % BEGIN IMMEDIATE KEEP FIGURES
+ \if*fp % FULL PAGE IMMEDIATE FIGURE
+ \np % figure won't fit on current page
+ \if*TC*fig \putincontents2{\the\*ftf}\fi % send to contents
+ \vrule width0pt \relax % prevent fil from going away
+ \vfill\the\*figt % fill to figure title
+ \break % insures break at end of insert
+ \else
+ \if*hp % HALF PAGE IMMEDIATE FIGURE
+ \dimen\D=.5\vsize % depth check for half page figure
+ \advance\dimen\D by\topskip % add topskip to .5 vsize
+ \ifdim\pagetotal>\dimen\D\np\fi % won't fit on current page
+ \vbox to.49\vsize{\vrule width0pt % keep skip
+ \vfil\relax % skip all but title height to
+ #1\the\*figt % print figure title
+ \vskip\the\fi*sa\relax} % print half page figure title
+ \if*TC*fig \putincontents2{\the\*ftf}\fi
+ \else % VARIABLE SIZE IMMEDIATE FIGURE
+ \vrule width0pt \relax % prevent skip from going away
+ \vskip\the\fi*sb\relax
+ \vbox{#1\the\*figt
+ \vskip\the\fi*sa\relax}
+ \if*TC*fig \putincontents2{\the\*ftf}\fi
+ \fi% End of check at half page
+ \fi % End of check at full page
+ \fi % End of case statement
+ \endgroup % end trap for null settings
+ \global\*fpfalse % reset full page
+ \global\*hpfalse % reset half page
+}% End figure markup
+\let\fig=\figure % abbreviation for figure markup
+%
+\def\fullpage{\global\*fptrue}% used in figure markup
+\def\halfpage{\global\*hptrue}% used in figure markup
+%
+\def\figurenumber{\the\fi*n}%
+%
+\def\HFN#1{\laf{\labelwidth{\fi*hi}}\label{#1}}%
+%
+\def\setfigurenumber#1{\global\fi*n=#1}%
+\let\sfn=\setfigurenumber
+%
+% Redefined from PLAIN TEX
+%
+\def\topinsert{\@midfalse\p@gefalse\t*ptrue\@ins}
+%
+\def\midinsert{% redefine from plain tex
+ \@midtrue
+ \if*fix % don't change meaning in fixed mode
+ \else % change midinsert to topinsert in flex mode
+ \if*dbl\global\@midfalse\fi % leave old meaning in single column mode
+ \if*tpl\global\@midfalse\fi %
+ \fi\@ins} %
+%
+\def\@ins{\par\begingroup
+ \if*fix % do nothing in fixed mode
+ \else\ift*p\hsize=\*txtw\fi\fi % ift*p hsize of insert set
+ \setbox0=\vbox\bgroup} % insert set to full page width
+%
+% Tables
+%
+\def\tableformat#1{{%
+ \long\def\titleformat##1{\global\*tabt={##1}}%
+ \def\incontents##1{\global\*TC*tabtrue
+ \edef\T{##1}%
+ \edef\U{yes}%
+ \edef\V{no}%
+ \ifx \T\U % Already true
+ \else \ifx \T\V \global\*TC*tabfalse
+ \else \message{<TEXT1> Warning, argument to
+ incontents in tableformat is not "yes" or "no".
+ "yes" will be assumed.}
+ \fi\fi}%
+ #1}}
+\let\taf=\tableformat
+%
+\def\tabletitle#1{{% Tabletitle revised 11/3/86 (added toclinebreak)
+ \def\tabletitle{#1}%
+ \global\advance \ta*n by 1
+ \par
+ \bgroup
+ \let\toclinebreak=\space
+ \let\toclbr=\space
+ \the\*tabt % prints the title in the text
+ \egroup
+ \par
+ \D=\lastskip
+ \removelastskip
+ \if*TC*tab \putincontents3{\the\*ttf}\fi
+ \ignorespaces
+ \vs{\D}
+}}% END tabletitle markup definition
+\let\tat=\tabletitle
+%
+\def\tablenumber{\the\ta*n}
+\def\HTN#1{\laf{\labelwidth{\ta*hi}}\label{#1}}
+%
+\def\settablenumber#1{\global\ta*n=#1}%
+\let\stn=\settablenumber
+%
+\message{8600 macros,}
+%
+% Macros specific for the 8600 (JKW) revision 11/25/86
+%
+\newskip\evenmar
+\newskip\oddmar
+\evenmar=0pt
+\oddmar=0pt
+\def\evenpagemargin#1{{\setbox0=\hbox{\global\evenmar=#1 pt}}
+ \special{even_page_margin=\the\evenmar}}%
+\let\epm=\evenpagemargin
+\def\oddpagemargin#1{{\setbox0=\hbox{\global\oddmar=#1 pt}}
+ \special{odd_page_margin=\the\oddmar}}%
+\let\opm=\oddpagemargin
+\def\linenumberfont#1{\B={#1}
+ \special{line_number_font=\the\B}}%
+\let\lnf=\linenumberfont
+\def\poplevel#1{\B={#1}
+ \special{pop_level=\the\B}}%
+\let\ppl=\poplevel
+\def\lineinterval#1{\B={#1}
+ \special{line_interval=\the\B}}%
+\let\lint=\lineinterval
+\def\numberinglines#1{\special{numbering_lines=#1}}%
+\let\numl=\numberinglines
+\def\countinglines#1{\special{counting_lines=#1}}%
+\let\coul=\countinglines
+\def\printingnumbers#1{\special{printing_numbers=#1}}%
+\let\prin=\printingnumbers
+\def\linefootnotereference{\special{line_footnote_reference}}%
+\let\lfnr=\linefootnotereference
+%
+\message{ more misc,}
+%
+% To be able to use PLAIN.TEX math code
+%
+\def\plaintexmathon{%
+ \catcode`\$=3\relax
+ \catcode`@=12\relax}
+\let\dollarmathon=\plaintexmathon
+\def\atmathon{%
+ \catcode`\$=12\relax
+ \catcode`@=3\par}
+%
+\message{multiple columns,}
+%
+\outer\def\bye{\par\onecolumn\vfill\supereject\end} % redefined from PLAIN.TEX
+% to close multiple column routines
+%
+% MULTIPLE COLUMNS
+% Brian Harvey 1/20/85
+%
+% Macros to be imbedded into TEXT1 to drive the multiple column
+% routines FLEXCOL and FIXCOL.
+%
+\newbox\*lftcol % left column box, fixed column mode, TeXbook name
+\newbox\*midcol % center column, fixed column mode, TeXbook name
+\newbox\*ppage % page accummulated before multicolumn, partialpage, flex
+\newcount\*pcount % counter for empty page macro, keeps track of the
+\*pcount=0 % number of empty page calls
+\newdimen\*bigch % Twc=2vise, Thc=3vsize---bigcolumnheight
+\newdimen\*txtw % textwidth, stores full hsize for multicolumn mode
+\let\galleywidth=\*txtw % create galleywidth = text width
+\newdimen\*txth % textheight, stores page height for multicolumn mode
+\*txtw=\hsize % initialize full page text width for multicolumn mode
+\*txth=\vsize % initialize full text height for multicolumn mode
+\newif\ift*p % ift*p required to check for midinsert in flex mode
+\newif\if*dbl % double column indicator
+\*dblfalse % set double column format indicator false
+\newif\if*tpl % triple column indicator
+\*tplfalse % set triple column format indicator false
+\newif\if*fix % format indicator (fixed if true, otherwise flexible)
+\newif\if*norule % used to suppress rules in output routines
+\newif\if*plain % check for plain.tex, plainoutput
+\*plaintrue % set plain format indicator true
+\newtoks\*twcw % width for twocolumns
+\newtoks\*thcw % width for threecolumns
+\newtoks\*twcgut % gutter for twocolumns
+\newtoks\*thcgut % gutter for threecolumns
+\newtoks\*clrw % rule width between multiple columns
+\newtoks\*mskb % skip before multicolumn format
+\newtoks\*mska % skip after multicolumn format
+\*twcw={.48\*txtw} % initialize column and gutter default widths
+\*thcw={.31\*txtw}
+\*twcgut={.04\*txtw}
+\*thcgut={.035\*txtw}
+\*clrw={0.0pt} % initialize between column rule width
+\*mskb={6pt plus 3pt minus 2pt} % initialize skips before and after multiple columns:
+\*mska={6pt plus 3pt minus 2pt} % used in multiple column flex mode only
+
+\def\fixedformat{\global\*fixtrue} % calls fixed format file
+\let\fixf=\fixedformat
+\global\*fixfalse % sets up flex format
+%
+\def\multicolumnformat#1{% format macro for both fixed and flexible, texblock is multicol
+ \def\twocolumnwidth##1{\global\*twcw={##1}}%
+ \def\threecolumnwidth##1{\global\*thcw={##1}}%
+ \def\twocolumngutter##1{\global\*twcgut={##1}}%
+ \def\threecolumngutter##1{\global\*thcgut={##1}}%
+ \def\columnrulewidth##1{\global\*clrw={##1}}%
+ \def\skipbefore##1{\global\*mskb={##1}}% flex mode only
+ \def\skipafter##1{\global\*mska={##1}}% flex mode only
+ #1\*txtwck}% END, multicol format
+\let\mcf=\multicolumnformat
+%
+% COLUMN WIDTH CHECK FOR MULTIPLE COLUMN ROUTINES
+%
+\def\*txtwck{% check column width and gutters against hsize
+ \dimen@=\the\*twcw
+ \dimen@=2\dimen@
+ \dimen1=\the\*twcgut
+ \advance\dimen@ by\dimen1
+ \ifdim\dimen@ > \*txtw % if greater than current pagewidth
+ \dimen1=\dimen@
+ \advance\dimen1 by-\*txtw
+ \advance\dimen@ by -\*txtw
+ \ifdim\dimen@ > 1pt % only warn if over 1pt
+ \immediate\write16{%
+ <TEXT1> Warning! The column and gutter widths specified%
+ for two columns are wider than the current pagewidth by%
+ \the\dimen1 . }
+ \fi
+ \else\ifdim\dimen@ < \*txtw % if less than current pagewidth
+ \dimen1=\*txtw
+ \advance\dimen1 by-\dimen@
+ \advance\dimen@ by -\*txtw
+ \multiply\dimen@ by -1
+ \ifdim\dimen@ > 1pt % Only warn if over 1pt difference
+ \immediate\write16{%
+ <TEXT1> Warning! The column and gutter widths specified%
+ for two columns are shorter than the current pagewidth by%
+ \the\dimen1 . }
+ \fi
+ \fi\fi
+%
+ \dimen@=\the\*thcw % width of each column, three columns
+ \dimen@=3\dimen@ % three columns
+ \dimen1=\the\*thcgut % width of the gutters
+ \dimen1=2\dimen1 % two gutters in three columns
+ \advance\dimen@ by\dimen1 % add columns and gutters together
+ \ifdim\dimen@ > \*txtw % if greater than current pagewidth
+ \dimen1=\dimen@
+ \advance\dimen1 by-\*txtw
+ \advance\dimen@ by -\*txtw
+ \ifdim\dimen@ > 1pt % only warn if over 1pt
+ \immediate\write16{%
+ <TEXT1> Warning! The column and gutter widths specified%
+ for three columns are wider than the current pagewidth by%
+ \the\dimen1 . }
+ \fi
+ \else\ifdim\dimen@ < \*txtw % if less than current pagewidth
+ \dimen1=\*txtw
+ \advance\dimen1 by-\dimen@
+ \advance\dimen@ by -\*txtw
+ \multiply\dimen@ by -1
+ \ifdim\dimen@ > 1pt % Only warn if over 1pt difference
+ \immediate\write16{%
+ <TEXT1> Warning! The column and gutter widths specified%
+ for three columns are shorter than the current pagewidth by%
+ \the\dimen1 . }
+ \fi
+ \fi\fi
+ } % END, widthcheck
+%
+\newif\if*start*mc \*start*mcfalse
+\def\twocolumns{% TWOCOLUMNS set-up macro
+ \if*fix \input fixcol % input fixed format file
+ \immediate\write-16{% write to log file only
+ <TEXT1> Fixed format for multiple columns in effect. }
+ \gdef\twocolumns{\*fixtwc}% redefine twocolumns, fixed mode
+ \gdef\threecolumns{\*fixthc}% redefine threecolumns, fixed mode
+ \else \input flexcol % input flex format file
+ \immediate\write-16{% write to log file only
+ <TEXT1> Flexible format for multiple columns in effect. }
+ \gdef\twocolumns{\*flextwc}% redefine twocolumns, flex mode
+ \gdef\threecolumns{\*flexthc}\fi% redefine threecolumns, flex mode
+ \twocolumns
+ \global\let\twc=\twocolumns % to current meaning of twocolumns
+ \global\let\thc=\threecolumns % to current meaning of threecolumns
+}% END twocolumns markup
+%
+\let\twc=\twocolumns
+%
+\def\threecolumns{% THREECOLUMNS set-up macro
+ \*start*mctrue
+ \if*fix \input fixcol % input fixed format file
+ \immediate\write-16{% write to log file only
+ <TEXT1> Fixed format for multiple columns active. }
+ \gdef\twocolumns{\*fixtwc}% redefine twocolumns, fixed mode
+ \gdef\threecolumns{\*fixthc}% redefine threecolumns, fixed mode
+ \else \input flexcol % input flex format file
+ \immediate\write-16{% write to log file only
+ <TEXT1> Flexible format for multiple columns active. }
+ \gdef\twocolumns{\*flextwc}% redefine twocolumns, flex mode
+ \gdef\threecolumns{\*flexthc}\fi% redefine threecolumns, flex mode
+ \threecolumns
+ \global\let\twc=\twocolumns % to current meaning of twocolumns
+ \global\let\thc=\threecolumns % to current meaning of threecolumns
+}% End threecolumns markup
+%
+\let\thc=\threecolumns
+%
+\let\onecolumn=\null % Empty definition for single format
+\let\oc=\onecolumn
+%
+\let\newcolumn=\newpage
+\let\nc=\newpage
+\newif\if*nc \*ncfalse % true if \nc was used in mult cols
+%
+\global
+\newhelp\balerrhelp{onecolumn The best approach to solve this problem
+ is to shorten the text by a line. You could also add or delete a
+ paragraph or change the column size. }%
+%
+\message{index macros,}
+%
+% Here are the macros necessary for doing an index
+%
+\newtoks\*ixarc \*ixarc={case=no} % IndeX A Respect Case
+\newcount\*ixpn % Page number type: 0,2,4,6, or 9
+\newtoks\*ixast \*ixast={style=3} % IndeX A STyle
+\newtoks\*ixald \*ixald={leadering=no} % IndeX A LeaDering
+\newtoks\*ixabr \*ixabr={\vs{1\bl}} % IndeX A BReak
+\newtoks\*ixasea \*ixasea={1em} % IndeX A SubEntry 1
+\newtoks\*ixaseb \*ixaseb={2em} % IndeX A SubEntry 2
+\newtoks\*ixaev \*ixaev={\tenpt} % Index A every time
+\newtoks\*ixahp \*ixahp={1.5em} % Index A hang indent
+\newtoks\*ixbrc \*ixbrc={case=no} % IndeX B Respect Case
+\newtoks\*ixbst \*ixbst={style=3} % IndeX B STyle
+\newtoks\*ixbld \*ixbld={leadering=no} % IndeX B LeaDering
+\newtoks\*ixbbr \*ixbbr={\vs{1\bl}} % IndeX B BReak
+\newtoks\*ixbsea \*ixbsea={1em} % IndeX B SubEntry 1
+\newtoks\*ixbseb \*ixbseb={2em} % IndeX B SubEntry 2
+\newtoks\*ixbev \*ixbev={\tenpt} % Index B every time
+\newtoks\*ixbhp \*ixbhp={1.5em} % Index B hang indent
+\newtoks\*ixcrc \*ixcrc={case=no} % IndeX C Respect Case
+\newtoks\*ixcst \*ixcst={style=3} % IndeX C STyle
+\newtoks\*ixcld \*ixcld={leadering=no} % IndeX C LeaDering
+\newtoks\*ixcbr \*ixcbr={\rule\vs{1\bl}} % IndeX C BReak
+\newtoks\*ixcsea \*ixcsea={1em} % IndeX C SubEntry 1
+\newtoks\*ixcseb \*ixcseb={2em} % IndeX C SubEntry 2
+\newtoks\*ixcev \*ixcev={\tenpt} % Index C every time
+\newtoks\*ixchp \*ixchp={1.5em} % Index C hang indent
+%
+\newcount\*ixlvl \*ixlvl=1 % IndeX LeVeL
+%
+\long\def\indexformat#1#2{{\ifnum #1>3 \message{<TEXT1> Error! Only three indices
+ allowed. Level 1 will be used.}
+ \*ixlvl=1
+ \else \*ixlvl=#1\fi
+ \def\respectcase##1{\edef\T{yes}
+ \edef\U{no}
+ \edef\V{##1}
+ \ifx \T\V \B={case=yes}
+ \else \B={case=no}
+ \ifx \U\V % Already set
+ \else\message{<TEXT1> Error!! Case respect not "yes"
+ or "no" in indexformat. "no" will be used.}
+ \fi\fi
+ \ifcase \*ixlvl \or \global\*ixarc=\B
+ \or \global\*ixbrc=\B
+ \or \global\*ixcrc=\B
+ \fi}
+ \def\style##1{\edef\T{paragraph}
+ \edef\U{dash}
+ \edef\V{indent}
+ \edef\W{##1}
+ \ifx \T\W \B={style=1} % paragraph style
+ \else \ifx \U\W \B={style=2} % dash style
+ \else \B={style=3} % indented style
+ \ifx \V\W % Already done
+ \else \message{<TEXT1> Error!! Style invalid in indexformat.
+ "indented" will be used.}
+ \fi\fi\fi
+ \ifcase \*ixlvl \or \global\*ixast=\B
+ \or \global\*ixbst=\B
+ \or \global\*ixcst=\B
+ \fi}
+ \def\leadering##1{\edef\T{yes}
+ \edef\U{no}
+ \edef\V{##1}
+ \ifx\T\V \B={leadering=yes}
+ \else \B={leadering=no}
+ \ifx\U\V
+ \else \message{<TEXT1> Error!! Only "yes" and "no" can
+ be used in the indexformat. "no" will be assumed.}
+ \fi\fi
+ \ifcase \*ixlvl \or \global\*ixald=\B
+ \or \global\*ixbld=\B
+ \or \global\*ixcld=\B
+ \fi
+ }
+ \long\def\everyletterbreak##1{\ifcase \*ixlvl \or \global\*ixabr={##1}
+ \or \global\*ixbbr={##1}
+ \or \global\*ixcbr={##1}
+ \fi}
+ \def\everyindex##1{\ifcase \*ixlvl \or \global\*ixaev={##1}
+ \or \global\*ixbev={##1}
+ \or \global\*ixcev={##1}
+ \fi}
+ \def\everyhang##1{\ifcase \*ixlvl \or \global\*ixahp={##1}
+ \or \global\*ixbhp={##1}
+ \or \global\*ixchp={##1}
+ \fi}
+ \def\indentsubentry##1##2{\R = ##1
+ \ifnum ##1<1 \message{<TEXT1> Error!! Subentry level number in indexformat
+ may only be 1 or 2. 1 will be used.}
+ \R = 1
+ \else \ifnum ##1>2 \message{<TEXT1> Error!! Subentry level number in indexformat
+ may only be 1 or 2. 1 will be used.}
+ \R = 1
+ \fi\fi
+ \ifcase \R \or \ifcase \*ixlvl \or \global\*ixasea={##2}
+ \or \global\*ixbsea={##2}
+ \or \global\*ixcsea={##2}
+ \fi
+ \or \ifcase \*ixlvl \or \global\*ixaseb={##2}
+ \or \global\*ixbseb={##2}
+ \or \global\*ixcseb={##2}
+ \fi
+ \fi}
+ #2}}
+\let\ixf=\indexformat
+\newwrite\*ixfilea % IndeX FILE A
+\newwrite\*ixfileb % IndeX FILE B
+\newwrite\*ixfilec % IndeX FILE C
+\newif\if*ixaopen \*ixaopenfalse % IndeX file A OPEN?
+\newif\if*ixbopen \*ixbopenfalse % IndeX file B OPEN?
+\newif\if*ixcopen \*ixcopenfalse % IndeX file C OPEN?
+\def\*openixfile#1{\ifcase #1 \or
+ \immediate\openout\*ixfilea=text1xx.ix1%
+ \global\*ixaopentrue
+ \immediate\write\*ixfilea{\the\*ixarc}%
+ \immediate\write\*ixfilea{\the\*ixast}%
+ \immediate\write\*ixfilea{\the\*ixald}%
+ \or \immediate\openout\*ixfileb=text1xx.ix2%
+ \global\*ixbopentrue
+ \immediate\write\*ixfileb{\the\*ixbrc}%
+ \immediate\write\*ixfileb{\the\*ixbst}%
+ \immediate\write\*ixfileb{\the\*ixbld}%
+ \or \immediate\openout\*ixfilec=text1xx.ix3%
+ \global\*ixcopentrue
+ \immediate\write\*ixfilec{\the\*ixcrc}%
+ \immediate\write\*ixfilec{\the\*ixcst}%
+ \immediate\write\*ixfilec{\the\*ixcld}%
+ \fi}
+{\catcode`\$=12
+\global\def\index#1#2{{\global\*ixpn = 2
+ \def\subentry##1##2{${$}se##1##2{$}}%
+ \def\bdpn{\global\*ixpn = 0}%
+ \def\uspn{\global\*ixpn = 4}%
+ \def\itpn{\global\*ixpn = 6}%
+ \def\blindentry##1{\global\*ixpn = 9}%
+ \def\sortas##1{${$}sa##1{$}}%
+ \def\dagger{ \noexpand\dagger}%
+ \def\ddagger{ \noexpand\ddagger}%
+ \def\\{\noexpand\\}%
+ \def\{{\noexpand\{}%
+ \def\}{\noexpand\}}%
+ \def\_{\noexpand\_}%
+ \def\@{\noexpand\@}%
+ \def\S{\noexpand\S}%
+ \def\P{\noexpand\P}%
+ \def\L{\noexpand\L}%
+ \def\AA{\noexpand\AA}%
+ \def\neg{\noexpand\neg}%
+ \def\tilde{\noexpand\tilde}%
+ \def\vbar{\noexpand\vbar}%
+ \def\roman{\noexpand\rm}\let\rm=\roman%
+ \def\bold{\noexpand\bd}\let\bd=\bold%
+ \def\italic{\noexpand\it}\let\it=\italic%
+ \def\typewriter{\noexpand\tt}\let\tt=\typewriter%
+ \def\caps{\noexpand\cc}\let\cc=\caps%
+ \def\mathitalic{\noexpand\mi}\let\mi=\mathitalic%
+ \def\symbol{\noexpand\sy}\let\sy=\symbol%
+ \def\extension{\noexpand\ex}\let\ex=\extension%
+ \def\bolditalic{\noexpand\bi}\let\bi=\bolditalic%
+ \setbox0=\vbox{\hsize=100in#2}%
+ \def\bdpn{}%
+ \def\uspn{}%
+ \def\itpn{}%
+ \def\blindentry##1{${$}be##1{$}}%
+ \*ixlvl = #1
+ \ifcase #1 \message{<TEXT1> Error!! You can only have index level 1, 2, or 3.
+ Index level 1 will be used.}
+ \*ixlvl = 1
+ \or\or\or% % These levels are ok
+ \else \message{<TEXT1> Error!! You can only have index level 1, 2, or 3.
+ Index level 1 will be used.}
+ \*ixlvl = 1
+ \fi%
+ \edef\*ixtoken{#2}%
+ \edef\temp{\*ixtoken}%
+ \ifcase \*ixlvl \or\if*ixaopen\else\*openixfile1\fi% Open the file if not done yet
+ \immediate\write\*ixfilea{{\the\*ixpn}{\the\pageno}{\pagenumber}\*ixtoken}%
+ \or \if*ixbopen \else \*openixfile2 \fi % Open the file if not done yet
+ \immediate\write\*ixfileb{{\the\*ixpn}{\the\pageno}{\pagenumber}\*ixtoken}%
+ \or \if*ixcopen \else \*openixfile3 \fi % Open the file if not done yet
+ \immediate\write\*ixfilec{{\the\*ixpn}{\the\pageno}{\pagenumber}\*ixtoken}%
+ \fi}\ignorespaces}
+}% End math cat code change
+\def\everyletterbreak#1#2{\def\nextletter{#2}
+ \ifcase #1 \or \the\*ixabr
+ \or \the\*ixbbr
+ \or \the\*ixcbr
+ \fi}
+\def\everyindex#1{\ifcase \*ixlvl \or \the\*ixaev
+ \or \the\*ixbev
+ \or \the\*ixcev
+ \fi}
+\def\indentsubentry#1#2{\par\penalty5000\hp
+ \ifcase #2 \or \ifcase #1 \or \hs{\the\*ixasea}
+ \or \hs{\the\*ixbsea}
+ \or \hs{\the\*ixcsea}
+ \fi
+ \or \ifcase #1 \or \hs{\the\*ixaseb}
+ \or \hs{\the\*ixbseb}
+ \or \hs{\the\*ixcseb}
+ \fi
+ \fi}
+\let\ix=\index
+\let\*ix=\printindex
+\def\printindex#1{%\*ix#1 used only when printindex is a hardcoded command
+ \ifcase #1 \or \input text1xx.ix1
+ \or \input text1xx.ix2
+ \or \input text1xx.ix3
+ \fi}
+%
+\message{wrap it up...}
+%
+\def\@{\char'100{}}%
+%
+% and set default values
+%
+\hfuzz=1pt
+\parindent=24pt \parskip=0pt plus 3pt minus 0pt
+\normalbottom
+\pageno=0
+\catcode`* = 12
+% The END
diff --git a/macros/text1/models/letter.texinput b/macros/text1/models/letter.texinput
new file mode 100644
index 0000000000..4cac048afa
--- /dev/null
+++ b/macros/text1/models/letter.texinput
@@ -0,0 +1,51 @@
+% LETTER FORMAT FILE bth 4/1/87
+\catcode`*=11
+\raggedbottom % text height may vary from page to page
+\if*msp\defaultmono
+ \let\titlefont=\defaultmono
+ \let\twelvept=\defaultmono
+ \let\tenpt=\defaultmono
+ \let\rm=\defaultmono
+ \fi % monospace check
+\newtoks\departmentname % department name for letterhead
+\newtoks\campuszip % zip code for letterhead
+\newtoks\campusphone % phone number for letterhead
+\newtoks\date % date token list
+\newif\if*postscript
+\*postscriptfalse
+%
+\def\STOP{\endgroup\par}% ends obeylines grouping
+%
+\def\BEGINADDRESS{\begingroup\parskip=0pt\parindent=0pt\obeylines}%
+\let\SALUTATION=\null
+\let\BODY=\STOP
+\def\CLOSING{\par\vs{\bl}\begingroup\parskip=0pt\parindent=0pt
+ \obeylines}%
+\def\COPIES{\par\vs{\bl}
+ \setbox0=\hbox{Copies:\quad}\parindent=\wd0 \nin Copies:\quad}%
+\def\ENCLOSURES#1{\par Enclosures:\quad #1}% sets enclosures text line
+\def\ENDLETTER{\par\endgroup}% stop any obeylines grouping
+% Default for the title (first) page
+\titlepageformat{\titleleadskip{0in}
+ \titlefootline{}
+}% end title page format
+\def\letterhead{{\parskip=0pt
+ \if*msp
+ \cl{\titlefont Washington State University}
+ \vs{\bl}\hrule\vs{\bl}
+ \cl{\the\departmentname}
+ \cl{Pullman, Washington\ \the\campuszip}
+ \cl{\the\campusphone}
+ \vs{1\bl} % number of blank lines inserted
+ \nin\the\date %
+ \else
+ \cl{\titlefont Washington State University}
+ \vs{4pt}\hrule\vs{6pt}
+ \cl{\twelvept \the\departmentname}
+ \cl{\tenpt Pullman, Washington\ \the\campuszip}
+ \cl{\tenpt \the\campusphone}
+ \vs{1\bl} % number of blank lines inserted
+ \nin\the\date %
+ \fi
+}}% end letterhead markup
+\catcode`*=12
diff --git a/macros/text1/models/letter.texmodel b/macros/text1/models/letter.texmodel
new file mode 100644
index 0000000000..0983cee198
--- /dev/null
+++ b/macros/text1/models/letter.texmodel
@@ -0,0 +1,45 @@
+% LETTER MARKUP (style, full block) APRIL 1, 1986
+% To print on monospace printers (line printers, daisy-wheel printers)
+%\monospace % delete the "%" symbol at the beginning of this line
+\paragraphskip{12pt} % distance between paragraphs
+\paragraphindent{0pt} % first line word indent
+\sfs{cm18}{titlefont}{24pt}% large font selected for letterhead
+\input letter.texinput % places the format file into your text file
+% LETTERHEAD INFORMATION
+% Type the name of your department, the campus zip code,
+% the campus telephone number, and date (if not today's
+% date) between the curly braces of the samples shown
+% below. This information will be added to the letterhead.
+%........................................................................
+\departmentname{name of your department or organization}
+\campuszip{99164-????}
+\campusphone{(509) 335-????}
+\date{\today}
+% . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+\letterhead %
+\vs{2\bl} %
+% LETTER ADDRESS
+\BEGINADDRESS % . . . . insert address below this line . . . . . . . . .
+\SALUTATION % . . . replace the salutation on the next line . . . . . . .
+Dear ????
+\BODY % LETTER BODY
+% . . . . . . insert the text of the letter below this line . . . . . . .
+% . . . . . . . . . . . . and above this line . . . . . . . . . . . . . .
+% LETTER CLOSING
+\CLOSING % . . . . replace closing line, if desired . . . . . . . . . . .
+Sincerely yours,
+\vs{3\bl}
+% SIGNATURE LINE
+% . . . . . . . . . replace signature line . . . . . . . . . . . . . . .
+John Doe
+\vs{\bl}
+% ENCLOSURES AND COPIES
+% . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+% Use \ENCLOSURES markup for an enclosure number, %
+% for example: \ENCLOSURES{3} %
+% Use \COPIES markup for a copy list, %
+% for example: \COPIES first name %
+% second name %
+% third name, etc. %
+% . . . . . . . enter enclosures and copies below this line . . . . . . .
+\ENDLETTER %------------- and above this line ---------------------------
diff --git a/macros/text1/models/memo.texinput b/macros/text1/models/memo.texinput
new file mode 100644
index 0000000000..bbf6aa632e
--- /dev/null
+++ b/macros/text1/models/memo.texinput
@@ -0,0 +1,48 @@
+% MEMO TEXINPUT FORMAT FILE
+% dlw 8/15/86
+\catcode`*=11
+\if*msp \let\titlefont=\defaultmono
+ \let\twelvept=\defaultmono
+ \let\tenpt=\defaultmono
+ \let\rm=\defaultmono
+ \fi % change all fonts to defaultmono for the monospace option
+\rightragged
+\newif\if*copies
+\*copiesfalse
+\newtoks\*lfthead \*lfthead = { }
+\newtoks\*ctrhead \*ctrhead = { }
+\newtoks\*rthead \*rthead = { }
+\rightragged
+% Default for the title (first) page
+\titlepageformat{\titleleadskip{0in}
+ \titlefootline{}
+}
+\def\memopageheadingformat#1{% setup for memo running head
+ \def\*left##1{\global\*lfthead={##1}}%
+ \def\*center##1{\global\*ctrhead={##1}}%
+ \def\*right##1{\global\*rthead={##1}}%
+#1}% end memoheading format
+\let\mhf=\memopageheadingformat
+\memopageheadingformat{\*left{}\*center{\pagenumber}\*right{}}
+\runningheadformat{\bothpages{\twelvept
+ \line{\hbox to.33333\hsize{\the\*lfthead\hss}\hfil
+ \hbox to.33333\hsize{\hss\the\*ctrhead\hss}\hfil
+ \hbox to.33333\hsize{\hss\the\*rthead}}
+ \vs{28pt}} % 28pt = .4in
+}% end runningheadformat
+\def\MEMO{\begingroup\obeylines\parskip=0pt\parindent=60pt}%
+\def\TEXT{\endgroup\if*msp\defaultmono\ssp\else\twelvept\fi %
+ \vs{\bl}\hrule\vs{2\bl}}%
+%
+\cl{{\titlefont M E M O R A N D U M}}
+\if*msp\par\vs{\bl}\ssp
+ \else\par\vs{.4in}\isk{18pt}\fi
+\def\TO{\nin To:\par\vs{-\bl}}%
+\def\FROM{\if*msp\vs{\bl}\fi\nin From:\par\vs{-\bl}}%
+\def\DATE#1{\if*msp\vs{\bl}\fi\nin Date:\par\vs{-\bl}#1}%
+\def\SUBJECT{\if*msp\vs{\bl}\fi\nin Subject:\par\vs{-\bl}}%
+\def\COPIES{\global\*copiestrue\vs{\bl}\nin Copies:\par\vs{-\bl} %
+ \begingroup\obeylines\singlespace %
+ \parskip=0pt\parindent=60pt}%
+\def\ENDMEMO{\if*copies\par\endgroup\global\*copiesfalse\else\par\fi}%
+\catcode`*=12
diff --git a/macros/text1/models/memo.texmodel b/macros/text1/models/memo.texmodel
new file mode 100644
index 0000000000..8e16ff97be
--- /dev/null
+++ b/macros/text1/models/memo.texmodel
@@ -0,0 +1,21 @@
+% MEMO TEXMODEL
+% August 15, 1986
+% To print on monospace printers delete the % symbol before \monospace
+%\monospace
+\sfs{cm18}{titlefont}{24pt}% Font selected for heading
+\input memo.texinput % Loads memorandum format file
+\MEMO % Prints memorandum heading
+%--------Enter the text after each markup on the following lines---------
+%------------------multiple line entries may be used---------------------
+\TO
+\FROM
+\DATE {\today}
+\SUBJECT
+\TEXT %----- Insert the memo below this line-----------------------------
+
+%--------------For a list of copies use the \COPIES: markup-------------
+% for example: \COPIES first name
+% second name
+% third name, etc.
+%------------enter the copies markup and names below this line-----------
+\ENDMEMO % ----------------and before this line--------------------------
diff --git a/macros/text1/models/mergelet.texmodel b/macros/text1/models/mergelet.texmodel
new file mode 100644
index 0000000000..de4e4fa4b2
--- /dev/null
+++ b/macros/text1/models/mergelet.texmodel
@@ -0,0 +1,77 @@
+% Sample Letter for Merge File Model
+%
+% TEXT1 Letterhead description, change to suit your letter
+%
+%
+\begingroup
+\paragraphskip{0pt}
+\centerline{{\titlefont Washington State University}}
+\vs{4pt}\hrule\vs{4pt}
+\centerline{{\twelvept\bd Academic Computing Service}}
+\vs{-2pt}
+\centerline{{\tenpt Pullman, Washington 99164-1220\lbr 509/335-0411}}
+\vs{1\bl} % number of blank lines inserted
+\endgroup
+\vs{\bl}
+\tenpt
+\nin{\today}
+\vs{\bl}
+\asisbegin
+\noemptyspace\title\ \firstname\ \lastname
+\noemptyspace\company
+\address
+\city, \state\ \zipcode
+\phone
+
+Dear \firstname:
+
+\asisend
+This letter is a sample for the merge file facility of \text1. Ten
+data fields were created with DBASE~III on a PC and transferred to
+CMS. The fields were delimited with double quotations marks
+({\tt "}) and a comma placed between data fields by DBASE. Any data
+base program that allows data fields to be delimited with quotation
+marks could be used. A data file may also be created
+directly on CMS by entering the data in the following manner:\lbr
+\hs{2in}{\tt "}field one{\tt "},{\tt "}field two{\tt "},\ellipsis3,{\tt
+"}last field{\tt "}\lbr
+or written as \lbr
+\hs{2in}{\tt "}field one{\tt ""}field two{\tt "\ellipsis3\ "}last
+field{\tt "}\lbr
+the commas between data fields are optional.
+
+Quotation marks must be placed on either side of each field
+(delimit the field) and the {\it each data field must come in the same
+sequence as the data names specified in the {\tt \\fieldnames} markup}.
+{\bd No \it field may be omitted}, however, a field may be empty
+({\it i.e.}, {\tt "}first field{\tt ","","}third field{\tt "}
+\ellipsis3 ).
+
+The data markup (field names immediately preceded by a {\tt \\} )
+may be used to place text anywhere in the letter, but
+each field should be followed by a control space markup (\\ \ , a
+backslash followed by a blank space) or \text1
+will drop the space after the field. For example, the \\firstname\\
+\\lastname and \\amount markup have been used to add the
+recipients name and a dollar amount in the following line.
+
+\cl{The \firstname\ \lastname\ account has been charged \amount\ for
+printing services.}
+
+The {\tt \\noemptyspace} markup may be used to prevent a blank line
+if an address line is empty. Place the data field markup between the
+{\tt \\noemptyspace} markup and the linebreak ({\tt \\lbr}) markup
+({\it i.e.}, {\tt \\noemptyspace\\company\\lbr} would prevent a blank
+line if the company data field were empty). The {\tt\\noemptyspace}
+markup prevents an extra space after an empty data field. Place
+it in the following manner: {\tt \\noemptyspace\\title\\
+\\firstname\\ \\lastname\\lbr} The {\tt \\noemptyspace} markup will
+remove the following control space ({\tt \\ }) or control line break
+({\tt \\lbr}) if the specified data field
+is empty.
+\vs{\bl}
+\noindent
+Sincerely yours,
+\vs{3\bl}
+\noindent
+John Doe
diff --git a/macros/text1/models/mergelst.texmodel b/macros/text1/models/mergelst.texmodel
new file mode 100644
index 0000000000..0d15914892
--- /dev/null
+++ b/macros/text1/models/mergelst.texmodel
@@ -0,0 +1,17 @@
+% Sample data base Merge File address list, created with dBASE III
+% data field names are as follows:
+% title, firstname, lastname, company, address,
+% city, state, zipcode, phone, amount
+% All data fields must be present for each entry, although the data
+% field itself may be empty (i.e., "" is an empty or null data field).
+%
+"Ms.","Claire","Buckman","ABC Distributing Director","8307 Santa Anita
+Blvd","Oxnard","CA","93034","(555)456-9059","$5.00"
+"Mr.","Rick","Lisbonn","Vice-President for Marketing","1550 Keystone
+St.","Glendale","CA","91206","(555)455-3344","$15.00"
+"Dr.","Hank","Bicksby","Research Institute, Manager","4101 Peonia
+Rd","Flagstaff","AZ","86001","(555)966-1278","$25.00"
+"","Lena","Garnett","","520 S. 8th St.","Reno","NV","89504",
+"(555)766-9121","$3.00"
+"Mrs.","Lisa","Kafmanan","Sales Support Staff Manager","1960 Lindley
+Ave.","Reseda","CA","91355","(555)860-0300","$8.00"
diff --git a/macros/text1/models/mergetxt.texinput b/macros/text1/models/mergetxt.texinput
new file mode 100644
index 0000000000..a25e9617e5
--- /dev/null
+++ b/macros/text1/models/mergetxt.texinput
@@ -0,0 +1,184 @@
+% Merge File Model Macro Definition File
+\catcode`*=11
+\catcode`"=\active
+\catcode`,=\active
+\catcode`@=\active
+\newbox\FirstUp
+\newbox\SecondUp
+\newbox\ThirdUp
+\newcount\*first \*first=0 % first token field
+\newcount\*index \*index=0 % field index
+\newcount\*lastentry \*lastentry=0 % last token filed
+\newcount\*letternumber \*letternumber=0 % letter number from start
+\newcount\LblsUp \LblsUp=1 % number of labels per line
+\newcount\LblsAcross \LblsAcross=0 % counter for labels accross
+\newdimen\LblMat \LblMat=0pt % left and right label margins
+\newdimen\LblHt \LblHt=0in % vertical label size
+\newdimen\LblWd \LblWd=0in % horozontal label size
+\newif\if*check \*checkfalse % datacheck for manual entry
+\newif\if*lbfopen \*lbfopenfalse % check for open label file
+\newtoks\*csnametoks \*csnametoks={} % tokens for field names
+\newtoks\*maillblfmt \*maillblfmt={} % label sheet format code
+\newtoks\*addrlbl \*addrlbl={} % address label tokens
+\newwrite\*labels % create label filee
+
+\gdef,{\char'54{}}%
+% Datacheck forces a print letter after each set of fields
+\def\datacheck{\global\*checktrue}%
+\def@{\ifnum\*index>0
+ \global\*index=\*first % reset index
+ \if*check
+ \global\advance\*letternumber by1
+ \immediate\write16{Letter number \the\*letternumber.
+ First Data Field: (\the\toks\*first) . . .
+ Last Data Field: (\the\toks\*lastentry ). }
+ \fi % write to log file for data check
+ \*prnletter % print current data
+ \fi
+} % end of @ definition
+
+% Take user defined names to build control sequences
+\def\fieldnames#1{\par
+ \global\advance\count15 by 1 % new token register
+ \global\*first=\count15 % first new token register
+ \parsenames#1\end}% end fieldnames markup
+
+% Separate name fields into individual entries
+\def\parsenames#1{\ifx#1\end
+ \createfield
+ \let\next=\relax
+ \global\*lastentry=\count15
+ \global\*index=\*first
+ \*csnametoks={}
+ \else
+ \ifx#1,
+ \createfield
+ \global\advance\count15 by 1
+ \*csnametoks={}
+ \let\next=\parsenames
+ \else \*csnametoks=\expandafter{\the\*csnametoks#1}
+ \let\next=\parsenames
+ \fi\fi
+ \next}% end parsenames markup
+
+% CREATEFIELD create control sequence names from name field entries
+\def\createfield{\expandafter\xdef\csname\the\*csnametoks\endcsname
+ {\noexpand\the\toks\the\count15 }}% end createfield markup
+
+% DEFINE " as name of merge command
+\def"#1"{% set quote marks as active macro and delimiter
+ \ifnum\*index=0 \global\*index=\*first\fi
+ \global\toks\*index={#1} % gather argument in token variable
+ \ifnum\*index<\*lastentry % continue gathering process
+ \gdef,{\gdef,{\char'54{}}}% % drop , in data but not in text
+ \global\advance\*index by1 % index by 1
+ \ignorespaces % eliminate spurious spaces
+ \else % end process
+ \global\*index=0
+ \if*check
+ \global\advance\*letternumber by1
+ \immediate\write16{Letter number \the\*letternumber.
+ First Data Field: (\the\toks\*first) . . .
+ Last Data Field: (\the\toks\*lastentry ). }
+ \fi % write to log file for data check
+ \*prnletter % print current data
+ \fi}% end define " as macro name
+
+% Merge letter text file merged for each data record
+\def\*prnletter{% Print the letter text with current name/address fields
+ \catcode`"=12\catcode`@=3 % set " and @ to normal catcodes
+ \newpage % start new page for each letter
+ \setpagenumber{1} % reset page number
+ \inputletter % new page then get letter text file
+ \*savelabels{\*setlabel} % save address label information
+ \catcode`"=\active\catcode`@=\active % reset catcodes for markup defs
+ \relax}% end prnletter markup
+
+% Give filename for letter text
+\def\documentfilename#1{\gdef\inputletter{\input #1 }}%
+
+% Give maillist data filename
+\def\datafilename#1{\input #1 }%
+
+% Print no empty lines with the line break markup
+\def\noemptyspace#1#2{\edef\V{#1}\edef\W{\empty}%
+ \ifx\V\W% do nothing if empty argument
+ \else #1#2\fi% if not empty replace argument with the line break
+}% end no emptyspace
+\let\nes=\noemptyspace % set abbreviation
+
+
+% SAVELABELS ships information for labels to the label file
+\def\*savelabels#1{% Write Mail Label Information to TEXT1$$.LABEL
+ \if*lbfopen % do nothing if file TEXT1$$.LABEL already open
+ \else \immediate\openout\*labels=text1$$.label % open TEXT1$$.LABEL
+ \immediate\write\*labels{\the\*maillblfmt} % write format
+ \global\*lbfopentrue\fi % set open flag
+ \global\advance\LblsAcross by1 % set label postion pointer
+ \ifnum\LblsAcross>\LblsUp \global\LblsAcross=1 \fi
+ \edef\T{% create labels
+ \ifnum\LblsAcross=1 \setbox\FirstUp=\fi % left label
+ \ifnum\LblsAcross=2 \setbox\SecondUp=\fi% center label
+ \ifnum\LblsAcross=3 \setbox\ThirdUp=\fi % right label
+ \vtop to\LblHt{\hsize=\LblWd \leftskip=\LblMat \rightskip=\LblMat
+ \parindent=0pt #1\par\vfil} % make label to label size and width
+ \ifnum\LblsAcross=\LblsUp % print labels
+ \ifcase\LblsUp% case 0, no labels specified
+ \or\setbox\SecondUp=\null \setbox\ThirdUp=\null % one label
+ \or \setbox\ThirdUp=\null % two labels
+ \fi% end case % three label default
+ \line{\box\FirstUp\box\SecondUp\box\ThirdUp\hfil}
+ \fi}% end definition of T
+ \immediate\write\*labels{\T} % write information to file
+}% end save labels definition
+
+% Flushlabels prints any unprinted labels remaining in the markup
+\def\*flushlabels{% print any remaining boxed labels
+ \ifcase\LblsUp % case ), no labels specified
+ \or \setbox\SecondUp=\null \setbox\ThirdUp=\null % one label
+ \or \setbox\ThirdUp=\null % two labels
+ \fi% end case % three label default
+ \immediate\write\*labels{\line{\box\FirstUp\box\SecondUp\box\ThirdUp
+ \hfil}}%
+}% end flush any remaining labels
+
+% Print the label file TEXT1$$.LABEL
+\def\printlabels{\newpage % end last letter
+ \*flushlabels % print any remaining labels
+ \immediate\closeout\*labels % close data file
+ \setpagenumber{99} % labels begin on page 99
+ \input text1$$.label % input the address label data file
+}% end print mailing labels
+
+\def\addresslabelformat#1{\global\*addrlbl={#1}}%
+\*addrlbl={}
+
+\def\*setlabel{\the\*addrlbl}%
+
+% Set format for the mailing labels
+\def\maillabelformat#1{% Sets dimensions and margins of each label
+ \def\labelsetup##1{\global\*maillblfmt={##1}}%
+ \def\numberoflabelsperline##1{\global\LblsUp=##1}%
+ \def\labelheight##1{\global\LblHt=##1}%
+ \def\labelwidth##1{\global\LblWd=##1}%
+ \def\labelmat##1{\global\LblMat=##1}%
+ #1}% end mail label format
+\let\mlfmt=\maillabelformat % set abbreviation
+\catcode`*=12
+
+% Set defaults for the mailing labels
+% Maillabelformat sets the page and label information for mailing labels
+\maillabelformat{\labelsetup{% Sets page and margin settings
+ \raggedbottom
+ \parskip=0pt plus0pt minus0pt
+ \runningheadformat{\bothpages{\line{}}}
+ \pageformat{\topmargin{1in}
+ \bottommargin{0pt}
+ \leftmargin{0pt}
+ \rightmargin{0pt}}% end page format
+ }% end labelsetup
+ \numberoflabelsperline{3}% three labels max
+ \labelheight{1in}
+ \labelwidth{2.75in}
+ \labelmat{.25in}
+}% end mail label format
diff --git a/macros/text1/models/mergetxt.texmodel b/macros/text1/models/mergetxt.texmodel
new file mode 100644
index 0000000000..f2a6f50724
--- /dev/null
+++ b/macros/text1/models/mergetxt.texmodel
@@ -0,0 +1,96 @@
+% MERGE LETTER MODEL, merges address list with letter
+\input mergetxt.texinput % READ TEXT1 merge file format instructions
+%
+% Select special fonts and setting markup used
+% in the merge process here:
+%
+\selectfontset{cm18}{titlefont}{default} % special letter heading font
+\titlepageformat{\titleleadskip{0in}} % no initial skip for letters
+%
+% Run TEXT1 against a file on your disk that includes
+% this model. A set of five sample letters will be printed. The
+% sample letter describes the mail merge setup. Once you have
+% run the model and read the letter, make the necessary
+% modifications to your file. Set the address field names of
+% your address file in the "\fieldnames{name, name, ...}"
+% markup with the data field names of your data base file.
+% Create the "shell letter," your letter, which includes the
+% address field names of your data file, preceded by a "\",
+% i.e., \namea, \nameb, etc. You need use only those data
+% fields necessary in the document and address label, but all
+% fields in your data base file must be given in the field
+% names markup. Specify the name of your letter file
+% "shell letter" with the "\documentfilename{fn.ft}" markup;
+% specify the address data file with the "\addressfile{...}"
+% markup; and then PRINT the file containing your letter merge
+% model to merge the address file with the shell letter and
+% print the label sheet.
+%
+% NOTE: If you create an address file by hand remove the percent sign
+% before the datacheck MARKUP. The number of the letter from the
+% beginning of the merge file data base and the first and last
+% data fields will be listed on the screen and in the log file
+% when data check is active. This will aid you in finding any
+% errors in your data file.
+%
+%\datacheck % SET DATACHECK by removing the "%" symbol
+%
+% Give all data field names in sequence of occurrence
+% (address list names)
+%
+% Format: \fieldnames{name1, name2, name3, ..., namelast}
+
+\fieldnames{title, firstname, lastname, company, address, city,
+ state, zipcode, phone, amount}
+
+% Give file name for document text (letter file that includes
+% the field names for the replaceable text in the document)
+%
+% Format: \documentfilename{filename.filetype}
+
+\documentfilename{mergelet.texmodel}
+
+% WARNING!
+% If you want to modify the address label format, then the
+% \addresslabelformat markup MUST come prior to the
+% \datafilename markup.
+%
+% Format: \addresslabelformat{all fields and markup to create label}
+
+\addresslabelformat{\noindent\title\ \firstname\ \lastname\lbr
+ \company\lbr
+ \address\lbr
+ \city, \state\quad\zipcode}
+
+% Now specify where the address data file is located with
+% the \datafilename markup.
+%
+% Format: \datafilename{filename.filetype}
+
+\datafilename{mergelst.texmodel}
+
+% PRINTING A MAILING LABEL SHEET
+%
+% You may use the "\maillabelformat{}" markup to change
+% the default label format markup. The default label format
+% prints three inch-high labels across the page which can be
+% copied onto a label sheet with an appropriate copy machine.
+%
+% WARNING!
+% The \maillabelformat{} markup must be placed BEFORE the
+% \printlabels markup to change the system defaults.
+%
+% Select the font setto be used in printing the labels.
+
+\tenpt % prints labels with computer modern ten point
+
+\printlabels % print address label sheet for Xerox label sheet
+
+% Labels will be printed beginning on page 99.
+%
+% WARNING!
+% If you have an empty data field occurs in the data being
+% processed within the \addresslabelformat, the field will
+% be printed as a blank space or as a blank line if the
+% field is by itself on the line.
+
diff --git a/macros/text1/models/paper.texinput b/macros/text1/models/paper.texinput
new file mode 100644
index 0000000000..b0baec1743
--- /dev/null
+++ b/macros/text1/models/paper.texinput
@@ -0,0 +1,10 @@
+% Student Paper Layout -- Monospace
+\footnoteformat{\everyfootnote{\rm\pin{.5in}\psk{1\bl}
+ \frenchspacing\singlespace}
+}
+\bibliographyformat{\bibentryformat{\goodbreak\vs{1\bl}
+ \frenchspacing\singlespace\hp\nin}
+ \titleformat{\np\cl{\us\bibtitle}
+ \vs{\bl}
+ }
+}
diff --git a/macros/text1/models/paper.texmodel b/macros/text1/models/paper.texmodel
new file mode 100644
index 0000000000..b5e7907d75
--- /dev/null
+++ b/macros/text1/models/paper.texmodel
@@ -0,0 +1,28 @@
+% Student Paper Layout
+% Last updated on = 10/16/86
+\monospace
+\doublespace
+\input paper.texinput % get paper format
+% Cover Page
+ \vsk{1in plus 2fil minus 1in} % space at top of page
+ \centerlinesbegin % all lines centered on cover page
+ \frenchspacing % no double spaces after periods on cover page
+%%%% insert title (using one or more lines) between dashed lines
+%--------------------------------------------------------------------
+%--------------------------------------------------------------------
+\vs{2in} % space between title and author
+%%%% insert author(s) (using one or more lines) between dashed lines
+%--------------------------------------------------------------------
+%--------------------------------------------------------------------
+\vs{2in} % space between author and course
+%%%% insert course (using one or more lines) between dashed lines
+%--------------------------------------------------------------------
+%--------------------------------------------------------------------
+\vs{.5in} % space between course and date
+%%%% Date follows; \today = current date or type over with desired date
+\today
+ \centerlinesend
+ \vs{2in plus 1 fil minus 1in} %space at bottom of page
+ \newpage %end of title page
+ \setpagenumber{1}\titlepage %no page number on first page of text
+%%%% BEGINNING OF PAPER
diff --git a/macros/text1/models/resume.texinput b/macros/text1/models/resume.texinput
new file mode 100644
index 0000000000..5370817b18
--- /dev/null
+++ b/macros/text1/models/resume.texinput
@@ -0,0 +1,62 @@
+%
+\catcode`*=11
+\if*msp
+\pageformat{\pagelength{11in}
+ \pagewidth{8.5in} % 792pt = 11in; 612pt = 8.5in
+ \topmargin{1in}
+ \bottommargin{1.2in} % 58pt = .8in; 72pt = 1in
+ \leftmargin{1.2in}
+ \rightmargin{1in} % 86pt = 1.2in
+ \bindingadjust{0pt}
+}
+\titlepageformat{\titleleadskip{.15in}
+ \titlefootline{}
+}
+\paragraphskip{1\bl} \paragraphindent{0pt}
+\def\name#1{\par\hfill#1\hfill\gdef\headname{#1}}
+\name{}
+\runningheadformat{\bothpages{\line{
+ \lft{\headname}\ctr{{\it Curriculum Vitae}}
+ \rt{\bd\pagenumber}} \vs{\bl}}
+ }
+\runningfootformat{\bothpages{
+ \vs{\bl}\line{\lft{}\ctr{}\rt{\today}}}
+ }
+% Defaults for the \label markup
+\labelformat{\skipbefore{1\bl}
+ \labelwidth{72pt}
+ \gutter{28pt}
+ \everylabel{\defaultmono\bd}
+ }
+%
+\else
+\pageformat{\pagelength{792pt}
+ \pagewidth{612pt} % 792pt = 11in; 612pt = 8.5in
+ \topmargin{68pt}
+ \bottommargin{52pt} % 58pt = .8in; 72pt = 1in
+ \leftmargin{72pt}
+ \rightmargin{74pt} % 86pt = 1.2in
+}
+\titlepageformat{\titleleadskip{.15in}
+ \titlefootline{}
+}
+\paragraphskip{6pt} \paragraphindent{0pt}
+\def\name#1{\par\hfill#1\hfill\gdef\headname{#1}}
+\name{}
+\runningheadformat{\bothpages{
+ \line{\lft{\headname}\ctr{\it Curriculum Vitae}
+ \rt{\bd\pagenumber}} \vs{\bl}}
+ }
+\runningfootformat{\bothpages{
+ \vs{\bl}\line{\lft{}\ctr{}\rt{\today}}}
+ }
+% Defaults for the \label markup
+\labelformat{\skipbefore{1\bl}
+ \labelwidth{72pt}
+ \gutter{28pt}
+ \everylabel{\bd}
+ }
+\fi
+%
+\catcode`*=12
+%
diff --git a/macros/text1/models/resume.texmodel b/macros/text1/models/resume.texmodel
new file mode 100644
index 0000000000..54588fefed
--- /dev/null
+++ b/macros/text1/models/resume.texmodel
@@ -0,0 +1,69 @@
+% Functional style; titled, justified resume
+%
+%********************* ***RESUME TEXMODEL*** **************************
+%* This TEXMODEL shows a sample resume. To get a copy of this sample, *
+%* simply run this file through TeX as it is. *
+%* When entering your own resume be sure to replace or delete all *
+%* sample text. DO NOT use this model on a printer that only can *
+%* print with \monospace. *
+%************************************************************************
+% RESUME START
+\input resume.texinput
+\cl{\bd RESUME}
+\par
+\name{Orville T. Game}
+\cl{\it 9987 NE Oak St., Arbor Bay, CK 58924}
+\vs{1\bl}
+\label{Objective}
+Seeking position with manufacturing firm which will provide
+oportunity for advancement into personel-related position.
+\label{Education}
+\it Doctor of Hagiology, \rm Medical subterfuge\rt{1983.}\lbr
+Beasley College of Performing Arts, Pullman, CA
+
+\label{ }Completed courses in economic manipulation,
+John\-ny Carson analysis, and unpadded scrimmage.
+Special courses in radar sabotage, misspelling, and
+stream of consciousness reporting of news.
+Completed graduate courses in anthropology, anthrometry, anthrosophy,
+anthromorphism, and camp counselling.
+Committee: Michael Farnberger, Casper Weinberger, Bill Cheeseburger,
+and Warren Burgher.
+GPA: 1.75. 40\%\ financed by drug sales; 60\%\ by gambling.
+
+\label{}\it Master of Arts, \rm Philosophy\rt{1983.}\lbr
+University of Idaho, Moscow, ID
+
+\label{}Completed courses in philosophy, filo-making, fillerupedness,
+filling station technology, and filler.
+Completed graduate courses in philosophy, philology,
+philo\-lo\-gram\-matry, phylogeny, filliness, and phil\-i\-stines.
+Special Committee: Phil Marquette, Phillip Petroleum, Philo Bellows,
+and Phyllus Diller.
+GPA: 0.63. 50\%\ financed by bribes, 50\%\ by unpaid loans.
+\label{Related Experience}
+\it Consultant, \rm Computing Service Center\rt{1985-}\lbr
+Washington State University, Pullman, WA 99164-1220
+\par
+\label{}Direct acquisition of antique typesetting machinery and old
+metal sculptings for garden area.
+In charge of coffee for management.
+Qualified to exterminate bugs in really awkward and tiresome
+programs.
+Training to collect and recycle aluminum cans for distribution
+to East coast distilleries.
+\label{Other Experience}
+\it Research Associate-Biowarfare, \rm Mars Institute\rt{1984-}\lbr
+P.O. Box 9, Pullman, WA 99163
+\par
+\label{}Participate in studies on neutralizing liberal demo\-crats with
+nuclear warheads (low radiation, high neutron count).
+Analyze patterns of ideological disarray for potential weakness.
+Write articles on normative aspects of unethical behavior.
+Keep memoirs of same for distribution to publishers.
+\label{Awards}
+ Special award for boot-licking, 1982.
+Outstanding Stand Out, 1983.
+\label{Activities}
+ Drama Club, 1980--82; Alpha Kappa Kappa Fraternity
+\label{References} On request.
diff --git a/macros/text1/models/thesis.texinput b/macros/text1/models/thesis.texinput
new file mode 100644
index 0000000000..2dfd40e5c0
--- /dev/null
+++ b/macros/text1/models/thesis.texinput
@@ -0,0 +1,159 @@
+% WSU graduate school thesis requirements.
+\paragraphindent{36pt}
+\paragraphskip{12pt plus 2pt minus 1pt}
+\raggedbottom
+%
+%
+\catcode`*=11
+\if*msp
+\pageformat{\pagelength{11in}
+ \pagewidth{8.5in}
+ \topmargin{1.2in}
+ \bottommargin{1.2in}
+ \leftmargin{1.2in}
+ \rightmargin{1in}
+ \bindingadjust{0in}
+}
+\titlepageformat{\titleleadskip{1.25in}
+ \titlefootline{}
+}
+% Default values for the \chapter markup
+\chapterformat{\numberingstyle{1}
+ \titleformat{\dumpinsertseject
+ \centerline{\bd Chapter \chapternumber}
+ \centerline{\bd\chaptertitle}
+ \vs{1\bl}
+ \setsubheadanumber{0}
+ \setsubheadbnumber{0}
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}
+ }% end titleformat
+ \incontents{yes}
+}% end chapter format
+% Default values for the \subheada markup
+\subheadaformat{\numberingstyle{1}
+ \titleformat{\removelastskip\goodbreak\vs{2\bl}
+ \twelvept\bd\nin\subheadatitle\par\nobreak
+ \setsubheadbnumber{0}
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}
+ }% end titleformat
+ \incontents{yes}
+}% end subheadaformat markup
+% Default values for the \subheadb markup
+\subheadbformat{\numberingstyle{1}
+ \titleformat{\removelastskip\goodbreak\vs{2\bl}
+ \twelvept\it\nin\subheadbtitle\par\nobreak
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}
+ }% end titleformat
+ \incontents{yes}
+}% end subheadbformat markup
+% Default values for the \preface markup
+\prefaceformat{%
+ \titleformat{\dumpinsertseject
+ \centerline{\bd\prefacetitle}
+ \vs{1\bl}
+ \setsubheadanumber{0}
+ \setsubheadbnumber{0}
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}
+ }% end titleformat
+ \incontents{yes}
+}
+\paragraphskip{12pt}
+\asisformat{\skipbefore{0pt}
+ \everyasis{\rm\ssp\leftindent{36pt}}
+ \skipafter{0pt}}
+%
+\blockquoteformat{\skipbefore{0pt}
+ \everyblockquote{\rm\ssp\pin{.3in}\psk{12pt}
+ \leftindent{36pt} \rightindent{36pt}}
+ \skipafter{0pt}}
+%
+\else
+\pageformat{\pagelength{11in}
+ \pagewidth{8.5in}
+ \topmargin{1.2in}
+ \bottommargin{1in}
+ \leftmargin{1.3in}
+ \rightmargin{1in}
+ \bindingadjust{0in}
+}
+\titlepageformat{\titleleadskip{1.25in}
+ \titlefootline{}
+}
+% Default values for the \subheada markup
+\subheadaformat{\numberingstyle{1}
+ \titleformat{\removelastskip\goodbreak\vs{2\bl}
+ \twelvept\bd\nin\subheadatitle\par\nobreak
+ \setsubheadbnumber{0}
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}
+ }% end titleformat
+ \incontents{yes}
+}% end subheadaformat markup
+% Default values for the \subheadb markup
+\subheadbformat{\numberingstyle{1}
+ \titleformat{\removelastskip\goodbreak\vs{2\bl}
+ \twelvept\it\nin\subheadbtitle\par\nobreak
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}
+ }% end titleformat
+ \incontents{yes}
+}% end subheadbformat markup
+\asisformat{\skipbefore{0pt}
+ \everyasis{\tenpt\ssp\leftindent{36pt}}
+ \skipafter{0pt}}
+%
+\blockquoteformat{\skipbefore{0pt}
+ \everyblockquote{\rm\ssp\pin{24pt}\psk{6pt}
+ \leftindent{36pt} \rightindent{36pt}}
+ \skipafter{0pt}}
+%
+\footnoteformat{\footnotedivider{144pt} % 144pt = 2in
+ \skipafterdivider{2.6pt}
+ \textreferenceposition{up}
+ \textreferenceplacement{after}
+ \textreferencefont{\tenpt}
+ \textreferencestyle{1}
+ \notereferenceposition{down}
+ \notereferencefont{\tenpt}
+ \notereferencestyle{1.}
+ \notereferencegutter{1em}
+ \everyfootnote{\tenpt\ssp\pin{12pt}\psk{6pt}\lin{6pt}}
+}
+%
+\endnoteformat{\skipbefore{4pt}
+ \textreferenceposition{down}
+ \textreferencefont{\rm}
+ \textreferencestyle{[1]}
+ \notereferenceposition{down}
+ \notereferencefont{\rm}
+ \notereferencestyle{1.}
+ \notereferencegutter{1em} % 1em = 12pt in a 12pt font
+ \everyendnote{\rm\pin{12pt}\psk{6pt}\lin{0pt}}
+}
+\fi
+%
+\def\copyrt{\if*msp{}\else
+ {{$\copyright$}}\fi}
+%
+\newcount\P
+\def\signatures#1#2{\par\vs{54pt}\P=#1
+ \ifnum\P>50 \P=50
+ \message{Number of signature lines will be limited to 50}\fi
+ \advance\P by-1
+ \hbox{\hs{3in}\vrule width3in height.4pt}
+ \hbox{\hs{3in}\hbox to 3in{\hfill #2 \hfill}}
+ \vs{36pt}
+ \loop\ifnum\P>0
+ \hbox{\hs{3in}\vrule width 3in height.4pt}
+ \vs{48pt}
+ \advance\P by-1\repeat
+ }%
+%
+\tableofcontentsformat{%
+ \toctitle{\ssp\centerline{\bd Table of Contents}
+ \vs{\bl}}}
+\catcode`*=12
diff --git a/macros/text1/models/thesis.texmodel b/macros/text1/models/thesis.texmodel
new file mode 100644
index 0000000000..59fc7c241f
--- /dev/null
+++ b/macros/text1/models/thesis.texmodel
@@ -0,0 +1,139 @@
+% WSU Graduate School Thesis Requirements
+% Last updated on = 6/15/87
+%********************* ***THESIS TEXMODEL*** **************************
+%* This TEXMODEL shows some sections of a sample thesis. For a printout *
+%* of a sample thesis, simply run this file through TeX as it is. *
+%* When entering your own thesis, be sure to replace or delete all *
+%* sample text. If you are printing your thesis on a monospaced printer,*
+%* the \monospace command must be activated by removing the percent *
+%* sign preceding it. *
+%************************************************************************
+% THESIS START
+
+% ***TITLE PAGE***
+
+%\monospace
+\input thesis.texinput
+\justify \singlespace
+\setpagenumber{-1}
+\centerlinesbegin
+\bd
+A PHENOMENOLOGICAL THEORY OF
+\vs{12pt}
+CROSS-CULTURAL AESTHETICS
+\vs{1.25in}
+\rm
+By
+\vs{12pt}
+GEORG MACQUET
+\vs{1.25in}
+A thesis submitted in partial fulfillment of
+the requirements for the degree of
+\vs{12pt}
+MASTER OF ARTS IN ANTHROPOLOGY
+\vs{24pt}
+WASHINGTON STATE UNIVERSITY
+Department of Anthropology
+\vs{12pt}
+December 1986
+\vs{.8in}
+\copyrt Copyright by GEORG MACQUET, 1986
+All Rights Reserved
+\centerlinesend %DO NOT DELETE THIS LINE UNLESS LINE 19 IS DELETED
+% ***COPYRIGHT PAGE***
+\np
+\titlepage
+\vsk{7in}
+\centerlinesbegin
+\copyrt Copyright by GEORG MACQUET, 1986
+All Rights Reserved
+\centerlinesend %DO NOT DELETE THIS LINE UNLESS LINE 47 IS DELETED
+% ***SIGNATURE PAGE***
+\newpage
+\setpagenumber{-2}
+\rightragged
+\vsk{2.8in}
+\doublespace
+\nin To the Faculty of Washington State University:
+\par
+The members of the Committee appointed to examine the thesis of
+GEORG MACQUET find it satisfactory and recommend that it be
+accepted.
+%
+%******************************************************************
+%* The \signatures command draws the number of lines specified *
+%* in the first parameter for the committee members' signatures. *
+%* The first parameter may be any number, but if it is larger *
+%* than 5, spacing must be changed to make it fit on one page. *
+%* The second parameter of the \signatures command will be *
+%* centered as a title under the first line. *
+%******************************************************************
+%
+\singlespace
+\signatures{4}{Chairperson}
+\doublespace
+% ***ACKNOWLEDGE***
+\newpage
+\justify
+\preface{Acknowledgements}
+I would like to thank Clarke Moustakos and Helen Burdeman
+for their help in advising me to study Anthropology at ...
+% ***ABSTRACT PAGE***
+\newpage
+\vsk{.6in}
+\centerlinesbegin
+\bd
+A PHENOMENOLOGICAL THEORY OF
+\bd
+CROSS-CULTURAL AESTHETICS
+\rm
+ABSTRACT
+\putincontents1{\nin Abstract\leader\pagenumber}
+\vs{12pt}
+\singlespace
+by Georg Macquet, M.A.
+Washington State University
+December 1986
+\centerlinesend %DO NOT DELETE THIS LINE UNLESS LINE 84 IS DELETED
+\doublespace
+\noindent Chairperson: V.~L.~Nabokov
+\par
+Aesthetic phenomena can be defined from an anthropological perspective.
+Anthropology is empirical; therefore, aesthetic phenomena must also be
+defined empirically to be identified by the techniques of...
+\par
+%********************** MAIN TEXT OF THESIS *************************
+%* This ends the preliminary pages of the thesis and begins the main *
+%* text. The remaining sections of the thesis may be entered using any *
+%* or all standard TeXT1 markup commands, including \autofootnote, *
+%* \bibliography, \autoendnote, \subheada, etc. For more information *
+%* on the standard TeXT1 markup commands see the "TeXT1 Users Guide *
+%* (S-522)," or the "TeXT1 Reference Manual (S-523)." *
+%************************************************************************
+\chapter{Introduction}
+\setpagenumber{1}
+The original perspective of anthropology can contribute to a comprehension of
+art. Observational criteria are needed to identify aesthetic phenomena
+uniquely, and anthropology \el3
+\sha{Art as Product}
+In the past, the arts have been studied primarily as products in anthropology.
+But the product must be created by human beings who behave in certain ways. In
+Merriam's words:
+
+\bqb Through the humanistic elements of his culture, man seems to be making
+pointed commentary on how he lives; his social life in itself seems to bring
+about conditions under which he is unable to restrain himself from commenting
+upon himself\el3
+\bqe
+
+\sha{Styles of Representation}
+Representations are images that refer to the visual appearance of a thing.
+Gombrich's theory\afn{wherin a representation is not a symbol} is not
+appropriate in this context. Indeed, A.P. Meriam (1971)\aen{This is the only
+edition with the full analysis of semantic theories applied to oriental
+cultures.} states that\el3
+\newpage
+\cl{\bd Notes}
+\printendnotes
+\toc{-5}
+\bye
diff --git a/macros/text1/pc/blocks/appendix.blk b/macros/text1/pc/blocks/appendix.blk
new file mode 100644
index 0000000000..0000bd5a39
--- /dev/null
+++ b/macros/text1/pc/blocks/appendix.blk
@@ -0,0 +1,16 @@
+% Default values for the \appendix markup
+\appendixformat{\numberingstyle{A}
+ \titleformat{\dumpinsertseject
+ \centerline{\twelvept\bold Appendix \appendixnumber}
+ \centerline{\twelvept\bold\appendixtitle}
+ \vs{1\bl}
+ \setchapternumber{0}
+ \setsubheadanumber{0}
+ \setsubheadbnumber{0}
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}
+ \setfigurenumber{0}
+ \settablenumber{0}
+ }% end titleformat
+ \incontents{yes}
+}% end appendix format
diff --git a/macros/text1/pc/blocks/asism.blk b/macros/text1/pc/blocks/asism.blk
new file mode 100644
index 0000000000..c5ea6006c4
--- /dev/null
+++ b/macros/text1/pc/blocks/asism.blk
@@ -0,0 +1,5 @@
+% Default values for \asisbegin in \monospace
+\asisformat{\skipbefore{1\bl}
+ \everyasis{\leftindent{0pt}}
+ \skipafter{1\bl}
+}% end as is format
diff --git a/macros/text1/pc/blocks/asisp.blk b/macros/text1/pc/blocks/asisp.blk
new file mode 100644
index 0000000000..c9a65c3860
--- /dev/null
+++ b/macros/text1/pc/blocks/asisp.blk
@@ -0,0 +1,5 @@
+% Default values for the \asisbegin markup
+\asisformat{\skipbefore{6pt}
+ \everyasis{\leftindent{0pt}}
+ \skipafter{6pt}
+}% end as is format
diff --git a/macros/text1/pc/blocks/bibliog.blk b/macros/text1/pc/blocks/bibliog.blk
new file mode 100644
index 0000000000..691cee2263
--- /dev/null
+++ b/macros/text1/pc/blocks/bibliog.blk
@@ -0,0 +1,10 @@
+% Default values for the \bibliography markup
+\bibliographyformat{%
+ \titleformat{\dumpinsertseject
+ \centerline{\twelvept\bd\bibtitle}
+ \vs{\bl}
+ }% end titleformat
+ \everybibentry{\vs{1\bl}\goodbreak\hp\nin}
+ \sameauthorrulesize{width 3em height .6ex depth -.5ex}
+ \incontents{yes}
+}% end bibliographyformat markup
diff --git a/macros/text1/pc/blocks/bquotem.blk b/macros/text1/pc/blocks/bquotem.blk
new file mode 100644
index 0000000000..87d2605a8a
--- /dev/null
+++ b/macros/text1/pc/blocks/bquotem.blk
@@ -0,0 +1,7 @@
+% Defaults for \blockquotebegin in \monospace
+\blockquoteformat{\skipbefore{1\bl}
+ \everyblockquote{\rm\leftindent{36pt} % 36pt = .5in
+ \rightindent{36pt}
+ }
+ \skipafter{1\bl}
+}% end monospace block quote begin format
diff --git a/macros/text1/pc/blocks/bquotep.blk b/macros/text1/pc/blocks/bquotep.blk
new file mode 100644
index 0000000000..4fdf50b4c9
--- /dev/null
+++ b/macros/text1/pc/blocks/bquotep.blk
@@ -0,0 +1,7 @@
+% Defaults for the \blockquotebegin markup
+\blockquoteformat{\skipbefore{6pt}
+ \everyblockquote{\tenpt\leftindent{24pt} % 24pt = .3in
+ \rightindent{24pt}
+ }
+ \skipafter{6pt}
+}% end block quote begin format
diff --git a/macros/text1/pc/blocks/chapter.blk b/macros/text1/pc/blocks/chapter.blk
new file mode 100644
index 0000000000..9796e18beb
--- /dev/null
+++ b/macros/text1/pc/blocks/chapter.blk
@@ -0,0 +1,13 @@
+% Default values for the \chapter markup
+\chapterformat{\numberingstyle{1}
+ \titleformat{\dumpinsertseject
+ \centerline{\twelvept\bd Chapter \chapternumber}
+ \centerline{\twelvept\bd\chaptertitle}
+ \vs{1\bl}
+ \setsubheadanumber{0}
+ \setsubheadbnumber{0}
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}
+ }% end titleformat
+ \incontents{yes}
+}% end chapter format
diff --git a/macros/text1/pc/blocks/contents.blk b/macros/text1/pc/blocks/contents.blk
new file mode 100644
index 0000000000..45fa4e571d
--- /dev/null
+++ b/macros/text1/pc/blocks/contents.blk
@@ -0,0 +1,35 @@
+% Defaults when using the \tableofcontents markup
+\tableofcontentsformat{%
+ \toctitle{\centerline{\bd Table of Contents}
+ \vs{1\bl}}
+ \prefacetocformat{\nin\prefacetitle\leader\pagenumber}
+ \parttocformat{\vs{1\bl}
+ \centerline{Part \partnumber}
+ \centerline{\parttitle}
+ \vs{1\bl}
+ \nin Part \partnumber \leader \pagenumber}
+ \continuechapter{no}
+ \chaptertocformat{\hangingchapternumber \chaptertitle \leader \pagenumber}
+ \hangingchapterindent{.25in}
+ \appendixtocformat{\hangingappendixnumber \appendixtitle \leader \pn}
+ \hangingappendixindent{.25in}
+ \subheadatocformat{\leftindent{.5in}\nin
+ \subheadatitle \leader \pagenumber}
+ \subheadbtocformat{\leftindent{1in}\nin
+ \subheadbtitle \leader \pagenumber}
+ \subheadctocformat{\leftindent{1.5in}\nin
+ \subheadctitle \leader \pagenumber}
+ \subheaddtocformat{\leftindent{2in}\nin
+ \subheaddtitle \leader \pagenumber}
+ \bibliographytocformat{\nin\bibtitle \leader \pagenumber}
+ \figuretoctitle{\newpage
+ \centerline{\bd List of Figures}
+ \line{Figure \rt{Page}}}
+ \figuretocformat{\hangingnumber{\figurenumber.}\figuretitle\leader\pagenumber}
+ \hangingfigureindent{.25in}
+ \tabletoctitle{\newpage
+ \centerline{\bd List of Tables}
+ \line{Table \rt{Page}}}
+ \tabletocformat{\hangingnumber{\tablenumber.}\tabletitle\leader\pagenumber}
+ \hangingtableindent{.25in}
+}
diff --git a/macros/text1/pc/blocks/enotem.blk b/macros/text1/pc/blocks/enotem.blk
new file mode 100644
index 0000000000..2716defe7a
--- /dev/null
+++ b/macros/text1/pc/blocks/enotem.blk
@@ -0,0 +1,11 @@
+% Defaults for \autoendnote with \monospace
+\endnoteformat{\skipbefore{0\bl}
+ \textreferenceposition{down}
+ \textreferencefont{\rm}
+ \textreferencestyle{[1]}
+ \notereferenceposition{down}
+ \notereferencefont{\rm}
+ \notereferencestyle{1.}
+ \notereferencegutter{1em} % 1em = 12pt in a 12pt font
+ \everyendnote{\rm\pin{0pt}\lin{1.2em}}
+}
diff --git a/macros/text1/pc/blocks/enotep.blk b/macros/text1/pc/blocks/enotep.blk
new file mode 100644
index 0000000000..4f2b55d4e1
--- /dev/null
+++ b/macros/text1/pc/blocks/enotep.blk
@@ -0,0 +1,11 @@
+% Default values for the \autoendnote markup
+\endnoteformat{\skipbefore{4pt}
+ \textreferenceposition{down}
+ \textreferencefont{\tenpt}
+ \textreferencestyle{[1]}
+ \notereferenceposition{down}
+ \notereferencefont{\tenpt}
+ \notereferencestyle{1.}
+ \notereferencegutter{1em} % 1em = 12pt in a 12pt font
+ \everyendnote{\tenpt\pin{0pt}\lin{1.2em}}
+}% end endnoteformat markup
diff --git a/macros/text1/pc/blocks/figurem.blk b/macros/text1/pc/blocks/figurem.blk
new file mode 100644
index 0000000000..9d7263c218
--- /dev/null
+++ b/macros/text1/pc/blocks/figurem.blk
@@ -0,0 +1,8 @@
+% Defaults for \figure with \monospace
+\figureformat{\skipbefore{1\bl}
+ \position{\float}
+ \titleformat{\bqb\hp
+ \bd Figure \figurenumber. \rm\figuretitle\bqe}
+ \incontents{yes}
+ \skipafter{1\bl}
+}% End figure format markup
diff --git a/macros/text1/pc/blocks/figurep.blk b/macros/text1/pc/blocks/figurep.blk
new file mode 100644
index 0000000000..e2131696ef
--- /dev/null
+++ b/macros/text1/pc/blocks/figurep.blk
@@ -0,0 +1,8 @@
+% Defaults for the \figure markup
+\figureformat{\skipbefore{1\bl}
+ \position{\float}
+ \titleformat{\bqb\hp\tenpt
+ \bd Figure \figurenumber. \rm\figuretitle\bqe}
+ \incontents{yes}
+ \skipafter{1\bl}
+}% End figure format markup
diff --git a/macros/text1/pc/blocks/fnotem.blk b/macros/text1/pc/blocks/fnotem.blk
new file mode 100644
index 0000000000..a3d5840598
--- /dev/null
+++ b/macros/text1/pc/blocks/fnotem.blk
@@ -0,0 +1,14 @@
+% Defaults for \autofootnote with \monospace
+\footnoteformat{\skipbeforedivider{12pt}
+ \skipafterdivider{2.6pt}
+ \footnotedivider{144pt} % 144pt = 2in
+ \textreferenceposition{down}
+ \textreferenceplacement{after}
+ \textreferencefont{\rm}
+ \textreferencestyle{(1)}
+ \notereferenceposition{down}
+ \notereferencefont{\rm}
+ \notereferencestyle{1.}
+ \notereferencegutter{1em}
+ \everyfootnote{\rm\pin{.5in}\psk{.5in}\lin{0pt}\rin{0pt}}
+}
diff --git a/macros/text1/pc/blocks/fnotep.blk b/macros/text1/pc/blocks/fnotep.blk
new file mode 100644
index 0000000000..97fb1ddf0c
--- /dev/null
+++ b/macros/text1/pc/blocks/fnotep.blk
@@ -0,0 +1,14 @@
+% Defaults for the \autofootnote markup
+\footnoteformat{\skipbeforedivider{12pt}
+ \skipafterdivider{2.6pt}
+ \footnotedivider{144pt} % 144pt = 2in
+ \textreferenceposition{up}
+ \textreferenceplacement{after}
+ \textreferencefont{\tenpt}
+ \textreferencestyle{1}
+ \notereferenceposition{down}
+ \notereferencefont{\tenpt}
+ \notereferencestyle{1.}
+ \notereferencegutter{1em}
+ \everyfootnote{\tenpt\pin{20pt}\lin{0pt}}
+}
diff --git a/macros/text1/pc/blocks/fontm.blk b/macros/text1/pc/blocks/fontm.blk
new file mode 100644
index 0000000000..5f8455a998
--- /dev/null
+++ b/macros/text1/pc/blocks/fontm.blk
@@ -0,0 +1,6 @@
+% Default values for the \monospace markup
+\monospace
+ % You may change the default monspace fonts by removing the % symbol
+ % from the \selectfontset and \defaultmono\rm markups below.
+% \selectfontset{monofont}{defaultmono}{default} %
+% \defaultmono\rm
diff --git a/macros/text1/pc/blocks/fontp.blk b/macros/text1/pc/blocks/fontp.blk
new file mode 100644
index 0000000000..5393d563eb
--- /dev/null
+++ b/macros/text1/pc/blocks/fontp.blk
@@ -0,0 +1,6 @@
+% Default values for the proportional space fonts
+\selectfontset{cm12}{twelvept}{default} % default twelve point set
+\selectfontset{cm10}{tenpt}{default} % alternate ten point set
+\twelvept % default font specification
+\selectmathset{cm97m}{mathdefault} % default math font set
+\mathdefault % default math specification
diff --git a/macros/text1/pc/blocks/index.blk b/macros/text1/pc/blocks/index.blk
new file mode 100644
index 0000000000..684c4407d1
--- /dev/null
+++ b/macros/text1/pc/blocks/index.blk
@@ -0,0 +1,8 @@
+\indexformat1{\respectcase{no}
+ \style{indent}
+ \leadering{no}
+ \everyletterbreak{\vs{1\bl}}
+ \indentsubentry1{1em}
+ \indentsubentry2{2em}
+ \everyhang{1.5em}
+ \everyindex{\tenpt}}
diff --git a/macros/text1/pc/blocks/label.blk b/macros/text1/pc/blocks/label.blk
new file mode 100644
index 0000000000..d4da9e3063
--- /dev/null
+++ b/macros/text1/pc/blocks/label.blk
@@ -0,0 +1,6 @@
+% Defaults for the \label markup
+\labelformat{\skipbefore{1\bl}
+ \labelwidth{72pt}
+ \gutter{1em}
+ \everylabel{\rm}
+ }
diff --git a/macros/text1/pc/blocks/lists.blk b/macros/text1/pc/blocks/lists.blk
new file mode 100644
index 0000000000..874be36899
--- /dev/null
+++ b/macros/text1/pc/blocks/lists.blk
@@ -0,0 +1,13 @@
+% Defaults for \listbegin, \listlevel, and \bullet
+\listformat{\skipbefore{0\bl}
+ \liststyle{1.,a.,i.,1),a),i),(1)}
+ \everylistlevel1{\rm\lin{36pt}\gutter{1em}} % 36pt = .5in
+ \everylistlevel2{\rm\lin{58pt}\gutter{1em}} % 58pt = .8in
+ \everylistlevel3{\rm\lin{79pt}\gutter{1em}} % 79pt = 1.1in
+ \everylistlevel4{\rm\lin{101pt}\gutter{1em}} % 101pt = 1.4in
+ \everylistlevel5{\rm\lin{122pt}\gutter{1em}} % 122pt = 1.7in
+ \everylistlevel6{\rm\lin{144pt}\gutter{1em}} % 144pt = 2.0in
+ \everylistlevel7{\rm\lin{166pt}\gutter{1em}} % 166pt = 2.3in
+ \everybullet{\rm\lin{+36pt}\gutter{1em}} % 36pt = .5in
+ \skipafter{0\bl}
+}
diff --git a/macros/text1/pc/blocks/maillbls.blk b/macros/text1/pc/blocks/maillbls.blk
new file mode 100644
index 0000000000..145fd0667f
--- /dev/null
+++ b/macros/text1/pc/blocks/maillbls.blk
@@ -0,0 +1,17 @@
+% Set format for mail labels with the MERGE LETTER MODEL
+
+% Maillabelformat sets the page and label information for mailing labels
+\maillabelformat{\labelsetup{% Sets page and margin settings
+ \newpage % start labels on a new page
+ \notitlepage % labels not started on a title page
+ \runningheadformat{\bothpages{\line{}}} % no page #s
+ \pageformat{\topmargin{1in} % new page dimensions
+ \bottommargin{0pt}
+ \leftmargin{0pt}
+ \rightmargin{0pt}}% end page format
+ }% end labelsetup
+ \numberoflabelsperline{3} % three labels per line max
+ \labelheight{1in} % each label 1 inch high
+ \labelwidth{2.75in} % each label 2.75 inches wide
+ \labelmat{.25in} % margin to text is .25 inches
+}% end mail label format
diff --git a/macros/text1/pc/blocks/marnote.blk b/macros/text1/pc/blocks/marnote.blk
new file mode 100644
index 0000000000..ded8cac18a
--- /dev/null
+++ b/macros/text1/pc/blocks/marnote.blk
@@ -0,0 +1,6 @@
+% Default values for the \marginnote markup
+\marginnoteformat{\position{left}
+ \notewidth{54pt}
+ \notegutter{6pt}
+ \everymarginnote{\tenpt\rr}
+}% end margin note format
diff --git a/macros/text1/pc/blocks/multicol.blk b/macros/text1/pc/blocks/multicol.blk
new file mode 100644
index 0000000000..81b2522cdb
--- /dev/null
+++ b/macros/text1/pc/blocks/multicol.blk
@@ -0,0 +1,10 @@
+% Default multiple column formats
+\multicolumnformat{
+ \twocolumnwidth{.48\galleywidth} % approximately 3 inches
+ \threecolumnwidth{.31\galleywidth} % approximately 2 inches
+ \twocolumngutter{.04\galleywidth} % approximately .2 inches
+ \threecolumngutter{.035\galleywidth}
+ \columnrulewidth{0.0pt}
+ \skipbefore{6pt plus3pt minus2pt} % flexible format only
+ \skipafter{6pt plus3pt minus2pt} % flexible format only
+ }
diff --git a/macros/text1/pc/blocks/pagem.blk b/macros/text1/pc/blocks/pagem.blk
new file mode 100644
index 0000000000..99694f4721
--- /dev/null
+++ b/macros/text1/pc/blocks/pagem.blk
@@ -0,0 +1,11 @@
+% Default page dimensions and margins
+\pageformat{\pagelength{11in} % 792pt = 11in
+ \pagewidth{8.5in} % 612pt = 8.5in
+ \topmargin{1in} % 72pt = 1in
+ \bottommargin{1in}
+ \leftmargin{1.2in} % 86pt = 1.2in
+ \rightmargin{1in}
+ \bindingadjust{0in} % none
+}% end page format
+\raggedbottom % allows the bottom line to fluctuate up
+ % and down a couple lines
diff --git a/macros/text1/pc/blocks/pagep.blk b/macros/text1/pc/blocks/pagep.blk
new file mode 100644
index 0000000000..1c521e133d
--- /dev/null
+++ b/macros/text1/pc/blocks/pagep.blk
@@ -0,0 +1,11 @@
+% Default page dimensions and margins
+\pageformat{\pagelength{11in} % 792pt = 11in
+ \pagewidth{8.5in} % 612pt = 8.5in
+ \topmargin{1in} % 72pt = 1in
+ \bottommargin{1in}
+ \leftmargin{1.2in} % 86pt = 1.2in
+ \rightmargin{1in}
+ \bindingadjust{0in}
+}% end pageformat
+\normalbottom % text height will be the same for each
+ % page. Bottom lines will be even.
diff --git a/macros/text1/pc/blocks/parm.blk b/macros/text1/pc/blocks/parm.blk
new file mode 100644
index 0000000000..2d9c676951
--- /dev/null
+++ b/macros/text1/pc/blocks/parm.blk
@@ -0,0 +1,6 @@
+% Default paragraph specifications for monospace fonts
+\paragraphindent{36pt} % indent for the first line of a paragraph
+\paragraphskip{0pt} % distance between paragraphs
+\justify
+\hyphenon % hyphenation either on (\hyphenon)
+ % or off (\hyphenoff)
diff --git a/macros/text1/pc/blocks/parp.blk b/macros/text1/pc/blocks/parp.blk
new file mode 100644
index 0000000000..b31df93253
--- /dev/null
+++ b/macros/text1/pc/blocks/parp.blk
@@ -0,0 +1,11 @@
+% Default paragraph specifications for proportional fonts
+\paragraphindent{24pt} % indent for first line of text
+\paragraphskip{0pt plus 3pt minus 0pt} % Distance skipped between
+ % paragraphs. Plus and minus refer to space
+ % that may be added or subtracted from the
+ % initial setting (0pt) to make the lines
+ % even at the bottom of the page.
+
+\justify % all text will be justified
+\hyphenon % hyphenation either on (\hyphenon)
+ % or off (\hyphenoff)
diff --git a/macros/text1/pc/blocks/part.blk b/macros/text1/pc/blocks/part.blk
new file mode 100644
index 0000000000..68545f85ba
--- /dev/null
+++ b/macros/text1/pc/blocks/part.blk
@@ -0,0 +1,20 @@
+% Default values for the \part markup
+\partformat{\numberingstyle{1}
+ \titleformat{\dumpinsertseject\titlepage
+ \hrule height 0pt depth 0pt
+ \vfil % Produces a half title page
+ \centerline{\twelvept\bold Part \partnumber}
+ \centerline{\twelvept\bold \parttitle}
+ \newpage
+ \setchapternumber{0}
+ \setsubheadanumber{0}
+ \setsubheadbnumber{0}
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}
+ \setfootnotenumber{0}
+ \setendnotenumber{0}
+ \setfigurenumber{0}
+ \settablenumber{0}
+ }% end titleformat
+ \incontents{yes}
+}% end part format
diff --git a/macros/text1/pc/blocks/preface.blk b/macros/text1/pc/blocks/preface.blk
new file mode 100644
index 0000000000..3c44e37a02
--- /dev/null
+++ b/macros/text1/pc/blocks/preface.blk
@@ -0,0 +1,12 @@
+% Default values for the \preface markup
+\prefaceformat{%
+ \titleformat{\dumpinsertseject
+ \centerline{\twelvept\bd\prefacetitle}
+ \vs{1\bl}
+ \setsubheadanumber{0}
+ \setsubheadbnumber{0}
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}
+ }% end titleformat
+ \incontents{yes}
+}% end preface format
diff --git a/macros/text1/pc/blocks/runfoot.blk b/macros/text1/pc/blocks/runfoot.blk
new file mode 100644
index 0000000000..8aecd0311a
--- /dev/null
+++ b/macros/text1/pc/blocks/runfoot.blk
@@ -0,0 +1,6 @@
+% Default values for the running foot title
+\runningfootformat{%
+ \bothpages{\vs{1\bl}
+ \line{\twelvept\lft{}\ctr{}\rt{}}
+ }% end bothpages
+}% end runningfootformat markup
diff --git a/macros/text1/pc/blocks/runhead.blk b/macros/text1/pc/blocks/runhead.blk
new file mode 100644
index 0000000000..c88e8758cb
--- /dev/null
+++ b/macros/text1/pc/blocks/runhead.blk
@@ -0,0 +1,6 @@
+% Default values for the running head title
+\runningheadformat{%
+ \bothpages{\line{\twelvept\lft{}\ctr{}\rt{\pagenumber}}
+ \vs{1\bl}
+ }% end bothpages
+}% end runningheadformat markup
diff --git a/macros/text1/pc/blocks/subheada.blk b/macros/text1/pc/blocks/subheada.blk
new file mode 100644
index 0000000000..ce0c4ab5fd
--- /dev/null
+++ b/macros/text1/pc/blocks/subheada.blk
@@ -0,0 +1,11 @@
+% Default values for the \subheada markup
+\subheadaformat{\numberingstyle{1}
+ \titleformat{\removelastskip\goodbreak\vs{2\bl}
+ \twelvept\bd\nin\subheadatitle\par\nobreak
+ \vs{1\bl}\nobreak
+ \setsubheadbnumber{0}
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}
+ }% end titleformat
+ \incontents{yes}
+}% end subheadaformat markup
diff --git a/macros/text1/pc/blocks/subheadb.blk b/macros/text1/pc/blocks/subheadb.blk
new file mode 100644
index 0000000000..e3089ad1c4
--- /dev/null
+++ b/macros/text1/pc/blocks/subheadb.blk
@@ -0,0 +1,10 @@
+% Default values for the \subheadb markup
+\subheadbformat{\numberingstyle{1}
+ \titleformat{\removelastskip\goodbreak\vs{2\bl}
+ \twelvept\it\nin\subheadbtitle\par\nobreak
+ \vs{1\bl}\nobreak
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}
+ }% end titleformat
+ \incontents{yes}
+}% end subheadbformat markup
diff --git a/macros/text1/pc/blocks/subheadc.blk b/macros/text1/pc/blocks/subheadc.blk
new file mode 100644
index 0000000000..be70a69692
--- /dev/null
+++ b/macros/text1/pc/blocks/subheadc.blk
@@ -0,0 +1,9 @@
+% Default values for the \subheadc markup
+\subheadcformat{\numberingstyle{1}
+ \titleformat{\removelastskip\goodbreak\vs{2\bl}
+ \twelvept\nin\subheadctitle\par\nobreak
+ \vs{1\bl}\nobreak
+ \setsubheaddnumber{0}
+ }% end titleformat
+ \incontents{no}
+}% end subheadcformat markup
diff --git a/macros/text1/pc/blocks/subheadd.blk b/macros/text1/pc/blocks/subheadd.blk
new file mode 100644
index 0000000000..8b1cd8b6f3
--- /dev/null
+++ b/macros/text1/pc/blocks/subheadd.blk
@@ -0,0 +1,7 @@
+% Default values for the \subheadd markup
+\subheaddformat{\numberingstyle{1}
+ \titleformat{\goodbreak
+ {\twelvept\it \subheaddtitle.}
+ }% end titleformat
+ \incontents{no}
+}% end subheadd markup
diff --git a/macros/text1/pc/blocks/tablem.blk b/macros/text1/pc/blocks/tablem.blk
new file mode 100644
index 0000000000..3ab57a8d73
--- /dev/null
+++ b/macros/text1/pc/blocks/tablem.blk
@@ -0,0 +1,8 @@
+% Default \tabletitle when using \monospace
+\tableformat{\titleformat{\vs{\bl}
+ \cl{\bd Table \tablenumber}
+ \cl{\rm\tabletitle}
+ \vs{\bl}
+ }
+ \incontents{yes}
+}
diff --git a/macros/text1/pc/blocks/tablep.blk b/macros/text1/pc/blocks/tablep.blk
new file mode 100644
index 0000000000..1b1f0c4162
--- /dev/null
+++ b/macros/text1/pc/blocks/tablep.blk
@@ -0,0 +1,9 @@
+% Default values for the \tabletitle markup
+\tableformat{%
+ \titleformat{\vs{\bl}
+ \cl{\twelvept\bd Table \tablenumber}
+ \cl{\twelvept\tabletitle}
+ \vs{\bl}
+ }% end titleformat
+ \incontents{yes}
+}% end tableformat markup
diff --git a/macros/text1/pc/blocks/talaris.blk b/macros/text1/pc/blocks/talaris.blk
new file mode 100644
index 0000000000..0d908cc87f
--- /dev/null
+++ b/macros/text1/pc/blocks/talaris.blk
@@ -0,0 +1,6 @@
+% Default values for the Talaris fonts
+\selectfontset{amrom12}{twelvept}{default} % default twelve point set
+\selectfontset{amrom10}{tenpt}{default} % alternate ten point set
+\twelvept % default font specification
+\selectmathset{am97m}{mathdefault} % default math font set
+\mathdefault % default math specification
diff --git a/macros/text1/pc/blocks/titlepg.blk b/macros/text1/pc/blocks/titlepg.blk
new file mode 100644
index 0000000000..e53cfb4bdb
--- /dev/null
+++ b/macros/text1/pc/blocks/titlepg.blk
@@ -0,0 +1,4 @@
+% Default for the title (first) page
+\titlepageformat{\titleleadskip{1in}
+ \titlefootline{}
+}% end titlepage markup
diff --git a/macros/text1/pc/fonts/dt.pk b/macros/text1/pc/fonts/dt.pk
new file mode 100644
index 0000000000..137d069175
--- /dev/null
+++ b/macros/text1/pc/fonts/dt.pk
Binary files differ
diff --git a/macros/text1/pc/misc/cm10.txt b/macros/text1/pc/misc/cm10.txt
new file mode 100644
index 0000000000..aa431de13e
--- /dev/null
+++ b/macros/text1/pc/misc/cm10.txt
@@ -0,0 +1,34 @@
+\font\cmXbi=cmbxti10
+\font\cmXcc=cmcsc10
+\expandafter\newdimen\csname\the\naMEtok ilsx\endcsname
+\global\csname\the\naMEtok ilsx\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsx\endcsname=0pt
+\csname\the\naMEtok ilsx\endcsname=12pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\tenrm}%
+\def\noexpand\mi{\fam1\teni}%
+\def\noexpand\sy{\fam2\tensy}%
+\def\noexpand\ex{\fam3\tenex}%
+ \textfont0=\tenrm \textfont1=\teni
+ \textfont2=\tensy \textfont3=\tenex
+ \textfont\itfam=\tenit
+ \textfont\ttfam=\tentt \textfont\bffam=\tenbf
+ \textfont\ccfam=\cmXcc
+\def\noexpand\bd{\fam\bffam\tenbf}%
+\def\noexpand\it{\fam\itfam\tenit}%
+\def\noexpand\tt{\fam\ttfam\tentt}%
+\def\noexpand\cc{\fam\ccfam\cmXcc}%
+\def\noexpand\bi{\fam\bifam\cmXbi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsx\noexpand\endcsname}}%
diff --git a/macros/text1/pc/misc/cm108m.mth b/macros/text1/pc/misc/cm108m.mth
new file mode 100644
index 0000000000..2410c5b3d7
--- /dev/null
+++ b/macros/text1/pc/misc/cm108m.mth
@@ -0,0 +1,10 @@
+\font\cmVIIIrm=cmr8 \font\cmVIIImi=cmmi8
+\font\cmVIIIsy=cmsy8 \font\cmVIIIex=cmex10
+\font\cmVIIIbd=cmbx8
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\tenrm \scriptfont1=\teni
+ \scriptfont2=\tensy \scriptfont3=\tenex
+ \scriptfont\bffam=\tenbf
+ \scriptscriptfont0=\cmVIIIrm \scriptscriptfont1=\cmVIIImi
+ \scriptscriptfont2=\cmVIIIsy \scriptscriptfont3=\cmVIIIex
+ \scriptscriptfont\bffam=\cmVIIIbd}%
diff --git a/macros/text1/pc/misc/cm109m.mth b/macros/text1/pc/misc/cm109m.mth
new file mode 100644
index 0000000000..7b5104aaf7
--- /dev/null
+++ b/macros/text1/pc/misc/cm109m.mth
@@ -0,0 +1,10 @@
+\font\cmIXrm=cmr9 \font\cmIXmi=cmmi9
+\font\cmIXsy=cmsy9 \font\cmIXex=cmex10
+\font\cmIXbd=cmbx9
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\tenrm \scriptfont1=\teni
+ \scriptfont2=\tensy \scriptfont3=\tenex
+ \scriptfont\bffam=\tenbf
+ \scriptscriptfont0=\cmIXrm \scriptscriptfont1=\cmIXmi
+ \scriptscriptfont2=\cmIXsy \scriptscriptfont3=\cmIXex
+ \scriptscriptfont\bffam=\cmIXbd}%
diff --git a/macros/text1/pc/misc/cm11.txt b/macros/text1/pc/misc/cm11.txt
new file mode 100644
index 0000000000..aa9300ae37
--- /dev/null
+++ b/macros/text1/pc/misc/cm11.txt
@@ -0,0 +1,40 @@
+\global\newif\ifcmXIbierr
+\font\cmXIcc=cmcsc11
+\font\cmXIrm=cmr11 \font\cmXIit=cmti11
+\font\cmXIbd=cmbx11 \font\cmXImi=cmmi11
+\font\cmXItt=cmtt11\font\cmXIsy=cmsy11
+\expandafter\newdimen\csname\the\naMEtok ilsxi\endcsname
+\global\csname\the\naMEtok ilsxi\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxi\endcsname=0pt
+\csname\the\naMEtok ilsxi\endcsname=13pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXIrm}%
+\def\noexpand\mi{\fam1\cmXImi}%
+\def\noexpand\sy{\fam2\cmXIsy}%
+\def\noexpand\ex{\fam3\tenex}%
+ \textfont0=\cmXIrm \textfont1=\cmXImi
+ \textfont2=\cmXIsy\textfont3=\tenex
+ \textfont\itfam=\cmXIit
+ \textfont\ttfam=\cmXItt \textfont\bffam=\cmXIbd
+ \textfont\ccfam=\cmXIcc
+\def\noexpand\bd{\fam\bffam\cmXIbd}%
+\def\noexpand\it{\fam\itfam\cmXIit}%
+\def\noexpand\tt{\fam\ttfam\cmXItt}%
+\def\noexpand\cc{\fam\ccfam\cmXIcc}%
+\def\noexpand\bi{\noexpand\ifcmXIbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CM11. Will print italic font .}%
+\noexpand\global\noexpand\cmXIbierrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxi\noexpand\endcsname}}%
diff --git a/macros/text1/pc/misc/cm1110m.mth b/macros/text1/pc/misc/cm1110m.mth
new file mode 100644
index 0000000000..09cc8fb54e
--- /dev/null
+++ b/macros/text1/pc/misc/cm1110m.mth
@@ -0,0 +1,10 @@
+\font\cmXImi=cmmi11
+\font\cmXIsy=cmsy11 \font\cmXIex=cmex11
+\font\cmXIbd=cmbx11\font\cmXIrm=cmr11
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmXIrm \scriptfont1=\cmXImi
+ \scriptfont2=\cmXIsy \scriptfont3=\cmXIex
+ \scriptfont\bffam=\cmXIbd
+ \scriptscriptfont0=\tenrm \scriptscriptfont1=\teni
+ \scriptscriptfont2=\tensy \scriptscriptfont3=\tenex
+ \scriptscriptfont\bffam=\tenbf}%
diff --git a/macros/text1/pc/misc/cm119m.mth b/macros/text1/pc/misc/cm119m.mth
new file mode 100644
index 0000000000..13eca0aebf
--- /dev/null
+++ b/macros/text1/pc/misc/cm119m.mth
@@ -0,0 +1,13 @@
+\font\cmXImi=cmmi11
+\font\cmXIsy=cmsy11 \font\cmXIex=cmex11
+\font\cmXIbd=cmbx11 \font\cmXIrm=cmr11
+\font\cmIXrm=cmr9 \font\cmIXmi=cmmi9
+\font\cmIXsy=cmsy9 \font\cmIXex=cmex10
+\font\cmIXbd=cmbx9
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmXIrm \scriptfont1=\cmXImi
+ \scriptfont2=\cmXIsy \scriptfont3=\cmXIex
+ \scriptfont\bffam=\cmXIbd
+ \scriptscriptfont0=\cmIXrm \scriptscriptfont1=\cmIXmi
+ \scriptscriptfont2=\cmIXsy \scriptscriptfont3=\cmIXex
+ \scriptscriptfont\bffam=\cmIXbd}%
diff --git a/macros/text1/pc/misc/cm12.txt b/macros/text1/pc/misc/cm12.txt
new file mode 100644
index 0000000000..a505abed9c
--- /dev/null
+++ b/macros/text1/pc/misc/cm12.txt
@@ -0,0 +1,37 @@
+\font\cmXIIbi=cmbxti12
+\font\cmXIIcc=cmcsc12 \font\cmXIIex=cmex12
+\font\cmXIIrm=cmr12 \font\cmXIIit=cmti12
+\font\cmXIIbd=cmbx12 \font\cmXIImi=cmmi12
+\font\cmXIItt=cmtt12 \font\cmXIIsy=cmsy12
+\expandafter\newdimen\csname\the\naMEtok ilsxii\endcsname
+\global\csname\the\naMEtok ilsxii\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxii\endcsname=0pt
+\csname\the\naMEtok ilsxii\endcsname=14pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXIIrm}%
+\def\noexpand\mi{\fam1\cmXIImi}%
+\def\noexpand\sy{\fam2\cmXIIsy}%
+\def\noexpand\ex{\fam3\cmXIIex}%
+ \textfont0=\cmXIIrm \textfont1=\cmXIImi
+ \textfont2=\cmXIIsy \textfont3=\cmXIIex
+ \textfont\itfam=\cmXIIit
+ \textfont\ttfam=\cmXIItt \textfont\bffam=\cmXIIbd
+ \textfont\ccfam=\cmXIIcc
+\def\noexpand\bd{\fam\bffam\cmXIIbd}%
+\def\noexpand\it{\fam\itfam\cmXIIit}%
+\def\noexpand\tt{\fam\ttfam\cmXIItt}%
+\def\noexpand\cc{\fam\ccfam\cmXIIcc}%
+\def\noexpand\bi{\fam\bifam\cmXIIbi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxii\noexpand\endcsname}}%
diff --git a/macros/text1/pc/misc/cm1210m.mth b/macros/text1/pc/misc/cm1210m.mth
new file mode 100644
index 0000000000..e1ccb4c7fc
--- /dev/null
+++ b/macros/text1/pc/misc/cm1210m.mth
@@ -0,0 +1,10 @@
+\font\cmXIImi=cmmi12
+\font\cmXIIsy=cmsy12 \font\cmXIIex=cmex12
+\font\cmXIIbd=cmbx12\font\cmXIIrm=cmr12
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmXIIrm \scriptfont1=\cmXIImi
+ \scriptfont2=\cmXIIsy \scriptfont3=\cmXIIex
+ \scriptfont\bffam=\cmXIIbd
+ \scriptscriptfont0=\tenrm \scriptscriptfont1=\teni
+ \scriptscriptfont2=\tensy \scriptscriptfont3=\tenex
+ \scriptscriptfont\bffam=\tenbf}%
diff --git a/macros/text1/pc/misc/cm1211m.mth b/macros/text1/pc/misc/cm1211m.mth
new file mode 100644
index 0000000000..d9c4e13c45
--- /dev/null
+++ b/macros/text1/pc/misc/cm1211m.mth
@@ -0,0 +1,13 @@
+\font\cmXIImi=cmmi12
+\font\cmXIIsy=cmsy12 \font\cmXIIex=cmex12
+\font\cmXIIbd=cmbx12\font\cmXIIrm=cmr12
+\font\cmXIrm=cmr11 \font\cmXImi=cmmi11
+\font\cmXIsy=cmsy11 \font\cmXIex=cmex11
+\font\cmXIbd=cmbx11
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmXIIrm \scriptfont1=\cmXIImi
+ \scriptfont2=\cmXIIsy \scriptfont3=\cmXIIex
+ \scriptfont\bffam=\cmXIIbd
+ \scriptscriptfont0=\cmXIrm \scriptscriptfont1=\cmXImi
+ \scriptscriptfont2=\cmXIsy \scriptscriptfont3=\cmXIex
+ \scriptscriptfont\bffam=\cmXIbd}%
diff --git a/macros/text1/pc/misc/cm14.txt b/macros/text1/pc/misc/cm14.txt
new file mode 100644
index 0000000000..f302bf6a12
--- /dev/null
+++ b/macros/text1/pc/misc/cm14.txt
@@ -0,0 +1,37 @@
+\font\cmXIVbi=cmbxti14
+\font\cmXIVcc=cmcsc14 \font\cmXIVex=cmex14
+\font\cmXIVrm=cmr14 \font\cmXIVit=cmti14
+\font\cmXIVbd=cmbx14 \font\cmXIVmi=cmmi14
+\font\cmXIVtt=cmtt14 \font\cmXIVsy=cmsy14
+\expandafter\newdimen\csname\the\naMEtok ilsxiv\endcsname
+\global\csname\the\naMEtok ilsxiv\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxiv\endcsname=0pt
+\csname\the\naMEtok ilsxiv\endcsname=16pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXIVrm}%
+\def\noexpand\mi{\fam1\cmXIVmi}%
+\def\noexpand\sy{\fam2\cmXIVsy}%
+\def\noexpand\ex{\fam3\cmXIVex}%
+ \textfont0=\cmXIVrm \textfont1=\cmXIVmi
+ \textfont2=\cmXIVsy \textfont3=\cmXIVex
+ \textfont\itfam=\cmXIVit
+ \textfont\ttfam=\cmXIVtt \textfont\bffam=\cmXIVbd
+ \textfont\ccfam=\cmXIVcc
+\def\noexpand\bd{\fam\bffam\cmXIVbd}%
+\def\noexpand\it{\fam\itfam\cmXIVit}%
+\def\noexpand\tt{\fam\ttfam\cmXIVtt}%
+\def\noexpand\cc{\fam\ccfam\cmXIVcc}%
+\def\noexpand\bi{\fam\bifam\cmXIVbi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxiv\noexpand\endcsname}}%
diff --git a/macros/text1/pc/misc/cm1412m.mth b/macros/text1/pc/misc/cm1412m.mth
new file mode 100644
index 0000000000..fc933ca00f
--- /dev/null
+++ b/macros/text1/pc/misc/cm1412m.mth
@@ -0,0 +1,13 @@
+\font\cmXIVmi=cmmi14
+\font\cmXIVsy=cmsy14 \font\cmXIVex=cmex14
+\font\cmXIVbd=cmbx14\font\cmXIVrm=cmr14
+\font\cmXIIrm=cmr12 \font\cmXIImi=cmmi12
+\font\cmXIIsy=cmsy12 \font\cmXIIex=cmex12
+\font\cmXIIbd=cmbx12
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmXIVrm \scriptfont1=\cmXIVmi
+ \scriptfont2=\cmXIVsy \scriptfont3=\cmXIVex
+ \scriptfont\bffam=\cmXIVbd
+ \scriptscriptfont0=\cmXIIrm \scriptscriptfont1=\cmXIImi
+ \scriptscriptfont2=\cmXIIsy \scriptscriptfont3=\cmXIIex
+ \scriptscriptfont\bffam=\cmXIIbd}%
diff --git a/macros/text1/pc/misc/cm18.txt b/macros/text1/pc/misc/cm18.txt
new file mode 100644
index 0000000000..c4c9f52d87
--- /dev/null
+++ b/macros/text1/pc/misc/cm18.txt
@@ -0,0 +1,37 @@
+\font\cmXVIIIbi=cmbxti18
+\font\cmXVIIIcc=cmcsc18 \font\cmXVIIIex=cmex18
+\font\cmXVIIIrm=cmr18 \font\cmXVIIIit=cmti18
+\font\cmXVIIIbd=cmbx18 \font\cmXVIIImi=cmmi18
+\font\cmXVIIItt=cmtt18 \font\cmXVIIIsy=cmsy18
+\expandafter\newdimen\csname\the\naMEtok ilsxviii\endcsname
+\global\csname\the\naMEtok ilsxviii\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxviii\endcsname=0pt
+\csname\the\naMEtok ilsxviii\endcsname=20pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXVIIIrm}%
+\def\noexpand\mi{\fam1\cmXVIIImi}%
+\def\noexpand\sy{\fam2\cmXVIIIsy}%
+\def\noexpand\ex{\fam3\cmXVIIIex}%
+ \textfont0=\cmXVIIIrm \textfont1=\cmXVIIImi
+ \textfont2=\cmXVIIIsy \textfont3=\cmXVIIIex
+ \textfont\itfam=\cmXVIIIit
+ \textfont\ttfam=\cmXVIIItt \textfont\bffam=\cmXVIIIbd
+ \textfont\ccfam=\cmXVIIIcc
+\def\noexpand\bd{\fam\bffam\cmXVIIIbd}%
+\def\noexpand\it{\fam\itfam\cmXVIIIit}%
+\def\noexpand\tt{\fam\ttfam\cmXVIIItt}%
+\def\noexpand\cc{\fam\ccfam\cmXVIIIcc}%
+\def\noexpand\bi{\fam\bifam\cmXVIIIbi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxviii\noexpand\endcsname}}%
diff --git a/macros/text1/pc/misc/cm1814m.mth b/macros/text1/pc/misc/cm1814m.mth
new file mode 100644
index 0000000000..c3c34b0f02
--- /dev/null
+++ b/macros/text1/pc/misc/cm1814m.mth
@@ -0,0 +1,13 @@
+\font\cmXVIIImi=cmmi18
+\font\cmXVIIIsy=cmsy18 \font\cmXVIIIex=cmex18
+\font\cmXVIIIbd=cmbx18\font\cmXVIIIrm=cmr18
+\font\cmXIVrm=cmr14 \font\cmXIVmi=cmmi14
+\font\cmXIVsy=cmsy14 \font\cmXIVex=cmex14
+\font\cmXIVbd=cmbx14
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmXVIIIrm \scriptfont1=\cmXVIIImi
+ \scriptfont2=\cmXVIIIsy \scriptfont3=\cmXVIIIex
+ \scriptfont\bffam=\cmXVIIIbd
+ \scriptscriptfont0=\cmXIVrm \scriptscriptfont1=\cmXIVmi
+ \scriptscriptfont2=\cmXIVsy \scriptscriptfont3=\cmXIVex
+ \scriptscriptfont\bffam=\cmXIVbd}%
diff --git a/macros/text1/pc/misc/cm24.txt b/macros/text1/pc/misc/cm24.txt
new file mode 100644
index 0000000000..83dc4387be
--- /dev/null
+++ b/macros/text1/pc/misc/cm24.txt
@@ -0,0 +1,37 @@
+\font\cmXXIVbi=cmbxti24
+\font\cmXXIVcc=cmcsc24 \font\cmXXIVex=cmex24
+\font\cmXXIVrm=cmr24 \font\cmXXIVit=cmti24
+\font\cmXXIVbd=cmbx24 \font\cmXXIVmi=cmmi24
+\font\cmXXIVtt=cmtt24\font\cmXXIVsy=cmsy24
+\expandafter\newdimen\csname\the\naMEtok ilsxxiv\endcsname
+\global\csname\the\naMEtok ilsxxiv\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxxiv\endcsname=0pt
+\csname\the\naMEtok ilsxxiv\endcsname=26pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXXIVrm}%
+\def\noexpand\mi{\fam1\cmXXIVmi}%
+\def\noexpand\sy{\fam2\cmXXIVsy}%
+\def\noexpand\ex{\fam3\cmXXIVex}%
+ \textfont0=\cmXXIVrm \textfont1=\cmXXIVmi
+ \textfont2=\cmXXIVsy \textfont3=\cmXXIVex
+ \textfont\itfam=\cmXXIVit
+ \textfont\ttfam=\cmXXIVtt \textfont\bffam=\cmXXIVbd
+ \textfont\ccfam=\cmXXIVcc
+\def\noexpand\bd{\fam\bffam\cmXXIVbd}%
+\def\noexpand\it{\fam\itfam\cmXXIVit}%
+\def\noexpand\tt{\fam\ttfam\cmXXIVtt}%
+\def\noexpand\cc{\fam\ccfam\cmXXIVcc}%
+\def\noexpand\bi{\fam\bifam\cmXXIVbi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxxiv\noexpand\endcsname}}%
diff --git a/macros/text1/pc/misc/cm2418m.mth b/macros/text1/pc/misc/cm2418m.mth
new file mode 100644
index 0000000000..41222e47d0
--- /dev/null
+++ b/macros/text1/pc/misc/cm2418m.mth
@@ -0,0 +1,13 @@
+\font\cmXXIVmi=cmmi24
+\font\cmXXIVsy=cmsy24 \font\cmXXIVex=cmex24
+\font\cmXXIVbd=cmbx24\font\cmXXIVrm=cmr24
+\font\cmXVIIIrm=cmr18 \font\cmXVIIImi=cmmi18
+\font\cmXVIIIsy=cmsy18 \font\cmXVIIIex=cmex18
+\font\cmXVIIIbd=cmbx18
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmXXIVrm \scriptfont1=\cmXXIVmi
+ \scriptfont2=\cmXXIVsy \scriptfont3=\cmXXIVex
+ \scriptfont\bffam=\cmXXIVbd
+ \scriptscriptfont0=\cmXVIIIrm \scriptscriptfont1=\cmXVIIImi
+ \scriptscriptfont2=\cmXVIIIsy \scriptscriptfont3=\cmXVIIIex
+ \scriptscriptfont\bffam=\cmXVIIIbd}%
diff --git a/macros/text1/pc/misc/cm36.txt b/macros/text1/pc/misc/cm36.txt
new file mode 100644
index 0000000000..9a6f9ce578
--- /dev/null
+++ b/macros/text1/pc/misc/cm36.txt
@@ -0,0 +1,37 @@
+\font\cmXXXVIbi=cmbxti36
+\font\cmXXXVIcc=cmcsc36\font\cmXXXVIex=cmex36
+\font\cmXXXVIrm=cmr36 \font\cmXXXVIit=cmti36
+\font\cmXXXVIbd=cmbx36 \font\cmXXXVImi=cmmi36
+\font\cmXXXVItt=cmtt36 \font\cmXXXVIsy=cmsy36
+\expandafter\newdimen\csname\the\naMEtok ilsxxxvi\endcsname
+\global\csname\the\naMEtok ilsxxxvi\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxxxvi\endcsname=0pt
+\csname\the\naMEtok ilsxxxvi\endcsname=38pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXXXVIrm}%
+\def\noexpand\mi{\fam1\cmXXXVImi}%
+\def\noexpand\sy{\fam2\cmXXXVIsy}%
+\def\noexpand\ex{\fam3\cmXXXVIex}%
+ \textfont0=\cmXXXVIrm \textfont1=\cmXXXVImi
+ \textfont2=\cmXXXVIsy \textfont3=\cmXXXVIex
+ \textfont\itfam=\cmXXXVIit
+ \textfont\ttfam=\cmXXXVItt \textfont\bffam=\cmXXXVIbd
+ \textfont\ccfam=\cmXXXVIcc
+\def\noexpand\bd{\fam\bffam\cmXXXVIbd}%
+\def\noexpand\it{\fam\itfam\cmXXXVIit}%
+\def\noexpand\tt{\fam\ttfam\cmXXXVItt}%
+\def\noexpand\cc{\fam\ccfam\cmXXXVIcc}%
+\def\noexpand\bi{\fam\bifam\cmXXXVIbi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxxxvi\noexpand\endcsname}}%
diff --git a/macros/text1/pc/misc/cm5.txt b/macros/text1/pc/misc/cm5.txt
new file mode 100644
index 0000000000..3cdb0205e3
--- /dev/null
+++ b/macros/text1/pc/misc/cm5.txt
@@ -0,0 +1,51 @@
+\global\newif\ifVbierr
+\global\newif\ifVccerr
+\global\newif\ifVtterr
+\global\newif\ifViterr
+\global\newif\ifVbderr
+\expandafter\newdimen\csname\the\naMEtok ilsv\endcsname
+\global\csname\the\naMEtok ilsv\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsv\endcsname=0pt
+\csname\the\naMEtok ilsv\endcsname=8pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\fiverm}%
+\def\noexpand\mi{\fam1\fivei}%
+\def\noexpand\sy{\fam2\fivesy}%
+\def\noexpand\ex{\fam3\tenex}%
+ \textfont0=\fiverm\textfont1=\fivei
+ \textfont2=\fivesy\textfont3=\tenex
+ \textfont\bffam=\fivebf
+\def\noexpand\bd{\noexpand\ifVbderr\noexpand\fam\bffam\fivebf%
+\noexpand\else\noexpand\fam\bffam\fivebf%
+\noexpand\message{<TEXT1> Warning. %
+No bold font in CM5. Will print bold extended font .}%
+\noexpand\global\noexpand\Vbderrtrue \noexpand\fi}%
+\def\noexpand\it{\noexpand\ifViterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No italic font in CM5. Will print roman font .}%
+\noexpand\global\noexpand\Viterrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifVtterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CM5. Will print roman font .}%
+\noexpand\global\noexpand\Vtterrtrue \noexpand\fi}%
+\def\noexpand\bi{\noexpand\ifVbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CM5. Will print italic font .}%
+\noexpand\global\noexpand\Vbierrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifVccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CM5. Will print roman font .}%
+\noexpand\global\noexpand\Vccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsv\noexpand\endcsname}}%
diff --git a/macros/text1/pc/misc/cm6.txt b/macros/text1/pc/misc/cm6.txt
new file mode 100644
index 0000000000..5a3a735d8c
--- /dev/null
+++ b/macros/text1/pc/misc/cm6.txt
@@ -0,0 +1,49 @@
+\global\newif\ifcmVIbierr
+\global\newif\ifcmVIccerr
+\global\newif\ifcmVIiterr
+\global\newif\ifcmVItterr
+\font\cmVIrm=cmr6
+\font\cmVIbd=cmbx6 \font\cmVImi=cmmi6
+\font\sixsy=cmsy6
+\expandafter\newdimen\csname\the\naMEtok ilsvi\endcsname
+\global\csname\the\naMEtok ilsvi\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsvi\endcsname=0pt
+\csname\the\naMEtok ilsvi\endcsname=8pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmVIrm}%
+\def\noexpand\mi{\fam1\cmVImi}%
+\def\noexpand\sy{\fam2\sixsy}%
+\def\noexpand\ex{\fam3\tenex}%
+ \textfont0=\cmVIrm \textfont1=\cmVImi
+ \textfont2=\tensy \textfont3=\tenex
+ \textfont\bffam=\cmVIbd
+\def\noexpand\bd{\fam\bffam\cmVIbd}%
+\def\noexpand\it{\noexpand\ifcmVIiterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No italic font in CM6. Will print roman font.}%
+\noexpand\global\noexpand\cmVIiterrtrue \noexpand\fi}%
+\def\noexpand\bi{\noexpand\ifcmVIbierr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CM6. Will print roman font.}%
+\noexpand\global\noexpand\cmVIbierrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifcmVIccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CM6. Will print roman font.}%
+\noexpand\global\noexpand\cmVIccerrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifcmVItterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CM6. Will print roman font.}%
+\noexpand\global\noexpand\cmVItterrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsvi\noexpand\endcsname}}%
diff --git a/macros/text1/pc/misc/cm65m.mth b/macros/text1/pc/misc/cm65m.mth
new file mode 100644
index 0000000000..d1c44223de
--- /dev/null
+++ b/macros/text1/pc/misc/cm65m.mth
@@ -0,0 +1,10 @@
+\font\cmVImi=cmmi6
+\font\cmVIsy=cmsy6 \font\cmVIex=cmex10
+\font\cmVIbd=cmbx6\font\cmVIrm=cmr6
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmVIrm \scriptfont1=\cmVImi
+ \scriptfont2=\cmVIsy \scriptfont3=\cmVIex
+ \scriptfont\bffam=\cmVIbd
+ \scriptscriptfont0=\fiverm \scriptscriptfont1=\fivei
+ \scriptscriptfont2=\fivesy \scriptscriptfont3=\tenex
+ \scriptscriptfont\bffam=\fivebf}%
diff --git a/macros/text1/pc/misc/cm7.txt b/macros/text1/pc/misc/cm7.txt
new file mode 100644
index 0000000000..894bff8b2c
--- /dev/null
+++ b/macros/text1/pc/misc/cm7.txt
@@ -0,0 +1,45 @@
+\global\newif\ifVIIbierr
+\global\newif\ifVIIbderr
+\global\newif\ifVIItterr
+\global\newif\ifVIIccerr
+\font\cmVIIit=cmti7
+\expandafter\newdimen\csname\the\naMEtok ilsvii\endcsname
+\global\csname\the\naMEtok ilsvii\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsvii\endcsname=0pt
+\csname\the\naMEtok ilsvii\endcsname=9pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\sevenrm}%
+\def\noexpand\mi{\fam1\seveni}%
+\def\noexpand\sy{\fam2\sevensy}%
+\def\noexpand\ex{\fam3\tenex}%
+ \textfont0=\sevenrm \textfont1=\seveni
+ \textfont2=\sevensy \textfont3=\tenex
+ \textfont\itfam=\cmVIIit
+ \textfont\bffam=\sevenbf
+\def\noexpand\it{\fam\itfam\cmVIIit}%
+\def\noexpand\bd{\fam\bffam\sevenbf}%
+\def\noexpand\tt{\noexpand\ifVIItterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CM7. Will print roman font .}%
+\noexpand\global\noexpand\VIItterrtrue \noexpand\fi}%
+\def\noexpand\bi{\noexpand\ifVIIbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CM7. Will print italic font .}%
+\noexpand\global\noexpand\VIIbierrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifVIIccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CM7. Will print roman font .}%
+\noexpand\global\noexpand\VIIccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsvii\noexpand\endcsname}}%
diff --git a/macros/text1/pc/misc/cm75m.mth b/macros/text1/pc/misc/cm75m.mth
new file mode 100644
index 0000000000..2acd4dc1f4
--- /dev/null
+++ b/macros/text1/pc/misc/cm75m.mth
@@ -0,0 +1,7 @@
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\sevenrm \scriptfont1=\seveni
+ \scriptfont2=\sevensy \scriptfont3=\tenex
+ \scriptfont\bffam=\sevenbf
+ \scriptscriptfont0=\fiverm \scriptscriptfont1=\fivei
+ \scriptscriptfont2=\fivesy \scriptscriptfont3=\tenex
+ \scriptscriptfont\bffam=\fivebf}%
diff --git a/macros/text1/pc/misc/cm76m.mth b/macros/text1/pc/misc/cm76m.mth
new file mode 100644
index 0000000000..796813490d
--- /dev/null
+++ b/macros/text1/pc/misc/cm76m.mth
@@ -0,0 +1,10 @@
+\font\cmVIrm=cmr6 \font\cmVImi=cmmi6
+\font\cmVIsy=cmsy6 \font\cmVIex=cmex10
+\font\cmVIbd=cmbx6
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\sevenrm \scriptfont1=\seveni
+ \scriptfont2=\sevensy \scriptfont3=\tenex
+ \scriptfont\bffam=\sevenbf
+ \scriptscriptfont0=\cmVIrm \scriptscriptfont1=\cmVImi
+ \scriptscriptfont2=\cmVIsy \scriptscriptfont3=\cmVIex
+ \scriptscriptfont\bffam=\cmVIbd}%
diff --git a/macros/text1/pc/misc/cm8.txt b/macros/text1/pc/misc/cm8.txt
new file mode 100644
index 0000000000..ea69af7705
--- /dev/null
+++ b/macros/text1/pc/misc/cm8.txt
@@ -0,0 +1,40 @@
+\global\newif\ifcmVIIIbierr
+\font\cmVIIIcc=cmcsc8
+\font\cmVIIIrm=cmr8 \font\cmVIIIit=cmti8
+\font\cmVIIIbd=cmbx8 \font\cmVIIImi=cmmi8
+\font\cmVIIItt=cmtt8
+\expandafter\newdimen\csname\the\naMEtok ilsviii\endcsname
+\global\csname\the\naMEtok ilsviii\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsviii\endcsname=0pt
+\csname\the\naMEtok ilsviii\endcsname=10pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmVIIIrm}%
+\def\noexpand\mi{\fam1\cmVIIImi}%
+\def\noexpand\sy{\fam2\tensy}%
+\def\noexpand\ex{\fam3\tenex}%
+ \textfont0=\cmVIIIrm \textfont1=\cmVIIImi
+ \textfont2=\tensy \textfont3=\tenex
+ \textfont\itfam=\cmVIIIit
+ \textfont\ttfam=\cmVIIItt \textfont\bffam=\cmVIIIbd
+ \textfont\ccfam=\cmVIIIcc
+\def\noexpand\bd{\fam\bffam\cmVIIIbd}%
+\def\noexpand\it{\fam\itfam\cmVIIIit}%
+\def\noexpand\tt{\fam\ttfam\cmVIIItt}%
+\def\noexpand\cc{\fam\ccfam\cmVIIIcc}%
+\def\noexpand\bi{\noexpand\ifcmVIIIbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CM8. Will print italic font .}%
+\noexpand\global\noexpand\cmVIIIbierrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsviii\noexpand\endcsname}}%
diff --git a/macros/text1/pc/misc/cm86m.mth b/macros/text1/pc/misc/cm86m.mth
new file mode 100644
index 0000000000..9acea1b047
--- /dev/null
+++ b/macros/text1/pc/misc/cm86m.mth
@@ -0,0 +1,13 @@
+\font\cmVIIIrm=cmr8 \font\cmVIIImi=cmmi8
+\font\cmVIIIsy=cmsy8 \font\cmVIIIex=cmex10
+\font\cmVIIIbd=cmbx8
+\font\cmVIrm=cmr6 \font\cmVImi=cmmi6
+\font\cmVIsy=cmsy6 \font\cmVIex=cmex10
+\font\cmVIbd=cmbx6
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmVIIIrm \scriptfont1=\cmVIIImi
+ \scriptfont2=\cmVIIIsy \scriptfont3=\cmVIIIex
+ \scriptfont\bffam=\cmVIIIbd
+ \scriptscriptfont0=\cmVIrm \scriptscriptfont1=\cmVImi
+ \scriptscriptfont2=\cmVIsy \scriptscriptfont3=\cmVIex
+ \scriptscriptfont\bffam=\cmVIbd}%
diff --git a/macros/text1/pc/misc/cm87m.mth b/macros/text1/pc/misc/cm87m.mth
new file mode 100644
index 0000000000..5bc523025d
--- /dev/null
+++ b/macros/text1/pc/misc/cm87m.mth
@@ -0,0 +1,10 @@
+\font\cmVIIImi=cmmi8
+\font\cmVIIIsy=cmsy8 \font\cmVIIIex=cmex10
+\font\cmVIIIbd=cmbx8\font\cmVIIIrm=cmr8
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmVIIIrm \scriptfont1=\cmVIIImi
+ \scriptfont2=\cmVIIIsy \scriptfont3=\cmVIIIex
+ \scriptfont\bffam=\cmVIIIbd
+ \scriptscriptfont0=\sevenrm \scriptscriptfont1=\seveni
+ \scriptscriptfont2=\sevensy \scriptscriptfont3=\tenex
+ \scriptscriptfont\bffam=\sevenbf}%
diff --git a/macros/text1/pc/misc/cm9.txt b/macros/text1/pc/misc/cm9.txt
new file mode 100644
index 0000000000..8602cb2d64
--- /dev/null
+++ b/macros/text1/pc/misc/cm9.txt
@@ -0,0 +1,40 @@
+\global\newif\ifcmIXbierr
+\font\cmIXcc=cmcsc9
+\font\cmIXrm=cmr9 \font\cmIXit=cmti9
+\font\cmIXbd=cmbx9 \font\cmIXmi=cmmi9
+\font\cmIXtt=cmtt9
+\expandafter\newdimen\csname\the\naMEtok ilsix\endcsname
+\global\csname\the\naMEtok ilsix\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsix\endcsname=0pt
+\csname\the\naMEtok ilsix\endcsname=11pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmIXrm}%
+\def\noexpand\mi{\fam1\cmIXmi}%
+\def\noexpand\sy{\fam2\tensy}%
+\def\noexpand\ex{\fam3\tenex}%
+ \textfont0=\cmIXrm \textfont1=\cmIXmi
+ \textfont2=\tensy \textfont3=\tenex
+ \textfont\itfam=\cmIXit
+ \textfont\ttfam=\cmIXtt \textfont\bffam=\cmIXbd
+ \textfont\ccfam=\cmIXcc
+\def\noexpand\bd{\fam\bffam\cmIXbd}%
+\def\noexpand\it{\fam\itfam\cmIXit}%
+\def\noexpand\tt{\fam\ttfam\cmIXtt}%
+\def\noexpand\cc{\fam\ccfam\cmIXcc}%
+\def\noexpand\bi{\noexpand\ifcmIXbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CM9. Will print italic font .}%
+\noexpand\global\noexpand\cmIXbierrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsix\noexpand\endcsname}}%
diff --git a/macros/text1/pc/misc/cm97m.mth b/macros/text1/pc/misc/cm97m.mth
new file mode 100644
index 0000000000..612ddf3587
--- /dev/null
+++ b/macros/text1/pc/misc/cm97m.mth
@@ -0,0 +1,10 @@
+\font\cmIXmi=cmmi9
+\font\cmIXsy=cmsy9 \font\cmIXex=cmex10
+\font\cmIXbd=cmbx9\font\cmIXrm=cmr9
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmIXrm \scriptfont1=\cmIXmi
+ \scriptfont2=\cmIXsy \scriptfont3=\cmIXex
+ \scriptfont\bffam=\cmIXbd
+ \scriptscriptfont0=\sevenrm \scriptscriptfont1=\seveni
+ \scriptscriptfont2=\sevensy \scriptscriptfont3=\tenex
+ \scriptscriptfont\bffam=\sevenbf}%
diff --git a/macros/text1/pc/misc/cm98m.mth b/macros/text1/pc/misc/cm98m.mth
new file mode 100644
index 0000000000..78e30ed089
--- /dev/null
+++ b/macros/text1/pc/misc/cm98m.mth
@@ -0,0 +1,13 @@
+\font\cmIXmi=cmmi9
+\font\cmIXsy=cmsy9 \font\cmIXex=cmex10
+\font\cmIXbd=cmbx9\font\cmIXrm=cmr9
+\font\cmVIIIrm=cmr8 \font\cmVIIImi=cmmi8
+\font\cmVIIIsy=cmsy8 \font\cmVIIIex=cmex10
+\font\cmVIIIbd=cmbx8
+ \expandafter\gdef\csname\the\maTHtok\endcsname{%
+ \scriptfont0=\cmIXrm \scriptfont1=\cmIXmi
+ \scriptfont2=\cmIXsy \scriptfont3=\cmIXex
+ \scriptfont\bffam=\cmIXbd
+ \scriptscriptfont0=\cmVIIIrm \scriptscriptfont1=\cmVIIImi
+ \scriptscriptfont2=\cmVIIIsy \scriptscriptfont3=\cmVIIIex
+ \scriptscriptfont\bffam=\cmVIIIbd}%
diff --git a/macros/text1/pc/misc/cmsan10.txt b/macros/text1/pc/misc/cmsan10.txt
new file mode 100644
index 0000000000..cedf00fe5e
--- /dev/null
+++ b/macros/text1/pc/misc/cmsan10.txt
@@ -0,0 +1,46 @@
+\global\newif\ifXssbierr
+\global\newif\ifXssccerr
+\global\newif\ifXsstterr
+\font\cmXssrm=cmss10 \font\cmXssit=cmssi10
+\font\cmXssbd=cmssbx10 \font\cmXssmi=cmmi10
+\font\cmXsssy=cmsy10 \font\cmXssex=cmex10
+\expandafter\newdimen\csname\the\naMEtok ilsxss\endcsname
+\global\csname\the\naMEtok ilsxss\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxss\endcsname=0pt
+\csname\the\naMEtok ilsxss\endcsname=12pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXssrm}%
+\def\noexpand\mi{\fam1\cmXssmi}%
+\def\noexpand\sy{\fam2\cmXsssy}%
+\def\noexpand\ex{\fam3\cmXssex}%
+ \textfont0=\cmXssrm \textfont1=\cmXssmi
+ \textfont2=\cmXsssy \textfont3=\cmXssex
+ \textfont\itfam=\cmXssit
+ \textfont\bffam=\cmXssbd
+\def\noexpand\bd{\fam\bffam\cmXssbd}%
+\def\noexpand\it{\fam\itfam\cmXssit}%
+\def\noexpand\bi{\noexpand\ifXssbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CMSAN10. Will print italic font .}%
+\noexpand\global\noexpand\Xssbierrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifXsstterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CMSAN10. Will print roman font .}%
+\noexpand\global\noexpand\Xsstterrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifXssccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CMSAN10. Will print roman font .}%
+\noexpand\global\noexpand\Xssccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxss\noexpand\endcsname}}%
diff --git a/macros/text1/pc/misc/cmsan11.txt b/macros/text1/pc/misc/cmsan11.txt
new file mode 100644
index 0000000000..e5da60857e
--- /dev/null
+++ b/macros/text1/pc/misc/cmsan11.txt
@@ -0,0 +1,46 @@
+\global\newif\ifXIssbierr
+\global\newif\ifXIssccerr
+\global\newif\ifXIsstterr
+\font\cmXIssrm=cmss11 \font\cmXIssit=cmssi11
+\font\cmXIssbd=cmssbx11 \font\cmXIssmi=cmmi11
+\font\cmXIsssy=cmsy11 \font\cmXIssex=cmex11
+\expandafter\newdimen\csname\the\naMEtok ilsxiss\endcsname
+\global\csname\the\naMEtok ilsxiss\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxiss\endcsname=0pt
+\csname\the\naMEtok ilsxiss\endcsname=13pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXIssrm}%
+\def\noexpand\mi{\fam1\cmXIssmi}%
+\def\noexpand\sy{\fam2\cmXIsssy}%
+\def\noexpand\ex{\fam3\cmXIssex}%
+ \textfont0=\cmXIssrm \textfont1=\cmXIssmi
+ \textfont2=\cmXIsssy \textfont3=\cmXIssex
+ \textfont\itfam=\cmXIssit
+ \textfont\bffam=\cmXIssbd
+\def\noexpand\bd{\fam\bffam\cmXIssbd}%
+\def\noexpand\it{\fam\itfam\cmXIssit}%
+\def\noexpand\bi{\noexpand\ifXIssbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CMSAN11. Will print italic font .}%
+\noexpand\global\noexpand\XIssbierrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifXIsstterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CMSAN11. Will print roman font .}%
+\noexpand\global\noexpand\XIsstterrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifXIssccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CMSAN11. Will print roman font .}%
+\noexpand\global\noexpand\XIssccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxiss\noexpand\endcsname}}%
diff --git a/macros/text1/pc/misc/cmsan12.txt b/macros/text1/pc/misc/cmsan12.txt
new file mode 100644
index 0000000000..234dd3cbba
--- /dev/null
+++ b/macros/text1/pc/misc/cmsan12.txt
@@ -0,0 +1,46 @@
+\global\newif\ifXIIssbierr
+\global\newif\ifXIIssccerr
+\global\newif\ifXIIsstterr
+\font\cmXIIssrm=cmss12 \font\cmXIIssit=cmssi12
+\font\cmXIIssbd=cmssbx12 \font\cmXIIssmi=cmmi12
+\font\cmXIIsssy=cmsy12 \font\cmXIIssex=cmex12
+\expandafter\newdimen\csname\the\naMEtok ilsxiiss\endcsname
+\global\csname\the\naMEtok ilsxiiss\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxiiss\endcsname=0pt
+\csname\the\naMEtok ilsxiiss\endcsname=14pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXIIssrm}%
+\def\noexpand\mi{\fam1\cmXIIssmi}%
+\def\noexpand\sy{\fam2\cmXIIsssy}%
+\def\noexpand\ex{\fam3\cmXIIssex}%
+ \textfont0=\cmXIIssrm \textfont1=\cmXIIssmi
+ \textfont2=\cmXIIsssy \textfont3=\cmXIIssex
+ \textfont\itfam=\cmXIIssit
+ \textfont\bffam=\cmXIIssbd
+\def\noexpand\bd{\fam\bffam\cmXIIssbd}%
+\def\noexpand\it{\fam\itfam\cmXIIssit}%
+\def\noexpand\bi{\noexpand\ifXIIssbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CMSAN12. Will print italic font .}%
+\noexpand\global\noexpand\XIIssbierrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifXIIsstterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CMSAN12. Will print roman font .}%
+\noexpand\global\noexpand\XIIsstterrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifXIIssccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CMSAN12. Will print roman font .}%
+\noexpand\global\noexpand\XIIssccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxiiss\noexpand\endcsname}}%
diff --git a/macros/text1/pc/misc/cmsan14.txt b/macros/text1/pc/misc/cmsan14.txt
new file mode 100644
index 0000000000..23d2eb54a5
--- /dev/null
+++ b/macros/text1/pc/misc/cmsan14.txt
@@ -0,0 +1,46 @@
+\global\newif\ifXIVssbierr
+\global\newif\ifXIVssccerr
+\global\newif\ifXIVsstterr
+\font\cmXIVssrm=cmss14 \font\cmXIVssit=cmssi14
+\font\cmXIVssbd=cmssbx14 \font\cmXIVssmi=cmmi14
+\font\cmXIVsssy=cmsy14 \font\cmXIVssex=cmex14
+\expandafter\newdimen\csname\the\naMEtok ilsxivss\endcsname
+\global\csname\the\naMEtok ilsxivss\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxivss\endcsname=0pt
+\csname\the\naMEtok ilsxivss\endcsname=16pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXIVssrm}%
+\def\noexpand\mi{\fam1\cmXIVssmi}%
+\def\noexpand\sy{\fam2\cmXIVsssy}%
+\def\noexpand\ex{\fam3\cmXIVssex}%
+ \textfont0=\cmXIVssrm \textfont1=\cmXIVssmi
+ \textfont2=\cmXIVsssy \textfont3=\cmXIVssex
+ \textfont\itfam=\cmXIVssit
+ \textfont\bffam=\cmXIVssbd
+\def\noexpand\bd{\fam\bffam\cmXIVssbd}%
+\def\noexpand\it{\fam\itfam\cmXIVssit}%
+\def\noexpand\bi{\noexpand\ifXIVssbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CMSAN14. Will print italic font .}%
+\noexpand\global\noexpand\XIVssbierrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifXIVsstterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CMSAN14. Will print roman font .}%
+\noexpand\global\noexpand\XIVsstterrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifXIVssccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CMSAN14. Will print roman font .}%
+\noexpand\global\noexpand\XIVssccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxivss\noexpand\endcsname}}%
diff --git a/macros/text1/pc/misc/cmsan18.txt b/macros/text1/pc/misc/cmsan18.txt
new file mode 100644
index 0000000000..a1a581291e
--- /dev/null
+++ b/macros/text1/pc/misc/cmsan18.txt
@@ -0,0 +1,46 @@
+\global\newif\ifXVIIIssbierr
+\global\newif\ifXVIIIssccerr
+\global\newif\ifXVIIIsstterr
+\font\cmXVIIIssrm=cmss18 \font\cmXVIIIssit=cmssi18
+\font\cmXVIIIssbd=cmssbx18 \font\cmXVIIIssmi=cmmi18
+\font\cmXVIIIsssy=cmsy18 \font\cmXVIIIssex=cmex18
+\expandafter\newdimen\csname\the\naMEtok ilsxviiiss\endcsname
+\global\csname\the\naMEtok ilsxviiiss\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxviiiss\endcsname=0pt
+\csname\the\naMEtok ilsxviiiss\endcsname=20pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXVIIIssrm}%
+\def\noexpand\mi{\fam1\cmXVIIIssmi}%
+\def\noexpand\sy{\fam2\cmXVIIIsssy}%
+\def\noexpand\ex{\fam3\cmXVIIIssex}%
+ \textfont0=\cmXVIIIssrm \textfont1=\cmXVIIIssmi
+ \textfont2=\cmXVIIIsssy \textfont3=\cmXVIIIssex
+ \textfont\itfam=\cmXVIIIssit
+ \textfont\bffam=\cmXVIIIssbd
+\def\noexpand\bd{\fam\bffam\cmXVIIIssbd}%
+\def\noexpand\it{\fam\itfam\cmXVIIIssit}%
+\def\noexpand\bi{\noexpand\ifXVIIIssbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CMSAN18. Will print italic font .}%
+\noexpand\global\noexpand\XVIIIssbierrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifXVIIIsstterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CMSAN18. Will print roman font .}%
+\noexpand\global\noexpand\XVIIIsstterrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifXVIIIssccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CMSAN18. Will print roman font .}%
+\noexpand\global\noexpand\XVIIIssccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxviiiss\noexpand\endcsname}}%
diff --git a/macros/text1/pc/misc/cmsan24.txt b/macros/text1/pc/misc/cmsan24.txt
new file mode 100644
index 0000000000..d035cc6ecd
--- /dev/null
+++ b/macros/text1/pc/misc/cmsan24.txt
@@ -0,0 +1,46 @@
+\global\newif\ifXXIVssbierr
+\global\newif\ifXXIVssccerr
+\global\newif\ifXXIVsstterr
+\font\cmXXIVssrm=cmss24 \font\cmXXIVssit=cmssi24
+\font\cmXXIVssbd=cmssbx24 \font\cmXXIVssmi=cmmi24
+\font\cmXXIVsssy=cmsy24 \font\cmXXIVssex=cmex24
+\expandafter\newdimen\csname\the\naMEtok ilsxxivss\endcsname
+\global\csname\the\naMEtok ilsxxivss\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxxivss\endcsname=0pt
+\csname\the\naMEtok ilsxxivss\endcsname=26pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXXIVssrm}%
+\def\noexpand\mi{\fam1\cmXXIVssmi}%
+\def\noexpand\sy{\fam2\cmXXIVsssy}%
+\def\noexpand\ex{\fam3\cmXXIVssex}%
+ \textfont0=\cmXXIVssrm \textfont1=\cmXXIVssmi
+ \textfont2=\cmXXIVsssy \textfont3=\cmXXIVssex
+ \textfont\itfam=\cmXXIVssit
+ \textfont\bffam=\cmXXIVssbd
+\def\noexpand\bd{\fam\bffam\cmXXIVssbd}%
+\def\noexpand\it{\fam\itfam\cmXXIVssit}%
+\def\noexpand\bi{\noexpand\ifXXIVssbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CMSAN24. Will print italic font .}%
+\noexpand\global\noexpand\XXIVssbierrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifXXIVsstterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CMSAN24. Will print roman font .}%
+\noexpand\global\noexpand\XXIVsstterrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifXXIVssccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CMSAN24. Will print roman font .}%
+\noexpand\global\noexpand\XXIVssccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxxivss\noexpand\endcsname}}%
diff --git a/macros/text1/pc/misc/cmsan36.txt b/macros/text1/pc/misc/cmsan36.txt
new file mode 100644
index 0000000000..3a64c94a76
--- /dev/null
+++ b/macros/text1/pc/misc/cmsan36.txt
@@ -0,0 +1,46 @@
+\global\newif\ifXXXVIssbierr
+\global\newif\ifXXXVIssccerr
+\global\newif\ifXXXVIsstterr
+\font\cmXXXVIssrm=cmss36 \font\cmXXXVIssit=cmssi36
+\font\cmXXXVIssbd=cmssbx36 \font\cmXXXVIssmi=cmmi36
+\font\cmXXXVIsssy=cmsy36 \font\cmXXXVIssex=cmex24
+\expandafter\newdimen\csname\the\naMEtok ilsxxivss\endcsname
+\global\csname\the\naMEtok ilsxxivss\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsxxivss\endcsname=0pt
+\csname\the\naMEtok ilsxxivss\endcsname=38pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmXXXVIssrm}%
+\def\noexpand\mi{\fam1\cmXXXVIssmi}%
+\def\noexpand\sy{\fam2\cmXXXVIsssy}%
+\def\noexpand\ex{\fam3\cmXXXVIssex}%
+ \textfont0=\cmXXXVIssrm \textfont1=\cmXXXVIssmi
+ \textfont2=\cmXXXVIsssy \textfont3=\cmXXXVIssex
+ \textfont\itfam=\cmXXXVIssit
+ \textfont\bffam=\cmXXXVIssbd
+\def\noexpand\bd{\fam\bffam\cmXXXVIssbd}%
+\def\noexpand\it{\fam\itfam\cmXXXVIssit}%
+\def\noexpand\bi{\noexpand\ifXXXVIssbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CMSAN36. Will print italic font .}%
+\noexpand\global\noexpand\XXXVIssbierrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifXXXVIsstterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CMSAN36. Will print roman font .}%
+\noexpand\global\noexpand\XXXVIsstterrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifXXXVIssccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CMSAN36. Will print roman font .}%
+\noexpand\global\noexpand\XXXVIssccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsxxivss\noexpand\endcsname}}%
diff --git a/macros/text1/pc/misc/cmsan8.txt b/macros/text1/pc/misc/cmsan8.txt
new file mode 100644
index 0000000000..710177059f
--- /dev/null
+++ b/macros/text1/pc/misc/cmsan8.txt
@@ -0,0 +1,49 @@
+\global\newif\ifcmVIIIssbierr
+\global\newif\ifcmVIIIssccerr
+\global\newif\ifcmVIIIsstterr
+\global\newif\ifcmVIIIssbderr
+\font\cmVIIIssit=cmssi8
+\font\cmVIIIssrm=cmss8 \font\cmVIIIssmi=cmmi8
+\font\cmVIIIsssy=cmsy8 \font\cmVIIIssex=cmex10
+\expandafter\newdimen\csname\the\naMEtok ilsviiiss\endcsname
+\global\csname\the\naMEtok ilsviiiss\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsviiiss\endcsname=0pt
+\csname\the\naMEtok ilsviiiss\endcsname=10pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmVIIIssrm}%
+\def\noexpand\mi{\fam1\cmVIIIssmi}%
+\def\noexpand\sy{\fam2\cmVIIIsssy}%
+\def\noexpand\ex{\fam3\cmVIIIssex}%
+ \textfont0=\cmVIIIssrm \textfont1=\cmVIIIssmi
+ \textfont2=\cmVIIIsssy \textfont3=\cmVIIIssex
+ \textfont\itfam=\cmVIIIssit
+\def\noexpand\it{\fam\itfam\cmVIIIssit}%
+\def\noexpand\bd{\noexpand\ifcmVIIIssbderr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No bold font in CMSAN8. Will print roman font .}%
+\noexpand\global\noexpand\cmVIIIssbderrtrue \noexpand\fi}%
+\def\noexpand\bi{\noexpand\ifcmVIIIssbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CMSAN8. Will print italic font .}%
+\noexpand\global\noexpand\cmVIIIssbierrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifcmVIIIsstterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CMSAN8. Will print roman font .}%
+\noexpand\global\noexpand\cmVIIIsstterrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifcmVIIIssccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CMSAN8. Will print roman font .}%
+\noexpand\global\noexpand\cmVIIIssccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsviiiss\noexpand\endcsname}}%
diff --git a/macros/text1/pc/misc/cmsan9.txt b/macros/text1/pc/misc/cmsan9.txt
new file mode 100644
index 0000000000..7309c82d45
--- /dev/null
+++ b/macros/text1/pc/misc/cmsan9.txt
@@ -0,0 +1,46 @@
+\global\newif\ifIXssbierr
+\global\newif\ifIXssccerr
+\global\newif\ifIXsstterr
+\font\cmIXssrm=cmss9 \font\cmIXssit=cmssi9
+\font\cmIXssbd=cmssbx9 \font\cmIXssmi=cmmi9
+\font\cmIXsssy=cmsy9 \font\cmIXssex=cmex10
+\expandafter\newdimen\csname\the\naMEtok ilsixss\endcsname
+\global\csname\the\naMEtok ilsixss\endcsname=\bAseSkip
+\ifdim\csname\the\naMEtok ilsixss\endcsname=0pt
+\csname\the\naMEtok ilsixss\endcsname=11pt\fi%
+\expandafter\xdef\csname\the\naMEtok\endcsname{%
+\def\noexpand\rm{\fam0\cmIXssrm}%
+\def\noexpand\mi{\fam1\cmIXssmi}%
+\def\noexpand\sy{\fam2\cmIXsssy}%
+\def\noexpand\ex{\fam3\cmIXssex}%
+ \textfont0=\cmIXssrm \textfont1=\cmIXssmi
+ \textfont2=\cmIXsssy \textfont3=\cmIXssex
+ \textfont\itfam=\cmIXssit
+ \textfont\bffam=\cmIXssbd
+\def\noexpand\bd{\fam\bffam\cmIXssbd}%
+\def\noexpand\it{\fam\itfam\cmIXssit}%
+\def\noexpand\bi{\noexpand\ifIXssbierr\noexpand\it%
+\noexpand\else\noexpand\it\noexpand\message{<TEXT1> Warning. %
+No bold italic font in CMSAN9. Will print italic font .}%
+\noexpand\global\noexpand\IXssbierrtrue \noexpand\fi}%
+\def\noexpand\tt{\noexpand\ifIXsstterr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No typewriter font in CMSAN9. Will print roman font .}%
+\noexpand\global\noexpand\IXsstterrtrue \noexpand\fi}%
+\def\noexpand\cc{\noexpand\ifIXssccerr\noexpand\rm%
+\noexpand\else\noexpand\rm\noexpand\message{<TEXT1> Warning. %
+No small caps font in CMSAN9. Will print roman font .}%
+\noexpand\global\noexpand\IXssccerrtrue \noexpand\fi}%
+\noexpand\rm%
+\noexpand\nonIBM%
+\noexpand\let\noexpand\bolditalic=\noexpand\bi%
+\noexpand\let\noexpand\italic=\noexpand\it%
+\noexpand\let\noexpand\bold=\noexpand\bd%
+\noexpand\let\noexpand\caps=\noexpand\cc%
+\noexpand\let\noexpand\typewriter=\noexpand\tt%
+\noexpand\let\noexpand\roman=\noexpand\rm%
+\noexpand\let\noexpand\symbol=\noexpand\sy%
+\noexpand\let\noexpand\mathitalic=\noexpand\mi%
+\noexpand\let\noexpand\extension=\noexpand\ex%
+\noexpand\interlineskip{%
+\noexpand\csname\the\naMEtok ilsixss\noexpand\endcsname}}%
diff --git a/macros/text1/pc/models/letter.inp b/macros/text1/pc/models/letter.inp
new file mode 100644
index 0000000000..4cac048afa
--- /dev/null
+++ b/macros/text1/pc/models/letter.inp
@@ -0,0 +1,51 @@
+% LETTER FORMAT FILE bth 4/1/87
+\catcode`*=11
+\raggedbottom % text height may vary from page to page
+\if*msp\defaultmono
+ \let\titlefont=\defaultmono
+ \let\twelvept=\defaultmono
+ \let\tenpt=\defaultmono
+ \let\rm=\defaultmono
+ \fi % monospace check
+\newtoks\departmentname % department name for letterhead
+\newtoks\campuszip % zip code for letterhead
+\newtoks\campusphone % phone number for letterhead
+\newtoks\date % date token list
+\newif\if*postscript
+\*postscriptfalse
+%
+\def\STOP{\endgroup\par}% ends obeylines grouping
+%
+\def\BEGINADDRESS{\begingroup\parskip=0pt\parindent=0pt\obeylines}%
+\let\SALUTATION=\null
+\let\BODY=\STOP
+\def\CLOSING{\par\vs{\bl}\begingroup\parskip=0pt\parindent=0pt
+ \obeylines}%
+\def\COPIES{\par\vs{\bl}
+ \setbox0=\hbox{Copies:\quad}\parindent=\wd0 \nin Copies:\quad}%
+\def\ENCLOSURES#1{\par Enclosures:\quad #1}% sets enclosures text line
+\def\ENDLETTER{\par\endgroup}% stop any obeylines grouping
+% Default for the title (first) page
+\titlepageformat{\titleleadskip{0in}
+ \titlefootline{}
+}% end title page format
+\def\letterhead{{\parskip=0pt
+ \if*msp
+ \cl{\titlefont Washington State University}
+ \vs{\bl}\hrule\vs{\bl}
+ \cl{\the\departmentname}
+ \cl{Pullman, Washington\ \the\campuszip}
+ \cl{\the\campusphone}
+ \vs{1\bl} % number of blank lines inserted
+ \nin\the\date %
+ \else
+ \cl{\titlefont Washington State University}
+ \vs{4pt}\hrule\vs{6pt}
+ \cl{\twelvept \the\departmentname}
+ \cl{\tenpt Pullman, Washington\ \the\campuszip}
+ \cl{\tenpt \the\campusphone}
+ \vs{1\bl} % number of blank lines inserted
+ \nin\the\date %
+ \fi
+}}% end letterhead markup
+\catcode`*=12
diff --git a/macros/text1/pc/models/letter.mdl b/macros/text1/pc/models/letter.mdl
new file mode 100644
index 0000000000..432fffbdfe
--- /dev/null
+++ b/macros/text1/pc/models/letter.mdl
@@ -0,0 +1,45 @@
+% LETTER MARKUP (style, full block) APRIL 1, 1986
+% To print on monospace printers (line printers, daisy-wheel printers)
+%\monospace % delete the "%" symbol at the beginning of this line
+\paragraphskip{12pt} % distance between paragraphs
+\paragraphindent{0pt} % first line word indent
+\sfs{cm18}{titlefont}{24pt}% large font selected for letterhead
+\input letter.inp % places the format file into your text file
+% LETTERHEAD INFORMATION
+% Type the name of your department, the campus zip code,
+% the campus telephone number, and date (if not today's
+% date) between the curly braces of the samples shown
+% below. This information will be added to the letterhead.
+%........................................................................
+\departmentname{name of your department or organization}
+\campuszip{99164-????}
+\campusphone{(509) 335-????}
+\date{\today}
+% . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+\letterhead %
+\vs{2\bl} %
+% LETTER ADDRESS
+\BEGINADDRESS % . . . . insert address below this line . . . . . . . . .
+\SALUTATION % . . . replace the salutation on the next line . . . . . . .
+Dear ????
+\BODY % LETTER BODY
+% . . . . . . insert the text of the letter below this line . . . . . . .
+% . . . . . . . . . . . . and above this line . . . . . . . . . . . . . .
+% LETTER CLOSING
+\CLOSING % . . . . replace closing line, if desired . . . . . . . . . . .
+Sincerely yours,
+\vs{3\bl}
+% SIGNATURE LINE
+% . . . . . . . . . replace signature line . . . . . . . . . . . . . . .
+John Doe
+\vs{\bl}
+% ENCLOSURES AND COPIES
+% . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+% Use \ENCLOSURES markup for an enclosure number, %
+% for example: \ENCLOSURES{3} %
+% Use \COPIES markup for a copy list, %
+% for example: \COPIES first name %
+% second name %
+% third name, etc. %
+% . . . . . . . enter enclosures and copies below this line . . . . . . .
+\ENDLETTER %------------- and above this line ---------------------------
diff --git a/macros/text1/pc/models/memo.inp b/macros/text1/pc/models/memo.inp
new file mode 100644
index 0000000000..bbf6aa632e
--- /dev/null
+++ b/macros/text1/pc/models/memo.inp
@@ -0,0 +1,48 @@
+% MEMO TEXINPUT FORMAT FILE
+% dlw 8/15/86
+\catcode`*=11
+\if*msp \let\titlefont=\defaultmono
+ \let\twelvept=\defaultmono
+ \let\tenpt=\defaultmono
+ \let\rm=\defaultmono
+ \fi % change all fonts to defaultmono for the monospace option
+\rightragged
+\newif\if*copies
+\*copiesfalse
+\newtoks\*lfthead \*lfthead = { }
+\newtoks\*ctrhead \*ctrhead = { }
+\newtoks\*rthead \*rthead = { }
+\rightragged
+% Default for the title (first) page
+\titlepageformat{\titleleadskip{0in}
+ \titlefootline{}
+}
+\def\memopageheadingformat#1{% setup for memo running head
+ \def\*left##1{\global\*lfthead={##1}}%
+ \def\*center##1{\global\*ctrhead={##1}}%
+ \def\*right##1{\global\*rthead={##1}}%
+#1}% end memoheading format
+\let\mhf=\memopageheadingformat
+\memopageheadingformat{\*left{}\*center{\pagenumber}\*right{}}
+\runningheadformat{\bothpages{\twelvept
+ \line{\hbox to.33333\hsize{\the\*lfthead\hss}\hfil
+ \hbox to.33333\hsize{\hss\the\*ctrhead\hss}\hfil
+ \hbox to.33333\hsize{\hss\the\*rthead}}
+ \vs{28pt}} % 28pt = .4in
+}% end runningheadformat
+\def\MEMO{\begingroup\obeylines\parskip=0pt\parindent=60pt}%
+\def\TEXT{\endgroup\if*msp\defaultmono\ssp\else\twelvept\fi %
+ \vs{\bl}\hrule\vs{2\bl}}%
+%
+\cl{{\titlefont M E M O R A N D U M}}
+\if*msp\par\vs{\bl}\ssp
+ \else\par\vs{.4in}\isk{18pt}\fi
+\def\TO{\nin To:\par\vs{-\bl}}%
+\def\FROM{\if*msp\vs{\bl}\fi\nin From:\par\vs{-\bl}}%
+\def\DATE#1{\if*msp\vs{\bl}\fi\nin Date:\par\vs{-\bl}#1}%
+\def\SUBJECT{\if*msp\vs{\bl}\fi\nin Subject:\par\vs{-\bl}}%
+\def\COPIES{\global\*copiestrue\vs{\bl}\nin Copies:\par\vs{-\bl} %
+ \begingroup\obeylines\singlespace %
+ \parskip=0pt\parindent=60pt}%
+\def\ENDMEMO{\if*copies\par\endgroup\global\*copiesfalse\else\par\fi}%
+\catcode`*=12
diff --git a/macros/text1/pc/models/memo.mdl b/macros/text1/pc/models/memo.mdl
new file mode 100644
index 0000000000..42d03e93be
--- /dev/null
+++ b/macros/text1/pc/models/memo.mdl
@@ -0,0 +1,21 @@
+% MEMO TEXMODEL
+% August 15, 1986
+% To print on monospace printers delete the % symbol before \monospace
+%\monospace
+\sfs{cm18}{titlefont}{24pt}% Font selected for heading
+\input memo.inp % Loads memorandum format file
+\MEMO % Prints memorandum heading
+%--------Enter the text after each markup on the following lines---------
+%------------------multiple line entries may be used---------------------
+\TO
+\FROM
+\DATE {\today}
+\SUBJECT
+\TEXT %----- Insert the memo below this line-----------------------------
+
+%--------------For a list of copies use the \COPIES: markup-------------
+% for example: \COPIES first name
+% second name
+% third name, etc.
+%------------enter the copies markup and names below this line-----------
+\ENDMEMO % ----------------and before this line--------------------------
diff --git a/macros/text1/pc/models/mergelet.mdl b/macros/text1/pc/models/mergelet.mdl
new file mode 100644
index 0000000000..de4e4fa4b2
--- /dev/null
+++ b/macros/text1/pc/models/mergelet.mdl
@@ -0,0 +1,77 @@
+% Sample Letter for Merge File Model
+%
+% TEXT1 Letterhead description, change to suit your letter
+%
+%
+\begingroup
+\paragraphskip{0pt}
+\centerline{{\titlefont Washington State University}}
+\vs{4pt}\hrule\vs{4pt}
+\centerline{{\twelvept\bd Academic Computing Service}}
+\vs{-2pt}
+\centerline{{\tenpt Pullman, Washington 99164-1220\lbr 509/335-0411}}
+\vs{1\bl} % number of blank lines inserted
+\endgroup
+\vs{\bl}
+\tenpt
+\nin{\today}
+\vs{\bl}
+\asisbegin
+\noemptyspace\title\ \firstname\ \lastname
+\noemptyspace\company
+\address
+\city, \state\ \zipcode
+\phone
+
+Dear \firstname:
+
+\asisend
+This letter is a sample for the merge file facility of \text1. Ten
+data fields were created with DBASE~III on a PC and transferred to
+CMS. The fields were delimited with double quotations marks
+({\tt "}) and a comma placed between data fields by DBASE. Any data
+base program that allows data fields to be delimited with quotation
+marks could be used. A data file may also be created
+directly on CMS by entering the data in the following manner:\lbr
+\hs{2in}{\tt "}field one{\tt "},{\tt "}field two{\tt "},\ellipsis3,{\tt
+"}last field{\tt "}\lbr
+or written as \lbr
+\hs{2in}{\tt "}field one{\tt ""}field two{\tt "\ellipsis3\ "}last
+field{\tt "}\lbr
+the commas between data fields are optional.
+
+Quotation marks must be placed on either side of each field
+(delimit the field) and the {\it each data field must come in the same
+sequence as the data names specified in the {\tt \\fieldnames} markup}.
+{\bd No \it field may be omitted}, however, a field may be empty
+({\it i.e.}, {\tt "}first field{\tt ","","}third field{\tt "}
+\ellipsis3 ).
+
+The data markup (field names immediately preceded by a {\tt \\} )
+may be used to place text anywhere in the letter, but
+each field should be followed by a control space markup (\\ \ , a
+backslash followed by a blank space) or \text1
+will drop the space after the field. For example, the \\firstname\\
+\\lastname and \\amount markup have been used to add the
+recipients name and a dollar amount in the following line.
+
+\cl{The \firstname\ \lastname\ account has been charged \amount\ for
+printing services.}
+
+The {\tt \\noemptyspace} markup may be used to prevent a blank line
+if an address line is empty. Place the data field markup between the
+{\tt \\noemptyspace} markup and the linebreak ({\tt \\lbr}) markup
+({\it i.e.}, {\tt \\noemptyspace\\company\\lbr} would prevent a blank
+line if the company data field were empty). The {\tt\\noemptyspace}
+markup prevents an extra space after an empty data field. Place
+it in the following manner: {\tt \\noemptyspace\\title\\
+\\firstname\\ \\lastname\\lbr} The {\tt \\noemptyspace} markup will
+remove the following control space ({\tt \\ }) or control line break
+({\tt \\lbr}) if the specified data field
+is empty.
+\vs{\bl}
+\noindent
+Sincerely yours,
+\vs{3\bl}
+\noindent
+John Doe
diff --git a/macros/text1/pc/models/mergelst.mdl b/macros/text1/pc/models/mergelst.mdl
new file mode 100644
index 0000000000..0d15914892
--- /dev/null
+++ b/macros/text1/pc/models/mergelst.mdl
@@ -0,0 +1,17 @@
+% Sample data base Merge File address list, created with dBASE III
+% data field names are as follows:
+% title, firstname, lastname, company, address,
+% city, state, zipcode, phone, amount
+% All data fields must be present for each entry, although the data
+% field itself may be empty (i.e., "" is an empty or null data field).
+%
+"Ms.","Claire","Buckman","ABC Distributing Director","8307 Santa Anita
+Blvd","Oxnard","CA","93034","(555)456-9059","$5.00"
+"Mr.","Rick","Lisbonn","Vice-President for Marketing","1550 Keystone
+St.","Glendale","CA","91206","(555)455-3344","$15.00"
+"Dr.","Hank","Bicksby","Research Institute, Manager","4101 Peonia
+Rd","Flagstaff","AZ","86001","(555)966-1278","$25.00"
+"","Lena","Garnett","","520 S. 8th St.","Reno","NV","89504",
+"(555)766-9121","$3.00"
+"Mrs.","Lisa","Kafmanan","Sales Support Staff Manager","1960 Lindley
+Ave.","Reseda","CA","91355","(555)860-0300","$8.00"
diff --git a/macros/text1/pc/models/mergetxt.inp b/macros/text1/pc/models/mergetxt.inp
new file mode 100644
index 0000000000..a25e9617e5
--- /dev/null
+++ b/macros/text1/pc/models/mergetxt.inp
@@ -0,0 +1,184 @@
+% Merge File Model Macro Definition File
+\catcode`*=11
+\catcode`"=\active
+\catcode`,=\active
+\catcode`@=\active
+\newbox\FirstUp
+\newbox\SecondUp
+\newbox\ThirdUp
+\newcount\*first \*first=0 % first token field
+\newcount\*index \*index=0 % field index
+\newcount\*lastentry \*lastentry=0 % last token filed
+\newcount\*letternumber \*letternumber=0 % letter number from start
+\newcount\LblsUp \LblsUp=1 % number of labels per line
+\newcount\LblsAcross \LblsAcross=0 % counter for labels accross
+\newdimen\LblMat \LblMat=0pt % left and right label margins
+\newdimen\LblHt \LblHt=0in % vertical label size
+\newdimen\LblWd \LblWd=0in % horozontal label size
+\newif\if*check \*checkfalse % datacheck for manual entry
+\newif\if*lbfopen \*lbfopenfalse % check for open label file
+\newtoks\*csnametoks \*csnametoks={} % tokens for field names
+\newtoks\*maillblfmt \*maillblfmt={} % label sheet format code
+\newtoks\*addrlbl \*addrlbl={} % address label tokens
+\newwrite\*labels % create label filee
+
+\gdef,{\char'54{}}%
+% Datacheck forces a print letter after each set of fields
+\def\datacheck{\global\*checktrue}%
+\def@{\ifnum\*index>0
+ \global\*index=\*first % reset index
+ \if*check
+ \global\advance\*letternumber by1
+ \immediate\write16{Letter number \the\*letternumber.
+ First Data Field: (\the\toks\*first) . . .
+ Last Data Field: (\the\toks\*lastentry ). }
+ \fi % write to log file for data check
+ \*prnletter % print current data
+ \fi
+} % end of @ definition
+
+% Take user defined names to build control sequences
+\def\fieldnames#1{\par
+ \global\advance\count15 by 1 % new token register
+ \global\*first=\count15 % first new token register
+ \parsenames#1\end}% end fieldnames markup
+
+% Separate name fields into individual entries
+\def\parsenames#1{\ifx#1\end
+ \createfield
+ \let\next=\relax
+ \global\*lastentry=\count15
+ \global\*index=\*first
+ \*csnametoks={}
+ \else
+ \ifx#1,
+ \createfield
+ \global\advance\count15 by 1
+ \*csnametoks={}
+ \let\next=\parsenames
+ \else \*csnametoks=\expandafter{\the\*csnametoks#1}
+ \let\next=\parsenames
+ \fi\fi
+ \next}% end parsenames markup
+
+% CREATEFIELD create control sequence names from name field entries
+\def\createfield{\expandafter\xdef\csname\the\*csnametoks\endcsname
+ {\noexpand\the\toks\the\count15 }}% end createfield markup
+
+% DEFINE " as name of merge command
+\def"#1"{% set quote marks as active macro and delimiter
+ \ifnum\*index=0 \global\*index=\*first\fi
+ \global\toks\*index={#1} % gather argument in token variable
+ \ifnum\*index<\*lastentry % continue gathering process
+ \gdef,{\gdef,{\char'54{}}}% % drop , in data but not in text
+ \global\advance\*index by1 % index by 1
+ \ignorespaces % eliminate spurious spaces
+ \else % end process
+ \global\*index=0
+ \if*check
+ \global\advance\*letternumber by1
+ \immediate\write16{Letter number \the\*letternumber.
+ First Data Field: (\the\toks\*first) . . .
+ Last Data Field: (\the\toks\*lastentry ). }
+ \fi % write to log file for data check
+ \*prnletter % print current data
+ \fi}% end define " as macro name
+
+% Merge letter text file merged for each data record
+\def\*prnletter{% Print the letter text with current name/address fields
+ \catcode`"=12\catcode`@=3 % set " and @ to normal catcodes
+ \newpage % start new page for each letter
+ \setpagenumber{1} % reset page number
+ \inputletter % new page then get letter text file
+ \*savelabels{\*setlabel} % save address label information
+ \catcode`"=\active\catcode`@=\active % reset catcodes for markup defs
+ \relax}% end prnletter markup
+
+% Give filename for letter text
+\def\documentfilename#1{\gdef\inputletter{\input #1 }}%
+
+% Give maillist data filename
+\def\datafilename#1{\input #1 }%
+
+% Print no empty lines with the line break markup
+\def\noemptyspace#1#2{\edef\V{#1}\edef\W{\empty}%
+ \ifx\V\W% do nothing if empty argument
+ \else #1#2\fi% if not empty replace argument with the line break
+}% end no emptyspace
+\let\nes=\noemptyspace % set abbreviation
+
+
+% SAVELABELS ships information for labels to the label file
+\def\*savelabels#1{% Write Mail Label Information to TEXT1$$.LABEL
+ \if*lbfopen % do nothing if file TEXT1$$.LABEL already open
+ \else \immediate\openout\*labels=text1$$.label % open TEXT1$$.LABEL
+ \immediate\write\*labels{\the\*maillblfmt} % write format
+ \global\*lbfopentrue\fi % set open flag
+ \global\advance\LblsAcross by1 % set label postion pointer
+ \ifnum\LblsAcross>\LblsUp \global\LblsAcross=1 \fi
+ \edef\T{% create labels
+ \ifnum\LblsAcross=1 \setbox\FirstUp=\fi % left label
+ \ifnum\LblsAcross=2 \setbox\SecondUp=\fi% center label
+ \ifnum\LblsAcross=3 \setbox\ThirdUp=\fi % right label
+ \vtop to\LblHt{\hsize=\LblWd \leftskip=\LblMat \rightskip=\LblMat
+ \parindent=0pt #1\par\vfil} % make label to label size and width
+ \ifnum\LblsAcross=\LblsUp % print labels
+ \ifcase\LblsUp% case 0, no labels specified
+ \or\setbox\SecondUp=\null \setbox\ThirdUp=\null % one label
+ \or \setbox\ThirdUp=\null % two labels
+ \fi% end case % three label default
+ \line{\box\FirstUp\box\SecondUp\box\ThirdUp\hfil}
+ \fi}% end definition of T
+ \immediate\write\*labels{\T} % write information to file
+}% end save labels definition
+
+% Flushlabels prints any unprinted labels remaining in the markup
+\def\*flushlabels{% print any remaining boxed labels
+ \ifcase\LblsUp % case ), no labels specified
+ \or \setbox\SecondUp=\null \setbox\ThirdUp=\null % one label
+ \or \setbox\ThirdUp=\null % two labels
+ \fi% end case % three label default
+ \immediate\write\*labels{\line{\box\FirstUp\box\SecondUp\box\ThirdUp
+ \hfil}}%
+}% end flush any remaining labels
+
+% Print the label file TEXT1$$.LABEL
+\def\printlabels{\newpage % end last letter
+ \*flushlabels % print any remaining labels
+ \immediate\closeout\*labels % close data file
+ \setpagenumber{99} % labels begin on page 99
+ \input text1$$.label % input the address label data file
+}% end print mailing labels
+
+\def\addresslabelformat#1{\global\*addrlbl={#1}}%
+\*addrlbl={}
+
+\def\*setlabel{\the\*addrlbl}%
+
+% Set format for the mailing labels
+\def\maillabelformat#1{% Sets dimensions and margins of each label
+ \def\labelsetup##1{\global\*maillblfmt={##1}}%
+ \def\numberoflabelsperline##1{\global\LblsUp=##1}%
+ \def\labelheight##1{\global\LblHt=##1}%
+ \def\labelwidth##1{\global\LblWd=##1}%
+ \def\labelmat##1{\global\LblMat=##1}%
+ #1}% end mail label format
+\let\mlfmt=\maillabelformat % set abbreviation
+\catcode`*=12
+
+% Set defaults for the mailing labels
+% Maillabelformat sets the page and label information for mailing labels
+\maillabelformat{\labelsetup{% Sets page and margin settings
+ \raggedbottom
+ \parskip=0pt plus0pt minus0pt
+ \runningheadformat{\bothpages{\line{}}}
+ \pageformat{\topmargin{1in}
+ \bottommargin{0pt}
+ \leftmargin{0pt}
+ \rightmargin{0pt}}% end page format
+ }% end labelsetup
+ \numberoflabelsperline{3}% three labels max
+ \labelheight{1in}
+ \labelwidth{2.75in}
+ \labelmat{.25in}
+}% end mail label format
diff --git a/macros/text1/pc/models/mergetxt.mdl b/macros/text1/pc/models/mergetxt.mdl
new file mode 100644
index 0000000000..9b5c9ac534
--- /dev/null
+++ b/macros/text1/pc/models/mergetxt.mdl
@@ -0,0 +1,96 @@
+% MERGE LETTER MODEL, merges address list with letter
+\input mergetxt.inp % READ TEXT1 merge file format instructions
+%
+% Select special fonts and setting markup used
+% in the merge process here:
+%
+\selectfontset{cm18}{titlefont}{default} % special letter heading font
+\titlepageformat{\titleleadskip{0in}} % no initial skip for letters
+%
+% Run TEXT1 against a file on your disk that includes
+% this model. A set of five sample letters will be printed. The
+% sample letter describes the mail merge setup. Once you have
+% run the model and read the letter, make the necessary
+% modifications to your file. Set the address field names of
+% your address file in the "\fieldnames{name, name, ...}"
+% markup with the data field names of your data base file.
+% Create the "shell letter," your letter, which includes the
+% address field names of your data file, preceded by a "\",
+% i.e., \namea, \nameb, etc. You need use only those data
+% fields necessary in the document and address label, but all
+% fields in your data base file must be given in the field
+% names markup. Specify the name of your letter file
+% "shell letter" with the "\documentfilename{fn.ft}" markup;
+% specify the address data file with the "\addressfile{...}"
+% markup; and then PRINT the file containing your letter merge
+% model to merge the address file with the shell letter and
+% print the label sheet.
+%
+% NOTE: If you create an address file by hand remove the percent sign
+% before the datacheck MARKUP. The number of the letter from the
+% beginning of the merge file data base and the first and last
+% data fields will be listed on the screen and in the log file
+% when data check is active. This will aid you in finding any
+% errors in your data file.
+%
+%\datacheck % SET DATACHECK by removing the "%" symbol
+%
+% Give all data field names in sequence of occurrence
+% (address list names)
+%
+% Format: \fieldnames{name1, name2, name3, ..., namelast}
+
+\fieldnames{title, firstname, lastname, company, address, city,
+ state, zipcode, phone, amount}
+
+% Give file name for document text (letter file that includes
+% the field names for the replaceable text in the document)
+%
+% Format: \documentfilename{filename.filetype}
+
+\documentfilename{mergelet.mdl}
+
+% WARNING!
+% If you want to modify the address label format, then the
+% \addresslabelformat markup MUST come prior to the
+% \datafilename markup.
+%
+% Format: \addresslabelformat{all fields and markup to create label}
+
+\addresslabelformat{\noindent\title\ \firstname\ \lastname\lbr
+ \company\lbr
+ \address\lbr
+ \city, \state\quad\zipcode}
+
+% Now specify where the address data file is located with
+% the \datafilename markup.
+%
+% Format: \datafilename{filename.filetype}
+
+\datafilename{mergelst.mdl}
+
+% PRINTING A MAILING LABEL SHEET
+%
+% You may use the "\maillabelformat{}" markup to change
+% the default label format markup. The default label format
+% prints three inch-high labels across the page which can be
+% copied onto a label sheet with an appropriate copy machine.
+%
+% WARNING!
+% The \maillabelformat{} markup must be placed BEFORE the
+% \printlabels markup to change the system defaults.
+%
+% Select the font setto be used in printing the labels.
+
+\tenpt % prints labels with computer modern ten point
+
+\printlabels % print address label sheet for Xerox label sheet
+
+% Labels will be printed beginning on page 99.
+%
+% WARNING!
+% If you have an empty data field occurs in the data being
+% processed within the \addresslabelformat, the field will
+% be printed as a blank space or as a blank line if the
+% field is by itself on the line.
+
diff --git a/macros/text1/pc/models/paper.inp b/macros/text1/pc/models/paper.inp
new file mode 100644
index 0000000000..b0baec1743
--- /dev/null
+++ b/macros/text1/pc/models/paper.inp
@@ -0,0 +1,10 @@
+% Student Paper Layout -- Monospace
+\footnoteformat{\everyfootnote{\rm\pin{.5in}\psk{1\bl}
+ \frenchspacing\singlespace}
+}
+\bibliographyformat{\bibentryformat{\goodbreak\vs{1\bl}
+ \frenchspacing\singlespace\hp\nin}
+ \titleformat{\np\cl{\us\bibtitle}
+ \vs{\bl}
+ }
+}
diff --git a/macros/text1/pc/models/paper.mdl b/macros/text1/pc/models/paper.mdl
new file mode 100644
index 0000000000..1ebf653335
--- /dev/null
+++ b/macros/text1/pc/models/paper.mdl
@@ -0,0 +1,28 @@
+% Student Paper Layout
+% Last updated on = 10/16/86
+\monospace
+\doublespace
+\input paper.inp % get paper format
+% Cover Page
+ \vsk{1in plus 2fil minus 1in} % space at top of page
+ \centerlinesbegin % all lines centered on cover page
+ \frenchspacing % no double spaces after periods on cover page
+%%%% insert title (using one or more lines) between dashed lines
+%--------------------------------------------------------------------
+%--------------------------------------------------------------------
+\vs{2in} % space between title and author
+%%%% insert author(s) (using one or more lines) between dashed lines
+%--------------------------------------------------------------------
+%--------------------------------------------------------------------
+\vs{2in} % space between author and course
+%%%% insert course (using one or more lines) between dashed lines
+%--------------------------------------------------------------------
+%--------------------------------------------------------------------
+\vs{.5in} % space between course and date
+%%%% Date follows; \today = current date or type over with desired date
+\today
+ \centerlinesend
+ \vs{2in plus 1 fil minus 1in} %space at bottom of page
+ \newpage %end of title page
+ \setpagenumber{1}\titlepage %no page number on first page of text
+%%%% BEGINNING OF PAPER
diff --git a/macros/text1/pc/models/resume.inp b/macros/text1/pc/models/resume.inp
new file mode 100644
index 0000000000..5370817b18
--- /dev/null
+++ b/macros/text1/pc/models/resume.inp
@@ -0,0 +1,62 @@
+%
+\catcode`*=11
+\if*msp
+\pageformat{\pagelength{11in}
+ \pagewidth{8.5in} % 792pt = 11in; 612pt = 8.5in
+ \topmargin{1in}
+ \bottommargin{1.2in} % 58pt = .8in; 72pt = 1in
+ \leftmargin{1.2in}
+ \rightmargin{1in} % 86pt = 1.2in
+ \bindingadjust{0pt}
+}
+\titlepageformat{\titleleadskip{.15in}
+ \titlefootline{}
+}
+\paragraphskip{1\bl} \paragraphindent{0pt}
+\def\name#1{\par\hfill#1\hfill\gdef\headname{#1}}
+\name{}
+\runningheadformat{\bothpages{\line{
+ \lft{\headname}\ctr{{\it Curriculum Vitae}}
+ \rt{\bd\pagenumber}} \vs{\bl}}
+ }
+\runningfootformat{\bothpages{
+ \vs{\bl}\line{\lft{}\ctr{}\rt{\today}}}
+ }
+% Defaults for the \label markup
+\labelformat{\skipbefore{1\bl}
+ \labelwidth{72pt}
+ \gutter{28pt}
+ \everylabel{\defaultmono\bd}
+ }
+%
+\else
+\pageformat{\pagelength{792pt}
+ \pagewidth{612pt} % 792pt = 11in; 612pt = 8.5in
+ \topmargin{68pt}
+ \bottommargin{52pt} % 58pt = .8in; 72pt = 1in
+ \leftmargin{72pt}
+ \rightmargin{74pt} % 86pt = 1.2in
+}
+\titlepageformat{\titleleadskip{.15in}
+ \titlefootline{}
+}
+\paragraphskip{6pt} \paragraphindent{0pt}
+\def\name#1{\par\hfill#1\hfill\gdef\headname{#1}}
+\name{}
+\runningheadformat{\bothpages{
+ \line{\lft{\headname}\ctr{\it Curriculum Vitae}
+ \rt{\bd\pagenumber}} \vs{\bl}}
+ }
+\runningfootformat{\bothpages{
+ \vs{\bl}\line{\lft{}\ctr{}\rt{\today}}}
+ }
+% Defaults for the \label markup
+\labelformat{\skipbefore{1\bl}
+ \labelwidth{72pt}
+ \gutter{28pt}
+ \everylabel{\bd}
+ }
+\fi
+%
+\catcode`*=12
+%
diff --git a/macros/text1/pc/models/resume.mdl b/macros/text1/pc/models/resume.mdl
new file mode 100644
index 0000000000..ce5e0e1bcf
--- /dev/null
+++ b/macros/text1/pc/models/resume.mdl
@@ -0,0 +1,69 @@
+% Functional style; titled, justified resume
+%
+%********************* ***RESUME TEXMODEL*** **************************
+%* This TEXMODEL shows a sample resume. To get a copy of this sample, *
+%* simply run this file through TeX as it is. *
+%* When entering your own resume be sure to replace or delete all *
+%* sample text. DO NOT use this model on a printer that only can *
+%* print with \monospace. *
+%************************************************************************
+% RESUME START
+\input resume.inp
+\cl{\bd RESUME}
+\par
+\name{Orville T. Game}
+\cl{\it 9987 NE Oak St., Arbor Bay, CK 58924}
+\vs{1\bl}
+\label{Objective}
+Seeking position with manufacturing firm which will provide
+oportunity for advancement into personel-related position.
+\label{Education}
+\it Doctor of Hagiology, \rm Medical subterfuge\rt{1983.}\lbr
+Beasley College of Performing Arts, Pullman, CA
+
+\label{ }Completed courses in economic manipulation,
+John\-ny Carson analysis, and unpadded scrimmage.
+Special courses in radar sabotage, misspelling, and
+stream of consciousness reporting of news.
+Completed graduate courses in anthropology, anthrometry, anthrosophy,
+anthromorphism, and camp counselling.
+Committee: Michael Farnberger, Casper Weinberger, Bill Cheeseburger,
+and Warren Burgher.
+GPA: 1.75. 40\%\ financed by drug sales; 60\%\ by gambling.
+
+\label{}\it Master of Arts, \rm Philosophy\rt{1983.}\lbr
+University of Idaho, Moscow, ID
+
+\label{}Completed courses in philosophy, filo-making, fillerupedness,
+filling station technology, and filler.
+Completed graduate courses in philosophy, philology,
+philo\-lo\-gram\-matry, phylogeny, filliness, and phil\-i\-stines.
+Special Committee: Phil Marquette, Phillip Petroleum, Philo Bellows,
+and Phyllus Diller.
+GPA: 0.63. 50\%\ financed by bribes, 50\%\ by unpaid loans.
+\label{Related Experience}
+\it Consultant, \rm Computing Service Center\rt{1985-}\lbr
+Washington State University, Pullman, WA 99164-1220
+\par
+\label{}Direct acquisition of antique typesetting machinery and old
+metal sculptings for garden area.
+In charge of coffee for management.
+Qualified to exterminate bugs in really awkward and tiresome
+programs.
+Training to collect and recycle aluminum cans for distribution
+to East coast distilleries.
+\label{Other Experience}
+\it Research Associate-Biowarfare, \rm Mars Institute\rt{1984-}\lbr
+P.O. Box 9, Pullman, WA 99163
+\par
+\label{}Participate in studies on neutralizing liberal demo\-crats with
+nuclear warheads (low radiation, high neutron count).
+Analyze patterns of ideological disarray for potential weakness.
+Write articles on normative aspects of unethical behavior.
+Keep memoirs of same for distribution to publishers.
+\label{Awards}
+ Special award for boot-licking, 1982.
+Outstanding Stand Out, 1983.
+\label{Activities}
+ Drama Club, 1980--82; Alpha Kappa Kappa Fraternity
+\label{References} On request.
diff --git a/macros/text1/pc/models/thesis.inp b/macros/text1/pc/models/thesis.inp
new file mode 100644
index 0000000000..2dfd40e5c0
--- /dev/null
+++ b/macros/text1/pc/models/thesis.inp
@@ -0,0 +1,159 @@
+% WSU graduate school thesis requirements.
+\paragraphindent{36pt}
+\paragraphskip{12pt plus 2pt minus 1pt}
+\raggedbottom
+%
+%
+\catcode`*=11
+\if*msp
+\pageformat{\pagelength{11in}
+ \pagewidth{8.5in}
+ \topmargin{1.2in}
+ \bottommargin{1.2in}
+ \leftmargin{1.2in}
+ \rightmargin{1in}
+ \bindingadjust{0in}
+}
+\titlepageformat{\titleleadskip{1.25in}
+ \titlefootline{}
+}
+% Default values for the \chapter markup
+\chapterformat{\numberingstyle{1}
+ \titleformat{\dumpinsertseject
+ \centerline{\bd Chapter \chapternumber}
+ \centerline{\bd\chaptertitle}
+ \vs{1\bl}
+ \setsubheadanumber{0}
+ \setsubheadbnumber{0}
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}
+ }% end titleformat
+ \incontents{yes}
+}% end chapter format
+% Default values for the \subheada markup
+\subheadaformat{\numberingstyle{1}
+ \titleformat{\removelastskip\goodbreak\vs{2\bl}
+ \twelvept\bd\nin\subheadatitle\par\nobreak
+ \setsubheadbnumber{0}
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}
+ }% end titleformat
+ \incontents{yes}
+}% end subheadaformat markup
+% Default values for the \subheadb markup
+\subheadbformat{\numberingstyle{1}
+ \titleformat{\removelastskip\goodbreak\vs{2\bl}
+ \twelvept\it\nin\subheadbtitle\par\nobreak
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}
+ }% end titleformat
+ \incontents{yes}
+}% end subheadbformat markup
+% Default values for the \preface markup
+\prefaceformat{%
+ \titleformat{\dumpinsertseject
+ \centerline{\bd\prefacetitle}
+ \vs{1\bl}
+ \setsubheadanumber{0}
+ \setsubheadbnumber{0}
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}
+ }% end titleformat
+ \incontents{yes}
+}
+\paragraphskip{12pt}
+\asisformat{\skipbefore{0pt}
+ \everyasis{\rm\ssp\leftindent{36pt}}
+ \skipafter{0pt}}
+%
+\blockquoteformat{\skipbefore{0pt}
+ \everyblockquote{\rm\ssp\pin{.3in}\psk{12pt}
+ \leftindent{36pt} \rightindent{36pt}}
+ \skipafter{0pt}}
+%
+\else
+\pageformat{\pagelength{11in}
+ \pagewidth{8.5in}
+ \topmargin{1.2in}
+ \bottommargin{1in}
+ \leftmargin{1.3in}
+ \rightmargin{1in}
+ \bindingadjust{0in}
+}
+\titlepageformat{\titleleadskip{1.25in}
+ \titlefootline{}
+}
+% Default values for the \subheada markup
+\subheadaformat{\numberingstyle{1}
+ \titleformat{\removelastskip\goodbreak\vs{2\bl}
+ \twelvept\bd\nin\subheadatitle\par\nobreak
+ \setsubheadbnumber{0}
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}
+ }% end titleformat
+ \incontents{yes}
+}% end subheadaformat markup
+% Default values for the \subheadb markup
+\subheadbformat{\numberingstyle{1}
+ \titleformat{\removelastskip\goodbreak\vs{2\bl}
+ \twelvept\it\nin\subheadbtitle\par\nobreak
+ \setsubheadcnumber{0}
+ \setsubheaddnumber{0}
+ }% end titleformat
+ \incontents{yes}
+}% end subheadbformat markup
+\asisformat{\skipbefore{0pt}
+ \everyasis{\tenpt\ssp\leftindent{36pt}}
+ \skipafter{0pt}}
+%
+\blockquoteformat{\skipbefore{0pt}
+ \everyblockquote{\rm\ssp\pin{24pt}\psk{6pt}
+ \leftindent{36pt} \rightindent{36pt}}
+ \skipafter{0pt}}
+%
+\footnoteformat{\footnotedivider{144pt} % 144pt = 2in
+ \skipafterdivider{2.6pt}
+ \textreferenceposition{up}
+ \textreferenceplacement{after}
+ \textreferencefont{\tenpt}
+ \textreferencestyle{1}
+ \notereferenceposition{down}
+ \notereferencefont{\tenpt}
+ \notereferencestyle{1.}
+ \notereferencegutter{1em}
+ \everyfootnote{\tenpt\ssp\pin{12pt}\psk{6pt}\lin{6pt}}
+}
+%
+\endnoteformat{\skipbefore{4pt}
+ \textreferenceposition{down}
+ \textreferencefont{\rm}
+ \textreferencestyle{[1]}
+ \notereferenceposition{down}
+ \notereferencefont{\rm}
+ \notereferencestyle{1.}
+ \notereferencegutter{1em} % 1em = 12pt in a 12pt font
+ \everyendnote{\rm\pin{12pt}\psk{6pt}\lin{0pt}}
+}
+\fi
+%
+\def\copyrt{\if*msp{}\else
+ {{$\copyright$}}\fi}
+%
+\newcount\P
+\def\signatures#1#2{\par\vs{54pt}\P=#1
+ \ifnum\P>50 \P=50
+ \message{Number of signature lines will be limited to 50}\fi
+ \advance\P by-1
+ \hbox{\hs{3in}\vrule width3in height.4pt}
+ \hbox{\hs{3in}\hbox to 3in{\hfill #2 \hfill}}
+ \vs{36pt}
+ \loop\ifnum\P>0
+ \hbox{\hs{3in}\vrule width 3in height.4pt}
+ \vs{48pt}
+ \advance\P by-1\repeat
+ }%
+%
+\tableofcontentsformat{%
+ \toctitle{\ssp\centerline{\bd Table of Contents}
+ \vs{\bl}}}
+\catcode`*=12
diff --git a/macros/text1/pc/models/thesis.mdl b/macros/text1/pc/models/thesis.mdl
new file mode 100644
index 0000000000..bbfde6b140
--- /dev/null
+++ b/macros/text1/pc/models/thesis.mdl
@@ -0,0 +1,139 @@
+% WSU Graduate School Thesis Requirements
+% Last updated on = 6/15/87
+%********************* ***THESIS TEXMODEL*** **************************
+%* This TEXMODEL shows some sections of a sample thesis. For a printout *
+%* of a sample thesis, simply run this file through TeX as it is. *
+%* When entering your own thesis, be sure to replace or delete all *
+%* sample text. If you are printing your thesis on a monospaced printer,*
+%* the \monospace command must be activated by removing the percent *
+%* sign preceding it. *
+%************************************************************************
+% THESIS START
+
+% ***TITLE PAGE***
+
+%\monospace
+\input thesis.inp
+\justify \singlespace
+\setpagenumber{-1}
+\centerlinesbegin
+\bd
+A PHENOMENOLOGICAL THEORY OF
+\vs{12pt}
+CROSS-CULTURAL AESTHETICS
+\vs{1.25in}
+\rm
+By
+\vs{12pt}
+GEORG MACQUET
+\vs{1.25in}
+A thesis submitted in partial fulfillment of
+the requirements for the degree of
+\vs{12pt}
+MASTER OF ARTS IN ANTHROPOLOGY
+\vs{24pt}
+WASHINGTON STATE UNIVERSITY
+Department of Anthropology
+\vs{12pt}
+December 1986
+\vs{.8in}
+\copyrt Copyright by GEORG MACQUET, 1986
+All Rights Reserved
+\centerlinesend %DO NOT DELETE THIS LINE UNLESS LINE 19 IS DELETED
+% ***COPYRIGHT PAGE***
+\np
+\titlepage
+\vsk{7in}
+\centerlinesbegin
+\copyrt Copyright by GEORG MACQUET, 1986
+All Rights Reserved
+\centerlinesend %DO NOT DELETE THIS LINE UNLESS LINE 47 IS DELETED
+% ***SIGNATURE PAGE***
+\newpage
+\setpagenumber{-2}
+\rightragged
+\vsk{2.8in}
+\doublespace
+\nin To the Faculty of Washington State University:
+\par
+The members of the Committee appointed to examine the thesis of
+GEORG MACQUET find it satisfactory and recommend that it be
+accepted.
+%
+%******************************************************************
+%* The \signatures command draws the number of lines specified *
+%* in the first parameter for the committee members' signatures. *
+%* The first parameter may be any number, but if it is larger *
+%* than 5, spacing must be changed to make it fit on one page. *
+%* The second parameter of the \signatures command will be *
+%* centered as a title under the first line. *
+%******************************************************************
+%
+\singlespace
+\signatures{4}{Chairperson}
+\doublespace
+% ***ACKNOWLEDGE***
+\newpage
+\justify
+\preface{Acknowledgements}
+I would like to thank Clarke Moustakos and Helen Burdeman
+for their help in advising me to study Anthropology at ...
+% ***ABSTRACT PAGE***
+\newpage
+\vsk{.6in}
+\centerlinesbegin
+\bd
+A PHENOMENOLOGICAL THEORY OF
+\bd
+CROSS-CULTURAL AESTHETICS
+\rm
+ABSTRACT
+\putincontents1{\nin Abstract\leader\pagenumber}
+\vs{12pt}
+\singlespace
+by Georg Macquet, M.A.
+Washington State University
+December 1986
+\centerlinesend %DO NOT DELETE THIS LINE UNLESS LINE 84 IS DELETED
+\doublespace
+\noindent Chairperson: V.~L.~Nabokov
+\par
+Aesthetic phenomena can be defined from an anthropological perspective.
+Anthropology is empirical; therefore, aesthetic phenomena must also be
+defined empirically to be identified by the techniques of...
+\par
+%********************** MAIN TEXT OF THESIS *************************
+%* This ends the preliminary pages of the thesis and begins the main *
+%* text. The remaining sections of the thesis may be entered using any *
+%* or all standard TeXT1 markup commands, including \autofootnote, *
+%* \bibliography, \autoendnote, \subheada, etc. For more information *
+%* on the standard TeXT1 markup commands see the "TeXT1 Users Guide *
+%* (S-522)," or the "TeXT1 Reference Manual (S-523)." *
+%************************************************************************
+\chapter{Introduction}
+\setpagenumber{1}
+The original perspective of anthropology can contribute to a comprehension of
+art. Observational criteria are needed to identify aesthetic phenomena
+uniquely, and anthropology \el3
+\sha{Art as Product}
+In the past, the arts have been studied primarily as products in anthropology.
+But the product must be created by human beings who behave in certain ways. In
+Merriam's words:
+
+\bqb Through the humanistic elements of his culture, man seems to be making
+pointed commentary on how he lives; his social life in itself seems to bring
+about conditions under which he is unable to restrain himself from commenting
+upon himself\el3
+\bqe
+
+\sha{Styles of Representation}
+Representations are images that refer to the visual appearance of a thing.
+Gombrich's theory\afn{wherin a representation is not a symbol} is not
+appropriate in this context. Indeed, A.P. Meriam (1971)\aen{This is the only
+edition with the full analysis of semantic theories applied to oriental
+cultures.} states that\el3
+\newpage
+\cl{\bd Notes}
+\printendnotes
+\toc{-5}
+\bye
diff --git a/macros/text1/pc/readme.tex b/macros/text1/pc/readme.tex
new file mode 100644
index 0000000000..53922654ce
--- /dev/null
+++ b/macros/text1/pc/readme.tex
@@ -0,0 +1,38 @@
+The files in this directory are specifically for PCs. In the [.fonts] directory
+are the fonts not included with standard TeX but which are used in TEXT1. Down
+load these PK files in binary.
+
+ cd [anonymous.text1.pc.fonts]
+ bin
+ mget *.pk
+
+You will also need to get the TFM files in the [anonymous.text1.fonts]
+directory to go with these PK files.
+
+ cd [anonymous.text1.fonts]
+ bin
+ mget *.tfm
+
+In addition to the fonts, you will need to get the TEX files in the
+[anonymous.text1.macros] directory.
+
+ cd [anonymous.text1.macros]
+ mget *.tex
+
+These should be placed in the TeX input path on your PC.
+And then modify the TXT1*.TEX file so that near the top of the file it says
+"true" that this is for a PC.
+
+Next get the font sets
+
+ cd [anonymous.text1.pc.misc]
+ mget *.*
+
+they go in your TeX input path on the PC.
+
+Finally, you may optionally retrieve the models and blocks for a PC:
+
+ cd [anonymous.text1.pc.models]
+ mget *.*
+ cd [anonymous.text1.pc.blocks]
+ mget *.*
diff --git a/macros/text1/texix/plsort.pliopt b/macros/text1/texix/plsort.pliopt
new file mode 100644
index 0000000000..b644a4206c
--- /dev/null
+++ b/macros/text1/texix/plsort.pliopt
@@ -0,0 +1,9 @@
+ PLSORT: PROC(TEMP) OPTIONS(FORTRAN);
+ DCL TEMP FIXED BIN(31,0);
+ CALL PLISRTA(
+ ' SORT FIELDS=(38,256,CH,A,293,44,CH,A,342,256,CH,A,'||
+ '597,44,CH,A,646,256,CH,A,901,44,CH,A,10,4,BI,D,6,4,BI,A)',
+ ' RECORD TYPE=V,LENGTH=(1857) ',
+ 95000,TEMP);
+ RETURN;
+ END;
diff --git a/macros/text1/texix/texix.cmschan b/macros/text1/texix/texix.cmschan
new file mode 100644
index 0000000000..9c767000c6
--- /dev/null
+++ b/macros/text1/texix/texix.cmschan
@@ -0,0 +1,3 @@
+% Version 1.0; Dean Guenther; 4/1/86
+% Version 1.1; Dean Guenther; 12/87
+% Version 1.2; Dean Guenther; 6/28/88
diff --git a/macros/text1/texix/texix.cmsinfo b/macros/text1/texix/texix.cmsinfo
new file mode 100644
index 0000000000..72b6ab4e65
--- /dev/null
+++ b/macros/text1/texix/texix.cmsinfo
@@ -0,0 +1,5 @@
+TEXIX.WEB is the TEXT1 sorted index program. The TXT1V293.CMSCHAN can be used
+to create a TXT1V293 MODULE on CMS which has the sorted index program imbedded
+into TEX itself as an extended primative. PLSORT must be compiled to get a CMS
+TEXT files, and TEXIX WEB must be compiled with TEXIX CMSCHAN to get its TEXT
+file before compiling and linking TXT1V293 with TEX (version 2.93).
diff --git a/macros/text1/texix/texix.readme b/macros/text1/texix/texix.readme
new file mode 100644
index 0000000000..e2f9e3a8ec
--- /dev/null
+++ b/macros/text1/texix/texix.readme
@@ -0,0 +1,4 @@
+TEXIX is a program which is used in conjunction with TEXT1 macros to create a
+sorted index for TeX. In the text1.texix directory is the TEXIX source, along
+with a changes file for CMS. If you are using VMS, look in the text1.vax_vms
+directory for the VMS version. There is a Mac version in text1.macintosh.
diff --git a/macros/text1/texix/texix.web b/macros/text1/texix/texix.web
new file mode 100644
index 0000000000..bbf577633e
--- /dev/null
+++ b/macros/text1/texix/texix.web
@@ -0,0 +1,1577 @@
+% Version 1.3 makes it easier to create other changes files (6/89)
+\font\twelvept=cmbx12
+\font\tentex=cmr10
+\def\topofcontents{\null\vfill\eject
+ \def\titlepage{T}
+ \centerline{{\twelvept The \TeX IX Index Program}}
+ \centerline{{\twelvept For IBM VM/CMS Pascal/VS}}
+ \vskip15pt
+ \centerline{Version 1.3, June 1989}
+ \hbox{\vbox{\hsize\the\hsize This work is
+ protected as an unpublished work under U.S. copyright laws.
+ Copyright $\copyright$ 1988 by WSUCSC. All rights Reserved.}}
+ \vskip18pt
+ \hbox{\vbox{\hsize\the\hsize This software is furnished under a
+ license for
+ use only on a single computer system and may be copied only
+ with the inclusion of the above copyright notice.
+ This software, or any other copies
+ thereof, may not be provided or otherwise made available to any
+ other person except for use on such system and to one who agrees to
+ these license terms. Title to and ownership of the software shall
+ at all times remain in WSUCSC.}}
+ \vfill}
+\let\tentex=\tt
+\def\_{\leavevmode \kern.06em \vbox{\hrule width.3em}}%
+%
+\def\}{\ifmmode \rbrace
+ \else $\rbrace$\fi}%
+%
+\def\{{\ifmmode \lbrace
+ \else $\lbrace$\fi}%
+%
+\def\us#1{$\underline{\smash{\hbox{#1}}}$}%
+\def\lin#1{\par
+ \leftskip 0pt
+ \advance \leftskip by #1
+ }%
+\def\vs#1{\vskip #1\relax}
+\catcode`*=11
+% labeled definition macro
+%
+\newdimen\la*w \la*w=1in % Label width
+\newtoks\la*g \la*g={1em} % Label gutter
+\newtoks\la*s \la*s={12pt} % Skip before label
+\newtoks\la*f \la*f={\rm} % Label font
+\newbox\tempbox
+%
+\long\def\label#1{\par\vskip\the\la*s
+ \setbox\tempbox=\vtop{\hsize=\la*w
+ \leftskip=0pt
+ \rightskip=0pt plus2em
+ \tolerance=1600
+ \noindent
+ \the\la*f
+ #1}%
+ \hangindent=\la*w
+ \advance \hangindent by \the\la*g
+ \hangafter=1
+ \noindent
+ \setbox0=\hbox{\rlap{\box\tempbox}}\ht0=0pt\dp0=0pt\box0%
+ \hskip\la*w
+ \hskip\the\la*g
+ \ignorespaces}
+\let\la=\label
+\catcode`*=12
+\let\nin=\noindent
+\def\lbr{\null\hfil\break}
+\def\PASCAL{{\sc PASCAL/VS}}
+\def\hs#1{\hskip#1}
+\def\text#1{{\it \TeX T#1}}
+\def\9{\it}
+\def\bs{$\backslash$}
+% Version 1.0; Dean Guenther; 4/1/86
+%
+@* Introduction.
+This procedure was created to give \text1\ the ability to produce a sorted
+index in the same one pass, instead of creating the index, sorting it, and
+printing the index out in three separate steps.
+
+To accomplish this feat, a new control sequence, \bs{}sortindex, was added to
+the basic \TeX\ program which gives the \text1\ user up to three sorted
+index files per run. The format of this new control sequence is
+\par{\tt\indent\bs{}sortindex\it n}
+\par
+\nin where {\it n} is the index file number: 1, 2, or 3.
+
+@ The @^TEXIX@>
+program is written entirely in WEB, except for an external
+procedure, {\it plsort}, which is written in @^PL/1@> PL/1.
+This was necessary since
+\PASCAL\ cannot call
+@:plsort@>
+Syncsort @^SYNCSORT@>
+to do an internal sort, and PL/1 can.
+
+@
+Also, it should be pointed out early that I made use of \PASCAL'
+nifty string handling capability, in particular, the |string|,
+|index| and |substr| functions. If needed, these should not be too
+difficult to translate into another \PASCAL\
+compiler (famous last words).
+
+@p
+segment texix;
+procedure texix(ix:char); external;
+procedure texix;
+const @<Global Constants@>
+type @<Global Types@>
+var @! m,k,i,j :integer;@/
+@<Global Variables@>
+
+@ The file {\it ix\_file}
+is the file opened for output in the \text1\ session
+itself. It will be closed in TEXIX, opened for input, closed again, and
+finally opened for output where the final sorted index file will be
+written to, complete with all \text1\ markup necessary for printing
+the index.
+
+@<Global Var...@>=
+sysprint:text;
+@!ix_file :text;
+
+@ The {\it sort\_file} is used for the internal sort only. The \text1\ user
+never has access to it.
+
+@<Global Var...@>=
+@!sort_file :file of sort_type;
+
+@* Macros and definitions.
+Here are some macros and definitions used throughout.
+
+@d incr(#) == # := # + 1
+@d decr(#) == # := # - 1
+
+@d othercases == otherwise
+@d endcases == end;
+
+@d dosubstr == substr
+@d doindex == index
+
+@f othercases == else
+@f endcases == end
+
+@d getout == return
+@d messages == sysprint
+
+@d max_field = 300
+@d max_levels = 3
+@d max_lrecl = 2048
+
+@d remove_characters(#) == if length(in_record) > # then
+in_record := dosubstr(in_record,1 + #)
+else in_record := ''
+
+@d do_nothing == begin end
+
+@d do_sort_as == begin remove_characters(6);
+i := doindex(in_record,'{$}');
+write_sort_chars(i-1);
+remove_characters(3);
+end
+
+@d check_case == begin
+if not respect_case then for j:= 1 to
+sort_part[i].field_lngth do sort_part[i].field_level[j] :=
+upper_case(sort_part[i].field_level[j]); end
+
+@d string_type(#) == string(#)
+
+@d ccat_temp == @t\hs{2em}@>@=||@>@t\hs{2em}@>
+
+
+@d add_comma(#) == # := ccat(#,',')
+@d add_cmma_blnk(#) == # := ccat(#,', ')
+
+@d do_when_bold == begin
+if length(bold_string) > 0 then add_comma(bold_string);
+bold_string:=
+ccat(ccat(ccat(bold_string,'{\bd '),curr_str_page),'}');
+@.\bs{}bd@>
+end
+
+@d do_when_underscore == begin
+if length(us_string) > 0 then add_comma(us_string);
+us_string:=
+ccat(ccat(ccat(us_string,'\us{'),curr_str_page),'}');
+@.\bs{}us@>
+end
+
+@d do_when_italic == begin
+if length(rm_string) > 0 then add_comma(rm_string);
+rm_string:=
+ccat(ccat(ccat(rm_string,'{\it '),curr_str_page),'}');
+@.\bs{}it@>
+end
+
+@d do_when_roman == begin
+if length(rm_string) > 0 then add_comma(rm_string);
+rm_string:=ccat(rm_string,curr_str_page);
+end
+
+@d do_write(#)==write(#)
+
+@d do_lnwrite(#)==writeln(#)
+
+@ This is arbitrary, but
+there should never be more than 8 indicies.
+
+@d s_file_number == '9'
+
+@ This is used to print the subentry1 header if there are no page
+numbers under its subentry and there are under subentry2.
+
+@d id2_missing_check==
+curr_level:=2;
+if sort_record.sort_part[3].field_lngth=0
+then do_nothing else begin
+id2_is_missing:=true;
+write_header(sort_record.print[2].field_lngth,
+sort_record.print[2].field_level);
+id2_is_missing:=false;
+curr_level:=3;end
+
+@ This is used to print the primary header if there are no page
+numbers under the primary header, and there are page numbers under
+either subentry1 or subentry2.
+
+@d id1_missing_check==if sort_record.sort_part[2].field_lngth = 0
+then begin curr_level:=1;
+if sort_record.sort_part[3].field_lngth = 0
+then do_nothing else begin
+id1_is_missing:=true;
+write_header(sort_record.print[1].field_lngth,
+sort_record.print[1].field_level);
+id1_is_missing:=false;
+curr_level:=3;end;end
+else begin curr_level:=1;
+id1_is_missing:=true;
+write_header(sort_record.print[1].field_lngth,
+sort_record.print[1].field_level);
+id1_is_missing:=false;
+id2_missing_check;
+end
+
+@ This is a little macro used to access {\it write\_header}.
+
+@d write_prev_header==
+begin case curr_level of
+1: write_header(prev_ln1,prev_pn1);
+2: write_header(prev_ln2,prev_pn2);
+3: write_header(prev_ln3,prev_pn3);
+othercases do_nothing
+endcases
+end;
+
+@ The function ccat will concatenate two strings together.
+
+@^System dependent code@>
+@p function ccat(x,y:string_pass):string_pass;
+begin
+ ccat := x ccat_temp y;
+end;
+
+@* Opening and Closing the files.
+This is all very dependent on \PASCAL.
+
+@ The {\it reset\_file} procedure is used to open all files.
+One time this is done when first entering TEXIX.
+Note that the file name is ``{\tt IX\it n}'' where ``{\it n}'' is
+1--3. This can easily be extended to 4--8 by chaning the \bs{}index
+markup in TEXT1@@.
+The other time the open is done is when opening the sort file, after it
+has already been sorted.
+This is system dependent. The following will work for \PASCAL.
+
+@^System dependent code@>
+@p procedure reset_file(file_number:char);
+begin
+if file_number = '9' then reset(sort_file,
+'NAME=TEXT1$$.OUTSORT.A,LRECL=1857,RECFM=V')
+else reset(ix_file,
+ccat(ccat('NAME=TEXT1$$.IX',str(file_number)),'.A'));
+end;
+
+@
+The {\it sort\_file} is opened for output to write the sort records to.
+The {\it ix\_file} is opened for output after the sort records have
+been sorted and processed again.
+This is system dependent. The following will work for \PASCAL.
+
+@^System dependent code@>
+@p procedure file_rewrite(file_number:char);
+begin
+if file_number = '9'
+then
+rewrite(sort_file,'NAME=TEXT1$$.INSORT.A,LRECL=1857,RECFM=V')
+else
+rewrite(ix_file,
+ccat(ccat('NAME=TEXT1$$.IX',str(file_number)),
+'.A,LRECL=2048,RECFM=V'));
+end;
+
+@* The Sort Record Description. The record type called
+{\it sort\_type} is the record written to the {\it sort\_file}.
+If consists of the following:
+\la{\bf Bytes}
+\la{1}
+A one byte {\it record\_type} (0={\bf bold page number};
+2= roman page number (the default); 4=\us{underscored} \us{page}
+\us{number};
+6={\it italic page number}; 9=blind entry).
+\la{2--5}
+The integer page number. If the page
+number is in the preface part of the document, then the page number will
+be negative.
+\la{6--9}
+Used in sorting decending. That means that -1 will be at the top.
+If the page number is plus to begin with, then this is set to zero
+for sorting, so it will be at the bottom of the list.
+\la{10-29} This is the same as page number, unless the page number is
+negative, in which case this field is a roman numeral.
+\la{30--33\lbr34--333\lbr334--337\lbr338--637\lbr638--641\lbr642--941}
+The sort field. There are three arrays in this field. Each array
+consists of a 4 byte length, followed by the {\it field\_array} which is
+the length of the sort entry or subentry.
+It is these fields which will get sorted by @^Syncsort@> Syncsort.
+If there was a {\it sort\_as}
+used for a sort entry or subentry, that value passed in the {\it sort\_as}
+is placed here.
+\vs{24pt}
+\la{942--945\lbr946--1245\lbr1246--1249\lbr
+1250--1549\lbr1550--1553\lbr1554--1853}
+The print field.
+The description is the same as the sort field.
+This is the way the index entry will print, but not necessarily how
+it will sort.
+\vs{96pt}
+
+@ @<Global Constants@>=
+@!max_pn_alpha=20;
+@!max_pnum=9;
+
+@ @<Global Types@>=
+@!string_pass=string_type(max_lrecl);
+@!pass_pn_alpha=string_type(max_pn_alpha);
+@!pn_type=packed array[1..max_pnum] of char;
+@!pn_alpha_type=packed array[1..max_pn_alpha] of char;
+@!field_array = packed array[1..max_field] of char;
+@!field_type = packed record@|
+@!field_lngth :integer;
+@!field_level :field_array;
+end;
+@!sort_type = packed record@/
+@!record_type :char;
+@!page_number :integer;
+@!abs_page_number :integer;
+@!page_string :pn_alpha_type;
+@!sort_part :packed array[1..3] of field_type;
+@!print :packed array[1..3] of field_type;
+end;
+
+@* Subroutines. For many of the following subroutines, the following
+global variable, {\it current\_level} is needed to indicate what
+index level we are presently processing.
+0 = the primary index; 1 = subentry 1, and
+2 = subentry 2.
+{\it on\_a\_roll} is `true' if we have a series of consecutive page
+numbers going. `false' otherwise.
+In other places, {\it print\_style}=1 for the paragraph style; it is
+2 for the dash style; and it is 3 for the indent style.
+
+@<Global Var...@>=
+@!curr_level :integer;
+@!on_a_roll:boolean;
+
+@ The {\it write\_header} procedure will write out the primary and
+subentry level titles from {\it sort\_record.print}.
+
+@p procedure write_header(print_length:integer;print_field:field_array);
+var i:integer;
+begin
+case curr_level of
+1: begin
+ do_write(ix_file,'\goodbreak\hp ');
+@.\bs{}leavevmode@>
+@.\bs{}goodbreak@>
+@.\bs{}hp@>
+ for i:=1 to print_length do do_write(ix_file,print_field[i]);
+ case print_style of
+ '1':begin
+ do_write(ix_file,', ');
+ end;
+ '2','3':begin
+ if id1_is_missing or dot_leadering
+ then do_lnwrite(ix_file,' ')
+ else do_lnwrite(ix_file,', ');
+ end;
+ othercases do_nothing
+ endcases; end;
+2: begin case print_style of
+ '1':do_nothing;
+ '2':begin
+ do_write(ix_file,'\indentsubentry',ix,'1---');
+@.\bs{}indentsubentry@>
+ end;
+ '3':begin
+ do_write(ix_file,'\indentsubentry',ix,'1');
+ end;
+ othercases do_nothing
+ endcases;
+ for i:=1 to print_length do do_write(ix_file,print_field[i]);
+ if (print_style <> '1') or id2_is_missing or dot_leadering
+ then do_lnwrite(ix_file,' ')
+ else do_lnwrite(ix_file,', ');
+ end;
+3: begin case print_style of
+ '1':do_nothing;
+ '2':begin
+ do_write(ix_file,'\indentsubentry',ix,'2---');
+ end;
+ '3':begin
+ do_write(ix_file,'\indentsubentry',ix,'2');
+ end;
+ othercases do_nothing
+ endcases;
+ for i:=1 to print_length do do_write(ix_file,print_field[i]);
+ if dot_leadering
+ then do_lnwrite(ix_file,' ')
+ else do_lnwrite(ix_file,', ');
+ end;
+othercases do_nothing
+endcases
+end;
+
+@ The {\it numeric} function will take a packed array of length
+max\_pnum and convert
+that array (which is really the page number) into an integer.
+
+@p function numeric(simple_array:pn_type):integer;
+var @!i,j_mult,pn:integer;
+begin pn := 0;
+i := max_pnum;j_mult:=1;
+repeat
+if i = 1 then if simple_array[1] = '-'
+then pn := -1 * pn
+else pn := pn + ((ord(simple_array[1])-ord('0')) * j_mult)
+else pn := pn + ((ord(simple_array[i])-ord('0')) * j_mult);
+j_mult := j_mult * 10;
+decr(i);
+until i < 1;
+numeric:=pn;
+end;
+
+@ The {\it get\_numeric}
+function will take a packed array of length max\_pn\_alpha and convert
+that array (which is really the page number) into an integer.
+
+@p function get_numeric(x_string:string_type(max_pn_alpha)):integer;
+var @!i:integer;
+begin
+readstr(x_string,i);
+get_numeric:=i;
+end;
+
+@ The {\it strvalue} function takes an integer and converts it into
+a string.
+
+@^System dependent code@>
+@p procedure strvalue(x:integer; var results:pass_pn_alpha);
+var
+temp:string_type(max_pn_alpha);
+begin
+writestr(temp,x);
+results:=ltrim(temp);
+end;
+
+@ The {\it strconv} function takes an array and converts it into
+a string.
+
+@p function strconv(x:pn_alpha_type):string_type(max_pn_alpha);
+var i:integer;
+temp:string_type(max_pn_alpha);
+begin
+temp:='';i := 1;
+with sort_record do begin
+repeat
+if x[i] <> ' ' then
+temp := ccat(temp,str(x[i]));
+incr(i);
+until (i > max_pn_alpha) or (x[i] = ' ');
+end;
+strconv:=temp;
+end;
+
+@ The procedure {\it write\_print\_chars} will write the number of
+characters indicated
+in the parm field to the appropriate print field. There are three levels of
+print fields. Level 0 is the primary index, level 1 is the subentry 1 index,
+and level 2 is the subentry 2 index. After writing the number of characters
+to the print field, that number of characters is removed from the input record.
+You might notice that this procedure is very similar to the
+write\_sort\_chars
+procedure. The only difference in the two is that this procedure deals
+with how the index is
+to be printed after sorting. The former deals with how the
+index is to be sorted.
+Also, this procedure is called by {\it write\_sort\_chars}.
+
+@^System dependent code@>
+@p procedure write_print_chars(number_of_characters:integer);
+var m:integer;
+begin with sort_record.print[curr_level+1] do
+for m := 1 to number_of_characters do begin
+incr(field_lngth);
+field_level[field_lngth] := in_record[m];
+end;
+remove_characters(number_of_characters);
+end;
+
+@ The procedure {\it write\_sort\_chars}
+will write the number of characters indicated
+in the parm field to the appropriate sort field. There are three levels of
+sort fields. Level 0 is the primary index, level 1 is the subentry 1 index,
+and level 2 is the subentry 2 index. After writing the characters to
+the sort fields, they will be removed from the input string.
+
+@^System dependent code@>
+@p procedure write_sort_chars(number_of_characters:integer);
+var m:integer;
+begin with sort_record.sort_part[curr_level+1] do
+for m := 1 to number_of_characters do begin
+incr(field_lngth);
+field_level[field_lngth] := in_record[m];
+end;
+remove_characters(number_of_characters);
+end;
+
+@
+This procedure processes subentries within the \bs{}index command. For example,
+the phrase ``Mt. St. Helens'' would be processed here for the entry created
+by the markup:
+\vs{12pt}
+{\lin{.5in}
+{\tt\bs{}index\{volcanos\bs{}subentry1\{Mt. St. Helens\}\}}\par}
+\vs{12pt}
+\nin Note
+that there are two levels of subentries, \bs{}subentry1 and \bs{}subentry2.
+You can
+use \bs{}sortas within a \bs{}subentry. But you cannot use \bs{}subentry2 within
+\bs{}subentry1 and vise versa. If you think it should be permitted, don't.
+Also, \bs{}blindentry is not permitted within \bs{}subentry.
+(I can't be flexible {\bf everywhere}.)
+
+@ First save the current level, then set the current level to the
+subentry level. Process until the subentry is completely digested.
+
+@^System dependent code@>
+@p procedure process_subentry(@!entry_level:integer);
+var temp_level :integer;
+digest :boolean;
+begin remove_characters(1);{Throw away the `1' or `2'}@/
+temp_level := curr_level;
+curr_level := entry_level;
+digest := true;
+repeat
+@<Digest Subentry@>
+until not digest;
+curr_level := temp_level;
+end;
+
+@ If the next character is a dollar sign, then we {\bf might} have a \bs{}sortas
+If the next character is a left curly brace, then check to see if we've
+reached the end of this subentry. If the character is not `\$' or `\{',
+then write the character to the print file.
+
+@<Digest Subentry@>=
+if in_record[1] = '$'
+then @<Check for Sortas@>
+else if in_record[1] = '{'
+then @<Check for Subentry End@>
+else write_print_chars(1);
+
+@ If the next two characters are `\$\}' then we are are the end of
+the subentry.
+
+@<Check for Subentry End@>=
+begin
+if (in_record[2] = '$') and (in_record[3] = '}')
+then begin
+digest := false;
+remove_characters(3);
+end
+else write_print_chars(1);
+end
+
+@ If the next three are `\{\$\}' then we {\it might} have a sortas.
+and check the next two
+characters to see if they
+are `{\tt sa}'. If so, we {\bf do} have a sortas.
+Otherwise write those 6 characters out. In any case, if we don't have
+a `\{\$\}' to begin with, then write the first character out
+(which was a
+`\$' if you remember from earlier.)
+
+@<Check for Sortas@>=
+if (in_record[2] = '{') and
+(in_record[3] = '$') and (in_record[4] = '}')
+then begin
+if (in_record[5] = 's') and (in_record[6] = 'a')
+then do_sort_as
+else write_print_chars(6);
+end
+else write_print_chars(1)
+
+@
+The {\it equal\_arrays}
+function returns a true if the two arrays being passed are
+identical. False if not.
+
+@p function equal_arrays(fieldy:field_array;fieldz:field_array):boolean;
+var i :integer;
+still_checking :boolean;
+begin i := 1;
+still_checking := true;
+repeat
+if fieldy[i] <> fieldz[i] {if arrays not equal}
+then still_checking := false
+else incr(i);
+until (i>max_field) or not still_checking;
+equal_arrays := still_checking;
+end;
+
+@ The {\it plsort} procedure is written in PL/1 to call the CMS sort program
+Syncsort. This was necessary since you cannot call Syncsort from PASCAL/VS.
+The fields to be sorted are defined internally in the {\it plsort}
+program. This should be the same as the three sort fields in {\it sort\_type}.
+@:sort_type@>
+@:plsort@> @^PL/1@>
+@^Syncsort@>
+
+@p procedure plsort(var sort_rc:integer); fortran;
+
+@ This function converts to all uppercase.
+Notice that this is an EBCIDIC conversion, not an ASCII conversion
+to uppercase.
+
+@p function upper_case(x:char):char;
+var temp:char;
+begin
+ if (ord(x)>=129)and(ord(x)<=169) then
+ temp:=chr(ord(x)+64)
+ else temp:=x;
+upper_case:=temp;
+end;
+
+
+@* Read Each Index Entry.
+Each line in the {\it ix\_file} is a separate index entry generated with the
+\bs{\it index markup}. This markup has the format
+\par{\tt\bs{}index\it n\tt\{\it entry\rm/\it markup\tt\}}
+\par
+\nin where ``{\it entry}''
+is the textual material of the primary index. The
+``{\it markup}'' may be one of the following submarkup
+which may {\bf only}
+appear within the \bs{\it index markup}. Never outside of it.
+\item{1.} {\tt\bs{}subentry{\it n\/}}: where {\it n} is ``1'' or ``2'',
+denoting the subentry level.
+You would use this submarkup in the following fashion:
+\par{\lin{+.5in}\tt\bs{}index1\{\rm entry
+\bs\rm subentry1\tt\{\it submarkup\tt\}\}\par}
+\indent where {\it submarkup} here can only be \bs{\it sortas}.
+\item{2.}{\tt\bs{}sortas}: This markup is used to indicate text for either the
+primary sort level, or one of the two subentry sort levels that is to be
+sorted, but not printed in the resulting index. For example, someone may
+want ``10 Downing Street''
+to sort as ``ten Downing Street''. This would be accomplished by entering
+``{\tt\bs{}index1\{10 Downing Street\bs{}sortas\{ten Downing Street\}\}}''.
+You can also use \bs{\it sortas} within the \bs{\it subentry} submarkup.
+\item{3.}
+{\tt\bs{}itpn}: This markup indicates this index number
+is to be printed in italics in the sorted index.
+To use it, enter:
+\par{\lin{+.5in}\tt\bs{}index1\{\rm entry \tt
+\bs{}itpn\}\par}
+\item{4.} {\tt\bs{}bdpn}: This markup indicates this
+index number is to be
+printed in bold in the sorted index.
+To use it, enter:
+\par{\lin{+.5in}\tt\bs{}index1\{\rm entry \tt
+\bs{}bdpn\}\par}
+\item{5.} {\tt\bs{}uspn}: This markup indicates
+this index number is to
+be underscored in the sorted index.
+To use it, enter:
+\par{\lin{+.5in}\tt\bs{}index1\{\rm entry \tt
+\bs{}uspn\}\par}
+\item{6.} {\tt\bs{}blindentry}: This markup indicates this index is to be
+a blind entry or ``cross reference''. It may appear inside of a
+standard entry or subentry. There is no page number associated with
+this submarkup.
+\par
+
+@ @<Global Var...@>=
+@!respect_case :boolean;
+@!dot_leadering :boolean;
+@!print_style:char;
+@!sort_record :sort_type;
+@!in_record :string_type(max_lrecl);
+@!temp_strvalue:pass_pn_alpha;
+
+@^System dependent code@>
+@ This procedure will read the {\it ix\_file} in until all index requests
+have been read.
+
+@p procedure read_all_entries;
+var @!i,j,k:integer;
+begin
+@<Get Default Index Values@>
+while not eof(ix_file) do begin
+@<Initialize Sort Records@>@/
+@<Read Next Record@>@/
+@<Move Sort Type to Sort Record@>@/
+@<Move Page Number to Sort Record@>@/
+@<Digest the Input Record@>@/
+@<Fill in Sort Fields@>@/
+@<Write Sort Record@>@/
+end;end;
+
+@ The first index default variable passed is ``case=". A ``yes" value will
+respect the case in an index sort field. ``no" (the default) will convert
+everything to uppercase before sorting.
+
+The second index default ``style=" will be one of ``1", ``2'', or ``3''
+depending on whether the style is ``paragraph'', ``dash'', or ``indented''
+(which is the default).
+
+The third default read in here is the ``leadering=". A ``yes'' here will give
+dot leadering. Guess what ``no'' does.
+Dot leadering in the paragraph style ({\it print\_style}=1). If that
+has been requested, change {\it dot\_leadering} to false.
+
+@<Get Default Index Values@>=
+readln(ix_file,in_record);
+if dosubstr(in_record,doindex(in_record,'=')+1) = 'no'
+then respect_case := false
+else respect_case := true;
+readln(ix_file,in_record);@/
+print_style:=in_record[doindex(in_record,'=')+1];@/
+readln(ix_file,in_record);@/
+if dosubstr(in_record,doindex(in_record,'=')+1) = 'no'
+then dot_leadering := false
+else dot_leadering := true;@/
+if dot_leadering and (print_style = '1')
+then begin writeln(messages,
+'<TEXT1> Error! Dot leadering not permitted with the paragraph style.');
+writeln(messages,' Dot leadering will be disabled.');
+dot_leadering := false;
+end;
+
+@ The {\it all\_blanks} variable is filled with all blanks. Other arrays
+of the same dimension of {\it all\_blanks} can be set to blank themselves
+by saying $array\leftarrow all\_blanks$.
+
+@<Global Var...@>=
+@!all_blanks:field_array;
+
+@ @<Initialize Sort Records@>=
+with sort_record do
+for i := 1 to max_levels do begin
+sort_part[i].field_level:= all_blanks;
+sort_part[i].field_lngth := 0;
+print[i].field_level:= all_blanks;
+print[i].field_lngth := 0;
+end;
+curr_level := 0;
+
+@ Read the next index request to be processed.
+Get rid of trailing blanks.
+
+@<Read Next Record@>=
+readln(ix_file,in_record);
+in_record:=trim(in_record);
+
+@ The {\it sort\_type} is always in column 2. Column 1, 3 and 4 will always
+be curly braces. (`\{{\it s}\}\{' where ``{\it s}'' is the sort type.)
+After moving the {\it sort\_type} to the sort record, then
+delete the {\it sort\_type} and the three curly braces.
+
+@<Move Sort Type to Sort Record@>=
+sort_record.record_type := in_record[2];
+remove_characters(4);
+
+@ The end of the page number is the next right curly brace (`\}').
+Move all of the digits from the input record to the sort record,
+starting with the last digit and going forward. If a minus sign (`-')
+is in
+the page number (preface material), then put a minus sign in
+byte one of the sort record's page number.
+
+@<Global Var...@>=
+@!in_page_number:pn_type;
+
+@ Find and move the page number to the sort record. If it is negative,
+then its a roman numeral. In that case, move the page number to the
+{\it abs\_page\_number} to be sorted descending, as negative numbers
+should be. If its not negative, then move zero to {\it abs\_page\_number}
+so it will move to the bottom of that sort field.
+After it is moved, delete the appropriate number of characters to
+finish digesting the entry.
+
+@<Move Page Number to Sort Record@>=
+k := doindex(in_record,'}'); {find the end of the page number}
+i := k - 1;
+for j := 1 to max_pnum do in_page_number[j] := '0';
+j := max_pnum;
+repeat
+if in_record[i] = '-'
+then begin
+in_page_number[1] := '-';
+i := 0;
+end
+else begin
+in_page_number[j] := in_record[i];
+decr(i);
+decr(j);
+end;
+until i <= 0;
+remove_characters(k+1);@/
+sort_record.page_number:=numeric(in_page_number);@/
+if sort_record.page_number < 0
+then sort_record.abs_page_number:=abs(sort_record.page_number)
+else sort_record.abs_page_number:=0;
+k := doindex(in_record,'}'); {find the end of the page number string}
+for i := 1 to max_pn_alpha do sort_record.page_string[i] := ' ';
+for i := 1 to k-1 do
+sort_record.page_string[i] := in_record[i];
+remove_characters(k);
+
+@^System dependent code@>
+@ Process the rest of the input record. Each time you see a dollar sign,
+there could be a submarkup coming, so examine the next three characters.
+
+@<Digest the Input Record@>=
+repeat
+if (in_record[1] = '$') and (length(in_record) >= 4)
+then @<Examine Next 3 Chars@>
+else write_print_chars(1);
+until length(in_record) < 1;
+
+@ Once the index request has been digested, each sort field is checked
+to see if it is blank. If so, then {\it sort\_as} was not used, so copy the
+{\it print} field to the {\it sort} field.
+
+@<Fill in Sort Fields@>=
+with sort_record do begin
+for i := 1 to max_levels do
+if sort_part[i].field_lngth=0
+then begin
+sort_part[i].field_level := print[i].field_level;
+sort_part[i].field_lngth := print[i].field_lngth;
+check_case; end
+else check_case;
+end;
+
+@^System dependent code@>
+@ Ok, the record has been processed, so write it to the output file.
+
+@<Write Sort Record@>=
+sort_file@@:=sort_record;
+put(sort_file);
+
+@ Ok, a dollar sign signals the beginning of some sort of action code if the
+next three characters are `\{\$\}'. So lets look at them and see.
+
+@<Examine Next 3 Chars@>=
+begin if (in_record[2] = '{') and
+(in_record[3] = '$') and (in_record[4] = '}')
+then @<Examine Next 2 Chars@>
+else write_print_chars(1);{Well then, the dollar sign must be part of the index}
+end
+
+@ If a {\it blindentry} (`{\tt be}') or {\it subentry} (`{\tt se}'),
+then perform the appropriate sections.
+
+@<Examine Next 2 Chars@>=
+begin if (in_record[5] = 'b') and (in_record[6] = 'e')
+then @<Do Blind Entry@>
+else if (in_record[5] = 's') and (in_record[6] = 'e')
+then @<Do Sub Entries@>
+else if (in_record[5] = 's') and (in_record[6] = 'a')
+then do_sort_as
+else write_print_chars(6);{Might as well write all 6 characters examined}
+end
+
+@ Everything up to the next `\{\$\}' is the blind entry.
+The page number for a blind entry will always be 999999999.
+
+@<Do Blind Entry@>=
+begin remove_characters(6);{Throw away the `\$\{\$\}be'}@/
+i := doindex(in_record,'{$}');
+curr_level:=2;
+write_print_chars(i-1);
+curr_level:=0;
+remove_characters(3);{Throw away the `\{\$\}'}
+sort_record.page_number := 999999999;
+end
+
+@ Process the subentry, depending on whether or not it is
+{\it subentry}1 or {\it subentry}2. If not, ignore the whole thing.
+
+@<Do Sub Entries@>=
+begin remove_characters(6); {Throw away the `\$\{\$\}se'}
+if in_record[1] = '1'
+then process_subentry(1)
+else if in_record[1] = '2'
+then process_subentry(2)
+else write_print_chars(1);{Perhaps someone entered \bs{}subentry3??}
+end
+
+@* Write Formated Index. This section of code takes the sorted index
+entries, merges them together, and writes them back out to the index file
+to be read in by \bs{}printindex in the user's program. This section consists
+of three procedures for accomplishing this feat: {\it add\_page\_number},
+{\it digest\_the\_line}, and {\it read\_sorted\_records}.
+{\it numeric} is a function to convert the character string page number into
+an integer.
+
+@^System dependent code@>
+@ The procedure {\it add\_page\_number} is used to add the page number of the
+current sorted record to the {\it string\_bold} if a
+\bs{\it bdpn}, or to
+the {\it string\_underscore} if a \bs{\it uspn},
+or otherwise to
+the {\it str\_build}.
+
+@p procedure add_page_number;
+var i:integer;
+
+@ @<Global Var...@>=
+@!prev_page_number:integer;
+@!prev_pg_string:string_type(max_pn_alpha);
+@!prev_record_type:char;
+
+@ First check to see if we have a new page number. If so, then add the page
+number to the string. Otherwise, only add the page number if the sort type
+is new and is not equal to ``6'' (italic).
+
+@p
+begin
+with sort_record do if prev_page_number = page_number
+then if (prev_record_type = record_type) and (record_type <> '9')
+ then getout
+else if record_type = '6' then getout;
+@<Add Page Number to the String@>
+end;
+
+@ {\it str\_build} is used to accumulate all of the page numbers.
+{\it str\_blind\_entry} is used to accumulate the blind entry information
+(typically there should be no more than one, but allowance is made for more.)
+
+@<Global Var...@>=
+@!str_build:string_type(max_lrecl);
+@!str_blind_entry:string_type(max_lrecl);
+{come on, who's going to have one that long?}
+
+@ This module will take the page number of the current sorted index
+record and add it to the build string, unless the record type is
+9, which is a blind entry, in which case it is added to the blind entry
+string. Note that if the record type is 0 (bold), 4 (underscore) or
+6 (italic), then the page number is prefaced with ``B'', ``U'' or
+``I'' respectively. This identifies that the page number is to be
+emphasized when the build string is processed through the
+{\it digest\_the\_line} procedure.
+
+@<Add Page Number to the String@>=
+if sort_record.record_type = '9' then @<Do Sorted Blind Entry@>
+else begin @<Do Sorted Non Blind Entry@>
+end;
+prev_page_number := sort_record.page_number;@/
+prev_pg_string := strconv(sort_record.page_string);@/
+prev_record_type := sort_record.record_type;
+
+@ @<Do Sorted Blind Entry@>=
+with sort_record.print[3] do begin
+if length(str_blind_entry) > 0 then add_cmma_blnk(str_blind_entry);
+for i := 1 to field_lngth do
+str_blind_entry := ccat(str_blind_entry,str(field_level[i]));
+end
+
+@ If the {\it page\_string[1]} is less than zero, its alphabetic and
+roman numeral processing is necessary.
+
+@<Do Sorted Non Blind Entry@>=
+with sort_record do begin
+if ord(page_string[1]) < ord('0')
+then @<Add Roman Page Number@>
+else @<Add Arabic Page Number@>;
+end;
+
+@ @<Add Roman Page Number@>=
+begin
+if length(str_build) >= 1
+then str_build:=ccat(',',str_build);
+strvalue(page_number,temp_strvalue);
+str_build := ccat(ccat(ccat(strconv(page_string),
+','),temp_strvalue),str_build);
+if record_type = '0'
+then str_build := ccat('B',str_build)
+else if record_type = '4'
+then str_build := ccat('U',str_build)
+else if record_type = '6'
+then str_build := ccat('I',str_build)
+end
+
+@ @<Add Arabic Page Number@>=
+begin
+if length(str_build) >= 1
+then add_comma(str_build);
+if record_type = '0'
+then str_build := ccat(str_build,'B')
+else if record_type = '4'
+then str_build := ccat(str_build,'U')
+else if record_type = '6'
+then str_build := ccat(str_build,'I');
+str_build := ccat(str_build,strconv(page_string));
+end
+
+@ {\it output\_string} is used to collect all of the page numbers
+before writing them back out to the index file;
+{\it bold\_string} collects the bold page numbers;
+{\it us\_string} collects the underscored page numbers;
+{\it rm\_string} collects everything not bold or underscored.
+As you might expect, {\it italic\_last\_page} is true when the last
+page number of a `roll' is to be italic.
+
+@<Global Var...@>=
+@!output_string:string_type(max_lrecl);
+@!bold_string:string_type(max_lrecl);
+@!us_string:string_type(max_lrecl);
+@!rm_string:string_type(max_lrecl);
+@!italic_last_page:boolean;
+
+@^System dependent code@>
+@ {\it finish\_the\_process} is a procedure that is used to
+first check to see if we are {\it on\_a\_roll}, which means we are formatting
+something like pages 1-3.
+After doing that, if there were any bold page numbers, they are concatenated
+to the front of the {\it output\_string}; underscored page numbers (if any)
+are concatenated to the end of the {\it output\_string}.
+
+@p procedure finish_the_process;
+begin
+@<Concatenate Bold Pages to Output@>;@/
+@<Concatenate Roman Pages to Output@>;@/
+@<Concatenate Underscored Pages to Output@>;
+end;
+
+@ If there were any bold page numbers, then add them to the {\it
+output\_string}.
+
+@<Concatenate Bold...@>=
+if length(bold_string) > 0 then begin
+if length(output_string) > 0 then add_cmma_blnk(output_string);
+output_string := ccat(output_string,bold_string);
+end
+
+@ If we were on a roll (a consecutive series of page numbers) then finish
+the roll. Then if there were any roman or italic page numbers, add them to
+the {\it output\_string}.
+
+@<Concatenate Roman...@>=
+if on_a_roll then if italic_last_page
+then rm_string :=
+ccat(ccat(ccat(rm_string,'{\it '),trim(prev_pg_string)),'}')
+else rm_string := ccat(rm_string,prev_pg_string);
+@.\bs{}it@>
+if length(rm_string) > 0 then begin if length(output_string) > 0
+then add_cmma_blnk(output_string);
+output_string := ccat(output_string,rm_string);
+end
+
+@ If there were any underscored page numbers, add them to the {\it
+output\_string} here.
+
+@<Concatenate Under...@>=
+if length(us_string) > 0 then begin if length(output_string) > 0
+then add_cmma_blnk(output_string);
+output_string := ccat(output_string,us_string);
+end
+
+@ The procedure {\it start\_digesting} will initialize a few variables,
+then add the {\it current\_page} to the appropriate list.
+
+@p procedure start_digesting;
+begin @<Initialize Some Global Variables@>;@/
+prev_pg_string := curr_str_page;@/
+@<Do Appropriate Highlighting@>;
+end;
+
+@ @<Initialize Some Global Variables@>=
+italic_last_page := false;
+bold_string := ''; us_string :=''; rm_string:='';
+starting_to_process:=false;
+on_a_roll:=false
+
+@ @<Get the Current Print Type of this Page Number@>=
+print_type:= curr_str_page[1];
+if (print_type='B') or (print_type='I') or (print_type='U')
+then curr_str_page:=dosubstr(curr_str_page,2)
+else print_type := ' '
+
+@ @<Do Appropriate Highlighting@>=
+if print_type = 'B' then do_when_bold
+else if print_type = 'I' then do_when_italic
+else if print_type = 'U' then do_when_underscore
+else do_when_roman
+
+@^System dependent code@>
+@ The procedure {\it digest\_the\_line} will take the full {\it str\_build}
+and add the dashes when there is a run of page numbers (i.e. ``{\tt 1,2,3}'' bec
+``1-3''); add the bold page numbers in front of the string (i.e.
+``{\tt 1,2,B3,3,4}''
+prints as ``{\bf 3},1-4''. Note that page 3 had to appear twice
+``{\tt B3,3}''. If it had only appeard as a bold page number and not the
+default, ``{\tt 1,2,B3,4}'', you would get ``1-2,{\bf 3},4'');
+add the underscored
+page numbers to the end of the string (similar to bold page numbers,
+``1,2,U3,3,4'' prints as ``1-4,\us{3}''); and print in italics when
+necessary.
+
+@p procedure digest_the_line;
+var
+i:integer;
+@!temp_roman:string_type(max_pn_alpha);
+@!no_page_numbers:boolean;
+begin
+@<Process Each Page Number@>;@/
+@<Write the Line Out@>;
+end;
+
+@ @<Global Var...@>=
+@!starting_to_process :boolean;
+@!print_type:char;
+@!curr_str_page :string_type(max_pn_alpha);
+@!curr_num_page :integer;
+
+@ Initialize the variables, then read each page number until the whole
+string is digested, then finish off the page number string before returning.
+If {\it str\_build} is null, then we are doing a blind entry with no
+page numbers associated. In that case, initialize the highlighting
+strings.
+@<Process Each Page Number@>=
+output_string := '';
+starting_to_process := true;
+no_page_numbers:=false;
+if length(str_build) > 0
+then repeat @<Digesting Each Page Number@>
+ until length(str_build) < 1
+else if starting_to_process then begin
+@<Initialize Some Global Variables@>;
+no_page_numbers:=true;
+end;
+finish_the_process;
+
+@ First get the next page number. Then if we are starting, initialize
+everything. If we have already started, then check to see if we have a
+consecutive page number sequence (i.e. pages 1,2,3,4 etc.) which is called
+a `roll'.
+@<Digesting Each Page Number@>=
+@<Get Next Page Number@>;@/
+if starting_to_process
+then start_digesting
+else @<Check for a Roll@>;
+prev_page_number:=curr_num_page;
+
+@ @<Get Next Page Number@>=
+i := doindex(str_build,',');
+if i < 1 then begin curr_str_page:=str_build; str_build:='';end
+else begin
+curr_str_page:=dosubstr(str_build,1,i-1);
+str_build := dosubstr(str_build,i+1);
+end;
+@<Get the Current Print Type of this Page Number@>;@/
+if ord(curr_str_page[1]) < ord('0') {Then its alphabetic}
+then @<Get Numeric for Roman Page Number@>
+else curr_num_page:=get_numeric(curr_str_page);
+
+@ @<Get Numeric for Roman Page Number@>=
+begin
+i := doindex(str_build,',');
+if i < 1 then begin temp_roman:=str_build; str_build:='';end
+else begin
+temp_roman:=dosubstr(str_build,1,i-1);
+str_build := dosubstr(str_build,i+1);
+end;
+curr_num_page:=get_numeric(temp_roman);
+end
+
+@ If we are on a roll, then the previous page number will be one less than
+the current page number. If this is not the case, then {\it
+finish\_the\_process}
+and {\it start\_digesting} all over again.
+
+@<Check for a Roll@>=
+if ((prev_page_number = curr_num_page) and (print_type <> ' ')) or
+ ((prev_page_number>=0) and (prev_page_number = curr_num_page - 1)) or
+ ((prev_page_number<0) and (prev_page_number = curr_num_page + 1))
+then begin
+@<Got a Roll Going@>
+prev_pg_string:=curr_str_page;
+end
+else begin finish_the_process; start_digesting; end
+
+@ Ok, so we're on a roll, right? If the {\it print\_type} is ``B'' (bold) or
+``U'' (underscored) then do those and return. Otherwise, check to se if we
+were previously {\it on\_a\_roll}. If we weren't, then add the hyphen to the
+starting page number. In either case, move the {\it current\_page} to the
+{\it prev\_pg\_string}. Lastly, if the page number is italic, then set
+{\it italic\_last\_page} to true, in case it ends up being the last page in
+the string.
+
+@<Got a Roll Going@>=
+if print_type = 'B' then do_when_bold
+else if print_type = 'U' then do_when_underscore
+else begin if not on_a_roll then begin on_a_roll := true;
+rm_string:=ccat(rm_string,'--'); end;
+if print_type = 'I' then italic_last_page := true
+else italic_last_page := false;
+end;
+
+@ Before the page numbers are actually written, we need to write out
+the ID depending on which level we are formatting. Level 1 is the
+primary level, level 2 is the subentry1, and level 3 is subentry2.
+Then, we need to do a couple of things depending on whether there is
+dot leadering going on or not.
+Finally, write the output string to the formatted index file.
+
+@<Write the Line Out@>=
+write_prev_header;
+if dot_leadering then begin @<Do Dot Leadering@> end
+else begin @<Do not do Dot Leadering@> end;
+do_lnwrite(ix_file,output_string);
+
+@ If there is dot leadering, then add the blind entry first, before adding
+the leadering.
+
+@<Do Dot Leadering@>=
+if length(str_blind_entry) > 0
+then begin
+if length(output_string) > 0 then add_cmma_blnk(output_string);
+output_string := ccat(output_string,str_blind_entry);
+end;
+output_string := ccat(ccat('\leader{}',output_string),'\par');
+@.\bs{}leader@>
+@.\bs{}par@>
+
+@ @<Global Var...@>=
+@!new_level_1:boolean;
+
+@ If there is not dot leadering, then the blind entry goes at the end of the
+page, except for
+the paragraph style ({\it print\_style}=1). Also, if the paragraph style,
+then do not add the {\tt \bs{}par} at the end. Instead, add a comma
+if there is a new level 1 entry.
+
+@<Do not do Dot Leadering@>=
+if (print_style <> '1') and (length(str_blind_entry) > 0)@/
+then begin
+if length(output_string) > 0 then add_cmma_blnk(output_string);
+output_string := ccat(output_string,str_blind_entry);
+end;
+if print_style = '1'
+then if new_level_1 and ((length(str_blind_entry)=0) or no_page_numbers)
+then do_nothing
+else add_cmma_blnk(output_string)
+else output_string := ccat(output_string,'\par');
+@.\bs{}par@>
+
+@ The {\it build\_sorted\_index} procedure is the driving force behind
+formatting the index. The basic process is to read all of the sorted records in
+and create a record called {\it str\_build}. There will be one of these for
+each primary and subentry level index. After doing the {\it str\_build},
+this record is then read through again to add the {\it\TeX T1} markup
+necessary to
+print out the sorted index line.
+
+@p procedure build_sorted_index;
+var @!first_time_through:boolean;
+
+@ @<Global Var...@>=
+@!prev_sr1:field_array;
+@!prev_sr2:field_array;
+@!prev_sr3:field_array;
+@!prev_pn1:field_array;
+@!prev_ln1:integer;{the length of pn1}
+@!prev_pn2:field_array;
+@!prev_ln2:integer;{the length of pn2}
+@!prev_pn3:field_array;
+@!prev_ln3:integer;{the length of pn3}
+@!id1_is_missing:boolean;
+@!id2_is_missing:boolean;
+
+@ The first thing we need to do is read the next sorted record. If this is the
+first time ever through this procedure, then do some quick initializing. Then,
+once we come to a new ID, we should write out the previous index page numbers,
+etc. If the ID has not changed from the previous record, then add the page
+number given here on the sorted record to the {\it str\_build}.
+
+@p begin first_time_through:=true;
+while not eof(sort_file) do begin
+sort_record:=sort_file@@;
+get(sort_file);
+if first_time_through then begin @<Do First Time Inits@> end;
+if not equal_arrays(prev_sr1,sort_record.sort_part[1].field_level)
+then begin
+@<Start a New Level 1@> end
+else if not equal_arrays(prev_sr2,sort_record.sort_part[2].field_level)
+then begin
+@<Start a New Level 2@> end
+else if not equal_arrays(prev_sr3,sort_record.sort_part[3].field_level)
+and (sort_record.record_type <> '9')
+then begin
+@<Start a New Level 3@> end
+else add_page_number;
+end;
+@<Digest and Print Level 1@>
+end;
+
+@ First write out the {\it \bs{}everyindex} record at the beginning
+of the index file.
+
+@<Do First Time Inits@>=
+do_lnwrite(ix_file,'\everyindex{',ix,'}');
+@.\bs{}everyindex@>
+
+@ These initializations only get done at the beginning of the
+first sort record.
+
+@<Do First Time Inits@>=
+first_time_through:=false;
+id1_is_missing:=false;
+id2_is_missing:=false;
+new_level_1:=false;
+with sort_record do begin
+prev_sr1:=sort_part[1].field_level;
+prev_sr2:=sort_part[2].field_level;
+prev_sr3:=sort_part[3].field_level;
+prev_pn1:=print[1].field_level;
+prev_ln1:=print[1].field_lngth;
+prev_pn2:=print[2].field_level;
+prev_ln2:=print[2].field_lngth;
+prev_pn3:=print[3].field_level;
+prev_ln3:=print[3].field_lngth;
+end;
+prev_page_number:=0;
+str_blind_entry:='';@/
+str_build:='';@/
+
+@ If this is not a blind entry, then check to see if sort records for
+the first level id are missing. If they are, then the id name itself
+will be printed in {\it id1\_missing\_check}.
+
+@<Do First Time Inits@>=
+if sort_record.record_type <> '9'
+then id1_missing_check;
+
+@ Only alpha (a--z and A--Z) and numeric (0--9) characters get an
+{\it \bs{}everyletterbreak}. Punctuation, for example, will not get
+an {\it \bs{}everyletterbreak}.
+
+@<Do First Time Inits@>=
+with sort_record.sort_part[1] do begin
+if ((field_level[1]>='a') and (field_level[1]<='i')) or @/
+((field_level[1]>='j') and (field_level[1]<='r')) or @/
+((field_level[1]>='s') and (field_level[1]<='z')) or @/
+((field_level[1]>='A') and (field_level[1]<='I')) or @/
+((field_level[1]>='J') and (field_level[1]<='R')) or @/
+((field_level[1]>='S') and (field_level[1]<='Z')) or @/
+((field_level[1]>='0') and (field_level[1]<='9'))
+ then
+do_lnwrite(ix_file,'\everyletterbreak{',ix,'}{',field_level[1],'}')
+ else
+do_lnwrite(ix_file,'\everyletterbreak{',ix,'}{}');
+end
+@.\bs{}everyletterbreak@>
+
+@
+First we need to {\it digest\_the\_line} which is the current index's
+entry. {\it digest\_the\_line} will write out the formatted index unless
+we are in the paragraph
+style of formatted index
+({\it print\_style}=1). If we are in the paragraph style,
+then we need to write out any {\it str\_blind\_entry} pending.
+
+@<Digest and Print Level 1@>=
+new_level_1:=true;
+digest_the_line;
+if print_style = '1' then
+do_lnwrite(ix_file,str_blind_entry,'\par');
+new_level_1:=false;
+@.\bs{}par@>
+
+@ We have just found the start of a new primary index level.
+First we need to process the previous index's
+entry.
+If there is a blind entry, and it is style `1', then add it now.
+Next, if we are at a letter break (i.e., going from the sorted ``A''
+primary index letters to the ``B''s) then write the ``{\tt
+\bs{}everyletterbreak}'' to the formatted index file.
+
+@<Start a New Level 1@>=
+@<Digest and Print Level 1@>
+with sort_record.sort_part[1] do begin
+if (field_level[1] <> prev_sr1[1])
+then if
+(((field_level[1]>='a') and (field_level[1]<='i')) or @/
+((field_level[1]>='j') and (field_level[1]<='r')) or @/
+((field_level[1]>='s') and (field_level[1]<='z')) or @/
+((field_level[1]>='A') and (field_level[1]<='I')) or @/
+((field_level[1]>='J') and (field_level[1]<='R')) or @/
+((field_level[1]>='S') and (field_level[1]<='Z')) or @/
+((field_level[1]>='0') and (field_level[1]<='9'))) @/
+then do_lnwrite(ix_file,'\everyletterbreak{',ix,'}{',field_level[1],'}')
+ else
+do_lnwrite(ix_file,'\everyletterbreak{',ix,'}{}');
+end;
+@.\bs{}everyletterbreak@>
+
+@ The next thing to be done when starting a new primary index is to
+check the subentries. If they exist, then you can assume that this
+primary level index has no page numbers associated with it. The macro
+{\it id1\_missing\_check} accomplishes this.
+
+@<Start a New Level 1@>=
+curr_level:=1;@/
+if sort_record.record_type <> '9'
+then id1_missing_check;
+
+@ The complicated stuff is done. So now we can actually do some simple
+initializations to get this new level 1 (primary level) sort rolling.
+
+@<Start a New Level 1@>=
+str_build:='';
+str_blind_entry:='';
+with sort_record do begin
+prev_sr1:=sort_part[1].field_level;
+prev_sr2:=sort_part[2].field_level;
+prev_sr3:=sort_part[3].field_level;
+prev_pn1:=print[1].field_level;
+prev_ln1:=print[1].field_lngth;
+prev_pn2:=print[2].field_level;
+prev_ln2:=print[2].field_lngth;
+prev_pn3:=print[3].field_level;
+prev_ln3:=print[3].field_lngth;
+prev_page_number:=0;
+end;
+add_page_number;
+
+@ We have just found the start of a new subentry1 index level.
+These modules are similar to {\it Start a New Level 1}, but not as
+detailed since it is dealing with fewer levels.
+First we need to {\it digest\_the\_line} which is the previous index's
+entry. {\it digest\_the\_line} will write out the formatted index unless
+we are in the paragraph
+style of formatted index
+({\it print\_style}=1).
+
+@<Start a New Level 2@>=
+digest_the_line;
+
+@ The next thing to be done when starting a new subentry1 index is to
+check the subentry2. If it exists, then you can assume that this
+subentry index has no page numbers associated with it.
+This is done in {\it id2\_missing\_check}.
+
+@<Start a New Level 2@>=
+id2_missing_check;
+
+@ The complicated stuff is done. So now we can actually do some simple
+initializations to get this new level 2 (subentry2 level) sort rolling.
+
+@<Start a New Level 2@>=
+str_build:='';
+if print_style <> '1' then str_blind_entry:='';
+with sort_record do begin
+prev_sr2:=sort_part[2].field_level;
+prev_sr3:=sort_part[3].field_level;
+prev_pn2:=print[2].field_level;
+prev_ln2:=print[2].field_lngth;
+prev_pn3:=print[3].field_level;
+prev_ln3:=print[3].field_lngth;
+prev_page_number:=0;
+end;
+add_page_number;
+
+@ We have just found the start of a new subentry2 index level.
+These modules are similar to {\it Start a New Level 2}, but not as
+detailed since it is dealing with the lowest level.
+First we need to {\it digest\_the\_line} which is the previous index's
+entry. {\it digest\_the\_line} will write out the formatted index unless
+we are in the paragraph
+style of formatted index
+({\it print\_style}=1).
+
+@<Start a New Level 3@>=
+digest_the_line;
+curr_level:=3;
+
+@ Do some
+initializations to get this new level 3 (subentry2) sort rolling.
+
+@<Start a New Level 3@>=
+str_build:='';
+if print_style <> '1' then str_blind_entry:='';
+with sort_record do begin
+prev_sr3:=sort_part[3].field_level;
+prev_pn3:=print[3].field_level;
+prev_ln3:=print[3].field_lngth;
+prev_page_number:=0;
+end;
+add_page_number;
+
+@* Main Program.
+Ok, here is the main program. First we initialize (all\_blanks); then
+set the ix\_file for input and the sort\_file for output; read all of the
+entries, processing each one; close the files; sort; read the sorted file
+in and build the entries, writing them back to the ix\_file to be read in
+by the index markup. WHEW!!
+
+@p
+begin @<Initialize Main@>@/
+termout(messages);
+reset_file(ix);@/
+file_rewrite(s_file_number); {Should always be file 9}@/
+read_all_entries;@/
+close(ix_file);@/
+close(sort_file);@/
+@<Sort the Index@>@/
+reset_file(s_file_number);@/
+file_rewrite(ix);@/
+build_sorted_index;@/
+end;
+
+@ @<Initialize Main@>=
+for i := 1 to max_field do all_blanks[i] := ' ';
+
+@ As mentioned earlier, {\it plsort} is an external PL/1 subroutine
+@^PL/1@>
+@^Syncsort@>
+which is used to call Syncsort to sort the file.
+The sort fields are as follows:
+\halign{\hskip3em\hfill#\hfill&&\hskip3em\hfill#\hfill\cr
+\bf Starting Column&\bf Length&\bf Field Description&\bf Order\cr
+38&300&character&ascending\cr
+342&300&character&ascending\cr
+646&300&character&ascending\cr
+10&4&binary&descending\cr
+6&4&binary&ascending\cr}
+
+@<Global Var...@>=
+sort_rc:integer;
+
+@ @<Sort the Index@>=
+plsort(sort_rc);
+if sort_rc = 0
+ then writeln(messages,'Index Successfully Completed')
+ else writeln(messages,'Index Failed');
+
+@* Index.
+All modules in which an identifier is
+used are listed with that identifier, except that reserved words are
+indexed only when they appear in format definitions, and the appearances
+of identifiers in module names are not indexed. Underlined entries
+correspond to where the identifier was declared. Error messages, control
+sequences put into the output, and a few
+other things like ``Syncsort'' are indexed here too.
diff --git a/macros/text1/texix/txt1v293.cmschan b/macros/text1/texix/txt1v293.cmschan
new file mode 100644
index 0000000000..8f6bbe5a16
--- /dev/null
+++ b/macros/text1/texix/txt1v293.cmschan
@@ -0,0 +1,2000 @@
+TEX.CMS-CHAN - WEB change file for TeX 2.0 for VM/CMS and Pascal/VS.
+Copyright (C) 1984 by David Fuchs. All rights are reserved.
+
+External references: TERMATTN, ATTN202, USESTACK. Assembled
+ text decks of these routines must be linked into module.
+
+Changes to this file since 1.0 version (at SLAC):
+
+ Added increased mem size params etc from VMS-CHAN,
+ XEDIT hook, change ".log" to ".texlog". 11 Feb 84
+ Fixed filemode specifier so you can "\input fn.ft.fm". 9 Mar 84
+ Update line number references from TeX 1.0 to TeX 1.1. 20 Mar 84
+ Increase |buf_size| parameter from 500 to 1024. 24 Apr 84
+ Add CMS hook to send string to CMS using "\write15". 24 Apr 84
+ Various small changes in comments in TeX. 12 Jul 84
+ Change |pool_name| from "TEX.POOL" to "TEX.POOL.*". 21 Aug 84
+ File mode "*" added to |prompt_file_name| on input. 23 Aug 84
+ Allow tab and formfeed characters in input. 23 Aug 84
+ Increase |pool_size| to 40000. 23 Aug 84
+ ONERROR message deleted. 23 Aug 84
+ DVI block size changed to 1024. 24 Aug 84
+ SLAC character translates (hex): 4F->4A, 6A->4F, A1->5F. 27 Sep 84
+ Add SLAC routines for logging use data. 27 Sep 84
+ Update for TeX 1.4. 24 Feb 86
+ Remove |ready_already| as per Klaus Thull's recommendation. 24 Feb 86
+ Increase |hash_size| to 3000. 26 Feb 86
+ Update for TeX 2.0. 10 Mar 86
+ Add Chris Thompson's changes for large arrays, |use_stack|,
+ and do simple array asignments for |do_all_six|. 25 Mar 86
+ Add code in |close_files_and_terminate| to explicitly close
+ all input files. Avoids Pascal/VS loop in AMPXIO. 6 May 86
+ Allow |mem| array to start at negative index. 8 May 86
+ Increase |pool_size| to 50000. 9 May 86
+ Move |ret_code| from |end_of_TEX:| to |final_end:| and make
+ |history|:=|fatal_error_stop| if |bad_fmt|. 15 May 86
+ Remove SLAC-specific routines and character translates
+ to conform to TeX Project (hex): 5F->A1, 4A->5F. 4 Jun 86
+ Change |tfm_file| reading routine to read multiple 1024-byte
+ records. All TeX/MF data files are now RECFM F LRECL 1024. 2 Jul 86
+
+ Changes for TEXT1 by Dean Guenther 20 Aug 86
+ Banner now reflects TEXT1 at WEB line 148
+ DVI size changes to 2048 (4096) WEB line 345
+ Variable tfm_buf_size added at WEB line 345
+ (init'd at 1024)
+ tfm_buf_size replaces len_byte_block in system dependent
+ procedure fget in WEB code at line 23949
+ Square brackets around the page numbers changed to
+ angle brackets at WEB line 12302
+ Module's name changed to TXT1V2M0 at WEB line 212
+ buf_size changed from 1024 to 2048
+
+ Changes by Dean Guenther 20 Dec 86
+ Changes added to make \printindex a TeX primative. Refer to Web
+ lines 23602-23725 below.
+ Module's name changed to TXT1V2M1 at WEB line 212
+
+ Changes by Brian Harvey
+ Module's name is changed to TXT1V212 at WEB line 212
+ Banner line changed "TEXT1 (TEX 2.1)" 16 June 87
+
+ Changes by Dean Guenther
+ Installed fixes for TeX 2.2, 2.3, 2.4, 2.5, 2.6 & 2.7 25 Nov 87
+ Module is named TXT1V271 for TeX 2.7, mod 1
+ Installed fixes for TeX 2.8 & 2.9 11 Jan 88
+ Installed fixes for TeX 2.91, 2.92, & 2.93 2 Sep 88
+ Now using 1k dvi files instead of 2k
+ Module is named TXT1V293 for TeX 2.93
+
+TeX 2.0 WEB source line 34
+@x limbo
+\def\ph{\hbox{Pascal-H}}
+@y
+\def\ph{\hbox{Pascal-H}}
+\def\pvs{\hbox{Pascal/VS}}
+@z
+
+TeX 2.0 WEB source line 60
+@x limbo
+\pageno=3
+@y
+\pageno=3
+\let\maybe=\iffalse % to TeX only the changed sections after WEAV'ing
+\def\title{\TeX\ changes for VM/CMS}
+@z
+
+TeX 2.0 WEB source line 148
+@x
+@d banner=='This is TeX, Version 2.93' {printed when \TeX\ starts}
+@y
+The VM/CMS port of \TeX\ is a combination of efforts of many people.
+\.{WEB} change files for preliminary versions of \TeX\ were brought to
+the \TeX\ Users Group meeting in August 1983 and
+given to David Fuchs, of Stanford
+University Computer Science Department, who combined them into a
+definitive version on the VM system at Stanford Linear Accelerator
+Center. The original change files were supplied by Roger Chaffee of
+SLAC (now at Metaphor), Craig Platt of the University of Manitoba, and
+Peter M.~Sih of IBM Palo Alto Scientific Center. Bernd Schulze of the
+University of Bonn contributed his experience from bringing up a
+preliminary \TeX\ under CMS and has since sent many
+further improvements including the Metafont change file used in this
+implementation and other CMS change files.
+Other CMS change files and suggestions were made by Klaus Thull.
+All of this work was based on preliminary
+work adapting \TeX\ to MVS by Eagle Berns and Susan Plass of Stanford
+University. Peter Sih has donated countless hours of his expertise
+and contributed the device support for the IBM 4250 and APA6670 (and
+3800 model 3) printers. Many valuable revisions and additions to this
+work were made by Robert J.~Creasy.
+Alan Spragens at SLAC coordinated
+communication among the CMS sites and made some enhancements to the
+implementation while revising the CMS change file for \TeX\ versions
+1.1 and 2.0. Significant improvements were contributed for version
+2.0 by Chris Thompson of the University of Cambridge; they are
+described in the ``System-dependent Changes'' section.
+@d banner=='TEXT1 (TEX 2.93)'
+ {printed when \TeX\ starts}
+@d term_in==tty_in
+@d term_out==tty_out
+@d string_length==len @& gth {IBM length function}
+@d string_index ==ind @& ex {IBM index function}
+@z
+
+
+TeX 2.0 WEB source line 212
+@x
+program TEX; {all file names are defined dynamically}
+@y
+program TXT1V293; {all file names are defined dynamically}
+@z
+
+TeX 2.0 WEB source line 218
+@x
+procedure initialize; {this procedure gets things started properly}
+@y
+@<Large array variables@>@/
+@<VM/CMS procedures@>@/
+@#
+procedure initialize; {this procedure gets things started properly}
+@z
+
+TeX 2.0 WEB source line 261
+@x
+@d debug==@{ {change this to `$\\{debug}\equiv\null$' when debugging}
+@d gubed==@t@>@} {change this to `$\\{gubed}\equiv\null$' when debugging}
+@y
+@d debug==@{ {change this to `$\\{debug}\equiv\null$' when debugging}
+@d gubed==@t@>@} {change this to `$\\{gubed}\equiv\null$' when debugging}
+@z
+
+TeX 2.0 WEB source line 266
+@x
+@d stat==@{ {change this to `$\\{stat}\equiv\null$' when gathering
+ usage statistics}
+@d tats==@t@>@} {change this to `$\\{tats}\equiv\null$' when gathering
+ usage statistics}
+@y
+@d stat==
+@d tats==
+@z
+
+TeX 2.0 WEB source line 281
+@x
+@d init== {change this to `$\\{init}\equiv\.{@@\{}$' in the production version}
+@d tini== {change this to `$\\{tini}\equiv\.{@@\}}$' in the production version}
+@y virtex: init==@{ tini==@} initex: init== tini==
+@d init==@{
+@d tini==@}
+@z
+
+TeX 2.0 WEB source line 333
+@x
+@d othercases == others: {default for cases not listed explicitly}
+@y
+@d othercases == otherwise {default for cases not listed explicitly}
+@z
+
+TeX 2.0 WEB source line 345
+@x
+@!mem_max=30000; {greatest index in \TeX's internal |mem| array;
+ must be strictly less than |max_halfword|;
+ must be equal to |mem_top| in \.{INITEX}, otherwise |>=mem_top|}
+@!mem_min=0; {smallest index in \TeX's internal |mem| array;
+ must be |min_halfword| or more;
+ must be equal to |mem_bot| in \.{INITEX}, otherwise |<=mem_bot|}
+@!buf_size=500; {maximum number of characters simultaneously present in
+ current lines of open files and in control sequences between
+ \.{\\csname} and \.{\\endcsname}; must not exceed |max_halfword|}
+@!error_line=72; {width of context lines on terminal error messages}
+@!half_error_line=42; {width of first lines of contexts in terminal
+ error messages; should be between 30 and |error_line-15|}
+@!max_print_line=79; {width of longest text lines output; should be at least 60}
+@!stack_size=200; {maximum number of simultaneous input sources}
+@!max_in_open=6; {maximum number of input files and error insertions that
+ can be going on simultaneously}
+@!font_max=75; {maximum internal font number; must not exceed |max_quarterword|
+ and must be at most |font_base+256|}
+@!font_mem_size=20000; {number of words of |font_info| for all fonts}
+@!param_size=60; {maximum number of simultaneous macro parameters}
+@!nest_size=40; {maximum number of semantic levels simultaneously active}
+@!max_strings=3000; {maximum number of strings; must not exceed |max_halfword|}
+@!string_vacancies=8000; {the minimum number of characters that should be
+ available for the user's control sequences and font names,
+ after \TeX's own error messages are stored}
+@!pool_size=32000; {maximum number of characters in strings, including all
+ error messages and help texts, and the names of all fonts and
+ control sequences; must exceed |string_vacancies| by the total
+ length of \TeX's own strings, which is currently about 23000}
+@!save_size=600; {space for saving values outside of current group; must be
+ at most |max_halfword|}
+@!trie_size=8000; {space for hyphenation patterns; should be larger for
+ \.{INITEX} than it is in production versions of \TeX}
+@!dvi_buf_size=800; {size of the output buffer; must be a multiple of 8}
+@!file_name_size=40; {file names shouldn't be longer than this}
+@!pool_name='TeXformats:TEX.POOL ';
+ {string of length |file_name_size|; tells where the string pool appears}
+@.TeXformats@>
+@y
+@!mem_max=32766; {greatest index in \TeX's internal |mem| array;
+ must be strictly less than |max_halfword|;
+ must be equal to |mem_top| in \.{INITEX}, otherwise |>=mem_top|}
+@!mem_min=-32768; {smallest index in \TeX's internal |mem| array;
+ must be |min_halfword| or more;
+ must be equal to |mem_bot| in \.{INITEX}, otherwise |<=mem_bot|}
+@!buf_size=2048; {maximum number of characters simultaneously present in
+ current lines of open files and in control sequences between
+ \.{\\csname} and \.{\\endcsname}; must not exceed |max_halfword|}
+@!error_line=79; {width of context lines on terminal error messages}
+@!half_error_line=50; {width of first lines of contexts in terminal
+ error messages; should be between 30 and |error_line-15|}
+@!max_print_line=79; {width of longest text lines output; should be at least 60}
+@!stack_size=200; {maximum number of simultaneous input sources}
+@!max_in_open=6; {maximum number of input files and error insertions that
+ can be going on simultaneously}
+@!font_max=120; {maximum internal font number; must not exceed |max_quarterword|
+ and must be at most |font_base+256|}
+@!font_mem_size=30000; {number of words of |font_info| for all fonts}
+@!param_size=60; {maximum number of simultaneous macro parameters}
+@!nest_size=40; {maximum number of semantic levels simultaneously active}
+@!max_strings=5000; {maximum number of strings; must not exceed |max_halfword|}
+@!string_vacancies=26000; {the minimum number of characters that should be
+ available for the user's control sequences and font names,
+ after \TeX's own error messages are stored}
+@!pool_size=50000; {maximum number of characters in strings, including all
+ error messages and help texts, and the names of all fonts and
+ control sequences; must exceed |string_vacancies| by the total
+ length of \TeX's own strings, which is currently about 23000}
+@!save_size=600; {space for saving values outside of current group; must be
+ at most |max_halfword|}
+@!trie_size=8000; {space for hyphenation patterns; should be larger for
+ \.{INITEX} than it is in production versions of \TeX}
+@!dvi_buf_size=2048; {size of the output buffer; must be a multiple of 8}
+@!len_byte_block=1024; {must be half of |dvi_buf_size|}
+@!tfm_buf_size=1024;
+@!len_word_block=256; {format file buffer length}
+@!file_name_size=40; {file names shouldn't be longer than this}
+@!pool_name='TEX.POOl.* ';
+ {string of length |file_name_size|; tells where the string pool appears}
+@.TeXformats@>
+@z
+
+TeX 2.0 WEB source line 395
+@x
+@d mem_bot=0 {smallest index in the |mem| array dumped by \.{INITEX};
+ must not be less than |mem_min|}
+@d mem_top==30000 {largest index in the |mem| array dumped by \.{INITEX};
+ must be substantially larger than |mem_bot|
+ and not greater than |mem_max|}
+@d font_base=0 {smallest internal font number; must not be less
+ than |min_quarterword|}
+@d hash_size=2100 {maximum number of control sequences; it should be at most
+ about |(mem_max-mem_min)/10|, but 2100 is already quite generous}
+@d hash_prime=1777 {a prime number equal to about 85\% of |hash_size|}
+@d hyph_size=307 {another prime; the number of \.{\\hyphenation} exceptions}
+@^system dependencies@>
+@y
+@d mem_bot==-32768 {smallest index in the |mem| array dumped by \.{INITEX};
+ must not be less than |mem_min|}
+@d mem_top==32766 {largest index in the |mem| array dumped by \.{INITEX};
+ must be substantially larger than |mem_bot|
+ and not greater than |mem_max|}
+@d font_base=0 {smallest internal font number; must not be less
+ than |min_quarterword|}
+@d hash_size=3000 {maximum number of control sequences; it should be at most
+ about |(mem_max-mem_min)/10|, but 2100 is already quite generous}
+@d hash_prime=2549 {a prime number equal to about 85\% of |hash_size|}
+@d hyph_size=307 {another prime; the number of \.{\\hyphenation} exceptions}
+@^system dependencies@>
+@z
+
+TeX 2.0 WEB source line 503
+@x
+@!ASCII_code=0..127; {seven-bit numbers}
+@y
+@!ASCII_code=packed 0..127; {seven-bit numbers}
+@z
+
+TeX 2.0 WEB source line 533
+@x
+@d last_text_char=127 {ordinal number of the largest element of |text_char|}
+@y
+@d last_text_char=255 {ordinal number of the largest element of |text_char|}
+@z
+
+TeX 2.0 WEB source line 689
+@x [2] System-dependent character set changes:
+@^character set dependencies@>
+@^system dependencies@>
+
+@<Set init...@>=
+for i:=1 to @'37 do xchr[i]:=' ';
+@y
+For \pvs\ we allow |form_feed| and |tab| characters in input.
+@^character set dependencies@>
+@^system dependencies@>
+
+@d form_feed=@'14
+@d tab=@'05
+
+@<Set initial values...@>=
+for i:=1 to @'37 do xchr[i]:=' ';
+xchr[form_feed]:=chr(form_feed);
+xchr[tab]:=chr(tab);
+@z
+
+TeX 2.0 WEB source line 737
+@x
+for us to specify simple operations on word files before they are defined.
+
+@<Types...@>=
+@!eight_bits=0..255; {unsigned one-byte quantity}
+@!alpha_file=packed file of text_char; {files that contain textual data}
+@!byte_file=packed file of eight_bits; {files that contain binary data}
+@y
+for us to specify simple operations on word files before they are defined.
+
+@d alpha_file==@= TEXT@>
+@d ccat==@=||@>
+
+@<Types...@>=
+@!eight_bits=packed 0..255; {unsigned one-byte quantity}
+@z
+
+TeX 2.0 WEB source line 790
+@x
+begin reset(f,name_of_file,'/O'); a_open_in:=reset_OK(f);
+@y
+begin okstatus; reset(f,'NAME='ccat@, trim(str(name_of_file)));
+ a_open_in:=status;
+@z
+
+TeX 2.0 WEB source line 795
+@x
+begin rewrite(f,name_of_file,'/O'); a_open_out:=rewrite_OK(f);
+@y
+var buf_string:string(4);
+begin okstatus;
+writestr(buf_string,buf_size:4);
+rewrite(f,'NAME='ccat@, trim(str(name_of_file))
+ccat ',LRECL=' ccat buf_string);
+ a_open_out:=status;
+@z
+
+TeX 2.0 WEB source line 800
+@x
+begin reset(f,name_of_file,'/O'); b_open_in:=reset_OK(f);
+@y
+begin okstatus; reset(f,'NAME='ccat@, trim(str(name_of_file) ccat'.*'));
+ b_open_in:=status;
+@z
+
+TeX 2.0 WEB source line 805
+@x
+begin rewrite(f,name_of_file,'/O'); b_open_out:=rewrite_OK(f);
+@y
+begin okstatus; rewrite(f,'NAME='ccat@, trim(str(name_of_file)));
+ b_open_out:=status;
+@z
+
+TeX 2.0 WEB source line 810
+@x
+begin reset(f,name_of_file,'/O'); w_open_in:=reset_OK(f);
+@y
+begin okstatus; reset(f,'NAME='ccat@, trim(str(name_of_file) ccat'.*'));
+ w_open_in:=status;
+@z
+
+TeX 2.0 WEB source line 815
+@x
+begin rewrite(f,name_of_file,'/O'); w_open_out:=rewrite_OK(f);
+@y
+begin okstatus; rewrite(f,'NAME='ccat@, trim(str(name_of_file)));
+ w_open_out:=status;
+@z
+
+TeX 2.0 WEB source line 855
+@x
+@<Glob...@>=
+@!buffer:array[0..buf_size] of ASCII_code; {lines of characters being read}
+@y
+@d LA_buffer==
+@!buffer:array[0..buf_size] of ASCII_code; {lines of characters being read}
+
+@<Glob...@>=
+@z
+
+TeX 2.0 WEB source line 901
+@x
+@p function input_ln(var f:alpha_file;@!bypass_eoln:boolean):boolean;
+ {inputs the next line or returns |false|}
+var last_nonblank:0..buf_size; {|last| with trailing blanks removed}
+begin if bypass_eoln then if not eof(f) then get(f);
+ {input the first character of the line into |f^|}
+last:=first; {cf.\ Matthew 19\thinspace:\thinspace30}
+if eof(f) then input_ln:=false
+else begin last_nonblank:=first;
+ while not eoln(f) do
+ begin if last>=max_buf_stack then
+ begin max_buf_stack:=last+1;
+ if max_buf_stack=buf_size then
+ overflow("buffer size",buf_size);
+@:TeX capacity exceeded buffer size}{\quad buffer size@>
+ end;
+ buffer[last]:=xord[f^]; get(f); incr(last);
+ if buffer[last-1]<>" " then last_nonblank:=last;
+ end;
+ last:=last_nonblank; input_ln:=true;
+ end;
+end;
+@y
+@p function input_ln(var f:alpha_file;@!bypass_eoln:boolean):boolean;
+ {inputs the next line or returns |false|}
+var last_nonblank:0..buf_size; {|last| with trailing blanks removed}
+begin if bypass_eoln then if not eof(f) then get(f);
+ {input the first character of the line into |f^|}
+last:=first; {cf.\ Matthew 19\thinspace:\thinspace30}
+if eof(f) then input_ln:=false
+else begin last_nonblank:=first;
+ while not eoln(f) do
+ begin if last>=max_buf_stack then
+ begin max_buf_stack:=last+1;
+ if max_buf_stack=buf_size then
+ overflow("buffer size",buf_size);
+@:TeX capacity exceeded buffer size}{\quad buffer size@>
+ end;
+ buffer[last]:=xord[f@@]; get(f); incr(last); {@@ is \pvs\ pointer notation}
+ if buffer[last-1]<>" " then last_nonblank:=last;
+ end;
+ last:=last_nonblank; input_ln:=true;
+ end;
+end;
+@z
+
+TeX 2.0 WEB source line 933
+@x
+@ Here is how to open the terminal files
+in \ph. The `\.{/I}' switch suppresses the first |get|.
+@^system dependencies@>
+
+@d t_open_in==reset(term_in,'TTY:','/O/I') {open the terminal for text input}
+@d t_open_out==rewrite(term_out,'TTY:','/O') {open the terminal for text output}
+@y
+@ Here is how to open the terminal files
+in \pvs. There is no need to do a |reset| or |rewrite| or suppress
+the first |get| as with \ph.
+@d t_open_in==@= TERMIN@>(term_in) {open the terminal for text input}
+@d t_open_out==@= TERMOUT@>(term_out); {open the terminal for text output}
+@z
+
+TeX 2.0 WEB source line 949
+@x
+some instruction to the operating system. The following macros show how
+these operations can be specified in \ph:
+@^system dependencies@>
+
+@d update_terminal == break(term_out) {empty the terminal output buffer}
+@d clear_terminal == break_in(term_in,true) {clear the terminal input buffer}
+@d wake_up_terminal == do_nothing {cancel the user's cancellation of output}
+@y
+some instructions to the operating system. The following macros were
+used to specify these operations in \ph\ but have been made into
+``no-ops'' for \pvs.
+@d update_terminal == do_nothing
+@d clear_terminal == do_nothing
+@d wake_up_terminal == do_nothing
+@z
+
+TeX 2.0 WEB source line 1011
+@x
+@p function init_terminal:boolean; {gets the terminal input started}
+label exit;
+begin t_open_in;
+loop@+begin wake_up_terminal; write(term_out,'**'); update_terminal;
+@y
+@p function init_terminal:boolean; {gets the terminal input started}
+label exit;
+var i,j,k: integer;
+ l: string(256);
+begin t_open_in;
+ l:=parms;
+ if l<>'' then begin
+ i:=@=LENGTH@>(l);
+ j:=min(i,buf_size-first); {this much will fit}
+ if j>0 then for k:=0 to j-1 do buffer[first+k]:=xord[l[k+1]];
+ last:=first+j;
+ max_buf_stack:=max(max_buf_stack,last);
+ loc:=first;
+ init_terminal:=true;
+ return
+ end;
+loop@+begin wake_up_terminal; write_ln(term_out,'**'); update_terminal;
+@z
+
+TeX 2.0 WEB source line 1072
+@x
+@ @<Glob...@>=
+@!str_pool:packed array[pool_pointer] of ASCII_code; {the characters}
+@!str_start : array[str_number] of pool_pointer; {the starting pointers}
+@y
+@ @d LA_string==
+@!str_pool:packed array[pool_pointer] of ASCII_code; {the characters}
+@!str_start : array[str_number] of pool_pointer; {the starting pointers}
+
+@<Glob...@>=
+@z
+
+The following change is to use \write15 to send stuff to CMS
+TeX 2.0 WEB source line 1373
+@x
+@ To end a line of text output, we call |print_ln|.
+
+@<Basic print...@>=
+procedure print_ln; {prints an end-of-line}
+begin case selector of
+term_and_log: begin wterm_cr; wlog_cr;
+ term_offset:=0; file_offset:=0;
+ end;
+log_only: begin wlog_cr; file_offset:=0;
+ end;
+term_only: begin wterm_cr; term_offset:=0;
+ end;
+no_print,pseudo,new_string: do_nothing;
+othercases write_ln(write_file[selector])
+endcases;@/
+end; {|tally| is not affected}
+@y
+@ To end a line of text output, we call |print_ln|.
+In CMS \TeX\ we also use |print_ln| to send a message
+to the operating system using the \.{\\write15} stream.
+
+@<Basic print...@>=
+procedure print_ln; {prints an end-of-line}
+var i:integer;
+begin case selector of
+term_and_log: begin wterm_cr; wlog_cr;
+ term_offset:=0; file_offset:=0;
+ end;
+log_only: begin wlog_cr; file_offset:=0;
+ end;
+term_only: begin wterm_cr; term_offset:=0;
+ end;
+no_print,pseudo,new_string: do_nothing;
+15: begin cms(trim(str(cms_buf)), irc); {send \.{\\write15} to CMS}
+ for i:=1 to cms_ptr do cms_buf[i]:=' ';
+ cms_ptr:=1; end;
+othercases write_ln(write_file[selector])
+endcases;@/
+end; {|tally| is not affected}
+@z
+
+The following change is to use \write15 to send stuff to CMS
+TeX 2.0 WEB source line 1394
+@x
+@<Basic printing...@>=
+procedure print_char(@!s:ASCII_code); {prints a single character}
+label exit;
+begin if @<Character |s| is the current new-line character@> then
+ if selector<pseudo then
+ begin print_ln; return;
+ end;
+case selector of
+term_and_log: begin wterm(xchr[s]); wlog(xchr[s]);
+ incr(term_offset); incr(file_offset);
+ if term_offset=max_print_line then
+ begin wterm_cr; term_offset:=0;
+ end;
+ if file_offset=max_print_line then
+ begin wlog_cr; file_offset:=0;
+ end;
+ end;
+log_only: begin wlog(xchr[s]); incr(file_offset);
+ if file_offset=max_print_line then print_ln;
+ end;
+term_only: begin wterm(xchr[s]); incr(term_offset);
+ if term_offset=max_print_line then print_ln;
+ end;
+no_print: do_nothing;
+pseudo: if tally<trick_count then trick_buf[tally mod error_line]:=s;
+new_string: begin if pool_ptr<pool_size then append_char(s);
+ end; {we drop characters if the string space is full}
+othercases write(write_file[selector],xchr[s])
+endcases;@/
+incr(tally);
+exit:end;
+@y
+@<Basic printing...@>=
+procedure print_char(@!s:ASCII_code); {prints a single character}
+label exit;
+begin if @<Character |s| is the current new-line character@> then
+ if selector<pseudo then
+ begin print_ln; return;
+ end;
+case selector of
+term_and_log: begin wterm(xchr[s]); wlog(xchr[s]);
+ incr(term_offset); incr(file_offset);
+ if term_offset=max_print_line then
+ begin wterm_cr; term_offset:=0;
+ end;
+ if file_offset=max_print_line then
+ begin wlog_cr; file_offset:=0;
+ end;
+ end;
+log_only: begin wlog(xchr[s]); incr(file_offset);
+ if file_offset=max_print_line then print_ln;
+ end;
+term_only: begin wterm(xchr[s]); incr(term_offset);
+ if term_offset=max_print_line then print_ln;
+ end;
+no_print: do_nothing;
+pseudo: if tally<trick_count then trick_buf[tally mod error_line]:=s;
+new_string: begin if pool_ptr<pool_size then append_char(s);
+ end; {we drop characters if the string space is full}
+15: begin cms_buf[cms_ptr]:=xchr[s]; incr(cms_ptr); end;
+othercases write(write_file[selector],xchr[s])
+endcases;@/
+incr(tally);
+exit:end;
+@z
+
+The following change is to use \write15 to send stuff to CMS
+TeX 2.0 WEB source line 1623
+@x
+if not input_ln(term_in,true) then fatal_error("End of file on the terminal!");
+@y
+write_ln(term_out);
+if not input_ln(term_in,true) then fatal_error("End of file on the terminal!");
+@z
+
+TeX 2.0 WEB source line 1814
+@x
+wizardry, so the present implementation simply types out what file should be
+edited and the relevant line number.
+@^system dependencies@>
+
+There is a secret `\.D' option available when the debugging routines have
+not been commented out.
+@^debugging@>
+
+@<Interpret code |c| and |return| if done@>=
+case c of
+"0","1","2","3","4","5","6","7","8","9": if deletions_allowed then
+ @<Delete |c-"0"| tokens and |goto continue|@>;
+@t\4\4@>@;@+@!debug "D": begin debug_help; goto continue;@+end;@+gubed@/
+"E": if base_ptr>0 then
+ begin print_nl("You want to edit file ");
+@.You want to edit file x@>
+ print(input_stack[base_ptr].name_field);
+ print(" at line "); print_int(line);
+ interaction:=scroll_mode; jump_out;
+ end;
+"H": @<Print the help information and |goto continue|@>;
+"I":@<Introduce new material from the terminal and |return|@>;
+"Q","R","S":@<Change the interaction level and |return|@>;
+"X":begin interaction:=scroll_mode; jump_out;
+ end;
+othercases do_nothing
+endcases;@/
+@<Print the menu of available options@>
+@y
+wizardry, so the standard implementation simply types out what file should be
+edited and the relevant line number.
+The CMS implementation uses an external assembly routine |attn202| to
+invoke XEDIT with ``:|line|'' in the
+program stack.
+@^system dependencies@>
+
+There is a secret `\.D' option available when the debugging routines have
+not been commented out.
+@^debugging@>
+
+@<Interpret code |c| and |return| if done@>=
+case c of
+"0","1","2","3","4","5","6","7","8","9": if deletions_allowed then
+ @<Delete |c-"0"| tokens and |goto continue|@>;
+@t\4\4@>@;@+@!debug "D": begin debug_help; goto continue;@+end;@+gubed@/
+"E": if base_ptr>0 then
+ begin print_nl("You want to edit file ");
+@.You want to edit file x@>
+ print(input_stack[base_ptr].name_field);
+ print(" at line "); print_int(line);
+ inp_line:='XEDIT ';
+ s1:=selector;
+ tally:=0; selector:=pseudo;
+ print(input_stack[base_ptr].name_field);
+ for s2:=0 to tally-1 do inp_line[s2+7]:=xchr[trick_buf[s2]];
+ s2:=string_index(inp_line,'.'); if s2>0 then inp_line[s2]:=' ';
+ s2:=string_index(inp_line,'.'); if s2>0 then inp_line[s2]:=' ';
+ attn202('FIFO ',inp_line);
+ tally:=0; inp_line:=' ';
+ print_int(line);
+ inp_line[1]:=':';
+ for s2:=0 to tally-1 do inp_line[s2+2]:=xchr[trick_buf[s2]];
+ attn202('FIFO ',inp_line);
+ ret_code(12);
+ selector:=s1;
+ interaction:=scroll_mode; jump_out;
+ end;
+"H": @<Print the help information and |goto continue|@>;
+"I":@<Introduce new material from the terminal and |return|@>;
+"Q","R","S":@<Change the interaction level and |return|@>;
+"X":begin interaction:=scroll_mode; jump_out;
+ end;
+othercases do_nothing
+endcases;@/
+@<Print the menu of available options@>
+@z
+
+TeX 2.0 WEB source line 2030
+@x
+interrupt:=0; OK_to_interrupt:=true;
+@y
+interrupt:=0; OK_to_interrupt:=true;
+term_attn(interrupt);
+@z
+
+TeX 2.0 WEB source line 2277
+@x
+@!glue_ratio=real; {one-word representation of a glue expansion factor}
+@y
+@!glue_ratio=shortreal; {are there any other reals in the program?}
+@z
+
+TeX 2.0 WEB source line 2330
+@x
+@d min_quarterword=0 {smallest allowable value in a |quarterword|}
+@d max_quarterword=255 {largest allowable value in a |quarterword|}
+@d min_halfword==0 {smallest allowable value in a |halfword|}
+@d max_halfword==65535 {largest allowable value in a |halfword|}
+@y
+@d min_quarterword=0 {smallest allowable value in a |quarterword|}
+@d max_quarterword=255 {largest allowable value in a |quarterword|}
+@d min_halfword==-32768 {smallest allowable value in a |halfword|}
+@d max_halfword==32767 {largest allowable value in a |halfword|}
+@z
+
+TeX 2.0 WEB source line 2363
+@x
+@d qi(#)==#+min_quarterword
+ {to put an |eight_bits| item into a quarterword}
+@d qo(#)==#-min_quarterword
+ {to take an |eight_bits| item out of a quarterword}
+@d hi(#)==#+min_halfword
+ {to put a sixteen-bit item into a halfword}
+@d ho(#)==#-min_halfword
+ {to take a sixteen-bit item from a halfword}
+@y
+@d qi(#)==#
+ {to put an |eight_bits| item into a quarterword}
+@d qo(#)==#
+ {to take an |eight_bits| item out of a quarterword}
+@d hi(#)==#+min_halfword
+ {to put a sixteen-bit item into a halfword}
+@d ho(#)==#-min_halfword
+ {to take a sixteen-bit item from a halfword}
+@z
+
+TeX 2.0 WEB source line 2378
+@x
+@!quarterword = min_quarterword..max_quarterword; {1/4 of a word}
+@!halfword=min_halfword..max_halfword; {1/2 of a word}
+@!two_choices = 1..2; {used when there are two variants in a record}
+@!four_choices = 1..4; {used when there are four variants in a record}
+@y
+@!quarterword = packed min_quarterword..max_quarterword; {1/4 of a word}
+@!halfword=packed min_halfword..max_halfword; {1/2 of a word}
+@!two_choices=packed 1..2; {used when there are two variants in a record}
+@!four_choices=packed 1..4; {when there are four variants in a record}
+@z
+
+TeX 2.0 WEB source line 2401
+@x
+@!word_file = file of memory_word;
+@y
+@!word_block = packed array [0..len_word_block-1] of memory_word;
+@!word_file = packed file of word_block;
+@!byte_block = packed array [0..len_byte_block-1] of quarterword;
+@!byte_file = packed file of byte_block;
+@z
+
+TeX 2.0 WEB source line 2466
+@x
+deallocating them after their use.
+
+@<Glob...@>=
+@!mem : array[mem_min..mem_max] of memory_word; {the big dynamic storage area}
+@y
+deallocating them after their use.
+
+For \pvs\ we have declared the big |mem| array in the ``large array
+variables'' module. It is defined here in terms of a macro expanded
+near the end of the program. All such ``large array'' macros begin
+with ``|LA_|.''
+
+@d LA_mem==
+@!mem : array[mem_min..mem_max] of memory_word; {the big dynamic storage area}
+
+@<Glob...@>=
+@z
+
+TeX 2.0 WEB source line 3268
+@x
+been included. (You may want to decrease the size of |mem| while you
+@^debugging@>
+are debugging.)
+
+@<Glob...@>=
+@!debug @!free: packed array [mem_min..mem_max] of boolean; {free cells}
+@t\hskip1em@>@!was_free: packed array [mem_min..mem_max] of boolean;
+ {previously free cells}
+@t\hskip1em@>@!was_mem_end,@!was_lo_max,@!was_hi_min: pointer;
+@y
+been included. (You may want to decrease the size of |mem| while you
+@^debugging@>
+are debugging.)
+
+@d LA_mem_debug==
+@!free: packed array [mem_min..mem_max] of boolean; {free cells}
+@!was_free: packed array [mem_min..mem_max] of boolean;
+ {previously free cells}
+
+@<Glob...@>=
+@!debug @!was_mem_end,@!was_lo_max,@!was_hi_min: pointer;
+@z
+
+TeX 2.0 WEB source line 3653
+@x
+ if abs(mem[p+glue_offset].int)<@'4000000 then print("?.?")
+@y
+ if false then print("?.?") {no need to check value in 370 architecture}
+@z
+
+TeX 2.0 WEB source line 4218
+@x
+@<Glob...@>=
+@!nest:array[0..nest_size] of list_state_record;
+@y
+@d LA_nest==
+@!nest:array[0..nest_size] of list_state_record;
+
+@<Glob...@>=
+@z
+
+TeX 2.0 WEB source line 5085
+@x
+is needed. The program here simply specifies July 4, 1776, at noon; but
+users probably want a better approximation to the truth.
+
+@p procedure fix_date_and_time;
+begin time:=12*60; {minutes since midnight}
+day:=4; {fourth day of the month}
+month:=7; {seventh month of the year}
+year:=1776; {Anno Domini}
+end;
+@y
+is needed. The standard program
+here simply specified July 4, 1776, at noon; but
+we want a better approximation to the truth.
+
+@p procedure fix_date_and_time;
+var date,tod:alfa; hour, minute:integer;
+begin datetime(date,tod);
+readstr(str(date),month:3,day:3,year);
+year:=year+1900;{Bug next century}
+readstr(str(tod),hour:3,minute); time:=hour*60+minute;
+end;
+@z
+
+TeX 2.0 WEB source line 5289
+@x
+called |xeq_level|.
+
+@<Glob...@>=
+@!eqtb:array[active_base..eqtb_size] of memory_word;
+@!xeq_level:array[int_base..eqtb_size] of quarterword;
+@y
+called |xeq_level|.
+
+@d LA_eqtb==
+@!eqtb:array[active_base..eqtb_size] of memory_word;
+@!xeq_level:array[int_base..eqtb_size] of quarterword;
+@z
+
+TeX 2.0 WEB source line 5336
+@x
+@d hash_is_full == (hash_used=hash_base) {test if all positions are occupied}
+@d font_id_text(#) == text(font_id_base+#) {a frozen font identifier's name}
+
+@<Glob...@>=
+@!hash: array[hash_base..undefined_control_sequence-1] of two_halves;
+ {the hash table}
+@y
+@d hash_is_full == (hash_used=hash_base) {test if all positions are occupied}
+@d font_id_text(#) == text(font_id_base+#) {a frozen font identifier's name}
+@#
+@d LA_hash==
+@!hash: array[hash_base..undefined_control_sequence-1] of two_halves;
+ {the hash table}
+
+@<Glob...@>=
+@z
+
+TeX 2.0 WEB source line 5721
+@x
+@ @<Glob...@>=
+@!save_stack : array[0..save_size] of memory_word;
+@y
+@ @d LA_save_stack==
+@!save_stack : array[0..save_size] of memory_word;
+
+@<Glob...@>=
+@z
+
+TeX 2.0 WEB source line 6277
+@x
+@ @<Glob...@>=
+@!input_stack : array[0..stack_size] of in_state_record;
+@y
+@ @d LA_input_stack==
+@!input_stack : array[0..stack_size] of in_state_record;
+
+@<Glob...@>=
+@z
+
+TeX 2.0 WEB source line 6543
+@x
+rate from the others.
+
+@<Glob...@>=
+@!param_stack:array [0..param_size] of pointer;
+ {token list pointers for parameters}
+@y
+rate from the others.
+
+@d LA_param_stack==
+@!param_stack:array [0..param_size] of pointer;
+ {token list pointers for parameters}
+
+@<Glob...@>=
+@z
+
+TeX 2.0 WEB source line 9736
+@x
+@d TEX_area=="TeXinputs:"
+@.TeXinputs@>
+@d TEX_font_area=="TeXfonts:"
+@.TeXfonts@>
+@y
+@d TEX_area==".*"
+@.TeXinputs@>
+@d TEX_font_area==""
+@.TeXfonts@>
+@z
+
+TeX 2.0 WEB source line 9751
+@x
+@p function more_name(@!c:ASCII_code):boolean;
+begin if c=" " then more_name:=false
+else begin if (c=">")or(c=":") then
+ begin area_delimiter:=pool_ptr; ext_delimiter:=0;
+ end
+ else if (c=".")and(ext_delimiter=0) then ext_delimiter:=pool_ptr;
+ str_room(1); append_char(c); {contribute |c| to the current string}
+ more_name:=true;
+ end;
+end;
+@y
+@p function more_name(@!c:ASCII_code):boolean;
+var ret:boolean;
+begin
+if c=" " then ret:=false
+else begin ret:=true;
+ if (c=".")then if ext_delimiter=0 then ext_delimiter:=pool_ptr
+ else if area_delimiter=0 then area_delimiter:=pool_ptr
+ else ret:=false;
+ if ret then begin {contribute |c| to the current string}
+ str_room(1); append_char(c); end;
+ end;
+more_name:=ret;
+end;
+@z
+
+TeX 2.0 WEB source line 9769
+@x
+if area_delimiter=0 then cur_area:=""
+else begin cur_area:=str_ptr; incr(str_ptr);
+ str_start[str_ptr]:=area_delimiter+1;
+ end;
+if ext_delimiter=0 then
+ begin cur_ext:=""; cur_name:=make_string;
+ end
+else begin cur_name:=str_ptr; incr(str_ptr);
+ str_start[str_ptr]:=ext_delimiter; cur_ext:=make_string;
+ end;
+end;
+@y
+if ext_delimiter=0 then begin cur_area:=""; cur_ext:="";
+ cur_name:=make_string; end
+else begin cur_name:=str_ptr; incr(str_ptr);
+ str_start[str_ptr]:=ext_delimiter;
+ if area_delimiter=0 then
+ begin cur_area:=""; cur_ext:=make_string;
+ end
+ else begin cur_ext:=str_ptr; incr(str_ptr);
+ str_start[str_ptr]:=area_delimiter; cur_area:=make_string;
+ end;
+ end;
+end;
+@z
+
+TeX 2.0 WEB source line 9788
+@x
+begin print(a); print(n); print(e);
+@y
+begin print(n); print(e); print(a);
+@z
+
+TeX 2.0 WEB source line 9800
+@x
+@p procedure pack_file_name(@!n,@!a,@!e:str_number);
+@y
+@p procedure pack_file_name(@!a,@!e,@!n:str_number);
+@z
+
+TeX 2.0 WEB source line 9818
+@x
+@d format_default_length=20 {length of the |TEX_format_default| string}
+@d format_area_length=11 {length of its area part}
+@y
+@d format_default_length=9 {length of the |TEX_format_default| string}
+@d format_area_length=0 {length of its area part}
+@z
+
+TeX 2.0 WEB source line 9826
+@x
+TEX_format_default:='TeXformats:plain.fmt';
+@y
+TEX_format_default:='plain.fmt';
+@z
+
+TeX 2.0 WEB source line 9998
+@x
+clear_terminal; prompt_input(": "); @<Scan file name in the buffer@>;
+if cur_ext="" then cur_ext:=e;
+pack_cur_name;
+@y
+clear_terminal; prompt_input(": "); @<Scan file name in the buffer@>;
+if cur_ext="" then cur_ext:=e;
+if (s="input file name") and (cur_area="") then cur_area:=TEX_area;
+pack_cur_name;
+@z
+
+TeX 2.0 WEB source line 10034
+@x
+@p procedure open_log_file;
+var old_setting:0..max_selector; {previous |selector| setting}
+@!k:0..buf_size; {index into |months| and |buffer|}
+@!l:0..buf_size; {end of first input line}
+@!months:packed array [1..36] of char; {abbreviations of month names}
+begin old_setting:=selector;
+if job_name=0 then job_name:="texput";
+@.texput@>
+pack_job_name(".log");
+while not a_open_out(log_file) do @<Try to get a different log file name@>;
+log_name:=a_make_name_string(log_file);
+selector:=log_only;
+@y
+@p procedure open_log_file;
+var old_setting:0..max_selector; {previous |selector| setting}
+@!k:0..buf_size; {index into |months| and |buffer|}
+@!l:0..buf_size; {end of first input line}
+@!months:packed array [1..36] of char; {abbreviations of month names}
+begin old_setting:=selector;
+if job_name=0 then job_name:="texput";
+@.texput@>
+pack_job_name(".texlog");
+while not a_open_out(log_file) do @<Try to get a different log file name@>;
+log_name:=a_make_name_string(log_file);
+selector:=log_only;
+@z
+
+TeX 2.0 WEB source line 10089
+@x
+@p procedure start_input; {\TeX\ will \.{\\input} something}
+label done;
+begin scan_file_name; {set |cur_name| to desired file name}
+if cur_ext="" then cur_ext:=".tex";
+pack_cur_name;
+loop@+ begin begin_file_reading; {set up |cur_file| and new level of input}
+ if a_open_in(cur_file) then goto done;
+ if cur_area="" then
+ begin pack_file_name(cur_name,TEX_area,cur_ext);
+ if a_open_in(cur_file) then goto done;
+ end;
+ end_file_reading; {remove the level that didn't work}
+ prompt_file_name("input file name",".tex");
+ end;
+done: name:=a_make_name_string(cur_file);
+if job_name=0 then
+ begin job_name:=cur_name; open_log_file;
+@y
+@p procedure start_input; {\TeX\ will \.{\\input} something}
+label done;
+begin scan_file_name; {set |cur_name| to desired file name}
+if cur_ext="" then cur_ext:=".tex";
+if cur_area="" then cur_area:=TEX_area;
+pack_cur_name;
+loop@+ begin begin_file_reading; {set up |cur_file| and new level of input}
+ if a_open_in(cur_file) then goto done;
+ end_file_reading; {remove the level that didn't work}
+ prompt_file_name("input file name",".tex");
+ end;
+done: name:=a_make_name_string(cur_file);
+if job_name=0 then
+ begin job_name:=cur_name; open_log_file;
+@z
+
+|flush_string| removed--spoils XEDIT invocation
+TeX 2.0 WEB source line 10110
+@x
+print_char("("); print(name); update_terminal; state:=new_line;
+if name=str_ptr-1 then {we can conserve string pool space now}
+ begin flush_string; name:=cur_name;
+ end;
+@<Read the first line of the new file@>;
+end;
+@y
+print_char("("); print(name); update_terminal; state:=new_line;
+@<Read the first line of the new file@>;
+end;
+@z
+
+TeX 2.0 WEB source line 10399
+@x
+@ Here now is the (rather formidable) array of font arrays.
+
+@<Glob...@>=
+@!font_info:array[0..font_mem_size] of memory_word;
+ {the big collection of font data}
+@!fmem_ptr:0..font_mem_size; {first unused word of |font_info|}
+@!font_ptr:internal_font_number; {largest internal font number in use}
+@!font_check:array[internal_font_number] of four_quarters; {check sum}
+@!font_size:array[internal_font_number] of scaled; {``at'' size}
+@!font_dsize:array[internal_font_number] of scaled; {``design'' size}
+@!font_params:array[internal_font_number] of halfword; {how many font
+ parameters are present}
+@!font_name:array[internal_font_number] of str_number; {name of the font}
+@!font_area:array[internal_font_number] of str_number; {area of the font}
+@!font_bc:array[internal_font_number] of eight_bits;
+ {beginning (smallest) character code}
+@!font_ec:array[internal_font_number] of eight_bits;
+ {ending (largest) character code}
+@!font_glue:array[internal_font_number] of pointer;
+ {glue specification for interword space, |null| if not allocated}
+@!font_used:array[internal_font_number] of boolean;
+ {has a character from this font actually appeared in the output?}
+@!hyphen_char:array[internal_font_number] of integer;
+ {current \.{\\hyphenchar} values}
+@!skew_char:array[internal_font_number] of integer;
+ {current \.{\\skewchar} values}
+@y
+@ Here now is the (rather formidable) array of font arrays.
+
+@d LA_font1==
+@!font_info:array[0..font_mem_size] of memory_word;
+ {the big collection of font data}
+@!font_check:array[internal_font_number] of four_quarters; {check sum}
+@!font_size:array[internal_font_number] of scaled; {``at'' size}
+@!font_dsize:array[internal_font_number] of scaled; {``design'' size}
+@!font_params:array[internal_font_number] of halfword; {how many font
+ parameters are present}
+@!font_name:array[internal_font_number] of str_number; {name of the font}
+@!font_area:array[internal_font_number] of str_number; {area of the font}
+@!font_bc:array[internal_font_number] of eight_bits;
+ {beginning (smallest) character code}
+@!font_ec:array[internal_font_number] of eight_bits;
+ {ending (largest) character code}
+@!font_glue:array[internal_font_number] of pointer;
+ {glue specification for interword space, |null| if not allocated}
+@!font_used:array[internal_font_number] of boolean;
+ {has a character from this font actually appeared in the output?}
+@!hyphen_char:array[internal_font_number] of integer;
+ {current \.{\\hyphenchar} values}
+@!skew_char:array[internal_font_number] of integer;
+ {current \.{\\skewchar} values}
+
+@<Glob...@>=
+@!fmem_ptr:0..font_mem_size; {first unused word of |font_info|}
+@!font_ptr:internal_font_number; {largest internal font number in use}
+@z
+
+TeX 2.0 WEB source line 10435
+@x
+@<Glob...@>=
+@y
+@d LA_font2==
+@z
+
+TeX 2.0 WEB source line 10639
+@x
+@ @<Open |tfm_file| for input@>=
+@y
+@ @<Open |tfm_file| for input@>=
+tfm_count:=0;
+@z
+
+TeX 2.0 WEB source line 10654
+@x
+@d fget==get(tfm_file)
+@d fbyte==tfm_file^
+@y
+@ In CMS we know that \.{TFM} files have a logical record length of
+1024 bytes, so we do one |get(tfm_file)| per CMS record. Then, since
+|tfm_file| is a |byte_file| which is a |file of byte_block| which are
+arrays of 1024 bytes, we refer to each byte in the record while it is
+in the file buffer, avoiding the need to |get(tfm_file)| for each byte.
+Note that |fget| procedure is defined at the end of the program.
+@d fbyte==tfm_file@@[tfm_count] {@@ is \pvs\ pointer notation}
+@z
+
+TeX 2.0 WEB source line 11527
+@x
+@ Some systems may find it more efficient to make |dvi_buf| a |packed|
+array, since output of four bytes at once may be facilitated.
+@^system dependencies@>
+@y
+@ We play a trick with variant records so that we can fill up the
+|dvi_buf| array byte by byte, but write it out in one swell foop.
+@^system dependencies@>
+@d dvi_buf==d_buffer.b {buffer for \.{DVI} output}
+@z
+
+TeX 2.0 WEB source line 11531
+@x
+@!dvi_buf:array[dvi_index] of eight_bits; {buffer for \.{DVI} output}
+@y
+@!d_buffer: packed record
+ case boolean of
+ false:(b:packed array [dvi_index] of eight_bits);
+ true: (l:byte_block; r:byte_block);
+ end;
+@z
+
+TeX 2.0 WEB source line 11547
+@x
+@ The actual output of |dvi_buf[a..b]| to |dvi_file| is performed by calling
+|write_dvi(a,b)|. For best results, this procedure should be optimized to
+run as fast as possible on each particular system, since it is part of
+\TeX's inner loop. It is safe to assume that |a| and |b+1| will both be
+multiples of 4 when |write_dvi(a,b)| is called; therefore it is possible on
+many machines to use efficient methods to pack four bytes per word and to
+output an array of words with one system call.
+@^system dependencies@>
+@^inner loop@>
+@^defecation@>
+
+@p procedure write_dvi(@!a,@!b:dvi_index);
+var k:dvi_index;
+begin for k:=a to b do write(dvi_file,dvi_buf[k]);
+end;
+@y
+@ The actual output of |dvi_buf[a..b]| to |dvi_file| is performed by calling
+|write| on the other variant of the |dvi_buf| record. Thus, we had
+better be sure things line up properly.
+many machines to use efficient methods to pack four bytes per word and to
+output an array of words with one system call.
+@^system dependencies@>
+@^inner loop@>
+@^defecation@>
+
+@<Check the ``const...@>=
+if dvi_buf_size<>2*len_byte_block then bad:=223;
+@z
+
+TeX 2.0 WEB source line 11572
+@x
+ begin write_dvi(0,half_buf-1); dvi_limit:=half_buf;
+@y
+ begin write(dvi_file,d_buffer.l); dvi_limit:=half_buf;
+@z
+
+TeX 2.0 WEB source line 11575
+@x
+else begin write_dvi(half_buf,dvi_buf_size-1); dvi_limit:=dvi_buf_size;
+@y
+else begin write(dvi_file,d_buffer.r); dvi_limit:=dvi_buf_size;
+@z
+
+TeX 2.0 WEB source line 11584
+@x
+if dvi_limit=half_buf then write_dvi(half_buf,dvi_buf_size-1);
+if dvi_ptr>0 then write_dvi(0,dvi_ptr-1)
+@y
+if dvi_limit=half_buf then write(dvi_file,d_buffer.r);
+for k:=dvi_ptr to dvi_buf_size do dvi_buf[k]:=223; {bug is |k| ok?}
+if dvi_ptr>0 then write(dvi_file,d_buffer.l);
+if dvi_ptr>half_buf then write(dvi_file,d_buffer.r);
+@z
+
+TeX 1.1 WEB source line 12302
+@x
+print_char("["); j:=9;
+while (count(j)=0)and(j>0) do decr(j);
+for k:=0 to j do
+ begin print_int(count(k));
+ if k<j then print_char(".");
+ end;
+update_terminal;
+if tracing_output>0 then
+ begin print_char("]");
+ begin_diagnostic; show_box(p); end_diagnostic(true);
+ end;
+@<Ship box |p| out@>;
+if tracing_output<=0 then print_char("]");
+@y
+print_char("<"); j:=9;
+while (count(j)=0)and(j>0) do decr(j);
+for k:=0 to j do
+ begin print_int(count(k));
+ if k<j then print_char(".");
+ end;
+update_terminal;
+if tracing_output>0 then
+ begin print_char(">");
+ begin_diagnostic; show_box(p); end_diagnostic(true);
+ end;
+@<Ship box |p| out@>;
+if tracing_output<=0 then print_char(">");
+@z
+
+TeX 2.0 WEB source line 15720
+@x
+@d delta_node=2 {|type| field in a delta node}
+@y
+@d delta_node=2 {|type| field in a delta node}
+
+@<Types...@>=
+@!delta_array=array[1..6] of scaled;
+@z
+
+TeX 2.0 WEB source line 15735
+@x
+@d do_all_six(#)==#(1);#(2);#(3);#(4);#(5);#(6)
+
+@<Glo...@>=
+@!active_width:array[1..6] of scaled;
+ {distance from first active node to~|cur_p|}
+@!cur_active_width:array[1..6] of scaled; {distance from current active node}
+@!background:array[1..6] of scaled; {length of an ``empty'' line}
+@!break_width:array[1..6] of scaled; {length being computed after current break}
+@y
+In standard \TeX\ the |do_all_six| macro is sometimes used just to copy one
+of these arrays to another. In this version, that uses \pvs, these have been
+converted to simple array assignments. This not only produces faster code,
+it decreases the size of the generated procedure: which is important, for
+|try_break| is very nearly too large for \pvs.
+
+@d do_all_six(#)==#(1);#(2);#(3);#(4);#(5);#(6)
+
+@<Glo...@>=
+@!active_width:delta_array; {distance from first active node to~|cur_p|}
+@!cur_active_width:delta_array; {distance from current active node}
+@!background:delta_array; {length of an ``empty'' line}
+@!break_width:delta_array; {length being computed after current break}
+@z
+
+TeX 2.0 WEB source line 15874
+@x
+@<Other local variables for |try_break|@>@;
+@y
+@<Other local variables for |try_break|@>@;
+
+procedure print_new_break; begin
+@<Print a symbolic description of the new break node@>
+end;
+
+procedure print_feasible_break; begin
+ @<Print a symbolic description of this feasible break@>;
+end;
+@z
+
+TeX 2.0 WEB source line 15877
+@x
+do_all_six(copy_to_cur_active);
+@y
+cur_active_width:=active_width; {\pvs\ for |do_all_six(copy_to_cur_active)|}
+@z
+
+TeX 2.0 WEB source line 16020
+@x
+begin no_break_yet:=false; do_all_six(set_break_width_to_background);
+@y
+begin no_break_yet:=false; break_width:=background;
+ {\pvs\ for |do_all_six(set_break_width_to_background)|}
+@z
+
+TeX 2.0 WEB source line 16122
+@x
+ begin do_all_six(store_break_width);
+@y
+ begin active_width:=break_width; {\pvs\ for |do_all_six(store_break_width)|}
+@z
+
+TeX 2.0 WEB source line 16158
+@x
+ @<Print a symbolic description of the new break node@>;
+@y
+ print_new_break;
+@z
+
+TeX 2.0 WEB source line 16343
+@x
+ @<Print a symbolic description of this feasible break@>;
+@y
+ print_feasible_break;
+@z
+
+TeX 2.0 WEB source line 16448
+@x
+ do_all_six(copy_to_cur_active);
+@y
+ cur_active_width:=active_width; {\pvs\ for |do_all_six(copy_to_cur_active)|}
+@z
+
+TeX 2.0 WEB source line 16523
+@x
+do_all_six(store_background);@/
+@y
+active_width:=background; {\pvs\ for |do_all_six(store_background)|}
+@z
+
+TeX 2.0 WEB source line 17394
+@x
+@!trie_pointer=0..trie_size; {an index into |trie|}
+@y
+@!trie_pointer=packed 0..trie_size; {an index into |trie|}
+@z
+
+TeX 2.0 WEB source line 17398
+@x
+@d trie_op(#)==trie[#].b0 {program for hyphenation at this trie location}
+
+@<Glob...@>=
+@y
+@d trie_op(#)==trie[#].b0 {program for hyphenation at this trie location}
+@#
+@d LA_trie==
+@z
+
+TeX 2.0 WEB source line 17457
+@x
+@!hyph_pointer=0..hyph_size; {an index into the ordered hash table}
+
+@ @<Glob...@>=
+@!hyph_word:array[hyph_pointer] of str_number; {exception words}
+@!hyph_list:array[hyph_pointer] of pointer; {list of hyphen positions}
+@y
+@!hyph_pointer=packed 0..hyph_size; {an index into the ordered hash table}
+
+@ @d LA_hyph==
+@!hyph_word:array[hyph_pointer] of str_number; {exception words}
+@!hyph_list:array[hyph_pointer] of pointer; {list of hyphen positions}
+
+@<Glob...@>=
+@z
+
+TeX 2.0 WEB source line 17665
+@x
+@d trie_op_hash_size=quarterword_diff+quarterword_diff {double}
+
+@<Glob...@>=
+@!init@! trie_op_hash:array[0..trie_op_hash_size] of quarterword;
+ {trie op codes for triples}
+tini@;@/
+@t\hskip1em@>@!trie_op_ptr:quarterword; {highest |trie_op| assigned}
+@y
+@d trie_op_hash_size=quarterword_diff+quarterword_diff {double}
+@#
+@d LA_trie_init1==
+@! trie_op_hash:array[0..trie_op_hash_size] of quarterword;
+ {trie op codes for triples}
+
+@<Glob...@>=
+@!trie_op_ptr:quarterword; {highest |trie_op| assigned}
+@z
+
+TeX 2.0 WEB source line 17717
+@x
+@d trie_root==trie_l[0] {root of the linked trie}
+
+@<Glob...@>=
+@!init @!trie_c:packed array[trie_pointer] of ASCII_code; {characters to match}
+@t\hskip1em@>@!trie_o:packed array[trie_pointer] of quarterword;
+ {operations to perform}
+@t\hskip1em@>@!trie_l:packed array[trie_pointer] of trie_pointer;
+ {left subtrie links}
+@t\hskip1em@>@!trie_r:packed array[trie_pointer] of trie_pointer;
+ {right subtrie links}
+@t\hskip1em@>@!trie_ptr:trie_pointer; {the number of nodes in the trie}
+@y
+@d trie_root==trie_l[0] {root of the linked trie}
+@#
+@d LA_trie_init2==
+@!trie_c:packed array[trie_pointer] of ASCII_code; {characters to match}
+@t\hskip1em@>@!trie_o:packed array[trie_pointer] of quarterword;
+ {operations to perform}
+@t\hskip1em@>@!trie_l:packed array[trie_pointer] of trie_pointer;
+ {left subtrie links}
+@t\hskip1em@>@!trie_r:packed array[trie_pointer] of trie_pointer;
+ {right subtrie links}
+
+@<Glob...@>=
+@!init @!trie_ptr:trie_pointer; {the number of nodes in the trie}
+@z
+
+TeX 2.0 WEB source line 17734
+@x
+initialized to zero.
+
+@<Glob...@>=
+@!init @!trie_hash:packed array[trie_pointer] of trie_pointer;
+tini {to identify equivalent subtries}
+@y
+initialized to zero.
+
+@d LA_trie_init3==
+@!trie_hash:packed array[trie_pointer] of trie_pointer;
+ {to identify equivalent subtries}
+@z
+
+TeX 2.0 WEB source line 17809
+@x
+@d trie_back(#)==trie[#].lh {backward links in |trie| holes}
+
+@<Glob...@>=
+@!init@!trie_taken:packed array[trie_pointer] of boolean;
+ {does a family start here?}
+@t\hskip1em@>@!trie_min:trie_pointer;
+@y
+@d trie_back(#)==trie[#].lh {backward links in |trie| holes}
+@#
+@d LA_trie_init4==
+@!trie_taken:packed array[trie_pointer] of boolean;
+ {does a family start here?}
+
+@<Glob...@>=
+@!init @!trie_min:trie_pointer;
+@z
+
+TeX 2.0 WEB source line 22573
+@x
+ if cur_ext="" then cur_ext:=".tex";
+@y
+ if cur_ext="" then cur_ext:=".tex";
+ if cur_area="" then cur_area:=TEX_area;
+@z
+
+TeX 2.0 WEB source line 22865
+@x
+bad_fmt: wake_up_terminal;
+ wterm_ln('(Fatal format file error; I''m stymied)');
+@.Fatal format file error@>
+load_fmt_file:=false;
+exit:end;
+@y
+bad_fmt: wake_up_terminal;
+ wterm_ln('(Fatal format file error; I''m stymied)');
+@.Fatal format file error@>
+history:=fatal_error_stop;
+load_fmt_file:=false;
+exit:end;
+@z
+
+TeX 2.0 WEB source line 22885
+@x
+@d dump_wd(#)==begin fmt_file^:=#; put(fmt_file);@+end
+@d dump_int(#)==begin fmt_file^.int:=#; put(fmt_file);@+end
+@d dump_hh(#)==begin fmt_file^.hh:=#; put(fmt_file);@+end
+@d dump_qqqq(#)==begin fmt_file^.qqqq:=#; put(fmt_file);@+end
+
+@<Glob...@>=
+@y
+@d fmt_word==fmt_file@@[fmt_count]
+
+@d dump_wd(#)==begin fmt_word:=#; put_fmt;@+end
+@d dump_int(#)==begin fmt_word.int:=#; put_fmt;@+end
+@d dump_hh(#)==begin fmt_word.hh:=#; put_fmt;@+end
+@d dump_qqqq(#)==begin fmt_word.qqqq:=#; put_fmt;@+end
+
+@<Glob...@>=
+@!fmt_count:integer;
+@z
+
+TeX 2.0 WEB source line 22897
+@x
+@d undump_wd(#)==begin get(fmt_file); #:=fmt_file^;@+end
+@d undump_int(#)==begin get(fmt_file); #:=fmt_file^.int;@+end
+@d undump_hh(#)==begin get(fmt_file); #:=fmt_file^.hh;@+end
+@d undump_qqqq(#)==begin get(fmt_file); #:=fmt_file^.qqqq;@+end
+@y
+@d undump_wd(#)==begin get_fmt; #:=fmt_word;@+end
+@d undump_int(#)==begin get_fmt; #:=fmt_word.int;@+end
+@d undump_hh(#)==begin get_fmt; #:=fmt_word.hh;@+end
+@d undump_qqqq(#)==begin get_fmt; #:=fmt_word.qqqq;@+end
+@z
+
+TeX 2.0 WEB source line 22912
+@x
+@<Dump constants for consistency check@>=
+@y
+@<Dump constants for consistency check@>=
+fmt_count:=0;
+@z;
+
+TeX 2.0 WEB source line 22927
+@x
+x:=fmt_file^.int;
+@y
+fmt_count:=0;
+x:=fmt_word.int;
+@z
+
+TeX 2.0 WEB source line 23224
+@x
+dump_int(interaction); dump_int(format_ident); dump_int(69069);
+@y
+dump_int(interaction); dump_int(format_ident); dump_int(69069);
+while fmt_count<>0 do dump_int(0); {flush out the buffer}
+@z
+
+TeX 2.0 WEB source line 23309
+@x
+The initial test involving |ready_already| should be deleted if the
+\PASCAL\ runtime system is smart enough to detect such a ``mistake.''
+@^system dependencies@>
+
+@p begin @!{|start_here|}
+history:=fatal_error_stop; {in case we quit during initialization}
+t_open_out; {open the terminal for output}
+if ready_already=314159 then goto start_of_TEX;
+@y
+The initial test involving |ready_already| has been deleted here
+since the
+CMS storage management is not smart enough to clean up properly.
+We also declare the procedure |use_stack| which is explained in
+its definition.
+@^system dependencies@>
+
+@p @<Declare the procedure |use_stack|@> @;
+@#
+begin @!{|start_here|}
+use_stack;
+history:=fatal_error_stop; {in case we quit during initialization}
+t_open_out; {open the terminal for output}
+@z
+
+TeX 2.0 WEB source line 23319
+@x
+ begin wterm_ln('Ouch---my internal constants have been clobbered!',
+ '---case ',bad:1);
+@y
+ begin wterm_ln('Ouch---my internal constants have been clobbered!',
+ '---case ',bad:1);
+ ret_code(100+bad);
+@z
+
+TeX 2.0 WEB source line 23328
+@x
+ready_already:=314159;
+start_of_TEX: @<Initialize the output routines@>;
+@<Get the first line of input and prepare to start@>;
+init_str_ptr:=str_ptr; init_pool_ptr:=pool_ptr;@/
+history:=spotless; {ready to go!}
+main_control; {come to life}
+final_cleanup; {prepare for death}
+end_of_TEX: close_files_and_terminate;
+final_end: ready_already:=0;
+@y
+do_nothing; {remove |ready_already:=314159;|}
+start_of_TEX: @<Initialize the output routines@>;
+@<Get the first line of input and prepare to start@>;
+init_str_ptr:=str_ptr; init_pool_ptr:=pool_ptr;@/
+history:=spotless; {ready to go!}
+main_control; {come to life}
+final_cleanup; {prepare for death}
+end_of_TEX: close_files_and_terminate;
+final_end: ret_code(history*4);
+interrupt:=-1;
+term_attn(interrupt);
+@z
+
+TeX 2.0 WEB source line 23348
+@x
+but that can't cause infinite recursion.
+
+@<Last-minute...@>=
+procedure close_files_and_terminate;
+var k:integer; {all-purpose index}
+begin @<Finish the extensions@>;
+@!stat if tracing_stats>0 then @<Output statistics about this job@>;@;@+tats@/
+wake_up_terminal; @<Finish the \.{DVI} file@>;
+if job_name>0 then
+ begin wlog_cr; a_close(log_file); selector:=selector-2;
+@y
+but that can't cause infinite recursion.
+
+For \pvs\ we explicitly close all text input files, which standard
+\TeX\ leaves open, because \pvs\ sometimes(!) cannot manage
+to close them
+after a |jump_out| from an inner-level input file containing a
+\TeX\ error.
+It is (currently) okay to close files that are not open in \pvs.
+
+@<Last-minute...@>=
+procedure close_files_and_terminate;
+var k:integer; {all-purpose index}
+begin @<Finish the extensions@>;
+@!stat if tracing_stats>0 then @<Output statistics about this job@>;@;@+tats@/
+wake_up_terminal; @<Finish the \.{DVI} file@>;
+if job_name>0 then
+ begin wlog_cr; a_close(log_file);
+ for k:=1 to max_in_open do a_close(input_file[k]); {close input files}
+ selector:=selector-2;
+@z
+
+Web line 23602, add index code
+@x
+@d special_node=3 {|subtype| in whatsits that represent \.{\\special} things}
+@y
+@d special_node=3 {|subtype| in whatsits that represent \.{\\special} things}
+@d ix_print_node=5
+{|subtype| in whatsits that represent \.{\\printindex} things}
+@z
+The following change is to use \write15 to send stuff to CMS
+TeX 2.0 WEB source line 23619
+@x
+@ @<Set init...@>=
+for k:=0 to 17 do write_open[k]:=false;
+@y
+@ @<Set init...@>=
+for k:=0 to 17 do write_open[k]:=false;
+write_open[15]:=true; {hack open \.{\\write15} stream for sending
+ messages to CMS}
+cms_ptr:=1; {initialize |cms_buf| pointer and array}
+for k:=1 to buf_size do cms_buf[k]:=' ';
+@z
+
+Web line 23635, index code
+@x
+primitive("special",extension,special_node);@/
+@!@:special_}{\.{\\special} primitive@>
+@y
+primitive("special",extension,special_node);@/
+@!@:special_}{\.{\\special} primitive@>
+primitive("printindex",extension,ix_print_node);@/
+@!@:printindex_}{\.{\\printindex} primitive@>
+@z
+
+Web line 23651, index code
+@x
+ special_node:print_esc("special");
+@y
+ special_node:print_esc("special");
+ ix_print_node:print_esc("printindex");
+@z
+
+Web line 23671, index code
+@x
+special_node:@<Implement \.{\\special}@>;
+@y
+special_node:@<Implement \.{\\special}@>;
+ix_print_node:@<Implement \.{\\printindex}@>;
+@z
+
+Web line 23725, index code
+@x
+@<Implement \.{\\special}@>=
+begin new_whatsit(special_node,write_node_size); write_stream(tail):=null;
+p:=scan_toks(false,true); write_tokens(tail):=def_ref;
+end
+@y
+@<Implement \.{\\special}@>=
+begin new_whatsit(special_node,write_node_size); write_stream(tail):=null;
+p:=scan_toks(false,true); write_tokens(tail):=def_ref;
+end
+@ This is an extension to call TEXIX, the index building and sorting
+program.
+
+@<Implement \.{\\printindex}@>=
+begin scan_int;
+if (cur_val<1) or (cur_val>3)
+then begin
+print_err("Invalid index number");
+help2("Since I expected to read a number between 1 and 3,")
+("I changed this one to 1.");
+int_error(cur_val);
+cur_val:=1;
+end;
+texix(chr(cur_val+ord('0')));
+end
+
+@ The next procedure calls the Pascal/VS module TEXIX to build the
+sorted index. TEXIX calls
+the PL/1 procedure PLSORT, which calls the CASORT procedure to sort
+the index file.
+
+@<Declare procedures needed in |do_ext...@>=
+procedure texix(@!ix:char); external;
+
+@z
+
+TeX 2.0 WEB source line 23949
+@x
+This section should be replaced, if necessary, by changes to the program
+that are necessary to make \TeX\ work at a particular installation.
+It is usually best to design your change file so that all changes to
+previous sections preserve the section numbering; then everybody's version
+will be consistent with the published program. More extensive changes,
+which introduce new sections, can be inserted here; then only the index
+itself will get a new section number.
+@^system dependencies@>
+@y
+The following sections, as recommended, contain the changes necessary to
+make \TeX\ work under \pvs\ and CMS.
+
+@ The following two sections of code and comment are from Chris Thompson
+of Cambridge University Computing Service:
+
+One of the unfortunate features of the \pvs\ compiler (and, indeed, of
+all known \PASCAL\ compilers for the IBM/370 architecture) is that variables
+in a stack frame are allocated strictly in the order they were declared.
+If the stack frame is more than 4096 bytes long, access to the later variables
+is less efficient, as \pvs\ must generate code to add a suitable multiple
+of 4096 to the base register for the stack frame. If many different multiples
+of 4096 are involved, the situation is correspondingly worse.
+
+Unfortunately, this effect is particularly acute for programs like \TeX.
+The order of the global variable declarations in the program generated by
+\.{TANGLE} is the order they actually occur in the source of \TeX. This order
+is oriented towards a structured exposition of the program. In particular,
+arrays (some of them rather large) and simple variables are mixed up; thus
+some of the most heavily used global variables in \TeX\ not only are not
+assigned addresses in the first 4096 bytes of the global stack frame, but
+even occur in many different 4096-byte sections of that frame, causing
+\pvs\ to have to assign many registers to point at them.
+
+There are many possible ways in which this situation could be improved.
+In this version of \TeX\ the declarations of the largest arrays have been
+removed from the module ``Global variables'' and added to a new one called
+``Large array variables'' which is inserted at the end of the declarations.
+The object is to make the space allocated to the variables left in the first
+module no more than 4096 bytes. Many of the smaller arrays have been left in
+the first module; after all, they too can gain from being directly addressable.
+
+As the individual sections of ``Global variables'' often contain declarations
+of both simple and array variables, the latter have been converted to
+\.{TANGLE} macros which are expanded here, rather than building up
+``Large array variables'' on the way.
+This would also enable us to change the order of
+these arrays on the global stack frame if desired.
+
+@<Large array...@>=
+ LA_buffer @; LA_string @;
+ LA_mem @; debug LA_mem_debug gubed @;
+ LA_nest @; LA_eqtb @; LA_hash @; LA_save_stack @;
+ LA_input_stack @; LA_param_stack @;
+ LA_font1 @; LA_font2 @;
+ LA_trie @; LA_hyph @;
+ init LA_trie_init1 @; LA_trie_init2 @; LA_trie_init3 @; LA_trie_init4 tini
+
+@ Another unfortunate feature of the \pvs\ compiler (this time unique to it)
+is the way it manages the \PASCAL\ stack. Rather than allocating the whole
+stack area at once, it uses \.{GETMAIN} system calls to obtain chunks of store
+for it on demand. If stack overflow is detected on a routine call (i.e., the
+current chunk is not big enough; which, in particular, always happens when
+the main program is called from the runtime system) then a new chunk is made
+current. This is taken from a chain of spare chunks if any of them is big
+enough; if not, a new chunk is obtained, of size
+$$\lceil\max(\hbox{new stack frame}, d)\rceil\quad\hbox{Kbytes}$$
+where $d$ is specified by a runtime option, defaulting to 12\thinspace Kbytes.
+A special dummy procedure is
+placed between the caller and callee. When the callee returns, this procedure
+switches back to the old chunk, placing the new one on the spare list.
+
+Now, consider the case of \TeX. Most of the stack frames are not much larger
+than the \pvs\ minimum of 144 bytes, because they do not contain arrays;
+on the other hand, the global stack frame is enormous. The chunk obtained
+by \pvs\ for the main program will have between 0~and 1\thinspace Kbytes
+left after the global stack frame itself---and exactly how much will be
+quite impossible to keep control of as \TeX\ is altered. This is not
+enough for very many nested routine calls, and \TeX\ will soon use it up
+and obtain a new chunk of 12\thinspace Kbytes; this will suffice for
+nearly all \TeX\ applications (and if it didn't, we could change the
+runtime option).
+
+Some routines will have their stack frames very near the end of the
+first chunk. On every routine call they make, a switch will have to be
+made to the second chunk, and on each return to them a switch back again.
+Although this part of the \pvs\ runtime system is written in assembler,
+this is still a heavy overhead. If the routine involved is one that calls
+many other routines (the worst case may be |main_control|) then this will
+observably degrade the whole performance of \TeX. Experiments have shown
+variations due to this cause in the CPU time used by \TeX\ of 10\% in
+normal applications, and more than that in special cases.
+
+The possible solutions here range from altering the algorithm in \pvs\ to
+use a chunk size of
+$$\lceil\hbox{new stack frame} + d\rceil\quad\hbox{Kbytes}$$
+(which would work quite well for \TeX) to arranging to always specify a
+runtime system \.{STACK=d} option comfortably larger than the global
+stack frame (but then one could hardly hope ever to get another chunk
+if the first one {\sl did} run out). The solution adopted in this version
+of \TeX\ is to use an assembler routine |use_stack| which arranges that
+its caller's stack frame will subsequently be judged by \pvs\ to be as
+high as possible in the current chunk---to do this it has to know more
+than is good for it about the internals of \pvs, of course!
+
+Ideally, this routine would be used as follows. The main program would
+consist of a call of |use_stack|, followed by a call of
+ \\{do\_everything\_else};
+then only one call-return pair gets the overhead. This is awkward for \TeX,
+though, because of the labels in the main program, especially |end_of_TEX|.
+Almost as good is to insert a call of |use_stack| near the beginning of the
+existing main program, and this is what we do here. It works because the
+main program doesn't actually call many other routines, and has no loops---we
+can hope it will stay that way!
+
+@<Declare the procedure |use_stack|@>=
+procedure use_stack; external;
+
+@ Extra type needed for CMS message
+@<Types...@>=
+
+@!cms_buf_type=packed array[1..buf_size] of char;
+
+@ Here are extra global variables for VM/CMS routines
+@<Glob...@>=
+
+@!inp_line:string(255);
+@!cms_buf:cms_buf_type;
+@!cms_ptr:1..buf_size;
+@!irc:integer;
+@!tfm_count:integer;
+@!status: boolean; {did the last |reset| or |rewrite| succeed?}
+
+@ @<VM/CMS...@>=
+procedure term_attn(var interrupt: integer); fortran;
+procedure cms(const s:string; var rc:integer); external;
+procedure attn202(const lifofifo:alfa; const cmd:string); external;
+procedure okstatus; begin status:=true; end;
+@/@\@=%INCLUDE ONERROR;@>@\
+@#
+procedure onerror; begin
+if @= FERROR @> in [41,48] then begin
+ status:=false;
+ @= FACTION@>:=[@=XDECERR@>]; end;
+if @= FERROR@>=30 then interrupt:=1;
+end;
+
+procedure fget; begin {no check done for eof}
+ incr(tfm_count);
+ if tfm_count=tfm_buf_size then
+ begin get(tfm_file); tfm_count:=0;
+ end;
+ end;
+
+procedure put_fmt; begin
+ incr(fmt_count);
+ if fmt_count=len_word_block then
+ begin put(fmt_file); fmt_count:=0;
+ end;
+ end;
+
+procedure get_fmt; begin
+ incr(fmt_count);
+ if fmt_count=len_word_block then begin
+ get(fmt_file); fmt_count:=0;
+ end;
+ end;
+@z
diff --git a/macros/text1/vax_vms/compile_texix.com b/macros/text1/vax_vms/compile_texix.com
new file mode 100644
index 0000000000..d62df0c372
--- /dev/null
+++ b/macros/text1/vax_vms/compile_texix.com
@@ -0,0 +1,10 @@
+$! used to create a new TEXIX executable
+$!
+$ set noverify
+$ set on
+$ pascal vmssort
+$ tangle texix
+$ pascal texix
+$ link texix,vmssort
+$ set noverify
+$exit
diff --git a/macros/text1/vax_vms/sortcall.pen b/macros/text1/vax_vms/sortcall.pen
new file mode 100644
index 0000000000..af41cfbe0d
--- /dev/null
+++ b/macros/text1/vax_vms/sortcall.pen
Binary files differ
diff --git a/macros/text1/vax_vms/texix.ch b/macros/text1/vax_vms/texix.ch
new file mode 100644
index 0000000000..20168b7fe4
--- /dev/null
+++ b/macros/text1/vax_vms/texix.ch
@@ -0,0 +1,509 @@
+
+@x line 6
+ \centerline{{\twelvept For IBM VM/CMS Pascal/VS}}
+@y
+ \centerline{{\twelvept For Vax Pascal}}
+@z
+
+@x line 107
+segment texix;
+procedure texix(ix:char); external;
+procedure texix;
+@y
+[inherit('sortcall')]
+program texix(input,output);
+@z
+
+@x line 142
+@d getout == return
+@d messages == sysprint
+@y
+@d getout == goto return
+@d messages == output
+@z
+
+@x line 146
+@d max_lrecl = 2048
+@y
+@d max_lrecl = 255
+@z
+
+@x line 147
+in_record := dosubstr(in_record,1 + #)
+@y
+in_record := dosubstr(in_record,1 + #,length(in_record)-(#))
+@z
+
+@x line 176
+@d do_when_bold == begin
+if length(bold_string) > 0 then add_comma(bold_string);
+bold_string:=
+ccat(ccat(ccat(bold_string,'{\bd '),curr_str_page),'}');
+@.\bs{}bd@>
+end
+
+@d do_when_underscore == begin
+if length(us_string) > 0 then add_comma(us_string);
+us_string:=
+ccat(ccat(ccat(us_string,'\us{'),curr_str_page),'}');
+@.\bs{}us@>
+end
+
+@d do_when_italic == begin
+if length(rm_string) > 0 then add_comma(rm_string);
+rm_string:=
+ccat(ccat(ccat(rm_string,'{\it '),curr_str_page),'}');
+@.\bs{}it@>
+end
+@y
+@d do_when_bold == begin
+if length(bold_string) > 0 then add_comma(bold_string);
+bold_string:=ccat(bold_string,'{\bd ');
+bold_string:=ccat(bold_string,curr_str_page);
+bold_string:=ccat(bold_string,'}');
+@.\bs{}us@>
+end
+
+@d do_when_underscore == begin
+if length(us_string) > 0 then add_comma(us_string);
+us_string:=ccat(us_string,'\us{');
+us_string:=ccat(us_string,curr_str_page);
+us_string:=ccat(us_string,'}');
+@.\bs{}us@>
+end
+
+@d do_when_italic == begin
+if length(rm_string) > 0 then add_comma(rm_string);
+rm_string:=ccat(rm_string,'{\it ');
+rm_string:=ccat(rm_string,curr_str_page);
+rm_string:=ccat(rm_string,'}');
+@.\bs{}it@>
+end
+@z
+
+@x line 253
+ ccat := x ccat_temp y;
+@y
+ ccat := x + y;
+@z
+
+@x line 271
+@^System dependent code@>
+@p procedure reset_file(file_number:char);
+begin
+if file_number = '9' then reset(sort_file,
+'NAME=TEXT1$$.OUTSORT.A,LRECL=1857,RECFM=V')
+else reset(ix_file,
+ccat(ccat('NAME=TEXT1$$.IX',str(file_number)),'.A'));
+end;
+@y
+@^System dependent code@>
+@p procedure reset_file(file_number:char);
+begin
+if file_number = '9' then begin open(sort_file,
+'TEXT1$$.OUTSORT',history:=readonly); reset(sort_file); end
+else begin open(ix_file,ccat('TEXT1$$.IX',file_number),history:=readonly);
+reset(ix_file); end;
+end;
+
+function trim(object:string_pass):string_pass;
+var i:integer;
+new_string:string_pass;
+begin
+i:=length(object)+1;
+repeat
+ decr(i);
+ until (object[i] <> ' ') or (i=1);
+if (object[i] = ' ') and (i=1)
+then new_string:=''
+else new_string:=dosubstr(object,1,i);
+trim:=new_string;
+end;
+@z
+
+@x line 288
+rewrite(sort_file,'NAME=TEXT1$$.INSORT.A,LRECL=1857,RECFM=V')
+else
+rewrite(ix_file,
+ccat(ccat('NAME=TEXT1$$.IX',str(file_number)),
+'.A,LRECL=2048,RECFM=V'));
+@y
+begin open(sort_file,'TEXT1$$.INSORT');
+rewrite(sort_file); end
+else
+begin
+open(ix_file,ccat('TEXT1$$.IX',file_number),
+record@=_@>@t\_@>length:=1024);
+rewrite(ix_file); end;
+@z
+
+@x line 444
+@ The {\it get\_numeric}
+function will take a packed array of length max\_pn\_alpha and convert
+that array (which is really the page number) into an integer.
+
+@p function get_numeric(x_string:string_type(max_pn_alpha)):integer;
+var @!i:integer;
+begin
+readstr(x_string,i);
+get_numeric:=i;
+end;
+@y
+@ The {\it get\_numeric}
+function will take a packed array of length max\_pn\_alpha and convert
+that array (which is really the page number) into an integer.
+
+@p function get_numeric(x_string:string_pass):integer;
+var @!i:integer;
+begin
+readv(x_string,i);
+get_numeric:=i;
+end;
+@z
+
+@x line 459
+@p procedure strvalue(x:integer; var results:pass_pn_alpha);
+var
+temp:string_type(max_pn_alpha);
+begin
+writestr(temp,x);
+results:=ltrim(temp);
+end;
+@y
+@p function ltrim(triml_in_string:string_pass):pn_type;
+var i,j:integer;
+triml_out_string:pn_type;
+begin
+j:=0;
+for i:=1 to length(triml_in_string) do begin
+if triml_in_string[i] <> ' ' then begin
+ incr(j);
+ triml_out_string[j]:=triml_in_string[i];
+ end;
+end;
+ltrim:=triml_out_string;
+end;
+
+
+procedure strvalue(x:integer; var results:pn_type);
+var
+temp:string_type(max_pn_alpha);
+begin
+ writev(temp,x);
+ results:=trim(ltrim(temp));
+ end;
+@z
+
+@x line 470
+@p function strconv(x:pn_alpha_type):string_type(max_pn_alpha);
+var i:integer;
+temp:string_type(max_pn_alpha);
+begin
+temp:='';i := 1;
+with sort_record do begin
+repeat
+if x[i] <> ' ' then
+temp := ccat(temp,str(x[i]));
+incr(i);
+until (i > max_pn_alpha) or (x[i] = ' ');
+end;
+strconv:=temp;
+end;
+@y
+@p function strconv(x:pn_alpha_type):pass_pn_alpha;
+var i:integer;
+temp:string_type(max_pn_alpha);
+begin
+temp:='';i := 1;
+with sort_record do begin
+repeat
+if x[i] <> ' ' then
+temp := ccat(temp,x[i]);
+incr(i);
+until (i > max_pn_alpha) or (x[i] = ' ');
+end;
+strconv:=temp;
+end;
+@z
+
+@x line 626
+@ The {\it plsort} procedure is written in PL/1 to call the CMS sort program
+Syncsort. This was necessary since you cannot call Syncsort from PASCAL/VS.
+The fields to be sorted are defined internally in the {\it plsort}
+program. This should be the same as the three sort fields in {\it sort\_type}.
+@:sort_type@>
+@:plsort@> @^PL/1@>
+@^Syncsort@>
+
+@p procedure plsort(var sort_rc:integer); fortran;
+@y
+@ The {\it vmssort} procedure calls a VMS sort program.
+You can use your favorite program here.
+The three sort fields in {\it sort\_type} are to be sorted.
+@:sort_type@>
+@:vmssort@>
+
+@z
+
+@x line 643
+@ This function converts to all uppercase.
+Notice that this is an EBCIDIC conversion, not an ASCII conversion
+to uppercase.
+
+@p function upper_case(x:char):char;
+var temp:char;
+begin
+ if (ord(x)>=129)and(ord(x)<=169) then
+ temp:=chr(ord(x)+64)
+ else temp:=x;
+upper_case:=temp;
+end;
+@y
+@ This function converts to all uppercase.
+Notice that this is an ASCII conversion, not an EBCDIC conversion
+to uppercase.
+
+@p function upper_case(x:char):char;
+var temp:char;
+begin
+ if ord(x) >= "a" then
+ temp:=chr(ord(x)-@'40)
+ else temp:=x;
+upper_case:=temp;
+end;
+@z
+
+
+@x line 710
+@!temp_strvalue:pass_pn_alpha;
+@y
+@!temp_strvalue:pn_type;
+@z
+
+@x line 738
+if dosubstr(in_record,doindex(in_record,'=')+1) = 'no'
+@y
+if dosubstr(in_record,doindex(in_record,'=')+1,length(in_record)
+-doindex(in_record,'=')) = 'no'
+@z
+
+@x line 744
+if dosubstr(in_record,doindex(in_record,'=')+1) = 'no'
+@y
+if dosubstr(in_record,doindex(in_record,'=')+1,length(in_record)
+-doindex(in_record,'=')) = 'no'
+@z
+
+@x line 862
+@<Write Sort Record@>=
+sort_file@@:=sort_record;
+put(sort_file);
+@y
+@<Write Sort Record@>=
+write(sort_file,sort_record);
+@z
+
+@x line 890
+The page number for a blind entry will always be 999999999.
+
+@<Do Blind Entry@>=
+begin remove_characters(6);{Throw away the `\$\{\$\}be'}@/
+i := doindex(in_record,'{$}');
+curr_level:=2;
+write_print_chars(i-1);
+curr_level:=0;
+remove_characters(3);{Throw away the `\{\$\}'}
+sort_record.page_number := 999999999;
+@y
+The page number for a blind entry will always be 9999.
+
+@<Do Blind Entry@>=
+begin remove_characters(6);{Throw away the `\$\{\$\}be'}@/
+i := doindex(in_record,'{$}');
+curr_level:=2;
+write_print_chars(i-1);
+curr_level:=0;
+remove_characters(3);{Throw away the `\{\$\}'}
+sort_record.page_number := 9999;
+@z
+
+@x line 937
+@p procedure add_page_number;
+var i:integer;
+@y
+@p procedure add_page_number;
+var i:integer;
+label return;
+@z
+
+@x line 955
+@<Add Page Number to the String@>
+@y
+@<Add Page Number to the String@>
+return:
+@z
+
+@x line 963
+@!str_build:string_type(max_lrecl);
+@y
+@!str_build:string_type(max_lrecl);
+@!temp_build:string_type(max_lrecl);
+@z
+
+@x line 976
+str_blind_entry := ccat(str_blind_entry,str(field_level[i]));
+@y
+str_blind_entry := ccat(str_blind_entry,field_level[i]);
+@z
+
+@x line 996
+@ If the {\it page\_string[1]} is less than zero, its alphabetic and
+roman numeral processing is necessary.
+
+@<Do Sorted Non Blind Entry@>=
+with sort_record do begin
+if ord(page_string[1]) < ord('0')
+@y
+@ If the {\it page\_string[1]} is greater
+ than nine, its alphabetic and
+roman numeral processing is necessary.
+
+@<Do Sorted Non Blind Entry@>=
+with sort_record do begin
+if ord(page_string[1]) > ord('9')
+@z
+
+@x line 1006
+str_build := ccat(ccat(ccat(strconv(page_string),
+','),temp_strvalue),str_build);
+@y
+temp_build:=ccat(strconv(page_string),',');
+temp_build:=ccat(temp_build,temp_strvalue);
+str_build:=ccat(temp_build,str_build);
+@z
+
+@x line 1103
+then curr_str_page:=dosubstr(curr_str_page,2)
+@y
+then curr_str_page:=dosubstr(curr_str_page,2,length(curr_str_page)-1)
+@z
+
+@x line 1179
+if i < 1 then begin curr_str_page:=str_build; str_build:='';end
+else begin
+curr_str_page:=dosubstr(str_build,1,i-1);
+str_build := dosubstr(str_build,i+1);
+end;
+@<Get the Current Print Type of this Page Number@>;@/
+if ord(curr_str_page[1]) < ord('0') {Then its alphabetic}
+@y
+if i < 1 then begin curr_str_page:=str_build;
+str_build:='';end
+else begin
+curr_str_page:=dosubstr(str_build,1,i-1);
+str_build := dosubstr(str_build,i+1,length(str_build)-i);
+end;
+@<Get the Current Print Type of this Page Number@>;@/
+if ord(curr_str_page[1]) > ord('9')
+@z
+
+
+@x line 1192
+if i < 1 then begin temp_roman:=str_build; str_build:='';end
+else begin
+temp_roman:=dosubstr(str_build,1,i-1);
+str_build := dosubstr(str_build,i+1);
+@y
+if i < 1 then begin temp_roman:=str_build;
+str_build:='';end
+else begin
+temp_roman:=dosubstr(str_build,1,i-1);
+str_build := dosubstr(str_build,i+1,length(str_build)-i);
+@z
+
+@x line 1254
+output_string := ccat(ccat('\leader{}',output_string),'\par');
+@y
+output_string:=ccat('\leader{}',output_string);
+output_string:=ccat(output_string,'\par');
+@z
+
+@x line 1305
+sort_record:=sort_file@@;
+get(sort_file);
+@y
+read(sort_file,sort_record);
+@z
+
+@x line 1524
+@* Main Program.
+Ok, here is the main program. First we initialize (all\_blanks); then
+set the ix\_file for input and the sort\_file for output; read all of the
+entries, processing each one; close the files; sort; read the sorted file
+in and build the entries, writing them back to the ix\_file to be read in
+by the index markup. WHEW!!
+
+@p
+begin @<Initialize Main@>@/
+termout(messages);
+reset_file(ix);@/
+file_rewrite(s_file_number); {Should always be file 9}@/
+read_all_entries;@/
+close(ix_file);@/
+close(sort_file);@/
+@<Sort the Index@>@/
+reset_file(s_file_number);@/
+file_rewrite(ix);@/
+build_sorted_index;@/
+end;
+@y
+@* Main Program.
+Ok, here is the main program. First we initialize (all\_blanks); then
+prompt to determine which index to use (1, 2, or 3).
+Next call VMS' sort routine. And thats it.
+ WHEW!!
+
+@p
+begin @<Initialize Main@>@/
+write('Which index are you processing (1, 2, or 3)? ');@/
+readln(ix);@/
+if (ix <> '1') and (ix <> '2') and (ix <> '3') then begin
+writeln(messages,
+'You can only process indexes 1, 2, or 3. Start again.');
+halt; end;
+writeln('');
+writeln(messages,'Starting the sort routine....');
+writeln(messages);
+reset_file(ix);@/
+file_rewrite('9');
+read_all_entries;
+close(ix_file);
+close(sort_file);
+@<Sort the Index@>@/
+reset_file('9');
+file_rewrite(ix);
+build_sorted_index;
+close(ix_file); {ix\_file now has the index to be run through \TeX}
+end.
+@z
+
+
+@x line 1558
+sort_rc:integer;
+@y
+sort_rc:integer;
+@!ix:char;
+@z
+
+
+@x line 1565
+plsort(sort_rc);
+if sort_rc = 0
+ then writeln(messages,'Index Successfully Completed')
+ else writeln(messages,'Index Failed');
+@y
+vmssort(sort_rc);
+if odd(sort_rc)
+ then writeln(messages,'Index Successfully Completed')
+ else writeln(messages,'Index Failed');
+@z
diff --git a/macros/text1/vax_vms/texix_vms.readme b/macros/text1/vax_vms/texix_vms.readme
new file mode 100644
index 0000000000..1bc62ad50d
--- /dev/null
+++ b/macros/text1/vax_vms/texix_vms.readme
@@ -0,0 +1,12 @@
+To create a new application on VMS for the TEXT1 sorted index, you
+must TANGLE the TEXIX.WEB file (found in the directory TEXIX) with the
+TEXIX.CH changes file in this directory. Then compile the program with Pascal.
+You must also compile VMSSORT with Pascal.
+This is all done for you with the COMPILE_TEXIX.COM procedure.
+The resulting TEXIX.EXE can be run by saying:
+
+ $ RUN TEXIX
+
+It will ask for index level 1, 2, or 3. Usually "1" is used, which corresponds
+to the index file TEXT1$$.IX1 which was created by running TEXT1 on your TEX
+file.
diff --git a/macros/text1/vax_vms/vmssort.pas b/macros/text1/vax_vms/vmssort.pas
new file mode 100644
index 0000000000..064cef2593
--- /dev/null
+++ b/macros/text1/vax_vms/vmssort.pas
@@ -0,0 +1,78 @@
+[environment('sortcall')]
+
+module vmssort(output);
+procedure vmssort(var sort_rc:integer);
+label RETURN;
+
+const
+ max_pn_alpha=20;
+ max_field = 300;
+ SS$_NORMAL = 1;
+ DSC$K_DTYPE_L = 8; (* Longword Integer. 32-bit signed *)
+ DSC$K_DTYPE_T = 14; (* Character-coded text. A single 8-bit character *)
+ sor$gk_record = 1;
+
+type
+ word_integer = [word] 0..65535;
+ byte_integer = [byte] 0..255;
+ pn_alpha_type=packed array[1..max_pn_alpha] of char;
+ field_array = packed array[1..max_field] of char;
+ field_type = packed record
+ field_lngth :integer;
+ field_level :field_array;
+ end;
+ sort_type = packed record
+ record_type :char;
+ page_number :integer;
+ abs_page_number :integer;
+ page_string :pn_alpha_type;
+ sort_part :packed array[1..3] of field_type;
+ print :packed array[1..3] of field_type;
+ end;
+
+
+var
+ sort_stat: integer;
+ key_info:array[1..21] of word_integer
+ := (5,DSC$K_DTYPE_T,0,33,300,
+ DSC$K_DTYPE_T,0,337,300,
+ DSC$K_DTYPE_T,0,641,300,
+ DSC$K_DTYPE_L,1,5,4,
+ DSC$K_DTYPE_L,0,1,4);
+ vmssort_type:byte_integer := sor$gk_record;
+
+
+function sor$pass_files(
+ in_file: [class_s] packed array [l..u:integer] of char;
+ out_file: [class_s] packed array [a..b:integer] of char)
+ : integer; extern;
+
+function sor$begin_sort(
+ %REF key_data: array [l..u:integer] of word_integer;
+ long_rec: word_integer := %IMMED 0;
+ options: integer := %IMMED 0;
+ in_file_size: integer := %IMMED 0;
+ user_compare: integer := %IMMED 0;
+ user_equal: integer := %IMMED 0;
+ s_type: byte_integer;
+ work_files: byte_integer := %IMMED 0;
+ context : integer := %IMMED 0): integer; extern;
+
+function sor$sort_merge: integer; extern;
+
+function sor$end_sort: integer; extern;
+
+begin
+ sort_stat:=sor$pass_files(in_file:='TEXT1$$.INSORT',
+ out_file:='TEXT1$$.OUTSORT');
+ if not odd(sort_stat) then goto RETURN;
+ sort_stat:=sor$begin_sort(key_data:=key_info,
+ s_type:=vmssort_type);
+ if not odd(sort_stat) then goto RETURN;
+ sort_stat:=sor$sort_merge;
+ if not odd(sort_stat) then goto RETURN;
+ sort_stat:=sor$end_sort;
+RETURN:
+ sort_rc:=sort_stat;
+end;
+end.