From: Tom Zimmer Subject: Re: F-PC Date: Thu, 02 Jan 1997 21:52:05 -0600 Message-ID: <32CC8265.5B88@ix.netcom.com> References: <32CC8059.12D6@worldchat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-NETCOM-Date: Thu Jan 02 7:54:03 PM PST 1997 X-Mailer: Mozilla 3.01 (Macintosh; I; PPC) Frank Faubert wrote: > > I'm new to Forth and have been trying to use F-PC because it seems to be > fairly well documented. The problem I'm running into right now is to get > the program to print text. > > I'm not compiling a program, just trying to figure out how to use this > program. I've tried using ." text" and I get at the end when I press > enter but the word text doesn't show up. I've also tried no space between > the quote and the beginning of the text (gets me a <- WHAT?), using just > the quote (no dot), using a single quote (') at one end and both ends all > with no luck. I'm not trying to create a Forth word just print the text I > want to the monitor (like the BASIC command print" text"). > > Any help would be appreciated. The book I'm getting the commands from is > " Beginning Forth" by Paul Chirlian. It seems to be a good book, but the > dot-quote command doesn't seem to work. F-PC follows the Forth83 standard. In the Forth83 standard, ." can only be used in a colon definition as follows; : foo ." Hello there" ; To display text at the console without creating a definition, you need to use the .( 'dot parenthesis' statment as follows; ..( Hello there) I hope this helps, Tom Zimmer From: "Skip Inskeep" Subject: Re: Win32Forth Serial Communications Date: 3 Jan 1997 07:59:45 GMT Message-ID: <01bbf94b$ae28e640$ceb193cf@iway.aimnet.com> References: <32BDA2E0.AFC@calweb.com> <851877538snz@mpeltd.demon.co.uk> <01bbf83a$cb3ec220$0db193cf@iway.aimnet.com> <5ahe76$3t6@news.IAEhv.nl> Marcel Hendrix wrote in article <5ahe76$3t6@news.IAEhv.nl>... | "Norman (Skip) Inskeep" writes | Re: Win32Forth Serial Communications | | | >> charley@calweb.com "Charles Shattuck" writes: | >> I'm running Win32Forth in Windows 3.1 and would like to communicate with | >> a microcontroller via a serial port. The example provided with the | >> system in the file WINSER.F sort of almost works. I get a windows error | >> #120 the first time I run COM1Init. No error the second time I run it | >> but skey just keeps returning zeroes. If I run the terminal program from | Charles, thanks to Marcel's input I was able to make the following changes. I included a word to display the DCB and changes to skey? and skey. This has not been debugged but should be fairly close provided the bit order is correct. Skip Inskeep 0 value DCB 0 CELL Field+ .DCBlength CELL Field+ .BaudRate CELL Field+ .fBinary \ multiple functions 2 Field+ .wReserved 2 Field+ .XonLim 2 Field+ .XoffLim 1 Field+ .ByteSize 1 Field+ .Parity 1 Field+ .StopBits 1 Field+ .XonChar 1 Field+ .XoffChar 1 Field+ .ErrorChar 1 Field+ .EofChar 1 Field+ .EvtChar 2 Field+ .wReserved1 CONSTANT DCBBYTES create DCBcomm2 DCBBYTES allot DCBcomm2 to DCB DCB DCBBYTES erase : .baud ( n -- ) case CBR_110 of ." 110" endof CBR_300 of ." 300" endof CBR_600 of ." 600" endof CBR_1200 of ." 1200" endof CBR_2400 of ." 2400" endof CBR_4800 of ." 4800" endof CBR_9600 of ." 9600" endof CBR_14400 of ." 14400" endof CBR_19200 of ." 19200" endof CBR_38400 of ." 38400" endof CBR_56000 of ." 56000" endof CBR_57600 of ." 57600" endof CBR_115200 of ." 115200" endof CBR_128000 of ." 128000" endof CBR_256000 of ." 256000" endof ." unknown" endcase ." baud " ; : displayDCB ( -- ) CR ." .DCBlength " DCB .DCBlength @ h. CR ." .BaudRate " DCB .BaudRate @ .baud CR ." .fBinary " DCB .fBinary @ $1 AND 0= IF ." non-" THEN ." binary mode" CR ." .fParity " DCB .fBinary @ $2 AND ." checking " IF ." enabled" ELSE ." disabled" THEN CR ." .fOutxCtsFlow " DCB .fBinary @ $4 AND IF ." monitor " ELSE ." ignore " THEN ." CTS" CR ." .fOutxDsrFlow " DCB .fBinary @ $8 AND IF ." monitor " ELSE ." ignore " THEN ." DSR" CR ." .fDtrControl " DCB .fBinary @ 4 RSHIFT 3 AND ." DTR control " case 0 of ." disable" endof 1 of ." enable" endof 2 of ." handshake" endof endcase CR ." .fDsrSensitivity " DCB .fBinary @ $40 AND 0= ." DSR will " IF ." not " THEN ." affect input stream" CR ." .fTXContinueOnXoff " DCB .fBinary @ $80 AND IF ." true" ELSE ." false" THEN CR ." .fOutX " DCB .fBinary @ $100 AND IF ." enable" ELSE ." disable" THEN ." XON/XOFF flow control for output" CR ." .fInx " DCB .fBinary @ $200 AND IF ." enable" ELSE ." disable" THEN ." XON/XOFF flow control for input" CR ." .fErrorChar " DCB .fBinary @ $400 AND 0= IF ." do not " THEN ." replace parity error char with ErrorChar" CR ." .fNull " DCB .fBinary @ $800 AND 0= IF ." do not " THEN ." discard null bytes" CR ." .fRtsControl " DCB .fBinary @ 12 RSHIFT 3 AND ." RTS control " case 0 of ." disable" endof 1 of ." enable" endof 2 of ." handshake" endof 3 of ." toggle" endof endcase CR ." .fAbortOnError " DCB .fBinary @ $4000 AND 0= ." on error, " IF ." do not " THEN ." suspend communications until cleared" \ CR ." .fDummy " DCB .fParity \ bits 15-31 CR ." .wReserved " DCB .wReserved w@ dup h. IF ." error S/B=0" THEN CR ." .XonLim " DCB .XonLim w@ h. CR ." .XoffLim " DCB .XoffLim w@ h. CR ." .ByteSize " DCB .ByteSize c@ h. CR ." .Parity " DCB .Parity c@ case EVENPARITY of ." even" endof MARKPARITY of ." mark" endof NOPARITY of ." no" endof ODDPARITY of ." odd" endof endcase ." parity" CR ." .StopBits " DCB .StopBits c@ case ONESTOPBIT of ." 1" endof ONE5STOPBITS of ." 1.5" endof TWOSTOPBITS of ." 2" endof ." unknown" endcase ." stop bits" CR ." .XonChar " DCB .XonChar c@ h. CR ." .XoffChar " DCB .XoffChar c@ h. CR ." .ErrorChar " DCB .ErrorChar c@ h. CR ." .EofChar " DCB .EofChar c@ h. CR ." .EvtChar " DCB .EvtChar c@ h. \ CR ." .wReserved1 " DCB .wReserved1 w@ h. ; 0 value SerialHndl 0 CELL Field+ .ReadIntervalTimeout CELL Field+ .ReadTotalTimeoutMultiplier CELL Field+ .ReadTotalTimeoutConstant CELL Field+ .WriteTotalTimeoutMultiplier CELL Field+ .WriteTotalTimeoutConstant CONSTANT COMMTIMEOUTSBYTES CREATE CT commtimeoutsbytes allot CT commtimeoutsbytes erase : SetTimeouts ( -- ) \ Initialize the communications timeouts \ set read timeouts to magic value of don't wait, just poll -1 CT .ReadIntervalTimeout ! 0 CT .ReadTotalTimeoutMultiplier ! 0 CT .ReadTotalTimeoutConstant ! 1 CT .WriteTotalTimeoutMultiplier ! 20 CT .WriteTotalTimeoutConstant ! CT rel>abs SerialHndl Call SetCommTimeouts drop ; 0 value comm-string : com1 z" COM1" to comm-string ; : com2 z" COM2" to comm-string ; : com3 z" COM3" to comm-string ; : com4 z" COM4" to comm-string ; com2 \ initialize to something : COMInit ( -- ) \ Initialize COM2 cr ." Initializing Serial Port to: " cr comm-string 4 type ." : baud=14400 parity=N data=8 stop=1" NULL \ no template 0 \ FILE_FLAG_OVERLAPPED \ open file attributes ???SDI OPEN_EXISTING \ creation distribution NULL \ no security attributes 0 \ exclusive access GENERIC_READ GENERIC_WRITE or \ desired access modes comm-string rel>abs \ filename Call CreateFile ?dup 0= Abort" Failed to open COM port!" to SerialHndl \ save the handle to the port \ Set the Communications state to the DCB we just created DCB rel>abs SerialHndl Call GetCommState ?win-error CBR_14400 \ CBR_1200 DCB .BaudRate ! 8 DCB .ByteSize C! NOPARITY DCB .Parity C! ONESTOPBIT DCB .StopBits C! DCB rel>abs SerialHndl Call SetCommState ?win-error SetTimeouts ; : ComClose ( -- ) \ close com port if its open SerialHndl ?dup if Call CloseHandle drop 0 to SerialHndl then ; variable skey-data \ temporary place to save last key pressed variable skey-flag : skey? ( -- c1 ) \ get a key from serial port, don't wait long skey-flag @ 0= if skey-data 1 SerialHndl read-file \ -- len flag abort" Failed to read serial port" \ -- len if true skey-flag ! then then skey-flag @ ; : skey ( -- c1 ) \ must return a key begin skey? \ loop till we get one until skey-data c@ \ return the key 0 skey-flag ! \ clear the flag ; From: wykoh@pado.krict.re.kr (Wonyong Koh) Subject: Re: Illegal? Undefined? or what ? Date: Sat, 04 Jan 1997 04:10:45 GMT Message-ID: <32cdd826.672996@news> References: Reply-To: wykoh@pado.krict.re.kr verec@micronet.fr (Jean-Francois Brouillet) wrote: >I recently came across the following word, which, when, executed, >failed miserabily, in every Forth implementation I tried : all of >MacForthPlus (not ANS), MPE's ProForth for Windows (mostly ANS), >Sod32 (ANS), PowerMacForth (ANS) compiled it without a complain, >but none of them were able to produce the intended result. > >: nCST ( nx .. n1 n0 u .. -- ) > 0 ?DO CREATE , DOES> @ LOOP ; My hForth catches this error exactly. : nCST ( nx .. n1 n0 u .. -- ) 0 ?DO CREATE , DOES> @ LOOP ; DOES> ? control structure mismatch You can find 8086 and Z80 hForth at www.taygeta.com. Wonyong Koh, Ph.D. wykoh@pado.krict.re.kr From: verec@micronet.fr (Jean-Francois Brouillet) Subject: Re: Illegal? Undefined? or what ? Date: Fri, 03 Jan 1997 13:39:58 +0100 Message-ID: References: <5aea7s$r2b@news.IAEhv.nl> In article <5aea7s$r2b@news.IAEhv.nl>, mhx@iaehv.IAEhv.nl (Marcel Hendrix) wrote: >[I wrote] : > [..] >> >> : nCST ( nx .. n1 n0 u .. -- ) >> 0 ?DO CREATE , DOES> @ LOOP ; > [..] >I'm mildly disappointed that none of the Forths tested complained about a >nesting error. I forgive SOD32 because of its design philosophy, but it >seems inexcusable for ProForth et al. What's so special about Sod32 ? Simon Read wrote: >Watch the stack order: 10 goes to Const5 20 goes to Const4 etc. > >It's the behaviour of DOES> . When it compiles, it puts something >not too straightforward in the definition of nCST . When nCST >executes, DOES> (among other things) exits from the current >definition, so the @ LOOP won't get executed then. The @ LOOP >gets executed when Const1 executes. This isn't what you want. > >The formula is ... DOES> @ (maybe other things) ; > >which takes the most-recently-created word (in this case, Const1 etc.) >and makes it perform @ (and maybe other things). >As Anton Ertl has already said, > > : does-con DOES> @ ; > >will work. The good point Anton and Simon had is that ANS explicitely states that DOES> expects a "colon-sys" an produces another, whereas in the original nCST definition the "colon-sys" was missing. As I said earlier, I'm not that interested in providing a n-way constant, but rather to find legal ANS definitions whith undefined semantics. since : xx CREATE , DOES> @ ; is a Forth "idiom", I just tried to use it in another context, and was intrigued that a) the compilers didn't choke on it, and that b) the behavior wasn't what I expected (but I understand Simon/Anton remarks, I know I was wrong to expect anything from that construct) For example : : illegal1 ( -- n ) I ; : illegal2 5 0 DO illegal1 . LOOP ; is documented as illegal in the ANS document To put it in another pespective, would be it possible to define legal words such as: : BEFORE-DOES> ( -- colon-sys ) .... ; IMMEDIATE : AFTER-DOES> ( colon-sys -- ) ... ; IMMEDIATE and have the reworked version of nCST work as intended ? : nCST ( nx .. n1 n0 u .. -- ) 0 ?DO CREATE , BEFORE-DOES> DOES> @ AFTER-DOES> LOOP ; Or put another way, is there an "unifying" way to describe the essence of the "CREATE/DOES>" paradigm. In a back issue of FD, Dr Ting described the (then) Fig-model of CREATE/DOES> as: CREATE \ a new compiler ... DOES> \ a new "inner interpreter" for that compiler ... What I'm trying to accomplish is to list the (way too...) numerous exceptions to "the" rule in Forth, to see if there could be, somewhere, an "unifying" (more abstract) approach. -- Jean-Francois Brouillet verec@micronet.fr Macintosh Software Developer From: fruitbat@canberra.DIALix.oz.au (Paul Sleigh) Subject: Object Oriented Forth - Syntax? Date: 4 Jan 1997 00:08:13 +1100 Message-ID: <5aj0bt$c2a$1@canberra.DIALix.oz.au> I've been playing around with an idea for some simple o-o additions to ANS Forth. I remember there was a discussion about this some time back, so I thought I'd ask if there's any kind of concensus on what sort of syntax is reasonable. My basic idea works like this: Object class: NewObject \ Object is the universal base class /private \ this section invisible to outside objects 1 CELLS field: .integer_field \ declare an integer field 10 1 CELLS vector: .array_field 24 7 2 CELLS matrix: .longint_2D_array_field /class \ this section is class methods/fields 1 constant: .add_to_usage 1 CELLS field: .usage_count 0 .usage_count ! method: update_usage .add_to_usage .usage_count +! end /public \ this section is visible everywhere constructor \ only one allowed per object 0 .integer_field ! 10 0 DO 0 I .array_field ! LOOP update_usage end method: DoSomething -forward virtual: DrawMe -forward WM_PAINT dynamic: HandlePaintMessage -forward endclass NewObject method: DoSomething \ do something end : TEST NewObject new with DoSomething DrawMe free endwith ; and so on. I was thinking of adding properties, a la Delphi, but I think not - in Forth I can define a method called Count ( -- n ) and one called :Count ( n -- ) which between them would probably operate on a private variable called .count (lowercase with dots and underscores means "private", purely as a convention). Right. What do you think? Is this plausible? Laughable? Totally unheard-of? I'd like to hear what folks think! : Eric : From: wilbaden@netcom.com (W.Baden) Subject: Re: Forth Cryptographic Toolkit Message-ID: References: <32B87338.33B9@albany.net> <2kJwygUEFZRH089yn@owl.csusm.edu> Date: Thu, 26 Dec 1996 04:17:46 GMT Responding to William Tanksley (wtanksle@owl.csusm.edu): Forth in the '90s for me was implementing a sufficient, convenient, and economical set of words for my wants on all platforms. In other words, the smallest set I can live with. There are a few more words in my private set than there are in my public set. In my public Forth -- in Forth Dimensions, etc. -- when I use a word that is not Standard, I must explain and define it. That is one obstacle to proliferation. In the case of U/MOD, users already have /MOD UM/MOD SM/REM FM/MOD */MOD M*/MOD. I don't want to add anything more to the stew. Your unfamiliarity with BOUNDS is good example of why I want to avoid proliferation. My use of BOUNDS was a chance I took. When you say that `1 = AND' is optimal I presume you mean in performance. You shouldn't talk about performance and high-level factoring together. High-level factoring always reduces performance. Factoring with a high-level implementation of U/MOD would destroy any advantage of `1 = AND'. `1 = AND' is a special instance of `test IF DROP x THEN'. Please give me a paragraph I can use to explain how to recognize and use this general class of short-cuts. I'm still interested in a minimum non-trivial example of your code you are happy with. Or almost happy. PROCEDAMUS IN PACE is used in the Latin liturgy to initiate a procession. The usual translation is "Let us go forth in peace." (Is San Marcos near San Diego? Come on up to Costa Mesa, and I'll treat you to great Mexican or Italian while we dispute Forth philosophy and pragmatics.) -- Wil From: Richard Kiefer Subject: FS: MOTOROLA up DEV SYSTEMS Date: Fri, 03 Jan 1997 13:10:55 -0700 Message-ID: <32CD67CF.182C@csd.net> Reply-To: kiefer@csd.net Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Mailer: Mozilla 3.0 (Win95; U) MOTOROLA MICROPROCESSOR DEVELOPMENT SYSTEMS FOR SALE We have several microprocessor development systems available for Motorola 68HC05 and 68HC11. They are as follows: 1. Motorola CDS8-Emulation Sytem - For family M68HC05 microprocessors. Emulator, three programming modules, software, manuals, emulation cables. Cost approximately $5000. Price $1000. 2. Motorola M68HC705KICS K-Series In-Circuit Emulator - For 68HC05 family microprocessors. Emulator, programming module, software, manuals, emulation cable. Cost approximately $750. Price $250. 3. Motorola M68HC11EVB Evaluation board - For 68HC11 up. Price $50. 4. Byte Craft C Compiler for M68HC05 family. License cost $800. Have the latest version 4.10B and manuals. Will transfer the license to you for $600. Thanks for your interest. Please respond to: Richard Kiefer Kiefer Electronic Development 303/449-4700 From: Chris Jakeman Subject: Re: Bon Mots Date: Fri, 3 Jan 1997 11:36:47 +0000 Message-ID: References: X-NNTP-Posting-Host: apvpeter.demon.co.uk MIME-Version: 1.0 Here is a correction to my previous post - see comments in the word RETAINING": In article , Chris Jakeman writes >Some while back (actually a long while back), Marty McGowan offered the >following: > >> I've seen the construct >> >> foo @ >r ... r> foo ! >> >> often enough to write "retaining" >> >> : retaining ( xt addr -- ) \ executes xt with addr unchanged >> >> dup @ >r >r execute r> r> ! ; >> >> Does this idea fit with people's idea of how to use the return stack? >> I prefer to sequester these kinds of things, factor them out >> as it were. > >> -- >> Marty McGowan >> (of AT&T Labs, and formerly of Appleton, MN, whose confusion >> with Appleton, WI, caused the Post Office to have to invent ZIP >> Codes!) > >I was looking back over these files and offer the following instead. >Surely a macro is more convenient here than inventing another word just >to get its execution token? Use the macro RETAINING" as in >IN RETAINING" BL WORD COUNT TYPE" which expands to >IN DUP @ >R >R BL WORD COUNT TYPE R> R> ! : Retaining" ( addr -- ) S" DUP @ >R >R" EVALUATE [CHAR] " WORD COUNT EVALUATE \ Was POSTPONE S" \ POSTPONE EVALUATE S" R> R> !" EVALUATE ; IMMEDIATE Bye for now _ _______________________| |_____ Chris Jakeman / _Forth_Interest_Group_| |____/ / /_ __ ______ _ _ | | __ at Peterborough, a cathedral / __/ / / / __ / | | | | | |/ / city 80 miles north of London. / / / / / /_/ / | \_| | | < Where do you come from? /_/ /_/ /___ / \____| |_|\_\ ______________/ / United Kingdom Voice +44 (0)1733 753489 /_______________/ Chapter From: Tony Williams Subject: UCE Date: Sat, 04 Jan 1997 14:50:19 +0000 (GMT) Message-ID: X-NNTP-Posting-Host: ledelec.demon.co.uk MIME-Version: 1.0 Content-Type: TEXT/PLAIN; CHARSET=ISO-8859-1 I have today received two copies of an unsolicited commercial email from "joe@joes.com". The reason I am posting this note here is that the header shows 80+ other recipients, many of whom I recognise as having been active in comp.lang.forth about 7/10 days ago. The spam seems to have originated via ibm.net and I have sent a full copy, inc headers to postmaster@ibm.net. I am sure that any other returns to ibm.net would be appreciated. -- [Tony Williams, Ledbury, Herefordshire, UK.---Pagewidth=64-----] From: "Elizabeth D. Rather" Subject: Re: Forth application fields Date: Sat, 04 Jan 1997 09:52:17 -0800 Message-ID: <32CE98D1.65E5@forth.com> References: <32c66db6.935922@news.ping.be> Reply-To: erather@forth.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-NETCOM-Date: Sat Jan 04 9:52:14 AM PST 1997 X-Mailer: Mozilla 2.0 (Macintosh; U; PPC) Andre Rombauts wrote: > > I've learned Forth 10 years ago but left it aside and turned > to more 'common' programming languages - Visual Basic, Turbo > Pascal and now Delphi. > > Very little info is available in computing magazines about > Forth environments. I keep pleading with folks to tell whatever technical magazines they read about their Forth successes! It's a common mis-perception that magazines "seek out" stories. The trade press folks are overworked & underpaid like the rest of us, and are inundated with material flooding in by folks promoting their products and successes. So that's what they publish! If we don't send it in, they won't print it! > I was wondering how it evolved. So I turned to this > newsgroup... > > For what type of applications is it now used? Is there a > good compiler for Win95 applications? Probably the major successes have been in embedded systems, where Forth's characteristic economies of size & performance matter most. Some examples: -- Federal Express's hand-held package tracking devices, over 60,000 in use worldwide, programmed in Forth since 1986 (and the new generation to be in the field in '97, also!) -- "Open Firmware" (the "plug-and-play" boot firmware used in SPARC workstations since 1987 and standardized as IEEE 1275 in 1994), adopted as a standard by the PowerPC consortium (IBM, Apple, Motorola) is present on the motherboards and most peripheral controllers of non-Intel workstations and PCs. -- "Open Terminal Architecture" (a new token-based system for CPU-independent applications in Point-of-Sale and other payment terminals designed for "smart" (ICC-based) cards), sponsored by Europay International (Waterloo, Belgium, Andre!), Europe's largest financial services organization. -- Over 40 applications in space systems (satellites, shuttle instrumentation and experiments) from NASA and other organizations. See our web site (address below) for more information. Thanks for your interest! > > Andre Rombauts, > Belgium -- Elizabeth D. Rather FORTH, Inc. Products and services for 111 N. Sepulveda Blvd. professional Forth programmers Manhattan Beach, CA 90266 since 1973. See us at: 310-372-8493/fax 318-7130 http://www.forth.com From: phma@ix.netcom.com Subject: Whois Query: "joes.com" Date: Sat, 04 Jan 1997 16:38:50 -0500 Message-ID: <32CECDEA.33F7@ix.netcom.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------C6A49AD1A5C" X-NETCOM-Date: Sat Jan 04 3:39:34 PM CST 1997 X-Mailer: Mozilla 3.01Gold (Win95; I; 16bit) This is a multi-part message in MIME format. --------------C6A49AD1A5C Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit This has nothing to do with Forth. I am posting it here because two recent messages were spammed by someone calling himself "joe@joes.com" to many Forthers. Hopefully we can rout out the guy. phma http://rs.internic.net/cgi-bin/whois?joes.com --------------C6A49AD1A5C Content-Type: text/html; charset=us-ascii; name="whois" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="whois" Content-Base: "http://rs.internic.net/cgi-bin/whois?j oes.com" Whois Query: "joes.com"
Small InterNIC logo Registration Services button bar

