2023-05-22 16:17:35 +02:00
|
|
|
IFND FRAMEWORK_I
|
|
|
|
FRAMEWORK_I SET 1
|
|
|
|
|
2024-09-15 17:43:33 +02:00
|
|
|
include "hardware/custom.i"
|
|
|
|
include "hardware/copper.i"
|
|
|
|
include "hardware/cia.i"
|
|
|
|
include "hardware/intbits.i"
|
|
|
|
include "hardware/dmabits.i"
|
|
|
|
include "hardware/adkbits.i"
|
|
|
|
include "hardware/blitbits.i"
|
|
|
|
include "exec/types.i"
|
|
|
|
include "exec/nodes.i"
|
|
|
|
include "exec/lists.i"
|
|
|
|
include "exec/macros.i"
|
|
|
|
include "exec/execbase.i"
|
|
|
|
include "dos/doshunks.i"
|
|
|
|
include "lvo/lvo.i"
|
|
|
|
include "framework_macros.i"
|
2023-05-22 16:17:35 +02:00
|
|
|
|
|
|
|
FWGENLVOTABLE SET 0
|
2024-09-15 17:43:33 +02:00
|
|
|
include "framework_lvos.i"
|
2023-05-22 16:17:35 +02:00
|
|
|
|
|
|
|
; error color codes
|
|
|
|
ERROR_OUTOFMEMORY = $0f00 ; one of the memory stacks ran out of memory
|
|
|
|
ERROR_MEMORYWRONGPOP = $0f80 ; nothing to pop the current direction
|
|
|
|
ERROR_INVALID_PARAMS = $0ff0 ; one of the api functions was called with invalid parameters
|
|
|
|
ERROR_TOOMANYHUNKS = $00f0 ; the executable has too many hunks. see: MAX_HUNKS
|
|
|
|
ERROR_HUNKBROKEN = $000f ; one of the executables hunks is broken (e.g. header or compressed hunk).
|
|
|
|
ERROR_DISK = $00ff ; error loading via trackloader
|
|
|
|
ERROR_FILE_NOT_FOUND = $0088 ; expected file not found
|
|
|
|
|
|
|
|
DEFB_MORE_HUNKS = 15 ; must be sign bit
|
|
|
|
DEFF_MORE_HUNKS = (1<<DEFB_MORE_HUNKS)
|
|
|
|
DEFB_CHIPMEM = 7 ; must be sign bit
|
|
|
|
DEFF_CHIPMEM = (1<<DEFB_CHIPMEM)
|
|
|
|
|
|
|
|
DEFS_TYPE = 0
|
|
|
|
DEFM_TYPE = (7<<DEFS_TYPE)
|
|
|
|
DEFF_DATAFILE = (0<<DEFS_TYPE)
|
|
|
|
DEFF_HUNK_CODE = (1<<DEFS_TYPE)
|
|
|
|
DEFF_HUNK_DATA = (2<<DEFS_TYPE)
|
|
|
|
DEFF_HUNK_BSS = (3<<DEFS_TYPE)
|
|
|
|
DEFF_HUNK_RELOC = (4<<DEFS_TYPE)
|
|
|
|
|
|
|
|
DEFS_PACKMODE = 4
|
|
|
|
DEFM_PACKMODE = (7<<DEFS_PACKMODE)
|
|
|
|
DEFF_UNPACKED = (0<<DEFS_PACKMODE)
|
|
|
|
DEFF_LZ4 = (1<<DEFS_PACKMODE) ; allows parallel loading/decrunching
|
|
|
|
DEFF_DOYNAX = (2<<DEFS_PACKMODE) ; needs to be loaded to fastmem
|
|
|
|
DEFF_ZX0 = (3<<DEFS_PACKMODE) ; needs to be loaded to fastmem
|
|
|
|
DEFF_ZSTANDARD = (4<<DEFS_PACKMODE) ; not implemented
|
|
|
|
|
|
|
|
DEFS_DELTAMODE = 8
|
|
|
|
DEFM_DELTAMODE = (3<<DEFS_DELTAMODE)
|
|
|
|
DEFF_NODELTA = (0<<DEFS_DELTAMODE)
|
|
|
|
DEFF_DELTA8 = (1<<DEFS_DELTAMODE)
|
|
|
|
DEFF_DELTA16 = (2<<DEFS_DELTAMODE) ; not implemented
|
|
|
|
DEFF_DELTA32 = (3<<DEFS_DELTAMODE) ; not implemented
|
|
|
|
|
|
|
|
DEFB_IN_PLACE = 11
|
|
|
|
DEFF_IN_PLACE = (1<<DEFB_IN_PLACE)
|
|
|
|
|
2024-09-15 17:43:33 +02:00
|
|
|
IFND FW_SOFT_IRQ_SUPPORT
|
|
|
|
FW_SOFT_IRQ_SUPPORT = 0
|
|
|
|
ENDC
|
|
|
|
|
2023-05-22 16:17:35 +02:00
|
|
|
IF (FW_STANDALONE_FILE_MODE==0)|FW_HD_TRACKMO_MODE
|
|
|
|
|
|
|
|
FW_DIRECTORY_ENTRIES_OFFSET = 512
|
|
|
|
|
|
|
|
STRUCTURE DirEntry,0
|
|
|
|
STRUCT de_Name,16
|
|
|
|
LABEL de_NextHunk
|
|
|
|
UWORD de_Flags ; see above
|
|
|
|
UBYTE de_HunkNum
|
|
|
|
UBYTE de_NumHunks ; >0 -> LoadSeg, otherwise simple data file
|
|
|
|
ULONG de_MemorySize ; memory needed
|
|
|
|
ULONG de_DiskOffset ; offset on disk (or 0 if BSS)
|
|
|
|
ULONG de_DiskLength ; load size
|
|
|
|
LABEL de_SIZEOF ; 32 -> up to 16 files per block
|
|
|
|
ENDC
|
|
|
|
|
|
|
|
IF FW_BLITTERQUEUE_SUPPORT
|
|
|
|
STRUCTURE BlitterQueueNode,0
|
|
|
|
APTR bq_Next
|
|
|
|
APTR bq_Routine
|
|
|
|
LABEL bq_Data
|
|
|
|
LABEL bq_SIZEOF
|
|
|
|
ENDC
|
|
|
|
|
|
|
|
IF FW_MULTITASKING_SUPPORT
|
|
|
|
STRUCTURE FrameworkTask,LN_SIZE
|
|
|
|
APTR ft_USP
|
|
|
|
IF FW_TOP_BOTTOM_MEM_SECTIONS
|
|
|
|
UWORD ft_MemDirection
|
|
|
|
ENDC
|
|
|
|
LABEL ft_StackStart
|
|
|
|
STRUCT ft_Stack,512-ft_StackStart
|
|
|
|
LABEL ft_StackEnd
|
|
|
|
LABEL ft_SIZEOF
|
|
|
|
ENDC
|
|
|
|
|
|
|
|
IF FW_DYNAMIC_MEMORY_SUPPORT
|
|
|
|
STRUCTURE MemTopBottom,0
|
|
|
|
APTR mtb_CurrLevelPtr ; Top (from $80000 down) or Bottom (from $400 up) pointer
|
|
|
|
APTR mtb_MinLevelPtr ; Min Top or Bottom pointer on free all
|
|
|
|
LABEL mtb_SIZEOF
|
|
|
|
|
|
|
|
STRUCTURE ChipFastMemState,0
|
|
|
|
STRUCT cf_ChipMemLevel,mtb_SIZEOF
|
|
|
|
STRUCT cf_FastMemLevel,mtb_SIZEOF
|
|
|
|
LABEL cf_SIZEOF
|
|
|
|
ENDC
|
|
|
|
|
|
|
|
IF FW_PALETTE_LERP_SUPPORT
|
|
|
|
STRUCTURE Lerp,0 ; don't change order!
|
|
|
|
WORD le_Add
|
|
|
|
UWORD le_Current
|
|
|
|
LABEL le_SIZEOF
|
|
|
|
|
|
|
|
STRUCTURE ColorLerp,0 ; don't change order!
|
|
|
|
UWORD cl_Color
|
|
|
|
WORD cl_Steps ; negative in first entry means fading done
|
|
|
|
STRUCT cl_Red,le_SIZEOF
|
|
|
|
STRUCT cl_Green,le_SIZEOF
|
|
|
|
STRUCT cl_Blue,le_SIZEOF
|
|
|
|
LABEL cl_SIZEOF
|
|
|
|
ENDC
|
|
|
|
|
|
|
|
STRUCTURE FrameWork,0
|
|
|
|
UWORD fw_FrameCounter
|
|
|
|
|
|
|
|
APTR fw_PartFwBase
|
|
|
|
APTR fw_PrimaryFwBase
|
|
|
|
ULONG fw_PartDataSize
|
|
|
|
APTR fw_GlobalUserData ; you can use this for your custom trackloading global data area
|
|
|
|
|
|
|
|
IF FW_DYNAMIC_MEMORY_SUPPORT
|
|
|
|
IF FW_TOP_BOTTOM_MEM_SECTIONS
|
|
|
|
UWORD fw_MainMemDirection
|
|
|
|
ENDC
|
|
|
|
STRUCT fw_MemBottomStack,cf_SIZEOF*FW_MAX_MEMORY_STATES
|
|
|
|
STRUCT fw_MemTopStack,cf_SIZEOF*FW_MAX_MEMORY_STATES
|
|
|
|
ULONG fw_MaxChipUsed
|
|
|
|
ULONG fw_MaxFastUsed
|
|
|
|
UWORD fw_CurrMemBottomLevel
|
|
|
|
UWORD fw_CurrMemTopLevel
|
|
|
|
ENDC
|
|
|
|
|
|
|
|
APTR fw_ChipMemStack
|
|
|
|
APTR fw_ChipMemStackEnd
|
|
|
|
APTR fw_FastMemStack
|
|
|
|
APTR fw_FastMemStackEnd
|
|
|
|
|
|
|
|
APTR fw_EmptySprite
|
|
|
|
APTR fw_BaseCopperlist
|
|
|
|
|
|
|
|
APTR fw_VBR
|
|
|
|
APTR fw_DemoAbortStackPointer
|
|
|
|
BOOL fw_AgaChipset
|
2024-09-15 17:43:33 +02:00
|
|
|
BOOL fw_DisableLMBExit
|
2023-05-22 16:17:35 +02:00
|
|
|
IF FW_STANDALONE_FILE_MODE
|
|
|
|
APTR fw_OrigBaseMemAllocAddr
|
|
|
|
ULONG fw_OrigBaseMemAllocLength
|
|
|
|
APTR fw_OrigChipMemAllocAddr
|
|
|
|
ULONG fw_OrigChipMemAllocLength
|
|
|
|
APTR fw_OrigFastMemAllocAddr
|
|
|
|
ULONG fw_OrigFastMemAllocLength
|
|
|
|
APTR fw_WBMessage
|
|
|
|
APTR fw_OldGfxView
|
|
|
|
APTR fw_DosBase
|
|
|
|
APTR fw_GfxBase
|
|
|
|
STRUCT fw_OldControls,2*4 ; intena, intreq, dmacon, adkcon
|
|
|
|
APTR fw_OldSystemVBlankIRQ
|
2024-09-15 17:43:33 +02:00
|
|
|
IF FW_SOFT_IRQ_SUPPORT
|
|
|
|
APTR fw_OldSystemSoftIRQ
|
|
|
|
ENDC
|
|
|
|
IF FW_AUDIO_IRQ_SUPPORT
|
|
|
|
APTR fw_OldSystemAudioIRQ
|
|
|
|
ENDC
|
2023-05-22 16:17:35 +02:00
|
|
|
APTR fw_OldCiaIRQ
|
|
|
|
APTR fw_CiaBResource
|
|
|
|
STRUCT fw_SysFriendlyInterrupt,IS_SIZE
|
|
|
|
ENDC
|
|
|
|
|
|
|
|
STRUCT fw_EmptyRegs,4*16
|
|
|
|
|
|
|
|
IF (FW_STANDALONE_FILE_MODE==0)|FW_HD_TRACKMO_MODE
|
|
|
|
APTR fw_DirBuffer
|
|
|
|
APTR fw_TrackBuffer
|
|
|
|
IF FW_MULTITASKING_SUPPORT
|
|
|
|
APTR fw_TrackloaderTask
|
|
|
|
ENDC
|
|
|
|
ENDC
|
|
|
|
IFEQ FW_STANDALONE_FILE_MODE
|
|
|
|
ULONG fw_ExpectedFirstFileID
|
|
|
|
APTR fw_MfmTrackBuffer
|
|
|
|
UWORD fw_CurrentCylinder
|
|
|
|
UWORD fw_CurrentHead
|
|
|
|
UWORD fw_CurrentDrive
|
|
|
|
UWORD fw_LastMfmTrack
|
|
|
|
UWORD fw_LastTrack
|
|
|
|
UWORD fw_MfmDoPrefetch
|
|
|
|
BOOL fw_MfmReadingTriggered
|
|
|
|
BOOL fw_MfmReadingDone
|
|
|
|
BOOL fw_DriveMotorOn
|
|
|
|
ULONG fw_DriveSettleTime
|
|
|
|
ULONG fw_TrackChecksum
|
|
|
|
UWORD fw_TrackloaderIdle
|
|
|
|
IF FW_TRACKMO_LZ4_SUPPORT|FW_TRACKMO_LZ4_DLT8_SUPPORT
|
|
|
|
UWORD fw_TrackLz4State
|
|
|
|
UWORD fw_TrackLz4LiteralLength ; if we have literals >64 KB, we're f*cked anyway
|
|
|
|
UWORD fw_TrackLz4MatchLength ; duplicating >64 KB is also very improbable
|
|
|
|
ULONG fw_TrackLz4Offset
|
|
|
|
UBYTE fw_TrackLz4Delta8Value
|
|
|
|
ALIGNWORD
|
|
|
|
ENDC
|
|
|
|
ENDC
|
|
|
|
|
|
|
|
APTR fw_DefaultIRQ
|
|
|
|
IF FW_VBL_IRQ_SUPPORT
|
|
|
|
APTR fw_VBlankIRQ
|
|
|
|
ENDC
|
|
|
|
IF FW_COPPER_IRQ_SUPPORT
|
|
|
|
APTR fw_CopperIRQ
|
|
|
|
ENDC
|
2024-09-15 17:43:33 +02:00
|
|
|
IF FW_SOFT_IRQ_SUPPORT
|
|
|
|
APTR fw_SoftIRQ
|
|
|
|
ENDC
|
|
|
|
IF FW_AUDIO_IRQ_SUPPORT
|
|
|
|
APTR fw_AudioIRQ
|
|
|
|
ENDC
|
2023-05-22 16:17:35 +02:00
|
|
|
IF FW_MULTITASKING_SUPPORT
|
|
|
|
STRUCT fw_Tasks,MLH_SIZE
|
|
|
|
UWORD fw_MainCurrentFrame
|
|
|
|
APTR fw_BackgroundTask
|
|
|
|
APTR fw_MultitaskingIRQ
|
|
|
|
APTR fw_BlitterTaskIRQ
|
|
|
|
APTR fw_PrimaryUSP
|
|
|
|
APTR fw_BackgroundTaskUSP
|
|
|
|
ENDC
|
|
|
|
|
2024-09-15 17:43:33 +02:00
|
|
|
IFEQ FW_PALETTE_LERP_SUPPORT-2
|
|
|
|
APTR fw_BlueNoiseTablePtr
|
|
|
|
UWORD fw_BlueNoisePos
|
|
|
|
ENDC
|
|
|
|
|
2023-05-22 16:17:35 +02:00
|
|
|
IF FW_BLITTERQUEUE_SUPPORT
|
|
|
|
APTR fw_BlitterQueueIRQ
|
|
|
|
APTR fw_BlitterQueueWritePtr ; don't change order
|
|
|
|
APTR fw_BlitterQueueHeadPtr ; don't change order
|
|
|
|
APTR fw_BlitterQueueReadPtr ; don't change order
|
|
|
|
ENDC
|
|
|
|
|
|
|
|
IF (FW_STANDALONE_FILE_MODE==0)|FW_HD_TRACKMO_MODE
|
|
|
|
STRUCT fw_HunkPointers,4*FW_MAX_DOS_HUNKS
|
|
|
|
STRUCT fw_PreloadHunkPointers,4*FW_MAX_DOS_HUNKS
|
|
|
|
STRUCT fw_PreloadRelocHunkPointers,4*FW_MAX_DOS_HUNKS
|
|
|
|
|
|
|
|
APTR fw_LastLoadedPart
|
|
|
|
APTR fw_PrePartLaunchHook
|
|
|
|
APTR fw_PrepNextPartHook
|
|
|
|
ENDC
|
|
|
|
|
|
|
|
IF FW_SINETABLE_SUPPORT
|
|
|
|
APTR fw_SinTable
|
|
|
|
APTR fw_CosTable
|
|
|
|
ENDC
|
|
|
|
|
|
|
|
IF FW_SCRIPTING_SUPPORT
|
|
|
|
APTR fw_ScriptPointer
|
|
|
|
UWORD fw_ScriptFrameOffset
|
|
|
|
IF FW_MUSIC_SUPPORT
|
|
|
|
APTR fw_MusicScriptPointer
|
|
|
|
ENDC
|
|
|
|
ENDC
|
|
|
|
|
|
|
|
IF FW_MUSIC_SUPPORT
|
2024-09-15 17:43:33 +02:00
|
|
|
APTR fw_MusicTickRoutine
|
2023-05-22 16:17:35 +02:00
|
|
|
APTR fw_MusicData
|
|
|
|
APTR fw_MusicSamples
|
|
|
|
|
|
|
|
UWORD fw_MusicFrameCount
|
|
|
|
UWORD fw_MusicPatternRow
|
|
|
|
BOOL fw_MusicPatternNewRow
|
|
|
|
|
|
|
|
IF (FW_MUSIC_PLAYER_CHOICE==1)|(FW_MUSIC_PLAYER_CHOICE==2)
|
|
|
|
APTR fw_LspDmaConPatch ; patch address
|
|
|
|
APTR fw_LspCodeTableAddr ; code table addr
|
|
|
|
; do not reorder!
|
|
|
|
UWORD fw_LspCurrentBpm ; current BPM
|
|
|
|
APTR fw_LspInstruments ; LSP instruments table addr
|
|
|
|
UWORD fw_LspEscCodeRewind
|
|
|
|
UWORD fw_LspEscCodeSetBpm
|
|
|
|
UWORD fw_LspEscCodeGetPos
|
|
|
|
ULONG fw_LspMusicLength ; music len in frame ticks
|
|
|
|
UWORD fw_LspSeqCount
|
|
|
|
APTR fw_LspSeqTable
|
|
|
|
UWORD fw_LspCurrentSeq
|
|
|
|
APTR fw_LspStreamBase ; start of stream info
|
|
|
|
APTR fw_LspByteStream ; byte stream
|
|
|
|
APTR fw_LspWordStream ; word stream
|
|
|
|
APTR fw_LspByteStreamLoop ; byte stream loop point
|
|
|
|
APTR fw_LspWordStreamLoop ; word stream loop point
|
|
|
|
; END of fixed ordering
|
|
|
|
STRUCT fw_LspResetv,4*4 ; Loop loading data ptr
|
|
|
|
IF FW_MUSIC_PLAYER_CHOICE==2
|
|
|
|
UWORD fw_LspLastCiaBpm
|
|
|
|
ULONG fw_LspCiaClock
|
|
|
|
ENDC
|
|
|
|
ENDC
|
|
|
|
|
2024-09-15 17:43:33 +02:00
|
|
|
IF (FW_MUSIC_PLAYER_CHOICE>=4)&&(FW_MUSIC_PLAYER_CHOICE<=6)
|
2023-05-22 16:17:35 +02:00
|
|
|
APTR fw_PretrackerMyPlayer
|
|
|
|
APTR fw_PretrackerMySong
|
|
|
|
ULONG fw_PretrackerProgress
|
2024-09-15 17:43:33 +02:00
|
|
|
IF (FW_MUSIC_PLAYER_CHOICE>=5)
|
2023-05-22 16:17:35 +02:00
|
|
|
APTR fw_PretrackerCopperlist
|
|
|
|
ENDC
|
2024-09-15 17:43:33 +02:00
|
|
|
IF (FW_MUSIC_PLAYER_CHOICE==6)
|
|
|
|
APTR fw_PretrackerBgTask
|
|
|
|
APTR fw_PretrackerCopperlistStart
|
|
|
|
APTR fw_PretrackerCopperlistEnd
|
|
|
|
APTR fw_PretrackerCopperReadPtr
|
|
|
|
APTR fw_PretrackerCopperWritePtr
|
|
|
|
ENDC
|
|
|
|
ENDC
|
2023-05-22 16:17:35 +02:00
|
|
|
ENDC
|
|
|
|
|
|
|
|
IFD gbd_SIZEOF
|
|
|
|
STRUCT fw_GlobalBonusData,gbd_SIZEOF
|
|
|
|
ENDC
|
|
|
|
ALIGNLONG
|
|
|
|
LABEL fw_SIZEOF
|
|
|
|
|
|
|
|
ENDC ; FRAMEWORK_I
|