Apple II ユーザーズマニュアル
3787 FCC3 D0 06 BNE OPCOMP
3788 FCC5 20 94 E3 ERRORM JSR CKER00 ;OUTPUT ERROR MESSAGE
3789 FCC8 4C AA FB JMP STARTM
3789 FCC8 4C AA FB JMP STARTM
3790 FCCB
3791 FCCB ;COMPUTE FINAL OP CODE FOR DEFINED ADDRESING MODE
3791 FCCB ;COMPUTE FINAL OP CODE FOR DEFINED ADDRESING MODE
3792 FCCB BD E2 FA OPCOMP LDA TYPTR1,X ;MATCH TYPE MASK WITH VALID MODE
3793 FCCE F0 05 BEQ OPCMP1 ;PATTERNS & SKIP 1ST WORD TEST IF
3793 FCCE F0 05 BEQ OPCMP1 ;PATTERNS & SKIP 1ST WORD TEST IF
3794 FCD0 2D 26 01 AND TMASK1 ;ALREADY ZERO
3795 FCD3 D0 08 BNE VALID
3795 FCD3 D0 08 BNE VALID
3796 FCD5 BD F1 FA OPCMP1 LDA TYPTR2,X ;TEST 2ND PART
3797 FCD8 2D 27 01 AND TMASK2 ;INST DOES NOT HAVE SPECIFIED MODE
3797 FCD8 2D 27 01 AND TMASK2 ;INST DOES NOT HAVE SPECIFIED MODE
3798 FCDB F0 E8 BEQ ERRORM
3799 FCDD 18 VALID CLC ;FORM FINAL OP CODE
3799 FCDD 18 VALID CLC ;FORM FINAL OP CODE
3800 FCDE BD 00 FB LDA CORR,X
3801 FCE1 6D 34 A4 ADC OPCODE
3801 FCE1 6D 34 A4 ADC OPCODE
3802 FCE4 8D 34 A4 STA OPCODE
3803 FCE7
3803 FCE7
3804 FCE7 ;PROCESS ADRESSES TO FINAL FORMAT
3805 FCE7 BD 0F FB LDA SIZEM,X ;OBTAIN ADDRESS FORMAT FROM TABLE
3805 FCE7 BD 0F FB LDA SIZEM,X ;OBTAIN ADDRESS FORMAT FROM TABLE
3806 FCEA C9 00 CMP #00
3807 FCEC F0 50 BEQ ONEBYT
3807 FCEC F0 50 BEQ ONEBYT
3808 FCEE C9 0F CMP #$0F ;NEED BRANCH COMPUTATION?
3809 FCF0 F0 1D BEQ BRNCHC
3809 FCF0 F0 1D BEQ BRNCHC
3810 FCF2 8D 33 A4 STA TEMPA ;SAVE START POINT & CHAR COUNT
3811 FCF5 29 0F AND #$0F ;SEPARATE CHARACTER COUNT
3811 FCF5 29 0F AND #$0F ;SEPARATE CHARACTER COUNT
3812 FCF7 A8 TAY ;LOAD ADDR BYTES INTO Y (0,1,OR 2)
3813 FCF8 8D 2F A4 STA BYTESM ;SAVE IN BYTES
3813 FCF8 8D 2F A4 STA BYTESM ;SAVE IN BYTES
3814 FCFB EE 2F A4 INC BYTESM ;TO INSTR LENGTH (1,2,OR 3 BYTES)
3815 FCFE AD 33 A4 LDA TEMPA ;SEPARATE STARTING POINT
3815 FCFE AD 33 A4 LDA TEMPA ;SEPARATE STARTING POINT
3816 FD01 29 F0 AND #$F0
3817 FD03 4A LSR A
3817 FD03 4A LSR A
3818 FD04 4A LSR A
3819 FD05 4A LSR A
3819 FD05 4A LSR A
3820 FD06 4A LSR A
3821 FD07 AA TAX ;AND PUT IT IN X
3821 FD07 AA TAX ;AND PUT IT IN X
3822 FD08 20 12 FD JSR CONVRT ;CONVERT ASCII ADDRESS TO HEX
3823 FD0B B0 B8 BCS ERRORM ;SKIP OUT IF ERROR IN INPUT
3823 FD0B B0 B8 BCS ERRORM ;SKIP OUT IF ERROR IN INPUT
3824 FD0D 90 1D BCC STASH
3825 FD0F 4C 86 FD BRNCHC JMP BRCOMP
3825 FD0F 4C 86 FD BRNCHC JMP BRCOMP
3826 FD12
3827 FD12 ;############ SUBROUTINE ###############
3827 FD12 ;############ SUBROUTINE ###############
3828 FD12 ;CONVERT FORMATTED ADDRESS INTO PROPER HEX ADDRESS
3829 FD12 BD 33 01 CONVRT LDA ADFLD,X ;PICK UP 1ST ADDRES CHARACTER
3829 FD12 BD 33 01 CONVRT LDA ADFLD,X ;PICK UP 1ST ADDRES CHARACTER
3830 FD15 20 7D EA JSR HEX ;CONVERT TO MOST SIG HEX
3831 FD18 B0 11 BCS ERRFLG
3831 FD18 B0 11 BCS ERRFLG
3832 FD1A E8 INX ;GET NEXT ASCII CHARACTER
3833 FD1B BD 33 01 LDA ADFLD,X
3833 FD1B BD 33 01 LDA ADFLD,X
3834 FD1E E8 INX ;POINT TO NEXT CHARACTER, IF ANY
3835 FD1F 20 84 EA JSR PACK
3835 FD1F 20 84 EA JSR PACK
3836 FD22 B0 07 BCS ERRFLG
3837 FD24 99 34 A4 STA OPCODE,Y ;SAVE IN MOST SIG. BYTE LOCATION
3837 FD24 99 34 A4 STA OPCODE,Y ;SAVE IN MOST SIG. BYTE LOCATION
3838 FD27 88 DEY ;SET UP FOR NEXT ADDR BYTE, IF ANY
3839 FD28 D0 E8 BNE CONVRT ;IF NECESSARY, FORM NEXT ADDR BYTE
3839 FD28 D0 E8 BNE CONVRT ;IF NECESSARY, FORM NEXT ADDR BYTE
3840 FD2A 18 CLC
3841 FD2B 60 ERRFLG RTS ;NON HEX CLEARED CARRY
3841 FD2B 60 ERRFLG RTS ;NON HEX CLEARED CARRY
3842 FD2C ;#############
3843 FD2C
3843 FD2C
3844 FD2C AC 2F A4 STASH LDY BYTESM ;SET UP TO STORE COMMAND
3845 FD2F 88 DEY
3845 FD2F 88 DEY
3846 FD30 B9 34 A4 STSHLP LDA OPCODE,Y
3847 FD33 20 78 EB JSR SADDR ;STORE ONE BYTE OF COMMAND
3847 FD33 20 78 EB JSR SADDR ;STORE ONE BYTE OF COMMAND
3848 FD36 C0 00 CPY #00