10/24/2022 0 Comments Sweet16 wozniak![]() SWEET16 WOZNIAK SOFTWAREAs an example of her usefulness, I have estimated that about 1 K bytes could be weeded out of my 5 K byte Apple-II BASIC interpreter with no observable performance degradation by selectively applying SWEET16.This site is mostly about the firmware - software in ROM - thatĬame with the original Apple II, not the II+, IIe, IIc, or IIgs. ![]() SWEET16 WOZNIAK CODEMost opcodes are only one byte long, but since she runs approximately ten times slower than equivalent 6502 code, SWEET16 should be employed only when code is at a premium or execution speed is not. ![]() Implemented in only 300 bytes of code, SWEET16 has a very simple instruction set tailored to operations such as memory moves and stack manipulation. One of SWEET16's commands returns the user back to 6502 mode, even restoring the original register contents. Bytes stored after the subroutine call are thereafter interpreted and executed by SWEET16. The user accesses SWEET16 with a subroutine call to hexadecimal address F689. R13 stores the result of all COMPARE operations for branch testing. R0 is defined as the accumulator, R15 as the program counter, and R14 as a status register. SWSWEET16 contains sixteen internal 16 bit registers, actually the first 32 bytes in main memory, labelled R0 through R15. So as not to slight their efforts, I would like to thank Allen Baum for originating the Apple-II debug software, Doug Kraul for helpful suggestions on the IO structure, and Randy Wigginton and Chris Espinosa for many long and late hours testing the Apple BASIC. These are the service routines which are used by the monitor, as well as BASIC and any user routines you care to code. In addition to the direct monitor commands, a number of subroutines were included in the Appie-II's mask programmed system read only memory to provide easy access to hardware features. It was of course the first hand assembled program I wrote for the system. I completely wrote and debugged Apple BASIC using the monitor as my only software development tool. Multiple commands are permitted on the same line and editing features facilitate error correction. The user enters commands from the keyboard specifying data and address parameters in hexadecimal. The entry into BASIC, as well as other user oriented features of the Apple-II, is provided by an interactive keyboard monitor which serves as an aid to writing and debugging machine language programs for the 6502 processor of the system. One represents its tendency to force execution of other verbs, the second its tendency to be executed. Because verbs such as parentheses tend sometimes to be of low, and other times of high priority, each verb is actually ass igned two priorities (left hand-right hand). Verb routines obtain their arguments from the noun stack. Keywords such as THEN or STEP, and delimiters such as commas and parentheses, are dealt with just as though they were arithmetic operators. ![]() Tables define priorities and routine entry addresses for all verbs. A verb is executed by calling its associated subroutine. Verbs are pushed onto the verb stack (operator stack) after popping and executing any verbs of greater priority. Constants are pushed directly onto this stack. Variable names result in calls to the symbol table routine which pushes address and length information on the noun stack (operand stack). As statements are scanned, nouns and verbs are encountered. SWEET16 WOZNIAK SERIESThe interpreter consists of a standard expression evaluator and a symbol table routine for allocating variable storage similar to those described by Prof Maurer in his 2 part series 'in the February and March 1976 issues of BYTE. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |