This commit is contained in:
Anatoliy Belyanskiy 2023-08-30 22:39:07 +10:00
parent 1acf5f9a6a
commit 0c166ec49d
9 changed files with 186 additions and 214 deletions

@ -1 +1 @@
Subproject commit 5aa6ffff2b5879e26a8ccf0925c18223c76da539
Subproject commit cc23cc96bb8bb12432622cc688b2e1afe39c6105

View File

@ -1,130 +0,0 @@
6E 0000.00 0110 1110
7E 0000.00 0111 1110
EE 0000.00 1110 1110
FE 0000.00 1111 1110
16E 0000.01 0110 1110
17E 0000.01 0111 1110
1EE 0000.01 1110 1110
1FE 0000.01 1111 1110
and 0000.00 0110 1110
or 0000.01 1111 1110
notAnd 0011.11 1001 0001
xor^ 0011.10 0110 1111
; DATA FOR DCP
; ¢¡¨¢ ¥¬ ¢ â ¡«¨æã DCP.XLSX ­ã¦­ë© ¢­¥è­¨© ¯®àâ,
; ᬮâਬ ᬥ饭¨¥ ¤«ï OUT (),x - íâ®  ¤à¥á
;
; CCED/AAAAAAAAA
; NN1OW116517210
; FF2SR54 3
; CC EDWA AAAA AAAA
; NN 1O/1 1651 7210
; FF 2SR5 4 3
; 10 8
and 00 0000 0000 0111 - a1
or 11 1011 1001 0111 - o1
not a1 11 1111 1111 1000 - n1
n1 xor o1 00 0110 0110 1111
#10 ALTERA #1F external
; CS_WG93_1F ...0...00.0111
DW %00 0000 0000 0111 ; -  ¤à¥á
DW %00 0100 0110 1111 ; - ¬ áª  - 0 ¨§¬¥­ï¥¬ë¥ ¡¨âë, 1 ­¥¨§¬¥­ï¥¬ë¥
DB #10 ; - ¯®àâ
Altera #16
2D 00 0000 0010 1101
82D 00 1000 0010 1101
302D 11 0000 0010 1101
342D 11 0100 0010 1101
382D 11 1000 0010 1101
3C2D 11 1100 0010 1101
and 00 0000 0010 1101 - a1 adress
or 11 1100 0010 1101 - o1
not a1 11 1111 1101 0010 - n1
n1 xor o1 00 0011 1111 1111 mask
Altera #17
3D 00 0000 0011 1101
83D 00 1000 0011 1101
303D 11 0000 0011 1101
343D 11 0100 0011 1101
383D 11 1000 0011 1101
3C3D 11 1100 0011 1101
and 00 0000 0011 1101 - a1 adress
or 11 1100 0011 1101 - o1
not a1 11 1111 1100 0010 - n1
n1 xor o1 00 0011 1111 1111 mask
and 00 0000 0011 1101 - a1 adress
or 00 1000 0011 1101 - o1
not a1 11 1111 1100 0010 - n1
n1 xor o1 11 0111 1111 1111 mask
and 00 0000 0000 0000 - a1 adress
not a1 00 0000 0000 0000 - n1
or 00 0000 0000 0000 - o1
n1 xor o1 00 0000 0000 0000 mask
Found 48 occurrences of '29'.
4C5 00 0100 1100 0101
4D5 00 0100 1101 0101
6C5 00 0110 1100 0101
6D5 00 0110 1101 0101
CC5 00 1100 1100 0101
CD5 00 1100 1101 0101
EC5 00 1110 1100 0101
ED5 00 1110 1101 0101
34C5 11 0100 1100 0101
34D5 11 0100 1101 0101
36C5 11 0110 1100 0101
36D5 11 0110 1101 0101
3CC5 11 1100 1100 0101
3CD5 11 1100 1101 0101
3EC5 11 1110 1100 0101
3ED5 11 1110 1101 0101
and 11 0100 1100 0101 - a1 adress
not a1 00 1011 0011 1010 - n1
or 11 1110 1101 0101 - o1
n1 xor o1 11 0101 1110 1111 mask
Found 12 occurrences of '1b'.
12D 00 0001 0010 1101
52D 00 0101 0010 1101
92D 00 1001 0010 1101
D2D 00 1101 0010 1101
312D 11 0001 0010 1101
352D 11 0101 0010 1101
392D 11 1001 0010 1101
3D2D 11 1101 0010 1101
and 11 0001 0010 1101 - a1 adress
not a1 00 1110 1101 0010 - n1
or 11 1101 0010 1101 - o1
n1 xor o1 11 0011 1111 1111 mask
21BD 10 0001 1011 1101
23BD 10 0011 1011 1101
29BD 10 1001 1011 1101
2BBD 10 1011 1011 1101
and 10 0001 1011 1101 - a1 adress
not a1 01 1110 0100 0010 - n1
or 10 1011 1011 1101 - o1
n1 xor o1 11 0101 1111 1111 mask

