User Tag List

Показано с 1 по 10 из 217

Тема: Техраздел UZIX

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #2

    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,581
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Распределение памяти в более широком (подробном) изложении:

    Скрытый текст


    Код:
    == ORION AltairDos page 0 memory map
       0000 ---------------------
         |	 Screen0 - graphic
       4000 ---------------------
         |	 Screen1 - graphic
       8000 ---------------------
         |	 AltairDos ExtendedRAM: 4k segments 08,09,0a,0b	- planned for shared libc in future
       C000 ---------------------
         |	 CP/M crt driver 
         |	 + base fonts (KOI8-R) 		LOCAL MEMORY (accessed driven by 0F9 port: pages port)
       F000 ----------------------------------------------------------------------------------
    	 |		SEE BELOW				COMMON MEMORY (accesed from any page)
    
    
    == ORION AltairDos page 1 memory map
       0000 ---------------------
         |	 Screen0 - color attributes (16 color)
       4000 ---------------------
         |	 Screen1 - color attributes (16 color)
       8000 ---------------------
         |	 AltairDos ExtendedRAM: 4k segment 18			- planned for IDEBDOS driver
       9000 ---------------------
         |	 CP/M (AltairDOS) kernel	LOCAL MEMORY (accessed driven by 0F9 port: pages port) 
       F000 ----------------------------------------------------------------------------------
    	 |		SEE BELOW				COMMON MEMORY (accesed from any page)
    
    
    == ORION UZIX kernel space map (page 2, e.i. CP/M TPA):
       0000 ---------------------
         |	   system vectors
       0010 ---------------------
         |	  reserved for CP/M
       0100 ---------------------
         |	    kernel code
       E000 ---------------------
         |		kernel heap
       Eхxx ---------------------
         |	    kernel stack
       E860 ---------------------
         |	  CP/M (AltairDOS) BDOS (actually wrapper calling to page1 code)
       E8D0 ---------------------
         |	  CP/M (AltairDOS) BIOS (actually wrapper calling to page1 code)
       ED80 ---------------------
         |     UZIX SRV_STACK (for ISR routine)
       EDF9 ---------------------
         |     UZIX TEMPDBUF  (for unplanned disk IO)
       EFF8 ---------------------
         |	  _OLDYINTVEC  byte:word (3b)  ^ ^ ^
         |	  _PRCIMSTACK  word			   | | |
         |	  _BNKMARKER   byte         LOCAL MEMORY (accessed driven by 0F9 port: pages port)
       F000 ----------------------------------------------------------------------------------
    	 |		SEE BELOW				COMMON MEMORY (accesed from any page)
    
    
    == ORION UZIX process space map (pages 3..15):
       0000 ---------------------
         |	   system vectors
       0010 ---------------------
         |	reserved for CP/M emu
       0100 ---------------------
         |	 user process (TPA)
       EBC0 ---------------------
         |	CP/M BDOS/BIOS console functions emulator (BDOS 1..12, BIOS 1..4 functions)
       ECxx ---------------------
         |	  kernel subroutines for getc/putc
       EDxx ---------------------
         |	  kernel subroutines for ssiz/scop (argv/env services)
       EDxx ---------------------
         |	  kernel subroutines for GoUnix/GoExit
       EExx ---------------------
         |	  kernel subroutines for swapin/swapout
       EE80 ---------------------
         |     FSTACK_BCKP
       EF80 ---------------------
         |     UDATA_STASH
       EFF8 ---------------------
         |	  _RETPAGE 	   byte 
         |	  _GOSWAPSTACK word
         |	  _GOUNIXSTACK word			   ^ ^ ^
         |	  _PRCIMSTACK  word			   | | |
         |	  _BNKMARKER   byte         LOCAL MEMORY (accessed driven by 0F9 port: pages port)
       F000 ----------------------------------------------------------------------------------
         |	   FAREA_STACK             COMMON MEMORY (accesed from any page)
       F100 ---------------------		 |  |  |
         |	  IDEBDOS routines			 \/ \/ \/
       F120 ---------------------
         |	  CP/M tty routines
       F14x ---------------------
         |	  CP/M tty buffer
       F162 ---------------------
         |	  dtsize       byte
    	 |   _ret_page     byte
    	 |   _ret_addr	   word	     
    	 |   _ret_sp	   word	     
    	 |	_switch_page   byte	
         |	  U_DATA   120 bytes
       F1E2 ---------------------
         |	  CP/M crt routines
       F201 ---------------------
         |	CP/M interbank routines: BLDIR, BJMP, BCALL, BRET, BLDB, BSTB 
       F2xx ---------------------
         |	CP/M int 50Hz ISRs: MINT, MDI, MEI;  ISR_RET=0f2e3h, F3STACK=0F2B5h
       F2FB ---------------------
         |	reserved int vector word
         |	TTY IM2  int vector word
         |	50Hz IM2 int vector word
       F301 ---------------------
         |	CP/M interbank vectors (page:addr, 3 bytes):
         |	YBDOS			bank:addr=byte:word
         |	YBIOSWARM		bank:addr=byte:word
         |	YBIOSCONST		bank:addr=byte:word
         |	YBIOSCONIN		bank:addr=byte:word
         |	YBIOSCONOUT		bank:addr=byte:word
         |	YBIOSLSTOUT		bank:addr=byte:word
         |	YBIOSAUXOUT		bank:addr=byte:word
         |	YBIOSAUXIN		bank:addr=byte:word
         |	YBIOSHOME		bank:addr=byte:word
         |	YBIOSSELDISK	bank:addr=byte:word
         |	YBIOSSELTRK		bank:addr=byte:word
         |	YBIOSSELSEC		bank:addr=byte:word
         |	YBIOSSETDMA		bank:addr=byte:word
         |	YBIOSREAD		bank:addr=byte:word
         |	YBIOSWRITE		bank:addr=byte:word
         |	YBIOSLSTST		bank:addr=byte:word
         |	intvec (INT 50Hz)		  byte:word
         |	intkey (ctrl+shft+key)    byte:word
       F334 ---------------------
         |	  F3-stack (for interbank routines)
       F3C0 ---------------------
         |	  ROM-BIOS Monitor vectors, variables and constants
       F400 ---------------------
       F500	  keyboard PPA 8255
       F600	  romdisk  PPA 8255
         |	  printer  PPA 8255
       F700 ---------------------
         |	  user devices ports
       F800 ---------------------
         |	  ROM-BIOS Monitor code (ROM)
       FFFF ---------------------
    [свернуть]


    Ядро сейчас написано (все мысли уже перенесены в код), но пока много ошибок - в процессе отладки. И уже придумал изменения кое-где, надо внедрять. Но подает признаки жизни. Запускается само ядро, монтируется РУТ, создается процесс, в него читается образ INIT, передается управление INIT, из процесса идет вывод на экран (пока что из-за отсутствия либ, через call 5 - через эмулятор CP/M, но и он вобще-то идет "по взрослому" - через STDOUT функции ядра, а не напрямую). Готовность ядра оцениваю в 50%.
    Надо делать либы и допиливать "межстраничную" обработку передаваемых данных из процессов в sys_* функции ядра (физически они в разном пространстве - разных 64к страницах, т.е. надо по необходимости делать пересылки туда и обратно после обработки).

    Без пересылок не обойтись, т.к. основное ИМХО - выдавать процессору максимум "сплошного" ОЗУ (сейчас процессу дается 58,5к "чистого ОЗУ", пока без всяких диспетчеров по 16к - хотя и его позже задействую для shared libc, т.е. будет до 74,5к сугубо на процесс, а это очень прилично для Z80!), а пересылки можно компенсировать увеличением такта ЦПУ. В связи с этим я предлагаю реанимировать темку "быстрого CP/M-компутера на реальном Z80", и сделать его совместимым с маппером из первого поста (в одном из режимов приблизить к Ориону). Короче, вызываю в тему Евгения, Мика, Хардваремана, которые все подобные проекты начинали, но не помню выдали ли нагора результат хоть кто-нить.
    Также приветствуются проекты по разгону реальных Орионов-rev512 и Орионов-ПРО.
    Также, могу поддержать в драйвере idebdos, т.е. и в UZIX, реальные (т.е. проверенные автром в железе и с минимальным кодом нижнего уровня - отлаживать это мне самому нет времени) проекты быстрого IDE (типа НЕМО) и SD (типа самотактируемого от Хардваремана) на россыпухе. Нынешние внедренные мной схемы IDE и SD хотя и простые, но медленные.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	idebdos.jpg 
Просмотров:	489 
Размер:	22.3 Кб 
ID:	50404   Нажмите на изображение для увеличения. 

Название:	bd.jpg 
Просмотров:	399 
Размер:	23.2 Кб 
ID:	50405   Нажмите на изображение для увеличения. 

Название:	ucp-fsck.jpg 
Просмотров:	450 
Размер:	22.6 Кб 
ID:	50406   Нажмите на изображение для увеличения. 

Название:	uzix.jpg 
Просмотров:	353 
Размер:	21.3 Кб 
ID:	50407  
    Последний раз редактировалось Error404; 26.12.2014 в 19:56.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 0
    Последнее: 24.02.2009, 12:31
  2. и еще раз о uzix
    от sysop в разделе Оси
    Ответов: 33
    Последнее: 25.08.2006, 14:35

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •