1 TITLE SQUOZE TABLE HANDLER FOR MUDDLE
\r
7 .GLOBAL SQUPNT,ATOSQ,SQUTOA
\r
9 ; POINTER TO TABLE FILLED IN BY INITM
\r
13 ; GIVEN LOCN OF SUBR RET SQUO NAME ARG AND VAL IN E
\r
17 MOVE A,SQUPNT ; GET TABLE POINTER
\r
31 ; BINARY SEARCH FOR SQUOZE SYMBOL ARG IN E
\r
37 MOVE A,SQUPNT ; POINTER TO TABLE
\r
40 HRLI B,(B) ; B IS CURRENT OFFSET
\r
42 UP: ASH B,-1 ; HALVE TABLE
\r
43 AND B,[-2,,-2] ; FORCE DIVIS BY 2
\r
44 MOVE C,A ; COPY POINTER
\r
45 JUMPLE B,LSTHLV ; CANT GET SMALLER
\r
47 CAMLE E,(C) ; SKIP IF EITHER FOUND OR IN TOP
\r
48 MOVE A,C ; POINT TO SECOND HALF
\r
49 CAMN E,(C) ; SKIP IF NOT FOUND
\r
51 CAML E,(C) ; SKIP IF IN TOP HALF
\r
53 HLLZS C ; FIX UP OINTER
\r
57 WON: MOVE E,1(C) ; RET VAL IN E
\r
58 AOS -3(P) ; SKIP RET
\r
64 LSTHLV: CAMN E,(C) ; LINEAR SERCH REST
\r
68 JRST WON1 ; ALL GONE, LOSE
\r