Trailing-Edge
-
PDP-10 Archives
-
decus_20tap1_198111
-
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