Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Niidae Wiki
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Jupiter Ace
(section)
Page
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Programming == [[File:Jupiter Ace vlist png.png|thumb|Ace's Forth vocabulary]] Its most distinctive characteristic was the choice of Forth, a [[structured programming|structured]] language. [[Threaded code|Threaded compilation]] allowed programs written to run nearly as fast as many native-[[compiler|compiled]] languages loaded by more expensive computers. Forth was considered well-adapted to microcomputers with their small memory and relatively low-performance processors.<ref>{{Cite news |last=Williams |first=Gregg |date=August 1980 |title=Editorial - Threads of a FORTH Tapestry |url=https://vintageapple.org/byte/pdf/198008_Byte_Magazine_Vol_05-08_The_Forth_Language.pdf |work=Byte |pages=6}}</ref> Forth programs are memory-efficient; as they become bigger, they reuse more previously-defined code.<ref>{{Cite news |last=James |first=John S. |date=August 1980 |title=What is Forth? - Characteristics of FORTH Code |url=https://vintageapple.org/byte/pdf/198008_Byte_Magazine_Vol_05-08_The_Forth_Language.pdf |work=Byte |pages=102}}</ref> Control structures could be nested to any level, limited only by available memory. This allowed complex programs to be implemented, even allowing [[recursion (computer science)|recursive programming]]. The Ace's Forth was stated to be "ten times faster than Basic"<ref name="PCW">{{cite web | url= http://jupiter-ace.co.uk/news_pcw82072600005.html | work= Popular Computing Weekly | date= 26 August 1982 | title= Spectrum team deal their Ace | access-date= 15 November 2012 | archive-url= https://web.archive.org/web/20160303233954/http://jupiter-ace.co.uk/news_pcw82072600005.html | archive-date= 3 March 2016 | url-status= dead }}</ref><ref>{{cite web | url=http://jupiterace.proboards.com/index.cgi?action=display&board=presother&thread=315| title=Benchmarks (Entry #9)}}</ref><ref>''The Complete FORTH'', by [[Alan Winfield]], 1983, Sigma Technical Press, page xi.</ref> and used less than half the memory (a significant cost percentage of low end computers of the time) of an equivalent program written in interpreted BASIC.<ref name=PCW/> It also allowed easy implementation of [[machine code]] routines if needed.<ref>''Electronics & Computing'', "Jupiter Ace Review", 1982, November, page 70.</ref> Ace's Forth was based mostly on Forth-79, with some relevant differences,<ref name="vickers" />{{rp|176}} in particular it added syntax checking to control structures and definer constructions and a few extra words were added based on common [[BASIC]] sound, video and tape commands. The implementation lacked some less frequently used Forth words, these being easily implemented if needed. [[Runtime error]] checking could be turned off to raise speed by 25% to 50%.<ref name="vickers" />{{rp|171}} === Decompiling === Its [[Forth (programming language)|Forth]] was adapted to the disk-less tape-using [[home computer]] hardware by being able to save/load user "compiled vocabularies", instead of the usual numbered programming blocks used by diskette systems. Decompiling avoided wasting RAM in simulating an absent Block System, used with both disk and tape drivers (these last not to be confused with tape recorders). As replacement, it included an extra data file, for raw binary data. These solutions were unique to the Jupiter Ace. === DEFINER vs COMPILER === To allow decompile, it distinguished usual [[Forth (programming language)|Forth]] definer and compiler words creation, replacing the <code>CREATE .. DOES></code>,<ref>[[Alan Winfield|Winfield, Alan]]: "The Complete Forth", Chapter 9 "Extending FORTH", Sigma Technical Press, 1983.</ref> creation pair with: # <code>DEFINER .... DOES></code> : Create new Defining words, usually used to define and build data structures. Similar to <code>CREATE..DOES</code> usage in standard FORTH.<ref name="vickers" />{{rp|120}} (Example: Adding Data Structures as Arrays, Records, ...). # <code>COMPILER .. RUNS></code> : Create new Compiling words, less frequently used to extend the language with compiler words where <code>CREATE..DOES></code> is FORTH implementation dependent.<ref name="vickers" />{{rp|136}} (Example: New Compiler Control Structures as Case, Infinite Loop, ...). These two defining pairs, instead of one alone, allowed the Ace to decompile its programs, unlike usual [[Forth (programming language)|Forth]] systems. This decompiling ability was a solution to the absence of the more flexible disk system used by Forth. Not storing the source of a Forth program, but compiling the code after editing, it avoided completely the emulation of a disk/tape drive on RAM saving [[computer memory]]. It also saved time in reading and writing programs from cassette tape. This tape-friendly and RAM-saving solution was unique to the Jupiter Ace Forth. The names can be equivocal out of a Forth context, as all Words are compiled when declared.<ref>ACE ROM Project v3, 2021. Book II "Original Listing", ROM Source</ref> <code>DEFINER</code> defines a new Class (as an array) that will build (compile) an array Object.<ref>ACE ROM Project v3, 2021. Chapter 3 "Programming Tips", Section 3.2 "Definer/Compiler"</ref> These are active on 'Interpreter'. Pairing this Interaction mode, <code>COMPILER</code> defines a programming structure (usually a pair or a triplet) as <code>IF-ELSE-THEN</code>.<ref>ACE ROM Project v3, 2021. Chapter 4 "Faster, Faster", Section 4.4 "Building our own", "The case of Case"</ref> These 'Structured Programming' are active on 'Compile' mode (which is simply building a new Forth Word). In short, "Interpreting mode" means Run stage, while "Compiling mode" refers to an Editing stage. === Development === Avoiding sources was compensated by storing comments entered in the code with the compiled output, traditional compilation would discard such comments. The comments were then recovered on decompiling. As a result of "code is the source", modified words (edited) would demand actualization of all code using the one newly edited. This was done with the non standard <code>REDEFINE</code> command. Although not explicitly designed for such a purpose, the compiled Forth could be utilised for ROM extensions to the built in system. External ROMs were developed with Ace Forth to be used as control applications.<ref>{{cite web |url=http://jupiter-ace.co.uk/graphics/aceusers/ACE-User-4-1983.pdf |title=ACE User 4, page 8: ROM Expansion for the Ace}}</ref><ref>{{Cite web|url=http://jupiter-ace.co.uk/graphics/aceusers/ForthUser_V2n1.pdf|title=FORTH User Vol2#1, page 2, "EPROMs for the ACE"}}</ref>
Summary:
Please note that all contributions to Niidae Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Encyclopedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Search
Search
Editing
Jupiter Ace
(section)
Add topic