diff --git a/BOOT/DSSBOOT.ASM b/BOOT/DSSBOOT.ASM index eeef089..074882d 100644 --- a/BOOT/DSSBOOT.ASM +++ b/BOOT/DSSBOOT.ASM @@ -228,8 +228,7 @@ CONTINU LD C,Dss.BootDSK RST #10 - LD B,"A" - ADD A,B + ADD A,"A" LD HL,ROOT LD (HL),A diff --git a/Console/CONSOLE.ASM b/Console/CONSOLE.ASM index 374fc9e..efbad1a 100644 --- a/Console/CONSOLE.ASM +++ b/Console/CONSOLE.ASM @@ -362,8 +362,7 @@ INPUT XOR A CALL RES_CUR RET -COMP - CALL EVALCMD ;R05 +COMP: CALL EVALCMD ;R05 LD HL,CMDLINE DEC HL LD C,(HL) @@ -394,9 +393,9 @@ COMP005 EX AF,AF' COMP004 PUSH BC PUSH DE COMP000 LD A,(DE) - CP #61 + CP 'a' JP C,COMP001 - CP #7B + CP '{' JP NC,COMP001 SUB #20 COMP001 CP (HL) @@ -865,7 +864,6 @@ MOVLBAK LD A,(HL) RET ; HL - STRING WITH %VAR% - EVALSTR ;R04 LD DE,DTA VARLOOP diff --git a/DSS/DOS-MAIN.ASM b/DSS/DOS-MAIN.ASM index 55badef..f3c1b1f 100644 --- a/DSS/DOS-MAIN.ASM +++ b/DSS/DOS-MAIN.ASM @@ -5,6 +5,7 @@ ;--------------------------------------------------------------- ;Rev Date Name Description ;--------------------------------------------------------------- +;[ ] увеличить длину PATH и строки BAT ;[ ] путь текущего каталога в DIR выводится с глюком если он длинее 256 байтов ;[ ] путь в приглашении консоли выводится с глюком если путь длинее 256 байтов ;[ ] ;!FIXIT какой-то баг при котором если нет диска и на него полезть, то всё ломается @@ -263,6 +264,8 @@ PORTAL.outMAIN: ; ; Первый старт системы, после инициализации адрес в таблице меняется на VERSION F_START: DI + LD (.saveDRV),A + CALL DEPLOY ;R07 ;эта процедура затрётся после исполнения RET C ;R10 CALL KINIT @@ -274,10 +277,16 @@ F_START: RST #30 ;CALL INITDVC ;R05 ;R05 - LD C,#00 - RST #18 - LD (LDRIVE),A + LD C,#00 + RST #18 + LD (LDRIVE),A ;R05 + +.saveDRV+1: LD A,0 + LD B,1 + LD C,Dss.BootDSK + RST #10 + EI ;Set new address fn. VERSION LD HL,ADRST10 diff --git a/DSS/DOS5.ASM b/DSS/DOS5.ASM index aabd6cd..6f7b39a 100644 --- a/DSS/DOS5.ASM +++ b/DSS/DOS5.ASM @@ -7,7 +7,7 @@ ;Rev Date Name Description ;------------------------------------------------------------- ;R11 17-04-2023 BAO Временный костыль для недопускания переполнения буфера пути каталога -;R10 15-04-2023 BAO FIXED BUG WITH CHANGE DISK WITHOUT CHANGE PATH ;!FIXIT пока в виде заплатки полунеработающей +;R10 15-04-2023 BAO ;????? FIXED BUG WITH CHANGE DISK WITHOUT CHANGE PATH ;!FIXIT пока в виде заплатки полунеработающей ;R09 13-04-2023 BAO FIX BUG WITH PARSING DIRECTORY BUFFER ;R08 15-04-2003 DNS SAVE AND RESTORE CURёPATH MACROS ;R07 06-02-2003 DNS FIX BUG IN MASK ROUTINE, IT ALLOW NAMES WHICH BEGAN @@ -90,7 +90,6 @@ CREATE ; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00 ; OUTPUT: A - FM - CREAT_N _mSavePath AND #E7 ;R04 %76A00SHR @@ -624,18 +623,18 @@ TMPNAME: DB ' ',#00 ; 12 ; CHNDISK: - ;R10 - ; CALL OPENDSK - ; RET C - ; LD HL,DIRSPEC+1 - ; LD (HL),0 - ; PUSH AF - ; CALL OPENDIR - ; POP BC - ; RET C - ; LD A,B - ; RET - ;R10 + ;????? R10 + CALL OPENDSK + RET C + LD HL,DIRSPEC+1 + LD (HL),0 + PUSH AF + CALL OPENDIR + POP BC + RET C + LD A,B + RET + ;????? R10 OPENDSK: PUSH AF LD C,1 @@ -1195,7 +1194,7 @@ HGUPPER CP ' DEC A RET -SYSTIME LD C,#F5 +SYSTIME LD C,BIOS.CMOS_TEST RST ToBIOS JP C,NOCMOS LD D,7 ;DAY @@ -1218,7 +1217,7 @@ SYSTIME LD C,#F5 CALL RCMOS PUSH AF LD D,6 ;WEEK DAY - LD C,#F6 + LD C,BIOS.CMOS_RD RST ToBIOS POP DE LD E,A @@ -1227,7 +1226,7 @@ SYSTIME LD C,#F5 CALL RCMOS ;READ AND CONVERT TO DECIMAL PUSH AF LD D,#32 ;CENTURY - LD C,#F6 + LD C,BIOS.CMOS_RD RST ToBIOS LD XH,A @@ -1245,7 +1244,7 @@ XXIAGE LD A,#20 JR Z,GOODAGE BADAGE PUSH AF LD D,#32 ;CENTURY - LD C,#F7 + LD C,BIOS.CMOS_WR RST ToBIOS POP AF LD XH,A @@ -1276,7 +1275,7 @@ GOODAGE POP AF AND A RET -RCMOS LD C,#F6 +RCMOS LD C,BIOS.CMOS_RD RST ToBIOS ; INPUT : A - BCD ; OUTPUT: A - HEX @@ -1344,7 +1343,7 @@ SETTIME PUSH IX POP BC LD A,C LD D,6 ;WEEK DAY - LD C,#F7 + LD C,BIOS.CMOS_WR RST ToBIOS POP HL @@ -1367,7 +1366,7 @@ YR INC A WCMOS CALL HEX2BCD - LD C,#F7 + LD C,BIOS.CMOS_WR RST ToBIOS RET @@ -1430,7 +1429,6 @@ PUT_D_T PUSH AF ;OUTPUT: DE - hhhhhmmmmmmsssss h - hour, m - min, s - sec/2 ; BC - yyyyyyymmmmddddd y - year, m - month, d - day ; (1980-2108) - MK_TIME LD A,L RLCA RLCA @@ -1468,7 +1466,6 @@ MK_TIME LD A,L ; H - HOUR; L - MINUTE ; B - SECOND (0...59) ; IX- YEAR (0...65535) - RMKTIME EX DE,HL LD A,C AND #1F diff --git a/DSS/DOS_X.ASM b/DSS/DOS_X.ASM index 6d2fe5d..431037c 100644 --- a/DSS/DOS_X.ASM +++ b/DSS/DOS_X.ASM @@ -61,7 +61,6 @@ BOOTDSK: RET ;GET BOOT DISK - GETBOOT LD A,(BOOTDRV) AND A RET diff --git a/DSS/DRV-MAIN.ASM b/DSS/DRV-MAIN.ASM index a74a1ed..93ad3c2 100644 --- a/DSS/DRV-MAIN.ASM +++ b/DSS/DRV-MAIN.ASM @@ -213,7 +213,7 @@ PORTAL.outDRV: ; ; ; -DISPATCH +DISPATCH: CALL INITDVC LD HL,INTDISK LD (ADCALL),HL diff --git a/DSS/ENVIRON.ASM b/DSS/ENVIRON.ASM index c9e8a52..089f283 100644 --- a/DSS/ENVIRON.ASM +++ b/DSS/ENVIRON.ASM @@ -27,9 +27,15 @@ ENVIRON: SCF RET -INITENV LD A,ENVPAGE +INITENV: + LD A,ENVPAGE CALL BANK PUSH AF + ;!TEST + LD A,(BOOTDRV) + ADD A,'A' + LD (DEFAULT_ENV.boot_disk),A + ; LD DE,ENVIRONMENT XOR A LD (DE),A @@ -79,8 +85,7 @@ READENV: XOR A RET -GETENV - PUSH DE +GETENV: PUSH DE CALL ENV_EX LD A,ENVPAGE @@ -92,14 +97,14 @@ GETENV LD A,0 LD (DE),A JR NC,GE_1 -GE_0 LD A,(HL) +GE_0: LD A,(HL) LDI OR A JR NZ,GE_0 DEC DE ;R01 LD A,#FF -GE_1 EX AF,AF' +GE_1: EX AF,AF' OUT (SLOT3),A EX AF,AF' AND A @@ -119,7 +124,6 @@ SETENV: CALL ENV_EX OR C JR Z,PENV LDIR -; DEC DE PENV LD A,(ENVVALUE) OR A JR Z,CLR_ENV @@ -174,7 +178,7 @@ END_OF_ENV POP DE RET -ENV_EX LD B,32 +ENV_EX LD B,ENVIRONMENT_STRING_LENGTH LD DE,ENVNAME ENV_E0 XOR A LD (DE),A @@ -189,6 +193,11 @@ ENV_E1 LD A,(HL) LD (DE),A INC DE DJNZ ENV_E1 + ;!TEST from Vasil + ld a,b + ld (de),a ; обрезать слишком длинную строку + inc de + ; SCF RET @@ -219,23 +228,20 @@ ENV_E2 LD A,(HL) ENVNAME EQU EXEBUFF ;DS 32 ENVVALUE EQU BUFFER //#3800 ; BUFFER ;DS 128 -ENVSIZE DW 1 ;E_END-ENVIRONMENT ;160 +ENVSIZE DW DEF_ENV_SIZE ;E_END-ENVIRONMENT ;160 ENVIRONMENT EQU ENVADDR -DEFAULT_ENV -; DB "SYSTEM=C:\\system.exe",0 -; DB "PATH=\\SYSTEM\\;\\COMMAND\\;",0 - DB 0 ; "",0 +DEFAULT_ENV: DB 'BOOTDSK=' +.boot_disk: DB 'X:',0 DEF_ENV_SIZE EQU $-DEFAULT_ENV +; DB 'SYSTEM=C:\system.exe',0 +; DB 'PATH=\SYSTEM\;\COMMAND\;',0 ; DB 0 -; DB "SYSTEM=C:\system.exe",0 -; DB "PATH=C:\;\FN\;",0 -; DB "OS=ESTEX",0 -; DB "VAR1=000",0 -; DB "OSNAME=ESTEX 2002",0 -; DB 0 -;E_END - -;[END] +; DB 'SYSTEM=C:\system.exe',0 +; DB 'PATH=C:\;\FN\;',0 +; DB 'OS=ESTEX',0 +; DB 'VAR1=000',0 +; DB 'OSNAME=ESTEX 2002',0 +; DB 0 \ No newline at end of file diff --git a/DSS/EXECUTE.ASM b/DSS/EXECUTE.ASM index 996aa35..84e33c4 100644 --- a/DSS/EXECUTE.ASM +++ b/DSS/EXECUTE.ASM @@ -745,7 +745,6 @@ EXEC0_SHORT: ;FILE NO FOUND, SEARCHING IN PATH ; GET PATH AND ETC. - LD HL,ENVPATH LD DE,ENVTEMP LD B,1 diff --git a/DSS/FAT_X.ASM b/DSS/FAT_X.ASM index 2aa6516..d9aff19 100644 --- a/DSS/FAT_X.ASM +++ b/DSS/FAT_X.ASM @@ -315,7 +315,6 @@ W_T_F01 SLA E ;R01 ; A - NEW FAT BLOCK - RE_FAT PUSH HL PUSH AF LD A,(FATCASH+1) diff --git a/DSS/IDE_DRV0.ASM b/DSS/IDE_DRV0.ASM index e9c791f..b3986db 100644 --- a/DSS/IDE_DRV0.ASM +++ b/DSS/IDE_DRV0.ASM @@ -160,8 +160,8 @@ LD_DSK EQU 16 -IDE0 EQU #0C1C0 -IDE1 EQU #0C1C8 +; IDE0 EQU #0C1C0 +; IDE1 EQU #0C1C8 PART EQU #C000 HDDRIVE INC C @@ -316,7 +316,6 @@ LOGDRV DS 12*LD_DSK ;+05 LONG SIZE IN SECTORS ;+09 FREE ;+15 - SELHDD PUSH DE PUSH BC PUSH HL @@ -430,10 +429,15 @@ HGETPRM EX DE,HL LD A,(IY+0) LD C,A - LD IY,IDE0 ;!FIXIT IDE CHANELS тут всего 2 канала работают + LD IY,SYS_PAGE.IDE_0 AND #0F JR Z,GELH1 - LD IY,IDE1 + LD IY,SYS_PAGE.IDE_1 + CP 2 + JR C,GELH1 + LD IY,SYS_PAGE.IDE_2 + JR Z,GELH1 + LD IY,SYS_PAGE.IDE_3 GELH1 IN A,(SLOT3) PUSH AF LD A,SYS_PAGE diff --git a/DSS/defines.inc b/DSS/defines.inc index 7978867..455c37f 100644 --- a/DSS/defines.inc +++ b/DSS/defines.inc @@ -23,14 +23,15 @@ ENVPAGE EQU 2 DRVPAGE EQU 3 ; -DIRSPEC.DEPTH EQU 256 ; '\' + 1..255 +DIRSPEC.DEPTH EQU 256 ; '\' + 1..255 +ENVIRONMENT_STRING_LENGTH EQU 255 -TXTADDR EQU #C000 -ENVADDR EQU #E400 -DIR EQU #C000 -FAT EQU #C000 +TXTADDR EQU #C000 +ENVADDR EQU #E400 +DIR EQU #C000 +FAT EQU #C000 -FMCOUNT EQU 10 ; Количество файловых манипуляторов -HANDBUF.SIZE EQU 32 +FMCOUNT EQU 10 ; Количество файловых манипуляторов +HANDBUF.SIZE EQU 32 ;----------------------------------------------------; ; diff --git a/Shared_Includes b/Shared_Includes index 520455d..6e9cb7f 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 520455dbdc4c10f1850fd697aa5be4703d6cfd27 +Subproject commit 6e9cb7fd969b98df5cc98ec109bab2be59d46208