; Booter v 1.2 26.10.1993 by Holger Janz
; to boot game disks at 16MHz from desktop

anfang:         pea     text            ;text output
                move.w  #9,-(SP)
                trap    #1
                addq.l  #6,SP

                move.w  #1,-(SP)        ;key request
                trap    #1
                addq.l  #2,SP

                cmp.b   #'q',D0
                beq     ende            ;if pressed <q> then end

                pea     boottext        ;text output
                move.w  #9,-(SP)
                trap    #1
                addq.l  #6,SP

                move.w  #$01,-(SP)
                move.w  #$00,-(SP)
                move.w  #$00,-(SP)
                move.w  #$01,-(SP)
                move.w  #$00,-(SP)
                move.l  #$00,-(SP)
                pea     buffer
                move.w  #$08,-(SP)      ;Xbios 8
                trap    #14             ;read boot sector
                lea     $14(SP),SP

                tst.l   D0              ;error ?
                bne     anfang          ;then back

                movea.l #buffer,A0      ;test magic number $1234
                move.l  #$00,D1
                move.w  #$FF,D0
loop1:          add.w   (A0),D1
                adda.l  #$02,A0
                dbra    D0,loop1
                cmp.w   #$1234,D1
                bne     anfang          ;not executable

                move.w  #$00,-(SP)      ;low rez
                move.l  #-$01,-(SP)
                move.l  #-$01,-(SP)
                move.w  #$05,-(SP)
                trap    #14
                lea     $0C(SP),SP

                clr.l   -(SP)           ;switch to Supervisor-Modus
                move.w  #$20,-(SP)
                trap    #1
                addq.l  #6,SP
                move.l  D0,-(SP)        ;resulte to stack

                bsr.s   buffer          ;jump to boot routine

                move.w  #$20,-(SP)      ;back to User-Modus
                trap    #1
                addq.l  #6,SP

                move.w  #$01,-(SP)      ;back to mid rez
                move.l  #-$01,-(SP)
                move.l  #-$01,-(SP)
                move.w  #$05,-(SP)
                trap    #14
                lea     $0C(SP),SP


ende:           pea     exittext        ;text output
                move.w  #9,-(SP)
                trap    #1
                addq.l  #6,SP

                clr.w   -(SP)           ;bye
                trap    #1

buffer:         DS.B 512
text:           DC.B $1B,$45,' BOOTER V 1.2 by H.Janz 93',$0A,$0D
                DC.B '-----------------------------',$0A,$0D
                DC.B 'put boot-disk into drive A and press a key',$0A,$0D
                DC.B '<Q> quit',$0A,$0D,$00
boottext:       DC.B $0A,$0D,'load and execute boot sectors',$0A,$0D,$00
exittext:       DC.B $0A,$0D,'quit program',$0A,$0D,$00
                END
