mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21:47 +03:00
310 lines
9.1 KiB
NASM
310 lines
9.1 KiB
NASM
;-------------------------------------------------
|
||
; ‚뢮¤ á®®¡é¥¨ï ®è¨¡ª¨ ¯® ¨¤¥ªáã
|
||
; ¢å®¤: a=®¬¥à ®è¨¡ª¨
|
||
;-------------------------------------------------
|
||
print_err_message:
|
||
ld e,a
|
||
ld d,0
|
||
inc de
|
||
ld hl,ERR0 ; ¬ áᨢ áâப
|
||
ld bc,ERR0.Size ; à §¬¥à ¬ áᨢ
|
||
call LCPIR ; ©â¨ áâபã
|
||
call PRINTZ ; ä®à¬ â. ¢ë¢®¤ áâப¨
|
||
call newline
|
||
jp newline
|
||
|
||
|
||
|
||
; ‚뢮¤ áâப¨ ®è¨¡ª¨
|
||
;A850D:
|
||
invalid_param:
|
||
ld de,5 ; ¨¤¥ªá "Invalid parametr"
|
||
jr MESSAGE
|
||
|
||
|
||
|
||
;-------------------------------------------------
|
||
; ‚뢮¤ á®®¡é¥¨ï ®è¨¡ª¨ ¯® ¨¤¥ªáã
|
||
; ¢å®¤: de=¨¤¥ªá áâப¨
|
||
;-------------------------------------------------
|
||
MESSAGE:
|
||
call FMESAGE ; ©â¨ áâப㠯® ¨¤¥ªáã
|
||
jp PRINTZ ; ä®à¬ â. ¢ë¢®¤ áâப¨
|
||
;jp A82CC ; ã§ âì ¨ ãáâ. ¯®«®¦. ªãàá®à
|
||
|
||
|
||
; <20> ©â¨ áâப㠯® ¨¤¥ªáã
|
||
; ¢å®¤: de=¨¤¥ªá áâப¨
|
||
; ¢ë室: hl=áâப
|
||
FMESAGE: inc de
|
||
ld hl,MSG0 ; ç «® ¬ áᨢ áâப
|
||
ld bc,MSG0.Size ; à §¬¥à ¬ áᨢ
|
||
LCPIR: xor a
|
||
cpir
|
||
ret po
|
||
ret nz
|
||
;R11
|
||
XOR A
|
||
CP (HL)
|
||
JR Z,.no_mess
|
||
;
|
||
dec de
|
||
ld a,d
|
||
or e
|
||
jr nz,LCPIR
|
||
ret
|
||
.no_mess: INC HL
|
||
RET
|
||
|
||
;[x] ¨á¯à ¢«¥ ¡ £ á ¢ë室®¬ § ¯à¥¤¥«ë ¡ãä¥à PRM. —ãâì ®¯â¨¬¨§¨à®¢
|
||
;----------------------------------------------------------------------;
|
||
; ”®à¬ â¨à®¢ ë© ¢ë¢®¤ áâப¨ á ¯®¤áâ ®¢ª®© à£ã¬¥â®¢ ¢¬¥áâ® %1-%9
|
||
; ¢å®¤: hl=¡ãä¥à áâப¨
|
||
;----------------------------------------------------------------------;
|
||
PRINTZ: ld a,(hl)
|
||
inc hl
|
||
or a
|
||
ret z
|
||
cp '%'
|
||
jr z,.check_PRM
|
||
.char: ld c,Dss.PutChar
|
||
RST ToDSS
|
||
jp PRINTZ
|
||
.bad_PRM:
|
||
ld a,'%'
|
||
jp .char
|
||
.check_PRM:
|
||
ld a,(hl)
|
||
cp '9'+1
|
||
jr nc,.bad_PRM
|
||
inc hl
|
||
sub '1'
|
||
push hl
|
||
;!TEST
|
||
;ld l,a
|
||
;ld h,0
|
||
;add hl,hl ;1+1=2
|
||
;add hl,hl ;2+2=4
|
||
;add hl,hl ;4+4=8
|
||
;add hl,hl ;8+8=16 à §¬¥à ®â¤¥«ì®£® ¯®¤¡ãä¥à
|
||
ADD A
|
||
ADD A
|
||
ADD A
|
||
ADD A
|
||
LD L,A
|
||
LD H,0
|
||
;
|
||
ld bc,PRM1 ; ¡ãä¥à
|
||
add hl,bc
|
||
ld c,Dss.PChars ; ¢ë¢®¤ áâப¨
|
||
RST ToDSS
|
||
pop hl
|
||
jp PRINTZ
|
||
|
||
|
||
|
||
;!FIXIT ¯¥à¥¥á⨠ª ®¡é¨¬ ¡ãä¥à ¬ ª ª ã ¬¥ï
|
||
; ¡ãä¥àë à£ã¬¥â®¢ ª®¬ ¤®© áâப¨
|
||
PRM1: BLOCK 16,0 ; à£ã¬¥â %1
|
||
PRM2: BLOCK 16,0 ; à£ã¬¥â %2
|
||
PRM3: BLOCK 16,0 ; à£ã¬¥â %3
|
||
PRM4: BLOCK 16,0 ; à£ã¬¥â %4
|
||
PRM5: BLOCK 16,0 ; à£ã¬¥â %5
|
||
PRM6: BLOCK 16,0 ; à£ã¬¥â %6
|
||
PRM7: BLOCK 16,0 ; à£ã¬¥â %7
|
||
PRM8: BLOCK 16,0 ; à£ã¬¥â %8
|
||
PRM9: BLOCK 16,0 ; à£ã¬¥â %9
|
||
|
||
|
||
|
||
;!TODO ¥ § ¡ëâì § ¬¥¨âì æ¨äàë í⨠¬¥âª¨
|
||
DIR1MSG EQU 0
|
||
VERSMSG EQU 1
|
||
DATEMSG EQU 2
|
||
TIMEMSG EQU 3
|
||
PAUSMSG EQU 4
|
||
ILLGMSG EQU 5
|
||
ECHOMSG EQU 6
|
||
ON__MSG EQU 7
|
||
OFF_MSG EQU 8
|
||
DIR2MSG EQU 9
|
||
DIR3MSG EQU 10
|
||
HELPMSG EQU 11
|
||
|
||
MSG0: db 0
|
||
; 0
|
||
db "Volume in drive %1 "
|
||
.volume_string: ;!FIXIT ᤥ« âì ç¥à¥§ PRM
|
||
db "has no label ",0Dh,0Ah ;0
|
||
db "Volume Serial Number is %2",0Dh,0Ah
|
||
db 0Dh,0Ah,"Directory of %3",0Dh,0Ah,0Ah,0
|
||
; 1
|
||
db "Estex DSS version %1. Console version %2.",CR,LF,0 ;R13
|
||
; 2
|
||
db "Current date: %1",0Dh,0Ah,0 ;2
|
||
db "Current time: %1",0Dh,0Ah,0 ;3
|
||
db "Press any key to continue . . .",0Dh,0Ah,0Ah,0 ;4
|
||
db "Invalid parametr",0Dh,0Ah,0 ;5
|
||
db "Echo is %1",0Dh,0Ah,0 ;6
|
||
db "on",0 ;7
|
||
db "off",0 ;8
|
||
db " %1 file(s) %2 bytes",0Dh,0Ah,0Ah,0 ;9
|
||
; 10 FILENAME EXT SIZE DATE TIME
|
||
db "%1 %2 %3 %4 %5",0Dh,0Ah,0 ;10
|
||
; 11
|
||
DB "COMMANDS:",CR,LF,CR,LF
|
||
DB "DIR REN | RENAME PATH HELP ",CR,LF
|
||
DB "CD | CHDIR DEL | ERASE SET VER | VERSION ",CR,LF
|
||
DB "MD | MKDIR TIME ECHO EXIT ",CR,LF
|
||
DB "RD | RMDIR DATE CLS REBOOT ",CR,LF,0
|
||
;R11
|
||
BYTE 0
|
||
DZ "Unknown command"
|
||
;
|
||
.Size EQU $-MSG0
|
||
|
||
/*
|
||
MSG0: DB 0
|
||
DB "Volume in drive %1 has no label",CR,LF ; !FIXIT
|
||
DB "Volume Serial number is %2",CR,LF
|
||
DB "Directory of %3",CR,LF,CR,LF,0
|
||
DB "Estex DSS: Version %1",CR,LF,0 ;R02
|
||
DB "Current date: %1",CR,LF,0
|
||
DB "Current time: %1",CR,LF,0
|
||
DB "Press any key to continue . . .",CR,LF,0
|
||
DB "Invalid parametr",CR,LF,0
|
||
DB "Echo is %1",CR,LF,0
|
||
DB "on",0
|
||
DB "off",0
|
||
DB " %1 file(s) %2 bytes",CR,LF,CR,LF,0
|
||
; FILENAME EXT SIZE DATE TIME
|
||
DB "%1 %2 %3 %4 %5",CR,LF,0
|
||
DB "COMMANDS:",CR,LF,CR,LF
|
||
DB "DIR REN | RENAME PATH HELP ",CR,LF
|
||
DB "CD | CHDIR DEL | ERASE SET VER | VERSION ",CR,LF
|
||
DB "MD | MKDIR TIME ECHO EXIT ",CR,LF
|
||
DB "RD | RMDIR DATE CLS REBOOT ",CR,LF,0
|
||
;R11
|
||
BYTE 0
|
||
DZ "Unknown command"
|
||
;
|
||
.Size EQU $-MSG0
|
||
|
||
*/
|
||
;-----------------------------------------------------------------------
|
||
;!FIXIT äãªæ¨ï ¢ë§ë¢ îé ï ¢ë¢®¤ ®è¨¡ª¨ ¤¥« ¥â ¢ ç «¥ 䨫ìâà ¯® ®¬¥à ¬ ¨ ¥áª®«ìª® ¯¥à¢ëå ®â訢 îâáï
|
||
ERR0: DB #00
|
||
DZ "Bad command or file name"
|
||
DZ "Invalid function" ; 01 - ¥¢¥àë© ®¬¥à äãªæ¨¨
|
||
DZ "Invalid drive number" ; 02 - ¥¯à ¢¨«ìë© ®¬¥à ãáâனáâ¢
|
||
DZ "File not found" ; 03 - ä ©« ¥ ®¡ à㦥
|
||
DZ "Path not found" ; 04 - ¥¢¥àë© ¯ãâì
|
||
DZ "Invalid handle" ; 05 - ¥áãé¥áâ¢ãî騩 ä ©«®¢ë© ¬ ¨¯ã«ïâ®à
|
||
DZ "Too many open files" ; 06 - ¥â ᢮¡®¤®£® ä ©«®¢®£® ¬ ¨¯ã«ïâ®à
|
||
DZ "File already exist" ; 07 - ä ©« áãé¥áâ¢ã¥â
|
||
DZ "File read only" ; 08 - ä ©« ⮫쪮 ¤«ï ç⥨ï
|
||
DZ "Root overflow" ; 09 - ¯¥à¥¯®«¥¨¥ ROOT (ª®à¥¢®£® ª â «®£ )
|
||
DZ "No free space" ; 10 - ¥â ᢮¡®¤®£® ¬¥áâ ¤¨áª¥
|
||
DZ "Directory not empty" ; 11 - ª â «®£ ¥ ¯ãáâ
|
||
DZ "Can't delete current directory" ; 12 - ¥ã¤ ç ï ¯®¯ë⪠㤠«¨âì ⥪ã騩 ª â «®£
|
||
DZ "Invalid media" ; 13 - ¥¨§¢¥áâë© ä®à¬ â
|
||
DZ "Unknown operation" ;R02 ; 14 - ¥¢®§¬®¦ ï ®¯¥à æ¨ï
|
||
DZ "Directory exist" ; 15 - ª â «®£ 㦥 ¥áâì
|
||
DZ "Invalid filename" ; 16 - ¥¢¥à®¥ ¨¬ï
|
||
DZ "Invalid EXE-file" ; 17 - ¥¯à ¢¨«ìë© EXE-ä ©«
|
||
DZ "Not supported EXE-file" ; 18 - ¥ ¯®¤¤¥à¦¨¢ ¥¬ ï ¢¥àá¨ï EXE-ä ©«
|
||
DZ "Access denied" ; 19 - à¥áãàá ¥ ¤®áâ㯥
|
||
DZ "Not ready" ; 20 - ¥â £®â®¢®áâ¨
|
||
DZ "Seek error" ; 21 - ®è¨¡ª ¯®§¨æ¨®¨à®¢ ¨ï
|
||
DZ "Sector not found" ; 22 - ᥪâ®à ¥ ©¤¥
|
||
DZ "CRC error" ; 23 - ®è¨¡ª CRC
|
||
DZ "Write protect" ; 24 - § é¨â § ¯¨á¨
|
||
DZ "Read error" ; 25 - ®è¨¡ª ç⥨ï
|
||
DZ "Write error" ; 26 - ®è¨¡ª § ¯¨á¨
|
||
DZ "Drive failure" ; 27 - á¡®© ¤¨áª
|
||
DZ "Extended error 28"
|
||
DZ "Extended error 29"
|
||
DZ "Not enough memory" ; 30 - ¥¤®áâ â®ç® ¯ ¬ïâ¨
|
||
DZ "Invalid memory block" ; 31 - ¥áãé¥áâ¢ãî騩 ¡«®ª ¯ ¬ïâ¨
|
||
DZ "Extended error 32"
|
||
DZ "Maximum PATH size exceeded" ; 33 - ¯à¥¢ëè¥ ¬ ªá¨¬ «ìë© à §¬¥à ¯¥à¥¬¥®©
|
||
DZ "Extended error 34"
|
||
DZ "Too many files in directory" ; 35 - ᫨誮¬ ¬®£® ä ©«®¢ ¢ ¤¨à¥ªâ®à¨¨
|
||
DZ "Directory nesting too large or number of folders > 1023" ; 36 - ᫨誮¬ ¡®«ìè ï ¢«®¦¥®áâì ª â «®£®¢ ¨«¨ ª®«¨ç¥á⢮ ¯ ¯®ª > 1023
|
||
DZ "Operation aborted by user" ; 37 - ®¯¥à æ¨ï ¯à¥à¢ ¯®«ì§®¢ ⥫¥¬
|
||
DZ "Common error" ; 38 - ®¡é ï ®è¨¡ª
|
||
DZ "Unexpected application termination" ; 39 - unexpected application termination / ¥®¦¨¤ ®¥ § ¢¥à襨¥ ¯à¨«®¦¥¨ï
|
||
DZ "40"
|
||
DZ "41"
|
||
DZ "42"
|
||
DZ "43"
|
||
DZ "44"
|
||
DZ "45"
|
||
DZ "46"
|
||
DZ "Wrong video mode" ; 48 - ¥¯à ¢¨«ìë© ¢¨¤¥®à¥¦¨¬
|
||
DZ "48"
|
||
DZ "49"
|
||
DZ "50"
|
||
;R11
|
||
DB 0 ; ®£à ¨ç¨â¥«ì, ç⮡ ¯à¨ ®è¨¡ª¥ ¡®«ìè¥, 祬 ¥áâì á®®¡é¥¨© ¢ë¤ ¢ «®áì ®¡é¥¥:
|
||
DZ "Unknown error"
|
||
;
|
||
.Size EQU $-ERR0
|
||
;-----------------------------------------------------------------------
|
||
/*
|
||
; ‘®®¡é¥¨ï ®è¨¡®ª „Ž‘
|
||
ERR0: db 0
|
||
db "Bad command or file name",0 ;0
|
||
db "Invalid function",0 ;1
|
||
db "Invalid drive number",0 ;2
|
||
db "File not found",0 ;3
|
||
db "Path not found",0 ;4
|
||
db "Invalid handle",0 ;5
|
||
db "Too many open files",0 ;6
|
||
db "File already exist",0 ;7
|
||
db "File read only",0 ;8
|
||
db "Root overflow",0 ;9
|
||
db "No free space",0 ;10
|
||
db "Directory not empty",0 ;11
|
||
db "Can't delete current directory",0 ;12
|
||
db "Invalid media",0 ;13
|
||
db "Unknown operation",0 ;14
|
||
db "Directory exist",0 ;15
|
||
db "Invalid filename",0 ;16
|
||
db "Invalid EXE-file",0 ;17
|
||
db "Not supported EXE-file",0 ;18
|
||
db "Access denied",0 ;19
|
||
db "Not ready",0 ;20
|
||
db "Seek error",0 ;21
|
||
db "Sector not found",0 ;22
|
||
db "CRC error",0 ;23
|
||
db "Write protect",0 ;24
|
||
db "Read error",0 ;25
|
||
db "Write error",0 ;26
|
||
db "Drive failure",0 ;27
|
||
db "Extended error 28",0 ;28
|
||
db "Extended error 29",0 ;29
|
||
db "Not enough memory",0 ;30
|
||
db "Invalid memory block",0 ;31
|
||
db "Extended error 32",0 ;32
|
||
db "Extended error 33",0 ;33
|
||
db "Extended error 34",0 ;34
|
||
db "Too many files in directory",0 ;35 ᯨ᮪ ä ©«®¢
|
||
db "36",0 ;36 (᫨誮¬ ¡®«ìè ï ¢«®¦. ¯ ¯®ª ¨«¨ >= 1024 ¯ ¯®ª)
|
||
db "User abort",0 ;37 User abort (®¯¥à æ¨ï ¯à¥à¢ ¯®«ì§®¢ ⥫¥¬)
|
||
db "38",0 ;38
|
||
db "39",0 ;39
|
||
db "40",0 ;40
|
||
db "41",0 ;41
|
||
db "42",0 ;42
|
||
db "43",0 ;43
|
||
db "44",0 ;44
|
||
db "45",0 ;45
|
||
db "46",0 ;46
|
||
db "47",0 ;47
|
||
db "48",0 ;48
|
||
db "49",0 ;49
|
||
db "50",0 ;50
|
||
.Size EQU $-ERR0
|
||
*/
|