His Master's Noise

From Misc Data Digs

Hidden Message[edit | edit source]

At the beginning of the disks, there is this string on Disk A:

This is `His Master's Noise' - a musicdisk by Mahoney & Kaktus finished Oct. 1991!

And this on Disk B:

This is `His Masters Noise' - a musicdisk by Mahoney & Kaktus made in August 1990!

Source Code[edit | edit source]

At the end of Disk B, some source code fragments can be uncovered. Note that some recovery work had to be done to make this readable.

        bpl.s	pe_d
	moveq	#0,d0
pe_d:	move.l	d0,pe_yspd

	tst.w	AltMode		;move cursor with alt+cursor
	beq.s	pe_Mu
	move.w	CursorKeyX(pc),d0
	move.w	CursorKeyY(pc),d1
	move.l	pe_curssence(pc),d2
	muls	d2,d0
	muls	d2,d1
	asl.l	#5,d0
	asl.l	#5,d1
	add.l	d0,pe_xspd
	add.l	d1,pe_yspd

pe_Mu:
	moveq	#0,d1		;add musmoves to spds
	move.b	pe_old(pc),d0
	move.b	pe_nu(pc),d1
	ext.w	d0
	ext.w	d1
	sub.w	d0,d1
	ext.w	d1
	add.w	d1,d1
	muls	pe_ysence+2(pc),d1
	add.l	d1,pe_yspd
	moveq	#0,d1
	move.b	pe_old+1(pc),d0
	move.b	pe_nu+1(pc),d1
	ext.w	d0
	ext.w	d1
	sub.w	d0,d1
	ext.w	d1
	add.w	d1,d1
	muls	pe_xsence+2(pc),d1
	add.l	d1,pe_xspd

	move.l	pe_xpos(pc),d0
	add.l	pe_xspd(pc),d0
	move.l	d0,d1
	swap	d1
	cmp.w	#$70,d1
	bgt.s	pe_2
	bsr	pe_studs
	tst.l	pe_xspd
	bpl.s	pe_22
	neg.l	pe_xspd
pe_22:	sub.l	#$70ffff,d0
	neg.l	d0
	add.l	#$710000,d0
	bra.s	pe_3
pe_2:	cmp.w	#$1c4,d1
	blt.s	pe_3
	bsr	pe_studs
	tst.l	pe_xspd
	bmi.s	pe_23
	neg.l	pe_xspd
pe_23:	sub.l	#$1c40000,d0
	neg.l	d0
	add.l	#$1c3ffff,d0
pe_3:	move.l	d0,pe_xpos


	move.l	pe_ypos(pc),d0
	add.l	pe_yspd(pc),d0
	move.l	d0,d1
	swap	d1
	cmp.w	#$25,d1
	bgt.s	pe_4
	bsr	pe_studs
	tst.l	pe_yspd
	bpl.s	pe_44
	neg.l	pe_yspd
pe_44:	sub.l	#$25ffff,d0
	neg.l	d0
	add.l	#$260000,d0
	bra.s	pe_5
pe_4:	cmp.w	#$12d,d1
	blt.s	pe_5
	bsr.s	pe_studs
	tst.l	pe_yspd
	bmi.s	pe_55
	neg.l	pe_yspd
pe_55:	sub.l	#$12d0000,d0
	neg.l	d0
	add.l	#$12cffff,d0
pe_5:	move.l	d0,pe_ypos


	lea	pek(pc),a0	;set spr-pos i spr-data
	move.w	pe_xpos(pc),d0
	moveq	#0,d1
	lsr.w	#1,d0
	bcc.s	pe_1
	moveq	#1,d1
pe_1:	move.b	d0,1(a0)
	move.b	d1,3(a0)
	move.b	pe_ypos+1(pc),(a0)
	move.b	pe_ypos(pc),d0
	asl.b	#2,d0
	or.b	d0,3(a0)
	move.w	pe_ypos(pc),d0
	add.w	#$e,d0
	move.b	d0,2(a0)
	lsr.w	#$8,d0
	asl.b	#1,d0
	or.b	d0,3(a0)

	move.w	pe_nu(pc),pe_old
	rts

pe_studs:
	move.l	pe_studsfric(pc),d1
	lsr.l	#$4,d1
	move.w	pe_xspd(pc),d4
	bpl.s	pe_1e
	neg.w	d4
pe_1e:	move.w	pe_yspd(pc),d5
	bpl.s	pe_1f
	neg.w	d5
pe_1f:	tst.w	pe_xspd+2
	beq.s	pe_1p
	addq.w	#1,d4
pe_1p:	tst.w	pe_yspd+2
	beq.s	pe_1o
	addq.w	#1,d5
