Retro Unix 8086 v1 shell (run time system) demo (12/12/2013)
Автор: Erdoğan Tan
Загружено: 2013-12-14
Просмотров: 947
A demonstration of Retro UNIX 8086 v1 (a 8086 IBM PC/AT compatible derivation of original UNIX v1, PDP-11). I have written this simple operating system completely in assembly language (Microsoft Macro Assembler 6.14) and i have tried it on Bochs Emulator and also by using a real 1.44 MB (3.5") bootable floppy on my old pc.
Except tty (multi screen) functions, i have used (if it is possible) 1 to 1 equivalent kernel code (almost near to original PDP-11 code but of course, I have done some modifications due to 8086 register conditions, otherwise it would not possible to port it). I have used INT 20h and ax, bx, cx, dx registers (in order, ax for function, bx for argument 1, cx for argument 2, dx for argument 3) for system calls. Due to get/ensure multi tasking and multi screens, i have adapted original PC/AT int 10h (video functions) code to Retro Unix 8086 kernel with ability of write/set each video page instead of active video page only (as original int 10h). Also I have used "Alt + F" keys for multi screen (active video page switching) functions and also I have separated keyboard keystrokes for each video page by monitoring active video page during keystroke. "getc" procedure responses to it's caller if a keystroke is present for requested video page (it was not possible in DOS and standalone programs which use Rombios .) "Sleep" and "wakeup" procedures ensures that. (if there is not a keystroke, process is sent to sleep, if there is a keystroke on active page, sleeping process is awaken). ("S1" to "S9" signs are for sleeping in 'unix.tst' test kernel run while "W1" to "W9" are wakeup signs). There are some bugs, for example, if you run 'scancode' or 'clock' and if you switch to another video page before terminating it (sys exit) system will be frozen. (I will not try to solve these type problems in 8086 versions. I will try to solve these type problems in 80386 next version of Retro Unix.) For now, I have not set and tested serial port functionality (tty8, tty9) and I have not written a terminal program for using serial port (COM1, COM2) communications on two pc; one of them would be UNIX operating system pc (server), other one would be terminal pc. (I would use raw mode communications on serial ports. Sending ASCII characters to terminal and accepting ASCII characters from terminal without any communications protocol except terminal and server 'ready' detection).
Доступные форматы для скачивания:
Скачать видео mp4
-
Информация по загрузке: