home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / EFFO / forum16.lzh / SOFTWARE / ASSEMBLER / DEMERGE / demerge.a < prev    next >
Text File  |  1991-04-01  |  2KB  |  116 lines

  1.     nam    DeMerge
  2.     ttl    create single Modules from merged file
  3.     use    <defsfile>
  4.  
  5. ***************************************
  6. * Function:
  7. * erzeugt aus einer merged Datei (OS9boot usw.)
  8. * die einzelnen Module
  9.  
  10.     page
  11. ********************************************
  12. * edt  date
  13. * --- -------- ------------------------------ ---
  14. *   0 18-mar-91 initial                wtg
  15.  
  16. Edition    equ    0
  17. Revisn    equ    0
  18. TypLang    set    (Prgrm<<8)+Objct
  19. AttRev    set    (ReEnt<<8)+Revisn
  20.  
  21. stacksize set 200
  22.  
  23.     psect    DeMerge,TypLang,AttRev,Edition,stacksize,entry ,trapent
  24.  
  25. StdIn    set    0
  26. StdOut    set    1
  27. StdErr    set    2
  28.  
  29. maxsize    set    64000
  30.     vsect
  31. buff    ds.b    maxsize
  32.     ends
  33.  
  34.  
  35. entry:
  36.     move.l    a5,a0        get input file name from param's
  37.     move    #Read_,d0    open for read
  38.     OS9    I$Open
  39.     bcs    ExitHelp    war nix
  40.  
  41.     move.w    #SS_Size,d1    get size of it
  42.     OS9    I$GetStt
  43.     bcs    Exit
  44.  
  45.     cmpi.l    #maxsize,d2    more than will fit in mem?
  46.     blo    en.10
  47.  
  48.     lea    max$err(pc),a0    yes, make mess.
  49.     move    #1,d0
  50.     move.l    #80,d1
  51.     OS9    I$WritLn
  52.     clr    d1
  53.     bra    Exit
  54. max$err    dc.b    "File > 64000 -- aborted ",C$CR
  55.     align
  56.  
  57. en.10:
  58.     move.l    d2,d1
  59.     lea    buff(a6),a0
  60.     OS9    I$Read
  61.     bcs    Exit
  62.  
  63.     OS9    I$Close
  64.     bcs    Exit
  65.  
  66. * start work
  67.     lea    buff(a6),a5
  68.     
  69. Loop:    move.l    M$Name(a5),d0        get offset
  70.     lea    (a5,d0.l),a0        point to module name
  71.     move.b    #Write_+$20,d0        write+ISize
  72.     move.w    #$3,d1            ---wr
  73.     move.l    M$Size(a5),d2        module size
  74.     OS9    I$Create        create the file
  75.     bcs    Exit
  76.  
  77.     movea.l    a5,a0            restore module start
  78.     move.l    M$Size(a0),d1        write module
  79.     OS9    I$Write
  80.     bcs    Exit
  81.  
  82.     OS9    I$Close            close this module
  83.     bcs    Exit
  84.  
  85.     lea    (a5,d1.l),a5        point to next module
  86.     cmpi.b    #$4a,(a5)        is it a module
  87.     bne    Done
  88.     cmpi.b    #$fc,1(a5)
  89.     beq    Loop
  90.  
  91. Done:
  92.     clr    d1        ok, all done
  93.     bra    Exit
  94.  
  95. ExitHelp:
  96.     lea    Helpmsg(pc),a0
  97.     move.l    #Helpl,d1
  98.     moveq    #2,d0        StdErr
  99.     OS9    I$Write
  100.     clr    d1
  101.  
  102. Exit:
  103.     OS9    F$Exit
  104.  
  105.     bra    *        fix debug here
  106.  
  107. Helpmsg:
  108.     dc.b    "Syntax:   demerge <path>",C$CR,C$LF
  109.     dc.b    "Function: demerges a file of merged modules to single module",C$CR,C$LF
  110.     dc.b    "          files named as modules",C$CR,C$LF
  111.     dc.b    "opts:     none",C$CR,C$LF,0
  112. Helpl    equ    *-Helpmsg
  113.     align
  114.  
  115.     ends
  116.