xhAf3Mf3 Ape3Td3=!d3 !"!d3#$%&'()*APc3V!a3A0a3WA0a3X a3YZ[\"a3] d3^_lm0d3`abcdeAPqa3f{Ra3gA@a3h!qa3uA ~a3iA a3jA0f3k!c3!c3xB3wB3xB3yB3z{|}~B3tB3lB3N3N3N3PN3\N3\N3N3lzV3...RELNOTESbindev usretchomeroot VERSION 0.0.59 NOTES -------------------- (crunch) The sound you just heard was ELKS' memory requirements (not code size) being scrunched. Without init, you can now run sash and small utilities like 'cat' in 256K of memory, and a whole lotta sashes in 384K. (Note that that may go up 32-48K in .60 though, if I implement kernel stacks outside of DS) What I did was put the setup.S stuff and the 2-sector buffer for doshd lower in the first 64K, and open up about 48K below the kernel loading area. I also implemented shared code segments, and a VERY crude version of chmem. (found in elkscmd/chmem. It's really really terse though :) Also, it turned out that the kernel was functional with 1K kernel stacks, so I was able to shrink that down and set the process limit to 16. I also put in L Saku's memmove patch (thanks for the quick response!) - there are still a few speed opts I'd like to get in, but I wanted to get 0.0.59 out quickly (especially after trying to get outside kernel stacks working, which turned futile.) Also, thanks to James Wells for pruning the directory tree... VERSION 0.0.58 NOTES -------------------- What a release... there are so many changes I don't think I can remember them all! The kernel is a lot more stressed now BTW (more processes, more memory use, etc) so there may be more crashes. However, for the same tasks I think .58 is more stable because of a couple of major bug fixes. VC support now mostly works - some MDA support added but there's a screen garbage problem right now, so it's not too useful. The init/login sources that Alastair Riddoch (sp - it's late :) have been changed to use all three virtual consoles! (Yes, you can now have 3 logins on an XT :) Also, I've banged on the doshd and fs code to make hard disks and larger (in terms of files) partitions usable. (I don't like the inode.c hack though) I've fixed the mount code to make it work for now, although I'm going to reorganize the code in the libraries and remove the mount type from it. The timer is no longer set to 100 times/sec, because I suspect that might have been causing some floppy timing problems on some systems (no confirmation though, and it can be turned back on) I've also 'covered up' all of the error messages unless it's hit MAX_RETRYS. In arch/i86/kernel/system.h, replaced hard coded 640K with a check in the setup block. Whoops! wait4 can only have three parameters, and we only use status anyway :) --- This is pretty much the feature set I intend for 0.01, with a couple of more features added. There's a lot of fine-tuning left to be done before then, since it's now a bit more ambitious than before (r.e. more features :) VERSION 0.0.57a (internal) NOTES 4/22/97 12:10AM -------------------------------- Ayeee... I did a lot of hacking tonight :) I worked on the tty layer some more (still not done, but we now handle output too), and in the process of debugging things found a 'better' way to do the queue stuff (instead of having a head and tail, we now have head and length. This was *much* easier to implement :) Combined with some other cuts, .57a is pretty close to .57 in size, which is nice. My worry right now is about how much the queue stuff will affect performance on an XT - I think I can counter it, but then I'll be worried about how much space the changes will take (I can't win!) I've fine-tuned sash to use less stack and memory, so it should be much more stable now. Added CAD stuff to keyboard.c, but untested on virtue of it being 12:30AM last night :) (.58 note: I don't think it works, but you can try the /bin/reboot program out!) VERSION 0.0.57 NOTES -------------------- Started work on the tty driver - backspace actually works now! I haven't done anything with the arrow stuff yet, since I need to figure out the best way to deal with them (the keyboard driver already converts it to VT52 escape sequences - I suspect handling those is readline's job) There's a lot of work left to be done on the driver though, and the output interface hasn't even been touched yet! (Interestingly enough the rewrite actually made things a few hundred bytes smaller - a non-strace kernel is ~63,900 bytes now, although that'll grow when ntty.c is fleshed out more.) I also hacked up sash a bit more - the crashes involving vfork were caused by using the system() library call which uses vfork() which dosen't exist (I tried to implement it, but couldn't get it right darnit!) I also found a whopper bug in the minix/namei.c stuff... name comparisons weren't being handled right (comparing R to RELNOTES matched for instance) I fixed this with a 2-line hack to namecompare (assuming that the files can't match if the name of the file on-disk isn't null-terminated at the same place the other name is :) VERSION 0.0.56 NOTES -------------------- Lotsa bug fixes, but there are still a lot more to be done. Fixed sash 'bug' in cp which made it overrun it's stack (it allocated 8,192 bytes - okay in regular Linux but not here :) Implemented stack checking (relative to current bss) whenever a syscall is made. Shouldn't slow things down *too* much, since it's a very short routine. If the stack grows too long, sys_exit is called immediately to kill the process. stat() now sets the file size properly (it didn't copy it over) (TODO : Change the stat+inode stuff to match to save code space) ls in sash now prints sizes properly. Wrote a six-line implementation of sys_rename. It probably doesn't do it the right way, but we don't have space to write another big function or two... :) So, I decided to just call sys_link and if that works sys_unlink the old file. sys_vfork has been mapped to do_fork. I don't think this works right. (If the parameters are long enough, sash chooses to do vfork!) VERSION 0.0.55 NOTES -------------------- The drivers directory has been rolled into the arch/ directory, and I've started work on paring down the kernel to run under DOS (it'll be released when it's done :) I've made some tweaks to the keyboard driver, which makes it a bit more like a real tty (although backspaces still aren't handled right) sash is now the default shell... I've mostly gotten it to work (added a few fflush-es & stuff) Hopefully we can use this to figure out everything else that's borken :) VERSION 0.0.54 NOTES -------------------- The fmemcpy routine is now in assembler, and makes the entire kernel *MUCH* faster on my test IBM XT! fork is now much faster, and '/bin/cat RELNOTES' is much faster and more even now. I worked on mkdir() some - it's not finished but it won't cause a panic anymore :) I added a print_regs() function which safely prints out all current registers (except ss), so we can check what the registers are just before we have a failure. VERSION 0.0.53(.1) NOTES ------------------------ I've put together a usable version of sys_brk() so malloc in libc will now work correctly. As a result the POSIX-style readdir() routines now work. minish (not uptodate with what Stephan has done) has been changed to work with the `new' libc readdir functions.nopqrstv.. I also fixed the doshd.c bug, and ELKS now works on 360K disks again. (I suspect the bug predates bug reports though)... instead of going to the next track/head it was going back one sector, which was bad. If you don't know already, this release is meant to install over/into Dev86 0.0.11, so if you haven't gotten it already *get it now!!!* To get everything working you have to unpack Dev86, then unpack elks, build the (slightly-modified) Dev86, and then build the kernel with it. This is done so that you don't have to manually change dev86, and it dosen't really change anything except the libc/syscall directory and the rules.86 file. (minish unpacks into the tests/ directory, along with a new makefile) Optimization is turned off, since there appears to be something else wrong with it. VERSION 0.0.52copt1 NOTES ------------------------- This is identical to 0.0.52, except that the makefiles are changed to use bccopt. The kernel is 1300 bytes smaller, and should be faster as well as a lot of the instructions optimized out are redundant. A new rootdisk image is provided so that you can check out the effects of the optimization. Special thanks to Gero who rewrote/fixed the copt optimizer to make it work effectively with bcc! VERSION 0.0.52 NOTES -------------------- (Note: the kernel looks for /bin/sh rather than /sbin/init!) I have a very simplistic group of readdir functions in here... they're not finely-tuned, but they work with the minish which is included. They're not POSIX-compliant either, and I'll probably work on a different interface (don't expect open/closedir in 0.0.53) for future versions. do_exec() now corrects the pre-built stack so parameters are passed correctly (minish can now call programs with parameters...) I tried to do execve, but I didn't get it to work right before my patience ran out, and it added 3-400 bytes to the code anyway :) I also tweaked a couple of things in the fs/* - sb->s_flags is now 16-bit, and I did a little bit of tightening in fs/inode.c... the next thing will be to exorcise inode.c's hash tables. Special thanks to Christoph for the new memcpy_*fs routines, and Stephan for the enhanced version of minish.c which I worked on for Linux/8086 0.0.52. Finally, don't forget to copy the files in linux.86/patches/libc.syscall to your libc's syscall directory, and rebuild your libc again... be ready to do it for 0.0.53 too :) VERSION 0.0.51 NOTES -------------------- This version includes the first version of minish, the "World's Smallest Shell" It executes what you tell it to do, and that's about all it can do... basically it's to test the ability of fork/exec/wait/exit at this point, and it took a while to get the kernel to do *that* right... I had to implement sys_exit() and sys_wait4() (barely), and I'm not sure I got exit right, and I really don't have wait4 right at all (it only remembers 1 exited process!) Also, in the next kernel series (0.1.x or 0.2.x), I'm considering rewriting some parts in assembler, which would replace the C versions if they exist... the kernel is now about 65,050 bytes, which is Way Too Big if we want to put things like signals in here... VERSION 0.0.50 NOTES -------------------- File writes (at least sequential ones) now work! There are still a couple of bugs that I don't like (file permissions aren't set right, etc), but writing now seems to work correctly (after fixing quite a few bugs) The bitmap code is quite different now, mostly because I thought it was buggy because of another problem (I wish bcc checked types going into functions...) There are still quite a few bugs to fix, but hopefully the file write feature will be useful... I changed the code on the rootdisk to read /sbin/ txtfile and write it to /newfile. This appears to work okay except the file permissions are wrong, and it will perpetually be unchecked afterwards (those were 'minor' bugs to me, compared to how many there were before :) VERSION pre-0.0.50 (not released) NOTES --------------------------------------- I've been working on the file write code (which was completely borken before). I had to write the find_first_zero routine, which I'm not even totally sure works right, but looks okay. To get this far, I had to overcome what appeared to be compounding bugs... I've fixed enough bugs so that it *looks* from the kernel standpoint that everything's okay. There were quite a few bugs - I'll see if I can't make a diff so I can list them all! Right now the directory code still looks broken. At this point I'd like to say 'thank goodness for dosemu and disk images!' - if it weren't for those I'd probably have had a much tougher time getting this far. BTW, make clean the kernel after changing the strace option. process.c does not recompile for some reason after changing it. Should fix that for 0.0.50... VERSION 0.0.49a NOTES --------------------- (This pretty much does what I said I'd do for 0.0.50, but something tells me that I haven't done enough to bump up the version number... doshd now reads/writes from 0x0800:0x0...ptcat&sh reboot initloginbasenamedirnamefalsepwdtruewhoamiyesmkdir mkfifo!mknod"mv#rm$rmdir%syncsash  x 0.0.9UWVLLvv%S1F,FF7FF7vSF@FF;F|DD^_]Éyكy ؃1UVWQut9s񑓒VyqhR1ɉ9rw@9wDDFF=~FuvSrSn^_]]^CC^^1Pv@v} vJDD6^^Ftvv|@Fvvzu} vJDDFHF@=^_]UWVFHFË^v=DDFF=~FuvSrSn^_]2^^Ftvv?F1Pv^CC^7=FHF@=^_]UWVFHF^CC^^FHF^CC^_^b^UF~ ^<-uwSrSomf^_]Ë^CC^_^FHFgSrSCmf^_],tt^C^uF~^<-ueF=tBSrSl^_]1Pv^w^7.t} 5SHDD^_]UWV^w1tDD} ^wHDD^_]UWVĮS^ws}^wHDDf^_]ÍS^ws}^wnHDDf^_]Ë;u;uSkDDf^_]ËEtSkDDf^_]1P^wrFF}^wGDDf^_]1P^wrFF}^wGDDvrDDf^_]11ۉF^ptPSv7rFF}^wGDDPSv rFF}^wWGDDFuFuSjDDF;F}SjDDF;F~SjDDvvSS1quFӍ~JDF^H^荞^ Fv^fD^C^vFvD:Gtvv}Sjv9qDDv1qDDf^_]UWVĦ^CC^^{S1PPvfFFuv8FDDZ^_]vqSiF1FsF:1FIF@F1F;F@ @F/F~FHFF@F-t-t-t-tZ;^rZSv`ZCZFG0F=P|FFF@FF=}F~*Z;^rZS P`ZCZ G0hShDDZSbDDpuPP^S1PoFtvvgDDZ^_]ÊF0FF=:uF0FF vJgDD1F%v;gDDf^_]-Nt-t-t-t1FFFtv`DDF=tsFtvfDDFHF@=~Z^_]UWV1PdpDD^_]UWV^wSamfSS.m^wSmSZDDf^_]UWV!^F=u'^CC^wbSRg^u^_]Ë^wlDDFb^7lDD;FvK^FÊ<=u;v^7^wmu#F@P^FDDS^Sf^_]Ë^CC^^u^_]UWVF='1PnDDFvnDDvXSf^_]1F^_^^C^FGF^<0r ^<7vԋ^u F%tGSrSf^_]vlnDD^_]UWVF^_<-t^_C^CSvku F?Svku F:Sv~kuFp5Sveku FW1F ^C^FGF^<0r ^<9v΋^t%SrSe^_]ËFHF^CC^~^CC^^1F ^C^FGF^<0r ^<9v΋^tSrS4e^_]vvl} ^7*ADDFHF@=~r^_]UWV1F1F11ۉF^11ۉF܉^޸FF^^CC^^=Pv)jFFu? SrSdf^_]Ë^C^0G^^7viu^^^uڋ^G'Ft! SrS.df^_]Ë^^#Ft SrS df^_]Ë^^v{DDFF SrScf^_]vODDF^11ۍ~<=~ SrScf^_]vDDF^11ۍ~=~ SrSocf^_]kvDDF܉^11ۍ~<~ SrSDD;^tvGDDf^_]øPvIFF}+v->DDvhDD;^uvGDDf^_]ËF܋^;u1PF虉Ӎ~;SPvj}oDvvvjhFF}v=DD/Fu> SrSaF܋vލ^;VP11SPߋߍ:F^X;t-1PF虉Ӎ~#;SPvoi}v>=DDF왉Ӎ~:F؉^ڋ^҉^pt1 SrS`|KvvvgFF}v SDF$0FF= }ZS^P@F@FF=uZS^P@?FZSv@FHF@~yZS; SLDF@FHPDD^^pu F;F^_]UWVF=| @;F} SrSH1^_]ËFP+DDFFu SrSH1^_]vv^SN^FGF;~^#vnDDFFuv%.DD1^_]Ë^v7^v_\^_v7^vw@vDD^_]UWVF=|F;F;F~ SrSG1^_]vDDFFu 1^_]á;F|6;F.F;} F@PrDDF=~ FHP^DD1F+F@F;F~ +F+FG^^^_^^v7^vw^1^1G^1Gv,DD^^FHF@^_]UWVF=|F;F;F~ SrSF1^_]Ë^u$u SrSF1^_]û^;^t vSKvKDDFvhDDFFu 1^_]/1PvvvR| F^_]ËF@F^^F;F~v SrS!F1^_]UWVF=| F;~vl SrSE1^_]áF;u ^_]Ë^F;F~^F;F} ^F^^F@FF;F|^_^FHFF;FF^_]UWVLLvDDFFu1DD^_]ËF^DD^_]UWV1F1FFHF^CC^^<-u\FHF^CC^_^8^'F)F!/SrSDf^_] ,it,tߋ^C^u^CC^_^FHFF=~00F^CC^_^-S1PPv@FFu v6 DD11ۉF^ptvBDDf^_]ËFv^SHDDHÁ߉^^< tvSrSCvvSt:Ft vS$CFtvvS CZSSr>v PS=tF^G %tvWDDvADDFHF@~f^_]UWVvHDDFFuJ^0Pv{HFFu 1 ^_]vvv-Iu  ^_]Ë^C^붋^0F^􊇬$t^􊇬$tF4 FF^C^^tG^0;Ft;^0Ê$tы^0Ê$t ^4 ^0;Fu^u 1 ^_]Ë^^^^^u  ^_]Ë^C^G0F^򊇬$t^򊇬$tF4 FF^C^G0F^$t^$tF4 FFF;Fuv^C^ ^_]UWVu.P$DD  uSrSJAf^_]ø11FF=^_<-uxFHF^CC^C^X^C^G>F FBF F8F F.^G0PSrS@f^_],dt,t,tҋ^uF= F@^F=~F FX^CC^^^tv^EDDHFÊ@vzHDDFt v8HDDXSP66 .1FzF Ë^SvZF}vDDv1$DD?/PvDFFt ^C^^^vSvCv#DDF@FF;}z1FHF@=~ZS7DDf^_]UWV^^0F$t!^wzSv=vBDDFFF$u^w DDPvBvBDDFF^wuSvB=vyBDDFFt ^_;tJ^wDDFFt^7S}B^wrSS<^_SlSv<vADDFFt ^_ ;tJ^w )DDFFt^7SB^w iSSk<^_ ScSvJ<vADDFF^G%=`t^G%= u#^G 0P^G 0PYSv;^wwSSv;vADDFF^ww; PKSv;ZSS6ZSv6F$tQ^G%=uCPSvCӉF^11ۍ~-F0SDS;ZS P2f^_]UWVߋF=}9SrSP;f^_]1F11F1F11111$11ۉF^11ۣ F^_^t^LF^FVNFSrS:f^_]û SrS:f^_],at,t,t,t,t,tϋ^C^^uFuSrSX:f^_]ËF=}SrS;:f^_]Ë^_^F=tSrS:f^_]1Pv@FF}vDDf^_]11SPF^\uu$unWF왉Ӎ~SPFÁSvU@FF}vDDNFu FӍ~F^F왉Ӎ~߉^pt&t| 6@DDv?DDf^_]átz11SPF^t$t1ۍ~{~SrS8vDD^^1SPF^F^mFFFӿ!~FvvF%tF%P+DDFFFFFFSPF^GF^Tv>DDf^_]UWV^^^u8F^C^Gt^_]ËFHFFݸ$^_]øP^dSӃFP^lSӃFP^tSӃF P^|SpӃF^ P^ÈSVӃF^P^ÔS<ӃFF|F|F| 11ۍ~~"uzSrS7^_]11^<t ^<1u00F^<t ^<2u00Fv;DDHFÊDD^_]ËF%=@uvvh^_]øPvT11SPF^~lu00䣘F^vv"}vDD^_]11SPF^~fu6F;DD^_]UWVLLFSP~S11ۿ |uuDD^_]Gvv6:FF}$(SDD6:DDDD^_]ËF+FFF11ۿQ |6:DDt (SDDDD^_]UWVĘv^S8/P^S9FR^^/P^CS8F^0FtFP^S:u^SS2^/Fuh^_]UWV^C^FHFF~ ^< tFt^<0r ^<7vڃ^_]11ۉF^I^C^G01SP1ۍ~ ~ SP01SPF^~ F^FHFF~^<0r ^<7v^C^FHFF~ ^< tF~^tڃ^_]ËF^ڃ^_]UWVSS<7F%=@udF%= ucF%=`ubF%=upF%=ulF%trF$twF$@txF$ trF$twF$txF$trF$twF$txF%tF$@tsSF%tF$tsSF%tF$ttT^_]UWV^S7DD^SBDDF^S|S50F^~ |3SPF^~| ~ ~^SS50|^_]UWV^Sv{7} 1^_]ËF%=@u00^_]UWVİ^Sv?7}v DD1P^_]Í^Sv7} FFF;Fu"F;FuvSrS/1P^_]1Pv[6FF}v DD1P^_]vvFF}vu DDv!6DD1P^_]øPDDFiptv5DDv5DD1P^_]Ë^^:vvv5FF}v DDFFFF+FFFPvvz5F~}F}v DDvvj5DDvb5DD}v DD1P^_]ËFt@vv5vvv5F^F^F^F^^Sv5P^_]v4DDv4DD1P^_]UWVLLFt ^u FDD^_]ø/Pv3FFt^C^vS 3SS2vS2DD^_]UWV/Pv33FFt ^C^^^*Pv2F?Pv2F[Pv2FFuFuFu 1f^_]ËFt^;^rFt^;^rFt ^;^sSrS,f^_]ð. 0 ^;^t:F+FPv S2F+FH0 u / 0 S5DDFFu SDDf^_]Í Sf1DDF^;^u 1F0 /FHÊ ^C^G0FF^^^^ 1F9F=\u^C^G0FFu 1f^_]Ë^0;FuF^C^G0F=]uFu^^^C^^^C^Gu 1f^_]^C^G0FFu 1f^_]Ë^0;Fu^t^C^H^t^^^C^^-1f^_]"-*u-us-u-u}뚋Fu 1^_]Ë^t^t^_]UWVvSr.1F^vF=d|nSrS)1^_]ËF@FHËv^C^^t^< t ^< u ^C^0G^< t^< t^u^1^F^7^_]UWVLLk^7m-DDFF;F |TSrSU(1DD^_]Ë^CC^wvy-FFFF +FF Ft ^C^ GF HF FHF@^0DD^_]UWVLLF=}FF@@P DDFFu1DD^_]Ë^67^^@@DD^_]UWVLL^^v4 DDuDD^_]yكy ؃1UVWQut9s񑓒VyqhR1ɉ9rw@9w^5^,^#!-|=w.````````F=}):PvR'FFuW^C^0GF@FF=}X P^Sv}Ӄ^t P^SvXӃ^t ^_]UWVFu(1^_]1PlS'F} 1^_]$v^7`&uv'DDF^_]vuDDFuv'DD1^_]UWV1PxSv'F} 1^_]^_;^uvX'DDF^_]vDDFuv7'DD1^_]UWV1FFv63F+FPFPv&F 1 ^_]ø P6%FFtcPFFP^@+FDDSPv(Ӄ^0<#t< t< t < uF$FFFFv6q;:P6$ƅuF0D6:PV$ƅuF0Dv:PV$ƅuF0D P^SvӃ^t1Fvt 6DDPDD30FFË~?vF@FF@P6,PV $ƅu^uF1 FË~?F@1 ^_]UWVFu(1^_]1PS$F} 1^_]$v^7L#uv$DDF^_]vmDDFuv$DD1^_]UWV1PSb$F} 1^_]^_;^uvD$DDF^_]vDDFuv#$DD1^_]UWV1LLFu1DD^_]ËFFFFetl&6_;Fu @@DD^_]V DDuӋw1PDDP;^fu|;tu1\S_DDvDDƅtLLF00HFvDDƅt \SDD\LLFFFF9vDDƅt#F;Fv1F F+FF\S@DDFFF=vFuDDvDDƅu ^_]DD@@DD^_]UWVu^S^FGDD^_]Ëv>9vu;}r!9u ]\u^_];usH]\u;\u\\_\9u \]>^_]G9sC;}r>;us9]\u>;\u;|u6\\_\^_]É>};>t0^_]UWVu1^_]Ëw>;Fr t;>u;Fs1^_]ËF@@;v\];6u1^_]ËFÉ]>}+F\]F;6u>^_]UWV~u^_]OO1PPDDƋ9u<1+SvDD6i;u!t>_볃Bu;>v ]>(LL^6vtt9wu^DD^_]UWVLL1PDDFF$tF$P*FDDPDDFu1DD^_]ËF=v (1DD^_]ËFFFFFPMDDƃu1DD^_]ËF@@DD^_]UWVFuvDD^_]Ë^_K^F;Fw F^_]vDDFFu 1^_]vvvvXDDF^_]UWVvAPvJ^_]UWV|=| (^_]ûjFt'v1G@1^_]UWVLLHF1(^㋷^wvփFHFF}DD^_]UWVLLv1FLL1FF< wu<-u FF<+uFFD0PFFDDF<0r<9vՋFt1+FF^_]UWV1F11ۍ~~F@FF^#F^vvv)FFtFt ^K^-F^_]UWVLLF=$F=}1DD^_]þbN0FSPF^~FFSPF^~OF^F= ~FWPNFDDF0PNFDDF^iuDD^_]UWV^$tF4 F^_]UWV^$tF4 F^_]UWVv~ ^^LFFFFFFFFËS^FDDF7FËFDDFS^S^F|FHFvFS׃F7FËFDDF@FF;F}vFS׃~ۋF7FËFDDF;F}yFS^S^FF+FPF+F;Ff}WFHPvVF@FWvF@PVFHFF;F~ ^_]UWVv~ ^^FFFFFFFFË_SP^VFvw^Fw7FVFvw^FS^_SP^VFvw^FHFvFS׃Fw7FVFvw^F@FF;F}vFS׃~ًFw7FVFvw^F;F}UFS^_SP^VFvw^F+FPF+F;Ff}WFHPvV`F@FWvF@PVGFHFF;F~I ^_]UWVv~ ,^FFFFFF^ É^,;^tv v6,F ^;^tv F ^Sv_F ^;,tv 6,F ^S1,^FHFvF ^{S׃ߋF ^dSF ^V;^ft%v F ^>SF ^0SF@FF;F}vF ^S׃~׋F ^SF ^;^ft%v F ^SF ^SIF;F}F ^;^tv vF ^SF+FPF+F;Ff}Wv FHPvV F@FWv vF@PV FHFF;F~^_]UWVĀ,uF=~f^_]Í|,F=uv FHP1PvO5F=uv FHP1Pvv vFHP1Pvb |;,u1,f^_]UWVLLj^LLF}00FFt1+FF^0F D0P^K^FDDF FFuҋFt ^K^-F^_]UWV^^^C^^0Ê$u1F^<-uFvvv,ӃF^Ft F^F^ڃ^_]UWVF=tF=$F}1F^C^^0Ê$u^<-u ^C^g^<+u ^C^UFuN^<0uE^G0Ê$t ^G4 ^GS6p|S<S}1^_]á|x~t^_]UWV|S6pZ} 1^_]á|F~FF;xu!F;tu:S6p!p^_]6pDD;lv"(1^_]û6S6puu 1^_]vv ^_]UWVF|S6p} 1 ^_]ËF;|tF6pCDDFFpHF^@Y@P!SQtӋCC[PwtDDjUWVv ^Sv}^_] F^^_]^_]UWV1P1PvPK^_]UWVލ^Sv} 1"^_]ËF%=@t(1"^_]1PvF܅} 1"^_]øPDDFڋFڅuSDDvDD1"^_]ø PDD^ډG^ڋGuv~DDvDD1"^_]Ë^ڋF܉^1G^ډGFڃ"^_]UWVLL^^^w0DDv(DDv8DDDD^_]UWVLLP^w^7;FF1DD^_]ËF=~^_F0G ^GDD^_]UWV1FLL1FLL1FLL1F^^ F@F^7DD@FF^CC^Ft^tF}ɋ^^ F@F^7DD@FF^CC^Ft^tF}ɋFPFFDD@@FFF|F|F (f^_]Í^F@@F@Á^썞^^CC^FG^^OLLF+FP^CC^GDD^7DD@^7vFFDD^CC^Ft ^u^CC^1G^^OLLF+FP^CC^GDD^7XDD@^7vVFFDD^CC^Ft ^u^CC^1GvSvf^_]UWV6!vv^_]UWVLL^^F1PDDF^ No memory for prompt No memory for alias name No memory for alias table No memory for alias value Cannot alias "alias" aliasAlias "%s" is not defined %s %s %s %-10s %s %s: no such file or directory killedcore dumpedpid %d: %s (signal %d) fork failed%s: no such file or directory Too many arguments usage: %s %s Reading command linerToo many source files .aliasrc/HOMEPATH=/bin:/usr/bin:/etcStand-alone shell (version %s) nameunaliasfilenameumount[mask]umaskfilename ...touch[xtv]f devname filename ...tarsyncfilenamesourcename valuesetenvdirname ...rmdirfilename ...rmquitpwdstringprompt[name]printenvsrcname ... destnamemv[-t type] devname dirnamemountfilename ...morefilename type major minormknoddirname ...mkdir[-lid] filename ...ls[-s] srcname ... destnameln[-sig] pid ...killhelp[-in] word filename ...grepexitfilename [args]exec[filename]ed[args] ...echoif=name of=name [bs=n] [count=n] [skip=n] [seek=n]ddsrcname ... destnamecpfilename1 filename2cmpuid filename ...chownmode filename ...chmodgid filename ...chgrp[dirname]cd[name [command]]alias1.0Non-numeric pid Unknown signal KILLQUITINTHUPBad umask value %03o %s %s =--More--<< %s >> rFiles differ at byte position %ld Second file is shorter than first First file is shorter than second Files are identical Files are different sizes Files are links to each other mount failedWrong number of arguments for mount Unknown option Missing file system type minix%s: not a directory %s: not a directory Wrong number of arguments for symbolic link Unknown option -s%s: not a directory Unknown group name Bad gid value Unknown user name Bad uid value Mode must be octal Bad minor number Bad major number Bad device type cbNo HOME environment variable HOME%s Cannot get current directory f c ` Z U P %d+%d records out %d+%d records in Interrupted End of file while skipping Cannot allocate buffer No output file specified No input file specified Unknown dd parameter Bad skip value Bad seek value Bad count value Bad block size value Multiple output files illegal Multiple input files illegal Bad dd argument skipseekcountbsofifLine number %d does not exist Cannot find string "%s" No previous search string Bad line numbers for search Bad line numbers for delete Failed to allocate memory for line Inserting at bad line number $ M-Bad line range for print %d lines, %d chars "%s", Bad line range for write (incomplete)%d lines%s, %d chars No memory for buffer INTERRUPTED, "%s", Bad line for read No memory for buffer Bad mark name Line too long No substitutions found for "%s" Cannot get memory for line No previous search string Unknown option for substitute Missing 2nd delimiter for substitute Bad delimiter for substitute Bad line range for substitute Unimplemented command %d No arguments allowed No file name specified Bad write command No filename Bad read command Really quit? Bad quit command Bad mark name No memory for filename No filename "%s" Bad file command Command line too long : No memory %d: %s: %s: Line too long rUnknown option  -> %s %-12s %8ld %3d, %3d %-8s %d%-8s %d%3d %5d No memory for filenames No memory for ls buffer / %s: Unknown option -%c No memory for ls buffer .-lsDirectory "%s" created x %s (symlink to "%s") (link to "%s")%s%s %3d/%-d %9d %s %sAbsolute paths detected, removing leading slashes Bad tar header, skipping Short block for header Exactly one of 'x' or 't' must be specified Missing input name The 'f' flag must be specified Unknown tar flag Writing is not supported Too few arguments for tar Argument string too long Too many arguments No matches No memory for filename Too many filename matches ...Wildcards only implemented for last filename component /Copying file "%s" to itself ----------!Unknown error /usr/lib/liberror.txt perror: : /etc/passwd/etc/passwd/etc/group/etc/group6i AAAAAAAAAA BBBBBB DDDDDD //..//. !  " No memory available... :( /bin/sh/PATHSunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDecErr Err .. ..:..:.. .... __no_op__ZP_saf__auto_s__startumain trybuiltodo_aliascommand~do_sourcp prompthdo_unali findalia runcmdintcrlfaliascoulintflagpcatchint[ do_exec do_helpsourcefitcatchqui readfilesourcecoaliastabversiondo_promp showprom$ cmdtabdo_rmdo_mvOdo_lnDdo_cdv do_cp{do_mknod do_mkdir do_killUdo_more|do_umaskdo_pwd& do_printdo_mountdo_rmdirdo_touchdo_umoundo_cmp4do_chgrpdo_chowndo_echo do_chmoddo_exitdo_setendo_syncdo_ddgetnumc#paramsdo_ed$curnumgetnum`1curlinefindline<addlines0readline4printlin@8writelin7bufptrdocomman.%linessubcomma+filenamebufbasedeleteli:searchli;initedit3termedit74setcurnu=searchstinsertli9findstri/marksbufuseddirtybufsizelastnumdo_grep=search?__.4C__.4D__.4E__.4Fdo_ls`AlsfileD__.51__.50listusedlistsizelist eof$outname(dblockwarnedroextractidatacccreatepa7OinheaderdoheaderJgetoctalOverbosedodatamNbadheadeoutfddo_tarlGbadwrite__.B0__.B1__.2E|__.1expandwi2UchunklismakeargsYbuildnamTisadirRgetchunkZfreechun9[copyfileR__.54modestriPtimestri RmakestriZZmatchXnamesortX__zdivu1[__b16__loop2_[__loop1_[__loop2_[__loop1[__loop2[__ldivmoh[__zbminu\__got_si[__negq8\__negr\__b0__divzer[__divlar[__ludivm[__zdivu[__return\__set_asw[__idiv_D\__idiv_uH\__imodP\__imul_X\__imul_uX\__laddul\\__laddl\\__LCMP_Br\__LCMP_Eq\__LCMP_Nj\__lcmpld\__lcmpuld\__LDEC_B|\__ldecult\__ldeclt\__ldivl\__ldivul\__LINC_H\__lincul\__lincl\__lmodl\__lmodul\__lmulul\__lmull\__lnegl\__lnegul\__lsubul\__lsubl\__LTST_N\__LTST_F\__ltstl\__ltstul\errno(_end!__brk_ad,__sbrk_o]__go_dow!]__Enomem,]__has_ch]__eof5]sbrk\__brk_okT]__EnomemJ]brk8]__.1__sys_ne2__sys_er0strerrord]perror^__.2__.1__getpwel_getpwnamagetpwuidb__.3__getgrexbgetgrnamdgetgrgid(echunk_limalloce__searchg__insertf__mini_m6i__allocafreeh__freed_reallocicreat@jatexit\j__do_exij__on_exi__on_exiatoikultostrkbuf@ltostrktoupperltolowerl__ctypeqsort:r_qbuf,_wqsortl_lqsort=n_nqsortp__.1ditoarstrtolPsstrtoulsgetenvluputenvupath_sizlpath_bufproot_inotroot_devxsearch_dVxgetcwdLwst|recurserw__IO_lis@stdoutZbufout__io_inizstdinB__auto_fstderrr__stdio_ybufin fputc@zfgetc{fflush{fgets8}fputs}freadP~__fopenPfclose`printfhsprintffprintf؂vfprintf?prtfldstrlen؇strcatstrcpy__sc_1F__sc_2R__sc_3Vstrcmp8__got_its__in_loohstrchr\strrchrxstrdupmemcpy__is_z)memchr __xit+memcmp0__xitL__sys_cal__sys_cag__sys_ca]__sys_caP__syscalz__exit|forkreadwriteopenclosewait4__syscalƉlinkЉunlink؉__execvechdirtimemknodchmodchown__brkstat__lseek __syscalGmount(umountPutimeXaccess`synchkillprenamexmkdirrmdir__signalioctllstatsymlinkreadlinkumaskgettimeoreaddir_Ȋ__auto_r__call_m environ!exit__no_cle __no_ent__cleanu__mkargvڊ__bad_ex__call_e__cstartЊ__loop_s_exitlseekwaitLopendirhclosedirDreaddirtexecveȌexecv__execvvexecvptryrun~system_stsignal__sigtab!isatty__.1!ctimehitd__asctim~__tm_con__mon_le8...ttytty2tty3 ... lib . .. liberror.txt1 Operation not permitted 2 No such file or directory 3 No such process 4 Interrupted system call 5 I/O error 6 No such device or address 7 Arg list too long 8 Exec format error 9 Bad file number 10 No child processes 11 Try again 12 Out of memory 13 Permission denied 14 Bad address 15 Block device required 16 Device or resource busy 17 File exists 18 Cross-device link 19 No such device 20 Not a directory 21 Is a directory 22 Invalid argument 23 File table overflow 24 Too many open files 25 Not a typewriter 26 Text file busy 27 File too large 28 No space left on device 29 Illegal seek 30 Read-only file system 31 Too many links 32 Broken pipe 33 Math argument out of domain of func 34 Math result not representable 35 Resource deadlock would occur 36 File name too long 37 No record locks available 38 Function not implemented 39 Directory not empty 40 Too many symbolic links encountered 41 Operation would block 42 No message of desired type 43 Identifier removed 44 Channel number out of range 45 Level 2 not synchronized 46 Level 3 halted 47 Level 3 reset 48 Link number out of range 49 Protocol driver not attached 50 No CSI structure available 51 Level 2 halted 52 Invalid exchange 53 Invalid request descriptor 54 Exchange full 55 No anode 56 Invalid request code 57 Invalid slot 58 File locking deadlock error 59 Bad font file format 60 Device not a stream 61 No data available 62 Timer expired 63 Out of streams resources 64 Machine is not on the network 65 Package not installed 66 Object is remote 67 Link has been severed 68 Advertise error 69 Srmount error 70 Communication error on send 71 Protocol error 72 Multihop attempted 73 RFS specific error 74 Not a data message 75 Value too large for defined data type 76 Name not unique on network 77 File descriptor in bad state 78 Remote address changed 79 Can not access a needed shared library 80 Accessing a corrupted shared library 81 .lib section in a.out corrupted 82 Attempting to link in too many shared libraries 83 Cannot exec a shared library directly 84 Illegal byte sequence 85 Interrupted system call should be restarted 86 Streams pipe error 87 Too many users 88 Socket operation on non-socket 89 Destination address required 90 Message too long 91 Protocol wrong type for socket 92 Protocol not available 93 Protocol not supported 94 Socket type not supported 95 Operation not supported on transport endpoint 96 Protocol family not supported 97 Address family not supported by protocol 98 Address already in use 99 Cannot assign requested address 100 Network is down 101 Network is unreachable 102 Network dropped connection because of reset 103 Software caused connection abort 104 Connection reset by peer 105 No buffer space available 106 Transport endpoint is already connected 107 Transport endpoint is not connected 108 Cannot send after transport endpoint shutdown 109 Too many references: cannot splice 110 Connection timed out 111 Connection refused 112 Host is down 113 No route to host 114 Operation already in progress 115 Operation now in progress 116 Stale NFS file handle 117 Structure needs cleaning 118 Not a XENIX named type file 119 No XENIX semaphores available 120 Is a named type file 121 Remote I/O error   m0.0.11UWVL#PPPE^_]WO_O__̀}أ $7Y@PSQtӋCC[PwtDD __no_op__ZP_saf__auto_s__startumain errno __sys_caH__sys_caC__sys_ca9__sys_ca,__syscalV__exitXsync`rebooth__auto_r__call_menvironexit__no_cle__no_ent__cleanu__mkargvz__bad_ex__call_e__cstartp__loop_s_exit  0T 0.0.11UWVLL1F)^F;G u FDD^_]ËF@FF=|ϸDD^_]UWV5Ft!^FG F^_]ËF|F=|1P DDPDDP^SF}V1PvPvv=S-^_]UWV1Fvv<F@FF=|P4SoF1PvPvjSmDD1PDDFvDDF^1G vvƃ^_]UWVL|L=| H^_]ûFt'LvLà1GL@L1^_]UWVLLLHFL1(^㋷^àwvփFHFF}DD^_]UWVLLjSnDDSeDDP^%vTDD^w -DD^G ^_^FuDD^_]UWVP$DDtv vLSDD^_]UWVFu}RSDDt ^_]ûjSDDt ^_]ûSDDt ^_]ËP^vDDt ^_]Ë^_^Fu1^_]Ë^G $t]^v+GFFtFv^w^w FF=uH=t؋F;Ft^G G ^_];^G $@t/^vD+FF~P1+FP^w K}^G %?G ^v_v\v\1^_]ÉW1I_WVwO^_WO_O__̀}أHWWO_̀_|أH z-6jY@PSQtӋCC[PwtDDRUWVv ^Sv}^_] F^^_]^_]UWV1P1PvP+^_]UWV1FLL1FLL1FLL1F^^ F@F^7WDD@FF^CC^Ft^tF}ɋ^^ F@F^7DD@FF^CC^Ft^tF}ɋFPFFDD@@FFF|F|F Hf^_]Í^F@@F@Á^썞^^CC^FG^^OLLF+FP^CC^GDD^7PDD@^7vVFFDD^CC^Ft ^u^CC^1G^^OLLF+FP^CC^GDD^7DD@^7vFFDD^CC^Ft ^u^CC^1GvSv8f^_]UWV6vv^_]UWVءHFԍ^  d `y 0.0.11UWVP!SP ^SDDtT^SDDFtD^w^wS ^w DD^w DD^w DDvS ^_]1]e%Ë؃+]UWVP SvF F 1 ^_]ø P S FFt*P^v S@+FDDSPv ӃP Sv F 1 ^_]ø P SU FtʸPFSP SF+FDDӍ~6SP1SPF^~SPv Ӄ <#t < t < t < u^0 ^1FF?^W^N^^F^^>^5^,^#!-|=w.F(F=}):PvNFFuW^C^0GF@FF=}X P^Sv-Ӄ^t P^SvӃ^t ^_]UWVFu,1^_]1P0S F} 1^_]$v^7\uvDDF^_]vuDDFuvDD1^_]UWV<|<=| ,^_]û Ft'<v < 1G<@<1^_]UWVLL<HF<1 (^㋷ ^ wvփFHFF}DD^_]UWV^@$tF4 F^_]UWV^@$tF4 F^_]UWV^^^C^^0Ê@$u1F^<-uFvvv,ӃF^Ft F^F^ڃ^_]UWVF=tF=$F}1F^C^^0Ê@$u^<-u ^C^g^<+u ^C^UFuN^<0uE^G0Ê@$t ^G4 ^G519K files are not yet supported, since I was too lazy to write the code)i There are probably a few bad bugs left, and a few kludges to fix (e.g. the one I just put into the console driver which treats '\n' like '\n\r'...) , and a keyboard driver to add before we can even consider bumping this up to 0.1.0 though... but this version is a step in that direction. VERSION pre-0.0.48 NOTES ------------------------ This version features a new two-tier buffer cache design, which I was able to graft onto the existing one. Basically, what I've done is set up a 64K segment in which we can stick in 64 buffers (the L2 cache). When we need to access their data, we map them into the L1 cache for a while. After it's done, unmap_buffer() is called, allowing the buffer to be unmapped. The actual unmapping is only done in map_buffer so that a buffer can be 'remapped' with no performance penalty. (Also, buffers are automagically mapped when lock_buffer() is called, making any modifiation to the block devices unnecessary.) This is a 'first cut' at the new design. It somehow worked on the first sucessful compile (even though I forgot to reserve space for the buffers, which implies no swapping to L2 was ever done...) but there are probably bugs in here somewhere... I've just tested it on loading and running 'hello, world!' which works... finally, there are many unmap_buffer calls followed by brelse, which can be optimized by making them one function in some cases. The reason why this is pre-0.0.48 is that I'm not sure if this is the right way to go, and I would like feedback on it. New test programs for /sbin/init would be nice too... VERSION 0.0.47 NOTES -------------------- The attack on fs bloat continues, with some functions rearranged and all Minix V2 fs support dropped. The code size has been knocked down another 500 bytes from 0.0.46, and it still runs hello world... The number of buffers has been bumped up to 16. Now the kernel's really stuffed with herring :) Seriously, I think it might be a good idea to break the buffers out into their own ds, but that won't be in this version... I also reorganized the comment structure for exec.c into the new one, although I didn't do anything else yet. VERSION 0.0.46 NOTES -------------------- The root disk is now set to the second floppy drive. Not too much has changed, except for the setup and disk driver code's floppy detection. The buffer cache haroot::0:root test::1:test1,test2 s been modified to bring down the total code size by 600 bytes compared to pre-0.0.45a by changing the way the flags are handled. This is lightly tested, but it can still start /sbin/init, and it still has most of the same bugs anyway :) (There were three different pre-0.0.45 releases - the final one is 0.0.46 to avoid confusion - Chad) If your floppy drive is other than 3.5" 1.44MB, you will have to change the constants in drivers/block/doshd.c (search for "hardcode")   @0.0.11UWVv~V.DDÉ^W!DDÉ^ N^PN^:Fft^_];vs;~r;vs^0^_]UWVLL/PvFt^C^DD^_]UWVLLvDDHFFNF0F~ FFÀ?/tDD^_]UWVLL~t~uV^wDD^woDDF~u^wvv(DDPvPP SPDD^_]ÉW1I_Vw_18tu^ÍD^UWV1~FuWDDÉ^_]GvWDžu^_]ÉWO_O__̀}أY@PSQtӋCC[PwtDD#   0.0.11UWVLLvDDHFFNF0F~ FFÀ?/tDD^_]UWVLL~t^wDD/P^wFu^_.^_0G#N^^v;wv^?/t^0G^w.DDP^wPP SPDD^_]W1I_Vw_18tu^ÍD^UWV1~FuWDDÉ^_]GvWDžu^_]ÉWO_O__̀}أY@PSQtӋCC[PwtDDJ   Q0.0.11UWVPjDD^_]WO_O__̀}أ Y@PSQtӋCC[PwtDD {  0H0.0.11UWVĚdP^S^SDDFP^SPnPSP\l^_]yكy ؃1UVWQut9s񑓒VyqhR1ɉ9rw@9w_볃Bu;>v ]>(LL^6vtt9wu^DD^_]UWVLL1PDDFF$tF$P*FDDPDDFu1DD^_]ËF=v 1DD^_]ËFFFFFPuDDƃu1DD^_]ËF@@DD^_]UWV | =| ^_]ûx|Ft' v à1G @ 1^_]UWVLL HF 1|(^㋷^àwvփFHFF}DD^_]UWV1F11ۍ~Q~F@FF^gF^vvv)FFtFt ^K^-F^_]UWVLLF=$F=}1DD^_]þN0FSPF^~FFSPF^~F^F= ~FWPNFDDF0PNFDDF^uDD^_]UWV^FF=} "1^_]û.S6; $S,S }1^_]á$ &^_]UWV$S6 } 1^_]á$F&FF; u!F;u*S6 ^_]6m DD;v"1^_]û&S6d uu 1^_]vv ^_]UWVF$S6 } 1 ^_]ËF;$tF6DDFFHF^^5^,^#!-|=w.F=}):PvbFFuW^C^0GF@FF=}X P^SvaӃ^t P^Sv<Ӄ^t ^_]UWV1PS*F} 1^_]^_;^uv DDF^_]vDDFuvDD1^_]UWV^ $tF4 F^_]UWV^ $tF4 F^_]UWV^^^C^^0Ê $u1F^<-uFvvv,ӃF^Ft F^F^ڃ^_]UWVF=tF=$F}1F^C^^0Ê $u^<-u ^C^g^<+u ^C^UFuN^<0uE^G0Ê $t ^G4 ^Gl"tkF0 FPF FP^wtIP=SP^wJDDP^wPP;SPxPDD~up^_?pue1PF P^wMtIP"SP/^wDDP^wPP SPP=DDP SP1P!DD^_]]e%Ë؃UWV^p$tF4 F^_]UWV^p$tF4 F^_]UWV^^^C^^0Êp$u1F^<-uFvvv,ӃF^Ft F^SF^ڃ^_]UWVF=tF=$F}1F^C^^0Êp$u^<-u ^C^g^<+u ^C^UFuN^<0uE^G0Êp$t ^G4 ^GtӋ>CC[Pw<tDD8mv: usage error. mv: could not rename   ,00.0.11UWVLL/PvFt^C^DD^_]UWV1FLL1FދFF@FFFË?-t{^SFF78uaFF7DDtLPSPFF7CDDPFF7PP SPFF;F}f(^_]W1I_Vw_18tu^ÍD^UWV1~FuWDDÉ^_]GvWDžu^_]ÉWO_O__̀}أ$ 9Y@P,SQ*tӋ*CC[Pw(tDD8 rm: could not remove   LT0.0.11UWVFLL"N^;^v^?/t^0G1FvKDDFu/PvFtFuFt Ft00^_]UWV1FLL1F^_?-u^_puF1PDD%LF@FFFË?-u*FF7DDHPFFËFDD0FF7DDHPFFËFDDÀ?/tvFF7tQP#SP%FF7kDDPFF7PP!SPFP SPPDDFF;F}vDD^_]W1I_Vw_18tu^ÍD^UWV1~FuWDDÉ^_]GvWDžu^_]ÉWO_O__̀}أD(<Y@PPSQJtӋJCC[PwHtDDrmdir: usage error. rmdir: cannot remove directory   Y0.0.11UWV@1PpDD^_]ÉWO_O__̀}أ $Y@PSQtӋCC[PwtDD   _l XP0.0.11UWV6S|H^SADDh SPaY SPSYSQ;DDu nS;DDiS;;DDFFtPvSMgSSM^SSM1PSOtD=t SDD1PDD1PPDDf^_]UWV= |GSvSHf^_]ûF^Ft-ES1PPvhDFFuv$DDf^_]á@HËvx^w (YDDF^S@DD tt%FuF;^tvFDDHf^_]vPSAu%^G %tD=u^G %G mnS8LDDFFHÊ< uFHFFHFF~ FHÊ< tFHÊ< tҋF0SVDD^G %t0S#DDF;^u PNDD^G %G F;^tvEDDHf^_]UWV1t^C^^< t^< t^t^S^Svuf^_]Ë^7HDDFFt_^^wvIK .SvK^CC^7vKFHFՍ^S^Svuf^_]vv$tf^_]vvvf^_]UWV&^^ ^^u 1f^_]Ë^7^7Juы^F;G| ^F;G~#^w^7 SvS&Ef^_]Ë^;wt ^ ;wu ^Svv f^_]Ë^ F1F"SPFF7FF} f^_]ËFF=| SvSDf^_]ËFuFFËF@FHƋ 1F&FËF@FHƋ" F@FF;F|ҋF@F;F}E^S Sv f^_]UWV1Fvrf^_]ÍSvCSvClt 6l$DD^lf^_]UWVLLa^CC^7`DDFFuF^7#DD^w#DDpHppËvpËv_\FHFDD^_]UWVLL^ltl^vBDDPvPEDDD^_]UWVh SP NttPSP D^_]UWV SPMttPSPC^_]UWVLLF.Fu^S P41F^S^CC^78FHF@=Ż^S PK4DD^_]UWVPS91uSvS<f^_]ÍSS-<^S5DDf^_]UWVLLF=~ ^_^'S.DDFFu}SvSR<DD^_]v'CDD}vWDDDD^_]UWV'P^wC} ^w+DD^CC^FHF@=^_]UWVDC^_]UWVFHFË^v DDFF=~FuvhSvS;^_]^CC^^1PvB} vDDj^^FtvvMFvvB|FtvQ6DDZ^_]ÊF0FF=:uF0FF v%6DD1F%v6DDf^_]-Nt-t-t-t1FFFtv/DDF=tsFtv5DDFHF@=~Z^_]UWV1P>DD^_]UWVu.PDDuQSvS6f^_]ø11FF=^_<-uxFHF^CC^C^X^C^G>F FBF F8F F.^G0P=SvS\6f^_],dt,t,tҋ^uF= F^F=~F FX^CC^^^tv:DDHFÊ4DDv64DD}v DD1P^_]ËFt@vv[4vvvT4F^F^F^F^^Sv4P^_]v3DDv3DD1P^_]UWVLLFt ^u FDD^_]ø/Pv2FFt^C^vS2SS1vS1DD^_]UWV/Pv+2FFt ^C^^^*Pv1F?Pv1F[Pv1FFuFuFu 1f^_]ËFt^;^rFt^;^rFt ^;^sSvS+f^_]ð.0^;^t:F+FPvS1F+FH0u /0S3DDFFuSDDf^_]ÍS^0DDF^;^u 1F0/FHÊ^C^G0FF^^^^ 1F9F=\u^C^G0FFu 1f^_]Ë^0;FuF^C^G0F=]uFu^^^C^^^C^Gu 1f^_]^C^G0FFu 1f^_]Ë^0;Fu^t^C^H^t^^^C^^-1f^_]"-*u-us-u-u}뚋Fu 1^_]Ë^t^t^_]UWVvSj-1F^vF=|SvS(1^_]ËF@FHËv ^C^^t^< t ^< u ^C^0G^< t^< t^u^1 ^F^ 7^_]UWVLLk^7e,DDFF;F |pSvSM'1DD^_]Ë^CC^wvq,FFFF +FF Ft ^C^ GF HF FHF@^0DD^_]UWVLLF=}FF@@P| DDFFu1DD^_]Ë^67^^@@DD^_]UWVLL^^v, DDuDD^_]yكy ؃1UVWQut9s񑓒VyqhR1ɉ9rw@9w^<5^>,^@#!-|=w.&(''''''(F=}):PvJ&FFuW^C^0GF@FF=}X P^SvuӃ:^t P^SvPӃ8^t4 ^_]UWV1PS&F} 1^_]^_;^uv&DDF^_]vDDFuv&DD1^_]UWV1FFv6F+FPFPv4&F 1 ^_]ø P6 %FFtcPFFP^@+FDDSPv<'Ӄ^0<#t< t< t < uF$FFFFv6;D:P6e$ƅuF0D6F:PVD$ƅuF0Dv:PV$$ƅuF0D P^SvkӃH^t1Fvt 6DDPDD30FFË~?vF@FF@P6,PV#ƅu^uF1 FË~?F@1JD ^_]UWV1PS>$F} 1^_]^_;^uv $DDF^_]vDDFuv#DD1^_]UWV1LLFu1DD^_]ËFFFF+tl&6_;Fu @@DD^_]V DDuӋw1PDDP;^fu|;tu1\S_DDvDDƅtLLF00HFvDDƅt \SDD\LLFFFF9vDDƅt#F;Fv1F F+FF\S@DDFFF=vFuDDvDDƅu ^_]DD@@DD^_]UWVu^S^FGDD^_]Ëv>9vu;}r!9u ]\u^_];usH]\u;\u\\_\9u \]>^_]G9sC;}r>;us9]\u>;\u;|u6\\_\^_]É>};>t0^_]UWVu1^_]Ëw>;Fr t;>u;Fs1^_]ËF@@;v\];6u1^_]ËFÉ]>}+F\]F;6u>^_]UWV~u^_]OO1PXDDƋ9u<1+S~DDj/;u!t>_볃Bu;>v ]>(LL^6vtt9wu^DD^_]UWVLL1PDDFF$tF$P*FDDPDDFu1DD^_]ËF=v D1DD^_]ËFFFFFPUDDƃu1DD^_]ËF@@DD^_]UWVFuvDD^_]Ë^_K^F;Fw F^_]vDDFFu 1^_]vvvvXDDF^_]UWVvAPv&^_]UWV|=| D^_]û0Ft'vLL1G@1^_]UWVLLHF1(^㋷L^LwvփFHFF}DD^_]UWVLLv1FLL1FF< wu<-u FF<+uFFD0PFFDDF<0r<9vՋFt1+FF^_]UWV1F11ۍ~~F@FF^+F^vvv)FFtFt ^K^-F^_]UWVLLF=$F=}1DD^_]þN0FSPF^~FFSPF^~WF^F= ~FWPNFDDF0PNFDDF^quDD^_]UWV^$tF4 F^_]UWV^$tF4 F^_]UWVv~ ^^LFFFFFFFFËS^FDDF7FËFDDFS^S^F|FHFvFS׃F7FËFDDF@FF;F}vFS׃~ۋF7FËFDDF;F}yFS^S^FF+FPF+F;Ff}WFHPvVF@FWvF@PVFHFF;F~ ^_]UWVv~ ^^FFFFFFFFË_SP^VFvw^Fw7FVFvw^FS^_SP^VFvw^FHFvFS׃Fw7FVFvw^F@FF;F}vFS׃~ًFw7FVFvw^F;F}UFS^_SP^VFvw^F+FPF+F;Ff}WFHPvV`F@FWvF@PVGFHFF;F~I ^_]UWVv~ 0^FFFFFF^ É^0;^tv v60F ^;^tv F ^Sv_F ^;0tv 60F ^S10^FHFvF ^S׃ߋF ^lSF ^^;^ft%v F ^FSF ^8SF@FF;F}vF ^S׃~׋F ^SF ^;^ft%v F ^SF ^SIF;F}F ^;^tv vF ^SF+FPF+F;Ff}Wv FHPvV F@FWv vF@PV FHFF;F~^_]UWVĀ0uF=~f^_]Í|0F=uv FHP1PvO5F=uv FHP1Pvv vFHP1Pvb |;0u10f^_]UWVLL^LLF}00FFt1+FF^0F L0P^K^FDDF %FFuҋFt ^K^-F^_]UWV^^^C^^0Ê$u1F^<-uFvvv,ӃF^Ft F^'F^ڃ^_]UWVF=tF=$F}1F^C^^0Ê$u^<-u ^C^g^<+u ^C^UFuN^<0uE^G0Ê$t ^G4 ^GS6!^_]6DD;v"D1^_]û:S6uu 1^_]vv ^_]UWVFS6u} 1 ^_]ËF;tF6CDDFFHF^DDD1 ^_]UWVLL^S DDvSDDD^%vDD^w DD^G ^_^FuDD^_]UWVP$DDtj j?S#DD^_]UWVLL^_ ^F$@tv}DDt DD^_]ËF% = t DD^_]Ë^v4;wrvGDDt DD^_]Ë^7F7FD^G G F= u F$u F$tvDDt DD^_]ÊF$t^v_\ ^v_\F0DD^_]UWVLL^G $tvDD^G %=t DD^_]Ë^v4;wrf^v_\vv^vD+GPP^7FFu DD^_]Ë^FGG^G @G ^G %G ^7F7D0FFDD^_]UWVFu}FSDDt ^_]û^SDDt ^_]ûvSDDt ^_]ËD^vDDt ^_]Ë^_^Fu1^_]Ë^G $t]^v+GFFtFv^w^w FF=uD=t؋F;Ft^G G ^_];^G $@t/^vD+FF~P1+FP^w }^G %?G ^v_v\v\1^_]UWV^^FF`^v4;wr vDD ^7F7D0FF=u^;^u 1^_]%^C^FGF= uFHFFu^0^G %t 1^_]ËF^_]UWVLL1FQ^v4;wrv^C^G0P6^C^v@Y@PSQtӋCC[PwtDDUWVv ^Sv}^_] F^^_]^_]UWV1P1PvP{^_]UWVލ^Sv} 1"^_]ËF%=@tD1"^_]1PvF܅} 1"^_]øPDDFڋFڅuSDDvDD1"^_]ø PDD^ډG^ڋGuvDDvDD1"^_]Ë^ڋF܉^1G^ډGFڃ"^_]UWVLL^^^wDDv|DDvhDDDD^_]UWVLLP^w^7;FF1DD^_]ËF=~^_F0G ^GDD^_]UWV1FLL1FLL1FLL1F^^ F@F^7'DD@FF^CC^Ft^tF}ɋ^^ F@F^7DD@FF^CC^Ft^tF}ɋFPFFDD@@FFF|F|F Df^_]Í^F@@F@Á^썞^^CC^FG^^OLLF+FP^CC^GDD^7 DD@^7vFFDD^CC^Ft ^u^CC^1G^^OLLF+FP^CC^GDD^7DD@^7vFFDD^CC^Ft ^u^CC^1GvSv0f^_]UWV6vv^_]UWVLL^^F1P)DDF^ No memory for prompt No memory for alias name No memory for alias table No memory for alias value Cannot alias "alias" aliasAlias "%s" is not defined %s %s %s %-10s %s %s: no such file or directory killedcore dumpedpid %d: %s (signal %d) fork failed%s: no such file or directory Too many arguments usage: %s %s Reading command linerToo many source files .aliasrc/HOMEPATH=/bin:/usr/bin:/etcPATHStand-alone shell (version %s) nameunaliasfilenameumountsyncfilenamesourcequitpwdstringpromptsrcname ... destnamemv[-t type] devname dirnamemountfilename ...moredirname ...mkdir[-lid] filename ...lshelpexitfilename [args]exec[args] ...echosrcname ... destnamecp[dirname]cd[name [command]]alias1.0--More--<< %s >> rmount failedWrong number of arguments for mount Unknown option Missing file system type minix%s: not a directory %s: not a directory No HOME environment variable HOME%s Cannot get current directory lj -> %s %-12s %8ld %3d, %3d %-8s %d%-8s %d%3d %5d No memory for filenames No memory for ls buffer / %s: Unknown option -%c No memory for ls buffer .-lsArgument string too long Too many arguments No matches No memory for filename Too many filename matches ...Wildcards only implemented for last filename component /Copying file "%s" to itself ----------XUnknown error /usr/lib/liberror.txt perror: : /etc/passwd/etc/groupj/ AAAAAAAAAA BBBBBB DDDDDD //..//. " No memory available... :( /bin/sh/PATHSunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDecErr Err .. ..:..:.. .... __no_op__ZP_saf__auto_s__startumain trybuilt|do_aliascommanddo_sourc} promptldo_unali findalia, runcmdintcrlfaliascoupintflagtcatchinth do_exec do_helpsourcefixcatchqui readfilesourcecoaliastabversiondo_promp showprom1 cmdtabdo_mv( do_cd do_cpdo_mkdir do_moredo_pwd2 do_mountdo_umoundo_echo do_exitdo_sync __.4C__.4D__.4E__.4Fdo_lslsfiler__.51__.50listusedlistsizelist__.B0__.B1 __.2E__.1expandwinchunklismakeargs buildnamisadirgetchunk&"freechunu"copyfile__.54modestritimestriEmakestri!match[namesortB__zdivu15#__b16__loop2_#__loop1_#__loop2_$#__loop1"__loop2 #__ldivmo"__zbminuZ#__got_si"__negqt#__negrM#__b0__divzer"__divlar"__ludivm"__zdivu4#__returnT#__set_as"__idiv_#__idiv_u#__imod#__imul_#__imul_u#__laddul#__laddl#__LCMP_B#__LCMP_E#__LCMP_N#__lcmpl#__lcmpul#__LDEC_B#__ldecul#__ldecl#__ldivl#__ldivul#__LINC_H#__lincul#__lincl#__lmodl#__lmodul#__lmulul#__lmull#__lnegl$__lnegul$__lsubul$__lsubl$__LTST_N&$__LTST_F,$__ltstl $__ltstul $errnoD_endX__brk_adH__sbrk_oN$__go_dow]$__Enomemh$__has_ch>$__eofq$sbrk0$__brk_ok$__Enomem$brkt$__.1__sys_neN__sys_erLstrerror$perror,&__.24__.1D__getpwe&getpwuid(__.3D__getgre0)getgrgid\+chunk_limalloc+__search(.__insert*-__mini_mj/__allocafree.__freed_realloc/creatt0atexit0__do_exi0__on_exiL__on_exiatoi<1ultostr 2bufltostr1toupper2tolower2__ctypeqsortn8_qbuf0_wqsort2_lqsortq4_nqsortF6__.1itoa9strtol9strtoul9getenv;putenv<path_sizpath_bufroot_inoroot_devsearch_d>getcwd=strecurser=__IO_lisDstdout^bufout__io_iniL@stdinF__auto_fstderrv__stdio_?bufinfputct@fgetcPAfflushBfgetslCfputsDfreadD__fopenEfcloseGprintfHsprintfHfprintf IvfprintfsJprtfld