Subversion Repositories NedoOS

Rev

Rev 248 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download

  1. maincode
  2. ;тючтЁрЄ т ёшёЄхьє
  3. user_fdvalue1=$+1
  4.         ld a,fd_system
  5.         out (0xfd),a
  6. ;Єхъє∙шщ фшёъютюф (TODO?)
  7.         db 0
  8.  
  9.         ds 0x0005-$ ;0 b
  10. ;т√чют ЇєэъЎшш ёшёЄхь√
  11. user_fdvalue2=$+1
  12.         ld a,fd_system
  13.         out (0xfd),a
  14. ;getchar=0x0009 (ьюцэю rst 0x08)
  15. user_fdvalue3=$+1
  16.         ld a,fd_system
  17.         out (0xfd),a
  18. kernel_setpg
  19.         out (c),a
  20.         ret
  21.  
  22.         ds 0x0010-$ ;0 b
  23. ;putchar=0x0010
  24.         ld e,a
  25. user_fdvalue4=$+1
  26.         ld a,fd_system
  27.         out (0xfd),a
  28.         display "kernel_result_a=",$
  29. kernel_result_a
  30.         ex af,af'
  31.        ret ;ьюцэю яхЁхэхёЄш т 0x0015
  32.  
  33.        ds 0x0018-$ ;1 b
  34. ;setpg4000=0x0018
  35.        ld bc,memport4000
  36.        ld (curpg16k),a
  37.        jr kernel_setpg
  38.  
  39.        ds 0x0020-$ ;0 b
  40. ;setpg8000=0x0020
  41.        ld bc,memport8000
  42.        ld (curpg32klow),a
  43.        jr kernel_setpg
  44.  
  45.        ds 0x0028-$ ;0 b
  46. ;setpgc000=0x0028
  47.        ld bc,memportc000
  48.        ld (curpg32khigh),a
  49.        jr kernel_setpg
  50.  
  51.        ds 0x0030-$ ;0 b
  52. ;farcall=0x0030
  53. user_fdvalue5=$+1
  54.        ld a,fd_system
  55.        out (0xfd),a
  56.        ds 2
  57. INTMICROSTACK ;2 срщЄр фю (ёЄхъ) ш 2 срщЄр яюёых (bc)
  58.        ds 2
  59.  
  60. ;int=5112t (шч эшї 905t єёЄрэютър ярышЄЁ√, 2875t ўЄхэшх ъыртшрЄєЁ√)
  61.        ds 0x0038-$ ;0 b
  62.        ex de,hl ;de="hl", hl="de"
  63.        ex (sp),hl ;hl=рфЁхё т√їюфр, de="hl", т ёЄхъх "de"
  64.         ;ld (intsp),sp ;ьюцэю єсЁрЄ№ ¤Єє юяхЁрЎш■ т kernelspace
  65.        ld (intjp),hl ;TODO яшёрЄ№ эх яЁ ью т intjp, р т яЁюьхцєЄюўэє■ ыюърЎш■ (шэрўх їтюёЄ юсЁрсюЄўшър эхы№ч  ё ei - юэ ёрь эх ьюцхЄ ёьхэшЄ№ Ёхцшь юсЁрсюЄъш яЁхЁ√трэш  яюёых jp)
  66.        ld l,a
  67. user_fdvalue6=$+1
  68.        ld a,fd_system
  69.        out (0xfd),a ;14 b
  70. ;---------
  71.        ;ld sp,INTSTACK
  72.        ;(keep bc in MICROSTACK)
  73.        ;...
  74.        ;ld sp,INTMICROSTACK
  75.        ;ld a,%0101s111;%0x01sx1x ;фы  эхшёяЁртыхээюую └╥╠2 эрфю A9=1, р эюьхЁ ёЄЁрэшЎ√ т 0x7ffd эх сєфхЄ тыш Є№, хёыш рфЁхёрЎш  яю memportc000
  76.        ;out (0xfd),a
  77. ;---------
  78. ;ёхщўрё ёЄхъ INTSTACK (шэрўх эхы№ч  т√чтрЄ№ rst)
  79. init_resident
  80. ;sp=INTMICROSTACK
  81. ;bc=memport0000
  82. ;d=pgmain
  83. ;e=чэрўхэшх фы  ръъєьєы ЄюЁр
  84. ;di
  85.        out (c),d
  86. curpg16k=$+1
  87.        ld a,0;pgmain4000
  88.        SETPG16K ;rst ;ўЄюс√ шэырщэшЄ№, эрфю 9 срщЄ ыш°эшї, р є эрё Єюы№ъю 5 (6?)
  89. curpg32klow=$+1
  90.        ld a,0;pgmain8000
  91.        SETPG32KLOW ;rst
  92. curpg32khigh=$+1
  93.        ld a,0;pgmainc000
  94.        SETPG32KHIGH ;rst
  95.         pop bc
  96. intsp=$+1
  97.        ld sp,0xfffe;STACK-2 ;Єрь de ;эхы№ч  т kernelspace, Є.ъ. тыюцхээюх яЁхЁ√трэшх чряюЁЄшЄ ёЄхъ! ш de єцх фюыцэю с√Є№ яЁшётюхэю
  98.        ld a,e
  99.        pop de ;TODO ld de, яЁшў╕ь яхЁхф ld sp, шэрўх тыюцхээюх яЁхЁ√трэшх чряюЁЄшЄ ёЄхъ!
  100.         ei ;TODO т kernelspace (ўЄюс√ фхырЄ№ yield ё тъы■ўхээ√ьш яЁхЁ√трэш ьш), ъюуфр ЄєЄ сєфхЄ ёюїЁрэхэшх intsp, intjp ўхЁхч яЁюьхцєЄюўэє■ ыюърЎш■, р т kernelspace сєфхЄ ь№■Єхъё
  101. intjp=$+1
  102.        jp 0x0100 ;main_go ;18+2 b
  103.  
  104.        display "end of user kernel=",$
  105.