Subversion Repositories NedoOS

Rev

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

  1. ;эх тъы■ўрхь gfxmode, ўЄюс√ idle эшъюуфр эх яюыєўры Їюъєё
  2. ;яю єьюыўрэш■ ёЄюшЄ ЄхъёЄьюф
  3.         ld sp,#4000 ;эхы№ч  эшцх #3b00 ш эхы№ч  яхЁхёхў№ё  ё resident (хёыш ь√ т pgtrdosfs)
  4.         ld e,7
  5.         OS_CLS
  6.         ;хёыш ёфхырЄ№ SETGFX, Єю яюёых ттхфхэш  ЄхЁьшэрыют яю тшЄё  ыш°эшщ ЄхЁьшэры яюф idle
  7.        
  8.         OS_GETMAINPAGES
  9. ;dehl=эюьхЁр ёЄЁрэшЎ т 0000,4000,8000,c000
  10.         push hl
  11.         OS_DELPAGE
  12.         pop hl
  13.         push hl
  14.         ld e,h
  15.         OS_DELPAGE
  16.         pop hl
  17.         ld e,l
  18.         OS_DELPAGE
  19.  
  20.         ld e,'A'
  21. mountdrives0
  22.         push de
  23.         ld a,e
  24.         ld (tdrivemounted_drive),a
  25.         OS_MOUNT
  26.         or a
  27.         jr nz,.mnt_fail
  28.         ld hl,tdrivemounted
  29.         call prtext
  30.         pop de
  31.                 jr .mnt_next
  32. .mnt_fail
  33.         pop de
  34.                 cp 13           ;There is no valid FAT volume on the physical drive
  35.                 jr z,.mnt_next
  36.                 cp 10           ;The physical drive is write protected
  37.                 jr z,.mnt_next
  38.                 ld a,e
  39.                 dec a
  40.                 or %00000011    ;Next drive
  41.                 inc a
  42.                 ld e,a
  43. .mnt_next
  44.         inc e
  45.         ld a,e
  46.         cp 'U'
  47.         jr nz,mountdrives0
  48.  
  49. idle_runcmd
  50.         OS_SETSYSDRV
  51.  
  52.         ld de,fcb
  53.          ;jr $
  54.         OS_FOPEN
  55.         or a
  56.         jr nz,execcmd_error
  57.        
  58.         ld hl,tcmdloading
  59.         call prtext
  60.        
  61.         OS_NEWAPP
  62. ;dehl=эюьхЁр ёЄЁрэшЎ т 0000,4000,8000,c000 эютюую яЁшыюцхэш , b=id, a=error
  63.         push bc ;b=id
  64.  
  65.         ld a,d
  66.         SETPG32KHIGH
  67.         push de
  68.         push hl
  69.         ld hl,cmdbuf
  70.         ld de,#c080
  71.         ld bc,128  
  72.         ldir ;command line
  73.         pop hl
  74.         pop de
  75.  
  76.         call readfile_pages_dehl
  77.  
  78.         ld de,fcb
  79.         OS_FCLOSE
  80.  
  81.         pop af ;id
  82.         ld e,a
  83.         OS_RUNAPP
  84.        
  85. ;яюэшчшЄ№ яЁшюЁшЄхЄ ёхсх
  86.         ld e,1
  87.         OS_FREEZEAPP
  88.        
  89. idleloop
  90.         ;ld a,1
  91.         ;out (#fe),a
  92.        
  93.         ld a,#fe
  94.         in a,(#fe)
  95.         bit 3,a ;'c'
  96.         jr nz,idleloop
  97.         ld a,#7f
  98.         in a,(#fe)
  99.         bit 2,a ;'m'
  100.         jr nz,idleloop
  101.         ld a,#fd
  102.         in a,(#fe)
  103.         bit 2,a ;'d'
  104.         jr nz,idleloop
  105.         ld e,7
  106.         OS_CLS
  107.         ;jr $
  108.         jp idle_runcmd
  109.  
  110. execcmd_error
  111.         ld hl,tcmdnotfound
  112.         call prtext
  113.         jr idleloop
  114.  
  115. tcmdnotfound
  116.         db "cmd.com not found",#0d,#0a,0
  117. tcmdloading
  118.         db "loading cmd.com",#0d,#0a,0
  119. tdrivemounted
  120.         db "Drive "
  121. tdrivemounted_drive
  122.         db "N mounted",#0d,#0a,0
  123.  
  124. cmdbuf
  125.         ;db "cmd autoexec.bat",0
  126.         db "autoexec.bat autoexec.bat",0 ;ўЄюс√ яюЄюь тїюфшЄ№ т шэЄхЁръЄштэ√щ Ёхцшь (cmd яЁютхЁ хЄ яхЁтюх ёыютю), шэрўх яЁшф╕Єё  яЁюяшёрЄ№ т autoexec.bat ъюьрэфє cmd ш шьхЄ№ фтх чрфрўш cmd (юфэє тшё ∙є■ т юцшфрэшш фЁєуюую cmd)
  127.        
  128. prtext
  129. prtext0
  130.         ld a,(hl)
  131.         or a
  132.         ret z
  133.         push hl
  134.         PRCHAR ;testing (351/352t) (was 986/987t)
  135.         pop hl
  136.         inc hl
  137.         jr prtext0
  138.  
  139.        
  140.        
  141. readfile_pages_dehl
  142.         ld a,d
  143.         SETPG32KHIGH
  144.         ld a,#c100/256
  145.         ld b,#3f00/128
  146.         call cmd_loadpage
  147.         or a
  148.         ret nz
  149.        
  150.         ld a,e
  151.         SETPG32KHIGH
  152.         ld a,#c000/256
  153.         ld b,#4000/128
  154.         call cmd_loadpage
  155.         or a
  156.         ret nz
  157.        
  158.         ld a,h
  159.         SETPG32KHIGH
  160.         ld a,#c000/256
  161.         ld b,#4000/128
  162.         call cmd_loadpage
  163.         or a
  164.         ret nz
  165.        
  166.         ld a,l
  167.         SETPG32KHIGH
  168.         ld a,#c000/256
  169.         ld b,#4000/128
  170.  
  171. cmd_loadpage
  172. ;out: a=error
  173. ;keeps hl,de
  174.         push de
  175.         push hl
  176.         push bc
  177.         ld d,a
  178.         ld e,0
  179.         OS_SETDTA
  180.         pop bc
  181. cmd_loadpage0      
  182.         push bc
  183.         ld de,fcb
  184.          ;jr $
  185.         OS_FREAD
  186.         pop bc
  187.         or a
  188.         jr nz,cmd_loadpageq
  189.         djnz cmd_loadpage0
  190. cmd_loadpageq
  191.         pop hl
  192.         pop de
  193.         ret
  194.  
  195. fcb
  196.         db 0
  197. fcb_filename
  198.         db "cmd     com"
  199.         ds FCB_sz-1-11
  200. stack
  201.         ds 64
  202. endstack
  203.