игры с ZIP

This commit is contained in:
Tolik 2025-05-02 04:11:42 +10:00
parent 73c7ab5f6b
commit cd4271f994
6 changed files with 150 additions and 88 deletions

View File

@ -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

View File

@ -1 +1 @@
36
44

View File

@ -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,8 +458,7 @@ GetParams: EX DE,HL
POP IY
POP IX
;
.NoMediaChange: ;EX AF,AF
; ¯¥à¥â á®¢ª  ॣ¨áâ஢ á १ã«ìâ â®¬ ®â BIOS
.NoMediaChange: ; ¯¥à¥â á®¢ª  ॣ¨áâ஢ á १ã«ìâ â®¬ ®â BIOS
EX DE,HL
LD C,E
LD E,D
@ -498,11 +498,11 @@ GetParams: EX DE,HL
LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER) ;MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
EX AF,AF'
;
AND A
;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

View File

@ -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

View File

@ -1 +1 @@
504
513

@ -1 +1 @@
Subproject commit a6c50f572424e88f6199d639fa8109d53b71142c
Subproject commit 68e156a69e848e7b01656cdf67122022999d75ee