wline; stop
finish
trueif runflag=0
ok = -1
p = m_gla; p = p&¬1 unless p=1
code = (header_main&65535)<<1+code
run(code,p)
stop
end {main}; trueif main; false
end {loadmodule}
! Diagnostics
string (31)fn nameof(integer token)
integer ls
string (255)s
transname(token,s)
ls = length(s)
if ls>4 start
ls = ls-4 if substring(s,ls-3,ls)=".MOB"
finish
ls = 31 if ls>31
length(s) = ls
result = s
end
integerfn codestart(record (mob header f)name h)
integer a
and$or (tdrain¬,double) -> purge¬
u74 (.0,tfill¬,.reset¬,purge¬) -> tempty¬,tempty
$land$nor (tfill¬,tdma¬) -> setdouble
nand (setdouble,wcz¬) -> setdouble¬
u74 (.0,setdouble¬,.reset¬,tdrain¬) -> double,double¬
$lnand$or (tdrain¬,double) -> teh¬
$lnand$or (tdrain¬,double¬) -> tel¬
$lnand$or (wcz¬,tdmaing¬) -> clrodd¬
$ Receiver (E->U)
nand(rdma,dmaing) -> rdmaing¬
$lnor$and (rdmaing¬,rdbr¬) -> rdrain¬
u125 (rempty¬,erlt¬) -> ed<7>
$lor$nand (ewlt¬,eiowr¬) -> ew1
$lor$nand (ewlt¬,edack¬<3>) -> ew2
nand (ew1,ew2) -> rfill¬
and (edack¬<3>,rempty) -> edrq<3>
$lnor$and (readcc¬,.reset¬) -> clrb9¬
u74 (ea¬<0>,clrb9¬,?,ewlt¬) -> rbit9¬,rbit9
u74 (rbit9¬,clrb9¬,rfill¬,rdrain¬) -> rempty,rempty¬
$lnor$and (rdrain¬,.reset¬) -> clrfull¬
$lor$nand (rhalffull¬,rdma) -> setrfull
u74 (rdma,?,clrfull¬,rfill¬) -> rhalffull,rhalffull¬
u74 (setrfull,?,clrfull¬,rfill¬) -> rfull,rfull¬
and (rfill¬,rhalffull) -> rlfill¬
nand (rbit9,rdma,rfull) -> setodd¬
$ Interrupt request logic
$ rbit9¬rdma + rbit9¬rfull + rfull¬rdma
$ reduces to rbit9¬rfull + rfull¬rdma
nand (rbit9,rfull¬) -> rirq¬1
nand (rfull,rdma¬) -> rirq¬2
nand (tempty,tdma¬) -> tirq¬
$lor$nand (bcz¬,tirq¬,rirq¬1,rirq¬2) -> irq
$ Bus acquisition for Interrupt
nor (isack,.reset) -> clbr¬
u74 (ie,?,clbr¬,irq) -> br,?
inv (bgi¬) -> bgi'
nand (bgi¬,passbg) -> clrbgo¬
nor (inting,.reset) -> clrisack¬
u74 (br,clrbgo¬,?,bgi') -> bgo¬,passbg
u74 (br,?,clrisack¬,bgi') -> isack,isack¬
$land$nor (isack¬,rssyn,rbbsy) -> setinting
and (rssyn,inting) -> intdone
nor (intdone,.reset) -> clinting¬
u74 (.0,clinting¬,?,setinting) -> ?,inting
$ DMA request logic
$land$nor (rdma¬,rfull¬) -> rdrq
$land$nor (tdma¬,tempty¬) -> tdrq
nor (rdrq,tdrq) -> drq¬
$ Bus acquisition for DMA
$land$nor (drq¬,dmaing,dsack) -> npr
inv (npgi¬) -> npgi'
nand (npgi¬,passnpg) -> clrnpgo¬
nor (dmaing,.reset) -> clrdsack¬
u74 (npr,clrnpgo¬,?,npgi') -> npgo¬,passnpg
u74 (npr,?,clrdsack¬,npgi') -> dsack,dsack¬
$land$nor (dsack¬,rssyn,rbbsy) -> setdmaing
and (dmaing,rssyn) -> dmadone
nor (dmadone,.reset) -> cldmaing¬
u123 (.0,setdmaing,cldmaing¬,dmarc,dmac) -> dmaing,dmaing¬
or (dmaing,dmaing) -> tmsyn $ Deskew delay
u74 (rssyn,.reset¬,?,dmaing¬) -> ?,tmo
inv (pinit¬) -> pinit
nor (rinit,pinit) -> .reset¬
or (pinit,rinit) -> .reset
u74 (.0,enint¬,.reset¬,disint¬) -> ie,?
nor (.reset,tmo) -> clobber¬
u74 (.0,settdma¬,clobber¬,bcz) -> tdma,tdma¬
u74 (.0,setrdma¬,clobber¬,wcz) -> rdma,rdma¬
u74 (rd<00>,setodd¬,clrodd¬,wbcr¬) -> bcr<00>,?
nand (min0,min1,min2,min3) -> wcz¬
inv (wcz¬) -> wcz
$land$nor (wcz¬,bcr<00>) -> bcz
inv (bcz) -> bcz¬
end