View File

@ -129,9 +129,9 @@ CD_READ:
; 0Bh - ABORTED COMMAND
; 80h - TIME OUT
AP_COM: AND #01
LD A,#A0
LD A,IDE.Drive.Master
JR Z,.APCOM1
LD A,#B0
LD A,IDE.Drive.Slave
.APCOM1 LD BC,IDE.Write.DeviceHead
OUT (C),A ;SELECT DRIVE
EXX
@ -183,7 +183,7 @@ AP_COM: AND #01
LD BC,IDE.Write.CylinderHigh
OUT (C),D
LD BC,IDE.Write.Command
LD A,#A0
LD A,IDE.ATAPI.Packet
OUT (C),A
LD DE,#8000
;LD BC,IDE.Read.Status

View File

@ -678,7 +678,7 @@ CHS005: INC A
//; BC - PORT
WAITPRT:
LD BC,IDE.Read.Status
LD HL,#0000 ; § ¤¥à¦ª 
LD HL,#0000 ; § ¤¥à¦ª  ;!HARDCODE
.loop: PUSH HL

View File

@ -1,7 +1,7 @@
;
MACRO WAIT_HDD
.loop: LD BC,IDE.Read.Status
IN A,(C)
LD BC,IDE.Read.Status
.loop: IN A,(C)
BIT IDE.ControlBit.Busy,A
JR NZ,.loop
ENDM
@ -128,7 +128,7 @@ NEXT_ADD_SEC:
AND #F0
OR E
INC B
OUT (C),A ; ????? HEADS?! IDE.Write.DeviceHead
OUT (C),A ; IDE.Write.DeviceHead
POP AF
RET
@ -328,7 +328,7 @@ HD_WR_LOOP:
JR HD_WR_L2
FN_HDD_RECAL:
LD A,#A0
LD A,IDE.Drive.Master
LD BC,IDE.Write.DeviceHead
OUT (C),A
LD A,IDE.ATA.ExecuteDeviceDiagnostic
@ -443,7 +443,7 @@ TEST_HDD_DRV:
FN_HDD_INIT:
LD BC,IDE.Write.DeviceHead
LD A,#A0
LD A,IDE.Drive.Master
OUT (C),A
CALL TEST_HDD_DRV
JR NZ,HD_ABSENT
@ -503,7 +503,7 @@ HD_C0_L2:
OR B
LD H,A
LD A,(SYS_PAGE.HD_IDF_ADR+99) ; ????? LBA?
LD A,(SYS_PAGE.HD_IDF_ADR+99) ; !HARDCODE ç¥à¥§ áâàãªâãàã!
BIT 1,A
JR Z,HD_C0_NO_LBA
SET 6,H

View File

@ -527,20 +527,20 @@ CLS_WIN:CALL LP_BEG_P
CALL LP_TAB_E
PUSH DE
EXX
LD BC,(SYS_PAGE.SYS_WORK1)
LD BC,(SYS_PAGE.SYS_WORK1)
EXX
LD B,L
LD A,#50
OUT (SLOT3),A
.loop2: EXX
LD A,D
OUT (PORT_Y),A
LD (HL),C
INC L
LD (HL),B
DEC L
INC D
LD A,D
OUT (PORT_Y),A
LD (HL),C
INC L
LD (HL),B
DEC L
INC D
EXX
DJNZ .loop2

View File

@ -94,21 +94,12 @@ WAIT_IDE EQU #0000
WAIT_SML EQU #1000
WAIT_ERROR EQU #0400
IDE__CD:
CALL SELECT_IDE
;MASTER
CDAUTO:
LD A,IDE.Device.CDROM
LD (IDEDEV),A
LD A,#FF ;!FIXIT ¬®¦­® ®¯â¨¬¨§¨à®¢ âì
JP CDMASTR
SELECT_IDE:
AND A ;%0000'0011
LD D,IDE.Drive.Master
JR Z,.AUTO_0
DEC A
LD D,#B0
LD D,IDE.Drive.Slave
JR Z,.AUTO_0
DEC A
;R00
@ -132,7 +123,22 @@ SELECT_IDE:
;
RET
IDE__CD:
CALL SELECT_IDE
;MASTER
CDAUTO:
LD A,IDE.Device.CDROM
LD (IDEDEV),A
LD A,#FF ;!FIXIT ¬®¦­® ®¯â¨¬¨§¨à®¢ âì
JP CDMASTR
IDEAUTO:
;Disable 8-bit data transfer
;!TODO
;
CALL SELECT_IDE
LD A,IDE.Device.NONE
LD (IDEDEV),A
@ -261,10 +267,14 @@ WXREADY:
JP Z,ABSENT
CALL SKIPKEY
JP C,ABSENT
;LD BC,IDE.Read.Status
LD BC,IDE.Read.Status
IN A,(C)
AND #C0
CP #40
;!TEST detect drives
;AND #C0
;CP #40
AND #81
CP 1
;
JR NZ,WXREADY
; LD A,#90 ;?????
@ -295,7 +305,10 @@ GETPARM:
INIR
INIR
CALL IDESPEC
AND A
;!TEST save hdd parameters to cmos for "setup" in settings
CALL SaveToCMOS
;
.exit: AND A
RET
Non_ATA: LD A,IDE.Device.CDROM
@ -324,6 +337,17 @@ IDESPEC:
LD (IY+IDE.HDD_INIT_TABLE.DriveType),A
CP IDE.Device.CDROM
JP Z,FOR_CDR
;Check write caching
LD A,(TEMP+85*2) ; !TODO ᤥ« âì ç¥à¥§ áâàãªâãàã. ‚ª«î祭 «¨ ªíè § ¯¨á¨?
AND %0010'0000
JR Z,.NoWriteCache
;Disable write caching
LD BC,IDE.Write.Features
LD A,IDE.ATA.SetFeatures.DisableWriteCache
OUT (C),A
LD A,IDE.ATA.SetFeatures
CALL IDE_CMD
.NoWriteCache:
LD BC,IDE.Read.Control
IN A,(C)
AND #F0
@ -361,8 +385,9 @@ NONLBA: LD A,B
; RET C
LD C,(IY+IDE.HDD_INIT_TABLE.SectorsPerTrack) ; Sector per track
LD B,0
LD H,B
LD L,B
LD A,(IY+IDE.HDD_INIT_TABLE.HeadsNumber) ; Head per HDD
LD HL,0
HDDINI3:
ADD HL,BC
DEC A
@ -370,6 +395,9 @@ HDDINI3:
LD (IY+IDE.HDD_INIT_TABLE.SectorsPerCylinderLow),L
LD (IY+IDE.HDD_INIT_TABLE.SectorsPerCylinderHigh),H
NOSPEC:
;!TEST save hdd parameters to cmos for "setup" in settings
LD A,(IY+IDE.HDD_INIT_TABLE.DRV_Flags) ; for save to cmos in GETPARM
;
EX AF,AF'
OUT (SLOT3),A
AND A
@ -388,7 +416,6 @@ IDE_CMD:
PUSH AF
LD HL,WAIT_IDE
LD DE,#C040
;LD BC,IDE.Read.Status
CALL WAIT_PRT
POP DE
RET C
@ -396,12 +423,11 @@ IDE_CMD:
OUT (C),D
LD HL,WAIT_IDE
LD DE,#C040
;LD BC,IDE.Read.Status
JP WAIT_PRT
WAITHDD:
EI
LD HL,1533
LD HL,1533 ;!HARDCODE HDD
WTREADY:
HALT
LD BC,IDE.Read.Status
@ -458,6 +484,50 @@ SKIPKEY:
SCF
RET
;!TEST save hdd parameters to cmos for "setup" in settings
; IN: A' = DRV_Flags
SaveToCMOS:
LD A,(IDEDEV)
CP IDE.Device.HDD
RET NZ
EX AF,AF'
;LD A,(IY+IDE.HDD_INIT_TABLE.DRV_Flags)
AND %0001'0001
LD IX,PRIM_MASTER_CMOS_T
JR Z,.save_to_cmos
;
DEC A
LD IX,SEC_MASTER_CMOS_T
JR Z,.save_to_cmos
;
CP %0001'0000
LD IX,SEC_SLAVE_CMOS_T
JR Z,.save_to_cmos
;
LD IX,PRIM_SLAVE_CMOS_T
.save_to_cmos:
LD HL,(TEMP+1*2)
LD B,L
LD A,(IX+0)
CALL WRITCMS ; Cylinder low
LD B,H
LD A,(IX+1)
CALL WRITCMS ; Cylinder high
LD A,(TEMP+3*2)
LD B,A
LD A,(IX+2)
CALL WRITCMS ; Heads
LD A,(TEMP+6*2)
LD B,A
LD A,(IX+3)
JP WRITCMS ; Heads
;;;;;;;;;;
SKIP: DB #FF
IDEDEV: DB #FF
ICHANEL: DB #00

