*
* NTP Player
* v1.0
*
* (c) 2019-2023, Brutal Deluxe Software
*

* v1.0b0 - 20190523
*   I replaced the pei $0a with lda $0a stal ptrSAVE
*   The final version will have them back to shorten code
*
* v1.0b1 - 20190523
*   Everything is in place, must test now
*
* v1.0b2 - 20190524
*   Oops, not finderSaysBeforeOpen MUST go to myREQUEST4, not 3
*   That's what happens when you modify your code from 1994 :-)
*
* v1.0 - 20230318
*   GS/OS string buffer is now bigger
*   We DO NOT have an icon yet
*   Some bugs fixed
*   Better lisibility of the source code
*

            mx        %00
            rel
            typ       $B6
	dsk       NTPPlayer.l
            lst       off

*----------------------------

            use       4/Locator.Macs
            use       4/Mem.Macs
            use       4/Tool222.Macs
            use       4/Misc.Macs
            use       4/Util.Macs

*----------------------------

ntpTOOL     =	222
ntpVERSION  =	$0100
ntpTYPE     =	$d5
ntpAUXTYPE  =	$08

GSOS        =	$E100A8

result	=	$10
reqCode	=	$0e
dataIn	=	$0a
dataOut	=	$06

*----------------------------

            phb
            phk
            plb

            pha
            _MMStartUp
            pla
            ora	#$0100
            sta	myID

            PushLong	#myBRUTAL
            PushWord	myID
            PushLong	#myREQUEST
            _AcceptRequests

	PushLong	#mySTRING
	PushLong	#0	; myICON
	_ShowBootInfo

            plb
            rtl

*----------------------------

doSRQGOAWAY	ldy	#2
	lda	#0	; do not remove me from memory
	sta	[dataOut],y
	bra	myREQUEST3

*----------------------------

myREQUEST   phd
            tsc
            tcd
            lda	reqCode
	cmp	#3	; srqGoAway
	beq	doSRQGOAWAY	; nah, I want to stay in memory...
            cmp	#$0101	; finderSaysGoodbye
            beq	doBYE
myREQUEST2  cmp	#$0104	; finderSaysBeforeOpen
            bne	myREQUEST4
            beq	doOPEN

myREQUEST3  lda	#$8000	; call handled
            sta	result

myREQUEST4  pld
            lda	$02,s
            sta	$0c,s
            lda	$01,s
            sta	$0b,s
            ply
            ply
            ply
            ply
            ply
            rtl

*----------------------------

doBYE       ldal      fgTOOL222    ; did I activate the tool?
            beq       doBYE9       ; nope

            _NTPShutDown           ; yes, stop music & tool

            PushWord  #ntpTOOL     ; unload it!
            _UnloadOneTool

doBYE9      lda       #0           ; tool is off
            stal      fgTOOL222

            bra       myREQUEST3   ; call handled

*----------------------------

doOPEN      ldy       #$0016
            lda       [dataIn],y      ; printFlag
            beq       doOPEN2      ; 0 for open
doOPEN1     bra       myREQUEST4

doOPEN2     ldy       #$000a       ; is it a NTP file?
            lda       [$0a],y
            cmp       #ntpTYPE
            bne       doOPEN1
            iny
            iny
            lda       [dataIn],y
            cmp       #ntpAUXTYPE
            bne       doOPEN1

*--- Is tool in memory?

            ldal      fgTOOL222
            bne       doOPEN3      ; yes

            PushWord  #ntpTOOL
            PushWord  #ntpVERSION
            _LoadOneTool
            bcs       doOPEN1

            lda       #1
            stal      fgTOOL222

            ldal      myID
            pha
            _NTPStartUp

*--- Now, copy the GS/OS (STRL) pathname, we need a STR

doOPEN3     lda       dataIn	; save dataIn ptr
            stal      ptrSAVE
            lda       dataIn+2
            stal      ptrSAVE+2

            ldy       #2           ; pathPtr
            lda       [dataIn],y
            tax
            iny
            iny
            lda       [dataIn],y
            sta       dataIn+2
            stx       dataIn

            ldy       #768-2       ; copy path
]lp         tyx
            lda       [dataIn],y
            stal      pathSONG,x
            dey
            dey
            bpl       ]lp

            ldal      pathSONG     ; from STRL to STR
            xba                    ; if path is long...
            stal      pathSONG     ; ...ahem

            ldal      ptrSAVE+2
            sta       dataIn+2
            ldal      ptrSAVE
            sta       dataIn

*--- Now, play the song

            PushLong  #pathSONG2
            _NTPLoadOneMusic
            bcc       doOPEN4
            brl       myREQUEST4   ; error

doOPEN4     PushWord  #0           ; no loop
            _NTPPlayMusic
            brl       myREQUEST3   ; muzak is playing!

*----------------------------

fgTOOL222   ds        2            ; <>0 if tool in mem
myID        ds        2            ; memID

ptrSAVE     ds        4            ; save dataIn ptr
pathSONG    ds        1            ; STRL from GS/OS
pathSONG2   ds        768          ; STR to the NTP tool

*----------------------------

myBRUTAL    str       'BrutalDeluxe~NTPPlayer~'

mySTRING asc 'NTPPlayer             v01.00  by Brutal Deluxe'00

*myICON	dw	$0080 ; Icon type
*	dw	$00C8 ; Icon size
*	dw	$0014 ; Icon height
*	dw	$0014 ; Icon width
*	hex	33333333333333333333 ; Icon image
*	hex	3AAAAAAAAAAAAAAAAA83
*	hex	3A88888888888888A883
*	hex	3A8888888888888AA883
*	hex	3A8811111111111AA883
*	hex	3A88111111111FFAA883
*	hex	3A8811FFFF11111AA883
*	hex	3A88111111111FFAA883
*	hex	3A881FFFF111FFFAA883
*	hex	3A8811111111111AA883
*	hex	3A88EE1111EE111AA883
*	hex	3A886EEEEE6EEEEAA883
*	hex	3A8864EE666666EAA883
*	hex	3A88644EEEEE644AA883
*	hex	3A886646EE64466AA883
*	hex	3A88AAAAAAAAAAAAA883
*	hex	3A8AAAAAAAAAAAAAA883
*	hex	3AA88888888888888883
*	hex	3A888888888888888883
*	hex	33333333333333333333
*	hex	FFFFFFFFFFFFFFFFFFFF ; Icon mask
*	hex	FFFFFFFFFFFFFFFFFFFF
*	hex	FFFFFFFFFFFFFFFFFFFF
*	hex	FFFFFFFFFFFFFFFFFFFF
*	hex	FFFFFFFFFFFFFFFFFFFF
*	hex	FFFFFFFFFFFFFFFFFFFF
*	hex	FFFFFFFFFFFFFFFFFFFF
*	hex	FFFFFFFFFFFFFFFFFFFF
*	hex	FFFFFFFFFFFFFFFFFFFF
*	hex	FFFFFFFFFFFFFFFFFFFF
*	hex	FFFFFFFFFFFFFFFFFFFF
*	hex	FFFFFFFFFFFFFFFFFFFF
*	hex	FFFFFFFFFFFFFFFFFFFF
*	hex	FFFFFFFFFFFFFFFFFFFF
*	hex	FFFFFFFFFFFFFFFFFFFF
*	hex	FFFFFFFFFFFFFFFFFFFF
*	hex	FFFFFFFFFFFFFFFFFFFF
*	hex	FFFFFFFFFFFFFFFFFFFF
*	hex	FFFFFFFFFFFFFFFFFFFF
*	hex	FFFFFFFFFFFFFFFFFFFF

