home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / programming / desk / examples / Desk / Examples / OSBuffer / Old / PointerBuf < prev   
Encoding:
Text File  |  1997-05-20  |  1.6 KB  |  85 lines

  1.     GET    Desk.sh.FnNames
  2.     
  3.     AREA    |C$code|, CODE, READONLY
  4.     
  5.     
  6.     Desk_ASMacros_EXTERNALFUNCTION    Desk_OSBuffer_InsertByte
  7.         ; On entry, regs are:        r0=osbuffer, r1=byte.
  8.         ; For call to service, need:    r0=0, r1=id, r2=byte, r12=pw.
  9.         ; Could use r3 as a temporary and avoid stacking r4, but this way
  10.         ; all of the routines are vaguely similar.
  11.     STMFD    sp!, { r4, lr}
  12.     MOV    r4, r0
  13.     
  14.     LDR    r12, [r4, #8]
  15.     MOV    r2, r1
  16.     LDR    r1, [r4, #0]
  17.     MOV    r0, #0
  18.     
  19.     MOV    lr, pc
  20.     LDR    pc, [r4, #4]
  21.     MOVCC    r0, #0
  22.     MOVCS    r0, #1
  23.     LDMFD    sp!, { r4, pc}^
  24.     
  25.     
  26.     Desk_ASMacros_EXTERNALFUNCTION    Desk_OSBuffer_InsertBlock
  27.         ; On entry, regs are:        r0=osbuffer, r1=data, r2=numbytes
  28.         ; For call to service, need:    r0=1, r1=id, r2=data, r3=numbytes, r12=pw.
  29.     STMFD    sp!, { r4, lr}
  30.     MOV    r4, r0
  31.     
  32.     LDR    r12, [r4, #8]
  33.     MOV    r3, r2
  34.     MOV    r2, r1
  35.     LDR    r1, [ r4, #0]
  36.     MOV    r0, #1
  37.     
  38.     MOV    lr, pc
  39.     LDR    pc, [ r4, #4]
  40.     
  41.     MOV    r0, r3
  42.     LDMFD    sp!, { r4, pc}^
  43.     
  44.     
  45.     Desk_ASMacros_EXTERNALFUNCTION    Desk_OSBuffer_RemoveByte
  46.         ; On entry, regs are:        r0=osbuffer
  47.         ; For call to service, need:    r0=2, r1=id, r12=pw
  48.     
  49.     STMFD    sp!, { r4, lr}
  50.     MOV    r4, r0
  51.     
  52.     LDR    r12, [r4, #8]
  53.     LDR    r1, [ r4, #0]
  54.     MOV    r0, #2
  55.     
  56.     MOV    lr, pc
  57.     LDR    pc, [ r4, #4]
  58.     
  59.     MOVCC    r0, r2
  60.     MOVCS    r0, #-1
  61.     LDMFD    sp!, { r4, pc}^
  62.     
  63.     
  64.     Desk_ASMacros_EXTERNALFUNCTION    Desk_OSBuffer_RemoveBlock
  65.         ; On entry, regs are:        r0=osbuffer, r1=buffer, r2=numbytes
  66.         ; For call to service, need:    r0=3, r1=id, r2=buffer, r3=numbytes
  67.     STMFD    sp!, { r4, lr}
  68.     MOV    r4, r0
  69.     
  70.     LDR    r12, [r4, #8]
  71.     MOV    r3, r2
  72.     MOV    r2, r1
  73.     LDR    r1, [ r4, #0]
  74.     MOV    r0, #3
  75.     
  76.     MOV    lr, pc
  77.     LDR    pc, [ r4, #4]
  78.     
  79.     MOV    r0, r3
  80.     LDMFD    sp!, { r4, pc}^
  81.     
  82.     
  83.     
  84.     END
  85.