чёт поковырял

This commit is contained in:
Tolik 2024-08-07 23:08:26 +10:00
parent 2d0ee5e639
commit 8cc1bd11af
13 changed files with 310 additions and 326 deletions

@ -1 +1 @@
Subproject commit 93ab93917db326a86a0ffecc02a62f6f6ef7a938 Subproject commit 1535d92eeecb8aa730ae7fe6eb82e9d32a4acb4d

View File

@ -137,7 +137,9 @@
OUTEND OUTEND
;--------------------------------------- ;---------------------------------------
; ;
EXPORT ROM_NUMBER ; !FIXIT part1, part2 ¤«ï Flasher ;EXPORT ROM_NUMBER ; !FIXIT part1, part2 ¤«ï Flasher
EXPORT BOARD_INFO.number
EXPORT BOARD_INFO.type
EXPORT BoardID.start EXPORT BoardID.start
EXPORT BoardID.end EXPORT BoardID.end
EXPORT FN_CRIPT.cnf EXPORT FN_CRIPT.cnf

View File

@ -43,8 +43,6 @@
Set_Block 'ROM free space: ', #4000 Set_Block 'ROM free space: ', #4000
; ;
;PAGE 1 ;PAGE 1
; INCBIN 'Build/Bin/LOGO_PAL.BIN'
; INCBIN 'Build/Bin/LOGO_DAT.BIN'
INCBIN 'Build/Bin/LOGO.BIN' INCBIN 'Build/Bin/LOGO.BIN'
Set_Block 'LOGO free space: ', #8000 Set_Block 'LOGO free space: ', #8000
; ;
@ -76,7 +74,6 @@
;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 INCBIN IMG_RECOVERY,#C000,#C000
DISPLAY "ROM Disk recovery part2, pages 9..11: 2x4000..3x0000" DISPLAY "ROM Disk recovery part2, pages 9..11: 2x4000..3x0000"
Set_Block 'Empty space: ', #30000 Set_Block 'Empty space: ', #30000
; ;
;PAGE 12-15 (#0C, #0D, #0E, #0F) ;PAGE 12-15 (#0C, #0D, #0E, #0F)

View File

@ -12,14 +12,13 @@
; CCED/AAAAAAAAA ; CCED/AAAAAAAAA
; NN1OW116517210 ; NN1OW116517210
; FF2SR54 3 ; FF2SR54 3
;DCP_DATA: 108 ; 108
; ....0..11.1110 ;DCP_DATA: ....0..11.1110
; WORD %00000001101110 ; -  ¤à¥á ; WORD %00000001101110 ; - b13..12 cnf, b11 pent512, b10 dos, b9 r/w, b8..0  ¤à¥á
; WORD %00001001101111 ; - ¬ áª  - 0 ¨§¬¥­ï¥¬ë¥ ¡¨âë, 1 ­¥¨§¬¥­ï¥¬ë¥ ; WORD %00001001101111 ; - ¬ áª  - 0 ¨§¬¥­ï¥¬ë¥ ¡¨âë, 1 ­¥¨§¬¥­ï¥¬ë¥
; BYTE ACEX.Border_FE ; - ¯®àâ ; BYTE ACEX.Border_FE ; - ¯®àâ
; DCP END MARKER
; DW 0,0,0
;-----------------------------------------------------------------------; ;-----------------------------------------------------------------------;
; ;
; ;
@ -135,30 +134,6 @@
DB ACEX.CMOS_DATA.WRITE DB ACEX.CMOS_DATA.WRITE
; ;
;---------HDD[v] ;---------HDD[v]
/*
Write:
.Data EQU #0150 ; cnf 20 ; HDW_DAT W170 ; #1F0 Data register
.Features EQU #0151 ; cnf 21 ; HDW_ERR W171 ; #1F1 Features register
.Counter EQU #0152 ; cnf 22 ; HDW_CNT P_S_CNT W172 ; #1F2 Counter register
.Sector EQU #0153 ; cnf 23 ; HDW_SEC P_S_NUM W173 ; #1F3 Sector register
.CylinderLow EQU #0154 ; cnf 24 ; HDW_CLL P_C_LOW W174 ; #1F4 Cylinder Low register
.CylinderHigh EQU #0155 ; cnf 25 ; HDW_CLH P_C_HIG W175 ; #1F5 Cylinder High register
.DeviceHead EQU #4152 ; cnf 26 ; HDW_DRV P_HD_CS ; #1F6 Device/Head register
.Command EQU #4153 ; cnf 27 ; HDW_COM P_CMD ; #1F7 Command register
.DeviceControl EQU #4154 ; cnf 28 ; ; #3F6 Device Control register
Read:
.Data EQU #0050 ; cnf 20 ; HDR_DAT P_DATS R170 ; #1F0 Data register
.Error EQU #0051 ; cnf 21 ; HDR_ERR P_ERR R171 ; #1F1 Error register
.Counter EQU #0052 ; cnf 22 ; HDR_CNT R172 ; #1F2 Counter register
.Sector EQU #0053 ; cnf 23 ; HDR_SEC R173 ; #1F3 Sector register
.CylinderLow EQU #0054 ; cnf 24 ; HDR_CLL R174 ; #1F4 Cylinder Low register
.CylinderHigh EQU #0055 ; cnf 25 ; HDR_CLH R175 ; #1F5 Cylinder High register
.Control EQU #4052 ; cnf 26 ; HDR_DRV R176 ; #1F6 Device/Head register
.Status EQU #4053 ; cnf 27 ; HDR_CTL P_HDST R177 ; #1F7 Status (Control) register
.AltStatus EQU #4054 ; cnf 28 ; ; #3F6 Alternate Status register
.DrvAddress EQU #4055 ; cnf 29 ; ; #3F7
*/
DW %00'000'0'0100'0000 DW %00'000'0'0100'0000
DW %11'000'0'0110'1111 DW %11'000'0'0110'1111
DB ACEX.IDE_DATA_1F0 DB ACEX.IDE_DATA_1F0
@ -465,7 +440,7 @@ Read:
DW %11'010'0'0110'1010 DW %11'010'0'0110'1010
DW %11'010'0'0110'1111 DW %11'010'0'0110'1111
DB ACEX.SLOT3 DB ACEX.SLOT3
; DCP END MARKER ; DCP END MARKER
DW 0,0,0 DW 0,0,0
;-----------------------------------------------------------------------; ;-----------------------------------------------------------------------;
; ;

View File

@ -15,9 +15,12 @@ EXP_START:
JP GLOBAL_RESET JP GLOBAL_RESET
;--------------------------------------- ;---------------------------------------
ROM_NUMBER: ;ROM_NUMBER:
.part1: DW MotherBoardID ;.part1: DW MotherBoardID
.part2: DB 0 ;.part2: DB 0
BOARD_INFO:
.number: DW MotherBoardID
.type: DB MotherBoardType
;--------------------------------------- ;---------------------------------------
;--------------------------------------- ;---------------------------------------
@ -305,20 +308,19 @@ NO_RESTART:
OUT (Z84.SIO.Ch_A.Ctrl),A OUT (Z84.SIO.Ch_A.Ctrl),A
LD A,#62 LD A,#62
OUT (Z84.SIO.Ch_A.Ctrl),A OUT (Z84.SIO.Ch_A.Ctrl),A
;
LD A,#CF ; BITS I/O LD A,#CF ; BITS I/O
OUT (Z84.PIO.Port_A.Command),A OUT (Z84.PIO.Port_A.Command),A
XOR A XOR A
OUT (Z84.PIO.Port_A.Command),A OUT (Z84.PIO.Port_A.Command),A
OUT (Z84.PIO.Port_A.Data),A ; PRINTER - PORT - all zeros OUT (Z84.PIO.Port_A.Data),A ; PRINTER - PORT - all zeros
; -¨­¨æ¨ «¨§ æ¨ï á¨á⥬­ëå ¯®à⮢ Z84C15- ; -¨­¨æ¨ «¨§ æ¨ï á¨á⥬­ëå ¯®à⮢ Z84C15-
LD BC,#FF*256 + Z84.SYS.Control LD BC,#FF*256 + Z84.SYS.Control
XOR A ; Z84.REG.WaitState_Ctrl XOR A ; Z84.REG.WaitState_Ctrl
OUT (C),A ; Z84.SYS.Control OUT (C),A ; Z84.SYS.Control
INC C ; Z84.REG.WaitState_MemBound INC C ; Z84.REG.WaitState_MemBound
OUT (C),A ; Z84.SYS.Data ; set 0 Waits OUT (C),A ; Z84.SYS.Data ; set 0 Waits
;
DEC C DEC C
LD A,3 ; Z84.REG.Misc_Ctrl LD A,3 ; Z84.REG.Misc_Ctrl
OUT (C),A ; Z84.SYS.Control OUT (C),A ; Z84.SYS.Control
@ -745,7 +747,7 @@ POST_5_OK:
; SBC HL,BC ; SBC HL,BC
;JR Z,set_config ;!TODO  ªâ¨¢ æ¨ï ¬¥âª¨ IX:IY ¨§ «® ¤¥à  ;JR Z,set_config ;!TODO  ªâ¨¢ æ¨ï ¬¥âª¨ IX:IY ¨§ «® ¤¥à 
;LD IX,ACEX.Config_ID.Sp97_2 ;LD IX,ACEX.Config_ID.Sp97_2
LD HL,ACEX.Config_ID.Sp2000 LD HL,ACEX.Config_ID.Sp2000
set_config: set_config:
LD (SYS_PAGE.CONFIG_BYTE),HL ; á®åà ­¨âì ­®¬¥à ¯à®è¨¢ª¨ LD (SYS_PAGE.CONFIG_BYTE),HL ; á®åà ­¨âì ­®¬¥à ¯à®è¨¢ª¨
;LD (SYS_PAGE.CONFIG_BYTE),IX ; á®åà ­¨âì ­®¬¥à ¯à®è¨¢ª¨ ;LD (SYS_PAGE.CONFIG_BYTE),IX ; á®åà ­¨âì ­®¬¥à ¯à®è¨¢ª¨
@ -767,14 +769,14 @@ set_config:
OUT (RGMOD),A OUT (RGMOD),A
OUT (SLOT3),A OUT (SLOT3),A
OUT (SLOT0),A OUT (SLOT0),A
LD A,5 LD A,5 ; !HARDCODE page 5
OUT (SLOT1),A OUT (SLOT1),A
LD A,2 LD A,2 ; !HARDCODE page 2
OUT (SLOT2),A OUT (SLOT2),A
;********************************* ;*********************************
; Don't use stack (SP) before this point if it`s normal booting!!! ; Don't use stack (SP) before this point if it`s normal booting!!!
LD SP,#BFFE ; <20> ç «® ¨á¯®«ì§®¢ ­¨ï á⥪ !!! LD SP,#C000 ; <20> ç «® ¨á¯®«ì§®¢ ­¨ï á⥪ !!!
PUSH HL ; á®åà ­¨âì ­®¬¥à ¯à®è¨¢ª¨ PUSH HL ; á®åà ­¨âì ­®¬¥à ¯à®è¨¢ª¨
CALL PORTS_INIT ; ¨­¨æ¨ «¨§¨à®¢ âì ¯®àâë CALL PORTS_INIT ; ¨­¨æ¨ «¨§¨à®¢ âì ¯®àâë
@ -782,20 +784,7 @@ set_config:
OUT (BorderColor),A OUT (BorderColor),A
CALL EMM.CheckColdInit ; ¨­¨æ¨ «¨§ æ¨ï ¯ ¬ï⨠CALL EMM.CheckColdInit ; ¨­¨æ¨ «¨§ æ¨ï ¯ ¬ïâ¨
POP HL ; ª®­ä¨£ãà æ¨ï POP HL ; ª®­ä¨£ãà æ¨ï
JR Reset_Handler.start ; JR Reset_Handler.start
; *************************************
; ‘ç¨â ¥¬, çâ® ¢å®¤ ¢ SETUP ¢á¥£¤  !!!
; *************************************
; LD A,H
; CP #FF
; JR NZ,NO_SETUP_1
; LD A,L
; JR NZ,NO_SETUP_2
;[---------------------------------------------------------------------]
MODULE Reset_Handler MODULE Reset_Handler
start: DI start: DI
@ -908,7 +897,7 @@ init_rom_address EQU #8200 ;!HARDCODE
LD BC,RAM_BIOS_PROG.Length LD BC,RAM_BIOS_PROG.Length
LDIR LDIR
*/ */
No_Need_To_Load_ZXROMS: ;No_Need_To_Load_ZXROMS:
POP AF POP AF
OUT (SLOT3),A OUT (SLOT3),A
;-------------------------------------------------------------------------------------------------------------------; ;-------------------------------------------------------------------------------------------------------------------;

View File

@ -256,8 +256,7 @@ FN_HDD_READ_NEXT:
RET C RET C
CALL NEXT_ADD_SEC CALL NEXT_ADD_SEC
JR FN_HDD_READ.L1 JR FN_HDD_READ.L1
;
; HL - BUFER, A - PAGE ; HL - BUFER, A - PAGE
FN_HDD_READ: FN_HDD_READ:
AND A AND A
@ -488,7 +487,7 @@ FN_HDD_TEST_IDE:
; <20>¥ ¤®«¦­  ¯®àâ¨âì ॣ¨áâà E!!! ; <20>¥ ¤®«¦­  ¯®àâ¨âì ॣ¨áâà E!!!
TEST_HDD_DRV: TEST_HDD_DRV:
; EXP_HDD.ASM variant ; EXP_HDD.ASM variant
LD HL,#01FE ; ????? LD HL,#01FE
LD BC,IDE.Write.Counter LD BC,IDE.Write.Counter
OUT (C),L OUT (C),L
IF IDE_Optimization IF IDE_Optimization
@ -496,36 +495,36 @@ TEST_HDD_DRV:
OUT (C),H ; IDE.Write.Sector OUT (C),H ; IDE.Write.Sector
; ;
DEC C DEC C
INC B DEC B
IN A,(C) ; ????? IDE.Write.Counter+#100 IN A,(C) ; IDE.Read.Counter
CP L CP L
RET NZ RET NZ
INC C INC C
ELSE ELSE
LD BC,IDE.Write.Sector LD BC,IDE.Write.Sector
OUT (C),H OUT (C),H
LD BC,IDE.Write.Counter+#100 LD BC,IDE.Read.Counter
IN A,(C) IN A,(C)
CP L CP L
RET NZ RET NZ
LD BC,IDE.Write.Sector+#100 LD BC,IDE.Read.Sector
ENDIF ENDIF
IN A,(C) ; ????? IDE.Write.Sector+#100 IN A,(C) ; IDE.Read.Sector
CP H CP H
RET RET
; TEST_HDD_DRV: ; TEST_HDD_DRV:
; ; EXTENDED.ASM variant ; ; EXTENDED.ASM variant
; LD HL,#00FF ;????? ; LD HL,#00FF
; LD BC,IDE.Write.CylinderLow ; LD BC,IDE.Write.CylinderLow
; OUT (C),L ; OUT (C),L
; IF IDE_Optimization ; IF IDE_Optimization
; INC C ; INC C
; OUT (C),H ; IDE.Write.CylinderHigh ; OUT (C),H ; IDE.Write.CylinderHigh
; INC B ; INC B
; DEC C ; DEC C
; IN A,(C) ; ????? ’ãâ ॣ¨áâà BC = #0254 - çâ® §  ¯®àâ â ª®© ¨ çâ® ®ââ㤠 ¯à®ç¨â ¥âáï? ; IN A,(C) ; ’ãâ ॣ¨áâà BC = #0254 - .CylinderLow
; CP L ; CP L
; RET NZ ; RET NZ
; INC C ; INC C
@ -533,14 +532,14 @@ TEST_HDD_DRV:
; ELSE ; ELSE
; LD BC,IDE.Write.CylinderHigh ; LD BC,IDE.Write.CylinderHigh
; OUT (C),H ; OUT (C),H
; LD BC,#0254 ;???!!!! ; LD BC,#0254
; IN A,(C) ; IN A,(C)
; CP L ; CP L
; RET NZ ; RET NZ
; LD BC,#0255 ;???!!!! ; LD BC,#0255
; ENDIF ; ENDIF
; IN A,(C) ; ????? ’ãâ ॣ¨áâà BC = #0255 - çâ® §  ¯®àâ â ª®© ¨ çâ® ®ââ㤠 ¯à®ç¨â ¥âáï? ; IN A,(C) ; ’ãâ ॣ¨áâà BC = #0255 - .CylinderHigh
; CP H ; CP H
; RET ; RET
@ -628,7 +627,7 @@ FN_HDD_INIT:
LD A,IDE.ATA.IdentifyDevice ;!FIXIT ¯¥à¥¤¥« âì LD A,IDE.ATA.IdentifyDevice ;!FIXIT ¯¥à¥¤¥« âì
OUT (C),A OUT (C),A
WAIT_HDD WAIT_HDD
BIT IDE.ControlBit.DataRequest,A AND IDE.ControlByte.DataRequest
;JR NZ,.L2 ;JR NZ,.L2
SCF SCF
RET Z RET Z
@ -704,22 +703,21 @@ HD_WAIT:
PUSH BC PUSH BC
PUSH AF PUSH AF
LD DE,0 LD DE,0
HD_WAIT1: .loop: LD BC,IDE.Read.Status
LD BC,IDE.Read.Status
IN A,(C) IN A,(C)
AND IDE.ControlByte.Busy AND IDE.ControlByte.Busy
JR Z,HD_W_EXIT JR Z,.EXIT
DEC DE DEC DE
LD A,D LD A,D
OR E OR E
JR NZ,HD_WAIT1 JR NZ,.loop
POP AF POP AF
POP BC POP BC
POP DE POP DE
SCF SCF
RET RET
HD_W_EXIT: ;
POP AF .EXIT: POP AF
POP BC POP BC
POP DE POP DE
AND A AND A

View File

@ -768,7 +768,7 @@ LP_BEG_P:
LP_INI_P: LP_INI_P:
EX AF,AF' EX AF,AF'
EXX EXX
LP_OPEN_PG LP_OPEN_PG
LD A,(WIN_ID_0.USER.MODE) LD A,(WIN_ID_0.USER.MODE)
CP #C0 CP #C0
JR NC,LP_INI_NO_ZG ; ®âªàë⨥ ¡®à¤¥à ... JR NC,LP_INI_NO_ZG ; ®âªàë⨥ ¡®à¤¥à ...
@ -1221,12 +1221,12 @@ LP_MODE_LINE3: ;
LD A,#50 LD A,#50
OUT (SLOT3),A OUT (SLOT3),A
LD A,L ; ¢¥à⨪ «ì­®¥ ¯®«®¦¥­¨¥ LD A,L ; ¢¥à⨪ «ì­®¥ ¯®«®¦¥­¨¥
CP 80H CP #80
JR NC,LP_EXIT_MODE3 JR NC,LP_EXIT_MODE3
LP_MODE_RECURSE3: LP_MODE_RECURSE3:
LD A,D ; £®à¨§®­â «ì­®¥ ¯®«®¦¥­¨¥ LD A,D ; £®à¨§®­â «ì­®¥ ¯®«®¦¥­¨¥
AND 7FH AND #7F
SUB 80 SUB 80
JR C,LP_MODE_LL3 JR C,LP_MODE_LL3
SUB 48 SUB 48
@ -1238,7 +1238,7 @@ LP_MODE_RECURSE3:
LD A,E ; ¢®ááâ ­®¢¨âì LD A,E ; ¢®ááâ ­®¢¨âì
RRA RRA
AND 3FH AND #3F
SUB C SUB C
JR NC,LP_EXIT_MODE3 JR NC,LP_EXIT_MODE3
NEG NEG
@ -1248,7 +1248,7 @@ LP_MODE_RECURSE3:
LP_MODE_LL3: LP_MODE_LL3:
NEG NEG
RRA RRA
AND 3FH AND #3F
CP C CP C
JR NC,LP_MODE_LR3 JR NC,LP_MODE_LR3
LD C,A LD C,A

View File

@ -1,10 +1,10 @@
;===================[ ”㭪樨 à á¯à¥¤¥«¥­¨ï ¯ ¬ï⨠]===================; ;===================[ ”㭪樨 à á¯à¥¤¥«¥­¨ï ¯ ¬ï⨠]===================;
; ‚ë室: BC - FREE MEM ¢ ¡«®ª å ¯® 16k, HL - FULL MEM ; ‚ë室: BC - FREE MEM ¢ ¡«®ª å ¯® 16k, HL - FULL MEM
;!TEST ¢á¥ SLOT2 ­  SLOT1 ;!TEST ¢á¥ SLOT2 ­  SLOT1
; ;
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
; Ž¯à¥¤¥«¥­¨¥ ®¡ê¥¬  ¯ ¬ïâ¨. ; Ž¯à¥¤¥«¥­¨¥ ®¡ê¥¬  ¯ ¬ïâ¨.
; ‚ë室: BC - FREE MEM ¢ ¡«®ª å ¯® 16k, HL - FULL MEM ; ‚ë室: BC - FREE MEM ¢ ¡«®ª å ¯® 16k, HL - FULL MEM
EMM.GetMemSize: EMM.GetMemSize:
IN A,(SLOT1) IN A,(SLOT1)
LD B,A LD B,A
@ -32,7 +32,7 @@ EMM.GetMemSize:
; ;
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
; ˆ­¨æ¨ «¨§ æ¨ï à á¯à¥¤¥«¥­¨ï ¯ ¬ïâ¨. ; ˆ­¨æ¨ «¨§ æ¨ï à á¯à¥¤¥«¥­¨ï ¯ ¬ïâ¨.
EMM.InitMem: EMM.InitMem:
PUSH BC PUSH BC
PUSH HL PUSH HL
@ -42,7 +42,7 @@ EMM.InitMem:
LD C,A LD C,A
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
LD HL,SYS_PAGE.RAMD_FAT; - #4000 - #4000 ; €¤à¥á FAT އ“. LD HL,SYS_PAGE.RAMD_FAT ; €¤à¥á RAM FAT ¢ އ“.
; ®¡­ã«ï¥¬ â ¡«¨æã ; ®¡­ã«ï¥¬ â ¡«¨æã
XOR A XOR A
.loopFree: .loopFree:
@ -50,7 +50,7 @@ EMM.InitMem:
INC L INC L
JR NZ,.loopFree JR NZ,.loopFree
; १¥à¢¨à㥬 ᯥæ.áâà ­¨æë ¨ áâà ­¨æë ZX ; १¥à¢¨à㥬 ᯥæ.áâà ­¨æë ¨ áâà ­¨æë ZX
LD B,RESERVED_PAGES.Blocks LD B,RESERVED_PAGES.Blocks
LD DE,RESERVED_PAGES ; â ¡«¨æ  § ­ïâëå á¨á⥬­ëå áâà ­¨æ LD DE,RESERVED_PAGES ; â ¡«¨æ  § ­ïâëå á¨á⥬­ëå áâà ­¨æ
.loop: LD A,(DE) .loop: LD A,(DE)
CP #FF CP #FF
@ -63,10 +63,10 @@ EMM.InitMem:
CP #FF CP #FF
JR NZ,.loopBlk JR NZ,.loopBlk
.exitLoop: .exitLoop:
INC DE INC DE
DJNZ .loop DJNZ .loop
LD L,A LD L,A
LD (HL),A LD (HL),A
; ˆ­¨æ¨ «¨§ æ¨ï ª«î祩 RAM-Disks ; ˆ­¨æ¨ «¨§ æ¨ï ª«î祩 RAM-Disks
XOR A XOR A
LD HL,SYS_PAGE.RAMD_KEYS; - #4000 - #4000 LD HL,SYS_PAGE.RAMD_KEYS; - #4000 - #4000
@ -89,27 +89,27 @@ EMM.InitMem:
RET RET
;---------------------------------------------------------------------[] ;---------------------------------------------------------------------[]
RESERVED_PAGES: RESERVED_PAGES:
; [x] Block #1 - ¬®¦­® ®á¢®¡®¤¨âì ¯® ID 1 ; [x] Block #1 - ¬®¦­® ®á¢®¡®¤¨âì ¯® ID 1
DB 1,3,4,6,7,8,9,10,11,12,13,14,15 ; for Spectrum DB 1,3,4,6,7,8,9,10,11,12,13,14,15 ; for Spectrum
;!FIXIT áâà ­¨æë 16..31 ­¥ § à¥§¥à¢¨à®¢ ­ë, ­® ¨á¯®«ì§ãîâáï ¢ Pentagon 512 ;!FIXIT áâà ­¨æë 16..31 ­¥ § à¥§¥à¢¨à®¢ ­ë, ­® ¨á¯®«ì§ãîâáï ¢ Pentagon 512
; ;
; í¬ã«ïâ®à <20>‡“ ;!FIXIT ROM-Emulator ᤥ« âì ¤¨­ ¬¨ç¥áª¨¥ áâà ­¨æë ; í¬ã«ïâ®à <20>‡“ ;!FIXIT ROM-Emulator ᤥ« âì ¤¨­ ¬¨ç¥áª¨¥ áâà ­¨æë
DB #42,#43,#44,#45,#46,#47;,#48,#49,#4A,#4B ; For (BASIC128, BASIC48, TRDOS, SCORP_ROM)*2, vBIOS, vEXTENSION DB #42,#43,#44,#45,#46,#47;,#48,#49,#4A,#4B ; For (BASIC128, BASIC48, TRDOS, SCORP_ROM)*2, vBIOS, vEXTENSION
DB #FF ; End of the block DB #FF ; End of the block
; ;
; ;
;; Block #2 - ­¥«ì§ï ®á¢®¡®¦¤ âì ;; Block #2 - ­¥«ì§ï ®á¢®¡®¦¤ âì
DB 0,2,5 ; for Spectrum and BIOS starting DB 0,2,5 ; for Spectrum and BIOS starting
DB DCP_PAGE ; Ports map DB DCP_PAGE ; Ports map
DB Spec_Page ; Page for Spectrum mode DB Spec_Page ; Page for Spectrum mode
; Screen pages ; Screen pages
DB #50,#51,#52,#53,#54,#55,#56,#57 DB #50,#51,#52,#53,#54,#55,#56,#57
DB #58,#59,#5A,#5B,#5C,#5D,#5E,#5F DB #58,#59,#5A,#5B,#5C,#5D,#5E,#5F
; ;
;DB MODE_PAGE ; ????? ;DB MODE_PAGE ; ?????
DB CBL.BUFFER_PAGE ; Page for CBL audio DB CBL.BUFFER_PAGE ; Page for CBL audio
DB SYS_PAGE ; Page for system (BIOS) variables DB SYS_PAGE ; Page for system (BIOS) variables
DB #FF ; End of the block DB #FF ; End of the block
; ;
.Blocks EQU 2 .Blocks EQU 2
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
@ -119,10 +119,10 @@ RESERVED_PAGES:
; ;
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
; <EFBFBD>®«ãç¨âì ¡«®ª ¯ ¬ï⨠N bytes, ; <EFBFBD>®«ãç¨âì ¡«®ª ¯ ¬ï⨠N bytes,
; ‚室: B - ç¨á«® ­¥®¡å®¤¨¬ëå ¡«®ª®¢ ; ‚室: B - ç¨á«® ­¥®¡å®¤¨¬ëå ¡«®ª®¢
; ‚ë室: L,A - Š‹ž— RAM-Disk/ª®¤ ®è¨¡ª¨ ; ‚ë室: L,A - Š‹ž— RAM-Disk/ª®¤ ®è¨¡ª¨
; CF - ¯à¨§­ ª ®è¨¡ª¨ ; CF - ¯à¨§­ ª ®è¨¡ª¨
;EMM_FN2M: ;EMM_FN2M:
EMM.GetMem: EMM.GetMem:
;PUSH DE ;PUSH DE
@ -141,7 +141,7 @@ EMM.GetMem:
JR NZ,.loop JR NZ,.loop
DJNZ .loop DJNZ .loop
; Œ¥áâ® ¥áâì ! ; Œ¥áâ® ¥áâì !
LD B,C ; ‚®ááâ ­®¢¨âì ­ã¦­ë© ®¡ê¥¬ ¤¨áª  LD B,C ; ‚®ááâ ­®¢¨âì ­ã¦­ë© ®¡ê¥¬ ¤¨áª 
LD C,#FF ; Œ…’Š€ ŠŽ<C5A0>€ RAM-Disk LD C,#FF ; Œ…’Š€ ŠŽ<C5A0>€ RAM-Disk
LD HL,SYS_PAGE.RAMD_FAT; - #4000 - #4000 LD HL,SYS_PAGE.RAMD_FAT; - #4000 - #4000
@ -155,7 +155,7 @@ EMM.GetMem:
LD C,L LD C,L
DJNZ .loop2 DJNZ .loop2
; L - 㪠§ â¥«ì 楯®çª¨. ; L - 㪠§ â¥«ì 楯®çª¨.
EX AF,AF' EX AF,AF'
OUT (SLOT3),A OUT (SLOT3),A
LD A,L LD A,L
@ -179,10 +179,10 @@ EMM.GetMem:
; ;
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
; <20>®«ãç¨âì ¡«®ª ¯ ¬ï⨠N bytes, ¤«ï RAM-Disk A ; <20>®«ãç¨âì ¡«®ª ¯ ¬ï⨠N bytes, ¤«ï RAM-Disk A
; ‚室: B - ç¨á«® ­¥®¡å®¤¨¬ëå ¡«®ª®¢, A - RAM-Disk ; ‚室: B - ç¨á«® ­¥®¡å®¤¨¬ëå ¡«®ª®¢, A - RAM-Disk
; ‚ë室: L,A - Š‹ž— RAM-Disk/ª®¤ ®è¨¡ª¨ ; ‚ë室: L,A - Š‹ž— RAM-Disk/ª®¤ ®è¨¡ª¨
; CF - ¯à¨§­ ª ®è¨¡ª¨ ; CF - ¯à¨§­ ª ®è¨¡ª¨
;EMM.GetMem: ;EMM.GetMem:
EMM.GetMemRMD: EMM.GetMemRMD:
PUSH AF PUSH AF
@ -194,7 +194,7 @@ EMM.GetMemRMD:
CALL BLK_TO_RAMD CALL BLK_TO_RAMD
RET NC RET NC
.error2: .error2:
LD L,2 ; RAM-Disk § ­ïâ ;!TODO ¯¥à¥ç¨á«¨âì ¢á¥ ¢ à¨ ­âë ®è¨¡®ª ¨ ¨å ­®¬¥à  ª ª ¤«ï „‘‘ LD L,2 ; RAM-Disk § ­ïâ ;!TODO ¯¥à¥ç¨á«¨âì ¢á¥ ¢ à¨ ­âë ®è¨¡®ª ¨ ¨å ­®¬¥à  ª ª ¤«ï „‘‘
LD A,L LD A,L
RET RET
.error1: .error1:
@ -208,8 +208,8 @@ EMM.GetMemRMD:
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
; Žá¢®¡®¤¨âì ¡«®ª ¯ ¬ï⨠ª«îç  K ; Žá¢®¡®¤¨âì ¡«®ª ¯ ¬ï⨠ª«îç  K
; ‚室: A - Š‹ž— RAM-Disk ; ‚室: A - Š‹ž— RAM-Disk
EMM.FreeMemRMD: EMM.FreeMemRMD:
CALL GET_RAMD_ST CALL GET_RAMD_ST
RET C RET C
@ -227,8 +227,8 @@ EMM.FreeMemRMD:
LD A,C LD A,C
;JR EMM.FreeMem ;JR EMM.FreeMem
;------[ ;------[
; Žá¢®¡®¤¨âì ¡«®ª ¯ ¬ï⨠; Žá¢®¡®¤¨âì ¡«®ª ¯ ¬ïâ¨
; ‚室: A - <20>€—€Ž <E28093>Ž—Šˆ ; ‚室: A - <20>€—€Ž <E28093>Ž—Šˆ
; <20><20>Ž<EFBFBD>ˆœ DE!!! ; <20><20>Ž<EFBFBD>ˆœ DE!!!
;EMM_FN3M: ;EMM_FN3M:
EMM.FreeMem: EMM.FreeMem:
@ -274,19 +274,19 @@ EMM_FN3M_ERR:
; WARNING!!! ­¥ âண âì DE ; WARNING!!! ­¥ âண âì DE
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
; <20>®«ãç¨âì áâà ­¨æã N ª«îç  K ; <20>®«ãç¨âì áâà ­¨æã N ª«îç  K
; ‚室: A - Š‹ž— RAM-Disk, B - ­®¬¥à áâà ­¨æë ; ‚室: A - Š‹ž— RAM-Disk, B - ­®¬¥à áâà ­¨æë
; ‚ë室: A - áâà ­¨æ  ; ‚ë室: A - áâà ­¨æ 
EMM.GetMemPageRMD: EMM.GetMemPageRMD:
CALL GET_RAMD_ST CALL GET_RAMD_ST
RET C RET C
SCF SCF
RET Z RET Z
;JR EMM.GetMemPage ;JR EMM.GetMemPage
;------[ ;------[
; <20>®«ãç¨âì áâà ­¨æã N ¡«®ª  K ; <20>®«ãç¨âì áâà ­¨æã N ¡«®ª  K
; ‚室: A - ¡«®ª, B - ­®¬¥à áâà ­¨æë ; ‚室: A - ¡«®ª, B - ­®¬¥à áâà ­¨æë
; ‚ë室: A - áâà ­¨æ , IF CF - A=0 - ­¥â ¡«®ª , A=FF - END ; ‚ë室: A - áâà ­¨æ , IF CF - A=0 - ­¥â ¡«®ª , A=FF - END
;EMM_FN4M: ;EMM_FN4M:
EMM.GetMemPage: EMM.GetMemPage:
LD L,A LD L,A
@ -327,9 +327,9 @@ EMM_F4M_END:
; ;
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
; <20>®«ãç¨âì á«¥¤ãîéãî áâà ­¨æã ¯® FAT ; <20>®«ãç¨âì á«¥¤ãîéãî áâà ­¨æã ¯® FAT
; ‚室: A - áâà ­¨æ  އ“ ; ‚室: A - áâà ­¨æ  އ“
; ‚ë室: A - á«¥¤ãîé ï áâà ­¨æ  އ“ ; ‚ë室: A - á«¥¤ãîé ï áâà ­¨æ  އ“
;EMM_FN5: ;EMM_FN5:
EMM.GetMemPageNext: EMM.GetMemPageNext:
LD L,A LD L,A
@ -357,9 +357,9 @@ EMM.GetMemPageNext:
; ;
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
; <20>®«ãç¨âì ᯨ᮪ áâà ­¨æ ¡«®ª  ¢ HL ; <20>®«ãç¨âì ᯨ᮪ áâà ­¨æ ¡«®ª  ¢ HL
; ‚室: A - ¡«®ª, HL -  ¤à¥á ¡ãä¥à  - 256 ¡ ©â. ; ‚室: A - ¡«®ª, HL -  ¤à¥á ¡ãä¥à  - 256 ¡ ©â.
; ‚ë室: HL -  ¤à¥á ¡«®ª , B - ¤«¨­  ¡«®ª  ¢ áâà ­¨æ å އ“ ; ‚ë室: HL -  ¤à¥á ¡«®ª , B - ¤«¨­  ¡«®ª  ¢ áâà ­¨æ å އ“
;EMM_FN5M: ;EMM_FN5M:
EMM.GetMemBlkPages: EMM.GetMemBlkPages:
PUSH DE PUSH DE
@ -433,17 +433,17 @@ EMM.GetMemBlkPages:
; ;
;----------------------------------------------------------------------; !FIXIT SAFE_RGADR ;----------------------------------------------------------------------; !FIXIT SAFE_RGADR
;RAMD_R_W: ;RAMD_R_W:
; ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» ; ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
; º RD/WR SECTOR º\ ; º RD/WR SECTOR º\
; º HL - BUFER º\ ; º HL - BUFER º\
; º DE - ABS sector ¢ 256b ¡«®ª å º\ ; º DE - ABS sector ¢ 256b ¡«®ª å º\
; º B - ç¨á«® ¤ ­­ëå ¢ 256b ¡«®ª å º\ ; º B - ç¨á«® ¤ ­­ëå ¢ 256b ¡«®ª å º\
; º A - block RAM º\ ; º A - block RAM º\
; º A' - ª®¬ ­¤  ç⥭¨¥/§ ¯¨áì/ç⥭¨¥ ROM Disk º\ ; º A' - ª®¬ ­¤  ç⥭¨¥/§ ¯¨áì/ç⥭¨¥ ROM Disk º\
; º 0 - read, 255 - write, 70 - read ROM DISK º\ ; º 0 - read, 255 - write, 70 - read ROM DISK º\
; º ** NOT USED TR-DOS VARS ** º\ ; º ** NOT USED TR-DOS VARS ** º\
; ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\ ; ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\
; \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ; \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
BLK_RD_WR: BLK_RD_WR:
AND A AND A
SCF SCF
@ -453,42 +453,42 @@ BLK_RD_WR:
INC B INC B
DEC B DEC B
RET Z RET Z
; ;
; á®å࠭塞 á®áâ®ï­¨¥ ¯à¥à뢠­¨© ; á®å࠭塞 á®áâ®ï­¨¥ ¯à¥à뢠­¨©
LD C,A LD C,A
LD A,R LD A,R
PUSH AF PUSH AF
; á®å࠭塞 PORT_Y ; á®å࠭塞 PORT_Y
IN A,(PORT_Y) IN A,(PORT_Y)
PUSH AF PUSH AF
LD A,#C0 LD A,#C0
OUT (PORT_Y),A OUT (PORT_Y),A
; ;
LD A,C LD A,C
DI DI
CALL .start CALL .start
EX AF,AF' EX AF,AF'
; ¢®ááâ ­ ¢«¨¢ ¥¬ PORT_Y ; ¢®ááâ ­ ¢«¨¢ ¥¬ PORT_Y
POP AF POP AF
OUT (PORT_Y),A OUT (PORT_Y),A
; ¢®ááâ ­ ¢«¨¢ ¥¬ á®áâ®ï­¨¥ ¯à¥à뢠­¨© ; ¢®ááâ ­ ¢«¨¢ ¥¬ á®áâ®ï­¨¥ ¯à¥à뢠­¨©
POP AF POP AF
JP PO,.noInterrupts JP PO,.noInterrupts
EI EI
.noInterrupts: .noInterrupts:
EX AF,AF' EX AF,AF'
RET RET
; ;
.start: EX AF,AF' .start: EX AF,AF'
AND A ; 0 - read AND A ; 0 - read
JR Z,.reset_Z JR Z,.reset_Z
CP #FF ; write CP #FF ; write
JR Z,.keep_Z JR Z,.keep_Z
CP 5 ; old read CP 5 ; old read
JR Z,.reset_Z JR Z,.reset_Z
CP 6 ; old write CP 6 ; old write
JR Z,.keep_Z JR Z,.keep_Z
CP #46 CP #46
@ -499,19 +499,19 @@ BLK_RD_WR:
RET RET
.reset_Z: .reset_Z:
INC A ; set Z for WRITE INC A ; set Z for WRITE
.keep_Z: .keep_Z:
EX AF,AF' EX AF,AF'
; ;
PUSH HL PUSH HL
PUSH BC PUSH BC
LD C,SLOT1 LD C,SLOT1
IN B,(C) IN B,(C)
LD H,A LD H,A
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT1),A OUT (SLOT1),A
LD A,H LD A,H
LD H,high (SYS_PAGE.RAMD_FAT - #4000 - #4000) LD H,high (SYS_PAGE.RAMD_FAT - #4000 - #4000)
LD L,A LD L,A
@ -562,7 +562,7 @@ BLK_RD_WR:
RES 7,D RES 7,D
SET 6,D SET 6,D
.BLK_CONT1: ; DE - RamDisk, HL - data .BLK_CONT1: ; DE - RamDisk, HL - data
EX AF,AF' EX AF,AF'
JR Z,.NO_EX_RW1 ; WRITE JR Z,.NO_EX_RW1 ; WRITE
EX DE,HL ; for READ EX DE,HL ; for READ
@ -574,7 +574,7 @@ BLK_RD_WR:
DUP 16 DUP 16
LDI LDI
EDUP EDUP
DEC A DEC A
JR NZ,.BLK_LL1 JR NZ,.BLK_LL1
@ -582,7 +582,7 @@ BLK_RD_WR:
JR Z,.NO_EX_RW2 ; WRITE JR Z,.NO_EX_RW2 ; WRITE
EX DE,HL ; for READ EX DE,HL ; for READ
.NO_EX_RW2: .NO_EX_RW2:
EX AF,AF' ; DEC C ¯à®ªàã⨫áï 256 à § ¨ ¢¥à­ã«áï EX AF,AF' ; DEC C ¯à®ªàã⨫áï 256 à § ¨ ¢¥à­ã«áï
INC B ; B 㦥 㬥­ì訫áï ­  1, INC B ; B 㦥 㬥­ì訫áï ­  1,
DEC B DEC B
JP Z,.BLK_EXIT_1 JP Z,.BLK_EXIT_1
@ -628,7 +628,7 @@ BLK_RD_WR:
.BLK_EXIT_1: .BLK_EXIT_1:
LD A,D LD A,D
DEC A DEC A
RLCA RLCA
LD A,C LD A,C
JR C,.BLK_EXIT_2 JR C,.BLK_EXIT_2
@ -645,19 +645,19 @@ BLK_RD_WR:
; ;
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
;**************************************** ;****************************************
;!!!!! READ_ROM_PAGE_X ç⥭¨¥ ¯®á«¥¤­¨å ;!!!!! READ_ROM_PAGE_X ç⥭¨¥ ¯®á«¥¤­¨å
; 256 ¡ ©â®¢ <20>‡“ ¢ á«ã¦¥¡­ãî áâà ­¨æã § ç¥¬-â® ; 256 ¡ ©â®¢ <20>‡“ ¢ á«ã¦¥¡­ãî áâà ­¨æã § ç¥¬-â®
; READ_ROM_PAGE_X: ; READ_ROM_PAGE_X:
; LD DE,0 ; LD DE,0
; LD BC,#100 ; ®¤¨­ ᥪâ®à ; LD BC,#100 ; ®¤¨­ ᥪâ®à
; PUSH DE ; PUSH DE
; PUSH BC ; PUSH BC
; LD HL,#3F00 ; LD HL,#3F00
; LD DE,#FF00 ; LD DE,#FF00
; LD A,#1F ; last page ROM ; LD A,#1F ; last page ROM
; JR ROM_DISK.loopRead ; JR ROM_DISK.loopRead
;**************************************** ;****************************************
; —⥭¨¥ á ROM-Disk ; —⥭¨¥ á ROM-Disk
; HL -  ¤à¥á, ªã¤  ç¨â âì ; HL -  ¤à¥á, ªã¤  ç¨â âì
@ -665,10 +665,10 @@ BLK_RD_WR:
; B - ç¨á«® ᥪâ®à®¢ ; B - ç¨á«® ᥪâ®à®¢
; A' - à §¬¥à ᥪâ®à  (1 - 256b, 2 - 512 b) ; A' - à §¬¥à ᥪâ®à  (1 - 256b, 2 - 512 b)
ROM_DISK: ROM_DISK:
; á®å࠭塞 á®áâ®ï­¨¥ ¯à¥à뢠­¨© ; á®å࠭塞 á®áâ®ï­¨¥ ¯à¥à뢠­¨©
;LD A,R ;LD A,R
EX AF,AF' EX AF,AF'
LD C,0 ; áç¥â稪 LD C,0 ; áç¥â稪
DEC A DEC A
JR Z,.loop JR Z,.loop
;JR Z,.start ;JR Z,.start
@ -682,18 +682,18 @@ ROM_DISK:
LD A,B LD A,B
ADD A,A ADD A,A
LD B,A LD B,A
;!!!!! ;!!!!!
RET C RET C
DI DI
CALL .loop CALL .loop
; ; ¢®ááâ ­ ¢«¨¢ ¥¬ á®áâ®ï­¨¥ ¯à¥à뢠­¨© ; ; ¢®ááâ ­ ¢«¨¢ ¥¬ á®áâ®ï­¨¥ ¯à¥à뢠­¨©
; EX AF,AF' ; EX AF,AF'
; JP PO,.noInterrupts ; JP PO,.noInterrupts
; EI ; EI
; .noInterrupts: ; .noInterrupts:
; EX AF,AF' ; EX AF,AF'
; ; ; ;
RET C RET C
AND A AND A
RR D RR D
@ -702,39 +702,39 @@ ROM_DISK:
RET RET
; .start: ; .start:
; DI ; DI
; CALL .loop ; CALL .loop
; ; ¢®ááâ ­ ¢«¨¢ ¥¬ á®áâ®ï­¨¥ ¯à¥à뢠­¨© ; ; ¢®ááâ ­ ¢«¨¢ ¥¬ á®áâ®ï­¨¥ ¯à¥à뢠­¨©
; EX AF,AF' ; EX AF,AF'
; JP PO,.noInterrupts2 ; JP PO,.noInterrupts2
; EI ; EI
; .noInterrupts2: ; .noInterrupts2:
; EX AF,AF' ; EX AF,AF'
; ; ; ;
; RET ; RET
.loop: PUSH DE ; ­®¬¥à ᥪâ®à  .loop: PUSH DE ; ­®¬¥à ᥪâ®à 
PUSH BC PUSH BC
LD A,E LD A,E
AND #3F ; ADRESS in ROM-Page AND #3F ; ADRESS in ROM-Page
PUSH AF ; á®åà ­¨âì  ¤à¥á PUSH AF ; á®åà ­¨âì  ¤à¥á
EX DE,HL ; DE -  ¤à¥á ¡ãä¥à  EX DE,HL ; DE -  ¤à¥á ¡ãä¥à 
ADD HL,HL ADD HL,HL
ADD HL,HL ; H - ­®¬¥à ¡ ­ª¨ ADD HL,HL ; H - ­®¬¥à ¡ ­ª¨
LD A,(ROM_DISK.Pages.Number) LD A,(ROM_DISK.Pages.Number)
INC H INC H
CP H CP H
LD L,H LD L,H
LD H, high ROM_DISK.Pages.Number ; ROM-Disk pages! LD H, high ROM_DISK.Pages.Number ; ROM-Disk pages!
LD A,(HL) ; PAGE-ROM LD A,(HL) ; PAGE-ROM
POP HL ; ¢®ááâ ­®¢¨âì  ¤à¥á ¢ ROM-Page POP HL ; ¢®ááâ ­®¢¨âì  ¤à¥á ¢ ROM-Page
LD L,0 ; ¥á«¨ ¤ «¥ª® § å®â¥«¨ - ¢ë室 á ®è¨¡ª®© LD L,0 ; ¥á«¨ ¤ «¥ª® § å®â¥«¨ - ¢ë室 á ®è¨¡ª®©
JR C,.errorExit ; ROM-Disk-end JR C,.errorExit ; ROM-Disk-end
; DE - ¡ãä¥à ; DE - ¡ãä¥à
; HL -  ¤à¥á ¢ ROM ; HL -  ¤à¥á ¢ ROM
; B - ç¨á«® ᥪâ®à®¢ ; B - ç¨á«® ᥪâ®à®¢
@ -757,37 +757,37 @@ ROM_DISK:
; DE - next address ; DE - next address
; HL - ROM address ; HL - ROM address
.readNext: .readNext:
POP BC ; ç¨á«® ᥪâ®à®¢ POP BC ; ç¨á«® ᥪâ®à®¢
INC C ; áç¥â稪 áç¨â ­­ëå ᥪâ®à®¢ INC C ; áç¥â稪 áç¨â ­­ëå ᥪâ®à®¢
DEC B ; ᥪâ®à  ª®­ç¨«¨áì? DEC B ; ᥪâ®à  ª®­ç¨«¨áì?
JR Z,.normExit JR Z,.normExit
BIT 6,H ; ç⥭¨¥ ­¥ § ª®­ç¥­® BIT 6,H ; ç⥭¨¥ ­¥ § ª®­ç¥­®
PUSH BC ; á®åà ­¨âì áç¥â稪¨ PUSH BC ; á®åà ­¨âì áç¥â稪¨
JR Z,.loopRead ; ç¨â âì ¤ «ìè¥ JR Z,.loopRead ; ç¨â âì ¤ «ìè¥
POP BC POP BC
POP HL ; ­®¬¥à ᥪâ®à  POP HL ; ­®¬¥à ᥪâ®à 
LD A,B LD A,B
LD B,0 LD B,0
ADD HL,BC ADD HL,BC
LD B,A ; ¢ëç¨á«¨âì á«¥¤.ᥪâ®à LD B,A ; ¢ëç¨á«¨âì á«¥¤.ᥪâ®à
EX DE,HL ; ⥯¥àì HL -  ¤à¥á, DE ᥪâ®à, B - ᪮«ìª® ¥é¥ ç¨â âì EX DE,HL ; ⥯¥àì HL -  ¤à¥á, DE ᥪâ®à, B - ᪮«ìª® ¥é¥ ç¨â âì
JP .loop ; ­ ç âì ¢á¥ á­®¢ ! JP .loop ; ­ ç âì ¢á¥ á­®¢ !
; ç⥭¨¥ § ª®­ç¥­® ; ç⥭¨¥ § ª®­ç¥­®
.normExit: .normExit:
POP HL ; ᥪâ®à, ®âªã¤  ¢¥«®áì ç⥭¨¥ POP HL ; ᥪâ®à, ®âªã¤  ¢¥«®áì ç⥭¨¥
ADD HL,BC ; ¯® ¢®§¢à âã: HL - á«¥¤. ¤à¥á ADD HL,BC ; ¯® ¢®§¢à âã: HL - á«¥¤. ¤à¥á
EX DE,HL ; DE - á«¥¤.ᥪâ®à EX DE,HL ; DE - á«¥¤.ᥪâ®à
AND A AND A
RET RET
; ®è¨¡ª  ; ®è¨¡ª 
.errorExit: ; !TODO ᤥ« âì, ç⮡ ­  ¢ë室¥ ¯®ª §ë¢ «®áì ª®«¨ç¥á⢮ ¯à®ç¨â ­­ëå ᥪâ®à®¢ .errorExit: ; !TODO ᤥ« âì, ç⮡ ­  ¢ë室¥ ¯®ª §ë¢ «®áì ª®«¨ç¥á⢮ ¯à®ç¨â ­­ëå ᥪâ®à®¢
POP BC POP BC
POP DE POP DE
SCF SCF
@ -814,8 +814,8 @@ ROM_DISK:
; ;
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
; ¢å®¤: DE - ram_disk trk_sec, A - RAM-Disk ; ¢å®¤: DE - ram_disk trk_sec, A - RAM-Disk
; ¢ë室: HL -  ¤à¥á, A - page ; ¢ë室: HL -  ¤à¥á, A - page
RAMD_CALC_PAGE: RAMD_CALC_PAGE:
CP 16 CP 16
CCF CCF
@ -843,32 +843,32 @@ RAMD_CALC_PAGE:
; ;
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
; ‚室: ; ‚室:
; A - RAM Disk ID ; A - RAM Disk ID
; ‚ë室: ; ‚ë室:
; A - Number (0..15) ; A - Number (0..15)
GET_RAMD_NUM: GET_RAMD_NUM:
EX AF,AF' EX AF,AF'
IN A,(SLOT1) IN A,(SLOT1)
EX AF,AF' EX AF,AF'
LD BC,SYS_PAGE * 256 + SLOT1 LD BC,SYS_PAGE * 256 + SLOT1
OUT (C),B OUT (C),B
LD HL,SYS_PAGE.RAMD_KEYS - #4000 - #4000 LD HL,SYS_PAGE.RAMD_KEYS - #4000 - #4000
LD BC,SYS_PAGE.RAMD_KEYS.NUM LD BC,SYS_PAGE.RAMD_KEYS.NUM
CPIR CPIR
EX AF,AF' EX AF,AF'
OUT (SLOT1),A OUT (SLOT1),A
EX AF,AF' EX AF,AF'
SCF SCF
RET PE RET PE
DEC L DEC L
LD A,L LD A,L
SUB low SYS_PAGE.RAMD_KEYS SUB low SYS_PAGE.RAMD_KEYS
RET RET
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
; ;
@ -876,12 +876,12 @@ GET_RAMD_NUM:
; ;
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
; [x] 04/11/2023 ; [x] 04/11/2023
; ‚室: ; ‚室:
; B = 0: swap to Sp ; B = 0: swap to Sp
; B = #FF: swap to ZX ; B = #FF: swap to ZX
; B = #FE: no swap, only get info ; B = #FE: no swap, only get info
; ‚ë室: ; ‚ë室:
; A - current RAM Drives set ; A - current RAM Drives set
SWAP_RAM_DRIVES: SWAP_RAM_DRIVES:
IN A,(SLOT3) IN A,(SLOT3)
EX AF,AF' EX AF,AF'
@ -928,7 +928,7 @@ SWAP_RAM_DRIVES:
; ;
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
; ­  ¢ë室¥ ¯à¨ € = 0 ¤®«¦¥­ ¡ëâì ãáâ ­®¢«¥­ ä« £ Z ; ­  ¢ë室¥ ¯à¨ € = 0 ¤®«¦¥­ ¡ëâì ãáâ ­®¢«¥­ ä« £ Z
; ­¥ 㡨¢ ¥â DE ¨ BC ; ­¥ 㡨¢ ¥â DE ¨ BC
GET_RAMD_ST: GET_RAMD_ST:
CP SYS_PAGE.RAMD_KEYS.NUM CP SYS_PAGE.RAMD_KEYS.NUM
@ -959,7 +959,7 @@ GET_RAMD_ST:
; ;
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
; RAM-Disk A, BLK - B ; RAM-Disk A, BLK - B
BLK_TO_RAMD: BLK_TO_RAMD:
CP SYS_PAGE.RAMD_KEYS.NUM CP SYS_PAGE.RAMD_KEYS.NUM
CCF CCF

View File

@ -391,39 +391,36 @@ REINIT: DEC B
; ;
;[x] ;[x]
.Restart: .Restart: DI
DI XOR A
LD A,0 LD BC,#1FFD
LD BC,#1FFD OUT (C),A
OUT (C),A LD B,#7F
LD B,#7F OUT (C),A
OUT (C),A OUT (RGADR),A
LD A,#40 OUT (RGMOD),A
OUT (SLOT3),A OUT (SLOT0),A
LD A,5 LD A,5
OUT (SLOT1),A OUT (SLOT1),A
LD A,2 LD A,2
OUT (SLOT3),A OUT (SLOT2),A
LD A,0 LD A,DCP_PAGE
OUT (SLOT0),A OUT (SLOT3),A
OUT (RGADR),A JP 0 ;Restart
OUT (RGMOD),A
JP 0 ;Restart
; ;
; ;
.SoftReset: .SoftReset: DI
DI LD A,#10
LD A,#10 LD BC,#1FFD
LD BC,#1FFD OUT (C),A ; 8-ï áâà ­¨æ  !!
OUT (C),A ; 8-ï áâà ­¨æ  !! ;
LD A,RESET_PAGE
LD A,RESET_PAGE OUT (SLOT3),A
OUT (SLOT3),A LD A,CNF_PORT.TURBO.OFF
LD A,CNF_PORT.TURBO.OFF OUT (SYS_PORT.ROM),A
OUT (SYS_PORT.ROM),A .loop2: LD (#C000),A ; Soft RESET !!!
.loop2: LD (#C000),A ; Soft RESET !!! JR .loop2
JR .loop2
; ;
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
; ;

View File

@ -63,8 +63,8 @@ FN_CRIPT:
; BoardID_start old address #312A ; BoardID_start old address #312A
; BoardID_end old address #312D ; BoardID_end old address #312D
.board_id: .board_id:
LD HL,(ROM_NUMBER.part1) ;rdlow-ok LD HL,(BOARD_INFO.number) ;rdlow-ok
LD A,(ROM_NUMBER.part2) ;rdlow-ok LD A,(BOARD_INFO.type) ;rdlow-ok
LD BC,(BoardID.start) ;rdlow-ok LD BC,(BoardID.start) ;rdlow-ok
LD DE,(BoardID.end) ;rdlow-ok LD DE,(BoardID.end) ;rdlow-ok
AND A AND A

View File

@ -811,7 +811,7 @@ RESCREEN: ;R06
; LD E,A ; LD E,A
; LD A,DCP_PAGE ; LD A,DCP_PAGE
; OUT (SLOT3),A ; OUT (SLOT3),A
; LD A,(#C400) ;c400 for first cfg 50176 ; !TODO ¬®¦­® ¯¥à¥¤¥« âì ­  ¢ë§®¢ ä㭪樨 ¡¨®á  ; LD A,(#C400) ;c400 for first cfg 50176
; LD D,A ; LD D,A
; LD A,ACEX.HOLD ; LD A,ACEX.HOLD
; LD (#C400),A ; LD (#C400),A
@ -1142,30 +1142,64 @@ PIDNUM: LD HL,memBUFFER.ID
CALL PRINTZ CALL PRINTZ
RET RET
PIDBOARD: PIDBOARD: CALL FN_CRIPT.board_id
CALL FN_CRIPT.board_id ;
IF MotherBoardType > 0
PUSH AF
ENDIF
PUSH DE
PUSH HL
PUSH BC
LD A,B
CALL PRNHEX
LD A,'-'
CALL PRINT_CHAR
POP BC
LD A,C
CALL PRNHEX
LD A,'-'
CALL PRINT_CHAR
POP HL
CALL IZPRINT
POP DE
PUSH DE
LD A,D
CALL PRNHEX
POP DE
LD A,E
IF MotherBoardType == 0
JP PRNHEX
ELSE
CALL PRNHEX
LD A,' '
CALL PRINT_CHAR
POP AF
; type 0 - Classic
RET Z
; type 1 - DX
LD HL,.ver_DX
DEC A
JP Z,PRINTZ
; type 2 - DP
LD HL,.ver_DP
DEC A
JP Z,PRINTZ
; type 3 - Max
LD HL,.ver_Max
DEC A
JP Z,PRINTZ
; type 4 - test
LD HL,.Test
DEC A
JP Z,PRINTZ
RET
;
.ver_DX: DZ "DX"
.ver_DP: DZ "DP"
.ver_Max: DZ "Max"
.Test DZ "0123456789A"
ENDIF
PUSH DE
PUSH HL
PUSH BC
LD A,B
CALL PRNHEX
LD A,'-'
CALL PRINT_CHAR
POP BC
LD A,C
CALL PRNHEX
LD A,'-'
CALL PRINT_CHAR
POP HL
CALL IZPRINT
POP DE
PUSH DE
LD A,D
CALL PRNHEX
POP DE
LD A,E
JP PRNHEX
CNF_VER_PRINT: CNF_VER_PRINT:
LD HL,memBUFFER.ID LD HL,memBUFFER.ID

View File

@ -259,7 +259,7 @@ SHOW_LOGO: LD IX,win_descriptor.tab320x256
SAFE_PORTY SAFE_PORTY
DI DI
LD A,1 LD A,SYS_PORT.PAGE0
OUT (SYS_PORT.ON),A OUT (SYS_PORT.ON),A
OUT (ROM.SLOT0),A OUT (ROM.SLOT0),A
@ -283,21 +283,12 @@ SHOW_LOGO: LD IX,win_descriptor.tab320x256
SAFE_PORTY SAFE_PORTY
DI DI
LD A,1 LD A,SYS_PORT.PAGE0
OUT (SYS_PORT.ON),A OUT (SYS_PORT.ON),A
;LD A,1
OUT (ROM.SLOT0),A OUT (ROM.SLOT0),A
LD HL,MAIN_LOGO.Raster ; ­ ç «® ª à⨭ª¨ ¢ ¡ ­ª¥ <20>‡“ LD HL,MAIN_LOGO.Raster ; ­ ç «® ª à⨭ª¨ ¢ ¡ ­ª¥ <20>‡“
; CALL DECODE ; CALL DECODE
CALL LOGO_TO_SCREEN CALL LOGO_TO_SCREEN
;
;--------------[<5B> áå «ª ]--------------[]
IF Pashalki
_PASHALKI_CODE
ENDIF
;--------------------------------------[]
;
XOR A XOR A
OUT (SYS_PORT.ON),A OUT (SYS_PORT.ON),A
OUT (ROM.SLOT0),A OUT (ROM.SLOT0),A

View File

@ -14,6 +14,7 @@ BIOS_ver_hex EQU EXP_ID.VER*256+EXP_ID.MOD
DEFINE BoardID_start #5283 DEFINE BoardID_start #5283
DEFINE BoardID_end #47E8 DEFINE BoardID_end #47E8
DEFINE MotherBoardID #0000 DEFINE MotherBoardID #0000
DEFINE MotherBoardType #00 ; !TODO 0 - Legacy, 1 - DX, 2 - Max
;======================================= ;=======================================
;============[For ROM part]============= ;!FIXIT ¢ë ­¥ ¯®­¨¬ ¥â¥, íâ® ¤à㣮¥)) ;============[For ROM part]============= ;!FIXIT ¢ë ­¥ ¯®­¨¬ ¥â¥, íâ® ¤à㣮¥))