mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 01:11:48 +03:00
removed #55aa for GenIOCTL
new subfunction GetMoreParams for GenIOCTL
This commit is contained in:
parent
b096191dce
commit
b38d6ccd48
@ -499,7 +499,7 @@ write_to_BPB: PUSH BC
|
|||||||
|
|
||||||
;
|
;
|
||||||
write_no_BPB: ld a,(disk) ; ®¬¥à § ¤ ®£® ¤¨áª
|
write_no_BPB: ld a,(disk) ; ®¬¥à § ¤ ®£® ¤¨áª
|
||||||
ld de,Dss.DRV.GenIOCTL.Enter
|
;ld de,Dss.DRV.GenIOCTL.Enter
|
||||||
ld bc,Dss.DRV.GenIOCTL.GetParams
|
ld bc,Dss.DRV.GenIOCTL.GetParams
|
||||||
rst ToDSS.DRV
|
rst ToDSS.DRV
|
||||||
ex af,af'
|
ex af,af'
|
||||||
|
|||||||
@ -31,7 +31,7 @@ BOOTDSK:
|
|||||||
;
|
;
|
||||||
.loop: PUSH BC
|
.loop: PUSH BC
|
||||||
LD A,C
|
LD A,C
|
||||||
LD DE,Dss.DRV.GenIOCTL.Enter
|
;LD DE,Dss.DRV.GenIOCTL.Enter
|
||||||
LD BC,Dss.DRV.GenIOCTL.GetParams
|
LD BC,Dss.DRV.GenIOCTL.GetParams
|
||||||
RST ToDSS.DRV
|
RST ToDSS.DRV
|
||||||
;[x] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
;[x] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||||
|
|||||||
@ -9,19 +9,20 @@
|
|||||||
; HL - ¡ãä¥à (256 ¡ ©â®¢) ¤«ï à áè¨à¥ëå ¤ ëå:
|
; HL - ¡ãä¥à (256 ¡ ©â®¢) ¤«ï à áè¨à¥ëå ¤ ëå:
|
||||||
; B != 0 - áç¨â âì ᢮¡®¤®¥ ¬¥áâ®
|
; B != 0 - áç¨â âì ᢮¡®¤®¥ ¬¥áâ®
|
||||||
; ;
|
; ;
|
||||||
; à §¬¥à ¯®«ï - 1 ¡ ©â
|
; à §¬¥à ¯®«ï (BYTE)
|
||||||
; ” ©«®¢ ï á¨á⥬
|
; ” ©«®¢ ï á¨á⥬
|
||||||
; ;
|
; ;
|
||||||
; à §¬¥à ¯®«ï - 1 ¡ ©â
|
; à §¬¥à ¯®«ï (BYTE)
|
||||||
; ‘¥à¨©ë© ®¬¥à ¤¨áª
|
; ‘¥à¨©ë© ®¬¥à ¤¨áª
|
||||||
; ;
|
; ;
|
||||||
; à §¬¥à ¯®«ï - 1 ¡ ©â
|
; à §¬¥à ¯®«ï (BYTE)
|
||||||
; Œ¥âª ¤¨áª
|
; Œ¥âª ¤¨áª
|
||||||
; ;
|
; ;
|
||||||
; à §¬¥à ¯®«ï - 1 ¡ ©â
|
; à §¬¥à ¯®«ï (BYTE)
|
||||||
; 䨧¨ç¥áª¨© ®¬¥à ¤¨áª , ®¬¥à à §¤¥«
|
; 䨧¨ç¥áª¨© ®¬¥à ¤¨áª
|
||||||
|
; ®¬¥à à §¤¥«
|
||||||
; ;
|
; ;
|
||||||
; à §¬¥à ¯®«ï - 1 ¡ ©â
|
; à §¬¥à ¯®«ï (BYTE)
|
||||||
; § १¥à¢¨à®¢ ®
|
; § १¥à¢¨à®¢ ®
|
||||||
; ;
|
; ;
|
||||||
; ¢ë室: CF=0:
|
; ¢ë室: CF=0:
|
||||||
@ -59,7 +60,7 @@ DISKINF: LD C,B
|
|||||||
;;;;
|
;;;;
|
||||||
;
|
;
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
LD HL,FAT_STRING ;!HARDCODE FAT FS
|
LD HL,.FAT_STRING ;!HARDCODE FAT FS
|
||||||
LD C,5 ;!HARDCODE _sBOOT_SECTOR_PARAMS.ID_FAT.length
|
LD C,5 ;!HARDCODE _sBOOT_SECTOR_PARAMS.ID_FAT.length
|
||||||
CALL .mCOPY_LOOP
|
CALL .mCOPY_LOOP
|
||||||
; 12, 16 or 32
|
; 12, 16 or 32
|
||||||
@ -94,7 +95,7 @@ DISKINF: LD C,B
|
|||||||
POP AF
|
POP AF
|
||||||
PUSH DE
|
PUSH DE
|
||||||
;LD A,XH
|
;LD A,XH
|
||||||
LD DE,Dss.DRV.GenIOCTL.Enter
|
;LD DE,Dss.DRV.GenIOCTL.Enter
|
||||||
LD BC,Dss.DRV.GenIOCTL.GetParams
|
LD BC,Dss.DRV.GenIOCTL.GetParams
|
||||||
RST ToDSS.DRV
|
RST ToDSS.DRV
|
||||||
POP DE
|
POP DE
|
||||||
@ -104,6 +105,7 @@ DISKINF: LD C,B
|
|||||||
POP DE
|
POP DE
|
||||||
EXX
|
EXX
|
||||||
JR C,.error_drv
|
JR C,.error_drv
|
||||||
|
;
|
||||||
LD A,2 ;!HARDCODE ¤«¨ ¯®«ï ü4 2 ¡ ©â : 䨧 ®¬¥à ¤¨áª , ®¬¥à à §¤¥« ¤¨áª
|
LD A,2 ;!HARDCODE ¤«¨ ¯®«ï ü4 2 ¡ ©â : 䨧 ®¬¥à ¤¨áª , ®¬¥à à §¤¥« ¤¨áª
|
||||||
LD (DE),A
|
LD (DE),A
|
||||||
INC DE
|
INC DE
|
||||||
@ -182,6 +184,8 @@ DISKINF: LD C,B
|
|||||||
LDIR
|
LDIR
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
|
.FAT_STRING: DB 'FAT12'
|
||||||
|
;
|
||||||
;
|
;
|
||||||
GetFreeSpace: LD A,1
|
GetFreeSpace: LD A,1
|
||||||
LD (CORE_BUFFERS.FS_Buffer.UPD_FSINFO),A
|
LD (CORE_BUFFERS.FS_Buffer.UPD_FSINFO),A
|
||||||
@ -234,7 +238,6 @@ GetFreeSpace: LD A,1
|
|||||||
EXX
|
EXX
|
||||||
JP .loop_free_space
|
JP .loop_free_space
|
||||||
;
|
;
|
||||||
FAT_STRING: DB 'FAT12'
|
|
||||||
;
|
;
|
||||||
; DE - ¡ãä¥à
|
; DE - ¡ãä¥à
|
||||||
GET_LABEL: PUSH DE
|
GET_LABEL: PUSH DE
|
||||||
|
|||||||
@ -108,7 +108,7 @@ RST_30: JP MOUSE_DRV.API
|
|||||||
;!FIXIT
|
;!FIXIT
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
; <[MAIN INT]> ;
|
; <[MAIN INT]> ;
|
||||||
BLOCK #38-$,#C7 ;
|
BLOCK #38-$,#C7 ;shortblock-ok
|
||||||
/*
|
/*
|
||||||
;!TEST SIO INT
|
;!TEST SIO INT
|
||||||
; reg 0 - error reset
|
; reg 0 - error reset
|
||||||
@ -267,21 +267,6 @@ LOGDRV EQU DEVICE + DEVICE.End
|
|||||||
.Reserved_1 EQU 13
|
.Reserved_1 EQU 13
|
||||||
.Reserved_2 EQU 14
|
.Reserved_2 EQU 14
|
||||||
.Reserved_3 EQU 15
|
.Reserved_3 EQU 15
|
||||||
; ‚•Ž„: L - «®£¨ç¥áª¨© ®¬¥à ¢ â ¡«¨æ¥
|
|
||||||
; ‚›•Ž„: IY - ç «® § ¯¨á¨
|
|
||||||
; <20>Ž<EFBFBD>’ˆ’: HL, IY. HL<-->DE
|
|
||||||
; MACRO LOGDRV_ENTRY_FIND tbl_addr
|
|
||||||
; LD H,0
|
|
||||||
; ADD HL,HL
|
|
||||||
; ADD HL,HL
|
|
||||||
; ADD HL,HL
|
|
||||||
; ADD HL,HL
|
|
||||||
; ;LD B,H
|
|
||||||
; ;LD C,L
|
|
||||||
; EX DE,HL
|
|
||||||
; LD IY,tbl_addr
|
|
||||||
; ADD IY,DE
|
|
||||||
; ENDM
|
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -289,7 +274,7 @@ LOGDRV EQU DEVICE + DEVICE.End
|
|||||||
;-----------------------[ram_disk-drv.asm table]-----------------------;
|
;-----------------------[ram_disk-drv.asm table]-----------------------;
|
||||||
; ’€<E28099>‹ˆ–€ ‘ŽŽ’‚…’‘’‚ˆŸ Œ…†„“ ”ˆ‡ˆ—…‘ŠˆŒ <20>ŽŒ…<C592>ŽŒ <20>€Œ„ˆ‘Š€ ˆ …ƒŽ RAM-DISK ID
|
; ’€<E28099>‹ˆ–€ ‘ŽŽ’‚…’‘’‚ˆŸ Œ…†„“ ”ˆ‡ˆ—…‘ŠˆŒ <20>ŽŒ…<C592>ŽŒ <20>€Œ„ˆ‘Š€ ˆ …ƒŽ RAM-DISK ID
|
||||||
; Log Number: DB RAM_Drive_Log_Number, RAM_Drive_ID ;(BIOS 0-15), (Block ID for BIOS)
|
; Log Number: DB RAM_Drive_Log_Number, RAM_Drive_ID ;(BIOS 0-15), (Block ID for BIOS)
|
||||||
RAMDTBL EQU LOGDRV +DRIVES_DRIVER.LOGDRV.Size
|
RAMDTBL EQU LOGDRV + DRIVES_DRIVER.LOGDRV.Size
|
||||||
.TBL_Entry EQU 2
|
.TBL_Entry EQU 2
|
||||||
.Size EQU .TBL_Entry * MAX_RAMDRIVES
|
.Size EQU .TBL_Entry * MAX_RAMDRIVES
|
||||||
; RAMDTBL: DUP MAX_RAMDRIVES * RAMDTBL.TBL_Entry
|
; RAMDTBL: DUP MAX_RAMDRIVES * RAMDTBL.TBL_Entry
|
||||||
|
|||||||
803
DSS/DSS_API.TXT
Normal file
803
DSS/DSS_API.TXT
Normal file
@ -0,0 +1,803 @@
|
|||||||
|
## Системные вызовы дисковой подсистемы (DSS) v1.71
|
||||||
|
|
||||||
|
Вызов функций DSS в системе Estex выполняется из ассемблера.
|
||||||
|
Необходимые параметры указываются в различных регистрах, регистр **C**
|
||||||
|
используется для указания номера функции.
|
||||||
|
|
||||||
|
Так, наша программа для Estex будет выглядеть наподобие:
|
||||||
|
|
||||||
|
ORG #8100 ;адрес точки входа
|
||||||
|
|
||||||
|
LD HL,MSG ;сообщение для вывода
|
||||||
|
|
||||||
|
LD C,5Ch ;номер системного вызова (PCHARS)
|
||||||
|
|
||||||
|
RST 10h ;вызов подсистемы
|
||||||
|
|
||||||
|
LD C,41h ;номер системного вызова (EXIT)
|
||||||
|
|
||||||
|
RST 10h ;вызов подсистемы
|
||||||
|
|
||||||
|
MSG db "Hello, world!",0Dh,0Ah ;наша строка
|
||||||
|
|
||||||
|
db 0 ;конец строки
|
||||||
|
|
||||||
|
Следом за таблицей есть пояснение по двум новым функциям 0Ch и 0Dh.
|
||||||
|
|
||||||
|
+------------------------------------------------------------------------------------------------------------+
|
||||||
|
+------------------------------------------------------------------------------------------------------------+
|
||||||
|
| **Функции идентификации системы** |
|
||||||
|
+------------------------------------------------------------------------------------------------------------+
|
||||||
|
| **00h (00) VERSION (Версия DSS)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| C - 00h | D - номер версии |
|
||||||
|
| | E - модификация |
|
||||||
|
| | BC - номер сборки |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **Функции для работы с диском** |
|
||||||
|
+------------------------------------------------------------------------------------------------------------+
|
||||||
|
| **01h (01) CHDISK (Смена текущего диска)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| A - номер диска (0-A,1-B...) | A - код ошибки, если CF=1 |
|
||||||
|
| C - 01h | A - максимальный номер диска, если |
|
||||||
|
| | CF=0 |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **02h (02) CURDISK (Номер текущего диска)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| C - 02h | A - код ошибки, если CF=1 |
|
||||||
|
| | A - текущий номер диска |
|
||||||
|
| | (0-A,1-B...), если CF=0 |
|
||||||
|
| | C - максимальный номер диска, |
|
||||||
|
| | если CF=0 |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **03h (03) DSKINFO (Информация о диске) добавить описание** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| A - номер диска (0-A,1-B...#FF-текущий) | A - код ошибки, если CF=1 |
|
||||||
|
| C - 03h | A - размер кластера в секторах, |
|
||||||
|
| | если CF=0 |
|
||||||
|
| Если A bit7 = 1 и A != #FF: | HL':HL - общее кол-во кластеров |
|
||||||
|
| | DE':DE - свободных кластеров |
|
||||||
|
| HL - буфер (256 байтов) для расширенных данных: | BC - размер сектора в байтах |
|
||||||
|
| | |
|
||||||
|
| Формат полей - длина поля (1 байт), данные поля. | |
|
||||||
|
| | |
|
||||||
|
| Файловая система; **string** | |
|
||||||
|
| | |
|
||||||
|
| Серийный номер диска; **dword** | |
|
||||||
|
| | |
|
||||||
|
| Метка диска; **string** | |
|
||||||
|
| | |
|
||||||
|
| Физический номер диска, номер раздела; **word** | |
|
||||||
|
| | |
|
||||||
|
| **Остальные поля зарезервированы** | |
|
||||||
|
| | |
|
||||||
|
| B -- если равен нулю, то подсчёт свободных кластеров на разделе | |
|
||||||
|
| осуществляться не будет | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **09h (09) BOOTDSK (Номер системного диска)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| C - 09h | A - код ошибки, если CF=1 |
|
||||||
|
| B = 0 | A - номер системного диска |
|
||||||
|
| | (0-A,1-B...), если CF=0 |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **Функции для работы с файлами** |
|
||||||
|
+------------------------------------------------------------------------------------------------------------+
|
||||||
|
| **0Ah (10) CREATE (Создание файла)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| HL - указатель на файловую спецификацию | A - код ошибки, если CF=1 |
|
||||||
|
| A - атрибут файла | A - файловый манипулятор, если CF=0 |
|
||||||
|
| C - 0Ah | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **0Bh (11) CREATE NEW FILE (Создание нового файла)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| HL - указатель на файловую спецификацию | A - код ошибки, если CF=1 |
|
||||||
|
| A - атрибут файла | A - файловый манипулятор, если CF=0 |
|
||||||
|
| C - 0Bh | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **0Eh (14) DELETE (Удаление файла)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| HL - указатель на файловую спецификацию | A - код ошибки, если CF=1 |
|
||||||
|
| C - 0Eh | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **10h (16) RENAME (Переименование файла)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| HL - указатель на старое имя файла | A - код ошибки, если CF=1 |
|
||||||
|
| DE - указатель на новое имя файла | |
|
||||||
|
| C - 10h | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **11h (17) OPEN (Открытие файла)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| HL - указатель на файловую спецификацию | A - код ошибки, если CF=1 |
|
||||||
|
| A - режим доступа | A - файловый манипулятор, если CF=0 |
|
||||||
|
| A=0 чтение/запись | |
|
||||||
|
| A=1 чтение | |
|
||||||
|
| A=2 запись | |
|
||||||
|
| C - 11h | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **12h (18) CLOSE (Закрытие файла)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| A - файловый манипулятор | A - код ошибки, если CF=1 |
|
||||||
|
| C - 12h | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **13h (19) READ (Чтение из файла)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| A - файловый манипулятор | A - код ошибки, если CF=1 |
|
||||||
|
| HL - адрес в памяти | если CF=0: |
|
||||||
|
| DE - количество читаемых байт | DE - реальное количество |
|
||||||
|
| C - 13h | прочитанных байт |
|
||||||
|
| | A = 0 прочитаны все байты |
|
||||||
|
| | A = #FF прочитано меньшее число |
|
||||||
|
| | байт или конец файла |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **14h (20) WRITE (Запись в файл)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| A - файловый манипулятор | A - код ошибки, если CF=1 |
|
||||||
|
| HL - адрес в памяти | DE - реальное количество записанных |
|
||||||
|
| DE - количество записываемых байт | байт |
|
||||||
|
| C - 14h | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **15h (21) MOVE_FP (Перемещение указателя в файле)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| A - файловый манипулятор | A - код ошибки, если CF=1 |
|
||||||
|
| HL:IX - смещение указателя в файле | HL:IX - новое значение указателя |
|
||||||
|
| B - способ перемещения: | |
|
||||||
|
| B=0 от начала файла | |
|
||||||
|
| B=1 от текущего значения указателя | |
|
||||||
|
| B=2 от конца файла | |
|
||||||
|
| C - 15h | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **16h (22) ATTRIB (Получение/изменение атрибута файла)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| HL - указатель на файловую спецификацию | A - код ошибки, если CF=1 |
|
||||||
|
| B - режим доступа | A - атрибут файла, если CF=0 |
|
||||||
|
| B = 0 получить атрибут | |
|
||||||
|
| B = 1 установить атрибут | |
|
||||||
|
| A - атрибут файла | |
|
||||||
|
| C - 16h | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **17h (23) GET_D_T (Информация о дате и времени файла)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| A - файловый манипулятор | A - код ошибки, если CF=1 |
|
||||||
|
| C - 17h | D - день |
|
||||||
|
| | E - месяц |
|
||||||
|
| | IX - год |
|
||||||
|
| | H - час |
|
||||||
|
| | L - минуты |
|
||||||
|
| | B - секунды |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **18h (24) PUT_D_T (Изменение даты и времени файла)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| A - файловый манипулятор | A - код ошибки, если CF=1 |
|
||||||
|
| D - день | |
|
||||||
|
| E - месяц | |
|
||||||
|
| IX - год | |
|
||||||
|
| H - час | |
|
||||||
|
| L - минуты | |
|
||||||
|
| B - секунды | |
|
||||||
|
| C - 18h | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **19h (25) F_FIRST (Поиск первого совпадающего файла)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| A - атрибуты, используемые при поиске | A - код ошибки, если CF=1 |
|
||||||
|
| HL - указатель на файловую спецификацию | |
|
||||||
|
| DE - рабочий буфер 44 байта, если B=0, если B=1, то максимум 46 байт | |
|
||||||
|
| B = 0 - имя найденного файла в формате 11 байт "FilenameExt" | |
|
||||||
|
| B = 1 - имя найденного файла в формате DOS "filename.ext",0 | |
|
||||||
|
| C - 19h | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **1Ah (26) F_NEXT (Поиск следующего совпадающего файла)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| DE - указатель на рабочий буфер | A - код ошибки, если CF=1 |
|
||||||
|
| C - 1Ah | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **1Bh (27) MKDIR (Создание каталога)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| HL - указатель на файловую спецификацию | A - код ошибки, если CF=1 |
|
||||||
|
| C - 1Bh | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **1Ch (28) RMDIR (Устранение каталога)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| HL - указатель на файловую спецификацию | A - код ошибки, если CF=1 |
|
||||||
|
| C - 1Ch | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **1Dh (29) CHDIR (Смена текущего каталога)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| HL - указатель на файловую спецификацию | A - код ошибки, если CF=1 |
|
||||||
|
| C - 1Dh | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **1Eh (30) CURDIR (Информация о текущем каталоге)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| HL - буфер в памяти 256 байт | A - код ошибки, если CF=1 |
|
||||||
|
| C - 1Eh | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **Функции для работы с датой и временем** |
|
||||||
|
+------------------------------------------------------------------------------------------------------------+
|
||||||
|
| **21h (33) SYSTIME (Текущая дата и время)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| C - 21h | D - день |
|
||||||
|
| | E - месяц |
|
||||||
|
| | IX - год |
|
||||||
|
| | H - час |
|
||||||
|
| | L - минуты |
|
||||||
|
| | B - секунды |
|
||||||
|
| | C - день недели |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **22h (34) SETTIME (Установить текущую дату и время)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| D - день | A - код ошибки, если CF=1 |
|
||||||
|
| E - месяц | |
|
||||||
|
| IX - год | |
|
||||||
|
| H - час | |
|
||||||
|
| L - минуты | |
|
||||||
|
| B - секунды | |
|
||||||
|
| C - 22h | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **Функции управления памятью** |
|
||||||
|
+------------------------------------------------------------------------------------------------------------+
|
||||||
|
| **38h (56) SETWIN (Подключение страницы памяти)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| A - идентификатор блока памяти | A - код ошибки, если CF=1 |
|
||||||
|
| B - номер страницы в блоке (0,1,2...) | A - номер замещенной страницы, если |
|
||||||
|
| H - биты 6 и 7 задают номер окна, в которое будет подключена | CF=0 |
|
||||||
|
| страница | |
|
||||||
|
| C - 38h | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **39h (57) SETWIN1 (Подключение страницы памяти в первое окно)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| A - идентификатор блока памяти | A - код ошибки, если CF=1 |
|
||||||
|
| B - номер страницы в блоке (0,1,2...) | A - номер замещенной страницы, если |
|
||||||
|
| C - 39h | CF=0 |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **3Ah (58) SETWIN2 (Подключение страницы памяти во второе окно)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| A - идентификатор блока памяти | A - код ошибки, если CF=1 |
|
||||||
|
| B - номер страницы в блоке (0,1,2...) | A - номер замещенной страницы, если |
|
||||||
|
| C - 3Ah | CF=0 |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **3Bh (59) SETWIN3 (Подключение страницы памяти в третье окно)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| A - идентификатор блока памяти | A - код ошибки, если CF=1 |
|
||||||
|
| B - номер страницы в блоке (0,1,2...) | A - номер замещенной страницы, если |
|
||||||
|
| C - 3Bh | CF=0 |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **3Ch (60) INFOMEM (Информация о памяти)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| C - 3Ch | HL - общее количество страниц |
|
||||||
|
| | BC - количество свободных страниц |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **3Dh (61) GETMEM (Выделение блока памяти)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| B - размер блока в страницах по 16 килобайт | A - код ошибки, если CF=1 |
|
||||||
|
| C - 3Dh | A - идентификатор блока памяти, |
|
||||||
|
| | если CF=0 |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **3Eh (62) FREEMEM (Освобождение блока памяти)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| A - идентификатор блока памяти | A - код ошибки, если CF=1 |
|
||||||
|
| C - 3Eh | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **3Fh (63) SETMEM (Изменение блока памяти)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| A - идентификатор блока памяти | A - код ошибки, если CF=1 |
|
||||||
|
| B - новый размер блока | |
|
||||||
|
| C - 3Fh | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **Функции ввода с клавиатуры** |
|
||||||
|
+------------------------------------------------------------------------------------------------------------+
|
||||||
|
| **30h (48) WAITKEY (Ожидание символа с клавиатуры)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| C - 30h | A - код символа |
|
||||||
|
| | D - позиционный код |
|
||||||
|
| | E - ASCII код |
|
||||||
|
| | C - режим клавиатуры: |
|
||||||
|
| | bit7 - RUS/LAT |
|
||||||
|
| | bit3 - Num Lock |
|
||||||
|
| | bit2 - Scroll Lock |
|
||||||
|
| | bit1 - Insert |
|
||||||
|
| | bit0 - Caps Lock |
|
||||||
|
| | B - состояние shift'ов: |
|
||||||
|
| | bit7 - Left Shift |
|
||||||
|
| | bit6 - Right Shift |
|
||||||
|
| | bit5 - Ctrl |
|
||||||
|
| | bit4 - Alt |
|
||||||
|
| | bit3 - Left Ctrl |
|
||||||
|
| | bit2 - Left Alt |
|
||||||
|
| | bit1 - Right Ctrl |
|
||||||
|
| | bit0 - Right Alt |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **31h (49) SCANKEY (Опрос клавиатуры без ожидания)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| C - 31h | ZF = 1 - нет клавиш |
|
||||||
|
| | A - код символа |
|
||||||
|
| | D - позиционный код |
|
||||||
|
| | E - ASCII код |
|
||||||
|
| | C - режим клавиатуры: |
|
||||||
|
| | bit7 - RUS/LAT |
|
||||||
|
| | bit3 - Num Lock |
|
||||||
|
| | bit2 - Scroll Lock |
|
||||||
|
| | bit1 - Insert |
|
||||||
|
| | bit0 - Caps Lock |
|
||||||
|
| | B - состояние shift'ов: |
|
||||||
|
| | bit7 - Left Shift |
|
||||||
|
| | bit6 - Right Shift |
|
||||||
|
| | bit5 - Ctrl |
|
||||||
|
| | bit4 - Alt |
|
||||||
|
| | bit3 - Left Ctrl |
|
||||||
|
| | bit2 - Left Alt |
|
||||||
|
| | bit1 - Right Ctrl |
|
||||||
|
| | bit0 - Right Alt |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **32h (50) ECHOKEY (Ожидание символа с клавиатуры с печатью без скролла)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| C - 32h | A - код символа |
|
||||||
|
| | D - позиционный код |
|
||||||
|
| | E - ASCII код |
|
||||||
|
| | C - режим клавиатуры: |
|
||||||
|
| | bit7 - RUS/LAT |
|
||||||
|
| | bit3 - Num Lock |
|
||||||
|
| | bit2 - Scroll Lock |
|
||||||
|
| | bit1 - Insert |
|
||||||
|
| | bit0 - Caps Lock |
|
||||||
|
| | B - состояние shift'ов: |
|
||||||
|
| | bit7 - Left Shift |
|
||||||
|
| | bit6 - Right Shift |
|
||||||
|
| | bit5 - Ctrl |
|
||||||
|
| | bit4 - Alt |
|
||||||
|
| | bit3 - Left Ctrl |
|
||||||
|
| | bit2 - Left Alt |
|
||||||
|
| | bit1 - Right Ctrl |
|
||||||
|
| | bit0 - Right Alt |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **33h (51) CTRLKEY (Получить состояние клавиатуры)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| C - 33h | A = 0 - нет символов в буфере |
|
||||||
|
| | C - режим клавиатуры: |
|
||||||
|
| | bit7 - RUS/LAT |
|
||||||
|
| | bit3 - Num Lock |
|
||||||
|
| | bit2 - Scroll Lock |
|
||||||
|
| | bit1 - Insert |
|
||||||
|
| | bit0 - Caps Lock |
|
||||||
|
| | B - состояние shift'ов: |
|
||||||
|
| | bit7 - Left Shift |
|
||||||
|
| | bit6 - Right Shift |
|
||||||
|
| | bit5 - Ctrl |
|
||||||
|
| | bit4 - Alt |
|
||||||
|
| | bit3 - Left Ctrl |
|
||||||
|
| | bit2 - Left Alt |
|
||||||
|
| | bit1 - Right Ctrl |
|
||||||
|
| | bit0 - Right Alt |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **35h (53) K_CLEAR (Очистить буфер клавиатуры и выполнить функцию)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| B - номер функции 30h, 31h, 32h, 33h или 34h | В зависимости от указанной функции |
|
||||||
|
| C - 35h | в регистре B. |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **36h (54) K_SETUP (Управление настройками клавиатуры)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| B - номер подфункции | В зависимости от указанной функции |
|
||||||
|
| C - 36h | в регистре B. |
|
||||||
|
| | |
|
||||||
|
| B = 0, установить раскладку клавиатуры | |
|
||||||
|
| A - номер раскладки | |
|
||||||
|
| | |
|
||||||
|
| > 0 - normal | |
|
||||||
|
| > 1 - shift | |
|
||||||
|
| > 2 - caps lock | |
|
||||||
|
| > 3 - caps lock + shift | |
|
||||||
|
| > 4 - normal (альтернативная кл.) | |
|
||||||
|
| > 5 - shift (альтернативная кл.) | |
|
||||||
|
| > 6 - caps lock (альтернативная кл.) | |
|
||||||
|
| > 7 - caps lock + shift (альтернативная кл.) | |
|
||||||
|
| | |
|
||||||
|
| -------------------------------------------------------------------- | |
|
||||||
|
| | |
|
||||||
|
| B = 1, получить состояние звуковых переменных | |
|
||||||
|
| B = 2, установить звуковые переменные | |
|
||||||
|
| A - значение переменной | |
|
||||||
|
| bit0 - сигнал переполнения буфера клавиатуры | |
|
||||||
|
| bit1 - сигнал переключения на альтернативную раскладку клавиатуры | |
|
||||||
|
| | |
|
||||||
|
| ------------------------------------------------------------------- | |
|
||||||
|
| | |
|
||||||
|
| B = 3, включить отображение курсора | |
|
||||||
|
| | |
|
||||||
|
| B = 4, выключить отображение курсора | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **37h (55) TESTKEY (Опрос буфера клавиатуры)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| C - 37h | ZF = 1 - нет символов в буфере |
|
||||||
|
| | A - код символа |
|
||||||
|
| | D - позиционный код |
|
||||||
|
| | E - ASCII код |
|
||||||
|
| | C - режим клавиатуры: |
|
||||||
|
| | bit7 - RUS/LAT |
|
||||||
|
| | bit3 - Num Lock |
|
||||||
|
| | bit2 - Scroll Lock |
|
||||||
|
| | bit1 - Insert |
|
||||||
|
| | bit0 - Caps Lock |
|
||||||
|
| | B - состояние shift'ов: |
|
||||||
|
| | bit7 - Left Shift |
|
||||||
|
| | bit6 - Right Shift |
|
||||||
|
| | bit5 - Ctrl |
|
||||||
|
| | bit4 - Alt |
|
||||||
|
| | bit3 - Left Ctrl |
|
||||||
|
| | bit2 - Left Alt |
|
||||||
|
| | bit1 - Right Ctrl |
|
||||||
|
| | bit0 - Right Alt |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **Функции для исполнения программ** |
|
||||||
|
+------------------------------------------------------------------------------------------------------------+
|
||||||
|
| **40h (64) EXEC (Выполнить файл)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| HL - указатель на файловую спецификацию | A - код ошибки, если CF=1 |
|
||||||
|
| B = 0 - загрузить и выполнить программу с поиском в PATH | A - код завершения, если CF=0 |
|
||||||
|
| B = 1 - загрузить и выполнить программу без поиска в PATH | |
|
||||||
|
| C - 40h | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **41h (65) EXIT (Завершение программы)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| B - код завершения | A - код ошибки, если CF=1 |
|
||||||
|
| C - 41h | A - код завершения, если CF=0 |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **42h (66) GET_ERR (Получить код завершения программы)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| C - 42h | A - код завершения |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **Функции для работы со строками и командной строкой** |
|
||||||
|
+------------------------------------------------------------------------------------------------------------+
|
||||||
|
| **43h (67) GSWITCH (Выделить параметр командной строки)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| HL - указатель командной строки | HL - указатель на следующий |
|
||||||
|
| DE - буфер для выделяемого параметра | параметр командной строки |
|
||||||
|
| C - 43h | CF = 0 - конец строки не достигнут |
|
||||||
|
| | (есть другие параметры) |
|
||||||
|
| | CF = 1 - конец строки (в буфер |
|
||||||
|
| | перенесён последний параметр или |
|
||||||
|
| | ноль) |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **44h (68) DOSNAME (Преобразовать имя файла)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| C - 44h | A - код ошибки, если CF=1 |
|
||||||
|
| B = 0, преобразовать из 11 символьного формата в формат ДОС | |
|
||||||
|
| HL - 11 символов имени файла | |
|
||||||
|
| DE - буфер для имени в формате ДОС | |
|
||||||
|
| B = 1, преобразовать из формата ДОС в 11 символьный формат | |
|
||||||
|
| HL - имя файла в формате ДОС | |
|
||||||
|
| DE - 11 символов имени файла | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **45h (69) EXCMDLN (Разбор командной строки)** |
|
||||||
|
+------------------------------------------------------------------------------------------------------------+
|
||||||
|
| Входные значения: |
|
||||||
|
| HL - указатель командной строки |
|
||||||
|
| DE - указатель на буфер пользователя |
|
||||||
|
| C - 45h |
|
||||||
|
| B - номер подфункции: |
|
||||||
|
| |
|
||||||
|
| 0 - Разобрать строку; |
|
||||||
|
| 1 - Выделить имя диска; |
|
||||||
|
| 2 - Выделить директорию; |
|
||||||
|
| 3 - Выделить имя файла; |
|
||||||
|
| 4 - Выделить расширение файла; |
|
||||||
|
| 5 - Выделить имя диска, путь к файлу, имя файла и расширение файла; |
|
||||||
|
| 6 - Зарезервирована; |
|
||||||
|
| 7 - Выделить параметр командной строки; |
|
||||||
|
| 8 - Преобразовать из 11 символьного формата в формат ДОС; |
|
||||||
|
| 9 - Преобразовать из формата ДОС в 11 символьный формат; |
|
||||||
|
+------------------------------------------------------------------------------------------------------------+
|
||||||
|
| |
|
||||||
|
| +---------------------------------------------------------------------------------------+ |
|
||||||
|
| | **Подфункция 0 - Разобрать строку:** | |
|
||||||
|
| +--------------------------------------+------------------------------------------------+ |
|
||||||
|
| | Входные значения: | Выходные значения: | |
|
||||||
|
| | HL - указатель командной строки | A - код ошибки, если CF=1 | |
|
||||||
|
| | C - 45h | A - результат разбора, если CF=0 | |
|
||||||
|
| | B = 0 - Разобрать строку | bit7 - В строке обнаружены символы ? или * | |
|
||||||
|
| | | bit3 - В строке указано имя диска; | |
|
||||||
|
| | | bit2 - В строке указан путь к файлу; | |
|
||||||
|
| | | bit1 - В строке указано расширение файла; | |
|
||||||
|
| | | bit0 - В строке указано имя файла; | |
|
||||||
|
| +--------------------------------------+------------------------------------------------+ |
|
||||||
|
| | **Подфункция 1 - Выделить имя диска:** | |
|
||||||
|
| +--------------------------------------+------------------------------------------------+ |
|
||||||
|
| | Входные значения: | Выходные значения: | |
|
||||||
|
| | HL - указатель командной строки | A - код ошибки, если CF=1 | |
|
||||||
|
| | DE - буфер (макс. 13 байт) | A - номер диска (0 - A, 1 - B, 2 - C и т.д.), | |
|
||||||
|
| | C - 45h | если CF=0 | |
|
||||||
|
| | B = 1 - Выделить имя диска | буфер - имя диска "A:",0 | |
|
||||||
|
| +--------------------------------------+------------------------------------------------+ |
|
||||||
|
| | **Подфункция 2 - Выделить директорию:** | |
|
||||||
|
| +--------------------------------------+------------------------------------------------+ |
|
||||||
|
| | Входные значения: | Выходные значения: | |
|
||||||
|
| | HL - указатель командной строки | A - код ошибки, если CF=1 | |
|
||||||
|
| | DE - буфер (макс. 256 байт) | A - результат разбора, если CF=0 | |
|
||||||
|
| | C - 45h | bit7 - В строке обнарxужены символы ? или * | |
|
||||||
|
| | B = 2 - Выделить директорию | bit3 - В строке указано имя диска; | |
|
||||||
|
| | | bit2 - В строке указан путь к файлу; | |
|
||||||
|
| | | bit1 - В строке указано расширение файла; | |
|
||||||
|
| | | bit0 - В строке указано имя файла; | |
|
||||||
|
| | | буфер - директория "DIR1\DIR2\DIR3\",0 | |
|
||||||
|
| +--------------------------------------+------------------------------------------------+ |
|
||||||
|
| | **Подфункция 3 - Выделить имя файла:** | |
|
||||||
|
| +--------------------------------------+------------------------------------------------+ |
|
||||||
|
| | Входные значения: | Выходные значения: | |
|
||||||
|
| | HL - указатель командной строки | A - код ошибки, если CF=1 | |
|
||||||
|
| | DE - буфер (макс. 13 байт) | A - результат разбора, если CF=0 | |
|
||||||
|
| | C - 45h | bit7 - В строке обнаружены символы ? или * | |
|
||||||
|
| | B = 3 - Выделить имя файла | bit3 - В строке указано имя диска; | |
|
||||||
|
| | | bit2 - В строке указан путь к файлу; | |
|
||||||
|
| | | bit1 - В строке указано расширение файла; | |
|
||||||
|
| | | bit0 - В строке указано имя файла; | |
|
||||||
|
| | | буфер - имя файла "FILE.EXT",0 | |
|
||||||
|
| +--------------------------------------+------------------------------------------------+ |
|
||||||
|
| | **Подфункция 4 - Выделить расширение файла:** | |
|
||||||
|
| +--------------------------------------+------------------------------------------------+ |
|
||||||
|
| | Входные значения: | Выходные значения: | |
|
||||||
|
| | HL - указатель командной строки | A - код ошибки, если CF=1 | |
|
||||||
|
| | DE - буфер (макс. 4 байт) | A - результат разбора, если CF=0 | |
|
||||||
|
| | C - 45h | bit7 - В строке обнаружены символы ? или * | |
|
||||||
|
| | B = 4 - Выделить расширение файла | bit3 - В строке указано имя диска; | |
|
||||||
|
| | | bit2 - В строке указан путь к файлу; | |
|
||||||
|
| | | bit1 - В строке указано расширение файла; | |
|
||||||
|
| | | bit0 - В строке указано имя файла; | |
|
||||||
|
| | | буфер - расширение "TXT",0 или "C ",0 | |
|
||||||
|
| +--------------------------------------+------------------------------------------------+ |
|
||||||
|
| | **Подфункция 5 - Выделить имя диска, путь к файлу, имя файла и расширение файла:** | |
|
||||||
|
| +--------------------------------------+------------------------------------------------+ |
|
||||||
|
| | Входные значения: | Выходные значения: | |
|
||||||
|
| | HL - указатель командной строки | A - код ошибки, если CF=1 | |
|
||||||
|
| | DE - буфер (макс. 8 байт) | A - результат разбора, если CF=0 | |
|
||||||
|
| | DE+0 адрес буфера для имени диска | bit7 - В строке обнаружены символы ? или * | |
|
||||||
|
| | (макс. 13 байт) | bit3 - В строке указано имя диска; | |
|
||||||
|
| | DE+2 адрес буфера для директории | bit2 - В строке указан путь к файлу; | |
|
||||||
|
| | (макс. 256 байт) | bit1 - В строке указано расширение файла; | |
|
||||||
|
| | DE+3 адрес буфера для имени файла | bit0 - В строке указано имя файла; | |
|
||||||
|
| | (макс. 13 байт) | | |
|
||||||
|
| | DE+4 адрес буфера для расширения | | |
|
||||||
|
| | файла (макс. 4 байта) | | |
|
||||||
|
| | C - 45h | | |
|
||||||
|
| | B = 5 - Выделить имя диска, путь к | | |
|
||||||
|
| | файлу, имя файла и расширение файла | | |
|
||||||
|
| +--------------------------------------+------------------------------------------------+ |
|
||||||
|
| | **Подфункция 7 - Выделить параметр командной строки** | |
|
||||||
|
| +--------------------------------------+------------------------------------------------+ |
|
||||||
|
| | Входные значения: | Выходные значения: | |
|
||||||
|
| | HL - указатель командной строки | HL - указатель на следующий параметр командной | |
|
||||||
|
| | DE - буфер для выделяемого | строки | |
|
||||||
|
| | параметра | CF = 0 - конец строки не достигнут (есть | |
|
||||||
|
| | C - 45h | другие параметры) | |
|
||||||
|
| | B = 7 - Выделить параметр командной | CF = 1 - конец строки (в буфер перенесён | |
|
||||||
|
| | строки | последний параметр или ноль) | |
|
||||||
|
| +--------------------------------------+------------------------------------------------+ |
|
||||||
|
| | **Подфункция 8 - Преобразовать из 11 символьного формата в формат ДОС** | |
|
||||||
|
| +--------------------------------------+------------------------------------------------+ |
|
||||||
|
| | Входные значения: | Выходные значения: | |
|
||||||
|
| | C - 45h | A - код ошибки, если CF=1 | |
|
||||||
|
| | B = 8 - преобразовать из 11 | | |
|
||||||
|
| | символьного формата в формат ДОС | | |
|
||||||
|
| | HL - 11 символов имени файла | | |
|
||||||
|
| | DE - буфер для имени в формате ДОС | | |
|
||||||
|
| +--------------------------------------+------------------------------------------------+ |
|
||||||
|
| | **Подфункция 9 - Преобразовать из формата ДОС в 11 символьный формат** | |
|
||||||
|
| +--------------------------------------+------------------------------------------------+ |
|
||||||
|
| | Входные значения: | Выходные значения: | |
|
||||||
|
| | C - 45h | A - код ошибки, если CF=1 | |
|
||||||
|
| | B = 9 - преобразовать из формата | | |
|
||||||
|
| | ДОС в 11 символьный формат | | |
|
||||||
|
| | HL - имя файла в формате ДОС | | |
|
||||||
|
| | DE - буфер для 11 символов имени | | |
|
||||||
|
| | файла | | |
|
||||||
|
| +--------------------------------------+------------------------------------------------+ |
|
||||||
|
| |
|
||||||
|
+------------------------------------------------------------------------------------------------------------+
|
||||||
|
| **Функции для работы с переменными** |
|
||||||
|
+------------------------------------------------------------------------------------------------------------+
|
||||||
|
| **46h (70) ENVIRON (Системное окружение)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| B - номер подфункции | A - состояние, если CF=0 |
|
||||||
|
| C - 46h | A=0 - переменная обнаружена |
|
||||||
|
| B=0 **Получение системного | A=#FF - переменная не обнаружена |
|
||||||
|
| окружения** | DE - указывает на конец буфера |
|
||||||
|
| HL - буфер | A - код ошибки, если CF=1 |
|
||||||
|
| B=1 **Получить переменную | |
|
||||||
|
| окружения** | |
|
||||||
|
| HL - имя переменной | |
|
||||||
|
| DE - буфер для значения переменной | |
|
||||||
|
| B=2 **Установить/удалить переменную | |
|
||||||
|
| окружения** | |
|
||||||
|
| HL - имя переменной и значение, | |
|
||||||
|
| разделенные символом '=', | |
|
||||||
|
| (ПЕРЕМЕННАЯ=ЗНАЧЕНИЕ) | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **47h (71) APPINFO (Получение информации приложения) -- функция глючная, |
|
||||||
|
| информацию берёт из CLP_Buffer страницы загрузки кода приложения** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| B - номер подфункции | A - код ошибки, если CF=1 |
|
||||||
|
| C - 47h | |
|
||||||
|
| HL - буфер данных | |
|
||||||
|
| B=0 - получение параметров | |
|
||||||
|
| командной строки | |
|
||||||
|
| B=1 - получение полного пути к | |
|
||||||
|
| каталогу программы | |
|
||||||
|
| B=2 - получение полного пути и | |
|
||||||
|
| имени файла программы | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **Функции работы с экраном** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **50h (80) SETVMOD (Выбор режима экрана) -- изменяет на обоих экранах** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| A - режим экрана | A - код ошибки, если CF=1 |
|
||||||
|
| 02h - текстовый 40x32x16 цветов | |
|
||||||
|
| 03h - текстовый 80x32x16 цветов | |
|
||||||
|
| 81h - графический 320x256x256 | |
|
||||||
|
| цветов | |
|
||||||
|
| 82h - графический 640x256x16 | |
|
||||||
|
| цветов | |
|
||||||
|
| B - страница активного экрана на | |
|
||||||
|
| выходе 0/1 | |
|
||||||
|
| C - 50h | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **51h (81) GETVMOD (Получить текущий режим экрана)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| C - 51h | A - код ошибки, если CF=1 |
|
||||||
|
| | A - текущий режим экрана, если CF=0 |
|
||||||
|
| | B - страница экрана 0/1 |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **52h (82) LOCATE (Установить позицию курсора) [Сразу прыгает в биос]** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| D - строка курсора | нет |
|
||||||
|
| E - столбец курсора | |
|
||||||
|
| C - 52h | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **53h (83) CURSOR (Получить позицию курсора) [Сразу прыгает в биос]** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| C - 53h | D - строка курсора |
|
||||||
|
| | E - столбец курсора |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **54h (84) SELPAGE (Выбрать активную страницу экрана)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| B - страница экрана 0/1 | A - код ошибки, если CF=1 |
|
||||||
|
| C - 54h | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **55h (85) SCROLL (Прокрутка окна)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| D - строка левого верхнего угла | нет |
|
||||||
|
| окна | |
|
||||||
|
| E - столбец левого верхнего угла | |
|
||||||
|
| окна | |
|
||||||
|
| H - высота окна | |
|
||||||
|
| L - ширина окна | |
|
||||||
|
| B = 1 - прокрутка вверх | |
|
||||||
|
| B = 2 - прокрутка вниз | |
|
||||||
|
| A = 0 - очищать строку | |
|
||||||
|
| C - 55h | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **56h (86) CLEAR (Очистка окна) [Сразу прыгает в биос]** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| D - строка левого верхнего угла | нет |
|
||||||
|
| окна | |
|
||||||
|
| E - столбец левого верхнего угла | |
|
||||||
|
| окна | |
|
||||||
|
| H - высота окна | |
|
||||||
|
| L - ширина окна | |
|
||||||
|
| B - атрибут заполнитель | |
|
||||||
|
| A - символ заполнитель | |
|
||||||
|
| C - 56h | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **57h (87) RDCHAR (Считать символ с экрана) почти [Сразу прыгает в биос] |
|
||||||
|
| лучше использовать WIN_GET_SYM** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| D - строка | A - символ |
|
||||||
|
| E - столбец | B - атрибут |
|
||||||
|
| C - 57h | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **58h (88) WRCHAR (Напечатать символ на экране)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| D - строка | нет |
|
||||||
|
| E - столбец | |
|
||||||
|
| A - символ | |
|
||||||
|
| B - атрибут | |
|
||||||
|
| C - 58h | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **59h (89) WINCOPY (Запомнить окно экрана)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| D - строка | нет |
|
||||||
|
| E - столбец левого верхнего угла | |
|
||||||
|
| окна | |
|
||||||
|
| H - высота окна | |
|
||||||
|
| L - ширина окна | |
|
||||||
|
| B - страница буфера для IX > | |
|
||||||
|
| #C000 | |
|
||||||
|
| IX - адрес буфера | |
|
||||||
|
| C - 59h | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **5Ah (90) WINREST (Восстановить окно экрана)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| D - строка | нет |
|
||||||
|
| E - столбец левого верхнего угла | |
|
||||||
|
| окна | |
|
||||||
|
| H - высота окна | |
|
||||||
|
| L - ширина окна | |
|
||||||
|
| B - страница буфера для IX > | |
|
||||||
|
| #C000 | |
|
||||||
|
| IX - адрес буфера | |
|
||||||
|
| C - 5Ah | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **5Bh (91) PUTCHAR (Напечатать символ в текущей позиции курсора)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| A - символ | нет |
|
||||||
|
| C - 5Bh | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **5Ch (92) PCHARS (Напечатать строку символов в текущей позиции курсора)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| HL - указатель на начало строки | HL - указатель на следующую строку |
|
||||||
|
| символов | символов |
|
||||||
|
| C - 5Ch | |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **Функции для печати на принтере** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| **5Fh (95) PRINT (Вывод символа на принтер без ожидания)** |
|
||||||
|
+----------------------------------------------------------------------+-------------------------------------+
|
||||||
|
| Входные значения: | Выходные значения: |
|
||||||
|
| A - символ | B - символ |
|
||||||
|
| C - 5Fh | CF = 1 - принтер не готов |
|
||||||
|
+------------------------------------------------------------------------------------------------------------+
|
||||||
@ -2,16 +2,19 @@
|
|||||||
; ‚•Ž„: L - «®£¨ç¥áª¨© ®¬¥à ¢ â ¡«¨æ¥
|
; ‚•Ž„: L - «®£¨ç¥áª¨© ®¬¥à ¢ â ¡«¨æ¥
|
||||||
; ‚›•Ž„: IY - ç «® § ¯¨á¨
|
; ‚›•Ž„: IY - ç «® § ¯¨á¨
|
||||||
; <20>Ž<EFBFBD>’ˆ’: HL, DE, IY.
|
; <20>Ž<EFBFBD>’ˆ’: HL, DE, IY.
|
||||||
MACRO LOGDRV_ENTRY_FIND tbl_addr
|
MACRO LOGDRV_ENTRY
|
||||||
LD H,0
|
LD H,0
|
||||||
ADD HL,HL
|
ADD HL,HL
|
||||||
ADD HL,HL
|
ADD HL,HL
|
||||||
ADD HL,HL
|
ADD HL,HL
|
||||||
ADD HL,HL
|
ADD HL,HL
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
LD IY,tbl_addr
|
|
||||||
ADD IY,DE
|
ADD IY,DE
|
||||||
ENDM
|
ENDM
|
||||||
|
MACRO LOGDRV_ENTRY_FIND tbl_addr
|
||||||
|
LD IY,tbl_addr
|
||||||
|
LOGDRV_ENTRY
|
||||||
|
ENDM
|
||||||
;
|
;
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|||||||
@ -389,6 +389,10 @@ FAT_BPB: LD A,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.DRIVE_TYPE)
|
|||||||
LD HL,#FFFF
|
LD HL,#FFFF
|
||||||
LD A,FAT_TYPE.x16
|
LD A,FAT_TYPE.x16
|
||||||
.set_vars: EXX
|
.set_vars: EXX
|
||||||
|
; LD HL,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.FAT.HIDDEN)
|
||||||
|
; LD (CORE_BUFFERS.FS_Buffer.PartitionStartSector),HL
|
||||||
|
; LD HL,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.FAT.HIDDEN + 2)
|
||||||
|
; LD (CORE_BUFFERS.FS_Buffer.PartitionStartSector + 2),HL
|
||||||
;!TODO áç¨â âì âãâ à §¬¥à root-¤¨à¥ªâ®à¨¨ ¢ ¡ ©â å ¨ åà ¨âì ¢ FS_Buffer?
|
;!TODO áç¨â âì âãâ à §¬¥à root-¤¨à¥ªâ®à¨¨ ¢ ¡ ©â å ¨ åà ¨âì ¢ FS_Buffer?
|
||||||
LD HL,0
|
LD HL,0
|
||||||
LD (CORE_BUFFERS.FS_Buffer.END_CHAIN_CLUSTER_H),HL
|
LD (CORE_BUFFERS.FS_Buffer.END_CHAIN_CLUSTER_H),HL
|
||||||
|
|||||||
@ -112,6 +112,7 @@
|
|||||||
.UPD_FSINFO: BYTE 0
|
.UPD_FSINFO: BYTE 0
|
||||||
.FREE_CLUSTERS_COUNT_L: WORD #FFFF
|
.FREE_CLUSTERS_COUNT_L: WORD #FFFF
|
||||||
.FREE_CLUSTERS_COUNT_H: WORD #FFFF
|
.FREE_CLUSTERS_COUNT_H: WORD #FFFF
|
||||||
|
;.PartitionStartSector: DWORD #00000000
|
||||||
; For directory cache
|
; For directory cache
|
||||||
.DirBlock BYTE #00 ; [ ] big dir. ª ª®© ¡«®ª ¤¨à¥ªâ®à¨¨ § £à㦥 ¢ ªíè ¤¨à¥ªâ®à¨© DIRPAGE
|
.DirBlock BYTE #00 ; [ ] big dir. ª ª®© ¡«®ª ¤¨à¥ªâ®à¨¨ § £à㦥 ¢ ªíè ¤¨à¥ªâ®à¨© DIRPAGE
|
||||||
;.DirBlockDrive BYTE #00
|
;.DirBlockDrive BYTE #00
|
||||||
|
|||||||
@ -328,7 +328,11 @@ RAM_DRV:
|
|||||||
;-----[]
|
;-----[]
|
||||||
HARD_DRV:
|
HARD_DRV:
|
||||||
LD L,B
|
LD L,B
|
||||||
LOGDRV_ENTRY_FIND @DRIVES_DRIVER.OLD_TABLES.LOGDRV
|
;
|
||||||
|
;LOGDRV_ENTRY_FIND @DRIVES_DRIVER.OLD_TABLES.LOGDRV
|
||||||
|
LD IY,@DRIVES_DRIVER.OLD_TABLES.LOGDRV
|
||||||
|
CALL GET_LOGDRV_ENTRY
|
||||||
|
;
|
||||||
LD IX,DRIVES_DRIVER.LOGDRV
|
LD IX,DRIVES_DRIVER.LOGDRV
|
||||||
LD DE,DRIVES_DRIVER.LOGDRV.TBL_Entry
|
LD DE,DRIVES_DRIVER.LOGDRV.TBL_Entry
|
||||||
LD B,DSS_MAX_DRIVES_AMOUNT
|
LD B,DSS_MAX_DRIVES_AMOUNT
|
||||||
|
|||||||
@ -62,7 +62,6 @@
|
|||||||
;
|
;
|
||||||
; INPUT: A - DRIVE
|
; INPUT: A - DRIVE
|
||||||
; B - SUBCOMMAND
|
; B - SUBCOMMAND
|
||||||
; DE - MAGIC NUMBER (55AAh)
|
|
||||||
; SUBCOMMAND
|
; SUBCOMMAND
|
||||||
;----------------------
|
;----------------------
|
||||||
; 00 - GET DEVICE PARAMETERS
|
; 00 - GET DEVICE PARAMETERS
|
||||||
@ -181,6 +180,12 @@ MAKEDVC: LD C,A
|
|||||||
LD (HL),A
|
LD (HL),A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
;-------------------------------------------------
|
||||||
|
GET_LOGDRV_ENTRY:
|
||||||
|
LOGDRV_ENTRY
|
||||||
|
RET
|
||||||
|
;-------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
;-------------------------------------------------
|
;-------------------------------------------------
|
||||||
; RST 18h. ‚¥ªâ®à ¤¨áª®¢ëå ãáâனáâ¢
|
; RST 18h. ‚¥ªâ®à ¤¨áª®¢ëå ãáâனáâ¢
|
||||||
|
|||||||
@ -110,7 +110,6 @@
|
|||||||
;
|
;
|
||||||
;Input: C = #08
|
;Input: C = #08
|
||||||
; B = Subcommand
|
; B = Subcommand
|
||||||
; DE = #55AA Magic Number
|
|
||||||
; A = Drive
|
; A = Drive
|
||||||
;
|
;
|
||||||
;Subcommands: #00 - Get Device Parameters
|
;Subcommands: #00 - Get Device Parameters
|
||||||
@ -343,9 +342,25 @@ SelectDrive: PUSH DE
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
GetMoreParams: PUSH IX
|
||||||
|
PUSH IY
|
||||||
|
LD L,A
|
||||||
|
LD IY,@DRIVES_DRIVER.LOGDRV
|
||||||
|
CALL @GET_LOGDRV_ENTRY
|
||||||
|
LD H,(IY + DRIVES_DRIVER.LOGDRV.SECTOR_OFFSET + 3)
|
||||||
|
LD L,(IY + DRIVES_DRIVER.LOGDRV.SECTOR_OFFSET + 2)
|
||||||
|
LD D,(IY + DRIVES_DRIVER.LOGDRV.SECTOR_OFFSET + 1)
|
||||||
|
LD E,(IY + DRIVES_DRIVER.LOGDRV.SECTOR_OFFSET + 0)
|
||||||
|
POP IY
|
||||||
|
POP IX
|
||||||
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; 00 - GET DEVICE PARAMETERS
|
; 00 - GET DEVICE PARAMETERS
|
||||||
; 01 - READ TRACK
|
; 01 - READ TRACK
|
||||||
; 02 - TEST TRACK
|
; 02 - TEST TRACK
|
||||||
|
; 03 - GET MORE DEVICE PARAMETERS
|
||||||
; 80 - SET DEVICE PARAMETERS
|
; 80 - SET DEVICE PARAMETERS
|
||||||
; 81 - WRITE TRACK
|
; 81 - WRITE TRACK
|
||||||
; 82 - FORMAT TRACK
|
; 82 - FORMAT TRACK
|
||||||
@ -358,6 +373,8 @@ GenIOCTL: BIT 7,B
|
|||||||
JR Z,.error ;ReadTrack
|
JR Z,.error ;ReadTrack
|
||||||
DEC B
|
DEC B
|
||||||
JR Z,TestTRK
|
JR Z,TestTRK
|
||||||
|
DEC B
|
||||||
|
JR Z,GetMoreParams
|
||||||
LD A,BIOS.Error.InvalidSubFunction
|
LD A,BIOS.Error.InvalidSubFunction
|
||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
@ -412,19 +429,21 @@ TestTRK: LD C,BIOS.DRV_VERIFY
|
|||||||
; 32 - 4096 bytes
|
; 32 - 4096 bytes
|
||||||
; 64 - 8192 bytes
|
; 64 - 8192 bytes
|
||||||
; 128 - 16384 bytes
|
; 128 - 16384 bytes
|
||||||
GetParams: EX DE,HL
|
GetParams: ;EX DE,HL
|
||||||
LD BC,#55AA ;!FIXIT ᤥ« âì íâ® ¯à®æ¥¤ãன ¢ shared.asm ¨«¨ ã¡à âì ª å¥à ¬
|
;LD BC,Dss.DRV.GenIOCTL.Enter
|
||||||
AND A
|
;AND A
|
||||||
SBC HL,BC
|
;SBC HL,BC
|
||||||
LD L,A
|
LD L,A
|
||||||
LD A,BIOS.Error.Failure
|
;LD A,BIOS.Error.Failure
|
||||||
SCF
|
;SCF
|
||||||
RET NZ
|
;RET NZ
|
||||||
;
|
;
|
||||||
PUSH IX
|
PUSH IX
|
||||||
PUSH IY
|
PUSH IY
|
||||||
;
|
;
|
||||||
LOGDRV_ENTRY_FIND @DRIVES_DRIVER.LOGDRV
|
;LOGDRV_ENTRY_FIND @DRIVES_DRIVER.LOGDRV
|
||||||
|
LD IY,@DRIVES_DRIVER.LOGDRV
|
||||||
|
CALL GET_LOGDRV_ENTRY
|
||||||
;
|
;
|
||||||
LD A,(IY+DRIVES_DRIVER.LOGDRV.PHISICAL_DRV_NUMBER) ;MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
|
LD A,(IY+DRIVES_DRIVER.LOGDRV.PHISICAL_DRV_NUMBER) ;MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
|
||||||
PUSH IY
|
PUSH IY
|
||||||
|
|||||||
@ -93,7 +93,6 @@
|
|||||||
;
|
;
|
||||||
;Input : C = 08h
|
;Input : C = 08h
|
||||||
; B - Subcommand
|
; B - Subcommand
|
||||||
; DE = 55AAh Magic Number
|
|
||||||
; Subcommand
|
; Subcommand
|
||||||
;----------------------
|
;----------------------
|
||||||
; 00h - Get Device Parameters
|
; 00h - Get Device Parameters
|
||||||
@ -343,15 +342,15 @@ GenIOCTL: BIT 7,B
|
|||||||
; D5 - "1" RESERVED
|
; D5 - "1" RESERVED
|
||||||
; D4 - DEVICE MASTER/SLAVE
|
; D4 - DEVICE MASTER/SLAVE
|
||||||
; D1..D3 - "0" RESERVED (MAY BE OTHER)
|
; D1..D3 - "0" RESERVED (MAY BE OTHER)
|
||||||
.GetParams: EX DE,HL
|
.GetParams: ;EX DE,HL
|
||||||
LD BC,#55AA ;!FIXIT ᤥ« âì íâ® ¯à®æ¥¤ãன ¢ shared.asm ¨«¨ ã¡à âì ª å¥à ¬
|
;LD BC,Dss.DRV.GenIOCTL.Enter
|
||||||
AND #0F
|
AND #0F
|
||||||
SBC HL,BC
|
;SBC HL,BC
|
||||||
JR Z,.next
|
;JR Z,.next
|
||||||
;
|
;
|
||||||
LD A,BIOS.Error.Failure
|
;LD A,BIOS.Error.Failure
|
||||||
SCF
|
;SCF
|
||||||
RET
|
;RET
|
||||||
;
|
;
|
||||||
.next: PUSH AF
|
.next: PUSH AF
|
||||||
PUSH IY
|
PUSH IY
|
||||||
|
|||||||
@ -118,7 +118,6 @@
|
|||||||
;
|
;
|
||||||
;Input : C = 08h
|
;Input : C = 08h
|
||||||
; B - Subcommand
|
; B - Subcommand
|
||||||
; DE = 55AAh Magic Number
|
|
||||||
; Subcommand
|
; Subcommand
|
||||||
;----------------------
|
;----------------------
|
||||||
; 00h - Get Device Parameters
|
; 00h - Get Device Parameters
|
||||||
@ -462,14 +461,14 @@ GenIOCTL: BIT 7,B
|
|||||||
; D5 - "1" RESERVED
|
; D5 - "1" RESERVED
|
||||||
; D6 - ADDRESSING MODE LBA/CHS
|
; D6 - ADDRESSING MODE LBA/CHS
|
||||||
; D7 - "1" RESERVED
|
; D7 - "1" RESERVED
|
||||||
.RGETPRM: EX DE,HL
|
.RGETPRM: ;EX DE,HL
|
||||||
LD BC,#55AA ;!FIXIT ᤥ« âì íâ® ¯à®æ¥¤ãன ¢ shared.asm ¨«¨ ã¡à âì ª å¥à ¬
|
;LD BC,Dss.DRV.GenIOCTL.Enter
|
||||||
AND A
|
;AND A
|
||||||
SBC HL,BC
|
;SBC HL,BC
|
||||||
LD L,A
|
LD L,A
|
||||||
LD A,BIOS.Error.Failure
|
;LD A,BIOS.Error.Failure
|
||||||
SCF
|
;SCF
|
||||||
RET NZ
|
;RET NZ
|
||||||
;
|
;
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD A,L
|
LD A,L
|
||||||
|
|||||||
@ -97,7 +97,7 @@ cmd_info: CALL Get_Path
|
|||||||
CP "C" - "A"
|
CP "C" - "A"
|
||||||
JR C,.ItIsFDD
|
JR C,.ItIsFDD
|
||||||
;
|
;
|
||||||
LD DE,Dss.DRV.GenIOCTL.Enter
|
;LD DE,Dss.DRV.GenIOCTL.Enter
|
||||||
LD BC,Dss.DRV.GenIOCTL.GetParams
|
LD BC,Dss.DRV.GenIOCTL.GetParams
|
||||||
RST ToDSS.DRV
|
RST ToDSS.DRV
|
||||||
JR C,.noMedia
|
JR C,.noMedia
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
Subproject commit b9c54c9a1e027b35fba71efa26378a555cfd75db
|
Subproject commit e1233b24a06f9be0c80349b47ab34cfceacc2486
|
||||||
Loading…
Reference in New Issue
Block a user