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

SpamSieve 2.9.37 - Robust spam filter fo...
SpamSieve is a robust spam filter for major email clients that uses powerful Bayesian spam filtering. SpamSieve understands what your spam looks like in order to block it all, but also learns what... Read more
Viber 11.3.1 - Send messages and make fr...
Viber lets you send free messages and make free calls to other Viber users, on any device and network, in any country! Viber syncs your contacts, messages and call history with your mobile device, so... Read more
Monosnap 3.6.1 - Versatile screenshot ut...
Monosnap lets you capture screenshots, share files, and record video and .gifs. Features Capture Capture full screen, just part of the screen, or a selected window Make your crop area pixel... Read more
WhatRoute 2.2.6 - Geographically trace o...
WhatRoute is designed to find the names of all the routers an IP packet passes through on its way from your Mac to a destination host. It also measures the round-trip time from your Mac to the router... Read more
MacFamilyTree 9.0.5 - Create and explore...
MacFamilyTree gives genealogy a facelift: modern, interactive, convenient and fast. Explore your family tree and your family history in a way generations of chroniclers before you would have loved.... Read more
WhatsApp 0.3.4375 - Desktop client for W...
WhatsApp is the desktop client for WhatsApp Messenger, a cross-platform mobile messaging app which allows you to exchange messages without having to pay for SMS. WhatsApp Messenger is available for... Read more
Mactracker 7.8.1 - Database of all Mac m...
Mactracker provides detailed information on every Mac computer ever made, including items such as processor speed, memory, optical drives, graphic cards, supported OS X versions, and expansion... Read more
Boom 3D 1.3.1 - 3D surround sound and ph...
Boom 3D is a revolutionary app with 3D Surround Sound and phenomenally rich and intense audio that is realistic and works on any headphones. Features 3D surround sound Built-in audio player... Read more
OmniGraffle 7.11.2 - Create diagrams, fl...
OmniGraffle helps you draw beautiful diagrams, family trees, flow charts, org charts, layouts, and (mathematically speaking) any other directed or non-directed graphs. We've had people use Graffle to... Read more
OmniGraffle Pro 7.11.2 - Create diagrams...
OmniGraffle Pro helps you draw beautiful diagrams, family trees, flow charts, org charts, layouts, and (mathematically speaking) any other directed or non-directed graphs. We've had people use... Read more

Latest Forum Discussions

See All

Steam Link Spotlight - Dicey Dungeons
Steam Link Spotlight is a new feature where we take a look at PC games that play exceptionally well with the Steam Link app. In case you missed it, our last entry focused on Faeria, a collectible card game that used to be available on the App Store... | Read more »
I can't believe Sky came out after...
I play games almost exclusively on mobile, and I’ve been doing so since around the time I started writing for 148Apps. This is why I’m late to the party on Journey. It wasn’t until last week that the game was playable on mobile, and it wasn’t until... | Read more »
Gigantic X guide - What you need to know...
Gigantic X continues to inspire loot lust over here at 148Apps, particularly because the game has already been updated just in its second week of release. Unfortunately, this 1.1.0 patch doesn’t bring a whole ton of new goodies with it, but it does... | Read more »
Steam Link Spotlight - Faeria
If you’ve been following 148Apps.com for a while, chances are you’ve seen me talk about Faeria. I reviewed it when it initially came out on iOS, and again when The Adventure Pouch: Oversky came out. I also put the game on my best games of 2017 list... | Read more »
Gigantic X guide - Tips and tricks for b...
Gigantic X has only been out for a little over a week, but it’s shaping up to be the mobile loot shooter of our dreams. That said, it’s not exactly the most friendly game out there. We noted in our review that you need to invest some time in the... | Read more »
Do Not Feed The Monkeys is one of the mo...
I’ve done a lot of messed up stuff in video games. I’ve beat people to death, slaghtered innocent animals, and even committed genocide. In doing all of that though, I’m not sure I’ve felt as uncomfortable as I have while playing Do Not Feed The... | Read more »
Civilization VI - What you need to know...
Last week, the mobile version of Civilization VI got updated to include the huge Rise and Fall expansion. Where previous updates to the game provided one or two new civilizations and maybe a few scenarios, Rise and Fall makes sweeping changes to... | Read more »
Combo Quest (Games)
Combo Quest 1.0 Device: iOS Universal Category: Games Price: $.99, Version: 1.0 (iTunes) Description: Combo Quest is an epic, time tap role-playing adventure. In this unique masterpiece, you are a knight on a heroic quest to retrieve... | Read more »
Hero Emblems (Games)
Hero Emblems 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: ** 25% OFF for a limited time to celebrate the release ** ** Note for iPhone 6 user: If it doesn't run fullscreen on your device... | Read more »
Puzzle Blitz (Games)
Puzzle Blitz 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: Puzzle Blitz is a frantic puzzle solving race against the clock! Solve as many puzzles as you can, before time runs out! You have... | Read more »

