?login_element?

Subversion Repositories NedoOS

Rev

Rev 538 | Rev 660 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        
  2.  
  3. sys_newapp_forBDOS
  4.         ld a,(iy+app.id)
  5.        push af ;parent id
  6.          push iy
  7.           di ;между findfreeid+findfreeappstruct и заполнением iy+app.id нельзя переключать задачи!!! ;TODO critical section
  8.         call sys_findfreeid ;портит iy
  9.          pop hl
  10.         push af ;id
  11.          push hl
  12.         call sys_findfreeappstruct ;возвращает iy = адрес первой свободной структуры app ;TODO error
  13.          pop ix
  14.          ld a,(ix+app.stdin)
  15.          ld (iy+app.stdin),a
  16.          ld a,(ix+app.stdout)
  17.          ld (iy+app.stdout),a
  18.          ld a,(ix+app.stderr)
  19.          ld (iy+app.stderr),a
  20.          ld l,(ix+app.textcuraddr)
  21.          ld h,(ix+app.textcuraddr+1)
  22.          ;jr nz,BDOS_newapp_fail
  23.          jr z,sys_newapp_forBDOS2
  24. ;BDOS_newapp_fail
  25.         pop af
  26.        pop af
  27.         ld a,0xff
  28.           ei
  29.         ret
  30.  
  31. sys_newapp_forBDOS2
  32.         pop af ;id
  33.         push af ;id
  34.         ld e,0xff ;auto page
  35.         ;hl=textcuraddr
  36.         call sys_newapp
  37.           ei
  38.          push iy
  39.          pop de
  40.          ld hl,(appaddr)
  41.          ld bc,app.vol
  42.          add hl,bc
  43.          ex de,hl
  44.          add hl,bc
  45.          ex de,hl
  46.          ld bc,5;DIR_sz
  47.          ;jr $
  48.          ldir ;копировать текущий vol и dircluster
  49.         call BDOS_getmainpages_iy
  50.         pop bc ;b=id
  51.        pop af ;parent id
  52.         ld (iy+app.parentid),a
  53.         xor a
  54.         ret ;success
  55.        
  56. sys_newapp
  57. ;iy=app
  58. ;a=id
  59. ;e=page (0xff = auto)
  60. ;hl=textcuraddr
  61. ;в это время нельзя переключать задачи, иначе структуру могут перезахватить!
  62.         ;TODO priority
  63.         ld (iy+app.id),a ;зарезервировали место
  64.         ld (iy+app.flags),0 ;пока тут 0, задачу никто не будет трогать
  65.         ;ld hl,0xc1c0
  66.         ld (iy+app.textcuraddr),l
  67.         ld (iy+app.textcuraddr+1),h
  68.         ;TODO curmsg
  69.         ;TODO endmsg
  70.         ;TODO next
  71.         ld a,e
  72.         inc a
  73.         call z,BDOS_newpage_iy
  74.         ld (iy+app.mainpg),e
  75.  
  76.         ;ld bc,memportc000
  77.         ;out (c),e
  78.         ld a,e
  79.         call sys_setpgc000
  80.  
  81.         ld hl,wasuserkernel
  82.         ld de,0+0xc000
  83.         ld bc,userkernel_sz
  84.         ldir
  85.         xor a
  86.         ld (0xc000+COMMANDLINE),a ;command line
  87.         call disablescreeninapp
  88.        
  89.         call BDOS_newpage_iy
  90.         ld a,e
  91.         ld (curpg16k+0xc000),a
  92.         call BDOS_newpage_iy
  93.         ld a,e
  94.         ld (curpg32klow+0xc000),a
  95.         call BDOS_newpage_iy
  96.         ld a,e
  97.         ld (curpg32khigh+0xc000),a
  98.        
  99.         ld (iy+app.curcolor),7
  100.         ld (iy+app.screen),fd_user
  101.         ;ld (iy+app.gfxmode),0xa8;%10101000 ;320x200 mode
  102.                 IFDEF NOTURBO
  103.         ld (iy+app.gfxmode),0xa6;%10101110 ;textmode
  104.                 ELSE
  105.         ld (iy+app.gfxmode),0xae;%10101110 ;textmode
  106.                 ENDIF
  107.         push iy
  108.         pop de
  109.         ld hl,app.pal
  110.         add hl,de
  111.         ex de,hl
  112.         ld hl,standardpal
  113.         ld bc,32
  114.         ldir
  115.  
  116.         ;ld a,SYSDRV ;TODO брать драйв от текущего app
  117.         ;call BDOS_setvol_rootdir ;требует PGFATFS
  118.                 ld a,(SYSDRV_VAL)
  119.          ld (iy+app.vol),a      ;SYSDRV ;TODO брать драйв от текущего app
  120.          ;xor a
  121.          ld (iy+app.dircluster),b;a
  122.          ld (iy+app.dircluster+1),b;a
  123.          ld (iy+app.dircluster+2),b;a
  124.          ld (iy+app.dircluster+3),b;a
  125.  
  126.         ld (iy+app.border),b;a
  127.  
  128.         ld a,(iy+app.mainpg)
  129.         ld (iy-safestack_sz+1),a
  130.         ld a,(iy+app.screen)
  131.         ld (iy-safestack_sz+7),a
  132.        
  133.         ret
  134.        
  135. makeidle
  136.         ld iy,app1
  137.         ld (appaddr),iy
  138.         ld a,1 ;id
  139.         ld e,pgtrdosfs ;pgidle
  140.         ld hl,0xc1c0
  141.         call sys_newapp
  142.         ld a,'i' ;idle
  143.         ld (0xc000+COMMANDLINE),a ;command line
  144.          ;ld (iy+app.vol),SYSDRV ;есть в самом idle
  145.         set factive,(iy+app.flags)
  146.         ret
  147.  
  148. standardpal
  149.         STANDARDPAL
  150.  
  151.         if PS2KBD==0
  152.                         include "syskey2.asm"
  153.                 else
  154.                         include "ps2drv.asm"
  155.         endif
  156.        
  157. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  158.                 if INETDRV
  159.         include "w5300.asm"
  160.         else
  161. wiznet_open
  162. wiznet_close
  163. wiznet_read
  164. wiznet_write
  165.         ld hl,0xffff
  166.         ld a,l
  167.         ret
  168.                 ENDIF
  169.