Commit 5ba3f5db authored by Kevin Bracey's avatar Kevin Bracey
Browse files

Spinner branch merged.

Bandwidth limit for 7500FE fixed.
RO371Timings flag set to :LNOT:STB

Version 4.64. Tagged as 'Kernel-4_64'
parent 8325ab3d
# Copyright 1997 Acorn Computers Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Makefile for IICTest
#
#
# Paths
#
EXP_HDR = <export$dir>
#
# Generic options:
#
MKDIR = cdir
AS = aasm
CP = copy
RM = remove
CCFLAGS = -c -depend !Depend -IC:
ASFLAGS = -depend !Depend -Stamp -quit -module -To $@ -From
CPFLAGS = ~cfr~v
#
# Program specific options:
#
COMPONENT = IICTest
SOURCE = s.IICTest
TARGET = rm.IICTest
EXPORTS = ${EXP_HDR}.${COMPONENT}
#
# Generic rules:
#
rom: ${TARGET}
@echo ${COMPONENT}: rom module built
export: ${EXPORTS}
@echo ${COMPONENT}: export complete
install_rom: ${TARGET}
${CP} ${TARGET} ${INSTDIR}.${COMPONENT} ${CPFLAGS}
@echo ${COMPONENT}: rom module installed
clean:
${RM} ${TARGET}
@echo ${COMPONENT}: cleaned
resources:
# ${MKDIR} ${RESDIR}.${COMPONENT}
# ${CP} Resources.${LOCALE}.Messages ${RESDIR}.${COMPONENT}.Messages ${CPFLAGS}
# @echo ${COMPONENT}: resource files copied
${TARGET}: ${SOURCE}
${AS} ${ASFLAGS} ${SOURCE}
${EXP_HDR}.${COMPONENT}: hdr.${COMPONENT}
# ${CP} hdr.${COMPONENT} $@ ${CPFLAGS}
# Dynamic dependencies:
| Copyright 1997 Acorn Computers Ltd
|
| Licensed under the Apache License, Version 2.0 (the "License");
| you may not use this file except in compliance with the License.
| You may obtain a copy of the License at
|
| http://www.apache.org/licenses/LICENSE-2.0
|
| Unless required by applicable law or agreed to in writing, software
| distributed under the License is distributed on an "AS IS" BASIS,
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
| See the License for the specific language governing permissions and
| limitations under the License.
|
Dir <Obey$Dir>
amu_machine clean
| Copyright 1997 Acorn Computers Ltd
|
| Licensed under the Apache License, Version 2.0 (the "License");
| you may not use this file except in compliance with the License.
| You may obtain a copy of the License at
|
| http://www.apache.org/licenses/LICENSE-2.0
|
| Unless required by applicable law or agreed to in writing, software
| distributed under the License is distributed on an "AS IS" BASIS,
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
| See the License for the specific language governing permissions and
| limitations under the License.
|
Dir <Obey$Dir>
amu_machine rom
; Copyright 1997 Acorn Computers Ltd
;
; Licensed under the Apache License, Version 2.0 (the "License");
; you may not use this file except in compliance with the License.
; You may obtain a copy of the License at
;
; http://www.apache.org/licenses/LICENSE-2.0
;
; Unless required by applicable law or agreed to in writing, software
; distributed under the License is distributed on an "AS IS" BASIS,
; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
; See the License for the specific language governing permissions and
; limitations under the License.
;
; > s.IICTest
GET Hdr:ListOpts
GET Hdr:Macros
GET Hdr:System
GET Hdr:Machine.<Machine>
GET Hdr:ImageSize.<ImageSize>
$GetCPU
$GetIO
$GetMEMC
$GetMEMM
$GetVIDC
GBLL med_00001_debug
med_00001_debug SETL {FALSE}
AssemblingArthur SETL {TRUE}
GBLL Module
Module SETL {FALSE}
GBLL ChecksumCMOS
ChecksumCMOS SETL {TRUE}
GBLL CacheCMOSRAM ; Whether to keep a RAM copy of CMOS RAM for faster access
CacheCMOSRAM SETL MEMM_Type = "ARM600" :LAND: {TRUE} ; (Space only allocated on ARM600 versions)
GBLL ProtectStationID ; if TRUE, disallow OSBYTE &A2,0,n
ProtectStationID SETL {TRUE}
GBLL TestHarness
TestHarness SETL {TRUE}
GET Hdr:ModHand
GET Hdr:Proc
GET Hdr:CMOS
GET ^.^.hdr.PublicWS
GET ^.^.hdr.KernelWS
! 0, "NVRAMSize at ":CC::STR:(NVRamSize)
LEADR Module_LoadAddr
TAB * 9
; Module workspace allocation
^ 0, R12
i2cWorkSpace # 256
corruption_test # 4
NVSize # 1
NVSpeed # 1
RTCFlag # 1
NVBase # 1
IIC_WorkspaceSize * :INDEX: @
; **************** Module code starts here **********************
Module_BaseAddr
DCD 0
DCD IIC_Init -Module_BaseAddr
DCD IIC_Die -Module_BaseAddr
DCD IIC_Service -Module_BaseAddr
DCD IIC_Title -Module_BaseAddr
DCD IIC_HelpStr -Module_BaseAddr
DCD IIC_HC_Table-Module_BaseAddr
DCD 0
DCD 0
DCD 0
DCD 0 ; Code to manually decode swi name (not needed)
IIC_Title
DCB "IICTest",0
IIC_HelpStr
= "IICTest"
= TAB, TAB
= "0.01 (06 Mar 1997)", 0
ALIGN
; *****************************************************************************
IIC_HC_Table * Module_BaseAddr
IIC_Service * Module_BaseAddr
IIC_Init
ENTRY
LDR r2, [r12] ; Hard or soft init ?
TEQ r2, #0
BNE %FT00
; Hard init
LDR r3, =IIC_WorkspaceSize
TEQ r3, #0
BEQ %FT00
MOV r0, #ModHandReason_Claim
SWI XOS_Module
LDMVSIA sp!, {pc}
STR r2, [r12]
00 MOV r12, r2
LDR R0, =&5C5C5C5C
STR R0, corruption_test
[ CacheCMOSRAM
BL InitCMOSCache
]
BL ClaimByteV
EXIT
IIC_Die ENTRY
TEQ r12, #0
LDRNE r12, [r12]
BL ReleaseByteV
EXITS
; *****************************************************************************
; ByteV handling routines.
ClaimByteV
ENTRY "r1,r2"
MOV r0, #ByteV
ADR r1, ByteVHandler
MOV r2, r12
SWI XOS_Claim
EXIT
ReleaseByteV
ENTRY "r1,r2"
MOV r0, #ByteV
ADR r1, ByteVHandler
MOV r2, r12
SWI XOS_Release
EXIT
ByteVHandler
Push "r0,r1"
TEQ r0, #&A2
BEQ OsbyteA2
TEQ r0, #&A1
Pull "r0,r1",NE
MOVNES pc, lr
; If &A1 then drop through to...
; *****************************************************************************
; OS_Byte &A1 and &A2 handlers pulled from s.PMF.osbyte. We declare our own
; MyOsbyte macro to exit our handler by claiming the ByteV call.
MACRO
MyOsbyte $cond
Pull "r0,r1,pc",$cond,^
MEND
; Read CMOS RAM
OsbyteA1 ; R1 = address , R2 = result
CLRPSR I_bit, R0 ; this may take some time
MOV R0, R1
BL Read ; Read CMOS ram at address <R0>
MOV R2, R0 ; Result in R0, return in R2
MyOsbyte
; Write CMOS RAM
OsbyteA2
CLRPSR I_bit, R0 ; this may take some time
[ E2ROMSupport
MOVS R0, R1
|
ANDS R0, R1, #&FF ; only look at bottom byte
]
[ ProtectStationID
MyOsbyte EQ
]
; This bit is conditioned out to make life easier...
;
[ {FALSE}
; Protect machine address CMOS (if not corrupt)
ASSERT EtherCheckCMOS = EtherAddrCMOS+6
CMP r0, #EtherAddrCMOS
BLT %FT10
CMP r0, #EtherCheckCMOS
BGT %FT10
Push "r0,r1"
BL GetMachineAddressCMOS
Pull "r0,r1"
MyOsbyte EQ ; don't allow write if address is valid
10
]
MOV R1, R2
BL Write
MOV R1, R0 ; R1 is supposed to be preserved
MyOsbyte
; *****************************************************************************
; Include the i2cutils source file from the Kernel sources.
GET ^.^.s.PMF.i2cutils
END
......@@ -72,11 +72,24 @@ clean:
export: ${EXPORTS}
@echo ${COMPONENT}: export complete
resources:
${MKDIR} ${RESDIR}.${COMPONENT}
${CP} Resources.${LOCALE}.Messages ${RESDIR}.${COMPONENT}.Messages ${CPFLAGS}
resources: resources-${CMDHELP}
@echo ${COMPONENT}: resource files copied
resources_common:
${MKDIR} ${RESDIR}.${COMPONENT}
Set Kernel$Messages LocalRes:Messages
IfThere LocalRes:<UserIF>.Messages Then Set Kernel$Messages LocalRes:<UserIF>.Messages
TokenCheck LocalRes:<UserIF>.Messages
${CP} <Kernel$Messages> ${RESDIR}.${COMPONENT}.Messages ${CPFLAGS}
UnSet Kernel$Messages
resources-None: resources_common
@
resources-: resources_common
TokenCheck LocalRes:Messages
print LocalRes:CmdHelp { >> ${RESDIR}.${COMPONENT}.Messages }
${TARGET}: ${SOURCE} s.TMOSHelp
${MKDIR} rm.${MACHINE}
${AS} ${ASFLAGS} ${SOURCE}
......
No preview for this file type
Escape:Escape
Syntax:Syntax
OptErr:Syntax: *Opt [<x> [[,] <y>]]
NoHelp:No help found.
HelpFound:==> Help on keyword %0
Address:Address :
ASCII:ASCII data
Unp:Unplugged modules are:
NoUnp:No modules are unplugged
Podule:(Podule %0)
Extn:(Extn ROM %0)
Modules:No. Position Workspace Name
Number:(Number)
Macro:(Macro)
Result:Result is %0, value :
Integer:an integer
String:a string
ROMMTitle:No. Position|IModule Name|I|IVersion|IStatus|M|J
SYSROM:System ROM
EXTROM:Extn ROM
PODROM:Podule
Active:Active
Dormant:Dormant
Unplugged:Unplugged
Running:Running
Untitled:<Untitled>
Supervisor:Supervisor
ErrSub:E
YesNo:yn
Config:Configuration
Options:options:
Status:status:
Err: (Error number &%0)
Error:Error: %0 (Error number &%1)
UndefinedInstruction:The Network Computer has experienced a technical difficulty and needs to be rebooted (100:%0). Contact your service provider.
InstructionAbort:The Network Computer has experienced a technical difficulty and needs to be rebooted (101:%0). Contact your service provider.
DataAbort:The Network Computer has experienced a technical difficulty and needs to be rebooted (102:%0). Contact your service provider.
AddressException:The Network Computer has experienced a technical difficulty and needs to be rebooted (103:%0). Contact your service provider.
BranchThrough0:The Network Computer has experienced a technical difficulty and needs to be rebooted (105:%0). Contact your service provider.
NoSuchSWI1:The Network Computer has experienced a technical difficulty (1E8:%0). Please select Continue.
SDoesntExist:Sprite doesn't exist
VarCantFind:System variable '%0' not found
BuffOverflow:Buffer overflow
BadNumb:Number not recognised
ModuleTooOld:Module %0 too old
NaffRelease:Bad vector release
RMNotFound:Module %0 not found
NaffDevNo:Bad device number
BadDevVecRel:Bad device release
RedirectFail:Redirection fails
StackFull:Not enough memory on system stack
OscliLongLine:Too long
NoOscliSpecials:Special field not allowed in filing system prefix to OS_CLI
OscliTooHard:Expansion too complex
BadCommand:Command not recognised
BadParmString:Parameter expansion contains unrecognised characters
TooManyParms:Too many parameters
BadKey:Key number must be in the range 0-15
BadAddress:Address not recognised
OutsideFile:Outside file
NotABlock:Not a heap block
BadDesc:Bad heap descriptor
HeapBadReason:Bad reason code
HeapFailInit:Can't initialise heap
BadLink:Heap overwritten
HeapFailAlloc:Not enough memory (in heap)
BadExtend:Not enough memory (to extend heap)
ExcessiveShrink:Can't shrink heap any further
BadModuleReason:Unknown OS_Module call
CantKill:Module is currently active
MHNoRoom:The Network Computer has experienced a technical difficulty (101). Please select Continue.
NoMoreModules:No more modules
NoMoreIncarnations:No more incarnations of that module
PostfixNeeded:Postfix not specified
IncarnationExists:Incarnation already exists
ChunkNotRM:Podule chunk is not a relocatable module
ModulePostfix:'%%' in module title
NotMod:This is not a relocatable module
BadRMHeaderField:Illegal header field in module
IncarnationNotFound:Incarnation not found
RMNotFoundInROM:Module is not in ROM
NumbTooBig:Number too big
BadBase:Base not recognised
BadClaimNum:Bad vector number
SysHeapFull:The Network Computer has experienced a technical difficulty (1E4). Please select Continue.
NotAllMoved:The Network Computer has experienced a technical difficulty (1C1). Please select Continue.
ChDynamCAO:Can't change memory area (application running)
AplWSpaceInUse:Application memory area in use
RAMFsUnchangeable:The size of the RAM filing system can only be changed when it is empty
BadDynamicArea:Unknown dynamic area
AreaAlreadyExists:Dynamic area already exists
AreaNotOnPageBdy:Base address not on page boundary
OverlappingAreas:Overlapping areas
CantAllocateArea:Unable to allocate logical address space
CantAllocateLevel2:Unable to allocate page tables for area
UnknownAreaHandler:Unknown dynamic area handler call
RCExc:Return code limit exceeded
RCNegative:Negative return code
BadString:String not recognised
BadVarType:Bad variable type
VarNoRoom:The area of memory reserved for the system variables is full. Use the Task Manager to make more space in the system heap/stack area.
BadMacVal:Bad macro value
BadVarNam:Variable name not recognised
VarTooLong:Variable value too long
BadParameters:Parameters not recognised
ArgRepeated:Argument repeated
BadBra:Mismatched brackets
StkOFlo:Expression stack overflow
MissOpn:Missing operand
MissOpr:Missing operator
BadInt:String is not convertible to integer
StrOFlo:String too long
NaffItm:Unknown operand
DivZero:Division by zero
NotNumeric:Numeric parameter needed
NoThen:There is no THEN
IsString:Expression is a string
ConParmTooBig:Configure parameter too big
BadConOpt:Configure option not recognised
BadStat:Status option not recognised
Config2manyparms:Too many parameters
NoSuchSWI2:SWI name not known
BadTime:Invalid time interval
BadEnvNumber:Bad Environment number
BadReadSysInfo:Unknown OS_ReadSysInfo call
BadMODE:Not enough memory to change to this screen mode
SNoWorkSpace:No memory is reserved for the system sprite area. Use the Task Manager to make some space for the system sprites.
SNoRoom:Not enough memory to create sprite
NoSprites:No sprites
NotGraphics:Not a graphics mode
SCantOpenFile:Can't open file
SNotEnoughRoom:Not enough memory in sprite area
SBadSpriteFile:Bad sprite file
SNoRoomToMerge:Not enough memory to add sprite
SBad2ndPtr:Bad 2nd ptr
InvalidRowOrCol:Invalid row or column
InvalidHeight:Invalid height
InvalidWidth:Invalid width
NoRoomToInsert:Not enough memory to insert row or column
SpriteAlreadyExists:Sprite already exists
InvalidSpriteMode:Invalid sprite mode
SBadReasonCode:Bad sprite reason code
CantInTeletext:Can't switch output in teletext mode
SInvalidSaveArea:Invalid save area
SpriteIsCurrentDest:Sprite is current destination
BadDPI:Illegal XDPI or YDPI in sprite
ModeNotAvailable:Screen mode not available
BadPixelDepth:Bad pixel depth
BadMSFlags:Illegal flags in mode selector
CDATStackOverflow:System stack overflow
NoSuchSWI:SWI not known
BadSav:Incorrect number of parameters for *Save
MonType:Monitor type reconfigured.
NoKbd:No keyboard present - autobooting
BreakPt:Stopped at break point at &%0
STail:|J|MUse *Configure to set the options.|J|M
CTail1:|J|MWhere:|J|MD is a decimal number, a hexadecimal number preceded by &,|J|Mor the base followed by underscore, followed|J|M
CTail2:by digits in the given base.|J|MItems within [ ] are optional.|J|MUse *Status to display the current settings.|J|M
Zonk:Unknown OS_ScreenMode reason code
SNoMask:Mask or Palette operations not supported in this display depth
BadVIDCDiv:Bad VIDC divider value.
This diff is collapsed.
......@@ -8,12 +8,14 @@
; Date Who Version Description
; ---- --- ------- -----------
; 30-May-96 BAR 0.01 Started
; 12 Jun 97 BAR 0.02 Change value of 1/4 delay time.
;
; Will provide a 1/4 second delay for flashing the LED's
ld_quarter_sec * (35000*8) ; 1/4 Second delay !
;ld_quarter_sec * (35000*8) ; 1/4 Second delay !
ld_quarter_sec * (100000*6) ; 1/4 Second delay ! For Boca Units
ld_LED_Delay ROUT
; Generate the required delay between changing the LED status
......
......@@ -15,6 +15,8 @@
; No registers are preserved and, unlike some other parts of the POST code, it
; assumes it is running on a fully-functional ARM & IOMD.
;
;------------------------------------------------------------------------
; History
;
......@@ -23,6 +25,9 @@
; 16-Aug-96 JRH First release
; 05-Sep-96 BAR Add code to switch out the progress colour screens.
; See begin (2.17 for details).
; 05-Aug-98 NCE Changes for Customer F maintainance OS.
; Front panel button skips lookng for ROM banks.
; Support for 3rd Rom bank.
; Can't have CanLiveOnROMCard TRUE without ROMCardSupport
......@@ -31,9 +36,11 @@
GBLL DebugROMCard
DebugROMCard SETL {FALSE}
ts_RC_1meg * (1*1024*1024)
ts_RC_MinOSsize * (2*1024*1024)
ts_RC_MaxOSsize * (8*1024*1024)
ts_RC_2ndbank * (16*1024*1024)
ts_RC_3rdbank * (24*1024*1024)
ts_RC_idoffset * -16 ; offset from end of image
......@@ -47,8 +54,17 @@ ROMCardTest ROUT
]
[ CanLiveOnROMCard
TST pc, #ts_RC_2ndbank ; running out of 2nd ROM bank?
BNE %FT99 ; skip all this if so
CMP pc, #ts_RC_2ndbank ;skip this stuff if already
BGT %FT99 ;running in 2nd bank of higher
]
[ IOMD_C_FrontPanelButton <> 0
[ :LNOT: FrontPanelButtClearsCMOS
MOV r0, #IOMD_Base ; if front panel button pressed then skip this
LDRB r0, [r0, #IOMD_CLINES] ; stuff and run the maintainance OS
TST r0, #IOMD_C_FrontPanelButton
BEQ %FT99
]
]
[ DebugROMCard
......@@ -56,14 +72,20 @@ ROMCardTest ROUT
STR r0, [r1]
]
MOV r12, #ts_RC_MinOSsize ; start with this size image
B %FT00
MOV r3,#ts_RC_3rdbank ;lr contains the address of the ROM were looking for
40
MOV r12, r3 ; try to pull ROM size out of the image
LDR r12, [r12, #ROMSizeOffset] ; if this fails then we will start at r3 and work up
CMP r12, #ts_RC_MaxOSsize
BHI %FT90
ts_RC_idword = "NCOS" ; id string
ts_RC_LDRPCInst & &E59FF
00
ADD r2, r12, #ts_RC_2ndbank ; end of image
ADD r2, r12, r3 ; end of image
LDR r1, ts_RC_idword ; id word to look for
LDR r0, [r2, #ts_RC_idoffset]
CMP r0, r1
......@@ -84,7 +106,7 @@ ts_RC_LDRPCInst & &E59FF
STR r0, [r1]
]
MOV r1, #&00 ; initialise accumulator
MOV r0, #ts_RC_2ndbank ; initialise pointer
MOV r0, r3 ; initialise pointer
ADD r2, r0, r12 ; initialise endstop, >= 8 words
SUB r2, r2, #(8 * 4) ; below the real endpoint
......@@ -145,36 +167,39 @@ RC_loop1
CMP r0, r1
BNE %BT15
]
MOV r0, #ts_RC_2ndbank ; start of 2nd ROM image
LDR r3, [r0] ; load 1st instruction of ROM image
AND r2, r3, #&FF000000
MOV r0, r3 ; start of 2nd ROM image
LDR r6, [r0] ; load 1st instruction of ROM image
AND r2, r6, #&FF000000