home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 1 / ARM_CLUB_CD.iso / contents / apps / discs / f / mapmanager / s_MapFindID < prev    next >
Encoding:
Text File  |  1993-11-21  |  1.9 KB  |  118 lines

  1. ;> s.MapFindID
  2. ;
  3. ; 21 Nov 1993
  4.  
  5.     AREA    MapFindID,CODE,READONLY
  6.  
  7.     GET    ^.h.RegNames
  8.     GET    ^.h.Macros
  9.     GET    ^.h.SWIs
  10.     GET    h.Head
  11.     GET    h.Macros
  12.  
  13.     IMPORT    MWriteText
  14.     IMPORT    ReadMap
  15.     IMPORT    StartZone
  16.     IMPORT    NextFileFragment
  17.     IMPORT    ConvertAndWriteFrag
  18.     IMPORT    BlankZeroes
  19.     IMPORT    FirstFreeFragment
  20.     IMPORT    NextFileFragment
  21.     IMPORT    ConvertAndWriteFrag
  22.  
  23.     EXPORT    MapFindID_Code
  24. ;******************************************************************************
  25. ;
  26. ;MapFindID_Code                                ; -----
  27. ;--------------
  28. ; on entry:
  29. ; r0    -> id in ascii
  30. ;
  31. ; on exit:
  32. ;
  33.     Routine    "MapFindID_Code","r1-r11"
  34.     LDR    wb,[r12]
  35.     BL    ReadMap
  36.     BVS    exitWID
  37.     LDR    r11,MapLocation
  38.  
  39.     MOV    r1,r0
  40.     LDR    r2,IDFieldMask
  41.     MOV    r0,#&10
  42.     ORR    r0,r0,#(1 :SHL: 31) :OR: (1 :SHL: 29)
  43.     SWI    XOS_ReadUnsigned
  44.     BVS    exitWID
  45.  
  46.     MOV    r6,r2
  47.     MOV    r0,r2                ; r0,r6    ID
  48.     BL    StartZone            ; r0    start zone
  49.     LDRB    r5,LogSectorSize
  50.     ADD    r5,r5,#3
  51.     MOVS    r8,r0,ASL r5            ; r8    start point
  52.     MOV    r10,r8
  53.     MOV    r7,#0                ; r7    counter
  54.     LDR    r4,MapEnd
  55.     MOVEQ    r8,r4
  56.     BEQ    halfOne
  57. halfTwoLoop
  58.     ADR    r1,Buffer
  59.     MOV    r2,#BufferSize
  60.     MOV    r0,r6
  61.     BL    NextFileFragment
  62.     BEQ    halfOne
  63.     SUB    r3,r10,r0
  64.     ADD    r7,r7,r3
  65.     BL    ConvertAndWriteFrag
  66.     ADRVC    r0,Buffer
  67.     BLVC    BlankZeroes
  68.     SWIVC    XOS_Write0
  69.     BVS    exitWID
  70.     B    halfTwoLoop
  71. halfOne
  72.     MOV    r10,#512
  73.     BL    FirstFreeFragment            ;    get r9 ready
  74.     MOV    r4,r8
  75. halfOneLoop
  76.     ADR    r1,Buffer
  77.     MOV    r2,#BufferSize
  78.     MOV    r0,r6
  79.     [    debug
  80.     PrintR    r9
  81.     ]
  82.     BL    NextFileFragment
  83.     BEQ    resultWID
  84.     SUB    r3,r10,r0
  85.     ADD    r7,r7,r3
  86.     BL    ConvertAndWriteFrag
  87.     ADRVC    r0,Buffer
  88.     BLVC    BlankZeroes
  89.     SWIVC    XOS_Write0
  90.     BVS    exitWID
  91.     B    halfOneLoop
  92.  
  93. resultWID    
  94.     ADR    r1,Buffer
  95.     MOV    r2,#BufferSize
  96.     LDRB    r3,LogBitSize
  97.     TEQ    r7,#0
  98.     BEQ    IDnomore
  99.     Write    "Total number of bytes allocated: &"
  100.     MOVS    r0,r7,ASL r3
  101.     SWIVC    XOS_ConvertHex8
  102.     BVS    exitWID
  103.     Write    " = "
  104.     MOVVC    r0,r7,ASL r3
  105.     SWIVC    XOS_ConvertCardinal4
  106.     BVS    exitWID
  107.     WriteNL
  108.     B    writtenWID
  109. IDnomore
  110.     WriteB    """No fragments found."",10,13"
  111. writtenWID
  112.     ADRVC    r0,Buffer
  113.     SWIVC    XOS_Write0
  114. exitWID
  115.     RoutineEnd
  116.  
  117.     END
  118.