12.07.2015 Views

V5N3 - Complang

V5N3 - Complang

V5N3 - Complang

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

~~-A --r-example-,r-i CONTEXT II ------I-A-- -- --latest word in NEWVOC vocabularyt -I87 NEWWORE I LINK I etc.II I IIIIIAr-----3IIC4 VOCS 1 LINK 1 BDCFA(s) 1 81 A0 I GRAFT I VOC-LINKVOC3 words not shown84 VOC2 I LINK I BDCFA(s) I 81 A0 I GRAFT I VOC-LINKiIItlatest word in VOCl vocabularyt84 VOCl I LINK I BDCFAb) I 81 A0 I GRAFT I VOC-LINKIASSEMBLER words not shownI C5 FORTH I LINK 1 BDCFAk) I 81 A0 I GRAFT I VOC-LINK I1t I ,I, LIT I 00 I etc.Llateet word In FORTH vocabulary IDetailed Structure of Example Vocabulary TreeFigure ThreeFORTH Dimenstons6 VolurneV, NO 3


NEWVOG 1ASCII of the new word’s name.High bit of last character will be set,with very occasional machinedependentvariations, e.g., on 6502 systems.1 LINK ILink back to name field address ofthe previous word defined in the currentvocabulary, i.e., the vocabulary inwhich the word NEWVOC is defined. Allnormal so far.The < BUILDS. . . DOES> code fieldaddress(es). This field is generally fourbytes long, though the shorter, fastertwo-byte renderings are gaining prominence.This need not concern usnow. You can tell how long this field isby looking for 81 A0 which will followit.181 7 1This is how AOSlH, will show up inthe dictionary. It is a Dummy NameField with name of length one (the 1 in81) and actual ASCII name 20 withhigh bit set, to become AO. (ASCII20H is a blank, which was chosen becauseit was rather unlikely to occur asan actual name in a working system.Back to this in a moment.)IGRAFT 1It’s not clear if this field has anothername, but calling it the Graft Field isuseful for the moment, as this fieldhelps in “grafting” the new vocabularyonto the vocabulary tree. The GraftField in a vocabulary-name word likeNEWVOC or FORTH is the actual fieldthat is pointed to when we say somethinglike, “CONTEXT points to NEWvoc.”Right after NEWVOC is defined, theGraft Field of NEWVOC points to theDummy Header Field of the vocabularyin which it was defined. In the treein Figure One, for example, NEWCwas defined in the vocabulary VOC2.This is caused by the action of the


MVP-FORTHTHE FORTH SOURCE^^0 MVP-FORTH Meta Compiler for CP/M Programmer's kit UseStable - Transportable - Public Domain - Toolsfor applicatons on CPlM based computer Includes publicYou need two primary features in a software development package a domain source $1 50stable operating system and the ability to move programs easily andquickly to a variety of computers. MVP-FORTH gives you both these 0 MVP-FORTH Fast Floating Point for APPLE Programmer'sfeatures and many extras. This public domain product includes an editor,Kit. Includes 9511 math chip on board with disk andFORTH assembler, tools, utilities and the vocabulary for the best sellingdocumentation.$400book "Starting FORTH". The Programmer's Kit provides a complete 0 MVP-FORTH Programming Aids for CPIM, IEM or APPLEFORTH for a number of computers. Other MVP-FORTH products willsimplify the development of your applications.Programmer's Kit. Extremely useful tool for decompiling.callfinding, and translating. $1 50MVP Books - A Series0 Volume 1, A// about FORTH by Haydon. MVP-FORTHglossary with cross references to fig-FORTH, Starting FORTHand FORTH-79 Standard. 2"d Ed.$250 Volume 2, MVP-FORTH Assembly Source Code. includesCP/M@ , IBM-PC@ , and APPLE" listing for kernel $20MVP-FORTH Software - A Transportable FORTH0 MVP-FORTH by ECS Software for IEM-PC or ATARI"4001800 Standalone with screen editor License requiredUpgradeable $1 000 MVP-FORTH by ECS Software for IEM-PC or ATARl 4001800Enhanced with color animation, multitasking sound, utilities,and unlimited run time license.$1 750 MVP-FORTH Professional Application Development System(PADS) for CPIM, IEM-PC. or APPLE A three level integratedsystem with complete documentation Complete system $4000 MVP-FORTH Programmer's Kit including disk, documentation,Volumes 1 & 2 of MVP-FORTH Series (All About0 MVP-FORTH PADS enhanced virtual system $1 50FORTH. 2nd Ed. & Assembly Source Code), and Starting0 MVP-FORTH PADS Programming Aids $1 50FOR JH. Specify 0 CPIM. 0 CP/M 86, 0 CP/M + , 0 APPLE,0 MVP-FORTH PADS Meta Compiler $1 504 0 IBM PC, 0 MS-DOS, 0 Osborne. 0 Kaypro. 0 H891289.++ 0 ZIOO. 0 TI-PC, 0 MicroDecisions. 0 Northstar,*** MVP-FORTH operates under a variety of CPU's. computers. and0 Compupro, 0 Cromemco$1 50operating systems CPlM" disks can be supplied 8", SS/SD. 37400 MVP-FORTH Cross Compiler for CP/M Programmer's Kit.format or 5'/4 for &borne@ Northstarm Micro Decisions" Kaypro@ orCan also generate headerless code for ROM or targetHE912890 Specify your computer and operating system *CPU $300FORTH DISKSFORTH MANUALS, GUIDES & DOCUMENTSFORTH with editor, assembler, and manual. 0 ALL ABOUT FORTH by 0 1980FORMLRoc. $250 APPLE by MM $loo iBM-PC@ by LM $100 Haydon. See above. $25 0 1981 FORML Roc 2 Vol-$400 APPLE by Kuntze $90 0 NOVA by CCI 8" DS/DD$I 50 0 FORTH Encyclopedia by 0 1982 FORML Roc. $250 ATARI" valFORTH $60 0 z80 by LM $50 I Derick & Baker. 0 1981 Rochester FORTH0 CP1W by MM $100 0 8086188 by LM oo d,$\d Programmer's manual to fig- Roc. $250 HP-85 by LangeFORTH with FORTH-79d Cartridges by HES references. Flow charted, 2"d lga2 'OChesterHp-75 byCassady% IC20 $50 Corn 64 $bod Ed.ROC.$25$25Enhanced FORTH with: F-Floatinggint , G-Graphicsf7-Tutoria1, ,% 0 Understanding FORTH by +%* 0 1983 Rochester FORTH $25S-Stand Alone, M-Math Chip Support. MT-Multi-Tasking, X-Other Reymann $3 ROC.Extras, 79-FORTH-79.$25+& 0 FORTH Fundamentals, Vol. A Rimer0 APPLE by MM. 0 Extensions for LM SpecifyI by McCabe$1 6 0 Threaded interpretiveF, G. & 79$1 40 IBM. Z80. or 8086 Languages+%' 0 FORTH Fundamentals, Vol.$230 ATARi by PNS, F,G, & X $9002zp II by McCabe$13 METAFORTH by$1 000 CPlM by MM. F & 79 $140,& 0 Beginning FORTH by$300 8087 SupportCassady0 Apple, GraFORTH by I $75 (IBM-PC or 8086) $1 00 Chirlian$1 7 0 Systems Guide to fig-0 Multi-Tasking FORTH by SL, 0 9511 Support$250 FORTH EncyclopediaFORTHCP/M, X & 79 $395 (280 or 8086) $1 00 Pocket Guide$7 0 invitation to FORTH $200 TRS-8OII or 111 by MMS 0 Color Graphics0 And So FORTH by Huang A 0 PDP-11 User Man. $20$1 30 (IBM-PC)$1 00college level text $25+ 6+& 0 FORTH-83 Standard $1 50 Timex F.x,&79 by FD. tape G.X, & 0 Data BaseManagement $200 0 FORTH Programming by 0 FORTH-79 Standard $1 579$45 Requires LM FORTH diskScanlon0 FORTH-79 Standard0 TUTORIAL by LH. includesvictor 9ooo by DE, G,X +d 0 FORTH on the ATARl by E Conversion$1 0Startmg FOR JH $95$1 50Floegel $8 0 NOVA fig-FORTH by CCI0 fig-FORTH Programming Aids for decompiling, callfinding. 0 Starting FORTH by BrodieSource Listing$1 5Best instructional manual 0 NOVA by CCI User's Manualand translating CP/M IEM-PC, 280, or Apple $1 50available (soft cover) $1 8 includes editor. assembler,CROSS COMPILERS Allow extending, modifying and compiling tor(hard cover) $23 and utilities $25speed and memory savings, can also produce ROMable code*Requires FORTH disk0 Installation Manual for fig-FORTH $1 50 CPlM $300 0 IEM. $300Source Listings of fig-FORTH, for specific CPU's and computers The0 8086.Installation Manual IS required for implementationEach $1 5$300 0 280. $3000 Northstar $300 0 Apple 11/1i+ $300 0 1802 0 6502 06800 0 AlphaMicro0 FORTH Computer - Jupiter Ace0 16K RAM Pack0 48K RAM Pack +&0 Par/Sec InterfaceKey to vendors:CCI Capstone Computing Inc.DE Dai-E SystemsFD Forth DimensionI lnsoftLH Laxen and Harris$1 50$50$1 25$1 00LM Laboratory MlcroayatemsMM MlcroMotlonMMS Miller Microcomputer SenlcerNS Nautilus SystemsPNS Pink Noise StudioSL Shaw Labs0 8080 0 8086188 0 9900 0 APPLE II0 PACE 0 6809 0 NOVA 0 PDP-1 IILSI-110 68000 0 Eclipse 0 VAX 0 Z80Ordaring Inlormation: Check Money Order (payable to MOUNTAIN VIEW PRESSINC ) VISA Mastercard COD s $5 extra No billing or unpaid PO s Californiaresidents add sales tax Shipping costs in US included in price Foreign orders payin US funds on US bank include for handling and shipping by Air $5 for each itemunder $25 $10 for each item between $25 and $99 and $20 for each item over$1 00 Minimum order $1 5 All prices and products subject to change or withdrawalwithout notice Single system andlor single user license agreement required onsome Droducts


8080/280 FIG-FORTH for CP/M & CDOS systemsFULL=SCREEN EDITOR for DISK & MEMORY$50 saves you keying the FIG FORTH model and many published FIG FORTH screens onto diskette anddebugging them. You receive TWO diskettes (see below for formats available). The first disk is readable byDigital Research CP/M or Cromemco CDOS and contains 8080 source I keyed from the published listings ofthe FORTH INTEREST GROUP (FIG) plus a translated, enhanced version in ZILOG 280 mnemonics. Thisdisk also contains executable FORTH.COM files for 280 81 8080 processors and a special one for Cromemco3102 terminals.The 2nd disk contains FORTH readable screens including an extensive FULL-SCREEN EDITOR FORDISK & MEMORY. This editor is a powerful FORTH software development tool featuring detailed terminalprofile descriptions with full cursor function, full and partial LINE-HOLD LINE-REPLACE and LINE-OVERLAY functions plus line insert/delete, character insert/delete, HEX character display/update anddrive-track-sector display. The EDITOR may also be used to VIEW AND MODIFY MEMORY (a feature notavailable on any other full screen editor we know of.) This disk also has formatted memoryand I/O port dumpwords and many items published in FORTH DIMENSIONS, including a FORTH TRACE utility, a model database handler, an 8080 ASSEMBLER and a recursive decompiler.The disks are packaged in a ring binder along with acomplete listing of the FULL-SCREEN EDITOR and acopy of the FIG-FORTH INSTALLATION MANUAL (the language model of FIG-FORTH, a complete glossary,memory map, installation instructions and the FIG line editor listing and instructions).This entire work is placed in the public domain in the manner and spirit of the work upon which it is based.Copies may be distributed when proper notices are included.0 FIG-FORTH 81 Full Screen EDITOR packageMinimum system requirements:80x24 video screen w/ cursor addressability8080 or Z80 or compatible cpuCP/M or compatible operating system w/ 32K or more user RAM0 8" SSSD for CP/M (Single Side, Single Density)Cromemco CDOS formats, Single Side, S/D Density0 8"SSSD 0 8"SSDD 0 5'/4"SSSD 0 5%"SSDDCromemco CDOS formats, Double Side, S/D Density0 8" DSSD 0 8" DSDD 0 5%" DSSD 0 5%'' DSDDUSAForeignAIRSelect disk format below, (soft sectored only). ................................... $50 $65Other formats are belng consldered, tell us your needs.OPrinted 280 Assembly listing w/ xref (Zilog mnemonics) ............................ $15 $180 Printed 8080 Assembly listing ..................................................... $15 $18TOTAL $- -Price includes postage. No purchase orders without check. Arizona residents add sales tax. Make checkor money order in US Funds on US bank, payable to:Dennis Wilson c/oAristotelian Logicians2631 East Pinchot AvenuePhoenix, AZ 85016(602) 956-7678IFORTH Dimensions 10Volume V, No 3


