home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Almathera Ten Pack 4: Demo 1
/
almathera_demo1.bin
/
sourcecode
/
german
/
reader.s
< prev
next >
Wrap
Text File
|
1995-03-17
|
6KB
|
336 lines
BitPlane1=$50000 ;Adresse Bitplane 1
BitPlane2=$52000 ;Adresse Bitplane 2
BitPlane3=$54000 ;Adresse Bitplane 3
BitPlane4=$56000 ;Adresse Bitplane 4
BitPlane5=$58000 ;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
start:
jsr setup ;Initialisiert die Bitmaps und
;oeffnet benoetigte Libraries
grafik:
move.l #Bitplane1,a1
move.l #Bitplane2,a2
move.l #Bitplane3,a3
move.l #Bitplane4,a4
move.l #Bitplane5,a5
move.l #pic_buf+64,a0
move #4,d1
l0: move #4000,d0
l1: move.w (a0),(a1)
add.w #2,a0
add.w #2,a1
sub #1,d0
bne l1
add #192,a1
sub #1,d1
bne l0
move.l #pic_buf,a0
move.l #co0,a1
move #32,d1
w2: move.w (a0),(a1)+
add.w #2,a0
add.w #2,a1
sub #1,d1
bne w2
jsr setcopper
wait:
andi.b #64,$bfe001 ;Bit 7 (linke Maustaste)
bne wait
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
clr.l d0 ;Register loeschen
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 #320,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 #8000,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 #8000,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 #8000,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 #8000,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 #8000,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
;----- Hier beginnt die neue Copperliste -----
;Angaben muessen immer als WORD (.W) uebergeben werden
;Die Angaben geschehen immer Paarweise, wobei der
;erste Wert die Adresse ($DFFxxx) und der zweite Wert
;der Wert sein muss, der an diese Adresse geschrieben
;werden soll (DC.W $0180,$000 zum Beispiel schreibt
;an Adresse $DFF0180 den Wert $000).
Copper:
DC.W $0180
co0: dc.w $005a
DC.W $0182
co1: dc.w $0fff
DC.W $0184
co2: dc.w $0002
DC.W $0186
co3: dc.w $0f80
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 %0000
DC.W $0108,0
DC.W $010a,0
DC.W $0092,$0038
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 'tbr-pic',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
buffer1: blk.l 25,0
pic_buf: blk.l 10016,0