
;	------------------------------------	 Org.: 09-11-89
;	--  DISKLOAD V2.1 [S] by NEKRON!  --	 UpD.: 15-12-90
;	------------------------------------


************************* Definitionen ***************************

MEMADR=		$0400		DLoadadresse
STACK=		$7ffe0		Stackpointer
PRGADR=		$30000		Programmadresse		  (a0)				 
PRGSTART=	$30000		Programmstart
BLOCK=		$02		Programmbeginn auf Disk!  (d0)
LENTH=		3*512		Länge * 512		  (d7)

DATA=		$70000		BlockPuffer
SYNC=		$4489		Sync

STACKON=	0		Schalte Stack aus/an

************************* Hauptprogramm **************************

	OPT	p+

Start
	lea	$dff000,a6
	move.w	#$7fff,d0
	move.w	d0,$9a(a6)
	move.w	d0,$96(a6)
	lea	Trapy(PC),a0
	move.l	a0,$0080.w
	trap	#0
Trapy
	lea	Main(PC),a0
	lea	MEMADR,a1
	move.l	a1,a3
	move.w	#End-Main,d0
copy	
	move.b	(a0)+,(a1)+
	dbf	d0,copy
	jmp	(a3)

Main
	IFEQ	STACKON
	lea	STACK,a7
	ENDC

	lea	PRGADR,a0
	move.w	#BLOCK,d0
	move.l	#LENTH,d7

	bsr	Load

	jmp	PRGSTART

************************* Diskladeroutine ************************

Load
	IFNE	STACKON
	move.l	a7,a2
	lea	STACK,a7
	ENDC

	movem.l	a0-a6/d0-d7,-(a7)
	bset	#2,$bfd100
	bsr	diska
	bsr	diskb
	divu	#$0b,d0
	move.l	d0,d3
	cmpi.w	#$00,d0
	beq.s	disk1
	cmpi.w	#$01,d0
	beq.s	disk1
	asr.w	#1,d0
	subq.w	#1,d0
disk2
	bsr	diskc
	dbf	d0,disk2
disk1
	btst	#0,d3
	beq.s	disk3
	bclr	#2,$bfd100
	bra.s	disk4
disk3
	bset	#2,$bfd100
disk4
	swap	d3
disk7
	bsr.s	diskd
disk6
	bsr	diske
	subi.l	#$200,d7
	beq.s	disk5
	bmi.s	disk5
	addq.w	#1,d3
	cmpi.w	#$0b,d3
	beq.s	disk14
	bra.s	disk6
disk14
	clr.l	d3
	eori.b	#$04,$bfd100
	btst	#2,$bfd100
	beq.s	disk7
	bsr	diskc
	bra.s	disk7
disk5
	movem.l	(a7)+,a0-a6/d0-d7
loadend
	IFNE	STACKON
	move.l	a2,a7
	ENDC

	rts
diskd
	move.w	#$8500,$dff09e
	move.w	#SYNC,$dff07e
	bsr	diskg
	move.w	#$4000,$dff024
	move.l	#DATA,$dff020
	move.w	#$8210,$dff096
	move.w	#$9f40,$dff024
	move.w	#$9f40,$dff024
disk8
	andi.w	#2,$dff01e
	beq.s	disk8
	move.w	#2,$dff09c
	move.w	#$4000,$dff024
	rts
diska
	move.b	#$7d,$bfd100
	nop
	nop
	move.b	#$75,$bfd100
	move.w	#$b000,d6
disk9
	dbf	d6,disk9
	rts
diskc
	bclr	#1,$bfd100
diskf
	bclr	#0,$bfd100
	bset	#0,$bfd100
	move.w	#$1bb8,d6
disk10
	dbf	d6,disk10
	bsr.s	diskg
	rts
diskg
	btst	#5,$bfe001
	bne.s	diskg
	rts
diskb
	btst	#4,$bfe001
	beq.s	disk11
	bset	#1,$bfd100
	bsr.s	diskf
	bra.s	diskb
disk11
	rts
diske
	movem.l	a1-a2/d0-d7,-(a7)
	clr.l	d2
	lea	DATA,a1
	move.l	a1,a2
disk12
	cmpi.w	#SYNC,(a2)+
	bne.s	disk12
	cmpi.w	#SYNC,(a2)
	beq.s	disk12
	move.b	2(a2),d0
	move.b	6(a2),d1
	andi.b	#$55,d0
	asl.b	#1,d0
	andi.b	#$55,d1
	or.b	d1,d0
	cmp.b	d3,d0
	bne.s	disk12
	lea	56(a2),a2
	move.w	#$0200,d6
	subi.w	#$01,d6
	cmpi.l	#$0200,d7
	bcc.s	disk13
	move.l	d7,d6
	subq.w	#1,d6
disk13
	move.b	512(a2),d1
	move.b	(a2)+,d0
	andi.b	#$55,d0
	asl.b	#1,d0
	andi.b	#$55,d1
	or.b	d1,d0
	move.b	d0,(a0)+
	dbf	d6,disk13
	movem.l	(a7)+,a1-a2/d0-d7
	rts
End

************************* Texte,´Notes´ **************************

	dcb.b	100,0
	dc.b	"POWERMONGER.  ORIGINAL SUPPLIED BY TRICICUM, CRACKED BY"
	dc.b	" NEKRON ON 11/12/90.              "
	dc.b	"        - COMMANDO EAST -  THE NEW GENERATION OF QUALITY! -"
	dcb.b	500,0