,The defining word DIRECTORY atcompile time takes two values from thestack which at run time will be used asarguments for ESTABLISH.: DIRECTORY 2CONSTANT DOES >2@ ESTABLISH ;You could define a word DOC which,when executed, would establish thecurrent working directory fordocumentation as follows (assuming itto be on 45 through 47):45 47 DIRECTORY DOCYou can even get the values from thecurrent working directoryNAME DOCDlRNAME DOC-DIR-ENDDIRECTORY DOCassuming that the current workingdirectory has entriesDOC-DIR 45 DOCDIR-END 47DOC will change the current workingdirectory to the documentation directory.Any number of working directoriescan be thus defined.Every system will have a standard ordefault working directory. To get backto it we say MAIN. On this disk it isdefined78 82 DIRECTORY MAINThe actual work of NAME is done bySUBJECT. NAME picks up the limits forthe current working directory andexecutes SUBJECT. SUBJECT takes thenext word in the input stream and putsit in PAD. It then does CONNIVE, whichwill look for that word on the screensindicated. Only the names arecompared - the values are skippedover to make the search faster.INTRIGUE is used by CONNIVE to look upthe word in PAD on a single screen.When and if the word in PAD is found,the next word will be interpreted.SUBJECT can be used to define wordssimilar to NAME and VIEW for specialdirectories. A "help" system could bedefined something like:: HELP ( --- )HELP% 2@ SUBJECT LIST ;With shadow screens it could be eveneasier.: HELP ( --- )NAME >SHADW LIST ;SCR# 71( you may already have some of these. )-1 CONSTANT TRUE 0 CONSTANT FALSE: DEFINED ( --.:name:';. a,f 1 < -' rift --or- )-FIND ( this is .figforth "-FIND )IF 64 ( pr-ecedence blt 1 ANDIF 1 ( it's immediate 1 ELSE -2 THENSWAP CFA SWAFELSE HEKE 0 THEN ;: HAVE ( --.IN !REPEAT FALSE -: INTERPRET-&-WORD ( --. )( interprets a word 1DEFINEDIF EXECUTEELSE NUMRER ( dDl 3 CN if drop then )THEN ;CONTINUED ( n -- ) ( b/scr Ir ) RLK ! 0 >IN ! ;73 LOAD 74 LOAD ( directory system)78 82 DIRECTORY MAIN MAINSCK# 73( @a+ directory system wwb/wwb 830714): INTgIGUE ( -- fla ) ( search the screen )REGIN MORE ( aidr,f)IF PAD DUP C3 1+ COMPARE ( 0 for e ual )IF E(L WORD 01 ( 0) ELSE TRUE EXIT THENTHENUNTIL-. .FALSE ;: CONNIVE ( scri,scr2 -- ) ( (name>. is in "PAD")ELK 3 >.IN 3 >.R >.R TFUE ROT ROT 1+ SWAPDO I ( b/scr Ir ) BLK C/L ( skip top line ) >IN i !INTRIGIJE IF NOT LE~VE THENLOOP ABORT" not. in directory ItINTERPRET-?-WORD,R>. R> >.IN . ELK . ;: SUEJEIX ( scri.scr2 --*:name>) ( find and execute )EL WORD COUNT'PAD 2DUP C! 1+ SWAP CMOVE CONNIVE ;8CRY - .- ... 74 .( eas directory system wwbl~VFIRI~RLE DIRXI %DJR ( .-- scr 2 scr2I ESrABLISH ( scri,scr2 --: DIRECTORY ( scri,scr2 --ZZCONSTANT DOES) ( -- 1: NAME ( --IN 3 HAVE - It- DROP ELSE >'wwb 830724)) DIRZ 2: 5) DIRX 2. jk9 FSTABLISH :) ADIR SUBJEC T DNAME LIST ;.IN ! NAME LOAD THEN J: FOLLOW ( --. )>IN 3 IiAVE IF. DROP ELSE :,.IN ! WAM$ CONTINUED THEN ;: RUN ( --*:name.:. 1 >IN 3 NEED .>.IN , ;: DIR ( ---(:name;? ) XDIH MIN LIST: SUE( ( scr ---%:name:;. n -or ci D U SUBJECT ~ iPROCEDAMlJS WWB '7/ 14/83End ListingFORTH Dimensions 12 Volume V, No. 3


A primitive phone list can be set up:: .PH# ( DN --- )< # # # # #ASCII - HOLDUs #> TYPE SME ;: REACH ( --- )[ NAME PHONES 1 LITERALDUP SUBJECT .PH# ;Since the value of a name or subjectis interpreted, SUBJECT could be usedfor menus. Assuming that #MENU is ascreen with one- or two-charactercodes alternating with associatedwords to process them, something likethe following could be done.: MENU ( --- )#MENU US1 PROMPTQUERY 0 >IN !#MENU DUP SUBJECT ;“RUN something” is equivalent to“NEED something something”.‘‘FOLLOW name” has a somewhatsimilar relation to “NEED name” that“-->” has to “LOAD”. It is used at thebeginning of a screen to get to an earlierscreen that will lead to the currentscreen. This allows an entire application,spanning several screens, to beloaded from a request for any one ofthe constituent words.In the original conception, wethought that directories would besparse, with only major entries liketraditional directory screens. We soonfound that all definitions could be putin the directory (and a utility to do thiswas developed). This makes VIEW actlike its homonym, which vectorsCREATE. An important difference isthat our VIEW can list the source ofwords that are not yet defined.Since June 1982, this system hasbeen installed on Apple, Atari, CP/Mand Heath Figforth, MicromotionForth79, MVP Forth, and the StartingForth dialect. The following utilitywords or their equivalent are required:MORE returns (address,true) if thereare more words in the input stream,(address,false) if the input stream is exhausted.Our definition should workfor any system, even when BISCR is not1. On a standard system, the definitionmay be replaced with: MORE ( --- a,f )BL WORD DUP C@ ;(See Suralis and Brodie, “Checksumfor Hand-Entered Source Screens,”Forth Dimensions, Vol. IV, No. 3, p.15.)INTERPRET-A-WORD interprets thenext word in the input stream. NUMBERis like the Starting Forth word, andreturns a number or double number. InFIG-Forth you will have to remove theparenthesis marks from DPL @ o< IFDROP THEN.DEFINED returns a compilation address(which can be executed) and atrue flag if the next word is defined, ora string address (which can be furthermassaged) and a false flag if the nextword is unknown. It can be replacedwith -’ NOT in some systems.HAVE returns TRUE Or FALSEdepending on whether you alreadyhave the next word or not. In Forth79you may replace it with FIND.All that is required of COMMRE isthat strings at HERE and P#D can becompared for equality. INTRIGUE canbe adapted to use the Starting Forthor the FIG-Forth -TE~instead.-mCONllNUED is from the referenceword set and goes to a screen with noreturn. It is used in the definition ofFOW. A “named --> ” can be doneNAME word CONTlNUEDIf WSCR is not 1 then remove theparentheses from around B/SCR m inCONTINUED and CONNIVE.First Screen of “FORMATTER” DirectoryI FM’T KtP/WWB E3.30714 1LINES 23C) =‘7 230 DATE 230 .DATE 230 TODAY 230 PGGELEN 231PAGEWID.TH 231 HlJGE 231 MAXSTRING 2151 CURPGGE 232 NEWPAGE 232LINENU 232 PLVGL 232 MlVAL. 232 M2VAL 232 M3VGL 232 M4VGL 292BOTTOM 232 HEADER 232 FOOTER 292 FILLING 239 RJUST 233L.SVAL ,233 SPVAL 2.33 INVAL 2.33 RMVAI- 233 TIVAL 233 CEVAL 233lJLVAL 233 OUTP 234 OUTW 234 OUTWDS 234 DIRECTION 234BETWEEN 2.34 CAP 234 AL.LCAP 234 OUTBUF 234 DATE 235 .DATE 235TODAY 235 PUTTL 235 PUTHEGD 236 PUTFOUT 23h PUTLINE 237 HR 238PUTSPACE 238 PLJTPAGE 2.39 GETPARGM 240 SETVAL 240 SETLS 241SETCE 241 SETUL 241 GETTL 242 SETPAGE 242 SETSP 242 SETNE 242SETIN 243 SETRM 243 snrx 243 SETBOTTOM 244 SETPL 244SE’TM1 244 SE.TM2 244 SETM.3 244 SETM4 244 .FI 245 .NF 245.BH 245 .J\J 243 .RJ 245 .NJ 245 .LS 246 .CE 246 .UL 246.HE 246 .FO 246 .HF 247 .SP 247 .NE 247 . IN 247 .RM 247Figure ThreeVolume V, No. 3 13 FORTH Dimensions


A RAMdisk for808618088 FIG-ForthJohn FK IrwinAustin, TexasMy IBM Personal Computer, with320K of RAM, has far more memorythan is used by most Forth programs.The desire to eliminate wear and tearon my diskette drives and diskettesprompted me to develop a RAMDiskapplication in Forth to make use of thisresource. The program measures theunused RAM space remaining afterForth is loaded and makes the freespace into a virtual diskette drive ofthat maximum capacity. The performanceincrease is impressive and the absenceof the usual diskette commotionis welcome. By copying a set of screensto RAMDisk, program changes may betried non-destructively and then copiedback to the original screens when completelydebugged.Non-Standard WordsMy Forth, although similar to theFIG 8086 implementation, is a greatlyexpanded version with dictionaries formulti-tasking, full-screen, color, andprovision for DOS-compatible, nameddisk files. The RAMDisk programpresented here is a subset of my program;the omitted material pertainsmainly to presenting the RAMDisk tothe user as a DOS file.This program makes use of severalwords from past issues of Forth Dimensions:the Kitt Peak GOM), and themodular programming words INTER-NAL, EXTERNAL and MODULE. Thesedefinitions are presented for reference.The extended segment load and storewords EC@, EC!, E@ and El in my systemaddress the segment defined by auser variable EB (Extended Base). Myinput/output words are lo@, 10!,10c@,and IOC!. The meaning is obvious andequivalent words may exist in other8086/88 Forths or may be coded by theuser. The assembler words used in(MEM) have obvious functions.R0 ( Kitt Peak GODO and Modular Programming Words )123 : (GODO) 2t 0 MAX R 3 4 - WIN RT DUP DUP4 + 2+ P EXECUTE ;3 + >R56 : GODO COMPILE (GODO) HERE 0 , 2 ; IMMEDIATE7B9 : INTERNAL CURRENT 3 3 ; ( start private program section)1011 : EXTERNAL HERE ; ( end private program section)1213 : MODULE1415PFA LFA ! ; ( hide the private words)SCR # 7680 < RamDis1, Program ) INTERNAL12 0 CONSTANT RANI ( total number of RamDisk buffers ); 16384 CONSTANT RAMBLK ( flrst block number )4 0 CONSTANT RAMSEG ( base segment address of RamDisk )c6 HEX76 ASSEMBLE CODE (MEM) 12 INT PSHAX PSHCS END-CODE71 0 :1112131415SCH #I3 (12:34c6787 :10111213141sSCR #0 (12 :3456787101112131415HDmemsire ( --- ) ( stores seg base, RAMSEG, and # bfrs )(MEM) 1000 + DUP ' RAMSEG ! >R 40 t R> -11 / ' RAM# ! ;DEC I MAL -- ,:>769RamDisl Program )HEXRDclear ( --- ) ( marl' all buffers empty )RAMSEG DUP RAM# 11 t + swwDOI ER ' ( access a buffer 1CJ 0 E ' ( mark buffsr unused )11 +Loor : ( to next buffer )RDseg ( blk --- blk 1 ( sets EB to buffer start )wr RAMBL~; - ( get offset )11 t RAMSEG + ER : ( calculate buffer address )DECIMAL770RamDisk Program )HEXRDwritc ( bfr blk --- ) ( copy relative block )61 IOC3 J OR ( chirp beeper )61 IOC'61 IOCP FC AND ( quit beep )61 roc!RDseg ( set buffer segment )0 E!( write block number )102 2 DODUP 3 I E! 2+ copy block to RamDisk: )


.SCR #0 (1.7 .&. RDerr CR ." RamDisl ERROR. improper function call" QUIT :4 :J67891011121;1415SCR #0 (17 :-45t7a9101112131415SCR #I:] (12 :-45 :67D91011121 .;1415771RamDisl Program )HEXRUread ( bfr bll --- ) (RDseg (0 E,S = (IF (102 2 DO (I E.3 OVER ' 2+2 +LOOP DROPELSE (100 BL FILL (ENDIF :772RamDisl: Program 1copy relative block )set buffer segment )see if data present 1read actual buffer )copy RamDisk to buffer )RamDisk buffer not valid )fill buffer with blanks )DECIMAL --.RDR/W ( addr blk f ) ( augments FORTH R/W )OVER DUP ( see if in RamDisi.: )RAMBLE: 1- :> SWAP RAM# RAMBLK + 4: ANDIF ( then memory read or write )1.C GODORDerr RDwrite RDread RDerrTHENR:. DROP ( drop return link to R/W )ELSE ( else real read or write )R::. SWAP ?R ?R ( replace R> from R/W )ENDIF ; ( and return to R/W )_-77:RamDisl Program )KDinit ( --- ) ( initialize a phantom diskette in RAM )HDmemsiie RDclear ' RDR/W CFA ' R/W ' ;RDparms ( --- ) ( display RamDisk parameters )DECIMAL CR CR ." RamDisk 'I CR CR." Capacity : I' RAM# 4 / . ." k-bytes'' CR." Blocks : " RAMBLk. .I, - 8,RAM# RAMBLK + 1- . CR. I ' Screens : " RAMELK 4 / DUP .I D - I,RAM# 4 / + . CR ;SCR # 7740 ( RamDisk Program )12 EXTERNAL34 : RD ( 0 --- initialize RD,5 1 --- return initial block 0,6 2 --- return number of blocks,7 >2 --- type information block )8 l+ GODO RDparms RDinit RAHBLK RAM# RDparmr THEN ;910 MODULE FORTH1112 0 RD 3 RD ( initialize RD and show user the size )131415-- >Program InterfaceThe RAMDisk program should beloaded before other applications. Theonly nucleus word affected is FUW. Inorder to make existing words, such asFLUSH, work with the RAMDisk, thisprogram replaces the first parameterword of W (R>) with the executionaddress of RDW. RDW checks theblock number to see if the call is toRAMDisk. If not, then the R>replaced at 'URMT is emulated andexecution proceeds with the native Wcode. Since the RAMDisk programmodifies a nucleus word, it should be"sealed" under FENCE to preventaccidental FORGETing .The assembler word (MEW returnstwo values from which the availablememory is determined. The PC-DOScall 12 IN1 returns the memory size inKbytes. Pushing the CS register returnsthe beginning address of the Forth codesegment. From these values, GET-MEM-SIZE determines space available for theRAMDisk so that the compiled applicationcan be moved freely betweenmachines with differing memory size.If Forth is loaded at a fixed location ina fixed memory-size machine, the word(MEW can be replaced by a constant formemory size and a constant for the endof the Forth segment.My Forth uses 256-byte blocks.Each block is assigned seventeen sixteen-byte8086/88 "paragraphs". Thiswastes twelve bytes per block but simplifiesbuffer addressing. The extrasegment pointer (EB) is set to the startingaddress of RAMDisk plus seventeentimes the relative block numberwithin the RAMDisk. The block identifieris then at offset zero and theblock proper at offset two to 257 relativeto the segment register (EB). Thisscheme is easily adapted to other buffersizes. For systems with 1K blocks,each block is assigned sixty-five paragraphs.End ListingProgram FunctionsRD is the only RAMDisk word visibleto the user. This word accepts a functionflag as follows:Volume V, NO. 3 15 FORTH Dimensions


FORTH for Z-80@ ,8086,68000, and IBM@ PCFORTH Application Development Systems include interpreterlcompiler with virtual memory management andmulti-tasking, assembler, full screen editor, decompiler, utilities, and 130 + page manual. Standard random accessfiles used for screen storage, extensions provided for access to all operating system functions.2-80 FORTH for CPIM@ 2.2 or MPIM II ................................................. .$ 50.008080 FORTH for CPIM 2.2 or MPIM II ................................................... $ 50.008086FORTHforCPIM-86orMS-DOS ................................................... $100.00PCIFORTHTM for PC-DOS, CPIM-86, or CCPM ............................................ $100.0068000FORTHforCPIM-68K ..........................................................$250.0083 - Standard version of all application development systems available soon. All registered users will be entitledto software update at nominal cost.FORTH + Systems are 32 bit implementations that allow creation of programs as large as 1 megabyte. The entirememory address space of the 68000 or 8086188 is supported directly for programs and data.PCIFORTH + for PC-DOS or CPIM-86 ................................................. .$250.008086 FORTH + for CPIM-86. .......................................................... $250.0068000 FORTH + for CPIM-68K ....................................................... .$400.00Extension Packages for FORTH systemsSoftware floating point (2-80,8086, PC only). ........................................... .$100.00Intel 8087 support (8086, PC only). .................................................... .$lOO.OOAMD9511support(8086,2-80only) ....................................................... 0.00Color graphics with animation support (PC only) ........................................ .$100.00Symbolic interactive debugger (PC only). .............................................. .$lOO.OOCross reference utility. ............................................................. .$ 25.00TMPCIGEN (custom character sets, PC only) ............................................ .$ 50.00PClTERM communications program for PC and Smartmodem. ............................ .$ 60.00Hierarchical file manager ........................................................... .$ 50.00B-treeindexmanager ................................................................... 5.00B-treeindexandfilemanager .........................................................$200.00QTF + Screen editor and text formatter by Leo Brodie,forIBM PCwithIBMor Epsonprinter ..................................................$lO 0.00Nautilus Cross Compiler allows you to expand or modify the FORTH nucleus, recompile on a host computer fora different target computer, generate headerless and ROMable code. Supports forward referencing. Producesexecutable image in RAM or disk file. No license fee for applications. Prerequisite: Application DevelopmentSystem for host computer.Hosts: 2-80 (CPIM 2.2 or MPIM II), 8086188 (CPIM-86 or MS-DOS). IBM PC (PC-DOS or CPIM-86). 68000 (CPIM-68K)Targets: 8080, Z.80. 8086188, 6502, LSI.11. 68000. 1802. 2-8Cross-Compiler for one host and one target ............................................. $300.00Eachadditionaltarget .................................................................. 0.00AUGUSTATM ADA subset compiler from Computer Linguistics, for 2-80 computers under CPIM 2.2 ...... $ 90.00LEARNING FORTH computer-assisted tutorial by Laxen and Harris for CPIM, includes Brodie's"Starting FORTH" (8" format only). ........................................................... $ 95.002-80 Machine Tests Memory, disk, printer, and console tests with all source code in standard Zilogmnemonics .................................... ....................................... .$ 50.00.8080 and 2-80 application development systems require 48 kbytes RAM and 1 disk drive, 8086 and 68000 require 64 kbytes. Prices include shipping by UPS or first ClaSSmail within USA and Canada. California residents add appropriate sales tax. Purchase orders accepted at our discretion. Master Charge and Visa accepted.Disk formats avallable: Standard CPIM 8" SSSD. Northstar 5% " QD. Micropolis 5% " QD, Sage 5% " DO. Apple 5% ", Victor 9000 5% ". Kaypro 5% ", Osborne 5% " OD,Micromate 5% ", IBM PC 5% ", Standard MS.DOS 5%" SSDD. Most other formats can be special ordered.Laboratory Microsystems, Inc.4147 Beethoven StreetLos Angeles, CA 90066(21 3) 306-741 22-60 is a registered trademark of Zilog. Inc.CPIM is a registered trademark of Digital Research, Inc.IBM is a registered trademark of International Business Machines COrp.Augusta is a trademark of Computer LinguisticsdBASE II is a trademark of Ashton-TalePClFORTH and PClGEN are trademarks of Laboratory Microsystems Inc.FORTH Dimensions16 Volume V, No. 3


Break Through the64K Barrier!FORTH-32'" lets you use up to one megabyteof memory for programming. A CompleteDevelopment System! Fully CompatibleSoftware and 8087 Floating Point Extensions.303 Williams Ave.Huntsville, AL 35801(205) 533-9405 800155818088Now available for the IBM PC, PC-XT, COMPAQ, COLUMBIA MPC,and other PC compatibles!IBM, COMPAQ, MPC, and FORTH-32 are trademarks of IBM, COMPAQ, Columbia Data Products, and Quest Research, respectively.Volume V, No. 3


