Systems - NedoOS origins: in 2007 Fido actually died and I switched to the Internet

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