NedoOS: SMAN Alone Coder By summer 2007 Fido actually died─ lo. I went online and was invited to IRC channel #mhm to discuss the concept operating system. Having releasedInfo Guide #10, I closed all the old projects under TR-DOS (the last one was MCX viewer - ancestor Nedoosovsky NedoView).5 June was created virtual character SMAN and his website http://smansite.narod.ru. Off on the site─ preliminary notes on the core were given SOS, text editor SWORD, graphic─ to whom editor spaint.June-October SMAN came up with style conventions (as far as was possible inALASM), wrote structures─ new macros for ALASM,first procedures kernel, text editorSWORD,digital music editor under the axis (then the idea this editor was discarded). We discussed interprocess with mhm people interaction, sockets, librariesncurses and X11, selected literature (Lions' Com─ mentary on UNIX v6, "Modern operations" on systems" Tanenbaum, description Amiga OS ), but it turned out that I was programming I'm the only one. Although initially SMAN was conceived as a collective pseudonym. Assuming─ It was said that he lived in Tula, his nameSergeyManokhin,he wanted to get into the groupMAYhEM, but they didn’t accept him there :) In 2007-2008 I also corresponded with ZET-9about modificationDNA OSunder "hiddenness" resident within 128K/1M (I refused there─ from the continuous virtual numbering of the country─ prostrate himself in each program and proceeded to order page numbers), withVitaminabout memory and sheduling, as well as with Budder,fk0, Screw and others who theoretically could help with the development of the axis, but, unfortunately, didn't help. All this happened in secret so that no one would guess that there is no SMAN does not exist. Even if the doga─ given, about the development of the operating system knew only a narrow circle of people. Everything is outside looked as ifAlone Coderjustdecreased activity. By 2008 the SMAN core was implemented─ vana preemptive multitasking, priori─ thetas, critical sections, fixie messages─ fixed length, subscription to interrupts, to 256-byte blocks were planned at the kernel level─ ki memory, pipes and vfs (but never was a data format was invented for it). For virtual─ implementation of programs under the future axis July 5 2007ZX Spectrum emulatorwas written on the ZX Spectrum.After studying all sorts encodings and keyboard layouts are still in development Cabret 2007 layout was invented DOORDERS - on which in Russian mode you can type any character (first she got into ACEdit, and from there to NedoOS ). Was napi─ san text storage and processing module for editorSWORD - it was based on 256- byte blocks with shift encoding byte block. In 2009 year I wrote a demoThe Link - experiments with real multitasking (two processorsZ80 - the second inNeoGS). debugged in the new versionUnreal Speccy - I transferred this project to Deathsoft. Dema was released in the source code from the auto assembly─ com mkace. Each effect could be debugged both separately and as part of a deme. There was a glo─ ball interrupt handler with global timer, but without a global script. All the effects were written in the same “game style” cycle". Subsequently, based on these sources─ I released a few more demos, but already without the second Z80.But the operating room project the system was going downhill. I was spinning like this and so it turned out that the selection of the lower memory in 256-byte blocks is absolutely not─ usable for a programmer, just like swap lower dynamic memory. Required namely hardware switching of all parts memory, and at least four. Memory─ There are three texts left for this reasoning─ staSMAN total length 60 kilobytes. Latest changes to the kernelSMANdate─ are on September 212010year (with small changes in2015). This core is off─ was blown onzx-pk.ru,but did not cause a nickname─ who is enthusiastic. Essentially it was genderless─ it's clear I didn’t even bother writing a system for him─ many challenges. There was an error when designing editor SWORD - in the internal format─ mate of the document were not supported in any way─ Extended links, no embedded images. In addition, the data structure "rope" looks like things are more promising than those scrolling 256- byte segments that slowed down the lines─ but depending on the length of the text. And it was not clear how when switching to a new OS, continue to develop─ a bot of her programs inALASM.I began to study bookJohn R. Levine"Linkers & Loaders"and think further. Since2009I have been working on other projects─ Tom - the engineWolf48,which was supposed to replace the engineBig L,which in its own right it replaced the engine Wolfenstein 2004.B In March 2011 the first release was released with using the engine Wolf48 -Critical Error demo from HPRG. It was clear that on 48K there is not enough memory for a full-fledged game, the odds are─ mat 128K dead and only periodically gal─ vanized without any new technology─ giy, and ATM-Turbohas everything you need and for this game, and for others that I planned ( Super Mario, color Black Crow, Worms ...), and for multitasking OS. Moreover, largegames should be made under OS - at least so that you don't have to write your own file system in each doy. In 2011-2012 I participated in the development Evo SDK together with Shiru. I was responsible for sprite output and support ATM2. This system─ The topic is the fruit of much thought after graduation Ball Quest. I wanted to have an arbitrary one number of sprites (not size dis─ labels) and more 32K continuous code under logic. It was also planned to switch to poya─ video controller released in 2009Eva V9990 (developed by Ronin/NedoPC, all the materials are on my website), so all sprites were laid out the same time─ measure - 16x16. This also allowed us to avoid writing an animation editor or script cutting sprites - spritesjust filming─ are frombmpfrom left to right, top to bottom. Evo SDKwas quite simple to learn knowledge of novice game makers, but he had the trouble is that it almost did not expand. The maximum is that I was later able to add it to the TR-DOS version - support TurboSound FM, work with disk by#3d13,reading and writing bytes in pages memory and copying pieces of the screen. Not even managed to organize the launch of one programs from another due to limitations built-in assemblerSDCC,which also incompatible between different computer versions─ lator. (Now we are withHippimanfor a long time─ developedEvo SDKunderNedoOS,and in this version now you can add any functions with usingSjASMPlus .) We were unable to convince the authorSymbOS port your system toSpectrum.Poe─ So I began to think through a deployment plan axis (under the influencearticlesZET-9about"Shmat─ ritsu", which then ended up in Info Guide #11 ): - first debug model: keyboard -> border; - second debug model: keyboard -> text screen; - third debug model: shell. I also started writing technical specifications for the system (pos─ The latest version is dated2016). It looks a little outdated now, but for its time it was simply revolutionary─ but: ─────────────────────────── ─────────────── The task size should be limited only the amount of memory. In existing multitasking axes on the ZX task size is limited to one page upper memory. Number of simultaneously running tasks up to─ should be limited only by the amount of memory. In existing ZX axes, the number of entries is ─ specific tasks are limited to the selected window for residents in lower memory. The axis must work on bare ATM2 and support ATM3. Existing ZX axes do not support ATM3. The axis must implement multitasking─ ness in the following types (simultaneously): + cooperative by events + quanta of 1/50 s + switching focus with buttons The existing axes on the ZX cannot do all 3 point at the same time. The axis should not provide windows for programs, and terminals (screen context and keyboard─ ry). Each program can work in in your screen mode. It should be possible to implement pro─ GUI grams that will provide window interface to other programs, but─ designed for it, preferably with the option wedge into the focus switching chain buttons (so that there are no 3 levels to switch) changes: magic for switching TR-DOS and TAP tasks, buttons for switching terminals, buttons for switching windows in the terminal GUI). The existing axes on the ZX do not allow ra─ bother everyoneprogram in your screen mode. The axis must have a development environment (od─ simultaneously): + cross-assembler with assembly on media with one button (the first thing to do) + shellscript + native macro assembler is more powerful than Alasm + cross-si (non-commercial) with assembly to the media with one button + native C with assembler support (the quality of the code is not important, you can make it from C Warp) + native text editor is more powerful ACEdit (you can start with a simple notepad) + native graphic editor (for you can start with simple paint) The existing axes on the ZX do not have the same─ completely native and cross-environmentdevelopment. The axis must support the following con─ media figurations (optional, must be all supported): + Nemo HDD / CompactFlash as main media and SD card as additional (ZX Evo baseconf, Pentagon 2.666) + SD card as the main storage device and SD- card on NeoGS as an additional one (ZX Evo baseconf + NeoGS, Pentagon 2.666 + NeoGS) + ATM2 HDD/CompactFlash (master) as OS─ new media and CompactFlash (slave) as additional (ATM2) Existing ZX axes do not support SD card. The axis must support hot shifting additional media. Existing ZX axes do not support hot change anything other than a floppy disk. The axis must support FAT32 as a base─ private file system. Existing ZX axes do not support FAT32. The axis must be able to run TR-DOS software in the following ways (for you─ boron, all must be supported): + via vTRDOS, if available (ATM2) + via Evo DOS (ZX Evo baseconf) + via ramdisk / emulator VG93 in osta special cases (ATM2, Pentagon 2.666) The axis must be able to run TAP software in the following ways (optional all should be supported): + by replacing ROM 48 Basic (ATM2, Pentagon 2.666) + via Evo DOS (ZX Evo baseconf) Moreover, launching TR-DOS and TAP with the switch─ tion/return that can be implemented following─ in the following ways (any of): - plugin for magic (ZX Evo baseconf?) - resident for reset (ATM2, Pentagon 2.666) - system hibernation, loading in the wake─ next time in the same state (the simplest option for starters, also possible for used─ current computers) In any case, while TR-DOS and are running TAP software used system memory is saved to the main storage device. In any case, it should be possible cold boot atholding the button. Existing ZX axes do not support launching TR-DOS software with return. The axis must emulate CP/M (like mini─ Mum launch games) in multitasking mode─ me, if at all possible. Existing on the ZX axis, except the one itself CP/M, cannot run CP/M tasks. The axis must support the following keys─ viatures (optional, must be supported all): + 40-key + ATM2 XT keyboard + ZX Evo Applications should see them as the same keyboard, with obtaining co─ input, press and release events. Existing ZX axes do not support all three keyboards. The user must receive the axis in the following─ the following form (simultaneously): + list of goodies + style user documentation "do 1, do 2" + image under the configured emulator + set of files for copying to SD card─ mouth (*.$c main) or HDD (+ disk image─ you to run) + set of files for copying to SD card─ mouth, fdisk+format for HDD and SD copier-> HDD with autorun installation + developer documentation in "how to" style write the first software" + customized environments for cross-development with examples + developer documentation in "by─ style full call list withall parameters" + developer documentation in "how to" style it loads and works" When first started, the axis should itself─ triple under the equipment or report in what is the problem. When first started, the axis should enter commander (universal copier-launcher─ Calculator-viewer, extensible through to─ adding extension launchers in text file). The user should receive the following convenience from using the axis (simultaneously─ but): + a full-fledged copier-launcher, it same as universal viewer + simultaneous work in several pro─ grams with severalfiles + native work on FAT32 + hot media change + launch TR-DOS and TAP software from the switch─ rendition/return + extended keyboard support + native graphic editor for color to point + native text editor is more powerful ACEdit + body files + native macro assembler is more powerful than Alasm with body files + native C is more convenient than C Warp, with batch files + customized environments for cross-development + one execution environment, no need to be clever with a loader and initializing the program with taking into account glitches of different ROMs + no need to write a driver─ media faiths, file system rakes─ keyboard themes and pollers + the ability to write is really a pain─ Our programs (including large games) + convenient to do logging when debugging (a logging of memory switching and system calls─ the system itself can perform many functions) + possibility of joint development (about─ General development environment, general templates, module─ nost) + live authors of the axis, all the surprises of the center─ documented + in the future the ability to fumble on─ active directories over the network (RS232 or ZXNetUSB), and in the background + in the future the ability to create a web browser + in the future the possibility of hardware memory and device protection possibility of quickly altering trdos re─ lizov under the axis (hardly tool)? for this you must be able to turn the screen on #4000 and set an interrupt hook for the task in focus when switching terminals you need to GL─ sew/repair AY/TS?/TFM?? (where store its state?) or redo hands so that the music is separate stream and was not interrupted when switching terminals why is the graphic not shown in any axis? form, how programs are connected (drivers, gui, kernal+residents, etc.)? how to separate vfs from the kernel? vfs in the library─ library, and links to connected libraries doesn't fall off when fork-exec? or make the initial loading different mechanism? (snapshot or from channel) ──────────────────── ────────────────────── In 2013 year I studiedCP/MandMSX-DOS, source archive MicroART, actively spoiling─ created programs forATM2 (essentially stuffed hand), wrote SDK "Unreal Project" - after─ my daily hope is forALASM,which is not op─ I was happy. In 2014 I switched from ALASM to cross-compilerSjASMPlus,because it can be used in batch assembly with ku─ whose operations.ALASMcan be used for assembly only the code that is compiled─ the shaft itself or loaded ascode block. ALASM cannot compile two independent─ simulating a project with one command - we can’t─ we can, for example, compile at the same time Russian and English versionsBGE. Studied the language and system Oberon. History Oberon is convinced that he should write a serious story operating system with development environment It’s possible for one or two people in just a couple of years. Then I started writing a graphic editor─ tora gfxed (former spaint, which exists─ Voval only in the form of text fantasies SMAN,and the design was taken from that sa─ my unwritten multicolor edit─ tora 1997). Finally in this editor the limitation was conceptually overcome picture size on one screen. For comparison─ opinion, the maximum that I could add toBGE - an image the size of two screens... In 2015 I studied andothers simple languages:C--, PLM, K65,did not forget aboutForte with Lisp. I dug information on Wikipedia about a variety of programming languages. Izu─ started UNIX Haters Handbook.StudiedPQ-DOS, written for Profi. In 2016 I realized how to make a resident for "hidden"CP/M. For some reason, before this in all versions CP/M it was impossible to remove his code from the top ok─ on the address space! September 14 on─ started writing the language NedoLang. Before the first one─ compilation NedoLang reached March 31 2017 year, on April 12 the first gift was released, write─ sledding in it, and in September it was already full─ valuable system NedoLang with libraries, utilities and two targets (the second -ARM Thumb ). Now there was a real opportunity compile the same sources on PC, and on ZX. In2018I also wrote another language - scripting language Listh,a cross between Lisp and Forth.I wanted to make a very small in─ terminator so you can put it in into any program, even a demo or game. For example, I attached a 3D engine to it. It turned out that it was impossible to work in this system─ nice. It was not possible to make memory protection, there was not enough text editor, and the inter─ the praetor takes up not so little. Yes, and not it works so fast, but acceleration is required─ There would be a rewrite of the entire system. Maybe maybe I'll come back to this script language...
Share your thoughts about the article