mirror of
https://github.com/Tolik-Trek/FFORMAT.git
synced 2026-06-15 01:11:44 +03:00
246 lines
3.4 KiB
NASM
Executable File
246 lines
3.4 KiB
NASM
Executable File
; Š®¤ ”®à¬ ⨫ª¨ (¡¥§ ¥å¥-§ £®«®¢ª ) 㯠ª®¢ Hrust v1.2
|
||
;
|
||
|
||
|
||
; ®¯¨á ¨¥ ds xx
|
||
; %imacro ds 1
|
||
; times %1 db 0
|
||
; %endmacro
|
||
|
||
include './shared_includes/constants/dss_equ.inc'
|
||
include './shared_includes/constants/bios_equ.inc'
|
||
|
||
org #9200 - exe_begin.size
|
||
|
||
exe_begin: db 'EX' ; exe ID
|
||
db 'E' ; exe ⨯
|
||
db 1 ; exe ¢¥àá¨ï
|
||
DWORD exe_begin.size ; ᬥé. ª®¤
|
||
dw 0 ; end-beg, ¯¥à¢¨çë© § £àã§ç¨ª
|
||
dw 0,0 ; १¥à¢
|
||
dw 0 ;
|
||
dw Packed ; ¤à¥á § £à㧪¨ ª®¤
|
||
dw Start ; ¤à¥á ¯¥à¥¤ ç¨ ã¯à ¢«¥¨ï
|
||
dw #C000 ; ¤à¥á á⥪
|
||
;ds 490 ; १¥à¢
|
||
.size EQU $-exe_begin
|
||
|
||
|
||
org #9200
|
||
Packed: incbin 'build/format.hrs'
|
||
|
||
|
||
Start: ld c,0 ; ã§ âì ¢¥àá¨î „Ž‘
|
||
RST ToDSS
|
||
ld hl,0145h ; 1.69
|
||
and a
|
||
sbc hl,de
|
||
jr c,ok ; > 1.69
|
||
;
|
||
ld hl,ver_err
|
||
ld c,5Ch
|
||
RST ToDSS
|
||
ld bc,#2641
|
||
RST ToDSS
|
||
ret
|
||
|
||
ver_err: db "Invalid DSS version, DSS 1.70 or higher is required.",0Dh,0Ah,0
|
||
|
||
|
||
ok: LD HL,#6200 ;!HARDCODE
|
||
LD BC,Dss.AppInfo.EXE_HomeDir
|
||
RST ToDSS
|
||
;
|
||
ld hl,Packed ; 㯠ª. ¤ ë¥
|
||
ld de,6400h ; ªã¤ à ᯠª®¢ âì
|
||
push de ; ¤à¥á ¯¥à¥å®¤
|
||
|
||
; ä®à¬ â 㯠ª. ä ©« :
|
||
; +0 (word) "HR" - ᨣ âãà
|
||
; +2 (word) - ¤«¨ ¨á室®£® ä ©«
|
||
; +4 (word) - ¤«¨ 㯠ª®¢ ®£® ä ©«
|
||
|
||
; <20> ᯠª®¢é¨ª (DeHrust)
|
||
|
||
ld ix,-12
|
||
add ix,sp
|
||
push de
|
||
ld sp,hl
|
||
pop bc
|
||
ex de,hl
|
||
pop bc
|
||
dec bc
|
||
add hl,bc
|
||
ex de,hl
|
||
pop bc
|
||
dec bc
|
||
add hl,bc
|
||
sbc hl,de
|
||
add hl,de
|
||
jr c,loc1
|
||
ld d,h
|
||
ld e,l
|
||
loc1: lddr
|
||
ex de,hl
|
||
ld d,(ix+11)
|
||
ld e,(ix+10)
|
||
ld sp,hl
|
||
pop hl
|
||
pop hl
|
||
pop hl
|
||
ld b,6
|
||
loc2: dec sp
|
||
pop af
|
||
ld (ix+6),a
|
||
inc ix
|
||
djnz loc2
|
||
exx
|
||
ld d,0BFh
|
||
ld bc,1010h
|
||
pop hl
|
||
loc3: dec sp
|
||
pop af
|
||
exx
|
||
loc4: ld (de),a
|
||
inc de
|
||
loc5: exx
|
||
loc6: add hl,hl
|
||
djnz loc7
|
||
pop hl
|
||
ld b,c
|
||
loc7: jr c,loc3
|
||
ld e,1
|
||
loc8: ld a,80h
|
||
loc9: add hl,hl
|
||
djnz loc10
|
||
pop hl
|
||
ld b,c
|
||
loc10: rla
|
||
jr c,loc9
|
||
cp 3
|
||
jr c,loc11
|
||
add a,e
|
||
ld e,a
|
||
xor c
|
||
jr nz,loc8
|
||
loc11: add a,e
|
||
cp 4
|
||
jr z,loc26
|
||
adc a,0FFh
|
||
cp 2
|
||
exx
|
||
loc12: ld c,a
|
||
loc13: exx
|
||
ld a,0BFh
|
||
jr c,loc17
|
||
loc14: add hl,hl
|
||
djnz loc15
|
||
pop hl
|
||
ld b,c
|
||
loc15: rla
|
||
jr c,loc14
|
||
jr z,loc16
|
||
inc a
|
||
add a,d
|
||
jr nc,loc18
|
||
sub d
|
||
loc16: inc a
|
||
jr nz,loc20
|
||
ld a,0EFh
|
||
loc17: rrca
|
||
cp a
|
||
loc18: add hl,hl
|
||
djnz loc19
|
||
pop hl
|
||
ld b,c
|
||
loc19: rla
|
||
jr c,loc18
|
||
loc20: exx
|
||
ld h,0FFh
|
||
jr z,loc21
|
||
ld h,a
|
||
dec sp
|
||
inc a
|
||
jr z,loc24
|
||
pop af
|
||
loc21: ld l,a
|
||
add hl,de
|
||
ldir
|
||
loc22: jr loc5
|
||
;
|
||
loc23: exx
|
||
rrc d
|
||
jr loc6
|
||
;
|
||
loc24: pop af
|
||
cp 0E0h
|
||
jr c,loc21
|
||
rlca
|
||
xor c
|
||
inc a
|
||
jr z,loc23
|
||
sub 10h
|
||
loc25: ld l,a
|
||
ld c,a
|
||
ld h,0FFh
|
||
add hl,de
|
||
ldi
|
||
dec sp
|
||
pop af
|
||
ld (de),a
|
||
inc hl
|
||
inc de
|
||
ld a,(hl)
|
||
jr loc4
|
||
;
|
||
loc26: ld a,80h
|
||
loc27: add hl,hl
|
||
djnz loc28
|
||
pop hl
|
||
ld b,c
|
||
loc28: adc a,a
|
||
jr nz,loc31
|
||
jr c,loc27
|
||
ld a,0FCh
|
||
jr loc32
|
||
;
|
||
loc29: dec sp
|
||
pop bc
|
||
ld c,b
|
||
ld b,a
|
||
ccf
|
||
jr loc13
|
||
;
|
||
loc30: cp 0Fh
|
||
jr c,loc29
|
||
jr nz,loc12
|
||
add a,0F4h
|
||
ld sp,ix
|
||
jr loc34
|
||
;
|
||
loc31: sbc a,a
|
||
ld a,0EFh
|
||
loc32: add hl,hl
|
||
djnz loc33
|
||
pop hl
|
||
ld b,c
|
||
loc33: rla
|
||
jr c,loc32
|
||
exx
|
||
jr nz,loc25
|
||
bit 7,a
|
||
jr z,loc30
|
||
sub 0EAh
|
||
loc34: ex de,hl
|
||
loc35: pop de
|
||
ld (hl),e
|
||
inc hl
|
||
ld (hl),d
|
||
inc hl
|
||
dec a
|
||
jr nz,loc35
|
||
ex de,hl
|
||
jr nc,loc22
|
||
ret
|
||
|