Google
 

Trailing-Edge - PDP-10 Archives - decuslib20-01 - decus/20-0023/bartee.mac
There are 2 other files named bartee.mac in the archive. Click here to see a list.
        TITLE  BARTEE
        SUBTTL A.CANTONI + R.PERRY   ELEC ENG  1970
;	Modified for DEC-20 operation by Paul T. Robinson, Wesleyan Univ.
;	for DECUS library conversion
;	EXTERN JOBFF,JOBREL
	extern .jbff,.jbrel

; CONDITIONAL ASSEMBLY PARAMETER LC
; IF LC=0  TTY INPUT AND OUTPUT 
; IF LC=1  CDR INPUT AND LPT OUTPUT
	IFNDEF LC,<LC=0>
	IFE LC ,<
	OPDEF TTCALL [51B8]
LINCNT:	65
	62 
ADR:	LJK
ICORE:	1777  >
	IFN LC,<
	OPDEF TTCALL [20B8]
;	EXTERN JOBUUO
	extern .jbuuo
	LOC 41
	JSR UUOH.
	RELOC
LINCNT:	163
	160
CDRI:	BLOCK 3
LPTO:	BLOCK 3
ADR:	ERR
ICORE:	3777
E:	SIXBIT /BARTO/
	SIXBIT /DAT/
	0
	0
EIN:	SIXBIT/BARTI/
	SIXBIT/DAT/
	0
	0  >
	P=17
PT10:	XWD 4,0
PT11:   XWD    7,0
COL:    XWD    1,0                 ;
COL2:   XWD    15,0                ;
COL3:   XWD    1,0                 ;
COL4:   XWD    2,0                 ;
LAST:   0                          ;
BPC:    0
BPI:    0
FLG:    0                          ;OUTPUT FLAG
AFLAG:  0                          ;SPACE FLAG FOR DECO
CVFLG:  0                          ;
PIFLG:	0
PSFLG:	0
JMP:	JUMPE  7,A4-2
	JUMPN  7,A4
ANUM:	1
	3
MINUS:  -1                         ;EQUIVALENT MASKING
TABP:   0
INY:    0                          ;NUMBER OF INPUT LITERALS
OUTY:   0                          ;NUMBER OF OUTPUT LITERALS
CONTR:  0                          ;A COUNTER
CONCTR: 0                          ;A COUNTER
CONI:   0
COCTR:  0
SUM:    0
SUM10:  0                          ;TEMPORARY STORE
SUM11:  0                          ;TEMPORARY STORE
BP10:   XWD    440200,10           ;2 BIT POINTER
BP11:   XWD    440200,11           ;2 BIT POINTER
BPWRD:  XWD    440200,WORD         ;
WORD:   0                          ;TEMPORARY STORE
BPTK11: XWD    200,11
BPTK10: XWD    200,10              ;TICK POINTER
BP11T:  0
BP10T:  0
BPWRDT: 0
TAB:    BLOCK  12                  ;
TAB2:   BLOCK  12                  ;
PL:     BLOCK  20
        PAGE
START:  CALL   [SIXBIT/RESET/]     ;
        MOVE   P,[IOWD 20,PL]
	IFN LC,<
	INIT 1,1
	SIXBIT/CDR/
	CDRI
	JSP 1,NOTAVL
	INBUF 1,2
	INIT 2,1
	SIXBIT/LPT/
	XWD LPTO,0
	JSP 1,NOTAVL
	OUTBUF 2,2
	SETZM LPTO+2
	SETZM E+3
	SETZM E+2
	HLLZS E+1
	ENTER 2,E
	CALL [SIXBIT/EXIT/]
	SETZM EIN+3
	SETZM EIN+2
	HLLZS EIN+1
	LOOKUP 1,EIN
	CALL [SIXBIT/EXIT/]   >
	SETZM PSFLG
	TTCALL 3,MESIN
	TTCALL 3,CRLFA
        PUSHJ  P,DECI              ;
        MOVEM  INY                 ;
        PUSHJ  P,SETCOR            ;
        TTCALL 11,0                ;
        TTCALL 3,MESOUT            ;
        TTCALL 3,CRLFA             ;
        PUSHJ  P,DECI              ;
        MOVEM  OUTY                ;
        TTCALL 11,0                ;
	ADD INY
	CAIL ^D18
	JRST ERROR