Whois Query Results


Joe's CyberPost (JOES-DOM)
   19145 Brookview Drive
   Saratoga, CA  95070

   Domain Name: JOES.COM

   Administrative Contact:
      Doll, Joe  (JD724)  joe@JOES.COM
      (415)691-0270
   Technical Contact, Zone Contact:
      Leber, Mike  (ML158)  mleber@HE.NET
      510 651 4164

   Record last updated on 11-Oct-95.
   Record created on 17-Jul-95.

   Domain servers in listed order:

   NS1.HE.NET			207.33.1.2
   NS2.HE.NET			207.33.1.3
   AMDAHL.COM			129.212.11.3


Button bar

--------------C6A49AD1A5C-- From: Bernd Paysan Subject: Re: Object Oriented Forth - Syntax? Date: Sat, 04 Jan 1997 01:00:28 +0100 Message-ID: <32CD9D9C.1545F69B@informatik.tu-muenchen.de> References: <5aj0bt$c2a$1@canberra.DIALix.oz.au> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Mailer: Mozilla 3.0 (X11; I; Linux 2.1.17 i586) Paul Sleigh wrote: > > I've been playing around with an idea for some simple o-o additions to ANS > Forth. I remember there was a discussion about this some time back, so I > thought I'd ask if there's any kind of concensus on what sort of syntax is > reasonable. No. There is no consensus. > My basic idea works like this: Looks somewhat like my OOF. I'll translate it step by step to my OOF: > Object class: NewObject \ Object is the universal base class > > /private \ this section invisible to outside objects > > 1 CELLS field: .integer_field \ declare an integer field > 10 1 CELLS vector: .array_field > 24 7 2 CELLS matrix: .longint_2D_array_field Object class NewObject 1 cells var .integer_filed Sorry, no vector, no matrix. I've not found them necessary (and I add only things I or my customers need from time to time). If I need larger data fields, they are almost always dynamically in size, so I just use a cell sized pointer to the data in the object itself. Same thing with different visibility categories. I have private: and public: in bigFORTH, but I rarely use private:. I dropped this when I converted OOF to ANS, since it just eats up places on the vocabulary stack. > /class \ this section is class methods/fields > > 1 constant: .add_to_usage > 1 CELLS field: .usage_count 0 .usage_count ! > > method: update_usage > .add_to_usage .usage_count +! > end I distinguish between interface declaration, and implementation. The thing above would be 1 Constant .add_to_usage ( yes, plain vanilla Forth Constant works) method update_usage before the HOW: statement, and later a : update_usage .add_to_usage .usage_count +! ; > /public \ this section is visible everywhere > > constructor \ only one allowed per object > 0 .integer_field ! > 10 0 DO 0 I .array_field ! LOOP > update_usage > end Every object has a INIT and a DISPOSE method (constructor and destructor). Use them as any other method. > method: DoSomething -forward > virtual: DrawMe -forward > WM_PAINT dynamic: HandlePaintMessage -forward > > endclass Object definition ends with class; My methods are "virtual". If you want to have non-virtual methods, you can declare them with "early". It's better to have polymorphism on the first hand, and use a special construct if you don't need it. > NewObject method: DoSomething > \ do something > end I don't allow definitions outside the object declaration (thus after class;). Do you have any special needs for that? > : TEST > NewObject new with > DoSomething > DrawMe > free > endwith > ; > > and so on. with and endwith are >o and o> in my OOF. If this isn't a definition in the same object class, you have to say which class you mean, each time you send a method to it, e.g. : test NewObject new >o NewObject DoSomething NewObject DrawMe NewObject dispose o> ; > I was thinking of adding properties, a la Delphi, but I think not - in Forth > I can define a method called Count ( -- n ) and one called :Count ( n -- ) > which between them would probably operate on a private variable called > .count (lowercase with dots and underscores means "private", purely as a > convention). Yes. Everything is executable. If it isn't a object data field, make it a method. > Right. What do you think? Is this plausible? Laughable? Totally > unheard-of? I'd like to hear what folks think! It's good. I think a bit less (less freedom, less variable types, only one declaration category) could be more. This is Forth, not Delphi. -- Bernd Paysan "Late answers are wrong answers!" http://www.informatik.tu-muenchen.de/~paysan/ From: wtanksle@owl.csusm.edu (William Tanksley) Subject: Joe's nonsense Date: Sat, 04 Jan 1997 13:48:59 -0500 Message-ID: Reply-To: wtanksle@owl.csusm.edu Okay, what shall we do? This person is collecting the address of everyone who posts to this newsgroup and spamming them. This MIGHT be a phony (the person sending the message is using someone else's account), but if it is, the person whose computer it's directed at is VERY poorly guarded to allow such faking to happen. Any suggestions for ensuring the reduction of this type of thing? Hey, not bad! The paragraph above is accidental full-justified text. -Billy From: "Jeffery B. Wood" Subject: Re: Joe's nonsense Date: 5 Jan 1997 06:02:18 GMT Message-ID: <01bbface$17ef8240$2138a3ce@jbwood> References: This person is a phoney. If you go to www.adgraphix.com (mentioned in the spam) they claim that neither they, nor John Doll did it and that the person doing it currently remains anonymous. -- Jeffery B. Wood KB7MQA jbwood@pacifier.com knickknack@juno.com William Tanksley wrote in article ... > Okay, what shall we do? This person is collecting the address of everyone > who posts to this newsgroup and spamming them. This MIGHT be a phony (the > person sending the message is using someone else's account), but if it is, From: "Jeffery B. Wood" Subject: Re: Whois Query: "joes.com" Date: 5 Jan 1997 06:04:55 GMT Message-ID: <01bbface$7566d0e0$2138a3ce@jbwood> References: <32CECDEA.33F7@ix.netcom.com> Joe is not the one responsible. It is done by someone using Joe. Check out www.graphix (mentioned in the spam), they have a section for those who are a victim of "Joe's spam" -- Jeffery B. Wood KB7MQA jbwood@pacifier.com knickknack@juno.com phma@ix.netcom.com wrote in article <32CECDEA.33F7@ix.netcom.com>... > This has nothing to do with Forth. I am posting it here because two > recent messages were spammed by someone calling himself "joe@joes.com" > to many Forthers. Hopefully we can rout out the guy. From: Tony Williams Subject: Re: Joe's nonsense Date: Sun, 05 Jan 1997 09:20:04 +0000 (GMT) Message-ID: References: X-NNTP-Posting-Host: ledelec.demon.co.uk MIME-Version: 1.0 Content-Type: TEXT/PLAIN; CHARSET=ISO-8859-1 In article , William Tanksley wrote: > > Okay, what shall we do? This person is collecting the address of everyone > who posts to this newsgroup and spamming them. This MIGHT be a phony (the > person sending the message is using someone else's account), but if it is, > the person whose computer it's directed at is VERY poorly guarded to allow > such faking to happen. Any suggestions for ensuring the reduction of this > type of thing? > > Hey, not bad! The paragraph above is accidental full-justified text. > > -Billy OK, 10/10, Tick-vg for typing and spelling. Back to joes.com. I have complained to ibm.net and done some more digging. It would seem that joes.com used to provide a web-page for someone who turned out to be a spammer. Having had their account terminated the spammer seems to be getting back at joes by faking spams that appear to come from joes.com. In a nutshell:- 1. joes@joes.com does seem to be an innocent party in this. 2. His ISP, he.net, does seem to have a lack of security. 3. The real Perps are:- CYBERGEN HEALTH 6829 N. Lincoln-Suite 135 Lincolnwood, IL 60646, USA noci@cyberpromo.com 4. I have notified ibm.net and received a reply/number. 5. Everyone has a right to be innocent until proved guilty, but if I was in Illinois and just happened to be wearing my Doc Martens...... (For non uk'ers, "Doc Martens" are heavyweight lace-up boots) (with nice massive toecaps. ) -- [Tony Williams, Ledbury, Herefordshire, UK.---Pagewidth=64-----] From: fruitbat@canberra.DIALix.oz.au (Paul Sleigh) Subject: Re: Object Oriented Forth - Syntax? Date: 6 Jan 1997 00:48:47 +1100 Message-ID: <5aobfv$l7g$1@canberra.DIALix.oz.au> References: <5aj0bt$c2a$1@canberra.DIALix.oz.au> <32CD9D9C.1545F69B@informatik.tu-muenchen.de> Bernd Paysan (paysan@informatik.tu-muenchen.de) wrote: [Re: OOF discussion] : > thought I'd ask if there's any kind of concensus on what sort of syntax is : > reasonable. : : No. There is no consensus. Why am I not surprised? Ah, Forth... if you've seen one version of it, you've seen... one version of it. : > 1 CELLS field: .integer_field \ declare an integer field : > 10 1 CELLS vector: .array_field : > 24 7 2 CELLS matrix: .longint_2D_array_field : : Sorry, no vector, no matrix. I've not found them necessary (and I add : only things I or my customers need from time to time). If I need larger : data fields, they are almost always dynamically in size, so I just use a : cell sized pointer to the data in the object itself. Good point. I guess it's a matter of doing it only because I can. I shall follow your lead here. : Same thing with different visibility categories. I have private: and : public: in bigFORTH, but I rarely use private:. I dropped this when I : converted OOF to ANS, since it just eats up places on the vocabulary : stack. Good point, but private and public tend to be useful for maintaining a certain discipline - I guess that's a highly unForthian way of thinking! I shall experiment further. : before the HOW: statement, and later a : Every object has a INIT and a DISPOSE method (constructor and : destructor). Use them as any other method. : class; I must admit, I prefer longer names over shorter ones. Short names (the ">o" and "o>" being another example) tend to clutter up the dictionary and look quite obscure. YMMV, but it's a principle that's held me in good stead. : My methods are "virtual". If you want to have non-virtual methods, you : can declare them with "early". It's better to have polymorphism on the : first hand, and use a special construct if you don't need it. I also prefer standard names and forms - "static" and "virtual" rather than "early" and nothing-at-all for virtual - simply because it's a pain in the neck trying to read my own code a month later otherwise. But it's an aesthetics thing - you could disagree strongly and all it would mean is that you might not be as anally retentive as me... Good point about defaulting to virtual, tho. I'll think about that. I'm starting, fairly obviously, with Delphi as a basis, so fundamental changes take a while... : > NewObject method: DoSomething : > \ do something : > end : : I don't allow definitions outside the object declaration (thus after : class;). Do you have any special needs for that? Ah yes! I'm glad you asked! It's to allow a programmer to do something that (I believe) only Smalltalk allows: adding methods to an existing object after it's been defined! Did you know (I just found this out and it positively floored me) that to write a "factorial" function in Smalltalk, you add a factorial _method_ to the Integer class?! Bizarre, yet immensely powerful. : with and endwith are >o and o> in my OOF. If this isn't a definition in : the same object class, you have to say which class you mean, each time : you send a method to it, e.g. : : : test : NewObject new >o : NewObject DoSomething : NewObject DrawMe : NewObject dispose : o> : ; Hmmm... I was thinking that "with" is basically "add calling class to search order"; once you do that, allowing for the fact that it also stores some kind of "current object" on another internal stack somewhere (I'm a bit vague on details, you can see...) then calling DoSomething et al will default to the latest object (or its parents). : It's good. I think a bit less (less freedom, less variable types, only : one declaration category) could be more. This is Forth, not Delphi. Yes. I shall play around a bit more before I set to and implement the bugger. Stimulating discussion. Thank you! : Eric : PS In case it confuses you... "Eric" is my nickname, "Paul" is my mundane name. Use either at your leisure, it doesn't bother me. It's all to do with the hats one wears... From: Simon Read Subject: Re: Illegal? Undefined? or what ? Date: 6 Jan 97 12:28:19 GMT Message-ID: <32d0efe3.0@news.cranfield.ac.uk> References: <5aea7s$r2b@news.IAEhv.nl> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Mailer: Mozilla 1.1N (X11; I; OSF1 V3.2 alpha) X-URL: news:verec-0301971339590001@pppa141.francenet.fr verec@micronet.fr (Jean-Francois Brouillet) wrote: >: BEFORE-DOES> ( -- colon-sys ) .... ; IMMEDIATE >: AFTER-DOES> ( colon-sys -- ) ... ; IMMEDIATE > >and have the reworked version of nCST work as intended ? > >: nCST ( nx .. n1 n0 u .. -- ) > 0 ?DO CREATE , BEFORE-DOES> DOES> @ AFTER-DOES> LOOP ; If you really want to do this you will have to take DOES> apart into its components. When nCST executes and gets to what DOES> left in the definition, it has these actions: (1) link the newly-compiled word to the following code ( the @ in your case, and whatever follows the @ ) (2) exit from the current definition which is nCST in this case. The reason for (2) is (1): _whatever follows the @_ this is what Const1 is designed to execute, so you can't have nCST executing it. DOES> forms an end to nCST 's part and a beginning of Const1 's part. You want something which has the action of (1) but not (2). Your AFTER-DOES> must have an EXIT so that the constants will execute the @ then they will hit the exit. In addition, you want the new version of DOES> to _not_ exit from nCST, but rather to leap forward to just after the AFTER-DOES> This means that the combined effect of DOES> .. AFTER-DOES> is also an unconditional forward branch ... you now have to take apart the definitions of IF THEN and ELSE to look at forward branches. Having done all that, you ought to be able to write a new DOES> (just a single word, not preceeded by BEFORE-DOES> ) and AFTER-DOES> . Really, if you write the new DOES> correctly, AFTER-DOES> can just be replaced by EXIT THEN . This would be a good thing to do if it lets you understand DOES> better. advanced stuff -------------- There are related words. I have an execution vector called ACTION so I can say ACTION @ EXECUTE but I also need a word to tell ACTION what to do. The formula is identical to DOES> ... ... ACTION ASSIGN words words and more words ; (The exact name, ASSIGN, may vary.) I can do this manually by defining another word and storing its address in ACTION . Now I have a task called VOLTMETER and I want it to periodically put some display on the screen. The formula to tell VOLTMETER to get going is identical ... ... VOLTMETER SEND words BEGIN words words wait-a-bit AGAIN ; (The exact name, SEND, may vary.) These three words all refer to execution which is deferred or postponed in some way: once to another word, once to another execution vector and once to another task in the context of multi-tasking. They have some things in common (1) When they execute, they exit from the current definition. (2) They set up some kind of link to the words which follow. It might be useful to consider them together. It might also be useful to see if they can make use (partly) of a common mechanism. Simon / cranfield.ac.uk / you do? / @ / how do / s.read / Hello, Your definitions you quote from the FIG model (compiler... execute behaviour .. new inner interpreter for that compiler) are correct as far as I can see. From: Ulrich_Schulz@t-online.de (Ulrich Schulz) Subject: FORTH and graphics? Date: 5 Jan 1997 17:26:31 GMT Message-ID: <5aoo87$bf@news00.btx.dtag.de> Reply-To: Ulrich_Schulz@t-online.de Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Sender: 0423184460-0001@t-online.de (Ulrich Schulz) X-Mailer: Mozilla 3.01 DT [de]C-DT (Win95; I; 16bit) Hi, now I'm starting with Forth again looking for a small Forth which allows simple graphics (dots and lines). I don't need a big package with thouthands of features that makes me spending lots of time to learn how to use it. Can you give me a hint? From: Simon Read Subject: Re: Bon Mots Date: 6 Jan 97 15:34:03 GMT Message-ID: <32d11b6b.0@news.cranfield.ac.uk> References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Mailer: Mozilla 1.1N (X11; I; OSF1 V3.2 alpha) X-URL: news:I0lleUAP9OzyEwrH@apvpeter.demon.co.uk >>Some while back (actually a long while back), Marty McGowan offered the >>following: >> >>> I've seen the construct >>> >>> foo @ >r ... r> foo ! >>> >>> often enough to write "retaining" >>> >>> : retaining ( xt addr -- ) \ executes xt with addr unchanged >>> >>> dup @ >r >r execute r> r> ! ; After the dup @ you've got the contents of addr on top of the stack. After the return stack stuff, execution and more return stack stuff you've got the same thing. So you need a swap before the ! .... so if you really wrote "retaining" as above, you probably crashed the system. Simon / cranfield.ac.uk / you do? / @ / how do / s.read / Hello, From: joe@joes.com Subject: Re: Joe's nonsense Date: 6 Jan 97 06:04:06 GMT Message-ID: <32d095d6.0@news.itvcorp.com> References: In article , wtanksle@owl.csusm.edu (William Tanksley) writes: |> Okay, what shall we do? This person is collecting the address of everyone |> who posts to this newsgroup and spamming them. This MIGHT be a phony (the |> person sending the message is using someone else's account), but if it is, |> the person whose computer it's directed at is VERY poorly guarded to allow |> such faking to happen. Any suggestions for ensuring the reduction of this |> type of thing? |> I suppose we can play "turn about is fair play" and put HIS name in the FROM field of your news postings (like I just did) for a while, then HE will get all the mail instead of us! -- Everett (Skip) Carter Phone: 408-641-0645 FAX: 408-394-5561 Taygeta Scientific Inc. INTERNET: skip@taygeta.com 1340 Munras Ave., Suite 314 UUCP: ...!uunet!taygeta!skip Monterey, CA. 93940 WWW: http://www.taygeta.com/skip.html From: Bernd Paysan Subject: Re: Object Oriented Forth - Syntax? Date: Mon, 06 Jan 1997 00:48:56 +0100 Message-ID: <32D03DE8.1BE07387@informatik.tu-muenchen.de> References: <5aj0bt$c2a$1@canberra.DIALix.oz.au> <32CD9D9C.1545F69B@informatik.tu-muenchen.de> <5aobfv$l7g$1@canberra.DIALix.oz.au> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Mailer: Mozilla 3.0 (X11; I; Linux 2.1.17 i586) Paul Sleigh wrote: > Hmmm... I was thinking that "with" is basically "add calling class to search > order"; once you do that, allowing for the fact that it also stores some > kind of "current object" on another internal stack somewhere (I'm a bit > vague on details, you can see...) then calling DoSomething et al will > default to the latest object (or its parents). Good idea. However, if "with" just takes an object from the stack, it must know which type it is. In Delphi it knows because "new" is something special. With my OOF, new is just a simple method. So this would be something like ... MyObject new ( S: object ) MyObject with ( S: -- O: object V: MyObject ) DoSomething Draw dispose endwith ... This saves typing and more important, mistyping. I'll think about adding "with" as a simple method. It could just spawn a new incarnation of the outer interpreter and return at "endwith" (the rest of the "with" functionality applys to any method passing, so it's not special). Looks neat, and better than my >o and o>. The Smalltalk idea about how to define functions (add fib as a message to integer) could fit well with the interactive nature of Forth. It's not just that you want to add a method, during developement you might need to change one without compiling all the stuff again. Thanks to polymorphism, this would be a real redefine. Hm, recompiling isn't the matter today, recompiling 200k source with (currently) 84 widget classes takes 0.89s on my Pentium 133... Do this with C++ ;-). Ok, if you come close, I enable dictionary hashing for object vocabularies, too :->. -- Bernd Paysan "Late answers are wrong answers!" http://www.informatik.tu-muenchen.de/~paysan/ From: Byron Nilsen Subject: Re: Joe's nonsense Date: 7 Jan 1997 01:35:16 GMT Message-ID: <5as98k$qqa@news.wco.com> References: <32d095d6.0@news.itvcorp.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 8bit joe@joes.com wrote: : In article , wtanksle@owl.csusm.edu (William Tanksley) writes: [snip] : |> : I suppose we can play "turn about is fair play" : [snip] : -- : Everett (Skip) Carter Phone: 408-641-0645 FAX: 408-394-5561 ---- According to a recent thread on my ISP's "customer only" newsgroup, this spam is all over the place. A recent posting there says ibm.com has identified the offender and terminated that account. One thing my ISP has done to curtail this is to add a domain called "nospam@wco.com" Which they say will kick email addressed there right back to the sender *and* his ISP postmaster. Don't ask me how it works, but the instructions given were to modify my .profile adding the following: NNTP_INEWS_DOMAIN=nospam@wco.com export NNTP_INEWS_DOMAIN I assume this only works for tin, running from a shell account. (Can't wait to see if it worked in my header address here.) My actual address is of course: bnilsen@wco-dot-com. -- |--|====== Byron Nilsen ======|--|* Analog and Digital Circuit Design *|--| |\/| * R. W. LABORATORIES * |\/|* Embedded Processor Systems *|\/| |/\|Industrial Instrumentation|/\|* Forth Language Applications *|/\| |--|====== And Controls ======|--|(finger bnilsen@wco.com for PGP key)|--| From: cjolley@oz.sunflower.org (Charles A. Jolley) Subject: Re: Joe's nonsense Date: Mon, 06 Jan 1997 17:25:16 -0600 Message-ID: References: <32d095d6.0@news.itvcorp.com> ummmm...if joe@joes.com isn't really doing the spamming but his name is in the FROM field, doesn't that mean JOE gets all our spams? Hmmm... In article <32d095d6.0@news.itvcorp.com>, joe@joes.com wrote: > In article , wtanksle@owl.csusm.edu (William Tanksley) writes: > |> Okay, what shall we do? This person is collecting the address of everyone > |> who posts to this newsgroup and spamming them. This MIGHT be a phony (the > |> person sending the message is using someone else's account), but if it is, > |> the person whose computer it's directed at is VERY poorly guarded to allow > |> such faking to happen. Any suggestions for ensuring the reduction of this > |> type of thing? > |> > I suppose we can play "turn about is fair play" > and put HIS name in the FROM field of your > news postings (like I just did) for a while, > then HE will get all the mail instead of us! > > -- > Everett (Skip) Carter Phone: 408-641-0645 FAX: 408-394-5561 > Taygeta Scientific Inc. INTERNET: skip@taygeta.com > 1340 Munras Ave., Suite 314 UUCP: ...!uunet!taygeta!skip > Monterey, CA. 93940 WWW: http://www.taygeta.com/skip.html -Charles Jolley cjolley@oz.sunflower.org ------------------------------- HACS Design Group "...there is a better way..." ------------------------------- From: Peter Gallasch Subject: Re: Forth & perl Date: Tue, 07 Jan 1997 09:31:52 +0100 Message-ID: <32D209F8.2F1CF0FB@adv.magwien.gv.at> References: <199612181606.IAA16809@linda.teleport.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Mailer: Mozilla 3.01 (X11; I; BSD/OS 2.0 i386) znmeb@teleport.com wrote: > > In article <32B7A052.2781E494@adv.magwien.gv.at> Peter Gallasch (gal@adv.magwien.gv.at) wrote: > : Chris Stephens wrote: > : > > : > Any forthers tried mixing Forth & perl or simulating perl in forth ? > : > > : I wrote a simple Forth in Perl, where you can mix both languages. > : You can embed Perl statements in a Forth definition, you can write a > : Forth primitive in Perl, and you can call a Forth word from Perl. > > : I made this to learn and try the new features of Perl5. > > Is this available on the Web??? CPAN/authors/id/PETERGAL/PGForth1.0.tar.gz -- Peter Gallasch mailto:gal@adv.magwien.gv.at ___ __o MA14-ADV Rathausstr. 1, A-1082 Wien, Austria ____ _'\<,_ phone +43-1-4000-98633 fax +43-1-4000-7141 (*)/ (*) From: jon@taygeta.com (J. D. Verne) Subject: comp.lang.forth FAQ-lite Supersedes: Date: 7 Jan 97 07:29:49 GMT Expires: 21 Jan 97 07:30:02 Message-ID: Reply-To: faq@taygeta.com (FAQ maintainers list) Summary: A pointer to, and a short description of, the Forth Programming Language FAQ-files posted regularily to comp.lang.forth. Keywords: FAQ FORTH FIG Originator: jon@www.taygeta.com Posted-By: auto-faq 3.3 beta (Perl 5.001) Archive-name: computer-lang/forth-faq-lite Posting-Frequency: Weekly Here is a brief summary and description of the Forth language Frequently Asked Questions files. They are posted monthly to the comp.lang.forth USENET group, and are updated regularily. These files are available for reading, or downloading, at: http://www.taygeta.com/fig.html ftp://ftp.forth.org/pub/Forth/FAQ If the site is slow or busy, please try again, later. ==> forthfaq.1 'general' <== comp.lang.forth Frequently Asked Questions, part 1 of 6 General/Miscellaneous - a brief historical background, a discussion of standards, and an overview of the FAQ - An HTML version is available at: http://www.complang.tuwien.ac.at/forth/faq/faq-general.html ==> forthfaq.2 'online' <== comp.lang.forth Frequently Asked Questions, part 2 of 6 Online Resources - a relatively comprehensive guide to Forth info online - An HTML version is available at: http://www.complang.tuwien.ac.at/forth/forl.html ==> forthfaq.3 'vendors' <== comp.lang.forth Frequently Asked Questions, part 3 of 6 Forth Vendors - a listing of Forth vendors and authors ==> forthfaq.4 'systems' <== comp.lang.forth Frequently Asked Questions, part 4 of 6 Forth Systems: Commercial, Shareware, and Freeware - a large listing of various Forth and Forth-like systems for many different architectures (& budgets...) ==> forthfaq.5 'books' <== comp.lang.forth Frequently Asked Questions, part 5 of 6 Books, Periodicals, and Tutorials - a bibliography of printed resources available for Forth users ==> forthfaq.6 'groups' <== comp.lang.forth Frequently Asked Questions, part 6 of 6 Forth Groups & Organizations - a listing of organizations for the Forth professional, and hobbyist Please direct any comments or queries to . From: T.W.Worthington@ncl.ac.uk Subject: Re: FORTH and graphics? Date: 7 Jan 1997 11:36:01 GMT Message-ID: <5atcf1$avh@whitbeck.ncl.ac.uk> References: <5aoo87$bf@news00.btx.dtag.de> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Mailer: Mozilla 1.2N (Windows; I; 16bit) Ulrich_Schulz@t-online.de (Ulrich Schulz) wrote: >now I'm starting with Forth again looking for a small Forth which allows >simple graphics (dots and lines). I don't need a big package with >thouthands of features that makes me spending lots of time to learn how >to use it. > >Can you give me a hint? > > What machine? Thomas Worthington From: Deleze Olivier - electro 94 Subject: polish inverted notation interpretor Date: Tue, 07 Jan 1997 12:40:46 +0100 Message-ID: <32D2363E.593D@eif.ch> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Mailer: Mozilla 2.01 (X11; I; SunOS 5.4 sun4m) need to translate a string which contains a boolean equation into the polish inverted notation format in order to evaluate the expression in a turbo forth programing language. example: the folowing string expression : " (a+b)*/c " has to be written on stack in the folowing order: a b and c not or does it already exist an apropriate interpetor written in turbo forth ? if no, how a such program can be structured ? Have you got some interesting ideas ? Oliver Deleze e94odele@eif.ch From: japs@netcom.com (Jim Schneider) Subject: 486asm V1.25 has been uploaded to... Message-ID: Summary: Anouncement of assembler upgrade Keywords: assembler Intel Win32FORTH 486asm Date: Wed, 8 Jan 1997 00:09:53 GMT I have uploaded the latest version of my assembler to my ftp site. It is available from: ftp://ftp.netcom.com/pub/ja/japs/486asm.zip You should also get: ftp://ftp.netcom.com/pub/ja/japs/486read.me This release includes a new feature to allow you to intercept the assembler just before it actually compiles/assembles each opcode, and precious little else. You need to retain whatever version of ASMWIN32.F you have, as I am no longer distibuting that file. If anyone has an idea for a new feature (or two or three...), let me know. Don't be too suprised if I implement it in different way than you think I should... From: kevin_lee@smtp.microtek.com.tw (Kevin Y.L. Lee) Subject: Re: [?]Book "Embedded Controller Forth for the 8051 Family" Date: Wed, 08 Jan 1997 03:13:49 GMT Message-ID: <32d30f49.7361566@168.95.195.16> References: <32d2fa54.1995579@168.95.195.16> Reply-To: kevin_lee@smtp.microtek.com.tw On Wed, 08 Jan 1997 02:10:12 GMT, >It's "Embedded Controller Forth for the 8051 Family" by W. H. Payne, >Academic Press. >Have anyone ever seen this book ? Is its introduction or contents >able to be accessed on Internet ? >Or inform me its ISBN and price. I want to order one. It was found on World Wide Web site, the URL is : http://www.apcatalog.com/cgi-bin/AP?ISBN=0125475705&LOCATION=US&FORM=FORM2 The details is shown on the page, includes introduction. ISBN: 0125475705 Title: EMBEDDED CONTROLLER FORTH FOR THE 8051 FAMILY Author: William H. PAYNE Cover: Hardback/Cloth Imprint: Academic Press Published: September 1990 US Price: $80.00 UK Price: £55.00 From: "Don Ingram" Subject: Pilot Forth ? Date: Wed, 8 Jan 1997 07:50:50 +1100 Message-ID: <01bbfcdc.772f16c0$355870a4@ur014234> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Has anyone seen a start at a version of Forth to run on the Pilot? For those who haven't seen a Pilot, it is well worth the trip over to http:\\www.usr.com as this is a potentially brilliant front end to an embedded system. ( Ironic: A 32bit display unit on a 16bit embedded system ) -- Don Ingram Leading Edge Design dingram@m130.aone.net.au Ph +61 79 546074 Fax +61 79 546668 From: Mary Murphy and Leo Wong Subject: Re: polish inverted notation interpretor Date: Tue, 07 Jan 1997 20:17:31 -0500 Message-ID: <32D2F5AB.2097@albany.net> References: <32D2363E.593D@eif.ch> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Mailer: Mozilla 3.0Gold (Win95; I) Deleze Olivier - electro 94 wrote: > > need to translate a string which contains a boolean equation into the > polish inverted notation format in order to evaluate the expression in a > turbo forth programing language. > > example: the folowing string expression : " (a+b)*/c " > > has to be written on stack in the folowing order: > > a b and c not or > > does it already exist an apropriate interpetor written in turbo forth ? > > if no, how a such program can be structured ? Have you got some > interesting ideas ? > > Oliver Deleze e94odele@eif.ch You might have a look at the "postfix" section of: Leo Wong -- hello@albany.net http://www.albany.net/~hello/ From: Tony Williams Subject: Re: Joe's nonsense Date: Wed, 08 Jan 1997 08:32:48 +0000 (GMT) Message-ID: References: <32d095d6.0@news.itvcorp.com> X-NNTP-Posting-Host: ledelec.demon.co.uk MIME-Version: 1.0 Content-Type: TEXT/PLAIN; CHARSET=ISO-8859-1 In article , Charles A. Jolley wrote: > > > ummmm...if joe@joes.com isn't really doing the spamming but his name is in > the FROM field, doesn't that mean JOE gets all our spams? Hmmm... > That's what the spammer intended, various knee-jerk reactions around the world have caused "joe" to be knocked off the web. So his revenge-spam against joe succeeded. ibm.net say that the orig Perp has been identified and cancelled. However this chap appears to be well known for spams and will no doubt appear again via another route. Any addresses picked up from postings in clf are still in his files and the lucky ones (inc yours truly) can look forward to more spams in the future. The Provider with the poor security was he.net apparently. -- [Tony Williams, Ledbury, Herefordshire, UK.---Pagewidth=64-----] From: lpadovan@cs.unibo.it (Luca Padovani) Subject: yForth? announcement Date: 8 Jan 1997 12:22:36 GMT Message-ID: <5b03ic$mrf@leporello.cs.unibo.it> Hi to all Forth programmers, today a newborn in the scenario of Forth environemnts became public. You can find yForth? at this link: http://www.cs.unibo.it/~lpadovan following "yForth? project". Please read README file :). If you're interested, any comment, flame, greeting is appreciated. Luca Here is a part of README: [...] What's yForth? ? yForth? is a Forth environment written entirely in ANSI C, making it extremely portable. The first thing I want to tell you about yForth? is that it seems a joke compared to other systems such as gForth or PFE. The only things it has in common with PFE are that it's written in C, and it's been written for fun. It's rude, it hasn't anything odd, there's no reason to choose yForth? instead of other Forth environments. Nevertheless, you could find yForth? nice, in this case you're invited to explore yForth? in the following lines. [...] -- Luca Padovani (Home Page: http://cs.unibo.it/~lpadovan) From: anton@a0.complang.tuwien.ac.at (Anton Ertl) Subject: Re: Bon Mots Date: 8 Jan 1997 14:32:21 GMT Message-ID: <5b0b5l$nd9@news.tuwien.ac.at> References: In article , Chris Jakeman writes: > Some while back (actually a long while back), Marty McGowan offered the > following: > > > I've seen the construct > > > > foo @ >r ... r> foo ! > > > > often enough to write "retaining" > > > > : retaining ( xt addr -- ) \ executes xt with addr unchanged > > > > dup @ >r >r execute r> r> ! ; > > > > Does this idea fit with people's idea of how to use the return stack? Yes. I would use CATCH instead of EXECUTE, though, so we are safe from throws. E.g., : retaining ( xt addr -- ) dup @ 2>r catch 2r> swap ! throw ; > I was looking back over these files and offer the following instead. > Surely a macro is more convenient here than inventing another word just > to get its execution token? > > : retaining" ( addr -- ) > s" dup @ >r >r" evaluate > postpone s" > postpone evaluate > s" r> r> !" evaluate ; immediate > > eg: >IN Retaining" bl word c@ type" Yes, being able to write the protected stuff inline is more convenient, but I have a gripe with the way you do it. You will interpret the string at run-time. I would rather suggest replacing the postpone s" postpone evaluate with [char] " parse evaluate Moreover, I would replace the other EVALUATEs with POSTPONEs (see http://www.complang.tuwien.ac.at/forth/why-evaluate-is-bad). Actually, I would prefer a syntax like var This is also easier to implement than RETAINING": : r ; immediate : RETAIN> ( runtime: R: addr w -- ) POSTPONE 2r> POSTPONE swap POSTPONE ! ; Unfortunately, neither RETAINING" nor can be extended in ANS Forth to be safe from exceptions. We would need something like Michael Gassanenkos CATCH syntax. - anton -- M. Anton Ertl Some things have to be seen to be believed anton@mips.complang.tuwien.ac.at Most things have to be believed to be seen http://www.complang.tuwien.ac.at/anton/home.html From: anton@a0.complang.tuwien.ac.at (Anton Ertl) Subject: Re: polish inverted notation interpretor Date: 8 Jan 1997 15:26:45 GMT Message-ID: <5b0ebl$nd9@news.tuwien.ac.at> References: <32D2363E.593D@eif.ch> To: Deleze Olivier - electro 94 In article <32D2363E.593D@eif.ch>, Deleze Olivier - electro 94 writes: > need to translate a string which contains a boolean equation into the > polish inverted notation format in order to evaluate the expression in a > turbo forth programing language. > > example: the folowing string expression : " (a+b)*/c " > > has to be written on stack in the folowing order: > > a b and c not or > > does it already exist an apropriate interpetor written in turbo forth ? > > if no, how a such program can be structured ? Have you got some > interesting ideas ? Read any compiler book. They all explain this. Basically, the trick is to parse the expression, and write out the translations of the variables when they are parsed, and to write out the translations of the operators when the subexpression controlled by the operator ends (post-order traversal). - anton -- M. Anton Ertl Some things have to be seen to be believed anton@mips.complang.tuwien.ac.at Most things have to be believed to be seen http://www.complang.tuwien.ac.at/anton/home.html From: Laurent Demailly Subject: Re: Pilot Forth ? Date: Wed, 08 Jan 1997 21:47:55 +0100 Message-ID: <32D407FB.24FB@mail.dotcom.fr> References: <01bbfcdc.772f16c0$355870a4@ur014234> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Mailer: Mozilla 2.02E-KIT (Win95; I) To: Don Ingram I'm looking into it, but advices, collaborations, hints, etc... are welcome ! (more specifically, I collected a number of free implementations around, but I still have to find one that would be small/concise enough, ideally a tiny portable (and documented) 68k assembly core... I'll probably endup by writing one... If I can't find the above to help) Don Ingram wrote: > Has anyone seen a start at a version of Forth to run on the Pilot? > For those who haven't seen a Pilot, it is well worth the trip over to > http:\\www.usr.com as this is a potentially brilliant front end to anhttp://www.usr.com/palm/ in fact > embedded system. ( Ironic: A 32bit display unit on a 16bit embedded > system ) Best regards Laurent Demailly plz reply by news or try dl@mail.dotcom.fr From: Simon Read Subject: Re: Joe's nonsense Date: 8 Jan 97 20:24:40 GMT Message-ID: <32d40288.0@news.cranfield.ac.uk> References: <32d095d6.0@news.itvcorp.com> <5as98k$qqa@news.wco.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Mailer: Mozilla 1.1N (X11; I; OSF1 V3.2 alpha) X-URL: news:5as98k$qqa@news.wco.com Byron Nilsen wrote: > One thing my ISP has done to curtail this is to add a domain called >"nospam@wco.com" Which they say will kick email addressed there right >back to the sender *and* his ISP postmaster. Don't ask me how it works, Looks extremely useful. Can other people use it? >but the instructions given were to modify my .profile [...] Let me see if I understand you correctly. (1) nospam@wco.com is now a valid email address, someone anywhere in the world may choose to send to it, but spammers doing so will get a headache. (2) You are being instructed to modify your news postings so that they appear to come from nospam@wco.com i.e. you are being asked to put that "return-address" in your posting header, so that the spammer will pick it up and spam, spam, spam. > (Can't wait to see if it worked in my header address here.) What it looks like to me in my newsreader is bnilsen@nospam@wco.com ..probably not the intended effect. Maybe there's one variable for the name and another for the address. NNTP_INEWS_DOMAIN=wco.com NNTP_INEWS_USER=nospam ..here I'm only guessing. The above would explain why your address appears as bnilsen@nospam@wco.com Simon / cranfield.ac.uk / you do? / @ / how do / s.read / Hello, From: Michael Josefsson Subject: Forth for PIC16C84!!!! Date: Wed, 08 Jan 1997 22:45:25 -0500 Message-ID: <32D469D5.674F@isy.liu.se> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Mailer: Mozilla 2.02E (OS/2; I) F2PIC.EXE is a self-extractor found at ftp.taygeta.com/pub/Forth/Misc. F2PIC.EXE is a small compiler for the PIC16C84 microcontroller. The compiler translates Forth source to PIC-assembler to be compiled by Microchip's MPASM. There is no resident kernel but words are linked in when needed (ie. referenced) and further references to an already linked in word is through CALLs. Read the (I hope) extensive documentation in the file F2P-READ.ME! Please check it out! Suggestions for improvement are welcome. This is a small project on my spare time, so I cannot say when the next version will be available but I will take every response into consideration and given many then things may go faster... Cheers, /Micke Michael Josefsson Linkoping University From: echapin@interlog.com Subject: Re: Forth compiler Date: 27 Dec 1996 14:58:21 GMT Message-ID: <5a0o6d$p04@news.interlog.com> References: <59vn7h$9l@reader.seed.net.tw> Reply-To: echapin@interlog.com In <59vn7h$9l@reader.seed.net.tw>, Patrick Baker writes: >does anyone have a Forth compiler I may have for >free or know where to find one for mac.? There are several shareware possibilities anyway. Take a look on http://taygeta.com/forth.html. Actually, I've had a problem downloading from there lately. (Anything we should know, Skip?) Elliott Chapin echapin@interlog.com From: Andi Subject: Re: Subroutine library? Date: Fri, 27 Dec 1996 15:11:51 +0000 Message-ID: References: <5a0kci$n6@pluto.er.usgs.gov> Reply-To: Andi X-NNTP-Posting-Host: apmawds.demon.co.uk MIME-Version: 1.0 Gina, I may be wrong here but you seem to have mistaken the comp.lang.forth as a fortran group. This is not so. Forth is an excellent language with many different uses. I personally use forth in the programming of microprocessors in embedded systems. It differs from other languages in that all the libraries that exist are generally written by the user (for me at least). It is an extendable language. So I do not know of any available libraries to help you. There is however, a comp.lang.fortran group that may help if fortran is what you require. In article <5a0kci$n6@pluto.er.usgs.gov>, Gina Sousan writes >I have never seen Fortran until recently and I need some help. Is there >a subroutine library? If so, does anyone know if CHKFLG and RFCT are >part of that library? >I have a Fortran program that makes calls to those two subroutines. I >cannot find a file with those names. So, I thought that maybe they were >part of a built in library. >Any help would be greatly appreciated. > >Gina > -- > Andrew Mawdsley \ No email adverts please > Andi@apmawds.demon.co.uk \ Reply won't work Electronic design engineer \ Pride prevents PAC International LTD. England \ learning from AndrewM@pac-intl.mhs.compuserve.com \ mistakes. My views are not those of my employers \ ............. Visit Proximity Access Control at hhtp://www.pac.co.uk From: Chris Jakeman Subject: Re: polish inverted notation interpretor Date: Wed, 8 Jan 1997 07:03:00 +0000 Message-ID: References: <32D2363E.593D@eif.ch> X-NNTP-Posting-Host: apvpeter.demon.co.uk MIME-Version: 1.0 In article <32D2363E.593D@eif.ch>, Deleze Olivier - electro 94 writes >need to translate a string which contains a boolean equation into the >polish inverted notation format in order to evaluate the expression in a >turbo forth programing language. > >example: the folowing string expression : " (a+b)*/c " > > has to be written on stack in the folowing order: > > a b and c not or > >does it already exist an apropriate interpetor written in turbo forth ? A. If your input is suitable for the Forth interpreter (ie spaces between words and all words pre-defined in dictionary), then I can offer 2 evaluators published in FIG UK Forthwrite magazine by Dick Harrison and Dick Pountain. Both written for integer expressions, they are also very brief - 1 screen long! If you're interested, e-mail me and I'll type them in. B. Otherwise you need a parser. I can help you with Charlton's FoSM (ftp://www.tayg eta/com/pub/Forth/Applications/fosm1v1.zip) which is a comprehensive pattern- matcher. The tutorial includes the following integer expression evaluator: \ Evaluating \ ========== \ No pattern-matcher can be complete without a calculator to evalulate an \ expression. This one is called EVAL and, while Forth evaluates expressions \ in Reverse Polish notation, EVAL will calculate "infix" expressions like: \ \ EVAL 1 + ( 2 * 3 - -4 + (99/4) ) -> 35 \ \ Spaces are not significant. The operators + - * / have equal priorities. \ It would be easy to give * / priority over + - by adding another pattern, \ but I prefer to use () to specify priorities. \ \ EVAL calculates the result after each operator and leaves it on the Note \ Stack. The result of sub-expressions using () are nested on the Note Stack \ also. EVAL uses >N, N@ and N> to save and recover these values. It also \ uses a recursive pattern to nest sub-expressions. \ \ EVAL uses AddDecimal and 0-9 from above. << _s {{ spc }} >> \ 0 or more spaces << Digit dup N> AddDecimal >N 0-9 >> \ Accumulate decimal digit. << Number { $ - true >N | false >N } \ Save negation flag 0 >N Digit {{ Digit }} \ 1 or more digits N> N> IF negate THEN >N >> \ Negate -ve number variable 'Expression \ Forward reference << Term _s { Number | $ ( 'Expression @ execute \ Recursive definition _s $ ) } >> << Operator _s { $ + ['] + >N \ Save xt of operator | { $ - ['] - >N | { $ * ['] * >N | $ / ['] / >N } } } >> << Expression Term {{ Operator Term \ 0 or more operators N> N> N> rot rot execute >N \ Calc expression and save it }} >> ' Expression 'Expression ! \ Complete forward reference << Calculator Expression -Trail >> : Eval ( -- ) 0 word count ['] Calculator <> IF ." --> " N@ . \ Print result ELSE ." invalid expression" THEN ; \ or error message Bye for now _ _______________________| |_____ Chris Jakeman / _Forth_Interest_Group_| |____/ / /_ __ ______ _ _ | | __ at Peterborough, a cathedral / __/ / / / __ / | | | | | |/ / city 80 miles north of London. / / / / / /_/ / | \_| | | < Where do you come from? /_/ /_/ /___ / \____| |_|\_\ ______________/ / United Kingdom Voice +44 (0)1733 753489 /_______________/ Chapter From: kevin_lee@smtp.microtek.com.tw (Kevin Y.L. Lee) Subject: [?]Book "Embedded Controller Forth for the 8051 Family" Date: Wed, 08 Jan 1997 02:10:12 GMT Message-ID: <32d2fa54.1995579@168.95.195.16> Reply-To: kevin_lee@smtp.microtek.com.tw Hello, I am studying eForth and instrested in a book, It's "Embedded Controller Forth for the 8051 Family" by W. H. Payne, Academic Press. Have anyone ever seen this book ? Is its introduction or contents able to be accessed on Internet ? Or inform me its ISBN and price. I want to order one. Thanks in advance. --- Kevin Lee From: sfp@mpeltd.demon.co.uk (Stephen Pelc) Subject: Re: polish inverted notation interpretor Date: Thu, 09 Jan 97 10:57:06 GMT Message-ID: <852807426snz@mpeltd.demon.co.uk> References: <32D2363E.593D@eif.ch> Reply-To: sfp@mpeltd.demon.co.uk X-Mail2News-User: sfp@mpeltd.demon.co.uk X-Mail2News-Path: mpeltd.demon.co.uk In article <32D2363E.593D@eif.ch> e94odele@eif.ch "Deleze Olivier - electro 94" writes: > need to translate a string which contains a boolean equation into the > polish inverted notation format in order to evaluate the expression in a > turbo forth programing language. Brad Rodriguez published a BNF parser in a back issue of the ACM SIGForth journal. This included a prefix parser. We have used a derivative of this code and it works well. I do not have the reference to hand, but Brad reads this group and should be able to help. -- Stephen Pelc, sfp@mpeltd.demon.co.uk MicroProcessor Engineering - More Real, Less Time 133 Hill Lane, Southampton SO15 5AF, England tel: +44 1703 631441, fax: +44 1703 339691 From: Tony Williams Subject: Skycam? Date: Thu, 09 Jan 1997 09:31:41 +0000 (GMT) Message-ID: X-NNTP-Posting-Host: ledelec.demon.co.uk MIME-Version: 1.0 Content-Type: TEXT/PLAIN; CHARSET=ISO-8859-1 There was a tv prog re the Atlanta Olympics here last night. I saw a brief picture of a device called Skycam. Do I have vague memories that this was done with some serious Forth progging? Does it still run under Forth? -- [Tony Williams, Ledbury, Herefordshire, UK.---Pagewidth=64-----] From: "Michael A. Losh" Subject: Re: F-PC Date: Thu, 09 Jan 1997 12:15:58 -0500 Message-ID: <32D527CE.6352@tir.com> References: <32CC8059.12D6@worldchat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Mailer: Mozilla 3.0 (Win95; I) Frank Faubert wrote: > > I'm not compiling a program, just trying to figure out how to use this > program. I've tried using ." text" and I get at the end when I press > enter but the word text doesn't show up. I've also tried no space between > the quote and the beginning of the text (gets me a <- WHAT?), using just > the quote (no dot), using a single quote (') at one end and both ends all > with no luck. I'm not trying to create a Forth word just print the text I > want to the monitor (like the BASIC command print" text"). If you haven't figured it out and no one else has helped you, here's some info. If you just want to print something interactively (not compiling), F-PC has defined a word called .( that will do what you want: > .( Hello, World!) Hello, World! ok Note the space after .( . That is important, since Forth uses spaces to parse your input into separate words. Notice also the ) to close the comment. The .( is like Forth's comment word (, but has the . to remind you it is a printing word. .( ...) was set up to print comments from Forth source code as F-PC loads and compiles it, but works fine from the command line. In F-PC the ." word only works when you are compiling a new definition, as in: > : Hi! ." Hello, World!" ; > Hi! Hello, World! ok When you are comfortable, start experimenting with compiling your own words, like this example. You can start by typing them at the command line, then later learn how to load them from a file. I hope this helps and I wish you good luck. -- Mike Losh mlosh@tir.com From: jvn@faraday.clas.Virginia.EDU (Julian V. Noble) Subject: Rumors of my death are greatly exaggerated X-Nntp-Posting-Host: faraday.clas.virginia.edu Message-ID: Date: Thu, 9 Jan 1997 17:39:05 GMT Just wanted to inform my friends in the Forth community that I have survived a recent heart attack and am mending nicely. I owe my (continued) life to three things: 1. I never smoked. 2. I have led a physically active life and exercised regularly, hence had plenty of collateral circulation. 3. my wife's driving, that got me to a well-equipped emergency room BEFORE my heart stopped. Balloon angioplasty and other scientific wonders made all the difference. In fact, barring a negligibly small infarction, my heart is now sounder than it has been for years. I have no doubt that many of the imaging devices and other medical instru- ments used on me were actually programmed in Forth, even if no one trumpets the fact. A cautionary word: I have had regular stress tests and compre- hensive EKG's, with no sign of an impending attack. I never felt angina or other sign of coronary insufficiency while exercising vigorously. My angina took the form of a feeling of indigestion, and the pain was quite mild. The moral is, I guess, that my friends in their 40's and 50's should not hesitate to rush to an emergency room at a good hospital, should they feel similar symptoms. Definitely do not ignore them. Remember that most people who die of heart attacks die of arrythmia rather than of any damage to the heart muscle. So the ER is the place to be, not home or a car, if your heart decides to go into ventricular fibrillation and/or arrest. If you get there early, streptokinase can dissolve a clot blocking an artery (the usual cause of myocardial infarction) before any damage has been done. Regards to all, -- Julian V. Noble jvn@virginia.edu From: wilbaden@netcom.com (W.Baden) Subject: Re: Rumors of my death are greatly exaggerated Message-ID: References: Date: Thu, 9 Jan 1997 18:29:02 GMT Best wishes for your continued good health. Your post may saved many lives. -- Wil Let us go forth in HEALTH, JOY, and PEACE. From: Richard Astle Subject: Re: Object Oriented Forth - Syntax? Date: Thu, 09 Jan 1997 10:38:07 -0800 Message-ID: <32D53B0F.77F5@ix.netcom.com> References: <5aj0bt$c2a$1@canberra.DIALix.oz.au> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-NETCOM-Date: Thu Jan 09 12:37:09 PM CST 1997 X-Mailer: Mozilla 3.0 (Win95; I) Paul Sleigh wrote: > > I've been playing around with an idea for some simple o-o additions to ANS > Forth. I remember there was a discussion about this some time back, so I > thought I'd ask if there's any kind of concensus on what sort of syntax is > reasonable. My basic idea works like this: > > Object class: NewObject \ Object is the universal base class > > /private \ this section invisible to outside objects > > 1 CELLS field: .integer_field \ declare an integer field > 10 1 CELLS vector: .array_field > 24 7 2 CELLS matrix: .longint_2D_array_field > > /class \ this section is class methods/fields > > 1 constant: .add_to_usage > 1 CELLS field: .usage_count 0 .usage_count ! > > method: update_usage > .add_to_usage .usage_count +! > end > > /public \ this section is visible everywhere > > constructor \ only one allowed per object > 0 .integer_field ! > 10 0 DO 0 I .array_field ! LOOP > update_usage > end > > method: DoSomething -forward > virtual: DrawMe -forward > WM_PAINT dynamic: HandlePaintMessage -forward > > endclass > > NewObject method: DoSomething > \ do something > end > > : TEST > NewObject new with > DoSomething > DrawMe > free > endwith > ; > > and so on. > > I was thinking of adding properties, a la Delphi, but I think not - in Forth > I can define a method called Count ( -- n ) and one called :Count ( n -- ) > which between them would probably operate on a private variable called > .count (lowercase with dots and underscores means "private", purely as a > convention). > > Right. What do you think? Is this plausible? Laughable? Totally > unheard-of? I'd like to hear what folks think! > > : Eric : I gather "/class" means something like "protected" in Delphi etc.? One problem with this kind of syntax in Forth--unless you can repeat terms--is that sometimes you might want to define something in the "private" section that depends on something in the "public" section. In Delphi, Java, C++, etc., this is no problem, since the compiler makes multiple passes (sometimes you have to do forward declarations etc. which can be simulated in Forth by deferred words, but in general the principal is there). If you allow going BACK to a "private" section after a "protected" or "public" section you solve the compilation problem, but mess up the beauty of the source code a bit. (Of course you also want to be able to add methods AFTER the class is defined, but that's another issue.) On another, simpler, line, I've been using a syntax that is NOT Object Oriented, but does provide data hiding features, based more on Modula-2 and the like. I use two different syntaxes, depending on whether I can get the clean sequential separation between the private and public parts or not. Syntax I: PRIVATE \ private words (variables, colon definitions, etc.) invisible later PUBLIC \ public things visible later--the interface END-MODULE Syntax II: MODULE ( a synonym for PRIVATE in my implementation \ private AND public definitions EXPORTS \ a list of names of the public members END-MODULE The way I do this is to have END-MODULE throw away the headers of all the private words. My implementation does not use hashing for headers: what PRIVATE (aka MODULE) does is set up a separate memory area for headers, away from the normal dictionary. PUBLIC then puts headers right after the headers defined just before PRIVATE, and END-MODULE ties off the link, so that the first name after PUBLIC links back to the last name before PRIVATE. (Between PUBLIC and END-MODULE the link goes from the first word after PUBLIC to the words between PRIVATE and PUBLIC to the last word before PRIVATE, i.e., in the order in which words are defined.) A system using hashed headers would probably just throw away headers and re-hash at this point. EXPORTS works the same way, except that the names listed between EXPORTS and END-MODULE become ALIASES for the words of the same name between MODULE and EXPORTS. The earlier headers are thrown away, and the later ones are kept. The advantages of this system are: preservation of name space (I have a 64K segment for headers, but still run out); data hiding; and the elimination of much dictionary clutter. I don't have to worry about reusing a short name, since most things I can't remember all that well are PRIVATE. The advantages of this should be obvious. Vocablularies have some features that this technique doesn't have, but Vocabularies, I think, encourage sloppy programming, since parts of the same thing can be scattered throughout your code. I could get on this soap box (and have), but I'll leave it for now. Finally, the big problem with OO word sets is that everyone has his/her own, or at least there are too many floating around. My proposal here is not OO, but is useful, and is, I think, straightforward enough (and well-tested in other languages) to be accepted as is by anyone who needs it. --Richard From: Mycroft Subject: Re: Skycam? Date: Thu, 09 Jan 1997 15:15:35 -0600 Message-ID: <32D55FF7.5E@cis.uab.edu> References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Mailer: Mozilla 3.0 (X11; I; SunOS 5.5 sun4m) Tony Williams wrote: .> .> There was a tv prog re the Atlanta Olympics here last night. .> I saw a brief picture of a device called Skycam. Do I have .> vague memories that this was done with some serious Forth .> progging? Does it still run under Forth? .> -- .> [Tony Williams, Ledbury, Herefordshire, UK.---Pagewidth=64-----] I remember reading YEARS ago in Byte about the development of Skycam. The developers did use Forth for the programming language. Since it worked well and the old "if it ain't broke, don't fix it" rule usually applies in such cases, I believe it's probably still running under Forth. From: "=?ISO-8859-1?Q?Bengt_Karlstr=F6m?=" Subject: Forth for Windows CE Date: 9 Jan 1997 21:22:06 GMT Message-ID: <01bbfe73$3b050720$8f75f482@pentium> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit NNTP-Posting-User: s-48042 Is there anybody out there working with a Forth kernel for Windows CE? Please let me know if you know anything about it. Bengt Karlström, ProComp Software