home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d5xx
/
d556
/
asmonedemo.lha
/
ASMOneDemo
/
ASMOneDemo.lzh
/
ASM-One
/
Examples
/
BootBlock.S
< prev
next >
Wrap
Text File
|
1991-10-17
|
6KB
|
295 lines
;************************************************
;* Non-system virus check bootblock *
;* An example of how to make Boot Blocks *
;* *
;* ASM-One example coded by Rune Gram-Madsen *
;* *
;* All rights reserved. Copyright (c) 1990 *
;************************************************
WriteFlag = 0 ; 1 to write bootblock
;*****************
;* Constants *
;*****************
IF WriteFlag=1
AUTO WS\BEGIN\0\2\CC\
ENDC
DMASET= %1000000110000000
; -----a-bcdefghij
; a: Blitter Nasty
; b: Bitplane DMA (if this isn't set sprites disapear!)
; c: Copper DMA
; d: Blitter DMA
; e: Sprite DMA
; f: Disk DMA
; g-j: Audio 3-0 DMA
OpenLibrary= -408
CloseLibrary= -414
OpenFont= -72
AllocRaster= -492
FreeRaster= -498
SECTION FIRST,CODE_C
START MOVE.W #$4E75,EndAddr ; Put RTS into code
BRA.B GO
;******* Boot block *******
BEGIN DC.B 'DOS',0
DC.L 0
DC.L 880
; A5 / FONTPTR
; D7 / MODULU
RSRESET
OldCopper RS.L 1
ScreenPtr RS.L 1
GO: MOVEM.L D0-D7/A0-A6,-(A7)
LEA.L START(PC),A4
MOVE.L $4.W,A6
LEA.L GRAPNAME(PC),A1 ; Gfx Name
MOVEQ #0,D0
JSR OPENLIBRARY(A6)
MOVE.L D0,A6 ; Gfx Base
MOVE.L $26(A6),OldCopper(A4) ; Get old Copper Ptr.
;--- Get charset ---
LEA TEXTATTR(PC),A0
LEA FONTNAME(PC),A1
MOVE.L A1,(A0)
JSR OPENFONT(A6)
MOVE.L D0,A0
MOVE.L 34(A0),A5 ; Bit ptr
MOVE.W 38(A0),D7 ; Modulo
;--- Allocate Raster ---
MOVE.W #320,D0 ; Width
MOVE.W #260,D1 ; Higth
JSR AllocRaster(A6)
MOVE.L D0,ScreenPtr(A4)
;--- Clear screen ---
MOVE.L D0,A0
MOVE.W #320/8*260/4-1,D1 ; Clear 320/8 bytes wide
MOVEQ #0,D2 ; times 260 bytes high
.LOOPC MOVE.L D2,(A0)+ ; in longwords / 4
DBF D1,.LOOPC
;--- Set BPL ptrs ---
LEA.L BITPLANES+2(PC),A0
MOVEQ #40,D1
ADD.L D0,D1
SWAP D0 ; High word of pointer
MOVE.W D0,(A0) ; Store high 1
ADDQ.W #4,A0
SWAP D0 ; Low word of pointer
MOVE.W D0,(A0) ; Store low 1
ADDQ.W #4,A0
SWAP D1 ; High word of pointer
MOVE.W D1,(A0) ; Store high 2
ADDQ.W #4,A0
SWAP D1 ; Low word of pointer
MOVE.W D1,(A0) ; Store low 2
MOVE.L A6,-(A7) ; Store Graphics library base
;--- Set DMA registers ---
MOVE.L #$DFF000,A6
MOVE.W $1C(A6),-(A7) ; Store old inter data
MOVE.W $02(A6),-(A7) ; Store old DMA data
MOVE.L #$7FFF7FFF,$9A(A6) ; Disable interrupts
MOVE.W #$7FFF,$96(A6) ; Disable all DMA's
LEA COPLIST(PC),A0
MOVE.L A0,$80(A6) ; Copper1 start adress
MOVE.W #DMASET!$8200,$96(A6) ; Enable DMA's
CLR.W $88(A6) ; Start copper1
; A5 = CHARSET
; D7 = CHARDIST
PRINTTEXT:
MOVE.L ScreenPtr(A4),A1 ; Screenptr
LEA.L TEXT(PC),A0
ADD.W #40,A1
MOVEQ #0,D1
.LOOP0
MOVEQ #0,D0
MOVE.B (A0)+,D0 ; Get char
BEQ.S .END ; Last char ???
CMP.B #10,D0 ; A return char
BNE.S .CONT
MOVEQ #0,D1 ; first column
ADD.W #40*8,A1 ; next line
BRA.S .LOOP0 ; Get next char
.CONT CMP.B #1,D0 ; Space mark
BNE.S .CONT2
MOVE.B (A0)+,D0 ; Get spaces
ADD.W D0,D1 ; Add spaces
BRA.S .LOOP0
.CONT2 MOVE.L A1,A2 ; a2 = screen ptr
ADD.W D1,A2 ; a2 = screen char ptr
MOVE.L A5,A3
SUB.W #$20,D0
ADD.W D0,A3 ; A3 = Char pointer
MOVEQ #8-1,D0 ; copy 8 bytes
.LOOP1 MOVE.B (A3),(A2) ; Copy one byte from char
ADD.W D7,A3 ; next byte in char
ADD.W #40,A2 ; next raster line
DBF D0,.LOOP1 ; Loop ^
ADDQ.W #1,D1 ; move 1 right
BRA.S .LOOP0 ; Loop ^^
.END BTST #6,$BFE001 ; Wait mouse
BNE.S .END ; Pressed ???
;--- The End ---
MOVE.L #$7FFF7FFF,$9A(A6) ; Disable interrupts
OR.L #$8000C000,(A7) ; Set enable bits
MOVE.W (A7)+,$96(A6) ; Enable interruptr
MOVE.W (A7)+,$9A(A6) ; Restore old inter data
MOVE.L OldCopper(A4),$80(A6) ; Restore old copper ptr
CLR.W $88(A6) ; Start Copper
;--- DeAllocate Raster ---
MOVE.L (A7)+,A6
MOVE.L ScreenPtr(A4),A0
MOVE.W #320,D0 ; Width
MOVE.W #260,D1 ; Higth
JSR FreeRaster(A6)
MOVE.L A6,A1 ; Close graphics library
MOVE.L $4.W,A6
JSR CLOSELIBRARY(A6)
MOVEM.L (A7)+,D0-D7/A0-A6
EndAddr MOVE.L $0004.W,A6
LEA DOSNAME(PC),A1
MOVE.W #'do',(A1)
JSR -96(A6)
MOVE.L D0,A0
MOVE.L 22(A0),A0
MOVEQ #0,D0
RTS
TEXTATTR:
DC.L 0
DC.W 8
DC.B 0
DC.B 0
DC.W 8
FONTNAME: DC.B 'topaz.font',0
GRAPNAME: DC.B 'graph'
DOSNAME: DC.B 'ics.library',0
;*****************************
;* *
;* COPPER1 PROGRAM *
;* *
;*****************************
COPLIST:
DC.L $0182057C
DC.L $01840D85
DC.L $01860FA7
DC.L $01A20AAA
DC.L $01A40666
DC.L $01A60FFF
BITPLANES:
DC.L $00E00000
DC.L $00E20000
DC.L $00E40000
DC.L $00E60000
DC.L $01002200
DC.L $01020001
DC.L $01040000
DC.L $01080000
DC.L $010A0000
DC.L $008E2C78
DC.L $00902CC8
DC.L $00920038
DC.L $009400D0
DC.L $01800000
DC.L $3007FFFE
DC.L $01800220
DC.L $4007FFFE
DC.L $01800330
DC.L $5007FFFE
DC.L $01800440
DC.L $6007FFFE
DC.L $01800550
DC.L $7007FFFE
DC.L $01800660
DC.L $8007FFFE
DC.L $01800770
DC.L $9007FFFE
DC.L $01800880
DC.L $A007FFFE
DC.L $01800990
DC.L $B007FFFE
DC.L $01800880
DC.L $C007FFFE
DC.L $01800770
DC.L $D007FFFE
DC.L $01800660
DC.L $E007FFFE
DC.L $01800550
DC.L $F007FFFE
DC.L $01800440
DC.L $FFDFFFFE
DC.L $0007FFFE
DC.L $01800330
DC.L $1007FFFE
DC.L $01800220
DC.L $2007FFFE
DC.L $01800110
DC.L $FFFFFFFE
TEXT:
DC.B 10
DC.B 10
DC.B 10
DC.B 10
DC.B 10
DC.B 10
DC.B 10
DC.B 1,8,'This disk was installed',10
DC.B 10
DC.B 1,15,'using the',10
DC.B 10
DC.B 1,9,'AsmOne Macro Assembler',10
DC.B 10
DC.B 10
DC.B 10
DC.B 1,2,'--- NO VIRUS ON THIS BOOTBLOCK ---',10
DC.B 10
DC.B 10
DC.B 10
DC.B 1,8,'! Press mouse to boot !',0
END:
IF END-BEGIN>1024
FAIL
ENDC