home *** CD-ROM | disk | FTP | other *** search
- dmacon= $96
- vposr= $4
- cop1lc= $80
- cop2lc= $84
- copjmp1= $88
- bplcon0= $100
- bplcon1= $102
- bplcon2= $104
- bpl1pth= $0e0
- bpl1ptl= $0e2
- bpl1mod= $108
- bpl2mod= $10a
- diwstrt= $08e
- diwstop= $090
- ddfstrt= $092
- ddfstop= $094
- openlibrary= -30-522
- forbid= -30-102
- permit= -30-108
- allocmem= -30-168
- freemem= -30-180
- startlist= 38
- execbase= 4
- numplanes= 3
- planewith= 40
- planehigh= 224
- planesize= planewith*planehigh
- allocsize= planesize*numplanes
- CLsize= 7000 ;(numpln*8)+4
- chip= 2
- clear= chip+$10000
-
- ccount: dc.w 0,1
- picplanes: dc.w 3
- picwith: dc.w 36
- pichigh: dc.w 132
- lineofset: dc.w 0
- picadr: dc.l 0 ;sourc. adress
- showadr: dc.l 0 ;dest. adress
- picsize: dc.l 0
- highofset: dc.l 0
- piccy: blk.b 14272 ;Størrelse på bildet.
-
- ;Bildet kan bli tegnet med hvilket som helst tegneprogram
- ;som lagrer bildene som IFF filer (DP II er fint).
- ;Bruk IFF CONVERTOR, og LOAD inn IFF filen,
- ;save den igjen som BITPLANES.
- ;PS...Paletten skal ligge til slutt i den nye fila.
- ;Legg størrelsen på BITPLANE fila inn under PICCY
- ;Assembler dette programmet, skriv så RI.
- ;FILENAME = navnet på tegningen.
- ;BEGIN = piccy
- ;END = [RETURN]
- ;Start programmet med J START
-
- piccyend:
- even
-
- start:
- jsr initialize
- move.l #piccy,picadr
- move.l planeadr,showadr
- add.l #402,showadr
- jsr showpic
- jsr setcolors
- s1: btst #6,$bfe001
- beq stop
- jsr waitvblank ;vent til vblank interupt
- jsr newcopper ;scroll fargene i copperlista
- jmp s1
- stop: jsr shut_down
- rts
-
- setcolors:
- move.l #piccyend,a0
- sub.l #16,a0 ;2^(ant.planes+1)
- move.l #$dff180,a1
- move.l #15,d0
- sc1: move (a0)+,(a1)+
- dbf d0,sc1
- rts
-
- newcopper:
- move.l cladr,a0
- add.l #30,a0
- move.l a0,a1
- add.l #8,a1
- move (a0),d0
- move.l #$cc,d1
- nc1: move (a1),(a0)
- add.l #8,a1
- add.l #8,a0
- dbf d1,nc1
- move d0,(a0)
- rts
-
- waitvblank: ;wait for vblank
- move.l $dff004,d0
- and.l #$0001ff00,d0
- cmp.l #$00001000,d0
- bne.s waitvblank
- rts
-
- showpic:
- clr.l d0
- move #planewith,d0
- muls pichigh,d0
- move.l d0,picsize
- move.l #planesize,highofset
- move.l picsize,d0
- sub.l d0,highofset
- sub #1,picplanes
- sub #1,picwith
- sub #1,pichigh
- move #planewith,lineofset
- move picwith,d0
- add #1,d0
- sub d0,lineofset
- move.l showadr,a0
- move.l picadr,a1
- move picwith,d0
- move pichigh,d1
- move picplanes,d2
- sp1: move.b (a1)+,(a0)+
- dbf d0,sp1
- move picwith,d0
- add lineofset,a0
- dbf d1,sp1
- move pichigh,d1
- add.l highofset,a0
- dbf d2,sp1
- rts
-
-
- initialize:
- move.l execbase,a6
- move.l #allocsize,d0
- move.l #clear,d1
- jsr allocmem(a6) ;alloc mem for bplane
- move.l d0,planeadr
- move.l #clsize,d0
- moveq #chip,d1
- jsr allocmem(a6) ;alloc mem for CL
- move.l d0,CLadr
- ;Make the CopperList
- move.l #numplanes,d4 ;no of bitplanes -1
- sub.l #1,d4
- move.l d0,a0
- move.l planeadr,d1
- move.w #bpl1pth,d3
- mCL: move.w d3,(a0)+
- addq.w #2,d3
- swap d1
- move.w d1,(a0)+
- move.w d3,(a0)+
- addq.w #2,d3
- swap d1
- move.w d1,(a0)+
- add.l #planesize,d1
- dbf d4,mCL
-
- lea ccount,a1
- move.l #$30,d0 ;start pos
- loop: move 2(a1),d1
- add d1,(a1)
- cmp #$000f,(a1)
- bne nomax
- move #-1,2(a1)
- nomax: cmp #$0000,(a1)
- bne nomin
- move #1,2(a1)
- nomin: move.b d0,(a0)+
- move.b #$0f,(a0)+
- move #$fffe,(a0)+
- move #$0180,(a0)+
- move (a1),(a0)+
- add.l #1,d0
- cmp.l #$ff,d0
- bne loop
-
- move.l #$fffffffe,(a0)
-
- jsr forbid(a6) ;DMA&tasksw off
- lea $dff000,a5
- move.w #$01e0,dmacon(a5)
- move.l CLadr,cop1lc(a5) ;init CL
- clr.w copjmp1(a5)
- move.w #$3081,diwstrt(a5) ;init PlayField
- move.w #$10c1,diwstop(a5)
- move.w #$0038,ddfstrt(a5)
- move.w #$00d0,ddfstop(a5)
- move.w #%0011000000000000,bplcon0(a5) ;12-14=bplanes
- clr.w bplcon1(a5)
- clr.w bplcon2(a5)
- move.w #0,bpl1mod(a5)
- move.w #0,bpl2mod(a5)
- move.w #$8180,dmacon(a5)
- rts
-
- shut_down:
- move.l #grname,a1
- clr.l d0
- jsr openlibrary(a6)
- move.l d0,a4
- move.l startlist(a4),cop1lc(a5)
- clr copjmp1(a5)
- move.w #$83e0,dmacon(a5)
- jsr permit(a6)
- move.l CLadr,a1
- move.l #CLsize,d0
- jsr freemem(a6)
- move.l planeadr,a1
- move.l #allocsize,d0
- jsr freemem(a6)
- rts
-
- CLadr: dc.l 0
- planeadr: dc.l 0
- test: dc.l 0
- GRname: dc.b 'graphics.library',0