\IIiintroduced in July 1980. A newer, faster(8 Mhz) 8087 is projected for January1984. The 8087 has eight 80-bitregisters, two pointers, a control registerand a status register; supports sevendata or number types; performs allcomputations on a temporary real format(80 bit); and has six principle instructiontypes. Detailed technical informationon the 8086(88)/8087 can befound elsewhere.One of the unique features of the8087 illustrates how co-processing instructionsare interpreted. In a maximumsynchronized mode, the NDP interpretsthe instruction stream alongwith the host processor. The NDPremains poised until a special commandsequence is detected (ESC).When the special co-processor commandis read, the 8087 interprets thesubsequent commands, accessing memoryas necessary and executing the interpretedcommands. The 8086 waitsuntil the NDP has completed the commandsbefore continuing. In a true coprocessingfashion the 8086(88) and8087 interpret the same instructionstream containing embedded NDPcommands.The 8087 was designed with a stackstructure: “the charter of the 8087design team was first to achieve exceptionalfunctionality and then obtainhigh performance.” (iAPX manual, p.S.3). The 8087 is a Stack-Oriented Coprocessor(maybe an “SOC”?). Thisstructure makes it compatible not onlywith the 8086 but also with the architectureof Forth.Forth and a Stack-OrientedCo-processorThe stack-oriented structure of the8087 provides an easy incorporation intoan 8086 Forth environment. All thatis needed is a small 8087 assembler thatcontains the primitive commands tocommunicate with the NDP (this kindof assembler is described elsewher$).The operation of a stack-oriented coprocessoris identical to the operationof existing stacks; two examples help illustratethe simple extensibility ofstack-oriented co-processing.The first example involves a variantof integer computation. Usually, oneinteger is placed on the stack, then asecond integer is placed on the stackand in reverse polish fashion a commandis given to multiply the two numbers;for example,1234 5 m .would produce6170 0 OKMy 8 Mhz 8086 Forth environmentperforms 3230 (integer multiply) operationsper second, or 3.23 KOPS (pronounced“K-OPS”).In the co-processing case, a similarsequence is repeated. Again two numbersare placed on the stack. But, insteadof issuing a m command, whichwould result in the 8086 multiplyingthe numbers, four additional stepsmust take place: (1) the first numbermust be moved to the co-processor’sstack (the stack that physically resideswithin the 8087 chip; for this the wordW>F defined in the 8087 assemblermoves an integer or word from thedata stack to the floating-point stack);(2) the second number must be movedto the 8087 stack, again using w > F; (3)the numbers must be multiplied usingFm: (the floating-point analog of m;and then (4) the resulting number mustbe returned to the Forth data stackusing F>W (which converts a floatingpointnumber to a 16-bit integer andtransfers it to the top of the datastack). The typed sequence1234 5 W>F W>F FmF>W .would produce, again6170 OKIn this case “more is less.” Eventhough four steps are required, the8086 + 8087 actually performs floatingpointmultiplication at 29.41 KOPS.The addition of a numeric co-processorincreases the computational speed forinteger multiplication by about ninetimes.As a side point, the NDP is capableof performing in excess of 88,8000floating-point multiplies per second.But the observed computational speedis slower due to the overhead needed torun Forth. (What if a Forth co-processorchip existed for DOCOL, SEMIS,and NEXT?)The second example of stack-orientedco-processing involves extending theForth environment. This example is anextension of the first one. A significantdifference between Forth and otherlanguages and/or environments is theDivide-Test-Conquer approach; firstdivide the application into easily testableparts, test each part, and then conquerthe application. Having alreadytested the fast variant of an integermultiply, we can now define a newword and extend the vocabulary. Foradded clarity let us define the newword as:CODE m (W>F) (W>F)(Fm) (F>W) NEXT;The words in parentheses are theprimitives of their “colon-level” counterparts.CODE m operates on thestacks in an identical fashion as:W>F WF Fm F>Wbut at 45.45 KOPS.Additionally, after this word hasbeen defined, any subsequent applicationsof m uses the “newer” and fasterdefinition. The definition for integermultiply has been literally redefined.This Forth feature is rarely found inother languages. For example, attemptingto redefine the integer multiply inUCSD Pascal is next to impossible.1. Good references on the 8087 include: Duncan(1982), Field (1983), Palmer, et ul., (1980), Rash(1981), Simington (1983).2. I resurrected an 808618087 assembler writtenin Forth by John Bumgarner on my Seattle ComputerProducts 8086/8087 (Gazelle) system runningat 8 Mhz. John Bumgarner and myself arecompleting a draft of an article on “An ExtensibleAssembler for the 8087.” The 8087 wasplaced in a copper “girdle” (only recommendedfor Forth artisans) to enhance heat dissipation atthe increased clock frequency (thank you TZ). Ihave also been beta-testing a newer (non-girdled)8 Mhz 8087 (thank you LM, JT, Dc).The Future of Stack-OrientedCo-processors and ForthStack-oriented co-processors providea means of extending a Forth system.For now, numeric co-processorsare easily applied. Their addition notonly extends computations to includeVolume V, No 3 21FORTH Dimensions


floatingpoint calculations but also enablesmicroprocessor systems to rivallarger mini and mainframe computersin number crunching ability. In thenear future, other types of stackorientedco-processors may becomeavailable, including string and graphicsco-processors. Until a Forth processoris available, and maybe even after, aForth co-processor chip also provides ameans of extending a Forth system. Inthe co-processor approach, very powerfulmicroprocessor systems can bebuilt of various combinations of guestprocessors and host processors. U1-timately, each element type that requiresa stack might have a custom coprocessor.The most important benefit of stackorientedco-processors is their specialability to operate on an internal stackof predefined elements. These processorsprovide an effective balance of increasedspeed with a minimum of additionalhardware and additional vocabulary.The interaction between Forthand stack-oriented co-processors formsa strange loop where the sum is convenientlygreater than the computationalparts.This paper has evolved from twoearlier papers presented at the 4th AnnualForth Convention, San Jose, 9October 1982 and at the Eighth AnnualWest Coast Computer Faire, San Francisco,18-20 March 1983. Addresscommunications to: D. Redington,Sleep Research Center, Department ofPsychiatry and Behavioral Science,Stanford University School of Medicine,Stanford, California 94305.ReferencesDuncan, R. “Intel’s 8087 NumericData Processor.” Dr. Dobb’s Journal,1982, 7(8), pp. 47-50.Field, T. “The IBM PC and the Intel8087 Co-processor, Part 1 : Overviewand Floating-point Assembly-LanguageSupport.” Byte, 8(8), 1983, pp.331-374.Hofstadter, D. R. Godel, Escher,Bach: an eternal golden braid. NewYork: Basic Books. 1979.Loeliger, R. G. Threaded InterpretiveLanguages. Peterborough, NH: ByteBooks. 1981.Palmer J., Nave R., Wymore C.,Koehler R., & McMinn C. “MakingMainframe Mathematics Accessible toMicrocomputers.” Electronics, 8 May,1980, pp. 114-121.Rash B., “Application Note AP-113- Getting Started with Numeric DataProcessors.” Intel Corporation, February198 1.Simington, R. B. “The Intel 8087 NumericsProcessor Extension. ” Byte,8(4), 1983, pp. 154-172.iAPX 86,88 USER’S Manual. IntelCorporation, 1981.1 proFORTH COMPILER8080/8085,280 VERSIONSSUPPORTS DEVELOPMENT FOR DEDICATED APPLICATIONSINTERACTIVELY TEST HEADERLESS CODEIN-PLACE COMPILATION OF ROMABLE TARGET CODEMULTIPLE, PURGABLE DICTIONARIESFORTH-79 SUPERSETAVAILABLE NOW FOR TEKTRONIX DEVELOPMENT SYSTEMS - $222 MICROPROCESSOR-BASED PRODUCT DESIGNSOFTWARE ENGINEERINGDESIGN STUDIES - COST ANALYSISELECTRONICS AND PRINTED CIRCUIT DESIGN0 PROTOTYPE FABRICATION AND TESTREAL-TIME ASSEMBLY LANGUAGE/proFORTHMULTITASKING0 DIVERSIFIED STAFF0FORTH Dimensions 22Volume V, No. 3


Code andColon CompatibilityDavid HeldHermosa Beach, CaliforniaI recently developed an approach toa problem which may be of interest toothers. I was developing a communicationsapplication in Forth-79 whichwould require some code definitionsdue to speed requirements. For thedevelopment process, however, Ipreferred to begin with colon definitions,planning to convert progressivelyhigher-level words into code as thework progressed. Thus, I faced theproblem of creating code definitionsfor words that might be called either assubroutines from other code words, oras Forth-compatible words from colondefinitions.The critical difference between thetwo is that a machine-language subroutineshould end by returning to itscaller (pop the stack for the caller’saddress), whereas a Forth code definitionends by jumping to NEXT. Toresolve the dilemma, I used the techniquesillustrated in Figure One by8080 machine language.These words would permit me to makecalls to any machine-language subroutine(such as in my system’smonitor); for example,: SCROLL F010 CALL ;would write FO10 over the zero in thedefinition of (CALL), and would thenexecute (CALL). Thus the monitor subroutineat ( ~010) would be executed,followed by a jump to NEXT.Now we want to create subroutinesthat can be used either from colondefinitions or code words. Here is adefining word which defines such subroutines.When invoked from colondefinitions, the run-time behavior issimilar to CALL, above. To use the subroutinefrom code definitions, merely“tick” its address and CALL it in assemblylanguage. Figure lko showsthe defining word SUBROUTINE:For example, this word might beused to define subroutine SUB1, as follows:SUBROUTlNE SUBl80 A MV1C010 STARE1Now we can invoke SUB1 fromForth, as follows:: TEST1 SUB1 ;Or, from a machine-language word,as follows:CODE TEST2’ SUBl CALL,NEXT JMP ,ENPCODEThe advantage we gained by all thismanipulation is that the definition ofSUB1 is unchanged, whether it is usedby a colon or code word.CODE (CALL1 I a word which ralls a subroutine, then jumps to NEXl ICD C, 0 , I equivalent to CALL 0 INEXT JMP, I equivalent to JMP NEXT IEND- CODE’ lCAl L I li CONSTANT CALL- ADDH I a constant containing the address II of the zero in the above definition. I: CALI I addr --- I I a word which calls the subroutine at addr ICALL-ADDR , I write the desired subroutine address II over the zero in definition of ICALLIICALLI ;I and execute ICALLIFigure One: SUBROUTINE I create a code subroutine useable either from colon II or code definitions.ICCOMPILEll ASSEMBLER I invoke assembler vocabulary ICREATE I create a header for the subroutine 1GOES) CALL ; I this happens when subroutines so II defined are invoked from FORTHIFigure Thonner Access holds:he key to yoursoftware solutionsWhen in-house staff can’tsolve the problem,make us a part of your team.As specialists in custom designedsoftware, we have the know-howto handle your applicationfrom start to finish.Call us for some straight talkabout:a Process ControlI Automated DesignI Database ManagementI System Software & UtilitiesI EngineeringScientific ApplicationsnI Turn Kev Svstemsa .Inner Access Corporation-- P.O.Box 888, Belmont, CA 9400PHONE (41 5) 591 -8295Volume V, No. 3 23 FORTH Dimensions


~CORDIC Algorithm RevisitedDave FreeseCape May Court House, New JerseyI am employed as a senior engineeringanalyst and routinely use PL/I,Pascal, Fortran and BASIC at my placeof employment. Until recently, Forthwas just for hacking around at home,but it may just prove to be the answerto a “real” estate problem at work. Iam developing special purpose windspeed/direction instruments for theU.S. Navy and have been frustrated bythe “fat” code produced by all of thecompilers at my disposal. None of thecompilers have the option of pruningthe object code by removing unwantedsupport code. When you aredownloading the resultant code toROMs, a trade-off must be made betweencode size and speed. Forth mayjust let me have the best of bothworlds.Which brings me to the subject ofsource code. The Volume IV, Number1 issue of Forth Dimensions has founda permanent place on my desk. It containssome of the best material onfixed-point arithmetic that is available(at least with regard to Forth). Thearticle on vector rotation using theCORDIC algorithm was particularlyuseful to me, as that type of conversionis routinely performed in windspeed/direction computation. Theoriginal code did not, however, meetmy expectations with regard to accuracy.In particular, it failed to returncorrect values for rotations of 0,45, 90and 180 degrees. The accompanyinglisting of a double-precision version ofthe algorithm will provide the neededaccuracy. It converts all input intodouble-precision numbers with the binarypoint between bits 15 and 16 (i.e.,the upper half of a number representsthe integer part and the lower halfrepresents the fractional part.This was written for 280 Forth byLaboratory Microsystems. This interpreterallows double number literals incolon definitions. Modify these entriesfor FIG-Forth or other interpreterswhich do not allow this extension. Theconversion is fast due to the machinecode divide-by-factor-of-two, 2SRAroutine.Screen # 27 crc = 251140 ( CORDIC ALGORITHM -- words for machine code )12 HEX34 ( create header with CFA pointing to body of word )5 : :CODE (- ) BASE @ HEX CREATE ;67 ( terminate body of word with a jump to NEXT )8 ( jp next )9 : ;NEXT ( -- ) 0C3 C, NEXT-LINK , SMUDGE10 BASE ! ;1112 DECIMAL131415 ->Screen # 28 crc = 57810 ( CORDIC ALGORITHM-- double number words )1 ( 2DUP 2SWAP 2DROP D+ D- 2@ 2! previously defined )2 : 20VER ( dl d2 - dl d2 dl ) >R >R 2DUP R> R> 2SWAP ;3 : 2ROT ( dl d2 d3 - d2 d3 dl ) >R >R 2SWAP R> R> 2MP ;4 : 2VAR ( -- ) GUILDS 0 0 , , DOES> ;5 : 2CON ( -- ) 2@ ;6 : D< ROT 2DUP = IF ROT ROT DMINUS D+ 0< ELSE7 SWAP < SWAP DROP THEN SWAP DROP ;8 : D* ( dl d2 -- d3 ) OVER 5 PICK U* 6 ROLL 4 ROLL * +9 2SwAP * + ;1011 :CODE 2SRA ( d n -- W2-n12 0CA C, NEXT-LINK ,13 01D C, 0E3 C, 0CB C,14 03D C, 020 C, OF3 C,15 ->0El C, 07D C,0El C, 0CB C,01c c, OCB c,BE5 C,;NEXTScreen # 29 crc = 514110 (WRDIC ALGORITHM) ->1 Zilog meumonics for definition of 2SRA23 POP HL $1: SRA4 LD AIL RR5 OR A,A Ex6 JP Z,NEXT RR7 POP HL RR8 Ex9 cont’d next column DEC10 JR11 PUSH12 JP1314150E37 c,02c c, OCB C,01D C, 0E3 C,HL(SP) ,HLHFORTH Dimensions 24 Volume V, No. 3


Screen # 30 crc = 164350 ( ORDIC ALGORITHM )1 ( ALpHA[il = 65536 * 32768 * arctan[l/2^il / Pi 12 2vARALpHAs-4ALlLoT3 536870912. 1 I 316933406. I I 167458907. I 1 85004756. I I4 42667331. I I 21354465. 1 1 10679838. 1 5340245. I I5 2670163. I I 1335087. 1 1 667544. 1 333772. I I6 166886. I I 83443. ,7 ( convert double to single with round up 18 : D->S 32768 0 D+ SWAP DROP ;9 : RVSUBl >R 2ROT 2ROT 20WR 20WR R) 2SRA ;10 : RVSUB2 >R 2ROT 2ROT ZSWAP ED 2SRA ;11 : RVSuB3 >R 2ROT R) 4 * ALPHAS + 2@ ;12 : *KN ( n -- d = n * 65536 * 0.60725293 )13 256 /MOD SWAP >R S->D 10188014. D*14 R) S->D 39797. D* D+ ;15 ->Screen # 31 crc = 232460 ( COEDIC ALGORITHM )1 : R O m R ( n.y-old n.x-old n.ang - n.: .ner2 >R ( save angle )3 >R ( save n.x ) *KN ( convert n.y )456789101112131415n.x-new )R) *KN ( convert n.x ) 0 R> ( retrieve angle -> double )BUP 0 0 D< IF 0 16384 D+ 2ROT 2ROT DMINUS 2SWAP 2ROTELSE 0 16384 D- 2ROT 2ROT 2SWAP DMINUS 2ROT THEN14 0 DO2DUP 0 0 D< IFI RVSUBl D- I RVSUB2 D+ I RVSUB3 D+ ELSEI RVSUBl D+ I RVSUB2 D- I RVSUB3 D- THENLx)(IP 2DROP ( drop d.angle )D->S >R D->S R) ; ->screen # 32 CKC = 402820123456789101112131415 is( &RDIC ALGORITHM )( single precision angular conversions 1: PIRADIANS MINUS 32768 ROT ROT */ ;: DEGREES 180 PIRADIANS ;: POLAR-> ( rad ang - y x ) 0 ROT ROT ROTVECPOR ;End ListingFOR 8080,280,8086". 68000"M U LTI U S E RMULTITASKINGA professional quality full featureFORTH system at a micro price.TaskFORTH'"Single, double, triple,quadruple and floating pointmath, trigonometric functionsCase statementsInteractive debuggerNovice Prog ra m me rProtect i o n Pa c ka g eT"Multiple thread dictionarySystem date/calender clockHierarchical file systemScreen and serial editorInter-task communicationsUnlimited number of tasksStarting FORTH, FORTH-79and FORTH-83t compatibleGraphics supportTaskFORTH is the FORTHsystem you would write,if you had the time . . .ALL included for just $395(plus applicable taxes)Available for CP/M. Northstar DOS.Micropolis and Stand-alone.Visa & MC Accepted' Available soon1 When standard is approved:P/M is a trademark of Digital ResearchraskFORTH is a reg. trademark of Shaw Labs, Ltd.jingle user. single computer license agreements required.SHAW LABORATORIES, LIMITED24301 Southland Drive, Suite 216Hayward, California 94545(4 15) 276-5953Volume V. No. 3 25 FORTH Dimensions


Standards CornerForth-83 StandardRobert L. SmithSunnyvale, CaliforniaAs many readers are aware, theForth-83 Standard has been approvedby the Forth Standards Team. By thetime you read this, copies of the standardshould be available from the Institutefor Applied Forth Research,MicroMotion, or Mountain ViewPress. The majority of members of theForth Standards Team are vendors orpotential vendors of Forth systems andapplications. The Forth-83 Standardrepresents a substantial input from theteam members, the referees, and theForth community. Literally hundredsof proposals were received and examined.In contrast to the past, therewere two major meetings of the StandardsTeam as a whole, and very manymeetings of the referees. The result is adocument of substantial quality. Theteam rules require a two-thirds affirmativevote of the members to accept thenew standard. The actual vote as of thetime of this writing is twenty-two“yes” votes, one “no” vote, and threevotes not received. We can see that thevote was quite decisively in favor of thenew standard. In my opinion, the newstandard offers a significant improvementover previous Forth standards.Like all standards, Forth-83 is theresult of many compromises and,therefore, not all readers will agree onthe desirability of some of the features.It should be pointed out that the ForthStandards Team is not forcing anyoneto adhere to the standard. In the forwardto the standard, the followingsentence appears: “A programmer orvendor may choose to strictly adherewith the standard, but the choice todeviate is acknowledged as beneficialand sometimes necessary. ” Certainly,if one has programs which work on anolder standard or a non-standard system,there is no requirement that theold system be thrown away and theprograms rewritten just because a newstandard exists.Let us briefly review some of the differencesfrom the previous standardwhich may affect a more general acceptanceof Forth-83. Most of the issueshave been previously aired in thiscolumn for the purpose of informationand to encourage public input.The new ~0.~00~ is somewhat differentfrom previous DO-WOPs. Mostpeople now seem to prefer the new,circular-arithmetic DO-WOP. Briefly,the advantages are (1) the index I nowhas a full 65K range, (2) there is nolonger a need to have a separate /LOOPfor unsigned indices, and (3) in mostcases the new loop is faster than mostolder ones. A few vendors wouldprefer that0 0 DO ... LOOPwould cause a null result. It appearsthat if that result is desirable, it couldbe obtained by using the new SystemWord Set and defining the desiredfunction with a different name. Notethat old code which used the construct0 0 DOwould be incompatible in either case. Aclosely related issue is that of the newversion of LEAVE which causes controlto transfer to the end of the loop.There is an implementation issue here.There is not adequate space to discussthe issue thoroughly, but one vendorwould prefer to have either a morecomplicated form (called LEAVES) or,alternatively, to allow only one occurrenceof LEAVE within a given loop.The default value of “true” forcomparison operators now returns allbits set rather than just the low-orderbit. In most cases, a comparison is followedby a test for non-zero, such asthe word IF. In that case there will beno difference. If old code uses comparisonsin conjunction with arithmeticoperations, then some change will berequired to work under the new standard.The simplest change is to followthe comparison with a negationoperator. The new default value for“true” should be somewhat more usefulthan the old value. A related sidebenefit is that the word NOT is nowavailable to mean “take the one’scomplement,” whereas previously itwas synonymous with o=. In mostcases it is compatible with previoususage.Historically, division in Forth hasvaried from system to system. Accordingto Charles Moore, if a machine hada hardware divide, then its characteristicsdetermined the division result. Ifdivision had to be done in software aswith, say, the 8080, then floored divisionwas usually chosen. However, onlypositive denominators weregenerally considered. In some cases Itook signed arguments and /MOD tookunsigned arguments. In Forth-83, theresult of the 1 operation is the mathematicalfloor of the real numberquotient. Alternatively, one may saythat the quotient is more useful thanthe 79-Standard version. For example,one can readily perform an arithmeticright shift by dividing by an appropriatepower of two. Inhexadecimal arithmetic,8712 100 /MODwill yield a quotient of FF87 and amodulus of 12, so that the originalnumber is readily split into 8-bit components.Under 79-Standard, theoperation would yield FF88 with aremainder of FF12. A nice result is thatnow the right-shift operator 2/ is identicalto 2 1. In my opinion, the enhancedutility of the Forth-83 quotient andmodulus function outweighs the disadvantagethat some older code may needto be somewhat modified when negativearguments are employed.In many cases, previous ambiguitieshave been resolved or clarified. Thereis at least one word, 1, which isambiguous in certain rare cases. It isimportant to realize that the newstandard has not changed the meaningof this word from previous standards.The problem arises from alternative(Continued on page 30)FORTH Dimensions 26Volume V, No. 3


Forth183: A MinorityGlenn S. TenneyBelmont, CaliforniaHaving participated as a member ofthe Forth Standards Team (FST) and asa referee of the 83-Standard, I amstrongly in favor of a new Forth Standard.Despite the many weeks Idevoted to this, my professional consciencedid not allow me to vote to acceptthe 83-Standard. For thesereasons, I was asked to document myconcerns as well as those of others. Asyou read this, please remember thatmany of the following are the concernsof others and do not necessarily representmy own views.The Forth 83-Standard has recentlybeen accepted and is now beingpublished. Many people have been expressingvarying degrees of concernover this new standard. After discardinga certain amount of gripes, theseconcerns fall into one of fourcategories: minor and non-technical;incompatibilities to the prior standardor existing systems; specific technicalpoints; and general philosophicalpoints. This is an overview of some ofthose concerns.The new standard is almost completelyreworded. This was done tomake it more readable, yet thisgenerated some fairly minor concerns,the most obvious being the process oflocating underlying technical aspectsthat were actually changed. In fact, thenew wording actually changed thepublished version of the standard SOthat BASE and D< reflect a technicalchange from the 79-Standard.The new standard is incompatiblewith prior systems partly because thefunction of many words changed yetthe word names remained the same.These functional changes range fromobscure to obvious. This shows itself inthe following ways:PICK and ROLL were changed, withno strong technical reason, from 1origin to 0 origin, totally invalidatingprior source code.Many changes were made, albeit forvalid technical reasons, which are notalways incompatible. These are themost dangerous, since when the incompatibilitycrops up it is often buried insidea previously functional definition.The following changes affect manystandard words:* The true flag (-1) returned fromstandard words provides some extrapower, but can be incompatible ifthe flag is used in calculations.* Division is now floored towardsnegative infinity rather thantowards zero.83-Standard does not have statesmartrequired words. This seems tohave grown from the problems usingVer. 2 For your APPLE II/II+The complete professional software system, that meetsALL provisions of the FORTH-79 Standard (adopted Oct.1980). Compare the many advanced features of FORTH-79 with the FORTH you are now using, or plan to buy!FEATURES OURS OTHERS79~Standard system gives source portability.Professionally written tutorial & user manualScreen editor with userdefinable controls.Macro-assembler with local labelsVirtual memory.Both 13 & 16-sector format.Multiple disk drives.Double-number Standard & String extensions.Upperilower case keyboard inputLO-Res graphics.80 column display capabilityZ-80 CP/M Ver. 2.x & Northstar also availableAffordable1Low cost enhancement optionHi-Res turtle-graphics.Float I ng-point mat hematicsPowerful package with own manual,50 functions in all.AM951 1 compatlble.YES 200 PG. YES YES YES YES YES YES -YES ___YES YES YES -$9995 -YES -YES -FORTH-79 V 2 (requires 48K & 1 disk drive)ENHANCEMENT PACKAGE FOR V 2$ 9995Floating point & Hi-Res turtle-graphics$ 4995COMB INATION PACKAGE(CA res. add 6% tax COD accepted)$139 95MicroMotion j,- - . - . - . .12077 Wilshire Blvd # 506LA , CA 90025 (213) 8214340Specify APPLE. CP/M or NorthstarDealer inquiries invited. ~-Version 2 For 2-80, CP/M (1.4 & 2.x),& Northstar DOS UsersThe complete professional software system, that meetsALL provisions of the FORTH-79 Standard (adopted Oct.1980). Compare the many advanced features of FORTH-79 with the FORTH you are now using, or plan to buy!FEATURES OURS OTHERS79-Standard system gives source portability. YES Professionally written tutorial & user manual. 200 PG. Screen editor with userdefinable controls. YES Macro-assembler with local labels. YES Virtual memory. YES BDOS. BlOS & console control functions (CP/M). YES -FORTH screen files use standard residentfile format. YES Double-number Standard & String extensions. YES Upper/lower case keyboard input. YES APPLE I I /I I+ version also available. YES -Affordable! $99.95 -Low cost enhancement options,Floating-point mathematics YES -Tutorial reference manual50 functions (AM951 1 compatible format)Hi-Res turtle-graphics (Nostar Adv. only) YES -FORTH-79 V.2 (requires CP/M Ver. 2.x). $99.95ENHANCEMENT PACKAGE FOR V.2:Floating point $ 49.95COMBINATION PACKAGE (Base & Floating point) $139.95(advantage users add $49.95 for Hi-Res)(CA. res. add 6% tax; COD &dealer inauiries welcome)MicroMotion12077 Wilshire Blvd # 506LA , CA 90025 (213) 821-4340Specify APPLE, CP/M or NorthstarDealer inquiries invitedVolume V, No 3 27


polyFORTH IIThe Operating System andProgramming Languagedesigned especially forREAL-TI M ERoboticsInstrumentationProcess ControlGraphics... and many more.polyFORTH II has the high-performancefeatures you need toslash development time by months:POWERAll the programming tools youneed - multiprogrammed OS,FORTH compiler and assembler,editor, over 400 primitives and debuggingaids - resident and readyto use.SPEED3-5 times faster than Pascal, 20times faster than Basic, with a residentassembler for time-criticalfunctions.MULTITASKINGIMULTI-USERSupports any number of tasks.Even the smallest systems mayhave two or more programmerscoding and testing interactively.COMPACT CODEEntire development system residentin under 12K. ROMable applicationscan run under 1K. Largeapplications up to 10 times smallerthan with other techniques.SUPPORTOn-line interactive documentation,over a thousand pages of manuals,FORTH Programming Courses,and the FORTH, Inc. Hot Line plusContract Programming and ConsultingServices.Available for most popular minisand micros. From FORTH, Inc., theinventors of FORTH, serving professionalFORTH programmers forten years.FORTH, Inc.2309 Pacific Coast Hwy.Hermosa BeachCA 90254(213) 372-8493TWX 91 0-344-6408(FORTH INC HMBH)'(tick). In 79-Standard, FIND wasn't ofmuch use so most people used thestate-smart '(tick). This led toproblems, since some state-smartwords must be used cautiously whencompiled within a colon definition.The solution adopted was to make allwords state-dumb and to add words tohandle some of the lost functions. FINDwas later made useful, yet state-dumbwords remain.A side effect of the state-dumb"sweep" is that some words were madestatedumb that would have been betterleft state-smart regardless of the'(tick) decision. For example, there isno reason why ABORT" should be statedumb.The system-dependent functionsassociated with ABORT onlyappear within ABORT". ABOFrl" couldhave been of great use outside of acolon definition, yet that has now beenprecluded.Some current systems use monoaddressing(e.g.CFA or PFA), yet thestandard now dictates dual-addressing(e.g.CFA and PFA). This tradeofffavors an easier implementation andwas the subject of many hours of discussion.Some of the original dissentorsstill believe that a monoaddressingsystem is easier to use.Disk (mass storage) I/O has beenchanged to disallow altering the datawithin a block buffer unless UPDATE isalso used. Even if EMPTY-BUFFERS(which is no longer a required word)were used, the alterations might still bewritten to disk. Combined with themulti-tasking implications, BUFFER canno longer be used for a temporaryscratch or data collection area. Althoughthis codifies good programmingpractice, there are valid reasonswhy the standard should not be sorestrictive.A minor but grating problem is thatthe FST itself is always trying to allowa wide variety of actual or possible implementations.This has caused someproblems and ambiguities within thestandard. This is more an underlyingpolitical problem than a technical one,but the results affect the standard technically:The ] (right-bracket) definition isambiguous. Different systems are im-plemented such that the same supposedlytransportable standardprogram produces different results onthe different systems.Vocabularies have always been aproblem. The standard attempts toresolve this issue, but actually leavessome gaping holes. Because search ordersare not definitively stated, a standardprogram will have some difficultyusing vocabularies and search orders.Consumers will have great difficultydetermining if a system is actuallyForth-83. Although this has alwaysbeen a problem, it will be worse thistime because 79-Standard systemshave been marketed. Implementorswill have difficulty determining orchoosing to make some of the subtlechanges from 79-Standard.The standard should codify existingpractice. Instead, new concepts havebeen accepted without a complete testbedexisting with which to gainexperience. In most cases, these newconcepts are going to be provencorrect, but what about the ones thataren't? Where will we be in four or fiveyears if next month we find that one ofthese insufficiently tested conceptscauses a problem?It is difficult to judge the impact ofsome of these technical or philosophicalconcerns. Time and experience willtell whether the decisions made forForth-83 were correct. Although it isdifficult, we must temper our frenzyfor having a new standard with a strivingfor reasonable perfection of thestandard.FORTH Dimensions 28 Volume V, No. 3


Letters (Continued from page 4)8080 ConditionsDear FIG:John Cassaday left conditional callsout of his 8080 assembler, which hepublished in Forth Dimensions (Vol.111, No. 6). I have written a single wordthat adds all the 8080 conditional callsto his assembler:: IFCALL SP@ OD TOGGLE C, , ;The stack for proper use is:c call-addr > < conditional > ---Where c conditional > is any one ofJohn’s words 0 = , CS, PE, or O P :‘:.I? ELSE Rl:. 2t >R THEN iCASE CREATE I CfiMPILE SET-RETUKN HERE 0 v DOES:. :::.H iEXECUTES COMPILE IFJUMP FIND 2t 9ENDCASE COMPILE DROP HERE swap !i IMMEDIATECOMPILE EXIT CCOMPILEI C i IMMEDIATEALL WORDS ARE 79-STANDARD, FIND RETURNS .THE CFA OF THE NEXWORD IN THE INPUT STREAM, )9CR # c0 ( CASE EXAMPLE )1 : PRINT-1 .’ ONE ’ i2 : PRINT-2 .’ TWO ’ i:3 : PRINT-3 +’ THREE ’ i45 CASE TEST6 1 EXECIJTES PRINT-17 2 EXECUTES PRINT-213 3 EXECIJTES PRINT-:39 END CASEaB ( 1 TEST ONE OKC 2 TEST TWO OKI:l 3 TEST THREE OKE 4 TEST OK )FCASE StatementVolume V, No. 3 29FORTH Dimensions


~~ ~Forth Family FoiledDear Editor,First, I heartily endorse your screenCRC words (Forth Dimensions, Vol.IV, No. 3).Second, I am looking for a niceForth for Apple III CP/M. I am awareof several systems for Apple 11, butthese require emulation mode, and thishampers operations significantly. Thehard disk cannot be accessed with themand time is wasted loading theemulator.Yesterday I told my two brothers-inlaw,who already own Apple IUs withCP/M cards, “NO problem, there arelots of good Forths out there.” Today Ispent an hour on the phone callingForth vendors and struck out. Isanyone out there catering to deluxeApple III owners? They want a completeForth system with full sourcecode, some meta compiler, a screeneditor, maybe strings and floatingpoint, and perhaps some brief customizingdocumentation.Love Forth,Gary Nemeth2727 Hampton Rd.Rocky River, OH 44116ENCLOSE Encountersof the Second KindDear Editor:Reference ENCLOSE Encounters, inthe Technotes section of Vol. V, No. 1.A line of code near the bottom of pagethirty-four was omitted. It should haveread,HEX FIRST 2+ 400 BLANKS(blanks a block buffer)FlFS12 + BL ENCLOSEThank you again for publishing thenote.Sincerely yours,Nicholas L. Pappas, Ph.D.1201 Bryant St.Palo Alto, CA 94301(Continued from page 26)techniques for compiling, and mayoccur when ] is compiled into adefinition. This subject will certainlybe a topic of discussion for the nextmeeting of the Forth Standards Team.Again, the definition of ] has notchanged, and therefore should not be areason to reject the new standard.By adopting the new standard, theForth Standards Team accepts Forth-83as the current official FST standard,superceding all prior standards. It isimportant that we have a standard forwriting transportable application code,as a basis for writing books anddocuments, and for teaching - andcommunication.Companies such as IBM, Atari, Varian, Hewlett Packard, FORTH Fundamentals$395.00Dysan and Memorex are now using FORTH for a number Advanced Systems & ~~~l~ $495.00of applications. If you are concerned about efficiency andtransportability, then FORTH is a language YOU should (For further information, please send for our completelearn.FORTH workshop catalogue).nJoin the FORTH Revolution!0 Intensive 5-day workshopsInner Access Corporation0 Small classesP.O. Box 888, Belmont, CA 940020 Experienced professionals(415) 591 -82950 On-site classes by special arrangementFORTH Dimensions 30 Volume V, No. 3


