;GPRIMS taken from TP01_all_macros.txt ;GPRIMS 4/10/76 ; Primitives updated from 61.pdf "Blue tape" 12/8/77 PRIM ' 1, PRIM = 2, PRIM OR 3, PRIM AND 4, PRIM NOT 5 PRIM LT 6, PRIM LE 7, PRIM EQ 8, PRIM NE 9, PRIM GE 10, PRIM GT 11 PRIM + 12, PRIM - 13, PRIM * 14, PRIM / 15, PRIM EXP 16 PRIM TYPE 17 PRIM $ 20 PRIM GO 21, PRIM AV 22, PRIM @ 23, PRIM CY 24, PRIM FNTH 25 PRIM FIND 26, PRIM RP 27, PRIM : 28, PRIM NEW 29, PRIM OLD 30 PRIM IF 32 PRIM ABUG 33, PRIM ITMS 34, PRIM GRPS 35 PRIM LNS 36, PRIM RHA 37, PRIM LINA 38, PRIM CLA 39 PRIM READ 40 PRIM GRIN 41 PRIM AIN 42 PRIM PROT 43 PRIM LOCAL 44 PRIM DIR 45 PRIM SS 47 PRIM LEFT 48 PRIM GARB 49 PRIM % 50 PRIM SRC 51 PRIM DEST 52, PRIM SAVE 56, PRIM NAME 57 PRIM ALFA 58 PRIM OP 60, PRIM NUTR 61, PRIM DNTR 62, PRIM UPTR 63, PRIM FIG 64 PRIM MOVE 65, PRIM SCALE 66, PRIM ROT 67, PRIM ROTX 68, PRIM ROTY 69 PRIM UNITY 70, PRIM LIN 71, PRIM HARM 72 PRIM ARC0 73, PRIM TREE 74, PRIM SETCOL 75 PRIM COLR 77, PRIM FAD0 78, PRIM LEVEL 79 PRIM PERSP 80, PRIM EXIT 90, PRIM EXTR 91 PRIM STOP 100 ; user defined primitives, start group, end group used at start,end frame PRIM SG 101 PRIM EG 102 :NL<<^>>, :PRINT<##(OP)>, PRINT"PRIMITIVES LOADED" :PICTURE[:TRTP#1] :PIC[DNTR,##,UPTR] :ABT[:II 0, @-1 1,MOVE(ABT0),(CY 7),MOVE($(-II))] :ABT0[-(CY 1),'II=II+1,GO((AV 1 TYPE)EQ 1)ABT0] :ANIM[:ANM0[SSQ#0>#1(SFNO,CEFN#2##)<]] :SSQ[#2##(FNO),EXIT(#4 GT FNO),RP(RHA(@#1 FIND(SS 4))),UNITY] :CEFN[+EFNO=SFNO+(NFR##),EXIT(+EFNO LE FFNO),'FFNO=EFNO] :CH[IF(RHA(@#1 FIND(SS 4)))[@(RHA)],:#1(CY "ZZ", CY ANM0)#2##] :THEN[:SFNO(EFNO),GO NEWQ] :AFTER[:SFNO((NFR##)+SFNO),GO NEWQ] :AFTALL[:SFNO(FFNO),GO NEWQ] :OFF [NEW #1, @OLST :0 #1, PRIM #1 46] :ON [OLD(@(@OLST FIND #1) CY I), :I] :OLST :FADE (NEW #1 (FAD1 #1 (CEFN##) OFF0 (EFNO) -), @OLST :0 #1) :MIXON [EXIT(@(@OLST FIND #1),NOT TYPE) OLD#1, NEW#1(FAD1 #1 (CEFN##) ON0 (-SFNO) +)] :FAD1 <[GO( >#2< LE FNO) >#3<]( CY#1) [FAD0( >#4#5< FNO) >(+EFNO-SFNO)< ]> :OFF0[PRI #0 46] :ON0[ON #0, GO #0] :HOLD['SFNO=FFNO-1,NEWQ,'SFNO=FFNO+(NFR##),'EFNO=SFNO IF(+FNO LT SFNO)['FNO=SFNO],GO NEWQ] :NEWQ[IF(+SFNO GT FFNO)['FFNO=SFNO],EXIT(+FNO GE SFNO,BCK) EXFR,GO QLOG] :EXFR[SG(FNO),NUTR,PIC(TRTP),EXTR(FR),EG,NFNO,GO(+FNO LE SFNO)EXFR] :FILM[NEW NFNO['FNO=(+LFNO=FNO)+FREP],RSOL :FNO 2,SEQ0##,RSOL,OLD NFNO] :FREP 2 :VIEW[:FNO 0,:FNO(NFR(READ"?")),GO VU0] :VU0[RSOL,OFF QLOG,:QLOG,OFF FR,SEQ0##,GO(-BCK)VU0 PRINT"SEQUENCE ENDS AT FRAME "(FFNO),GO VIEW] :RSOL[OLD(OLST),:OLST] :SEQ0[:BCK,:SFNO 0,:EFNO 0,:FFNO 0,:LFNO 0,##,END] :END['SFNO=FFNO,GO NEWQ] :NFNO[PRINT" "(NL)"FRAME "(FNO) :BCK(IF((FNO)GT(+FNO=(NFR(READ"?"))))2) EXIT(0 LE FNO),:FNO 1] :FR[+FNO-LFNO] :NFR[(1+FNO,#2#1)+(#4#3)] :SEC[#1*25] :MSEC[#1/40] :F[#1+FNO] :B[+FNO-#1] :T[NEW EXFR[OLD EXFR,EXIT "ZZ"]] :QLOG[PRINT(FNO)#0##] ;)"LOADED"(OP,SRC 0,VIEW )"LOADED"(OP PRINT"STACK LEFT "(LEFT) :TRIANGLE 4!0 4000 2000 -4000 -2000 -4000 0 4000 :TRI [ FIG TRIANGLE ROT(TURN) MOVE(PLACE) ] :ATRI [ PICTURE TRI :TURN 0 :PLACE 0 0 ANIM LIN 5 CH TURN -90 CH PLACE 1000 1000 ] VIEW ATRI 0 1 2 3 4 5 T STOP