; generated by Norcroft RISC OS ARM C vsn 3.00 [Jul 12 1989]

a1      RN      0
a2      RN      1
a3      RN      2
a4      RN      3
RV1     RN      3
RPC     RN      4
v1      RN      4
v2      RN      5
v3      RN      6
v4      RN      7
OffRead RN      7
Glb     RN      7
v5      RN      8
ACode   RN      8
v6      RN      9
sl      RN      10
fp      RN      11
ip      RN      12
sp      RN      13
lr      RN      14
pc      RN      15

        GBLL FLAGF
FLAGF   SETL    {TRUE}

        GET     s.GenInc

        MACRO
        TZN     $Option
        LDRB    a2, [Glb, #rP]
        [ "$Option"="{FALSE}"
        CMPS    RV1, #0
        ]
        BICNE   a2, a2, #2
        ORREQ   a2, a2, #2
        CMPS    RV1, #127
        ORRGT   a2, a2, #128
        BICLE   a2, a2, #128
        STRB    a2, [Glb, #rP]
        MEND

        MACRO
        TZNC    $Option, $Rv2
        LDRB    a2, [Glb, #rP]
        [ "$Option"="{FALSE}"
        CMPS    RV1, #0
        ]
        BICNE   a2, a2, #2
        ORREQ   a2, a2, #2
        CMPS    RV1, #127
        ORRGT   a2, a2, #128
        BICLE   a2, a2, #128
        CMPS    $Rv2, #0
        ORRNE   a2, a2, #1
        BICEQ   a2, a2, #1
        STRB    a2, [Glb, #rP]
        MEND

        MACRO
        TECR    $Simple
; if((EmuWrite(fsa3=(fsa2=fsa1+offwrite[fsa1>>8])>>8])
        LDR     a1, [v6, #0]
        MOV     a2, a1, LSR #8
        LDR     a3, [pc, #L0002b4-.-8]
        LDR     a2, [a3, a2, ASL #2]
        ADD     v6, a2, a1
        MOV     v2, v6, LSR #8
        LDR     a3, [pc, #L0002b8-.-8]
        LDR     a3, [a3, v2, ASL #2]
        CMPS    a3, #0
        BEQ     %f0
;       if(*EmuWrite[fsa3])(fsa2,bgv1)) continue;
        MOV     a2, RV1
        STMFD   sp!,{RV1,lr}
        MOV     a1, v6
        MOV     lr, pc
        MOV     pc, a3
        CMPS    a1, #0
        LDMFD   sp!,{RV1,lr}
        [ "$Simple"="{TRUE}"
        MOVNES  pc, lr
        |
        BNE     %f1
        ]
0
; if(allowwrite[fsa3])
        LDR     a1, [pc, #L0002bc-.-8]
        LDRB    a1, [a1, v2]
        CMPS    a1, #0
        [ "$Simple"="{TRUE}"
        MOVEQS  pc, lr
;       AppleCode->bytes[fsa2]= bgv1;
        STRB    RV1, [ACode, v6]
        |
        STRNEB  RV1, [ACode, v6]
        ]
1
        MEND

        AREA    |C$$code|, CODE, READONLY

        IMPORT  |__main|
|x$codeseg|
        B       |__main|

        [ :LNOT:FLAGF
        DCB     &53,&74,&6f,&50
        DCB     &69,&6c,&00,&00
        DCD     &ff000008
        ]
        EXPORT  StoPil
StoPil
;;        LDR     a2, [pc, #L000054-.-8]
        LDRB    a3, [Glb, #rS]
        SUB     ip, a3, #1
        STRB    ip, [Glb, #rS]
        LDR     a2, [pc, #L000058-.-8]
        LDR     a2, [a2, #4]
        ADD     a2, a2, #256
        ADD     a3, a3, a2
        STRB    a1, [ACode, a3]
        MOVS    pc, lr
L000054
        DCD     Glob+rS
L000058
        IMPORT  offwrite
        DCD     offwrite

        [ :LNOT:FLAGF
        DCB     &52,&65,&73,&50
        DCB     &69,&6c,&00,&00
        DCD     &ff000008
        ]

; Version officielle de ResPil, appelable depuis le C.
        EXPORT  ResPil
ResPil
        LDR     a2, [pc, #L00009c-.-8]
        LDR     a2, [a2, #4]
        ADD     a3, a2, #256
        LDR     a2, [pc, #L000054-.-8]
        LDRB    ip, [a2, #0]
        ADD     ip, ip, #1
        AND     ip, ip, #255
        STRB    ip, [a2, #0]
        ADD     a2, a3, ip
        LDR     a1, [pc, #L000044-.-8]
        LDR     a1, [a1, #0]
        LDRB    a1, [a1, a2]
        MOVS    pc, lr
L00009c
        DCD     Glob
L000044
        IMPORT  AppleCode
        DCD     AppleCode

; Version personnelle de ResPil, non appelable depuis le C
MResPil
        LDR     a2, [OffRead, #4]
        ADD     a3, a2, #256
        LDRB    ip, [Glb, #rS]
        ADD     ip, ip, #1
        AND     ip, ip, #255
        STRB    ip, [Glb, #rS]
        ADD     a2, a3, ip
        LDRB    a1, [ACode, a2]
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &54,&6f,&44,&43
        DCB     &42,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  ToDCB
ToDCB
        AND     a1, a1, #255
        AND     a3, a1, #15
        LDR     a2, [pc, #L0000d0-.-8]
        MOV     a1, a1, ASR #4
        LDRB    a1, [a1, a2]
        ADD     a1, a3, a1
        AND     a1, a1, #255
        MOVS    pc, lr
L0000d0
        DCD     |x$dataseg|

        [ :LNOT:FLAGF
        DCB     &46,&72,&6f,&6d
        DCB     &44,&43,&42,&00
        DCD     &ff000008
        ]
        IMPORT  |x$remainder|
        IMPORT  |x$divide|
        EXPORT  FromDCB
FromDCB
        MOV     ip, sp
        STMFD   sp!, {a1,RV1,v1,v2,v3,fp,ip,lr,pc}
        SUB     fp, ip, #4
        MOV     a2, a1
        MOV     a1, #10
        MOV     v1, a1
        AND     a2, a2, #255
        MOV     v2, a2
        BL      |x$remainder|
        MOV     v3, a1
        MOV     a1, v1
        MOV     a2, v2
        BL      |x$divide|
        ADD     a1, v3, a1, ASL #4
        AND     a1, a1, #255
        LDMEA   fp, {RV1,v1,v2,v3,fp,sp,pc}^

        [ :LNOT:FLAGF
        DCB     &4f,&70,&42,&49
        DCB     &54,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpBIT
OpBIT
        LDRB    a3, [Glb, #rA]
;;        ANDS    ip, RV1, #64
        TST     RV1, #64 ;;
        LDRB    ip, [Glb, #rP]
        BICEQ   ip, ip, #64
        ORRNE   ip, ip, #64
        CMPS    RV1, #127
        BICLE   ip, ip, #128
        ORRGT   ip, ip, #128
        TST     RV1, a3
;;        ANDS    a3, RV1, a3
        ORREQ   a2, ip, #2
        BICNE   a2, ip, #2
        STRB    a2, [Glb, #rP]
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&4c,&44
        DCB     &41,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpLDA
OpLDA
        STRB    RV1, [Glb, #rA]
        TZN     {FALSE}
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&4c,&44
        DCB     &58,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpLDX
OpLDX
        STRB    RV1, [Glb, #rX]
        TZN     {FALSE}
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&4c,&44
        DCB     &59,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpLDY
OpLDY
        STRB    RV1, [Glb, #rY]
        TZN     {FALSE}
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&4a,&4d
        DCB     &50,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpJMP
OpJMP
        LDR     a1, [pc, #L000240-.-8]
        LDR     a1, [a1, #0]
        SUB     RPC, a1, #1
        MOVS    pc, lr
L000240
        IMPORT  fsa1
        DCD     fsa1

        [ :LNOT:FLAGF
        DCB     &4f,&70,&54,&41
        DCB     &58,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpTAX
OpTAX
        LDRB    RV1, [Glb, #rA]
        STRB    RV1, [Glb, #rX]
        TZN     {FALSE}
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&54,&41
        DCB     &59,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpTAY
OpTAY
        LDRB    RV1, [Glb, #rA]
        STRB    RV1, [Glb, #rY]
        TZN     {FALSE}
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&54,&58
        DCB     &41,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpTXA
OpTXA
        LDRB    RV1, [Glb, #rX]
        STRB    RV1, [Glb, #rA]
        TZN     {FALSE}
        MOVS    pc, lr

        [ :LNOT:FLAGF 
        DCB     &4f,&70,&54,&59
        DCB     &41,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpTYA
OpTYA
        LDRB    RV1, [Glb, #rY]
        STRB    RV1, [Glb, #rA]
        TZN     {FALSE}
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&54,&58
        DCB     &53,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpTXS
OpTXS
        LDRB    a2, [Glb, #rX]
        STRB    a2, [Glb, #rS]
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&54,&53
        DCB     &58,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpTSX
OpTSX
        LDRB    RV1, [Glb, #rS]
        STRB    RV1, [Glb, #rX]
        TZN     {FALSE}
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&44,&45
        DCB     &58,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpDEX
OpDEX
        LDRB    RV1, [Glb, #rX]
        SUBS    RV1, RV1, #1
        ANDMIS  RV1, RV1, #255
        STRB    RV1, [Glb, #rX]
        TZN     {TRUE}
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&44,&45
        DCB     &59,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpDEY
OpDEY
        LDRB    RV1, [Glb, #rY]
        SUBS    RV1, RV1, #1
        ANDMIS  RV1, RV1, #255
        STRB    RV1, [Glb, #rY]
        TZN     {TRUE}
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&49,&4e
        DCB     &58,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpINX
OpINX
        LDRB    a2, [Glb, #rX]
        ADD     a2, a2, #1
        STRB    a2, [Glb, #rX]
        ANDS    RV1, a2, #255
        TZN     {TRUE}
        MOVS    pc, lr
L0001f4
        DCD     Glob+rX

        [ :LNOT:FLAGF
        DCB     &4f,&70,&49,&4e
        DCB     &59,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpINY
OpINY
        LDRB    a2, [Glb, #rY]
        ADD     a2, a2, #1
        STRB    a2, [Glb, #rY]
        ANDS    RV1, a2, #255
        TZN     {TRUE}
        MOVS    pc, lr
L000218
        DCD     Glob+rY

        [ :LNOT:FLAGF
        DCB     &4f,&70,&50,&48
        DCB     &50,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpPHP
OpPHP
        LDRB    a1, [Glb, #rP]
        B       StoPil

        [ :LNOT:FLAGF
        DCB     &4f,&70,&50,&48
        DCB     &41,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpPHA
OpPHA
        LDRB    a1, [Glb, #rA]
        B       StoPil

; Version "officielle" de PLP, appelable depuis le C
        [ :LNOT:FLAGF
        DCB     &4f,&70,&50,&4c
        DCB     &50,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpPLP
OpPLP
        MOV     ip, sp
        STMFD   sp!, {fp,ip,lr,pc}
        SUB     fp, ip, #4
        BL      ResPil
        B       MOpPLP0

; Version personnelle de PLP, non appelable depuis le C
MOpPLP
        MOV     ip, sp
        STMFD   sp!, {fp,ip,lr,pc}
        SUB     fp, ip, #4
        BL      MResPil
MOpPLP0 ORR     a1, a1, #32
        LDR     a2, [pc, #L0001a8-.-8]
        STRB    a1, [a2, #0]
        TST     a1, #8 ;;
;;        ANDS    a1, a1, #8
        LDR     a2, [pc, #L000e68-.-8]
        LDREQ   a1, [pc, #L000e64-.-8]
        LDRNE   a1, [pc, #L000ea8-.-8]
        STR     a1, [a2, #220]
        LDREQ   a1, [pc, #L000e6c-.-8]
        LDRNE   a1, [pc, #L000eac-.-8]
        STR     a1, [a2, #216]
        LDMEA   fp, {fp,sp,pc}^

        [ :LNOT:FLAGF
        DCB     &4f,&70,&50,&4c
        DCB     &41,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpPLA
OpPLA
        MOV     ip, sp
        STMFD   sp!, {fp,ip,lr,pc}
        SUB     fp, ip, #4
        BL      MResPil
        STRB    a1, [Glb, #rA]
        MOVS    RV1, a1
        TZN     {TRUE}
        LDMEA   fp, {fp,sp,pc}^

        [ :LNOT:FLAGF
        DCB     &4f,&70,&4a,&53
        DCB     &52,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpJSR
OpJSR
        MOV     ip, sp
        STMFD   sp!, {fp,ip,lr,pc}
        SUB     fp, ip, #4
        MOV     a1, RPC, LSR #8
        AND     a1, a1, #255
        BL      StoPil
        AND     a1, RPC, #255
        BL      StoPil
        LDR     a1, [pc, #L000240-.-8]
        LDR     a1, [a1, #0]
        SUB     RPC, a1, #1
        LDMEA   fp, {fp,sp,pc}^

        [ :LNOT:FLAGF
        DCB     &4f,&70,&45,&4f
        DCB     &52,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpEOR
OpEOR
        LDRB    a3, [Glb, #rA]
        EORS    RV1, a3, RV1
        STRB    RV1, [Glb, #rA]
        TZN     {TRUE}
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&41,&4e
        DCB     &44,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpAND
OpAND
        LDRB    a3, [Glb, #rA]
        ANDS    RV1, a3, RV1
        STRB    RV1, [Glb, #rA]
        TZN     {TRUE}
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&4f,&52
        DCB     &41,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpORA
OpORA
        LDRB    a3, [Glb, #rA]
        ORRS    RV1, a3, RV1
        STRB    RV1, [Glb, #rA]
        TZN     {TRUE}
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&43,&4d
        DCB     &50,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpCMP
OpCMP
        LDRB    a1, [Glb, #rA]
;;;        CMPS    a1, RV1
        SUBS    a1, a1, RV1 ;;;
        MOVLT   ip, #0
        MOVGE   ip, #1
;;;        SUB     a1, a1, RV1
        ANDS    RV1, a1, #255
        TZNC    {TRUE}, ip
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&43,&50
        DCB     &58,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpCPX
OpCPX
        LDRB    a1, [Glb, #rX]
;;;        CMPS    a1, RV1
        SUBS    a1, a1, RV1 ;;;
        MOVLT   ip, #0
        MOVGE   ip, #1
;;;        SUB     a1, a1, RV1
        ANDS    RV1, a1, #255
        TZNC    {TRUE}, ip
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&43,&50
        DCB     &59,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpCPY
OpCPY
        LDRB    a1, [Glb, #rY]
;;;        CMPS    a1, RV1
        SUBS    a1, a1, RV1 ;;;
        MOVLT   ip, #0
        MOVGE   ip, #1
;;;        SUB     a1, a1, RV1
        ANDS    RV1, a1, #255
        TZNC    {TRUE}, ip
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&4c,&53
        DCB     &52,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpLSR
OpLSR
        AND     ip, RV1, #1
        MOVS    RV1, RV1, ASR #1
        TZNC    {TRUE}, ip
        TECR    {TRUE}
        MOVS    pc, lr
L0002b4
        IMPORT  offwrite
        DCD     offwrite
L0002b8
        IMPORT  EmuWrite
        DCD     EmuWrite
L0002bc
        IMPORT  allowwrite
        DCD     allowwrite

        [ :LNOT:FLAGF
        DCB     &4f,&70,&41,&53
        DCB     &4c,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpASL
OpASL
        MOV     ip, RV1, LSR #7
        MOV     RV1, RV1, ASL #1
        ANDS    RV1, RV1, #255
        TZNC    {TRUE}, ip
        TECR    {TRUE}
        MOVS    pc, lr
L0001a8
        DCD     Glob+rP

        [ :LNOT:FLAGF
        DCB     &4f,&70,&52,&4f
        DCB     &4c,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpROL
OpROL
        MOV     ip, RV1, LSR #7
        LDRB    a2, [Glb, #rP]
        TST     a2, #1
;;        ANDS    a3, a2, #1
        MOV     a2, RV1, ASL #1
        ADDNE   a2, a2, #1
        ANDS    RV1, a2, #255
        TZNC    {TRUE}, ip
        TECR    {TRUE}
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&52,&4f
        DCB     &52,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpROR
OpROR
        AND     ip, RV1, #1
        MOV     RV1, RV1, ASR #1
        LDRB    a2, [Glb, #rP]
        TST     a2, #1
;;        ANDS    a2, a2, #1
        ORRNE   RV1, RV1, #128
        TZNC    {FALSE}, ip
        TECR    {TRUE}
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&44,&45
        DCB     &43,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpDEC
OpDEC
        SUBS    RV1, RV1, #1
        ANDMIS  RV1, RV1, #255
        TZN     {TRUE}
        TECR    {TRUE}
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&49,&4e
        DCB     &43,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpINC
OpINC
        ADD     RV1, RV1, #1
        ANDS    RV1, RV1, #255
        TZN     {TRUE}
        TECR    {TRUE}
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&43,&4c
        DCB     &43,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpCLC
OpCLC
        LDRB    a2, [Glb, #rP]
        BIC     a2, a2, #1
        STRB    a2, [Glb, #rP]
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&53,&45
        DCB     &43,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpSEC
OpSEC
        LDRB    a2, [Glb, #rP]
        ORR     a2, a2, #1
        STRB    a2, [Glb, #rP]
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&43,&4c
        DCB     &56,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpCLV
OpCLV
        LDRB    a2, [Glb, #rP]
        BIC     a2, a2, #64
        STRB    a2, [Glb, #rP]
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&43,&4c
        DCB     &49,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpCLI
OpCLI
        LDRB    a2, [Glb, #rP]
        BIC     a2, a2, #4
        STRB    a2, [Glb, #rP]
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&53,&45
        DCB     &49,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpSEI
OpSEI
        LDRB    a2, [Glb, #rP]
        ORR     a2, a2, #4
        STRB    a2, [Glb, #rP]
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&53,&54
        DCB     &41,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpSTA
OpSTA
        LDRB    RV1, [Glb, #rA]
        TECR    {TRUE}
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&53,&54
        DCB     &58,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpSTX
OpSTX
        LDRB    RV1, [Glb, #rX]
        TECR    {TRUE}
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&53,&54
        DCB     &59,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpSTY
OpSTY
        LDRB    RV1, [Glb, #rY]
        TECR    {TRUE}
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&42,&43
        DCB     &53,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpBCS
OpBCS
        LDRB    a1, [Glb, #rP]
        TST     a1, #1 ;;
;;        ANDS    a1, a1, #1
        MOVEQS  pc, lr
        LDR     a1, [pc, #L000240-.-8]
        LDR     a1, [a1, #0]
        SUB     RPC, a1, #1
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&42,&43
        DCB     &43,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpBCC
OpBCC
        LDRB    a1, [Glb, #rP]
        TST     a1, #1 ;;
;;        ANDS    a1, a1, #1
        MOVNES  pc, lr
        LDR     a1, [pc, #L000240-.-8]
        LDR     a1, [a1, #0]
        SUB     RPC, a1, #1
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&42,&4d
        DCB     &49,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpBMI
OpBMI
        LDRB    a1, [Glb, #rP]
        TST     a1, #128
;;        ANDS    a1, a1, #128
        MOVEQS  pc, lr
        LDR     a1, [pc, #L000240-.-8]
        LDR     a1, [a1, #0]
        SUB     RPC, a1, #1
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&42,&50
        DCB     &4c,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpBPL
OpBPL
        LDRB    a1, [Glb, #rP]
        TST     a1, #128
;;        ANDS    a1, a1, #128
        MOVNES  pc, lr
        LDR     a1, [pc, #L000240-.-8]
        LDR     a1, [a1, #0]
        SUB     RPC, a1, #1
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&42,&45
        DCB     &51,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpBEQ
OpBEQ
        LDRB    a1, [Glb, #rP]
        TST     a1, #2
;;        ANDS    a1, a1, #2
        MOVEQS  pc, lr
        LDR     a1, [pc, #L000240-.-8]
        LDR     a1, [a1, #0]
        SUB     RPC, a1, #1
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&42,&4e
        DCB     &45,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpBNE
OpBNE
        LDRB    a1, [Glb, #rP]
        TST     a1, #2
;;        ANDS    a1, a1, #2
        MOVNES  pc, lr
        LDR     a1, [pc, #L000240-.-8]
        LDR     a1, [a1, #0]
        SUB     RPC, a1, #1
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&42,&56
        DCB     &53,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpBVS
OpBVS
        LDRB    a1, [Glb, #rP]
        TST     a1, #64
;;        ANDS    a1, a1, #64
        MOVEQS  pc, lr
        LDR     a1, [pc, #L000240-.-8]
        LDR     a1, [a1, #0]
        SUB     RPC, a1, #1
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&42,&56
        DCB     &43,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpBVC
OpBVC
        LDRB    a1, [Glb, #rP]
        TST     a1, #64 ;;
;;        ANDS    a1, a1, #64
        MOVNES  pc, lr
        LDR     a1, [pc, #L000240-.-8]
        LDR     a1, [a1, #0]
        SUB     RPC, a1, #1
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&4e,&4f
        DCB     &50,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpNOP
OpNOP
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&52,&54
        DCB     &53,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpRTS
OpRTS
        MOV     ip, sp
        STMFD   sp!, {fp,ip,lr,pc}
        SUB     fp, ip, #4
        BL      MResPil
        MOV     RPC, a1
        BL      MResPil
        ADD     RPC, RPC, a1, ASL #8
        LDMEA   fp, {fp,sp,pc}^

        [ :LNOT:FLAGF
        DCB     &4f,&70,&52,&54
        DCB     &49,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpRTI
OpRTI
        MOV     ip, sp
        STMFD   sp!, {fp,ip,lr,pc}
        SUB     fp, ip, #4
        BL      MResPil
        BIC     a1, a1, #16
        ORR     a1, a1, #32
        LDR     RPC, [pc, #L0001a8-.-8]
        STRB    a1, [RPC, #0]
        BL      MResPil
        MOV     RPC, a1
        BL      MResPil
        ADD     a1, RPC, a1, ASL #8
        SUB     RPC, a1, #1
        LDMEA   fp, {fp,sp,pc}^

        [ :LNOT:FLAGF
        DCB     &4f,&70,&42,&52
        DCB     &4b,&00,&00,&00
        DCD     &ff000008
        ]
        IMPORT  Adr
        EXPORT  OpBRK
OpBRK
        MOV     ip, sp
        STMFD   sp!, {v2,v3,fp,ip,lr,pc}
        SUB     fp, ip, #4
        LDR     v2, [pc, #L0001a8-.-8]
        LDR     v3, [pc, #L000240-.-8]
        ADD     a1, RPC, #2
        BIC     a1, a1, #65536
        STR     a1, [v3, #0]
        MOV     a1, a1, LSR #8
        AND     a1, a1, #255
        BL      StoPil
        LDR     a1, [v3, #0]
        AND     a1, a1, #255
        BL      StoPil
        LDRB    a1, [v2, #0]
        ORR     a1, a1, #16
        MOV     a2, v2
        STRB    a1, [a2, #0]
        BL      StoPil
        MOV     a1, v2
        LDRB    a1, [a1, #0]
        ORR     a1, a1, #4
        STRB    a1, [v2, #0]
        MOV     a1, #&10000
        SUB     a1, a1, #2
        BL      Adr
        SUB     RPC, a1, #1
        LDMEA   fp, {v2,v3,fp,sp,pc}^

        [ :LNOT:FLAGF
        DCB     &4f,&70,&41,&44
        DCB     &43,&44,&66,&63
        DCB     &00,&00,&00,&00
        DCD     &ff00000c
        ]
        EXPORT  OpADCDfc
OpADCDfc
        LDRB    a2, [Glb, #rP]
        TST     a2, #1 ;;
;;        ANDS    ip, a2, #1
        ORRNE   ip, pc, #1:SHL:29
        BICEQ   ip, pc, #1:SHL:29
        TEQP    pc, ip
        MOV     ip, #:NOT:&FF000000
        ORR     RV1, ip, RV1, ASL #24
        LDRB    a1, [Glb, #rA]
        ADCS    RV1, RV1, a1, ASL #24
        ORRCS   a2, a2, #1
        BICCC   a2, a2, #1
        ORRMI   a2, a2, #128
        BICPL   a2, a2, #128
        ORRVS   a2, a2, #64
        BICVC   a2, a2, #64
        MOVS    a1, RV1, LSR #24
        STRB    a1, [Glb, #rA]
        ORREQ   a2, a2, #2
        BICNE   a2, a2, #2
        STRB    a2, [Glb, #rP]
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&41,&44
        DCB     &43,&44,&66,&73
        DCB     &00,&00,&00,&00
        DCD     &ff00000c
        ]
        EXPORT  OpADCDfs
OpADCDfs
        MOV     ip, sp
        STMFD   sp!, {v3,fp,ip,lr,pc}
        SUB     fp, ip, #4
        MOV     a1, RV1
        BL      ToDCB
        MOV     RV1, a1
        LDRB    a1, [Glb, #rA]
        BL      ToDCB
        STRB    a1, [Glb, #rA]
        LDRB    a2, [Glb, #rP]
        ANDS    a2, a2, #1
        BEQ     |L000c9c.J5.OpADCDfs|
        ADD     RV1, RV1, #1
        AND     RV1, RV1, #255
|L000c9c.J5.OpADCDfs|
        ADD     a1, a1, RV1
        CMPS    a1, #99
        MOVLE   v3, #0
        MOVGT   v3, #1
        SUBGT   a1, a1, #100
        BL      FromDCB
        STRB    a1, [Glb, #rA]
        MOVS    RV1, a1
        TZNC    {TRUE}, v3
        LDMEA   fp, {v3,fp,sp,pc}^

        [ :LNOT:FLAGF
        DCB     &4f,&70,&53,&42
        DCB     &43,&44,&66,&63
        DCB     &00,&00,&00,&00
        DCD     &ff00000c
        ]
        EXPORT  OpSBCDfc
OpSBCDfc
        LDRB    a2, [Glb, #rP]
        TST     a2, #1 ;;
;;        ANDS    ip, a2, #1
        ORRNE   ip, pc, #1:SHL:29
        BICEQ   ip, pc, #1:SHL:29
        TEQP    pc, ip
        LDRB    a1, [Glb, #rA]
        MOV     a1, a1, ASL #24
        SBCS    RV1, a1, RV1, ASL #24
        ORRCS   a2, a2, #1
        BICCC   a2, a2, #1
        ORRMI   a2, a2, #128
        BICPL   a2, a2, #128
        ORRVS   a2, a2, #64
        BICVC   a2, a2, #64
        MOVS    a1, RV1, LSR #24
        STRB    a1, [Glb, #rA]
        ORREQ   a2, a2, #2
        BICNE   a2, a2, #2
        STRB    a2, [Glb, #rP]
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&53,&42
        DCB     &43,&44,&66,&73
        DCB     &00,&00,&00,&00
        DCD     &ff00000c
        ]
        EXPORT  OpSBCDfs
OpSBCDfs
        MOV     ip, sp
        STMFD   sp!, {v2,fp,ip,lr,pc}
        SUB     fp, ip, #4
        MOV     a1, RV1
        BL      ToDCB
        MOV     RV1, a1
        LDRB    a1, [Glb, #rA]
        BL      ToDCB
        STRB    a1, [Glb, #rA]
        LDRB    a2, [Glb, #rP]
        ANDS    a2, a2, #1
        BNE     |L000de0.J5.OpSBCDfs|
        ADD     RV1, RV1, #1
        AND     RV1, RV1, #255
|L000de0.J5.OpSBCDfs|
        CMPS    a1, RV1
        MOVGE   v2, #1
        MOVLT   v2, #0
        SUB     a1, a1, RV1
        ADDLT   a1, a1, #100
        BL      FromDCB
        STRB    a1, [Glb, #rA]
        MOVS    RV1, a1
        TZNC    {TRUE}, v2
        LDMEA   fp, {v2,fp,sp,pc}^

        [ :LNOT:FLAGF
        DCB     &4f,&70,&43,&4c
        DCB     &44,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpCLD
OpCLD
        LDRB    a2, [Glb, #rP]
        BIC     a2, a2, #8
        STRB    a2, [Glb, #rP]
        LDR     a2, [pc, #L000e68-.-8]
        LDR     a1, [pc, #L000e64-.-8]
        STR     a1, [a2, #220]
        LDR     a1, [pc, #L000e6c-.-8]
        STR     a1, [a2, #216]
        MOVS    pc, lr
L000e64
        DCD     OpSBCDfc
L000e68
        DCD     ModOp
L000e6c
        DCD     OpADCDfc

        [ :LNOT:FLAGF
        DCB     &4f,&70,&53,&45
        DCB     &44,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpSED
OpSED
        LDRB    a2, [Glb, #rP]
        ORR     a2, a2, #8
        STRB    a2, [Glb, #rP]
        LDR     a2, [pc, #L000e68-.-8]
        LDR     a1, [pc, #L000ea8-.-8]
        STR     a1, [a2, #220]
        LDR     a1, [pc, #L000eac-.-8]
        STR     a1, [a2, #216]
        MOVS    pc, lr
L000ea8
        DCD     OpSBCDfs
L000eac
        DCD     OpADCDfs

        [ :LNOT:FLAGF
        DCB     &4f,&70,&44,&45
        DCB     &41,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpDEA
OpDEA
        LDRB    RV1, [Glb, #rA]
        SUB     RV1, RV1, #1
        STRB    RV1, [Glb, #rA]
        ANDS    RV1, RV1, #255
        TZN     {TRUE}
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&49,&4e
        DCB     &41,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpINA
OpINA
        LDRB    RV1, [Glb, #rA]
        ADD     RV1, RV1, #1
        STRB    RV1, [Glb, #rA]
        ANDS    RV1, RV1, #255
        TZN     {TRUE}
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&50,&48
        DCB     &58,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpPHX
OpPHX
        LDRB    a1, [Glb, #rX]
        B       StoPil

        [ :LNOT:FLAGF
        DCB     &4f,&70,&50,&48
        DCB     &59,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpPHY
OpPHY
        LDRB    a1, [Glb, #rY]
        B       StoPil

        [ :LNOT:FLAGF
        DCB     &4f,&70,&50,&4c
        DCB     &58,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpPLX
OpPLX
        MOV     ip, sp
        STMFD   sp!, {fp,ip,lr,pc}
        SUB     fp, ip, #4
        BL      MResPil
        STRB    a1, [Glb, #rX]
        MOVS    RV1, a1
        TZN     {TRUE}
        LDMEA   fp, {fp,sp,pc}^

        [ :LNOT:FLAGF
        DCB     &4f,&70,&50,&4c
        DCB     &59,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpPLY
OpPLY
        MOV     ip, sp
        STMFD   sp!, {fp,ip,lr,pc}
        SUB     fp, ip, #4
        BL      MResPil
        STRB    a1, [Glb, #rY]
        MOVS    RV1, a1
        TZN     {TRUE}
        LDMEA   fp, {fp,sp,pc}^

        [ :LNOT:FLAGF
        DCB     &4f,&70,&53,&54
        DCB     &5a,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpSTZ
OpSTZ
        MOV     RV1, #0
        TECR    {TRUE}
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&42,&49
        DCB     &4d,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpBIM
OpBIM
        LDRB    a2, [Glb, #rA]
        TST     a2, RV1
;;        ANDS    a2, a2, RV1
        LDRB    a2, [Glb, #rP]
        ORREQ   a2, a2, #2
        BICNE   a2, a2, #2
        STRB    a2, [Glb, #rP]
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&54,&52
        DCB     &42,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpTRB
OpTRB
        STMFD   sp!, {lr}
        LDRB    a3, [Glb, #rA]
        EOR     ip, a3, #255
        TST     RV1, #64 ;;
;;        ANDS    lr, RV1, #64
        LDRB    lr, [Glb, #rP]
        BICEQ   lr, lr, #64
        ORRNE   lr, lr, #64
        CMPS    RV1, #127
        BICLE   lr, lr, #128
        ORRGT   lr, lr, #128
;;        STRB    lr, [a1, #0]
        TST     RV1, a3
;;        ANDS    a3, RV1, a3
        MOV     a3, lr
        ORREQ   a3, a3, #2
        BICNE   a3, a3, #2
        STRB    a3, [Glb, #rP]
        ANDS    RV1, ip, RV1
        TZN     {TRUE}
        TECR    {FALSE}
        LDMFD   sp!, {pc}^

        [ :LNOT:FLAGF
        DCB     &4f,&70,&54,&53
        DCB     &42,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpTSB
OpTSB
        LDRB    a3, [Glb, #rA]
        MOV     a2, RV1
        ORR     RV1, a2, a3
        ANDS    ip, a2, #64
        LDRB    ip, [Glb, #rP]
        BICEQ   ip, ip, #64
        ORRNE   ip, ip, #64
        CMPS    a2, #127
        BICLE   ip, ip, #128
        ORRGT   ip, ip, #128
        ANDS    a2, a2, a3
        ORREQ   ip, ip, #2
        BICNE   ip, ip, #2
        STRB    ip, [Glb, #rP]
        TZN     {FALSE}
        TECR    {TRUE}
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&4c,&53
        DCB     &52,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpLSRAc
OpLSRAc
        LDRB    RV1, [Glb, #rA]
        AND     ip, RV1, #1
        MOVS    RV1, RV1, LSR #1
        STRB    RV1, [Glb, #rA]
        TZNC    {TRUE}, ip
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&41,&53
        DCB     &4c,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpASLAc
OpASLAc
        LDRB    RV1, [Glb, #rA]
        MOV     ip, RV1, LSR #7
        MOV     RV1, RV1, ASL #1
        STRB    RV1, [Glb, #rA]
        ANDS    RV1, RV1, #255
        TZNC    {TRUE}, ip
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&52,&4f
        DCB     &4c,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpROLAc
OpROLAc
        LDRB    RV1, [Glb, #rA]
        MOV     ip, RV1, LSR #7
        LDRB    a2, [Glb, #rP]
        TST     a2, #1
;;        ANDS    a3, a2, #1
        MOV     RV1, RV1, ASL #1
        ADDNE   RV1, RV1, #1
        STRB    RV1, [Glb, #rA]
        ANDS    RV1, RV1, #255
        TZNC    {TRUE}, ip
        MOVS    pc, lr

        [ :LNOT:FLAGF
        DCB     &4f,&70,&52,&4f
        DCB     &52,&00,&00,&00
        DCD     &ff000008
        ]
        EXPORT  OpRORAc
OpRORAc
        LDRB    RV1, [Glb, #rA]
        AND     ip, RV1, #1
        MOV     RV1, RV1, LSR #1
        LDRB    a2, [Glb, #rP]
        TST     a2, #1
;;        ANDS    a2, a2, #1
        ORRNE   RV1, RV1, #128
        STRB    RV1, [Glb, #rA]
        TZNC    {FALSE}, ip
        MOVS    pc, lr

    AREA |C$$data|

|x$dataseg|
        DCD     &1e140a00
        DCD     &463c3228
        DCD     &6e645a50
        DCD     &968c8278

        EXPORT  ModOp
ModOp
        DCD     OpBIT
        DCD     OpLDA
        DCD     OpLDX
        DCD     OpLDY
        DCD     OpJMP
        DCD     OpTAX
        DCD     OpTAY
        DCD     OpTXA
        DCD     OpTYA
        DCD     OpTXS
        DCD     OpTSX
        DCD     OpDEX
        DCD     OpDEY
        DCD     OpINX
        DCD     OpINY
        DCD     OpPHP
        DCD     OpPHA
        DCD     MOpPLP
        DCD     OpPLA
        DCD     OpJSR
        DCD     OpEOR
        DCD     OpAND
        DCD     OpORA
        DCD     OpCMP
        DCD     OpCPX
        DCD     OpCPY
        DCD     OpLSR
        DCD     OpASL
        DCD     OpROL
        DCD     OpROR
        DCD     OpDEC
        DCD     OpINC
        DCD     OpCLC
        DCD     OpSEC
        DCD     OpCLV
        DCD     OpCLI
        DCD     OpSEI
        DCD     OpCLD
        DCD     OpSED
        DCD     OpSTA
        DCD     OpSTX
        DCD     OpSTY
        DCD     OpBCS
        DCD     OpBCC
        DCD     OpBMI
        DCD     OpBPL
        DCD     OpBEQ
        DCD     OpBNE
        DCD     OpBVS
        DCD     OpBVC
        DCD     OpNOP
        DCD     OpRTS
        DCD     OpRTI
        DCD     OpBRK
        DCD     OpADCDfc
        DCD     OpSBCDfc
        DCD     OpJMP
        DCD     OpDEA
        DCD     OpINA
        DCD     OpPHX
        DCD     OpPHY
        DCD     OpPLX
        DCD     OpPLY
        DCD     OpSTZ
        DCD     OpBIM
        DCD     OpTRB
        DCD     OpTSB
        DCD     OpLSRAc
        DCD     OpASLAc
        DCD     OpROLAc
        DCD     OpRORAc
        END