pe_1o:	move.w	d4,d3
	add.w	d5,d3
	bne.s	pe_1i
	addq.w	#1,d3
pe_1i:	divu	d3,d1
	mulu	d1,d4
	mulu	d1,d5
	asl.l	#$4,d4
	asl.l	#$4,d5

	move.l	pe_xspd(pc),d1
	bpl.s	pe_aa
	add.l	d4,d1
	bmi.s	pe_ab
	moveq	#0,d1
	bra.s	pe_ab
pe_aa:	sub.l	d4,d1
	bpl.s	pe_ab
	moveq	#0,d1
pe_ab:	move.l	d1,pe_xspd

	move.l	pe_yspd(pc),d1
	bpl.s	pe_ac
	add.l	d5,d1
	bmi.s	pe_ad
	moveq	#0,d1
	bra.s	pe_ad
pe_ac:	sub.l	d5,d1
	bpl.s	pe_ad
	moveq	#0,d1
pe_ad:	moveq.w	#1,tim1
	cmp.w	#50,tim1
	blt.s	tim_ChSek1
	sub.w	#50,tim1
	lea	sekund2(pc),a0
	addq.b	#1,(a0)
	cmp.b	#$3a,(a0)
	bne.s	tim_1
	move.b	#$30,(a0)
	move.b	#1,Sek1GO
tim_1:	move.w	#$5d,pr_xpos
	bra	printTimer
tim_ChSek1:
	tst.b	Sek1GO
	beq.s	tim_ChMin2
	clr.b	Sek1GO
	lea	sekund1(pc),a0
	addq.b	#1,(a0)
	cmp.b	#$36,(a0)
	bne.s	tim_2
	move.b	#$30,(a0)
	move.b	#1,Min2GO
tim_2:	move.w	#$57,pr_xpos
	bra	printTimer
tim_ChMin2:
	tst.b	Min2GO
	beq.s	tim_ChMin1
	clr.b	Min2GO
	lea	Minut2(pc),a0
	addq.b	#1,(a0)
	cmp.b	#$3a,(a0)
	bne.s	tim_3
	move.b	#$30,(a0)
	move.b	#1,Min1GO
tim_3:	move.w	#$4e,pr_xpos
	bra	printTimer
tim_ChMin1:
	tst.b	Min1GO
	beq.s	tim_ChTim2
	clr.b	Min1GO
	lea	Minut1(pc),a0
	addq.b	#1,(a0)
	cmp.b	#$36,(a0)
	bne.s	tim_4
	move.b	#$30,(a0)
	move.b	#1,Tim2GO
tim_4:	move.w	#$48,pr_xpos
	bra	printTimer
tim_ChTim2:
	tst.b	Tim2GO
	beq.s	tim_ChTim1
	clr.b	Tim2GO
	lea	Timme2(pc),a0
	addq.b	#1,(a0)
	cmp.b	#$34,(a0)
	bne.s	tim_6
	cmp.b	#$32,Timme1
	bne.s	tim_6
	move.b  #$30,(a0)
	move.b	#$2f,Timme1
	move.b	#1,Tim1GO
	move.w	#1,NewDayCou
tim_6:	cmp.b	#$3a,(a0)
	bne.s	tim_5
	move.b	#$30,(a0)
	move.b	#1,Tim1GO
tim_5:	move.w	#$3f,pr_xpos
	bra	printTimer
tim_ChTim1:
	tst.b	Tim1GO
	beq.s	tim_Shit
	clr.b	Tim1GO
	lea	Timme1(pc),a0
	addq.b	#1,(a0)
	move.w	#$39,pr_xpos
	bra	printTimer
tim_Shit:
	move.w	NewDayCou(pc),d0
	beq	rts
	addq.w	#1,NewDayCou
	cmp.w	#1,d0
	beq	rts

	cmp.w	#$8,d0
	bge.s	ClrCont
	lea	Menu1+2+[$a6*44],a0
	mulu	#44,d0
	lea	(a0,d0.w),a0
	lea	Menu2-Menu1(a0),a1
	move.l	#$c0000000,(a0)+
	move.l	#$3fffffff,(a1)+
	move.l	#$00000000,(a0)+
 	move.l	#$ffffffff,(a1)+
	move.w	#$0000,(a0)+
 	move.w	#$ffff,(a1)+
	move.b	#$03,(a0)
	move.b	#$ff,(a1)
	rts
Clrcont:
	cmp.w	#$f,d0
	bge	NewDate
	lea	Menu1+2+[$a6*44],a0
	mulu	#44,d0
	lea	(a0,d0.w),a0
	lea	Menu2-Menu1(a0),a1
	move.l	#$c0000000,(a0)+
	move.l	#$3fffffff,(a1)+
	move.b	#$00,(a0)+
	move.b	#$ff,(a1)+
	rts