Price Scanner via MacPrices.net

Price drop! B&H now has new 4-Core Mac mi...
B&H Photo has dropped prices on 2018 4-Core Mac minis to $100 off MSRP, only $699. They’re also offering a $100 discount on the 6-Core Mac mini. Shipping is free: – 3.6GHz Quad-Core mini: $699 $... Read more
Amazon is offering a 37% discount on Apple Sm...
Amazon has Apple Smart Keyboards for current-generation 10″ iPad Airs and previous-generation 10″ iPad Pros on sale today for $99.99 shipped. That’s a 37% discount over Apple’s regular MSRP of $159... Read more
12″ iPad Pros on sale today for up to $400 of...
Amazon has new 2018 Apple 12″ iPad Pros in stock today and on sale for up to $400 off Apple’s MSRP. These are the same iPad Pros sold by Apple in its retail and online stores. Be sure to select... Read more
Apple has 2019 iMacs, Certified Refurbished,...
Apple has Certified Refurbished 2019 21″ & 27″ iMacs now available starting at $929 and up to $350 off the cost of new models. Apple’s one-year warranty is standard, shipping is free, and each... Read more
Sale! New 11″ WiFi iPad Pros for up to $400 o...
Walmart has new 2018 Apple 11″ WiFi iPad Pros in stock today and on sale for up to $400 off Apple’s MSRP. These are the same iPad Pros sold by Apple in its retail and online stores. Choose free local... Read more
New 2019 15″ 2.3GHz 8-Core MacBook Pro on sal...
Apple resellers B&H Photo and Amazon are offering the new 2019 15″ 2.3GHz Silver 8-Core MacBook Pro for $2449. That’s $350 off Apple’s MSRP and the lowest price available for an 8-Core MacBook... Read more
B&H has new 4-Core and 6-Core Mac minis o...
B&H Photo has the new 2018 4-Core and 6-Core Mac minis on sale for $80-$100 off Apple’s standard MSRP. Shipping is free: – 3.6GHz Quad-Core mini: $719 $80 off MSRP – 3.0GHz 6-Core mini: $999 $... Read more
10″ iPad Airs on sale for up to $50 off Apple...
B&H Photo has new 10.5″ iPad Airs on sale today for $30-$50 off Apple’s standard MSRP including free overnight shipping to many address in the US: – 10.5″ 64GB WiFi iPad Air: $469 $30 off MSRP –... Read more
Apple has clearance 2018 13″ 2.3GHz Quad-Core...
Apple has Certified Refurbished 2018 13″ 2.3GHz 4-Core Touch Bar MacBook Pros available starting at $1489. Apple’s one-year warranty is included, shipping is free, and each MacBook has a new outer... Read more
Clearance 2018 13″ MacBook Airs drop to an al...
B&H Photo has clearance 2018 13″ MacBook Airs available for $300 off Apple’s original MSRP with prices starting at only $899. Overnight shipping, or expedited shipping, is free depending on your... Read more

Jobs Board

*Apple* Mobility Pro - Best Buy (United Stat...
**719892BR** **Job Title:** Apple Mobility Pro **Job Category:** Store Associates **Location Number:** 001096-Grove City-Store **Job Description:** At Best Buy, our Read more
Best Buy *Apple* Computing Master - Best Bu...
**719975BR** **Job Title:** Best Buy Apple Computing Master **Job Category:** Store Associates **Location Number:** 001198-East Orange-Store **Job Description:** The Read more
*Apple* Mobile Master - Best Buy (United Sta...
**721421BR** **Job Title:** Apple Mobile Master **Job Category:** Store Associates **Location Number:** 000878-Dubuque-Store **Job Description:** **What does a Best Read more
Best Buy *Apple* Computing Master - Best Bu...
**716411BR** **Job Title:** Best Buy Apple Computing Master **Job Category:** Sales **Location Number:** 001089-Watertown-Store **Job Description:** **What does a Read more
*Apple* Mobility Pro - Best Buy (United Stat...
**721359BR** **Job Title:** Apple Mobility Pro **Job Category:** Store Associates **Location Number:** 000952-Baytown-Store **Job Description:** At Best Buy, our Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.