1 TITLE INITIALIZATION FOR MUDDLE
\r
5 LAST==1 ;POSSIBLE CHECKS DONE LATER
\r
18 OBSIZE==151. ;DEFAULT OBLIST SIZE
\r
20 .LIFG <TVBASE+TVLNT-TVLOC>
\r
25 .GLOBAL SETUP,TPBAS,GCPDL,GCPVP,PVBASE,PVLNT,PARNEW,AAGC,ICR,SWAP,OBLNT,MSGTYP
\r
26 .GLOBAL ICLOS,OCLOS,GLOBASE,GLOBSP,PARBOT,PARTOP,CODTOP,START,BEGIN,VECBOT,VECTOP,TPBASE
\r
27 .GLOBAL LISTEN,ROOT,INITIAL,TBINIT,TOPLEV,INTOBL,ERROBL,MUDOBL,TTYOPE,RESFUN,QUITTER
\r
28 .GLOBAL IOINS,BUFRIN,IOIN2,ECHO,MTYI,MTYO,MUDSTR,P.TOP,TTICHN,TTOCHN,TYPVEC
\r
29 .GLOBAL PDLBUF,PHIBOT,%UNAM,PURVEC,STOSTR,ISTOST,TD.LNT,TD.PUT,TD.GET,CAFRE1
\r
30 ; INIITAL AMOUNT OF AFREE SPACE
\r
32 STOSTR: BLOCK 400 ; A RANDOM AMOUNT
\r
36 IFN ITS, .SUSET [.RUNAM,,%UNAM] ; FOR AGC'S BENFIT
\r
37 MOVE P,GCPDL ;GET A PUSH DOWN STACK
\r
38 IFN ITS, .SUSET [.SMASK,,[200000]] ; ENABLE PDL OVFL
\r
39 MOVE TVP,[-TVLNT,,TVBASE] ;GET INITIAL TRANSFER VECTOR
\r
40 PUSHJ P,TTYOPE ;OPEN THE TTY
\r
41 AOS A,20 ; TOP OF LOW SEGG
\r
43 SOSN A ; IF NOTHING YET
\r
44 IFN ITS, .SUSET [.RMEMT,,P.TOP]
\r
46 HRRE A,P.TOP ; CHECK TOP
\r
47 TRNE A,377777 ; SKIP IF ALL LOW SEG
\r
48 JUMPL A,PAGLOS ; COMPLAIN
\r
49 MOVE A,HITOP ; FIND HI SEG TOP
\r
52 MOVEM A,RHITOP ; SAVE IT
\r
62 HIBOK: MOVEI B,[ASCIZ /MUDDLE INITIALIZATION.
\r
64 PUSHJ P,MSGTYP ;PRINT IT
\r
65 MOVE A,CODTOP ;CHECK FOR A WINNING LOAD
\r
66 CAML A,VECBOT ;IT BETTER BE LESS
\r
67 JRST DEATH1 ;LOSE COMPLETELY
\r
68 MOVE B,PARBOT ;CHECK FOR ANY PAIRS
\r
69 CAME B,PARTOP ;ANY LOAD/ASSEMBLE TIME PAIRS?
\r
70 JRST PAIRCH ;YES CHECK THEM
\r
71 ADDI A,2000 ;BUMP UP
\r
73 MOVEM A,PARBOT ;UPDATE PARBOT AND TOP
\r
75 SETTV: MOVE PVP,[-PVLNT*2,,GCPVP] ;AND A PROCESS VECTOR
\r
76 MOVEI A,(PVP) ;SET UP A BLT
\r
77 HRLI A,PVBASE ;FROM PROTOTYPE
\r
78 BLT A,PVLNT*2-1(PVP) ;INITIALIZE
\r
79 MOVE TP,[-ITPLNT,,TPBAS] ;GET A STACK FOR THIS PROCCESS
\r
80 MOVEI TB,(TP) ;AND A BASE
\r
82 SUB TP,[1,,1] ;POP ONCE
\r
84 ; ALLOCATE SOME OBLISTS FOR INITIAL ATOMS
\r
86 PUSH P,[5] ;COUNT INITIAL OBLISTS
\r
88 PUSH P,OBLNT ;SAVE CURRENT OBLIST DEFAULT SIZE
\r
93 MCALL 0,MOBLIST ;GOBBLE AN OBLIST
\r
94 PUSH TP,$TOBLS ;AND SAVE THEM
\r
96 MOVE A,(P)-1 ;COUNT DOWN
\r
97 MOVEM B,@OBTBL(A) ;STORE
\r
100 POP P,OBLNT ;RESTORE DEFAULT OBLIST SIZE
\r
102 MOVE C,TVP ;MAKE 2 COPIES OF XFER VECTOR POINTER
\r
105 ;MAIN INITIALIZE LOOP - SCAN XFER VECTOR FOR ATOMS, UPDATE
\r
106 ;OFFSETS IN CODE, UNIQUIFY ATOMS AND COMPACT XFER VECTOR
\r
108 ILOOP: HLRZ A,(C) ;FIRST TYPE
\r
109 JUMPE A,TVEXAU ;USEFUL STUFF EXHAUSTED
\r
110 CAIN A,TCHSTR ;CHARACTER STRING?
\r
111 JRST CHACK ;YES, GO HACK IT
\r
112 CAIN A,TATOM ;ATOM?
\r
113 JRST ATOMHK ;YES, CHECK IT OUT
\r
114 MOVE A,(C) ;MOVE TO NEW HOME (MAY BE SAME)
\r
118 SETLP: AOS (P) ;COUNT NUMBER OF PAIRS IN XFER VECTOR
\r
119 ADD D,[2,,2] ;OUT COUNTER
\r
120 SETLP1: ADD C,[2,,2] ;AND IN COUNTER
\r
121 JUMPL C,ILOOP ;JUMP IF MORE TO DO
\r
122 \f;NEW XFER VECTOR FINISHED, NOW GIVE AWAY THE REST
\r
124 TVEXAU: HLRE B,C ;GET -LENGTH
\r
125 SUBI C,(B) ;POIT TO DOPE WORD
\r
127 HLRZ A,1(C) ;INTIAL LENGTH TO A
\r
128 MOVEI E,(C) ;COPY OF POINTER TO DOPW WD
\r
129 SUBI E,(D) ;AMOUNT LEFT OVER TO E
\r
130 HRLZM E,1(C) ;CLOBBER INTO DOPE WORD FOR GARBAGE
\r
131 MOVSI E,(E) ;PREPARE TO UPDATE TVP
\r
132 ADD TVP,E ;NOW POINTS TO THE RIGHT AMOUNT
\r
133 HLRE B,D ;-AMOUNT LEFT TO B
\r
134 ADD B,A ;AMOUNT OF GOOD STUFF
\r
135 HRLZM B,1(D) ;STORE IT IN GODD DOPE WORD
\r
136 MOVSI E,400000 ;CLOBBER TO GENERAL IN BOTH CASES
\r
141 ; FIX UP TYPE VECTOR
\r
143 MOVE A,TYPVEC+1(TVP) ;GET POINTER
\r
144 MOVEI 0,0 ;FOR POSSIBLE NULL SLOTS
\r
145 MOVSI B,TATOM ;SET TYPE TO ATOM
\r
147 TYPLP: HLLM B,(A) ;CHANGE TYPE TO ATOM
\r
148 MOVE C,@1(A) ;GET ATOM
\r
152 \f; CLOSE TTY CHANNELS
\r
159 ;GENERAT THE LOGICAL TTY IN AND OUT CHANNELS
\r
161 ;SETUP CALL TO OPEN OUTPUT TTY CHANNNEL
\r
163 IRP A,,[[PRINT,TCHSTR],[TTY:,TCHSTR]]
\r
171 MCALL 2,FOPEN ;OPEN THE OUT PUT CHANNEL
\r
172 MOVEM B,TTOCHN+1(TVP) ;SAVE IT
\r
174 ;ASSIGN AS GLOBAL VALUE
\r
177 PUSH TP,IMQUOTE OUTCHAN
\r
180 MOVE A,[PUSHJ P,MTYO] ;MORE WINNING INS
\r
181 MOVEM A,IOINS(B) ;CLOBBER
\r
184 ;SETUP A CALL TO OPEN THE TTY CHANNEL
\r
186 IRP A,,[[READ,TCHSTR],[TTY:,TCHSTR]]
\r
194 MCALL 2,FOPEN ;OPEN INPUTCHANNEL
\r
195 MOVEM B,TTICHN+1(TVP) ;SAVE IT
\r
196 PUSH TP,$TATOM ;ASSIGN AS A GLOBAL VALUE
\r
197 PUSH TP,IMQUOTE INCHAN
\r
200 MOVE C,BUFRIN(B) ;GET AUX BUFFER PTR
\r
201 MOVE A,[PUSHJ P,MTYI]
\r
202 MOVEM A,IOIN2(C) ;MORE OF A WINNER
\r
203 MOVE A,[PUSHJ P,MTYO]
\r
204 MOVEM A,ECHO(C) ;ECHO INS
\r
207 ;GENERATE AN INITIAL PROCESS AND SWAP IT IN
\r
209 PUSHJ P,ICR ;CREATE IT
\r
211 MOVEM 0,PSTAT"+1(B)
\r
212 MOVE D,B ;SET UP TO CALL SWAP
\r
213 JSP C,SWAP ;AND SWAP IN
\r
214 MOVEM PVP,MAINPR" ;SAVE AS THE MAIN PROCESS
\r
215 PUSH TP,[TENTRY,,TOPLEV] ;BUILD DUMMY FRAME
\r
222 ADD C,[3,,3] ;FUDGE
\r
223 PUSH TP,C ;TPSAV PUSHED
\r
225 HRRI TB,(TP) ;SETUP TB
\r
228 MOVEM TB,TBINIT+1(PVP)
\r
230 MOVEM A,RESFUN(PVP)
\r
232 MOVEM A,RESFUN+1(PVP)
\r
234 PUSH TP,IMQUOTE THIS-PROCESS
\r
239 ; FIND TVP OFFSET FOR THE ATOM 'T' FOR TEMPLATE
\r
249 PUSH TP,IMQUOTE TVTOFF,,MUDDLE
\r
254 ; HERE TO SETUP SQUOZE TABLE IN PURE CORE
\r
256 PUSHJ P,SQSETU ; GO TO ROUTINE
\r
258 MOVEI A,400000 ; FENCE POST PURE SR VECTOR
\r
262 SUBI A,-PDLBUF(B) ;POINT TO DOPE WORDS
\r
263 MOVEI B,12 ;GROWTH SPEC
\r
267 PUSHJ P,AAGC ;DO IT
\r
269 MOVE A,TPBASE+1(PVP)
\r
271 MOVEM A,TPBASE+1(PVP)
\r
273 ; CREATE LIST OF ROOT AND NEW OBLIST
\r
278 NAMOBL: PUSH TP,$TATOM
\r
279 PUSH TP,@OBNAM-1(A) ; NAME
\r
281 PUSH TP,IMQUOTE OBLIST
\r
283 PUSH TP,@OBTBL-1(A)
\r
284 MCALL 3,PUT ; NAME IT
\r
289 PUSH TP,IMQUOTE OBLIST
\r
297 ;Define MUDDLE version number
\r
299 MOVEI B,0 ;Initialize result
\r
300 MOVE C,[440700,,MUDSTR+2]
\r
301 VERLP: ILDB D,C ;Get next charcter digit
\r
302 CAIG D,"9 ;Non-digit ?
\r
305 SUBI D,"0 ;Convert to number
\r
307 ADD B,D ;Include number into result
\r
308 SOJG A,VERLP ;Finished ?
\r
311 PUSH TP,MQUOTE MUDDLE
\r
314 MCALL 2,SETG ;Make definition
\r
318 PUSH TP,CHQUOTE IPC
\r
320 PUSH TP,MQUOTE IPC-HANDLER
\r
330 ; Allocate inital template tables
\r
334 ADD B,[10,,10] ; REST IT OFF
\r
335 MOVEM B,TD.LNT+1(TVP)
\r
338 MOVEI 0,TUVEC ; SETUP UTYPE
\r
340 MOVEM B,TD.GET+1(TVP)
\r
343 MOVEI 0,TUVEC ; SETUP UTYPE
\r
345 MOVEM B,TD.PUT+1(TVP)
\r
347 PTSTRT: MOVEI A,SETUP
\r
349 SUB A,PARBOT ;FIND WHERE PAIRS SHOULD GO
\r
356 PUSH P,[14.,,14.] ;PUSH A SMALL PRGRM ONTO P
\r
357 MOVEI A,1(P) ;POINT TO ITS START
\r
358 PUSH P,[JRST AAGC] ;GO TO AGC
\r
359 PUSH P,[MOVE B,PSTO+1(PVP)] ;GET SAVED P
\r
360 PUSH P,[SUB B,-13.(P)] ;FUDGE TO POP OFF PROGRAM
\r
361 PUSH P,[MOVEM B,PSAV(TB)] ;INTO FRAME
\r
362 PUSH P,[MOVE B,TPSTO+1(PVP)] ;GET TP
\r
363 PUSH P,[MOVEM B,TPSAV(TB)] ;STORE IT
\r
364 PUSH P,[MOVE B,SPSTO+1(PVP)] ;SP
\r
365 PUSH P,[MOVEM B,SPSAV(TB)]
\r
366 PUSH P,[MOVEI B,TOPLEV] ;WHERE TO GO
\r
367 PUSH P,[MOVEM B,PCSAV(TB)]
\r
368 IFN ITS, PUSH P,[MOVSI B,(.VALUE )]
\r
369 IFE ITS, PUSH P,[MOVSI B,(JRST 4,)]
\r
371 PUSH P,[JRST B] ;GO DO VALRET
\r
373 PUSH P,A ; PUSH START ADDR
\r
374 MOVE B,[JRST -11.(P)]
\r
375 MOVE 0,[JUMPA START]
\r
376 MOVE C,[ASCII \
\170/
\e9\]
\r
377 MOVE D,[ASCII \B/
\e1Q\]
\r
388 DEATH1: MOVEI B,[ASCIZ /LOSSAGE--CODE AND DATA OVERLAP
\r
393 ;CHARACTER STRING HACKER
\r
395 CHACK: MOVE A,(C) ;GET TYPE
\r
396 HLLZM A,(D) ;STORE IN NEW HOME
\r
397 MOVE B,1(C) ;GET POINTER
\r
400 PUSH P,E+1 ; IDIVI WILL CLOBBER
\r
401 ADDI E,4+5*2 ; ROUND AND ACCOUNT FOR DOPE WORDS
\r
402 IDIVI E,5 ; E/ WORDS LONG
\r
403 PUSHJ P,EBPUR ; MAKE A PURIFIED COPY
\r
405 HRLI B,440700 ;MAKE POINT BYTER
\r
406 MOVEM B,1(D) ;AND STORE IT
\r
407 ANDI A,-1 ;CLEAR LH OF A
\r
408 JUMPE A,SETLP ;JUMP IF NO REF
\r
409 MOVE E,(P) ;GET OFFSET
\r
411 HRRZ B,-1(A) ;SEE IF PREVIOUS INSTRUCTION REFERS TO $TCHSTR
\r
412 CAIE B,$TCHSTR ;SKIP IF IT DOES
\r
413 JRST CHACK1 ;NO, JUST DO CHQUOTE PART
\r
414 HRRM E,-1(A) ;CLOBBER
\r
416 DPB B,[220400,,-1(A)] ;CLOBBER INDEX FIELD
\r
418 HRRM E,(A) ;STORE INTO REFERENCE
\r
421 ; SUBROUTINE TO COPY A HUNK OF STRUCTURE TO THE HIGH SEGMENT
\r
425 ADD E,HITOP ; GET NEW TOP
\r
426 CAMG E,RHITOP ; SKIP IF TOO BIG
\r
429 ; CODE TO GROW HI SEG
\r
432 ADDB A,RHITOP ; NEW TOP
\r
434 ASH A,-10. ; NUM OF BLOCKS
\r
435 SUBI A,1 ; BLOCK TO GET
\r
440 EBPUR1: MOVEI A,-1(E) ; NEEDED TO TERMINATE BLT
\r
463 ; PROCESS AN ATOM AND ADD IT TO AN APPROPRIATE OBLIST IF IT ISN'T
\r
466 ATOMHK: PUSH TP,$TOBLS ; SAVE OBLIST
\r
467 PUSH TP,[0] ; FILLED IN LATER
\r
468 PUSH TP,$TVEC ;SAVE TV POINTERS
\r
472 MOVE B,1(C) ;GET THE ATOM
\r
473 PUSH TP,$TATOM ;AND SAVE
\r
475 HRRZ A,(B) ;GET OBLIST SPEC FROM ATOM
\r
477 ADDI A,1(TB) ;POINT TO ITS HOME
\r
479 PUSH TP,(A) ;AND SAV IT
\r
481 MOVEM A,-10(TP) ; CLOBBER
\r
485 ADD B,[3,,3] ;POINT TO ATOM'S PNAME
\r
486 MOVEI A,0 ;FOR HASHING
\r
489 TLZ A,400000 ;FORCE POSITIVE RESULT
\r
491 HRLS B ;REMAINDER IN B IS BUCKET
\r
492 ADDB B,(TP) ;UPDATE POINTER
\r
494 SKIPN C,(B) ;GOBBLE BUCKET CONTENTS
\r
495 JRST USEATM ;NONE, LEAVE AND USE THIS ATOM
\r
496 OBLOO3: MOVE E,-2(TP) ;RE-GOBBLE ATOM
\r
497 ADD E,[3,,3] ;POINT TO PNAME
\r
498 SKIPN D,1(C) ;CHECK LIST ELEMNT
\r
499 JRST NXTBCK ;0, CHECK NEXT IN THIS BUCKET
\r
500 ADD D,[3,,3] ;POINT TO PNAME
\r
501 OBLOO2: MOVE A,(D) ;GET A WORD
\r
502 CAME A,(E) ;COMPARE
\r
503 JRST NXTBCK ;THEY DIFFER, TRY NEX
\r
504 OBLOOP: AOBJP E,CHCKD ;COULD BE A MATCH, GO CHECK
\r
505 AOBJN D,OBLOO2 ;HAVEN'T LOST YET
\r
507 NXTBCK: HRRZ C,(C) ;CDR THE LIST
\r
508 JUMPN C,OBLOO3 ;IF NOT NIL, KEEP TRYING
\r
510 ;HERE IF THIS ATOM MUST BE PUT ON OBLIST
\r
512 USEATM: MOVE B,-2(TP) ; GET ATOM
\r
513 HLRZ 0,(B) ; SEE IF PURE OR NOT
\r
514 TRNN 0,400000 ; SKIP IF IMPURE
\r
516 MOVE B,(TP) ;POINTER TO BUCKET
\r
517 HRRZ C,(B) ;POINTER TO LIST IN THIS BUCKET
\r
518 PUSH TP,$TATOM ;GENERATE CALL TO CONS
\r
522 MCALL 2,CONS ;CONS IT UP
\r
523 MOVE C,(TP) ;REGOBBLE BUCKET POINTER
\r
524 HRRZM B,(C) ;CLOBBER
\r
525 MOVE B,-2(TP) ;POINT TO ATOM
\r
526 MOVE C,-10(TP) ; GET OBLIST
\r
527 MOVEM C,2(B) ; INTO ATOM
\r
528 PUSHJ P,VALMAK ;MAKE A GLOBAL VALUE FOR THIS LOSER
\r
529 PURAT2: MOVE C,-6(TP) ;RESET POINTERS
\r
532 MOVE B,(C) ;MOVE THE ENTRY
\r
533 HLLZM B,(D) ;DON'T WANT REF POINTER STORED
\r
534 MOVE A,1(C) ;AND MOVE ATOM
\r
536 MOVE A,(P) ;GET CURRENT OFFSET
\r
539 ANDI B,-1 ;CHECK FOR REAL REF
\r
540 JUMPE B,SETLP1 ;DON'T SAVE THIS ATOM ON TVP
\r
541 HRRM A,(B) ;CLOBBER CODE
\r
545 ; HERE TO MAKE A PURE ATOM
\r
547 PURATM: HRRZ B,-2(TP) ; POINT TO IT
\r
548 HLRE E,-2(TP) ; - LNTH
\r
551 PUSHJ P,EBPUR ; PURE COPY
\r
552 HRRM B,-2(TP) ; AND STORE BACK
\r
553 HRRO B,(TP) ; GET BUCKET BACK
\r
554 PURAT1: HRRZ C,(B) ; GET CONTENTS
\r
555 JUMPE C,HICONS ; AT END, OK
\r
556 CAIL C,HIBOT ; SKIP IF IMPURE
\r
557 JRST HICONS ; CONS IT ON
\r
561 HICONS: HRLI C,TATOM
\r
567 PUSHJ P,EBPUR ; MAKE PURE LIST CELL
\r
571 HRRM B,(C) ; STORE IT
\r
572 MOVE B,1(B) ; ATOM BACK
\r
573 MOVE C,-6(TP) ; GET TVP SLOT
\r
574 HRRM B,1(C) ; AND STORE
\r
575 HLRZ 0,(B) ; TYPE OF VAL
\r
577 CAIN 0,TUNBOU ; NOT UNBOUND?
\r
578 JRST PURAT3 ; UNBOUND, NO VAL
\r
579 MOVEI E,2 ; COUNT AGAIN
\r
580 PUSHJ P,EBPUR ; VALUE CELL
\r
581 MOVE C,-2(TP) ; ATOM BACK
\r
582 HLLZS (B) ; CLEAR LH
\r
586 PURAT3: HRRZ A,(C) ; GET OBLIST CODE
\r
588 MOVEM A,2(C) ; STORE OBLIST SLOT
\r
592 ; A POSSIBLE MATCH ARRIVES HERE
\r
594 CHCKD: AOBJN D,NXTBCK ;SIZES DIFFER, JUMP
\r
595 MOVE D,1(C) ;THEY MATCH!, GET EXISTING ATOM
\r
596 MOVEI A,(D) ;GET TYPE OF IT
\r
597 MOVE B,-2(TP) ;GET NEW ATOM
\r
599 TRZ A,377777 ; SAVE ONLY 400000 BIT
\r
601 CAIN 0,(A) ; SKIP IF WIN
\r
607 CAIE A,TUNBOU ;UNBOUND?
\r
608 JRST A1VAL ;YES, CONTINUE
\r
609 MOVE A,(B) ;MOVE VALUE
\r
613 MOVE B,D ;EXISTING ATOM TO B
\r
617 PUSHJ P,VALMAK ;MAKE A VALUE
\r
621 ;NOW FIND ATOMS OCCURENCE IN XFER VECTOR
\r
623 OFFIND: MOVE D,-4(TP) ;GET CURRENT POINTER INTO TP
\r
624 MOVE C,TVP ;AND A COPY OF TVP
\r
625 MOVEI A,0 ;INITIALIZE COUNTER
\r
626 ALOOP: CAMN B,1(C) ;IS THIS IT?
\r
628 ADD C,[2,,2] ;BUMP COUNTER
\r
629 CAMGE C,D ;HAVE WE HIT END
\r
630 AOJA A,ALOOP ;NO, KEEP LOOKING
\r
632 MOVEI B,[ASCIZ /LOSSAGE--ATOM DISAPPEARED
\r
634 TYPIT: PUSHJ P,MSGTYP
\r
637 AFOUND: LSH A,1 ;FOUND ATOM, GET REAL OFFSET
\r
639 MOVE C,-6(TP) ;GET TV POINTER TO NEW ATOM
\r
640 HRRZ B,(C) ;POINT TO REFERENCE
\r
641 SKIPE B ;ANY THERE?
\r
642 HRRM A,(B) ;YES, CLOBBER AWAY
\r
644 JRST SETLP1 ;AND GO ON
\r
646 A1VAL: HLRZ C,(B) ;GET VALUE'S TYPE
\r
647 MOVE B,D ;NOW PUT EXISTING ATOM IN B
\r
648 CAIN C,TUNBOU ;UNBOUND?
\r
649 JRST OFFIND ;YES, WINNER
\r
651 MOVEI B,[ASCIZ /LOSSAGE--ATOM TRIES TO HAVE 2 VALUES
\r
656 IM.PUR: MOVEI B,[ASCIZ /LOSSAG--ATOM TRIES TO BE BOTH PURE AND IMPURE
\r
660 PAGLOS: MOVEI B,[ASCIZ /LOSSAGE--IMPURE CORE EXTENDS INTO HIGH SEGMENT
\r
664 ;MAKE A VALUE IN SLOT ON GLOBAL SP
\r
666 VALMAK: HLRZ A,(B) ;TYPE OF VALUE
\r
667 CAIE A,400000+TUNBOU
\r
668 CAIN A,TUNBOU ;VALUE?
\r
669 POPJ P, ;NO, ALL DONE
\r
670 MOVE A,GLOBSP+1(TVP) ;GET POINTER TO GLOBAL SP
\r
671 SUB A,[4,,4] ;ALLOCATE SPACE
\r
672 CAMG A,GLOBAS+1(TVP) ;CHECK FOR OVERFLOW
\r
674 MOVEM A,GLOBSP+1(TVP) ;STORE IT BACK
\r
675 MOVE C,(B) ;GET TYPE CELL
\r
677 HLLZM C,2(A) ;INTO TYPE CELL
\r
678 MOVE C,1(B) ;GET VALUE
\r
679 MOVEM C,3(A) ;INTO VALUE SLOT
\r
680 MOVSI C,TGATOM ;GET TATOM,,0
\r
682 MOVEM B,1(A) ;AND POINTER TO ATOM
\r
683 MOVSI C,TLOCI ;NOW CLOBBER THE ATOM
\r
684 MOVEM C,(B) ;INTO TYPE CELL
\r
685 ADD A,[2,,2] ;POINT TO VALUE
\r
689 SPOVFL: MOVEI B,[ASCIZ /LOSSAGE--GLOBAL SP OVERFLOW
\r
695 CAIE 0,400000+TUNBOU
\r
707 \f;SET UP LIST OF INTERNAL NAMES AND ADDRESS NEEDED BY COMPILER
\r
711 IRP A,,[FINIS,SPECBIND,MESTBL,WNA,WRONGT,$TLOSE,CALER1
\r
712 ILOC,IGLOC,IDVAL,ILVAL,IGVAL,INTFLG,LCKINT,TYPLOO,TDEFER
\r
713 IFALSE,UNAS,UNBOU,RCALL,SEGMNT,SEGLST,NUMPRI,DISXTR,SSPEC1,COMPERR
\r
714 MAKACT,MAKENV,BFRAME,TTP,TTB,$TTP,$TTB,MAKTUP,TPALOC,IBIND,SSPECS
\r
715 CILVAL,CISET,CIGVAL,CSETG,IBLOK1,IBLOCK,CLLOC,CGLOC,CASSQ,CGASSQ
\r
716 CILNT,CILNQ,CILEGQ,CEMPTY,CIEQUA,CIREST,CINTH,CIAT,CSETLO,CIN
\r
717 CIPUT,CIGET,CIGETL,CIMON,CISTRU,CIMEMQ,CIMEMB,CITOP,CIBACK,TYPSEG
\r
718 CICONS,CIUVEC,CIVEC,IIFORM,IILIST,CISTNG,HITOP,INCR1,TYPG,VALG,TESTR
\r
719 OTBSAV,CITYPE,CFRAME,CARGS,CFUNCT,CUTYPE,CPTYPE,CTYPEP,CTYPEQ,CCHUTY
\r
720 CIREMA,RTFALS,CIGETP,CIGTPR,MPOPJ,TAB,$TAB,ICONS,CSTO,DSTO,NTPALO
\r
721 CPLUS,CTIMES,CTIME,CDIVID,CMINUS,CLQ,CLEQ,CGQ,CGEQ,CLOG,CSIN,CCOS,CATAN,CSQRT
\r
722 CFIX,CFLOAT,CEXP,CRAND,CINEQU,SPECBND,PGGIVE,PGFIND,MTYO,CMIN,CMAX,RCL,R1C,W1C
\r
723 CALLTY,CTYPEC,CTYPEW,NOTTY,CHKAB,CTMPLT,IUNWIN,UNWIN2,NOSHUF,ROOT,ERROBL,INTOBL
\r
724 CINSER,CIRMV,CLOOKU,CATOM,CIPNAM,ISTRCM,CITERP,CIPRIN,CIPRN1,CIPRNC
\r
725 CPATM,CP1ATM,CPCATM,CPSTR,CP1STR,CPCSTR,CPCH,CREADC,CNXTCH,CREDC1,CNXTC1
\r
726 CGBOUN,IIGLOC,MAKTU2,CIFLTZ,CIUPRS]
\r
729 MAKAT [A]TFIX,A,MUDDLE,0
\r
734 ; ROUTINE TO SORT AND PURIFY SQUOZE TABLE
\r
736 SQSETU: MOVE A,[SQUTBL-SQULOC+2,,SQUTBL]
\r
750 MOVEI E,SQULOC-SQUTBL
\r
752 PUSHJ P,EBPUR ; TO THE PURE WORLD
\r
753 HRLI B,SQUTBL-SQULOC
\r
771 OBTBL: INITIAL+1(TVP)
\r
776 OBNAM: MQUOTE INITIAL
\r