From dc587dda99e01f0025ce6e0ddbbd9f3c03e8acc0 Mon Sep 17 00:00:00 2001 From: Tolik <85737314+Tolik-Trek@users.noreply.github.com> Date: Fri, 23 May 2025 23:09:43 +1000 Subject: [PATCH] ... --- DIALOG.ASM | 38 ++--- ESTEX.ASM | 418 +++++++++++++++++++++++++----------------------- FMAIN.ASM | 25 ++- FORMAT.ASM | 357 +++++++++++++++++++++-------------------- LISTBOX.ASM | 24 +-- MAIN.ASM | 1 + MAP.ASM | 160 ++++++++++++------ RADIO.ASM | 26 +-- Shared_Includes | 2 +- Version.inc | 2 +- 10 files changed, 564 insertions(+), 489 deletions(-) diff --git a/DIALOG.ASM b/DIALOG.ASM index 9816602..15fb0f8 100755 --- a/DIALOG.ASM +++ b/DIALOG.ASM @@ -346,10 +346,10 @@ PutDialWn: PUSH IY LD IY,DialTab LD IX,DialData - IN A,(Page3) + IN A,(SLOT3) PUSH AF kk4: LD A,(hPages.Win2) ;Page buffer - OUT (Page3),A + OUT (SLOT3),A LD A,(HL) ;X position LD (IX+0),A ;Xpos INC HL @@ -414,7 +414,7 @@ DialCyc: LD A,(HL) ;Next get includes objects POP DE DialExt: LD (IY+0),80h ;+5 End dialog table POP AF - OUT (Page3),A + OUT (SLOT3),A CALL PutDial ;Put dialog window POP IY ; Select last element @@ -826,10 +826,10 @@ BTexit: LD HL,what RET ; Нажать/отжать бутон -PushBut: IN A,(Page3) +PushBut: IN A,(SLOT3) PUSH AF kk5: LD A,(hPages.Win2) - OUT (Page3),A + OUT (SLOT3),A PUSH IX LD E,(IX+2) ;Xo LD D,(IX+4) ;Y @@ -897,7 +897,7 @@ BTpos: LD DE,0 CALL testbut JR NC,bt1 DI - IN A,(Page1) + IN A,(SLOT1) LD B,A XOR A LD C,BIOS.WIN_RESTORE @@ -916,7 +916,7 @@ BTpos: LD DE,0 CALL testbut JR NC,bt1 DI - IN A,(Page1) + IN A,(SLOT1) LD B,A XOR A LD C,BIOS.WIN_RESTORE @@ -958,7 +958,7 @@ PushEx: PUSH IX CALL testbut JR NC,bt2 DI - IN A,(Page1) + IN A,(SLOT1) LD B,A XOR A LD C,BIOS.WIN_RESTORE @@ -976,7 +976,7 @@ PushEx: PUSH IX INC XH CALL testbut JR NC,bt2 - IN A,(Page1) + IN A,(SLOT1) LD B,A XOR A LD C,BIOS.WIN_RESTORE ; из буфера в окно @@ -986,7 +986,7 @@ PushEx: PUSH IX bt2: POP HL POP IX POP AF - OUT (Page3),A + OUT (SLOT3),A LD A,(Kbutt+1) OR A RET NZ @@ -1101,10 +1101,10 @@ MoveOlp: BIT 6,(HL) ;Test on mark object SetDialInv: PUSH IX LD IX,DialData - IN A,(Page3) + IN A,(SLOT3) PUSH AF ;сохр.page4 kk6: LD A,(hPages.Win2) - OUT (Page3),A ;вкл.буфер + OUT (SLOT3),A ;вкл.буфер LD L,C LD H,1 LD (RDlIlen+1),HL ;Save len @@ -1140,7 +1140,7 @@ setdn2: INC HL LD DE,(RDlIpos+1) CALL PutDialLn POP AF - OUT (Page3),A + OUT (SLOT3),A POP IX RET @@ -1151,10 +1151,10 @@ setdn2: INC HL ; Input: None ResDialInv: PUSH IX - IN A,(Page3) + IN A,(SLOT3) PUSH AF ;сохр.page4 kk7: LD A,(hPages.Win2) - OUT (Page3),A ;вкл.буфер + OUT (SLOT3),A ;вкл.буфер LD HL,(RDlIbuf+2) LD A,(RDlIlen+1) LD B,A @@ -1185,7 +1185,7 @@ CIflag: LD A,0 ;1-Was claster invert CALL NZ,ResClasInv CALL ResILCr ; сбросить курсор в inp.line POP AF - OUT (Page3),A + OUT (SLOT3),A POP IX LD HL,what LD (HL),evMessage @@ -1198,10 +1198,10 @@ CIflag: LD A,0 ;1-Was claster invert ; Input: None ResClasInv: PUSH IX - IN A,(Page3) + IN A,(SLOT3) PUSH AF ;сохр.page4 kk8: LD A,(hPages.Win2) - OUT (Page3),A ;вкл.буфер + OUT (SLOT3),A ;вкл.буфер PUSH HL LD HL,(RClIbuf+2) LD A,(RClIlen+1) @@ -1231,7 +1231,7 @@ RClIpos: LD DE,0 LD (CIflag+1),A POP HL POP AF - OUT (Page3),A + OUT (SLOT3),A POP IX RET diff --git a/ESTEX.ASM b/ESTEX.ASM index 2586948..2130dd1 100755 --- a/ESTEX.ASM +++ b/ESTEX.ASM @@ -8,113 +8,113 @@ ;--- Копирование сист. файлов в буферы ; вых: "CY" при ошибке ; -CopySysFiles: xor a - ld (sFlag),a - ld (bigFile),a - ld a,(ColDialWn) ; сохр. цвет окна - ld (TmpColor),a - ; Номер загрузочного диска - ld bc,0009h - RST ToDSS - ld (SysDisk),a - ; Установить текущим загрузочный диск - ld a,(SysDisk) - ld c,1 - RST ToDSS - ; Установить "корень" boot-диска - ld hl,RootDir - ld c,1Dh - RST ToDSS - ;Найти файл "SYSTEM.EXE" - ;ld hl,Name1 - ;call FirstFile - ;jp c,NoFound ; файл не найден - ; открыть файл - ld hl,Name1 - call OpenFile - jp c,error1 ; ошибка открытия файла - ld (hFile1),a - ; прочитать файл - in a,(Page3) - push af - ld a,(hPages.SBuff0) - out (Page3),a ; подкл. буфер - ld a,(hFile1) - call ReadFile - jp c,err1 ; ошибка чтения файла - pop af - out (Page3),a ; восст. страницу - ld (Number1),de ; число прочитанных байт - ; закрыть файл - ld a,(hFile1) - call CloseFile - jp c,error1 ; ошибка закрытия файла +; CopySysFiles: xor a +; ld (sFlag),a +; ld (bigFile),a +; ld a,(ColDialWn) ; сохр. цвет окна +; ld (TmpColor),a +; ; Номер загрузочного диска +; ld bc,0009h +; RST ToDSS +; ld (SysDisk),a +; ; Установить текущим загрузочный диск +; ld a,(SysDisk) +; ld c,1 +; RST ToDSS +; ; Установить "корень" boot-диска +; ld hl,RootDir +; ld c,1Dh +; RST ToDSS +; ;Найти файл "SYSTEM.EXE" +; ;ld hl,Name1 +; ;call FirstFile +; ;jp c,NoFound ; файл не найден +; ; открыть файл +; ld hl,Name1 +; call OpenFile +; jp c,error1 ; ошибка открытия файла +; ld (hFile1),a +; ; прочитать файл +; in a,(SLOT3) +; push af +; ld a,(hPages.SBuff0) +; out (SLOT3),a ; подкл. буфер +; ld a,(hFile1) +; call ReadFile +; jp c,err1 ; ошибка чтения файла +; pop af +; out (SLOT3),a ; восст. страницу +; ld (Number1),de ; число прочитанных байт +; ; закрыть файл +; ld a,(hFile1) +; call CloseFile +; jp c,error1 ; ошибка закрытия файла - ;Найти файл "SYSTEM.DOS" - ;ld hl,Name2 - ;call FirstFile - ;jp c,error1 ; файл не найден - ; открыть файл - ld hl,Name2 - call OpenFile - jp c,error1 ; ошибка открытия файла - ld (hFile2),a - ; узнать размер файла - ld hl,0 - ld ix,0 ; мл.слово - ld bc,0215h ; указатель от конца файла - RST ToDSS - jp c,error1 - push ix - pop hl - ld de,4001h - ; hl >= de - ld a,l - sub e - ld l,a - ld a,h - sbc a,d - ld h,a - inc hl - ld (ost+1),hl ; сохр. размер остатка файла - jr c,tinRead ; файл < 1-й страницы - ld a,1 - ld (bigFile),a ; файл > 1-й страницы -tinRead: ld (Number2),ix ; сохр. размер файла - ; указатель на начало файла - ld hl,0 - ld ix,0 ; мл.слово - ld a,(hFile2) - ld bc,0015h ; указатель от начала файла - RST ToDSS - jp c,error1 - ; прочитать файл - in a,(Page3) - push af - ld a,(hPages.SBuff1) - out (Page3),a ; подкл. 1-ю страницу - ld a,(hFile2) - call ReadFile - jp c,err1 ; ошибка чтения файла - ld a,(bigFile) - or a - jr z,endRead ; прочитан весь файл - ; читаем остаток файла -ost: ld de,0 - ld a,(hPages.SBuff2) - out (Page3),a ; подкл. 2-ю страницу - ld hl,WinBoxBuff ; буфер под данные - ld a,(hFile2) - ld c,13h - RST ToDSS - jp c,err1 ; ошибка чтения файла -endRead: pop af - out (Page3),a ; восст. страницу -; закрыть файл - ld a,(hFile2) - call CloseFile - jp c,error1 ; ошибка закрытия файла - ret +; ;Найти файл "SYSTEM.DOS" +; ;ld hl,Name2 +; ;call FirstFile +; ;jp c,error1 ; файл не найден +; ; открыть файл +; ld hl,Name2 +; call OpenFile +; jp c,error1 ; ошибка открытия файла +; ld (hFile2),a +; ; узнать размер файла +; ld hl,0 +; ld ix,0 ; мл.слово +; ld bc,0215h ; указатель от конца файла +; RST ToDSS +; jp c,error1 +; push ix +; pop hl +; ld de,4001h +; ; hl >= de +; ld a,l +; sub e +; ld l,a +; ld a,h +; sbc a,d +; ld h,a +; inc hl +; ld (ost+1),hl ; сохр. размер остатка файла +; jr c,tinRead ; файл < 1-й страницы +; ld a,1 +; ld (bigFile),a ; файл > 1-й страницы +; tinRead: ld (Number2),ix ; сохр. размер файла +; ; указатель на начало файла +; ld hl,0 +; ld ix,0 ; мл.слово +; ld a,(hFile2) +; ld bc,0015h ; указатель от начала файла +; RST ToDSS +; jp c,error1 +; ; прочитать файл +; in a,(SLOT3) +; push af +; ld a,(hPages.SBuff1) +; out (SLOT3),a ; подкл. 1-ю страницу +; ld a,(hFile2) +; call ReadFile +; jp c,err1 ; ошибка чтения файла +; ld a,(bigFile) +; or a +; jr z,endRead ; прочитан весь файл +; ; читаем остаток файла +; ost: ld de,0 +; ld a,(hPages.SBuff2) +; out (SLOT3),a ; подкл. 2-ю страницу +; ld hl,WinBoxBuff ; буфер под данные +; ld a,(hFile2) +; ld c,13h +; RST ToDSS +; jp c,err1 ; ошибка чтения файла +; endRead: pop af +; out (SLOT3),a ; восст. страницу +; ; закрыть файл +; ld a,(hFile2) +; call CloseFile +; jp c,error1 ; ошибка закрытия файла +; ret @@ -125,7 +125,7 @@ sFlag: db 0 sFlag1: db 0 ; флаг, 0/1 - "system.dos" меньше/больше 1-й страницы -bigFile: db 0 +;bigFile: db 0 @@ -145,64 +145,76 @@ WriteSysFiles: ld a,(sFlag) ; скрыть мышку call HiddenMouse ; Уст. текущий диск и путь на дискету - call SetDisketa + ;call SetDisketa ; Создать файл "SYSTEM.EXE" - ld hl,Name1 ; имя файла - call CreateFile - jp c,error1 ; ошибка создания файла - ld (hFile1),a - ; записать файл - in a,(Page3) - push af - ld a,(hPages.SBuff0) - out (Page3),a ; подкл. буфер - ld de,(Number1) ; число запис. байт - ld a,(hFile1) ; хэндл - call WriteFile - ex af,af' - pop af - out (Page3),a ; восст. страницу - ex af,af' - jr c,error1 ; ошибка записи файла - ; закрыть файл - ld a,(hFile1) ; хэндл - call CloseFile - jr c,error1 ; ошибка закрытия файла - + ;ld hl,Name1 ; имя файла + ;call CreateFile + ;jp c,error1 ; ошибка создания файла + ;ld (hFile1),a + ;; записать файл + ;in a,(SLOT3) + ;push af + ;ld a,(hPages.SBuff0) + ;out (SLOT3),a ; подкл. буфер + ;ld de,(Number1) ; число запис. байт + ;ld a,(hFile1) ; хэндл + ;call WriteFile + ;ex af,af' + ;pop af + ;out (SLOT3),a ; восст. страницу + ;ex af,af' + ;jr c,error1 ; ошибка записи файла + ;; закрыть файл + ;ld a,(hFile1) ; хэндл + ;call CloseFile + ;jr c,error1 ; ошибка закрытия файла ; Создать файл "SYSTEM.DOS" - ld hl,Name2 ; имя файла - call CreateFile - jr c,error1 ; ошибка создания файла - ld (hFile2),a - ; записать файл - in a,(Page3) - push af - ld a,(hPages.SBuff1) - out (Page3),a ; подкл. 1-ю страницу - ld de,(Number2) ; размер "system.dos" - ld hl,4000h ; 1-на страница - ld a,(bigFile) - or a - jr z,tinFile ; файл <= 1-й страницы - ex de,hl - sbc hl,de - push hl - ld a,(hFile2) ; хэндл - call WriteFile - pop de - jr c,err1 ; ошибка записи файла - ld a,(hPages.SBuff2) - out (Page3),a ; подкл. 2-ю страницу + ;ld hl,Name2 ; имя файла + ;call CreateFile + ;jr c,error1 ; ошибка создания файла + ;ld (hFile2),a + ;; записать файл + ;in a,(SLOT3) + ;push af + ;ld a,(hPages.SBuff1) + ;out (SLOT3),a ; подкл. 1-ю страницу + ;ld de,(Number2) ; размер "system.dos" + ;ld hl,4000h ; 1-на страница + ;ld a,(bigFile) + ;or a + ;jr z,tinFile ; файл <= 1-й страницы + ;ex de,hl + ;sbc hl,de + ;push hl + ;ld a,(hFile2) ; хэндл + ;call WriteFile + ;pop de + ;jr c,err1 ; ошибка записи файла + ;ld a,(hPages.SBuff2) + ;out (SLOT3),a ; подкл. 2-ю страницу + ; +; tinFile: ld a,(hFile2) ; хэндл +; call WriteFile +; jr c,err1 ; ошибка записи файла +; pop af +; out (SLOT3),a ; восст. страницу +; ; закрыть файл +; ld a,(hFile2) ; хэндл +; call CloseFile +; jr c,error1 ; ошибка закрытия файла + ; + ; + ; запись загрузчика через sys + ld hl,.sys_name + ld a,(DskName) + ld (.sys_prm_disk),a + ld bc,Dss.Exec + rst ToDSS + ; + jr c,.error1 + and a + jr nz,.error1 ; -tinFile: ld a,(hFile2) ; хэндл - call WriteFile - jr c,err1 ; ошибка записи файла - pop af - out (Page3),a ; восст. страницу - ; закрыть файл - ld a,(hFile2) ; хэндл - call CloseFile - jr c,error1 ; ошибка закрытия файла ; восст. диск и путь call RestPath ; закрыть окно "Запись сист. файлов" @@ -226,10 +238,10 @@ tinFile: ld a,(hFile2) ; ld (ColDialWn),a ; восст. прежнюю установку цвета окна ret ; -err1: pop af - out (Page3),a ; восст. страницу +; err1: pop af +; out (SLOT3),a ; восст. страницу ; -error1: call RestPath ; восст. диск и путь +.error1: call RestPath ; восст. диск и путь ld a,40h ld (ColDialWn),a ld hl,ErrSysFiles @@ -239,18 +251,19 @@ error1: call RestPath ; ld a,1 ld (sFlag),a ret +.sys_name: db "SYS.EXE " +.sys_prm_disk: db "A: 1" - -SetDisketa: ; Уст. текущий диск на формат. дискету - ld a,(DISK) - ld c,1 - RST ToDSS - ; Уст. "корень" дискеты - ld hl,RootDir - ld c,1Dh - RST ToDSS - ret +; SetDisketa: ; Уст. текущий диск на формат. дискету +; ld a,(DISK) +; ld c,1 +; RST ToDSS +; ; Уст. "корень" дискеты +; ld hl,RootDir +; ld c,1Dh +; RST ToDSS +; ret RestPath: ; Восст. текущий диск ; ld a,(CurDisk) @@ -274,10 +287,10 @@ FirstFile: ld bc,0019h ; ; Создать файл -CreateFile: ld c,0Ah - ld a,20h ; атрибут "архивный" - RST ToDSS - ret +; CreateFile: ld c,0Ah +; ld a,20h ; атрибут "архивный" +; RST ToDSS +; ret ; Открыть файл @@ -288,18 +301,18 @@ OpenFile: ld c,11h ; Прочитать файл -ReadFile: ld hl,WinBoxBuff ;L4000 буфер под данные - ld de,4000h ; число читаемых байт (1 страница) - ld c,13h - RST ToDSS - ret +; ReadFile: ld hl,WinBoxBuff ;L4000 буфер под данные +; ld de,4000h ; число читаемых байт (1 страница) +; ld c,13h +; RST ToDSS +; ret ; Запись файла -WriteFile: ld hl,WinBoxBuff ;L4000 буфер данных - ld c,14h - RST ToDSS - ret +; WriteFile: ld hl,WinBoxBuff ;L4000 буфер данных +; ld c,14h +; RST ToDSS +; ret ; Закрыть файл @@ -312,16 +325,15 @@ CloseFile: ld c,12h SysDisk: db 0 ; номер загр. диска -Name1: db "SYSTEM.EXE",0 -Name2: db "SYSTEM.DOS",0 +;Name1: db "SYSTEM.EXE",0 +;Name2: db "SYSTEM.DOS",0 ;Name2: db "DIAL.TXT",0 -hFile1: db 0 ; хэндл файла "system.exe" -hFile2: db 0 ; хэндл файла "system.dos" -Number1: dw 0 ; размер файла "system.exe" -Number2: dw 0 ; размер файла "system.dos" -RootDir: db '\',0 ; +;hFile1: db 0 ; хэндл файла "system.exe" +;hFile2: db 0 ; хэндл файла "system.dos" +;Number1: dw 0 ; размер файла "system.exe" +;Number2: dw 0 ; размер файла "system.dos" +;RootDir: db '\',0 ; ; -CurPath: CurDisk: db 0,':\' ; сохр. тек. диск ; @@ -347,9 +359,9 @@ compare_page: ld c,0C6h ; ld a,1 ;параметры 1-го окна RST ToBIOS ld a,c ;вот здесь идет сpавнение считанного - cp Page1 ;номеpа поpта с тем, котоpый я юзаю + cp SLOT1 ;номеpа поpта с тем, котоpый я юзаю jr z,.loc1 - ; уст. новый номер Page1 + ; уст. новый номер SLOT1 ld (port1+1),a ld (port2+1),a ld (port3+1),a @@ -358,9 +370,9 @@ compare_page: ld c,0C6h ; ld a,3 ;параметры 3-го окна RST ToBIOS ld a,c - cp Page3 + cp SLOT3 ret z - ; уст. новый номер Page3 + ; уст. новый номер SLOT3 ld (port5+1),a ld (port6+1),a ld (port7+1),a @@ -567,10 +579,10 @@ CopyBootTRD: xor a jr c,trd_err ; ошибка открытия ld (hFile4),a ; прочитать файл - in a,(Page3) + in a,(SLOT3) push af ld a,(hPages.TRBoot) - out (Page3),a ; подкл. буфер + out (SLOT3),a ; подкл. буфер ; читаем заголовок бута ld hl,NameBt ; буфер под данные ld de,17 ; число читаемых байт @@ -590,7 +602,7 @@ CopyBootTRD: xor a ld c,13h RST ToDSS pop af - out (Page3),a ; восст. страницу + out (SLOT3),a ; восст. страницу ; закрыть файл ld a,(hFile4) jp CloseFile diff --git a/FMAIN.ASM b/FMAIN.ASM index c7ea2b7..5c2d7fb 100755 --- a/FMAIN.ASM +++ b/FMAIN.ASM @@ -13,11 +13,10 @@ include './shared_includes/constants/dss_equ.inc' include './shared_includes/constants/bios_equ.inc' + include './shared_includes/constants/sp2000.inc' + include './shared_includes/structures/FileSystem.inc' include 'version.inc' -SysPort equ 0x3C ; сист. порт (без подкл. ПЗУ биоса) -Page1 equ 0xA2 ; порт 1-й страницы -Page3 equ 0xE2 ; порт 3-й страницы WinBoxBuff equ 0xC000 ; начало буфера @@ -58,9 +57,9 @@ Start: ld sp,Stack ld hl,hPages ld c,0C5h RST ToBIOS - ; вкл. рабочую страницу в Page3 (исп. для буфера сист. области дискеты) + ; вкл. рабочую страницу в SLOT3 (исп. для буфера сист. области дискеты) ld a,(hPages.BuffSys2) - out (Page3),a + out (SLOT3),a ; очистить буфер клавы ld bc,Dss.ScanKey*256 + Dss.K_CLEAR RST ToDSS @@ -116,7 +115,7 @@ Begin: ; RST ToDSS continue: call ReadInit ; чтение "fformat.ini" и настройка call CopyBootTRD ; скопир. бут из "boot.$b" (если есть) - call CopySysFiles ; скопир. сист. файлы в буферы + ;call CopySysFiles ; скопир. сист. файлы в буферы ;[]==============================================================[] include "dialog.asm" include "listbox.asm" @@ -154,9 +153,9 @@ hPages: .Win1: db #FF ; хэндл стр. сохр. экрана .Win2: db #FF ; хэндл стр. сохр. гл. окон форматилки .TRBoot: db #FF ; хэндл буфера загрузчика TR-DOS -.SBuff0: db #FF ; хэндл буфера "system.exe" -.SBuff1: db #FF ; хэндлы буфера под -.SBuff2: db #FF ; файл "system.dos" +;.SBuff0: db #FF ; хэндл буфера "system.exe" +;.SBuff1: db #FF ; хэндлы буфера под +;.SBuff2: db #FF ; файл "system.dos" .Size equ $-hPages db 0xFF ; стоп-байт списка @@ -189,13 +188,13 @@ Stack: db 0 ; ;[]==============================================================[] -ES_BPB equ $ -ES_Boot equ ES_BPB + 512 +ES_BPB equ $ +;ES_Boot equ ES_BPB + 512 ; incbin "estex.bs" ; загрузчик Estex ;[]==============================================================[] - +CurPath equ ES_BPB + 512 ;!TEST ;[]==============================================================[] ; Буфер системной области дискеты -L2400 equ ES_BPB+512*4 ;!HARDCODE 4 - bootloader size +L2400 equ CurPath + 257 ;[]==============================================================[] \ No newline at end of file diff --git a/FORMAT.ASM b/FORMAT.ASM index 8ab8e28..a463be7 100755 --- a/FORMAT.ASM +++ b/FORMAT.ASM @@ -38,15 +38,15 @@ FFORM1: call ClearMap ; call HiddenMouse ; скрыть мышку call set_1440 ; Открыть порты ВГ93 - ld a,1Ch - out (SysPort),a + ld a,SYS_PORT.CNF_3 + out (SYS_PORT.RAM),a call A0626 ; сбросить контроллер ; дернуть головкой ld a,70 out (REGDATA),a ld a,18h ; перейти на задан. дорожку - call A092C ; занести команду - call A092A ; на 0-ю дорожку + call FDC_CMD ; занести команду + call FDC_CMD.zeroTrk ; на 0-ю дорожку ; ; проверить наличие дискеты call L0C65 ; тест на чтение сектора @@ -82,7 +82,7 @@ FFORM1: call ClearMap ; ld hl,SystemArea ; "Writing system area..." call PutDialWn call HiddenMouse ; скрыть мышку - call L09D9 ; запись сист. области + call SysWR ; запись сист. области call ClsDial ; закрыть окно диалога pop af ld (ColDialWn),a @@ -90,7 +90,7 @@ FFORM1: call ClearMap ; ld a,(RetCode) or a jr nz,Parsing ; были ошибки при записи сист. области - call A092A ; на 0-ю дорожку + call FDC_CMD.zeroTrk ; на 0-ю дорожку ; Закрыть порты ВГ93 call Abort ld a,(_OS) @@ -100,14 +100,14 @@ FFORM1: call ClearMap ; ld a,(cSystem) ; флаг копир. системных файлов or a call nz,WriteSysFiles ; запись сист. файлов на дискету - call CreateLabel ; создать метку дискеты, если задана + ;call CreateLabel ; создать метку дискеты, если задана jp okno1 ; "Форм. завершено", выход из функции fformat Abort: call A0626 ; сбросить контроллер ; закрыть порты ВГ93 - ld a,4 - out (SysPort),a + ld a,SYS_PORT.CNF_0 + out (SYS_PORT.RAM),a ld c,1 ; показать мышку RST ToDSS.Mouse ret @@ -248,9 +248,10 @@ L0870: ld a,(side) A0626: ex af,af' ld a,(DISK) ; диск and 3 - ld c,a - ld a,00011000b ; сброс ВГ93 нулем 2-го бита - or c + ;ld c,a + ;ld a,00011000b ; сброс ВГ93 нулем 2-го бита + ;or c + or %0001'1000 out (REGCTRL),a set 2,a ; 1Ch out (REGCTRL),a @@ -285,26 +286,27 @@ delay: ; >=16. usec delay ;A0929: ld a,0D0h ; jr A092C ; головку на 0-ю дорожку -A092A: ld a,8 +FDC_CMD.zeroTrk: + ld a,8 ; послать команду -A092C: out (REGCOM),a - exx - ld b,3+3; ; 3 счетчик - call delay ; микро-пауза -.loc2: ld de,0 -.loc3: in a,(REGCOM) - ;bit 7,a ; дискета менялась ? (NZ-да) - ;... - rrca ; тест на 0-й бит - jr nc,.loc4 ; готов - dec de - ld a,d - or e - jr nz,.loc3 - djnz .loc2 -.loc4: in a,(REGCOM) ; получить код статуса - exx - ret +FDC_CMD: out (REGCOM),a + exx + ld b,3+3; ; 3 счетчик + call delay ; микро-пауза +.loc2: ld de,0 +.loc3: in a,(REGCOM) + ;bit 7,a ; дискета менялась ? (NZ-да) + ;... + rrca ; тест на 0-й бит + jr nc,.loc4 ; готов + dec de + ld a,d + or e + jr nz,.loc3 + djnz .loc2 +.loc4: in a,(REGCOM) ; получить код статуса + exx + ret @@ -338,94 +340,86 @@ L07B3: call L0870 ; ; Запись сист. области ms-dos или trd-бута -L09D9: ld a,(density) - ld c,8Fh ; turbo on/off - RST ToBIOS - xor a - ld (tracks),a - call A092A ; перейти на 0-ю дорожку - ld hl,L2400 ; буфер сист. области - ld (L0AC8),hl - ld a,(_OS) - or a - jr z,_msdos - dec a - jr z,_trdos - ret - ;jp _cpm80 - ; Копирует 2-ю FAT и записывает сист. область дискеты, - ; при вкл. опции копирует загрузчик Estex в секторы 2..4. +SysWR: ld a,(density) + ld c,8Fh ; turbo on/off + RST ToBIOS + xor a + ld (tracks),a + call FDC_CMD.zeroTrk ; перейти на 0-ю дорожку + ld hl,L2400 ; буфер сист. области + ld (L0AC8),hl + ld a,(_OS) + or a + jr z,_msdos + dec a + jr z,_trdos + ret + ;jp _cpm80 + ; Копирует 2-ю FAT и записывает сист. область дискеты, + ; при вкл. опции копирует загрузчик Estex в секторы 2..4. +_msdos: ld a,(MS_Boot.media5) ; число секторов на FAT + ld e,a + ld hl,0 + ld bc,512 +.loc0: add hl,bc + dec a + jr nz,.loc0 + ld a,e + push hl + ld hl,0 + ld de,L2400+512 ; начало 1-й FAT +.loc1: add hl,bc + dec a + jr nz,.loc1 + pop bc + add hl,de + ex de,hl + ldir + ; + ; bpb boot loader + ;ld a,(cSystem) ; флаг создания сист. дискеты + ;or a + ;jr z,.loc2 + ; копир. загрузчика Estex в сист. область + ;ld hl,ES_Boot ; код загрузчика + ;ld de,L2400+512 ; начало 1-й FAT + ;ld bc,1536 ; 512*3 сект. = размер загрузчика + ;ldir + ; скоррект. BPB в буфере + ;ld a,(MS_Boot.media5) + ;inc a + ;ld (L2400+14),a + ;ld a,1 ; число копий FAT + ;ld (L2400+16),a ; смещ. на число копий + ; + ; +.loc2: call L07AF ; ожидание готовности нгмд + ; запись 0-й стороны + ld a,1 + ld (sect),a ; 1-й сектор (boot) + call L0870 ; сторону и диск в контроллер +.loopWr0: call L0906 ; запись сектора + ret nz ; ошибки записи + ld a,(sect) ; тек. сектор + inc a + ld (sect),a +.maxSector0+1: cp 18+1 ; запредельный сектор + jr nz,.loopWr0 + ; запись 1-й стороны + ld a,1 + ld (side),a ; тек. сторона + ld (sect),a ; тек. сектор + call L0870 ; сторону и диск в контроллер +.loopWr1: call L0906 ; запись сектора + ret nz ; ошибки записи + ld a,(sect) ; тек. сектор + inc a + ld (sect),a +.maxSector1+1: cp 18+1 ; запред. сектор ? + jr nz,.loopWr1 + ret -_msdos: ld a,(MS_Boot.media5) ; число секторов на FAT - ld e,a - ld hl,0 - ld bc,512 -.loc0: add hl,bc - dec a - jr nz,.loc0 - ld a,e - push hl - ld hl,0 - ld de,L2400+512 ; начало 1-й FAT -.loc1: add hl,bc - dec a - jr nz,.loc1 - pop bc - add hl,de - ex de,hl - ldir - ; - ; bpb boot loader - ld a,(cSystem) ; флаг создания сист. дискеты - or a - jr z,.loc2 - ; копир. загрузчика Estex в сист. область - ld hl,ES_Boot ; код загрузчика - ld de,L2400+512 ; начало 1-й FAT - ld bc,1536 ; 512*3 сект. = размер загрузчика - ldir - ; скоррект. BPB в буфере - ld a,(MS_Boot.media5) - inc a - ld (L2400+14),a - ld a,1 ; число копий FAT - ld (L2400+16),a ; смещ. на число копий - ; - ; -.loc2: call L07AF ; ожидание готовности нгмд - ; запись 0-й стороны - ld a,1 - ld (sect),a ; 1-й сектор (boot) - call L0870 ; сторону и диск в контроллер -L08F0: call L0906 ; запись сектора - ret nz ; ошибки записи - ld a,(sect) ; тек. сектор - inc a - ld (sect),a -loc02: cp 18+1 ; запредельный сектор - jr nz,L08F0 - ; запись 1-й стороны - ld a,1 - ld (side),a ; тек. сторона - ld (sect),a ; тек. сектор - call L0870 ; сторону и диск в контроллер -L08F6: call L0906 ; запись сектора - ret nz ; ошибки записи - ld a,(sect) ; тек. сектор - inc a - ld (sect),a -loc03: cp 18+1 ; запред. сектор ? - jr nz,L08F6 - ; запись загрузчика через sys - ld a,(cSystem) ; флаг создания сист. дискеты - or a - ret z - ; - - ; - ret - ; Запись сист. области TR-DOS. ; При boot-диске корректирует начало своб. места, ; число своб. секторов и число запис. файлов @@ -517,16 +511,16 @@ _trdos: xor a ; ; Скопировать тело бута из буфера TRBoot в буфер L2400+1000h copy1: exx - in a,(Page1) + in a,(SLOT1) ex af,af' ld a,(hPages.TRBoot) - out (Page1),a ; подкл. буфер - ld hl,4000h ; начало Page1 + out (SLOT1),a ; подкл. буфер + ld hl,4000h ; начало SLOT1 ld de,L2400+1000h SizeBt: ld bc,4000h ldir ex af,af' - out (Page1),a ; подкл. буфер + out (SLOT1),a ; подкл. буфер exx ret @@ -586,10 +580,10 @@ A0875: push de ; Запись дорожки -L091B: in a,(Page3) +L091B: in a,(SLOT3) push af ld a,(hPages.BuffTrk) - out (Page3),a ; подкл. буфер структуры дорожки + out (SLOT3),a ; подкл. буфер структуры дорожки ld hl,L4000 ; начало данных ld (L0AC8),hl call L0870 ; в контроллер сторону и диск @@ -598,7 +592,7 @@ L091B: in a,(Page3) ld a,0xF4 ; запись дорожки call A0875 pop af - out (Page3),a + out (SLOT3),a ret @@ -611,7 +605,7 @@ NxtTrack: L0759: ld a,(tracks) ; тек. дорожка out (REGDATA),a ; регистр данных ld a,18h ; перейти на задан. дорожку - jp A092C ; занести команду + jp FDC_CMD ; занести команду @@ -634,7 +628,7 @@ L0C65: ld a,(sect) ; тек. сек or 0x80 ; 0-я сторона: 80h ; 1-я сторона: 88h - call A092C ; занести команду + call FDC_CMD ; занести команду di ld c,REGCOM ld b,3 ; счетчик попыток @@ -934,10 +928,10 @@ GAP1 equ 50 GAP3 dw 108 ; по-умолчанию для 1.44Mb ; Подготовить заголовки секторов дорожки (одной стороны) -L0BAA: in a,(Page3) +L0BAA: in a,(SLOT3) push af ld a,(hPages.BuffTrk) - out (Page3),a ; подкл. буфер дорожки + out (SLOT3),a ; подкл. буфер дорожки xor a ld (L0BA9),a ; обнулить счетчик секторов ; @@ -982,17 +976,17 @@ L0BB6: ld bc,553 ; loc05: cp 18 ; посл. сектор ? jr nz,L0BB2 pop af - out (Page3),a ; восст. раб. страницу + out (SLOT3),a ; восст. раб. страницу ret ; Создает в буфере структуру дорожки ; Буфер: 0xC000..0xFFFF -L0B21: in a,(Page3) +L0B21: in a,(SLOT3) push af ld a,(hPages.BuffTrk) - out (Page3),a ; подкл. буфер дорожки + out (SLOT3),a ; подкл. буфер дорожки call CLEAR ; заполнить буфер кодом 0x4E ld hl,L4000 ; начало буфера данных дорожки xor a @@ -1064,7 +1058,7 @@ loc08: cp 18 ; jr nz,L0B3E ; GAP4B, остаток дорожки (буфер уже заполнен 0x4E) pop af - out (Page3),a ; вкл. рабочую страницу 0xC000 + out (SLOT3),a ; вкл. рабочую страницу 0xC000 ret FILL: ld (hl),c @@ -1097,8 +1091,15 @@ CLEAR: ld (L0ACD),sp ; макс. длина области: 0x4C00 для 1.74Mb L09A8: ld de,L2400 ; буфер Boot-сектора ld hl,MS_Boot ; ms-dos boot-сектор - ld bc,512 ; длина boot-а - ldir + ld bc,MS_Boot.SIZE ; длина boot-а + ldir ;!TEST + assert MS_Boot.SIZE < 512,"DEL ME!!!" + ld bc,512-MS_Boot.SIZE + ld h,d + ld l,e + dec hl + ldir + ; ex de,hl ; hl = начало FAT в буфере loc07: ld bc,16896 ; 6656/16896 длина FAT-ов + Root dir ld e,0 ; байт заполнения @@ -1110,6 +1111,8 @@ loc07: ld bc,16896 ; 6656/16896 ld (hl),0FFh ; 2 и 3-й байты FAT inc hl ld (hl),0FFh + call CreateLabel ; создать метку дискеты, если задана + call CreateSerialNumber ret L0994: ld (hl),e @@ -1124,46 +1127,47 @@ L0994: ld (hl),e ; Настроить форматилку на тек. формат дискеты -FSETUP: ld a,(_OS) - or a - jr nz,noMSDOS -frm1: ld a,18 ; число секторов - ld (loc05+1),a - ld (loc08+1),a -SSect: ld hl,18 ; секторов на сторону - ld (MS_Boot.media6),hl - inc a ; запред. сектор - ld (loc02+1),a - ld (loc03+1),a - ld (loc06+1),a -frm2: ld a,34 ; посл. служ. сектор дискеты - ld (LastSect),a -frm3: ld a,1 ; секторов на кластер - ld (MS_Boot.media1),a -frm4: ld a,0xF0 ; байт формата - ld (MS_Boot.media4),a -frm5: ld hl,16896 ; размер FAT-ов + Root dir - ld (loc07+1),hl -frm6: ld hl,224 ; записей в корне - ld (MS_Boot.media2),hl -ASect: ld hl,2880 ; секторов на диске - ld (MS_Boot.media3),hl -FSect: ld hl,9 ; секторов на FAT - ld (MS_Boot.media5),hl - ret - ; -noMSDOS:dec a - jr nz,SetCPM +FSETUP: ld a,(_OS) + or a + jr nz,noMSDOS +.sectorsAll+1: ld a,18 ; число секторов + ld (loc05+1),a + ld (loc08+1),a +.sectorsSide+1: ld hl,18 ; секторов на сторону + ld (MS_Boot.media6),hl + inc a ; запред. сектор + ld (_msdos.maxSector0),a + ld (_msdos.maxSector1),a + ld (loc06+1),a +.lastSector+1: ld a,34 ; посл. служ. сектор дискеты + ld (LastSect),a +.sectorsPerCluster+1: + ld a,1 ; секторов на кластер + ld (MS_Boot.media1),a +frm4: ld a,0xF0 ; байт формата + ld (MS_Boot.media4),a +frm5: ld hl,16896 ; размер FAT-ов + Root dir + ld (loc07+1),hl +frm6: ld hl,224 ; записей в корне + ld (MS_Boot.media2),hl +ASect: ld hl,2880 ; секторов на диске + ld (MS_Boot.media3),hl +FSect: ld hl,9 ; секторов на FAT + ld (MS_Boot.media5),hl + ret + ; +noMSDOS: dec a + jr nz,SetCPM ; Настроить форматилку на формат TR-DOS - ld a,16 ; число секторов - jr setOS + ld a,16 ; число секторов + jr setOS ; Настроить форматилку на формат CP/M-80 -SetCPM: ld a,5 ; число секторов -setOS: ld (loc05+1),a - ld (loc08+1),a - inc a ; запред. сектор - ld (loc06+1),a - ret +SetCPM: ld a,5 ; число секторов +setOS: ld (loc05+1),a + ld (loc08+1),a + inc a ; запред. сектор + ld (loc06+1),a + ret @@ -1502,7 +1506,7 @@ CalcTime: ; для 720kB см. метку '#' | ;-------------------------------------------------+ MS_Boot: -.pc_code: db 0xEB,0x3C,0x90 ; 3 байта, код перехода на загрузчик +.pc_code: db 0xEB,0xFE,0x00 ; 3 байта, код перехода на загрузчик ; 8 байт, OEM ID db "DSS " .dss_major_ver: db "1." @@ -1586,8 +1590,9 @@ MS_Boot: db 0x01,0x4E,0x02,0x23,0x0E,0x89,0x20,0x02 db 0x00,0x19,0x00 dw 0xAA55 -*/ - +*/ + DB 0 +.SIZE EQU $-MS_Boot @@ -1620,7 +1625,7 @@ L0D25: ld c,31h ld a,(tracks) out (REGDATA),a ld a,18h ; перейти на задан. дорожку - call A092C ; занести команду + call FDC_CMD ; занести команду call L07B3 ; ожидание готовности НГМД ret z ; нет ошибок call okno3 ; "Вставьте дискету" diff --git a/LISTBOX.ASM b/LISTBOX.ASM index 518a0eb..4f2d5b1 100755 --- a/LISTBOX.ASM +++ b/LISTBOX.ASM @@ -814,10 +814,10 @@ LstBoxInv: LD B,A CALL GetPutA PUSH DE - IN A,(Page3) + IN A,(SLOT3) PUSH AF LD A,(hPages.Win2) - OUT (Page3),A + OUT (SLOT3),A LD A,(IY+3) SUB (IY+2) SUB 3 @@ -843,7 +843,7 @@ lbclr1: INC DE ; цик ex af,af' ld (de),a POP AF - OUT (Page3),A + OUT (SLOT3),A POP IX LD E,(IY+2) INC E @@ -860,10 +860,10 @@ lbclr1: INC DE ; цик PrnLstBox: PUSH IY PUSH IX - IN A,(Page3) + IN A,(SLOT3) PUSH AF LD A,(hPages.Win2) - OUT (Page3),A + OUT (SLOT3),A PUSH IX POP IY LD IX,DialData @@ -937,7 +937,7 @@ PrLsBx5:PUSH AF JR NZ,PrLsBx5 PrLsBx6:CALL PutDial POP AF - OUT (Page3),A + OUT (SLOT3),A POP IX POP IY RET @@ -1005,14 +1005,14 @@ LBB1: ld a,l SUB (IX+1) LD B,A CALL GetPutA - IN A,(Page3) + IN A,(SLOT3) PUSH AF LD A,(hPages.Win2) - OUT (Page3),A + OUT (SLOT3),A LD A,"▒" LD (DE),A POP AF - OUT (Page3),A + OUT (SLOT3),A LD A,(IY+3) SUB 2 LD E,A @@ -1046,14 +1046,14 @@ LBe1: POP DE SUB (IX+1) LD B,A CALL GetPutA - IN A,(Page3) + IN A,(SLOT3) PUSH AF LD A,(hPages.Win2) - OUT (Page3),A + OUT (SLOT3),A LD A,"■" LD (DE),A POP AF - OUT (Page3),A + OUT (SLOT3),A POP IX POP IY RET diff --git a/MAIN.ASM b/MAIN.ASM index e75aab3..de3ffec 100755 --- a/MAIN.ASM +++ b/MAIN.ASM @@ -9,6 +9,7 @@ include './shared_includes/constants/dss_equ.inc' include './shared_includes/constants/bios_equ.inc' + include './shared_includes/constants/sp2000.inc' org #9200 - exe_begin.size diff --git a/MAP.ASM b/MAP.ASM index d54ff96..5dc8625 100755 --- a/MAP.ASM +++ b/MAP.ASM @@ -349,11 +349,11 @@ SetMedia: ld hl,3E00h ld (Avail),hl ld a,18 ; число секторов - ld (frm1+1),a + ld (FSETUP.sectorsAll),a ld hl,18 ; секторов на сторону - ld (SSect+1),hl + ld (FSETUP.sectorsSide),hl ld a,34 ; посл. служ. сектор - ld (frm2+1),a + ld (FSETUP.lastSector),a ld hl,16896 ; размер FAT-ов + Root dir ld (frm5+1),hl ld hl,2880 ; секторов на диске @@ -363,7 +363,7 @@ SetMedia: .loc13: ld a,0F0h ; байт формата ld (frm4+1),a ld a,1 ; секторов на кластер - ld (frm3+1),a + ld (FSETUP.sectorsPerCluster),a ld hl,224 ; записей в корне ld (frm6+1),hl .loc12: ld hl,Avail @@ -381,11 +381,11 @@ SetMedia: ld hl,7E00h ld (Avail),hl ld a,19 ; число секторов - ld (frm1+1),a + ld (FSETUP.sectorsAll),a ld hl,19 ; секторов на сторону - ld (SSect+1),hl + ld (FSETUP.sectorsSide),hl ld a,34 ; посл. служ. сектор - ld (frm2+1),a + ld (FSETUP.lastSector),a ld hl,16896 ; размер FAT-ов + Root dir ld (frm5+1),hl ld hl,3040 ; секторов на диске @@ -399,11 +399,11 @@ SetMedia: ld hl,0BA00h ld (Avail),hl ld a,20 ; число секторов - ld (frm1+1),a + ld (FSETUP.sectorsAll),a ld hl,20 ; секторов на сторону - ld (SSect+1),hl + ld (FSETUP.sectorsSide),hl ld a,36 ; посл. служ. сектор - ld (frm2+1),a + ld (FSETUP.lastSector),a ld hl,17920 ; размер FAT-ов + Root dir ld (frm5+1),hl ld hl,3200 ; секторов на диске @@ -417,11 +417,11 @@ SetMedia: ld hl,5A00h ld (Avail),hl ld a,20 ; число секторов - ld (frm1+1),a + ld (FSETUP.sectorsAll),a ld hl,20 ; секторов на сторону - ld (SSect+1),hl + ld (FSETUP.sectorsSide),hl ld a,36 ; посл. служ. сектор - ld (frm2+1),a + ld (FSETUP.lastSector),a ld hl,17920 ; размер FAT-ов + Root dir ld (frm5+1),hl ld hl,3280 ; секторов на диске @@ -435,11 +435,11 @@ SetMedia: ld hl,0AA00h ld (Avail),hl ld a,20 ; число секторов - ld (frm1+1),a + ld (FSETUP.sectorsAll),a ld hl,20 ; секторов на сторону - ld (SSect+1),hl + ld (FSETUP.sectorsSide),hl ld a,36 ; посл. служ. сектор - ld (frm2+1),a + ld (FSETUP.lastSector),a ld hl,17920 ; размер FAT-ов + Root dir ld (frm5+1),hl ld hl,3320 ; секторов на диске @@ -455,11 +455,11 @@ SetMedia: ld hl,0FA00h ld (Avail),hl ld a,21 ; число секторов - ld (frm1+1),a + ld (FSETUP.sectorsAll),a ld hl,21 ; секторов на сторону - ld (SSect+1),hl + ld (FSETUP.sectorsSide),hl ld a,36 ; посл. служ. сектор - ld (frm2+1),a + ld (FSETUP.lastSector),a ld hl,17920 ; размер FAT-ов + Root dir ld (frm5+1),hl ld hl,3360 ; секторов на диске @@ -473,11 +473,11 @@ SetMedia: ld hl,0A200h ld (Avail),hl ld a,21 ; число секторов - ld (frm1+1),a + ld (FSETUP.sectorsAll),a ld hl,21 ; секторов на сторону - ld (SSect+1),hl + ld (FSETUP.sectorsSide),hl ld a,36 ; посл. служ. сектор - ld (frm2+1),a + ld (FSETUP.lastSector),a ld hl,17920 ; размер FAT-ов + Root dir ld (frm5+1),hl ld hl,3444 ; секторов на диске @@ -491,11 +491,11 @@ SetMedia: ld hl,0F200h ld (Avail),hl ld a,21 ; число секторов - ld (frm1+1),a + ld (FSETUP.sectorsAll),a ld hl,21 ; секторов на сторону - ld (SSect+1),hl + ld (FSETUP.sectorsSide),hl ld a,38 ; посл. служ. сектор - ld (frm2+1),a + ld (FSETUP.lastSector),a ld hl,18944 ; размер FAT-ов + Root dir ld (frm5+1),hl ld hl,3486 ; секторов на диске @@ -516,21 +516,21 @@ SetMedia: ld hl,2400h ld (Avail),hl ld a,9 ; число секторов - ld (frm1+1),a + ld (FSETUP.sectorsAll),a ld hl,9 ; секторов на сторону - ld (SSect+1),hl + ld (FSETUP.sectorsSide),hl ld hl,1440 ; секторов на диске ld (ASect+1),hl .loc15: ld hl,6656 ; размер FAT-ов + Root dir ld (frm5+1),hl ld a,14 ; посл. служ. сектор - ld (frm2+1),a + ld (FSETUP.lastSector),a ld hl,3 ; секторов на FAT ld (FSect+1),hl ld a,0F9h ; байт формата ld (frm4+1),a ld a,2 ; секторов на кластер - ld (frm3+1),a + ld (FSETUP.sectorsPerCluster),a ld hl,112 ; записей в корне ld (frm6+1),hl jp .loc12 @@ -558,9 +558,9 @@ SetMedia: ld hl,1660 ; секторов на диске ld (ASect+1),hl .loc16: ld a,10 ; число секторов - ld (frm1+1),a + ld (FSETUP.sectorsAll),a ld hl,10 ; секторов на сторону - ld (SSect+1),hl + ld (FSETUP.sectorsSide),hl ld hl,36 ; размер межсект. пробела ld (GAP3),hl ld hl,INTERL3 ; уст. интерлив для 21 сектора @@ -825,27 +825,85 @@ SetDrive: -; << Функция создания атрибута "метка тома" убрана из DSS >> -; ; Создание метки дискеты (MS-DOS) -; (байт атрибута находится по смещ. +11 от начала записи) CreateLabel: +; ld hl,LABEL ; имя метки +; ld a,(hl) +; or a +; ret z +; call SetDisketa ; уст. текущим диском дискету +; ; создать файл +; ld hl,LABEL ; имя метки +; ld a,08h ; атрибут "метка тома" +; ld c,0Ah +; RST ToDSS +; jr c,.loc1 ; ошибка создания метки +; ;ret c +; ; закрыть файл +; ld c,12h +; RST ToDSS +; .loc1: jp RestPath ; восст. диск и путь + ld hl,LABEL + ld de,L2400 + BOOT_SECTOR.FAT.LABEL ;!TEST + ld b,11 + ; +.loop: ld a,(hl) + and a + jr z,.empty + ld (de),a + inc de + inc hl + djnz .loop + ret + ; +.empty: ld a,b + cp 11 + jr z,.no_name + ; + ex de,hl +.loop2: ld (hl)," " + inc hl + djnz .loop2 + ret +.no_name: + ld hl,MS_Boot.label + ld bc,11 + ldir ret - ld hl,LABEL ; имя метки - ld a,(hl) - or a - ret z - call SetDisketa ; уст. текущим диском дискету - ; создать файл - ld hl,LABEL ; имя метки - ld a,08h ; атрибут "метка тома" - ld c,0Ah - RST ToDSS - jr c,.loc1 ; ошибка создания метки - ;ret c - ; закрыть файл - ld c,12h - RST ToDSS -.loc1: jp RestPath ; восст. диск и путь -; RET +; Выходные значения: +; D - день +; E - месяц +; IX - год +; H - час +; L - минуты +; B - секунды +; C - день недели +;!TEST +CreateSerialNumber: + ld c,Dss.SysTime + rst ToDSS + ; + ex de,hl + add ix,de + ld a,xl + ld (L2400 + BOOT_SECTOR.FAT.SERIAL_NUMBER + 3),a + ld (L2400 + BOOT_SECTOR.FAT.SERIAL_NUMBER + 1),ix + ; + ld a,d + ld d,b + xor c +.loop: rra + djnz .loop + ; + ld e,h + ld h,l + ld l,e + ; + ld e,a + add hl,de + ld e,l + ld l,h + ld h,e + ld (L2400 + BOOT_SECTOR.FAT.SERIAL_NUMBER),hl + ret \ No newline at end of file diff --git a/RADIO.ASM b/RADIO.ASM index dea97c0..653f569 100755 --- a/RADIO.ASM +++ b/RADIO.ASM @@ -11,7 +11,7 @@ LabelBuff: DB 11 ; Max input symbols DB 0 ; Pos X DB 0 ; Add X DB 0 ; Inp.Symb -LABEL: DS 12,0 +LABEL: DS 12,0 ;!TEST cSystem: DB 0 ; 01/00 - созд./не созд. сист. дискету @@ -1327,15 +1327,15 @@ prne: LD A,(IY+2) SUB (IX+6) LD C,A LD B,0 - IN A,(Page3) + IN A,(SLOT3) PUSH AF LD A,(hPages.Win2) - OUT (Page3),A + OUT (SLOT3),A LDI INC DE JP PE,$-3 POP AF - OUT (Page3),A + OUT (SLOT3),A RET ;;;;;;;;;;;;;;;; @@ -1471,10 +1471,10 @@ ClastI: LD E,(IX+2) ;Xo SetClasInv: PUSH IX LD IX,DialData - IN A,(Page3) + IN A,(SLOT3) PUSH AF ;сохр.page4 LD A,(hPages.Win2) - OUT (Page3),A ;вкл.буфер + OUT (SLOT3),A ;вкл.буфер PUSH HL LD L,C ;Len X LD H,1 ;len Y @@ -1512,7 +1512,7 @@ SetDin2: INC HL CALL PutDialLn POP HL POP AF - OUT (Page3),A + OUT (SLOT3),A POP IX LD E,(IX+2) ;Xo pos element INC E @@ -1837,10 +1837,10 @@ ChangL1: INC HL ;Begin elements claster INC HL INC HL POP HL ;Reset begin elem table - IN A,(Page3) + IN A,(SLOT3) PUSH AF LD A,(hPages.Win2) - OUT (Page3),A + OUT (SLOT3),A ChangL2: LD D,(HL) ;Ypos INC HL INC HL @@ -1900,14 +1900,14 @@ cl1: BIT 7,(HL) CALL PILCurs ; Set cursor EI POP AF - OUT (Page3),A + OUT (SLOT3),A RET ;Change radio button ([x]) -ChangeR: IN A,(Page3) +ChangeR: IN A,(SLOT3) PUSH AF LD A,(hPages.Win2) - OUT (Page3),A + OUT (SLOT3),A LD D,(HL) ;Ypos INC HL INC HL @@ -1965,6 +1965,6 @@ cl2: CALL ResILCr ; CALL PILCurs ; уст. курсор EI POP AF - OUT (Page3),A + OUT (SLOT3),A RET diff --git a/Shared_Includes b/Shared_Includes index 68e156a..1b6a539 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 68e156a69e848e7b01656cdf67122022999d75ee +Subproject commit 1b6a539aea8d46b09a617a90a04a2e45dcb37b3f diff --git a/Version.inc b/Version.inc index f921d35..fb87ea5 100644 --- a/Version.inc +++ b/Version.inc @@ -3,4 +3,4 @@ ; версия программы major_version equ 1 -minor_version equ 15 \ No newline at end of file +minor_version equ 16 \ No newline at end of file