Subversion Repositories NedoOS

Rev

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

  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        
  2.        
  3. sys_newapp
  4. ;iy=app
  5. ;a=id
  6. ;e=page (#ff = auto)
  7. ;hl=textcuraddr
  8. ;в это время нельзя переключать задачи, иначе структуру могут перезахватить!
  9.         ;TODO priority
  10.         ld (iy+app.id),a ;зарезервировали место
  11.         ld (iy+app.flags),0 ;пока тут 0, задачу никто не будет трогать
  12.         ;ld hl,#c1c0
  13.         ld (iy+app.textcuraddr),l
  14.         ld (iy+app.textcuraddr+1),h
  15.         ;TODO curmsg
  16.         ;TODO endmsg
  17.         ;TODO next
  18.         ld a,e
  19.         inc a
  20.         call z,BDOS_newpage_iy
  21.         ld (iy+app.mainpg),e
  22.  
  23.         ld bc,memportc000
  24.         out (c),e
  25.  
  26.         ld hl,wasuserkernel
  27.         ld de,0+#c000
  28.         ld bc,userkernel_sz
  29.         ldir
  30.         xor a
  31.         ld (#c000+COMMANDLINE),a ;command line
  32.        
  33.         call BDOS_newpage_iy
  34.         ld a,e
  35.         ld (curpg16k+#c000),a
  36.         call BDOS_newpage_iy
  37.         ld a,e
  38.         ld (curpg32klow+#c000),a
  39.         call BDOS_newpage_iy
  40.         ld a,e
  41.         ld (curpg32khigh+#c000),a
  42.        
  43.         ld (iy+app.curcolor),7
  44.         ld (iy+app.screen),fd_user
  45.         ;ld (iy+app.gfxmode),%10101000 ;320x200 mode
  46.         ld (iy+app.gfxmode),%10101110 ;textmode
  47.         push iy
  48.         pop de
  49.         ld hl,app.pal
  50.         add hl,de
  51.         ex de,hl
  52.         ld hl,standardpal
  53.         ld bc,32
  54.         ldir
  55.  
  56.         ;ld a,SYSDRV ;TODO брать драйв от текущего app
  57.         ;call BDOS_setvol_rootdir ;требует PGFATFS
  58.          ld (iy+app.vol),SYSDRV ;TODO брать драйв от текущего app
  59.          ;jr $
  60.          xor a
  61.          ld (iy+app.dircluster),a
  62.          ld (iy+app.dircluster+1),a
  63.          ld (iy+app.dircluster+2),a
  64.          ld (iy+app.dircluster+3),a
  65.  
  66.         ld a,(iy+app.mainpg)
  67.         ld (iy-safestack_sz+1),a
  68.         ld a,(iy+app.screen)
  69.         ld (iy-safestack_sz+7),a
  70.        
  71.         ret
  72.        
  73. makeidle
  74.         ld iy,app1
  75.         ld (appaddr),iy
  76.         ld a,1 ;id
  77.         ld e,pgtrdosfs ;pgidle
  78.         ld hl,#c1c0
  79.         call sys_newapp
  80.         ld a,'i' ;idle
  81.         ld (#c000+COMMANDLINE),a ;command line
  82.         set factive,(iy+app.flags)
  83.         ret
  84.  
  85. standardpal
  86.         STANDARDPAL
  87.        
  88. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  89.                 if INETDRV
  90.         include "w5300.asm"
  91.                 else
  92. wiznet_open
  93. wiznet_close
  94. wiznet_read
  95. wiznet_write
  96.         ld hl,0xffff
  97.         ret
  98.                 ENDIF
  99.