home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Almathera Ten Pack 4: Demo 1
/
almathera_demo1.bin
/
sourcecode
/
german
/
scrolling.s
< prev
next >
Wrap
Text File
|
1995-03-17
|
7KB
|
415 lines
BitPlane1=$50000 ;Adresse Bitplane 1
BitPlane2=$54000 ;Adresse Bitplane 2
BitPlane3=$58000 ;Adresse Bitplane 3
BitPlane4=$5c000 ;Adresse Bitplane 4
BitPlane5=$60000 ;Adresse BItplane 5
Exec=4 ;Basisadresse Execbase
Permit=-138 ;Stop Multitasking
Open= -30
Close= -30 -6
Read= -30 -12
Forbid=-132 ;Start Multitasking
OpenLibrary=-408
CloseLibrary=-414
InitRastPort=-198
InitBitMap=-390
SetRast= -30 -204
Move= -30 -210
Draw= -30 -216
Text= -30 -30
RectFill= -30 -276
ScrollRaster= -30 -366
WritePixel= -30 -294
SetAPen= -30 -312
WaitTOF= -30 -240
start:
jsr setup ;Initialisiert die Bitmaps und
;oeffnet benoetigte Libraries
initirq:
move.w #$4000,$dff09a
move.l $6c,Oldirq
move.l #Neuirq,$6c
move.w #$c000,$dff09a
jmp grafik
Neuirq:
movem.l d0-d2/a0-a1,-(a7)
move SR,-(sp)
move.w $dff01e,d0
btst #5,d0
bne.s makeirq
bra Endirq
Makeirq:
nop
Endirq:
move (sp)+,SR
movem.l (sp)+,d0-d2/a0-a1
DC.W $4ef9
Oldirq: DC.L $0000
grafik:
jsr setcopper
move.l gfxbase,a6
lea rastport,a1
move.l #1,d0
jsr setapen(a6)
init: move.l #text1,a2
move.l #len1-text1,d7
sub #1,d7
move.b #1,dauer
l2:
sub.b #1,dauer
bne no
move.b #3,dauer
eor.b #2,$bfe001
no: jsr set1
move.l a2,a0
move.l gfxbase,a6
lea rastport,a1
move.l #2,d0
jsr setapen(a6)
move.w #1,d0
jsr text(a6)
jsr set2
move.l a2,a0
move.l gfxbase,a6
move.w #3,d0
jsr setapen(a6)
lea rastport,a1
move.w #1,d0
jsr text(a6)
jsr scroll
add.l #1,a2
jsr wait
dbra d7,l2
jmp init
scroll:
move #4,d6
l1: move.l gfxbase,a6
jsr waittof(a6)
lea rastport,a1
move.w #2,d0
move.w #0,d1
move.w #0,d2
move.w #180,d3
move.w #330,d4
move.w #187,d5
jsr scrollraster(a6)
move.l gfxbase,a6
lea rastport,a1
move.w #3,d0
move.w #0,d1
move.w #0,d2
move.w #191,d3
move.w #330,d4
move.w #200,d5
jsr scrollraster(a6)
dbra d6,l1
rts
set1: move.l gfxbase,a6
lea rastport,a1
move.l #321,d0
move.l #197,d1
jsr move(a6)
rts
set2: move.l gfxbase,a6
lea rastport,a1
move.l #321,d0
move.l #186,d1
jsr move(a6)
rts
wait:
andi.b #64,$bfe001 ;Bit 7 (linke Maustaste)
beq stop
rts
stop:
move.w #$4000,$dff09a
move.l oldirq,$6c
move.w #$c000,$dff09a
move.l oldcop,(a0) ;Alte Copperliste wieder bereit-
move.l exec,a6
move.l GfxBase,a1 ;stellen und Gfxlibrary
jsr CloseLibrary(a6);schliessen
move.l dos_base,a1
jsr closelibrary(a6)
jsr Permit(a6) ;Multitasking wieder zulassen
ILLEGAL ;Rueckkehr zum SEKA
rts ;ende
open_file:
move.l dos_base,a6
move.l #filename,d1
move.l #1005,d2
jsr Open(a6)
beq wait
move.l d0,bif
rts
load:
move.l dos_base,a6
move.l bif,d1
jsr Read(a6)
rts
close_file:
move.l dos_base,a6
move.l bif,d1
jsr Close(a6)
rts
setup:
move.l Exec,a6 ;Exebase-Adresse nach a6
jsr Forbid(a6) ;Stop Multitasking
move.l exec,a6
lea.l dosname,a1
jsr Openlibrary(a6)
move.l d0,dos_base
lea GrName,a1 ;Gfxname nach a1
jsr OpenLibrary(a6) ;Gfxlibrary oeffnen
move.l d0,GfxBase ;Basisadresse buffern
move.l d0,a6
add.l #$32,d0
move.l d0,copptr
; ---- Setup the BitMap
lea BitMap,a0 ;Bitmapstruktur nach a0
moveq #5,d0 ;Tiefe (5 Bitplanes)
move.l #640,d1 ;320 Pixel nach x
move.l #200,d2 ;200 Pixel nach y
jsr InitBitMap(a6) ;Bitmap Initialisieren
lea RastPort,a1 ;erhaltenen Rastport nach a1
jsr InitRastPort(a6);Rastport initialisieren
move.l #BitMap,R_BitMap
move.l #BitPlane1,d0 ;Adresse Bitplane nach d0
move.l d0,Plane1 ;Adresse auch nach Plane1
move.l d0,a0 ;und nach Adressregister a0
move.w d0,lo1 ;sowie in Copperliste speichern
swap d0 ;Hi-Nibble isolieren und eben-
move.w d0,hi1 ;falls nach Copperliste
move.l #16000,d0 ;8000 Bytes fuer Bitplane bele-
move.b #$00,d1 ;gen
cl1: move.b d1,(a0)+
dbf d0,cl1
move.l #BitPlane2,d0
move.l d0,Plane2
move.l d0,a0
move.w d0,lo2
swap d0
move.w d0,hi2
move.l #16000,d0
move.b #$00,d1
cl2: move.b d1,(a0)+
dbf d0,cl2
move.l #BitPlane3,d0
move.l d0,Plane3
move.l d0,a0
move.w d0,lo3
swap d0
move.w d0,hi3
move.l #16000,d0
move.b #$00,d1
cl3: move.b d1,(a0)+
dbf d0,cl3
move.l #BitPlane4,d0
move.l d0,Plane4
move.l d0,a0
move.w d0,lo4
swap d0
move.w d0,hi4
move.l #16000,d0
move.b #$00,d1
cl4: move.b d1,(a0)+
dbf d0,cl4
move.l #BitPlane5,d0
move.l d0,Plane5
move.l d0,a0
move.w d0,lo5
swap d0
move.w d0,hi5
move.l #16000,d0
move.b #$00,d1
cl5: move.b d1,(a0)+
dbf d0,cl5
rts
setcopper:
move.l copptr,a0 ;Adresse der Copperliste nach a0
move.l (a0),oldcop ;Alte Liste zwischenspeichern
move.l #Copper,(a0) ;Neue Liste fue Copper
rts
Copper:
DC.W $0180
co0: dc.w $0000
DC.W $0182
co1: dc.w $0fff
DC.W $0184
co2: dc.w $000f
DC.W $0186
co3: dc.w $0f00
DC.W $0188
co4: dc.w $000f
DC.W $018a
co5: dc.w $0f0f
DC.W $018c
co6: dc.w $00ff
DC.W $018e
co7: dc.w $f0ff
DC.W $0190
co8: dc.w $0620
DC.W $0192
co9: dc.w $0e50
DC.W $0194
co10: dc.w $09f1
DC.W $0196
co11: dc.w $0eb0
dc.w $0198
co12: dc.w $055f
dc.w $019a
co13: dc.w $092f
dc.w $019c
co14: dc.w $00f8
dc.w $019e
co15: dc.w $0ccc
dc.w $01a0
co16: dc.w $0000
dc.w $01a2
co17: dc.w $0d22
dc.w $01a4
co18: dc.w $0000
dc.w $01a6
co19: dc.w $0fca
dc.w $01a8
co20: dc.w $0444
dc.w $01aa
co21: dc.w $0555
dc.w $01ac
co22: dc.w $0666
dc.w $01ae
co23: dc.w $0777
dc.w $01b0
co24: dc.w $0888
dc.w $01b2
co25: dc.w $0999
dc.w $01b4
co26: dc.w $0aaa
dc.w $01b6
co27: dc.w $0bbb
dc.w $01b8
co28: dc.w $0ccc
dc.w $01ba
co29: dc.w $0ddd
dc.w $01bc
co30: dc.w $0eee
dc.w $01be
co31: dc.w $0fff
DC.W $00e0
hi1: DC.W $0002
DC.W $00e2
lo1: DC.W $1000
DC.W $00e4
hi2: DC.W $0002
DC.W $00e6
lo2: DC.W $1000
DC.W $00e8
hi3: DC.W $0002
DC.W $00ea
lo3: DC.W $1000
DC.W $00ec
hi4: DC.W $0002
DC.W $00ee
lo4: DC.W $1000
DC.W $00f0
hi5: DC.W $0002
DC.W $00f2
lo5: DC.W $1000
DC.W $0100,%0101000000000000
DC.W $0102
delay: DC.W $ff
DC.W $0108,38
DC.W $010a,38
DC.W $0092,$0030
DC.W $0094,$00d0
DC.W $008e,$3681
DC.W $0090,$fdc1
DC.W $ffff,$fffe
;----- Hier beginnt die Bitmap-Struktur -----
BitMap:
BytesPerRow: blk.w 1,0
Bytes: blk.w 1,0
Flags: blk.b 1,0
Depth: blk.b 1,0
Pad: blk.w 1,0
Plane1: blk.l 1,0
Plane2: blk.l 1,0
Plane3: blk.l 1,0
Plane4: blk.l 1,0
Plane5: blk.l 1,0
Planes: blk.l 1,0
;----- Hier beginnt die Rasterport-Struktur -----
RastPort:
blk.l 1,0
R_BitMap: blk.l 1,0
blk.b 2+4+4+4+8,0
blk.b 4,0
cp_x: blk.w 1,0
cp_y: blk.w 1,0
blk.b 8+22+[7*2]+[2*4]+8,0
blk.w 6,0
even
filename: DC.B 'df1:lightlogo.lo5',0
GrName: DC.B 'graphics.library',0
Dosname: DC.B 'dos.library',0
even
copptr: blk.l 1,0
oldcop: blk.l 1,0
GfxBase: blk.l 1,0
Dos_base: blk.l 1,0
bif: blk.l 1,0
disk_buf: blk.l 1,0
col_buf: dc.w 64,0
align 4
text1:
dc.b ' '
dc.b 'Hi there from THE BLADE RUNNERS in 2012... '
dc.b 'Greetings to HEADBANGER, ERROR-SOFT, IRATA, '
dc.b 'LIGHT-CIRCLE and RADWAR (Hi Markus!)... '
dc.b 'This scroll-demo is written in 68000 Assembler '
dc.b 'with full Copper and Interrupt control !!! '
dc.b 'Look for flashing POWER-LAMP !!! '
dc.b 'As soon as possible coming TBR Intro-Disk 1... '
len1: equ *
dauer: dc.b 1,0