GET:    PUSHJ  P,SETCN             ;SET COUNTER UP IN AC1
LJK:    SETZM  @COL                ;
        MOVN   3,INY               ;
        HRLZS  3                   ;
        PUSHJ  P,SETBPC            ;
        PUSHJ  P,SETPBI            ;
ILP:    ILDB   2,BPC               ;
        IDPB   2,BPI               ;
        ADDI   2,60                ;
        TTCALL 1,2                 ;
        AOBJN  3,ILP               ;
        MOVEI  4,40                ;
        TTCALL 1,4                 ;A SPACE
        TTCALL 4,4                 ;
        MOVN   3,OUTY              ;
        HRLZS  3                   ;
        CAIN   4,15                ;
        JRST   DCR                 ;
LAP:    SUBI   4,60                ;
        JUMPE  4,OKA+1             ;
        CAIN   4,1                 ;
        JRST   OKA                 ;
        TTCALL 3,QUEST             ;
        TTCALL 11,0                ;
	JRST @ADR
OKA:    MOVEI  4,3                 ;
        IDPB   4,BPI               ;
        TTCALL 4                   ;
        CAIE   4,15                ;
        AOBJN  3,LAP               ;
        TTCALL 11,0                ;
        AOBJN  1,LJK               ;
SETCOL: SETZB  15,TABP             ;
	SETZM CVFLG
	SETZM PIFLG
	TTCALL 3,CRLF
	TTCALL 3,PITAB
	TTCALL 3,CRLFA
	PUSHJ P,ANS
	SETOM PIFLG
        MOVN   5,INY               ;
        SUBI   5,1                 ;
        HRLZS  5                   ;
LOOP1:  PUSHJ  P,SETCN             ;
        SETZM  CONTR               ;
LOOP2:  MOVE   10,@COL             ;
        TRZ    10,3                ;
        PUSHJ  P,COUNT             ;COUNT NUMBER OF DIFFERING TERMS
        JRST   ENDL                ;RETURN HERE IF TERM TO BE LEFT OUT
        CAIN   7,(5)               ;DOES TERM BELONG TO CURRENT CLASS
        PUSHJ  P,STORE             ;YES STORE IT
ENDL:   AOBJN  1,LOOP2             ;
        MOVE   6,CONTR             ;STORE COUNTER IN TAB
        MOVEM  6,TAB(5)            ;
        AOBJN  5,LOOP1             ;
        MOVEM  15,CONI             ;NUMBER OF NEW TERMS
PROCES: MOVN   5,INY               ;
        SETZM  CONCTR              ;
        HRLZS  5                   ;
LAIP:   MOVN   4,TAB(5)            ;
        SETZM  COCTR               ;
        JUMPE  4,OKR-2             ;
        HRLZS  4                   ;
        HRRZ   7,COL2              ;
        MOVNI  6,(5)               ;
        JUMPE  6,LOIP+2            ;
        HRLZS  6                   ;
LOIP:   ADD    7,TAB(6)            ;
        AOBJN  6,LOIP              ;
        HRRM   7,PT10              ;
        ADD    7,TAB(5)            ;
        HRRM   7,PT11              ;
LOF:    MOVE   10,@PT10            ;
        MOVN   7,TAB+1(5)          ;NUMBER OF TERMS IN SECOND BLOCK
        JUMPE  7,OKR-2             ;
        HRLZS  7                   ;
LIF:    MOVE   11,@PT11            ;
        PUSHJ  P,CONC              ;TRY TO FORM A CONSENSUS
        AOBJN  7,LIF               ;
        AOBJN  4,LOF               ;
        MOVE   12,COCTR            ;
        MOVEM  12,TAB2(5)          ;
OKR:    AOBJN  5,LAIP              ;
        PUSHJ  P,CHKTK             ;
        MOVE   12,CONCTR           ;
        JUMPE  12,DONE             ;
        MOVEM  12,CONI             ;
        HRR    6,COL2              ;
        ADD    6,CONI              ;
        HRRM   6,TRF               ;
        HRL    6,COL3              ;
        HRRM   6,COL3              ;
        HRR    6,COL2              ;
TRF:    BLT    6,0                 ;
        HRLI   6,TAB2              ;SOURCE
        HRRI   6,TAB               ;DESTINATION
        BLT    6,TAB+11            ;
        JRST   PROCES              ;
