TweetFollow Us on Twitter

Forth SANE
Volume Number:1
Issue Number:1
Column Tag:FORTH FORUM

“Forth Goes SANE”

By Joerg Langowski

“Forth Goes SANE”

One of the little unexpected features of the Macintosh that was very important to me for doing some actual calculations is the built-in floating point package. There is a full set of floating point routines, ranging from the four basic operations up to trigonometric and other functions, built right into the Mac, and they can be called up through a standard toolbox calling procedure and turn out to be reasonably (if not really breathtakingly) fast. If you want to try out the floating point routines and have access to MacForth 1.1, the following should give you some useful information. MacForth level 2 supposedly makes use of the same routines, but it was not available at the time that this was written.

Let’s first look at some general features. The floating point package, called FP68K by Apple, is based on a proposed IEEE floating point standard P754. It can work on 32, 64 and 80-bit floating point numbers and 16, 32, and 64-bit integers. Some of the operations that it supports are summarized in Table 1. (Because of space limitations, this table is by no means complete, but I tried to list the most important operations.) All calculations are internally done with 80-bit accuracy; this seems spectacular, but a little overdone. Speed could probably be improved a lot, had Apple allowed for working with lower precision.

Floating point operations are always called in the same manner: the addresses of the two arguments, source and destination, are pushed on the stack, followed by the opcode; then the toolbox trap _FP68K (for the basic operations) or _ELEMS68K (for the more complicated functions) is called. The result will be deposited in the destination address, which is overwritten. To understand the calling procedure better, let us see how toolbox traps are called from MacForth.

There are three types of toolbox traps in the Macintosh. Operating system traps expect a buffer pointer in register A0 and return an I/O result in D0; Pascal procedures expect their parameters on the stack, and Pascal functions expect a space for their result on the bottom of the stack, followed by all the parameters. MacForth 1.1 provides predefined words for all three trap types; they will be described in detail in the next issue of MacTech. The floating point package is called as a Pascal procedure, with its parameters on the stack. Since stack items in MacForth are 32 bits in length, while some of the toolbox procedures expect 16 bit parameters, there exist three different Forth words for Pascal-type calls, depending whether there are none, one or two 16-bit items on top of the stack: MT, W>MT and 2W>MT.

The floating point routines always expect one 16 bit parameter on top, all other parameters (up to three) are 32 bits long. The MacForth word to call these routines therefore would be W>MT. The trap addresses are $A9EB for FP68K and $A9EC for ELEMS68K. (These are, actually, the addresses of Package 4 and Package 5 of the Operating System Packages). We can now define our trap calls:

HEX
:  A9EB  W>MT FP68K ;
:  A9EC  W>MT ELEMS68K ;

Then we can call a floating point operation by pushing the parameters on the stack, followed by the opcode, and executing FP68K or ELEMS68K. As an example, if we had defined the 10-byte variables SOURCE and DESTINATION:

SOURCE  CREATE  10  ALLOT 
DESTINATION  CREATE  10  ALLOT

and had put real numbers into both of them, we would add SOURCE into DESTINATION by executing:

SOURCE  DESTINATION  0  FP68K 

after which operation DESTINATION would contain the 80-bit result of the addition, while the contents of SOURCE would be unchanged. A function from the ELEMS68K package would be called in an equally simple way, e.g. the natural logarithm of DESTINATION is obtained by saying DESTINATION 0 FP68K .

The 16-bit opcode consists of two parts. The high order byte gives the format of the SOURCE operand (except for opcodes $9 and $10, see table 1), the low order byte specifies the operation. Listing 1 defines some Forth words that call the most important floating point operations through toolbox calls with the appropriate opcode on the stack.

There is one operation that deserves special attention, and that is the floating point - decimal conversion routine. This routine expects three parameters underneath the opcode: deepest in the stack is a pointer to a ‘format record’, followed by the source variable pointer, and then the destination pointer. For a conversion from a real number to a decimal number, the source variable is 10-byte floating point and the destination variable consists of a 2 byte integer which is 0 for positive and >256 for negative numbers, a 2 byte signed integer which contains the exponent, a 1 byte field which contains the length and a 20 byte field which contains the significant digits of the mantissa. The format record is, for our purposes, a 4 byte integer which gives the number of significant digits to be used in the conversion. Example, assume that Y points to the real number 2.345, DECSTRING to a 25-byte array and FORMAT to a 4-byte integer containing 10:

FORMAT Y DECSTRING B2D