~~~~~Techniques TutorialMeta Compiling IllHenry LaxenBerkeley, CaliforniaLast time we talked about how toimplement CODE words in the metacompiler, and saw how such wordsmust operate in order to make meta :definitions work. We also saw how todefine a symbol table for thedefinitions that are created duringmeta compilation by using the existingvocabulary structure. We also lookedat how to create headers in the targetaddress space. If any of these conceptsare unfamiliar to you, I suggest youreread the previous two articles in thisseries, which discuss them in detail.I would now like to talk about a fewof the subtle issue that come up duringmeta compilation that must be handledby some means or another. Some ofthe subtle issues are how to handle forwardreferences, and how immediatewords such as .I are handled. Othersimilar issues arise, but we must leavesome questions unanswered so that thereader can experience the joy of discovery.The issue of forward referencesduring meta compiling has, for someunknown reason, become almost areligious issue. The regular Forth interpretertreats forward references as anerror condition, which has its pros andcons. Fortunately, it is almost alwayspossible to write your Forth applicationin such a way that you can avoidforward references, hence one branchof the religion considers the problemsolved, namely, don’t use forwardreferences. Unfortunately, in the metacompiling process, forward referencesare unavoidable, and we must developa technique to handle them. Before Idiscuss a few solutions, I would like topresent my view of the forwardreference issue. The use of forwardreferences is not sinful, immoral, illegal,or fattening. It should be discouragedbut not banned. The problemthat arises with forward references isthat you can get yourself into bigtrouble. It destroys the bottom-up natureof Forth, and can cause you to retestpreviously working words becausethey make use of a forward referencewhich has changed. It also decreasesthe usefulness of program listings, ifyou are never sure of which way to turnthe pages when you encounter an unfamiliarword.Forward references also complicatethe compiler, since it now must handleanother class of objects (other thanpreviously defined words and numbers).Most threatening, however, isthat if forward references are abused,you can wind up with totally undecipherablespaghetti code. Just lookat almost any Fortran program largerthan 100 lines and written by aphysicist, and you will see what Imean. The case for forward referencesis that sometimes you must have them.For example, if you are using recursion,and word A calls word B whichcalls word A, I am afraid a forwardreference is somewhat unavoidable; ifrecursion is the natural solution toyour problem, it would be silly not touse it. Also, error conditions are oftenmore easily handled if forward referencesare allowed. You will often want afatal error, which could occur at a relativelylow level in your program, tocall, say, the main menu routine, whichobviously occurs at a very high level.That is the case in Forth, where ABORT,which is used at a very low level, callsthe Forth interpreter, which is definedat a very high level.Enough religion, let’s take a look atsome techniques for handling forwardreferences during meta compilation.The simplest method to implement(and the hardest to control) is to simplyuse a place-holding word, and thenpatch it later when the resolving forwardreference word is defined. Normallythis word is called GAP( and itbehaves like a comment, skipping thefollowing text until the next 1 and simplycompiling a zero into the target image.The intervening text is usually thename of the word which will later bepatched into this location. The problemwith this approach is that you haveto index some number of bytes,depending on the location of the gap,into the word that was defined, andpatch it with another value. This approachis very inflexible and errorprone, since if you ever change thedefinition in which the gap occurs, youmust also change the place where it getspatched in a corresponding manner.There is no intelligence required, justconscientious effort, somethinghumans are not well equipped for.Another approach is to explicitlydeclare a forward reference before ittakes place, and then resolve it somehowlater when its target address isknown. This is the Pascal approach,and is a pretty good compromise. Atleast you no longer have to count bytesinto a word and hot patch it later. Youcan simply name the forward referencedword and define a mechanism thatresolves it. This approach also allowsyou to have multiple forward referencesby linking them into a chain, andresolving the entire chain once the targetaddress is known.Finally, the last approach I will mentionis that of handling forwardreferences on the fly. I do not mean toimply that there are only three ways ofdoing this; there are many more, butthree is enough for now. In order tohandle forward references on the fly,we must modify the meta compiler’scompiler. Instead of issuing an errormessage when an undefined word turnsout not to be a number, we must definethe word in question and remember thefact that it is a forward reference. Basically,all this entails is to change thecompile loop to decide upon one ofthree cases instead of only two. Caseone is that the word to be compiled alreadyexists, in which case we simplycompile it by executing it and letting itcompile itself. Case two is that theword is a number in the current base,in which case we compile the code fieldfor literal, followed by the value of theliteral. Case three is that the word to becompiled is not already defined and isVolume V, No. 3 31 FORTH Dimensions


not a number, hence it must be a forwardreference. In this case we mustcreate an entry for it in the symboltable of forward references, compile agap in the word currently beingdefined, and set up the run time of theforward reference to either link itselfinto a chain if it is not already resolved,or to compile itself if it is already resolved.Thus, forward references becomebasically transparent, except that theymust be resolved somehow. This resolutioncan either be automatic as theword is actually defined, or explicit,requiring you to issue commands thatwill cause the resolution. Personally, Iprefer the explicit method, since I amafraid of things happening behind myback, and it slightly discourages the useof forward references, which deep inmy heart I know is right.Enough about forward references,let’s talk for a moment about immediatewords. Immediate wordspresent a special problem since theymust be executed at compile time. Theymay do arbitrarily crazy things, andmust do them in the target environment.For example, 1’1 must look up thenext word in the input stream and compileits code field as literal. Another exampleis .- which must scan the inputuntil another is encountered, andthen compile the runtime address for(.“I which may not even be known yet,followed by the count-delimited stringthat was scanned. The usualmechanism used to implement immediatewords is through a new definingword called T: which behaves justlike Forth’s : except that the definitionit creates is placed in the targetvocabulary, or symbol table. As yourecall from last time, the main compilingloop looks up words in the symboltable and executes them. Words thatare defined by CODE and : are placed inthis symbol table, and when executedcompile themselves. By using T: we canplace words into this symbol table thatdo things other than compile themselves.For example .“ would have to firstcompile the run time for .” namely (.”,and then get the string and compile itinto the target image. This is totallydifferent behaviour from, say, themeta version of DUP, which simplycompiles a pointer to the code field ofDUP when it is executed. Thus, for eachimmediate word that passes throughthe meta compiling process, we mustdefine a special case compiling wordthat “does the right thing” in the metacontext.Now I must apologize for notproviding any code this time around.The problem is that all of the issues Idiscussed above are implemented in avery system-dependent manner; henceI would have to make a lot of assumptionsabout exactly how vocabularieswork and how different system detailsoperate. Rather than do that and providecode that would not run on anyexisting systems, I decided not to provideany code, but simply to discusssome of the remaining concepts involvedin meta compiling. The best way toreally learn about meta compilers is towrite one. Hopefully, I have providedyou with enough ammunition to attemptsuch an undertaking. Let me tellyou that if you do, you will raise yourlevel of Forth consciousness manyFORTH Vendors (Continued from page 39)InnoSys2150 Shattuck Ave.Berkeley, CA 94704415/843-8114Consultation & %ining OnlySee System Vendor Chartfor othersBartholomew, Alan2210 Wilshire Blvd. #289Santa Monica, CA 90403213/394-07%Boulton, Dave581 Oakridge Dr.Redwood City, CA 94062Brodie, Leo9720 Baden Ave.Chatsworth, CA 91311213/998-8302Eastgate Systems Inc.P.O. Box 1307Cambridge, MA 02238Girton, George1753 FranklinSanta Monica, CA 9040421 3/82%1074Go FORTH504 Lakemead WayRedwood City, CA 9406241513666124levels, and I think it is an exercise wellworth the effort.Next time I will talk about multitasking,an issue many have heardabout but few have seen. We will implementa very simple (and slow) highlevelmulti-tasker and discover itsprinciples of operation. Until then,good luck and may Forth be with you!Copyright 01983 by Henry Laxen. ANrights reserved. The author is ChiefSoftware Engineer for UniversalResearch, 150 North Hill Drive #lo,Brisbane, CA 94005, specializing in thedevelopment of portable computers.Harris, Kim R.Redding Co.Forthright Enterprises P.O. Box 498P.O. Box 50911Georgetown, CT 06829Palo Alto, CA 94303 203/938-9381415/858-0933Schleisiek, KlausIntersystems Management Eppendorfer Landstr. 16Computer Consultancy D uw)o Hamburg 20Story Hill Rd. RFD3West GermanyDunbarton, NH 03045 (040)480 8154603/174-7762Schrenk, Dr. WalterLaxen, Henry H. Postfach 9041259 Cornell Ave. 7500 Karlstruhe-41Berkeley, CA 94706West Germany415/525-8582 Software EngineeringMcIntosh, Norman2908 California Ave., #36308 Troost Ave. #210Kansas City, MO 64131San Francisco, CA 94115816/363-1024415/563-1246SoftweaverMetalogic Corp. P.O. Box 72004325 Miraleste Dr.Santa Cruz, CA 95061Rancho Pales Verdes, CA 90274 408/425-8700213/5 19-1013 Technology Management, Inc.Peschke, Manfred1520 S. Lyon St.Intersystems Mgmt. & Consult. Santa ha, CA 92705Story Hill Rd. RFD 3 714/835-9512Dunbarton NH 03045Timin, Mitchel603/114-1162 3050 Rue d’Orlean #307Petri, Martin B. San Diego, CA 92110Computer Consultants 619/222-418516005 Sherman WaySuite 104Van Nuys, CA 91406213/908-0160FORTH Dimensions 32Volume V. No. 3


~~quality and reliability, contact your nearestI GmpuPro @I&mpUPlQ, A 6oDBO~rCOMPANV3506 Breakwater Ct., Hayward, CA 94545Volume V, No. 3 33 FORTH Dimensions


FIG Chapter NewsJohn D. HallOakland, CaliforniaWe now have forty-four chapters! Thesix new chapters are:Rockwell FIG ChapterHoffman Estates, IllinoisWichita FIG Chapter (FIGPAC)Wichita, KansasKansas City FIG ChapterKansas City, MissouriColombia FIG ChapterBogota, ColombiaForth Interest Group - U.K.London, EnglandTaiwan FIG ChapterTaipei, TaiwanOrange County ChapterAt the June 22 meeting, Dr. DavidE. Winkel of the University of Wyomingdrew a full house. He spokeprimarily about computer processordevelopment and bit-slice design. Healso introduced a bit-slice developmentsystem which he developed. There wasa short discussion about an HP-75Forth which one member is developing.Wil Baden went through the fundamentalsof conditionals at the July 6meeting. Near the end of the meeting,Wil introduced non-compiling conditionalswhich allow one to occasionallycompile. Also, Greg Stevenson developeda compiling buffer approach forconditionals. Bob Watersdemonstrated Forth on a Timex-Sinclair, as advertised in Forth Dimensions.The Forth was direct compiling,multi-tasking, and had windowingcapability.On July 27, Wil Baden presented theONLY ALSO vocabulary concepts of WilliamF. Ragsdale. Many were alreadyusing the concept and were pleasedwith its performance. Wil added someNews from the FIG Chapter of TaiwanFORTH Dimensions 34Volume V, No. 3


words that increased its performance.Zane Thomas is implementing amodem system for the Orange CountyChapter to transfer screens. BobSnook presented a short discussion onalternatives to CASE statements.William Vock, who was visiting GregStevenson and collaborating with himon the development of software for theEpson QX-10 computer, presented agraphics package on August 3. Itsperformance was impressive. Mr. Vockis a graphics expert and knows thesubject very well: he had done it with8K of Forth.Rochester ChapterThe Rochester (New York) FIGChapter had its second meeting onJune 25 at the University of Rochester.The group looked at the new83-Standard draft, and Larry Forsleyrepeated the talk Bob Smith gave at theRochester Conference on the specificdifferences between Forth-79 and83-Standard. There was muchdiscussion of the implications forROMmed systems of the new monoaddressingrules. Specifical, doesBODY> reference an address in RAMor ROM? It was suggested that copiesof Bob’s slides accompany distributedcopies of the new standard.Nova Scotia ChapterThe Nova Scotia Chapter held theirfirst meeting on June 29. The grouptook a survey at this meeting andfound (as in most chapters) that themembers had a wide range of experiencewith Forth. Some people hadno Forth experience at all, while othershad written meta-compilers. Theydecided, for purposes of code exchange,that they would use79-Standard. People were“volunteered” (a common Forthpractice) to look into transferringscreens to dissimilar computers andinto collecting a list of all Forthinformation owned by various membersin order to generate a master list.Graphics standards were also discussedand, as with any standards discussion,grew heated. As the bell rang, each sidewent to their respective corners. Wewill hear more about this in the future!Dayton ChapterAt the June 25 meeting, Dr. LeonardSpialter gave a slide show of theRochester conference. On July 12, thegroup decided to have a Forth tutorialand Dr. Spialter presented a flow chartfor a “Day of the Week” program.The group spent the rest of the meetingprogramming it in Forth. Gary Grangergave a talk about Forth to theColumbus Ohio Heath Users Group onJuly 11, and a Forth talk and demo tothe Timex-Sinclair Users group on July19.Kansas City ChapterThe first two meetings of the KansasCity Chapter had twenty to twenty-fiveChapters in FormationHere are more of the new chaptersthat are forming. If you live in any ofthese areas, contact one of these peopleand offer your support in forming aFIG chapter.Contact:Michael Perry1446 Stannage Ave.Berkeley, CA 94702Dick Turpin3109 Breton Ave.Davis, CA 95616Samuel J. Cook115 N. Washington Ave.Batavia, IL 60510Dr. Edward Newberger2739 Elmwood Ave., Apt. 3Kenmore, NY 14217David Whitely1163 West 550 NorthClearfield, UT 84015Arnold Pinchuk2130 Menasha Ave.Manitowoc, WI 54220T. William RudolphFIG-GRAPH East592 Plymouth St.Halifax, MA 02338Tony Van MuydenP.O. Box 7396Edmonton, AlbertaTSE 6C8 CanadaJack HungComx World Operations15/F Wo Kee Hong Bldg.585-609 Castle Peak Rd.Kwai Chung, N.T.Hong Kongattendees. The first meeting was spentgetting acquainted and discoveringwho was doing what with Forth. At thesecond meeting, the group generated alist of topics of special interest forgroups or programs. The highest itemson the list were: programorganization/coding style, graphics,data-base applications, and targetcompilers.Support your local chapter!John D. Hall is the Chapter Coordinatorfor the Forth Interest Groupand is a consulting programmer.Ravizza DonatoSonnenbergstr. 34AUster 8610SwitzerlandGreg Stevenson8002 Poinsettia PlaceBuena Park, CA 90620Glen Bowie25746 North Player Dr., #Q-1Valencia, CA 91355Marc PerkelPerkel Software Systems1452 N. ClaySpringfield, MO 65802(417) 862-9830H. Marcus Bacon704-1H E.I. DuPontSavannah River PlantAiken, SC 29808Richard BlochEastern VA Center for MH StudiesDrawer AWilliamsburg, VA 23187Wes ThomasJupiter Ace SICFrank Barth, Inc.500-5th Ave.New York, NY 101 10Scott MilesRoboticsChristensen Diamond Products2532 South 3270 WestSalt Lake City, UT 84119Erick OstergaardCOMPEX2 Gertsvej2300 Copenhagen S.DenmarkMarc (Tamir) WeinerMoshav Neve IlanD.N. Harei Yehuda 90850IsraelVolume V, No. 3 35FORTH Dimensions


New Product AnnouncementsForth Dimensions welcomes pressreleases and product announcements,as well as reader letters regarding productperformance. Addresses of thedistributors and manufacturers mentionedin this column may be found inthe Vendors List section.The latest Forth news from LittleRock is that Hawg Wild Software offersthe XFORTH XCHANGE tooriginal users of the XFORTHForth-79 product. Questions, ideasand implementations should be sent tothat company, who says their newestservice will be “free and unrestricted.”Atari owners will be interested inPower Forth (for the 800/800XL, and1200XL) from Elcomp Publishing. It isan extended FIG-Forth with editor and110 routines. The utilities package includesdecompiler, sector copy, Atarifilehandling, graphics and sound, joystickprogram and player missile. The$39.95 price also covers two gamedemos and a mailing list application.Floating point with trig is an added$29.95, and the beginners’ subset“Learn Forth” (requires 32K for diskor 16K for tape version) costs $19.95.“UNIX-like word processing inForth” is the claim made for Forth-ms.The licensed source code runs on AppleI1 computers using Epson printers withGraphtrax Plus, but can be configuredby the user for other printers. Printspooling allows “simultaneous” use ofprinter and keyboard, and Greek lettersand other symbols are available bytyping a command followed by thename of the desired letter or symbol.The price (in single quantity) is $200from Innovatia Laboratories.The TDS900 is a single-board Forthcomputer with on-board screen editor,compiler and debug facilities. It usesFIG-Forth and provides simple interfaceto serial and parallel devices. Allthe user needs is a power supply, CRTand $395. If more than 12K RAM and8K ROM is needed, up to 160K is availablein increments of 20K per extraboard. The computer and RAM boardsuse CMOS throughout, in single-Eurocard format. Information is availablefrom Stynetic Systems, Inc. in theU.S. and from %angle Digital Services,Ltd. in the U.K.Forth classes will demonstrate howForth can be used as an algorithmdevelopment tool and as a total programmingenvironment. Problem solvingwill be emphasized by instructorLeo Brodie, author of Starting Forth.Students will apply design andproblem-solving techniques in thedesign and coding of actual problems.East coast classes are planned forNovember, and the Los Angeles areawill be covered in January.“Any desired data file format’’ canbenefit from INDEX+. By using itsB-nee ISAM utilities, Forth programmerscan create and maintain keyedindexes in order to perform searchesrandomly, or sequentially in eitherdirection. The program supportsBLOCK disk I/O and the CP/M andMS-DOS interface by Laboratory Microsystems.Retail orders (the price is$125) should be sent to LaboratoryMicrosystems, for whose Forth systemsINDEX+ is written; others shouldcontact Business Computing Press.Sylmar Software now offers FIG-Forth for the Otrona Attache. Thetwo-disk set costs $50 and includes afull-screen editor and various utilities.A Towers of Hanoi versiondemonstrates the Attache’s directcursor operations. The user shouldobtain the FIG-Forth InstallationManual, which provides definitions forthe Forth words.Fig ChaptersU.S.ARIZONAPhoenix ChapterCall Dennis L. Wilson602/956-7678CALIFORNIALos Angeles ChapterMonthly, 4th Sat., 11 a.m.Allstate Savings8800 So. Sepulveda BoulevardLos AngelesCall Phillip Wasson213/649-1428Northern California ChapterMonthly, 4th Sat., 1 p.m.FORML Workshop at 10 a.mpalo Alto area.Contact FIG Hotline415/%2-8653Orange County ChapterMonthly, 4th Wed., 7 p.m.Fullerton SavingsTalbert & BrookhurstFountain ValleyMonthly, 1st Wed., 7 p.m.Mercury SavingsBeach Blvd. & EddingtonHuntington BeachCall Noshir Jesung7 14/842-3032San Diego ChapterWeekly, Thurs., 12 noon.Call Guy Kelly619/268-3100 ext. 4784COLORADODenver ChapterMonthly, 1st Mon., 7 p.m.Call Steven Sarns303/477-5955ILLINOISRockwell Chicago ChapterCall Gerard Kusiolek312/885-8092KANSASWichita Chapter (FIGPAC)Monthly, 3rd Wed., 7 p.m.Wilber E. Walker Co.532 S. MarketWichita, KSCall Arne Flones316/267-8852MASSACHUSElTSBoston ChapterMonthly, 1st Wed., 5 p.m.Mitre Corp. CafeteriaBedford, MACall Bob Demrow617/688-5661 after 7 p.m.MICHIGANDetroit ChapterCall Dean Vieau313/493-5105MINNESOTAMNFIG ChapterMonthly, 1st Mon.1156 Lincoln AvenueSt. Paul, MNCall Fred Olson612/588-9532FORTH Dimensions 36 Volume V, No. 3


~~~ ~ ~ ~~~MISSOURIKansas City ChapterCall Terry Rayburn816/363- 1024St. Louis ChapterMonthly, 3rd 'he., 7 p.m.Thornhill Branch ofSt. Louis County LibraryCall David Douda3 14/867-4482NEVADASouthern Nevada ChapterSuite 900101 Convention Center DriveLa Vegas, NVCall Gerald Hasty702/453-3544NEW JERSEYNew Jersey ChapterCall George Lyons20 1 /45 1-2905 eves.NEW YORKNew York ChapterMonthly, 2nd Wed., 8 p.m.Queens CollegeCall Tom Jung212/432-1414 ext. 157 days21 2/26 1-32 13 eves.Rochester ChapterMonthly, 4th Sat., 2 p.m.Hutchison HallUniv. of RochesterCall Thea Martin716/235-0168Syracuse ChapterCall C. Richard Corner315/456-7436OHIOAthens ChapterCall Isreal Urieli614/594-3731Dayton ChapterTivice monthly, 2nd 'hes &4th Wed., 6:30 p.m.CFC, 11 W. Monument Ave.Suite 612Dayton, OHCall Gary M. Granger5 13/849-1483OKLAHOMATulsa ChapterMonthly, 3rd Tbes., 7:30 p.m.The Computer Store4343 South PeoriaUsa, OKCall Art Gorski918/743-0113OREGONGreater Oregon ChapterMonthly, 2nd Sat., 1 p.m.Computer & Things3460 SW 185th, AlohaCall Timothy Huang503/289-9135TEXASDallas/Ft. WorthMetroplex ChapterMonthly, 4th Thurs., 7 p.m.Software Automation, Inc.14333 Porton, DallasCall Marvin Elder214/392-2802 orBill Drissel214/264-9680San Antonio ChapterT.L. Schneider8546 Broadway, Suite 207San Antonio, TX 78217VERMONTVermont Fig ChapterMonthly, 4th Thurs., 7:30 p.m.The Isley Library, 3rd fl.3rd Floor Meeting RoomMiddleburynes, VTCall Hal Clark802/877-2911 days802/452-4442 evesVIRGINIAPotomac ChapterMonthly, 1st 'hes., 7 p.m.Lee CenterLee Highway at Lexington St.Arlington, VACall Joel Shprentz703/437-9218 eves.FOREIGNAUSTRALIAAustralia Fig ChapterContact: Ritchie Laird25 Gibsons RoadSale, Victoria 385005 1/44-3445FIG Australia ChapterContact: Lance Collins65 Martin RoadGlen Ins, Victoria 314603/29-2600Sydney ChapterMonthly, 2nd Fri., 7 p.m.Morven Brown Bldg., Rm LG16Univ. of New South WalesSydneyContact: Peter Pegeagle10 Binda Rd., Yowie Bay02/524-7490BELGIUMBelgium ChapterContact: Luk Van LoockLariksdreff 20B2120 Schoten03/658-6343CANADANova Scotia ChapterContact: Howard HarawitzP.O. Box 688Wolfville, Nova Scotia BOP 1x09O2/542-78 12Southern Ontario ChapterMonthly, 1st Sat., 2 p.m.General Sciences Bldg, Rm 312McMaster UniversityContact: Dr. N. SolntseffUnit for Computer ScienceMcMaster UniversityHamilton, Ontario L8S 4K1416/525-9140 ext. 2065Quebec ChapterCall Gilles Paillard418/871-1960 or418/643-2561COLOMBIAColombia ChapterContact: Luis Javier Parra B.Aptdo. Aereo 100394Bogota214-0345ENGLANDForth Interest Group -- U.K.Monthly, 1st Thurs.,7 pm., Rm. 408Polytechnic of South BankBorough Rd., LondonContact: Keith Goldie-Morrison15 St. Albans MansionKensington Court PlaceLondon W8 5QHITALYFIG ItaliaContact: Marco TauselVia Gerolamo Forni 4820161 Milano02/645-8688NETHERLANDSHCC-FORTH InterestGroup ChapterF.J. MeijerDigicosAart V.D. Neerweg 31Ouderkerk A.D.Amstel, The NetherlandsSOUTH AFRICAContact: Edward MurrayForthwith ComputersP.O. Box 27175Sunnyside, Pretoria 0132SWITZERLANDContact: Max HugelshoferERN1 & Co. Elektro-IndustrieStationsstrasse8306 Bruttisellen01/833-3333TAIWANTaiwan ChapterContact: J.N. TsouForth Information TechnologyP.O. BOX 53-200Taipei02/331-1316WEST GERMANYWest German ChapterKlaus SchleisiekFIG DeutschlandPostfach 202264D 2000 Hamburg 20West GermanySPECIAL GROUPSApple Corps FORTHUsers Chapter?\Nice Monthl, , 1 st &3rd 'hes., 7:30 pm1515 Sloat Boulevard, #2San Francisco, CACall Robert Dudley Ackerman415/626-6295Baton Rouge Atari ChapterCall Chris Zielewski5O4/292- 1910FIGGRAPHCall Howard Pearlmutter408/425-8700MMSFORTH Users GroupsMonthly, 3rd Wed., 7 p.m.Cochituate, MADick Miller617/653-6136(25 groups worldwide)Volume V, No 3 37 FORTH Dimensions


FORTH System Vendors(by Category)(Codes refer to alphabetical listinge.g., A1 signifies AB Computers, etc.)Processors1802 . . . . . . . . . . . . . . . . . . . . . . C2, C3, F3, F6, L36502(AIM, KIM, SYM) . . . . . R1, R2, S26800 . .. . .... ..... ... ... . . . C3, F3, F5, K1, L3, M6, T16801 . . ..... .. . .. . ... ...... P46809 . . . . . . . . . . . . . . . .. . . . . . C3, F3, L3, M6, T168000 . ... . .... ... . ... ... .. C3, C5, D1, El, K168008 .. . . . . . . . . . . . . . .. . .. . P48080/85 . . . . . . . . . . . . . . . . . . . A5, C2, C3, F4, 15, L1, L3, M3,M6, R1, T3Z80/89 . .... .. . ... . .. . .. ... A3, A5, C3, F4, 13, L1, M2, M3,M5, N1, T3280000 . . . . . . . . . . . . . . . . . . . . I38086/88 . .. . . . . . . . . . . . .. . . . C3, F2, F3, Ll, L3, M69900 ...................... E4,L3Operating SystemsCP/M .. .... ... . .. . .. ... .. A3, AS, C3, F3, 13, L3, M1, M2,M6, T3CP/M-86 . . . . . . . . . . . . . . . . . . C3ComputersAlphaMicro ...,.......... P3, S4Apple .. ............ . .... . . A4, El, E2, F4, 12, 15, J1, U,M2, M6, M8,02, 03Atari ...................... El, E2, M6, P2, Q1, V1Compaq ... . .. ... . M5Cromemco . . ... .. .. . A5, M2, M6DEC PDP/LSI-11 . ... .. C3, F3, L2, S4Heath-89 . ..... ............ M2, M6, M7Hewlett-Packard 85 . . . Hewlett-Packard 9826/36 . . . C5IBMPC ................... A8, C3, M, L1, M5, M6, Q2, S8,w2IBMOther .. ......... . L3, W1Kaypro II/Xerox 820 .. .. M2Micropolis . .. . .. ..... A2, M2, S3North Star . . .... . 15, M2, P1, S11Nova . .... ... . .. .... C6OhioScientific .... . ... A6, B1, C4, 01, S7, T2Osborne ... .. .. . .... M2PetSWTPC . ........ . . ... Al, A6, B1, C3, 01, S7, T2, T5Poly Morphic Systems .. . A7TRSIOI, 11, and/or111 15, M2, M5, M6, S5, S6, S9TRS-80Color ..,, .. .. A3, A8, F5, M4, T1Vector Graphics ............ M2Other Products/ServicesApplications . . . . . . . . . . . . . . . P4Boards, Machine . . . . . . . . . . . M, M3, P4, W, S10Consultation .. . .. . . . . . . . . . . C3, C5, N1, P4, T3, W1CrossCompilers . . . . . . . . . . .. C3, F3, 13, M6, N1, P4Products, Various . . . . . . . . . . . A5, B2, C3, C7, F3, 14, 15,S8, S12, W2Training . . . . . . . . . . . . .. . . .. . C3, F3, 13, P4, W1FORTH Vendors (Alphabetical)The following vendors offer FORTH systems, applications, or consultation.FIG makes no judgment on any product, and takes noresponsibility for the accuracy of this list. We encourage readers toFORTH SystemsA1. AB Computers252 Bethlehem PikeColmar, PA 1891521 5422-77272. Acropolis17453 Via ValenciaSan Lorenzo, CA 94580415/276-60504. Applied Analytics Inc.8910 Brookridge Dr., #300Upper Marlboro, MD 208705. Aristotelian Logicians2631 E. Pinchot Ave.Phoenix, AZ 850167. Abstract Systems, etc.RFD Lower Prospect HillChester, MA 0101 18. Armadillo Int'l SoftwareP.O. Box 7661Austin, TX 787125 12/459-7325B1. Blue Sky Products729 E. WillowSignal Hill, CA 908062. Business Computing Press2210 Wilshire Blvd.Suite 289Santa Monica, CA 90403213/394-07%C1. Capstone Computing, Inc.5640 Southwyck Blvd., #2EToledo, OH 436144 19/866-55032. Chrapkiewicz, Thomas16175 StrickerEast Detroit, MI 480213. CMOSOFTP.O. Box 44037Sylmar, CA 91342keep us informed on availability of the products and services listed.Vendors may send additions and corrections to the Editor, and mustinclude a copy of sales literature or advertising.4. COMSOL, Ltd.Beway HouseHanworth LaneChertsey, SurreyEngland KT16 9LA5. Consumer Computers8907 La Mesa Blvd.La Mesa, CA 92041714/698-80886. Creative Solutions, Inc.4801 Randolph Rd.Rockville, MD 20852301/984-02627. Curry AssociatesP.O. Box 60324Palo Alto, CA 94306E1. Elcomp Publishing, Inc.53 Redrock LanePomona, CA 91766(714) 623-8314Telex 29 81 912. Elcomp-HofackerTegernseerstr. 18D-8150 HolzkirchenWest Germany08024/733 1Telex 52 69 733. Emperical Research GroupP.O. Box 1176Milton, WA 98354206/63 1-48554. Engineering Logic1252 13th Ave.Sacramento, CA 95822F1. Fantasia Systems, Inc.1059 The AlamedaBelmont, CA 94002415/593-57003. FORTH, Inc.2309 Pacific Coast HighwayHermosa Beach, CA 9025421 3/372-8493FORTH Dimensions 38 Volume V, No. 3


J 1 FORTH INTEREST GROUPMAIL ORDEROMembenhip in FORTH Intereat Group andVolume V of FORTH DIMENSIONS=Back Volumes of FORTH DIMENSIONS. Rica per eaeh.L7I on CIIU ONOfig-FORTH Installation Manual, containing the language modelof fig-FORTH, a complete glossary, memory map and installation instructionsOAss&ly Language Swrca Lbtin& of figiORTH for specific CPUsand machines. The above manual is required for installation.Check appropriate box(ea1. Ria per each.Oleo2 06502 06800 06809 OVAX 0280O8080 OM86/8088 09900 OAPPLE U OECLIPSEC~PACE JNOVA OPDP-11 a68000 OALPHA MICRO4 "Starting FORTH, by Brodie. BEST book on FORTH. (Paperback)n "Starting FORTH" by Brodie. (Hard Cover)PROCEEDINGS: FORML (FORTH Modification Conference)a 1980, $25USA/$35Foreign121981, Two Vol., $40USA/$55Foreign1982, $25USA/$35ForeignROCHESTER FORTH Conferencea 1981, $25USA/$35Foreign/-J 1982, $25USA/$35Foreign1983, $25USA/$35Foreign Tota-/ISTANDARD: a FORTH-79, FORTH-83. $15USAf$l8Foreign EACH. TotaKitt Peak Primer, by Stevens. An in-depth self-study book.,IMAGAZINES ABOUT FORTH: =BYTE Reprints 8180-4/81-rDr Dobb's Jrnl, -J 9/81, 129/82. ~ 9 1 8 3Poplar Computing, 9/83 $3.50USA/$SForeign w. Tot a13 FIG T-shirts: r 3 Small a Medium a Large X-Largen Poster, BYTE Cover 8/60, 16"x22"DFORTH Programmer's Reference Card. If ordered separately, senda stamped, self addressed envelope.TOTALFORRWUSA AIR$15 $27$15 $18$15 $18$15 $18$18$23$22$28$$25 $35$$10 $12$ 3 $ 5FreeNAMEMS /APTORGANIZATION PHONE ( )CITY STATE ZIP COUNTRYVISA#AMERICAN EXPRESS#MASTERCARD#Card Expiration DateWinimum of $15.00 on Charge Cards)Make check or money order in US Funds on US Bank, payable to: FIG. All prices includepostage. No purchase orders without check. California residents add sales tax. 10183-- FORTH INTEREST GROUP* PO BOX 110s * SAN CARLOS, CA 94070-2 Box 1102,5zr.t Carios. CA 94070EST GROUPAddress Correction Requested

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!