NewDate:cmp.w	#$f,d0
	bne.L	PrintAll

	addq.w	#1,veckodag
	cmp.w	#7,veckodag
	bne.s	okthisvecko
	clr.w	veckodag
okthisvecko:
	lea	VeckoPois(pc),a0
	move.w	veckodag(pc),d0
	asl.w	#2,d0
	move.l	(a0,d0.w),a0
	move.b	1(a0),PrintVex
	move.b	2(a0),PrintVex+1
	lea	4(a0),a0
	move.l	a0,PrintVePoi
	move.b	#1,PrintVeckodag

	addq.w	#1,dayno
	addq.w	#1,datnr
	lea	Skottarstabell-2(pc),a0
	moveq	#0,d0
	move.w	year(pc),d0
	and.w	#$3,d0
	beq.s	Skottar
	lea	NormalarsTabell-2(pc),a0
Skottar:move.w	Monnr(pc),d1
	add.w	d1,d1
	move.w	datnr(pc),d0
	cmp.w	(a0,d1.w),d0
	ble.s	DatisOk
	move.w	#1,datnr
	addq.w	#1,Monnr
	cmp.w	#13,Monnr
	bne.s	DatisOK
	addq.w	#1,Year
	move.w	#1,Monnr
DatisOK:
	lea	dagge(pc),a1
	lea	DatumPrint(pc),a0
	move.w	datnr(pc),d0
	add.w	d0,d0
	move.w	(a1,d0.w),(a0)+
	move.w	#$13,daxpos
	tst.b	(a0)+
	lea	months-4(pc),a1
	move.w	monnr(pc),d0
	asl.w	#2,d0
	lea	(a1,d0.w),a1
	move.b	(a1)+,(a0)+
	move.b	(a1)+,(a0)+
	move.b	(a1)+,(a0)+
	move.l	#DatumPrint,DaxPoi
	move.b	#1,DaxOn
	rts

DatumPrint:	dc.b	"00",$1f,"jan",0,0
DaxPoi:	dc.l	DatumPrint
Daxpos:	dc.w	0
DaxOn:	dc.b	0
	dc.b	0

NormalarsTabell:dc.w 31,28,31,30,31,30,31,31,30,31,30,31
SkottarsTabell:	dc.w 31,29,31,30,31,30,31,31,30,31,30,31

PrintAll:
	cmp.w	#$1f,d0
	bge.s	PrintDax
	tst.b	PrintVeckodag
	beq	rts
	lea	PriVe(pc),a0
	move.l	PrintVePoi(pc),a1
	move.b	(a1)+,(a0)
	beq.s	EndPrintVe
	move.l	a1,PrintVePoi
	move.w	PrintVex,pr_xpos
	move.w	#$a6,pr_ypos
	bsr	Print1
	move.w	pr_xpos,PrintVex
	rts
EndPrintVe:
	clr.b	PrintVeckodag
	rts


	move.w	#$13,daxpos
	tst.b	(a0)+
	lea	months-4(pc),a1
	move.w	monnr(pc),d0
	asl.w	#2,d0
	lea	(a1,d0.w),a1
	move.b	(a1)+,(a0)+
	move.b	(a1)+,(a0)+
	move.b	(a1)+,(a0)+
	move.l	#DatumPrint,DaxPoi
	move.b	#1,DaxOn

PrintDax:
	cmp.w	#$2f,d0
	bge.s	EndNewDate
	tst.b	DaxOn
	beq.s	EndNewDate
	lea	PriVe(pc),a0
	move.l	DaxPoi(pc),a1
	move.b	(a1)+,(a0)
	beq.s	EndPrintDax
	move.l	a1,DaxPoi
	move.w	Daxpos,pr_xpos
	move.w	#$ad,pr_ypos
	bsr	Print1
	move.w	pr_xpos,DaxPos
	rts
EndPrintDax:
	clr.b	DaxOn
	rts
EndNewDate:
	clr.w	NewDayCou
	rts

Sek1GO:	dc.b	0
Min2GO:	dc.b	0
Min1GO:	dc.b	0
Tim2GO:	dc.b	0
Tim1GO:	dc.b	0
PrintVeckodag:	dc.b	0
NewDayCou:	dc.w	0
PrintVex:	dc.w	0
PrintVePoi:	dc.l	Mandag
PriVe:	dc.b	0,0

;----------------------------------------------------------------

OldKeyIrq:	dc.l	0
SetKeyIrq:	move.l	$68.w,OldKeyIrq
		move.l	#NewIOInt,$68.w
		move.w	#$8008,$dff09a
		rts
ClrKeyIrq:	move.w	#$0008,$dff09a
		move.l	OldKeyIrq(pc),$68.w
		rts

