SWEET16 was not used by the core BASIC code, but was later used to implement several utilities. Notable among these was the line renumbering routine, which was included in the Programmer's Aid #1 ROM, added to later Apple II models and available for user installation on earlier examples.[2]
SWEET16 code is executed as if it were running on a 16-bit processor with sixteen internal 16-bit little-endianregisters, named R0 through R15. Some registers have well-defined functions:[1]
The 16 virtual registers, 32 bytes in total, are located in the zero page of the Apple II's real, physical memory map (at $00–$1F), with values stored as low byte followed by high byte.[1] The SWEET16 interpreter itself is located from $F689 to $F7FC in the Integer BASIC ROM.
According to Wozniak, the SWEET16 implementation is a model of frugal coding, taking up only about 300 bytes in memory.[3] SWEET16 runs at about one-tenth the speed of the equivalent native 6502 code.[1]
Operatorsedit
Register Ops
Nonregister Ops
00
RTN
Return to 6502 mode
1n
SET Rn
Constant set
01
BR ea
Branch always
2n
LD Rn
Load
02
BNC ea
Branch if No Carry
3n
ST Rn
Store
03
BC ea
Branch if Carry
4n
LD @Rn
Load indirect
04
BP ea
Branch if Plus
5n
ST @Rn
Store indirect
05
BM ea
Branch if Minus
6n
LDD @Rn
Load double-byte indirect
06
BZ ea
Branch if Zero
7n
STD @Rn
Store double-byte indirect
07
BNZ ea
Branch if NonZero
8n
POP @Rn
Pop indirect
08
BM1 ea
Branch if Minus 1
9n
STP @Rn
Store Pop indirect
09
BNM1 ea
Branch if Not Minus 1
An
ADD Rn
Add
0A
BK
Break
Bn
SUB Rn
Subtract
0B
RS
Return from Subroutine
Cn
POPD @Rn
Pop double-byte indirect
0C
BS ea
Branch to Subroutine
Dn
CPR Rn
Compare
0D
Unassigned
En
INR Rn
Increment
0E
Unassigned
Fn
DCR Rn
Decrement
0F
Unassigned
Referencesedit
^ abcdWozniak, Stephen (November 1977). "SWEET16: The 6502 Dream Machine". Byte. Retrieved 2011-01-05.
— 1979 Call-A.P.P.L.E. booklet that includes "SWEET 16 Introduction" by Dick Sedgewick and a version of "SWEET 16: The 6502 Dream Machine" by Steve Wozniak with longer descriptions of each opcode
Strotmann, Carsten (2004-03-21). . 6502.org. Archived from the original on 2021-03-03. Retrieved 2021-03-03.
November 15, 2023
sweet16, interpreted, byte, code, instruction, invented, steve, wozniak, implemented, part, integer, basic, apple, series, computers, created, because, wozniak, needed, manipulate, pointer, data, apple, computer, used, core, basic, code, later, used, implement. SWEET16 is an interpreted byte code instruction set invented by Steve Wozniak and implemented as part of the Integer BASIC ROM in the Apple II series of computers It was created because Wozniak needed to manipulate 16 bit pointer data and the Apple II was an 8 bit computer 1 SWEET16 was not used by the core BASIC code but was later used to implement several utilities Notable among these was the line renumbering routine which was included in the Programmer s Aid 1 ROM added to later Apple II models and available for user installation on earlier examples 2 SWEET16 code is executed as if it were running on a 16 bit processor with sixteen internal 16 bit little endian registers named R0 through R15 Some registers have well defined functions 1 R0 accumulator R12 subroutine stack pointer R13 stores the result of all comparison operations for branch testing R14 status register R15 program counterThe 16 virtual registers 32 bytes in total are located in the zero page of the Apple II s real physical memory map at 00 1F with values stored as low byte followed by high byte 1 The SWEET16 interpreter itself is located from F689 to F7FC in the Integer BASIC ROM According to Wozniak the SWEET16 implementation is a model of frugal coding taking up only about 300 bytes in memory 3 SWEET16 runs at about one tenth the speed of the equivalent native 6502 code 1 Operators editRegister Ops Nonregister Ops00 RTN Return to 6502 mode1n SET Rn Constant set 01 BR ea Branch always2n LD Rn Load 02 BNC ea Branch if No Carry3n ST Rn Store 03 BC ea Branch if Carry4n LD Rn Load indirect 04 BP ea Branch if Plus5n ST Rn Store indirect 05 BM ea Branch if Minus6n LDD Rn Load double byte indirect 06 BZ ea Branch if Zero7n STD Rn Store double byte indirect 07 BNZ ea Branch if NonZero8n POP Rn Pop indirect 08 BM1 ea Branch if Minus 19n STP Rn Store Pop indirect 09 BNM1 ea Branch if Not Minus 1An ADD Rn Add 0A BK BreakBn SUB Rn Subtract 0B RS Return from SubroutineCn POPD Rn Pop double byte indirect 0C BS ea Branch to SubroutineDn CPR Rn Compare 0D UnassignedEn INR Rn Increment 0E UnassignedFn DCR Rn Decrement 0F UnassignedReferences edit a b c d Wozniak Stephen November 1977 SWEET16 The 6502 Dream Machine Byte Retrieved 2011 01 05 Apple Programmers Aid PDF Apple 1978 Wozniak Stephen May 1977 The Apple II PDF Byte Retrieved 2012 05 18 External links editCall A P P L E Wozpak II 1979 Call A P P L E booklet that includes SWEET 16 Introduction by Dick Sedgewick and a version of SWEET 16 The 6502 Dream Machine by Steve Wozniak with longer descriptions of each opcode Strotmann Carsten 2004 03 21 Porting Sweet 16 6502 org Archived from the original on 2021 03 03 Retrieved 2021 03 03 Retrieved from https en wikipedia org w index php title SWEET16 amp oldid 1171437568, wikipedia, wiki, book, books, library,