DONE:   TTCALL 3,CRLF              ;
        SKIPN  TABP                ;ANY PI TERMS ?
        JRST   NOPI                ;NO
	SKIPN PIFLG
	JRST D0
	PUSHJ P,FORMAT
        TTCALL 3,MESSPI            ;HEADING
        TTCALL 3,CRLF              ;
        PUSHJ  P,OUTAB             ;OUTPUT PI'S.
D0:	MOVE 12,TABP         ;CALCULATE
        IDIVI  12,^D36             ;THE NUMBER
        SKIPE  13                  ;OF WORDS
        ADDI   12,1                ;REQUIRED FOR
        MOVE   16,12               ;COVERAGE TERMS.
D1:     PUSHJ  P,CTABLE            ;
        TTCALL 3,CRLF              ;
	PUSHJ P,FORMAT
        TTCALL 3,MESCOR            ;
        TTCALL 3,CRLF              ;
        PUSHJ  P,CORET             ;
        TTCALL 3,CRLF              ;
        TTCALL 3,BMESS             ;
        TTCALL 3,CRLF              ;
        PUSHJ  P,ALG               ;
        TTCALL 3,CRLF              ;
        TTCALL 3,ACVT              ;
        TTCALL 3,CRLFA             ;
	SETOM  CVFLG
	PUSHJ P,ANS
	PUSHJ P,CVHEAD
	SKIPE PSFLG
	JRST D2
	TTCALL 3,CRLF
	TTCALL 3,PSMESS
	TTCALL 3,CRLFA
	SETOM PSFLG
	PUSHJ P,ANS
	JRST BACK
D2:	AOS 5,.jbrel
        IDIVI  5,2000              ;
        TTCALL 3,CRLF              ;
        SETOM  AFLAG               ;
        PUSHJ  P,DECO+1            ;
        TTCALL 3,KMESS             ;
        TTCALL 3,CRLF              ;
EXIT:	MOVE ICORE
        CALL   [SIXBIT/CORE/]      ;
        JUMP                       ;SHOULD NEVER GET HERE
	IFN LC,<
	OUTPUT 2,  >
	CALL [SIXBIT/EXIT/]
ERROR:	TTCALL 3,QUEST
	TTCALL 3,TOMAN
	JRST EXIT-1
        PAGE
COUNT:  MOVN   12,INY              ;
        HRLZS  12                  ;
        MOVE   7,BP10              ;
        MOVEM  7,BP10T             ;
        SETZ   7,                  ;
LOO1:   ILDB   11,BP10T            ;
        CAIN   11,1                ;SKIP IF BYTE NOT A ONE
        AOS    7                   ;ACCUMULATE THE NUMBER OF ONES
        AOBJN  12,LOO1             ;
        SETOM  SUM                 ;IF OUTPUT ALL ZERO ,  OMIT
        MOVN   12,OUTY             ;
        HRLZS  12                  ;
LOO2:   ILDB   11,BP10T            ;
        ADDM   11,SUM              ;
        AOBJN  12,LOO2             ;
        SKIPL  SUM                 ;
        AOS    (P)                 ;
        POPJ   P,                  ;
CONC:   SETOM  SUM                 ;
        MOVN   1,INY               ;
        HRLZS  1                   ;
        MOVE   2,BP10              ;
        MOVEM  2,BP10T             ;
        MOVE   2,BP11              ;
        MOVEM  2,BP11T             ;
        MOVE   2,BPWRD             ;
        MOVEM  2,BPWRDT            ;
LKP:    ILDB   2,BP11T             ;
        ILDB   3,BP10T             ;
        EQV    2,3                 ;
        IDPB   3,BPWRDT            ;
        CAME   2,MINUS             ;IS IT EQUIVALENT ?
        PUSHJ  P,FORM              ;FORM A TENTATIVE CONSENSUS
        AOBJN  1,LKP               ;DO ALL INPUT STRING
        SKIPE  SUM                 ;IF SUM=0 CAN FORM INPUT CONSENSUS AT LEAST
        POPJ   P,                  ;OTHERWISE NO CHANCE AT ALL
        SETZM  SUM                 ;
        SETZM  SUM10               ;
        SETZM  SUM11               ;
        MOVN   1,OUTY              ;
        HRLZS  1                   ;
LFP:    ILDB   2,BP10T             ;
        SKIPE  2                   ;
        AOS    SUM10               ;
        ILDB   3,BP11T             ;
        SKIPE  3                   ;
        AOS    SUM11               ;
        EQV    2,3                 ;
        CAME   2,MINUS             ;
        SETZ   3,                  ;
        SKIPE  3                   ;
        AOS    SUM                 ;CHECK IF ALL ZEROS
        IDPB   3,BPWRDT            ;
        AOBJN  1,LFP               ;
        SKIPN  SUM                 ;
        POPJ   P,                  ;IF ALL 0 CAN IGNORE
        MOVE   2,SUM               ;
        CAML   2,SUM10             ;
        PUSHJ  P,TICK10            ;THIS TERM 10 CONSUMES OTHER
        CAML   2,SUM11             ;
        PUSHJ  P,TICK11            ;
        MOVE   3,WORD              ;
        MOVN   1,CONCTR            ;
        JUMPE  1,STI               ;
        HRLZS  1                   ;
LPP:    CAMN   3,@COL3             ;
        JRST   RET                 ;
        AOBJN  1,LPP               ;
STI:    PUSHJ  P,MVM3              ;
        AOS    COCTR               ;
        AOS    CONCTR              ;
RET:    POPJ   P,                  ;
FORM:   MOVEI  2,3                 ;
        DPB    2,BPWRDT            ;
        AOS    SUM                 ;
        POPJ   P,                  ;
OUTAB:  MOVN   2,TABP              ;
        HRLZS  2                   ;
LAK:    SETOM  FLG                 ;
        MOVE   10,BP10             ;
        MOVEM  10,BP10T            ;
        MOVE   10,@COL4            ;
        SETOM  AFLAG               ;
        PUSHJ  P,DECO              ;
        TTCALL 3,SPACE             ;
        MOVN   5,INY               ;
ITY:    HRLZS  5                   ;
LOK:    ILDB   3,BP10T             ;
        CAIL   3,3                 ;
        MOVEI  3,-3                ;
        ADDI   3,60                ;
        TTCALL 1,3                 ;
        AOBJN  5,LOK               ;
        MOVEI  3,40                ;SPACE
        TTCALL 1,3                 ;
        SKIPL  FLG                 ;
        JRST   OUTA                ;
        SETZM  FLG                 ;
        MOVN   5,OUTY              ;
        JRST   ITY                 ;
OUTA:   TTCALL 3,CRLF              ;
        AOBJN  2,LAK               ;
        POPJ   P,                  ;
        PAGE
DECI:   TTCALL 4,1                 ;
        MOVEI  0                   ;
NXT:    SUBI   1,60                ;
        CAIG   1,11                ;
        SKIPGE 1                   ;
        POPJ   P,                  ;
        IMULI  12                  ;
        ADD    1                   ;
        TTCALL 1                   ;
        JRST   NXT                 ;
DECO:   MOVEI  5,1(2)              ;
        HRLZI  3,-3                ;
        IDIVI  5,12                ;
        HRLM   6,(P)               ;
        AOBJP  3,.+2               ;
        PUSHJ  P,DECO+2            ;
        HLRZ   5,(P)               ;
        JUMPN  5,DOUT              ;
        SKIPGE 6,AFLAG             ;
        MOVNI  5,20                ;
        JUMPG  6,DOUT+3            ;
        SKIPA                      ;
DOUT:   SETZM  AFLAG               ;
        ADDI   5,60                ;
        TTCALL 1,5                 ;
        POPJ   P,                  ;
STORE:  PUSH   P,1                 ;
        HRRZI  @COL2               ;
        HRRZ   1,COL3              ;
        CAMGE  0,1                 ;
        JRST   STEND               ;
        AOS    COL3                ;
        PUSHJ  P,SHIFT4            ;
        HRRZ   1,COL4              ;
        HRRZ   COL3                ;
        SUB    1,0                 ;
ST1:    SOJL   1,STEND             ;
        SOS    1                   ;
        MOVE   @COL3               ;
        AOS    1                   ;
        MOVEM  @COL3               ;
        JRST   ST1                 ;
STEND:  POP    P,1                 ;
        MOVEM  10,@COL2            ;
        AOS    15                  ;
        AOS    CONTR               ;
        POPJ   P,                  ;
        PAGE
