#!/bin/rc

switch($#*){
       case 1
               outfile = $1
               infile = $1.ms
       case *
               outfile = $1
               shift
               infile = $*
}

FONTS='.FP lucidasans'

MACS ='.de BT
nr PX \\n(.s
nr PF \\n(.f
nr Bt 1
ft 1
ps \\n(PS
''lt \\n(LTu
po \\n(POu
if \\n%>0 .tl \(ts\\*(LF\(ts\\*(CF\(ts\\*(RF\(ts
ft \\n(PF
ps \\n(PX
.
de PT
lt \\n(LLu
pc %
nr PN \\n%
nr Ps \\n(PS-1
if \\n(Bt>0  .if e .tl @\\n%     \s\\n(Ps\\*(Au\s0@@@
if \\n(Bt>0  .if o .tl @@@\f2\\*(Tl\\f1     \\n%@
lt \\n(.lu
.'


macros = -ms

switch($outfile){
case 8½ acme gfx panel sam
       macros = ($macros -mpictures)
}

switch($outfile){
case 9 comp 8½ utf acme
       macros = ($macros -mnihongo)
}

fn assemble{
       switch($1){
       case 9
               pageno = 1
               title = 'Plan 9 From Bell Labs'
               author = 'INTRODUCTION'
       case README
               pageno = 23
               title = '\s-1README\s0'
               author = 'INTRODUCTION'
       case names
               pageno = 29
               title = 'The Use of Name Spaces in Plan 9'
               author = 'INTRODUCTION'
       case net
               pageno = 35
               title = 'The Organization of Networks in Plan 9'
               author = 'INTRODUCTION'
       case comp
               pageno = 49
               title = 'How to Use the Plan 9 C Compiler'
               author = 'PROGRAMMING'
       case ape
               pageno = 63
               title = 'APE \(em The ANSI/POSIX Environment'
               author = 'PROGRAMMING'
       case ug
               pageno = 67
               title = 'Alef User''s Guide'
               author = 'PROGRAMMING'
       case alef
               pageno = 103
               title = 'Alef Language Reference Manual'
               author = 'PROGRAMMING'
       case acidpaper
               pageno = 141
               title = 'Acid: A Debugger Built From A Language'
               author = 'PROGRAMMING'
       case acid
               pageno = 155
               title = 'Acid Manual'
               author = 'PROGRAMMING'
       case mk
               pageno = 181
               title = 'Maintaining Files on Plan 9 with Mk'
               author = 'PROGRAMMING'
       case mkfiles
               pageno = 195
               title = 'Plan 9 Mkfiles'
               author = 'PROGRAMMING'
       case asm
               pageno = 203
               title = 'A Manual for the Plan 9 assembler'
               author = 'PROGRAMMING'
       case 8½
               pageno = 211
               title = '8½, the Plan 9 Window System'
               author = 'USER INTERFACES'
       case rc
               pageno = 221
               title = 'Rc \(em The Plan 9 Shell'
               author = 'USER INTERFACES'
       case sam
               pageno = 237
               title = 'The Text Editor Sam'
               author = 'USER INTERFACES'
       case acme       # actually done in acme/mkfile
               pageno = 267
               title = 'The Text Editor Sam'
               author = 'USER INTERFACES'
       case utf
               pageno = 283
               title = 'Hello World, or \f1\S''12''Καλημέρα κόσμε\fP\S''0'', or \f(Jpこんにちは 世界\fP'
               author = 'IMPLEMENTATION'
       case compiler
               pageno = 295
               title = 'Plan 9 C Compilers'
               author = 'IMPLEMENTATION'
       case libmach
               pageno = 305
               title = 'Adding Application Support for a New Architecture'
               author = 'IMPLEMENTATION'
       case fs
               pageno = 313
               title = 'The Plan 9 File Server'
               author = 'IMPLEMENTATION'
       case il
               pageno = 321
               title = 'The IL Protocol'
               author = 'IMPLEMENTATION'
       case sleep
               pageno = 327
               title = 'Process Sleep and Wakeup on a Shared-memory Multiprocessor'
               author = 'IMPLEMENTATION'
       case gfx
               pageno = 333
               title = 'Raster Graphics in Plan 9'
               author = 'MISCELLANY'
       case panel
               pageno = 343
               title = 'A Quick Introduction to the Panel Library'
               author = 'MISCELLANY'
       case lp
               pageno = 363
               title = 'A Guide to the Lp Printer Spooler'
               author = 'MISCELLANY'
       case troff
               pageno = 371
               title = 'Troff User''s Manual'
               author = 'MISCELLANY'
       case spin
               pageno = 411
               title = 'Using SPIN'
               author = 'MISCELLANY'
       case port
               pageno = 439
               title = 'The Various Ports'
               author = 'INSTALLATION'
       case install
               pageno = 447
               title = 'Installing the Plan 9 Distribution'
               author = 'INSTALLATION'
       case *
               echo $1 page number not known >[2=1]
               exit page
       }
       echo $FONTS
       echo .pn $pageno
       echo .ds Tl "$title
       echo .ds Au "$author
       echo $MACS
       pic $infile | tbl | eqn
}

assemble $outfile | troff $macros | lp -m.9 -dstdout > $outfile.bs