home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
back2roots/padua
/
padua.7z
/
padua
/
audio
/
streplay33.801.lzh
/
Source
/
stlib.asm
< prev
Wrap
Assembly Source File
|
1991-11-24
|
4KB
|
241 lines
include "exec/types.i"
include "exec/initializers.i"
include "libraries/dos.i"
include "exec/resident.i"
include "exec/memory.i"
include "streplay_lib.i"
xdef libbase
xdef .UnLoadModule
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.801 Kludged 2.10.89 by Olli, dem Gr÷▀ten, mod 24.11.91 Jonathan Potter",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,.PlayOnce
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,801
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
move.l a6,libbase
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 ppname(pc),a1
moveq #0,d0
call OpenLibrary
tst.l d0
beq.s nopp
move.l d0,a6
move.l d0,d4
move.l d3,a0
moveq #DECR_NONE,d0
move.l #MEMF_CLEAR|MEMF_CHIP,d1
lea strb_Module(a5),a1
lea strb_Len(a5),a2
move.l #0,a3
jsr _LVOppLoadData(a6)
tst.l d0
beq.s lret
cmp.l #PP_OPENERR,d0
beq.s lret
cmp.l #PP_NOMEMORY,d0
bne.s enderrconv
move.l #STLE_NOMEM,d0
beq.s lret
enderrconv:
move.l a6,a1
move.l 4,a6
call CloseLibrary
nopp:
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:
move.l d4,a1
move.l 4,a6
call CloseLibrary
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
.PlayOnce
move.w #1,strb_OnlyOnce(a6)
bra startsong
.Start
move.w #0,strb_OnlyOnce(a6)
startsong:
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
ppname:
dc.b "powerpacker.library",0
even
libbase: dc.l 0
EndCode:
END