星期六, 3月 23, 2019

解除IBM PS/55Z的主機連線封印

來說一段過往有關 IBM 中文個人電腦的小故事~

回溯到 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

沒有留言:

張貼留言