Commit fb297c9b authored by Kevin Bracey's avatar Kevin Bracey
Browse files

* Meaning of FEIOSpeedHalf was accidentally inverted.

* Wasn't allowing writes to most of EEPROM.
* Old prototype OS_SetTime SWI code removed.
* MPEGPoduleNTSCNotPALMask option support removed to simplify things a bit.
* Now can cope with a system with a PAL/NTSC link, but no monitor detect line.
* Default PAL & NTSC modes now always 12 & 46 respectively.
* Kernel now knows about monitor type 8 (NTSC) - modes 44-46 (640x200) are
  available.
* STB/NC CMOS test removed from POST pending further investigation.

Version 4.90. Tagged as 'Kernel-4_90'
parent dc5f8390
...@@ -122,6 +122,9 @@ DontShowProgressColours SETL {TRUE} :LAND: STB ; Do not show the progress colou ...@@ -122,6 +122,9 @@ DontShowProgressColours SETL {TRUE} :LAND: STB ; Do not show the progress colou
; Progress Colours will always be shown when using POST Box. ; Progress Colours will always be shown when using POST Box.
; Set to true for NC - Fault Report ANC-00159. ; Set to true for NC - Fault Report ANC-00159.
GBLL DontDoCMOSTest
DontDoCMOSTest SETL {TRUE} :LAND: STB
ts_Rom_bits * 21 ; Widest ROM address ts_Rom_bits * 21 ; Widest ROM address
...@@ -1089,6 +1092,9 @@ ts_IOEBtest ...@@ -1089,6 +1092,9 @@ ts_IOEBtest
ts_CMOStest ts_CMOStest
[ DontDoCMOSTest
B ts_IOinit
|
ADR r4,%FT1 ADR r4,%FT1
BL ts_SendText BL ts_SendText
...@@ -1264,6 +1270,8 @@ ts_CMOStest ...@@ -1264,6 +1270,8 @@ ts_CMOStest
25 25
B ts_IOinit B ts_IOinit
] ; DontDoCMOSTest
LTORG LTORG
ROUT ROUT
; ;
......
...@@ -6,9 +6,9 @@ ...@@ -6,9 +6,9 @@
GBLS Module_MinorVersion GBLS Module_MinorVersion
GBLS Module_Date GBLS Module_Date
GBLS Module_FullVersion GBLS Module_FullVersion
Module_MajorVersion SETS "4.89" Module_MajorVersion SETS "4.90"
Module_Version SETA 489 Module_Version SETA 490
Module_MinorVersion SETS "" Module_MinorVersion SETS ""
Module_Date SETS "23 Sep 1999" Module_Date SETS "29 Sep 1999"
Module_FullVersion SETS "4.89" Module_FullVersion SETS "4.90"
END END
/* (4.89) /* (4.90)
* *
* This file is automatically maintained by srccommit, do not edit manually. * This file is automatically maintained by srccommit, do not edit manually.
* *
*/ */
#define Module_MajorVersion_CMHG 4.89 #define Module_MajorVersion_CMHG 4.90
#define Module_MinorVersion_CMHG #define Module_MinorVersion_CMHG
#define Module_Date_CMHG 23 Sep 1999 #define Module_Date_CMHG 29 Sep 1999
#define Module_MajorVersion "4.89" #define Module_MajorVersion "4.90"
#define Module_Version 489 #define Module_Version 490
#define Module_MinorVersion "" #define Module_MinorVersion ""
#define Module_Date "23 Sep 1999" #define Module_Date "29 Sep 1999"
#define Module_FullVersion "4.89" #define Module_FullVersion "4.90"
...@@ -966,15 +966,15 @@ init7500FEcpu ...@@ -966,15 +966,15 @@ init7500FEcpu
; ;
[ FECPUSpeedNormal [ FECPUSpeedNormal
[ FEIOSpeedHalf [ FEIOSpeedHalf
MOV r0, #IOMD_CLKCTL_CpuclkNormal + IOMD_CLKCTL_MemclkNormal + IOMD_CLKCTL_IOclkNormal
|
MOV r0, #IOMD_CLKCTL_CpuclkNormal + IOMD_CLKCTL_MemclkNormal + IOMD_CLKCTL_IOclkHalf MOV r0, #IOMD_CLKCTL_CpuclkNormal + IOMD_CLKCTL_MemclkNormal + IOMD_CLKCTL_IOclkHalf
|
MOV r0, #IOMD_CLKCTL_CpuclkNormal + IOMD_CLKCTL_MemclkNormal + IOMD_CLKCTL_IOclkNormal
] ]
| |
[ FEIOSpeedHalf [ FEIOSpeedHalf
MOV r0, #IOMD_CLKCTL_CpuclkHalf + IOMD_CLKCTL_MemclkNormal + IOMD_CLKCTL_IOclkNormal
|
MOV r0, #IOMD_CLKCTL_CpuclkHalf + IOMD_CLKCTL_MemclkNormal + IOMD_CLKCTL_IOclkHalf MOV r0, #IOMD_CLKCTL_CpuclkHalf + IOMD_CLKCTL_MemclkNormal + IOMD_CLKCTL_IOclkHalf
|
MOV r0, #IOMD_CLKCTL_CpuclkHalf + IOMD_CLKCTL_MemclkNormal + IOMD_CLKCTL_IOclkNormal
] ]
] ]
] ]
......
...@@ -970,7 +970,7 @@ reset_loop ...@@ -970,7 +970,7 @@ reset_loop
; Oh, just leave it be ; Oh, just leave it be
MOV R0, #VduCMOS MOV R0, #VduCMOS
BL Read BL Read
[ IOMD_C_MonitorType = 0 :LAND: MPEGPoduleNTSCNotPALMask = 0 :LAND: IOMD_C_PALNTSCType = 0 [ IOMD_C_MonitorType = 0 :LAND: IOMD_C_PALNTSCType = 0
; Force TV if we don't have a MonitorType auto-detect bit ; Force TV if we don't have a MonitorType auto-detect bit
TEQ R0, #(Sync_Separate :OR: MonitorType0) TEQ R0, #(Sync_Separate :OR: MonitorType0)
| |
...@@ -1237,7 +1237,7 @@ DefaultCMOSTable ; list of non-zero options wanted : ...@@ -1237,7 +1237,7 @@ DefaultCMOSTable ; list of non-zero options wanted :
= DBTBCMOS, (1:SHL:4) ; Boot = DBTBCMOS, (1:SHL:4) ; Boot
= YearCMOS, 97 = YearCMOS, 97
= YearCMOS+1, 19 = YearCMOS+1, 19
[ IOMD_C_MonitorType = 0 :LAND: MPEGPoduleNTSCNotPALMask = 0 :LAND: IOMD_C_PALNTSCType = 0 [ IOMD_C_MonitorType = 0 :LAND: IOMD_C_PALNTSCType = 0
; TV if we don't have a MonitorType auto-detect bit ; TV if we don't have a MonitorType auto-detect bit
= VduCMOS, Sync_Separate :OR: MonitorType0 = VduCMOS, Sync_Separate :OR: MonitorType0
| |
......
...@@ -463,7 +463,7 @@ Write ...@@ -463,7 +463,7 @@ Write
MOV R14, #0 ; don't write to protected section MOV R14, #0 ; don't write to protected section
LDRB R14, [R14, #NVRamWriteSize] LDRB R14, [R14, #NVRamWriteSize]
CMP R0, R14 ; (note assumption that NVRamWriteSize is CMP R0, R14, LSL #8 ; (note assumption that NVRamWriteSize is
Pull "R0-R4, PC", HS ; outside mangled region). Pull "R0-R4, PC", HS ; outside mangled region).
MOV R2, R0 MOV R2, R0
...@@ -542,6 +542,7 @@ WriteBlock ROUT ...@@ -542,6 +542,7 @@ WriteBlock ROUT
MOV R14, #0 MOV R14, #0
LDRB R4, [R14, #NVRamWriteSize] LDRB R4, [R14, #NVRamWriteSize]
LDRB R14, [R14, #NVRamSize] LDRB R14, [R14, #NVRamSize]
MOV R4, R4, LSL #8
| |
LDRB R14, NVSize LDRB R14, NVSize
MOV R4, R14 MOV R4, R14
...@@ -1320,38 +1321,6 @@ MakeChecksum ROUT ...@@ -1320,38 +1321,6 @@ MakeChecksum ROUT
LTORG LTORG
; *****************************************************************************
;
; OS_SetTime - Set the real-time clock
;
; in: R0 = pointer to 5 byte UTC time
;
; out: R0 preserved
;
SetTimeSWI ROUT
Push "R0-R8"
SUB SP, SP, #36
MOV R1, R0
MOV R2, SP
SWI XTerritory_ConvertTimeToUTCOrdinals
ADDVS SP, SP, #36+4
Pull "R1-R8", VS
ExitSWIHandler VS
LDR R8, [SP], #4 ; centiseconds
LDR R7, [SP], #4 ; seconds
LDR R1, [SP], #4 ; minutes
Pull "R0,R2,R3,R5" ; hours, day, month, year
ADD SP, SP, #8 ; junk day of week and year
MOV R4, #100
DivRem R6, R5, R4, R14 ; R5 = year (lo), R6 = year (hi)
BL SetTime
STRVS R0,[SP]
Pull "R0-R8"
ExitSWIHandler
; ***************************************************************************** ; *****************************************************************************
; ;
; SetTime - Write the CMOS clock time and update 5-byte RealTime ; SetTime - Write the CMOS clock time and update 5-byte RealTime
......
...@@ -683,33 +683,23 @@ ReadMachineType ENTRY "r0-r12" ...@@ -683,33 +683,23 @@ ReadMachineType ENTRY "r0-r12"
MOVEQ r2, #&FF ; then return all ones for monitor lead type MOVEQ r2, #&FF ; then return all ones for monitor lead type
BEQ %FT90 BEQ %FT90
[ MPEGPoduleNTSCNotPALMask <> 0
! 1, "Sorry, I don't do MPEGPoduleNTSCNotPALMask any more"
]
[ STB [ STB
LDR r0, =VIDC ; on VIDC20 we invert HSYNC by writing to External Register LDR r0, =VIDC ; on VIDC20 we invert HSYNC by writing to External Register
[ MorrisSupport ; On Morris, monitor auto-detect has been moved to IOMD_CLINES [ MorrisSupport ; On Morris, monitor auto-detect has been moved to IOMD_CLINES
TST R11, #IOST_7500 [ IOMD_C_MonitorType <> 0
LDREQ r3, =IOMD_MonitorType ; Not Morris, address is in old place
[ IOMD_C_MonitorType = 0 ; Monitor auto-detect not supported:
[ MPEGPoduleNTSCNotPALMask <> 0
BEQ %FT15 ; not an IOMD-style machine, so skip any STB stuff
LDR r3, =MPEGPoduleNTSCNotPALAddress ; point at podule status register
LDRB r2, [r3]
TST r2, #MPEGPoduleNTSCNotPALMask ; test PAL/NTSC bit
MOVEQ r2, #4_0331 ; if bit clear then PAL TV
MOVNE r2, #4_1331 ; if bit set then NTSC TV
B %FT90
15
|
MOVNE r2, #&FF ; then return all ones for monitor lead type
BNE %FT90
]
|
ASSERT (IOMD_C_MonitorType = (1<<0)) ; this code only understands auto-detect in bit 0 ASSERT (IOMD_C_MonitorType = (1<<0)) ; this code only understands auto-detect in bit 0
LDRNE r3, =(IOMD_Base + IOMD_CLINES)
] ]
TST R11, #IOST_7500
LDREQ r3, =IOMD_MonitorType ; Not Morris, address is in old place
LDRNE r3, =(IOMD_Base + IOMD_CLINES)
| |
LDR r3, =IOMD_MonitorType LDR r3, =IOMD_MonitorType
] ] ; MorrisSupport
LDR r1, =VIDCExternal+Ext_InvertCompVSYNC+Ext_DACsOn+Ext_ERegExt ; normal HSYNC value LDR r1, =VIDCExternal+Ext_InvertCompVSYNC+Ext_DACsOn+Ext_ERegExt ; normal HSYNC value
STR r1, [r0] STR r1, [r0]
...@@ -769,7 +759,7 @@ ReadMachineType ENTRY "r0-r12" ...@@ -769,7 +759,7 @@ ReadMachineType ENTRY "r0-r12"
BL CheckBits ; call check routine with second value BL CheckBits ; call check routine with second value
SUBS r12, r12, #1 SUBS r12, r12, #1
BNE %BT20 BNE %BT20
| | ; STB
[ VIDC_Type = "VIDC20" [ VIDC_Type = "VIDC20"
LDR r0, =VIDC ; on VIDC20 we invert HSYNC by writing to External Register LDR r0, =VIDC ; on VIDC20 we invert HSYNC by writing to External Register
...@@ -853,7 +843,7 @@ ReadMachineType ENTRY "r0-r12" ...@@ -853,7 +843,7 @@ ReadMachineType ENTRY "r0-r12"
] ] ; STB
; now process result ; now process result
...@@ -980,17 +970,19 @@ TranslateMonitorLeadType ENTRY "r0-r2" ...@@ -980,17 +970,19 @@ TranslateMonitorLeadType ENTRY "r0-r2"
MonitorLeadList MonitorLeadList
[ STB [ STB
[ IOMD_C_MonitorType = 0 ; no auto-detect bit [ IOMD_C_MonitorType = 0 ; no auto-detect bit
[ MPEGPoduleNTSCNotPALMask <> 0 [ IOMD_C_PALNTSCType = 0 ; no PAL/NTSC bits:
MonitorLeadItem 4_0331, 50, 0, 0 ; PAL TV interlaced overscanned MonitorLeadItem 4_3333, 12, 0, 1 ; PAL TV assumed
MonitorLeadItem 4_1331, 58, 8, 0 ; NTSC TV interlaced overscanned | ; IOMD_C_PALNTSCType = 0
] MonitorLeadItem 4_0333, 12, 0, 1 ; PAL TV
MonitorLeadItem 4_1333, 46, 8, 1 ; NTSC TV
] ; IOMD_C_PALNTSCType = 0
| |
[ :LNOT: ChrontelSupport [ :LNOT: ChrontelSupport
[ IOMD_C_PALNTSCType = 0 ; no PAL/NTSC bits: [ IOMD_C_PALNTSCType = 0 ; no PAL/NTSC bits:
MonitorLeadItem 4_3331, 12, 0, 1 ; PAL TV assumed MonitorLeadItem 4_3331, 12, 0, 1 ; PAL TV assumed
| ; IOMD_C_PALNTSCType = 0 ; wealth of bits: | ; IOMD_C_PALNTSCType = 0 ; wealth of bits:
MonitorLeadItem 4_0331, 50, 0, 0 ; PAL TV interlaced overscanned MonitorLeadItem 4_0331, 12, 0, 1 ; PAL TV
MonitorLeadItem 4_1331, 58, 8, 0 ; NTSC TV interlaced overscanned MonitorLeadItem 4_1331, 46, 8, 1 ; NTSC TV
] ; IOMD_C_PALNTSCType = 0 ] ; IOMD_C_PALNTSCType = 0
] ; :LNOT: ChrontelSupport ] ; :LNOT: ChrontelSupport
] ; IOMD_C_MonitorType = 0 ] ; IOMD_C_MonitorType = 0
......
...@@ -289,7 +289,7 @@ F_$label * framerate ; set up frame rate symbol ...@@ -289,7 +289,7 @@ F_$label * framerate ; set up frame rate symbol
] ]
MEND MEND
NumMonitorTypes * 5 NumMonitorTypes * 9
NumModes * 50 NumModes * 50
maxmode * NumModes-1 maxmode * NumModes-1
minmode * 0 minmode * 0
...@@ -593,6 +593,218 @@ BigVIDCTable ...@@ -593,6 +593,218 @@ BigVIDCTable
ASSERT (.-BigVIDCTable)=((NumModes*5):SHL:2) ASSERT (.-BigVIDCTable)=((NumModes*5):SHL:2)
& -1 ; 0
& -1 ; 1
& -1 ; 2
& -1 ; 3
& -1 ; 4
& -1 ; 5
& -1 ; 6
& -1 ; 7
& -1 ; 8
& -1 ; 9
& -1 ; 10
& -1 ; 11
& -1 ; 12
& -1 ; 13
& -1 ; 14
& -1 ; 15
& -1 ; 16
& -1 ; 17
& -1 ; 18
& -1 ; 19
& -1 ; 20
& -1 ; 21
& -1 ; 22
& -1 ; 23
& -1 ; 24
& -1 ; 25
& -1 ; 26
& -1 ; 27
& -1 ; 28
& -1 ; 29
& -1 ; 30
& -1 ; 31
& -1 ; 32
& -1 ; 33
& -1 ; 34
& -1 ; 35
& -1 ; 36
& -1 ; 37
& -1 ; 38
& -1 ; 39
& -1 ; 40
& -1 ; 41
& -1 ; 42
& -1 ; 43
& -1 ; 44
& -1 ; 45
& -1 ; 46
& -1 ; 47
& -1 ; 48
& -1 ; 49
ASSERT (.-BigVIDCTable)=((NumModes*6):SHL:2)
& -1 ; 0
& -1 ; 1
& -1 ; 2
& -1 ; 3
& -1 ; 4
& -1 ; 5
& -1 ; 6
& -1 ; 7
& -1 ; 8
& -1 ; 9
& -1 ; 10
& -1 ; 11
& -1 ; 12
& -1 ; 13
& -1 ; 14
& -1 ; 15
& -1 ; 16
& -1 ; 17
& -1 ; 18
& -1 ; 19
& -1 ; 20
& -1 ; 21
& -1 ; 22
& -1 ; 23
& -1 ; 24
& -1 ; 25
& -1 ; 26
& -1 ; 27
& -1 ; 28
& -1 ; 29
& -1 ; 30
& -1 ; 31
& -1 ; 32
& -1 ; 33
& -1 ; 34
& -1 ; 35
& -1 ; 36
& -1 ; 37
& -1 ; 38
& -1 ; 39
& -1 ; 40
& -1 ; 41
& -1 ; 42
& -1 ; 43
& -1 ; 44
& -1 ; 45
& -1 ; 46
& -1 ; 47
& -1 ; 48
& -1 ; 49
ASSERT (.-BigVIDCTable)=((NumModes*7):SHL:2)
& -1 ; 0
& -1 ; 1
& -1 ; 2
& -1 ; 3
& -1 ; 4
& -1 ; 5
& -1 ; 6
& -1 ; 7
& -1 ; 8
& -1 ; 9
& -1 ; 10
& -1 ; 11
& -1 ; 12
& -1 ; 13
& -1 ; 14
& -1 ; 15
& -1 ; 16
& -1 ; 17
& -1 ; 18
& -1 ; 19
& -1 ; 20
& -1 ; 21
& -1 ; 22
& -1 ; 23
& -1 ; 24
& -1 ; 25
& -1 ; 26
& -1 ; 27
& -1 ; 28
& -1 ; 29
& -1 ; 30
& -1 ; 31
& -1 ; 32
& -1 ; 33
& -1 ; 34
& -1 ; 35
& -1 ; 36
& -1 ; 37
& -1 ; 38
& -1 ; 39
& -1 ; 40
& -1 ; 41
& -1 ; 42
& -1 ; 43
& -1 ; 44
& -1 ; 45
& -1 ; 46
& -1 ; 47
& -1 ; 48
& -1 ; 49
ASSERT (.-BigVIDCTable)=((NumModes*8):SHL:2)
& -1 ; 0
& -1 ; 1
& -1 ; 2
& -1 ; 3
& -1 ; 4
& -1 ; 5
& -1 ; 6
& -1 ; 7
& -1 ; 8
& -1 ; 9
& -1 ; 10
& -1 ; 11
& -1 ; 12
& -1 ; 13
& -1 ; 14
& -1 ; 15
& -1 ; 16
& -1 ; 17
& -1 ; 18
& -1 ; 19
& -1 ; 20
& -1 ; 21
& -1 ; 22
& -1 ; 23
& -1 ; 24
& -1 ; 25
& -1 ; 26
& -1 ; 27
& -1 ; 28
& -1 ; 29
& -1 ; 30
& -1 ; 31
& -1 ; 32
& -1 ; 33
& -1 ; 34
& -1 ; 35
& -1 ; 36
& -1 ; 37
& -1 ; 38
& -1 ; 39
& -1 ; 40
& -1 ; 41
& -1 ; 42
& -1 ; 43
& VLM_44 - BigVIDCTable ; 44 CGA
& VLM_45 - BigVIDCTable ; 45
& VLM_46 - BigVIDCTable ; 46
& -1 ; 47
& -1 ; 48
& -1 ; 49
ASSERT (.-BigVIDCTable)=((NumModes*NumMonitorTypes):SHL:2)
VLN_0 VIDC_List 0, 76, 88, 96, 640, 96, 28, 3,19,16,256,16, 2,16000,0 ; MODE 0 VLN_0 VIDC_List 0, 76, 88, 96, 640, 96, 28, 3,19,16,256,16, 2,16000,0 ; MODE 0
VLN_1 VIDC_List 1, 38, 44, 48, 320, 48, 14, 3,19,16,256,16, 2, 8000,0 ; MODE 1 VLN_1 VIDC_List 1, 38, 44, 48, 320, 48, 14, 3,19,16,256,16, 2, 8000,0 ; MODE 1
VLN_2 VIDC_List 2, 38, 44, 48, 320, 48, 14, 3,19,16,256,16, 2, 8000,0 ; MODE 2 VLN_2 VIDC_List 2, 38, 44, 48, 320, 48, 14, 3,19,16,256,16, 2, 8000,0 ; MODE 2
......
...@@ -879,6 +879,8 @@ FindOKMode ROUT ...@@ -879,6 +879,8 @@ FindOKMode ROUT
ADR r14, SubstModeTable ADR r14, SubstModeTable
LDR r11, [r14, r3, LSL #2] LDR r11, [r14, r3, LSL #2]
TEQ r11, #0 ; if r0=0, monitor type is actually unknown - issue service call
BEQ %FT10
ADD r1, r11, r14 ADD r1, r11, r14
05 05
BL FindSubstitute BL FindSubstitute
...@@ -921,6 +923,10 @@ SubstModeTable ...@@ -921,6 +923,10 @@ SubstModeTable
& SubstType2-SubstModeTable & SubstType2-SubstModeTable
& SubstType3-SubstModeTable & SubstType3-SubstModeTable
& SubstType4-SubstModeTable & SubstType4-SubstModeTable
& 0
& 0
& 0
& SubstType8-SubstModeTable
SubstType01 SubstType01
= 0, 8, 12, 15 = 0, 8, 12, 15
...@@ -930,6 +936,8 @@ SubstType3 ...@@ -930,6 +936,8 @@ SubstType3
= 25, 26, 27, 28 = 25, 26, 27, 28
SubstType4 SubstType4
= 29, 30, 31, 32 = 29, 30, 31, 32
SubstType8
= 44, 45, 46, 46
; ***************************************************************************** ; *****************************************************************************
; ;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment