ebook img

Library of Forth routines and utilities PDF

384 Pages·1986·14.473 MB·English
by  TerryJames
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Library of Forth routines and utilities

TEXT-PROCESSING ROUTINES A MINI-DATABASE MANAGER GRAPHICS ROUTINES ASSEMBLY LANGUAGE ROUTINES APPLICATION FRONT ENDS BY JAMES D. TERRY FOREWORD BY MIKE EDELHART A SHADOW LAWN PRESS BOOK LIBRARY OF FORTH ROUTINES AND UTILITIES THE IN DISPENSABLE COLLECTION OF FORTH ROUTINES FOR ALL APPLICATIONS... Forth is a special computer language in that it provides enormous flexibility for a programmer. Forth commands can build atop one another; in effect, skillful Forth programmers can build their own computer language. Forth’s special capabilities have made it into a favorite tool among the experimental fringe of the computer community. It is being used for such things as enabling a computer to read English sentences—and respond in perfect English. Developers of artificial intelligence and expert systems frequently work in Forth. The routines in this book will provide every Forth programmer with the tools to explore the exciting potential of this powerful new language. JAMES TERRY is a cofounder of Terry Brothers Software and author of Atila, TBS’s version of Forth. He has designed several special purpose languages for use in areas ranging from industrial control to home entertainment. In a lighter moment, he conceived “Fishies,” the program that turns your computer into an aquarium. He lives with his wife Tern in Cranbury, New Jersey. MIKE EDELHARTis West CoastBureau ChiefofZ/fDavisPublications. Formerly Executive Editor of PC Magazine, he is author of several books, including Omni Online Database Directory. LIBRARY OF FORTH ROUTINES AND UTILITIES by James Terry With a Preface by Mike Edeihart © A Plume/Shadow Lawn Press Book New American Library New York and Scarborough, Ontario NAL BOOKS ARE AVAILABLE AT QUANTITY DISCOUNTS WHEN USED TO PROMOTE PRODUCTS OR SERVICES. FOR INFORMATION PLEASE WRITE TO PREMIUM MARKETING DIVISION, NEW AMERICAN LIBRARY, 1633 BROADWAY, NEW YORK, NEW YORK 10019. © 1986 SHADOW LAWN PRESS. All rights reserved. For information address New American Library. © TRADEMARK REG. US PAT OFF AND FOREIGN COUNTRIES REGISTERED TRADEMARK—MARCA REGISTRADA HECHO EN HARRISONBURG, VA., U.S.A. SIGNET, SIGNET CLASSIC, MENTOR, ONYX, PLUME, MERIDIAN and NAL BOOKS are published in the United States by New American Library, 1633 Broadway, New York, New York 10019, in Canada by the New American Library of Canada Limited, 81 Mack Avenue, Scarborough, Ontario M1L 1M8. 1’pography by Shadow Lawn Press Main Street Neshanic Station, NJ 08853 Atila Software is a registered trademark of Terry Brothers Software. P0 Box 11 Hightstown, NJ 08520 First printing, August, 1986 123456789 PRINTED IN THE UNITED STATES OF AMERICA CONTENTS 1 Introduction •.................................................... 1 2 CASE Statements •••.....••••••••••••••••.4•................... 3 A Programmer’s Calculator .............................. 11 4 Full—Screen Editor ............................................ 1 9 5 8088 Macro Assembler ................................... 41 6 8087 Numerical Coprocessor ........................... 1 03 7 Strings ............................................................. 1 69 8 Input Formatting ............................................. 1 88 9 Displays and Output Formatting .................... 215 10 Natural Language Processing ......................... 230 1 1 Data Structures ............................................... 267 12 Expert Systems ................................................ 322 1 3 Debugging Programs ...................................... 368 Appendixes ..................................................... 373 Index ............................................................... 374 To Tern, forever. Prefti cc Forth is a language that occupies the space between concept and reality. In a very general sense, this statement could be true of any programming language. But it fits Forth more elegantly than any other and is a testament to Forth’s unique position in the programming pantheon. Other programming languages serve as media for translating ideas into the reality of computer performance, but they accomplish this task by forcing fluid concepts through rigid lattices of commands and structures. These languages don’t truly reside between thought and reality; they stand fully over on the tangible, fixed, and pragmatic side of things. They are like ornate gates through which ideas must pass. Forth, however, is crucially different. Forth does not force concepts to conform to a predetermined method or solution or expression. Rather, unlike any other language, it really does hover between thought and action. It can bring a structure and coherence to free flowing ideas that makes them stronger and more reliable. It can also stretch its own operation in totally unanticipated ways to conform itself to the demands of new, fresh, radical thoughts. In other words, only Forth can create a program that reflects the tenor and tone of a particular individual or a particular thought. It doesn’t merely solve a problem or express a concept, it solves it in the way the conceiver wants it solved, expresses it in the manner the author is most comfortable with. I first became aware of the unique and powerful possibilities of Forth about three years ago. I was watching an episode of the TV show “Fame.” One of the students was supposed to be a computer whiz as well as a gifted musician who had cooked up a breathtaking finale to the school talent show. He trained video cameras on the bare stage, arranged huge display screens near the proscenium, and began blasting away on this synthesizer. A dancer emerged and began moving to the music. Instantly, each movement was mirrored on the huge screens. Then the images began to glow with colors, to break up and flow around the screens, to turn into patterns of bubbles, stars, circles. The images flowed into abstract patterns, returned again to recognizable figures; then shadowed, rippled, and swirled. It was altogether a riveting spectacle, and my instinctual science reporter’s reaction was to wonder, “How in the hell did they do that?” After some discreet snooping, I discovered that the answer was Forth. The language’s remarkable extensibility had made it possible to create an environment specifically tailored to that performance. From Forth, programmers had fashioned a language of dance and display whose commands were things like “shadow,” and “start,” and “swirl.” Using these specific tools, it was possible to transform the entire real-time display of the dance with individual keystrokes; to, as it were, play the display screens much as the musicians were playing their guitars and synths. Ever since then I have been fascinated by Forth’s ability to allow creative people—whether in the video studio or the nuclear physics laboratory—to mirror the world as they see it in a form that can energize computers to action. Forth is a remarkable tool for linking the quicksilver of creativity with the stolid power of the computer. But there is more to Forth even than that. The language also provides one of the best available tools for mirroring the operation of a computer. Just as extensibility allows a creative mind to build unique constructs, it allows the skilled programmer to create the most detailed instructions for the computer. Forth approaches assembly language in the degree of machine control it provides the programmer—and the resulting speed of programs written with it. In short, Forth may be the broadest ranging programming environment in existence today. It simply does more for the user than anything else. As a result, it seems to me that the Library of Forth Routines and Utilities represents an extremely valuable resource for anyone who hopes to get the most from his or her micro. The programs contained here demonstrate how, through the building of new “words,” Forth can form the building blocks for any application situation or produce any kind of reaction from the electronic innards of a computer. These routines provide a superior method for exploring Forth’s potential and extending basic concepts learned elsewhere into useful projects. Beyond that, they are just plain valuable to any micro user who wants a comprehensible method for bringing more functionality to his machine. On the open market, the capabilities displayed by the programs contained in this book would run into the hundreds, if not thousands, of dollars. No other language allows computer users to put as much of themselves into their work, or to get as much from their machines without extended technical knowledge. It is like the tale of “Goldiocks and the Three Bears.” For the vast majority of us, the bowl offering assembly language is too hot, too hard, too demanding. The little BASIC bowl is too cold, too general, too slow. But the bright blue bowl full of Forth proffers a splendid balance between the two: it’s just right. Mike Edelhart VIII I Introduction Programming languages are like human languages: their main purpose is communication. Programming languages are how we communicate with computers, how we instruct them to carry out the actions we want them to perform. Just as the language we speak and write affects how well we can communicate with our fellow human beings, so too does our choice of a programming language control how effectively we can communicate with our computers. Forth is one of the many programming languages you can use to communicate with your IBM-PC. In this book we try to increase your Forth vocabulary, and make it easier fOr you to communicate with your IBM-PC. The Library of Forth Routines is not an introduction. It assumes that you have at least a working knowledge of Forth. It will, however, take you from your working knowledge to working Forth programs. The ready-to-use “toolkits” provided here should enable you to increase your Forth programming speed and efficiency. The Forth words presented in this book can be used without restriction in any private or commercial program. FORTH DIALECTS Each version of Forth available can be thought of as a dialect of the language. The Forth words contained in this book have all been implemented and tested in actual programs, hence they are written in a specific version of Forth. That version is, naturally enough, one published by the author’s company, and is known as Atila. You can order Atila and the source for all the words in this book using the coupon you will find in the back of the book. If you are using Atila, you will run into no dialect or version problems. The words in this book have been written to be universal to almost all Forth dialects. You should also be able to use these programs with other versions of Forth. No unusual or esoteric words specific to Atila have been used whenever possible. Appendix B includes sources for any Atila words that might possibly not be in your Forth. Additionally, all words have been defined in uppercase, and with the first three letters and length unique, to avoid problems with Forths that have these restrictions. Every effort has been made to present you with Forth code that you can use, whatever version of Forth you have. THE IBM-PC While this book is directed toward the IBM-PC and compatibles, most of the words presented could be used in any Forth system on any computer. Only Chapters 4,5,6, and 9 are truly dependent on the IBM-PC. Chapter 5 could be applied to any 8088/8086 system, and Chapter 6 to any computer that uses the 8087. This leaves 9 of the book’s 13 chapters that can be implemented on any Forth system not run on a PC. The version of Forth used in this book, and most other Forths available for the IBM-PC, is a 16-bit or small memory model Forth: This means that it uses address data that are 16 bits wide. While the IBM-PC can have up to 640K of memory, 16 bits only allows 64K to be addressed. To utilize the extra memory, most small memory model Forths come with a set of words to access the extra memory using 32-bit pointers, which take up two stack entries. There is, as yet, no standardization in the Forth community for these words. Presented below are the Atila words for accessing the extra memory on the IBM-PC. If you are not using Atila, you will need to refer to the documentation provided with your version of Forth to find equivalent words. (Note: The stack notation used in this book is described in Appendix A). Leave the segment address Atila is executing in, used primarily to convert Atila addresses to 32-bit format. Store N in the cell at segment A2, offset Al. Leave N, the cell at segment A2, offset Al. Move N bytes from segment A2, offset Al, to segment A4, offset A3. Move backwards in memory. Store N in the byte at segment A2, offset Al. Leave N, the byte at segment A2, offset Al. 2 Library of Forth Routines and Utilities

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.