home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
No Fragments Archive 10: Diskmags
/
nf_archive_10.iso
/
MAGS
/
STMAGAZIN
/
STMAGAZIN.MSA
/
ANWENDUN.GEN
/
BOOT_GEN
/
BOOTGEN7.LST
< prev
Wrap
File List
|
1986-02-06
|
7KB
|
150 lines
Anfang:
Cls
Clear
Print " ----------------------------------------------------------------------"
Print " 68000er B O O T G E N *DATUM-KALTSTART-NOKLICK-60Hz* V0.3 S.Hensel"
Print " ----------------------------------------------------------------------"
Print " Generiert ausführbaren Bootsektor auf der Diskette in Laufwerk A: "
Print " Das Bootprogramm in den Data-Zeilen wird in den Bootsektor auf Disk A:"
Print " eingetragen und sorgt beim Reset für richtiges Datum und Uhrzeit. "
Print " Weiterhin schaltet es den Tastaturklick aus und setzt die Bildfrequenz"
Print " (nur bei den Farbmodi) auf 60 (50) Hertz. Wenn kurz nach Drücken des "
Print " Reset-Knopfes die ALTERNATE-Taste gedrückt und festgehalten wird, "
Print " wird ein Kaltstart durchgeführt, der u.a. residente Ramdisks entfernt."
Print " Wird in ähnlicher Weise die RECHTE SHIFT-Taste gedrückt, darf der "
Print " Anwender das Tagesdatum und die aktuelle Uhrzeit neu setzen. "
Print " ----------------------------------------------------------------------"
Print " ACHTUNG: IST DIE DISKETTE IN LAUFWERK A: BEREIT (J/N) ???"
If Chr$(Inp(2) Or 32)<>"j" Then
Goto Schluss
Endif
Rem --------------------- Ab hier geht's richtig los: ------------------------
Buf$=Space$(512) ! Buffer für Bootsektor anlegen
Offset=Varptr(Buf$) ! Offset = Zeiger auf Diskbuffer
Fehler=Xbios(8,L:Offset,L:0,0,1,0,0,1) ! mit Floprd Bootsektor einlesen
If Fehler<>0 Then
Goto Chaos ! Lesefehler ???
Endif
Check=0
For I=0 To 511 Step 2
Add Check,Dpeek(Offset+I)
Next I
Chk$=Right$(Hex$(Check),4)
If Chk$="1234" Then
Repeat
Z$=Inkey$ ! Zur Sicherheit Tastaturpuffer leeren
Until Z$=""
Print "Der Bootsektor dieser Diskette enthält bereits ausführbaren Code!!!"
Print "Sind Sie sicher, daß Sie diesen Code überschreiben wollen (J/N) ?"
If Chr$(Inp(2) Or 32)<>"j" Then
Print "Vorsicht ist die Mutter der Porzellankiste..."
Goto Schluss
Endif
Endif
Restore ! ist nötig ab der zweiten Diskette
Read V$ ! BRA.S auf Programmanfang lesen...
W=Val("&h"+V$)
Poke Offset+0,W
Check=W ! Prüfsumme der Datazeilen
Read V$
W=Val("&h"+V$)
Poke Offset+1,W ! ...und in den Buffer schreiben
Add Check,W
P=29
Do
Read V$ ! Assemblerprogramm einlesen
Inc P ! und in den Buffer mit dem
Exit If V$="**" ! Bootsektor eintragen
W=Val("&h"+V$)
Poke Offset+P,W
Add Check,W
Loop
If P-28<>470 Then
Print "!!!!!! Fehler in den Data-Zeilen !!!!!!"
Print "Es werden genau 470 Daten erwartet, gefunden wurden aber ";P-28
Goto Schluss
Endif
If Check<>32119 Then ! CRC ist leider zu aufwendig... Sorry!
Print "Die Prüfsumme für 60 Hertz und Tastaturklick aus wurde nicht erreicht."
Print "*** Entweder befindet sich in den Data-Zeilen ein Fehler, oder"
Print " Sie haben die Daten verändert, z.B. auf 50 Hertz Klick ein."
Print "Wollen Sie die Daten trotzdem in den Bootsektor eintragen ??? (J/N) "
If Chr$(Inp(2) Or 32)<>"j" Then
Goto Schluss
Endif
Endif
Fehler=Xbios(18,L:Offset,L:-1,-1,1) ! Protobt macht Bootsektor ausführbar
Fehler=Xbios(9,L:Offset,L:0,0,1,0,0,1) ! Flopwr schreibt Bootsektor auf Disk
If Fehler<>0 Then
Goto Chaos ! Schreibfehler ???
Endif ! Retry schenk' ich mir
Rem --------------------- Jetzt hört's langsam auf ---------------------------
Print
Print "Alles Okay --- Bootsektor wurde geändert."
Print "Noch eine Diskette ändern ?"
If Chr$(Inp(2) Or 32)="j" Then
Goto Anfang
Endif
Schluss:
Print "Das war's --- Good-Bye... --- Press any key to exit..."
I=Inp(2)
End
Chaos:
If Fehler=-13 Then
Print "******** Diskette ist schreibgeschützt ! ********"
Else
Print "******** PANIC ERROR: #";Fehler;"*******"
Endif
Print "******** Sch..ade ********"
Goto Schluss
Rem ********* ACHTUNG beim Abtippen der DATA-Zeilen: *********
Rem ***** Zwischen "Data" und "xx,yy,..." darf nur *****
Rem ***** GENAU EIN LEERZEICHEN stehen !!! *****
Rem **********************************************************
Data 60,1C ~ BRA.S auf eigentlichen Code
Data 48,7A,00,0C,3F,3C,00,26,4E,4E,5C,8F,4E,75
Rem ***** Für Bildfrequenz eine der folgenden zwei Zeilen:
Rem 4E,71,4E,71 ~ Dieser Code für 50 Hertz
Data 42,38,82,0A ~ Dieser Code für 60 Hertz
Rem ***** Für Tastaturklick eine der folgenden zwei Zeilen:
Rem 4E,71,4E,71,4E,71 ~ Dieser Code für Klick ein
Data 08,B8,00,00,04,84 ~ Dieser Code für Klick aus
Data 48,7A,01,24,3F,3C,00,09,4E,41
Data 5C,8F,3F,3C,00,17,4E,4E,54,8F,28,00,2E,00,3F,3C
Data FF,FF,3F,3C,00,0B,4E,4D,58,8F,08,00,00,03,66,00
Data 00,82,08,00,00,00,66,04,4A,44,66,4E,48,7A,01,67
Data 3F,3C,00,20,4E,4E,5C,8F,48,7A,01,10,3F,3C,00,09
Data 4E,41,5C,8F,49,FA,01,4F,18,BC,00,0A,2F,0C,3F,3C
Data 00,0A,4E,41,5C,8F,48,7A,00,ED,3F,3C,00,09,4E,41
Data 5C,8F,52,8C,0C,1C,00,0A,66,24,61,44,4A,84,67,1E
Data 2F,04,3F,3C,00,16,4E,4E,5C,8F,2F,04,3F,3C,00,2B
Data 4E,41,58,8F,3F,3C,00,2D,4E,41,58,8F,4E,75,48,7A
Data 00,E9,3F,3C,00,20,4E,4E,5C,8F,4A,47,67,EE,28,07
Data 60,D8,42,B8,04,20,42,B8,04,26,20,78,00,04,4E,D0
Data 61,40,04,00,00,50,65,36,18,00,E9,8C,61,34,0C,00
Data 00,0C,62,2A,88,00,EB,8C,61,28,0C,00,00,1F,62,1E
Data 88,00,EB,8C,61,1C,0C,00,00,17,62,12,88,00,ED,8C
Data 61,10,0C,00,00,3B,62,06,88,00,EB,8C,4E,75,42,84
Data 4E,75,61,16,4A,40,6B,0E,72,0A,C2,C0,61,0C,4A,40
Data 6B,04,D0,41,4E,75,70,FF,4E,75,42,40,10,1C,04,40
Data 00,30,65,F2,0C,40,00,09,62,EC,4E,75,0D,2B,20,36
Data 38,30,30,30,65,72,20,44,61,74,75,6D,20,4B,61,6C
Data 74,73,74,61,72,74,20
Rem ***** Für Tastaturklick eine der folgenden zwei Zeilen:
Rem 20,20,4B ~ Klick ein
Data 4E,6F,6B ~ Klick aus
Data 6C,69,63,6B,20
Rem ***** Für Bildfrequenz eine der folgenden zwei Zeilen:
Rem 35 ~ 50 Hertz
Data 36 ~ 60 Hertz
Data 30,48,7A,20,2B,1B,66,0D,0A,00,2B,20,4A,4A,4D,4D
Data 54,54,53,53,4D,4D,20,20,28,4A,61,68,72,20,4D,6F
Data 6E,61,74,20,54,61,67,20,53,74,64,20,4D,69,6E,29
Data 20,2B,0D,0A,3D,20,1B,65,00,00,FF,01,0D,02,FF,03
Data 0E,04,FF,05,0F,07,F8,08,10,09,10,0A,10,0B,FF,0C
Data FF,0D,09,FF,00,00,07,01,00,02,08,03,00,04,09,05
Data 00,07,F8,08,10,09,10,0A,10,0B,FF,0C,FF,0D,09,FF
Data 00,00
Data **
End