Estex-DSS/SHELL/ERROR.ASM
Anatoliy Belyanskiy a99ed14bda bug fix
2023-08-12 05:21:13 +10:00

310 lines
9.1 KiB
NASM
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;-------------------------------------------------
; ‚뢮¤ á®®¡é¥­¨ï ®è¨¡ª¨ ¯® ¨­¤¥ªáã
; ¢å®¤: 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
*/