
	load 'macros.dump'
	include 'driver.equ'
	include 'pl.equ'

;-----------------------------------------------
;
;   Imported addresses
;
;-----------------------------------------------

	IMPORT	D_AlertBox
	IMPORT	D_CloseDialog
	IMPORT	D_CurCursor
	IMPORT	D_Deref
	IMPORT	D_DigitsOnly
	IMPORT	D_DrawIcon
	IMPORT	D_FastMult
	IMPORT	D_GetNewModalDialog
	IMPORT	D_GrowHandle
	IMPORT	D_NeedHand
	IMPORT	D_NeedHandle
	IMPORT	D_Newhandle
	IMPORT	D_SetCursor
	IMPORT	D_StrPos
	IMPORT	D_UnLock
	IMPORT	D_UseStdColors

;-----------------------------------------------
;
;   Forward addresses and entries
;
;-----------------------------------------------

	ENTRY	DrawCurs1
	ENTRY	DrawCursors
	ENTRY	OldHeight
	ENTRY	P_DTabPc
	ENTRY	P_InsertData
	ENTRY	P_NothingPc
	ENTRY	P_TabTable





;--------------------------------------------------------------------------------
;
; P_ErrorAlert (Kind:w)
;

P_ErrorAlert	PROC		EXPORT

		INPUT Kind:w
		LOCAL Ptr:l

		BEGIN +B

		lda Kind
		asl a
		asl a
		addlong a,#StrTable,Ptr
		
		jsl	D_UseStdColors
		call D_AlertBox,in=(#OKBOX:w,[Ptr]:l),out=(a:w)

		RETURN

NoPaste	str  'Cannot import/paste more than 2500 paragraphs.'
_NoEdit	str  'There is not enough memory to edit text.'
BadData	str  'This file has been damaged and is unusable.'
BadVersion	str  'Cannot open. The file format has changed.'


StrTable
	DC.L	NoPaste
	DC.L	_NoEdit
	DC.L	BadData
	DC.L	BadVersion

		ENDP



;-------------------------------------------------------------------------------
;
; P_CheckHand (HowMuch:l)
;
; Check to see if a handle this size can be allocated.

P_CheckHand	PROC		EXPORT
	
			INPUT HowMuch:l
			ERROR Err
	
			BEGIN

			spacelong
			pushlong HowMuch
			jsl D_NeedHand
			sta Err
			bcc	killit

			pla
			pla
			bra	exit
		
killit		_DisposeHandle

exit		RETURN
			ENDP

;-------------------------------------------------------------------------------
;
; P_MustHandle (HowMuch:l,Attr:w) : Hdl:l
;
; Allocate a handle any way possible.

;P_MustHandle	PROC		EXPORT
;
;		INPUT  HowMuch:l,Attr:w
;		OUTPUT Hdl:l
;
;		BEGIN
;
;		call D_NeedHandle,in=(HowMuch:l,Attr:w),out=(Hdl:l)
;		bcc Exit
;
;		call D_Newhandle,in=(HowMuch:l,Attr:w),out=(Hdl:l)
;
;Exit	RETURN
;		ENDP






;---------------------------------------------------------------------------
;
; P_Traverse  (Hdl:l,value:w,size:w,count:w),out=(offset:w)
;
;		   linear search (wordsized) for an insertion point in array

P_Traverse	PROC		EXPORT
		local Ptr:l
		input Hdl:l,value:w,size:w,count:w
		output offset:w
		begin

		rcall D_FastMult,in=(size:x,count:y),out=(count:a)

		movelong [Hdl],Ptr

		ldy #0
Loop	cpy count
		bge done
		scmpw [Ptr]:y,value
		bge done
		addword y,size,y
		bra Loop

done	sty offset

		return
		ENDP


; ¥¥¥ Dead Code

;---------------------------------------------------------------------------
;
; P_LTraverse  (Hdl:l,value:l,size:w,count:w),out=(offset:w)
;
;		   linear search for a long in array, returns -1 if not found.
;
;		   NOTE that this is slightly different from P_Traverse.
;
;P_LTraverse	PROC		EXPORT
;		local Ptr:l
;		input Hdl:l,value:l,size:w,count:w
;		output offset:w
;		begin
;
;		rcall D_FastMult,in=(size:x,count:y),out=(count:a)
;
;		movelong [Hdl],Ptr
;
;		stz offset
;Loop	cmpw offset,count
;		bge notthere
;		cmpl [Ptr]:offset,value
;		beq done
;		addword offset,size,offset
;		bra Loop
;
;notthere	moveword #-1,offset
;done	return
;		ENDP




;---------------------------------------------------------------------------
;
; P_FindGuide  (Hdl:l,Count:w,Value:w,Diff:w,ftype:w)  Offset:w,NewVal:w,Type:w
;
;		   diff is the # of Q_Pixels away you can be
;		   ftype is the type of guide you want to find.  use -1 for any.

P_FindGuide	PROC		EXPORT

		input Hdl:l,Count:w,Value:w,Diff:w,ftype:w
		output Offset:w,Newval:w,Type:w
		local Ptr:l,min:w,max:w

		begin

		IsNil Hdl
		beq notthere

		addword value,diff,a
		inc a
		sta max
		subword value,diff,min

		rcall D_FastMult,in=(#4:x,count:y),out=(count:a)

		movelong [Hdl],Ptr

		stz offset
Loop	cmpw offset,count
		bge notthere
		moveword [Ptr]:offset,newval
		iny
		iny
		moveword [Ptr]:y,type
		scmpw newval,min
		blt cont
		scmpw newval,max
		bge notthere
		; found one.
		lda ftype
		bmi done
		iny
		iny
		cmp [ptr],y
		bne cont
		bra done
cont	addword offset,#4,offset
		bra Loop

notthere	moveword #-1,offset
		moveword value,newval

done	return
		ENDP




; ¥¥¥ Dead Code

;;---------------------------------------------------------------------------
;;
;; P_DoInsert  
;;
;;		   stick a long into an var-array of longs
;
;P_DoInsert	PROC		EXPORT
;		input Hdl:l,offset:w,item:l,current:w
;		local ptr:l
;		error err
;		begin
;
;		call P_InsertData,in=(Hdl:l,offset:w,#1:w,#4:w,current:w),err=(err)
;		movelong [Hdl],ptr
;		ldy offset
;		movelong item,[ptr]:y
;
;		return
;		ENDP




;---------------------------------------------------------------------------
;
; P_Merge   merge 2 arrays of long into a 3rd array
;

P_Merge	PROC		EXPORT
		input Hdl1:l,Hdl2:l,Hdl3:l,size1:w,size2:w
		output size3:w
		local ptr1:l,ptr2:l,ptr3:l
		local offset1:w,offset2:w,offset3:w
		error err

		begin

		stz err


		cmpl Hdl1,Hdl2
		bne NotTemplate

		stz size1		   ; D_Ignore the 'template' passed in.

NotTemplate	addword size1,size2,size3
		asl size3
		asl size3
		jeq exit
		call D_GrowHandle,in=(#0:w,size3:w,Hdl3:l),err=(err)
		jcs exit

		IsNil Hdl1
		beq No1
		rcall D_Deref,in=(Hdl1:ax),out=(ptr1:ax)
		asl size1
		asl size1
		bra Try2

No1	stz size1
Try2	IsNil Hdl2
		beq No2
		rcall D_Deref,in=(Hdl2:ax),out=(ptr2:ax)
		asl size2
		asl size2
		bra Do3

No2	stz size2
Do3	rcall D_Deref,in=(Hdl3:ax),out=(ptr3:ax)

		stz offset1
		stz offset2
		stz offset3

loop	cmpw offset1,size1
		bge DoSecond
		cmpw offset2,size2
		bge DoFirst

		cmpw [ptr1]:offset1,[ptr2]:offset2
		bgt DoSecond
;		   blt DoFirst

;		 ; They're equal, so...
;		   movelong [ptr1]:offset1,[ptr3]:offset3
;		   addword offset1,#4,offset1
;		   addword offset2,#4,offset2
;		   bra continue

DoFirst	movelong [ptr1]:offset1,[ptr3]:offset3
		addword offset1,#4,offset1
		bra continue

DoSecond	movelong [ptr2]:offset2,[ptr3]:offset3
		addword offset2,#4,offset2

continue	addword offset3,#4,offset3
		cmp size3
		jlt loop

		IsNil Hdl1
		beq Unlock2
		rcall D_UnLock,in=(Hdl1:ax)

Unlock2	IsNIl Hdl2
		beq Unlock3
		rcall D_UnLock,in=(Hdl2:ax)

Unlock3	rcall D_UnLock,in=(Hdl3:ax)

exit	lsr size3
		lsr size3
		return

		ENDP




;------------------------------------------------------------------------------
;
; P_InsertData (Hdl:l, Offset:w, items:w, UnitSize:w, Count:w) : memory errs.
;					  ^bytes	^insert			  ^current
;
;		   NOTE: Hdl must already exist & be non-nil

P_InsertData	PROC		EXPORT

		INPUT Hdl:l,offset:w,items:w,UnitSize:w,Count:w
		LOCAL Size:l,Increase:l,Src:l,off:l,tmp:l
		error err
		BEGIN

		stz err
		moveword offset,off
		stz off+2

		tool _Multiply,in=(Count:w,UnitSize:w),out=(Size:l)

		tool _Multiply,in=(items:w,UnitSize:w),out=(Increase:l)

		addlong Size,Increase,tmp

		IsNil tmp
		beq exit

		call D_GrowHandle,in=(tmp:l,Hdl:l),err=(err)
		bcs exit

		addlong off,[Hdl],Src
		pushlong Src
		addlong Src,Increase,s
		sublong Size,off,s
		_BlockMove

exit	RETURN
		ENDP





;------------------------------------------------------------------------------
;
; P_DeleteData (Hdl:l, offset:w, items:w, UnitSize:w, Count:w) : memory errs
;

P_DeleteData	PROC		EXPORT

		INPUT Hdl:l,offset:w,items:w,UnitSize:w,Count:w
		LOCAL Size:l,Decrease:l,DestOffset:l,Dest:l,temp:l,off:l
		error err
		BEGIN

		stz err
		moveword offset,off
		stz off+2

		tool _Multiply,in=(UnitSize:w,Count:w),out=(Size:l)

		tool _Multiply,in=(items:w,UnitSize:w),out=(Decrease:l)

		addlong [Hdl],off,Dest
		addlong Dest,Decrease,s
		pushlong Dest
		sublong Size,off,temp
		sublong temp,Decrease,s
		_BlockMove

		sublong Size,Decrease,off
		IsNil off
		beq exit
		call D_GrowHandle,in=(off:l,Hdl:l),err=(err)

exit	RETURN
		ENDP



;---------------------------------------------------------------------------
;
; Fix2Asc	 
;
;		   converts fixedpoint to ascii, with 2 decimal places
;		   assumes str is long enough to accomodate.
;
;		   doesn't work right for small negative numbers: -1 <= x < 0
;
;		   limits string to 4 characters.  E.g., '1.24'


Fix2Asc	PROC		EXPORT
		input value:l,str:l
		local neg:w,fill:r,tmpstr:w,tmpval:l,tmp:l
		local offset:w,length:w
		begin

		moveword value,tmpval
		stz tmpval+2

		stz neg
		lda value+2
		asl a
		bcc NotNeg
		inc neg
		inc value+2
NotNeg


		tool _Int2Dec,in=(value+2:w,!tmpstr:l,#6:w,#1:w)

		moveword #$2E,tmpstr+6			;	the character Ò.Ó

		lda neg
		beq NotNeg2

		sublong #$00010000,tmpval,tmp
		movelong tmp,tmpval

NotNeg2	tool _FixMul,in=(#0:w,#100:w,tmpval:l),out=(tmpval:l)

		tool _Int2Dec,in=(tmpval:w,!tmpstr+7:l,#2:w,#0:w)

		; convert any spaces to zeroes.
		short
		lda tmpstr+7
		cmp #' '
		bne Ck2nd
		lda #'0'
		sta tmpstr+7

Ck2nd	lda tmpstr+8
		cmp #' '
		bne DidZeroes

		lda #'0'
		sta tmpstr+8

DidZeroes	long
		moveword #9,length
		movelong !tmpstr,tmp
		stz offset

D_EatBlanks	moveword [tmp]:offset,a
		and #$FF
		cmp #' '
		bne GotIt

		dec length
		inc offset
		bra D_EatBlanks

GotIt	cmpw length,#5
		blt GotLen
		moveword #4,length

GotLen	lda offset
		addlong a,tmp,s
		addlong str,#1,s
		pushlongword length
		_BlockMove

		lda [str]
		and #$FF00
		ora length

		sta [str]

		return

		ENDP



;---------------------------------------------------------------------------
;
; P_AddGuide 
;
;		   rulerguides = 0, col guides = 1, margin guides = 2

P_AddGuide	PROC		EXPORT

		input pos:w,array:l,count:w,type:w
		output newcount:w
		local tmp:l,ptr:l
		error err
		begin

		moveword count,newcount

		call P_Traverse,in=(array:l,pos:w,#4:w,count:w),out=(tmp:w)
		call P_InsertData,in=(array:l,tmp:w,#1:w,#4:w,count:w),err=(err)
		rcall D_Deref,in=(array:ax),out=(ptr:ax)
		jcs whoops

		moveword pos,[ptr]:tmp
		iny
		iny
		moveword type,[ptr]:y

		rcall D_UnLock,in=(array:ax)

		inc newcount


whoops	return
		ENDP





;---------------------------------------------------------------------------
;
; P_ExplodeGuide 
;

P_ExplodeGuide	PROC		EXPORT

		input arrayhdl:l,count:w,val:w,type:w,dir:w
		output newval:w
		local offset:w,ptr:l,max:w
		error err

		begin

		moveword #1,err
		lda count
		asl a
		asl a
		sta max

		call P_Traverse,in=(arrayhdl:l,val:w,#4:w,count:w),out=(offset:w)

		movelong [arrayhdl],ptr

		lda dir
		bpl SearchF

SearchR	lda offset
		beq quit

		subword offset,#4,offset
		moveword [ptr]:offset,newval
		lda type
		bmi exit
		iny
		iny
		cmpw [ptr]:y,type
		bne SearchR
		bra exit

SearchF	cmpw offset,max
		beq quit

		moveword [ptr]:offset,newval
		lda type
		bmi exit
		iny
		iny
		cmpw [ptr]:y,type
		beq exit
		addword offset,#4,offset
		bra SearchF

exit	stz err
quit	return
		ENDP




;---------------------------------------------------------------------------
;
; P_DrawATab
;
;
;		   newpt of -1,-1 says to erase the old, period.
;
;		   newpt == oldpt says to XOR over the old, then XOR the D_New.
;
;		   oldpt == -1,-1 says just draw it, as if in an D_Update.
;
;		   need to clip as necessary before calling this.
;		   Coordinates are in WINDOW local -- not offset nor scaled.
;

P_DrawATab	PROC		EXPORT
			;Using P_Data
			;Using P_RulerData
			;Using P_TabIcons

		input oldpt:l,newpt:l,type:w
		local iconptr:l,tmp:w
		begin +b

		lda type
		inc a
		asl a
		asl a
		addlong a,#P_TabTable,iconptr

		_PenNormal

		cmpl newpt,#-1
		bne cont

		; Totally erase the old
		subword oldpt+2,#4,oldpt+2
		call D_DrawIcon,in=(#P_NothingPc:l,oldpt:l,#modeCopy:w)
		bra exit


		; UnDraw the old first...
cont	cmpl oldpt,#-1
		beq DrawNew

		subword oldpt+2,#4,tmp
		call D_DrawIcon,in=([iconptr]:l,tmp:w,oldpt:w,#notXOR:w)

		; Now the D_New...
DrawNew	cmpl newpt,oldpt
		bne DrawIt

		; Really place it.
PlaceIt	subword newpt+2,#4,newpt+2
		call D_DrawIcon,in=([iconptr]:l,newpt:l,#notBIC:w)
		bra exit

DrawIt	cmpl OldPt,#-1
		beq PlaceIt

		subword newpt+2,#4,newpt+2
		call D_DrawIcon,in=([iconptr]:l,newpt:l,#notXOR:w)

exit	return

		ENDP



;---------------------------------------------------------------------------
;
; P_TabIcons  
;

P_TabIcons	PROC		EXPORT
		EXPORT	P_TabTable
		EXPORT	P_IndentPc
		EXPORT	P_LTabPc
		EXPORT	P_DTabPc
		EXPORT	P_RTabPc
		EXPORT	P_NothingPc


P_TabTable	DC.L	P_DTabPc,P_LTabPc,P_RTabPc,P_IndentPc

P_IndentPc	DC.W	0,0,5,10
	DC.B	$ff,$4f,$ff
	DC.B	$ff,$4f,$ff
	DC.B	$ff,$4f,$ff
	DC.B	$f4,$44,$ff
	DC.B	$44,$44,$4f

P_LTabPc	DC.W	0,0,5,10
	DC.B	$ff,$4f,$ff
	DC.B	$ff,$44,$ff
	DC.B	$ff,$44,$4f
	DC.B	$ff,$44,$ff
	DC.B	$ff,$4f,$ff

P_DTabPc	DC.W	0,0,5,10
	DC.B	$ff,$4f,$ff
	DC.B	$f4,$44,$ff
	DC.B	$f4,$f4,$ff
	DC.B	$f4,$44,$ff
	DC.B	$ff,$4f,$ff

P_RTabPc	DC.W	0,0,5,10
	DC.B	$ff,$4f,$ff
	DC.B	$f4,$4f,$ff
	DC.B	$44,$4f,$ff
	DC.B	$f4,$4f,$ff
	DC.B	$ff,$4f,$ff


P_NothingPc	DC.W	0,0,5,14
	DC.B	$ee,$ee,$ee,$ee
	DC.B	$ee,$ee,$ee,$ee
	DC.B	$ee,$ee,$ee,$ee
	DC.B	$ee,$ee,$ee,$ee
	DC.B	$ee,$ee,$ee,$ee


		ENDP




;---------------------------------------------------------------------------
;
; P_DoSpacingDlog 
;

P_DoSpacingDlog	PROC		EXPORT
		input default:w
		output height:w
		local TheDlog:l,result:w,pagetext:l
		begin

		tool _Int2Dec,in=(default:w,#P_Height+1:l,#2:w,#0:w)
		jsl	D_UseStdColors
		call D_GetNewModalDialog,in=(#P_SetLHDlog:l),out=(TheDlog:l)

DlogLoop	tool _ModalDialog,in=(#D_DigitsOnly+$80000000:l),out=(result:w)

		cmp #OK
		beq DoneDlog
		cmp #Cancel
		beq DoneDlog

		bra DlogLoop

DoneDlog	tool _GetIText,in=(TheDlog:l,#4:w,!pagetext:l)
		lda pagetext
		and #$00FF
		bne CkValid

		moveword #Cancel,result
		bra QuitDlog

CkValid	tax
		tool _Dec2Int,in=(!pagetext+1:l,x:w,#0:w),out=(height:w)
		bcs Oops

		cmpw height,#4
		bge CheckMax
		lda #4

CheckMax	cmp #65
		blt GotHeight

		lda #64

GotHeight	sta height
		bra QuitDlog

Oops	moveword #Cancel,result

QuitDlog	call D_CloseDialog,in=(TheDlog:l)
		cmpw result,#OK
		beq exit

		stz height

exit	return




;---------------------------------------------------------------------------
; Set Line Height Dialog
;
;		   1 = OK
;		   2 = Cancel
;		   3 = "Set Q_Line Height'
;		   4 = Q_Line Height

P_SetLHDlog	DC.W	48,185,101,462
	DC.W	1
	DC.L	0
	DC.L	P_LHOK,P_LHCancel,P_SetLHCnt,P_SetLHText
	DC.L	0

P_LHOK	DC.W	1
	DC.W	34,160,47,230
	DC.W	$000A
	DC.L	OKTxt
	DC.W	0
	DC.W	0
	DC.L	0
OKTxt	STR 'OK'

P_LHCancel	DC.W	2
	DC.W	34,40,47,110
	DC.W	$000A
	DC.L	CancelTxt
	DC.W	0
	DC.W	0
	DC.L	0
CancelTxt	STR 'Cancel'

P_SetLHText	DC.W	3
	DC.W	10,40,23,161
	DC.W	$800F
	DC.L	P_SetLHTextMsg
	DC.W	0
	DC.W	0
	DC.L	0
P_SetLHTextMsg	STR 'Set line height'

P_SetLHCnt	DC.W	4
	DC.W	8,165,21,203
	DC.W	$8011
	DC.L	P_Height
	DC.W	3
	DC.W	0
	DC.W	0
P_Height	STR '99'


		ENDP




;---------------------------------------------------------------------------
;
; Asc2Fix	 
;

Asc2Fix	PROC		EXPORT

		input strptr:l
		output value:l
		local tmp:l,len:w,fraclen:w,divisor:w,decpos:w
		error err
		begin

		moveword #1,err

		stzl value
		lda [strptr]
		and #$FF
		sta len
		jeq exit

		; find the period
		moveword #$2E01,tmp			 ;  == '.'
		call D_StrPos,in=(!tmp:l,strptr:l,#1:w),out=(decpos:w)
		bmi DoInt
		; calculate the fraction

		cmpw decpos,len
		beq DoInt

		spaceword
		ina
		addlong a,strptr,s
		subword len,decpos,fraclen
		pha
		pushword #0
		_Dec2Int
		sta err
		pullword value
		bcs exit

		; Convert from decimal to binary fraction
		moveword #10,divisor
DecLoop	dec fraclen
		beq DidDec

		rcall D_FastMult,in=(divisor:x,#10:y),out=(divisor:a)
		bra DecLoop

DidDec	tool _FixRatio,in=(value:w,divisor:w),out=(value:l)

		; calculate the integer
DoInt	lda decpos
		bpl GotOff
		addword #1,len,decpos
GotOff	stz err
		subword decpos,#1,tmp
		beq exit
		addwl #1,strptr
		tool _Dec2Int,in=(strptr:l,tmp:w,#0:w),out=(value+2:w),err=(err)

exit	return
		ENDP




;---------------------------------------------------------------------------
;
; P_GetModifiers():w
;
;		   returns a modifier word as per the event mgr.
;
P_GetModifiers	PROC		EXPORT
		output mods:w
		local	modifiers:w,where:l,when:l,message:l,event:w
		begin

		tool _GetNextEvent,in=(#0:w,!event:l),out=(a:w)

		moveword modifiers,mods
		
		return
		ENDP




;---------------------------------------------------------------------------
;
; P_SetCursor (_cursor:w,width:w)
;

P_SetCursor	PROC		EXPORT
			;Using P_Cursors
			;Using CursorData

		input _cursor:w,width:w
		local ptr:l

		begin +b

		lda _cursor
		bpl NotDraw

		movelong #DrawCursors,ptr
		cmpw _cursor,>D_CurCursor
		bne SetIt

		cmpw Width,OldHeight
		beq Exit

SetIt
		lda Width
		sta OldHeight
		dec a
		asl a
		asl a
		tay
		tool _SetCursor,in=([ptr]:y:l)

Exit
		call D_SetCursor,in=(_cursor:w)

		RETURN

NotDraw	stz OldHeight
		bra exit

		ENDP




P_Cursors	PROC		EXPORT
		EXPORT	OldHeight
		EXPORT	DrawCursors
		EXPORT	DrawCurs1
		EXPORT	DrawCurs2
		EXPORT	DrawCurs3
		EXPORT	DrawCurs4
		EXPORT	DrawCurs5

OldHeight		DS.B 2

DrawCursors	DC.L	DrawCurs1,DrawCurs2,DrawCurs3,DrawCurs4,DrawCurs5

DrawCurs1	DC.W	9	;Slices
	DC.W	4	;words / slice

	DC.B	$00,$00,$f0,$00,$00,$00,$00,$00
	DC.B	$00,$00,$f0,$00,$00,$00,$00,$00
	DC.B	$00,$00,$f0,$00,$00,$00,$00,$00
	DC.B	$00,$00,$f0,$00,$00,$00,$00,$00
	DC.B	$ff,$ff,$ff,$ff,$f0,$00,$00,$00
	DC.B	$00,$00,$f0,$00,$00,$00,$00,$00
	DC.B	$00,$00,$f0,$00,$00,$00,$00,$00
	DC.B	$00,$00,$f0,$00,$00,$00,$00,$00
	DC.B	$00,$00,$f0,$00,$00,$00,$00,$00

	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00

	DC.W	4	;Hot Y
	DC.W	8	;Hot X


DrawCurs2	DC.W	10	;Slices
	DC.W	4	;words / slice

	DC.B	$00,$00,$ff,$00,$00,$00,$00,$00
	DC.B	$00,$00,$ff,$00,$00,$00,$00,$00
	DC.B	$00,$00,$ff,$00,$00,$00,$00,$00
	DC.B	$00,$00,$ff,$00,$00,$00,$00,$00
	DC.B	$ff,$ff,$ff,$ff,$ff,$00,$00,$00
	DC.B	$ff,$ff,$ff,$ff,$ff,$00,$00,$00
	DC.B	$00,$00,$ff,$00,$00,$00,$00,$00
	DC.B	$00,$00,$ff,$00,$00,$00,$00,$00
	DC.B	$00,$00,$ff,$00,$00,$00,$00,$00
	DC.B	$00,$00,$ff,$00,$00,$00,$00,$00

	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00

	DC.W	4	;Hot Y
	DC.W	8	;Hot X


DrawCurs3	DC.W	11	;Slices
	DC.W	4	;words / slice

	DC.B	$00,$00,$ff,$f0,$00,$00,$00,$00
	DC.B	$00,$00,$f0,$f0,$00,$00,$00,$00
	DC.B	$00,$00,$f0,$f0,$00,$00,$00,$00
	DC.B	$00,$00,$f0,$f0,$00,$00,$00,$00
	DC.B	$ff,$ff,$ff,$ff,$ff,$f0,$00,$00
	DC.B	$f0,$00,$f0,$f0,$00,$f0,$00,$00
	DC.B	$ff,$ff,$ff,$ff,$ff,$f0,$00,$00
	DC.B	$00,$00,$f0,$f0,$00,$00,$00,$00
	DC.B	$00,$00,$f0,$f0,$00,$00,$00,$00
	DC.B	$00,$00,$f0,$f0,$00,$00,$00,$00
	DC.B	$00,$00,$ff,$f0,$00,$00,$00,$00

	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00

	DC.W	4	;Hot Y
	DC.W	8	;Hot X




DrawCurs4	DC.W	12	;Slices
	DC.W	4	;words / slice

	DC.B	$00,$00,$ff,$ff,$00,$00,$00,$00
	DC.B	$00,$00,$f0,$0f,$00,$00,$00,$00
	DC.B	$00,$00,$f0,$0f,$00,$00,$00,$00
	DC.B	$00,$00,$f0,$0f,$00,$00,$00,$00
	DC.B	$ff,$ff,$ff,$ff,$ff,$ff,$00,$00
	DC.B	$f0,$00,$f0,$0f,$00,$0f,$00,$00
	DC.B	$f0,$00,$f0,$0f,$00,$0f,$00,$00
	DC.B	$ff,$ff,$ff,$ff,$ff,$ff,$00,$00
	DC.B	$00,$00,$f0,$0f,$00,$00,$00,$00
	DC.B	$00,$00,$f0,$0f,$00,$00,$00,$00
	DC.B	$00,$00,$f0,$0f,$00,$00,$00,$00
	DC.B	$00,$00,$ff,$ff,$00,$00,$00,$00

	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00

	DC.W	4	;Hot Y
	DC.W	8	;Hot X



DrawCurs5	DC.W	13	;Slices
	DC.W	5	;words / slice

	DC.B	$00,$00,$ff,$ff,$f0,$00,$00,$00,$00,$00
	DC.B	$00,$00,$f0,$00,$f0,$00,$00,$00,$00,$00
	DC.B	$00,$00,$f0,$00,$f0,$00,$00,$00,$00,$00
	DC.B	$00,$00,$f0,$00,$f0,$00,$00,$00,$00,$00
	DC.B	$ff,$ff,$ff,$ff,$ff,$ff,$f0,$00,$00,$00
	DC.B	$f0,$00,$f0,$00,$f0,$00,$f0,$00,$00,$00
	DC.B	$f0,$00,$f0,$00,$f0,$00,$f0,$00,$00,$00
	DC.B	$f0,$00,$f0,$00,$f0,$00,$f0,$00,$00,$00
	DC.B	$ff,$ff,$ff,$ff,$ff,$ff,$f0,$00,$00,$00
	DC.B	$00,$00,$f0,$00,$f0,$00,$00,$00,$00,$00
	DC.B	$00,$00,$f0,$00,$f0,$00,$00,$00,$00,$00
	DC.B	$00,$00,$f0,$00,$f0,$00,$00,$00,$00,$00
	DC.B	$00,$00,$ff,$ff,$f0,$00,$00,$00,$00,$00

	DC.B	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
	DC.B	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00

	DC.W	4	;Hot Y
	DC.W	8	;Hot X

		ENDP
		END

