\ system load screen for FFT rfg12sep84 7 34 thru \ 6 load ( add common tools to PCforth game system 12/28/83 ) FORTH DEFINITIONS DECIMAL : sb save-buffers ; \ : ?FIND FIND ; IMMEDIATE : IFSO NOT IF [COMPILE] \ THEN ; IMMEDIATE : IFNOT NOT [COMPILE] IFSO ; IMMEDIATE : !CSP SP@ CSP ! ; : :: HERE >R [ ' QUIT CFA @ ] LITERAL , !CSP ] BEGIN INTERPRET STATE @ WHILE CR QUERY REPEAT SMUDGE R@ 2+ EXECUTE R> DP ! ; DECIMAL \ sawtooth array rfg12sep84decimal 64 100 xvector sawtooth : saw sawtooth 8 + 64 0 do i 100 * over i 4 * + ! loop drop ; saw \ data for IBM over 1983, by week rfg12sep84 100 64 xvector IBM 9663 9913 9463 9738 9738 9638 9863 10038 10224 10075 9988 10213 10163 10388 11013 11725 11700 11763 11650 11063 11300 11400 11425 12113 12300 12100 12150 12013 12438 12038 12975 11850 12250 11783 11975 12225 12313 12663 12688 13225 13175 12700 12800 12225 12688 12350 12100 11788 12225 12088 12363 12200 0 0 0 0 0 0 0 0 0 0 0 0 100 64 ibm vector! \ ibm fft ibm plotmag \ square and square root rfg12sep84( from Klaxon Suralis, via 4th Dimensions ) : d2* 2dup d+ ; : easy-bits 0 do >r d2* d2* r@ - dup 0< if r@ + r> 2* 1- else r> 2* 3 + then loop ; : 2's-bit >r d2* dup 0< if d2* r@ - r> 1+ else d2* r@ 2dup u< if drop r> 1- else - r> 1+ then then ; \ sqr and sqrt rfg12sep84 : 1's-bit >r dup 0< if 2drop r> 1+ else d2* 32768 r@ du< 0= r> + then ; : sqrt 0 1 8 easy-bits rot drop 6 easy-bits 2's-bit 1's-bit ; : sqr dup m* ; \ complex data types and operations rfg12sep842 constant wsize \ i guess : x@ 2@ ; : x! 2! ; : xvariable create wsize 2* here over \ two elements per complex # 0 fill allot does> ; : xconstant \ x --- create here wsize 2* 2dup 0 fill allot x! does> x@ ; \ complex stack words rfg12sep84 : xdup 2dup ; : xswap 2swap ; : xdrop 2drop ; : xover 2 over ; : x2dup 2over 2over ; \ complex add,subtract,magnitude rfg12sep84 : x+ rot + >r + r> ; : x- rot swap - >r - r> ; : x2/ 2/ swap 2/ swap ; : |x|^2 sqr rot sqr d+ ; : |x| |x|^2 sqrt ; : x' swap negate swap ; : x0= 0= swap 0= and ; \ complex multiply rfg12sep84 : x* >r x2dup rot r@ */ rot rot r@ */ - r> swap >r >r rot rot r@ */ rot rot r> */ + r> ; \ more complex operations rfg12sep84 : x*! over >r >r x@ rot x@ r> x* r> x! ; : x/ >r xswap xover x' r@ x* xswap |x| dup r@ */ swap over r@ swap */ rot rot r> swap */ swap ; " t1)/ " t)/^t POLY-WZ 9 _@CRZ _{_{_{_{_{a{ b{]{]{_{_{ .!CRZ _t_t]t]t btat_t_t_t_t_t ҏ$Z -, ( POLY-EZ &&3_{-,)/ _{Z711)/" 1"j POS.PXZ &&&&31111Z7Qj eWINDOZ -,Vbt)/1-,+jbt`btZ7)/)/" )/21)/ Q qCTERASZ ]{)/3)/])/W"OO } (CTCZ Ojb{ )/0 TTY-SCZ )/O )/)/1)/)/)/)/2% Ɠ.TTZ O)/ VIEWSCZ )/O . )/1)/Dh)/L ." )/1)/Dh%)/O )/)/D ." )/K1h)/)/ ." )/ 1h)/K)/ ." )/D1h%)/J)/)/ 1h Z lO . O1)/4h)/ ." O1)/4h%)/)/4)/)/4h)/O)/Oh Z lO )/Q ." )/}1)/h)/ ." )/}1)/h%)/S)/)/)/h)/S)/})/)/}h Z lO )/Z ." )/71)/zh)/ ." )/71)/zh%)/\)/z)/)/zh)/\)/7)/)/7h Z [_t)/ _t)/_tO_tR_t)/O )/Q)/x .)/  Q全%)/)/AVf ASAVE-SZ ]{]{ SCR-REZ ]{]{ Z &]{)/y)/\)/8)/1" } ERASE-Z &]{)/)/S)/~)/1" } ^ERASE-Z &]{)/3)/])/1"OO } Z ]{Z7 }+O } ZYBUTTOZ )/ )/R)/w1 Q }O_t .HIGHLZ R_t [_t)/_t)/_t ..OZ R_t )/_tl_t)/_tl_t\_t Z )/O O .>+6`% INIT-BZ OatWO6 SHIP-CZ V }炍W }bEOZ  W.BLOCZ ךћ-,  O -,O1暇 %, ݛPZ tȚךtt])/{ CLRZ -,`(muOZ7;7 "-LINZ `(mu;7 l-BLOCZ rךћO -,R%, .MODZ )/)/H{  Insert }( Replace MDISPLAZ )/O 21:SV-BUF 2:RCL 3:IL 4:XL 5:DUP 6:SPLIT 7:>L 8:>S 9:HOLD 10:PUT ˛CLEAZ )/O)/O;7)/O ݜMZ Z7-,1" 5u @MLDZ e yMLUZ 0e LHOLZ (5u b(DUPLZ ћQ' O )/ . ~% INSZ ךR DUPZ 睅SPLIZ ћ r" Ț`(muך0t XZ ћQ' O ך ." %`(mu "XZ -,-, Z7 5u`(Z7 " t INSERZ -,{ * -,-, JutZ}(t}(tZ SDELETZ q{ V}( `(t*7 z?VISIBZ -,-,)/&Z7)/~ =( EOZ  -,  )/?0t, PUZ O ." (0 11,+{ ,%{-, 5uV$ }(ȚOt㛞t CARREZ Ot0 TABZ ZZZ ESZ FVzx1 RECALZ $O% 螂UZ ]% ğDOWZ )/% ԝ/MODZ {0t 䟅STAM%6USER-I%6ALLOT IDZ IDZ !)/`(muA)/ 0!Z75u\# 2>STAMZ { !{u)/2" )/ 5u\# ןEDIT-K#rT;G=۝ʞP2? HG@M\>'<͟KsSXIܟAtOQBD4RC ;_ EDIZ . }(}( ECH%6CO%6%LP%6V'PCRL%6PPREVC%6.ECHOZ { /PRINTZ ){3{0 FEOLZ N{&Z =( 9MKPRINZ -,)/&1)/~ =(0 ,)/. {COLFWZ -,#(" Nt dP?EMIZ ] XO3{ ")/9tO:t)/9{)/=(0){ ")/9tO:t)/9{)/ =(0}(,O ۡ(PEMITZ ⡋  }(-,9t9tO:t3{ )/){ 9{)/09t)/ PEMIZ @{,P]ǡ HPPEMIZ {Z7k -,Z Z7t}(,+ PPAGZ k 8)/ P)/ POtO#tONt@(Q' O )/ P%Z  LFZ -, 2( -,t&Z =( ,O}( )/ P }(, APSPACEZ Q' O `(% PCRLZ )/ P)/ P( -,tZ )/<}(& M(O#tONt TPCZ {k Z t}(, CRZ Q' O % PBZ {k #( )/P)/ǡZ t}(, PBELZ Z G}(k )/P 3>PROZ -,(~ @(" }(( ( >8 >PCOZ -,#(~ M(" }(#( #( >8;7 PPOSITZ {&k >+Z7ϤZ 1t}(,+1, mPTYPZ {&k ">+Q' O -,()/=( %,Z 1tf}(,+1, ;PRINZ )/xt)/Bkt)/)/0?)/)/0?)/9)/0?)/u)/}0?)/ )/0?)/ɢ)/0?)/C)/0? ɤCONSOLZ )/Oxt)/kt)/)/0?)/)/0?)/)/0?)/I)/}0?)/)/0?)/ )/0?)/h)/0? (TITLE%6TITLZ Y{Q' , COMPREZ k )/P SQUASHZ k OP _AMBIENZ Ambient Designs Proprietary )/;7 11-14-84 wPAGE%6- Q.LINE1Z -,lM *7-,{4 1 ()/D{{" 4 }(, .LIST1Z {)/ ;7)/M -, {{" )/@;7)/M )/O  .p .%, 7.LIST2Z )/O {{" 1~ ?{]t1l & .%{)/&()/t LIST2UZ ]t Z7t Page{)/M )/;7e]t{ 1& , 2INDEZ 1)/M *7Z7u)/2Q' ()/F-,)/M *7u)/2 PINDEZ 1&1" Z7 . .)/7" .1~ ,OI .. )/70 ..&0=( 1)/7" &%1, B[MOD%6BL[REG%6)B[R/M%6 c릆OBJID%6 OBJSE%6INSTLE%6e 맆D-FLA%6onW-FLA%6 fG#DISPB%6S ,[DISP%6la:HZ 5{Z7-OO*5t T2HZ 5{Z7--,)/~ )/0]}(lM 5t 4HZ O)/7 SHR٩YXP'ҩBITZ )/=( bBIT0-Z )/=( BIT0-Z )/=( 婄BITZ )/=()/ש BIT1-Z )/=()/ש BITZ )/=()/ש LBITZ )/=()/ש 3BIT3-Z )/=()/ש zBIT3-Z )/8=()/ש cBITZ )/=()/ש BITZ )/ =()/ש êBITZ )/@=()/ש BIT6-Z )/=()/ש ڪBITZ )/=()/ש C@OBZ &{{1" rS @OBZ &{{1" GS $Z -,&-Z75u1+( !REGNAM%6ALCLDLBLAHCHDHBHAXCXDXBXSPBPSIDIo.REZ N{ )/}(OZ7 s" " l ;MNEMON%6AAA AAD AAM AAS ADC ADD AND CALL CBW CLC CLD CLI CMC CMP CMPS CWD DAA DAS DEC DIV ESC HLT IDIV IMUL IN INC INT INTO IRET JA JAE JB JBE JCXZ JZ JG JGE JL JLE JMP JNZ JNO JNP JNS JO JP JS LAHF LDS LEA LES LOCK LODS LOOP LOOPZ LOOPNZMOV MOVS MUL NEG NOP NOT OR OUT POP POPF PUSH RCL RCR REP REPNE RET ROL ROR SAHF SAR SBB SCAS SEG SHL SAL SHR STC STD STI STOS SUB TEST WAIT XCHG XLAT XOR ? PUSHF .MNEZ )/ʫ" )/ T.ALLMNZ )/^O . .% «OPLOO%6  B@>>>>> > B\  B@LLLLL L B@  NVVVVV V N[[[[[ [ N     NBBBBBBBB@@@@@@@@\\\\\\\\\\\\\\\\,)"( .+-*%$&#ccccWWYY8888818@<YYYYYYYX]AJ/8 8 8 8 99W W UU44MM8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 \\GG2088\\GGcccc\Z765!?? ' ''??3\FE cccc R T Scc80-83G%6>LV[ D0-D3G%6HICDOQ\K_F6F7GR%6W\=;:@FEGROU%6\\\\\\FFGROU%6''B\sSPEC-M#riUUUU}}.MNEMOZ O' G" (-,)/c& ,O']'" ( .OBJIDZ 5{-&{ :{5t k.OBJHEZ 5{Z7-O .'%5t A.DECODZ !4{-,*7I)/Z7 ;7*7 i.Z , SEGRE%6ESCSSSDS.SEGREZ " l B>ӱXP'߰.IP-INZ ѱ{4{" " r ݱ.DATA8Z N{ @}('r ͱ.DATAZ 'r BIT0>Z O'Nt ,BIT3>Z O'hNt K.ADDZ [@r ] .IP-INZ {4{" " r C#[MODZ ]'t #[REGZ ]'t #[R/MZ ]' t ##DISPZ {-,)/& 0}(.-,l& }( -,]& }( {)/&  \t Z#[DISPZ \{]& l'ѱ}(l@it BIT1>Z O'!At Ӳ[D][W]Z Z3ò۲/ '.DISZ i{r j.R/MTE%6BX+SIBX+DIBP+SIBP+DISI DI BP BX r.R/M0Z {-,)/& ",N{ w}( b [}( [)/" )/  ] .R/M01Z [ {)/" )/  + ] ̳.R/M0Z { #.R/MCA#r^ճ--.R/Z {p h00CLASZ ]4tq 01CLASZ ]4tq3Ol 03CLASZ ]4tq]NtO' ʹ04CLASZ ]4tq]NtOO' 05CLASZ ]4tqO' 06CLASZ l4tq]" 907CLASZ l4tq3O]" S08CLASZ l4tq]' u09CLASZ JN{ 4tqO'] S10CLASZ 3N{ )/}(l4tqO] 11CLASZ )/4tq3O]` 12CLASZ )/4tq3]`O 13CLASZ )/4tq]@z 514CLASZ )/4tq SP+]@ S15CLASZ )/4tq SP+]@ (INTERSEG) w16CLASZ rl\{" 4tqA{ {}( { 17CLASZ r]Ntl\{" 4tq]' 涇18CLASZ r]Ntl\{" 4tq]' 19CLASZ r]Ntl\{" 4tq F20CLASZ rl\{" 4tq{ l21CLASZ r]Ntl\{" 4tq{ 22CLASZ rl\{" 4tq ·23CLASZ rl\{" 4tqA{  ,CL ⷇24CLASZ N 25CLASZ N 26CLASZ )/4tq5{-)/@ :]@5t 027CLASZ r)/\{" N{" 4tql\{"  d28CLASZ r)/\{" O']&  4tql\{" A{0N{=( @}('A{ ѱr 29CLASZ l 30CLASZ l4tq 31CLASZ ]4tqO'꩹ WORD}( BYTE CLASSE#rT:״%C] ŵ  ?] Pv̷*:n(PDECODZ tO' G" (-,)/c& ,]' )/}()/X4{tp (DCMP%6r UCOLON- ;Z >(PFA%6 ܹ+(DCMPZ l8t .NEXT-Z `*78{{7 l.NEXT-Z `*78{-,{" 7 .2NEXTZ `*78{{78 {{7` .Z *7`8{ -, ()/"8{( 8t 1(.WORD#r T; Ϻ( j Ϻ+/v]/ (% X.WORZ 8{-,O)/*)/;7{ 0 /DECOMZ -,8t-,Rt-,({F& f08{&p 8{{ -,)/" &1)/( &00 *75`}(*75,8{ 1. bytes}(㹍 WWIPZ Z7 .u)/`(mu% 軇COMPARZ O 1 ." u1 ." u)/O 1 ." (1 ." (>+& ,+}(3 OFFSET:.)// .Or***7 A: Z7  B: %,+%,+ LWSCAΗXY‹_OO&;uWQ­'Z Rh]{l]{x]{R Z ]{l]{Rhx]{R LOCCURZ &&>+ .. >+ 1" &-,7 Z7,}(11,+,+ GI%6!NESZ ]%t +UNNESZ )/%t%{ x1 ʺ.IZ )/" -,-, (-, |1Z7)/=( |" l <.LIZ  -,{ =7 伇.BRANCZ  -,{1" to 7 .COMZ  -,{ 0 ȽUCASE#r T;+/( % cj cAc)н]DELTZ -,{ (UNZ -, {)/Z & -,{ )/" &1{ )/( &00 t-,7%{;7-,{ 0*7-,Z7,%{ -,)/Q& ,7x1}(,-,)/ & ,-,{ 0,}()/P& ,C }(p,%{)/" ;7 ;S C}(%{  primitive ,C UNZ  !(sp=next, cr=nest, P=pop, Q=quit)]%t- , e.com S RIVES SYSGEN E.COM' " 9-13-85 ) ;u ;128e.com j%6%6%6%6%6 ;%6%6%62%6%6%6%6%6%6-%6 (83POL%6%6GGC<'G^%6%6P #scratch space): %6?jG.Z 1" Z7 .TO ..VTNU%% %6%6@( ORBIT-OV - @POLY 9-19-84) HEAD: @POLY ( n --, get 4 x,y vertices & save in polygon clip workspace array as y,x) T: 4 0 DO I OVER GPOLY LC@ 2 0 DO I 2* OVER XFORMVERT L@ J 4 * G1POLY + I 1- NEGATE 2* + ! LOOP DROP LOOP DROP T; ( ORBIT-OV - GVERTRANS 9-19-85) HEAD: GVERTRANS ( -- \ transform all grid vertices) T: 117 #IN ! ' XFORMVERT 6 + @ 3DSEG ! 0 VOUT ! ' G1VERT 6 + @ 3DSEG @ - 16* VIN' ! ' GVERTEX 6 + @ 3DSEG @ - 16* VIN ! 60 YSCREEN ! 36 XSCREEN ! VIEW>ORIGIN ORTHAG.POINTS PERSPEC.SCREEN T; ( ORBIT-OV - ?#VIS 9-19-85) HEAD: ?#VIS ( n -- # , # of vertices in front of the viewing) T: ( plane for polygon n ) >R 0 4 0 DO I J GPOLY LC@ 4 SWAP XFORMVERT L@ SCALE - 0> IF 1+ THEN LOOP R> DROP T; ( ORBIT-OV - G2ORTHAG 9-19-85) HEAD: G2ORTHAG T: ( compute orthagonal coordinates for polygon in g2) 4 #IN ! G2POLY VIN ! G1POLY VIN' ! G3POLY VOUT ! @DS 3DSEG ! VIEW>ORIGIN ORTHAG.POINTS T; ( ORBIT-OV - ZCLIPSET ZXGET 9-19-85) HEAD: ZCLIPSET ( set clipping window for z,x & z,y clipping) T: 16000 16000 SCALE -16000 SETCLIPWINDOW T; HEAD: ZXGET ( get z,x vertices for clipping) T: 4 0 DO I 6 * G3POLY + DUP @ SWAP 4 + @ ( X,Z --) I 2* 2* G1POLY + >R I ! R> 2+ ! LOOP T; ( ORBIT-OV - ZYGET XSAVE 9-19-85) HEAD: ZYGET ( get z,y vertices for clipping) T: 4 0 DO I 6 * G3POLY + DUP 2 + @ SWAP 4 + @ ( Y,Z --) I 2* 2* G1POLY + >R I ! R> 2+ ! LOOP T; HEAD: XSAVE ( save x after z,x clipping) T: #IN @ 0 DO VIN @ I 2* 2* + 2 + @ G3POLY I 6 * + ! LOOP T; ( ORBIT-OV - YSAVE ZSAVE XY>G1POLY 11-30-84) HEAD: YSAVE ( save y after z,y clipping) T: #IN @ 0 DO VIN @ I 2* 2* + 2 + @ G3POLY I 6 * + 2+ ! LOOP T; HEAD: ZSAVE ( save z after z,y clipping) T: #IN @ 0 DO VIN @ I 2* 2* + @ G3POLY I 6 * + 4 + ! LOOP T; HEAD: XY>G1POLY T: #IN @ 0 DO I 6 * G3POLY + DUP @ SWAP 2+ @ ( X,Y--) I 2* 2* G1POLY + >R I ! R> 2+ ! LOOP T; ( ORBIT-OV - @CLIPOLY SETPOLYCOLOR 9-18-85) HEAD: @CLIPOLY ( n --, 3D clip polygon n) T: @XYZ>G2POLY G2ORTHAG ZCLIPSET ZXGET 4 #IN ! G1POLY VIN ! G2POLY VOUT ! GOC OIN ! GOC2 OOUT ! CLIPPER XSAVE ZYGET 4 #IN ! G1POLY VIN ! G2POLY VOUT ! CLIPPER YSAVE ZSAVE VCLIPSET G3POLY VOUT ! PERSPEC.SCREEN XY>G1POLY T; HEAD: SETPOLYCOLOR ( n -- \ set color & dither for polygon n) T: 0 SWAP GRIDCOLOR OVER OVER LC@ COLOR ! 1+ LC@ DCOLOR ! T;