亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? fs.inc

?? MenuetOS是一個用匯編開發(fā)的32/64位PC操作系統(tǒng)
?? INC
字號:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;;   Fs.inc (c) Ville Turjanmaa
;;   License: GPL. See file copying for details.
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


dir0:        db  'HD         '
             db  'FD         '
             db  0
   
dir1:        db  '1          '
             db  '2          '
             db  '3          '
             db  '4          '
             db  0
   

hd_address_table:  dd  0x1f0,0x00,0x1f0,0x10
                   dd  0x170,0x00,0x170,0x10

file_system:
   
; IN:
;
; eax = 0  ; read file          /RamDisk/First  6   /HardDisk/First 30
; eax = 1  ; write file         /RamDisk/First 33   /HardDisk/First 56
; eax = 2  ; delete file        /RamDisk/First 32   /HardDisk/First 57
; eax = 3  ; append to a file   /RamDisk/First ??   /HardDisk/First ??
; eax = 8  ; lba read
;   
; OUT:
;
; eax = 0 : read ok
; eax = 1 : no fd base and/or partition defined
; eax = 2 : yet unsupported FS
; eax = 3 : unknown FS
; eax = 4 : partition not defined at hd
; eax = 5 : file not found
; eax = 6 : end of file
; eax = 7 : memory pointer not in application area
;
; ebx = size

    ; Extract parameters
   
    mov  edi,[0x3010]
    add  eax,[edi+0x10]    ;  abs start of info block
   
    cmp  [eax+0],dword 16  ; dont care about read&write blocks
    je   fs_read
   
    cmp  [0x3000],dword 1  ; no memory checks for kernel requests
    je   no_checks_for_kernel

    mov  ebx,[0x3000]      ; pointer in application memory ?
    imul ebx,256
    add  ebx,0x80000
    mov  ebx,[ebx+0x8c]

    mov  ebp,ebx           ; save for checking at stack save
    sub  ebp,[eax+12]
    shr  ebp,9

    sub  ebx,512           ; need atleast one block

    cmp  ebx,[eax+12]
    ja   area_in_app_mem
    mov  eax,7
    mov  [esp+36],dword 7
    ret
  area_in_app_mem:

  no_checks_for_kernel:


    cmp  [eax+8],dword 0   ;  read or write 0 blocks/bytes ?
    jne  fs_read
    mov  [esp+36],dword 0
    ret
  fs_read:
   
    mov  ebx,[eax+20]     ;  program wants root directory ?
    cmp  bl,0
    je   fs_getroot
    cmp  bh,0
    je   fs_getroot
    jmp  fs_noroot
  fs_getroot:
    mov  edx,[edi+0x10]
    mov  esi,dir0
    mov  edi,[eax+12]
    add  edi,edx
    mov  ecx,11
    cld
    rep  movsb
    mov  eax,0x10
    stosb
    add  edi,32-11-1
    mov  ecx,11
    cld
    rep  movsb
    stosb
    mov  [esp+36],dword 0       ; ok read
    mov  [esp+24],dword 32*2    ; size of root
    ret

  fs_noroot:
   
    mov  ebx,[eax+0]
    push ebx              ;  read/write/delete/append
    mov  ebx,[eax+4]
    push ebx              ;  512 block number to read
    mov  ebx,[eax+8]

    cmp  [eax+0],dword 0  ; if read, check that the data stays at
    jne  ret_size_fine    ; application memory
    cmp  ebx,ebp
    jbe  ret_size_fine
    mov  ebx,ebp
  ret_size_fine:         

    push ebx              ;  bytes to write/append or 512 blocks to read
    mov  ebx,[eax+12]
    add  ebx,[edi+0x10]
    push ebx              ;  abs start of return/save area

    mov  ebx,eax
    add  ebx,20           ;  abs start of dir + filename
    mov  esi,[eax+16]
    add  esi,[edi+0x10]   ;  abs start of work area
   
    ; Extract directory to work area
    ; 0-127 : directory & file : / 11 + / 11 + / 11 - zero terminated
   
    mov  edi,esi
    mov  eax,32
    mov  ecx,127
    cld
    rep  stosb
   
    mov  ecx,9
    mov  eax,0
  filesys_l6:
    mov  [esi+eax],byte '/'
    add  eax,12
    loop filesys_l6
   
    xor  eax,eax
   
    push esi
    push esi
   
  filesys_l1:
   
    inc ebx
   
    cmp [ebx],byte 0
    je  filesys_d1
   
    cmp [ebx],byte '.'
    jne filesys_l2
    mov esi,[esp]
    add esi,8
    jmp filesys_l1
  filesys_l2:
   
    cmp [ebx],byte '/'
    je  filesys_d2
   
    mov  al,[ebx]
    cmp  eax,0x60
    jb   filesys_l3
    sub  eax,0x20
  filesys_l3:
    mov  [esi+1],al
    inc  esi
   
    cmp  esi,edi
    jge  filesys_d1
   
    jmp  filesys_l1
   
  filesys_d2:
   
    add  [esp],dword 12
    mov  esi,[esp]
   
    jmp  filesys_l1
   
  filesys_d1:
   
    mov  esi,[esp]
    mov  [esi+12],byte 0
                           ; [esp+0] ; name of file start
                           ; [esp+4] ; dir start
    mov  edi,[esp+4]
   
    mov  ebx,[dir0+11]     ; /RAMDISK and FLOPPY
    mov  eax,[edi+1]

    cmp  eax,'FD  '
    je   fdtord
    cmp  eax,'fd  '
    je   fdtord
    cmp  eax,'fD  '
    je   fdtord
    cmp  eax,'Fd  '
    je   fdtord
    jmp  nofdtord
  fdtord:
    mov  eax,'RD  '
  nofdtord:

    cmp  eax,'RD  '
    je   fs_yesramdisk
    cmp  eax,ebx
    jne  fs_noramdisk
   
  fs_yesramdisk:
   
    cmp  [edi+1+11],byte 0
    je   fs_give_dir1
   
    mov  ebx,[dir1]        ; /FIRST
    mov  eax,[edi+1+12]
    cmp  eax,'1   '
    je   fs_yesramdisk_first
    cmp  eax,ebx
    jne  fs_noramdisk
   
  fs_yesramdisk_first:

    cmp  [esp+20],dword 8  ; LBA read ramdisk
    jne  fs_no_LBA_read_ramdisk

    mov  eax,[esp+16]      ; LBA block to read
    mov  ecx,[esp+8]       ; abs pointer to return area

    call LBA_read_ramdisk
    jmp  file_system_return
   
  fs_no_LBA_read_ramdisk:


    cmp  [esp+20],dword 0  ; READ
    jne  fs_noramdisk_read
   
    mov  eax,[esp+4]  ; fname
    add  eax,2*12+1
    mov  ebx,[esp+16] ; block start
    inc  ebx
    mov  ecx,[esp+12] ; block count
    mov  edx,[esp+8]  ; return
    mov  esi,[esp+0]
    sub  esi,eax
    add  esi,12+1     ; file name length
    call fileread
   
    jmp  file_system_return
   
   fs_noramdisk_read:
   
   
    cmp  [esp+20],dword 1  ; WRITE
    jne  fs_noramdisk_write
   
    mov  eax,[esp+4]  ; fname
    add  eax,2*12+1
    mov  ebx,[esp+8]  ; buffer
    mov  ecx,[esp+12] ; count to write
    mov  edx,0        ; create new
    call filesave

    ; eax=0 ok - eax=1 not enough free space
   
    jmp  file_system_return
   
  fs_noramdisk_write:
   
    cmp  [esp+20],dword 16  ; START APPLICATION
    jne  fs_noramdisk_start_application
   
    mov  eax,[esp+4]  ; fname
    add  eax,2*12+1

    mov  ebx,0        ; parameters to pass
    cmp  [esp+12],dword 0
    je   no_fl_start_param
    mov  ebx,[0x3010]
    mov  ebx,[ebx+0x10]
    add  ebx,[esp+12]
  no_fl_start_param:

    call start_application_fl
   
    jmp  file_system_return
   
  fs_noramdisk_start_application:
   
  fs_noramdisk:
   
   
    mov  ebx,[dir0]        ; /HARDDISK
    mov  eax,[edi+1]
    cmp  eax,'HD  '
    je   fs_yesharddisk
    cmp  eax,ebx
    jne  fs_noharddisk
   
  fs_yesharddisk:
   
    cmp  [esp+20],dword 8  ; LBA read
    jne  fs_no_LBA_read    ;
    mov  eax,[esp+16]      ; LBA block to read
    mov  ebx,edi           ;
    add  ebx,1+12          ; pointer to FIRST/SECOND/THIRD/FOURTH
    mov  ecx,[esp+8]       ; abs pointer to return area
    call LBA_read          ;
    jmp  file_system_return
   
  fs_no_LBA_read:
   
    cmp  [edi+1+11],byte 0 ; directory read
    je   fs_give_dir1
   
    mov  ebx,[dir1]        ; /FIRST
    mov  eax,[edi+1+12]
    cmp  eax,'1   '
    je   fs_yesharddisk_first
    cmp  eax,ebx
    jne  fs_noharddisk
   
  fs_yesharddisk_first:
   
    cmp  [esp+20],dword 0  ; READ
    jne  fs_noharddisk_read
   
    mov  edi,[esp+0]
    mov  [edi],byte 0 ; zero terminated path

    mov  eax,[esp+4]
    add  eax,12*2
    mov  edi,[esp+0]
    sub  edi,eax
    add  edi,12       ; file length

    mov  eax,[esp+0]  
    inc  eax          ; filename start

    mov  ebx,[esp+12] ; count to read
    mov  ecx,[esp+8]  ; buffer
    mov  edx,[esp+4]
    add  edx,12*2     ; dir start
    mov  esi,[esp+16] ; blocks to read
  
    call file_read

    mov  edi,[esp+0]
    mov  [edi],byte '/' ; 

    jmp  file_system_return
   
   fs_noharddisk_read:
   
   
    cmp  [esp+20],dword 1  ; WRITE
    jne  fs_noharddisk_write
   
    mov  eax,[esp+0]  ; fname
    inc  eax
   
    mov  ebx,[esp+12] ; count to write
    mov  ecx,[esp+8]  ; buffer
    mov  edi,[esp+0]
    mov  [edi],byte 0
    mov  edx,[esp+4]
    add  edx,12*2
  
    call file_write

    mov  edi,[esp+0]
    mov  [edi],byte '/' ; 

    ; eax=0 ok - eax=1 not enough free space

    jmp  file_system_return
   
   
  fs_noharddisk_write:
   
   
    cmp  [esp+20],dword 16       ; START APPLICATION
    jne  fs_noharddisk_start_application
   
    mov  eax,[esp+4]  ; fname
    add  eax,12*2
   
    mov  ebx,[esp+0]  ; length
    sub  ebx,eax
    add  ebx,12
   
    mov  ecx,[esp+4]  ; work area
    add  ecx,512

    mov  ebp,0        ; parameters to pass
    cmp  [esp+12],dword 0
    je   no_hd_start_param
    mov  ebp,[0x3010]
    mov  ebp,[ebp+0x10]
    add  ebp,[esp+12]
  no_hd_start_param:

    call start_application_hd
   
    jmp  file_system_return
   
  fs_noharddisk_start_application:
   
  fs_noharddisk:
   
  file_system_return:
   
    add  esp,24
   
    mov  [esp+36],eax
    mov  [esp+24],ebx
   
    ret
   
   
  fs_give_dir1:
   
     mov  eax,0x10
     mov  ebx,1
     mov  edi,[esp+8]
     mov  esi,dir1
   fs_d1_new:
     mov  ecx,11
     cld
     rep  movsb
     stosb
     add  edi,32-11-1
     dec  ebx
     jnz  fs_d1_new
   
     add  esp,24
   
     mov  [esp+36],dword 0      ; ok read
     mov  [esp+24],dword 32*1   ; dir/data size
     ret