NewIOInt:	movem.l	d0-d2,-(a7)
		move.b	$bfed01,d0
		bclr	#7,d0
		bclr	#3,d0
		beq	NII_Ex
		moveq	#0,d2
		move.b	$bfec01,d2
		bset	#6,$bfee01
		not.b	d2
		ror.b	#1,d2
		moveq	#60,d1
NII_Wait:	dbf	d1,NII_Wait
		bclr	#6,$bfee01

		cmp.b	#$65,d2
		bne.s	NII_AltOn1
		bset	#0,AltMode
		bra	NII_Ex
NII_AltOn1:	cmp.b	#$e5,d2
		bne.s	NII_AltOff1
		bclr	#0,AltMode
		bra	NII_Ex
NII_AltOff1:	cmp.b	#$64,d2
		bne.s	NII_AltOn2
		bset	#1,AltMode
		bra	NII_Ex
NII_AltOn2:	cmp.b	#$e4,d2
		bne.s	NII_AltOff2
		bclr	#1,AltMode
		bra	NII_Ex
NII_AltOff2:	cmp.b	#$61,d2
		bne.s	NII_ShiftOn1
		bset	#0,ShiftMode
		bra	NII_Ex
NII_ShiftOn1:	cmp.b	#$e1,d2
		bne.s	NII_ShiftOff1
		bclr	#0,ShiftMode
		bra	NII_Ex
NII_ShiftOff1:	cmp.b	#$60,d2
		bne.s	NII_ShiftOn2
		bset	#1,ShiftMode
		bra	NII_Ex
NII_ShiftOn2:	cmp.b	#$e0,d2
		bne.s	NII_ShiftOff2
		bclr	#1,ShiftMode
		bra	NII_Ex
NII_ShiftOff2:	cmp.b	#$4f,d2
		bne.s	NII_LeftOn
		move.w	#-1,CursorKeyX
		bra	NII_Ex
NII_LeftOn:	cmp.b	#$cf,d2
		bne.s	NII_LeftOff
		tst.w	CursorKeyX
		bpl	NII_Ex
		clr.w	CursorKeyX
		bne.s   pr_nopos3
	move.b	(a0)+,pr_xpos
	move.b	(a0)+,pr_xpos+1
	move.b	(a0)+,pr_ypos+1
	bra.s	print3
pr_nopos3:
	lea	menu1,a1
	move.w	pr_xpos(pc),d1
	move.w	d1,d7
	and.w	#$7,d7
	eor.w	#$7,d7
	lsr.w	#3,d1
	move.w	pr_ypos(pc),d2
	mulu	#44,d2
	add.w	d2,d1
	lea	(a1,d1.w),a1
	lea	menu2-menu1(a1),a3
	lea	sfontbredds(pc),a2
	moveq	#0,d2
	move.b	(a2,d0.w),d2
	add.w	d2,pr_xpos
	move.w	d0,d1
	and.w	#$1f,d0
	and.w	#$e0,d1
	asl.w	#$3,d1
	add.w	d0,d1
	lea	sfontr,a2
	lea	(a2,d1.w),a2
	moveq	#0,d0
	moveq	#0,d1
	moveq	#0,d2
	moveq	#0,d3
	moveq	#0,d4
	moveq	#0,d5
	moveq	#0,d6
	move.b	$20*0(a2),d0
	move.b	$20*1(a2),d1
	move.b	$20*2(a2),d2
	move.b	$20*3(a2),d3
	move.b	$20*4(a2),d4
	move.b	$20*5(a2),d5
	move.b	$20*6(a2),d6
	asl.w	d7,d0
	asl.w	d7,d1
	asl.w	d7,d2
	asl.w	d7,d3
	asl.w	d7,d4
	asl.w	d7,d5
	asl.w	d7,d6
	or.b	d0,44*0+1(a1)
	or.b	d1,44*1+1(a1)
	or.b	d2,44*2+1(a1)
	or.b	d3,44*3+1(a1)
	or.b	d4,44*4+1(a1)
	or.b	d5,44*5+1(a1)
	or.b	d6,44*6+1(a1)
	or.b	d0,44*0+1(a3)
	or.b	d1,44*1+1(a3)
	or.b	d2,44*2+1(a3)
	or.b	d3,44*3+1(a3)
	or.b	d4,44*4+1(a3)
	or.b	d5,44*5+1(a3)
	or.b	d6,44*6+1(a3)
	lsr.w	#$8,d0
	lsr.w	#$8,d1
	lsr.w	#$8,d2
	lsr.w	#$8,d3
	lsr.w	#$8,d4
	lsr.w	#$8,d5
	lsr.w	#$8,d6
	or.b	d0,44*0(a1)
	or.b	d1,44*1(a1)
	or.b	d2,44*2(a1)
	or.b	d3,44*3(a1)
	or.b	d4,44*4(a1)
	or.b	d5,44*5(a1)
	or.b	d6,44*6(a1)
	or.b	d0,44*0(a3)
	or.b	d1,44*1(a3)
	or.b	d2,44*2(a3)
	or.b	d3,44*3(a3)
	or.b	d4,44*4(a3)
	or.b	d5,44*5(a3)
	or.b	d6,44*6(a3)
	moveq	#0,d0
	move.b	$20*7(a2),d0
	asl.w	d7,d0
	or.b	d0,44*7+1(a1)
	or.b	d0,44*7+1(a3)
	lsr.w	#$8,d0
	or.b	d0,44*7(a1)
	or.b	d0,44*7(a3)
	bra	print3
