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   
File List  |  1986-02-06  |  7KB  |  150 lines

  1. Anfang:
  2. Cls
  3. Clear
  4. Print " ----------------------------------------------------------------------"
  5. Print " 68000er  B O O T G E N  *DATUM-KALTSTART-NOKLICK-60Hz*  V0.3  S.Hensel"
  6. Print " ----------------------------------------------------------------------"
  7. Print " Generiert ausführbaren Bootsektor auf der Diskette in Laufwerk A:     "
  8. Print " Das Bootprogramm in den Data-Zeilen wird in den Bootsektor auf Disk A:"
  9. Print " eingetragen und sorgt beim Reset für richtiges Datum und Uhrzeit.     "
  10. Print " Weiterhin schaltet es den Tastaturklick aus und setzt die Bildfrequenz"
  11. Print " (nur bei den Farbmodi) auf 60 (50) Hertz. Wenn kurz nach Drücken des  "
  12. Print " Reset-Knopfes die ALTERNATE-Taste gedrückt und festgehalten wird,     "
  13. Print " wird ein Kaltstart durchgeführt, der u.a. residente Ramdisks entfernt."
  14. Print " Wird in ähnlicher Weise die RECHTE SHIFT-Taste gedrückt, darf der     "
  15. Print " Anwender das Tagesdatum und die aktuelle Uhrzeit neu setzen.          "
  16. Print " ----------------------------------------------------------------------"
  17. Print " ACHTUNG:  IST DIE DISKETTE IN LAUFWERK A:  BEREIT  (J/N) ???"
  18. If Chr$(Inp(2) Or 32)<>"j" Then
  19.   Goto Schluss
  20. Endif
  21. Rem --------------------- Ab hier geht's richtig los: ------------------------
  22. Buf$=Space$(512)                        ! Buffer für Bootsektor anlegen
  23. Offset=Varptr(Buf$)                     ! Offset = Zeiger auf Diskbuffer
  24. Fehler=Xbios(8,L:Offset,L:0,0,1,0,0,1)  ! mit Floprd Bootsektor einlesen
  25. If Fehler<>0 Then
  26.   Goto Chaos                            ! Lesefehler ???
  27. Endif
  28. Check=0
  29. For I=0 To 511 Step 2
  30.   Add Check,Dpeek(Offset+I)
  31. Next I
  32. Chk$=Right$(Hex$(Check),4)
  33. If Chk$="1234" Then
  34.   Repeat
  35.     Z$=Inkey$                           ! Zur Sicherheit Tastaturpuffer leeren
  36.   Until Z$=""
  37.   Print "Der Bootsektor dieser Diskette enthält bereits ausführbaren Code!!!"
  38.   Print "Sind Sie sicher, daß Sie diesen Code überschreiben wollen (J/N) ?"
  39.   If Chr$(Inp(2) Or 32)<>"j" Then
  40.     Print "Vorsicht ist die Mutter der Porzellankiste..."
  41.     Goto Schluss
  42.   Endif
  43. Endif
  44. Restore                                 ! ist nötig ab der zweiten Diskette
  45. Read V$                                 ! BRA.S auf Programmanfang lesen...
  46. W=Val("&h"+V$)
  47. Poke Offset+0,W
  48. Check=W                                 ! Prüfsumme der Datazeilen
  49. Read V$
  50. W=Val("&h"+V$)
  51. Poke Offset+1,W                         ! ...und in den Buffer schreiben
  52. Add Check,W
  53. P=29
  54. Do
  55.   Read V$                               ! Assemblerprogramm einlesen
  56.   Inc P                                 ! und in den Buffer mit dem
  57.   Exit If V$="**"                       ! Bootsektor eintragen
  58.   W=Val("&h"+V$)
  59.   Poke Offset+P,W
  60.   Add Check,W
  61. Loop
  62. If P-28<>470 Then
  63.   Print "!!!!!! Fehler in den Data-Zeilen !!!!!!"
  64.   Print "Es werden genau 470 Daten erwartet, gefunden wurden aber ";P-28
  65.   Goto Schluss
  66. Endif
  67. If Check<>32119 Then                    ! CRC ist leider zu aufwendig... Sorry!
  68.   Print "Die Prüfsumme für 60 Hertz und Tastaturklick aus wurde nicht erreicht."
  69.   Print "*** Entweder befindet sich in den Data-Zeilen ein Fehler, oder"
  70.   Print "    Sie haben die Daten verändert, z.B. auf 50 Hertz Klick ein."
  71.   Print "Wollen Sie die Daten trotzdem in den Bootsektor eintragen ??? (J/N) "
  72.   If Chr$(Inp(2) Or 32)<>"j" Then
  73.     Goto Schluss
  74.   Endif
  75. Endif
  76. Fehler=Xbios(18,L:Offset,L:-1,-1,1)     ! Protobt macht Bootsektor ausführbar
  77. Fehler=Xbios(9,L:Offset,L:0,0,1,0,0,1)  ! Flopwr schreibt Bootsektor auf Disk
  78. If Fehler<>0 Then
  79.   Goto Chaos                            ! Schreibfehler ???
  80. Endif                                   ! Retry schenk' ich mir
  81. Rem --------------------- Jetzt hört's langsam auf ---------------------------
  82. Print
  83. Print "Alles Okay --- Bootsektor wurde geändert."
  84. Print "Noch eine Diskette ändern ?"
  85. If Chr$(Inp(2) Or 32)="j" Then
  86.   Goto Anfang
  87. Endif
  88. Schluss:
  89. Print "Das war's --- Good-Bye... --- Press any key to exit..."
  90. I=Inp(2)
  91. End
  92. Chaos:
  93. If Fehler=-13 Then
  94.   Print "******** Diskette ist schreibgeschützt ! ********"
  95. Else
  96.   Print "******** PANIC ERROR: #";Fehler;"*******"
  97. Endif
  98. Print "******** Sch..ade ********"
  99. Goto Schluss
  100. Rem ********* ACHTUNG beim Abtippen der DATA-Zeilen: *********
  101. Rem *****    Zwischen "Data" und "xx,yy,..." darf nur    *****
  102. Rem *****        GENAU EIN LEERZEICHEN stehen !!!        *****
  103. Rem **********************************************************
  104. Data 60,1C                 ~ BRA.S auf eigentlichen Code
  105. Data 48,7A,00,0C,3F,3C,00,26,4E,4E,5C,8F,4E,75
  106. Rem ***** Für Bildfrequenz eine der folgenden zwei Zeilen:
  107. Rem  4E,71,4E,71           ~ Dieser Code für 50 Hertz
  108. Data 42,38,82,0A           ~ Dieser Code für 60 Hertz
  109. Rem ***** Für Tastaturklick eine der folgenden zwei Zeilen:
  110. Rem  4E,71,4E,71,4E,71     ~ Dieser Code für Klick ein
  111. Data 08,B8,00,00,04,84     ~ Dieser Code für Klick aus
  112. Data 48,7A,01,24,3F,3C,00,09,4E,41
  113. Data 5C,8F,3F,3C,00,17,4E,4E,54,8F,28,00,2E,00,3F,3C
  114. Data FF,FF,3F,3C,00,0B,4E,4D,58,8F,08,00,00,03,66,00
  115. Data 00,82,08,00,00,00,66,04,4A,44,66,4E,48,7A,01,67
  116. Data 3F,3C,00,20,4E,4E,5C,8F,48,7A,01,10,3F,3C,00,09
  117. Data 4E,41,5C,8F,49,FA,01,4F,18,BC,00,0A,2F,0C,3F,3C
  118. Data 00,0A,4E,41,5C,8F,48,7A,00,ED,3F,3C,00,09,4E,41
  119. Data 5C,8F,52,8C,0C,1C,00,0A,66,24,61,44,4A,84,67,1E
  120. Data 2F,04,3F,3C,00,16,4E,4E,5C,8F,2F,04,3F,3C,00,2B
  121. Data 4E,41,58,8F,3F,3C,00,2D,4E,41,58,8F,4E,75,48,7A
  122. Data 00,E9,3F,3C,00,20,4E,4E,5C,8F,4A,47,67,EE,28,07
  123. Data 60,D8,42,B8,04,20,42,B8,04,26,20,78,00,04,4E,D0
  124. Data 61,40,04,00,00,50,65,36,18,00,E9,8C,61,34,0C,00
  125. Data 00,0C,62,2A,88,00,EB,8C,61,28,0C,00,00,1F,62,1E
  126. Data 88,00,EB,8C,61,1C,0C,00,00,17,62,12,88,00,ED,8C
  127. Data 61,10,0C,00,00,3B,62,06,88,00,EB,8C,4E,75,42,84
  128. Data 4E,75,61,16,4A,40,6B,0E,72,0A,C2,C0,61,0C,4A,40
  129. Data 6B,04,D0,41,4E,75,70,FF,4E,75,42,40,10,1C,04,40
  130. Data 00,30,65,F2,0C,40,00,09,62,EC,4E,75,0D,2B,20,36
  131. Data 38,30,30,30,65,72,20,44,61,74,75,6D,20,4B,61,6C
  132. Data 74,73,74,61,72,74,20
  133. Rem ***** Für Tastaturklick eine der folgenden zwei Zeilen:
  134. Rem  20,20,4B       ~ Klick ein
  135. Data 4E,6F,6B       ~ Klick aus
  136. Data 6C,69,63,6B,20
  137. Rem ***** Für Bildfrequenz eine der folgenden zwei Zeilen:
  138. Rem  35             ~ 50 Hertz
  139. Data 36             ~ 60 Hertz
  140. Data 30,48,7A,20,2B,1B,66,0D,0A,00,2B,20,4A,4A,4D,4D
  141. Data 54,54,53,53,4D,4D,20,20,28,4A,61,68,72,20,4D,6F
  142. Data 6E,61,74,20,54,61,67,20,53,74,64,20,4D,69,6E,29
  143. Data 20,2B,0D,0A,3D,20,1B,65,00,00,FF,01,0D,02,FF,03
  144. Data 0E,04,FF,05,0F,07,F8,08,10,09,10,0A,10,0B,FF,0C
  145. Data FF,0D,09,FF,00,00,07,01,00,02,08,03,00,04,09,05
  146. Data 00,07,F8,08,10,09,10,0A,10,0B,FF,0C,FF,0D,09,FF
  147. Data 00,00
  148. Data **
  149. End
  150.