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