Apple II User Manual

Page of 257
3787   FCC3 D0 06              BNE OPCOMP
3788   FCC5 20 94 E3    ERRORM JSR CKER00      ;OUTPUT ERROR MESSAGE
3789   FCC8 4C AA FB           JMP STARTM
3790   FCCB
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
3794   FCD0 2D 26 01           AND TMASK1      ;ALREADY ZERO
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
3798   FCDB F0 E8              BEQ ERRORM
3799   FCDD 18          VALID  CLC             ;FORM FINAL OP CODE
3800   FCDE BD 00 FB           LDA CORR,X
3801   FCE1 6D 34 A4           ADC OPCODE
3802   FCE4 8D 34 A4           STA OPCODE
3803   FCE7
3804   FCE7             ;PROCESS ADRESSES TO FINAL FORMAT
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
3808   FCEE C9 0F              CMP #$0F        ;NEED BRANCH COMPUTATION?
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
3812   FCF7 A8                 TAY             ;LOAD ADDR BYTES INTO Y (0,1,OR 2)
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
3816   FD01 29 F0              AND #$F0
3817   FD03 4A                 LSR A
3818   FD04 4A                 LSR A
3819   FD05 4A                 LSR A
3820   FD06 4A                 LSR A
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
3824   FD0D 90 1D              BCC STASH
3825   FD0F 4C 86 FD    BRNCHC JMP BRCOMP
3826   FD12
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
3830   FD15 20 7D EA           JSR HEX         ;CONVERT TO MOST SIG HEX
3831   FD18 B0 11              BCS ERRFLG
3832   FD1A E8                 INX             ;GET NEXT ASCII CHARACTER
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
3836   FD22 B0 07              BCS ERRFLG
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
3840   FD2A 18                 CLC
3841   FD2B 60          ERRFLG RTS             ;NON HEX CLEARED CARRY
3842   FD2C             ;#############
3843   FD2C
3844   FD2C AC 2F A4    STASH  LDY BYTESM      ;SET UP TO STORE COMMAND
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
3848   FD36 C0 00              CPY #00