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 diff --git a/src/bios/BUILD.a80 b/src/bios/BUILD.a80 index 55e11a0..ec5991d 100644 --- a/src/bios/BUILD.a80 +++ b/src/bios/BUILD.a80 @@ -62,9 +62,9 @@ SP_TRDOS_BIN Set_Block 'SP_TRD free space: ', #14000 ; -;PAGE 5 Recovery image part 1 +;PAGE 5 Recovery image part 1 INCBIN IMG_RECOVERY,0,#C000 - DISPLAY "ROM Disk recovery part1, pages 5..7: 2x0000..2xC000" + DISPLAY "ROM Disk recovery part1, pages 5..7: 1x4000..2x0000" ; @@ -73,7 +73,7 @@ INCBIN 'Build/Bin/EXP.BIN' Set_Block 'EXP free space: ', #24000 ; -;PAGE 9-11 (#09, #0A, #0B) Recovery image part 2 +;PAGE 9-11 (#09, #0A, #0B) Recovery image part 2 INCBIN IMG_RECOVERY,#C000,#C000 DISPLAY "ROM Disk recovery part2, pages 9..11: 2x4000..3x0000" diff --git a/src/bios/exp/BIOS_FUNC.asm b/src/bios/exp/BIOS_FUNC.asm index 8848fba..d889bc7 100644 --- a/src/bios/exp/BIOS_FUNC.asm +++ b/src/bios/exp/BIOS_FUNC.asm @@ -4,15 +4,15 @@ DUP numberOFdrives DB high FN_RESERVED_5x ;#50 - Дубль. На эту функцию прыгает из основного обработчика - DB high FN_5x_Parser_1 ;#51 - DB high FN_5x_Parser_2 ;#52 - DB high FN_5x_Parser_3 ;#53 - DB high FN_5x_Parser_4 ;#54 - DB high FN_5x_Parser_5 ;#55 - DB high FN_5x_Parser_6 ;#56 - DB high FN_5x_Parser_7 ;#57 - DB high FN_5x_Parser_8 ;#58 - DB high FN_5x_Parser_9 ;#59 + DB high FN_ABSENT_5x ;#51 + DB high FN_ABSENT_5x ;#52 + DB high FN_ABSENT_5x ;#53 + DB high FN_ABSENT_5x ;#54 + DB high FN_ABSENT_5x ;#55 + DB high FN_ABSENT_5x ;#56 + DB high FN_ABSENT_5x ;#57 + DB high FN_ABSENT_5x ;#58 + DB high FN_ABSENT_5x ;#59 DB high DRV_VERSION ;#5A - Дубль. На эту функцию прыгает из основного обработчика DB high FN_RESERVED_5x ;#5B - Дубль. На эту функцию прыгает из основного обработчика @@ -25,15 +25,15 @@ DUP numberOFdrives DB low FN_RESERVED_5x ;#50 - Дубль. На эту функцию прыгает из основного обработчика - DB low FN_5x_Parser_1 ;#51 - DB low FN_5x_Parser_2 ;#52 - DB low FN_5x_Parser_3 ;#53 - DB low FN_5x_Parser_4 ;#54 - DB low FN_5x_Parser_5 ;#55 - DB low FN_5x_Parser_6 ;#56 - DB low FN_5x_Parser_7 ;#57 - DB low FN_5x_Parser_8 ;#58 - DB low FN_5x_Parser_9 ;#59 + DB low FN_ABSENT_5x ;#51 + DB low FN_ABSENT_5x ;#52 + DB low FN_ABSENT_5x ;#53 + DB low FN_ABSENT_5x ;#54 + DB low FN_ABSENT_5x ;#55 + DB low FN_ABSENT_5x ;#56 + DB low FN_ABSENT_5x ;#57 + DB low FN_ABSENT_5x ;#58 + DB low FN_ABSENT_5x ;#59 DB low DRV_VERSION ;#5A - Дубль. На эту функцию прыгает из основного обработчика DB low FN_RESERVED_5x ;#5B - Дубль. На эту функцию прыгает из основного обработчика diff --git a/src/bios/exp/EXP.asm b/src/bios/exp/EXP.asm index 7f108c5..8e6a4af 100644 --- a/src/bios/exp/EXP.asm +++ b/src/bios/exp/EXP.asm @@ -85,7 +85,7 @@ RST38: CP #AA JR Z,YESINT OUT (C),B - JR NOINT + JP NOINT YESINT: PUSH HL LD HL,(SYS_PAGE.INT_ADRESS) LD A,H @@ -904,7 +904,7 @@ Setup_to_RAM: ; Инициализация портов PORTS_INIT: ; включить TURBO - LD A,CNF_PORT.TURBO.ON + CNF_PORT.CNF_0 + LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON OUT (SYS_PORT.ROM),A ; RESET to ISA @@ -943,13 +943,14 @@ PORTS_INIT: LD A,#62 ;60, 61 OUT (Z84.SIO.Ch_A.Ctrl),A -;--------[Clean keyboard buffer]-------- +;----[Clearing the keyboard buffer]----- .clean_kbd_buf: IN A,(Z84.SIO.Ch_A.Ctrl) BIT 0,A - jr z,.mouse + JR Z,1F IN A,(Z84.SIO.Ch_A.Data) - jr .clean_kbd_buf + JR .clean_kbd_buf +1: ;exit from .clean_kbd_buf ;--------------------------------------- ; Инициализация мыши diff --git a/src/bios/exp/EXTENDED/HDD_DRIVER_6.asm b/src/bios/exp/EXTENDED/HDD_DRIVER_6.asm index 51db532..fe4cb94 100644 --- a/src/bios/exp/EXTENDED/HDD_DRIVER_6.asm +++ b/src/bios/exp/EXTENDED/HDD_DRIVER_6.asm @@ -300,15 +300,13 @@ RDS002: EXX CALL WAITPRT EXX RET C - ;NOP ;R01 REMOVED "DI" ; !FIXIT + ;NOP ;R01 REMOVED "DI" IN A,(SLOT3) EX AF,AF' LD A,XH OUT (SLOT3),A LD BC,IDE.Read.Data - ; LD D,#20 -;!TEST v RDS003: DUP 16 INI EDUP @@ -318,13 +316,8 @@ RDS004: DUP 16 EDUP JP NZ,RDS004 - ; DEC D - ; JR NZ,RDS003 -;!TEST ^ - EX AF,AF' OUT (SLOT3),A - ;EI ; LD A,H OR L @@ -485,12 +478,14 @@ WRS002: EXX CALL WAITPRT EXX RET C - DI + + //DI IN A,(SLOT3) EX AF,AF' LD A,XH OUT (SLOT3),A LD BC,IDE.Write.Data + LD D,#20 WRS003: DUP 16 @@ -498,9 +493,10 @@ WRS003: EDUP DEC D JR NZ,WRS003 + EX AF,AF' OUT (SLOT3),A - EI + //EI ; LD A,H OR L @@ -526,7 +522,7 @@ WRS003: LD BC,IDE.Read.Status IN A,(C) BIT IDE.ControlBit.DataRequest,A - JR NZ,WRS002 + JP NZ,WRS002 XOR A RET @@ -568,7 +564,7 @@ VRS000: CALL SELECTH CALL PRESET POP HL LD BC,IDE.Write.Command - LD A,#40 ; !HARDCODE VERIFY WITH RETRY + LD A,#40 ; !HARDCODE VERIFY WITH RETRY OUT (C),A VRS002: LD BC,IDE.Read.Status IN A,(C) diff --git a/src/bios/exp/FUNC_CMOS.ASM b/src/bios/exp/FUNC_CMOS.ASM index af1100e..23725f4 100644 --- a/src/bios/exp/FUNC_CMOS.ASM +++ b/src/bios/exp/FUNC_CMOS.ASM @@ -1,7 +1,14 @@ -;*********************************************** -; ????? чё за херня про бейсик? тут не то ниже -; CMOS - 35h,36h - установки бейсика -;*********************************************** +; + MACRO _mCMOS_MAX_TEST + ASSERT CMOS.MAX_ADDRESS = #7F, "WARNING!!! Logick broken with BIT 7 check" + BIT 7,D + SCF + RET NZ + ENDM +; + + +;!FIXIT по доке на функцию должен перед выходом CF ставиться CMOS_EMU_WR: PUSH DE @@ -16,72 +23,81 @@ CMOS_EMU_WR: POP DE RET +; ; запись в CMOS CMOS_WR: + ;!TEST + _mCMOS_MAX_TEST + ; CALL CMOS_TEST JR C,CMOS_EMU_WR -XWR_CMOS: - LD BC,CMOS.Port.Address.Write +.WR: LD BC,CMOS.Port.Address.Write OUT (C),D LD BC,CMOS.Port.Data.Write OUT (C),A RET +; +;!FIXIT по доке на функцию должен перед выходом CF ставиться CMOS_EMU_RD: - PUSH DE + PUSH DE - LD C,SLOT3 - IN B,(C) - LD E,SYS_PAGE - OUT (C),E - LD E,D - LD D, high SYS_PAGE.CMOS_EMULATOR - LD A,(DE) - OUT (C),B + LD C,SLOT3 + IN B,(C) + LD E,SYS_PAGE + OUT (C),E + LD E,D + LD D, high SYS_PAGE.CMOS_EMULATOR + LD A,(DE) + OUT (C),B - POP DE + POP DE RET +; ; чтение из CMOS CMOS_RD: - CALL CMOS_TEST - JR C,CMOS_EMU_RD -XRD_CMOS: - LD BC,CMOS.Port.Address.Write - OUT (C),D - LD BC,CMOS.Port.Data.Read - IN A,(C) + ;!TEST + _mCMOS_MAX_TEST + ; + CALL CMOS_TEST + JR C,CMOS_EMU_RD +.RD: LD BC,CMOS.Port.Address.Write + OUT (C),D + LD BC,CMOS.Port.Data.Read + IN A,(C) RET +; +;Проверка наличия CMOS CMOS_TEST: + PUSH AF PUSH DE PUSH BC - PUSH AF - LD D,#3F ; !HARDCODE CHECKSUM SETTING - CALL XRD_CMOS + LD D,CMOS.TEST_CELL + CALL CMOS_RD.RD LD E,A CPL - CALL XWR_CMOS - CALL XRD_CMOS + CALL CMOS_WR.WR + CALL CMOS_RD.RD CPL CP E - JR NZ,CMOS_ERR + JR NZ,.CMOS_ERR LD A,E - CALL XWR_CMOS + CALL CMOS_WR.WR - POP AF POP BC POP DE + POP AF AND A RET - -CMOS_ERR: +.CMOS_ERR: LD A,E - CALL XWR_CMOS - POP AF + CALL CMOS_WR.WR POP BC POP DE + POP AF SCF RET \ No newline at end of file diff --git a/src/bios/exp/FUNC_SERVICE.asm b/src/bios/exp/FUNC_SERVICE.asm index 4ed67f3..5a4ff9a 100644 --- a/src/bios/exp/FUNC_SERVICE.asm +++ b/src/bios/exp/FUNC_SERVICE.asm @@ -229,7 +229,7 @@ REINIT: DEC B LD A,RESET_PAGE OUT (SLOT3),A - LD A,CNF_PORT.TURBO.OFF + ROM.BIOS + LD A,CNF_PORT.TURBO.OFF OUT (SYS_PORT.ROM),A .loop2: LD (#C000),A ; Soft RESET !!! JR .loop2 diff --git a/src/bios/exp/FUNC_SYS.ASM b/src/bios/exp/FUNC_SYS.ASM index a04cdb2..cbd44e0 100644 --- a/src/bios/exp/FUNC_SYS.ASM +++ b/src/bios/exp/FUNC_SYS.ASM @@ -97,7 +97,7 @@ EMM.CheckColdInit: LD A,SYS_PAGE OUT (SLOT2),A - LD HL,#8000 + LD HL,SYS_PAGE.ID_FLAG - #4000 LD DE,ID_SPRINTER_length ld a,(de) inc de @@ -159,10 +159,10 @@ INIT_SYS_ALL: LD (HL),0 LDIR - LD DE,ZG_ADDRESS ; адрес знакогенератора + LD DE,ZG_ADDRESS ; адрес знакогенератора LD (SYS_PAGE.WIN_ZG-#4000),DE ; -;-----------[new code start]------------ ; !!!!! посмотреть-причесать +;-----------[new code start]------------; !!!!! посмотреть-причесать INIT_VSyncAndWaits: LD D,CMOS.Cell.ScreenSET CALL CMOS_RD @@ -202,7 +202,7 @@ INIT_CONFIG_ALL: LD (SYS_PAGE.CONFIG_ALL-#4000),HL ;------------[new code end]------------- ; - LD DE,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON + ROM.BIOS + LD DE,CNF_PORT.CNF_0 + ROM.BIOS LD (SYS_PAGE.CONFIG_DE-#4000),DE LD HL,SYS_PAGE.TASK_DATA-#4000 ; убить все задачи diff --git a/src/bios/rom/SETUP/MAIN.asm b/src/bios/rom/SETUP/MAIN.asm index 5411559..7cf4bcd 100644 --- a/src/bios/rom/SETUP/MAIN.asm +++ b/src/bios/rom/SETUP/MAIN.asm @@ -1767,7 +1767,7 @@ POSTMSC: SETLAND: LD A,#0E ; !HARDCODE CMOS ячейка options CALL READCMS - AND #04 ; !HARDCODE CMOS значение языка + AND #04 ; !HARDCODE CMOS значение языка JR NZ,.RUS LD HL,MSG_ENG diff --git a/src/bios/rom/SETUP/SETTINGS.asm b/src/bios/rom/SETUP/SETTINGS.asm index a687f54..f5307de 100644 --- a/src/bios/rom/SETUP/SETTINGS.asm +++ b/src/bios/rom/SETUP/SETTINGS.asm @@ -617,24 +617,33 @@ RRLPX: RLCA RET +;!TEST READCMS: LD D,high CMOSARE LD E,A + CP CMOS.USED_MAX_ADDRESS+1 + JR NC,.error LD A,(DE) + RET +.error: SCF RET +;!TEST WRITCMS: LD D,high CMOSARE LD E,A + CP CMOS.USED_MAX_ADDRESS+1 + JR NC,.error LD A,B LD (DE),A + RET +.error: SCF RET CHEKSUM: - LD BC,DEFVAL.Length*256+#000E - LD H,#DE -CHSUM1: - LD A,C + LD BC,DEFVAL.Size*256 + #0E ;!HARDCODE + LD H,#DE ;!HARDCODE +.loop: LD A,C CALL READCMS LD L,A LD A,H @@ -643,12 +652,12 @@ CHSUM1: SUB L LD H,A INC C - DJNZ CHSUM1 + DJNZ .loop RET TCHEKSM: CALL CHEKSUM - LD A,#3F + LD A,#3F ;!HARDCODE CALL READCMS CP H RET @@ -668,17 +677,13 @@ TCHEKSM: READING: LD D,#0E ; !HARDCODE CMOS -.loop: - PUSH DE - - ;CALL RDCMOS +.loop: PUSH DE CALL CMOS_RD - POP DE LD H,high CMOSARE LD L,D LD (HL),A - LD A,#40 ; !HARDCODE CMOS + LD A,CMOS.USED_MAX_ADDRESS+1 INC D CP D JR NZ,.loop @@ -695,12 +700,10 @@ WRITING: LD L,D LD A,(HL) PUSH DE - - ;CALL WRCMOS CALL CMOS_WR POP DE - LD A,#40 ; !HARDCODE CMOS + LD A,CMOS.USED_MAX_ADDRESS+1 INC D CP D JR NZ,.loop @@ -714,7 +717,7 @@ SETDEFX: SETDEF: ;!TODO может бахнуть LDIRом? посмотреть LD HL,DEFVAL - LD C,DEFVAL.Length + LD C,DEFVAL.Size LD A,#0E ; !HARDCODE CMOS cмещение в таблице до ячеек памяти .loop: LD B,(HL) @@ -1008,31 +1011,32 @@ STYLES: DB COLORS.PAPER.LGRAY + COLORS.INC.RED DB COLORS.PAPER.BLACK + COLORS.INC.RED -DEFVAL: DB SAVERAM+EXTBIOS+SDELAY1 ;X0E - OPTIONS - DB TDL250+TRATE30 ;X0F - KEYBOARD - DB SDIDE1+ASDFDD2 ;X10 - SYSTEM DISKS - DB FD1720+FD2720+HD1AUTO+HD2AUTO ;X11 - FDD & Primary HDD's - DB 0 ;X12 - CYLINDERS LOW MASTER - DB 0 ;X13 - CYLINDERS HIGH MASTER - DB 0 ;X14 - HEADS MASTER - DB 0 ;X15 - SECTORS MASTER - DB 0 ;X16 - CYLINDERS LOW SLAVE - DB 0 ;X17 - CYLINDERS HIGH SLAVE - DB 0 ;X18 - HEADS SLAVE - DB 0 ;X19 - SECTORS SLAVE - DB 0 ;X1A - Int conf, Screen sync, COLOR STYLE - DB TURBON+SPRIN ;X1B - HARDARE CONF +DEFVAL: DB SAVERAM+EXTBIOS+SDELAY1 ;X0E - OPTIONS + DB TDL250+TRATE30 ;X0F - KEYBOARD + DB SDIDE1+ASDFDD2 ;X10 - SYSTEM DISKS + DB FD1720+FD2720+HD1AUTO+HD2AUTO ;X11 - FDD & Primary HDD's + DB 0 ;X12 - CYLINDERS LOW MASTER + DB 0 ;X13 - CYLINDERS HIGH MASTER + DB 0 ;X14 - HEADS MASTER + DB 0 ;X15 - SECTORS MASTER + DB 0 ;X16 - CYLINDERS LOW SLAVE + DB 0 ;X17 - CYLINDERS HIGH SLAVE + DB 0 ;X18 - HEADS SLAVE + DB 0 ;X19 - SECTORS SLAVE + DB 0 ;X1A - Int conf, Screen sync, COLOR STYLE + DB TURBON+SPRIN ;X1B - HARDARE CONF DB BAS128 ;X1C - RESET MODE DB REBOOTM ;X1D - REBOOT - DB 0 ;X1E - TRDOS - DB #77 ;X1F - SCREEN POSITION - DB HD1AUTO+HD2AUTO ;X20 - Secondary HDD's -.Length EQU $-DEFVAL + DB 0 ;X1E - TRDOS + DB #77 ;X1F - SCREEN POSITION + DB HD1AUTO+HD2AUTO ;X20 - Secondary HDD's +.Size EQU $-DEFVAL +;!FIXIT расписать тут ячейки кмоса и это смещение меткой привязать вместо #0E в SETDEF _mInfoALIGN 256,0 ; выравнивание на адрес #XX00 CMOSARE: - DS 14 ;!FIXIT расписать тут ячейки кмоса и это смещение меткой привязать вместо #0E в SETDEF + DS 14 DB SAVERAM+EXTBIOS ;X0E - OPTIONS DB TDL250+TRATE30 ;X0F - KEYBOARD @@ -1053,37 +1057,37 @@ CMOSARE: DB %0000'0000 ;X1E - TRDOS DB %0111'0111 ;X1F - SCREEN POSITION DB HD1AUTO+HD2AUTO ;X20 - Secondary HDD's - DB %0000'0000 ;X21 - DB %0000'0000 ;X22 - DB %0000'0000 ;X23 - DB %0000'0000 ;X24 - DB %0000'0000 ;X25 - DB %0000'0000 ;X26 - DB %0000'0000 ;X27 - DB %0000'0000 ;X28 - DB %0000'0000 ;X29 - DB %0000'0000 ;X2A - DB %0000'0000 ;X2B - DB %0000'0000 ;X2C - DB %0000'0000 ;X2D - DB %0000'0000 ;X2E - DB %0000'0000 ;X2F - DB %0000'0000 ;X30 - DB %0000'0000 ;X31 - DB #20 ;X32 - CENTURY - DB %0000'0000 ;X33 - DB %0000'0000 ;X34 - DB %0000'0000 ;X35 - DB %0000'0000 ;X36 - DB %0000'0000 ;X37 - DB %0000'0000 ;X38 - DB %0000'0000 ;X39 - DB %0000'0000 ;X3A - DB %0000'0000 ;X3B - DB %0000'0000 ;X3C - DB %0000'0000 ;X3D - DB %0000'0000 ;X3E - DB %0000'0000 ;X3F - CHECKSUM + DB %0000'0000 ;X21 + DB %0000'0000 ;X22 + DB %0000'0000 ;X23 + DB %0000'0000 ;X24 + DB %0000'0000 ;X25 + DB %0000'0000 ;X26 + DB %0000'0000 ;X27 + DB %0000'0000 ;X28 + DB %0000'0000 ;X29 + DB %0000'0000 ;X2A + DB %0000'0000 ;X2B + DB %0000'0000 ;X2C + DB %0000'0000 ;X2D + DB %0000'0000 ;X2E + DB %0000'0000 ;X2F + DB %0000'0000 ;X30 + DB %0000'0000 ;X31 + DB #20 ;X32 - CENTURY + DB %0000'0000 ;X33 + DB %0000'0000 ;X34 + DB %0000'0000 ;X35 + DB %0000'0000 ;X36 + DB %0000'0000 ;X37 + DB %0000'0000 ;X38 + DB %0000'0000 ;X39 + DB %0000'0000 ;X3A + DB %0000'0000 ;X3B + DB %0000'0000 ;X3C + DB %0000'0000 ;X3D + DB %0000'0000 ;X3E + DB %0000'0000 ;X3F - CHECKSUM BLOCK #100 - low $ ; добивка CMOSARE до размера в 256 байтов ;DONT MOVE !!! ADDRESS diff --git a/src/bios/shared/CompMacro.asm b/src/bios/shared/CompMacro.asm index de1d242..e5714cf 100644 --- a/src/bios/shared/CompMacro.asm +++ b/src/bios/shared/CompMacro.asm @@ -89,10 +89,10 @@ LD B,0 LD C,(HL) INC C - LD DE,TEMP+5 + LD DE,TEMP+ROM_DISK.Pages.Size LDIR ; кидаем дальше в буфер номера страниц ROM disk - LD IY,TEMP+5 ; ROM_DISK.Pages.Number + LD IY,TEMP+ROM_DISK.Pages.Size ; ROM_DISK.Pages.Number LD IX,TEMP LD B,(IY+0) diff --git a/src/bios/shared/RECOVERY.IMG b/src/bios/shared/RECOVERY.IMG index 035ebd4..81f2064 100755 Binary files a/src/bios/shared/RECOVERY.IMG and b/src/bios/shared/RECOVERY.IMG differ