回溯到 1980 年代末,IBM 中文個人電腦機型由 Multistation 5550 發展至 PS/55,索價不菲,印象中當時售價一套約在新台幣四十萬元上下,市場大宗在 IBM 各大小型主機系統的環境中做終端工作站用途。PS/55 與 PS/2 同樣採用當時 IBM 新定義的微通道架構 (Micro Channel Architecture,簡稱 MCA)。
同屬 MCA 架構的 PS/55Z (model 5530-S) 則發表於1989年,是一款一體機設計的小型桌上個人電腦,其原本欲設定以個人消費市場為目標故而相對「平價」,但又恐因此衝擊到既有的終端工作站市場,IBM 因而封印禁制了 PS/55Z 與主機連線的機能。儘管如此,依然阻擋不了經銷商將其以終端工作站售入主機環境市場的意圖,想來是個人消費市場難以打通的緣故。
當時我因曾鑽研 MCA 技術細節而銜舊東家之命參與解除 PS/55Z 的主機連線封印,此任務說來不難,只須熟悉 MCA 中之 POS (Programmable Option Select) 機制即可理解。(可參見當年自撰關於 POS 之技術文件中的描述)
POS 主要是作用於系統與週邊配接卡的選項設定,藉一系列 Register 來操控,其中一個可作用以控制配接卡是否被啟用。依 MCA 的規範各周邊配接卡須有一個 ID,例如 IBM 3270 工作站配接卡的 ID 是 E1FF,5250 工作站配接卡的 ID 為 FFF8。原廠封印的做法係很簡單地藉由 POS Register 讀取配接卡 ID 後,判斷是否停用該卡。
這些皆已成舊話,於此不贅述當時破解程式之完整細節,僅摘要以 POS 機制停用與啟用周邊配接卡的片段當作記錄罷了。
;---取得配接卡ID mov al,slot_num mov dx,96h out dx,al mov dx,100h in al,dx mov ah,al mov dx,101h in al,dx
;---停用配接卡 mov al,slot_number mov dx,96h out dx,al mov dx,102h in al,dx and al,0feh out dx,al mov dx,96h mov al,0 out dx,al
;---啟用配接卡 mov al,slot_number mov dx,96h out dx,al mov dx,102h in al,dx or al,01h out dx,al mov dx,96h mov al,0 out dx,al
沒有留言:
張貼留言