This post attempts to counter the claims that Ilkka 'itix' Lehtoranta would have somehow pirated the OS4.x development files or would have lied while developing the
OS4Emu 2.0.
While I have no detailed knowledge of the OS4.x itself, I'm making some assumptions here:
1. I assume that the latest OS4 SDK includes OS 4.0 function calls and structures.
2. I assume that if some new functions or structures not included in the OS 4.0 SDK are found, they are included in the OS 4.1 SDK.
I know it might well be that OS4.0 already implements most of this functionality and that it has only stayed private for now. Regardless, since it has stayed private, one can assume it has not been deemed ready for use until the new OS4.1 release (for reasons unknown).
The claim has been that Ilkka would not have been able to obtain any information about the new function calls or OS structures without having the access to the OS4 internal and private files, which are obviously guarded quite well.
It might come as a surprise that one of the leaking binaries was in fact released by
Xeron himself.
Observe:
(The following was done under linux, but the tools used are available for most platforms. Just the element names are displayed here, for brevity.)
% wget http://www.petergordon.org.uk/files/ht14.lha
% lha -xi ht14.lha HivelyTracker/Replayer/play_hvl
% readelf --debug-dump=info play_hvl | grep DW_AT_name > names.txt
Now lets examine names.txt
Exec interface:
<10fb> DW_AT_name : ExecIFace
<110a> DW_AT_name : Data
<1119> DW_AT_name : (indirect string, offset: 0x14): Obtain
<1127> DW_AT_name : (indirect string, offset: 0x1b): Release
<1135> DW_AT_name : (indirect string, offset: 0x36): Expunge
<1143> DW_AT_name : Clone
<1153> DW_AT_name : AddHead
<1165> DW_AT_name : AddMemHandler
<117d> DW_AT_name : AddMemList
<1192> DW_AT_name : AddTail
<11a4> DW_AT_name : AllocAbs
<11b7> DW_AT_name : Allocate
<11ca> DW_AT_name : AllocEntry
<11df> DW_AT_name : AllocMem
<11f2> DW_AT_name : AllocPooled
<1208> DW_AT_name : AllocVec
<121b> DW_AT_name : AllocVecPooled
<1234> DW_AT_name : AvailMem
<1247> DW_AT_name : CopyMem
<1259> DW_AT_name : CopyMemQuick
<1271> DW_AT_name : CreatePool
<1287> DW_AT_name : Deallocate
<129d> DW_AT_name : DeletePool
<12b3> DW_AT_name : Enqueue
<12c6> DW_AT_name : FindName
<12da> DW_AT_name : FindIName
<12ef> DW_AT_name : Forbid
<1301> DW_AT_name : FreeEntry
<1316> DW_AT_name : FreeMem
<1329> DW_AT_name : FreePooled
<133f> DW_AT_name : FreeVec
<1352> DW_AT_name : FreeVecPooled
<136b> DW_AT_name : InitData
<137f> DW_AT_name : InitStruct
<1395> DW_AT_name : Insert
<13a7> DW_AT_name : MakeInterface
<13c0> DW_AT_name : MakeInterfaceTags
<13dd> DW_AT_name : Permit
<13ef> DW_AT_name : RawDoFmt
<1403> DW_AT_name : RemHead
<1416> DW_AT_name : RemMemHandler
<142f> DW_AT_name : Remove
<1441> DW_AT_name : RemTail
<1454> DW_AT_name : TypeOfMem
<1469> DW_AT_name : InitResident
<1481> DW_AT_name : InitCode
<1495> DW_AT_name : SumKickData
<14ac> DW_AT_name : AddTask
<14bf> DW_AT_name : AddTaskTags
<14d6> DW_AT_name : Disable
<14e9> DW_AT_name : Enable
<14fb> DW_AT_name : Private1
<150f> DW_AT_name : FindTask
<1523> DW_AT_name : RemTask
<1536> DW_AT_name : SetTaskPri
<154c> DW_AT_name : StackSwap
<1561> DW_AT_name : AllocSignal
<1578> DW_AT_name : FreeSignal
<158e> DW_AT_name : SetExcept
<15a3> DW_AT_name : SetSignal
<15b8> DW_AT_name : Signal
<15ca> DW_AT_name : Wait
<15da> DW_AT_name : AddPort
<15ed> DW_AT_name : CreatePort
<1603> DW_AT_name : CreateMsgPort
<161c> DW_AT_name : DeletePort
<1632> DW_AT_name : DeleteMsgPort
<164b> DW_AT_name : FindPort
<165f> DW_AT_name : GetMsg
<1671> DW_AT_name : PutMsg
<1683> DW_AT_name : RemPort
<1696> DW_AT_name : ReplyMsg
<16aa> DW_AT_name : WaitPort
<16be> DW_AT_name : Cause
<16cf> DW_AT_name : AddSemaphore
<16e7> DW_AT_name : AttemptSemaphore
<1703> DW_AT_name : AttemptSemaphoreShared
<1725> DW_AT_name : FindSemaphore
<173e> DW_AT_name : InitSemaphore
<1757> DW_AT_name : ObtainSemaphore
<1772> DW_AT_name : ObtainSemaphoreList
<1791> DW_AT_name : ObtainSemaphoreShared
<17b2> DW_AT_name : Procure
<17c5> DW_AT_name : ReleaseSemaphore
<17e1> DW_AT_name : ReleaseSemaphoreList
<1801> DW_AT_name : RemSemaphore
<1819> DW_AT_name : Vacate
<182b> DW_AT_name : CreateTask
<1841> DW_AT_name : CreateTaskTags
<185b> DW_AT_name : DeleteTask
<1871> DW_AT_name : SumLibrary
<1887> DW_AT_name : CreateLibrary
<18a0> DW_AT_name : CreateLibraryTags
<18bd> DW_AT_name : OpenLibrary
<18d4> DW_AT_name : CloseLibrary
<18ec> DW_AT_name : AddLibrary
<1902> DW_AT_name : RemLibrary
<1918> DW_AT_name : AddDevice
<192d> DW_AT_name : RemDevice
<1942> DW_AT_name : GetInterface
<195a> DW_AT_name : GetInterfaceTags
<1976> DW_AT_name : DropInterface
<198f> DW_AT_name : AddInterface
<19a7> DW_AT_name : RemInterface
<19bf> DW_AT_name : SumInterface
<19d7> DW_AT_name : FindResident
<19ef> DW_AT_name : SetMethod
<1a04> DW_AT_name : DeleteInterface
<1a1f> DW_AT_name : DeleteLibrary
<1a38> DW_AT_name : SetFunction
<1a4f> DW_AT_name : CacheClearE
<1a66> DW_AT_name : CacheClearU
<1a7d> DW_AT_name : MakeFunctions
<1a96> DW_AT_name : OpenDevice
<1aac> DW_AT_name : CloseDevice
<1ac3> DW_AT_name : CreateIORequest
<1ade> DW_AT_name : DeleteIORequest
<1af9> DW_AT_name : AbortIO
<1b0c> DW_AT_name : CheckIO
<1b1f> DW_AT_name : DoIO
<1b2f> DW_AT_name : SendIO
<1b41> DW_AT_name : BeginIO
<1b54> DW_AT_name : WaitIO
<1b66> DW_AT_name : AddResource
<1b7d> DW_AT_name : RemResource
<1b94> DW_AT_name : OpenResource
<1bac> DW_AT_name : AddIntServer
<1bc4> DW_AT_name : RemIntServer
<1bdc> DW_AT_name : SetIntVector
<1bf4> DW_AT_name : ObtainQuickVector
<1c11> DW_AT_name : Alert
<1c22> DW_AT_name : SuperState
<1c38> DW_AT_name : UserState
<1c4d> DW_AT_name : Supervisor
<1c63> DW_AT_name : SetTaskTrap
<1c7a> DW_AT_name : AllocTrap
<1c8f> DW_AT_name : FreeTrap
<1ca3> DW_AT_name : GetCC
<1cb4> DW_AT_name : SetSR
<1cc5> DW_AT_name : AVL_AddNode
<1cdc> DW_AT_name : AVL_FindFirstNode
<1cf9> DW_AT_name : AVL_FindLastNode
<1d15> DW_AT_name : AVL_FindNextNodeByAddress
<1d3a> DW_AT_name : AVL_FindNextNodeByKey
<1d5b> DW_AT_name : AVL_FindNode
<1d73> DW_AT_name : AVL_FindPrevNodeByAddress
<1d98> DW_AT_name : AVL_FindPrevNodeByKey
<1db9> DW_AT_name : AVL_RemNodeByAddress
<1dd9> DW_AT_name : AVL_RemNodeByKey
<1df5> DW_AT_name : CacheControl
<1e0d> DW_AT_name : LockMem
<1e20> DW_AT_name : UnlockMem
<1e35> DW_AT_name : ReallocVec
<1e4b> DW_AT_name : CachePreDMA
<1e62> DW_AT_name : CachePostDMA
<1e7a> DW_AT_name : StartDMA
<1e8e> DW_AT_name : EndDMA
<1ea0> DW_AT_name : GetDMAList
<1eb6> DW_AT_name : AddTrackable
<1ece> DW_AT_name : FindTrackable
<1ee7> DW_AT_name : RemTrackable
<1eff> DW_AT_name : DeleteTrackable
<1f1a> DW_AT_name : AllocSysObject
<1f34> DW_AT_name : AllocSysObjectTags
<1f52> DW_AT_name : FreeSysObject
<1f6b> DW_AT_name : SuspendTask
<1f82> DW_AT_name : RestartTask
<1f99> DW_AT_name : MoveList
<1fad> DW_AT_name : NewList
<1fc0> DW_AT_name : NewMinList
<1fd6> DW_AT_name : ColdReboot
<1fec> DW_AT_name : MakeLibrary
<2003> DW_AT_name : Emulate
<2016> DW_AT_name : EmulateTags
<202d> DW_AT_name : DebugPrintF
<2044> DW_AT_name : IsNative
<2058> DW_AT_name : Private2
<206c> DW_AT_name : Private3
<2080> DW_AT_name : GetCPUInfo
<2096> DW_AT_name : GetCPUInfoTags
<20b0> DW_AT_name : OwnerOfMem
<20c6> DW_AT_name : AddResetCallback
<20e2> DW_AT_name : RemResetCallback
<20fe> DW_AT_name : ItemPoolAlloc
<2117> DW_AT_name : ItemPoolFree
<212f> DW_AT_name : ItemPoolGC
<2145> DW_AT_name : ItemPoolControl
<2160> DW_AT_name : ItemPoolControlTags
<217f> DW_AT_name : ItemPoolFlush
<2198> DW_AT_name : GetHead
<21ab> DW_AT_name : GetTail
<21be> DW_AT_name : GetSucc
<21d1> DW_AT_name : GetPred
<21e4> DW_AT_name : IceColdReboot
<21fd> DW_AT_name : Private4
<2211> DW_AT_name : Private5
<2225> DW_AT_name : Private6
<2239> DW_AT_name : Private7
<224d> DW_AT_name : Private8
<2261> DW_AT_name : Private9
<2275> DW_AT_name : Private10
<228a> DW_AT_name : Private11
<229f> DW_AT_name : Private12
<22b4> DW_AT_name : Private13
<22c9> DW_AT_name : Private14
<22de> DW_AT_name : Private15
<22f3> DW_AT_name : Private16
<2308> DW_AT_name : Private17
<231d> DW_AT_name : Private18
<2332> DW_AT_name : Private19
<2347> DW_AT_name : Private20
<235c> DW_AT_name : Private21
<2371> DW_AT_name : Obsolete1
<2386> DW_AT_name : Obsolete2
<239b> DW_AT_name : Obsolete3
<23b0> DW_AT_name : RMapAlloc
<23c5> DW_AT_name : RMapFree
<23d9> DW_AT_name : Private22
<23ee> DW_AT_name : Private23
<2403> DW_AT_name : Private24
<2418> DW_AT_name : AllocVecTagList
<2433> DW_AT_name : AllocVecTags
<244b> DW_AT_name : Private25
<2460> DW_AT_name : RMapExtAlloc
<2478> DW_AT_name : RMapExtFree
<248f> DW_AT_name : Private26
<24a4> DW_AT_name : AllocNamedMemory
<24c0> DW_AT_name : AllocNamedMemoryTags
<24e0> DW_AT_name : FreeNamedMemory
<24fb> DW_AT_name : FindNamedMemory
<2516> DW_AT_name : UpdateNamedMemory
<2533> DW_AT_name : LockNamedMemory
<254f> DW_AT_name : AttemptNamedMemory
<256e> DW_AT_name : UnlockNamedMemory
<258c> DW_AT_name : ScanNamedMemory
<25a8> DW_AT_name : AllocTaskMemEntry
<25c6> DW_AT_name : Private27
<25dc> DW_AT_name : Private28
<25f2> DW_AT_name : Private29
<2608> DW_AT_name : Private30
<261e> DW_AT_name : MutexObtain
<2636> DW_AT_name : MutexAttempt
<264f> DW_AT_name : MutexRelease
<2668> DW_AT_name : MutexAttemptWithSignal
<268b> DW_AT_name : NewStackRun
<26a3> DW_AT_name : NewStackRunTags
DOS structure apparently related to the new 64bit stuff:
<8b45> DW_AT_name : ExamineData
<8b55> DW_AT_name : EXDnode
<8b67> DW_AT_name : EXDinfo
<8b79> DW_AT_name : FSPrivate
<8b8d> DW_AT_name : DOSPrivate
<8ba2> DW_AT_name : StructSize
<8bb7> DW_AT_name : Type
<8bc6> DW_AT_name : FileSize
<8bd9> DW_AT_name : Date
<8be8> DW_AT_name : UseCount
<8bfb> DW_AT_name : (indirect string, offset: 0xb0): Reserved1
<8c09> DW_AT_name : ObjectID
<8c1c> DW_AT_name : Name
<8c2b> DW_AT_name : NameSize
<8c3e> DW_AT_name : Comment
<8c50> DW_AT_name : CommentSize
<8c66> DW_AT_name : Link
<8c75> DW_AT_name : LinkSize
<8c88> DW_AT_name : Protection
<8c9d> DW_AT_name : OwnerUID
<8cb0> DW_AT_name : OwnerGID
DOS interface:
DW_AT_name : DOSIFace
DW_AT_name : Data
DW_AT_name : (indirect string, offset: 0x8d): Obtain
DW_AT_name : (indirect string, offset: 0x63): Release
DW_AT_name : (indirect string, offset: 0x75): Expunge
DW_AT_name : Clone
DW_AT_name : Open
DW_AT_name : Close
DW_AT_name : Read
DW_AT_name : Write
DW_AT_name : Input
DW_AT_name : Output
DW_AT_name : Seek
DW_AT_name : DeleteFile
DW_AT_name : Rename
DW_AT_name : Lock
DW_AT_name : UnLock
DW_AT_name : DupLock
DW_AT_name : Examine
DW_AT_name : ExNext
DW_AT_name : Info
DW_AT_name : CreateDir
DW_AT_name : CurrentDir
DW_AT_name : IoErr
DW_AT_name : CreateProc
DW_AT_name : OBSOLETEExit
DW_AT_name : OBSOLETELoadSeg
DW_AT_name : UnLoadSeg
DW_AT_name : (indirect string, offset: 0xb0): Reserved1
DW_AT_name : LoadSeg
DW_AT_name : DeviceProc
DW_AT_name : SetComment
DW_AT_name : SetProtection
DW_AT_name : (indirect string, offset: 0x6b): DateStamp
DW_AT_name : Delay
DW_AT_name : WaitForChar
DW_AT_name : ParentDir
DW_AT_name : IsInteractive
DW_AT_name : Execute
DW_AT_name : AllocDosObject
DW_AT_name : AllocDosObjectTagList
DW_AT_name : AllocDosObjectTags
DW_AT_name : FreeDosObject
DW_AT_name : DoPkt
DW_AT_name : DoPkt0
DW_AT_name : DoPkt1
DW_AT_name : DoPkt2
DW_AT_name : DoPkt3
DW_AT_name : DoPkt4
DW_AT_name : SendPkt
DW_AT_name : WaitPkt
DW_AT_name : ReplyPkt
DW_AT_name : (indirect string, offset: 0xba): Reserved2
DW_AT_name : LockRecord
DW_AT_name : LockRecords
DW_AT_name : UnLockRecord
DW_AT_name : UnLockRecords
DW_AT_name : SelectInput
DW_AT_name : SelectOutput
DW_AT_name : FGetC
DW_AT_name : FPutC
DW_AT_name : UnGetC
DW_AT_name : FRead
DW_AT_name : FWrite
DW_AT_name : FGets
DW_AT_name : FPuts
DW_AT_name : OBSOLETEVFWritef
DW_AT_name : OBSOLETEFWritef
DW_AT_name : VFPrintf
DW_AT_name : FPrintf
DW_AT_name : FFlush
DW_AT_name : SetVBuf
DW_AT_name : DupLockFromFH
DW_AT_name : OpenFromLock
DW_AT_name : ParentOfFH
DW_AT_name : ExamineFH
DW_AT_name : SetFileDate
DW_AT_name : NameFromLock
DW_AT_name : NameFromFH
DW_AT_name : SplitName
DW_AT_name : SameLock
DW_AT_name : SetMode
DW_AT_name : ExAll
DW_AT_name : ReadLink
DW_AT_name : MakeLink
DW_AT_name : ChangeMode
DW_AT_name : SetFileSize
DW_AT_name : SetIoErr
DW_AT_name : Fault
DW_AT_name : PrintFault
DW_AT_name : ErrorReport
DW_AT_name : PRIVATERequester
DW_AT_name : Cli
DW_AT_name : CreateNewProc
DW_AT_name : CreateNewProcTagList
DW_AT_name : CreateNewProcTags
DW_AT_name : RunCommand
DW_AT_name : GetConsoleTask
DW_AT_name : SetConsoleTask
DW_AT_name : GetFileSysTask
DW_AT_name : SetFileSysTask
DW_AT_name : GetArgStr
DW_AT_name : SetArgStr
DW_AT_name : FindCliProc
DW_AT_name : MaxCli
DW_AT_name : SetCurrentDirName
DW_AT_name : GetCurrentDirName
DW_AT_name : SetProgramName
DW_AT_name : GetProgramName
DW_AT_name : SetPrompt
DW_AT_name : GetPrompt
DW_AT_name : SetProgramDir
DW_AT_name : GetProgramDir
DW_AT_name : SystemTagList
DW_AT_name : System
DW_AT_name : SystemTags
DW_AT_name : AssignLock
DW_AT_name : AssignLate
DW_AT_name : AssignPath
DW_AT_name : AssignAdd
DW_AT_name : RemAssignList
DW_AT_name : GetDeviceProc
DW_AT_name : FreeDeviceProc
DW_AT_name : LockDosList
DW_AT_name : UnLockDosList
DW_AT_name : AttemptLockDosList
DW_AT_name : RemDosEntry
DW_AT_name : AddDosEntry
DW_AT_name : FindDosEntry
DW_AT_name : NextDosEntry
DW_AT_name : MakeDosEntry
DW_AT_name : FreeDosEntry
DW_AT_name : IsFileSystem
DW_AT_name : Format
DW_AT_name : Relabel
DW_AT_name : Inhibit
DW_AT_name : AddBuffers
DW_AT_name : CompareDates
DW_AT_name : DateToStr
DW_AT_name : StrToDate
DW_AT_name : OBSOLETEInternalLoadSeg
DW_AT_name : OBSOLETEInternalUnLoadSeg
DW_AT_name : OBSOLETENewLoadSeg
DW_AT_name : OBSOLETENewLoadSegTagList
DW_AT_name : OBSOLETENewLoadSegTags
DW_AT_name : AddSegment
DW_AT_name : FindSegment
DW_AT_name : RemSegment
DW_AT_name : CheckSignal
DW_AT_name : ReadArgs
DW_AT_name : FindArg
DW_AT_name : ReadItem
DW_AT_name : StrToLong
DW_AT_name : MatchFirst
DW_AT_name : MatchNext
DW_AT_name : MatchEnd
DW_AT_name : ParsePattern
DW_AT_name : MatchPattern
DW_AT_name : (indirect string, offset: 0xc4): Reserved3
DW_AT_name : FreeArgs
DW_AT_name : (indirect string, offset: 0x83): Reserved4
DW_AT_name : FilePart
DW_AT_name : PathPart
DW_AT_name : AddPart
DW_AT_name : StartNotify
DW_AT_name : EndNotify
DW_AT_name : SetVar
DW_AT_name : GetVar
DW_AT_name : DeleteVar
DW_AT_name : FindVar
DW_AT_name : PRIVATECliInit
DW_AT_name : CliInitNewcli
DW_AT_name : CliInitRun
DW_AT_name : WriteChars
DW_AT_name : PutStr
DW_AT_name : VPrintf
DW_AT_name : Printf
DW_AT_name : Reserved5
DW_AT_name : ParsePatternNoCase
DW_AT_name : MatchPatternNoCase
DW_AT_name : PRIVATEDosGetString
DW_AT_name : SameDevice
DW_AT_name : ExAllEnd
DW_AT_name : SetOwner
DW_AT_name : GetEntryData
DW_AT_name : ReadLineItem
DW_AT_name : ReadLineItemTags
DW_AT_name : PRIVATEInternalRunCommand
DW_AT_name : GetCurrentDir
DW_AT_name : NonBlockingModifyDosEntry
DW_AT_name : SecondsToDateStamp
DW_AT_name : DateStampToSeconds
DW_AT_name : FixDateStamp
DW_AT_name : AddDates
DW_AT_name : SubtractDates
DW_AT_name : AddSegmentTagList
DW_AT_name : ParseCapturePattern
DW_AT_name : CapturePattern
DW_AT_name : ReleaseCapturedExpressions
DW_AT_name : FindTrackedAddress
DW_AT_name : TrackAddressList
DW_AT_name : TrackSegmentList
DW_AT_name : UnTrackAddress
DW_AT_name : UnTrackSegmentList
DW_AT_name : GetExitData
DW_AT_name : PutErrStr
DW_AT_name : ErrorOutput
DW_AT_name : SelectErrorOutput
DW_AT_name : MountDevice
DW_AT_name : MountDeviceTags
DW_AT_name : SetProcWindow
DW_AT_name : FindSegmentStackSize
DW_AT_name : CalculateSegmentChecksum
DW_AT_name : AllocSegList
DW_AT_name : GetSegListInfo
DW_AT_name : GetSegListInfoTags
DW_AT_name : AddSegListTail
DW_AT_name : DevNameFromLock
DW_AT_name : GetProcMsgPort
DW_AT_name : WaitForData
DW_AT_name : SetBlockingMode
DW_AT_name : SetCurrentCmdPathList
DW_AT_name : AllocateCmdPathList
DW_AT_name : FreeCmdPathList
DW_AT_name : RemoveCmdPathNode
DW_AT_name : AddCmdPathNode
DW_AT_name : SearchCmdPathList
DW_AT_name : SearchCmdPathListTags
DW_AT_name : ScanVars
DW_AT_name : GetProcSegList
DW_AT_name : HexToLong
DW_AT_name : GetDeviceProcFlags
DW_AT_name : DosControl
DW_AT_name : DosControlTags
DW_AT_name : CreateDirTree
DW_AT_name : NotifyVar
DW_AT_name : GetDiskFileSystemData
DW_AT_name : FreeDiskFileSystemData
DW_AT_name : FOpen
DW_AT_name : FClose
DW_AT_name : FOpenFromLock
DW_AT_name : Reserved6