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
; Progress Colours will always be shown when using POST Box.
; Set to true for NC - Fault Report ANC-00159.
GBLL DontDoCMOSTest
DontDoCMOSTest SETL {TRUE} :LAND: STB
ts_Rom_bits * 21 ; Widest ROM address
......@@ -1089,6 +1092,9 @@ ts_IOEBtest
ts_CMOStest
[ DontDoCMOSTest
B ts_IOinit
|
ADR r4,%FT1
BL ts_SendText
......@@ -1264,6 +1270,8 @@ ts_CMOStest
25
B ts_IOinit
] ; DontDoCMOSTest
LTORG
ROUT
;
......
......@@ -6,9 +6,9 @@
GBLS Module_MinorVersion
GBLS Module_Date
GBLS Module_FullVersion
Module_MajorVersion SETS "4.89"
Module_Version SETA 489
Module_MajorVersion SETS "4.90"
Module_Version SETA 490
Module_MinorVersion SETS ""
Module_Date SETS "23 Sep 1999"
Module_FullVersion SETS "4.89"
Module_Date SETS "29 Sep 1999"
Module_FullVersion SETS "4.90"
END
/* (4.89)
/* (4.90)
*
* 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_Date_CMHG 23 Sep 1999
#define Module_Date_CMHG 29 Sep 1999
#define Module_MajorVersion "4.89"
#define Module_Version 489
#define Module_MajorVersion "4.90"
#define Module_Version 490
#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
;
[ FECPUSpeedNormal
[ 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_IOclkNormal
]
|
[ 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_IOclkNormal
]
]
]
......
......@@ -970,7 +970,7 @@ reset_loop
; Oh, just leave it be
MOV R0, #VduCMOS
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
TEQ R0, #(Sync_Separate :OR: MonitorType0)
|
......@@ -1237,7 +1237,7 @@ DefaultCMOSTable ; list of non-zero options wanted :
= DBTBCMOS, (1:SHL:4) ; Boot
= YearCMOS, 97
= 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
= VduCMOS, Sync_Separate :OR: MonitorType0
|
......
......@@ -463,7 +463,7 @@ Write
MOV R14, #0 ; don't write to protected section
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).
MOV R2, R0
......@@ -542,6 +542,7 @@ WriteBlock ROUT
MOV R14, #0
LDRB R4, [R14, #NVRamWriteSize]
LDRB R14, [R14, #NVRamSize]
MOV R4, R4, LSL #8
|
LDRB R14, NVSize
MOV R4, R14
......@@ -1320,38 +1321,6 @@ MakeChecksum ROUT
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
......
......@@ -683,33 +683,23 @@ ReadMachineType ENTRY "r0-r12"
MOVEQ r2, #&FF ; then return all ones for monitor lead type
BEQ %FT90
[ MPEGPoduleNTSCNotPALMask <> 0
! 1, "Sorry, I don't do MPEGPoduleNTSCNotPALMask any more"
]
[ STB
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
TST R11, #IOST_7500
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
]
|
[ IOMD_C_MonitorType <> 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
]
] ; MorrisSupport
LDR r1, =VIDCExternal+Ext_InvertCompVSYNC+Ext_DACsOn+Ext_ERegExt ; normal HSYNC value
STR r1, [r0]
......@@ -769,7 +759,7 @@ ReadMachineType ENTRY "r0-r12"
BL CheckBits ; call check routine with second value
SUBS r12, r12, #1
BNE %BT20
|
| ; STB
[ VIDC_Type = "VIDC20"
LDR r0, =VIDC ; on VIDC20 we invert HSYNC by writing to External Register
......@@ -853,7 +843,7 @@ ReadMachineType ENTRY "r0-r12"
]
] ; STB
; now process result
......@@ -980,17 +970,19 @@ TranslateMonitorLeadType ENTRY "r0-r2"
MonitorLeadList
[ STB
[ IOMD_C_MonitorType = 0 ; no auto-detect bit
[ MPEGPoduleNTSCNotPALMask <> 0
MonitorLeadItem 4_0331, 50, 0, 0 ; PAL TV interlaced overscanned
MonitorLeadItem 4_1331, 58, 8, 0 ; NTSC TV interlaced overscanned
]
[ IOMD_C_PALNTSCType = 0 ; no PAL/NTSC bits:
MonitorLeadItem 4_3333, 12, 0, 1 ; PAL TV assumed
| ; 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
[ IOMD_C_PALNTSCType = 0 ; no PAL/NTSC bits:
MonitorLeadItem 4_3331, 12, 0, 1 ; PAL TV assumed
| ; IOMD_C_PALNTSCType = 0 ; wealth of bits:
MonitorLeadItem 4_0331, 50, 0, 0 ; PAL TV interlaced overscanned
MonitorLeadItem 4_1331, 58, 8, 0 ; NTSC TV interlaced overscanned
MonitorLeadItem 4_0331, 12, 0, 1 ; PAL TV
MonitorLeadItem 4_1331, 46, 8, 1 ; NTSC TV
] ; IOMD_C_PALNTSCType = 0
] ; :LNOT: ChrontelSupport
] ; IOMD_C_MonitorType = 0
......
......@@ -289,7 +289,7 @@ F_$label * framerate ; set up frame rate symbol
]
MEND
NumMonitorTypes * 5
NumMonitorTypes * 9
NumModes * 50
maxmode * NumModes-1
minmode * 0
......@@ -593,6 +593,218 @@ BigVIDCTable
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_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
......
......@@ -879,6 +879,8 @@ FindOKMode ROUT
ADR r14, SubstModeTable
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
05
BL FindSubstitute
......@@ -921,6 +923,10 @@ SubstModeTable
& SubstType2-SubstModeTable
& SubstType3-SubstModeTable
& SubstType4-SubstModeTable
& 0
& 0
& 0
& SubstType8-SubstModeTable
SubstType01
= 0, 8, 12, 15
......@@ -930,6 +936,8 @@ SubstType3
= 25, 26, 27, 28
SubstType4
= 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