View File

@ -74,25 +74,46 @@
;!!!!!!!!!!!!!!!!!!!!!!
; !FIXIT ¯à®¢¥à¨âì â ª¨¥ ¦¥ «¨  ¤à¥á  CMOS ¢ Settings ¨á¯®«ì§ãîâáï
SM_CYLL EQU #2F
SM_CYLH EQU #30
SM_HEAD EQU #31
SM_SECT EQU #32
; SM_CYLL EQU #2F
; SM_CYLH EQU #30
; SM_HEAD EQU #31
; SM_SECT EQU #32
SS_CYLL EQU #33
SS_CYLH EQU #34
SS_HEAD EQU #35
SS_SECT EQU #36
; SS_CYLL EQU #33
; SS_CYLH EQU #34
; SS_HEAD EQU #35
; SS_SECT EQU #36
M_CYLL EQU #37
M_CYLH EQU #38
M_HEAD EQU #39
M_SECT EQU #3A
; M_CYLL EQU #37
; M_CYLH EQU #38
; M_HEAD EQU #39
; M_SECT EQU #3A
; S_CYLL EQU #3B
; S_CYLH EQU #3C
; S_HEAD EQU #3D
; S_SECT EQU #3E
M_CYLL EQU #12
M_CYLH EQU #13
M_HEAD EQU #14
M_SECT EQU #15
S_CYLL EQU #16
S_CYLH EQU #17
S_HEAD EQU #18
S_SECT EQU #19
SM_CYLL EQU #37
SM_CYLH EQU #38
SM_HEAD EQU #39
SM_SECT EQU #3A
SS_CYLL EQU #3B
SS_CYLH EQU #3C
SS_HEAD EQU #3D
SS_SECT EQU #3E
S_CYLL EQU #3B
S_CYLH EQU #3C
S_HEAD EQU #3D
S_SECT EQU #3E
;!!!!!!!!!!!!!!!!!!!!!!
@ -1101,10 +1122,11 @@ AUTODET:
OUT (SLOT3),A
LD HL,IDE.INIT_TBL_IDE0
LD BC,256*(IDE.HDD_INIT_TABLE * 4) + #FF ;R02
FILLIDE:
LD (HL),C ;CLEAR HDD VARIABLE
;CLEAR HDD VARIABLE
.FILLIDE:
LD (HL),C
INC HL
DJNZ FILLIDE
DJNZ .FILLIDE
EX AF,AF'
OUT (SLOT3),A
@ -1127,7 +1149,7 @@ FILLIDE:
;==========================================
LD IY,IDE.INIT_TBL_IDE0
LD A,#00
XOR A
CALL COMMONIDE
LD IY,IDE.INIT_TBL_IDE1
@ -1142,6 +1164,9 @@ FILLIDE:
LD A,#03
CALL COMMONIDE
;!TEST save hdd parameters to cmos for "setup" in settings
CALL WRITING
;
CALL ScreenPOS.CRLF
RET
;
@ -1260,14 +1285,17 @@ SEC_SLAVE_CMOS_T:
SETUPDETECT:
LD A,H
LD IX,PRIM_MASTER_CMOS_T
CP 0
OR A
JR Z,SETUPD2
;
LD IX,PRIM_SLAVE_CMOS_T
CP 1
JR Z,SETUPD2
;
LD IX,SEC_MASTER_CMOS_T
CP 2
JR Z,SETUPD2
;
LD IX,SEC_SLAVE_CMOS_T
SETUPD2:
CALL SELECT_IDE
@ -1278,23 +1306,28 @@ SETUPD2:
LDIR
CALL WAITHDD
RET C
;;
LD A,(IX+2) ;M_HEAD
CALL READCMS
LD (TEMP+#06),A ; !TODO ᤥ<><E1A4A5><EFBFBD><EFBFBD> <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. HEADS PER TRACK
LD (TEMP+3*2),A ; !TODO ᤥ<><E1A4A5><EFBFBD><EFBFBD> <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. HEADS PER TRACK
;
LD A,(IX+1) ;M_CYLH
CALL READCMS
PUSH AF
;
LD A,(IX+0) ;M_CYLL
CALL READCMS
POP HL
LD L,A
LD (TEMP+#02),HL ; !TODO ᤥ<><E1A4A5><EFBFBD><EFBFBD> <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. CYLINDERS
LD (TEMP+1*2),HL ; !TODO ᤥ<><E1A4A5><EFBFBD><EFBFBD> <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. CYLINDERS
;
LD A,(IX+3) ;M_SECT
CALL READCMS
LD (TEMP+#0C),A ; !TODO ᤥ<><E1A4A5><EFBFBD><EFBFBD> <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. SECTOR PER TRACK
LD A,#A0
LD BC,IDE.Write.DeviceHead
OUT (C),A
LD (TEMP+6*2),A ; !TODO ᤥ<><E1A4A5><EFBFBD><EFBFBD> <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. SECTOR PER TRACK
;
;LD A,IDE.Drive.Master
;LD BC,IDE.Write.DeviceHead
;OUT (C),A
LD A,IDE.Device.HDD
LD (IDEDEV),A
CALL IDESPEC

View File

@ -1,8 +1,8 @@
;U_SETUP:
SETTINGS:
LD A,#1A ; !HARDCODE
LD A,CMOS.Cell.ScreenSET
CALL READCMS
AND #0F
AND CMOS.Cell.ScreenSET.Mask.ColorStyle
LD L,A
CALL CSET
LD DE,0
@ -248,13 +248,13 @@ DECITM:
JP PCURSOR
CCHANGE:
LD A,#1A
LD A,CMOS.Cell.ScreenSET
CALL READCMS
INC A
AND #0F
AND CMOS.Cell.ScreenSET.Mask.ColorStyle
LD L,A
LD B,A
LD A,#1A
LD A,CMOS.Cell.ScreenSET
CALL WRITCMS
CSET:
LD H,0
@ -545,7 +545,7 @@ PITEM: LD E,(IY+MenusItem.Column) ; x-coor
JR NZ,.printParameter ; ¥á«¨ íâ® ­¥ áâப  á ¨§¬¥­ï¥¬ë¬ ¯ à ¬¥â஬, â® ¯à®áâ® ¯¥ç âì
LD A,(IY+MenusItem.CMOSreg) ; address of next parametr
CALL READCMS ; read item`s value from cmos
CALL READCMS ; read item`s value from cmos
LD B,(IY+MenusItem.ValueMask) ; item's value mask
AND B
@ -573,7 +573,6 @@ PITEM: LD E,(HL) ; x-coordinate
LD D,(HL) ; y-coordinate
INC HL ; address of next parametr
PUSH HL
;CALL ScreenPOS.LOCAT
CALL LP_SET_PLACE ; set position of item
LD A,(HL)
CALL POSTMSG
@ -657,7 +656,7 @@ CHEKSUM:
TCHEKSM:
CALL CHEKSUM
LD A,#3F ;!HARDCODE
LD A,#3F ; !HARDCODE CMOS
CALL READCMS
CP H
RET
@ -676,7 +675,7 @@ TCHEKSM:
; JP_to_BIOS
READING:
LD D,#0E ; !HARDCODE CMOS
LD D,CMOS.USED_MIN_ADDRESS
.loop: PUSH DE
CALL CMOS_RD
POP DE
@ -692,9 +691,9 @@ READING:
WRITING:
CALL CHEKSUM
LD B,H
LD A,#3F
LD A,CMOS.Cell.CheckSum
CALL WRITCMS
LD D,#0E ; !HARDCODE CMOS
LD D,CMOS.USED_MIN_ADDRESS ; !HARDCODE CMOS
.loop:
LD H,high CMOSARE
LD L,D
@ -710,7 +709,7 @@ WRITING:
RET
SETDEFX:
LD A,#FF
LD A,#FF
LD (ERRSUM),A
CALL SETDEF
JP WRITING
@ -718,7 +717,7 @@ SETDEFX:
SETDEF: ;!TODO ¬®¦¥â ¡ å­ãâì LDIR®¬? ¯®á¬®âà¥âì
LD HL,DEFVAL
LD C,DEFVAL.Size
LD A,#0E ; !HARDCODE CMOS c¬¥é¥­¨¥ ¢ â ¡«¨æ¥ ¤® ï祥ª ¯ ¬ïâ¨
LD A,CMOS.USED_MIN_ADDRESS
.loop:
LD B,(HL)
INC HL
@ -729,17 +728,17 @@ SETDEF: ;!TODO
DEC C
JR NZ,.loop
;REGISTER #35 - BASIC SETTING 1
LD A,#35
LD A,#35 ;!HARDCODE cmos
LD B,#00
CALL WRITCMS
;REGISTER #36 - BASIC SETTING 2
LD A,#36
LD A,#36 ;!HARDCODE cmos
LD B,#00
CALL WRITCMS
CALL CHEKSUM
LD B,H
LD A,#3F
LD A,CMOS.Cell.CheckSum
CALL WRITCMS
RET
@ -827,9 +826,9 @@ setXYpos:
JP RESCREEN
setVsinc:
ld a,@CMOS.Cell.ScreenSET
ld a,CMOS.Cell.ScreenSET
call READCMS
and @CMOS.Cell.ScreenSET.Mask.Sinc
and CMOS.Cell.ScreenSET.Mask.Sinc
SCF
jr z,.skip ;320
SLA A
@ -844,9 +843,9 @@ setLang:
ld (ITEM_Restore),a
pop hl ; delete return adress from stack
jp SETTINGS
setInt: ld a,@CMOS.Cell.ScreenSET
setInt: ld a,CMOS.Cell.ScreenSET
call READCMS
and @CMOS.Cell.ScreenSET.Mask.Int
and CMOS.Cell.ScreenSET.Mask.Int
jr nz,.skipDefaultInt
ld a,2 ; Pentagon sync - default
jr .set