Retro UNIX 386 v2 iin kernel programlama/gelitirme notlar...
(Erdoan Tan).. Tarih srasna gre gnlk taslak notlar.
------------------------------------------------------------------------------
(Yaplm ve yaplacak ilemleri/deiiklikleri aklamak ve hatrlamak iin.)

25/03/2021 (Boazky)
iopen arlarna baklacak iopen iinde access'e dx'in gelmesi lazm...
ayrca sysopen, syscreate, maknod'da flags ksmlarnda dzeltme lazm...
namei'de de flags ksm dzeltme lazm, directory flag ayn zamanda
regular file artna da bal... bu bakmdan dzeltilecek...

26/03/2021
access, sysexec ve namei tamam
tm prosedrlerde hem access 
(dx ile giri olmal), hem iopen hem iclose hem de
flaglar kontrol edilecek.

; 01/04/2021
maknod ii imap tamam.. mkdir kontrol edilecek

; 02/04/2021
maknod ve mkdir tamam
sysmkdir tamam...

; 04/04/2021
_fclose ve anyi tamam (imap update flaglar tamam)

fakat anyi ile ilgili 'itrunc' iinde 'free' sb, fbm
bufferlar ile ilgili olarak eski tip ilem yapyor ve sync'yi zorluyor..
sync anyi iinde olursa daha iyi
(aslnda bir sonraki versiyonda sblock iine 'last inode' kayt atlrsa
last inode varsa dzeltme ilemleri gerekir sync'nin last inode'u sfrlamas
gerekir.)

sysclose ve iclose ile devam
iclose zel dosyalarda external device driver durumuna gre chdev ve bdev
duruma gre ilgili prosedrleri aracak...
regular dosya ise hi bir ey yapmadan kacak...
iclose iinde 'iget' arlmas lazm ki, flags, major, minor ve teki
parametrelere gre kapatma yaplabilsin.

internal device open ve close ilemlerinde error prosedrne sadece sysopen ve syslose'da
dallanacak. iopen ve iclose iinden sadece error code (eax iin ve cf=1 ise dndrlecek)
yani hi bir open ve close prosedr error'e dallanmayacak. stc ve eax'de error kodu
ile dnecek.

10/04/2021
iclose, sysclose, sysstty tamam..

11/04/2021
TRDOS 386 v2.0.3'e gre kontroller...
diskbss.s tamam
diskdata.s tamam
diskinit.s tamam
diskio.s tamam
12/04/2021
ifs.s imdilik kontrol edilmeyecek
keyboard.s tamam
video.s ksmen tamam, 32 bit push/pop tamam
16/04/2021
video.s tamam (VGA hari)
vidata.s tamam
kbdata.s tamam
17/04/2021
memory.s tamam (NOT: TRDOS 386 v2'den eksik ksmlar var)
18/04/2021
stddev.s tamam
sysdefs.s tamam
u0.s de kaldm. pdrv_init gerekiyor buffer init'te nemli deiiklik olmal.
19/04/2021
prdv_init tamam
root file system iin ldrv0 oluturulmas ksmen tamam
20/04/2021
rdrv_init tamam
23/04/2021
ldrv_init kod yazma devam ediyor
24/04/2021
system buffer'lar yeniden dzenlendi (sblock, mbr, bsbuf, imap, itable)
u5.s 'imap' iindeki 'imapbuf' 'im.buffer' olarak deitirildi
rdrv_init deien buffer yaps dolaysyla deitirildi
ldrv_init tamam
u0.s tamam
u1.s'den devam edeceim
25/04/2021
u0.s de 'rdrv_init' ve 'ldrv_init' dzeltmesi tamam
u0.s'ye 'get_ldrvt' eklendi
u5.s modifikasyonlar ('alloc', 'set_sysbuf_hdr') yapld
u0.s dzeltmeleri devam ediyor
; 27/04/2021
u0.s'de file buffer'larnn diske yazlmas ('flush_db') tamam
	'sync' prosedr deiti, file buffer header'lar deiti (ux.s)
u5.s'de deiiklik gerekiyor (deien file buffer header'lardan dolay)
u2.s'deki 'fclose' iinde 'iclose' var, oradan file buffer flush olmas
	lazm nk sysexit fclose kullanyor 
	veya sysexit iinde sync olmas lazm. (o prosese ait bufferlar
	diske yazlmal... (ilgili ldrv diskleri senkronize edilmeli)
; 30/04/2021
u1.s 'sysret' deki 'sync' (u0.s) deiiklilerini yaptm
ve u1.s sysexit' deki 'sync_u' (u0.s) kodunu yazdm.
'sync_u' [u.uno] iin nce file buffer'lar sonra system buffer'lar
	 LDRV'lere yazyor (dier processlerin buffer'lar yazlmyor)
'sync' ise [ii] iin nce file buffer' sonra o LDRV'ye ait system 
	buffer'lar diske yazyor. Dier 'inode'lar iin yazma yaplmyor.
'sysret' modifiye edilmi inode'n buffer'larn temizlemi oluyor.
'sysexit' ise 'sysret' deki' sync'den geri kalan bufferlar temizlemi
oluyor. (dosya ak iken 'sysexit' ars gelirse faydal olur, dier
tm arlarda 'error' veya 'sysret' devreye giriyor.).
; 01/05/2021
u1.s'de 'syswait' gzden geirmesi tamam.
u1.s tamam
ux.s de u.cdrv'i 1 byte'a indirdim
u2.s deiikliklerinde 'systime' da kaldm
; 02/05/2021
u2.s 'sysexec' set UID, set GID dzeltmesi yaptm
u5.s 'access' owner/group dzeltmesi yaptm
	(owner iin UID ve GID ayn olmal kural)
ux.s  super block structure'na FmapIndex, ImapIndex, ItableIndex
      ekledim. Bunlar buffer'larn hangi sektr ierdiine ilikin.
u0.s'de '_smod_' FmapIndex, ImapIndex, ItableIndex dzeltmeleri yaptm.	
u5.s de 'imap' dzeltmeleri yapld. (her ldrv iin ayr imap buffer)
u2.s 'maknod' tamam (aaya doru devam)
; 06/05/2021
u2.s tamam ('anyi' tamam)
u3.s tamam (hi bir deiiklik yaplmad)
u4.s tamam (hi bir deiiklik yaplmad)
ux.s 'ldrv' ve 'pdrv' structure'larndaok deiiklik yapld
     ('pdrv' de bir nceki duruma dnlrken, 'ldrv' de deiiklik oldu)
     ('imap', 'itable', 'fbmap' sector indexleri 'ldrv' talosuna tand)
u0.s 'ldrv_init' deiiklii yapld (yeni 'ldrv' tablo yapsna gre)
u0.s, u1.s ve u2.s de dzeltmeler yaptm.
u5.s deiiklikleri yaplacak
; 07/05/2021
u5.s ve u8.s'de buffer dzenlemeleri devam ediyor
; 08/05/2021
u8.s 'bufaloc' deiiklikleri iptal edildi, 'bufaloc' doruland
	(sadece fiziksel disk numaras ve fiziksel sektr esasl buffer
	 kontrol yaplacak...)
; 09/05/2021
ux.s	'ldrv' structure deiti, herey superblock iinde
	superblock hari tm buffer'lar disk okuma yazma esnasnda
	kullanlacak, sadece superblock diske direkt yazlacak
