home *** CD-ROM | disk | FTP | other *** search
-
- {
- -----------------------------------------------------------------------
- - -
- - SaveKick2File - Version 1.1, (C)1992 by Bernd Künnen -
- - Neuringe 75 -
- - This programm is Freeware, 44777 Twist -
- - coded in 03.1991 in PCQ-Pascal(1.2b). -
- - -
- - Usage : SaveKick2file filename -
- - -
- -----------------------------------------------------------------------
- }
-
- Program SaveKick;
-
- {$I "include:libraries/dos.i" }
- {$I "include:Utils/parameters.i" }
- {$I "include:exec/exec.i" }
- {$I "include:exec/execbase.i" }
- {$I "include:Utils/stringlib.i" }
-
-
- CONST
- Kick256 : Integer = 256*1024; { 512 bzw. 256 K }
- Kick512 : Integer = 512*1024;
- exec : Integer = $0004; { in $4 ist Ptr auf Execbase }
-
- TYPE
- adrptr = ^Address; { um nachher an den execbaseptr zu kommen }
-
- VAR
- KickMem : Address;
- KickSize : Integer;
- MyHandle : FileHandle;
- myfile : String;
-
- myexecbaseptr : execbaseptr;
-
-
- { **** Sorgt für ein sauberes Verlassen des Programms, egal wo man ****
- **** aussteigt : **** }
-
- PROCEDURE cleanexit(why : String ; rtcode : Integer);
- BEGIN
- { ## Ausgabe ins CLI, warum das Program verlassen ## }
- { ## werden mußte, inkl.Returncode f. Batchfiles ## }
-
- IF MyHandle<>NIL THEN DOSClose(MyHandle);
- IF why<>NIL THEN writeln(why);
- exit(rtcode);
- END;
-
-
-
-
-
- { ************** Hier nun endlich die Hauptschleife ************** }
-
-
- BEGIN
-
- writeln(" SaveKick2File V1.1, (C)1992 B.Künnen\n");
-
- myfile:=AllocString(80); { Buffer für 79 chars holen }
-
- GetParam(1,myfile); { CLI-Argument in Buffer kopieren }
-
- IF strlen(myfile)=0 THEN { Wenn kein CLI-Arg., dann nachfragen }
- BEGIN
- write("Save actual Kickstart 2 file named : ");
- readln(myfile);
- IF strlen(myfile)=0 THEN cleanexit("No filename !",10);
- END;
-
- myexecbaseptr:=Address(adrptr(exec)^); { ExecbasePtr holen }
-
- IF myexecbaseptr^.LibNode.lib_Version<37 then { Version vergleichen }
- begin
- writeln("Saving 256K - Kickstart...");
- KickMem:=Address($fc0000); { version<37 Then Kick1.3 or lower }
- Kicksize:=Kick256;
- end else begin
- writeln("Saving 512K - Kickstart..."); { >=37 -> 2.0 or higher Kickstart }
- KickMem:=Address($f80000);
- Kicksize:=Kick512;
- end;
-
- { Open file and test if ok ... }
- MyHandle:=DOSOpen(myfile,MODE_NEWFILE);
- IF MyHandle=NIL THEN cleanexit("Can`t open output-file.",5);
-
- { Write Kickstart 2 File }
- IF DOSWrite(MyHandle,KickMem,KickSize)<>KickSize
- THEN cleanexit("Error writing Kickstart.",5);
-
-
- Delay(50); { eine taktvolle Sekunden ...... }
- cleanexit(NIL,0); { bye bye baby .... }
- END.
-