LBA_read_ramdisk:

     cmp  [lba_read_enabled],1
     je   lbarrl1

     mov  ebx,0
     mov  eax,2
     ret

  lbarrl1:

     cmp  eax,18*2*80
     jb   lbarrl2
     mov  ebx,0
     mov  eax,3
     ret

  lbarrl2:

     pusha

     call   restorefatchain

     mov    edi,ecx
     mov    esi,eax

     imul   esi,512
     add    esi,0x100000
     mov    ecx,512
     cld
     rep    movsb

     popa

     mov  eax,0
     mov  ebx,0

     ret
   

LBA_read:
   
; IN:    
;
; eax = LBA block to read
; ebx = pointer to FIRST/SECOND/THIRD/FOURTH
; ecx = abs pointer to return area
   
     cmp  [lba_read_enabled],1
     je   lbarl1
     mov  eax,2
     ret
   
   lbarl1:
   
     cli
     cmp  [hd1_status],0
     je   lbarok

     sti
     call change_task
     jmp  lbarl1

   lbarok:

     call reserve_hd1
     
     sti
   
     push eax
     push ecx
   
     mov  edi,hd_address_table
     mov  esi,dir1
     mov  ecx,4
   blar0:
     mov  eax,[esi]
     cmp  [ebx],eax
     jne  blar1
     mov  eax,[edi+0]
     mov  ebx,[edi+4]
     jmp  blar2
   blar1:
     add  edi,8
     add  esi,11
     loop blar0
   
     mov  eax,1
     mov  ebx,1
     jmp  LBA_read_ret
   
   blar2:
   
     call wait_for_hd_idle

     ; eax = hd port
     ; ebx = set for primary (0x00) or slave (0x10)

     cli
   
     mov   edx,eax
     add   edx,1
     xor   eax,eax
     out   dx,al
     add   edx,1
     mov   al,1
     out   dx,al
     add   edx,1
     mov   al,[esp+4]
     out   dx,al
     add   edx,1
     mov   al,[esp+5]
     out   dx,al
     add   edx,1
     mov   al,[esp+6]
     out   dx,al
   
     add   edx,1
     mov   al,[esp+7]
     and   al,1+2+4+8
     add   al,bl
     add   al,128+64+32
     out   dx,al
   
     add   edx,1
     mov   al,20h
     out   dx,al

     sti
   
     call  wait_for_sector_buffer
   
     cli

     mov   edi,[esp+0]
     mov   ecx,256
     sub   edx,7
    LBA_hd_data:
     in    ax,dx
     stosw
     loop  LBA_hd_data
   
     sti

     xor   eax,eax
     xor   ebx,ebx
   
   LBA_read_ret:
   
     mov  [hd1_status],0
     add  esp,2*4
   
     ret
   

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91福利在线播放| 国产一区中文字幕| 精品视频999| 一区二区三区久久| 欧美日韩大陆一区二区| 亚洲国产成人av网| 日韩欧美激情四射| 狠狠色综合播放一区二区| 久久综合国产精品| 成人午夜伦理影院| 亚洲色图一区二区| 欧美日韩午夜在线视频| 精品无人码麻豆乱码1区2区| 精品va天堂亚洲国产| 国产激情视频一区二区在线观看| 亚洲午夜羞羞片| 欧美美女bb生活片| 久久99国产精品成人| 国产午夜亚洲精品理论片色戒 | 精品三级在线看| 国产一区二区精品久久91| 国产精品国产三级国产有无不卡 | 午夜影视日本亚洲欧洲精品| 日韩午夜在线影院| www.亚洲人| 婷婷久久综合九色国产成人| 国产午夜精品久久久久久久| 欧美最猛黑人xxxxx猛交| 狠狠色狠狠色合久久伊人| 国产精品久久久久久亚洲毛片| 看电影不卡的网站| 久久久一区二区三区| 在线视频综合导航| 国产精品一卡二| 亚洲成人在线观看视频| 国产清纯白嫩初高生在线观看91| 经典一区二区三区| 一区二区三区四区在线| 国产三级精品视频| 制服丝袜激情欧洲亚洲| 99国内精品久久| 免费看日韩精品| 一区二区三区四区精品在线视频| 9人人澡人人爽人人精品| 日本成人中文字幕在线视频| 国产精品国产a级| 精品91自产拍在线观看一区| av成人免费在线| 国内久久婷婷综合| 日韩高清在线电影| 亚洲女同一区二区| 日本一区二区三区四区| 日韩欧美视频一区| 欧美精品 日韩| 欧美中文字幕一二三区视频| av综合在线播放| 精品亚洲aⅴ乱码一区二区三区| 久久―日本道色综合久久| 9191久久久久久久久久久| 成人av在线资源网站| 久久国产精品72免费观看| 婷婷夜色潮精品综合在线| 亚洲国产综合人成综合网站| 亚洲手机成人高清视频| 国产精品久久久久aaaa| 2024国产精品| 久久综合99re88久久爱| 欧美tickling网站挠脚心| 欧美顶级少妇做爰| 欧美精品视频www在线观看 | 在线免费观看日本欧美| 丁香另类激情小说| 国产精品一区二区在线看| 久久国产人妖系列| 经典三级视频一区| 精彩视频一区二区三区| 精品亚洲成a人在线观看| 久久国产精品72免费观看| 看片网站欧美日韩| 狠狠色丁香九九婷婷综合五月| 国产精品久久久久久久蜜臀 | 欧美一区二区啪啪| 欧美精品123区| 欧美精品 日韩| 日韩情涩欧美日韩视频| 精品久久久三级丝袜| 久久久99免费| 久久精品视频一区二区| 久久久久久免费| 国产精品女同一区二区三区| 国产精品国产成人国产三级| 亚洲精选在线视频| 日日夜夜免费精品| 久久国产生活片100| 国产精品影视在线观看| 成人免费看视频| 在线精品视频一区二区三四| 欧美亚洲尤物久久| 51午夜精品国产| 欧美白人最猛性xxxxx69交| 国产午夜亚洲精品不卡| 亚洲精品一二三| 青青草原综合久久大伊人精品优势| 国产精品污网站| 一区二区视频免费在线观看| 丝袜美腿亚洲一区| 国产sm精品调教视频网站| 91捆绑美女网站| 51精品秘密在线观看| 欧美一区二区在线观看| 国产日韩欧美高清| 亚洲一区二区视频| 国产原创一区二区| 97久久精品人人做人人爽50路| 激情成人午夜视频| 9人人澡人人爽人人精品| 在线观看网站黄不卡| 日韩免费视频一区| 亚洲日本在线a| 久久精品72免费观看| 色综合中文字幕国产 | 久久久精品欧美丰满| 亚洲精品日产精品乱码不卡| 美女性感视频久久| 91在线观看一区二区| 日韩一级片网站| 国产午夜精品理论片a级大结局| 日韩精品资源二区在线| 一区二区在线免费观看| 激情图片小说一区| 欧美亚洲动漫精品| 国产欧美日韩在线| 蜜桃一区二区三区在线观看| 91亚洲国产成人精品一区二三| 国产69精品久久99不卡| 91精品国产综合久久精品图片 | 视频在线观看91| 国产成人精品一区二区三区四区| 成人免费视频caoporn| 日韩欧美中文字幕精品| 亚洲人成7777| 大胆欧美人体老妇| 久久色.com| 精品一区二区免费看| 欧美精三区欧美精三区| 亚洲一区二区视频在线观看| 99国产精品久久久久久久久久久| 成人精品高清在线| 久久久激情视频| 精品一区二区影视| 欧美精品自拍偷拍| 一卡二卡三卡日韩欧美| 成人高清免费观看| 2017欧美狠狠色| 黄色日韩网站视频| 精品免费国产一区二区三区四区| 精品区一区二区| 日本大胆欧美人术艺术动态| 欧美欧美欧美欧美| 亚洲国产成人精品视频| 欧美日韩亚洲综合一区| 一区二区三区精品视频在线| 色欧美日韩亚洲| 亚洲一区二区三区视频在线播放| 蜜桃精品在线观看| 制服.丝袜.亚洲.另类.中文| 亚洲h动漫在线| 欧美美女网站色| 美日韩一区二区| 精品欧美久久久| 免费精品视频在线| 精品乱人伦小说| 国产美女在线精品| 国产精品免费视频网站| 成人免费高清在线| 亚洲美女在线一区| 欧美视频第二页| 日韩电影免费在线观看网站| 3d成人动漫网站| 久久99精品网久久| 国产视频不卡一区| 国产成人免费高清| 中文字幕一区二区三区在线播放| 丝袜亚洲另类欧美综合| 欧美成va人片在线观看| 国产精品自拍在线| 日韩美女久久久| 欧美日韩中文国产| 蜜芽一区二区三区| 国产日韩欧美高清在线| 色天天综合久久久久综合片| 亚洲综合偷拍欧美一区色| 69堂成人精品免费视频| 国产乱码精品一品二品| 亚洲欧美一区二区三区极速播放 | 成人免费视频网站在线观看| 亚洲精品视频免费看| 日韩视频一区在线观看| 国产精品一区三区| 亚洲综合一区二区精品导航|