FORMAT/format/include/estex_h.asm
Anatoliy Belyanskiy 6e9ce03009 1. Правильная генерация серийного номера по доке от M$
2. Исправление максимального размера раздела для FAT 16
3. Мелкие правки
2026-01-27 22:28:53 +10:00

237 lines
8.4 KiB
NASM
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;------------------------------
;Estex DOS system api codes
;!!!‚ᥠ­®¬¥à  äã­ªæ¨ï ¯¥à¥¤ îâáï ç¥à¥§ ॣ¨áâà C!!!
;!!!…᫨ ­®¬¥à ä㭪樨 ¯¥à¥¤ ñâáï ¨­ ç¥, ®¡ í⮬ ¡ã¤¥â á®®¡é¥­® ¢ ®¯¨á ­¨¨!!!
;------------------------------
ESTEX_getver = 0x00 ;¯®«ãç¨âì ¢¥àá¨î ¤®á 
ESTEX_chdisk = 0x01 ;ᬥ­  ⥪ã饣® ¤¨áª 
ESTEX_curdisk = 0x02 ;¯®«ãç¨âì ⥪ã騩 ¤¨áª
ESTEX_diskinfo = 0x03 ;¨­ä  ® ¤¨áª¥
ESTEX_DEVRESCAN = 0x08 ;¯¥à¥áª ­¨à®¢ âì ¢á¥ ¤¥¢ ©áë (¤¨áª¨).
ESTEX_bootdisk = 0x09 ;¯®«ãç¨âì ¨«¨ ãáâ ­®¢¨âì á¨á⥬­ë© ¤¨áª
ESTEX_fcreate = 0x0a ;á®§¤ âì ä ©« (á ®¡­ã«¥­¨¥¬ áâ à®£®)
ESTEX_fcreate_new = 0x0b ;á®§¤ âì ä ©« (á ®è¨¡ª®© ¥á«¨ áâ àë© ä ©« ¥áâì)
ESTEX_fdelete = 0x0e ;㤠«¨âì ä ©«
ESTEX_frename = 0x10 ;¯¥à¥¨¬¥­®¢ âì ä ©«
ESTEX_fopen = 0x11 ;®âªàëâì ä ©«
ESTEX_fclose = 0x12 ;§ ªàëâì ä ©«
ESTEX_fread = 0x13 ;¯à®ç¨â âì ¤ ­­ë¥ ¨§ ä ©« 
ESTEX_fwrite = 0x14 ;§ ¯¨á âì ¢ ä ©«
EXTEX_fmovefp = 0x15 ;¯¥à¥¬¥áâ¨âì 㪠§ â¥«ì ¢ ä ©«¥
ESTEX_fattribute = 0x16 ;¯®«ãç¨âì ¨/¨«¨ ¨§¬¥­¨âì  âਡãâë
ESTEX_fget_dt = 0x17 ;¯®«ãç¨âì ¤ âã ä ©« 
ESTEX_fset_dt = 0x18 ;ãáâ ­®¢¨âì ¤ âã ä ©« 
ESTEX_find_first = 0x19 ;¯®¨áª ¯¥à¢®£®...
ESTEX_find_next = 0x1a ;¯®¨áª á«¥¤ãî饣®
ESTEX_mkdir = 0x1b ;á®§¤ âì ª â «®£
ESTEX_rmdir = 0x1c ;㤠«¨âì ª â «®£
ESTEX_chdir = 0x1d ;ᬥ­¨âì ª â «®£
ESTEX_curdir = 0x1e ;¯®«ãç¨âì ⥪ã騩 ª â «®£
ESTEX_systime_get = 0x21 ;¯®«ãç¨âì á¨á⥬­®¥ ¢à¥¬ï
ESTEX_systime_set = 0x22 ;ãáâ ­®¢¨âì á¨á⥬­®¥ ¢à¥¬ï
ESTEX_setmemwin = 0x38 ;<3B>®¤ª«î祭¨¥ áâà ­¨æë ¯ ¬ïâ¨
ESTEX_setmemwin1 = 0x39 ;<3B>®¤ª«î祭¨¥ áâà ­¨æë ¯ ¬ï⨠¢ 1 ®ª­®
ESTEX_setmemwin2 = 0x3a ;<3B>®¤ª«î祭¨¥ áâà ­¨æë ¯ ¬ï⨠¢ 2 ®ª­®
ESTEX_setmemwin3 = 0x3b ;<3B>®¤ª«î祭¨¥ áâà ­¨æë ¯ ¬ï⨠¢ 3 ®ª­®
ESTEX_getmeminfo = 0x3c ;<3B>®«ãç¨âì ¨­ä®à¬ æ¨î ® ¯ ¬ïâ¨
ESTEX_getmem = 0x3d ;‡ ¯à®á¨âì (¯®«ãç¨âì) ¡«®ª ¯ ¬ïâ¨
ESTEX_freemem = 0x3e ;Žá¢®¡®¤¨âì ¡«®ª ¯ ¬ïâ¨
ESTEX_setmem = 0x3a ;ˆ§¬¥­¨âì ¡«®ª ¯ ¬ïâ¨
ESTEX_waitkey = 0x30 ;ަ¨¤ ­¨¥ ᨬ¢®«  á ª« ¢¨ âãàë
ESTEX_scankey = 0x31 ;ޝà®á ª« ¢¨ âãàë ¡¥§ ®¦¨¤ ­¨ï
ESTEX_echokey = 0x32 ;ަ¨¤ ­¨¥ ᨬ¢®«  á ª« ¢¨ âãàë á ¯¥ç âìî
ESTEX_keystat = 0x33 ;<3B>®«ãç¨âì á®áâ®ï­¨¥ ª« ¢¨ âãàë
ESTEX_clearkey = 0x35 ;Žç¨áâ¨âì ¡ãä¥à ª« ¢¨ âãàë ¨ ¢ë¯®«­¨âì äã­ªæ¨î
ESTEX_keyset = 0x36 ;“¯à ¢«¥­¨¥ ­ áâனª ¬¨ ª« ¢¨ âãàë
ESTEX_testkey = 0x37 ;ޝà®á ¡ãä¥à  ª« ¢¨ âãàë
ESTEX_exec = 0x40 ;‚믮«­¨âì ä ©«
ESTEX_exit = 0x41 ;‡ ¢¥à襭¨¥ ¯à®£à ¬¬ë
ESTEX_wait = 0x42 ;<3B>®«ãç¨âì ª®¤ § ¢¥à襭¨ï ¯à®£à ¬¬ë
ESTEX_cmd_getswitch = 0x43 ;‚뤥«¨âì ¯ à ¬¥âà ª®¬ ­¤­®© áâப¨
ESTEX_cmd_dosname = 0x44 ;<3B>८¡à §®¢ âì ¨¬ï ä ©« 
ESTEX_cmd_parse = 0x45 ;<3B> §¡®à ª®¬ ­¤­®© áâப¨
ESTEX_env = 0x46 ;‘¨á⥬­®¥ ®ªà㦥­¨¥
ESTEX_appinfo = 0x47 ;<3B>®«ã祭¨¥ ¨­ä®à¬ æ¨¨ ¯à¨«®¦¥­¨ï
ESTEX_setvmode = 0x50 ;‚ë¡®à ०¨¬  íªà ­ 
ESTEX_getvmode = 0x51 ;<3B>®«ãç¨âì ⥪ã騩 ०¨¬ íªà ­ 
ESTEX_setcursor = 0x52 ;“áâ ­®¢¨âì ¯®§¨æ¨î ªãàá®à 
ESTEX_getcursor = 0x53 ;<3B>®«ãç¨âì ⥪ãéãî ¯®§¨æ¨î ªãàá®à 
ESTEX_setscr = 0x54 ;‚ë¡à âì  ªâ¨¢­ãî áâà ­¨æã íªà ­ 
ESTEX_scrollscr = 0x55 ;<3B>பàã⪠ ®ª­ 
ESTEX_clearscr = 0x56 ;Žç¨á⪠ ®ª­ 
ESTEX_rdchar = 0x57 ;‘ç¨â âì ᨬ¢®« á íªà ­ 
ESTEX_wrchar = 0x58 ;<3B> ¯¥ç â âì ᨬ¢®« ­  íªà ­¥
ESTEX_scrwincopy = 0x59 ;‡ ¯®¬­¨âì ®ª­® íªà ­ 
ESTEX_scrwinrest = 0x5a ;‚®ááâ ­®¢¨âì ®ª­® íªà ­ 
ESTEX_pchar = 0x5b ;<3B> ¯¥ç â âì ᨬ¢®« ¢ ⥪ã饩 ¯®§¨æ¨¨ ªãàá®à 
ESTEX_pchars = 0x5c ;<3B> ¯¥ç â âì áâபã ᨬ¢®«®¢ ¢ ⥪ã饩 ¯®§¨æ¨¨ ªãàá®à 
;-------------------------------------------
_ENVIRONMENT:
._GET_SYS = 0 ;¯®«ãç¨âì á¨á⥬­®¥ ®ªà㦥­¨¥
._GET_VAL = 1 ;¯®«ãç¨âì ¯ à ¬¥âàë 㪠§ ­­®© ¯¥à¥¬¥­­®©
._SET_ENV = 2 ;ãáâ ­®¢¨âì ¯¥à¥¬¥­­ãî
;-------------------------------------------
_CMD_PARSE:
._PARSE_CMD = 0 ;<3B> §®¡à âì áâபã
._GET_DSK = 1 ;‚뤥«¨âì ¨¬ï ¤¨áª 
._GET_DIR = 2 ;‚뤥«¨âì ¤¨à¥ªâ®à¨î
._GET_FILENAME = 3 ;‚뤥«¨âì ¨¬ï ä ©« 
._GET_FILE_EXT = 4 ;‚뤥«¨âì à áè¨à¥­¨¥ ä ©« 
._GET_FULL_FILEPATH = 5 ;‚뤥«¨âì ¨¬ï ¤¨áª , ¯ãâì ª ä ©«ã, ¨¬ï ä ©«  ¨ à áè¨à¥­¨¥ ä ©« 
._NOFUNC = 6 ;‡ à¥§¥à¢¨à®¢ ­ 
._SELECT_ARG = 7 ;‚뤥«¨âì ¯ à ¬¥âà ª®¬ ­¤­®© áâப¨
._CONV_TO_DOS = 8 ;<3B>८¡à §®¢ âì ¨§ 11 ᨬ¢®«ì­®£® ä®à¬ â  ¢ ä®à¬ â „Ž‘
._CONF_FROM_DOS = 9 ;<3B>८¡à §®¢ âì ¨§ ä®à¬ â  „Ž‘ ¢ 11 ᨬ¢®«ì­ë© ä®à¬ â
;--------------------------------------------
_FOPEN:
._IORW = 0 ;®âªàëâì ¤«ï ç⥭¨ï ¨ § ¯¨á¨
._IOREAD = 1 ;®âªàëâì ⮫쪮 ¤«ï ç⥭¨ï
._IOWRITE = 2 ;®âªàëâì ¤«ï § ¯¨á¨
;--------------------------------------------
_MOVEFP:
._SEEK_SET = 0 ;®â ­ ç «  ä ©« 
._SEEK_CUR = 1 ;®â ⥪ã饣® §­ ç¥­¨ï 㪠§ â¥«ï
._SEEK_END = 2 ;®â ª®­æ  ä ©« 
_VMODE:
._T40 = 0x02 ;⥪áâ®¢ë© à¥¦¨¬ 40 ᨬ¢®«®¢
._T80 = 0x03 ;⥪â®á¢ë© ०¨¬ 80 ᨬ¢®«®
._320p = 0x81 ;£à ä¨ç¥áª¨© ०¨¬ 320*256*8¡¨â
._640p = 0x81 ;£à ä¨ç¥áª¨© ०¨¬ 640*256*4¡¨â
._SCREEN0 = 0x0 ;áâà ­¨æ  ०¨¬  0
._SCREEN1 = 0x01 ;áâà ­¨æ  ०¨¬  1
._normal = 0x50 ;०¨¬ ¢ë¢®¤  - ®¡ëç­ë© (¢á¥ ¤ ­­ë¥ ¢ RAM ¨ VRAM)
._transparent = 00001000b ;०¨¬ ¢ë¢®¤  á ¯à®§à ç­ë¬ 梥⮬ (0xff ¨£­®à¨àã¥âáï)
._spr = 00000100b ;०¨¬ á¯à ©â  (¤ ­­ë¥ ¯®¯ ¤ îâ ⮫쪮 ¢ VRAM)
;--------------------------------------------
mmu0 = 0x82 ;cpu window 0 = addr 0x0000
mmu1 = 0xa2 ;... 1 = 0x4000
mmu2 = 0xc2 ;... 2 = 0x8000
mmu3 = 0xe2 ;... 3 = 0xc000
port_y = 0x89 ;port for Y coord
rgmod = 0xc9 ;¯¥à¥ª«îç ¥â áâà ­¨æë ०¨¬ 
border = 0xfe ;¡®à¤îà
rgscr = 0xe9
rgacc = 0xa9
;sys_port3c equ 3ch
;sys_port7c equ 7ch
sys_port_on = 0x7c
sys_port_off = 0x3c
d_tbon = 3 ; ¤ ­­ë¥ ¤«ï ¢ª«î祭¨ï turbo
d_tboff = 2 ; ¤ ­­ë¥ ¤«ï ¢ëª«î祭¨ï turbo
d_rom16on = 1
d_rom16off = 0
cnf_page = 0x40 ;§ ¯à¥â ­  § ¯¨áì á!!!
;com port
CTC_CHAN0 = 0x10
CTC:
._CHAN0 = 0x10
._CHAN1 = 0x11
._CHAN2 = 0x12
._CHAN3 = 0x13
SIO:
.DATA_REG_A = 0x18
.CONTROL_A = 0x19
.DATA_REG_B = 0x1a
.CONTROL_B = 0x1b
;lpt port
PIO:
.DATA_REG_A = 0x1c
.COMMAND_REG_A = 0x1d
.DATA_REG_B = 0x1e
.COMMAND_REG_B = 0x1f
;ISA-8
;-------------------------------------------------------------------------------
;If you want to interaction with ISA devices, you have to make following steps:
;1) send 10h value to port 1FFDh(system port);
;2) send control byte to port 0E2h(third memory window port);
;control byte:
;D7...should be 1
;D6...should be 1
;D5...should be 0
;D4...should be 1
;D3...should be 0
;D2...specify access mode (0 - ISA memory, 1 - ISA ports)
;D1...specify number of ISA slot
;D0...should be 0
;fixed bug with D2 and D1 bits (functional exchange, but not documented).
;The read/write signals are forming from read/write signals memory range 0C000h-0FFFFh.
;And the address lines A13...A0 has taken from processor data-BUS.
;The other ISA-signals such as RESET, AEN, A19...A14 can be set in port 9FBDh. And default value is 00h.
;port 9FBDh:
;D7...RESET, 1=reset, 0=normal
;D6...AEN, 1=
;D5...A19
;D4...A18
;D3...A17
;D2...A16
;D1...A15
;D0...A14
sc_port = 0x1ffd
ISA:
.DIR = 0x9fbd
.BASE_ADDR = 0xc000
.SLOT0_RAM = 0xd0
.SLOT1_RAM = 0xd2
.SLOT0_PORT = 0xd4
.SLOT1_PORT = 0xd6
;VMODE:
;._normal = 0x50 ;०¨¬ ¢ë¢®¤  - ®¡ëç­ë© (¢á¥ ¤ ­­ë¥ ¢ RAM ¨ VRAM)
;._transparent = 00001000b ;०¨¬ ¢ë¢®¤  á ¯à®§à ç­ë¬ 梥⮬ (0xff ¨£­®à¨àã¥âáï)
;._spr = 00000100b ;०¨¬ á¯à ©â  (¤ ­­ë¥ ¯®¯ ¤ îâ ⮫쪮 ¢ VRAM)
cr = 0x0d ;¢®§¢à â ª®à¥âª¨
lf = 0x0a ;­®¢ ï áâப 
space = 0x20 ;ᨬ¢®« ¯à®¡¥« 
tab = 0x09 ;ᨬ¢®« â ¡ã«ï樨
;--------------------------------------------
;BIOS
BIOS_reset_drive = 0x51 ; ‘¡à®á ª®­â஫«¥à  ¨ ­ áâனª  ­  ¤¨áª
BIOS_rd_sector = 0x55 ; —⥭¨¥ (ᥪâ®à®¢) á ãáâனá⢠.
BIOS_wr_sector = 0x56 ; ‡ ¯¨áì (ᥪâ®à®¢) ­  ãáâனá⢮.
BIOS_get_drv_list = 0x5f ; ¯®«ãç¨âì ᯨ᮪ ¤¨áª®¢ëå ãáâனáâ¢
BIOS_get_cursor_coords = 0x8e ; <20>®«ãç¨âì ⥪ã饥 ¯®«®¦¥­¨¥ (ªãàá®à ) ¢ë¢®¤  ­  íªà ­.
BIOS_get_mem_pg = 0xc4 ; ¯®«ãç¨âì 䨧. ­®¬¥à áâà. ¡«®ª 
BIOS_get_pg_tbl = 0xc5 ; get pages table from handle (id_blk)
BIOS_clear_scr = 0x8d ; ®ç¨á⪠ íªà ­ , 㪠§ ­¨¥¬ ᨬ¢®«  § ¯®«­¥­¨ï
BIOS_get_cursor = 0x8e ; ã§­ âì ¯®«®¦. ªãàá®à 
BIOS_set_cursor = 0x84 ; ãáâ. ¯®«®¦. ªãàá®à 
BIOS_print_chars = 0x82 ; ¢ë¢®¤ ᨬ¢®«®¢ ­  íªà ­ á ⥪ã饣® §­ ª®¬¥áâ  ¡¥§  âਡã⮢
BIOS_screen_save = 0xb2 ; á®åà ­¨âì íªà ­...
BIOS_screen_restore = 0xb3 ; ¢®ááâ ­®¢¨âì íªà ­...
BIOS_screen_get_char = 0xb4 ; ¯à®ç¨â âì (¢§ïâì) ᨬ¢®« á íªà ­ 
BIOS_screen_set_char = 0xb5 ; ãáâ ­®¢¨âì ᨬ¢®« ­  íªà ­¥
BIOS_screen_move = 0xb7 ; ¯¥à¥¬¥é¥­¨¥ ®ª­  (íªà ­ )