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

View File

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

View File

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

View File

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

View File

@ -94,21 +94,12 @@ WAIT_IDE EQU #0000
WAIT_SML EQU #1000 WAIT_SML EQU #1000
WAIT_ERROR EQU #0400 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: SELECT_IDE:
AND A ;%0000'0011 AND A ;%0000'0011
LD D,IDE.Drive.Master LD D,IDE.Drive.Master
JR Z,.AUTO_0 JR Z,.AUTO_0
DEC A DEC A
LD D,#B0 LD D,IDE.Drive.Slave
JR Z,.AUTO_0 JR Z,.AUTO_0
DEC A DEC A
;R00 ;R00
@ -132,7 +123,22 @@ SELECT_IDE:
; ;
RET RET
IDE__CD:
CALL SELECT_IDE
;MASTER
CDAUTO:
LD A,IDE.Device.CDROM
LD (IDEDEV),A
LD A,#FF ;!FIXIT ¬®¦­® ®¯â¨¬¨§¨à®¢ âì
JP CDMASTR
IDEAUTO: IDEAUTO:
;Disable 8-bit data transfer
;!TODO
;
CALL SELECT_IDE CALL SELECT_IDE
LD A,IDE.Device.NONE LD A,IDE.Device.NONE
LD (IDEDEV),A LD (IDEDEV),A
@ -261,10 +267,14 @@ WXREADY:
JP Z,ABSENT JP Z,ABSENT
CALL SKIPKEY CALL SKIPKEY
JP C,ABSENT JP C,ABSENT
;LD BC,IDE.Read.Status LD BC,IDE.Read.Status
IN A,(C) IN A,(C)
AND #C0 ;!TEST detect drives
CP #40 ;AND #C0
;CP #40
AND #81
CP 1
;
JR NZ,WXREADY JR NZ,WXREADY
; LD A,#90 ;????? ; LD A,#90 ;?????
@ -295,7 +305,10 @@ GETPARM:
INIR INIR
INIR INIR
CALL IDESPEC CALL IDESPEC
AND A ;!TEST save hdd parameters to cmos for "setup" in settings
CALL SaveToCMOS
;
.exit: AND A
RET RET
Non_ATA: LD A,IDE.Device.CDROM Non_ATA: LD A,IDE.Device.CDROM
@ -324,6 +337,17 @@ IDESPEC:
LD (IY+IDE.HDD_INIT_TABLE.DriveType),A LD (IY+IDE.HDD_INIT_TABLE.DriveType),A
CP IDE.Device.CDROM CP IDE.Device.CDROM
JP Z,FOR_CDR 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 LD BC,IDE.Read.Control
IN A,(C) IN A,(C)
AND #F0 AND #F0
@ -361,8 +385,9 @@ NONLBA: LD A,B
; RET C ; RET C
LD C,(IY+IDE.HDD_INIT_TABLE.SectorsPerTrack) ; Sector per track LD C,(IY+IDE.HDD_INIT_TABLE.SectorsPerTrack) ; Sector per track
LD B,0 LD B,0
LD H,B
LD L,B
LD A,(IY+IDE.HDD_INIT_TABLE.HeadsNumber) ; Head per HDD LD A,(IY+IDE.HDD_INIT_TABLE.HeadsNumber) ; Head per HDD
LD HL,0
HDDINI3: HDDINI3:
ADD HL,BC ADD HL,BC
DEC A DEC A
@ -370,6 +395,9 @@ HDDINI3:
LD (IY+IDE.HDD_INIT_TABLE.SectorsPerCylinderLow),L LD (IY+IDE.HDD_INIT_TABLE.SectorsPerCylinderLow),L
LD (IY+IDE.HDD_INIT_TABLE.SectorsPerCylinderHigh),H LD (IY+IDE.HDD_INIT_TABLE.SectorsPerCylinderHigh),H
NOSPEC: 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' EX AF,AF'
OUT (SLOT3),A OUT (SLOT3),A
AND A AND A
@ -388,7 +416,6 @@ IDE_CMD:
PUSH AF PUSH AF
LD HL,WAIT_IDE LD HL,WAIT_IDE
LD DE,#C040 LD DE,#C040
;LD BC,IDE.Read.Status
CALL WAIT_PRT CALL WAIT_PRT
POP DE POP DE
RET C RET C
@ -396,12 +423,11 @@ IDE_CMD:
OUT (C),D OUT (C),D
LD HL,WAIT_IDE LD HL,WAIT_IDE
LD DE,#C040 LD DE,#C040
;LD BC,IDE.Read.Status
JP WAIT_PRT JP WAIT_PRT
WAITHDD: WAITHDD:
EI EI
LD HL,1533 LD HL,1533 ;!HARDCODE HDD
WTREADY: WTREADY:
HALT HALT
LD BC,IDE.Read.Status LD BC,IDE.Read.Status
@ -458,6 +484,50 @@ SKIPKEY:
SCF SCF
RET 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 SKIP: DB #FF
IDEDEV: DB #FF IDEDEV: DB #FF
ICHANEL: DB #00 ICHANEL: DB #00

View File

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

View File

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