SHIFT4: AOS    COL4                ;
        AOS    LAST                ;
        PUSHJ  P,TSTLST            ;
        PUSH   P,2                 ;
        MOVE   2,TABP              ;
SH1:    SOJL   2,SHEND             ;
        SOS    2                   ;
        MOVE   @COL4               ;
        AOS    2                   ;
        MOVEM  @COL4               ;
        JRST   SH1                 ;
SHEND:  POP    P,2                 ;
        POPJ   P,                  ;
OUTIT:  AOS    13,SUM              ;
        IDIVI  13,3                ;
        MOVNS  13                  ;
        HRLZS  13                  ;
R0:     MOVN   12,INY              ;
        HRLZS  12                  ;
        MOVE   10,BP10             ;
        MOVEM  10,BP10T            ;
        PUSHJ  P,SETPBI            ;
R1:     ILDB   6,BPI               ;
        IDPB   6,BP10T             ;
        ADDI   6,60                ;
        SKIPE  14,CVFLG            ;
        TTCALL 1,6                 ;
        AOBJN  12,R1               ;
        JUMPE  14,.+3              ;
        MOVEI  6,40                ;
        TTCALL 1,6                 ;
        MOVN   12,OUTY             ;
        HRLZS  12                  ;
        MOVEI  2,1(13)             ;
R2:     ILDB   6,BPI               ;
        JUMPE  6,R3                ;
        MOVEI  6,1                 ;
        SOSE   2                   ;
        MOVEI  6,0                 ;
R3:     IDPB   6,BP10T             ;
        JUMPE  14,.+3              ;
        ADDI   6,60                ;
        TTCALL 1,6                 ;
        AOBJN  12,R2               ;
        PUSHJ  P,COVER+1(14)       ;
        AOBJN  13,R0               ;
        POPJ   P,                  ;
COVER:  TTCALL 3,SPACE             ;
        PUSH   P,1                 ;
        MOVN   1,16                ;
        HRLZS  1                   ;
        MOVEI  3,(15)              ;
        IMUL   3,16                ;
        HRR    1,3                 ;
        MOVEI  3,0                 ;
        PUSHJ  P,MVM3              ;
        AOBJN  1,.-1               ;
        MOVN   2,TABP              ;
        HRLZS  2                   ;
        PUSH   P,10                ;
        HLLZ   10,@COL2            ;
        PUSHJ  P,STORE             ;
        SOS    15                  ;
        POP    P,10                ;
        POP    P,1                 ;
C1:     MOVE   11,@COL4            ;
        MOVN   12,INY              ;
        SUB    12,OUTY             ;
        HRLZS  12                  ;
        MOVE   6,BP10              ;
        MOVE   7,BP11              ;
        PUSH   P,2                 ;
C2:     ILDB   3,6                 ;
        ILDB   2,7                 ;
        CAIN   2,3                 ;
        JRST   C3                  ;
        CAME   2,3                 ;
        JRST   C4                  ;
C3:     AOBJN  12,C2               ;
        POP    P,2                 ;
        JUMPE  14,.+5              ;
        HRRZM  6,AFLAG             ;MAKE AFLAG > 0.
        PUSHJ  P,DECO              ;
        MOVEI  5,54                ;
        TTCALL 1,5                 ;
        EXCH   2,15                ;
        HRLZI  5,1                 ;
        ADDM   5,@COL2             ;
        EXCH   2,15                ;
        HRLZI  5,400000            ;
        HRRZ   3,2                 ;
        IDIVI  3,^D36              ;
        PUSH   P,1                 ;
        MOVNI  1,(4)               ;
        LSH    5,(1)               ;
        MOVEI  1,(15)              ;
        IMUL   1,16                ;
        ADD    1,3                 ;
        IORM   5,@COL3             ;
        POP    P,1                 ;
        AOS    @COL2               ;
        SKIPA                      ;
C4:     POP    P,2                 ;
        AOBJN  2,C1                ;
        SKIPE  CVFLG               ;
        TTCALL 3,CRLF              ;
        AOS    15                  ;
        POPJ   P,                  ;
CORET:  MOVN   15,CONTR            ;
        HRLZS  15                  ;
COR1:   HRRZ   3,@COL2             ;
        CAIE   3,1                 ;
        JRST   COR2                ;
        HRRZ   3,15                ;
        PUSH   P,15                ;
        PUSHJ  P,GETPI             ;
        POP    P,15                ;