u0.s 	'rdrv_init', 'ldrv_init', 'bf_init'dzeltmeleri tamam
; 10/05/2021
u0.s 'pdrvmount' eklendi (fiziksel diskleri raw eriime ap/kapamak iin)
ux.s pdrv.status bit 0, 1 ise fiziksel diskin mounted olduunu gsterecek
root (fiziksel) diski, rdev iine kaytlanyor (index numaras olarak)
(fiziksel disk mount olmadan logical disk kurulamayacak)
; 11/05/2021
ux.s 'SB.status' dzenlemesi (sistem buffer'larnn durumu)
u0.s 'flush_bufs' tamam, 'sync', 'sync_u' dzeltmesine devam
; 12/05/2021
ux.s Superblock structure'na son deiiklii yapan kullanc/process 
     no eklendi (deiiklii yapan process 'sysnc_u' ile diske yazdracak)
     ayrca fiziksel src indeks numaras alan eklendi.
     (dword olan SB.Status byte'a dntrld)
u0.s tamam ('sync' ve 'sync_u' dzeltmeleri yapld)
; 13/05/2021
u0.s'de kk dzeltmeler yaptm
; 14/05/2021
u0.s 'sync_all', 'flush_all', 'abort' prosedrlerini yazdm
u1.s 'sysabort' and 'syssync' yeni sistem arlarn yazdm
	'sysexit' system ars iine 'abort' ekledim
	(Abort'un amac diske yazlrken hata veren ve kilitlenen buffer'lar
	geersizletirerek serbest brakmak, sadece buffer'n sahibi
	veya 'sysexit' iinden yaplabilir. Sadece buffer'n sahibi yapabilir
	nk syswrite iinden dnecek hataya retry veya abort olarak tepki
	vermesi gerekiyor. Yazma ilemini yeniden denemeyecekse, 'sysabort'
	ars gerekir yoksa buffer' megul brakr.)
; 15/05/2021
u0.s, u1.s, ux.s deiiklikleri buffer error-lock  iptal edildi
	diske yazma hatas olursa buffer iptal ediliyor, yazma
	(syswrite) o sektrde iptal oluyor ve o sektr
	yazlmam gibi yazma byte says dndrlyor.
	kulanc istertse ayn sektr ayn dosya pozisyonundan tekrar
	yazmay deneyebilir (file pointer ilerlemedii iin) 
	Bu durumla ilgili olarak 'sysabort' sistem ars da gerek
	kalmad iin iptal edildi. 'Abort' prosedrn sildim.

; 16/05/2021
disk buffer ilemlerinde ok karklk olduu iin
unix v7 x86 (Robert Nordier, 1999) koduna gre bir ok eyi yeniden yazyorum	
sysread ve syswrite' yeniden yazyorum, inode ve file structure'larnda
unix v7'ye gre deiiklikler yapyorum; readi, writei ve buffer prosedrleri
deiecek.. Asl olarak buffer (disk write) ilemlerinde salama ve tutarl
olmas iin bu deiikliklere baladm. Eski kod byk lde deiecek.
(Bir ok yerde unix v1'den kalma kod paralar ve yaplar iptal olacak).
plock, prele, readi, writei, readp, writep prosedrleri yazlacak...

; 17/05/2021
	u6.s 'plock', 'prele', 'readp', 'writep' tamam
	bunlarn iinde sleep, wakeup ve psignal yazlacak
	bu prosedrlerin iinde EDX register'nn deilmemesi gerekiyor.
	ayrca dier register'larnda korunuyor olmas kontrol edilecek.	
; 20/05/2021
; 21/05/2021
	u4.s coherent 4.2 (MWC) kaynak kodundan da (proc.c) yararlanarak sleep
	ve wakeup prosedrlerini yazyorum. ('sphi', 'splo' ve 'spl' coherent'ten)

; 22/05/2021
	u6.s readp, writep, plock, prele dzeltmeleri yaptm (zellikle push/pop)
	u4.s psig'de kaldm, psig'deki 'resume' retro unix'e zg olmak durumunda
  	(unix v7 ve coherent resume/restore kodlar uyumsuz ve ok iyi deil)
	(uyumsuzluk sebebi zellikle retro unix'in 'sysentry' push, pop
	kernel page table vs daha basit olmasndan kaynakl, v7'de
	ok maksatl save/resume var, u.q_save, u.s_save, u_rsave gibi)
    	'sleep' ksmen tamam .
	(sleep'de ve wakeup'ta eax, ebx, ecx ve edx deiebilir)
	alt prosedrler esi, edi ve ebp'yi kullanmor
     	'issig' tamam.
     	'sphi', 'splo' ve 'spl' (coherent 4.2'den uyarlama) 
     	u4.s iine yazlacak.
     	HASH prosedr tamam (fark 'getc' adresden multiscreen zellii
	gzetildii iin HASH getc'h dnda 10' ve daha byk
	say/index retiyor.. Sonra 2 bit sola kaydrlp 'slpque' pointer
	ofset'i haline getiriliyor. 'sleep' 'getc' iin HASH kullanmayp
	sanal tty ekranlara gre [u.ttyn] deerinden 0-9 aras index veriyor
	ve bu [slpque+0]..[slpque+36] eklinde ilk 10 pointer' veriyor
  	Toplam 26 sleep kuyruu pointer' var ve dierleri 10-25 aras...
	u1.s'de 'rdwr' prosedrne unix v7'deki 'rdwr' prosedrnn 
	c kaynak kodundan aklamalar ekledim, ufak dzeltme yaptm.
; 23/05/2021
	u4.s'de 'sleep', 'issig' dzeltmeleri yaptm. 'sleep' tamamlanmad.
; 24/05/2021
	u4.s ve u6.s'de 'sleep' 'wakeup' deiiklileri tamamland.
	issig, psig dzeltmeleri yaptm.
; 28/05/2021
	u4.s'de 'sleep' ve 'wakeup' dzeltmeleri yaptm.
	u1.s'de	'sysent', 'sysret' ve 'error' de nemli deiiklikler yaptm.
    ('sleep' ve 'wakeup' dnlerinde stack ptr'n doru olmas iin v.s.)
u4.s'de	'psig' ve 'resume' prosedrlerini dzelttim,
; 29/05/2021
	u4.s de 'psig' iinde signal resetleme islemi var. 
	(ilem gren signal'in 'p.signal' word' iindeki 
	bit'i temizlenir/sfrlanr.)
	Bugn itibar ile Retro UNIX 386 v2 signal/sinyal ileme 
	aklamas:
 	Default (Kullanc belleinde ayarlanmam) signal ileme iin
	([u.srb]=0) daima son signal'in numaras ve zaman kaytlanr.
	Bu durumda sadece bir signal/sinyal tipi iin sinyal kabulnn
	aktif olmas mantkldr.
	Kill signal'i iin proses 'sysexit' e ynlendirilir. 
	Tm signal'lerde signal numaras 'u.snum' ve zaman 'u.s_time'
	kaydedilir ama daima son aktif sinyal iin kayt yaplm olur.
	SRB ve signal handler (callback) yntemlerinde handler adresi
        'u.s_addr'den alnr. 'u.signal' bit esasl olarak 16 signal'in
	enabled/aktif durumunu flag olarak kaytlamak iin kullanlr.
	Ve 'issig' prosedr sadece o prosesin aktifletirdii yani
	kabul ettii signalleri 'psig:' adresine ynlendirir.
	Unix v7'den farkl olarak, deeri 1 olan bitler 'enabled'
	signallere/sinyallere ve deeri 0 olan bitler ilem grmeyecek
	ignored/pasif signal/sinyal numaralarna karlk gelir.
	'SIGKIL' kill signal'i aktif/pasif durumuna baklmakszn
	uygulanr.
u4.s'de 'setrun' ve 'setrq' prosedrlerini yazdm. Unix v7'de kullanlan
	'runin' ve 'runout' parametrelerini kullanmyorum.
	Retro UNIX 386 v2'de process'ler deilde sadece memory page'ler
	swaplanland iin (yani bir proses bellekte iken, onun
	onun page table'lar swap diskinde veya dosyasnda 
	page ierebiliyor. Bu page fault durumunda geri ykleniyor) 	 
	'runin' ve 'runout'a gerek kalmyor. (Fakat bellek'te atanacak
	sayfa kalmazsa yeni bir proses balatlamaz veya bellek yetersiz
	hatas oluur. (swap diskine atlabilecek yeterli sayda bellek
	sayfas da kalmazsa..)
; 30/05/2021
	u3.s'de	'switch', 'qswitch' prosedrlerini yazdm..
 	'rswap' ve 'wswap' prosedrlerinde dzeltme yaptm, 'idle'
	prosedrnde deiiklik yaptm. nceki runix versiyonunun
	'swap' ve 'tswap' prosedrlerini silmeden devre d braktm
	('%if 0' ile '%end if' direktifleri aras kodlar derlenmez)
ux.s'de user ('u') area'da u.fpregs dzeltmesi yaptm, 94 yerine 108
	byte olmas lazmd (32 bit almada floating point
	registerlerinin save/restore ilemleri 108 byte yer kullanr)
; 05/06/2021 (Kamiloba)
	u4.s'de 'clock' prosedrn yazmaya devam 
	(1 haziran 2021'de baladm)
	unix v7 clock ile TRDOS 386 v2 (2.0.4) clock prosedrnn
	karmas eklinde tasarlyorum. (clock prosedr
	iinde kontrole edilen timer events, 'timer_set' alanlar
	ve 'timer_set' yapsnn aklamas ux.s'de)
	ux.s'de 'timer_set', timer events (TRDOS 386 v2'den alma) 
	yapsn az deitirerek Retro UNIX 386 v2'ye uyarlyorum.
	(Retro Unix v2'ye unix v7'de yakn karl 'callouts' olan 
	spesifik zellik ekliyorum, ncelikli referans TRDOS 386 v2.)
; 06/06/2021 (Kamiloba)
	u4.s'de	'clock' prosedrnde deiiklikler yaptm.
	unix386.s'de 'rtc_int' ve 'timer_int' deiiklikleri yaptm. 
	(TRDOS 386 v2'deki ek zelliklere gre deiiklikler.)
	CMOS_READ prosedrn u0.s'ye tadm (CMOS_WRITE'n yanna).
	Multi screen ve multi tasking testi niteliinde olan, 
	2. video sayfasna Tarih ve saat bilgisi yazan geici kodu
	iptal ettim. Saniyede 2 kez arlan rtc_int iinde,
	her 1 dakika'da 'epoch' arp, oradan 'R_TIME' gncelleyen
	kod ekledim. Saniyede bir kez R_TIME artryor.
	Motor alyorsa 200 tick sonunda motor durduruluyor
	(100 Hz'den 2 saniye alma sresi).
; 07/06/2021 (Boazky)
	unix386.s 'timer_int' ve 'rtc_int' dzeltmeleri yaptm.
; 10/06/2021 (Boazky)
	NASM v2.15 ile derleme kontrol ve gereken dzeltmeleri yaptm.
; 16/06/2021
	NASM v2.15 hata mesaj satr numaralarn hatal verdii iin,
	NASM v2.11 ile, geici kodlar ekleyerek 11 Haziran'dan itibaren
	derleme kusurlarn dzeltip, ilk unix386 kernel dosyasn
	oluturdum.
	Bundan sonra unix v7 x86 kodunu referans alarak
	ama Retro UNIX v1.1 ve v2 taslak yapsn ok bozmadan,
	dosya sistemini "file/inode write block", "inode table"
	"inode map", "free blocks map" ve "super block" write/modification
	flag/bayrak deerinden birbirne kilitleyerek diske yazdracam.
	
	(Yani kritik sistem sektrlerinde ayn inode'a ait olmayan veya
	ayn u.uno'ya ait olmayan bir deiiklik olursa veya buffer'daki 
	kritik sistem sektr deiirse kritik sektrler birlikte 
	yazlacak (update) olacak.
	
; 18/06/2021 (Boazky)
	unix386.s'de TRDOS 386 v2'den alma 'fpready' fpu hazr kontrol,
	u1.s'de ve u2.s'de 'sysver' (39) ve 'sysfpstat' sistem arlar
	(fpu hazr ise 'u.fpsave' set edilebiliyor)
	u0.s'de 'sysinit' de kontrol ve dzeltmeler. 'unix386.s' de
	PIT'n 100 HZ'e ayarlanmas. 'ux.s', 'sysdefs.s' ekleme ve
	dzeltmelerini yaptm. 'rtc_int' de dzeltme yaptm.
	(Unix v7 x86 'main.c' ve 'machdep.c' ile kyasladm.)
; 21/06/2021 (Kamiloba)
	ux.s'de 'pdrv.mountcount' deiikleri
 	u7.s'de ufak dzeltmeler
; 22/06/2021 (Kamiloba)
	u0.s'de 'pdrvmount' deiiklii/dzeltmesi
	ve 'mntc' eklemesi (mount table mntc -mount count- 
	zerinden kontrol edilecek, 'pdrv.mntcount' ise 
	fiziksel diskin ka adet logical disk mount'u olduunu
 	gsterecek, bylece o kadar logical disk sektrleri iin 
	raw eriim engelleme kontrol yaplacak. Mounted ldrv 
	sektrlerine denk gelen pdrv sektrlerine raw olarak
	yani block device inode zerinden yazlamayacak.
; 24/06/2021 (Kamiloba)
	u5.s'de 'iget' yeniden yazld (mount kontrol eklendi)
	ve mounttab yapsnda deiiklik oldu, LDRV adresi yerine
	LDRV numaras kullanlacak...
; 26/06/2021 (Kamiloba)
	u0.s'de 'rdrv_init' ve 'ldrv_init' dzeltmesi, 
	u5.s'de 'icalc' da deiiklii.
; 29/06/2021 (Kamiloba)
	u5.s'de 'get' ve 'icalc' dzeltmeleri
	u8.s'de '_dskrd', '_dskwr' and '_poke' dzeltmeleri
	ux.s'de 'ldrvtable:' buffer size dzeltmesi
; 05/07/2021 (Kamiloba)
	ux.s'de 'sync_i' error kodlarnn eklenmesi
	u0.s'de 'sync_i' prosedrnn yazlmas
	u8.s'de 'get_phy_drv' iinde ldrv tablo boyutu dzeltmesi
; 12/07/2021 (Kamiloba)
	u0.s'de 'sync_i' ye devam ettim
	u8.s'de _dskwr_ ekledim,
	'_dskwr_', 'poke' ufak deiiklik yaptm.
; 15/07/2021 (Boazky)
	u0.s'de'sync_i' yi tamamladm
	ux.s'de 'sync_i' ile ilgili deiiklik
	u5.s'de 'set_sysbuf_hdr' dzeltmesi ve 'sync_i' aklamas
; 16/07/2021 (Boazky)
	u0.s'de 'sync_i' dzeltmesi
; 18/07/2021 (Kamiloba)
	ux.s'de SuperBlock parametre ekleme (system buffer'lar).
	Bylece dosya yazarken itab, imap, fbm buffer ve sektrleri
	superblock zerinden ldrv'den takip edilecek.
	u5.s'de 'icalc' dzeltmesi (system buffer'lar sper blok
	zerinden takip edilecek)
	u0.s'de 'sync_i' dzeltmesi yaptm
	u8.s'de 'bufaloc' dzeltmesi (sistem buffer'larnn baka
	maksatla kullanlmasn nlemek iin) yaptm
20/07/2021 (Boazky)
	u8.s'de 'bufaloc' dzeltmesi (sistem buffer'larnn ayn	
	sektr gstermesi durumunda, bir kullanc tarafndan
	kullanlmakta iken, baka bir kullanc tarafndan 
	sahiplenilmemesi ve bylece sistem buffer'larnn yazma
	btnln -kullanc esasl- korumak iin ekleme) yaptm.
	[Baka kullanc sistem buffer'n baka maksatla okuyup,
	yazabilirdi fakat buna 'access error' verdirseydim, bu kez
	sistem buffer' olarak kullanlmas durumunda da eriim
	olamazd, o nedenle 'access error' verdirmedim. Yine de,
	kernel kodunda, mantksal srcde sadece bir inode'a gre
	bufferlar kullanld iin, inode deiince 'sync _i'
	ile sistem bufferlar yazlyor. Baka kullanc bu arada
	baka inode'la alacak ise, 'sync_i'yi bypass edip
	sistem bufferlern ve dosya sektr buffer'n
	deitiremez. Raw olarak diske yazlmas iin de diskin
	'umount' durumunda olmas veya en azndan 'root drive'
	iin raw access korumas gerekiyor ki, o durumda, zaten
	sistem buffer'lar 'bufaloc' dndan korunmu olur. 
	Dolaysyla 'bufaloc' iinde '20/07/2021' iaretli
	kod eklemesi gereksiz olabilir.]
21/07/2021
	ux.s'de open file structure dzeltmesi yaptm. unix v7'deki
	gibi bellekte ykl inode adresine deil diskteki inode
	number' ieriyor. Ve mantksal src index numarasn 
	ieriyor (monte edilmi dosya sistemi ise, bunun mantksal
	src numaras 1 veya daha byktr, bu durumda inode
	number bu srcdekidir yani root fs'deki inode number
	deildir. Monte tablosu hangi dizine monte edildiini
	gsterir. Open file yapsndaki reseved byte alan monte
	tablosu indexinin 1 fazlas olabilir.
22/07/2021
	ux.s'de file structure dzeltmesi. unix v7deki, gibi deil
	runix v2'ye zg open file structure'a az deiikle dn
	yaptm.
	u2.s'de 'fclose' kodunda deiiklik yaptm.
	u1.'s de 'sysclose' kodunu kontrol ettim, sync ilemini
	'_fclose' iinde yaptrdmdan deiiklik gerekmedi.
	'sysexit' de 'sync_u' vard, deiiklik gerekmedi.
	'sync_x' dosya kapanrken sistem blok buffer'larn
	diske yazdrp eitliyor ve sistem blok pointer'larn
	ve status flaglarn geersiz hale getiriyor.
	Hata alnsa bile bunu yapyor, nk dosya kapatlyor.
	'sync_u' ise kullancya ([u.uno]'ya) ait buffer'lar
	diske yazdryor, 'system buffer' flag 1 ise pas geiyor.
	(nk sistem blok buffer'larnn tek tek kark srayla
	 deilde birlikte ve srayla yazlmas gerekir..
	 file buffer, itab, imap, fbm, superblock srasn
	 uyguluyorum. Dosya yazlrsa, inode, inode yazlarsa inode
	 map, bu da yazlmsa free block map ve fbm deitii iin
	 ona gre kayt ieren superblock yazlyor. Bir aamada
	 baarszlk olursa devam eden aama tutarszlk artmasn
	 diye yazlmyor, iptal geersiz duruma getiriliyor. Bylece
	 sistem blokunun diskteki bir nceki hali nispeten daha 
	 tutarl olacaktr. Aksi takdirde diske baaryla yazlamam
	 deiiklikler yazlm gibi sistem bloklar, free block
	 map ve sper bloktaki free block count, inode structure
	 ve inode map v.s. hatal olurdu. Bir nceki aamada
	 yazma hatas olursa sras gelen sistem bloklarn yazmay
	 durdurmann sebep olaca tutarszlk, yazlmasna kyasla
	 daha az olur ve superblock'taki 'SB.LastInode' alanndaki
	 inode numarasna gre tutarllk kontrol yaplabilir.)
	u0.s'de 'sync_u' yazlacak...
23/07/2021
	u8.s'de 'dskwr' iinde deiiklik yaptm.
	([pdn] yerine [ebx+bufhdr.phydrv] kullanlacak.)
	u0.s'de 'sync_u', 'flush_bufs_u', 'flush_bufs'
	ve '_smod_' prosedr dzeltmeleri yaptm.
	u2.s'de 'fclose' dzeltmesi yaptm.
	u1.s'de 'sysexit' ve 'sysclose' dzeltmesi yaptm.
	u0.s'de 'rdrv_init' ve 'ldrv_init' ortak koduna/prosedrne
	superblock buffer pointerlerini ve 'SB.LastInode'
	alann temizleme kodu ekledim. (Diskte bu alanlar
	bir nceki kapanta veya 'sysexit' te dolu braklm
	ise bu ekilde temizlemek iyi olacaktr.)
	u5.s'de 'alloc' prosedrnde dzeltmeler devam ediyor..
27/07/2021
	u5.s'de 'alloc' prosedrnde dzeltmeler devam ediyor..
28/07/2021
	u5.s'de 'alloc' prosedrnde dzeltmeler devam ediyor..
30/07/2021
	u5.s'de 'alloc' prosedrnde dzeltmeler tamamland. 
03/08/2021
	u5.s'de 'alloc' prosedrnde sralama dzeltmesi yaptm.
08/08/2021
	u5.s'de 'alloc' prosedrnde 'sync_i_x' dzeltmesi yaptm.
	u0.s'de	'sync_i' ye 'sync_i_x' eklemesi yaptm.
14/08/2021
	u5.s'de 'free' prosedrn 'alloc' prosedrnn tersi olarak
		yeniden yazdm. 
15/08/2021
	u5.s'de 'imap' prosedrn dzelttim. 
		('sync_i' ve dier yeni zellikleri uyguladm)
	u2.s'de 'maknod' da ufak deiiklikler, dzeltmeler yaptm.
	u0.s'de	'flush_bufs' da ve 'flush_all' da
		system special buffer flag dzeltmeleri yaptm.
		(system special block buffer'lar da 'sync' ve
		'sync_all' prosedrleri esnasnda diske yazlmal.)
	u5.s'de 'anyi' de 'sync_i' ve 'imap'a gre dzeltmeler yaptm.
		('itrunc' prosedrn kontrol ettim, yanl yok.)
16/08/2021
	u5.s'de 'icalc' prosedrnde hata dzeltmesi.
17/08/2021
	u5.s'de 'icalc' prosedrnde 'SB.Status' kod dzeltmesi.
	u0.s'de 'sync_i' prosedrnde 'SB.Status' kodlar dzeltmesi.
		'sync_i' iinde hata dzeltmesi ve iyiletirme.
20/08/2021 (Kamiloba)
	u5.s'de 'mget' (sector offset hesab) dzeltmesi yaptm.
21/08/2021
	u5.s'de 'imap' dzeltmesi (ksaltma yaptm, 'sync_x').
	u6.s'de 'readi' prosedrnn 'dskr' ksmnn yeni sync
		(buffer-disk senkronlama) mantna uyarlanmas..
22/08/2021
	u5.s'de 'mget' dzeltmesi.
	u8.s'de 'dskrd' (existing sector buff, 'dkrd_1') dzeltmesi.
	u6.s'de 'readi' iinde 'dskr' ksmnda 'sync' ile ilgili
		ekleme, dzeltmeleri yaptm
		(buffer-disk senkronlama tamam).
23/08/2021
	u6.s'de 'writei' prosedrnn 'dskw' ksmn yeni sync
		(buffer-disk senkronlama) mantna uyarladm.
24/08/2021 (Boazky)
	u6.s'de 'writei' iinde 'dskw' ksmndaki sync ve buffer
		flag ile ilgili ekleme ve dzeltmeleri tamamladm.
		((Gerekli ekleme ve deiiklikler tamamland.))
02/10/2021 (Boazky)
	Getiimiz hafta yaptm kernel derlemelerinde hatalar
	alnca, en son 27/09/2021 olan kaynak kodu versiyonunu
	kaytlayp, 1.1 versiyonu esasl (ama 2.0 dosya sistemli)
	basitletirmeye karar verdim. (lk baarl almadan
	sonra 2.0 versiyonunun zellikleri aamalar olarak tekrar
	ekleyeceim.)
03/10/2021 (Boazky)
	32K'dan byk retro unix (386 v2) kernelinin hata vermesi
	sebebi olarak (stack overwrite) boot (boot5.asm) dosyas
	iinde stack segmenti son olarak kernel'e dallanmadan nce
	ayarlayan kodun ([Extra_Segment] deikeninden bx ve ss'ye
	aktarma yaparken yanllkla 1000h yerine 800h geliyordu,
	kernel yklendikden sonra 800h'ye resetlenmesini iptal ederek
	boot kusurunu dzelttim. 32K'dan byk retro 'unix' kernel
	dosyas alyor. Fakat, kernel'in halen almama sebebi
	henz 'init' dosyasnn yklenmesi aamasna doru gelinememesi.
	Dolaysyla memory ve disk hazr mesajndan sonraki aamalarda
	retro unix 386 v2 kernel dzeltmesine devam ediyorum.
04/10/2021
	unix386.s dosyasnda ufak dzeltmeler yaptm.
	keyboard.s, u4.s, u9.s'de 'sleep', 'wakeup', 'getc', 'sndc' 
	prosedrlerinde yeni tip channel esasl ve multiscreen tty num
	ayrcalkl dzeltmeleri yaptm. 'readi' ve 'writei' deki sleep
	carlarn da deitirdim. Sleep'de priority kullanlyor,
	bunu geici olarak PZERO olarak ayarladm. 'syssleep'deki
	'sleep' arsnda da PZERO priority kullandm.
	(Bunun deimesi gerekebilir. Farkl priority deikenleri
	var, buradaki priority p.pri, [curpri] olup unix v7'den uyarlama
	Retro UNIX'e zg priority deikeni var onunla eliebilir.
	leride dzenleme gerekecek.)
08/10/2021
 	unix386.s ve u0.s'de dzeltmeler, hata yerini bulmak iin
	geici (temporary) kodlar.
09/10/2021
 	unix386.s ve u0.s'de dzeltmeler, hata yerini bulmak iin
	geici (temporary) kodlar.
	u8.s'de diskio (chs r/w) dzeltmesi.
11/10/2021
	u8.s'de 'diskio' prosedrnde giri dzeltmesi.
15/10/2021
	u0.s'de 'ldrv_init' prosedrnde dzeltme.
17/10/2021 (Boazky)
	Kerneli balatmaktaki baarszlklar dzeltemediim iin
	tekrar v1.1'den deitirmeye baladm. Geici (veya ksmen
	kalc olacak ekilde) unix386.s'yi Version 1.1'e gre az
	deitirdim. u0.s'deki 'sysinit'i ve u1.s'deki sysret'i
	ve u8.s'deki 'diskio' ve ilgili prosedrleri deitirdim.
	(sb0 ve sb1 superblock'larn kullanmaya baladm, yeni
	superblock structure, yeni inode, yeni buffer headers
	ama eski tip process yapsn kullanp, en basitiyle kerneli
	altrp, init dosyasn yklemek istiyorum.)
	Bu nemli deiikler devam ediyor.
	(Sonradan, nceki kernel kodu include dosyalardan yeni tip
	kodu eklemeye balayacam. nce kerneli baaryla altrmam
	gerekiyor.)
18/10/2021
	u2.s'de 'namei' dzeltmesi/iyiletirmesi.
	ux.s'de	'namei' ile ilgili 16->32 bit deiklikleri.
	u6.s'de 'readi' basitletirme (v1.1'deki gibi) deiiklikleri.
	u6.s'de 'readi', 'dskr' deiiklikleri tamam.
	[idev] yerine [cdev] geldi. 'iget' ve 'mget' de dzeltmeler
	gerekiyor. 'writei ve 'dskw' deitirilecek.
22/10/2021
	u6.s'de 'writei' iinde chrdev write ksm dzeltmeleri ve
	'readi' iinde chrdev read ksm ile ilgili kk dzeltmeler.
	('writei' iinde blkdev dzeltmeleri ve fs ksm yaplacak)
24/10/2021
	u6.s'de 'writei' iinde blkdev write ksm dzeltmeleri.
	u6.s'de 'sioreg' iinde ve ux.s'de 32 bit u.scount, u.pcount
	ve u.bps uygulamas (32 bit register mov kullanmak iin).
	('readi' ve 'writei' iinde 32 bit iyiletirmeleri yaptm;
	movzx'ler yerine mov ve word yerine dword komutlar kullandm.)
	u6.s'de 'write_i' iinde 'dskw' dzeltmeleri tamam.
27/10/2021
	u5.s'de 'iget' dzeltmeleri, 'idev' yerine 'cdev' ile 
	prosedrden k olacak.
	u8.s'de geici 'dskrd' ve 'dsk_rd', 'dskwr' deiiklikleri.
	u8.s'de 'get_system_time'daki eax'i RTC interrupt'da kaytlanan
	[R_TIME] dan alma dzenlemesi.
	u5.s'de 'icalc' dzeltmeleri tamam.
	(mget ve iget dzeltmelerine devam ediyorum)
28/10/2021
	u8.s'de 'dskwr' ve 'dskrd' de '_diskio' giriinde dzeltme.
	u5.s'de 'iget' dzeltmeleri tamam.
	u5.s'de 'alloc' ve 'alloc_m' dzeltmeleri yaptm. (Tamam.)
29/10/2021
	u5.s'de 'free' prosedrndeki dzeltmeler tamam.
30/10/2021
	u1.s'de 'sysread' ve 'syswrite' dzeltmeleri tamam.
	u1.s'de 'sysopen' ve 'sysclose' dzeltmeleri tamam.
	('fclose' dzeltildi, 'getf' hatasz, 'sync_x' geici, 
	'iopen' ve 'iclose' da device iin dzeltme gerekebilir.)
	u2.s'de 'anyi' ile ve sonra syscreat, mkdir ve truncating
	(rmdir v.s.) ilemleri iin yarn (pazar gn) devam edeceim.
31/10/2021
	u7.s'de 'iopen' (device) ve 'iclose' (device) dzeltmesi.
	u5.s'de "access' ve 'iget' ('icalc' dn hata) dzeltmesi.
	u7.s'de 'otty', 'ottyp' ve 'ottys' tamam. 
	(Runix v1.1 'ottyp'de bug var! -ottys_3 adresinde ebx hatas-)
	u7.s'de 'ctty', 'cttyp' ve 'cttys' tamam.
01/11/2021
	u7.s'de 'iclose'da ufak bir ([u.mode]) dzeltme.
	u7.s'de 'ottyp' ve 'cttyp' prosedr kodlarnda dzeltme.
	('u.mode' veya 'chrdev.omode', direkt 'al' ve 'dl' girii.)
	u7.s'de yeni 'sret' (bo) prosedr cf=0 ve eax=0 olarak dnyor.
	(yeni 'cret' kodu 'sret' kodu ile ayn.)
	(iochd, iocfd, olpr, clpr, iottyp, iottys, ioclpr imdilik
	bo prosedrler; bunlarn hepsi 'sret'e dallanyor;
	cf=0 ve eax= 0 olarak dnyorlar.)
	u6.s'de 'readi' ve 'writei' de 'iget' sonras (edi) dzeltmesi.
	u1.s'de 'sysstty' dzeltmesi ('_ottyp_, _cttyp_').
	u6.s'de 'wtty' ve 'xmtt' dzeltmesi.
	('wmem' ve wlpr'de deiiklik imdilik gerekmiyor.)
	u6.'s'de 'readi'de geici eski tip 'sleep' uygulamas. 
	(getchar/rtty durumunda klavyeden karakter gelmiyorsa sleep).
	u6.s'de 'rcvt' ve 'rtty' dzeltmesi.
	('rmem' ve rlpr'de deiiklik imdilik gerekmiyor.)
	Character aygtlarnn o/c/r/w dzeltmeleri imdilik tamam.
	Block aygtlarnn o/c/r/w dzeltmerine devam.
02/11/2021
	u8.s'de disklerin (block aygtlarnn) r/w prosedrleri olan
	'rfd', 'wfd', 'rhd', 'whd' de basit dzeltmeler yaptm.
	(Bunlardan baka block aygt -disk- o/c/r/w prosedr yok.)
	(('chrdev_init' prosedrnn yazlmas gerekiyor.))
	((('anyi' ve ilgili truncating prosedrlerine sra gelecek.)))
05/11/2021
	u0.s'de 'chrdev_init' tamam. (chrdev tablolar oluturuyor.
	Sadece major, minor, type and subtype alanlarn dolduruyor.
	Tablo sras: null, mem, tty0, .., tty7, tty8, tty9, lpr) 
	u2.s'de 'anyi' dzeltmesi tamam (deiiklik: jump to 'sync')
	u5.s'de 'imap' dzeltmesi tamam. 
	('maknod' iinde 'imap_x' kontrol edilecek)
	('itrunc' ve 'tloop' prosedrleri kontrol edilecek.)
06/11/2021	 
	u2.s'de 'maknod' kaynak kodunda dzeltme yaptm. 
	'imap_x' arsn doruladm.
	u5.s'de 'itrunc' ve 'tloop' prosedrlerini kontrol ettim,
	hatal ksm farkedemedim (doruladm).
	u1.s ve u2.s'de 'iget' dn hatann [u.error] iine
	ilenmesi dzeltmelerini yaptm. (Eski 1.1 kernel versiyonunda
	herhangi bir yerde error'e dallanyordu.) 
	(("Error:" addresine dallanmadan nce eax'deki error/hata
	kodunun, [u.error] iine kaytlanmas gerekiyor,
	nk "Error:" sonras kod [u.error] iindeki deerle hata
	dn yapyor, [u.error] sfr ise hata dn olmuyor.))
07/11/2021
	u9.s'de 'getc'/'getc_s' prosedrnde 'sleep' ars giriini
	dzelttim (eski versiyon sleep'e gre giri gerekiyordu).
	u7.s'de 'sysmount', 'sysumount' ve 'getspl' prosedrlerinin
	dzeltilmesi tamamland.
08/11/2021
	u6.s'de 'writei' dzeltmesi. (Kullanlmayan blm sildim)
	u8.d'de 'get_phy_drv' geici olarak kullam d olduundan
	'%if 0' iine aldm.
13/11/2021
	Hata sebebi aramaya devam (unix386.s, u0.s, u8.s, u9s).
15/11/2021
	Hata sebebi aramaya devam (unix386.s, ux.s, u8.s)
16/11/2021
	Hata sebebi aramaya devam (diskio.s)
21/11/2021
	diskio.s'de 'int40h:' ('diskette_io:') ksmna 'clc' ekledim.
	unix386.'s, u8.s ve u0.s'de hata aramaya devam.
	(bochs'da page fault hatas kernelin 99Eh adresinde)
22/11/2021
	unix386.'s, u8.s ve u0.s'de hata aramaya devam.
22/11/2021 - v1.2
	Hatalar zemediim iin tekrar Retro UNIX 386 v1.1 kernel
	kodundan minimum deiiklikle geici zm salamaya alacam.
	(Bundan sonraki v1.1 kodunun en az deimi hali olacak,
	sadece dosya sistemi uyumluluu olacak. Bu test/geici versiyona
	v1.2 adn verdim.)
	'namei', 'iget', 'mget', 'icalc', 'access' kodlarn deitirdim.
26/11/2021 
	u5.s'de alloc prosedrn (v2 free blocks map'e gre) uyarladm.
	Yarn alloc prosedrn kontrol edeceim ve free prosedrn
	uyarlayacam. (v1.1 ile v2.0 arasnda olan kod yazyorum.)
27/11/2021 
	u5.s'de 'alloc' prosedrnde kontrol ve dzeltme tamam.
	ux.s'de 'alloc' ile ilgili eklemeler.
	u5.s'de 'free' prosedrnn yeniden yazlmas tamam.
	u0.s'de [rootdir] alanna 1 yazlmas tamam.
28/11/2021
	sysdefs.s'ye ekleme. 
	u6.s'de 'readi' ve 'writei' nin uyarlanmas.
	u5.s'de 'mget' de ufak dzeltme (gereksiz 'jc' kodunun iptali)
	u5.s'de 'icalc' da ve 'access'de dzeltme.
	u2.s'de runix 386 v2'nin 'sysexec' kodunun kullanlmas.
	u0.s'de 'bf_init' ve 'rdev_init' de dzeltme.
	u2.s'de 'namei' ve 'sysexec' hata kontrol devam ediyor..
29/11/2021
	u8.s'de 'poke' iinde 32 bit push-pop deiiklii.	
30/11/2021
	u5.s'de 'iget' iinde dzeltme.
	u2.s'de 'sysexec' iinde dzeltme.
	u1.s'de 'sysret' de 'xor eax, eax' deiiklii.
		'sysexit' de 'dec eax' deiiklii.
04/12/2021
	u1.s'de	'sysopen', 'sysclose', 'sysread', 'syswrite', 'getf'
		ve 'fclose' deiiklikleri.
	u0.s, u1.s, u2.s kontrol. sysdefs.s ve ux.s'de ufak deiiklik.
05/12/2021
	u7.s'de 'iopen','iclose', 'otty', 'ctty' dzeltme/deiiklikleri.
	'keyboard.s', 'video.s', 'diskio.s' dosyalarnda ufak dzeltmeler.
11/12/2021
	u0.s, u1.s, u2.s, u6.s, u8.s, u9.s, sysdefs.s'de
	hata giderme ve iyiletirmeler ve geici test kodlar.
12/12/2021
	u1.s'de geici test kodu ve dzeltme ile ilk 'invalid system call'
	arsn aldm. Bunun anlam /etc/init alyor demek;
	nk en son sistem ar/fonksiyon numaras 36 iken, 37. test
	fonksiyonuyla sistem ars (int 30h, ax = 37) yaptrmtm,
	'invalid system call' mesajn grmek istiyordum, grdm.
	Bu durumda [u.uno] veya [p.ttyc] iinden yanl deer alnd
	anlalyor (bunlar bypass yapnca mesaj grnd yoksa ekranda
	mesaj kmyor, sadece sol stte test kodu says kyordu).
	u0.s'de p.ttyc iine geici olarak 0 atayarak problemi zdm.
	Ancak p.ttyc unix386.s iindeki 'clear_bss' aamasnda sfrlanmas
	gerekirken iinde nasl baka bir say kyor bulamadm. 'sysinit'
	aamasndan nce muhtemelen hatal bir kod o ksm overwrite yapyor
	veya 'clear_bss' almyor.
19/12/2021
	u1.s'de 'sysemt' iinde 'cli' ve 'sti' instruction'larn kaldrdm.
	(v1.1'deki /etc/init mesaj yazdktan sonra protection hatas veriyor
	 init386.s'deki ilem srasna gre fonksiyon kontrol yapyorum)
	u2.s'de 'sysintr' prosedrn kontrol ettim, normal. u4.s'deki 'clock'
	prosedrnde [u.intr] alan sfr ise 'clock' prosedr aktif prosesi
	deitirtmiyor. '/etc/init' multi tasking aamasna 'sysemt' ile
	giriyor ama en bata [u.intr] iine sysinit arsyla 0 koyuyor.
	'/etc/init' 'sysquit' zerinde [u.quit] alann da sfrlyor.
	Bylece Ctrl+Break tular /etc/init'in almasn durdurammyor.
	u5.'de 'access' prosedrnde yazlabilir device dosyalarnn 
	salt okunur dosya sisteminde yazma ilemi hatas vermemesi iin
	dzeltme yaptm.
	u2.s'de 'namei' iinde jmp iyiletirmesi ('namei_9:') yaptm.
	u1.s'de 'syswrite', u6.s'de 'writei' ve 'cpass' ve 'wtty' 
	(device iin) doru. u9.s'deki 'putc' prosedr 'wtty' iin' doru.
	u1.s'de 'sysread', u6.s'de 'readi' ve 'passc' ve 'rtty' 
	(device iin) doru. u9.s'deki 'getc' prosedr 'rtty' iin' doru.
24/12/2021
	u1.s'de 'sysread' ve 'syswtite' iin 'rw3:' (error) kodunda dzeltme.
	u2.s'de 'sysexec' ve 'cpass' da dzeltme. (/etc/init'in almas iin
	yaptm hatal deiiklii geri aldm.)
25/12/2021
	u5.s'de 'access' prosedrnde dzeltme (root iin device r/w kontrol).
26/12/2021
	u1.s ve u2.s'de (/etc/init error iin) hata arama test kodlar.
	u2.s'deki 'sysfstat've 'sysstat' prosedrlerinde runix v2
	dosya sistemine gre dzeltme.
27/12/2021
	u2.s'de 'anyi' iinde (runix v2 fs) dzeltmesi.
31/12/2021
	u6.s'de 'trans_addr_w' iinde 'copy_page' ile ilgili hata dzeltme.
	'memory.s' de 'duplicate_page_directory' iinde dzeltme.
01/01/2022 (Boazky)
	u7.s'de 'otty' (ve 'ottyp') prosedr dzeltmesi.
	u1.s'de 'sysopen' prosedrnde binary code'u deitirmeyen deiiklik.
	u2.s'de 'anyi' prosedrnde binary code'u deitirmeyen deiiklik.
	ux.s'de binary code'u deitirmeyen deiiklik.
	u2.s'de 'syscreat' iinde hata dzeltme.
	u2.s'de 'isdir' ve 'chdir' iinde runix v2 fs inode'a gre deiiklik.
	u0.s'de 'sysinit' de iyiletirme.
	u2.s'de 'sysexec' de dzeltme.
02/01/2022
	unix386.s'de 'memory_init' prosedr 32 bit register iyiletirmeleri.
	diskinit.s'de (trdos 386 v2'nin diskinit.s'sine gre) dzeltme yaptm.
	unix386.s'de diskinit.s'ye gre deiiklik. (int 48h data alan.)
08/01/2022
	u0.s kontrol edildi ve seri (COM) port ksmlar iyiletirildi.
	u1.s'de 'syswait' iinde basit iyiletirme.
	u1.s'de 'sysfork' iinde dzeltme.
	u2.s'de	'getf' prosedrnde deiiklik.
	u1.s'de 'sysread' ve 'syswrite' gzden geirildi, yanl yok.
	u1.s'de 'sysopen' iinde basit iyiletirme.
	u7.s'de 'iopen' kontrol edildi, 'otty' ve 'ocvt' iyiletirildi.
	u7.s'de 'iclose' kontrol edildi, 'ctty' ve 'ccvt' iyiletirildi.
	u1.s'de 'sysclose' kontrol edildi.
	u2.s'de 'isdir' iyiletirmesi. 'sysfstat' iinde ufak dzeltme.
	u2.s'de 'fclose' iinde dzeltme.
	u2.s'de 'namei' iinde iyiletirme.
	u2.s'de 'syschdir' iinde dzeltmeler.
09/01/2022
	u2.s'de 'syschmod' ve 'syschown', 'isown' ve 'maknod' kaynak kodlar
		 runix v2 fs'e gre deitirildi.
	ux.s'ye 'imodx' eklendi ("inode deiti ama file data ayn").
	u2.s'de 'systell' iinde iyiletirme, 'seektell' iinde deiiklik.
	u1.s'ye 'syssetgid', 'sysgetgid', 'sysver' sistem arlar eklendi.
	u2.s'ye	'syssetgid', 'sysgetgid', 'sysver' kodlar eklendi.
	u2.s'de 'anyi' iinde deiiklik yapld.
	u3.s kontrol edildi, deiiklik gerekmiyor.
	u4.s kontrol edildi, deiiklik gerekmiyor.
	u5.s'de	'mget' prosedrnde dzeltme yapld.
	u8.s'deki 'bufaloc' kontrol edildi ve basit/ufak iyiletirme yapld.
	u8.s'deki 'wslot' kontrol edildi, doru.
	u8.s'deki 'dskwr', 'poke', 'diskio', 'dskrd' kontrol edildi, doru.
	u8.s'de 'diskio' prosedrnde ufak/basit iyiletirme yapld. 
	diskio.s'yi kontrol ettim, yanl farkemedim. (Kark ama doru.)
	u5.s'deki 'alloc', 'alloc_m' prosedrnde dzeltme yapld.
	u5.s'deki 'free' prosedrnde dzeltme yapld.
	u5.s'deki 'iget' ve 'icalc' prosedrlerinde dzeltme yapld.
	u5.s'deki 'access' ve setimod prosedrleri doruland.
	u5.s'deki 'itrunc' ve 'imap' prosedrleri dzenlenecek.
10/01/2022
	u5.s'deki 'itrunc' ve 'tloop' prosedrlerini dzenledim.
	u5.s'deki 'imap' prosedrn dzenledim.
	sysdefs.s'ye error kodlar ekledim.
	u2.s'deki 'maknod' prosedrnde deiiklik yaptm.
	ux.s'ye	triple indirect ve double indirect buffer'lar ekledim.
	ux.s'deki 'SB' ve 'file' structure'larn 'sysdefs.s'ye tayarak
	     NASM'nin BSS section'daki adreslerde yapt hatay dzelttim.
	Bu ekilde sebebi bilinmeyen/acayip etc/init hatalarn zm oldum.
	(NASM kaynakl bu hata ayn zamanda runix v2 dosya sistemi kullanan
	 yeni kernel kodunu dzeltmeme yol at, hayrl oldu.)
	u6.s'den ux.s'ye kadar gzden geirmeye devam edeceim.
11/01/2022
	u6.s'de gzden geirme ve iyiletirme tamam.
	u7.s'de 'sysmount' prosedrnde dzeltme yaptm ancak hard diskdeki
	      runix v2 fs ieren partition'lar iin superblock adresi
	      (sectr 1 olmayp) farkl olabileceinden, 'sysmount' kodunu
	      (ileride) deitirmek/gelitirmek gerekecek. imdilik runix v2
	      dosya sistemli floppy diskler iin uygun.
	u7.s'de'sysumount' prosedrnde dzeltme/deiiklik yaptm.
	u7.s'de 'iopen' ve 'iclose' gzden geirmesini tamamladm.
	u8.'s'den devam...
12/01/2022
	u8.s'de 'bread' ve 'bwrite' prosedrlerinde BugFix.
	u8.s'de 'bwslot' gzden geirildi, aklama eklendi.
		'dioreg' gzden geirildi, doru.
		'rfd', 'rhd', 'wfd', 'whd' gzden geirildi, doru.
		'dskrd','dskwr' ve 'poke' gzden geirildi, doru.
		'bufaloc' ve 'diskio' gzden geirildi, doru.
	(Orijinal unix v1'den kalma buffer status kodlamalar daha sonra
	 yeni buffer yaplandrmasnda iptal edilecek. Retro UNIX 386 v1.2
	ve sonras disk io, MSDOS'da olduu gibi direkt yaplacak ve sonu
	beklenecek, yani interrupt dn beklenecek. Dolaysyla orijinal
	unix v1'deki gibi r/w/busy durum kodlarna/flaglarna gerek yok.)
	Orijinal unix v1'den kalma status bit flaglar imdilik kullanmda.
	;
	u9.s'de 'getc', 'putc' doru. 'sndc' iinde iyiletirme yaptm.
	ux.s'de 'p.break' alan kullanlmyordu, iptal ettim. Dierleri doru.
	u2.s'de 'sysexec' iinde 'argc' (<32) ile ilgili dzeltme yaptm.
	ux.s kontrol ve dzeltmeleri tamam.
	u5.s'de 'setimod' deiiklii ([imodx], inode modified, file same)
		yaptm. [imodx] ile ilgili dier deiiklikleri yaptm.
	u2.s'de 'syslink' ve 'sysunlink' iinde [imodx] deiiklii yaptm.
	u7.s'de 'sysmount' da etiket/label hatasn dzelttim.
	sysdefs.s iinde yeni sistem arlarn tanmladm (37,38,39).
		Ve 's.time' kaytn superblock buffer+504'e tanmladm.
	Bylece... Bugn..
	Retro UNIX 386 v1.2 (Kernel v0.2.2.0) test dzenlemesi tamamland.
	******************************************************************
20/01/2022
	(Runix v1.1 ls kodunu runix v1.2 ye uyarladm. ls1.s dosyasnn
	 yeni dosya sistemine uygun hali ls2.s dosyas. Bu ekilde directory
	 listeleme program iin geici/ara kodu baaryla altrm oldum.
	 /etc/init'ten sonraki 'single user' modunda mevcut/harici komutlar
	 dzgn alyor. u1.s ve u2.s'de 'syscreate', 'sysmkdir', 'ssyslink'
	 'sysunlink' ve 'maknod' prosedrlerindeki temporary engelleri
	 kaldrdktan sonra 'multi user' modunda kontrol yapacam.)
21/01/2022
	u1.s'de 'syscreate, 'sysmkdir' prosedrlerinin temporary (%if 0)
		engellerini kaldrdm.
	u2.s'de	'syslink', 'sysunlink' ve 'maknod' prosedrlerinin 
		temporary (%if 0) engellerini kaldrdm.
06/02/2022
	u1.s'de 'sysstty' prosedrne v1.1'deki gibi (yeni, 2022)
		clear screen zellii ekledim (dizin listesi alnca alta inen
		kursr yeniden video sayfasnn stne tama ana ama)
		bunu yaparken u7.s'deki 'cttyp' de deiiklik gerekti.
	u0.s'de 'ctrlbrk' prosedrnde (2022 v1.1'deki gibi) tekrarl
		([u.quit] = 0FFFFh ise) ctrl+brk tularn dikkate almama
		dzeltmesi yaptm.
	u2.s'de 'sysexec' system arsnda ufak bir kod iyiletirme yaptm.
		(32 bit register'a say atarken, az byte kullanan kodlama)
07/02/2022
	video.s'de 'set_ctype' de ufak iyiletirme.
	u7.s'de 'sysmount'ta ufak dzeltme.
08/02/2022
	u7.s'de 'sysmount' dzeltmesi ('diskio' error dn error kodu).
	u8.s'de 'bread', 'bwrite', 'dskrd', 'dskwr', 'diskio' error dn
		ve error jump kodu dzeltmeleri (bread/bwrite'a dn).
	sysdefs.s'ye error kodu eklenmesi ('invalid fs/superblock').
09/02/2022
	u1.s'de 'syswait' kodunda ufak dzeltme/iyiletirme.
	u7.s'de 'otty' input aklamas ve 'otty', 'ctty' iyiletirmeleri.
10/02/2022
	u8.s'de 'diskio' prosedr iindeki hatalar dzelttim. 
	(error/stc dnnde gereken pop'lar olmadan return yaptrmm)
11/02/2022
	u1.s'de 'syscreat' sistem ars iinde nemli dzelme.
	u7.s'de 'iopen' prosedrnde 'syscreat' ile ilgili deiiklik.
	u5.s'de 'free' prosedrnde nemli dzeltme
	u2.s'de	'fclose' prosedrnde dzeltme.
12/12/2022
	u8.s'de diskio prosedrnde hata dzeltme.
14/12/2022
	u2.s'de 'syschown' da dzeltme.
16/02/2022
	u9.s'de 'sysgeterr' de hata dzeltme. ('retn' yerine 'jmp sysret')
	******************************************************************
21/02/2022
	Retro UNIX v1.1 'video.inc' (daha yeni) dosyasn 'video.s' olarak
	kaytladm. (v1.2 kernelde kullanlan dosya ad 'video.s')
	'clock' (clock386.s) programnda sadece video page 0'da oluan
	kursr pozisyon hatasn dzeltmeye alyorum.
22/02/2022
	u1.s'de 'sysstty' ve 'sysgtty' iinde dzeltme yaptm.
	   (u7.s'de 'ottyp' iinde ebx deeri deierek dn olduu iin)
	u7.s'de 'ottyp' iinde dzeltme yaptm.
23/02/2022
	u7.s'de	'otty' ve 'ottys' dzeltmesi yaptm.
	u1.s'de 'sysemt' de iyiletirme/dzeltme yaptm. 
		(rtc/timer demolarnn da disable/enable yaplmas)
	u1.s'de	'sysstty' iinde 'wttyc' yi ayr bir prosedre dntrdm.
		('sysemt' iinden video page 6 ve 7'nin temizlenmesi)
	u1.s'de 'sysmdate' sistem arsnda dosya modifikasyon zaman
		iin unix epoch	time'/zamann programdan zel olarak
		girme deiiklii yaptm (ecx input).
	u0.s'de 'sysinit' iinde 's.time' deerini sb0 (root disk sb)
		 yklendikten sonra kaytlacak ekilde deiiklik yaptm.
		(Root diskin superblock buffer' yklenince 's.time' deeri
		 overwrite olmayacak.)
	keyboard.s'de 'keyb_int' iinde 32 bit inst. iyiletirmesi yaptm.
	video.s'de 'set_cpos' ve 'position' (ve pasif/eski 'scroll_up') 
		prosedrleri iinde iyiletirme yaptm.
	unix386.s'de 'rtc_int' handler'nda video sayfasna (vide page 7)
		tarih ve zaman yazdran demoyu 'sysemt' iinden 
		devre d brakp, sayfay login iin temizlemeye
		ve multi tasking koullarn iyiletirmeye olanak veren
		deiiklii yaptm. (rtc demo single user modunda aktif).
27/02/2022
	video.s'de 'set_cpos' prosedrnde (ufak) deiiklik.
	ux.s'de kullanlmayan 'p.waitc' iptal edildi (kaldrld).
	u4.s'de 'wakeup' ve 'sleep' prosedrlerinde 'p.waitc' deiiklii.
	u1.s'de 'sysfork' iinde ('p.ttyc' ile ilgili) BugFix
		ve kullanlmayan 'p.waitc' resetleme deiiklii/iptali.
01/03/2022
	u2.s'de 'systell' iinde ufak (tekrarl ilemi silerek) dzeltme.
02/03/2022
	u1.s'de	'sysclose' iinde dzeltme (bugfix).
	(girite eax'i kullanan 'fclose' yerine ebx'i kullanan '_fclose')
	u7.s'de 'otty' iinde ufak dzeltme.
03/03/2022
	u7.s'de	'ottyp' iinde ufak dzeltme.
09/03/2022
	u6.s'de 'readi' ve 'write' iinde iyiletirme.
	u8.s'de 'dskwr'iinde u3.s'deki 'clear' prosedr ve u5.s'deki
		'mget_w' prosedrnn 'mget_8:' ksm ile ilgili dzeltme
		 'mget_11:'e doru [ebx] -buffer data adresi- ile jmp.
		 (Dzeltmeden sonra, 'clear'/'dskwr' dnnde ebx
		 buffer data adresini ieriyor. Dzeltmeden nce,
		 ebx buffer header adresini gsteriyordu. 'mget_8:'de
		 dzeltme gerekmedi, aklama yazdm.)
	u5.s'de	'mget' ('mget_r' ve 'mget_w') prosedrnde iyiletirme.
		(ebx 'mget dnnde kullanlmad iin mevcut sektrler
		iin iaret olsun diye ebx'i sfrlamaya gerek yok.)
	u1.s'de 'syscreat' kodunu alt prosedrleriyle kontrol ettim,
		hata yok/farkedemedim.
	u5.s'deki 'free' prosedrnde (free blocks artrma) dzeltme.
11/03/2022
	u2.s'de 'syschown' iinde 'set user id on execution' koulu
	    dzeltmesi. (Bu durumda kullancnn kendine ait olmayan
	    dosyann sahibini deitiremeyecei eklinde dzeltme yaptm.
	    Aslnda orijinali yleydi ama yanllkla terse evirmiim.)
	u2.s'de 'isown'	prosedrnde [u.gid] = [i.gid] koulunu gzeten
	    ksm kaldrdm; nk dn ve bugnk almamda unix v5-v7
	    kernel'in tekil (fark gruplarda tekrarlamayan) user id/num
	    (u.uid) ngrdn/dzenlediini farkettim. Buna gre, 
	    User id [u.uid] ile dosyann owner's id [i.uid] ayn ise,
	    ayrca bir group id ([u.gid] = [i.gid]) kontrolne gerek yok.
	    (Orijinal unix kernelindeki 'chown' prosedrne ve orijinal
	    'mkdir.s' kaynak koduna baklrsa, kullanc kodu/numaras
	    ayn ise grup kodu/numaras kontrol edilmiyor.)
	u2.s'de 'getgid' ve 'getuid' prosedrlerinde dzeltme/deiiklik.
	u2.s'de 'maknod' iinde 'wslot' ars dnnde ebp deeri
	    deiiyordu. ebp'nin deimemesi gerektii iin, 'maknod'
	    prosedr iine 'wslot'tan hemen nce ve sonra, ebp iin
	    push/pop ekledim.
12/03/2022
	u5.s'de 'imap' prosedrne aklama ekledim.
	u2.s'de	'anyi' prosedrnde modified regs aklama dzeltmesi.  	    			 		
	u2.s'de 'fclose'da 'iclose' iin inode number koruma dzeltmesi.
	u1.s'de 'syscreat' iinde hata dzeltme. ('syscreat' dosya
		oluturma sistem ars, dosya zaten mevcut ise, 
		dosyay sfrlyor/buduyor. Mevcut dosyann ieriini
		budamak iin arlan 'itrunc_1' prosedr eax'deki
		inode number' deitirdii iin, push/pop gerekiyordu.)
	u2.s'de	'maknod' iinde ve 'anyi' iinde nemli dzeltmeler.
13/03/2022
	u5.s'de 'access' prosedrnde (unix v5-v7 fio.c'deki access'e
		uyan) deiiklik. (User ID ayn ise, group ID dikkate
		alnmaz; nk user ID'ler tekdir. Asl olan user ID.)
	u1.s'de 'sysmkdir' iinde root'a ve parent dir'nin sahibine
		alt dizin oluturma izini veren deiiklik.
		(Parent directory owner' ile current user ayn olmal
		veya current user root/superuser olmal koulu.
		Orijinal unix v5-v7 sub directory oluturma iznini
		sadece superuser'a veriyor. Benim yaptm deiiklik
		st/ana dizin sahibine -effective ve real user id ayn
		olmas artyla- mkdir izini vermekle birlikte, ayrca
		st/ana dizinin salt okunur olmamas gerekiyor.
		Sahibi iin salt okunur olan bir dizin/directory
		iinde alt dizin oluturulamyor.)
	u2.s'de	'isdir' prosedrnde dizin sahibine link/unlink izini
		veren deiiklik yaptm. Yukarda (Bugn biraz nce)
		'sysmkdir' iinde yaptm deiikliin amac ile ayn.
		Kullanc 'sysmkdir' ile yeni dizin oluturduu zaman,
		devamnda '.' ve '..' directory entry'lerini syslink
		ile mevcut dizinlere balayabilecek. Onun izni. Ayrca
		'rmdir' ilemi iin 'sysunlink' kullanlyor; dizin
		sahibi oluturduu dizini -bo ise- silebilecek. Dizin
		sahibi kontrol yaparken hem efektif hem de gerek/reel
		kullanc kimlii/numaras (effective and real used id)
		kontrol ediliyor. Bylece dizinle ilgili link/unlink
		ilemlerini login yapan kullanc dizinin gerek sahibi
		ise yapabiliyor. 
		((Bu ekilde ok kullanc kontrollerinin amac ileride
		Retro UNIX kaynak kodunu gelitirirken ve trev iletim
		sistemi kernel'i yazarken, ok kullancl (multi user,
		multi tasking) iletim sistemi olma kriterlerine uymak,
		gerekten ok kullancyla alan dosya sistemlerini
		ve run time sistemi oluturabilmek, bunun iin unix'ten
		trettiim retro unix kernelinin kaynak kodu temelini
		salam/hazr tutmak.))
	u2.s'de	'anyi' prosedrnde dzeltme. (fsp tablosundaki dosya.)
		'chown' prosedrnde ([i.gid] ile ilgili) dzeltme.
21/03/2022
	u0.s'de	'rdev_init' prosedrnde hard disk masterboot sektr
		ykleyip, runix v2 partition'u bulup, boot sektrn
		adresini gren ve onu kullanarak sperblok'u ykleyen
		deiiklileri (dzeltmeleri) yaptm. Hardisk sperbloku
		kontrol edilmiyor ama masterboot partition tablosunda
		runix v2 partition bulunamaz ise default SB adresinin
		sektr 1 olduu varsaylarak sb ykleniyor. (Burada
		sperblok yanl olursa /etc/init yklenemeyecei iin
		etc/init hatas alnacak. O nedenle ayrca bir kontrol
		eklemedim.) Masterboot yklenirken hata alnrsa veya
		sperblok yklenirken disk okuma hatas alnrsa, bu
		hata yazlarak (bir tua basldktan sonra) reboot
		yaptrlyor. Bugnk aamada kernelin en son hali
		hard diskten etc/init'i ykletip altrabiliyor ama
		multiuser modunda etc/init (init8 dosyas) aamasn
		geerken taklyor. /tmp/umtp'ye yazmayan init7'yi
		/etc/init olarak kullanrsam shell'e kadar geliyor
		ve shell de doru alyor. Ama dosyaya/dizine yazan
		mkdir gibi program altrnca dosya sistemi bozuluyor
		(rnein bin dizinini bozuluyor). /etc/init /tmp/utmp'ye
		yzacak ekilde ekilde seilirse (init8) /tmp/utmp'ye
		snr d (inode saysn geen) inode numaras veriyor.
		Single user modunda taklma olmadan shell'e geiyor
		ve oradan login altrlrsa, doru alyor.
		Dosyaya veya dizine yazan komut kullanlrsa, dosya
		sistemine hasar veriyor. 	
	ux.s'de	Masterboot buff header ve buff (data) yeri oluturdum.

26/03/2022
	u5.s'de 'tloop' prosedrnde dzeltme (dnte deeri deien
		edx'in -level numarasnn- push, pop ile korunmas).
  		'imap' prosedrnde ufak dzeltme/iyiletirme.
	u2.s'de	'anyi' prosedr sonunda iyiletirme (kod ksaltma).

12/04/2022
	u5.s'de 'free' prosedr iinde dzeltme/bugfix.
		(ebx sperblok buffer adresini gsteriyor iken,
		'dskrd' sonrasnda free blocks map sektrnn/blokunun 
		buffer data adresini gsteriyordu; ebx deimemi gibi
		ilem yaplyordu ve dolaysyla 'free' ilemi
		sperblok'un free blok says alann bozuyordu.
		Push ve pop kullanarak ebx'in tekrar sperblok buffer
		adresini gstermesini saladm. 'alloc prosedrnde
		ebx korunuyorken 'free' iinde korumay unutmutum.)
		Bu dzeltme 'itrunc' prosedrn de dzeltmi oluyor.
18/04/2022
	u1.s'de 'sysopen' iinde dzeltme (fsp'de yeni kayot alnca
		open count = 1 oluyortdu, = 0 olarak dzettim. Open count
		sadece sysfork tarafndan -child proesesler iin-
		artrlyor.) Bylece 'rmdir' iin 'anyi' iindeki
		(ve ayrca 'fclose' iindeki) yanl dallanmay nledim.
		(('rmdir' kaynak kodu iindeki 'unlink' ilemlerinden
		sonra free inodes, free blocks deerlerinin yanl kma
		sebebini aratrrken -'anyi' doru almyordu-
		dizin silerken doru alan v1.1 ile yanl alan
		v1.2 arasndaki 'sysopen' farknn 'open count' deeri
		olduunu anladm ve 'open count' ile ilgili 'jns'
		koullu dallanmasnn, open count deerinin 1 deil,
		0 olmas durumunda doru olacan grdm
		ve ona gre dzelttim.))

 	*******************************************************************
	-- Retro UNIX 386 v1.2, Kernel v0.2.2.0 burada tamamlanm oldu. --
	-- bundan sonraki dzeltme/deiiklikler Kernel V0.2.2.1 olacak. --
	*******************************************************************