home *** CD-ROM | disk | FTP | other *** search
- include "exec/types.i"
- include "exec/initializers.i"
- include "libraries/dos.i"
- include "exec/resident.i"
- include "streplay_lib.i"
-
- call MACRO
- xref _LVO\1
- jsr _LVO\1(a6)
- ENDM
-
- section "node",CODE
- moveq #20,d0
- rts
-
- ROMTag:
- dc.w RTC_MATCHWORD
- dc.l ROMTag
- dc.l EndCode
- dc.b RTF_AUTOINIT
- dc.b 33
- dc.b NT_LIBRARY
- dc.b 0
- dc.l libname,ids
- dc.l Init
- libname: dc.b "streplay.library",0
- ids: dc.b "STReplay.Library V33.8 Kludged 2.10.89 by Olli, dem Größten",13,10,0
- even
- Init: dc.l strb_SIZEOF
- dc.l functab,datatab,.InitLib
- functab:
- dc.l .OpenLib,.CloseLib,.ExpungeLib,.ExtFuncLib,
- dc.l .LoadModule,.UnLoadModule,.IsModule
- dc.l .Start,.Stop,.IsPlaying
- dc.l -1
- datatab:
- INITBYTE LN_TYPE,NT_LIBRARY
- INITLONG LN_NAME,libname
- INITBYTE LIB_FLAGS,LIBF_SUMUSED!LIBF_CHANGED
- INITWORD LIB_VERSION,33
- INITWORD LIB_REVISION,8
- INITLONG LIB_IDSTRING,ids
- dc.l 0
-
- .InitLib:
- move.l d0,a1
- move.l a0,strb_SegList(a1)
- clr.l strb_Module(a1)
- clr.w strb_Running(a1)
- rts
-
- freemodule:
- move.l strb_Module(a6),d0
- beq.s ret
- move.l a6,-(sp)
- move.l d0,a1
- move.l strb_Len(a6),d0
- move.l 4,a6
- call FreeMem
- move.l (sp)+,a6
- clr.l strb_Module(a6)
- rts
- .OpenLib:
- addq.w #1,LIB_OPENCNT(a6)
- bclr #LIBB_DELEXP,LIB_FLAGS(a6)
- move.l a6,d0
- ret: rts
- .CloseLib:
- moveq #0,d0
- subq.w #1,LIB_OPENCNT(a6)
- bne.s ret
- btst #LIBB_DELEXP,LIB_FLAGS(a6)
- beq.s ret
-
- .ExpungeLib
- tst.w LIB_OPENCNT(a6)
- beq.s remit
- bset #LIBB_DELEXP,LIB_FLAGS(a6)
- moveq #0,d0
- rts
- remit:
- bsr .Stop
- bsr freemodule
- movem.l a5/d7,-(sp)
- move.l a6,a5
- move.l 4,a6
- move.l a5,a1
- call Remove
- move.l strb_SegList(a5),d7
- move.l a5,a1
- moveq #0,d0
- move.w LIB_NEGSIZE(a5),d0
- sub.l d0,a1
- add.w LIB_POSSIZE(a5),d0
- call FreeMem
- move.l d7,d0
- movem.l (sp)+,a5/d7
- rts
-
- .ExtFuncLib:
- moveq #0,d0
- rts
-
- ;
- ;
- ;
-
- .IsPlaying:
- move.w strb_Running(a6),d0
- ext.l d0
- rts
-
- .IsModule
- move.l strb_Module(a6),d0
- rts
-
- .LoadModule:
- movem.l d2-d5/a5-a6,-(sp)
- move.l a0,d3
- bsr .Stop
- bsr freemodule
- move.l a6,a5
- move.l 4,a6
- lea dosname(pc),a1
- moveq #0,d0
- call OpenLibrary
- move.l d0,d4
- move.l d0,a6
- move.l d3,d1
- move.l #1005,d2
- call Open
- move.l d0,d5
- bne.s fileopen
- moveq #-1,d0
- lret:
- movem.l (sp)+,d2-d5/a5-a6
- rts
- fileopen:
- move.l d5,d1
- moveq #0,d2
- move.l #OFFSET_END,d3
- call Seek
- move.l d5,d1
- moveq #0,d2
- move.l #OFFSET_BEGINNING,d3
- call Seek
- move.l d0,strb_Len(a5)
- moveq #2,d1 ; ja,ja; manscher lehrnst nie
- move.l 4,a6
- call AllocMem
- move.l d4,a6
- move.l d0,strb_Module(a5)
- bne.s allocok
- move.l d5,d1
- call Close
- moveq #-2,d0
- bra.s lret
- allocok:
- move.l strb_Len(a5),d3
- move.l d5,d1
- move.l d0,d2
- call Read
- move.l d5,d1
- call Close
- moveq #0,d0
- bra.s lret
-
- .UnLoadModule:
- bsr.s .Stop
- bra freemodule
-
- .Start
- tst.l strb_Module(a6)
- beq.s retu
- tst.w strb_Running(a6)
- bne.s retu
- move.w #'RZ',strb_Running(a6)
- xref mt_start
- jmp mt_start
- retu: rts
-
- .Stop
- tst.l strb_Module(a6)
- beq.s retu
- tst.w strb_Running(a6)
- beq.s retu
- clr.w strb_Running(a6)
- jmp mt_brems
- xref mt_brems
-
- dosname:
- dc.b "dos.library",0
- even
- EndCode:
- END
-