Subversion Repositories pentevo

Rev

Rev 702 | Rev 764 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?

  1.  
  2. ;LAST UPDATE: 31.12.2016 savelij
  3.  
  4. ;[ИНФА ДЛЯ СОЗДАНИЯ 9 СЕКТОРА НОВОГО ДИСКА]
  5. DSKINFO         DB 0                    ;+0XE1-НОМЕР ПЕРВОГО СВОБОДНОГО СЕКТОРА
  6.                 DB 1                    ;+0XE2-НОМЕР ПЕРВОГО СВОБОДНОГО ТРЕКА
  7.                 DB 0X16                 ;+0XE3-ТИП ДИСКЕТЫ
  8.                 DB 0                    ;+0XE4-КОЛИЧЕСТВО ФАЙЛОВ НА ДИСКЕТЕ
  9. SECFREE         DW 2544                 ;+0XE5-КОЛИЧЕСТВО СВОБОДНЫХ СЕКТОРОВ
  10.                 DB 0X10                 ;+0XE7-ИДЕНТИФИКАЦИОННЫЙ КОД TRDOS
  11.                 DW 0                    ;+0XE8-2 БАЙТА 0
  12.                 DUPL 9," "              ;+0XEA-9 БАЙТ 0X20
  13.                 DB 0                    ;+0XF3-1 БАЙТ 0
  14.                 DB 0                    ;+0XF4-КОЛИЧЕСТВО УДАЛЕННЫХ ФАЙЛОВ
  15.                 DB "RAMDISKO"           ;+0XF5-ИМЯ ДИСКЕТЫ
  16. DSK_END
  17.  
  18. ;[ОБРАБОТЧИК ВЫЗОВА RST 8]
  19. DOS2RST8        EX (SP),HL                      ;HL
  20.                 PUSH AF                         ;AF
  21.                 PUSH BC                         ;BC
  22.                 LD A,R
  23.                 JP PE,DOS2RST8_01
  24.                 LD A,R
  25. DOS2RST8_01     DI
  26.                 PUSH AF                         ;RF
  27.                 PUSH HL                         ;ADR_RET
  28.                 PUSH DE                         ;DE
  29.                 IN A,(PEVO_CONF)
  30.                 LD L,A
  31.                 OR 1
  32.                 OUT (PEVO_CONF),A
  33.                 LD BC,RD_1WINA0
  34.                 IN A,(C)
  35.                 AND 0X3E
  36.                 LD BC,RD_1WINA0
  37.                 IN H,(C)
  38.                 RES 0,H
  39.                 LD B,HIGH (RD_DOS7FFD)
  40.                 IN E,(C)
  41.                 RES 4,E
  42.                 DEC B
  43.                 IN D,(C)
  44.                 LD BC,WIN_A0
  45.                 OUT (C),A
  46.                 LD B,HIGH (WIN_P0)
  47.                 XOR A
  48.                 JP ADR_SEL_ROM
  49.  
  50. EDOS2RST8       LD BC,DOS_NOEMUL
  51.                 LD A,(BC)
  52.                 AND 0X3E
  53.                 CP E
  54.                 JR Z,EDOS2RST02
  55.                 INC BC
  56. EDOS2RST02      LD A,(BC)
  57.                 LD BC,WIN_A0
  58.                 CALL WR_BYTE_RET
  59.                 LD A,L
  60.                 OUT (PEVO_CONF),A
  61.                 POP DE
  62.                 POP HL
  63.                 POP AF
  64.                 JP PO,EDOS2RST01
  65.                 EI
  66. EDOS2RST01      POP BC
  67.                 POP AF
  68.                 EX (SP),HL
  69.                 RET
  70.  
  71. ;ABCDEFGHIJKLMNOPQRSTUVWXYZ
  72. EXTEND_COM     
  73.                 BBW "CD",CD
  74.                 BBW "CLRCMOS",CLRCMOS
  75.                 BBW "DIR",DIR
  76.                 BBW "DRIVE",DRIVE
  77.                 BBW "HELP",HELP
  78.                 BBW "MOUNT",MOUNT
  79.                 BBW "UMOUNT",UMOUNT
  80.                 BBW "VER",PRT_VERS
  81.                 BBW "VIRT",SET_VIRT
  82.                 DB 0
  83.  
  84. ;[ОБРАБОТЧИК РАСШИРЕННЫХ КОМАНД]
  85. END_EXT_COM     INC DE
  86.                 LD A,(DE)
  87.                 CP ":"
  88.                 DEC DE
  89.                 JP NZ,SINTAX_ERROR
  90.                 LD A,(DE)
  91.                 AND 0DFH
  92.                 SUB "A"
  93.                 JP C,SINTAX_ERROR
  94.                 CP 4
  95.                 JR NC,SELFATDRV
  96.                 LD (TRD_5CF6),A                 ; ДИСКОВОД ДЛЯ ВРЕМЕННОЙ ОПЕРАЦИИ
  97.                 LD (TRD_5D19),A                 ; ДИСКОВОД ПО УМОЛЧАНИЮ
  98.                 LD B,A
  99.                 LD A,(TRD_5D16)                 ; КОПИЯ СИСТЕМНОГО РЕГИСТРА (ПОРТ #FF)
  100.                 AND 7CH
  101.                 OR B
  102.                 LD (TRD_5D16),A                 ; КОПИЯ СИСТЕМНОГО РЕГИСТРА (ПОРТ #FF)
  103.                 RST30 _OUT_FF
  104.                 JP ERR_OK
  105.  
  106. SELFATDRV       SUB 4
  107.                 PUSH AF
  108.                 RST8D _COM_DEV,_DEVFIND
  109.                 RST8D _COM_DEV,_KOL_VOL
  110.                 POP AF
  111.                 CP E
  112.                 JP NC,SINTAX_ERROR
  113.                 RST8D _COM_DEV,_SET_VOL
  114.                 JP ERR_OK
  115.  
  116. COM_DOT         CALL EXIT_IF_SINTAX
  117.                 LD HL,EXTEND_COM
  118. NEXT_CMP_COM    LD A,1
  119.                 LD (TRD_5CEF),A
  120.                 LD DE,(TRD_5D11)
  121.                 INC DE
  122.                 LD A,(HL)
  123.                 INC HL
  124.                 AND A
  125.                 JP Z,END_EXT_COM
  126.                 LD B,A
  127. LOC_C34         LD A,(DE)
  128.                 AND 0DFH
  129.                 CP (HL)
  130.                 JR NZ,PROPUSK
  131.                 INC DE
  132.                 INC HL
  133.                 DJNZ LOC_C34
  134.                 LD A,(DE)
  135.                 CP 0DH
  136.                 JR Z,NO_PARAM
  137.                 CP " "
  138.                 JR Z,GET_PARAM
  139.                 JR LOC_C58
  140.  
  141. PROPUSK         INC HL
  142.                 DJNZ PROPUSK
  143. LOC_C58         INC HL
  144.                 INC HL
  145.                 JR NEXT_CMP_COM
  146.  
  147. GET_PARAM       INC DE
  148. NO_PARAM        LD A,(HL)
  149.                 INC HL
  150.                 LD H,(HL)
  151.                 LD L,A
  152.                 PUSH HL
  153.                 LD HL,END_COMAND
  154.                 EX (SP),HL
  155.                 JP (HL)
  156.  
  157. ;[ВЫВОД ИМЕНИ ВИРТУАЛЬНОГО ДИСКА ЕСЛИ НЕ УКАЗАНО ИМЯ ДЛЯ ИЗМЕНЕНИЯ]
  158. PRT_NUM_VIRT    LD HL,TXT4VIRTDRV
  159.                 LD B,ETXT4VIRTDRV-TXT4VIRTDRV-1
  160.                 CALL PRT_B_HL_
  161.                 LD A," "
  162.                 RST 0X10
  163.                 LD H,VIRT_REAL_DRIVE
  164.                 CALL READCMOS
  165.                 AND 3
  166.                 ADD A,"A"
  167.                 RST 0X10
  168.                 LD A,0X0D
  169.                 RST 0X10
  170.                 RET
  171.  
  172. ;[УСТАНОВКА ВИРТУАЛЬНОГО ДИСКА]
  173. SET_VIRT        LD A,(DE)
  174.                 CP 0X0D
  175.                 JR Z,PRT_NUM_VIRT
  176.                 LD C,A
  177.                 INC DE
  178.                 LD A,(DE)
  179.                 CP ":"
  180.                 JP NZ,SINTAX_ERROR
  181.                 LD A,C
  182.                 CALL NUMDSK2BYTE                ;ПОЛУЧИЛИ НОВЫЙ НОМЕР ДИСКОВОДА УКАЗАННЫЙ В КОМАНДНОЙ СТРОКЕ
  183.                 LD D,A                          ;СОХРАНИЛИ ВРЕМЕННО СДВИНУТЫЙ НОВЫЙ НОМЕР ВИРТУАЛЬНОГО ДИСКОВОДА
  184.                 IN A,(RW_PORT0)
  185.                 AND %11111100
  186.                 OR D
  187.                 OUT (RW_PORT0),A
  188.                 LD H,VIRT_REAL_DRIVE
  189.                 CALL READCMOS
  190.                 AND %11111100                   ;СБРОС СТАРОГО НОМЕРА ВИРТУАЛЬНОГО ДИСКОВОДА
  191.                 OR D                            ;ДОБАВИЛИ НОВЫЙ НОМЕР ВИРТУАЛЬНОГО ДИСКОВОДА
  192.                 LD L,A
  193.                 RST8D _CMOS_RW,_WRITE_CMOS
  194.                 RET
  195.  
  196. ;[ПЕЧАТЬ ВЕРСИИ ДОСА И ДАТЫ КОМПИЛЯЦИИ]
  197. PRT_VERS        LD HL,0X3FF8
  198.                 LD B,6
  199.                 CALL PRT_B_HL_
  200.                 LD A," "
  201.                 RST 0X10
  202.                 LD C,(HL)
  203.                 INC HL
  204.                 LD B,(HL)
  205.                 PUSH BC
  206.                 LD HL,ZASTAVKA_VER
  207.                 LD B,9
  208.                 CALL PRT_B_HL_
  209.                 LD A," "
  210.                 RST 0X10
  211.                 POP BC
  212.                 LD A,C
  213.                 AND 0X1F                        ;НУЖНЫ 5 БИТ-ЧИСЛО МЕСЯЦА
  214.                 CALL A2TXT                      ;КОНВЕРСИЯ И УКЛАДКА ДАТЫ
  215.                 SRL B
  216.                 RR C                            ;СДВИНУЛИ ДЛЯ ЦЕЛОСТНОСТИ НОМЕРА МЕСЯЦА
  217.                 LD A,"."
  218.                 RST 0X10
  219.                 LD A,C                          ;ВЗЯЛИ БИТЫ МЕСЯЦА
  220.                 RRCA
  221.                 RRCA
  222.                 RRCA
  223.                 RRCA                            ;СДВИНУЛИ В МЛАДШИЕ БИТЫ
  224.                 AND 0X0F                        ;НАМ НУЖНЫ ТОЛЬКО 4 БИТА МЕСЯЦА
  225.                 CALL A2TXT                      ;КОНВЕРСИЯ И УКЛАДКА МЕСЯЦА
  226.                 LD A,"."
  227.                 RST 0X10
  228.                 LD A,B                          ;ВЗЯЛИ НОМЕР ГОДА
  229.                 AND 0X3F                        ;НУЖНЫ ТОЛЬКО 6 БИТ
  230.                 CALL A2TXT                      ;КОНВЕРСИЯ И УКЛАДКА ГОДА
  231.                 BIT 6,B                         ;ЕСЛИ БИТ 6 (СДВИНУТЫЙ БИТ 7) УСТАНОВЛЕН
  232.                 RET Z
  233.                 LD HL,TXT_BETA
  234.                 RST 0X18
  235.                 LD A,0X0D
  236.                 RST 0X10
  237.                 RET
  238.  
  239. ;[ПЕЧАТЬ B=КОЛИЧЕСТВО СИМВОЛОВ ИЗ HL=АДРЕС ТЕКСТА ДЛЯ ВЫВОДА]
  240. PRT_B_HL_       LD A,(HL)
  241.                 INC HL
  242.                 RST 0X10
  243.                 DJNZ PRT_B_HL_
  244.                 RET
  245.  
  246. TXT_BETA        DC " beta"
  247.  
  248. ;[ПЕРЕВОД "A" В ДЕСЯТИЧКУ И В ТЕКСТ]
  249. A2TXT           LD L,A
  250.                 LD H,0
  251.                 LD DE,10
  252.                 XOR A
  253.                 DEC A
  254.                 INC A
  255.                 SBC HL,DE
  256.                 JR NC,$-3
  257.                 ADD HL,DE
  258.                 ADD A,"0"
  259.                 RST 0X10
  260.                 LD A,L
  261.                 ADD A,"0"
  262.                 RST 0X10
  263.                 RET
  264.  
  265. DRIVES          DC "Drives: "
  266. EDRIVES
  267.  
  268. DRIVE           RST8D _COM_DEV,_DEVFIND
  269.                 JP C,FAT_NOT_FOUND
  270.                 RST8D _COM_DEV,_KOL_VOL
  271.                 LD A,"D"
  272.                 ADD A,E
  273.                 PUSH AF
  274.                 LD HL,DRIVES
  275.                 RST 0X18
  276.                 LD A,"E"
  277.                 RST 0X10
  278.                 LD A,"-"
  279.                 RST 0X10
  280.                 POP AF
  281.                 RST 0X10
  282.                 RET
  283.  
  284. TXT_DIR         DC "<DIR> "
  285. TXT_FATERR      DC "FAT not found"
  286.  
  287. ;[КОМАНДА DIR]
  288. DIR             LD B,0
  289.                 LD A,(DE)
  290.                 INC DE
  291.                 CP "/"
  292.                 JR NZ,DIR06
  293.                 LD A,(DE)
  294.                 AND 0XDF
  295.                 CP "L"
  296.                 JR NZ,DIR06
  297.                 LD B,A
  298. DIR06           RST8D _COM_DEV,_DEVFIND
  299.                 JR NC,DIR061
  300. FAT_NOT_FOUND   CALL OPEN_CHAN_0
  301.                 LD HL,TXT_FATERR                ;НИ ОДНОГО РАЗДЕЛА НЕ НАЙДЕНО
  302.                 RST 0X18
  303.                 RET
  304.  
  305. DIR061          PUSH IX
  306.                 LD IXL,B
  307.                 CALL CLEAR_SCREEN
  308.                 CALL OPEN_CHAN_2
  309.                 LD A,2
  310.                 RST8D _COM_FAT,_POS_FILES
  311. DIR05           LD E,0X17
  312. DIR01           PUSH DE
  313.                 PUSH BC
  314.                 LD HL,TRD_5D25
  315.                 RST8D _COM_FAT,_READ_DIR
  316.                 LD DE,0X0B
  317.                 ADD HL,DE
  318.                 LD A,(HL)
  319.                 SBC HL,DE
  320.                 AND 0X10
  321.                 JR Z,DIR04
  322.                 PUSH HL
  323.                 LD HL,TXT_DIR
  324.                 RST 0X18
  325.                 POP HL
  326. DIR04           LD A,IXL
  327.                 AND A
  328.                 JR Z,DIR08
  329.                 PUSH HL
  330.                 RST8D _COM_FAT,_GET_LONGNAME
  331.                 POP HL
  332. DIR03           LD A,(HL)
  333.                 AND A
  334.                 JR Z,DIR02
  335.                 INC HL
  336.                 RST 0X10
  337.                 JR DIR03
  338.  
  339. DIR08           LD B,8
  340. DIR081          LD A,(HL)
  341.                 CP " "
  342.                 JR Z,DIR082
  343.                 RST 0X10
  344.                 INC HL
  345.                 DJNZ DIR081
  346. DIR082          LD A,B
  347.                 AND A
  348.                 JR Z,DIR085
  349. DIR086          LD A,(HL)
  350.                 CP " "
  351.                 JR NZ,DIR085
  352.                 INC HL
  353.                 DJNZ DIR086
  354. DIR085          LD A,(HL)
  355.                 CP " "
  356.                 JR Z,DIR084
  357.                 LD A,"."
  358.                 RST 0X10
  359. DIR084          LD B,3
  360. DIR083          LD A,(HL)
  361.                 CP " "
  362.                 JR Z,DIR02
  363.                 RST 0X10
  364.                 INC HL
  365.                 DJNZ DIR083
  366. DIR02           LD A,0X0D
  367.                 RST 0X10
  368.                 LD A,4
  369.                 LD B,1
  370.                 RST8D _COM_FAT,_POS_FILES
  371.                 POP HL
  372.                 AND A
  373.                 SBC HL,BC
  374.                 POP DE
  375.                 JR Z,DIR07
  376.                 DEC E
  377.                 JR NZ,DIR01
  378.                 JR DIR05
  379.  
  380. DIR07           POP IX
  381.                 RET
  382.  
  383. ;[КОМАНДА CD]
  384. CD              PUSH DE
  385.                 RST8D _COM_DEV,_DEVFIND
  386.                 POP HL
  387.                 RST8D _COM_FAT,_FIND_NAME
  388.                 JP C,SINTAX_ERROR
  389.                 RST8D _COM_FAT,_ENTER_DIR
  390.                 RET
  391.  
  392. NOMER_DRV       RST8D _COM_DEV,_DEVFIND
  393.                 CCF
  394.                 RET NC                          ;НИ ОДНОГО РАЗДЕЛА НЕ НАЙДЕНО
  395.                 RST8D _COM_DEV,_KOL_VOL
  396.                 CALL CREATE_BUF
  397.                 LD HL,TRD_5D25
  398.                 RST8D _COM_FAT,_GET_PATH
  399.                 CALL PRINT2ZERO
  400.                 CALL DEL_BUF
  401.                 SCF
  402.                 RET
  403.  
  404. ;[КОМАНДА MOUNT]
  405. MOUNT           PUSH DE
  406.                 RST8D _COM_DEV,_DEVFIND
  407.                 EX DE,HL
  408.                 POP HL
  409.                 JP C,FAT_NOT_FOUND
  410.                 PUSH HL
  411.                 RST8D _COM_FAT,_FIND_NAME
  412.                 JP C,SINTAX_ERROR
  413.                 POP DE
  414.                 LD B,0X0C
  415. MOUNT02         LD A,(DE)
  416.                 CP "!"
  417.                 JR C,MOUNT01
  418.                 INC DE
  419.                 DJNZ MOUNT02
  420. MOUNT01         LD A,(DE)
  421.                 CP 0X0D
  422.                 JP Z,SINTAX_ERROR
  423.                 CP " "
  424.                 JP NZ,SINTAX_ERROR
  425.                 INC DE
  426.                 LD A,(DE)
  427.                 CP "A"
  428.                 JP C,SINTAX_ERROR
  429.                 AND 0XDF
  430.                 CP "E"
  431.                 JP NC,SINTAX_ERROR
  432.                 SUB "A"
  433.                 LD C,A
  434.                 INC DE
  435.                 LD A,(DE)
  436.                 CP ":"
  437.                 JP NZ,SINTAX_ERROR
  438.                 LD A,C
  439.                 RST8D _MOUNTER,_OPEN_MOUNT
  440.                 RET
  441.  
  442. ;[КОМАНДА UMOUNT]
  443. UMOUNT          LD A,(DE)
  444.                 INC DE
  445.                 AND 0XDF
  446.                 LD B,A
  447.                 LD A,(DE)
  448.                 INC DE
  449.                 CP ":"
  450.                 JP NZ,SINTAX_ERROR
  451.                 LD A,B
  452.                 CP "A"
  453.                 JP C,SINTAX_ERROR
  454.                 CP "E"
  455.                 JP NC,SINTAX_ERROR
  456.                 SUB "A"
  457.                 RST8D _MOUNTER,_CLOSEMOUNT
  458.                 RET
  459.  
  460. ;[КОМАНДА ОЧИСТКИ CMOS]
  461. CLRCMOS         RST8D _CMOS_RW,_CLEAR_CMOS
  462.                 RET
  463.  
  464. ;[КОМАНДЫ ВЫВОДА НА ЭКРАН СПИСКА РАСШИРЕННЫХ КОМАНД]
  465. HELP            CALL CLEAR_SCREEN
  466.                 CALL OPEN_CHAN_2
  467.                 LD HL,EXTEND_COM
  468. HELP4           LD C,3
  469. HELP2           LD A,(HL)
  470.                 AND A
  471.                 RET Z
  472.                 INC HL
  473.                 LD B,A
  474.                 PUSH BC
  475.                 LD A,"."
  476.                 RST 0X10
  477. HELP1           LD A,(HL)
  478.                 INC HL
  479.                 RST 0X10
  480.                 DJNZ HELP1
  481.                 INC HL
  482.                 INC HL
  483.                 POP BC
  484.                 LD A,9
  485.                 SUB B
  486.                 LD B,A
  487. HELP3           LD A," "
  488.                 RST 0X10
  489.                 DJNZ HELP3
  490.                 DEC C
  491.                 JR NZ,HELP2
  492.                 LD A,0X0D
  493.                 RST 0X10
  494.                 JR HELP4
  495.  
  496. READ_BYTE_HL    PUSH BC
  497.                 PUSH HL
  498.                 LD A,(NUM_ALT_PAGE)
  499.                 PUSH AF
  500.                 LD A,ROM_BAS48|0X80
  501.                 LD BC,WIN_A0
  502.                 CALL WR_BYTE_RET
  503.                 LD L,(HL)
  504.                 POP AF
  505.                 CALL WR_BYTE_RET
  506.                 LD A,L
  507.                 CP 0X0D
  508.                 POP HL
  509.                 POP BC
  510.                 RET
  511.  
  512. ;[АЛЬТЕРНАТИВНОЕ КОПИРОВАНИЕ СЕКТОРА ДЛЯ РАМДИСКА]
  513. SV_LD_RAMDISK   PUSH HL
  514.                 CALL CP_TYPEDRIVE
  515.                 POP HL
  516.                 JP NZ,WR_NUM_TRACK              ;ПРИ НЕ СОВПАДЕНИИ РАБОТА ПРОДОЛЖАЕТСЯ С РЕАЛЬНОЙ ДИСКЕТОЙ
  517.                 POP HL                          ;ИНАЧЕ РАБОТАЕМ С РАМДИСКОМ
  518.                 POP HL
  519.                 POP BC
  520.                 XOR A
  521.                 OR B
  522.                 RET Z
  523.                 DI
  524.                 PUSH IX                         ;СОХРАНИЛИ ДЛЯ ВНУТРЕННЕГО ИСПОЛЬЗОВАНИЯ
  525.                 LD IX,(TRD_5CCE)                ;ЧТЕНИЕ ИЛИ ЗАПИСЬ? 00-ЧТЕНИЕ, FF-ЗАПИСЬ, СОХРАНИЛИ ДЛЯ ДАЛЬНЕЙШЕГО ИСПОЛЬЗОВАНИЯ
  526. SVLDRAM1        PUSH BC
  527.                 PUSH HL
  528.                 LD DE,(TRD_5CF4)
  529.                 CALL COM_04
  530.                 LD A,E
  531.                 CALL COM_03
  532.                 INC A
  533.                 RST30 _OUT_5F
  534.                 LD A,D
  535.                 PUSH HL
  536.                 CALL COM_02
  537.                 POP HL
  538.                 RST30 _WR_RD_SECT               ;ЧТЕНИЕ/ЗАПИСЬ СЕКТОРА
  539.                 LD A,0X10
  540.                 LD HL,TRD_5CF4
  541.                 INC (HL)                        ;УВЕЛИЧЕНИЕ НОМЕРА СЕКТОРА
  542.                 CP (HL)
  543.                 JR NZ,SVLDRAM2
  544.                 LD (HL),0                       ;ЕСЛИ ВЫХОД ЗА ПРЕДЕЛЫ ТРЕКА, ТО СЕКТОР =0
  545.                 INC HL
  546.                 INC (HL)                        ;И УВЕЛИЧИВАЕМ НОМЕР ТРЕКА
  547. SVLDRAM2        POP HL
  548.                 POP BC
  549.                 INC H                           ;УВЕЛИЧИЛИ АДРЕС КОПИРОВАНИЯ НА 256 БАЙТ
  550.                 DJNZ SVLDRAM1
  551.                 POP IX                          ;ПОПОЛЬЗОВАЛИСЬ И ВОССТАНОВИЛИ
  552.                 EI
  553.                 RET
  554.  
  555. ;[ЧТЕНИЕ/ЗАПИСЬ СЕКТОРА ПРИМОНТИРОВАННОГО ОБРАЗА]
  556. WR_RD_SEC_M     PUSH IX
  557.                 LD (TEMP_SP),SP
  558.                 LD HL,(DOS_STEK)
  559.                 LD DE,SAVED_RAM
  560.                 LD BC,0X10
  561.                 LDIR
  562.                 LD SP,HL
  563.                 LD A,(PORT_3F)                  ;ВЗЯЛИ НОМЕР ТРЕКА
  564.                 ADD A,A                         ;СТОРОН 2
  565.                 LD D,A
  566.                 LD A,(WR_FF)
  567.                 AND 0X10                        ;ПРОВЕРКА КАКАЯ СТОРОНА ДИСКА
  568.                 JR NZ,WRRDSECM1
  569.                 INC D                           ;ДЛЯ СТОРОНЫ 1
  570. WRRDSECM1       LD A,(PORT_5F)                  ;ВЗЯЛИ НОМЕР СЕКТОРА
  571.                 LD E,A                          ;D-ТРЕК, E-СЕКТОР
  572.                 LD HL,(REG_L)                   ;HL=АДРЕС ЧТЕНИЯ/ЗАПИСИ
  573.                 LD A,(WR_FF)
  574.                 AND 3
  575.                 LD C,A                          ;НОМЕР ДИСКОВОДА
  576.                 LD A,IXL
  577.                 AND A                           ;BIT 7=0-ЧТЕНИЕ
  578.                 JR Z,WRRDSECM2
  579.                 LD A,0X80                       ;BIT 7=1-ЗАПИСЬ
  580. WRRDSECM2       OR C
  581.                 LD IXL,A                        ;A=НОМЕР ДИСКОВОДА+БИТ ЧТЕНИЯ/ЗАПИСИ
  582.                 LD A,(TEK_ROMPAGE)
  583.                 AND 0X3E
  584.                 LD IXH,A
  585.                 LD BC,WIN_A0
  586.                 OUT (C),A
  587.                 LD A,IXL
  588.                 RST8D _MOUNTER,_RDWR_MOUNT
  589.                 LD BC,WIN_A0
  590.                 LD A,IXH
  591.                 OUT (C),A
  592.                 LD B,HIGH (WIN_P0)
  593.                 LD A,ROM_DOS
  594.                 OUT (C),A
  595.                 LD (REG_L),HL                   ;ОБНОВИЛИ АДРЕС ЧТЕНИЯ/ЗАПИСИ
  596.                 LD HL,SAVED_RAM
  597.                 LD DE,(DOS_STEK)
  598.                 LD BC,0X10
  599.                 LDIR
  600.                 LD SP,(TEMP_SP)
  601.                 POP IX
  602.                 RET
  603.