Home » Archimedes archive » Zipped Apps » BCPL » BCPLi/bcplroot

BCPLi/bcplroot

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Zipped Apps » BCPL
Filename: BCPLi/bcplroot
Read OK:
File size: 95B1 bytes
Load address: 0000
Exec address: 0000
File contents
          Globsize = 0

          Start = 1 << 2

          HostProc = 2 << 2

          StartInit = 3 << 2

          Stacksize = 4 << 2

          BrkEsc = 5 << 2

          Instring = 8 << 2

          Outstring= 9 <<2

          Result2 = 13 << 2

          LineBuff = 17 << 2

          Input = 27 <<2

          Cis = 31 << 2

          Cos = 32 << 2

          ReturnCode = 39 << 2

          Stackbase = 40 << 2

          HeapDescriptor = 57 << 2

          Abort = 63 << 2

          Backtrace = 64 << 2

          Fault = 95 << 2

          Loadpoint = 142 << 2

          Libterminateio = 143 << 2

          TopStore = 148 << 2



          .entry    enter

          .AREA     Code

          .include  "regnames"

          .include  "swinames"

          .include  "adr"

          rbcpl     = r4

          rmg       = r5

          rsect     = r6

          rbase     = r8

enter:    b         firstoff

St:       .ascii    "BCPL"

          .long     globinits - St

          .ascii    "bcplroot"

          .ascii    "14 Mar 90 00-00-00  "

          .long     0

          .long     -1

          .ascic    "Initial"

initial:  .LONG     0

firstoff: ldr       r8, [pc,#initial-$-8]

          ADR       r1, St

          mov       rmg, #100

          ldr       rbcpl, [r1]

sectlp1:  mov       rsect, a1

          ldmfd     a1, {a2, a3}        ;?"BCPL", glob

          cmp       a2, rbcpl           ; unless a1!1 = "BCPL" break

          bne       notsect

          add       a1, a3, a1          ; a1 := globinits

gl1:      ldmfd     a1!, {a2, a3}

          cmp       a3, #0              ; until a1!1 = 0 do a1 +:= 2

          bne       gl1

          cmp       a2, rmg

          movge     rmg, a2

          ldr       a3, [a1]

          ldr       a2, [pc,#onetwo-$-8]

          cmp       a2, a3

          bne       sectlp1             ; no relocations

          ldr       a2, [pc,#eightsev-$-8]

          add       a1, a1, #4

          cmp       rb, #0

          bne       norel

reloc:    ldmfd     a1!, {a3}

          cmp       a2, a3              ;until !a1 = eightsev

          ldrne     r0, [rsect, a3]

          addne     r0, r0, rsect

          strne     r0, [rsect, a3]     ;rsect!(!a1) +:= rsect

          bne       reloc

          b         sectlp1

onetwo:   .long     0x12345678

eightsev: .long     0x87654321

norel:    ldmfd     a1!, {a3}

          cmp       a2, a3

          bne       norel

          b         sectlp1

;

;         Relocations done and "BCPL", maxglob, sectbase set in r4, r5, r8;

;         a1 set to point after last section.

;

notsect:  add       rg, a1, #64         ;leave 16 words between code and globals

          add       rfp, rg, rmg,lsl #2 ;then the heap after rmg

          str       rmg, [rg]           ;g0 := #globals

illglob:  mov       r6, #0xAE000000

          add       r6, r6, #0x950000   ; illegal value for g0

          add       r6, r6, rmg, lsl #2

          str       r6, [rg,rmg,lsl #2] ; g!rmg :=#Xae950000 +4*rmg

          subs      rmg, rmg, #1        ; rmg -:= 1 repeatwhile rmg

          bne       illglob

          ADR       a1, St

glini:    ldmfd     a1, {a2,a3}

          cmp       a2, rbcpl           ; unless a1!0 = "BCPL" break

          bne       glinibr

          add       a1, a1, a3

glini1:   ldmfd     a1!, {a2,a3}

          cmp       a3, #0              ; a1 -> glob, offset or maxglob,0

          strne     a3, [rg, a2,lsl #2] ; g!a3 := 4*a2 (already relocated)

          bne       glini1

          ldr       a3, [a1]

          ldr       a2, [pc, #onetwo-$-8]

          cmp       a2, a3

          bne       glini               ; No relocations; next section

          ldr       a2, [pc, #eightsev-$-8]

glini2:   ldmfd     a1!, {a3}

          cmp       a2, a3

          bne       glini2              ; walk to end of sect

          b         glini

;

;         globals initialised; rg, rfp points to g0, g0 + rmg (+4) above.

;

glinibr:  add       rfp, rfp, #4        ;frame pointer, empty frame, bos

          mov       r5, #0x100          ;C&S-brk resets, brk exits, esc ignored

          str       r5, [rg, #BrkEsc]

          mov       r5, #0x1000         ; default stackwords

          str       r5, [rg, #Stacksize]

          mov       r5, #0xae00

          add       r5, r5, #0x95

          ldr       rb, [rg, #StartInit]

          cmp       r5, rb, lsr #16

          blne      Call                ; Call if StartInit present

          strne     a1, [rg, #Stacksize]

          swi       OS_GetEnv

          str       r0, [pc, #saveregs-$-8]       ;*command

          sub       a1, a1, #1

          str       a1, [r9, #TopStore]

          mov       a3, a1              ; Top of addressable store

          mov       a1, rfp             ; Base   ""          ""

          str       a1, [rg, #HeapDescriptor]

          sub       a3, a3, a1          ; length available

          mov       a3, a3, lsr #2

          mov       a3, a3, lsl #2      ; must be wordsized

          mov       r0, #0              ; initialise heap

          swi       OS_Heap

          mov       r0, #2

          ldr       a3, [rg, #Stacksize]

          add       a3, a3, #1

          mov       a3, a3, lsl #2      ; Stackbytes + 4

          swi       OS_Heap

          mov       r5, a2, lsr #2

          add       r5, r5, #1

          str       r5, [rg, #Stackbase]; of Stacksize words

          mov       rfp, a2             ; with rfp as base


          mov       a3, #264

          mov       r0, #2

          swi       OS_Heap             ; get space for Linebuff

          mov       r0, a2, lsr #2

          str       r0, [rg, #Instring] ; set Instring

          add       r0, r0, #2

          str       r0, [rg, #LineBuff] ; set Linebuf

          add       a2, a2, #4

          str       r0, [a2], #5       ; Instring!1 := Instring+2

          sub       a3, a2, #1         ; a3 = linebufB

          ldr       r0, [pc, #saveregs-$-8]

Walk:     ldrb      a1, [r0], #1

          cmp       a1, #32

          bgt       Walk

          subne     r0, r0, #1

          mov       a1, a2             ; Command tail to Linebuf!2

          mov       a2, #256

          swi       OS_GSTrans

          bvc       cmdl

          mov       a1, #12

          str       a1, [rg, #ReturnCode]

          ADR       a1, errcl

          mov       a1, a1, lsr #2

          ldr       rb, [rg, #Fault]

          bl        Call

          b         Finish              ; ? needed

errcl:    .asciz    "Bad CLine"

          .align


cmdl:     strb      a2, [a3], #-8       ; Instring!0 := Linebuf%0

          str       a2, [a3]

          mov       r0, #0

          str       r0, [rg, #Outstring];Outstring := 0


          ldr       a2, [rg,#Stacksize]

          rsb       a2, a2, #0          ; -StacksizeW

          str       a2, [rfp]

          sub       a3, rfp, a2, lsl #2 ; TOSB

          add       rfp, rfp, #4        ; Now Stackbase agrees with global

          mov       r0, #0

          mvn       a2, #0

          mov       a4, a3, lsr #2

          sub       a4, a4, #1

          stmea     rfp!, {r0, a2, a4}  ; sb!0, 1, 2, 3 := 0, -Sbw, TOSW, -Sbw

          mov       a1, #1              ; sb!5 only needed

          stmea     rfp!, {r0, a1, a2}    ; wrong!!!!!!!

          mov       rts, rfp            ; Empty frame

;

;stack shd be ffff0000, 0, ffff0000, tos,......,wordaddress at top

; 148-174 ommitted

;

          mov       r0, #65

          str       r0, [rg, #HostProc]

          mov       r0, #0

          str       r0, [pc, #Envflag - 8 - $]

          mov       a1, #0

          mov       a2, #0

          mvn       a3, #1

          ldr       a4, [rg, #Abort]

          mov       r5, #0xae00

          add       r5, r5, #0x95

          cmp       r5, a4, lsr #16

          streq     r0, [pc, #UInstr - 8 - $]



          blnv        NewEnv                  ; Remove nv

          ADR       r0, St

          mov       r0, r0, lsr #2

          str       r0, [rg, #Loadpoint]

          ldr       rgb, [pc, #Rgbval-8-$]

          add       rgb, rgb, #0x40000000

          mov       r0, #0

          str       r0, [rg, #ReturnCode]

          mov       r0, #1 << 24        ; Newline() not fast

          str       r0, [rg, #Cis]

          str       r0, [rg, #Cos]

          ldr       rb, [rg, #Start]

          bl        Call

Finish:   mov       rts, rfp

;          ldr       rb, [rg, Libterminateio]      ;not needed

;          bl        Call

Depart:   ldr       a1, [pc, #abex-8-$]

          ldr       a2, [rg, #ReturnCode]

          swi       OS_Exit

abex:     .ascii    "ABEX"


saveregs: .blkl     16

Rgbval:   .long     Rgbs-4              ; Relocate these two


          .long     -1

          .ascic    "ErrHand"

ErrHand:  movs      pc, lr

EscHand:  stmfd     rl!, {lr}

          mov       r0, #126

          swi       OS_Byte+XOS         ; Acknowledge Escape

          ldrb      r0, [rg, #BrkEsc]

          teq       r0, #0

          swine     OS_WriteS+XOS

          .asciz    "\c\nEscape\c\n"

          .align

          swine     OS_Exit

          ldmfd     rl!, {lr}

          movs      pc, lr


BrkHand:  mov       pc, lr


          .long     -1

          .ascic    "EvHandl"

EvHandl:  ADR       rts, EveRtnes       ; Call EveRtns!r0

          ldr       pc, [rts, r0, lsl #2]


EvFlag:   ADR       rts, EveParams

          ldr       rts, [rts, r0, lsl #2]

          str       a1, [rts], #4

          str       a2, [rts], #4

          str       a3, [rts], #4

          str       a4, [rts], #4

          movs      pc, rl


ErrBuff:  .blkl     16


          .long     -1

          .ascic    "CBHandl"

CBHandl:  ADR       r0, CBBuff

          ldr       lr, [r0, #60]      ; Exit?

;          tsts      lr, #3

;          beq       CB3

;          mov       a1, lr              ; keep safe svc_lr

;          swi       OS_SetCallBack      ; another Callback

;          mov       lr, a1

          ldmfd     r0, {r0-lr}

          movs      pc, lr

CBBuff:   .blkl     16


EvBuff:   ADR       rts, EveParams

          ldr       rts, [rts, r0, lsl #2]

          mov       r0, r0, lsl #16

          orr       r0, r0, a1, lsl #8

          orr       r0, r0, a2

          ldmfd     rts!, {a1, a2, rl}

          add       a1, a1, #1

          moveq     a1, #0

          cmp       a1, a2

          strne     a1, [rts, #-12]

          mov       rl, #0

EvReturn: movs      pc, lr


EveRtnes: .blkl     18                  ; 0-11 Events in Arthur

EveParams:.blkl     18                  ; 0-17   ""    Riscos

          .long     -1

          .ascic    "Seteven"

Seteven:  cmp       a3, #0

          ADR       a2, EvReturn

          beq       Evenex              ; ignore

          cmp       a3, #2

          ADRNE     a4, EveParams

          movne     a2, a2, lsl #2      ; flag(1) or buffer(3) BCPL

          strne     a2, [a4, a1, lsl #2]

          ADRNE     a2, EvFlag;

          cmpne     a3, #1

          ADRNE     a2, EvBuff

Evenex:   ADR       a4, EveRtnes       ; ARM Routine(2)

          strne     a2, [a4, a1, lsl #2]

          movs      pc, lr


Uinhand:  str       lr, [pc, #Xcpbuf0-$-8]

          mov       lr, #1

          b         Hardhand

Pfahand:  str       lr, [pc, #Xcpbuf0-$-8]

          mov       lr, #2

          b         Hardhand

Dtahand:  str       lr, [pc, #Xcpbuf0-$-8]

          mov       lr, #3

          b         Hardhand

Adxhand:  str       lr, [pc, #Xcpbuf0-$-8]

          mov       lr, #4

Hardhand: str       lr, [pc, #Xcpbuf1-$-8]

          ADR       lr, XcpRegs

          stmea     lr, {r0 - lr}^

          tstp      pc, #0              ; leave svc mode

          swi       OS_WriteI+14

          add       rts, rfp, #160

          ldr       rb, [rg, #Abort]

          ldr       a1, [pc, #Xcpbuf1-$-8]

          ldr       lr, [pc, #Xcpbuf0-$-8]

          mov       pc, rb


          .long     -1

          .ascic    "TKRErr "

TKRErr:   mov       a3, a1, lsl #2

          ADR       a4, ErrBuff+4

          mov       r5, #0

TKRlp:    ldrb      rb, [a4], #1

          cmp       rb, #0

          beq       TKRex

          add       r5, r5, #1

          strb      rb, [a3, r5]

          cmp       r5, a2

          blt       TKRlp

TKRex:    strb      r5, [a3]

          movs      pc, lr


          .long     -1

          .ascic     "Stop   "

Stop:     str       a1, [rg, #ReturnCode]    ;? #ReturnCode

          ldr       a3, [rg, #Stackbase]

          mov       a3, a3, lsl #2

          ldr       a2, [a3, #4]

          ldr       rfp, [a3, #24]

          cmn       a2, #1

          beq       Finish

          b         ResCflt

          .long     -1

          .ascic    "Chenv  "

NewEnv:   ADR       a4, UInstr

          ADR       r5, OUInstr

          b         ChEnv

OldEnv:   ADR       a4, OUInstr

          ADR       r5, UInstr

          b         ChEnv


XcpRegs:  .blkl     16

Xcpbuf0:  .blkl     1

Xcpbuf1:  .blkl     1

OUInstr:  .blkl     1

OPrefab:  .blkl     1

ODatab:   .blkl     1

OAddexp:  .blkl     1

OOtherx:  .blkl     1

OErrorH:  .blkl     3

OCallBH:  .blkl     3

OBreakPtH:.blkl     3

OEscapeH: .blkl     2

OEventH:  .blkl     2

OExitH:   .blkl     2

OUnusSWI: .blkl     2

OExcepReg:.blkl     1

OAplSp:   .blkl     1

OCao:     .blkl     1

OUpCall:  .blkl     2


Envflag:  .address  0

UInstr:   .address  Uinhand

Prefab:   .address  Pfahand

Datab:    .address  Dtahand

Addexp:   .address  Adxhand

Otherx:   .address  0

ErrorH:   .address  ErrHand

          .address  0                   ; dont care

          .address  ErrBuff

CallBH:   .address  CBHandl

          .address  0

          .address  CBBuff

BreakPtH: .address  0

          .address  0

          .address  0

EscapeH:  .address  0

          .address  0

EventH:   .address  EvHandl

          .address  0

ExitH:    .address  Exithan

          .address  0

UnkSWI:   .address  0

          .address  0

ExcepReg: .address  0;XcpRegs

AplSp:    .address  0

Cao:      .address  0

UpCall:   .address  0

          .address  0


;Changenv Called with r0 case for OS_Changenv, a4 address of new value, r5

;address to put old value; ends with a4, r5 incremented.


ChEnv:    ldr       r0, [pc, #UInstr-$-8]

          cmp       r0, #0

          moveq     pc, lr

          mov       r0, #0              ; NB 0(Memlim not serviced)

Envlp:    mov       a2, #0

          mov       a3, #0

          add       r0, r0, #1

          ldr       a1, [a4], #4

          teq       r0, #0

          teqne     r0, #1

          teqne     r0, #2

          teqne     r0, #3

          teqne     r0, #4

          teqne     r0, #5

          teqne     r0, #13

          teqne     r0, #14

          teqne     r0, #15

          beq       Env1

          ldr       a2, [a4], #4

          teq       r0, #9

          teqne     r0, #10

          teqne     r0, #11

          teqne     r0, #12

          teqne     r0, #13

          teqne     r0, #16

          beq       Env1

          ldr       a3, [a4], #4

Env1:     swi       OS_ChangeEnvironment

          str       a1, [r5], #4

          teq       r0, #0

          teqne     r0, #1

          teqne     r0, #2

          teqne     r0, #3

          teqne     r0, #4

          teqne     r0, #5

          teqne     r0, #13

          teqne     r0, #14

          teqne     r0, #15

          beq       Envlp

          str       a2, [r5], #4

          teq       r0, #9

          teqne     r0, #10

          teqne     r0, #11

          teqne     r0, #12

          teqne     r0, #13

          beq       Envlp

          teq       r0, #16

          moveq     pc, lr

          str       a3, [r5], #4

Env2:     b         Envlp


UPCHand:  stmia     r12, {r0-r5, lr}

          tst       r0, #256            ; R12 points to 7 word block

          ldreq     r0, [pc, #Envflag-$-pc]

          teqeq     r0, #1

          bne       UpEx

          bl        OldEnv

          mov       r0, #0

          str       r0, [pc, #Envflag-$-pc]

UpEx:     ldmia     r12, {r0-r5, lr}

          movs      pc, lr


Exithan:  bl        OldEnv

          swi       OS_Exit


          .long     -1

          .ascic    "OSCLI  "

OSCLI:    mov       r0, a1, lsl #2

          ldrb      a1, [r0], #1        ; string byte base, length

          add       a2, a1, r0          ; string byte terminator position

          ldrb      r3, [a2]

          mov       a4, #0

          strb      a4, [a2]

          ldr       a1, [pc, #Envflag-$-pc]

          cmp       a1, #0

          bne       SavEnv

          swi       OS_CLI+XOS

          strb      a3, [a2]

          mov       a1, #0

          mvnvs     a1, #0

          mov       pc, lr

SavEnv:   stmea     rts!, {lr}

          stmea     rts!, {a2, a3}

          bl        OldEnv

          swi       OS_CLI+XOS

          mov       a1, #0

          mvnvs     a1, #0

StEnv:    bl        NewEnv

          ldmea     rts!, {a2, a3}

          strb      a3, [a2]

          ldmea     rts!, {pc}


          .long     -1                  ; needs a global

          .ascic    "RestEnv"

ResetEnv: ldr       a1, [pc, #Envflag-$-pc]

          cmp       a1, #1

          moveq     pc, lr

          mov       r6, lr

          b         StEnv


          .long     -1

          .ascic    "Call   "

Call:     mov       pc, rb

Rgbs:     b         Depart

Mpy:      stmfd     rg, {a4, lr}        ; mpy

          mov       a4, #0

          movs      lr, a2

          rsbmi     lr, lr, #0

Mpylp:    movs      lr, lr, lsr #1

          addcs     a4, a4, a1

          mov       a1, a1, lsl #1

          bne       Mpylp

          mov       a1, a4

          teqs      a2, #0

          rsbmi     a1, a1, #0

          ldmea     rg, {a4,pc}^


Div:      stmfd     rg, {a3-r5,lr}      ; a1/a2, a1 rem a2

          movs      lr, a1

          rsbmi     lr, lr, #0

          movs      a3, a2

          beq       DivZero             ; Divide by zero fault

          rsbmi     a3, a3, #0

          mov       a4, #0

          mov       r5, #1

Divl1:    cmp       a3, #0x80000000

          cmpcc     a3, lr

          movcc     a3, a3, lsl #1

          movcc     r5, r5, lsl #1

          bcc       Divl1

Divl2:    cmp       a3, lr

          addls     a4, a4, r5

          subls     lr, lr, a3

          movs      r5, r5, lsr #1

          movne     a3, a3, lsr #1

          bne       Divl2

          teqs      a1, a2

          rsbmi     a4, a4, #0

          cmp       a1, #0

          mov       a2, lr

          rsblt     a2, a2, #0

          mov       a1, a4

          ldmea     rg, {a3-r5, pc}^   ; a1, a2 = a1/a2, a1 rem a2


          movnv     r0,r0

          stmea     rts!, {rb, fp, sp, lr}

          sub       fp, rts, #16

          ldr       rl, [rb, #-4]

          ldr       r0, [rb, #4]

          add       r0, r0, #1

          str       r0, [rb, #4]

          ldr       pc, [rb, #8]        ; ????????????


          add       lr, lr, #4

          stmfd     rg, {r0, lr}

          bic       lr, lr, #0xfc000000

          ldr       r0, [r5]

          ldmea     rg, {r0, pc}^

DivZero:  mov       a1, #12

          str       a1, [rg, #ReturnCode]

          ADR       a1, Divz

          b         Faults       ; in ResumeC

Divz:     .ascic    "Division by zero\0"

          .align


          .long     -1

          .ascic    "Muldiv "

Muldiv:   stmea     rts!, {rb, rfp, rl, lr }

          sub       rfp, rts, #16

          stmea     rts!, {a1, a2, a3}

          cmp       a2, #0

          beq       Divz

          cmp       a1, #0

          rsblt     a1, a1, #0

          cmp       a2, #0

          rsblt     a2, a2, #0          ; a1, a2 := mod a1, mod a2

          mov       r0, a1, lsr #16     ; a1 hi

          mov       a4, a2, lsr #16     ; a2 hi

          bic       a1, a1, r0, lsl #16 ; a1 lo

          bic       a2, a2, a4, lsl #16 ; a2 lo

          mul       a3, a1, a2          ; bits 0-15+part 16-31

          mul       a2, r0, a2          ; part bits 16-47

          mul       a1, a4, a1          ;  ""        ""

          mul       a4, r0, a4          ; part bits 32-47 + bits 48-63

          adds      a1, a2, a1

          addcs     a4, a4, #0x10000     ; carry from middle

          adds      a3, a3, a1, lsl #16

          adc       a4, a4, a1, lsr #16 ; result in a3(lo)-a4(hi)


          ldmea     rts, {r5}           ; divisor

          mov       a1, #0              ; dividend

          mov       a2, #0              ; remainder

          mov       r0, #64             ; count

divlp1:   subs      r0, r0, #1

          beq       DivDone

          adds      a3, a3, a3

          adcs      a4, a4, a4

          bpl       divlp1              ; a4 bit 31 now set

divlp2:   adds      a3, a3, a3

          adcs      a4, a4, a4

          adc       a2, a2, a2          ; rem := Rem*2+Carry

          cmp       a2, r5

          subcs     a2, a2, r5          ; rem -:= divisor

          adcs       a1, a1, a1         ; div := div*2+Carry

          bcs       Toobig

divsm:    subs      r0, r0, #1

          bne       divlp2


DivDone:  str       a2, [rg, #Result2]

          ldmea     rts!, {a3-r5}

          eors      a3, a3, a4

          rsblt     a1, a1, #0

          eors      a3, a4, r5

;          rsblt     a2, a2, #0

          ldmea     rts!, {rb, rfp, rl, pc}^

Toobig:   mov       a1, #15

          str       a1, [rg, #ReturnCode]

          ADR       a1, oflo

          b         Faults

oflo:     .ascic    "Muldiv result oflo\0"


          .align

          .long     -1

          .ascic    "OSByte "

OSByte:   mov       r0, a1

          mov       a1, a2

          mov       a2, a3

          swi       OS_Byte

          str       a2, [rg, #Result2]

          movs      pc, lr


          .long     -1

          .ascic    "OSWord "

OSWord:   and       r0, a1, #0xff

          mov       a1, a2, lsl #2

          swi       OS_Word

          movs      pc, lr              ; nb if p0 = 0 OS_Readline ISNT Called.


          .long     -1

          .ascic    "OSArgs "

OSArgs:   mov       r0, a1

          mov       a1, a2

          mov       a2, a3

          swi       OS_Args

          mov       a1, a2

          str       r0, [rg, #Result2]

          movs      pc, lr


          .long     -1

          .ascic    "OSFile "

OSFile:   stmea     rts!, {nil}

          mov       r0, a1

          cmp       a2, #0

          movlt     nil, #0

          movlt     a1, #0

          sublt     a1, a1, a2

          mvnge     nil, #0

          movge     a1, a2, lsl #2

          ldrgeb    a2, [a1], #1        ; string byte base, length

          addge     a4, a2, a1          ; string byte terminator position

          ldrgeb    r5, [a4]

          movge     rb, #0

          strgeb    rb, [a4]

          stmea     rts!, {a4, r5}

          mov       rb, a3, lsl #2

          ldr       a2, [a1]

          cmp       a2, #0

          addeq     a1, a1, #1

          ldmia     rb, {a2-r5}

          swi       OS_File + XOS

          stmia     rb, {a2-r5}

          mov       a2, #0

          mvnvs     a2, #0

          str       a2, [rg, #Result2]

          mov       a1, r0

          ldmea     rts!, {a4, r5}

          cmp       nil, #0

          strneb    r5, [a4]            ; restore

          ldmea     rts!, {nil}

          movs      pc, lr


          .long     -1

          .ascic    "OSWrCh "

OSWrCh:   mov       r0, a1

          swi       OS_WriteC

          movs      pc, lr


          .long     -1

          .ascic    "OSRdCh "

OSRdCh:   swi       OS_ReadC

          mov       a1, r0

          mov       r0, #0

          mvncs     r0, #0

          str       r0, [rg, #Result2]

          movs      pc, lr


          .long     -1

          .ascic    "OSBPut "

OSBPut:   mov       r0, a1

          mov       a1, a2

          swi       OS_BPut

          movs      pc, lr


          .long     -1

          .ascic    "OSBGet "

OSBGet:   swi       OS_BGet+XOS

          mov       a1, r0

          movcs     a1, #0xff

          movcs     a1, a1, lsl #1

          movs      pc, lr


          .long     -1

          .ascic    "Level  "

Level:    mov       a1, rfp

          movs      pc, lr


          .long     -1

          .ascic    "LongJum"

LongJump: cmp       rfp, a1

          moveq     pc, a2              ; Same level

          mov       a4, rfp

LJ1:      ldr       r5, [a4, #4]        ; rfp enclosing frame rfp!1

          cmp       r5, a4

          beq       LJ2                 ; base of stack?

          cmp       r5, a1              ; enclosing frame correct?

          movne     a4, r5

          bne       LJ1

          ldr       rl, [a4, #8]        ; rl of found frame  rfp!2

          mov       rts, a4

          mov       rfp, a1

          mov       pc, a2              ; successful

LJ2:      mov       a3, a1

          mov       a1, #14

          str       a1, [rg, #ReturnCode]

          str       r2, [ rg, #Result2 ]

          ADR       a1, LJRep

          b         Faults

LJRep:    .ascic    "Destination frame %n for LongJump in the stack\0"

          .align


          .long     -1

          .ascic    "GBytes "

GBytes:   mov       r0, a1

          mov       a1, #0              ; returns last 4 bytes ( max a2 )

GBloop:   ldrb      a3, [r0], #1        ; from a1 (not wrd aligned) in one word

          add       a1, a3, a1, lsl #8  ; Byteword := GBytes( Byteaddr, Number )

          subs      a2, a2, #1

          bgt       GBloop

          movs      pc, lr


          .long     -1

          .ascic    "PBytes "

PBytes:   add       a1, a1, a2          ; PBytes( Byteword, Number, Byteaddr )

PBloop:   strb      a3, [a1, #-1]

          subs      a2, a2, #1

          bgt       PBloop

          movs      pc, lr


          .long     -1

          .ascic    "Move   "

Move:     mov       a4, a2, lsl #2      ; to b

          mov       a2, a3

          mov       a3, a1, lsl #2      ; from b

          mov       a1, #1

          b         MWLoop


          .long     -1

          .ascic    "Backmov"

BackMov:  add       a4, a2, a3          ; to w

          mov       a2, a3

          add       a3, a1, a3          ; from w

          mvn       a1, #0

          b         MoveWo


          .long     -1

          .ascic    "MoveWor"

MoveWo:   mov       a4, a4, lsl #2

          mov       a3, a3, lsl #2

MWLoop:   ldr       r0, [a3], a1,lsl #2 ; a3 postindex icr/decr by a1

          str       r0, [a4], a1,lsl #2

          subs      a2, a2, #1

          bgt       MWLoop

          mov       pc, lr


          .long     -1

          .ascic    "FillWor"

FillWo:   mov       a1, a1, lsl #2

Filloop:  str       a3, [a1], #4

          subs      a2, a2, #1

          bgt       Filloop

          movs      pc, lr


          .LONG     -1

          .ascic    "Movebyt"

Movebyte: cmp       a3, #0

          moveq     pc, lr

mb:       ldrb      r0, [a1], #1

          strb      r0, [a2], #1

          subs      a3, a3, #1

          bgt       mb

          mov       pc, lr


          .long     -1

          .ascic    "Backmvb"

Backmvby: cmp       a3, #0

          moveq     pc, lr

bmb:      subs      a3, a3, #1

          ldrb      r0, [ a1, a3 ]

          strb      r0, [ a2, a3 ]

          bgt       bmb

          mov       pc, lr


          .long     -1

          .ascic    "CoWait "           ; CoWait( Coptr )

CoWait:   stmea     rts!, {rb, rfp, rl, lr} ; fp!0, 1, 2, 3 :=

                                        ;      Called, Calling fp, statics, link

          sub       rfp, rts, #16       ; frame pointer

          stmea     rts!, {a1}          ; fp!4 := coptr

          ldr       a2, [rg, #Stackbase]; Current Stackbase

          mov       a2, a2, lsl #2

          ldr       a3, [a2, #4]        ; sb := sb!1

          cmns      a3, #1

          beq       ResCflt             ; sb!1=-1 -> Mainstack

          str       a3, [rg, #Stackbase];      otherwise Calling stack

          mov       a4, #0

          str       a4, [a2, #4]        ;     := 0 -> waiting

          str       rfp, [a2, #16]      ; sb!4 := frameptr for resume

          mov       a3, a3, lsl #2

          ldr       rfp, [a3, #16]      ; frptr = Oldsb!4

          ldmed     rfp, {rfp, rl, pc}^ ; frameptr, statics, resumepc :=

                                        ;         frameptr!4, 3, 2

          .long     -1

          .ascic    "CreateC"          ; (function, stack#)

CreateC:  stmea     rts!, {rb, rfp, rl, lr}

          sub       rfp, rts, #16

          stmea     rts!, {a1, a2}

          mov       a1, a2

          bl        GetVec

          cmps      a1, #0              ; if v = 0 goto ResCflt

          beq       ResCflt

          ldmea     rts!, {a4, lr}

          add       lr, a1, lr          ; lr := v+Stack#, i.e Stacktopword(Stw)

          mov       a2, a1, lsl #2      ; a2 := Stackbotbyte(Sbb)

          ldr       rb, [rg, #Stackbase]

          mov       a3, rb, lsl #2

          ldr       r5, [a3]

          str       a1, [a3]            ; oldsb!0 := Stack#

          stmea     a2, {r5, rb, lr}    ; sb!0, 1, 2 := Oldsb!0, owning sbW, Stw

          str       a4, [a2, #20]       ; sb!5 := function

          str       a3, [a2, #16]       ; sb!4 := OwningsbB

          str       a1, [rg, #Stackbase]; Stackbase := StackbaseW

          add       rfp, a2, #24

ccret:    mov       rts, rfp

          bl        CoWait

          ldr       rb, [rfp, #-4]      ; function

          bl        Call

          b         ccret               ; loop


          .long     -1

          .ascic    "DeleteC"

DeleteC:  stmea     rts!, {rb, rfp, rl, lr}

          sub       rfp, rts,  #16

          stmea     rts!, {a1}          ;(coptr) returns successcode

          mov       a2, a1, lsl #2

          ldr       a3, [a2, #4]        ; sb!1

          cmp       a3, #0

          bne       ResCflt              ; not a stack

          ldr       a3, [rg, #Stackbase]

dlc1:     mov       a4, a4, lsl #2

          ldr       a4, [a4, #4]

          cmn       a4, #1              ; if owningsb!1 \= -1,ie nain, loop

          bne       dlc1

          mov       r0, #0

dlcl2:    mov       a4, a3

          ldr       a3, [r0, a3, lsl #2]

          cmp       a3, 0

          beq       ResCflt

          cmp       a1, a3              ; Coptr

          bne       dlcl2

          ldr       a2, [r0, a1, lsl #2]

          str       a2, [r0, a4, lsl #2]

          bl        FreeVec

          mov       rts, rfp

          ldmed     rts, {rfp, rl, pc}^


          .long     -1

          .ascic    "CallCo "

CallCo:   stmea     rts!, {rb, rfp, rl, lr}

          sub       rfp, rts, #16

          stmea     rts!, {a1, a2}       ; CallCo( Coptr, arg )

          mov       a3, a1, lsl #2

          ldr       a4, [a3, #4]        ; if coptr!1 = 0 goto ResCflt

          cmp       a4, #0

          bne       ResCflt              ; Not waiting

          ldr       rb, [rg, #Stackbase]

          str       rb, [a3, #4]        ; Coptr!1 := Calling Stackbase

          mov       rb, rb, lsl #2

CallCo1:  str       a1, [rg, #Stackbase]; Stackbase := Coptr

          str       rfp, [rb, #16]      ; OldStackbase!4 := rfp

          ldr       rts, [a3, #16]      ; rts := Coptr!4

          mov       a1, a2              ; arg

          ldmed     rts, {rfp, rl, pc}^


          .long     -1

          .asciC    "ResumeC"

ResumeC:  stmea     rts!, { rb,rfp, rl, lr}

          sub       rfp, rts, #16

          stmea     rts!, {a1, a2}      ; ResumeCo( coptr, Arg )

          ldr       rb, [rg, #Stackbase]

          cmp       rb, a1              ; Resume oneself == Call

          beq       resco2

          mov       a3, a1, lsl #2

          ldr       a4, [a3, #4]        ; a4 := owner

          bne       ResCflt              ; Exists, error return

          mov       rb, rb, lsl #2

resco3:   ldr       a4, [rb, #4]

          cmns      a4, #1

          beq       ResCflt

          str       a4, [a3, #4]        ; owner of new := Owner of old

          mov       a4, #0

          str       a4, [rb, #4]        ; CoWait old

          b         CallCo1

resco2:   mov       a1, a2

          mov       rts, rfp

          ldmed     rts, {rfp, rl, lr}^

ResCflt:  ADR       a1, ResCerr

          mov       a1, #13

          str       a1, [rg, #ReturnCode]

Faults:   mov       a1, a1, lsr #2

          ldr       rb, [rg, #Fault]

          swi       OS_NewLine

          bl        Call

          b         Finish

ResCerr:  .ascic    "Coroutine error\n"

          .align

ResC78:   .ascii    "VERN"

          .long     -1

          .ascic    "GetVect"

GetVec:   mov       r0, #2

          add       a1, a1, #1

          mov       a3, a1, lsl #2

Comvec:   ldr       a1, [rg, #HeapDescriptor]

          swi       OS_Heap + XOS

          mov       a1, a2, lsr #2

          movvc     r0, #0

          mvnvs     r0, #0

          str       r0, [ rg, #Result2 ]

          movvc     pc, lr               ; error return now if Result2

          ADR       a1, Gv

          b         Faults

Gv:       .ascic    "Heap fault"

          .align

          .long     -1

          .ascic     "MaxVect"

MaxVec:   mov       r0, #1

          b         Comvec

          .long     -1

          .ascic    "FreeVec"

FreeVec:  cmp       a1, #0

          moveq     pc, lr              ; return if 0

          mov       r0, #3

          mov       a2, a1, lsl #2

          b         Comvec

hexbuf:   .blkb     9

          .align


          .long     -1

          .ascic    "OSFind "

OSFind:   movs      r0, a1

          bne       OSFOpen

          mov       a1, a2              ; handle

          swi       OS_Find

          mov       a1, r0

          mov       pc, lr


OSFOpen:  cmp       a2, #0

          mvnle     a4, #0

          movlt     a1, #0

          sublt     a1, a1, a2

          movge     a1, a2, lsl #2

          ldrgeb    a2, [a1], #1        ; string byte base, length

          addge     a3, a2, a1          ; string byte terminator position

          ldrgeb   a4, [a3]

          movge     r5, #0

          strgeb    r5, [a3]

          swi       OS_Find+XOS

          movvc     a1, #0

          mvnvs     a1, #0

          str       a1, [rg, #Result2]

          cmp       a4, #0

          strgeb    a4, [a3]            ; restore

          mov       a1, r0

          mov       pc, lr

globinits:

          .long     16

          .long     Muldiv - St

          .long     35

          .long     Stop - St

          .long     37

          .long     GBytes - St

          .long     38

          .long     PBytes - St

          .long     41

          .long     Level  - St

          .long     42

          .long     LongJump - St

          .long     48

          .long     CreateC - St

          .long     49

          .long     DeleteC - St

          .long     50

          .long     CallCo - St

          .long     51

          .long     ResumeC - St

          .long     52

          .long     CoWait - St

          .long     54

          .long     GetVec - St

          .long     55

          .long     FreeVec - St

          .long     56

          .long     MaxVec - St

          .long     96

          .long     OSArgs - St

          .long     97

          .long     OSBGet - St

          .long     98

          .long     OSBPut - St

          .long     99

          .long     OSFind - St

          .long     100

          .long     OSFile - St

          .long     101

          .long     OSCLI - St

          .long     102

          .long     OSWrCh - St

          .long     103

          .long     OSRdCh - St

          .long     104

          .long     OSByte - St

          .long     105

          .long     OSWord - St

          .long     106

          .long     TKRErr - St

          .long     135

          .long     ResetEnv - St

          .long     136

          .long     Move - St

          .long     137

          .long     BackMov - St

          .long     138

          .long     Movebyte - St

          .long     139

          .long     Backmvby - St

          .long     140

          .long     MoveWo - St

          .long     141

          .long     FillWo - St

          .long     Stackbase

          .long     FillWo - St

          .long     150

          .long     0

          .long     0x12345678

          .long     globinits           ; not +4 because b instr at head

          .long     globinits+8

          .long     globinits+16

          .long     globinits+24

          .long     globinits+32

          .long     globinits+40

          .long     globinits+48

          .long     globinits+56

          .long     globinits+64

          .long     globinits+72

          .long     globinits+80

          .long     globinits+88

          .long     globinits+96

          .long     globinits+104

          .long     globinits+112

          .long     globinits+120

          .long     globinits+128

          .long     globinits+136

          .long     globinits+144

          .long     globinits+152

          .long     globinits+160

          .long     globinits+168

          .long     globinits+176

          .long     globinits+184

          .long     globinits+192

          .long     globinits+200

          .long     globinits+208

          .long     globinits+216

          .long     globinits+224

          .long     globinits+232

          .long     globinits+240

          .long     globinits+248

          .long     Rgbval-4

          .long     UInstr-4

          .long     Prefab-4

          .long     Datab-4

          .long     Addexp-4

          .long     ErrorH-4

          .long     ErrorH+4

          .long     CallBH-4

          .long     CallBH+4

          .long     EventH-4

          .long     ExitH-4

          .long     ExcepReg-4

          .long     0x87654321

00000000  20 20 20 20 20 20 20 20  20 20 47 6c 6f 62 73 69  |          Globsi|
00000010  7a 65 20 3d 20 30 0a 0d  20 20 20 20 20 20 20 20  |ze = 0..        |
00000020  20 20 53 74 61 72 74 20  3d 20 31 20 3c 3c 20 32  |  Start = 1 << 2|
00000030  0a 0d 20 20 20 20 20 20  20 20 20 20 48 6f 73 74  |..          Host|
00000040  50 72 6f 63 20 3d 20 32  20 3c 3c 20 32 0a 0d 20  |Proc = 2 << 2.. |
00000050  20 20 20 20 20 20 20 20  20 53 74 61 72 74 49 6e  |         StartIn|
00000060  69 74 20 3d 20 33 20 3c  3c 20 32 0a 0d 20 20 20  |it = 3 << 2..   |
00000070  20 20 20 20 20 20 20 53  74 61 63 6b 73 69 7a 65  |       Stacksize|
00000080  20 3d 20 34 20 3c 3c 20  32 0a 0d 20 20 20 20 20  | = 4 << 2..     |
00000090  20 20 20 20 20 42 72 6b  45 73 63 20 3d 20 35 20  |     BrkEsc = 5 |
000000a0  3c 3c 20 32 0a 0d 20 20  20 20 20 20 20 20 20 20  |<< 2..          |
000000b0  49 6e 73 74 72 69 6e 67  20 3d 20 38 20 3c 3c 20  |Instring = 8 << |
000000c0  32 0a 0d 20 20 20 20 20  20 20 20 20 20 4f 75 74  |2..          Out|
000000d0  73 74 72 69 6e 67 3d 20  39 20 3c 3c 32 0a 0d 20  |string= 9 <<2.. |
000000e0  20 20 20 20 20 20 20 20  20 52 65 73 75 6c 74 32  |         Result2|
000000f0  20 3d 20 31 33 20 3c 3c  20 32 0a 0d 20 20 20 20  | = 13 << 2..    |
00000100  20 20 20 20 20 20 4c 69  6e 65 42 75 66 66 20 3d  |      LineBuff =|
00000110  20 31 37 20 3c 3c 20 32  0a 0d 20 20 20 20 20 20  | 17 << 2..      |
00000120  20 20 20 20 49 6e 70 75  74 20 3d 20 32 37 20 3c  |    Input = 27 <|
00000130  3c 32 0a 0d 20 20 20 20  20 20 20 20 20 20 43 69  |<2..          Ci|
00000140  73 20 3d 20 33 31 20 3c  3c 20 32 0a 0d 20 20 20  |s = 31 << 2..   |
00000150  20 20 20 20 20 20 20 43  6f 73 20 3d 20 33 32 20  |       Cos = 32 |
00000160  3c 3c 20 32 0a 0d 20 20  20 20 20 20 20 20 20 20  |<< 2..          |
00000170  52 65 74 75 72 6e 43 6f  64 65 20 3d 20 33 39 20  |ReturnCode = 39 |
00000180  3c 3c 20 32 0a 0d 20 20  20 20 20 20 20 20 20 20  |<< 2..          |
00000190  53 74 61 63 6b 62 61 73  65 20 3d 20 34 30 20 3c  |Stackbase = 40 <|
000001a0  3c 20 32 0a 0d 20 20 20  20 20 20 20 20 20 20 48  |< 2..          H|
000001b0  65 61 70 44 65 73 63 72  69 70 74 6f 72 20 3d 20  |eapDescriptor = |
000001c0  35 37 20 3c 3c 20 32 0a  0d 20 20 20 20 20 20 20  |57 << 2..       |
000001d0  20 20 20 41 62 6f 72 74  20 3d 20 36 33 20 3c 3c  |   Abort = 63 <<|
000001e0  20 32 0a 0d 20 20 20 20  20 20 20 20 20 20 42 61  | 2..          Ba|
000001f0  63 6b 74 72 61 63 65 20  3d 20 36 34 20 3c 3c 20  |cktrace = 64 << |
00000200  32 0a 0d 20 20 20 20 20  20 20 20 20 20 46 61 75  |2..          Fau|
00000210  6c 74 20 3d 20 39 35 20  3c 3c 20 32 0a 0d 20 20  |lt = 95 << 2..  |
00000220  20 20 20 20 20 20 20 20  4c 6f 61 64 70 6f 69 6e  |        Loadpoin|
00000230  74 20 3d 20 31 34 32 20  3c 3c 20 32 0a 0d 20 20  |t = 142 << 2..  |
00000240  20 20 20 20 20 20 20 20  4c 69 62 74 65 72 6d 69  |        Libtermi|
00000250  6e 61 74 65 69 6f 20 3d  20 31 34 33 20 3c 3c 20  |nateio = 143 << |
00000260  32 0a 0d 20 20 20 20 20  20 20 20 20 20 54 6f 70  |2..          Top|
00000270  53 74 6f 72 65 20 3d 20  31 34 38 20 3c 3c 20 32  |Store = 148 << 2|
00000280  0a 0d 0a 0d 0a 0d 20 20  20 20 20 20 20 20 20 20  |......          |
00000290  2e 65 6e 74 72 79 20 20  20 20 65 6e 74 65 72 0a  |.entry    enter.|
000002a0  0d 20 20 20 20 20 20 20  20 20 20 2e 41 52 45 41  |.          .AREA|
000002b0  20 20 20 20 20 43 6f 64  65 0a 0d 20 20 20 20 20  |     Code..     |
000002c0  20 20 20 20 20 2e 69 6e  63 6c 75 64 65 20 20 22  |     .include  "|
000002d0  72 65 67 6e 61 6d 65 73  22 0a 0d 20 20 20 20 20  |regnames"..     |
000002e0  20 20 20 20 20 2e 69 6e  63 6c 75 64 65 20 20 22  |     .include  "|
000002f0  73 77 69 6e 61 6d 65 73  22 0a 0d 20 20 20 20 20  |swinames"..     |
00000300  20 20 20 20 20 2e 69 6e  63 6c 75 64 65 20 20 22  |     .include  "|
00000310  61 64 72 22 0a 0d 20 20  20 20 20 20 20 20 20 20  |adr"..          |
00000320  72 62 63 70 6c 20 20 20  20 20 3d 20 72 34 0a 0d  |rbcpl     = r4..|
00000330  20 20 20 20 20 20 20 20  20 20 72 6d 67 20 20 20  |          rmg   |
00000340  20 20 20 20 3d 20 72 35  0a 0d 20 20 20 20 20 20  |    = r5..      |
00000350  20 20 20 20 72 73 65 63  74 20 20 20 20 20 3d 20  |    rsect     = |
00000360  72 36 0a 0d 20 20 20 20  20 20 20 20 20 20 72 62  |r6..          rb|
00000370  61 73 65 20 20 20 20 20  3d 20 72 38 0a 0d 65 6e  |ase     = r8..en|
00000380  74 65 72 3a 20 20 20 20  62 20 20 20 20 20 20 20  |ter:    b       |
00000390  20 20 66 69 72 73 74 6f  66 66 0a 0d 53 74 3a 20  |  firstoff..St: |
000003a0  20 20 20 20 20 20 2e 61  73 63 69 69 20 20 20 20  |      .ascii    |
000003b0  22 42 43 50 4c 22 0a 0d  20 20 20 20 20 20 20 20  |"BCPL"..        |
000003c0  20 20 2e 6c 6f 6e 67 20  20 20 20 20 67 6c 6f 62  |  .long     glob|
000003d0  69 6e 69 74 73 20 2d 20  53 74 0a 0d 20 20 20 20  |inits - St..    |
000003e0  20 20 20 20 20 20 2e 61  73 63 69 69 20 20 20 20  |      .ascii    |
000003f0  22 62 63 70 6c 72 6f 6f  74 22 0a 0d 20 20 20 20  |"bcplroot"..    |
00000400  20 20 20 20 20 20 2e 61  73 63 69 69 20 20 20 20  |      .ascii    |
00000410  22 31 34 20 4d 61 72 20  39 30 20 30 30 2d 30 30  |"14 Mar 90 00-00|
00000420  2d 30 30 20 20 22 0a 0d  20 20 20 20 20 20 20 20  |-00  "..        |
00000430  20 20 2e 6c 6f 6e 67 20  20 20 20 20 30 0a 0d 20  |  .long     0.. |
00000440  20 20 20 20 20 20 20 20  20 2e 6c 6f 6e 67 20 20  |         .long  |
00000450  20 20 20 2d 31 0a 0d 20  20 20 20 20 20 20 20 20  |   -1..         |
00000460  20 2e 61 73 63 69 63 20  20 20 20 22 49 6e 69 74  | .ascic    "Init|
00000470  69 61 6c 22 0a 0d 69 6e  69 74 69 61 6c 3a 20 20  |ial"..initial:  |
00000480  2e 4c 4f 4e 47 20 20 20  20 20 30 0a 0d 66 69 72  |.LONG     0..fir|
00000490  73 74 6f 66 66 3a 20 6c  64 72 20 20 20 20 20 20  |stoff: ldr      |
000004a0  20 72 38 2c 20 5b 70 63  2c 23 69 6e 69 74 69 61  | r8, [pc,#initia|
000004b0  6c 2d 24 2d 38 5d 0a 0d  20 20 20 20 20 20 20 20  |l-$-8]..        |
000004c0  20 20 41 44 52 20 20 20  20 20 20 20 72 31 2c 20  |  ADR       r1, |
000004d0  53 74 0a 0d 20 20 20 20  20 20 20 20 20 20 6d 6f  |St..          mo|
000004e0  76 20 20 20 20 20 20 20  72 6d 67 2c 20 23 31 30  |v       rmg, #10|
000004f0  30 0a 0d 20 20 20 20 20  20 20 20 20 20 6c 64 72  |0..          ldr|
00000500  20 20 20 20 20 20 20 72  62 63 70 6c 2c 20 5b 72  |       rbcpl, [r|
00000510  31 5d 0a 0d 73 65 63 74  6c 70 31 3a 20 20 6d 6f  |1]..sectlp1:  mo|
00000520  76 20 20 20 20 20 20 20  72 73 65 63 74 2c 20 61  |v       rsect, a|
00000530  31 0a 0d 20 20 20 20 20  20 20 20 20 20 6c 64 6d  |1..          ldm|
00000540  66 64 20 20 20 20 20 61  31 2c 20 7b 61 32 2c 20  |fd     a1, {a2, |
00000550  61 33 7d 20 20 20 20 20  20 20 20 3b 3f 22 42 43  |a3}        ;?"BC|
00000560  50 4c 22 2c 20 67 6c 6f  62 0a 0d 20 20 20 20 20  |PL", glob..     |
00000570  20 20 20 20 20 63 6d 70  20 20 20 20 20 20 20 61  |     cmp       a|
00000580  32 2c 20 72 62 63 70 6c  20 20 20 20 20 20 20 20  |2, rbcpl        |
00000590  20 20 20 3b 20 75 6e 6c  65 73 73 20 61 31 21 31  |   ; unless a1!1|
000005a0  20 3d 20 22 42 43 50 4c  22 20 62 72 65 61 6b 0a  | = "BCPL" break.|
000005b0  0d 20 20 20 20 20 20 20  20 20 20 62 6e 65 20 20  |.          bne  |
000005c0  20 20 20 20 20 6e 6f 74  73 65 63 74 0a 0d 20 20  |     notsect..  |
000005d0  20 20 20 20 20 20 20 20  61 64 64 20 20 20 20 20  |        add     |
000005e0  20 20 61 31 2c 20 61 33  2c 20 61 31 20 20 20 20  |  a1, a3, a1    |
000005f0  20 20 20 20 20 20 3b 20  61 31 20 3a 3d 20 67 6c  |      ; a1 := gl|
00000600  6f 62 69 6e 69 74 73 0a  0d 67 6c 31 3a 20 20 20  |obinits..gl1:   |
00000610  20 20 20 6c 64 6d 66 64  20 20 20 20 20 61 31 21  |   ldmfd     a1!|
00000620  2c 20 7b 61 32 2c 20 61  33 7d 0a 0d 20 20 20 20  |, {a2, a3}..    |
00000630  20 20 20 20 20 20 63 6d  70 20 20 20 20 20 20 20  |      cmp       |
00000640  61 33 2c 20 23 30 20 20  20 20 20 20 20 20 20 20  |a3, #0          |
00000650  20 20 20 20 3b 20 75 6e  74 69 6c 20 61 31 21 31  |    ; until a1!1|
00000660  20 3d 20 30 20 64 6f 20  61 31 20 2b 3a 3d 20 32  | = 0 do a1 +:= 2|
00000670  0a 0d 20 20 20 20 20 20  20 20 20 20 62 6e 65 20  |..          bne |
00000680  20 20 20 20 20 20 67 6c  31 0a 0d 20 20 20 20 20  |      gl1..     |
00000690  20 20 20 20 20 63 6d 70  20 20 20 20 20 20 20 61  |     cmp       a|
000006a0  32 2c 20 72 6d 67 0a 0d  20 20 20 20 20 20 20 20  |2, rmg..        |
000006b0  20 20 6d 6f 76 67 65 20  20 20 20 20 72 6d 67 2c  |  movge     rmg,|
000006c0  20 61 32 0a 0d 20 20 20  20 20 20 20 20 20 20 6c  | a2..          l|
000006d0  64 72 20 20 20 20 20 20  20 61 33 2c 20 5b 61 31  |dr       a3, [a1|
000006e0  5d 0a 0d 20 20 20 20 20  20 20 20 20 20 6c 64 72  |]..          ldr|
000006f0  20 20 20 20 20 20 20 61  32 2c 20 5b 70 63 2c 23  |       a2, [pc,#|
00000700  6f 6e 65 74 77 6f 2d 24  2d 38 5d 0a 0d 20 20 20  |onetwo-$-8]..   |
00000710  20 20 20 20 20 20 20 63  6d 70 20 20 20 20 20 20  |       cmp      |
00000720  20 61 32 2c 20 61 33 0a  0d 20 20 20 20 20 20 20  | a2, a3..       |
00000730  20 20 20 62 6e 65 20 20  20 20 20 20 20 73 65 63  |   bne       sec|
00000740  74 6c 70 31 20 20 20 20  20 20 20 20 20 20 20 20  |tlp1            |
00000750  20 3b 20 6e 6f 20 72 65  6c 6f 63 61 74 69 6f 6e  | ; no relocation|
00000760  73 0a 0d 20 20 20 20 20  20 20 20 20 20 6c 64 72  |s..          ldr|
00000770  20 20 20 20 20 20 20 61  32 2c 20 5b 70 63 2c 23  |       a2, [pc,#|
00000780  65 69 67 68 74 73 65 76  2d 24 2d 38 5d 0a 0d 20  |eightsev-$-8].. |
00000790  20 20 20 20 20 20 20 20  20 61 64 64 20 20 20 20  |         add    |
000007a0  20 20 20 61 31 2c 20 61  31 2c 20 23 34 0a 0d 20  |   a1, a1, #4.. |
000007b0  20 20 20 20 20 20 20 20  20 63 6d 70 20 20 20 20  |         cmp    |
000007c0  20 20 20 72 62 2c 20 23  30 0a 0d 20 20 20 20 20  |   rb, #0..     |
000007d0  20 20 20 20 20 62 6e 65  20 20 20 20 20 20 20 6e  |     bne       n|
000007e0  6f 72 65 6c 0a 0d 72 65  6c 6f 63 3a 20 20 20 20  |orel..reloc:    |
000007f0  6c 64 6d 66 64 20 20 20  20 20 61 31 21 2c 20 7b  |ldmfd     a1!, {|
00000800  61 33 7d 0a 0d 20 20 20  20 20 20 20 20 20 20 63  |a3}..          c|
00000810  6d 70 20 20 20 20 20 20  20 61 32 2c 20 61 33 20  |mp       a2, a3 |
00000820  20 20 20 20 20 20 20 20  20 20 20 20 20 3b 75 6e  |             ;un|
00000830  74 69 6c 20 21 61 31 20  3d 20 65 69 67 68 74 73  |til !a1 = eights|
00000840  65 76 0a 0d 20 20 20 20  20 20 20 20 20 20 6c 64  |ev..          ld|
00000850  72 6e 65 20 20 20 20 20  72 30 2c 20 5b 72 73 65  |rne     r0, [rse|
00000860  63 74 2c 20 61 33 5d 0a  0d 20 20 20 20 20 20 20  |ct, a3]..       |
00000870  20 20 20 61 64 64 6e 65  20 20 20 20 20 72 30 2c  |   addne     r0,|
00000880  20 72 30 2c 20 72 73 65  63 74 0a 0d 20 20 20 20  | r0, rsect..    |
00000890  20 20 20 20 20 20 73 74  72 6e 65 20 20 20 20 20  |      strne     |
000008a0  72 30 2c 20 5b 72 73 65  63 74 2c 20 61 33 5d 20  |r0, [rsect, a3] |
000008b0  20 20 20 20 3b 72 73 65  63 74 21 28 21 61 31 29  |    ;rsect!(!a1)|
000008c0  20 2b 3a 3d 20 72 73 65  63 74 0a 0d 20 20 20 20  | +:= rsect..    |
000008d0  20 20 20 20 20 20 62 6e  65 20 20 20 20 20 20 20  |      bne       |
000008e0  72 65 6c 6f 63 0a 0d 20  20 20 20 20 20 20 20 20  |reloc..         |
000008f0  20 62 20 20 20 20 20 20  20 20 20 73 65 63 74 6c  | b         sectl|
00000900  70 31 0a 0d 6f 6e 65 74  77 6f 3a 20 20 20 2e 6c  |p1..onetwo:   .l|
00000910  6f 6e 67 20 20 20 20 20  30 78 31 32 33 34 35 36  |ong     0x123456|
00000920  37 38 0a 0d 65 69 67 68  74 73 65 76 3a 20 2e 6c  |78..eightsev: .l|
00000930  6f 6e 67 20 20 20 20 20  30 78 38 37 36 35 34 33  |ong     0x876543|
00000940  32 31 0a 0d 6e 6f 72 65  6c 3a 20 20 20 20 6c 64  |21..norel:    ld|
00000950  6d 66 64 20 20 20 20 20  61 31 21 2c 20 7b 61 33  |mfd     a1!, {a3|
00000960  7d 0a 0d 20 20 20 20 20  20 20 20 20 20 63 6d 70  |}..          cmp|
00000970  20 20 20 20 20 20 20 61  32 2c 20 61 33 0a 0d 20  |       a2, a3.. |
00000980  20 20 20 20 20 20 20 20  20 62 6e 65 20 20 20 20  |         bne    |
00000990  20 20 20 6e 6f 72 65 6c  0a 0d 20 20 20 20 20 20  |   norel..      |
000009a0  20 20 20 20 62 20 20 20  20 20 20 20 20 20 73 65  |    b         se|
000009b0  63 74 6c 70 31 0a 0d 3b  0a 0d 3b 20 20 20 20 20  |ctlp1..;..;     |
000009c0  20 20 20 20 52 65 6c 6f  63 61 74 69 6f 6e 73 20  |    Relocations |
000009d0  64 6f 6e 65 20 61 6e 64  20 22 42 43 50 4c 22 2c  |done and "BCPL",|
000009e0  20 6d 61 78 67 6c 6f 62  2c 20 73 65 63 74 62 61  | maxglob, sectba|
000009f0  73 65 20 73 65 74 20 69  6e 20 72 34 2c 20 72 35  |se set in r4, r5|
00000a00  2c 20 72 38 3b 0a 0d 3b  20 20 20 20 20 20 20 20  |, r8;..;        |
00000a10  20 61 31 20 73 65 74 20  74 6f 20 70 6f 69 6e 74  | a1 set to point|
00000a20  20 61 66 74 65 72 20 6c  61 73 74 20 73 65 63 74  | after last sect|
00000a30  69 6f 6e 2e 0a 0d 3b 0a  0d 6e 6f 74 73 65 63 74  |ion...;..notsect|
00000a40  3a 20 20 61 64 64 20 20  20 20 20 20 20 72 67 2c  |:  add       rg,|
00000a50  20 61 31 2c 20 23 36 34  20 20 20 20 20 20 20 20  | a1, #64        |
00000a60  20 3b 6c 65 61 76 65 20  31 36 20 77 6f 72 64 73  | ;leave 16 words|
00000a70  20 62 65 74 77 65 65 6e  20 63 6f 64 65 20 61 6e  | between code an|
00000a80  64 20 67 6c 6f 62 61 6c  73 0a 0d 20 20 20 20 20  |d globals..     |
00000a90  20 20 20 20 20 61 64 64  20 20 20 20 20 20 20 72  |     add       r|
00000aa0  66 70 2c 20 72 67 2c 20  72 6d 67 2c 6c 73 6c 20  |fp, rg, rmg,lsl |
00000ab0  23 32 20 3b 74 68 65 6e  20 74 68 65 20 68 65 61  |#2 ;then the hea|
00000ac0  70 20 61 66 74 65 72 20  72 6d 67 0a 0d 20 20 20  |p after rmg..   |
00000ad0  20 20 20 20 20 20 20 73  74 72 20 20 20 20 20 20  |       str      |
00000ae0  20 72 6d 67 2c 20 5b 72  67 5d 20 20 20 20 20 20  | rmg, [rg]      |
00000af0  20 20 20 20 20 3b 67 30  20 3a 3d 20 23 67 6c 6f  |     ;g0 := #glo|
00000b00  62 61 6c 73 0a 0d 69 6c  6c 67 6c 6f 62 3a 20 20  |bals..illglob:  |
00000b10  6d 6f 76 20 20 20 20 20  20 20 72 36 2c 20 23 30  |mov       r6, #0|
00000b20  78 41 45 30 30 30 30 30  30 0a 0d 20 20 20 20 20  |xAE000000..     |
00000b30  20 20 20 20 20 61 64 64  20 20 20 20 20 20 20 72  |     add       r|
00000b40  36 2c 20 72 36 2c 20 23  30 78 39 35 30 30 30 30  |6, r6, #0x950000|
00000b50  20 20 20 3b 20 69 6c 6c  65 67 61 6c 20 76 61 6c  |   ; illegal val|
00000b60  75 65 20 66 6f 72 20 67  30 0a 0d 20 20 20 20 20  |ue for g0..     |
00000b70  20 20 20 20 20 61 64 64  20 20 20 20 20 20 20 72  |     add       r|
00000b80  36 2c 20 72 36 2c 20 72  6d 67 2c 20 6c 73 6c 20  |6, r6, rmg, lsl |
00000b90  23 32 0a 0d 20 20 20 20  20 20 20 20 20 20 73 74  |#2..          st|
00000ba0  72 20 20 20 20 20 20 20  72 36 2c 20 5b 72 67 2c  |r       r6, [rg,|
00000bb0  72 6d 67 2c 6c 73 6c 20  23 32 5d 20 3b 20 67 21  |rmg,lsl #2] ; g!|
00000bc0  72 6d 67 20 3a 3d 23 58  61 65 39 35 30 30 30 30  |rmg :=#Xae950000|
00000bd0  20 2b 34 2a 72 6d 67 0a  0d 20 20 20 20 20 20 20  | +4*rmg..       |
00000be0  20 20 20 73 75 62 73 20  20 20 20 20 20 72 6d 67  |   subs      rmg|
00000bf0  2c 20 72 6d 67 2c 20 23  31 20 20 20 20 20 20 20  |, rmg, #1       |
00000c00  20 3b 20 72 6d 67 20 2d  3a 3d 20 31 20 72 65 70  | ; rmg -:= 1 rep|
00000c10  65 61 74 77 68 69 6c 65  20 72 6d 67 0a 0d 20 20  |eatwhile rmg..  |
00000c20  20 20 20 20 20 20 20 20  62 6e 65 20 20 20 20 20  |        bne     |
00000c30  20 20 69 6c 6c 67 6c 6f  62 0a 0d 20 20 20 20 20  |  illglob..     |
00000c40  20 20 20 20 20 41 44 52  20 20 20 20 20 20 20 61  |     ADR       a|
00000c50  31 2c 20 53 74 0a 0d 67  6c 69 6e 69 3a 20 20 20  |1, St..glini:   |
00000c60  20 6c 64 6d 66 64 20 20  20 20 20 61 31 2c 20 7b  | ldmfd     a1, {|
00000c70  61 32 2c 61 33 7d 0a 0d  20 20 20 20 20 20 20 20  |a2,a3}..        |
00000c80  20 20 63 6d 70 20 20 20  20 20 20 20 61 32 2c 20  |  cmp       a2, |
00000c90  72 62 63 70 6c 20 20 20  20 20 20 20 20 20 20 20  |rbcpl           |
00000ca0  3b 20 75 6e 6c 65 73 73  20 61 31 21 30 20 3d 20  |; unless a1!0 = |
00000cb0  22 42 43 50 4c 22 20 62  72 65 61 6b 0a 0d 20 20  |"BCPL" break..  |
00000cc0  20 20 20 20 20 20 20 20  62 6e 65 20 20 20 20 20  |        bne     |
00000cd0  20 20 67 6c 69 6e 69 62  72 0a 0d 20 20 20 20 20  |  glinibr..     |
00000ce0  20 20 20 20 20 61 64 64  20 20 20 20 20 20 20 61  |     add       a|
00000cf0  31 2c 20 61 31 2c 20 61  33 0a 0d 67 6c 69 6e 69  |1, a1, a3..glini|
00000d00  31 3a 20 20 20 6c 64 6d  66 64 20 20 20 20 20 61  |1:   ldmfd     a|
00000d10  31 21 2c 20 7b 61 32 2c  61 33 7d 0a 0d 20 20 20  |1!, {a2,a3}..   |
00000d20  20 20 20 20 20 20 20 63  6d 70 20 20 20 20 20 20  |       cmp      |
00000d30  20 61 33 2c 20 23 30 20  20 20 20 20 20 20 20 20  | a3, #0         |
00000d40  20 20 20 20 20 3b 20 61  31 20 2d 3e 20 67 6c 6f  |     ; a1 -> glo|
00000d50  62 2c 20 6f 66 66 73 65  74 20 6f 72 20 6d 61 78  |b, offset or max|
00000d60  67 6c 6f 62 2c 30 0a 0d  20 20 20 20 20 20 20 20  |glob,0..        |
00000d70  20 20 73 74 72 6e 65 20  20 20 20 20 61 33 2c 20  |  strne     a3, |
00000d80  5b 72 67 2c 20 61 32 2c  6c 73 6c 20 23 32 5d 20  |[rg, a2,lsl #2] |
00000d90  3b 20 67 21 61 33 20 3a  3d 20 34 2a 61 32 20 28  |; g!a3 := 4*a2 (|
00000da0  61 6c 72 65 61 64 79 20  72 65 6c 6f 63 61 74 65  |already relocate|
00000db0  64 29 0a 0d 20 20 20 20  20 20 20 20 20 20 62 6e  |d)..          bn|
00000dc0  65 20 20 20 20 20 20 20  67 6c 69 6e 69 31 0a 0d  |e       glini1..|
00000dd0  20 20 20 20 20 20 20 20  20 20 6c 64 72 20 20 20  |          ldr   |
00000de0  20 20 20 20 61 33 2c 20  5b 61 31 5d 0a 0d 20 20  |    a3, [a1]..  |
00000df0  20 20 20 20 20 20 20 20  6c 64 72 20 20 20 20 20  |        ldr     |
00000e00  20 20 61 32 2c 20 5b 70  63 2c 20 23 6f 6e 65 74  |  a2, [pc, #onet|
00000e10  77 6f 2d 24 2d 38 5d 0a  0d 20 20 20 20 20 20 20  |wo-$-8]..       |
00000e20  20 20 20 63 6d 70 20 20  20 20 20 20 20 61 32 2c  |   cmp       a2,|
00000e30  20 61 33 0a 0d 20 20 20  20 20 20 20 20 20 20 62  | a3..          b|
00000e40  6e 65 20 20 20 20 20 20  20 67 6c 69 6e 69 20 20  |ne       glini  |
00000e50  20 20 20 20 20 20 20 20  20 20 20 20 20 3b 20 4e  |             ; N|
00000e60  6f 20 72 65 6c 6f 63 61  74 69 6f 6e 73 3b 20 6e  |o relocations; n|
00000e70  65 78 74 20 73 65 63 74  69 6f 6e 0a 0d 20 20 20  |ext section..   |
00000e80  20 20 20 20 20 20 20 6c  64 72 20 20 20 20 20 20  |       ldr      |
00000e90  20 61 32 2c 20 5b 70 63  2c 20 23 65 69 67 68 74  | a2, [pc, #eight|
00000ea0  73 65 76 2d 24 2d 38 5d  0a 0d 67 6c 69 6e 69 32  |sev-$-8]..glini2|
00000eb0  3a 20 20 20 6c 64 6d 66  64 20 20 20 20 20 61 31  |:   ldmfd     a1|
00000ec0  21 2c 20 7b 61 33 7d 0a  0d 20 20 20 20 20 20 20  |!, {a3}..       |
00000ed0  20 20 20 63 6d 70 20 20  20 20 20 20 20 61 32 2c  |   cmp       a2,|
00000ee0  20 61 33 0a 0d 20 20 20  20 20 20 20 20 20 20 62  | a3..          b|
00000ef0  6e 65 20 20 20 20 20 20  20 67 6c 69 6e 69 32 20  |ne       glini2 |
00000f00  20 20 20 20 20 20 20 20  20 20 20 20 20 3b 20 77  |             ; w|
00000f10  61 6c 6b 20 74 6f 20 65  6e 64 20 6f 66 20 73 65  |alk to end of se|
00000f20  63 74 0a 0d 20 20 20 20  20 20 20 20 20 20 62 20  |ct..          b |
00000f30  20 20 20 20 20 20 20 20  67 6c 69 6e 69 0a 0d 3b  |        glini..;|
00000f40  0a 0d 3b 20 20 20 20 20  20 20 20 20 67 6c 6f 62  |..;         glob|
00000f50  61 6c 73 20 69 6e 69 74  69 61 6c 69 73 65 64 3b  |als initialised;|
00000f60  20 72 67 2c 20 72 66 70  20 70 6f 69 6e 74 73 20  | rg, rfp points |
00000f70  74 6f 20 67 30 2c 20 67  30 20 2b 20 72 6d 67 20  |to g0, g0 + rmg |
00000f80  28 2b 34 29 20 61 62 6f  76 65 2e 0a 0d 3b 0a 0d  |(+4) above...;..|
00000f90  67 6c 69 6e 69 62 72 3a  20 20 61 64 64 20 20 20  |glinibr:  add   |
00000fa0  20 20 20 20 72 66 70 2c  20 72 66 70 2c 20 23 34  |    rfp, rfp, #4|
00000fb0  20 20 20 20 20 20 20 20  3b 66 72 61 6d 65 20 70  |        ;frame p|
00000fc0  6f 69 6e 74 65 72 2c 20  65 6d 70 74 79 20 66 72  |ointer, empty fr|
00000fd0  61 6d 65 2c 20 62 6f 73  0a 0d 20 20 20 20 20 20  |ame, bos..      |
00000fe0  20 20 20 20 6d 6f 76 20  20 20 20 20 20 20 72 35  |    mov       r5|
00000ff0  2c 20 23 30 78 31 30 30  20 20 20 20 20 20 20 20  |, #0x100        |
00001000  20 20 3b 43 26 53 2d 62  72 6b 20 72 65 73 65 74  |  ;C&S-brk reset|
00001010  73 2c 20 62 72 6b 20 65  78 69 74 73 2c 20 65 73  |s, brk exits, es|
00001020  63 20 69 67 6e 6f 72 65  64 0a 0d 20 20 20 20 20  |c ignored..     |
00001030  20 20 20 20 20 73 74 72  20 20 20 20 20 20 20 72  |     str       r|
00001040  35 2c 20 5b 72 67 2c 20  23 42 72 6b 45 73 63 5d  |5, [rg, #BrkEsc]|
00001050  0a 0d 20 20 20 20 20 20  20 20 20 20 6d 6f 76 20  |..          mov |
00001060  20 20 20 20 20 20 72 35  2c 20 23 30 78 31 30 30  |      r5, #0x100|
00001070  30 20 20 20 20 20 20 20  20 20 3b 20 64 65 66 61  |0         ; defa|
00001080  75 6c 74 20 73 74 61 63  6b 77 6f 72 64 73 0a 0d  |ult stackwords..|
00001090  20 20 20 20 20 20 20 20  20 20 73 74 72 20 20 20  |          str   |
000010a0  20 20 20 20 72 35 2c 20  5b 72 67 2c 20 23 53 74  |    r5, [rg, #St|
000010b0  61 63 6b 73 69 7a 65 5d  0a 0d 20 20 20 20 20 20  |acksize]..      |
000010c0  20 20 20 20 6d 6f 76 20  20 20 20 20 20 20 72 35  |    mov       r5|
000010d0  2c 20 23 30 78 61 65 30  30 0a 0d 20 20 20 20 20  |, #0xae00..     |
000010e0  20 20 20 20 20 61 64 64  20 20 20 20 20 20 20 72  |     add       r|
000010f0  35 2c 20 72 35 2c 20 23  30 78 39 35 0a 0d 20 20  |5, r5, #0x95..  |
00001100  20 20 20 20 20 20 20 20  6c 64 72 20 20 20 20 20  |        ldr     |
00001110  20 20 72 62 2c 20 5b 72  67 2c 20 23 53 74 61 72  |  rb, [rg, #Star|
00001120  74 49 6e 69 74 5d 0a 0d  20 20 20 20 20 20 20 20  |tInit]..        |
00001130  20 20 63 6d 70 20 20 20  20 20 20 20 72 35 2c 20  |  cmp       r5, |
00001140  72 62 2c 20 6c 73 72 20  23 31 36 0a 0d 20 20 20  |rb, lsr #16..   |
00001150  20 20 20 20 20 20 20 62  6c 6e 65 20 20 20 20 20  |       blne     |
00001160  20 43 61 6c 6c 20 20 20  20 20 20 20 20 20 20 20  | Call           |
00001170  20 20 20 20 20 3b 20 43  61 6c 6c 20 69 66 20 53  |     ; Call if S|
00001180  74 61 72 74 49 6e 69 74  20 70 72 65 73 65 6e 74  |tartInit present|
00001190  0a 0d 20 20 20 20 20 20  20 20 20 20 73 74 72 6e  |..          strn|
000011a0  65 20 20 20 20 20 61 31  2c 20 5b 72 67 2c 20 23  |e     a1, [rg, #|
000011b0  53 74 61 63 6b 73 69 7a  65 5d 0a 0d 20 20 20 20  |Stacksize]..    |
000011c0  20 20 20 20 20 20 73 77  69 20 20 20 20 20 20 20  |      swi       |
000011d0  4f 53 5f 47 65 74 45 6e  76 0a 0d 20 20 20 20 20  |OS_GetEnv..     |
000011e0  20 20 20 20 20 73 74 72  20 20 20 20 20 20 20 72  |     str       r|
000011f0  30 2c 20 5b 70 63 2c 20  23 73 61 76 65 72 65 67  |0, [pc, #savereg|
00001200  73 2d 24 2d 38 5d 20 20  20 20 20 20 20 3b 2a 63  |s-$-8]       ;*c|
00001210  6f 6d 6d 61 6e 64 0a 0d  20 20 20 20 20 20 20 20  |ommand..        |
00001220  20 20 73 75 62 20 20 20  20 20 20 20 61 31 2c 20  |  sub       a1, |
00001230  61 31 2c 20 23 31 0a 0d  20 20 20 20 20 20 20 20  |a1, #1..        |
00001240  20 20 73 74 72 20 20 20  20 20 20 20 61 31 2c 20  |  str       a1, |
00001250  5b 72 39 2c 20 23 54 6f  70 53 74 6f 72 65 5d 0a  |[r9, #TopStore].|
00001260  0d 20 20 20 20 20 20 20  20 20 20 6d 6f 76 20 20  |.          mov  |
00001270  20 20 20 20 20 61 33 2c  20 61 31 20 20 20 20 20  |     a3, a1     |
00001280  20 20 20 20 20 20 20 20  20 3b 20 54 6f 70 20 6f  |         ; Top o|
00001290  66 20 61 64 64 72 65 73  73 61 62 6c 65 20 73 74  |f addressable st|
000012a0  6f 72 65 0a 0d 20 20 20  20 20 20 20 20 20 20 6d  |ore..          m|
000012b0  6f 76 20 20 20 20 20 20  20 61 31 2c 20 72 66 70  |ov       a1, rfp|
000012c0  20 20 20 20 20 20 20 20  20 20 20 20 20 3b 20 42  |             ; B|
000012d0  61 73 65 20 20 20 22 22  20 20 20 20 20 20 20 20  |ase   ""        |
000012e0  20 20 22 22 0a 0d 20 20  20 20 20 20 20 20 20 20  |  ""..          |
000012f0  73 74 72 20 20 20 20 20  20 20 61 31 2c 20 5b 72  |str       a1, [r|
00001300  67 2c 20 23 48 65 61 70  44 65 73 63 72 69 70 74  |g, #HeapDescript|
00001310  6f 72 5d 0a 0d 20 20 20  20 20 20 20 20 20 20 73  |or]..          s|
00001320  75 62 20 20 20 20 20 20  20 61 33 2c 20 61 33 2c  |ub       a3, a3,|
00001330  20 61 31 20 20 20 20 20  20 20 20 20 20 3b 20 6c  | a1          ; l|
00001340  65 6e 67 74 68 20 61 76  61 69 6c 61 62 6c 65 0a  |ength available.|
00001350  0d 20 20 20 20 20 20 20  20 20 20 6d 6f 76 20 20  |.          mov  |
00001360  20 20 20 20 20 61 33 2c  20 61 33 2c 20 6c 73 72  |     a3, a3, lsr|
00001370  20 23 32 0a 0d 20 20 20  20 20 20 20 20 20 20 6d  | #2..          m|
00001380  6f 76 20 20 20 20 20 20  20 61 33 2c 20 61 33 2c  |ov       a3, a3,|
00001390  20 6c 73 6c 20 23 32 20  20 20 20 20 20 3b 20 6d  | lsl #2      ; m|
000013a0  75 73 74 20 62 65 20 77  6f 72 64 73 69 7a 65 64  |ust be wordsized|
000013b0  0a 0d 20 20 20 20 20 20  20 20 20 20 6d 6f 76 20  |..          mov |
000013c0  20 20 20 20 20 20 72 30  2c 20 23 30 20 20 20 20  |      r0, #0    |
000013d0  20 20 20 20 20 20 20 20  20 20 3b 20 69 6e 69 74  |          ; init|
000013e0  69 61 6c 69 73 65 20 68  65 61 70 0a 0d 20 20 20  |ialise heap..   |
000013f0  20 20 20 20 20 20 20 73  77 69 20 20 20 20 20 20  |       swi      |
00001400  20 4f 53 5f 48 65 61 70  0a 0d 20 20 20 20 20 20  | OS_Heap..      |
00001410  20 20 20 20 6d 6f 76 20  20 20 20 20 20 20 72 30  |    mov       r0|
00001420  2c 20 23 32 0a 0d 20 20  20 20 20 20 20 20 20 20  |, #2..          |
00001430  6c 64 72 20 20 20 20 20  20 20 61 33 2c 20 5b 72  |ldr       a3, [r|
00001440  67 2c 20 23 53 74 61 63  6b 73 69 7a 65 5d 0a 0d  |g, #Stacksize]..|
00001450  20 20 20 20 20 20 20 20  20 20 61 64 64 20 20 20  |          add   |
00001460  20 20 20 20 61 33 2c 20  61 33 2c 20 23 31 0a 0d  |    a3, a3, #1..|
00001470  20 20 20 20 20 20 20 20  20 20 6d 6f 76 20 20 20  |          mov   |
00001480  20 20 20 20 61 33 2c 20  61 33 2c 20 6c 73 6c 20  |    a3, a3, lsl |
00001490  23 32 20 20 20 20 20 20  3b 20 53 74 61 63 6b 62  |#2      ; Stackb|
000014a0  79 74 65 73 20 2b 20 34  0a 0d 20 20 20 20 20 20  |ytes + 4..      |
000014b0  20 20 20 20 73 77 69 20  20 20 20 20 20 20 4f 53  |    swi       OS|
000014c0  5f 48 65 61 70 0a 0d 20  20 20 20 20 20 20 20 20  |_Heap..         |
000014d0  20 6d 6f 76 20 20 20 20  20 20 20 72 35 2c 20 61  | mov       r5, a|
000014e0  32 2c 20 6c 73 72 20 23  32 0a 0d 20 20 20 20 20  |2, lsr #2..     |
000014f0  20 20 20 20 20 61 64 64  20 20 20 20 20 20 20 72  |     add       r|
00001500  35 2c 20 72 35 2c 20 23  31 0a 0d 20 20 20 20 20  |5, r5, #1..     |
00001510  20 20 20 20 20 73 74 72  20 20 20 20 20 20 20 72  |     str       r|
00001520  35 2c 20 5b 72 67 2c 20  23 53 74 61 63 6b 62 61  |5, [rg, #Stackba|
00001530  73 65 5d 3b 20 6f 66 20  53 74 61 63 6b 73 69 7a  |se]; of Stacksiz|
00001540  65 20 77 6f 72 64 73 0a  0d 20 20 20 20 20 20 20  |e words..       |
00001550  20 20 20 6d 6f 76 20 20  20 20 20 20 20 72 66 70  |   mov       rfp|
00001560  2c 20 61 32 20 20 20 20  20 20 20 20 20 20 20 20  |, a2            |
00001570  20 3b 20 77 69 74 68 20  72 66 70 20 61 73 20 62  | ; with rfp as b|
00001580  61 73 65 0a 0d 0a 0d 20  20 20 20 20 20 20 20 20  |ase....         |
00001590  20 6d 6f 76 20 20 20 20  20 20 20 61 33 2c 20 23  | mov       a3, #|
000015a0  32 36 34 0a 0d 20 20 20  20 20 20 20 20 20 20 6d  |264..          m|
000015b0  6f 76 20 20 20 20 20 20  20 72 30 2c 20 23 32 0a  |ov       r0, #2.|
000015c0  0d 20 20 20 20 20 20 20  20 20 20 73 77 69 20 20  |.          swi  |
000015d0  20 20 20 20 20 4f 53 5f  48 65 61 70 20 20 20 20  |     OS_Heap    |
000015e0  20 20 20 20 20 20 20 20  20 3b 20 67 65 74 20 73  |         ; get s|
000015f0  70 61 63 65 20 66 6f 72  20 4c 69 6e 65 62 75 66  |pace for Linebuf|
00001600  66 0a 0d 20 20 20 20 20  20 20 20 20 20 6d 6f 76  |f..          mov|
00001610  20 20 20 20 20 20 20 72  30 2c 20 61 32 2c 20 6c  |       r0, a2, l|
00001620  73 72 20 23 32 0a 0d 20  20 20 20 20 20 20 20 20  |sr #2..         |
00001630  20 73 74 72 20 20 20 20  20 20 20 72 30 2c 20 5b  | str       r0, [|
00001640  72 67 2c 20 23 49 6e 73  74 72 69 6e 67 5d 20 3b  |rg, #Instring] ;|
00001650  20 73 65 74 20 49 6e 73  74 72 69 6e 67 0a 0d 20  | set Instring.. |
00001660  20 20 20 20 20 20 20 20  20 61 64 64 20 20 20 20  |         add    |
00001670  20 20 20 72 30 2c 20 72  30 2c 20 23 32 0a 0d 20  |   r0, r0, #2.. |
00001680  20 20 20 20 20 20 20 20  20 73 74 72 20 20 20 20  |         str    |
00001690  20 20 20 72 30 2c 20 5b  72 67 2c 20 23 4c 69 6e  |   r0, [rg, #Lin|
000016a0  65 42 75 66 66 5d 20 3b  20 73 65 74 20 4c 69 6e  |eBuff] ; set Lin|
000016b0  65 62 75 66 0a 0d 20 20  20 20 20 20 20 20 20 20  |ebuf..          |
000016c0  61 64 64 20 20 20 20 20  20 20 61 32 2c 20 61 32  |add       a2, a2|
000016d0  2c 20 23 34 0a 0d 20 20  20 20 20 20 20 20 20 20  |, #4..          |
000016e0  73 74 72 20 20 20 20 20  20 20 72 30 2c 20 5b 61  |str       r0, [a|
000016f0  32 5d 2c 20 23 35 20 20  20 20 20 20 20 3b 20 49  |2], #5       ; I|
00001700  6e 73 74 72 69 6e 67 21  31 20 3a 3d 20 49 6e 73  |nstring!1 := Ins|
00001710  74 72 69 6e 67 2b 32 0a  0d 20 20 20 20 20 20 20  |tring+2..       |
00001720  20 20 20 73 75 62 20 20  20 20 20 20 20 61 33 2c  |   sub       a3,|
00001730  20 61 32 2c 20 23 31 20  20 20 20 20 20 20 20 20  | a2, #1         |
00001740  3b 20 61 33 20 3d 20 6c  69 6e 65 62 75 66 42 0a  |; a3 = linebufB.|
00001750  0d 20 20 20 20 20 20 20  20 20 20 6c 64 72 20 20  |.          ldr  |
00001760  20 20 20 20 20 72 30 2c  20 5b 70 63 2c 20 23 73  |     r0, [pc, #s|
00001770  61 76 65 72 65 67 73 2d  24 2d 38 5d 0a 0d 57 61  |averegs-$-8]..Wa|
00001780  6c 6b 3a 20 20 20 20 20  6c 64 72 62 20 20 20 20  |lk:     ldrb    |
00001790  20 20 61 31 2c 20 5b 72  30 5d 2c 20 23 31 0a 0d  |  a1, [r0], #1..|
000017a0  20 20 20 20 20 20 20 20  20 20 63 6d 70 20 20 20  |          cmp   |
000017b0  20 20 20 20 61 31 2c 20  23 33 32 0a 0d 20 20 20  |    a1, #32..   |
000017c0  20 20 20 20 20 20 20 62  67 74 20 20 20 20 20 20  |       bgt      |
000017d0  20 57 61 6c 6b 0a 0d 20  20 20 20 20 20 20 20 20  | Walk..         |
000017e0  20 73 75 62 6e 65 20 20  20 20 20 72 30 2c 20 72  | subne     r0, r|
000017f0  30 2c 20 23 31 0a 0d 20  20 20 20 20 20 20 20 20  |0, #1..         |
00001800  20 6d 6f 76 20 20 20 20  20 20 20 61 31 2c 20 61  | mov       a1, a|
00001810  32 20 20 20 20 20 20 20  20 20 20 20 20 20 3b 20  |2             ; |
00001820  43 6f 6d 6d 61 6e 64 20  74 61 69 6c 20 74 6f 20  |Command tail to |
00001830  4c 69 6e 65 62 75 66 21  32 0a 0d 20 20 20 20 20  |Linebuf!2..     |
00001840  20 20 20 20 20 6d 6f 76  20 20 20 20 20 20 20 61  |     mov       a|
00001850  32 2c 20 23 32 35 36 0a  0d 20 20 20 20 20 20 20  |2, #256..       |
00001860  20 20 20 73 77 69 20 20  20 20 20 20 20 4f 53 5f  |   swi       OS_|
00001870  47 53 54 72 61 6e 73 0a  0d 20 20 20 20 20 20 20  |GSTrans..       |
00001880  20 20 20 62 76 63 20 20  20 20 20 20 20 63 6d 64  |   bvc       cmd|
00001890  6c 0a 0d 20 20 20 20 20  20 20 20 20 20 6d 6f 76  |l..          mov|
000018a0  20 20 20 20 20 20 20 61  31 2c 20 23 31 32 0a 0d  |       a1, #12..|
000018b0  20 20 20 20 20 20 20 20  20 20 73 74 72 20 20 20  |          str   |
000018c0  20 20 20 20 61 31 2c 20  5b 72 67 2c 20 23 52 65  |    a1, [rg, #Re|
000018d0  74 75 72 6e 43 6f 64 65  5d 0a 0d 20 20 20 20 20  |turnCode]..     |
000018e0  20 20 20 20 20 41 44 52  20 20 20 20 20 20 20 61  |     ADR       a|
000018f0  31 2c 20 65 72 72 63 6c  0a 0d 20 20 20 20 20 20  |1, errcl..      |
00001900  20 20 20 20 6d 6f 76 20  20 20 20 20 20 20 61 31  |    mov       a1|
00001910  2c 20 61 31 2c 20 6c 73  72 20 23 32 0a 0d 20 20  |, a1, lsr #2..  |
00001920  20 20 20 20 20 20 20 20  6c 64 72 20 20 20 20 20  |        ldr     |
00001930  20 20 72 62 2c 20 5b 72  67 2c 20 23 46 61 75 6c  |  rb, [rg, #Faul|
00001940  74 5d 0a 0d 20 20 20 20  20 20 20 20 20 20 62 6c  |t]..          bl|
00001950  20 20 20 20 20 20 20 20  43 61 6c 6c 0a 0d 20 20  |        Call..  |
00001960  20 20 20 20 20 20 20 20  62 20 20 20 20 20 20 20  |        b       |
00001970  20 20 46 69 6e 69 73 68  20 20 20 20 20 20 20 20  |  Finish        |
00001980  20 20 20 20 20 20 3b 20  3f 20 6e 65 65 64 65 64  |      ; ? needed|
00001990  0a 0d 65 72 72 63 6c 3a  20 20 20 20 2e 61 73 63  |..errcl:    .asc|
000019a0  69 7a 20 20 20 20 22 42  61 64 20 43 4c 69 6e 65  |iz    "Bad CLine|
000019b0  22 0a 0d 20 20 20 20 20  20 20 20 20 20 2e 61 6c  |"..          .al|
000019c0  69 67 6e 0a 0d 0a 0d 63  6d 64 6c 3a 20 20 20 20  |ign....cmdl:    |
000019d0  20 73 74 72 62 20 20 20  20 20 20 61 32 2c 20 5b  | strb      a2, [|
000019e0  61 33 5d 2c 20 23 2d 38  20 20 20 20 20 20 20 3b  |a3], #-8       ;|
000019f0  20 49 6e 73 74 72 69 6e  67 21 30 20 3a 3d 20 4c  | Instring!0 := L|
00001a00  69 6e 65 62 75 66 25 30  0a 0d 20 20 20 20 20 20  |inebuf%0..      |
00001a10  20 20 20 20 73 74 72 20  20 20 20 20 20 20 61 32  |    str       a2|
00001a20  2c 20 5b 61 33 5d 0a 0d  20 20 20 20 20 20 20 20  |, [a3]..        |
00001a30  20 20 6d 6f 76 20 20 20  20 20 20 20 72 30 2c 20  |  mov       r0, |
00001a40  23 30 0a 0d 20 20 20 20  20 20 20 20 20 20 73 74  |#0..          st|
00001a50  72 20 20 20 20 20 20 20  72 30 2c 20 5b 72 67 2c  |r       r0, [rg,|
00001a60  20 23 4f 75 74 73 74 72  69 6e 67 5d 3b 4f 75 74  | #Outstring];Out|
00001a70  73 74 72 69 6e 67 20 3a  3d 20 30 0a 0d 0a 0d 20  |string := 0.... |
00001a80  20 20 20 20 20 20 20 20  20 6c 64 72 20 20 20 20  |         ldr    |
00001a90  20 20 20 61 32 2c 20 5b  72 67 2c 23 53 74 61 63  |   a2, [rg,#Stac|
00001aa0  6b 73 69 7a 65 5d 0a 0d  20 20 20 20 20 20 20 20  |ksize]..        |
00001ab0  20 20 72 73 62 20 20 20  20 20 20 20 61 32 2c 20  |  rsb       a2, |
00001ac0  61 32 2c 20 23 30 20 20  20 20 20 20 20 20 20 20  |a2, #0          |
00001ad0  3b 20 2d 53 74 61 63 6b  73 69 7a 65 57 0a 0d 20  |; -StacksizeW.. |
00001ae0  20 20 20 20 20 20 20 20  20 73 74 72 20 20 20 20  |         str    |
00001af0  20 20 20 61 32 2c 20 5b  72 66 70 5d 0a 0d 20 20  |   a2, [rfp]..  |
00001b00  20 20 20 20 20 20 20 20  73 75 62 20 20 20 20 20  |        sub     |
00001b10  20 20 61 33 2c 20 72 66  70 2c 20 61 32 2c 20 6c  |  a3, rfp, a2, l|
00001b20  73 6c 20 23 32 20 3b 20  54 4f 53 42 0a 0d 20 20  |sl #2 ; TOSB..  |
00001b30  20 20 20 20 20 20 20 20  61 64 64 20 20 20 20 20  |        add     |
00001b40  20 20 72 66 70 2c 20 72  66 70 2c 20 23 34 20 20  |  rfp, rfp, #4  |
00001b50  20 20 20 20 20 20 3b 20  4e 6f 77 20 53 74 61 63  |      ; Now Stac|
00001b60  6b 62 61 73 65 20 61 67  72 65 65 73 20 77 69 74  |kbase agrees wit|
00001b70  68 20 67 6c 6f 62 61 6c  0a 0d 20 20 20 20 20 20  |h global..      |
00001b80  20 20 20 20 6d 6f 76 20  20 20 20 20 20 20 72 30  |    mov       r0|
00001b90  2c 20 23 30 0a 0d 20 20  20 20 20 20 20 20 20 20  |, #0..          |
00001ba0  6d 76 6e 20 20 20 20 20  20 20 61 32 2c 20 23 30  |mvn       a2, #0|
00001bb0  0a 0d 20 20 20 20 20 20  20 20 20 20 6d 6f 76 20  |..          mov |
00001bc0  20 20 20 20 20 20 61 34  2c 20 61 33 2c 20 6c 73  |      a4, a3, ls|
00001bd0  72 20 23 32 0a 0d 20 20  20 20 20 20 20 20 20 20  |r #2..          |
00001be0  73 75 62 20 20 20 20 20  20 20 61 34 2c 20 61 34  |sub       a4, a4|
00001bf0  2c 20 23 31 0a 0d 20 20  20 20 20 20 20 20 20 20  |, #1..          |
00001c00  73 74 6d 65 61 20 20 20  20 20 72 66 70 21 2c 20  |stmea     rfp!, |
00001c10  7b 72 30 2c 20 61 32 2c  20 61 34 7d 20 20 3b 20  |{r0, a2, a4}  ; |
00001c20  73 62 21 30 2c 20 31 2c  20 32 2c 20 33 20 3a 3d  |sb!0, 1, 2, 3 :=|
00001c30  20 30 2c 20 2d 53 62 77  2c 20 54 4f 53 57 2c 20  | 0, -Sbw, TOSW, |
00001c40  2d 53 62 77 0a 0d 20 20  20 20 20 20 20 20 20 20  |-Sbw..          |
00001c50  6d 6f 76 20 20 20 20 20  20 20 61 31 2c 20 23 31  |mov       a1, #1|
00001c60  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3b 20  |              ; |
00001c70  73 62 21 35 20 6f 6e 6c  79 20 6e 65 65 64 65 64  |sb!5 only needed|
00001c80  0a 0d 20 20 20 20 20 20  20 20 20 20 73 74 6d 65  |..          stme|
00001c90  61 20 20 20 20 20 72 66  70 21 2c 20 7b 72 30 2c  |a     rfp!, {r0,|
00001ca0  20 61 31 2c 20 61 32 7d  20 20 20 20 3b 20 77 72  | a1, a2}    ; wr|
00001cb0  6f 6e 67 21 21 21 21 21  21 21 0a 0d 20 20 20 20  |ong!!!!!!!..    |
00001cc0  20 20 20 20 20 20 6d 6f  76 20 20 20 20 20 20 20  |      mov       |
00001cd0  72 74 73 2c 20 72 66 70  20 20 20 20 20 20 20 20  |rts, rfp        |
00001ce0  20 20 20 20 3b 20 45 6d  70 74 79 20 66 72 61 6d  |    ; Empty fram|
00001cf0  65 0a 0d 3b 0a 0d 3b 73  74 61 63 6b 20 73 68 64  |e..;..;stack shd|
00001d00  20 62 65 20 66 66 66 66  30 30 30 30 2c 20 30 2c  | be ffff0000, 0,|
00001d10  20 66 66 66 66 30 30 30  30 2c 20 74 6f 73 2c 2e  | ffff0000, tos,.|
00001d20  2e 2e 2e 2e 2e 2c 77 6f  72 64 61 64 64 72 65 73  |.....,wordaddres|
00001d30  73 20 61 74 20 74 6f 70  0a 0d 3b 20 31 34 38 2d  |s at top..; 148-|
00001d40  31 37 34 20 6f 6d 6d 69  74 74 65 64 0a 0d 3b 0a  |174 ommitted..;.|
00001d50  0d 20 20 20 20 20 20 20  20 20 20 6d 6f 76 20 20  |.          mov  |
00001d60  20 20 20 20 20 72 30 2c  20 23 36 35 0a 0d 20 20  |     r0, #65..  |
00001d70  20 20 20 20 20 20 20 20  73 74 72 20 20 20 20 20  |        str     |
00001d80  20 20 72 30 2c 20 5b 72  67 2c 20 23 48 6f 73 74  |  r0, [rg, #Host|
00001d90  50 72 6f 63 5d 0a 0d 20  20 20 20 20 20 20 20 20  |Proc]..         |
00001da0  20 6d 6f 76 20 20 20 20  20 20 20 72 30 2c 20 23  | mov       r0, #|
00001db0  30 0a 0d 20 20 20 20 20  20 20 20 20 20 73 74 72  |0..          str|
00001dc0  20 20 20 20 20 20 20 72  30 2c 20 5b 70 63 2c 20  |       r0, [pc, |
00001dd0  23 45 6e 76 66 6c 61 67  20 2d 20 38 20 2d 20 24  |#Envflag - 8 - $|
00001de0  5d 0a 0d 20 20 20 20 20  20 20 20 20 20 6d 6f 76  |]..          mov|
00001df0  20 20 20 20 20 20 20 61  31 2c 20 23 30 0a 0d 20  |       a1, #0.. |
00001e00  20 20 20 20 20 20 20 20  20 6d 6f 76 20 20 20 20  |         mov    |
00001e10  20 20 20 61 32 2c 20 23  30 0a 0d 20 20 20 20 20  |   a2, #0..     |
00001e20  20 20 20 20 20 6d 76 6e  20 20 20 20 20 20 20 61  |     mvn       a|
00001e30  33 2c 20 23 31 0a 0d 20  20 20 20 20 20 20 20 20  |3, #1..         |
00001e40  20 6c 64 72 20 20 20 20  20 20 20 61 34 2c 20 5b  | ldr       a4, [|
00001e50  72 67 2c 20 23 41 62 6f  72 74 5d 0a 0d 20 20 20  |rg, #Abort]..   |
00001e60  20 20 20 20 20 20 20 6d  6f 76 20 20 20 20 20 20  |       mov      |
00001e70  20 72 35 2c 20 23 30 78  61 65 30 30 0a 0d 20 20  | r5, #0xae00..  |
00001e80  20 20 20 20 20 20 20 20  61 64 64 20 20 20 20 20  |        add     |
00001e90  20 20 72 35 2c 20 72 35  2c 20 23 30 78 39 35 0a  |  r5, r5, #0x95.|
00001ea0  0d 20 20 20 20 20 20 20  20 20 20 63 6d 70 20 20  |.          cmp  |
00001eb0  20 20 20 20 20 72 35 2c  20 61 34 2c 20 6c 73 72  |     r5, a4, lsr|
00001ec0  20 23 31 36 0a 0d 20 20  20 20 20 20 20 20 20 20  | #16..          |
00001ed0  73 74 72 65 71 20 20 20  20 20 72 30 2c 20 5b 70  |streq     r0, [p|
00001ee0  63 2c 20 23 55 49 6e 73  74 72 20 2d 20 38 20 2d  |c, #UInstr - 8 -|
00001ef0  20 24 5d 0a 0d 0a 0d 0a  0d 20 20 20 20 20 20 20  | $]......       |
00001f00  20 20 20 62 6c 6e 76 20  20 20 20 20 20 20 20 4e  |   blnv        N|
00001f10  65 77 45 6e 76 20 20 20  20 20 20 20 20 20 20 20  |ewEnv           |
00001f20  20 20 20 20 20 20 20 3b  20 52 65 6d 6f 76 65 20  |       ; Remove |
00001f30  6e 76 0a 0d 20 20 20 20  20 20 20 20 20 20 41 44  |nv..          AD|
00001f40  52 20 20 20 20 20 20 20  72 30 2c 20 53 74 0a 0d  |R       r0, St..|
00001f50  20 20 20 20 20 20 20 20  20 20 6d 6f 76 20 20 20  |          mov   |
00001f60  20 20 20 20 72 30 2c 20  72 30 2c 20 6c 73 72 20  |    r0, r0, lsr |
00001f70  23 32 0a 0d 20 20 20 20  20 20 20 20 20 20 73 74  |#2..          st|
00001f80  72 20 20 20 20 20 20 20  72 30 2c 20 5b 72 67 2c  |r       r0, [rg,|
00001f90  20 23 4c 6f 61 64 70 6f  69 6e 74 5d 0a 0d 20 20  | #Loadpoint]..  |
00001fa0  20 20 20 20 20 20 20 20  6c 64 72 20 20 20 20 20  |        ldr     |
00001fb0  20 20 72 67 62 2c 20 5b  70 63 2c 20 23 52 67 62  |  rgb, [pc, #Rgb|
00001fc0  76 61 6c 2d 38 2d 24 5d  0a 0d 20 20 20 20 20 20  |val-8-$]..      |
00001fd0  20 20 20 20 61 64 64 20  20 20 20 20 20 20 72 67  |    add       rg|
00001fe0  62 2c 20 72 67 62 2c 20  23 30 78 34 30 30 30 30  |b, rgb, #0x40000|
00001ff0  30 30 30 0a 0d 20 20 20  20 20 20 20 20 20 20 6d  |000..          m|
00002000  6f 76 20 20 20 20 20 20  20 72 30 2c 20 23 30 0a  |ov       r0, #0.|
00002010  0d 20 20 20 20 20 20 20  20 20 20 73 74 72 20 20  |.          str  |
00002020  20 20 20 20 20 72 30 2c  20 5b 72 67 2c 20 23 52  |     r0, [rg, #R|
00002030  65 74 75 72 6e 43 6f 64  65 5d 0a 0d 20 20 20 20  |eturnCode]..    |
00002040  20 20 20 20 20 20 6d 6f  76 20 20 20 20 20 20 20  |      mov       |
00002050  72 30 2c 20 23 31 20 3c  3c 20 32 34 20 20 20 20  |r0, #1 << 24    |
00002060  20 20 20 20 3b 20 4e 65  77 6c 69 6e 65 28 29 20  |    ; Newline() |
00002070  6e 6f 74 20 66 61 73 74  0a 0d 20 20 20 20 20 20  |not fast..      |
00002080  20 20 20 20 73 74 72 20  20 20 20 20 20 20 72 30  |    str       r0|
00002090  2c 20 5b 72 67 2c 20 23  43 69 73 5d 0a 0d 20 20  |, [rg, #Cis]..  |
000020a0  20 20 20 20 20 20 20 20  73 74 72 20 20 20 20 20  |        str     |
000020b0  20 20 72 30 2c 20 5b 72  67 2c 20 23 43 6f 73 5d  |  r0, [rg, #Cos]|
000020c0  0a 0d 20 20 20 20 20 20  20 20 20 20 6c 64 72 20  |..          ldr |
000020d0  20 20 20 20 20 20 72 62  2c 20 5b 72 67 2c 20 23  |      rb, [rg, #|
000020e0  53 74 61 72 74 5d 0a 0d  20 20 20 20 20 20 20 20  |Start]..        |
000020f0  20 20 62 6c 20 20 20 20  20 20 20 20 43 61 6c 6c  |  bl        Call|
00002100  0a 0d 46 69 6e 69 73 68  3a 20 20 20 6d 6f 76 20  |..Finish:   mov |
00002110  20 20 20 20 20 20 72 74  73 2c 20 72 66 70 0a 0d  |      rts, rfp..|
00002120  3b 20 20 20 20 20 20 20  20 20 20 6c 64 72 20 20  |;          ldr  |
00002130  20 20 20 20 20 72 62 2c  20 5b 72 67 2c 20 4c 69  |     rb, [rg, Li|
00002140  62 74 65 72 6d 69 6e 61  74 65 69 6f 5d 20 20 20  |bterminateio]   |
00002150  20 20 20 3b 6e 6f 74 20  6e 65 65 64 65 64 0a 0d  |   ;not needed..|
00002160  3b 20 20 20 20 20 20 20  20 20 20 62 6c 20 20 20  |;          bl   |
00002170  20 20 20 20 20 43 61 6c  6c 0a 0d 44 65 70 61 72  |     Call..Depar|
00002180  74 3a 20 20 20 6c 64 72  20 20 20 20 20 20 20 61  |t:   ldr       a|
00002190  31 2c 20 5b 70 63 2c 20  23 61 62 65 78 2d 38 2d  |1, [pc, #abex-8-|
000021a0  24 5d 0a 0d 20 20 20 20  20 20 20 20 20 20 6c 64  |$]..          ld|
000021b0  72 20 20 20 20 20 20 20  61 32 2c 20 5b 72 67 2c  |r       a2, [rg,|
000021c0  20 23 52 65 74 75 72 6e  43 6f 64 65 5d 0a 0d 20  | #ReturnCode].. |
000021d0  20 20 20 20 20 20 20 20  20 73 77 69 20 20 20 20  |         swi    |
000021e0  20 20 20 4f 53 5f 45 78  69 74 0a 0d 61 62 65 78  |   OS_Exit..abex|
000021f0  3a 20 20 20 20 20 2e 61  73 63 69 69 20 20 20 20  |:     .ascii    |
00002200  22 41 42 45 58 22 0a 0d  0a 0d 73 61 76 65 72 65  |"ABEX"....savere|
00002210  67 73 3a 20 2e 62 6c 6b  6c 20 20 20 20 20 31 36  |gs: .blkl     16|
00002220  0a 0d 52 67 62 76 61 6c  3a 20 20 20 2e 6c 6f 6e  |..Rgbval:   .lon|
00002230  67 20 20 20 20 20 52 67  62 73 2d 34 20 20 20 20  |g     Rgbs-4    |
00002240  20 20 20 20 20 20 20 20  20 20 3b 20 52 65 6c 6f  |          ; Relo|
00002250  63 61 74 65 20 74 68 65  73 65 20 74 77 6f 0a 0d  |cate these two..|
00002260  0a 0d 20 20 20 20 20 20  20 20 20 20 2e 6c 6f 6e  |..          .lon|
00002270  67 20 20 20 20 20 2d 31  0a 0d 20 20 20 20 20 20  |g     -1..      |
00002280  20 20 20 20 2e 61 73 63  69 63 20 20 20 20 22 45  |    .ascic    "E|
00002290  72 72 48 61 6e 64 22 0a  0d 45 72 72 48 61 6e 64  |rrHand"..ErrHand|
000022a0  3a 20 20 6d 6f 76 73 20  20 20 20 20 20 70 63 2c  |:  movs      pc,|
000022b0  20 6c 72 0a 0d 45 73 63  48 61 6e 64 3a 20 20 73  | lr..EscHand:  s|
000022c0  74 6d 66 64 20 20 20 20  20 72 6c 21 2c 20 7b 6c  |tmfd     rl!, {l|
000022d0  72 7d 0a 0d 20 20 20 20  20 20 20 20 20 20 6d 6f  |r}..          mo|
000022e0  76 20 20 20 20 20 20 20  72 30 2c 20 23 31 32 36  |v       r0, #126|
000022f0  0a 0d 20 20 20 20 20 20  20 20 20 20 73 77 69 20  |..          swi |
00002300  20 20 20 20 20 20 4f 53  5f 42 79 74 65 2b 58 4f  |      OS_Byte+XO|
00002310  53 20 20 20 20 20 20 20  20 20 3b 20 41 63 6b 6e  |S         ; Ackn|
00002320  6f 77 6c 65 64 67 65 20  45 73 63 61 70 65 0a 0d  |owledge Escape..|
00002330  20 20 20 20 20 20 20 20  20 20 6c 64 72 62 20 20  |          ldrb  |
00002340  20 20 20 20 72 30 2c 20  5b 72 67 2c 20 23 42 72  |    r0, [rg, #Br|
00002350  6b 45 73 63 5d 0a 0d 20  20 20 20 20 20 20 20 20  |kEsc]..         |
00002360  20 74 65 71 20 20 20 20  20 20 20 72 30 2c 20 23  | teq       r0, #|
00002370  30 0a 0d 20 20 20 20 20  20 20 20 20 20 73 77 69  |0..          swi|
00002380  6e 65 20 20 20 20 20 4f  53 5f 57 72 69 74 65 53  |ne     OS_WriteS|
00002390  2b 58 4f 53 0a 0d 20 20  20 20 20 20 20 20 20 20  |+XOS..          |
000023a0  2e 61 73 63 69 7a 20 20  20 20 22 5c 63 5c 6e 45  |.asciz    "\c\nE|
000023b0  73 63 61 70 65 5c 63 5c  6e 22 0a 0d 20 20 20 20  |scape\c\n"..    |
000023c0  20 20 20 20 20 20 2e 61  6c 69 67 6e 0a 0d 20 20  |      .align..  |
000023d0  20 20 20 20 20 20 20 20  73 77 69 6e 65 20 20 20  |        swine   |
000023e0  20 20 4f 53 5f 45 78 69  74 0a 0d 20 20 20 20 20  |  OS_Exit..     |
000023f0  20 20 20 20 20 6c 64 6d  66 64 20 20 20 20 20 72  |     ldmfd     r|
00002400  6c 21 2c 20 7b 6c 72 7d  0a 0d 20 20 20 20 20 20  |l!, {lr}..      |
00002410  20 20 20 20 6d 6f 76 73  20 20 20 20 20 20 70 63  |    movs      pc|
00002420  2c 20 6c 72 0a 0d 0a 0d  42 72 6b 48 61 6e 64 3a  |, lr....BrkHand:|
00002430  20 20 6d 6f 76 20 20 20  20 20 20 20 70 63 2c 20  |  mov       pc, |
00002440  6c 72 0a 0d 0a 0d 20 20  20 20 20 20 20 20 20 20  |lr....          |
00002450  2e 6c 6f 6e 67 20 20 20  20 20 2d 31 0a 0d 20 20  |.long     -1..  |
00002460  20 20 20 20 20 20 20 20  2e 61 73 63 69 63 20 20  |        .ascic  |
00002470  20 20 22 45 76 48 61 6e  64 6c 22 0a 0d 45 76 48  |  "EvHandl"..EvH|
00002480  61 6e 64 6c 3a 20 20 41  44 52 20 20 20 20 20 20  |andl:  ADR      |
00002490  20 72 74 73 2c 20 45 76  65 52 74 6e 65 73 20 20  | rts, EveRtnes  |
000024a0  20 20 20 20 20 3b 20 43  61 6c 6c 20 45 76 65 52  |     ; Call EveR|
000024b0  74 6e 73 21 72 30 0a 0d  20 20 20 20 20 20 20 20  |tns!r0..        |
000024c0  20 20 6c 64 72 20 20 20  20 20 20 20 70 63 2c 20  |  ldr       pc, |
000024d0  5b 72 74 73 2c 20 72 30  2c 20 6c 73 6c 20 23 32  |[rts, r0, lsl #2|
000024e0  5d 0a 0d 0a 0d 45 76 46  6c 61 67 3a 20 20 20 41  |]....EvFlag:   A|
000024f0  44 52 20 20 20 20 20 20  20 72 74 73 2c 20 45 76  |DR       rts, Ev|
00002500  65 50 61 72 61 6d 73 0a  0d 20 20 20 20 20 20 20  |eParams..       |
00002510  20 20 20 6c 64 72 20 20  20 20 20 20 20 72 74 73  |   ldr       rts|
00002520  2c 20 5b 72 74 73 2c 20  72 30 2c 20 6c 73 6c 20  |, [rts, r0, lsl |
00002530  23 32 5d 0a 0d 20 20 20  20 20 20 20 20 20 20 73  |#2]..          s|
00002540  74 72 20 20 20 20 20 20  20 61 31 2c 20 5b 72 74  |tr       a1, [rt|
00002550  73 5d 2c 20 23 34 0a 0d  20 20 20 20 20 20 20 20  |s], #4..        |
00002560  20 20 73 74 72 20 20 20  20 20 20 20 61 32 2c 20  |  str       a2, |
00002570  5b 72 74 73 5d 2c 20 23  34 0a 0d 20 20 20 20 20  |[rts], #4..     |
00002580  20 20 20 20 20 73 74 72  20 20 20 20 20 20 20 61  |     str       a|
00002590  33 2c 20 5b 72 74 73 5d  2c 20 23 34 0a 0d 20 20  |3, [rts], #4..  |
000025a0  20 20 20 20 20 20 20 20  73 74 72 20 20 20 20 20  |        str     |
000025b0  20 20 61 34 2c 20 5b 72  74 73 5d 2c 20 23 34 0a  |  a4, [rts], #4.|
000025c0  0d 20 20 20 20 20 20 20  20 20 20 6d 6f 76 73 20  |.          movs |
000025d0  20 20 20 20 20 70 63 2c  20 72 6c 0a 0d 0a 0d 45  |     pc, rl....E|
000025e0  72 72 42 75 66 66 3a 20  20 2e 62 6c 6b 6c 20 20  |rrBuff:  .blkl  |
000025f0  20 20 20 31 36 0a 0d 0a  0d 20 20 20 20 20 20 20  |   16....       |
00002600  20 20 20 2e 6c 6f 6e 67  20 20 20 20 20 2d 31 0a  |   .long     -1.|
00002610  0d 20 20 20 20 20 20 20  20 20 20 2e 61 73 63 69  |.          .asci|
00002620  63 20 20 20 20 22 43 42  48 61 6e 64 6c 22 0a 0d  |c    "CBHandl"..|
00002630  43 42 48 61 6e 64 6c 3a  20 20 41 44 52 20 20 20  |CBHandl:  ADR   |
00002640  20 20 20 20 72 30 2c 20  43 42 42 75 66 66 0a 0d  |    r0, CBBuff..|
00002650  20 20 20 20 20 20 20 20  20 20 6c 64 72 20 20 20  |          ldr   |
00002660  20 20 20 20 6c 72 2c 20  5b 72 30 2c 20 23 36 30  |    lr, [r0, #60|
00002670  5d 20 20 20 20 20 20 3b  20 45 78 69 74 3f 0a 0d  |]      ; Exit?..|
00002680  3b 20 20 20 20 20 20 20  20 20 20 74 73 74 73 20  |;          tsts |
00002690  20 20 20 20 20 6c 72 2c  20 23 33 0a 0d 3b 20 20  |     lr, #3..;  |
000026a0  20 20 20 20 20 20 20 20  62 65 71 20 20 20 20 20  |        beq     |
000026b0  20 20 43 42 33 0a 0d 3b  20 20 20 20 20 20 20 20  |  CB3..;        |
000026c0  20 20 6d 6f 76 20 20 20  20 20 20 20 61 31 2c 20  |  mov       a1, |
000026d0  6c 72 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |lr              |
000026e0  3b 20 6b 65 65 70 20 73  61 66 65 20 73 76 63 5f  |; keep safe svc_|
000026f0  6c 72 0a 0d 3b 20 20 20  20 20 20 20 20 20 20 73  |lr..;          s|
00002700  77 69 20 20 20 20 20 20  20 4f 53 5f 53 65 74 43  |wi       OS_SetC|
00002710  61 6c 6c 42 61 63 6b 20  20 20 20 20 20 3b 20 61  |allBack      ; a|
00002720  6e 6f 74 68 65 72 20 43  61 6c 6c 62 61 63 6b 0a  |nother Callback.|
00002730  0d 3b 20 20 20 20 20 20  20 20 20 20 6d 6f 76 20  |.;          mov |
00002740  20 20 20 20 20 20 6c 72  2c 20 61 31 0a 0d 20 20  |      lr, a1..  |
00002750  20 20 20 20 20 20 20 20  6c 64 6d 66 64 20 20 20  |        ldmfd   |
00002760  20 20 72 30 2c 20 7b 72  30 2d 6c 72 7d 0a 0d 20  |  r0, {r0-lr}.. |
00002770  20 20 20 20 20 20 20 20  20 6d 6f 76 73 20 20 20  |         movs   |
00002780  20 20 20 70 63 2c 20 6c  72 0a 0d 43 42 42 75 66  |   pc, lr..CBBuf|
00002790  66 3a 20 20 20 2e 62 6c  6b 6c 20 20 20 20 20 31  |f:   .blkl     1|
000027a0  36 0a 0d 0a 0d 45 76 42  75 66 66 3a 20 20 20 41  |6....EvBuff:   A|
000027b0  44 52 20 20 20 20 20 20  20 72 74 73 2c 20 45 76  |DR       rts, Ev|
000027c0  65 50 61 72 61 6d 73 0a  0d 20 20 20 20 20 20 20  |eParams..       |
000027d0  20 20 20 6c 64 72 20 20  20 20 20 20 20 72 74 73  |   ldr       rts|
000027e0  2c 20 5b 72 74 73 2c 20  72 30 2c 20 6c 73 6c 20  |, [rts, r0, lsl |
000027f0  23 32 5d 0a 0d 20 20 20  20 20 20 20 20 20 20 6d  |#2]..          m|
00002800  6f 76 20 20 20 20 20 20  20 72 30 2c 20 72 30 2c  |ov       r0, r0,|
00002810  20 6c 73 6c 20 23 31 36  0a 0d 20 20 20 20 20 20  | lsl #16..      |
00002820  20 20 20 20 6f 72 72 20  20 20 20 20 20 20 72 30  |    orr       r0|
00002830  2c 20 72 30 2c 20 61 31  2c 20 6c 73 6c 20 23 38  |, r0, a1, lsl #8|
00002840  0a 0d 20 20 20 20 20 20  20 20 20 20 6f 72 72 20  |..          orr |
00002850  20 20 20 20 20 20 72 30  2c 20 72 30 2c 20 61 32  |      r0, r0, a2|
00002860  0a 0d 20 20 20 20 20 20  20 20 20 20 6c 64 6d 66  |..          ldmf|
00002870  64 20 20 20 20 20 72 74  73 21 2c 20 7b 61 31 2c  |d     rts!, {a1,|
00002880  20 61 32 2c 20 72 6c 7d  0a 0d 20 20 20 20 20 20  | a2, rl}..      |
00002890  20 20 20 20 61 64 64 20  20 20 20 20 20 20 61 31  |    add       a1|
000028a0  2c 20 61 31 2c 20 23 31  0a 0d 20 20 20 20 20 20  |, a1, #1..      |
000028b0  20 20 20 20 6d 6f 76 65  71 20 20 20 20 20 61 31  |    moveq     a1|
000028c0  2c 20 23 30 0a 0d 20 20  20 20 20 20 20 20 20 20  |, #0..          |
000028d0  63 6d 70 20 20 20 20 20  20 20 61 31 2c 20 61 32  |cmp       a1, a2|
000028e0  0a 0d 20 20 20 20 20 20  20 20 20 20 73 74 72 6e  |..          strn|
000028f0  65 20 20 20 20 20 61 31  2c 20 5b 72 74 73 2c 20  |e     a1, [rts, |
00002900  23 2d 31 32 5d 0a 0d 20  20 20 20 20 20 20 20 20  |#-12]..         |
00002910  20 6d 6f 76 20 20 20 20  20 20 20 72 6c 2c 20 23  | mov       rl, #|
00002920  30 0a 0d 45 76 52 65 74  75 72 6e 3a 20 6d 6f 76  |0..EvReturn: mov|
00002930  73 20 20 20 20 20 20 70  63 2c 20 6c 72 0a 0d 0a  |s      pc, lr...|
00002940  0d 45 76 65 52 74 6e 65  73 3a 20 2e 62 6c 6b 6c  |.EveRtnes: .blkl|
00002950  20 20 20 20 20 31 38 20  20 20 20 20 20 20 20 20  |     18         |
00002960  20 20 20 20 20 20 20 20  20 3b 20 30 2d 31 31 20  |         ; 0-11 |
00002970  45 76 65 6e 74 73 20 69  6e 20 41 72 74 68 75 72  |Events in Arthur|
00002980  0a 0d 45 76 65 50 61 72  61 6d 73 3a 2e 62 6c 6b  |..EveParams:.blk|
00002990  6c 20 20 20 20 20 31 38  20 20 20 20 20 20 20 20  |l     18        |
000029a0  20 20 20 20 20 20 20 20  20 20 3b 20 30 2d 31 37  |          ; 0-17|
000029b0  20 20 20 22 22 20 20 20  20 52 69 73 63 6f 73 0a  |   ""    Riscos.|
000029c0  0d 20 20 20 20 20 20 20  20 20 20 2e 6c 6f 6e 67  |.          .long|
000029d0  20 20 20 20 20 2d 31 0a  0d 20 20 20 20 20 20 20  |     -1..       |
000029e0  20 20 20 2e 61 73 63 69  63 20 20 20 20 22 53 65  |   .ascic    "Se|
000029f0  74 65 76 65 6e 22 0a 0d  53 65 74 65 76 65 6e 3a  |teven"..Seteven:|
00002a00  20 20 63 6d 70 20 20 20  20 20 20 20 61 33 2c 20  |  cmp       a3, |
00002a10  23 30 0a 0d 20 20 20 20  20 20 20 20 20 20 41 44  |#0..          AD|
00002a20  52 20 20 20 20 20 20 20  61 32 2c 20 45 76 52 65  |R       a2, EvRe|
00002a30  74 75 72 6e 0a 0d 20 20  20 20 20 20 20 20 20 20  |turn..          |
00002a40  62 65 71 20 20 20 20 20  20 20 45 76 65 6e 65 78  |beq       Evenex|
00002a50  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3b 20  |              ; |
00002a60  69 67 6e 6f 72 65 0a 0d  20 20 20 20 20 20 20 20  |ignore..        |
00002a70  20 20 63 6d 70 20 20 20  20 20 20 20 61 33 2c 20  |  cmp       a3, |
00002a80  23 32 0a 0d 20 20 20 20  20 20 20 20 20 20 41 44  |#2..          AD|
00002a90  52 4e 45 20 20 20 20 20  61 34 2c 20 45 76 65 50  |RNE     a4, EveP|
00002aa0  61 72 61 6d 73 0a 0d 20  20 20 20 20 20 20 20 20  |arams..         |
00002ab0  20 6d 6f 76 6e 65 20 20  20 20 20 61 32 2c 20 61  | movne     a2, a|
00002ac0  32 2c 20 6c 73 6c 20 23  32 20 20 20 20 20 20 3b  |2, lsl #2      ;|
00002ad0  20 66 6c 61 67 28 31 29  20 6f 72 20 62 75 66 66  | flag(1) or buff|
00002ae0  65 72 28 33 29 20 42 43  50 4c 0a 0d 20 20 20 20  |er(3) BCPL..    |
00002af0  20 20 20 20 20 20 73 74  72 6e 65 20 20 20 20 20  |      strne     |
00002b00  61 32 2c 20 5b 61 34 2c  20 61 31 2c 20 6c 73 6c  |a2, [a4, a1, lsl|
00002b10  20 23 32 5d 0a 0d 20 20  20 20 20 20 20 20 20 20  | #2]..          |
00002b20  41 44 52 4e 45 20 20 20  20 20 61 32 2c 20 45 76  |ADRNE     a2, Ev|
00002b30  46 6c 61 67 3b 0a 0d 20  20 20 20 20 20 20 20 20  |Flag;..         |
00002b40  20 63 6d 70 6e 65 20 20  20 20 20 61 33 2c 20 23  | cmpne     a3, #|
00002b50  31 0a 0d 20 20 20 20 20  20 20 20 20 20 41 44 52  |1..          ADR|
00002b60  4e 45 20 20 20 20 20 61  32 2c 20 45 76 42 75 66  |NE     a2, EvBuf|
00002b70  66 0a 0d 45 76 65 6e 65  78 3a 20 20 20 41 44 52  |f..Evenex:   ADR|
00002b80  20 20 20 20 20 20 20 61  34 2c 20 45 76 65 52 74  |       a4, EveRt|
00002b90  6e 65 73 20 20 20 20 20  20 20 3b 20 41 52 4d 20  |nes       ; ARM |
00002ba0  52 6f 75 74 69 6e 65 28  32 29 0a 0d 20 20 20 20  |Routine(2)..    |
00002bb0  20 20 20 20 20 20 73 74  72 6e 65 20 20 20 20 20  |      strne     |
00002bc0  61 32 2c 20 5b 61 34 2c  20 61 31 2c 20 6c 73 6c  |a2, [a4, a1, lsl|
00002bd0  20 23 32 5d 0a 0d 20 20  20 20 20 20 20 20 20 20  | #2]..          |
00002be0  6d 6f 76 73 20 20 20 20  20 20 70 63 2c 20 6c 72  |movs      pc, lr|
00002bf0  0a 0d 0a 0d 55 69 6e 68  61 6e 64 3a 20 20 73 74  |....Uinhand:  st|
00002c00  72 20 20 20 20 20 20 20  6c 72 2c 20 5b 70 63 2c  |r       lr, [pc,|
00002c10  20 23 58 63 70 62 75 66  30 2d 24 2d 38 5d 0a 0d  | #Xcpbuf0-$-8]..|
00002c20  20 20 20 20 20 20 20 20  20 20 6d 6f 76 20 20 20  |          mov   |
00002c30  20 20 20 20 6c 72 2c 20  23 31 0a 0d 20 20 20 20  |    lr, #1..    |
00002c40  20 20 20 20 20 20 62 20  20 20 20 20 20 20 20 20  |      b         |
00002c50  48 61 72 64 68 61 6e 64  0a 0d 50 66 61 68 61 6e  |Hardhand..Pfahan|
00002c60  64 3a 20 20 73 74 72 20  20 20 20 20 20 20 6c 72  |d:  str       lr|
00002c70  2c 20 5b 70 63 2c 20 23  58 63 70 62 75 66 30 2d  |, [pc, #Xcpbuf0-|
00002c80  24 2d 38 5d 0a 0d 20 20  20 20 20 20 20 20 20 20  |$-8]..          |
00002c90  6d 6f 76 20 20 20 20 20  20 20 6c 72 2c 20 23 32  |mov       lr, #2|
00002ca0  0a 0d 20 20 20 20 20 20  20 20 20 20 62 20 20 20  |..          b   |
00002cb0  20 20 20 20 20 20 48 61  72 64 68 61 6e 64 0a 0d  |      Hardhand..|
00002cc0  44 74 61 68 61 6e 64 3a  20 20 73 74 72 20 20 20  |Dtahand:  str   |
00002cd0  20 20 20 20 6c 72 2c 20  5b 70 63 2c 20 23 58 63  |    lr, [pc, #Xc|
00002ce0  70 62 75 66 30 2d 24 2d  38 5d 0a 0d 20 20 20 20  |pbuf0-$-8]..    |
00002cf0  20 20 20 20 20 20 6d 6f  76 20 20 20 20 20 20 20  |      mov       |
00002d00  6c 72 2c 20 23 33 0a 0d  20 20 20 20 20 20 20 20  |lr, #3..        |
00002d10  20 20 62 20 20 20 20 20  20 20 20 20 48 61 72 64  |  b         Hard|
00002d20  68 61 6e 64 0a 0d 41 64  78 68 61 6e 64 3a 20 20  |hand..Adxhand:  |
00002d30  73 74 72 20 20 20 20 20  20 20 6c 72 2c 20 5b 70  |str       lr, [p|
00002d40  63 2c 20 23 58 63 70 62  75 66 30 2d 24 2d 38 5d  |c, #Xcpbuf0-$-8]|
00002d50  0a 0d 20 20 20 20 20 20  20 20 20 20 6d 6f 76 20  |..          mov |
00002d60  20 20 20 20 20 20 6c 72  2c 20 23 34 0a 0d 48 61  |      lr, #4..Ha|
00002d70  72 64 68 61 6e 64 3a 20  73 74 72 20 20 20 20 20  |rdhand: str     |
00002d80  20 20 6c 72 2c 20 5b 70  63 2c 20 23 58 63 70 62  |  lr, [pc, #Xcpb|
00002d90  75 66 31 2d 24 2d 38 5d  0a 0d 20 20 20 20 20 20  |uf1-$-8]..      |
00002da0  20 20 20 20 41 44 52 20  20 20 20 20 20 20 6c 72  |    ADR       lr|
00002db0  2c 20 58 63 70 52 65 67  73 0a 0d 20 20 20 20 20  |, XcpRegs..     |
00002dc0  20 20 20 20 20 73 74 6d  65 61 20 20 20 20 20 6c  |     stmea     l|
00002dd0  72 2c 20 7b 72 30 20 2d  20 6c 72 7d 5e 0a 0d 20  |r, {r0 - lr}^.. |
00002de0  20 20 20 20 20 20 20 20  20 74 73 74 70 20 20 20  |         tstp   |
00002df0  20 20 20 70 63 2c 20 23  30 20 20 20 20 20 20 20  |   pc, #0       |
00002e00  20 20 20 20 20 20 20 3b  20 6c 65 61 76 65 20 73  |       ; leave s|
00002e10  76 63 20 6d 6f 64 65 0a  0d 20 20 20 20 20 20 20  |vc mode..       |
00002e20  20 20 20 73 77 69 20 20  20 20 20 20 20 4f 53 5f  |   swi       OS_|
00002e30  57 72 69 74 65 49 2b 31  34 0a 0d 20 20 20 20 20  |WriteI+14..     |
00002e40  20 20 20 20 20 61 64 64  20 20 20 20 20 20 20 72  |     add       r|
00002e50  74 73 2c 20 72 66 70 2c  20 23 31 36 30 0a 0d 20  |ts, rfp, #160.. |
00002e60  20 20 20 20 20 20 20 20  20 6c 64 72 20 20 20 20  |         ldr    |
00002e70  20 20 20 72 62 2c 20 5b  72 67 2c 20 23 41 62 6f  |   rb, [rg, #Abo|
00002e80  72 74 5d 0a 0d 20 20 20  20 20 20 20 20 20 20 6c  |rt]..          l|
00002e90  64 72 20 20 20 20 20 20  20 61 31 2c 20 5b 70 63  |dr       a1, [pc|
00002ea0  2c 20 23 58 63 70 62 75  66 31 2d 24 2d 38 5d 0a  |, #Xcpbuf1-$-8].|
00002eb0  0d 20 20 20 20 20 20 20  20 20 20 6c 64 72 20 20  |.          ldr  |
00002ec0  20 20 20 20 20 6c 72 2c  20 5b 70 63 2c 20 23 58  |     lr, [pc, #X|
00002ed0  63 70 62 75 66 30 2d 24  2d 38 5d 0a 0d 20 20 20  |cpbuf0-$-8]..   |
00002ee0  20 20 20 20 20 20 20 6d  6f 76 20 20 20 20 20 20  |       mov      |
00002ef0  20 70 63 2c 20 72 62 0a  0d 0a 0d 20 20 20 20 20  | pc, rb....     |
00002f00  20 20 20 20 20 2e 6c 6f  6e 67 20 20 20 20 20 2d  |     .long     -|
00002f10  31 0a 0d 20 20 20 20 20  20 20 20 20 20 2e 61 73  |1..          .as|
00002f20  63 69 63 20 20 20 20 22  54 4b 52 45 72 72 20 22  |cic    "TKRErr "|
00002f30  0a 0d 54 4b 52 45 72 72  3a 20 20 20 6d 6f 76 20  |..TKRErr:   mov |
00002f40  20 20 20 20 20 20 61 33  2c 20 61 31 2c 20 6c 73  |      a3, a1, ls|
00002f50  6c 20 23 32 0a 0d 20 20  20 20 20 20 20 20 20 20  |l #2..          |
00002f60  41 44 52 20 20 20 20 20  20 20 61 34 2c 20 45 72  |ADR       a4, Er|
00002f70  72 42 75 66 66 2b 34 0a  0d 20 20 20 20 20 20 20  |rBuff+4..       |
00002f80  20 20 20 6d 6f 76 20 20  20 20 20 20 20 72 35 2c  |   mov       r5,|
00002f90  20 23 30 0a 0d 54 4b 52  6c 70 3a 20 20 20 20 6c  | #0..TKRlp:    l|
00002fa0  64 72 62 20 20 20 20 20  20 72 62 2c 20 5b 61 34  |drb      rb, [a4|
00002fb0  5d 2c 20 23 31 0a 0d 20  20 20 20 20 20 20 20 20  |], #1..         |
00002fc0  20 63 6d 70 20 20 20 20  20 20 20 72 62 2c 20 23  | cmp       rb, #|
00002fd0  30 0a 0d 20 20 20 20 20  20 20 20 20 20 62 65 71  |0..          beq|
00002fe0  20 20 20 20 20 20 20 54  4b 52 65 78 0a 0d 20 20  |       TKRex..  |
00002ff0  20 20 20 20 20 20 20 20  61 64 64 20 20 20 20 20  |        add     |
00003000  20 20 72 35 2c 20 72 35  2c 20 23 31 0a 0d 20 20  |  r5, r5, #1..  |
00003010  20 20 20 20 20 20 20 20  73 74 72 62 20 20 20 20  |        strb    |
00003020  20 20 72 62 2c 20 5b 61  33 2c 20 72 35 5d 0a 0d  |  rb, [a3, r5]..|
00003030  20 20 20 20 20 20 20 20  20 20 63 6d 70 20 20 20  |          cmp   |
00003040  20 20 20 20 72 35 2c 20  61 32 0a 0d 20 20 20 20  |    r5, a2..    |
00003050  20 20 20 20 20 20 62 6c  74 20 20 20 20 20 20 20  |      blt       |
00003060  54 4b 52 6c 70 0a 0d 54  4b 52 65 78 3a 20 20 20  |TKRlp..TKRex:   |
00003070  20 73 74 72 62 20 20 20  20 20 20 72 35 2c 20 5b  | strb      r5, [|
00003080  61 33 5d 0a 0d 20 20 20  20 20 20 20 20 20 20 6d  |a3]..          m|
00003090  6f 76 73 20 20 20 20 20  20 70 63 2c 20 6c 72 0a  |ovs      pc, lr.|
000030a0  0d 0a 0d 20 20 20 20 20  20 20 20 20 20 2e 6c 6f  |...          .lo|
000030b0  6e 67 20 20 20 20 20 2d  31 0a 0d 20 20 20 20 20  |ng     -1..     |
000030c0  20 20 20 20 20 2e 61 73  63 69 63 20 20 20 20 20  |     .ascic     |
000030d0  22 53 74 6f 70 20 20 20  22 0a 0d 53 74 6f 70 3a  |"Stop   "..Stop:|
000030e0  20 20 20 20 20 73 74 72  20 20 20 20 20 20 20 61  |     str       a|
000030f0  31 2c 20 5b 72 67 2c 20  23 52 65 74 75 72 6e 43  |1, [rg, #ReturnC|
00003100  6f 64 65 5d 20 20 20 20  3b 3f 20 23 52 65 74 75  |ode]    ;? #Retu|
00003110  72 6e 43 6f 64 65 0a 0d  20 20 20 20 20 20 20 20  |rnCode..        |
00003120  20 20 6c 64 72 20 20 20  20 20 20 20 61 33 2c 20  |  ldr       a3, |
00003130  5b 72 67 2c 20 23 53 74  61 63 6b 62 61 73 65 5d  |[rg, #Stackbase]|
00003140  0a 0d 20 20 20 20 20 20  20 20 20 20 6d 6f 76 20  |..          mov |
00003150  20 20 20 20 20 20 61 33  2c 20 61 33 2c 20 6c 73  |      a3, a3, ls|
00003160  6c 20 23 32 0a 0d 20 20  20 20 20 20 20 20 20 20  |l #2..          |
00003170  6c 64 72 20 20 20 20 20  20 20 61 32 2c 20 5b 61  |ldr       a2, [a|
00003180  33 2c 20 23 34 5d 0a 0d  20 20 20 20 20 20 20 20  |3, #4]..        |
00003190  20 20 6c 64 72 20 20 20  20 20 20 20 72 66 70 2c  |  ldr       rfp,|
000031a0  20 5b 61 33 2c 20 23 32  34 5d 0a 0d 20 20 20 20  | [a3, #24]..    |
000031b0  20 20 20 20 20 20 63 6d  6e 20 20 20 20 20 20 20  |      cmn       |
000031c0  61 32 2c 20 23 31 0a 0d  20 20 20 20 20 20 20 20  |a2, #1..        |
000031d0  20 20 62 65 71 20 20 20  20 20 20 20 46 69 6e 69  |  beq       Fini|
000031e0  73 68 0a 0d 20 20 20 20  20 20 20 20 20 20 62 20  |sh..          b |
000031f0  20 20 20 20 20 20 20 20  52 65 73 43 66 6c 74 0a  |        ResCflt.|
00003200  0d 20 20 20 20 20 20 20  20 20 20 2e 6c 6f 6e 67  |.          .long|
00003210  20 20 20 20 20 2d 31 0a  0d 20 20 20 20 20 20 20  |     -1..       |
00003220  20 20 20 2e 61 73 63 69  63 20 20 20 20 22 43 68  |   .ascic    "Ch|
00003230  65 6e 76 20 20 22 0a 0d  4e 65 77 45 6e 76 3a 20  |env  "..NewEnv: |
00003240  20 20 41 44 52 20 20 20  20 20 20 20 61 34 2c 20  |  ADR       a4, |
00003250  55 49 6e 73 74 72 0a 0d  20 20 20 20 20 20 20 20  |UInstr..        |
00003260  20 20 41 44 52 20 20 20  20 20 20 20 72 35 2c 20  |  ADR       r5, |
00003270  4f 55 49 6e 73 74 72 0a  0d 20 20 20 20 20 20 20  |OUInstr..       |
00003280  20 20 20 62 20 20 20 20  20 20 20 20 20 43 68 45  |   b         ChE|
00003290  6e 76 0a 0d 4f 6c 64 45  6e 76 3a 20 20 20 41 44  |nv..OldEnv:   AD|
000032a0  52 20 20 20 20 20 20 20  61 34 2c 20 4f 55 49 6e  |R       a4, OUIn|
000032b0  73 74 72 0a 0d 20 20 20  20 20 20 20 20 20 20 41  |str..          A|
000032c0  44 52 20 20 20 20 20 20  20 72 35 2c 20 55 49 6e  |DR       r5, UIn|
000032d0  73 74 72 0a 0d 20 20 20  20 20 20 20 20 20 20 62  |str..          b|
000032e0  20 20 20 20 20 20 20 20  20 43 68 45 6e 76 0a 0d  |         ChEnv..|
000032f0  0a 0d 58 63 70 52 65 67  73 3a 20 20 2e 62 6c 6b  |..XcpRegs:  .blk|
00003300  6c 20 20 20 20 20 31 36  0a 0d 58 63 70 62 75 66  |l     16..Xcpbuf|
00003310  30 3a 20 20 2e 62 6c 6b  6c 20 20 20 20 20 31 0a  |0:  .blkl     1.|
00003320  0d 58 63 70 62 75 66 31  3a 20 20 2e 62 6c 6b 6c  |.Xcpbuf1:  .blkl|
00003330  20 20 20 20 20 31 0a 0d  4f 55 49 6e 73 74 72 3a  |     1..OUInstr:|
00003340  20 20 2e 62 6c 6b 6c 20  20 20 20 20 31 0a 0d 4f  |  .blkl     1..O|
00003350  50 72 65 66 61 62 3a 20  20 2e 62 6c 6b 6c 20 20  |Prefab:  .blkl  |
00003360  20 20 20 31 0a 0d 4f 44  61 74 61 62 3a 20 20 20  |   1..ODatab:   |
00003370  2e 62 6c 6b 6c 20 20 20  20 20 31 0a 0d 4f 41 64  |.blkl     1..OAd|
00003380  64 65 78 70 3a 20 20 2e  62 6c 6b 6c 20 20 20 20  |dexp:  .blkl    |
00003390  20 31 0a 0d 4f 4f 74 68  65 72 78 3a 20 20 2e 62  | 1..OOtherx:  .b|
000033a0  6c 6b 6c 20 20 20 20 20  31 0a 0d 4f 45 72 72 6f  |lkl     1..OErro|
000033b0  72 48 3a 20 20 2e 62 6c  6b 6c 20 20 20 20 20 33  |rH:  .blkl     3|
000033c0  0a 0d 4f 43 61 6c 6c 42  48 3a 20 20 2e 62 6c 6b  |..OCallBH:  .blk|
000033d0  6c 20 20 20 20 20 33 0a  0d 4f 42 72 65 61 6b 50  |l     3..OBreakP|
000033e0  74 48 3a 2e 62 6c 6b 6c  20 20 20 20 20 33 0a 0d  |tH:.blkl     3..|
000033f0  4f 45 73 63 61 70 65 48  3a 20 2e 62 6c 6b 6c 20  |OEscapeH: .blkl |
00003400  20 20 20 20 32 0a 0d 4f  45 76 65 6e 74 48 3a 20  |    2..OEventH: |
00003410  20 2e 62 6c 6b 6c 20 20  20 20 20 32 0a 0d 4f 45  | .blkl     2..OE|
00003420  78 69 74 48 3a 20 20 20  2e 62 6c 6b 6c 20 20 20  |xitH:   .blkl   |
00003430  20 20 32 0a 0d 4f 55 6e  75 73 53 57 49 3a 20 2e  |  2..OUnusSWI: .|
00003440  62 6c 6b 6c 20 20 20 20  20 32 0a 0d 4f 45 78 63  |blkl     2..OExc|
00003450  65 70 52 65 67 3a 2e 62  6c 6b 6c 20 20 20 20 20  |epReg:.blkl     |
00003460  31 0a 0d 4f 41 70 6c 53  70 3a 20 20 20 2e 62 6c  |1..OAplSp:   .bl|
00003470  6b 6c 20 20 20 20 20 31  0a 0d 4f 43 61 6f 3a 20  |kl     1..OCao: |
00003480  20 20 20 20 2e 62 6c 6b  6c 20 20 20 20 20 31 0a  |    .blkl     1.|
00003490  0d 4f 55 70 43 61 6c 6c  3a 20 20 2e 62 6c 6b 6c  |.OUpCall:  .blkl|
000034a0  20 20 20 20 20 32 0a 0d  0a 0d 45 6e 76 66 6c 61  |     2....Envfla|
000034b0  67 3a 20 20 2e 61 64 64  72 65 73 73 20 20 30 0a  |g:  .address  0.|
000034c0  0d 55 49 6e 73 74 72 3a  20 20 20 2e 61 64 64 72  |.UInstr:   .addr|
000034d0  65 73 73 20 20 55 69 6e  68 61 6e 64 0a 0d 50 72  |ess  Uinhand..Pr|
000034e0  65 66 61 62 3a 20 20 20  2e 61 64 64 72 65 73 73  |efab:   .address|
000034f0  20 20 50 66 61 68 61 6e  64 0a 0d 44 61 74 61 62  |  Pfahand..Datab|
00003500  3a 20 20 20 20 2e 61 64  64 72 65 73 73 20 20 44  |:    .address  D|
00003510  74 61 68 61 6e 64 0a 0d  41 64 64 65 78 70 3a 20  |tahand..Addexp: |
00003520  20 20 2e 61 64 64 72 65  73 73 20 20 41 64 78 68  |  .address  Adxh|
00003530  61 6e 64 0a 0d 4f 74 68  65 72 78 3a 20 20 20 2e  |and..Otherx:   .|
00003540  61 64 64 72 65 73 73 20  20 30 0a 0d 45 72 72 6f  |address  0..Erro|
00003550  72 48 3a 20 20 20 2e 61  64 64 72 65 73 73 20 20  |rH:   .address  |
00003560  45 72 72 48 61 6e 64 0a  0d 20 20 20 20 20 20 20  |ErrHand..       |
00003570  20 20 20 2e 61 64 64 72  65 73 73 20 20 30 20 20  |   .address  0  |
00003580  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00003590  20 3b 20 64 6f 6e 74 20  63 61 72 65 0a 0d 20 20  | ; dont care..  |
000035a0  20 20 20 20 20 20 20 20  2e 61 64 64 72 65 73 73  |        .address|
000035b0  20 20 45 72 72 42 75 66  66 0a 0d 43 61 6c 6c 42  |  ErrBuff..CallB|
000035c0  48 3a 20 20 20 2e 61 64  64 72 65 73 73 20 20 43  |H:   .address  C|
000035d0  42 48 61 6e 64 6c 0a 0d  20 20 20 20 20 20 20 20  |BHandl..        |
000035e0  20 20 2e 61 64 64 72 65  73 73 20 20 30 0a 0d 20  |  .address  0.. |
000035f0  20 20 20 20 20 20 20 20  20 2e 61 64 64 72 65 73  |         .addres|
00003600  73 20 20 43 42 42 75 66  66 0a 0d 42 72 65 61 6b  |s  CBBuff..Break|
00003610  50 74 48 3a 20 2e 61 64  64 72 65 73 73 20 20 30  |PtH: .address  0|
00003620  0a 0d 20 20 20 20 20 20  20 20 20 20 2e 61 64 64  |..          .add|
00003630  72 65 73 73 20 20 30 0a  0d 20 20 20 20 20 20 20  |ress  0..       |
00003640  20 20 20 2e 61 64 64 72  65 73 73 20 20 30 0a 0d  |   .address  0..|
00003650  45 73 63 61 70 65 48 3a  20 20 2e 61 64 64 72 65  |EscapeH:  .addre|
00003660  73 73 20 20 30 0a 0d 20  20 20 20 20 20 20 20 20  |ss  0..         |
00003670  20 2e 61 64 64 72 65 73  73 20 20 30 0a 0d 45 76  | .address  0..Ev|
00003680  65 6e 74 48 3a 20 20 20  2e 61 64 64 72 65 73 73  |entH:   .address|
00003690  20 20 45 76 48 61 6e 64  6c 0a 0d 20 20 20 20 20  |  EvHandl..     |
000036a0  20 20 20 20 20 2e 61 64  64 72 65 73 73 20 20 30  |     .address  0|
000036b0  0a 0d 45 78 69 74 48 3a  20 20 20 20 2e 61 64 64  |..ExitH:    .add|
000036c0  72 65 73 73 20 20 45 78  69 74 68 61 6e 0a 0d 20  |ress  Exithan.. |
000036d0  20 20 20 20 20 20 20 20  20 2e 61 64 64 72 65 73  |         .addres|
000036e0  73 20 20 30 0a 0d 55 6e  6b 53 57 49 3a 20 20 20  |s  0..UnkSWI:   |
000036f0  2e 61 64 64 72 65 73 73  20 20 30 0a 0d 20 20 20  |.address  0..   |
00003700  20 20 20 20 20 20 20 2e  61 64 64 72 65 73 73 20  |       .address |
00003710  20 30 0a 0d 45 78 63 65  70 52 65 67 3a 20 2e 61  | 0..ExcepReg: .a|
00003720  64 64 72 65 73 73 20 20  30 3b 58 63 70 52 65 67  |ddress  0;XcpReg|
00003730  73 0a 0d 41 70 6c 53 70  3a 20 20 20 20 2e 61 64  |s..AplSp:    .ad|
00003740  64 72 65 73 73 20 20 30  0a 0d 43 61 6f 3a 20 20  |dress  0..Cao:  |
00003750  20 20 20 20 2e 61 64 64  72 65 73 73 20 20 30 0a  |    .address  0.|
00003760  0d 55 70 43 61 6c 6c 3a  20 20 20 2e 61 64 64 72  |.UpCall:   .addr|
00003770  65 73 73 20 20 30 0a 0d  20 20 20 20 20 20 20 20  |ess  0..        |
00003780  20 20 2e 61 64 64 72 65  73 73 20 20 30 0a 0d 0a  |  .address  0...|
00003790  0d 3b 43 68 61 6e 67 65  6e 76 20 43 61 6c 6c 65  |.;Changenv Calle|
000037a0  64 20 77 69 74 68 20 72  30 20 63 61 73 65 20 66  |d with r0 case f|
000037b0  6f 72 20 4f 53 5f 43 68  61 6e 67 65 6e 76 2c 20  |or OS_Changenv, |
000037c0  61 34 20 61 64 64 72 65  73 73 20 6f 66 20 6e 65  |a4 address of ne|
000037d0  77 20 76 61 6c 75 65 2c  20 72 35 0a 0d 3b 61 64  |w value, r5..;ad|
000037e0  64 72 65 73 73 20 74 6f  20 70 75 74 20 6f 6c 64  |dress to put old|
000037f0  20 76 61 6c 75 65 3b 20  65 6e 64 73 20 77 69 74  | value; ends wit|
00003800  68 20 61 34 2c 20 72 35  20 69 6e 63 72 65 6d 65  |h a4, r5 increme|
00003810  6e 74 65 64 2e 0a 0d 0a  0d 43 68 45 6e 76 3a 20  |nted.....ChEnv: |
00003820  20 20 20 6c 64 72 20 20  20 20 20 20 20 72 30 2c  |   ldr       r0,|
00003830  20 5b 70 63 2c 20 23 55  49 6e 73 74 72 2d 24 2d  | [pc, #UInstr-$-|
00003840  38 5d 0a 0d 20 20 20 20  20 20 20 20 20 20 63 6d  |8]..          cm|
00003850  70 20 20 20 20 20 20 20  72 30 2c 20 23 30 0a 0d  |p       r0, #0..|
00003860  20 20 20 20 20 20 20 20  20 20 6d 6f 76 65 71 20  |          moveq |
00003870  20 20 20 20 70 63 2c 20  6c 72 0a 0d 20 20 20 20  |    pc, lr..    |
00003880  20 20 20 20 20 20 6d 6f  76 20 20 20 20 20 20 20  |      mov       |
00003890  72 30 2c 20 23 30 20 20  20 20 20 20 20 20 20 20  |r0, #0          |
000038a0  20 20 20 20 3b 20 4e 42  20 30 28 4d 65 6d 6c 69  |    ; NB 0(Memli|
000038b0  6d 20 6e 6f 74 20 73 65  72 76 69 63 65 64 29 0a  |m not serviced).|
000038c0  0d 45 6e 76 6c 70 3a 20  20 20 20 6d 6f 76 20 20  |.Envlp:    mov  |
000038d0  20 20 20 20 20 61 32 2c  20 23 30 0a 0d 20 20 20  |     a2, #0..   |
000038e0  20 20 20 20 20 20 20 6d  6f 76 20 20 20 20 20 20  |       mov      |
000038f0  20 61 33 2c 20 23 30 0a  0d 20 20 20 20 20 20 20  | a3, #0..       |
00003900  20 20 20 61 64 64 20 20  20 20 20 20 20 72 30 2c  |   add       r0,|
00003910  20 72 30 2c 20 23 31 0a  0d 20 20 20 20 20 20 20  | r0, #1..       |
00003920  20 20 20 6c 64 72 20 20  20 20 20 20 20 61 31 2c  |   ldr       a1,|
00003930  20 5b 61 34 5d 2c 20 23  34 0a 0d 20 20 20 20 20  | [a4], #4..     |
00003940  20 20 20 20 20 74 65 71  20 20 20 20 20 20 20 72  |     teq       r|
00003950  30 2c 20 23 30 0a 0d 20  20 20 20 20 20 20 20 20  |0, #0..         |
00003960  20 74 65 71 6e 65 20 20  20 20 20 72 30 2c 20 23  | teqne     r0, #|
00003970  31 0a 0d 20 20 20 20 20  20 20 20 20 20 74 65 71  |1..          teq|
00003980  6e 65 20 20 20 20 20 72  30 2c 20 23 32 0a 0d 20  |ne     r0, #2.. |
00003990  20 20 20 20 20 20 20 20  20 74 65 71 6e 65 20 20  |         teqne  |
000039a0  20 20 20 72 30 2c 20 23  33 0a 0d 20 20 20 20 20  |   r0, #3..     |
000039b0  20 20 20 20 20 74 65 71  6e 65 20 20 20 20 20 72  |     teqne     r|
000039c0  30 2c 20 23 34 0a 0d 20  20 20 20 20 20 20 20 20  |0, #4..         |
000039d0  20 74 65 71 6e 65 20 20  20 20 20 72 30 2c 20 23  | teqne     r0, #|
000039e0  35 0a 0d 20 20 20 20 20  20 20 20 20 20 74 65 71  |5..          teq|
000039f0  6e 65 20 20 20 20 20 72  30 2c 20 23 31 33 0a 0d  |ne     r0, #13..|
00003a00  20 20 20 20 20 20 20 20  20 20 74 65 71 6e 65 20  |          teqne |
00003a10  20 20 20 20 72 30 2c 20  23 31 34 0a 0d 20 20 20  |    r0, #14..   |
00003a20  20 20 20 20 20 20 20 74  65 71 6e 65 20 20 20 20  |       teqne    |
00003a30  20 72 30 2c 20 23 31 35  0a 0d 20 20 20 20 20 20  | r0, #15..      |
00003a40  20 20 20 20 62 65 71 20  20 20 20 20 20 20 45 6e  |    beq       En|
00003a50  76 31 0a 0d 20 20 20 20  20 20 20 20 20 20 6c 64  |v1..          ld|
00003a60  72 20 20 20 20 20 20 20  61 32 2c 20 5b 61 34 5d  |r       a2, [a4]|
00003a70  2c 20 23 34 0a 0d 20 20  20 20 20 20 20 20 20 20  |, #4..          |
00003a80  74 65 71 20 20 20 20 20  20 20 72 30 2c 20 23 39  |teq       r0, #9|
00003a90  0a 0d 20 20 20 20 20 20  20 20 20 20 74 65 71 6e  |..          teqn|
00003aa0  65 20 20 20 20 20 72 30  2c 20 23 31 30 0a 0d 20  |e     r0, #10.. |
00003ab0  20 20 20 20 20 20 20 20  20 74 65 71 6e 65 20 20  |         teqne  |
00003ac0  20 20 20 72 30 2c 20 23  31 31 0a 0d 20 20 20 20  |   r0, #11..    |
00003ad0  20 20 20 20 20 20 74 65  71 6e 65 20 20 20 20 20  |      teqne     |
00003ae0  72 30 2c 20 23 31 32 0a  0d 20 20 20 20 20 20 20  |r0, #12..       |
00003af0  20 20 20 74 65 71 6e 65  20 20 20 20 20 72 30 2c  |   teqne     r0,|
00003b00  20 23 31 33 0a 0d 20 20  20 20 20 20 20 20 20 20  | #13..          |
00003b10  74 65 71 6e 65 20 20 20  20 20 72 30 2c 20 23 31  |teqne     r0, #1|
00003b20  36 0a 0d 20 20 20 20 20  20 20 20 20 20 62 65 71  |6..          beq|
00003b30  20 20 20 20 20 20 20 45  6e 76 31 0a 0d 20 20 20  |       Env1..   |
00003b40  20 20 20 20 20 20 20 6c  64 72 20 20 20 20 20 20  |       ldr      |
00003b50  20 61 33 2c 20 5b 61 34  5d 2c 20 23 34 0a 0d 45  | a3, [a4], #4..E|
00003b60  6e 76 31 3a 20 20 20 20  20 73 77 69 20 20 20 20  |nv1:     swi    |
00003b70  20 20 20 4f 53 5f 43 68  61 6e 67 65 45 6e 76 69  |   OS_ChangeEnvi|
00003b80  72 6f 6e 6d 65 6e 74 0a  0d 20 20 20 20 20 20 20  |ronment..       |
00003b90  20 20 20 73 74 72 20 20  20 20 20 20 20 61 31 2c  |   str       a1,|
00003ba0  20 5b 72 35 5d 2c 20 23  34 0a 0d 20 20 20 20 20  | [r5], #4..     |
00003bb0  20 20 20 20 20 74 65 71  20 20 20 20 20 20 20 72  |     teq       r|
00003bc0  30 2c 20 23 30 0a 0d 20  20 20 20 20 20 20 20 20  |0, #0..         |
00003bd0  20 74 65 71 6e 65 20 20  20 20 20 72 30 2c 20 23  | teqne     r0, #|
00003be0  31 0a 0d 20 20 20 20 20  20 20 20 20 20 74 65 71  |1..          teq|
00003bf0  6e 65 20 20 20 20 20 72  30 2c 20 23 32 0a 0d 20  |ne     r0, #2.. |
00003c00  20 20 20 20 20 20 20 20  20 74 65 71 6e 65 20 20  |         teqne  |
00003c10  20 20 20 72 30 2c 20 23  33 0a 0d 20 20 20 20 20  |   r0, #3..     |
00003c20  20 20 20 20 20 74 65 71  6e 65 20 20 20 20 20 72  |     teqne     r|
00003c30  30 2c 20 23 34 0a 0d 20  20 20 20 20 20 20 20 20  |0, #4..         |
00003c40  20 74 65 71 6e 65 20 20  20 20 20 72 30 2c 20 23  | teqne     r0, #|
00003c50  35 0a 0d 20 20 20 20 20  20 20 20 20 20 74 65 71  |5..          teq|
00003c60  6e 65 20 20 20 20 20 72  30 2c 20 23 31 33 0a 0d  |ne     r0, #13..|
00003c70  20 20 20 20 20 20 20 20  20 20 74 65 71 6e 65 20  |          teqne |
00003c80  20 20 20 20 72 30 2c 20  23 31 34 0a 0d 20 20 20  |    r0, #14..   |
00003c90  20 20 20 20 20 20 20 74  65 71 6e 65 20 20 20 20  |       teqne    |
00003ca0  20 72 30 2c 20 23 31 35  0a 0d 20 20 20 20 20 20  | r0, #15..      |
00003cb0  20 20 20 20 62 65 71 20  20 20 20 20 20 20 45 6e  |    beq       En|
00003cc0  76 6c 70 0a 0d 20 20 20  20 20 20 20 20 20 20 73  |vlp..          s|
00003cd0  74 72 20 20 20 20 20 20  20 61 32 2c 20 5b 72 35  |tr       a2, [r5|
00003ce0  5d 2c 20 23 34 0a 0d 20  20 20 20 20 20 20 20 20  |], #4..         |
00003cf0  20 74 65 71 20 20 20 20  20 20 20 72 30 2c 20 23  | teq       r0, #|
00003d00  39 0a 0d 20 20 20 20 20  20 20 20 20 20 74 65 71  |9..          teq|
00003d10  6e 65 20 20 20 20 20 72  30 2c 20 23 31 30 0a 0d  |ne     r0, #10..|
00003d20  20 20 20 20 20 20 20 20  20 20 74 65 71 6e 65 20  |          teqne |
00003d30  20 20 20 20 72 30 2c 20  23 31 31 0a 0d 20 20 20  |    r0, #11..   |
00003d40  20 20 20 20 20 20 20 74  65 71 6e 65 20 20 20 20  |       teqne    |
00003d50  20 72 30 2c 20 23 31 32  0a 0d 20 20 20 20 20 20  | r0, #12..      |
00003d60  20 20 20 20 74 65 71 6e  65 20 20 20 20 20 72 30  |    teqne     r0|
00003d70  2c 20 23 31 33 0a 0d 20  20 20 20 20 20 20 20 20  |, #13..         |
00003d80  20 62 65 71 20 20 20 20  20 20 20 45 6e 76 6c 70  | beq       Envlp|
00003d90  0a 0d 20 20 20 20 20 20  20 20 20 20 74 65 71 20  |..          teq |
00003da0  20 20 20 20 20 20 72 30  2c 20 23 31 36 0a 0d 20  |      r0, #16.. |
00003db0  20 20 20 20 20 20 20 20  20 6d 6f 76 65 71 20 20  |         moveq  |
00003dc0  20 20 20 70 63 2c 20 6c  72 0a 0d 20 20 20 20 20  |   pc, lr..     |
00003dd0  20 20 20 20 20 73 74 72  20 20 20 20 20 20 20 61  |     str       a|
00003de0  33 2c 20 5b 72 35 5d 2c  20 23 34 0a 0d 45 6e 76  |3, [r5], #4..Env|
00003df0  32 3a 20 20 20 20 20 62  20 20 20 20 20 20 20 20  |2:     b        |
00003e00  20 45 6e 76 6c 70 0a 0d  0a 0d 55 50 43 48 61 6e  | Envlp....UPCHan|
00003e10  64 3a 20 20 73 74 6d 69  61 20 20 20 20 20 72 31  |d:  stmia     r1|
00003e20  32 2c 20 7b 72 30 2d 72  35 2c 20 6c 72 7d 0a 0d  |2, {r0-r5, lr}..|
00003e30  20 20 20 20 20 20 20 20  20 20 74 73 74 20 20 20  |          tst   |
00003e40  20 20 20 20 72 30 2c 20  23 32 35 36 20 20 20 20  |    r0, #256    |
00003e50  20 20 20 20 20 20 20 20  3b 20 52 31 32 20 70 6f  |        ; R12 po|
00003e60  69 6e 74 73 20 74 6f 20  37 20 77 6f 72 64 20 62  |ints to 7 word b|
00003e70  6c 6f 63 6b 0a 0d 20 20  20 20 20 20 20 20 20 20  |lock..          |
00003e80  6c 64 72 65 71 20 20 20  20 20 72 30 2c 20 5b 70  |ldreq     r0, [p|
00003e90  63 2c 20 23 45 6e 76 66  6c 61 67 2d 24 2d 70 63  |c, #Envflag-$-pc|
00003ea0  5d 0a 0d 20 20 20 20 20  20 20 20 20 20 74 65 71  |]..          teq|
00003eb0  65 71 20 20 20 20 20 72  30 2c 20 23 31 0a 0d 20  |eq     r0, #1.. |
00003ec0  20 20 20 20 20 20 20 20  20 62 6e 65 20 20 20 20  |         bne    |
00003ed0  20 20 20 55 70 45 78 0a  0d 20 20 20 20 20 20 20  |   UpEx..       |
00003ee0  20 20 20 62 6c 20 20 20  20 20 20 20 20 4f 6c 64  |   bl        Old|
00003ef0  45 6e 76 0a 0d 20 20 20  20 20 20 20 20 20 20 6d  |Env..          m|
00003f00  6f 76 20 20 20 20 20 20  20 72 30 2c 20 23 30 0a  |ov       r0, #0.|
00003f10  0d 20 20 20 20 20 20 20  20 20 20 73 74 72 20 20  |.          str  |
00003f20  20 20 20 20 20 72 30 2c  20 5b 70 63 2c 20 23 45  |     r0, [pc, #E|
00003f30  6e 76 66 6c 61 67 2d 24  2d 70 63 5d 0a 0d 55 70  |nvflag-$-pc]..Up|
00003f40  45 78 3a 20 20 20 20 20  6c 64 6d 69 61 20 20 20  |Ex:     ldmia   |
00003f50  20 20 72 31 32 2c 20 7b  72 30 2d 72 35 2c 20 6c  |  r12, {r0-r5, l|
00003f60  72 7d 0a 0d 20 20 20 20  20 20 20 20 20 20 6d 6f  |r}..          mo|
00003f70  76 73 20 20 20 20 20 20  70 63 2c 20 6c 72 0a 0d  |vs      pc, lr..|
00003f80  0a 0d 45 78 69 74 68 61  6e 3a 20 20 62 6c 20 20  |..Exithan:  bl  |
00003f90  20 20 20 20 20 20 4f 6c  64 45 6e 76 0a 0d 20 20  |      OldEnv..  |
00003fa0  20 20 20 20 20 20 20 20  73 77 69 20 20 20 20 20  |        swi     |
00003fb0  20 20 4f 53 5f 45 78 69  74 0a 0d 0a 0d 20 20 20  |  OS_Exit....   |
00003fc0  20 20 20 20 20 20 20 2e  6c 6f 6e 67 20 20 20 20  |       .long    |
00003fd0  20 2d 31 0a 0d 20 20 20  20 20 20 20 20 20 20 2e  | -1..          .|
00003fe0  61 73 63 69 63 20 20 20  20 22 4f 53 43 4c 49 20  |ascic    "OSCLI |
00003ff0  20 22 0a 0d 4f 53 43 4c  49 3a 20 20 20 20 6d 6f  | "..OSCLI:    mo|
00004000  76 20 20 20 20 20 20 20  72 30 2c 20 61 31 2c 20  |v       r0, a1, |
00004010  6c 73 6c 20 23 32 0a 0d  20 20 20 20 20 20 20 20  |lsl #2..        |
00004020  20 20 6c 64 72 62 20 20  20 20 20 20 61 31 2c 20  |  ldrb      a1, |
00004030  5b 72 30 5d 2c 20 23 31  20 20 20 20 20 20 20 20  |[r0], #1        |
00004040  3b 20 73 74 72 69 6e 67  20 62 79 74 65 20 62 61  |; string byte ba|
00004050  73 65 2c 20 6c 65 6e 67  74 68 0a 0d 20 20 20 20  |se, length..    |
00004060  20 20 20 20 20 20 61 64  64 20 20 20 20 20 20 20  |      add       |
00004070  61 32 2c 20 61 31 2c 20  72 30 20 20 20 20 20 20  |a2, a1, r0      |
00004080  20 20 20 20 3b 20 73 74  72 69 6e 67 20 62 79 74  |    ; string byt|
00004090  65 20 74 65 72 6d 69 6e  61 74 6f 72 20 70 6f 73  |e terminator pos|
000040a0  69 74 69 6f 6e 0a 0d 20  20 20 20 20 20 20 20 20  |ition..         |
000040b0  20 6c 64 72 62 20 20 20  20 20 20 72 33 2c 20 5b  | ldrb      r3, [|
000040c0  61 32 5d 0a 0d 20 20 20  20 20 20 20 20 20 20 6d  |a2]..          m|
000040d0  6f 76 20 20 20 20 20 20  20 61 34 2c 20 23 30 0a  |ov       a4, #0.|
000040e0  0d 20 20 20 20 20 20 20  20 20 20 73 74 72 62 20  |.          strb |
000040f0  20 20 20 20 20 61 34 2c  20 5b 61 32 5d 0a 0d 20  |     a4, [a2].. |
00004100  20 20 20 20 20 20 20 20  20 6c 64 72 20 20 20 20  |         ldr    |
00004110  20 20 20 61 31 2c 20 5b  70 63 2c 20 23 45 6e 76  |   a1, [pc, #Env|
00004120  66 6c 61 67 2d 24 2d 70  63 5d 0a 0d 20 20 20 20  |flag-$-pc]..    |
00004130  20 20 20 20 20 20 63 6d  70 20 20 20 20 20 20 20  |      cmp       |
00004140  61 31 2c 20 23 30 0a 0d  20 20 20 20 20 20 20 20  |a1, #0..        |
00004150  20 20 62 6e 65 20 20 20  20 20 20 20 53 61 76 45  |  bne       SavE|
00004160  6e 76 0a 0d 20 20 20 20  20 20 20 20 20 20 73 77  |nv..          sw|
00004170  69 20 20 20 20 20 20 20  4f 53 5f 43 4c 49 2b 58  |i       OS_CLI+X|
00004180  4f 53 0a 0d 20 20 20 20  20 20 20 20 20 20 73 74  |OS..          st|
00004190  72 62 20 20 20 20 20 20  61 33 2c 20 5b 61 32 5d  |rb      a3, [a2]|
000041a0  0a 0d 20 20 20 20 20 20  20 20 20 20 6d 6f 76 20  |..          mov |
000041b0  20 20 20 20 20 20 61 31  2c 20 23 30 0a 0d 20 20  |      a1, #0..  |
000041c0  20 20 20 20 20 20 20 20  6d 76 6e 76 73 20 20 20  |        mvnvs   |
000041d0  20 20 61 31 2c 20 23 30  0a 0d 20 20 20 20 20 20  |  a1, #0..      |
000041e0  20 20 20 20 6d 6f 76 20  20 20 20 20 20 20 70 63  |    mov       pc|
000041f0  2c 20 6c 72 0a 0d 53 61  76 45 6e 76 3a 20 20 20  |, lr..SavEnv:   |
00004200  73 74 6d 65 61 20 20 20  20 20 72 74 73 21 2c 20  |stmea     rts!, |
00004210  7b 6c 72 7d 0a 0d 20 20  20 20 20 20 20 20 20 20  |{lr}..          |
00004220  73 74 6d 65 61 20 20 20  20 20 72 74 73 21 2c 20  |stmea     rts!, |
00004230  7b 61 32 2c 20 61 33 7d  0a 0d 20 20 20 20 20 20  |{a2, a3}..      |
00004240  20 20 20 20 62 6c 20 20  20 20 20 20 20 20 4f 6c  |    bl        Ol|
00004250  64 45 6e 76 0a 0d 20 20  20 20 20 20 20 20 20 20  |dEnv..          |
00004260  73 77 69 20 20 20 20 20  20 20 4f 53 5f 43 4c 49  |swi       OS_CLI|
00004270  2b 58 4f 53 0a 0d 20 20  20 20 20 20 20 20 20 20  |+XOS..          |
00004280  6d 6f 76 20 20 20 20 20  20 20 61 31 2c 20 23 30  |mov       a1, #0|
00004290  0a 0d 20 20 20 20 20 20  20 20 20 20 6d 76 6e 76  |..          mvnv|
000042a0  73 20 20 20 20 20 61 31  2c 20 23 30 0a 0d 53 74  |s     a1, #0..St|
000042b0  45 6e 76 3a 20 20 20 20  62 6c 20 20 20 20 20 20  |Env:    bl      |
000042c0  20 20 4e 65 77 45 6e 76  0a 0d 20 20 20 20 20 20  |  NewEnv..      |
000042d0  20 20 20 20 6c 64 6d 65  61 20 20 20 20 20 72 74  |    ldmea     rt|
000042e0  73 21 2c 20 7b 61 32 2c  20 61 33 7d 0a 0d 20 20  |s!, {a2, a3}..  |
000042f0  20 20 20 20 20 20 20 20  73 74 72 62 20 20 20 20  |        strb    |
00004300  20 20 61 33 2c 20 5b 61  32 5d 0a 0d 20 20 20 20  |  a3, [a2]..    |
00004310  20 20 20 20 20 20 6c 64  6d 65 61 20 20 20 20 20  |      ldmea     |
00004320  72 74 73 21 2c 20 7b 70  63 7d 0a 0d 0a 0d 20 20  |rts!, {pc}....  |
00004330  20 20 20 20 20 20 20 20  2e 6c 6f 6e 67 20 20 20  |        .long   |
00004340  20 20 2d 31 20 20 20 20  20 20 20 20 20 20 20 20  |  -1            |
00004350  20 20 20 20 20 20 3b 20  6e 65 65 64 73 20 61 20  |      ; needs a |
00004360  67 6c 6f 62 61 6c 0a 0d  20 20 20 20 20 20 20 20  |global..        |
00004370  20 20 2e 61 73 63 69 63  20 20 20 20 22 52 65 73  |  .ascic    "Res|
00004380  74 45 6e 76 22 0a 0d 52  65 73 65 74 45 6e 76 3a  |tEnv"..ResetEnv:|
00004390  20 6c 64 72 20 20 20 20  20 20 20 61 31 2c 20 5b  | ldr       a1, [|
000043a0  70 63 2c 20 23 45 6e 76  66 6c 61 67 2d 24 2d 70  |pc, #Envflag-$-p|
000043b0  63 5d 0a 0d 20 20 20 20  20 20 20 20 20 20 63 6d  |c]..          cm|
000043c0  70 20 20 20 20 20 20 20  61 31 2c 20 23 31 0a 0d  |p       a1, #1..|
000043d0  20 20 20 20 20 20 20 20  20 20 6d 6f 76 65 71 20  |          moveq |
000043e0  20 20 20 20 70 63 2c 20  6c 72 0a 0d 20 20 20 20  |    pc, lr..    |
000043f0  20 20 20 20 20 20 6d 6f  76 20 20 20 20 20 20 20  |      mov       |
00004400  72 36 2c 20 6c 72 0a 0d  20 20 20 20 20 20 20 20  |r6, lr..        |
00004410  20 20 62 20 20 20 20 20  20 20 20 20 53 74 45 6e  |  b         StEn|
00004420  76 0a 0d 0a 0d 20 20 20  20 20 20 20 20 20 20 2e  |v....          .|
00004430  6c 6f 6e 67 20 20 20 20  20 2d 31 0a 0d 20 20 20  |long     -1..   |
00004440  20 20 20 20 20 20 20 2e  61 73 63 69 63 20 20 20  |       .ascic   |
00004450  20 22 43 61 6c 6c 20 20  20 22 0a 0d 43 61 6c 6c  | "Call   "..Call|
00004460  3a 20 20 20 20 20 6d 6f  76 20 20 20 20 20 20 20  |:     mov       |
00004470  70 63 2c 20 72 62 0a 0d  52 67 62 73 3a 20 20 20  |pc, rb..Rgbs:   |
00004480  20 20 62 20 20 20 20 20  20 20 20 20 44 65 70 61  |  b         Depa|
00004490  72 74 0a 0d 4d 70 79 3a  20 20 20 20 20 20 73 74  |rt..Mpy:      st|
000044a0  6d 66 64 20 20 20 20 20  72 67 2c 20 7b 61 34 2c  |mfd     rg, {a4,|
000044b0  20 6c 72 7d 20 20 20 20  20 20 20 20 3b 20 6d 70  | lr}        ; mp|
000044c0  79 0a 0d 20 20 20 20 20  20 20 20 20 20 6d 6f 76  |y..          mov|
000044d0  20 20 20 20 20 20 20 61  34 2c 20 23 30 0a 0d 20  |       a4, #0.. |
000044e0  20 20 20 20 20 20 20 20  20 6d 6f 76 73 20 20 20  |         movs   |
000044f0  20 20 20 6c 72 2c 20 61  32 0a 0d 20 20 20 20 20  |   lr, a2..     |
00004500  20 20 20 20 20 72 73 62  6d 69 20 20 20 20 20 6c  |     rsbmi     l|
00004510  72 2c 20 6c 72 2c 20 23  30 0a 0d 4d 70 79 6c 70  |r, lr, #0..Mpylp|
00004520  3a 20 20 20 20 6d 6f 76  73 20 20 20 20 20 20 6c  |:    movs      l|
00004530  72 2c 20 6c 72 2c 20 6c  73 72 20 23 31 0a 0d 20  |r, lr, lsr #1.. |
00004540  20 20 20 20 20 20 20 20  20 61 64 64 63 73 20 20  |         addcs  |
00004550  20 20 20 61 34 2c 20 61  34 2c 20 61 31 0a 0d 20  |   a4, a4, a1.. |
00004560  20 20 20 20 20 20 20 20  20 6d 6f 76 20 20 20 20  |         mov    |
00004570  20 20 20 61 31 2c 20 61  31 2c 20 6c 73 6c 20 23  |   a1, a1, lsl #|
00004580  31 0a 0d 20 20 20 20 20  20 20 20 20 20 62 6e 65  |1..          bne|
00004590  20 20 20 20 20 20 20 4d  70 79 6c 70 0a 0d 20 20  |       Mpylp..  |
000045a0  20 20 20 20 20 20 20 20  6d 6f 76 20 20 20 20 20  |        mov     |
000045b0  20 20 61 31 2c 20 61 34  0a 0d 20 20 20 20 20 20  |  a1, a4..      |
000045c0  20 20 20 20 74 65 71 73  20 20 20 20 20 20 61 32  |    teqs      a2|
000045d0  2c 20 23 30 0a 0d 20 20  20 20 20 20 20 20 20 20  |, #0..          |
000045e0  72 73 62 6d 69 20 20 20  20 20 61 31 2c 20 61 31  |rsbmi     a1, a1|
000045f0  2c 20 23 30 0a 0d 20 20  20 20 20 20 20 20 20 20  |, #0..          |
00004600  6c 64 6d 65 61 20 20 20  20 20 72 67 2c 20 7b 61  |ldmea     rg, {a|
00004610  34 2c 70 63 7d 5e 0a 0d  0a 0d 44 69 76 3a 20 20  |4,pc}^....Div:  |
00004620  20 20 20 20 73 74 6d 66  64 20 20 20 20 20 72 67  |    stmfd     rg|
00004630  2c 20 7b 61 33 2d 72 35  2c 6c 72 7d 20 20 20 20  |, {a3-r5,lr}    |
00004640  20 20 3b 20 61 31 2f 61  32 2c 20 61 31 20 72 65  |  ; a1/a2, a1 re|
00004650  6d 20 61 32 0a 0d 20 20  20 20 20 20 20 20 20 20  |m a2..          |
00004660  6d 6f 76 73 20 20 20 20  20 20 6c 72 2c 20 61 31  |movs      lr, a1|
00004670  0a 0d 20 20 20 20 20 20  20 20 20 20 72 73 62 6d  |..          rsbm|
00004680  69 20 20 20 20 20 6c 72  2c 20 6c 72 2c 20 23 30  |i     lr, lr, #0|
00004690  0a 0d 20 20 20 20 20 20  20 20 20 20 6d 6f 76 73  |..          movs|
000046a0  20 20 20 20 20 20 61 33  2c 20 61 32 0a 0d 20 20  |      a3, a2..  |
000046b0  20 20 20 20 20 20 20 20  62 65 71 20 20 20 20 20  |        beq     |
000046c0  20 20 44 69 76 5a 65 72  6f 20 20 20 20 20 20 20  |  DivZero       |
000046d0  20 20 20 20 20 20 3b 20  44 69 76 69 64 65 20 62  |      ; Divide b|
000046e0  79 20 7a 65 72 6f 20 66  61 75 6c 74 0a 0d 20 20  |y zero fault..  |
000046f0  20 20 20 20 20 20 20 20  72 73 62 6d 69 20 20 20  |        rsbmi   |
00004700  20 20 61 33 2c 20 61 33  2c 20 23 30 0a 0d 20 20  |  a3, a3, #0..  |
00004710  20 20 20 20 20 20 20 20  6d 6f 76 20 20 20 20 20  |        mov     |
00004720  20 20 61 34 2c 20 23 30  0a 0d 20 20 20 20 20 20  |  a4, #0..      |
00004730  20 20 20 20 6d 6f 76 20  20 20 20 20 20 20 72 35  |    mov       r5|
00004740  2c 20 23 31 0a 0d 44 69  76 6c 31 3a 20 20 20 20  |, #1..Divl1:    |
00004750  63 6d 70 20 20 20 20 20  20 20 61 33 2c 20 23 30  |cmp       a3, #0|
00004760  78 38 30 30 30 30 30 30  30 0a 0d 20 20 20 20 20  |x80000000..     |
00004770  20 20 20 20 20 63 6d 70  63 63 20 20 20 20 20 61  |     cmpcc     a|
00004780  33 2c 20 6c 72 0a 0d 20  20 20 20 20 20 20 20 20  |3, lr..         |
00004790  20 6d 6f 76 63 63 20 20  20 20 20 61 33 2c 20 61  | movcc     a3, a|
000047a0  33 2c 20 6c 73 6c 20 23  31 0a 0d 20 20 20 20 20  |3, lsl #1..     |
000047b0  20 20 20 20 20 6d 6f 76  63 63 20 20 20 20 20 72  |     movcc     r|
000047c0  35 2c 20 72 35 2c 20 6c  73 6c 20 23 31 0a 0d 20  |5, r5, lsl #1.. |
000047d0  20 20 20 20 20 20 20 20  20 62 63 63 20 20 20 20  |         bcc    |
000047e0  20 20 20 44 69 76 6c 31  0a 0d 44 69 76 6c 32 3a  |   Divl1..Divl2:|
000047f0  20 20 20 20 63 6d 70 20  20 20 20 20 20 20 61 33  |    cmp       a3|
00004800  2c 20 6c 72 0a 0d 20 20  20 20 20 20 20 20 20 20  |, lr..          |
00004810  61 64 64 6c 73 20 20 20  20 20 61 34 2c 20 61 34  |addls     a4, a4|
00004820  2c 20 72 35 0a 0d 20 20  20 20 20 20 20 20 20 20  |, r5..          |
00004830  73 75 62 6c 73 20 20 20  20 20 6c 72 2c 20 6c 72  |subls     lr, lr|
00004840  2c 20 61 33 0a 0d 20 20  20 20 20 20 20 20 20 20  |, a3..          |
00004850  6d 6f 76 73 20 20 20 20  20 20 72 35 2c 20 72 35  |movs      r5, r5|
00004860  2c 20 6c 73 72 20 23 31  0a 0d 20 20 20 20 20 20  |, lsr #1..      |
00004870  20 20 20 20 6d 6f 76 6e  65 20 20 20 20 20 61 33  |    movne     a3|
00004880  2c 20 61 33 2c 20 6c 73  72 20 23 31 0a 0d 20 20  |, a3, lsr #1..  |
00004890  20 20 20 20 20 20 20 20  62 6e 65 20 20 20 20 20  |        bne     |
000048a0  20 20 44 69 76 6c 32 0a  0d 20 20 20 20 20 20 20  |  Divl2..       |
000048b0  20 20 20 74 65 71 73 20  20 20 20 20 20 61 31 2c  |   teqs      a1,|
000048c0  20 61 32 0a 0d 20 20 20  20 20 20 20 20 20 20 72  | a2..          r|
000048d0  73 62 6d 69 20 20 20 20  20 61 34 2c 20 61 34 2c  |sbmi     a4, a4,|
000048e0  20 23 30 0a 0d 20 20 20  20 20 20 20 20 20 20 63  | #0..          c|
000048f0  6d 70 20 20 20 20 20 20  20 61 31 2c 20 23 30 0a  |mp       a1, #0.|
00004900  0d 20 20 20 20 20 20 20  20 20 20 6d 6f 76 20 20  |.          mov  |
00004910  20 20 20 20 20 61 32 2c  20 6c 72 0a 0d 20 20 20  |     a2, lr..   |
00004920  20 20 20 20 20 20 20 72  73 62 6c 74 20 20 20 20  |       rsblt    |
00004930  20 61 32 2c 20 61 32 2c  20 23 30 0a 0d 20 20 20  | a2, a2, #0..   |
00004940  20 20 20 20 20 20 20 6d  6f 76 20 20 20 20 20 20  |       mov      |
00004950  20 61 31 2c 20 61 34 0a  0d 20 20 20 20 20 20 20  | a1, a4..       |
00004960  20 20 20 6c 64 6d 65 61  20 20 20 20 20 72 67 2c  |   ldmea     rg,|
00004970  20 7b 61 33 2d 72 35 2c  20 70 63 7d 5e 20 20 20  | {a3-r5, pc}^   |
00004980  3b 20 61 31 2c 20 61 32  20 3d 20 61 31 2f 61 32  |; a1, a2 = a1/a2|
00004990  2c 20 61 31 20 72 65 6d  20 61 32 0a 0d 0a 0d 20  |, a1 rem a2.... |
000049a0  20 20 20 20 20 20 20 20  20 6d 6f 76 6e 76 20 20  |         movnv  |
000049b0  20 20 20 72 30 2c 72 30  0a 0d 20 20 20 20 20 20  |   r0,r0..      |
000049c0  20 20 20 20 73 74 6d 65  61 20 20 20 20 20 72 74  |    stmea     rt|
000049d0  73 21 2c 20 7b 72 62 2c  20 66 70 2c 20 73 70 2c  |s!, {rb, fp, sp,|
000049e0  20 6c 72 7d 0a 0d 20 20  20 20 20 20 20 20 20 20  | lr}..          |
000049f0  73 75 62 20 20 20 20 20  20 20 66 70 2c 20 72 74  |sub       fp, rt|
00004a00  73 2c 20 23 31 36 0a 0d  20 20 20 20 20 20 20 20  |s, #16..        |
00004a10  20 20 6c 64 72 20 20 20  20 20 20 20 72 6c 2c 20  |  ldr       rl, |
00004a20  5b 72 62 2c 20 23 2d 34  5d 0a 0d 20 20 20 20 20  |[rb, #-4]..     |
00004a30  20 20 20 20 20 6c 64 72  20 20 20 20 20 20 20 72  |     ldr       r|
00004a40  30 2c 20 5b 72 62 2c 20  23 34 5d 0a 0d 20 20 20  |0, [rb, #4]..   |
00004a50  20 20 20 20 20 20 20 61  64 64 20 20 20 20 20 20  |       add      |
00004a60  20 72 30 2c 20 72 30 2c  20 23 31 0a 0d 20 20 20  | r0, r0, #1..   |
00004a70  20 20 20 20 20 20 20 73  74 72 20 20 20 20 20 20  |       str      |
00004a80  20 72 30 2c 20 5b 72 62  2c 20 23 34 5d 0a 0d 20  | r0, [rb, #4].. |
00004a90  20 20 20 20 20 20 20 20  20 6c 64 72 20 20 20 20  |         ldr    |
00004aa0  20 20 20 70 63 2c 20 5b  72 62 2c 20 23 38 5d 20  |   pc, [rb, #8] |
00004ab0  20 20 20 20 20 20 20 3b  20 3f 3f 3f 3f 3f 3f 3f  |       ; ???????|
00004ac0  3f 3f 3f 3f 3f 0a 0d 0a  0d 20 20 20 20 20 20 20  |?????....       |
00004ad0  20 20 20 61 64 64 20 20  20 20 20 20 20 6c 72 2c  |   add       lr,|
00004ae0  20 6c 72 2c 20 23 34 0a  0d 20 20 20 20 20 20 20  | lr, #4..       |
00004af0  20 20 20 73 74 6d 66 64  20 20 20 20 20 72 67 2c  |   stmfd     rg,|
00004b00  20 7b 72 30 2c 20 6c 72  7d 0a 0d 20 20 20 20 20  | {r0, lr}..     |
00004b10  20 20 20 20 20 62 69 63  20 20 20 20 20 20 20 6c  |     bic       l|
00004b20  72 2c 20 6c 72 2c 20 23  30 78 66 63 30 30 30 30  |r, lr, #0xfc0000|
00004b30  30 30 0a 0d 20 20 20 20  20 20 20 20 20 20 6c 64  |00..          ld|
00004b40  72 20 20 20 20 20 20 20  72 30 2c 20 5b 72 35 5d  |r       r0, [r5]|
00004b50  0a 0d 20 20 20 20 20 20  20 20 20 20 6c 64 6d 65  |..          ldme|
00004b60  61 20 20 20 20 20 72 67  2c 20 7b 72 30 2c 20 70  |a     rg, {r0, p|
00004b70  63 7d 5e 0a 0d 44 69 76  5a 65 72 6f 3a 20 20 6d  |c}^..DivZero:  m|
00004b80  6f 76 20 20 20 20 20 20  20 61 31 2c 20 23 31 32  |ov       a1, #12|
00004b90  0a 0d 20 20 20 20 20 20  20 20 20 20 73 74 72 20  |..          str |
00004ba0  20 20 20 20 20 20 61 31  2c 20 5b 72 67 2c 20 23  |      a1, [rg, #|
00004bb0  52 65 74 75 72 6e 43 6f  64 65 5d 0a 0d 20 20 20  |ReturnCode]..   |
00004bc0  20 20 20 20 20 20 20 41  44 52 20 20 20 20 20 20  |       ADR      |
00004bd0  20 61 31 2c 20 44 69 76  7a 0a 0d 20 20 20 20 20  | a1, Divz..     |
00004be0  20 20 20 20 20 62 20 20  20 20 20 20 20 20 20 46  |     b         F|
00004bf0  61 75 6c 74 73 20 20 20  20 20 20 20 3b 20 69 6e  |aults       ; in|
00004c00  20 52 65 73 75 6d 65 43  0a 0d 44 69 76 7a 3a 20  | ResumeC..Divz: |
00004c10  20 20 20 20 2e 61 73 63  69 63 20 20 20 20 22 44  |    .ascic    "D|
00004c20  69 76 69 73 69 6f 6e 20  62 79 20 7a 65 72 6f 5c  |ivision by zero\|
00004c30  30 22 0a 0d 20 20 20 20  20 20 20 20 20 20 2e 61  |0"..          .a|
00004c40  6c 69 67 6e 0a 0d 0a 0d  20 20 20 20 20 20 20 20  |lign....        |
00004c50  20 20 2e 6c 6f 6e 67 20  20 20 20 20 2d 31 0a 0d  |  .long     -1..|
00004c60  20 20 20 20 20 20 20 20  20 20 2e 61 73 63 69 63  |          .ascic|
00004c70  20 20 20 20 22 4d 75 6c  64 69 76 20 22 0a 0d 4d  |    "Muldiv "..M|
00004c80  75 6c 64 69 76 3a 20 20  20 73 74 6d 65 61 20 20  |uldiv:   stmea  |
00004c90  20 20 20 72 74 73 21 2c  20 7b 72 62 2c 20 72 66  |   rts!, {rb, rf|
00004ca0  70 2c 20 72 6c 2c 20 6c  72 20 7d 0a 0d 20 20 20  |p, rl, lr }..   |
00004cb0  20 20 20 20 20 20 20 73  75 62 20 20 20 20 20 20  |       sub      |
00004cc0  20 72 66 70 2c 20 72 74  73 2c 20 23 31 36 0a 0d  | rfp, rts, #16..|
00004cd0  20 20 20 20 20 20 20 20  20 20 73 74 6d 65 61 20  |          stmea |
00004ce0  20 20 20 20 72 74 73 21  2c 20 7b 61 31 2c 20 61  |    rts!, {a1, a|
00004cf0  32 2c 20 61 33 7d 0a 0d  20 20 20 20 20 20 20 20  |2, a3}..        |
00004d00  20 20 63 6d 70 20 20 20  20 20 20 20 61 32 2c 20  |  cmp       a2, |
00004d10  23 30 0a 0d 20 20 20 20  20 20 20 20 20 20 62 65  |#0..          be|
00004d20  71 20 20 20 20 20 20 20  44 69 76 7a 0a 0d 20 20  |q       Divz..  |
00004d30  20 20 20 20 20 20 20 20  63 6d 70 20 20 20 20 20  |        cmp     |
00004d40  20 20 61 31 2c 20 23 30  0a 0d 20 20 20 20 20 20  |  a1, #0..      |
00004d50  20 20 20 20 72 73 62 6c  74 20 20 20 20 20 61 31  |    rsblt     a1|
00004d60  2c 20 61 31 2c 20 23 30  0a 0d 20 20 20 20 20 20  |, a1, #0..      |
00004d70  20 20 20 20 63 6d 70 20  20 20 20 20 20 20 61 32  |    cmp       a2|
00004d80  2c 20 23 30 0a 0d 20 20  20 20 20 20 20 20 20 20  |, #0..          |
00004d90  72 73 62 6c 74 20 20 20  20 20 61 32 2c 20 61 32  |rsblt     a2, a2|
00004da0  2c 20 23 30 20 20 20 20  20 20 20 20 20 20 3b 20  |, #0          ; |
00004db0  61 31 2c 20 61 32 20 3a  3d 20 6d 6f 64 20 61 31  |a1, a2 := mod a1|
00004dc0  2c 20 6d 6f 64 20 61 32  0a 0d 20 20 20 20 20 20  |, mod a2..      |
00004dd0  20 20 20 20 6d 6f 76 20  20 20 20 20 20 20 72 30  |    mov       r0|
00004de0  2c 20 61 31 2c 20 6c 73  72 20 23 31 36 20 20 20  |, a1, lsr #16   |
00004df0  20 20 3b 20 61 31 20 68  69 0a 0d 20 20 20 20 20  |  ; a1 hi..     |
00004e00  20 20 20 20 20 6d 6f 76  20 20 20 20 20 20 20 61  |     mov       a|
00004e10  34 2c 20 61 32 2c 20 6c  73 72 20 23 31 36 20 20  |4, a2, lsr #16  |
00004e20  20 20 20 3b 20 61 32 20  68 69 0a 0d 20 20 20 20  |   ; a2 hi..    |
00004e30  20 20 20 20 20 20 62 69  63 20 20 20 20 20 20 20  |      bic       |
00004e40  61 31 2c 20 61 31 2c 20  72 30 2c 20 6c 73 6c 20  |a1, a1, r0, lsl |
00004e50  23 31 36 20 3b 20 61 31  20 6c 6f 0a 0d 20 20 20  |#16 ; a1 lo..   |
00004e60  20 20 20 20 20 20 20 62  69 63 20 20 20 20 20 20  |       bic      |
00004e70  20 61 32 2c 20 61 32 2c  20 61 34 2c 20 6c 73 6c  | a2, a2, a4, lsl|
00004e80  20 23 31 36 20 3b 20 61  32 20 6c 6f 0a 0d 20 20  | #16 ; a2 lo..  |
00004e90  20 20 20 20 20 20 20 20  6d 75 6c 20 20 20 20 20  |        mul     |
00004ea0  20 20 61 33 2c 20 61 31  2c 20 61 32 20 20 20 20  |  a3, a1, a2    |
00004eb0  20 20 20 20 20 20 3b 20  62 69 74 73 20 30 2d 31  |      ; bits 0-1|
00004ec0  35 2b 70 61 72 74 20 31  36 2d 33 31 0a 0d 20 20  |5+part 16-31..  |
00004ed0  20 20 20 20 20 20 20 20  6d 75 6c 20 20 20 20 20  |        mul     |
00004ee0  20 20 61 32 2c 20 72 30  2c 20 61 32 20 20 20 20  |  a2, r0, a2    |
00004ef0  20 20 20 20 20 20 3b 20  70 61 72 74 20 62 69 74  |      ; part bit|
00004f00  73 20 31 36 2d 34 37 0a  0d 20 20 20 20 20 20 20  |s 16-47..       |
00004f10  20 20 20 6d 75 6c 20 20  20 20 20 20 20 61 31 2c  |   mul       a1,|
00004f20  20 61 34 2c 20 61 31 20  20 20 20 20 20 20 20 20  | a4, a1         |
00004f30  20 3b 20 20 22 22 20 20  20 20 20 20 20 20 22 22  | ;  ""        ""|
00004f40  0a 0d 20 20 20 20 20 20  20 20 20 20 6d 75 6c 20  |..          mul |
00004f50  20 20 20 20 20 20 61 34  2c 20 72 30 2c 20 61 34  |      a4, r0, a4|
00004f60  20 20 20 20 20 20 20 20  20 20 3b 20 70 61 72 74  |          ; part|
00004f70  20 62 69 74 73 20 33 32  2d 34 37 20 2b 20 62 69  | bits 32-47 + bi|
00004f80  74 73 20 34 38 2d 36 33  0a 0d 20 20 20 20 20 20  |ts 48-63..      |
00004f90  20 20 20 20 61 64 64 73  20 20 20 20 20 20 61 31  |    adds      a1|
00004fa0  2c 20 61 32 2c 20 61 31  0a 0d 20 20 20 20 20 20  |, a2, a1..      |
00004fb0  20 20 20 20 61 64 64 63  73 20 20 20 20 20 61 34  |    addcs     a4|
00004fc0  2c 20 61 34 2c 20 23 30  78 31 30 30 30 30 20 20  |, a4, #0x10000  |
00004fd0  20 20 20 3b 20 63 61 72  72 79 20 66 72 6f 6d 20  |   ; carry from |
00004fe0  6d 69 64 64 6c 65 0a 0d  20 20 20 20 20 20 20 20  |middle..        |
00004ff0  20 20 61 64 64 73 20 20  20 20 20 20 61 33 2c 20  |  adds      a3, |
00005000  61 33 2c 20 61 31 2c 20  6c 73 6c 20 23 31 36 0a  |a3, a1, lsl #16.|
00005010  0d 20 20 20 20 20 20 20  20 20 20 61 64 63 20 20  |.          adc  |
00005020  20 20 20 20 20 61 34 2c  20 61 34 2c 20 61 31 2c  |     a4, a4, a1,|
00005030  20 6c 73 72 20 23 31 36  20 3b 20 72 65 73 75 6c  | lsr #16 ; resul|
00005040  74 20 69 6e 20 61 33 28  6c 6f 29 2d 61 34 28 68  |t in a3(lo)-a4(h|
00005050  69 29 0a 0d 0a 0d 20 20  20 20 20 20 20 20 20 20  |i)....          |
00005060  6c 64 6d 65 61 20 20 20  20 20 72 74 73 2c 20 7b  |ldmea     rts, {|
00005070  72 35 7d 20 20 20 20 20  20 20 20 20 20 20 3b 20  |r5}           ; |
00005080  64 69 76 69 73 6f 72 0a  0d 20 20 20 20 20 20 20  |divisor..       |
00005090  20 20 20 6d 6f 76 20 20  20 20 20 20 20 61 31 2c  |   mov       a1,|
000050a0  20 23 30 20 20 20 20 20  20 20 20 20 20 20 20 20  | #0             |
000050b0  20 3b 20 64 69 76 69 64  65 6e 64 0a 0d 20 20 20  | ; dividend..   |
000050c0  20 20 20 20 20 20 20 6d  6f 76 20 20 20 20 20 20  |       mov      |
000050d0  20 61 32 2c 20 23 30 20  20 20 20 20 20 20 20 20  | a2, #0         |
000050e0  20 20 20 20 20 3b 20 72  65 6d 61 69 6e 64 65 72  |     ; remainder|
000050f0  0a 0d 20 20 20 20 20 20  20 20 20 20 6d 6f 76 20  |..          mov |
00005100  20 20 20 20 20 20 72 30  2c 20 23 36 34 20 20 20  |      r0, #64   |
00005110  20 20 20 20 20 20 20 20  20 20 3b 20 63 6f 75 6e  |          ; coun|
00005120  74 0a 0d 64 69 76 6c 70  31 3a 20 20 20 73 75 62  |t..divlp1:   sub|
00005130  73 20 20 20 20 20 20 72  30 2c 20 72 30 2c 20 23  |s      r0, r0, #|
00005140  31 0a 0d 20 20 20 20 20  20 20 20 20 20 62 65 71  |1..          beq|
00005150  20 20 20 20 20 20 20 44  69 76 44 6f 6e 65 0a 0d  |       DivDone..|
00005160  20 20 20 20 20 20 20 20  20 20 61 64 64 73 20 20  |          adds  |
00005170  20 20 20 20 61 33 2c 20  61 33 2c 20 61 33 0a 0d  |    a3, a3, a3..|
00005180  20 20 20 20 20 20 20 20  20 20 61 64 63 73 20 20  |          adcs  |
00005190  20 20 20 20 61 34 2c 20  61 34 2c 20 61 34 0a 0d  |    a4, a4, a4..|
000051a0  20 20 20 20 20 20 20 20  20 20 62 70 6c 20 20 20  |          bpl   |
000051b0  20 20 20 20 64 69 76 6c  70 31 20 20 20 20 20 20  |    divlp1      |
000051c0  20 20 20 20 20 20 20 20  3b 20 61 34 20 62 69 74  |        ; a4 bit|
000051d0  20 33 31 20 6e 6f 77 20  73 65 74 0a 0d 64 69 76  | 31 now set..div|
000051e0  6c 70 32 3a 20 20 20 61  64 64 73 20 20 20 20 20  |lp2:   adds     |
000051f0  20 61 33 2c 20 61 33 2c  20 61 33 0a 0d 20 20 20  | a3, a3, a3..   |
00005200  20 20 20 20 20 20 20 61  64 63 73 20 20 20 20 20  |       adcs     |
00005210  20 61 34 2c 20 61 34 2c  20 61 34 0a 0d 20 20 20  | a4, a4, a4..   |
00005220  20 20 20 20 20 20 20 61  64 63 20 20 20 20 20 20  |       adc      |
00005230  20 61 32 2c 20 61 32 2c  20 61 32 20 20 20 20 20  | a2, a2, a2     |
00005240  20 20 20 20 20 3b 20 72  65 6d 20 3a 3d 20 52 65  |     ; rem := Re|
00005250  6d 2a 32 2b 43 61 72 72  79 0a 0d 20 20 20 20 20  |m*2+Carry..     |
00005260  20 20 20 20 20 63 6d 70  20 20 20 20 20 20 20 61  |     cmp       a|
00005270  32 2c 20 72 35 0a 0d 20  20 20 20 20 20 20 20 20  |2, r5..         |
00005280  20 73 75 62 63 73 20 20  20 20 20 61 32 2c 20 61  | subcs     a2, a|
00005290  32 2c 20 72 35 20 20 20  20 20 20 20 20 20 20 3b  |2, r5          ;|
000052a0  20 72 65 6d 20 2d 3a 3d  20 64 69 76 69 73 6f 72  | rem -:= divisor|
000052b0  0a 0d 20 20 20 20 20 20  20 20 20 20 61 64 63 73  |..          adcs|
000052c0  20 20 20 20 20 20 20 61  31 2c 20 61 31 2c 20 61  |       a1, a1, a|
000052d0  31 20 20 20 20 20 20 20  20 20 3b 20 64 69 76 20  |1         ; div |
000052e0  3a 3d 20 64 69 76 2a 32  2b 43 61 72 72 79 0a 0d  |:= div*2+Carry..|
000052f0  20 20 20 20 20 20 20 20  20 20 62 63 73 20 20 20  |          bcs   |
00005300  20 20 20 20 54 6f 6f 62  69 67 0a 0d 64 69 76 73  |    Toobig..divs|
00005310  6d 3a 20 20 20 20 73 75  62 73 20 20 20 20 20 20  |m:    subs      |
00005320  72 30 2c 20 72 30 2c 20  23 31 0a 0d 20 20 20 20  |r0, r0, #1..    |
00005330  20 20 20 20 20 20 62 6e  65 20 20 20 20 20 20 20  |      bne       |
00005340  64 69 76 6c 70 32 0a 0d  0a 0d 44 69 76 44 6f 6e  |divlp2....DivDon|
00005350  65 3a 20 20 73 74 72 20  20 20 20 20 20 20 61 32  |e:  str       a2|
00005360  2c 20 5b 72 67 2c 20 23  52 65 73 75 6c 74 32 5d  |, [rg, #Result2]|
00005370  0a 0d 20 20 20 20 20 20  20 20 20 20 6c 64 6d 65  |..          ldme|
00005380  61 20 20 20 20 20 72 74  73 21 2c 20 7b 61 33 2d  |a     rts!, {a3-|
00005390  72 35 7d 0a 0d 20 20 20  20 20 20 20 20 20 20 65  |r5}..          e|
000053a0  6f 72 73 20 20 20 20 20  20 61 33 2c 20 61 33 2c  |ors      a3, a3,|
000053b0  20 61 34 0a 0d 20 20 20  20 20 20 20 20 20 20 72  | a4..          r|
000053c0  73 62 6c 74 20 20 20 20  20 61 31 2c 20 61 31 2c  |sblt     a1, a1,|
000053d0  20 23 30 0a 0d 20 20 20  20 20 20 20 20 20 20 65  | #0..          e|
000053e0  6f 72 73 20 20 20 20 20  20 61 33 2c 20 61 34 2c  |ors      a3, a4,|
000053f0  20 72 35 0a 0d 3b 20 20  20 20 20 20 20 20 20 20  | r5..;          |
00005400  72 73 62 6c 74 20 20 20  20 20 61 32 2c 20 61 32  |rsblt     a2, a2|
00005410  2c 20 23 30 0a 0d 20 20  20 20 20 20 20 20 20 20  |, #0..          |
00005420  6c 64 6d 65 61 20 20 20  20 20 72 74 73 21 2c 20  |ldmea     rts!, |
00005430  7b 72 62 2c 20 72 66 70  2c 20 72 6c 2c 20 70 63  |{rb, rfp, rl, pc|
00005440  7d 5e 0a 0d 54 6f 6f 62  69 67 3a 20 20 20 6d 6f  |}^..Toobig:   mo|
00005450  76 20 20 20 20 20 20 20  61 31 2c 20 23 31 35 0a  |v       a1, #15.|
00005460  0d 20 20 20 20 20 20 20  20 20 20 73 74 72 20 20  |.          str  |
00005470  20 20 20 20 20 61 31 2c  20 5b 72 67 2c 20 23 52  |     a1, [rg, #R|
00005480  65 74 75 72 6e 43 6f 64  65 5d 0a 0d 20 20 20 20  |eturnCode]..    |
00005490  20 20 20 20 20 20 41 44  52 20 20 20 20 20 20 20  |      ADR       |
000054a0  61 31 2c 20 6f 66 6c 6f  0a 0d 20 20 20 20 20 20  |a1, oflo..      |
000054b0  20 20 20 20 62 20 20 20  20 20 20 20 20 20 46 61  |    b         Fa|
000054c0  75 6c 74 73 0a 0d 6f 66  6c 6f 3a 20 20 20 20 20  |ults..oflo:     |
000054d0  2e 61 73 63 69 63 20 20  20 20 22 4d 75 6c 64 69  |.ascic    "Muldi|
000054e0  76 20 72 65 73 75 6c 74  20 6f 66 6c 6f 5c 30 22  |v result oflo\0"|
000054f0  0a 0d 0a 0d 20 20 20 20  20 20 20 20 20 20 2e 61  |....          .a|
00005500  6c 69 67 6e 0a 0d 20 20  20 20 20 20 20 20 20 20  |lign..          |
00005510  2e 6c 6f 6e 67 20 20 20  20 20 2d 31 0a 0d 20 20  |.long     -1..  |
00005520  20 20 20 20 20 20 20 20  2e 61 73 63 69 63 20 20  |        .ascic  |
00005530  20 20 22 4f 53 42 79 74  65 20 22 0a 0d 4f 53 42  |  "OSByte "..OSB|
00005540  79 74 65 3a 20 20 20 6d  6f 76 20 20 20 20 20 20  |yte:   mov      |
00005550  20 72 30 2c 20 61 31 0a  0d 20 20 20 20 20 20 20  | r0, a1..       |
00005560  20 20 20 6d 6f 76 20 20  20 20 20 20 20 61 31 2c  |   mov       a1,|
00005570  20 61 32 0a 0d 20 20 20  20 20 20 20 20 20 20 6d  | a2..          m|
00005580  6f 76 20 20 20 20 20 20  20 61 32 2c 20 61 33 0a  |ov       a2, a3.|
00005590  0d 20 20 20 20 20 20 20  20 20 20 73 77 69 20 20  |.          swi  |
000055a0  20 20 20 20 20 4f 53 5f  42 79 74 65 0a 0d 20 20  |     OS_Byte..  |
000055b0  20 20 20 20 20 20 20 20  73 74 72 20 20 20 20 20  |        str     |
000055c0  20 20 61 32 2c 20 5b 72  67 2c 20 23 52 65 73 75  |  a2, [rg, #Resu|
000055d0  6c 74 32 5d 0a 0d 20 20  20 20 20 20 20 20 20 20  |lt2]..          |
000055e0  6d 6f 76 73 20 20 20 20  20 20 70 63 2c 20 6c 72  |movs      pc, lr|
000055f0  0a 0d 0a 0d 20 20 20 20  20 20 20 20 20 20 2e 6c  |....          .l|
00005600  6f 6e 67 20 20 20 20 20  2d 31 0a 0d 20 20 20 20  |ong     -1..    |
00005610  20 20 20 20 20 20 2e 61  73 63 69 63 20 20 20 20  |      .ascic    |
00005620  22 4f 53 57 6f 72 64 20  22 0a 0d 4f 53 57 6f 72  |"OSWord "..OSWor|
00005630  64 3a 20 20 20 61 6e 64  20 20 20 20 20 20 20 72  |d:   and       r|
00005640  30 2c 20 61 31 2c 20 23  30 78 66 66 0a 0d 20 20  |0, a1, #0xff..  |
00005650  20 20 20 20 20 20 20 20  6d 6f 76 20 20 20 20 20  |        mov     |
00005660  20 20 61 31 2c 20 61 32  2c 20 6c 73 6c 20 23 32  |  a1, a2, lsl #2|
00005670  0a 0d 20 20 20 20 20 20  20 20 20 20 73 77 69 20  |..          swi |
00005680  20 20 20 20 20 20 4f 53  5f 57 6f 72 64 0a 0d 20  |      OS_Word.. |
00005690  20 20 20 20 20 20 20 20  20 6d 6f 76 73 20 20 20  |         movs   |
000056a0  20 20 20 70 63 2c 20 6c  72 20 20 20 20 20 20 20  |   pc, lr       |
000056b0  20 20 20 20 20 20 20 3b  20 6e 62 20 69 66 20 70  |       ; nb if p|
000056c0  30 20 3d 20 30 20 4f 53  5f 52 65 61 64 6c 69 6e  |0 = 0 OS_Readlin|
000056d0  65 20 49 53 4e 54 20 43  61 6c 6c 65 64 2e 0a 0d  |e ISNT Called...|
000056e0  0a 0d 20 20 20 20 20 20  20 20 20 20 2e 6c 6f 6e  |..          .lon|
000056f0  67 20 20 20 20 20 2d 31  0a 0d 20 20 20 20 20 20  |g     -1..      |
00005700  20 20 20 20 2e 61 73 63  69 63 20 20 20 20 22 4f  |    .ascic    "O|
00005710  53 41 72 67 73 20 22 0a  0d 4f 53 41 72 67 73 3a  |SArgs "..OSArgs:|
00005720  20 20 20 6d 6f 76 20 20  20 20 20 20 20 72 30 2c  |   mov       r0,|
00005730  20 61 31 0a 0d 20 20 20  20 20 20 20 20 20 20 6d  | a1..          m|
00005740  6f 76 20 20 20 20 20 20  20 61 31 2c 20 61 32 0a  |ov       a1, a2.|
00005750  0d 20 20 20 20 20 20 20  20 20 20 6d 6f 76 20 20  |.          mov  |
00005760  20 20 20 20 20 61 32 2c  20 61 33 0a 0d 20 20 20  |     a2, a3..   |
00005770  20 20 20 20 20 20 20 73  77 69 20 20 20 20 20 20  |       swi      |
00005780  20 4f 53 5f 41 72 67 73  0a 0d 20 20 20 20 20 20  | OS_Args..      |
00005790  20 20 20 20 6d 6f 76 20  20 20 20 20 20 20 61 31  |    mov       a1|
000057a0  2c 20 61 32 0a 0d 20 20  20 20 20 20 20 20 20 20  |, a2..          |
000057b0  73 74 72 20 20 20 20 20  20 20 72 30 2c 20 5b 72  |str       r0, [r|
000057c0  67 2c 20 23 52 65 73 75  6c 74 32 5d 0a 0d 20 20  |g, #Result2]..  |
000057d0  20 20 20 20 20 20 20 20  6d 6f 76 73 20 20 20 20  |        movs    |
000057e0  20 20 70 63 2c 20 6c 72  0a 0d 0a 0d 20 20 20 20  |  pc, lr....    |
000057f0  20 20 20 20 20 20 2e 6c  6f 6e 67 20 20 20 20 20  |      .long     |
00005800  2d 31 0a 0d 20 20 20 20  20 20 20 20 20 20 2e 61  |-1..          .a|
00005810  73 63 69 63 20 20 20 20  22 4f 53 46 69 6c 65 20  |scic    "OSFile |
00005820  22 0a 0d 4f 53 46 69 6c  65 3a 20 20 20 73 74 6d  |"..OSFile:   stm|
00005830  65 61 20 20 20 20 20 72  74 73 21 2c 20 7b 6e 69  |ea     rts!, {ni|
00005840  6c 7d 0a 0d 20 20 20 20  20 20 20 20 20 20 6d 6f  |l}..          mo|
00005850  76 20 20 20 20 20 20 20  72 30 2c 20 61 31 0a 0d  |v       r0, a1..|
00005860  20 20 20 20 20 20 20 20  20 20 63 6d 70 20 20 20  |          cmp   |
00005870  20 20 20 20 61 32 2c 20  23 30 0a 0d 20 20 20 20  |    a2, #0..    |
00005880  20 20 20 20 20 20 6d 6f  76 6c 74 20 20 20 20 20  |      movlt     |
00005890  6e 69 6c 2c 20 23 30 0a  0d 20 20 20 20 20 20 20  |nil, #0..       |
000058a0  20 20 20 6d 6f 76 6c 74  20 20 20 20 20 61 31 2c  |   movlt     a1,|
000058b0  20 23 30 0a 0d 20 20 20  20 20 20 20 20 20 20 73  | #0..          s|
000058c0  75 62 6c 74 20 20 20 20  20 61 31 2c 20 61 31 2c  |ublt     a1, a1,|
000058d0  20 61 32 0a 0d 20 20 20  20 20 20 20 20 20 20 6d  | a2..          m|
000058e0  76 6e 67 65 20 20 20 20  20 6e 69 6c 2c 20 23 30  |vnge     nil, #0|
000058f0  0a 0d 20 20 20 20 20 20  20 20 20 20 6d 6f 76 67  |..          movg|
00005900  65 20 20 20 20 20 61 31  2c 20 61 32 2c 20 6c 73  |e     a1, a2, ls|
00005910  6c 20 23 32 0a 0d 20 20  20 20 20 20 20 20 20 20  |l #2..          |
00005920  6c 64 72 67 65 62 20 20  20 20 61 32 2c 20 5b 61  |ldrgeb    a2, [a|
00005930  31 5d 2c 20 23 31 20 20  20 20 20 20 20 20 3b 20  |1], #1        ; |
00005940  73 74 72 69 6e 67 20 62  79 74 65 20 62 61 73 65  |string byte base|
00005950  2c 20 6c 65 6e 67 74 68  0a 0d 20 20 20 20 20 20  |, length..      |
00005960  20 20 20 20 61 64 64 67  65 20 20 20 20 20 61 34  |    addge     a4|
00005970  2c 20 61 32 2c 20 61 31  20 20 20 20 20 20 20 20  |, a2, a1        |
00005980  20 20 3b 20 73 74 72 69  6e 67 20 62 79 74 65 20  |  ; string byte |
00005990  74 65 72 6d 69 6e 61 74  6f 72 20 70 6f 73 69 74  |terminator posit|
000059a0  69 6f 6e 0a 0d 20 20 20  20 20 20 20 20 20 20 6c  |ion..          l|
000059b0  64 72 67 65 62 20 20 20  20 72 35 2c 20 5b 61 34  |drgeb    r5, [a4|
000059c0  5d 0a 0d 20 20 20 20 20  20 20 20 20 20 6d 6f 76  |]..          mov|
000059d0  67 65 20 20 20 20 20 72  62 2c 20 23 30 0a 0d 20  |ge     rb, #0.. |
000059e0  20 20 20 20 20 20 20 20  20 73 74 72 67 65 62 20  |         strgeb |
000059f0  20 20 20 72 62 2c 20 5b  61 34 5d 0a 0d 20 20 20  |   rb, [a4]..   |
00005a00  20 20 20 20 20 20 20 73  74 6d 65 61 20 20 20 20  |       stmea    |
00005a10  20 72 74 73 21 2c 20 7b  61 34 2c 20 72 35 7d 0a  | rts!, {a4, r5}.|
00005a20  0d 20 20 20 20 20 20 20  20 20 20 6d 6f 76 20 20  |.          mov  |
00005a30  20 20 20 20 20 72 62 2c  20 61 33 2c 20 6c 73 6c  |     rb, a3, lsl|
00005a40  20 23 32 0a 0d 20 20 20  20 20 20 20 20 20 20 6c  | #2..          l|
00005a50  64 72 20 20 20 20 20 20  20 61 32 2c 20 5b 61 31  |dr       a2, [a1|
00005a60  5d 0a 0d 20 20 20 20 20  20 20 20 20 20 63 6d 70  |]..          cmp|
00005a70  20 20 20 20 20 20 20 61  32 2c 20 23 30 0a 0d 20  |       a2, #0.. |
00005a80  20 20 20 20 20 20 20 20  20 61 64 64 65 71 20 20  |         addeq  |
00005a90  20 20 20 61 31 2c 20 61  31 2c 20 23 31 0a 0d 20  |   a1, a1, #1.. |
00005aa0  20 20 20 20 20 20 20 20  20 6c 64 6d 69 61 20 20  |         ldmia  |
00005ab0  20 20 20 72 62 2c 20 7b  61 32 2d 72 35 7d 0a 0d  |   rb, {a2-r5}..|
00005ac0  20 20 20 20 20 20 20 20  20 20 73 77 69 20 20 20  |          swi   |
00005ad0  20 20 20 20 4f 53 5f 46  69 6c 65 20 2b 20 58 4f  |    OS_File + XO|
00005ae0  53 0a 0d 20 20 20 20 20  20 20 20 20 20 73 74 6d  |S..          stm|
00005af0  69 61 20 20 20 20 20 72  62 2c 20 7b 61 32 2d 72  |ia     rb, {a2-r|
00005b00  35 7d 0a 0d 20 20 20 20  20 20 20 20 20 20 6d 6f  |5}..          mo|
00005b10  76 20 20 20 20 20 20 20  61 32 2c 20 23 30 0a 0d  |v       a2, #0..|
00005b20  20 20 20 20 20 20 20 20  20 20 6d 76 6e 76 73 20  |          mvnvs |
00005b30  20 20 20 20 61 32 2c 20  23 30 0a 0d 20 20 20 20  |    a2, #0..    |
00005b40  20 20 20 20 20 20 73 74  72 20 20 20 20 20 20 20  |      str       |
00005b50  61 32 2c 20 5b 72 67 2c  20 23 52 65 73 75 6c 74  |a2, [rg, #Result|
00005b60  32 5d 0a 0d 20 20 20 20  20 20 20 20 20 20 6d 6f  |2]..          mo|
00005b70  76 20 20 20 20 20 20 20  61 31 2c 20 72 30 0a 0d  |v       a1, r0..|
00005b80  20 20 20 20 20 20 20 20  20 20 6c 64 6d 65 61 20  |          ldmea |
00005b90  20 20 20 20 72 74 73 21  2c 20 7b 61 34 2c 20 72  |    rts!, {a4, r|
00005ba0  35 7d 0a 0d 20 20 20 20  20 20 20 20 20 20 63 6d  |5}..          cm|
00005bb0  70 20 20 20 20 20 20 20  6e 69 6c 2c 20 23 30 0a  |p       nil, #0.|
00005bc0  0d 20 20 20 20 20 20 20  20 20 20 73 74 72 6e 65  |.          strne|
00005bd0  62 20 20 20 20 72 35 2c  20 5b 61 34 5d 20 20 20  |b    r5, [a4]   |
00005be0  20 20 20 20 20 20 20 20  20 3b 20 72 65 73 74 6f  |         ; resto|
00005bf0  72 65 0a 0d 20 20 20 20  20 20 20 20 20 20 6c 64  |re..          ld|
00005c00  6d 65 61 20 20 20 20 20  72 74 73 21 2c 20 7b 6e  |mea     rts!, {n|
00005c10  69 6c 7d 0a 0d 20 20 20  20 20 20 20 20 20 20 6d  |il}..          m|
00005c20  6f 76 73 20 20 20 20 20  20 70 63 2c 20 6c 72 0a  |ovs      pc, lr.|
00005c30  0d 0a 0d 20 20 20 20 20  20 20 20 20 20 2e 6c 6f  |...          .lo|
00005c40  6e 67 20 20 20 20 20 2d  31 0a 0d 20 20 20 20 20  |ng     -1..     |
00005c50  20 20 20 20 20 2e 61 73  63 69 63 20 20 20 20 22  |     .ascic    "|
00005c60  4f 53 57 72 43 68 20 22  0a 0d 4f 53 57 72 43 68  |OSWrCh "..OSWrCh|
00005c70  3a 20 20 20 6d 6f 76 20  20 20 20 20 20 20 72 30  |:   mov       r0|
00005c80  2c 20 61 31 0a 0d 20 20  20 20 20 20 20 20 20 20  |, a1..          |
00005c90  73 77 69 20 20 20 20 20  20 20 4f 53 5f 57 72 69  |swi       OS_Wri|
00005ca0  74 65 43 0a 0d 20 20 20  20 20 20 20 20 20 20 6d  |teC..          m|
00005cb0  6f 76 73 20 20 20 20 20  20 70 63 2c 20 6c 72 0a  |ovs      pc, lr.|
00005cc0  0d 0a 0d 20 20 20 20 20  20 20 20 20 20 2e 6c 6f  |...          .lo|
00005cd0  6e 67 20 20 20 20 20 2d  31 0a 0d 20 20 20 20 20  |ng     -1..     |
00005ce0  20 20 20 20 20 2e 61 73  63 69 63 20 20 20 20 22  |     .ascic    "|
00005cf0  4f 53 52 64 43 68 20 22  0a 0d 4f 53 52 64 43 68  |OSRdCh "..OSRdCh|
00005d00  3a 20 20 20 73 77 69 20  20 20 20 20 20 20 4f 53  |:   swi       OS|
00005d10  5f 52 65 61 64 43 0a 0d  20 20 20 20 20 20 20 20  |_ReadC..        |
00005d20  20 20 6d 6f 76 20 20 20  20 20 20 20 61 31 2c 20  |  mov       a1, |
00005d30  72 30 0a 0d 20 20 20 20  20 20 20 20 20 20 6d 6f  |r0..          mo|
00005d40  76 20 20 20 20 20 20 20  72 30 2c 20 23 30 0a 0d  |v       r0, #0..|
00005d50  20 20 20 20 20 20 20 20  20 20 6d 76 6e 63 73 20  |          mvncs |
00005d60  20 20 20 20 72 30 2c 20  23 30 0a 0d 20 20 20 20  |    r0, #0..    |
00005d70  20 20 20 20 20 20 73 74  72 20 20 20 20 20 20 20  |      str       |
00005d80  72 30 2c 20 5b 72 67 2c  20 23 52 65 73 75 6c 74  |r0, [rg, #Result|
00005d90  32 5d 0a 0d 20 20 20 20  20 20 20 20 20 20 6d 6f  |2]..          mo|
00005da0  76 73 20 20 20 20 20 20  70 63 2c 20 6c 72 0a 0d  |vs      pc, lr..|
00005db0  0a 0d 20 20 20 20 20 20  20 20 20 20 2e 6c 6f 6e  |..          .lon|
00005dc0  67 20 20 20 20 20 2d 31  0a 0d 20 20 20 20 20 20  |g     -1..      |
00005dd0  20 20 20 20 2e 61 73 63  69 63 20 20 20 20 22 4f  |    .ascic    "O|
00005de0  53 42 50 75 74 20 22 0a  0d 4f 53 42 50 75 74 3a  |SBPut "..OSBPut:|
00005df0  20 20 20 6d 6f 76 20 20  20 20 20 20 20 72 30 2c  |   mov       r0,|
00005e00  20 61 31 0a 0d 20 20 20  20 20 20 20 20 20 20 6d  | a1..          m|
00005e10  6f 76 20 20 20 20 20 20  20 61 31 2c 20 61 32 0a  |ov       a1, a2.|
00005e20  0d 20 20 20 20 20 20 20  20 20 20 73 77 69 20 20  |.          swi  |
00005e30  20 20 20 20 20 4f 53 5f  42 50 75 74 0a 0d 20 20  |     OS_BPut..  |
00005e40  20 20 20 20 20 20 20 20  6d 6f 76 73 20 20 20 20  |        movs    |
00005e50  20 20 70 63 2c 20 6c 72  0a 0d 0a 0d 20 20 20 20  |  pc, lr....    |
00005e60  20 20 20 20 20 20 2e 6c  6f 6e 67 20 20 20 20 20  |      .long     |
00005e70  2d 31 0a 0d 20 20 20 20  20 20 20 20 20 20 2e 61  |-1..          .a|
00005e80  73 63 69 63 20 20 20 20  22 4f 53 42 47 65 74 20  |scic    "OSBGet |
00005e90  22 0a 0d 4f 53 42 47 65  74 3a 20 20 20 73 77 69  |"..OSBGet:   swi|
00005ea0  20 20 20 20 20 20 20 4f  53 5f 42 47 65 74 2b 58  |       OS_BGet+X|
00005eb0  4f 53 0a 0d 20 20 20 20  20 20 20 20 20 20 6d 6f  |OS..          mo|
00005ec0  76 20 20 20 20 20 20 20  61 31 2c 20 72 30 0a 0d  |v       a1, r0..|
00005ed0  20 20 20 20 20 20 20 20  20 20 6d 6f 76 63 73 20  |          movcs |
00005ee0  20 20 20 20 61 31 2c 20  23 30 78 66 66 0a 0d 20  |    a1, #0xff.. |
00005ef0  20 20 20 20 20 20 20 20  20 6d 6f 76 63 73 20 20  |         movcs  |
00005f00  20 20 20 61 31 2c 20 61  31 2c 20 6c 73 6c 20 23  |   a1, a1, lsl #|
00005f10  31 0a 0d 20 20 20 20 20  20 20 20 20 20 6d 6f 76  |1..          mov|
00005f20  73 20 20 20 20 20 20 70  63 2c 20 6c 72 0a 0d 0a  |s      pc, lr...|
00005f30  0d 20 20 20 20 20 20 20  20 20 20 2e 6c 6f 6e 67  |.          .long|
00005f40  20 20 20 20 20 2d 31 0a  0d 20 20 20 20 20 20 20  |     -1..       |
00005f50  20 20 20 2e 61 73 63 69  63 20 20 20 20 22 4c 65  |   .ascic    "Le|
00005f60  76 65 6c 20 20 22 0a 0d  4c 65 76 65 6c 3a 20 20  |vel  "..Level:  |
00005f70  20 20 6d 6f 76 20 20 20  20 20 20 20 61 31 2c 20  |  mov       a1, |
00005f80  72 66 70 0a 0d 20 20 20  20 20 20 20 20 20 20 6d  |rfp..          m|
00005f90  6f 76 73 20 20 20 20 20  20 70 63 2c 20 6c 72 0a  |ovs      pc, lr.|
00005fa0  0d 0a 0d 20 20 20 20 20  20 20 20 20 20 2e 6c 6f  |...          .lo|
00005fb0  6e 67 20 20 20 20 20 2d  31 0a 0d 20 20 20 20 20  |ng     -1..     |
00005fc0  20 20 20 20 20 2e 61 73  63 69 63 20 20 20 20 22  |     .ascic    "|
00005fd0  4c 6f 6e 67 4a 75 6d 22  0a 0d 4c 6f 6e 67 4a 75  |LongJum"..LongJu|
00005fe0  6d 70 3a 20 63 6d 70 20  20 20 20 20 20 20 72 66  |mp: cmp       rf|
00005ff0  70 2c 20 61 31 0a 0d 20  20 20 20 20 20 20 20 20  |p, a1..         |
00006000  20 6d 6f 76 65 71 20 20  20 20 20 70 63 2c 20 61  | moveq     pc, a|
00006010  32 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3b  |2              ;|
00006020  20 53 61 6d 65 20 6c 65  76 65 6c 0a 0d 20 20 20  | Same level..   |
00006030  20 20 20 20 20 20 20 6d  6f 76 20 20 20 20 20 20  |       mov      |
00006040  20 61 34 2c 20 72 66 70  0a 0d 4c 4a 31 3a 20 20  | a4, rfp..LJ1:  |
00006050  20 20 20 20 6c 64 72 20  20 20 20 20 20 20 72 35  |    ldr       r5|
00006060  2c 20 5b 61 34 2c 20 23  34 5d 20 20 20 20 20 20  |, [a4, #4]      |
00006070  20 20 3b 20 72 66 70 20  65 6e 63 6c 6f 73 69 6e  |  ; rfp enclosin|
00006080  67 20 66 72 61 6d 65 20  72 66 70 21 31 0a 0d 20  |g frame rfp!1.. |
00006090  20 20 20 20 20 20 20 20  20 63 6d 70 20 20 20 20  |         cmp    |
000060a0  20 20 20 72 35 2c 20 61  34 0a 0d 20 20 20 20 20  |   r5, a4..     |
000060b0  20 20 20 20 20 62 65 71  20 20 20 20 20 20 20 4c  |     beq       L|
000060c0  4a 32 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |J2              |
000060d0  20 20 20 3b 20 62 61 73  65 20 6f 66 20 73 74 61  |   ; base of sta|
000060e0  63 6b 3f 0a 0d 20 20 20  20 20 20 20 20 20 20 63  |ck?..          c|
000060f0  6d 70 20 20 20 20 20 20  20 72 35 2c 20 61 31 20  |mp       r5, a1 |
00006100  20 20 20 20 20 20 20 20  20 20 20 20 20 3b 20 65  |             ; e|
00006110  6e 63 6c 6f 73 69 6e 67  20 66 72 61 6d 65 20 63  |nclosing frame c|
00006120  6f 72 72 65 63 74 3f 0a  0d 20 20 20 20 20 20 20  |orrect?..       |
00006130  20 20 20 6d 6f 76 6e 65  20 20 20 20 20 61 34 2c  |   movne     a4,|
00006140  20 72 35 0a 0d 20 20 20  20 20 20 20 20 20 20 62  | r5..          b|
00006150  6e 65 20 20 20 20 20 20  20 4c 4a 31 0a 0d 20 20  |ne       LJ1..  |
00006160  20 20 20 20 20 20 20 20  6c 64 72 20 20 20 20 20  |        ldr     |
00006170  20 20 72 6c 2c 20 5b 61  34 2c 20 23 38 5d 20 20  |  rl, [a4, #8]  |
00006180  20 20 20 20 20 20 3b 20  72 6c 20 6f 66 20 66 6f  |      ; rl of fo|
00006190  75 6e 64 20 66 72 61 6d  65 20 20 72 66 70 21 32  |und frame  rfp!2|
000061a0  0a 0d 20 20 20 20 20 20  20 20 20 20 6d 6f 76 20  |..          mov |
000061b0  20 20 20 20 20 20 72 74  73 2c 20 61 34 0a 0d 20  |      rts, a4.. |
000061c0  20 20 20 20 20 20 20 20  20 6d 6f 76 20 20 20 20  |         mov    |
000061d0  20 20 20 72 66 70 2c 20  61 31 0a 0d 20 20 20 20  |   rfp, a1..    |
000061e0  20 20 20 20 20 20 6d 6f  76 20 20 20 20 20 20 20  |      mov       |
000061f0  70 63 2c 20 61 32 20 20  20 20 20 20 20 20 20 20  |pc, a2          |
00006200  20 20 20 20 3b 20 73 75  63 63 65 73 73 66 75 6c  |    ; successful|
00006210  0a 0d 4c 4a 32 3a 20 20  20 20 20 20 6d 6f 76 20  |..LJ2:      mov |
00006220  20 20 20 20 20 20 61 33  2c 20 61 31 0a 0d 20 20  |      a3, a1..  |
00006230  20 20 20 20 20 20 20 20  6d 6f 76 20 20 20 20 20  |        mov     |
00006240  20 20 61 31 2c 20 23 31  34 0a 0d 20 20 20 20 20  |  a1, #14..     |
00006250  20 20 20 20 20 73 74 72  20 20 20 20 20 20 20 61  |     str       a|
00006260  31 2c 20 5b 72 67 2c 20  23 52 65 74 75 72 6e 43  |1, [rg, #ReturnC|
00006270  6f 64 65 5d 0a 0d 20 20  20 20 20 20 20 20 20 20  |ode]..          |
00006280  73 74 72 20 20 20 20 20  20 20 72 32 2c 20 5b 20  |str       r2, [ |
00006290  72 67 2c 20 23 52 65 73  75 6c 74 32 20 5d 0a 0d  |rg, #Result2 ]..|
000062a0  20 20 20 20 20 20 20 20  20 20 41 44 52 20 20 20  |          ADR   |
000062b0  20 20 20 20 61 31 2c 20  4c 4a 52 65 70 0a 0d 20  |    a1, LJRep.. |
000062c0  20 20 20 20 20 20 20 20  20 62 20 20 20 20 20 20  |         b      |
000062d0  20 20 20 46 61 75 6c 74  73 0a 0d 4c 4a 52 65 70  |   Faults..LJRep|
000062e0  3a 20 20 20 20 2e 61 73  63 69 63 20 20 20 20 22  |:    .ascic    "|
000062f0  44 65 73 74 69 6e 61 74  69 6f 6e 20 66 72 61 6d  |Destination fram|
00006300  65 20 25 6e 20 66 6f 72  20 4c 6f 6e 67 4a 75 6d  |e %n for LongJum|
00006310  70 20 69 6e 20 74 68 65  20 73 74 61 63 6b 5c 30  |p in the stack\0|
00006320  22 0a 0d 20 20 20 20 20  20 20 20 20 20 2e 61 6c  |"..          .al|
00006330  69 67 6e 0a 0d 0a 0d 20  20 20 20 20 20 20 20 20  |ign....         |
00006340  20 2e 6c 6f 6e 67 20 20  20 20 20 2d 31 0a 0d 20  | .long     -1.. |
00006350  20 20 20 20 20 20 20 20  20 2e 61 73 63 69 63 20  |         .ascic |
00006360  20 20 20 22 47 42 79 74  65 73 20 22 0a 0d 47 42  |   "GBytes "..GB|
00006370  79 74 65 73 3a 20 20 20  6d 6f 76 20 20 20 20 20  |ytes:   mov     |
00006380  20 20 72 30 2c 20 61 31  0a 0d 20 20 20 20 20 20  |  r0, a1..      |
00006390  20 20 20 20 6d 6f 76 20  20 20 20 20 20 20 61 31  |    mov       a1|
000063a0  2c 20 23 30 20 20 20 20  20 20 20 20 20 20 20 20  |, #0            |
000063b0  20 20 3b 20 72 65 74 75  72 6e 73 20 6c 61 73 74  |  ; returns last|
000063c0  20 34 20 62 79 74 65 73  20 28 20 6d 61 78 20 61  | 4 bytes ( max a|
000063d0  32 20 29 0a 0d 47 42 6c  6f 6f 70 3a 20 20 20 6c  |2 )..GBloop:   l|
000063e0  64 72 62 20 20 20 20 20  20 61 33 2c 20 5b 72 30  |drb      a3, [r0|
000063f0  5d 2c 20 23 31 20 20 20  20 20 20 20 20 3b 20 66  |], #1        ; f|
00006400  72 6f 6d 20 61 31 20 28  6e 6f 74 20 77 72 64 20  |rom a1 (not wrd |
00006410  61 6c 69 67 6e 65 64 29  20 69 6e 20 6f 6e 65 20  |aligned) in one |
00006420  77 6f 72 64 0a 0d 20 20  20 20 20 20 20 20 20 20  |word..          |
00006430  61 64 64 20 20 20 20 20  20 20 61 31 2c 20 61 33  |add       a1, a3|
00006440  2c 20 61 31 2c 20 6c 73  6c 20 23 38 20 20 3b 20  |, a1, lsl #8  ; |
00006450  42 79 74 65 77 6f 72 64  20 3a 3d 20 47 42 79 74  |Byteword := GByt|
00006460  65 73 28 20 42 79 74 65  61 64 64 72 2c 20 4e 75  |es( Byteaddr, Nu|
00006470  6d 62 65 72 20 29 0a 0d  20 20 20 20 20 20 20 20  |mber )..        |
00006480  20 20 73 75 62 73 20 20  20 20 20 20 61 32 2c 20  |  subs      a2, |
00006490  61 32 2c 20 23 31 0a 0d  20 20 20 20 20 20 20 20  |a2, #1..        |
000064a0  20 20 62 67 74 20 20 20  20 20 20 20 47 42 6c 6f  |  bgt       GBlo|
000064b0  6f 70 0a 0d 20 20 20 20  20 20 20 20 20 20 6d 6f  |op..          mo|
000064c0  76 73 20 20 20 20 20 20  70 63 2c 20 6c 72 0a 0d  |vs      pc, lr..|
000064d0  0a 0d 20 20 20 20 20 20  20 20 20 20 2e 6c 6f 6e  |..          .lon|
000064e0  67 20 20 20 20 20 2d 31  0a 0d 20 20 20 20 20 20  |g     -1..      |
000064f0  20 20 20 20 2e 61 73 63  69 63 20 20 20 20 22 50  |    .ascic    "P|
00006500  42 79 74 65 73 20 22 0a  0d 50 42 79 74 65 73 3a  |Bytes "..PBytes:|
00006510  20 20 20 61 64 64 20 20  20 20 20 20 20 61 31 2c  |   add       a1,|
00006520  20 61 31 2c 20 61 32 20  20 20 20 20 20 20 20 20  | a1, a2         |
00006530  20 3b 20 50 42 79 74 65  73 28 20 42 79 74 65 77  | ; PBytes( Bytew|
00006540  6f 72 64 2c 20 4e 75 6d  62 65 72 2c 20 42 79 74  |ord, Number, Byt|
00006550  65 61 64 64 72 20 29 0a  0d 50 42 6c 6f 6f 70 3a  |eaddr )..PBloop:|
00006560  20 20 20 73 74 72 62 20  20 20 20 20 20 61 33 2c  |   strb      a3,|
00006570  20 5b 61 31 2c 20 23 2d  31 5d 0a 0d 20 20 20 20  | [a1, #-1]..    |
00006580  20 20 20 20 20 20 73 75  62 73 20 20 20 20 20 20  |      subs      |
00006590  61 32 2c 20 61 32 2c 20  23 31 0a 0d 20 20 20 20  |a2, a2, #1..    |
000065a0  20 20 20 20 20 20 62 67  74 20 20 20 20 20 20 20  |      bgt       |
000065b0  50 42 6c 6f 6f 70 0a 0d  20 20 20 20 20 20 20 20  |PBloop..        |
000065c0  20 20 6d 6f 76 73 20 20  20 20 20 20 70 63 2c 20  |  movs      pc, |
000065d0  6c 72 0a 0d 0a 0d 20 20  20 20 20 20 20 20 20 20  |lr....          |
000065e0  2e 6c 6f 6e 67 20 20 20  20 20 2d 31 0a 0d 20 20  |.long     -1..  |
000065f0  20 20 20 20 20 20 20 20  2e 61 73 63 69 63 20 20  |        .ascic  |
00006600  20 20 22 4d 6f 76 65 20  20 20 22 0a 0d 4d 6f 76  |  "Move   "..Mov|
00006610  65 3a 20 20 20 20 20 6d  6f 76 20 20 20 20 20 20  |e:     mov      |
00006620  20 61 34 2c 20 61 32 2c  20 6c 73 6c 20 23 32 20  | a4, a2, lsl #2 |
00006630  20 20 20 20 20 3b 20 74  6f 20 62 0a 0d 20 20 20  |     ; to b..   |
00006640  20 20 20 20 20 20 20 6d  6f 76 20 20 20 20 20 20  |       mov      |
00006650  20 61 32 2c 20 61 33 0a  0d 20 20 20 20 20 20 20  | a2, a3..       |
00006660  20 20 20 6d 6f 76 20 20  20 20 20 20 20 61 33 2c  |   mov       a3,|
00006670  20 61 31 2c 20 6c 73 6c  20 23 32 20 20 20 20 20  | a1, lsl #2     |
00006680  20 3b 20 66 72 6f 6d 20  62 0a 0d 20 20 20 20 20  | ; from b..     |
00006690  20 20 20 20 20 6d 6f 76  20 20 20 20 20 20 20 61  |     mov       a|
000066a0  31 2c 20 23 31 0a 0d 20  20 20 20 20 20 20 20 20  |1, #1..         |
000066b0  20 62 20 20 20 20 20 20  20 20 20 4d 57 4c 6f 6f  | b         MWLoo|
000066c0  70 0a 0d 0a 0d 20 20 20  20 20 20 20 20 20 20 2e  |p....          .|
000066d0  6c 6f 6e 67 20 20 20 20  20 2d 31 0a 0d 20 20 20  |long     -1..   |
000066e0  20 20 20 20 20 20 20 2e  61 73 63 69 63 20 20 20  |       .ascic   |
000066f0  20 22 42 61 63 6b 6d 6f  76 22 0a 0d 42 61 63 6b  | "Backmov"..Back|
00006700  4d 6f 76 3a 20 20 61 64  64 20 20 20 20 20 20 20  |Mov:  add       |
00006710  61 34 2c 20 61 32 2c 20  61 33 20 20 20 20 20 20  |a4, a2, a3      |
00006720  20 20 20 20 3b 20 74 6f  20 77 0a 0d 20 20 20 20  |    ; to w..    |
00006730  20 20 20 20 20 20 6d 6f  76 20 20 20 20 20 20 20  |      mov       |
00006740  61 32 2c 20 61 33 0a 0d  20 20 20 20 20 20 20 20  |a2, a3..        |
00006750  20 20 61 64 64 20 20 20  20 20 20 20 61 33 2c 20  |  add       a3, |
00006760  61 31 2c 20 61 33 20 20  20 20 20 20 20 20 20 20  |a1, a3          |
00006770  3b 20 66 72 6f 6d 20 77  0a 0d 20 20 20 20 20 20  |; from w..      |
00006780  20 20 20 20 6d 76 6e 20  20 20 20 20 20 20 61 31  |    mvn       a1|
00006790  2c 20 23 30 0a 0d 20 20  20 20 20 20 20 20 20 20  |, #0..          |
000067a0  62 20 20 20 20 20 20 20  20 20 4d 6f 76 65 57 6f  |b         MoveWo|
000067b0  0a 0d 0a 0d 20 20 20 20  20 20 20 20 20 20 2e 6c  |....          .l|
000067c0  6f 6e 67 20 20 20 20 20  2d 31 0a 0d 20 20 20 20  |ong     -1..    |
000067d0  20 20 20 20 20 20 2e 61  73 63 69 63 20 20 20 20  |      .ascic    |
000067e0  22 4d 6f 76 65 57 6f 72  22 0a 0d 4d 6f 76 65 57  |"MoveWor"..MoveW|
000067f0  6f 3a 20 20 20 6d 6f 76  20 20 20 20 20 20 20 61  |o:   mov       a|
00006800  34 2c 20 61 34 2c 20 6c  73 6c 20 23 32 0a 0d 20  |4, a4, lsl #2.. |
00006810  20 20 20 20 20 20 20 20  20 6d 6f 76 20 20 20 20  |         mov    |
00006820  20 20 20 61 33 2c 20 61  33 2c 20 6c 73 6c 20 23  |   a3, a3, lsl #|
00006830  32 0a 0d 4d 57 4c 6f 6f  70 3a 20 20 20 6c 64 72  |2..MWLoop:   ldr|
00006840  20 20 20 20 20 20 20 72  30 2c 20 5b 61 33 5d 2c  |       r0, [a3],|
00006850  20 61 31 2c 6c 73 6c 20  23 32 20 3b 20 61 33 20  | a1,lsl #2 ; a3 |
00006860  70 6f 73 74 69 6e 64 65  78 20 69 63 72 2f 64 65  |postindex icr/de|
00006870  63 72 20 62 79 20 61 31  0a 0d 20 20 20 20 20 20  |cr by a1..      |
00006880  20 20 20 20 73 74 72 20  20 20 20 20 20 20 72 30  |    str       r0|
00006890  2c 20 5b 61 34 5d 2c 20  61 31 2c 6c 73 6c 20 23  |, [a4], a1,lsl #|
000068a0  32 0a 0d 20 20 20 20 20  20 20 20 20 20 73 75 62  |2..          sub|
000068b0  73 20 20 20 20 20 20 61  32 2c 20 61 32 2c 20 23  |s      a2, a2, #|
000068c0  31 0a 0d 20 20 20 20 20  20 20 20 20 20 62 67 74  |1..          bgt|
000068d0  20 20 20 20 20 20 20 4d  57 4c 6f 6f 70 0a 0d 20  |       MWLoop.. |
000068e0  20 20 20 20 20 20 20 20  20 6d 6f 76 20 20 20 20  |         mov    |
000068f0  20 20 20 70 63 2c 20 6c  72 0a 0d 0a 0d 20 20 20  |   pc, lr....   |
00006900  20 20 20 20 20 20 20 2e  6c 6f 6e 67 20 20 20 20  |       .long    |
00006910  20 2d 31 0a 0d 20 20 20  20 20 20 20 20 20 20 2e  | -1..          .|
00006920  61 73 63 69 63 20 20 20  20 22 46 69 6c 6c 57 6f  |ascic    "FillWo|
00006930  72 22 0a 0d 46 69 6c 6c  57 6f 3a 20 20 20 6d 6f  |r"..FillWo:   mo|
00006940  76 20 20 20 20 20 20 20  61 31 2c 20 61 31 2c 20  |v       a1, a1, |
00006950  6c 73 6c 20 23 32 0a 0d  46 69 6c 6c 6f 6f 70 3a  |lsl #2..Filloop:|
00006960  20 20 73 74 72 20 20 20  20 20 20 20 61 33 2c 20  |  str       a3, |
00006970  5b 61 31 5d 2c 20 23 34  0a 0d 20 20 20 20 20 20  |[a1], #4..      |
00006980  20 20 20 20 73 75 62 73  20 20 20 20 20 20 61 32  |    subs      a2|
00006990  2c 20 61 32 2c 20 23 31  0a 0d 20 20 20 20 20 20  |, a2, #1..      |
000069a0  20 20 20 20 62 67 74 20  20 20 20 20 20 20 46 69  |    bgt       Fi|
000069b0  6c 6c 6f 6f 70 0a 0d 20  20 20 20 20 20 20 20 20  |lloop..         |
000069c0  20 6d 6f 76 73 20 20 20  20 20 20 70 63 2c 20 6c  | movs      pc, l|
000069d0  72 0a 0d 0a 0d 20 20 20  20 20 20 20 20 20 20 2e  |r....          .|
000069e0  4c 4f 4e 47 20 20 20 20  20 2d 31 0a 0d 20 20 20  |LONG     -1..   |
000069f0  20 20 20 20 20 20 20 2e  61 73 63 69 63 20 20 20  |       .ascic   |
00006a00  20 22 4d 6f 76 65 62 79  74 22 0a 0d 4d 6f 76 65  | "Movebyt"..Move|
00006a10  62 79 74 65 3a 20 63 6d  70 20 20 20 20 20 20 20  |byte: cmp       |
00006a20  61 33 2c 20 23 30 0a 0d  20 20 20 20 20 20 20 20  |a3, #0..        |
00006a30  20 20 6d 6f 76 65 71 20  20 20 20 20 70 63 2c 20  |  moveq     pc, |
00006a40  6c 72 0a 0d 6d 62 3a 20  20 20 20 20 20 20 6c 64  |lr..mb:       ld|
00006a50  72 62 20 20 20 20 20 20  72 30 2c 20 5b 61 31 5d  |rb      r0, [a1]|
00006a60  2c 20 23 31 0a 0d 20 20  20 20 20 20 20 20 20 20  |, #1..          |
00006a70  73 74 72 62 20 20 20 20  20 20 72 30 2c 20 5b 61  |strb      r0, [a|
00006a80  32 5d 2c 20 23 31 0a 0d  20 20 20 20 20 20 20 20  |2], #1..        |
00006a90  20 20 73 75 62 73 20 20  20 20 20 20 61 33 2c 20  |  subs      a3, |
00006aa0  61 33 2c 20 23 31 0a 0d  20 20 20 20 20 20 20 20  |a3, #1..        |
00006ab0  20 20 62 67 74 20 20 20  20 20 20 20 6d 62 0a 0d  |  bgt       mb..|
00006ac0  20 20 20 20 20 20 20 20  20 20 6d 6f 76 20 20 20  |          mov   |
00006ad0  20 20 20 20 70 63 2c 20  6c 72 0a 0d 0a 0d 20 20  |    pc, lr....  |
00006ae0  20 20 20 20 20 20 20 20  2e 6c 6f 6e 67 20 20 20  |        .long   |
00006af0  20 20 2d 31 0a 0d 20 20  20 20 20 20 20 20 20 20  |  -1..          |
00006b00  2e 61 73 63 69 63 20 20  20 20 22 42 61 63 6b 6d  |.ascic    "Backm|
00006b10  76 62 22 0a 0d 42 61 63  6b 6d 76 62 79 3a 20 63  |vb"..Backmvby: c|
00006b20  6d 70 20 20 20 20 20 20  20 61 33 2c 20 23 30 0a  |mp       a3, #0.|
00006b30  0d 20 20 20 20 20 20 20  20 20 20 6d 6f 76 65 71  |.          moveq|
00006b40  20 20 20 20 20 70 63 2c  20 6c 72 0a 0d 62 6d 62  |     pc, lr..bmb|
00006b50  3a 20 20 20 20 20 20 73  75 62 73 20 20 20 20 20  |:      subs     |
00006b60  20 61 33 2c 20 61 33 2c  20 23 31 0a 0d 20 20 20  | a3, a3, #1..   |
00006b70  20 20 20 20 20 20 20 6c  64 72 62 20 20 20 20 20  |       ldrb     |
00006b80  20 72 30 2c 20 5b 20 61  31 2c 20 61 33 20 5d 0a  | r0, [ a1, a3 ].|
00006b90  0d 20 20 20 20 20 20 20  20 20 20 73 74 72 62 20  |.          strb |
00006ba0  20 20 20 20 20 72 30 2c  20 5b 20 61 32 2c 20 61  |     r0, [ a2, a|
00006bb0  33 20 5d 0a 0d 20 20 20  20 20 20 20 20 20 20 62  |3 ]..          b|
00006bc0  67 74 20 20 20 20 20 20  20 62 6d 62 0a 0d 20 20  |gt       bmb..  |
00006bd0  20 20 20 20 20 20 20 20  6d 6f 76 20 20 20 20 20  |        mov     |
00006be0  20 20 70 63 2c 20 6c 72  0a 0d 0a 0d 20 20 20 20  |  pc, lr....    |
00006bf0  20 20 20 20 20 20 2e 6c  6f 6e 67 20 20 20 20 20  |      .long     |
00006c00  2d 31 0a 0d 20 20 20 20  20 20 20 20 20 20 2e 61  |-1..          .a|
00006c10  73 63 69 63 20 20 20 20  22 43 6f 57 61 69 74 20  |scic    "CoWait |
00006c20  22 20 20 20 20 20 20 20  20 20 20 20 3b 20 43 6f  |"           ; Co|
00006c30  57 61 69 74 28 20 43 6f  70 74 72 20 29 0a 0d 43  |Wait( Coptr )..C|
00006c40  6f 57 61 69 74 3a 20 20  20 73 74 6d 65 61 20 20  |oWait:   stmea  |
00006c50  20 20 20 72 74 73 21 2c  20 7b 72 62 2c 20 72 66  |   rts!, {rb, rf|
00006c60  70 2c 20 72 6c 2c 20 6c  72 7d 20 3b 20 66 70 21  |p, rl, lr} ; fp!|
00006c70  30 2c 20 31 2c 20 32 2c  20 33 20 3a 3d 0a 0d 20  |0, 1, 2, 3 :=.. |
00006c80  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00006ca0  20 20 20 20 20 20 20 3b  20 20 20 20 20 20 43 61  |       ;      Ca|
00006cb0  6c 6c 65 64 2c 20 43 61  6c 6c 69 6e 67 20 66 70  |lled, Calling fp|
00006cc0  2c 20 73 74 61 74 69 63  73 2c 20 6c 69 6e 6b 0a  |, statics, link.|
00006cd0  0d 20 20 20 20 20 20 20  20 20 20 73 75 62 20 20  |.          sub  |
00006ce0  20 20 20 20 20 72 66 70  2c 20 72 74 73 2c 20 23  |     rfp, rts, #|
00006cf0  31 36 20 20 20 20 20 20  20 3b 20 66 72 61 6d 65  |16       ; frame|
00006d00  20 70 6f 69 6e 74 65 72  0a 0d 20 20 20 20 20 20  | pointer..      |
00006d10  20 20 20 20 73 74 6d 65  61 20 20 20 20 20 72 74  |    stmea     rt|
00006d20  73 21 2c 20 7b 61 31 7d  20 20 20 20 20 20 20 20  |s!, {a1}        |
00006d30  20 20 3b 20 66 70 21 34  20 3a 3d 20 63 6f 70 74  |  ; fp!4 := copt|
00006d40  72 0a 0d 20 20 20 20 20  20 20 20 20 20 6c 64 72  |r..          ldr|
00006d50  20 20 20 20 20 20 20 61  32 2c 20 5b 72 67 2c 20  |       a2, [rg, |
00006d60  23 53 74 61 63 6b 62 61  73 65 5d 3b 20 43 75 72  |#Stackbase]; Cur|
00006d70  72 65 6e 74 20 53 74 61  63 6b 62 61 73 65 0a 0d  |rent Stackbase..|
00006d80  20 20 20 20 20 20 20 20  20 20 6d 6f 76 20 20 20  |          mov   |
00006d90  20 20 20 20 61 32 2c 20  61 32 2c 20 6c 73 6c 20  |    a2, a2, lsl |
00006da0  23 32 0a 0d 20 20 20 20  20 20 20 20 20 20 6c 64  |#2..          ld|
00006db0  72 20 20 20 20 20 20 20  61 33 2c 20 5b 61 32 2c  |r       a3, [a2,|
00006dc0  20 23 34 5d 20 20 20 20  20 20 20 20 3b 20 73 62  | #4]        ; sb|
00006dd0  20 3a 3d 20 73 62 21 31  0a 0d 20 20 20 20 20 20  | := sb!1..      |
00006de0  20 20 20 20 63 6d 6e 73  20 20 20 20 20 20 61 33  |    cmns      a3|
00006df0  2c 20 23 31 0a 0d 20 20  20 20 20 20 20 20 20 20  |, #1..          |
00006e00  62 65 71 20 20 20 20 20  20 20 52 65 73 43 66 6c  |beq       ResCfl|
00006e10  74 20 20 20 20 20 20 20  20 20 20 20 20 20 3b 20  |t             ; |
00006e20  73 62 21 31 3d 2d 31 20  2d 3e 20 4d 61 69 6e 73  |sb!1=-1 -> Mains|
00006e30  74 61 63 6b 0a 0d 20 20  20 20 20 20 20 20 20 20  |tack..          |
00006e40  73 74 72 20 20 20 20 20  20 20 61 33 2c 20 5b 72  |str       a3, [r|
00006e50  67 2c 20 23 53 74 61 63  6b 62 61 73 65 5d 3b 20  |g, #Stackbase]; |
00006e60  20 20 20 20 20 6f 74 68  65 72 77 69 73 65 20 43  |     otherwise C|
00006e70  61 6c 6c 69 6e 67 20 73  74 61 63 6b 0a 0d 20 20  |alling stack..  |
00006e80  20 20 20 20 20 20 20 20  6d 6f 76 20 20 20 20 20  |        mov     |
00006e90  20 20 61 34 2c 20 23 30  0a 0d 20 20 20 20 20 20  |  a4, #0..      |
00006ea0  20 20 20 20 73 74 72 20  20 20 20 20 20 20 61 34  |    str       a4|
00006eb0  2c 20 5b 61 32 2c 20 23  34 5d 20 20 20 20 20 20  |, [a2, #4]      |
00006ec0  20 20 3b 20 20 20 20 20  3a 3d 20 30 20 2d 3e 20  |  ;     := 0 -> |
00006ed0  77 61 69 74 69 6e 67 0a  0d 20 20 20 20 20 20 20  |waiting..       |
00006ee0  20 20 20 73 74 72 20 20  20 20 20 20 20 72 66 70  |   str       rfp|
00006ef0  2c 20 5b 61 32 2c 20 23  31 36 5d 20 20 20 20 20  |, [a2, #16]     |
00006f00  20 3b 20 73 62 21 34 20  3a 3d 20 66 72 61 6d 65  | ; sb!4 := frame|
00006f10  70 74 72 20 66 6f 72 20  72 65 73 75 6d 65 0a 0d  |ptr for resume..|
00006f20  20 20 20 20 20 20 20 20  20 20 6d 6f 76 20 20 20  |          mov   |
00006f30  20 20 20 20 61 33 2c 20  61 33 2c 20 6c 73 6c 20  |    a3, a3, lsl |
00006f40  23 32 0a 0d 20 20 20 20  20 20 20 20 20 20 6c 64  |#2..          ld|
00006f50  72 20 20 20 20 20 20 20  72 66 70 2c 20 5b 61 33  |r       rfp, [a3|
00006f60  2c 20 23 31 36 5d 20 20  20 20 20 20 3b 20 66 72  |, #16]      ; fr|
00006f70  70 74 72 20 3d 20 4f 6c  64 73 62 21 34 0a 0d 20  |ptr = Oldsb!4.. |
00006f80  20 20 20 20 20 20 20 20  20 6c 64 6d 65 64 20 20  |         ldmed  |
00006f90  20 20 20 72 66 70 2c 20  7b 72 66 70 2c 20 72 6c  |   rfp, {rfp, rl|
00006fa0  2c 20 70 63 7d 5e 20 3b  20 66 72 61 6d 65 70 74  |, pc}^ ; framept|
00006fb0  72 2c 20 73 74 61 74 69  63 73 2c 20 72 65 73 75  |r, statics, resu|
00006fc0  6d 65 70 63 20 3a 3d 0a  0d 20 20 20 20 20 20 20  |mepc :=..       |
00006fd0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00006ff0  20 3b 20 20 20 20 20 20  20 20 20 66 72 61 6d 65  | ;         frame|
00007000  70 74 72 21 34 2c 20 33  2c 20 32 0a 0d 20 20 20  |ptr!4, 3, 2..   |
00007010  20 20 20 20 20 20 20 2e  6c 6f 6e 67 20 20 20 20  |       .long    |
00007020  20 2d 31 0a 0d 20 20 20  20 20 20 20 20 20 20 2e  | -1..          .|
00007030  61 73 63 69 63 20 20 20  20 22 43 72 65 61 74 65  |ascic    "Create|
00007040  43 22 20 20 20 20 20 20  20 20 20 20 3b 20 28 66  |C"          ; (f|
00007050  75 6e 63 74 69 6f 6e 2c  20 73 74 61 63 6b 23 29  |unction, stack#)|
00007060  0a 0d 43 72 65 61 74 65  43 3a 20 20 73 74 6d 65  |..CreateC:  stme|
00007070  61 20 20 20 20 20 72 74  73 21 2c 20 7b 72 62 2c  |a     rts!, {rb,|
00007080  20 72 66 70 2c 20 72 6c  2c 20 6c 72 7d 0a 0d 20  | rfp, rl, lr}.. |
00007090  20 20 20 20 20 20 20 20  20 73 75 62 20 20 20 20  |         sub    |
000070a0  20 20 20 72 66 70 2c 20  72 74 73 2c 20 23 31 36  |   rfp, rts, #16|
000070b0  0a 0d 20 20 20 20 20 20  20 20 20 20 73 74 6d 65  |..          stme|
000070c0  61 20 20 20 20 20 72 74  73 21 2c 20 7b 61 31 2c  |a     rts!, {a1,|
000070d0  20 61 32 7d 0a 0d 20 20  20 20 20 20 20 20 20 20  | a2}..          |
000070e0  6d 6f 76 20 20 20 20 20  20 20 61 31 2c 20 61 32  |mov       a1, a2|
000070f0  0a 0d 20 20 20 20 20 20  20 20 20 20 62 6c 20 20  |..          bl  |
00007100  20 20 20 20 20 20 47 65  74 56 65 63 0a 0d 20 20  |      GetVec..  |
00007110  20 20 20 20 20 20 20 20  63 6d 70 73 20 20 20 20  |        cmps    |
00007120  20 20 61 31 2c 20 23 30  20 20 20 20 20 20 20 20  |  a1, #0        |
00007130  20 20 20 20 20 20 3b 20  69 66 20 76 20 3d 20 30  |      ; if v = 0|
00007140  20 67 6f 74 6f 20 52 65  73 43 66 6c 74 0a 0d 20  | goto ResCflt.. |
00007150  20 20 20 20 20 20 20 20  20 62 65 71 20 20 20 20  |         beq    |
00007160  20 20 20 52 65 73 43 66  6c 74 0a 0d 20 20 20 20  |   ResCflt..    |
00007170  20 20 20 20 20 20 6c 64  6d 65 61 20 20 20 20 20  |      ldmea     |
00007180  72 74 73 21 2c 20 7b 61  34 2c 20 6c 72 7d 0a 0d  |rts!, {a4, lr}..|
00007190  20 20 20 20 20 20 20 20  20 20 61 64 64 20 20 20  |          add   |
000071a0  20 20 20 20 6c 72 2c 20  61 31 2c 20 6c 72 20 20  |    lr, a1, lr  |
000071b0  20 20 20 20 20 20 20 20  3b 20 6c 72 20 3a 3d 20  |        ; lr := |
000071c0  76 2b 53 74 61 63 6b 23  2c 20 69 2e 65 20 53 74  |v+Stack#, i.e St|
000071d0  61 63 6b 74 6f 70 77 6f  72 64 28 53 74 77 29 0a  |acktopword(Stw).|
000071e0  0d 20 20 20 20 20 20 20  20 20 20 6d 6f 76 20 20  |.          mov  |
000071f0  20 20 20 20 20 61 32 2c  20 61 31 2c 20 6c 73 6c  |     a2, a1, lsl|
00007200  20 23 32 20 20 20 20 20  20 3b 20 61 32 20 3a 3d  | #2      ; a2 :=|
00007210  20 53 74 61 63 6b 62 6f  74 62 79 74 65 28 53 62  | Stackbotbyte(Sb|
00007220  62 29 0a 0d 20 20 20 20  20 20 20 20 20 20 6c 64  |b)..          ld|
00007230  72 20 20 20 20 20 20 20  72 62 2c 20 5b 72 67 2c  |r       rb, [rg,|
00007240  20 23 53 74 61 63 6b 62  61 73 65 5d 0a 0d 20 20  | #Stackbase]..  |
00007250  20 20 20 20 20 20 20 20  6d 6f 76 20 20 20 20 20  |        mov     |
00007260  20 20 61 33 2c 20 72 62  2c 20 6c 73 6c 20 23 32  |  a3, rb, lsl #2|
00007270  0a 0d 20 20 20 20 20 20  20 20 20 20 6c 64 72 20  |..          ldr |
00007280  20 20 20 20 20 20 72 35  2c 20 5b 61 33 5d 0a 0d  |      r5, [a3]..|
00007290  20 20 20 20 20 20 20 20  20 20 73 74 72 20 20 20  |          str   |
000072a0  20 20 20 20 61 31 2c 20  5b 61 33 5d 20 20 20 20  |    a1, [a3]    |
000072b0  20 20 20 20 20 20 20 20  3b 20 6f 6c 64 73 62 21  |        ; oldsb!|
000072c0  30 20 3a 3d 20 53 74 61  63 6b 23 0a 0d 20 20 20  |0 := Stack#..   |
000072d0  20 20 20 20 20 20 20 73  74 6d 65 61 20 20 20 20  |       stmea    |
000072e0  20 61 32 2c 20 7b 72 35  2c 20 72 62 2c 20 6c 72  | a2, {r5, rb, lr|
000072f0  7d 20 20 20 20 3b 20 73  62 21 30 2c 20 31 2c 20  |}    ; sb!0, 1, |
00007300  32 20 3a 3d 20 4f 6c 64  73 62 21 30 2c 20 6f 77  |2 := Oldsb!0, ow|
00007310  6e 69 6e 67 20 73 62 57  2c 20 53 74 77 0a 0d 20  |ning sbW, Stw.. |
00007320  20 20 20 20 20 20 20 20  20 73 74 72 20 20 20 20  |         str    |
00007330  20 20 20 61 34 2c 20 5b  61 32 2c 20 23 32 30 5d  |   a4, [a2, #20]|
00007340  20 20 20 20 20 20 20 3b  20 73 62 21 35 20 3a 3d  |       ; sb!5 :=|
00007350  20 66 75 6e 63 74 69 6f  6e 0a 0d 20 20 20 20 20  | function..     |
00007360  20 20 20 20 20 73 74 72  20 20 20 20 20 20 20 61  |     str       a|
00007370  33 2c 20 5b 61 32 2c 20  23 31 36 5d 20 20 20 20  |3, [a2, #16]    |
00007380  20 20 20 3b 20 73 62 21  34 20 3a 3d 20 4f 77 6e  |   ; sb!4 := Own|
00007390  69 6e 67 73 62 42 0a 0d  20 20 20 20 20 20 20 20  |ingsbB..        |
000073a0  20 20 73 74 72 20 20 20  20 20 20 20 61 31 2c 20  |  str       a1, |
000073b0  5b 72 67 2c 20 23 53 74  61 63 6b 62 61 73 65 5d  |[rg, #Stackbase]|
000073c0  3b 20 53 74 61 63 6b 62  61 73 65 20 3a 3d 20 53  |; Stackbase := S|
000073d0  74 61 63 6b 62 61 73 65  57 0a 0d 20 20 20 20 20  |tackbaseW..     |
000073e0  20 20 20 20 20 61 64 64  20 20 20 20 20 20 20 72  |     add       r|
000073f0  66 70 2c 20 61 32 2c 20  23 32 34 0a 0d 63 63 72  |fp, a2, #24..ccr|
00007400  65 74 3a 20 20 20 20 6d  6f 76 20 20 20 20 20 20  |et:    mov      |
00007410  20 72 74 73 2c 20 72 66  70 0a 0d 20 20 20 20 20  | rts, rfp..     |
00007420  20 20 20 20 20 62 6c 20  20 20 20 20 20 20 20 43  |     bl        C|
00007430  6f 57 61 69 74 0a 0d 20  20 20 20 20 20 20 20 20  |oWait..         |
00007440  20 6c 64 72 20 20 20 20  20 20 20 72 62 2c 20 5b  | ldr       rb, [|
00007450  72 66 70 2c 20 23 2d 34  5d 20 20 20 20 20 20 3b  |rfp, #-4]      ;|
00007460  20 66 75 6e 63 74 69 6f  6e 0a 0d 20 20 20 20 20  | function..     |
00007470  20 20 20 20 20 62 6c 20  20 20 20 20 20 20 20 43  |     bl        C|
00007480  61 6c 6c 0a 0d 20 20 20  20 20 20 20 20 20 20 62  |all..          b|
00007490  20 20 20 20 20 20 20 20  20 63 63 72 65 74 20 20  |         ccret  |
000074a0  20 20 20 20 20 20 20 20  20 20 20 20 20 3b 20 6c  |             ; l|
000074b0  6f 6f 70 0a 0d 0a 0d 20  20 20 20 20 20 20 20 20  |oop....         |
000074c0  20 2e 6c 6f 6e 67 20 20  20 20 20 2d 31 0a 0d 20  | .long     -1.. |
000074d0  20 20 20 20 20 20 20 20  20 2e 61 73 63 69 63 20  |         .ascic |
000074e0  20 20 20 22 44 65 6c 65  74 65 43 22 0a 0d 44 65  |   "DeleteC"..De|
000074f0  6c 65 74 65 43 3a 20 20  73 74 6d 65 61 20 20 20  |leteC:  stmea   |
00007500  20 20 72 74 73 21 2c 20  7b 72 62 2c 20 72 66 70  |  rts!, {rb, rfp|
00007510  2c 20 72 6c 2c 20 6c 72  7d 0a 0d 20 20 20 20 20  |, rl, lr}..     |
00007520  20 20 20 20 20 73 75 62  20 20 20 20 20 20 20 72  |     sub       r|
00007530  66 70 2c 20 72 74 73 2c  20 20 23 31 36 0a 0d 20  |fp, rts,  #16.. |
00007540  20 20 20 20 20 20 20 20  20 73 74 6d 65 61 20 20  |         stmea  |
00007550  20 20 20 72 74 73 21 2c  20 7b 61 31 7d 20 20 20  |   rts!, {a1}   |
00007560  20 20 20 20 20 20 20 3b  28 63 6f 70 74 72 29 20  |       ;(coptr) |
00007570  72 65 74 75 72 6e 73 20  73 75 63 63 65 73 73 63  |returns successc|
00007580  6f 64 65 0a 0d 20 20 20  20 20 20 20 20 20 20 6d  |ode..          m|
00007590  6f 76 20 20 20 20 20 20  20 61 32 2c 20 61 31 2c  |ov       a2, a1,|
000075a0  20 6c 73 6c 20 23 32 0a  0d 20 20 20 20 20 20 20  | lsl #2..       |
000075b0  20 20 20 6c 64 72 20 20  20 20 20 20 20 61 33 2c  |   ldr       a3,|
000075c0  20 5b 61 32 2c 20 23 34  5d 20 20 20 20 20 20 20  | [a2, #4]       |
000075d0  20 3b 20 73 62 21 31 0a  0d 20 20 20 20 20 20 20  | ; sb!1..       |
000075e0  20 20 20 63 6d 70 20 20  20 20 20 20 20 61 33 2c  |   cmp       a3,|
000075f0  20 23 30 0a 0d 20 20 20  20 20 20 20 20 20 20 62  | #0..          b|
00007600  6e 65 20 20 20 20 20 20  20 52 65 73 43 66 6c 74  |ne       ResCflt|
00007610  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3b 20  |              ; |
00007620  6e 6f 74 20 61 20 73 74  61 63 6b 0a 0d 20 20 20  |not a stack..   |
00007630  20 20 20 20 20 20 20 6c  64 72 20 20 20 20 20 20  |       ldr      |
00007640  20 61 33 2c 20 5b 72 67  2c 20 23 53 74 61 63 6b  | a3, [rg, #Stack|
00007650  62 61 73 65 5d 0a 0d 64  6c 63 31 3a 20 20 20 20  |base]..dlc1:    |
00007660  20 6d 6f 76 20 20 20 20  20 20 20 61 34 2c 20 61  | mov       a4, a|
00007670  34 2c 20 6c 73 6c 20 23  32 0a 0d 20 20 20 20 20  |4, lsl #2..     |
00007680  20 20 20 20 20 6c 64 72  20 20 20 20 20 20 20 61  |     ldr       a|
00007690  34 2c 20 5b 61 34 2c 20  23 34 5d 0a 0d 20 20 20  |4, [a4, #4]..   |
000076a0  20 20 20 20 20 20 20 63  6d 6e 20 20 20 20 20 20  |       cmn      |
000076b0  20 61 34 2c 20 23 31 20  20 20 20 20 20 20 20 20  | a4, #1         |
000076c0  20 20 20 20 20 3b 20 69  66 20 6f 77 6e 69 6e 67  |     ; if owning|
000076d0  73 62 21 31 20 5c 3d 20  2d 31 2c 69 65 20 6e 61  |sb!1 \= -1,ie na|
000076e0  69 6e 2c 20 6c 6f 6f 70  0a 0d 20 20 20 20 20 20  |in, loop..      |
000076f0  20 20 20 20 62 6e 65 20  20 20 20 20 20 20 64 6c  |    bne       dl|
00007700  63 31 0a 0d 20 20 20 20  20 20 20 20 20 20 6d 6f  |c1..          mo|
00007710  76 20 20 20 20 20 20 20  72 30 2c 20 23 30 0a 0d  |v       r0, #0..|
00007720  64 6c 63 6c 32 3a 20 20  20 20 6d 6f 76 20 20 20  |dlcl2:    mov   |
00007730  20 20 20 20 61 34 2c 20  61 33 0a 0d 20 20 20 20  |    a4, a3..    |
00007740  20 20 20 20 20 20 6c 64  72 20 20 20 20 20 20 20  |      ldr       |
00007750  61 33 2c 20 5b 72 30 2c  20 61 33 2c 20 6c 73 6c  |a3, [r0, a3, lsl|
00007760  20 23 32 5d 0a 0d 20 20  20 20 20 20 20 20 20 20  | #2]..          |
00007770  63 6d 70 20 20 20 20 20  20 20 61 33 2c 20 30 0a  |cmp       a3, 0.|
00007780  0d 20 20 20 20 20 20 20  20 20 20 62 65 71 20 20  |.          beq  |
00007790  20 20 20 20 20 52 65 73  43 66 6c 74 0a 0d 20 20  |     ResCflt..  |
000077a0  20 20 20 20 20 20 20 20  63 6d 70 20 20 20 20 20  |        cmp     |
000077b0  20 20 61 31 2c 20 61 33  20 20 20 20 20 20 20 20  |  a1, a3        |
000077c0  20 20 20 20 20 20 3b 20  43 6f 70 74 72 0a 0d 20  |      ; Coptr.. |
000077d0  20 20 20 20 20 20 20 20  20 62 6e 65 20 20 20 20  |         bne    |
000077e0  20 20 20 64 6c 63 6c 32  0a 0d 20 20 20 20 20 20  |   dlcl2..      |
000077f0  20 20 20 20 6c 64 72 20  20 20 20 20 20 20 61 32  |    ldr       a2|
00007800  2c 20 5b 72 30 2c 20 61  31 2c 20 6c 73 6c 20 23  |, [r0, a1, lsl #|
00007810  32 5d 0a 0d 20 20 20 20  20 20 20 20 20 20 73 74  |2]..          st|
00007820  72 20 20 20 20 20 20 20  61 32 2c 20 5b 72 30 2c  |r       a2, [r0,|
00007830  20 61 34 2c 20 6c 73 6c  20 23 32 5d 0a 0d 20 20  | a4, lsl #2]..  |
00007840  20 20 20 20 20 20 20 20  62 6c 20 20 20 20 20 20  |        bl      |
00007850  20 20 46 72 65 65 56 65  63 0a 0d 20 20 20 20 20  |  FreeVec..     |
00007860  20 20 20 20 20 6d 6f 76  20 20 20 20 20 20 20 72  |     mov       r|
00007870  74 73 2c 20 72 66 70 0a  0d 20 20 20 20 20 20 20  |ts, rfp..       |
00007880  20 20 20 6c 64 6d 65 64  20 20 20 20 20 72 74 73  |   ldmed     rts|
00007890  2c 20 7b 72 66 70 2c 20  72 6c 2c 20 70 63 7d 5e  |, {rfp, rl, pc}^|
000078a0  0a 0d 0a 0d 20 20 20 20  20 20 20 20 20 20 2e 6c  |....          .l|
000078b0  6f 6e 67 20 20 20 20 20  2d 31 0a 0d 20 20 20 20  |ong     -1..    |
000078c0  20 20 20 20 20 20 2e 61  73 63 69 63 20 20 20 20  |      .ascic    |
000078d0  22 43 61 6c 6c 43 6f 20  22 0a 0d 43 61 6c 6c 43  |"CallCo "..CallC|
000078e0  6f 3a 20 20 20 73 74 6d  65 61 20 20 20 20 20 72  |o:   stmea     r|
000078f0  74 73 21 2c 20 7b 72 62  2c 20 72 66 70 2c 20 72  |ts!, {rb, rfp, r|
00007900  6c 2c 20 6c 72 7d 0a 0d  20 20 20 20 20 20 20 20  |l, lr}..        |
00007910  20 20 73 75 62 20 20 20  20 20 20 20 72 66 70 2c  |  sub       rfp,|
00007920  20 72 74 73 2c 20 23 31  36 0a 0d 20 20 20 20 20  | rts, #16..     |
00007930  20 20 20 20 20 73 74 6d  65 61 20 20 20 20 20 72  |     stmea     r|
00007940  74 73 21 2c 20 7b 61 31  2c 20 61 32 7d 20 20 20  |ts!, {a1, a2}   |
00007950  20 20 20 20 3b 20 43 61  6c 6c 43 6f 28 20 43 6f  |    ; CallCo( Co|
00007960  70 74 72 2c 20 61 72 67  20 29 0a 0d 20 20 20 20  |ptr, arg )..    |
00007970  20 20 20 20 20 20 6d 6f  76 20 20 20 20 20 20 20  |      mov       |
00007980  61 33 2c 20 61 31 2c 20  6c 73 6c 20 23 32 0a 0d  |a3, a1, lsl #2..|
00007990  20 20 20 20 20 20 20 20  20 20 6c 64 72 20 20 20  |          ldr   |
000079a0  20 20 20 20 61 34 2c 20  5b 61 33 2c 20 23 34 5d  |    a4, [a3, #4]|
000079b0  20 20 20 20 20 20 20 20  3b 20 69 66 20 63 6f 70  |        ; if cop|
000079c0  74 72 21 31 20 3d 20 30  20 67 6f 74 6f 20 52 65  |tr!1 = 0 goto Re|
000079d0  73 43 66 6c 74 0a 0d 20  20 20 20 20 20 20 20 20  |sCflt..         |
000079e0  20 63 6d 70 20 20 20 20  20 20 20 61 34 2c 20 23  | cmp       a4, #|
000079f0  30 0a 0d 20 20 20 20 20  20 20 20 20 20 62 6e 65  |0..          bne|
00007a00  20 20 20 20 20 20 20 52  65 73 43 66 6c 74 20 20  |       ResCflt  |
00007a10  20 20 20 20 20 20 20 20  20 20 20 20 3b 20 4e 6f  |            ; No|
00007a20  74 20 77 61 69 74 69 6e  67 0a 0d 20 20 20 20 20  |t waiting..     |
00007a30  20 20 20 20 20 6c 64 72  20 20 20 20 20 20 20 72  |     ldr       r|
00007a40  62 2c 20 5b 72 67 2c 20  23 53 74 61 63 6b 62 61  |b, [rg, #Stackba|
00007a50  73 65 5d 0a 0d 20 20 20  20 20 20 20 20 20 20 73  |se]..          s|
00007a60  74 72 20 20 20 20 20 20  20 72 62 2c 20 5b 61 33  |tr       rb, [a3|
00007a70  2c 20 23 34 5d 20 20 20  20 20 20 20 20 3b 20 43  |, #4]        ; C|
00007a80  6f 70 74 72 21 31 20 3a  3d 20 43 61 6c 6c 69 6e  |optr!1 := Callin|
00007a90  67 20 53 74 61 63 6b 62  61 73 65 0a 0d 20 20 20  |g Stackbase..   |
00007aa0  20 20 20 20 20 20 20 6d  6f 76 20 20 20 20 20 20  |       mov      |
00007ab0  20 72 62 2c 20 72 62 2c  20 6c 73 6c 20 23 32 0a  | rb, rb, lsl #2.|
00007ac0  0d 43 61 6c 6c 43 6f 31  3a 20 20 73 74 72 20 20  |.CallCo1:  str  |
00007ad0  20 20 20 20 20 61 31 2c  20 5b 72 67 2c 20 23 53  |     a1, [rg, #S|
00007ae0  74 61 63 6b 62 61 73 65  5d 3b 20 53 74 61 63 6b  |tackbase]; Stack|
00007af0  62 61 73 65 20 3a 3d 20  43 6f 70 74 72 0a 0d 20  |base := Coptr.. |
00007b00  20 20 20 20 20 20 20 20  20 73 74 72 20 20 20 20  |         str    |
00007b10  20 20 20 72 66 70 2c 20  5b 72 62 2c 20 23 31 36  |   rfp, [rb, #16|
00007b20  5d 20 20 20 20 20 20 3b  20 4f 6c 64 53 74 61 63  |]      ; OldStac|
00007b30  6b 62 61 73 65 21 34 20  3a 3d 20 72 66 70 0a 0d  |kbase!4 := rfp..|
00007b40  20 20 20 20 20 20 20 20  20 20 6c 64 72 20 20 20  |          ldr   |
00007b50  20 20 20 20 72 74 73 2c  20 5b 61 33 2c 20 23 31  |    rts, [a3, #1|
00007b60  36 5d 20 20 20 20 20 20  3b 20 72 74 73 20 3a 3d  |6]      ; rts :=|
00007b70  20 43 6f 70 74 72 21 34  0a 0d 20 20 20 20 20 20  | Coptr!4..      |
00007b80  20 20 20 20 6d 6f 76 20  20 20 20 20 20 20 61 31  |    mov       a1|
00007b90  2c 20 61 32 20 20 20 20  20 20 20 20 20 20 20 20  |, a2            |
00007ba0  20 20 3b 20 61 72 67 0a  0d 20 20 20 20 20 20 20  |  ; arg..       |
00007bb0  20 20 20 6c 64 6d 65 64  20 20 20 20 20 72 74 73  |   ldmed     rts|
00007bc0  2c 20 7b 72 66 70 2c 20  72 6c 2c 20 70 63 7d 5e  |, {rfp, rl, pc}^|
00007bd0  0a 0d 0a 0d 20 20 20 20  20 20 20 20 20 20 2e 6c  |....          .l|
00007be0  6f 6e 67 20 20 20 20 20  2d 31 0a 0d 20 20 20 20  |ong     -1..    |
00007bf0  20 20 20 20 20 20 2e 61  73 63 69 43 20 20 20 20  |      .asciC    |
00007c00  22 52 65 73 75 6d 65 43  22 0a 0d 52 65 73 75 6d  |"ResumeC"..Resum|
00007c10  65 43 3a 20 20 73 74 6d  65 61 20 20 20 20 20 72  |eC:  stmea     r|
00007c20  74 73 21 2c 20 7b 20 72  62 2c 72 66 70 2c 20 72  |ts!, { rb,rfp, r|
00007c30  6c 2c 20 6c 72 7d 0a 0d  20 20 20 20 20 20 20 20  |l, lr}..        |
00007c40  20 20 73 75 62 20 20 20  20 20 20 20 72 66 70 2c  |  sub       rfp,|
00007c50  20 72 74 73 2c 20 23 31  36 0a 0d 20 20 20 20 20  | rts, #16..     |
00007c60  20 20 20 20 20 73 74 6d  65 61 20 20 20 20 20 72  |     stmea     r|
00007c70  74 73 21 2c 20 7b 61 31  2c 20 61 32 7d 20 20 20  |ts!, {a1, a2}   |
00007c80  20 20 20 3b 20 52 65 73  75 6d 65 43 6f 28 20 63  |   ; ResumeCo( c|
00007c90  6f 70 74 72 2c 20 41 72  67 20 29 0a 0d 20 20 20  |optr, Arg )..   |
00007ca0  20 20 20 20 20 20 20 6c  64 72 20 20 20 20 20 20  |       ldr      |
00007cb0  20 72 62 2c 20 5b 72 67  2c 20 23 53 74 61 63 6b  | rb, [rg, #Stack|
00007cc0  62 61 73 65 5d 0a 0d 20  20 20 20 20 20 20 20 20  |base]..         |
00007cd0  20 63 6d 70 20 20 20 20  20 20 20 72 62 2c 20 61  | cmp       rb, a|
00007ce0  31 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3b  |1              ;|
00007cf0  20 52 65 73 75 6d 65 20  6f 6e 65 73 65 6c 66 20  | Resume oneself |
00007d00  3d 3d 20 43 61 6c 6c 0a  0d 20 20 20 20 20 20 20  |== Call..       |
00007d10  20 20 20 62 65 71 20 20  20 20 20 20 20 72 65 73  |   beq       res|
00007d20  63 6f 32 0a 0d 20 20 20  20 20 20 20 20 20 20 6d  |co2..          m|
00007d30  6f 76 20 20 20 20 20 20  20 61 33 2c 20 61 31 2c  |ov       a3, a1,|
00007d40  20 6c 73 6c 20 23 32 0a  0d 20 20 20 20 20 20 20  | lsl #2..       |
00007d50  20 20 20 6c 64 72 20 20  20 20 20 20 20 61 34 2c  |   ldr       a4,|
00007d60  20 5b 61 33 2c 20 23 34  5d 20 20 20 20 20 20 20  | [a3, #4]       |
00007d70  20 3b 20 61 34 20 3a 3d  20 6f 77 6e 65 72 0a 0d  | ; a4 := owner..|
00007d80  20 20 20 20 20 20 20 20  20 20 62 6e 65 20 20 20  |          bne   |
00007d90  20 20 20 20 52 65 73 43  66 6c 74 20 20 20 20 20  |    ResCflt     |
00007da0  20 20 20 20 20 20 20 20  20 3b 20 45 78 69 73 74  |         ; Exist|
00007db0  73 2c 20 65 72 72 6f 72  20 72 65 74 75 72 6e 0a  |s, error return.|
00007dc0  0d 20 20 20 20 20 20 20  20 20 20 6d 6f 76 20 20  |.          mov  |
00007dd0  20 20 20 20 20 72 62 2c  20 72 62 2c 20 6c 73 6c  |     rb, rb, lsl|
00007de0  20 23 32 0a 0d 72 65 73  63 6f 33 3a 20 20 20 6c  | #2..resco3:   l|
00007df0  64 72 20 20 20 20 20 20  20 61 34 2c 20 5b 72 62  |dr       a4, [rb|
00007e00  2c 20 23 34 5d 0a 0d 20  20 20 20 20 20 20 20 20  |, #4]..         |
00007e10  20 63 6d 6e 73 20 20 20  20 20 20 61 34 2c 20 23  | cmns      a4, #|
00007e20  31 0a 0d 20 20 20 20 20  20 20 20 20 20 62 65 71  |1..          beq|
00007e30  20 20 20 20 20 20 20 52  65 73 43 66 6c 74 0a 0d  |       ResCflt..|
00007e40  20 20 20 20 20 20 20 20  20 20 73 74 72 20 20 20  |          str   |
00007e50  20 20 20 20 61 34 2c 20  5b 61 33 2c 20 23 34 5d  |    a4, [a3, #4]|
00007e60  20 20 20 20 20 20 20 20  3b 20 6f 77 6e 65 72 20  |        ; owner |
00007e70  6f 66 20 6e 65 77 20 3a  3d 20 4f 77 6e 65 72 20  |of new := Owner |
00007e80  6f 66 20 6f 6c 64 0a 0d  20 20 20 20 20 20 20 20  |of old..        |
00007e90  20 20 6d 6f 76 20 20 20  20 20 20 20 61 34 2c 20  |  mov       a4, |
00007ea0  23 30 0a 0d 20 20 20 20  20 20 20 20 20 20 73 74  |#0..          st|
00007eb0  72 20 20 20 20 20 20 20  61 34 2c 20 5b 72 62 2c  |r       a4, [rb,|
00007ec0  20 23 34 5d 20 20 20 20  20 20 20 20 3b 20 43 6f  | #4]        ; Co|
00007ed0  57 61 69 74 20 6f 6c 64  0a 0d 20 20 20 20 20 20  |Wait old..      |
00007ee0  20 20 20 20 62 20 20 20  20 20 20 20 20 20 43 61  |    b         Ca|
00007ef0  6c 6c 43 6f 31 0a 0d 72  65 73 63 6f 32 3a 20 20  |llCo1..resco2:  |
00007f00  20 6d 6f 76 20 20 20 20  20 20 20 61 31 2c 20 61  | mov       a1, a|
00007f10  32 0a 0d 20 20 20 20 20  20 20 20 20 20 6d 6f 76  |2..          mov|
00007f20  20 20 20 20 20 20 20 72  74 73 2c 20 72 66 70 0a  |       rts, rfp.|
00007f30  0d 20 20 20 20 20 20 20  20 20 20 6c 64 6d 65 64  |.          ldmed|
00007f40  20 20 20 20 20 72 74 73  2c 20 7b 72 66 70 2c 20  |     rts, {rfp, |
00007f50  72 6c 2c 20 6c 72 7d 5e  0a 0d 52 65 73 43 66 6c  |rl, lr}^..ResCfl|
00007f60  74 3a 20 20 41 44 52 20  20 20 20 20 20 20 61 31  |t:  ADR       a1|
00007f70  2c 20 52 65 73 43 65 72  72 0a 0d 20 20 20 20 20  |, ResCerr..     |
00007f80  20 20 20 20 20 6d 6f 76  20 20 20 20 20 20 20 61  |     mov       a|
00007f90  31 2c 20 23 31 33 0a 0d  20 20 20 20 20 20 20 20  |1, #13..        |
00007fa0  20 20 73 74 72 20 20 20  20 20 20 20 61 31 2c 20  |  str       a1, |
00007fb0  5b 72 67 2c 20 23 52 65  74 75 72 6e 43 6f 64 65  |[rg, #ReturnCode|
00007fc0  5d 0a 0d 46 61 75 6c 74  73 3a 20 20 20 6d 6f 76  |]..Faults:   mov|
00007fd0  20 20 20 20 20 20 20 61  31 2c 20 61 31 2c 20 6c  |       a1, a1, l|
00007fe0  73 72 20 23 32 0a 0d 20  20 20 20 20 20 20 20 20  |sr #2..         |
00007ff0  20 6c 64 72 20 20 20 20  20 20 20 72 62 2c 20 5b  | ldr       rb, [|
00008000  72 67 2c 20 23 46 61 75  6c 74 5d 0a 0d 20 20 20  |rg, #Fault]..   |
00008010  20 20 20 20 20 20 20 73  77 69 20 20 20 20 20 20  |       swi      |
00008020  20 4f 53 5f 4e 65 77 4c  69 6e 65 0a 0d 20 20 20  | OS_NewLine..   |
00008030  20 20 20 20 20 20 20 62  6c 20 20 20 20 20 20 20  |       bl       |
00008040  20 43 61 6c 6c 0a 0d 20  20 20 20 20 20 20 20 20  | Call..         |
00008050  20 62 20 20 20 20 20 20  20 20 20 46 69 6e 69 73  | b         Finis|
00008060  68 0a 0d 52 65 73 43 65  72 72 3a 20 20 2e 61 73  |h..ResCerr:  .as|
00008070  63 69 63 20 20 20 20 22  43 6f 72 6f 75 74 69 6e  |cic    "Coroutin|
00008080  65 20 65 72 72 6f 72 5c  6e 22 0a 0d 20 20 20 20  |e error\n"..    |
00008090  20 20 20 20 20 20 2e 61  6c 69 67 6e 0a 0d 52 65  |      .align..Re|
000080a0  73 43 37 38 3a 20 20 20  2e 61 73 63 69 69 20 20  |sC78:   .ascii  |
000080b0  20 20 22 56 45 52 4e 22  0a 0d 20 20 20 20 20 20  |  "VERN"..      |
000080c0  20 20 20 20 2e 6c 6f 6e  67 20 20 20 20 20 2d 31  |    .long     -1|
000080d0  0a 0d 20 20 20 20 20 20  20 20 20 20 2e 61 73 63  |..          .asc|
000080e0  69 63 20 20 20 20 22 47  65 74 56 65 63 74 22 0a  |ic    "GetVect".|
000080f0  0d 47 65 74 56 65 63 3a  20 20 20 6d 6f 76 20 20  |.GetVec:   mov  |
00008100  20 20 20 20 20 72 30 2c  20 23 32 0a 0d 20 20 20  |     r0, #2..   |
00008110  20 20 20 20 20 20 20 61  64 64 20 20 20 20 20 20  |       add      |
00008120  20 61 31 2c 20 61 31 2c  20 23 31 0a 0d 20 20 20  | a1, a1, #1..   |
00008130  20 20 20 20 20 20 20 6d  6f 76 20 20 20 20 20 20  |       mov      |
00008140  20 61 33 2c 20 61 31 2c  20 6c 73 6c 20 23 32 0a  | a3, a1, lsl #2.|
00008150  0d 43 6f 6d 76 65 63 3a  20 20 20 6c 64 72 20 20  |.Comvec:   ldr  |
00008160  20 20 20 20 20 61 31 2c  20 5b 72 67 2c 20 23 48  |     a1, [rg, #H|
00008170  65 61 70 44 65 73 63 72  69 70 74 6f 72 5d 0a 0d  |eapDescriptor]..|
00008180  20 20 20 20 20 20 20 20  20 20 73 77 69 20 20 20  |          swi   |
00008190  20 20 20 20 4f 53 5f 48  65 61 70 20 2b 20 58 4f  |    OS_Heap + XO|
000081a0  53 0a 0d 20 20 20 20 20  20 20 20 20 20 6d 6f 76  |S..          mov|
000081b0  20 20 20 20 20 20 20 61  31 2c 20 61 32 2c 20 6c  |       a1, a2, l|
000081c0  73 72 20 23 32 0a 0d 20  20 20 20 20 20 20 20 20  |sr #2..         |
000081d0  20 6d 6f 76 76 63 20 20  20 20 20 72 30 2c 20 23  | movvc     r0, #|
000081e0  30 0a 0d 20 20 20 20 20  20 20 20 20 20 6d 76 6e  |0..          mvn|
000081f0  76 73 20 20 20 20 20 72  30 2c 20 23 30 0a 0d 20  |vs     r0, #0.. |
00008200  20 20 20 20 20 20 20 20  20 73 74 72 20 20 20 20  |         str    |
00008210  20 20 20 72 30 2c 20 5b  20 72 67 2c 20 23 52 65  |   r0, [ rg, #Re|
00008220  73 75 6c 74 32 20 5d 0a  0d 20 20 20 20 20 20 20  |sult2 ]..       |
00008230  20 20 20 6d 6f 76 76 63  20 20 20 20 20 70 63 2c  |   movvc     pc,|
00008240  20 6c 72 20 20 20 20 20  20 20 20 20 20 20 20 20  | lr             |
00008250  20 20 3b 20 65 72 72 6f  72 20 72 65 74 75 72 6e  |  ; error return|
00008260  20 6e 6f 77 20 69 66 20  52 65 73 75 6c 74 32 0a  | now if Result2.|
00008270  0d 20 20 20 20 20 20 20  20 20 20 41 44 52 20 20  |.          ADR  |
00008280  20 20 20 20 20 61 31 2c  20 47 76 0a 0d 20 20 20  |     a1, Gv..   |
00008290  20 20 20 20 20 20 20 62  20 20 20 20 20 20 20 20  |       b        |
000082a0  20 46 61 75 6c 74 73 0a  0d 47 76 3a 20 20 20 20  | Faults..Gv:    |
000082b0  20 20 20 2e 61 73 63 69  63 20 20 20 20 22 48 65  |   .ascic    "He|
000082c0  61 70 20 66 61 75 6c 74  22 0a 0d 20 20 20 20 20  |ap fault"..     |
000082d0  20 20 20 20 20 2e 61 6c  69 67 6e 0a 0d 20 20 20  |     .align..   |
000082e0  20 20 20 20 20 20 20 2e  6c 6f 6e 67 20 20 20 20  |       .long    |
000082f0  20 2d 31 0a 0d 20 20 20  20 20 20 20 20 20 20 2e  | -1..          .|
00008300  61 73 63 69 63 20 20 20  20 20 22 4d 61 78 56 65  |ascic     "MaxVe|
00008310  63 74 22 0a 0d 4d 61 78  56 65 63 3a 20 20 20 6d  |ct"..MaxVec:   m|
00008320  6f 76 20 20 20 20 20 20  20 72 30 2c 20 23 31 0a  |ov       r0, #1.|
00008330  0d 20 20 20 20 20 20 20  20 20 20 62 20 20 20 20  |.          b    |
00008340  20 20 20 20 20 43 6f 6d  76 65 63 0a 0d 20 20 20  |     Comvec..   |
00008350  20 20 20 20 20 20 20 2e  6c 6f 6e 67 20 20 20 20  |       .long    |
00008360  20 2d 31 0a 0d 20 20 20  20 20 20 20 20 20 20 2e  | -1..          .|
00008370  61 73 63 69 63 20 20 20  20 22 46 72 65 65 56 65  |ascic    "FreeVe|
00008380  63 22 0a 0d 46 72 65 65  56 65 63 3a 20 20 63 6d  |c"..FreeVec:  cm|
00008390  70 20 20 20 20 20 20 20  61 31 2c 20 23 30 0a 0d  |p       a1, #0..|
000083a0  20 20 20 20 20 20 20 20  20 20 6d 6f 76 65 71 20  |          moveq |
000083b0  20 20 20 20 70 63 2c 20  6c 72 20 20 20 20 20 20  |    pc, lr      |
000083c0  20 20 20 20 20 20 20 20  3b 20 72 65 74 75 72 6e  |        ; return|
000083d0  20 69 66 20 30 0a 0d 20  20 20 20 20 20 20 20 20  | if 0..         |
000083e0  20 6d 6f 76 20 20 20 20  20 20 20 72 30 2c 20 23  | mov       r0, #|
000083f0  33 0a 0d 20 20 20 20 20  20 20 20 20 20 6d 6f 76  |3..          mov|
00008400  20 20 20 20 20 20 20 61  32 2c 20 61 31 2c 20 6c  |       a2, a1, l|
00008410  73 6c 20 23 32 0a 0d 20  20 20 20 20 20 20 20 20  |sl #2..         |
00008420  20 62 20 20 20 20 20 20  20 20 20 43 6f 6d 76 65  | b         Comve|
00008430  63 0a 0d 68 65 78 62 75  66 3a 20 20 20 2e 62 6c  |c..hexbuf:   .bl|
00008440  6b 62 20 20 20 20 20 39  0a 0d 20 20 20 20 20 20  |kb     9..      |
00008450  20 20 20 20 2e 61 6c 69  67 6e 0a 0d 0a 0d 20 20  |    .align....  |
00008460  20 20 20 20 20 20 20 20  2e 6c 6f 6e 67 20 20 20  |        .long   |
00008470  20 20 2d 31 0a 0d 20 20  20 20 20 20 20 20 20 20  |  -1..          |
00008480  2e 61 73 63 69 63 20 20  20 20 22 4f 53 46 69 6e  |.ascic    "OSFin|
00008490  64 20 22 0a 0d 4f 53 46  69 6e 64 3a 20 20 20 6d  |d "..OSFind:   m|
000084a0  6f 76 73 20 20 20 20 20  20 72 30 2c 20 61 31 0a  |ovs      r0, a1.|
000084b0  0d 20 20 20 20 20 20 20  20 20 20 62 6e 65 20 20  |.          bne  |
000084c0  20 20 20 20 20 4f 53 46  4f 70 65 6e 0a 0d 20 20  |     OSFOpen..  |
000084d0  20 20 20 20 20 20 20 20  6d 6f 76 20 20 20 20 20  |        mov     |
000084e0  20 20 61 31 2c 20 61 32  20 20 20 20 20 20 20 20  |  a1, a2        |
000084f0  20 20 20 20 20 20 3b 20  68 61 6e 64 6c 65 0a 0d  |      ; handle..|
00008500  20 20 20 20 20 20 20 20  20 20 73 77 69 20 20 20  |          swi   |
00008510  20 20 20 20 4f 53 5f 46  69 6e 64 0a 0d 20 20 20  |    OS_Find..   |
00008520  20 20 20 20 20 20 20 6d  6f 76 20 20 20 20 20 20  |       mov      |
00008530  20 61 31 2c 20 72 30 0a  0d 20 20 20 20 20 20 20  | a1, r0..       |
00008540  20 20 20 6d 6f 76 20 20  20 20 20 20 20 70 63 2c  |   mov       pc,|
00008550  20 6c 72 0a 0d 0a 0d 4f  53 46 4f 70 65 6e 3a 20  | lr....OSFOpen: |
00008560  20 63 6d 70 20 20 20 20  20 20 20 61 32 2c 20 23  | cmp       a2, #|
00008570  30 0a 0d 20 20 20 20 20  20 20 20 20 20 6d 76 6e  |0..          mvn|
00008580  6c 65 20 20 20 20 20 61  34 2c 20 23 30 0a 0d 20  |le     a4, #0.. |
00008590  20 20 20 20 20 20 20 20  20 6d 6f 76 6c 74 20 20  |         movlt  |
000085a0  20 20 20 61 31 2c 20 23  30 0a 0d 20 20 20 20 20  |   a1, #0..     |
000085b0  20 20 20 20 20 73 75 62  6c 74 20 20 20 20 20 61  |     sublt     a|
000085c0  31 2c 20 61 31 2c 20 61  32 0a 0d 20 20 20 20 20  |1, a1, a2..     |
000085d0  20 20 20 20 20 6d 6f 76  67 65 20 20 20 20 20 61  |     movge     a|
000085e0  31 2c 20 61 32 2c 20 6c  73 6c 20 23 32 0a 0d 20  |1, a2, lsl #2.. |
000085f0  20 20 20 20 20 20 20 20  20 6c 64 72 67 65 62 20  |         ldrgeb |
00008600  20 20 20 61 32 2c 20 5b  61 31 5d 2c 20 23 31 20  |   a2, [a1], #1 |
00008610  20 20 20 20 20 20 20 3b  20 73 74 72 69 6e 67 20  |       ; string |
00008620  62 79 74 65 20 62 61 73  65 2c 20 6c 65 6e 67 74  |byte base, lengt|
00008630  68 0a 0d 20 20 20 20 20  20 20 20 20 20 61 64 64  |h..          add|
00008640  67 65 20 20 20 20 20 61  33 2c 20 61 32 2c 20 61  |ge     a3, a2, a|
00008650  31 20 20 20 20 20 20 20  20 20 20 3b 20 73 74 72  |1          ; str|
00008660  69 6e 67 20 62 79 74 65  20 74 65 72 6d 69 6e 61  |ing byte termina|
00008670  74 6f 72 20 70 6f 73 69  74 69 6f 6e 0a 0d 20 20  |tor position..  |
00008680  20 20 20 20 20 20 20 20  6c 64 72 67 65 62 20 20  |        ldrgeb  |
00008690  20 61 34 2c 20 5b 61 33  5d 0a 0d 20 20 20 20 20  | a4, [a3]..     |
000086a0  20 20 20 20 20 6d 6f 76  67 65 20 20 20 20 20 72  |     movge     r|
000086b0  35 2c 20 23 30 0a 0d 20  20 20 20 20 20 20 20 20  |5, #0..         |
000086c0  20 73 74 72 67 65 62 20  20 20 20 72 35 2c 20 5b  | strgeb    r5, [|
000086d0  61 33 5d 0a 0d 20 20 20  20 20 20 20 20 20 20 73  |a3]..          s|
000086e0  77 69 20 20 20 20 20 20  20 4f 53 5f 46 69 6e 64  |wi       OS_Find|
000086f0  2b 58 4f 53 0a 0d 20 20  20 20 20 20 20 20 20 20  |+XOS..          |
00008700  6d 6f 76 76 63 20 20 20  20 20 61 31 2c 20 23 30  |movvc     a1, #0|
00008710  0a 0d 20 20 20 20 20 20  20 20 20 20 6d 76 6e 76  |..          mvnv|
00008720  73 20 20 20 20 20 61 31  2c 20 23 30 0a 0d 20 20  |s     a1, #0..  |
00008730  20 20 20 20 20 20 20 20  73 74 72 20 20 20 20 20  |        str     |
00008740  20 20 61 31 2c 20 5b 72  67 2c 20 23 52 65 73 75  |  a1, [rg, #Resu|
00008750  6c 74 32 5d 0a 0d 20 20  20 20 20 20 20 20 20 20  |lt2]..          |
00008760  63 6d 70 20 20 20 20 20  20 20 61 34 2c 20 23 30  |cmp       a4, #0|
00008770  0a 0d 20 20 20 20 20 20  20 20 20 20 73 74 72 67  |..          strg|
00008780  65 62 20 20 20 20 61 34  2c 20 5b 61 33 5d 20 20  |eb    a4, [a3]  |
00008790  20 20 20 20 20 20 20 20  20 20 3b 20 72 65 73 74  |          ; rest|
000087a0  6f 72 65 0a 0d 20 20 20  20 20 20 20 20 20 20 6d  |ore..          m|
000087b0  6f 76 20 20 20 20 20 20  20 61 31 2c 20 72 30 0a  |ov       a1, r0.|
000087c0  0d 20 20 20 20 20 20 20  20 20 20 6d 6f 76 20 20  |.          mov  |
000087d0  20 20 20 20 20 70 63 2c  20 6c 72 0a 0d 67 6c 6f  |     pc, lr..glo|
000087e0  62 69 6e 69 74 73 3a 0a  0d 20 20 20 20 20 20 20  |binits:..       |
000087f0  20 20 20 2e 6c 6f 6e 67  20 20 20 20 20 31 36 0a  |   .long     16.|
00008800  0d 20 20 20 20 20 20 20  20 20 20 2e 6c 6f 6e 67  |.          .long|
00008810  20 20 20 20 20 4d 75 6c  64 69 76 20 2d 20 53 74  |     Muldiv - St|
00008820  0a 0d 20 20 20 20 20 20  20 20 20 20 2e 6c 6f 6e  |..          .lon|
00008830  67 20 20 20 20 20 33 35  0a 0d 20 20 20 20 20 20  |g     35..      |
00008840  20 20 20 20 2e 6c 6f 6e  67 20 20 20 20 20 53 74  |    .long     St|
00008850  6f 70 20 2d 20 53 74 0a  0d 20 20 20 20 20 20 20  |op - St..       |
00008860  20 20 20 2e 6c 6f 6e 67  20 20 20 20 20 33 37 0a  |   .long     37.|
00008870  0d 20 20 20 20 20 20 20  20 20 20 2e 6c 6f 6e 67  |.          .long|
00008880  20 20 20 20 20 47 42 79  74 65 73 20 2d 20 53 74  |     GBytes - St|
00008890  0a 0d 20 20 20 20 20 20  20 20 20 20 2e 6c 6f 6e  |..          .lon|
000088a0  67 20 20 20 20 20 33 38  0a 0d 20 20 20 20 20 20  |g     38..      |
000088b0  20 20 20 20 2e 6c 6f 6e  67 20 20 20 20 20 50 42  |    .long     PB|
000088c0  79 74 65 73 20 2d 20 53  74 0a 0d 20 20 20 20 20  |ytes - St..     |
000088d0  20 20 20 20 20 2e 6c 6f  6e 67 20 20 20 20 20 34  |     .long     4|
000088e0  31 0a 0d 20 20 20 20 20  20 20 20 20 20 2e 6c 6f  |1..          .lo|
000088f0  6e 67 20 20 20 20 20 4c  65 76 65 6c 20 20 2d 20  |ng     Level  - |
00008900  53 74 0a 0d 20 20 20 20  20 20 20 20 20 20 2e 6c  |St..          .l|
00008910  6f 6e 67 20 20 20 20 20  34 32 0a 0d 20 20 20 20  |ong     42..    |
00008920  20 20 20 20 20 20 2e 6c  6f 6e 67 20 20 20 20 20  |      .long     |
00008930  4c 6f 6e 67 4a 75 6d 70  20 2d 20 53 74 0a 0d 20  |LongJump - St.. |
00008940  20 20 20 20 20 20 20 20  20 2e 6c 6f 6e 67 20 20  |         .long  |
00008950  20 20 20 34 38 0a 0d 20  20 20 20 20 20 20 20 20  |   48..         |
00008960  20 2e 6c 6f 6e 67 20 20  20 20 20 43 72 65 61 74  | .long     Creat|
00008970  65 43 20 2d 20 53 74 0a  0d 20 20 20 20 20 20 20  |eC - St..       |
00008980  20 20 20 2e 6c 6f 6e 67  20 20 20 20 20 34 39 0a  |   .long     49.|
00008990  0d 20 20 20 20 20 20 20  20 20 20 2e 6c 6f 6e 67  |.          .long|
000089a0  20 20 20 20 20 44 65 6c  65 74 65 43 20 2d 20 53  |     DeleteC - S|
000089b0  74 0a 0d 20 20 20 20 20  20 20 20 20 20 2e 6c 6f  |t..          .lo|
000089c0  6e 67 20 20 20 20 20 35  30 0a 0d 20 20 20 20 20  |ng     50..     |
000089d0  20 20 20 20 20 2e 6c 6f  6e 67 20 20 20 20 20 43  |     .long     C|
000089e0  61 6c 6c 43 6f 20 2d 20  53 74 0a 0d 20 20 20 20  |allCo - St..    |
000089f0  20 20 20 20 20 20 2e 6c  6f 6e 67 20 20 20 20 20  |      .long     |
00008a00  35 31 0a 0d 20 20 20 20  20 20 20 20 20 20 2e 6c  |51..          .l|
00008a10  6f 6e 67 20 20 20 20 20  52 65 73 75 6d 65 43 20  |ong     ResumeC |
00008a20  2d 20 53 74 0a 0d 20 20  20 20 20 20 20 20 20 20  |- St..          |
00008a30  2e 6c 6f 6e 67 20 20 20  20 20 35 32 0a 0d 20 20  |.long     52..  |
00008a40  20 20 20 20 20 20 20 20  2e 6c 6f 6e 67 20 20 20  |        .long   |
00008a50  20 20 43 6f 57 61 69 74  20 2d 20 53 74 0a 0d 20  |  CoWait - St.. |
00008a60  20 20 20 20 20 20 20 20  20 2e 6c 6f 6e 67 20 20  |         .long  |
00008a70  20 20 20 35 34 0a 0d 20  20 20 20 20 20 20 20 20  |   54..         |
00008a80  20 2e 6c 6f 6e 67 20 20  20 20 20 47 65 74 56 65  | .long     GetVe|
00008a90  63 20 2d 20 53 74 0a 0d  20 20 20 20 20 20 20 20  |c - St..        |
00008aa0  20 20 2e 6c 6f 6e 67 20  20 20 20 20 35 35 0a 0d  |  .long     55..|
00008ab0  20 20 20 20 20 20 20 20  20 20 2e 6c 6f 6e 67 20  |          .long |
00008ac0  20 20 20 20 46 72 65 65  56 65 63 20 2d 20 53 74  |    FreeVec - St|
00008ad0  0a 0d 20 20 20 20 20 20  20 20 20 20 2e 6c 6f 6e  |..          .lon|
00008ae0  67 20 20 20 20 20 35 36  0a 0d 20 20 20 20 20 20  |g     56..      |
00008af0  20 20 20 20 2e 6c 6f 6e  67 20 20 20 20 20 4d 61  |    .long     Ma|
00008b00  78 56 65 63 20 2d 20 53  74 0a 0d 20 20 20 20 20  |xVec - St..     |
00008b10  20 20 20 20 20 2e 6c 6f  6e 67 20 20 20 20 20 39  |     .long     9|
00008b20  36 0a 0d 20 20 20 20 20  20 20 20 20 20 2e 6c 6f  |6..          .lo|
00008b30  6e 67 20 20 20 20 20 4f  53 41 72 67 73 20 2d 20  |ng     OSArgs - |
00008b40  53 74 0a 0d 20 20 20 20  20 20 20 20 20 20 2e 6c  |St..          .l|
00008b50  6f 6e 67 20 20 20 20 20  39 37 0a 0d 20 20 20 20  |ong     97..    |
00008b60  20 20 20 20 20 20 2e 6c  6f 6e 67 20 20 20 20 20  |      .long     |
00008b70  4f 53 42 47 65 74 20 2d  20 53 74 0a 0d 20 20 20  |OSBGet - St..   |
00008b80  20 20 20 20 20 20 20 2e  6c 6f 6e 67 20 20 20 20  |       .long    |
00008b90  20 39 38 0a 0d 20 20 20  20 20 20 20 20 20 20 2e  | 98..          .|
00008ba0  6c 6f 6e 67 20 20 20 20  20 4f 53 42 50 75 74 20  |long     OSBPut |
00008bb0  2d 20 53 74 0a 0d 20 20  20 20 20 20 20 20 20 20  |- St..          |
00008bc0  2e 6c 6f 6e 67 20 20 20  20 20 39 39 0a 0d 20 20  |.long     99..  |
00008bd0  20 20 20 20 20 20 20 20  2e 6c 6f 6e 67 20 20 20  |        .long   |
00008be0  20 20 4f 53 46 69 6e 64  20 2d 20 53 74 0a 0d 20  |  OSFind - St.. |
00008bf0  20 20 20 20 20 20 20 20  20 2e 6c 6f 6e 67 20 20  |         .long  |
00008c00  20 20 20 31 30 30 0a 0d  20 20 20 20 20 20 20 20  |   100..        |
00008c10  20 20 2e 6c 6f 6e 67 20  20 20 20 20 4f 53 46 69  |  .long     OSFi|
00008c20  6c 65 20 2d 20 53 74 0a  0d 20 20 20 20 20 20 20  |le - St..       |
00008c30  20 20 20 2e 6c 6f 6e 67  20 20 20 20 20 31 30 31  |   .long     101|
00008c40  0a 0d 20 20 20 20 20 20  20 20 20 20 2e 6c 6f 6e  |..          .lon|
00008c50  67 20 20 20 20 20 4f 53  43 4c 49 20 2d 20 53 74  |g     OSCLI - St|
00008c60  0a 0d 20 20 20 20 20 20  20 20 20 20 2e 6c 6f 6e  |..          .lon|
00008c70  67 20 20 20 20 20 31 30  32 0a 0d 20 20 20 20 20  |g     102..     |
00008c80  20 20 20 20 20 2e 6c 6f  6e 67 20 20 20 20 20 4f  |     .long     O|
00008c90  53 57 72 43 68 20 2d 20  53 74 0a 0d 20 20 20 20  |SWrCh - St..    |
00008ca0  20 20 20 20 20 20 2e 6c  6f 6e 67 20 20 20 20 20  |      .long     |
00008cb0  31 30 33 0a 0d 20 20 20  20 20 20 20 20 20 20 2e  |103..          .|
00008cc0  6c 6f 6e 67 20 20 20 20  20 4f 53 52 64 43 68 20  |long     OSRdCh |
00008cd0  2d 20 53 74 0a 0d 20 20  20 20 20 20 20 20 20 20  |- St..          |
00008ce0  2e 6c 6f 6e 67 20 20 20  20 20 31 30 34 0a 0d 20  |.long     104.. |
00008cf0  20 20 20 20 20 20 20 20  20 2e 6c 6f 6e 67 20 20  |         .long  |
00008d00  20 20 20 4f 53 42 79 74  65 20 2d 20 53 74 0a 0d  |   OSByte - St..|
00008d10  20 20 20 20 20 20 20 20  20 20 2e 6c 6f 6e 67 20  |          .long |
00008d20  20 20 20 20 31 30 35 0a  0d 20 20 20 20 20 20 20  |    105..       |
00008d30  20 20 20 2e 6c 6f 6e 67  20 20 20 20 20 4f 53 57  |   .long     OSW|
00008d40  6f 72 64 20 2d 20 53 74  0a 0d 20 20 20 20 20 20  |ord - St..      |
00008d50  20 20 20 20 2e 6c 6f 6e  67 20 20 20 20 20 31 30  |    .long     10|
00008d60  36 0a 0d 20 20 20 20 20  20 20 20 20 20 2e 6c 6f  |6..          .lo|
00008d70  6e 67 20 20 20 20 20 54  4b 52 45 72 72 20 2d 20  |ng     TKRErr - |
00008d80  53 74 0a 0d 20 20 20 20  20 20 20 20 20 20 2e 6c  |St..          .l|
00008d90  6f 6e 67 20 20 20 20 20  31 33 35 0a 0d 20 20 20  |ong     135..   |
00008da0  20 20 20 20 20 20 20 2e  6c 6f 6e 67 20 20 20 20  |       .long    |
00008db0  20 52 65 73 65 74 45 6e  76 20 2d 20 53 74 0a 0d  | ResetEnv - St..|
00008dc0  20 20 20 20 20 20 20 20  20 20 2e 6c 6f 6e 67 20  |          .long |
00008dd0  20 20 20 20 31 33 36 0a  0d 20 20 20 20 20 20 20  |    136..       |
00008de0  20 20 20 2e 6c 6f 6e 67  20 20 20 20 20 4d 6f 76  |   .long     Mov|
00008df0  65 20 2d 20 53 74 0a 0d  20 20 20 20 20 20 20 20  |e - St..        |
00008e00  20 20 2e 6c 6f 6e 67 20  20 20 20 20 31 33 37 0a  |  .long     137.|
00008e10  0d 20 20 20 20 20 20 20  20 20 20 2e 6c 6f 6e 67  |.          .long|
00008e20  20 20 20 20 20 42 61 63  6b 4d 6f 76 20 2d 20 53  |     BackMov - S|
00008e30  74 0a 0d 20 20 20 20 20  20 20 20 20 20 2e 6c 6f  |t..          .lo|
00008e40  6e 67 20 20 20 20 20 31  33 38 0a 0d 20 20 20 20  |ng     138..    |
00008e50  20 20 20 20 20 20 2e 6c  6f 6e 67 20 20 20 20 20  |      .long     |
00008e60  4d 6f 76 65 62 79 74 65  20 2d 20 53 74 0a 0d 20  |Movebyte - St.. |
00008e70  20 20 20 20 20 20 20 20  20 2e 6c 6f 6e 67 20 20  |         .long  |
00008e80  20 20 20 31 33 39 0a 0d  20 20 20 20 20 20 20 20  |   139..        |
00008e90  20 20 2e 6c 6f 6e 67 20  20 20 20 20 42 61 63 6b  |  .long     Back|
00008ea0  6d 76 62 79 20 2d 20 53  74 0a 0d 20 20 20 20 20  |mvby - St..     |
00008eb0  20 20 20 20 20 2e 6c 6f  6e 67 20 20 20 20 20 31  |     .long     1|
00008ec0  34 30 0a 0d 20 20 20 20  20 20 20 20 20 20 2e 6c  |40..          .l|
00008ed0  6f 6e 67 20 20 20 20 20  4d 6f 76 65 57 6f 20 2d  |ong     MoveWo -|
00008ee0  20 53 74 0a 0d 20 20 20  20 20 20 20 20 20 20 2e  | St..          .|
00008ef0  6c 6f 6e 67 20 20 20 20  20 31 34 31 0a 0d 20 20  |long     141..  |
00008f00  20 20 20 20 20 20 20 20  2e 6c 6f 6e 67 20 20 20  |        .long   |
00008f10  20 20 46 69 6c 6c 57 6f  20 2d 20 53 74 0a 0d 20  |  FillWo - St.. |
00008f20  20 20 20 20 20 20 20 20  20 2e 6c 6f 6e 67 20 20  |         .long  |
00008f30  20 20 20 53 74 61 63 6b  62 61 73 65 0a 0d 20 20  |   Stackbase..  |
00008f40  20 20 20 20 20 20 20 20  2e 6c 6f 6e 67 20 20 20  |        .long   |
00008f50  20 20 46 69 6c 6c 57 6f  20 2d 20 53 74 0a 0d 20  |  FillWo - St.. |
00008f60  20 20 20 20 20 20 20 20  20 2e 6c 6f 6e 67 20 20  |         .long  |
00008f70  20 20 20 31 35 30 0a 0d  20 20 20 20 20 20 20 20  |   150..        |
00008f80  20 20 2e 6c 6f 6e 67 20  20 20 20 20 30 0a 0d 20  |  .long     0.. |
00008f90  20 20 20 20 20 20 20 20  20 2e 6c 6f 6e 67 20 20  |         .long  |
00008fa0  20 20 20 30 78 31 32 33  34 35 36 37 38 0a 0d 20  |   0x12345678.. |
00008fb0  20 20 20 20 20 20 20 20  20 2e 6c 6f 6e 67 20 20  |         .long  |
00008fc0  20 20 20 67 6c 6f 62 69  6e 69 74 73 20 20 20 20  |   globinits    |
00008fd0  20 20 20 20 20 20 20 3b  20 6e 6f 74 20 2b 34 20  |       ; not +4 |
00008fe0  62 65 63 61 75 73 65 20  62 20 69 6e 73 74 72 20  |because b instr |
00008ff0  61 74 20 68 65 61 64 0a  0d 20 20 20 20 20 20 20  |at head..       |
00009000  20 20 20 2e 6c 6f 6e 67  20 20 20 20 20 67 6c 6f  |   .long     glo|
00009010  62 69 6e 69 74 73 2b 38  0a 0d 20 20 20 20 20 20  |binits+8..      |
00009020  20 20 20 20 2e 6c 6f 6e  67 20 20 20 20 20 67 6c  |    .long     gl|
00009030  6f 62 69 6e 69 74 73 2b  31 36 0a 0d 20 20 20 20  |obinits+16..    |
00009040  20 20 20 20 20 20 2e 6c  6f 6e 67 20 20 20 20 20  |      .long     |
00009050  67 6c 6f 62 69 6e 69 74  73 2b 32 34 0a 0d 20 20  |globinits+24..  |
00009060  20 20 20 20 20 20 20 20  2e 6c 6f 6e 67 20 20 20  |        .long   |
00009070  20 20 67 6c 6f 62 69 6e  69 74 73 2b 33 32 0a 0d  |  globinits+32..|
00009080  20 20 20 20 20 20 20 20  20 20 2e 6c 6f 6e 67 20  |          .long |
00009090  20 20 20 20 67 6c 6f 62  69 6e 69 74 73 2b 34 30  |    globinits+40|
000090a0  0a 0d 20 20 20 20 20 20  20 20 20 20 2e 6c 6f 6e  |..          .lon|
000090b0  67 20 20 20 20 20 67 6c  6f 62 69 6e 69 74 73 2b  |g     globinits+|
000090c0  34 38 0a 0d 20 20 20 20  20 20 20 20 20 20 2e 6c  |48..          .l|
000090d0  6f 6e 67 20 20 20 20 20  67 6c 6f 62 69 6e 69 74  |ong     globinit|
000090e0  73 2b 35 36 0a 0d 20 20  20 20 20 20 20 20 20 20  |s+56..          |
000090f0  2e 6c 6f 6e 67 20 20 20  20 20 67 6c 6f 62 69 6e  |.long     globin|
00009100  69 74 73 2b 36 34 0a 0d  20 20 20 20 20 20 20 20  |its+64..        |
00009110  20 20 2e 6c 6f 6e 67 20  20 20 20 20 67 6c 6f 62  |  .long     glob|
00009120  69 6e 69 74 73 2b 37 32  0a 0d 20 20 20 20 20 20  |inits+72..      |
00009130  20 20 20 20 2e 6c 6f 6e  67 20 20 20 20 20 67 6c  |    .long     gl|
00009140  6f 62 69 6e 69 74 73 2b  38 30 0a 0d 20 20 20 20  |obinits+80..    |
00009150  20 20 20 20 20 20 2e 6c  6f 6e 67 20 20 20 20 20  |      .long     |
00009160  67 6c 6f 62 69 6e 69 74  73 2b 38 38 0a 0d 20 20  |globinits+88..  |
00009170  20 20 20 20 20 20 20 20  2e 6c 6f 6e 67 20 20 20  |        .long   |
00009180  20 20 67 6c 6f 62 69 6e  69 74 73 2b 39 36 0a 0d  |  globinits+96..|
00009190  20 20 20 20 20 20 20 20  20 20 2e 6c 6f 6e 67 20  |          .long |
000091a0  20 20 20 20 67 6c 6f 62  69 6e 69 74 73 2b 31 30  |    globinits+10|
000091b0  34 0a 0d 20 20 20 20 20  20 20 20 20 20 2e 6c 6f  |4..          .lo|
000091c0  6e 67 20 20 20 20 20 67  6c 6f 62 69 6e 69 74 73  |ng     globinits|
000091d0  2b 31 31 32 0a 0d 20 20  20 20 20 20 20 20 20 20  |+112..          |
000091e0  2e 6c 6f 6e 67 20 20 20  20 20 67 6c 6f 62 69 6e  |.long     globin|
000091f0  69 74 73 2b 31 32 30 0a  0d 20 20 20 20 20 20 20  |its+120..       |
00009200  20 20 20 2e 6c 6f 6e 67  20 20 20 20 20 67 6c 6f  |   .long     glo|
00009210  62 69 6e 69 74 73 2b 31  32 38 0a 0d 20 20 20 20  |binits+128..    |
00009220  20 20 20 20 20 20 2e 6c  6f 6e 67 20 20 20 20 20  |      .long     |
00009230  67 6c 6f 62 69 6e 69 74  73 2b 31 33 36 0a 0d 20  |globinits+136.. |
00009240  20 20 20 20 20 20 20 20  20 2e 6c 6f 6e 67 20 20  |         .long  |
00009250  20 20 20 67 6c 6f 62 69  6e 69 74 73 2b 31 34 34  |   globinits+144|
00009260  0a 0d 20 20 20 20 20 20  20 20 20 20 2e 6c 6f 6e  |..          .lon|
00009270  67 20 20 20 20 20 67 6c  6f 62 69 6e 69 74 73 2b  |g     globinits+|
00009280  31 35 32 0a 0d 20 20 20  20 20 20 20 20 20 20 2e  |152..          .|
00009290  6c 6f 6e 67 20 20 20 20  20 67 6c 6f 62 69 6e 69  |long     globini|
000092a0  74 73 2b 31 36 30 0a 0d  20 20 20 20 20 20 20 20  |ts+160..        |
000092b0  20 20 2e 6c 6f 6e 67 20  20 20 20 20 67 6c 6f 62  |  .long     glob|
000092c0  69 6e 69 74 73 2b 31 36  38 0a 0d 20 20 20 20 20  |inits+168..     |
000092d0  20 20 20 20 20 2e 6c 6f  6e 67 20 20 20 20 20 67  |     .long     g|
000092e0  6c 6f 62 69 6e 69 74 73  2b 31 37 36 0a 0d 20 20  |lobinits+176..  |
000092f0  20 20 20 20 20 20 20 20  2e 6c 6f 6e 67 20 20 20  |        .long   |
00009300  20 20 67 6c 6f 62 69 6e  69 74 73 2b 31 38 34 0a  |  globinits+184.|
00009310  0d 20 20 20 20 20 20 20  20 20 20 2e 6c 6f 6e 67  |.          .long|
00009320  20 20 20 20 20 67 6c 6f  62 69 6e 69 74 73 2b 31  |     globinits+1|
00009330  39 32 0a 0d 20 20 20 20  20 20 20 20 20 20 2e 6c  |92..          .l|
00009340  6f 6e 67 20 20 20 20 20  67 6c 6f 62 69 6e 69 74  |ong     globinit|
00009350  73 2b 32 30 30 0a 0d 20  20 20 20 20 20 20 20 20  |s+200..         |
00009360  20 2e 6c 6f 6e 67 20 20  20 20 20 67 6c 6f 62 69  | .long     globi|
00009370  6e 69 74 73 2b 32 30 38  0a 0d 20 20 20 20 20 20  |nits+208..      |
00009380  20 20 20 20 2e 6c 6f 6e  67 20 20 20 20 20 67 6c  |    .long     gl|
00009390  6f 62 69 6e 69 74 73 2b  32 31 36 0a 0d 20 20 20  |obinits+216..   |
000093a0  20 20 20 20 20 20 20 2e  6c 6f 6e 67 20 20 20 20  |       .long    |
000093b0  20 67 6c 6f 62 69 6e 69  74 73 2b 32 32 34 0a 0d  | globinits+224..|
000093c0  20 20 20 20 20 20 20 20  20 20 2e 6c 6f 6e 67 20  |          .long |
000093d0  20 20 20 20 67 6c 6f 62  69 6e 69 74 73 2b 32 33  |    globinits+23|
000093e0  32 0a 0d 20 20 20 20 20  20 20 20 20 20 2e 6c 6f  |2..          .lo|
000093f0  6e 67 20 20 20 20 20 67  6c 6f 62 69 6e 69 74 73  |ng     globinits|
00009400  2b 32 34 30 0a 0d 20 20  20 20 20 20 20 20 20 20  |+240..          |
00009410  2e 6c 6f 6e 67 20 20 20  20 20 67 6c 6f 62 69 6e  |.long     globin|
00009420  69 74 73 2b 32 34 38 0a  0d 20 20 20 20 20 20 20  |its+248..       |
00009430  20 20 20 2e 6c 6f 6e 67  20 20 20 20 20 52 67 62  |   .long     Rgb|
00009440  76 61 6c 2d 34 0a 0d 20  20 20 20 20 20 20 20 20  |val-4..         |
00009450  20 2e 6c 6f 6e 67 20 20  20 20 20 55 49 6e 73 74  | .long     UInst|
00009460  72 2d 34 0a 0d 20 20 20  20 20 20 20 20 20 20 2e  |r-4..          .|
00009470  6c 6f 6e 67 20 20 20 20  20 50 72 65 66 61 62 2d  |long     Prefab-|
00009480  34 0a 0d 20 20 20 20 20  20 20 20 20 20 2e 6c 6f  |4..          .lo|
00009490  6e 67 20 20 20 20 20 44  61 74 61 62 2d 34 0a 0d  |ng     Datab-4..|
000094a0  20 20 20 20 20 20 20 20  20 20 2e 6c 6f 6e 67 20  |          .long |
000094b0  20 20 20 20 41 64 64 65  78 70 2d 34 0a 0d 20 20  |    Addexp-4..  |
000094c0  20 20 20 20 20 20 20 20  2e 6c 6f 6e 67 20 20 20  |        .long   |
000094d0  20 20 45 72 72 6f 72 48  2d 34 0a 0d 20 20 20 20  |  ErrorH-4..    |
000094e0  20 20 20 20 20 20 2e 6c  6f 6e 67 20 20 20 20 20  |      .long     |
000094f0  45 72 72 6f 72 48 2b 34  0a 0d 20 20 20 20 20 20  |ErrorH+4..      |
00009500  20 20 20 20 2e 6c 6f 6e  67 20 20 20 20 20 43 61  |    .long     Ca|
00009510  6c 6c 42 48 2d 34 0a 0d  20 20 20 20 20 20 20 20  |llBH-4..        |
00009520  20 20 2e 6c 6f 6e 67 20  20 20 20 20 43 61 6c 6c  |  .long     Call|
00009530  42 48 2b 34 0a 0d 20 20  20 20 20 20 20 20 20 20  |BH+4..          |
00009540  2e 6c 6f 6e 67 20 20 20  20 20 45 76 65 6e 74 48  |.long     EventH|
00009550  2d 34 0a 0d 20 20 20 20  20 20 20 20 20 20 2e 6c  |-4..          .l|
00009560  6f 6e 67 20 20 20 20 20  45 78 69 74 48 2d 34 0a  |ong     ExitH-4.|
00009570  0d 20 20 20 20 20 20 20  20 20 20 2e 6c 6f 6e 67  |.          .long|
00009580  20 20 20 20 20 45 78 63  65 70 52 65 67 2d 34 0a  |     ExcepReg-4.|
00009590  0d 20 20 20 20 20 20 20  20 20 20 2e 6c 6f 6e 67  |.          .long|
000095a0  20 20 20 20 20 30 78 38  37 36 35 34 33 32 31 0a  |     0x87654321.|
000095b0  0d                                                |.|
000095b1