pr_end3:rts

print1:	moveq	#0,d0
	move.b	(a0)+,d0
	beq.s	pr_end3
	cmp.b	#$ff,d0
	bne.s	pr_nopos1
	move.b	(a0)+,pr_xpos
	move.b	(a0)+,pr_xpos+1
	move.b	(a0)+,pr_ypos+1
	bra.s	print1
pr_nopos1:
	lea	menu1,a1
	move.w	pr_xpos(pc),d1
	move.w	d1,d7
	and.w	#$7,d7
	eor.w	#$7,d7
	lsr.w	#3,d1
	move.w	pr_ypos(pc),d2
	mulu	#44,d2
	add.w	d2,d1
	lea	(a1,d1.w),a1
	lea	menu2-menu1(a1),a3
	lea	sfontbredds(pc),a2
	moveq	#0,d2
	move.b	(a2,d0.w),d2
	add.w	d2,pr_xpos
	move.w	d0,d1
	and.w	#$1f,d0
	and.w	#$e0,d1
	asl.w	#$3,d1
	add.w	d0,d1
	lea	sfontr,a2
	lea	(a2,d1.w),a2
	moveq	#0,d0
	moveq	#0,d1
	moveq	#0,d2
	moveq	#0,d3
	moveq	#0,d4
	moveq	#0,d5
	moveq	#0,d6
	move.b	$20*0(a2),d0
	move.b	$20*1(a2),d1
	move.b	$20*2(a2),d2
	move.b	$20*3(a2),d3
	move.b	$20*4(a2),d4
	move.b	$20*5(a2),d5
	move.b	$20*6(a2),d6
	asl.w	d7,d0
	asl.w	d7,d1
	asl.w	d7,d2
	asl.w	d7,d3
	asl.w	d7,d4
	asl.w	d7,d5
	asl.w	d7,d6
	or.b	d0,44*0+1(a1)
	or.b	d1,44*1+1(a1)
	or.b	d2,44*2+1(a1)
	or.b	d3,44*3+1(a1)
	or.b	d4,44*4+1(a1)
	or.b	d5,44*5+1(a1)
	or.b	d6,44*6+1(a1)
	not.b	d0
	not.b	d1
	not.b	d2
	not.b	d3
	not.b	d4
	not.b	d5
	not.b	d6
	and.b	d0,44*0+1(a3)
	and.b	d1,44*1+1(a3)
	and.b	d2,44*2+1(a3)
	and.b	d3,44*3+1(a3)
	and.b	d4,44*4+1(a3)
	and.b	d5,44*5+1(a3)
	and.b	d6,44*6+1(a3)
	lsr.w	#$8,d0
	lsr.w	#$8,d1
	lsr.w	#$8,d2
	lsr.w	#$8,d3
	lsr.w	#$8,d4
	lsr.w	#$8,d5
	lsr.w	#$8,d6
	or.b	d0,44*0(a1)
	or.b	d1,44*1(a1)
	or.b	d2,44*2(a1)
	or.b	d3,44*3(a1)
	or.b	d4,44*4(a1)
	or.b	d5,44*5(a1)
	or.b	d6,44*6(a1)
	not.b	d0
	not.b	d1
	not.b	d2
	not.b	d3
	not.b	d4
	not.b	d5
	not.b	d6
	and.b	d0,44*0(a3)
	and.b	d1,44*1(a3)
	and.b	d2,44*2(a3)
	and.b	d3,44*3(a3)
	and.b	d4,44*4(a3)
	and.b	d5,44*5(a3)
	and.b	d6,44*6(a3)
	moveq	#0,d0
	move.b	$20*7(a2),d0
	asl.w	d7,d0
	or.b	d0,44*7+1(a1)
	not.b	d0
	and.b	d0,44*7+1(a3)
	lsr.w	#$8,d0
	or.b	d0,44*7(a1)
	not.b	d0
	and.b	d0,44*7(a3)
	bra	print1

