Rev 1380 | Blame | Compare with Previous | Last modification | View Log | Download
NedoOS -- Multitasking operating system for ZX Spectrum=======================================================Features--------* Works with TR-DOS floppies, SD-card, IDE HDD (FAT12/16 or FAT32 withlong filenames support). Device letters:- "E".."H" - IDE HDD (Master),- "I".."L" - IDE HDD (Slave),- "M" - SD-card (Z-controller),- "N" - SD-card (NeoGS),- "O" - USB flash,- "A".."D" - TR-DOS floppies. IDE controller (ATM or Nemo IDE) dependson the batch file you run. Includes support for segmented TR-DOS filesof any size (according to TR-DOS sequential access files standard).* Up to 16 tasks running at the same time. Tasks may be active (one of themhas the focus, so it can read input devices and print on visibleterminal screen) or frozen. Tasks may give away their time slot tothe system using `YIELD`, but don't have to.* NedoOS can open up to 8 files on FAT, up to 8 files on TR-DOS, andup to 8 pipes between tasks at the same time.* User program can access the whole memory between 0x0100..0xffff, any 16Kwindow can be switched via OS calls (see below). File operations andBDOS data transfer can be done at any address in the userspace.* User programs can modify the interrupt handler (for example, to restorestack data) and move the stack pointer.* Gfx editor Scratch, music players NedoPlayer and modplay, text editor texted,disk image mounter dmm, snapshot runner/switcher nmisvc, compiler NedoLang,assembler NedoAsm, basic interpreter NedoBasic, picture viewer NedoView,decompressors for `*.zip`, `*.gz`, `*.rar`, `*.tar` and archivers for `*.rar` and`*.tar`, network utilities (NedoBrowser, dmirc, dmftp, netterm etc.), games...System requirements-------------------* ATM Turbo 2 or ATM3 compatible computer (depends on the main executable)* Kempston mouse with a wheel recommended* SD-card recommended (Z-Controller with shadow ports or NeoGS) orharddrive (NemoIDE or ATM IDE)* DDp's palette scheme (4+4+4) recommended* Real-time clock (Mr.Gluk's schematics) recommended* ZXNETUSB network interface card recommended* General Sound or NeoGS sound card recommended* TurboSound FM sound card recommendedKeyboard shortcuts------------------NedoOS handles keys and mouse events and forwards them to the task thatis in focus. The key combinations Ext+letter (Tab+letter) correspond toASCII control codes 1..26. The Ext+Number key combinations(Tab+Number, CapsShift+SymbolShift+Number) are equivalent to functionkeys F1..F10 on a PS/2 keyboard.Keyboard shortcuts used by the kernel (PS/2 shortcuts are shown in brackets):* Caps Shift (Left Shift) - hold down to stop scrolling on the screen* Symbol Shift + Enter (Right Shift + Enter) - switches visual tasks (thatis, those that called `CMD_SETGFX`), while the task to which they wereswitched receives the `key_redraw` key code (upon learning this, it canredraw the screen)* C+M+D (press simultaneously) - execute `cmd.com` if there are no activetasks. (polled in the idle task, so it works only when there are no activetasks). To spawn a new terminal, use the command `term`.* Caps Shift + 2 (Caps Lock) - switch case* Caps Shift + 1 (Alt + Shift) - switch between keyboard layouts(Russian/English). In the Russian mode (it also supports the Ukrainianlanguage), the ШВЕРТЫ layout is enabled. In this case, you can type someletters by two presses (ja=я, jo=ё, ju=ю, je=є, ji=ї, jy=i, cg=ґ, cc=ц,hh=э, jj=ъ). Because letters "й", "ц", "ш", "э" are used as a prefix ofcombinations, you can input them separately by pressing any other key afterthem that is not included in their combination. The key pressed afterwardis not ignored, but also processed. In the literary text, the combinations"йа", "йо", "йу", "йe", "чч", "хх", "йи", "йы", "йй", "цг" are practicallyexcluded (sometimes in foreign words). To enter such combinations usecursor movement. All punctuation marks available in Latin mode are alsoavailable in Russian. The Russian encoding is CP866 and CP1125 is usedas Ukrainian encoding.* Ext+Enter (Tab+Enter, Caps Shift+Symbol Shift+Enter, use Tab+Right Shift+Enteron incompatible keyboards) - switch on/offthe pseudo-graphic input mode* In case of TR-DOS errors (the red border is shown), the R (Retry), I(Ignore sector), A (Abort) keys work.cmd -- Command interpreter--------------------------It is an interactive prompt (command line) with scrolling to the left andright. Cursor key Up will recall the previous command.Following file types are executed (the first character of the extension ischecked):* .com (the extension can be omitted) - an executable program, a newparallel process is created. Command-line parameters are passed to theprocess to the `COMMANDLINE` address (see the "Programming" section).* .bat is a sequence of commands that `cmd` understands, including starting.com programs (commands are executed sequentially and not concurrently,except when the `start` command is used). Each command is shown on thescreen before it is executed.Programs located in the `bin/` directory of the system disk can be executedin the command line from any directory of any disk (the current directoryhas priority for calling programs before the `bin/` directory). The currentdirectory does not change when programs are executed.The following commands (and their aliases) are supported:* `exit` - quit cmd* `a:` ... `o:` - change the current disk* `dir (ls)` - list the content of the current directory. You can redirectoutput to a file: `dir> filename`* `cd <path>` - change the current directory to <path>. <path> can containa drive name.* `cd ..` - change directory to the parent directory.* `md (mkdir) <path/dirname>` - create a new directory with the specifiedname in the current or the specified path* `del (rm) <path/filename>` - delete a file or an empty directory in thecurrent directory* `copy (cp) <path/filename> <newpath/newfilename>` - copy file* `ren <path/filename> <newpath/newfilename>` - rename or move file* `mem (free)` - print the number of free memory pages* `proc (ps)` - list current processes and their state ("+" or "-" -activity, "g" for graphical tasks)* `drop (kill) <ID>` - terminate the process with the given ID* `date` - print current date and time* `rem` - do nothing (needed for comments in .bat files)* `start <path/filename>` - execute the program in the background (bydefault, the executed program blocks `cmd`)* `copydir <dir1> <dir2>` - recursive copy of the _dir1_ directory with allfiles to the _dir2_ directory. Full paths must be specified, not relative!* `pause` - wait for a keypress (used in `.bat` files)* `echo <message>` - print a message (needed for `.bat` files)* `type <path/filename>` - print file contentYou can also use the complex syntax:dir > filename.txtdir | more.commore < filename.txtThe command-line parameters of the .bat file are available through macros`%0` to `%9` (`%0` contains the filename of the script).The _idle_ system task launches the `term.com` terminal, which createsstdin and stdout pipes and launches the shell to execute `autoexec.bat`.When there is no running process, the _idle_ enters into an infinite loopand it is waiting for C+M+D key combination (see above).When launched, the shell looks at its command line and executes it. If thecommand line is `cmd.com autoexec.bat`, the shell enters interactive modeafter `autoexec.bat` is executed, otherwise exits. You can start anotherindependent terminal with `term` command or a network terminal(`netterm`) accessible via Telnet (TCP/IP port 2323).nv, nvfast -- Nedovigator, dual-pane file manager-------------------------------------------------Keyboard short cuts:* cursor keys (up, down) - navigate through files* Home (Symbol Shift+Q) - jump to the first file* End (Symbol Shift+E) - jump to the last file* Tab (Caps Shift+Symbol Shift) - change the current panel* Space - tag file* Ext+A (Alt+A) - invert tagging* BackSpace (Caps Shift+0) - switch to the parent directory* Enter - launch the file under cursor in the blocking mode (`.com`and `.$c` are launched directly, other types may use the externallaunchers, see below)* Enter - execute command line in the blocking mode, then `nv` will releasethe focus and will wait till the end of the called program or till`OS_HIDEFROMPARENT`in that program. Text output of the finished program canbe displayed with the mouse wheel (in `nv`) or Esc (in `nvfast`).* Caps Shift+Enter or F9 - insert the file name on the command line* 3 - text files viewer- use cursor keys, PageUp (Caps Shift+3), PageDown (Caps Shift+4),- F1 - switch encoding,- Ins - switch line breaks,- Break (Esc, Caps Shift + Space) - exit,- Tab (Caps Shift + Symbol Shift) - switch to hex viewer/editor:- use cursor for moving control, PgUp, PgDn,- input numbers and A-F- Caps Shift+Enter or F2 - save,- Break (Esc, Caps Shift + Space) - exit,- Tab (Caps Shift + Symbol Shift) - go to the normal text viewer* 4 - open the text editor _texted_ to modify the file under the cursor* 5 - copy marked files or the file under the cursor to the opposite panel* 6 - rename the file/directory (do not use "/" and "\" in the name)* 7 - create a directory in the current panel (Esc [CS+Space] - cancel)* 8 - delete tagged files (only empty directories are deleted)* 1 - select a drive in the current panel (cursor, Esc [CS+Space]to cancel, Enter - confirm selection)* 2 - find files (Tab - switch between filename and substring)**Note:** Instead of numbers, you can press F1..F10 on the PS/2 keyboard.* Symbol Shift+1..5 - select sorting mode (by name, extension, size, date, andno sorting). The sorting order is reversed if the same mode is invoked asecond time. The change to a different mode will use the ascending order.* Break (Esc, Caps Shift + Space) - exit (Esc - cancel, Enter - confirm)The remaining keys are used to edit the command line (numbers are notentered when the command line is empty).The text output of the launched program from the command line is saved (butnot a program launched in another terminal). See above, how to display it.The configuration file `nv.ext` describes the association which launcheris used for the given file extension, for example:bmp, scr: scratch.combat: cmd.comtexted -- Text editor---------------------Provide `texted` with the name of the file for editing as the command lineparameter. The file size is only limited by the amount of available freememory.Shortcuts:* cursor keys, PageUp (Caps Shift+3), PageDown (Caps Shift+4) - cursormovement* Home (Symbol Shift+Q) - jump to the beginning of the line* End (Symbol Shift+E) - jump to the end of the line* Symbol Shift+PageUp - jump to the beginning of text* Symbol Shift+PageDown - jump to the end of text* BackSpace (Caps Shift+0) - delete a character before the cursor* Del (Caps Shift + 9) - delete a character to the right of the cursor* Break (Esc, Caps Shift + Space) - exit* Ins (Symbol Shift+W) - wrap on/off* F1 - help* F2 or Caps Shift+Enter - save* F9 - run build.bat in text directory* F10 - change encoding (866/1251)Other keys are used to input the text.basic -- NedoBasic, BASIC interpreter-------------------------------------Files with `*.bas` extension can be called as command line parameter.Data types:* integers (32bit signed), can be used for boolean values (0=false, -1=true).If used as an index for a cycle, they consume more memory,* strings (up to 255 bytes + zero terminator), also used as an array ofunsigned bytes,* one-dimensional arrays of integers (32bit signed).Variable names must consist of only one alphabetical character, for example:* `i` (number),* `a$` (string),* `a(10)` (10th element of the array, counting from 0),* `a$(10)` (10th character of the string, counting from zero).The following operations are used in expressions:* lowest priority: =, <, >, <=, >=, <>* medium priority: +, -* high priority: * and /* highest priority: unary -, expression brackets ()The function `$rnd` generates random numbers in the range 0..65535,at least one space must be used after the function name!Commands (it is possible to join several commands on one line separated by acolon):* `run` - start the program* `list` - view the listing of the program* `quit` - exit NedoBasic* `edit <expression>` - call to edit the line with the specified number* `clear` - clear variables* `new` - erase the program* `let <variable>=<expression>`* `print <expression>; <expression>` - if the last character is a semicolon,then no line feed is printed at the end)* `cls` - clear the screen in black* `goto <expression>` - jump to the specified line number. When thenumber does not exist the program will continue from the next lineafter the used one.* `if <expression> then <command>` - if expression is not false, executecommands to the end of the line* `dim <variable> (<expression>)` - create an array of specified size* `for <variable>=<initial value expression> to <final value expression>step <step expression>` - the beginning of the cycle. Step can be positiveor negative, but not 0.* `rem <text>` - use for text comments* `next <variable>` - the end of for-cycle* `gfx 0` - enable graphic mode 320x200x16 colors* `gfx 6` - enable text mode (when the program exits, it will automaticallyenable text mode back)* `pause` - waiting for the keypress* `plot <x-expr>, <y-expr>, <color-expr>` - draw a point in the graphic mode* `line <x2-expr>, <y2-expr>, <color-expr>` - draw a line in the graphic mode(from the previous point or the end of the previous line)* `save <filename>` - save the program. The filename can contain thepath, for example, "m:/path/file.bas". The filename can be alsoa string variable.* `load <filename>` - load a program. The filename can contain thepath, for example, "m:/path/file.bas". The filename can be also astring variable.* `system <command_line>` - launch a command via `cmd`, it is waiting forcompletion. Also, a string variable can be used.Press Esc (Break, CS+Space) to break the execution of the programor code scrolling.tp -- Turbo Pascal 3.0 by Borland---------------------------------Short cuts are displayed on the screen. Source code can be compiled to thememory or file. English documentation is located in:http://www.retroarchive.org/docs/software/turbodoc.htmlSee examples - `t.pas` ("Hello" in a cycle), `mc.pas` (spreadsheet).cc, cc2, clink, c.ccc, deff.crl, deff2.crl -- BDS C compiler------------------------------------------------------------BDS C compiler was developed by Brain Damage Software. Example:`cc.bat ex` (compile `ex.c`, link and run the code).```#include <stdio.h>main(argc, argv)char **argv;{int i;printf("Hello world!\n");for (i = 1; i < argc; i++) printf("Arg #%d = %s\n",i,argv[i]);getchar();}```Compiler collection examples and usage:* `cc filename.c`* `cc2` - second compilation is invoked automatically* Object files and libraries have the `.crl` extension (deff2.crl isautomatically connected by the linker). Examples of libraries are`deff2a.csm`, `deffgfx.csm`.* Link object file to executable:- `clink filename`- `clink filename deffgfx` (see `cc.bat` and example `ex.c`)* How to build the concatenation tool (`concat outfile infile1 infile2`):- `cc concat.c`- `clink concat`player -- NedoPlayer--------------------The simple music player for `*.pt2`, `*.pt3` (with TurboSound support) and`*.tfc` formats. Use the command-line parameter to specify the filename forplaying. Prints the filename when the screen is refreshed. To exit useBreak (Esc, Caps Shift+Space).modplay-------The simplest MOD music player for General Sound compatible sound cards. Usethe command-line parameter to specify the filename for playing. Launchingwithout parameters is going to stop playback.pkunzip-------Unpacker for `*.zip` and `*.gz` archives. It unpacks the entire archiveto the current directory.tar---Unpacker for `*.tar` archives. It unpacks the entire archive to the currentdirectory. If the parameter is not a `.tar` archive, then this is a filefrom which the archive will be created (if a directory is specified, thenit will all be packed into an archive with all content, files, anddirectories). The archive name corresponds to the file name, with theextension replaced by `.tar`.unrar -- Unpack `*.rar` (2.x) archives--------------------------------------It reads the name of the archive via the command line, then it works inthe interactive mode.* v - view the contents of the archive* e - unpack necessary files from the archive* m - enter a mask for files (the first characters of the file name inthe archive, including the internal path)zxrar -- Packer of (2.x) `*.rar` archives-----------------------------------------It reads the name of file via the command line and creates archive`mynewrar.rar` or adds to it.browser -- NedoBrowser, web browser-----------------------------------NedoBrowser is a text-based web browser. Invoke from the command line:* `browser file://m:/girl.jpg` (`file://` is optional)* `browser http://alonecoder.nedopc.com/` (`http://` and the trailingslash is optional in the URL)* HTTPS protocol (https://) is supported with a proxy.The status bar is displayed at the bottom of the screen, it contains:* full path to the current file* number of busy pages* rendering time* errors (conn.err - connection error, load err - loading error)Following formats are supported:* html (does not support all tags yet and displays only windows-1251and UTF-8 encodings [by default]),* jpeg (so far only plain scan),* gif (so far only normal scan, animations are supported),* png (only normal scan for now),* bmp (so far only normal line order, 24bit),* svg (no fill, coordinates in a limited range).* For large pictures use cursor keys, Z - changes the scale.Short cuts:* cursor keys, PageUp (Caps Shift+3), PageDown (Caps Shift+4) - movement* Enter - follow the link* S - save the current file (it will be saved as `download.fil`, the firstletter is increased with each file)* L - download the file from the hyperlink (calls the `wget` program)* 5 - reload the file* E - edit url (arrows left, right, Enter, BackSpace [Caps Shift+0])* U - change encoding UTF-8 / windows-1251* BackSpace (Caps Shift + 0) - back in the browsing history* Break (Esc, Caps Shift + Space) - exit browserwget----The non-interactive HTTP downloader. It with play music filesand display `*.src` images automatically.dmm---The tool for mounting of TRD, SCL, FDI, TAP images via Evo Service.Can also mount TRD images using xBIOS ROM at ATM2.time----The tool for network time protocol (NTP). Command-line options:* `-H` help* `-T` set time(-T17:59:38)* `-D` set date(-D21-06-2019)* `-N` ntp-server default: -N2.ru.pool.ntp.org* `-Z` time-zone default: -Z3* `-i` get date time from the internetdmirc -- IRC client-------------------dmftp -- FTP client-------------------ping----Send ICMP `ECHO_REQUEST` to network hosts. Example: `ping 1.2.3.4`.telnet -- Telnet client-----------------------The user interface to the TELNET protocol. The TCP port can be specifiedwith: `telnet url:1234`, the default port is 23.3ws -- Web server-----------------The web server supports the sharing of the system disk. See `3ws.txt` formore details. You can use your own page design (files in the subdirectoryof the same name).wizcfg------Provides basic network setup of ZXNETUSB. It uses configurationsaved in `net.ini`.nmisvc------Launches and translates snapshot. Runs a `.SNA` snapshots (48K or 128K)specified on the command line. Exit the snapshot to OS by pressing the NMIbutton. You can save the memory state to a new snapshot or continue theexecution. At the same time, you can manually switch to another task in theOS. OS allows you to between snapshots and the system.It can also run BASICs from TR-DOS disc.view -- NedoView, image viewer------------------------------NedoView supports the following graphics formats:* scr (6144 and 6912)* fnt (linear and screen format, 768 and 2048)* img (dual screens with interlace)* 3 (AGA editors, 8col)* 888 (8col editor)* `+` or `-` (MultiStudio editor)* Y (packed 8-color picture for the ManyColor+/XColor)* plc (Laser Compact 5, BGE)* mc (multicolor)* mlt (multicolor from ZX Paintbrush editor)* mcx (multicolor with interlace)* grf (hardware multicolor ATM/Profi)* ch$ (large pictures with attributes, with or without interlace)* mg1, mg2, mg4, mg8 (MultiArtist editor)* rm (R-Mode)* 16c (32K memory image + 32 bytes palette)hddfdisk--------Utility for partitioning and formatting IDE partitions.term----Terminal emulator for programs that use `stdio.asm`.* Transmits ANSI codes (VT-100+) with mouse events.* Scrolling with the mouse wheel.* Mouse click in the top left corner will save terminal textto `pasta.txt`* Mouse click in the bottom left corner will insert 80 charactersfrom `pasta.txt`.netterm -- TELNET server------------------------The network terminal server listens on port 2323. Supports programs thatuse `stdio.asm`. Set the following configuration in your telnet client (forexample PuTTY):* VT-100* Local echo off* Local line editing off* Backspace = Control-Hpt -- Pro Tracker 3.x----------------------Pro Tracker 3.x provides a larger window and supports hard disk and GeneralSound (see the manual in a separate file).playtap -- Player for `.tap` files.-----------------------------------TAP files are played on your physical tape output. The file to play must benamed `tilt.tap`.Programming (for details see `api_base.txt`)---------------------------------------------User programs are compiled with the header file `../_sdk/sys_h.asm`, whichincludes the file `sysdefs.asm` with constants.Programs are loaded and run with `PROGSTART` (0x0100), with the command line in`COMMANDLINE` (0x0080) and with its length stored at `COMMANDLINE_sz` (0x0080).It is highly recommended to use these constants rather than numeric values (thesame goes for key codes, call numbers, etc.). The stack initially grows fromthe top of 0x0000, it can be manually rearranged to any place above 0x3b00.File operations and data transfers in BDOS can be done at any address inthe userspace.It is not recommended to read keyboard ports manually, use `OS_GETKEYMATRIX` -it returns the pressed keys only to the task that is currently in focus.It is not recommended to use the `syssets.asm` dependency in user programs.Application developers use the symbolic key names defined in `sysdefs.asm` under"Usable key codes".The system is currently unable to assemble itself. To reach this goal, we willfollow a number of guidelines for programming in assembly language:* it is not recommended to use external utilities (`*.exe`) for buildingprograms, except for the assembler and the NedoLang package.* it is recommended to format hexadecimal numbers in the 0xffff format, it isnot recommended to use binary numbers (in extreme cases, write in the 0b0101format).* it is recommended to write arithmetic expressions so that they are executedcorrectly even in the absence of priority of operations. If this requiresstarting an expression with a parenthesis, write a + sign before theparenthesis.* it is recommended to write arithmetic expressions so that they are executedcorrectly in unsigned multiplication and division.* it is not recommended to use `ifn a == b`, use `if a != b`.* it is not recommended to use `ORG` other than the initial one. Use `ds addr-$`.* it is not recommended to use `DUP..EDUP`, you can use `include` for largeblocks, and expand small ones.* it is not recommended to use `EQU` and `STRUCT`, use the "=" sign.* it is not recommended to use digital labels and transitions of type 1b(especially transitions of type 1f!).* it is not recommended to write several commands in a line and several sets ofparameters for one command.* it is not recommended to use UTF-8 encoding, use Windows-1251 or CP866instead.As the native build system will be improved, these restrictions will be relaxed.Restarts in the kernel (it is highly recommended to use them through macrossince it is planned to free 0x0000 for the user, make `CALLBDOS` a restart, and`SETPG...` calls for speed):* `QUIT (0x0000)` - close the current task and free its memory* `CALLBDOS (0x0005)` - calling BDOS (see functions in `sys_h.asm`, functionnumber in C). You should not call this macro directly, for each command thereis a separate macro `OS_...`. Registers are not saved!* `OS_GETKEY (0x0008)` - read a key (HA=code with language, BC=code withoutlanguage, key codes are specified in `sysdefs.asm`) and read the mouse at thesame time (de=mouse position (y, x), l=mouse buttons (bits 0, 1, 2:0=pressed)), and also Kempston joystick (LX),nz=the program is not in focus, the buttons are shown empty,the mouse position must be ignored (=0)* `OS_PRCHAR (0x0010)` - print character A (registers are not saved!)* `SETPG4000 (0x0018)` - enable page A at 0x4000 (corrupts the BC register). Thepage number is stored in (CURPG16K)* `SETPG8000 (0x0020)` - enable page A at 0x8000 (corrupts the BC register).The page number is stored in (CURPG32KLOW)* `SETPGC000 (0x0028)` - enable page A at 0xc000 (corrupts the BC register).The page number is stored in (CURPG32KHIGH) (switch the page at 0x0000 via`OS_SETMAINPAGE`, while the page must have a kernel!)* 0x0030 - far call is planned* 0x0038 - interrupt handlerBDOS functions: see `sys_h.asm`.The entry to the standard interrupt handler looks like this:```push afpush bcpush de```How to capture an interrupt handler in your program:* replace 3 bytes at 0x0038 with `jp <address of your handler>`, and take the`intjp` address from 0x0038+3 and copy to yourself.For example:```swapimer ;the first call will turn on your handler,;the second call will return the standard handlerdild hl, (0x0038 + 3) ;address intjpld (intjpaddr), hlld de, 0x0038ld hl, oldimerld bc, 3swapimer0ld a, (de)ldi ;[oldimer] -> [0x0038]dec hlld (hl), a ;[0x0038] -> [oldimer]inc hljp pe, swapimer0eiretoldimerjp on_int ;will be replaced with the code from 0x0038jp 0x0038 + 3```* your interrupt handler should call `oldimer`. For example:```on_intex de, hl ;de = "hl", hl = "de"ex (sp), hl ;hl = exit address, de = "hl", on the stack "de"ld (on_int_jp), hlld ( on_int_sp), SPld sp, INTSTACK ;in order not to mess up the stackpush afpush bcpush de ;"hl"...call oldimer ;ei...pop de ;"hl"pop bcpop afon_int_sp = $ + 1ld sp , 0; de = "hl", on the stack "de"pop de;```* do not use `YIELD`, use `HALT` instead. Otherwise, the interrupt will go toanother task, and there is another interrupt handler.* Call NedoOS functions (except for page switching) either in the interrupthandler or immediately after HALT.* if you just install your music player, use `OS_SETMUSIC`, while you can ignorethe previous two points (music will work anyway).Developers----------* Project manager, code, documentation - Dmitry Mikhailovich Bystrov(Alone Coder/Conscience).* Networking, patches to the disk subsystem, utilities, testing - DimkaM.* A bit of code and documentation - Nikolay Aleksandrovich Grivin.* NedoBasic was written with the participation of Kirill Lovyagin as part of theassembly language training.* Further development of NedoBasic and Nedovigator, build scripts for Linux,utilities - demige.* Sorting files, fixing build scripts for Linux, `aynet_psg` utility, sjasm andUnrealSpeccy fixes - Lord Vader.* rdtrd, wrtrd - Konstantin Kosarev.* ZX Battle City game - Slip, music - nq, testing - Videogames Sematary,porting - Alone Coder.* Porting the game Eric and the Floaters - Rasmer, coloring - Alone Coder,Sashapont.* Porting the game Black Raven - Alone Coder, coloring - Alone Coder, Sashapont,Kitty, Louisa.* Logos - Louisa, Sashapont, Wizard.The disk subsystem is based on the FatFS library with drivers from Savelij13and DimkaM and the iofast library from the NedoLang suite.The operating system idea was brought in 2007 when the first version of thekernel was written (but never tested). The main portion of the kernel code,`cmd` and `nv`, and part of Scratch graphic editor was written in 2018.License-------Free distribution of the program and its source code is allowed. Please askfor the approval from project manager if you want to port the code or itsparts to a different platform.System setup------------Clock usage according to Mr. Gluk's schematics for ATM2 is tested inUnrealSpeccy 0.37.1.Disk images (the HDD image can be mounted through WinImage, and the SD-cardimage can be mounted in Windows). Do not forget to unmount it once done:http://alonecoder.nedopc.com/sd.ziphttp://alonecoder.nedopc.com/hdd.zipInstalling the system on a real HDD:1. Run `mkatm2.bat` (or `mkatm3.bat` for ATM3).2. Using `nv`, copy all the files from the `*.trd` received to `e:/bin/`.3. Run `mkatm2hd.bat` (or `mkatm3hd.bat` for ATM3), copy the resulting `*.$c`to drive 1.Then you can start the system (`*.$c`) from the HDD.Installation of the system on a real SD-card: copy the `bin/` directory andthe required `$c` to the root of a SD-card.Settings for the UnrealSpeccy emulator:```[ZC] ; Z-Controller settings; sdcard imageSDCARD="sd.vhd"[HDD]Scheme = NEMO-DIVIDE (for ATM3 version) or ATM (for ATM2 version)Image0 = hdd.imaCHS0=609/16/63 ; max size, accessible through CHS. not used for real driveLBA0=614400 ; max size, accessible through LBA. not used for real driveHD0RO=0 ; read only flagCD0=0 ; 1 if image is cdrom````eVHDattach.bat` (you can mount also by clicking on `*.vhd`):```d:cd zx\us035\@echo offif exist VHDattach.txt (@echo onecho VHDattach.txt exist@echo off) else (@echo onecho create VHDattach.txt@echo offecho select vdisk file="%cd%\sd.vhd" > VHDattach.txtecho attach vdisk >> VHDattach.txtrem echo select vdisk file="%cd%\sd.vhd" >> VHDattach.txtrem echo select part 1 >> VHDattach.txtrem echo assign letter=K >> VHDattach.txt)if exist sd.vhd (@echo onecho sd.vhd attachdiskpart /s VHDattach.txt@echo off) else (@echo onecho create VHDcreate.txt@echo offecho create vdisk file="%cd%\sd.vhd" MAXIMUM=300 TYPE=FIXED >VHDcreate.txtecho select vdisk file="%cd%\sd.vhd" >> VHDcreate.txtecho attach vdisk >> VHDcreate.txtecho create part primary >> VHDcreate.txtecho select part 1 >> VHDcreate.txtecho format label="ZX" quick fs=FAT32 >> VHDcreate.txtecho assign >> VHDcreate.txt@echo ondiskpart /s VHDcreate.txtdel VHDcreate.txt@echo off)@echo onpause````eVHDdetach.bat:````d:cd zx\us035\@echo offif exist VHDdetach.txt (@echo onecho VHDdetach.txt exist@echo off) else (@echo onecho create VHDdetach.txt@echo offecho select vdisk file="%cd%\sd.vhd" > VHDdetach.txtecho detach vdisk >> VHDdetach.txt)@echo ondiskpart /s VHDdetach.txtpause```On Windows 10, you can use right-click to mount and unmount.