第30天 高級的應用程序

第30天 高級的應用程序

2020.5.12

1. 命令行計算器(harib27a)

  • 編寫代碼cal.c:

    ……
    
    • 此代碼略長,且不是編寫OS的重點,因此此處不再羅列代碼。
    • 可以使用的運算符:
      • +:加法運算
      • -:減法運算
      • *:乘法運算
      • /:整除
      • %:取餘
      • &:按位與
      • |:按位或
      • ^:異或
      • ~:按位取反
      • <<:左移
      • >>:右移
      • ():括號
    • 運算結同時顯示十進制和十六進制。
    • 只能進行整數運算
    • 計算優先級和C語言的規定相同。
    • 可以直接使用16進制數字,只要在16進制數字前加上0x即可。
    • 鍵盤按鍵與實際標註不符,因此可參照下表(不同電腦不同,這裏是按照本人筆記本按鍵標註的):
  • make full後用VMware運行:

2. 文本閱覽器(harib27b)

  • 編寫代碼tview.c:

    ……
    
    • 此代碼略長,且不是編寫OS的重點,因此此處不再羅列代碼。
    • 用光標鍵可以上下左右移動(使用上下左右方向鍵移動)。
    • af設置每次滾動132行(2^形式)(豎向滾動);AF設置每次滾動18列(橫向滾動)。
    • 關於啓動時命令行選項,以tview ipl20.nas -w100 -h30爲例:
      • -w代表打開一個寬度爲100個半角字符的窗口,最大可以指定126。
      • -h代表行數,最大可以指定45。
      • 如果不指定-w和-h,默認值是-w30和-h10。
    • 製表符的大小使用命令行選項-t,如果省略的話,是-t4,即4個空格大小。在程序啓動後也可以使用<>來調節。
    • q或者Q可以退出應用程序。
  • make full後用VMware運行:

    • 以指令tview ipl20.nas -w100 -h30爲例:

3. MML播放器(harib27c)

  • 編寫代碼mmlplay.c:

    ……
    
    • 此代碼略長,且不是編寫OS的重點,因此此處不再羅列代碼。
    • 由音符數據計算頻率,以及由音符長度計算定時器應該設定爲幾秒。
    • 音樂知識:一個音升高半音後,頻率是原來的約1.059463倍。
  • 在命令行中輸入mmlplay daigo.mml即可播放音樂daigo.mml。

  • mml(music macro language)是一個文本文件。

    • 這個文件中包含的內容是樂譜數據,如“doe、ray、me、far、sow、lar、tea”分別對應“CDEFGABC”(C大調中)。
    • 在音符後面加上+或者#表示升高半音,加上-表示降低半音。
    • 再後面還可以加上數字,“4”表示4分音符,“8”代表8分音符,“1”代表全音符,“2.”代表符點2音符。
    • O命令來設置八度音區,例如可以設置“O4”。L命令用來設置音長,表示音符或者休止符R在不指定音長時的默認音長。
    • T命令用來設定樂曲速度,>用來升高一個八度,<用來降低一個八度,&表示連音線。
    • Q用來指定音符演奏是短促還是連貫。比如“Q4”標出斷奏,“Q8”表示一直使用連音奏法。
    • $開頭的是擴展命令。$K是卡拉OK命令,後面指定的字符串會顯示在卡拉OK欄中。$E表示卡拉OK歌詞數據的字符編碼。
  • mml文件中數據是不區分大小寫的。演奏到最後會自動回到開頭重新演奏。

  • 按下Q退出,如果使用Shift+F1或者“X”按鈕,會一直有聲音。由於音樂播放器不是重點,因此沒有修改OS內核代碼。

  • 樂庫文件在目錄mmldata下,一共有四首音樂:

    • daigo.mml:《c小調第五交響曲“命運” op.67》
    • kirakira.mml:《小星星》發過民歌
    • fujisan.mml:《富士山》日本文部省民歌
    • daiku.mml:《第九交響曲 d小調 “合唱” op.125選段 路德維希·範·貝多芬》
  • make full後用VMware運行:

    • mmlplay kirakira.mml爲例:

4. 圖片閱覽器(harib27d)

  • 編寫代碼gview.c:

    ……
    
    • 此代碼略長,且不是編寫OS的重點,因此此處不再羅列代碼。
    • 支持BMP和JEPG格式的圖片
    • 關於BMP和JEPG的文件格式講解此處不再詳述。而且用於解釋BMP和JEPG文件格式的程序直接使用OSASK中應用程序所應用的代碼。
      • OSASK中有一個叫做PICTURE0.BIN的應用程序,這是一個用來查看BMP和JEPG格式圖片的圖片閱覽器。從這個程序的源代碼中提取bmp.nasm和jepg.c。
      • bmp.nasm和jepg.c無需修改可以直接使用。
      • 因此,只需要將文件載入並顯示出來。
  • make full後用VMware運行:

    • 查看圖片:
      • 圖片數據在pictdata目錄下,分別是night.bmp和fujisan.jpeg。

6. IPL的改良(harib27e)

  • 這部分不進行學習,因此略過。

7. 光盤啓動(harib27f)

  • 這部分不進行學習,因此略過。

8. 完結撒花

  • 現在是2020.5.13 11:16。總耗時138天,實際耗時49天。
  • 講真的,在這139天裏,不止一次想要放棄,還好自己最終還是堅持了下來。原本立下的三次flag都倒下了,終於在5.13號完成了既定任務。
  • 接下來幾天就是再harib27d的基礎上,進行修改,添加一些必要的功能以及修改一些不合適的部分。
  • 現在千言萬語都成無言。總之,感謝那個一直沒有放棄的自己,以及那個興趣且專注的自己。
  • 完結撒花!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章