PrintTimer:
	moveq	#0,d0
	move.b	(a0)+,d0
	lea	menu1+[[$9f+2]*44],a1
	move.w	pr_xpos(pc),d1
	move.w	d1,d7
	and.w	#$7,d7
	eor.w	#$7,d7
	lsr.w	#3,d1
	lea	(a1,d1.w),a1
	lea	menu2-menu1(a1),a3
	lea	sfontr+$110+$40,a2
	and.w	#$f,d0
	lea	(a2,d0.w),a2
	moveq	#0,d0
	moveq	#0,d1
	moveq	#0,d2
	moveq	#0,d3
	moveq	#0,d4
	moveq	#0,d5
	move.b	$20*0(a2),d0
	move.b	$20*1(a2),d1
	move.b	$20*2(a2),d2
	move.b	$20*3(a2),d3
	move.b	$20*4(a2),d4
	move.b	$20*5(a2),d5
	move.w	#%11111000,d6
	asl.w	d7,d0
	asl.w	d7,d1
	asl.w	d7,d2
	asl.w	d7,d3
	asl.w	d7,d4
	asl.w	d7,d5
	asl.w	d7,d6
	not.w	d6
	and.b	d6,44*0+1(a1)
	and.b	d6,44*1+1(a1)
	and.b	d6,44*2+1(a1)
	and.b	d6,44*3+1(a1)
	and.b	d6,44*4+1(a1)
	and.b	d6,44*5+1(a1)
	or.b	d0,44*0+1(a1)
	or.b	d1,44*1+1(a1)
	or.b	d2,44*2+1(a1)
	or.b	d3,44*3+1(a1)
	or.b	d4,44*4+1(a1)
	or.b	d5,44*5+1(a1)
	not.b	d6
	or.b	d6,44*0+1(a3)
	or.b	d6,44*1+1(a3)
	or.b	d6,44*2+1(a3)
	or.b	d6,44*3+1(a3)
	or.b	d6,44*4+1(a3)
	or.b	d6,44*5+1(a3)
	not.b	d0
	not.b	d1
	not.b	d2
	not.b	d3
	not.b	d4
	not.b	d5
	and.b	d0,44*0+1(a3)
	and.b	d1,44*1+1(a3)
	and.b	d2,44*2+1(a3)
	and.b	d3,44*3+1(a3)
	and.b	d4,44*4+1(a3)
	and.b	d5,44*5+1(a3)
	lsr.w	#$8,d0
	lsr.w	#$8,d1
	lsr.w	#$8,d2
	lsr.w	#$8,d3
	lsr.w	#$8,d4
	lsr.w	#$8,d5
	lsr.w	#$8,d6
	and.b	d6,44*0(a1)
	and.b	d6,44*1(a1)
	and.b	d6,44*2(a1)
	and.b	d6,44*3(a1)
	and.b	d6,44*4(a1)
	and.b	d6,44*5(a1)
	or.b	d0,44*0(a1)
	or.b	d1,44*1(a1)
	or.b	d2,44*2(a1)
	or.b	d3,44*3(a1)
	or.b	d4,44*4(a1)
	or.b	d5,44*5(a1)
	not.b	d0
	not.b	d1
	not.b	d2
	not.b	d3
	not.b	d4
	not.b	d5
	not.b	d6
	or.b	d6,44*0(a3)
	or.b	d6,44*1(a3)
	or.b	d6,44*2(a3)
	or.b	d6,44*3(a3)
	or.b	d6,44*4(a3)
	or.b	d6,44*5(a3)
	and.b	d0,44*0(a3)
	and.b	d1,44*1(a3)
	and.b	d2,44*2(a3)
	and.b	d3,44*3(a3)
	and.b	d4,44*4(a3)
	and.b	d5,44*5(a3)
	rts

;----------------------------------------------------------------

tim1:	dc.w	$0	;frames
timdc:	dc.w	$0

EverTimer:
	addq.w	#1,timdc
	cmp.w	#596,timdc
	bne.s	time6
	addq.w	#1,tim1
	clr.w	timdc

time6:	addq.w	#4,Dot_draw
	and.w	#$7e,Dot_draw
	addq.w	#4,Dot_erase
	and.w	#$7e,Dot_erase
	rts

;----------------------------------------------------------------

Window_maker:
	;d0=xpos i bytes
	;d1=ypos i pix
	;d2=xbredd i bytes
	;d3=yhojd i pix
	lea	menu1,a0
	lea	menu2,a1
	mulu	#44,d1
	add.w	d1,d0
	lea	(a0,d0.w),a0
	lea	(a1,d0.w),a1

	moveq	#1,d4		;oversta 2 raderna
	move.w	d2,d5
	move.b	#%11111111,(a0)
	move.b	#%00000000,(a1)
	move.b	#%11111111,44(a0)
	move.b	#%00000000,44(a1)
	bra.s	wi_loi
