home *** CD-ROM | disk | FTP | other *** search
/ Aminet 10 / aminetcdnumber101996.iso / Aminet / util / misc / GrabKick.lha / GrabKick.a < prev    next >
Text File  |  1995-12-19  |  3KB  |  112 lines

  1. ;**** GrabKick.a ******************************************
  2.  
  3.     INCDIR    AINCLUDE:
  4.     INCLUDE    libraries/dosextens.i
  5.     INCLUDE lvo.i
  6.     INCLUDE dos/dos.i
  7.     INCLUDE    workbench/startup.i
  8.     INCLUDE    workbench/workbench.i
  9.  
  10. ; Programmheader
  11. ;
  12. ;    Name:        GrabKick
  13. ;    Author:        SDI
  14. ;    Distribution:    PD
  15. ;    Description:    liest Kickstart aus und schreibt ihn in Datei
  16. ;    Compileropts:    -
  17. ;    Linkeropts:    -
  18. ;    CLI-Parameter:    -
  19. ;
  20. ; 1.2   07.08.95 : neue Berechnung für Revisionsnummer gleicht Rechen-
  21. ;    fehler von MaxonC++ aus - Länge 880
  22. ; 1.3   03.12.95 : Mit Assembler neukompiliert - Länge 244
  23. ; 1.4   04.12.95 : etwas verkürzt - Länge 236
  24. ; 1.5   10.12.95 : etwas verkürzt - Länge 228
  25. ; 1.6   19.12.95 : läuft auch von WB aus - Länge 300
  26.  
  27. ;**** Programm ********************************************
  28.  
  29.     SECTION "0",CODE
  30.     SUB.L    A1,A1            ;A1=0 = eigener Task
  31.     MOVEQ    #0,D7
  32.     MOVEA.L    4.W,A6
  33.     JSR    _LVOFindTask(A6)    ;wo sind wir?
  34.     MOVEA.L    D0,A4            ;Adresse retten
  35.  
  36.     TST.L    pr_CLI(A4)        ;Laufen wir unter WB?
  37.     BNE.B    fromCLI
  38.     LEA    pr_MsgPort(A4),A0
  39.     JSR    _LVOWaitPort(A6)    ;Warte auf Start-Message
  40.     LEA    pr_MsgPort(A4),A0
  41.     JSR    _LVOGetMsg(A6)        ;Hole Msg
  42.     MOVE.L    D0,D7                ;D7 - WBStartUp Message
  43. fromCLI    LEA    KICKEND(PC),A2            ;A2 - KickStr-Ende
  44.     MOVEQ    #33,D0
  45.     LEA    DOSNAME(PC),A1
  46.     JSR    _LVOOpenLibrary(A6)
  47.     MOVE.L    D0,A6            ;DosBase -> A6, da nur Dos-Calls
  48.     BEQ.W    ENDE            ;Librarybase != 0 ?
  49.     TST.L    D7
  50.     BEQ.B    NoWB
  51.     MOVEA.L    D7,A0
  52.     MOVEA.L    sm_ArgList(A0),A0
  53.     BEQ.W    ENDE
  54.     MOVE.L    (A0),D1
  55.     JSR    _LVOCurrentDir(A6)
  56. NoWB    MOVE.L    $00FFFFEC.L,D3        ;D3 - RomSize
  57.     MOVE.L    #$01000000,A3
  58.     SUB.L    D3,A3            ;A3 - Romstart
  59.     MOVEQ    #0,D4
  60.     MOVE.W    12(A3),D4        ;D4 - Romvers
  61.     MULU    #1000,D4
  62.     ADD.W    14(A3),D4        ;D4 - Fullversion
  63. LOOP
  64.     MOVE.L    D4,D2
  65.     DIVU    #10,D2            ;durch Zehn teilen
  66.     MOVE.W    D2,D4            ;Ergebnis nach D4
  67.     SWAP    D2
  68.     ADD.B    D2,(A2)            ;Rest in Namensfile
  69.     SUBQ.L    #1,A2            ;Zähler 1 weiter zurück
  70.     TST.L    D4
  71.     BNE.B    LOOP
  72. ;Schleifenende
  73.     MOVE.W    #MODE_NEWFILE,D2    ;Modus-Parameter
  74.     LEA    KICKSTR(PC),A2
  75.     MOVE.L    A2,D1            ;Name-Parameter
  76.     JSR    _LVOOpen(A6)
  77.     MOVE.L    D0,D4        ;D4 - Filehandle
  78.     BEQ.B    CLEANUP
  79. ;                    Anzahl-Parameter D3 hat schon Wert
  80.  
  81.     MOVE.L    A3,D2            ;Puffer-Parameter
  82.     MOVE.L    D4,D1            ;Filehandle-Parameter
  83.     JSR    _LVOWrite(A6)
  84.     MOVE.L    D0,D2        ;D2 - Write Rückgabe
  85.     MOVE.L    D4,D1            ;Filehandle-Parameter
  86.     JSR    _LVOClose(A6)
  87.     CMP.L    #$FFFFFFFF,D2    ;D2 == -1 --> File löschen
  88.     BNE.B    CLEANUP
  89.     MOVE.L    A2,D1
  90.     JSR    _LVODeleteFile(A6)
  91. CLEANUP
  92.     MOVEA.L    A6,A1
  93.     MOVEA.L    4.W,A6
  94.     JSR    _LVOCloseLibrary(A6)
  95. ENDE
  96.     TST.L    D7            ;von Workbench ?
  97.     BEQ.B    _exit            ;nein - war CLI
  98.  
  99.     MOVEA.L    4.W,A6
  100.     JSR    _LVOForbid(A6)        ;Schutzmaßnahme
  101.     MOVEA.L    D7,A1            ;Message holen
  102.     JSR    _LVOReplyMsg(A6)
  103.  
  104.     MOVEQ    #0,D0
  105. _exit    RTS    
  106.     CSTRING    '$VER: GrabKick 1.6 (19.12.95) (PD) by SDI'
  107. DOSNAME    CSTRING    'dos.library'
  108. KICKSTR    DC.B    'kick0000'
  109. KICKEND    CSTRING    '0'
  110.     END
  111.  
  112.