FIELD 1 *1000 PAGE1, / HIGH SPEED BLOCK DIAGRAM INTERPRETER / L.S.M. 15/1/71 / J.S.B. 02/7/71 / J.S.B. 10/8/71 / BLIP3.4 PAGE0=40 / NEW INSTRUCTIONS NTBLIP=JMS I PAGE0 GETAD=JMS I PAGE0+1 PUTAD=JMS I PAGE0+2 ACUM=JMS I PAGE0+3 PUT=JMS I PAGE0+4 INBLIP=JMS I PAGE0+5 AUGACM=JMS I PAGE0+7 AUGPUT=JMS I PAGE0+10 INEND=JMP I PAGE0+6 / PSEUDO-INSTRUCTIONS *PAGE1 /THIS IS FOR JIGGERY POKERY /TO SET P BLOUT=377 ;0 /EXIT FROM BLIP INTO M.C. BLOTNT=376 ;0 /BLOUT WITH A JUMP IF INIT IS SET BLEND=375 ;0 /RETURN TO CALLING BLOK BLJUMP=374 ;0 /TRANSFER TO ADRESS GIVEN BLNTON=373 ;0 /SWITCH ON INIT FLAG BLNTOF=372 ;0 /SWITCH OFF INIT FLAG P=.-PAGE1 /......................... *PAGE0 SRINIT SRGTAD SRPTAD SRACUM SRPUT SRIN RINEND SRAGAC SRAGPT / ........................ *PAGE1 SRADAD, 0 DCA X /ENTER WITH ADDRESS OF AN ARGUMENT CLA RAL /SAVE LINK DCA TEM2 TAD APTR /LIST STACK IS ON TOP OF RETURN STACK DCA BPTR /CLEAR LIST STACK TAD APTR DCA TEM3 /READ RETURN STACK POINTER CHASE, TAD I X CLL TAD NM400 SZL /JMP TO ADD. HANDLING JMP ADHAN /ROUTINE IF X>OR=400 TAD NMLDAS SNL /DON'T PUSH LIST STACK JMP NOLIST /IF X<20 CLL RTR /ISOLATE LIST ENTRY RTR AND MKLDAS DCA TEM4 /PUSH(B) TAD ATOP CIA CLL /REF TO FIRST ITEM IS 0 TAD BPTR SZL CLA TYDER /STACK FULL IN USING LIST REF. ISZ BPTR TAD TEM4 DCA I BPTR NOLIST, CLA TAD I X /ISOLATE ARGUMENT REFERENCE AND MKLDAS DCA X TAD ABOT /PSEUDO-POP(A) CIA CLL TAD TEM3 SNL CLA TYDER /REF. TO BLOCK BELOW BOTTOM OF STACK TAD X SNA TYDER /0 ARGUMENT TAD I TEM3 DCA X /X POINT TO NEXT ARG UP CMA TAD TEM3 DCA TEM3 JMP CHASE ADHAN, CLA IAC CLL /BLIST IS ABOVE APTR TAD APTR /POP(B) CIA CLL TAD BPTR SNL CLA JMP GOTIT /LINK IS CLEAR TAD I BPTR TAD I X DCA X /X POINTS TO LIST ENTRY CMA TAD BPTR DCA BPTR JMP CHASE GOTIT, TAD TEM2 RAR /RESTORE LINK TAD X /RETURN WITH DIRECT ADDRESS OF AN ARGUMENT JMP I SRADAD / ......................... SRIN, 0 /USED AS "PROGRAM COUNTER" BLPLP, CLL CLA TAD SRIN CIA TAD BRKPNT SNA CLA NOP /PUT A DDT BREAK POINT HERE CLL TAD I SRIN TAD MNPSOP SNL /JMP TO ERROR ROUTINE IF TYDER /CONTENTS OF SRIN < 400-P TAD TABCON SZL CLA /JMP TO PSEUDO INSTRUCTION JMP PSUD /ROUTINE IF C(SRIN) < 400 TAD ATOP /PUSH (A) CIA CLL TAD APTR SZL CLA TYDER ISZ APTR TAD SRIN DCA I APTR CLA IAC JMRET, TAD I SRIN DCA SRIN JMP BLPLP REND, TAD ABOT / "BLEND" END OF BLOK CIA CLL /POP (A) TAD APTR SNL CLA TYDER TAD I APTR DCA TEM2 CMA TAD APTR DCA APTR TAD I TEM2 DCA TEM4 TAD I TEM4 TAD TEM2 IAC DCA SRIN JMP BLPLP PSUD, TAD I SRIN /PSEUDO BLOK ROUTINE TAD TABAD DCA TEM2 TAD I TEM2 DCA TEM2 JMP I TEM2 /JMP TO ADDR IN TABLE BRKPNT, 0 /EXECUTE BKPT NOP IF (SRIN)=(BRKPNT) TEM2, 0 TEM3, 0 TEM4, 0 X, 0 NM400, -400 NMLDAS, 360 /CHECKS FOR LIST ARGS MKLDAS, 0017 /STRIPS OFF LIST REFERENCE MNPSOP, P-400 TABCON, -P TABAD, ALIST-400 ABOT, ALIST ATOP, ALIST+NA APTR, 0 BPTR, 0 / ........................ *PAGE1+200 RJUMP, TAD I SRINI IAC /PSEUDO BLOK TO JUMP JMS I SRADI /TO GIVEN ADDRESS DCA I SRINI TAD I TEM3I /AT LEVEL OF BLOK DCA I APTRI /WHICH SUPPLIED THE ADDRESS JMP I JMRETI SRGTAD, 0 CLA TAD SRGTAD ISZ SRGTAD JMS I SRADI DCA T1 TAD I T1 JMP I SRGTAD SRPTAD, 0 DCA T1 TAD SRPTAD ISZ SRPTAD JMS I SRADI DCA T2 TAD T1 DCA I T2 JMP I SRPTAD SRAGAC, 0 /AUGMENTED ACUM DCA T2 TAD SRAGAC ISZ SRAGAC JMS I SRADI DCA T1 TAD I SRAGAC TAD I T1 DCA T1 ISZ SRAGAC TAD T2 TAD I T1 JMP I SRAGAC SRAGPT, 0 /AUGMENTED PUT DCA T2 TAD SRAGPT ISZ SRAGPT JMS I SRADI DCA T1 TAD I SRAGPT TAD I T1 DCA T1 ISZ SRAGPT TAD T2 DCA I T1 JMP I SRAGPT SRINIT, 0 CLA CMA TAD I ABOTI DCA I APTRI IAC DCA FLAG /SET INIT FLAG JMP I SRINIT ABOTI, ABOT APTRI, APTR SRINI, SRIN JMRETI, JMRET SRADI, SRADAD TEM3I, TEM3 T1, 0 T2, 0 / .............................. ROUTNT, ISZ I SRINI /BLOUT WITH INIT. CHECK TAD FLAG SNA CLA JMP ROUT TAD I SRINI /FLAG IS SET. DCA T1 /JUMP OUT TO ADDR GIVEN TAD I T1 DCA I SRINI SKP ROUT, IAC /JUMP OUT TO MACHINE CODE TAD I SRINI DCA T1 JMP I T1 RNITON, CLA IAC /SET INIT FLAG RNITOF, DCA FLAG /CLEAR INIT FLAG ISZ I SRINI JMP I BLPLPI FLAG, 0 /INITIALISATION FLAG /SET DURING INITIALISATION BLPLPI, BLPLP SRACUM, 0 /COMBINES GETAD AND TAD DCA T2 TAD SRACUM ISZ SRACUM JMS I SRADI DCA T1 TAD I T1 DCA T1 TAD T2 TAD I T1 JMP I SRACUM SRPUT, 0 /COMBINES GETAD AND DCA DCA T2 TAD SRPUT ISZ SRPUT JMS I SRADI DCA T1 TAD I T1 DCA T1 TAD T2 DCA I T1 JMP I SRPUT RINEND, INBLIP BLEND /PSEUDO BLOK ROUTINE ADDRESS TABLE RNITOF RNITON RJUMP REND ROUTNT ROUT ALIST, ZBLOCK NA NA=15 /LENGTH OF STACK