wi_lop:	move.b	#%11111111,(a0,d4.w)
	move.b	#%00000000,(a1,d4.w)
	move.b	#%11111111,44(a0,d4.w)
	move.b	#%00000000,44(a1,d4.w)
	addq.w	#1,d4
wi_loi:	dbf	d5,wi_lop
	move.b	#%11111110,(a0,d4.w)
	move.b	#%00000001,(a1,d4.w)
	move.b	#%11111101,44(a0,d4.w)
	move.b	#%00000011,44(a1,d4.w)
	lea	44*2(a0),a0
	lea	44*2(a1),a1

	move.w	d3,d6		;mittenfaltet
	bra.s	wi_loi3
wi_lop3:
	moveq	#1,d4
	move.w	d2,d5
	move.b	#%11000000,(a0)
	move.b	#%00111111,(a1)
	bra.s	wi_loi2
wi_lop2:move.b	#%00000000,(a0,d4.w)
	move.b	#%11111111,(a1,d4.w)
	addq.w	#1,d4
wi_loi2:dbf	d5,wi_lop2
	move.b	#%00000011,(a0,d4.w)
	move.b	#%11111111,(a1,d4.w)
	lea	44(a0),a0
	lea	44(a1),a1
wi_loi3:dbf	d6,wi_lop3

	moveq	#1,d4		;understa 2 raderna
	move.w	d2,d5
	move.b	#%10111111,(a0)
	move.b	#%01111111,(a1)
	move.b	#%01111111,44(a0)
	move.b	#%11111111,44(a1)
	bra.s	wi_loi5
wi_lop5:move.b	#%11111111,(a0,d4.w)
	move.b	#%11111111,(a1,d4.w)
	move.b	#%11111111,44(a0,d4.w)
	move.b	#%11111111,44(a1,d4.w)
	addq.w	#1,d4
wi_loi5:dbf	d5,wi_lop5
	move.b	#%11111111,(a0,d4.w)
	move.b	#%11111111,(a1,d4.w)
	move.b	#%11111111,44(a0,d4.w)
	move.b	#%11111111,44(a1,d4.w)
	rts


Menu_init:
	lea	menu1,a0
	lea	menu2,a1
	move.w	#[[menu2-menu1]/2]-1,d7
me_lo:	clr.w	(a0)+
	clr.w	(a1)+
	dbf	d7,me_lo

	moveq	#2,d0	;x-bytes
	moveq	#$00,d1	;y-pix
	move.w	#9,d2	;x-bredd
	move.w	#$a8,d3	;y-pixhojd
	bsr	window_maker

	lea	menu1+[$95*44]+3,a0
	move.b	#-1,(a0)+
	move.l	#-1,(a0)+
	move.l	#-1,(a0)
	lea	menu1+[$96*44]+3,a0
	lea	menu2-menu1(a0),a1
	move.b	#-1,(a0)+
	move.l	#-1,(a0)+
	move.l	#-1,(a0)
	clr.b	(a1)+
	clr.l	(a1)+
	clr.l	(a1)+

	lea	menu1+[$73*44]+3,a0
	move.b	#-1,(a0)+
	move.l	#-1,(a0)+
	move.l	#-1,(a0)
	lea	menu1+[$74*44]+3,a0
	lea	menu2-menu1(a0),a1
	move.b	#-1,(a0)+
	move.l	#-1,(a0)+
	move.l	#-1,(a0)
	clr.b	(a1)+
	clr.l	(a1)+
	clr.l	(a1)+

	lea	menu1+[$1f*44]+3,a0
	move.b	#-1,(a0)+
	move.l	#-1,(a0)+
	move.l	#-1,(a0)
	lea	menu1+[$20*44]+3,a0
	lea	menu2-menu1(a0),a1
	move.b	#-1,(a0)+
	move.l	#-1,(a0)+
	move.l	#-1,(a0)
	clr.b	(a1)+
	clr.l	(a1)+
	clr.l	(a1)+

	lea	menu1+[$30*44]+3,a0
	move.b	#-1,(a0)+
	move.l	#-1,(a0)+
	move.l	#-1,(a0)
	lea	menu1+[$31*44]+3,a0
	lea	menu2-menu1(a0),a1
	move.b	#-1,(a0)+
	move.l	#-1,(a0)+
	move.l	#-1,(a0)
	clr.b	(a1)+
	clr.l	(a1)+
	clr.l	(a1)+

	lea	MenuText(pc),a0
	bsr	print3
	lea	MenuSelText(pc),a0
	bsr	print1
	bsr	GetCal

	lea	VeckoPois(pc),a0
	move.w	veckodag(pc),d0
	asl.w	#2,d0
	move.l	(a0,d0.w),a0
	bsr	print1

	lea	dagge(pc),a1
	lea	manadsdag(pc),a0
	move.w	datnr(pc),d0
	add.w	d0,d0
	move.w	(a1,d0.w),(a0)
	move.w	#$13,pr_xpos
	move.w	#$9f,pr_ypos
	bsr	print1

	lea	months-4(pc),a0
	move.w	monnr(pc),d0
	asl.w	#2,d0
	lea	(a0,d0.w),a0
	move.w	#$22,pr_xpos
	move.w	#$9f,pr_ypos
	bsr	print1

	lea	timme1(pc),a0
	move.w	#$39,pr_xpos
	bsr	print1
	lea	timme2(pc),a0
	move.w	#$3f,pr_xpos
	bsr	print1
	lea	kolon(pc),a0
	move.w	#$45,pr_xpos
	bsr	print1
	lea	minut1(pc),a0
	move.w	#$48,pr_xpos
	bsr	print1
	lea	minut2(pc),a0
	move.w	#$4e,pr_xpos
	bsr	print1
	lea	kolon(pc),a0
	move.w	#$54,pr_xpos
	bsr	print1
	lea	sekund1(pc),a0
	move.w	#$57,pr_xpos
	bsr	print1
	lea	sekund2(pc),a0
	move.w	#$5d,pr_xpos
	bsr	print1
	rts

