mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21:47 +03:00
игры с ZIP
This commit is contained in:
parent
73c7ab5f6b
commit
cd4271f994
120
BOOT/boot.asm
120
BOOT/boot.asm
@ -117,7 +117,7 @@ page_buffer equ #C000 ;
|
||||
ORG org_addr
|
||||
BEGIN: ;di
|
||||
in a,(SLOT3)
|
||||
ld (port+1),a ; á®åà. ¯®àâ
|
||||
ld (port),a ; á®åà. ¯®àâ
|
||||
push ix
|
||||
call save_path ; á®åà. ⥪. ¤¨áª ¨ ¯ãâì
|
||||
ld c,Dss.Version ; ã§ âì ¢¥àá¨î „Ž‘
|
||||
@ -134,7 +134,7 @@ BEGIN: ;di
|
||||
.old_ver: pop hl
|
||||
ld a,11 ; ¨¤¥ªá áâப¨ "Error: Need DSS version 1.70..."
|
||||
call print_string
|
||||
ld a,-1
|
||||
ld a,DSS_Error.sys.COMMON_ERROR
|
||||
jp exit
|
||||
;[x] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||
.check_build: ld hl,810 ; 1.70.810 d=¢¥àá¨ï, e=¬®¤¨ä¨ª æ¨ï, bc - ®¬¥à ᡮન. de = #0146, bc = 810 dos ver 1.70.810
|
||||
@ -153,11 +153,11 @@ version_ok: xor a ;
|
||||
RST ToDSS
|
||||
ld (boot_disk),a ; ¤¨áª (A=0,B=1,..)
|
||||
; ¯à®¢¥à¨âì ᮢ¯ ¤¥¨¥ ¤¨áª®¢
|
||||
ld hl,disk
|
||||
same_fdd: ld hl,disk
|
||||
cp (hl)
|
||||
jr nz,.next
|
||||
ld hl,confirm_flag
|
||||
ld (hl),1 ; ãáâ. ä« £
|
||||
ld hl,read_sys_files.swap_flag
|
||||
.flag+1: ld (hl),0 ; ãáâ. ä« £
|
||||
;
|
||||
; —⥨¥ ¢ ¡ ª¨ ä ©«®¢ á¨á⥬ë
|
||||
;
|
||||
@ -170,6 +170,11 @@ version_ok: xor a ;
|
||||
;--------------------------------------------
|
||||
; —⥨¥ ä ©« system.exe
|
||||
;--------------------------------------------
|
||||
read_sys_files: ;
|
||||
.noFiles+1: ld a,0
|
||||
or a
|
||||
jr nz,.write_boot
|
||||
;
|
||||
ld hl,name2 ; ¨¬ï ä ©«
|
||||
call read_file ; ¢áï à ¡®â ¯® § £à㧪¥ ä ©« ¢ áâà ¨æë
|
||||
;jr nc,read_file1_ok
|
||||
@ -180,7 +185,7 @@ version_ok: xor a ;
|
||||
;ld a,DSS_Error.sys.DISK_FULL ; ª®¤ ®è¨¡ª¨
|
||||
jp c,exit
|
||||
; á®åà. à ¡. ï祩ª¨ ä ©« system.exe
|
||||
read_file1_ok: ld hl,FILE1_PARAMS ; ®âªã¤
|
||||
.read_file1_ok: ld hl,FILE1_PARAMS ; ®âªã¤
|
||||
ld de,FILE2_PARAMS ; ªã¤
|
||||
ld bc,FILE2_PARAMS.dataSize
|
||||
ldir
|
||||
@ -198,12 +203,12 @@ read_file1_ok: ld hl,FILE1_PARAMS ;
|
||||
; ld c,Dss.FreeMem
|
||||
; RST ToDSS
|
||||
;jr read_file_err ; ®á¢®¡. ¡«®ª ¯ ¬ï⨠system.dos
|
||||
confirm_flag+1: ld a,0
|
||||
.swap_flag+1: ld a,1
|
||||
or a
|
||||
jr z,no_confirm
|
||||
jr nz,.no_confirm
|
||||
ld a,(boot_disk) ; á¨áâ. ¤¨áª
|
||||
cp 2
|
||||
jr nc,no_confirm ; ¥ ¤¨áª®¢®¤ë
|
||||
jr nc,.no_confirm ; ¥ ¤¨áª®¢®¤ë
|
||||
; § ¯à®á¨âì æ¥«¥¢®© ¤¨áª
|
||||
ld a,(disk) ; § ¤ ë© ®¬¥à ¤¨áª
|
||||
add a,'A'
|
||||
@ -212,9 +217,8 @@ confirm_flag+1: ld a,0
|
||||
call print_string
|
||||
ld bc,Dss.K_CLEAR + Dss.WaitKey*256; ¦¤¥¬ ¦ â¨ï ª« ¢¨è¨
|
||||
RST ToDSS
|
||||
no_confirm: ld a,2 ; ¨¤¥ªá áâப¨ "Installing boot loader..."
|
||||
call print_string
|
||||
; “áâ. 楫¥¢®© ¤¨áª/¯ãâì
|
||||
;
|
||||
.no_confirm: ; “áâ. 楫¥¢®© ¤¨áª/¯ãâì
|
||||
ld a,(disk) ; 楫¥¢®© ¤¨áª
|
||||
ld hl,root_path ; "X:\" áâப ¯ãâ¨
|
||||
add a,'A'
|
||||
@ -222,17 +226,13 @@ no_confirm: ld a,2 ;
|
||||
ld c,Dss.ChDir ; ᬥ ⥪. ª â «®£
|
||||
RST ToDSS
|
||||
;--------------------------------------------
|
||||
; ‡ ¯¨á âì boot-§ £àã§ç¨ª
|
||||
call write_boot_loader
|
||||
jr c,write_error ; ®è¨¡ª à ¡®âë á ¤¥¢ ©á®¬
|
||||
;
|
||||
ld a,3 ; ¨¤¥ªá áâப¨ "Writing system files..."
|
||||
call print_string
|
||||
; ‡ ¯¨áì ä ©« system.dos
|
||||
ld hl,name1 ; ¨¬ï ä ©«
|
||||
call write_file
|
||||
jr c,write_error
|
||||
ok_write1: ; ®á¢®¡®¤¨âì ¯ ¬ïâì
|
||||
.ok_write1: ; ®á¢®¡®¤¨âì ¯ ¬ïâì
|
||||
; ld a,(FILE1_PARAMS.id_blck) ; ¡«®ª system.dos
|
||||
; ld c,Dss.FreeMem
|
||||
; RST ToDSS
|
||||
@ -255,14 +255,21 @@ ok_write1: ;
|
||||
jr c,write_error
|
||||
;jr c,exit ; ®è¨¡ª
|
||||
;
|
||||
; ‡ ¯¨á âì boot-§ £àã§ç¨ª
|
||||
.write_boot: ld a,2 ; ¨¤¥ªá áâப¨ "Installing boot loader..."
|
||||
call print_string
|
||||
call write_boot_loader
|
||||
jr c,write_error ; ®è¨¡ª à ¡®âë á ¤¥¢ ©á®¬
|
||||
;
|
||||
ld a,(disk) ; § ¤ ë© ®¬¥à ¤¨áª
|
||||
add a,'A'
|
||||
ld (messages.lett1),a
|
||||
ld a,1 ; ¨¤¥ªá áâப¨ "System installed on disk "
|
||||
call print_string
|
||||
ld a,(confirm_flag)
|
||||
;
|
||||
ld a,(read_sys_files.swap_flag)
|
||||
or a
|
||||
jr z,exit
|
||||
jr nz,.not_fdd
|
||||
; § ¯à®á¨âì á¨áâ¥¬ë© ¤¨áª
|
||||
ld a,(boot_disk) ; á¨áâ. ¤¨áª
|
||||
cp 2
|
||||
@ -274,9 +281,10 @@ ok_write1: ;
|
||||
ld bc,Dss.K_CLEAR + Dss.WaitKey*256; ¦¤¥¬ ¦ â¨ï ª« ¢¨è¨
|
||||
RST ToDSS
|
||||
.not_fdd: xor a ; ª®¤ "Ok"
|
||||
;
|
||||
exit: push af
|
||||
call restore_path ; ¢®ááâ. ⥪. ¤¨áª ¨ ¯ãâì
|
||||
port: ld a,-1 ; á®åà. ¯®àâ
|
||||
port+1: ld a,-1 ; á®åà. ¯®àâ
|
||||
out (SLOT3),a
|
||||
pop af
|
||||
ld c,Dss.Exit ; ¢ë室 ¢ „Ž‘
|
||||
@ -288,7 +296,7 @@ help: ld a,8 ;
|
||||
call print_string
|
||||
ld a,4 ; ¨¤¥ªá áâப¨ åí«¯
|
||||
err_mes: call print_string
|
||||
ld a,1 ; ª®¤ ®è¨¡ª¨
|
||||
ld a,DSS_Error.sys.COMMON_ERROR
|
||||
jr exit
|
||||
|
||||
write_error: ld a,7 ; ¨¤¥ªá áâப¨ "Can't install boot on this disk"
|
||||
@ -564,35 +572,78 @@ SETUP_ZERO_SECTOR:
|
||||
; CF-¯à¨ ®è¨¡ª¥
|
||||
;-------------------------------------------------
|
||||
get_drive_letter:
|
||||
; § ç¨á⪠¡ãä¥à
|
||||
xor a
|
||||
ld (buffer+1),a
|
||||
;
|
||||
inc hl ; ¡ãä¥à áâப¨
|
||||
ld de,buffer ; ¡ãä¥à ¤«ï ¢ë¤¥«. ¯ à ¬¥âà
|
||||
ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬. áâப¨
|
||||
RST ToDSS
|
||||
;
|
||||
rra
|
||||
rl b ; ¯à¨§ ª ª®æ ¯ à ¬¥â஢
|
||||
;
|
||||
ld de,buffer
|
||||
ld a,(de)
|
||||
inc de
|
||||
ld c,a ; á®åà. 'a'
|
||||
ld a,(de)
|
||||
inc de
|
||||
cp ':'
|
||||
jr nz,get_drive_err ; ¤¨áª ¥ § ¤
|
||||
ld a,(de)
|
||||
jr nz,.get_drive_err ; ¤¨áª ¥ § ¤
|
||||
inc de
|
||||
ld a,(de)
|
||||
or a
|
||||
jr nz,get_drive_err ; > 1 ¯ à ¬¥âà
|
||||
ld a,c ; ¢®ááâ. 'a'
|
||||
cp 'A'
|
||||
jr c,get_drive_err
|
||||
cp 'z'+1
|
||||
jr nc,get_drive_err
|
||||
jr nz,.get_drive_err ; ¥¯à ¢¨«ìë¥ ¯ à ¬¥âàë
|
||||
;
|
||||
rr b ; ¯à¨§ ª ª®æ ¯ à ¬¥â஢
|
||||
jr c,.checkChar
|
||||
;
|
||||
push bc
|
||||
ld de,buffer ; ¡ãä¥à ¤«ï ¢ë¤¥«. ¯ à ¬¥âà
|
||||
ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬. áâப¨
|
||||
RST ToDSS
|
||||
pop bc
|
||||
jr nc,.get_drive_err ; ¥¯à ¢¨«ìë¥ ¯ à ¬¥âàë
|
||||
;
|
||||
ld de,buffer ; ¡ãä¥à ¤«ï ¢ë¤¥«. ¯ à ¬¥âà
|
||||
ld a,(de)
|
||||
cp "0"
|
||||
ret c ; ¥¯à ¢¨«ìë¥ ¯ à ¬¥âàë
|
||||
cp "4"
|
||||
jr nc,.get_drive_err ; ¥¯à ¢¨«ìë¥ ¯ à ¬¥âàë
|
||||
;
|
||||
ld b,a
|
||||
inc de
|
||||
ld a,(de)
|
||||
or a
|
||||
jr nz,.get_drive_err ; ¥¯à ¢¨«ìë¥ ¯ à ¬¥âàë
|
||||
;
|
||||
ld a,b
|
||||
;0 - standart
|
||||
;1 - silent
|
||||
;2 - no_files
|
||||
;3 - no_files+silent
|
||||
sub "0"
|
||||
jr z,.checkChar
|
||||
rra
|
||||
ld (read_sys_files.noFiles),a
|
||||
ld (same_fdd.flag),a
|
||||
rla
|
||||
and 1
|
||||
ld (print_string.silentMode),a
|
||||
; ¯à®¢¥à塞 ¡ãª¢ã
|
||||
.checkChar: ld a,c ; ¢®ááâ. 'a'
|
||||
and %1101'1111
|
||||
cp 'A'
|
||||
ret c ; ®è¨¡ª
|
||||
cp 'Z'+1
|
||||
jr nc,.get_drive_err
|
||||
sub 'A'
|
||||
or a
|
||||
ret
|
||||
;
|
||||
get_drive_err: scf ; ®è¨¡ª
|
||||
.get_drive_err: scf ; ®è¨¡ª
|
||||
ret
|
||||
|
||||
;----------------------------------------------------
|
||||
; á®åà. ⥪. á¨áâ¥¬ë© ¤¨áª ¨ ¯ãâì
|
||||
;----------------------------------------------------
|
||||
@ -690,6 +741,9 @@ messages: db 0
|
||||
; ‚뢥á⨠áâப㠯® ¨¤¥ªáã
|
||||
; ¢å®¤: a=¨¤¥ªá áâப¨
|
||||
print_string: call get_string ; ¯®¨áª áâப¨ ¯® ¥¥ ¨¤¥ªáã ¢ 'a'
|
||||
.silentMode+1: ld a,0
|
||||
or a
|
||||
ret nz
|
||||
ld c,Dss.PChars ; ¢ë¢®¤ áâப¨
|
||||
RST ToDSS
|
||||
ret
|
||||
|
||||
@ -1 +1 @@
|
||||
36
|
||||
44
|
||||
@ -440,12 +440,13 @@ GetParams: EX DE,HL
|
||||
JR .error
|
||||
;
|
||||
; [ ] media change - ã¡à âì ;!FIXIT
|
||||
.next: EX AF,AF
|
||||
.next: EX AF,AF'
|
||||
JR NC,.NoMediaChange
|
||||
CP BIOS.Error.ATAPI.UnitAttention
|
||||
SCF
|
||||
JR NZ,.NoMediaChange
|
||||
;
|
||||
PUSH IX
|
||||
.ReDEFINE: PUSH IX
|
||||
PUSH IY
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
@ -457,52 +458,51 @@ GetParams: EX DE,HL
|
||||
POP IY
|
||||
POP IX
|
||||
;
|
||||
.NoMediaChange: ;EX AF,AF
|
||||
; ¯¥à¥â ᮢª ॣ¨áâ஢ á १ã«ìâ ⮬ ®â BIOS
|
||||
EX DE,HL
|
||||
LD C,E
|
||||
LD E,D
|
||||
LD D,0
|
||||
LD A,B
|
||||
LD B,D
|
||||
EXX
|
||||
.NoMediaChange: ; ¯¥à¥â ᮢª ॣ¨áâ஢ á १ã«ìâ ⮬ ®â BIOS
|
||||
EX DE,HL
|
||||
LD C,E
|
||||
LD E,D
|
||||
LD D,0
|
||||
LD A,B
|
||||
LD B,D
|
||||
EXX
|
||||
;[ ] 04/01/2025 ¢®§¢à 饨¥ à §¬¥à ᥪâ®à
|
||||
EX AF,AF'
|
||||
LD A,XH
|
||||
LD E,XL
|
||||
RL E
|
||||
RLA
|
||||
EX AF,AF'
|
||||
LD A,XH
|
||||
LD E,XL
|
||||
RL E
|
||||
RLA
|
||||
;
|
||||
; SECTORS ON LOGICAL DISK
|
||||
LD E,(IY+LOGDRV.SIZE_IN_SECTORS+0)
|
||||
LD D,(IY+LOGDRV.SIZE_IN_SECTORS+1)
|
||||
LD L,(IY+LOGDRV.SIZE_IN_SECTORS+2)
|
||||
LD H,(IY+LOGDRV.SIZE_IN_SECTORS+3)
|
||||
LD E,(IY+LOGDRV.SIZE_IN_SECTORS+0)
|
||||
LD D,(IY+LOGDRV.SIZE_IN_SECTORS+1)
|
||||
LD L,(IY+LOGDRV.SIZE_IN_SECTORS+2)
|
||||
LD H,(IY+LOGDRV.SIZE_IN_SECTORS+3)
|
||||
;
|
||||
;[x] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||
LD C,(IY+LOGDRV.PARTITION_RECORD_NUM) ; ®¬¥à ¯ àâ¨æ¨¨ ¢ MBR ¤¨áª
|
||||
LD C,(IY+LOGDRV.PARTITION_RECORD_NUM) ; ®¬¥à ¯ àâ¨æ¨¨ ¢ MBR ¤¨áª
|
||||
;
|
||||
;[ ] 04/01/2025 ¢®§¢à 饨¥ à §¬¥à ᥪâ®à
|
||||
; 00 - undefined
|
||||
; 01 - 128 bytes
|
||||
; 02 - 256 bytes
|
||||
; 04 - 512 bytes
|
||||
; 08 - 1024 bytes
|
||||
; 16 - 2048 bytes
|
||||
; 32 - 4096 bytes
|
||||
; 64 - 8192 bytes
|
||||
; 128 - 16384 bytes
|
||||
;EX AF,AF'
|
||||
LD B,A
|
||||
; 00 - undefined
|
||||
; 01 - 128 bytes
|
||||
; 02 - 256 bytes
|
||||
; 04 - 512 bytes
|
||||
; 08 - 1024 bytes
|
||||
; 16 - 2048 bytes
|
||||
; 32 - 4096 bytes
|
||||
; 64 - 8192 bytes
|
||||
; 128 - 16384 bytes
|
||||
;EX AF,AF'
|
||||
LD B,A
|
||||
;
|
||||
LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER) ;MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
|
||||
EX AF,AF'
|
||||
;
|
||||
AND A
|
||||
.error: POP IY
|
||||
POP IX
|
||||
RET
|
||||
|
||||
;AND A
|
||||
.error: POP IY
|
||||
POP IX
|
||||
RET
|
||||
;
|
||||
|
||||
|
||||
Removable: XOR A
|
||||
@ -553,15 +553,7 @@ MediaCheck: PUSH IY
|
||||
;
|
||||
CP BIOS.Error.ATAPI.UnitAttention
|
||||
JR Z,.Reinit
|
||||
;!FIXIT § £«ãèª /ª®áâë«ì ¨§-§ ¯¥à¥á¥ç¥¨ï ®¬¥à®¢ ®è¨¡®ª
|
||||
POP BC ; <20> « á á⥪
|
||||
/*
|
||||
BIOS.Error.BadNumber
|
||||
BIOS.Error.Failure
|
||||
BIOS.Error.Busy
|
||||
BIOS.Error.ATAPI.TimeOut
|
||||
*/
|
||||
;LD A,BIOS.Error.Busy
|
||||
.exit: SCF
|
||||
POP IY
|
||||
RET
|
||||
@ -584,8 +576,10 @@ MediaCheck: PUSH IY
|
||||
JR NC,.no_errors
|
||||
;
|
||||
CP BIOS.Error.UnknownDevice
|
||||
JR NZ,.no_errors
|
||||
AND A ; á¡à®á ZF
|
||||
SCF
|
||||
RET Z
|
||||
RET
|
||||
;
|
||||
.no_errors: LD A,#FF ;!HARDCODE drive changed
|
||||
OR A
|
||||
@ -604,12 +598,15 @@ CHECK_IDE_SECTOR_SIZE: ;RET
|
||||
;
|
||||
|
||||
ReDEFINE_PARTITIONS:
|
||||
EX AF,AF'
|
||||
LD B,A ; HDD_INIT_TABLE.RemovableMedia
|
||||
LD A,DSS_MAX_DRIVES_AMOUNT - 1 ; ®£à ¨ç¨â¥«ì, ç⮡ ¥ ¤¥â¥ªâ¨âì ¡®«ìè¥ 1 à §¤¥«
|
||||
LD (Init.count),A
|
||||
LD A,(IY + LOGDRV.PHISICAL_DRV_NUMBER)
|
||||
LD (CURRENT_DRIVE.Number),A
|
||||
LD (LOGDRV_OFFSET),IY
|
||||
;RES 1,(IY + LOGDRV.MediaParameters) - á¡à áë¢ ¥âáï ¢ DEFINE_PARTITIONS
|
||||
;LD B,%0000'0011 ;!HARDCODE drive changed, removable media
|
||||
JP DEFINE_PARTITIONS
|
||||
|
||||
|
||||
@ -831,7 +828,7 @@ DEFINE_PARTITIONS:
|
||||
AND %1111'1101
|
||||
LD (CURRENT_DRIVE.Removable),A
|
||||
LD (EXT_Partition.Low),DE ;R01
|
||||
LD (EXT_Partition.High),IX ;R01
|
||||
LD (EXT_Partition.High),DE ;R01
|
||||
;
|
||||
.LOOP: LD (CURRENT_SECTOR.Low),DE
|
||||
LD (CURRENT_SECTOR.High),IX
|
||||
|
||||
@ -33,14 +33,21 @@ cmd_info: CALL Get_Path
|
||||
;
|
||||
.patch_A+1: LD A,0
|
||||
CALL read_disk_info
|
||||
JR C,.Unformatted_Partition
|
||||
JR NC,.info_ok
|
||||
;
|
||||
CP DSS_Error.sys.MEDIA_CHANGED
|
||||
JR NZ,.Unsupported_Partition
|
||||
;
|
||||
LD A,(.patch_A)
|
||||
CALL read_disk_info
|
||||
JR C,.Unsupported_Partition
|
||||
; %7 - Volume label
|
||||
; serial_string - Volume serial number string
|
||||
; full_space_high \
|
||||
; full_space_medium - Partition size
|
||||
; full_space_low /
|
||||
;
|
||||
LD HL,serial_string
|
||||
.info_ok: LD HL,serial_string
|
||||
LD DE,Buffers.bat_params.PRM4 ; Volume serial number string
|
||||
CALL ncopy_string
|
||||
; full capacity
|
||||
@ -73,7 +80,7 @@ cmd_info: CALL Get_Path
|
||||
JP RESTORE_ALL.path
|
||||
;RET
|
||||
;
|
||||
.Unformatted_Partition:
|
||||
.Unsupported_Partition:
|
||||
LD HL,.none_string
|
||||
LD DE,Buffers.bat_params.PRM4 ; Volume serial number string
|
||||
CALL ncopy_string
|
||||
@ -89,13 +96,17 @@ cmd_info: CALL Get_Path
|
||||
LD A,C
|
||||
CP "C" - "A"
|
||||
JR C,.ItIsFDD
|
||||
;
|
||||
LD DE,Dss.DRV.GenIOCTL.Enter
|
||||
LD BC,Dss.DRV.GenIOCTL.GetParams
|
||||
RST ToDSS.DRV
|
||||
JR NC,.calc_size
|
||||
JR C,.noMedia
|
||||
LD A,H
|
||||
AND %1111'0000 ; ¯à®¢¥àª ®¬¥à ᥪâ®à > 28bit = ¥â ®á¨â¥«ï
|
||||
JR Z,.calc_size
|
||||
;
|
||||
.ItIsFDD: ;
|
||||
LD HL,.Unknown_str
|
||||
.noMedia: LD HL,.Unknown_str
|
||||
LD DE,Buffers.bat_params.PRM5 ; Drive size
|
||||
CALL ncopy_string
|
||||
JR .print_info_2
|
||||
|
||||
@ -1 +1 @@
|
||||
504
|
||||
513
|
||||
@ -1 +1 @@
|
||||
Subproject commit a6c50f572424e88f6199d639fa8109d53b71142c
|
||||
Subproject commit 68e156a69e848e7b01656cdf67122022999d75ee
|
||||
Loading…
Reference in New Issue
Block a user