Apple II User Manual

Page of 257
3911   FDBB 38          CMPBR1 SEC             ;COMPUTE BRANCH RELATIVE ADDRESS
3912   FDBC AD 35 A4           LDA OPCODE+1
3913   FDBF ED 26 01           SBC MOVAD
3914   FDC2 8D 35 A4           STA OPCODE+1
3915   FDC5 AD 36 A4           LDA OPCODE+2
3916   FDC8 ED 27 01           SBC MOVAD+1
3917   FDCB 8D 36 A4           STA OPCODE+2
3918   FDCE C9 00              CMP #00
3919   FDD0 F0 0E              BEQ FORWRD
3920   FDD2 C9 FF              CMP #$FF
3921   FDD4 F0 03              BEQ BACKWD
3922   FDD6 4C C5 FC    ERRJMP JMP ERRORM
3923   FDD9 AD 35 A4    BACKWD LDA OPCODE+1    ;CHECK IN RANGE
3924   FDDC 30 09              BMI OK
3925   FDDE 10 F6              BPL ERRJMP
3926   FDE0 AD 35 A4    FORWRD LDA OPCODE+1
3927   FDE3 10 02              BPL OK
3928   FDE5 30 EF              BMI ERRJMP
3929   FDE7 A9 02       OK     LDA #02         ;SET UP FOR STASH
3930   FDE9 8D 2F A4           STA BYTESM
3931   FDEC 4C 2C FD           JMP STASH
3932   FDEF
3933   FDEF             ;###### SUBROUTINE ########
3934   FDEF             ;SUBROUTINE FOR DETERMINING X OR Y OR NEITHER
3935   FDEF A2 04       XORY   LDX #04
3936   FDF1 BD 33 01    XORYZ  LDA ADFLD,X
3937   FDF4 C9 2C              CMP #','
3938   FDF6 D0 04              BNE XORY1
3939   FDF8 E8                 INX
3940   FDF9 BD 33 01           LDA ADFLD,X
3941   FDFC C9 58       XORY1  CMP #'X'
3942   FDFE F0 03              BEQ ISX
3943   FE00 C9 59              CMP #'Y'
3944   FE02             XORYRT
3945   FE02 60                 RTS             ;NOT ZERO IS NOT X OR NOT Y
3946   FE03 18          ISX    CLC             ;CARRY SET IS Y
3947   FE04 90 FC              BCC XORYRT      ; CARRY CLEAR IS X
3948   FE06             ;####### END OF SUB ########
3949   FE06
3950   FE06             ; INPUT FOR MNEMONIC CODE
3951   FE06 A0 00       MNEM   LDY #00
3952   FE08 8C 34 A4           STY OPCODE
3953   FE0B 8C 35 A4           STY OPCODE+1
3954   FE0E 8C 36 A4           STY OPCODE+2    ;CLEARS OPCODE FOR NEW INPUT
3955   FE11 8C 26 01           STY MOVAD       ;CLEARS UNUSED BIT IN FINAL FORMAT
3956   FE14 20 5F E9    RDLUP  JSR RDRUP
3957   FE17 C9 2A              CMP #'*'        ;COMMAND TO LOAD POINTER
3958   FE19 F0 58              BEQ STLOAD      ;GO TO SET CURRENT ADDRESS POINTER
3959   FE1B C9 20              CMP #' '        ;IGNORE SPACE BAR INPUT
3960   FE1D F0 F5              BEQ RDLUP
3961   FE1F 29 1F              AND #$1F        ;MASK OFF UPPER 3 BITS
3962   FE21 99 30 01           STA CH,Y
3963   FE24 98                 TYA
3964   FE25 AA                 TAX             ;Y----> X
3965   FE26 FE 30 01           INC CH,X        ;FORMAT TO MATCH DISASSEMBLER TBL
3966   FE29 C8                 INY
3967   FE2A C0 03              CPY #03         ;REPEAT FOR EACH OF 3 CHARACTERS
3968   FE2C D0 E6              BNE RDLUP
3969   FE2E
3970   FE2E             ;COMPRESS 3 FORMATED CHARACTERS TO MOVAD & MOVAD+1
3971   FE2E A0 03              LDY #03         ;SET UP OUTER LOOP
3972   FE30 B9 2F 01    OUTLUP LDA CH-1,Y      ;COMPRESS 3 CHARACTERS