Apple II User Manual

Page of 257
+------------------------------------------------------------------------
|  TOPIC -- Apple II -- Red Book Sweet-16 listing
+------------------------------------------------------------------------
                1    ***********************
                2    *                     *
                3    *   APPLE-II PSEUDO   *
                4    * MACHINE INTERPRETER *
                5    *                     *
                6    *   COPYRIGHT 1977    *
                7    * APPLE COMPUTER INC  *
                8    *                     *
                9    * ALL RIGHTS RESERVED *
                10   *     S. WOZNIAK      *
                11   *                     *
                12   ***********************
                13                             ; TITLE "SWEET16 INTERPRETER"
                14   R0L      EQU   $0
                15   R0H      EQU   $1
                16   R14H     EQU   $1D
                17   R15L     EQU   $1E
                18   R15H     EQU   $1F
                19   SW16PAG  EQU   $F7
                20   SAVE     EQU   $FF4A
                21   RESTORE  EQU   $FF3F
                22            ORG   $F689
F689: 20 4A FF  23   SW16     JSR   SAVE       ;PRESERVE 6502 REG CONTENTS
F68C: 68        24            PLA
F68D: 85 1E     25            STA   R15L       ;INIT SWEET16 PC
F68F: 68        26            PLA              ;FROM RETURN
F690: 85 1F     27            STA   R15H       ;  ADDRESS
F692: 20 98 F6  28   SW16B    JSR   SW16C      ;INTERPRET AND EXECUTE
F695: 4C 92 F6  29            JMP   SW16B      ;ONE SWEET16 INSTR.
F698: E6 1E     30   SW16C    INC   R15L
F69A: D0 02     31            BNE   SW16D      ;INCR SWEET16 PC FOR FETCH
F69C: E6 1F     32            INC   R15H
F69E: A9 F7     33   SW16D    LDA   #SW16PAG
F6A0: 48        34            PHA              ;PUSH ON STACK FOR RTS
F6A1: A0 00     35            LDY   #$0
F6A3: B1 1E     36            LDA   (R15L),Y   ;FETCH INSTR
F6A5: 29 0F     37            AND   #$F        ;MASK REG SPECIFICATION
F6A7: 0A        38            ASL              ;DOUBLE FOR TWO BYTE REGISTERS
F6A8: AA        39            TAX              ;TO X REG FOR INDEXING
F6A9: 4A        40            LSR
F6AA: 51 1E     41            EOR   (R15L),Y   ;NOW HAVE OPCODE
F6AC: F0 0B     42            BEQ   TOBR       ;IF ZERO THEN NON-REG OP
F6AE: 86 1D     43            STX   R14H       ;INDICATE'PRIOR RESULT REG'
F6B0: 4A        44            LSR
F6B1: 4A        45            LSR              ;OPCODE*2 TO LSB'S
F6B2: 4A        46            LSR
F6B3: A8        47            TAY              ;TO Y REG FOR INDEXING
F6B4: B9 E1 F6  48            LDA   OPTBL-2,Y  ;LOW ORDER ADR BYTE
F6B7: 48        49            PHA              ;ONTO STACK
F6B8: 60        50            RTS              ;GOTO REG-OP ROUTINE
F6B9: E6 1E     51   TOBR     INC   R15L
F6BB: D0 02     52            BNE   TOBR2      ;INCR PC
F6BD: E6 1F     53            INC   R15H
F6BF: BD E4 F6  54   TOBR2    LDA   BRTBL,X    ;LOW ORDER ADR BYTE
F6C2: 48        55            PHA              ;ONTO STACK FOR NON-REG OP
F6C3: A5 1D     56            LDA   R14H       ;'PRIOR RESULT REG' INDEX