COR2:   AOBJN  15,COR1             ;
        MOVN   15,TABP             ;
        HRLZS  15                  ;
        MOVEI  0                   ;
COR3:   HLRZ   3,@COL2             ;
        CAMGE  3,0                 ;
        JRST   COR4                ;
        MOVE   3                   ;
        HRRZ   1,15                ;
COR4:   AOBJN  15,COR3             ;
        SKIPN  0                   ;
        POPJ   P,                  ;
        MOVE   15,1                ;
        IDIVI  1,^D36              ;
        ADD    1,COL3              ;
        MOVEI  4,^D35              ;
        SUB    4,2                 ;
        LSH    4,14                ;
        ADDI   4,103               ;
        HRL    4,1                 ;
        MOVSS  4                   ;
        HRRZ   2,15                ;
        PUSHJ  P,G0                ;
        JRST   COR2+1              ;
SETPT:  HRLI   4,440103            ;
        HRR    4,COL3              ;
        HRLZI  6,-^D36             ;
        IMUL   6,16                ;
        POPJ   P,                  ;
THRST:  PUSH   P,4                 ;
        PUSHJ  P,SETPT             ;
T1:     ILDB   5,4                 ;
        JUMPE  5,T2                ;
        HRRZ   15,6                ;
        HRROI  5,0                 ;
        DPB    5,4                 ;
        ADDM   5,@COL2             ;
T2:     AOBJN  6,T1                ;
        POP    P,4                 ;
        POPJ   P,                  ;
GETPI:  IMUL   3,16                ;
        PUSHJ  P,SETPT             ;
        ILDB   5,4                 ;
        SKIPN  5                   ;
        AOBJN  6,.-2               ;
        HRRZ   2,6                 ;
        MOVE   15,2                ;
G0:     HRRZS  @COL2               ;
        MOVN   3,CONTR             ;
        HRLZS  3                   ;
G1:     LDB    5,4                 ;
        JUMPE  5,G2                ;
        MOVEI  5,0                 ;
        DPB    5,4                 ;
        HRRZ   5,3                 ;
        IDIV   5,16                ;
        MOVE   15,5                ;
        HLLZS  @COL2               ;
        PUSHJ  P,THRST             ;
G2:     ADDI   3,-1(16)            ;
        AOBJN  3,G1                ;
        AOS    @COL4               ;
        PUSHJ  P,LAK               ;
        POPJ   P,                  ;
NOPI:   TTCALL 3,MESNPI            ;
        TTCALL 3,CRLF              ;
        JRST   EXIT                ;
CVHEAD: TTCALL 3,CRLF              ;
	PUSHJ P,FORMAT
        TTCALL 3,MESSCV            ;COVERAGE TABLE HEADING
        TTCALL 3,CRLF              ;
CTABLE: PUSHJ  P,SETCN             ;
        MOVN   15,TABP             ;SET UP A
        HRLZS  15                  ;COUNTER FOR PI'S.
        MOVEI  10,0                ;AC10 SET TO ZERO
        PUSHJ  P,STORE             ;STORE ZERO AND EXPAND
        SOS    15                  ;BUFFER IF
        AOBJN  15,.-2              ;NECESSARY.
        SETZB  15,CONTR            ;
CTRET:  MOVE   10,@COL             ;
        TRNE   10,1                ;
        JRST   .+4                 ;
        PUSHJ  P,COUNT             ;
        SKIPA                      ;
        PUSHJ  P,OUTIT             ;
        AOBJN  1,CTRET             ;
        POPJ   P,                  ;
DCR:    MOVEI  4,3                 ;
        IDPB   4,BPI               ;
        AOBJN  3,DCR+1             ;
        AOS    @COL                ;
        JRST   SETCOL-2            ;
ALG:    MOVN   1,OUTY              ;
        HRLZS  1                   ;
        MOVEI  4,^D18              ;
        SUB    4,INY               ;
        LSH    4,15                ;
        ADDI   4,200               ;
        HRLZS  4                   ;
A1:     SETOM  FLG                 ;
	MOVE 10,LINCNT
        MOVEI  2,"Z"               ;
        TTCALL 1,2                 ;
	HRRZ 2,1
	HRRZM 10,AFLAG
	PUSHJ P,DECO
        TTCALL 3,EQUAL             ;
        IBP    4                   ;
        MOVN   2,TABP              ;
        HRLZS  2                   ;
A2:     MOVE   @COL4               ;
        TRNN   1                   ;
        JRST   A5                  ;
        LDB    3,4                 ;
        JUMPE  3,A5                ;
	PUSHJ P,SETCNT
	MOVEI 11,"("
	SKIPE 14,PSFLG
	JSP 13,STOW
A3:	ILDB 7,6
	CAIN 7,3
	JRST A4
	HRRZ 11,5
	ADDI 11,"A"
	JSP 13,STOW
	XCT JMP+1(14)
	MOVEI 11,47
	JSP 13,STOW
	JUMPE 14,A4
	MOVEI 11,"+"
	JSP 13,STOW
A4:	AOBJN 5,A3
	SKIPE FLG
	JRST AA
	SUB 10,ANUM+1(14)
	TTCALL 3,PLUS(14)
	JUMPGE 10,AA
	TTCALL 3,CRLFH
	MOVE 10,LINCNT+1
	SETOM FLG
	JRST A3-4
AA:	JUMPE 14,.+3
	MOVEI 11,")"
	DPB 11,12
	MOVEI 11,0
	IDPB 11,12
	TTCALL 3,TAB
	SETZM FLG
A5:	AOBJN 2,A2
	TTCALL 3,CRLF
	AOBJN 1,A1
	POPJ P,
STOW:	IDPB 11,12
	SOJA 10,(13)
ANS:	TTCALL 4,1
	TTCALL 11,0
	CAIE 1,"Y"
	AOS (P)
	POPJ P,
BACK:	PUSHJ P,SETCOR
	PUSHJ P,SETCN
	MOVN 2,OUTY
	ASH 2,1
	HRLZI 3,400000
	ASH 3,1(2)
	MOVN 2,INY
	ASH 2,1
	LSH 3,(2)
NEXT:	MOVE @COL
	TRNE 1
	JRST .+3
	TDC 3
	MOVEM @COL
	AOBJN 1,NEXT
	JRST SETCOL
SETCNT: MOVN   5,INY               ;
        HRLZS  5                   ;
        HRLZI  6,440200            ;
	MOVE 12,[XWD 440700,TAB]
        POPJ   P,                  ;
MVM3:   HRRZI  @COL3               ;
        PUSH   P,2                 ;
        HRRZ   2,COL4              ;
        CAML   0,2                 ;
        PUSHJ  P,SHIFT4            ;
        MOVEM  3,@COL3             ;
        POP    P,2                 ;
        POPJ   P,                  ;
SETCOR: MOVEI  1,1                 ;
        LSH    1,@INY              ;
        MOVE   .jbff               ;
        HRRM   COL                 ;
        ADD    1                   ;
        HRRM   COL2                ;
        HRRM   COL3                ;
        HRRM   COL4                ;
        MOVEM  LAST                ;
        PUSHJ  P,TSTLST            ;
        POPJ   P,                  ;
TSTLST: MOVE   .jbrel              ;
        CAML   LAST                ;
        POPJ   P,                  ;
        ADDI   2000                ;
        CALL   [SIXBIT/CORE/]      ;
        SKIPA                      ;
        JRST   TSTLST              ;
        TTCALL 3,QUEST             ;
        TTCALL 3,NOCOR             ;
        TTCALL 3,CRLF              ;
        JRST   EXIT                ;
CHKTK:  MOVN   15,CONI             ;
        JUMPE  15,CONT+2           ;
        HRLZS  15                  ;
        MOVE   2,TABP              ;
LG:     MOVE   10,@COL2            ;
        LDB    11,BPTK10           ;
        JUMPN  11,CONT             ;
        AOS    LAST                ;
        PUSHJ  P,TSTLST            ;
        MOVEM  10,@COL4            ;
        AOS    2                   ;
CONT:   AOBJN  15,LG               ;
        MOVEM  2,TABP              ;
        POPJ   P,                  ;
SETCN:  HRROI  1,0                 ;
        LSH    1,@INY              ;
        POPJ   P,                  ;
SETBPC: HRLZ   6,INY               ;
        HRRI   6,10000             ;
        LSH    6,14                ;
        HRRI   6,1                 ;
        MOVEM  6,BPC               ;
        POPJ   P,                  ;
