*1000 PAGE1, / SEMICOMPILER BLOCK DIAGRAM INTERPRETER / L.S.M. 15/1/71 / J.S.B. 02/7/71 / J.S.B. 10/8/71 / C.D.N. 6/12/72 PAGE0=40 / NEW INSTRUCTIONS NTBLIP=JMS I PAGE0 GETAD=JMS I PAGE0+1 PUTAD=JMS I PAGE0+2 /ILLEGAL IN THIS VERSION 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 CLA 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 /STACK FULL 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 /STACK EMPTY (TOO MANY BLENDS) 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 FSTFLG SPEED, CLA SKP /FOR NORMAL SLOW; OR CLA SNA FOR FAST JMP FAST TAD SRGTAD JMS I SRADI DCA T1 TAD I T1 DCA I ARGPOI FAST, TAD ARGPOI TAD ARGTOP SMA CLA TYDER /COMPILER TABLE OVERFLOW TAD I ARGPOI ISZ ARGPOI ISZ SRGTAD JMP I SRGTAD FSTFLG, SRPTAD, 0 TYDER /PUTAD ILLEGAL IN THIS VERSION OF BLIP SRAGAC, 0 /AUGMENTED ACUM DCA T2 TAD I SRAGAC ISZ SRAGAC DCA .+2 GETAD 0 TAD I SRAGAC DCA T1 ISZ SRAGAC TAD T2 TAD I T1 JMP I SRAGAC SRAGPT, 0 /AUGMENTED PUT DCA T2 TAD I SRAGPT ISZ SRAGPT DCA .+2 GETAD 0 TAD I SRAGPT 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 IAC DCA FSTFLG TAD ARGBEG DCA ARGPOI JMP I SRINIT ABOTI, ABOT APTRI, APTR SRINI, SRIN JMRETI, JMRET ARGTOP, /TEMPORARY USE SRADI SRADI, SRADAD TEM3I, TEM3 ARGBEG, 6000 ARGPOI, 0 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 JMP ONRET RNITOF, TAD FLAG /CLEAR INIT FLAG DCA FSTFLG TAD ARGBEG DCA ARGPOI ONRET, DCA 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 I SRACUM ISZ SRACUM DCA .+2 GETAD 0 DCA T1 TAD T2 TAD I T1 JMP I SRACUM SRPUT, 0 /COMBINES GETAD AND DCA DCA T2 TAD I SRPUT ISZ SRPUT DCA .+2 GETAD 0 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, 0 NA=100 /LENGTH OF STACK