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

  1. ;> s.MapSetID
  2. ;
  3. ; 21 Nov 1993
  4.  
  5.     AREA    MapSetIO,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    ConvertFromDAd
  16.     IMPORT    FirstFreeFragment
  17.     IMPORT    BlankZeroes
  18.     IMPORT    NextID
  19.     IMPORT    WriteFragment
  20.     IMPORT    BlankZeroes
  21.  
  22.     EXPORT    MapSetID_Code
  23. ;******************************************************************************
  24. ;
  25. ;MapSetID_Code                                ; -----
  26. ;-------------
  27. ; on entry:
  28. ; r0    "[<disc spec.>] <frag. start> <fragment length> <new ID>"
  29. ;
  30.     Routine    "MapSetID_Code","r1-r11"
  31.     LDR    wb,[r12]
  32.     BL    ReadMap
  33.     BVS    exitMSI
  34.     MOV    r1,r0
  35.     MOV    r0,#&80000010
  36.     SWI    XOS_ReadUnsigned
  37.     MOVVC    r5,r2                ; r5    DAd
  38.     SWIVC    XOS_ReadUnsigned
  39.     MOVVC    r3,r2                ; r3    length in bytes
  40.     ORRVC    r0,r0,#&20000000
  41.     MOVVC    r2,#&010000
  42.     SWIVC    XOS_ReadUnsigned
  43.     STRVC    r2,fragmentID
  44.     BVS    exitMSI
  45.  
  46.     LDRB    r10,LogBitSize
  47.     MOV    r6,r3,ASR r10            ; r6    length in map bits
  48.     TEQ    r3,r10,ASL r10
  49.     SETV NE
  50.     ADRVS    r0,badLengthError
  51.     BVS    exitMSI
  52.     STR    r6,fragmentLength
  53.  
  54.     MOV    r0,r5
  55.     BL    ConvertFromDAd            ; r3    zone number
  56.     MOV    r4,r0                ; r4    start in map bits
  57.     STR    r4,fragmentStart        ;    now fragment* all set up
  58.  
  59.     LDR    r11,MapLocation
  60.     MOV    r10,r4                ; r10    map pos
  61.     BL    FirstFreeFragment        ; r9    next free fragment
  62.     BL    NextID
  63.     MOV    r8,r0                ; r8    old ID
  64.  
  65.     ADD    r2,r3,#1
  66.     LDRB    r14,LogSectorSize
  67.     ADD    r14,r14,#3
  68.     MOVS    r10,r3,ASL r14            ; r10    start of zone in map bits
  69.     ADDNE    r10,r10,#32            ;     skip checkbytes
  70.     ADDEQ    r10,r10,#512
  71.     MOV    r4,r2,ASL r14            ; r4    end of zone in map bits
  72. loopMSI
  73.     
  74.     
  75.         
  76.     LDR    r4,MapEnd
  77.  
  78.  
  79.  
  80.     ADR    r1,Buffer
  81.     MOV    r2,#BufferSize
  82.     Write    "Fragment: ("
  83.     MOVVC    r0,r9
  84.     MOVVC    r3,r10
  85.     BLVC    WriteFragment
  86.     ADRVC    r0,Buffer
  87.     BLVC    BlankZeroes
  88.     BVS    exitMSI
  89.     WriteB    """)"",10,13,""Old ID: """
  90.     MOVVC    r0,r8
  91.     SWIVC    XOS_ConvertHex4
  92.     BVS    exitMSI
  93.     WriteB    "10,13,""New ID: """
  94.     MOVVC    r0,r11
  95.     SWIVC    XOS_ConvertHex4
  96.     
  97.     ADRVC    r0,Buffer
  98.     SWIVC    XOS_Write0
  99.  
  100. exitMSI
  101.     RoutineEnd
  102.  
  103. badLengthError
  104.     &    &006002
  105.     =    "The length of a fragment must be a multiple of the bytes per "
  106.     =    "map bit value.",0
  107.     ALIGN
  108.  
  109.  
  110.     END
  111.