home *** CD-ROM | disk | FTP | other *** search
- Section CLIPS,Code
- opt !
-
- Incdir Include:
- Include mysystem.i
-
- Include libraries/xpk.i
- Include lib/xpkmaster_lib.i
-
- Include libraries/reqtools.i
- Include lib/reqtools_lib.i
-
- Include libraries/playsidbase.i
- Include lib/playsid_lib.i
-
- CLIPS_PLAY Equ 0
- CLIPS_STOP Equ 1
- CLIPS_CHANGE Equ 2
-
- ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- Start: Bsr ProcessArgs
-
- Move.L $4.w,A6
- Move.L A6,_EXECBase
-
- ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- Lea (Title,PC),A1
- CALL FindPort
- Tst.L D0
- Beq.S .NoPort
- Move.L D0,A0
-
- Lea (_MyMsg,PC),A1
- CALL PutMsg
-
- .NoPort Cmp.W #CLIPS_PLAY,_MsgType
- Bne CloseDown
-
- CALL CreateMsgPort
- Move.L D0,_MyMsgPort
- Beq CloseDown
-
- Move.L D0,A1
-
- Moveq #0,D0
- Move.B (MP_SIGBIT,A1),D0
- Moveq #1,D1
- Lsl.L D0,D1
- Move.L D1,_SignalSet
-
- Move.L #Title,LN_NAME(A1)
- Move.B #5,LN_PRI(A1)
- CALL AddPort
-
- ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- Lea (XPKLibrary,PC),A1
- Moveq #0,D0
- CALL OpenLibrary
- Move.L D0,_XPKBase
- Beq CloseDown
-
- ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- Lea (XPKTags,PC),A0
- CALL XpkUnpack,XPK
- Tst.L D0
- Bne CloseDown
-
- ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- Lea (PSLibrary,PC),A1
- Moveq #0,D0
- CALL OpenLibrary,EXEC
- Move.L D0,_PLAYSIDBase
- Beq CloseDown
-
- CALL AllocEmulResource,PLAYSID
-
- ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- Move.L (_OutputBuffer,PC),A0
- CALL CheckModule
- Tst.L D0
- Bne BadMOD
-
- Move.L (_OutputBuffer,PC),A0
- Move.L A0,A1
- Move.L (_OutputBufLen,PC),D0
- CALL SetModule
-
- Moveq #50,D0
- CALL SetVertFreq
-
- Moveq #0,D0
- Move.L (_OutputBuffer,PC),A0
- Move.W (sidh_defsong,A0),D0
- Move.L D0,_SongNum
- Move.W (sidh_number,A0),D0
- Move.L D0,RTTags+4 ;max songs
-
- ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- MainLoop: Move.L (_SongNum,PC),D0
- CALL StartSong,PLAYSID
-
- ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- .WaitLoop Move.L (_SignalSet,PC),D0
- Bset #SIGBREAKB_CTRL_C,D0
- CALL Wait,EXEC
- Move.L D0,D4
-
- Move.L (_MyMsgPort,PC),A0
- CALL GetMsg
- Move.L D0,_MsgReceived
-
- Btst #SIGBREAKB_CTRL_C,D4
- Bne.S ShutDown
-
- Tst.L _MsgReceived
- Beq.S ShutDown
- Move.L (_MsgReceived,PC),A0
- Lea (MN_SIZE,A0),A0
- Move.W (A0)+,D0
- Cmp.W #CLIPS_CHANGE,D0
- Bne.S ShutDown
-
- ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- Cmp.L #1,RTTags+4
- Beq.S .NumOk
-
- Tst.L _REQTOOLSBase
- Bne.S .RTOk
-
- Lea (RTLibrary,PC),A1
- Moveq #38,D0
- CALL OpenLibrary,EXEC
- Move.L D0,_REQTOOLSBase
- Beq.S .NumOk
-
- .RTOk Lea (_SongNum,PC),A1
- Lea (Title,PC),A2
- Sub.L A3,A3
- Lea (RTTags,PC),A0
- CALL rtGetLongA,REQTOOLS
- Tst.L D0
- Beq .WaitLoop
-
- .NumOk CALL StopSong,PLAYSID
- Bra MainLoop
-
- ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- ShutDown: CALL StopSong,PLAYSID
-
- BadMOD: CALL FreeEmulResource
-
- ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- CloseDown: Move.L (_OutputBuffer,PC),A1
- Cmp.L #0,A1
- Beq.S .NoMem
- Move.L (_OutputBufLen,PC),D0
- CALL FreeMem,EXEC
- .NoMem
- Move.L (_PLAYSIDBase,PC),A1
- Cmp.L #0,A1
- Beq.S .NoPS
- CALL CloseLibrary,EXEC
- .NoPS
- Move.L (_XPKBase,PC),A1
- Cmp.L #0,A1
- Beq.S .NoXPK
- CALL CloseLibrary,EXEC
- .NoXPK
- Move.L (_REQTOOLSBase,PC),A1
- Cmp.L #0,A1
- Beq.S .NoRT
- CALL CloseLibrary,EXEC
- .NoRT
- Move.L (_MyMsgPort,PC),A4
- Cmp.L #0,A4
- Beq.S .NoMsg
- Move.L A4,A1
- CALL RemPort,EXEC
- Move.L A4,A0
- CALL DeleteMsgPort
- .NoMsg
- Rts
-
- ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- ProcessArgs: Clr.B -1(A0,D0.l)
-
- Lea _ArgString,A1
- Moveq #0,D0
- .ArgLoop Move.B (A0)+,D0
- Beq.S .Exit
- Cmp.B #'\"',D0
- Beq.S .Skip
- Bsr.S ChangeCase
- Move.B D0,(A1)+
- .Skip Bra.S .ArgLoop
- .Exit Move.B #0,(A1)+
-
- Move.L _ArgString,D0
- Bne.S .NotStop
- Move.W #CLIPS_STOP,_MsgType
- Rts
- .NotStop Cmp.L #'CHAN',D0
- Bne.S .NotChange
- Move.L _ArgString+4,D0
- Cmp.L #$47450000,D0
- Bne.S .NotChange
- Move.W #CLIPS_CHANGE,_MsgType
- Rts
- .NotChange Move.W #CLIPS_PLAY,_MsgType
- Rts
-
- ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- ChangeCase: Cmp.B #'a',D0
- Blo.S .exit
- Cmp.B #'z',D0
- Bgt.S .exit
- .change Sub.B #32,D0
- .exit Rts
-
- ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- Version: Dc.B 0,'$VER: CLI_PlaySID 0.05 (22.10.95)',0
- XPKLibrary: XPKMASTERNAME
- PSLibrary: PLAYSIDNAME
- RTLibrary: REQTOOLSNAME
- Title: Dc.B 'CLI PlaySID',0
- SongNumber: Dc.B 'Please select a new song',0
- Even
-
- ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- XPKTags: Dc.L XPK_InName,_ArgString
- Dc.L XPK_GetOutBuf,_OutputBuffer
- Dc.L XPK_GetOutLen,_OutputLength
- Dc.L XPK_GetOutBufLen,_OutputBufLen
- Dc.L XPK_PassThru,-1
- Dc.L TAG_DONE
-
- RTTags: Dc.L RTGL_Max,1
- Dc.L RTGL_Min,1
- Dc.L RTGL_TextFmt,SongNumber
- Dc.L RTGL_Flags,GLREQF_CENTERTEXT
- Dc.L RT_ReqPos,REQPOS_CENTERSCR
- Dc.L TAG_DONE
-
- ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- _EXECBase: Dc.L 0
- _XPKBase: Dc.L 0
- _PLAYSIDBase: Dc.L 0
- _REQTOOLSBase: Dc.L 0
-
- _OutputBuffer: Dc.L 0
- _OutputLength Dc.L 0
- _OutputBufLen: Dc.L 0
-
- _MyMsgPort: Dc.L 0
- _SignalSet: Dc.L 0
- _MsgReceived: Dc.L 0
-
- _SongNum: Dc.L 0
-
- _MyMsg: Ds.B MN_SIZE-2
- Dc.W 2
- _MsgType: Dc.W CLIPS_PLAY ;STOP/CHANGE
-
- ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- Section ClipsData,BSS
- _ArgString: Ds.B 256
-