MenuSelText:	dc.b $ff,$00,$17,$07,"PLAY"
		dc.b $ff,$00,$57,$25,$08	;stop-button
		dc.b $ff,$00,$15,$77,"tunes"
		dc.b 0
Menutext:	dc.b $ff,$00,$55,$07,$09,$0a
		dc.b $ff,$00,$17,$13,"L.PLAY",$ff,$00,$55,$13,$0b,$0c
		dc.b $ff,$00,$17,$25,$01,$02,$03,$04,$05,$06,$07
		dc.b $ff,$00,$45,$77,"instr"
		dc.b $ff,$00,$15,$80,"greets",$ff,$00,$49,$80,"addr"
		dc.b $ff,$00,$15,$89,"prefs",$ff,$00,$3c,$89,"future"
		dc.b 0
Mandag:	dc.b $ff,$00,$1d,$98,"monday the",0
Tisdag:	dc.b $ff,$00,$19,$98,"tuesday the",0
Onsdag:	dc.b $ff,$00,$14,$98,"wednesday the",0
Torsdag:dc.b $ff,$00,$17,$98,"thursday the",0
Fredag:	dc.b $ff,$00,$1e,$98,"friday the",0
Lordag:	dc.b $ff,$00,$17,$98,"saturday the",0
Sondag:	dc.b $ff,$00,$1d,$98,"sunday the",0
even
Manadsdag:	dc.w	0,0	;har laggs printet
Dagge:		dc.b "0001020304050607080910111213141516171819202122232425262728293031"
Months:		dc.b "jan",0,"feb",0,"mar",0,"apr",0,"may",0,"jun",0
		dc.b "jul",0,"aug",0,"sep",0,"oct",0,"nov",0,"dec",0
VeckoPois:	dc.l Mandag,Tisdag,Onsdag,Torsdag,Fredag,Lordag,Sondag
year:		dc.w	1990	;ar 1988-2087
monnr:		dc.w	1	;manad 1-12
datnr:		dc.w	11	;datum 1-31
dayno:		dc.w	0	;dag sedan 1 jan 1988
veckodag:	dc.w	0	;veckodag 0-6
timme1:		dc.b	"2",0
timme2:		dc.b	"3",0
minut1:		dc.b	"5",0
minut2:		dc.b	"9",0
sekund1:	dc.b	"5",0
sekund2:	dc.b	"8",0
kolon:		dc.b	":",0
sfontbredds:	dc.b 0,11,8,6,13,8,6,12,8,8,8,8,8,8,8,8
		dc.b 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,3
		dc.b 5,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8
		dc.b 6,6,6,6,6,6,6,6,6,6,3,4,8,8,8,8
		dc.b 0,9,9,9,9,9,9,9,9,4,9,9,9,9,9,9
		dc.b 9,9,9,9,8,9,9,9,9,9,9,9,9,9,9,9
		dc.b 0,6,6,6,6,6,6,6,6,3,6,6,6,6,6,6
		dc.b 6,6,6,6,7,6,6,6,6,6,6,6,6,6,6,6
pr_xpos:	dc.w	0
pr_ypos:	dc.w	0

print3:	moveq	#0,d0
	move.b	(a0)+,d0
	beq	pr_end3
	cmp.b	#$ff,d0
	bne.s	pr_n