          title     <BA>ckground<BO>ot<SE>ktor<TE>ster
          module    babosete.o
* --------------------------------------------------------------------------
          section   text
* --------------------------------------------------------------------------
gemdos    equ       1
cconws    equ       9
ptermres  equ       49
bios      equ       13
kbshift   equ       11
.v_bas_ad equ       $44e
hdv_bpb   equ       $472
.dskbufp  EQU       $4C6
* --------------------------------------------------------------------------
entry     jmp       install(pc)
* --------------------------------------------------------------------------
          ds.w      0                   WORD-ALIGN !
          dc.b      'XBRA'
          dc.b      'ubaB'
o_hdv_bpb dc.l      1

n_hdv_bpb move.l    o_hdv_bpb(pc),a0
          cmp.w     #2,4(sp)            Laufwerk < 2 (also A oder B) ?
          blt.s     for_me              Ja: dann ist's fr meinereiner...
          jmp       (a0)                Sonst: weiter mit der alten Routine...

for_me    move.w    4(sp),-(sp)         Die alte Routine fr das gewnschte
          jsr       (a0)                Laufwerk aufrufen...
          addq.l    #2,sp

          movem.l   d0-d2,-(sp)
          move.l    .dskbufp,a0         A0 zeigt auf den gelesenen Bootsector
          clr.w     d0                  Checksumme modulo 2^16 bestimmen...
          move.w    #255,d1
grynglfix add.w     (a0)+,d0
          dbf       d1,grynglfix
          cmp.w     #$1234,d0           Ausfhrbarer Bootsector ?
          bne.s     sau_gut             Nein: Hurra !

          move.l    .dskbufp,a0   
          add.l     #$3a,A0       
          MOVE.W    #$0D6,D0      
          CLR.W     D1            
AddLoop   ADD.W     (A0)+,D1      
          DBRA      D0,AddLoop   
          TST.W     D1            
          Beq.S     sau_gut             sagrotan !!!

          move      sr,d2               IPL auf 4 und altes SR in D2 merken
          move.w    d2,d0
          and.w     #$f8ff,d0
          or.w      #$0400,d0
          move      d0,sr

          move.w    #63,d0              64 mal den Bildschirm invertieren...
klapperdi move.l    .v_bas_ad,a0
          move.w    #7999,d1
uffenday  not.l     (a0)+
          dbf       d1,uffenday
          dbf       d0,klapperdi

          move      d2,sr               alten IPL wiederherstellen

sau_gut   movem.l   (sp)+,d0-d2
done      rts                           Das war's dann, tschessing !
* --------------------------------------------------------------------------
install   clr.l     -(sp)               D0 = Super(0)
          move.w    #32,-(sp)
          trap      #1
          addq.l    #6,sp
          move.l    d0,-(sp)
          move.w    #32,-(sp)           Super(ssp) vorbereiten

          lea       o_hdv_bpb(pc),a0    W„chter einklinken !
          move.l    hdv_bpb,(a0)
          lea       n_hdv_bpb(pc),a0
          move.l    a0,hdv_bpb

          trap      #1                  Super(ssp) ausfhren
          addq.l    #6,sp

          pea       intro(pc)           Das Startgeblubber...
          move.w    #cconws,-(sp)
          trap      #gemdos
          addq.l    #6,sp

wait      move.w    #-1,-(sp)
          move.w    #kbshift,-(sp)
          trap      #bios
          addq.l    #4,sp
          and.w     #$1f,d0
          bne.s     wait

          clr.w     -(sp)
          move.l    #install-entry+256,-(sp)
          move.w    #ptermres,-(sp)
          trap      #gemdos

intro     dc.b      ' ',27,'p  ===============================  ',27,'q',13,10
          dc.b      ' ',27,'p   BACKGROUND-BOOT-SECTOR-TESTER   ',27,'q',13,10
          dc.b      ' ',27,'p  ===============================  ',27,'q',13,10
          dc.b      ' ',27,'p           PUBLIC-DOMAIN           ',27,'q',13,10
          dc.b      ' ',27,'p    (C) 1.12.1989,  Ulf Bartelt    ',27,'q',13,10
          dc.b      ' ',27,'p  Ignoriert Sagrotan-Anti-Virus !  ',27,'q',13,10
          dc.b      10,0

          end