will leave zero in the first two bytes of DECSTRING, +9 in the next two bytes, 10 in the next byte and the ASCII characters “2345000000xxxxxxxxxx” thereafter (x = undefined). Vice versa, one can set up a decimal string in a 25 byte array according to these rules and call:

FORMAT DECSTRING Y D2B                  

which will leave the real number corresponding to DECSTRING in Y. The word DEC. (defined in listing 1) makes use of this conversion routine to output a real number.

Try and play with those floating point routines a little; they make a very useful addition to Forth 1.1, if you want to do any kind of numerical calculations. You may want to time the floating point package using the benchmarks at the end of listing 1. I found that an 80-bit precision add takes about 0.4 ms, a multiply about 1 ms.

In the next issue of MacTech we will take a closer look at toolbox calling from Forth and at the internal structure of Forth words, so that you can write in-line assembly code for time critical operations.

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Garmin Express 5.8.0.0 - Manage your Gar...
Garmin Express is your essential tool for managing your Garmin devices. Update maps, golf courses and device software. You can even register your device. Update maps Update software Register your... Read more
Myriad 4.2.1 - Audio batch processor.
Myriad is, simply put, one of the best audio batch processors. Totally redesigned, it looks beautiful and delivers incredible performance. Let Myriad do the heavy lifting while you get back to doing... Read more
Arq 5.10 - Online backup to Google Drive...
Arq is super-easy online backup for Mac and Windows computers. Back up to your own cloud account (Amazon Cloud Drive, Google Drive, Dropbox, OneDrive, Google Cloud Storage, any S3-compatible server... Read more
Evernote 6.13.1 - Create searchable note...
Evernote allows you to easily capture information in any environment using whatever device or platform you find most convenient, and makes this information accessible and searchable at anytime, from... Read more
Parallels Desktop 13.2.0 - Run Windows a...
Parallels allows you to run Windows and Mac applications side by side. Choose your view to make Windows invisible while still using its applications, or keep the familiar Windows background and... Read more
jAlbum Pro 15.0 - Organize your digital...
jAlbum Pro has all the features you love in jAlbum, but comes with a commercial license. You can create gorgeous custom photo galleries for the Web without writing a line of code! Beginner-friendly... Read more
iFinance 4.3.4 - Comprehensively manage...
iFinance allows you to keep track of your income and spending -- from your lunchbreak coffee to your new car -- in the most convenient and fastest way. Clearly arranged transaction lists of all your... Read more
VueScan 9.5.92 - Scanner software with a...
VueScan is a scanning program that works with most high-quality flatbed and film scanners to produce scans that have excellent color fidelity and color balance. VueScan is easy to use, and has... Read more
Scrivener 3.0 - Project management and w...
Scrivener is a project management and writing tool for writers of all kinds that stays with you from that first unformed idea all the way through to the first - or even final - draft. Outline and... Read more
SuperDuper! 3.0.1 - Advanced disk clonin...
SuperDuper! is an advanced, yet easy to use disk copying program. It can, of course, make a straight copy, or "clone" -- useful when you want to move all your data from one machine to another, or do... Read more

Latest Forum Discussions

See All

The best mobile games to play during dre...
| Read more »
The mobile gamer's guide to Black F...
We're starting to catch wind of some exciting deals in the mobile gaming space for Black Friday. There are big discounts on mobile phones and accessories cropping up already, so you might want to get a move on things ahead of the big day. It's... | Read more »
The best pre-Black Friday deals - Novemb...
Black Friday will soon be upon us, but online retailers are already getting a headstart on the steep discounts. Don't wait until Friday—you'll find some pretty good deals all over the internet without waiting in lines or competing with other... | Read more »
Mighty Battles guide - how to build a so...
Mighty Battles, the latest title from Hothead Games, is set to take the App Store by storm. The game puts a welcome twist on lane battlers, adding FPS elements to spice things up a bit. You'll collect cards to put your own military unit to gether,... | Read more »
Rules of Survival guide - how to be the...
The PUBG craze makes its way to mobile, with more and more battle royale games debuting on iOS and Android. Rules of Survival joins the ranks of mobile PUBG-likes, offering a classic battle royale experiences that doesn't vary too much from its... | Read more »
The best new games we played this week -...
The weekend is upon us friends, and it's time to take a look back and reflect on all of the wonderful games we've played over the past few days. This week was jam packed with new releases. There were some big, long awaited launches, some fun... | Read more »
Lineage II: Revolution guide - tips and...
At long last, Lineage II: Revolution has now come to western shores, bring Netmarble's sweeping MMORPG to mobile devices. It's an addictive, epic experience, but some of the systems in the game can be a bit overwhelming. Here are a few tips to help... | Read more »
A Boy and His Blob (Games)
A Boy and His Blob 1.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0 (iTunes) Description: | Read more »
Fight terrible monsters and collect epic...
Released on Western markets early last month, Dragon Project, created by Japanese developer COLOPL, brings epic monster hunting action to mobile for the very first time. Collect a huge array of weapons and armor, and join up with friends to fight... | Read more »
I Am The Hero (Games)
I Am The Hero 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: I Am The Hero is a pixel art, beat 'em up, fighting game that tells the story of a "Hero" with a glorious but mysterious past.... | Read more »

Price Scanner via MacPrices.net

Black Friday sale: Mac minis for $100 off MSR...
B&H Photo has Mac minis on sale for up to $100 off MSRP as part of their Black Friday sale, each including free shipping plus NY & NJ sales tax only: – 1.4GHz Mac mini: $399 $100 off MSRP – 2... Read more
Use your Apple Education discount to save up...
Purchase a new Mac using Apple’s Education discount, and take up to $300 off MSRP. All teachers, students, and staff of any educational institution with a .edu email address qualify for the discount... Read more
Adorama posts Black Friday deals on Apple Mac...
Adorama has posted Black Friday sale prices on many Macs, with MacBooks and iMacs available for up to $200 off MSRP. Shipping is free, and Adorama charges sales tax in NJ and NY only: MacBook Pros... Read more
Save up to $300 on 15″ 2.2GHz MacBook Pros
B&H Photo has the 15″ 2.2GHz MacBook Pro available for $200 off MSRP including free shipping plus NY & NJ sales tax only: – 15″ 2.2GHz MacBook Pro (MJLQ2LL/A): $1799 $200 off MSRP Amazon.com... Read more
Save up to $180 with Apple Certified Refurbis...
Apple has Certified Refurbished 2017 13″ MacBook Airs available starting at $849. An Apple one-year warranty is included with each MacBook, and shipping is free: – 13″ 1.8GHz/8GB/128GB MacBook Air (... Read more
Black Friday deals on Apple Macs now live at...
Amazon has MacBook Pros, MacBook Airs, MacBooks, and iMacs on sale for up to $200 off MSRP for Black Friday week. Shipping is free. Note that stock of some Macs may come and go during the week, so... Read more
Black Friday pricing on Macs and iPads now av...
B&H Photo has lowered prices on many Macs, iPads, and iPad Pros as part of their Black Friday week sale. Save up to $200 on MacBooks and iMacs and up to $150 on iPads. B&H charges sales tax... Read more
Best Apple iPad deals this weekend, up to $80...
Apple resellers are offering 9.7″ iPads and 10.5″ iPad Pros for up to $80 off MSRP this weekend as part of their early Holiday and Black Friday sales: Adorama is offering new 2017 9.7″ 32GB WiFi... Read more
Early Black Friday sale: Apple iMacs for up t...
B&H Photo has 27-inch iMacs in stock and on sale for up $130-$150 off MSRP including free shipping. B&H charges sales tax in NY & NJ only: – 27″ 3.8GHz iMac (MNED2LL/A): $2149 $150 off... Read more
Apple restocks refurbished Mac minis starting...
Apple has restocked Certified Refurbished Mac minis starting at $419. Apple’s one-year warranty is included with each mini, and shipping is free: – 1.4GHz Mac mini: $419 $80 off MSRP – 2.6GHz Mac... Read more

Jobs Board

*Apple* Retail - Multiple Positions - Apple,...
Job Description: Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
Product Manager - *Apple* Pay on the *Appl...
Job Summary Apple is looking for a talented product manager to drive the expansion of Apple Pay on the Apple Online Store. This position includes a unique Read more
*Apple* Pro/Consumer Apps Support Engineer -...
…exemplify AppleCare's expert technical support paired with exceptional customer service for Apple 's software apps. This person is a problem solver, who understands Read more
Partner Marketing Manager, *Apple* Pay - Ap...
Job Summary The Apple Pay partner marketing team is looking for a Marketing Manager to develop and drive US programs. The right candidate will be passionate about Read more
*Apple* Solution Consultant - Apple (United...
# Apple Solution Consultant - Rochester, MN Job Number: 113037950 Rochester, MN, Minnesota, United States Posted: 19-Sep-2017 Weekly Hours: 40.00 **Job Summary** Are Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.