02/05/2018
TRDOS 386 v2.0 kodunu yazarken farkettiim
nemli hatalar dzelttim. (BUGFIXler)
(09/11/2011'den sonra bakaca deiiklik yok!)

09/11/2011 itibaryla
TRDOS
* Device driver almalarmda FreeDOS'un 
  himemx.exe XMS src dosyasn ykleyip
  altrdm. Ayrca baz byk ve eski oyun
  programlarn ve assembler (FASM) programlarn
  altrmay denedim. Programlar almad ama
  FASM (dos) bir kez exedemo.asm dosyasn derledi
  (ve o program alt: hello world! dedi) fakat 
  baaryla alma olmadndan msdos/freedos/rxdos
  uyumsuz dosya prosedrleriyle uyumlu alma 
  salamakta srar etmekten vazgetim. 
* TRDOS'u mevcut 9/11/2011 haliyle arivleyip
  bundan sonraki almalar RxDOS'un (dissecting dos)
  process management (1995) aklamalarna ve kaynak
  koduna ksmen dayandrarak ve MSDOS'un bu ay banda
  internetten indirdiim 6.0 kaynak kodundan 
  faydalanarak, 'load and execute process' ten balayp,
  geriye doru deiikliklerle yenilemeye karar verdim.
  Yeni Kernel daha fazla MSDOS ve RxDOS Kernel 
  (structure) uyumlu olacak. Buna karlk, TRDOS'un
  Singlix'i gelitirmek iin uyarlanmasnda DOS'un
  memory management veya file handling ynetmlerini
  deil, TRDOS'da ilk kez tasarladm yntemleri 
  gelitirerek uygulayacam. TRDOS'un yeni kernel'i
  ise DOS'a device mantyla daha fazla benzeyecek.
* Elimde UNIX v1.0 PDP 11 kaynak kodu olduundan
  nce 8086 Unix (ok basit haliyle) gelitirip sonra
  Singlix'e gemeyi dnyorum. Fakat, ksa vadede
  (2011 bitmeden 2012'nin ilk aylarna sarkacak ekilde)
  TRDOS'u RxDOS kaynak kodu ve MSDOS 6.0 kaynak kodundan
  faydalanarak ama taklide kamadan (baz structure'lar
  ve fonksiyonlar geri ve klarnda mecburen
  ayn olacak) Faz 3 olarak gelitirip tamamlayacam.
  (Eski versiyon -> 2005, Bu versiyon -2009/2011 Faz 2
  burada sonra eriyor. TRDOS Faz 3 bundan sonraki ve 
  son aama. Yeni TRDOS Proje ad: TRDOS3.)
  
05/11/2011 itibaryla
TRDOS
* Device driver initialization prosedrnde
  ekrana balama/yklenme mesaj gelmeme sebebinin
  trdos kernel interrupt handler'larnn
  aktifletirmemsi olduunu fark ettim (run prosedr
  iinde iinde aktifletiriliyordu ve programdan 
  komut yorumlaycsna dnte resetleniyordu.
  Aygtn balatlmas (device_init) prosedrnde
  trdos kernele ait dos interruptlarnn 
  aktifletirilmesini saladm ve iaret koydurup, 
  daha sonra resetlenmesini nledim, aksi takdirde 
  aygt src ile interrupt vektrleri ilikisi 
  kesilirdi. Bu yntemi uygulaynca, baz dos device 
  driver'lar init mesajlarn vermeye balad.

30/10/2011 itibaryla
TRDOS
* 27 ve 28 Ekim 2011 gn TRDOS'un
  device driver'lar tanmas ve kullanabilmesi iin
  yaptm almalara devam ettim. Henz sonu
  kmad. Aygt srcleri init mesajlarn
  gremedim. Kendi yazdm basit device driver
  tasla ise init mesajn veriyor.
* 30 Ekim gn kontrol maksatl DEVLIST komutunu
  ve ilgili prosedrleri yazdm. (Device listesini 
  basit bigilerle satrlar halinde yazyor.)

23/10/2011 itibaryla
TRDOS
* 9 Ekim 2011 ve 23 Ekim 2011 gn TRDOS'un
  device driver'lar tanmas ve kullanabilmesi iin
  DEV_INIT.ASM dosyas ap bu dosya iine gerekli
  prosedrleri yazdm.

24/09/2011 itibaryla
TRDOS
* INT 27h Terminate and Stay Resident ilevsellii
  iin gerekli ekleme ve deiiklikleri yaptm.
* alan programn baka bir program altrmas
  (INT 21h AH=4Bh ile) durumunda altran/parent 
  programn PSP adresini 'PSP_Address' deikenine 
  geri dndrmek iin (dosya kapatma ileminde doru
  PSP adresi lazm) proc_create_psp prosedrnde ve
  ayrca, int 20h ve int 21h AH=4Ch dnlerinde 
  gerekli deiiklikleri yaptm.
* DRV_FS.ASM iinde dos dosya ad uzantlarnda
  "$,-,#" karakterlerinin uygunluu iin dzeltme
  gerekiyordu onu yaptm.
  
19/09/2011 itibaryla
TRDOS
* INT 21h Fonksiyon AH = 56h Rename file
  (Move directory entry) kodunu yazdm.
  (INT_21H.ASM)   
* FS dosya sistemi dosyalarn
  DOS 8+3 formatna evirirken "$,-,#"
  karakterlerini de geerli olarak kullanmas
  iin gerekli dzeltmeyi yaptm. (DRV_FS.ASM)

18/09/2011 itibaryla
TRDOS
* Varsa MAINPROG.CFG dosyasna gre balang
  tamam. "*" remark (bo ge) ve "echo"
  komutu ile "mainprog.cfg" dosyasndan basit
  ilemler tamam. Kernel bir kez mainprog'a geerse
  (daha nceden startup.cfg varsa oradaki "shell"
  komutuna gre varsaylan/default shell olan 
  internal mainprog'a gemeden external shell'i 
  balatabilir. Bu ksm daha sonraki aamalarda
  yazacam). MAINPROG.CFG dosyasnn iine yazlan
  tm tannan komutlar srasyla uygulanr ve 
  dos iindeki en son komuttan sonra, 
  normal almaya geilir (proc_dos_prompt dngs
  iine girilir.)
  (AUTOEXEC.BAT'n ok basit bir karl.)
* proc_change_current_directory prosedrnde
  iyiletirme ve son directory bulunamd zaman
  bulunduu yere kadar doru gstermesini salayan
  dzeltme yaptm. (Dnte alt dizinlerden 
  en son bulunan gsteriyor. Fakat kaytlamyor.
  Yani restore current directory olursa, kaytlanm
  en son durumuna geri dnlyor.)

17/09/2011 itibaryla
TRDOS
* 12 byte'tan uzun (path ieren) program dosya ad
  yazarak program altrma tamam.

15/09/2011 itibaryla
TRDOS
*  ve d komutlarda az dzeltme yaptm. 
  zellikle 8 byte'dan fazla d komut (path ieren 
  program dosyas ad) altrmaya ynelik ilem
  deiikliini (MAINPROG.ASM iinde) yaptm.
* PATH deikeninin directory'leri iinde aranarak
  bulunan ve yklenen program dosyalar normal
  dnlerde/klarda, program altrmadan 
  hemen nceki current directory'e baarl
  dn yapyor. (Directory adlarn root'tan
  balatarak PATH'a yazmak art olabilir. Kontrol
  etmedim ama byle olmas daha uygun, aksi durumda
  alt dizinler relatif olduundan PATH karma kark
  olur, arama root directory'den balatlmal.)
* CTRL + BREAK dnn dn deitirmitim;
  baz programlarda dnte aksama oluyor ama
  yapacak bir ey (imdilik) yok. Geri dnte
  komut yorumlaycsyla balant kesilebiliyor.
  "Bad command or file name!" dnyor. 
  Program CTRL + BREAK tularn kullanmadan
  baka tulara gre (kendi kontrolnde) sonlanrsa, 
  bu arza olmuyor. 

14/09/2011 itibaryla
TRDOS
* TRDOS run komutu olmakszn program ad
  ve ve path ile alyor ayrca programlar 
  ctrl-break ile opsiyonlu olarak sonlandrlabiliyor.
  PATH deikeni zerinden dosya bularak altrma 
  tamam, dnte problem var (run'dan nceki dizine
  dnmedii oluyor, komut balants kesiliyor,
  belki es=ds=cs deil veya baka bir sebepten...)

11/09/2011 itibaryla
TRDOS
* internal (cmd_run) ve external (cmd_external)
  komut altrma ve program dosyas ykleyip
  altrma prosedrlerinde (CMD_INTR.ASM)
  hata dzeltme maksatl deiiklik yaptm.
  Bu kapsamda find_first_file prosedr girinde
  ES=CS atamas yaptm. Bu prosedr girite
  dosya ad FindFile_Name adresiyle girse dahi
  ayn adrese (farkl segmentve ofsetten geldiini 
  varsayarak) kopyeleme yapyor. Bu ksm gereksiz
  gibi grnse de, baka girilerde gerekli olduundan
  bu ksm deitirmedim. ES'nin CS'den farkl olarak
  find_first_file prosedrne giri yapmas (open_file
  prosedrne ikinci girite) ilk kta ES farkl
  olduu iin, uzants deien program dosyasnn
  (COM olarak arandktan sonra EXE olarak aranacakken)
  bulunamamasna sebep oluyordu. Bunu dzelttim.  
  
10/09/2011 itibaryla
TRDOS
* RUN komutunuda deiiklie giderek RUN komutunu
  iptal etmeden, dosya adn uzants ve path varsa
  dorudan; dosya uzants yoksa srasyla COM, EXE
  uzantlar ekleyerek, program dosyas aratyorum.
  Dosya adnda path yoksa ve dosya bulunamamsa, 
  path uygulayarak (evrim) dosyay yenden aratp, 
  bulunursa ykleme eklinde CMD_INTR.ASM iinde
  cmd_run ve cmd_external ksmnda nemli deiiklikler
  ve eklemeler yaptm. Bu ekilde dosya altrmada 
  path environment deikeninin/dizgisnin kullanlmas
  ile (hata dzeltme ksm hari) TRDOS'un ok nemli 
  bir gelitirme aamasn gemi oluyorum.

05/09/2011 itibaryla
TRDOS
* INT 21h, Function AH=7 ve AH=8 fonksiyonlarn
  yazdm. (INT_21H.ASM iinde)

04/09/2011 itibaryla
TRDOS
* INT 21h Memory block allocation, deallocation
  fonksiyonlarn ekledim, modify memory allocation
  prosedrnde dzeltme yaptm. TRDOS kernelin kendi
  iinde dosya ykleme ve kapatma esnasnda kulland
  bellek atama tipiyle bellek atama ve bellei serbest
  brakma ilevini bozmamas ve yanl segmenti bellek
  atama tablosundan silmemesi iin, DOS ile INT 21h
  zerinden uyumluluu koruyabilmek iin, INT 21H 
  zerinden 8 farkl (herbiri iin 1 bit kullanarak 
  ve F8-FFh aras atama kodlarn ayrarak) bellek 
  atamas (fonksiyon 48h) yapmaya olanak veren prosedr
  yazdm. Dolaysyla bellek serbest brakma ileminde 
  sadece F8-FFh atama kodlu INT 21H ile atanan segmenti 
  boaltabilmesi (hatasz deallocation) iin byle bir 
  zm buldum. Aksi takdirde mevcut prosedr
  arnca balad segment iin ayn atama kodunu 
  grd tm bellek blmn seri olarak boaltacakt.

03/09/2011 itibaryla
TRDOS
* PATH komutunun SET ile ayn environment block'tan
  ilem yapacak ekilde gerekletiridim.
* PROMPT komutunun dzenledii TrdosPromptLabel'i
  SET komutuyla dzenlenen Envrionment Block'a balamdm;
  bylece SET komutu PROMPT atasa dahi TRDOS Mainprog
  sadece kendi TrdospromptLabel deikeninden/yerinden
  prompt etiketi kullanyor. Bunu byle brakmamm
  iki sebebi var; birincisi prompt almay TRDOS iin
  karmaklatrmamak, basit brakmak, mevcut iyi halini
  korumak. kinci amacm kullanc seviyesinde veya
  baka bir komut yorumlaycyla kullanlabilevcek prompt
  ile ROOT promptunu (veya mainprog promptunu) ayr tutmak.
* COPY komutu kapsamnda create fs file prosedr
  32MB'dan byk FS section aamadndan 32MB'dan byk
  dosyalarda write ilemi esnasnda kk boyutlu section
  eklemeleri oluyordu. (Kk eklemelerin sebebi dosyaya
  yazma esnasnda gelen ilave sektr talebinin az olmas;
  ki, bu normal nk kullanc programnn ileride 
  ne kadar yazacan kernel imdiden tahmin edemez.)
  Bu ar hz kesiyordu ve hz azalmas percent printing 
  esnasnda belirgin grlyordu; yani, 32 MB'a kadar 
  ilk sectiona yazarken hzla ilerleyen yzde daha sonra 
  ok yavalyordu (rnein 37MB dosya iin %85'den sonra 
  yavalama oluyordu.) zm iin nce create_fs_file
  prosedrnn ne kadar data sektrlk section oluturduuna 
  baktrdm, st snr (65534) ise ve dosya daha byk ise
  gerekli olan ek sektrleri ieren (yine en ok 65534)
  bir ek section oluturmaya altm. Sonra ek section
  olutururken durumu "+" ve "." iaretleriyle gstermeyi
  dzenledim. Bylece nce "/-\|" sonra "+." ve sonra "%"
  iateri ile kullancya ilemin devam ettiini
  gsteriyorum. FAT iin create file prosedrnde tek
  cluster yeterli olduundan sadece % gsteriyorum.
  FS'de tm dosyay tek section yapmaya almam okuma 
  ve disk kullanma verimlilii iin. FAt'ta clusterlar
  sabit byklkte olduunu yapacak bir ey yok.

02/09/2011 itibaryla
TRDOS
* SET komutu ile ilgili gelitirmeler.
* COPY komutu write percent printing (>16MB) dzeltmeleri.
  (FILE.ASM iinde) 

01/09/2011 itibaryla
TRDOS
* SET komutu ile ilgili dzeltmeler.

30/08/2011 itibaryla
TRDOS
* SET komutu ile ilgili dzeltmeler.

29/08/2011 itibaryla
TRDOS
* SET komutunu eski yarm kalan TRDOS almasndan
  treterek yeniden programladm. Ama nemli lde
  farkl oldu ve kernel dndaki bellee opsiyonel atamal
  oldu (512 byte) sadece set gerekirse atanyor. Ve
  msdos uyumlu olmas ii ayn ekilde zero tail ile
  dzenledim. msdos uyumu set komutunu zorlatrd ama
  dzeltilecek hatalar, psp'de adreslenmesi, set edilmi
  environment stringlerin tamam silinince environment
  blocku bellekten silme (deallocation) gibi ilerletmeler
  dnda esas tamamlanm oldu. Path, sheel ve prompt'a
  zel muamele gerekiyor... 

21/08/2011 itibaryla
TRDOS
* zdm sandm ama bugne kadar devam eden FAT32 
  dosya sisteminden FSINFO sektrnden sonraki sektrlere 
  ilgisiz yazma yaparak FAT' bozmas probleminin 
  ikinci ve asl sebebinin get_first_fre_cluster prosedrnde 
  fsinfo sektrnn 'next free cluster' alannda yer alan 
  cluster adresinin kontrol edilmesi ve gerekiriyorsa  
  set_first_free_cluster prosedrn arlp yeni deerin 
  kaytlanmas ileminden kaynaklandn saptadm. 
  Set_first_free_cluster prosedrnde BX fsinfo sektr
  girii (bx>0) olduu zaman cx=1 (yazma sektr says) 
  eitlemesi yaplmamas ve yazlan sektr saysnn fazla
  olmas nedeniyle yazma ilemlerinde FSINFo sektrnden FAT'a 
  tama oluyor ve FAT bozuluyordu. Bugn dzelttim.
  Artk FAT32 dosya sisteminin dosya yazma (cluster ekleme)
  veya dizin oluturma ilemi esnasnda (bu sebepten) bozulma 
  ihtimali/durumu kalmad.
 
11/08/2011 itibaryla
TRDOS
* Uzun sredir beni uratran, FAT32 dosya  distemine yazma 
  ilemi esnasnda FAT'n bozulmas problemini zdm. Sebebi
  yine basit kt. BX register'inin ierii deitii halde
  FAT buffer segmente eit olduu varsaymyla yeniden atama
  (;mov bx, word ptr [FAT_Buffer]) yapmamam, FAT Buffer 
  segmentinin sfrlanp, FAT buffer'in diske yanl bellek 
  blgesinden (genel olarak sfrnc segmentten 3 sektr) 
  yazlmasna yol ayordu, bu da dosya sistemini bozuyordu.
  Basit bir sebebi daha nce de olduu gibi, yine gnlerce 
  aratrp farkedemememitim. Bugn zm oldum. 

07/08/2011 itibaryla
TRDOS
* DRV_INIT.ASM iinde "FAT partition validation" prosedrnde 
  FAT partitionlar yanl okutan bir hata fark ettim. Bu hata
  son deiikliklerin dl'de fiziksel src numarasn bozmas
  ve dl'ye yeniden fiziksel src atamas yaptrmadan boot 
  sektr okutmamd. Sonuta src ierii yanl kuruluyordu.
  Ayrca, extended partitionun altndaki partitionun boot sector
  adresi yanl hesaplanyordu. Bunlar dzelttim.
* FILE.ASM iinde create_file prosedrnde dzeltme yaptm.
* DRV_FS.ASM iinde create_fs_file prosedrnde dzeltme yaptm.
* INT_21H.ASM iinde find_first_file ve find_next_file
  prosedrlerinde attributes giri kna gre dzeltmeler
  yaptm (FDWRITE.COM'u altrrken bu programn iinde 
  find first file fonksiyonunun ms-dos'ta found dnerken 
  tr-dos'ta not found ile dnmesi hatasn dzelttim. 
  Giri attributes'i 27h olduu halde kta 27h ile AND ilemi 
  sonucunun 27h olmamas file not found error dndryordu.
  Sonuta, '27h ieriinin herbirinin olmas durumu art deil, 
  bunlardan birinin olmas yeterli, bunlarn hi biri geerli 
  deil ise dosya bulunamad say' anlamnda dzeltme yaptm.) 
 
01/08/2011 itibaryla
TRDOS
* Save_fat_buffer, save_directory_buffer prosedrleri ve
  ilgili dier prosedrlerde ufak iyietirmeler yaptm
  ve kullanmadm ek emniyet tedbirleri uyguladm. 
  (FAT12-16-32 dosya sistemini yanl yazarak veya 
  buffer'ar diske eksik yazarak sistemi bozmamak iin.)
* DRV_INIT.ASM iinde trdos'un extended partitionu 
  doru grmesini nleyen, eski kodun art gibi fazladan
  duran kodlardan kaynaklanan hatay dzelttim. 
  (Start sector deerini yanl hesaplamaya sebep oluyordu.) 

31/07/2011 itibaryla
TRDOS
* Extended partition'un altndaki partitionun 
  logical dos drive olarak doru yklenememe problemi
  olduunu grdm. Bunun iin drv_init.asm iinde 
  30/07/2011 ve 31/07/2011 iaretli dzeltmeler yaptm.
* DRV_FAT.ASM ve DRV_FS.ASM iinde baz kk dzeltmeler
  ve deiiklikler yaptm.
* Bellee smayan dosyalarn kopyelenmesinde dosya
  sistemini tahrip etmesi veya hata vermesi problemi
  devam ediyor. FS dosya sistemine bazen doru kayt 
  yaparken, FAT32'ye yanl kayt yapmas problemi
  devam ediyor.

* Sector buffer zerinden COPY (bellee smayan dosyalar)
  ilemindeki dosya sistemini bozma veya hata verme
  problemini zdkten sonra, copy komutunu geip, 
  INT 21h, set, path, (autoexec.bat'n muadili) startup
  konfigrasyonu, 'run' yerine dosya adyla komut altrma
  ve 64K kernel'e sarsa iso 9660 dosya (atapi cd-rom) 
  sistemini read only dos drive olarak trdos kernel'e balama
  ilemlerine balayacam. TR-DOS 2. versiyonu yazmadan nce,
  1. versiyonun kaynak kodu zerinden 32 bit singlix iletim 
  sistemini gelitirmeyi dnyorum. (2002'den buyana...
  imdiki TR-DOS ilk versiyonun yeniden canlandrdm hali; 
  yani, nceki 1. versiyon, 1998-2002 presentator/p2000.com 
  ve tr-central almalarna dayanan 2005 yl balangl 
  basit bir taslak halindeyken, yeni TRDOS v1.0 almalarma 
  2009 ylnda baladm. Zaten bu dosyann en altnda 
  ilk durum bildirimi iin 7/7/2009 tarihini vermiim.)

* Sinclair spectrum iin gelitirmi trdos iletim sistemiyle
  isim benzerlii


29/07/2011 itibaryla
TRDOS
* Yeni DRV_INIT prosedr (versiyon 4) nceki gn sadece
  primary FAT partition'lar iin alt FS ve extended
  FAT partition'lar iin almad, dn ve bugn asm kaynak
  kodlarnda dzeltmeler yaptm. Bugn iin TRDOS 
  extended FAT ve Singlix FS partition'lar grm oldu.
  Bylece yeni TRDOS Drive Initialization kodu yazmn
  (BugFix veya iyiletirme gerekebilir) tamamlam oldum
  ve uygulamas gereklemi oldu.

24/07/2011 itibaryla
TRDOS
* Son FAT32'yi bozan kopyeleme hatalarn dzeltemeyince
  DRV_INIT.AS zerinde altm ve bu dosyadaki DRV_INIT
  prosedrn byk lde deitirip, iyiletirdim.
  TRDOS.ASM iinde ufak deiiklik yaptm.
* Save FAT Buffer ve Save Directory Buffer prosedrleri
  iin dosya ve dizin yazan herhangi bir komutun sonunda
  kendi buffer'larnda 'buffer changed/written' iareti 
  varm diye baklacak. Varsa ilem tamamlanacak.
  Bunun amac ani kapatma veya elektrik kesilmesinde
  ierii deien buffer' (yazma iareti "2" olacan)
  diske kaytlanmam halde brakmamak. ("0" geersiz,
  "1" diskten okunduu gibi, "2" deimi anlamnda...) 
  imdilik bu hususu erteliyorum.

18/07/2011 itibaryla
TRDOS
* 9 sektrl FAT buffer floppy diske yazma ilemini
  pek hzlandrmad iin 3 sektrl buffer kullanmna
  geri dndm.
* Write file prosedrnde RW buffer ile yazmada FS dosya
  sistemine hata verdiren prosedr aratrmaya devam
  ediyorum. "get section for file sector" dnnde
  hata oluyor...

17/07/2011 itibaryla
TRDOS
* Write file ilemine % sayac ekledim. Bu saya
  dosya boyutuna bal olarak sektr veya 64K sektr iin
  saya aktivasyon alt snr kontrol yaparak 
  copy source file to destination file prosedr iinden
  ayarlanyor.
* FAT buffer size' floppy diske yazma ilemini biraz daha
  hzlandrabilmek iin 9 sektre kardm DRV_FAT.ASM
  iinde gerekli deiikleri yaptm.
* Byk dosyalarda (rw buffer'li ilemlerde) sebebini
  bulamadm hataar devam adiyor. Bu hatalar create file 
  aamasndan sonra oluuyor. Tanmlanmam 50h, D0h gibi
  dn oluyor. Bunun sebebi bugn en son dzeltmeyi
  yapmadan nce bellek atamasnda bo yer olmad zaman
  okuma yama iin referans alnan rw buffer size' 
  kltmediim halde atanan bellek blmn kltmem 
  ve tama olabilir. Sonraki gnlerde zmeye alacam. 
  
16/07/2011 itibaryla
TRDOS
* FILE.ASM iinde copy file ve write file prosedrlerinde 
  gereken baz dzeltmeleri yaptm. (rw buffer ile byk
  boyutlu dosyalar kopyelemeyi aksatan ve invalid data 
  -0Dh- hatas dndren kusurlar dzeltmi oldum.)
* DRV_FS.ASM iinde add new section prosedryle 32MB'a
  kadar mmkn olan en yksek boyutlu section oluturmak
  iin COPY komutuyla ilgili baz dzeltme ve iyiletirmeler
  yaptm.

* Windows iki adet primary partition oluturmad iin
  Linux KDE'de oluturduum primary FAT32 partitionu
  diskmanager'mkdosfs' adyla FAT32 CHS (OBh) olarak
  kaytlam (0Ch -> LBA daha uygundu).
  Ayrca boot sector'n hidden sectors alanna partion'un
  balama adresi yerine SIFIR says girmi. DRV_INIT
  prosedrn extended partition'da bunun iin partition
  table'dan banag adresini alarak logical dos drive'n
  balama adresine ekliyordu (toplama ilemine katlan 
  hidden sectors 0 olduu iin) fakat primary parition
  iin bu dzeltmeyi yaptrmamtm; bugn extended veya
  primary ayrm olmakszn, tm 0Bh partitionlara ayn
  ilemi yapacak ekilde dzelttim.
  (Bu dzeltme olmadan C: olmas gereken FAT32 partition 
  TRDOS'da hem var grnyordu hemde ilevsizdi, D: drive
  olmas gereken Singlix FS partition D: ile aranrken
  C: gibi grnyor ama iine doru ilem yaplamyordu.)
 
14/07/2011 itibaryla
TRDOS
* FILE.ASM iinde 'copy source file to destination file' 
  prosedrnde'insufficient memory' hata dn durumunu
  (max. kesintisiz bellek blm atamasnda sektr snrlarna
  gre budama yaplnca istenen byklk 1 eksildii iin hata
  dn oluyordu.) dzelttim.
* Numeric tail (~) ieren dos dosya adnn aynen kopyelenmesi
  durumda FS dosya sistemindeki dizin dos uyumlu hazrlanrken
  "~" karakteri geeriz saylp, onun yerine "_" karakteri
  konuyordu. Sonuta, 'create fs file' ile oluan dosya ad
  'open file' prosedrnn 'find first file' aamasnda
  'file not found' hatasn dndryordu. Bu durumu dzelttim.  

13/07/2011 itibaryla
TRDOS
* 'rw buffer' kullanarak dosyaya yazma (bellee smayan byk
  dosyalar kopyeleme) ileminin ok yava olmas nedeniyle
  write_file prosedr iindeki okumay gerekmedikce yaptrmamak
  iin ve ayrca buffer size' mmkn olduunca fazla tutup 
  read ve write geilerini (farkl diskler arasnda geileri)
  azaltmak iin, FILE.ASM iinde baz nemli deiiklikler yaptm.
  Ayrca, hata dn durumunda atanm buffer' bellek atama
  tablosundan drmek (serbest brakmak) iin dzeltme yaptm.

* TRDOS imdiki durumda yazma ileminde hata olunca oluturulan 
  hedef dosyay silmiyor. Hedef dosya bo veya ksmen yazlm
  olabilir. (FS iin bo ama tm sektrleri atanm, FAT iin
  sadece 1 cluster atanm hali, 'create file' sonras halidir.)

* Singlix FS dosya sistemli srcye dosya adnda "~" karakteri
  olan dosya ayn adla kopyelenmek istendiinde, create file
  prosedr alyor ama dosya adnda "~" karakteri alt izgi
  "_" olduundan, 'file not found' hatas dnyor. Bu uyumsuzluu
  gidermem lazm veya 'invalid character in file name' olarak
  dosya adn red ettirmem lazm. (Long name'i olan dosyalar
  "~" karakterini barndrd iin ok rastlanacak bir durum.)

12/07/2011 itibaryla
TRDOS
* 'rw buffer' kullanarak dosya kopyeleme (bellee smayanlar iin,
  open mode 0 ile source file alp, read file yaplan ilemler)
  ileminde ilk 64KB + 1 okunan dosya cluster' dnda
  'get_next_cluster'ileminin last cluster yerine first cluster'dan
  balamas seklindeki hata dosyalar 64KB (tek seferden okunan max.
  buffer size) + 1 (source file) cluster' takip eden datay batan
  alarak kopyeletiyordu. Bu hatay dzelttim. Yani, COPY ileminde
  <=64KB'lk bloklar halinde dosya okuma ve yazma ilemlerinde 
  farkedilen kusur kalmad iin, bellee smayan 700 KB ve 
  st dosyalar doru kopyelemeyi baarm oldum. 
  (FILE.ASM iinde, 'read_file' prosedr bugfixleri.)

10/07/2011 itibaryla
TRDOS
* 'create_file' prosedrnde sadece FAT file sytem iin
  kopyelenecek dosya boyutu kadar bo dosya oluturmamak ve
  ilemleri hzlandrmak maksadyla bx=FFFFh eklinde bir iareti
  dikkate alma deiiklii.
* 'copy source file to destination file' prosedrnde
  rw buffer zerinden (open mode 0) okuma ve yazma ilemleri iin
  hata dzeltme, iyiletirme ve ksmen yazma gerekletii halde
  EOF'tan nce read file ileminde hata dn omas durumuna
  gre dzenleme yaptm (FILE.ASM iinde) ve ayrca bu duruma
  uygun olarak (CMD_INTR.ASM iinde) COPY kumutu dnnde
  dzenleme yaptm (CL register'i okuma hatasn gsteriyor),
  fakat ksmen yazma gerekletii iin, kaynak ve hedef dosyalar
  kapatlyor ve hedef dosya diske kaytlanm oluyor.
  (Yazma hatas yok ise clc dnyor ama okuma dosya sonuna ulaarak
  tamamlanmam ise, CL register'i >0 ile dnyor. 0 -> hata yok.)

09/07/2011 itibaryla
TRDOS
* FILE.ASM iinde 'read_file' ve 'write_file' prosedrlerinde
  iyiletirmeler yaptm (buffer'l okuma ve yazma iin).

05/07/2011 itibaryla
TRDOS
* 'DMA crossed 64KB segment boundary' error dnnn
asl sebebinin segmentin 64KB' devirmesi ve offset deerinin
geri dnmesi deil, bellein 64KB'lk blmleri arasnda snr 
ihlali (256 byte birinde, 256 byte dierinde olmak zere iki pepee
64KB segmentin arasnda gei) olduunu ve fiziksel adresleri
kullanarak alan DMD controller'n 16 bit offset'in resetlenmesi
dolaysyla bu hatay verdiini internetten ilgili dkmanlar
okuyarak anladm. (04/07/2011) 
*zmn DISK_IO.ASM iinde 09h error dnn baka bir buffer 
kullanma veya kaydrma v.s. yntemlerle salanmasnn sama olacana,
MEM_INIT.ASM iinde proc_allocate_memory prosedrnde AND ilemiyle
segment boundary check yapmann yani 256 byte'lk atamalarda
bellekteki 512 byte'lk blmlerin snrlarn amayan okumalar
yapmann bu hatay kolayca dzelteceini saptadm ve uyguladm. 
(proc_chs_read prosedr INT 13h disk read fonksiyonunu sadece 
1 sektr okumak iin kullandndan, 512 bytelk snrlarla blnm
atamay garantiye almak yeterli)
* TRDOS memory allocation table 256 byte deil, 512 byte'lk hcreler
halinde dzenlenmi olsa idi, bu hata olmayacakt, ama, bu kez de 256
byte atamalar ve PSP'den sonra program blokunun gelmesi ilemleri 
aksayacak veya uzayacakt. O halde gereken yerlerde 
'segment boundary check' yaplmalyd. En kolay yntem MAT'ta 256 
byte'lk offseti gsteren register' boundary check deeriyle test
ilemine sokmakt. rnein: 512 byte iin boundary check deeri '1'
olup, '1' ile 'and' ilemine sokulan offset deeri '0' sonucunu 
vermezse, 512 byte'Lk blm snrndan 256 byte tama var anlamna 
gelecekti ve DMA controller'n 64 KB'a yakn veya 64KB' geen 
ilemlerinde INT 13h 09h hatas ile dnecekti. 
(BoundaryCheck deeri '3' olursa, bellek 1024 byte snrl atanacak
anlamna gelir. Fakat '1' dndaki deeri kullanmak gerekmedi.)
* Bu ekilde CHS okumalarnda (ve yazmalarnda) DMA controller'n
segment hatas dndrmemesi iin TRDOS kernel'in ilgili tm
dosyalarnda 'call proc_allocate_memory' kodu olan ksmlarda
512 byte boundary check (dx=1) veya boundary check devre d (dx=0)
deiikliklerini yaptm. DX register' bu prosedr giriinde bota
olduu iin onu kullandm.
* Segment Boundary Check iin PSP veya OFDT'yi ieren n 256 byte 
iin yukardaki 'and' ileminden '0' olmayan sonu alma esasna
dayanan deiikli yaptm. (1 saat sonra). nk FILE.ASM iinde
'load file' prosedr iin gerekli. 
 
20/06/2011 itibaryla
TRDOS
* DISK_IO.ASM iinde chs_read ve chs_write prosedrlerinde
  dzeltme gerekti. (Dn zdm santm DMA controller hatas
  tekrarlad, zm olarak her bir sonraki sektr iin BX'i ayn
  brakp, ES'yi 32 artrmak (32*128=4096*16 = 64K = 512*128) 
  yntemini setim.

19/06/2011 itibaryla
TRDOS
* CMD_INTR.ASM, DIR.ASM ve FILE.ASM iinde 'parse_path_name'
  prosedr 'file or directory name is not existing' (al=1) stc 
  dn ile ilgili dzeltmeler yaptm. Yani dosya veya directory
  ad belirtilmeyen dir, copy ve move komutu kullanmnda
  hata dn durumu dzeldi. ('dir c:', 'copy file.ext d:')
* load_file prosedrnn zellikle 64'dan byk veya segment 
  sonunu aan (ES:BX -> BX = 100h iken) dosya yklemelerinde
  sebebini uzun sredir zemediim hatann 
  (TRDOS kernel'den 'Drive not ready or read error' hata dn
  oluyordu ama INT 13h2den hangi hata kodu dn olduuna dikkat
  etmemitim, stc ynlendirmesinde asl hata kodunu kullanmyordum.)
  Error 09h -> 'DMA crossed 64 KB segment boundary' hatas oldunu
  ve BX'in 256 gibi, 0 veya 512 olmayan bir say iermesi durumunda
  DMA controller'n (16 bit) 64K snrn amasndan kaynaklanan
  hata kodu olduunu fark ettim. FILE.ASM iindeki Load_File 
  prosedrne ES:BX buffer addresini ES:100h yerine (yeni ES deeri 
  eski ES+10h) ES:0 ile giri yaptrarak zdm.   

12/06/2011 itibaryla
TRDOS
* TRDOS.ASM ve MEM_INIT.ASM iinde memory initialization 
  ilemlerinde dzeltmeler yaptm. (Kernel'in bellee yerleimi)

11/06/2011 itibaryla
TRDOS
* 'proc_allocate_memory' ve 'proc_memory_init' prosedrlerinde
   dzeltme/iyiletirme yaptm.

31/05/2011 itibaryla
TRDOS
* Main proc iinde include olan DIR.ASM ve FILe.ASM
  TRDOS.ASM iinde include olarak deiti, ASM dosyalarnn
  i sralannda ksmen deime oldu.
* FILE.ASM dosyasnn boyutunu bo atamayla 256 byte byterek
  disk A ve B iin dir listesinin olumasn saladm.
  Sebebi belli olmayan bir aksilie geici zm oldu.
  Ayrca FILE.ASM iinde proc_open_file prosedrnde deiiklikler
  yaptm. Yine de, 64K'nn stnde dosya okuma ileminde hata
  veriyor. Bellek atama hatas olmas lazm, overwrite yapyor
  olmas lazm. FAT 16 formatl C diskinde bu hatay yapmyor.
  (BOCHS emulatrde denedim...)

30/05/2011 itibaryla
TRDOS
* 'mem_init.asm' iinde 64K'dan byk memory allocation iin
  256 byte'lk hcre says girii eklemesi yaptm.
  'file.asm' iinde open_file iin 64K'dan byk dosya aarken
  bellek atamasnda hata farkettim (pepee olduu garantili
  boluk atamas deil, pepee olmayabilecek 64K atamalar
  yapyordu).
* A ve B srcsnn dir komutu artk almyor, muhtemelen
  buffer allocationla ilgili, bu durum file.asm dosyasnda 
  deiiklik yapnca oluyor. Bu gnk deiiklik dir listesini
  A ve B'den boaltt... Fakat aslnda 64K'dan byk dosyalar
  aarken yapt hatay dzeltmeye alyordum, hedefe bir adm
  daha yaklatm, imdi overwrite'n nerede olduunu veya
  program kodunun nerede aksadn bulmam lazm, BOCHS emulatr
  programnda aksayp, gerek A'dan alrken aksamayabilir,
  deneyeceim... Ama her iki durumda da kesin zme gideceim. 

29/05/2011 itibaryla
TRDOS
* 'show' komutunda tab stop iyiletirmesi tamam 
   (artk tab stop'lar tam doru uyguluyor)
* Geici 'readfile' komutu ile file open for read (mode = 0)
  ve read_file prosedrleri kontrol dorulama ile sonuland.
  (>64K dosya boyutu iin 'full open' yapan show komutu ile
  (her seferinde 1 byte okumak zere 'buffer open' ve 'read_file'
  yapan 'readfile2 komutu ayn ekran dkm verdi ev ayn yerden
  kusursuz dosya sonu k/dn yapt.) 
  Buna gre, 'copy' komutu prosedrlerindeki bellee smayan
  byk dosyalarn (open mode 0 ile alp) kopyelenmesi
  kusurunu dzeltirken, 'read_file' hatas olmadn 
  dorulam oldum; hata baka yerde.

21/05/2011 itibaryla
TRDOS
* 'proc_copy_source_file_to_destination_file' prosedrnde
  gereken baz dzeltmeleri yaptm.
* Open_file prosedrnde bellee sacak dosya bykl
 (full open veya sector buffer open) kontrolnde, DX = 16 olan
 (1MB) snr DX=8 (576 kB) olarak deitirdim.
 Ayn deiiklii (bir seferde okunacak veya yazlacak
 byte'larn t snr) 'read_file' ve 'write_file' 
 prosedrlerinde de yaptm.
* 'proc_load_FAT_root_directory' prosedrnde directory buffer
 atamas (deallocation) ileminde bugfix gerekti. Dzelttim.
* 'open_file' prosedrnde 'load_file' prosedr stc ile dnnce
  dosya iin ayrlm bellek restelenmiyordu; bu nedenle
  Load error durumunda 'close_file' ilemi yapan
 'loc_open_file_check_load_error' kod ksmn ekledim.  
 
19/05/2011 itibaryla
TRDOS
* 'copy' komutunun FILE.ASM ve CMD_INTR.ASM iindeki
  deiiklikleri tamamland.

18/05/2011 itibaryla
TRDOS
* 'move' komutu baaryla tamamland.
* 'copy' komutunun FILE.ASM iindeki prosedrnde 'move'
  komutuyla ayn manta gre nemli deiikliklere baladm.

17/05/2011 itibaryla
TRDOS
* FILE.ASM iinde 'move source file to destination file'
  prosedrnde dzeltmeler yaptm. (Dn ve bugn ...)

15/05/2011 itibaryla
TRDOS
* FILE.ASM iinde 'move source file to destination file'
  prosedrnde dzeltmeler gerekiyordu. Bu dzeltmeleri
  yaptm. MOVE komutunun son duruma gre almasn henz
  kontrol etmedim. Kaynak dosyann erken silinmesini nleyen
  kontrolleri ekledim (4 fazda tama), bylece hedef dosyann
  dizin girii baaryla gereklemeden kaynak dosyay 
  sildirmiyorum. Ayrca 'update parent dir lmdt' prosedrnn
  FS dosya sistemine ilem yapmaya almasn nleyen dzeltme
  yaptm (nk yle bir ey gerekmiyor ve ayrca mmkn deil).
  

01/05/2011 itibaryla
TRDOS
* Gereken dzeltmeleri yaparak MOVE (farkl directory'de RENAME) 
  komutunun FAT ve FS prosedrlerini tamamladm. 
  Ancak, komutun farkl source ve destination kombinasyonlarnda 
  kusursuz almas iin dzeltmeler gerekecek. 
  (imdilik byle kalsn.)
* COPY komutunda destination directory name yok ise 
  ayn isimle kayt yapldnda source directory'e kayt yapyor
  ve mevcutluu kontrol etmediinden iki adet ayn dosya oluuyor.
  Aslnda komutun girildii andaki current directory'e kayt olmas
  ve her durumda mevcutluun kontrol edilmesi lazm. Bu kusuru
  ileride dzelteceim. (imdilik kalsn...)

30/04/2011 itibaryla
TRDOS
* DIR.ASM iinde proc_update_parent_dir_lmdt ve
  proc_make_directory prosedrlerinde Logical DOS Drive Description
  Table adresi olan DS:SI'yi arlan prosedrlerden dnte 
  korumaya ynelik baz dzeltmeler yaptm. 
  (imdiye kadar kendini belli etmeyen Bug'lar Fix'lemi oldum.)
  (Genel olarak prosedrden nasl dnldne bal. ounlukla
  DS:SI korunuyor grnse de dnn farkl noktadan olmas
  beklenmedik bir hataya yol aacakt. rnein: MKDIR komutu
  'add new sub dir cluster' ile alacak olsa idi hata yapacakt.
  Bu nedenle push-pop ile koruma eklentileri yapmak gerekti.)
* MKDIR komutu prosedrndeki hatann (Bug) aynen 'create file'
  prosedrnde de bulunduunu fark ettim. FILE.ASM iindeki
  proc_create_file prosedrnde ayn sebepli dzeltmeyi yaptm.
* Tm bu dzeltme gerektien hatalar MOVE komutunun 
  prosedrlerindeki hatalar arayp, dzeltirken fark ettim.

24/04/2011 itibaryla
TRDOS
* move_source_file_to_destination_file prosedrnde dzeltme yaptm.

23/04/2011 itibaryla
TRDOS
* INT 21h rename fonksiyonuna uygun olarak
  kernel iinde 'move' prosedrn ve CMD_INTR.ASM iinde
  'move' komutunu yazdm. Rename komutundan farkl olarak
  destination farkl directory'de olabiliyor ve overwrite
  olabiliyor. Farkl drive olamyor. Eer move komutu
  directory deitirmeden kullanlyorsa 'rename' komutu
  gibi uygulanr (rename prosedrne dallanarak).
  Dzeltmeler gerekebilir. 'Move' komutu prosedrlerini 
  INT 21h rename fonksiyonunun altnda alacak ekilde
  hazrladm. 'Rename' fonksiyonuna henz balamadm.  

17/04/2011 itibaryla
TRDOS
* Invalid Function Call handler'n INT 21H dndaki
  interruptlarda interrupt numaras dahil mesaj verebilmesi
  iin INT_21H.ASM dna, IFC.ASM dosyasna tadm...

15/04/2011 itibaryla
TRDOS
* Bugn INT_21H.ASM iinde 'modify memory allocation size'
  fonksiyonunda push-pop hatalarn dzelttim.

14/04/2011 itibaryla
TRDOS
* Dn modify memory allocation size konusunda MEM_INIT.ASM iinde
  mevcut blok boyutunu, tahsis tipi ve max. mmkn blok boyutunu 
  dndren proc_return_memory_allocation_status prosedrn
  yazdm. Bugn INT_21H.ASM iinde modify memory allocation size
  fonksiyonunu yazdm. 64K'dan byk bellek atamas iin pepee 
  64K atamas yaplrken, segment deeri 0FFFh artyordu, bunun
  hata olduunu farkedip 1000h olarak artran dzeltmeyi yaptm.
  (FILE.ASM iinde open file prosedrnde ve ayrca INT_21H.ASM
  iinde modify memory allocation size fonksiyonunun huge 
  allocation ksmnda.) 

12/04/2011 itibaryla
TRDOS
* SINGLIX FS dosya sisteminde delete komutu kapsamnda 
  file not found hatasnn sebebini buldum, dzeltim. 
  (Delete directory entry prosedrne girite DX:AX'e 
  FDT adresi atanmad iin hata veriyordu. 
  Prosedr iinde atama yaptm.)

11/04/2011 itibaryla
TRDOS
* Delete file prosedrlerinde truncate clusters aamasnda oluan 
  hatay dzelttim. (Delete directory entry prosedr
  First cluster deerini dndrmedii iin truncate file prosedr
  doru almas). lgili prosedrlerde dzeltme ve iyiletirme
  yaptm. Rename file prosedr iin delete directory entry
  ve update parent dir lmdt aamalar tamam.
 
10/04/2011 itibaryla
TRDOS
* INT 21h Set Disk Transfer Address (DTA) fonksiyonu tamam.
* INT 21h Delete File fonksiyonu tamam.
* INT 21h Rename file fonksiyonu iin proc_delete_file
  prosedrnde deiiklik yapp, 'entry delete',
  'unlink clusters', 'update directory lmdt' aamalar
  ayrld. 'entry delete' ve 'update directory lmdt' baka bir
  prosedr oldu (rename iin). Fakat aamada free clusters
  hesabnda hata yapyor, eski durumla karlatrarak
  zm bulmam lazm. 

09/04/2011 itibaryla
TRDOS
* INT 21h Move File Pointer (Seek) fonksiyonu tamam.

02/04/2011 itibaryla
TRDOS
* DVR_FS.ASM iinde 'proc_get_first_free_section' prosedr
  MAT iinde 'first free sector' alanna geerli olmad
  anlamnda 'FFFFFFFFh' konulduunda bunu geerli ilk bo sektr
  olarak ileme koyan hataya sahipti, bu nedenle fs mkdir prosedr
  hatal dn veriyordu. Ve harddiskte yeni directory 
  oluturulmuyordu. Bugn bu hatay dzelttim.

27/03/2011 itibaryla
TRDOS
* INT 21h, Fonksiyon AH=47h 'get current directory' tamam...
* INT 21h, Fonksiyon AH=19h 'get current drive' tamam...

20/03/2011 itibaryla
TRDOS
* DVR_FS.ASM iinde yaptm deiiklikle (create_fs_file)
  file size belirtilmedii (SIFIR olduu) zaman Kernel'in eklenecek
  ilk dosya kesimi (section) iin fdt + data sektr saysn diskin
  bo (free) sektr saysna gre belirlemesini saladm. (2-17 aras)
* FILE.ASM iinde  (write_file) dosya pointer' dosya boyundan byk 
  olduu zaman girite prosedre EOF bildirilmese dahi EOF muamelesi 
  yapp dosya boyutunu deitirmesini saladm. Bylece dosya bykl
  SIFIR olarak (INT 21H ile) yeni oluturulan dosyann iine yazlsa
  dahi dahi ilk yazma ileminde dosya boyunun SIFIR kalmas kusurunu
  dzeltmi oldum. (INT 21h 'Create file' fonsiyonunda dosya bykl
  belirsiz ve SIFIR olup, 'write file' ile dosyaya yazlan byte'larn
  dosya bykl olmas gerekiyor. TRDOS Kernel'iindeki arlarda
  kopyeleme ileminde dosya bykl prosedrlere girite bilindii 
  iin, EOF olup olmama durumu nceden ayarlanabiliyordu. Bylece
  dosya sonu gelmeden 'eof' girdisi olursa 'truncate file'
  ileme konuyordu.)
* Write file prosedrne DX:AX = 0 giriinin dorudan 'truncate file'
  ilemi (mevcut file pointer'na gre) yaptrmasn saladm.
* 'Create file' ve 'write file' dzeltmelerinden sonra, dosyalarn
   oluturulmas, almas, okunmas, yazlmas ve kapanmas 
   (INT 21h dosya) fonksiyonlar tamamlanm oldu. Kalan dosya
   fonksiyonlar daha basit, jritik aama baaryla geilmi oldu.
   Sadece SINGLIX FS dosya sistemine uyumluluk (compatibility) modunda
   eriildii iin (DOS dosya formatna evrildikten sonra ve sanal 
   dos directory buffer'na kopyelendikten sonra eriim
   yapld iin, hemen akabinde yaplan directory ilemlerinde
    reset/refresh gerekmek ve baz durumlarda doyas silinince veya
   boyutu deiince ilk takip eden directory ilemleri 
   hatal k vermekte bu durumu daha sonra dzelteceim.) 
 
19/03/2011 itibaryla
TRDOS
* INT 21h 'create file' fonksiyonu Singlix FS dosya
  sistemini bozuyordu. INT 21h 'create file' fonksiyonu
  'proc_create_file' prosedrn ve onun altnda (Singlix FS iin)
  'proc_create_fs_file' prosedrn aryor.
  Sebebini dosya kesiminin (section) sektr saysn 
  (INT 21h dolaysyla) SIFIR olarak (dosya boyutu DX:AX 
  sfr olmas dolaysyla) ilemlere balatnca, 
  proc_update_dat prosedr cx = 0'dan dngye girdiinden 
  (cx=FFFFh'ye derek tekrarlad iin) allocation hatalar 
  olmas ve mevcut DAT'n bozulmas ve root directory'nin 
  tahrip olmasyd... Bu durumu dzelttim... Dosya boyutu 
  sfr olarak girilirse 'proc_create_fs_file' prosedr sektr saysn
  FDT+1 = 2 olarak ayarlyor. (Singlix FS iin create file prosedrnn
  belli bir dosya boyutuyla arlmas en uygun durumdur. Fakat
  INT 21h iinden belli bir dosya boyutu ile arma olana
  yok, nk o aamada dosya boyutu bilinmiyor veya fonksiyona 
  girdisi yaplamyor.)
 
13/03/2011 itibaryla
TRDOS
* INT 21h 'create file' fonksiyonu ve 'write_file'
  fonksiyonlar tamam fakat dzeltmeler gerekecek.
* INT 21h Fonksiyon AH= 0Ah, 'buffered keyboard input'
  fonksiyonu tamam.
  (rnek int21.asm dosyasnda olan dos fonksiyonlar)

12/03/2011 itibaryla
TRDOS
* INT 21h 'create file' fonksiyonu iin FILE.ASM iinde
  'proc_create_file' ve 'proc_make_directory' prosedrne 
  attributes girii (CL ile) uygulamasn yaptm. DRV_FS.ASM
  iinde etkisi yok (sadece normal file ve normal directory) olarak
  yeni dosya veya dizin ayor. Yani Singlix fs iinde
  yeni dosya veya dizin aarken INT 21h zeriden 
  attributes (nitelik) belirtilmesi (TRDOS iin) geersiz.  

05/03/2011 itibaryla
TRDOS
* INT 21h 'close file' fonsiyonu tamamland.
* INT 21h 'read file' fonsiyonu tamamland. Opne, read, close file
  fonksiyonlar 'READFILE.COM' program ile test edildi. Tamam...

26/02/2011 itibaryla
TRDOS
* INT 21h 'open file' fonsiyonu tamamland. (INT_21H.ASM)
  Open file ve close file prosededrlerinde (FILE.ASM iinde)
  bugfix'leri yaptm. (zellikle deallocate_memory ileminde
  hatal boaltma yapan nceden kalma kusurlarn dzelttim)
  Kontrol ve dzeltme iin OPENFILE.ASM dosyasnn derlenmesinden
  oluan OPENFILE.COM test programn kullandm.

19/02/2011 itibaryla
TRDOS
* Find_next_file prosedrnn int 21h iinden kullanlmas iin
  rnek dirlist.com programnn msdos'ta (windows dos prompt'da)
  doru alrken trdos iinde ilk 16 dir entry'den (short name)
  sonra devam etmeme sebebini bouna kernel prosedrlerinin
  iinde aramm. Sebep, 16 satrdan sonra enter tuu mu yoksa 
  esc tuumu bakp ona gre sonraki sayfay veren, kernel'deki 
  print_directory ve dirlist.com iindeki ayn prosedrde 
  int 21h 'find next file' arsna (0Dh < 1Bh) cf=1 (stc) olarak 
  girilmesi ve dnte stc (cf=1) olduu iin ESC tuuyla ayn muamele
  yaplmas (jc short ...). Bunu bgn INT 21h iinde girite flags 
  register'inin push edilen halini stack iinde 0FFFEh ile ve (AND) 
  ilemine sokup CLC yaparak zdm.  Bylece INT 21h girite clc'yi 
  kendisi yapyor kta kendisi hata  dndrrse stack iindeki flags 
  register'ini 1 ile veya (OR) ilemine sokarak stc yapyor... 
  Fakat, TRDOS INT_21h kodu orijinal giri FLAGS deerini 
  invalid function call durumunda yapaca dkmde gstermek zere
  (INT_FLAGS yerinde) saklyor. (TRDOS INT 21h interrupt'na giriteki 
  gerek FLAGS durumu, 'invalid function call' durumunda grlebilir) 
* Bylece gnlerdir takldm, TRDOS kernel iinde mevcut
 'find first file' ve 'find next file' prosedrlerinin ilgili 
  INT 21h fonksiyon arlarna uyarlanmas baaryla tamamlanm oldu.
  
16/02/2011 itibaryla
TRDOS
* INT_21H.ASM find_next_file fonksiyonunda find_directory_entry
  prosedrne iletilen cx deerinin 02dan farkl olmas durumunda
  bir sonraki dosyay aramamdan dnme kusuru basit idi ama
  10 gn iide fark edemedim. Bugn fark ettim ve sonraki dosyalar
  (dirlist.com ile deneme yaptmda) listemeleye balad fakat
  bir sektrn veya 1 cluster'n tesine gitmiyor bu kusuru da
  yarn veya daha sonra dzelteceim.
  (Yine basit bir kusuru/eksii zor bulmu oldum.)

05/02/2011 itibaryla
TRDOS
* INT_21H.ASM dosyasnda modifikasyon ve eklemeler.
  Interrupt 21h'de find_next_file fonksiyonu eklemesi ve iyiletirme. 

03/02/2011 itibaryla
TRDOS
* INT_21H.ASM dosyasnda modifikasyon ve eklemeler.
  Interrupt 21h'de find_first_file fonksiyonu eklemesi ve iyiletirme. 

27/01/2011 itibaryla
TRDOS
* CMD_INTR.ASM iindeki komutlarda, drive, path ve file name iin
  yolu hazrlayan blmler tekrarlyordu, INT 21H iin yazlacak yeni 
  fonksiyonlar iin de (find_first_file, open file gibi) ayn iler 
  gerektiinden, DIR.ASM iinde proc_set_working_path prosedrn yazdm. 
  Src deitirme, dizin deitirme v.s. ilemler bunun iinde 
  gerekleecek. Daha sonra CMD_INTR.ASM iindeki aynsnn tekrarlarn 
  silerek ve deitirek tm kernel kodunu ksaltacam, sadeletireceim.

25/01/2011 itibaryla
TRDOS
* write file iinden geilen truncate_file prosedrnde
  dosya boyutu ksald halde bunu FAT'a ilememe (1 cluster' gemeyen
  dosya boyutlar iin) kusuru vard, dzelttim. Add new cluster ve 
  truncate cluster chain prosedrleri doru alyor. Truncate file
  prosedrndeki kusur 1 cluster' gemeyen dosya boyutlarnda cluster
  zincirinin budanmas ilemini iptal ettirmemdi. (lk cluster' sildirmemek
  iin; fakat bu mantk yanlt, nk, ilk cluster' zaten silmeyecek
  bir kodlama prosedrde vard. Benim yaptm truncate ilemini
  balatmadan bitirmek olmutu. Bu hata da zor bulduum ama sebebi basit
  hatalardan oldu.) 

22/01/2011 itibaryla
TRDOS
* Add new cluster prosedryle ilgili read file ve write file prosedrlerinde
  ufak deiiklikler yaptm. prosedrden dnte hataya sebep olan
  (dnte kullanlan) DI register deerinin deimesi kusurunu dzelttim.
  Ayrca truncate file prosedrnde dzeltme yaptm fakat sonu vermedi.

20/01/2011 itibaryla
TRDOS
* Dnk zmde/dzeltmede ilevini deitirmeyen ama 
  kodu iyiletiren ufak deiiklikler yaptm.

14/01/2011 itibaryla
TRDOS
* Komut argmanlarn PDP+80'den itibaren MSDOS uyumlu olarak
  uyarladm. (cmdarg.asm/cmdarg.com ile snamasn yaptm.) 

19/01/2011 itibaryla
TRDOS
* 64 kilobyte'dan byk dosyalarn show ve copy komutunda
  hatal grnme sebebini zdm. proc_load_file (FILE.ASM) ve
  proc_load_fs_file (DRV_FS.ASM) prosedrlerinde ES segment register'
  read ileminden sonra update (+1000h) olmas gerektii halde
  nce update oluyordu. (Yani sector count'a gre buffer segment:offset
  tamas/telemesi yaparken, offset doru yerde kalyor fakat segment 
  okumann sonunda deil banda teleniyordu, dolaysyla buffer 64KB 
  ileri kayyordu ve hatal show ve copy'e sebep oluyordu...)

09/01/2011 itibaryla
TRDOS
* Read-File ve Write_File prosedrlerini ve bunlarn altndaki
  prosedrleri gzden geirdim. Dolaysyla COPY komutu altnda
  add cluster/section, truncate file ilemlerinde hata olmamas
  gerekiyor. zellikle 64 KB stnde doya yklemede hata olmamas
  gerekir hata kalmsa load file prosedrnden kalmtr.

26/12/2010 itibaryla
TRDOS
* FAT 32 dosya sisteminde mkdir komutunda (proc_make_directory)
  get_first_free_cluster (FAT32) prosedrnde disk_read iin 
  sektr says 1 (cx=1) olmas gerekiyordu, girite cx>1 olduu
  zaman (CX=0FFFFh) prosedrde taklma oluyordu. 
  (Bellekte dos boot sektr buffer'n devamnda kernel zerine 
  yazd iin.) Bu hatay dzelttim.
* ok nemli dier bir hata update_cluster prosedrnn FAT 32 
  ksmnda FAT buffer'dan cluster offseti zerinden cluster deeri
  alnacak iken ES segment registe'rna FAT buffer segment adresi
  yanl atand iin, yanl ES:BX clusster kaytlamas nedeniyle 
  FAT 32 dosya sistemini bozuyordu. Hatta denemede
  'mkdir singlix' komutu kullannca Windows XP C: ksmen bozuldu
  scandisk ile dzelttim ve 2. windows XP partition'dan girerek
  toparladm. Dolaysyla bu nemli hatadan dndrdm. FAT 32
  ilemlerinde bakaca hatalar olabilir. FAT 32 formatl USB/Flash
  bellekte ayn ekilde taklma vard (mkdir'de) dzelmi oldu,
  dosya kopyelemede problemlerin bir ksm dzelmi oldu. Yine de
  FAT 32 yazma ilemleri henz gvenli deil... 

25/12/2010 itibaryla
TRDOS
* Singlix FS mkdir prosedrnde parent dir DDT (DX:AX ile)
  gerektii halde girite (Current Dir FCluster) DX:AX'e tanmad 
  iin invalid format (0Bh) hatasna sebep oluyordu. Bu hatay
  dzelterek FS mkdir'in doru almasn saladm.
* Mkdir komutunda singlix fs file system iin resetlenmi buffer'dan
  yeni sub dir sektrlerine (bo) yazma yaplrken, birden byk
  sector count (cx) kullannca ES:BX'de buffer
  (her bir fazla sectr says iin 512 byte) ilerliyor dolaysyla 
  reset bozuluyordu, yazmay 1 sektrlk dngler halinde yapnca
  bu hata dzeldi.
  
05/12/2010 itibaryla
TRDOS
* COPY komutu ve 'write file' bugfix'lerine devam...
* "Create FS File" bugfix'i, "Add new FS section" bugfix'i 
  ve ilgili dier prosedrleri bugfixleri ile mevcut FS dosyasna
  section eklerken oluan hatalar dzelttim.
  "Create FS file" ile 64KB'tan kk dosyalar hatasz kopyelenirken,
  dosya boyutu ksalrken (truncate) hata olmuyor ama uzarken 
  (add new fs section) hata oluyordu, bu hata "free space" ile kendini
  belli ediyordu veya error dnnden...
* Bugn ilk kez dzeltilmi "add new fs section" prosedr ile
  doru sonu veren multi section'lu dosya elde ettim.
  'menuprog.asm' dosyasn (4283 kB) FAT'tan FS'e (fd) kopyeletirken, 
  512 byte ile create yaptrdm, kalan ksm 'add new fs section' ile
  kopyelettim. Dosya kopyesi 1+2+2+2+2 = 9 sector olarak, 
  (4283/512 = 8.365) 5 sectionda olutu. Free space 9*512+5*512 olarak,
  392704 byte iken 385536 byte'a dt...Bu ekilde ilk multi section
  uygulamas baaryla gereklemi oldu... (Multi section
  durumuna gre dosya ama ve kopyeleme prosedrlerini ok nce 
  yazdm halde, multi section ilk kez bugn dosyaya -write file-
  iinden uyguland ve gerekleti...)
* Multi section kopyelemede (floppy diskte) 2 sektr yerine 3 sektre
  gre section bykl ayarlarken, load_fs_file prosedrnde
  dosyann son kalan sektrleri (1 ile) ile son section sector count'u
  (3 iken) uyumsuzsa, karma sonucunda negatif say stc dndryordu.
  Bu durumu dzelttim .(Kalan sektr says section sector count'undan
  az ise, az olan kadar okuma/ykleme yaplmas seklinde dzeltme...) 
* Yeni eklenen section'da free space'e gre belirli sayda sektr 
  bulundurma ynteminde (write file ilemleri gereince ne kadar ekleme 
  yaplaca bilinmeden bir section eklemek gerektii iin) section 
  sonunda kullanlmayan bo sektr kalyor ama ilerideki eklemelerde 
  gereksiz section kullanm nlenmi oluyor. 'Create file' ile alan 
  dosyada tek section'da tm sektrler olabilecei halde, sonradan 
  'write file' ile byyen dosyalarda section says artyor ama 
  section size kk kalyor. Bu durumu nlemek iin, Singlix FS iin 
  uygulama programlarnn 'create file' prosedrn nihai dosya boyutu 
  ile birlikte kullanmas gerekecek. (Dosya kopyeleme, diskte bo yer 
  var ise, "create file" ile balamaldr veya "write file" da nce 
  dosya sonu yazlmaldr ki dosya boyutuna gre 
  yeni bir section olusun. Overwrite+add yerine delete+create...)

20/11/2010 itibaryla
TRDOS
* RENAME komutu tamamland.
* COPY komutu dzeltmeleri devam ediyor.

19/11/2010 itibaryla
TRDOS
* FindFile, SourceFile ve Destination file structure'lar 126 byte
  iken 128 byte oldu (DirBuff_EntryNumber bunlara offset 127'de 
  kopyelendi). Bylece bulunan dosyann directory entry numaras
  kaytlandndan direkt bu dosyaya erimek daha kolay olacak.
  (RENAME komutuyla ilgili prosedrlerde gerekli oldu.)
  Ayrca, 'long name entry length' ile longname_yes eitlendi;
  yani dosya longname'e sahip ise, bu byte 0'dan byk ve longname'in
  toplam dir entry saysna eit, bu say 0 ise longname yok demek.   

16/11/2010 itibaryla
TRDOS
* COPY komutunda dzeltmeler devam ediyor. zellikle add new section, 
  add new cluster durumu iin hem COPY ieriinde hem de dnte 
  directory list'in gncelenmesinde dzeltme gerekiyor. Truncate durumu
  iin dnte directory list'in gncelenmesi hatasn dzeltmem 
  gerekiyor. COPY komutunda buffer zerinden (source file' full open 
  yapmadan) kopyeleme ksmn yazmam gerekiyor.

* RENAME komutunun ilk halini altrdm. Bu komut dosya veya dizinin
  adn deitiriyor. Kaynak/Source/Eski dosya ad path ierebiliyor,
  destination/hedef/yeni dosya ad path iermeden geerli bir DOS 
  dosya ad olmas gerekiyor. Attributes kontrol de oluyor.
  RENAME komutu detaylarna devam ediyorum.
           
14/11/2010 itibaryla
TRDOS
* COPY komutuyla Singlix FS dosya sistemine kopyelenen 
  dosyaya, DOS directory entry date&time formatndan evirerek 
  last modification date&time atama prosedrndeki 
  yanl sonu veren ilem hatalarn dzelttim.

07/11/2010 itibaryla
TRDOS
* Create fs file ve write file (fs) prosedrleri tamam, 
  dn ve bugn hata dzelterek alr hale getirdim. lgili
  dier prosedrlerde imdiki aamada kendini gstermemi baz 
  hatalar da dzelttim ve ufak deiiklikler de yaptm.
* Copy source file to destination file prosedrnde
  imdilik 'write full open file' alyor, read/write 
  (buffer zerinden bellee tamam yklenmemi dosyann okunup
  yazlmas) henz alabilir durumda deil (ama almaya
  ok yakn, nk hata dzeltilmesi gerekecek yerleri hari hazr).
* Write file prosedrnde 'add new cluster/section' ve 'truncate'
  durumlarna gre hata dzeltmek gerekecek.
* ok zor geen, tamamen orijinal olduu iin, bakaca bir hi bir
  iletim sistemi yazlmndan yararlanmadan (dos uyumluluu iin
  read/write file ile birlikte) tasarladm copy file prosedrleri
  tamamlandnda (read file ve write file ile birlikte)
  SiNGLiX iletim sisteminin de copy, read, write file ilevlerinin
  temelini oluturacak. Sadece register'lar 32 veya 64 bit olarak
  deieceinden, daha basit ve daha hzl hale dnecek.
  SINGLIX file ve directory r/w prosedrlerinde TRDOS'a gre
  gereken deiiklikler de olacak ama Singlix kernelinin
  dosya sistemi fonksiyonlar TRDOS'taki kernel (dosya sistemi) 
  fonksiyonlarna (yntem ve ierik olarak) dayanacak.         

31/10/2010 itibaryla
TRDOS
* Create file prosedrnn hata dnnde free space kontrol
  (update/tahsis edilen clusterlarn saysna gre) ve delete file
  prosedr altnda truncate cluster chain prosedrnde silinen
  cluster kadar free space ekleme dzeltmesi yaptm.
* COPY komutu prosedrlerini dzeltme almasna devam ediyorum.

30/10/2010 itibaryla 
TRDOS
* FAT 32 dosya sistemi olan C diskinde DIR komutunun taklmas
  sebebini buldum. 1GB ve daha byk dosyalarda dosya boyutu
  yazlrken (DIR.ASM iinde proc_print_directory prosedrnde)
  DI register'i dng banda 9 iken, file size rakam says 10
  olduundan 'dec di' 0'n altna dp 65535'e sebep oluyordu
  bu da takip eden prosedrde eksik rakamlarn boluklarn
  space (20h) character ile doldurma ileminin kodu silmesine 
  sebep oluyordu. DI'ye dng banda 10 deeri vererek
  hatay aylar sonra dzeltmi oldum. Taklma sebebini 
  load root/sub directory veya Get Next Cluster prosedrlerinde
  tahmin ettiim iin zm uzun srd. lk kez dn akam 
  sebebin PAGEFILE.SYS gibi 1 GB'dan byk bir dosyann 
  file size'n yazarken proc_print_directory prosedr iinde 
  kilitlenlenme olabileceini dndm ve bugn zdm.

* COPY komutuyla ilgili FAT prosedrlerinde dzeltmeye devam 
  ediyorum. Create File prosedrnde dzeltme yaptm.   

26/10/2010 itibaryla 
TRDOS
* FILE.ASM iinde open_file prosedrnde allocation size OFDT'yi
  kapsamad iin copy prosedrnde tahsisi yaplmayan 
  son 256 byte (allocation unit) drive change esnasnda 
  overwrite oluyordu. (Directory buffer tazelemesinden dolay...)
  Bu hatay zor buldum ama dzelttim. Bylece, open file (mode 5)
  ilemiyle alan source dosyann, destination dosyasna gei
  yaplrken sonundan krplmasn nlemi oldum. Bu hatay fark
  edemememin sebebi dier komutlarda (show'da v.s.) 
  overwrite olmamas idi. Dolayyla srekli 'copy', 'create file'
  'write file' ve 'get cluster for file sector' prosedrlerinden
  phelenip onlara younlamtm. Bugn krpmann son 256 byte
  olduunu daha dikkatlice dnp, sebebi buldum ve zdm.
  Bugnden sonraki ilk aama COPY komutunun dier bugfix'leri
  ve singlix fs dosya sistemine (destination olarak) uyarlanmas. 
  
24/10/2010 itibaryla 
TRDOS
* DRV_FAT.ASM iinde update_cluster prosedrne BugFix yaptm.
  BX:CX eklinde olmas gereken yeni cluster CX:BX eklinde
  bekleniyordu gnderen prosedr BX:CX olarak gnderdii iin
  birden ok cluster'dan oluan dosya ve dizinler hatal 
  kaytlanyordu veya kaytlanacakt. FILE R/W prosedrlerinde
  dzeltme yaparken gereken dier dzeltmelerden en nemlisi 
  bu oldu. Ayrca Create file prosedrnde dzeltme gerekti.

20/10/2010 itibaryla
TRDOS
* FILE.ASM iin Open_File prosedrnde open mode 0,1 ve 2 iin
  taklmaya sebep olan hatalar dzelttim. Ayrca Read_File ve 
  Write_File prodedrlerin ufak dzeltmeler yaptm.
  Copy komutunun kopyeleme/yazma ksm basit haliyle (ilk sektrde)
  doru gereklemi oldu. Write_File prosedrnn kontrol ve
  dzeltme aamasna devam ediyorum... (Bugn tamamlayamadm...)
  Hafta sonu FAT iin kesinlikle, FS iin muhtemelen 
  tamamlanr sanyorum.

17/10/2010 (Pazar) itibaryla
TRDOS
* DISK_IO.ASM iinde LBA read ve write prosedrlerinde 
  (disk_write ve disk_read iinde) DX:AX iftinden oluan 32 bit LBA
  adres dnte bozuluyordu; bu nedenle tekrarl/peisra okuma 
  ve yazmalarda DX:AX bozuluyordu ve hata dn oluyordu. 
  Bu hatalar dzelttim... (LBA BugFix)
* COPY komutu FAT dosya sistemi iin alt... 
  (Create_File, Read_File ve Write_File prosedrleri alt !)
  Saptadm hatalar ve FS dosya sistemi iin gerekli (create fs file)
  prosedrn yazmaya gelecek hafta sonu devam edeceim... 
  (nallah...)

16/10/2010 itibaryla
TRDOS
* RMDIR, MKDIR komutlarnn dzeltmelerini/bugfixlerini yaptm
 (calculate FAT free space ve update parent dir lmdt)
  ayrca DEL komutunda olan update parent dir lmdt ksmn
  ortak 'update parent dir lmdt' prodedrne evirdim. 
 (mkdir ve rmdir komutlarnn -FAT- dn hatalar dzeldi)
 Bu komutlarn FAT free space hesabnda  free space byklnn
 geersiz (FFFFFFFFh) olmas durumundaki yeniden hesaplama
 ksmn dzenledim. Bu komutlarda fark ettiim bir hata kalmad. 

* COPY komutunda create file ksmndan gelen hatay dzelttim
  bu hata da calculate FAT free space ksmndan geliyordu.  

10/10/2010 itibaryla
TRDOS
* COPY komutuyla ilgili olarak ve ayn zamanda READ FILE ve WRITE FILE
  prosedrleri bunlarla ilgili OPEN FILE ve CLOSE FILE prosedr
  deiiklikleri, CREATE FILE, ADD NEW CLUSTER, ADD NEW SECTION ve
  TRUNCATE file prosedrlerini 1-2 ayda tamamlam oldum.
  imdi bunlarla ilgili kodlarda gerektike dzeltmeler yapacam...

19/09/2010 itibaryla
TRDOS
* DRV_FS.ASM iinde truncate_fs_file, truncate_fs_section 
  ve delete_fs_section proesdrleri tamamland. 
  Dzeltme gerekebilir.
* 'Write File' prosedrlerinin truncate (budama/krpma) ksm
  tamamlanm oldu.

12/09/2010 itibaryla
TRDOS
* Read file ve write file prosedrleriyle ilgili ilemler zerinde
  04/09/2010'dan itibaren alyorum. Bunlar create file'dan sonra
  'copy' komutunun alabilmesi iin. MS-DOS uyumluluu
  iin read file ve write file kullanma ve open file zerinde copy 
  (source file to destination file) komutuna alyorum.
  Yoksa, copy komutu daha basit olurdu ama dosya okuma ve yazma
  ilemlerin ak dosyaya uyarlamaz isem bu kez dosya boyutunun 
  deimesi, dosyann edit yaplmas v.s. sebeplerle copy komutundan
  ayrca bir ok prosedr yazmak gerekirdi. Copy file komutunda
  dosya ama modu 'full open' veya buffer'la partial open olabiliyor.
  Dosya okumada open mode nemli ama dosya yazmada sadece
  verilen buffer adresinden balayarak verilen sayda byte sektre
  yuvarlanarak gereken sayda sektr diske yazlyor ve yazlan sektr
  olmasna ramen dosya pointer' istenen byte kadar ilerliyor.
  Dosya boyu deiebiliyor.
* Write file prosedrde file pointer diske yazlacak pozisyonu
  gsteriyor yani buffer'daki pozisyonu deil. Bylece
  buffern write file prosedrnden nce read file ile ve gerekirse
  bakaca hazrlanmasn takiben write file arlyor.
  Open mode R/W olursa, write file file pointer'lar deitirdii iin
  bu tr dosyada read ilemi pointer'lar deitirmemeli.
  (file r/w, ayn Open file handle zerinden ve ayn buffer'dan
   hem read hem write demek. Bu kez read file pointer'n
   deitirmeye gerek yok nk zaten dosya full open olmak
  zorunda, sadece buffer offset'inin baarl olan write ilemini
  takiben bir sonraki write'dan nce ilerletilmesi gerekir.)
* Buffer ile read veya write olursa (yani dosyann tamam bellek'te
  deil ise), ilem iin byte count'u daima buffer size kadar veya 
  ondan kk olur. Bu durumda read file'da file pointer
  buffer'daki ilk byte'a denk gelecek bir sonraki okumann dosyadaki
  yeridir. Write fle iinde file pointer bir sonraki yazmann disk
  zerinde dosyaya gre yeridir. (Yani dosyann kanc byte'ndan
  balayarak yazlacadr.)
* Write file ve read file ile ilgili prosedrleri hem FAT hemde 
  FS iin ayn zamanda yazyorum.
* Dosya iin belirlenen boyut veya EOF (dosya sonu) iareti
  dosyann truncate yaplmasn (krplmasn) gerektirir
  bu durumda gerekli prosedrleri yazdm. FAT iin ilk haliyle
  tamamland FS iin devam ediyor.
   
15/08/2010 itibaryla
TRDOS
* create file multi cluster silme durumunda free space'de bir cluster
  hata ihtimali var. 'createfile_ccounter' ile ilgili sebep
  bulunup dzeltilecek.

* 'proc_create_file' prosedr multi cluster'a ayarland yani
  dosya boyutu ne ise ona gre cluster'lar 0 doldurularak
  hazrlanyor. Dosya botutu 0 ise sadece first cluster hazrlanyor.
  Neden ms-dos'taki gibi cluster' olmayan entry olumuyor:
  Singlix FS'de mutlaka bir section oluturmak gerekiyor.
  nk header/dt ile section bitiik. Section iin ideal olan
  tm dosyay kapsayan tek section olmas. Bunun iin prosedrnn
  dosya boyutu girili olmas lazm; FAT'ta ise first cluster tutamak
  oluyor. TR-DOS dosya boyutu SIFIR grnse dahi, first cluster'
  olan dosyann cluster zincirini sildii iin hata yok.
  leride INT 21h MSDOS uyumlu fonksiyonlar iin create_file
  prosedrn farkl altracam, yani INT 21h'nin baka bir
  create_file (compatibility) prosedr olacak.

* TR-DOS kernel (tasla) hemen hemen tm prosedrlerinde 
  (change drive ve change directory hari) current directory ile
  altndan uyumluluk modunda srekli current directory
  deiiklii gerekiyor. Zaten CMD_INTR.ASM iinde ok olmas da
  bundan. Current drive ve current directory kaytlar ile almak
  balangta/girite ii uzatyor ama devamnda hzlandryor 
  ve yollar ksalyor. Yani faydas eksikliini rtyor.

14/08/2010 itibaryla
TRDOS
* MKDIR komutu ile ilgili olarak (FILE.ASM iindeki 
  proc_create_file prosedr zerinde alrken, bu prosedrn
  proc_make_directory prosedrnden tretilmesi dolaysyla
  fark ettiim hatalarla ilgili olarak)
  DIR.ASM dosyas iinde zellikle proc_make_directory prosedrnn
  'add new cluster' ksmlarnda ve ayrca dier ksmlarnda da 
  nemli dzeltme ve deiiklikler yaptm. 
  (Singlix FS iin mkdir komutu prosedrlerinde deiiklik yok.)

* COPY komutunda FILE.ASM iinde 'proc_create_file' prosedrn 
  tamamladm ve 'copy_source_file_to_destination' prosedrnde
  nemli ilerleme salam oldum; imdlik oluturulan dosyann bo
  olan ilk cluster numarasn verip dnyor.

09/08/2010 itibaryla
TRDOS
* DELETE komutu prosedrn dier prosedrlerden arlmas
  iin CMD_INTR.ASM iinden FILE.ASM iine tadm. Bylece
  daha sonra delete file prosedrn ayn kodlar tekrar yazmadan
  bir prosedr ars ile kullanmak mmkn oldu. Sadece
  sadece silme evet/hatr sorusuna kadarki ksm CMD_INTR.ASM iinde
  kald.


08/08/2010 itibaryla
TRDOS
* DRV_INIT.ASM ve MAINPROG.ASM iinde yaptm deiiklikle
  'media changed' saptansa dahi (bochs emulator srekli A: ve B: 
  change drive geilerinde media changed dndryordu)
  ayn volume serial no ile dnen floppy/disket srclerde
  current directory'i reset yapmay nledim. Bunun faydas
  ayn disk olsa dahi A: ve B: de change drive olunca srekli 
  root directory ile balamak ve dolaysyla current directory'i 
  kaybetmek durumundan kurtulmak oldu. COPY komutuyla ilgisi:
  Source file bulunduktan sonra, destination file taramas ile deien 
  buffer'lardan dolay tekrar source file drive ve directory'isine
  dnmek gerekiyor (dosyay amak iin); o esnada srcnn current
  directory'si bu modifikasyondan nce reset oluyordu. Bu durum 
  bugfix'lenmi oldu. 

07/08/2010 itibaryla
TRDOS
* COPY komutunun dosya ama aamasna kadarki mantksal yaps tamam. 

01/08/2010 itibaryla
TRDOS
* Copy komutunun ana hatlarn CMD_INTR.ASM iinde belirledim.
  source file ve destination file mantnn balangcn
  baaryla kurdum. Daha sonra detaylandracam.
  Ayn srcde ayn first cluster veya ayn FDT'ye sahip olan
  dosyay kopyelemeyecek. Zaten destination file attributes 
  msait deilse permission denied dnyor. Destination file bulunmu
  ise OVERWRITE sorusu ve ilemleri iin DestinationFile_Found iareti 
  koyuyor. Balangta mant FindFile structure'n source ve 
  destination file structure olarak FILE.ASM dosyasnda kurarak 
  gelitirdim. Ve ilk haliyle bir ka yldr baaryla dnemediim 
  COPY (farkl drive ve farkl directory'ler iin) yaplanmasna 
  bu kez baarl bir giri yapm oldum. 

* COPY kumutu memory'de bo yer yeterli ise, dosya aarak kopyeleyecek.
  Bo yer yeterli deilse cluster' ykleyerek kopyeleyecek veya
  o da yeterli deilse, sektr esasl (dosyay amadan sector buffer
  zerinden) kopyeleme yapacak.

* Destination file var ise, onun attributes ve dir entry datas ile
  last modification date&time ve size update'i ile alacak.
  Dosya klmse cluster zincirinden truncate yapacak, bymse 
  zincire ekleme yapacak.

31/07/2010 itibaryla
TRDOS
* Singlix FS dosya sisteminin mkdir komutu tamamladm,
  hatalar dzelttim. Directory olutuktan sonraki free sector,
  first free sector, parent directory update ve directory
  buffer (in)validation/reset (yani yeni sub directory'nin dir 
  komutunda hemen grnmesi) ilemlerini tamamladm. 

* FS iin directory buffer compatibility (DOS tipi ve 2048 snrl)
  modunda olduu iin ve sadece fs directory yklenirken mevcut 
  entry'leri ierdii iin (current/aktif dir deimedike directory 
  buffer'daki listeye yeni directory ve dosya eklenemedii iin) 
  'DirBuff_ValidData=0' yaparak resetleniyor ve bylece ilk kontrolde 
  geersiz olduundan yeniden yklemeye/listelemeye zorlanyor.

* 2048 bariyeri nedeniyle yeni dir iin kontroller compatibility
  buffer'dan deil orijinal directory section datalarndan yaplyor,
  aksi takdirde 2048 iinde olmayan dosyalarn duplicate durumu olurdu.
  Ayrca, compatibility buffer'daki entry'ler bo ve silinmi iermeden
  yklendii iin bo ve silinmi entry'leri bulmak iin original
  fs directory section'larnn data'snn taranmas gekekiyor.
  (Dosya ve directory silerken bu art yok.). 2048'den ok entry ieren
  dizinlerde, 'mkdir' komutunun almasn engelledim. 
  (FS'i bozmamak iin ve buffer'lar 64K'da, 128*2048'de tutmak iin.) 

* letim sistemini okuma hzl, yazma yava ve garantili eklinde
  gelitirmek gerektii iin, yeni dosya ve dizinlerin yava 
  kaytlanmasndan ok, hzl okunmasna nem veriyorum.
  2048 snr v.s. bunun iin yani DOS buffer'larn (1 MB bellein
  bo ksmlarn) savurganca ve yavalatc kullanmamak iin.
  Fakat, 2048 entry snr sadece TRDOS iin var; SINGLIX iletim 
  sisteminde kernel fonksiyonlar/prosedrleri 80386 ilemcinin 
  register'larna gre 32 bit olacandan, buffer'lar 64K ile snrl 
  olmayacak ve dolaysyla 2048 gibi (dk) snrlar olmayacak.
  

29/07/2010 itibaryla
TRDOS
* Singlix FS dosya sisteminin mkdir komutunun altndaki 
  "proc_make_fs_directory" prosedrnde root dir iin 'R' kodunu 
  dikkate almayan 'DD' kontrol hatasn dzelttim. Bu hata root olan 
  parent directoy iin invalid data (0Dh) hata kodu dndryordu.

28/07/2010 itibaryla
TRDOS
* SINGLIX FS dosya sistemi iin DRV_FS.ASM iinde mkdir komutu
  prosedr (proc_make_fs_directory tamamland. Parent directory
  iinde ilk bo veya silinmi entry'yi aryor bulamazsa ve
  entry says 2048'den az ise yeni bir section ekliyor
  (get_first_free_section prosedr ile) sonra parent dir'in
  son section'u zerinden devam ediyor, boa yeri kaytlyor
  sonra tekrar diskte ilk uygun sebo section yerini aryor
  bulunca hem parent dir update'ini hem de new sub dir sectionunu
  diske yazyor. Section size iin diskin free sector count'una gre
  kabuller yapyor. 32 MB'n altnda sadece 1 sector +1 section header,
  kullanyor, yeni directory'nin ilk section'u iin en ok 16+1
  sektr ayrrken, eklenen section'lar iin en ok 8+1 sektr ayryor.

* FS mkdir prosedrn almasn kontrol ettkten sonra hatalarn
  dzelteceim. Sonra COPY komutu almalrna balayacam.
  FS mkdir prosedr ve ilgili alt prosedrleri dosya kopyelemeye uygun
  yazdm yani gereksiz ift diki/kod kullanmamak iin
  disk allocation ve section ekleme mkdir ile ayn alt prosedrleri
  kullanacak.
 

05/07/2010 itibaryla
TRDOS
* 3/4/5 Temmuz 2010 gnlerinde DRV_FS.ASM iinde 
  find_fs_dir_entry_with_number prosedrn yeniden yazdm, 
  entry offset'i sildim. Dosya numarasyla arama
  ilk directory data sektrden balyor ve varsa (en ok)
  65536 sektr kontrol edilene kadar devam ediyor. (0' grrse
  arama duruyor.) Bu ekilde dzeltme ile aramay en batan
  yaptrmam sonlardaki dosyann bulunma sresini uzatyor gibi
  grnse de (aslnda dosyann kanc offsetten itibaren olabilecei
  bilinse bile) offset ve sektr kontrol iin dahi DDT okuma
  ve kyaslama gerektiinden dolayl ilemler olmaynca
  prosedrden abuk dnme olur.


27/06/2010 itibaryla
TRDOS
* RMDIR iin DRV_FS.ASM iinde eksik ilemleri tamamladm.
  DELETE_FS_DIRECTORY prosedr bo directory'i siliyor
  son section' bo olup kendisi bo olmayan ise trpanlyor
  ama directory bo deil hatas ile dnyor.
  (Son bo section'u silerek diskte bo yer ayor ve
  directory'i kompakt hale getiriyor. Bu arada Next'i bo olan
  DDT'ye next = 0 iareti  yani son DDT iareti koyuyor.
  Prosedr CMD_INT.ASM'ye cf=1 ve ax = 0 ile dnnce
  bunun anlam 'directory not empty' oluyor... cf= 0 ile
  dnnce 'deleted' anlamna geliyor... 

* 'proc_find_fs_dir_entry_with_number' prosedr hata veriyor deiecek...
   u ekilde olacak:
   entrynin tarama balang numaras girildikten sonra
   bunun kanc sektrn kanc offseti olduu hesaplanacak
   bir section ald zaman o sectionun son sektr kanc
   sektr (bir sektr says toplam ile sector count toplannca) 
   baklacak... eer aranan sektr sectionun iinde ise
   sectionun kanc sektr olduuna baklacak ve
   section header adresi ile toplanacak ve ykelenecek
   direkt o sektr yksenip offsete baklacak... 
   dosya/dir numaras eit deilse bulunamad 
   dnecek...

   Yani:
   C says offset
   C/128'de A blm tam says sektr B kalan ise offset
   D says sektr toplam (balangta sfr)
   E says sectionun sector countu
   ilk sectiona baklacak
   D+E >= A ise aranan sektr section iinde
   deilse, next section ykelenecek
   D+E yeni D olup D+E(yeni) >= A durumuna baklacak...
   bu art olacana kadar next section yklelenecek...
   art gereklemeden end of sections olursa bulunmad dner
   D+E>=A ise (E >= A-D) B=217 E=7 D=214 ise  A-D=3, 3. sektrde
   ilemdeki sectionun 3. sektrnn B offseti karlatrlacaktr.
   A-D section iinde sektrn kanc olduudur (0= 1.)
   
 

20/06/2010 itibaryla
TRDOS

* RMDIR iin DELETE FS FILE prosedrnden treterek 
  DELETE FS DIRECTORY prosedrn yazdm alyor. Fakat
  bo DIRECTRORY'i silmesi iin gerekli modifikasyonlar 
  henz yapmadm. Sadece BO directory'leri silmesi iin
  ve ayrca iinde dosya olmayan directory'leri silmesi iin
  gerekli modifikasyonu yapmam lazm.

* SHOW komutu FS Sub Directory'de 00h error code ile dnyor,
  aslnda hata yok gibi (Error code = 0)
  ama niin hata ile (stc) ile dnyor? bulup dzeltmem lazm.

* RMDIR'de FS directory bo ise sil, son section bo ise
  directory'i son section'u silerek truncate yap 
  (trpanla) eklinde mat olan
  ilemlere devam ediyorum, bugn tamamlayamadm. Bu FAT mant
  ile ayn, yani diskte gereksiz bir bo section brakmamak
  bylece mkdir ile rmdir'leri dengeye getirmek... Bo yeri
  optimizasyonla artrmak.


15/06/2010 itibaryla
TRDOS

* RMDIR VE DEL komutu FAT32 iin FSINFO sektrnde
  FirstFreeCluster deerini deitirmiyor fakat bu deeri
  FFFFFFFFh yapp geersiz hale getiriyor. (Silme yaplmsa
  calculate_fat_free_space (cluster ekleme ve kartma eklinde
  alr) prosedr geersiz-hesapla anlamna gelen FFFFFFFFh 
  iaretini koyuyor). MKDIR ve CREATE FILE gibi
  komutlarn veya prosedrlerin bu iareti grnce (FAT32 iin)
  first free cluster' yeniden hesaplatp kaytlamas gerekir.
  Bu durumu/zellii unutmamam lazm...

13/06/2010 itibaryla
TRDOS
* DIR.ASM iinde proc_reload_current_directory prosedr iinde
  loc_reload_fat_sub_directory ksmnda sonsuz dngye sokan
  bir hatal cmp ilemi vard, dzelttim ve FAT sub directory'nin
  yeniden yklenmesi esnasnda TR-DOS kernel'in taklmasna
  sebep olan hata ortadan kalkt.
* RMDIR komutu SINGIX FS hari tamamland. Bugfix ilemleri ve
  ait olduu parent dir'deki deiiklik zaman kaytlar doru
  alyor. Root ve Sub Dir'den rmdir yapnca hata vermiyor.
  Birden ok cluster' olan directory'nin bo olan son cluster'
  siliniyor ve 'directory not empty' mesaj veriyor fakat FAT
  dosya siteminde bo olan last dir cluster' silmi oluyor. 
  
12/06/2010 itibaryla
TRDOS
* TRDOS kernel tasla, 12_6_2010 itibaryla FAT dosya sistemi
  alt dizinlerinde taklyor (print directory altktan sonra
  tek dosyaya ilem yaparken), bunun sbeebini aratrken 25_1_2010
  tarihli DIR.ASM ile problemsiz altn ama 26_5_2010 tarihinden
  itibaren takld fark ettim. Dolaysyla taklma sebebi
  DIR.ASM iinde bir prosedr... (Dosya veya dizin okuma ile ilgili...)
  'DIR' komutu kullanmadan ilem yapnca taklmyor...
  Bunu zmem gerekiyor... Bugn iin en son durum bu...

* DEL komutunda, FAT dosya sisteminde parent directory'nin last
  modification date ve time bilgileri silme zamanna gre deimiyordu
  bununla ilgili ilemleri ekledim.
* RMDIR komutunun directory ii bo ise directory'yi silmesi,
  bo deilse ve en son cluster bo ise, en son cluster' silmesi
  fakat belli etmemesi ilemi tamam. 
  (Sondan nceki bir cluster bo deilse komut 'directory not empty'
  ile dnyor ama aslnda bo olan son cluster' siliyor. 
  Son cluster' bo ise silme amac dizini boken birden ok cluster'da 
  tutmamak yani diski -dosya sistemini- daha verimli kullanmak.) 
* RMDIR komutu silinen cluster says kadar bo yer ayor, hem FAT'ta
  hem de free cluster count'ta gerekenleri yapyor. Bunun iin
  get_last_cluster prosedrn kullanyor (6_6_2010). Son cluster
  bo ise siliniyor ve first cluster2dan itibaren kontrol tekrarlanyor,
  ne zaman first cluster ile last cluster ayn ise 
  ve bo ise silinme kesinleiyor.
* RMDIR komutunda DEL komutu ile ayn ekilde lazm olan parent directory
  last modification date kayt gibi ortak kullanm eklentileri tamam.
* RMDIR komutu Singlix FS dosya sistemi hari tamamland fakat dzetme
  gerekebilir.


05/06/2010 itibaryla
TRDOS
* RMDIR komutunu zerinde almaya baladm. DEL komutundan bozarak
  CMD_INTR.ASM iindeki ilk dzenlemesini yaptm. 'File not found'
  hatas yerine 'Directory not found' mesajna ayarladm.
* RMDIR komutu alma  deva ediyor. Yaplalacak ilemlerin sras:
  - Directory var ise, bulunduysa...
    1- Attributes msait ise ileme devam et, yoksa 'permission denied'.
       Bu aamay getim... 
    2- Directory cluster (FS'de number) ve parent dir cluster' kaytla.
       Bu aamay getim ama dzeltme gerekebilir... 
    3- Directory'nin son cluster'n bul/ykle... lk ile ayn ise
       bo mu diye bak; bo ise sil, deilse silme... ('.' ve '..' hari
       dir iinde dosya/dir -short name- olmamal ve root dir olmamal.)
       Bo cluster ilk deilse ile ayn deilse otomatik ksaltma yap...
       (Kullancya bilgi vermeden bo son cluster' veya section'u sil.
       nk, fuzuli yer kaplyor. Silinmi dosyalarn girileri varsa!?
       ne olacak sonra dneceim... Undelete gerekli mi!?)
    4- Silinen directory cluster'larn FAT'ta boalt.. Ve free cluster
       count'u deitir. FS de denk ilemleri yap...
    5- lk ve son cluster ayn ise geerli giri iermeyen 
       directory'i parent dir entry'leri iinden sil...  
       Parent dir entry'i silince parent dir'in son deiiklik tarihini
       kaytla ...      
 
* ATTRIB komutu FS dosya sistemindeki directory'lere uygulanamyordu,
  DRV_FS.ASM iindeki 'change fs file attributes' prosedrnde kk 
  bir hata dzeltme (bugfix) ilemiyle attrib komutunu singlix fs'deki 
  directory'lere uygulanabilir hale getirdim.
   

26/05/2010 itibaryla
TRDOS
* DRV-FS.ASM iinde FS dosyasnn Attributes'lerini deitiren
  prosedrdeki hatay dzelttim. Artk doru kayt yapyor.
  Hatann sebebi 'or' instruction' ile FS'den alnan CH deeri
  0FFh iken, yeni set edilen attrib deeri CL'de ne olursa olsun
  sonu FFh kyordu, bu da Dos attributes olarak 'NORMAL' yani BO
  grnt veriyordu. OR ilemini AND ilemi olarak dzelttim.

* ATTRIB komutu tamamlanm oldu.

23/05/2010 itibaryla
TRDOS
* ATTRIB komutunu 17/12/2000 tarihli P2000.ASM dosyasndan kopyeledim.
  Gerekli deiiklileri yaptm ve CMD_INTR.ASM iinde kaytladm.
  Komutu Singlix FS dosya sistemine de uyarladm. 
  Ancak Singlix FS sisteminde henz tam doru olarak attribute'leri
  deitirmiyor. Yorgunluk ve uzun srmesi nedeyle bugn sebebi
  bulamadm. Sonra dzelteceim.

* DEL komutunun iptal ve 'permission denied' dnlerinde current
  directory'ye geri dn kusurunu dzelttim. (Komut path ieriyorsa
  iptal geri dn ile path'e gre deitirilen current directory 
  restore olmuyordu.) 

22/05/2010 itibaryla
TRDOS
* DELETE komutuyla ilgili 'Attributes' kontroln (FAT ve FS iin)
  ('Permission denied !' ksm) tekrar aktifletirdim. 
  DRV_FS.ASM iinde 'delete_fs_file' prosedrnde bir ka nemsiz 
  (iyiletirici, ksaltc) deiiklik yaptm. 
  Bylece DELETE komutu tamamlanm oldu.
* DELETE komutu dnnde silme ilemi iptal olursa veya file 
  attributes silmeye uygun deilse current directory'ye geri dn
  garanti etmek iin ('restore current directory' ilemleri
  CMD_INTR.ASM iinde deiiklik gerekiyor.

19/05/2010 itibaryla
TRDOS
* DELETE FS FILE prosedrleri bugn itibayle tamamland.
* DRV_FS.ASM iinde... 
  Dnk update_dat ekleme ve dzeltmelerinden sonra
  bugn free sectors son durumunu MAT'a ileme ve
  parent directory'nin son modifikasyon tarihini deitirme
  prosedrlerini ekledim.

* Bundan sonra bu prosedrlerde gerektiinde dzelltme yapabilirim.
  Veya yeri geldike optimize edebilirim. imdilik ilevsel ve hazr...

* Delete FS File ilevselliinin  yansra FS'te dosya ve dizin 
  silme, ekleme ilemleri iin baz prosedrler imdiden hazr oldu.

17/05/2010 itibaryla
TRDOS
* DISK_IO.ASM iinde chs r/w prosedrnn next LBA adresi ile
  dnmesini saladm. Yani bir sonraki disk eriim adresi ile dnyor.
  DX:AX -> AX+CX, DX+Carry. Aksi durumda LBA rw next adresle dnerken
  chs rw dnmezse karklk (yanlma) olabilirdi.

* DRV_FS.ASM iinde 'proc_delete_fs_file' prosedrnde iki yerde
  dzeltme yaptm. FDT silme ileminde 'E' iareti devre dyd, 
  onu etkinletirdim ve next FDT iin DX:AX (17/05/2010 iaretli)
  iftinin diskin mutlak (ofset olmayan) LBA adresini iermesini
  salayan deiiklik yaptm. ('push ax, push dx' yeri deiti.) 

16/05/2010 (Pazar gn akam) itibaryla
TRDOS
* Singlix FS dosya sisteminden dosya silme ilemlerinde
  'proc_update_dat' ve onun altnda 'proc_load_dat_sector' ve
  'proc_write_dat_sector' prosedrlerini iledim. Bu prosedrler iin,
  daha nce yazdm, Singlix FS dosya sistemine startup file (Kernel)
  ykleyen 'BOOTFILE.COM' msdos program, 'BOOTFILE.ASM' iindeki 
  ilgili prosedrleri az deitirerek (treterek) kullandm.

* DISK_IO.ASM iinde write fault (1Dh) hata kodunu kullandm.
  Ayrca 'proc_disk_read' iin 15h hata kodunu 1Eh (Read Fault) olarak
  olarak deitirdim. CMD_INTR.ASM iinde 'write_error' mesajna
  gre ufak deiiklik yaptm. (15h -> 'Drive not ready' asl olmak
  zere ayrca 'read error', fakat 1Eh 'Drive not ready or read error'
  oldu. 15h'yi diski okurken oluan hata yerine diske eriim hatasna
  dntrdm. (Henz fazla uygulamas yok.)
  Permission denied, drive not ready ve write fault hatalar da
  ayrca ilenecek... (15h ile veya baka tek hata kodu ile dnmeyecek.)

* 'Delete FS file' iinde baz dzeltmeler ve MAT'n ilenmesi kald...  
 
09/05/2010 (Pazar gn akam) itibaryla
TRDOS
* 0E5h iaretlemesi, 'FDE' iaretlemesinin arkasna alnd. Yani
  nce FDT silindi (FDE yapld), sonra compatitibility buffer'da
  directory entry offset 0'daki dosya ad ilk karakteri 0E5h yapld.
  Bylece FDT silerken hata dn olursa, compatibility buffer'da
  dosyann silinmi grnmesi nlendi. nk dosya silinemedii halde 
  silinmi grnmesi uygun olmaz. 
  (Singlix FS'te original directory entry yani FS dosya numaras geerli
  olsa dahi, FDT bal 'FDE' ise, dosya sistemi ilemlerinde dosya 
  silinmi gibi pas geilir.) 
  Silme ileminin eksiksiz olmas iin kalan aamalar, Directory
  Entry'nin silinmesi, DAT'taki tahsis hcrelerinin serbest braklmas
  ve MAT'taki free sektr alanlarna son durumun kaytlanmasdr.
 
09/05/2010 (Pazar gn leden sonras) itibaryla
TRDOS
* DRV_FS.ASM zerinde 2 haftadr devam eden, 'delete file' prosedr
  almalarmda, aksaklklar olmutu. Dizinlerdeki ilk dosyalar hari
  dosya sra numaras (offset) yntemiyle direkt istenen dosyann
  beklenen/umulan srasndan balayan arama/silme ilemi iin offset
  yntemi hata veriyor, silme aamasnda dosya directory entrylerine
  doru olarak eriilemiyordu. Offset kullanlmazsa (sfr ofset) ile
  tm dosyalar bulunuyor ve silinmeye hazr oluyordu (delete_fs_file).
  Offset ynteminden vazgemedim (nk dosyay en batan aratmak
  sonlardaki dosyalar iin sama dir-entry arama ve zaman kayb olurdu.)
  Directory Compatibility buffer offsetini, original fs directory'de
  sektr ve entry (sektre gre) offsete eviren prosedrde bugnk 
  (9-5-2010) dzeltme ile problemi zm oldum. 

* Dzeltme: Baz pheli ilemlerdeki denemeler sonucunda, BX register'
  kullanlan ES:[BX]'li komutlar ve shift komutlarnda deiiklikler
  yaptm. Ancak gerek hata sebebini bugn farkettim; ('xor bh, bh'
  olan bir komutun 'xor bl, bl' olmas gerekiyordu. BL'yi sfrlamad
  zaman directory desciption table (DDT) sector buffer'a okunurken aslnda
  ES:20h'ye okunuyordu; fakat kontrol ES:0h'den offset alnarak yaplnca 
  daha nce FDT kaytlanm olan ES:8h'den srekli dosyann kendi FDT 
  adresi alnyordu. DDT adresi yerine FDT adresi gelince bunu ancak araya
  adresleri (numaralar) yazdran geici prosedrler sokarak farkedebildim. 
  Ve yanlln directory number'n BX'teki (disk read buffer -> ES:BX)
  kayma nedeniyle 20h yerine 28h'de olmasndan fakat 8h'den (bir nceki 
  read sonucu FDT number) dndrlmesinden kaynakladn anladm.
  (nk iine baklacak directory data sektr doru bulunamyordu.)
  Aslnda hatay tam farketmem geici olarak 64h'deki dosya adn 
  okutmam ve hangisi buffer'a ykleniyor (dosya m, dizin mi?) bakma
  kararmdan sonra gerekleti. nk FDT/DDT 64h'deki dosya ad 
  (gerekte 44h'den bakld iin) bo dnd ve buradan Buffer'da kayma
  olabilecei (BX'in SIFIR'dan sapt) phesi kesinleti. Ve dikkatle
  baknca aslnda kolay bulunacak bir BX resetleme hatasn zor da olsa
  bulup dzeltmi oldum. 
  (Bir ka dakikada bulunacak hatay 2 haftada -bir ka saatte- buldum.) 

* 'Delete FS file'
  prosedr geici olarak hi bir eyi silmiyor. Bundan sonraki aamada
  gerek silme ilemi ve free sector saysnn deitirilmesini
  yapacam.

* FS dosyas silme ilemi sralamas:
  1- nce FDT silinecek (FDE) olacak, ilem hata ile dnmezse...
  2- Compatibility Buffer'daki entry 'E5h' iaretlemesi ile silinecek...
  3- FS Directory entry silinecek (FFFFFFFFh olacak)...
  4- DDT zerinde son modifikasyon tarihi yenilecek...
  5- Dosya ilk FDT adresinden itibaren DAT'tan silinecek
     DAT'tan baaryla silinen her section iin o sectiona ait
     sector count geici bir free count deikenine eklenerek 
     saylacak, dosyann tm section ve sektrleri DAT'tan silindkten
     sonra... Sector count kadar free sector count'a (Logical DOS DT'da)
     ekleme yaplacak. Free sector count'un son deeri MAT'a kaytlanacak
     ve eer ilk silinen FDT, grnen ilk free sektrden nce ise MAT'daki
     first free sector alanna yenisi kaytlanacak... 
  NOT: Silinen dosyaya (data sektrlerine) yazma olmad iin, FDT, FDE
  olurken tarihler deimeyecek. FS'te dosya sisteminde son deiiklik
  kayt yok ama, pas gememek iin MAT'da bo bir-iki alana son kayt 
  tarihi ve son kayt tipi (free sektr deitirme gibi...) kaytlanabilir.
  Bu dosya sistemindeki son modifikasyon takibi iin faydal olabilir.
  (Modifikasyonu yapan iletim sistemi veya program numaras da 
  kaytlanabilir.)

25/04/2010 itibaryla
TRDOS
* Uzun zamandr takldm Singlix FS formatl srcde dizine geri
  dn veya tekrarlarda programn Bochs emulatrde kill (program 
  disk ilem hatas nedeniyle sonlandrma) oluturmas veya 'drv not 
  ready or read error' verdirmesini, directory buffer size belirleme 
  hatas olduunu (tam emin olamadan) farkettim. Yani, directory buffer 
  (compatibility buffer) ile original fs dir buffer (section buffer) 
  kesiiyor, nk snrlar grnen boyut ile kullanlan boyut ayn
  deil. (Detayna inmedim.) Bu problemi proc_load_fs_sub_directory 
  prosedr iinde directory buffer'n snr ve boyutunu belirleyen 
  kod ksmn (25/04/2010 iaretli) dzelterek zdm. 
  (Sektr says kusurunu v.s. dzelttim.) Dosya: DRV_FS.ASM
 
24/04/2010 itibaryla
TRDOS
* DRV_FS.ASM iinde baz dzeltmeleri yaptm.
* proc_reload_current_directory iinde baz dzeltmeler yaptm.
* FS dosya sistemi iin CD komutunda bazen nereden taklyor
  henz bulamadm. pheli: porc_load_fs_sub_directory ve 
  alt prosedrleri.

23/04/2010 itibaryla
TRDOS
* 'DEL' komutu (attribute'den) permission denied olarak dnnce
   ES register' DS'ye resetlenmedii iin komut yorumlayc
   kontrol d kalyordu, 'push ds, pop es' ekleyerek dzelttim.
* DRV_FS.ASM iinde FS directory section buffer ykleyen
  load_fs_sub_directory kodunu ayr bir section buffer
  ykleyen prosedre dntrdm. Bunun sebebi,
  delete ilemi iin orijinal directory buffer'n
  (section olarak) yklenmesi... nce bulunan compatibility
  buffer entry numarasndan entry offset olarak
  find_fs_file_number (directory entry dizisi iinde)
  ile ilgili section yklenecek ve oradan numara
  bulunacak (DX:AX) bulununan numara 0FFFF:FFFFh
  ile deitirilecek ve ilgili sektre kayt yaplacak.
  Sonra directory'nin ilk DDT'si yklenecek (sector_buffer'a)
  ve oraya modification date, time ilenecek ve kaytlanacak.
  Sonra, disk allocation table'da file data kullanlyor
  iaretleri silinecek (unklink) tahsis edilen sektrler
  serbest braklm olacak. Sonra MAT'a yeni free size ilenecek.
  (En bata FDE iaretli FDT kaytlanacak...)

21/04/2010 itibaryla 
TRDOS
* DISK_IO.ASM iinde CX (sektr says) deerine gre ES:BX buffer
  deerlerini deitirme eklinde  deiiklik yaptm. Bu arada
  ES:BX giri deeri dnte beklendii iin, ES ve BX iin push/pop
  yaptm. ES:BX deimezken, DX:AX next sektr olarak dnyor.
  Read error AL=15h olarak ve write error AL=1Dh olarak dnyor.
* Dier ASM dosyalar iinde zaten AL=15h olarak dnen disk okuma
  hatalar iin tekrar AL=15h atamas yaptrmamak iin bir ka yerde
  dzeltme yaptm. 21/04/2010 olarak grnen dosyalarsa ufak
  deiiklikler oldu.   


17/04/2010 itibaryla 
TRDOS
* DEL komutu sub dir iin Delete_Long_Name bugfix'leri tamam. 
  DEL komutu FS hari tamamland...
  (DIR.ASM deiiklikleri...)

12/04/2010 itibaryla 
TRDOS
* DEL komutu bugfix'leri tamam. DEL komutu FS hari tamamland...
  (save_directory_buffer, unlink_cluster ve delete_long_name deiti/tamam)
  CMD_INTR.ASM, DIR.ASM, DRV_FAT.ASM deiiklikleri...
  
06/04/2010 itibaryla 
TRDOS
* DEL komutunda bugfixler devam ediyor.
  Root directory'deki dosyay siliyor gibi yapyor (bufferde siliyor) fakat
  diske kaytlarken deiiklik kayboluyordu. Sebebinin "Save Directory Buffer"
  prosedrnde root directory'i dikkate almamak (DX:AX=0) olduunu farkedip
  dzelttim (FAT12 ve FAT16 iin bugfix).
  Daha sonra FAT formatl disketten FS formatl diskete geerken 
  Boch emulatrde disk i/o hatasndan dolay taklma oluyordu (kill process)
  bu hata muhtemelen DX:AX=0 iken sub ax, 2 ve sbb dx, 0 komutlar sonunda
  cluster numarasnn anormal kmasyla ilgili olabilir. (Root directory 
  bugfix konusu.) save_directory_buffer hast dzelince son durumma baktktan 
  sonra, FAT'ta silme ilemi FAT buffern diske yazlmas ve free clusters
  konusunda devred bratm ilemleri aacak ve sonuca bakacam.
  FS formatl diske geite hata verdiren durum devam ediyorsa aresine
  bakacam.
 
03/04/2010 itibaryla
TRDOS
* DEL komutu (FS hari) ilemleri tamam fakat hatal alyor. ve disk eimini
  bozuyor. Longname'i olan dosyalar silerken de hata veriyor... 

28/03/2010 itibaryla
TRDOS
* DEL komutu iin geici kod altrmas tamam. proc_delete_longname
  prosedrnn disk write ilem saysn azaltmaya ynelik modifikasyonu
  tamam. (sadece DirBuff_validdata=2 iken yazma ilemi gerekiyor, deiiklik
  yapld iaretine bakyor, buffer'deki cluster deiirken veya ana ilem
  sona ererken yazmay gerekletiriyor, aksi takdirde her bir entry deiince
  sektr yazacakt, bu hz kesecekti). Save_directory_buffer prosedr
  locate_current_dir_entry prosedr tamam.
  Short file name nce silinecek, sonra long file name entry'leri silinecek
  sonra short file name ile ilgili file cluster'lar Fat'tan unlink yaplacak
  (silinecek) silinen cluster says saylacak ve free cluster saysna 
  eklenecek. FAT 32 ise free cluster count yerine (geerlilik kontrolne gre)
  yazlacak. FAT buffer'da fat hcresi deitirilirken srekli yaz yapmamamak
  iin sektr deiiklii ve validation says (2 ise) gzetilecek.
  (Yoksa byk dosyalarda FAT'a yazmak uzan srer...)
  MSDOS'ta smartdrv.exe ile yaplan disk'e hzl yazma okuma ilemini
  TRDOS'ta buffer'a dikkatlice en az disk eriimi ile yazma yaptrrarak
  salamaya alyorum; "MSDOS smartdrv olmadan ok yava disk ilemleri yapyordu
  bu da her bir deiiklii tek tek kaytlamasndan kaynaklanyor" saptamasyla
  ayn duruma dmemek iin BUFFER ilemlerini smart yapmaya alyorum.
  nk TRDOS'ta smartdrv.exe benzeri bir uzant dnmyorum.
  Herey kernel iinde zlmeli, int 13h'ye mdahale dnmyorum.

* DEL komutunun FS dosya sistemi iindeki davrann FAT ilemlerini 
  tamamladktan sonra yazacam.

* COPY komutuna geerken, tasarlamam ksmen yaptm ama programa ilemedim.
  COPY komutunda source file name bulunursa source file size , read mode
  olarak open yaplacak. Insufficient memory hatas verirse, MSDOS'ta olmayan
  open_file_cluster metoduyla alacak yani dosya ksmen cluster' ile alacak.
  yine insufficient memory olursa load_file_sector ile alacak...
  Open file structure'da gerekli modifikasyon yaplacak.
  Sonra read_file'da file pointer ve okuncak byte saysna gre sektr 
  yklenecek. sonra write_file ile buffe'rdan ikinci dosyaya (target_file)
  yazlacak. Yazma ilemi iin target_drv'da bo yer yeterlimi? (sektr says
  cinsinden) baklacak... FS ise section hesaplaryla bo yer kontrol yaplacak.
  target_file_name format uygunsa, soruc_file ope yaplmaya allacak.
  (hedef dosya ad uygunsuzsa veya disk uygun deilse bou bouna open file
  open cluster veya open file sector yaplmamal.)
 
28/02/2010 itibaryla
TRDOS

* DEL komutu eklendi (eski trdos cmd_intr.asm dosyasndan deiikiklerle)
  Bulunan dosyasnn directory'deki kanc Entry olduu
  (DirBuffer_EntryCounter) ve bunun longname'i olup olmad, varsa
  longname uzunluu (LongName_EntryLength) kullanlarak, en bata
  read only deilse, dosya silinecek, free sector/cluster hesabna eklenecek
  ve sonra longname entry silinecek (EntryCounter saysndan, longname entry
  uzunluu karlacak, bununan sayya karlk gelen entry'den balayarak
  her bir longname entry checksum ile karlatrldktan sonra silinecek).

21/02/2010 itibaryla
TRDOS
* TRDOS Singlix FS srcsnden C olarak boot yapamyordu, boot sektr
  kodu dnnde DL srcnn fiziksel numaras (0 veya 80h ile) ile
  dnecek ekilde TRFS boot sektr kodunda deiiklik yaptm.
  DL=80h olursa TRDOS C:'yi current drive yapyor. Bu deiiklik olmazsa
  TRDOS hard diskten balarsa A:'y gremedii zaman 'drive not ready or
  read error' hatas yazyordu. Veya A:'ya geiyordu. Bunu dzelttim.
* SINGLIX FS hard disk partition formatlama hdformat.com ve bootfile.com
  (ubat 2010) programyla trdos.com'u TRFS partitionda 'startup file'
  yapnca trdos kernel u haliyle disketten ve simlasyondan alt gibi
  alt. hdformat.com hard diskin FS blmn formatlarken,
  bootfile.com FS startup file' DOS'tan FS blmne kopyelemeyi salyor.
  bootfile.com DOS INT 21h open file, read file, close file fonksiyonlarn
  kullanyor. Dolaysyla standalone yada trdos iinden imdlik almyor.     

25/01/2010 itibaryla
TRDOS

* Singlix FS srcsnde CD komutu ilevsellii tamam.
* Show komutuyla alan dosya kapanmyordu, sebebi PSP yapsnda offset 4
  olan OFL (ak dosya listesi) sra numarasnn, OFDT (r/w) yapsnda
  offset 2'de olmasyd. (nceden PSP iinde de offset 2'de idi ama
  msdos PSP ile uyumluluk iin, OFL numaras alann offset 4'e tamm;
  bu RUN komutuyla kullanld iin kapan doru gerekleiyordu. Ama,
  show komutu ODFT oluturduu iin, OFDT'de ayn alan offset 2'de kaldndan
  kapanta farkl numara grnyor ve dosya kapanmyordu. OFDT iinde 
  OFL numarasn veren OF_OFL_SN offset deerini 4 yapnca hata dzeldi.)

24/01/2010 itibaryla
TRDOS

* DRV_FS.ASM iindeki proc_get_next_section prosedrnde bugfix'ten sonra
  Singlix FS dosya sistemi iinde tek veya ok sektrlk COM veya EXE
  dosyas alma kusuru dzeldi. Artk FS iinden program altrlabiliyor.
* Longname komutunun singlix FS srclerine de uygulanmasn tamamladm.
* Singlix FS srcsnde CD komutunun FS'e uygulanmas aamasndaym. 

17/01/2010 itibaryla
TRDOS

* Proc_allocate_memory prosedr iinde bugfix.
* Proc_load_fs_sub_directory ve proc_convert_fs_dir_entries_to_dos_format
  prosedrlerinde modifikasyon.
* Modifikasyonlardan sonra dier srclere gei (dir/liste) hatas dzeldi.
  Muhtemelen directory buffer'daki tahribat dzeldii iin geiler dzeldi.

16/01/2010 itibaryla
TRDOS
* FS dosya sisteminin DOS formatyla gsterilmesi tamam.
  Bir directory'de en ok 2048 adet FS dosyas (64K buffer) gsterilebiliyor.
  (FS directory'de daha fazla dosya varsa, TRDOS kernel bunlara eriemez.)
  Ayrca, numeric tail ksmn yazdm.
  Basis name'den numeric tail gereken veya gerekmeyen short name
  retme iini tamamladm. TRDOS kernel imdiki haliyle ~999'a kadar
  (farkl filename'lerden treyen) ayn short name'i farkl hale getirmeye ynelik 
  numeric tail ekleyebiliyor.

* proc_open_File prosedrnn iindeki proc_load_file prosedrnden sadece FAT
  dosya sistemine eriiliyordu. Bu prosedr iinden, srcde FS dosya sistemi
  (FAT Tipi=0) olduu iin arlan, proc_load_fs_file olarak adlandrdm,
  Singlix FS dosya sistemi iindeki dosyay aan prosedr yazdm.

* FS dosya sisteminde 16'dan fazla dosya/dizin var ise dizin listeme (dir) prosedr
  taklyor (18'de takld, 16-18 arasnda dosya alar bozuk geliyor)
  Dizindeki dosya says 16'dan az ise hata vermeden listeliyor.
  Ayrca, FS'de silinen directory entry FFFFFFFFh olarak iaretleniyor.
  dos directory entry formatna evirme prosedr (DRV_FS.ASM iinde) henz
  bu durumu dikkate almyor. Dolaysyla silinmi dosyann FDT'sini FFFFFFFFh alarak
  dosya ad ve bilgilerine ynelirken 'drv not ready or read error!' hatasna
  sebep oluyor. Bu kusurlar dzelteceim.

* FS srcnn ierii uyumluluk modunda yklendii zaman (proc_change_current_drive)
  dier srclerin ieriini grmek mmkn olmuyor. FS srcden ayrlp tekrar geri
  dnnce de src ierii kullanlamaz hale geliyor. (DIR komutu ile v.s.)
  Bunun sebebi FS dosyalarna eriim prosedrlerinin (DRV_FS.ASM iinde) 
  ve directory buffer'de olan deiikliklerin, ileyii bozmas olabilir.
  Yani src deitiri zaman kullanlacak deikenler bozulduu iin eriim
  bozuluyor. Bu kusuru FS dosya sisteminde dosya listeme, ama ve altrmay
  tam sonulandrdktan sonra dzelteceim.
 
10/01/2010 itibaryla
TRDOS

* FS dosya sisteminin DOS formatyla gsterilmesi ksmen tamam.
  Numeric tail ksmn yazacam. Ve FS srcnnden FAT srcsne geince
  hata verme (directory'yi gstermiyor) sebebini bulup dzelteceim.

03/01/2010 itibaryla
TRDOS
* SINGLIX FS dosya sistemli srcnn ierii DOS uyumluluk modu iinde
  ayn dizin listleme formatyla kaytlanyor. (Henz dos dir entry formatna
  ve short name -basis name ve numeric tail- evirme ilemleri tamam deil).

* SINGLIX FS dosya sistemi listeme almas yaparken mevcut CHS okuma hatasn
  dzelttim (SecPerTrack ve Heads parametrelerini FAT CHS/BPB ile uyumlu hale 
  getirdim, yani 'LD_BPB +' offset deerleri eitlendi bylece CHS disk
  okumada SINGLIX FS formaytl diskin ieriinin doru okunmasn saladm.)

06/12/2009 itibaryla
TR-DOS

* DIR komutu drive ve path iererek alyor. RUN komutundaki path uygulamasn
  DIR komutuna uyarladm. (Davran ayn, dir girii bo ise cdir kullanlyor,
  RUN komutunda src ad dosya veya path ad olmadan hata dndrrken, DIR
  komutunda ilgili srcnn CDIR'i yeterli olduundan hata dndrmyor. Fark
  proc_parse_path_name'den deil, cmd_dir'den uyguladm. proc_parse_path_name hata
  dndrnce, bu hata src adndan sonra PATH veya dosya ad olmamas ise,
  cmd_dir prosedr bunu tesbit ediyor ve ilgili srcnn Current DIR'ini
  kullanyor.)

* SHOW komutu RUN komutuyla ayn ekilde PATH ierebiliyor. (RUN ile tamamen ayn
  PATH zmleme davran var.)

* TRDOS kernelde FIND_FIRST_FILE prosedrn yazarken DS:SI'de drv ve/veya path
  dahil asciiz dosya ad varsaym ve bu anlamda DS'nin CS'den farkl olabileceini
  ngrerek, prosedr yazmtm. Bu durumda TRDOS'un 2004-2005 taslanda
  find_first_file path kullanyordu, 2009'da geici olarak bu zellii devre d
  brakmtm. Fakat en son proc_parse_path_name (2009) prosedrn yaznca
  FFF data yapsnn iinde FindFile_Drv (1 byte), FindFile_Directory (65 byte)
  FindFile_Name (13 byte) alanlarnda drv (yeni src veya current drv) ve 
  PATH (yeni veya current directory=bo) dn kullandm. (DS=CS)
  Dolaysyla en son durumda FIND_FIRST_FILE balarken PATH zlm olarak
  balayacak. Bu durumda change_directory (geici deitirme) darda 
  gerekleebilir. FIND_FIRST_FILE sadece o anki Current directory iinde
  dosya arayabilir. (Arayaca dosya FindFile_Name iinde ascizz dosya ad)
  Sonu olarak, FIND_FIRST_FILE prosedr CDIR'e gre ksaltlacak ve
  iyiletirilecek. INT 21h iinden Find_First_File fonksiyonunda drv ve path
  olacak. Fakat bu problem deil. cmd_intr.asm'de kullanlan yntemle
  find_first_file prosedr arlmadan nce change_drive ve/veya change_directory
  ve sonra restore current_directory prosedrleri ile cdir ve cdrv
  fonksiyona girmeden nceki hale dndrlecek. Sadece 'change current drive' ve
  'change current directory' fonksiyonlarnda restore cdir/cdrv ilemi olmayacak. 

05/12/2009 itibaryla
TR-DOS

* RUN komutu girii farkl srcl path ieriyorsa, srcnn directory'si
  belirtilmemise onun change drive esnasnda restore edilen 
  current directory'si kullanlyor. Buna ramen Bochs emulator (v2.4) iinde
  floppy drive media change status daima media changed (ah=6) gsterdii iin
  emlatrn floppy disk image' iinde iken daima root directory'e dn
  olduundan 'cd' komutunda kaytlanan cdir siliniyor (reset oluyor).
  Bu bir bug gibi grnmesine ramen, emlatrn dnda, gerek fd'den
  trdos boot olunca byle bir durum olmuyor. Yani CDIR korunuyor. 
  (CDIR'in korunmas veya reset olmas -> MAINPROG.ASM, change_current_drive,
  call proc_get_media_change_status, call floppy_drv_init)   

29/11/2009 itibaryla
TR-DOS

* RUN komutu PATH ile birlikte alyor. Ayn zamanda CD ve dier patrh/directory
  ile ilgili komutlarda (CD komutu 'CDh' imzasyla kendini belli ediyor)
  proc_change_current_directory prosedr farkl davranyor. 'CD' komutunda
  deien dizini dos src tanm tablosuna kaytlarken dier komutlarda
  kayt yapmyor (imdilik sadece 'RUN' komutu uygulamas gerekleti) bylece
  komutun argman olan path CDIR' bozmuyor, komuttan dnte CDIR restore oluyor.
  (Restorasyon 'RUN' komutunda INT 20h terminasyon kodu aamasnda gerekleiyor.)   

* RUN komutunda PATH deikenine bal dizinlerde otomatik olarak dosya aratma
  aamasna henz gelmedim. u anda sadece girilen directory iinde dosya aranp
  bulunduysa yklenip altrlyor.
  Bugnden nce sadece 'CD' ile girilen alt dizinlerde veya ROOT'ta dosya
  altrlabiliyordu. rnek:'B:/> run trdos/erdogan/runme.com' formatnda dosya
  altrma bugn itibaryla mmkn oldu. Komuttan dnnce 
  root directory yine current directory oluyor. (B:/>) Fakat,
  alan dosyann almas devam ederken cdir (B:/trdos/erdogan>) !..
  Dolaysyla ierideki cdir ile dnteki/dardaki cdir ayn deil...
  Dnteki cdir ieriye girmeden nceki cdir... (previous cdir)...  

25/11/2009 itibaryla
TR-DOS

* COM dosyas iin yklenen sektr*512 byte'a 1024 byte YIIT boluu ekleniyor.
  Stack pointer (SP) allocation size (256 byte olarak) kadar segment adresinden
  yukarda kullanlr. rnek: Allocation size 120 (78h) ise, 
  SP = 121*256, 7900h olur. (120+PSP= 121) Bu (SP'yi ms-dos'tan farkl ayarlayan, 
  COM dosyas iin ms-dos'tan farkl olarak, sadece kendi byklne bal bir 
  bellek blgesi atayan) bellek tahsis/atama ynteminin uyarlamasn yaptm.
  (COM dosyas iinde stack boluu atamak gerekmiyor... Bu dzenlemeyi
  yapmasydm, COM dosyas bellekte kendisine atanm olmayan,
  rnein: SP = 0FFFEh offset'ini kullanabilirdi. Bu da bellekte ykl
  dier bir dosyay bozabilirdi. Yani STACK POINTER programa 
  atanm bellek iinde kalacak ekilde program almaya balatlm oldu.)

* COM dosyas 64000 byte'tan byk ise 1024 byte YIIT boluu eklenmiyor.
  65535 byte olarak bellek atanyor. ve Stack Pointer 0FFFEh oluyor 

* TR-DOS'ta COM altrmann MS-DOS'tan fark, dosya boyutunun en az 1024 byte
  stne SP atanmas ve bellein sadece COM dosyasn altrmak iin gerekli 
  PSP+AllocationSize (dosya byklnn sektr saysna leklenmi halinin
  en az 1024 byte stack boluu kalacak ekilde yukarya tanmas artyla
  bellek atamas) kadar ksmnn kullanlmas. (MS-DOS tm serbest bellei
  COM dosyasna tahsis etmektedir.)

* Allocation Size PSP'yi veya OFDT'yi iermiyor... (Bellek atama tablosunda
  AllocationSize+1 100h byte hcreler olarak ve tek blok olarak 
  ayn numarayla gsteriliyor.) Bunun sebebi, AllocationSize ile
  kasdedilenin programn kullanaca ksm olmasdr. PSP veya OFDT balk
  muamelesi gryor ve program boyutu iinde saylmyor.
  (Sadece COM dosyas iin eklenen Stack boluu programn uzants saylyor.
  EXE dosyalarna ve okuma/yazma iin alan dosyalara stack boluu eklenmiyor.
  Sadece okunan/yazlan sektrlere denk drmek iin, gerekiyorsa, sektre gre 
  dzletirilmi/leklenmi -dosya boyutunu aan- bellek atamas yaplyor.)

* COM stack boluunun 1024 byte olmas, daha kk stack boluundan dolay,
  stack'a ayrlan ksm kullanan COM programlarnn (RUNME.COM gibi) kendi 
  kendini yemesini nlemek. (664 byte'lk RUNME.COM 32-64 byte stack boluu
  ile almyor, 256/512 byte ile kusurlu alyor, 1024 byte stack boluu 
  eklenmesiyle dzgn alyor. nk 940 byte offset'ten 1940 byte offset'e
  kadar 5'er atlayarak (CX=200) 'add DI, 5' ve 'mov byte ptr [DI+4], ah' eklinde 
  kayt yapyor. TR-DOS kernel RUNME.COM'u 2 sektr ykleyip +1024 byte bellek 
  tahsisi yaptndan, stack pointer 2048 olarak program balyor ve SP deeri 
  1940'dan uzak olduu iin stack 'push' komutlar almay bozmuyor.
  NOT: RUNME.COM (RUNME.ASM) TR-DOS'un gelitirilmesinde nemli rol olan, eski ve
  ok ksa (664 byte'lk) bir demo programdr. Ekranda yldzlar/noktalar arasnda
  belirlenmi yaz gsterir ve basit animasyon yapar. TR-DOS kernel
  RUNME.COM'u diskten ykleyip baar ile altrnca (dier baz COM ve EXE'ler de
  snanmtr) DRV INIT prosedrnn, 'load and run executable' prosedrlerinin
  INT 20h'nin yani ksaca, dosya sisteminin ve kernel'in basit kurulumunun
  baaryla gerekletii anlalmtr. DOS interruptlarn kullanmayan
  kk EXE'lerin taklmadan almas da TR-DOS iletim sistemi ekirdeinin 
  2009 EKM-KASIM aylarnda baar ile ortaya ktn/canlandn gstermektedir.
 
18/11/2009 itibaryla
TR-DOS

* CLOSE FILE prosedrndeki kusurlar dzelttim. Alan MEMAT
  kaytlar dosya almadan nceki hale geri dnyor.
  Bir dosya kapand zaman ona bal ak dosya var ise o da
  kapanyor. (Diske kayt yaplmakszn.)
  MEMory Allocation Table'da 41h'den 60h'ye kadar PSP'ler
  61h'den 80h'ye kadar OFDT'ler grnyor. lk olan daima PSP
  veya OFDT takip edenler ak dosyann kendisi.
  256 byte'lk hcreler eklinde tahsis var.
  Open Files List'te 32 kayt var. lk kayt yani offset 0, 
  41h veya 61h olarak MEMAT'ta yer alyor. (Ak dosya ise...)
  64+DosyaNo program/altrma olduunu, 96+DosyaNo okuma/yazma olduunu
  gsteriyor. 

* MEMAT1.COM (MEMAT1.ASM) adl MEMAT'n ilk ksmlarn
  gsteren programck yazarak oradan grdm duruma gre kusurlar dzelttim.
  rnein: MEMAT1.COM kendini daima 04h'den sonra (Dir Buffer) gelen
  iki adet 41h olarak gsteriyor. lk 41h MEMAT1.COM'un PSP'si, 2. ise
  dosyann/programn kendisi... PSP segmenti ayn zamanda dosyann Handle'...
  lk 41h'nin pozisyonu 256*MEMAT_Offset= PSPN'in addresi, bu saynn 16'ya blm
  PSP'nin segmentidir... rnek: 09D0h segmenti... MEMAT'da 9Dh offset'inde grnr.

* Dosya iinde dosya ap kapama INTERRUPT'larn tekrarlanabilir girii
  olmasn gerektiriyor. Yani INT 21h alrken baka bir program da INT 21h'ye
  girebilecei iin. STACK problemi olmamas gerekiyor.
  Yani u anki durumda INT21h'nin STACK/YIIT deeri tekil...
  baka bir program (TSR), INT ile araya girerse 
  ve Kernel'in ayn stack pointer'n kullanrsa program taklr. 
  (leride dier aamalardan sonra bu duruma uygun yaplandrmaya gemem gerekecek.)   
 
14/11/2009 itibaryla
TR-DOS

* INT 21h ile ile baz basit fonksiyonlar gerekletirdim.
  Program INT 21h'den dnebiliyor.
  Fakat dnte directoy list v.s. tekliyor...
  Open_File veya baka bir aamada bugfix gerekiyor.

* CLOSE FILE prosedrn yazdm. Dosyalar kaparken kaytlamyor.
  Dolaysyla deien dosyalar sahibi olan program tarafnda kaytlanmal.
  Kapanan dosya sahibi olduu tm dosyalar da kapatyor.
  Ve bellekte kapsad yer boaltlyor.

11/11/2009 itibaryla
TR-DOS

* Geici ayarlarla (current directory iinden ve sadece FAT/FAT32 dosya sistemleri)
  RUN ve SHOW komutlar zerinden program altrma, dosya grntleme, 
  OPEN FILE, LOAD FILE prosedrleri gerekleti...

25/10/2009 itibaryla
TR-DOS

* MEM yada MEMORY komutu tamamland, toplam kullanlabilir conventinal (trdos iin
  real mode iinden eriilebilen) memory, toplam bo memory ve toplam ardk
  bo memory bykln veriyor. 
  MEM_INIT.ASM iinde gerekli baz dzeltmeleri yaptm.
  Prosedr bellein bir ksmndan itibaren ve ilk uygun bo segmenti
  bulmaya gre yazdm. Fakat MEM komutunda bu segmenti kullanmadan, 21. hcreden
  itibaren boa yer kontrol ediliyor. A20 hatt enabled ise bellek 1114112 deilse
  1048576 olarak grnyor. A0000h'den itibaren 0A, 0B... 0Fh eklinde atama kodlar
  var... Sonradan bunlarn arasna yerleilebilir. 
  (MEM INIT prosedr UMB kullanlmyor durumuna ayarl.)

* VOLUME komutunun disk seri numarasn gstermesini ekledim.

19/10/2009 itibaryla
TR-DOS

* CD komutunda error dn olunca bulunamayan directory grnyordu, bunu
  'path/directory not found' iin directory level' bir geri alarak ve dier hatalar
  iin 'proc_change_current_drive' prosedrn ararak dzelttim. Yani alt dizinlerde
  takld yerden bir geriye, okuma hatasnda veya dier hatalarda geerli mantksal 
  Dos disk srcsnn geerli dizini yeniden yklenip takld yerden geriye alnyor.  

* LONGNAME komutunda UNICODE karakterleri kaytlamaya karar verdim nk diske dosya ad
  kaytlarken orijinali kaybetmemek gerekiyor. 65 byte olan dizgi 130 byte
  ve arkasndan 2 byte sfr kayt olaarak yer 132 byte'a kt.
  Buna karlk, ekrana yazarken sadece AL yazmacndaki der karakter olarak grnecek.
  (leride UNICODE'dan Trke'ye v.s. ayklama yaparken ek algoritma/prodedr gelebilir.)
  UNICODE kaytlama 'LONGNAME' iinden deil 'proc_find_direntry' iinden arlan
  'proc_save_longname_sub_component' prosedr iinde yaplyor. Bylece 
  her dosya arama ileminde bulunacak ksa ada ait uzun ad kaytlanm oluyor.
  rnek: 45h,04,03,02,01 olarak geriye kayan herbiri 26 byte isim paras kaytlar...

18/10/2009 itibaryla
TR-DOS

* LONGNAME komutu tamamland. 65 byte'a kadar dosya adn grntlyor. Bykl
  65 byte'tan fazla olanlar dikkate almyor. 2 byte UNICODE karakter (ax) setinde
  ah> 0 ise al = "_" olarak gsteriliyor. ('ax'den 'al' karakterlerini gsteriyor.)
  (5 adet longname sub componenti dikkate alyor, last long entry order >45h'yi 
   yani 40h + srano 45'den byk ise dikkate almyor... 5*13=65.)

17/10/2009 itibaryla
TR-DOS

* CD komutu tamamland.. "." ve ".." ilem gryor. Root'un altnda 7 seviyeye inebiliyor.
  daha derine inmiyor... 

12/10/2009 itibaryla
TR-DOS

* CD komutu genel olarak alyor ".." konusunda bug saylabilecek bir prompt 
  gsterimi var "cd ../../" promptta kendini gsteriyor ama geri gitmeye gidiyor
  bu dzeltilecek...   Bunun dnda srcler aras geite current dir 
  korumas ileri ve geri gidi, ok seviyeli alt dizine atlama gerekleti.
  CD komutu en dip seviyesi root'tan sonra 7. Normalde dier DOS uyarlamalar 
  dip seviyesini snrlamyor ama karakter saysn snrlyor. 
  Dier dos'larda directory karakter says 80 ile snrl iken 
  TR-DOS'ta dizinlerin/path olabilecek karakter says 90 (7*12+6)

06/10/2009 itibaryla
TR-DOS

* DIR Komutunda ".." olarak nceki directory'nin dir list iinde listenmesi
  tantld daha nce dir '.*' ie '..' listelenmiyordu...
  proc_convert_file-name'de dosya admnn ilk iki karakteri '..' ise
  direkt onlar kullanan deiiklik yapldi daha ce (2005'ten beri) 
  sadece ilk noktay tanyordu. kinciyi aradaki nokta kabul ediyordu.
  extension yok ise ikinci nokta dm oluyordu.
* CD komutunda FAT 32 root dir iin, proc_change_current_directory
  iinde dzeltmeler yapld. Kontrol edilecek yine taklma varsa 
  dzeltilecek. Deep dir level'lar kontrol edilecek.
  Root dir 'ROOT' olarak 'PATH_Array' level 0'da (ilk 16'nin ilk 4'nde)
  iaretleniyor, oras bosa set oluyor (floppy_drv_init reset yapyor, 
  hard disk bir kez set oldu mu yle kalyor)
  bunu kontrol ederek gereksiz yeniden yazmadan kanld.
  
04/10/2009 itibaryla
TR-DOS

* CD komutu alyor. Takld yerlerin kontrolleri yaplacak.
  12 byte dos formatyla array hazilinde en ok 8 levelde
  (root + 7 sub dir level)
  path name tutuyor.
  Bunlar prompt ve dir iin noktal formata evriliyor.
  Dir iin 64 byte, prompt iin ve asl olarak 91 byte (7*16+7)
  current directory veya path name tutuluyor.
  En son level'a baaryla gelimise change directory gerekleiyor
  ve src tablsouna cdir olarak '8*(12+4)' formatyla) kaytlanyor.
  aralarda load root dir ve load sub dir standrad/otomatik gerekleiyor
  buffer ilemleri change dir'i kartrmyor.
  cd .., cd /, previous dir ve next dir formatlar kontrol edilecek.
  Durumlar: Current_dir_level > 0 ise last_dir_level < current_dir_level ise
  previous dir (parent) mmkn, ve next sub dir (child) mmkn.
  Current_Dir_Level >7 ise child'e gemiyor. CDir_Level = 0 (root) ise
  previous/parent'a gemiyor.
  Eer path veya directory ad "/" ile balyorsa (command buffer'dan)
  current_dir_level = 0 olarak ve last_dir_level
  proc_parse_path_name'dan dnenen gre belirleniyor, ve last_dir_level'a
  kadar root'tan itibaren seri ykleme ve gei yaplyor (proc_locate_file ile)
 
27/09/2009 itibaryla
TR-DOS:

* Disketle alta eski FAT12 FS (A:) zerinden trdos.com ykleme
  (trfdboot.com trdos v1.0) zeriden altrnca 'get_next_cluster'
  gerektiren FAT32 (C:) dir listelemeden dnebiliyordu.
  Fakat bir ka gnden beri TRFS1 fd0: (A:) zerinden trdos.com ykleyince
  FAT32 (C:) 'dir' komutu get_next_cluster'dan dnemiyor, taklyordu.
  FAT12 ile bir kez fat_buffer set olunca bu taklma olmadndan
  sebebin fat_buffer pointer = 0 olduunu anlayp, get_next_cluster
  prosedr iinde 23/09/2009'da yaptm ama uygulamadm bx>0 kontroln
  aktifletirdim. Bylece, birden ok cluster' kapsayan DIR komutunun
  taklma problemi kalmad.

* Geici 'find' komutu find-next_file'da cf= 1 dnyordu 
  bylece listeleme eksik oluyordu.
  Bu durum sebepsiz gibi grnyor. Muhtemelen stack veya
  segment prefix problemi veya assembler'den kaynaklanan problem.
  Bunu find_next_file prosedr bana 'push ds, pop ds' ! koyarak
  telafi ettim. leride sebebini bulursam dzeltirim.  

26/09/2009 itibaryla
TR-DOS:

* MAINPROG.ASM iinde directory listeleme prosedrleri DIR.ASM'ye alnd.
  Fakat DIR.ASM TRDOS.ASM'de deil, MAINPROG.ASM iinde 'include DIR.ASM' oldu...
  (MAINPROG.ASM'yi ikiye ayrm oldum, ok byk olduundan abuk okuyamyordum.)

* Bochs Emulator hatas 
 'cmp word ptr [FindFile_MatchCounter], 0' komutu
  yerine 
 'xor cx, cx'
 'cmp word ptr [FindFile_MatchCounter], cx'
 komutlar kullandm ve and directory listeleme -sonraki dosyalar iin- dzeldi.
'push ds, pop es' or 'push es, pop es' dahi hatay dzeltiyordu!? 
 push es
 pop es
 cmp word ptr [FindFile_MatchCounter], 0
 ja short loc_start_search_next_file
 ... garip bir hatayd ve cx zerinden sfr kontrol uygulayarak dzelttim.

* Directory listeleme ilemini kilitleyen durumu nlemek iin
  nceden tamamlanm prosedrlerde ufak tefek deiiklikler yapld.
  nemsiz olmakla birlikte dn etkileyen veya farkl dallanma yaptran
  deiiklikler '26/09/2009' olarak prosedr balarna deiliklik tarihi ile
  iaretlendi.

23/9/2009 itibaryla
TR-DOS:

* get_next_cluster prosedrnde ES: dahili ileme alnd, FAT_Buffer'dan ieride
  yklendi. Darya prosedr arlmadan nceki haliyle geri dndrld.
  Bylece mevcut ierilerden ES: deiiklii problemleri halledildi. FAT32 directory
  listeleme (multi sectors veya multi clusters'l) dzelmi oldu.
  (Current directory iin 'DIR' tm FAT12-16 ve FAT32 durumlar iin tamam...)

22/9/2009 itibaryla
TR-DOS:

* FIND_NEXT_FILE prosedrne sebepsiz grnen bir 'push ds, pop es'
  koyana kadar find_next_file (proc_print_directory iin) grevini yapmyor
  listeyi ilk satrda kesiyor (find_first_file sonucunda).
  Bu push ds, pop es'nin nerede sonucu etkilediini bulamadm.
  nk stc dnyor ise lazm deil, dnmyor ise, ds=es kullanlmyor.
  Bu garip duruma BOCHS Emulatr 2.4.1'de karlatm.
  Dosya sistemleri FAT 12 ve FAT 16. Muhtemelen FAT 32'de de ayns olabilir.
  MAINPROG.ASM, proc_find_next_file prosedr iinde geici notla birlikte...
  
21/9/2009 itibaryla
TR-DOS:

* Root directory'de listeleme (dir komutu) tamam.

* volume komutu prosedr daha sonra serial no gosterecek ekilde deitirilebilir.

* mem_init.asm iin proc_deallocate_memory'de yanl push pop sonucu DS'nin deimesi
  bana 2 gn bouna proc_change_drive prosedrnde hata aratt
  en son disk_read'dan hata dndn farkettim, sebepsiz gibiydi
  load_root_directory hata dn register detayna girince
  DS'nin memory allocation table segmente (bx) eit olduunu grnce durumu anladm. 
  nk directory buffer atamas yaplrken push edilen BX DS olarak pop ediliyordu
  bu da var olan bir buffer resetlenirken oluyordu, resetlenmezse olmuyordu
  (dir ve change drive komutununun ksmen alma sebebi, yani iki kez yaznca
  change drive almas veya src deitirince dir hatas olumas)
  sebebini farkedince proc_deallocate_memory'yi dzelttim ve src geileri
  root directory iin hatasz gerekleti. Ve directory buffer'dan (current dir)
  listeleme hatasz gerekleti. (Tm FAT ve FAT32'ler iin)

19/9/2009 itibaryla
TR-DOS:

* BOCHS 2.4.1 Dos emulatrnde TRDOS.COM FS1 boot (fd0 startup file) almas...
  (FSFD.EXE ile 1.44MB fd image file a.img'de FS1 dosya sistemi var,
  ona TRDOS.COM startup file ykleyip boot yaptryorum. B: yani b.img FAT12 fd,
  C: yani c.img FS1 hard disk olarak alyorum.) 

* Komut uygulamas MAINPORG.ASM'ye konuldu. TRDOS.ASM ksmen boaltld.
  Fakat MAINPROG.ASM'nin sadece komut uygulama-prompt ksm
  onda kalmal, dier ksmlar kernel dosyalar (modlleri) iinde olmal ki,
  ileride MAINPROG.ASM opsiyonel olabilsin.
  (leride baka bir command manager veya deiik MAINPROG.ASM kullanlabilmeli.)

* DIR komutu ve FIND komutu, find_first_file, find_next_file
  imdilik sadece Current directory iin (directory_buffer'da ne varsa)
  alyor. (proc_change_current_drive directory_bufferi root olarak yklyor)
  yani root directory'den dosya listeliyor.
  leride full pathname deiiklikleri ve eklemeleri yaplacak.

* Change_current_drive'da A: boot drive, iken B:'ye geilirse oradan C: (FS1)
  olursa, tekrar B: olduunda ilk seferde B:ye gemiyor fakat 2. denemede geiyor.
  A:'dan C:'ye geerse B:ye geiyor. (A: diski FS1 dosya sistemi ve trdos.com.)
  Bunun sebebi change_currrent_drive iinde 'get_media_change_status' veya
  [SI][LD_MediaChanged] pointerine konulan deerlere bal ilemlerden biri.
  'floppy_drv_init' prosedrn A: veya B:'ye gemeden kullanmamak iin
  (al yavalatmamak iin) trick'ler yapyorum (initialization signs)
  buna karlk bir yerde B:'den C:'ye geince C:'den B:'ye ilk dn olmuyor.
  (C: ile A: arasnda gei problemi yok...)
  Ama ikinci dn giriimi baarl oluyor. Sebebini bulup dzelteceim.

* find_next_file prosedrnde 'push cs, pop ds, push ds, pop es' geici
  bunlar kontrol edildikten sonra karlacak.
  imdilik listelemeyi saladndan kullandm. (ds veya es'nin uygun gelmedii
  yeri bulunca bunlar kalkacak (veya print_directory prosedrne tanacak)... 

* DIR komutunda en ok takldm yer,
  find_next_file'da "cmp dh, 0Fh" komutunun (dosyann longname'i varm kontrol)
  cf=1 vermesi ve bunun return olmas idi (previous attribute 08 idi)... Oysa dosya
  uygun bulunduundan cf=0 ile dnmesi gerekirdi.
  Bunu atladm iin CF'yi etklieymeyen bir sr instruction'a ramen
  find_next_file cf=1 (stc) dnyordu ve ilk dosya hari listelenmiyordu.
  Hatay 2-3 saatlik kontrol sonucunda CF=0 yapan tesadf bir komut ekleyerek
  (mov si, offset burasi, call proc_printmsg) farkedebildim.

15/9/2009 itibaryla

TR-DOS:

* CMD_INTR.ASM command interpreter dosyas 'volume', 'prompt', 'CD C:' veya 'C:' benzeri
  change current drive komutlaryla almaya balad.
  Change_Current_Drive'da hem Current_Drv (say) ghem Current_Dir_Drv (harf) olarak
  kullanlyor. Eski (2005) TRDOS.ASM'deki 'DirBuff_Drv' yerine 'Current_Drv' geldi.
  'Current_Drv' olan yerde iki kez ilem (ayrca Current_Dir_Drv var) grnyor.
  Bunlardan biri devreden karlabilir. Current_Dir_Drv text olarak kullanlan ksmn 
  paras olduundan korunacak gibi. 'Current_Drv' akbeti programn kalan ksmna bal.
  'Date', 'Time' komutlar bu aamada alyor. 'Dir' komutu 'change drive' hari
  hazr deil. 'Volume' komutu Volume Name, total ve free space bilgilerini ve FS
  bilgisini (Dos mantksal src adna balayarak) veriyor.
  rnek: 'FAT 12 volume in drive A: is' eklinde...  

12/9/2009 itibaryla

TR-DOS DRV_INIT:

* FAT dosya sistemli dos srclerine 'change drive' yapld zaman
  'change_current_dos_drive' prosedr,'current_directory' yapsn
  sfrlyor ve eer floppy drive 'media_changed' durumu var ise 
  floppy_drv_init arlyor. Bu i'proc_get_media_change_status' prosedr 
  zerinden yaplyor. Ayrca, LD_mediachanged = 6 ise (root directory'den
  varsa volume_name'i src tanm tablosuna tamak iin ilem yap iareti
  drv_init ve floppy_drv_init prosedrleri tarafndan yaplyor),
  volume_name tama ilemi yaplyor.

5/9/2009 itibaryla

TR-DOS DRV_INIT:

* Bundan sonraki aama directory listeleme.
* FAT Volume Name tama (Get_FAT_Volume_Name) baarl oldu ancak
  'dos drive description table'a kopyeleme imdilik uygulanmad.
* FAT root directory buffer ykleme (mem_init.asm, drv_fat.asm)
  ve ilk kullanm baarl oldu.

23/8/2009 itibaryla

TR-DOS DRV_INIT:

* DRV_INIT.ASM ve TRDOS.ASM'de 23/8/2009 tarihli geici kod kaytlarna dikkat!
* FAT Volume Name imdilik baaryla tanamyor (TRDOS.ASM proc_print_volume_info).
* FAT Volume Name'i directory iinden elde etme tamam, DOS Drive Description Table
  iine tama prosedr yazlacak. 
* Floppy Disk'te meda change ve dos src tanmlama tablosu yenileme ilemleri
  tamamlanmad. Sonradan taklan floppy diskte media change tespit edilirse
  dos src tanmlama tablosunun hemen gncellenmesi gerekiyor.
  Yani floppy_drv_init dinamik olmal. Buna karn hard idsk drv_init sadece
  balangta alyor.
* FAT ve FS dndaki dosya sistemleri (CD_ROM ve DVD dosya sistemleri)
  daha sonra installable file system prosedrleri olarak trdos kernel'e eklenecek
  veya trdos kernel extension olarak tasarlanacak. (Baka bir dosyadan yklenecek.)
* proc_load_FAT_root_directory ve proc_load_FAT_sub_directory prosedrlerinin
  DRV_FAT.ASM iinde yazlmas ve DRV_INIT.ASM iindeki proc_get_FAT_volume_name
  prosedrnn bunlara uygun olarak deitirilmesi tamam.
* proc_deallocate_memory prosedrnn MEM_INIT.ASM iinde yazlmas tamam.

12/7/2009 itibaryla

TR-DOS DRV INIT:

* FAT 32 dosya sistemini hard diskten tanyarak mantksal src olarak kullanyor
* proc_deallocate_memory balang segmentinden itibaren belirtilen allocation tipine
  ait bellek ksmn serbest brakmas lazm. Bu prosedr proc_allocate_memory
  prosedrnden bozarak MEM_INIT.ASM iinde yazlacak
* proc_load_FAT_root_directory prosedr yazlacak.
  bu prosedr bh'de (bl=0) dos drive numarasndan src ieriini okuyarak
  tm root directory ieriini Directory_Buffer_Size kadar ardk sektr ykleyerek
  bellekte hazrlayacak. hata varsa stc dnecek.
* proc_load_FAT32_sub_directory prosedr directory cluster' tamamen bellee ykleyecek.
  (proc_get_fat_volume_name prosedrnde Directory_BufferSize direct olarak
   cluster size'dan hesaplanabilir... u anda DirBuff_LastEntry'den hesaplanyor...)
   Fakat DirBuff_LastEntry cluster size'dan hesaplanmt... yani yumurta-tavuk durumu.)
* DRV_INIT directory bufferi LastEntry numarasndan kontrol ediyor farkl ise
  bufferi bellekten siliyor ve sonra tekrar bellekte yeni durumuna gre yer ayor.
  Bu niin fix bir dir buffer kullanmyor: mmkn olduunca fazla yer vermekten kamak iin,
  ileride dier FAT prosedrleri ve FS prosedrleri Dir Buffer bellek atamasn
  daha farkl yapabilir. Yani bellek yetmiyorsa silebilir.
  (TRDOS daima en az bir cluster en ok root directory size hangisi fazla ise o kadar Dir
  Buffer ile alacak. LastEntry kontrol trdos ilk yazldnda
  sektr snr kontrol idi... Bir sonraki sektre geiyordu.
  Sektr snr last entry'e (RootDirEntries) gelmeden nce bittiinde bir sonraki
  sektr yklemesi gerekiyordu. Hzlanmak iin cluster esasl yklemeye getim.
* Get_fat_volume_name prosedr root directory'de Volumename bulursa
  onu 11 byte olarak Logical Dos Drive buffer'ndaki LD_VolumeName alanna tayacak.
  Yoksa boot sektrdeki volumelabel ksm devam edecek.

7/7/2009 itibaryla

TR-DOS DRV INIT:

* TRFS ve FAT16 harddiski tanyor (Partition id 06h ve yukars)
* FAT12 partition ve FAT16 partition id 04h'i tanmyor. (uygulamada kullanlmadndan...)

* TRFS ve FAT free sectors'leri byte olarak doru gsteriyor...

* TRDOS FAT12,16,32 Volume Name'i imdilik Boot sektrden alyor. Root directory'deki volumename'i
imdilik grmyor...
