 	
 	   section ax,code_c
	   opt c-,d+,w-,o+	
	
	   include 'df1:insert/custom registers'
	
badd=(320*256)/8
	
	   lea $dff000,a6
	   move.w #$87e0,dmacon(a6)
	   jsr cop_init
 	   move.l $6c,oldirq
 	   move.l #newirq,$6c
mse:
 	   cmp.b #$f0,$dff006
 	   bne mse
 	   move.w #$0fff,$dff180
 	   move #1,d1
lopp:
	   jsr plotter
	   dbra d1,lopp
	   move.w #$0000,$dff180
	   
zog:
 	   btst #6,$bfe001
	   bne mse
 	   move.l oldirq,$6c
 	   move.l copaddr,a0
 	   move.l oldcop,(a0)
 	   clr.l d0
nolib:	
	   rts	
	
newirq:  
	   movem.l d0-d7/a0-a6,$75000
	
	   movem.l $75000,d0-d7/a0-a6
	   dc.w $4ef9
	
oldirq: 
	   dc.l 0

	   even

cop_init:
 	
 	   lea screen,a0
 	   move.l a0,d0
 	   move.w d0,lo1
 	   swap d0
 	   move.w d0,hi1
 	   lea screen+badd,a0
 	   move.l a0,d0
 	   move.w d0,lo2
 	   swap d0
 	   move.w d0,hi2
 	   lea screen+badd*2,a0
 	   move.l a0,d0
 	   move.w d0,lo3
 	   swap d0
 	   move.w d0,hi3
 	   lea screen+badd*3,a0
 	   move.l a0,d0
 	   move.w d0,lo4
 	   swap d0
 	   move.w d0,hi4
 	   lea screen+badd*4,a0
 	   move.l a0,d0
 	   move.w d0,lo5
 	   swap d0
 	   move.w d0,hi5
 	   moveq #$00,d0
 	   lea grafname,a1
 	   move.l $4,a6
 	   jsr -132(A6)
 	   move.l $4,A6
 	   jsr -408(a6)
 	   tst d0
 	   beq nolib
 	   move.l d0,grafbase
 	   move.l d0,a6
 	   add.l #$32,d0
 	   move.l d0,a0
 	   move.l a0,copaddr
 	   move.l (a0),oldcop
 	   move.l #newcop,(a0)
 	   rts
 
	   even
	  
grafname:  dc.b "graphics.library",0
grafbase:  dc.l 0
oldcop:    dc.l 0
copaddr:   dc.l 0
bast:	   dc.w 0
cast:	   dc.w 0

	   even
 
newcop:	   dc.w $0100,$1200
 	   dc.w $0102
boh: 	   dc.w $0000
	   dc.w $0120
sp1l:	   dc.w $0000,$0122
sp1h: 	   dc.w $0000 
	   dc.w $0124
sp2l:	   dc.w $0000,$0126
sp2h: 	   dc.w $0000 
	   dc.w $0128
sp3l:	   dc.w $0000,$012a
sp3h: 	   dc.w $0000 
	   dc.w $012c
sp4l:	   dc.w $0000,$012e
sp4h: 	   dc.w $0000
	   dc.w $0130
sp5l:	   dc.w $0000,$132
sp5h: 	   dc.w $0000
 scr:  	   dc.w $2001,$fffe
 	   dc.w $00e0
 hi1:	   dc.w $0000
	   dc.w $00e2
 lo1:	   dc.w $0000 	
	   dc.w $00e4
 hi2:	   dc.w $0000
	   dc.w $00e6
 lo2:	   dc.w $0000 
	   dc.w $00e8
 hi3:	   dc.w $0000
	   dc.w $00ea
 lo3:	   dc.w $0000 
	   dc.w $00ec
 hi4:	   dc.w $0000
	   dc.w $00ee
 lo4:	   dc.w $0000 
	   dc.w $00f0
 hi5:	   dc.w $0000
	   dc.w $00f2
 lo5:	   dc.w $0000
	   dc.w $008e,$3021 
	   dc.w $0090,$30f1
cols:      dc.w $180,$000,$182,$fff,$184,$fdb,$186,$db9
	   dc.w $188,$c97,$18a,$a75,$18c,$853,$18e,$033
	   dc.w $190,$c60,$192,$ba5,$194,$962,$196,$530
	   dc.w $198,$db4,$19a,$558,$19c,$447,$19e,$336
	   dc.w $1a0,$a40,$1a2,$f44,$1a4,$b00,$1a6,$222
	   dc.w $1a8,$333,$1aa,$444,$1ac,$555,$1ae,$666		
	   dc.w $1b0,$777,$1b2,$888,$1b4,$999,$1b6,$aaa
	   dc.w $1b8,$ccc,$1ba,$ddd,$1bc,$eee,$1be,$fff
	   dc.w $ffff,$fffe
	 
	   even

screen:
	   ds.l 10*256
	 
plotter:
	   move.w bast,d2
	   move.w cast,d3
	   addi.w #1,bast
	   cmpi.w #319,bast
	   bne gloop
	   move.w #0,bast
	   addi.w #4,cast   
gloop:
	   divu #8,d2
	   move.w d2,d4
	   add.l d4,plot+4
	   swap d2
	   sub.w d2,plot+2
	   mulu #40,d3
	   add.l d3,plot+4

plot:

	   bset #31,screen
	   move.w #31,plot+2
	   move.l #screen,plot+4
	   clr.l d2
	   clr.l d3
	   clr.l d4
	   rts
	   
	   
