Aros/平臺/68k 支援
谷歌翻譯 德語,法語,義大利語,西班牙語,印地語,中文,俄語,波蘭語,日語,韓語,
AROS 是一個開源、可移植的 AmigaOS(TM) OS3.1 的選擇/選項。系統友好的 68K AmigaOS (AOS) 二進位制檔案將在 Aros 68k 上的基於 68k 的 Amiga 硬體上開箱即用。AROS 可能是 Amiga68K 的生命線,因為未來的 kickstart/wb 升級,例如 CD-Rom 啟動、USB 啟動、潛在的替換所有過時的作業系統部件、驅動程式標準、RTG 標準、PCI 訪問標準。
AROS 核心 rom 可以與現有的 OS1.3、OS2.0、OS2.05、OS3.0 或 OS3.1 一起使用,取得不同程度的成功 - 一些硬體將得到支援,但其他硬體仍處於開發中。AROS rom 可以與 AROS 的其餘部分一起使用,以替換任何商業 rom + 工作臺組合,例如高階 Amiga。您可以根據需要使用 AROS 的任意部分。
AROS 原始碼一直或多或少與 M68K 二進位制檔案相容(即使所有庫原始碼都定義了完整的 68k 暫存器引數,大多數公共結構都完全相同)。它實際上從一開始就被設計用於 68k。在真正的 Amiga 上執行的、與二進位制檔案相容的 AROS 版本幾乎是確定 AROS 與 AmigaOS (TM) 相容性的聖盃。
原生 AROS 68k 軟體無法在任何經典 amiga(TM) OS 上執行,但經典 Amiga(TM) 應用程式可以與 AROS m68k OS 一起執行。Aros m68k OS 構建在很大程度上與從 1.x 到 3.x 的 68k Amiga 作業系統、kickstarts 或工作臺系列中的應用程式相容。
The compatibility may not be perfect or complete in just every area, but this is the goal.
因此,從軟體的角度來看,您只需在 aros 上執行您的 amiga 68k 軟體。庫、mui 類、裝置驅動程式等也是如此。您可以使用您的 amiga USB 硬體及其供應商提供的裝置驅動程式。
當 Aros 被移植到 68k 時,Toni Wilen 做了大量工作來開發 kickstart 替換,這些替換現在是 Aros 的一部分。很長一段時間以來,Aros 68k 被少數人使用,然後吸血鬼/阿波羅成為現實,而 Aros 在這裡提供了許多優勢。與 3.1 相比,它有許多優勢,並且硬體要求仍然很低,例如 AHI、USB 支援(Poseidon)、主題、網路協議棧等等。
有些元素甚至超過了 OS 3.9,但其他元素卻落後。其中缺少的 18% 中的一部分不再相關,永遠不會實現。錯誤和缺少的功能仍然是一個問題。
“大多數遊戲並不使用來自作業系統的太多內容,而且 Aros68k 與 Amiga OS3.1 也是二進位制相容的。吸血鬼的阿波羅核心有一個 CPU,它實現了所有摩托羅拉 680x0 的所有(整數)指令,因此任何使用 68020 中未包含在 68040 或 68060 中的指令的遊戲仍然可以從軟盤啟動到吸血鬼上。但是,有些遊戲在任何更快的處理器上都有問題,WHDLoad 對這些問題進行了修復,而且吸血鬼也有一個設定來提高相容性。將來,吸血鬼也可能允許僅 AGA 的遊戲在 OCS 和 ECS Amiga 上玩”
大多數 AROS 程式是用 C 編寫的,使用 Amiga API,但也有一些是用 C++ 編寫的。
AROS 成為開源的關鍵在於,這意味著人們可以按照他們想要的任何方向進行 - 那些只想要原始硬體的人可以堅持使用它,並仍然獲得增強功能;那些想要使用各種擴充套件的人可以讓他們更好地與核心整合。而那些想要完全不同的硬體的人仍然可以享受類似 AmigaOS 的作業系統。
AROS m68k 資源
- 官方下載(使用最新的 m68k nightly)http://aros.sourceforge.net/nightly1.php
- FTP 最新 AROS m68k https://dl.amigadev.com/nightly/aros/
- AMIGASYSTEM AROS One 68k 發行版 討論 在這裡 和 這裡
- AROS Vision UAE,
- 具有簡約 3.0 外觀的 AROS Vision,同時具有更現代的功能
- Apollo AROS 論壇
- AROS Exec 討論板 https://ae.amigalife.org/index.php?board=12.0
- 加入 IRC 客戶端的 IRC #Apollo-Team
- GitHub 上的 AROS
- Source Forge 上的 AROS
- AROS 68k DevPack,
- 在這裡測試,
- Pedro Cotter 用於吸血鬼的 ApolloOS 又名 Caffeine
- 2019 吸血鬼 V4 獨立 V4SA
- 2022
可以在 這裡 進行討論。ApolloOS 是 AROS 的一個分支,它刪除了不必要的抽象層,並改進了向後相容性,例如建立 Graphics.library 的相容替換,該替換由 AROS 使用,並從 ApolloOS 核心 中刪除了 OOP.library,AmigaOS 使用者認為這是不必要的,這在 AROS 許可範圍內是可以的。
將 hdf 寫入 sd/cf/hd,您將獲得可啟動驅動器作為結果。該工具實際上稱為 Win32DiskImager,只需使用它將 hdf 成功放到 sd 卡上即可
嘗試從 SD 卡啟動,您可以嘗試吸血鬼啟動,在 這裡 可以找到
works via sd card boot
吸血鬼 2000 V500
吸血鬼 1200 V2
吸血鬼 600 v2
希望它很快能在 V600 上執行,一段時間執行良好,然後突然就不行了。
吸血鬼 500 V2+
最終再次在 V500 上啟動,並且還在 V1200 上啟動
要在 Amiga 上安裝 AROS,您需要一臺記憶體足夠大的計算機。目前最小記憶體需求約為 6 MB,但可能會更改。為了有效執行任何應用程式,您需要更多的記憶體。AROS nightly 也是 Olaf 的 AROS68k Vision 發行版的基底,它針對純 68k 編譯,因此應該可以在任何 Amiga 上執行。建議至少使用 040 處理器。
首先,您需要一個足夠大的硬碟驅動器,並預留一個至少 100-200 MB 的可啟動分割槽。如果您只是想試用純 AROS68k nightly,那麼就需要這樣。新增貢獻或安裝 AROS Vision 將佔用更多空間。您可能還希望在那裡放置一些您選擇的 Amiga 程式,那麼合理的大小肯定會超過 1 GB。
您可以在您的 Amiga 上下載 nightly 的 ISO 映象和貢獻的 gz 存檔,但請記住,您需要將它們解壓縮到空的可啟動分割槽中。對於 ISO 映象,您可以使用 diskimage 裝置:http://aminet.net/package/disk/misc/diskimage.m68k-aos,但您可能會記憶體不足。
目前最簡單的方法是在主流計算機上的目錄中準備您的分割槽的內容,將其掛載為您選擇的 UAE(在 Windows 下顯然是 WinUAE)下的驅動器,然後簡單地將目錄的內容複製到透過 USB-IDE 介面卡連線到 PC 的 Amiga 驅動器或透過 CF 介面卡連線的 CF 卡。
為了使 AROS68k 分割槽在真實硬體(或 UAE,就此而言)上軟啟動,這意味著沒有 AROS ROM,只是從真正的 Amiga ROM 啟動,您需要編輯啟動序列。請記住,您需要使用 AROS/Amiga 編輯器在 AROS68k/Amiga 端進行操作,因為 Windows 文字檔案的回車符與 Amiga 格式不符,並且使用 Windows 編輯器儲存的指令碼在 Amiga 上不可執行。這對於 Linux 文字編輯器來說不是問題。
您只需要修改啟動序列的第一行,改為
boot/amiga/AROSBootstrap ROM boot/amiga/aros.hunk.gz
如果您想使用支援 P96 的 RTG 卡,則需要將 P96 驅動程式所在的路徑附加到 AROSBootstrap,例如使用 PicassoIV 時,啟動序列中的初始條目應類似於以下內容:引用(已選擇)
boot/amiga/AROSBootstrap ROM boot/amiga/aros.hunk.gz boot/amiga/PicassoIV.card boot/amiga/CirrusGD5446.chip
請記住採用實際路徑並儲存檔案。
還請新增
SetPatch
緊接第一行之後,像往常一樣,您可以指定選項 QUIET,我建議您這樣做,除非您需要除錯 setpatch。
現在,您有一個帶有 AROS 分割槽的 Amiga 格式化驅動器,您可以選擇在 UAE 下測試啟動它,或者將其連線到您的 Amiga 並嘗試從那裡啟動。玩得開心。
decompressing aros to drive with a bootable partition, be it a cf card, and adding arosbootstrap followed by kickstart image file should produce a bootable environment
- 將 CF 卡連線到 Amiga(透過內部 IDE-to-CF 轉換器)
- 從 WB3.1 軟盤啟動 Amiga
- "HDToolbox" 準備 CF 卡(= 內部 "硬碟驅動器")
- 將 CF 卡連線到 Linux,透過 "mount -t affs /dev/sdb1 foldername" 掛載
- 將 AROS-m68k-bootiso.iso(已掛載)中的所有檔案複製到 'foldername'(= CF 卡)
- 將 CF 卡連線到 Amiga,從 WB3.1 軟盤啟動
- 修復 CF 卡上的檔案許可權: "protect hd0:#? rwed all"(其中 hd0: = CF 卡)
- 編輯 hd0:S/Startup-Sequence,新增第一行(取自 amiga-m68k-boot/bootdisk-amiga-m68k.adf)
boot/amiga/AROSBootstrap ROM boot/amiga/aros.hunk.gz
完成。移除 WB3.1 軟盤,並重啟。
需要編輯您的啟動序列以包含類似的內容
boot/amiga/AROSBootstrap ROM boot/amiga/aros.hunk.gz
然後是您 P96 RTG 驅動程式檔案(.chip 和 .card)的路徑和名稱(假設您想使用顯示卡。建議刪除 prefs/env/sys/theme.var 以去除皮膚。您之後可以再次啟用它,如果您願意。
在 A4000/CSPPC 上啟動 AROS 執行良好。從 Amiga 4000 IDE 冷啟動需要 35 秒。
如果您將 Amiga 連線到網際網路,您當然可以直接在 Amiga 上格式化您的分割槽,下載 ISO 映象並使用眾多實用程式中的一個進行掛載,最好使用 diskimage 裝置(可從 Aminet 獲取),並將檔案直接複製到您的 Amiga 上,無需任何磁碟交換。
請務必從 AROS 網站 或備用 Sourceforge 網站 獲取 ISO 映象 - 它以 AmigaOS HUNK 格式提供。tarball(bzip2(bz2) 存檔用於除錯 AROS 本身,並且以 ELF 格式提供。.adf 和 rom bin 也可以在 distfiles 目錄中找到。在這裡可以找到備用 構建和編譯鏈。
每日更新列表可從 ezrec 克隆映象、Repo 或 Ohloh 獲取。來自 AROS 世界的最新訊息摘要可以在 AROS Planet 上找到。
Amiga.org 第一階段主題、第二階段主題 和 EAB 第一個主題 和 第二個主題 - 正在進行。Natami 主題、AW.net Minimig 和 EvilWiki 部落格。
狀態 AROS m68k 應用程式
PiStorm(Altera Max)(A500 A2000)板將允許您使用
PiStorm32Lite(Efinix)(A1200)板將允許您使用 RasPi Zero2-W Zero 2W(RP3A0)或 Compute Module 4,以及 RasPi 3B+、RasPi 3A、Raspi4,儘管需要更多工作
米歇爾的 Patreon 文章和新聞、GitHub、GitHub 和 [irc.libera.chat:6697 / #pistorm-emu68 IRC]
- 2019 年 Pi 3b+ 和 4
- 2020 年 添加了 Pi400 鍵盤和 capstone 反彙編器
- 2021 年重構為僅 64 位
- 2022 年版本 0.10 到 0.11,由於集成了 RasPi4 和 CM4 計算模組中使用的 BCM2711,這些變化被整合到主分支中
- 2024 年 Emu68 版本 1.0 - 主 JIT 迴圈從 AArch64 彙編重寫為 C
- 2025 年 PiStorm16 用於 Amiga 600,使用 Efinix FPGA 晶片,概念和計劃用於進一步的工作
另一個選擇是在 ARM 硬體上使用 Caffeine AROS 68k 在其上的 m68k 模擬。對效能感到驚訝(以積極的方式 32/64 位)。該專案稱為 Emu68,目前正在積極開發中。該專案帶來了一種在裸機 ARM 上執行的非常快的 m68k JIT。在該模擬器之上將執行 m68k 版本的 AROS。所以,是的,這不是完全的速度,但仍然比真正的 Amiga 模擬快得多。JIT 已經處於能夠執行簡單的 m68k 應用程式(當然是指那些不需要 AmigaOS 或 AROS 的應用程式)直接與 RasPi 硬體對話的階段。在下一階段將開始構建在此 JIT 上執行的 m68k AROS 版本。
對於 jit emu,AArch64 並不是那麼糟糕,我已經為我自己保留了 18 個 A64 整數暫存器,並且仍然有足夠的暫存器用於 gcc 生成的程式碼以及 JIT 翻譯器。始終將程式計數器、狀態暫存器以及所有 D 和 A 暫存器儲存在其 A64 對等暫存器中。FPU 暫存器始終儲存在 ARM 暫存器中。
JIT 程式碼將擁有約 12 個用於自身使用的臨時暫存器,能夠將其用作 32 位或 64 位暫存器。m68k 上下文只加載一次,即 Emu68 啟動時。只有在必要時才儲存(或更新)它,從而節省了在 32 位 ARM 模式下進行的大量儲存/恢復操作。
現在,AArch64 方面還有哪些其他訊息?MMU 設定現已完成。查詢可用記憶體、所有外圍裝置的 MMIO 範圍以及影片記憶體。它們都對映到最低的 4GB 區域,以便 m68k 硬體驅動程式可以與 RasPi 元件通訊。在地址空間的最高位,有 Emu68 核心和前 4GB 記憶體範圍的直接對映。對映可能像這樣(在 QEMU 上模擬的 RasPi 3B)
0x0000000000000000 - 0x000000003affffff: User RAM, cached
0x000000003b000000 - 0x000000003bffffff:
0x000000003c000000 - 0x000000003fffffff: VC4 memory, non-cacheable
0x00000000f2000000 - 0x00000000f2ffffff: RasPi peripherals, device memory type
0x00000000f3000000 - 0x00000000f31fffff: RasPi per-cpu region
0x00000000f3200000 - 0xffffff7fffffffff:
0xffffff8000000000 - 0xffffff8000ffffff: Emu68 core, JIT cache
0xffffff8001000000 - 0xfffffffeffffffff:
0xffffffff00000000 - 0xffffffffffffffff: 1:1 map of the first 4GB, non-cacheable, supervisor only
如您所見,記憶體對映中有一些空隙,會導致嘗試訪問時出現異常。不僅如此,m68k 程式碼無法訪問 Emu68 地址空間,因為它遠遠超出了其定址能力。MMU 對映在早期啟動期間載入和修改了很多次,因為 Emu68 核心必須從記憶體的開頭移動到可用 RAM 的頂部,但另一方面,所有設定現在都很清楚了。
- PiStorm
- RaspPi v2 v3 v4
Emu68 核心的其他部分?將 MMU 設定和核心移動例程從 C 重寫為組合語言。尤其是後者是必要的步驟,因為要移動的其中一項是堆疊,而在使用任何高階語言時對它的控制非常有限。此外,組合語言中的 MMU 設定現在與核心的物理位置無關,前提是它在 RAM 內的任何 2MB 頁面邊界上對齊。
FPU 支援
首先,核心假設它載入到 0x00080000 的物理地址。這在 RasPi 上是正確的,但在其他機器上只是一個美好的願望。例如,Pinebook 保留了最低的 2MB 區域用於 ATF - ARM 可信韌體。該區域不應也不應該對不受信任的軟體(例如作業系統)訪問。此外,生成的二進位制檔案缺少一個特殊的標頭,該標頭在 RasPi 上未使用,但在嘗試透過 uboot 載入和啟動核心時非常有用。標頭指定了一些基本內容,例如 2MB 頁面內的載入偏移量(這是神奇的 0x00080000 值),它宣告核心使用的基本 MMU 頁面大小,它說明核心是否希望載入到最低可能的記憶體區域,或者如果在 2MB 邊界上的任何位置都可以。它還聲明瞭核心的位元組序,以便例如 uboot 可以拒絕載入它,如果機器不支援請求的模式。標頭還包含兩個操作碼的空間,允許使用分支操作碼跳過它。為什麼只需要一個的時候卻有兩個?嗯,這個技巧允許使用其中第一個的一部分作為常規 EXE 檔案的識別符號。這樣一來,就可以將 PE 標頭嵌入核心中,使其同時成為有效的 RasPi、uboot 和 EFI 檔案。很狡猾,但令人印象深刻!
- Pinebook Pro (2019) 64 位 ARM8v Rockchip RK3399 SOC,帶 Mali T860 MP4 GPU IPS 1080p
https://www.pine64.org/pinebook-pro/
- ISO 英國版本
- ANSI 美國版本
PineBook Pro 怎麼樣?我已經讓它啟動程式碼,但還不能使用快取。程式碼正常載入,設定 MMU 對映,轉儲整個裝置樹並重新定位核心。顯示器還沒有準備好,但這並不是首要任務。到目前為止,它看起來像這樣
[BOOT] Booting Emu68 runtime/AArch64 BigEndian
[BOOT] Boot address is 0xffffff80000800a0
[BOOT] Build ID: 4236bd740a2dda0091e3a2a2ad69e8e5ad5f4496
[BOOT] ARM stack top at 0xffffff8000080000
[BOOT] Bootstrap ends at 0xffffff8000090000
[BOOT] Kernel args (0x00000000f3dbc000)
[BOOT] Local memory pool:
[BOOT] 0xffffff8000090000 - 0xffffff8000ffffff (size=16187392)
[BOOT] Device Tree dump:
[BOOT]
[BOOT] model=Pine64 Pinebook Pro. (50696e6536342050696e65626f6f6b2050726f00)
[....]
[BOOT] System memory: 0x0000000000200000-0x00000000f6ffffff
[BOOT] Moving kernel from 0x0000000000200000 to 0x00000000f7000000
獲取最新的 WinUAE,它內建了 AROS ROM 映像。
可選地,您可以獲取整個夜間 構建,其中包含 ROM 和 AROS 系統,但對於大多數人來說,這不是必需的。設定 WinUAE “主 ROM 檔案” = aros-amiga-m68k-rom.bin 和 “擴充套件 ROM 檔案” = aros-amiga-m68k-ext.bin。arosbootstrap 方法旨在方便地進行真實 Amiga 測試,無需燒錄 EEPROM 等。
配置 WinUAE 以模擬標準 A1200,但使用完整的 68020 CPU(24 位模式未標記)。選擇 2MB CHIP、64 MB Z3 FAST。在擴充套件選項卡上,為 RTG 卡提供一些 RAM(我有 16 MB)。然後將 AROS 目錄附加為硬碟並從它啟動。這將需要一些時間,但最終您應該看到 WinUAE 啟動到 Wanderer 640x480x8。
重要:確保使用 JIT。沒有 JIT,載入速度會慢 3-4 倍,而且 AROS 非常容易崩潰(大多數情況下是 input.device 中的記憶體分配問題)。有了 JIT,它“非常穩定”(至少對於移動視窗 ;)
使用最新的 winuae 測試版,引數為 -log -serlog,以檢視序列日誌除錯(確保 rom 啟用序列日誌構建)
使用 -serlog -log 開啟日誌視窗(也會自動寫入檔案),或者如果您不想看到日誌視窗,請勾選雜項面板中的日誌複選框。
- 將 夜間 amiga-m68k-bootiso 下載到您的電腦或 Amiga 上,如果連線了網際網路。
- 解壓縮包含 ISO 的存檔到您電腦上的某個目錄。您可以使用 WinRAR 或 IsoBuster 之類的程式來執行此操作。
- 在您的 Amiga 上準備一個格式化好的 Amiga 磁碟,其中包含一個空的引導 AROS 分割槽(最好是優先順序最高的)。您可以使用 FFS,儘管它有缺陷,但也可以使用 PFS3 作為檔案系統。
- 使用 IDE-USB 介面卡將 Amiga 磁碟驅動器(假設它是 IDE 驅動器)連線到您的電腦。
- 啟動 WinUAE。將您解壓縮的 ISO 目錄作為驅動器安裝到 WinUAE 中。
hardware>harddrives>add directory or archive.
或者我認為您可以將您的 ISO 存檔安裝到:
hardware>harddrives>add hardfile.
- 將您的 USB 連線的 Amiga 硬碟驅動器安裝在硬體>硬碟>新增硬碟中,然後從您的常規可引導分割槽啟動 WinUAE。
- 使用您選擇的任何檔案管理器,將 AROS 安裝從 ISO 或 ISO 目錄複製到您真實 Amiga 硬碟驅動器上的 AROS 分割槽。Diropus?確保您的 Amiga 驅動器上的 AROS 分割槽是可引導的,並且具有最高優先順序。
- 現在您可以將您的 Amiga AROS 硬碟驅動器連線到您的 Amiga 控制器。無論是內部 IDE、FastATA,還是透過 ACard SCSI-IDE 介面卡連線到 SCSI 控制器。請注意,CSPPC 或 CSMK3 控制器目前尚不支援,並且會導致啟動時出現問題。
- 您的 Amiga 現在可能需要一些時間,因為 Kickstart 3.1 會等待 30 秒讓驅動器旋轉起來,然後軟啟動 AROS。您將能夠觀察到它,因為它會提供螢幕輸出。從硬碟引導的 AROS 68k 並不像 AOS 那樣是即時的,但它不會花費很長時間。
alternatively you could establish a serial debug connection between amiga and whatever else machine you use (likely with an serial sub-d adapter 25>9 pin, null modem cable and serial-USB adapter) and observe the debug output on terminal window on the alternate machine. using tera term on pc. you have to choose your USB port. and debug baudrate: 115200
AROS 68k 有兩個 ROM 檔案,一個是 Kickstart,另一個是 Kickstart ext,您需要這兩個檔案。模擬器應與 A1200 設定完全相同,但使用完整的 020 及更高 CPU,配備 4MB 快速 RAM,如果可能的話,還要配備 RTG。它應該可以工作。如果 AROS 沒有顯示磁碟提示或出現插入 DEVS: 錯誤,那麼您應該確保可引導磁碟(硬碟 HDF 或軟盤 ADF)可用。
需要在啟動序列的開頭新增 arosbootstrap 命令,指向您的 ks 映像和 rtg 驅動程式。
boot/amiga/AROSBootstrap ROM boot/amiga/aros.hunk.gz boot/amiga/PicassoIV.card boot/amiga/CirrusGD5446.chip
uae.rc 或 euae.rc 或 uae.config(它們是文字檔案) - 檢查這些選項是否在裡面設定。
kickstart_rom_file=<path>
kickstart_ext_rom_file=<path>
此選項指定要載入的擴充套件 ROM 映像的檔案路徑。
gfxcard_size=<n> (預設值為 0)
模擬具有 <n> MB 圖形記憶體的 RTG 圖形卡。選擇大於 0 的 <n> 將啟用圖形卡或所謂的“Picasso96”模擬。最多可以模擬 32 MB 的圖形卡記憶體。
E-UAE 必須模擬 32 位 CPU(68020 或更高,而不是 68ec020)才能支援圖形卡模擬。
確保序列埠模擬已啟用,這是所有非 WinUAE 版本中所需的(WinUAE 始終在內部模擬序列中斷)。
缺失的功能
intellifont/compugraphic font support (TrueType is indeed the way forward, but it is another resource pig on anything but high-end Amigas. And besides, Intellifont should be implemented anyway for backwards compatibility.) cdrom filesystem (missing L:cdrom-handler. Is it in Aros68k rom? It should be on disk, see note no. 1) no crossdos (L:fat-handler is missing. Is it in Aros68k rom? It should be on disk, see note no. 1) recoverable ram volume support is non existent (RAD) No Overscan support No PCMCIA ram support
缺失的磁碟元件
C/cpu ed edit magtape (I don't know anyone who has used it, and I highly doubt it is required for backwards compatibility) remrad (no rad support) setfont (setdefaultfont does not provide the same functionality. e.g.: missing setfont tooltypes) CLASSES/DATATYPES/anim.datatype (these datatypes seem implemented, but their classes are physically absent) animation.datatype (these datatypes seem implemented, but their classes are physically absent) cdxl.datatype (these datatypes seem implemented, but their classes are physically absent) CLASSES/GADGETS/tapedeck.gadget DEVS/audio.device (AHI is fine as a way forward, but it is a resource pig on anything below a 68020 on native) mfm.device parallel.device DEVS/DOSDRIVERS/aux rad cd0 (iso0 is present but we have the renaming issue. See note no.1) pc1 (maybe a small omission) DEVS/KEYMAPS/ (it is full of PC keyboard keymaps and a SUN one. But what about Amiga keymaps?) DEVS/MONITORS/ (missing A2024, dblntsc, dblpal, euro36, euro72, multiscan, ntsc, pal, super72 and vgaonly. A generic one doesn't suit, see note no. 1) DEVS/PRINTERS/ (missing all printer drivers but postscript. Not that it is really needed, but at least, "generic" and "file" drivers should be included) FONTS (not a single one of the old native ones present. I understand that there are TTF replacements, but then see note no1.) L/aux-handler cdfilesystem (see note no. 1) crossdosfilesystem (see note no. 1) port-handler queue-handler LIBS/68040.library (680x0.library exists- specific processor libraries are unnecessary. insert setpatch at the beginning of the ss and the universal 680x0.library with the patches for specific processor will be automatically loaded. plug and play. definitely a gain with aros. no libs mess here.) bullet.library PREFS/overscan pallete printergfx printerps sound (yes, there is AHI, but I have already mentioned its issues) wbpattern REXXC/hi rxc rxset tcc tco te ts waitforport SYSTEM/diskcopy intellifont (ftmanager doesn't cut it, as I mentioned before) nofastmem TOOLS/bru (not that I or anyone else care or require it for backwards compatibility, but some backup option should exist for completeness) cmd iconedit lacer memacs (don't use it or care about it, but why leave it out when it is PD?) prepcard TOOLS/COMMODITIES/crossdos mouseblanker (couldn't care less. But then it is not difficult to implement, isn't it?)
筆記
為了向後相容,一些 AmigaOS 元件被替換為其他具有不同名稱的元件。可以將它們恢復為原始名稱,或者建立指向實際結構的佔位符/連結。
一般來說,您可以輕鬆地新增任何內容,只要它不依賴於可能未實現或實現方式不同的內部結構。例如,您可以輕鬆地新增任何與 shell 相關的功能,新增更多庫等等。部分情況下,您甚至可以替換現有元件。例如,我用 MUI38 替換了 Zune,因為我想要的一些軟體無法工作(例如 IBrowse)。唯一的缺點是首選項不再起作用,所以我建立了一些解決方法,例如預定義的首選項檔案,這些檔案會被複制。
crossdos 不存在,並且在 Aros(除了 68k 之外)中,沒有人需要它,也沒有可用的原始碼,因此機會很渺茫。缺失的磁碟元件。正如我寫的那樣,您可以新增幾乎任何內容,只要它不依賴於未實現的低階元件,它就可以工作。例如,我不記得“cpu”,但我已經添加了許多元件,所以它可能在那裡。您也不需要包含“ed”或類似元件,因為您可以在 shell-startup 中簡單地定義它。例如,我定義並執行 annotate。Aros 中的資料型別系統不同,因此您不能簡單地新增或替換來自 3.X 的資料型別(我已經測試過了)。資料型別無疑是一個可以懸賞的候選者。在 Aros Vision 中,我為此建立了小型 Hollywood 程式,並使用 Magellan 的檔案型別系統來執行它們。Audio.device 缺失?它應該在那裡,但肯定使用 AHI,這是 Aros 的標準。列印和列印到檔案可以工作(至少在 UAE 上,在真實硬體上沒有測試過)。我認為可以輕鬆新增 68040.library。我在 Aros Vision 中使用 Waitforport,它與來自 Aros 的 Rexxmast 一起使用。
一些監視器可以工作
序列除錯需要每臺需要相互通訊的機器上的軟體,以及某種物理線纜(通常是早期 Prolific 或 FTDI 基於 USB 的線纜)。
軟體 PC 或其他 - Putty、TeraTerm、minicom 等
軟體 Amiga - Term
直接輸出到序列埠,以便它可以到達另一端。
您可以在 Windows 上使用 Bray's Terminal、Termite、TeraTerm 或 RealTerm。它們可以在 Linux 下使用 Wine 工作。在 Linux 上使用 CuteCom(基於 qt,使用 dmesg 獲取裝置 /dev/ttyS0 或 /dev/ttyUSB0)、picocom、minicom 或 gtkterm。網際網路上有大量控制檯和終端模擬器。只需下載其中一些,找到讓你滿意的那個 :-D
序列控制檯速度 可以是每秒 1200、2400、4800、9600、19200、38400、57600 和 115200 位元。
- A500/A600 限制在約 19.2 kbit/秒,傳輸速率不超過 2KB/秒(例如,波特率 19200,8 個數據位,1 個停止位,無奇偶校驗)。
- 未擴充套件的 A1200 可以預期 57.6 kbit/秒,傳輸速率不超過 7KB/秒。
為了診斷序列除錯的引導問題,需要重新編譯 AROS m68k 以支援這些較慢的速度。
更快的序列速度需要更快的 CPU(最佳選擇是 030 及更高)或一個額外的專用快速序列埠(可能不受 AROS 支援)。
另外,您還需要將 Amiga 序列埠連線起來,以便擁有除錯日誌。預設的基本速率是 115200 8n1,但您可以在 arch/m68k-amiga/ boot/start.c 第 47 行更改它。
在 EAB 論壇帖子 上了解更多資訊
你需要的是一條序列埠空模電纜。它只是一條序列埠電纜,但 RX 和 TX 線交叉。
9pin DB9F 母頭用於 PC,25pin DB25F 母頭用於 Amiga。
如果你有一條標準的 RS232 序列埠電纜,你可以購買一個空模介面卡,將其連線到標準序列埠電纜,然後連線兩臺電腦。
第二個選擇是直接購買一條 RS232 空模電纜,連線兩臺電腦。
只需快速搜尋“Amiga 序列埠空模電纜”。但是,許多電纜都配備一個或兩個公頭,因此需要一個或兩個額外的母頭到母頭介面卡。
使用 add44k 或其他工具降低你的螢幕深度,這樣可以稍微提高速度。更多的平面 = 更多的 DMA 負載 = 可用於序列埠的時間更少。RTG 會有所幫助,但你必須將其配置為在 RTG 螢幕可見時完全不顯示自定義晶片螢幕。
這裡有一些建議
1. 確保你的電纜設定中有一個空模介面卡。在你的電纜鏈中的某個地方。空模介面卡會在裝置上的某個地方寫著“NULL MODEM”。
2. 右鍵單擊 Amiga 資源管理器圖示,並確保選擇了 PC 的正確序列埠(COM1:、COM2:)… 我相信預設情況下是 COM1。確保序列埠在裝置管理器中列在“埠(COM 和 LPT)”下。確保裝置管理器中裝置圖示上沒有 (!) 或 (x) 標記。
3. 測試電纜設定:在 PC 上啟動超級終端,在 Amiga 上啟動終端程式。將兩者都設定為 9600 波特率、8 個數據位、無奇偶校驗、1 個停止位、無握手。在一臺系統上輸入的字元應該顯示在另一臺系統上。如果不行,那就是電纜或配置問題。
4. 測試握手:在兩端啟用硬體握手,並透過在每臺機器上輸入來檢查連線性。如果你通過了步驟 3,但在這裡失敗了,那麼你的序列埠電纜接線錯誤(或者,不太可能,空模介面卡接線錯誤)。
有些人使用 68000 機器(A500/600)上的 baud bandit 和 020+ 機器上的 new8n1,但 AROS 有自己的序列埠驅動程式,該驅動程式尚未與以下序列埠硬體擴充套件進行測試
- VarIO
- HyperCOM +3
- SilverSurfer
- Twister 1200
使用序列埠轉 USB 介面卡和 **RealTerm** 115200 波特率,埠 70 奇偶校驗:無,資料位:8,停止位:1。
在 PC 上使用 TeraTerm(將埠和波特率調整為 115200),你可以捕獲啟動日誌並將其提供給 aros-dev 列表或 Aros-Exec。歡迎反饋。
有人告訴我序列埠 USB 介面卡有問題,或者並不總是能正常工作,但我沒有得到詳細的解釋?其中一些介面卡在 EEPROM 程式設計器中存在問題,因為它們需要序列埠電纜上的 12V 電壓,但 USB 介面卡不提供這種電壓。用於資料傳輸和基本通訊的最便宜的 USB 介面卡仍然是不錯的選擇。
由於無法在 Deneb 中使用大於 512 kb 的 ROM 映象,我認為我無法從快閃記憶體啟動 AROS kickstart。如果我嘗試使用 algor kick 初始化前半部分,計算機將陷入無限的啟動迴圈中。因此,我在 AROS 啟動序列的開頭使用 blizkick 載入 kickstart 的第一部分。我透過這種方式能夠捕獲的所有內容如下。blizkick 應該能夠管理 1MB ROM,但顯然不接受 ELF 檔案。否則,使用 algorkick 接受的 512KB kickstart 檔案是理想的選擇。
- **始終**包含完整日誌。(你可能有多個硬體配置,知道確切的硬體非常重要)。
- **始終**描述硬碟的連線方式… 有時日誌會暗示沒有連線 IDE 硬碟,並且可能在第三方 SCSI 板上有一些東西。請注意,如果沒有相同的硬體,除錯非 AROS 內建的 HD 驅動程式(= 第三方擴充套件 + 啟動 ROM)相容性實際上是不可能的。(什麼都沒有記錄,因為所有內容都由啟動 ROM 處理,包括驅動程式檢測、RDB 解析等…)
例如,這是我的真實 A1200/68060(使用 USB 序列埠介面卡)的日誌。
[reset]
[SysBase] fakebase at: 0000020c
RAM lower: 00001000
RAM upper: 001fffff
BSS lower: 00135620
BSS upper: 0013577f
Protect: : 00001000
bss: : 00135620
rom: : 00135788
ext: : 001a2e10
[prep SysBase]: 00001000
[new SysBase]: 00001508
CPU: 68060 FPU: 68060
[ColdCapture] Ignoring AOS->AROS trampoline
[start] InitCode(RTF_SINGLETASK, 0)
configchain
Found board: mfg=8512 prod=17 size=00020000 serial=00000000
diag=00000080
configchain done
adding ram boards
ram boards done
coolcapture=00000000 kickmemptr=00000000 kicktagptr=001fe7a8
kickchecksum=001fe78a
* 00195afc: 127 02 3 "kernel.resource"
* 0013e380: 120 42 41 "exec.library"
* 00154e1c: 110 82 41 "expansion.library"
* 00151798: 105 82 41 "utility.library"
* 00154f3a: 105 01 41 "diag init"
* 0015a930: 104 81 2 "partition.library"
* 001413d8: 102 81 41 "aros.library"
* 0019d028: 100 81 41 "potgo.resource"
* 00196118: 99 01 2 "processor.resource"
* 00153af0: 94 81 42 "oop.library"
* 0017cb64: 92 81 1 "hiddclass.hidd"
* 0019ce50: 80 01 0 "cia.resource"
* 0019d864: 80 01 1 "FileSystem.resource"
* 0019469c: 70 81 41 "battclock.resource"
* 001894ac: 66 81 1 "graphics.hidd"
* 001b5e3c: 65 81 41 "graphics.library"
* 001bb4d0: 60 81 41 "layers.library"
* 0015dd4c: 50 81 41 "timer.device"
* 00168784: 50 81 41 "audio.device"
* 0019dcac: 50 81 41 "m680x0.resource"
* 0018a698: 45 81 1 "keyboard.hidd"
* 0018afb4: 45 81 1 "mouse.hidd"
* 0019dadc: 45 01 41 "misc.resource"
* 0015f7f0: 44 81 41 "keyboard.device"
* 0016746c: 44 81 41 "gameport.device"
* 0018b88c: 40 81 1 "amigakbd.hidd"
* 0018c2b8: 40 81 1 "amigamouse.hidd"
* 001a390c: 40 81 41 "keymap.library"
* 0019d634: 39 81 41 "disk.resource"
* 00166988: 35 81 41 "trackdisk.device"
* 0015ecb0: 30 81 41 "input.device"
* 001dee48: 15 81 50 "intuition.library"
* 0018ffe8: 9 81 1 "amigavideo.hidd"
* 00193b20: 8 81 1 "uaegfx.hidd"
* 001644f8: 4 81 41 "console.device"
* 0016d8ac: 4 81 41 "ata.device"
* 001ea1a4: 0 81 41 "gadtools.library"
* 00178bcc: - 1 81 41 "afs.handler"
* 001fcfee: - 45 01 41 "alert.hook"
* 00155ba2: - 119 01 41 "Boot Strap"
* 0014e6fc: - 120 00 41 "dos.library"
* 00156394: - 120 80 41 "mathffp.library"
* 001f2f60: - 120 80 44 "workbench.library"
* 0015ae60: - 121 04 1 "FSLoader"
* 001ef89c: - 122 84 44 "icon.library"
* 0014fb0e: - 123 04 41 "LDDemon"
* 001f8fa0: - 123 04 41 "shellcommands.resource"
* 001fc5d4: - 123 04 44 "workbook.resource"
* 001fcc52: - 123 00 40 "workbench.task"
* 00171f74: - 124 84 41 "con.handler"
* 0017c476: - 125 04 1 "amberram.handler"
* 00197704: - 128 04 41 "dosboot.resource"
KickTag residents:
* 001fe78a: 110 00 0 "1234-BootPrefs0"
Resident modules after KickTags merge:
+ 00195afc: 127 02 3 "kernel.resource"
+ 0013e380: 120 42 41 "exec.library"
+ 00154e1c: 110 82 41 "expansion.library"
+ 001fe78a: 110 00 0 "1234-BootPrefs0"
+ 00151798: 105 82 41 "utility.library"
+ 00154f3a: 105 01 41 "diag init"
+ 0015a930: 104 81 2 "partition.library"
+ 001413d8: 102 81 41 "aros.library"
+ 0019d028: 100 81 41 "potgo.resource"
+ 00196118: 99 01 2 "processor.resource"
+ 00153af0: 94 81 42 "oop.library"
+ 0017cb64: 92 81 1 "hiddclass.hidd"
+ 0019ce50: 80 01 0 "cia.resource"
+ 0019d864: 80 01 1 "FileSystem.resource"
+ 0019469c: 70 81 41 "battclock.resource"
+ 001894ac: 66 81 1 "graphics.hidd"
+ 001b5e3c: 65 81 41 "graphics.library"
+ 001bb4d0: 60 81 41 "layers.library"
+ 0015dd4c: 50 81 41 "timer.device"
+ 00168784: 50 81 41 "audio.device"
+ 0019dcac: 50 81 41 "m680x0.resource"
+ 0018a698: 45 81 1 "keyboard.hidd"
+ 0018afb4: 45 81 1 "mouse.hidd"
+ 0019dadc: 45 01 41 "misc.resource"
+ 0015f7f0: 44 81 41 "keyboard.device"
+ 0016746c: 44 81 41 "gameport.device"
+ 0018b88c: 40 81 1 "amigakbd.hidd"
+ 0018c2b8: 40 81 1 "amigamouse.hidd"
+ 001a390c: 40 81 41 "keymap.library"
+ 0019d634: 39 81 41 "disk.resource"
+ 00166988: 35 81 41 "trackdisk.device"
+ 0015ecb0: 30 81 41 "input.device"
+ 001dee48: 15 81 50 "intuition.library"
+ 0018ffe8: 9 81 1 "amigavideo.hidd"
+ 00193b20: 8 81 1 "uaegfx.hidd"
+ 001644f8: 4 81 41 "console.device"
+ 0016d8ac: 4 81 41 "ata.device"
+ 001ea1a4: 0 81 41 "gadtools.library"
+ 00178bcc: - 1 81 41 "afs.handler"
+ 001fcfee: - 45 01 41 "alert.hook"
+ 00155ba2: - 119 01 41 "Boot Strap"
+ 0014e6fc: - 120 00 41 "dos.library"
+ 00156394: - 120 80 41 "mathffp.library"
+ 001f2f60: - 120 80 44 "workbench.library"
+ 0015ae60: - 121 04 1 "FSLoader"
+ 001ef89c: - 122 84 44 "icon.library"
+ 0014fb0e: - 123 04 41 "LDDemon"
+ 001f8fa0: - 123 04 41 "shellcommands.resource"
+ 001fc5d4: - 123 04 44 "workbook.resource"
+ 001fcc52: - 123 00 40 "workbench.task"
+ 00171f74: - 124 84 41 "con.handler"
+ 0017c476: - 125 04 1 "amberram.handler"
+ 00197704: - 128 04 41 "dosboot.resource"
SS lower: 00131620
SS upper: 0013561f
callroms 10
Read boot ROM base=00ea0000 type=d2
bus=80
size=4f2
Call boot rom @00013a84 board 00ea0000 diag 000139b8 configdev 000036c8
callroms done
[ATA--] ata_init: ata.device Initialization
[ATA--] Gayle ID=d1. Possible IDE port=00da0000
[ATA--] Status=00
[ATA--] ata_init: MemPool @ 68084178
[ATA--] ata_init: BootloaderBase = 00000000
[ATA--] Gayle ID=d1. Possible IDE port=00da0000
[ATA--] Status=00
[ATA>>] ata_RegisterBus: Analysing bus 0, units 0 and 1
[ATA>>] ata_RegisterBus: IRQ 2, IO: da0000:da1010, DMA: 0
[ATA ] Approximate number of iterations per 100 nanoseconds: 1
[ATA ] ata_InitBus(0)
[ATA00] ata_InitBus: Device type = 0
[ATA01] ata_InitBus: Device type = 0
[ATA ] ata_ResetBus(0)
[ATA ] ata_InitBus: Finished
[ATA>>] ata_RegisterBus: Bus 0: Unit 0 - 0, Unit 1 - 0
[ATA--] ata_Scan: Initialising Bus Tasks..
[ATA ] ata_setup_unit(0,0)
[ATA ] ata_setup_unit(0,1)
[ATA--] ata_Scan: Waiting for Buses to finish Initialising
[ATA--] ata_Scan: Finished
romtaginit
initresident 139c6 '1230scsi.device'
romtaginit done
還包括 KS3.1+/OS3.1+ 工具/showconfig 的輸出
PROCESSOR: CPU 68060/68060fpu/68060mmu
CUSTOM CHIPS: AA PAL Alice (id=$0023), AA Lisa (id=$00F8)
VERS: Kickstart version 45.57, Exec version 45.20, Disk version 45.3
RAM: Node type $A, Attributes $505 (FAST), at $8000000-$CFFFFFF (80.0 meg)
Node type $A, Attributes $505 (FAST), at $7000000-$7F7FFFF (15.5 meg)
Node type $A, Attributes $703 (CHIP), at $80000C8-$1FFFFF (~3970.0 meg)
BOARDS:
Board (phase 5): Prod=8512/34($2140/$22)
(@$40000000, size 64meg, subsize same)
Board + ROM (HD?) (phase 5): Prod=8512/12($2140/$C) (@$E90000 64K)
用於 amiga-m68k 的 C:GDBStub 已準備好供所有人使用。僅配置檔案
win32.serial_port=tcp://:1234
如果你希望模擬器延遲啟動直到有人先連線,請新增 /wait。
要啟用 GDBStub,請執行以下操作
AROS> Run C:GDBStub
下次 AROS 因陷阱而崩潰時(或者你執行“C:GDBStop”),GDB 存根將在(真實或虛擬)序列埠上等待 GDB 連線
使用以下 .gdbinit 與 m68k-elf-gdb 連線到 AROS 下的 GDB 存根
---- .gdbinit --- file ../AROS.amiga-m68k/distfiles/aros-amiga-m68k-rom.elf cd ../AROS.amiga-m68k/bin/amiga-m68k/AROS source .gdbinit ## Uncomment for WinUAE connection # target remote localhost:1234 ## Uncomment for serial connection # target remote /dev/ttyS0 ## Fix up Debug_ModList set variable Debug_ModList = &KernelBase->kb_Modules --------------
然後所有常規的 AROS GDB 除錯宏都可以使用,例如“loadseg”、“modlist”、“showtask”等。
我已經能夠透過核心和使用者程式碼獲得完整的跟蹤,並透過此方法獲得完整的 GDB 支援。這使得 m68k 除錯變得更加容易。
你可以獲得 m68k-elf-gdb。
這樣一來,PARANOIA_CFLAGS 就消失了。如果你希望啟用“ -Wall -Werror”構建,只需在 configure 中新增“ --with-paranoia=yes”,整個樹將被構建,以便任何編譯器警告都會停止構建。
你需要注意某些問題
- 日誌正在吃掉一些行和換行符。(或期望換行符 + 換頁符而不是單個換行符)。
[ColdCapture] Ignoring AOS->AROS trampoline [start] InitCode(RTF_SINGLETASK, 0)
例如,上面的行應該在 trampoline 後有換行符,還有其他一些行似乎完全丟失了(由於行太長而被截斷?)以及早期的 configchain 行。
- 最令人困惑的是缺少擴充套件/自動配置相關的行。(“configchain”)。在某些日誌中缺少 ATA 行是正常的,因為 A4000 IDE 無驅動程式檢測比 A1200 更簡單。
- 早期的啟動選單是否正常工作?(即使它似乎卡住了,也一直按住兩個滑鼠按鈕,例如 Blizzard SCSI 初始化大約需要 10 秒)。是的,它可以正常工作。我記得 Blizzard scsi 有點麻煩。按住 lmb+rmb 重啟到早期啟動螢幕
另一個嘗試直接連線到 IDE 埠的驅動程式已經成功地將我從硬碟引導到一個只有紅色游標、沒有其他內容的螢幕。無論如何,它似乎啟動了當前的 nightly 版本。在隨後的嘗試中,我能夠啟動到 AROS,沒有啟動序列。命令工作正常。
[reset] [SysBase] fakebase at: 0000020c RAM lower: 00001000 RAM upper: 001fffff BSS lower: 00135be8 BSS upper: 00135de3 Protect: : 00001000 bss: : 00135be8 rom: : 00135df8 ext: : 001a14b0 [prep SysBase]: 00001000 [new SysBase]: 00001500 CPU: 68060 FPU: 68060 [ColdCapture] Ignoring AOS->AROS trampoline [start] InitCode(RTF_SINGLETASK, 0) SS lower: 00131be8 SS upper: 00135be7 [ATA--] ata_init: ata.device Initialization [ATA--] Gayle ID=d1. Possible IDE port=00da0000 [ATA--] Status=50 [ATA--] ata_init: MemPool @ 6807f338 [ATA--] ata_init: BootloaderBase = 00000000 [ATA--] Gayle ID=d1. Possible IDE port=00da0000 [ATA--] Status=50 [ATA>>] ata_RegisterBus: Analysing bus 0, units 0 and 1 [ATA>>] ata_RegisterBus: IRQ 2, IO: da0000:da1010, DMA: 0 [ATA ] Approximate number of iterations per 100 nanoseconds: 1 [ATA ] ata_InitBus(0) [ATA00] ata_InitBus: Device type = 1 [ATA01] ata_InitBus: Device type = 1 [ATA ] ata_ResetBus(0) [ATA00] ata_ResetBus: Wait for Device to clear BSY [ATA00] ata_ResetBus: Wait left after 0 ms [ATA ] ata_ResetBus: Wait DEV1 to allow access [ATA ] ata_ResetBus: DEV1 1/2 TimeOut! [ATA ] ata_ResetBus: DEV1 1/2 Wait left after 50 ms [ATA01] ata_ResetBus: Wait for Device to clear BSY [ATA01] ata_ResetBus: Wait left after 0 ms [ATA ] ata_ReadSignature(00) [ATA 0] ata_ReadSignature: Status 50 Device a0 [ATA 0] ata_ReadSignature: ATA[PI] device present. Attempting to detect specific subtype [ATA 0] ata_ReadSignature: Subtype check returned 00:00 (0000) [ATA 0] ATA_EXECUTE_DIAG sent [ATA 0] ata_ReadSignature: Further validating ATA signature: 1 & 0x7f = 1, a0 & 0x10 = unit [ATA 0] ata_ReadSignature: Found *valid* signature for ATA device [ATA ] ata_ReadSignature(01) [ATA 1] ata_ReadSignature: Status 00 Device b0 [ATA 1] ata_ReadSignature: ATA[PI] device present. Attempting to detect specific subtype [ATA 1] ata_ReadSignature: Subtype check returned 00:00 (0000) [ATA ] ata_InitBus: Finished [ATA ] ata_init_unit(0) [ATA>>] ata_RegisterBus: Bus 0: Unit 0 - 2, Unit 1 - 0 [ATA--] ata_Scan: Initialising Bus Tasks.. [ATA1654092] IRQ: Checking busy flag: device still busy. ignoring irq. [ATA ] ata_setup_unit(0,0) [ATA ] ata_setup_unit: Enabling IRQs [ATA00] ata_Identify: Executing ATA_IDENTIFY_DEVICE command [ATA00] IRQ: Checking busy flag: device still busy. ignoring irq. [ATA--] ata_Scan: Waiting for Buses to finish Initialising
由於每臺擴充套件裝置都已從這臺機器上物理移除,但仍然收到相同的日誌,缺少“configchain”及其朋友?
可能是 cyberstorm 0x00f00000 對映 ROM 做了一些奇怪的事情…
- 下載 http://aminet.net/dev/moni/mon165.lha
- AOS 冷啟動(斷電,開機),在沒有啟動序列的情況下啟動。(冷啟動很重要,暖啟動後奇怪的居民可能會處於活動狀態)
- 執行“mon”
- 輸入“ ] f00000 10000 dump.rom”儲存 ROM 資料。(現在你可以正常重啟了)
壓縮並透過電子郵件傳送該檔案。
選擇模式後,螢幕模式首選項崩潰,這種情況從一開始就一直在發生。我很久以前就嘗試除錯過這個問題,但沒有發現任何有趣的東西。現在我只需要忽略崩潰,並在需要更改模式時重啟就可以了 :P
如果你想設定 m68k 構建環境,只需執行“arch/m68k-amiga/doc/build-toolchain.sh”指令碼。它會下載並編譯所有 m68k 交叉工具,並將它們安裝到 /opt/m68k-elf(或任何你想要安裝的位置)
Jason 的典型 m68k ./configure 是
$ configure—target=amiga-m68k \
--with-optimization="-Os" \
--with-paranoia="-Wall -Werror" \
--with-serial-debug \
--enable-debug=all
所有 AROS regcall 宏都還沒有在 -O2 下進行廣泛測試。有些沒有 m68060 來測試。預設最佳化是“-Os”,它在沒有或只有少量指令快取的系統上通常比 -O2 更能提升效能。
以前編譯你自己的版本的方法…
arch/m68k-amiga/doc/README.txt - add GCC/Binutils fetch/compile/install script
regcall 配置(目標 amiga-m68k)。**注意** 堆疊呼叫配置(目標 amiga-m68k-eabi)已過時。
注意:要使用 regcall 配置,你**必須**應用此頁面底部的補丁到 GCC 4.5.1,才能讓 GCC **不**踐踏 A6。實際上,我檢查了我的宏的修復,讓 A5 正常工作。我還有另一個修復,應該允許未修補的 GCC(想要使用 A6 作為幀指標)正常工作。
由於 nightly AROS m68k 構建旨在在所有 Amiga 架構(m68000 - m68060)上執行而無需修改,因此我始終使用 -m68000 編譯。你可以隨意使用不同的 ./configure——with-optimization=… 選項編譯你自己的自定義構建。
編譯的 m68k-elf binutils
./configure—prefix=/opt/m68k-elf—target=m68k-elf
按如下方式編譯 gcc-4.5.1
$ cd gcc-4.5.1
$ ./configure \
--without-headers \
--disable-threads \
--disable-libssp \
--disable-nls \
--disable-shared \
--without-pic \
--prefix=/opt/m68k-elf \
--target=m68k-elf \
--program-prefix=m68k-elf- \
--enable-languages=c
—program-prefix=m68k-elf - 不需要,它似乎自動添加了字首。
構建並安裝 gcc-4.5.1(到 /opt/m68k-elf,或任何你設定的——prefix)
lib 目錄需要手動建立
mkdir bin/amiga-m68k/AROS/Development/lib
$ export PATH=$PATH:/opt/m68k-elf/bin
$ cd AROS
$ autoconf
$ ./configure --target=amiga-m68k \
--with-optimization="-Os" \
--with-serial-debug
$ make
(等待 zune/betterstring 結束構建)
$ make kernel-link-amiga-m68k
(等待一段時間)最終你會得到以下檔案:最終成功完成!(總時間大約 4 小時…)
- bin/amiga-m68k/AROS/aros-amiga-m68k.elf
- bin/amiga-m68k/AROS/aros-amiga-m68k.rom
elf 檔案在除錯時可以提供給 GDB 連線到 UAE 序列埠…
rom 檔案可以這樣提供給 UAE
uae -s kickstart_rom_file=bin/amiga-m68k/AROS/aros-amiga-m68k.rom
在作為“庫存”A1200 AGA 執行的 UAE 上測試
乾淨的 AROS 構建,使用以下配置行
../AROS/configure—target=amiga-m68k—with-optimization="-Os"—with-serial-debug
也嘗試從頭開始構建,有時並非所有檔案都會自動重建。
https://gitorious.org/aros/aros
關於 m68k 可“ROM”程式碼的注意事項
- 沒有全域性變數 - ROM 中沒有 .data 或 .bss 部分!
- 全域性常量是可以的 - 我們有 .rodata
如果您需要開啟庫,您必須顯式執行此操作 - 您不能使用 AROS 自動開啟功能。
VBCC 支援一些 C99 和所有 C89。GCC 和 LLVM 都支援從 C89 到 C++14 的所有級別。VBCC 根本不支援 C++。恐怕沃爾克沒有像 PHX 對 VAsm 和 VLink 一樣有那麼多時間來更新他的編譯器。此外,LLVM 和 GCC 背後都有龐大的團隊:分別為 Apple 和 Linux。LLVM 有更好的許可證情況(BSD 等效許可證與 GPL3),而 VBCC、VAsm 和 VLink 都需要書面許可才能進行任何商業用途。
VBCC 不支援 GCC 中的 GNU 擴充套件。Clang 支援,但幾乎與 GCC 一樣重。坦率地說,我懷疑更新 GCC 後端的工作量不會比在我 GitHub 帳戶上完成 LLVM 68k 後端的工作量少。
GCC 生成的 68K 程式碼很糟糕,這意味著 AROS 的二進位制檔案更大,執行速度比 Amiga 3.x 的二進位制檔案慢。GCC 的問題不在於編譯器框架本身,而在於將中間表示翻譯成最終二進位制檔案的後端。後端從最佳的中間程式碼生成次優的 68k 程式碼。最終,無論使用 GCC 還是 LLVM,我們都需要一個新的或更新的後端。
Amiga 3.x 作業系統有很大一部分是用匯編程式碼編寫的,而在 AROS 中,這只是一小部分(嚴格來說是需要與硬體進行介面的作業系統)。
debian7 構建,獲取原始碼請參考“building aros68k”。
至於 x86 宿主構建的依賴項,您還需要
-x11-dev 標頭檔案和連結庫
為了編譯貢獻(您首先需要將 contribs 資料夾複製到 aros 資料夾中,然後“make contrib”,您需要 cmake 和 gperf 包用於 aros-owb。
首先配置:從並行資料夾構建,您需要指定
../AROS-source/AROS/configure—enable-x11-shm—enable-x11-hidd—enable-debug—with-serial-debug=yes
首先,這兩個選項都應該讓你與 x11 系統整合,以便獲得任何圖形輸出。最後兩個選項是由於除錯,它們可以在普通使用者構建中省略。
遇到以下錯誤的人
Making country files... /home/wawa/x86-build/bin/linux-i386/gen/workbench/locale/countries/makecountry: System locale is invalid
用“dpkg-reconfigure locales”設定 en_GB.UTF-8 作為預設值暫時解決了這個問題。否則以 root 身份編譯可以解決這個問題
首先,需要在您的(交叉)編譯器主機上安裝的 aros 依賴項包
binutils-source
libcloog-ppl-dev (adds lots of other dependencies)
g++ (may be necessary too look for gnu-c++ compiler package)
libelf-dev
bison
flex
gcc-4.5-source (doesn't seem to be necessary anymore since the compiler version has been upgraded)
libmpfr-dev
libmpc-dev
libecm-dev
netpbm
automake
libpng-dev (libpng12-dev)
libc6-dev-i386
獲取 V1 原始碼
原始碼可以從以下連結下載:http://aros.sourceforge.net/de/download2.php 或透過 git(假設您已安裝此包)
mkdir AROS-source
git clone git://gitorious.org/aros/aros.git AROS-source
cd AROS-source
git checkout ABI_V1
現在實際上在與 AROS-source 目錄同級的單獨構建目錄中構建 aros
mkdir build
cd build
../AROS-source/AROS/configure --target=amiga-m68k --with-serial-debug=yes
make
這裡還有另一種方法:在單獨的目錄中構建 aros 68k 交叉工具
我們從頭開始。目錄結構(請注意,這與前面的示例不同)
<some dir> - aros (clean aros sources here, no binaries!) - build-m68k-tools (cross compiler will be built here) - yet another directory where aros-m68k will be build (I just use "build")
<some dir>
cd build-m68k-tools
../aros/configure --target=amiga-m68k --with-aros-toolchain-install=/opt/aros-m68k
sudo make -s crosstools
(sudo 是必需的,因為工具鏈將安裝在 /opt/aros-m68k 中。否則構建將失敗)
交叉工具現在應該已成功構建。
現在我們回到我們的主目錄
cd ..
在另一個單獨的目錄中構建 aros
更改到構建目錄,配置並在那裡構建 aros。
../aros/configure --target=amiga-m68k --with-aros-toolchain-install=/opt/aros-m68k --with-aros-toolchain=yes --with-serial-debug=yes
make -s (-s to keep it less verbose)
aros 現在可以在 /build/bin/amiga-m68k/AROS 中找到,可執行檔案都以 elf 格式存在,因此如果我們希望 aros 從 amiga kiskstart 軟啟動,我們需要將 boot/amiga/AROSBootstrap 轉換為 hunk 可執行檔案,這可以使用為主機體系結構編譯的工具來完成,在本例中為 ubuntu,它位於 /build/bin/linux-i386/tools/elf2hunk 中
boot/amiga/AROSBootstrap 需要替換為結果檔案。s:startup-sequence 需要修改以載入 aros.elf
boot/amiga/AROSBootstrap ROM boot/amiga/aros.elf
現在將 /build/bin/amiga-m68k/AROS 目錄的內容複製到 amiga 可引導分割槽。您應該能夠在 uae 或實際的 amiga 計算機上使用它引導 aros。:)
一些額外的 make 選項
make distfiles - 應該自動將 elf 可執行檔案轉換為 hunk(待確認)
make kernel-link-amiga-m68k - 構建 kickstart rom 檔案 aros.elf
make (在特定模組的源目錄的 mmakefile.src 中找到的模組名稱)-quick - 使用快速選項構建所需的模組,以節省一些時間。
請注意,為了在編輯原始碼後重新構建模組,必須先刪除構建目標目錄中的編譯二進位制檔案。為了處理和構建某些模組,可能需要先編譯完整的構建。
它確實使用 Amiga hunk 檔案,並且你可以混合和匹配到一定程度(AROS 元件是 ELF 檔案),但 AROS 可以載入兩者:) 雙向工作,不僅僅是 AROS 環境中的 Amiga 檔案,還有 Amiga 環境中的 AROS 可執行檔案。要使用的工具是 ELF2HUNK,由 Jason McMullan 開發。有一些限制。最值得注意的是,使用 arosc.library(類似 ixemul)的 AROS 應用程式將無法執行(至少現在還不行),arosc.library 本身也無法執行,因此將其遷移過去對你沒有任何幫助。但是,那些堅持純粹使用 AmigaOS API 的應用程式將可以執行。這個限制使得它在目前非常有限。為了使 AROS 元件在 AmigaOS 上執行,您最好看看 AfA。
請記住,在相同的硬體上,Amiga68k 仍然比 AROS 最佳化/更快,但我們正在努力解決這個問題。
事實上,我們計劃在未來切換到 ELF 可執行檔案,而不是可重定位物件。我們仍然需要檔案中的重定位資訊。如果你在具有重定位資料的 ELF 可執行檔案上呼叫 strip,你會保留重定位資料,但會丟失 SysBase 符號。但是,錯誤的“strip”會使任何當前的可執行檔案都無法使用:我們需要符號表和重定位資訊才能載入可執行檔案。
第一次嘗試?
- 2008 年底
- Heron,又名 Gregory John Casamento,決定接手 m86k 移植。
- 2009 年 1 月 5 日,星期一
- ARaNyM 配置問題...目前正在嘗試讓 ARaNyM 執行,以便我可以繼續在 680x0 上構建 AROS。
這個移植在這篇文章釋出後幾個月令人遺憾地失敗了,事實證明,為了完成這項工作,很難檢索參考材料以及舊硬體(例如 ROM 核心手冊、技術通訊、開發工具包等)。
- 2010 年 1 月 4 日
- Gary Pearman 寫道:歡迎來到我的第一篇博文。這個部落格主要用於我收集我的想法,並讓所有 AROS 人員瞭解我在 Kickstart ROM 替換獎勵方面的進展。乾杯,Gaz。
- 2010 年 1 月 12 日
- 在與 AROS 開發列表和 #aros 上的許多人交談後,我決定改變對獎勵的態度,嘗試不同的方法。這個想法是忘記 .unmaintained 中的東西,而是嘗試讓 AROS 為 m68k 主機編譯。要開始工作,我需要在 Aranym(是的,一個 Atari ST 虛擬機器)上安裝並執行 debian m68k。
- 2010 年 1 月 23 日
- 進展 - 好的,所以我決定放棄 Aranym 路線,直面我對 AROS 構建過程的恐懼!基本上,我從頭開始建立了 m68k-amiga 構建檔案,並將它們基於 ppc-sam440 構建檔案,這些檔案很新、乾淨。我已經刪除了 unmaintained 中幾乎所有內容,並且只是嘗試讓核心編譯。
- 2010 年 3 月 21 日
- 工作 工作 工作 - 最近我一直忙於其他工作,所以沒有時間去看(現在已經過期的)獎勵。
- 截至 2010 年 4 月
- 關於 摩托羅拉 68k 移植 AROS 的工作再次停止。
最初,該埠將不依賴於 MMU 的存在,並將首先針對 UAE 第一階段。 某些專用的 Amiga 硬體支援(目標是能夠啟動大多數 KS1-3 磁碟,包括遊戲和演示,並涵蓋處理器 68000、68020、68030、68040 和 68060)將在 第二階段 之後進行。 然後進行帶有低階偵錯程式的 alpha 測試,並生成完整的錯誤報告。 然後進行最佳化,最後是常規測試。
- 使它能夠正確編譯(這是一項非常艱鉅的任務 - Jason 在 2010 年第一階段完成)
- 新增低階核心程式碼(任務切換、中斷處理等.. Jason 在 2010 年第一階段完成)
- 新增硬體驅動程式(滑鼠、鍵盤、圖形 P96 RTG、磁碟等.. Toni 在 2011 年第二階段完成了這些)
- 一些額外的硬體支援(Gary IDE、afs 處理器等.. Toni 在 2011 年第二階段完成了這些)
第二階段是提供一個 *基線* Kickstart 替代品。 請不要期望對非官方 Amiga 硬體(例如 Natami 或 Replay FPGA Arcade)提供驅動程式,僅限真正的 Amiga 或 UAE。 目前所有時序和顯示設定都假定 PAL 配置。 建議使用 RTG 模式,自定義晶片組驅動程式只是一個概念驗證(在更重要的功能執行之前,它不會被最佳化或改進)。
- 2010 年 10 月 10 日星期日
- Jason S McMullan (ezrec) 寫道:終於,經過 3 周,我將 AROS 移植到 m68k-amiga 的 m68k 埠初見端倪。 它 無法執行,很快就會崩潰,但我已經完成了 "編譯它"、"用 Amiga ABI 編譯它" 和 "進入 Exec Init" 階段。 非常開心。
- 2010 年 10 月 17 日
- m68k-amiga 核心已經簽入。
- 2010 年 10 月 18 日星期一
- 下午 6:10,Jason McMullan 寫道:完成了我的(最小化)gcc 補丁,這些補丁引入了 Fred Fish 的 asm() 標籤來用於暫存器引數(regcalls),並且正在努力讓 AROS 用它編譯。 主要是在重新排列變數宣告,使它們全部位於函式的頂部等等。
- 2010 年 10 月 20 日星期三
- 我的 GCC 4.5.1 問題已經解決。 使用對 GCC 4.5.1 的微不足道的補丁,將預設的 FP 暫存器從 A6 移動到 A5,以及我簽入的新 "gencall.c" 來生成 libcalls,我現在可以執行正確的 Amiga 風格的暫存器 libcalls! 由於 AROS 存根的設計,當您呼叫使用與您放入暫存器變數的相同暫存器的 Amiga 函式時,您可能會遇到問題,例如,當您告訴 GCC 使用暫存器 a2 作為 foo 時。 這是透過宏解決的。 我負責處理所有這些問題。 我正在使用的工具鏈只會生成 ELF 二進位制檔案。 *ROM* 將能夠載入並執行 ELF 和 HUNK(最終),但我沒有計劃在工具鏈中新增 HUNK 支援。
- 2010 年 11 月 1 日星期一
- Toni Wilen 寫道 - disk.resource(trackdisk.device) - cia.resource(cia 中斷) - potgo.resource(滑鼠第二/第三按鈕) - trackdisk.device(目前為只讀,基於 PC 驅動程式,需要大量重寫,沒有 disk.resource 使用,非常依賴於 PC 控制器) - amiga 滑鼠 hidd - amiga 鍵盤 hidd。 Jason 寫道太棒了! 我們現在只需要 "僅僅" graphics.hidd 和磁碟塊讀取,我們就可以在沒有 Frankenrom 的情況下啟動 AROS 了!
- 2010 年 11 月 3 日星期三
- Jason 寫道 KS 3.0:正在 那裡! Exec 現在將透過 OS3 庫到達啟動螢幕! 我現在需要做一個只包含 Install 啟動塊的磁碟。
- 2010 年 11 月 3 日星期三
- Toni Wilen 委派了 KS 獎勵第二階段。 主要缺少的驅動程式似乎是 gfx hidd,我的第一次嘗試將是僅限 UAE 的 Picasso96 HIDD,當顯示器正常工作時,其餘更新應該相當簡單。(主要是 hunk 載入器、expansion.library 自動配置?) 我不反對自定義晶片組 HIDD,但 UAE Picasso96 HIDD(使用 AmigaOS(TM) 側 Picasso96 使用的原生 UAE Picasso96 輔助例程)將更容易、更快捷地實現,並且還會使非 HIDD 部分更快、更簡便地除錯。(沒有共享 VRAM,更少的程式碼,1:1 幀緩衝區對映等..)。 我也不明白如果自定義晶片組 gfx HIDD 只是一個虛擬幀緩衝區,失去了所有自定義晶片組功能(硬體精靈、使用者銅列表等..),它將是兩全其美 :)。 當然,將來需要某種簡單的自定義晶片組 gfx HIDD 來顯示啟動遊戲時的可能 CLI 訊息,但這應該在其他所有東西都正常工作後才出現,併為有興趣提供 OCS/ECS/AGA 支援的人提供 "基本級別" 的功能。
- 2010 年 11 月 8 日星期一
- Jason 寫道 ROM 現在已經拆分。 "rom" 映像將包含從磁碟啟動所需的一切,而 "ext" 映像將包含該任務不需要的一切。 理想情況下,"ext" 磁碟上的庫和資源可以在 AFS 檔案系統上。 現在,直覺、圖形和層都存在於 "ext" 上。
0xf80000-0xffffff: a-m-a-rom.bin - 0xe00000-0xe7ffff: a-m-a-ext.bin.
- 11 月 7 日星期日
- Toni 寫道 我需要簽入非 hacky 的程式碼更改,然後睡一覺。
Jason 接著寫道 我剛醒來,所以我想現在輪到我了 :D - 兩人程式設計。
- 2010 年 11 月 12 日星期四
- Jason 寫道 Shell 正在執行
- 2010 年 11 月 16 日星期二
- 第一階段被認為已經完成。 還包括一些 Amiga hunk 支援。
- 11 月 22 日星期一
- Toni 寫道
- 只使用 WinUAE 測試過,需要最新的 WinUAE beta 版 (2.3.1b6),它重新添加了多年以前刪除的 "舊式" RTG 介面,應該可以在所有支援 Picasso96 的 UAE 版本中使用。
- 僅測試過調色盤 8 位模式,以及塊狀 640x480x8。 16 位和 32 位 PC 風格模式已包含,但未測試。
- 使用的大多數原生 blitter 函式 = 快速。 但是如果您的 UAE 埠不支援任何 P96 blitter 函式,它將非常慢,當前驅動程式只是退回到非常慢的 get/putpixel 模式。 報告此問題,我會新增 "軟體加速" CopyBox() 及其相關函式。
- 據我所知,只有 WinUAE 有硬體精靈模擬,而且只有在 D3D 模式下(出於某種原因,aoHidd_Gfx_SupportsHWCursor = FALSE 沒有任何作用?)
- Z3 32 位快速 RAM 板現在可以正常工作。
- UAE 目錄檔案系統掛起問題已解決(卷標/名稱仍然很奇怪......無法使用)
- 啟動序列中的大多數內容都能正常工作(最大的例外是工作臺)。 我們決定首先改進 WB/OS 使用,它也使除錯更快、更輕鬆。
- 11 月 23 日星期二
- Jason 寫道 因此,這是我的 Kickstart 獎勵我任務列表,按照優先順序順序:優先順序 0:協助 Toni Wilen。
- 讓 AROS KickStart 能夠使用 LDDaemon 從啟動驅動器的 Libs/ 目錄中提取 AROS 圖形、工作臺、gadtools 等庫 - 清理各種問題,並進行測試。 嘗試修復超層/圖形迴圈依賴關係。
- 讓 AmigaOS 3.1 + AROS Libs/ 在 HD0: 上啟動 - 來自磁碟的 AmigaOS workbench.library - BCPL 工作,根據需要 - 弄清楚如何處理 ConClip
- 讓 AmigaOS 3.0 + AROS Libs/ 在 HD0: 上啟動 - 更多 BCPL 工作
- 讓 AmigaOS 1.3 + AROS Libs/ 在 HD0: 上啟動 - 更多 BCPL 工作,相容性修復
- 12 月 7 日星期二
- Toni 寫道 dos.library 相容性得到了極大的改善(而且它也快得多)。 例如,原始的 WB2/3 磁碟現在可以在沒有警告、錯誤或崩潰的情況下啟動。 請注意,工作臺不會執行,因為它還沒有包含在 ROM 中,Wanderer 是 AROS WB 替代品,太大了。 BCPL 支援即將推出(Jason 正在做這件事)。 Jason 寫道 藉助 Toni 的 DOS Packets 補丁,以及我今晚的最新簽入,我目前可以讓 WB 1.3 的 C:Echo(BCPL!)執行。 現在,BCPL 和 Packet 支援基礎設施已經到位,WB 1.3/3.0/3.1 的 BCPL CLI 應用程式的完整 AmigaOS 1.3 支援只是一個程式設計的小事。 我預計到 2011 年 1 月中旬,將有 95% 的工作臺 1.3/3.0/3.1 BCPL 應用程式正常工作。 有沒有人知道除了 1.x/2.x/3.x 的工作臺/安裝磁碟上的那些之外,還有其他任何 "主要的" BCPL 應用程式應該測試嗎?
- 12 月 19 日星期日
- Toni 添加了 dos 資料包模式 AFS 處理程式的大多數常見部分......Toni 添加了更多缺少的 dos 資料包 AFS 處理程式命令......
- 2010 年 12 月 27 日星期一
- Toni 寫道 m68k-amiga AROS 埠現在可以啟動 AROS 原始啟動序列,沒有任何奇怪的副作用(沒有插入磁碟請求器或啟動 shell 沒有關閉等)。 大多數實用程式可以執行,大多數首選項程式至少可以開啟。
- prefs/screenmode 在寬度、高度和深度字串小部件中顯示隨機(未初始化變數?)值。(選擇任何模式時系統會崩潰,我稍後會除錯)GUI 問題對我來說太高階了。(我對 MUI 也有一些個人問題)
- WB "資訊" 選單無法開啟,TextEditor.mcc 無法初始化。(又是 MUI,啊)
- WB 雙擊檢測非常不可靠。
- compiler/alib/timedelay.c 和 compiler/include/clib/alib_protos.h 不匹配。 我嘗試將 AROS_UFP3() 宏新增到 alib_protos.h,但隨後 intuition/menutask_aros.c 拒絕編譯。(沒什麼大不了的,目前它只是使所有 TimeDelay 呼叫由於 UnitNum 是一個很大的數字而失敗)
- 最後,WB1.3 啟動序列現在執行得相當好。 剩餘問題:FastFonts (ff) 會損壞所有字型,system/setmap 預期從 OpenDevice() 獲得 LONG 返回型別。 將 OpenDevice()/WaitIO()/DoIO() 返回型別更改為 LONG 可以嗎? 它對現有程式應該沒有影響。
- 2010 年 12 月 31 日星期五
- Toni 寫道 SYS:Extras/Zune/ MCC_NList/s/Package-Startup 無法工作(它真的有必要嗎?SYS:Classes 此時已經分配了)。 Assign 開啟啟動控制檯視窗並列印 "找不到 Classes",因為啟動序列 SYS:Packages 部分在執行指令碼之前會 CD: 到包目錄。 Package-Startup(和 Shutdown)應該被刪除,或者命令應該改為 "Assign LIBS: SYS:Classes ADD"。 另外,C:Assign 壞了,它在 doslist 鎖中呼叫 NameFromLock(),這可能是個壞主意(在非 dos 資料包模式下可能不是問題)。 最後,2010 年的最終年度狀態報告
- Wanderer PNG 圖示現在可以正確渲染(需要真彩色 UAE RTG 模式,注意螢幕模式更改會導致崩潰,您必須選擇儲存 + 冷啟動),僅限 WinUAE 的真彩色硬體精靈顏色已修復。
- Shell CTRL+D 和 CLI faillevel 檢查已實現(至少在 dos 資料包模式下可以工作,仍然有一些問題,因為 >NIL: 會吞掉不應該吞掉的某些錯誤輸出)
- UAE 滑鼠滾輪鍵碼不再無限重複。
- Titanics 壓縮器偽疊加可執行檔案受支援 :)(真實/完整疊加可執行檔案尚不支援)
- WB1.3 C:FF 不再損壞字型。WB1.3 啟動序列現在完美執行。(減去工作臺)
- 還有更多。
- 2011 年 1 月 7 日星期五
- Jason 寫道 我剛收到了我的 ACA 1230/56,它將允許我在我的 Amiga 1200 上開始測試 AROS(需要明天買一個性別轉換器用於序列埠!),並且正在努力嘗試讓 AROS m68k 在真實硬體上執行。祝我好運!我的 A1200 上的第一次啟動日誌 - 在初始化期間掛起,我將在明天新增一些除錯資訊。Toni 寫道 這可能是與自動配置有關的問題。你能執行 Scout 並附加系統中每個自動配置裝置的自動配置詳細資訊嗎?擴充套件自動調整 z3 擴充套件板支援已提交。此外,執行重定位現在可以正常工作並已啟用。
- 2011 年 1 月 13 日星期四
- Jason 寫道 A1200 上的 AROS 非常慢,但我認為這主要是由於預設情況下我獲得的未最佳化的 AGA 隔行掃描模式。我將 amiga-m68k(以及其他一些地方)中保留的 all '#define DEBUG 1's 重置為 '#define DEBUG 0',現在我們可以停用—啟用序列除錯(並且仍然可以在序列埠上獲得 SAD)。減少序列除錯(並將 OOP MID .bss 放入晶片 RAM 中,事實證明只有 512 位元組左右)對圖形效能幾乎沒有改善,所以我暫時讓 Toni 去擔心它。滑鼠在 A1200 上的 AROS 上執行良好,但我沒有收到任何按鍵。我將在明晚除錯它,除非 Toni 比我先完成。如果即使在顯示器處於空閒狀態時它仍然很慢,那就一定有別的原因。Toni 寫道 這可能是與鍵盤無法工作有關,鍵盤握手工作不良會導致佔用過多中斷時間。與 WinUAE 快速啟動 A1200 週期精確最相容模式進行比較,如果它同樣慢或甚至更慢:它一定是硬體相容性問題。Gayle 相容 ata.device 狀態:驅動器檢測部分工作,應該在今天或明天“完全”工作。(它目前是 ifdefs 的一大堆混亂,在確認工作後將清理乾淨)。
- 2011 年 1 月 15 日星期六
- Toni 寫道 m68k-amiga ata.device 現在完成了。(應該叫它“scsi.device”嗎?)。我將特定於 pc 硬體的程式碼和特定於 amiga 的程式碼(ata_pc 和 ata_amiga)分開,ata.device 維護者如果感興趣可以將其合併回 rom/devs/ata.device(我不介意 Amiga 版本是否被破壞,我只是不想破壞“PC”版本或造成意外的資料損壞.. IDE 太奇怪了,太容易被破壞了)。A600 和 A1200 Gayle 介面以及 A4000 類 Gayle 介面受支援。(僅測試了 A1200 真實的 Amiga)。
- 硬體特定部分已分離
- 一些 CF 卡(也許還有其他卡?)似乎將 1 作為多重傳輸大小返回。僅設定 ATA 規範中列出的值(2、4、8、16、32、64、128)
- 在執行診斷 ATAF_BUSY 等待之後添加了 ATAF_DRDY 等待,上面的 CF 卡如果在執行診斷後但在設定 DRDY 之前傳送新命令,似乎會掛起。
- #ifdef DMA 支援和其他 Amiga 埠不需要的東西。
- 如果未檢測到驅動器,則不初始化裝置驅動程式。(僅快速測試)
- 如果未檢測到 ATAPI 裝置,則不啟動 ATAPI 媒體檢查任務。
- 還有一些我忘記了的東西..
WinUAE 說明:你需要 2.3.1 beta 11(今天晚些時候釋出)或更高版本,因為執行診斷尚未模擬。(我不模擬看起來未使用的命令,甚至 m68k linux 或 netbsd 也沒有使用它)
- 2011 年 1 月 16 日星期日
- Toni 寫道 AROS ROM 載入器終於在我的 A1200 上運行了(Blizzard 1260 + SCSI 套件 + SCSI-IDE + 8G CF 卡)。Blizzard 1260 快速 RAM 和 1230scsi.device 也似乎可以正常工作,即使引導分割槽掛載(PFS3ds)和自動引導(但第二個分割槽沒有掛載,它被格式化為 SFS。不要問。)。顯示器非常慢並且閃爍,我想 sooner or later 需要對原生晶片組驅動程式進行最佳化.. 載入器和如何構建可重定位 rom 映像的說明將在稍後釋出。我還將先進行 A3000 測試。(它必須在公開發布之前工作)。唯一的先決條件是 1M 或更多 MEMF_LOCAL 快速 RAM(在重置期間不會消失的 RAM)或 2M 晶片 RAM(在這種情況下,上部 1M 將由 ROM 使用)。不使用或不需要 MMU(我不想觸碰任何與 MMU 相關的東西)。所有內容都由載入的 AROS “ROM” 處理,包括自動配置。當你只有序列埠輸出時,除錯這東西花了很長時間.. 我想我必須在 ROM 載入器中包含 HRTMon 偵錯程式 :)
- 1 月 27 日星期四
- Jason 寫道 有沒有人有興趣進行 AROS m68k 的 Alpha 測試?現在我們(Toni 和我)需要測試人員來
- 嘗試在 A1200 和其他 Amiga 硬體上執行 AROS
- 至少擁有 2M 晶片 RAM 和 4M 快速 RAM
- 能夠自己除錯他們發現的任何問題
- 提交修復這些問題的補丁,或者至少是一個演示缺陷的小型 C 或 m68k 彙編測試用例。
我們還沒有準備好進行通用測試。如果你不瞭解 m68k 組合語言和底層偵錯程式的使用方法,請等待 AROS m68k 開發的下一階段。這些早期版本的 AROS 只保證會崩潰,破壞你的資料,或釋放你 Amiga 中的所有魔力煙霧。你已被警告。
- 2011 年 2 月 3 日星期四
- Toni 寫道 是時候檢查 Kickstart ROM 替換(第二階段)的狀態了。
- 唯一缺少的部分是建立與 AmigaOS 二進位制檔案相容的可執行檔案(ELF 與 HUNK)。我們真的需要某種(非常無聊的程式碼)ELF 到 HUNK 轉換器嗎?gcc 永遠不會直接建立 hunk 二進位制檔案,這是很有可能的。(Jason,你是否已經對轉換做了一些工作?)
- 然後是第 4 部分:Michal 的所謂工具在哪裡,誰會使用它?:) 啟動 Sys:Tools/Screengrabber,進行螢幕截圖並將結果檔案儲存。
- IMO 這需要在開始 ABI v1(和 dos 包?)合併之前關閉,因為它可能會在很長一段時間內破壞很多東西..
- 2011 年 2 月 15 日星期二
- Jason 寫道 我認為 ELF2HUNK 足夠讓使用者在 AROS 下編譯非 arosc.library 應用程式並在 AOS 下執行它們,但讓 AROS 在 AOS 下執行是一項更大的任務。我現在將 SetPatchAROS 保留下來 - 它足以在 AOS 3.1 下執行非 arosc.library ELF 應用程式。arosc.library 很痛苦,但更糟糕的是 Intuition 和 Exec 中的擴充套件函式,它們很難乾淨地新增到正在執行的庫中。
- 2011 年 2 月 16 日星期三
- jason 寫道 這就是為什麼我們接近 m68k Amiga KickStart *Replacement* 賞金的第二階段結束的原因。在我讓 AROS-Contrib 再次構建之後,我的待辦事項清單是“Wanderer Lite”,因為 Toni 對 KS Bounty II 的截止日期即將到來,我已經答應他一個適合 A1200(2M RAM)、帶有 GUI 的 gdb 的 Wanderer 的 ROM 版本,以及一個視窗任務和對數學庫的關注。
- 2011 年 2 月 26 日星期六
- Jason 寫道 我一直在清理 BGUI 以在 m68k 和託管 x86_64 上執行,並取得了一些進展。主要的 BGUI 演示現在可以在 m68k 和 x86_64 上執行,存在以下問題,我應該在本週末結束之前解決這些問題。$(PARANOIA_CFLAGS) 已為那些用—with-paranoia ./configure 的人啟用。
- LayoutGroup 失敗(m68k & x86_64)
- 巢狀檢視(對齊問題)(m68k & x86_64)
- 拖放崩潰(m68k & x86_64)
- PrefMX 複選框(在 m68k 上工作,在 x86_64 上失敗)
- bgui_calculator(在 m68k 上工作,在 x86_64 上失敗)
- 2011 年 3 月 8 日星期二
- Toni 寫道 用最新的 winuae 試試,它內建了 AROS rom 映像。請注意,使用未公開功能或其他奇怪內容的 WB 程式將無法工作(主要是 2.0+ c:setpatch 和 c:iprefs)。1.3 內容執行良好。原生顯示模式 ID 不正確,它們目前使用一些生成的 ID。(AROS 圖形子系統存在一些與原生圖形相關的限制,需要在它可以 100% 工作之前修復,這不是我的問題)。audio.device 什麼也不做。(我還沒有費心去處理它,除了分配通道之外,很少需要它)。
- 2011 年 3 月 9 日星期三
- Jason 寫道 Workbook 超輕量級工作臺/流浪者替代品
- Workbook 是一個基於 BOOPSI 的工作臺替代品,專為非常輕量級的系統設計,即 Amiga m68k。
- 這是初始原型檢入,它可以(在由於我尚未完全診斷的某些記憶體損壞而崩潰之前)開啟磁碟卷、抽屜並啟動應用程式
- 待辦事項:停止崩潰、快照、複製、貼上、重新命名、資訊等等。
在 m68k 上的編譯總大小為 20k。這 *不* 意味著它要替代完整系統上的 Wanderer。它適用於記憶體不足/CPU 速度慢的系統,以及作為 workbench.library 的練習工具。我計劃儘可能使用 workbench.library 掛鉤。一旦我讓 Workbook 穩定下來,並能夠進行一些簡單的檔案管理(刪除、重新命名、複製、格式化),我計劃讓它成為“LoadWB”的 ROM 常駐版本,以便 KS 1.3-3.x 可以使用它作為他們的“工作臺”。Workbook 再次強調,對於所有其他體系結構來說,它完全是可選的,並且將駐留在 SYS:System/Workbook/ 中。
- 2011 年 3 月 9 日星期三
- Toni 寫道 截止日期還有幾周的時間。在被認為完成之前還需要做其他什麼事情?我計劃做的事情(不確定何時)
- Paula audio.device
- 最佳化原生晶片組 gfx 驅動程式(它目前非常慢)
- 支援 Picasso96 *.card 驅動程式檔案的 HIDD 包裝器。(已經部分完成了,但這只是最簡單的一部分..)
這讓人很煩, “不工作” “錯誤報告”,期望所有事情都由我和 Jason 迅速完成,即使這與賞金無關,主要是核心程式碼的更改,無法在沒有討論和計劃的情況下完成。這些東西中的大部分是隻有 m68k-amiga 端口才需要的,你不能僅僅新增它,然後破壞所有埠(我想這樣做,但這不符合工作方式)。WinUAE 方面要輕鬆得多,因為我可以自由地選擇做什麼以及何時做,而無需詢問任何人。這就是為什麼我想盡快完成這個賞金,因為只有這樣我才能再次純粹為了樂趣而做 AROS 的事情,而不會被挾持。(“你仍然需要做這做那,否則...”)。除錯和增強將持續進行。
第二階段被認為已完成。
- 2011 年 3 月 25 日
- Toni 寫道
- 2.x-3.1 WB 磁碟應該可以無問題地引導,現在還包括正確的調色盤和滑鼠游標設定。
- 現在完全相容 WB2+ C:IPrefs。
- 1.x 除了 C:Run(只輸出錯誤)和 AROS 常駐執行需要 T: -> WB 磁碟必須啟用寫入。這將在以後修復。
- devs:system-configuration 已載入並使用(1.x 啟動盤顏色正確等)。
- 支援防重置程式(kicktags、coldcapture 等)。
- ArosBootStrap 附帶原始碼樹,AROS softkick 載入器可在任何具有 2M 晶片或 1M 或更多本地快速 RAM 的 Amiga 上執行。(*)
已知問題
- 不要使用 OS3.5+ setpatch,它在沒有特定 setpatch 檢測的情況下將永遠無法工作。
- 系統補丁(如 FBlit 等)無法相容。不要使用。
- Scalos 不工作,原因未知。
- 2011 年 4 月 3 日
- Toni 寫道:大多數只使用引導塊載入硬體載入器的遊戲應該可以正常工作,除非它們假設 KS1.x 如記憶體分配和覆蓋 OS 結構,或者做了些只在 1.x 上偶然有效的愚蠢操作。(這並不罕見,不幸的是)。100% 的相容性是不可能的。不可能同時製作既相容 1.3 又相容 3.0/3.1 的 ROM。即使 3.1 的相容性也不能達到 100%,因為它需要實現所有已知和未知的 bug 100%! (可以保證至少有一個程式只能由於某種 OS 錯誤而工作)。
一些更新說明
- real audio.device 已實現,但只進行了最小的測試(audio.device 很少用於聲音,通常只用於通道分配)。
- AROS 圖形模式 ID 更新的第一部分已完成,模式 ID 和深度已分開。下一步是將生成的模式 ID 替換為真正的 AOS 模式 ID。
- 2011 年 4 月 15 日
- Toni Wilen 寫道:隨機狀態報告。
UAEGFX RTG/定製晶片組螢幕切換終於正常工作。即使 whdload 現在也能完美執行。
- 2011 年 5 月 26 日(星期四)
- Toni 寫道:PutTemplate() 游標加速,應該能大大提高原生晶片組速度,不再有緩慢的平面 getpixel/putpixel “游標”。
- 2011 年 6 月 19 日(星期日)
- Toni 寫道:ArosBootStrap 現在接受更多引數,一個或多個額外的常駐檔案(類似於 BlizKick)。例如,“arosbootstrap aros.elf.gz scsi.device_40.12(A3000)” 允許 AROS 從我真實 A3000 上的 SCSI 啟動。(scsi.device 是使用 remus 包附帶的 romsplit 從 A3000 ROM 中提取的)。
下一階段是支援使用 AOS Picasso96 .card 和 .chip 檔案的 RTG 板。(我認為我幾個月前已經提到過)。
“arosbootstrap aros.elf.gz libs:picasso96/CirrusGD542X.chip libs:picasso96/PicassoII.card scsi.device_40.12(A3000)” 已經在我擴充套件的 PicassoII A3000 上載入,PicassoII.card FindCard() 和 InitCard() 函式已經成功並工作。引導選單、引導動畫和引導 shell 已快速測試。(現在是休息的時候了,使用 Amiga 格式的可引導 CF 將 aros.elf.gz 從 PC 移動到 A3000 SCSI-IDE 將在 30 次左右的交換後變得非常煩人)。
- 僅支援 320x240、640x480、800x600,使用硬編碼的或多或少標準的計時變數。
- 至少在理論上,所有卡支援的顏色深度都可用。
- 不檢查大多數卡功能,例如支援的寬度/高度/深度/畫素時鐘組合。
- 將所有點陣圖放在 VRAM 中,如果程式分配和釋放大量點陣圖,VRAM 可能會很快用完或變得碎片化。
- 如果可用,使用驅動程式的游標功能。
- 支援卡的直通切換(如果可用)。
以後會改進,當我/如果我想的話,使用真實硬體進行除錯與模擬相比會浪費大量時間,模擬幾乎是即時的。另外,順便說一句,其他 RTG 卡和 A4000 也會很好,提示,提示:D
查詢您的 RTG 板所需的 P96 驅動程式,請注意,有些驅動程式成對出現(.card 和 .chip 檔案),檔案的順序並不重要。使用 arosbootstrap 載入 ROM 映像和驅動程式檔案,檢查序列日誌。請注意,目前沒有支援的方法可以直接將驅動程式檔案合併到 ROM 映像中。沒有序列日誌 = 無法幫助。
高階晶片組,A3000 SCSI。(當使用 SCSI 晶片時,winuae 的日誌中會出現 “WD33C93 in use”。)但您不需要 SCSI 模擬來測試它,如果您在 AROS 序列日誌中看到 InitResident('scsi.device'),它將工作:)
連結/合併工具也需要一些額外的功能
- 設定 RTF_COLDSTART 或 RTF_AFTERDOS(需要使用 RTG 驅動程式或非 ROM 模組,例如正常的 libs 或 devs*)。
- 更改常駐優先順序(例如,RTG 驅動程式需要比 uaegfx.hidd 具有更高的優先順序)。
- RTG 驅動程式需要修補(它們有 OpenLibrary() 路徑,如 “libs:picasso96/something.chip”,如果物理檔案不存在,這些路徑將無法工作)。
- 大多數正常的 libs/devs 可能會在第二次重啟後無法工作,因為它們通常不是 “純淨” 的。
這是一項我可能將來會做的事情,將其連結為可重定位(甚至壓縮)檔案,並在 InitResident() 時間將其重定位到 RAM。目前的計劃是擁有一個單獨的資源,其中包含所有支援例程,而可重定位的常駐程式只包含一個小的例程,該例程執行 OpenResource(“relocstuff.resource”),如果找到,則呼叫它來解壓縮/重定位它。浪費很少的空間。計劃太多,時間不夠。
Motorola 68040/68060 缺少指令模擬庫現在也正在工作,但它還沒有內建到 ROM 中。它相當大(約 60k),所以我認為它應該只包含在 arosbootstrap 檔案中?(官方的 68040/68060 庫可能不會被使用,因為例如它們需要更新 FPU 棧幀處理 = 觸碰不應觸碰的 exec 內部)。
自動配置支援已部分重寫,大多數板卡現在應該可以正確配置。
- 2011 年 7 月 5 日(星期二)
- Toni 寫道:自上次以來發生了很多變化。
- AROS 現在已完全轉換為 DOS 資料包(所有平臺)。
- Motorola 68040/060 支援庫 ROM 內建。
- CDFS ROM 內建(尚未自動掛載,但可能在將來)。
- 引導選單現在更有用(顯示引導裝置和擴充套件)。
- ArosBootStrap(softkick)模式 AOS 驅動程式支援。允許使用任何 AOS ROM 常駐模組。例如,A3000 ROM scsi.device 可用於在 AROS 中啟用真實的 A3000 內建 SCSI。還添加了對 Picasso96 驅動程式檔案(.card 和 .chip 檔案)的支援,以在 AROS 中啟用 RTG 支援。即使引導選單和引導影像也會自動使用 RTG 模式。
- 2011 年 8 月 6 日(星期六)
- Jason 寫道:現在實際上可以啟動到 Workbook,並使用 HUNK 而不是 ELF 作為可執行檔案。此係統磁碟可在 AROS 和 AOS 3.x 下啟動。理想情況下,它應該使用 AROS 安裝例程和 CDROM 驅動程式進行擴充套件,以便允許從 AOS kickstart 安裝 AROS。
- 2011 年 8 月 23 日(星期二)
- Jason 寫道:我發現有關 KS 1.3 和 3.x 的 CLI/Shell 的資訊。
- 在 KS 3.x 及更高版本中,無法透過 C:Resident 用其他段替換 “CLI” 常駐程式。
- L:Shell-Seg 絕不是一個 “正常” 程式。
- 就像 DOS BCPL fs 處理程式一樣,您必須自己設定 Shell 的 pr_GlobVec,包括安裝其段。有趣。
- 與 CLI 應用程式不同,A0 必須為 NULL。A5/A6 為 BCPL_jsr 和 BCPL_rts。
- 它期望 me->pr_CLI 為 BNULL,並設定其自己的 CLI 結構。
就像 DOS 處理程式一樣,它期望其啟動資料包在 D1 中,並使用它來確定要呼叫的哪個 CliInit* 例程。
- 如果 D1 == 0,它使用 GlobVec 偏移量 0x214 處的 BCPL_cliInit(這應該對映到 DOS/CliInitNewshell 或類似的東西)。
- 如果 D1 != 0,它使用 dp_Type(哈!)作為要呼叫的 BCPL 函式來設定 pr_CLI 結構,並將 D1 傳遞給它。
/* Return codes from the DOS/CliInit*() family */ #define FNF_VALIDFLAGS (1 << 31) /* Valid flags */ #define FNF_ASYNCSYSTEM (1 << 3) /* Async System() call */ #define FNF_SYSTEM (1 << 2) /* If this a System() call */ #define FNF_USERINPUT (1 << 1) /* User provided input stream */ #define FNF_RUNOUTPUT (1 << 0) /* C:Run provided output stream */ /* Shell startup packets. * * In truth, only dp_Res1 and dp_Res2 are 'public' - the rest of * the arguments here are private, and are decoded by the * DOS/CliInit*() routines. * * ---- CliInitNewcli() decoded * * NewCli/NewShell: * * dp_Type = 1 * dp_Res1 = 1 * dp_Res2 = 0 * dp_Arg1 = BPTR Lock of directory (shell must close) * dp_Arg2 = BPTR to StandardInput * dp_Arg3 = BPTR to StandardOuput * dp_Arg4 = BPTR to CurrentInput * * dp_Arg5..dp_Arg7 are unused, and have junk data * * ---- CliInitRun() decoded * * L:Shell-Seg, Run: * NOTE: KS 1.3: bfunc is a BCPL CliInit function * NOTE: L:Shell-Seg is passed a NULL packet for the Boot Shell, * and uses BCPL Function (APTR)(me->pr_GlobVec + 0x214) * as the CLIInit() routine to call. * dp_Type = bfunc * dp_Res1 = 0 * dp_Res2 = 0 * dp_Arg1 = BPTR to the old CommandLineInterface * dp_Arg2 = BPTR to StandardInput * dp_Arg3 = BPTR to StandardOuput * dp_Arg4 = BPTR to CurrentInput * dp_Arg5 = BPTR to Lock of directory (shell must close) * dp_Arg6 = 0 * * dp_Arg7 is unused, and has junk data * * Execute: (mostly guessed, may change) * dp_Type = -1 * dp_Res1 = 0 * dp_Res2 = 0 * dp_Arg1 = BPTR to the old CommandLineInterface * dp_Arg2 = BPTR to StandardInput * dp_Arg3 = BPTR to StandardOuput * dp_Arg4 = BPTR to CurrentInput * dp_Arg5 = BPTR to Lock of directory (shell must close) * dp_Arg6 = 0 * * dp_Arg7 is unused, and has junk data * * System (SYS_Async == FALSE) * dp_Type = -2 * dp_Res1 = 0 * dp_Res2 = 0 * dp_Arg1 = BPTR to the old CommandLineInterface * dp_Arg2 = BPTR to StandardInput * dp_Arg3 = BPTR to StandardOuput * dp_Arg4 = BPTR to CurrentInput * dp_Arg5 = BPTR to Lock of directory (shell must close) * dp_Arg6 = 1 * * dp_Arg7 is unused, and has junk data * * System (SYS_Asynch == TRUE): * dp_Type = -3 * dp_Res1 = 0 * dp_Res2 = 0 * dp_Arg1 = BPTR to the old CommandLineInterface * dp_Arg2 = BPTR to StandardInput * dp_Arg3 = BPTR to StandardOuput * dp_Arg4 = BPTR to CurrentInput * dp_Arg5 = BPTR to Lock of directory (shell must close) * dp_Arg6 = 1 */ #define CLIINIT_NEWCLI 1 #define CLIINIT_RUN 0 #define CLIINIT_EXECUTE -1 #define CLIINIT_SYSTEM -2 #define CLIINIT_ASYSTEM -3
- 2011 年 8 月 15 日(星期三)
- Jason 寫道:我很驚訝。截至今天,AmigaOS 3.9 大部分可以開箱即用,只要您刪除/重新命名 SYS:Libs/workbench.library - 似乎與 AROS 的內建 icon.library 有些不相容。AROS ROM 中缺少一些數學庫,它們應該在明天的版本中(修復了 “缺少 resource.library” 彈出視窗)。
- 2011 年 10 月 14 日(星期五)
- Jason 寫道:特殊 aros m68k AmiWest 包已製作併發送。
2012
[edit | edit source]- 2012 年 3 月 14 日(星期三)
- Jason 添加了重新縮放圖示以匹配顯示解析度的功能,如果圖示支援的話。如果圖示的 MutalExclude 位 31 設定,則將較低的 16 位解釋為 X 和 Y Amiga Tick 解析度,並將圖示重新縮放為顯示的解析度。修復了小螢幕上 “圖示太大” 的問題。
- 2012 年 3 月 16 日(星期五)
- Toni 添加了對非 MEMF_KICK 快速 RAM 板的支援(主要是 Blizzard A1200 加速器)。現在大多數 ROM 映像載入到快速 RAM 中。替換為 ForceCHIP,它強制所有模組使用晶片 RAM。主要用於除錯。只有 kernel.resource、exec.library、expansion.library 和 diag 初始化模組需要 MEMF_LOCAL RAM(在重置期間永遠不會消失的 RAM),在最壞的情況下,這意味著晶片 RAM。(只需要大約 80k,將來會變得更小)。ForceFAST 選項強制將完整的 ROM 映像載入到快速 RAM 中,即使 RAM 型別不是 MEMF_LOCAL。(A3000/A4000 主機板快速是最常見的 MEMF_LOCAL 快速 RAM)。這隻適用於一些非自動配置的 RAM 擴充套件,例如 Blizzard 1260 快速 RAM。
- 2012 年 8 月 21 日(星期二)。Jason 寫道,正在處理對 “正常” 可 ROM 化庫的 rellib 支援。
對於我的下一個主要 m68k 更改,所有正常庫(當然除了 exec.library 之外)都將有一個 rellib SysBase。理論上,只有在新的 m68k 任務啟動時才需要讀取 0x00000004(因為為了與 AOS 相容,新的 m68k 任務無法假設 SysBase 在 CallEntry() 上透過 A6 傳遞)。
我正在開發一個 512K 的 AROS ROM 映像,它會自動從引導介質載入 “丟失” 的部分。我希望具有的一個功能是從引導介質自動載入 *.hidd 驅動程式,類似於 BindDrivers 的工作方式。有什麼想法嗎?或者我應該只擴充套件 BindDrivers 以覆蓋 Amiga 晶片功能和 PCI 裝置,並以這種方式載入它們?BindDrivers 已經支援探測機制。您只需要提供足夠的工具型別資訊來導致載入發生,如果 InitResident() 失敗(其中包含探測函式),則會解除安裝裝置。例如,我建議以下工具型別 API 擴充套件:(現有的 “PRODUCT” 工具型別保持不變)。
PROBE=zorro:2206/31 <= Zorro, vendor 2206, product 31 PROBE=zorro:2206 <= Zorro, vendor 2206, any product PROBE=USB:$1234/$abcd <= USB, vendor 0x1234, product 0xabcd PROBE=usbclass:3/1/1 <= Any USB endpoint, class 1, subclass 1, protocol 1 (USB keyboard) PROBE=pci:$10de/$040c <= Nvidia G84M PROBE=pci:$10de <= Any NVidia device PROBE=pciclass:3/20/3 <= Any EHCI device PROBE=platform:ide/$170/15 <= secondary IDE device PROBE=platform:ocs/0xdff000 <= OCS chipset at 0xdff000
InitResident 可以透過 Expansion/GetCurrentBinding() 機制探測,或者只盲目新增模組(與當前 *.hidd 裝置的實踐一致)。ConfigDev->ExpansionRom 欄位可以透過在 ‘er_’ 聯合體中新增 ‘OOP_Object *HiddPCI’ 和其他欄位來擴充套件,這些欄位由製造商程式碼 0xFFFF 指示,以及由 AROS 定義的產品程式碼指示的子型別(PCI、USB 等)。
- 2012 年 10 月 19 日(星期六)Jason 在 AmiWEST 2012
- 2012 年 11 月 1 日(星期四)Jason 寫道:那麼,有人反對 “所有 BPTR/BSTR 都與 AmigaOS/MorphOS 一樣” 嗎?
- 對所有架構取消定義 ‘AROS_FAST_BPTR’ 和 ‘AROS_FAST_BSTR’。
- 驗證所有 ISA 編譯(linux-xxx 和 amiga-m68k)。
- 在 bptr.h 中添加註釋,說明 AROS_FAST_* 宏已棄用。
- 如果定義了任何一個,則會發出一個 ‘#warning’,說明 AROS ABIv1 不支援 AROS_FAST_BPTR/AROS_FAST_BSTR。
以下是十個最慢的因素。
>> Exec IPrefs - 42 seconds (why???) >> Exec C:RexxMast- 24.18 seconds (probably library loading) >> Exec AddDataTypes - 17 seconds (library loading) >> Exec Copy ENVARC:... 10 seconds >> Exec SetClock LOAD - 5 seconds >> Exec Mount - 5 seconds >> Exec List ENV:SYS/Packages .. - 5 seconds >> Load boot/AROSBootstrap - 4 seconds >> Load C:RexxMast - 2 seconds
2016
[edit | edit source]- 2016 年 7 月 27 日
- 嘗試修復 Apollo Core 的 AHI 支援。
- 2016 年 8 月 2 日
- Sidewinder mness 開始著手處理 SAGA superAGA 圖形 HIDD,另一件事是最佳化用 Assembly bounty 為 Apollo Core / Vampire 板編寫的動畫檢視器應用程式。
- 2017 年 5 月
21:39 Changeset in AROS [54753] von NicJA If setpatch is present, run it. 20:56 Changeset in AROS [54752] von neil Better MUI compatibility for Window class: - Return zero for current … 19:33 Changeset in AROS [54751] von neil Better MUI compatibility: don't use MUIV_Window_TopEdge_Delta, which … 16:10 Changeset in AROS [54750] von NicJA drop the copymem patching since it is handled in exec. 13:29 Changeset in AROS [54749] von twilen ModelStringBuffer? was too small for Apollo, fix FPU strings if EC CPU … 13:25 Changeset in AROS [54748] von twilen ADDR32 changed. 04:04 Changeset in AROS [54747] von NicJA show the ec version of 030 04:01 Changeset in AROS [54746] von NicJA Show the correct cache sizes for the apollo core. 03:10 Changeset in AROS [54745] von NicJA fix the format template so that the cpu model is shown correctly. 03:09 Changeset in AROS [54744] von NicJA remove some whitespace 02:33 Changeset in AROS [54743] von NicJA typo 01:24 Changeset in AROS [54742] von NicJA check if the CPU has the Apollo 68080 addiw.l instruction. If it has, … 01:19 Changeset in AROS [54741] von NicJA tidy formatting 01:17 Changeset in AROS [54740] von NicJA bump the copyright notice. 01:16 Changeset in AROS [54739] von NicJA # always default to 68000 # show the EC version of 020 and EC/LC … 01:14 Changeset in AROS [54738] von NicJA use USER_INCLUDES 00:24 Changeset in AROS [54737] von NicJA Add AttnFlags? for the Apollo'080, and MMU presence. Use the bit …
- 嘗試在 A1200 和其他 Amiga 硬體上執行 AROS
- 唯一的要求是 1M 或更多 MEMF_LOCAL 快速 RAM(在重置期間不會消失的 RAM)或 2M 晶片 RAM(在這種情況下,如果未重定向到 FAST,則上面的 1M 將被 ROM 使用)。 MMU 未使用或不需要
- 能夠提供有關問題的詳細日誌和描述,請參見前面的部分
| 型號 | 影片 | 音訊 | 粘合劑 | IDE / PCMCIA | SCSI | 意見 |
|---|---|---|---|---|---|---|
| A1000 | OCS Daphne | Paula | Agnus 0.25MB 晶片 RAM | n/a | ||
| A500 | OCS Denise | Paula | Agnus 0.5MB 晶片 RAM | n/a | ||
| A2000/B1500 | OCS/ECS Denise | Paula | Agnus 0.5MB 晶片 RAM | n/a | ||
| A500+ | ECS Super Denise | Paula | Fat Agnus 1MB 晶片 RAM | n/a | ||
| A3000 | ECS Fat Denise | Paula | Super Agnus 1MB 晶片 RAM | Fat Gary | ||
| A600 | ECS Denise | Paula | Fat Agnus 1MB 晶片 RAM | Gayle | ||
| A1200 技術 | AGA Lisa | Paula | Fatter Alice 2MB 晶片 RAM | Gayle | ||
| A4000 | AGA Lisa | Paula | Fatter Alice 2MB 晶片 RAM | |||
| Amiga CD32 | AGA Lisa | Paula | Fatter Alice 2MB 晶片 RAM | |||
| 型號 | 圖形 | 音訊 | 粘合劑 | IDE | SCSI | 意見 |
| DCE VIPER 520 | 未測試 | |||||
| DCE VIPER 530 | 未測試 | |||||
| CSA Derringer 030 | 未測試 | |||||
| ICD AdSpeed | 未測試 | |||||
| GVP GVP-M A530 | 未測試 | |||||
| ACT Apollo 620 | 未測試 | |||||
| ACT Apollo 630 | 未測試 | |||||
| DCE VIPER 630 (M-Tec T-630 / E-Matrix 630) | 未測試 | |||||
| ACA 630/25 | 未測試 | |||||
| ACT Apollo 2030 | 未測試 | |||||
| DKB Wildfire 68060 | 未測試 | |||||
| Fusion Forty 040 | 未測試 | |||||
| GVP 2620 020 | 未測試 | |||||
| GVP G-Force 030/50 | 未測試 | |||||
| GVP G-Force 040/33 | 未測試 | |||||
| GVP TekMagic G-Force 68060 用於 A2000 | 未測試 | |||||
| Progressive Peripherals Zeus 68040 用於 A2000 | 未測試 | |||||
| 型號 | 圖形 | 音訊 | 粘合劑 | IDE | SCSI | 意見 |
| MBX 1200z 4 & 8MB RAM | 未測試 | |||||
| A1207 4 & 8 MB RAM | 未測試 | |||||
| GVP30 MKIV 50Mhz 4MB RAM | 未測試 | |||||
| DCE VIPER 1230/28Mhz LC | 未測試 | |||||
| DCE VIPER 1230 MkIV 030 33/42Mhz 32MB RAM (CSA Magnum 1230?) | 未測試 | |||||
| Phase 5 Blizzard 1230-II | 未測試 | |||||
| Phase 5 Blizzard030 MKIII 50Mhz 32MB RAM | 未測試 | |||||
| Phase 5 Blizzard030 MKIV 50Mhz 32MB 但未測試 64MB RAM | 工作 - 你讓它放了多久?另外,機器重置後,儘快從驅動器中取出軟盤啟動盤(你越快越好)! | |||||
| Phase 5 Blizzard030 mkIV 50Mhz 68882 50 MHz 64MB | 工作。緊急軟盤啟動。無法在工作簿中移動圖示。AGA 非常慢:在調整大小或開啟視窗或使用選單時可以看到螢幕逐行清除(CPU 全部執行?)。啟動選單非常亂:無法從 + 選項中選擇我想要的內容,因為某些 A-J 範圍鍵不起作用,一段時間後所有鍵都切換到 50/60 Hz。Wanderer 在 AGA 上完全無法使用。Octamed IV 在啟動時單擊其橫幅屏幕後崩潰。啟動了一些遊戲,一切正常。 | |||||
| ACT Apollo 1230 Mk-II | 未測試 | |||||
| ACT Apollo 1240 040 | 未測試 | |||||
| Phase 5 DCE(重新設計)Blizzard 1240 68040 | AGA | Paula | Fatter Agnus 2MB 晶片 RAM | 未測試 | ||
| Phase 5 DCE(重新設計)Blizzard 1260 68060 + 1230scsi | AGA | Paula | Fatter Agnus 2MB 晶片 RAM | 1230scsi 工作 | 工作 | |
| ACA 1230/28 | AGA | Paula | Fatter Agnus 2MB 晶片 RAM | 未測試 | ||
| ACA 1230/56 | AGA | Paula | Fatter Agnus 2MB 晶片 RAM | 工作 | ||
| 型號 | 圖形 | 音訊 | 粘合劑 | IDE | SCSI | 意見 |
| ACT Apollo 4060 060 | 未測試 | |||||
| GVP-M 4060 | 未測試 | |||||
| MacroSystems Warp Engine 040 | 未測試 | |||||
| 型號 | 圖形 | 音訊 | 粘合劑 | IDE | SCSI | 意見 |
| FastATA | - | - | - | - | - | 無法工作。ATA3.driver 失敗並顯示以下訊息:“找不到 A1200!” - Allegro CDFS 也不起作用。 |
| IDE 修復 '97 | 未測試 | |||||
| IDE 修復 '99 | 未測試 | |||||
| 未測試 | ||||||
| GVP Spectrum 110/24 | 未測試 | |||||
| MacroSystems Retina Z2 Z3 | 未測試 | |||||
| Phase 5 (DCE) Cybervision 64 3D | 未測試 | |||||
| VillageTronic PicassoIV RTG | 未測試 | |||||
| DCE G-Rex PCI | 未測試 | |||||
| Elbox Mediator LT | 未測試 | |||||
| Micronik A1200 PCI | 未測試 | |||||
| 型號 | 圖形 | 音訊 | 粘合劑 | IDE | SCSI | 意見 |
| 未測試 | ||||||
| Blizzard PPC 帶 060 | 截至 2012 年 3 月,無法工作,但添加了新的 ForceFAST 選項,但未測試 | |||||
| Apollo CyberStrom CSPPC060 (A4k) | AGA | Paula | Fatter Agnus 2MB 晶片 RAM | 需要停用 cyberscsi | 如果停用 PPC 晶片,則工作 | |
| 型號 | 圖形 | 音訊 | 粘合劑 | IDE | SCSI | 意見 |
| Minimig | ||||||
| Replay FPGA Arcade B0 | 啟動 6 月週一(Ezrec) | |||||
| Macrosystem DraCo | 未測試 | |||||
| Natami | 未測試 |
現在開始測試 aros,尤其是我的構建在真實硬體上的測試,我開始了一個應該是一個詳細的支援硬體列表。
a4000 rev. d (16mb onboard ram) - cs060/50 ppc (128mb ram) - mediator4000di - fastata4000 mk3 (bootcontroller) - full boot a4000 rev. b (16mb onboard ram) - cs060/50 mk1 (no ram) (no scsi) - fastata4000 mk3 (bootcontroller) - full boot a4000 rev. b (16mb onboard ram) - cs060/50 mk1 (no ram) (no scsi) - internal ide (bootcontroller) - no boot: timing issue a1200 - apollo (?) 040 (16mb ram) - internal ide (bootcontroller) - foll boot (random crashes after setpatch disappeared after clean nightly install)
A1200 擁有一個 Blizzard '060/PPC 加速器和 64 MB RAM,以及一個 4 路 IDE 分隔器,其中是 CF 卡加光碟燒錄機和 OS 3.1 ROM。A500 擁有一個 B5000 加速器('020 帶 4 MB 快速 RAM),以及 fat Agnes hack 來提供 1 MB 晶片 RAM,另一個 1 MB 慢速 RAM 在暗門中以及 OS2 ROM。它還有一個 'dodgy' A570 CD 驅動器,位於側面擴充套件插槽('dodgy' 是因為幾年前它停止能夠從 CD 啟動機器)。
A1200 從未啟動過 AROS 68k,昨晚結果相同。我從 AROS 啟動軟盤啟動,但在重置後,機器就死了 - 沒有啟動活動,螢幕一片空白,需要電源迴圈才能將機器恢復(到正常的 AmigaOS 啟動)。老實說,這並不奇怪。更令人失望的是 A500,它以前啟動過 AROS 68k(但速度太慢,無法使用)。它執行啟動磁碟正常,但在重新啟動時立即丟擲 '非法指令' 錯誤。它在每次嘗試重新啟動時都是一致的)。
大多數具有 68030、68040 或更強大處理器的 Mac 將是可行的目標。具有 68851 PMMU 的 68020 CPU 也應該可以工作。較早的基於 68000 的 Mac 可能更麻煩。
最好的起點是定義一個特定的 Mac 68k 模擬器作為目標,並將其用作開發環境。
然後,編寫一個使用 Mac Toolbox A-Line 指令將 AROS 核心載入到 RAM 中並將控制權傳遞給它的 Macintosh m68k 載入程式。
我們可能希望保留 Mac Toolbox 向量和全域性變數(從 0x100 到 0x1000)以用於螢幕繪製和裝置訪問 - 每個 Mac 模型都有其獨特的怪癖,而 Toolbox 將是一個很好的方法,可以消除自己編碼所有這些內容的需要。
可以想象,我們可以使用 'MacFloppy.device' 和 'MacHd.device',它們只是 Toolbox ROM 呼叫的一個墊片。
Centris 610 (also Workgroup Server 60) Centris 650 Centris 660av Color Classic (also Performa 250) Color Classic II (also Performa 275) Classic II (also Performa 200) II IIci IIcx IIfx IIsi IIvi (also Performa 600) IIvx IIx LC LC II (also Performa 400, 405, 410, 430) LC III (also Performa 450) Performa 460 (also LC III+ and Performa 466, 467) Performa 475 (also LC 475 and Performa 476) Performa 520 (also LC 520) Performa 550 (also LC 550 and Performa 560) Performa 575 (also LC 575 and Performa 577, 578) Performa 588 (also LC 580 and Performa 580) Performa 600 (also Performa 600CD) PowerBook 140 PowerBook 145 (also PowerBook 145B) PowerBook 150 PowerBook 160 PowerBook 165 PowerBook 165c PowerBook 170 PowerBook 180 PowerBook 180c PowerBook 190 (also PowerBook 190cs) PowerBook Duo 210 PowerBook Duo 230 PowerBook Duo 250 PowerBook Duo 270c PowerBook Duo 280 PowerBook Duo 280c PowerBook 520 (also PowerBook 520c, 540, 540c, 550c) Quadra 605 Quadra 610 Quadra 630 (also LC 630 and Performa 630, 631, 635, 636, 637, 638, 640) Quadra 650 Quadra 700 Quadra 800 (also Workgroup Server 80) Quadra 840av Quadra 900 Quadra 950 (also Workgroup Server 95) SE/30 TV
目前還沒有託管版本,但如果有人感興趣的話...
託管操作的系統要求是什麼?例如記憶體模型(每個程序是否需要從 0 開始的獨立虛擬記憶體空間?)所有程序都在同一個記憶體上下文中。這也可以是與主機作業系統相同的記憶體上下文嗎?雖然 FreeMiNT 具有記憶體保護,但它沒有虛擬記憶體模型(即,所有 FreeMiNT 程序也具有相同的記憶體上下文)。是的,可以。整個 AROS 執行在一個主機作業系統程序中。
我是否需要主機作業系統中的執行緒支援?(這是 FreeMiNT 核心中非常有趣的一章……)
“對低記憶體的讀寫許可權(特別是陷阱向量和 0x00000000-0x00000007)m68k 假設它可以在地址 4 讀取一個特定的常數值(SysBase 資料結構的位置)。所有低於 0x1000 的其他低記憶體永遠不應該被訪問。”
不,你只需要主機作業系統能夠對 AROS 上下文造成計時器異常(訊號),而 AROS 排程器將自行完成所有程序/任務管理。我想計時器中斷與整個訊號方式相比,會為我節省不少處理時間,而且我還免費獲得了超級使用者模式(我想在這種情況下是好事,因為排程器很可能需要它?)。m68k 軟體確實從 4 讀取 SysBase。你可以對映這段記憶體以使其可讀,也可以捕獲主機作業系統異常(陷阱、訊號等),並模擬這種訪問。看看 PPC 本地核心的示例,它們也支援它。
m68k 假設它可以在地址 4 讀取一個特定的常數值(SysBase 資料結構的位置)。所有低於 0x1000 的其他低記憶體永遠不應該被訪問。在使用者模式下虛擬化對該區域的訪問是否足夠?是的,足夠且推薦!(拒絕寫入 0 可以捕獲許多錯誤!)作業系統已經為我完成了這件事,因為它已經被保護了。
寫入 0x4 怎麼辦?我想核心只設置過一次 - 但我需要也捕獲它。理想情況下,它甚至不應該嘗試寫入 0x4,而應該寫入我計劃在從 0x4 讀取時返回的變數。
AROS 和通用的 AROS 二進位制檔案是否使用類似於超級使用者模式的東西?AROS 核心是肯定的,AROS 驅動程式有時也會使用,而 AROS 應用程式幾乎從不使用。也許這是一個愚蠢的問題,但是...為什麼要切換到超級使用者模式?在 Amiga 上,硬體暫存器不受超級使用者保護,所有記憶體都可以在使用者模式下訪問。是為了像快取控制之類的東西嗎?(在 030 上,這是透過訪問特權的 CCR 來實現的)
核心是否在超級使用者模式下訪問 0x4?我之所以這樣問,是因為這意味著我必須虛擬化大部分超級使用者模式。理想情況下,我只想在使用者模式下虛擬化對 0x4 的訪問(因為這是一件容易的事。虛擬化超級使用者模式也是完全有可能的,Basilisk 2 中有一些有用的程式碼可以做到這一點(MacOS 需要超級使用者模式,但在 Amiga 上以使用者模式執行)。
是的,AROS m68k 裝置驅動程式使用中斷。託管版可能不需要,因為它應該提供自己的裝置驅動程式。我需要什麼工具?VBCC/VASM 和 GCC 2-4 可用。我建議使用由 arch/m68k-amiga/doc/build-toolchain.sh 指令碼編譯的 gcc 4。是否有任何特定的埠可以作為這些內容的起點?arch/all-hosted、arch/all-linux、arch/m68k-all 和 arch/all-unix 應該有用。將 arch/all-linux 複製到 arch/all-mint,在其中的所有 mmakefile.src 中將 s/linux/mint/,然後從那裡開始工作。實際上,只有原生端口才需要真正的 CPU 中斷。對於託管埠,你可能需要一些等效的東西,可以在主機作業系統中實現。例如,在 Windows 託管埠中,中斷是 WinAPI 事件物件(有點類似於 AROS 訊號)。它們用於與 I/O 執行緒通訊。在 UNIX 託管埠中,中斷實際上是訊號。SIGALRM 用作計時器,SIGIO 用作主機 I/O 中斷。SIGUSR1 和 SIGUSR2 用於呼叫排程程式,因為訊號是獲取 UNIX 中 CPU 上下文的唯一方法。
事實上,目前我只能提出一個強制性要求。必須有一種方法可以中斷正在執行的主機作業系統執行緒,獲取並修改其 CPU 上下文。僅此而已。在超級使用者模式下也會有上下文切換嗎(即我是否需要處理 SSP)?不會。只有在退出使用者模式(即離開最後一個巢狀級別)時才需要呼叫排程程式 (core_Schedule())。在 AROS 上,巢狀上下文切換也是一個非常糟糕的想法。
宏 SC_ENABLE() 和 SC_DISABLE() (cpu_xxx.h)。我不完全確定它是如何使用的;但我懷疑這是為了避免不同的訊號處理程式以某種方式相互衝突?不會。這些宏用於設定要排程任務上下文的訊號(即 AROS 中斷)狀態。它等效於在原生埠中恢復 CPU 上的“中斷使能”標誌。AROSCPUContext 中沒有欄位來儲存中斷狀態,為了簡單起見,假設它們與 task->IDNestCnt 同步。無論如何,這些宏使用訊號上下文中我現在沒有的某個變數。它是被中斷程序的訊號掩碼。
即,在處理當前訊號時阻止或延遲其他訊號?不會。在 UNIX 中沒有這樣的問題。當訊號到達時,它會自動被阻塞,直到我離開其處理程式。它等效於原生 CPU 中斷。但是,任何訊號(除了陷阱)都會真正停用所有其他中斷。這樣做是為了防止巢狀上下文切換(以及混亂的排程程式狀態),以防第二個(巢狀)訊號發生在進入第一個訊號的處理程式和遞增 PlatformData->kb_Supervisor 之間。
目前有兩種不同的託管 AROS 版本:Windows 和 UNIX。Linux、Darwin 等都是 UNIX 系統,它們之間的差異非常小。
UNIX 託管核心是圍繞訊號構建的。它們是 CPU 中斷的非常好的等效物。SIGALRM 用作系統計時器,SIGUSR1 和 SIGUSR2 用作系統呼叫(在正在執行的任務需要放棄 CPU 時間的點)。SIGIO 等效於外部硬體中斷,當主機作業系統檔案描述符準備好進行 I/O 時,它會發出訊號。一個特殊的元件 unixio.hidd 負責對每個 fd 基礎上的單個 SIGIO 進行多路分解。一些訊號(SIGILL、SIGSEGV 等)是 CPU 陷阱。
Windows 託管核心非常不同。此埠利用了 Windows 執行緒。AROS 最少包含兩個執行緒。一個執行緒執行使用者模式程式碼(任務),另一個執行緒是超級使用者。採取了一些特殊的措施來同步它們,以便實際上只有一個執行緒在執行。超級使用者執行緒在 WaitForMultipleObjects() 呼叫中迴圈,其中可等待物件是 AROS 中斷。第一個是週期性計時器,其他來自驅動程式中包含的更多 Windows 執行緒的 I/O 中斷。
當中斷髮生(物件發出訊號)時,超級使用者執行緒會停止使用者執行緒,獲取其 CPU 上下文,執行中斷處理程式,然後恢復它。沒有類似於 UNIX 中 SIGALRM 的機制,因此需要一個單獨的執行緒來模擬它。I/O 也透過單獨的 Windows 執行緒完成。WinAPI 本質上大部分是同步的,尤其是 GUI 處理,你必須在訊息迴圈中坐等。每個驅動程式都包含一個關聯的 .dll,它會啟動自己的執行緒。每個執行緒都可以建立自己的可等待事件物件,從而建立新的中斷。AROS 程式碼與 I/O 執行緒的通訊方式類似於真正的硬體,它會填充一些結構,然後觸發“go”事件。I/O 執行緒會完成其工作,並觸發其 IRQ 事件,導致中斷回到 AROS 端。對於 Windows 託管埠,從中斷和任務排程開始。解決此任務後,我們已經有了關於 AROS 如何在 Windows 程序中執行的良好模型。
FreeMiNT 上的 GUI 也是同步的,需要一個訊息迴圈。我的目標是擺脫它,將其變成一個全屏應用程式,因為在該作業系統上,另一種選擇會非常混亂(因為沒有便宜且有用的執行緒。是否有任何函式可以輪詢事件迴圈而不阻塞?X11 和 SDL 驅動程式使用這種方法。它們只是使用垂直同步中斷每秒輪詢迴圈 50 次。Windows 不允許輪詢迴圈,這就是我必須處理執行緒的原因。事實上,這似乎比輪詢更慢,延遲更大。
我在 uae 中的 aros68k 編譯中檢查了 hd-rec,它似乎正常工作。載入了一些專案,甚至沒有播放,因為還沒有設定 ahi 單位,但它似乎接受了真正的 amiga 68k camd.library。aminet 上有兩個不同的 camd.library 版本用於原始 m68k。camd.lha (2.0) 可以工作,但 camd40.lha 不穩定,因為它在播放了一些 MIDI 資料後按停止鍵時會崩潰。在 winuae amiga os3.9 下,hd-rec 中的音訊錄製可以正常工作。aros68k 版本的 camd 似乎目前無法正確初始化,也許是忽略了某個位元組序錯誤。
Developer Compiler Developer Exec Developer HIDD Developer Libraries