mirror of
https://github.com/antoinevignau/source.git
synced 2025-01-08 13:29:45 +00:00
1 line
3.6 KiB
ArmAsm
Executable File
1 line
3.6 KiB
ArmAsm
Executable File
|
|
load 'macros.dump'
|
|
include 'driver.equ'
|
|
|
|
include 'pl.equ'
|
|
;-----------------------------------------------
|
|
;
|
|
; Imported addresses
|
|
;
|
|
;-----------------------------------------------
|
|
|
|
IMPORT X_CopyOneHandle
|
|
IMPORT X_DisposeThread
|
|
IMPORT P_CopyObjList
|
|
IMPORT P_MakePict
|
|
IMPORT T_CpyOrClrObj
|
|
IMPORT T_ReThread
|
|
|
|
;-----------------------------------------------
|
|
;
|
|
; Forward addresses and entries
|
|
;
|
|
;-----------------------------------------------
|
|
|
|
ENTRY P_CopyPLScrap
|
|
ENTRY P_DelObjList
|
|
ENTRY P_DelPLScrap
|
|
ENTRY P_PL2Pict
|
|
ENTRY T_Dispose
|
|
|
|
|
|
|
|
P_ScrapJumps PROC EXPORT
|
|
|
|
DC.L P_CopyPLScrap
|
|
DC.L P_DelPLScrap
|
|
DC.L P_PL2Pict
|
|
|
|
ENDP
|
|
|
|
|
|
|
|
P_ScrapData PROC EXPORT
|
|
EXPORT P_QDPict
|
|
EXPORT P_ConvErr
|
|
|
|
P_QDPict DS.B 4
|
|
P_ConvErr DS.B 2
|
|
|
|
ENDP
|
|
|
|
|
|
|
|
|
|
;------------------------------------------------------------------------------
|
|
;
|
|
; P_CopyPLScrap (ScrapHdl:l) : CopyHdl:l
|
|
;
|
|
|
|
P_CopyPLScrap PROC EXPORT
|
|
|
|
input ScrapHdl:l
|
|
output CopyHdl:l
|
|
error Err
|
|
|
|
begin
|
|
|
|
call P_CopyObjList,in=(ScrapHdl:l,#1:w),out=(CopyHdl:l),err=(Err)
|
|
|
|
return
|
|
ENDP
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
;
|
|
; P_DelPLScrap (ObjHdl:l,KillData:w)
|
|
;
|
|
|
|
P_DelPLScrap PROC EXPORT
|
|
;Using P_ObjData
|
|
;Using P_ScrapData
|
|
|
|
input ObjHdl:l,KillData:w
|
|
local ObjPtr:l,NextObj:l
|
|
|
|
begin +b
|
|
|
|
cpzl P_QDPict
|
|
beq DoIt
|
|
tool _KillPicture,in=(P_QDPict:l)
|
|
stzl P_QDPict
|
|
|
|
DoIt
|
|
call P_DelObjList,in=(ObjHdl:l,KillData:w,#1:w)
|
|
|
|
return
|
|
ENDP
|
|
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
;
|
|
; P_PL2Pict (ObjHdl:l) : PictHdl:l
|
|
;
|
|
|
|
P_PL2Pict PROC EXPORT
|
|
;Using P_ScrapData
|
|
|
|
input ObjHdl:l
|
|
output PictHdl:l
|
|
error Err
|
|
|
|
begin +b
|
|
|
|
cpzl P_QDPict
|
|
beq DoIt
|
|
|
|
moveword P_ConvErr,Err
|
|
bne Exit
|
|
|
|
call X_CopyOneHandle,in=(P_QDPict:l),out=(PictHdl:l),err=(Err)
|
|
bra Exit
|
|
|
|
DoIt
|
|
call P_MakePict,in=(ObjHdl:l),out=(PictHdl:l),err=(Err)
|
|
|
|
Exit
|
|
return
|
|
ENDP
|
|
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
;
|
|
; P_DelObjList (ObjHdl:l,KillData:w,All:w)
|
|
;
|
|
|
|
P_DelObjList PROC EXPORT
|
|
;Using P_ObjData
|
|
;Using P_ScrapData
|
|
|
|
input ObjHdl:l,KillData:w,All:w
|
|
local ObjPtr:l,NextObj:l
|
|
|
|
begin
|
|
|
|
|
|
WhileLoop
|
|
cpzl ObjHdl
|
|
jeq Exit
|
|
|
|
movelong [ObjHdl],ObjPtr
|
|
movelong [ObjPtr],NextObj
|
|
|
|
lda KillData
|
|
beq TrashIt
|
|
|
|
moveword [ObjPtr]:#P_Type,a
|
|
cmp #P_ALPHA
|
|
bne TryPict
|
|
|
|
call T_Dispose,in=(ObjHdl:l,All:w)
|
|
bra TrashIt
|
|
|
|
TryPict cmp #P_PICTURE
|
|
bne TrashIt
|
|
|
|
tool _KillPicture,in=([ObjPtr]:#P_PictHandle:l)
|
|
|
|
|
|
TrashIt
|
|
tool _DisposeHandle,in=(ObjHdl:l)
|
|
movelong NextObj,ObjHdl
|
|
brl WhileLoop
|
|
|
|
|
|
Exit return
|
|
ENDP
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;----------------------------------------------------------------------------
|
|
;
|
|
; T_Dispose (ObjHdl:l,All:w)
|
|
;
|
|
; Can call X_DisposeThread if there are no objects attached to this one.
|
|
|
|
T_Dispose PROC EXPORT
|
|
;Using P_ObjData
|
|
|
|
input ObjHdl:l,All:w
|
|
local ObjPtr:l,NThread:l,PThread:l,Ptr:l
|
|
|
|
begin +b
|
|
|
|
movelong [ObjHdl],ObjPtr
|
|
movelong [ObjPtr]:#P_NThread,NThread
|
|
movelong [ObjPtr]:#P_PThread,PThread
|
|
|
|
lda All
|
|
beq NotAll
|
|
|
|
cpzl PThread
|
|
beq KillThread
|
|
lda PThread
|
|
and PThread+2
|
|
cmp #$FFFF
|
|
beq Killthread
|
|
brl Exit
|
|
|
|
NotAll
|
|
lda NThread
|
|
ora NThread+2
|
|
ora PThread
|
|
ora PThread+2
|
|
bne Linked
|
|
|
|
|
|
KillThread
|
|
call X_DisposeThread,in=([ObjPtr]:#P_ParagHdl:l,#1:w)
|
|
brl Exit
|
|
|
|
|
|
|
|
Linked
|
|
call T_CpyOrClrObj,in=(ObjPtr:l,#0:w),out=(a:l)
|
|
|
|
cpzl PThread
|
|
beq NoPrev
|
|
movelong [PThread],Ptr
|
|
movelong NThread,[Ptr]:#P_NThread
|
|
NoPrev
|
|
|
|
cpzl NThread
|
|
beq NoNext
|
|
movelong [NThread],Ptr
|
|
movelong PThread,[Ptr]:#P_PThread
|
|
NoNext
|
|
|
|
|
|
cpzl PThread
|
|
beq AtStart
|
|
pushlong PThread
|
|
bra Cont
|
|
AtStart pushlong NThread
|
|
Cont jsl T_ReThread
|
|
|
|
|
|
Exit return
|
|
ENDP
|
|
END
|
|
|