SETPBI: HRLI   6,440200            ;
        HRRI   6,@COL              ;
        MOVEM  6,BPI               ;
        POPJ   P,                  ;
TICK10: MOVEI  3,1                 ;
        DPB    3,BPTK10            ;
        MOVEM  10,@PT10            ;
        POPJ   P,                  ;
TICK11: MOVEI  3,1                 ;
        DPB    3,BPTK11            ;
        MOVEM  11,@PT11            ;
        POPJ   P,                  ;
        PAGE
MESIN:  ASCIZ  / NUMBER OF INPUT LITERALS ?/
MESOUT: ASCIZ  / NUMBER OF OUTPUT LITERALS ?/
PITAB:	ASCIZ  / PRIME IMPLICANT PRINTOUT ?/
MESSPI: ASCIZ  / PRIME IMPLICANTS /
MESSCV: ASCIZ  /  COVERAGE TABLE/
MESCOR: ASCIZ  / A POSSIBLE CORE SELECTION IS :-/
BMESS:  ASCIZ  /  EQUIVALENT BOOLEAN EXPRESSION/
EQUAL:  ASCIZ  / = /
	ASCIZ /*/                  ;MUST PRECEDE PLUS
PLUS:   ASCIZ  / + /
SPACE:  ASCIZ  /   /
ACVT:   ASCIZ  / COVERAGE TABLE PRINTOUT ?/
PSMESS:	ASCIZ  /  PRODUCT OF SUMS AS WELL ?/
KMESS:  ASCIZ  /K OF CORE USED/
MESNPI: ASCIZ  / NO PRIME IMPLICANTS ?/
NOCOR:  ASCIZ  / INSUFFICIENT CORE AVAILABLE ?/
TOMAN:	ASCIZ/  A MAXIMUM OF 17 LITERALS ALLOWED /
CRLF:   BYTE (7) 15,12,0
CRLFA:  BYTE (7) 15,12,52,0
CRLFH:  BYTE (7) 15,12,11,0
QUEST:  BYTE (7) 77,15,12,0
	IFN  LC,<
EMESS:	ASCIZ /    NOT AVAILABLE ?/
EMESS1:	ASCIZ /ILLEGAL CHAR. ON INPUT/
NOTAVL:	MOVE -3(1)
	HRLZI 1,440600
	MOVE 2,[XWD 440700,EMESS]
	HRLZI 3,-3
	ILDB 4,1
	ADDI 4,40
	IDPB 4,2
	AOBJN 3,.-3
	XWD 51140,EMESS
	XWD 51140,CRLF
	CALL [SIXBIT/EXIT/]
ERR:	TTCALL 3,EMESS1
	JRST EXIT-1
UUOH.:	0
	PUSH P,0
	PUSH P,1
	HRRZ .jbuuo
	CAILE 1
	JRST .+3
	MOVEI -1(P)
	ADDM .jbuuo
	HLRZ .jbuuo
	TRZ 777000
	CAIN 140
	JRST TTC3.
	CAIN 40
	JRST TTC1.
	CAIN 200
	JRST TTC4.
	JUMPE TTC0.
	JRST TTC11.
END.:	POP P,1
	POP P,0
	JRST 2,@UUOH.
TTC3.:	HRRZ .jbuuo
	HRLI 440700
	ILDB 1,0
	JUMPE 1,END.
	PUSHJ P,OUTY.
	JRST .-3
TTC1.:	MOVE 1,@.jbuuo
	PUSHJ P,OUTY.
	JRST END.
TTC4.:
TTC0.:	PUSHJ P,GET.
	SKIPE 1
	CAIN 1,40
	JRST TTC0.
	MOVEM 1,@.jbuuo
	CAIE 1,15
	PUSHJ P,OUTY.
	JRST END.
TTC11.:	PUSHJ P,NEXT.
	MOVEI CRLF
	JRST TTC3.+1
GET.:	SOSG CDRI+2
	INPUT 1,
	ILDB 1,CDRI+1
	POPJ P,
OUTY.:	SOSG LPTO+2
	OUTPUT 2,
	IDPB 1,LPTO+1
	POPJ P,
NEXT.:	PUSHJ P,GET.
	CAIE 1,12
	JRST NEXT.
	POPJ P,
	>
FORMAT:	PUSH P,1
	MOVEI 1,15-LC
	TTCALL 1,1
	POP P,1
	POPJ P,
	END  START